以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
先ず始めに、本発明に係る再生装置の実施行為のうち、使用行為についての形態を説明する。図1は、本発明に係る再生装置の、使用行為についての形態の一例を示す図である。図1において、本発明に係る再生装置は、再生装置101である。この再生装置101は例えば、リモコン102、テレビ103により形成されるホームシアターシステムに、映画作品を供給するという用途に供される。また、再生装置101にはSDメモリーカード、メモリースティック、コンパクトフラッシュ(登録商標)、スマートメディア、マルチメディアカード等のリムーバブルメディア104を挿入するための挿入口を備える。加えて携帯端末106と接続するためのUSB等の挿入口も備える。
以上が本発明に係る再生装置の使用形態についての説明である。続いて本発明に係る再生装置が再生の対象としている、記録媒体(メディア)について説明する。本発明に係る再生装置により、再生されるのは、この例では光ディスクであるBD−ROM105である。
図2は、BD−ROM(以降、「BD」と称する場合もある)の構成を示した図である。本実施の形態においては、映画等のAVコンテンツを再生するためのAVアプリケーションを主眼においてBD−ROMを説明するが、BD−ROMをCD−ROMやDVD−ROMのようにコンピュータ用途の記録媒体として利用することも当然ながら可能である。BD−ROMは、他の光ディスク、例えばDVDやCDなどと同様にその内周から外周に向けて螺旋状に記録領域を持ち、内周のリード・インと外周のリード・アウトの間に論理データを記録できる論理アドレス空間を有している。また、リード・インの内側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、著作権保護技術などに利用され、記録媒体の物理的なシリアルIDを示すPMSN(Pre-recorder Media Serial Number)が記録されている。
論理アドレス空間には、ファイルシステム情報(ボリューム)を先頭に映像データなどのアプリケーションデータが記録されている。ファイルシステムとは、UDFやISO9660などのことであり、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっており、255文字のファイル名、ディレクトリ名を読み出すことが可能である。
本実施の形態の場合、BD−ROM上のディレクトリ、ファイル構造は、ルートディレクトリ(ROOT)直下にBDMVディレクトリ、CERTIFICATEディレクトリ及びEMOVEディレクトリが置かれている。BDMVディレクトリはBD−ROMで扱うAVコンテンツや管理情報などのデータが記録されているディレクトリであり、CERTIFICATEディレクトリは配下にdiscroot.crt(ファイル名固定)ファイルが存在し、アプリケーションの署名検証に用いられる証明書が記録されている。EMOVEディレクトリには携帯端末視聴用のAVコンテンツや管理情報が記録されている。
BDMVディレクトリの配下には、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJOディレクトリ、JARディレクトリと呼ばれる5つのサブディレクトリが存在し、BDMVディレクトリには、index.bdmv,MovieObject.bdmvの2種類のファイルが配置されている。
STREAMディレクトリには、いわばデジタルストリーム本体となるファイルを格納しているディレクトリであり、拡張子m2tsが付与されたファイル(xxx.m2ts["xxx"は可変、拡張子"m2ts"は固定])が存在する。PLAYLISTディレクトリには、拡張子mplsが付与されたファイル(xxx.mpls["xxx"は可変、拡張子"mpls"は固定])が存在する。CLIPINFディレクトリには、拡張子clpiが付与されたファイル(xxx.clpi ["xxx"は可変、拡張子"clpi"は固定])が存在する。JARディレクトリには、拡張子jarが付与されたファイル(xxx.jar["xxx"は可変、拡張子"jar"は固定])が存在する。BDJOディレクトリには、拡張子bdjoが付与されたファイル(xxx.bdjo["xxx"は可変、拡張子"bdjo"は固定])が存在する。
拡張子"m2ts"が付与されたファイルは、MPEG−TS(Transport Stream)形式のデジタルAVストリームであり、ビデオストリーム、1つ以上のオーディオストリーム、1つ以上の副映像ストリームを多重化することで得られる。ビデオストリームは映画の動画部分を、オーディオストリームは映画の音声部分を、副映像ストリームは、映画の字幕をそれぞれ示している。
拡張子"clpi"が付与されたファイルは、デジタルAVストリームのそれぞれに1対1に対応するClip情報である。管理情報故に、Clip情報は、デジタルAVストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。
拡張子"mpls"が付与されたファイルは、PlayList情報を格納したファイルであり、ストリームの再生区間(「In Time/Out Time」)が記録されている。
拡張子"jar"が付与されたファイルは、Javaアーカイブファイルであり、Java仮想マシンを用いて動的なシナリオ制御を行うBD−Jアプリケーションのプログラムが記述されている。BD−ROM上のコンテンツの再生単位を示す各タイトルの再生をBD−Jアプリケーションから制御したい場合は、このファイルを必要とする。
拡張子"bdjo"が付与されたファイルは、BD−Jオブジェクトを格納したファイルである。BD−Jオブジェクトは、PlayList情報により示されるAVストリームと、アプリケーションとの関連付けにより、タイトルを定義する情報である。BD−Jオブジェクトは、"アプリケーション管理テーブル"と、そのタイトルにおいて再生可能なPlayList一覧を示す。アプリケーション管理テーブルは、アプリケーションの識別子(アプリケーションID)とそのアプリケーションに属するJavaアーカイブファイルのIDを羅列することで、このタイトルを生存区間とするアプリケーションを示すテーブルである。つまり、一つのアプリケーションは一つ以上のJavaアーカイブファイルで構成される。
index.bdmv(ファイル名固定)は、BD−ROM全体に関するデータベースファイルであり、映画作品のプロバイダを特定する識別子であるorganizationID(32bit)や、プロバイダが提供するBD−ROMのそれぞれに割り当てられた識別子であるdiscID(128bit)等の情報を持ち、再生装置へのディスク挿入後に、index.bdmvが最初に読み出されることで、再生装置においてディスクが一意に認識される。加えて、index.bdmvにはBD−ROMにおいて再生可能となる複数のタイトルと、個々のタイトルを規定するBD−Jオブジェクトとを対応付けて示すテーブルが含まれる。
MovieObject.bdmv(ファイル名固定)は、HDMVモード(後述)での各タイトル再生で、再生進行を動的に変化させるためのシナリオが記述されたシナリオプログラムが含まれる。
EMOVEディレクトリの配下には、BD−ROMに記録されているコンテンツを携帯端末で視聴するためのAVコンテンツや管理情報が記録されており、DATAxx("xx"は2桁の可変数字)というサブディレクトリ毎に携帯端末向けコンテンツが記録される。DATAxxディレクトリの配下にはEMOV_INF、MGR_DATA、PRG_MGR、PRG001.PGI、MOV001.SD1の5つのファイルが存在する。EMOV_INFには携帯端末向けコンテンツをそれぞれ一意に識別するために割り当てられた128bitの識別子であるコンテンツID(以降、「CID」と称する場合もある)が記録されている。MGR_DATAには、携帯端末向けコンテンツの再生位置が記録されている。PRG_MGRには、携帯端末向けコンテンツのトータルの再生時間が記録されている。PRG001.PGIには、携帯端末向けコンテンツのタイトル名が記録されている。MOV001.SD1は暗号化された携帯端末向けデジタルAVストリームが記録されている。なお、MGR_DATA、PRG_MGR、PRG001.PGI及びMOV001.SD1の4ファイルはSDビデオ形式に準拠しており、デジタルストリームに対応するMOV001.SD1は例えば所定の暗号化方式(例えば、CPRM方式)で暗号化され、所定の暗号化方式(例えば、CPRM方式)で暗号化されたデジタルストリームを復号するためのキー情報(タイトルキー)はBD−ROM内には記録されていないので、不正に再生できないよう保護されている(以降、これら4ファイルを合わせて「保護コンテンツ」もしくは「携帯端末向け保護コンテンツ」と称する)。
なお図2では、DATA01ディレクトリにSD-Video Mobile Video Profile形式の携帯端末向け保護コンテンツが格納されている例を示したが、他のDATAxxディレクトリは、その他の形式、例えばSD-Video ISDB-T形式やQuickTime形式やWindows(登録商標) Media Player形式で、持ち出し視聴用ためのコピーソースユニットを格納してもよい。
図3は再生制御のレイヤモデルを示した図である。図3の第1層は、物理層であり、処理対象たるストリーム本体の供給制御である。この第1層に示すように、処理対象たるストリームは、BD−ROMだけではなく、Built−Inメディアやリムーバブルメディア、ネットワーク、記録型ディスクといったあらゆる記録媒体、通信媒体を供給源としている。ここでBuilt−Inメディアとは、HDD(ハードディスクドライブ)など、再生装置に予め組み込まれた記録媒体である。一方、リムーバブルメディアは、SDメモリーカード、メモリースティック、コンパクトフラッシュ、スマートメディア、マルチメディアカード等、可搬性がある記録媒体である。なお、リムーバブルメディアに関しては、再生装置に直接挿入する形態とUSBケーブル等を用いて接続する形態がある。これらBuilt−Inメディア、リムーバブルメディアは何れも、再生装置がローカルに利用する記録媒体であり、"ローカルストレージ"との総称で呼ばれる。これらローカルストレージ、ネットワークといった供給源に対する制御(ディスクアクセス、カードアクセス、ネットワーク通信)が第1層の制御である。
第2層は、AVデータのレイアである。第1層で供給されたストリームを、どのような復号化方式を用いて復号するのかを規定しているのがこの第2層である。
第3層(BD管理データ)は、ストリームの静的なシナリオを規定するレイアである。静的なシナリオとは、ディスク制作者によって予め規定された再生経路情報、ストリーム管理情報であり、これらに基づく再生制御を規定しているのがこの第3層である。
第4層(BD再生プログラム)は、ストリームにおける動的なシナリオを実現するレイヤである。動的なシナリオは、AVストリームの再生手順、及び、その再生に関する制御手順のうち少なくとも一方を実行するプログラムである。動的なシナリオによる再生制御は、装置に対するユーザ操作に応じて変化するものであり、プログラム的な性質をもつ。ここでの動的な再生制御には、2つのモードがある。2つのモードのうち1つは、AV機器特有の再生環境で、BD−ROMに記録された動画データを再生するモード(HDMVモード)であり、もう1つはBD−ROMに記録された動画データの付加価値を高めるモード(BD−Jモード)である。図3において第4層には、HDMVモードとBD−Jモードの2つのモードが記述されている。HDMVモードは、DVDライクな再生環境での再生モードであり、再生進行を動的に変化させるためのシナリオが記述されたシナリオプログラムが動作する。もう一つのBD−Jモードは、Java(登録商標)仮想マシンを主体とした再生モードであり、BD−Jアプリケーションから再生制御を行う。
図4は、2つのモードの動的な再生制御にて作成される映画作品を示す図である。図4(a)は、HDMVモードで動的な再生制御を定義することにより、作成される映画作品の一場面を示す図である。HDMVモードはDVD再生装置が解釈可能なコマンドと良く似たコマンドで再生制御を記述することができるので、DVDと同じような再生制御、つまり、メニューに対する選択により再生が進行するような再生制御を定義することができる。
図4(b)は、BD−Jモードで動的な再生制御を定義することにより、作成される映画作品である。BD−JモードはJava仮想マシンが解釈可能なJava言語で制御手順を記述することができる。この再生制御がコンピュ−タ・グラフィックス(CG)の動作を制御するものなら、BD−Jモードにあっては、動画を表示した画面の横でCG(図中のフクロウの絵)が動きまわっているような再生制御を定義することができる。
図5は、再生装置の大まかな機能構成を示すブロック図である。図5に示すように、再生装置は、BD−ROMドライブ401、読込制御部402、デマルチプレクサ403、ビデオデコーダ404、ビデオプレーン405、オーディオデコーダ406、イメージメモリ407、イメージプレーン408、イメージデコーダ409、加算器410、静的シナリオメモリ411、動的シナリオメモリ412、HDMVモジュール413、BD−Jモジュール414、UO探知モジュール415、モード管理モジュール416、ディスパッチャ417、レンダリングエンジン418、書込制御部419、AV再生ライブラリ420、PSRセット421、ネットワークインターフェース422、ローカルストレージ423、デジタルコピーモジュール424から構成される。
BD−ROMドライブ401は、BD−ROMのローディング/イジェクトを行い、BD−ROMに対するアクセスを実行する。
読込制御部402は、BD−ROMドライブ401にローディングされているBD−ROM105及びローカルストレージ423に記録されているデータの読込み制御を行う。
デマルチプレクサ403は、読込制御部402により、読み出されたトランスポートストリームの多重分離を行い、GOPを構成するビデオフレームと、オーディオフレームとを得てビデオフレームをビデオデコーダ404に出力し、オーディオフレームをオーディオデコーダ406に出力する。副映像ストリームはイメージメモリ407に格納し、Navigation Button情報は動的シナリオメモリ412に格納する。デマルチプレクサ403による多重分離は、TSパケットをPESパケットに変換するという変換処理を含む。
ビデオデコーダ404は、デマルチプレクサ403から出力されたビデオフレームを復号して非圧縮形式のピクチャをビデオプレーン405に書き込む。
ビデオプレーン405は、非圧縮形式のピクチャを格納しておくためのメモリである。
オーディオデコーダ406は、デマルチプレクサ403から出力されたオーディオフレームを復号して、非圧縮形式のオーディオデータを出力する。
イメージメモリ407は、デマルチプレクサ403から読み出された副映像ストリーム、Navigation Button情報内のPNGデータ、読出制御部402から直接読み込まれた画像ファイルを格納しておくバッファである。
イメージプレーン408は、一画面分の領域をもったメモリであり、展開された副映像ストリーム、PNGデータ、画像ファイルが配置される。
イメージデコーダ409は、イメージメモリ407に格納された副映像ストリーム、PNGデータ、画像ファイルを展開してイメージプレーン408に書き込む。副映像ストリームのデコードにより、各種メニュー、副映像が画面上に現れることになる。
加算器410は、ピクチャプレーン405に格納された非圧縮形式のピクチャデータに、イメージプレーン408に展開されたイメージを合成して出力する。図4(b)に示した画面(動画を表示した画面の横でCG(図中のフクロウの絵)が動きまわっているような画面)は、この加算器410が、イメージプレーン408内のイメージと、ビデオプレーン405内のピクチャとを合成することで出力される。
静的シナリオメモリ411は、カレントのPlayListやカレントのストリーム管理情報を格納しておくためのメモリである。カレントPlayListとは、BD−ROMもしくはローカルストレージ423に記録されている複数PlayListのうち、現在処理対象になっているものをいう。カレントストリーム管理情報とは、BD−ROMもしくはローカルストレージ423に記録されている複数ストリーム管理情報のうち、現在処理対象になっているものをいう。
動的シナリオメモリ412は、カレント動的シナリオを格納しておき、HDMVモジュール413、BD−Jモジュール414による処理に供されるメモリである。カレント動的シナリオとは、BD−ROMもしくはローカルストレージ423に記録されている複数シナリオのうち、現在実行対象になっているものをいう。
HDMVモジュール413は、HDMVモードの実行主体となるDVD仮想プレーヤであり、動的シナリオメモリ412に読み出されたカレントのシナリオプログラムを実行する。
BD−Jモジュール414は、Javaプラットフォームであり、Java仮想マシン、コンフィグレーション、プロファイルからなる。BD−Jモジュール414は、動的シナリオメモリ412に読み出されたJavaクラスファイルからカレントのJavaオブジェクトを生成し、実行する。Java仮想マシンは、Java言語で記述されたJavaオブジェクトを、再生装置におけるCPUのネィティブコードに変換して、CPUに実行させる。
UO探知モジュール415は、リモコンや再生装置のフロントパネルに対してなされたユーザ操作を検出して、ユーザ操作を示す情報(以降UO(User Operation)という)をモード管理モジュール416に出力する。
モード管理モジュール416は、BD−ROMもしくはローカルストレージ423から読み出されたモード管理テーブルを保持して、モード管理及び分岐制御を行う。モード管理モジュール416によるモード管理とは、動的シナリオをHDMVモジュール413、もしくはBD−Jモジュール414のどちらで実行させるかという、モジュールの割り当てである。
ディスパッチャ417は、UOから、現在の再生装置におけるモードに適切なUOのみを選んで、そのモードを実行するモジュールに受け渡す。例えばHDMVモードの実行中に、上下左右、アクティベートといったUOを受け付けた場合、HDMVモードのモジュールにこれらのUOを出力するというのがディスパッチャ417の処理である。
レンダリングエンジン418は、Java2D,OPEN−GLといった基盤ソフトウェアを備え、BD−Jモジュール414からの指示に従ってコンピュ−タ・グラフィックスの描画を行い、描画されたコンピュ−タ・グラフィックスをイメージプレーン408に出力する。
書込制御部419は、ネットワークインターフェース422を介してダウンロードされたデータや、デジタルコピーモジュール424からの指示に従い、ローカルストレージ423にデータを書き込む。
AV再生ライブラリ420はHDMVモジュール413、BD−Jモジュール414からの関数呼び出しに応じて、AV再生機能、プレイリストの再生機能を実行する。AV再生機能とは、DVDプレーヤ、CDプレーヤから踏襲した機能群であり、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切り替え、副映像切り替え、アングル切り替えといった処理である。プレイリスト再生機能とは、このAV再生機能のうち、再生開始や再生停止をプレイリスト情報に従って行うことをいう。
PSRセット421は、再生装置に内蔵されるレジスタであり、Player Status Register(PSR)と、General Purpose Register(GPR)とからなる。PSRは、それぞれ現在の再生時点等、再生装置における諸状態を示す。その詳細な内容については、後で詳細に説明する。
ネットワークインターフェース422は、インターネット上に公開されたBD−ROM追加コンテンツのダウンロードやデジタルコピー実行に必要なプロトコルを処理するために用いる。BD−ROM追加コンテンツとは、オリジナルのBD−ROMにないコンテンツで、例えば追加の副音声、字幕、特典映像、アプリケーションなどである。BD−Jモジュール414は、ネットワークインターフェース422を制御することにより、インターネット上に公開された追加コンテンツをローカルストレージ423にダウンロードすることができる。
ローカルストレージ423は、ダウンロードしてきた追加コンテンツやアプリケーションが使うデータなどの保存、及びデジタルコピーのコピー先として用いられる。追加コンテンツの保存領域はBD−ROM毎に分かれており、またアプリケーションがデータの保持に使用できる領域はアプリケーション毎に分かれている。また、ダウンロードした追加コンテンツをどのようにBD−ROM上のデータとマージするかを示すマージ規則が記載されたマージ管理情報も、このローカルストレージ423に保存される。
デジタルコピーモジュール424は、BD−ROM上に記録されている携帯端末向け保護コンテンツを、ローカルストレージ423へコピーし、かつネットワークインターフェース422を通してデジタルコピーサーバと認証を行い、コピー先で再生可能にするために必要な復号鍵の取得を行う。デジタルコピーモジュール424の機能はHDMVモジュール413及びBD−Jモジュール414には公開されておらず、ネットワークインターフェース422を介した間接的な制御のみ可能である。
以上が本発明に係る再生装置の構成である。続いてPSRセットにおける個々のPSRについて説明する。以下にPSRの一覧を示す。
PSR(0) : メニューグラフィックスストリーム番号
PSR(1) : 音声ストリーム番号
PSR(2) : 字幕ストリーム番号
PSR(3) : アングル番号
PSR(4) : 現在再生中のタイトル番号
PSR(5) : 現在再生中のチャプター番号
PSR(6) : 現在再生中のプレイリスト識別子
PSR(7) : 現在再生中のプレイアイテム識別子
PSR(8) : 再生時刻情報
PSR(9) : ナビゲーションタイマー
PSR(10) : 選択キー情報
PSR(11) : メニューグラフィックスストリームにおける現在のページ識別子
PSR(12) : 字幕ストリームにおけるユーザースタイル識別子
PSR(13) : パレンタルレベル
PSR(14) : 字幕サポート情報
PSR(15) : プレーヤ設定値(オーディオ)
PSR(16) : 音声ストリーム用言語コード
PSR(17) : 字幕ストリーム用言語コード
PSR(18) : メニュー用言語コード
PSR(19) : プレーヤのバージョン情報
PSR(20) : PSR(0)のバックアップ
PSR(21) : PSR(1)のバックアップ
PSR(22) : PSR(2)のバックアップ
PSR(23) : PSR(3)のバックアップ
PSR(24) : PSR(4)のバックアップ
PSR(25) : PSR(5)のバックアップ
PSR(26) : PSR(6)のバックアップ
PSR(27) : PSR(7)のバックアップ
PSR(28) : PSR(8)のバックアップ
PSR(29) : PSR(9)のバックアップ
PSR(30) : PSR(10)のバックアップ
PSR(31) : PSR(11)のバックアップ
PSR(32) : PSR(12)のバックアップ
PSR(0)からPSR(12)までは、再生状態を示すシステムパラメータを格納する。PSR(13)からPSR(19)までは、プリファレンスとしてプレーヤに設定されるシステムパラメータを格納している。また、PSR(20)からPSR(32)までは、PSR(0)からPSR(12)のバックアップ用レジスタ(バックアップレジスタ)である。HDMVモードにおいてCallコマンドによるタイトル切替が行われた場合、PSR(0)からPSR(12)の現在の再生状態を示すパラメータが、PSR(20)からPSR(32)に退避される。
特にPSR(8)は、ピクチャデータが表示される度に更新され、0〜OxFFFFFFFFの値に設定されることで、45kHzの時間精度を用いて現在の再生時点を示す。本編がBD−Jモードの場合、バックアップレジスタが利用されないため、PSR(8)に格納されているパラメータを読み出すことにより、現在の再生時刻情報を取得できる。一方本編がHDMVモードである場合、PSR(8)のパラメータはPSR(28)に退避されており、PSR(28)に格納されているパラメータを読み出すことにより、現在の再生時刻情報を取得できる。以上がPSRの内容についての説明である。続いて、ローカルストレージにおけるデータ構造について説明する。
図6は、ローカルストレージにおけるデータ構造を示す図である。ローカルストレージには大きく3種類の領域が存在し、1つはユーザから自由に読み書きできユーザにとって可視である領域「ユーザ領域」、もう一つはユーザからは読み書き不可能で、ユーザにとって不可視であり、著作権保護に対応したシステムのみ読み書きが許される保護された領域「保護領域」、最後に、ユーザからは読み書き不可能、システムからも書き込み不可能で、システムによる読み込みのみが許される領域「システム領域」である。
ユーザ領域は、さらに追加コンテンツ領域とSDビデオ領域の2種類に分けられる。追加コンテンツ領域はBD−ROM再生時に補助的用いられるコンテンツが格納され、SDビデオ領域には主に携帯端末での再生を目的としたSDビデオ準拠のコンテンツ(SDビデオコンテンツ)が格納される。追加コンテンツ領域とSDビデオ領域は共にローカルストレージのユーザ領域上のルートディレクトリ直下に存在する。追加コンテンツ領域を示すディレクトリ名は8文字以内の固定値(BUDA)である。このBUDAディレクトリ以下(サブディレクトリとそれ以下のファイルも含む)に、アプリケーションはサーバからダウンロードしてきた追加ファイル等、任意のファイルを格納することが可能である。
BUDAディレクトリ以下にはさらにOrganizationIDディレクトリとDiscIDディレクトリが存在し、特定のプロバイダ(Organization)に対応するディレクトリに、各BD−ROMに対応するディレクトリを設けることにより、各BD−ROMについてのダウンロードデータが個別に格納される。
一方SDビデオ領域を示すディレクトリ名はSD_VIDEOであり、追加コンテンツ領域と同様、ユーザ領域上のルートディレクトリ直下に存在する。SD_VIDEOディレクトリ以下にはさらにSDビデオコンテンツ毎に分かれたSDビデオコンテンツディレクトリ(「PRGxxx」、"xxx"は可変)とSDビデオ領域全体の管理ファイルが格納されたSDビデオ管理ディレクトリ(「MGR_INFO」)が存在する。SDビデオコンテンツディレクトリには、上述のPRG001.PGI及びMOV001.SD1が記録され、SDビデオ管理ディレクトリには、上述のMGR_DATA及びPRG_MGRが記録される。
ユーザからはアクセスできない保護領域上には、暗号化された携帯端末向け保護コンテンツを復号するための復号鍵(VIDEO001.KEY)が記録される。復号鍵へのアクセスは著作権保護に対応したシステムのみが可能である。
ユーザからはアクセスできず、システムからも読み込みのみ許されるシステム領域には、前述の復号鍵生成に必要な鍵情報が記録されたメディアキーブロック(MKB)と、ローカルストレージに割り当てられているSDメモリーカード等の媒体を、媒体毎に一意に特定するための識別子であるメディアID(MID)が記録されている。メディアIDは同じ種類のメディアでも媒体毎に異なる値が割り振られている。
図7は図5に示すBD−Jモジュールのより具体的な構成を示す図である。BD−Jモジュール414はメディア再生モジュール704、ファイルI/Oモジュール705、ネットワークモジュール706、アプリケーションマネージャ707から構成される。なお、本図におけるAV再生ライブラリ420、PSRセット421、ネットワークI/F422、ローカルストレージ423、デジタルコピーモジュール424は、図5に示したものと同一であり、メディア再生モジュール704〜アプリケーションマネージャ707の説明のために便宜的に記載している。
アプリケーションマネージャ707はBD−ROM上に記録されたアプリケーション管理情報を元にBD−Jアプリケーションの起動・終了を管理する。また、アプリケーションマネージャがディスパッチャ417から受け取ったUOイベントを、現在動作中のBD−Jアプリケーション701に渡すといった処理も行う。
メディア再生モジュール704はBD−Jアプリケーション701に対し、メディア再生制御のためのAPIを提供している。BD−Jアプリケーション701がメディア再生制御APIを呼び出すと、メディア再生モジュール704は対応するAV再生ライブラリ420の関数を呼び出し、AV再生制御を行う。
ファイルI/Oモジュール705はBD−Jアプリケーション701からのBD−ROM、ローカルストレージ、記録型BDドライブ等の各メディアへのファイルアクセス要求の処理を行う。
ネットワークモジュール706は、BD−Jアプリケーション701に対し、ネットワーク制御のためのAPIを提供している。BD−Jアプリケーション701からのネットワーク制御要求に従い、ネットワークインターフェース422を使って、ネットワーク接続を行う。BD−Jアプリケーション701はネットワークモジュール706を用いて、デジタルコピーサーバにアクセスし、公開されている追加コンテンツの検索・ダウンロード等が可能である。加えて本実施の形態では、再生装置内のデジタルコピーモジュール424とのプロトコル通信のためにネットワークモジュール706が用いられる。図7に示す通り、デジタルコピーモジュールに対しての直接のAPIはBD−Jアプリケーション701には提供されていない。デジタルコピーモジュール424に対して何らかの処理を発行するときは、デジタルコピーモジュール424とネットワークモジュール706の間に形成されたローカルネットワークを介して必要なデータの送受信を行うことになる。ネットワークモジュール706は外部ネットワークアクセス及びローカルネットワークアクセスの両方のインターフェースをBD−Jアプリケーション701に提供する。
なお、ローカルネットワークアクセスを用いたデジタルコピーモジュール424とのデータ送受信は、BD−Jアプリケーション701とは分離し、ライブラリ化することも考えられる。デジタルコピーモジュール424とのデータ送受信に用いるプロトコルを個々のBD−Jアプリケーションに依存したものではなく、共通のプロトコルを定義することで、そのプロトコル解析専用のライブラリを用意し(デジタルコピーライブラリ702)、BD−Jアプリケーションから分離させる。デジタルコピーライブラリ702は、BD−Jアプリケーションに対し、あたかもBD−J APIを拡張したかのようなAPI(デジタルコピーライブラリAPI、詳細は後述)を提供し、プロトコルの詳細はデジタルコピーライブラリ702内に隠蔽する。このように構成することで、BD−Jアプリケーションはデジタルコピーモジュール424とのデータ送受信に用いるプロトコルを解析する必要がなくなり、プロトコル解析をライブラリで一元管理することが可能となるため、BD−Jアプリケーションの生産性を向上させることができる。なお、デジタルコピーライブラリ702とデジタルコピーモジュール424の双方でやりとりされるローカルネットワークアクセスを用いたプロトコル(デジタルコピーソケットプロトコル)の詳細については後述する。
図8はindex.bdmvファイルとタイトルの関係の一例を示す図である。タイトルとはアプリケーションとAVストリームを組にした再生単位であり、index.bdmvファイルにはディスク上のタイトル構成が記載されており、ディスク上の各タイトルと、対応するアプリケーション(BD−JモードタイトルであればBD−Jアプリケーション、HDMVモードタイトルであればシナリオプログラム)の参照関係を管理している。
図8に示す例では、「Top Menu」、「First Play」、「Title#1」、「Title#3」がそれぞれBD−Jモードタイトル、「Title#2」がHDMVタイトルであることを示している。
「Title#1」は、例えば本編映像のタイトルであり、このタイトルの選択がなされるとBD−Jオブジェクト(00001.bdjo)に含まれるアプリケーション管理テーブルに示される再生可能なプレイリストに従うデジタルストリームの再生およびアプリケーション管理テーブルに示されるアプリケーションの実行が再生装置にて行われる。
「Title#2」は、例えば特典映像のタイトルであり、このタイトルの選択がなされるとMovieObject.bdmvに含まれるシナリオプログラムに従ったデジタルストリームの動的再生が行われる。
「Title#3」は、例えばデジタルコピーに対応するタイトルであり、このタイトルの選択がなされるとBD−Jオブジェクト(88888.bdjo)に含まれるアプリケーション管理テーブルに示されるBD−Jアプリケーションおよびデジタルコピーライブラリの実行による後述するデジタルコピーが再生装置にて行われる。
上述に示す例は単なる一例である。例えば「Title#1」に関連付けたBD−Jオブジェクトに含まれるアプリケーション管理テーブルにプレイリストが示されなければ、デジタルストリームの再生は行われない。また、「Title#3」に関連付けたBD−Jオブジェクトに含まれるアプリケーション管理テーブルに再生可能なプレイリストを示すようにすれば、アプリケーション管理テーブルに示されるBD−Jアプリケーションおよびデジタルコピーライブラリの実行と並行して、アプリケーション管理テーブルに示される再生可能なプレイリストに従うデジタルストリームの再生が再生装置で行われることになる。
また、特殊なタイトルとして「FirstPlay」と「Top Menu」が存在する。「First Play」はBD起動時に自動的に再生されるタイトルであり、主にBDの利用規約表示などに用いられる。「Top Menu」はリモコンのメニューキーを押したときやタイトル再生が終了したときに再生され、主にタイトルの選択や、字幕/音声の言語選択を行うことに用いられる。本実施形態では、デジタルコピーはBD−Jモードタイトルで行われることになる。デジタルコピータイトルは、デジタルコピーのGUI等を管理するBD−Jアプリケーションと、デジタルコピーモジュールとのデータ送受信を管理するデジタルコピーライブラリで構成される。BD−Jアプリケーション、デジタルコピーライブラリ共に、JARファイルとしてBD−ROM上に記録しておく必要がある。JARファイルは、BD−Jアプリケーションとデジタルコピーライブラリで分けて記録しても良いし、1つのJARファイルにまとめて記録しても良い。
図9は、デジタルコピーモジュール424を詳細化した図である。デジタルコピーモジュール424は、通信管理部601、鍵情報読込部602、メディア状態管理部603、コピー実行部604、コピー状態通知部605、コピー進捗管理部606、鍵情報書込部608、空き容量判定部610で構成される。
通信管理部601は、再生装置内の通信ポートの一つをデジタルコピー制御のために割り当て、このデジタルコピー通信ポートを用いて、BD−Jモジュールとのプロトコル通信を行う。具体的には、サーバソケットとしてデジタルコピー通信ポートを開いて、BD−Jモジュールからの要求が来るのを待ち、デジタルコピー通信ポートに対してデータが送られてくると、送られてきたデータを解析し、そのデータ対応する処理を行う。処理結果も同様にデジタルコピー通信ポートを介してBD−Jモジュールに送り返す。加えて、通信管理部601はデジタルコピーサーバ803とのデータ通信管理も行う。具体的には、暗号化された携帯端末向けデジタルAVストリームを復号するために必要な復号鍵をサーバから取得するために必要な通信処理を行う。
鍵情報読込部602は、復号鍵生成に必要な情報をコピー元801及びコピー先802から読出す。具体的には、コピー元801からはBD−ROM上の特殊領域であるBCA(Burst Cutting Area)に記録されている記録媒体の物理的なシリアルIDを示すPMSN(Pre-recorded Media Serial Number)を、コピー先802からはコピー先のメディアに記録されている、メディア毎にユニークに設定されるメディア固有の情報(メディアID)、及び復号鍵生成に必要な鍵情報が記録されたメディアキーブロック(MKB)の読出しを行う。
メディア状態管理部603は、再生装置が現在コピー先として利用できるメディアの種類一覧を管理する。例えば、再生装置がSDカードスロットと、USBメモリスロットを備え、現在、SDカードのみが挿入されているのであれば、SDカードが現在のコピー先の対象と判断する。SDカードとUSBメモリ(もしくはUSB接続されている携帯端末)の両方が挿入されていれば、コピー先としてSDカード、USBメモリの両方が可能と判断する。加えて、コピー先メディアの空き容量管理も行う。
コピー実行部604は、BD−Jアプリケーション701から指示されたBD−ROM上の携帯端末向け保護コンテンツを別メディアへコピーする処理を行う。BD−Jアプリケーション701からの指示はデジタルコピーライブラリ702を経由し、デジタルコピー通信ポート上で行われる。なおコピー実行部604によるデータコピーだけでは、コピー先で携帯端末向け保護コンテンツを再生することはできない。後述の復号鍵書込部608によってコピー先へ復号鍵の書込みが完了した後にコピー先にて再生が可能となる。
コピー状態通知部605はコピーの開始・正常終了・エラー終了等の状態遷移を管理し、デジタルコピー通信ポートを通じてデジタルコピーモジュール424とローカル通信接続中のBD−Jアプリケーション701に状態遷移を通知する。
コピー進捗管理部606はコピー対象となっている残りバイト数、コピー済みバイト数の管理を行い、デジタルコピー通信ポートを介したBD−Jアプリケーションからの要求に応じて、現在の進捗情報を通知する。
鍵情報書込部608は、鍵情報読込部602が取得したBD−ROMのシリアルID、コピー先メディアのメディアID、及びMKBから生成される復号鍵の書込みを行う。復号鍵の生成は、サーバにある秘密鍵を元に行われるため、デジタルコピーモジュール424は鍵情報読込部602が、BD−ROMのシリアルID、コピー先メディアのメディアID、及びMKBを取得した後、通信管理部601を経由してデジタルコピーサーバ803にこれらの値と、コピー対象コンテンツのコンテンツIDを送信する。デジタルコピーサーバ803は受け取った値とサーバが保持する秘密鍵から復号鍵を生成し、通信管理部601へ復号鍵を送信する。生成される復号鍵はコピー先メディアのMKBにより復号できるような暗号化がなされている。通信管理部601が復号鍵を受け取ると鍵情報書込部608はコピー先の保護領域に復号鍵の書込みを行う。復号鍵はキー情報(タイトルキー)を含んでおり、キー情報が暗号化された携帯端末向け保護コンテンツの復号に用いられる。
このキー情報を含む復号鍵がなければ、たとえ、無断でコピー元の携帯端末向け保護コンテンツのみを別のメディアにコピーしたとしても再生することはできない。
空き容量判定部610はコピー先メディアの空き残量及びコピー元コンテンツをもとにコピーに必要な空き容量がコピー先に存在するかを判定する。
デジタルコピーモジュール424は以上の構成を持ち、これらの操作はデジタルコピー通信ポートにローカル通信接続を行っているBD−Jアプリケーションから制御できる。なお、これらの制御を操作できる直接のAPIはBD−Jモジュールに存在しないため、デジタルコピー通信ポートに接続できていないBD−Jアプリケーションからは制御ができないということになる。
図10はBD−Jアプリケーション、デジタルコピーライブラリ、デジタルコピーモジュール、及びデジタルコピーサーバとのデータ送受信を示すシーケンス図である。本実施の形態において、デジタルコピーモジュール424とBD−Jアプリケーション701/デジタルコピーライブラリ702、デジタルコピーモジュール424とデジタルコピーサーバ803との間には2つの異なる通信経路が形成されることが特徴である。BD−Jアプリケーション701とデジタルコピーモジュール424の間には同一端末間のローカル通信が形成され、デジタルコピーモジュール424とデジタルコピーサーバ803の間には別端末間のグローバル通信が形成される。BD−Jアプリケーション701とデジタルコピーライブラリ702との間は、通信は発生せず、通常の同一アプリケーション内API呼び出しが行われる。
まず、BD−Jアプリケーション701は、再生装置がデジタルコピーに対応しているかどうかの判断を行う。再生装置がデジタルコピーに対応しているかどうかの判断は、図11に示すフローチャートに基づいて行う。BD−Jアプリケーション701からデジタルコピーライブラリ702に対し、再生装置のデジタルコピー対応確認が要求されると、デジタルコピーライブラリ702は、デジタルコピーに割り当てられた通信ポートを示すシステムプロパティ("digitalcopy.port")が存在するかどうかを確認する(ステップS101)。
システムプロパティ"digitalcopy.port"が存在する場合は、そのプロパティが示す通信ポートをデジタルコピーモジュールとのデータ送受信に用いる。システムプロパティ"digitalcopy.port"が存在しない場合は、予め決められた通信ポートをデジタルコピーモジュールとのデータ送受信に用いる。なお、デジタルコピーモジュールは通信ポートの1つをデジタルコピー用に占有することになるため、予め決められた通信ポートを用いる場合は、既存の通信ポートを利用したネットワークとの衝突を防ぐために、プライベートポートを使うことが望ましい。具体的には49152番ポート以上、65535番ポート以下が推奨される。システムプロパティ"digitalcopy.port"を用いる場合、すなわちデジタルコピーに用いる通信ポートが毎回変わる可能性がある構成を取る場合は、フリーポートを利用することも考えられる。フリーポートとは、ポート0番を指定することにより、その時点で端末側が利用していないポートを自動的に割り当てる仕組みを指す。フリーポートを利用すれば、ポート衝突は避けられるが、都度ポート番号が変わるため、そのデジタルコピーに用いるポート番号をデジタルコピーライブラリ702に通知する必要がある。そのポート番号の通知にシステムプロパティ"digitalcopy.port"を利用する。
ステップS101でシステムプロパティが存在しなければ、デジタルコピーライブラリ702は、予め決められた固定ポートへ接続する(ステップS102)。システムプロパティが存在する場合は、デジタルコピーライブラリ702は、システムプロパティが示すポートへ接続する(ステップS103)。
次にデジタルコピーライブラリ702は、通信ポートへの接続に成功したかどうかを確認する(ステップS104)。通信ポートへの接続が失敗すれば、デジタルコピーライブラリ702は、現在の再生装置ではデジタルコピーに対応していないと判断する(ステップS108)。
ステップS104で通信ポートへの接続に成功した場合、デジタルコピーライブラリ702は、その通信ポートを経由してデジタルコピーモジュールへ初期化を要求する(ステップS105)。そして、デジタルコピーライブラリ702は、ステップS105の初期化要求に対するデジタルコピーモジュールからの応答を接続中の通信ポートで受け取る(ステップS106)。ステップS106で、初期化成功との応答を受け取った場合、デジタルコピーライブラリ702は、現在の再生装置でデジタルコピー可能と判断する(ステップS107)。デジタルコピーモジュールからの応答がない、もしくは初期化失敗との応答を受け取った場合は、デジタルコピーライブラリ702は、現在の再生装置ではデジタルコピー不可と判断する(ステップS108)。
デジタルコピーライブラリ702は、デジタルコピー可否の結果をBD−Jアプリケーションに通知し、BD−Jアプリケーションはデジタルコピー可能であるという通知を受け取ると、続いてデジタルコピーに必要なパラメータをデジタルコピーライブラリ経由で、デジタルコピーモジュールへセットする。具体的には、シリアルID,コピー元のコンテンツの位置、デジタルコピーサーバのURL、コピー先のメディア、レジューム再生位置である。
シリアルIDは、BCA(Burst Cutting Area)に記録されているPMSN(Pre−recorded Media Serial Number)を利用することができるが、これ以外の値として、パッケージに同梱されている紙に記載されたクーポンIDをユーザに手入力させた値を代替することも可能である。PMSNを利用すれば、ユーザに手入力させる必要もなく自動で認証を行うことが可能であるが、一方でレンタルディスク等の場合にPMSNを利用するとなると、最初に借りたユーザだけが、このサービスを実施権が与えられることになり、二番目以降に借りるユーザに不公平となる。レンタルディスクの場合はクーポンIDの手入力が望ましく、市販ディスクの場合はPMSNの利用が望ましい。
コピー元のコンテンツの位置は、携帯端末向けコンテンツが記録されているディレクトリまでの絶対パスで示される。例えば、"/mnt/bdrom/EMOVE/DATA01"等である。この場合、"/mnt/bdrom"はBD−ROMメディアのマウントポイントに当たる。
デジタルコピーサーバのURLは、グローバルネットワーク上のサーバを示すURLが指定される。例えば"http://xxx.yyy.zzz"等である。
コピー先メディアは、再生装置がサポートしているコピー先メディア一覧の中から指定される。BD−Jアプリケーションはデジタルコピーモジュールに対し、現在の再生装置でサポートしているメディア一覧を要求すると、「<メディアの種類>_<番号>」の形のリストが送られてくる。例えば、再生装置がSDカードスロットとUSBメモリスロットの両方をそれぞれ1つずつサポートしていた場合、「SD_1 USB_1」というリストが送られてくる。SDカードスロットなし、USBメモリスロットが2つ持つ場合は「USB_1 USB_2」というリストが送られることとなる。コピー先一覧を受け取ったBD−Jアプリケーションは、それらの一覧をユーザに提示し、どのメディアにコピーするか、ユーザの指示を受け、ユーザが選択したメディアを、コピー先メディアとして指定することになる。
レジューム再生位置は、携帯端末視聴用のコンテンツの先頭からの再生再開位置(レジュームポイント)までの経過時間(ミリ秒)が指定される。BD−Jアプリケーションは、本編がBD−Jモードの場合、PSRセット421のPSR(8)に格納された再生装置の再生時刻情報を読み出し、レジューム再生位置を指定する。本編がHDMVモードである場合、PSR(28)に格納された再生装置の再生時刻情報を読み出し、レジューム再生位置を指定する。PSR(8)またはPSR(28)から取得される再生時刻情報は、45kHzクロック単位であるため、再生時刻情報をミリ秒単位に変換したものがレジューム再生位置となる。例えば、再生装置にてすでに30分視聴していた場合、PSR(8)またはPSR(28)に格納されている値は81,000,000であり、レジューム再生位置は1,800,000となる。
デジタルコピーライブラリはこれらのパラメータがBD−Jアプリケーションから指定されると、接続中の通信ポートを用いてデジタルコピーモジュールへ指定されたパラメータを送信する。
パラメータのセットが完了すると、BD−Jアプリケーションは次に残コピー回数の確認を行う。残コピー回数の確認も、パラメータのセットと同様、デジタルコピーライブラリを経由し、接続中の通信ポートを用いてデジタルコピーモジュールへ問い合わせを行う。残コピー回数は、デジタルコピーサーバで管理されているため、デジタルコピーモジュールは残コピー回数の確認要求を受け取ると、現在セットされているパラメータから、コンテンツID,シリアルID,メディアIDを取り出しデジタルコピーサーバへ、これら3つの値を送る。コンテンツIDはコピー対象の携帯端末向け保護コンテンツのEMOV_INFファイルに記載されている値を、シリアルIDはBD−Jアプリケーションから指定された値を、メディアIDはコピー先メディアのシステム領域に記載されている値を用いる。BD−Jアプリケーション701、デジタルコピーライブラリ702及びデジタルコピーモジュール424の間は同一端末間通信であり、外部インターネット接続不要であったが、デジタルコピーモジュール424とデジタルコピーサーバ803との間はグローバルなインターネット接続が必要となる。デジタルコピーサーバは、受け取った値を元に残コピー回数を割り出し、デジタルコピーモジュールへ残コピー回数の値を返信する。デジタルコピーモジュールは、この残コピー回数をデジタルコピーライブラリ経由でBD−Jアプリケーションに通知する。
BD−Jアプリケーションは残コピー回数を確認し、1回以上残っていれば、コピー開始をデジタルコピーモジュールへ要求する。このコピー開始要求も、これまでと同様、デジタルコピーライブラリを経由し、通信ポートを用いてデジタルコピーモジュールへ伝えられる。デジタルコピーモジュールはコピー開始要求を受け取ると、コピーを開始し、その間、BD−Jアプリケーションからの要求に応じてコピー進捗状況を随時通知する。なお、コピー中はI/O処理がデジタルコピー実行部604に占有されるため、BD−ROM上のコンテンツを正常に再生することができなく恐れがある。そのため、しばらくの間は、再生ができないということ、ディスクを取り出してはいけないということ、及び電源を落としてはいけないということを事前にユーザに通知しておくことが望ましい。とは言え、ユーザが誤ってディスクを取り出したり、電源を落としたりすることは大いに有り得る。しかしながら、復号鍵書込の処理は、この時点では完了しておらず、残コピー回数は減っていないため、ここでデータコピーに失敗しても残コピー回数が減るということはない。デジタルコピーサーバ側で管理している残コピー回数は、次のステップで復号鍵をデジタルコピーサーバからダウンロードした時点で減ることになる。
BD−Jアプリケーションは、コピー完了通知を受け取ると、復号鍵の書込みをデジタルコピーモジュールへ要求する。デジタルコピーモジュールは復号鍵の書込み要求を受け取ると、現在セットされているパラメータから、コンテンツID,シリアルID,メディアID,MKBを取り出しデジタルコピーサーバへ、これら4つの値を送る。デジタルコピーサーバは、受け取った値を元に復号鍵を生成し、デジタルコピーモジュールへ復号鍵を返信する。デジタルコピーモジュールは、デジタルコピーサーバから受け取った復号鍵をコピー先メディアに書き込み、書き込みが完了すると、デジタルコピーライブラリを経由してBD−Jアプリケーションに書き込み完了を通知する。
その後デジタルコピーモジュールは、コピー先のメディアの管理ファイルMGR_DATAに、BD−Jアプリケーションにより指定されたレジューム再生位置を上書きする。BD−Jアプリケーションによりレジューム再生位置が指定されていない場合、MGR_DATAの上書きは行わない。
図12はデジタルコピーライブラリAPIを用いたデジタルコピーのシーケンスを示す図である。デジタルコピーライブラリはBD−Jアプリケーションに対し、あたかもBD−J APIを拡張したかのようなAPIを提供している。実際は、これらのAPIが呼ばれると、デジタルコピーソケットプロトコルに変換し、デジタルコピー用の通信ポートを利用してデジタルコピーモジュールとデータの送受信を行い、APIに対応した処理を行う。
デジタルコピーライブラリがBD−Jアプリケーションに提供する主なAPIを以下に示す。
BCManager#getInstance(): デジタルコピーモジュールを制御するための各種メソッドを持つBCManagerクラスのインスタンスを取得する。再生装置がデジタルコピーに対応していなかった場合はUnsupportedOperationExceptionをスローする。
BCManager#addBCStatusChangeListener(): デジタルコピーモジュールの状態変化をモニタリングする。デジタルコピーモジュールの状態変化を検知すると、変化した状態をBD−Jアプリケーションへ通知する。
BCManager#initializeBC(): デジタルコピーモジュールの初期化を行う。このAPIが呼ばれると、デジタルコピーライブラリは、図11に示すフローに従い、デジタルコピーモジュールとの接続を行う。接続に失敗した場合は、UnsupportedOperationExceptionをスローする。初期化が成功すれば、BCInitializedEventをBD−Jアプリケーションに通知する。
BCManager#getDeviceList(): 再生装置がコピー先としてサポートしているメディア一覧(SDカード、USBメモリ)を取得する。それぞれのメディアはBCOutputDeviceクラスのインスタンスとして表現される。BCOutputDeviceクラスはインスタンスが示すメディアの種類と番号(SD_1、USB_1)を取得するメソッド(BCOutputDevice#getName)、空き容量を取得するメソッド(BCOutputDevice#getFreeSpace)、及びトータル容量を取得するメソッド(BCOutputDevice#getTotalSpace)を持つ。図12では、空き容量を取得するメソッド(BCOutputDevice#getFreeSpace)の呼び出しに対する応答として、空き容量の一例として10737418240(byte)を返している。
BCManager#setServerURL(URL): デジタルコピーモジュールへデジタルコピーサーバURLをセットする。
BCManager#setSourceLocation(File srcdir): デジタルコピーモジュールへコピー元のコンテンツ位置をセットする。コンテンツ位置は、携帯端末向けコンテンツが記録されているディレクトリまでの絶対パスで示される("/mnt/bdrom/EMOVE/DATA01"等)。
BCManager#setOutputDevice(device): デジタルコピーモジュールへコピー先メディアをセットする。コピー先メディアはBCManager#getDeviceList()で取得できたメディアリストの中から選択される。
BCManager#setSerialId(byte[]): デジタルコピーモジュールへシリアルIDをセットする。
BCManager#setResumePoint(time): デジタルコピーモジュールへレジューム再生位置をセットする。なお、BCManager#setResumePoint(time)の呼び出しは、デジタルコピーモジュールが後述するNOT_INIT状態以外であれば可能である。
BCManager#checkTicket():残コピー回数確認をデジタルコピーモジュールへ要求する。デジタルコピーモジュールは残コピー回数の確認が要求されると、現在セットされているパラメータを用いてデジタルコピーサーバへ残コピー回数の問い合わせを行う。得られた残コピー回数はBCCheckResponseクラスのインスタンスとしてBD−Jアプリケーションにリターンされる。BD−JアプリケーションはBCCheckResponse#remainingTimesOfCopy()を呼び出すことで残コピー回数を確認することができる。また、残コピー回数が1回以上残っていれば、BCReadyEventがBD−Jアプリケーションに通知される。
BCManager#makeCopy(): デジタルコピーモジュールへコピー開始を要求する。デジタルコピーライブラリはデジタルコピーモジュールへコピー開始を要求した後、BD−Jアプリケーションには進捗状況を示すBCProgressインスタンスをリターンし、コピー処理はデジタルコピーモジュールにおいて非同期で行われる。BD−JアプリケーションはBCProgress#total()を呼び出すことでトータルのコピーバイト数を、BCProgress#remaining()を呼び出すことで残りのコピーバイト数を確認することができる(図12では、BCProgress#remaining()の呼び出しに対する応答としての残りのコピーバイト数の一例として524288000(byte)を返している)。コピー処理が完了するとBCTransferredEventがBD−Jアプリケーションに通知される。
BCManager#finalizeBC():デジタルコピーモジュールへ復号鍵の書込みを要求する。復号鍵の書込みが完了するとBCCompleteEventがBD−Jアプリケーションに通知される。
BCManager#cancelCopy():デジタルコピーモジュールのコピー処理をキャンセルする。キャンセルに成功するとBCCancelEventがBD−Jアプリケーションに通知される。
BCManager#close():デジタルコピーモジュールが確保しているリソースを開放し、デジタルコピープロセスを終了する。
図13はデジタルコピーモジュールの状態遷移を示す図である。デジタルコピーモジュールはデジタルコピープロセスの進捗に応じて以下9個の状態を遷移する。
NOT_INIT:この状態はデジタルコピーモジュールがまだ初期化されていないことを示す。この状態はBD−ROMがロードされた時点でのデジタルコピーモジュールの初期状態である。他の状態においてBD−JアプリケーションがBCManager#close()を呼び出し、デジタルコピープロセスを終了した場合、デジタルコピーモジュールは再びNOT_INIT状態に戻る。この状態でBCManager#initializeBC()が呼ばれると、INITIALIZED状態に遷移し、BD−JアプリケーションへはBCInitializedEventが通知される。
INITIALIZED:この状態はデジタルコピーモジュールが初期化され、BD−Jアプリケーションからデジタルコピープロセスの機能を呼び出せる状態であることを示す。この状態で、BD−Jアプリケーションが必要パラメータ(例えば、BCManager#setServerURL(URL)の呼び出しにより設定されるデジタルコピーサーバのURL、BCManager#setSourceLocation(File srcdir)の呼び出しにより設定されるコピー元のコンテンツ位置、BCManager#setOutputDevice(device)の呼び出しにより設定されるコピー先メディア、BCManager#setSerialId(byte[])により設定されるシリアルID)をセットし、BCManager#checkTicket()を呼び出して残コピー回数が1回以上残っていた場合はREADY状態に遷移し、BD−JアプリケーションへはBCReadyEventが通知される。残コピー回数が残っていなかった場合は、READY状態には遷移せず、INITIALIZED状態のままとなる。デジタルコピープロセス実行後、READY,CANCELED,STOPPED,もしくはCOMPLETED状態においてBD−JアプリケーションからBCManager#initializeBC()が呼ばれると、再びINITIALIZED状態に遷移し、BD−JアプリケーションへはBCInitializedEventが通知される。
READY:この状態はデジタルコピープロセスに必要なパラメータが全てセットされ、かつそれらが有効であり、デジタルコピーモジュールのコピー準備が整ったことを示す。この状態でBCManager#makeCopy()が呼ばれると、TRANSFERRING状態へ遷移する。
TRANSFERRING:この状態は携帯端末向け保護コンテンツのデータコピーが開始されたことを示す。携帯端末向け保護コンテンツのデータコピーが完了するとTRANSFERRED状態へ遷移し、BD−JアプリケーションへはBCTransferredEventが通知される。また、データコピー完了前にBCManager#cancelCopy()が呼ばれると、データコピーはキャンセルされ、CANCELED状態に遷移し、BD−JアプリケーションへはBCCancelEventが通知される。データコピー中にコピー先メディアが取り出される等により、エラーが発生した場合はSTOPPED状態に遷移し、BD−JアプリケーションへはBCStopByErrorEventが通知される。
TRANSFERRED:この状態は携帯端末向け保護コンテンツのデータコピーが完了し、デジタルコピーモジュールにおいて復号鍵書込み準備が整ったことを示す。この状態でBCManager#finalizeBC()が呼ばれると、デジタルコピーモジュールはFINALIZING状態へ遷移する。また、この状態でBCManager#cancelCopy()が呼ばれると、CANCELED状態に遷移し、BD−JアプリケーションへはBCCancelEventが通知される。
FINALIZING:この状態は、デジタルコピーサーバから復号鍵の取得、及びコピー先メディアへ取得した復号鍵の書込み処理が行われていることを示す。一旦この状態に入ると、BD−JアプリケーションはBCManager#cancelCopy()を呼んでもキャンセルできず、キャンセル要求は拒否されることになる。復号鍵書込み中にコピー先メディアが取り出される等により、エラーが発生した場合はSTOPPED状態に遷移し、BD−JアプリケーションへはBCStopByErrorEventが通知される。復号鍵の書込みが完了すると、デジタルコピーモジュールはCOMPLETED状態へ遷移し、BD−JアプリケーションへはBCCompleteEventが通知される。
COMPLETED:この状態は、携帯端末向け保護コンテンツのデータコピー及び対応する復号鍵の書込みが完了し、デジタルコピープロセスが成功したことを示す。COMPLETED状態に遷移した際、デジタルコピーモジュールは、コピー先のメディアの管理ファイルMGR_DATAに、BD−Jアプリケーションにより指定されたレジューム再生位置を上書きする。またCOMPLETED状態でBD−Jアプリケーションからレジューム再生位置が指定された場合、デジタルコピーモジュールは、即座にコピー先のメディアの管理ファイルMGR_DATAに指定されたレジューム再生位置を上書きする。COMPLETED状態で、BCManager#initializeBC()が呼ばれると、再びINITIALIZED状態に遷移し、BD−JアプリケーションへはBCInitializedEventが通知される。
CANCELED:この状態は、携帯端末向け保護コンテンツのデータコピーが途中でキャンセルされたことを示す。途中までコピー済みのデータは、CANCELED状態への遷移時にクリアされる。
STOPPED:この状態は、エラー発生により、データコピーもしくは復号鍵書込みが失敗したことを示す。エラー発生の原因としては、空き容量不足、コピー先メディアが書き込み保護されているため、書込みできない、コピー先メディアが途中で取り出された、コピー先メディアが破損しておりI/Oエラーが発生した等が考えられる。どの原因でコピーに失敗したかは、STOPPED状態遷移時に発生するBCStopByErrorEventインスタンスに詳細情報が記録されており、BD−JアプリケーションはBCStopByErrorEventを通してエラー原因を把握することができる。以上がデジタルコピー実行の際に、BD−Jアプリケーションとデジタルコピーライブラリ間でやり取りされるAPI呼び出しの内容である。
図14はデジタルコピーライブラリとデジタルコピーモジュール間でやり取りを行うデジタルコピーソケットプロトコルの一例を示す図である。デジタルコピーライブラリは、BD−Jアプリケーションに対して提供しているデジタルコピーライブラリAPIを対応するデジタルコピーソケットコマンドに変換し、ソケット通信によりデジタルコピーモジュールとデータの送受信を行う。
図14では、例えば再生装置がSDカードスロットのみをサポートするような構成である場合を例に説明を行う。
まず、BD−JアプリケーションからBCManager#initializeBCが呼び出され、デジタルコピーモジュールの初期化要求が行われると、デジタルコピーライブラリは、図11に示すフローに従い、デジタルコピーモジュールとの通信に使うポート番号を特定する。ポートの特定ができれば、そのポートに対しREQUEST_INITIALIZEという文字列のソケットコマンドを送信する。デジタルコピーモジュールはオープン中のポートを通じ、REQUEST_INITIALIZEという文字列を受信すると、初期化要求が行われたと判断し、パラメータ(例えば、以前に設定されたデジタルコピーサーバのURL、コピー元のコンテンツ位置、コピー先メディア、シリアルID)のクリアと状態遷移通知のための非同期イベント用ポートを新規にオープンした後、初期化が完了したという旨を知らせるため、ソケットコマンドを受け取ったポートを通じて、OKという文字列を送信する。デジタルコピーライブラリは、ソケットコマンドを送ったポートから、OKという文字列を受け取ると初期化が完了したとみなす。
初期化完了後、デジタルコピーライブラリは、GET_ASYNCPORTコマンドを呼び出し、状態遷移通知のための非同期通知用に開かれたポート番号を取得する。すなわち、デジタルコピーソケットプロトコルは2種類のポートで構成され、一つはデジタルコピーソケットコマンド用(同期コマンド)、もう一つはデジタルコピーモジュールの状態遷移通知用(非同期イベント)である。デジタルコピーソケットコマンド用のポートは、デジタルコピーライブラリからデジタルコピーモジュールへコマンドを投げる形でやり取りが行われるが、状態遷移通知用のポートはデジタルコピーモジュールからデジタルコピーライブラリへ一方的にイベントが通知される形となる。BD−JアプリケーションからBCManager#addBCStateChangeListnerが呼ばれると、デジタルコピーライブラリは状態遷移通知用ポートのモニタリングを開始し、デジタルコピーモジュールから送られている状態遷移通知をデジタルコピーライブラリAPIのイベントに変換し、BD−Jアプリケーションに状態遷移を通知することになる。
続いて、BD−Jアプリケーションから、BCManager#getDeviceListが呼ばれ再生装置がコピー先としてサポートしているメディアのリストが要求されると、デジタルコピーライブラリはGET_DEVICELISTコマンドを呼び出し、デジタルコピーモジュールへサポートしているメディアのリストを要求する。デジタルコピーモジュールはGET_DEVICELISTコマンドに対する応答として、サポートしているメディアのリストをソケットコマンド用のポートを通じて返す。サポートしているメディアのリストは、<メディアの種類>_<番号>という形で返され、複数メディアをサポートしている場合は、それぞれ空白文字で区切られる(例:SD_1<sp>USB_1、<sp>は空白文字)。図14では、再生装置が例えばSDカードスロットのみをサポートしている場合にはSD_1が応答として返される例を示している。
BD−JアプリケーションからBCOutputDevice#getTotalSpaceもしくはBCOutputDevice#getFreeSpaceが呼ばれ、トータル容量、空き容量の情報提供が要求されると、デジタルコピーライブラリはGET_DEVICEINFOコマンドをソケットコマンド用ポートを通じてデジタルコピーモジュールへ送り、トータル容量、空き容量の情報を受け取る。GET_DEVICEINFOコマンドは引数にメディアの種類を指定する。コマンド名と引数の間には空白文字を設ける。例えば、SD_1(種類:SDカード、番号:1)の情報を要求する場合は、GET_DEVICEINFO<sp>SD_1という文字列をソケットコマンド用ポートを通じてデジタルコピーモジュールへ送ることになる。
続いて、パラメータセットについて説明する。パラメータセットは、SET_SERVERURLコマンドの送信とレスポンス(OK)の受信、SET_SRCLOCATIONコマンドの送信とレスポンス(OK)の受信、SET_OUTPUTDEVICEコマンドの送信とレスポンスの受信、SET_SERIALIDコマンドの送信とレスポンスの受信(OK)、SET_RESUMEコマンドの送信とレスポンスの受信(OK)から構成される。ただし、SET_RESUMEコマンドはNOT_INIT状態以外であれば、いつでも呼び出すことが可能である。
デジタルコピーに必要なパラメータをセットする場合も同様に、デジタルコピーソケットコマンドを通じてデジタルコピーライブラリからデジタルコピーモジュールへ値が伝わり、デジタルコピーモジュール内にパラメータがセットされる。既にパラメータがセット済みである場合、上記コマンドが成功完了した際、直前のパラメータは、新たなパラメータにより上書きされる。コマンド名と引数は空白文字で区切る。例えば、"SET_RESUME 1000000"というコマンドがデジタルコピーライブラリからデジタルコピーモジュールへ送られてきた場合、レジューム再生位置はコンテンツの先頭から1000秒経過の地点であることを意味する。
必要なパラメータのセットが完了し、BD−JアプリケーションからBCManager#checkTicket()が呼ばれると、デジタルコピーライブラリは、デジタルコピーモジュールへREQUEST_CHECKTICKETコマンドを送る。デジタルコピーモジュールは、REQUEST_CHECKTICKETコマンドを受け取ると、セットされたパラメータを元に、コンテンツID,シリアルID及びメディアIDを取り出し、デジタルコピーサーバへこれら3つの値を送って残コピー回数を確認する。デジタルコピーサーバから得られた残コピー回数は、REQUEST_CHECKTICKETコマンドの戻り値として、デジタルコピーライブラリへ渡す。
続いてBD−JアプリケーションからBCManager#makeCopy()が呼ばれると、デジタルコピーライブラリは、デジタルコピーモジュールへREQUEST_COPYコマンドを送り、コピー開始を要求する。デジタルコピーモジュールは、残コピー回数が1回以上残っていることが確認できれば、データコピーを開始し、REQUEST_COPYコマンドの戻り値としてOKを返す。データコピー中にBCProgress#remaining()、もしくはBCProgress#total()がBD−Jアプリケーションから呼び出されると、デジタルコピーライブラリはGET_PROGRESSコマンドをデジタルコピーモジュールに送り、デジタルコピーモジュールから、トータルのコピーバイト数と残りバイト数を得て、BD−Jアプリケーションへその値を返す。データコピーが完了すると、デジタルコピーモジュールはTRANSFERREDに遷移し、非同期イベント用のポートを通じて、デジタルコピーライブラリへTRANSFERREDに遷移したことが通知される。
データコピー完了後、BD−JアプリケーションからBCManager#finalizeBC()が呼ばれると、デジタルコピーライブラリは、デジタルコピーモジュールへREQUEST_FINALIZEコマンドを送る。デジタルコピーモジュールは、REQUEST_FINALIZEコマンドを受け取ると、セットされたパラメータを元に、コンテンツID,シリアルID、メディアID及びMKBを取り出し、デジタルコピーサーバへこれら4つの値を送って復号鍵を得る。デジタルコピーモジュールは、得られた復号鍵をコピー先メディアの保護領域へ書き込み、書き込み処理が完了すると、非同期イベント用のポートを通じて、デジタルコピーライブラリへCOMPLETEDに遷移したことを通知する。その後、デジタルコピーモジュールは、コピー先のメディアの管理ファイルMGR_DATAに、SET_RESUMEコマンドにより指定されたレジューム再生位置を上書きする。COMPLETED状態でSET_RESUMEコマンドによりレジューム再生位置が指定された場合は、デジタルコピーモジュールは、即座にコピー先のメディアの管理ファイルMGR_DATAに指定されたレジューム再生位置を上書きする。
以上がデジタルコピーライブラリとデジタルコピーモジュール間でやり取りされるデジタルコピーソケットプロトコルの内容である。上述したように、デジタルコピーライブラリとデジタルコピーモジュール間でやり取りされるコマンド、イベント通知は全て再生装置内のローカル通信(ポートを用いたソケット通信)で行われる。残コピー回数の確認及び復号鍵の取得に関しては、デジタルコピーモジュールとデジタルコピーサーバ間でグローバル通信が行われる。
図15はデジタルコピープロセスにおけるデータの流れを示す図である。デジタルコピープロセスにおいて扱う主なデータは、シリアルID,コンテンツID,メディアID(MID)、MKB、再生時刻情報、レジューム再生位置、携帯端末向け保護コンテンツ、及び復号鍵、である。シリアルIDはBD−Jアプリケーションが指定したものが、デジタルコピーライブラリに渡され、それがソケット通信APIを通じて、デジタルコピーモジュールに渡される。コンテンツIDに関しては、BD−Jアプリケーションが指定したディスク上の保護コンテンツ格納ディレクトリ(DATAxxディレクトリ)の配下にあるEMOV_INFファイルから読み取る。メディアID,MKBに関しては、BD−Jアプリケーションが指定したコピー先のリムーバブルメディアのシステム領域からデジタルコピーモジュールが読み取る。再生時刻情報は、BD−Jアプリケーションにより、PSRセットのPSR(8)またはPSR(28)から読み取られる。レジューム再生位置は、BD−Jアプリケーションにより、45kHzの再生時刻情報をミリ秒単位に変換して得られる。そしてレジューム再生位置は、デジタルコピーライブラリに渡され、ソケット通信APIを通じて、デジタルコピーモジュールに渡される。
デジタルコピーモジュールは、BD−Jアプリケーションからセットされたパラメータを元に得られるシリアルID,コンテンツID,メディアID(MID)、MKBをデジタルコピーサーバへ送り、デジタルコピーサーバから復号鍵を得て、その復号鍵をコピー先メディアの保護領域に書き込む。また、デジタルコピーモジュールは、ソケット通信APIを通じて指定されたレジューム再生位置を、コピー先メディアの管理ファイルMGR_DATAに書き込む。以上がデジタルコピープロセスにおいて扱う主なデータの流れである。
また、コピー先のメディアの保護領域に書き込まれる復号鍵は例えばデジタルコピーによりコピー先のメディアのユーザ領域にコピーされた携帯端末向け保護コンテンツに含まれる暗号化されたデータを復号するためのキー情報(タイトルキー)が含まれている。復号鍵は、コピー先のメディアのシステム領域に記録されたMKBを用いて復号できるように暗号化されている。
なお、携帯端末において、上述のコピー先のメディアにデジタルコピーがなされた携帯端末向け保護コンテンツを利用する場合には、コピー先のメディアの保護領域に書き込んだ暗号化された復号鍵をコピー先のメディアのシステム領域に記録されたMKBを用いて復号し、復号鍵に含まれるキー情報(タイトルキー)を取り出し、取り出したキー情報を用いて、携帯端末向け保護コンテンツに含まる暗号化されたデータ(デジタルストリーム)を必要に応じて復号して利用する(この場合、復号して再生する)。
図16はBD−JアプリケーションからネットワークAPIを使って通信を行う経路を示す図である。前述したように、本実施の形態においては、従来のネットワークAPIであるソケット通信APIを端末内部に向けることで、BD−JモジュールのAPIとしては規定されていない端末固有の機能を呼び出すことが可能となる。従来のBD−ROM上BD−JアプリケーションにおけるネットワークAPIの利用方法は、主に外部サーバとの接続に用いられ、特典映像や追加字幕・アプリケーションなどの追加コンテンツのダウンロード用として使われてきた。これらのAPIを全く拡張するとなく同一端末間のローカル通信を形成することで、BD−Jアプリケーションから見れば、現在実行中の再生端末がまるでサーバのようにアクセスすることが可能となり、規定のAPIにとらわれない様々な機能を呼び出すことが可能となる。
続いて、BD−Jアプリケーションによるレジューム再生位置指定について説明する。図17は、再生時刻情報のコピーの様子を示す図である。本図に示されるように、BD−Jアプリケーションは、デジタルコピーを行う際、再生時刻情報もコピーするかどうかをユーザに問い合わせる。再生時刻情報をコピーすることがユーザに選択された場合、BD−JアプリケーションはPSRセット421から再生時刻情報を読み出し、読み出したパラメータに基づきコピー先のレジューム再生位置をデジタルコピーモジュールに指定する。デジタルコピーモジュールは、BD−Jアプリケーションからの命令に基づき、コピー先のレジューム再生位置を指定したデジタルコピーを行う。再生時刻情報のコピーが選択されない場合、BD−Jアプリケーションは、コピー先のレジューム再生位置をデジタルコピーモジュールに指定しない。デジタルコピーモジュールは、BD−Jアプリケーションからの命令に基づき、コピー先のレジューム再生位置を指定せずデジタルコピーを行う。また、常にコピー先のレジューム再生位置を指定したデジタルコピーを行ってもよい。
次に、レジューム再生位置の指定処理について説明する。図18は、BD−Jアプリケーションによるデジタルコピーモジュールへのレジューム再生位置の指定処理を示すフローチャートである。本図に示されるようにまず、BD−Jアプリケーションは、現在の再生時刻情報をPSRセット421のPSR(8)もしくはバックアップレジスタPSR(28)から再生時刻情報を取得する(ステップS201)。本編がHDMVモードであれば、レジュームポイントはバックアップレジスタであるPSR(28)に設定されるため、PSR(28)の再生時刻情報を取得する。一方、本編がBD−Jモードの場合は、バックアップレジスタが利用されないため、PSR(8)に格納されている現在の再生時刻情報を取得する。
再生時刻情報の取得後、BD−Jアプリケーションは、PSRセット421から取得した再生時刻情報の値をミリ秒単位に変換する(ステップS202)。PSR(8)またはPSR(28)から取得される再生時刻情報が45kHzクロック単位であるのに対して、コピー先のMGR_DATAに指定するレジューム再生位置がミリ秒単位であるため、この単位変換処理が必要となる。
単位変換処理後、BD−Jアプリケーションは、デジタルコピーモジュールにレジューム再生位置を指定する(ステップS203)デジタルコピーモジュールへのレジューム再生位置の指定には、SET_RESUMEコマンドを用いる。SET_RESUMEコマンドで指定されたレジューム再生位置は、デジタルコピー実施時に、コピー先メディアの管理ファイルMGR_DATAに再生位置情報として記録される。なお、SET_RESUMEコマンドはNOT_INIT状態以外であれば、いつでも呼び出すことが可能である。ただし、コピー先SDメモリーカードのMGR_DATAに反映されるタイミングは、復号鍵書込み後、すなわちCOMPLETED状態への遷移時となる。もし、すでにCOMPLETED状態でSET_RESUMEコマンドを呼び出した場合は、SET_RESUMEコマンドで指定したレジューム再生位置が即座にコピー先メディアのMGR_DATAに反映されることになる。以上が、BD−Jアプリケーションによるデジタルコピーモジュールへのレジューム再生位置の指定処理についての説明である。続いて、上記処理により指定されたレジューム再生位置を用いたデジタルコピー処理について説明する。
図19は、デジタルコピーモジュールにおけるデジタルコピー処理を示すフローチャートである。本図に示されるとおり、デジタルコピーモジュール424は、まず挿入されているディスク上に携帯端末向け保護コンテンツが存在するかどうかを確認する(ステップS301)。携帯端末向け保護コンテンツは、ディスク上のルートディレクトリ直下の"EMOVE"ディレクトリの配下に記録されている。デジタルコピーモジュール424は、この"EMOVE"ディレクトリが存在するかどうかで、ディスク上に携帯端末向け保護コンテンツが存在するかどうかを判断する。なお、"EMOVE"ディレクトリの有無で判断するのではなく、他に携帯端末向け保護コンテンツの存在を示すファイルを予め決めておき、そのファイルの有無でディスク上に携帯端末向け保護コンテンツが存在するかどうかを判断してもよい。
携帯端末向け保護コンテンツが存在しなかった場合(ステップS301,NO)は、デジタルコピープロセスを中断する。携帯端末向け保護コンテンツが存在する場合(ステップS301,YES)、デジタルコピーモジュール424はデジタルコピーソケットコマンド用通信ポートを指定してサーバソケットを作成する(ステップS302)。携帯端末向け保護コンテンツが存在する場合のみサーバソケットを作成する理由は、常にサーバソケットを開いた状態にしておくと、無駄にポートを空けている時間が長くなり、不必要なリソースを消費するということと不正アプリケーションからの攻撃の恐れがあるということから、ポートを開いている時間は極力短時間にするのが望ましい。そのため、ステップS301で携帯端末向け保護コンテンツが存在する場合のみ、サーバソケットを作成し、ポートを開く。ポートを開く時間を極小化する他の方法としては、BD−Jアプリケーション動作中のみ(すなわち、BD−Jタイトル再生中のみ)サーバソケットを作成しポートを開く、もしくはBD−Jアプリケーションからポートオープンの命令を受け取ってからポートを開く等が考えられる。ポートオープン命令はポートが閉じられた状態で行われることになるので、BD−Jアプリケーションからポートオープンの命令を受け取るには、ポート通信以外の方法で受け取らなければならない。そのためにAPIを追加するというのであれば、本発明の趣旨と矛盾する(本発明の趣旨は互換性維持のため一切のAPI追加を行わないということである)ため、APIの追加なしで命令を受け取る必要がある。ポートオープンの命令を示す案としては、例えば、汎用のシステムプロパティAPIを用い、BD−Jアプリケーションから、予め決められたプロパティにある値がセットされたとき、もしくは汎用レジスタの中から、ある一つに対して予め決められた値がセットされたときに、ポートオープンの要求がなされたとみなすことができる。システムプロパティAPIを用いる場合は例えば、"digitalcopy.portstatus"というプロパティ名を用意しておき、そのプロパティ名の示す値に"OPEN"を設定すると、ポートを開くという手段が考えられる。
デジタルコピーモジュール424は、ステップS302でサーバソケットを作成し、デジタルコピーソケットコマンド用通信ポートを開くと、そのポートに対してBD−Jアプリケーション(デジタルコピーライブラリを含む)が接続してくるのを待つ(ステップS303)。BD−Jアプリケーションからの接続要求は図14で説明したように、予め決められたコマンド文字列(もしくはバイナリデータでも良い)をデジタルコピーモジュールとBD−Jアプリケーション(デジタルコピーライブラリ)間で相互に交換し、お互いが送り合うデータが期待値と一致しているかどうか、相互確認できたところで完了する。当然ながら、お互いが送り合うデータが期待値と一致していなかった場合は、不正とみなし、以後の処理を中断する(ステップS304)。
ステップS304でデジタルコピーモジュールはBD−Jアプリケーションとの接続に成功したと判断した場合、次にBD−Jアプリケーションからデジタルコピーのコピー先候補のリスト(再生装置がサポートしているコピー先メディア一覧)を要求してくるのを待ち、通信ポートを介してその要求を受け取ると、この再生装置において携帯端末向け保護コンテンツのコピー先としてサポートしているメディアの確認を行う(ステップS305)。携帯端末向け保護コンテンツのコピー先としてサポートしているメディアがなければ(ステップS305,NO)デジタルコピーを中断する。サポートしているメディアがあれば(ステップS305,YES)、そのメディアのリストを同じく通信ポートを介してBD−Jアプリケーションに送信する(ステップS306)。デジタルコピーモジュールはこの時点で空き容量が不足しているかどうかを先行して判断することができるが、ステップS306で返すメディアのリストには空き容量が不足しているメディア及びまだ挿入されていないメディアも含めてBD−Jアプリケーションに渡す。理由は、空き容量が不足しているものを除いて渡してしまうと、再生装置がサポートしていないから、リストにないのか空き容量が不足しているからリストにないのかの判断がつかないためである。再生装置はサポートしているが、空き容量が不足している場合はユーザがそのメディア上の不要ファイルを削除するなどして空き容量を確保するという選択を取ることができるため、ステップS306で返すリストには空き容量が不足しているものも含めるのが望ましい。同様の理由でリストには未挿入メディアも含めておけば、メディアの挿入し忘れをユーザに通知することができる。なお、空き容量が不足している、もしくはメディアが未挿入であると予め判断できたメディアには、空き容量が不足している、もしくはメディアが未挿入であるというマーク(もしくはフラグ)をつけてもよい。
次に、BD−Jアプリケーションは得られたコピー先候補のリストをユーザに提示し、ユーザが選んだメディアをデジタルコピーモジュールに通知する(ステップS307)。そしてデジタルコピーモジュールは、選択されたメディアにコピーを行うための十分な空き容量があるかどうか、及び残コピー回数が残っているかどうかを確認する(ステップS308)。空き容量がない、もしくは残コピー回数が残っていない場合(ステップS308,NO)、デジタルコピーモジュールは、BD−Jアプリケーションに容量不足もしくは残コピー回数がない旨を通知する。残コピー回数の確認はデジタルコピーサーバへの問い合わせが必要となる。BD−Jアプリケーションは容量不足の通知をデジタルコピーモジュールから受け取った場合は、再度ステップS307に戻り、別のメディアの選択を行わせるか、ユーザに不要ファイルの削除を促す、もしくは同一種類のメディアでより容量の大きいものに交換する等のメッセージを表示する。なお、ステップS308の空き容量確認は、コピー先メディアのユーザ領域だけでなく、保護領域の空き容量も確認する必要がある。保護領域にすでに他のコンテンツ復号鍵が書き込まれており、復号鍵を追加で書き込む余地がなければ、ユーザ領域に空きがあったとしても、容量不足の通知をBD−Jアプリケーションに通知する必要がある。万一、保護領域の空き容量チェックを怠った場合は、デジタルコピープロセスの最後のステップである復号鍵の書き込み時点で失敗することになり、ユーザにとっては時間のロスとなるばかりか、デジタルコピーサーバから復号鍵のダウンロードが完了しているために最悪の場合コピー権利を無駄に一つ消費してしまうことになりかねない。よって、ステップS308の空き容量確認は、ユーザ領域だけでなく保護領域の空き容量チェックも不可欠である。
ステップS308で残コピー回数が残っており、かつコピー先のメディアに十分な空き容量があると判断できれば(ステップS308,YES)、デジタルコピーモジュールはディスク上の携帯端末向け保護コンテンツを指定されたメディアへコピーする(ステップS309)。この間、BD−Jアプリケーションはデジタルコピーモジュールにコピーの進捗を問い合わせることで、現在のコピー進捗を把握することができ、コピー進捗状況をユーザに表示することができる。
携帯端末向け保護コンテンツのデータコピーが完了すると、デジタルコピーモジュールは携帯端末向け保護コンテンツを復号するための復号鍵をデジタルコピーサーバから取得する(ステップS310)。具体的には、デジタルコピーモジュールは、シリアルID,コンテンツID,メディアID,MKBの4つのデータをネットワークI/Fを介してデジタルコピーサーバに送信する。デジタルコピーサーバは、サーバが持つ秘密鍵を元にコピー先メディアで携帯端末向け保護コンテンツを復号するための復号鍵をサーバ側で作成する。そして、デジタルコピーモジュールは、サーバ側で作成された復号鍵を取得する。その後デジタルコピーモジュールは、コピー先の保護領域に取得した復号鍵の書込みを行う(ステップS311)。なお、デジタルコピーサーバへの接続URLは再生装置が保有する固定のものを利用してもよいし、BD−Jアプリケーションから指定されたURLを用いても良い。デジタルコピーサーバはコンテンツ提供者毎、地域毎に異なるサーバになる可能性がある。よって、BD−Jアプリケーションから通信ポートを介して指定されたURLを使ってデジタルコピーサーバへ接続するのが望ましい。
復号鍵の書き込み後、デジタルコピーモジュールは、SET_RESUMEコマンドによりBD−Jアプリケーションからレジューム再生位置がセットされているか確認する(ステップS312)。BD−Jアプリからレジューム再生位置が指定されている場合(ステップS312,YES)、デジタルコピーモジュールは、コピー先のメディアの管理ファイルMGR_DATAに、BD−Jアプリケーションにより指定されたレジューム再生位置を上書きする(ステップS313)。BD−Jアプリケーションからレジューム再生位置が指定されていない場合(ステップS312,NO)、MGR_DATAの上書きは行わず、デジタルコピー処理を終了する。
このように、SET_RESUMEコマンドは、NOT_INIT状態以外であれば、いつでも呼び出すことが可能であるが、SET_RESUMEコマンドにより指定されたレジューム再生位置がコピー先のメディアに反映されるのは、復号鍵書き込み後のCOMPLETED状態への遷移時となる。また、COMPLETED状態でSET_RESUMEコマンドを呼び出した場合は、SET_RESUMEコマンドで指定したレジューム再生位置が即座にコピー先SDメモリーカードのMGR_DATAに反映されることになる。
以上のように本実施形態によれば、ディスク上のBD−Jアプリケーションから、PSRセットから再生時刻情報を読み出し、既存のAPIとしてサポートされている通信用プログラミングインターフェイスを用いてソケット接続を行い、ソケット接続を通じて、読み出したレジューム情報に基づく再生位置をコピー制御部に指定し、携帯端末向けデジタルストリームのコピーの制御を行うので、一切のAPI追加なしで、再生装置で中断した位置を引き継いだ携帯端末向けコンテンツのコピーという特殊機能の制御をBD−Jアプリケーションから制御することができる。
(実施の形態2)
実施の形態1では、APIを追加せず、再生装置で中断した位置を引き継いだ携帯端末向けコンテンツのコピーという特殊機能の制御をBD−Jアプリケーションから制御することを可能とする構成について述べたが、ディスク上のアプリケーションが制御できる範囲が拡大するとセキュリティの懸念が生まれてくるため、実施の形態2では、よりセキュリティを強化した実施の形態の変形例について説明する。なお、実施の形態2では前述の実施の形態1と同様の部分は省略し、実施の形態1との変更点のみを記載している。記載していない部分は実施の形態1と同様と捉えてよい。
図18は従来におけるアプリケーションの署名検証を示す図である。BD−Jアプリケーション701が正当かどうかの検証は、BD−Jアプリケーションを構成するJARファイル内に記録されたデジタル署名とディスク上のルート証明書(discroot.crt)を元に署名検証を行うことで成される。具体的にはJARファイル内のデジタル署名をルート証明書を元に復号して得られるハッシュ値と、JARファイルを構成する個々のクラスファイルのハッシュ値が一致しているかどうかを確認し、一致していればJARファイルは正当であり、一致していなければ何らかの不正があったとみなされる。しかしながら、この検証方法では、ルート証明書とJARファイル内のデジタル署名の両方が対になっていれば、検証にパスするので、正当なルート証明書を保有するコンテンツ提供者が不正にJARファイルを作成した場合は、それを検知する術はなく、実施の形態1で述べたように、再生装置の固有機能を開放してしまうと、正当なルート証明書を保有する全てのコンテンツ提供者は自由に再生装置の固有機能を利用できてしまうことになる。
図19は、再生装置が保有するデジタル証明書をベースとした署名検証を示す図である。BD−Jアプリケーションを構成するJarファイル内にディスク上のルート証明書をベースとしたデジタル署名に加え、再生装置固有のデジタル証明書をベースとしたデジタル署名も付与する。具体的にはJarファイル内に格納された個々のクラスファイルのハッシュ値がリスト化されたマニフェストファイル(MANIFIEST.MF)のハッシュ値を、再生装置固有のデジタル証明書に対応した秘密鍵で暗号化した値を再生装置固有のデジタル署名としてJarファイル内に記録する。再生装置側では、従来のルート証明書をベースとした署名検証に加え、再生装置固有の証明書をベースとした署名検証も実施する。
図20は、署名検証の結果に応じた機能制限を示す図である。再生装置固有の機能をBD−Jアプリケーションから呼び出すためには、従来のルート証明書をベースとしたデジタル署名だけでは不十分であり、加えて再生装置固有のデジタル署名を用意しなければならない。再生装置固有のデジタル署名は、再生装置固有の証明書に対応した秘密鍵がなければ作成できないため、第三者が不正に再生装置固有のデジタル署名を用意して、再生装置固有の機能を悪用するということを防ぐことができる。しかも、たとえ再生装置固有のデジタル署名検証に失敗したとしても、従来の共通機能の呼び出しに関しては何ら影響を与えることはないので、共通機能部分に関しては互換性を保つことができる。
図21は、装置固有機能を利用するため接続要求時における処理のフローチャートである。本フローチャートは実施の形態1におけるステップS303に対応しており、セキュリティ面で強化されている点が異なる。まず、デジタルコピーモジュールは接続要求を行っているBD−Jアプリケーションに装置固有のデジタル署名が付与されているかどうかを判断する(ステップS401)。装置固有のデジタル署名が付与されていなければ、接続要求を拒否し、以降の通信ポートを介した要求には再生装置は何も応じない、もしくはポートを閉じて一切の通信を拒否してもよい。
ステップS401で装置固有のデジタル署名が付与されていると判断できた場合、再生装置は各クラスファイルのハッシュ値の取得を行う(ステップS402)。各クラスファイルのハッシュ値はJarファイルのマニフェストファイルに記載されているため、それらのハッシュ値がリスト化されているマニフェストファイルのハッシュ値を計算するだけでもよい。
次に再生装置が持つ固有のデジタル証明書を用いて、BD−Jアプリケーションに付与された装置固有のデジタル署名を復号し、デジタル署名に記されたハッシュ値を導き出す(ステップS403)。そして、ステップS402とステップS403で取得されたハッシュ値が一致していれば、デジタル署名は正しく付与されていると判断し、一致していなければ、不正なデジタル署名であると判断する(ステップS404)。不正なデジタル署名と判断した場合、ステップS401でデジタル署名が付与されていなかった場合と同様、以降は通信ポートを介した再生装置固有の機能呼び出しには全く応じないことになる。
デジタル署名が正しいと判断すると、暗号化通信路の生成を行う(ステップS405)。具体的には、再生装置が持つデジタル証明書をBD−Jアプリケーション側に送り、BD−Jアプリケーションは送られてきたデジタル証明書で暗号化通信ソケット(SSLソケット)を作成する。通常のソケット(例えばソケットコマンドおよびその応答)は暗号化されず非暗号でデータがやりとりされるが、SSLソケットは送られてきたデジタル証明書で暗号化してデータをやりとりすることになる。すなわち、通信ポートを介した再生装置とBD−Jアプリケーション間の相互にやりとりするデータは通信路上において全て暗号化されることになる。なお、SSLソケット作成用に再生装置がBD−Jアプリケーションに送るデジタル証明書(サーバ証明書)は、装置固有機能を利用するために用いられるデジタル証明書とは別にしてもよい。この場合、再生装置は暗号化通信用と固有機能用の2種類のデジタル証明書を用意する。
加えて、再生装置の不正を防ぐために、BD−Jアプリケーション側で再生装置から送られてくるサーバ証明書の正当性を検証してもよい。例えば、無秩序にコピー可能な再生装置が出回る恐れもあるため、BD−Jアプリケーション側でも再生装置の正当性を検証するのが望ましい。再生装置から送られてくるサーバ証明書を検証し、もしそのサーバ証明書がブラックリストに載っていれば、その再生装置ではデジタルコピー等の実施をBD−Jアプリケーション側で止めることができる。
以上、再生装置側はBD−Jアプリケーションに付与されたデジタル署名を、BD−Jアプリケーション側は再生装置から送られてくるサーバ証明書を検証し、かつ、通信ポートを介したデータのやりとりはSSLによる暗号化が施されるため、不正なBD−Jアプリケーション、不正な再生装置を排除し、かつ通信路上のデータを不正取得・利用とするハッカーからの攻撃を防ぐことができる。
(実施の形態3)
実施の形態1〜2では、コピー元とコピー先の記録媒体が異なるケースについてデジタルコピーを実施するための構成について述べたが、実施の形態3では、コピー元とコピー先の記録媒体が同一の場合における実施の形態について説明する。なお、実施の形態3では前述の実施の形態1〜2と同様の部分は省略し、実施の形態1〜2との変更点のみを記載している。記載していない部分は実施の形態1〜2と同様と捉えてよい。
図24はコピー元とコピー先が同一記録媒体におけるデジタルコピーを示す図である。コピー元とコピー先が同一になるケースの一つとして、対象となる携帯端末向け保護コンテンツがBD−ROM上に存在せず、BD−Jアプリケーションが外部ネットワークを経由してサーバから携帯端末向け保護コンテンツをダウンロードすることが考えられる。しかしながら、図6で示したように、追加コンテンツ領域とビデオコンテンツ領域は分けられているため、BD−Jアプリケーションは直接ビデオコンテンツ領域にダウンロードすることはできない。BD−Jアプリケーションが自由にアクセスできる領域はアプリケーションが属するOrganizationと同一のOrganizationディレクトリ以下のみとなる。このようにアクセス範囲が決められているのは別のOrganizationのコンテンツを勝手に抜き取ったり削除したりすることを防ぐためである。したがって、BD−Jアプリケーションは追加で携帯端末向け保護コンテンツをダウンロードする場合、まずはOrganizationディレクトリ以下に一旦格納する。そして、Organizationディレクトリに格納されたデジタルコピーコンテンツを、同一端末間ローカル通信を介して端末固有機能を呼び出し、ビデオコンテンツ領域に移動させるという手順となる。
図25はコピー元とコピー先が同一記録媒体におけるデジタルコピーに対応したフローチャートである。コピー元とコピー先が同一記録媒体となるデジタルコピーにおいては、ステップS301で行っていた、挿入されているディスク上に携帯端末向け保護コンテンツが存在するかどうかを確認するステップは不要となる。なぜならば、ディスク上に携帯端末向け保護コンテンツが存在しなくても対象となる携帯端末向け保護コンテンツがローカルストレージ上に記録されている可能性があるためである。本実施の形態においてポート開放時間を極小化する場合は、携帯端末向け保護コンテンツが存在するかどうかではなく、実施の形態1でも述べたようにBD−Jアプリケーション動作中のみ(すなわち、BD−Jタイトル再生中のみ)ポートを開放する、もしくはBD−Jアプリケーションからポート開放の命令を受け取ってから開放する等の処理を行うことになる。
ステップS304においてBD−Jアプリケーションとの接続に成功した場合、デジタルコピーモジュールは次にBD−Jアプリケーションからコピー対象となる携帯端末向け保護コンテンツの格納位置が指定されるのを待つ(ステップS501)。コピー対象となる携帯端末向け保護コンテンツの格納位置は、メディアの種類を含んだ絶対パスとなる。例えばBD−ROM上であれば、指定される絶対パスは"/mnt/bdrom/EMOVE/DATA01"等になり、ローカルストレージ(SDメモリカード等)上であれば"/mnt/sdcard/BUDA/081A24ED/12345ABC/EMOVE/DATA01"等になる。この場合、"/mnt/bdrom"はBD-ROMメディアのマウントポイントに当たり、"/mnt/sdcard"はSDメモリカードのマウントポイントに当たる。すなわち、BD−Jアプリケーションより指定されるファイルパス情報の中にメディアのマウントポイントを含めることで、デジタルコピーモジュールはコピー対象の携帯端末向け保護コンテンツがどのメディア上にあるのか判断することができる。
ステップS501で取得したコピー対象の位置情報、及びその位置情報から判断できるメディアの種類は、ステップS307において選択されたメディアの種類との比較に用いる(ステップS502)。ステップS501で指定されたメディア(すなわちコピー元のメディア)とステップS307で指定されたメディア(すなわちコピー先のメディア)が同一でなければ、ステップS308で残コピー回数及び空き容量の確認を行い、同一の場合は空き容量の確認をスキップして残コピー回数の確認のみ行う(ステップS503)。デジタルコピーモジュールはステップS503で残コピー回数が残っていると判断した場合、ステップS501で指定されたコピー対象を、同一メディア内のビデオ領域にムーブする(ステップS504)。同一メディア内のムーブの場合、実際のデータコピーは不要であり、ファイルの管理情報書き換えだけで済むため、短時間で処理が終わる。そのため、BD−Jアプリケーションによるユーザへの進捗表示はスキップしてもよい。
なお、本実施例では、同一メディアにおけるデジタルコピーについては、不必要にメディア容量を消費しない、かつデータコピーを短時間で終えることができるという観点からムーブを前提に記載したが、十分な空き容量が存在する場合、またはコピー対象となるコンテンツのサイズが小さい場合は、元となるファイルを残してコピーを行っても良い。
以上の構成によれば、BD−ROM上に予め携帯端末向け保護コンテンツが記録されていなくとも、追加で携帯端末向け保護コンテンツをダウンロードし、かつデジタルコピー処理プロセスの中でコンテンツのムーブを行うことで、デジタルコピーを実施することが可能となる。また、ダウンロードした先とデジタルコピーのコピー先が同一メディアの場合は、不必要に容量を消費せず、かつコピー自体を高速に行うことができる。
(実施の形態4)
本実施形態では、実施の形態1で述べた続き視聴(レジューム再生)についてさらに改良を加えた実施の形態について説明する。なお、実施の形態4では前述の実施の形態1〜3と同様の部分は省略し、実施の形態1〜3との変更点のみを記載している。記載していない部分は実施の形態1〜3と同様と捉えてよい。
図26はオリジナル本編コンテンツとデジタルコピーコンテンツの再生時間軸を示す図である。図26で示すデジタルコピーコンテンツはオリジナル本編コンテンツには存在する一部のシーンが削除され(削除シーン#1、#2)、かつ追加でいくつかのシーンが加えられている(追加シーン#1、#2)。このように実際にデジタルコピーされるコンテンツは、オリジナルコンテンツと全く内容が同じであるとは限らない。例えば、コンテンツ冒頭の新作紹介の内容が、オリジナルコンテンツとデジタルコピーコンテンツで異なっていたり、ディレクターズカットシーンがデジタルコピーコンテンツでは省かれている等が考えられる。実施の形態4では、このようにオリジナルとデジタルコピーコンテンツで内容が異なる場合でも、レジューム再生を可能にする構成について述べる。
図27は、実施の形態4におけるBD−ROM上のディレクトリ、ファイル構造を示す図である。前述の図2で述べた構成との違いは、メディアタイムオフセットテーブル(MTO.XML)が新たに加えられた点である。メディアタイムオフセットテーブルはEMOVEディレクトリ配下のDATAxxディレクトリ("xx"は2桁の可変数字)の中に存在し、デジタルコピーコンテンツに対し、オリジナルコンテンツから削除されたシーン一覧とそれぞれの削除区間,及びデジタルコピーコンテンツに新たに追加されたシーン一覧とそれぞれの追加区間が記されている。削除区間として記載する時刻はオリジナルコンテンツの時間軸上の時刻を、追加区間として記載する時刻はデジタルコピーコンテンツの時間軸上の時刻を記載する。図27の例では、オリジナルコンテンツの時刻t1からt2まで(削除シーン#1)と、時刻t3からt4まで(削除シーン#2)が、デジタルコピーコンテンツでは削除されていることになり、デジタルコピーコンテンツの時刻t'0からt'1まで(追加シーン#1)と時刻t'4からt'5まで(追加シーン#2)が、デジタルコピーコンテンツで新たに追加されたシーンとなる。
図28は、オリジナルコンテンツ上のレジューム再生位置をデジタルコピーコンテンツの時間軸上に変換する処理を示す図である。オリジナルコンテンツ上のレジューム再生位置をtrとすると、デジタルコピーコンテンツ上のレジューム再生位置t'rは、前述のメディアタイムオフセットテーブルに記載されている削除シーン区間と追加シーン区間を加減算することで得られる。具体的にはtrより前に設定されている削除シーンの総時間をtrから減算し、減算されたtrより前に設定されている追加シーンの総時間を加算することでt'rが導かれる。
図29はレジューム再生位置変換処理のフローチャートである。まず、レジューム再生用に割り当てられている再生装置内のレジスタから、オリジナルコンテンツのレジューム再生位置trを取得する(ステップS601)。BD−Jアプリケーションから、オリジナルコンテンツ上のレジューム再生位置指定が事前にあった場合、レジスタの値を使う必要はなく、BD−Jアプリケーションから受け取った値をtrとする。
次にオリジナルコンテンツ上のレジューム再生位置trが削除シーン内に設定されているかどうかを判断し(ステップS602)、削除シーン内の値であれば、削除シーンの開始位置をtrに代入する(ステップS603)。例えば、ステップS601で得られたtrが2000秒として、メディアタイムオフセットテーブルに記載されている削除シーンの一つに1900秒〜2100秒の削除区間の削除シーンが含まれていたとした場合、trに設定されている位置(2000秒)は1900秒〜2100秒の削除区間内にあるため、ステップS603の処理においてtrを削除区間の先頭地点である1900秒に再設定する。このようにtrを削除区間外の値に再設定する理由は、レジューム再生位置が削除区間内にあると、デジタルコピーコンテンツ上では、そのレジューム再生位置は存在しないことになり、以降の変換処理ができなくなるためである。選択肢の一つとして、レジューム再生位置が削除区間内に設定されている場合は、レジューム無効として持ち出し視聴時のレジューム再生は行わずに先頭から再生するということも可能である。本フローチャートでは、可能な限りレジューム再生を行う処理になっており、削除区間内にレジューム再生位置が設定されている場合は、ステップS603においてデジタルコピーコンテンツ上で有効な範囲に再設定するという処理を行っている。
次にステップS601で得られたtr、もしくはステップS603で再設定されたtrを変換後のレジューム再生位置候補t'rに代入する(ステップS604)。この時点では、変換後のレジューム再生位置t'rはまだ確定ではない。ステップS604完了後、trより前に削除シーンが存在するかどうかを確認する(ステップS605)。例えば、trの値が1900秒で、この位置より前の削除区間として、0〜100秒、1000〜1200秒の2区間が存在した場合、2区間の総和(100-0)+(1200-1000)=300秒をt'rから減算する(ステップS606)。ステップS604でtrの値をt'rに代入しているので、減算前のt'rの値がtrと同じ1900秒だとすると、減算後のt'rの値は1600秒となる。
次に、t'rより前に追加シーンが存在するかを確認する(ステップS607)。t'rが、ある追加シーンXの範囲内に位置していた場合は、その追加シーンXはt'rよりも前に存在するとみなす。例えば、t'rの値が1600秒で、追加シーンとして0〜200秒、1500〜1700秒の2区間が存在する場合は、2区間ともt'rよりも前に追加シーンが存在するとみなす。
ステップS607において、t'rよりも前に追加シーンが存在すると判定した場合、それらの追加シーン区間の総和をt'rに加算する(ステップS608)。前述の例と同じく、追加シーンとして0〜200秒、1500〜1700秒の2区間が存在する場合、2区間の総和(200-0)+(1700-1500)=400秒をt'rに加算する。加算後のt'rは2000秒となる。
ステップS608完了後、もう一度t'rと追加シーンの比較を行い、t'rより前にまだ加算されていない追加シーンが存在するかどうかを確認する(ステップS609)。例えば、t'r(2000秒)より前に、追加シーンとして0〜200秒、1500〜1700秒、1900〜2100秒の3区間が存在したとする。なおステップS609においても、ステップS607と同様にt'rが、ある追加シーンXの範囲内に位置していた場合は、その追加シーンXはt'rよりも前に存在するとみなす。つまり1900〜2100秒は、2000秒として設定されているt'rより前に追加シーンが存在すると判定される。0〜200秒、1500〜1700秒、1900〜2100秒の3区間の内、0〜200秒、1500〜1700秒の追加シーンはすでに加算済みであるため、ここでの加算は1900〜2100秒の追加シーンが対象となり、もう一度ステップS608による加算を実施し、t'rの値は2000+(2100-1900)=2200秒となる。
ステップS608、S609を繰り返し、t'rよりも前に未加算の追加シーンがないと判定された時点で、その時点におけるt'rの値を変換後のレジューム再生位置として採用する。
図30はレジューム再生位置変換を行っている様子を示す図である。レジューム再生位置変換処理は、図30(a)のようにBD−Jアプリケーション内で変換処理を行うパターンと図30(b)のように再生装置内で変換処理を行うパターンが存在する。いずれの場合も、再生装置内のPSRセットに格納されている値からレジューム再生位置trを割り出し、図29で示したフローチャートに従って、変換後のレジューム再生位置t'rを算出することが可能である。
まず、BD−Jアプリケーション内でレジューム再生位置の変換処理を行う場合について説明する。図31は、BD−Jアプリケーション内でレジューム再生位置変換処理を行うフローチャートである。本図に示されるようにまず、BD−Jアプリケーションは、現在の再生時刻情報をPSRセット421のPSR(8)もしくはバックアップレジスタPSR(28)から再生時刻情報を取得する(ステップS701)。本編がHDMVモードであれば、レジュームポイントはバックアップレジスタであるPSR(28)に設定されるため、PSR(28)の再生時刻情報を取得する。一方、本編がBD−Jモードの場合は、バックアップレジスタが利用されないため、PSR(8)に格納されている現在の再生時刻情報を取得する。
再生時刻情報の取得後、BD−Jアプリケーションは、PSRセット421から取得した再生時刻情報の値をミリ秒単位に変換する(ステップS702)。PSR(8)またはPSR(28)から取得される再生時刻情報が45kHzクロック単位であるのに対して、コピー先のMGR_DATAに指定するレジューム再生位置がミリ秒単位であるため、この単位変換処理が必要となる。
BD−Jアプリケーションは、ステップS702で得られた時刻を、オリジナルコンテンツ上のレジューム再生位置とし、変数trにセットする(ステップS703)。
次にBD−Jアプリケーションは、ファイルI/Oモジュール705を用い、ディスク上にメディアタイムオフセットテーブルが存在するかどうかの確認を行う(ステップS704)。
メディアタイムオフセットテーブルが存在しない場合(ステップS704,NO)、BD−Jアプリケーションはオリジナルコンテンツ上のレジューム再生位置trをそのままデジタルコピーコンテンツ上のレジューム再生位置として指定する(ステップS705)。レジューム再生位置の指定にはソケットコマンドであるSET_RESUMEコマンドを用いる。
メディアタイムオフセットテーブルが存在すると判断した場合(ステップS704,YES)、BD−Jアプリケーションはメディアタイムオフセットテーブルを読み込む(ステップS706)。
そしてBD−Jアプリケーションは、読み込んだメディアタイムオフセットを用いてオリジナルコンテンツのレジューム再生位置trをデジタルコピーコンテンツのレジューム再生位置t’rに変換する(ステップS707)。ステップS707では、図29で示したフローチャートに基づきレジューム再生位置の変換処理を行い、デジタルコピーコンテンツのレジューム再生位置t’rを導き出す。そして、BD−Jアプリケーションは、ステップS707で算出されたレジューム再生位置t‘rを、SET_RESUMEコマンドを用いデジタルコピーコンテンツ上のレジューム再生位置として指定する(ステップS708)。
なお、レジューム再生位置の指定の際、指定の時刻がオリジナルコンテンツの時間軸上かレジューム再生位置の変換を行ったデジタルコピーコンテンツの時間軸上か再生装置側で判断ができるよう、再生時刻の指定には、どちらの時間軸上かを示すパラメータを用意してもよい。
例えば、以下のように時刻指定と共に時間軸がオリジナルコンテンツかデジタルコピーコンテンツかどちらか選択できるようデジタルコピーライブラリとデジタルコピーモジュール間のプロトコルを決めておく。
SET_RESUME<sp><resumepoint><sp><timebase>
<resumepoint>::=レジューム再生時刻(msec)
<timebase>::= ORIGINAL | DIGITALCOPY
上記プロトコルに従い、"SET_RESUME 1000000 ORIGINAL"というコマンドがデジタルコピーライブラリからデジタルコピーモジュールへ送られてきた場合、レジューム指定時刻はオリジナルコンテンツの時間軸上で1000秒の地点であることを意味し、"SET_RESUME 1000000 DIGITALCOPY"というコマンドがデジタルコピーライブラリからデジタルコピーモジュールへ送られてきた場合、レジューム指定時刻はデジタルコピーコンテンツの時間軸上で1000秒の地点であることを意味する。すなわち、再生装置は時刻と共に指定される<timebase>パラメータの値を確認し、指定の時刻がオリジナルコンテンツの時間軸上か、デジタルコピーコンテンツの時間軸上かを判断することができる。以上が、BD−Jアプリケーション内でレジューム再生位置の変換処理を行う場合について説明である。続いて、デジタルコピーモジュールでレジューム再生位置の変換処理を行う場合について説明する。
図32は、デジタルコピーモジュールでレジューム再生位置の変換処理を行うフローチャートである。本図に示されるとおり、デジタルコピーモジュールはまず、BD−Jアプリケーションからレジューム再生位置の指定があるかどうかを判断する(スタップS801)。BD−Jアプリケーションからのレジューム再生位置の指定には、SET_RESUMEコマンドが用いられる。
BD−Jアプリケーションからのレジューム再生位置の指定がない場合(ステップS801,NO)、デジタルコピーモジュールは、現在の再生時刻情報をPSRセット421のPSR(8)もしくはバックアップレジスタPSR(28)から再生時刻情報を取得する(ステップS802)。再生時刻情報の取得後、デジタルコピーモジュールは、PSRセット421から取得した再生時刻情報の値をミリ秒単位に変換する(ステップS803)。そしてデジタルコピーモジュールは、ステップS803で得られた時刻を、オリジナルコンテンツ上のレジューム再生位置とし、変数trにセットする(ステップS804)。上記のステップS803、S804の処理は、デジタルコピーモジュールが行う点においてステップS702、S703の処理と異なる。
BD−Jアプリケーションからのレジューム再生位置の指定がある場合(ステップS801,YES)、その指定がオリジナルコンテンツの時間軸に基づくものか、デジタルコピーコンテンツの時間軸に基づくものかを判断する(ステップS805)。"SET_RESUME <resumepoint> ORIGINAL"というコマンドがデジタルコピーライブラリからデジタルコピーモジュールへ送られてきた場合、指定のレジューム再生位置はオリジナルコンテンツの時間軸に基づくものである。"SET_RESUME <resumepoint> DIGITALCOPY"というコマンドがデジタルコピーライブラリからデジタルコピーモジュールへ送られてきた場合、指定のレジューム再生位置はデジタルコピーコンテンツの時間軸に基づくものである。
指定されたレジューム再生位置がオリジナルコンテンツの時間軸上である場合(ステップS805,NO)、指定されたレジューム再生位置をオリジナルコンテンツ上のレジューム再生位置を示す変数trにセットする(ステップS806)。指定されたレジューム再生位置がデジタルコピーコンテンツの時間軸上である場合(ステップS805,YES)、指定されたレジューム再生位置をデジタルコピーコンテンツ上のレジューム再生位置を示す変数t'rとする(ステップS807)。
ステップS804、もしくはステップS806により、trにオリジナルコンテンツ上のレジューム再生位置をセットした後、BD−Jアプリケーションからメディアタイムオフセットテーブルの指定があるかどうかを確認する(ステップS808)。
例えば、
SET_OFFSETTABLE "/SD_ROOT /BUDA/081a24ed/12345abc/MyMTO.xml"
等、デジタルコピー通信ポートを介して、事前にメディアタイムオフセットテーブルの指定が行われていれば、指定されたメディアタイムオフセットテーブルを読み込む。指定するメディアタイムオフセットテーブルの位置は、ディスク上、ローカルストレージ上もしくはJARファイル内のいずれでもよい。
BD−Jアプリケーションからメディアタイムオフセットテーブルの指定がある場合(ステップS808,YES)、デジタルコピーモジュールは指定されたメディアタイムオフセットテーブルの読み込みを行う(ステップS809)。
BD−Jアプリケーションからメディアタイムオフセットテーブルの指定がない場合(ステップS808,NO)、対象となるメディアタイムオフセットテーブルがディスク上に存在するかどうか確認する(ステップS810)。具体的には、BD−Jアプリケーションがコピー元として指定したディレクトリにメディアタイムオフセットテーブルが存在するかどうかを確認する。例えば、BD−Jアプリケーションから、
SET_SRCLOCATION "/mnt/bdrom/EMOVE/DATA01"
として、BD−ROM上のルート直下から、"EMOVE/DATA01"の位置をコピー元として指定していた場合、" EMOVE/DATA01"ディレクトリ以下にメディアタイムオフセットテーブル"MTO.XML"が存在するかどうかを確認する。メディアタイムオフセットテーブルが指定ディレクトリに存在する場合(ステップS810,YES)、そのメディアタイムオフセットテーブルを読み込む(ステップS811)。
対象となるメディアタイムオフセットテーブルがディスク上に存在しない場合(ステップS810,NO)、レジューム再生位置変更不要として、オリジナルコンテンツのレジューム再生位置trをそのままデジタルコピーコンテンツのレジューム再生位置として指定する(ステップS812)。
ステップS809、またはステップS813のメディアタイムオフセットの読み込み後、読み込んだメディアタイムオフセットを用いてオリジナルコンテンツのレジューム再生位置trをデジタルコピーコンテンツのレジューム再生位置t'rに変換する(ステップS813)。ステップS813では、図29で示したフローチャートに基づきレジューム再生位置の変換処理を行い、デジタルコピーコンテンツのレジューム再生位置t'rを導き出す。
ステップS807、またはステップS813でt'rを導出した後、デジタルコピーモジュールは、t'rをレジューム再生位置として指定する(ステップS814)。以上が、デジタルコピーモジュールによるレジューム再生位置の変換処理についての説明である。
以上の構成により、オリジナルコンテンツとデジタルコピーコンテンツ間でシーン削除・追加が行われていたとしても、レジューム再生位置変換を行うことで、据え置きの再生装置で途中まで再生していた地点と同等の地点からデジタルコピー後に携帯端末で続き視聴ができるようになる。
(実施の形態5)
本実施形態では、実施の形態1及び実施の形態4で述べた続き視聴(レジューム再生)についての変形例であり、実施の形態1及び実施の形態4では、据え置き再生装置から持ち出し視聴を行うときのレジューム再生について述べたが、本実施形態では、持ち出し視聴から据え置き再生装置での視聴に戻したときに、続き視聴を行う実施の形態について説明する。なお、実施の形態6では前述の実施の形態1〜4と同様の部分は省略し、実施の形態1〜4との変更点のみを記載している。記載していない部分は実施の形態1〜4と同様と捉えてよい。
図33は持ち出し視聴から据え置き視聴に戻したときに続き視聴を行う様子を示す図である。本実施の形態では、外出中はデジタルコピーにより携帯端末で持ち出し視聴を行い、帰宅後は自宅の据え置き再生装置で続きを視聴するというユースケースを実現する実施の形態について述べる。
図34は実施の形態5におけるリムーバブルメディアのファイル構成を示す図である。本実施の形態では、リムーバブルメディアにデジタルコピーコンテンツをコピーする際、加えてBDレジューム情報の書込みを行う。BDレジューム情報は、バックアップレジスタ(PSR(20)からPSR(32))に格納されている値及びレジューム対象タイトルのモードが記載されているレジューム状態格納ファイル(BDRESUME.BDM)と、BD−ROMのBCA内にPMSNと共に記録されているボリュームIDを記録したボリュームID格納ファイル(VOLUMEID.TXT)、及び据え置き再生装置からデジタルコピーで持ち出し視聴を行う際に利用したメディアタイムオフセットテーブル(MTO.XML)の3種類のファイルで構成されている。
PMSNは物理的なシリアル番号を示すのに対し、ボリュームIDは論理的なシリアル番号を示す。すなわち、PMSNはBD−ROMに記録されている内容が同じでも、記録媒体毎に異なる値が割り振られるのに対し、ボリュームIDは記録されている内容が同じであれば、記録媒体が異なっても同じ値が割り振られる。
レジューム状態格納ファイルは、必ずしもバックアップレジスタの値をそのまま記録する必要はなく、BD−Jモード等でBD−Jアプリケーションがレジューム状態を管理している場合、バックアップレジスタのパラメータに相当する値を、再生装置がBD−Jアプリケーションから受け取ることで、レジューム状態格納ファイルの作成を行うことになる。図35はレジューム状態格納ファイルに格納されるパラメータ一覧と値の一例を示している。格納される内容はバックアップレジスタ(PSR(20)からPSR(32))のパラメータに加え、タイトルのモードが含まれている。レジューム対象のタイトルがHDMVモードであれば、バックアップレジスタの内容がそのまま格納されることになり、レジューム対象のタイトルがBD−Jモードであれば、BD−Jアプリケーションから、レジューム状態格納ファイルに格納すべき値を取得することになる。
メディアタイムオフセットテーブルは、据え置き再生装置から持ち出し視聴を行う際のデジタルコピーに利用したものが記録され、もしメディアタイムオフセットテーブルをデジタルコピー時に利用していなければ、MTO.XMLは作成されないことになる。
これらレジューム状態格納ファイルとボリュームID格納ファイル、及びメディアタイムオフセットテーブルはBDレジューム情報として、デジタルコピーコンテンツが格納されるディレクトリと対になるディレクトリ位置にデータコピー時に書き込まれる。具体的には、プログラムディレクトリ名が同じになる位置に書き込まれることになり、例えばデジタルコピーコンテンツが"/mnt/sdcard/SD_VIDEO/PRG001"に格納される場合は、プログラムディレクトリ名は"PRG001"なので、SD_VIDEOディレクトリとは異なるディレクトリ("/mnt/sdcard/PRIVATE/DCOPY"等)に同じプログラムディレクトリ名"PRG001"が作られ、そのディレクトリの中にBDレジューム情報が格納される。
図36はBD−ROM再生要求受付からAV再生ライブラリによる再生が開始されるまでのフローチャートである。まず、BD−ROM再生要求を受け付けると、リムーバブルメディアが挿入済みかどうかを確認する(ステップS901)。リムーバブルメディアが挿入されていなければ、通常再生を開始する。
ステップS901でリムーバブルメディアが挿入されていることを確認すると、続いて現在挿入中のBD−ROMに対応するBDレジューム情報がリムーバブルメディア上に存在するかを確認する(ステップS902)。具体的には、現在挿入中のBD−ROMのボリュームIDに一致するボリュームIDが記載されているBDレジューム情報をリムーバブルメディア上から検索する。ボリュームIDが一致するBDレジューム情報が見つからなかった場合は、通常再生を開始する。
ステップS902において、現在挿入中のBD−ROMと一致するボリュームIDが記載されたBDレジューム情報があると判断した場合、そのBDレジューム情報の中にメディアタイムオフセットテーブルが存在するかどうかを確認する(ステップS903)。
ステップS903においてメディアタイムオフセットテーブルが存在すると判断した場合は、BDレジューム再生位置変換を行う(ステップS904)。
ステップS904におけるBDレジューム再生位置変換後、もしくはステップS903においてメディアタイムオフセットテーブルが存在しないという判断の後、BDレジューム情報に含まれるレジューム状態格納ファイルに記載されているタイトルモードを確認し、レジューム対象タイトルがHDMVモードかBD−Jモードかの判断を行う(ステップS905)。
ステップS905において、レジューム対象タイトルがHDMVモードであると判断した場合、BDレジューム情報のレジューム状態格納ファイルに記載されている内容をレジスタ(PSR(0)からPSR(12))にセットし、かつ、ステップS904においてレジューム再生位置が変換されていれば、変換されたレジューム再生位置をPSR(8)にセットする(ステップS906)。レジスタへのセットが完了した後、HDMVタイトルのレジューム再生を開始する。
ステップS905において、レジューム対象タイトルがBD−Jモードであると判断した場合、BDレジューム情報のレジューム状態格納ファイルに記載されている内容、及びステップS904においてレジューム再生位置が変換されていれば変換されたレジューム再生位置をBD−Jアプリケーションに通知し、再生装置から受け取ったレジューム情報を元にBD−Jアプリケーション側でレジューム再生の開始を行う(ステップS907)。
図37は、図36のフローチャートで述べたステップS904のBDレジューム再生位置変換のフローチャートである。基本的には、図29で述べたレジューム再生位置変換処理とは逆の処理を行うことで、デジタルコピーコンテンツ上のレジューム再生位置t'rから、オリジナルコンテンツ上のレジューム再生位置trを導き出すことが可能である。
まず、現在挿入中のBD−ROMと一致するボリュームIDが記載されたBDレジューム情報に対応するデジタルコピーコンテンツを特定し、特定されたデジタルコピーコンテンツのシナリオファイルから、デジタルコピーコンテンツ上のレジューム再生位置t'rを取得する(ステップS1001)。デジタルコピーコンテンツの特定は、BDレジューム情報が格納されているディレクトリ名と同じプログラムディレクトリ名のデジタルコピーコンテンツを探し出すことで成される。例えば、BDレジューム情報が格納されているディレクトリが、"/mnt/sdcard/PRIVATE/DCOPY/PRG001"であれば、PRG001というプログラムディレクトリ名のデジタルコピーコンテンツ"/mnt/sdcard/SD_VIDEO/PRG001"が対応するデジタルコピーコンテンツとなる。
次にデジタルコピーコンテンツ上のレジューム再生位置t'rが、メディアタイムオフセットテーブルに列挙されている追加シーン内に設定されているかどうかを判断し(ステップS1002)、追加シーン内の値であれば、追加シーンの開始位置をt'rに代入する(ステップS1003)。例えば、ステップS1001で得られたt'rが2000秒として、メディアタイムオフセットテーブルに記載されている追加シーンの一つに1900秒〜2100秒の追加区間の追加シーンが含まれていたとした場合、t'rに設定されている位置(2000秒)は1900秒〜2100秒の追加区間内にあるため、ステップS1003の処理においてt'rを追加区間の先頭地点である1900秒に再設定する。このようにt'rを追加区間外の値に再設定する理由は、レジューム再生位置が追加区間内にあると、オリジナルコンテンツ上では、そのレジューム再生位置は存在しないことになり、以降の変換処理ができなくなるためである。選択肢の一つとして、レジューム再生位置が追加区間内に設定されている場合は、レジューム無効として据え置き視聴に戻ったときのレジューム再生は行わずに先頭から再生するということも可能である。本フローチャートでは、可能な限りレジューム再生を行う処理になっており、追加区間内にレジューム再生位置が設定されている場合は、ステップS1003においてオリジナルコンテンツ上で有効な範囲に再設定するという処理を行っている。
次にステップS1001で得られたt'r、もしくはステップS1003で再設定されたt'rを変換後のレジューム再生位置候補trに代入する(ステップS1004)。この時点では、変換後のレジューム再生位置trはまだ確定ではない。
ステップS1004完了後、t'rより前に追加シーンが存在するかどうかを確認する(ステップS1005)。例えば、t'rの値が1900秒で、この位置より前の追加区間として、0〜100秒、1000〜1200秒の2区間が存在した場合、2区間の総和(100-0)+(1200-1000)=300秒をtrから減算する(ステップS1006)。ステップS1004でt'rの値をtrに代入しているので、減算前のtrの値がt'rと同じ1900秒だとすると、減算後のtrの値は1600秒となる。
次に、trより前に削除シーンが存在するかを確認する(ステップS1007)。trが、ある削除シーンXの範囲内に位置していた場合は、その削除シーンXはtrよりも前に存在するとみなす。例えば、trの値が1600秒で、削除シーンとして0〜200秒、1500〜1700秒の2区間が存在する場合は、2区間ともtrよりも前に削除シーンが存在するとみなす。
ステップS1007において、trよりも前に削除シーンが存在すると判定された場合、それらの削除シーン区間の総和をtrに加算する(ステップS1008)。前述の例と同じく、削除シーンとして0〜200秒、1500〜1700秒の2区間が存在する場合、2区間の総和(200-0)+(1700-1500)=400秒をtrに加算する。加算後のtrは2000秒となる。
ステップS1008完了後、もう一度trと削除シーンの比較を行い、trより前にまだ加算されていない削除シーンが存在するかどうかを確認する(ステップS1009)。例えば、tr(2000秒)より前に、削除シーンとして0〜200秒、1500〜1700秒、1900〜2100秒の3区間が存在したとする。なおステップS1009においても、ステップS1007と同様にtrが、ある削除シーンXの範囲内に位置していた場合は、その削除シーンXはtrよりも前に存在するとみなす。つまり1900〜2100秒は、2000秒として設定されているtrより前に削除シーンが存在すると判定される。0〜200秒、1500〜1700秒、1900〜2100秒の3区間の内、0〜200秒、1500〜1700秒の削除シーンはすでに加算済みであるため、ここでの加算は1900〜2100秒の削除シーンが対象となり、もう一度ステップS1008による加算を実施し、trの値は2000+(2100-1900)=2200秒となる。
ステップS1008、S1009を繰り返し、trよりも前に未加算の削除シーンがないと判定された時点で、その時点におけるtrの値を変換後のレジューム再生位置として採用する。
以上の構成により、デジタルコピーにより、据え置き再生装置での視聴から持ち出し視聴へ移行したときのみならず、持ち出し視聴から据え置き再生装置での視聴に戻したときにも、続き視聴(レジューム再生)が可能となる。
(実施の形態6)
本実施形態では、多言語に対応したデジタルコピーについての実施の形態について説明する。なお、実施の形態6では前述の実施の形態1〜5と同様の部分は省略し、実施の形態1〜5との変更点のみを記載している。記載していない部分は実施の形態1〜5と同様と捉えてよい。
図38は実施の形態6におけるBD−ROMのファイル構成を示す図である。DATA01ディレクトリには、英語音声、日本語字幕のデジタルコピーコンテンツが格納されており、DATA02ディレクトリには、日本語音声、字幕なしのデジタルコピーコンテンツが格納されている。EMOVEディレクトリ直下に存在するLANG.XMLはそれぞれのデジタルコピーコンテンツがどの言語に対応したものであるかを示す言語テーブルが記録されたファイルである。
図39は言語テーブルの一例を示す図である。言語テーブルには、デジタルコピーコンテンツの格納位置と、それぞれのコンテンツがどの言語に対応しているかの情報が記されている。格納位置は、BD−ROM上以外にもローカルストレージ上のディレクトリを指し示すことができる。BD−ROM上のディレクトリを指し示すときは、BD−ROMのルートディレクトリからの相対パスを、ローカルストレージ上のディレクトリを指し示すときは、CertIDディレクトリからの相対パスを記載する。記載されている相対パスがBD−ROM上のものか、ローカルストレージ上のものか判断ができるよう、それぞれの相対パスには加えてストレージの種類(BD or LS)も記載する。言語情報には、それぞれのコンテンツが含んでいる音声及び字幕言語の種類が記されている。
図40は、追加言語のデジタルコピーコンテンツをローカルストレージにダウンロードする様子を示す図である。最初からBD−ROM上に多数のデジタルコピーコンテンツを格納するとなると、BD−ROMの容量をデジタルコピーコンテンツが占める割合が多くなってしまい、オリジナルコンテンツに避ける割合が少なくなってしまう。オリジナルコンテンツに避ける割合が少なくなると、ストリームのビットレートを下げる等、コンテンツの品質低下を招いてしまう恐れがある。そのため、BD−ROM上には最低限の言語に対応したデジタルコピーコンテンツを置いておき、必要であれば追加でデジタルコピーコンテンツをダウンロードする形態が望ましい。
追加でデジタルコピーコンテンツをダウンロードするときは、加えて更新版言語テーブルもダウンロードする。例えば、BD−ROM上には英語版と日本語版のデジタルコピーコンテンツが存在し、ローカルストレージに新たに韓国語版をダウンロードする場合、韓国語版を加えた更新版言語テーブルをダウンロードする。
図41は、本実施の形態における多言語に対応したデジタルコピーの様子を示す図である。本図に示されるように、デジタルコピーモジュールは、BD−ROMまたはリムーバブルメディアの追加コンテンツ領域に格納されたデジタルコピーコンテンツを、リムーバブルメディアのビデオ領域にコピーする。
コピー対象となる言語のコンテンツは、BD−Jアプリケーションまたはデジタルコピーモジュールが、PSRセット421に格納されている再生状態を示すシステムパラメータと言語テーブルに基づき選択する。具体的には、音声ストリーム用言語コードを示すPSR(16)、字幕ストリーム用言語コードを示すPSR(17)、メニュー用言語コードを示すPSR(18)を読み出し、各言語コードに対応する言語のコンテンツを、言語テーブルを参照して選択する。
図42は、本実施の形態におけるコピー対象のコンテンツの選択の様子を示す図である。コピー対象のコンテンツの選択は、図42(a)に示すように、BD−Jアプリケーション内で言語テーブルおよびPSRセット421を参照して、所望の言語に対応したコンテンツの格納位置を特定し、デジタルコピーモジュールにSET_SRCLOCATIONコマンドを用いてコンテンツの格納位置を指定するパターンと、図42(b)に示すように、BD−Jアプリケーションで、デジタルコピーモジュールにデジタルコピーに利用する言語テーブルを指定し、デジタルコピーモジュールが指定された言語テーブルとPSRセット421を参照して、所望の言語に対応したコンテンツの格納位置を特定し、デジタルコピーを行うパターンが存在する。
BD−Jアプリケーションによるデジタルコピーモジュールに対する言語テーブルの指定には、例えば以下のようなコマンドを用いる。
SET_LANGTABLE "/mnt/sdcard/BUDA/081A24ED/12345ABC/DIGITALCOPY/NEW_LANG.XML"
上記コードは、SDカード上の"BUDA/081A24ED/12345ABC/DIGITALCOPY/NEW_LANG.XML"に記録されている言語テーブルを用いてデジタルコピーを行うよう要求する命令となる。デジタルコピーモジュールは、指定された言語テーブルと、PSRセット421に格納されている言語設定を比較し、コピーすべきデジタルコピーコンテンツの割り出しを行う。例えばPSRセット421に格納されている言語設定が英語であれば、英語版コンテンツを、言語設定が日本語であれば、日本語版コンテンツをデジタルコピー対象としてコピーすることとなる。
まず、図42(a)に示した多言語に対応したデジタルコピーのパターンについて説明する。図43は、BD−Jアプリケーションによるコピー対象のコンテンツ選択のフローチャートである。BD−Jアプリケーション側においてコピーすべきデジタルコピーコンテンツの選択を行う際は、まずBD−JアプリケーションはファイルI/Oモジュール705を用い、言語テーブルが存在するかどうかの確認を行う(ステップS1101)。言語テーブルは、BD−ROMまたはリムーバルメディアから探索する。追加でデジタルコピーコンテンツをリムーバルメディアにダウンロードした場合は、リムーバルメディアに存在する更新版言語テーブルを探索する。言語テーブルが存在しない場合、デジタルコピーコンテンツと対応言語とのマッピングができないため、BD−Jアプリケーションは、コピー可能なデジタルコピーコンテンツ一覧をユーザに提示し、ユーザからの選択指示を待つこととなる(ステップS1102)。ユーザからの選択指示があれば、選択されたデジタルコピーコンテンツを、コピーの対象とする(ステップS1103)。
ステップS1101で言語テーブルが存在すると判断した場合、BD−JアプリケーションはファイルI/Oモジュール705を用い、言語テーブルを読み込む(ステップS1104)。次にBD−Jアプリケーションは、ユーザが再生装置に設定している言語情報をPSRセット421から取得する(ステップS1105)。PSRセット421からは、PSR(16)より音声ストリーム用言語コードを、PSR(17)より字幕ストリーム用言語コードを、PSR(18)よりメニュー用言語コードを取得することができる。
次に、ステップS1104において読み込んだ言語テーブルとPSRセット421に格納されている言語設定との比較を行う。まずは、PSR(16)に格納されている音声ストリーム用言語コードと言語テーブルに記載の音声言語の一致確認、及びPSR(17)に格納されている字幕ストリーム用言語コードと言語テーブルに記載の字幕言語の一致確認を行い、音声・字幕の両方の言語が一致するデジタルコピーコンテンツを検索する(ステップS1106)。両方が一致していない場合は、音声もしくは字幕言語のいずれかが一致しているデジタルコピーコンテンツを検索する(ステップS1107)。音声もしくは字幕のいずれも一致していない場合は、PSR(18)のメニュー用言語コードと言語テーブルに記載の字幕言語もしくは音声言語が一致するデジタルコピーコンテンツを検索する(ステップS1108)。
ステップS1106〜S1108において、PSRセット421の設定と言語テーブルに記載の言語が一致するデジタルコピーコンテンツが見つかれば、そのデジタルコピーコンテンツをコピーの対象とする(ステップS1109)。ステップS1106〜S1108において、対象となるデジタルコピーコンテンツが見つからなかった場合は、BD−Jアプリケーション側でのデジタルコピーコンテンツの選択は行わず、BD−Jアプリケーションは、コピー可能なデジタルコピーコンテンツ一覧をユーザに提示し、ユーザからの選択指示を待つこととなる(ステップS1102)。
なお、音声・字幕言語の一致確認に、ステップS1106〜S1108の処理に加え、さらにPSR(1)の音声ストリーム番号、PSR(2)の字幕ストリーム番号、及びそれらのバックアップレジスタ(PSR(21)、PSR(22))も検索の対象として加えても良い。また、言語が一致するデジタルコピーコンテンツが複数見つかった場合は、ユーザに選択させても良い。特に吹替版が良いか字幕版が良いかはユーザの好みに依存するため、ステップS1106〜S1108をまとめて行い、そこで対象となるデジタルコピーコンテンツが複数見つかった場合は、それらの一覧をユーザに提示し、その中からユーザの好みで選択させても良い。ユーザの選択はデジタルコピーの都度行ってもよいし、予め吹替版が良いか字幕版が良いかユーザの好みを問い合わせておき、その結果をBD−Jアプリケーション内のローカル変数もしくはローカルストレージ上に記録し保持しておくことで、デジタルコピー時の選択はスキップし、BD−Jアプリケーション内に保持しているユーザの好みに応じて対象となるデジタルコピーコンテンツを決定しても良い。以上が、図42(a)に示した多言語に対応したデジタルコピーのパターンについての説明である。続いて図42(b)に示した多言語に対応したデジタルコピーのパターンについて説明する。
図44は、デジタルコピーモジュールにおいてコピーコンテンツの選択を行う処理のフローチャートである。再生装置側においてコピーすべきデジタルコピーコンテンツの選択を行う際は、まずBD−Jアプリケーションから使用する言語テーブルの指定があるかどうかを判断する(ステップS1201)。言語テーブルの指定には、SET_LANGTABLEコマンドが用いられる。BD−Jアプリケーションから言語テーブルの指定があった場合は、指定された言語テーブルの読込みを行う(ステップS1202)。
ステップS1201において、BD−Jアプリケーションから言語テーブルの指定がなかったと判断した場合、BD−ROMまたはリムーバルメディア上に言語テーブルが存在するかどうかを判断する(ステップS1203)。追加でデジタルコピーコンテンツをリムーバルメディアにダウンロードした場合は、リムーバルメディアに存在する更新版言語テーブルを探索する。言語テーブルが存在すれば、言語テーブルの読込みを行う(ステップS1204)。言語テーブルが存在しない場合、デジタルコピーコンテンツと対応言語とのマッピングができないため、デジタルコピーモジュールは、コピー可能なデジタルコピーコンテンツ一覧をユーザに提示し、ユーザからの選択指示を待つこととなる(ステップS1205)。ユーザからの選択指示があれば、選択されたデジタルコピーコンテンツを、コピーの対象とする(ステップS1206)。
ステップS1202またはステップS1204の言語テーブル読込み後、デジタルコピーモジュールは、読込んだ言語テーブルとPSR421に格納されている言語設定との比較を行う。まずは、PSR(16)に格納されている音声ストリーム用言語コードと言語テーブルに記載の音声言語の一致確認、及びPSR(17)に格納されている字幕ストリーム用言語コードと言語テーブルに記載の字幕言語の一致確認を行い、音声・字幕の両方の言語が一致するデジタルコピーコンテンツを検索する(ステップS1207)。両方が一致していない場合は、音声もしくは字幕言語のいずれかが一致しているデジタルコピーコンテンツを検索する(ステップS1208)。音声もしくは字幕のいずれも一致していない場合は、PSR(18)のメニュー用言語コードと言語テーブルに記載の字幕言語もしくは音声言語が一致するデジタルコピーコンテンツを検索する(ステップS1209)。
ステップS1207〜S1209において、PSRセット421の設定と言語テーブルに記載の言語が一致するデジタルコピーコンテンツが見つかれば、そのデジタルコピーコンテンツをコピーの対象とする(ステップS1210)。ステップS1207〜S1209において、対象となるデジタルコピーコンテンツが見つからなかった場合は、デジタルコピーモジュールは、デジタルコピーモジュールは、コピー可能なデジタルコピーコンテンツ一覧をユーザに提示し、ユーザからの選択指示を待つ(ステップS1205)。以上が、デジタルコピーモジュールにおいてコピーコンテンツの選択を行う処理についての説明である。
以上の構成により、再生端末内の言語設定及びデジタルコピーコンテンツと共に付与される言語テーブルを用いて、対象となるデジタルコピーコンテンツを、言語を考慮しつつ特定することにより、多言語に対応したデジタルコピーが可能となる。
(補足)
なお、上記の実施の形態に基づいて説明してきたが、本発明は上記の実施の形態に限定されないことはもちろんである。以下のような場合も本発明に含まれる。
(a)本発明は、各実施形態で説明した処理手順が開示するアプリケーション実行方法であるとしてもよい。また、前記処理手順でコンピュータを動作させるプログラムコードを含むコンピュータプログラムであるとしてもよい。
(b)本発明は、アプリケーション実行制御を行うIC、LSIその他の集積回路のパッケージとして構成されるものとしてもよい。このパッケージは各種装置に組み込まれて利用に供され、これにより各種装置は、各実施形態で示したような各機能を実現するようになる。また、集積回路化の手法はLSIに限るものではなく、専用回路または、汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)やLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。このような技術には、バイオ技術の適用等が可能性としてありえる。
(c)上記実施形態では、記録媒体を再生する再生機能のみを持つ再生装置について説明したが、それに限らない。例えば、録画機能を持つ録画再生装置であっても良い。
(d)上記実施形態では、仮想マシンのプログラミング言語としてJava(TM)(登録商標)を利用したが、Java(TM)(登録商標)ではなく、UNIX(登録商標) OSなどで使われているB−Shellや、Perl Script、ECMA Scriptなど他のプログラミング言語であっても良い。
(e)上述の実施の形態ではBD−ROMを再生する再生装置について説明をしたが、書き込み可能な光記録媒体に上述の実施の形態にて説明をしたBD−ROM上の必要なデータが記録されていた場合においても上述と同様の効果を奏することはもちろんのことである。
(f)上述の形態ではコピー元の記録媒体として、BD−ROMまたは書き込み可能な光記録媒体を例に説明をしているが、これに限定をされる必要は無く、例えばSDメモリーカード、メモリースティック、コンパクトフラッシュ、スマートメディア、マルチメディアカード等の可搬性の記録媒体に相当するリムーバブルメディアを用いても構わない。
コピー元の記録媒体としてリムーバブルメディアを用いる場合、このコピー元に用いるリムーバブルメディアには、例えば図2に示すボリューム領域に記録されているディレクトリ構造を有するデータに相当するものを記録する領域(ユーザ領域)、図6で説明をした保護領域およびシステム領域を有する構造である。
この場合ではコピー元のリムーバブルメディアに記録された携帯端末向けコンテンツがコピー先のリムーバブルメディアへコピーされることになる。当然のことながら、コピー元のリムーバブルメディアとコピー先のリムーバブルメディアとは別である。
コピー元の記録媒体にBD-ROMを用いた場合では、上述の実施の形態の説明において、例えば鍵情報生成部602では、コピー元801からはBD−ROM上の特殊領域であるBCA(Burst Cutting Area)に記録されている記録媒体の物理的なシリアルIDを示すPMSN(Pre-recorded Media Serial Number)を、読み出す構成である。これに対し、コピー元の記録媒体にリムーバブルメディアを用いる場合には、PMSNを読み出す代りに、コピー元のリムーバブルメディア固有の情報(メディアID)を読み出す構成とすればよい。
このように上述の実施の形態の説明および図面において、コピー元の記録媒体であるBD−ROMをリムーバブルメディアと読み替えるとともに、コピー元の記録媒体であるBD−ROMのシリアルIDをリムーバブルメディアの固有の情報(メディアID)と読み替えれば、コピー元の記録媒体にリムーバブルメディアを用いたときの動作の説明となる。
また、コピー元の記録媒体としてリムーバブルメディア用いた場合、BD-ROMのボリューム領域に記録されているディレクトリ構造を有するデータに相当するものを記録する領域(ユーザ領域)に記録されるデータのうちの一部のデータ(例えばストリームデータ)は、暗号化なされている。
コピー元の記録媒体としてリムーバブルメディア用いた場合、(ユーザ領域)に記録されるデータというのはリムーバブルメディアを頒布時に予め記録されていても良い。この場合、リムーバブルメディアの頒布時において、ユーザ領域に記録されるデータの一部のデータが暗号化されている場合には、暗号化されたデータを復号するためのキー情報(タイトルキー)を含む復号鍵がコピー元の記録媒体の保護領域に予め記録されている。このとき、復号鍵は、コピー元の記録媒体のシステム領域のMKBを用いて復号ができるように暗号化がなされているものとする。
または、コピー元の記録媒体としてリムーバブルメディア用いた場合、このリムーバブルメディアの頒布時にはユーザ領域にデータが記録されていないものの、頒布後、ダウンロード等の要求により、ユーザ領域に、BD−ROMのボリューム領域に記録されているディレクトリ構造を有するデータに相当ものを記録するようにしても良い。ダウンロード要求を行う装置というのは本実施の形態で説明をした再生装置を用いて行っても良いし、本実施の形態とは別のダウンロードを行うための端末装置を用いて行っても良い。この場合にはまず、ダウンロード要求を行う装置に頒布されたリムーバブルメディアを装填し電気的に接続をされた状態で、データのダウンロードの要求とともに、リムーバブルメディアのメディアIDおよびMKBを読み出して配信サーバへ送る。配信サーバにおいて、リムーバブルメディアのメディアIDおよびMKBを用いて生成される復号鍵と対応するデータをダウンロードの要求を行った装置へ送る。ダウンロードの要求を行った装置では、受信した対応するデータをリムーバブルメディアのユーザ領域へ記録し、受信した公開鍵ファイルをリムーバブルメディアの保護領域に記録する。ユーザ領域に記録されるデータの一部のデータが暗号化されている場合には、暗号化されたデータを復号するためのキー情報(タイトルキー)を含む復号鍵がコピー元の記録媒体の保護領域に記録されることになる。このとき、復号鍵は、コピー元の記録媒体のシステム領域のMKBを用いて復号ができるに暗号化がなされているものとする。
以上のように構成をすれば、リムーバブルメディアをコピー元の記録媒体とすることができる。
このようにすれば、ユーザ領域に記録される携帯端末向けコンテンツのみを本実施の形態とは異なる手法で別のリムーバブルメディアへ記録したとしても、別のリムーバブルメディアには復号鍵に関する情報が無いため、不正なコピーによる再生を抑止することができる。
万が一にも、別のリムーバブルメディアに復号鍵をも記録できたとしても、別のリムーバブルメディアのMKBはコピー元のリムーバブルメディアのMKBと異なるため、暗号化された復号鍵の復号が行えないため、コピー元のリムーバブルメディアのユーザ領域に記録されたデータの不正な利用を抑止することができる。