以下、本発明の好適な実施形態に係る記録媒体及び再生装置について、図面を参照しながら説明する。
(実施形態1)
図1は、本発明の実施形態1による記録媒体を使用するホームシアターシステムを示す模式図である。図1において、本発明に係る記録媒体はBD−ROM101である。本図に示すように、このホームシアターシステムは、BD−ROM101を再生対象とし、再生装置102、テレビ103、リムーバブルメディア104、及びリモコン105を含む。
BD−ROM101は読み出し専用ブルーレイ・ディスク(登録商標)(BD:Blu−ray Disc)、すなわちBD−ROMディスクである。BD−ROM101はその他の可搬性記録媒体、例えば、BD−R、又はBD−RE等であってもよい。
再生装置102は、BD−ROM方式に準拠の光ディスクドライブであるBD−ROMドライブを搭載している。また、再生装置102はSDメモリーカード、メモリースティック、コンパクトフラッシュ(登録商標)、スマートメディア、マルチメディアカード、着脱可能なハードディスクドライブ等のリムーバブルメディア104を装着する装着手段を備える。
テレビ103は、映画作品の再生映像を表示したり、メニュー等を表示することで、対話的な操作環境をユーザに提供する。
リモコン105は、再生装置102の付属物であり、再生装置102に対する操作をユーザから受け付けて、操作に応じた指示信号を再生装置102に送信する。以上が本発明に係る記録媒体及び再生装置の使用形態についての説明である。
<BD−ROM101>
次に本発明に係る記録媒体であるBD−ROM101の詳細について説明する。
図2は、BD−ROM101上のデータ構造を示す模式図である。本図の第4段目にBD−ROM101を示し、第3段目にBD−ROM上のトラック202を示す。本図のトラック202は、BD−ROM101の内周から外周にかけて螺旋状に形成されているトラック202を横方向に引き伸ばして描画している。BD−ROM101は他の光ディスク、例えばDVDやCDなどと同様にその内周から外周に向けて螺旋状に記録領域を持ち、内周のリードインと外周のリードアウトの間に論理データを記録できる論理アドレス空間を有している。また、リードインの内周側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
本図の第2段目は、ファイルシステムにより管理される論理アドレス空間を示す。論理アドレス空間には、先頭からファイルシステムのボリューム情報が記録され、続いて映像データなどのアプリケーションデータが記録されている。ファイルシステムとはディスク上のデータをディレクトリまたはファイルと呼ばれる単位で表現する仕組みであり、BD−ROM101の場合ではUDF(Universal Disc Format)によって記録される。日常使っているPC(パーソナルコンピュータ)の場合でも、FATまたはNTFSと呼ばれるファイルシステムを通すことにより、ディレクトリやファイルという構造でハードディスクに記録されたデータがコンピュータ上で表現され、ユーザビリティを高めている。このファイルシステムにより、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっている。
本図の第1段目は、ファイルシステムを前提にしたBD−ROM101のアプリケーションフォーマットを示す。本実施の形態の場合、BD−ROM101上のディレクトリ、ファイル構造は、ルートディレクトリ(ROOT)直下にBDMVディレクトリ、CERTIFICATEディレクトリ、AACSディレクトリ等が置かれている。BDMVディレクトリはBD−ROM101で扱うAVコンテンツや管理情報などのデータが記録されているディレクトリであり、以下、BDMVディレクトリを中心に説明する。
BDMVディレクトリの配下には、タイトルを構成するインデックステーブルが定義されたインデックスファイル(index.bdmv)、動的なシナリオを定義するムービーオブジェクトファイル(MovieObject.bdmv)と、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJOディレクトリ、JARディレクトリ、AUXDATAディレクトリ、METAディレクトリ、BACKUPディレクトリが存在する。映像・音声といったAVコンテンツが多重化され格納されたAVクリップ(00001.m2ts)、AVクリップの管理情報を格納したクリップ情報ファイル(00001.clpi)、AVクリップの論理的な再生経路を定義したプレイリストファイル(00001.mpls)、どのJARファイルを実行するかおよびその実行方法について定義したBDJオブジェクトファイル(00001.bdjo)、BD−Jアプリケーションを格納したJARファイル(00001.jar)は、それぞれ前述のSTREAMディレクトリ、CLIPINFディレクトリ、PLAYLISTディレクトリ、BDJOディレクトリ、JARディレクトリ、DINFOディレクトリの下に配置される。
以下に、BDMVディレクトリ配下に置かれる各ファイルのデータ構造について説明する。
<インデックスファイル>
まずインデックスファイル(Index.bdmv)について説明する。インデックスファイルは記録媒体全体に関する管理情報であり、再生装置への挿入後に、インデックステーブルファイルが最初に読み出されることで、再生装置においてディスクが一意に認識される。インデックスファイルは更に、BD−ROM101において再生可能となる複数タイトルのタイトル番号と、個々のタイトルを規定するプログラムファイル、つまり、BD-Jオブジェクト又はムービーブジェクトとの対応付けを示すインデックステーブルを格納している。
図3に示すように、インデックステーブルは、BD−ROMのタイトル構造を構成する個々のタイトルと、動作モードを規定する動作モードオブジェクトとの対応付けを規定する。タイトル構造とは、BD−ROMの装填時に、視聴者への警告やコンテンツプロバイダによるロゴ表示等を伴うタイトル(ファーストプレイタイトル)の再生を開始し、ファーストプレイタイトルの再生後、映画作品の本編を構成する一般タイトル("1"、"2"、"3"というようなシリアル番号で識別される一般的なタイトル)の再生を行い、本編タイトルの再生が終了すれば、タイトル選択を受け付けるタイトル(トップメニュータイトル)を再生してユーザによる一般タイトルの選択待ちを行うというものである。
また、トップメニュータイトルは、リモコンでのユーザ操作で、「メニューに戻る」というようなコマンドが実行されるときにも再生される。映画作品と、タイトルとの関係は、映画作品と、それの複数バージョンとの関係である。つまり1つのバージョンしかないような映画作品は、「映画作品=タイトル」という関係になる。BD−ROMのタイトルは、上述したようなファーストプレイタイトル、一般タイトル、メニュータイトルのそれぞれに、動作モードを規定する動作モードオブジェクトを割り当てることで、各々のタイトルが、どのような動作モードで動作するのかを詳細に規定する。インデックステーブルでは、タイトルと、ビデオストリームとの関係を直接記述せず、タイトルと、動作モードオブジェクトとの関係を記述して、動作モードオブジェクトを通じてビデオストリームを再生させるようになっている。これば、AV再生を伴わず、動作モードオブジェクトを動作させるだけのタイトルを規定するためである。
<ムービーオブジェクトファイル>
図4に示すように、ムービーオブジェクトファイル(MovieObject.bdmv)内には、1つ以上のムービーオブジェクトが定義されており、各ムービーオブジェクトはムービーオブジェクトIDによって識別される。ムービーオブジェクトは、コマンドインタプリタを制御主体とした動作モード(HDMVモード)において、再生装置が行うべき制御手順を規定するプログラムファイルであり、プレイリストの再生の指示や他のムービーオブジェクトやタイトルへの遷移を命令する1つ以上のナビゲーションコマンドを持ち、再生装置はそのナビゲーションコマンド列を順に実行する。例えば、PlayPL#Nと記述されていれば、再生装置はPLAYLISTディレクトリの中から該当するプレイリストのファイル名を選択し再生する。また例えば、JumpObject#Nと記述されていれば、再生装置はムービーオブジェクトファイルの中から該当するムービーオブジェクトを選択し実行する。
<BDJオブジェクトファイル>
BDJオブジェクトファイルは、拡張子bdjoが付与されたプログラムファイル(xxxxx.bdjo["xxxxx"は可変、拡張子"bdjo"は固定])である。BDJオブジェクトファイルは、BD−Jモードにおいて、再生装置が行うべき制御手順を規定するBD−Jオブジェクトを格納している。BDJオブジェクトは、アプリケーション管理テーブル(ApplicationManagementTable())を含み、BD−ROM再生時において、タイトル切り替えに伴うアプリケーションシグナリングをプラットフォーム部に実行させるデータのことである。アプリケーション管理テーブルにより生存区間が規定されるアプリケーションプログラムを、特に『BD−Jアプリケーション』という。ApplicationManagementTable()は、具体的にいうと、実行すべきBD−Jアプリケーションを示すapplication_idと、BD−Jアプリケーションを起動する際の制御を示すapplication_control_codeを含む。application_control_codeは、タイトル選択後におけるアプリケーションの最初の実行状態を規定しており、BD−Jアプリケーションを仮想マシンにロードして自動開始するか(AUTOSTART)、BD−Jアプリケーションを仮想マシンにロードするが自動開始はしないか(PRESENT)を規定することができる。
<AVクリップ>
AVクリップは、拡張子m2tsが付与されたストリームファイル(xxxxx.m2ts["xxxxx"は可変、拡張子"m2ts"は固定])であり、MPEG−2トランスポートストリーム形式のデジタルストリームを格納している。
図5は、AVクリップの構成を示す図である。本図に示すようにAVクリップは、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム(PG)、インタラクティブグラフィックスストリーム(IG)のうち、1つ以上を多重化することで得られる。ビデオストリームは映画の主映像および副映像を、オーディオストリームは映画の主音声部分とその主音声とミキシングする副音声を、プレゼンテーショングラフィックスストリームは、映画の字幕をそれぞれ示している。ここで主映像とは画面に表示される通常の映像を示し、副映像とは主映像の中に小さな画面で表示する映像のことである。また、インタラクティブグラフィックスストリームは、画面上にGUI部品を配置することにより作成される対話画面を示している。AVクリップに含まれる各ストリームはPIDによって識別される。例えば、映画の映像に利用するビデオストリームには0x1011が、オーディオストリームには0x1100から0x111Fまでが、プレゼンテーショングラフィックスには0x1200から0x121Fまでが、インタラクティブグラフィックスストリームには0x1400から0x141Fまでが、映画の副映像に利用するビデオストリームには0x1B00から0x1B1Fまで、主音声とミキシングする副音声に利用するオーディオストリームには0x1A00から0x1A1Fが、それぞれ割り当てられている。
図6は、AVクリップがどのように多重化されるかを模式的に示す図である。まず、複数のビデオフレームからなるビデオストリーム、複数のオーディオフレームからなるオーディオストリーム(第1段目)を、それぞれPESパケット列に変換し(第2段目)、更にソースパケット列に変換する(第3段目)。同じくプレゼンテーショングラフィックスストリーム(PGストリーム)およびインタラクティブグラフィックスストリーム(IGストリーム)のデータを(第7段目)それぞれPESパケット列に変換し(第6段目)、更にソースパケットに変換する(第5段目)。こうして得られた、ビデオ、オーディオ、グラフィクスを構成するソースパケットをそのATSの順に配列してゆくことで、1本のストリームに多重化されたAVクリップが構成される(第4段目)。
図7の(a)は、PESパケット列に、ビデオストリームがどのように格納されるかを更に詳しく示している。本図(a)における第1段目はビデオストリームのビデオフレーム列を示す。第2段目は、PESパケット列を示す。第3段目は、これらのPESパケット列を変換することで得られるTSパケット列を示す。本図の矢印yg1,yg2,yg3,yg4に示すように、ビデオストリームにおける複数のVideo Presentation UnitであるIピクチャ、Bピクチャ、Pピクチャは、ピクチャ毎に分割され、PESパケットのペイロードに格納される。各PESパケットはPESヘッダを持ち、PESヘッダには、ピクチャの表示時刻であるPTS(Presentation Time−Stamp)やピクチャの復号時刻であるDTS(Decoding Time−Stamp)が格納される。
図7の(b)は、AVクリップに最終的に書き込まれるパケットの形式を示している。第1段目は、TSパケット列を示し、第2段目は、ソースパケット列を示す。
第1段目に示すようにTSパケットは、ストリームを識別するPIDなどの情報を持つ4Byteの「TSヘッダ」とデータを格納する184Byteの「TSペイロード」に分かれる固定長のパケットであり、前述で説明したPESパケットは分割されTSペイロードに格納される。 BD−ROMの場合、第2段目に示すように、TSパケットには、4ByteのTP_Extra_Headerが付与されて、192Byteのソースパケットに変換された状態で、AVクリップを構成する。TP_Extra_HeaderにはATS(Arrival_Time_Stamp)などの情報が記載される。ATSは当該TSパケットのPIDフィルタへの転送開始時刻を示す。AVクリップには、第3段目に示すようにソースパケットが並ぶこととなり、AVクリップの先頭からインクリメントする番号はSPN(ソースパケットナンバー)と呼ばれる。
また、AVクリップに含まれるTSパケットには、映像・音声・字幕などの各ストリーム以外にもPAT(Program Association Table)、PMT(Program Map Table)、PCR(Program Clock Reference)などがある。PATはAVクリップ中に利用されるPMTのPIDが何であるかを示し、PAT自身のPIDは0で登録される。PMTは、AVクリップ中に含まれる映像・音声・字幕などの各ストリームのPIDと各PIDに対応するストリームの属性情報を持ち、またAVクリップに関する各種ディスクリプタを持つ。ディスクリプタにはAVクリップのコピーを許可・不許可を指示するコピーコントロール情報などがある。PCRは、ATSの時間軸であるATC(Arrival Time Clock)とPTS・DTSの時間軸であるSTC(System Time Clock)の同期を取るために、そのPCRパケットがデコーダに転送されるATSに対応するSTC時間の情報を持つ。
図8はPMTのデータ構造を詳しく説明する図である。PMTの先頭には、そのPMTに含まれるデータの長さなどを記したPMTヘッダが配置される。その後ろには、AVクリップに関するディスクリプタが複数配置される。前述したコピーコントロール情報などが、ディスクリプタとして記載される。ディスクリプタの後には、AVクリップに含まれる各ストリームに関するストリーム情報が複数配置される。ストリーム情報は、ストリームの圧縮コーデックなどを識別するためストリームタイプ、ストリームのPID、ストリームの属性情報(フレームレート、アスペクト比など)が記載されたストリームディスクリプタから構成される。ストリームディスクリプタはAVクリップに存在するストリームの数だけ存在する。
<クリップ情報ファイル>
拡張子clpiが付与されたクリップ情報ファイル(xxxxx.clpi ["xxxxx"は可変、拡張子"clpi"は固定])は、AVクリップと1対1に対応する管理情報であり、図9に示すように、クリップ情報とストリーム属性情報とエントリーマップテーブルとから構成される。
クリップ情報は、本図の引出線eg1で示すように、システムレート、再生開始時刻、及び再生終了時刻を含む。システムレートは、対応するAVクリップに属するTSパケットが再生装置内でリードバッファからシステムターゲットデコーダへ転送される速度の最高値を示す。AVクリップでは、TSパケットの転送速度がシステムレート以下に抑えられるように、ソースパケットのATSの間隔が設定されている。再生開始時刻は、AVクリップの先頭のPTS、例えば先頭の映像フレームのPTSを示す。再生終了時刻は、AVクリップの後端のPTSから所定量遅れたSTCの値、例えば最後の映像フレームのPTSに1フレーム当たりの再生時間を加えた値を示す。
ストリーム属性情報は引出線eg2で示すように、AVクリップに含まれる各ストリームについての属性情報が、PID毎に登録される。属性情報はビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム毎に異なる情報を持つ。ビデオストリーム属性情報は、そのビデオストリームがどのような圧縮コーデックで圧縮されたか、ビデオストリームを構成する個々のピクチャデータの解像度がどれだけであるか、アスペクト比はどれだけであるか、フレームレートはどれだけであるかなどの情報を持つ。オーディオストリーム属性情報は、そのオーディオストリームがどのような圧縮コーデックで圧縮されたか、そのオーディオストリームに含まれるチャンネル数は何であるか、何の言語に対応するか、サンプリング周波数がどれだけであるかなどの情報を持つ。これらの情報は、再生装置が再生する前のデコーダの初期化などに利用される。
図10の(a)は、クリップ情報ファイルにおけるエントリーマップテーブルを示す図である。エントリーマップテーブルは、AVクリップ内に含まれるビデオストリームの各フレーム内符号化画像(以下Iピクチャと呼ぶ)の表示時刻を示すPTSと各Iピクチャが開始するAVクリップのSPNが記載されたテーブル情報である。
ここではテーブルの1つの行で示される対となるPTSとSPNの情報をエントリーポイント情報と呼ぶことにする。また先頭を0としてエントリーポイント毎にインクリメントした値をエントリーポイントID(以下「EP_ID」)と呼ぶことにする。このエントリーポイント情報を利用することにより、本図の(b)に示すように、再生装置はビデオストリームの時間軸上の任意の地点に対応するAVクリップのファイル位置を特定することが出来るようになる。例えば、早送り・巻戻しの特殊再生の際には、エントリーポイント情報に登録されるIピクチャを特定し選択して再生することによりAVクリップを解析することなく効率的に処理を行うことが出来る。また、エントリーポイント情報はAVクリップ内に多重化される各ビデオストリーム毎に作られ、PIDで管理される。
<プレイリストファイル>
次に、拡張子mplsが付与されたプレイリストファイル(xxxxx.mpls["xxxxx"は可変、拡張子"mpls"は固定])について説明する。
プレイリストは、AVクリップの再生経路を示すものである。図11に示すように、プレイリストは1つ以上のプレイアイテムから構成され、各プレイアイテムはAVクリップに対する再生区間を示す。各プレイアイテムはそれぞれプレイアイテムIDで識別され、プレイリスト内で再生されるべき順序で記述されている。また、プレイリストは再生開始点を示すマークを含んでいる。マークはプレイアイテムで定義される再生区間内に対して付与することでき、プレイアイテムに対して再生開始点となりうる位置に付けられ、頭出し再生に利用される。例えば、映画タイトルにおいて、マークをチャプタの先頭となる位置に付与することで、チャプタ再生することが可能である。
プレイアイテムの内容について図12を用いて説明する。プレイアイテムには、参照するAVクリップ1401と再生開始時刻1402および再生終了時刻1403、コネクションコンディション1404、及びストリーム選択テーブル1405が含まれている。参照するAVクリップ1401は、再生区間を定義するAVクリップを、対応するクリップ情報ファイルの名称で示している。再生開始時刻と再生終了時刻は時間情報であるため、図13の下段に示すように、再生装置は参照するAVクリップ1401で示されるクリップ情報ファイルのエントリーマップを参照し、指定された再生開始時刻および再生終了時刻に対応するSPNを取得し、読み出し開始位置を特定して再生処理を行う。なお、一連のプレイアイテムの再生経路をメインパスとここでは定義する。
ストリーム選択テーブル1405は、複数のストリームエントリ1409からなり、ストリームエントリ1409はストリーム選択No1406、ストリームパス情報1407、ストリーム識別情報1408からなる。ストリーム選択No1406は、ストリーム選択テーブルに含まれるストリームエントリ1409の先頭から順にインクリメントされる番号であり、再生装置でのストリーム識別のために利用される。ストリームパス情報1407は、ストリーム識別情報1408によって示されるストリームが、どのAVクリップに多重化されているかを示す情報であり、例えば”メインパス”であれば、該当するプレイアイテムのAVクリップを示し、”サブパスID=1”であれば、そのサブパスIDが示すサブパスにおいて、該当するプレイアイテムの再生区間に対応するサブプレイアイテムのAVクリップを示す。ストリーム識別情報1408は、PIDなどの情報であり、参照するAVクリップに多重化されているストリームを示す。なお、ストリームエントリ1409には、各ストリームの属性情報も同時に記録されている。ここで属性情報とは、各ストリームの性質を示す情報で、例えばオーディオ、プレゼンテーショングラフィックス、インタラクティブグラフィックスの場合には、言語属性などが含まれる。
プレイリストは、図13に示すように1つ以上のサブパスを有することが出来る。サブパスはプレイリストに登録される順にIDが振られ、サブパスIDとして、サブパスを識別するために使われる。サブパスは、メインパスと一緒に再生される一連の再生経路を示す。サブパスには、メインパスの再生に同期して再生される同期型、メインパスの再生に非同期で再生可能な非同期型があり、そのタイプはサブパスタイプに記される。サブプレイアイテムは、プレイアイテムと同様に参照するAVクリップ1401と再生開始時刻1402および再生終了時刻1403を持つ。サブパスタイプが同期型の場合は、サブプレイアイテムの再生開始時刻1402と再生終了時刻1403は、メインパスと同じ時間軸で表されるが、サブパスタイプが非同期型の場合は、サブプレイアイテムの再生開始時刻1402と再生終了時刻1403は、メインパスと違う時間軸で表される。例えば、プレイアイテム#2のストリーム選択テーブル1405に登録されているあるストリームエントリ1409が、サブパスID=0でプレゼンテーショングラフィックス1を示す場合は、サブパスID=0のサブパスの中で、プレイアイテム#2の再生区間に同期して再生するサブプレイアイテム#2のAVクリップの中に多重化されるプレゼンテーショングラフィックス1が、プレイアイテム#2再生区間に再生されることになる。また、プレイアイテム#2のストリーム選択テーブル1405に登録されているあるストリームエントリ1409が、サブパスID=2で副映像1を示す場合は、サブパスID=2のサブパスの中にあるサブプレイアイテム#1のAVクリップの中に多重化される副映像1が、プレイアイテム#2再生区間に再生されることになる。
<JARファイル>
次に、拡張子jarが付与されたJARファイル(xxxxx.jar["xxxxx"は可変、拡張子"jar"は固定])について説明する。
JARファイルは、BD−Jアプリケーションを格納している。BD−Jアプリケーションとは、Java(登録商標)2Micro_Edition(J2ME) Personal Basis Profile(PBP 1.0)と、Globally Excecutable MHP specification(GEM1.0.2)for package media targetsとをフル実装したプラットフォーム部にて動作するJava(登録商標)アプリケーションである。
このBD−Jアプリケーションは、xletインターフェイスを通じて、Application Managerにより制御される。xletインターフェイスは、”loaded”、”puased”、”active”,”destroyed”といった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アプリケーションの動作内容の詳細については後述するが、BD−Jアプリケーションは、主に以下の5つの動作を行うプログラムを備えている。
(1)後述する再生制御部7を介して、プレイリスト再生を行う。ここでいう、プレイリスト再生とは、プレイリストが管理するAVクリップを再生することをいう。
(2)インターネットなどのWWWサーバからアップデートキットを取得し、ローカルストレージへ蓄積する。
(3)BD−ROMとアップデートキットとを組み合わせて仮想ファイルの構築を仮想ファイル制御部20に命令する。
(4)再生装置のレジスタセットに値をセットする。
(5)システムターゲットデコーダに対してメニューやゲームのグラフィックスのためのPNG・JPEGを転送して、画面に表示する。
これらはプログラムの作りに応じて自由に行うことが出来、どのように制御するかは、オーサリング工程でのBD−Jアプリケーションのプログラミング工程によって決まる。
以上が、本発明にかかる記録媒体であるBD−ROMのデータ構造である。
<再生装置102>
続いて、本発明にかかる再生装置、再生方法について説明する。
図14は、再生装置102の構成を示している。再生装置102は、BD−ROMドライブ1、リードバッファ(1)2a、リードバッファ(2)2b、ローカルストレージ3、システムターゲットデコーダ4、プレーンメモリセット5a、プレーン合成部5b、HDMI送受信部6、再生制御部7、管理情報メモリ9、レジスタセット10、プログラム実行部11、プログラムメモリ12、ネットワークモジュール13、ユーザイベント処理部17、不揮発メモリ19、及び仮想ファイル制御部20から構成されている。
BD−ROMドライブ1は、仮想ファイル制御部20からの要求を元にBD−ROMディスクからデータを読み出す。BD−ROMディスクから読み出されたAVクリップはリードバッファ(1)2aに転送される。BD−ROMディスクからは、AVクリップだけでなく、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、クリップ情報ファイル、BD−Jオブジェクトファイル、JARファイルも読み出される。これらのファイルは仮想ファイル制御部20に転送される。
リードバッファ(1)2aは、BD−ROMドライブを使って読み込んだデータを一時的に格納するメモリ等で構成されたバッファである。
ローカルストレージ3は、ハードディスクをアクセスするためのビルドインメディアドライブ、SDメモリカード等の半導体メモリカードをアクセスするためのリムーバブルメディアドライブを備え、ネットワークモジュール13等の外部I/Fからダウンロードしてきたアップデートキットや、アプリケーションが使うデータなどの保存に用いられる。アップデートキットの保存領域はBD−ROM毎に分かれており、またアプリケーションがデータの保持に使用できる領域はアプリケーション毎に分かれている。SDメモリカード等に蓄積されたアップデートキット等のデータは、仮想ファイル制御部20からの要求に従ってローカルストレージ3により読み出される。読み出されたデータのうちAVクリップはリードバッファ(2)2bに転送される。アップデートキットのデータ構造については後述するが、ローカルストレージ3により読み出されるデータには、AVクリップだけでなく、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、クリップ情報ファイル、BD−Jオブジェクトファイル、JARファイル、マージ管理情報も含まれる。これらのデータは、仮想ファイル制御部20に転送される。
リードバッファ(2)2bは、ローカルストレージ3を使って読み込んだデータを一時的に格納するメモリ等で構成されたバッファである。
システムターゲットデコーダ4は、リードバッファ(1)2aに読み出されたソースパケットやリードバッファ(2)2bに読み出されたソースパケットに対して多重分離処理を行い、各ストリームをデコードし再生する処理を行う。また、プログラム実行部11の指示によりメニューなどに表示するためのJPEG、PNGなどのグラフィックスデータをデコードして再生する処理を行う。システムターゲットデコーダ4の詳細については後述する。
プレーンメモリセット5aは、複数のプレーンメモリから構成される。プレーンメモリには、主映像プレーン、副映像プレーン、IGプレーン、PGプレーン、BD−Jプレーンといったものがある。
プレーン合成部5bは、プレーンメモリセット5aの各プレーンメモリに
に書き込まれたデータを瞬時に重畳し、重畳した映像データをHDMI送受信部6へ出力する。
HDMI送受信部6は、例えばHDMI規格(HDMI:High Definition Multimedia Interface)に従って、認証フェーズ、ネゴシエーションフェーズを実行し、映像データをテレビ103へ出力する。
再生制御部7は、再生エンジン7a、再生制御エンジン7bを含み、プログラム実行部11の再生命令や、ユーザイベント処理部17よりの通知に基づいて、プレイリスト情報を介したAVクリップの再生処理等、再生装置の再生を制御する。再生制御部7は更に、再生状態の変化に応じてレジスタセット10に各種のプレーヤ変数を設定更新する。また、再生制御部7はそれらのプレーヤ変数を参照して、システムターゲットデコーダ4に復号対象のエレメンタリストリームを指定し、かつ、各エレメンタリ・ストリームの復号に必要な情報を提供する。
再生エンジン7aは、AV再生機能を実行する。AV再生機能とは、DVD再生装置、CD再生装置から踏襲した機能群であり、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切り替え、セカンダリビデオ用のピクチャデータ切り替え、アングル切り替えといった処理である。
再生制御エンジン7bは、HDMVモードの動作主体であるコマンドインタプリタ、BD-Jモードの動作主体であるJavaプラットフォームからの関数呼び出しに応じて、プレイリストの再生機能を実行する。プレイリスト再生機能とは、上述したAV再生機能のうち、再生開始や再生停止をカレントプレイリストを構成するカレントプレイリスト情報、カレントクリップ情報に従って行うことをいう。
管理情報メモリ9は、カレントプレイリスト情報やカレントクリップ情報を格納しておくためのメモリである。カレントプレイリスト情報とは、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数プレイリスト情報のうち、現在処理対象になっているものをいう。カレントクリップ情報とは、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数クリップ情報のうち、現在処理対象になっているものをいう。
再生状態/設定レジスタ(Player Status/Setting Register)セット10は、プレーヤ変数を記憶するためのレジスタ群である。プレーヤ変数の種類にはシステムパラメータ(SPRM)と、プログラムファイルが利用する任意の情報を格納できる汎用のパラメータ(GPRM)とがある。SPRMは再生装置102の状態を示す。図15はSPRMの一覧表である。各SPRMには通し番号が振られ、各通し番号に変数値が個別に対応付けられている。主なSPRMの内容は以下のとおりである。ここで、括弧内の数字は通し番号を示す。
SPRM(0) : 言語コード
SPRM(1) : プライマリオーディオストリーム番号
SPRM(2) : 字幕ストリーム番号
SPRM(3) : アングル番号
SPRM(4) : タイトル番号
SPRM(5) : チャプタ番号
SPRM(6) : プログラム番号
SPRM(7) : セル番号
SPRM(8) : 選択キー情報
SPRM(9) : ナビゲーションタイマー
SPRM(10) : 再生時刻情報
SPRM(11) : カラオケ用ミキシングモード
SPRM(12) : パレンタル用国情報
SPRM(13) : パレンタルレベル
SPRM(14) : プレーヤ設定値(ビデオ)
SPRM(15) : プレーヤ設定値(オーディオ)
SPRM(16) : オーディオストリーム用言語コード
SPRM(17) : オーディオストリーム用言語コード(拡張)
SPRM(18) : 字幕ストリーム用言語コード
SPRM(19) : 字幕ストリーム用言語コード(拡張)
SPRM(20) : プレーヤリージョンコード
SPRM(21) : セカンダリビデオストリーム番号
SPRM(22) : セカンダリオーディオストリーム番号
SPRM(23) : 再生状態
SPRM(24) : 予備
SPRM(25) : 予備
SPRM(26) : 予備
SPRM(27) : 予備
SPRM(28) : 予備
SPRM(29) : 予備
SPRM(30) : 予備
SPRM(31) : 予備
SPRM(10)は、復号処理中のピクチャのPTSを示し、そのピクチャが復号されて主映像プレーンメモリに書き込まれる度に更新される。従って、SPRM(10)を参照すれば、現在の再生時点を知ることができる。
SPRM(16)のオーディオストリーム用言語コード、及びSPRM(18)の字幕ストリーム用言語コードは、再生装置102のデフォルトの言語コードを示す。それらは再生装置102のOSD等を利用してユーザに変更させることもでき、プログラム実行部11を通じてアプリケーションプログラムに変更させることもできる。例えばSPRM(16)が「英語」を示しているとき、再生制御部7はプレイリスト再生処理において、まずPI内のストリーム選択テーブルから、「英語」の言語コードを含むストリームエントリを検索する。次に、そのストリームエントリのストリーム識別情報からPIDを抽出してシステムターゲットデコーダ4に渡す。それにより、そのPIDのオーディオストリームがシステムターゲットデコーダ4によって選択され、復号される。これらの処理は、ムービーオブジェクトファイル又はBD−Jオブジェクトファイルを利用して再生制御部7に実行させることができる。
また、再生制御部7は再生処理中、プレーヤ変数に設定された値をチェックしながら再生を制御する。再生制御部7は特に、SPRM(1)、SPRM(2)、SPRM(21)、及びSPRM(22)を更新する。それらは順に、処理中のオーディオストリーム、字幕ストリーム、セカンダリビデオストリーム、及びセカンダリオーディオストリームの各ストリーム番号を示す。例えばプログラム実行部11によってオーディオストリームのSTNを示すSPRM(1)が変更されたときを想定する。再生制御部7はそのとき、まず現時点で再生処理中のPI内のSTNテーブルから、変更後のSPRM(1)の示すSTNを含むストリームエントリを検索する。再生制御部7は次に、そのストリームエントリ内のストリーム識別情報からPIDを抽出してシステムターゲットデコーダ4に渡す。それにより、そのPIDのオーディオストリームがシステムターゲットデコーダ4によって選択され復号される。こうして、再生対象のオーディオストリームが切り換えられる。同様に、再生対象の字幕及びセカンダリビデオストリームを切り換えることもできる。
プログラム実行部11は、HDMVモジュール13、BD−Jプラットフォーム14、ミドルウェア15、モード管理モジュール16を含み、BDプログラムファイルに格納されたプログラムを実行するプロセッサである。
HDMVモジュール13は、HDMVモードの動作主体となるDVD仮想プレーヤであり、HDMVモードの実行主体となる。本モジュールは、コマンドインタプリタを具備し、ムービーオブジェクトを構成するナビゲーションコマンドを解読して実行することでHDMVモードの制御を実行する。ナビゲーションコマンドは、DVD−Videoと似たようなシンタックスで記述されているため、かかるナビゲーションコマンドを実行することにより、DVD−Videoライクな再生制御を実現することができる。
BD−Jプラットフォーム14は、BD−Jモードの動作主体であるJavaプラットフォームであり、Java2Micro_Edition(J2ME) Personal Basis Profile(PBP 1.0)と、Globally Executable MHP specification(GEM1.0.2)for package media targetsとをフル実装しており、クラスローダ、バイトコードインタプリタ、アプリケーションマネージャから構成される。BD−Jプラットフォーム14は、実行するBD−Jアプリケーションに応じて様々な機能を実現する。
クラスローダは、システムアプリケーションの1つであり、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリに格納することにより、BD−Jアプリケーションのロードを行う。
バイトコードインタプリタは、いわゆるJava仮想マシンであり、ヒープメモリに格納されているBD−Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。
アプリケーションマネージャは、システムアプリケーションの1つであり、BD−Jオブジェクト内のアプリケーション管理テーブルに基づき、BD−Jアプリケーションを起動したりBD−Jアプリケーションを終了したりする等、BD−Jアプリケーションのアプリケーションシグナリングを行う。以上で、BD−Jプラットフォーム部の内部構成についての説明を終える。
ミドルウェア15は、組込みソフトウェアのためのオペレーティングシステムであり、カーネル、デバイスドライバから構成される。カーネルは、BD−Jアプリケーションからのアプリケーションプログラミングインターフェイス(API)のコールに応じて、再生装置特有の機能をBD−Jアプリケーションに提供する。また、割込信号により割込ハンドラ部を起動する等のハードウェア制御を実現する。
モード管理モジュール16は、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブから読み出されたIndex.bdmvを保持して、モード管理及び分岐制御を行う。モード管理モジュールによるモード管理とは、動的シナリオを、BD−Jプラットフォーム14、HDMVモジュール13のどちらに実行させるかという、モジュールの割り当てである。
プログラムメモリ12は、仮想ファイル制御部20から転送されるカレント動的シナリオを格納しておき、HDMVモードの動作主体であるHDMVモジュール、BD−Jモードの動作主体であるJavaプラットフォームによる処理に供されるメモリである。カレント動的シナリオとは、BD−ROMに記録されているIndex.bdmv、BD−Jオブジェクト、ムービーブジェクトのうち、現在実行対象になっているものをいう。またプログラムメモリ12は、ヒープメモリを含む。ヒープメモリは、システムアプリケーションのバイトコード、BD−Jアプリケーションのバイトコード、システムアプリケーションが利用するシステムパラメータ、BD−Jアプリケーションが利用するアプリケーションパラメータが配置されるスタック領域である。
ネットワークモジュール13は、外部ネットワークとのデータ通信を制御するモジュールであり、プログラム実行部11の制御を受けて、インターネットなどのWWWサーバからアップデートキットを取得し、ローカルストレージへ転送する。
ユーザイベント処理部17は、リモコンを通じたユーザ操作に応答して、プログラム実行部11や再生制御部7に処理の実行を依頼する。例えば、リモコンでボタンを押した場合は、そのボタンに含まれるコマンドを実行するようプログラム実行部11に依頼する。例えば、リモコンで早送り・巻戻しボタンが押された場合には、再生制御部7に、現在再生しているプレイリストのAVクリップに対する早送り・巻戻し処理の実行を命令する。
不揮発メモリ19は、読み書き可能なメモリなどの記録媒体であり、電源が供給されなくても、記録内容を保持できる媒体、例えばフラッシュメモリ、FeRAMなどである。これは、レジスタセット10における記憶内容のバックアップに用いられる。
仮想ファイル制御部20は、BD−ROMドライブ1、ローカルストレージ3を制御して、仮想ファイルシステムの機能を実現する。仮想ファイルシステムの機能とは、仮想パッケージの構築、及び仮想パッケージを介したROMディスク及びローカルディスク上のファイルへのアクセス制御である。仮想パッケージとは、ローカルストレージ3に格納されたマージ管理情報を元に、ROMディスクに記録されたコンテンツと、ローカルストレージ3に格納されたアップデートキットとをメモリ上で組み合せた仮想的なBD−ROMパッケージである。作成された仮想パッケージは、BD−ROMのデータ構造と同じ形式を持つ。既存のROMディスクにファイルを追加するだけでなく、ROMディスク上の既存ファイルをローカルストレージ上のファイルで置き換えることも可能である。仮想ファイル制御部20による仮想パッケージ構築は、BD−ROMディスクのインサートや、プログラム実行部11の仮想ファイル作成命令がトリガとなり、タイトル再生の切替等、タイトル再生が停止しているタイミングで実行される。仮想パッケージの構築、及び仮想パッケージを介したファイルアクセス制御の詳細については後述する。
次に、図16を参照しながらシステムターゲットデコーダ4について説明する。
ソースデパケットタイザは、システムターゲットデコーダ4に転送されるソースパケットを解釈し、TSパケットを取り出しPIDフィルタに送出する。この送出にあたって、各ソースパケットのATSに応じてデコーダへの入力時刻を調整する。具体的には、ATCカウンタが生成するATCの値と、ソースパケットのATS値とが同一になった瞬間に、AVクリップの記録レートにしたがって、そのTSパケットだけをPIDフィルタに転送する。
PIDフィルタは、ソースデパケッタイザから出力されたTSパケットのうち、TSパケットのPIDが、再生に必要とされるPIDに一致するものを、PIDにしたがって、主映像ビデオデコーダ、副映像ビデオデコーダ、IGデコーダ、PGデコーダ、音声デコーダ、副音声デコーダに転送する。例えば、BD−ROMの場合には、TSパケットに含まれるPIDが0x1011である場合は主映像ビデオデコーダに、PIDが0x1B00から0x1B1Fである場合は副映像ビデオデコーダに、PIDが0x1100から0x111Fである場合は主音声デコーダに、PIDが0x1A00から0x1A1Fである場合は副音声デコーダに、PIDが0x1200から0x121Fである場合はPGデコーダに、PIDが0x1400から0x141Fである場合はIGデコーダに転送される。
図16の通りソースデパケッタイザとPIDフィルタはそれぞれ二つもち、一つはリードバッファ(1)から転送されるAVクリップ、一つはリードバッファ(2)から転送されるAVクリップを処理する。サブパスタイプが同期型の場合は、メインパスから参照されるAVクリップとサブパスから参照されるAVクリップは同期を取りながら再生する。サブパスタイプが非同期型の場合は、メインパスから参照されるAVクリップとサブパスから参照されるAVクリップは非同期で再生する。
主映像ビデオデコーダは、緩衝バッファを有し、バッファにデータを蓄えながら、TSヘッダ、PESヘッダなどの情報を取り除いて、符号化状態にあるピクチャ(Iピクチャ、Bピクチャ、Pピクチャ)を取り出し、ビデオストリームの個々のフレーム画像を所定の復号時刻(DTS)ごとにデコードすることにより複数フレーム画像を作成し、表示時刻(PTS)のタイミングで主映像プレーンに出力する。AVクリップに多重化されるビデオストリームの圧縮符号化形式にはMPEG2、MPEG4AVC、VC1などがあるため、ストリームの属性に応じて、圧縮映像の復号化方式を切り替える。
副映像ビデオデコーダは、主映像ビデオデコーダと同様の構成を持ち、入力される副映像ビデオストリームのデコードを行い、表示時刻(PTS)のタイミングでピクチャを副映像プレーンに書き出す。
IGデコーダは、ソースデパケタイザから入力されるTSパケットからインタラクティブグラフィックスストリームを抽出してデコードし、非圧縮のグラフィックスデータを表示時刻(PTS)のタイミングでIGプレーンに書き出す。
PGデコーダは、ソースデパケタイザから入力されるTSパケットからプレゼンテーショングラフィックスストリームを抽出してデコードし、非圧縮のグラフィックスデータを表示時刻(PTS)のタイミングでPGプレーンに書き出す。
主音声デコーダは、緩衝バッファを有し、バッファにデータを蓄えながら、TSヘッダ、PESヘッダなどの情報を取り除いて、音声ストリームデコード処理を行い、非圧縮のLPCM状態のオーディオデータを得て再生時刻(PTS)のタイミングで音声ミキサーに出力する。AVクリップに多重化されるオーディオストリームの圧縮符号化形式にはAC3、DTSなどがあるため、ストリームの属性に応じて、圧縮音声の復号化方式を切り替える。
副音声デコーダは、主音声デコーダと同様の構成を持ち、入力される副音声ストリームのデコードを行い、表示時刻のタイミングで非圧縮のLPCMの状態のオーディオデータを音声ミキサーに出力する。AVクリップに多重化されるオーディオストリームの圧縮符号化形式にはDolbyDigitalPlus、DTS−HD LBRなどがあるため、ストリームの属性に応じて、圧縮音声の復号化方式を切り替える。
音声ミキサーは、主音声デコーダから出力される非圧縮音声データと副音声デコーダから出力される非圧縮音声データとをミキシング(音の重ね合わせ)をしてスピーカなどに出力する。
BD−Jプロセッサは、プログラム実行部11から転送されるグラフィックスデータ(PNG、JPEG)をデコードして、BD−Jアプリケーションから指定される表示時刻にしたがって、BD−Jプレーンに出力する。
以上が再生装置の内部構成である。
<仮想ファイルシステム>
仮想ファイルシステムにおける仮想パッケージの構築、及び仮想パッケージ上のファイルアクセスについて説明する。
仮想パッケージは、BD−ROM101に記録されたファイルと、ローカルストレージ3に装着されているSDメモリカード104に記録されたアップデートキットとから構築される。先ずSDメモリカード104に記録されたアップデートキットのデータ構造について説明する。
<アップデートキット>
図17は、SDメモリカード104におけるアップデートキットの保存領域を示す図である。SDメモリカード104におけるアップデートキットの保存領域では、OrgIDディレクトリ、DiscIDディレクトリにより、各アップデートキットの保存領域がBD−ROM毎に分かれている。アップデートキット保存領域ルートディレクトリは、SDメモリカード104のルートディレクトリの直下に存在し、アップデートキット保存領域のルートを示すディレクトリで、ディレクトリ名配布媒体文字以内の固定値(BD_BUDA)である。
OrgIDディレクトリは、BD−ROM記録層上のBD管理情報(インデックスファイル)に記載されている、映画作品のプロバイダを特定する32bitの識別子(OrganizationID)を16進表記で表した、8文字の名前のディレクトリである。また、OrganizationIDの先頭の連続する0は、ディレクトリの名前から省略する。例えば、OrganizationIDが0x0000001Aの場合は、ディレクトリの名前は”1A”となる。
DiscIDディレクトリは、BD−ROM記録層上のBD管理情報(インデックスファイル)に記載されている、BD−ROM記録層を特定する128bitの識別子(DiscID)を先頭から32bitずつ4分割し、それぞれを16進表記で表したディレクトリである。また、OrganizationIDと同様にDiscIDの先頭の連続する0は、ディレクトリの名前から省略する。
DiscIDディレクトリの配下には、アップデートキット毎にアップデートキットディレクトリが作成され、その配下に各アップデートキットが存在する。図17の例では、「0123456789abcdef0123456789abcdef」というディレクトリ名のDiscIDディレクトリ配下に、「Update01」という名称のアップデートキットが保存されている。
アップデートキットは、マージ管理情報ファイル(bumf.xml)、署名情報ファイル(merge.sf)、状態シグナリングファイル(vp_unit.info)、及び他の追加コンテンツデータファイル(game.bdjo、game.jar、resources.jar、jun_01.m2ts、jun_01.clpi、jun_01.mpls、jpn_sub.m2ts、jpn_sub.clpi等)を含む。
マージ管理情報ファイル(bumf.xml)は、図18に示すように、OrganizationIDとDiscIDとマッピング情報を格納している。マッピング情報は、仮想パッケージを構成するための追加コンテンツデータファイル、及び状態シグナリングファイルのSDメモリカード104におけるファイルパス(以下、ローカルストレージファイルパスという)と、仮想ファイルシステム上でそれらのファイルへアクセスするための仮想的なファイルパス(以下、VFSファイルパスという)とを対応付けたテーブルである。具体的には、図18に示すように、マッピング情報においてローカルストレージファイルパスは、アップデートキットディレクトリからの相対パスで記載され、VFSファイルパスはディスクルートディレクトリからの相対パスで記述されている。更にマージ管理情報ファイルには、マッピング情報に示されている各追加コンテンツデータファイルのハッシュ値が格納されている。
署名情報ファイルは、マージ管理情報ファイルに対するプロバイダの電子的な署名を示すファイルであり、merge.sfというファイル名でアップデートキットディレクトリ直下に保存される。電子的な署名は、一般的に改ざん防止が必要な情報に対してハッシュ値を計算し、ハッシュ値をなんらかの秘密鍵を用いて暗号化したものを用いる。本実施形態の署名情報ファイルでは、BD−ROM記録層上にあるマージ証明書中の公開鍵に対応する秘密鍵を利用して、マージ管理情報ファイルのハッシュ値が暗号化されている。
マージ証明書は、マージ管理情報ファイルの認証に利用する証明書で、プロバイダが公開する公開鍵が含まれる。プロバイダが提供するマージ証明書は、BD−ROM記録層上にbd.certというファイル名で保存されている。マージ証明書のファイル形式の一例としてはX.509を利用することができる。
追加コンテンツデータファイルはBD−ROM記録層に記録されたオリジナルのコンテンツに対し、追加/更新するコンテンツのファイル群である。ここには、プレイリストファイル、AVクリップ、クリップ情報ファイル、ムービーオブジェクトファイル、BDJオブジェクトファイル、JARファイル、インデックスファイル等を含めることができる。
状態シグナリングファイルは、本発明に係る再生装置において、BD−Jアプリケーションによる仮想パッケージ構築状態判定に用いられるファイルである。何れのアップデートキットにおいても、状態シグナリングファイルのVFSファイルパスは、図18に示す固定パス「BDMV/JAR/11111/VFSData.info」がマージ管理情報ファイルで割り当てられる。BD−ROMのオーサリング工程では、この「BDMV/JAR/11111/VFSData.info」というファイルパスに相当するファイルをBD−ROM上に作成することが禁止されている。
尚、仮想パッケージ構築状態判定の用途では、状態シグナリングファイルの内容を特に問わないが、本実施形態形態では状態シグナリングファイルとして、アップデートキットの内容を示すVP情報ファイル(vp_unit.info)を用いる。図19は、本実施形態に係る状態シグナリングファイルの内容を示す図である。具体的には状態シグナリングファイルには、対象ROMディスクのOrganizationID、対象ROMディスクのDiscID、アップデートキットの識別子、アップデートキットの名称、バージョン番号、アップデートキットに含まれるデータの詳細、アップデートキットを代表する画像イメージのファイル名、及び、アップデートキットを代表する各言語でのテキスト情報が記録されている。これらの情報により、アップデートキットのバージョンやアップデートキットに含まれるデータの詳細な内容を容易に取得することができる。なお、図19のファイルに記録する情報は、必要に応じて追加あるいは削除してもよい。例えば、対象ROMディスクのOrganizationID、DiscIDなどは、削除してもよいし、複数記録することが出来るようにしてもよい。また、これらの情報を記録する状態シグナリングファイルの形式は、テキスト形式でも良いし、XML(Extensible Markup Language)形式、バイナリ形式などの他の形式のファイルに記録しても良い。
<仮想パッケージの構築>
次に、仮想ファイル制御部20が、マージ管理情報ファイルの内容を元にBD−ROM101に記録されたコンテンツとSDメモリカード104に記録されたコンテンツとから、仮想パッケージを構築する過程について説明する。
仮想ファイル制御部20は、以下(1)乃至(5)の手順で仮想パッケージを構築する。
(1)マージ管理情報ファイルの改竄判定
マージ管理情報ファイルの改竄判定は、マージ管理情報ファイルからハッシュ値を算出し、BD−ROM記録層上にあるマージ証明書中の公開鍵を用いて署名情報ファイルにより示されるマージ管理情報ファイルのハッシュ値を復号化したものと比較する。これらの値が一致する場合にマージ管理情報ファイルは改竄されていないと判定する。
(2)追加コンテンツデータファイルの存在確認
マージ管理情報ファイルが改竄されていない場合に、マッピング情報において示されるローカルストレージファイルパスに、各追加コンテンツデータファイルが存在することを確認する。
(3)追加コンテンツデータファイルの改竄判定
各追加コンテンツデータファイルからハッシュ値を算出し、これらの値とマッピング情報に記録されている各追加コンテンツデータファイルのハッシュ値とを比較する。これらの値が一致する場合に追加コンテンツデータファイルは改竄されていないと判定する。
(4)追加コンテンツデータファイルをリードオンリー属性へ変更
マッピング情報により対応付けが示されている各追加コンテンツデータファイルが改竄されていない場合に、追加コンテンツデータファイルをリードオンリー属性へ変更する。
(5)VFSファイルパスへの割り付け
マージ管理情報ファイルのマッピング情報を読み込み、アップデートキットの各ファイルをマッピング情報で示されるVFSファイルパスへ割りつけたディスクイメージを作成し、再生制御部7及びプログラム実行部11に提供する。
図20は、図18に示すマージ管理情報ファイルに基づいて、図2に示すBD−ROM101のファイル構成に、図17に示すアップデートキットのファイル構成を組み合わせて構築した仮想パッケージのファイル構成を示す図である。本図において太枠で示すディレクトリ、及びファイルは、実際にはSDメモリカード104に記録されているものである。
図21は、仮想ファイルシステムによって実現される仮想パッケージのコンテンツの一例を示したものである。図21では、ROMディスク上に映画本編、特典映像が記録されており、ローカルストレージ上に日本語字幕、新作映画の予告編、ボーナスゲームに関するファイル、及び、状態シグナリングファイルとして用いるVP情報ファイルが記録されている。このような場合に仮想パッケージを構築することで、仮想ファイルシステムは、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲーム、VP情報ファイルがあたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる。
<仮想パッケージへのアクセス制御>
以上の手順で仮想パッケージは構築され、以後、仮想ファイル制御部20は、再生制御部7及びプログラム実行部11からのVFSファイルパスでのアクセス要求に対し、マッピング情報を参照して実体のファイルが記録されている記録媒体を確認し、BD−ROMドライブ1及びローカルストレージ3の何れかへデータ読み出しを命令する。
具体的には、再生制御部7及びプログラム実行部11から仮想パッケージ上のファイルパスを指定して読み出し命令がなされた場合、仮想ファイル制御部20はマッピング情報を参照し、指定のファイルパスがマッピング情報のVFSファイルパスに記載されているか否かを検索する。ここで、指定のファイルパスがマッピング情報のVFSファイルパスに記載がない場合、仮想ファイル制御部20は、指定ファイルの実体がBD−ROM101に記録されていると判定し、仮想パッケージ上のファイルパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。一方、指定のファイルパスがマッピング情報のVFSファイルパスに記載されている場合、仮想ファイル制御部20は指定のファイルの実体がSDメモリカード104に記録されていると判定し、仮想パッケージ上のファイルパスをマッピング情報で対応付けられたローカルストレージファイルパスで変換して、ローカルストレージ3へ読み出し命令を転送する。これにより、再生制御部7及びプログラム実行部11は、SDメモリカード104上の追加コンテンツデータファイル、及び状態シグナリングファイルに、仮想パッケージ上のファイルパスでアクセスすることができる。ここように、ROMディスクに含まれているデータと同様に、SDメモリカード104上に追加された字幕、音声、映像等の再生を行う場合には、再生制御部7及びプログラム実行部11が仮想ファイル制御部20に上記ファイルアクセスを要求し、仮想ファイル制御部20がROMディスクあるいはSDメモリカード104上のファイルにアクセス命令を転送する。つまり、字幕、音声、映像等の再生を行う場合には、再生制御部7及びプログラム実行部11が仮想ファイル制御部20を介してROMディスクあるいはローカルストレージ上のファイルにアクセスをすることになる。
尚、仮想パッケージが構築されていない状態で、再生制御部7及びプログラム実行部11から仮想パッケージ上のファイルパスを指定して読み出し命令がなされた場合、仮想ファイル制御部20は、参照するマージ管理情報ファイルがないため、仮想パッケージ上のファイルパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。
<仮想パッケージの構築状態>
仮想パッケージの構築状態には、ローカルストレージ3に取り付けられているSDメモリカード104に、アップデートキットが記録されていない状態、SDメモリカード104にアップデートキットが記録されているが、仮想ファイル制御部20が仮想パッケージ構築を完了していない状態、及び、SDメモリカード104にアップデートキットが記録されており、仮想ファイル制御部20が仮想パッケージ構築を完了している状態の3つが考えられる。
このうち1番目の状態は、そもそもアップデートキットが存在していないので、アップデートキットのファイルへのアクセスは不可能である。しかし、2番目に状態と3番目の状態では、BD−Jアプリケーションは、read命令でSDメモリカード上のファイルパスを直接指定することで、アップデートキットのファイルにアクセスすることができる。そこで、この2つの状態の違いを判定することが重要である。以下、SDメモリカード104にアップデートキットが記録されているが、仮想ファイル制御部20が仮想パッケージ構築を完了していない状態を仮想パッケージが「準備状態」であるとし、SDメモリカード104にアップデートキットが記録されており、仮想ファイル制御部20が仮想パッケージ構築を完了している状態を仮想パッケージが「有効状態」であるとする。
仮想パッケージの準備状態、及び有効状態がどのような場合に生ずるかを、図22を参照しながら説明する。まず、準備状態は、図中のst3、及びst2で生じる状態である。st3の状態は、SDメモリカード104に記録されたアップデートキットを用いて仮想パッケージが一度構築された状態(st4)から、SDメモリカード104がローカルストレージ3から取り外され仮想パッケージが解除された後(st0)、SDメモリカード104がローカルストレージ3に再装着されたとき(st3)に生じる。通常、この後に仮想ファイル制御部20が、タイトルの切替を待って、次タイトル再生開始前に仮想パッケージを再構築することで、仮想パッケージが有効状態(st4)となる。
st2で準備状態となる場合は、仮想パッケージが一度構築された状態(st4)から、SDメモリカード104がローカルストレージ3から取り外され仮想パッケージが解除された後(st0)、BD−Jアプリケーションが起動され(st5)、その後にSDメモリカード104がローカルストレージ3に再装着されたとき(st2)に生じる。この場合、仮想ファイル制御部20は、タイトルの切替に伴うBD−Jアプリケーションの停止を待って、BD−Jアプリケーションが再起動する前の時点で仮想パッケージを再構築することで、仮想パッケージが有効状態(st4)となる。
以上のように準備状態は、アップデートキットを記録したSDメモリカード104の取り外し/再装着に伴う仮想パッケージの再構築過程で、再装着からタイトル切替がなされるまでの間に生じる状態である。
尚、仮想パッケージ構築過程のうち(3)の手順は処理負荷が大きい場合がある。例えば、アップデートキットにAVクリップ等のサイズが大きいファイルが含まれている場合、このファイルのハッシュ値計算は負荷の大きなものとなる。アップデートキットを記録したSDメモリカード104の取り外し/再装着の度に、仮想パッケージの再構築が必要となるが、このような負荷の大きな処理をその度に実行することはハードウェア資源の利用効率向上の観点から好ましくない。そこで、仮想パッケージ構築過程のうち(1)乃至(4)の手順は初回の仮想パッケージ時のみ実行し、仮想パッケージ再構築時には、(5)の手順だけを実行するよう実装することも考えられる。また、(1)乃至(4)の手順は、BD−ROM101のタイトル再生に影響を及ぼさないため、BD−ROM101のタイトル再生と並行して実行可能である。これに対して(5)の手順は、必ずタイトル再生が停止した状態で実行する必要がある。従って、(4)の段階まで済んだ状態が、準備状態であり、(5)の手順が実行された状態が、有効状態であると見なすこともできる。
<仮想パッケージの構築状態判定>
以下、仮想パッケージの構築状態が準備状態と有効状態との何れであるかを判定する手法について説明する。
図23は、BD−Jアプリケーションが有する仮想パッケージ構築状態判定機能を説明する図である。
BD−Jアプリケーションには、オーサリング工程でのBD−Jアプリケーションのプログラミング工程において、状態シグナリングファイル位置情報21が組み込まれている。状態シグナリングファイル位置情報21は、アップデートキットのマージ管理情報ファイルにおいて状態シグナリングファイルに割り当てられているVFSファイルパスである。状態シグナリングファイルに割り当てられているVFSファイルパスは、何れのアップデートキットでも共通する予め決められた固定ファイルパスであり、本実施形態では、「BDMV/JAR/11111/VFSData.info」が用いられる。
仮想パッケージ構築状態判定部22は、状態シグナリングファイル位置情報21により示されるファイルパスを指定して読み出し命令を試行し、その成否によって仮想パッケージの構築状態を判定する。具体的には、読み出し命令が成功した場合は、仮想パッケージが有効状態であると判定し、読み出し命令がエラーとなった場合は、仮想パッケージが準備状態であると判定する。
実際に、仮想パッケージが有効状態であれば、仮想パッケージ上に状態シグナリングファイル31が割り当てられており、仮想ファイル制御部20は、読み出し命令で指定のパスをローカルストレージファイルパスに変換して、ローカルストレージ3へ読み出し命令を転送するため、状態シグナリングファイルの読み出しに成功する。逆に、仮想パッケージが準備状態であれば、仮想ファイル制御部20は、読み出し命令で指定のパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。しかし、BD−ROMのオーサリング工程では、「BDMV/JAR/11111/VFSData.info」というファイルパスに相当するファイルをBD−ROM上に作成することが禁止されているため、BD−ROM101上に同名のファイルは存在し得ず、読み出し命令は必ずエラーとなる。
仮想パッケージ構築状態判定部22の判定結果は、例えば、メニュー表示部23等で利用され、仮想パッケージの構築状態に応じたて適切なメニュー表示がなされる。
尚、再生装置にローカルストレージ3にSDメモリカードが挿入されていない場合にも、もちろん状態シグナリングファイルの読み出し命令は必ずエラーとなる。このような場合にも仮想パッケージは準備状態であると判断するようにしてもよい。
以上のような機能は、図24、図25のフローチャートに示される処理手順をオブジェクト指向型コンパイラ言語で記述してコンピュータに実行させることで実現することができる。
図24は、メニュー表示制御手順を示す。本フローチャートは、ステップS1において、仮想パッケージ構築状態判定を実施し、判定の結果、仮想パッケージが有効状態である場合(ステップS2:Yes)には、メニュー画面を表示する際に、アップデートキットに含まれる追加コンテンツを呼び出すボタン、例えば、「Game」ボタンの表示を許可する(ステップS3)。一方、判定の結果、仮想パッケージが準備状態である場合(ステップS2:No)には、メニュー画面を表示する際に、追加コンテンツを呼び出す「Game」ボタンの表示を抑制する(ステップS4)。
図25は、仮想パッケージ構築状態判定処理の処理手順を示す。本フローチャートは、ステップS11において、BD−Jアプリケーションが実行されている再生装置が、仮想ファイルシステム機能に対応したものであるか否かを、再生装置内蔵の記録媒体に記録されているProfile情報等から判定する。仮想ファイルシステム機能に対応したものであれば(ステップS11:Yes)、状態シグナリングファイル位置情報21を読み出し、状態シグナリングファイルに割り当てられる固定VFSファイルパスを取得する(ステップS12)。この固定VFSファイルパスを用いて、仮想ファイル制御部20へ読み出し命令を発行することで、状態シグナリングファイルが仮想パッケージ上に存在するか否かを判定する(ステップS13)。固定VFSファイルパスを指定して状態シグナリングファイルが読み出せた場合は、仮想パッケージが有効状態であると判定し(ステップS14)、固定VFSファイルパスを指定して状態シグナリングファイルが読み出せなかった場合には、仮想パッケージが準備状態であると判定する(ステップS14)。
図25に示した処理はBD−Jアプリケーションが実行されている間、繰り返し実行される。固定VFSファイルパスを指定して状態シグナリングファイルのアクセスが可能か否かの判断結果に従って、仮想パッケージが準備状態になっているのか有効状態になっているのかを正しく判定することができるので、BD−Jアプリケーションが仮想パッケージ構築状態を誤判定することで誤動作が発生するような状況を防止することができる。
なお、仮想パッケージ構築状態判定処理は、BD−Jアプリケーションが起動した直後に行っても良い。このようにすることで、状態シグナリングファイルへのアクセス回数を減らすことができる。アクセス回数を減らすことが出来る理由は、仮想パッケージ構築が完了するタイミングが、BD−Jアプリケーションが起動する前の時点に限られ、BD−Jアプリケーションの動作中には仮想ファイルシステムの構築が完了することはあり得ないため、BD−Jアプリケーションの起動直後に実施した判断結果は、アプリケーションが終了するまでの間に変化することがないためである。従って、BD−Jアプリケーション起動直後に実施した判断結果を保存して、BD−Jアプリケーションの動作期間を通じて利用することで、仮想パッケージ構築状態を判断するために、ローカルストレージ上の状態シグナリングファイルにアクセスする回数を減らすことが出来る。これにより、BD−Jアプリケーションの処理を高速化することが出来る。
以上が、仮想パッケージの構築状態が準備状態と有効状態との何れであるかを判定する手法についての説明である。尚、図24、25のフローチャートに示した処理手順を行う主体は、仮想ファイル制御部20でもよい。また、再生装置にその他の制御部を設けて、その制御部が図24、25に示す処理手順を行うような構成にしてもよい。
あるいは、プログラム実行部11のミドルウェアが提供するAPIとして、図24、25のフローチャートに示した処理手順を実装することで、仮想パッケージが有効状態にあるか否かを、仮想ファイル制御部20、あるいは、再生装置に設けたその他の制御部から、BD−Jアプリケーションに提供するような構成にしても良い。
また、図24、25のフローチャートに示した処理手順をBD−Jアプリケーションのソースプコードに記載し、このようなBD−Jアプリケーションを実行することでプログラム実行部11にこれらの処理手順を実行させるとしてもよい。
<BD−Jアプリケーションの動作例>
図26は、ローカルストレージ3へのメディア取り付け状態、タイトルの再生状態、実際の仮想パッケージ構築状態、及びBD−Jアプリケーションによる構築状態判定結果を時系列に示した図である。ここで実行されるBD−Jアプリケーションは、図21に示すようなアップデートキットをネットワーク等から取得して、仮想パッケージの構築を要求し、仮想パッケージ構築状態に応じた特典選択メニューを表示する機能を有する。また、BD−Jアプリケーションの実体であるJARファイルには、図27の(a)、(b)に示す特典選択メニューを表示するためのPNGファイルが含まれている。
まず、図26のt0においてローカルストレージ3にSDメモリカードが挿入されてから、t1において、BD−ROMに記録されているBD−Jアプリケーションが起動される。この時点ではSDメモリカードにアップデートキットが記録されていないので、図22に示す状態遷移図では、t0時点の状態st0からst1への遷移し、更にアプリケーションの起動した状態st2へ遷移することになる。ここでBD−Jアプリケーションによる仮想パッケージ構築状態判定が実行されるが、図26のt1からt2の期間では、仮想パッケージは構築されておらず、BD−Jアプリケーションによる仮想パッケージ構築状態判定では準備状態と判定される。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、選択肢として「Making」ボタンと「Trailer」ボタンとのみを含む特典機能メニューである図27の(b)のメニューを表示させる。これらのボタンは、ROMディスク上の映画本編、特典映像へのアクセスを必要とするものである。図27の(b)の特典選択メニューでは、新作映画の予告編を再生する選択肢とボーナスゲームを実行するための選択肢が存在しないため、ユーザは新作映画の予告編の再生、及び、ボーナスゲームを実行することは出来ない。
仮想パッケージ構築状態判定で準備状態と判定されると、BD−Jアプリケーションは、ローカルストレージ3に装着されているSDメモリカードをローカルファイルパスでアクセスし、アップデートキットが記録されているか否かを判断し、アップデートキットが記録されていなければ、アップデートキットをネットワークモジュールを介してダウンロードする。アップデートキットを取得した後、BD−Jアプリケーションは、ローカルストレージ3にアップデートキットを記録させる。その後、BD−Jアプリーションは仮想ファイル制御部20に仮想ファイルシステム構築を指示を要求する。
仮想ファイル制御部20に仮想ファイルシステムの作成を要求したBD−Jアプリケーションは再生中タイトルの停止/再開始をプログラム実行部11に要求する。再生中タイトルを停止/再開始する理由は、仮想ファイルシステムの構築が完了するタイミングが、タイトル再生を開始する前の時点に限られるからである。つまり、BD−Jアプリケーションの起動中に、仮想ファイル制御部20が仮想ファイルシステムの構築を指示されたとしても、タイトル再生が一度停止し再生が再開されないと、仮想パッケージの構築が完了しないことになる。言い換えると、仮想ファイルシステムの構築が完了するための条件は、タイトル再生が開始される前に、仮想ファイル制御部20が、ローカルストレージ上の所定の位置に記録されたマージ管理情報ファイルとそのマージ管理情報ファイルに対応する(マージ管理情報ファイルに記載のある)アップデートキットの追加コンテンツデータファイルとを読み込むことができることである。この結果、図26のt2で再生中のタイトルが停止し、次にt3でタイトル再生が再開される時に、仮想パッケージの構築が完了する。図22に示す状態遷移図では、タイトル再生停止に伴うBD−Jアプリケーションの停止により状態st2から状態st3へ遷移し、更にタイトル再生の再開時に仮想パッケージ構築が完了した状態st4へ遷移することになる。ここで再生再開したタイトル内で起動したBD−Jアプリケーションにより仮想パッケージ構築状態判定が実行されると、図26のt3からt4の期間には、仮想パッケージが有効状態であると判定される。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、選択肢として「Making」ボタンと「Trailer」ボタンとに加えて「Trailer New」ボタンと「Game」ボタンとを含んだ特典機能メニューである図27の(a)のメニューを表示させる。このとき、ユーザが「Trailer New」を選択するとローカルストレージ上に追加された新作映画の予告編が再生され、「Game」を選択するとローカルストレージ上に追加されたボーナスゲームが実行されることで、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲームがあたかも1つのディスクで記録されているように動作する。
ここで、仮想パッケージの構築が完了した状態で、図26のt4においてローカルストレージ3からSDメモリカードが取り外されると、再生中のタイトルが停止されBD−Jアプリケーションは強制終了させられる。そして、ローカルストレージ3からSDメモリカードを取り外したままタイトル再生が開始されると、仮想パッケージの構築が完了していない状態で再生中タイトルのBD−Jアプリケーションが実行された状態となる。図22に示す状態遷移図では、SDメモリカードの取り外しにより状態st4から状態st0へ遷移する。そこからタイトル再生の再開により、状態st5へ遷移する。
仮想パッケージ構築が完了するための条件は、上述したように、タイトル再生が開始される前に、仮想ファイル制御部20がSDメモリカード上の所定の位置に記録されるマージ管理情報ファイルと対応するアップデートキットを読み込むことができることである。しかし、本図の例では、タイトル再生が再開されるt5の前の時点では、ローカルストレージからSDメモリカードが取り外されている。したがって、タイトル再生が開始される前に、マージ管理情報ファイルと対応するアップデートキットは存在しないので、タイトル再生が開始される前に、ローカルストレージ上の所定の位置に記録されるマージ管理情報ファイルと対応するアップデートキットとを読み込むことができない。よって、この状態でt6において、先ほど取り外したSDメモリカードがローカルストレージに再挿入されたとしても、タイトルが再生中であるため、仮想パッケージの再構築は完了しない。図22に示す状態遷移図では、SDメモリカードの再装着により状態st5から状態st2へ遷移する。
ここで、図35に示した従来技術では、t6においてSDメモリカードが再装着されることで、BD−JアプリケーションはSDメモリカードのローカルアドレスを直接指定してSDメモリカードに記録されたアップデートキットへアクセスできることから、BD−Jアプリケーションは、仮想パッケージの構築が完了している有効状態であると誤判定していた。状態遷移図で説明すると、従来技術によるBD−Jアプリケーションは、SDメモリカードの再装着により状態st5から、破線矢印a1で示すように状態st4へ遷移したと誤判定していた。そのため、従来技術のBD−Jアプリケーションでは、仮想パッケージが準備状態であるにもかかわらず、仮想パッケージが有効状態である場合の特典機能メニューである図27の(a)のメニューを表示させ、メニュー表示内容と表示内容に付随する動作との整合性がとれていないという異常事態を引き起こしていた。
これに対して、本実施形態に係るBD−Jアプリケーションは、図25に示す処理手順で、状態シグナリングファイルを利用した仮想パッケージ構築状態判定を実行することで、図26のt6からt7の期間に、仮想パッケージが準備状態であると正しく判定することができる。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、仮想パッケージが準備状態である場合の特典機能メニューである図27の(b)のメニューを表示させる。このように、従来技術を用いたBD−Jアプリケーションでは異常事態が発生し得るような場合でも、本実施形態に係るBD−Jアプリケーションによれば、アップデートキットに含まれる追加コンテンツデータファイルにアクセスする必要がある処理を選択するボタンを特典機能メニューに表示させず、メニュー表示内容と表示内容に付随する動作との整合性を保つことができる。
この後、t7においてタイトル再生を一旦終了させ、t8においてタイトル再生を再開始すると、タイトル再生が開始される前に、仮想パッケージの構築が行われる。このため、タイトル再生再開後には、仮想パッケージの構築が完了しており、再生中タイトル内のBD−Jアプリケーションによる仮想パッケージ構築状態判定でも有効状態と判定される。したがって、特典選択メニューの選択肢として特典ゲームを実行する「Game」ボタンが含まれている図27の(a)のメニューが表示される。
以上のように本実施の形態によれば、仮想パッケージ構築状態を正しく判定できるので、ローカルストレージ3にSDメモリカードが再装着されてから、BD−Jアプリケーションの停止までの間等に、BD−Jアプリケーションに誤動作が発生することを防止することができる。
また、本実施形態1では、状態シグナリングファイルに割り当てるVFSファイルパスを、予め決められた固定ファイルパスにしている。このためBD−Jアプリケーションは常に同一のファイルパスを使って、仮想パッケージ構築状態を正しく判断することができる。状態シグナリングファイルのVFSファイルパスを固定ファイルパスとすることによって更に、ひとつのアプリケーションで複数のアップデートキットを利用することや、複数のアプリケーションで同じアップデートキットを利用することが容易となる。
尚、ステップS13の判断のために利用するファイルは、マージ管理情報にVFSファイルパスの対応付けが記載されているファイルであれば、図19に示すファイル形式とは異なるファイル、例えば、状態シグナリングファイルのようにアップデートキットに属する他のファイルや、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルであってもよい。再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いて判断する場合には、アップデートキットのダウンロードの再に、そのファイルをアップデートキットと供にローカルストレージに記録する必要がある。
尚、状態シグナリングファイルがAVデータ形式であれば、アクセス時にそのAVデータが再生されてしまい、不都合が生じる場合がある。そこで、その状態シグナリングファイルをテキストファイルにしておくと、アクセス判断の際に実際に再生されることはないので不都合は生じない。また、この判定に利用するファイルのサイズは出来るだけ小さくすることにより、ファイル取得やアクセスに必要となる時間などを短縮することでき、BD−Jアプリケーションの処理を高速に実行することが出来る。
また、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いてステップS27の判断を行う場合には、そのファイルにアクセスできるVFSファイルパス情報をBD−Jアプリケーションが利用可能なように用意しておく必要がある。このVFSファイルパス情報は、マージ管理情報から参照してもよいし、再生装置内やBD−Jアプリケーション内に記録しておいてもよい。
(実施形態2)
実施形態1では、1つのBD−Jアプリケーションに対して1つのアップデートキットを用いて仮想パッケージを構築した。しかし、同一のBD−Jアプリケーションに対応する複数のアップデートキットを用意することで、1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築することも可能である。本実施形態2では、複数のアップデートキットを用いて1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築する状況での本発明の実施の形態について説明する。
図28は、SDメモリカード104に、同一のBD−Jアプリケーションに対応する2つのアップデートキットが記録された場合のデータ構造を示す図である。SDメモリカード104のアップデートキット保存領域はBD−ROM毎に分かれており、本図に示す例では、「0123456789abcdef0123456789abcdef」というDiscIDのBD−ROMに関するDiscIDディレクトリ配下に、「Update01」と「Update02」という2つのアップデートキットが記録されている。
Update01のアップデートキットディレクトリ配下には、Update01アップデートキットに関するマージ管理情報ファイル41と状態シグナリングファイル42とが配置されている。また本図には図示していないが、このアップデートキットが追加するコンテンツに関する追加コンテンツデータファイルも、アップデートキットディレクトリ配下に配置されている。
Update02のアップデートキットディレクトリにも同様に、Update02アップデートキットに関するマージ管理情報ファイル43と状態シグナリングファイル44と、このアップデートキットが追加するコンテンツに関する追加コンテンツデータファイルが配下に配置されている。
ここで、Update01の状態シグナリングファイル42、Update02の状態シグナリングファイル44は、それぞれ図19の書式で、属するアップデートキッの内容に関する情報が記載されている。
また、マージ管理情報ファイル41、マージ管理情報ファイル43は、何れもマッピング情報において、状態シグナリングファイルのローカルストレージファイルパスに同じVFSファイルパス「BDMV/JAR/11111/VFSData.info」を対応付けて示している。
図29は、Update01、及びUpdate02を用いて構築する仮想パッケージを模式的に示す図である。本図に示す例では、ROMディスク上に映画本編、特典映像が記録されている。また、Update01として、SDメモリカード上に日本語字幕、新作映画の予告編、ボーナスゲームに関するファイルが記録されており、Update02にとして、SDメモリカード上に中国語字幕、中国向け映画の予告編に関するファイルが記録されている。このような場合に構築することが出来る仮想パッケージとしては、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲームがあたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる仮想パッケージ(1)と、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の中国語字幕、中国向け映画の予告編があたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる仮想パッケージ(2)の、二つの異なる仮想パッケージがある。なお、仮想パッケージの構築に複数のアップデートキットを同時に利用することは出来ない。すなわち、一回の仮想パッケージの構築には、Update01とUpdate02の何れか一方のアップデートキットしか利用することはできず、利用するアップデートキットを変更するためには、仮想パッケージを構築しなおすことが必要となる。
実施形態1では、図24、25に示すような処理により、仮想パッケージ上の固定ファイルパス「BDMV/JAR/11111/VFSData.info」を指定して状態シグナリングファイルにアクセスできる場合に仮想パッケージが有効状態となっていると判定し、アップデートキットに含まれる追加コンテンツを利用可能な特典選択メニュー(図27の(a))を表示し、固定ファイルパスを指定して状態シグナリングファイルにアクセスできない場合に仮想パッケージが無効状態となっていると判定し、アップデートキットに含まれる追加コンテンツを利用不可能な特典選択メニュー(図27の(b))を表示していた。しかし、本実施形態2のようにBD−Jアプリケーションが複数のアップデートキットを取り扱う必要がある場合、問題が発生する場合がある。具体的には、BD−Jアプリケーションが何らかの仮想パッケージが有効状態であると判定した際に、現在の仮想パッケージ構築に用いているアップデートキットとは異なるアップデートキットが提供する追加コンテンツを利用するための特典選択メニューを表示してしまう場合である。
上記問題が発生する場合の一例を説明する。BD−ROM101に対して、日本語字幕、新作映画の予告編、ボーナスゲームをROMディスクに追加する図29のUpdate01と、中国語字幕、中国向け映画の予告編をROMディスクに追加する図29のUpdate02とが存在する場合がある。このとき、仮想ファイル制御部20又はBD−Jアプリケーションは、図25に示す仮想パッケージ構築状態判定処理を実行したとしても、どちらのアップデートキットが仮想ファイルシステムの作成に用いられているかまでは判断できない。したがって、実際には、図29のUpdate02を利用して、中国語字幕、中国向け映画の予告編をROMディスクに追加した仮想パッケージ(2)が作成されているにもかかわらず、BD−Jアプリケーションが図25に示す仮想パッケージ構築状態判定処理により仮想パッケージが有効状態と判定して、図27の(a)に示す特典選択メニューを表示する恐れがある。こうして表示された図27の(a)の特典選択メニューには、ボーナスゲームを実行するための選択肢「Game」ボタンが含まれているが、ユーザが「Game」を選択したとしても、実際には図29の仮想パッケージ(2)が構築されているならば、ボーナスゲーム実行することができない。つまり、このような場合には、特典選択メニューの表示内容と表示内容に付随する動作との整合性がとれていない。
そこで、本実施形態2に係るBD−Jアプリケーションは、状態シグナリングファイルの内容を確認することによって、現在構築されている仮想パッケージが利用するアップデートキットを特定する。図19に示すように、状態シグナリングファイルの情報により、SDメモリカードに複数の異なるアップデートキットが存在する場合であっても、現在使用しているアップデートキットを一意に特定することができる。さらに、対象のアップデートキットと組み合わせて仮想ファイルシステムを作成することができるROMディスクを特定することが出来る。また、アップデートキットのバージョンやアップデートキットに含まれるデータの詳細な内容を容易に取得することができる。
このように、現在構築されている仮想パッケージが利用するアップデートキットを特定することが出来れば、BD−Jアプリケーションが実行しようとしている処理に必要なファイルが仮想パッケージの構築に利用されているアップデートキットに含まれているか否かを確認することができる。そこで、本実施形態2に係るBD−Jアプリケーションは、現在構築されている仮想パッケージに使用されているアップデートキットにあわせて、適切な特典メニューを表示するよう制御する。このようにBD−Jアプリケーションを作成することで、BD−Jアプリケーションが仮想パッケージの構築に使われているアップデートキット以外のアップデートキットにアクセスしてしまうことを防ぎ、例えば、特典表示メニューの表示内容と表示内容に付随する動作との整合性がとれなくなってしまうような事態を回避することができる。
つまり、本実施形態2に係るBD−Jアプリケーションは、どちらのアップデートキットが仮想パッケージの構築に使用されているのかを判断し、仮想パッケージの構築に使用されていないアップデートキットにアクセスしようとした場合に、BD−Jアプリケーションがそのアップデートキットにアクセスすることを禁止する制御を行う。
なお、図19のファイルに記録する情報は、必要に応じて追加あるいは削除してもよい。例えば、対象ROMディスクのOrganizationID、DiscIDなどは、削除してもよいし、複数記録することが出来るようにしてもよい。また、アップデートキットの内容を示す情報は、マージ管理情報ファイルなどの他のファイルに記録するようにしても良い。
以上のような機能は、図30のフローチャートに示される処理手順をオブジェクト指向型コンパイラ言語で記述してコンピュータに実行させることで実現することができる。
図30は、実施形態2に係る仮想パッケージ構築状態判定処理の処理手順を示す。本フローチャートにおけるステップS21乃至ステップS25の手順は、実施形態1において図25を用いて説明した仮想パッケージ構築状態判定処理と同様の手順である。
ここで、ステップS24において仮想パッケージが有効状態であると判定する状態とは、ステップS23で発行した固定VFSファイルパスを用いた読み出し命令により、状態シグナリングファイルが読み出せた場合であるが、固定VFSファイルパスで読み出される状態シグナリングファイルは、現在構築されている仮想パッケージに属するものである。そこで、ステップS24において仮想パッケージが有効状態であると判定された場合は、続けて状態シグナリングファイルの内容を読み出し(ステップS26)、読み込んだ情報をもとにBD−Jアプリケーションが実行しようとしている処理に必要なデータが、現在構築が完了している仮想ファイルシステムで利用しているアップデートキットに含まれているか否かの判断を行う(ステップS27)。例えば、BD−Jアプリケーションが実行しようとしている処理が特典選択メニューの表示であれば、図19に示す「アップデートキットに含まれるデータの詳細」という項目を参照し、アップデートキットにボーナスゲーム、新作映画予告の追加コンテンツが含まれているか否かを判定する(ステップS27)。これらが含まれるならば(ステップS27:Yes)、メニュー画面を表示する際に、アップデートキットに含まれる追加コンテンツを呼び出すボタン、例えば、「Game」ボタンや「Trailer New」ボタンの表示を許可する(ステップS28)。
一方、固定VFSファイルパスで状態シグナリングファイルを読み出せず仮想パッケージが準備状態であると判定した場合(ステップS25)、及び、固定VFSファイルパスで状態シグナリングファイルを読み出せたが、読み出した状態シグナリングファイルの「アップデートキットに含まれるデータの詳細」項目に、ボーナスゲーム、新作映画予告が含まれていない場合(ステップS27:No)には、メニュー画面を表示する際に、追加コンテンツを呼び出す「Game」ボタン、「Trailer New」ボタンの表示を抑制する(ステップS29)。
以上が、実施形態2に係る仮想パッケージ構築状態判定処理の処理手順である。
尚、ステップS27の判断のために利用するアップデートキットの内容が記録されたファイルは、状態シグナリングファイルとは異なるファイル、例えば、状態シグナリングファイルのようにアップデートキットに属するファイルや、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルであってもよい。ただし、アップデートキットの内容を示す情報を、仮想パッケージ構築状態判定に用いるファイルと同一とファイルに記録しておけば、仮想パッケージ構築状態判定と、使用中のアップデートキットの判定とを、1度のファイルリードで実行することができる。なぜなら、状態シグナリングファイルは、仮想パッケージ構築状態の判定のためにステップS23で読み出し命令が発行されている。そのため、状態シグナリングファイルにアップデートキットの内容を記録しておけば、ステップS24において仮想パッケージが有効状態であると判定された後に、ステップS26で改めて読み出し命令を発行する必要がない。このように、仮想パッケージ構築状態の判定に用いるファイルと、アップデートキットの内容を記録するファイルを同一のものとすることで、効率のよい処理が可能となる。
尚、ステップS27の判定に利用するファイルがAVデータであれば、アクセス時にそのAVデータが再生されてしまい、不都合が生じる場合がある。そこで、そのファイルをテキストファイルにしておくと、アクセス判断の際に実際に再生されることはないので不都合は生じない。また、この判定に利用するファイルのサイズは出来るだけ小さくすることにより、ファイル取得やアクセスに必要となる時間などを短縮することでき、BD−Jアプリケーションの処理を高速に実行することが出来る。
また、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いてステップS27の判断を行う場合には、そのファイルにアクセスできるファイルパス情報を用意しておく必要がある。このファイルパス情報は、マージ管理情報内に予め記載しておいてもよいし、再生装置内やBD−Jアプリケーション内に記録しておいてもよい。
また、このファイルパス情報が示すファイルパスを、予め決められた固定ファイルパスにしておくと、BD−Jアプリケーションは常に同一のファイルパスを使って、仮想パッケージ構築状態を正しく判断することができる。固定ファイルパスとすることによって更に、同一のアプリケーションを複数の異なるアップデートキットで共通して利用すること(アプリケーションの再利用)、及び、複数の異なるアプリケーションで同一のアップデートキットを共通して利用すること(複数のタイトルで共通したアップデートキットの作成)、を実現することができるので、アプリケーションの作成とアップデートキットの作成とを効率よく実施することができる。
また、アップデートキットの内容を判定する手法として、アップデートキットの識別子等、使用中のアップデートキットを一意に特定するための情報のみをファイルなどから取得し、その情報をキーとして利用しネットワークや他の記録媒体から、他の必要な情報、即ち、アップデートキットに含まれるデータやファイルなどの内容情報等を取得するように構成してもよい。あるいは、アップデートキットに含まれる他のファイルやマージ管理情報ファイルなどをキーとして利用しても良い。
以上のように本実施形態2によれば、アプリケーションは、仮想パッケージ構築状態判定において、ローカルストレージ上のファイルに記録されたアップデートキットの内容を示す情報により使用中のアップデートキットを特定し、仮想パッケージの構築に使われているアップデートキットの内容に応じてアプリケーションの処理を制御することが出来る。従って、アップデートキットが複数存在する場合であっても、アプリケーションが仮想パッケージ構築に使われているアップデートキット以外のアップデートキットにアクセスしてしまうことを防止することが出来る。また、複数のアップデートキットを1つのアプリケーションで取り扱うことが出来るため、アプリケーションの開発を効率的に実施することが出来る。
<実施形態2の変形例>
以上のように実施形態2では、複数のアップデートキットを用いて1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築できる状況で、状態シグナリングファイルの内容を確認することによって、現在構築されている仮想パッケージが利用するアップデートキットを特定する構成について説明した。この構成では、複数のアップデートキットの状態シグナリングファイルが、仮想パッケージ上の同一のファイルパスとなるように、何れのマージ管理情報ファイルのマッピング情報においても、状態シグナリングファイルに同一のVFSファイルパス(BDMV/JAR/11111/VFSData.info)を割り当てている。これにより、どのアップデートキットが使用されている場合にも、BD−Jアプリケーションは常に同じファイルパスで状態シグナリングファイルの内容を確認することが可能になる。
これに対し、複数のアップデートキットの状態シグナリングファイルが、仮想パッケージ上で全て異なるファイルパスになるように、それぞれのマージ管理情報ファイルのマッピング情報において、状態シグナリングファイルに異なるVFSファイルパスを割り当て、BD−Jアプリケーションがそれぞれのアップデートキットの状態シグナリングファイルの仮想パッケージ上のファイルパスにアクセスできるか否かを試行することにより、使用しているアップデートキットを特定するようにしてもよい。
このような変形例では、例えば、Update01、及びUpdate02の2つのアップデートキットが存在する場合に、Update01のマージ管理情報ファイルのマッピング情報では、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData_update01.txt」を登録しておき、Update02のマージ管理情報ファイルのマッピング情報では、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData_update02.txt」を登録しておく。
更に、BD−Jアプリケーションの作成時に、それぞれのアップデートキットについての状態シグナリングファイル位置情報となるデータファイルを、BD−Jアプリケーションの実体となるJARファイルに組み込んでおく。ここで状態シグナリングファイル位置情報は、それぞれ対応するアップデートキットにおいて状態シグナリングファイルに割り当てたVFSファイルパスを示す。
以上のように構成されたBD−Jアプリケーションが実行された場合、仮想パッケージ構築状態判定において、それぞれのアップデートキットの状態シグナリングファイル位置情報で示されるファイルパスを指定して読み出し命令を試行し、何れのファイルパスで状態シグナリングファイルを読み出せるかにより、現在構築されている仮想パッケージが利用するアップデートキットを特定する。
上述のUpdate01、及びUpdate02の2つのアップデートキットが存在する状況では、「BDMV/JAR/11111/VFSData_update01.txt」を指定して状態シグナリングファイルが読み出せた場合に、現在の仮想パッケージではUpdate01が利用されていると判定し、「BDMV/JAR/11111/VFSData_update02.txt」を指定して状態シグナリングファイルが読み出せた場合に、現在の仮想パッケージではUpdate02が利用されていると判定する。
(実施形態3)
本実施形態3では、本発明にかかる記録装置および記録方法を実施するための形態について説明する。
ここで説明する記録装置は、オーサリング装置と呼ばれるものであり、映画コンテンツの頒布のために制作スタジオに設置され、オーサリングスタッフの使用に供される。オーサリングスタッフからの操作に従い、MPEG規格に従い圧縮符号化されたデジタルストリーム及びどのように映画タイトルを再生するかを記したシナリオを生成し、これらのデータを含むBD−ROM向けのボリュームイメージとアップデートキットを生成するというのが、本発明にかかる記録装置の使用形態である。本発明にかかる記録装置は、実施の形態1で説明した記録媒体やアップデートキットを生成することを目的とする。
図31は本発明にかかる記録装置の内部構成を示す図である。本図に示すように本発明にかかる記録装置は、素材制作部51、シナリオ生成部52、BD−J制作部53、多重化処理部54、フォーマット処理部55、差分抽出部56、アップデートキット制作部57により構成される。なお、本発明にかかる記録装置は、システムLSI(集積回路)として実装してもよい。
素材制作部51は、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックストリームなどの各ストリームを作成する。素材制作部51は、非圧縮のビットマップなどの画像イメージをMPEG4−AVCやMPEG2などの圧縮方式に従い符号化することでビデオストリームを作成する。また素材制作部51は、非圧縮のLinearPCM音声などをAC3などの圧縮方式に従い符号化することでオーディオストリームを作成する。素材制作部51は、字幕イメージと表示タイミング、およびフェードイン/フェードアウトなどの字幕の効果を含む字幕情報ファイルを元にして、BD−ROM規格に準拠した字幕ストリームのフォーマットであるプレゼンテーショングラフィックスストリームを作成する。素材制作部51は、メニューに使うビットマップイメージと、メニューに配置されるボタンの遷移や表示効果を記載したメニューファイルを元にして、BD−ROM規格に準拠したメニュー画面のフォーマットであるインタラクティブグラフィックスストリームを作成する。
シナリオ生成部52は、素材制作部51で作成した各ストリームの情報や、オーサリングスタッフからのGUIを経由した操作にしたがって、BD−ROM規格に準拠したフォーマットでシナリオを作成する。ここで言うシナリオは、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイルなどのファイルがそれにあたる。また、シナリオ生成部52は、多重化処理を実現するための各AVクリップがどのストリームから構成されるかを記述したパラメータファイルを作成する。
アップデートキットを作成するには、仮想パッケージ構築後のシナリオデータを作成する。
BD−J制作部53は、BD−Jアプリケーションをプログラミングする手段である。GUI等のユーザインターフェースを通じて、ユーザからの要求に従って、BD−Jアプリケーションプログラムのソースコードを作成し、BD−Jアプリケーションを作成する。このとき、BD−Jアプリケーションプログラムには、図23の状態シグナリングファイル位置情報21となるデータファイルが外部ファイルとして組み込まれる。
多重化処理部54は、BD−ROMシナリオデータに記述されているビデオ、オーディオ、字幕、ボタンなどの複数のストリームを多重化して、MPEG2−TS形式のAVクリップを作成する。このとき、AVクリップと対になるクリップ情報ファイルも同時に作成する。多重化処理部54によるクリップ情報ファイル内の生成は、以下の方法で行われる。多重化処理部54はAVクリップを作成と同時にマーク情報を作成する。より具体的には、素材制作部51で生成された各ストリームにおいて、含まれるビデオストリームがMPEG2であればIピクチャ、MPEG4−AVCであればIピクチャかIDRピクチャ、VC−1であればIピクチャが何処に存在するかを検出し、前述の各ピクチャの表示時刻と、MPEG2−TSとなっているAVクリップの何パケット目のソースパケットに前述の各ピクチャの先頭データが入っているかを対応付けたマークをマーク情報に登録していく。AVクリップに含まれるビデオストリームが、主映像・副映像の2種類がある場合は、どちらのマーク情報も同時に作成していく。多重化処理部54は、自ら生成したマーク情報と、AVクリップに含まれるストリーム毎の音声属性、映像属性などを示す属性情報をペアにしてクリップ情報ファイルを作成する。
フォーマット処理部55は、シナリオ生成部52で生成したBD−ROMシナリオデータ、あるいは、仮想パッケージ構築後のシナリオデータと、BD−J制作部53で制作したBD−Jアプリケーション、多重化処理部54で生成したAVクリップやクリップ情報ファイルを、BD−ROM規格に準拠したフォーマットで配置し、BD−ROM規格に準拠したファイルシステムであるUDFのフォーマットでBD−ROMディスクイメージ、あるいは、仮想パッケージ差分ディスクイメージを作成する。生成したBD−ROMディスクイメージをBD−ROMプレス用データに変換し、このデータに対してプレス工程を行うことで、BD−ROMの製造が可能となる。
さらに、フォーマット処理部55は、仮想パッケージ構築後のシナリオデータの記述から、作成しようとしているアップデートキットを一意に特定するための情報を含むファイル、例えば、実施形態1、及び2の状態シグナリングファイルを作成する。
なお、BD−ROMシナリオデータからも同様に、作成するBD−ROMディスクイメージを特定するための情報を含むファイルの作成を行ってもよい。
差分抽出部56は、二つのシナリオデータをコンペアして、差分データを抽出する。例えば、オリジナルのディスクイメージになかったファイルや、バイナリコンペアしてアップデートされているファイルなどを抽出する。
アップデートキット制作部57は、差分抽出部56と仮想パッケージ差分ディスクイメージを元に前述で説明したアップデートキットのデータフォーマットに合うようにマージ管理情報ファイルや署名情報ファイルやネットワークプレイリストやクリップを作成し、BD−ROM規格に準拠したフォーマットでファイルやディレクトリを配置する。ここで作成するマージ管理情報ファイルには、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData.info」が記録される。
次に図32を参照しながら、実施の形態に係るBD−ROMディスクイメージの作成方法について説明する。
ステップS101において、素材制作部51はビデオストリーム、オーディオストリーム、IGストリーム、PGストリームを生成する。
ステップS102において、シナリオ生成部52は、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイルなど再生シナリオを記述するBD−ROMシナリオデータを作成する。
ステップS103において、BD−J制作部53は、BD−Jアプリケーションのプログラムを作成する。
ステップS104において、多重化処理部54はBD−ROMシナリオデータを元にAVクリップとクリップ情報ファイルを作成する。
ステップS105において、フォーマット処理部55は、BD−ROMシナリオデータ、変形AVクリップ、クリップ情報ファイル、復元バイトコードデータを、BD−ROM規格のファイル・ディレクトリ構造に並び替え、BD−ROM規格準拠のディスクイメージを作成する。
次に図33を参照しながら、実施の形態に係るアップデートキットの作成方法について説明する。
ステップS201において、素材制作部51は仮想ファイルシステムに必要なビデオストリーム、オーディオストリーム、IGストリーム、PGストリームを生成する。
ステップS202において、シナリオ生成部52は仮想ファイルシステム作成後のインデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、ネットワークプレイリストファイルなど再生シナリオを記述するシナリオデータを作成する。
ステップS203において、差分抽出部56は二つのシナリオデータを比較して差分データを抽出する。
ステップS204において、BD−J制作部53は、仮想ファイルシステム作成後のBD−Jアプリケーションのプログラムを作成する。
ステップS205において、多重化処理部54は差分データを元にAVクリップとクリップ情報ファイルを作成する。
ステップS206において、フォーマット処理部55は、仮想ファイルシステム作成後のシナリオデータの記述から、作成しようとしているアップデートキットを一意に特定するための情報を記録したファイルを作成する。
なお、ここで作成するファイルにはキーとなる情報のみを記録しておいて、そのキーと関連付けてアップデートキットを一意に特定するための情報を、別のファイルやデータベースとして作成するようにしてもよい。
ステップS207において、フォーマット処理部55は、ステップS206で作成したアップデートキットを一意に特定するための情報が記録されたファイルと、仮想ファイルシステム作成後のシナリオデータ、BD−Jアプリケーション、AVクリップ、クリップ情報ファイルを、BD−ROM規格に準拠したフォーマットで配置して、仮想ファイルシステム差分ディスクイメージを作成する。
ステップS208において、アップデートキット制作部57は、差分抽出部56と仮想ファイルシステム差分ディスクイメージを元に前述で説明したアップデートキットのデータフォーマットに合うようにマージ管理情報ファイルや署名情報ファイルやネットワークプレイリストやクリップを作成し、BD−ROM規格に準拠したフォーマットでファイルやディレクトリを配置する。
(その他の変形例)
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は、上記の実施形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)本発明は、各実施形態で説明したフローチャートの処理手順が開示する再生装置の制御方法、記録装置の制御方法であるとしてもよい。また、前記処理手順でコンピュータを動作させるプログラムコードを含むコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、前記コンピュータプログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記コンピュータプログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(2)実施形態1、2では、BD−Jアプリケーションによるメニュー表示について、仮想パッケージ構築状態に応じてその機能を制限することを説明した。
本発明は、その他、ローカルストレージ上の追加コンテンツデータファイルにアクセスする必要がある処理を、仮想パッケージ構築状態の判定に基づいて制限する用途に適用できる。ローカルストレージ上の追加コンテンツデータファイルにアクセスする必要がある処理としては、ローカルストレージ上の字幕、音声、映像の再生、ローカルストレージ上に追加されたBD−Jアプリケーションの実行等がある。
尚、仮想パッケージの構築状態にかかわらずBD−Jアプリケーションが、ローカルストレージ上のファイルにアクセスする場合もある。例えば、
ローカルストレージ上のADA(アプリケーションデータエリア)領域へのユーザ情報(アカウント名、メールアドレスなど)の記録、ゲームスコアや操作履歴(初回視聴時のみに再生する警告の再生状況や、過去に視聴したディスク履歴など)、キャッシュ情報の記録等のように、BD−Jアプリケーションが、ローカルストレージ上に読み書きが必要なデータを記録する場合や、ローカルストレージ上のファイルを字幕、音声、映像等データとして再生するなど、仮想ファイル制御部20を介したローカルストレージ上のファイルへのアクセスの必要がない場合である。
(3)実施形態1では、仮想パッケージが準備状態である場合にローカルストレージ上のアップデートキットにアクセスすることを禁止する方法として、アップデートキットへのアクセスが必要な選択肢をメニュー上に表示しないという方法を示した。ローカルストレージ上のアップデートキットにアクセスすることを禁止する他の方法としては、例えば、選択可能な場合とは選択肢の色や形などを変更してメニュー上に表示するなどして、誤動作が発生する機能を実行するための選択肢をユーザが選択できないように制御する方法、誤動作が発生する選択肢をユーザが選択した際に現在実行できない旨のメッセージ、実行できない理由、実行するために必要な手順などをユーザに提示するように制御する方法、誤動作が発生する選択肢をユーザが選択した際に、その機能が実行可能な状態とした(仮想パッケージ構築を完了しタイトル再生を開始する)後で、ユーザが選択した機能を実行する方法、ユーザの操作を無視する方法、あるいは、それらのいくつかを組み合わせた方法などがある。
(4)実施形態1では、アップデートキットの取得方法としてネットワークを介してダウンロードする手法を示した。しかし、アップデートキットは、ネットワーク経由での取得以外に、他の記録媒体等から取得してもよい。
(5)BD−ROMディスクは、図2に示したファイル構成に加えて、ディスクを代表する画像イメージとテキスト情報がセットになったディスク情報ファイル(CCC.DINFO)を記録すよう構成してもよい。
ディスク情報ファイルは、例えば、図34に示すデータ構造を用いることができる。本図の例では、ディスク情報ファイルは、BD−ROMに含まれるコンテンツを代表するサムネイルの画像ファイルへの相対パスと、BD−ROMに含まれるコンテンツを代表する各国語ごとのテキスト情報を格納している。テキスト情報には、BD−ROMに含まれるコンテンツのタイトル名などが記載される。
このディスク情報ファイルを用いて、画像ファイルのイメージや、テキスト情報をGUI等で表示する機能を、再生装置に実装することで、ユーザはディスク内容を容易に把握することができる。
再生装置にこのような機能を実装する場合、ディスク情報ファイルと同様の情報が記録されている状態シグナリングファイルを利用することで、再生装置のGUI画面等で、アップデートキットの内容を表示できると共に、ユーザがアップデートキットを消去するためのGUIとして利用できる。
具体的には、アプリケーションがネットワークや他の記録媒体などからアップデートキットを取得する前に、アップデートキットの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを表示することが出来る。こうすることにより、複数のアップデートキットが存在する場合であっても、ユーザの嗜好に応じて取得するアップデートキットを選択することが容易なユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
また、既にローカルストレージ上に複数のアップデートキットが記録されている場合であって、かつ、ローカルストレージの空き容量が少なく、次に取得するアップデートキットを記録するために記録されているアップデートキットのいくつかを消去する必要がある場合などに、ローカルストレージ上に記録されているアップデートの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを表示することが出来る。こうすることにより、複数のアップデートキットがローカルストレージに記録されている場合であっても、ユーザがローカルストレージ上から消去するアップデートキットを容易に選択することが出来るユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
さらに、ローカルストレージ上に複数のアップデートキットが記録されている場合であって、かつ、いずれかのアップデートキットを利用した仮想ファイルシステムの作成が完了している場合に、仮想ファイルシステムの作成に利用されているアップデートキットの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを、状態シグナリングファイルの記述を参照して表示することが出来る。こうすることにより、ユーザが仮想ファイルシステムの作成が完了しているか否かと、仮想ファイルシステムの作成が完了している場合には、仮想ファイルシステムの作成に利用されているアップデートキットの内容を容易に確認することが出来るユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
(6)再生装置の内部構成のうち、システムターゲットデコーダ4や、再生制御部7、プログラム実行部11、仮想ファイル制御部20等、ロジック素子を中心とした部分は、システムLSIで構成することが望ましい。
システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものも、システムLSIに含まれる(このようなシステムLSIは、マルチチップモジュールと呼ばれる。)。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置102の中核としての役割を果たす。
かかるシステムLSIは、再生装置102は勿論のこと、TVやゲーム、パソコン、ワンセグ携帯等、映像再生を扱う様々な機器に組込みが可能であり、本発明の用途を多いに広げることができる。
システムLSIのアーキテクチャは、Uniphierアーキテクチャに準拠させるのが望ましい。
Uniphierアーキテクチャに準拠したシステムLSIは、以下の回路ブロックから構成される。
・データ並列プロセッサDPP
これは、複数の要素プロセッサが同一動作するSIMD型プロセッサであり、各要素プロセッサに内蔵されている演算器を、1つの命令で同時動作させることで、ピクチャを構成する複数画素に対するデコード処理の並列化を図る。
・命令並列プロセッサIPP
これは、命令RAM、命令キャッシュ、データRAM、データキャッシュからなる「Local Memory Controller」、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルからなる「Processing Unit部」、複数アプリケーションの並列実行をProcessing Unit部に行わせる「Virtual Multi Processor Unit部」で構成される。
・MPUブロック
これは、ARMコア、外部バスインターフェイス(Bus Control Unit:BCU)、DMAコントローラ、タイマー、ベクタ割込コントローラといった周辺回路、UART、GPIO(General Purpose Input Output)、同期シリアルインターフェイスなどの周辺インターフェイスで構成される。
・ストリームI/Oブロック
これは、USBインターフェイスやATA Packetインターフェイスを介して、外部バス上に接続されたドライブ装置、ハードリディスクドライブ装置、SDメモリカードドライブ装置とのデータ入出力を行う。
・AVI/Oブロック
これは、オーディオ入出力、ビデオ入出力、OSDコントローラで構成され、テレビ、AVアンプとのデータ入出力を行う。
・メモリ制御ブロック
これは、外部バスを介して接続されたSD-RAMの読み書きを実現するブロックであり、各ブロック間の内部接続を制御する内部バス接続部、システムLSI外部に接続されたSD-RAMとのデータ転送を行うアクセス制御部、各ブロックからのSD-RAMのアクセス要求を調整するアクセススケジュール部からなる。
具体的な生産手順の詳細は以下のものになる。まず各実施形態に示した構成図を基に、システムLSIとすべき部分の回路図を作成し、回路素子やIC,LSIを用いて、構成図における構成要素を具現化する。
そうして、各構成要素を具現化してゆけば、回路素子やIC,LSI間を接続するバスやその周辺回路、外部とのインターフェイス等を規定する。更には、接続線、電源ライン、グランドライン、クロック信号線等も規定してゆく。この規定にあたって、LSIのスペックを考慮して各構成要素の動作タイミングを調整したり、各構成要素に必要なバンド幅を保証する等の調整を加えながら、回路図を完成させてゆく。
回路図が完成すれば、実装設計を行う。実装設計とは、回路設計によって作成された回路図上の部品(回路素子やIC,LSI)を基板上のどこへ配置するか、あるいは、回路図上の接続線を、基板上にどのように配線するかを決定する基板レイアウトの作成作業である。
こうして実装設計が行われ、基板上のレイアウトが確定すれば、実装設計結果をCAMデータに変換して、NC工作機械等の設備に出力する。NC工作機械は、このCAMデータを基に、SoC実装やSiP実装を行う。SoC(System on chip)実装とは、1チップ上に複数の回路を焼き付ける技術である。SiP(System in Package)実装とは、複数チップを樹脂等で1パッケージにする技術である。以上の過程を経て、本発明に係るシステムLSIは、各実施形態に示した再生装置102の内部構成図を基に作ることができる。
尚、上述のようにして生成される集積回路は、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
FPGAを用いてシステムLSIを実現した場合は、多数のロジックエレメントが格子状に配置されており、LUT(Look Up Table)に記載されている入出力の組合せに基づき、縦・横の配線をつなぐことにより、各実施形態に示したハードウェア構成を実現することができる。LUTは、SRAMに記憶されており、かかるSRAMの内容は、電源断により消滅するので、かかるFPGAの利用時には、コンフィグ情報の定義により、各実施形態に示したハードウェア構成を実現するLUTを、SRAMに書き込ませる必要がある。
本実施の形態は、ミドルウェアとシステムLSIに対応するハードウェア、システムLSI以外のハードウェア、ミドルウェアに対するインターフェイスの部分、ミドルウェアとシステムLSIのインターフェイスの部分、ミドルウェアとシステムLSI以外の必要なハードウェアへのインターフェイスの部分、ユーザインターフェースの部分で実現し、これらを組み込んで再生装置を構成したとき、それぞれが連携して動作することにより特有の機能が提供されることになる。
ミドルウェアに対するインターフェイス、および、ミドルウェアとシステムLSIのインターフェイスを適切に定義することにより、再生装置のユーザインターフェース部分、ミドルウェア部分、システムLSI部分をそれぞれ独立して並行開発することができ、より効率よく開発することが可能となる。なお、それぞれのインターフェイスのきり方には、様々な切り方がある。
(7)上記実施形態、及び上記変形例をそれぞれ組み合わせるとしてもよい。
以下、本発明の好適な実施形態に係る記録媒体及び再生装置について、図面を参照しながら説明する。
(実施形態1)
図1は、本発明の実施形態1による記録媒体を使用するホームシアターシステムを示す模式図である。図1において、本発明に係る記録媒体はBD−ROM101である。本図に示すように、このホームシアターシステムは、BD−ROM101を再生対象とし、再生装置102、テレビ103、リムーバブルメディア104、及びリモコン105を含む。
BD−ROM101は読み出し専用ブルーレイ・ディスク(登録商標)(BD:Blu−ray Disc)、すなわちBD−ROMディスクである。BD−ROM101はその他の可搬性記録媒体、例えば、BD−R、又はBD−RE等であってもよい。
再生装置102は、BD−ROM方式に準拠の光ディスクドライブであるBD−ROMドライブを搭載している。また、再生装置102はSDメモリーカード、メモリースティック、コンパクトフラッシュ(登録商標)、スマートメディア、マルチメディアカード、着脱可能なハードディスクドライブ等のリムーバブルメディア104を装着する装着手段を備える。
テレビ103は、映画作品の再生映像を表示したり、メニュー等を表示することで、対話的な操作環境をユーザに提供する。
リモコン105は、再生装置102の付属物であり、再生装置102に対する操作をユーザから受け付けて、操作に応じた指示信号を再生装置102に送信する。以上が本発明に係る記録媒体及び再生装置の使用形態についての説明である。
<BD−ROM101>
次に本発明に係る記録媒体であるBD−ROM101の詳細について説明する。
図2は、BD−ROM101上のデータ構造を示す模式図である。本図の第4段目にBD−ROM101を示し、第3段目にBD−ROM上のトラック202を示す。本図のトラック202は、BD−ROM101の内周から外周にかけて螺旋状に形成されているトラック202を横方向に引き伸ばして描画している。BD−ROM101は他の光ディスク、例えばDVDやCDなどと同様にその内周から外周に向けて螺旋状に記録領域を持ち、内周のリードインと外周のリードアウトの間に論理データを記録できる論理アドレス空間を有している。また、リードインの内周側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
本図の第2段目は、ファイルシステムにより管理される論理アドレス空間を示す。論理アドレス空間には、先頭からファイルシステムのボリューム情報が記録され、続いて映像データなどのアプリケーションデータが記録されている。ファイルシステムとはディスク上のデータをディレクトリまたはファイルと呼ばれる単位で表現する仕組みであり、BD−ROM101の場合ではUDF(Universal Disc Format)によって記録される。日常使っているPC(パーソナルコンピュータ)の場合でも、FATまたはNTFSと呼ばれるファイルシステムを通すことにより、ディレクトリやファイルという構造でハードディスクに記録されたデータがコンピュータ上で表現され、ユーザビリティを高めている。このファイルシステムにより、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっている。
本図の第1段目は、ファイルシステムを前提にしたBD−ROM101のアプリケーションフォーマットを示す。本実施の形態の場合、BD−ROM101上のディレクトリ、ファイル構造は、ルートディレクトリ(ROOT)直下にBDMVディレクトリ、CERTIFICATEディレクトリ、AACSディレクトリ等が置かれている。BDMVディレクトリはBD−ROM101で扱うAVコンテンツや管理情報などのデータが記録されているディレクトリであり、以下、BDMVディレクトリを中心に説明する。
BDMVディレクトリの配下には、タイトルを構成するインデックステーブルが定義されたインデックスファイル(index.bdmv)、動的なシナリオを定義するムービーオブジェクトファイル(MovieObject.bdmv)と、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJOディレクトリ、JARディレクトリ、AUXDATAディレクトリ、METAディレクトリ、BACKUPディレクトリが存在する。映像・音声といったAVコンテンツが多重化され格納されたAVクリップ(00001.m2ts)、AVクリップの管理情報を格納したクリップ情報ファイル(00001.clpi)、AVクリップの論理的な再生経路を定義したプレイリストファイル(00001.mpls)、どのJARファイルを実行するかおよびその実行方法について定義したBDJオブジェクトファイル(00001.bdjo)、BD−Jアプリケーションを格納したJARファイル(00001.jar)は、それぞれ前述のSTREAMディレクトリ、CLIPINFディレクトリ、PLAYLISTディレクトリ、BDJOディレクトリ、JARディレクトリ、DINFOディレクトリの下に配置される。
以下に、BDMVディレクトリ配下に置かれる各ファイルのデータ構造について説明する。
<インデックスファイル>
まずインデックスファイル(Index.bdmv)について説明する。インデックスファイルは記録媒体全体に関する管理情報であり、再生装置への挿入後に、インデックステーブルファイルが最初に読み出されることで、再生装置においてディスクが一意に認識される。インデックスファイルは更に、BD−ROM101において再生可能となる複数タイトルのタイトル番号と、個々のタイトルを規定するプログラムファイル、つまり、BD-Jオブジェクト又はムービーブジェクトとの対応付けを示すインデックステーブルを格納している。
図3に示すように、インデックステーブルは、BD−ROMのタイトル構造を構成する個々のタイトルと、動作モードを規定する動作モードオブジェクトとの対応付けを規定する。タイトル構造とは、BD−ROMの装填時に、視聴者への警告やコンテンツプロバイダによるロゴ表示等を伴うタイトル(ファーストプレイタイトル)の再生を開始し、ファーストプレイタイトルの再生後、映画作品の本編を構成する一般タイトル("1"、"2"、"3"というようなシリアル番号で識別される一般的なタイトル)の再生を行い、本編タイトルの再生が終了すれば、タイトル選択を受け付けるタイトル(トップメニュータイトル)を再生してユーザによる一般タイトルの選択待ちを行うというものである。
また、トップメニュータイトルは、リモコンでのユーザ操作で、「メニューに戻る」というようなコマンドが実行されるときにも再生される。映画作品と、タイトルとの関係は、映画作品と、それの複数バージョンとの関係である。つまり1つのバージョンしかないような映画作品は、「映画作品=タイトル」という関係になる。BD−ROMのタイトルは、上述したようなファーストプレイタイトル、一般タイトル、メニュータイトルのそれぞれに、動作モードを規定する動作モードオブジェクトを割り当てることで、各々のタイトルが、どのような動作モードで動作するのかを詳細に規定する。インデックステーブルでは、タイトルと、ビデオストリームとの関係を直接記述せず、タイトルと、動作モードオブジェクトとの関係を記述して、動作モードオブジェクトを通じてビデオストリームを再生させるようになっている。これば、AV再生を伴わず、動作モードオブジェクトを動作させるだけのタイトルを規定するためである。
<ムービーオブジェクトファイル>
図4に示すように、ムービーオブジェクトファイル(MovieObject.bdmv)内には、1つ以上のムービーオブジェクトが定義されており、各ムービーオブジェクトはムービーオブジェクトIDによって識別される。ムービーオブジェクトは、コマンドインタプリタを制御主体とした動作モード(HDMVモード)において、再生装置が行うべき制御手順を規定するプログラムファイルであり、プレイリストの再生の指示や他のムービーオブジェクトやタイトルへの遷移を命令する1つ以上のナビゲーションコマンドを持ち、再生装置はそのナビゲーションコマンド列を順に実行する。例えば、PlayPL#Nと記述されていれば、再生装置はPLAYLISTディレクトリの中から該当するプレイリストのファイル名を選択し再生する。また例えば、JumpObject#Nと記述されていれば、再生装置はムービーオブジェクトファイルの中から該当するムービーオブジェクトを選択し実行する。
<BDJオブジェクトファイル>
BDJオブジェクトファイルは、拡張子bdjoが付与されたプログラムファイル(xxxxx.bdjo["xxxxx"は可変、拡張子"bdjo"は固定])である。BDJオブジェクトファイルは、BD−Jモードにおいて、再生装置が行うべき制御手順を規定するBD−Jオブジェクトを格納している。BDJオブジェクトは、アプリケーション管理テーブル(ApplicationManagementTable())を含み、BD−ROM再生時において、タイトル切り替えに伴うアプリケーションシグナリングをプラットフォーム部に実行させるデータのことである。アプリケーション管理テーブルにより生存区間が規定されるアプリケーションプログラムを、特に『BD−Jアプリケーション』という。ApplicationManagementTable()は、具体的にいうと、実行すべきBD−Jアプリケーションを示すapplication_idと、BD−Jアプリケーションを起動する際の制御を示すapplication_control_codeを含む。application_control_codeは、タイトル選択後におけるアプリケーションの最初の実行状態を規定しており、BD−Jアプリケーションを仮想マシンにロードして自動開始するか(AUTOSTART)、BD−Jアプリケーションを仮想マシンにロードするが自動開始はしないか(PRESENT)を規定することができる。
<AVクリップ>
AVクリップは、拡張子m2tsが付与されたストリームファイル(xxxxx.m2ts["xxxxx"は可変、拡張子"m2ts"は固定])であり、MPEG−2トランスポートストリーム形式のデジタルストリームを格納している。
図5は、AVクリップの構成を示す図である。本図に示すようにAVクリップは、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム(PG)、インタラクティブグラフィックスストリーム(IG)のうち、1つ以上を多重化することで得られる。ビデオストリームは映画の主映像および副映像を、オーディオストリームは映画の主音声部分とその主音声とミキシングする副音声を、プレゼンテーショングラフィックスストリームは、映画の字幕をそれぞれ示している。ここで主映像とは画面に表示される通常の映像を示し、副映像とは主映像の中に小さな画面で表示する映像のことである。また、インタラクティブグラフィックスストリームは、画面上にGUI部品を配置することにより作成される対話画面を示している。AVクリップに含まれる各ストリームはPIDによって識別される。例えば、映画の映像に利用するビデオストリームには0x1011が、オーディオストリームには0x1100から0x111Fまでが、プレゼンテーショングラフィックスには0x1200から0x121Fまでが、インタラクティブグラフィックスストリームには0x1400から0x141Fまでが、映画の副映像に利用するビデオストリームには0x1B00から0x1B1Fまで、主音声とミキシングする副音声に利用するオーディオストリームには0x1A00から0x1A1Fが、それぞれ割り当てられている。
図6は、AVクリップがどのように多重化されるかを模式的に示す図である。まず、複数のビデオフレームからなるビデオストリーム、複数のオーディオフレームからなるオーディオストリーム(第1段目)を、それぞれPESパケット列に変換し(第2段目)、更にソースパケット列に変換する(第3段目)。同じくプレゼンテーショングラフィックスストリーム(PGストリーム)およびインタラクティブグラフィックスストリーム(IGストリーム)のデータを(第7段目)それぞれPESパケット列に変換し(第6段目)、更にソースパケットに変換する(第5段目)。こうして得られた、ビデオ、オーディオ、グラフィクスを構成するソースパケットをそのATSの順に配列してゆくことで、1本のストリームに多重化されたAVクリップが構成される(第4段目)。
図7の(a)は、PESパケット列に、ビデオストリームがどのように格納されるかを更に詳しく示している。本図(a)における第1段目はビデオストリームのビデオフレーム列を示す。第2段目は、PESパケット列を示す。第3段目は、これらのPESパケット列を変換することで得られるTSパケット列を示す。本図の矢印yg1,yg2,yg3,yg4に示すように、ビデオストリームにおける複数のVideo Presentation UnitであるIピクチャ、Bピクチャ、Pピクチャは、ピクチャ毎に分割され、PESパケットのペイロードに格納される。各PESパケットはPESヘッダを持ち、PESヘッダには、ピクチャの表示時刻であるPTS(Presentation Time−Stamp)やピクチャの復号時刻であるDTS(Decoding Time−Stamp)が格納される。
図7の(b)は、AVクリップに最終的に書き込まれるパケットの形式を示している。第1段目は、TSパケット列を示し、第2段目は、ソースパケット列を示す。
第1段目に示すようにTSパケットは、ストリームを識別するPIDなどの情報を持つ4Byteの「TSヘッダ」とデータを格納する184Byteの「TSペイロード」に分かれる固定長のパケットであり、前述で説明したPESパケットは分割されTSペイロードに格納される。BD−ROMの場合、第2段目に示すように、TSパケットには、4ByteのTP_Extra_Headerが付与されて、192Byteのソースパケットに変換された状態で、AVクリップを構成する。TP_Extra_HeaderにはATS(Arrival_Time_Stamp)などの情報が記載される。ATSは当該TSパケットのPIDフィルタへの転送開始時刻を示す。AVクリップには、第3段目に示すようにソースパケットが並ぶこととなり、AVクリップの先頭からインクリメントする番号はSPN(ソースパケットナンバー)と呼ばれる。
また、AVクリップに含まれるTSパケットには、映像・音声・字幕などの各ストリーム以外にもPAT(Program Association Table)、PMT(Program Map Table)、PCR(Program Clock Reference)などがある。PATはAVクリップ中に利用されるPMTのPIDが何であるかを示し、PAT自身のPIDは0で登録される。PMTは、AVクリップ中に含まれる映像・音声・字幕などの各ストリームのPIDと各PIDに対応するストリームの属性情報を持ち、またAVクリップに関する各種ディスクリプタを持つ。ディスクリプタにはAVクリップのコピーを許可・不許可を指示するコピーコントロール情報などがある。PCRは、ATSの時間軸であるATC(Arrival Time Clock)とPTS・DTSの時間軸であるSTC(System Time Clock)の同期を取るために、そのPCRパケットがデコーダに転送されるATSに対応するSTC時間の情報を持つ。
図8はPMTのデータ構造を詳しく説明する図である。PMTの先頭には、そのPMTに含まれるデータの長さなどを記したPMTヘッダが配置される。その後ろには、AVクリップに関するディスクリプタが複数配置される。前述したコピーコントロール情報などが、ディスクリプタとして記載される。ディスクリプタの後には、AVクリップに含まれる各ストリームに関するストリーム情報が複数配置される。ストリーム情報は、ストリームの圧縮コーデックなどを識別するためストリームタイプ、ストリームのPID、ストリームの属性情報(フレームレート、アスペクト比など)が記載されたストリームディスクリプタから構成される。ストリームディスクリプタはAVクリップに存在するストリームの数だけ存在する。
<クリップ情報ファイル>
拡張子clpiが付与されたクリップ情報ファイル(xxxxx.clpi ["xxxxx"は可変、拡張子"clpi"は固定])は、AVクリップと1対1に対応する管理情報であり、図9に示すように、クリップ情報とストリーム属性情報とエントリーマップテーブルとから構成される。
クリップ情報は、本図の引出線eg1で示すように、システムレート、再生開始時刻、及び再生終了時刻を含む。システムレートは、対応するAVクリップに属するTSパケットが再生装置内でリードバッファからシステムターゲットデコーダへ転送される速度の最高値を示す。AVクリップでは、TSパケットの転送速度がシステムレート以下に抑えられるように、ソースパケットのATSの間隔が設定されている。再生開始時刻は、AVクリップの先頭のPTS、例えば先頭の映像フレームのPTSを示す。再生終了時刻は、AVクリップの後端のPTSから所定量遅れたSTCの値、例えば最後の映像フレームのPTSに1フレーム当たりの再生時間を加えた値を示す。
ストリーム属性情報は引出線eg2で示すように、AVクリップに含まれる各ストリームについての属性情報が、PID毎に登録される。属性情報はビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム毎に異なる情報を持つ。ビデオストリーム属性情報は、そのビデオストリームがどのような圧縮コーデックで圧縮されたか、ビデオストリームを構成する個々のピクチャデータの解像度がどれだけであるか、アスペクト比はどれだけであるか、フレームレートはどれだけであるかなどの情報を持つ。オーディオストリーム属性情報は、そのオーディオストリームがどのような圧縮コーデックで圧縮されたか、そのオーディオストリームに含まれるチャンネル数は何であるか、何の言語に対応するか、サンプリング周波数がどれだけであるかなどの情報を持つ。これらの情報は、再生装置が再生する前のデコーダの初期化などに利用される。
図10の(a)は、クリップ情報ファイルにおけるエントリーマップテーブルを示す図である。エントリーマップテーブルは、AVクリップ内に含まれるビデオストリームの各フレーム内符号化画像(以下Iピクチャと呼ぶ)の表示時刻を示すPTSと各Iピクチャが開始するAVクリップのSPNが記載されたテーブル情報である。
ここではテーブルの1つの行で示される対となるPTSとSPNの情報をエントリーポイント情報と呼ぶことにする。また先頭を0としてエントリーポイント毎にインクリメントした値をエントリーポイントID(以下「EP_ID」)と呼ぶことにする。このエントリーポイント情報を利用することにより、本図の(b)に示すように、再生装置はビデオストリームの時間軸上の任意の地点に対応するAVクリップのファイル位置を特定することが出来るようになる。例えば、早送り・巻戻しの特殊再生の際には、エントリーポイント情報に登録されるIピクチャを特定し選択して再生することによりAVクリップを解析することなく効率的に処理を行うことが出来る。また、エントリーポイント情報はAVクリップ内に多重化される各ビデオストリーム毎に作られ、PIDで管理される。
<プレイリストファイル>
次に、拡張子mplsが付与されたプレイリストファイル(xxxxx.mpls["xxxxx"は可変、拡張子"mpls"は固定])について説明する。
プレイリストは、AVクリップの再生経路を示すものである。図11に示すように、プレイリストは1つ以上のプレイアイテムから構成され、各プレイアイテムはAVクリップに対する再生区間を示す。各プレイアイテムはそれぞれプレイアイテムIDで識別され、プレイリスト内で再生されるべき順序で記述されている。また、プレイリストは再生開始点を示すマークを含んでいる。マークはプレイアイテムで定義される再生区間内に対して付与することでき、プレイアイテムに対して再生開始点となりうる位置に付けられ、頭出し再生に利用される。例えば、映画タイトルにおいて、マークをチャプタの先頭となる位置に付与することで、チャプタ再生することが可能である。
プレイアイテムの内容について図12を用いて説明する。プレイアイテムには、参照するAVクリップ1401と再生開始時刻1402および再生終了時刻1403、コネクションコンディション1404、及びストリーム選択テーブル1405が含まれている。参照するAVクリップ1401は、再生区間を定義するAVクリップを、対応するクリップ情報ファイルの名称で示している。再生開始時刻と再生終了時刻は時間情報であるため、図13の下段に示すように、再生装置は参照するAVクリップ1401で示されるクリップ情報ファイルのエントリーマップを参照し、指定された再生開始時刻および再生終了時刻に対応するSPNを取得し、読み出し開始位置を特定して再生処理を行う。なお、一連のプレイアイテムの再生経路をメインパスとここでは定義する。
ストリーム選択テーブル1405は、複数のストリームエントリ1409からなり、ストリームエントリ1409はストリーム選択No1406、ストリームパス情報1407、ストリーム識別情報1408からなる。ストリーム選択No1406は、ストリーム選択テーブルに含まれるストリームエントリ1409の先頭から順にインクリメントされる番号であり、再生装置でのストリーム識別のために利用される。ストリームパス情報1407は、ストリーム識別情報1408によって示されるストリームが、どのAVクリップに多重化されているかを示す情報であり、例えば”メインパス”であれば、該当するプレイアイテムのAVクリップを示し、”サブパスID=1”であれば、そのサブパスIDが示すサブパスにおいて、該当するプレイアイテムの再生区間に対応するサブプレイアイテムのAVクリップを示す。ストリーム識別情報1408は、PIDなどの情報であり、参照するAVクリップに多重化されているストリームを示す。なお、ストリームエントリ1409には、各ストリームの属性情報も同時に記録されている。ここで属性情報とは、各ストリームの性質を示す情報で、例えばオーディオ、プレゼンテーショングラフィックス、インタラクティブグラフィックスの場合には、言語属性などが含まれる。
プレイリストは、図13に示すように1つ以上のサブパスを有することが出来る。サブパスはプレイリストに登録される順にIDが振られ、サブパスIDとして、サブパスを識別するために使われる。サブパスは、メインパスと一緒に再生される一連の再生経路を示す。サブパスには、メインパスの再生に同期して再生される同期型、メインパスの再生に非同期で再生可能な非同期型があり、そのタイプはサブパスタイプに記される。サブプレイアイテムは、プレイアイテムと同様に参照するAVクリップ1401と再生開始時刻1402および再生終了時刻1403を持つ。サブパスタイプが同期型の場合は、サブプレイアイテムの再生開始時刻1402と再生終了時刻1403は、メインパスと同じ時間軸で表されるが、サブパスタイプが非同期型の場合は、サブプレイアイテムの再生開始時刻1402と再生終了時刻1403は、メインパスと違う時間軸で表される。例えば、プレイアイテム#2のストリーム選択テーブル1405に登録されているあるストリームエントリ1409が、サブパスID=0でプレゼンテーショングラフィックス1を示す場合は、サブパスID=0のサブパスの中で、プレイアイテム#2の再生区間に同期して再生するサブプレイアイテム#2のAVクリップの中に多重化されるプレゼンテーショングラフィックス1が、プレイアイテム#2再生区間に再生されることになる。また、プレイアイテム#2のストリーム選択テーブル1405に登録されているあるストリームエントリ1409が、サブパスID=2で副映像1を示す場合は、サブパスID=2のサブパスの中にあるサブプレイアイテム#1のAVクリップの中に多重化される副映像1が、プレイアイテム#2再生区間に再生されることになる。
<JARファイル>
次に、拡張子jarが付与されたJARファイル(xxxxx.jar["xxxxx"は可変、拡張子"jar"は固定])について説明する。
JARファイルは、BD−Jアプリケーションを格納している。BD−Jアプリケーションとは、Java(登録商標)2Micro_Edition(J2ME) Personal Basis Profile(PBP 1.0)と、Globally Excecutable MHP specification(GEM1.0.2)for package media targetsとをフル実装したプラットフォーム部にて動作するJava(登録商標)アプリケーションである。
このBD−Jアプリケーションは、xletインターフェイスを通じて、Application Managerにより制御される。xletインターフェイスは、”loaded”、”puased”、”active”,”destroyed”といった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アプリケーションの動作内容の詳細については後述するが、BD−Jアプリケーションは、主に以下の5つの動作を行うプログラムを備えている。
(1)後述する再生制御部7を介して、プレイリスト再生を行う。ここでいう、プレイリスト再生とは、プレイリストが管理するAVクリップを再生することをいう。
(2)インターネットなどのWWWサーバからアップデートキットを取得し、ローカルストレージへ蓄積する。
(3)BD−ROMとアップデートキットとを組み合わせて仮想ファイルの構築を仮想ファイル制御部20に命令する。
(4)再生装置のレジスタセットに値をセットする。
(5)システムターゲットデコーダに対してメニューやゲームのグラフィックスのためのPNG・JPEGを転送して、画面に表示する。
これらはプログラムの作りに応じて自由に行うことが出来、どのように制御するかは、オーサリング工程でのBD−Jアプリケーションのプログラミング工程によって決まる。
以上が、本発明にかかる記録媒体であるBD−ROMのデータ構造である。
<再生装置102>
続いて、本発明にかかる再生装置、再生方法について説明する。
図14は、再生装置102の構成を示している。再生装置102は、BD−ROMドライブ1、リードバッファ(1)2a、リードバッファ(2)2b、ローカルストレージ3、システムターゲットデコーダ4、プレーンメモリセット5a、プレーン合成部5b、HDMI送受信部6、再生制御部7、管理情報メモリ9、レジスタセット10、プログラム実行部11、プログラムメモリ12、ネットワークモジュール13、ユーザイベント処理部17、不揮発メモリ19、及び仮想ファイル制御部20から構成されている。
BD−ROMドライブ1は、仮想ファイル制御部20からの要求を元にBD−ROMディスクからデータを読み出す。BD−ROMディスクから読み出されたAVクリップはリードバッファ(1)2aに転送される。BD−ROMディスクからは、AVクリップだけでなく、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、クリップ情報ファイル、BD−Jオブジェクトファイル、JARファイルも読み出される。これらのファイルは仮想ファイル制御部20に転送される。
リードバッファ(1)2aは、BD−ROMドライブを使って読み込んだデータを一時的に格納するメモリ等で構成されたバッファである。
ローカルストレージ3は、ハードディスクをアクセスするためのビルドインメディアドライブ、SDメモリカード等の半導体メモリカードをアクセスするためのリムーバブルメディアドライブを備え、ネットワークモジュール13等の外部I/Fからダウンロードしてきたアップデートキットや、アプリケーションが使うデータなどの保存に用いられる。アップデートキットの保存領域はBD−ROM毎に分かれており、またアプリケーションがデータの保持に使用できる領域はアプリケーション毎に分かれている。SDメモリカード等に蓄積されたアップデートキット等のデータは、仮想ファイル制御部20からの要求に従ってローカルストレージ3により読み出される。読み出されたデータのうちAVクリップはリードバッファ(2)2bに転送される。アップデートキットのデータ構造については後述するが、ローカルストレージ3により読み出されるデータには、AVクリップだけでなく、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、クリップ情報ファイル、BD−Jオブジェクトファイル、JARファイル、マージ管理情報も含まれる。これらのデータは、仮想ファイル制御部20に転送される。
リードバッファ(2)2bは、ローカルストレージ3を使って読み込んだデータを一時的に格納するメモリ等で構成されたバッファである。
システムターゲットデコーダ4は、リードバッファ(1)2aに読み出されたソースパケットやリードバッファ(2)2bに読み出されたソースパケットに対して多重分離処理を行い、各ストリームをデコードし再生する処理を行う。また、プログラム実行部11の指示によりメニューなどに表示するためのJPEG、PNGなどのグラフィックスデータをデコードして再生する処理を行う。システムターゲットデコーダ4の詳細については後述する。
プレーンメモリセット5aは、複数のプレーンメモリから構成される。プレーンメモリには、主映像プレーン、副映像プレーン、IGプレーン、PGプレーン、BD−Jプレーンといったものがある。
プレーン合成部5bは、プレーンメモリセット5aの各プレーンメモリに
に書き込まれたデータを瞬時に重畳し、重畳した映像データをHDMI送受信部6へ出力する。
HDMI送受信部6は、例えばHDMI規格(HDMI:HighDefinition Multimedia Interface)に従って、認証フェーズ、ネゴシエーションフェーズを実行し、映像データをテレビ103へ出力する。
再生制御部7は、再生エンジン7a、再生制御エンジン7bを含み、プログラム実行部11の再生命令や、ユーザイベント処理部17よりの通知に基づいて、プレイリスト情報を介したAVクリップの再生処理等、再生装置の再生を制御する。再生制御部7は更に、再生状態の変化に応じてレジスタセット10に各種のプレーヤ変数を設定更新する。また、再生制御部7はそれらのプレーヤ変数を参照して、システムターゲットデコーダ4に復号対象のエレメンタリストリームを指定し、かつ、各エレメンタリ・ストリームの復号に必要な情報を提供する。
再生エンジン7aは、AV再生機能を実行する。AV再生機能とは、DVD再生装置、CD再生装置から踏襲した機能群であり、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切り替え、セカンダリビデオ用のピクチャデータ切り替え、アングル切り替えといった処理である。
再生制御エンジン7bは、HDMVモードの動作主体であるコマンドインタプリタ、BD-Jモードの動作主体であるJavaプラットフォームからの関数呼び出しに応じて、プレイリストの再生機能を実行する。プレイリスト再生機能とは、上述したAV再生機能のうち、再生開始や再生停止をカレントプレイリストを構成するカレントプレイリスト情報、カレントクリップ情報に従って行うことをいう。
管理情報メモリ9は、カレントプレイリスト情報やカレントクリップ情報を格納しておくためのメモリである。カレントプレイリスト情報とは、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数プレイリスト情報のうち、現在処理対象になっているものをいう。カレントクリップ情報とは、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数クリップ情報のうち、現在処理対象になっているものをいう。
再生状態/設定レジスタ(Player Status/SettingRegister)セット10は、プレーヤ変数を記憶するためのレジスタ群である。プレーヤ変数の種類にはシステムパラメータ(SPRM)と、プログラムファイルが利用する任意の情報を格納できる汎用のパラメータ(GPRM)とがある。SPRMは再生装置102の状態を示す。図15はSPRMの一覧表である。各SPRMには通し番号が振られ、各通し番号に変数値が個別に対応付けられている。主なSPRMの内容は以下のとおりである。ここで、括弧内の数字は通し番号を示す。
SPRM(0) : 言語コード
SPRM(1) : プライマリオーディオストリーム番号
SPRM(2) : 字幕ストリーム番号
SPRM(3) : アングル番号
SPRM(4) : タイトル番号
SPRM(5) : チャプタ番号
SPRM(6) : プログラム番号
SPRM(7) : セル番号
SPRM(8) : 選択キー情報
SPRM(9) : ナビゲーションタイマー
SPRM(10) : 再生時刻情報
SPRM(11) : カラオケ用ミキシングモード
SPRM(12) : パレンタル用国情報
SPRM(13) : パレンタルレベル
SPRM(14) : プレーヤ設定値(ビデオ)
SPRM(15) : プレーヤ設定値(オーディオ)
SPRM(16) : オーディオストリーム用言語コード
SPRM(17) : オーディオストリーム用言語コード(拡張)
SPRM(18) : 字幕ストリーム用言語コード
SPRM(19) : 字幕ストリーム用言語コード(拡張)
SPRM(20) : プレーヤリージョンコード
SPRM(21) : セカンダリビデオストリーム番号
SPRM(22) : セカンダリオーディオストリーム番号
SPRM(23) : 再生状態
SPRM(24) : 予備
SPRM(25) : 予備
SPRM(26) : 予備
SPRM(27) : 予備
SPRM(28) : 予備
SPRM(29) : 予備
SPRM(30) : 予備
SPRM(31) : 予備
SPRM(10)は、復号処理中のピクチャのPTSを示し、そのピクチャが復号されて主映像プレーンメモリに書き込まれる度に更新される。従って、SPRM(10)を参照すれば、現在の再生時点を知ることができる。
SPRM(16)のオーディオストリーム用言語コード、及びSPRM(18)の字幕ストリーム用言語コードは、再生装置102のデフォルトの言語コードを示す。それらは再生装置102のOSD等を利用してユーザに変更させることもでき、プログラム実行部11を通じてアプリケーションプログラムに変更させることもできる。例えばSPRM(16)が「英語」を示しているとき、再生制御部7はプレイリスト再生処理において、まずPI内のストリーム選択テーブルから、「英語」の言語コードを含むストリームエントリを検索する。次に、そのストリームエントリのストリーム識別情報からPIDを抽出してシステムターゲットデコーダ4に渡す。それにより、そのPIDのオーディオストリームがシステムターゲットデコーダ4によって選択され、復号される。これらの処理は、ムービーオブジェクトファイル又はBD−Jオブジェクトファイルを利用して再生制御部7に実行させることができる。
また、再生制御部7は再生処理中、プレーヤ変数に設定された値をチェックしながら再生を制御する。再生制御部7は特に、SPRM(1)、SPRM(2)、SPRM(21)、及びSPRM(22)を更新する。それらは順に、処理中のオーディオストリーム、字幕ストリーム、セカンダリビデオストリーム、及びセカンダリオーディオストリームの各ストリーム番号を示す。例えばプログラム実行部11によってオーディオストリームのSTNを示すSPRM(1)が変更されたときを想定する。再生制御部7はそのとき、まず現時点で再生処理中のPI内のSTNテーブルから、変更後のSPRM(1)の示すSTNを含むストリームエントリを検索する。再生制御部7は次に、そのストリームエントリ内のストリーム識別情報からPIDを抽出してシステムターゲットデコーダ4に渡す。それにより、そのPIDのオーディオストリームがシステムターゲットデコーダ4によって選択され復号される。こうして、再生対象のオーディオストリームが切り換えられる。同様に、再生対象の字幕及びセカンダリビデオストリームを切り換えることもできる。
プログラム実行部11は、HDMVモジュール13、BD−Jプラットフォーム14、ミドルウェア15、モード管理モジュール16を含み、BDプログラムファイルに格納されたプログラムを実行するプロセッサである。
HDMVモジュール13は、HDMVモードの動作主体となるDVD仮想プレーヤであり、HDMVモードの実行主体となる。本モジュールは、コマンドインタプリタを具備し、ムービーオブジェクトを構成するナビゲーションコマンドを解読して実行することでHDMVモードの制御を実行する。ナビゲーションコマンドは、DVD−Videoと似たようなシンタックスで記述されているため、かかるナビゲーションコマンドを実行することにより、DVD−Videoライクな再生制御を実現することができる。
BD−Jプラットフォーム14は、BD−Jモードの動作主体であるJavaプラットフォームであり、Java2Micro_Edition(J2ME) Personal BasisProfile(PBP 1.0)と、Globally Executable MHPspecification(GEM1.0.2)for package media targetsとをフル実装しており、クラスローダ、バイトコードインタプリタ、アプリケーションマネージャから構成される。BD−Jプラットフォーム14は、実行するBD−Jアプリケーションに応じて様々な機能を実現する。
クラスローダは、システムアプリケーションの1つであり、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリに格納することにより、BD−Jアプリケーションのロードを行う。
バイトコードインタプリタは、いわゆるJava仮想マシンであり、ヒープメモリに格納されているBD−Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。
アプリケーションマネージャは、システムアプリケーションの1つであり、BD−Jオブジェクト内のアプリケーション管理テーブルに基づき、BD−Jアプリケーションを起動したりBD−Jアプリケーションを終了したりする等、BD−Jアプリケーションのアプリケーションシグナリングを行う。以上で、BD−Jプラットフォーム部の内部構成についての説明を終える。
ミドルウェア15は、組込みソフトウェアのためのオペレーティングシステムであり、カーネル、デバイスドライバから構成される。カーネルは、BD−Jアプリケーションからのアプリケーションプログラミングインターフェイス(API)のコールに応じて、再生装置特有の機能をBD−Jアプリケーションに提供する。また、割込信号により割込ハンドラ部を起動する等のハードウェア制御を実現する。
モード管理モジュール16は、BD−ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブから読み出されたIndex.bdmvを保持して、モード管理及び分岐制御を行う。モード管理モジュールによるモード管理とは、動的シナリオを、BD−Jプラットフォーム14、HDMVモジュール13のどちらに実行させるかという、モジュールの割り当てである。
プログラムメモリ12は、仮想ファイル制御部20から転送されるカレント動的シナリオを格納しておき、HDMVモードの動作主体であるHDMVモジュール、BD−Jモードの動作主体であるJavaプラットフォームによる処理に供されるメモリである。カレント動的シナリオとは、BD−ROMに記録されているIndex.bdmv、BD−Jオブジェクト、ムービーブジェクトのうち、現在実行対象になっているものをいう。またプログラムメモリ12は、ヒープメモリを含む。ヒープメモリは、システムアプリケーションのバイトコード、BD−Jアプリケーションのバイトコード、システムアプリケーションが利用するシステムパラメータ、BD−Jアプリケーションが利用するアプリケーションパラメータが配置されるスタック領域である。
ネットワークモジュール13は、外部ネットワークとのデータ通信を制御するモジュールであり、プログラム実行部11の制御を受けて、インターネットなどのWWWサーバからアップデートキットを取得し、ローカルストレージへ転送する。
ユーザイベント処理部17は、リモコンを通じたユーザ操作に応答して、プログラム実行部11や再生制御部7に処理の実行を依頼する。例えば、リモコンでボタンを押した場合は、そのボタンに含まれるコマンドを実行するようプログラム実行部11に依頼する。例えば、リモコンで早送り・巻戻しボタンが押された場合には、再生制御部7に、現在再生しているプレイリストのAVクリップに対する早送り・巻戻し処理の実行を命令する。
不揮発メモリ19は、読み書き可能なメモリなどの記録媒体であり、電源が供給されなくても、記録内容を保持できる媒体、例えばフラッシュメモリ、FeRAMなどである。これは、レジスタセット10における記憶内容のバックアップに用いられる。
仮想ファイル制御部20は、BD−ROMドライブ1、ローカルストレージ3を制御して、仮想ファイルシステムの機能を実現する。仮想ファイルシステムの機能とは、仮想パッケージの構築、及び仮想パッケージを介したROMディスク及びローカルディスク上のファイルへのアクセス制御である。仮想パッケージとは、ローカルストレージ3に格納されたマージ管理情報を元に、ROMディスクに記録されたコンテンツと、ローカルストレージ3に格納されたアップデートキットとをメモリ上で組み合せた仮想的なBD−ROMパッケージである。作成された仮想パッケージは、BD−ROMのデータ構造と同じ形式を持つ。既存のROMディスクにファイルを追加するだけでなく、ROMディスク上の既存ファイルをローカルストレージ上のファイルで置き換えることも可能である。仮想ファイル制御部20による仮想パッケージ構築は、BD−ROMディスクのインサートや、プログラム実行部11の仮想ファイル作成命令がトリガとなり、タイトル再生の切替等、タイトル再生が停止しているタイミングで実行される。仮想パッケージの構築、及び仮想パッケージを介したファイルアクセス制御の詳細については後述する。
次に、図16を参照しながらシステムターゲットデコーダ4について説明する。
ソースデパケットタイザは、システムターゲットデコーダ4に転送されるソースパケットを解釈し、TSパケットを取り出しPIDフィルタに送出する。この送出にあたって、各ソースパケットのATSに応じてデコーダへの入力時刻を調整する。具体的には、ATCカウンタが生成するATCの値と、ソースパケットのATS値とが同一になった瞬間に、AVクリップの記録レートにしたがって、そのTSパケットだけをPIDフィルタに転送する。
PIDフィルタは、ソースデパケッタイザから出力されたTSパケットのうち、TSパケットのPIDが、再生に必要とされるPIDに一致するものを、PIDにしたがって、主映像ビデオデコーダ、副映像ビデオデコーダ、IGデコーダ、PGデコーダ、音声デコーダ、副音声デコーダに転送する。例えば、BD−ROMの場合には、TSパケットに含まれるPIDが0x1011である場合は主映像ビデオデコーダに、PIDが0x1B00から0x1B1Fである場合は副映像ビデオデコーダに、PIDが0x1100から0x111Fである場合は主音声デコーダに、PIDが0x1A00から0x1A1Fである場合は副音声デコーダに、PIDが0x1200から0x121Fである場合はPGデコーダに、PIDが0x1400から0x141Fである場合はIGデコーダに転送される。
図16の通りソースデパケッタイザとPIDフィルタはそれぞれ二つもち、一つはリードバッファ(1)から転送されるAVクリップ、一つはリードバッファ(2)から転送されるAVクリップを処理する。サブパスタイプが同期型の場合は、メインパスから参照されるAVクリップとサブパスから参照されるAVクリップは同期を取りながら再生する。サブパスタイプが非同期型の場合は、メインパスから参照されるAVクリップとサブパスから参照されるAVクリップは非同期で再生する。
主映像ビデオデコーダは、緩衝バッファを有し、バッファにデータを蓄えながら、TSヘッダ、PESヘッダなどの情報を取り除いて、符号化状態にあるピクチャ(Iピクチャ、Bピクチャ、Pピクチャ)を取り出し、ビデオストリームの個々のフレーム画像を所定の復号時刻(DTS)ごとにデコードすることにより複数フレーム画像を作成し、表示時刻(PTS)のタイミングで主映像プレーンに出力する。AVクリップに多重化されるビデオストリームの圧縮符号化形式にはMPEG2、MPEG4AVC、VC1などがあるため、ストリームの属性に応じて、圧縮映像の復号化方式を切り替える。
副映像ビデオデコーダは、主映像ビデオデコーダと同様の構成を持ち、入力される副映像ビデオストリームのデコードを行い、表示時刻(PTS)のタイミングでピクチャを副映像プレーンに書き出す。
IGデコーダは、ソースデパケタイザから入力されるTSパケットからインタラクティブグラフィックスストリームを抽出してデコードし、非圧縮のグラフィックスデータを表示時刻(PTS)のタイミングでIGプレーンに書き出す。
PGデコーダは、ソースデパケタイザから入力されるTSパケットからプレゼンテーショングラフィックスストリームを抽出してデコードし、非圧縮のグラフィックスデータを表示時刻(PTS)のタイミングでPGプレーンに書き出す。
主音声デコーダは、緩衝バッファを有し、バッファにデータを蓄えながら、TSヘッダ、PESヘッダなどの情報を取り除いて、音声ストリームデコード処理を行い、非圧縮のLPCM状態のオーディオデータを得て再生時刻(PTS)のタイミングで音声ミキサーに出力する。AVクリップに多重化されるオーディオストリームの圧縮符号化形式にはAC3、DTSなどがあるため、ストリームの属性に応じて、圧縮音声の復号化方式を切り替える。
副音声デコーダは、主音声デコーダと同様の構成を持ち、入力される副音声ストリームのデコードを行い、表示時刻のタイミングで非圧縮のLPCMの状態のオーディオデータを音声ミキサーに出力する。AVクリップに多重化されるオーディオストリームの圧縮符号化形式にはDolbyDigitalPlus、DTS−HD LBRなどがあるため、ストリームの属性に応じて、圧縮音声の復号化方式を切り替える。
音声ミキサーは、主音声デコーダから出力される非圧縮音声データと副音声デコーダから出力される非圧縮音声データとをミキシング(音の重ね合わせ)をしてスピーカなどに出力する。
BD−Jプロセッサは、プログラム実行部11から転送されるグラフィックスデータ(PNG、JPEG)をデコードして、BD−Jアプリケーションから指定される表示時刻にしたがって、BD−Jプレーンに出力する。
以上が再生装置の内部構成である。
<仮想ファイルシステム>
仮想ファイルシステムにおける仮想パッケージの構築、及び仮想パッケージ上のファイルアクセスについて説明する。
仮想パッケージは、BD−ROM101に記録されたファイルと、ローカルストレージ3に装着されているSDメモリカード104に記録されたアップデートキットとから構築される。先ずSDメモリカード104に記録されたアップデートキットのデータ構造について説明する。
<アップデートキット>
図17は、SDメモリカード104におけるアップデートキットの保存領域を示す図である。SDメモリカード104におけるアップデートキットの保存領域では、OrgIDディレクトリ、DiscIDディレクトリにより、各アップデートキットの保存領域がBD−ROM毎に分かれている。アップデートキット保存領域ルートディレクトリは、SDメモリカード104のルートディレクトリの直下に存在し、アップデートキット保存領域のルートを示すディレクトリで、ディレクトリ名は固定値(BD_BUDA)である。
OrgIDディレクトリは、BD−ROM記録層上のBD管理情報(インデックスファイル)に記載されている、映画作品のプロバイダを特定する32bitの識別子(OrganizationID)を16進表記で表した、8文字の名前のディレクトリである。また、OrganizationIDの先頭の連続する0は、ディレクトリの名前から省略する。例えば、OrganizationIDが0x0000001Aの場合は、ディレクトリの名前は”1A”となる。
DiscIDディレクトリは、BD−ROM記録層上のBD管理情報(インデックスファイル)に記載されている、BD−ROM記録層を特定する128bitの識別子(DiscID)を先頭から32bitずつ4分割し、それぞれを16進表記で表したディレクトリである。また、OrganizationIDと同様にDiscIDの先頭の連続する0は、ディレクトリの名前から省略する。
DiscIDディレクトリの配下には、アップデートキット毎にアップデートキットディレクトリが作成され、その配下に各アップデートキットが存在する。図17の例では、「0123456789abcdef0123456789abcdef」というディレクトリ名のDiscIDディレクトリ配下に、「Update01」という名称のアップデートキットが保存されている。
アップデートキットは、マージ管理情報ファイル(bumf.xml)、署名情報ファイル(merge.sf)、状態シグナリングファイル(vp_unit.info)、及び他の追加コンテンツデータファイル(game.bdjo、game.jar、resources.jar、jun_01.m2ts、jun_01.clpi、jun_01.mpls、jpn_sub.m2ts、jpn_sub.clpi等)を含む。
マージ管理情報ファイル(bumf.xml)は、図18に示すように、OrganizationIDとDiscIDとマッピング情報を格納している。マッピング情報は、仮想パッケージを構成するための追加コンテンツデータファイル、及び状態シグナリングファイルのSDメモリカード104におけるファイルパス(以下、ローカルストレージファイルパスという)と、仮想ファイルシステム上でそれらのファイルへアクセスするための仮想的なファイルパス(以下、VFSファイルパスという)とを対応付けたテーブルである。具体的には、図18に示すように、マッピング情報においてローカルストレージファイルパスは、アップデートキットディレクトリからの相対パスで記載され、VFSファイルパスはディスクルートディレクトリからの相対パスで記述されている。更にマージ管理情報ファイルには、マッピング情報に示されている各追加コンテンツデータファイルのハッシュ値が格納されている。
署名情報ファイルは、マージ管理情報ファイルに対するプロバイダの電子的な署名を示すファイルであり、merge.sfというファイル名でアップデートキットディレクトリ直下に保存される。電子的な署名は、一般的に改ざん防止が必要な情報に対してハッシュ値を計算し、ハッシュ値をなんらかの秘密鍵を用いて暗号化したものを用いる。本実施形態の署名情報ファイルでは、BD−ROM記録層上にあるマージ証明書中の公開鍵に対応する秘密鍵を利用して、マージ管理情報ファイルのハッシュ値が暗号化されている。
マージ証明書は、マージ管理情報ファイルの認証に利用する証明書で、プロバイダが公開する公開鍵が含まれる。プロバイダが提供するマージ証明書は、BD−ROM記録層上にbd.certというファイル名で保存されている。マージ証明書のファイル形式の一例としてはX.509を利用することができる。
追加コンテンツデータファイルはBD−ROM記録層に記録されたオリジナルのコンテンツに対し、追加/更新するコンテンツのファイル群である。ここには、プレイリストファイル、AVクリップ、クリップ情報ファイル、ムービーオブジェクトファイル、BDJオブジェクトファイル、JARファイル、インデックスファイル等を含めることができる。
状態シグナリングファイルは、本発明に係る再生装置において、BD−Jアプリケーションによる仮想パッケージ構築状態判定に用いられるファイルである。何れのアップデートキットにおいても、状態シグナリングファイルのVFSファイルパスは、図18に示す固定パス「BDMV/JAR/11111/VFSData.info」がマージ管理情報ファイルで割り当てられる。BD−ROMのオーサリング工程では、この「BDMV/JAR/11111/VFSData.info」というファイルパスに相当するファイルをBD−ROM上に作成することが禁止されている。
尚、仮想パッケージ構築状態判定の用途では、状態シグナリングファイルの内容を特に問わないが、本実施形態形態では状態シグナリングファイルとして、アップデートキットの内容を示すVP情報ファイル(vp_unit.info)を用いる。図19は、本実施形態に係る状態シグナリングファイルの内容を示す図である。具体的には状態シグナリングファイルには、対象ROMディスクのOrganizationID、対象ROMディスクのDiscID、アップデートキットの識別子、アップデートキットの名称、バージョン番号、アップデートキットに含まれるデータの詳細、アップデートキットを代表する画像イメージのファイル名、及び、アップデートキットを代表する各言語でのテキスト情報が記録されている。これらの情報により、アップデートキットのバージョンやアップデートキットに含まれるデータの詳細な内容を容易に取得することができる。なお、図19のファイルに記録する情報は、必要に応じて追加あるいは削除してもよい。例えば、対象ROMディスクのOrganizationID、DiscIDなどは、削除してもよいし、複数記録することが出来るようにしてもよい。また、これらの情報を記録する状態シグナリングファイルの形式は、テキスト形式でも良いし、XML(Extensible Markup Language)形式、バイナリ形式などの他の形式のファイルに記録しても良い。
<仮想パッケージの構築>
次に、仮想ファイル制御部20が、マージ管理情報ファイルの内容を元にBD−ROM101に記録されたコンテンツとSDメモリカード104に記録されたコンテンツとから、仮想パッケージを構築する過程について説明する。
仮想ファイル制御部20は、以下(1)乃至(5)の手順で仮想パッケージを構築する。
(1)マージ管理情報ファイルの改竄判定
マージ管理情報ファイルの改竄判定は、マージ管理情報ファイルからハッシュ値を算出し、BD−ROM記録層上にあるマージ証明書中の公開鍵を用いて署名情報ファイルにより示されるマージ管理情報ファイルのハッシュ値を復号化したものと比較する。これらの値が一致する場合にマージ管理情報ファイルは改竄されていないと判定する。
(2)追加コンテンツデータファイルの存在確認
マージ管理情報ファイルが改竄されていない場合に、マッピング情報において示されるローカルストレージファイルパスに、各追加コンテンツデータファイルが存在することを確認する。
(3)追加コンテンツデータファイルの改竄判定
各追加コンテンツデータファイルからハッシュ値を算出し、これらの値とマッピング情報に記録されている各追加コンテンツデータファイルのハッシュ値とを比較する。これらの値が一致する場合に追加コンテンツデータファイルは改竄されていないと判定する。
(4)追加コンテンツデータファイルをリードオンリー属性へ変更
マッピング情報により対応付けが示されている各追加コンテンツデータファイルが改竄されていない場合に、追加コンテンツデータファイルをリードオンリー属性へ変更する。
(5)VFSファイルパスへの割り付け
マージ管理情報ファイルのマッピング情報を読み込み、アップデートキットの各ファイルをマッピング情報で示されるVFSファイルパスへ割りつけたディスクイメージを作成し、再生制御部7及びプログラム実行部11に提供する。
図20は、図18に示すマージ管理情報ファイルに基づいて、図2に示すBD−ROM101のファイル構成に、図17に示すアップデートキットのファイル構成を組み合わせて構築した仮想パッケージのファイル構成を示す図である。本図において太枠で示すディレクトリ、及びファイルは、実際にはSDメモリカード104に記録されているものである。
図21は、仮想ファイルシステムによって実現される仮想パッケージのコンテンツの一例を示したものである。図21では、ROMディスク上に映画本編、特典映像が記録されており、ローカルストレージ上に日本語字幕、新作映画の予告編、ボーナスゲームに関するファイル、及び、状態シグナリングファイルとして用いるVP情報ファイルが記録されている。このような場合に仮想パッケージを構築することで、仮想ファイルシステムは、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲーム、VP情報ファイルがあたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる。
<仮想パッケージへのアクセス制御>
以上の手順で仮想パッケージは構築され、以後、仮想ファイル制御部20は、再生制御部7及びプログラム実行部11からのVFSファイルパスでのアクセス要求に対し、マッピング情報を参照して実体のファイルが記録されている記録媒体を確認し、BD−ROMドライブ1及びローカルストレージ3の何れかへデータ読み出しを命令する。
具体的には、再生制御部7及びプログラム実行部11から仮想パッケージ上のファイルパスを指定して読み出し命令がなされた場合、仮想ファイル制御部20はマッピング情報を参照し、指定のファイルパスがマッピング情報のVFSファイルパスに記載されているか否かを検索する。ここで、指定のファイルパスがマッピング情報のVFSファイルパスに記載がない場合、仮想ファイル制御部20は、指定ファイルの実体がBD−ROM101に記録されていると判定し、仮想パッケージ上のファイルパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。一方、指定のファイルパスがマッピング情報のVFSファイルパスに記載されている場合、仮想ファイル制御部20は指定のファイルの実体がSDメモリカード104に記録されていると判定し、仮想パッケージ上のファイルパスをマッピング情報で対応付けられたローカルストレージファイルパスで変換して、ローカルストレージ3へ読み出し命令を転送する。これにより、再生制御部7及びプログラム実行部11は、SDメモリカード104上の追加コンテンツデータファイル、及び状態シグナリングファイルに、仮想パッケージ上のファイルパスでアクセスすることができる。ここように、ROMディスクに含まれているデータと同様に、SDメモリカード104上に追加された字幕、音声、映像等の再生を行う場合には、再生制御部7及びプログラム実行部11が仮想ファイル制御部20に上記ファイルアクセスを要求し、仮想ファイル制御部20がROMディスクあるいはSDメモリカード104上のファイルにアクセス命令を転送する。つまり、字幕、音声、映像等の再生を行う場合には、再生制御部7及びプログラム実行部11が仮想ファイル制御部20を介してROMディスクあるいはローカルストレージ上のファイルにアクセスをすることになる。
尚、仮想パッケージが構築されていない状態で、再生制御部7及びプログラム実行部11から仮想パッケージ上のファイルパスを指定して読み出し命令がなされた場合、仮想ファイル制御部20は、参照するマージ管理情報ファイルがないため、仮想パッケージ上のファイルパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。
<仮想パッケージの構築状態>
仮想パッケージの構築状態には、ローカルストレージ3に取り付けられているSDメモリカード104に、アップデートキットが記録されていない状態、SDメモリカード104にアップデートキットが記録されているが、仮想ファイル制御部20が仮想パッケージ構築を完了していない状態、及び、SDメモリカード104にアップデートキットが記録されており、仮想ファイル制御部20が仮想パッケージ構築を完了している状態の3つが考えられる。
このうち1番目の状態は、そもそもアップデートキットが存在していないので、アップデートキットのファイルへのアクセスは不可能である。しかし、2番目に状態と3番目の状態では、BD−Jアプリケーションは、read命令でSDメモリカード上のファイルパスを直接指定することで、アップデートキットのファイルにアクセスすることができる。そこで、この2つの状態の違いを判定することが重要である。以下、SDメモリカード104にアップデートキットが記録されているが、仮想ファイル制御部20が仮想パッケージ構築を完了していない状態を仮想パッケージが「準備状態」であるとし、SDメモリカード104にアップデートキットが記録されており、仮想ファイル制御部20が仮想パッケージ構築を完了している状態を仮想パッケージが「有効状態」であるとする。
仮想パッケージの準備状態、及び有効状態がどのような場合に生ずるかを、図22を参照しながら説明する。まず、準備状態は、図中のst3、及びst2で生じる状態である。st3の状態は、SDメモリカード104に記録されたアップデートキットを用いて仮想パッケージが一度構築された状態(st4)から、SDメモリカード104がローカルストレージ3から取り外され仮想パッケージが解除された後(st0)、SDメモリカード104がローカルストレージ3に再装着されたとき(st3)に生じる。通常、この後に仮想ファイル制御部20が、タイトルの切替を待って、次タイトル再生開始前に仮想パッケージを再構築することで、仮想パッケージが有効状態(st4)となる。
st2で準備状態となる場合は、仮想パッケージが一度構築された状態(st4)から、SDメモリカード104がローカルストレージ3から取り外され仮想パッケージが解除された後(st0)、BD−Jアプリケーションが起動され(st5)、その後にSDメモリカード104がローカルストレージ3に再装着されたとき(st2)に生じる。この場合、仮想ファイル制御部20は、タイトルの切替に伴うBD−Jアプリケーションの停止を待って、BD−Jアプリケーションが再起動する前の時点で仮想パッケージを再構築することで、仮想パッケージが有効状態(st4)となる。
以上のように準備状態は、アップデートキットを記録したSDメモリカード104の取り外し/再装着に伴う仮想パッケージの再構築過程で、再装着からタイトル切替がなされるまでの間に生じる状態である。
尚、仮想パッケージ構築過程のうち(3)の手順は処理負荷が大きい場合がある。例えば、アップデートキットにAVクリップ等のサイズが大きいファイルが含まれている場合、このファイルのハッシュ値計算は負荷の大きなものとなる。アップデートキットを記録したSDメモリカード104の取り外し/再装着の度に、仮想パッケージの再構築が必要となるが、このような負荷の大きな処理をその度に実行することはハードウェア資源の利用効率向上の観点から好ましくない。そこで、仮想パッケージ構築過程のうち(1)乃至(4)の手順は初回の仮想パッケージ時のみ実行し、仮想パッケージ再構築時には、(5)の手順だけを実行するよう実装することも考えられる。また、(1)乃至(4)の手順は、BD−ROM101のタイトル再生に影響を及ぼさないため、BD−ROM101のタイトル再生と並行して実行可能である。これに対して(5)の手順は、必ずタイトル再生が停止した状態で実行する必要がある。従って、(4)の段階まで済んだ状態が、準備状態であり、(5)の手順が実行された状態が、有効状態であると見なすこともできる。
<仮想パッケージの構築状態判定>
以下、仮想パッケージの構築状態が準備状態と有効状態との何れであるかを判定する手法について説明する。
図23は、BD−Jアプリケーションが有する仮想パッケージ構築状態判定機能を説明する図である。
BD−Jアプリケーションには、オーサリング工程でのBD−Jアプリケーションのプログラミング工程において、状態シグナリングファイル位置情報21が組み込まれている。状態シグナリングファイル位置情報21は、アップデートキットのマージ管理情報ファイルにおいて状態シグナリングファイルに割り当てられているVFSファイルパスである。状態シグナリングファイルに割り当てられているVFSファイルパスは、何れのアップデートキットでも共通する予め決められた固定ファイルパスであり、本実施形態では、「BDMV/JAR/11111/VFSData.info」が用いられる。
仮想パッケージ構築状態判定部22は、状態シグナリングファイル位置情報21により示されるファイルパスを指定して読み出し命令を試行し、その成否によって仮想パッケージの構築状態を判定する。具体的には、読み出し命令が成功した場合は、仮想パッケージが有効状態であると判定し、読み出し命令がエラーとなった場合は、仮想パッケージが準備状態であると判定する。
実際に、仮想パッケージが有効状態であれば、仮想パッケージ上に状態シグナリングファイル31が割り当てられており、仮想ファイル制御部20は、読み出し命令で指定のパスをローカルストレージファイルパスに変換して、ローカルストレージ3へ読み出し命令を転送するため、状態シグナリングファイルの読み出しに成功する。逆に、仮想パッケージが準備状態であれば、仮想ファイル制御部20は、読み出し命令で指定のパスをBD−ROM101上のファイルパスに変換して、BD−ROMドライブ1へ読み出し命令を転送する。しかし、BD−ROMのオーサリング工程では、「BDMV/JAR/11111/VFSData.info」というファイルパスに相当するファイルをBD−ROM上に作成することが禁止されているため、BD−ROM101上に同名のファイルは存在し得ず、読み出し命令は必ずエラーとなる。
仮想パッケージ構築状態判定部22の判定結果は、例えば、メニュー表示部23等で利用され、仮想パッケージの構築状態に応じたて適切なメニュー表示がなされる。
尚、再生装置にローカルストレージ3にSDメモリカードが挿入されていない場合にも、もちろん状態シグナリングファイルの読み出し命令は必ずエラーとなる。このような場合にも仮想パッケージは準備状態であると判断するようにしてもよい。
以上のような機能は、図24、図25のフローチャートに示される処理手順をオブジェクト指向型コンパイラ言語で記述してコンピュータに実行させることで実現することができる。
図24は、メニュー表示制御手順を示す。本フローチャートは、ステップS1において、仮想パッケージ構築状態判定を実施し、判定の結果、仮想パッケージが有効状態である場合(ステップS2:Yes)には、メニュー画面を表示する際に、アップデートキットに含まれる追加コンテンツを呼び出すボタン、例えば、「Game」ボタンの表示を許可する(ステップS3)。一方、判定の結果、仮想パッケージが準備状態である場合(ステップS2:No)には、メニュー画面を表示する際に、追加コンテンツを呼び出す「Game」ボタンの表示を抑制する(ステップS4)。
図25は、仮想パッケージ構築状態判定処理の処理手順を示す。本フローチャートは、ステップS11において、BD−Jアプリケーションが実行されている再生装置が、仮想ファイルシステム機能に対応したものであるか否かを、再生装置内蔵の記録媒体に記録されているProfile情報等から判定する。仮想ファイルシステム機能に対応したものであれば(ステップS11:Yes)、状態シグナリングファイル位置情報21を読み出し、状態シグナリングファイルに割り当てられる固定VFSファイルパスを取得する(ステップS12)。この固定VFSファイルパスを用いて、仮想ファイル制御部20へ読み出し命令を発行することで、状態シグナリングファイルが仮想パッケージ上に存在するか否かを判定する(ステップS13)。固定VFSファイルパスを指定して状態シグナリングファイルが読み出せた場合は、仮想パッケージが有効状態であると判定し(ステップS14)、固定VFSファイルパスを指定して状態シグナリングファイルが読み出せなかった場合には、仮想パッケージが準備状態であると判定する(ステップS14)。
図25に示した処理はBD−Jアプリケーションが実行されている間、繰り返し実行される。固定VFSファイルパスを指定して状態シグナリングファイルのアクセスが可能か否かの判断結果に従って、仮想パッケージが準備状態になっているのか有効状態になっているのかを正しく判定することができるので、BD−Jアプリケーションが仮想パッケージ構築状態を誤判定することで誤動作が発生するような状況を防止することができる。
なお、仮想パッケージ構築状態判定処理は、BD−Jアプリケーションが起動した直後に行っても良い。このようにすることで、状態シグナリングファイルへのアクセス回数を減らすことができる。アクセス回数を減らすことが出来る理由は、仮想パッケージ構築が完了するタイミングが、BD−Jアプリケーションが起動する前の時点に限られ、BD−Jアプリケーションの動作中には仮想ファイルシステムの構築が完了することはあり得ないため、BD−Jアプリケーションの起動直後に実施した判断結果は、アプリケーションが終了するまでの間に変化することがないためである。従って、BD−Jアプリケーション起動直後に実施した判断結果を保存して、BD−Jアプリケーションの動作期間を通じて利用することで、仮想パッケージ構築状態を判断するために、ローカルストレージ上の状態シグナリングファイルにアクセスする回数を減らすことが出来る。これにより、BD−Jアプリケーションの処理を高速化することが出来る。
以上が、仮想パッケージの構築状態が準備状態と有効状態との何れであるかを判定する手法についての説明である。尚、図24、25のフローチャートに示した処理手順を行う主体は、仮想ファイル制御部20でもよい。また、再生装置にその他の制御部を設けて、その制御部が図24、25に示す処理手順を行うような構成にしてもよい。
あるいは、プログラム実行部11のミドルウェアが提供するAPIとして、図24、25のフローチャートに示した処理手順を実装することで、仮想パッケージが有効状態にあるか否かを、仮想ファイル制御部20、あるいは、再生装置に設けたその他の制御部から、BD−Jアプリケーションに提供するような構成にしても良い。
また、図24、25のフローチャートに示した処理手順をBD−Jアプリケーションのソースプコードに記載し、このようなBD−Jアプリケーションを実行することでプログラム実行部11にこれらの処理手順を実行させるとしてもよい。
<BD−Jアプリケーションの動作例>
図26は、ローカルストレージ3へのメディア取り付け状態、タイトルの再生状態、実際の仮想パッケージ構築状態、及びBD−Jアプリケーションによる構築状態判定結果を時系列に示した図である。ここで実行されるBD−Jアプリケーションは、図21に示すようなアップデートキットをネットワーク等から取得して、仮想パッケージの構築を要求し、仮想パッケージ構築状態に応じた特典選択メニューを表示する機能を有する。また、BD−Jアプリケーションの実体であるJARファイルには、図27の(a)、(b)に示す特典選択メニューを表示するためのPNGファイルが含まれている。
まず、図26のt0においてローカルストレージ3にSDメモリカードが挿入されてから、t1において、BD−ROMに記録されているBD−Jアプリケーションが起動される。この時点ではSDメモリカードにアップデートキットが記録されていないので、図22に示す状態遷移図では、t0時点の状態st0からst1への遷移し、更にアプリケーションの起動した状態st2へ遷移することになる。ここでBD−Jアプリケーションによる仮想パッケージ構築状態判定が実行されるが、図26のt1からt2の期間では、仮想パッケージは構築されておらず、BD−Jアプリケーションによる仮想パッケージ構築状態判定では準備状態と判定される。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、選択肢として「Making」ボタンと「Trailer」ボタンとのみを含む特典機能メニューである図27の(b)のメニューを表示させる。これらのボタンは、ROMディスク上の映画本編、特典映像へのアクセスを必要とするものである。図27の(b)の特典選択メニューでは、新作映画の予告編を再生する選択肢とボーナスゲームを実行するための選択肢が存在しないため、ユーザは新作映画の予告編の再生、及び、ボーナスゲームを実行することは出来ない。
仮想パッケージ構築状態判定で準備状態と判定されると、BD−Jアプリケーションは、ローカルストレージ3に装着されているSDメモリカードをローカルファイルパスでアクセスし、アップデートキットが記録されているか否かを判断し、アップデートキットが記録されていなければ、アップデートキットをネットワークモジュールを介してダウンロードする。アップデートキットを取得した後、BD−Jアプリケーションは、ローカルストレージ3にアップデートキットを記録させる。その後、BD−Jアプリーションは仮想ファイル制御部20に仮想ファイルシステム構築を指示を要求する。
仮想ファイル制御部20に仮想ファイルシステムの作成を要求したBD−Jアプリケーションは再生中タイトルの停止/再開始をプログラム実行部11に要求する。再生中タイトルを停止/再開始する理由は、仮想ファイルシステムの構築が完了するタイミングが、タイトル再生を開始する前の時点に限られるからである。つまり、BD−Jアプリケーションの起動中に、仮想ファイル制御部20が仮想ファイルシステムの構築を指示されたとしても、タイトル再生が一度停止し再生が再開されないと、仮想パッケージの構築が完了しないことになる。言い換えると、仮想ファイルシステムの構築が完了するための条件は、タイトル再生が開始される前に、仮想ファイル制御部20が、ローカルストレージ上の所定の位置に記録されたマージ管理情報ファイルとそのマージ管理情報ファイルに対応する(マージ管理情報ファイルに記載のある)アップデートキットの追加コンテンツデータファイルとを読み込むことができることである。この結果、図26のt2で再生中のタイトルが停止し、次にt3でタイトル再生が再開される時に、仮想パッケージの構築が完了する。図22に示す状態遷移図では、タイトル再生停止に伴うBD−Jアプリケーションの停止により状態st2から状態st3へ遷移し、更にタイトル再生の再開時に仮想パッケージ構築が完了した状態st4へ遷移することになる。ここで再生再開したタイトル内で起動したBD−Jアプリケーションにより仮想パッケージ構築状態判定が実行されると、図26のt3からt4の期間には、仮想パッケージが有効状態であると判定される。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、選択肢として「Making」ボタンと「Trailer」ボタンとに加えて「Trailer New」ボタンと「Game」ボタンとを含んだ特典機能メニューである図27の(a)のメニューを表示させる。このとき、ユーザが「Trailer New」を選択するとローカルストレージ上に追加された新作映画の予告編が再生され、「Game」を選択するとローカルストレージ上に追加されたボーナスゲームが実行されることで、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲームがあたかも1つのディスクで記録されているように動作する。
ここで、仮想パッケージの構築が完了した状態で、図26のt4においてローカルストレージ3からSDメモリカードが取り外されると、再生中のタイトルが停止されBD−Jアプリケーションは強制終了させられる。そして、ローカルストレージ3からSDメモリカードを取り外したままタイトル再生が開始されると、仮想パッケージの構築が完了していない状態で再生中タイトルのBD−Jアプリケーションが実行された状態となる。図22に示す状態遷移図では、SDメモリカードの取り外しにより状態st4から状態st0へ遷移する。そこからタイトル再生の再開により、状態st5へ遷移する。
仮想パッケージ構築が完了するための条件は、上述したように、タイトル再生が開始される前に、仮想ファイル制御部20がSDメモリカード上の所定の位置に記録されるマージ管理情報ファイルと対応するアップデートキットを読み込むことができることである。しかし、本図の例では、タイトル再生が再開されるt5の前の時点では、ローカルストレージからSDメモリカードが取り外されている。したがって、タイトル再生が開始される前に、マージ管理情報ファイルと対応するアップデートキットは存在しないので、タイトル再生が開始される前に、ローカルストレージ上の所定の位置に記録されるマージ管理情報ファイルと対応するアップデートキットとを読み込むことができない。よって、この状態でt6において、先ほど取り外したSDメモリカードがローカルストレージに再挿入されたとしても、タイトルが再生中であるため、仮想パッケージの再構築は完了しない。図22に示す状態遷移図では、SDメモリカードの再装着により状態st5から状態st2へ遷移する。
ここで、図35に示した従来技術では、t6においてSDメモリカードが再装着されることで、BD−JアプリケーションはSDメモリカードのローカルアドレスを直接指定してSDメモリカードに記録されたアップデートキットへアクセスできることから、BD−Jアプリケーションは、仮想パッケージの構築が完了している有効状態であると誤判定していた。状態遷移図で説明すると、従来技術によるBD−Jアプリケーションは、SDメモリカードの再装着により状態st5から、破線矢印a1で示すように状態st4へ遷移したと誤判定していた。そのため、従来技術のBD−Jアプリケーションでは、仮想パッケージが準備状態であるにもかかわらず、仮想パッケージが有効状態である場合の特典機能メニューである図27の(a)のメニューを表示させ、メニュー表示内容と表示内容に付随する動作との整合性がとれていないという異常事態を引き起こしていた。
これに対して、本実施形態に係るBD−Jアプリケーションは、図25に示す処理手順で、状態シグナリングファイルを利用した仮想パッケージ構築状態判定を実行することで、図26のt6からt7の期間に、仮想パッケージが準備状態であると正しく判定することができる。そのため、この期間に特典選択メニューを表示する場合、BD−Jアプリケーションは、仮想パッケージが準備状態である場合の特典機能メニューである図27の(b)のメニューを表示させる。このように、従来技術を用いたBD−Jアプリケーションでは異常事態が発生し得るような場合でも、本実施形態に係るBD−Jアプリケーションによれば、アップデートキットに含まれる追加コンテンツデータファイルにアクセスする必要がある処理を選択するボタンを特典機能メニューに表示させず、メニュー表示内容と表示内容に付随する動作との整合性を保つことができる。
この後、t7においてタイトル再生を一旦終了させ、t8においてタイトル再生を再開始すると、タイトル再生が開始される前に、仮想パッケージの構築が行われる。このため、タイトル再生再開後には、仮想パッケージの構築が完了しており、再生中タイトル内のBD−Jアプリケーションによる仮想パッケージ構築状態判定でも有効状態と判定される。したがって、特典選択メニューの選択肢として特典ゲームを実行する「Game」ボタンが含まれている図27の(a)のメニューが表示される。
以上のように本実施の形態によれば、仮想パッケージ構築状態を正しく判定できるので、ローカルストレージ3にSDメモリカードが再装着されてから、BD−Jアプリケーションの停止までの間等に、BD−Jアプリケーションに誤動作が発生することを防止することができる。
また、本実施形態1では、状態シグナリングファイルに割り当てるVFSファイルパスを、予め決められた固定ファイルパスにしている。このためBD−Jアプリケーションは常に同一のファイルパスを使って、仮想パッケージ構築状態を正しく判断することができる。状態シグナリングファイルのVFSファイルパスを固定ファイルパスとすることによって更に、ひとつのアプリケーションで複数のアップデートキットを利用することや、複数のアプリケーションで同じアップデートキットを利用することが容易となる。
尚、ステップS13の判断のために利用するファイルは、マージ管理情報にVFSファイルパスの対応付けが記載されているファイルであれば、図19に示すファイル形式とは異なるファイル、例えば、状態シグナリングファイルのようにアップデートキットに属する他のファイルや、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルであってもよい。再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いて判断する場合には、アップデートキットのダウンロードの再に、そのファイルをアップデートキットと供にローカルストレージに記録する必要がある。
尚、状態シグナリングファイルがAVデータ形式であれば、アクセス時にそのAVデータが再生されてしまい、不都合が生じる場合がある。そこで、その状態シグナリングファイルをテキストファイルにしておくと、アクセス判断の際に実際に再生されることはないので不都合は生じない。また、この判定に利用するファイルのサイズは出来るだけ小さくすることにより、ファイル取得やアクセスに必要となる時間などを短縮することでき、BD−Jアプリケーションの処理を高速に実行することが出来る。
また、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いてステップS27の判断を行う場合には、そのファイルにアクセスできるVFSファイルパス情報をBD−Jアプリケーションが利用可能なように用意しておく必要がある。このVFSファイルパス情報は、マージ管理情報から参照してもよいし、再生装置内やBD−Jアプリケーション内に記録しておいてもよい。
(実施形態2)
実施形態1では、1つのBD−Jアプリケーションに対して1つのアップデートキットを用いて仮想パッケージを構築した。しかし、同一のBD−Jアプリケーションに対応する複数のアップデートキットを用意することで、1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築することも可能である。本実施形態2では、複数のアップデートキットを用いて1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築する状況での本発明の実施の形態について説明する。
図28は、SDメモリカード104に、同一のBD−Jアプリケーションに対応する2つのアップデートキットが記録された場合のデータ構造を示す図である。SDメモリカード104のアップデートキット保存領域はBD−ROM毎に分かれており、本図に示す例では、「0123456789abcdef0123456789abcdef」というDiscIDのBD−ROMに関するDiscIDディレクトリ配下に、「Update01」と「Update02」という2つのアップデートキットが記録されている。
Update01のアップデートキットディレクトリ配下には、Update01アップデートキットに関するマージ管理情報ファイル41と状態シグナリングファイル42とが配置されている。また本図には図示していないが、このアップデートキットが追加するコンテンツに関する追加コンテンツデータファイルも、アップデートキットディレクトリ配下に配置されている。
Update02のアップデートキットディレクトリにも同様に、Update02アップデートキットに関するマージ管理情報ファイル43と状態シグナリングファイル44と、このアップデートキットが追加するコンテンツに関する追加コンテンツデータファイルが配下に配置されている。
ここで、Update01の状態シグナリングファイル42、Update02の状態シグナリングファイル44は、それぞれ図19の書式で、属するアップデートキッの内容に関する情報が記載されている。
また、マージ管理情報ファイル41、マージ管理情報ファイル43は、何れもマッピング情報において、状態シグナリングファイルのローカルストレージファイルパスに同じVFSファイルパス「BDMV/JAR/11111/VFSData.info」を対応付けて示している。
図29は、Update01、及びUpdate02を用いて構築する仮想パッケージを模式的に示す図である。本図に示す例では、ROMディスク上に映画本編、特典映像が記録されている。また、Update01として、SDメモリカード上に日本語字幕、新作映画の予告編、ボーナスゲームに関するファイルが記録されており、Update02にとして、SDメモリカード上に中国語字幕、中国向け映画の予告編に関するファイルが記録されている。このような場合に構築することが出来る仮想パッケージとしては、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の日本語字幕、新作映画の予告編、ボーナスゲームがあたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる仮想パッケージ(1)と、ROMディスク上の映画本編、特典映像と、ローカルストレージ上の中国語字幕、中国向け映画の予告編があたかも1つのディスクに記録されているかのように、映像の出力や画面表示を実行することができる仮想パッケージ(2)の、二つの異なる仮想パッケージがある。なお、仮想パッケージの構築に複数のアップデートキットを同時に利用することは出来ない。すなわち、一回の仮想パッケージの構築には、Update01とUpdate02の何れか一方のアップデートキットしか利用することはできず、利用するアップデートキットを変更するためには、仮想パッケージを構築しなおすことが必要となる。
実施形態1では、図24、25に示すような処理により、仮想パッケージ上の固定ファイルパス「BDMV/JAR/11111/VFSData.info」を指定して状態シグナリングファイルにアクセスできる場合に仮想パッケージが有効状態となっていると判定し、アップデートキットに含まれる追加コンテンツを利用可能な特典選択メニュー(図27の(a))を表示し、固定ファイルパスを指定して状態シグナリングファイルにアクセスできない場合に仮想パッケージが無効状態となっていると判定し、アップデートキットに含まれる追加コンテンツを利用不可能な特典選択メニュー(図27の(b))を表示していた。しかし、本実施形態2のようにBD−Jアプリケーションが複数のアップデートキットを取り扱う必要がある場合、問題が発生する場合がある。具体的には、BD−Jアプリケーションが何らかの仮想パッケージが有効状態であると判定した際に、現在の仮想パッケージ構築に用いているアップデートキットとは異なるアップデートキットが提供する追加コンテンツを利用するための特典選択メニューを表示してしまう場合である。
上記問題が発生する場合の一例を説明する。BD−ROM101に対して、日本語字幕、新作映画の予告編、ボーナスゲームをROMディスクに追加する図29のUpdate01と、中国語字幕、中国向け映画の予告編をROMディスクに追加する図29のUpdate02とが存在する場合がある。このとき、仮想ファイル制御部20又はBD−Jアプリケーションは、図25に示す仮想パッケージ構築状態判定処理を実行したとしても、どちらのアップデートキットが仮想ファイルシステムの作成に用いられているかまでは判断できない。したがって、実際には、図29のUpdate02を利用して、中国語字幕、中国向け映画の予告編をROMディスクに追加した仮想パッケージ(2)が作成されているにもかかわらず、BD−Jアプリケーションが図25に示す仮想パッケージ構築状態判定処理により仮想パッケージが有効状態と判定して、図27の(a)に示す特典選択メニューを表示する恐れがある。こうして表示された図27の(a)の特典選択メニューには、ボーナスゲームを実行するための選択肢「Game」ボタンが含まれているが、ユーザが「Game」を選択したとしても、実際には図29の仮想パッケージ(2)が構築されているならば、ボーナスゲーム実行することができない。つまり、このような場合には、特典選択メニューの表示内容と表示内容に付随する動作との整合性がとれていない。
そこで、本実施形態2に係るBD−Jアプリケーションは、状態シグナリングファイルの内容を確認することによって、現在構築されている仮想パッケージが利用するアップデートキットを特定する。図19に示すように、状態シグナリングファイルの情報により、SDメモリカードに複数の異なるアップデートキットが存在する場合であっても、現在使用しているアップデートキットを一意に特定することができる。さらに、対象のアップデートキットと組み合わせて仮想ファイルシステムを作成することができるROMディスクを特定することが出来る。また、アップデートキットのバージョンやアップデートキットに含まれるデータの詳細な内容を容易に取得することができる。
このように、現在構築されている仮想パッケージが利用するアップデートキットを特定することが出来れば、BD−Jアプリケーションが実行しようとしている処理に必要なファイルが仮想パッケージの構築に利用されているアップデートキットに含まれているか否かを確認することができる。そこで、本実施形態2に係るBD−Jアプリケーションは、現在構築されている仮想パッケージに使用されているアップデートキットにあわせて、適切な特典メニューを表示するよう制御する。このようにBD−Jアプリケーションを作成することで、BD−Jアプリケーションが仮想パッケージの構築に使われているアップデートキット以外のアップデートキットにアクセスしてしまうことを防ぎ、例えば、特典表示メニューの表示内容と表示内容に付随する動作との整合性がとれなくなってしまうような事態を回避することができる。
つまり、本実施形態2に係るBD−Jアプリケーションは、どちらのアップデートキットが仮想パッケージの構築に使用されているのかを判断し、仮想パッケージの構築に使用されていないアップデートキットにアクセスしようとした場合に、BD−Jアプリケーションがそのアップデートキットにアクセスすることを禁止する制御を行う。
なお、図19のファイルに記録する情報は、必要に応じて追加あるいは削除してもよい。例えば、対象ROMディスクのOrganizationID、DiscIDなどは、削除してもよいし、複数記録することが出来るようにしてもよい。また、アップデートキットの内容を示す情報は、マージ管理情報ファイルなどの他のファイルに記録するようにしても良い。
以上のような機能は、図30のフローチャートに示される処理手順をオブジェクト指向型コンパイラ言語で記述してコンピュータに実行させることで実現することができる。
図30は、実施形態2に係る仮想パッケージ構築状態判定処理の処理手順を示す。本フローチャートにおけるステップS21乃至ステップS25の手順は、実施形態1において図25を用いて説明した仮想パッケージ構築状態判定処理と同様の手順である。
ここで、ステップS24において仮想パッケージが有効状態であると判定する状態とは、ステップS23で発行した固定VFSファイルパスを用いた読み出し命令により、状態シグナリングファイルが読み出せた場合であるが、固定VFSファイルパスで読み出される状態シグナリングファイルは、現在構築されている仮想パッケージに属するものである。そこで、ステップS24において仮想パッケージが有効状態であると判定された場合は、続けて状態シグナリングファイルの内容を読み出し(ステップS26)、読み込んだ情報をもとにBD−Jアプリケーションが実行しようとしている処理に必要なデータが、現在構築が完了している仮想ファイルシステムで利用しているアップデートキットに含まれているか否かの判断を行う(ステップS27)。例えば、BD−Jアプリケーションが実行しようとしている処理が特典選択メニューの表示であれば、図19に示す「アップデートキットに含まれるデータの詳細」という項目を参照し、アップデートキットにボーナスゲーム、新作映画予告の追加コンテンツが含まれているか否かを判定する(ステップS27)。これらが含まれるならば(ステップS27:Yes)、メニュー画面を表示する際に、アップデートキットに含まれる追加コンテンツを呼び出すボタン、例えば、「Game」ボタンや「Trailer New」ボタンの表示を許可する(ステップS28)。
一方、固定VFSファイルパスで状態シグナリングファイルを読み出せず仮想パッケージが準備状態であると判定した場合(ステップS25)、及び、固定VFSファイルパスで状態シグナリングファイルを読み出せたが、読み出した状態シグナリングファイルの「アップデートキットに含まれるデータの詳細」項目に、ボーナスゲーム、新作映画予告が含まれていない場合(ステップS27:No)には、メニュー画面を表示する際に、追加コンテンツを呼び出す「Game」ボタン、「Trailer New」ボタンの表示を抑制する(ステップS29)。
以上が、実施形態2に係る仮想パッケージ構築状態判定処理の処理手順である。
尚、ステップS27の判断のために利用するアップデートキットの内容が記録されたファイルは、状態シグナリングファイルとは異なるファイル、例えば、状態シグナリングファイルのようにアップデートキットに属するファイルや、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルであってもよい。ただし、アップデートキットの内容を示す情報を、仮想パッケージ構築状態判定に用いるファイルと同一とファイルに記録しておけば、仮想パッケージ構築状態判定と、使用中のアップデートキットの判定とを、1度のファイルリードで実行することができる。なぜなら、状態シグナリングファイルは、仮想パッケージ構築状態の判定のためにステップS23で読み出し命令が発行されている。そのため、状態シグナリングファイルにアップデートキットの内容を記録しておけば、ステップS24において仮想パッケージが有効状態であると判定された後に、ステップS26で改めて読み出し命令を発行する必要がない。このように、仮想パッケージ構築状態の判定に用いるファイルと、アップデートキットの内容を記録するファイルを同一のものとすることで、効率のよい処理が可能となる。
尚、ステップS27の判定に利用するファイルがAVデータであれば、アクセス時にそのAVデータが再生されてしまい、不都合が生じる場合がある。そこで、そのファイルをテキストファイルにしておくと、アクセス判断の際に実際に再生されることはないので不都合は生じない。また、この判定に利用するファイルのサイズは出来るだけ小さくすることにより、ファイル取得やアクセスに必要となる時間などを短縮することでき、BD−Jアプリケーションの処理を高速に実行することが出来る。
また、別途、再生装置内蔵の記録媒体に記録されているファイルやBD−Jアプリケーション内のデータファイルを用いてステップS27の判断を行う場合には、そのファイルにアクセスできるファイルパス情報を用意しておく必要がある。このファイルパス情報は、マージ管理情報内に予め記載しておいてもよいし、再生装置内やBD−Jアプリケーション内に記録しておいてもよい。
また、このファイルパス情報が示すファイルパスを、予め決められた固定ファイルパスにしておくと、BD−Jアプリケーションは常に同一のファイルパスを使って、仮想パッケージ構築状態を正しく判断することができる。固定ファイルパスとすることによって更に、同一のアプリケーションを複数の異なるアップデートキットで共通して利用すること(アプリケーションの再利用)、及び、複数の異なるアプリケーションで同一のアップデートキットを共通して利用すること(複数のタイトルで共通したアップデートキットの作成)、を実現することができるので、アプリケーションの作成とアップデートキットの作成とを効率よく実施することができる。
また、アップデートキットの内容を判定する手法として、アップデートキットの識別子等、使用中のアップデートキットを一意に特定するための情報のみをファイルなどから取得し、その情報をキーとして利用しネットワークや他の記録媒体から、他の必要な情報、即ち、アップデートキットに含まれるデータやファイルなどの内容情報等を取得するように構成してもよい。あるいは、アップデートキットに含まれる他のファイルやマージ管理情報ファイルなどをキーとして利用しても良い。
以上のように本実施形態2によれば、アプリケーションは、仮想パッケージ構築状態判定において、ローカルストレージ上のファイルに記録されたアップデートキットの内容を示す情報により使用中のアップデートキットを特定し、仮想パッケージの構築に使われているアップデートキットの内容に応じてアプリケーションの処理を制御することが出来る。従って、アップデートキットが複数存在する場合であっても、アプリケーションが仮想パッケージ構築に使われているアップデートキット以外のアップデートキットにアクセスしてしまうことを防止することが出来る。また、複数のアップデートキットを1つのアプリケーションで取り扱うことが出来るため、アプリケーションの開発を効率的に実施することが出来る。
<実施形態2の変形例>
以上のように実施形態2では、複数のアップデートキットを用いて1つのBD−Jアプリケーションから複数種類の仮想パッケージを構築できる状況で、状態シグナリングファイルの内容を確認することによって、現在構築されている仮想パッケージが利用するアップデートキットを特定する構成について説明した。この構成では、複数のアップデートキットの状態シグナリングファイルが、仮想パッケージ上の同一のファイルパスとなるように、何れのマージ管理情報ファイルのマッピング情報においても、状態シグナリングファイルに同一のVFSファイルパス(BDMV/JAR/11111/VFSData.info)を割り当てている。これにより、どのアップデートキットが使用されている場合にも、BD−Jアプリケーションは常に同じファイルパスで状態シグナリングファイルの内容を確認することが可能になる。
これに対し、複数のアップデートキットの状態シグナリングファイルが、仮想パッケージ上で全て異なるファイルパスになるように、それぞれのマージ管理情報ファイルのマッピング情報において、状態シグナリングファイルに異なるVFSファイルパスを割り当て、BD−Jアプリケーションがそれぞれのアップデートキットの状態シグナリングファイルの仮想パッケージ上のファイルパスにアクセスできるか否かを試行することにより、使用しているアップデートキットを特定するようにしてもよい。
このような変形例では、例えば、Update01、及びUpdate02の2つのアップデートキットが存在する場合に、Update01のマージ管理情報ファイルのマッピング情報では、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData_update01.txt」を登録しておき、Update02のマージ管理情報ファイルのマッピング情報では、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData_update02.txt」を登録しておく。
更に、BD−Jアプリケーションの作成時に、それぞれのアップデートキットについての状態シグナリングファイル位置情報となるデータファイルを、BD−Jアプリケーションの実体となるJARファイルに組み込んでおく。ここで状態シグナリングファイル位置情報は、それぞれ対応するアップデートキットにおいて状態シグナリングファイルに割り当てたVFSファイルパスを示す。
以上のように構成されたBD−Jアプリケーションが実行された場合、仮想パッケージ構築状態判定において、それぞれのアップデートキットの状態シグナリングファイル位置情報で示されるファイルパスを指定して読み出し命令を試行し、何れのファイルパスで状態シグナリングファイルを読み出せるかにより、現在構築されている仮想パッケージが利用するアップデートキットを特定する。
上述のUpdate01、及びUpdate02の2つのアップデートキットが存在する状況では、「BDMV/JAR/11111/VFSData_update01.txt」を指定して状態シグナリングファイルが読み出せた場合に、現在の仮想パッケージではUpdate01が利用されていると判定し、「BDMV/JAR/11111/VFSData_update02.txt」を指定して状態シグナリングファイルが読み出せた場合に、現在の仮想パッケージではUpdate02が利用されていると判定する。
(実施形態3)
本実施形態3では、本発明にかかる記録装置および記録方法を実施するための形態について説明する。
ここで説明する記録装置は、オーサリング装置と呼ばれるものであり、映画コンテンツの頒布のために制作スタジオに設置され、オーサリングスタッフの使用に供される。オーサリングスタッフからの操作に従い、MPEG規格に従い圧縮符号化されたデジタルストリーム及びどのように映画タイトルを再生するかを記したシナリオを生成し、これらのデータを含むBD−ROM向けのボリュームイメージとアップデートキットを生成するというのが、本発明にかかる記録装置の使用形態である。本発明にかかる記録装置は、実施の形態1で説明した記録媒体やアップデートキットを生成することを目的とする。
図31は本発明にかかる記録装置の内部構成を示す図である。本図に示すように本発明にかかる記録装置は、素材制作部51、シナリオ生成部52、BD−J制作部53、多重化処理部54、フォーマット処理部55、差分抽出部56、アップデートキット制作部57により構成される。なお、本発明にかかる記録装置は、システムLSI(集積回路)として実装してもよい。
素材制作部51は、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックストリームなどの各ストリームを作成する。素材制作部51は、非圧縮のビットマップなどの画像イメージをMPEG4−AVCやMPEG2などの圧縮方式に従い符号化することでビデオストリームを作成する。また素材制作部51は、非圧縮のLinearPCM音声などをAC3などの圧縮方式に従い符号化することでオーディオストリームを作成する。素材制作部51は、字幕イメージと表示タイミング、およびフェードイン/フェードアウトなどの字幕の効果を含む字幕情報ファイルを元にして、BD−ROM規格に準拠した字幕ストリームのフォーマットであるプレゼンテーショングラフィックスストリームを作成する。素材制作部51は、メニューに使うビットマップイメージと、メニューに配置されるボタンの遷移や表示効果を記載したメニューファイルを元にして、BD−ROM規格に準拠したメニュー画面のフォーマットであるインタラクティブグラフィックスストリームを作成する。
シナリオ生成部52は、素材制作部51で作成した各ストリームの情報や、オーサリングスタッフからのGUIを経由した操作にしたがって、BD−ROM規格に準拠したフォーマットでシナリオを作成する。ここで言うシナリオは、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイルなどのファイルがそれにあたる。また、シナリオ生成部52は、多重化処理を実現するための各AVクリップがどのストリームから構成されるかを記述したパラメータファイルを作成する。
アップデートキットを作成するには、仮想パッケージ構築後のシナリオデータを作成する。
BD−J制作部53は、BD−Jアプリケーションをプログラミングする手段である。GUI等のユーザインターフェースを通じて、ユーザからの要求に従って、BD−Jアプリケーションプログラムのソースコードを作成し、BD−Jアプリケーションを作成する。このとき、BD−Jアプリケーションプログラムには、図23の状態シグナリングファイル位置情報21となるデータファイルが外部ファイルとして組み込まれる。
多重化処理部54は、BD−ROMシナリオデータに記述されているビデオ、オーディオ、字幕、ボタンなどの複数のストリームを多重化して、MPEG2−TS形式のAVクリップを作成する。このとき、AVクリップと対になるクリップ情報ファイルも同時に作成する。多重化処理部54によるクリップ情報ファイル内の生成は、以下の方法で行われる。多重化処理部54はAVクリップを作成と同時にマーク情報を作成する。より具体的には、素材制作部51で生成された各ストリームにおいて、含まれるビデオストリームがMPEG2であればIピクチャ、MPEG4−AVCであればIピクチャかIDRピクチャ、VC−1であればIピクチャが何処に存在するかを検出し、前述の各ピクチャの表示時刻と、MPEG2−TSとなっているAVクリップの何パケット目のソースパケットに前述の各ピクチャの先頭データが入っているかを対応付けたマークをマーク情報に登録していく。AVクリップに含まれるビデオストリームが、主映像・副映像の2種類がある場合は、どちらのマーク情報も同時に作成していく。多重化処理部54は、自ら生成したマーク情報と、AVクリップに含まれるストリーム毎の音声属性、映像属性などを示す属性情報をペアにしてクリップ情報ファイルを作成する。
フォーマット処理部55は、シナリオ生成部52で生成したBD−ROMシナリオデータ、あるいは、仮想パッケージ構築後のシナリオデータと、BD−J制作部53で制作したBD−Jアプリケーション、多重化処理部54で生成したAVクリップやクリップ情報ファイルを、BD−ROM規格に準拠したフォーマットで配置し、BD−ROM規格に準拠したファイルシステムであるUDFのフォーマットでBD−ROMディスクイメージ、あるいは、仮想パッケージ差分ディスクイメージを作成する。生成したBD−ROMディスクイメージをBD−ROMプレス用データに変換し、このデータに対してプレス工程を行うことで、BD−ROMの製造が可能となる。
さらに、フォーマット処理部55は、仮想パッケージ構築後のシナリオデータの記述から、作成しようとしているアップデートキットを一意に特定するための情報を含むファイル、例えば、実施形態1、及び2の状態シグナリングファイルを作成する。
なお、BD−ROMシナリオデータからも同様に、作成するBD−ROMディスクイメージを特定するための情報を含むファイルの作成を行ってもよい。
差分抽出部56は、二つのシナリオデータをコンペアして、差分データを抽出する。例えば、オリジナルのディスクイメージになかったファイルや、バイナリコンペアしてアップデートされているファイルなどを抽出する。
アップデートキット制作部57は、差分抽出部56と仮想パッケージ差分ディスクイメージを元に前述で説明したアップデートキットのデータフォーマットに合うようにマージ管理情報ファイルや署名情報ファイルやネットワークプレイリストやクリップを作成し、BD−ROM規格に準拠したフォーマットでファイルやディレクトリを配置する。ここで作成するマージ管理情報ファイルには、状態シグナリングファイルのVFSファイルパスとして、「BDMV/JAR/11111/VFSData.info」が記録される。
次に図32を参照しながら、実施の形態に係るBD−ROMディスクイメージの作成方法について説明する。
ステップS101において、素材制作部51はビデオストリーム、オーディオストリーム、IGストリーム、PGストリームを生成する。
ステップS102において、シナリオ生成部52は、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイルなど再生シナリオを記述するBD−ROMシナリオデータを作成する。
ステップS103において、BD−J制作部53は、BD−Jアプリケーションのプログラムを作成する。
ステップS104において、多重化処理部54はBD−ROMシナリオデータを元にAVクリップとクリップ情報ファイルを作成する。
ステップS105において、フォーマット処理部55は、BD−ROMシナリオデータ、変形AVクリップ、クリップ情報ファイル、復元バイトコードデータを、BD−ROM規格のファイル・ディレクトリ構造に並び替え、BD−ROM規格準拠のディスクイメージを作成する。
次に図33を参照しながら、実施の形態に係るアップデートキットの作成方法について説明する。
ステップS201において、素材制作部51は仮想ファイルシステムに必要なビデオストリーム、オーディオストリーム、IGストリーム、PGストリームを生成する。
ステップS202において、シナリオ生成部52は仮想ファイルシステム作成後のインデックスファイル、ムービーオブジェクトファイル、プレイリストファイル、ネットワークプレイリストファイルなど再生シナリオを記述するシナリオデータを作成する。
ステップS203において、差分抽出部56は二つのシナリオデータを比較して差分データを抽出する。
ステップS204において、BD−J制作部53は、仮想ファイルシステム作成後のBD−Jアプリケーションのプログラムを作成する。
ステップS205において、多重化処理部54は差分データを元にAVクリップとクリップ情報ファイルを作成する。
ステップS206において、フォーマット処理部55は、仮想ファイルシステム作成後のシナリオデータの記述から、作成しようとしているアップデートキットを一意に特定するための情報を記録したファイルを作成する。
なお、ここで作成するファイルにはキーとなる情報のみを記録しておいて、そのキーと関連付けてアップデートキットを一意に特定するための情報を、別のファイルやデータベースとして作成するようにしてもよい。
ステップS207において、フォーマット処理部55は、ステップS206で作成したアップデートキットを一意に特定するための情報が記録されたファイルと、仮想ファイルシステム作成後のシナリオデータ、BD−Jアプリケーション、AVクリップ、クリップ情報ファイルを、BD−ROM規格に準拠したフォーマットで配置して、仮想ファイルシステム差分ディスクイメージを作成する。
ステップS208において、アップデートキット制作部57は、差分抽出部56と仮想ファイルシステム差分ディスクイメージを元に前述で説明したアップデートキットのデータフォーマットに合うようにマージ管理情報ファイルや署名情報ファイルやネットワークプレイリストやクリップを作成し、BD−ROM規格に準拠したフォーマットでファイルやディレクトリを配置する。
(その他の変形例)
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は、上記の実施形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)本発明は、各実施形態で説明したフローチャートの処理手順が開示する再生装置の制御方法、記録装置の制御方法であるとしてもよい。また、前記処理手順でコンピュータを動作させるプログラムコードを含むコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、前記コンピュータプログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記コンピュータプログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(2)実施形態1、2では、BD−Jアプリケーションによるメニュー表示について、仮想パッケージ構築状態に応じてその機能を制限することを説明した。
本発明は、その他、ローカルストレージ上の追加コンテンツデータファイルにアクセスする必要がある処理を、仮想パッケージ構築状態の判定に基づいて制限する用途に適用できる。ローカルストレージ上の追加コンテンツデータファイルにアクセスする必要がある処理としては、ローカルストレージ上の字幕、音声、映像の再生、ローカルストレージ上に追加されたBD−Jアプリケーションの実行等がある。
尚、仮想パッケージの構築状態にかかわらずBD−Jアプリケーションが、ローカルストレージ上のファイルにアクセスする場合もある。例えば、
ローカルストレージ上のADA(アプリケーションデータエリア)領域へのユーザ情報(アカウント名、メールアドレスなど)の記録、ゲームスコアや操作履歴(初回視聴時のみに再生する警告の再生状況や、過去に視聴したディスク履歴など)、キャッシュ情報の記録等のように、BD−Jアプリケーションが、ローカルストレージ上に読み書きが必要なデータを記録する場合や、ローカルストレージ上のファイルを字幕、音声、映像等データとして再生するなど、仮想ファイル制御部20を介したローカルストレージ上のファイルへのアクセスの必要がない場合である。
(3)実施形態1では、仮想パッケージが準備状態である場合にローカルストレージ上のアップデートキットにアクセスすることを禁止する方法として、アップデートキットへのアクセスが必要な選択肢をメニュー上に表示しないという方法を示した。ローカルストレージ上のアップデートキットにアクセスすることを禁止する他の方法としては、例えば、選択可能な場合とは選択肢の色や形などを変更してメニュー上に表示するなどして、誤動作が発生する機能を実行するための選択肢をユーザが選択できないように制御する方法、誤動作が発生する選択肢をユーザが選択した際に現在実行できない旨のメッセージ、実行できない理由、実行するために必要な手順などをユーザに提示するように制御する方法、誤動作が発生する選択肢をユーザが選択した際に、その機能が実行可能な状態とした(仮想パッケージ構築を完了しタイトル再生を開始する)後で、ユーザが選択した機能を実行する方法、ユーザの操作を無視する方法、あるいは、それらのいくつかを組み合わせた方法などがある。
(4)実施形態1では、アップデートキットの取得方法としてネットワークを介してダウンロードする手法を示した。しかし、アップデートキットは、ネットワーク経由での取得以外に、他の記録媒体等から取得してもよい。
(5)BD−ROMディスクは、図2に示したファイル構成に加えて、ディスクを代表する画像イメージとテキスト情報がセットになったディスク情報ファイル(CCC.DINFO)を記録すよう構成してもよい。
ディスク情報ファイルは、例えば、図34に示すデータ構造を用いることができる。本図の例では、ディスク情報ファイルは、BD−ROMに含まれるコンテンツを代表するサムネイルの画像ファイルへの相対パスと、BD−ROMに含まれるコンテンツを代表する各国語ごとのテキスト情報を格納している。テキスト情報には、BD−ROMに含まれるコンテンツのタイトル名などが記載される。
このディスク情報ファイルを用いて、画像ファイルのイメージや、テキスト情報をGUI等で表示する機能を、再生装置に実装することで、ユーザはディスク内容を容易に把握することができる。
再生装置にこのような機能を実装する場合、ディスク情報ファイルと同様の情報が記録されている状態シグナリングファイルを利用することで、再生装置のGUI画面等で、アップデートキットの内容を表示できると共に、ユーザがアップデートキットを消去するためのGUIとして利用できる。
具体的には、アプリケーションがネットワークや他の記録媒体などからアップデートキットを取得する前に、アップデートキットの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを表示することが出来る。こうすることにより、複数のアップデートキットが存在する場合であっても、ユーザの嗜好に応じて取得するアップデートキットを選択することが容易なユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
また、既にローカルストレージ上に複数のアップデートキットが記録されている場合であって、かつ、ローカルストレージの空き容量が少なく、次に取得するアップデートキットを記録するために記録されているアップデートキットのいくつかを消去する必要がある場合などに、ローカルストレージ上に記録されているアップデートの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを表示することが出来る。こうすることにより、複数のアップデートキットがローカルストレージに記録されている場合であっても、ユーザがローカルストレージ上から消去するアップデートキットを容易に選択することが出来るユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
さらに、ローカルストレージ上に複数のアップデートキットが記録されている場合であって、かつ、いずれかのアップデートキットを利用した仮想ファイルシステムの作成が完了している場合に、仮想ファイルシステムの作成に利用されているアップデートキットの内容として、アップデートキットを代表するサムネイルの画像とアップデートキットの名称などのテキスト情報などを、状態シグナリングファイルの記述を参照して表示することが出来る。こうすることにより、ユーザが仮想ファイルシステムの作成が完了しているか否かと、仮想ファイルシステムの作成が完了している場合には、仮想ファイルシステムの作成に利用されているアップデートキットの内容を容易に確認することが出来るユーザインターフェースを、BD−Jアプリケーション又は再生装置により、提供することが出来る。
(6)再生装置の内部構成のうち、システムターゲットデコーダ4や、再生制御部7、プログラム実行部11、仮想ファイル制御部20等、ロジック素子を中心とした部分は、システムLSIで構成することが望ましい。
システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものも、システムLSIに含まれる(このようなシステムLSIは、マルチチップモジュールと呼ばれる。)。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピングリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置102の中核としての役割を果たす。
かかるシステムLSIは、再生装置102は勿論のこと、TVやゲーム、パソコン、ワンセグ携帯等、映像再生を扱う様々な機器に組込みが可能であり、本発明の用途を多いに広げることができる。
システムLSIのアーキテクチャは、Uniphierアーキテクチャに準拠させるのが望ましい。
Uniphierアーキテクチャに準拠したシステムLSIは、以下の回路ブロックから構成される。
・データ並列プロセッサDPP
これは、複数の要素プロセッサが同一動作するSIMD型プロセッサであり、各要素プロセッサに内蔵されている演算器を、1つの命令で同時動作させることで、ピクチャを構成する複数画素に対するデコード処理の並列化を図る。
・命令並列プロセッサIPP
これは、命令RAM、命令キャッシュ、データRAM、データキャッシュからなる「Local Memory Controller」、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルからなる「Processing Unit部」、複数アプリケーションの並列実行をProcessingUnit部に行わせる「Virtual Multi Processor Unit部」で構成される。
・MPUブロック
これは、ARMコア、外部バスインターフェイス(Bus Control Unit:BCU)、DMAコントローラ、タイマー、ベクタ割込コントローラといった周辺回路、UART、GPIO(General Purpose Input Output)、同期シリアルインターフェイスなどの周辺インターフェイスで構成される。
・ストリームI/Oブロック
これは、USBインターフェイスやATAPacketインターフェイスを介して、外部バス上に接続されたドライブ装置、ハードリディスクドライブ装置、SDメモリカードドライブ装置とのデータ入出力を行う。
・AVI/Oブロック
これは、オーディオ入出力、ビデオ入出力、OSDコントローラで構成され、テレビ、AVアンプとのデータ入出力を行う。
・メモリ制御ブロック
これは、外部バスを介して接続されたSD-RAMの読み書きを実現するブロックであり、各ブロック間の内部接続を制御する内部バス接続部、システムLSI外部に接続されたSD-RAMとのデータ転送を行うアクセス制御部、各ブロックからのSD-RAMのアクセス要求を調整するアクセススケジュール部からなる。
具体的な生産手順の詳細は以下のものになる。まず各実施形態に示した構成図を基に、システムLSIとすべき部分の回路図を作成し、回路素子やIC,LSIを用いて、構成図における構成要素を具現化する。
そうして、各構成要素を具現化してゆけば、回路素子やIC,LSI間を接続するバスやその周辺回路、外部とのインターフェイス等を規定する。更には、接続線、電源ライン、グランドライン、クロック信号線等も規定してゆく。この規定にあたって、LSIのスペックを考慮して各構成要素の動作タイミングを調整したり、各構成要素に必要なバンド幅を保証する等の調整を加えながら、回路図を完成させてゆく。
回路図が完成すれば、実装設計を行う。実装設計とは、回路設計によって作成された回路図上の部品(回路素子やIC,LSI)を基板上のどこへ配置するか、あるいは、回路図上の接続線を、基板上にどのように配線するかを決定する基板レイアウトの作成作業である。
こうして実装設計が行われ、基板上のレイアウトが確定すれば、実装設計結果をCAMデータに変換して、NC工作機械等の設備に出力する。NC工作機械は、このCAMデータを基に、SoC実装やSiP実装を行う。SoC(System on chip)実装とは、1チップ上に複数の回路を焼き付ける技術である。SiP(System in Package)実装とは、複数チップを樹脂等で1パッケージにする技術である。以上の過程を経て、本発明に係るシステムLSIは、各実施形態に示した再生装置102の内部構成図を基に作ることができる。
尚、上述のようにして生成される集積回路は、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
FPGAを用いてシステムLSIを実現した場合は、多数のロジックエレメントが格子状に配置されており、LUT(Look Up Table)に記載されている入出力の組合せに基づき、縦・横の配線をつなぐことにより、各実施形態に示したハードウェア構成を実現することができる。LUTは、SRAMに記憶されており、かかるSRAMの内容は、電源断により消滅するので、かかるFPGAの利用時には、コンフィグ情報の定義により、各実施形態に示したハードウェア構成を実現するLUTを、SRAMに書き込ませる必要がある。
本実施の形態は、ミドルウェアとシステムLSIに対応するハードウェア、システムLSI以外のハードウェア、ミドルウェアに対するインターフェイスの部分、ミドルウェアとシステムLSIのインターフェイスの部分、ミドルウェアとシステムLSI以外の必要なハードウェアへのインターフェイスの部分、ユーザインターフェースの部分で実現し、これらを組み込んで再生装置を構成したとき、それぞれが連携して動作することにより特有の機能が提供されることになる。
ミドルウェアに対するインターフェイス、および、ミドルウェアとシステムLSIのインターフェイスを適切に定義することにより、再生装置のユーザインターフェース部分、ミドルウェア部分、システムLSI部分をそれぞれ独立して並行開発することができ、より効率よく開発することが可能となる。なお、それぞれのインターフェイスのきり方には、様々な切り方がある。
(7)上記実施形態、及び上記変形例をそれぞれ組み合わせるとしてもよい。