図1は、本発明の記録再生システムで用いる記録媒体上のアプリケーションフォーマットの簡単化された構造を示している。このフォーマットは、AVストリームの管理のためにPlayListとClipの二つのレイヤをもつ。そして、Volume Informationは、ディスク内のすべてのClipとPlayListの管理をする。
一つのAVストリームとそれの付属情報のペアを一つのオブジェクトと考え、それをClipと呼ぶ。AVストリームファイルはClip AVストリームファイルと呼ばれ、その付属情報は、Clip Information fileと呼ばれる。
一つのClip AVストリームファイルは、MPEG2トランスポートストリームをDVRアプリケーションフォーマットによって規定される構造に配置したデータをストアする。
一般に、コンピュータ等で用いるデータファイルは、バイト列として扱われるが、Clip AVストリームファイルのコンテンツは、時間軸上に展開され、PlayListは、Clipの中のアクセスポイントを主にタイムスタンプで指定する。PlayListが、Clipの中へのアクセスポイントをタイムスタンプで指し示している時、Clip Information fileは、Clip AVストリームファイルの中でストリームのデコードを開始すべきアドレス情報を見つけるために役立つ。
PlayListは、Clipの中からユーザが見たい再生区間を選択し、それを簡単に編集することができることを目的にして導入された。一つのPlayListは、Clipの中の再生区間の集まりである。あるClipの中の一つの再生区間は、PlayItemと呼ばれ、それは、時間軸上のIN点とOUT点のペアで表される。それゆえ、PlayListは、PlayItemの集まりである。
PlayListには、二つのタイプがある。一つは、Real PlayListであり、もう一つは、Virtual PlayListである。Real PlayListは、それが参照しているClipのストリーム部分を共有しているとみなされる。すなわち、Real PlayListは、それの参照しているClipのストリーム部分に相当するデータ容量をディスクの中で占める。AVストリームが新しいClipとして記録される場合、そのClip全体の再生可能範囲を参照するReal PlayListが自動的に作られる。Real PlayListの再生範囲の一部分が消去された場合、それが参照しているClipのストリーム部分もまたデータが消去される。Virtual PlayListは、Clipのデータを共有していないとみなされる。Virtual PlayListが変更または消去されたとしても、Clipは何も変化しない。
なお、以下の説明においては、Real PlayListとVirtual PlayListを総称して単に、PlayListと呼んでいる。
マークは、ClipおよびPlayListの中のハイライトや特徴的な時間を指定するためにある(図2参照)。
(1) Clipに付加されるマークは、AVストリームの内容に起因する特徴的なシーンを指定する。例えば、シーンチェンジ点などである。PlayListを再生する時、そのPlayListが参照するClipのマークを参照して、使用する事ができる。
(2) PlayListに付加されるマークは、主にユーザによってセットされる。例えば、ブックマークやリジューム点などである。
(3) ClipまたはPlayListにマークをセットすることは、マークの時刻を示すタイムスタンプをマークリストに追加することにより行われる。また、マークをデリートすることは、マークリストの中からそのマークのタイムスタンプを除去する事である。それゆえ、マークのセットやデリートは、AVストリームを何も変化させない。
サムネールは、Volume(ディスク),PlayListおよびClipに付加される静止画である。サムネールには、図3に示すように二つの種類がある。一つは、内容を表す代表画としてのサムネールである。これは主としてユーザがカーソルを操作して見たいものを選択するためのメニュー画面で使われる。もう一つは、マークが指しているシーンを表す画像である。
なお、図3に示されるように、メニューサムネールは、ディスク(Volume)またはPlaylist毎に0個または1個設けられ、マークサムネールは、PlaylistまたはClip毎に0個または0個以上設けられる。
Volumeと各PlayListは代表画を持つことができるようにする。Volumeの代表画とは、ディスクをプレーヤに入れた時に、ディスクの内容を表す静止画を最初に表示する場合などに用いることを想定している(図4のMenu Thumbnailを参照)。PlayListの代表画とは、PlayListを選択するメニュー画面において、PlayListの内容を表すための静止画として用いられることを想定している(図5のMenu Thumbnailを参照)。PlayListの代表画の最も簡単な実現方法は、PlayListの最初の画像をサムネールにすることであるが、必ずしも再生時刻0の先頭の画像が内容を表す上で最適な画像とは限らない。PlayListのサムネールとして、任意の画像を決めることが出来る目的はこのためである。以上2種類のサムネールをメニューサムネールと呼ぶが、メニューサムネールは頻繁に表示されるため、ディスクから高速に読むことが可能であることが求められる。この要求を満たすには、すべてのメニューサムネールを一つのファイルに格納することが効率的である(後述する図7のMenu Thumbnail fileを参照)。必ずしもボリューム内の動画から抜き出したピクチャだけではなく、パーソナルコンピュータ(PC)やデジタルスチルカメラ(DSC)などから取り込んだ画像でもよい(図4)。
一方、ClipとPlayListは複数個のマークを打てる必要があり、マーク位置の内容を知るためにマーク点の画像を容易に見ることが出来るようにする必要がある。このようなマーク点を表すピクチャをマークサムネール(Mark Thumbnails)と呼ぶ(図5のMark Thumbnail、および図6のMark Thumbnailを参照)。よって、サムネールの元となるものは、外部から取り込んだ画像よりも、マーク点の画像を抜き出したものが主となる。メニューサムネールと異なり、マークサムネールはPlayListの詳細を表す時に使われるサブメニュー等で使われるため、短いアクセス時間は要求されない。そのため、サムネールが必要になる度に、プレイヤがファイルを開き、ファイルの一部を読むことで多少時間がかかっても、問題にはならない。また、ボリューム内に存在するファイル数を減らすために、すべてのマークサムネールは一つのファイルに格納するのがよい(図7のMark Thumbnail fileを参照)。PlayListはメニューサムネール一つと複数のマークサムネールを有することができるが、Clipは直接ユーザが選択する必要性がない(通常、PlayList経由で指定する)ため、メニューサムネールを持つことはしない。
DVRディスク上に必要なディレクトリは、次の通りである:"DVR"ディレクトリを含むrootディレクトリ。"PLAYLIST"ディレクトリ,"CLIPINF"ディレクトリおよび"STREAM"ディレクトリを含む"DVR"ディレクトリ。図8に、DVRディスク上のディレクトリ構造の例を示す。
rootディレクトリは、一つのディレクトリを含む。"DVR"--DVRアプリケーションフォーマットによって規定されるすべてのファイルとディレクトリは、このディレクトリの下にストアされなければならない。
"DVR"ディレクトリは、次に示すファイルをストアする。"info.dvr"--DVRディレクトリの下に作られるアプリケーションレイヤの全体的な情報をストアするファイル。DVRディレクトリの下には、ただ一つのinfo.dvrがなければならない。ファイル名は、info.dvrに固定される。
"menu.tidx","menu.tdt1"and"menu.tdt2"--この3個のファイルは、メニューサムネール画像に関連する情報をストアする。
menu.tidxは、メニューサムネール画像のヘッダ情報をストアする「サムネール情報ファイル」である。
menu.tdt1は、メニューサムネール画像の画像データをストアする第1の「サムネール画像ファイル」であり、暗号化したサムネール画像を記録するためのファイルである。
menu.tdt2は、メニューサムネール画像の画像データをストアする第2の「サムネール画像ファイル」であり、暗号化しないサムネール画像を記録するためのファイルである。
ビデオレコーダが、メニューサムネール画像を暗号化処理して記録する機能を備える場合、メニューサムネール画像をmenu.tdt1に記録できる。CCIが「Copy Once」のビデオ信号から作成したメニューサムネール画像は、menu.tdt1にストアする。CCIが「Copy Free」のビデオ信号から作成したメニューサムネール画像もmenu.tdt1にストアして良い。
CCIが「Copy Free」のビデオ信号だけを記録するビデオレコーダであり、ビデオレコーダがメニューサムネール画像を暗号化処理して記録する機能を備えていない場合、メニューサムネール画像をmenu.tdt2に記録する。
各メニューサムネール画像が、暗号化されている/されていないという情報(すなわち、あるメニューサムネール画像が、menu.tdt1とmenu.tdt2のどちらにストアされているかという情報)は、menu.tidxにストアされる。
menu.tidxというサムネール情報ファイルに、各サムネール画像が暗号化されている/されていないという情報を集めて管理することにより、サムネール情報ファイルを比較的小さなサイズのデータベースで管理できる。これにより、あるサムネール画像の再生を指示されたときに、そのサムネールが暗号化されている/されていないという情報を容易に高速に取得できる。
"mark.tidx","mark.tdt1"and"mark.tdt2"--この3個のファイルは、マークサムネール画像に関連する情報をストアする。
mark.tidxは、マークサムネール画像のヘッダ情報をストアする「サムネール情報ファイル」である。
mark.tdt1は、マークサムネール画像の画像データをストアする第1の「サムネール画像ファイル」であり、暗号化したサムネール画像を記録するためのファイルである。
mark.tdt2は、マークサムネール画像の画像データをストアする第2の「サムネール画像ファイル」であり、暗号化しないサムネール画像を記録するためのファイルである。
マークサムネール画像をmark.tdt1とmark.tdt2のどちらに記録するかを判断する方法、および、サムネール情報ファイルとサムネール画像ファイルを分離して管理する効果については、上述のメニューサムネールの説明と同様である。
"DVR"ディレクトリは、3個のディレクトリを含む。
"PLAYLIST"Real PlayListとVirtual PlayListのデータベースファイルは、このディレクトリの下に置かなければならない。
"CLIPINF"--Clipのデータベースは、このディレクトリの下に置かなければならない。
"STREAM"--AVストリームファイルは、このディレクトリの下に置かなければならない。
"PLAYLIST"ディレクトリは、2種類のPlayListファイルをストアするものであり、それらは、Real PlayListとVirtual PlayListである。
"xxxxx.rpls"--このファイルは、一つのReal PlayListに関連する情報をストアする。それぞれのReal PlayList毎に、一つのファイルが作られる。ファイル名は、"xxxxx.rpls"である。ここで、"xxxxx"は、5個の0から9まで数字である。ファイル拡張子は、"rpls"でなければならない。
"yyyyy.vpls"--このファイルは、一つのVirtual PlayListに関連する情報をストアする。それぞれのVirtual PlayList毎に、一つのファイルが作られる。ファイル名は、"yyyyy.vpls"である。ここで、"yyyyy"は、5個の0から9まで数字である。ファイル拡張子は、"vpls"でなければならない。
"CLIPINF"ディレクトリは、それぞれのAVストリームファイルに対応して、一つのファイルをストアする。
"zzzzz.clpi"--このファイルは、一つのAVストリームファイル(Clip AVストリームファイルまたはBridge-Clip AVストリームファイル)に対応するClip Information fileである。ファイル名は、"zzzzz.clpi"であり、ここで、"zzzzz"は、5個の0から9までの数字である。ファイル拡張子は、"clpi"でなければならない。
"STREAM"ディレクトリは、AVストリームのファイルをストアする。
"zzzzz.m2ts"--このファイルは、DVRシステムにより扱われるAVストリームファイルである。これは、Clip AVストリームファイルまたはBridge-Clip AVストリームファイルである。ファイル名は、"zzzzz.m2ts"であり、ここで"zzzzz"は、5個の0から9までの数字である。ファイル拡張子は、"m2ts"でなければならない。
一つのAVストリームファイルとそれに対応するClip information fileは、同じ5個の数字"zzzzz"を使用しなければならない。
AVストリームファイルの構造を説明する。AVストリームファイルは図9に示すDVR MPEG2トランスポートストリームの構造を持たなければならない。DVR MPEG2トランスポートストリームは次に示す特徴を持つ。
(1) DVR MPEG2トランスポートストリームは、整数個のAligned unitから構成される。
(2) Aligned unitの大きさは、6144バイト(2048*3バイト)である。
(3) Aligned unitは、ソースパケットの第一バイト目から始まる。
(4) ソースパケットは、192バイト長である。一つのソースパケットは、TP_extra_headerとトランスポートパケットから成る。TP_extra_headerは、4バイト長であり、またトランスポートパケットは、188バイト長である。
(5) 一つのAligned unitは、32個のソースパケットから成る。
(6) DVR MPEG2トランスポートストリームの中の最後のAligned unitも、また32個のソースパケットから成る。
(7) 最後のAligned unitが、入力トランスポートストリームのトランスポートパケットで完全に満たされなかった場合、残りのバイト領域をヌルパケット(PID=0x1FFFのトランスポートパケット)を持ったソースパケットで満たさねばならない。
TP_extra_headerは、トランスポートパケットのペイロードのコピー制限情報とトランスポートパケットがデコーダに到着する時刻を示すアライバルタイムスタンプを含む。
次に、AVストリームファイルの再生情報を管理するデータベースフォーマットについて説明する。
図10は、info.dvrにストアされるデータの一部であるUIAppInfpoDVRのシンタクスを示す。ref_to_menu_thumbnail_indexは、Volumeを代表するサムネール画像の情報を示す。ref_to_menu_thumbnail_indexフィールドが、0xFFFFでない値の場合、Volumeにはサムネール画像が付加されており、そのサムネール画像は、menu.tdt1ファイルまたはmenu.tdt2ファイルの中にストアされている。その画像は、menu.tidxファイルの中でthumbnail_indexの値を用いて参照される(後述)。ref_to_menu_thumbnail_indexフィールドが、0xFFFFである場合、Volumeには、サムネール画像が付加されていない事を示す。
図11は、PlayListファイルにストアされるにデータの一部であるPlayListMarkのシンタクスを示す。PlayListMarkは、PlayListに付加されるマークの情報をストアする。なお、PlayListの代表画像の情報もまた、PlayListMarkに含まれる。
number_of_PlayList_marksは、PlayListMarkの中にストアされているマークのエントリー数を示す。
mark_typeは、マークのタイプを示す。
ref_to_PlayItem_idは、マークが置かれているところのPlayItemを指定するところのPlayItem_idの値を示す。
mark_time_stampは、そのマークが指定されたポイントを示すタイムスタンプをストアする。
ref_to_menu_thumbnail_indexは、PlayListの代表画像を示すサムネール画像の情報を示す。ref_to_menu_thumbnail_indexフィールドが、0xFFFFでない値の場合、PlayListの代表画像を示すサムネール画像が存在し、そのサムネール画像は、menu.tdt1ファイルまたはmenu.tdt2ファイルの中にストアされている。その画像は、menu.tidxファイルの中でthumbnail_indexの値を用いて参照される(後述)。ref_to_menu_thumbnail_indexフィールドが、0xFFFFである場合、PlayListの代表画像を示すサムネール画像が存在しない事を示す。
ref_to_mark_thumbnail_indexは、マークに付加されるサムネール画像の情報を示す。ref_to_mark_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのマークにはサムネール画像が付加されており、そのサムネール画像は、mark.tdt1ファイルまたはmark.tdt2ファイルの中にストアされている。その画像は、mark.tidxファイルの中でthumbnail_indexの値を用いて参照される(後述)。ref_to_mark_thumbnail_indexフィールドが、0xFFFFである場合、そのマークにはサムネール画像が付加されていない事を示す。
図12は、Clip Informationファイルにストアされるデータの一部であるClipMarkのシンタクスを示す。ClipMarkは、Clipに付加されるマークの情報をストアする。
number_of_Clip_marksは、ClipMarkの中にストアされているマークのエントリー数を示す。
mark_typeは、マークのタイプを示す。
ref_to_STC_idは、mark_time_stampが置かれているところのClipのシステムタイムベースの時間軸を指定する情報である。
mark_time_stampは、Clip AVストリームの中でマークが指定されたポイントをプレゼンテーションタイムスタンプをベースとして表す。
ref_to_mark_thumbnail_indexは、マークに付加されるサムネール画像の情報を示す。ref_to_mark_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのマークにはサムネール画像が付加されており、そのサムネール画像は、mark.tdt1ファイルまたはmark.tdt2ファイルの中にストアされている。その画像は、mark.tidxファイルの中でthumbnail_indexの値を用いて参照される(後述)。ref_to_mark_thumbnail_indexフィールドが、0xFFFFである場合、そのマークにはサムネール画像が付加されていない事を示す。
次に、サムネールについての情報をストアするファイルの内容を説明する。
"menu.tidx","menu.tdt1"と"menu.tdt2"は、メニューサムネール,すなわちVolumeを代表する1つのピクチャ、およびPlayList毎にそれを代表する1つのピクチャの情報をストアする。メニューサムネールの各ヘッダ情報は、1つのmenu.tidxに集めて管理される。メニューサムネールの各ピクチャデータは、menu.tdt1またはmenu.tdt2にストアされる。
"mark.tidx","mark.tdt1"と"mark.tdt2"は、マークサムネール,すなわちマーク点で指されるピクチャについての情報をストアする。Volume中のすべてのClipおよびPlayListに付加されているマークサムネールの各ヘッダ情報は、1つのmark.tidxに集めて管理される。マークサムネールの各ピクチャデータは、mark.tdt1またはmark.tdt2にストアされる。
サムネール画像は、例えば、画像をJPEGで符号化したデータである。JPEGはデファクトスタンダードとして広く使用されているので、インプリメントが比較的容易であり、互換性が高い。なお、サムネール画像のフォーマットはJPEGに限らず、MPEGのI-pictureやPNG,GIF,TIFF等を用いても構わない。
サムネールは頻繁に追加、削除されるので、追加操作と部分削除の操作は容易に高速に実行できなければならない。この理由のため、menu.tdt1,menu.tdt2,mark.tdt1とmark.tdt2はブロック構造を有する。一つのサムネール画像は1つのtn_blockと呼ばれるブロックに格納される。
図13は、tn_blockの使用方法の例を示す。
ここで、(a),(b)と(c)で示すサムネール画像は、menu.tdt1にストアされ、(x),(y)と(z)で示すサムネール画像は、menu.tdt2にストアされる。menu.tidxの中で、(a),(b)と(c)は、それぞれに対するthumbnail_index(A,B,C)とref_to_tn_block_id_1(0,1,3)の2個の値が与えられる。また、menu.tidxの中で、(x),(y)と(z)は、それぞれに対するthumbnail_index(X,Y,Z)とref_to_tn_block_id_2(0,2,3)の2個の値が与えられる。そして、menu.tdt1の中で、サムネール画像(a),(b)と(c)は、それぞれのref_to_tn_block_id_1で示されるtn_block(0,1,3のブロック)にストアされる。また、menu.tdt2の中で、(x),(y)と(z)は、それぞれのref_to_tn_block_id_2で示されるtn_block(0,2,3のブロック)にストアされる。
menu.tdt1とmenu.tdt2が持つtn_blockの配列の中に、使用されていないtn_block(menu.tdt1の番号2のtn_block.menu.tdt2の番号1のtn_block)が存在してもよい。例えば、あるサムネールの削除をする場合、menu.tidxの中にエントリーされているthumbnail_indexを消去し、サムネール画像ファイルを何も変更しなかったとき、tn_blockの配列の中に、使用されていないtn_blockができる。
図14は、サムネール画像を暗号化して記録するファイル(図13で示すmenu.tdt1)の暗号化方法を説明する図である。図に示すように、一つのtn_blockを一つ以上の整数個の暗号化ブロックに分割して、その暗号化ブロック単位でブロック内のデータを暗号化する。暗号化の方法は、例えば、DES,Triple-DES,AESなどを用いる。このように、一つのtn_blockで暗号化処理が閉じるようにする。これにより、サムネール画像ファイルの中から任意のサムネール画像を読み出すとき、そのサムネール画像がストアされているtn_blockだけを暗号の復号(デクリプト)処理すれば良く、データ処理量を最小にできる。
次に、サムネールについての情報をストアするファイルのシンタクスとセマンティクスを説明する。
"menu.tidx"と"mark.tidx"は、同じシンタクス構造を持つ。図15は、"menu.tidx"と"mark.tidx"のシンタクス構造の例を示す。
number_of_thumbnails_1は、menu.tidxの場合にはmenu.tdt1にストアされているサムネールピクチャの数であり、mark.tidxの場合にはmark.tdt1にストアされているサムネールピクチャの数である。
number_of_tn_blocks_1は、menu.tidxの場合にはmenu.tdt1の中にあるtn_blockの数を示し、mark.tidxの場合にはmark.tdt1の中にあるtn_blockの数を示す。
number_of_thumbnails_2は、menu.tidxの場合にはmenu.tdt2にストアされているサムネールピクチャの数であり、mark.tidxの場合にはmark.tdt2にストアされているサムネールピクチャの数である。
number_of_tn_blocks_2は、menu.tidxの場合にはmenu.tdt2の中にあるtn_blockの数を示し、mark.tidxの場合にはmark.tdt2の中にあるtn_blockの数を示す。
tn_block_sizeは、menu.tidxの場合にはmenu.tdt1とmenu.tdt2の中の1つのtn_blockのサイズを示し、mark.tidxの場合にはmark.tdt1とmark.tdt2の中の1つのtn_blockのサイズを示す。このサイズは、1024バイトを単位とする大きさである。例えば、tn_block_size=16は、1つのtn_blockのサイズが16*1024バイトであることを示す。1つのサムネールピクチャは、1つのtn_blockの中にストアされなければならない。
recording_seedは、menu.tidxの場合にはmenu.tdt1のデータを暗号化する処理に用いるある乱数値である。また、mark.tidxの場合にはmark.tdt1のデータを暗号化する処理に用いるある乱数値である。記録器は、menu.tdt1ファイルを初めてディスク上に作るときに、そのrecording_seedを生成して、menu.tidxにストアする。また、記録器は、mark.tdt1ファイルを初めてディスク上に作るときに、そのrecording_seedを生成して、menu.tidxにストアする。
thumbnail_indexは、それがnumber_of_thumbnails_1を変数とするfor文のループに含まれるとき、そのthumbnail_indexに続くref_to_tn_block_id_1に対するインデックス番号を示す。または、thumbnail_indexは、それがnumber_of_thumbnails_2を変数とするfor文のループに含まれるとき、そのthumbnail_indexに続くref_to_tn_block_id_2に対するインデックス番号を示す。thumbnail_indexして、0xFFFFという値を使用してはならない。menu.tidxの場合、thumbnail_indexはUIAppInfoVolume(),PlayListMark()の中のref_to_menu_thumbnail_indexによって参照される。mark.tidxの場合、thumbnail_indexはPlayListMark()およびClipMark()の中のref_to_mark_thumbnail_indexによって参照される。menu.tidxの中で、同じ値のthumbnail_indexが重複して現れてはいけない。mark.tidxの中で、同じ値のthumbnail_indexが重複して現れてはいけない。
ref_to_tn_block_id_1は、menu.tidxの場合にはmenu.tdt1中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_id_1のインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。
または、mark.tidxの場合にはmark.tdt1中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_id_1のインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。
picture_byte_size_1[ref_to_tn_block_id_1]は、ref_to_tn_block_id_1が示すtn_blockにストアされているサムネール画像のデータ長をバイト単位で示す。picture_byte_size_1[ref_to_tn_block_id_1]の値は、(1024*tn_block_size-N1)バイト以下でなければならない(N1については、図17で後述する)。すなわち、記録機は、1つのサムネール画像のデータ長を(1024*tn_block_size-N1)バイト以下になるように、符号化しなければならない。
horizontal_picture_size_1[ref_to_tn_block_id_1]は、ref_to_tn_block_id_1が示すtn_blockにストアされているサムネール画像の水平方向の画素数を示す。
vertical_picture_size_1[ref_to_tn_block_id_1]は、ref_to_tn_block_id_1が示すtn_blockにストアされているサムネール画像の垂直方向の画素数を示す。
ref_to_tn_block_id_2は、menu.tidxの場合にはmenu.tdt2中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_id_2のインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。または、mark.tidxの場合にはmark.tdt2中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_id_2のインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。
picture_byte_size_2[ref_to_tn_block_id_2]は、ref_to_tn_block_id_2が示すtn_blockにストアされているサムネール画像のデータ長をバイト単位で示す。picture_byte_size_2[ref_to_tn_block_id_2]の値は、(1024*tn_block_size-N1)バイト以下でなければならない(N1については、図17で後述する)。すなわち、記録機は、1つのサムネール画像のデータ長を(1024*tn_block_size-N1)バイト以下になるように、符号化しなければならない。
horizontal_picture_size_2[ref_to_tn_block_id_2]は、ref_to_tn_block_id_2が示すtn_blockにストアされているサムネール画像の水平方向の画素数を示す。
vertical_picture_size_2[ref_to_tn_block_id_2]は、ref_to_tn_block_id_2が示すtn_blockにストアされているサムネール画像の垂直方向の画素数を示す。
図16は、"menu.tdt1","menu.tdt2","mark.tdt1"と"mark.tdt2"のシンタクス構造を示す。これらのファイルは、同じシンタクス構造を持つ。
tn_block(tn_block_id)は、tn_blockの配列の中でtn_block_idの引数によって指し示される1つのtn_blockを示す。
menu.tdt1の場合、tn_block_idの値は、menu.tidxの中のref_to_tn_block_id_1によって参照される。
menu.tdt2の場合、tn_block_idの値は、menu.tidxの中のref_to_tn_block_id_2によって参照される。
mark.tdt1の場合、tn_block_idの値は、mark.tidxの中のref_to_tn_block_id_1によって参照される。
mark.tdt2の場合、tn_block_idの値は、mark.tidxの中のref_to_tn_block_id_2によって参照される。
図17は、tn_block(tn_block_id)のシンタクスを示す。
thumbnail_picture[tn_block_id]は、上記のtn_block_idの値により指し示される一つのサムネール画像をストアする領域である。サムネールピクチャの第一バイト目は、thumbnail_picture[tn_block_id]の第一バイト目と一致していなければならない。
CP_Info_thumbnail()は、thumbnail_picture[tn_block_id]にストアされるサムネール画像のコンテンツ保護情報を示すN1バイトの情報である。詳細については後述する。
padding_byteは任意の値をもつ1バイトの値であり、NPの値は、次に示す式を満たすように計算される。
NP=tn_block_size*1024-picture_byte_size[tn_block_id]-N1
図18は、CP_Info_thumbnail()のシンタクスを示す。
CCI_thumbnailは、サムネール画像のコピーの世代管理情報(copy generation management information)を示す。値の意味を図19に示す。すなわち、「00」は、「copy free」、「01」は、「no more copy」、「10」は、「copy once」、「11」は、「copy prohibited」を、それぞれ表す。
APS_thumbnailは、サムネール画像をアナログビデオ出力する時のアナログコピープロテクション情報を示す。値の意味を図20に示す。それぞれのAPSの定義は、Default Settings of the Macrovision Anti-taping Process for DVD Products, Revision 1.0, July 5,1997に記載されている。なお、2L/4L Colorstripeは、NTSCのアナログ出力の場合のみに適用可能である。
menu.tdt1ファイルおよびmark.tdt1ファイルは暗号化して記録されるので、次の二つの効果がある。
(1)CP_Info_thumbnail()の内容が、悪意を持ったユーザによって改竄されることを防ぐことができる。
(2)CCI_thumbnailが「No more copy」であるサムネール画像が、不正にbit-by-bitに同じデータで別の記録媒体へコピーされたとしても、それを再生することができないように対処できる。
上述の説明では、メニューサムネール画像ファイルを暗号化サムネール用と非暗号化サムネール用で2個に分ける場合を説明した(マークサムネール画像についても同様)。次に、別の例として、一つのメニューサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式の場合について説明する。
この場合は、メニューサムネール画像は一つのmenu.tdatファイルにストアし、マークサムネール画像は一つのmark.tdatファイルにストアする。(図8のファイル構造において、menu.tdt1とmenu.tdt2が、一つのmenu.tdatに変わり、また、mark.tdt1とmark.tdt2が、一つのmark.tdatに変わる。)
この場合のtn_blockのtn_blockの使用方法の例を図21に示す。
ここで、(a),(b)と(c)で示すサムネール画像(このうちの(b)は、暗号化して記録するサムネール画像である)が、menu.tdatにストアされる。menu.tidxの中で、(a),(b)と(c)は、それぞれに対するthumbnail_index(X,Y,Z),ref_to_tn_block_id(0,1,3)とflag_encrypted_thumbnail(0,1,0)の3個の値が与えられる。そして、menu.tdatの中で、(a),(b)と(c)は、それぞれのref_to_tn_block_id(0,1,3)で示されるtn_blockにストアされる。
menu.tdatが持つtn_blockの配列の中に、使用されていないtn_blockが存在してもよい。例えば、あるサムネールの削除をする場合、menu.tidxの中にエントリーされているthumbnail_indexを消去し、サムネール画像ファイルを何も変更しなかったとき、tn_blockの配列の中に、使用されていないtn_blockができる。
一つのメニューサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式の場合の、暗号化切り替え方法の例を2通り、図22と図23を用いて説明する。
図22は、tn_block単位で暗号化する/しないを切り替える場合である。図23は、tn_blockを複数個まとめた単位で暗号化する/しないを切り替える場合である。後者の場合、例えば、tn_blockのサイズが16KBであり、ECCブロックの単位が64KBである時、64KBを単位で暗号化する/しないを切り替える。
一つのメニューサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式の場合の、サムネールの情報ファイルのシンタクス(マークサムネール画像ファイルについても同様)を説明する。
"menu.tidx"と"mark.tidx"は、同じシンタクス構造を持つ。図24は、"menu.tidx"と"mark.tidx"のシンタクス構造の例を示す。
number_of_thumbnailsは、menu.tidxの場合にはmenu.tdatにストアされているサムネールピクチャの数であり、mark.tidxの場合にはmark.tdatにストアされているサムネールピクチャの数である。
tn_block_sizeは、menu.tidxの場合にはmenu.tdatの中の1つのtn_blockのサイズを示し、mark.tidxの場合にはmark.tdatの中の1つのtn_blockのサイズを示す。
number_of_tn_blocksは、menu.tidxの場合にはmenu.tdatの中にあるtn_blockの数を示し、mark.tidxの場合にはmark.tdatの中にあるtn_blockの数を示す。
recording_seedは、menu.tidxの場合にはmenu.tdatのデータを暗号化する処理に用いる乱数値であり、所定の方法で計算される。また、recording_seedは、mark.tidxの場合にはmark.tdatのデータを暗号化する処理に用いる乱数値であり、所定の方法で計算される。
thumbnail_indexは、そのthumbnail_indexに続くref_to_tn_block_idに対するインデックス番号を示す。thumbnail_indexして、0xFFFFという値を使用してはならない。menu.tidxの場合、thumbnail_indexはUIAppInfoVolume(),PlayListMark()の中のref_to_menu_thumbnail_indexによって参照される。mark.tidxの場合、thumbnail_indexはPlayListMark()およびClipMark()の中のref_to_mark_thumbnail_indexによって参照される。menu.tidxの中で、同じ値のthumbnail_indexが重複して現れてはいけない。mark.tidxの中で、同じ値のthumbnail_indexが重複して現れてはいけない。
ref_to_tn_block_idは、menu.tidxの場合にはmenu.tdat中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_idのインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。または、mark.tidxの場合にはmark.tdat中の1つのtn_blockを示し、そのtn_blockは、ref_to_tn_block_idのインデックス番号であるthumbnail_indexに対するサムネール画像をストアしている。
picture_byte_size[ref_to_tn_block_id]は、ref_to_tn_block_idが示すtn_blockにストアされているサムネール画像のデータ長をバイト単位で示す。
horizontal_picture_size[ref_to_tn_block_id]は、ref_to_tn_block_idが示すtn_blockにストアされているサムネール画像の水平方向の画素数を示す。
vertical_picture_size[ref_to_tn_block_id]は、ref_to_tn_block_idが示すtn_blockにストアされているサムネール画像の垂直方向の画素数を示す。
flag_encrypted_thumbnail[ref_to_tn_block_id]は、ref_to_tn_block_idが示すtn_blockにストアされているサムネール画像が暗号化して記録されているか、暗号化しないで記録されているかを示すフラグである。
図25は、"menu.tdat"と"mark.tdat"のシンタクス構造を示す。これらのファイルは、同じシンタクス構造を持つ。
tn_block(tn_block_id)は、tn_blockの配列の中でtn_block_idの引数によって指し示される1つのtn_blockを示す。menu.tdatの場合、tn_block_idの値は、menu.tidxの中のref_to_tn_block_idによって参照される。mark.tdatの場合、tn_block_idの値は、mark.tidxの中のref_to_tn_block_idによって参照される。
tn_block(tn_block_id)の内容は、図16と図17で説明した内容と同じである。
以上、暗号化したサムネールと暗号化しないサムネールをデータベースで管理する方法を3通り説明した。それぞれの方法の効果を説明すると次のようになる。
(1)サムネール画像ファイルを暗号化サムネール用と非暗号化サムネール用で2個に分ける(図13,図14)。
サムネール画像ファイルの中で暗号化ON/OFFの切り替えがないので、ファイルを読み込む時(再生時)に暗号の復号ON/OFFを切り替える必要がなく、暗号の復号処理を簡単化できる。
(2)一つのメニューサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式の場合であり、tn_block単位で暗号化する/しないを切り替える図21,図22)。
サムネール画像ファイルが1個なので、暗号化するサムネールと暗号化しないサムネールを区別するためのデータベース管理が容易である。最小単位であるtn_block単位で暗号化する/しないを切り替えるので、ディスク上に無駄なデータを記録することがない。
(3)一つのメニューサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式の場合であり、tn_blockを複数個まとめた単位で暗号化する/しないを切り替える(図23)。
サムネール画像ファイルが1個なので、暗号化するサムネールと暗号化しないサムネールを区別するためのデータベース管理が容易である。tn_blockを複数個まとめた単位を、ECCブロックと同じとすれば、ECCブロックを読み込む時(再生時)に暗号の復号ON/OFFを切り替える必要がなく、暗号の復号処理を簡単化できる。
次に、図26に、AVストリームを記録するとともに、そのAVストリームの代表画像やマーク点の画像をサムネールに符号化して記録する、記録装置のブロック図を示す。
はじめに端子12,16からのビデオ、オーディオ入力をセルフエンコードしたAVストリームを記録する場合を説明する。マクロビジョン検出部13は、入力ビデオのアナログコピープロテクション信号(APS)を所定の方法で検出して、ビデオ信号の記録制限を行う。入力ビデオ信号にAPSが含まれていない場合だけ、そのビデオ信号を記録することができる。したがって、ビデオ信号を記録できる場合、そのAPSは、コピーフリー(00)である。入力ビデオ信号がAPSを含まない場合、マクロビジョン検出部13は、入力ビデオをCGMS検出・更新部14へ供給する。CGMS検出・更新部14は、入力ビデオのCGMS(CGMS-AまたはCGMS-D)を所定の方法により解析して、記録するAVストリームのCCI(図の中でCCI_oで示す)をコントローラ21へ供給する。また、CGMS検出・更新部14は、入力ビデオをWM(Water Mark)検出・更新部15へ供給する。WM検出・更新部15は、入力ビデオのWater Markを所定の方法により解析して、記録するAVストリームのWM(図の中でWM_oで示す)をコントローラ21へ供給する。また、WM検出・更新部15は、入力ビデオをMPEG2 AVエンコーダ16およびビデオ解析部18へ供給する。
MPEG2 AVエンコーダ16は入力ビデオ,オーディオ信号をエンコードして、ビデオストリームとオーディオストリームを多重化・ソースパケット化部17へ供給する。
コントローラ21は入力されるCCI_oおよびWM_oに基づいて、多重化・ソースパケット化部17へ多重化ストリームの中で符号化するE_CCI(Embedded CCI)の値を所定の方法により決定する。多重化・ソースパケット化部17はビデオストリームとオーディオストリームを多重化して、AVストリームを暗号化部22とストリーム解析部20へ供給する。
暗号化部22は、入力されるAVストリームを所定の方法で暗号化して、ECC符号化部23へ供給する。AVストリームは、ECC符号化部23,変調部24,ドライブ25の処理の後に、AVストリームファイルとして、記録媒体26へ記録される。
本記録装置は、AVストリームファイルを記録すると共に、そのファイルに関係するアプリケーションデータベース情報(info.dvr,PlayList,ClipInformation,サムネール情報ファイル,サムネール画像ファイル)もまた記録する。アプリケーションデータベース情報は、コントローラ21により作成される。コントローラ21への入力情報は、ビデオ解析部18からのビデオ信号の特徴情報,ストリーム解析部20からのAVストリームの特徴情報,および端子11から入力されるユーザの指示情報である。
ビデオ解析部18からのビデオ信号の特徴情報は、この記録装置が自動生成するものである。ビデオ解析部18は、入力ビデオ信号の内容を解析し、入力ビデオ信号の中の特徴的なマーク点の画像に関係する情報を生成する。例えば、入力ビデオ信号のプログラム開始点,シーンチェンジ点やCMのスタート・エンド点などマーク点の画像の指示情報である。また、入力ビデオ信号の中で最初のマーク点の画像を、そのビデオ信号の代表画像(PlayListの代表画像)としても良い。ビデオ解析部18は、ビデオ信号の中でマーク点の画像を指し示すタイムスタンプ(マークの位置)をコントローラ21へ入力する。サムネールエンコーダ19は、マーク点の画像をサムネール画像にエンコードして、それらサムネール画像をコントローラ21へ供給する。コントローラ21は、マーク点のタイムスタンプ、マーク点の画像に対応するCCI_oとWM_o,および、マーク点の画像のサムネール画像を関連付けて記憶する。また、コントローラ21は、マーク点の画像に対応するCCI_oとWM_oに基づいて、上述のCP_Info_thumbnail()(図17と図18)のCCI_thumnail(図19)の値を所定の方法により決定する。
入力ビデオ信号をセルフエンコードしたAVストリームを記録する場合のコピーコントロール処理をまとめたものを図27に示す。
AVストリームは、入力信号の状態に対応して記録される。サムネールも入力信号の状態に対応して記録される。すなわち、入力信号が「copy free」である場合、サムネールは、AVストリームと同様に、記録が可能であり、その場合におけるCCI_thumbnail、またはAPS_thumbnailは、やはり「copy free」とされる。このとき、サムネール画像は、暗号化する必要はないが、暗号化してもよい。
入力信号の状態が「no more copy」、または「copy prohibited」である場合、サムネール画像は記録することができない。入力信号の状態が「copy once」である場合、CCI_thumbnailは、「no more copy」に書き換えられる。
サムネール画像のCCI_thumbnailが「No more copy」である場合、そのサムネールを暗号化する必要がある。一方、サムネール画像のCCI_thumbnailが「Copy free」である場合、そのサムネールを暗号化する必要はない。
コントローラ21は、サムネールに関するアプリケーションデータベース情報を作成し、上で説明したシンタクスに基づきサムネール情報ファイル,サムネール画像ファイルおよびその他のデータベースファイル(info.dvr, PlayList file, Clip Information file)にストアする。コントローラ21は、これらのファイル情報を暗号化部22へ供給する。暗号化部22は、サムネールを暗号化する必要がある場合、それを上で説明した方法に従って暗号化する。暗号化部22は、ファイル情報をECC符号化部23へ供給する。ファイル情報は、ECC符号化部23,変調部24,ドライブ25の処理の後に、記録媒体26へ記録される。
次に、端子27からのトランスポートストリーム(TS)入力を記録する場合を説明する。E_CCI(Embedded CCI)解析・更新部28は、入力TSの中に符号化されているE_CCI(Embedded CCI)を所定の方法により解析して、記録するAVストリームのCCI(図26の中でCCI_oで示す)をコントローラ21へ供給する。また、E_CCI解析・更新部28は、入力TSをWM検出・更新部29へ供給する。WM検出・更新部29は、入力ビデオのWater Markを所定の方法により解析して、記録するAVストリームのWM(図26の中でWM_oで示す)をコントローラ21へ供給する。また、WM検出・更新部29は、入力TSを多重化・ソースパケット化部17へ供給する。多重化・ソースパケット化部17は入力TSをソースパケット列のストリームに変換し、それをストリーム解析部20と暗号化部22へ供給する。暗号化部(スクランブル部)部22は、入力されるAVストリームを所定の方法で暗号化して、ECC符号化部23へ供給する。AVストリームは、ECC符号化部23,変調部24,ドライブ25の処理の後に、AVストリームファイルとして、記録媒体26へ記録される。
また、端子27からの入力TSは、デコーダ30へ入力される。デコーダ30は入力TSのビデオストリームを復号(デコード)して、ビデオ信号をビデオ解析部18へ供給する。ビデオ解析部18,サムネールエンコーダ19の処理は、上述の入力ビデオをセルフエンコード処理する場合と同様である。
ストリーム解析部20は、入力ストリームの中のコンテンツ保護情報(DTCP_descriptor等)を解析し、そして、アナログコピープロテクション情報(APS)を取り出し、それをコントローラ21へ供給する。そして、入力ストリームのマーク点画像に対応するAPSと、それら画像のサムネール画像のAPS_thumbnailは同じ値にセットされる。CCI_thumbnailの値は、上述の入力ビデオをセルフエンコード記録する場合と同様にして、コントローラ21により決定される。
入力TSを記録する場合のコピーコントロール処理をまとめたものを図28に示す。
図28における処理は、基本的に図27における場合と同様であるが、サムネール画像のAPS_thumbnailは、入力信号の状態と同様とされる。
サムネール画像のCCI_thumbnailが「No more copy」である場合、そのサムネールを暗号化する必要がある。一方、サムネール画像のCCI_thumbnailが「Copy free」である場合、そのサムネールを暗号化する必要はない。
コントローラ21は、サムネールに関するアプリケーションデータベース情報を作成し、上で説明したシンタクスに基づきサムネール情報ファイル,サムネール画像ファイルおよびその他のデータベースファイル(info.dvr,PlayList file,Clip Information file)にストアする。コントローラ21は、これらのファイル情報を暗号化部22へ供給する。暗号化部22は、サムネールを暗号化する必要がある場合、それを上で説明した方法に従って暗号化する。暗号化部22は、ファイル情報をECC符号化部23へ供給する。ファイル情報は、ECC符号化部23,変調部24,ドライブ25の処理の後に、記録媒体26へ記録される。
AVストリームを記録するとともに、そのAVストリームの代表画像や特徴点画像をサムネールに符号化して記録する処理のフローチャートを図29に示す。
ステップS101で、入力信号(ビデオ信号またはTS)のコンテンツ保護情報(CCI等)を解析する。この処理は、マクロビジョン検出部13、CGMS検出更新部14、WM検出更新部15、E_CCI解析更新部28、またはWM検出更新部29により行われる。
ステップS102で、入力信号をAVストリームに符号化する。この処理は、MPEG2AVエンコーダ16および多重化ソースパケット化部17により実行される。
ステップS103で、ビデオ解析部18は、ビデオ信号を解析して、マーク点の画像(代表画像および特徴点画像)を検出する。
ステップS104で、ビデオ解析部18は、マーク点の画像の取得する。
ステップS105で、サムネールエンコーダ19は、マーク点の画像をサムネール画像にエンコードする。
ステップS106で、コントローラ21は、マーク点のタイムスタンプが指し示すAVストリーム上の位置にあるコンテンツ保護情報(CCI等)を解析する。
ステップS107で、コントローラ21は、サムネール画像のCP_Info_thumbnail()を作成する。具体的には上述したように、CCI_thumbnail(図19),APS_thumbnail(図20)の値を決定する。
ステップS108で、コントローラ21は、サムネール画像の暗号化ON/OFFを決定する。ONの場合は、暗号化部22がサムネール画像とそのCP_Info_thumbnail()をストアしたtn_blockを暗号化する。
ステップS109で、コントローラ21は、上記tn_blockをストアするファイルを決定し、そのtn_blockを記録媒体26に記録する。具体的な記録処理は、ECC符号化部23、変調部24、ドライブ25により実行される。
ステップS110で、コントローラ21は、上記tn_blockの暗号化ON/OFFの情報をサムネール情報ファイルにストアし、サムネール情報ファイルを記録媒体26に記録する。具体的な記録処理は、ECC符号化部23、変調部24、ドライブ25により実行される。
次に、図30に、記録されているAVストリームに対して、ユーザにより指定された画像のサムネールを付加して記録する、記録装置のブロック図を示す。
記録媒体(ディスク)75からドライブ74を通して読み出されたアプリケーションデータベースは、復調部73,ECC復号部72,暗号の復号部71の処理を経て、コントローラ69へ入力される。コントローラ69は、記録媒体75の記録内容を説明するメニュー画面を作成して、それをモニター(図示していない)へ表示する。ユーザは、端子61のUI(User Interface)入力を通して、再生したいPlayListを選択する。コントローラ69はユーザから指定されたPlayListを再生するために必要なAVストリームを記録媒体75から読み出すように指示する。
記録媒体75からドライブ74を通して読み出されたAVストリームファイルは、復調部73,ECC復号部72,暗号の復号部71の処理を経て、ソースデパケッタイザ・分離部66へ入力される。ソースデパケッタイザ・分離部66で分離されたビデオストリームはMPEG2AVデコーダ65で復号されて、ビデオ信号が出力される。ビデオ信号はCGMS挿入部64、マクロビジョン挿入部63で所定の処理が行われて、端子62からが出力されて、モニター(図示していない)へ表示される。
ユーザは、再生されるビデオの中からマークしたいシーン(例えば、お気に入りのシーン)を、端子61からUI入力を通してコントローラ69へ指示する。
マーク点に付加して記録するサムネール画像は、マーク点の画像から作成しても良いし、または、パーソナルコンピュータやデジタルスチルカメラなどから外部入力経由で記録装置へ取り込んだ画像から作成しても良い。
マーク点の画像からサムネール画像を作成する場合、コントローラ69は、ユーザがマークした画像のタイムスタンプをソースデパケッタイザ・分離部66から取得する。そして、マーク点の画像をMPEG2 AVデコーダ65から取得して、その画像をサムネールエンコーダ67へ入力する。サムネールエンコーダ67はサムネール画像を符号化して、それをコントローラ69へ入力する。また、ソースデパケッタイザ・分離部66は、マーク点のタイムスタンプが指し示すAVストリーム上の位置にあるコンテンツ保護情報(DTCP_descriptor等)を取り出して、コントローラ69へ入力する。コントローラ69は、そのコンテンツ保護情報(DTCP_descriptor等)を解析し、CCIとアナログコピープロテクション情報(APS)を取り出す。そして、マーク点の画像のサムネール画像に対するCP_Info_thumbnail()のCCI_thumbnailとAPS_thumbnailの値を、それぞれ上記のCCIとAPSと同じ値にセットする。
次に、マーク点に付加して記録するサムネール画像を、パーソナルコンピュータやデジタルスチルカメラなどの外部入力経由で記録装置へ取り込んだ静止画像から作成する場合の動作を説明する。コントローラ69は、外部入力端子85から静止画像を取得する。そして、コンテンツ保護情報検出部86が、入力画像のコンテンツ保護情報(CGMS,APS,DTCP descriptor等)を取り出して、コントローラ69へ入力する。コントローラ69は、そのコンテンツ保護情報を解析し、CCIとアナログコピープロテクション情報(APS)を取り出す。そして、サムネール画像に対するCP_Info_thumbnail()のCCI_thumbnailとAPS_thumbnailの値を、それぞれ上記のCCIとAPSと同じ値にセットする。そして、上記静止画像をサムネールエンコーダ67へ入力する。サムネールエンコーダ67はサムネール画像を符号化して、それをコントローラ69へ入力する。
サムネール画像のCCI_thumbnailが「No more copy」である場合、そのサムネールを暗号化する必要がある。一方、サムネール画像のCCI_thumbnailが「Copy free」である場合、そのサムネールを暗号化する必要はない。
コントローラ69は、サムネールに関するアプリケーションデータベース情報を作成し、上で説明したシンタクスに基づきサムネール情報ファイル,サムネール画像ファイルおよびその他のデータベースファイル(info.dvr,PlayList file,Clip Information file)にストアする。コントローラ69は、これらのファイル情報を暗号化部76へ供給する。暗号化部76は、サムネールを暗号化する必要がある場合、それを上で説明した方法に従って暗号化する。暗号化部76は、ファイル情報をECC符号化部77へ供給する。ファイル情報は、ECC符号化部77,変調部78,ドライブ74の処理の後に、記録媒体75へ記録される。
記録されているAVストリームに対して、ユーザにより指定された画像のサムネールを付加して記録する、処理のフローチャートを図31に示す。
ステップS201において、UIを介してユーザによって再生するPlayListが指定されると、コントローラ69はこれを取得する。
ステップS202において、コントローラ69は、指定されたPlayListのビデオ再生を開始させる。再生処理は、具体的には、記録媒体75、ドライブ74、復調部73、ECC復号部72、および暗号の復号部71により実行される。
ステップS203において、ユーザがマークしたいシーンを捜し、再生中あるいは一時停止中にマークボタンを押すと、これがUIを介してコントローラ69に入力される。
ステップS204において、コントローラ69は、この入力に基づいて、マーク位置を決定する。
ステップS205において、コントローラ69は、ユーザに対して、マーク位置の画像をサムネールに使うか、それとも、サムネールに使う静止画像を外部入力から取得するかを確認する。この確認は、所定のメッセージを表示させ、そのメッセージに対応する入力をユーザから取得することで行われる。サムネールに使う場合は、ステップS206へ進み、サムネールに使う静止画像を外部入力から取得する場合はステップS208へ進む。
ステップS206において、ソースデパケッタイズ分離部66は、マーク位置の画像を取得する。
ステップS207において、ソースデパケッタイズ分離部66は、マーク位置のAVストリームのコンテンツ保護情報を取得する。
ステップS205において、サムネールに使う静止画像を外部入力から取得すると判定された場合、ステップS208において、コンテンツ保護情報検出部86は、サムネールに使う静止画像を外部入力から取得する。
ステップS209において、コンテンツ保護情報検出部86は、当該静止画像のコンテンツ保護情報を取得する。
ステップS210において、サムネールエンコーダ67は、サムネールに使う画像をサムネール画像へエンコードする。
ステップS211において、コントローラ69は、サムネール画像のCP_Info_thumbnail()を作成する。具体的には上述したように、CCI_thumbnail,APS_thumbnailの値が決定される。
ステップS212において、コントローラ69は、サムネール画像の暗号化のON/OFFを決定する。ONの場合は、暗号化部76は、サムネール画像とそのCP_Info_thumbnail()をストアしたtn_blockを暗号化する。
ステップS213において、コントローラ69は、上記tn_blockをストアするファイルを決定し、そのtn_blockを記録媒体75に記録させる。この記録は、ECC符号化部77、変調部78、ドライブ74により実行される。
ステップS214で、コントローラ69は、上記tn_blockの暗号化ON/OFFの情報をサムネール情報ファイルにストアし、サムネール情報ファイルを記録媒体75に記録させる。
次に、図32に、AVストリームを再生するとともに、そのAVストリームの代表画像や特徴点画像のサムネールを再生する、再生装置のブロック図を示す。
記録媒体75からドライブ74を通して読み出されたアプリケーションデータベースは、復調部73,ECC復号部72,暗号の復号部71の処理を経て、コントローラ69へ入力される。
コントローラ69は、ビデオ出力へ表示するサムネール画像を決定する。例えば、あるPlayListの代表画像のサムネールを表示することを決める。
コントローラ69は、上記サムネール画像に関する情報を、サムネール情報ファイルから読み出す。これにより、コントローラ69は、上記サムネール画像がストアされているサムネール画像ファイルを知り、また、そのサムネール画像の暗号化ON/OFFを知ることができる。
次に、コントローラ69は、上記サムネール画像のデータをサムネール画像ファイルから読み出す。サムネール画像が暗号化されている場合は、復号部71が暗号を復号する。また、コントローラ69は、再生するサムネール画像に対するCP_Info_thumbnail()を取得する。
コントローラ69は、当該サムネール画像をサムネールデコーダ80へ入力し、デコード画像をグラフィックス画像処理部81へ入力する。グラフィックス画像処理部81で所定の処理がされた出力画像は、画像ブレンダ処理部82で処理されて、CGMS挿入部64へ入力される。
CGMS挿入部64は、当該サムネール画像に対するCP_Info_thumbnail()のCCI_thumbnailと同じ意味を表すCGMS信号を、出力画像に挿入する。次に、マクロビジョン挿入部63は、CP_Info_thumbnail()のAPS_thumbnailと同じ意味を表すアナログコピープロテクション信号を、出力画像に挿入する。そして、端子62からビデオが再生される。
AVストリームの代表画像や特徴点画像のサムネールを再生する、再生動作のフローチャートを、図33に示す。
ステップS301において、コントローラ69は、アプリケーションデータベース情報ファイルを読み出させる。この読み出し処理は、具体的には、記録媒体75からドライブ74、復調部73、ECC復号部72、および復号部71により実行される。
ステップS302において、コントローラ69は、UIからの入力に基づいて、再生するサムネール画像を決定する。
ステップS303において、コントローラ69は、上記サムネール画像に関する情報を、サムネール情報ファイルから読み出す。
ステップS304において、コントローラ69は、上記サムネール画像がストアされているサムネール画像ファイルを取得し、また、そのサムネール画像の暗号化のON/OFFを知る。
ステップS305において、コントローラ69は、上記サムネール画像のストアされているtn_blockをサムネール画像ファイルから読み出させる。tn_blockが暗号化されている場合は、復号部71が暗号を復号する。
ステップS306において、コントローラ69は、再生するサムネール画像のCP_Info_thumbnail()をソースデパケッタイズ分離部66の出力から取得する。
ステップS307において、コントローラ69は、サムネール画像をサムネールデコーダ80に供給し、デコードさせる。サムネール画像は、グラフィクス画像処理部81による処理を経て、画像ブレンダ処理部82からCGMS挿入部64に供給される。
ステップS308において、コントローラ69は、CGMS挿入部64とマクロビジョン挿入部63を制御し、ステップS306の処理で取得したCP_Info_thumbnail()に従って、CGMSとマクロビジョンを、サムネールの表示画像に付加させる。
ステップS309において、コントローラ69は、サムネールの表示画像を端子62からビデオ出力させる。
以上のようにして、本発明では、次のようなことが可能となる。
(1)サムネール画像を暗号化するようにしたので、サムネール画像の著作権を保護することが可能となる。
(2)AVストリームを記録するとともに、そのAVストリームの代表画像や特徴点を表すサムネール画像を記録する場合において、サムネール画像が暗号化されている/されていないを区別する情報を記録するようにしたので、記録媒体上に、暗号化されたサムネール画像と暗号化されていないサムネール画像が混在する可能性がある場合において、暗号化して記録したサムネール画像と暗号化しないで記録したサムネール画像を区別して管理することができる。
(3)(2)において、サムネール画像をストアする為のサムネール画像ファイルと、サムネール画像が暗号化されている/されていないを区別する情報をストアする為のサムネール情報ファイルを分離して記録するようにしたので、サムネール情報ファイルを比較的小さなサイズのデータベースで管理できる。これにより、あるサムネール画像の再生を指示されたときに、そのサムネールが暗号化されている/されていないという情報を容易に高速に取得できる。
(4)(3)において、サムネール画像ファイルを暗号化サムネール用(menu.tdt1)と非暗号化サムネール用(menu.tdt2)で2個に分けて記録するようにしたので、一つのサムネール画像ファイルの中で暗号化ON/OFFの切り替えがないので、ファイルを読み込む時(再生時)に暗号の復号ON/OFFを切り替える必要がなく、暗号の復号処理を簡単化できる。
(5)(3)において、一つのサムネール画像ファイルの中で暗号化サムネール部分と非暗号化サムネール部分を切りかえる形式で記録するようにしたので、サムネール画像ファイルが1個となり、暗号化するサムネールと暗号化しないサムネールを区別するためのデータベース管理が容易である。なお、tn_block単位で暗号化する/しないを切り替えるようにすれば、最小単位であるtn_block単位で暗号化する/しないを切り替えるので、ディスク上に無駄なデータを記録することがない。また、tn_blockを複数個まとめた単位で暗号化する/しないを切り替えるようにしても良い。例えば、tn_blockを複数個まとめた単位を、ECCブロックと同じとすれば、ECCブロックを読み込む時(再生時)に暗号の復号ON/OFFを切り替える必要がなく、暗号の復号処理を簡単化できる。
(6)(2)において、サムネール画像に、そのコンテンツ保護情報(CP_Info_thumbnail())を付加して記録する。
(7)(6)において、サムネール画像とそのコンテンツ保護情報を、所定の大きさのブロック(tn_block)単位で記録する。
(8)(6)において、一つのtn_blockで暗号化処理が閉じるようにする
(9)(2)において、サムネール画像を作成する元になった原画像のCCIが、"Copy once"である時、サムネール画像を暗号化して記録する。
(6)乃至(9)のようにしたので、CP_Info_thumbnail()の内容が、悪意を持ったユーザによって改竄されることを防ぐことができる。また、CCI_thumbnailが「No more copy」であるサムネール画像が、不正にbit-by-bitに同じデータで別の記録媒体へコピーされたとしても、それを再生することができないように対処できる。
(8)のようにしたので、一つのtn_blockで暗号化処理が閉じるようにすることで、サムネール画像ファイルの中から任意のサムネール画像を読み出すとき、そのサムネール画像がストアされているtn_blockだけを暗号の復号(デクリプト)処理すれば良く、データ処理量を最小にできる。
(10)(2)において、サムネール画像のフォーマットはJPEGとすれば、JPEGはデファクトスタンダードとして広く使用されているので、インプリメントが比較的容易であり、互換性が高い。
(11)ビデオ信号とともに、そのビデオ信号の代表画像や特徴点を表すサムネール画像が記録されている記録媒体からサムネール画像を再生する場合において、サムネール画像が暗号化されている/されていないを区別する情報を読み出して、前記情報に基づいて、サムネール画像を再生するようにしたので、記録媒体上に、暗号化されたサムネール画像と暗号化されていないサムネール画像が混在する可能性がある場合において、暗号化して記録したサムネール画像と暗号化しないで記録したサムネール画像を区別して管理することができる。
なお、以上においては、サムネール情報ファイルとサムネール画像ファイルを分離したファイルとして管理しているが、これらの情報を一つのファイルにまとめて管理しても良い。例えば、一つのファイルの中で各サムネール画像が暗号化されている/されていないという情報を集めたオブジェクトと、サムネール画像を集めたオブジェクトを管理するようにしても良い。
また、ファイルという形式でデータを管理する(ファイルシステムを使ってデータを管理する)必要も必ずしもなく、記録装置/再生装置が管理できる形式でデータを管理できれば良い。
さらに、以上においては、記録装置と再生装置をそれぞれ別々の構成として示したが、記録と再生の両方が可能な記録再生装置として一体化することももちろん可能である。この場合、図26、図30、および図32に示した各ブロックのうち、対応するブロックは、適宜共通のものとされる。
また、以上においては、AVストリームを記録または再生するようにしたが、ビデオ信号だけを記録または再生する場合にも、本発明は適用することができる。
13 マクロビジョン検出部, 14 CGMS検出更新部, 15 ウォーターマーク検出更新部, 16 MPEG2AVエンコーダ, 17 多重化ソースパケット化部, 18 ビデオ解析部, 19 サムネールエンコーダ, 20 ストリーム解析部, 21 コントローラ, 22 暗号化部, 26 記録媒体, 28 E-CCI解析更新部, 29 ウォーターマーク検出更新部, 30 デコーダ, 63 マクロビジョン挿入部, 64 CGMS挿入部, 65 MPEG2AVデコーダ, 66 ソースデパケッタイズ分離部, 67 サムネールエンコーダ, 69 コントローラ, 71 復号部, 75 記録媒体, 76 暗号化部