(57)【要約】      （修正有）【課題】Ｖｉｒｔｕａｌ  Ｐａｃｋａｇｅに関し、個々のデジタルストリームの格納場所が分かれていても、プレイリストに示された再生順序で再生する。【解決手段】ＰｌａｙＬｉｓｔ情報のインスタンス生成を要求（◎１）。管理情報変換モジュール３９はＰｌａｙＬｉｓｔ情報をシナリオメモリ２５から読み出す（◎２）。この情報をデータ部にし、メソッド部を付け加えたＰｌａｙＬｉｓｔオブジェクトをＷｏｒｋ  Ｍｅｍｏｒｙ５４に生成（◎３）。アプリケーションは、このＰｌａｙＬｉｓｔオブジェクトのメソッドを呼び出し、ストリームシーケンスの再生を、Ｐｌａｙｂａｃｋ  Ｃｏｎｔｒｏｌ  Ｅｎｇｉｎｅ３２に命じる。【選択図】図２１
2010146695.tif 000002
【特許請求の範囲】
【請求項１】
ストリームシーケンスを再生する再生装置であって、
再生手段と、
前記ストリームシーケンスを構成する個々のデジタルストリームを格納するための格納場所が、複数の記録媒体のそれぞれ分かれている場合、各デジタルストリームの状態を、前記再生手段が認識し得る状態、又は、前記再生手段が認識し得ない状態に設定するパッケージ管理手段と、
アプリケーションを実行して、前記記録媒体に対するアクセス制御を実行するアプリケーション実行手段とを備え、
前記再生手段は、
前記ストリームシーケンスを構成する一部のデジタルストリームが認識し得る状態であれば、残りのデジタルストリームが認識し得ない状態であっても、再生を開始し、
前記パッケージ管理手段は、
前記ストリームシーケンスのうち一部のデジタルストリームに対する再生処理が係続している間、前記アプリケーション実行手段により実行されるアプリケーションからの要求に従って、前記残りのデジタルストリームの状態を、前記再生手段が認識し得る状態、又は、前記再生手段が認識し得るデジタルストリームのうち、前記再生処理を行っている一部のデジタルストリーム以外のデジタルストリームを、認識し得ない状態に変化させ、
前記複数の記録媒体のうち、前記ストリームシーケンスを構成する個々のデジタルストリームの再生順序を示すプレイリストが書き込み可能な記録媒体に記録されている場合、  前記再生手段は、前記書き込み可能な記録媒体に記録されたプレイリストに示された再生順序に基づいてデジタルストリームを再生することを特徴とする再生装置。
【請求項２】
前記再生手段は、前記書き込み可能な記録媒体に記録されたプレイリストに示された再生順序に基づいて再生すべきデジタルストリームが前記認識し得ない状態のデジタルストリームである場合、再生を停止する請求項１記載の再生装置。
【請求項３】
ストリームシーケンスを再生する再生方法であって、
再生ステップと、
前記ストリームシーケンスを構成する個々のデジタルストリームを格納するための格納場所が、複数の記録媒体のそれぞれに分かれている場合、各デジタルストリームの状態を、前記再生ステップが認識し得る状態、又は、前記再生ステップが認識し得ない状態に設定するパッケージ管理ステップと、
アプリケーションを実行して、前記記録媒体に対するアクセス制御を実行するアプリケーション実行ステップとを含み、
前記再生ステップは、
前記ストリームシーケンスを構成する一部のデジタルストリームが認識し得る状態であれば、残りのデジタルストリームが認識し得ない状態であっても、再生を開始し、
前記パッケージ管理ステップは、
前記ストリームシーケンスのうち一部のデジタルストリームに対する再生処理が係続している間、前記アプリケーション実行ステップにより実行されるアプリケーションからの要求に従って、前記残りのデジタルストリームの状態を、前記再生ステップが認識し得る状態、又は、前記再生ステップが認識し得るデジタルストリームのうち、前記再生処理を行っている一部のデジタルストリーム以外のデジタルストリームを、認識し得ない状態に変化させ、
前記複数の記録媒体のうち、前記ストリームシーケンスを構成する個々のデジタルストリームの再生順序を示すプレイリストが書き込み可能な記録媒体に記録されている場合、前記再生ステップは、前記書き込み可能な記録媒体に記録されたプレイリストに示された再生順序に基づいてデジタルストリームを再生することを特徴とする再生方法。
【請求項４】
前記再生ステップは、前記書き込み可能な記録媒体に記録されたプレイリストに示された再生順序に基づいて再生すべきデジタルストリームが前記認識し得ない状態のデジタルストリームである場合、前記再生を停止する請求項３記載の再生方法。
【請求項５】
ストリームシーケンスを処理をコンピュータに行わせるプログラムであって、
再生ステップと、
前記ストリームシーケンスを構成する個々のデジタルストリームを格納するための格納場所が、複数の記録媒体のそれぞれに分かれている場合、各デジタルストリームの状態を、前記再生ステップが認識し得る状態、又は、前記再生ステップが認識し得ない状態に設定するパッケージ管理ステップと、
アプリケーションを実行して、前記記録媒体に対するアクセス制御を実行するアプリケーション実行ステップとをコンピュータに実行させ、
前記再生ステップは、
前記ストリームシーケンスを構成する一部のデジタルストリームが認識し得る状態であれば、残りのデジタルストリームが認識し得ない状態であっても、再生を開始し、
前記パッケージ管理ステップは、
前記ストリームシーケンスのうち一部のデジタルストリームに対する再生処理が係続している間、前記アプリケーション実行ステップにより実行されるアプリケーションからの要求に従って、前記残りのデジタルストリームの状態を、前記再生ステップが認識し得る状態、又は、前記再生ステップが認識し得るデジタルストリームのうち、前記再生処理を行っている一部のデジタルストリーム以外のデジタルストリームを、認識し得ない状態に変化させ、
前記複数の記録媒体のうち、前記ストリームシーケンスを構成する個々のデジタルストリームの再生順序を示すプレイリストが書き込み可能な記録媒体に記録されている場合、前記再生ステップは、前記書き込み可能な記録媒体に記録されたプレイリストに示された再生順序に基づいてデジタルストリームを再生することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Virtual Packageの技術分野に属する発明である。
【背景技術】
【０００２】
Virtual Packageとは、BD-ROM等のリードオンリー型の記録媒体に記録されているデジタルストリームと、ハードディスク等のリライタブル型の記録媒体に記録されているデジタルストリームとを動的に組み合わせて、仮想的なパッケージを構築することにより、リードオンリー型記録媒体の内容拡張を図る技術である。ここBD-ROMに記録されているデジタルストリームが、映画作品の本編を構成するものであり、ハードディスクに記録されているデジタルストリームが、映画作品の続編を構成するものである場合、上述したVirtualPackageを構築することにより、BD-ROM上の本編と、ハードディスク上の続編とを、1つの長編の映画作品として取り扱い、再生に供することができる。
【０００３】
尚、Virtual Packageについての先行技術としては、以下の特許文献に記載されているものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2002-369154号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところがBD-ROMに記録されたデジタルストリームと、ハードディスクに記録されたデジタルストリームとを1つのストリームシーケンスとして再生してゆく場合、ストリームシーケンスを構成するデジタルストリームの中に、不安定な状態のものがふくまれている可能性がある。ここで不安定な状態のデジタルストリームとは、ハードディスクへのダウンロードが未完了であったり、書き込みが不完全であるようなデジタルストリームをいう。不安定な状態のデジタルストリームが含まれているにも拘らず、上述したストリームシーケンスを再生しようとすると、再生手段による再生時点が不安定なストリームに至った途端、再生が乱れたり、再生が途切れてしまうことが有り得る。
【０００６】
ここで、再生しようとするストリームが不安定な状態であるか否かを、再生装置内の再生手段(デコーダ等)が正しくチェックすることができれば、かかる再生の乱れや途切れを回避することができる。しかし再生手段は、1／24秒,1／29.94秒というフレーム期間毎に、映像信号を出力するという処理に専念しており、そのようなチェックのための余力は存在しないことが一般的である。そのため上述したような再生の乱れや途切れの発生は避け得ない。その一方、BD-ROM再生装置を製造するような民生機器の産業分野では、映像再生に対して厳しい品質基準が要求されており、デジタルストリームをチェックするような余力が再生手段側にないとしても、上述したような再生の乱れや途切れが、容認されることはありえない。
【０００７】
本発明の目的は、不安定な状態のデジタルストリームをチェックするような余力が再生手段側にない場合であっても、BD-ROMに記録されたデジタルストリームと、ハードディスクに記録されたデジタルストリームとを1つのストリームシーケンスとして再生してゆく場合の再生の乱れや途切れを防止することができる再生装置を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る再生装置は、ストリームシーケンスを再生する再生装置であって、再生手段と、前記ストリームシーケンスを構成する個々のデジタルストリームを格納するための格納場所が、リードオンリー型の記録媒体およびリライタブル型の記録媒体のそれぞれに分かれている場合、前記リードオンリー型記録媒体上のファイル管理情報と、前記リライタブル型記録媒体におけるファイル管理情報とを用いて仮想的なボリューム管理情報を生成し、前記仮想的なボリューム管理情報から特定されるデジタルストリームの状態を、前記再生手段が認識し得る状態に設定することで、前記認識し得る状態に設定したデジタルストリームを前記再生手段が再生できるようにし、又は、前記仮想的なボリューム管理情報から特定される前記リライタブル型記録媒体上のデジタルストリームを前記再生手段が認識し得ない状態に設定することで、前記認識し得ない状態に設定したデジタルストリームを前記再生手段が再生できなくするパッケージ管理手段と、アプリケーションを実行して、前記記録媒体に対するアクセス制御を実行するアプリケーション実行手段とを備え、
前記再生手段は、前記リードオンリー型記録媒体のファイルレイアウトを認識できるものであり、前記ストリームシーケンスを構成する一部のデジタルストリームが認識し得る状態であれば、残りのデジタルストリームが認識し得ない状態であっても、再生を開始し、前記パッケージ管理手段は、前記ストリームシーケンスのうち一部のデジタルストリームに対する再生処理が係続している間、アプリケーション実行手段からの要求に従って、前記残りのデジタルストリームの状態を、前記再生手段が認識し得る状態、又は、前記再生手段が認識し得るデジタルストリームのうち、前記再生処理を行っている一部のデジタルストリーム以外のデジタルストリームを、認識し得ない状態に変化させる、ことを特徴としている。
【発明の効果】
【０００９】
アプリケーションが、デジタルストリームを認識できる状態にするか、認識できない状態にするかを変化させることで、デジタルストリームを再生手段に再生させるか、再生させないかの選択を、実現することができる。デジタルストリームを再生手段に再生させるか、再生させないかの選択権は、記録媒体のアクセスを実現するアプリケーションが掌握するので、アプリケーションが、デジタルストリームが記録媒体に正しく書き込まれたことを確認し得ない場合、そのデジタルストリームを認識できない状態にすれば、そのデジタルストリームはなかったものと取り扱われる。これにより不安定なデジタルストリームを誤って再生することはない。よって、映像の乱れや途切れが出現することはない。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る再生装置の、使用行為についての形態を示す図である。
【図２】BD-ROMの内部構成を示す図である。
【図３】AVClipがどのように構成されているかを模式的に示す図である。
【図４】PL情報の構成を示す図である。
【図５】AVClip時間軸と、PL時間軸との関係を示す図である。
【図６】4つのClip_Information_file_nameによりなされた一括指定を示す図である。
【図７】PLmark情報の内部構成を示す図である。
【図８】PLmarkによるチャプター定義を示す図である。
【図９】SubPath情報の内部構成を示す図である。
【図１０】SubPlayItem時間軸上の再生区間定義と、同期指定とを示す図である。
【図１１】（ａ）Java（登録商標）アーカイブファイルに収められているプログラム、データを示す図である。（ｂ）は、クラスファイルの内部構成を示す図である。
【図１２】本発明に係る再生装置の内部構成を示す図である。
【図１３】（ａ）Local Storage１８におけるディレクトリ構造を示す図である。（ｂ）ストリーム格納位置情報ファイルの内部構成を示す図である。
【図１４】ROM２４に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。
【図１５】Java（登録商標）仮想マシン３０の内部構成を示す図である。
【図１６】Virtual FileSystem部３８によるVirtual Package情報構築の一例を示す図である。
【図１７】Virtual FileSystem部３８による状態管理の一例を示す図である。
【図１８】状態管理を反映したVirtual Package情報の作成を示す図である。
【図１９】ネットワーク管理モジュール３７によるダウンロードが途上である場合の、Virtual FileSystem部３８によるVirtual Package構築を示す図である。
【図２０】（ａ）ローカルストレージに格納されたPL情報により、どのようなPlayList再生時間軸が定義されるかを示す図である。  （ｂ）Progressive PlayList情報の概念を示す図である。
【図２１】管理情報変換モジュール３９によるインスタンス生成を示す図である。
【図２２】PlayListオブジェクトにおけるPlayメソッドの呼び出しを示す図である。
【図２３】getMissingStreamsメソッドによる問合せの結果を模式的に示す図である。
【図２４】enableClipメソッドの呼出を模式的に示す図である。
【図２５】disableClipメソッドの呼出を模式的に示す図である。
【図２６】Virtual Package構築時の処理を示すフローチャートである。
【図２７】（ａ）enableClipメソッドの呼出時の処理手順を示すフローチャートである。（ｂ）disableClipメソッドの呼出時の処理手順を示すフローチャートである。
【図２８】Playback Control Engine３２による再生手順を示すフローチャートである。
【図２９】アプリケーションの処理手順を示すフローチャートである。
【図３０】（ａ）（ｂ）ネットワーク管理モジュール３７によるダウンロードの進捗と、Playback Control Engine３２による再生の進捗とを示す図である。
【図３１】（ａ）（ｂ）ネットワーク管理モジュール３７によるダウンロードの進捗と、Playback Control Engine３２による再生の進捗とを示す図である。
【図３２】（ａ）（ｂ）ネットワーク管理モジュール３７によるダウンロードの進捗と、Playback Control Engine３２による再生の進捗とを示す図である。
【図３３】ネットワーク管理モジュール３７によるダウンロードの進捗と、Playback Control Engine３２による再生の進捗とを示す図である。
【発明を実施するための形態】
【００１１】
(第１実施形態)
以降、本発明に係る記録媒体の実施形態について説明する。先ず始めに、本発明に係る再生装置の実施行為のうち、使用行為についての形態を説明する。図１は、本発明に係る再生装置の、使用行為についての形態を示す図である。図１において、本発明に係る再生装置は、再生装置２００である。この再生装置２００は、リモコン３００、テレビ４００により形成されるホームシアターシステムに、映画作品を供給するという用途に供される。
【００１２】
以上が本発明に係る再生装置の使用形態についての説明である。続いて本発明に係る再生装置が再生の対象としている、記録媒体について説明する。本発明に係る再生装置により、再生されるのは、BD-ROMである。図２は、BD-ROMの内部構成を示す図である。
本図の第４段目にBD-ROMを示し、第３段目にBD-ROM上のトラックを示す。本図のトラックは、BD-ROMの内周から外周にかけて螺旋状に形成されているトラックを、横方向に引き伸ばして描画している。このトラックは、リードイン領域と、ボリューム領域と、リードアウト領域とからなる。本図のボリューム領域は、物理層、ファイルシステム層、応用層というレイヤモデルをもつ。ディレクトリ構造を用いてBD-ROMの応用層フォーマット(アプリケーションフォーマット)を表現すると、図中の第１段目のようになる。この第1段目においてBD-ROMには、Rootディレクトリの下に、BDMVディレクトリがある。
【００１３】
BDMVディレクトリの配下には、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJAディレクトリと呼ばれる4つのサブディレクトリが存在する。
STREAMディレクトリには、いわばデジタルストリーム本体となるファイルを格納しているディレクトリであり、拡張子M2TSが付与されたファイル(00001.M2TS)が存在する。
PLAYLISTディレクトリには、拡張子MPLSが付与されたファイル(00001.MPLS)が存在する。
【００１４】
CLIPINFディレクトリには、拡張子CLPIが付与されたファイル(00001.CLPI)が存在する。以下、これらのファイルについて説明する。
＜AVClip＞
先ず初めに、拡張子.M2TSが付与されたファイルについて説明する。図３は、拡張子.M2TSが付与されたファイルがどのように構成されているかを模式的に示す図である。拡張子.M2TSが付与されたファイル(00001.M2TS,00002.M2TS,00003.M2TS・・・・・)は、AVClipを格納している。AVClipは(中段)、複数のビデオフレーム(ピクチャpj1,2,3)からなるビデオストリーム、複数のオーディオフレームからなるオーディオストリームを(上１段目)、PESパケット列に変換し(上２段目)、更にTSパケットに変換し(上３段目)、同じく字幕系のプレゼンテーショングラフィクスストリーム(下1段目のPGストリーム)及び対話系のインタラクティブグラフィクスストリーム(下1段目のIGストリーム)をTSパケットに変換して(下３段目)、これらを多重化することで構成される。
【００１５】
AVClipは、図３に示したように多重化がなされているストリームの他に、多重化がなされていないものものある。かかるAVClipは、SubClipと呼ばれ、オーディオストリーム、グラフィクスストリーム、テキスト字幕ストリーム(TextSTStream)等を構成するAVClipが存在する。
＜Clip情報＞
拡張子"CLPI"が付与されたファイル(00001.CLPI)は、AVClipのそれぞれに1対1に対応するClip情報である。管理情報故に、Clip情報は、AVClipにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。＜PlayList情報＞
拡張子"MPLS"が付与されたファイル(00001.MPLS)は、PlayLIst(PL)情報を格納したファイルである。PL情報は、AVClipを参照してプレイリストを定義する情報である。図４は、PL情報の構成を示す図であり、本図の左側に示すように、PL情報は、『MainPath情報』、『PLMark情報』、『SubPath情報』から構成される。
【００１６】
MainPath情報(MainPath())は、破線の矢印mp1に示すように複数のPlayItem情報(PlayItem())からなる。PlayItemとは、1つ以上のAVClip時間軸上において、In_Time,Out_Timeを指定することで定義される再生区間である。PlayItem情報を複数配置させることで、複数再生区間からなるプレイリスト(PL)が定義される。図中の破線mp2は、PlayItem情報の内部構成をクローズアップしている。本図に示すようにPlayItem情報は、対応するAVClipを示す『Clip_information_file_name』と、『In_time』と、『Out_time』とからなる。図５は、AVClipと、PLとの関係を示す図である。第1段目はAVClipがもつ時間軸を示し、第2段目は、PLがもつ時間軸を示す。PL情報は、PlayItem#1,#2,#3という3つのPlayItem情報を含んでおり、これらPlayItem#1,#2,#3のIn_time,Out_timeにより、3つの再生区間が定義されることになる。これらの再生区間を配列させると、AVClip時間軸とは異なる時間軸が定義されることになる。これが第2段目に示すPL時間軸である。このように、PlayItem情報の定義により、AVClipとは異なる時間軸の定義が可能になる。
【００１７】
AVClipに対する指定は、原則1つであるが、複数AVClipに対する一括指定もあり得る。この一括指定は、PlayItem情報における複数のClip_Information_file_nameによりなされる。図６は、4つのClip_Information_file_nameによりなされた一括指定を示す図である。本図において第1段目〜第4段目は、4つのAVClip時間軸(AVClip#1,#2,#3,#4の時間軸)を示し、第5段目は、PL時間軸を示す。PlayItem情報が有する、4つのClip_Information_file_nameにて、これら4つの時間軸が指定されている。こうすることで、PlayItemが有するIn_time,Out_timeにより、択一的に再生可能な4つの再生区間が定義されることになる。これにより、PL時間軸には、切り換え可能な複数アングル映像からなる区間(いわゆるマルチアングル区間)が定義されることになる。
【００１８】
PLmark情報(PLmark())は、PL時間軸のうち、任意の区間を、チャプターとして指定する情報である。図７は、PLmark情報の内部構成を示す図であり、本図の引き出し線pm1に示すようにPLmark情報は、『ref_to_PlayItem_Id』と、『Mark_time_stamp』とを含む。図８は、PLmarkによるチャプター定義を示す図である。本図において第1段目は、AVClip時間軸を示し、第2段目はPL時間軸を示す。図中の矢印pk1,2は、PLmarkにおけるPlayItem指定(ref_to_PlayItem_Id)と、一時点の指定(mark_time_stamp)とを示す。これらの指定によりPL時間軸には、3つのチャプター(Chapter#1,#2,#3)が定義されることになる。以上がPLmarkについての説明である。続いてSubPath情報について説明する。
【００１９】
SubPath情報(SubPath())は、SubClipの時間軸上にIn_Time,Out_Timeを指定することで1つ以上の再生区間を定義する情報であり、図９に示す内部構成を有している。本図に示すようにSubPath情報は、破線の引き出し線sh1に示すように複数のSubPlayItem情報(SubPlayItem())からなる。破線sh2を用いてクローズアップしているように、SubPlayItem情報は、『Clip_information_file_name』と、『In_time』と、『Out_time』と、『Sync_PlayItem_Id』と、『Sync_start_Pts_of_PlayItem』とからなる。SubClipの時間軸上に対する、In_Time,Out_Timeの指定は、『Clip_information_file_name』、『In_time』、『Out_time』によりなされる。『Sync_PlayItem_Id』及び『Sync_start_Pts_of_PlayItem』は、SubClip時間軸上の再生区間と、PL時間軸とを同期させるという同期指定をなす。この同期指定により、PL時間軸と、SubClip時間軸とは同期して進行することになる。
【００２０】
図１０は、SubClip時間軸上の再生区間定義と、同期指定を示す図である。本図において第1段目は、PL時間軸を示し、第2段目はSubClip時間軸を示す。図中のSubPlayItem.IN_timeは再生区間の始点を、SubPlayItem.Out_timeは再生区間の終点をそれぞれ示す。これによりSubClip時間軸上にも再生区間が定義されていることがわかる。矢印Sn1においてSync_PlayItem_Idは、PlayItemに対する同期指定を示し、矢印Sn2においてsync_start_PTS_of_PlayItemは、PL時間軸におけるPlayItem上の一時点の指定を示す。
【００２１】
複数AVClipの切り換えを可能とするマルチアングル区間や、AVClip−SubClipを同期させ得る同期区間の定義を可能とするのが、BD-ROMにおけるPL情報の特徴である。以上のClip情報及びPL情報は、"静的シナリオ"に分類される。
続いて"動的なシナリオ"について説明する。"動的に"というのは、再生装置２００における状態変化やユーザからのキーイベントにより再生制御の中身がかわることをいう。BD-ROMでは、Java（登録商標）アプリケーションと同様の記述により、この再生制御を記述することができる。つまりBD-ROMでは、Java（登録商標）アプリケーションが、動的シナリオとしての役割を担うことになる。
【００２２】
＜Java（登録商標）アプリケーション＞
Java（登録商標）アプリケーションについて説明する。Java（登録商標）アプリケーションは、仮想マシンのヒープ領域(ワークメモリとも呼ばれる)にロードされた1つ以上のxletプログラムからなる。このワークメモリにロードされたxletプログラム、及び、データから、アプリケーションは構成されることになる。以上がJava（登録商標）アプリケーションの構成である。
【００２３】
このJava（登録商標）アプリケーションの実体にあたるのが、図２におけるBDMVディレクトリ配下のBDJAディレクトリに格納されたJava（登録商標）アーカイブファイル(00001.jar,00002.jar)である。以降、Java（登録商標）アーカイブファイルについて、図１１を参照しながら説明する。
＜Java（登録商標）アーカイブファイル＞
Java（登録商標）アーカイブファイル(図２の00001.jar)は、1つ以上のクラスファイル、1つ以上のデータファイル等を1つにまとめることで得られるファイルである。図１１（ａ）は、アーカイブファイルにより収められているプログラム、データを示す図である。本図におけるデータは、枠内に示すディレクトリ構造が配置された複数ファイルを、java（登録商標）アーカイバでまとめたものである。枠内に示すディレクトリ構造は、Rootディレクトリ、java（登録商標）ディレクトリ、imageディレクトリとからなり、Rootディレクトリにcommon.pkgが、java（登録商標）ディレクトリにクラスファイル(aaa.class,bbb.class)が、imageディレクトリに、menu.jpgが配置されている。java（登録商標）アーカイブファイルは、これらをjava（登録商標）アーカイバでまとめることで得られる。かかるクラスファイル及びデータは、BD-ROMからキャッシュに読み出されるにあたって展開され、キャッシュ上で、ディレクトリに配置された複数ファイルとして取り扱われる。Java（登録商標）アーカイブファイルのファイル名における"zzzzz"という5桁の数値は、アプリケーションのID(applicationID)を示す。本Java（登録商標）アーカイブファイルがキャッシュに読み出された際、このファイル名における数値を参照することにより、任意のJava（登録商標）アプリケーションを構成するプログラム，データを取り出すことができる。
【００２４】
本図におけるクラスファイル(図中のaaa.class,bbb.class)は、上述したxletプログラムに対応するクラスファイルである。Java（登録商標）動作環境による動作モード(BD-Jモード)における再生手順は、このクラスファイルのインスタンスにあたるxletプログラムにより規定される。xletプログラムとは、JMF(Java（登録商標）Media FrameWork)方式のインターフェイスを利用することができるJava（登録商標）プログラムであり、JMF等の方式に従って、キーイベントに基づく処理を行う。xletプログラムは、JMF方式の処理が可能であるので、MPLSファイルに対するJMF方式のインスタンス(PlayListObject)を生成することにより、プレイリスト再生を再生装置２００に命じることができる。他にもxletプログラムでは、ファンクションAPIのコールを記述することにより、BD-ROM再生装置２００特有の処理を実行させることができる。
【００２５】
更にxletプログラムは、WWWサイトをアクセスしてコンテンツをダウンロードするという手順を実行することもできる。これによりダウンロードコンテンツと、プレイリスト再生とを交えた斬新な作品を再生させることができる。
xletプログラムのクラスファイルについて説明する。図１１（ｂ）は、クラスファイルの内部構成を示す図である。本図に示すようにクラスファイルは、通常のクラスファイル同様、『コンスタントプール』、『インターフェイス』、『メソッド1,2,3・・・・n』からなる。クラスファイルにおけるメソッドには、挙動のトリガになるキーイベントが予め登録されているメソッド(EventListner)と、BD-ROM再生装置２００側のファンクションAPIをコールするメソッドがある。これらのメソッドは、自身に割り当てられたローカル変数や、自身をコールする際の引数を用いることにより、演算等の手順が記述されている。以上がJava（登録商標）アーカイブファイルについての説明である。これで、BD-ROMについての説明を終える。続いて、本発明に係る再生装置の内部構成について説明する。
【００２６】
＜再生装置＞
図１２は、本発明に係る再生装置の内部構成を示す図である。本発明に係る再生装置は、本図に示す内部に基づき、工業的に生産される。本発明に係る再生装置は、主としてシステムLSIと、ドライブ装置という2つのパーツからなり、これらのパーツを装置のキャビネット及び基板に実装することで工業的に生産することができる。システムLSIは、再生装置の機能を果たす様々な処理部を集積した集積回路である。こうして生産される再生装置は、BD-ROMドライブ１、ReadBuffer２、デマルチプレクサ３、ビデオデコーダ４、ビデオプレーン５、P-Graphicsデコーダ６、Presentation Graphicsプレーン７、合成部８、フォントゼネレータ９、I-Graphicsデコーダ１０、スイッチ１１、InteractiveGraphicsプレーン１２、合成部１３、CLUT部１４、CLUT部１５、オーディオデコーダ１６、Network Device１７、Local Storage１８、ReadBuffer１９、デマルチプレクサ２０、命令ROM２１、ユーザイベント処理部２２、PSRセット２３、CPU２４、シナリオメモリ２５、Local Memory２６、スイッチ２７から構成される。
【００２７】
先ず初めに、BD-ROMに記録されたAVClip再生に係る構成要素(BDドライブ１〜オーディオデコーダ１６)について説明する。
BD-ROMドライブ１は、BD-ROMのローディング／イジェクトを行い、BD-ROMに対するアクセスを実行する。
Read Buffer２は、FIFOメモリであり、BD-ROMから読み出されたTSパケットが先入れ先出し式に格納される。
【００２８】
デマルチプレクサ(De-MUX)３は、Read Buffer２からTSパケットを取り出して、このTSパケットを構成するTSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、CPU２４から設定されたPIDをもつものをビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６のどれかに出力する。
ビデオデコーダ４は、デマルチプレクサ３から出力された複数PESパケットを復号して非圧縮形式のピクチャを得てビデオプレーン５に書き込む。
【００２９】
ビデオプレーン５は、非圧縮形式のピクチャを格納しておくためのプレーンである。プレーンとは、再生装置において一画面分の画素データを格納しておくためのメモリ領域である。ビデオプレーン５における解像度は1920×1080であり、このビデオプレーン５に格納されたピクチャデータは、16ビットのYUV値で表現された画素データにより構成される。ビデオプレーン５では、ビデオストリームにおける一フレーム毎の再生映像を、スケーリングすることができる。スケーリングとは、一フレーム毎の再生画像をビデオプレーン５全体の1／4(クオータという)、1／1(フルスケールという)のどちらかに変化させることである。かかるスケーリングを、BD-JモードにおいてCPU２４からの指示に従い実行するので、ビデオストリームの再生画像を、画面の隅に追いやったり、全面的に出すという画面演出が可能になる。
【００３０】
P-Graphicsデコーダ６は、BD-ROMから読み出されたプレゼンテーショングラフィクスストリームをデコードして、非圧縮グラフィクスをPresentationGraphicsプレーン７に書き込む。グラフィクスストリームのデコードにより、字幕が画面上に現れることになる。
Presentation Graphicsプレーン７は、一画面分の領域をもったメモリであり、一画面分の非圧縮グラフィクスを格納することができる。本プレーンにおける解像度は1920×1080であり、PresentationGraphicsプレーン７中の非圧縮グラフィクスの各画素は8ビットのインデックスカラーで表現される。CLUT(Color Lookup Table)を用いてかかるインデックスカラーを変換することにより、PresentationGraphicsプレーン７に格納された非圧縮グラフィクスは、表示に供される。
【００３１】
合成部８は、ビデオプレーン５に格納された非圧縮状態のピクチャデータ(i)を、Presentation Graphicsプレーン７の格納内容と合成する。
フォントゼネレータ９は、文字フォントを用いてtextSTストリームに含まれるテキストコードをビットマップに展開してPresentation Graphicsプレーン７に書き込む。
I-Graphicsデコーダ１０は、HDMVモードにおいてBD-ROM又はLocal Storage１８から読み出されたIGストリームをデコードして、非圧縮グラフィクスをInteractiveGraphicsプレーン１２に書き込む。
【００３２】
スイッチ１１は、フォントゼネレータ９が生成したフォント列、P-Graphicsデコーダ６のデコードにより得られたグラフィクスの何れかを選択的にPresentationGraphicsプレーン７に書き込むスイッチである。
Interactive Graphicsプレーン１２は、I-Graphicsデコーダ１０によるデコードで得られた非圧縮グラフィクスが書き込まれる。またInteractiveGraphicsプレーン１２には、BD-Jモードにおいて、アプリケーションにより描画された文字やグラフィクスが書き込まれる。
【００３３】
合成部１３は、Interactive Graphicsプレーン１２の格納内容と、合成部８の出力である合成画像(非圧縮状態のピクチャデータと、PresentationGraphicsプレーン７の格納内容とを合成したもの)とを合成する。かかる合成により、アプリケーションがI-Graphicsデコーダ１０に書き込んだ文字・グラフィクスを、非圧縮状態のピクチャデータ上にオーバレイして、表示することができる。
【００３４】
CLUT部１４は、ビデオプレーン５に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。
CLUT部１５は、Interactive Graphicsプレーン１２に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。
オーディオデコーダ１６は、デマルチプレクサ３から出力されたPESパケットを復号して、非圧縮形式のオーディオデータを出力する。
【００３５】
以上がAVClip再生に係る構成要素である。続いてBD-Jモードでの動作に係る構成要素(Network Device１７〜De-mux２０)について説明する。
Network Device１７は、再生装置における通信機能を実現するものであり、BD-JモードにおいてURL指定がJava（登録商標）アプリケーションから与えられれば、そのURLにあたるwebサイトとのTCPコネクション、FTPコネクション等を確立する。かかるコネクション確立によりwebサイトからのダウンロードをJava（登録商標）アプリケーションに行わせる。
【００３６】
Local Storage１８は、Network Device１７により確立されたコネクションを通じてwebサイトからダウンロードされたコンテンツ等、BD-ROM以外の記録媒体、通信媒体から供給されたコンテンツを、メタデータと共に格納しておくためのハードディスクである。このメタデータは、ダウンロードコンテンツをLocalStorage１８にバインドして管理するための情報であり、このLocal Storage１８をアクセスすることで、BD-Jモードにおけるアプリケーションは、ダウンロードコンテンツを利用した様々な処理を行うことができる。
【００３７】
Read Buffer１９は、FIFOメモリであり、Local Storage１８に格納されたダウンロードコンテンツに、SubClipが含まれている場合、このSubClipを構成するTSパケットを、先入れ先出し式に格納する。
デマルチプレクサ(De-MUX)２０は、Read Buffer１９からTSパケットを取り出して、TSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、所望のPIDをもつものをフォントゼネレータ９、I-Graphicsデコーダ１０、オーディオデコーダ１６に出力する。
【００３８】
以上のNetwork Device１７〜De-mux２０により、Java（登録商標）アプリケーションがネットワークを通じてダウンロードしたコンテンツを、BD-ROMに記録されたコンテンツ同様再生させることができる。続いて、再生装置における統合制御を実現する構成要素(命令ROM２１〜スイッチ２７)について説明する。
命令ROM２１は、再生装置の制御を規定するソフトウェアを記憶している。
【００３９】
ユーザイベント処理部２２は、リモコンや再生装置のフロントパネルに対するキー操作に応じて、その操作を行うユーザイベントをCPU２４に出力する。
PSRセット２３は、再生装置に内蔵されるレジスタであり、64個のPlayer Status Register(PSR)と、4096個のGeneralPurpose Register（GPR)とからなる。Player Status Registerの設定値(PSR)のうち、PSR4〜PSR8は、現在の再生時点を表現するのに用いられる。
【００４０】
PSR4は、1〜100の値に設定されることで、現在の再生時点が属するタイトルを示し、0に設定されることで、現在の再生時点がトップメニューであることを示す。
PSR5は、1〜999の値に設定されることで、現在の再生時点が属するチャプター番号を示し、0xFFFFに設定されることで、再生装置においてチャプター番号が無効であることを示す。
【００４１】
PSR6は、0〜999の値に設定されることで、現在の再生時点が属するPL(カレントPL)の番号を示す。
PSR7は、0〜255の値に設定されることで、現在の再生時点が属するPlayItem(カレントPlay Item)の番号を示す。
PSR8は、0〜OxFFFFFFFFの値に設定されることで、45KHzの時間精度を用いて現在の再生時点(カレントPTM(PresentationTiMe))を示す。以上のPSR4〜PSR8により、図８におけるAVClip時間軸において、現在の再生時点はどこであるかを特定することができる。
【００４２】
CPU２４は、命令ROM２１に格納されているソフトウェアを実行して、再生装置全体の制御を実行する。この制御の内容は、ユーザイベント処理部２２から出力されたユーザイベント、及び、PSRセット２３における各PSRの設定値に応じて動的に変化する。
シナリオメモリ２５は、カレントのPL情報やカレントのClip情報を格納しておくためのメモリである。カレントPL情報とは、BD-ROMに記録されている複数PL情報のうち、現在処理対象になっているものをいう。カレントClip情報とは、BD-ROMに記録されている複数Clip情報のうち、現在処理対象になっているものをいう。
【００４３】
Local Memory２６は、BD-ROMからの読み出しは低速である故、BD-ROMの記録内容を一時的に格納しておくためのキャッシュメモリである。かかるLocalMemory２６が存在することにより、BD-Jモードにおけるアプリケーション実行は、効率化されることになる。
スイッチ２７は、BD-ROM及びLocal Storage１８から読み出された各種データを、Read Buffer２、Read Buffer１９、シナリオメモリ２５、LocalMemory２６のどれかに選択的に投入するスイッチである。
【００４４】
以上が、本実施形態に係る再生装置のハードウェア構成である。続いて本実施形態に係る再生装置におけるファイルシステム構造について説明する。
図１３（ａ）は、Local Storage１８におけるディレクトリ構造を示す図である。
本図のディレクトリ構造においてROOTディレクトリの配下には、「DLDAT」というサブディレクトリがあり、その配下に、「PKG00001」,「PKG00002」というサブディレクトリがある。「PKG00001」,「PKG00002」はそれぞれがBD-ROMのボリュームラベルであり、「PKG00001」というボリュームラベルを有したBD-ROMに対応するディレクトリ、「PKG00002」というボリュームラベルのBD-ROMに対応したディレクトリが、LocalStorage１８に存在することを意味する。そのうち、サブディレクトリ「PKG00001」は、ボリュームラベル「PKG00001」のBD-ROMに対応する、ダウンロードデータの置き場所であることを示す。各BD-ROMに対応するディレクトリにサブディレクトリを配置することで各BD-ROMについてのダウンロードデータが個別に格納される。このサブディレクトリの配下に、BD-ROMに格納されていたのと同様、PlayLIst情報、Clip情報、AVClipが格納されており、この他にJava（登録商標）アーカイブファイルや、ストリーム格納位置情報ファイルが存在する。
【００４５】
ここでBD-ROMに記録されていたAVClipが、映画作品の本編に該当するのに対し、Local Storage１８上に記録されているAVClipは、現在劇場で上映されている映画作品の予告編であるものとする。予告編の内容は、時代の移り変わりによって変わるので、現在、現在劇場で上映されている映画作品の予告編が、LocalStorage１８上に、AVClipとして記録されているのである。
【００４６】
後者のストリーム格納位置情報ファイルについて説明する。このストリーム格納位置情報ファイルは、Virtual Packageを構成するファイルの一覧を示す情報である。図１３（ｂ）は、ストリーム格納位置情報ファイルの内部構成を示す図であり、ストリーム格納位置情報ファイルは、VirtualPackageを構成する各AVClip及びClip情報の格納位置情報からなる。各格納位置情報は、AVClip及びClip情報の"識別子"と、LocalStorage１８におけるそのAVClip及びClip情報の格納位置を示す"ファイルパス"とからなる。かかる格納位置情報を参照することにより、VirtualPackageを構築するにあたって、Virtual Packageの構成要素となるAVClip及びClip情報が、揃っているかを、確認することができる。
【００４７】
以上が、本実施形態に係る再生装置のファイルシステム構成である。続いて本実施形態に係る再生装置におけるソフトウェア構造について説明する。
図１４は、ROM２４に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。本図に示すように、再生装置のレイア構成は、以下のa),b),c)からなる。つまり、
a)BD Player Deviceの第１階層、
b)BD Player Modelの第２階層、
c)Application Runtime Enviromentの第３階層からなる。
【００４８】
これらの階層のうち図１２に示した再生装置のハードウェア構成は、第１階層に属することになる。本図の第１階層"BD Player Device"には、図１２に示したハードウェア構成のうちビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６からなる"デコーダ"と、ビデオプレーン５、PresentationGraphicsプレーン７、Interactive Graphicsプレーン１２からなる"プレーン"、BD-ROM及びそのファイルシステム、LocalStorage１８及びそのファイルシステムを含む。
【００４９】
第２階層"BD Player Model"は、以下のb1),b2)の層からなる。つまり、
b2)Playback Control Engine３２の層
b1)Virtual File System３８及びPresentation Engine３１の層
からなり、自身より上位の階層に対し、ファンクションAPIを提供する。
このうち図１２に示したPSRセット２３やシナリオメモリ２５は、Playback Control Engine３２内に存在することになる。
【００５０】
第３階層"Application Runtime Enviroment"は、以下のc1)のスタック階層からなる。つまり、
c1)HDMVモジュール２９a、BD-Jモジュール２９bが存在する層
からなる。
以降、このソフトウェア構造における各構成要素について説明する。
【００５１】
＜HDMVモジュール２９a、BD-Jモジュール２９b＞
HDMVモジュール２９aは、ナビゲーションコマンドを解読し、解読結果に基づきPlayback Control Engine３２に対するファンクションコールを実行する。
BD-Jモジュール２９bは、いわゆるJava（登録商標）プラットフォームであり、
d1-1)Java（登録商標）仮想マシン３０
d1-2)Java（登録商標）仮想マシンが動作するためのミドルウエアを階層化した構成になっている。
【００５２】
＜Java（登録商標）仮想マシン３０＞
Java（登録商標）仮想マシン３０は、アプリケーションを構成するxletプログラムをワークメモリにロードして、xletプログラムを解読し、解読結果に従って、下位層に対する制御を行う。下位層への制御は、メソッドをミドルウェアに発行して、BD再生装置が対応しているファンクションコールに置き換えさせ、置換後のファンクションコールをPlaybackControl Engine３２に発行することでなされる。
【００５３】
（Java（登録商標）仮想マシン３０の内部構成）
ここでJava（登録商標）仮想マシン３０の内部構成について説明する。図１５は、Java（登録商標）仮想マシン３０の内部構成を示す図である。本図に示すようにJava（登録商標）仮想マシン３０は、図１２に示したCPU２４と、ユーザクラスローダ５２、メソッドエリア５３、ワークメモリ５４、スレッド５５a,b・・・n、Java（登録商標）スタック５６a,b・・・nとから構成される。
【００５４】
ユーザクラスローダ５２は、BDJAディレクトリのJava（登録商標）アーカイブファイルにおけるクラスファイルをLocal Memory２６等から読み出してメソッドエリア５３に格納する。このユーザクラスローダ５２によるクラスファイル読み出しは、ファイルパスを指定した読み出しをアプリケーションマネージャ３６がユーザクラスローダ５２に指示することでなされる。ファイルパスがLocalMemory２６を示しているなら、ユーザクラスローダ５２は、アプリケーションを構成するJava（登録商標）アーカイブファイルにおけるクラスファイルを、LocalMemory２６からワークメモリ５４に読み出す。ファイルパスがFile Syste上のディレクトリを示しているなら、ユーザクラスローダ５２は、アプリケーションを構成するJava（登録商標）アーカイブファイルにおけるクラスファイルを、BD-ROM又はLocalStorage１８からワークメモリ５４に読み出す。
【００５５】
メソッドエリア５３は、ユーザクラスローダ５２によりLocal Memory２６から読み出されたクラスファイルが格納される。
ワークメモリ５４は、いわゆるヒープエリアであり、様々なクラスファイルのインスタンスが格納される。ワークメモリ５４には、常駐型のレジデントアプリケーションやメソッドエリア５３に読み出されたクラスファイルに対応するインスタンスが格納される。このインスタンスが、アプリケーションを構成するxletプログラムである。かかるxletプログラムをワークメモリ５４に配置することによりアプリケーションは実行可能な状態になる。
【００５６】
スレッド５５a,b・・・nは、ワークメモリ５４に格納されたメソッドを実行する論理的な実行主体であり、ローカル変数や、オペランドスタックに格納された引数をオペランドにして演算を行い、演算結果を、ローカル変数又はオペランドスタックに格納する。図中の矢印ky1,ky2,kynは、ワークメモリ５４からスレッド５５a,b・・・nへのメソッド供給を象徴的に示している。物理的な実行主体がCPU唯1つであるのに対し、論理的な実行主体たるスレッドは、最大64個Java（登録商標）仮想マシン３０内に存在し得る。この64個という数値内において、スレッドを新規に作成することも、既存のスレッドを削除することも可能であり、スレッドの動作数は、Java（登録商標）仮想マシン３０の動作中において増減し得る。スレッドの数は適宜増やすことができるので、複数スレッドにより1つのインスタンスの並列実行を行い、インスタンスの高速化を図ることもできる。
【００５７】
Java（登録商標）スタック５６a,b・・・nは、スレッド５５a,b・・・nと1対1の比率で存在しており、プログラムカウンタ(図中のPC)と、1つ以上のフレームとを内部に持つ。"プログラムカウンタ"は、インスタンスにおいて、現在どの部分が実行されているかを示す。"フレーム"はメソッドに対する1回のコールに対して割り当てられたスタック式の領域であり、その1回のコール時の引数が格納される"オペランドスタック"と、コールされたメソッドが用いる"ローカル変数スタック(図中のローカル変数)"とからなる。フレームは、コールが1回なされる度にJava（登録商標）スタック５６a,b・・・n上に積み上げられるのだから、あるメソッドが自身を再帰的に呼び出す場合も、このフレームは、1つ積み上げられることになる。
【００５８】
以上がJava（登録商標）仮想マシンの内部構成である。このように構成されたJava（登録商標）仮想マシンは、イベントにより駆動される実行主体(イベントドリブンの実行主体)となる。以上がJava（登録商標）仮想マシンについての説明である。
＜Presentation Engine３１＞
Presentation Engine３１は、AV再生ファンクションを実行する。再生装置のAV再生ファンクションとは、DVDプレーヤ、CDプレーヤから踏襲した伝統的な機能群であり、再生開始(Play)、再生停止(Stop)、一時停止(PauseOn)、一時停止の解除(Pause Off)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(BackwardPlay(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle
Change)、アングル切り換え(AngleChange)といった機能である。AV再生ファンクションを実現するべく、Presentation Engine３１は、Read Buffer２上に読み出されたAVClipのうち、所望に時刻にあたる部分のデコードを行うよう、ビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６を制御する。所望の時刻としてPSR8(カレントPTM)に示される箇所のデコードを行わせることにより、AVClipにおいて、任意の時点を再生を可能することができる。
【００５９】
＜Playback Control Engine３２＞
再生制御エンジン(Playback Control Engine３２(PCE))３２は、プレイリストに対する再生制御ファンクション(i)、PSRセット２３における状態取得／設定ファンクション(ii)といった諸機能を実行する。PLに対する再生制御ファンクションとは、PresentationEngine３１が行うAV再生ファンクションのうち、再生開始や再生停止を、カレントPL情報及びClip情報に従って行わせることをいう。これら機能(i)〜(ii)は、HDMVモジュール２９a〜BD-Jモジュール２９bからのファンクションコールに応じて実行する。
【００６０】
ここでPlayback Control Engine３２による処理と、Java（登録商標）仮想マシンによる処理との同期について説明する。PlaybackControl Engine３２は、ファンクションがコールされれば、PL情報に基づく処理手順を実行する。再生しようとするAVClipが15分、30分という再生時間を有するなら、これらの時間、上述した処理は継続することになる。ここで問題になるのは、Java（登録商標）仮想マシン３０がサクセス応答を返す時間と、PlaybackControl Engine３２が実際に処理を終える時間とのギャップである。Java（登録商標）仮想マシン３０は、イベントドリブンの処理主体であるためコール直後に再生成功か、再生失敗かを示す応答を返すが、PlaybackControl Engine３２がAVClip及びPlayItemの再生を終了するのは、15分、30分経過後であるので、サクセス応答をアプリケーションに返す時間を基準にしたのでは、15分、30分経過後にあたる処理終結を感知しえない。PL再生において早送り、巻戻しが行われると、この15分、30分という再生期間は前後に変動することになり、処理終結の感知は更に困難になる。そこでPlaybackControl Engine３２は、PlayItemの再生終了時、AVClipの再生終了時に、PlayItemやAVClipの再生が終了したことを示すイベントをアプリケーションに出力する。かかる出力により、PlaybackControl Engine３２がPlayItemやAVClipの再生を終結した時点を、アプリケーションは知得することができる。
【００６１】
以上が、Java（登録商標）仮想マシン、Network Device３１、Playback Control Engine３２の説明である。PlaybackControl Engine３２に対する、Java（登録商標）仮想マシンによる制御は、Virtual Packageを通じてなされる。VirtualPackageを通じた、Playback Control Engine３２に対する制御を実現するため、再生装置には、以下に示す構成要素(ネットワーク管理モジュール３７、VirtualFileSystem部３８、管理情報変換モジュール３９、メソッド実行モジュール４０)が存在する。以降これらの構成要素について説明する。
【００６２】
＜ネットワーク管理モジュール３７＞
ネットワーク管理モジュール３７は、アプリケーションからのメソッド呼出に従って、Virtual Package構築に必要なデータを、映画作品のプロバイダが運営しているWWWサイトからダウンロードする。VirtualPackage構築に必要なデータには、ストリーム格納位置情報ファイル、PlayList情報、Clip情報、AVClipがある。Work Memory５４上のアプリケーションによるダウンロード要求がなされると、ネットワーク管理モジュール３７は、ネットワークを通じて、VirtualPackage構築に必要なデータをダウンロードし、Local Storage１８に書き込んでゆく。
【００６３】
このダウンロードにあたっての書き込みの順序は、
ストリーム格納位置情報ファイル→PlayList情報→複数Clip情報→複数AVClip
となる。
ここでPlayList情報−複数のClip情報の書き込みが完了した段階で、Virtual Packageの構築は可能になる。
【００６４】
＜Virtual FileSystem部３８＞
Virtual FileSystem部３８は、第２階層に属する構成要素の1つであり、アプリケーションからのメソッド呼出に従い、Virtual Packageを構築する。VirtualPackageの構築処理には、Virtual Packageを構成する各AVClipの状態管理と、Virtual Package情報の生成処理とが含まれる。
【００６５】
１.Virtual Package情報
Virtual Package情報は、BD-ROMにおけるボリューム管理情報を拡張した情報である。ここでボリューム管理情報は、ある記録媒体上に存在するディレクトリ−ファイル構造を規定する情報であり、ディレクトリについてのディレクトリ管理情報、ファイルについてのファイル管理情報とからなる。
【００６６】
Virtual Package情報とは、BD-ROMのディレクトリ−ファイル構造を示すボリューム管理情報に、新たなファイル管理情報を追加することにより、BD-ROMにおけるディレクトリ−ファイル構造の拡張を図ったものである。ここでBDボリューム管理情報に追加されるファイル管理情報とは、LocalStorage１８に存在するPlayLIst情報、Clip情報、AVClipについてのファイル管理情報であり、かかるファイル管理情報を追加したVirtualPackage情報を作成し、Playback Control Engine３２に引き渡すことにより、Playback Control Engine３２は、LocalStorage１８上にあるPlayLIst情報、Clip情報、AVClipがBD-ROMに存在するものとして認識することができる。図１６は、VirtualFileSystem部３８によるVirtual
Package情報構築の一例を示す図である。本図の左上は、BD-ROMにおけるディレクトリ−ファイル構造であり、図２に示したものと同じである。本図の左下は、LocalStorage１８におけるディレクトリ−ファイル構造であり、図１３（ａ）に示したものと同じである。このLocal Storage１８上のPlayLIst情報、Clip情報、AVClipについてのファイル管理情報を、BD-ROMのボリューム管理情報に追加する。
【００６７】
具体的には、
i)Local Storage１８上のPlayLIst(00002.MPLS)についてのファイル管理情報を、BDボリューム構成情報におけるMPLSディレクトリのディレクトリ管理情報に追加し、
ii)Local Storage１８上のClip情報#2、Clip情報#3、#4(00002.CLPI,00003.CLPI,00004.CLPI)についてのファイル管理情報を、BDボリューム構成情報におけるCLPIディレクトリのディレクトリ管理情報に追加し、
iii)Local Storage１８上のAVClip#2、AVClip#3、#4(00002.M2TS,00003.M2TS,00004.M2TS)についてのファイル管理情報を、BDボリューム構成情報におけるSTREAMディレクトリのディレクトリ管理情報に追加する。
【００６８】
こうすることにより、Virtual Package情報が得られる。この追加により得られたボリューム管理情報が、Virtual Package情報である。
こうして作成されたVirtual Package情報を、Playback Control Engine３２に引き渡す。これにより、PlaybackControl Engine３２は、Local Storage１８上のPlayLIst情報、Clip情報、AVClipを、BD-ROM上のPlayLIst情報、Clip情報、AVClipと対等に扱うことができる。以上がVirtualPackage情報生成についての説明である。続いてVirtual FileSysterm部３８による状態管理について説明する。
【００６９】
３.enable及びdisable
"状態管理"とは、Virtual Packageを構築すべきAVClipが、enableであるか、disableであるかの管理である。ここでPlayList情報における1つのPlayItem情報がマルチアングル対象である場合、マルチアングル区間を構成するそれぞれのAVClipが、enableであるか／disableであるかという状態管理の対象になる。また、PlayItem情報にSubPlayItem情報が存在する場合、そのSubPlayItem情報のClip_information_file_nameに記述されているAVClipも、enableであるか／disableであるかという状態管理の対象になる。
【００７０】
図１７（ａ）は、Virtual FileSystem部３８による状態管理の一例を示す図である。本図に示すように、AVClipの状態には、"enable"、"disable"というものがある。"enable"とは、Clip情報と、それに対応するAVClipとがLocalStorage１８上に存在し、そのAVClipがRead Only Modeに設定されている状態をいう。
一方、"disable"とは、Clip情報がLocal Storage１８上に存在するもの、これに対応するAVClipが、Local Storage１８に存在しないか(MissingStream)、存在したとしても、削除され得る状態にあることをいう。
【００７１】
disableは、削除され得るものと取り扱われるので、Local Storage１８上の容量が不足した際、disableのAVClipは削除の対象になる。
従ってLocal Storage１８にAVClipがダウンロードされた場合、Virtual FileSysterm部３８がこのAVClipをenableに変化させない限り、PlaybackControl Engine３２は、このダウンロードされたAVClipを存在しないものとして扱うことになる。Virtual File Systerm部３８の作為がない限り、PlaybackControl Engine３２は、Local Storage１８上のAVClipを認識しないので、不安定な状態のまま、Playback ControlEngine３２が再生を進めるようなことは有り得ない。
【００７２】
３.Read Only Mode及びそのキャンセル
続いてRead Only Modeについて説明する。Read Only Modeへの変化は、Local Storage１８におけるボリューム管理情報の、ファイル管理情報を書き換えることでなされる。この書き換えの対象は、LocalStorage１８におけるDLDATディレクトリ配下のPACKAGE00001ディレクトリにおけるファイル管理情報であり、かかるファイル管理情報における、ファイル属性を全てRead-only属性に書き換えることにより、LocalStorage１８上のAVClipは、書き換えられることはなくなる。そのため、Playback Control Engine３２による再生中、アプリケーションがLocalStorage１８上のAVClipをアクセスしようとしても、AVClipが書き換えられることはないので、再生中のAVClipの同一性は保たれることになる。
【００７３】
Local Storage１８上のAVClipを、Playback Control Engine３２から認識できるような状態にした際、LocalStorage１８において、そのAVClipを格納しているファイルをRead-only属性にするので、Java（登録商標）仮想マシン上のアプリケーションが、ダイレクトにLocalStorage１８をアクセスしたとしても、そのAVClipの内容が途中から変わってしまうことはない。
【００７４】
Read Only Modeのキャンセルについて説明する。Read Only Modeのキャンセルは、Read
Only Modeへの変化同様、LocalStorage１８におけるボリューム管理情報の、ファイル管理情報を書き換えることでなされる。この書き換えの対象は、Local Storage１８におけるDLDATディレクトリ配下のPACKAGE00001ディレクトリにおけるファイル管理情報であり、かかるファイル管理情報における、ファイル管理情報を、Read-only属性からRe-writable属性に書き換えることにより、LocalStorage１８上のAVClipは、いつでも書き換えられることになる。そのため、Playback Control Engine３２による再生が済んだ直後、LocalStorage１８におけるファイル管理情報を、Re-writable属性に書き換えることにより、Local Storage１８上のAVClipは、削除の対象になる。以上が、状態管理についての説明である。
【００７５】
４.状態管理とVirtual Package情報との関係
この状態管理の内容は、Virtual Package情報の作成に反映されうる。つまり状態管理において、disableとされているAVClipについてのファイル管理情報は、BD-ROMのボリューム管理情報に追加されず、enableとされているAVClipについてのファイル管理情報のみが、BD-ROMのボリューム管理情報に追加されるのである。こうして作成したVirtualPackage情報を、Playback Control Engine３２に引き渡すことにより、Playback Control Engine３２は、enableと設定されたAVClipのみを認識することになる。BD-ROM上に存在するAVClip#1、及びLocalStorage１８上に存在するAVClip#2、AVClip#3、AVClip#4のうち、AVClip#1、AVClip#2はenableであるが、AVClip#3、AVClip#4はdisableであるとすると、VirtualFileSysterm部３８は、図１８に示すように、Virtual Package情報の作成を行う。図１８は、状態管理を反映したVirtual Package情報の作成を示す図である。本図においてAVClip#2についてのファイル管理情報は、BDボリューム構成情報におけるSTREAMディレクトリのディレクトリ管理情報に追加されるが、AVClip#3、AVClip#4についてのファイル管理情報は、BDボリューム構成情報におけるSTREAMディレクトリのディレクトリ管理情報に追加されない。図１８左下における4つのAVClipのうち、AVClip#2にあたる、00002.M2TSがenableであり、AVClip#3、AVClip#4にあたる、00003.M2TS,00004.M2TSがdisableであるものとする。そうすると、本図に示すように、LocalStorage１８において、AVClip#2にあたる、00002.M2TSのファイル属性は、Read-only属性に設定される。またAVClip#3、AVClip#4にあたる、00003.M2TS,00004.M2TSのファイル属性は、Re-writable属性に設定される。こうして作成したVirtualPackage情報をPlayback Control Engine３２に引き渡すことにより、Playback Control Engine３２は、disableにあるAVClip#3、AVClip#4を認識することはない。
【００７６】
ここでClip情報は存在するが、対応するAVClipがLocal Storage１８上にない場合、そのAVClipはdisableに設定された。しかし、Clip情報に対するファイルパスがストリーム格納位置情報ファイルにあるにもかかわらず、AVClipはおろかClip情報すらLocalStorage１８にない場合、Virtual Packageの構築は不可能になる。つまり、Virtual Packageにおいて本来あるべきClip情報が存在しないことは、VirtualPackage全体に波及することを意味する。
【００７７】
５.Virtual Package情報の引き渡し
以上の１.〜４.にて作成されたVirtual Package情報が、どのように引き渡されるかについて説明する。
ここで図１８に示したように、PlayList情報、Clip情報#2〜Clip情報#4、AVClip#2はダウンロードが完了しているものAVClip#3、AVClip#4のダウンロードは未完である状態である場合を想定する。かかる状態でVirtualPackage構築が要求されれば、Virtual FileSysterm部３８は、図１９に示すような動作を行う。図１９は、ネットワーク管理モジュール３７によるダウンロードが途上である場合の、VirtualFileSystem部３８によるVirtual Package構築を示す図である。本図の状況でVirtual Package構築が要求されれば(◎1VPCreate)、BD-ROM及びLocal Storage１８からディレクトリ管理情報及びファイル管理情報を読み出して(◎2,3)、VirtualPackageの構築を行い、Virtual Package情報をPlayback Control Engine３２に引き渡すと共に(◎4)、アプリケーションに引き渡す(◎5)。こうすることでPlaybackControl Engine３２は、Virtual Packageを通じてBD-ROM、及び、Local Storage１８上のAVClipから1つのストリームシーケンスを構築することができる。
【００７８】
またアプリケーションに引き渡したVirtual Package情報においてClip情報#3、Clip情報#4が存在するもの、AVClip#3、AVClip#4は存在しないので、アプリケーションは、AVClip#3、AVClip#4がストリーム列を構成するもの、これらが存在しないストリーム(MissingStream)であると認識することができる。
以上がVirtual FileSystem部３８についての説明である。
【００７９】
＜管理情報変換モジュール３９＞
管理情報変換モジュール３９は、BD-J Module２９ｂ内のミドルウエアの1つであり、Virtual Package中に存在するPlayList情報のインスタンス生成をアプリケーションが要求した際、Java（登録商標）仮想マシンのWorkMemory５４に、JMF形式によるPlayList情報のインスタンス(図１６のWork Memory５４内に示したPlayListオブジェクト)を生成する。
【００８０】
このインスタンス(PlayListオブジェクト)は、PlayList情報である"データ部"と、複数の"メソッド部"とをもつ。
PlayListオブジェクトにおける複数のメソッドは、再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(PauseOff)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(BackwardPlay(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle Change)、アングル切り換え(AngleChange)といった、諸々の再生処理を、Playback Control Engine３２に行わせるものである。よってアプリケーションは、このメソッドを呼び出すことにより、そのPlayListにより規定されるストリームシーケンスを再生したり、かかる再生を停止したりすることができる。
【００８１】
ここで、PlayListオブジェクトにより再生されるPlayList情報について説明する。このPlayList情報は、Local Storage１８上に存在するPlayList情報である。
BD-ROM上のPlayList情報は、BD-ROM上のAVClipのみを参照しているのに対し、Local Storage１８上のPlayList情報は"ProgressivePlayList情報"と呼ばれ、BD-ROM上のAVClipと、Local Storage１８上のAVClipとを参照する。
【００８２】
ここでProgressive PlayList情報が、PlayItem情報#1〜PlayItem情報#5という5つのPlayItem情報から構成されているものとする。このうち、3つのPlayItem情報#1〜PlayItem情報#3は、BD-ROM上のClip情報を参照するものであり、残りの2つ(PlayItem情報#4、PlayItem情報#5)が、LocalStorage１８上のClip情報を参照するものである場合、このProgressive PlayList情報は、図２０（ａ）に示すように、BD-ROM上のAVClipと、LocalStorage１８上のAVClipとから1つのストリームシーケンスを定義することができる。
【００８３】
図２０（ａ）は、ローカルストレージに格納されたPL情報により、どのようなPlayList再生時間軸が定義されるかを示す図である。第1段目は、BD-ROMに記録されたAVClipにおける再生時間軸を示し、第2段目は、ローカルストレージに格納されたPL情報により定義されるPlayList再生時間軸を示す。第3段目は、ローカルストレージに格納されたAVClip#2における再生時間軸を、第4段目は、ローカルストレージに格納されたAVClip#3における再生時間軸を、第5段目は、ローカルストレージに格納されたAVClip#4における再生時間軸を示す。
【００８４】
PlayList情報におけるPlayItemのうち、PlayItem情報#4、PlayItem情報#5、PlayItem情報#6が、AVClip#2、AVClip#3、AVClip#4を再生区間として指定するなら、ProgressivePlayList情報は、BD-ROM上のAVClip及びLocal Storage１８上のAVClipを1つのストリームシーケンスとして規定することができる。
ここでProgressive PlayList情報の"Progressive"とは、PlayList情報を構成するPlayItem情報により参照されるAVClipのうち、一部のものがenableであれば、残りのものがdisableであったとしても、ストリームシーケンスの再生を開始することができることを意味する。
【００８５】
図２０（ｂ）は、Progressive PlayList情報の概念を示す図である。本図の第2段目〜第5段目は、図２０（ａ）の第2段目、第3段目、第4段目、第5段目を示すものである。図２０（ａ）の第3段目、図２０（ｂ）の第3段目のAVClipはenableであるが、第4段目〜第5段目のAVClipがdisableである場合、ProgressivePlayList情報により参照される4つのAVClipのうち、AVClip#3、AVClip#4は再生しえないもの、AVClip#1、AVClip#2は再生し得るので、ストリームシーケンスの再生は開始できることになる。このように、一部のAVClipであれば、投機的に再生を開始することができるのがProgressivePlayList情報の特徴である。
【００８６】
Virtual Package構築がVirtual FileSystem部３８によりなされた段階において、図２０のようなProgressivePlayList情報についてのインスタンス生成を、Work Memory５４上のアプリケーションが要求した場合、管理情報変換モジュール３９は、図２１に示すような処理を行う。図２１は、管理情報変換モジュール３９によるインスタンス生成を示す図である。
【００８７】
Virtual Packageに存在するPlayList情報のインスタンス生成を要求する、生成メソッドをアプリケーション呼び出すと(◎1)、管理情報変換モジュール３９はPlayList情報をシナリオメモリ２５から読み出して(◎2)、このProgressivePlayList情報をデータ部にし、メソッド部を付け加えたPlayListオブジェクトをWork Memory５４に生成する(◎3)。かかるPlayListオブジェクトがWorkMemory５４に得られるので、アプリケーションは、このPlayListオブジェクトのメソッドを呼び出すことにより、PlayList情報により規定されるストリームシーケンスの再生を、PlaybackControl Engine３２に命じることができる。
【００８８】
図２２は、PlayListオブジェクトにおけるPlayメソッドの呼び出しを示す図である。このPlayメソッドの呼び出しにより(◎4)、PlaybackControl Engine３２に対し、PL再生のファンクションコールがなされる(◎5)。そうすると、Playback Control Engine３２は、再生が要求されたPlayList情報により参照されているAVClip(BD-ROM上のAVClip#1、LocalStorage１８上のAVClip#2)を読み出し(◎6,7)、順次デコーダに供給させる。以上が管理情報変換モジュール３９についての説明である。
【００８９】
＜メソッド実行モジュール４０＞
メソッド実行モジュール４０は、BD-J Module２９ｂ内のミドルウェアにおける構成要素の1つであり、Java（登録商標）仮想マシン３０に存在するアプリケーションからのメソッド呼出に応じて、各種メソッドを実行する。メソッド実行モジュール４０により実行されるメソッドには、様々なものがあるが、getMissingStreamsメソッド、enableClipメソッド、disableClipメソッド、getDisableClipsメソッドといったものは、本願における特徴的なものである。以降、これらのメソッドについて説明する。
【００９０】
1. getMissingStreamsメソッド
getMissingStreamsメソッドとは、ネットワーク管理モジュール３７によるダウンロードが継続している際に、未だMissing StreamになっているAVClipが存在するかを、VirtualFileSystem部３８に問い合わせるメソッドである。
ここで図１９のようなVirtual Package情報がWork Memory５４上のアプリケーションに引き渡されたものとする。Virtual Package構築時に判明していたMissingStreamがAVClip#3、AVClip#4であり、その後、アプリケーションがgetMissingStreamsメソッドを呼び出すことにより、最新のMissingStreamについて、Virtual FileSystem部３８に問い合わせたとする。この場合のメソッド実行モジュール４０による処理は、図２３のようになる。
【００９１】
図２３は、この問合せの結果を模式的に示す図である。本図において◎1に示すように、getMissingStreamsメソッドの呼び出しがなされ、この呼出により、VirtualFileSystem部３８がAVClip#4を戻り値として返すとする。そうすると、getMissingStreamsメソッドを呼び出す前においてMissingStreamがAVClip#3、AVClip#4であったのに対し、getMissingStreamsメソッドの呼出後においてAVClip#4になったことから、AVClip#3はMissingStreamでなくなった(ダウンロードが完了した)と判定することができる。こうすることにより、ダウンロードの進行により、Missing Streamがどれだけ解消されたかを知得することができる。
【００９２】
２.enableClipメソッド
enableClipメソッドとは、Virtual Packageの構築時においてMissing Streamであったが、その後、Missing StreamでなくなったAVClipが存在する場合、そのAVClipをenableに設定するためのメソッドである。
ここで図２３においてAVClip#3がMissing Streamでなくなったことが明らかになったので、このAVClip#3を対象にしたenableClipメソッドを呼び出したものとする。この場合、メソッド実行モジュール４０は、図２４に示すような処理を行う。図２４は、enableClipメソッドの呼出を模式的に示す図である。このAVClip#3を対象にしたenableClipメソッドの呼び出しがなされると(◎3)、アプリケーションは、AVClip#3をenableに変化させ、Success応答をアプリケーションに返す(◎2)。こうすることにより、VirtualPackageの構築にてMissing StreamでなくなったAVClipをenableに変化させてゆくことができる。AVClipをenableにした際、メソッド実行モジュール４０は、新たにenableにしたAVClipを含むVirtualPackage情報を、アプリケーション及びPlayback Control Engine３２に引き渡させる。これにより、Playback ControlEngine３２及びアプリケーションは、新たに、enableになったAVClipを認識し、アクセスすることができる。
【００９３】
３.disableClipメソッド
disableClipメソッドとは、enableにあるAVClipを、disableに設定するメソッドである。ここで図２０に示したProgressivePlayList情報の再生中において、AVClip#2の再生が完了した旨のイベントが、Playback Control Engine３２により通知されたものとする。この場合、AVClip#2の再生が完了したことが通知されれば、図２５のような処理を行う。図２５は、disableClipメソッドの呼出を模式的に示す図である。本図において、PlaybackControl Engine３２による再生に進行に伴い、AVClip#2の再生が完了したことが、end of Clipイベントにより通知されれば(◎1)、このAVClip#2を対象にしたdisableClipメソッドを呼出すことにより(◎2)、アプリケーションは、AVClip#2をdisableに変化させることができる。こうすることにより、再生が済んだAVClipをdisableに変化させてゆくことができる。こうすることにより、AVClip#2はdisableに設定されるので、AVClip#2は、削除の対象になる。予告編を構成するようなAVClipが時々刻々とダウンロードされるような場合、ProgressivePlayList情報により規定されるストリームシーケンスのうち、再生が済んだものを順次disableにしてゆけば、再生が済んだAVClipを、disableにして削除の対象にしてゆくことができる。AVClipをdisableにした際、メソッド実行モジュール４０は、新たにdisableにしたAVClipを除いたVirtualPackage情報を、アプリケーション及びPlayback Control Engine３２に引き渡させる。これにより、Playback ControlEngine３２は、disableになったAVClipを認識することはない。尚、Local Storage１８上のAVClipを削除するにあたって、ミドルウェアは、削除しようとするアプリケーションの書き込み権限をチェックした上で、その削除を実行する。これは、不本意な削除によるAVClipの消失を防ぐためである。
【００９４】
４．getDisableClipsメソッド
getDisableClipsメソッドとは、Disable になっている AVClip が存在するかを問い合わせるメソッドである。このメソッドの呼出によりアプリケーションはこのメソッドを使って現在Disable となっているAVClip があるかどうかの情報を得ることができる。使用例としては、例えば、 Progressive PlayList 再生中、ユーザからのチャプタースキップ要求を受けたときに、アプリケーションは、ジャンプ先のAVClip がDisableかどうかをこのメソッドを使って判断する。そして、Disableであれば、チャプタースキップを行わず、「現在ダウンロード中のため、そのチャプターにはまだジャンプできません」などと、注意を喚起する表示を行う。こうすることにより、チャプタースキップといった、特殊再生を、ProgressivePlayListの再生中に実行することができる。
【００９５】
以上で、メソッド実行モジュール４０により実行されるメソッドについての説明を終わる。
これまで説明した各構成要素について、フローチャートを参照しながら、その処理手順の詳細を説明する。
図２６は、Virtual Package構築時の処理を示すフローチャートである。本フローチャートでは、ストリーム格納位置情報ファイルに格納されたAVClipに対応するClip情報がLocalStorage１８に完備されているかどうかを先ず判定し(ステップＳ１)、Clip情報に未完のものがあれば、アプリケーションからのVirtual Package呼出に対し、Falseリターンを行う(ステップＳ１０)。Clip情報に対するファイルパスがストリーム格納位置情報ファイルにあるにもかかわらず、AVClipはおろかClip情報すらLocalStorageにない場合、Virtual Packageの構築は不可能になる。
【００９６】
一方、ストリーム格納位置情報ファイルに記述された全てのClip情報が、Local Storage１８に存在すれば(ステップＳ１でYes)、LocalStorage１８におけるPlayList情報のファイル管理情報を、BDボリューム管理情報におけるPLAYLISTディレクトリのディレクトリ管理情報に追加し(ステップＳ２)、LocalStorage１８におけるClip情報のファイル管理情報を、BDボリューム管理情報におけるCLPINFディレクトリのディレクトリ管理情報に追加する(ステップＳ３)。その後、ステップＳ４〜ステップＳ８のループ処理を実行する。このループ処理は、LocalStorage１８に存在するそれぞれのClip情報について、ステップＳ６〜ステップＳ８の処理を繰り返すものである(ステップＳ４、ステップＳ５)。ここで、ループ処理の対象となる1つのClip情報をClip情報xとする。
【００９７】
本ループ処理において、Clip情報xに対応するAVClipを特定し(ステップＳ６)、このAVClipはenableであるか、disableであるかを判定する(ステップＳ７)。enableであれば、LocalStorage１８におけるAVClipxのファイル管理情報を、BDボリューム管理情報におけるSTREAMディレクトリのディレクトリ管理情報に追加する(ステップＳ８)。一方、AVClipがdisableであれば、ステップＳ８をスキップする。以上の処理を全てのClip情報及びAVClipについて繰り返せば、enableのAVClipについてのファイル管理情報が、BDボリューム管理情報に追加されることになる。こうした追加により得られたBDボリューム管理情報がVirtualPackage情報になる。このVirtual Package情報をVirtual Package呼出の呼出元のアプリケーション及びPlaybackControl Engine３２に引き渡し(ステップＳ９)、処理を終える。
【００９８】
図２７（ａ）は、enableClipメソッドの呼出時の処理手順を示すフローチャートである。このメソッドの呼出がなされれば、呼出時の引数からenableにすべきAVClipyを特定し(ステップＳ１４)、ステップＳ１５、ステップＳ１６の判定を順次行う。ステップＳ１５は、AVClipyがLocalStorage１８に格納されているか否かを判定であり、ステップＳ１６は、AVClipyのファイルパスがストリーム格納位置情報ファイルに記載されているかの判定である。これらの判定ステップのどちらかがNoであれば、呼出元にFalseを返し、本フローチャートの処理を終える(ステップＳ１９)。一方、ステップＳ１５−ステップＳ１６の双方がYesなら、AVClipyをenableにして、LocalStorage１８において、AVClipyを格納したファイルのファイル属性をRead-Only属性にして、AVClipyをRead Only Modeにする(ステップＳ１７)。その後、Successを戻り値としてリターンする(ステップＳ１８)。
【００９９】
図２７（ｂ）は、disableClipメソッドの呼出時の処理手順を示すフローチャートである。このメソッドの呼出がなされれば、呼出時の引数からdisableにすべきAVClipyを特定し(ステップＳ２１)、ステップＳ２２、ステップＳ２３の判定を順次行う。ステップＳ２２は、AVClipyが再生中であるか否かの判定であり、ステップＳ２３は、AVClipyのファイルパスがストリーム格納位置情報ファイルに記載されていないかの判定である。これらの判定ステップのどちらかがYesであれば、呼出元にfalseを返し、本フローチャートの処理を終える(ステップＳ２６)。一方、ステップＳ２２−ステップＳ２３の双方がYesなら、AVClipyをdisableにして、LocalStorage１８において、AVClipyを格納しているファイルのファイル属性をRe-writable属性にしてAVClipyのRead Only Modeをキャンセルする(ステップＳ２４)。その後、Successを戻り値としてリターンする(ステップＳ２５)。
【０１００】
図２８は、Playback Control Engine３２による再生手順を示すフローチャートである。本フローチャートは、PlayList情報における先頭のPlayItem情報をPlayItemiとして、ステップＳ３３〜ステップＳ４２のループ処理を実行するものである。ステップＳ３３〜ステップＳ４２のループ処理における制御変数は、変数iであり、ステップＳ３３〜ステップＳ４０の処理を実行して、その後、制御変数iをインクリメントするという処理を、変数iが、PlayItem数(NumberOf PlayItem)を越えるまで実行するものである(ステップＳ４１)。
【０１０１】
このステップＳ３２〜ステップＳ４０の処理について説明する。これらの処理は、PlayItem情報iのClip_information_file_nameに記述されているAVClipを、AVClipjとし(ステップＳ３３)、再生の対象とする。ステップＳ３４は、AVClipjがenableであるか否かの判定であり、もしAVClipjがenableでなければ、本フローチャートの処理をその時点で中止する。もしenableであれば、AVClipjのうち、PlayItem.In_timeからPlayItem.Out_timeまでの部分を再生するよう、ドライブ装置及びデコーダに指示する(ステップＳ３５)。
【０１０２】
ステップＳ３６は、PlayItem情報iをSync_PlayItem_idに指定しているSubPlayItemkが存在するか否かの判定である。もし存在しなけば、そのままステップＳ４１に移行する。
もし存在すれば、SubPlayItemkのClip_information_file_nameに記述されているAVClipをAVCliphにし(ステップＳ３８)、そのAVCliphがenableであるか否かを判定する(ステップＳ３９)。もしenableであれば、そのAVCliphのうち、Sync_Start_PTS_of_PlayItemから、Out_timeまでを再生するよう、ドライブ装置及びデコーダに指示してステップＳ４１に移行する(ステップＳ４０)。
【０１０３】
もしそのAVCliphがenableでない場合は、ステップＳ４０をスキップする。以上の処理を、PlayList情報を構成する全てのPlayItem情報について繰り返すことにより、PlayList情報にて規定されるストリームシーケンスの再生がなされる。  図２９は、アプリケーションの処理手順を示すフローチャートである。先ず、ストリーム格納位置情報ファイルと、PlayLIst情報、Clip情報、AVClipのダウンロードを要求する(ステップＳ５１)。そしてVirtualPackageの構築要求を行う(ステップＳ５２)。ステップＳ５３は、構築要求がSuccessしたか否かの判定であり、Virtual Packageの構築がSuccessになるまで、VirtualPackageの構築要求は何回でも繰り返される。
【０１０４】
Virtual Packageの構築が成功すれば、ステップＳ５５を実行する。ステップＳ５５は、Missing StreamがVirtual Package情報の中に存在するか否かの判定である。具体的には、Clip情報は存在するのに、対応するAVClipがない場合、そのAVClipをMissingStreamとして取得する(ステップＳ５６)。
その後、ステップＳ５７においてProgressive PlayList情報のPlayメソッドを呼び出し、そしてPlayメソッドがSuccessしたか否かの判定を行う(ステップＳ５８)。もしFalseであれば、本フローチャートの処理を終了する。もしSuccessであれば、ステップＳ５９〜ステップＳ６１からなるループ処理を実行する。
【０１０５】
ステップＳ５９は、getMissingStreamsメソッドの呼び出しである。ステップＳ６０は、ステップＳ５９での呼出にて、Missing Streamが通知されれば、以前取得したMissingStreamの中に、ダウンロードが完了したものが存在するか否かの判定である。。
ステップＳ６１は、AVClipの再生完了を示すイベントが発生したか否かの判定である。アプリケーションは、Playback Control Engine３２による再生がなされている間、このステップＳ５９〜ステップＳ６１の処理を繰り返し実行する。
【０１０６】
上述した処理の繰り返しにおいて、ダウンロードが完了したAVClipがあれば(ステップＳ６０においてYes)、そのダウンロードが完了したMissingStreamに対し、enableClipメソッドを呼び出す(ステップＳ６２)。こうすることにより、ダウンロードが完了したAVClipを早期にenableにすることができる。
また、再生が終了したAVClipがあれば(ステップＳ６１でYes)、そのAVClipが予告編であるか否かを判定して、もし予告編であれば、そのAVClipに対し、disableClipメソッドを呼び出す。こうすることにより、再生が完了した予告編のAVClipを早期にdisableにすることができる。
【０１０７】
＜動作＞
図２０に示したPlayList情報を再生する場合の、再生装置の動作について説明する。図３０〜図３３は、ネットワーク管理モジュール３７によるダウンロードの進捗と、PlaybackControl Engine３２による再生の進捗とを示す図である。第1段目は、ネットワーク管理モジュール３７によるダウンロードの進捗を示し、第2段目は、PlaybackControl Engine３２による再生の進捗を示す。第3段目は現状の時間軸である。第4段目は、アプリケーションによるメソッドの呼出を示す。
第1段目に示すように、ネットワーク管理モジュール３７によるダウンロードは、図２０に示したPlayList情報のダウンロード、Clip情報#1〜Clip情報#4のダウンロード、AVClip#1〜AVClip#4のダウンロードからなる。
【０１０８】
図３０（ａ）現在時点＝時点t0
時点t0は、PlayList情報、Clip情報#1〜Clip情報#4のダウンロードが完了した時点である。そのため、Virtual Packageの構築は可能になる。また、VirtualPackageにおけるPlayList情報はAVClip#1を参照しており、このAVClip#1は、少なくともenableであるから、ストリームシーケンスの再生は、t0から開始している。
【０１０９】
図３０（ｂ）現在時点＝時点t1
時点t1は、PlayList#1により参照されるAVClip#1の再生途上であるが、AVClip#2のダウンロードが完了した時点である。AVClip#2のダウンロードが完了したので、AVClip#2はdisableではなくなっている。そのためアプリケーションが、enableClipメソッドを呼出すことにより、AVClip#2をenableにすることができる。この呼出により、AVClip#2にあたるPlayItem#4は、再生の対象になる。
【０１１０】
図３１（ａ）現在時点＝時点t2
時点t2は、PlayList#1により参照されるAVClip#2の再生途上であるが、AVClip#3のダウンロードが完了した時点である。AVClip#3のダウンロードが完了したので、AVClip#3はdisableではなくなっている。そのためアプリケーションが、enableClipメソッドを呼出すことにより、AVClip#3をenableにすることができる。この呼出により、AVClip#3にあたるPlayItem#5は、再生の対象になる。
【０１１１】
図３１（ｂ）現在時点＝時点t3
時点t3は、AVClip#2の再生が完了した時点である。AVClip#2の再生が完了しており、AVClip#2は予告編であるので、PlayItem#2により参照されるAVClip#2は、削除の対象になりうる。そこで、このAVClip#2を対象にしたdisableClipメソッドを呼び出すことにより、AVClip#2を削除対象にする。こうすることでPlaybackControl Engine３２は、AVClip#2があたかも存在しなかったかのように扱うことができる。
【０１１２】
図３２（ａ）現在時点＝時点t4
時点t4は、PlayList#1により参照されるAVClip#3の再生途上であるが、AVClip#4のダウンロードが完了した時点である。AVClip#4のダウンロードが完了したので、AVClip#4はdisableではなくなっている。そのためアプリケーションが、enableClipメソッドを呼出すことにより、AVClip#4をenableにすることができる。この呼出により、AVClip#4にあたるPlayItem#6は、再生の対象になる。
【０１１３】
図３２（ｂ）現在時点＝時点t5
時点t5は、AVClip#3の再生が完了した時点である。AVClip#3の再生が完了しており、AVClip#3は予告編であるので、PlayItem#5により参照されるAVClip#3は、削除の対象になりうる。そこで、このAVClip#3を対象にしたdisableClipメソッドを呼び出すことにより、AVClip#3を削除対象にする。こうすることでPlaybackControl Engine３２は、AVClip#3があたかも存在しなかったかのように扱うことができる。
【０１１４】
図３３  現在時点＝時点t6
時点t6は、AVClip#4の再生が完了した時点である。AVClip#4の再生が完了しており、AVClip#4は予告編であるので、PlayItem#6により参照されるAVClip#4は、削除の対象になりうる。そこで、このAVClip#4を対象にしたdisableClipメソッドを呼び出すことにより、AVClip#4を削除対象にする。こうすることでPlaybackControl Engine３２は、AVClip#4があたかも存在しなかったかのように扱うことができる。
【０１１５】
以上のように本実施形態によれば、ネットワーク管理モジュール３７によるダウンロードと、Playback Control Engine３２による再生とを、パラレルに行い、ダウンロードがなされたAVClipをdisableからenableに設定することにより、PlaybackControl Engine３２による再生に供することができる。これにより、ダウンロードの進捗を追いかけるように再生処理を進める"追いかけ再生"を実現することができる。
【０１１６】
また、ダウンロードされたデジタルストリームのうち、再生が済んだものをenableからdisableに変化させることにより、再生が済んだデジタルストリームを、削除の対象として供することができるので、再生処理の進捗を追いかけるように、削除処理を進める"追いかけ削除"を実現することができる。
ダウンロードの進捗を追いかけてように再生処理を進める"追いかけ再生"や、再生処理の進捗を追いかけるように、削除処理を進める"追いかけ削除"が可能になるので、再生装置を結ぶ通信回線の通信レートが低く、また再生装置に内蔵されているLocalStorage１８の容量が小さい場合でも、BD-ROMに記録されているデジタルストリームと、Local Storage１８にダウンロードとを1つのストリームシーケンスとして扱い、連続的に再生してゆくことができる。
【０１１７】
以上の説明は、本発明の全ての実施行為の形態を示している訳ではない。下記(A)(B)(C)(D)・・・・・の変更を施した実施行為の形態によっても、本発明の実施は可能となる。本願の請求項に係る各発明は、以上に記載した複数の実施形態及びそれらの変形形態を拡張した記載、ないし、一般化した記載としている。拡張ないし一般化の程度は、本発明の技術分野の、出願当時の技術水準の特性に基づく。
【０１１８】
(A)上述したVirtual FileSysterm部３８の説明において、ディレクトリ管理情報及びファイル管理情報の具体的なデータ構造については、言及しなかったが、BD-ROMにおけるファイルシステムが、ISO／IEC13346に規定されたものである場合、ディレクトリ管理情報は、"ディレクトリファイル"、及び、"ファイルエントリ"から構成されてもよい。ディレクトリファイルは、自身の配下にあるディレクトリのディレクトリ名を記述したファイル識別記述子や、自身の配下にあるファイルのファイル名を記述したファイル識別記述子からなる。この"ファイルエントリ"は、記述子タグと、ICBタグと、アロケーション記述子長と、拡張属性と、アロケーション記述子とからなる。
【０１１９】
ファイル管理情報は、ファイルエントリから構成されてもよい。アロケーション記述子は、ファイルを構成する各エクステント毎の記録位置を示す。
この場合、Virtual Package情報の作成は、BD-ROMのボリューム管理情報におけるSTREAMディレクトリに相当するディレクトリファイルに、LocalStorage上のAVClipのファイル名のファイル識別記述子を追加し、BD-ROMのボリューム管理情報におけるSTREAMディレクトリの配下に、LocalStorage上のAVClipについてのファイルエントリーを追加することによりなされる。
【０１２０】
(B)全ての実施形態では、記録媒体をBD-ROMとして実施したが、AVClip及びPlayList情報を記録しうる記録媒体なら、どのような記録媒体であってもよい。例えば、DVD-ROM,DVD-RAM,DVD-RW,DVD-R,DVD+RW,DVD+R,CD-R,CD-RW等の光ディスク、PD,MO等の光磁気ディスクであってもよい。また、コンパクトフラッシュ（登録商標）カード、スマートメディア、メモリスティック、マルチメディアカード、PCM-CIAカード等の半導体メモリカードであってもよい。フレシキブルディスク、SuperDisk,Zip,Clik!等の磁気記録ディスク(i)、ORB,Jaz,SparQ,SyJet,EZFley,マイクロドライブ等のリムーバルハードディスクドライブ(ii)であってもよい。更に、機器内蔵型のハードディスクであってもよい。
【０１２１】
(C) 全ての実施形態における再生装置は、BD-ROMに記録されたAVClipをデコードした上でTVに出力していたが、再生装置をBD-ROMドライブのみとし、これ以外の構成要素をTVに具備させてもい、この場合、再生装置と、TVとをIEEE1394で接続されたホームネットワークに組み入れることができる。また、実施形態における再生装置は、テレビと接続して利用されるタイプであったが、ディスプレィと一体型となった再生装置であってもよい。更に、各実施形態の再生装置において、処理の本質的部分をなす部分のみを、再生装置としてもよい。これらの再生装置は、何れも本願明細書に記載された発明であるから、これらの何れの態様であろうとも、各実施形態に示した再生装置の内部構成を元に、再生装置を製造する行為は、本願の明細書に記載された発明の実施行為になる。各実施形態に示した再生装置の有償・無償による譲渡(有償の場合は販売、無償の場合は贈与になる)、貸与、輸入する行為も、本発明の実施行為である。店頭展示、カタログ勧誘、パンフレット配布により、これらの譲渡や貸渡を、一般ユーザに申し出る行為も本再生装置の実施行為である。
【０１２２】
(D)各フローチャートに示したプログラムによる情報処理は、ハードウェア資源を用いて具体的に実現されていることから、上記フローチャートに処理手順を示したプログラムは、単体で発明として成立する。全ての実施形態は、再生装置に組み込まれた態様で、本発明に係るプログラムの実施行為についての実施形態を示したが、再生装置から分離して、各実施形態に示したプログラム単体を実施してもよい。プログラム単体の実施行為には、これらのプログラムを生産する行為(1)や、有償・無償によりプログラムを譲渡する行為(2)、貸与する行為(3)、輸入する行為(4)、双方向の電子通信回線を介して公衆に提供する行為(5)、店頭展示、カタログ勧誘、パンフレット配布により、プログラムの譲渡や貸渡を、一般ユーザに申し出る行為(6)がある。(E)各フロ−チャ−トにおいて時系列に実行される各ステップの「時」の要素を、発明を特定するための必須の事項と考える。そうすると、これらのフロ−チャ−トによる処理手順は、再生方法の使用形態を開示していることがわかる。各ステップの処理を、時系列に行うことで、本発明の本来の目的を達成し、作用及び効果を奏するよう、これらのフロ−チャ−トの処理を行うのであれば、本発明に係る記録方法の実施行為に該当することはいうまでもない。
【０１２３】
(F)各実施形態において、記録媒体に記録されるデジタルストリームはAVClipであったが、DVD-Video規格、DVD-Video Recording規格のVOB(VideoObject)であってもよい。VOBは、ビデオストリーム、オーディオストリームを多重化することにより得られたISO／IEC13818-1規格準拠のプログラムストリームである。またAVClipにおけるビデオストリームは、MPEG4やWMV方式であってもよい。更にオーディオストリームは、Linear-PCM方式、Dolby-AC3方式、MP3方式、MPEG-AAC方式、Dts、WMA(Windows（登録商標）media audio)であってもよい。
【０１２４】
(G)各実施形態における映像作品は、アナログ放送で放送されたアナログ映像信号をエンコードすることにより得られたものでもよい。デジタル放送で放送されたトランスポートストリームから構成されるストリームデータであってもよい。
またビデオテープに記録されているアナログ／デジタルの映像信号をエンコードしてコンテンツを得ても良い。更にビデオカメラから直接取り込んだアナログ／デジタルの映像信号をエンコードしてコンテンツを得ても良い。他にも、配信サーバにより配信されるデジタル著作物でもよい。
【０１２５】
(H)BD-Jモジュール２９bは、衛星放送受信のために機器に組み込まれたJava（登録商標）プラットフォームであってもよい。BD-Jモジュール２９bがかかるJava（登録商標）プラットフォームであれば、本発明に係る再生装置は、MHP用STBとしての処理を兼用することになる。
更に携帯電話の処理制御のために機器に組み込まれたJava（登録商標）プラットフォームであってもよい。かかるBD-Jモジュール２９bがかかるJava（登録商標）プラットフォームであれば、本発明に係る再生装置は、携帯電話としての処理を兼用することになる。
【０１２６】
(I)レイアモデルにおいて、BD-Jモードの上にHDMVモードを配置してもよい。特にHDMVモードでの動的シナリオの解釈や、動的シナリオに基づく制御手順の実行は、再生装置に対する負担が軽いので、HDMVモードをBD-Jモード上で実行させても何等問題は生じないからである。また再生装置や映画作品の開発にあたって、動作保証が1つのモードで済むからである。
【０１２７】
更にBD-Jモードだけで再生処理を実行してもよい。BD-JモードでもPLの再生と同期した再生制御が可能になるから、強いてHDMVモードを設けなくてもよいという理由による。
(J)Local Storage１８にダウンロードされるAVClipは、特典映像や制作者、俳優のインタビューであってもよい。
(K)ある Clip が Missing Stream もしくは Rewritable かどちらの状態であるかを、アプリケーションから知る方法として、上記実施形態では、getMissingStreamメソッドを呼び出すことにしたが、java（登録商標）.net,java（登録商標）.io等のjava（登録商標）ライブラリをを用いて実現しても良い。この場合、以下のa),b),c)の方法を用いることが現実的である。a)Binding Unit Manifest File(ストリーム位置格納情報)の内容をXML Parser を利用して解析する。Binding Unit Manifest File の例：
＜Progressive＞＜ProgressiveAsset VPFilename="BDMV／STREAM／01000.m2ts"＞ 
←識別子
＜BUDAFile name="1／1／streams／0.m2ts"＞＜／BUDAFile＞
←ファイルパス
＜／ProgressiveAsset＞＜ProgressiveAsset VPFilename="BDMV／STREAM／01001.m2ts"＞＜BUDAFile name="1／1／streams／1.m2ts"＞
＜／BUDAFile＞
＜／ProgressiveAsset＞
＜ProgressiveAsset VPFilename="BDMV／STREAM／01002.m2ts"＞
＜BUDAFile name="1／1／streams／2.m2ts"＞
＜／BUDAFile＞
＜／ProgressiveAsset＞
＜／Progressive＞
"BUDA" は Binding Unit Data Area の略であり、Binding Unit Data Area とは Virtual Package に利用するファイルを格納する Local Storage 内の領域のことb)java（登録商標）.io を使って、Binding Unit Manifest File に記載されているファイルパス（ストリーム格納位置）に、xxxxx.m2ts が存在するか確認する。
例：new java（登録商標）.io.File("1／1／streams／0.m2ts").exists();／／ false の場合は Missing Streamc)ダウンロードが完了したかどうかの判断は java（登録商標）.net, java（登録商標）.io を使って、サーバ上のファイルのサイズと LocalStorage 上のファイルのサイズが一致しているかどうかを確認する。例：new java（登録商標）.net.URL(http:／／xxx.com／vp_data／0.m2ts).openConnection().getContentLength()== new java（登録商標）.io.File("1／1／streams／0.m2ts").length();／／ 一致していれば、ダウンロードが完了したとみなすことが可能
【産業上の利用可能性】
【０１２８】
本発明に係る再生装置は、ホームシアターシステムでの利用のように、個人的な用途で利用されることがありうる。しかし本発明は上記実施形態に内部構成が開示されており、この内部構成に基づき量産することが明らかなので、資質において工業上利用することができる。このことから本発明に係る再生装置は、産業上の利用可能性を有する。
【符号の説明】
【０１２９】
１  BD-ROMドライブ
２  Read Buffer
３  デマルチプレクサ
４  ビデオデコーダ
５  ビデオプレーン
６  P-Graphicsデコーダ
７  Presentation Graphicsプレーン
８  合成部
９  フォントゼネレータ
１０  I-Graphicsデコーダ
１１  スイッチ
１２  Interactive Graphicsプレーン
１３  合成部
１４  CLUT部
１５  CLUT部
１６  オーディオデコーダ
１７  Network Device
１８  Local Storage
１９  Read Buffer
２０  デマルチプレクサ
２１  命令ROM
２２  ユーザイベント処理部
２３  PSRセット
２４  CPU
２５  シナリオメモリ
２６  Local Memory
２７  スイッチ
２９a  HDMVモジュール
２９b  BD-Jモジュール
３０  Java（登録商標）仮想マシン
３１  Presentation Engine
３２  Playback Control Engine
３８  Virtual File Systerm部
【図１】
2010146695.tif 000003
【図２】
2010146695.tif 000004
【図３】
2010146695.tif 000005
【図４】
2010146695.tif 000006
【図５】
2010146695.tif 000007
【図６】
2010146695.tif 000008
【図７】
2010146695.tif 000009
【図８】
2010146695.tif 000010
【図９】
2010146695.tif 000011
【図１０】
2010146695.tif 000012
【図１１】
2010146695.tif 000013
【図１２】
2010146695.tif 000014
【図１３】
2010146695.tif 000015
【図１４】
2010146695.tif 000016
【図１５】
2010146695.tif 000017
【図１６】
2010146695.tif 000018
【図１７】
2010146695.tif 000019
【図１８】
2010146695.tif 000020
【図１９】
2010146695.tif 000021
【図２０】
2010146695.tif 000022
【図２１】
2010146695.tif 000023
【図２２】
2010146695.tif 000024
【図２３】
2010146695.tif 000025
【図２４】
2010146695.tif 000026
【図２５】
2010146695.tif 000027
【図２６】
2010146695.tif 000028
【図２７】
2010146695.tif 000029
【図２８】
2010146695.tif 000030
【図２９】
2010146695.tif 000031
【図３０】
2010146695.tif 000032
【図３１】
2010146695.tif 000033
【図３２】
2010146695.tif 000034
【図３３】
2010146695.tif 000035