(57)【特許請求の範囲】
【請求項１】
アプリケーションの開発を支援する機能を有した再生装置であって、
前記再生装置からネットワークを介して取得可能な情報を記録した第１の記録媒体であって、前記アプリケーションが配置されている第１の記録媒体におけるネットワークファイルシステム情報を取得して、前記再生装置に装填されている第２の記録媒体におけるファイルシステム情報と組み合わせることで、仮想的なファイルシステムを得るマウント手段と、
前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するプラットフォーム部と、
前記仮想的なファイルシステムから認識することができるAVコンテンツを、前記アプリケーションからの指示に従い再生する再生制御エンジンとを備え、
前記開発を支援する機能とは、前記プラットフォーム部が前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するにあたっての実行情報を、ネットワーク上で送受信する機能である、再生装置。
【請求項２】
前記再生制御エンジンは、状態レジスタを有し、
実行情報は、再生制御エンジン内の状態レジスタから読み出された設定値、又は、当該状態レジスタに書き込むべき設定値を含み、
当該設定値は、
AVコンテンツにおける現在の再生時点、
AVコンテンツを構成するエレメンタリストリームのうち、現在選択されているもののストリーム番号、
再生装置における再生能力、
再生装置における言語設定、年齢設定の何れかを示す
ことを特徴とする請求項１記載の再生装置。
【請求項３】
前記プラットフォーム部による実行情報の送信は、
所定のイベントをプラットフォーム部が受信した際になされ、
所定のイベントは、
マルチアングル区間におけるアングル切り替えを通知するイベント、
パンニング制御の変化を示すイベント、
ピクチャインピクチャ再生におけるステータス変化を通知するイベント、
現在時点がプレイリストマークに到達したことを通知するイベント、
現在時点が、プレイリストを構成するプレイアイテムの境界に到達したことを通知するイベントの何れかであり、
プラットフォーム部により送信される実行情報は、
プラットフォーム部により受信されたイベントのイベント名、受信したイベントにおける詳細パラメータを含む
ことを特徴とする請求項１記載の再生装置。
【請求項４】
前記再生装置に装填されている記録媒体には、光ディスクと、ローカルストレージとがあり、
AVコンテンツは、光ディスク又はローカルストレージの何れかに記録されたプレイリスト情報と、エレメンタリストリームとを含み、
プラットフォーム部は、再生制御エンジンにプレイリスト情報に従い、光ディスク又はローカルストレージに記録されているエレメンタリストリームの再生を再生制御エンジンに行わせる、プログラミングインターフェイスを含み、
プラットフォーム部による実行情報の送信は、プログラミングインターフェイスをコールした際に実行され、
実行情報は、前記コール時における、再生制御エンジンからの戻り値を含む
ことを特徴とする請求項１記載の再生装置。
【請求項５】
前記アプリケーションは、タイトルバウンダリアプリケーションであり、
前記プラットフォーム部による実行情報の送信は、
タイトルがユーザにより選択された際、タイトルの再生が終了した際になされる
ことを特徴とする請求項１記載の再生装置。
【請求項６】
前記アプリケーションは、ディスクに固有なディスクルート証明書を用いて、署名がなされた署名付きアプリケーションであり、
マウント手段は、マウントにあたって、ダミーのディスクルート証明書の取得を行い、
前記プラットフォーム部によるアプリケーションの実行は、マウント手段により取得されたダミーのディスクルート証明書を用いて、認証処理を行い、当該認証処理にて、アプリケーションの正当が確認された場合のみなされる
ことを特徴とする請求項１記載の再生装置。
【請求項７】
再生装置は、ローカルストレージを備え、
ローカルストレージは、複数のドメイン領域を有し、
前記アプリケーションは、複数のドメイン領域のうち、自身に割り当てられたディスクルート証明書に対応するものをアクセスする
ことを特徴とする請求項６記載の再生装置。
【請求項８】
デバッグ装置であって、
ユーザからの指示に従い、アプリケーションに対する解析操作及び／又は修正操作を実行するデバッグ手段と、
ネットワークを介して、再生装置とのデータ送受信を行う送受信手段とを備え、
前記送受信手段は、
前記アプリケーションの解析及び修正を実行するにあたって、前記アプリケーションが記録された第１の記録媒体におけるネットワークファイルシステム情報、及び、前記アプリケーションを前記再生装置に送信し、前記再生装置において前記アプリケーションを実行するプラットフォーム部による実行情報の送受信を、前記再生装置との間で実行する
ことを特徴とするデバッグ装置。
【請求項９】
前記アプリケーションのデバッグには、
クロス開発の段階におけるデバッグと、
総合テストの段階におけるデバッグとがあり、
前記デバッグ装置は、スタブに基づきアプリケーションを動作させることで統合テストの段階におけるデバッグを実行し、
前記スタブは、
再生装置における再生制御エンジンの代替手段であり、
再生制御エンジンにおける状態設定を示す状態レジスタを有し、再生制御エンジンが発するイベントの、ダミーとなるイベントを発する
ことを特徴とする請求項８記載のデバッグ装置。
【請求項１０】
再生装置に組込まれ、アプリケーションの開発を支援する機能を有したシステムLSIであって、
前記再生装置からネットワークを介して取得可能な情報を記録した第１の記録媒体であって、前記アプリケーションが配置されている第１の記録媒体におけるネットワークファイルシステム情報を取得して、前記再生装置に装填されている第２の記録媒体におけるファイルシステム情報と組み合わせることで、仮想的なファイルシステムを得るマウント手段と、
前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するプラットフォーム部と、
前記仮想的なファイルシステムから認識することができるAVコンテンツを、前記アプリケーションからの指示に従い再生する再生制御エンジンとを備え、
前記開発を支援する機能とは、前記プラットフォーム部が前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するにあたっての実行情報を、ネットワーク上で送受信する機能である、システムLSI。
【請求項１１】
コンピュータに開発支援機能を実現させるプログラムであって、
ネットワークを介して取得可能な情報を記録した第１の記録媒体であって、前記アプリケーションが配置されている第１の記録媒体におけるネットワークファイルシステム情報を取得して、前記コンピュータに装填されている第２の記録媒体におけるファイルシステム情報と組み合わせることで、仮想的なファイルシステムを得るマウントステップと、
前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するステップと、
前記仮想的なファイルシステムから認識することができるAVコンテンツを、再生するステップとをコンピュータに実行させ、
前記開発を支援する機能とは、前記コンピュータが前記仮想的なファイルシステムから認識することができる前記アプリケーションを実行するにあたっての実行情報を、ネットワーク上で送受信する機能である、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション開発の技術分野に属し、特に、AVコンテンツの再生制御用アプリケーションのデバッグを実現するための改良に関する。
【背景技術】
【０００２】
上述した再生制御用アプリケーションは、DVD-VideoやBD-ROMに記録され、再生すべきプレイリストの選択や、デジタルストリームの選択等の再生制御を再生装置に命じる。かかる再生制御により、様々なGUIがユーザに供されるので、このような再生制御用アプリケーションは、映画作品をDVD-VideoやBD-ROMで配給するにあたって、なくてはならない必需品になっている。
【０００３】
DVD-VideoではAVコンテンツの再生はAVコンテンツに重畳されたコマンドによって制御される。AV再生の制御を実施するコマンドが制御対象のストリームと共に存在しており、AVコンテンツの作成と、AVコンテンツの再生制御を行うアプリケーションの作成とが直列の関係になっているので、DVD-Video用のアプリケーションを開発するには、AVコンテンツの製作の環境が整っていることが大前提となる。ここでAVコンテンツの製作には、映画スタジオが導入しているような高価なオーサリング機器が不可欠であり、一般のソフトハウスにとっては、なかなか手が出るものではない。このように、設備投資が大きなネックになって、DVD-Videoアプリケーションの製作に参入するソフトハウスは、限られているという実情がある。
【０００４】
一方、BD-ROMでは、プログラム記述言語にJavaを採用しており、AVコンテンツと、Java(登録商標)アプリケーションとのクロス開発環境を整えているので、多くのソフトハウスに参入を呼びかけることができる。
DVD-Videoディスク作成時のAV再生制御処理に関連する不具合解析や問題修正後の動作確認を容易とするための装置、方法についての先行技術には、以下の特許文献１に記載されたものがある。
【特許文献１】特開平１１-２０３８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このBD-ROMプレーヤモデルで規定されているAVコンテンツの再生制御は、複雑かつ多岐にわたるので、クロス開発環境において、Java(登録商標)アプリケーションが完成したとしても、直ちに、かかるJava(登録商標)アプリケーションを出荷できると判断を下すことができない。そうするとやはり、Java(登録商標)アプリケーションをAVコンテンツと同じ、１つのディスクに納めてみて、最終的な動作確認をしなければならない。
【０００６】
更にその動作確認において、バグが発見されれば、Java(登録商標)アプリケーションを修正して再度、Java(登録商標)アプリケーションをAVコンテンツと同じ、１つのディスクに納める必要がある。かかる動作確認と、バグ修正との繰り返しが発生する恐れがあるので、これらの事情を考えると、BD-ROMアプリケーションの制作には、専用のオーサリング機器を導入するのが、望ましいと思われる。
【０００７】
だが、BD-ROMプレーヤモデルは、ハイビジョン画像を前提にしたハイエンドなハードウェア仕様を有しているので、これを製作するオーサリング機器も、DVD-Videoのオーサリング機器と比べて、非常に高価で大規模なものであり、小資本のソフトハウスにとっては導入が難しい。これが障壁になって、BD-ROM用のJava(登録商標)アプリケーションの開発に参入するソフトハウスが、なかなか増えないという問題が生じる危惧がある。
【０００８】
BD-ROMを題材として、本発明が前提としている技術的課題を述べたが、BD-ROMに限らず、ある特定の論理フォーマットで、AVコンテンツと共に、記録媒体に記録されてエンドユーザに供給されるようなアプリケーションは、AVコンテンツの再生と連動した再生動作が確認できるまでは、アプリケーションの開発が完了したとはいえず、その開発が難航するといわれる。そして、そのような動作確認の術が不足していることが、アプリケーション開発の大きな妨げになっている。
【０００９】
本発明の目的は、専用のオーサリング機器を導入しなくても、BD-Jアプリケーションの解析及び修正をすることができる再生装置を提供することである。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明にかかる再生装置は、アプリケーションが配置されている記録媒体におけるネットワークファイルシステム情報を取得して、自身に装填されている記録媒体におけるファイルシステム情報と組み合わせることで、仮想的なファイルシステムを得るマウント手段と、仮想的なファイルシステムから認識することができるアプリケーションを実行するプラットフォーム部と、仮想的なファイルシステムから認識することができるAVコンテンツを、前記アプリケーションからの指示に従い再生する再生制御エンジンとを備え、前記開発支援機能とは、プラットフォーム部がアプリケーションを実行するにあたっての実行情報を、ネットワーク上で送受信する機能であることを特徴としている。
【発明の効果】
【００１１】
本発明にかかる再生装置は上述した構成を有しているので、AVコンテンツを、再生装置に装填されるディスク媒体に配置しておき、アプリケーションをネットワークドライブとなる記録媒体に配置しておけば、デバッグ装置との間で、実行情報の送受信を行うことで、AVコンテンツの再生と、アプリケーションの動作とを連動させることが可能になる。
再生装置に装填されるディスク媒体ではなく、ネットワークドライブとなる記録媒体に、アプリケーションを配置しておけば、実機での再生を前提にしたアプリケーションの動作確認を行うことができるので、AV再生制御を伴うアプリケーションの検証、及び、解析・修正を効率よく実施することができる。
【００１２】
アプリケーションをターゲットとなるディスク媒体に配置しなくても、開発環境におけるネットワークドライブにアプリケーションを配置しておけば、アプリケーションの解析、修正を効率的に行うことが可能になるので、ネットワーク接続の環境さえあれば、高価なオーサリング機器を導入せずとも、AVコンテンツの再生と連動したアプリケーションのデバッグが可能となる。
【００１３】
BD-ROM用Java(登録商標)アプリケーション製作事業参入のための障壁が低くなり、多くのソフトハウスに、BD-ROM用Java(登録商標)アプリケーションの製作事業に参入を呼びかけることができる。またBD-ROMに限らず、ある特定の論理フォーマットで、AVコンテンツと共に、記録媒体に記録されてエンドユーザに供給されるようなアプリケーションの開発がスムーズになるので、アプリケーションの充実化を促進することができる。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施の形態について、図面を参照しながら説明する。
（第１実施形態）
先ず始めに、BD-ROMの制作及び工業的な生産について説明する。
先ず初めに、企画工程を行う。この工程では、BD-ROMをどのような筋書きで再生させるかを決める。
【００１５】
次に、素材作成工程を行う。この工程は、動画収録、音声収録等の素材作成を行うものである。
そしてフォーマット工程を行う。この工程は、企画工程において作成された筋書きと、素材とからBD-ROMのボリューム領域に記録すべきデータの全体像(一般にボリュームデータという)を得るものである。
【００１６】
最後にプレス工程を行う。このプレス工程では、ボリュームイメージを物理データ列に変換して、この物理データ列を用いて原盤カッティングを行い、ディスク原盤を作成する。
こうして、プレス装置によって原盤が作成されれば、BD-ROMを工業的に大量に生産する。この生産は主に、基板成形、反射膜成膜、保護膜コーティング、張り合わせ、レーベルの印刷といった諸工程からなる。
【００１７】
以上の工程を経て、各実施形態に示した記録媒体(BD-ROM)を作ることができる。
＜Java(登録商標)アプリケーションの製作＞
上述したフォーマッティング工程において、製作の対象となるソフトウェアは、BD-Jアプリケーションと呼ばれるJava(登録商標)アプリケーションと、BD-Jオブジェクトとからなる。先ず始めにBD-Jアプリケーションについて説明する。
【００１８】
BD-Jアプリケーションとは、Java2Micro_Edition(J2ME) Personal Basis Profile(PBP 1.0)と、GloballyExecutableMHP specification(GEM1.0.2)for package media targetsとをフル実装したプラットフォーム部にて動作するJava（登録商標）アプリケーションである。
このBD-Jアプリケーションは、xletインターフェイスを通じて、Application Managerにより、制御される。xletインターフェイスは、“loaded”,“paused”、“active”,“destoryed”といった4つの状態をもつ。
【００１９】
上述したJava（登録商標）プラットフォーム部は、JFIF(JPEG)やPNG,その他のイメージデータを表示するためのスタンダードJava（登録商標）ライブラリを含む。このため、Java（登録商標）アプリケーションは、GEM1.0.2にて規定されたHAViフレームワークを含み、GEM1.0.2におけるリモートコントロールナビゲーション機構を含むGUIフレームワークを実現することができる。
これにより、Java（登録商標）アプリケーションは、HAViフレームワークに基づくボタン表示、テキスト表示、オンライン表示(BBSの内容)といった表示を、動画像の表示と組み合わせた画面表示を実現することができ、リモートコントロールを用いて、この画面表示に対する操作を行うことができる。
【００２０】
こうしたBD-Jアプリケーションを構成する一連のファイルは、http：//java.sun.com/j2se/1.4.2/docs/guide/jar/jar.htmlに記載された仕様に準じた、Java(登録商標)アーカイブファイルに変換される。Java(登録商標)アーカイブファイルは、ZIPファイルの形式を、Java(登録商標)に特化したものであり、市販されているZIP展開ソフトウェアにより中身を確認することができる。
【００２１】
後者のBD-Jオブジェクトは、アプリケーション管理テーブル(ApplicationManagementTable())を含み、BD-ROM再生時において、タイトル切り替えに伴うアプリケーションシグナリングをプラットフォーム部に実行させるデータのことである。より具体的にいうと、ApplicationManagementTable()は、実行すべきBD-Jアプリケーションを示すapplication_idと、BD-Jアプリケーションを起動する際の制御を示すapplication_contorol_codeを含む。application_contorol_codeは、タイトル選択後におけるアプリケーションの最初の実行状態を規定しており、またapplication_contorol_codeは、BD-Jアプリケーションを仮想マシンにロードして自動開始するか(AUTOSTART)、BD-Jアプリケーションを仮想マシンにロードするが自動開始はしないか(PRESENT)を規定することができる。
【００２２】
以上がBD-Jアプリケーション及びBD-Jオブジェクトについての説明である。続いて、BD-Jアプリケーション作成工程の詳細について、説明する。
図１は、BD-Jアプリケーションの作成手順を示すフローチャートである。IDE(IDE : IntegratedDevelopmentEnvironment)環境においてJava（登録商標）コードを作成し(ステップＳ１)、そうして得たJava（登録商標）プログラムソースコードをコンパイルした上、JARアーカイブファイルに変換する(ステップＳ２)。かかる変換にて、BD-Jアプリケーションが得られる。その後、IDE環境にてシミュレータをもちいて、BD-Jアプリケーション単体での動作確認を行い(ステップＳ３)、動作OKかどうかを判定する(ステップＳ４)。動作がNGであるなら(ステップＳ４でNo)、IDE環境でJava(登録商標)プログラムソースコードを修正した上(ステップＳ５)、ステップＳ２に戻って動作確認をやり直す。
【００２３】
以上の過程は、AVコンテンツの製作とクロス開発の環境になっており、これとは別途、AVコンテンツの製作が進められている。
本実施形態にいうAVコンテンツは、いやゆるBD-ROMコンテンツであり、ストリーム実体−Clip情報−プレイリスト−タイトルという階層構造を有していて、タイトルという単位をもって、ユーザ選択に供されるデータ客体をいう。
【００２４】
AVコンテンツの製作が完了すれば、作成されたAVコンテンツは、BD-REver3.0フォーマットに変換された上、BD-REに書き込まれる。BD-REver3.0フォーマットは、書き換え型ディスクを対象にした論理フォーマットでありながら、読み出し専用型ディスクであるBD-ROMと、完全な互換性をもつ論理フォーマットであり、AVコンテンツをかかるフォーマットに、変換することで、BD-ROMの完成を待たなくても、実機での再生を想定した総合テストを実現することができる。尚、説明の簡略化のため、本明細書では、ver3.0フォーマットを有するBD-REを、BD-ROMと呼ぶ。
【００２５】
BD-Jアプリケーション側の動作確認がOKであるなら(ステップＳ４でYes)、BD-Jオブジェクトを記述して(ステップＳ６)、BD-ROM再生装置が参照できる位置に、BD-Jオブジェクト、JARアーカイブファイルを配置する(ステップＳ７)。
そして、ADK(ADK : Application Development Kit)環境で動作確認を行い(ステップＳ８)、デバッグが完了したかどうかを判断する(ステップＳ９)。ADK環境とは、詳しくは後述するが、実機での動作に近い開発環境である。デバッグが未完ならば、IDE環境でJava(登録商標)プログラムソースコードの修正を行い(ステップＳ１０)、Java（登録商標）プログラムソースコードをコンパイルした上、JARアーカイブファイルに変換する(ステップＳ１１)。その後、ステップＳ６に戻って動作確認をやり直す。
【００２６】
＜IDE環境、及び、ADK環境＞
続いて、BD-Jアプリケーションを製作するためのIDE環境、及び、ADK環境について説明する。図２は、第１実施形態にかかるIDE環境、及び、ADK環境を示す図である。本実施形態にかかるIDE環境は、この図２におけるPC１００から構成される。ADK環境は、この図２におけるPC１００、及び、BD-ROM再生装置２００から構成される。デバッグ装置は、一般のパーソナルコンピュータ(以下、PC１００という)に、IDE環境のソフトウェアをインストールすることで、構成されている。
【００２７】
ADK環境について説明する。ADK環境とは、BD-Jアプリケーションを構成するJARアーカイブファイルや、BD-Jオブジェクトを、ネットワークドライブ(PC搭載のHDDであって、ネットワークを介して参照可能となるもの)に配置しておいて、ネットワークファイルシステム情報を、BD-ROMのファイルシステム情報にマウントすることで、ネットワークドライブ上のBD-Jアプリケーションを、BD-ROM再生装置に実行させるという動作環境をいう。
【００２８】
このADK環境では、AVコンテンツは、BD-ROM再生装置に搭載のBD-ROMドライブに記録されているものを用い、BD-Jオブジェクトは、PC上のネットワークドライブを記録されているものを用いて、動作確認を実現することができる。PC上のBD-JアプリケーションケーションをBD-ROM再生装置上のBD-ROMにあるのと同様に動作させることにより、BD-ROMに記録された状態を、想定した動作確認をすることができる。
【００２９】
ADK環境のデバッグでは、JPDA(Java Platform Debugger Architecture)の仕組みを利用することでJava（登録商標）アプリケーションのデバッグを実現している。JPDA(JavaPlatformDebugger Architecture)は、Java 2プラットフォーム部で定義されたインターフェイスであって、アプリケーション開発環境で使用するデバッガ用に設計されたものであり、そのレイヤモデルは、図３に示す通りとなる。
【００３０】
図３は、Java Platform Debugger Architecture（JPDA)のレイヤモデルを示す図である。JPDAは、実行環境＃1、実行環境＃2、JDWPから構成される。
実行環境＃1は、『バックエンド』、『JVMDI』、『JavaVM』から構成される。
『バックエンド』は、フロントエンドと通信を行い、Java(登録商標)アプリケーションからの要求、要求に対する応答、イベントとの送受信を行う。
【００３１】
『JVMDI(Java VM Debug Interface)』は、Java仮想マシンが提供するデバッグサービスを定義する。以上が実行環境＃1について説明である。
『JavaVM』は、Java(登録商標)アプリケーションの実行主体となるJava(登録商標)仮想マシンである。
実行環境＃2は、『UI』と、『JDI』と、『フロントエンド』とからなる。
【００３２】
『UI(User Interface)』は、バックエンドの設定や、変数の参照／変更操作、ステップ実行等のデバッグ要求をユーザから受け付ける。
『JDI(Java（登録商標） Debug Interface )』は、高レベルの Java（登録商標） 言語インタフェースを定義する。
『フロントエンド』は、バックエンドと通信を行い、ユーザからの要求、要求に対する応答、イベントとの送受信を行う。
【００３３】
『JDWP(Java（登録商標） Debug Wire Protocol) 』は、デバッグ対象のプロセスとデバッガのプロセス間で行われる通信を定義したものであり、フロントエンド及びバックエンド間の通信を行う。
以上のJPDAにおいて、実行ログや変数の保持値、プログラムカウンタの値、ブレークポイントとなるアドレスの送受信は、再生装置とPCとを結ぶシリアルポート、Socketでなされる。説明の便宜上、JPDAでの送受信は、シリアルポートでなされるものとする。Socketは、IEEE802.3(Ethernet(登録商標)),IP,TCP/UDP上に位置するセッション層の通信路であり、BD-Jアプリケーションは、ネットワークモデルとして、IEEE802.3(Ethernet（登録商標）),IP,TCP/UDPを採用しているため、無論のこと、かかるSocketをデバッグ時の伝送路に採用してよいことはいうまでもない。本明細書における実行情報は、これら図８（ａ）（ｂ）に示した実行ログや変数の保持値、プログラムカウンタの値、ブレークポイントとなるアドレスを包含した、アプリケーションの実行に関する情報を広く包含する。
【００３４】
以上がJPDAについての説明である。図２の例では、この実行環境＃1に、BD-ROM再生装置２００が割り当てられ、実行環境＃2に、デバッグ装置１００が割り当てられる。
ADK環境でのデバッグ例（１）について述べる。
図４（ａ）は、標準出力関数を用いたADK環境におけるデバッグ例を示す図である。図中のバルーンヘルプ(hp1,hp2,hp3,hp4)は、PC１００、BD-ROM再生装置２００上でなされる処理の解説である。BD-Jアプリケーションにおいて、標準出力関数を利用した実行ログを出力すれば(hp1)、BD-ROM再生装置２００では、シリアルポートを利用して、PC１００側のログサーバーターミナルに、実行ログを送信する(hp2)。こうすることで、ログサーバーターミナルは、実行ログを受け取ることができるので、かかる実行ログを、コマンドプロンプトに表示することができる(hp3)。以上の実行ログの送信により、AVコンテンツの再生、イベント発生、BD-ROM再生装置が保持する情報などを含めて、実際の動作環境（製品版BD-ROM再生装置上でのBD-ROM再生）と同等の状態で動作確認を実施することが可能となる。ただし、BD-ROM上のデータレイアウトに依存する動作（データアクセス等）に起因するものなど、一部に同等とは言い切れないケースもあるので、この点は、注意を要する。
【００３５】
また、実行Logの内容に応じてレベル（重要度）を設定しておくことにより、このデバッグレベルに応じて実行Logを抑制することができる。
標準出力関数を用いたデバッグでは、手軽にアプリの動作状況をチェックすることが可能になり、アプリケーションの動作検証、再現確認などに有効となる。但しこれは、簡易的なデバッグ作業向けに過ぎない。
【００３６】
続いて、ECLIPSEを用いたデバッグについて述べる。図４（ｂ）は、ECLIPSEを用いたデバッグ例を示す図である。ECLIPSEとは、Java（登録商標） IDE環境の一つであり、JPDAを利用してDebugを行うためのGUIを備えている。そのため、ECLIPSEを利用すれば、アプリの動作をソースコードと対応付けてStep単位でチェックし、ブレークポイント設定、OneStep実行、実行中の変数値の確認など詳細なデバッグ作業を実行することで、アプリの動作をStep単位で詳細に確認することができる。かかるECLIPSEの利用のため、PC１００は、BD-ROM再生装置２００と、JPDAの仕組みに従って通信を行い(hp4)、PC１００上のECLIPSEから、BD-ROM再生装置で動作しているBD-Jアプリケーションに接続して、デバッグ作業を実施する(hp5)。これは、発見した不具合の原因解析、及び、修正等本格的なデバッグ作業向けである。
【００３７】
実行環境＃2のGUIでは、実行環境＃1のプラットフォーム部におけるスレッドや、変数、ブレークポイント、即値を表示することが可能になる。図５は、ADK環境において、ECLIPSEを用いたデバッグを行う場合の、GUIの一例を示す図である。以下、このGUIには、スレッド一覧ウィンドゥwd1、変数一覧ウィンドゥwd2、ブレークポイント一覧ウィンドゥwd3、ソースコード表示ウィンドゥwd4、標準出力関数表示ウィンドゥwd5が存在する。以下、これらの各ウィンドゥについて説明する。・スレッド一覧ウィンドゥwd1、
スレッド一覧ウィンドゥwd1は、仮想マシンにおけるスレッドが一覧表示される。図中の例では、Thread[AWT-Windows(登録商標)],Thread[AWT-Shutdown],Thread[AWT-EventQueue-0]が表示されており、これらのうち、Thread[AWT-Windows（登録商標）],Thread[AWT-Shutdown]が実行状態(Running)であり、Thread[AWT-EventQueue-0]がサスペンド状態であることがわかる。
【００３８】
また図中のPopupMainMenu(BasicFeatrure).keyPressed(int) line26は、上述したThread[AWT-EventQueue-0]のうち、PopupMainMenu(BasicFeatrure).keyPressed(int)を構成するline26が、実行ラインであることを示す。・変数一覧ウィンドゥwd2
変数一覧ウィンドゥwd2には、変数名が、その保持値と対応付けられて配置される。図中の一例では、choises,currentIndex,currentSubFeature,font,parentという５つの変数と、その保持値とを対応付けて示す。・ブレークポイント一覧ウィンドゥwd3
ブレークポイント一覧ウィンドゥwd3には、ブレークポイントが配置される。図中の例では、BasicFeatrureにおけるライン２２と、PopupMainMenuにおけるライン６７とに、ブレークポイントが設定されていることを示す。・ソースコード表示ウィンドゥwd4
ソースコード表示ウィンドゥwd4は、ソースリストが配置される。PopupMainMenu(BasicFeatrure).keyPressed(int)のソースコードファイルであるBasicFeatrure.javaのソースリストのうち、１３行目から２６行目までのソースコードが、本図において、表示対象になっている。そして、これらの行のうち、ブレークポイントが設定されているものには、特殊なマークが付され、また実行ラインは、強調表示されている。・標準出力関数表示ウィンドゥwd5
標準出力関数表示ウィンドゥwd5には、BD-ROM再生装置２００から送信された実行ログが配置される。図中の[util.JMFPlaybackControl]playPlayList29 atMark 0は、BD-ROM再生装置２００から送信された実行Logである。かかる実行ログは、メソッドutilにおいて実行されているJMFPlaybackControl、つまり、JMFプレーヤインスタンスによる再生制御に関する実行ログである。かかるJMFプレーヤインスタンスは、メソッドutilからのAPIコールにより、プラットフォーム部内に生成されたものであり、本図における実行ログには、具体的には、再生制御エンジンによりどのプレイリストが再生されているか、現在時点はどこであるかが、この実行ログに示されている。本図における具体例について解説すると、再生中のプレイリスト(playPlayList)は、PlayListId=29のプレイリストであり、現在時点は、markId=0のチャプターであることがわかる。
【００３９】
以上のGUIの詳細については、下記HPなどを参照されたい。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/jpda/index.html  
Eclipseを利用したDebugの詳細については、下記HP等を参照されたい。
http://www-06.ibm.com/jp/developerworks/opensource/030711/j_os-ecbug.html
http://www.okisoft.co.jp/esc/eclipse3/eclipse-debug.html
以上がECLIPSEにおけるGUIである。続いて、ADK環境における具体的な処理手順について説明する。
【００４０】
図６は、ADK環境でのデバッグ手順を示すフローチャートである。
ADK環境でのデバッグ手順とは、検証チームが、BD-Jアプリケーションについての動作テストを行い(ステップＳ１２)、BD-Jアプリケーションの不正動作を目視や音声等によりチェックする。そして不具合が発見されたかどうかを判断して(ステップＳ１３)、もし不具合が発見されなければ、ステップＳ１４〜ステップＳ１８をスキップして、ステップＳ１９に移行する。
【００４１】
もし不具合が発見されれば、開発者は、不具合発生時、又は、不具合発生前後の実行Logを利用して原因解析を行う(ステップＳ１４)。そして、原因が特定できたかどうかを判断する(ステップＳ１５)。原因が特定できれば(ステップＳ１５でYes)、ステップＳ１６、ステップＳ１７をスキップするが、原因が特定できなかった場合(ステップＳ１５でNo)、デバック装置による解析(ステップＳ１６)を、原因が特定されるまで繰り返す(ステップＳ１７)。原因が特定されれば、コード修正、及び、動作確認を行う(ステップＳ１８)。その後、その後、全検証が完了したかどうかを判断して(ステップＳ１９)、未検証の項目が残っていれば、ステップＳ１２に移行して、動作テストからやり直す。未検証の項目が残っていなければ、処理を終了する。
【００４２】
続いて、本実施形態に係る再生装置の内部構成について説明する。図７は、第１実施形態に係るBD-ROM再生装置２００の内部構成を示すであり、BD-ROMドライブ２０１、ローカルストレージ２０２、ネットワークI/F２０３、仮想ファイルシステム部２０４、再生エンジン２０５、再生制御エンジン２０６、BD-Jプラットフォーム部２０７、ADK処理部２０８を備える。
【００４３】
１.BD-ROMドライブ２０１
BD-ROMドライブ２０１は、BD-ROMのローディング/イジェクトを行い、BD-ROMに対するアクセスを実行する
２.ローカルストレージ２０２
ローカルストレージ２０２は、差分コンテンツを格納する。差分コンテンツとは、BD-ROMとは別に、WWWサーバから配信され、BD-ROMコンテンツと組合せて再生されるコンテンツの総称である。
【００４４】
３.ネットワークI/F２０３
ネットワークI/F２０３は、ネットワーク管理情報に基づきLANに接続されたデバッグ装置との通信を行う。通信の客体のうち、デバッグ装置から再生装置に送り込まれるものには、ネットワークファイルシステム(NFS)情報、BD-Jアプリケーション、BD-Jオブジェクトがあり、再生装置からデバッグ装置へと送り込まれる情報には、マウントコマンドがある。ここで、ネットワーク管理情報は、ネットワークを利用するにあたっての、シリアルポート設定、ネットマスク設定、ゲートウェイ設定、ホスト設定を示す情報である。図８（ａ）は、ネットワーク管理情報における各設定項目に割り当てられている情報識別子と、その解説とを対応付けて示す図である。また、図８（ｂ）は、ネットワーク管理情報の具体的な記述を示す図である。
【００４５】
本図における情報識別子のうち、“LOGSERVERHOST”、“LOGSERVERSELECT”、“LOGSERVERPORT”は、上述したような実行ログを送受信するための設定である。LOGSERVERHOSTは、実行ログの送信先となるネットワークアドレスであり、具体例では、ログサーバーターミナルが動作しているデバッグ装置のネットワークアドレス“192.168.0.1”が、記述されている。
【００４６】
LOGSERVERSELECTは、実行ログを、ログサーバーターミナルのシリアルポートに出力するか、サーバに出力するかを示す出力設定であり、具体例では、“SERIAL”と記述されている。このLOGSERVERSELECTが“SERIAL”の場合は、LOGSERVERHOST、LOGSERVERPORTは無視され、SERIALポートにログが出力される。LOGSERVERSELECTが“SOCKET”の時に、LOGSERVERHOST、LOGSERVERPORTのアドレス、ボート番号に対して、実行ログが出力されることになる。
【００４７】
LOGSERVERPORTは、出力先となるSocketを特定するためのポート番号であり、具体例では、ポート番号4096のSocketに、実行ログが入力されていることを示す。
“NETMASK”はネットマスクの設定を示し、“GATEWAY”,“GATEWAYNAME”は、ゲートウェイの設定を示す。
NETMASKは、再生装置と、PC１００との接続にあたって、使用されるマスクである。
【００４８】
GATEWAYは、ゲートウェイを介して、PC１００を再生装置実機と接続するか否かを示す。同図（ｂ）における具体例では、“Yes”と記述されていることから、ゲートウェイを介して再生装置実機と接続されていることがわかる。
GATEWAYNAMEは、実機となる再生装置が存在するネットワークにおけるゲートウェイのアドレスである。、“HOSTADDR”、“BDVIDEOMOUNT”は、ホストの設定をそれぞれ示す。
【００４９】
HOSTADDRは、実機となる再生装置のネットワークアドレスを示す。具体例では、“192.168.0.2”と記述されていることから、ネットワークアドレス192.168.0.2に、再生装置の実機が存在することがわかる。
BDVIDEOMOUNTは、BD-Jアプリケーションが存在するネットワークパスが記述される。具体例では、“192.168.0.1:/home/bdrom/”と記述されていることから、ネットワークアドレス192.168.0.1における/home/bdrom/がBD-Jアプリケーションに設定されていることがわかる。また、この/home/bdrom/におけるファイルシステム情報が、ネットワークファイルシステムのファイルシステム情報として、BD-ROM再生装置２００に送り込まれることがわかる。
【００５０】
以上が、ネットワーク管理情報及びネットワークI/F２０３についての説明である。
４.仮想ファイルシステム部２０４
仮想ファイルシステム部２０４は、BD-ROMにおけるファイルシステム情報に、他の記録媒体のファイルシステム情報を組み合せることで、仮想的なファイルシステムを生成する。一般にBD-ROMの再生装置は、ローカルストレージのファイルシステム情報を“他の記録媒体”のファイルシステム情報として読み出すことで、仮想的なパッケージを生成するが、本実施形態において特徴的なのは、ネットワークドライブのファイルシステム情報を、“他の記録媒体”のファイルシステム情報として読み出すことで、仮想的なパッケージを生成する点である。かかる仮想的なパッケージの生成により、プラットフォーム部は、ネットワークドライブ上のJava(登録商標)アプリケーションを、BD-ROMに存在するかのように認識して、アクセスすることができる。図９は、仮想ファイルシステム部２０４によるファイルシステム情報の組合せを模式的に示す図である。右側は、ネットワークドライブにおけるファイル・ディレクトリ構造であり、中側は、BD-ROMにおけるファイル・ディレクトリ構造である。左側は、仮想的なパッケージである。
【００５１】
右側は、ネットワークファイルシステム情報を用いて表現される、ハードディスクを示す。このハードディスクには、homeディレクトリの配下に、bd-romディレクトリ、BD-VIDEOディレクトリというサブディレクトリが存在し、更にその配下に、BDJOディレクトリ、JARディレクトリが存在することがわかる。
BDJOディレクトリには、拡張子bdjoが付与されたファイル(00001.bdjo)が存在する。
【００５２】
JARディレクトリには、JARアーカイブファイルファイル(00001.jar)が存在する。
中側は、BD-ROMのファイルシステム情報を用いて表現される、BD-ROMのファイルシステムを示す。このBD-ROMファイルシステムは、Rootディレクトリの下に、BDVIDEOディレクトリが存在する。
BDVIDEOディレクトリには、拡張子bdmvが付与されたファイル(index.bdmv,MovieObject.bdmv)がある。そしてこのBDVIDEOディレクトリの配下には、更にPLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリが存在する。
【００５３】
PLAYLISTディレクトリには、拡張子mplsが付与されたファイル(00001.mpls)がある。
CLIPINFディレクトリには、拡張子clpiが付与されたファイル(00001.clpi)がある。
STREAMディレクトリには、拡張子m2tsが付与されたファイル(00001.m2ts)がある。
図中の矢印mt1,mt2は、上述したような仮想ファイルシステム部２０４によるファイルシステム情報の組合せを模式的に示す。この組合せにより、ネットワークファイルシステムに存在するBDJOディレクトリ、JARアーカイブファイルディレクトリは、BD-ROMのファイルシステムにおけるBDVIDEOディレクトリの配下に組込まれることになり(図中の破線枠hw1)、ネットワークファイルシステムに存在するBDJOディレクトリ、JARアーカイブファイルディレクトリは、あたかも、BD-ROMファイルシステムにおいて、BDVIDEOディレクトリの配下に存在するかのように、取り扱われる。
【００５４】
５.再生エンジン２０５
再生エンジン２０５は、仮想ファイルシステム部２０４により生成された仮想パッケージから、認識することができるAVコンテンツを再生する。
６.再生制御エンジン２０６
再生制御エンジン２０６は、BD-JアプリケーションからのAPIコールに基づく再生を、再生エンジン２０５に行わせる。
【００５５】
７.BD-Jプラットフォーム部２０７
BD-Jプラットフォーム部２０７は、仮想ファイルシステム部２０４により生成された仮想パッケージから、認識することができるBD-Jアプリケーションを実行する。
８.ADK処理部２０８
ADK処理部２０８は、BD-Jプラットフォーム部２０７の構成要素であり、ADK環境におけるデバッグを実現する。
【００５６】
以上が、BD-ROM再生装置２００の内部構成についての説明である。このADK処理部２０８の構成要素のうち、特徴的なものを記述したのが、図１０である。
図１０は、ADK処理部２０８の内部構成を示す図である。本図に示すようにADK処理部２０８は、初期化処理部２０９、マウント設定部２１０を備える。
９.初期化処理部２０９
初期化処理部２０９は、装置の内部情報やハードウェア等の初期化処理を行うと共に、ネットワーク管理情報をネットワークI/Fに読み込ませて、ネットワーク設定処理を行う。ネットワーク設定処理とは、UNIX(登録商標)のrouteコマンド等による操作を指す。ネットワーク管理情報が図８（b）に示すような内容の場合、ネットワーク設定処理は、図８（a）における、NETMASK、GATEWAY、GATEWAYNAME、HOSTADDRの各情報識別子で指定されている情報をもとに、以下のようなrouteコマンドを作成することでなされる。
【００５７】
/sbin/route add -net 192.168.0.2 netmask 255.255.255.0 eth1
１０.マウント設定部２１０
マウント設定部２１０は、ネットワーク管理情報におけるBDVIDEOMOUNTの情報識別子で指定されている情報をもとに、ネットワークに接続されたネットワークドライブにおけるファイルシステム(NFS)に対し、マウント設定処理を行う。マウント設定処理とは、UNIX（登録商標）のmountコマンド等による操作を指す。
【００５８】
ディレクトリをマウントするという処理は、UNIX（登録商標）等のファイルシステムにおけるマウントの操作を指す。例えば、計算機B（クライアント）のファイルシステムにより管理されるディレクトリXに、他の計算機A（サーバ）のファイルシステムにより管理されるディレクトリUを組み込むという操作を指す。この操作を行うと、計算機B上のアプリケーションが計算機AのディレクトリUをアクセスする場合、アクセス要求がディレクトリXを指定すればよく、計算機AのディレクトリUをアプリケーションが指定する必要はない。このようにあるディレクトリXを他のディレクトリUに割り当てる操作は、ディレクトリXにディレクトリUをマウントすると呼ばれている。この操作では、ディレクトリXは、“マウント先のディレクトリ”と呼ばれ、ディレクトリUは、“マウント元のディレクトリ”と呼ばれる。ここで、プラットフォーム部は、Linux等、家電機器用のリアルタイムOS上で動作するので、マウント設定部２１０は、ネットワークを介して、mountコマンドを発することで、上述したようなマウントを行うことができる。ネットワーク管理情報が図８（b）に示すものと仮定すると、マウント設定部２１０が発行するmountコマンドは以下のようなものになる。
【００５９】
mount -t nfs -o nolock -o ro 192.168.0.1:/home/bdrom/BDVIDEO/BDJO/BDVIDEO/BDJO
mount -t nfs -o nolock -o ro 192.168.0.1:/home/bdrom/BDVIDEO/JAR /BDVIDEO/JAR
上記mountコマンドの処理のうち、前半では、BD-ROMの/BDVIDEO/BDJOディレクトリに、PCの/home/bdrom/BDVIDEO/BDJOディレクトリをマウントしており、BD-ROMの/BDVIDEO/BDJOディレクトリがマウント先ディレクトリ、PCの/home/bdrom/BDVIDEO/BDJOディレクトリがマウント元ディレクトリとなる。また、後半では、BD-ROMの/BDVIDEO/JARアーカイブファイルディレクトリに、PCの/home/bdrom/BDVIDEO/JARアーカイブファイルディレクトリをマウントしており、BD-ROMの/BDVIDEO/JARアーカイブファイルディレクトリがマウント先ディレクトリ、PCの/home/bdrom/BDVIDEO/JARアーカイブファイルディレクトリがマウント元ディレクトリとなる。
【００６０】
かかるマウントにより、プラットフォーム部及び再生制御エンジンが認識するファイルシステムは、ネットワークドライブ上のファイルシステムと、BD-ROM上のファイルシステムとを組合せたもの、つまり、図９に示したような仮想的なパッケージにおけるファイルシステムになる。こうすることで、プラットフォーム部は、ネットワークドライブ上のBD-Jアプリケーションが、あたかも、BD-ROM上に存在するように、認識することができ、BD-ROM上のAVコンテンツの再生と、プラットフォーム部によるBD-Jアプリケーションの実行とを連動させることができる。本実施形態では、BD-Jアプリケーションが、プラットフォーム部に対して、デバッグのための所定のマウント用APIをコールすることにより、マウント設定部２１０は、BD-Jアプリケーションが存在するネットワークドライブに対して、上述したようなマウントを実行する。
【００６１】
またネットワーク管理情報において、標準出力関数の出力先は、ログサーバーターミナルにおけるシリアルポートに設定されているので、プラットフォーム部は、BD-Jアプリケーション内の標準出力関数の呼出しにおいて、引き数として指定された値を取り出し、取り出された値を、実行ログとしてシリアルポートを通じて、ログサーバーターミナルに送信する。
【００６２】
図１１は、ADK環境におけるBD-Jアプリケーション実行と、AVコンテンツ再生とを模式的に示す図である。本図は、図９における構成図に、バルーンヘルプを書き加えたものになっている。このバルーンは、右側がネットワークドライブ、中側がBD-ROM、左側が仮想パッケージの中身を示す。これらの中身は、図９に示したものと同等である。マウント設定部２１０がマウントを行うことにより、仮想パッケージが生成されるので、ハードディスクに存在するBD-JアプリケーションやBD-Jオブジェクトが、BD-ROMに存在するかのように扱われ、BD-ROM再生装置２００における再生制御エンジンは、この仮想パッケージ内のAVコンテンツの再生を行い、BD-ROM再生装置２００におけるプラットフォーム部が、この仮想パッケージ内のBD-Jアプリケーションを実行することにより、実際、家庭内の再生装置で、BD-Jアプリケーションが再生されるのと、同じような環境で、BD-Jアプリケーションが実行されることになる。
【００６３】
・ADK環境の処理手順
図１２は、ADK環境の処理手順を示すフローチャートである。まず始めに、ネットワーク管理情報をネットワークI/F２０３に設定した上で(ステップＳ２１)、PC１００上のハードディスクにおけるファイルシステム情報を、BD-ROMにおけるファイルシステム情報にマウントして、仮想的なファイルシステムを生成する(ステップＳ２２)。そして、この仮想的なファイルシステムにおけるIndex.bdmvをBD-ROMから読み出す。ここで、Index.bdmvとは、上述したようなタイトルバウンダリのアプリケーションシグナリングを実行するため、タイトルと、BD-Jオブジェクト及びBD-Jアプリケーションとの関連を記載した情報である(その詳細については、第６実施形態で述べる)。かかるIndex.bdmvが読み出されれば、これと、ユーザ操作に基づき、再生すべきタイトルを特定する(ステップＳ２３)。
【００６４】
ステップＳ２４は、特定されたタイトルが、BD-Jアプリケーションにより制御されるタイトルであるか否かの判定であり、もしBD-Jアプリケーションにより制御されるタイトルであれば、BD-Jオブジェクト内のApplicationManagementTable()に基づき、シグナリングを行い、ネットワークドライブからBD-Jアプリケーションを、Javaプラットフォーム部内にロードする(ステップＳ２５)。そしてBD-Jアプリケーションを実行して、JPDAによるデバッグを開始する(ステップＳ２６)。もしBD-Jアプリケーションの実行が終了し、タイトルにおけるプレイリストの再生が終了すれば、ステップＳ２４に戻って、ステップＳ２４〜ステップＳ２６の処理を繰り返す。
【００６５】
上述したようなBDーJタイトルの再生において、プレイリストの再生が終了すれば、そのプレイリストの再生終了を示すイベントが再生制御エンジンから出力される。BD-Jアプリケーションにおけるイベントハンドラは、かかるイベントに従い、次のタイトルを行う。一方、プレイリスト再生終了を示すイベントが発行され、タイトルを切り替える際、プラットフォーム部は、ログをPC１００に送信する。PC１００がかかるログを、受信することで、タイトル切り替えが正しく行われたかの確認を行うことができる。
【００６６】
以上のように本実施形態によれば、再生装置実機のプラットフォーム部上で、エラーが発生した場合における実行ログがデバッグ装置に送信されるので、デバッグ装置上で、エラー原因を突止める処理が好適に行われることになり、実機を取り入れた総合テストを好適に行うことができる。
また本実施の形態によれば、AVコンテンツをBD-ROMドライブから取得し、アプリケーションを、ネットワークドライブ装置から取得することで、アプリケーションをAVコンテンツに連動させることができるので、AV再生制御を行うアプリケーションの動作が、作成者の意図と異なる動作を行う場合には、デバッグ装置上で解析・修正を行うことが可能になる。これにより、アプリケーションがBD-ROMに配置されていなくても、効率的な解析・修正を実施することが可能となる。
【００６７】
（第２実施形態）
本実施形態は、ADK環境において、実行ログ出力を行う実施形態に関する。標準出力関数呼び出しにより実行Logの出力を行うべき箇所には、以下のものがある。
１）API呼出し時（AV再生制御用API、BD-ROM再生装置についての各種情報取得/設定APIなど）に、呼び出しAPI種別、引数などを出力する。ここでのAPI呼出しには、PlayList再生、PlayList切換え、Title切換え、Subtitle/Audio/Angleなどの切換え、再生速度/方向等の変更、レジスター値取得/変更などを、再生制御エンジンに行わせるためのAPIがある。
【００６８】
具体的なJava(登録商標)プログラムソースコードの記述は、以下のようになる。ソースコードのうち、PlayList再生、PlayList切換え、Title切換え、Subtitle/Audio/Angleなどの切換え、再生速度/方向等の変更、レジスター値取得/変更のソースコードに、標準出力関数の呼び出しを記述する。この呼び出しにあたって、イベント名、受信時における詳細パラメータを引数とする。
【００６９】
２）各種イベント受信時に、プラットフォーム部が受信したイベント名、受信時における詳細パラメータを出力する。具体例としては、Keyイベント、再生状態等の変化イベントの受信時に、プラットフォーム部が受信したイベント名、受信時における詳細パラメータなどがある。具体的には、ソースコードのうち、Keyイベント、再生状態等の変化イベントの受信しているイベントリスナ部のソースコードに、標準出力関数の呼び出しを記述する。この呼び出しにあたって、イベント名、受信時における詳細パラメータを引数とする。
【００７０】
３）エラー発生時に、エラーメッセージ、Stack Traceを出力する。ここでいうエラーとは、Exceptionの発生、AV再生制御の失敗、API呼出しの失敗をいう。特に、API呼出しに伴うエラー発生時においては、呼び出しの対象となったAPIの種別、及び、そのAPI呼出し時における引数を実行ログとして送信する。AV再生制御の失敗時における実行ログには、現在再生されているプレイリストの番号の他、その再生時点を示す時刻情報、ユーザによりコールされたメニューのメニュー番号がある。
【００７１】
具体的なJava(登録商標)プログラムソースコードの記述は、以下のようになる。つまり、Exceptionの発生、AV再生制御の失敗発生、API呼出しの失敗発生を条件文としたIf文を記述して、かかる条件文が真である場合、エラーメッセージ、又は、StackTraceを引数にして標準出力関数の呼出しを行うよう、Java(登録商標)プログラムソースコードを記述する。
４）アプリ動作のポイントとなる処理実行時に、処理実行が特定可能なメッセージを出力する。具体的にいうと、タイトルバウンダリでBD-Jアプリケーションのシグナリングを行うにあたって、アプリケーションの動作が変化する時点が、アプリ動作のポイントとなる。つまり、ユーザによりタイトルが選択されて、アプリケーションの実行が開始されるタイミング、タイトルの再生が終了してアプリケーションの実行が終了するタイミングがアプリ動作ポイントとなる。特に、タイトルの再生が終了時には、アプリケーションにより、ルートメニューやタイトルメニューの表示がなされるので、かかる終了時をアプリ動作ポイントとして、実行ログを送信させれば、アプリケーションの動作検証に役立てることができる。
【００７２】
具体的なJava(登録商標)プログラムソースコードの記述は、以下のようになる。つまり、上述したようなアプリケーションの実行開始部分は、BD-Jアプリケーションを構成するクラスファイルのうち、メインルーチンにあたるものの、先頭部分に該当する。同じく、アプリケーションの実行終了部分は、BD-Jアプリケーションを構成するプログラムのうち、メインルーチンにあたるものの、終端部分に該当する。かかる先頭部分及び終端部分に、標準出力関数の呼び出しを記述して、表示対象となるメニューの識別子を、その引数とすれば、上述したルートメニューやタイトルメニューが、表示対象になっているかどうかを、正しく検証することができる。  
【００７３】
１）、３）の実行ログを出力する場合について、以下説明する。
この実行ログ出力には、デバッグ用ルーチンが組込まれた状態のBD-Jアプリケーションを、BD-ROM再生装置２００に実行させて、実機テストを実行すればよい。
ここでBD-Jアプリケーションに組込まれたデバッグルーチンとは、APIを通じて、プラットフォーム部に対して、プレイリストの再生を命じると共に、プラットフォーム部において例外処理(Exception)が発生した際、メッセージやメモリダンプを出力するというものである。Javaの仮想マシンにおけるスタックには、関数呼び出しの情報、変数の情報が先入れ後出し式に蓄積される。本実施形態では、これらから関数呼び出しのダンプ(StackTrace)を生成して、実行ログとして出力する。
【００７４】
プラットフォーム部における例外処理は、予定外のイベントが発行された場合、又は、規定外のパラメータを使用したシステムコールがなされた場合に発生する。本実施形態で述べるデバッグ用ルーチンは、図１３のようなLOG出力用APIを前提にしていて、図１５の形態で、BD-Jアプリケーションに組込まれているので、プラットフォーム部でExceptionが発生した際起動され、Exception発生時におけるエラーメッセージやメモリダンプを、標準出力関数に出力することができる。こうして標準出力関数に出力されるメモリダンプを、本実施形態では、実行ログとして扱う。
【００７５】
以降、標準出力関数によるLog出力用APIについて説明する。図１３は、Log出力用APIであるDebugLogについてのクラス構造体を示す図である。
本図のクラス構造体は、整数型のパブリック変数ALL、FINEST、FINER、FINE、INFO、WARNING、ERROR、OFF、debugLevelを、メンバーとしてもつ。外部からコールすることができるメソッドとしては、setLevelメソッド、printLogメソッド、printExceptionメソッドがある。
【００７６】
setLevelメソッドは、newLevelを引数として受け付けて、このnewLevelをdebugLevelに代入し(debugLevel=newLevel;)、標準出力関数であるSystem.out.printlnメソッドをコールするというものである。このコールにあたって、“debugLevelset to ” + debugLevel を引数にしているので、debugLevelは、その前に“debugLevelset to ”との文字列が付された状態で表示される。
printLogメソッドは、logLevel, Class caller, String messageを引数として受け付けて、logLevelがdebugLevel以下がどうかを判定し（logLevel<=debugLevel)、もしそうであれば、標準出力関数であるSystem.out.printlnメソッドをコールするものである。このコールにあたって、”[”+caller.getName() + ”] ” + message を引数にしている。ここでcaller.getName()は、コール元となった関数の名称を取得するものでなので、かかるcaller.getNameで取得された関数名は、前後に括弧[]が付され、その後ろにmessageが追加された状態で表示される。
【００７７】
printExceptionメソッドは、logLevel, Class caller, Throwable tを引数として受け付けて、logLevel,caller,t.getMessage()を引数にして、printLogのコールを行い、t.printStackTrace()のコールを行うものである。
図１４（ａ）〜（ｃ）は、setLevelメソッド、printLogメソッド、printExceptionメソッドの処理手順を示すフローチャートである。
【００７８】
・setLevelメソッド
本図（ａ）におけるsetLevelメソッドは、debugLevelにnewLevelを設定して(ステップＳ３１)、設定されたdebugLevelに、“debugLevelsetto”の文字列を付して表示されるべく、System.out.printlnメソッドをコールするという手順から構成される(ステップＳ３２)。
【００７９】
・printLogメソッド
本図（ｂ）におけるprintLogメソッドは、引数にて与えられたlogLevelが、debugLevelより小さいかどうかを判定して(ステップＳ３５)、もし小さいならば、コール元のメソッド名(Caller.getName())に、引数で与えられたメッセージを表示すべく、標準出力関数であるSystem.out.printlnメソッドのコールを行い(ステップＳ３６)、もしdebugLevelより大きいならば、このコールをスキップするという手順から構成される。
【００８０】
・printExceptionメソッド
本図（ｃ）におけるprintExceptionメソッドは、コール元のクラス名と、引数にて与えられたExceptionのメッセージ名とを表示するよう、printLogメソッドをコールして(ステップＳ３３)、引数で与えられたExceptionのStackTraceメソッドをコールするものである(ステップＳ３４)。
【００８１】
図１５は、Log出力APIを利用した、Java(登録商標)プログラムソースコードの一例を示す。図中のfuncは、playListId, markIdを引数として受け付けて、tryメソッドをコールするものである。
tryメソッドは、PlayList再生の再生を命じて、その結果を標準出力関数に出力するものである。具体的には引数playListId, markIdを用いて、PlayPLメソッドをコールすることでJMFPlaybackControl、つまり、JMFプレーヤインスタンスによる再生制御をプラットフォーム部に実行させるものである(PlayPL(playListId,markId ))。その後、printLog関数のコールを行う(printLog(DebugLog.INFO, this,“PlayPL PL:” +playListId + “mark:” + markId ))。ここで、PlayPLメソッドのコール時における引数は、playListId,markIdであるので、この引数に示されたプレイリストのうち、markIdで指示された時点から、プレイリストの再生は開始される。
【００８２】
printLog関数のコール時における引数として、DebugLog.INFO, thisを含んでいるので、かかるprintLog関数のコールにあたって、コール元となる関数の名称“try”がGUIに表示されることになる。
一方printLog関数のコール時における引数は、 “PlayPL PL:” + playListId “mark:” + markIdを含んでいるので、playListIdは、その前に“PlayPLPL:”という文字列が付された状態で表示される。markIdは、“mark:”という文字列が付された状態で表示される。シリアルポートを通じて、これらが、実行ログとしてデバッグ装置に出力されることになる。
【００８３】
catch (Exception e)メソッドは、例外処理が発生した際に、実行されるメソッドであり、その内容は、DebugLog.ERRORを引数にして、printExceptionをコールするというものである。  
図１６は、tryメソッドの処理手順を示すフローチャートである。playListID,MarkIdを引数にして、PlayPLメソッドのコールを行い(ステップＳ４１)、debugLevelのレベルを“INFO”に設定して、このメソッドで再生されるプレイリストのログを出力するためのPrintLogメソッドをコールする(ステップＳ４２)。playListIDが=3であり、MarkIdが=2である場合、ログサーバーターミナルのコンソールには、ステップＳ４２の右脇に示すように、[try]playPLPL:3mark:2という文字列が表示される。
【００８４】
ステップＳ４３は、Exceptionが発生したかどうかの判定であり、発生しなければ、本フローチャートを終了するが、もし発生すれば、debugLevelのレベルを“ERROR”に設定して、このtryメソッドで発生したExceptionのエラーメッセージと、StackTrackとを出力するためのPrintExceptionメソッドのコールを行う(ステップＳ４４)。そうすると、このステップＳ４４の右脇に示すように、ログサーバーターミナルのコンソールには、２段表記で、[try]エラーメッセージと、スタックトレースとが表示される。
【００８５】
このデバッグルーチンのように、要所となるプログラムソースの位置に、標準出力関数を記載することで、任意の位置での状態監視が可能となる。但し、出力関数の実行自体に時間が必要になるため、標準出力関数の有無によって実行タイミングに影響がでることには留意が必要となる。
(第３実施形態)
本実施形態は、BD-ROM再生装置における内部状態を示す変数の読み書きを実現する実施形態である。
【００８６】
BD-Jアプリケーションには、割り込み命令と、モニタプログラムとが組み込まれている。この割り込み命令は、シリアルポートへとコマンドが入力すると、BD-Jアプリケーションからモニタリングプログラムへと分岐するというものである。
モニタリングプログラムは、シリアルポートからのコマンド入力待ちを行い、もしシリアルポートを介してコマンドが入力されると、そのコマンドに従った処理を行うというプログラムである。
【００８７】
ここで、入力される可能性があるコマンドには、読出コマンド、書込コマンドがある。読出コマンドは、第１オペランドに、読み出しの対象となるPSR番号を記述することができる。書込コマンドは、第１オペランドに、書き込みの対象となるPSR番号を記述することができ、第２オペランドに即値を記述することができる。
読出コマンドの入力時において、モニタプログラムは、その第１オペランドに指定されたレジスタ番号のPSRの格納値を読み出すよう、再生制御エンジンに対して、再生制御エンジンのコールを行う。かかるコールに対するレスポンスとして、PSR格納値が読み出されれば、そのPSR格納値を引数にした標準出力関数のコールを行うことにより、このPSR格納値をログサーバーターミナルに送信する。こうすることで、ログサーバーターミナルは、PSR格納値をシリアルポートを介して取得することができる。
【００８８】
書込コマンドの入力時において、モニタプログラムは、その第１オペランドに指定されたレジスタ番号のPSRに対して、第２オペランドに指定された即値を書き込むよう、再生制御エンジンに対して、再生制御エンジンのコールを行う。かかるコールに対するレスポンスとして、書き込みの成否を示すイベントが再生制御エンジンから出力されれば、そのイベントに示される書き込み成否を引数にした標準出力関数のコールを行うことにより、このPSR格納値をログサーバーターミナルに送信する。こうすることで、ログサーバーターミナルは、PSR格納値をシリアルポートを介して取得することができる。
【００８９】
以上のように本実施形態によれば、PSRに対する読み書きを、BD-Jアプリケーションに組込まれたモニタプログラムに行わせ、その結果を、シリアルポートを通じてログサーバーターミナルに送信するので、ログサーバーターミナルは、BD-Jアプリケーションに組込まれたモニタプログラムを通じて、PSRの値を自由に操作することができる。
(第４実施形態)
本実施形態では、IDE環境である、デバッグ装置の内部構成について説明する。図１７は、デバッグ装置のハードウェア構成を示す図である。本実施形態においてPC１００は、本図に示すように、ネットワークドライブ１０１、ブートROM１０２、RAM１０３、入出力I/F１０４、MPU１０５、ネットワークI/F１０６から構成される。
【００９０】
・ネットワークドライブ１０１
ネットワークドライブ１０１は、ADK環境に供されるBD-Jアプリケーション、BD-Jオブジェクトを格納しておくためのハードディスクであり、BD-ROM再生装置２００からはネットワークドライブとして認識される。
・ブートROM１０２
ブートROM１０２は、オペレーションシステムのブートストラップを行うためソフトウェアコードを格納している。
【００９１】
・RAM１０３
RAM１０３には、オペレーションシステムを構成するカーネル、ハンドラ部や、IDE環境において、BD-Jアプリケーションを作成するための各種プログラムがロードされる。  ・入出力I/O１０４
入出力I/O１０４は、キーボード、マウスといった入力機器や、ディスプレイのような出力機器を接続してGUIを構成する。
【００９２】
・MPU１０５
MPU１０５は、RAM１０３にロードされたソフトウェアを実行する。
・ネットワークI/F１０６
ネットワークI/F１０６は、ネットワーク上でのデータ入出力を行う。
・HDD１０７
HDD１０７は、オーサリングシステムから取得したタイトル構造情報を格納しておくハードディスクドライブである。
【００９３】
タイトル構造情報とは、木構造を用いて、BD-ROMにおける再生単位の関係、例えば、タイトル、Movieオブジェクト、BD-Jオブジェクト、プレイリスト間の関係を規定する情報である。具体的にいうと、タイトル構造情報は、制作しようとするBD-ROMの「ディスク名」に対応するノード、そのBD-ROMにおいて、Index.bdmvから再生可能となる「タイトル」に対応するノード、そのタイトルを構成する「Movieオブジェクト及びBD-Jオブジェクト」に対応するノード、当該Movieオブジェクト及びBD-Jオブジェクトから再生される「プレイリスト」のノードを規定して、これらノードを、エッジ(辺)で結び付けることで、タイトル、Movieオブジェクト、BD-Jオブジェクト、プレイリスト間の関係を規定する。タイトル構造情報においてプレイリストは、00001.mpls,00002.mplsというような、実際のBD-ROMへの記録時に利用される、具体的なファイル名ではなく、MainPlaylist,MenuPlaylistというような、抽象的な名称で記載される。これは、BD-ROM向けのデータと、DVD-Video向けのデータとを同時に作成する場合、かかる再生単位の構造は、抽象的に表現されていることが望ましいからである。
【００９４】
・HDD１０８
HDD１０８は、オペレーションシステムのカーネル、ハンドラ部や、IDE環境のための各種ソフトウェア、IDクラスソースコードや、Java(登録商標)プログラムソースコード、作成途上のBD-Jオブジェクトを格納しておくHDDである。
IDクラスソースコードとは、Java(登録商標)プログラムが最終的にディスク上に作成されるIndex.bdmvやPlayList情報にアクセスするためのJava(登録商標)クラスライブラリのソースコードである。IDクラスソースコードは、プレイリスト番号を指定することでディスクから所定のプレイリストファイルを読み込むコンストラクタをもち、このコンストラクタを実行して作成したインスタンスを利用することでAVClipの再生等が実現される。IDクラスライブラリの変数名は、MainPlaylist,MenuPlaylistのように、タイトル構造情報で定義されるプレイリストノードの名前を用いて定義される。このとき用いるプレイリスト番号は、ダミーの番号である。このIDクラスソースコードに基づき、コンパイルが生成するJava(登録商標)クラスライブラリをIDクラスライブラリと呼ぶ。
【００９５】
以上が、PC１００のハードウェア的な構成要素である。以降、ソフトウェア的な構成要素について説明する。図１８は、IDE環境のソフトウェア構成を示す図である。本図に示すように、IDE環境は、IDクラス作成部１１１、Java(登録商標)プログラミング部１１２、BD-Jオブジェクト作成部１１３、Java(登録商標)インポート部１１４、ID変換部１１５、Java(登録商標)プログラムビルド部１１６、ログサーバターミナル１１７、BD-Jシミュレータ１１８から構成される。
【００９６】
１.IDクラス作成部１１１
IDクラス作成部１１１は、HDD１０７に格納されたタイトル構造情報を利用してIDクラスソースコードを作成し、HDD１０８に格納する。
２.Java(登録商標)プログラミング部１１２
Java(登録商標)プログラミング部１１２は、GUI等のユーザインターフェースを通じて、ユーザからの編集操作に従って、Java(登録商標)プログラムのソースコードを作成し、Java(登録商標)プログラムソースコードをHDD１０８に書き込む。このJava(登録商標)プログラムソースコードは、BD-Jアプリケーションの元になるのだが、かかるJava(登録商標)プログラムを、BD-Jアプリケーションとして作成するには、Index.bdmv、プレイリストといった、BD-ROM特有の情報を参照せねばならない。これら、BD-ROM特有の情報に関する参照部分の記述には、上述したようなIDクラスライブラリが用いられる。
【００９７】
３.BD-Jオブジェクト作成部１１３
BD-Jオブジェクト作成部１１３は、Java(登録商標)プログラミング部１１２で作成したJava(登録商標)プログラムソースコードと、IDクラスソースコードとを元に、BD-Jオブジェクト生成情報を作成する。BD-Jオブジェクト生成情報とは、最終的にBD-ROMに記録されるべきBD-Jオブジェクトの雛形となる情報であり、再生すべきプレイリストを、00001.mpls,00002.mplsというような具体的なファイル名ではなく、IDクラスライブラリで定義された変数名を用いて、指定している。
【００９８】
４.Java(登録商標)インポート部１１４
Java(登録商標)インポート部１１４は、BD-Jオブジェクト作成部１１３によって作成されたJava(登録商標)プログラムソースコード、IDクラスソースコード、BD-Jオブジェクト生成情報をインポートする。Java(登録商標)インポート部１１４は、タイトル構造情報を利用し、インポートするJava(登録商標)プログラムソースコード、IDクラスソースコード、BD-Jオブジェクト生成情報と、それらのコード及び情報がどのBD-Jオブジェクトに対応するのかの関連付けを行い、タイトル構造情報のBD-JオブジェクトノードのBD-Jオブジェクト生成情報を設定する。
【００９９】
５.ID変換部１１５
ID変換部１１５は、Java(登録商標)インポート部１１４によって、インポートされたIDクラスソースコードを、タイトル番号、プレイリスト番号に変換する。また、ID変換部１１５は、BD-Jオブジェクト生成情報についても、BD-Jオブジェクト内で定義されるプレイリスト名が、実際のディスク上のプレイリスト番号と一致するよう変換する。
【０１００】
６.Java(登録商標)プログラムビルド部１１６
Java(登録商標)プログラムビルド部１１６は、ID変換部１１５によって変換されたIDクラスソースコードと、Java(登録商標)プログラムソースコードとに対してコンパイル処理を行って、BD-Jオブジェクト、及び、BD-Jアプリケーションを出力する。ここで出力されるBD-Jアプリケーションは、JARアーカイブファイルの形式になっている。
【０１０１】
Java(登録商標)プログラムビルド部１１６では、複数のコンパイルスイッチの設定が可能であり、ADK環境向けのコンパイルスイッチを使用した場合、図１５に示したLog出力用APIや、このLog出力用APIの利用例たる部分がコンパイルされる。
IDE環境向けのコンパイルスイッチを使用した場合、IDクラスソースコードが、タイトル番号、プレイリスト番号に変換されないまま、コンパイルされる。これは、後述するように、シミュレートで使用される抽象化コンテンツは、MainPlaylist,MenuPlaylistのように、タイトル構造情報で定義されるプレイリストノードの名前を用いて定義されているからである。
【０１０２】
７.ログサーバターミナル１１７
ログサーバターミナル１１７は、再生装置から受信したログを、ウィンドゥ上に表示する。ログサーバーターミナルによるログのウィンドゥ表示は、図５のようなウィンドゥ表示と同一の画面上でなされるので、ユーザは、このログサーバーターミナルによるログの表示を見ながら、ソースプログラムコードの不具合を解析し、修正することができる。
【０１０３】
８.BD-Jシミュレータ１１８
BD-Jシミュレータ１１８は、BD-Jアプリケーションのシミュレートを実行する。
以上が、IDE環境におけるソフトウェア構成である。続いて、BD-Jシミュレータ１１８の内部構成について、より詳細に説明する。
図１９は、BD-Jシミュレータ１１８の内部構成を示す図である。本図に示すように、ソースViewer１２１、PC上プラットフォーム部１２２、トレーサ１２３、抽象化コンテンツ１２４、抽象化コンテンツ作成部１２５、再生制御エンジンスタブ１２６、シミュレーション情報１２７、AV再生画面表示部１２８から構成される。以降、このBD-Jシミュレータ１１８を構成する各構成要素について、説明する。
【０１０４】
１.ソースViewer１２１
ソースViewer１２１は、BD-Jアプリケーションのソースリスト表示を行うと共に、ユーザからの操作に従い、ソースコードの作成や、作成されたソースコードに対する修正を実行する。
２.PC上プラットフォーム部１２２
PC上プラットフォーム部１２２は、PC１００上におけるJavaプラットフォーム部であり、PC１００上においてBD-Jアプリケーションを実行する。
【０１０５】
２.トレーサ１２３
トレーサ１２３は、実行された動作、レジスタ、変数値などを出力するソフトウェアである。このトレーサは、ブレークポイント設定や、ワンステップ実行、スナップショット機能を有する。スナップショット機能は、特定の機能を実行したときや、特定の条件だけ、レジスタの値や変数値、実行結果を出力する機能である。ユーザは、これらの処理を組み合わせることで、変数値を書き換えた上でのアプリケーション実行など、様々なデバッグ手法を実行することができる。
【０１０６】
３.抽象化コンテンツ１２４
抽象化コンテンツ１２４は、シミュレートに使用されるAVコンテンツの代替品である。ここで抽象化コンテンツ１２４が、BD-ROMに記録されるべきAVコンテンツとどう違うかというと、BD-ROMにおけるAVコンテンツが、BD-ROM応用層規格におけるシンタックスに従って、記述されているのに対して、抽象化コンテンツ１２４は、かかるBD-ROM応用層規格のシンタックスよりも抽象度が高いシンタックスで記述されている点である。つまり、MainPlaylist,MenuPlaylistのように、タイトル構造情報で定義されるプレイリストノードの名前を用いて、抽象化コンテンツ１２４の構成要素は特定される。この抽象化コンテンツは、１つまたは２つ以上のプレイリストから構成されている。一つのプレイリストは、１つまたは２つ以上のチャプターに分けることができ、任意の場所にプレイリストマークと呼ばれる論理的な印が設定されている。ここで抽象化コンテンツにおいて各プレイリストは、映像の解像度と、映像のエンコード種別と、映像のフレームレートと、映像の長さと、プレイリストと組み合わされて再生することができる音声ストリーム数と、プレイリストとあわせて表示することができるサブタイトル数とから特定され、ピクチャインピクチャを実現する。このピクチャインピクチャは、親画面、子画面のそれぞれに、動画像を表示させて、再生するという機能である。
【０１０７】
４.抽象化コンテンツ作成部１２５
抽象化コンテンツ作成部１２５は、プレイリスト構成メニュー５０１を表示して、かかるメニューに対するユーザ操作に基づいて、抽象化コンテンツを作成する。
i)プレイリスト構成メニュー５０１
図２０は、プレイリスト構成メニュー５０１の一例を示す図である。本図に示すように、プレイリスト構成メニュー５０１は、複数のプレイリストパネル５０２、キャンセルボタン、決定ボタンから構成される
ii)プレイリストパネル５０２
プレイリストパネル５０２は、映像を構成するそれぞれのプレイリストの内容を視覚的に表現してユーザ操作に供するGUI部品であり、タブを付した状態で、重ね合わされて表示される。このような重合せ表示において、何れかのタブがクリックされれば、クリックされたプレイリストパネル５０２は、全面表示され、それまで全面表示されたプレイリストパネルは、その背後に回る。
【０１０８】
プレイリストパネル５０２は、抽象化コンテンツの各項目についてユーザーから入力を受け付けることにより抽象化コンテンツの設定を行うためのGUIであり、以下表を含む。・映像属性表h1
映像属性表は、見出し欄と、これに対応する入力欄との組みを用いて表現される。見出し欄は、『解像度』、『エンコード方式』、『フレームレート』といった映像属性の名称入力を、ユーザから受け付けるものである。ユーザは、かかる見出し欄をカーソルで指示してキー入力を行うことで、かかる映像属性の名称を規定することができる。入力欄は、映像属性の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、プレイリストの構成要素には、具体的な値が与えられる。本図の一例では、『解像度』が“1920×1080”、『エンコード方式』が“MPEG-2”、『フレームレート』が“24”と規定されていることがわかる。・ストリーム表h2
ストリーム表は、見出し欄と、これに対応する入力欄との組みを用いて表現される。見出し欄は、『音声ストリーム数』、『字幕ストリーム数』というように、映像と共に再生されるストリームの名称入力を、ユーザから受け付けるものである。ユーザは、かかる見出し欄をカーソルで指示してキー入力を行うことで、かかる音声ストリーム数、字幕ストリーム数といった名称を規定することができる。入力欄は、ストリーム数の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、プレイリストの構成要素には、具体的な値が与えられる。本図の一例では、『音声ストリーム数』が“２本”、『字幕ストリーム数』が“３本”であると規定されている。・チャプター表h3
チャプター表は、タイムコード欄と、これに対応するチャプター名欄との組みを用いて表現される。タイムコード欄は、00:00:00:00、00:30:00:00〜01:50:00:00,01:59:25:00といったといったタイムコードの数値入力を、ユーザから受け付けるものである。ユーザは、かかるタイムコード欄をカーソルで指示してキー入力を行うことで、かかるタイムコードを規定することができる。チャプター名欄は、チャプターの具体的な名称設定を、受け付けるものであり、かかるチャプター名欄をカーソルで指示して、キー入力をすることで、チャプターには、具体的な名称が与えられる。本図の一例では、“Opening”“Battle”“Ending”といった名称が与えられていることがわかる。・マーク表h4
マーク表は、タイムコード欄と、これに対応するマーク名欄との組みを用いて表現される。タイムコード欄は、00:02:14:00、00:05:54:00〜01:25:10:00,01:55:10:00といったといったタイムコードの数値入力を、ユーザから受け付けるものである。ユーザは、かかるタイムコード欄をカーソルで指示してキー入力を行うことで、かかるタイムコードを規定することができる。マーク名欄は、マークの具体的な名称設定を、受け付けるものであり、かかるマーク名欄をカーソルで指示して、キー入力をすることで、マークには、具体的な名称が与えられる。本図の一例では、TitleDisplay,Prologuefinish,CG-Effect Interview, Ending Startとの名称が与えられている。
【０１０９】
また、プレイリスト構成メニュー５０１には、音声詳細設定ボタン５０３、字幕詳細設定ボタン５０４、チャプター追加ボタン５０５、マーク追加ボタン５０６がある。
iii)音声詳細設定ボタン５０３
音声詳細設定ボタン５０３は、図２１（ａ）に示すような音声ストリーム構成メニュー６０１aの表示要求をユーザから受け付けるためのGUI部品である。音声ストリーム構成メニュー６０１aは、音声の詳細設定をユーザから受け付けるGUIである。この音声の詳細は、番号欄と、これに対応する名称欄との組みを用いて表現される。番号欄は、再生可能な音声の番号入力(図中の＃01,＃02)を受け付けるものである。名称欄は、音声の抽象的な名称(Japanese,English)を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、音声の詳細が規定される。
【０１１０】
また本画面では、「キャンセル」ボタン、「決定」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
iv)字幕詳細設定ボタン５０４
字幕詳細設定ボタン５０４は、図２１（ｂ）に示すような字幕ストリーム構成メニュー６０１bの表示要求を受け付けるためのGUI部品である。字幕ストリーム構成メニュー６０１bは、字幕の詳細設定をユーザから受け付けるGUIである。この字幕の詳細は、番号欄と、これに対応する名称欄との組みを用いて表現される。番号欄は、再生可能な字幕の番号入力(図中の＃01,＃02,＃03)を受け付けるものである。名称欄は、字幕の抽象的な名称(Japanese,English,Japanese[吹替])を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、字幕の詳細が規定される。
【０１１１】
また本画面では、「キャンセル」ボタン、「決定」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。このパネルを介した入力により、アプリケーションと連動するプレイリストの詳細が規定されるのである。
これらのGUIに対するユーザ操作に基づき、抽象化コンテンツ１２４を作成することができるので、プログラマは、思いのままに、BD-Jアプリケーションのデバッグに用いられる抽象化コンテンツの仕様を構成することができる。以上が、抽象化コンテンツ作成部１２５についての説明である。
【０１１２】
５.再生制御エンジンスタブ１２６
再生制御エンジンスタブ１２６は、AVデータオーサリング完了前であって、AVデータがない状態でPC上でのデバッグを実行するものである。従って再生制御エンジンスタブ１２６は、BD-Jアプリケーションに対して、以下の項目を提供する。
【０１１３】
- AV再生処理
- 再生状態変化（停止、トリック再生等）などに起因するイベント発生
- PSRの設定値や、Persistent領域の格納内容等、BD-ROM再生装置が保持している情報
これにより、主によるGraphic表示処理、Keyイベント処理などの動作確認を実施すると同時に、AV再生等シミュレーション対象の処理については、そのアルゴリズム（ロジック）について確認することができる。一般に、BD-ROM再生装置の標準モデルは、再生制御エンジン部上に、BDJプラットフォーム部が存在するというレイヤ構成になっている。この再生制御エンジン部は、HD画像の再生を前提にしたハイエンドなものなので、一般のPC１００上での実現が難しく、この代わりとして、PC１００には、再生制御エンジンスタブ１２６が設けられている。
【０１１４】
ここで再生制御エンジンスタブ１２６は、再生制御APIのコールがなされた場合、コールされた再生制御APIの解析を行い、解析結果に基づいて、シミュレーション情報の変更、あるいは、シミュレーション情報からの情報取得を行う。再生エミュレーション情報に変更が発生すると、再生状態変化の通知を行う。このとき発生した変更のすべてをに対して通知する必要はなく、変更内容や再生状態に基づいて通知する内容を動的に変更させる。
【０１１５】
６.シミュレーション情報１２７
シミュレーション情報１２７は、例えば、シミュレートにおける動作条件を、再生制御エンジンスタブ１２６に与えるものであり、『現在時点情報』、『動作状態情報』、『画面配置情報』、『音声出力情報』、『字幕表示情報』を含む。これらは、再生制御エンジンにおいて、PSRの設定値として規定されているものである。
【０１１６】
『現在時点情報』には、例えば、再生ストリーム上での再生位置を示す再生タイムコードと、再生中のプレイリストを特定するプレイリスト番号と、再生対象の映像のチャプター番号と、プレイリストマーク番号とが含まれる。
『動作状態情報』には、例えば、再生処理が再生停止、通常再生、特殊再生、再生一時停止のいずれの状態にあるかを示す再生状態と、時間軸に従って映像が再生されているか時間に逆行して映像が再生されているかを示す再生方向と、映像の速度を示す再生速度とが含まれている。
【０１１７】
『画面配置情報』には、例えば、画面上の擬似再生映像の表示位置を示す再生位置と、画面上に表示される映像のサイズと、再生中の映像のスケーリング倍率を示すスケール情報とが含まれる。
『音声出力情報』には、例えば、音声ストリームの再生音量と、再生中の音声ストリームを特定する音声ストリーム番号とが含まれる。字幕表示情報には、例えば、サブタイトルの表示状況と、表示中のサブタイトル番号とが含まれる。
【０１１８】
７.AV再生画面表示部１２８
AV再生画面表示部１２８は、シミュレーション情報、及び、抽象化コンテンツ１２４に基づいた表示を行う。上述したように、抽象化コンテンツ１２４、シミュレーション情報１２７は、BD-ROMコンテンツや、再生制御エンジンにおける状態設定の代替物に過ぎないので、AV再生画面表示部１２８による表示内容は、例えば単色で塗りつぶした矩形を表示するという、擬似的なものに過ぎない。
【０１１９】
ただし、シミュレーション情報に変更が発生した場合には、表示中の内容にその変更を反映することで、変更に対する影響が、画面上に現れるようにする。
図２２は、AV再生画面表示部１２８による表示内容の一例を示す図である。本図における表記を解説すると、矩形７０１aは再生映像を表示する領域を表しており、矩形７０２aは、ピクチャインピクチャにおけるプライマリビデオの表示位置とサイズを表し、矩形７０３aは、ピクチャインピクチャにおけるセカンダリビデオの表示位置とサイズを表している。文字列７０４aはプライマリビデオの再生と合わせて表示されている字幕の表示を表している。
【０１２０】
８.シミュレーション環境更新部１２９
シミュレーション環境更新部１２９は、ユーザーから指定に基づいてシミュレーション情報を対話的に更新する。シミュレーション環境更新部１２９は、図２３（ａ）に示すような現在時点セットアップメニュー７０１b、図２３（ｂ）に示すような動作状態セットアップメニュー７０１ｃ、図２４（ａ）に示すような画面配置セットアップメニュー８０１a、図２４（ｂ）に示すような音声出力セットアップメニュー８０１b、図２４（ｃ）に示すような字幕表示セットアップメニュー８０１cを表示して、これらの画面に対するユーザ入力を受け付けることで、当該対話的な更新を実現する。
【０１２１】
かかる対話的な更新は、AV再生画面表示部１２８による再生表示中においても、実行することができ、AV再生画面表示部１２８による再生がなされている状態で、リアルタイムに、再生状況を変更することができる。  
ａ.現在時点セットアップメニュー７０１b
図２３（ａ）に示す現在時点セットアップメニュー７０１bは、見出し欄と、これに対応する入力欄との組みを用いて、現在時点を表現している。見出し欄は、『タイムコード』、『カレントプレイリスト』、『カレントチャプター』、『カレントマーク』といった情報要素を用いて現在時点を表すものである。入力欄は、現在時点の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、現在時点として、具体的な値を設定することができる。本図の一例では、『タイムコード』が01:25:43:10、『カレントプレイリスト』が00001[MainMovie]、『カレントチャプター』が＃02[Battle]、『カレントマーク』がCG-EffectInterviewとして設定され、現在時点が表現されていることがわかる。
【０１２２】
また本画面では、「キャンセル」ボタン、「変更反映」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
ｂ.動作状態セットアップメニュー７０１c
図２３（ｂ）に示す動作状態セットアップメニュー７０１cは、見出し欄と、これに対応する入力欄との組みを用いて、再生動作を表現している。見出し欄は、『再生状態』、『再生方向』、『再生速度』といった情報要素を用いて再生動作の状態を表すものである。入力欄は、映像動作の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、再生動作の状態として、具体的な値を設定することができる。本図の一例では、『再生状態』が“特殊再生”、『再生方向』が“順方向”、『再生速度』が“早送り”といった情報を用いて再生動作の状態を表している。
【０１２３】
また本画面では、「キャンセル」ボタン、「変更反映」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
ｃ.画面配置セットアップメニュー８０１a
図２４（ａ）に示す画面配置セットアップメニュー８０１aは、見出し欄と、これに対応する入力欄との組みを用いて、表示位置を表現している。見出し欄は、『サイズ』、『スケール』、『透明度』、『左上座標』といった情報を用いて表示位置を表すものである。入力欄は、映像動作の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、表示位置として、具体的な値を設定することができる。本図の一例では、『サイズ』が1920×1080、『スケール』が1.0倍、『透明度』が０%、『左上座標』が(0,180)に設定されていることがわかる。
【０１２４】
また本画面では、「キャンセル」ボタン、「変更反映」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
ｄ.音声出力セットアップメニュー８０１b
図２４（ｂ）に示す音声出力セットアップメニュー８０１bは、見出し欄と、これに対応する入力欄との組みを用いて、音声設定を表現している。見出し欄は、『ストリーム選択』、『左前の音量』、『中央前の音量』、『右前の音量』、『左後の音量』、『右後の音量』、『左右の音量』といった情報を用いて音声設定を表すものである。入力欄は、音声出力の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、音声出力として、具体的な設定をすることができる。本図の一例では、『ストリーム選択』として＃01[English]が、『左前の音量』として“１５”が、『中央前の音量』として“２０”が、『右前の音量』として“１５”が、『左後の音量』として“１０”が、『右後の音量』として“１０”が、『左右の音量』として、“１０”が設定されていることがわかる。
【０１２５】
また本画面では、「キャンセル」ボタン、「変更反映」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
ｅ.字幕表示セットアップメニュー８０１c
図２４（ｃ）に示す字幕表示セットアップメニュー８０１cは、見出し欄と、これに対応する入力欄との組みを用いて、字幕設定を表現している。見出し欄は、『表示状態』、『ストリーム選択』といった情報を用いて字幕設定を表すものである。入力欄は、字幕の具体的な設定を、受け付けるものであり、かかる入力欄をカーソルで指示して、キー入力をすることで、字幕設定として、具体的な値を設定することができる。本図の一例では、『表示状態』として“表示有り”が、『ストリーム選択』として“＃01[Japanese]”が設定されていることがわかる。また本画面では、「キャンセル」ボタン、「変更反映」ボタンをあわせて表示して、これら画面上での設定を、シミュレーションに反映させるかどうかを、ユーザに選択させるようにしている。
【０１２６】
以上のメニューを介して、シミュレートにおける動作条件を設定したり、変更することができるので、BD-Jアプリケーションの単体テストの効率を高めることができる。
以降、ソフトウェアによる再生制御エンジンスタブ１２６の実装について説明する。再生制御エンジンスタブ１２６は、図２５〜図２８のフローチャートの処理手順を、コンピュータ記述言語で記述することにより、コンピュータ読み取り可能なプログラムを作成して、これをMPUに実行させることで、PC１００内に実装することができる。
【０１２７】
本フローチャートのステップＳ１０１〜ステップＳ１０４は、ループ処理を構成している。本ループ処理は、再生制御APIのコールがなされたか(ステップＳ１０１)、再生状況を変更する要求を受け付けたか(ステップＳ１０２)の判定を行い、現在時点の更新処理を行う(ステップＳ１０３)という処理を、ステッステップＳ１０４がYesと判定されるまで繰り返すものである。
【０１２８】
このステップＳ１０４は、本ループ処理における動作終了判定であり、かかる動作終了がYesと判定されるまで、上述したようなループ処理は、繰り返し実行される。
図２６は、現在時点の更新処理の処理手順を示すフローチャートである。本フローチャートは、動作状態に基づき、現在時点を示すタイムコードを、インクリメント又はデクリメントして(ステップＳ１０５)、ステップＳ１０６に移行する。ステップＳ１０６は、現在時点において、プレイリスト又はチャプター又はマークの切り替わりが発生したかどうかの判定であり、発生しなければステップＳ１０７をスキップするが、発生すれば、ステップＳ１０７において、カレントプレイリスト、カレントチャプター、カレントマークを更新した上で、ステップＳ１０８に移行する。
【０１２９】
ステップＳ１０８は、現在時点が、オーディオ又は字幕又はセカンダリビデオの再生時点に到達したかどうかの判定であり、到達しなければステップＳ１０９をスキップするが、到達すれば、ステップＳ１０９において、AV再生画面を更新した上で、前図のフローチャートにリターンする。
再生制御APIのコールがなされた場合（ステップS１０１がYes）には、再生制御APIコールの解釈を行い（ステップS１１０）、シミュレーション情報の変更処理を行う(ステップＳ１１１)。再生制御APIのコールに対する応答を、アプリケーションに対して送信して（ステップＳ１１２）、ステップS１１３において、アプリケーションに対して状態変化通知処理を行い、ステップS１０１に戻る。
【０１３０】
再生制御APIコールを受け付けなかったが（ステップS１０１がNo）、ユーザー操作による再生状況を変更する要求を受け付けた場合（ステップS１０２がYes）、ステップS１１４において、シミュレーション情報の更新処理を行い、ステップS１１５において、アプリケーションに対して状態変化通知を行い、ステップS１０１に戻る。
図２７（ａ）は、シミュレーション情報変更の詳細手順を示すフローチャートである。本フローチャートにおいて、ステップＳ１１６では、APIコールにて要求された再生制御APIに基づき、シミュレーション情報における情報要素を書き換える。ステップＳ１１７では、このシミュレーション情報の書き換えに伴い、AV再生画面の更新が必要かどうかを判定する。
【０１３１】
シミュレーション情報の書き換えに伴ってAV再生画面の更新が必要な場合（ステップS１１７がYes）、ステップＳ１１８においてAV再生画面を更新した上、メインルーチンにリターンするが、更新が不要な場合、このステップＳ１１８をスキップしてメインルーチンにリターンする。
図２７（ｂ）は、状態変化通知処理の詳細手順を示すフローチャートである。ステップＳ１１９は、シミュレーション情報において書き換えられた情報要素が、通知を要する情報要素であるか否かの判定であり、本ステップがYesであるなら、ステップＳ１２０において、変化を示すイベントをアプリケーションに通知した上、メインルーチンにリターンするが、通知が不要な場合、このステップＳ１２０をスキップしてメインルーチンにリターンする。
【０１３２】
以下、具体例を交えながら、上述したようなフローチャートで示される処理をより詳細に説明する。ここで想定する動作ケースは、BD-Jアプリケーションが、画面左上の隅から下方向に１８０ピクセルだけ移動した位置に、解像度”１９２０×１０８０”のプレイリスト“00001”の再生を、スケール１倍で要求したというものである。
かかる要求を意味する再生制御APIのコールを、BD-Jアプリケーションから受け付けた場合、再生制御エンジンスタブ１２６は、動作状態情報の再生状態を「通常再生」に、再生方向を「順方向」に、再生速度を「通常（×１.０）」に変更し、現在時点情報の再生タイムコードを「００：００：００：００」に、プレイリストを「00001」に、チャプターを「＃０１」に変更する。
【０１３３】
この際、AV再生画面表示部１２８は、サイズが１９２０×１０８０である矩形を画面左上の隅から下方向に１８０ピクセルの位置に表示し、現在時点セットアップメニューと動作状態情報メニューにおける表示内容の更新を行う。また再生制御エンジンスタブ１２６は、APIコールに対するイベントを出力することにより、プレイリスト00001の再生が開始されたことをアプリケーションに通知する。
【０１３４】
ユーザが、現在時点セットアップメニュー７０１bを通じて、再生タイムコード”００：１０：００：００”に現在時点を変更する操作を行った場合、シミュレーション情報に保持されている再生タイムコードを”０１：１０：００：００”に変更する。かかる変更がなされるとAV再生画面表示部１２８は、現在時点セットアップメニュー７０１bにおける再生タイムコードを”０１：１０：００：００”に更新する。
【０１３５】
再生制御エンジンスタブ１２６は、再生制御エンジンに対してAPIコールがなされれば、それに対応するイベントを出力することにより、現在時点がタイムコード”０１：１０：００：００”に変更されたことをBD-Jアプリケーションに通知する。
ユーザが現在時点セットアップメニュー７０１bに対して、現在時点をプレイリストマーク“CG-Effect  Interview”に変更する操作を行った場合、抽象化コンテンツからプレイリストマーク“CG-Effect  Interview”の位置を示すタイムコード”０１：２５：１０：００”を取得し、シミュレーション情報１２７に保持されている再生タイムコードを”０１：２５：１０：００”に変更する。
【０１３６】
これに伴い、AV再生画面表示部１２８は、現在時点セットアップメニュー７０１bの再生タイムコードを”０１：２５：１０：００”に更新する。一方再生制御エンジンスタブ１２６は、BD-Jアプリケーションに対してイベントを出力することにより、再生位置がプレイリストマーク“CG-Effect  Interview”の位置に到達したことをBD-Jアプリケーションに通知する。
【０１３７】
プレイリストマーク“CG-Effect  Interview”への到達通知を受けたBD-Jアプリケーションが、解像度”９６０×１４４０”のプレイリスト“00002”を画面左上の隅から下方向に７６０ピクセル、かつ、右方向に１１６０ピクセルに移動した位置にスケール０.５倍で再生せよと、再生制御エンジンをコールしたものとする。そうするとAV再生画面表示部１２８は、その要求を受けて、４８０×７２０の大きさをもつ矩形を画面左上の隅から下方向に７６０ピクセル、かつ、右方向に１１６０ピクセルの位置に表示し、表示中の情報の更新を行う。
【０１３８】
この際、再生制御エンジンスタブ１２６は、プレイリスト00002の再生が開始されたことをBD-Jアプリケーションに通知する。
以上のように、本実施の形態によれば、AVコンテンツがBD-Jアプリケーションと並行に開発されていて、BD-Jアプリケーション開発者の手元に、AVコンテンツが存在しない場合でも、AV再生制御を行うアプリケーションの動作を確認することができる。
【０１３９】
また、現在再生中の位置をタイムコードによりフレーム単位で指定し管理することが可能であり、映像の表示位置や表示スケールなどAVコンテンツの再生状況を画面上で確認することが可能となる。また、再生位置や再生状態を任意の状態に容易に変更することができるため、AVコンテンツを利用することなく十分な精度でアプリケーションの動作検証、及び、解析・修正を効率的に実施することができる。
【０１４０】
更に、シミュレートの結果、不具合が出ても、全く同じ動作を再現することができるので、バグ原因の検証に便利である。
（第５実施形態）
アプリケーション動作がAVコンテンツの再生映像、あるいは、その再生映像中の特定のフレーム画像に依存しているような場合に、動作検証、解析、修正作業を効率的に実施するための改良に関する実施の形態である。
【０１４１】
先の実施形態では、図２２に示すような図形を利用してAVコンテンツ再生中の画面表示を行っているが、図形を表示するだけでは前記のような動作を行うアプリケーションの動作検証を効率に行うことが困難である。そこで、本実施形態では、画像と、その画像の表示を行うAVコンテンツ上の位置の指定を行うことを可能にしている。
図２８は、シミュレーション情報変更の処理手順を示すフローチャートである。本フローチャートは、図２８は、図２７（ａ）を原図として採用し、これにステップＳ１２０〜ステップＳ１２２を書き加えることで作成されている。これらのステップを書き加えた場所は、ステップＳ１１７と、ステップＳ１１８との間である。
【０１４２】
以降、本フローチャートにおいて、新たに書き加えたステップについて説明する。ステップＳ１２０は、現在時点が指定されているタイムコードに到達したかどうかの判定であり、もし到達すれば、ステップＳ１２１において、指定された映像を取得し、ステップＳ１２２において、指定された画像を利用して表示画面に再生状態の表示を行った上で、ステップＳ１１８に移行する。到達しなければ、これらのステップＳ１２１、ステップＳ１２２をスキップして、ステップＳ１１８に移行する。
【０１４３】
以上のように、本実施形態によれば、ユーザーが予め設定したAVコンテンツ上の任意の位置に再生が到達した場合に、ユーザーが指定した任意の画像を表示することが可能となり、例えばAVコンテンツとして記録されている画像の特定の部分にアプリケーションにより表示されるグラフィックを重畳して表示するといった、AVコンテンツの特定の１フレームとして表示される映像に依存したアプリケーションの動作確認、及び、解析・修正作業を効率的に実施することができる。
【０１４４】
(第６実施形態)
本実施形態は、第１実施形態に示したBD-ROMコンテンツ(AVコンテンツ)の詳細を開示する実施形態である。上述したようにBD-ROMコンテンツは、図２９のようなディレクトリ及びファイルから構成される。
図２９は、BD-ROMの内部構成を示す図である。本図の第２段目は、BD-ROMを示す。ディレクトリ構造を用いてBD-ROMの応用層フォーマット(アプリケーションフォーマット)を表現すると、図中の第１段目のようになる。この第1段目においてBD-ROMには、Rootディレクトリの下に、BDVIDEOディレクトリがある。
【０１４５】
このBDVIDEOディレクトリの配下には、更にPLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリと呼ばれる3つのサブディレクトリが存在する。
PLAYLISTディレクトリには、拡張子mplsが付与されたファイル(00001.mpls)がある。
CLIPINFディレクトリには、拡張子clpiが付与されたファイル(00001.clpi)がある。
STREAMディレクトリには、拡張子m2tsが付与されたファイル(00001.m2ts)がある。
【０１４６】
以上のディレクトリ構造により、互いに異なる種別の複数ファイルが、BD-ROM上に配置されていることがわかる。
以降、これらのファイルのそれぞれに対する説明を行う。図中のxxxxx.m2tsは、MainClip、SubClipを格納したファイルである。
先ず始めに、MainClipの内部構成についての説明する。図３０は、拡張子.m2tsが付与されたファイルがどのように構成されているかを模式的に示す図である。拡張子.m2tsが付与されたファイル(00001.m2ts)は、AVClipを格納している。AVClipはMPEG2-TransportStream形式のデジタルストリームである。このデジタルストリームは、デジタル化された映像、デジタル化された音声を(上１段目)、PESパケットからなるエレメンタリストリームに変換し(上２段目)、更にTSパケットに変換して(上３段目)、同じく字幕系のプレゼンテーショングラフィクスストリーム(PresentatiionGraphics(PG)ストリーム)及び対話系のインタラクティブグラフィクスストリーム(InteractiveGraphics(IG)ストリーム)を(下１段目、下２段目)、TSパケットに変換して(下３段目)、これらを多重化することで構成される。
【０１４７】
続いて、以上のように構成されたAVClipが、BD-ROMにどのように書き込まれるかを説明する。図３１は、AVClipを構成するTSパケットがどのような過程を経てBD-ROMに書き込まれるかを示す。本図の第１段目にAVClipを構成するTSパケットを示す。
AVClipを構成する188バイトのTSパケットは、第２段目に示すように4バイトのTS_extra_header(図中のハッチング部)、が付されて、192バイト長のSourceパケットになる。このTS_extra_headerは、当該TSパケットのデコーダ入力時刻情報を示すArrival_Time_Stampを含む。
【０１４８】
AVClipを構成するSourceパケットは、第3段目におけるAVClipにおいて、1つ以上の“ATC_Seuqence”を構成する。“ATC_Seuqence”とは、Sourceパケットの配列であって、そのArrival_Time_Stampが参照しているArrival_Time_Clockに、不連続点(noarrivaltime-base discontinutiy)が存在しないものをいう。いいかえれば、そのArrival_Time_Stampが参照しているArrival_Time_Clockに、連続性が存在するSourceパケット列を“ATC_Seuqence”という。
【０１４９】
かかるATC_SeuqenceがAVClipになり、xxxxx.m2tsというファイル名でBD-ROMに記録される。
かかるAVClipは、通常のコンピュータファイル同様、1つ以上のファイルエクステントに分割され、BD-ROM上の領域に記録される。第4段目はAVClipがどのようにBD-ROMに記録されるかを模式的に示す。この第4段目においてファイルを構成する各ファイルエクステントは、予め定められたＳextent以上のデータ長を有する(図中の数式参照)。
【０１５０】
図３２は、BD-ROMの物理単位と、1つのファイルエクステントを構成するSourceパケットとの対応関係を示す図である。第２段目に示すように、BD-ROM上には複数セクタが形成されている。ファイルエクステントを構成するSourceパケットは、第1段目に示すように、32個毎にグループ化されて、連続する3つのセクタに書き込まれる。32個のSourceパケットからなるグループは、6144バイト(=32×192)であり、これは3個のセクタサイズ6144バイト(=2048×3)と一致する。3個のセクタに収められた32個のSourceパケットを“AlignedUnit”といい、BD-ROMへの書き込みは、AlignedUnit単位でなされる。
【０１５１】
第３段目においてセクタは、32個単位で誤り訂正符号が付され、ECCブロックを構成する。再生装置はAligned Unitの単位でBD-ROMをアクセスする限り、32個の完結したSourceパケットを得ることができる。以上がBD-ROMに対するAVClipの書き込みのプロセスである。
MainClipに多重化されるエレメンタリストリームについて、更に詳しく説明する。
【０１５２】
図３３は、MainClipに多重化されるエレメンタリストリームを示す図である。MainClipのSTC-Sequenceに多重化されるエレメンタリストリームは、0x1011のPIDをもつPrimaryビデオストリーム、0x1100から0x111FまでのPIDをもつプライマリオーディオストリーム、0x1200から0x121FまでのPIDをもつ32本のPGストリーム、0x1400から0x141FまでのPIDをもつ32本のIGストリーム、0x1B00から0x1B1FまでのPIDをもつ32本のSecondaryビデオストリームである。
【０１５３】
以降、これらのビデオストリーム、オーディオストリーム、PGストリーム、IGストリームについて説明する。
＜プライマリビデオストリーム＞
プライマリビデオストリームは、映画作品の本編を構成するストリームであり、SD画像、HD画像であるピクチャデータから構成される。ビデオストリームには、VC-1のビデオストリーム、MPEG4-AVCのビデオストリーム、MPEG2-Videoのビデオストリームといった形式が存在する。MPEG4-AVCのビデオストリームでは、IDRピクチャ,Iピクチャ,Pピクチャ,Bピクチャに、PTS、DTSといったタイムスタンプが付され、このピクチャの単位で、再生制御がなされる。このように、PTS、DTSが付されて、再生制御の単位となる、ビデオストリームの一単位を“VideoPresentationUnit”という。
【０１５４】
＜セカンダリビデオストリーム＞
セカンダリビデオストリームは、映画作品のコメンタリィ等を構成するストリームであり、このセカンダリビデオストリームの再生映像を、プライマリビデオストリームの再生映像内に合成することで、ピクチャインピクチャが実行される。ビデオストリームには、VC-1のビデオストリーム、MPEG4-AVCのビデオストリーム、MPEG2-Videoのビデオストリームといった形式が存在し、“VideoPresentationUnit”をもつ。セカンダリビデオストリームのフォーマットには、525/60ビデオフォーマット、625/50ビデオフォーマット、1920×1080フォーマット、1280×720フォーマットがある。
【０１５５】
＜プライマリオーディオストリーム＞
プライマリオーディオストリームは、映画作品の主音声を表すストリームであり、LPCMオーディオストリーム、DTS-HDオーディオストリーム、DD/DD+オーディオストリームやDD/MLPオーディオストリームといった形式が存在する。オーディオストリームにおけるオーディオフレームに、タイムスタンプが付され、このオーディオフレームの単位で、再生制御がなされる。このように、タイムスタンプが付されて、再生制御の単位となる、オーディオストリームの一単位を“AudioPresentationUnit”という。尚、BD-ROMには記録されていないが、映画作品の副音声を表すようなオーディオストリームを、セカンダリオーディオストリームという。
【０１５６】
＜PGストリーム＞
PGストリームは、言語毎の字幕を構成するグラフィクスストリームであり、英語、日本語、フランス語というように複数言語についてのストリームが存在する。
＜IGストリーム＞
IGストリームは、対話制御を実現するグラフィクスストリームである。IGストリームにて定義される対話制御は、DVD再生装置上の対話制御と互換性がある対話制御である。
【０１５７】
本図に示した各エレメンタリストリームのように、プライマリビデオストリームと同じAVClipに多重化されるエレメンタリストリームを、“In_MUXストリーム”という。
以上で、MainClipについての説明を終える。続いて、SubClipの内部構成についての説明する。
SubClipには、ビデオストリーム、オーディオストリーム、PGストリーム、IGストリームという4種類のエレメンタリストリームが多重化されている。このようにAVClipに多重化されるエレメンタリストリームには、どのようなものがあるかを詳細に説明する。
【０１５８】
図３４は、SubClipに多重化されるエレメンタリストリームを示す図である。SubClipに多重化されるエレメンタリストリームは、0x1800のPIDをもつtextST(textSubTitle(テキスト字幕))ストリーム、0x1A00から0x1A1FまでのPIDをもつプライマリオーディオストリーム、0x1B00から0x1B1FまでのPIDをもつ32本のOut_of_MUX_Secondaryビデオストリーム、0x1200から0x121FまでのPIDをもつ32本のPGストリーム、0x1400から0x141FまでのPIDをもつ32本のIGストリームである。この図３４に示したエレメンタリストリームのように、プライマリビデオストリームと異なるAVClipに多重化されるエレメンタリストリーム全般を、“Out_of_MUXストリーム”という。
【０１５９】
＜BD-ROMの構成その２.Clip情報＞
続いて拡張子.clpiが付与されたファイルについて説明する。拡張子.clpiが付与されたファイル(00001.clpi)は、Clip情報を格納している。Clip情報は、個々のAVClipについての管理情報である。図３５は、Clip情報の内部構成を示す図である。本図の左側に示すようにClip情報は、
i)AVClipについての情報を格納した『ClipInfo()』、ii)ATC Sequence,STC Sequenceに関する情報を格納した『SequenceInfo()』iii)Program Sequenceに関する情報を格納した『Program Info()』iv)『Characteristic PointInfo(CPI())』からなる。
【０１６０】
ClipInfoには、このClip情報が参照するAVClipのアプリケーションタイプ（application_type）がある。かかるClipInfoを参照することで、アプリケーションタイプによってMainClipかSubClipかや、動画を含んでいるのか静止画(スライドショー)を含んでいるのかなどが識別できる。またClipInfoには、上述したTS_recording_rateが記述されている。
Sequence Infoは、AVClipに含まれる、1つ以上のSTC-Sequence、ATC-Sequenceについての情報である。これらの情報を設けておくことの意義は、STC、ATCの不連続点を、予め再生装置に通知するためである。つまりかかる不連続点が存在すると、AVClip内において同じ値のPTS,ATSが出現する可能性があり、再生時に不都合が生じる。STC,ATCが連続しているのは、トランスポートストリームのうち、どこからどこまでであるかを示すため、SequenceInfoは設けられている。
【０１６１】
Program Infoとは、Program内容が一定である区間(Program Sequence)を示す情報である。Programとは、同期再生のための時間軸を共有し合うエレメンタリーストリーム同士の集まりである。ProgramSequence情報を設けておくことの意義は、Program内容の変化点を、予め再生装置に通知するためである。ここでのProgram内容の変化点とは、ビデオストリームのPIDが変化したり、ビデオストリームの種類がSD画像からHD画像に変化している点等をいう。
【０１６２】
続いてCharacteristic Point Infoについて説明する。図中の引き出し線cu2は、CPIの構成をクローズアップしている。引き出し線cu2に示すように、CPIは、Ne個のEP_map_for_one_stream_PID(EP_map_for_one_stream_PID[0]〜EP_map_for_one_stream_PID[Ne-1])からなる。これらEP_map_for_one_stream_PIDは、AVClipに属する個々のエレメンタリストリームについてのEP_mapである。EP_mapは、1つのエレメンタリストリーム上において、AccessUnitが存在するエントリー位置のパケット番号(SPN_EP_start)を、エントリー時刻(PTS_EP_start)と対応づけて示す情報である。図中の引き出し線cu3は、EP_map_for_one_stream_PIDの内部構成をクローズアップしている。
【０１６３】
これによると、EP_map_for_one_stream_PIDは、Nc個のEP_High(EP_High(0)〜EP_High(Nc-1))と、Nf個のEP_Low(EP_Low(0)〜EP_Low(Nf-1))とからなることがわかる。ここでEP_Highは、AccessUnit(Non-IDRIピクチャ、IDRピクチャ)のSPN_EP_start及びPTS_EP_startの上位ビットを表す役割をもち、EP_Lowは、AccessUnit(Non-IDRIピクチャ、IDRピクチャ)のSPN_EP_start及びPTS_EP_startの下位ビットを示す役割をもつ。
【０１６４】
図中の引き出し線cu4は、EP_Highの内部構成をクローズアップしている。この引き出し線に示すように、EP_High(i)は、EP_Lowに対する参照値である『ref_to_EP_Low_id[i]』と、AccessUnit(Non-IDRIピクチャ、IDRピクチャ)のPTSの上位ビットを示す『PTS_EP_High[i]』と、Access Unit(Non-IDR Iピクチャ、IDRピクチャ)のSPNの上位ビットを示す『SPN_EP_High[i]』とからなる。ここでiとは、任意のEP_Highを識別するための識別子である。
【０１６５】
図中の引き出し線cu5は、EP_Lowの構成をクローズアップしている。引き出し線cu5に示すように、EP_Lowは、対応するAccess UnitがIDRピクチャか否かを示す『is_angle_change_point(EP_Low_id)』と、対応するAccessUnitのサイズを示す『I_end_position_offset(EP_Low_id)』と、対応するAccessUnit(Non-IDR Iピクチャ、IDRピクチャ)のPTSの下位ビットを示す『PTS_EP_Low(EP_Low_id)』と、対応するAccessUnit(Non-IDRIピクチャ、IDRピクチャ)のSPNの下位ビットを示す『SPN_EP_Low(EP_Low_id)』とからなる。ここでEP_Low_idとは、任意のEP_Lowを識別するための識別子である。
【０１６６】
＜Clip情報の説明その２.EP_map＞
以下、具体例を通じて、EP_mapについて説明する。図３６は、映画のビデオストリームに対するEP_map設定を示す図である。第1段目は、表示順序に配置された複数のピクチャ(MPEG4-AVCに規定されたIDRピクチャ、Iピクチャ、Bピクチャ、Pピクチャ)を示し、第2段目は、そのピクチャにおける時間軸を示す。第4段目は、BD-ROM上のTSパケット列を示し、第3段目は、EP_mapの設定を示す。
【０１６７】
第2段目の時間軸において、時点t1〜t7に、Access UnitとなるIDRピクチャ及びIピクチャが存在するものとする。そしてこれらのt1〜t7の時間間隔が、1秒程度であるとすると、映画に用いられるビデオストリームにおけるEP_mapは、t1〜t7をエントリー時刻(PTS_EP_start)として示し、これに対応づけてエントリー位置(SPN_EP_start)を示すよう、設定される。  
【０１６８】
＜PlayList情報＞
拡張子“mpls”が付与されたファイル(00002.mpls)について説明する。本ファイルは、MainPath、Subpathと呼ばれる2種類の再生経路を束ねたものをPlaylist(PL)として定義する情報である。図３７（ａ）は、PlayList情報のデータ構造を示す図であり、本図に示すようにPlayList情報は、MainPathを定義するMainPath情報(MainPath())と、チャプターを定義するPlayListMark情報(PlayListMark())と、Subpathを定義するSubpath情報(Subpath())と、その他の拡張データ(Extention_Data)からなる。
【０１６９】
＜PlayList情報の説明その１.MainPath情報＞
先ずMainPathについて説明する。MainPathは、プライマリビデオたるビデオストリームやオーディオストリームに対して定義される再生経路である。
MainPathは、矢印mp1で示すように複数のPlayItem情報＃1・・・・＃mから定義される。PlayItem情報は、MainPathを構成する1つの論理的な再生区間を定義する。PlayItem情報の構成は、引き出し線hs1によりクローズアップされている。
【０１７０】
この引き出し線に示すようにPlayItem情報は、再生区間のIN点及びOut点が属するAVClipの再生区間情報のファイル名を示す『Clip_Information_file_name[0]』と、AVClipの符号化方式を示す『Clip_codec_identifier[0]』と、PlayItemがマルチアングルを構成するか否かを示す『is_multi_angle』と、このPlayItem(カレントPlayItem)と、その1つ前のPlayItem(previousPlayItem)との接続状態を示す『connection_condition』と、このPlayItemが対象としているSTC_Sequenceを一意に示す『ref_to_STC_id[0]』と、再生区間の始点を示す時間情報『In_time』と、再生区間の終点を示す時間情報『Out_time』と、このPlayItemにおいてマスクすべきユーザオペレーションがどれであるかを示す『UO_mask_table』と、このPlayItemの途中へのランダムアクセスを許可するか否かを示す『PlayItem_random_access_flag』と、このPlayItemの再生終了後、最後のピクチャの静止表示を継続するか否かを示す『Still_mode』と、PlayItemがマルチアングルを構成する場合、かかるマルチアングルを構成する複数のAVClipを示す『Multi_Clip_entries』と、『STN_table』とから構成される。
【０１７１】
図３７（ｂ）は、Multi_Clip_entriesの内部構成を示す図である。本図に示すように、Multi_Clip_entriesは、マルチアングル区間におけるアングル総数を示す『number_of_angles』、アングル映像において、異なる音声を再生させるかどうかを示す『is_different_audio』を有しており、『Clip_codec_identifier[1]』、『Clip_Information_file_name[1]』、『ref_to_STC_id[1]』〜『Clip_codec_identifier[N]』、『Clip_Information_file_name[N]』、『ref_to_STC_id[N]』を含む。
【０１７２】
これらMulti_Clip_entriesにおける『Clip_codec_identifier』、『Clip_Information_file_name』、『ref_to_STC_id[0]』のそれぞれは、マルチアングル区間において、個々のアングル映像を構成するAVClipに対応している。
以降、PlayListMark情報について説明をはじめる。
図３８は、PlayList情報におけるPlayListMark情報の内部構成を示す図である。本図の図中の引き出し線pm0に示すように、PlayListMark情報は、複数のPLMark情報(＃1〜＃n)からなる。PLmark情報(PLmark())は、PL時間軸のうち、任意の位置を、チャプター点として指定する情報である。引き出し線pm1に示すようにPLmark情報は、チャプター指定の対象たるPlayItemを示す『ref_to_PlayItem_Id』と、そのPlayItemにおける、チャプター位置を時間表記により示す『mark_time_stamp』とを含む。
【０１７３】
図３９は、AVClipと、PlayList情報との関係を示す図である。第2段目から第5段目は、EP_mapにて参照されているビデオストリームを示す。
PlayList情報は、PlayItem情報＃1,＃2という2つのPlayItem情報を含んでおり、これらPlayItem情報＃1,＃2のIn_time,Out_timeにより、2つの再生区間が定義されることになる。これらの再生区間を配列させると、AVClip時間軸とは異なる時間軸が定義されることになる。これが第1段目に示すPlayList時間軸である。このように、PlayItem情報の定義により、AVClipとは異なる再生経路の定義が可能になる。
【０１７４】
本図の第1段目は、PLMark情報と、PL時間軸とを示す。この第1段目には、2つのPLMark情報＃1〜＃2が存在する。矢印kt1,2は、PLMark情報のref_to_PlayItem_Idによる指定を示す。この矢印からもわかるようにPLMark情報のref_to_PlayItem_Idは、参照するPlayItemを指定していることがわかる。また、Mark_time_Stampは、当該PlayItem時間軸のうち、Chapter＃1,＃2になるべき時点を示す。このように、PLMark情報は、PlayItem時間軸上に、チャプター点を定義することができる。
【０１７５】
＜PlayList情報の説明その１.Subpath情報＞
MainPathが、プライマリビデオたるMainClipに定義される再生経路であるのに対し、Subpathは、MainPathと同期すべきSubClipに対して定義される再生経路である。
図４０は、Subpath情報の内部構成をクローズアップして示す図である。本図における矢印hc0に示すように各Subpathは、SubClipの類型を示すSubPath_typeと、1つ以上のSubPlayItem情報(・・・SubPlayItem()・・・)とを含む。
【０１７６】
図中の引き出し線hc1は、SubPlayItem情報の構成をクローズアップしている。
SubPlayItemは、メインパスから分離した、1以上のエレメンタリストリーム再生パスを定義し、当該パスをメインパスとどのように同期するかという類型を表現するのに使われる。SubPlayItemで使用されるのが、ThePrimaryaudio / PG / IG / Secondary audio / Secondary video のサブパスであるなら、これらのSubPlayItemは、PlayList中のPlayItemを使っているメインパスと同期することになる。このエレメンタリストリーム再生のためのサブパスによって使われるエレメンタリストリームは、MainPath側のPlayItemによって使われるMainClipから分離したClip、つまりSubClipに多重化される。
【０１７７】
以降、SubPlayItemの内部構成について説明する。SubPlayItem情報は、図中の矢印hc1に示すように『Clip_information_file_name[0]』、『Clip_codec_identifier[0]』、『ref_to_STC_id[0]』、『SubPlayItem_In_time』、『SubPlayItem_Out_time』、『sync_PlayItem_id』、『sync_start_PTS_of_PlayItem』からなる。
『Clip_information_file_name[0]』は、Clip情報のファイル名を記述することにより、SubPlayItemに対応するSubClipを一意に指定する情報である。
【０１７８】
『Clip_codec_identifier[0]』は、AVClipの符号化方式を示す。
『ref_to_STC_id[0]』は、このSubPlayItemが対象としているSTC_Sequenceを一意に示す。
『SubPlayItem_In_time』は、SubClipの再生時間軸上における、SubPlayItemの始点を示す情報である。
【０１７９】
『SubPlayItem_Out_time』は、SubClipの再生時間軸上における、SubPlayItemの終点を示す情報である。
『sync_PlayItem_id』は、MainPathを構成するPlayItemのうち、本SubPlayItemが同期すべきものを一意に指定する情報である。SubPlayItem_In_timeは、このsync_PlayItem_idで指定されたPlayItemの再生時間軸上に存在する。
【０１８０】
『sync_start_PTS_of_PlayItem』は、sync_PlayItem_idで指定されたPlay Itemの再生時間軸上において、SubPlayItem_In_timeで指定されたSubPlayItemの始点が、どこに存在するかを45KHzの時間精度で示す。あるSubPlayItemがセカンダリビデオストリーム上の再生区間を定義していて、そのSubPlayItemのsync_start_PTS_of_PlayItemが、PlayItem時間軸における一時点を示している場合、そのSubPlayItemは、“同期ピクチャインピクチャ”を実現することになる。
【０１８１】
＜SubPath情報についての詳細その２.三者の関係＞
ここでの三者とは、ローカルストレージ２０２上のSubClip、ローカルストレージ２０２上のPlayList情報、BD-ROM上のMainClipの三者をいう。
図４１は、ローカルストレージ上のSubClipと、ローカルストレージ２０２上のPlayList情報と、BD-ROM上のMainClipとの対応を示す図である。本図において第1段目は、ローカルストレージ２０２上に存在するSubClipを示す。この第1段目に示すように、ローカルストレージ２０２上のSubClipには、セカンダリビデオストリーム、セカンダリオーディオストリーム、PGストリーム、IGストリームといった種別がある。これらのうち何れかが、SubPathとして同期再生に供されることになる。
【０１８２】
第2段目は、PlayList情報により定義される2つの時間軸を示す。第2段目のうち下側の時間軸は、PlayItem情報により定義されるPlayList時間軸を示し、上側の時間軸はSubPlayItemにより定義されるSubPlayItem時間軸を示す。
本図に示すように、SubPlayItem情報のSubPlayItem_Clip_information_file_nameは、STREAMディレクトリに格納された.m2tsファイルに多重化されたOut-of-MUXストリームのうち、どれを再生区間指定の対象として選ぶかという、SubClip選択の役割を果たしていることがわかる。
【０１８３】
そしてSubPlayItem.IN_time、SubPlayItem.Out_timeは、SubClip上の、再生区間の始点及び終点を定義するという役割を果たしていることがわかる。
矢印Sync_PlayItem_Idは、どのPlayItemとの同期を意図しているかという同期指定の役割を果たし、sync_start_PTS_of_PlayItemは、PlayItem時間軸上におけるSubPlayItem_In_timeの位置を決める役割を果たす。
【０１８４】
以上が、SubPath情報についての説明である。
＜STN_table＞
BD-ROM及びローカルストレージ２０２におけるPlayList情報において特徴的であるのは、STN_Tableである。以降、ローカルストレージ２０２上のPlayList情報について説明する。
【０１８５】
STN_tableは、PlayItem情報のClip_Information_file_nameで指定されているAVClipに多重化された複数In_MUXストリーム、SubPlayItem情報のClip_Information_file_nameで指定されているOut_of_MUXストリームのうち、再生可能なものを示すテーブルである。STN_tableは、MainClipに多重化されている複数In_MUXストリーム、SubClipに多重化されているOut_of_MUXストリームのそれぞれについてのStream_entryを、Stream_attributeと対応付けることで構成される。
【０１８６】
以降、extention_dataの内部構成について説明する。このextention_dataは、ピクチャインピクチャのためのメタデータである、PiP_metadataを格納している。図４２は、PiP_metadataの内部構成を示す図である。引出線hm1は、PiP_metadataの内部構成をクローズアップしている。この引出線hm1に示すように、PiP_metadataは、number_of_metadata_block_entriesと、n1個のmetadata_block_headerと、n2個のPiP_metadata_blockとから構成される。
【０１８７】
引出線hm2は、metadata_block_headerの内部構成をクローズアップして示している。つまり、metadata_block_headerは、同一のクラス構造体から生成した複数のインスタンスであり、その内部構成は、どれも、この引き出し線hm2に示すものとなる。以下、metadata_block_headerを構成する各フィールドについて説明する。
ref_to_PlayItem_id[k]:
ピクチャインピクチャの対象となるべきPlayItem[k]の PlayItem_id を示すフィールドである。
【０１８８】
ref_to_secondary_video_stream_id[k]: 
ref_to_PlayItem_id[k] で参照されるPlayItem の STN_table で定義されるsecondary_video_stream_id値のうち、このピクチャインピクチャで再生に供するものを示すフィールドである。
pip_timeline_type[k]: 
PlayItem時間軸におけるSync_Start_PTS_of_PlayItemの写像点を、ピクチャインピクチャ実行タイミングの基準とするか、SubPlayItemの原点を基準とすることを示す。
【０１８９】
以上のように、PlayItem側、SubPlayItem側のどちらを基準とするのが理想的にするかにより、ピクチャインピクチャ再生を好適に実現することができる。
is_luma_key: 
このフラグが 1 の場合、upper_limit_luma_key 値に従って、対応する Secondary ビデオストリームに luma-keying が適用される。luma-keyingとは、セカンダリビデオを構成する個々のピクチャに、被写体部分と、背景部分とが存在する場合、各ピクチャから、被写体部分を抜き出して、プライマリビデオとの合成に供する処理である。
【０１９０】
trick_playing_flag:
これは、プライマリビデオに対するトリック再生の実行中、 ピクチャインピクチャのためのウィンドウを開き続けるか閉じるかのコンテンツプロバイダの意思を示すフラグである。このフラグは同期式ピクチャインピクチャにおいてのみ有効となる。
upper_limit_luma_key: 
これは、luma-keying のための対応する Secondary ビデオ輝度(Y) の上限値を指定するフィールドである。
【０１９１】
続いて、PiP_metadata_blockの内部構成について説明する。引き出し線hm3は、PiP_metadata_blockの構成をクローズアップしている。この引き出し線に示すように、PiP_metadata_block[1]は、k個のPiP_metadata_entry[1]〜[k]と、number_of_pipmetadata_entriesとからなる。
引き出し線hm4は、PiP_metadata_entryの内部構成をクローズアップして示している。つまり、PiP_metadata_entryは、同一のクラス構造体から生成した複数のインスタンスであり、その内部構成は、どれも、pip_metadata_time_stamp[i]と、pip_composition_metadata()とから構成される。
【０１９２】
pip_metadata_time_stamp[i]: 
pip_composition_metadata() が有効である時間間隔の開始時点を示すフィールドである。
k番目のPiP_metadata_block[k]におけるi 番目のpip_composition_metadata() は、最後を除いて、pip_metadata_time_stamp[i]以上pip_metadata_time_stamp[i+1] 未満の時間間隔において有効になる。 PiP_metadata_block[k]() 内の最後のpip_metadata_time_stampの最後のpip_composition_metadata() は、最後のpip_metadata_time_stamp 以上で、ref_to_secondary_video_stream_id[k]で指定されるSubPath の表示終了時刻未満の時間間隔において有効である。また、連続する2 つの pip_metadata_time_stamp 値間の最小の時間間隔は1秒であり、1 秒も含む。
【０１９３】
pip_composition_metadata()は、以下のフィールドからなる。
pip_horizontal_position[i]:
Primary ビデオプレーン上での Secondary ビデオの左上端の画素の水平位置を示す。ビデオプレーンの横幅をvideo_width と表現した場合、本PiP_horizontal_positionにて指定される水平位置は0からvideo_width-1 の範囲となる。
【０１９４】
pip_vertical_postion[i]:
Primary ビデオプレーン上での Secondary ビデオの左上端の画素の垂直位置を示す。ビデオプレーンの縦幅をvideo_heightとした場合、本PiP_vertical_positionで指定される垂直位置は0からvideo_height-1 の範囲となる。
pip_scale[i]: Secondary ビデオのスケーリングタイプを示すフィールドである。スケーリングタイプには、以下のものがある。
【０１９５】
0: 予約
1: スケーリングなし (x1)
2: 1/2スケーリング (x1/2)
3: 1/4スケーリング (x1/4)
4: 1.5倍スケーリング (x1.5)
5: フルスクリーンスケーリング
以上が、PlayList情報の内部構成である。PlayList情報は、上述したような内部構成にて、AVClip、Clip情報を参照しているので、playPlaylistAPIのコール時においては、かかるPlayList情報に基づき、AVClipが正しく再生されるかの検証が可能になる。playPlaylistが正しくなされれば、このPlayList情報に従い、様々なIn_MUXストリーム、Out-of-MUXストリームの再生が可能になる。
【０１９６】
以上で、PlayList情報についての説明を終える。これまでに述べたSubClip,Clip情報,PlayList情報は、BD-ROMだけではなく、ローカルストレージに存在してもよい。PlayList情報がSubClip,Clip情報がローカルストレージに存在する場合、かかるPlayList情報は、BD-ROMに記録されたMainClipに多重化されているPrimaryVideoストリームと、ローカルストレージに記録されたSubClipに多重化されているOut-of-MUXストリームとを、再生するよう規定することで、BD-ROMの格納内容と、ローカルストレージの格納内容とを組合せたAVコンテンツを実現することができる。
【０１９７】
続いて、Movie Objectについて説明する。
＜Movie Object＞
Movie Objectは、MovieObject.bdmvというファイルに格納される。MovieObject.bdmvは、number_of_mobjs個のMovieObjectである『MovieObjects』を含む。MovieObjectは、MenuCallがなされた際、MenuCall後の再生再開を意図しているか否かを示す『resume_intention_flag』、MenuCallをマスクするか否かを示す情報『menu_call_mask』、タイトルサーチ機能をマスクするかを示す『title_search_flag』、ナビゲーションコマンドの個数である『number_of_navigation_command』、number_of_navigation_command個の『ナビゲーションコマンド』からなる。
【０１９８】
ナビゲーションコマンド列は、条件分岐、再生装置における状態レジスタの設定、状態レジスタの設定値取得等を実現するコマンド列からなる。Movie Objectにおいて記述可能なコマンドを以下に示す。
PlayPLコマンド
書式:PlayPL(第１引数，第２引数)
第１引数は、プレイリストの番号で、再生すべきPLを指定することができる。第２引数は、そのPLに含まれるPlayItemや、そのPLにおける任意の時刻、Chapter、Markを用いて再生開始位置を指定することができる。
【０１９９】
PlayItemによりPL時間軸上の再生開始位置を指定したPlayPLメソッドをPlayPLatPlayItem()、
ChapterによりPL時間軸上の再生開始位置を指定したPlayPLメソッドをPlayPLatChapter()、
時刻情報によりPL時間軸上の再生開始位置を指定したPlayPLメソッドをPlayPLatSpecified Time()という。
【０２００】
JMPコマンド
書式：JMP 引数
JMPコマンドは、現在の動的シナリオを途中で廃棄し(discard)、引数たる分岐先動的シナリオを実行するという分岐である。JMP命令の形式には、分岐先動的シナリオを直接指定している直接参照のものと、分岐先動的シナリオを間接参照している間接参照のものがある。
【０２０１】
Movie Objectにおけるナビゲーションコマンドの記述は、DVDにおけるナビゲーションコマンドの記述方式と良く似ているので、DVD上のディスクコンテンツを、BD-ROMに移植するという作業を効率的に行うことができる。
＜sound.bdmv＞
続いてsound.bdmvについて説明する。sound.bdmvは、JavaアプリケーションのGUIフレームワークに対して操作がなされた場合、クリック音として出力すべきオーディオデータ(かかるオーディオデータを、サウンドデータという)が格納されるファイルである。かかるAVClipの再生途切れを避けるには、AVClipの再生がなされていない時点において、ファイルsound.bdmvを予めバッファにプリロードしておく必要がある。つまりAVClipの再生に先立ち、ファイルsound.bdmv内のサウンドデータを、プリロードしておく必要がある。以上がファイルsound.bdmvについての説明である。
【０２０２】
＜Index.bdmv＞
Index.bdmvは、複数のIndex Table entryを含み、あるTitleの再生を開始するにあたって、そのTitleの構成要素となるMovieObjectはどれであるか、又は、そのTitleの構成要素となるBD-JObjectはどれであるのかを定義する。ここでIndexTable entryは、Title_bdjo_file_nameと、Title_object_typeとを含む。Title_bdjo_file_nameは、Titleに関連付けられたBD-JObjectファイルの名前を特定している。BD-JObjectは、ApplicationManagementTable()を有し、このApplicationManagementTable()は、実行すべきアプリケーションのapplication_idを示しているので、IndexTableentry内のTitle_bdjo_file_nameによるBD-J Objectファイルのファイル名が、分岐先となるタイトルにおいて、実行すべきBD-JアプリケーションをBD-JTerminalに指示すると理解することができる。
【０２０３】
Title_object_typeは、“10”に設定されることで、title_idにて特定されるtitleが、BD-J Objectに関連付けられていることを示す。“01”に設定されることで、title_idにて特定されるtitleが、MovieObjectに関連付けられていることを示す。Title_object_typeによる指定、つまり、BD-JObjectに関連付けられるか否かが、このTitle_object_typeに表現される。
【０２０４】
以上が、BD-ROM１００についての説明である。
IDE環境でのシミュレートでは、ダミーデータとはいえ、よりBD-ROMに格納されるものに近いコンテンツを用いる必要がある。そのため、シミュレートに用いる抽象化コンテンツは、上述したようなAVClip、Clip情報、PlayList情報から構成することが望ましい。ただ、各フィールドに対する設定値は、抽象的な識別子を記述しておけばよい。
【０２０５】
ADK環境でのデバッグでは、PC１００内のネットワークドライブにおけるファイルシステム情報を、BD-ROMのファイルシステム情報にマウントすることで、仮想的なパッケージを生成して再生制御エンジンに再生させるので、これらの図に示したAVClip、Clip情報、PlayList情報を制作して、デバッグ装置内のハードディスクに配置しておけば、開発中のBD-Jアプリケーションにより、これらのAVClip、Clip情報、PlayList情報に対する再生が、正常に行われるかどうかを確認することができる。
【０２０６】
本発明が対象とするAVコンテンツは、上述したようなデータ構造から一般化されるAVコンテンツ、つまり、プレイリスト情報のような論理的な区間、経路を規定する情報から、再生を行うべきIn-MUXストリーム、Out-of-MUXストリームを指定することで、オーディオのミキシング再生やピクチャインピクチャ、字幕やメニューの合成表示を動画再生時に実現する全てのコンテンツを含む。かかるコンテンツには、DVD-Videoコンテンツ、HD-DVDコンテンツ等を包含することはいうまでもない。
【０２０７】
続いて、上述したようなAVコンテンツを再生するための、再生エンジン２０５の内部構成について説明する。
図４３は、再生エンジン２０５の内部構成を示す図である。本図に示すように、再生エンジン２０５は、リードバッファ１b,c、ATCカウンタ２a,c,SourceDepacketizer２b,d、ATCカウンタ２b,2d、STCカウンタ３a,c、PIDFilter３b,d、Transport Buffer(TB)４a、ElementaryBuffer(EB)４c、ビデオデコーダ４d、Re-orderBuffer４e、Decoded Picture Buffer４f、ビデオプレーン４g、TransportBuffer(TB)５a、ElementaryBuffer(EB)５c、ビデオデコーダ５d、Re-order Buffer５e、DecodedPicture Buffer５f、ビデオプレーン５g、TransportBuffer(TB)６a,b、バッファ７a,b、オーディオデコーダ８a,b、ミキサー９a、スイッチ１０a,b,c,d,e、BDーJプレーン１１、TransportBuffer(TB)１２a、バッファ１２b、Textbased subtitleデコーダ１２ｃ、Transport Buffer(TB)１３a、PresentationGraphicsデコーダ１３ｂ、PresentationGraphicsプレーン １３c、合成部１５、HDMI送受信部１６、PSRセット１７、PID変換部１８から構成される。
【０２０８】
リードバッファ(RB)１bは、BD-ROMから読み出されたSourceパケット列を蓄積する。
リードバッファ(RB)１cは、ローカルストレージ２０２から読み出されたSourceパケット列を蓄積する。
ATC Counter２aは、MainClipを構成するSourceパケットのうち、再生区間の最初に位置するもののATSを用いてリセットされ、以降ソースデパケッタイザ２bにATCを出力してゆく。
【０２０９】
ソースデパケッタイザ(Source  De-packetizer)２bは、MainClipを構成するSourceパケットからTSパケットを取り出して、送出する。この送出にあたって、各TSパケットのATSに応じてデコーダへの入力時刻を調整する。具体的には、ATCCounter２aが生成するATCの値と、SourceパケットのATS値とが同一になった瞬間にTS_Recording_Rateで、そのTSパケットだけをPIDFilter３bに転送する。
【０２１０】
ATC Counter２cは、SubClipを構成するSourceパケットのうち、再生区間の最初に位置するもののATSを用いてリセットされ、以降ソースデパケッタイザ２dにATCを出力してゆく。
ソースデパケッタイザ(Source  De-packetizer)２dは、SubClipを構成するSourceパケットからTSパケットを取り出して、送出する。この送出にあたって、ATSに応じてデコーダへの入力時刻を調整する。具体的には、ATCCounter２cが生成するATCの値と、SourceパケットのATS値とが同一になった瞬間にTS_Recording_Rateで、そのTSパケットだけをPIDFilter３dに転送する。
【０２１１】
STC Counter３aは、MainClipのPCRによってリセットされ、STCを出力する。
PID Filter３bは、MainClip用の多重分離部であり、ソースデパケッタイザ２bから出力されたSourceパケットのうち、PID変換部１８から通知されたPID参照値をもつものを、夫々ビデオデコーダ４d、ビデオデコーダ５d、オーディオデコーダ８a、PresentationGraphicsデコーダ１３bに出力する。各デコーダは、PIDFilter３bを経由したエレメンタリストリームを受け取って、MainClipのPCRに従いデコードから再生の処理を行う。このようにPIDFilter３bを通過して各デコーダに入力されるエレメンタリストリームは、MainClipのPCRに従って、デコード及び再生に供されることになる。
【０２１２】
STC Counter３cは、SubClipのPCRによってリセットされ、STCを出力する。PIDフィルタ３dは、このSTCを参照して、多重分離を行う。  
PID Filter３dは、SubClip用の多重分離部であり、ソースデパケッタイザ２dから出力されたSourceパケットのうち、PID変換部１８から通知されたPID参照値をもつものを、夫々オーディオデコーダ８b、PresentationGraphicsデコーダ１３bに出力する。このようにPIDFilter３dを通過して各デコーダに入力されるエレメンタリストリームは、SubClipのPCRに従って、デコード及び再生に供されることになる。
【０２１３】
Transport Buffer(TB)４aは、プライマリビデオストリームに帰属するTSパケットがPID Filter３bから出力された際、一旦蓄積されるバッファである。
Elementary Buffer(EB)４cは、符号化状態にあるピクチャ(Iピクチャ、Bピクチャ、Pピクチャ)が格納されるバッファである。
デコーダ(DEC.)４dは、プライマリビデオを構成する個々のピクチャを所定の復号時刻（DTS）ごとにデコードすることにより複数フレーム画像を得て、PrimaryVideoプレーン４gに書き込む。
【０２１４】
Re-order Buffer４eは、復号されたピクチャの順序を、符号化順序から表示順序に入れ替えるためのバッファである。
Decoded Picture Buffer４fは、デコーダ４dのデコードにより得られた非圧縮のピクチャを格納しておくバッファである。
Primary Videoプレーン４gは、プライマリビデオを構成する一ピクチャ分の画素データを格納しておくためのメモリ領域である。画素データは、16ビットのYUV値で表現され、ビデオプレーン４gは、1920×1080という解像度にあたる画素データを格納している。
【０２１５】
Transport Buffer(TB)５aは、セカンダリビデオストリームに帰属するTSパケットがPID Filter３bから出力された際、一旦蓄積されるバッファである。
Elementary Buffer(EB)５cは、符号化状態にあるピクチャ(Iピクチャ、Bピクチャ、Pピクチャ)が格納されるバッファである。
デコーダ(DEC.)５dは、セカンダリビデオを構成する個々のピクチャを所定の復号時刻（DTS）ごとにデコードすることにより複数フレーム画像を得て、SecondaryVideoプレーン５gに書き込む。
【０２１６】
Re-order Buffer５eは、復号されたピクチャの順序を、符号化順序から表示順序に入れ替えるためのバッファである。
Decoded Picture Buffer５fは、デコーダ５dのデコードにより得られた非圧縮のピクチャを格納しておくバッファである。
Secondary Videoプレーン５gは、セカンダリビデオを構成する一ピクチャ分の画素データを格納しておくためのメモリ領域である。
【０２１７】
Transport Buffer(TB)６aは、PID Filter３aから出力されたTSパケットのうち、プライマリオーディオストリームを構成するものを、先入れ先だし式に格納して、オーディオデコーダ８aに供する。
Transport Buffer(TB)６bは、PID Filter３ｂから出力されたTSパケットのうち、セカンダリオーディオストリームを構成するものを、先入れ先だし式に格納して、オーディオデコーダ８bに供する。
【０２１８】
オーディオデコーダ８aは、Transport Buffer(TB)６aに格納されたTSパケットをPESパケットに変換して、このPESパケットに対しデコード処理を行い、非圧縮状態のLPCM状態のオーディオデータを得て出力する。これによりプライマリオーディオストリームにおけるデジタル出力がなされる。
オーディオデコーダ８bは、Transport Buffer(TB)６bに格納されたTSパケットをPESパケットに変換して、このPESパケットに対しデコード処理を行い、非圧縮状態のLPCM状態のオーディオデータを得て出力する。これによりセカンダリオーディオストリームにおけるデジタル出力がなされる。
【０２１９】
ミキサ９aは、オーディオデコーダ８aから出力されるLPCM状態のデジタルオーディオと、オーディオデコーダ８bから出力されるLPCM状態のデジタルオーディオとをミキシングする。
スイッチ１０aは、BD-ROMから読み出されたTSパケット、ローカルストレージ２０２から読み出されたTSパケットのどちらかを、選択的にセカンダリビデオデコーダ５d側に供給する。
【０２２０】
スイッチ１０bは、BD-ROMから読み出されたTSパケット、ローカルストレージ２０２から読み出されたTSパケットのどちらかを、選択的にPresentationGraphicsデコーダ１３b側に供給する。
スイッチ１０dは、PID Filter３bにより多重分離がなされた、プライマリオーディオストリームを構成するTSパケット、PID Filter３dにより多重分離がなされたプライマリオーディオストリームを構成するTSパケットのうちどちらをオーディオデコーダ８aに供給するかを切り換えるスイッチである。
【０２２１】
スイッチ１０eは、PID Filter３bにより多重分離がなされた、セカンダリオーディオストリームを構成するTSパケット、PID Filter３dにより多重分離がなされたセカンダリオーディオストリームを構成するTSパケットのどちらを、オーディオデコーダ８bに供給するかを切り換えるスイッチである。
BD-Jプレーン１１は、BD-JアプリケーションによるGUI描画に用いられるプレーンメモリである。
【０２２２】
Transport Buffer(TB)１２aは、textSTストリームに帰属するTSパケットが一旦蓄積されるバッファである。  
Buffer(TB)１２bは、textSTストリームを構成するPESパケットが一旦蓄積されるバッファである。  
Text Based Subtitleデコーダ１２cは、BD-ROM又はローカルストレージ２０２から読み出されたtextSTストリームにおいて、キャラクタコードを用いて、表現されている字幕をビットマップに展開して、PGプレーン１３cに書き込む。この展開には、BD-ROM１００又はローカルストレージ２０２に格納されているフォントデータが用いられるので、textSTストリームのデコードには、前もってかかるフォントデータを読み込んでおく必要がある。
【０２２３】
Transport Buffer(TB)１３aは、PGストリームに帰属するTSパケットが一旦蓄積されるバッファである。
Presentation Graphics(PG)デコーダ１３ｂは、BD-ROM又はローカルストレージ２０２から読み出されたPGストリームをデコードして、非圧縮グラフィクスをPresentationGraphicsプレーン１３ｃに書き込む。PGデコーダ１３ｂによるデコードにより、字幕が画面上に現れることになる。
【０２２４】
Presentation Graphics(PG)プレーン１３ｃは、一画面分の領域をもったメモリであり、一画面分の非圧縮グラフィクスを格納することができる。
合成部１５は、Primary Videoプレーン４g、Secondary Videoプレーン５g、BDーJプレーン１１、PresentationGraphicsプレーン１３cの格納内容を重ねあわせて出力するものであり、図４４のような内部構成を有する。図４４は、合成部１５の内部構成を示す図である。本図に示すように合成部１５は、1−α3乗算部１５a、Scalling・Positioning部１５b、α3乗算部１５c、加算部１５d、1−α1乗算部１５e、α1乗算部１５f、加算部１５g、1−α2乗算部１５h、α2乗算部１５i、加算部１５ｊから構成される。
【０２２５】
1−α3乗算部１５aは、ビデオデコーダ４ｇに格納されている非圧縮のデジタルピクチャを構成する画素の揮度に、透過率1-α3を乗じる。
Scalling・Positioning部１５bは、ビデオプレーン５ｇに格納されている非圧縮のデジタルピクチャを拡大・縮小する処理(Scalling)を施し、また配置位置を変更する処理(Positioning)を行う。この拡大・縮小は、メタデータにおけるPiP_scaleに基づき、配置位置の変更は、メタデータにおけるPiP_horizontal_position、PiP_vertical_positionに基づく。
【０２２６】
α3乗算部１５cは、Scalling・Positioning部１５bにより、Scalling、Positioningが施された非圧縮のピクチャを構成する画素の揮度に対し、透過率α3を乗じる。
加算部１５dは、α3乗算部１５cにより画素毎に透過率α3が乗じられた非圧縮デジタルピクチャと、1−α3乗算部１５aにより画素毎に透過率1-α3が乗じられた非圧縮デジタルピクチャとを合成して、合成ピクチャを得る。
【０２２７】
1−α1乗算部１５eは、加算部１５dにより合成がなされたデジタルピクチャを構成する画素の揮度に、透過率1-α1を乗じる。
α1乗算部１５fは、Presentation Graphicsプレーン１３ｃに格納されている非圧縮グラフィクスを構成する画素の揮度に、透過率α1を乗じる。
加算部１５gは、1−α1乗算部１５eにより画素毎に透過率1-α1が乗じられた非圧縮デジタルピクチャと、α1乗算部１５fにより画素毎に透過率α1が乗じられた非圧縮グラフィクスとを合成して、合成ピクチャを得る。
【０２２８】
1−α2乗算部１５hは、加算部１５gにより合成がなされたデジタルピクチャを構成する画素の揮度に、透過率1-α2を乗じる。
α2乗算部１５iは、Presentation Graphicsプレーン１３ｃに格納されている非圧縮グラフィクスを構成する画素の揮度に、透過率α2を乗じる。
加算部１５jは、1−α2乗算部１５hにより画素毎に透過率1-α2が乗じられた非圧縮デジタルピクチャと、α2乗算部１５iにより画素毎に透過率α2が乗じられた非圧縮グラフィクスとを合成して、合成ピクチャを得る。
【０２２９】
以上のように合成部１５には、複数の加算部が存在するので、BD-Jアプリケーションが描画した表示内容は、ビデオストリームにおける再生映像と重ね合わされることになる。そのためADK環境においては、AVClipの再生画像と、開発中のBD-Jアプリケーションによる描画内容とが、どのように合成されて出力されるかを確認することができる。
HDMI送受信部１６は、HDMI（HDMI:High Definition Multimedia Interface）を介して接続された他の機器から、その機器に関する情報を受信とすると共に、加算部１５jの合成により得られたデジタル非圧縮のビデオを、ミキサー９aにより合成がなされたオーディオデータと共に、HDMIを介して接続されたTV等の他の機器に送信する。
【０２３０】
PSRセット１７は、再生装置に内蔵されるレジスタであり、64個のBD-ROM Player Setting/Status Register(PSR)と、4096個のGeneralPurposeRegister（GPR)とからなる。BD-ROM Player Setting/Status Registerの設定値(PSR)のうち、PSR4〜PSR8は、現在の再生時点を表現するのに用いられる。64個のBD-ROM再生装置Setting/StatusRegister(PSR)についての詳細は、以下の通りである。
【０２３１】
PSR1：現在選択されているプライマリオーディオストリームのストリーム番号を格納する。
PSR３：現在選択されているアングル番号を格納する。
PSR４：カレントタイトル番号を格納する。
PSR５：カレントチャプター番号を格納する。
【０２３２】
PSR６：カレントプレイリスト番号を格納する。
PSR７：カレントのPlayItem番号を格納する。
PSR８：カレントPTM(Presentation TiMe)を格納する。
PSR13：パレンタルロックの設定を示す。
PSR14：セカンダリオーディオストリームのストリーム番号、セカンダリビデオストリームのストリーム番号を格納する。
【０２３３】
PSR15：オーディオ再生能力を示す。
PSR16：オーディオ再生についての言語設定を示す。
PSR19：国コードを格納している。
PSR20：リージョンコードを格納している。
PSR29：ビデオ再生能力を示す。
【０２３４】
PSR31：プロファイル／バージョン番号を示す。
PID変換部１８は、PSRセット１７に格納されているストリーム番号を、STN_Tableに基づき、PID参照値に変換して、変換結果たるPID参照値をPIDFilter３b、PIDFilter３dに指示する。
以上が、再生エンジン２０５の内部構成である。続いて、再生制御エンジン２０６について説明する。再生制御エンジン２０６は、具体的には、PlayList情報に従って、AVClipを再生させるものである。図４５は、再生制御エンジン２０６の処理手順を示すフローチャートである。本フローチャートは、メソッドplayPlaylistのコール時に実行されるものであり、まずplayPlaylistの引数PlaylistIdにて指定されたmplsファイルが存在するかどうかを判定する(ステップＳ２０１)。もし存在すれば、引数PlaylistIdにて指定されたPlayList情報を構成する.mplsファイルを読み込み(ステップＳ２０２)、引数markIdにて指定されたPlayListMarkが存在するかどうかを判定する(ステップＳ２０３)。
【０２３５】
もし存在すれば、PlayList情報におけるPlayItem情報のうち、引数にて指定されたPlayListMarkが存在するPlayItemをカレントPlayItemとする(ステップＳ２０４)。
ステップＳ２０６〜ステップＳ２１６は、PlayList情報における各PlayItemに対する処理を繰り返すループ構造になっている。このループ構造は、ステップＳ２１５を終了条件としたものであり、カレントPlayItemのIn_Timeに対応するAccessUnitから、カレントPlayItemのOut_Timeに対応するAccessUnitまでを読み出しをBD-ROMドライブに命じ(ステップＳ２０６)、カレントPlayItemにpreviousPlayItemが存在するか否かを判定して(ステップＳ２０７)、判定結果に応じて、ステップＳ２０８の処理、ステップＳ２０９〜ステップＳ２１３の処理を選択的に実行する。具体的には、カレントPlayItemにpreviousPlayItemがなければ(ステップＳ２０７でNo)、カレントPlayItemのうち、引数で指定されたmarkIdからPlayItem_Out_Timeまでの再生をデコーダに命じる(ステップＳ２０８)。
【０２３６】
カレントPlayItemにpreviousPlayItemがあれば(ステップＳ２０７でYes)、ATC_delta1と呼ばれるMainClipのためのオフセット値を算出し(ステップＳ２０９)、それまでのATC_SequenceにおけるATC値(ATC1)に、ATC_delta1を加算することにより、新しいATC_SequenceのATC値(ATC2)を得る(ステップＳ２１０)。
また、上述した、previousPlayItemが存在する場合、MainClipにおけるSTC_Sequenceが切り替わることになる。この切り替えにおいて、STC_delta1と呼ばれるオフセット値を求めて(ステップＳ２１１)、それまでのSTC_SequenceにおけるSTC値(STC1)に、STC_delta1を加算することにより(ステップＳ２１２)、新しいSTC_SequenceのSTC値(STC2)を求める。
【０２３７】
そしてAudio Overrapのミュートをオーディオデコーダ８a,bに指示した上で、PlayItem_In_TimeからPlayItem_Out_Timeまでの再生をデコーダに命じる(ステップＳ２１３）。
ステップＳ２０８、ステップＳ２０９〜ステップＳ２１３のどちらかの処理を実行すればステップＳ２１４を実行する。
ステップＳ２１４は、カレントPlayItemと同期再生しているSubPlayItemが存在していて、現在の再生時点(カレントPTM(PresentationTiMe))が、そのSubPlayItemと、次のSubPlayItemとの境界に達したかを判定する。もしステップＳ２１４がYesになれば、図４６におけるフローチャートの処理手順を実行する。
【０２３８】
ステップＳ２１５は、カレントPlayItemがPlayList情報における最後のPlayItemになったか否かの判定であり、最後のPlayItemでなければ、PlayList情報における次のPlayItemを、カレントPlayItemにして(ステップＳ２１６）、ステップＳ２０６に移行する。以上の処理により、PlayList情報における全てのPlayItemに対して、ステップＳ２０６〜ステップＳ２１５の処理が施されることになる。
【０２３９】
図４６は、PlayList情報におけるSubPlayItem情報に従った再生手順を示すフローチャートである。
ステップＳ２２１〜ステップＳ２２３では、1つのPlayItem中の連続する2つのSubPlayItemのうち、一方のSubPlayItemから、他方のSubPlayItemへと再生が切り替ったとして、その切り替え後のSubPlayItemを、カレントSubPlayItemとする(ステップＳ２２１)。
【０２４０】
そしてカレントSubPlayItemのIn_Timeに相当するAccess Unitから、カレントSubPlayItemのOut_Timeに相当するAccessUnitまでの読み出しをローカルストレージ２０２に命じ(ステップＳ２２２)、カレントSubPlayItem_In_TimeからカレントSubPlayItem_Out_Timeまでの再生をデコーダに命じる(ステップＳ２２３)。以上が、再生制御エンジンについての説明である。
【０２４１】
以降、かかる再生制御エンジンに対するBD-Jアプリケーションの記述について説明する。
以上のようにPSRが規定されているため、BD-Jアプリケーションは、以下のような処理を行う。
1)PSR15に示されるオーディオ再生能力、PSR16に示される言語設定に基づき、プライマリオーディオストリームを選択して、選択されたストリーム番号をPSR1に書き込む処理。
【０２４２】
2)PSR15に示されるオーディオ再生能力、PSR16に示される言語設定に基づき、セカンダリオーディオストリームを選択して、選択されたストリーム番号をPSR14に書き込む処理。
3)PSR29に示されるビデオ再生能力に基づき、セカンダリビデオストリームを選択して、選択されたストリーム番号をPSR14に書き込む処理。
【０２４３】
4)ユーザ操作に基づきアングル番号を決定して、PlayItem情報におけるmulti_clip_entryにて指示されている複数のAVClipの中から、そのアングル番号に対応するものを再生させる処理。
5)PSR13に示されるパレンタルロックの設定に応じたプレイリストを選択して再生する処理
そこで、ECLIPSEを用いたデバッグにおいて、シリアルポートを通じて、これらPSRの格納値の読み書きを実現する。このようなBD-ROMコンテンツの詳細構成やPSRの設定値に応じた統合テストを実行すれば、具体的なレベルで、BD-Jアプリケーションのデバッグを行うことができる。
【０２４４】
またAVコンテンツ及び再生エンジンが、上述したように構成されている場合、単体テスト及び総合テストにおいて、BD-JアプリケーションのどのようなAPI仕様に対して、デバッグを実行すればよいかについて述べる。一般に、Javaアプリケーションのデバッグは、ECLIPSE等におけるデバッグツールを用いることで行われる。ECLIPSEでは、Java(登録商標)アプリケーションを、マイクロソフト社の汎用ＯＳ“Windows(登録商標)”で動作させ、デバッグすることができるからである。
【０２４５】
一方、BD-JアプリケーションのAPIには、GEM for media controlからのBD-J特有の拡張部分を定義しているパッケージがある。このパッケージを、org.bluray.mediaという。org.bluray.mediaにて定義されているイベントリスナには、以下のものがある。
AngleChangeListnerは、AngleChangeイベントをハンドリングするためのインターフェイスである。AngleChangeイベントは、PlayList情報におけるMulti_clip_entriesに従い、複数のアングル映像を切り替える際に生成されるイベントであり、新たに再生対象となった、アングル番号を通知するために、用いられる。
【０２４６】
PanningChangeListnerは、Panning制御の変化通知を受け取るため、アプリケーションに実装される。
PiPStatusListnerは、再生されているプレイリストにおけるPiPステータスイベントをハンドリングするためのインターフェイスである。PiPステータスイベントとは、PlayList情報におけるPiP_meta_block_entryに従ってピクチャインピクチャを実行した際、セカンダリビデオの座標や大きさの変化を通知するイベントである。
【０２４７】
PlaybackListnerは、再生変化の通知を受け取るため、アプリケーションに実装される。
PlaybackListnerにて通知される再生変化には、MarkReached,PlayItemReachedがある。MarkReachedは、PSRにて指示される現在時点がPlayListMarkに到達したことを通知する。PlayItemReachedは、PSRにて指示される現在時点がPlayItemの境界に到達したことを通知する。
【０２４８】
UOMaskTableListnerは、PlayItem情報毎に設定されたUOMaskTableの内容が変化された時、生成されるイベントを受信するため、インプリメントされる。
これらのイベントは、ECLIPSEでは規定されていないから、これらのイベントが発生した際のデバッグを、上述したようなECLIPSEで行うことはできない。
そこで単体テスト時において、デバッグ装置内の再生制御エンジンスタブ１２６は、BD-Jアプリケーションからの再生制御エンジンのコール時において、上述したようなイベントリスナに対するイベントを発生して、BD-Jアプリケーションにおけるイベントリスナが、正常に受信動作を行うようにする。
【０２４９】
また総合テスト時において、BD-Jアプリケーションからの再生制御エンジンのコールがなされ、上述したようなイベントリスナに対するイベントが、再生制御エンジンから出力されれば、このイベントを引数にして標準出力関数のコールを行うことで、かかるイベントを、再生装置からログサーバーターミナルに送信する。こうすることで、かかるイベントを受信した際のイベント名や詳細パラメータを、実行ログとしてログサーバーターミナルに保存させる。
【０２５０】
以上のように本実施形態によれば、AVClip、Clip情報、PlayList情報の具体的な記述に基づき、BD-Jアプリケーションによる描画や、ストリーム選択、ピクチャインピクチャの制御が正当になされるかどうかの動作確認を好適に実現することができる。
また、Javaアプリケーションの汎用デバッグツールでは難しい、BD-Jアプリケーション固有の部分のデバッグを、実現することができるので、BD-Jアプリケーションの開発を促進することができる。
【０２５１】
(第７実施形態)
本実施形態は、先の実施形態に示したAVコンテンツをどのように制作するかについて開示する。かかるAVコンテンツの制作は、オーサリングシステムと呼ばれる専用のシステムでなされる。本システムは、制作スタジオに設置され、ユーザの使用に供される。図４７は、本実施形態に係るオーサリングシステムの内部構成と、本システムにおけるデバッグ装置の位置付けを示す図である。以降、本図を参照しながら、オーサリングシステムについての説明を行う。
【０２５２】
本図に示すようにオーサリングシステムは、タイトル構造作成装置５１、リールセット編集装置５２、BDシナリオ生成装置５３、素材作成/インポート装置５５、 ディスク作成装置５６、検証装置５７、マスター作成部５８といった装置を、構内ネットワークを介して互いに接続することで構成される。
１）タイトル構造作成装置５１
タイトル構造作成装置５１は、BD-ROMに記録されるべき各タイトルがどのようなコンテンツで構成されるかを決定する。本装置による決定は、タイトル構造情報を作成することでなされる。
【０２５３】
２)リールセット編集装置５２
リールセット編集装置５２は、ビデオ、オーディオ、字幕、ボタンアニメーションなど映画として完結する複数のエレメンタリーストリームの関係を決定する。例えば、１本の映画が1本のビデオ、２本のオーディオ、３本の字幕、１本のボタンアニメーションからなる場合、それらで一本の映画となることを指定し、また、映画本編に対して、一部分だけ映像が異なるようなディレクターズカットを指定したり、複数のアングルを持つマルチアングルを設定する。
【０２５４】
３）BDシナリオ生成装置５３
BDシナリオ生成装置５３は、メニュー編集部５３aと、シナリオ編集部５３bとから構成される。
(メニュー編集部５３a)
メニュー編集部５３aは、GUIを経由したユーザ操作に従って、メニューにおけるボタンの配置や、ボタンに付加されるコマンド、ボタンアニメーションなどの機能を作成する。
【０２５５】
(シナリオ編集部５３b)
シナリオ編集部５３bは、GUIを経由したユーザ操作に従った編集処理をタイトル構造作成装置５１によって作成されたタイトル構造情報に施すことにより、シナリオを作成し出力する。ここでシナリオとは、デジタルストリームの再生にあたって、タイトル単位での再生を再生装置に行わせる情報であり、BD-ROMではIndexTable、MovieObject、PlayListとして定義されている情報がシナリオにあたる。BD-ROMシナリオデータには、ストリームを構成する素材情報、再生経路情報、メニュー画面配置、メニューからの遷移情報などを含み、ユーザーはこれらの情報の検証が完了するまでシナリオ編集作業を行う。このシナリオ編集作業では、シナリオ編集部５３bは、タイトル構造情報のプレイリストリストの内容を設定する。
【０２５６】
４）素材作成/インポート装置５５は、字幕作成部５５a、オーディオインポート部５５b、ビデオインポート部５５cから構成される。入力されるビデオ素材、オーディオ素材、字幕用素材、Java(登録商標)プログラムソースコード等を、BD-ROM規格に準拠した形式に変換し、ディスク作成装置５６に受け渡す。
(字幕作成部５５a)
字幕作成部５５aは、字幕と表示タイミング、およびフェードイン/フェードアウトなどの字幕の効果を含む字幕情報ファイルを元にして、BD-ROM規格に準拠したPresentationGraphicsストリームを生成して出力する。
【０２５７】
(オーディオインポート部５５b)
オーディオインポート部５５bは、あらかじめACー3などで圧縮されているオーディオが入力された場合には、対応するビデオに対するタイミング情報などを付加したり、余分なデータを削除する等処理を施した上で出力する。圧縮されていない場合には、ユーザーが指定するフォーマットに変換して出力される。
【０２５８】
(ビデオインポート部５５c)
ビデオインポート部５５cは、あらかじめMPEG2、MPEG4-AVC、VC-1などの方式で圧縮されているビデオストリームが入力された場合、必要に応じて不必要な情報を削除する。また、非圧縮のビデオストリームが入力された場合には、かかるビデオストリームを、ユーザーが指定するパラメーターに従って圧縮した後、出力する。
【０２５９】
６) ディスク作成装置５６
ディスク作成装置５６は、静止画エンコーダー５６b、データベース生成部５６c、マルチプレクサ５６e、フォーマット部５６f、ディスクイメージ作成部５６gから構成される。
(静止画エンコーダー５６b)
静止画エンコーダー５６bは、入力されたBD-ROMシナリオデータに静止画または静止画が保持されている場所が含まれる場合に、入力素材に含まれる静止画用イメージの中から該当する静止画を選択し、BD-ROMに準拠したMPEG２、MPEG４-AVC、VC１のいずれかの形式に変換する。
【０２６０】
(データベース生成部５６c)
データベース生成部５６cは、入力されたBD-ROMシナリオデータを元にして、BD-ROMに準拠したシナリオデータのデータベースを生成する。ここでのデータベースとは、前述のBD-ROMで定義されるIndex.bdmv、Movieオブジェクト、プレイリスト、BD-Jオブジェクトなどの総称である。
【０２６１】
(マルチプレクサ５６e)
マルチプレクサ５６eは、BD-ROMシナリオデータに記述されているビデオ、オーディオ、字幕、メニューを実現する複数のエレメンタリーストリームを多重化して、MPEG２-TS形式のAVClipと呼ばれるデジタルストリームを得る。また、マルチプレクサ５６eは、前記AVClipを出力すると同時に、AVClipに関する情報を持つClip情報を出力する。
【０２６２】
具体的には、AVClipの何パケット目のTSパケットにIピクチャ、IDRピクチャの先頭が存在するかを検出して、この対応付けを作成することでEP_mapを生成する。マルチプレクサ５６eは、自ら生成したEP_mapと、ストリーム毎の音声属性、映像属性などを示す属性情報をペアにしてClip情報を作成する。
(フォーマット部５６f)
フォーマット部５６fは、前述のデータベース、AVClip、PC１００により生成されたBD-Jアプリケーションを入力とし、BD-ROMフォーマットに適合したデータ構造で、ファイルの配置処理を行う。BD-ROMの応用層を規定するディレクトリ構造を作成し、各ファイルを適切な箇所に配置する。この時、フォーマット部５６fは、BD-JアプリケーションとAVClipの関連付けを行う。以上のようなディレクトリ構造を、ユーザからの対話操作に基づいて作成してゆくことで、フォーマット部５６fは、ファイル同士の関連付けを完成させてゆく。
【０２６３】
(ディスクイメージ作成部５６g)
ディスクイメージ作成部５６gは、前述のデータベース、AVClipを入力とし、これらにBD-ROMフォーマットに適合したアドレスに割り付けてボリュームイメージを得る。
６)検証装置５７
検証装置５７は、エミュレーター部５７aとベリファイアー部５７bとからなる。
【０２６４】
エミュレーター部５７aでは、前述のボリュームイメージを入力として、実際の映画コンテンツを再生し、制作者が意図した通りの動作、例えばメニューから本編映画への遷移が正しく行われているか、字幕切り替えやオーディオ切り替えは意図したとおりに動作しているか、映像やオーディオの品質は意図したとおりにできているかなどを検証する。
(ベリファイアー部５７b)
ベリファイアー部５７bでは、前述のボリュームイメージを入力として、制作されたデータが、BD-ROMの規格に準拠しているかどうかを検証する。
【０２６５】
Out_of_MUXストリームでピクチャインピクチャを実現するにあたっては、STN_tableにおいて同時に再生することが許可されている複数のエレメンタリストリームにおける、TSパケットの、1秒当たりの総ビット量を、48Mbit以下に制限せねばならない。この制限が満たされているかどうかを確認するため、ベリファイアー部５７bは、ATC時間軸上の任意の1秒という期間において、ビット量がこの制限以下であるかを確認するこの1秒という単位時間は、“Window”と呼ばれ、ATCSequenceの時間軸上の任意の位置に置かれる。つまり、デコードエレメンタリストリームにおけるビット量は、どのような1秒の期間においても、この48Mbit以下という条件を満たす必要がある。
【０２６６】
オーサリング時には、Sourceパケット列において、かかるWindowを、1パケットずつシフトさせつつ、1秒という期間内の、TSパケットのビット数が、48Mbit以下という制限を満たすかどうかをチェックする。もし、制限を満たせば、次のTSパケットにWindowをシフトさせ、制限を満たさねば、BD-ROM規格に違反していると断定する。そして、かかるシフトを繰り返した結果、WindowのOut_Timeが、最後のSourceパケットに達すれば、当該Sourceパケットは、BD-ROM規格に整合しているとの判定を下すのである。
【０２６７】
このようにボリュームイメージはエミュレーター５７a、およびベリファイアー５７bで検証され、エラーが発見されると、然るべき前工程に戻って作業をやり直す。これら２つの検証過程を経た後、マスター作成部５８を経て、BD-ROMプレス用データが完成し、ディスクの製造を行うプレス工程に入る。
次に図４８を参照しながら、フォーマッティング工程における処理の流れについて説明する。
【０２６８】
ステップS３０１にて、ユーザはタイトル構造作成装置５１を用いてBD-ROMのタイトル構造を設定する。これによりタイトル構造情報が作成される。
ステップS３０３にて、ユーザはタイトルに利用する動画、音声、静止画、字幕情報を用意した後、素材作成/インポート装置５５を利用し、ディスク作成装置５６に対してインポートを行う。
【０２６９】
ステップS３０４にて、IDクラス作成部１１１、Java(登録商標)プログラミング部１１２を用いて、Java(登録商標)タイトル用のJava(登録商標)プログラムソースコード、プログラム付加情報、IDクラスソースコードを作成する。
ステップS３０５にて、ユーザはJava(登録商標)インポート部１１４を利用し、ステップS4にて作成されたJava(登録商標)プログラムソースコード、IDクラスソースコードをディスク作成装置５６にインポートする。
【０２７０】
ステップS３０６にて、ID変換部１１５は、IDクラスソースコード、BD-Jオブジェクト生成情報における記述を、実際のディスク上のタイトル番号、プレイリスト番号に変換する。
ステップS３０７にて、Java(登録商標)プログラムビルド部１１６は、ステップS３０６で出力されたソースコードを利用し、コンパイル処理によってJava(登録商標)プログラムを作成する。尚、ステップS３０６とステッステップＳ３０７はタイトル構造情報にJava(登録商標)タイトルが存在しない場合は、スキップすることが出来る。
【０２７１】
ステップS３０８にて、静止画エンコーダ５６bは、BD-ROMシナリオデータに静止画または静止画が保持されている場所が含まれる場合には、該当する静止画をBD-ROMに準拠したMPEG2、MPEG4-AVC、VC1のいずれかの形式に変換する。
ステップS３０９にて、マルチプレクサ５６eは、BD-ROMシナリオデータに従って、複数のエレメンタリーストリームの多重化を行い、MPEG2-TS形式のAVClipを作成する。
【０２７２】
ステップS３１０にて、データベース生成部５６cは、BD-ROMシナリオデータに従って、BD-ROMに準拠したデータベース情報を作成する。
ステップS３１１にて、フォーマット部５６fは、ステップＳ３０７で作成されたJava(登録商標)プログラム、ステップＳ３０９で作成されたAVClip、ステッステップＳ１０で作成されたデータベースを入力とし、BD-ROMに準拠したフォーマットでファイルの配置を行う。このとき、Java(登録商標)プログラムとAVClipの関連付けを行い、ファイル関連情報を作成する。
【０２７３】
ステップＳ３１２にて、ディスクイメージ作成部５６gは、ファイル関連情報を利用しながら、ステップS３１１によって作成されたファイル群を使い、BD-ROMフォーマットに適合したボリュームイメージを作成する。
ステップS３１３にて、検証装置５７は、ステップS３１２にて作成されたディスクイメージの検証を行う。もしエラーが発生した場合は、然るべき前工程に戻って作業のやり直しを行う。
【０２７４】
以上のようなオーサリングシステムにおいて、デバッグ装置は、フォーマット部５６fによる変換を実行する前に、Java(登録商標)プログラムソースコードからBD-Jアプリケーションを作成して、IDE環境及びADK環境において、動作確認を行うので、上述したような図に示した全体工程におけるやり直しを減らすことができる。
(第８実施形態)
本実施形態は、JARアーカイブファイルの詳細構成を開示する実施形態である。
【０２７５】
図４９（ａ）は、ネットワークドライブのディレクトリ・ファイル構造を示す。このディレクトリ・ファイル構造は、ルートディレクトリ（ROOT）直下、bdromディレクトリ、BDVIDEOディレクトリが置かれるというものである。ディレクトリBDVIDEOには、次の２種類のファイルが記録されている。
（A）BD.ROOT.CERTIFICATE：ディスクルート証明書３０１
これには、ディスクルート証明書のダミーが格納されている。ディスクルート証明書とは、このBD-ROMを作成した作成者が、ルート認証局から配布を受けたルート証明書を、BD-ROMに割り当てたものである。ディスクルート証明書はたとえばX.509の形式で符号されている。X.509の仕様は国際電信電話諮問委員会より発行されており、CCITTRecommendationX.509 (1988), “The Directory -  AuthenticationFramework”に記載されている。BD.ROOT.CERTIFICATEディレクトリには、かかるルート証明書のダミーが存在している。
【０２７６】
（B）00001.JARアーカイブファイル：Java(登録商標)アーカイブファイル３０２
JARアーカイブファイルの内部構成は、図４９（ｂ）のようなディレクトリ及びファイル構成によって表現される。図４９（ｂ）は、JARアーカイブファイルの内部構成を示す図である。  
JARアーカイブファイルのディレクトリ構造は、Rootディレクトリの配下にXlet1ディレクトリと、METAーINFディレクトリとを設け、更にこのXlet1ディレクトリの配下に、クラスファイルを格納したCLASSESディレクトリと、データファイルを格納したDATAディレクトリとを配置するという階層構造になっている。
【０２７７】
これらのCLASSESディレクトリに構成されたファイル(Xlet1.class)と、DATAディレクトリに配置されたファイル(Xlet1.dat)とが、クラスローダにより、仮想マシン内のヒープ領域にロードされることにより、BD-Jアプリケーションを構成することになる。
(i)Xlet1.class:クラスファイル４０１
クラスファイル４０１は、バーチャルマシーン上で実行することができるJava(登録商標)アプリケーションを定義するような構造体を格納したクラスファイル４０１である。
【０２７８】
(ii)MANIFEST.MF：マニフェストファイル４０２
マニフェストファイル４０２は、デジタル証明書に対応するものであり、Java(登録商標)アーカイブファイル３０２の属性、Java(登録商標)アーカイブファイル３０２内のクラスファイル４０１やデータファイルのハッシュ値が記載されているファイルである。Java(登録商標)アーカイブファイル３０２の属性には、クラスファイル４０１のインスタンスである、Java(登録商標)アプリケーションに付与されるアプリID、Java(登録商標)アーカイブファイル３０２を実行するために最初に実行すべきクラスファイル４０１名がある。上記の二つのJava(登録商標)アーカイブファイル３０２の属性が存在しない場合、Java(登録商標)アーカイブファイル３０２中のクラスファイル４０１のインスタンスであるJava(登録商標)アプリケーションを実行しない。
【０２７９】
(iii)SIG-BD.SF：シグネチャファイル４０３、
シグネチャファイル４０３は、マニフェストファイル４０２のハッシュ値が記載されているファイルである。
(iv)SIG-BD.RSA：デジタルシグネチャファイル４０４、
デジタルシグネチャファイル４０４は、「デジタル証明書チェーン」、シグネチャファイル４０３の「署名情報」が記載されているファイルである。
【０２８０】
シグネチャファイル４０３に対する「署名情報」は、署名処理をシグネチャファイル４０３に施すことで得られる。これらの署名処理には、デジタルシグネチャファイル４０４内のデジタル証明書チェーンにおける公開鍵に対応する秘密鍵が用いられる。
「デジタル証明書チェーン」とは、一つ目の証明書（ルート証明書）が二つ目の証明書を署名し、また同じようにn番目の証明書がn+１番目の証明書を署名している形をもつ複数の証明書群である。デジタル証明書チェーンの最後の証明書を「リーフ証明書」と呼ぶ。この構成を利用することにより、ルート証明書から順番に次の証明書を保障していくことにより、デジタル証明書チェーンの最後の証明書までを保障することができる。
【０２８１】
「ルート証明書」は、BD.ROOT.CERTIFICATEファイルに存在するディスクルート証明書３０１と同じ証明書を格納している。
「リーフ証明書」には、組織IDが記載されている。シグネチャファイル４０３は、PKCS＃7という形式により格納されている。PKCS＃7は署名および一つ以上のデジタル証明書を格納するためのファイル形式であり、IETF（Internet  Engineering  Task  Force）より発行されたRFC２３１５に記載されている。RFC２３１５はhttp://www.ietf.org/rfc/rfc2315.txtより参照できる。
【０２８２】
通常、このデジタル証明書チェーンは、1つであるが、後述する権限の提供がある場合、このデジタル証明書チェーンは2つの作られる。これら2つのデジタル証明書チェーンを、第１デジタル証明書チェーン、第２デジタル証明書チェーンと呼ぶ。第１デジタル証明書チェーンのルート証明書は、権限提供を受ける側の組織のディスクルート証明書を示し、リーフ証明書は、権限提供を受ける側の組織の組織IDを示す。第２デジタル証明書チェーンのルート証明書は、権限を提供する側の組織のディスクルート証明書を示し、リーフ証明書は、権限を提供する側の組織の組織IDを示す。一方、権限の提供がない場合、デジタル証明書チェーンは、1つ(第１デジタル証明書チェーン)のみになる。
【０２８３】
マニフェストファイル４０２、シグネチャファイル４０３、デジタルシグネチャファイル４０４の詳細はJava(登録商標)アーカイブファイルの仕様に記載されている。マニフェストファイル４０２、シグネチャファイル４０３、デジタルシグネチャファイル４０４は署名処理および署名検証処理を行うために利用される。最終的にJava(登録商標)アーカイブファイル３０２中のクラスファイル４０１のインスタンスであるJava(登録商標)アプリケーションやパーミッションリクエストファイル４０５をデジタル証明書により署名することが可能になる。以降マニフェストファイル４０２、シグネチャファイル４０３、デジタルシグネチャファイル４０４をまとめて「デジタル証明書による署名」と称する。
【０２８４】
(v)bd.Xlet1.perm:パーミッションリクエストファイル４０５
パーミッションリクエストファイル４０５は、実行されるJava(登録商標)アプリケーションにどのパーミッションを与えるのかの情報を格納するファイルである。具体的に以下の情報を格納する。
（ア）Credential(デジタル信用証明書)
（イ）アプリ間通信の許可情報
以降、（ア）Credentialについて説明する。“Credential”とは、ある組織に帰属する組織ディレクトリ内のファイルを共有化するための情報である。この共有化は、ある組織に属するアプリケーション用ファイルを利用する権限を、他の組織に属するアプリケーションに提供することでなされる。そのためCredentialは、権限を提供する側の組織を示す提供者組織ID、権限を受領する側の組織の識別を示す受領者組織IDを含む。
【０２８５】
図５０（ａ）は、Credentialのデータ構造の一例を示す。Credentialには、ルート認証局から提供者組織に配布されたルート証明書のハッシュ値５０１、提供者組織に割り当てられた提供者組織ID５０２、ルート認証局から受領者に配布された受領者ルート証明書のハッシュ値５０３、受領者組織に割り当てられた受領者組織ID５０４、受領者アプリID５０５、提供ファイルリスト５０６からなる。提供ファイルリスト５０６には、一つ以上の提供ファイル名５０７とアクセス方法５０８（読み取り可・書き込み可）の情報が格納されている。Credentialが有効であるためには署名されなければならない。Credentialの署名にはデジタルシグネチャファイル４０４と同様にPKCS＃7の方式を利用できる。
【０２８６】
図５０（ｂ）は、Credentialの具体的な一例を示す図である。本図におけるCredentialは、ファイル「４/５/scores.txt」に対して読み取り許可、ファイル「４/５/etc/settings.txt」に対して読み書き許可をCredentialにより与えていることになる。  
続いて（イ）アプリ間通信の許可情報について説明する。一つのJava(登録商標)アーカイブファイル３０２に含まれるJava(登録商標)アプリケーションは通常、他のJava(登録商標)アーカイブファイル３０２に含まれるJava(登録商標)アプリケーションとの通信（アプリ間通信）が許可されない。パーミッションリクエストファイル４０５にアプリ間通信の許可が与えられている場合だけアプリ間通信が可能である。
【０２８７】
以上が、パーミッションリクエストファイル４０５についての説明である。続いて、ルート証明書についてのより詳しく説明する。
図５１は、BD-ROMにおいてルート証明書がどのように割り当てられるかを模式的に示す図である。本図の第１段目は、機器（再生装置）と、この機器に装填されるBD-ROMを示し、第２段目は、これら機器及びBD-ROMを作成する業者（BD-ROMの作成者、機器の製造業者）を示す。第３段目は、ルート証明書を管理するルート認証局を示す。
【０２８８】
本図において、BD-ROMの作成者は、ルート認証局からルート証明書の配布を受け(f1)、配布されたルート証明書を、ディスクルート証明書３０１としてBD-ROMに割り当てた上で、このルート証明書をBD.ROOT.CERTIFICATEに格納して、BD-ROMに書き込む(w1)。一方、Java(登録商標)アーカイブファイル３０２を作成するにあたって、このルート証明書と、組織IDを示すリーフ証明書とをSIG-BD.SFに収録して、Java(登録商標)アーカイブファイル３０２に包含させる。
【０２８９】
BD-ROMではなく、Java(登録商標)アーカイブファイル３０２が、WWWサーバからダウンロードされて、再生装置内の記憶装置に書き込まれる場合も同様である。かかるダウンロードは、BD-ROMに記録されたコンテンツのアップデートを目的とするものだが、かかるダウンロードにおいて、BD.ROOT.CERTIFICATEに収録され、ディスクルート証明書３０１として書き込まれているルート証明書と同一性をもつルート証明書を、SIG-BD.SFに格納してJava(登録商標)アーカイブファイルに包含させる。こうすることで、BD-ROMに記録されたコンテンツのアップデートを目的とするJava(登録商標)アーカイブファイル３０２を、ダウンロードにて再生装置に供給する場合も、BD-ROMに割り当てたディスクルート証明書３０１を用いることにより、Java(登録商標)アーカイブファイル３０２の正当性を再生装置に確認させることができる。  
【０２９０】
図５２は、権限の提供がない場合のSIG-BD.RSA、SIG-BD.SF、BD.ROOT.CERTIFICATE、MANIFEST.MFの相互関係を示す図である。本図における矢印d1は、これらのファイルの内部構成の情報要素のうち、同一性があるものを示している。権限の提供がない場合、BD.ROOT.CERTIFICATE内のルート証明書（ディスクルート証明書３０１）は、SIG-BD.RSAにおける第１のデジタル証明書チェーン内のルート証明書と同一性を有したものになる。
【０２９１】
MANIFEST.MFは、クラスファイルXXXX.classを署名し、SIG-BD.SFは、MANIFEST.MFから算出されたハッシュ値を含み、SIG-BD.RSAは、SIG-BD.SFから算出されたハッシュ値を含んでいるので(矢印h1)、これらの署名が正しいかどうかを確認し、これらの図に示す同一性を判定することで、再生装置は、Java(登録商標)アーカイブファイル３０２が正当なものか、改竄が加えられたものかを判断することができる。また権限の提供がないとの想定なので、本図では、bd.XXXX.permを示していない。
【０２９２】
図５３は、権限の提供がある場合のSIG-BD.RSA、SIG-BD.SF、BD.ROOT.CERTIFICATE、MANIFEST.MF、bd.XXXX.permの相互関係を示す図である。本図における矢印d1〜d6は、これらのファイルの内部構成の情報要素のうち、同一性があるものを示している。権限の提供権限の提供があった場合も、BD.ROOT.CERTIFICATE内のルート証明書（ディスクルート証明書）は、SIG-BD.RSAにおける第１のデジタル証明書チェーン内のルート証明書と同一性を有したものになる(矢印d1)。一方、権限の提供があると、BD.ROOT.CERTIFICATE内のディスクルート証明書３０１は、受領者のものになるので、bd.XXXX.permにおけるCredentialの、受領者ルート証明書が、BD.ROOT.CERTIFICATE内のルート証明書と同一性をもつ(矢印d2)。また、Credentialにおける受領者組織IDは、第１のデジタル証明書チェーンにおけるリーフの組織IDと同一性をもつ(矢印d3)。
【０２９３】
bd.XXXX.permにおけるCredentialの、提供者組織のルート証明書は、SIG-BD.RSA内の第２のデジタル証明書チェーンにおけるルート証明書と同一性をもつ(矢印d4)。また、Credentialにおける提供者組織IDは、SIG-BD.RSAの第２のデジタル証明書チェーンにおけるリーフの組織IDと同一性をもつ(矢印d5)。Credentialにおける受領者アプリIDは、bd.XXXX.permにおいてCredential以外の部分に存在するアプリIDと同一性をもつ(矢印d6)。
【０２９４】
MANIFEST.MFは、クラスファイルXXXX.classから算出したハッシュ値を含み、SIG-BD.SFは、MANIFEST.Mから算出したハッシュ値を含み、SIG-BD.RSAは、SIG-BD.SFから取得したハッシュ値を含むので(矢印h1)、これらの署名が正しいかどうかを確認し、これらの図に示す同一性を判定することで、再生装置は、Java(登録商標)アーカイブファイル３０２が正当なものか、改竄が加えられたものかを判断することができる。あらかじめ断っておくが、本実施形態では、ルート証明書の同一性を、それぞれのルート証明書について算出されたハッシュ値を比較し、これらのハッシュ値が一致しているかどうかで判断するものとする。またハッシュ値の算出は一度行えばよく、算出したものをメモリ等に記憶して、利用することが一般的に行われる。ルート証明書からハッシュ値を算出することや、メモリに格納したハッシュ値を取出すことを、ハッシュ値の「取得」と呼ぶ。
【０２９５】
以上が、ディスクルート証明書及びJARアーカイブファイルについての説明である。続いて、本実施形態に係るローカルストレージ２０２、及び、BD-Jプラットフォーム部２０７の内部構成について説明する。図５４は、プラットフォーム部２０７、及び、ローカルストレージ２０２の内部構成を示す図である。本図に示すようにプラットフォーム部２０７は、アプリケーションマネージャ２１２、仮想マシン２１３、セキュリティマネージャ２１５から構成される。またローカルストレージ２０２は、Persistent領域２１４を含む。
【０２９６】
（アプリケーションマネージャ２１２）
アプリケーションマネージャ２１２は、仮想マシン２１３内のヒープ領域内で動作するシステムアプリケーションであり、アプリケーションシグナリングを実行する。”アプリケーションシグナリング”とは、GEM1.0.2が規定するMHP(MultimediaHomePlatform)において、”サービス”を生存区間としてアプリケーションの起動、実行を行う制御をいう。本実施形態におけるアプリケーションマネージャ２１２は、この”サービス”の代わりに、BD-ROMにおける”タイトル”を生存区間にして、アプリケーションの起動、実行の制御を実現する。ここで、”タイトル”とは、BD-ROMに記録されている映像・音声データの再生単位であり、アプリケーション管理テーブル(ApplicationManagementTable())が一意に割り当てられている。
【０２９７】
アプリケーションを起動させるにあたって、アプリケーションマネージャ２１２は、起動しようとするアプリケーションが正当なものかどうかを判定する。この判定手順は以下の通りである。BD-ROMがローディングされれば、/BDDATA/BD.ROOT.CERTIFICATEというファイルの存在を確認する。ファイルが存在する場合、アプリケーションマネージャ２１２がこのディスクルート証明書３０１をBD-ROMから読み取り、メモリ上に保持する。その後、Java(登録商標)アーカイブファイル３０２を読みだし、このJava(登録商標)アーカイブファイル３０２に存在する署名を検証する。この検証が正しいのなら、アプリケーションマネージャ２１２はBD-ROM上に存在するJava(登録商標)アーカイブファイル３０２中のクラスファイル４０１を、仮想マシン２１３内に読みだし、このクラスファイル４０１のインスタンスをヒープ領域に生成することで、Java(登録商標)アプリケーションを起動する。
【０２９８】
（仮想マシン２１３）
仮想マシン２１３は、クラスファイルをBD-ROMから読み出すユーザクラスローダ、クラスファイルに対応するインスタンスをJava(登録商標)アプリケーションとして格納するヒープメモリ、スレッド、Java(登録商標)スタックから構成されるJava(登録商標)アプリケーションの実行主体である。ここでスレッドは、Java(登録商標)アプリケーションにおけるメソッドを実行する論理的な実行主体であり、ローカル変数や、オペランドスタックに格納された引数をオペランドにして演算を行い、演算結果を、ローカル変数又はオペランドスタックに格納する。スレッドによるメソッド実行は、メソッドをなすバイトコードを、CPUのネイティブコードに変換した上、CPUに発行することでなされる。このネイティブコード変換については、本願の主眼から外れるため、説明を省く。Java(登録商標)アーカイブファイル３０２内にパーミッションリクエストファイル４０５が存在する場合、マニフェストファイル４０２の中に、Java(登録商標)アプリケーションの正しいハッシュ値が入っていなければ、そのJava(登録商標)アプリケーションを実行してはならない。かかるハッシュ値の判定のため、仮想マシン２１３は、実行するJava(登録商標)アプリケーションはどのJava(登録商標)アーカイブファイル３０２に格納されていたのかを示す情報をメモリ上に保持する。このパーミッションリクエストファイル４０５を参照することで、仮想マシン２１３はアプリケーションマネージャ２１２が保持するアプリ間通信の許可を確認し、Java(登録商標)アプリケーションに対してアプリ間通信の機能を提供する。
【０２９９】
（Persistent領域２１４）
Persistent領域２１４は、Java(登録商標) IO Packageからのメソッドを用いることにより、アクセスすることができるローカルストレージの一領域である。このPersistent領域２１４は、複数のドメイン領域を有する。ここでドメイン領域とは、各ディスクルート証明書３０１に対応するディレクトリ(図中のR1,R2)のことであり、これらのディレクトリの配下に、組織毎のディレクトリ(図中のorg1,org2,org3)を格納するというものである。組織のアプリケーション毎のディレクトリ(図中のorg1/app1,org1/app2,org1/app3・・・・)は、MHPのものと同じである。つまりローカルストレージでは、MHPに規定された各組織のアプリケーション毎のディレクトリ(図中のorg1/app1,org1/app2,org1/app3・・・・)を、ルート証明書に対応したディレクトリ(図中のR1,R2)の配下に配置した構成になっている。こうすることで、MHPの格納方式と、互換を維持することができる。ここでローカルストレージのディレクトリ構成をアクセスするためのファイルパスのうち、ルート証明書に対応した部分まで(図中のRoot/R1,Root/R2)を、”ローカルストレージルート”という。
【０３００】
（セキュリティマネージャ２１５）
セキュリティマネージャ２１５は、ルート証明書から算出されたハッシュ値と、ローカルストレージルートとの組みを複数示したハッシュ管理テーブルを保持しており、アプリケーションから、ファイルの読み出し／書き込みが要求されれば、要求元のアプリケーションに対応するルート証明書について、ハッシュ値を算出して、そうして算出したハッシュ値に対応したローカルストレージルートをハッシュ管理テーブルから選ぶ。そうして選んだローカルストレージルートを、ファイルパスに組み入れる。また、Credentialに基づきファイルパスの組織IDに対応するディレクトリを置き換える。こうすることで、アプリケーションのファイルパスの記述は、MHPに規定されたものと互換を保つことができる。
【０３０１】
以上がプラットフォーム部の構成である。このようにディスクルート証明書は、Java(登録商標)アプリケーションの認証やJava(登録商標)アプリケーションの権限チェック、ローカルストレージにおけるドメイン領域のアクセスに利用されることがわかる。しかしディスクルート証明書は、BD-ROM一枚に対して割り当てられるものであるため、BD-ROMが未完成の段階では、上述したようなJava(登録商標)アプリケーションの認証やJava(登録商標)アプリケーションの権限チェック、ドメイン領域のアクセスをテストすることができない。
【０３０２】
そこで本実施形態では、上述したように、ディスクルート証明書のダミーデータをJARアーカイブファイルと共にネットワークドライブに格納している。そうするとJARアーカイブファイルをロードする際、再生装置は、このディスクルート証明書に対応するドメイン領域をクリエイトして、BD-ROMコンテンツに対応する差分コンテンツを、このドメイン領域に格納する。
【０３０３】
そして、Java(登録商標)仮想マシンは、このディスクルート証明書を手掛かりに、ドメイン領域をアクセスする。
このようにダミーのディスクルート証明書がJARアーカイブファイルに存在すれば、マウントコマンドを発行された際、このダミーに基づき認証を行い、利用権限のチェックを行う。更に、このダミーに対応するドメイン領域をローカルストレージにクリエイトして、Java(登録商標)アプリケーションが利用するデータを、かかるドメイン領域に保存する。
【０３０４】
以上のように本実施形態によれば、JARアーカイブファイル内に、ダミーデータを組込んでおくことで、Java(登録商標)アプリケーションの認証が正当になされるか、アプリケーションに付与された利用権限が正当にチェックされるかを、テストすることができるので、テスト効率を高めることができる。
（第９実施形態）
本実施形態は、第１実施形態に示したPC１００と、第２実施形態に示した再生装置とを一体構成にする改良に関する。具体的には、本実施形態に係るPC１００は、BD-ROMドライブ、AVコンテンツをデコードするためのハードウェア及びソフトウェア、プラットフォーム部を具備したPC１００であり、ログサーバーターミナルは、自PC内に存在するプラットフォーム部から出力される実行ログを受け取り、収集するのである。
【０３０５】
例えば、２つのAVコンテンツを含むBD-ROMのオーサリングにおいて、一方のAVコンテンツのオーサリングのみが完了し、もう一方のオーサリングは未完了であるような場合に、効率的にアプリケーションの動作検証、および、解析・修正を行うことができる。
図５５は、BD-ROMドライブ、AVコンテンツをデコードするためのハードウェア及びソフトウェア、プラットフォーム部を具備したPC１００の構成を示すブロック図である。本図におけるデバッグ装置は、図１７、図１８に示したPC１００のハードウェア構成、及び、ソフトウェア構成と同一の構成要素(PC上プラットフォーム部１２２、抽象化コンテンツ１２４、抽象化コンテンツ作成部１２５、再生制御エンジンスタブ１２６、AV再生画面表示部１２８、シミュレーション環境更新部１２９)を有するが、このPC上プラットフォーム部１２２の配下に、BD-ROM再生装置２００の構成要素(BD-ROMドライブ２０１、ローカルストレージ２０２、仮想ファイルシステム部２０４、再生エンジン２０５、再生制御エンジン２０６)が存在する点が異なる。
【０３０６】
PC上プラットフォーム部１２２は、BD-Jアプリケーションからの再生要求の対象となるAVコンテンツのオーサリングが完了しているかどうかを判断し、BD-Jアプリケーションからオーサリング未完了のAVコンテンツに対する再生要求を受け取った場合には、第４施形態と同様のシミュレーションを実行するが、オーサリング完了済みのAVコンテンツに対する再生要求を受け取った場合には、第１実施形態と同様のマウント処理を、ネットワークドライブではなく、自身に内蔵されているHDDに対して実行するようにしている。
【０３０７】
以上のように本実施形態によれば、再生対象のAVコンテンツのオーサリングが完了している場合には、BD-ROM上に配置された実際のAVコンテンツを利用してアプリケーションの動作検証、及び、解析・修正を行い、再生対象のAVコンテンツのオーサリングが未完了の場合には、実際のAVコンテンツではなく抽象化コンテンツを利用したAV再生エミュレーションによるアプリケーションの動作検証、及び、解析・修正を行うことが可能となる。
【０３０８】
これにより、個々のAVコンテンツのオーサリング作業の進捗状況に応じて、最適な方法でアプリケーションの動作検証、及び、解析・修正を効率的に実施することが可能となる。なお、本実施の形態では、BD-ROMに含まれるAVコンテンツが２つの場合を使って説明しているが、３つ以上のAVコンテンツを含むBD-ROMが対象であってもよい。（補足事項）
上記実施形態に基づいて説明してきたが、現在において最善の効果が期待できるシステム例として提示したに過ぎない。本発明はその要旨を逸脱しない範囲で変更実施することができる。代表的な変更実施の形態として、以下に掲げるものがある。（記録媒体のバリエーション）
各実施形態では、AVコンテンツやアプリケーションを記録する記録媒体やオーサリングの対象をBD-ROMとして説明を進めたが、このBD-ROMの物理的性質は、本発明の作用・効果の発揮にさほど貢献していない。BD-ROM同様、AVコンテンツを記録し得る容量を持った記録媒体であるなら、他の記録媒体を採用してもよい。例えば、BD-ROM以外のCD-ROM、CD-R、CD-RW，DVD-ROM、DVD-R、DVD-RW、DVD-RAM、DVD+R、DVD+RW等の他の光ディスクであってよいことはいうまでもない。また、PD、MO等の光磁気ディスクであってもよい。更に、SDメモリカード、コンパクトフラッシュ（登録商標）カード、スマートメディア、メモリスティック、マルチメディアカード、PCM-CIAカード等の半導体メモリーカードであってもよい。HDD、フレキシブルディスク、SuperBD-ROM、Zip、Click！等の磁気記録ディスク、ORB、Jaz、SparQ、SyJet、EZFley、マイクロドライブ等のリムーバブルハードディスクドライブであってもよい。無論、ローカルストレージは、再生装置に装填され、所定の著作権保護がなされた記録媒体であるならば、上述したような記録媒体の何れでもよい。
【０３０９】
(BD-Jアプリケーションの配置場所)
各実施形態において、BD-Jアプリケーションの配置場所は、HDDを選んだが、その他USB等で接続可能なメモリ等であっても構わない。
(ステップS１０４での終了判定) 
図２５のフローチャートではステップS１０１にてNoであり、かつ、ステップS１０２にてNoである場合にのみ、ステップS１０４で終了判定を行っているがステップS１０２及びS１０１の判定結果に関わらず終了判定（ステップS１０４）を行っても良い。また、再生制御APIコールの受け付け（ステップS１０１）を行った後で、シミュレーション情報の変更を（ステップS１１４）を行っているが、逆の順序で行ってもよい。さらには、ステップS１１３の処理実行後にステップS１０１に戻っているが、ステップS１１０の実行後にステップS１０２の判定処理を行ってもよい。
【０３１０】
(GUIの利用)
図２２では、再生情報の表示と、再生状況の変更とを同一のGUIで行っているが、別々のGUI上で行ってもよい。
(画面の利用)
図２２において、２つ以上の画面を利用して抽象化コンテンツとシミュレーション情報の表示とを行っているが、１つの画面を利用して表示するように構成しても良い。
【０３１１】
(矩形の利用)
図２２では、矩形を利用したAV再生画面の表示を行っていたが、これだけではなく、文字情報による表示のみを行うようにしても良いし、矩形の中にそれぞれの映像の現在時点情報などを重畳する形で表示しても良い。また、矩形を単色で塗りつぶす必要はなく、任意の背景画像を表示するように構成しても良い。また、矩形の代わりに円形、多角形など任意の形状をした図形を利用しても良い。
【０３１２】
また、再生状況の変更は、ユーザーからの数値、あるいは、文字列の入力を受け付けることによって変更を行っているが、予め設定されている情報の表示を行いそのなかからユーザーが選択することにより変更できるように構成してもよい。
(実装)
PC１００におけるソフトウェア的な構成要素は、PC１００内のCPUなどの演算装置によって実行されるように構成しても良いし、信号処理回路を用いて構成しても良いし、上述の処理を実行するLSIなどの集積回路を用いて実現しても良い。
【０３１３】
また、PC１００内のソフトウェア的な構成要素は、PC１００内のメモリなどに予め記録されていても良いし、読み取り可能な記録媒体に格納されており、記録媒体に記録された内容を読み取って実行する構成であってもよい。
抽象化コンテンツの作成は複数の画面を利用して設定を行っているが、１つの画面のみで設定が行えるように構成してもよい。
【０３１４】
(エラー表示)
AVコンテンツと抽象化コンテンツとが一致していない場合に、エラーメッセージを表示してAVコンテンツと抽象化コンテンツのいずれを修正するかを選択可能なように構成してもよい。  また、２つ以上のAVコンテンツが存在する場合には、ひとつAVコンテンツが完成するたびに、AVコンテンツをBD-ROMに配置するようにしても良い。
【０３１５】
(BD-Jアプリケーションの個数)
本実施の形態ではAVコンテンツの再生制御を行うアプリケーションが一つの場合を例に説明を行うが、アプリケーションが２つ以上あってもよい。
(現在時点の変更)
第４実施形態では、現在時点の変更をユーザーがタイムコードを変更することにより行っているが、プレイリストやチャプター番号を指定することにより再生位置の変更を行っても良い。また、ユーザーに設定させるのではなく、タイマーを利用して一定時間が経過する毎に再生位置を自動的に変更するように構成しても良い。
【０３１６】
(AVコンテンツ、BD-Jアプリケーションの配置)
AVコンテンツ、BD-Jアプリケーションは、それぞれBD-ROM、HDDに配置するというのは一例であり、BD-JアプリケーションをBD-ROMに配置してもよいし、AVコンテンツをHDDに配置してもよい。またAVコンテンツ、BD-Jアプリケーションをローカルストレージに配置してもよい。
【０３１７】
IDE環境においては、図１３に示したようなLog出力APIや、これを利用するデバッグルーチンを、デバッグ時のみコンパイルするよう、コンパイルスイッチを設定しておことが望ましい。
標準出力関数による実行ログは、サービスマン機能として、特殊な操作がなされたのみ、出力されるようにすることが望ましい。
【０３１８】
(差分コンテンツの作成工程)
映画作品を、BD-ROMコンテンツと、差分コンテンツとで構成する場合は、上述した企画工程からフォーマッティング工程までを実行する。そうして、1つのボリュームデータを構成するAVClip、Clip情報、PlayList情報が得られれば、これらのうち、既にBD-ROMにて供給すべきものを除外し、残ったものを、差分コンテンツとして、アーカイバプログラム等で1つのファイルにまとめる。こうした処理を経て、差分コンテンツが得られれば、かかる差分コンテンツをWWWサーバに供し、再生装置からの要求に応じて、再生装置に送出する。
【０３１９】
(システムLSI化)
第１実施形態に示した再生装置の内部構成は、1つのシステムLSIとして構成してもよい。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものも、システムLSIに含まれる(このようなシステムLSIは、マルチチップモジュールと呼ばれる。)。
【０３２０】
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置の中核としての役割を果たす。
【０３２１】
かかるシステムLSIは、再生装置は勿論のこと、TVやゲーム、パソコン、ワンセグ携帯等、映像再生を扱う様々な機器に組込みが可能であり、本発明の用途を多いに広げることができる。
図５６は、再生装置の主たる構成要素を組込んだシステムLSIを模式的に示す図である。
【０３２２】
具体的な生産手順の詳細は以下のものになる。まず各実施形態に示した構成図を基に、システムLSIとすべき部分の回路図を作成し、回路素子やIC,LSIを用いて、構成図における構成要素を具現化する。
そうして、各構成要素を具現化してゆけば、回路素子やIC,LSI間を接続するバスやその周辺回路、外部とのインターフェイス等を規定する。更には、接続線、電源ライン、グランドライン、クロック信号線等も規定してゆく。この規定にあたって、LSIのスペックを考慮して各構成要素の動作タイミングを調整したり、各構成要素に必要なバンド幅を保証する等の調整を加えながら、回路図を完成させてゆく。
【０３２３】
各実施形態の内部構成のうち、一般的な部分については、既存の回路パターンを定義したIntellectual Propertyを組み合わせて設計するのが望ましい。特徴的な部分については、HDLを用いた抽象度が高い動作レベルを記述やレジスタトランスファレベルでの記述を用いてトップダウン設計を行うのが望ましい。  
回路図が完成すれば、実装設計を行う。実装設計とは、回路設計によって作成された回路図上の部品(回路素子やIC,LSI)を基板上のどこへ配置するか、あるいは、回路図上の接続線を、基板上にどのように配線するかを決定する基板レイアウトの作成作業である。
【０３２４】
こうして実装設計が行われ、基板上のレイアウトが確定すれば、実装設計結果をCAMデータに変換して、NC工作機械等の設備に出力する。NC工作機械は、このCAMデータを基に、SoC実装やSiP実装を行う。SoC(Systemonchip)実装とは、1チップ上に複数の回路を焼き付ける技術である。SiP(System in Package)実装とは、複数チップを樹脂等で1パッケージにする技術である。以上の過程を経て、本発明に係るシステムLSIは、各実施形態に示した再生装置の内部構成図を基に作ることができる。図５７は、こうして作られたシステムLSIを、機器に装備した状態を示す図である。
【０３２５】
尚、上述のようにして生成される集積回路は、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
FPGAを用いてシステムLSIを実現した場合は、多数のロジックエレメントが格子状に配置されており、LUT(Look Up Table)に記載されている入出力の組合せに基づき、縦・横の配線をつなぐことにより、各実施形態に示したハードウェア構成を実現することができる。LUTは、SRAMに記憶されており、かかるSRAMの内容は、電源断により消滅するので、かかるFPGAの利用時には、コンフィグ情報の定義により、各実施形態に示したハードウェア構成を実現するLUTを、SRAMに書き込むませる必要がある。更に、デコーダを内蔵した映像復調回路は、積和演算機能を内蔵したDSPで実現するのが望ましい。
【０３２６】
(アーキテクチャ)
本発明にかかるシステムLSIは、再生装置の機能を実現するものなので、システムLSIは、Uniphierアーキテクチャに準拠させるのが望ましい。
Uniphierアーキテクチャに準拠したシステムLSIは、以下の回路ブロックから構成される。
【０３２７】
・データ並列プロセッサDPP
これは、複数の要素プロセッサが同一動作するSIMD型プロセッサであり、各要素プロセッサに内蔵されている演算器を、1つの命令で同時動作させることで、ピクチャを構成する複数画素に対するデコード処理の並列化を図る。
・命令並列プロセッサIPP
これは、命令RAM、命令キャッシュ、データRAM、データキャッシュからなる「Local Memory Contoroller」、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルからなる「ProcessingUnit部」、複数アプリケーションの並列実行をProcessingUnit部に行わせる「Virtual Multi Processor Unit部」で構成される。
【０３２８】
・CPUブロック
これは、ARMコア、外部バスインターフェイス(Bus Control Unit:BCU)、DMAコントローラ、タイマー、ベクタ割込コントローラといった周辺回路、UART、GPIO(GeneralPurposeInput Output)、同期シリアルインターフェイスなどの周辺インターフェイスで構成される。先に述べたコントローラは、このCPUブロックとしてシステムLSIに実装される。
【０３２９】
・ストリームI/Oブロック
これは、USBインターフェイスやATA Packetインターフェイスを介して、外部バス上に接続されたドライブ装置、ハードディスクドライブ装置、SDメモリカードドライブ装置とのデータ入出力を行う。
・AVI/Oブロック
これは、オーディオ入出力、ビデオ入出力、OSDコントローラで構成され、テレビ、AVアンプとのデータ入出力を行う。
【０３３０】
・メモリ制御ブロック
これは、外部バスを介して接続されたSD-RAMの読み書きを実現するブロックであり、各ブロック間の内部接続を制御する内部バス接続部、システムLSI外部に接続されたSD-RAMとのデータ転送を行うアクセス制御部、各ブロックからのSD-RAMのアクセス要求を調整するアクセススケジュール部からなる。
【０３３１】
(本発明に係るプログラムの生産形態)
本発明に係るプログラムは、コンピュータが実行することができる実行形式のプログラム(オブジェクトプログラム)であり、実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、（登録商標）バイトコードというように、様々な種類がある。
【０３３２】
本発明にかかるプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
【０３３３】
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを１つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み出しを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。以上の処理を経て、本発明に係るプログラムを作ることができる。<BR>
【産業上の利用可能性】
【０３３４】
本発明に係る再生装置及びデバッグ装置は、上記実施形態に内部構成が開示されており、この内部構成に基づき量産することが明らかなので、資質において工業上利用することができる。そして、AVコンテンツの再生を行うための環境が存在しない場合のアプリケーション解析・修正等の用途にも応用できる。
【図面の簡単な説明】
【０３３５】
【図１】BD-Jアプリケーションの作成手順を示すフローチャートである。
【図２】第１実施形態にかかるIDE環境、及び、ADK環境を示す図である。
【図３】Java Platform Debugger Architecture（JPDA)のレイヤモデルを示す図である。
【図４】（ａ）（ｂ）標準出力関数を用いたADK環境におけるデバッグ例、ECLIPSEを用いたデバッグ例を示す図である。
【図５】ADK環境において、ECLIPSEを用いたデバッグを行う場合の、GUIの一例を示す図である。
【図６】ADK環境でのデバッグ手順を示すフローチャートである。
【図７】第１実施形態に係るBD-ROM再生装置２００の内部構成を示すである。
【図８】（ａ）ネットワーク管理情報に含まれる情報識別子と、その解説とを対応付けて示す図である。  （ｂ）ネットワーク管理情報の具体的な記述を示す図である。
【図９】ネットワークドライブ上のファイルシステムと、BD-ROM上のファイルシステムとを組合せた仮想的なパッケージにおけるファイルシステムを示す図である。
【図１０】ADK処理部２０８の内部構成を示す図である。
【図１１】ADK環境におけるBD-Jアプリケーション実行と、AVコンテンツ再生とを模式的に示す図である。
【図１２】ADK環境の処理手順を示すフローチャートである。
【図１３】Log出力用APIであるDebugLogについてのクラス構造体を示す図である。
【図１４】（ａ）〜（ｃ）  setLevelメソッド、printLogメソッド、printExceptionメソッドの処理手順を示すフローチャートである。
【図１５】Log出力APIを利用した、Java(登録商標)プログラムソースコードの一例を示す。
【図１６】tryメソッドの処理手順を示すフローチャートである。
【図１７】デバッグ装置のハードウェア構成を示す図である。
【図１８】IDE環境のソフトウェア構成を示す図である。
【図１９】BD-Jシミュレータ１１８の内部構成を示す図である
【図２０】プレイリスト構成メニュー５０１の一例を示す図である。
【図２１】（ａ）（ｂ）音声ストリーム構成メニュー６０１a、字幕ストリーム構成メニュー６０１bの一例を示す図である。
【図２２】AV再生画面表示部１２８による表示内容の一例を示す図である。
【図２３】（ａ）〜（ｂ）現在時点メニュー７０１b、動作状態セットアップメニュー７０１cを示す図である。
【図２４】（ａ）〜（ｃ）画面配置セットアップメニュー８０１a、音声出力セットアップメニュー８０１b、字幕表示セットアップメニュー８０１cを示す図である。
【図２５】再生制御エンジンスタブ１２６の処理手順におけるメインルーチンを示すフローチャートである。
【図２６】現在時点の更新処理の手順を示すフローチャートである。
【図２７】（ａ）（ｂ）シミュレーション情報変更の詳細手順、状態変化通知処理の詳細手順を示すフローチャートである。
【図２８】シミュレーション情報変更の処理手順を示すフローチャートである。
【図２９】BD-ROMの内部構成を示す図である。
【図３０】拡張子.m2tsが付与されたファイルがどのように構成されているかを模式的に示す図である。
【図３１】AVClipを構成するTSパケットがどのような過程を経てBD-ROMに書き込まれるかを示す。
【図３２】BD-ROMの物理単位と、1つのファイルエクステントを構成するSourceパケットとの対応関係を示す図である。
【図３３】MainClipに多重化されるエレメンタリストリームを示す図である。
【図３４】SubClipに多重化されるエレメンタリストリームを示す図である。
【図３５】Clip情報の内部構成を示す図である。
【図３６】映画のビデオストリームに対するEP_map設定を示す図である。
【図３７】（ａ）（ｂ）PlayList情報のデータ構造、Multi_Clip_entriesの内部構成を示す図である。
【図３８】PlayList情報におけるPlayListMark情報の内部構成を示す図である。
【図３９】AVClipと、PlayList情報との関係を示す図である。
【図４０】Subpath情報の内部構成をクローズアップして示す図である。
【図４１】ローカルストレージ上のSubClipと、ローカルストレージ２０２上のPlayList情報と、BD-ROM上のMainClipとの対応を示す図である。
【図４２】PiP_metadataの内部構成を示す図である。
【図４３】再生エンジン２０５の内部構成を示す図である。
【図４４】合成部１５の内部構成を示す図である。
【図４５】再生制御エンジン２０６の処理手順を示すフローチャートである。
【図４６】PlayList情報におけるSubPlayItem情報に従った再生手順を示すフローチャートである。
【図４７】本実施形態に係るオーサリングシステムの内部構成と、本システムにおけるデバッグ装置の位置付けを示す図である。
【図４８】フォーマッティング工程における処理の流れを示すフローチャートである。
【図４９】（ａ）（ｂ）ネットワークドライブのディレクトリ・ファイル構造、JARアーカイブファイルの内部構成を示す図である。
【図５０】（ａ）（ｂ）Credentialのデータ構造、Credentialの具体的な一例を示す図である。
【図５１】BD-ROMにおいてルート証明書がどのように割り当てられるかを模式的に示す図である。
【図５２】権限の提供がない場合のSIG-BD.RSA、SIG-BD.SF、BD.ROOT.CERTIFICATE、MANIFEST.MFの相互関係を示す図である。
【図５３】権限の提供がある場合のSIG-BD.RSA、SIG-BD.SF、BD.ROOT.CERTIFICATE、MANIFEST.MF、bd.XXXX.permの相互関係を示す図である。
【図５４】プラットフォーム部の内部構成を示す図である。
【図５５】BD-ROMドライブ、AVコンテンツをデコードするためのハードウェア及びソフトウェア、プラットフォーム部を具備したPC１００の構成を示すブロック図である。
【図５６】再生装置の主たる構成要素を組込んだシステムLSIを模式的に示す図である。
【図５７】再生装置の主たる構成要素を組込んだシステムLSIを、機器に装備した状態を示す図である。
【符号の説明】
【０３３６】
１００  デバッグ装置
１０１  ネットワークドライブ
１０２  ブートROM
１０３  RAM
１０４  入出力I/F
１０５  MPU
１０６  ネットワークI/F
２００  再生装置
２０１  BD-ROMドライブ
２０２  ローカルストレージ
２０３  ネットワークI/F
２０４  仮想ファイルシステム部
２０５  再生エンジン
２０６  再生制御エンジン
２０７  BD-Jプラットフォーム部
２０８  ADK処理部
２０９  初期化処理部
２１０  マウント設定部
【図１】
0004491035.tif 000002
【図２】
0004491035.tif 000003
【図３】
0004491035.tif 000004
【図４】
0004491035.tif 000005
【図５】
0004491035.tif 000006
【図６】
0004491035.tif 000007
【図７】
0004491035.tif 000008
【図８】
0004491035.tif 000009
【図９】
0004491035.tif 000010
【図１０】
0004491035.tif 000011
【図１１】
0004491035.tif 000012
【図１２】
0004491035.tif 000013
【図１３】
0004491035.tif 000014
【図１４】
0004491035.tif 000015
【図１５】
0004491035.tif 000016
【図１６】
0004491035.tif 000017
【図１７】
0004491035.tif 000018
【図１８】
0004491035.tif 000019
【図１９】
0004491035.tif 000020
【図２０】
0004491035.tif 000021
【図２１】
0004491035.tif 000022
【図２２】
0004491035.tif 000023
【図２３】
0004491035.tif 000024
【図２４】
0004491035.tif 000025
【図２５】
0004491035.tif 000026
【図２６】
0004491035.tif 000027
【図２７】
0004491035.tif 000028
【図２８】
0004491035.tif 000029
【図２９】
0004491035.tif 000030
【図３０】
0004491035.tif 000031
【図３１】
0004491035.tif 000032
【図３２】
0004491035.tif 000033
【図３３】
0004491035.tif 000034
【図３４】
0004491035.tif 000035
【図３５】
0004491035.tif 000036
【図３６】
0004491035.tif 000037
【図３７】
0004491035.tif 000038
【図３８】
0004491035.tif 000039
【図３９】
0004491035.tif 000040
【図４０】
0004491035.tif 000041
【図４１】
0004491035.tif 000042
【図４２】
0004491035.tif 000043
【図４３】
0004491035.tif 000044
【図４４】
0004491035.tif 000045
【図４５】
0004491035.tif 000046
【図４６】
0004491035.tif 000047
【図４７】
0004491035.tif 000048
【図４８】
0004491035.tif 000049
【図４９】
0004491035.tif 000050
【図５０】
0004491035.tif 000051
【図５１】
0004491035.tif 000052
【図５２】
0004491035.tif 000053
【図５３】
0004491035.tif 000054
【図５４】
0004491035.tif 000055
【図５５】
0004491035.tif 000056
【図５６】
0004491035.tif 000057
【図５７】
0004491035.tif 000058