以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。なお、説明は以下の順序で行う。
1.記録再生装置の構成
2.AVストリームの編集
3.制御部の機能的構成
4.操作の説明
5.PlayList
6.Real PlayListの編集
7.Virtual PlayListに対する操作
8.Virtual PlayList の再編集
9.マーク
10.サムネイル
11.CPI
12. ディレクトリとファイル
13.INDEX.BAVファイル
14.INFO.BAV
15.ExtensionData()
16.PL_to_Clips_table()
17.Real PlayList fileとVirtual PlayList file
18.PlayListのシンタクス
19.UIAppInfoPlayList
20.PlayItemのシンタクス
21.PlayListMark()
22.MENU.THM
23.AVストリームファイル
24.記録処理1
25.コンテンツ削除処理
26.編集の例1
27.記録処理2
28.編集の例2
29.本技術のプログラムへの適用
30.その他
[記録再生装置の構成]
以下に、本技術の実施の形態について、図面を参照して説明する。図1は、本技術を適用した情報処理装置の一実施の形態の内部構成例を示す図である。まず、外部から入力された信号を記録媒体に記録する動作を行う部分の構成について説明する。情報の記録または再生の少なくとも一方を実行する情報処理装置としての記録再生装置1は、アナログデータ、または、デジタルデータを入力し、記録することができる構成とされている。
端子11には、アナログのビデオ信号が、端子12には、アナログのオーディオ信号が、それぞれ入力される。端子11に入力されたビデオ信号は、解析部14とAVエンコーダ15に、それぞれ出力される。端子12に入力されたオーディオ信号は、AVエンコーダ15に出力される。解析部14は、入力されたビデオ信号からシーンチェンジなどの特徴点を抽出する。
AVエンコーダ15は、入力されたビデオ信号とオーディオ信号を、それぞれ符号化し、符号化ビデオストリーム(V)、符号化オーディオストリーム(A)、およびAV同期等のシステム情報(S)をマルチプレクサ16に出力する。
符号化ビデオストリームは、例えば、MPEG(Moving Picture Expert Group)2方式により符号化されたビデオストリームであり、符号化オーディオストリームは、例えば、MPEG1方式により符号化されたオーディオストリームや、ドルビーAC3方式により符号化されたオーディオストリーム等である。マルチプレクサ16は、入力されたビデオおよびオーディオのストリームを、入力システム情報に基づいて多重化して、スイッチ17を介して多重化ストリーム解析部18とソースパケッタイザ19に出力する。
多重化ストリームは、例えば、MPEG2トランスポートストリームやMPEG2プログラムストリームである。ソースパケッタイザ19は、入力された多重化ストリームを、そのストリームを記録させる記録媒体100のアプリケーションフォーマットに従って、ソースパケットから構成されるAVストリームに符号化する。AVストリームは、ECC(誤り訂正)符号化部20、変調部21で所定の処理が施され、書き込み部22に出力される。書き込み部22は、制御部23から出力される制御信号に基づいて、記録媒体100にAVストリームファイルを書き込む(つまり記録する)。なお、記録媒体100は、ブルーレイディスク、DVD(Digital Versatile Disk)、ハードディスク等のディスクの他、フラッシュメモリカードといった半導体メモリにより構成することができる。
デジタルインタフェイスまたはデジタルテレビジョンチューナから入力されるデジタルテレビジョン放送等のトランスポートストリームは、端子13に入力される。端子13に入力されたトランスポートストリームの記録方式には、2通りあり、それらは、トランスペアレントに記録する方式と、記録ビットレートを下げるなどの目的のために再エンコードをした後に記録する方式である。記録方式の指示情報は、ユーザインタフェイス(図示せず)が接続されている端子24から制御部23へ入力される。
入力トランスポートストリームをトランスペアレントに記録する場合、端子13に入力されたトランスポートストリームは、多重化ストリーム解析部18と、ソースパケッタイザ19に出力される。これ以降の記録媒体100へAVストリームが記録されるまでの処理は、上述の入力オーディオ信号とビデオ信号を符号化して記録する場合と同一の処理なので、その説明は省略する。
入力トランスポートストリームを再エンコードした後に記録する場合、端子13に入力されたトランスポートストリームは、デマルチプレクサ26に入力される。デマルチプレクサ26は、入力されたトランスポートストリームに対してデマルチプレクス処理を施し、ビデオストリーム(V)、オーディオストリーム(A)、およびシステム情報(S)を抽出する。
デマルチプレクサ26により抽出されたストリーム(すなわち情報)のうち、ビデオストリームはAVデコーダ27に、オーディオストリームとシステム情報はマルチプレクサ16に、それぞれ出力される。AVデコーダ27は、入力されたビデオストリームを復号し、その再生ビデオ信号をAVエンコーダ15に出力する。AVエンコーダ15は、入力ビデオ信号を符号化し、符号化ビデオストリーム(V)をマルチプレクサ16に出力する。
一方、デマルチプレクサ26から出力され、マルチプレクサ16に入力されたオーディオストリームとシステム情報、および、AVエンコーダ15から出力されたビデオストリームは、入力システム情報に基づいて、多重化されて、多重化ストリームとして多重化ストリーム解析部18とソースパケットタイザ19にスイッチ17を介して出力される。これ以後の記録媒体100へAVストリームが記録されるまでの処理は、上述の入力オーディオ信号とビデオ信号を符号化して記録する場合と同一の処理なので、その説明は省略する。
本実施の形態の記録再生装置1は、AVストリームのファイルを記録媒体100に記録すると共に、そのファイルを説明するアプリケーションデータベース情報も記録する。アプリケーションデータベース情報は、制御部23により作成される。制御部23への入力情報は、解析部14からの動画像の特徴情報、多重化ストリーム解析部18からのAVストリームの特徴情報、および端子24から入力されるユーザからの指示情報である。
解析部14から供給される動画像の特徴情報は、入力動画像信号の中の特徴的な画像に関係する情報であり、例えば、プログラムの開始点、シーンチェンジ点、コマーシャル(CM)の開始・終了点などの指定情報(例えばマーク)であり、また、その指定場所の画像のサムネイル画像の情報も含まれる。
多重化ストリーム解析部18からのAVストリームの特徴情報は、記録されるAVストリームの符号化情報に関係する情報であり、例えば、AVストリーム内のIピクチャのアドレス情報、AVストリームの符号化パラメータ、AVストリームの中の符号化パラメータの変化点情報、ビデオストリームの中の特徴的な画像に関係する情報(例えばマーク)などである。
端子24からのユーザの指示情報は、AVストリームの中の、ユーザが指定した再生区間の指定情報、その再生区間の内容を説明するキャラクタ文字、ユーザが好みのシーンにセットするブックマークやリジューム点の情報などである。
例えばマイクロプロセッサユニットからなる制御部23は、所定の情報を記憶する記憶部23Aを有している。制御部23は、上記の入力情報に基づいて、AVストリームのデータベース(Clip)、 AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベース、記録媒体100の記録内容の管理情報(INFO.BAV)、およびサムネイル画像の情報を作成する。これらの情報から構成されるアプリケーションデータベース情報は、AVストリームと同様にして、ECC符号化部20、変調部21で処理されて、書き込み部22へ入力される。書き込み部22は、制御部23から出力される制御信号に基づいて、記録媒体100へデータベースファイルを記録する。
上述したアプリケーションデータベース情報についての詳細は後述する。
このようにして記録媒体100に記録されたAVストリームファイル(すなわち画像データと音声データのファイル)と、アプリケーションデータベース情報が再生される場合、次のように処理される。まず、制御部23は、読み出し部28に対して、記録媒体100からアプリケーションデータベース情報を読み出すように指示する。そして、読み出し部28は、記録媒体100からアプリケーションデータベース情報を読み出し、そのアプリケーションデータベース情報は、復調部29、ECC復号部30の処理を経て、制御部23へ入力される。
制御部23は、アプリケーションデータベース情報に基づいて、記録媒体100に記録されているPlayListの一覧(つまりコンテンツの一覧)を、ユーザインタフェイス入出力が接続されている端子24に出力する。勿論、PlayListの一覧をビデオ出力として端子32から図示せぬディスプレイに出力することもできる。ユーザが、PlayListの一覧から再生したいPlayList(つまりコンテンツ)を選択すると、再生を指定されたPlayListに関する情報が端子24のユーザインタフェイス入出力から制御部23へ入力される。制御部23は、そのPlayListの再生に必要なAVストリームファイルの読み出しを、読み出し部28に指示する。読み出し部28は、その指示に従い、記録媒体100から対応するAVストリームを読み出し復調部29に出力する。復調部29に入力されたAVストリームは、所定の処理が施されることにより復調され、さらにECC復号部30の処理を経て、ソースデパケッタイザ31出力される。
PlayListの一覧は、ユーザがPlayListの削除を指示した場合にも表示される。ユーザは表示された一覧の中から具体的に削除するPlayListを指定する。
ソースデパケッタイザ31は、記録媒体100から読み出され、所定の処理が施されたアプリケーションフォーマットのAVストリームを、デマルチプレクサ26に出力できるストリームに変換する。デマルチプレクサ26は、制御部23により指定されたAVストリームの再生区間(すなわちPlayItem)を構成するビデオストリーム(V)、オーディオストリーム(A)、およびAV同期等のシステム情報(S)を、AVデコーダ27に出力する。AVデコーダ27は、ビデオストリームとオーディオストリームを復号し、再生ビデオ信号と再生オーディオ信号を、それぞれ対応する端子32と端子33から出力する。
また、ユーザインタフェイスとしての端子24から、ランダムアクセス再生や特殊再生を指示する情報が入力された場合、制御部23は、AVストリームのデータベース(Clip)の内容に基づいて、記録媒体100からのAVストリームの読み出し位置を決定し、そのAVストリームの読み出しを、読み出し部28に指示する。例えば、ユーザにより選択されたPlayListを、所定の時刻から再生する場合、制御部23は、指定された時刻に最も近いタイムスタンプを持つIピクチャからのデータを読み出すように読み出し部28に指示する。
また、ユーザによって高速再生(Fast-forward playback)が指示された場合、制御部23は、AVストリームのデータベース(Clip)に基づいて、AVストリームの中のI-ピクチャデータを順次連続して読み出すように読み出し部28に指示する。
読み出し部28は、指定されたランダムアクセスポイントからAVストリームのデータを読み出し、読み出されたデータは、後段の各部の処理を経て再生される。
[AVストリームの編集]
次に、ユーザが、記録媒体100に記録されているAVストリームの編集をする場合を説明する。ユーザが、記録媒体100に記録されているAVストリームの再生区間を指定して新しい再生経路を作成したい場合、例えば、番組Aという歌番組から歌手aの部分を再生し、その後続けて、番組Bという歌番組の歌手aの部分を再生したいといった再生経路を作成したい場合、ユーザインタフェイスとしての端子24から再生区間の開始点(イン点)と終了点(アウト点)の情報が制御部23に入力される。制御部23は、AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベースを作成する。
ユーザが、記録媒体100に記録されているAVストリームの一部を削除したい場合、ユーザインタフェイスとしての端子24から削除区間のイン点とアウト点の情報が制御部23に入力される。制御部23は、必要なAVストリーム部分だけを参照するようにPlayListのデータベースを変更する。また、AVストリームの不必要なストリーム部分を削除するように、書き込み部22に指示する。
ユーザが、記録媒体100に記録されているAVストリームの再生区間を指定して新しい再生経路を作成したい場合であり、かつ、それぞれの再生区間をシームレスに接続したい場合について説明する。このような場合、制御部23は、AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベースを作成し、さらに、再生区間の接続点付近のビデオストリームの部分的な再エンコードと再多重化を行う。
まず、端子24から再生区間のイン点のピクチャの情報と、アウト点のピクチャの情報が制御部23へ入力される。制御部23は、読み出し部28にイン点側ピクチャとアウト点側のピクチャを再生するために必要なデータの読み出しを指示する。そして、読み出し部28は、記録媒体100からデータを読み出し、そのデータは、復調部29、ECC復号部30、ソースデパケッタイザ31を経て、デマルチプレクサ26に出力される。
制御部23は、デマルチプレクサ26に入力されたデータを解析して、ビデオストリームの再エンコード方法(picture_coding_typeの変更、再エンコードする符号化ビット量の割り当て)と、再多重化方式を決定し、その方式をAVエンコーダ15とマルチプレクサ16に供給する。
次に、デマルチプレクサ26は、入力されたストリームをビデオストリーム(V)、オーディオストリーム(A)、およびシステム情報(S)に分離する。ビデオストリームは、「AVデコーダ27に入力されるデータ」と「マルチプレクサ16に入力されるデータ」がある。前者のデータは、再エンコードするために必要なデータであり、これはAVデコーダ27で復号され、復号されたピクチャはAVエンコーダ15で再エンコードされて、ビデオストリームにされる。後者のデータは、再エンコードをしないで、オリジナルのストリームからコピーされるデータである。オーディオストリーム、システム情報については、直接、マルチプレクサ16に入力される。
マルチプレクサ16は、制御部23から入力された情報に基づいて、入力ストリームを多重化し、多重化ストリームを出力する。多重化ストリームは、ECC符号化部20、変調部21で処理されて、書き込み部22に入力される。書き込み部22は、制御部23から供給される制御信号に基づいて、記録媒体100にAVストリームを記録する。
[制御部の機能的構成]
図2は、制御部23の機能的構成を示すブロック図である。この実施の形態においては、制御部23は、記録部201、取得部202、設定部203、判定部204、削除部205、更新部206、および検索部207を有している。これらの各部は、例えばハードウェアにより構成することもできるし、ソフトウェアにより構成することもできる。
記録部201は、各種の情報を記録する。取得部202は、各種の情報を取得する。設定部203は、所定の情報を設定する。判定部204は、判定処理を行う。削除部205は、所定の情報を削除する。更新部206は、所定の情報を更新する。検索部207は、所定の情報を検索する。
[操作の説明]
以下に、アプリケーションデータベース情報や、その情報に基づく再生、編集といった操作に関する説明をする。図3は、アプリケーションフォーマットの構造を説明する図である。アプリケーションフォーマットは、AVストリームの管理のためにPlayListとClipの2つのレイヤをもつ。Volume Informationは、ディスク内のすべてのClipとPlayListの管理をする。ここでは、1つのAVストリームとその付属情報のペアを1つのオブジェクトと考え、それをClipと称する。AVストリームファイルはClip AV stream fileと称し、その付属情報は、Clip Information fileと称する。つまり、Clipは、コンテンツの実態としての実態情報であり、PlayListはその実態情報の再生を指定する再生情報である。
1つのClip AV stream fileは、MPEG2トランスポートストリームをアプリケーションフォーマットによって規定される構造に配置したデータをストアする。一般的に、ファイルは、バイト列として扱われるが、Clip AV stream fileのコンテンツは、時間軸上に展開され、Clipの中のエントリポイントは、主に時間ベースで指定される。所定のClipへのアクセスポイントのタイムスタンプが与えられた時、Clip Information fileは、Clip AV stream fileの中でデータの読み出しを開始すべきアドレス情報を見つけるために役立つ。
[PlayList]
PlayListについて、図4を参照して説明する。PlayListは、Clipの中からユーザが見たい再生区間を選択し、それを簡単に編集することができるようにするために設けられている。1つのPlayListは、Clipの中の再生区間の集まりである。所定のClipの中の1つの再生区間は、PlayItemと呼ばれ、それは、時間軸上のイン点(IN)とアウト点(OUT)の対で表される。従って、PlayListは、複数のPlayItemが集まることにより構成される。
PlayListには、2つのタイプがある。1つは、Real PlayListであり、もう1つは、Virtual PlayListである。Real PlayListは、それが参照しているClipのストリーム部分を共有している。すなわち、Real PlayListは、それの参照しているClipのストリーム部分に相当するデータ容量をディスクの中で占め、Real PlayListが削除された場合、それが参照しているClipのストリーム部分もまたデータが削除される。
Virtual PlayListは、Clipのデータを共有していない。従って、Virtual PlayListが変更または削除されたとしても、Clipの内容には何も変化が生じない。
[Real PlayListの編集]
次に、Real PlayListの編集について説明する。図5(A)は、Real PlayListのクリエイト(create:作成)に関する図であり、AVストリームが新しいClipとして記録される場合、そのClip全体を参照するReal PlayListが新たに作成される操作である。
図5(B)は、Real PlayListのディバイド(divide:分割)に関する図であり、Real PlayListが所望な点で分けられて、2つのReal PlayListに分割される操作である。この分割という操作は、例えば、1つのPlayListにより管理される1つのクリップ内に、2つの番組が管理されているような場合に、ユーザが1つ1つの番組として登録(記録)し直したいといったようなときに行われる。この操作により、Clipの内容が変更される(Clip自体が分割される)ことはない。
図5(C)は、Real PlayListのコンバイン(combine:結合)に関する図であり、2つのReal PlayListを結合して、1つの新しいReal PlayListにする操作である。この結合という操作は、例えば、ユーザが2つの番組を1つの番組として登録し直したいといったようなときに行われる。この操作により、Clipが変更される(Clip自体が1つにされる)ことはない。
図6(A)は、Real PlayList全体のデリート(delete:削除)に関する図であり、所定のReal PlayList全体を削除する操作がされた場合、削除されたReal PlayListが参照するClipの、対応するストリーム部分も削除される。
図6(B)は、Real PlayListの部分的な削除に関する図であり、Real PlayListの所望な部分が削除された場合、対応するPlayItemが、必要なClipのストリーム部分だけを参照するように変更される。そして、Clipの対応するストリーム部分は削除される。
図6(C)は、Real PlayListのミニマイズ(Minimize:最小化)に関する図であり、Real PlayListに対応するPlayItemを、Virtual PlayListに必要なClipのストリーム部分だけを参照するようにする操作である。Virtual PlayList にとって不必要なClipの、対応するストリーム部分は削除される。
上述したような操作により、Real PlayListが変更されて、そのReal PlayListが参照するClipのストリーム部分が削除された場合、その削除されたClipを使用しているVirtual PlayListが存在し、そのVirtual PlayListにおいて、削除されたClipにより問題が生じる可能性がある。
そのようなことが生じないように、ユーザに、削除という操作に対して、「そのReal PlayListが参照しているClipのストリーム部分を参照しているVirtual PlayListが存在し、もし、そのReal PlayListが削除されると、そのVirtual PlayListもまた削除されることになるが、それでも良いか?」といったメッセージなどを表示させることにより、確認(警告)を促した後に、ユーザの指示により削除の処理を実行、または、キャンセルする。または、Virtual PlayListを削除する代わりに、Real PlayListに対してミニマイズの操作が行われるようにする。
[Virtual PlayListに対する操作]
次にVirtual PlayListに対する操作について説明する。Virtual PlayListに対して操作が行われたとしても、Clipの内容が変更されることはない。図7は、アセンブル(Assemble)編集 (IN-OUT 編集)に関する図であり、ユーザが見たいと所望した再生区間のPlayItemを作り、Virtual PlayListを作成するといった操作である。PlayItem間のシームレス接続が、アプリケーションフォーマットによりサポートされている。
図7(A)に示したように、2つのReal PlayList1,2と、それぞれのReal PlayListに対応するClip1,2が存在している場合に、ユーザがReal PlayList1内の所定の区間(In1乃至Out1までの区間:PlayItem1)を再生区間として指示し、続けて再生する区間として、Real PlayList2内の所定の区間(In2乃至Out2までの区間:PlayItem2)を再生区間として指示したとき、図7(B)に示すように、PlayItem1とPlayItem2から構成される1つのVirtual PlayListが作成される。
[Virtual PlayList の再編集]
次に、Virtual PlayList の再編集(Re-editing)について説明する。再編集には、VirtualPlayListの中のイン点やアウト点の変更、Virtual PlayListへの新しいPlayItemの挿入(insert)や追加(append)、Virtual PlayListの中のPlayItemの削除などがある。また、Virtual PlayListそのものを削除することもできる。
図8は、Virtual PlayListへのオーディオのアフレコ(Audio dubbing (post recording))に関する図であり、Virtual PlayListへのオーディオのアフレコをサブパスとして登録する操作のことである。このオーディオのアフレコは、アプリケーションフォーマットによりサポートされている。Virtual PlayListのメインパスのAVストリームに、付加的なオーディオストリームが、サブパスとして付加される。
Real PlayListとVirtual PlayListで共通の操作として、図9に示すようなPlayListの再生順序の変更(Moving)がある。この操作は、ディスク(ボリューム)の中でのPlayListの再生順序の変更であり、アプリケーションフォーマットにおいて定義されるTable Of PlayListによってサポートされる。この操作により、Clipの内容が変更されるようなことはない。
[マーク]
次に、マーク(Mark)について説明する。マークは、ClipおよびPlayListの中のハイライトや特徴的な時間を指定するために設けられている。Clipに付加されるマークは、AVストリームの内容に起因する特徴的なシーンを指定する、例えば、シーンチェンジ点などである。PlayListを再生する時、そのPlayListが参照するClipのマークを参照して、使用する事ができる。
PlayListに付加されるマークは、主にユーザによってセットされる、例えば、ブックマークやリジューム点などである。ClipまたはPlayListにマークをセットすることは、マークの時刻を示すタイムスタンプをマークリストに追加することにより行われる。また、マークを削除することは、マークリストの中から、そのマークのタイムスタンプを除去する事である。従って、マークの設定や削除により、AVストリームは何の変更もされない。
[サムネイル]
次にサムネイルについて説明する。サムネイルは、Volume、PlayList、およびClipに付加される静止画である。サムネイルには、2つの種類があり、1つは、内容を表す代表画としてのサムネイルである。これは主としてユーザがカーソル(不図示)などを操作して見たいものを選択するためのメニュー画面で使われるものである。もう1つは、マークが指しているシーンを表す画像である。
Volumeと各Playlistは代表画を持つことができるようにする必要がある。Volumeの代表画は、ディスク(記録媒体100、以下、記録媒体100はディスク状のものであるとし、適宜、ディスクと記述する)を記録再生装置1の所定の場所にセットした時に、そのディスクの内容を表す静止画を最初に表示する場合などに用いられることを想定している。Playlistの代表画は、Playlistを選択するメニュー画面(コンテンツの一覧の画面)において、Playlistの内容を表すための静止画として用いられることを想定している。
Playlistの代表画として、Playlistの最初の画像をサムネイル(代表画)にすることが考えられるが、必ずしも再生時刻0の先頭の画像が内容を表す上で最適な画像とは限らない。そこで、Playlistのサムネイルとして、任意の画像をユーザが設定できるようにする。以上2種類のサムネイルをメニューサムネイルと称する。メニューサムネイルは頻繁に表示されるため、ディスクから高速に読み出される必要がある。このため、すべてのメニューサムネイルを1つのファイルに格納することが効率的である。メニューサムネイルは、必ずしもボリューム内の動画から抜き出したピクチャである必要はなく、図11に示すように、パーソナルコンピュータやデジタルスチルカメラから取り込こまれた画像でもよい。
一方、ClipとPlaylistには、複数個のマークを打てる必要があり、マーク位置の内容を知るためにマーク点の画像を容易に見ることが出来るようにする必要がある。このようなマーク点を表すピクチャをマークサムネイル(Mark Thumbnails)と称する。従って、サムネイルの元となる画像は、外部から取り込んだ画像よりも、マーク点の画像を抜き出したものが主となる。
図12は、PlayListに付けられるマークと、そのマークサムネイルの関係について示す図であり、図13は、Clipに付けられるマークと、そのマークサムネイルの関係について示す図である。マークサムネイルは、メニューサムネイルと異なり、Playlistの詳細を表す時に、サブメニュー等で使われるため、短いアクセス時間で読み出されるようなことは要求されない。そのため、サムネイルが必要になる度に、記録再生装置1がファイルを開き、そのファイルの一部を読み出すことで多少時間がかかっても、問題にはならない。
また、ボリューム内に存在するファイル数を減らすために、すべてのマークサムネイルは1つのファイルに格納するのがよい。Playlistはメニューサムネイル1つと複数のマークサムネイルを有することができるが、Clipは直接ユーザが選択する必要性がない(通常、Playlist経由で指定する)ため、メニューサムネイルを設ける必要はない。
図14は、上述したことを考慮した場合のメニューサムネイル、マークサムネイル、PlayList、およびClipの関係について示した図である。メニューサムネイルファイルには、PlayList毎に設けられたメニューサムネイルがファイルされている。メニューサムネイルファイルには、ディスクに記録されているデータの内容を代表するボリュームサムネイルが含まれている。マークサムネイルファイルは、各PlayList毎と各Clip毎に作成されたサムネイルがファイルされている。
[CPI]
次に、CPI(Characteristic Point Information)について説明する。CPIは、Clipインフォメーションファイルに含まれるデータであり、主に、それはClipへのアクセスポイントのタイムスタンプが与えられた時、Clip AV stream fileの中でデータの読み出しを開始すべきデータアドレスを見つけるために用いられる。本実施の形態では、2種類のCPIを用いる。1つは、EP_mapであり、もう1つは、TU_mapである。
EP_mapは、エントリポイント(EP)データのリストであり、それはエレメンタリーストリームおよびトランスポートストリームから抽出されたものである。これは、AVストリームの中でデコードを開始すべきエントリポイントの場所を見つけるためのアドレス情報を持つ。1つのEPデータは、プレゼンテーションタイムスタンプ(PTS)と、そのPTSに対応するアクセスユニットのAVストリームの中のデータアドレスの対で構成される。
EP_mapは、主に2つの目的のために使用される。第1に、PlayListの中でプレゼンテーションタイムスタンプによって参照されるアクセスユニットのAVストリームの中のデータアドレスを見つけるために使用される。第2に、ファーストフォワード再生やファーストリバース再生のために使用される。記録再生装置1が、入力AVストリームを記録する場合、そのストリームのシンタクスを解析することができるとき、EP_mapが作成され、ディスクに記録される。
TU_mapは、デジタルインタフェースを通して入力されるトランスポートパケットの到着時刻に基づいたタイムユニット(TU)データのリストを持つ。これは、到着時刻ベースの時間とAVストリームの中のデータアドレスとの関係を与える。記録再生装置1が、入力AVストリームを記録する場合、そのストリームのシンタクスを解析することができないとき、TU_mapが作成され、ディスクに記録される。
STCInfoは、MPEG2トランスポートストリームをストアしているAVストリームファイルの中にあるSTCの不連続点情報をストアする。AVストリームがSTCの不連続点を持つ場合、そのAVストリームファイルの中で同じ値のPTSが現れるかもしれない。そのため、AVストリーム上のある時刻をPTSベースで指す場合、アクセスポイントのPTSだけではそのポイントを特定するためには不十分である。更に、そのPTSを含むところの連続なSTC区間のインデックスが必要である。連続なSTC区間を、このフォーマットでは STC-sequenceと呼び、そのインデックスをSTC-sequence-idと呼ぶ。STC-sequenceの情報は、Clip Information fileのSTCInfoで定義される。STC-sequence-idは、EP_mapを持つAVストリームファイルで使用するものであり、TU_mapを持つAVストリームファイルではオプションである。
プログラムは、エレメンタリーストリームの集まりであり、これらのストリームの同期再生のために、ただ1つのシステムタイムベースを共有するものである。再生装置(図1の記録再生装置1)にとって、AVストリームのデコードに先だち、そのAVストリームの内容がわかることは有用である。例えば、ビデオやオーディオのエレメンタリーストリームを伝送するトランスポートパケットのPIDの値や、ビデオやオーディオのコンポーネント種類(例えば、HDTVのビデオとMPEG-2 AACのオーディオストリームなど)などの情報である。この情報はAVストリームを参照するところのPlayListの内容をユーザに説明するところのメニュー画面を作成するのに有用であるし、また、AVストリームのデコードに先だって、再生装置のAVデコーダおよびデマルチプレクサの初期状態をセットするために役立つ。この理由のために、Clip Information fileは、プログラムの内容を説明するためのProgramInfoを持つ。
MPEG2トランスポートストリームをストアしているAVストリームファイルは、ファイルの中でプログラム内容が変化するかもしれない。例えば、ビデオエレメンタリーストリームを伝送するところのトランスポートパケットのPIDが変化したり、ビデオストリームのコンポーネント種類がSDTVからHDTVに変化するなどである。
ProgramInfoは、AVストリームファイルの中でのプログラム内容の変化点の情報をストアする。AVストリームファイルの中で、このフォーマットで定めるところのプログラム内容が一定である区間をProgram-sequenceと呼ぶ。Program-sequenceは、EP_mapを持つAVストリームファイルで使用するものであり、TU_mapを持つAVストリームファイルではオプションである。
本実施の形態では、セルフエンコードのストリームフォーマット(SESF)を定義する。SESFは、アナログ入力信号を符号化する目的、およびデジタル入力信号(例えばDV)をデコードしてからMPEG2トランスポートストリームに符号化する場合に用いられる。
SESFは、MPEG-2トランスポートストリームおよびAVストリームについてのエレメンタリーストリームの符号化制限を定義する。記録再生装置1が、SESFストリームをエンコードし、記録する場合、EP_mapが作成され、ディスクに記録される。
デジタル放送のストリームは、次に示す方式のうちのいずれかが用いられて記録媒体100に記録される。まず、デジタル放送のストリームをSESFストリームにトランスコーディングする。この場合、記録されたストリームは、SESFに準拠しなければならない。この場合、EP_mapが作成されて、ディスクに記録されなければならない。
あるいは、デジタル放送のストリームを構成するエレメンタリーストリームを新しいエレメンタリーストリームにトランスコーディングし、そのデジタル放送ストリームの規格化組織が定めるストリームフォーマットに準拠した新しいトランスポートストリームに再多重化する。この場合、EP_mapが作成されて、ディスクに記録されなければならない。
例えば、入力ストリームがISDB(日本のデジタルBS放送の規格名称)準拠のMPEG-2トランスポートストリームであり、それがHDTVビデオストリームとMPEG AACオーディオストリームを含むとする。HDTVビデオストリームをSDTVビデオストリームにトランスコーディングし、そのSDTVビデオストリームとオリジナルのAACオーディオストリームをTSに再多重化する。SDTVストリームと記録されるトランスポートストリームは、共にISDBフォーマットに準拠しなければならない。
デジタル放送のストリームが、記録媒体100に記録される際の他の方式として、入力トランスポートストリームをトランスペアレントに記録する(入力トランスポートストリームを何も変更しないで記録する)場合であり、ストリームのシンタクスを解析することができるときに、EP_mapが作成されてディスクに記録される。
または、入力トランスポートストリームをトランスペアレントに記録する(入力トランスポートストリームを何も変更しないで記録する)場合であり、ストリームのシンタクスを解析することができないときに、TU_mapが作成されてディスクに記録される。
[ディレクトリとファイル]
次にディレクトリとファイルについて説明する。以下、記録再生装置1をDVR(Digital Video Recording)と適宜記述する。図15はディスク上のディレクトリ構造の一例を示す図である。DVRのディスク上に必要なディレクトリは、図15に示したように、"BDAV"ディレクトリを含むrootディレクトリ、"PLAYLIST"ディレクトリ、"CLIPINF"ディレクトリ、および"STREAM"ディレクトリである。rootディレクトリの下に、これら以外のディレクトリを作成されるようにしても良いが、それらは、本実施の形態のアプリケーションフォーマットでは、無視されるとする。
"BDAV"ディレクトリの下には、 DVRアプリケーションフォーマットによって規定される全てのファイルとディレクトリがストアされる。"BDAV"ディレクトリは、3個のディレクトリを含む。"PLAYLIST"ディレクトリの下には、Real PlayListとVirtual PlayListのデータベースファイルが置かれる。このディレクトリは、PlayListが1つもなくても存在する。
"CLIPINF"ディレクトリの下には、Clipのデータベースが置かれる。このディレクトリも、Clipが1つもなくても存在する。"STREAM"ディレクトリの下には、AVストリームファイルが置かれる。このディレクトリは、AVストリームファイルが1つもなくても存在する。
"BDAV"ディレクトリは、次に示すファイルをストアする。”INDEX.BAV”ファイルは、PLAYLISTディレクトリの下のすべてのPlayList filesについて、UIAppInfoPlayList()の情報の中で、タイトル一覧の表示に有用な表示情報を抜粋して集めたインデックスファイルである。ここには、追加で、PlayList fileファイル毎のメーカのプライベートデータも格納することができる。”INDEX.BAV”ファイルは、コンテンツを記録するPLAYLISTディレクトリと同じ親のディレクトリであるBDAVディレクトリの下に位置し、かつ、同じ並びに位置する。つまり両者は兄弟のディレクトリである。”INDEX.BAV”ファイルの詳細については図17を参照して後述する。
"INFO.BAV"ファイルは、 BDAVディレクトリの下に作られ、アプリケーションレイヤの全体的な情報をストアする。BDAVディレクトリの下には、ただ1つのINFO.BAVがなければならない。ファイル名は、INFO.BAVに固定される。"MENU.THM"ファイルは、メニューサムネイル画像(コンテンツ一覧のサムネイル画像)に関連する情報をストアする。BDAVディレクトリの下には、0または1つのメニューサムネイルがなければならない。ファイル名は、MENU.THMに固定される。メニューサムネイル画像が1つもない場合、このファイルは、存在しなくても良い。
"PLAYLIST"ディレクトリは、2種類のPlayListファイルをストアするものであり、それらは、Real PlayListとVirtual PlayListである。"xxxxx.RPL" ファイルは、1つのReal PlayListに関連する情報をストアする。それぞれのReal PlayList毎に、1つのファイルが作られる。ファイル名は、"xxxxx.RPL"である。ここで、"xxxxx"は、5個の0乃至9まで数字である。ファイル拡張子は、"RPL"でなければならないとする。
"yyyyy.VPL"ファイルは、1つのVirtual PlayListに関連する情報をストアする。それぞれのVirtual PlayList毎に、1つのファイルが作られる。ファイル名は、"yyyyy.VPL"である。ここで、"yyyyy"は、5個の0乃至9まで数字である。ファイル拡張子は、"VPL"でなければならないとする。
"CLIPINF"ディレクトリは、それぞれのAVストリームファイルに対応して、1つのファイルをストアする。"zzzzz.CPI" ファイルは、1つのAVストリームファイル(Clip AV stream file または Bridge-Clip AV stream file)に対応するClip Information fileである。ファイル名は、"zzzzz. CPI"であり、"zzzzz"は、5個の0乃至9までの数字である。ファイル拡張子は、"CPI"でなければならないとする。
"STREAM"ディレクトリは、AVストリームのファイルをストアする。"zzzzz.MTS"ファイルは、DVRシステムにより扱われるAVストリームファイルである。これは、Clip AV stream fileまたはBridge-Clip AV streamである。ファイル名は、"zzzzz. MTS"であり、"zzzzz"は、5個の0乃至9までの数字である。ファイル拡張子は、"MTS"でなければならないとする。
[INDEX.BAVファイル]
次に図15の”INDEX.BAV”ファイルについて説明する。記録媒体100に記録されたコンテンツである番組をユーザに選択させるために、番組のタイトル一覧(すなわちPlayList一覧)が生成され、そのうちの表示可能な範囲が抽出され、端子24からユーザインタフェイス入出力に出力され、表示される。または端子32から図示せぬディスプレイに出力され、表示される。図17を参照して後述するように、1つの”INDEX.BAV”ファイルには、タイトル一覧を表示するのに必要な全番組の表示情報がまとめて格納されている。その結果、タイトル一覧を迅速に作成し、表示することが可能になる。
図16は、タイトル一覧の表示例を示す図である。画面表示のデザインや表示内容は、記録再生装置1のメーカに依存する。この例においては、次の表示情報が表示されている。
番組のタイトル:朝のニュース。昼のニュース、昼のバラエティ、夜のニュース
夜の歌謡番組
記録日時:1月1日(月)7:00AM、1月1日(月)0:00PM
1月1日(月)1:00PM、1月1日(月)7:00PM
1月1日(月)9:00PM
番組の時間長:1時間30分、1時間00分、2時間00分、
チャンネル番号:1ch、2ch、3ch
チャンネル名:日本放送局、AAA放送局
記録モード:直接記録モード、標準記録モード、長時間記録モード
タイトル一覧には、ユーザが確実に所望の番組(すなわちタイトル)を選択することができるような情報である表示情報を表示する必要がある。この表示情報は、例えば次のような情報を含むことができる。
1 タイトル(番組)の名称 (PlayList_name)
2 記録日時 (time_zone, record_time_and_date)
3 タイトルの時間長 (PlayList_duration)
4 サムネイル参照情報 (ref_to_menu_thumbnail_index)
5 新着(未視聴)の記録かどうかの印 (is_played_flag)
6 チャンネル番号 (channel_number)
7 チャンネルの名称 (channel_name)
上記した7個の表示情報のうち、タイトル一覧に特に欠くことのできない情報は、番号1乃至3で示した3個の表示情報である。番号4の表示情報もユーザに迅速に番組の内容を理解させるのに重要である。
上記7個の表示情報の後のカッコの中に示すフィールドの名称は、ref_to_menu_thumbnail_indexを除き、UIAppInfoPlayList()(後述する図25)の中に現れるフィールドの名称である。ref_to_menu_thumbnail_indexだけは、UIAppInfoPlayList()に含まれていない。これは、PlayListファイル(後述する図22)の中のPlayListMark()(後述する図27)のmark_typeの値が0x01または0x02であり(後述する図28)、プレイリスト代表画像であることを示すときのref_thumbnail_index(後述する図27)の値が参照される。つまり、ref_thumbnail_indexの値がref_to_menu_thumbnail_indexの値として設定される。
図17は、INDEX.BAVのシンタクスを示す図である。同図に示されるように、”INDEX.BAV”ファイルは以下のような情報を含んでいる。
type_indicatorのフィールドには、"INDX" のキャラクタ文字が入る。version_numberのフィールドは、このINDEX.BAVファイルのバージョンナンバを示す4個のキャラクタ文字を表す。lengthのフィールドは、このlengthフィールドの直後からINDEX.BAVファイルの最後までのバイト数を示す。number_of_PlayListsの数字は、PLAYLISTディレクトリに記録されているPlayListの数に等しくなければならない。PlayList_file_name[k]のフィールドは、PlayListのファイル名を示す。なお[k]は、for-ループ中でインクリメントされる変数である。index_info_start_address[k]のフィールドは、INDEX.BAVファイルの先頭バイトからの相対バイト数を単位として、index_info[k]()の先頭バイトアドレスを示す。相対バイト数はゼロからカウントされる。
ref_to_menu_thumbnail_index[k]のフィールドは、PlayList_file_name[k]が示すPlayListを代表するサムネイル画像の情報を示す。ref_to_menu_thumbnail_index[k]フィールドが、”0xFFFF”以外の値の場合、そのPlayListには、PlayListを代表するサムネイル画像が付加されており、そのサムネイル画像は、MENU.THMファイルの中にストアされている。ref_to_menu_thumbnail_index[k]フィールドが、0xFFFF である場合、そのPlayListには、PlayListを代表するサムネイル画像が付加されていない。
PlayList_character_set[k]のフィールドは、channel_name[k], PlayList_name[k]フィールドに符号化されているキャラクタ文字の符号化方法を示す。is_played_flag[k]のフラグは再生の有無を表す。このフラグが'1'にセットされている場合、PlayList_file_name[k]が示すPlayListは、記録されてから一度は再生されている。このフラグが0にセットされている場合、そのPlayListは、記録されてから一度も再生されたことがない。
is_virtual_PL[k]のフラグが'1'にセットされている場合、PlayList_file_name[k]が示すPlayListは、Virtual PlayListであることを示す。
is_shared_Clip[k]のフラグが'1'にセットされている場合、PlayList_file_name[k]が示すPlayListは、次の条件を満たす。
(1)そのPlayListは、Real PlayListである。
(2)かつ、そのReal PlayListのPlayItemsが参照するClipsのうちの少なくとも1つが、他のReal PlayListによって参照されている。
なお、上記(2)の条件は、それを含むより広い次の条件(3)に代えることができる。
(3)PlayList_file_name[k]が示すPlayListは、記録されてから、かつて、is_shared_Clipの値が1にセットされたことがある(現在は、そのReal PlayListが参照するClipsは、他のReal PlayListによって参照されていないかもしれない)。
time_zone[k]のフィールドは、record_time_and_date[k]が示す時間情報のタイムゾーン(例えば、日本、英国等)を示す。
record_time_and_date[k]のフィールドは、PlayList_file_name[k]が示すPlayListが記録された時の日時をストアする56ビットのフィールドである。このフィールドは、年/月/日/時/分/秒について、14個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、2001/12/23:01:02:03 は、"0x20011223010203"と符号化される。PlayList_duration[k]のフィールドは、 PlayList_file_name[k]が示すPlayListの総再生時間を時間/分/秒の単位で示した24ビットのフィールドである。このフィールドは、6個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、01:45:30は、"0x014530"と符号化される。
channel_number[k]のフィールドは、PlayList_file_name[k]が示すPlayListが記録されたときにユーザが選択をした放送のチャネル番号またはサービス番号を示す。このフィールドの値が0xFFFFであるときはこのフィールドは無効である。channel_name_length[k]のフィールドは、 channel_name[k]フィールドの示すチャネル名の長さのバイト数を示す。channel_name[k]: このフィールドは、 PlayList_file_name[k]が示すPlayListが記録されたときにユーザが選択した放送のチャネル名またはサービス名を示す。
PlayList_name_length[k]のフィールドは、 PlayList_name[k] フィールドの示すPlayList名の長さのバイト数を示す。PlayList_name[k]のフィールドは、PlayList_file_name[k]が示すPlayListののタイトル(番組)名を示す。
length_mpd[k]のフィールド値がゼロでないとき、mdp[k]()が存在し、その値はmdp[k]()のバイト数を示す。maker_ID[k]のフィールドは、mdp[k]()を記録したレコーダの製造者を示す。maker_idに符号化される値は、このフォーマットのライセンサによって割り当てられる。maker_model_code[k]のフィールドは、mdp[k]()を記録したレコーダのモデル番号を示す。maker_model_code[k]に符号化される値は、このフォーマットのライセンスを受けた製造者によって決められる。maker_private_data[k]のフィールドは、メーカプライベートデータがストアされる領域である。ここには、INDEX.BAVファイルで標準化された上記の情報のほかに、メーカ独自の記録情報を格納してよい。例えば、記録モード(標準記録モードや長時間記録モードといった情報)や番組のジャンル、などの情報を記録する。
これらのlength_mpd[k],maker_ID[k],maker_model_code[k],maker_private_data[k]は、メーカ独自情報を構成する。
X, Yは、任意の正の整数である。padding_wordの値は何でも良い。
[INFO.BAV]
図18は、"INFO.BAV"ファイルのシンタクスを示す図である。" INFO.BAV "ファイルは、3個のオブジェクトから構成され、それらは、UIAppInfoBDAV()、TableOfPlayLists()、およびExtensionData()である。
図18に示したINFO.BAVのシンタクスについて説明する。
type_indicatorのフィールドには、" INFO " のキャラクタ文字が入る。version_numberのフィールドは、 このINFO.BAVファイルのバージョンナンバを示す4個のキャラクタ文字を表す。TableOfPlayLists_Start_addressのフィールドは、INFO.BAVファイルの先頭のバイトからの相対バイト数を単位として、TableOfPlayList()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
ExtensionData_Start_addressのフィールドは、INFO.BAVファイルの先頭のバイトからの相対バイト数を単位として、ExtensionData ()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。padding_word(パディングワード)は、info.dvrのシンタクスに従って挿入される。N1とN2は、ゼロまたは任意の正の整数である。それぞれのパディングワードは、任意の値を取るようにしても良い。
TableOfPlayLists()のフィールドは、PlayList(Real PlayListとVirtual PlayList)のファイル名をストアする。TableOfPlayLists()は、PlayListのデフォルトの再生順序を示す。
ExtensionData()のフィールドは、メーカ各社の特別なアプリケーションのためのプライベートデータか、または、BDAV規格により定義される拡張データベースを含む。レコーダーメーカは、各社の特別なアプリケーションのためにExtensionData()の中にメーカのプライベートデータを挿入してもよい。各メーカのプライベートデータは、それを定義したメーカを識別するために標準化されたメーカ識別子を持つ。また、INFO.BAVファイルのExtensionData()には、BDAV規格により定義される拡張データベースとして、後述するPL_to_Clips_table()を記録する。
[ExtensionData()]
図19は、ExtensionData()のシンタクスを示す図である。図19に示したExtensionData()のシンタクスを以下に説明する。
lengthのフィールドは、このlengthフィールドの直後からExtensionData()の最後までのバイト数を示す。data_block_start_addressのフィールドは、ExtensionData()の先頭のバイトからの相対バイト数を単位として、data_block()の先頭バイトアドレスを示す。相対バイト数はゼロからカウントされる。
number_of_ext_data_entriesのフィールドは、ExtensionData()の中に含まれているext_data_entry()のエントリ数を示す。ID1: ID1の値0x0000 〜 0x00FFは、BDAV規格により定義される拡張データベースの識別のために使われる。ID1の値が0x0000 〜 0x00FFの範囲外であるとき、それは、メーカプライベートデータを作成したレコーダの製造メーカを示す。メーカ識別の値は、このBDAVフォーマットのライセンサによって指定される。ID2: ID1の値が0x0000 〜 0x00FFの場合、ID2は、BDAV規格により定義される拡張データベースの識別のために使われる。ID1の値が0x0000 〜 0x00FFの範囲外であるとき、ID2は、そのメーカプライベートデータを作成したレコーダのモデルナンバーコードを示す。この場合、ID2に符号化される値は、このフォーマットのライセンスを受けた製造メーカによって決められる。PL_to_Clips_table()を識別するためのID1とID2の値は、それぞれ0x00F0と0x0001である。
ext_data_start_addressのフィールドは、ExtensionData()の先頭のバイトからの相対バイト数を単位として、extension dataが開始するバイトアドレスを示す。相対バイト数はゼロからカウントされる。ext_data_length: このフィールドは、extension dataのバイト単位でデータの大きさを示す。padding_wordの値は何でもよい。
図20は、ExtensionData()のシンタクスの例を示す図であり、ExtensionData()の中に記録されるPL_to_Clips_table()のイメージを示す。同図に示されるように、PL_to_Clips_table()はExtensionData()の中に記録される。
data_block_start_addressは、ExtensionData()の中でのdata_block()の先頭バイトのアドレスを示す。この例では、ExtensionData()の中にextension dataとしてのPL_to_Clips_table()を1個記録するだけなので、number_of_ext_data_entriesには1がセットされている。PL_to_Clips_table()を識別するためのID1とID2の値は、それぞれ0x00F0と0x0001とされている。
ext_data_start_addressは、ExtensionData()の中でのPL_to_Clips_table()の先頭バイトのアドレスを示す(この例ではdata_block()の先頭バイトのアドレスと同じ値である)。ext_data_lengthは、PL_to_Clips_table()のバイト長を示す。data_block()の中に、PL_to_Clips_table()が記録される。
[PL_to_Clips_table()]
INFO.BAVファイルのExtensionData()に記録されるPL_to_Clips_table()のシンタクスを図21に示す。PL_to_Clips_table()は、PLAYLISTディレクトリの下に記録されているすべてのPlayListファイルについて、個々のPlayListファイルが参照するClip Information file(s)が、リスト化されたテーブルである。
lengthのフィールドは、このlengthフィールドの直後からPL_to_Clips_table()の最後までのバイト数を示す。number_of_PlayListsのフィールドの数字は、PLAYLISTディレクトリに記録されているPlayListの数に等しくなければならない。PlayList_file_name[k]のフィールドは、PlayListのファイル名を示す。
Clips_table_start_address[k]のフィールドは、PL_to_Clips_table()の先頭バイトからの相対バイト数を単位として、clips_table[k]()の先頭バイトアドレスを示す。相対バイト数はゼロからカウントされる。number_of_PlayItems[k]のフィールドは、PlayList_file_name[k]が示すPlayListの中にあるPlayItemの数を示す。
Clip_Information_file_name[k][i]のフィールドは、PlayList_file_name[k]が示すPlayListの中にあるPlayItemsが参照するClip Information fileのファイル名を示す。padding_wordの値は何でも良い。
[Real PlayList fileとVirtual PlayList file]
次に、Real PlayList fileとVirtual PlayList fileについて、すなわち、図15の"PLAYLIST"ディレクトリのxxxxx.RPLとyyyyy.VPLについて説明する。図22は、xxxxx.RPL(Real PlayList)、または、yyyyy.VPL(Virtual PlayList)のシンタクスを示す図である。xxxxx.RPLとyyyyy.VPLは、同一のシンタクス構成をもつ。xxxxx.RPLとyyyyy.VPLは、それぞれ、3個のオブジェクトから構成され、それらは、PlayList()、PlayListMark()、およびMakerPrivateData()である。
PlayListMark_Start_addressは、PlayListファイルの先頭のバイトからの相対バイト数を単位として、PlayListMark()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
MakerPrivateData_Start_addressは、PlayListファイルの先頭のバイトからの相対バイト数を単位として、MakerPrivateData()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
padding_word(パディングワード)は、PlayListファイルのシンタクスにしたがって挿入され、N1とN2は、ゼロまたは任意の正の整数である。それぞれのパディングワードは、任意の値を取るようにしても良い。
ここで、既に、簡便に説明したが、PlayListについてさらに説明する。記録媒体100内にあるすべてのReal PlayListによって、Bridge-Clipを除くすべてのClipの中の再生区間が参照されていなければならない。かつ、2つ以上のReal PlayListが、それらのPlayItemで示される再生区間を同一のClipの中でオーバーラップさせてはならない。
図23を参照してさらに説明するに、図23(A)に示したように、全てのClipは、対応するReal PlayListが存在する。この規則は、図23(B)に示したように、編集作業が行われた後においても守られる。従って、全てのClipは、どれかしらのReal PlayListを参照することにより、必ず視聴することが可能である。
図23(C)に示したように、Virtual PlayListの再生区間は、Real PlayListの再生区間またはBridge-Clipの再生区間の中に含まれていなければならない。どのVirtual PlayListにも参照されないBridge-Clipがディスクの中に存在してはならない。
Real PlayListは、PlayItemのリストを含むが、SubPlayItemを含んではならない。VirtualPlayListは、PlayItemのリストを含み、PlayList()の中に示されるCPI_typeがEP_map typeであり、かつPlayList_typeが0(ビデオとオーディオを含むPlayList)である場合、Virtual PlayListは、ひとつのSubPlayItemを含む事ができる。本実施の形態におけるPlayList()では、SubPlayItemはオーディオのアフレコの目的にだけに使用される。そして、1つのVirtual PlayListが持つSubPlayItemの数は、0または1でなければならない。
[PlayListのシンタクス]
次に、PlayListのシンタクスについて説明する。図24は、PlayListのシンタクスを示す図である。図24に示したPlayListのシンタクスを説明するに、version_numberは、このPlayList()のバージョンナンバを示す4個のキャラクタ文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。lengthは、このlengthフィールドの直後からPlayList()の最後までのPlayList()のバイト数を示す32ビットの符号なし整数である。PlayList_typeは、このPlayListのタイプを示す8ビットのフィールドである。
CPI_typeは、1ビットのフラグであり、PlayItem()およびSubPlayItem()によって参照されるClipのCPI_typeの値を示す。1つのPlayListによって参照される全てのClipは、それらのCPI()の中に定義されるCPI_typeの値が同じでなければならない。number_of_PlayItemsは、PlayListの中にあるPlayItemの数を示す16ビットのフィールドである。
所定のPlayItem()に対応するPlayItem_idは、PlayItem()を含むforループの中で、そのPlayItem()の現れる順番により定義される。PlayItem_idは、0から開始される。number_of_SubPlayItemsは、PlayListの中にあるSubPlayItemの数を示す16ビットのフィールドである。この値は、0または1である。付加的なオーディオストリームのパス(オーディオストリームパス)は、サブパスの一種である。
[UIAppInfoPlayList]
次に、図24に示したPlayListのシンタクスのUIAppInfoPlayListについて説明する。UIAppInfoPlayListは、PlayListについてのユーザインタフェイスアプリケーションのパラメータをストアする。図25は、UIAppInfoPlayListのシンタクスを示す図である。図25に示したUIAppInfoPlayListのシンタクスを以下に説明する。
PlayList_character_setのフィールドは、channel_name, PlayList_nameフィールドに符号化されているキャラクタ文字の符号化方法を示す。is_played_flagのフィールドは、このPlayListの再生の有無を表す。このフラグが'1'にセットされている場合、このPlayListは、記録されてから一度は再生されている。このフラグが0にセットされている場合、そのPlayListは、記録されてから一度も再生されたことがない。time_zoneのフィールドは、record_time_and_dateが示す時間情報のタイムゾーンを示す。
record_time_and_dateのフィールドは、このPlayListが記録された時の日時をストアする56ビットのフィールドである。このフィールドは、年/月/日/時/分/秒について、14個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、2001/12/23:01:02:03 は、"0x20011223010203"と符号化される。PlayList_durationのフィールドは、このPlayListの総再生時間を時間/分/秒の単位で示した24ビットのフィールドである。このフィールドは、6個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、01:45:30は、"0x014530"と符号化される。
channel_numberのフィールドは、このPlayListが記録されたときにユーザが選択をした放送のチャネル番号またはサービス番号を示す。このフィールドの値が0xFFFFであるときはこのフィールドは無効である。channel_name_lengthのフィールドは、 channel_nameフィールドの示すチャネル名の長さのバイト数を示す。channel_nameのフィールドは、このPlayListが記録されたときにユーザが選択をした放送のチャネル名またはサービス名を示す。PlayList_name_lengthのフィールドは、このPlayList名の長さのバイト数を示す。PlayList_nameのフィールドは、このPlayListのタイトル(番組)名を示す。
[PlayItemのシンタクス]
図26は、PlayItemのシンタクスを示す図である。図26に示したPlayItemのシンタクスを説明するに、Clip_Information_file_nameのフィールドは、Clip Information fileのファイル名を示す。このClip Information fileのClipInfo()において定義されるClip_stream_typeは、Clip AV streamを示していなければならない。
STC_sequence_idは、8ビットのフィールドであり、PlayItemが参照するSTC連続区間のSTC_sequence_idを示す。PlayList()の中で指定されるCPI_typeがTU_map typeである場合、この8ビットフィールドは何も意味を持たず、0にセットされる。IN_timeは、32ビットフィールドであり、PlayItemの再生開始時刻をストアする。IN_timeのセマンティクスは、PlayList()において定義されるCPI_typeによって異なる。
OUT_timeは、32ビットフィールドであり、PlayItemの再生終了時刻をストアする。OUT_timeのセマンティクスは、PlayList()において定義されるCPI_typeによって異なる。
Connection_Conditionは、先行するPlayItemと、現在のPlayItemとの間の接続状態を示す2ビットのフィールドである。
[PlayListMark()]
次に、図22に示したxxxxx.RPLとyyyyy.VPLのシンタクス内のPlayListMark()について説明する。PlayListについてのマーク情報は、このPlayListMarkにストアされる。図27は、PlayListMarkのシンタクスを示す図である。図27に示したPlayListMarkのシンタクスについて説明するに、version_numberは、このPlayListMark()のバージョンナンバを示す4個のキャラクタ文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
lengthは、このlengthフィールドの直後からPlayListMark()の最後までのPlayListMark()のバイト数を示す32ビットの符号なし整数である。number_of_PlayList_marksは、PlayListMarkの中にストアされているマークの個数を示す16ビットの符号なし整数である。number_of_PlayList_marks は、0であってもよい。mark_typeは、マークのタイプを示す8ビットのフィールドである。
mark_time_stampの32ビットフィールドは、マークが指定されたポイントを示すタイムスタンプをストアする。mark_time_stampのセマンティクスは、PlayList()において定義されるCPI_typeによって異なる。PlayItem_idは、マークが置かれているところのPlayItemを指定する8ビットのフィールドである。所定のPlayItemに対応するPlayItem_idの値は、PlayList()において定義される(図24参照)。
character_setの8ビットのフィールドは、mark_nameフィールドに符号化されているキャラクタ文字の符号化方法を示す。name_lengthの8ビットフィールドは、mark_nameフィールドの中に示されるマーク名のバイト長を示す。mark_nameのフィールドは、マークの名称を示す。このフィールドの中の左からname_length数のバイト数が、有効なキャラクタ文字であり、それはマークの名称を示す。mark_nameフィールドの中で、それら有効なキャラクタ文字の後の値は、どのような値が設定されても良い。
ref_thumbnail_indexのフィールドは、マークに付加されるサムネイル画像の情報を示す。ref_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのマークにはサムネイル画像が付加されており、そのサムネイル画像は、MENU.THMファイルの中にストアされている。その画像は、MENU.THMファイルの中でref_thumbnail_indexの値を用いて参照される。ref_thumbnail_indexフィールドが、0xFFFF である場合、そのマークにはサムネイル画像が付加されていない事を示す。
図28は、mark_typeのテーブルを示す図である。同図に示されるように、mark_typeの値によってマークのタイプが規定されている。mark_typeの値が0x01である場合、そのマークは、プレイリストの代表画像であり、その画像はPlayListが参照するビデオのピクチャから選択されたものである。
この場合、mark_time_stamp(図27)は、PlayListが参照するビデオの中のピクチャのPresentation time stampを示す。ref_thumbnail_index(図27)の値が、xFFFF以外のとき、後述する図29のMENU.THMの中に、サムネイル画像がストアされる。ref_thumbnail_indexの値が、xFFFFのとき、図29のMENU.THMの中に、サムネイル画像がストアされていない。この場合、プレーヤは、PlayListが参照するビデオの中のPresentation time stampによって指定されるピクチャをデコードしてよい。PlayListMark()のマークタイプの値0x01または0x02の数は、0または1である。
mark_typeの値が0x02である場合、そのマークは、プレイリスト代表画像であり、その画像は、PLayListが参照するビデオのピクチャから選択されたものではない。
この場合、ref_thumbnail_indexの値は、0xFFFF以外でなければならない。図29のMENU.THMの中に、サムネイル画像がストアされる。mark_time_stampとPlayItem_idにはゼロをセットする。PlayListMark()のマークタイプの値0x01または0x02の数は、0または1である。
mark_typeの値が0x03である場合、そのマークは、Resume-markである。これは再生リジュームポイントである。PlayListmark()において定義される再生リジュームポイントの数は、0または1でなければならない。
mark_typeの値が0x04である場合、そのマークは、PlayListの再生エントリポイントである。このマークは、ユーザがセットすることができ、例えばお気に入りのシーンの開始点を指定するマークに使う。
mark_typeの値が0x06である場合、そのマークは、スキップマークポイントである。このポイントからプログラムの最後まで、プレーヤはプログラムをスキップする。PlayListMark()において定義されるスキップマークポイントの数は、0または1でなければならない。
[MENU.THM]
図29は、図15のMENU.THM(またはMARK.THM)のシンタクスを示す図であり、 MENU.THMファイルはThumbnail()を有する。
図30は、図29に示したMENU.THM (またはMARK.THM)のシンタクス内のThumbnail()のシンタクスを示す図である。図29に示したThumbnail()のシンタクスについて説明するに、version_numberは、このThumbnail()のバージョンナンバを示す4個のキャラクタ文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
lengthは、このlengthフィールドの直後からThumbnail()の最後までのThumbnail()のバイト数を示す32ビットの符号なし整数である。tn_blocks_start_addressは、Thumbnail()の先頭のバイトからの相対バイト数を単位として、最初のtn_blockの先頭バイトアドレスを示す32ビットの符号なし整数である。相対バイト数はゼロからカウントされる。number_of_thumbnailsは、Thumbnail()の中に含まれているサムネイル画像のエントリ数を与える16ビットの符号なし整数である。
tn_block_sizeは、1024バイトを単位として、1つのtn_blockの大きさを与える16ビットの符号なし整数である。例えば、tn_block_size=1ならば、それは1つのtn_blockの大きさが1024バイトであることを示す。number_of_tn_blocksは、このThumbnail()中のtn_blockのエントリ数を表す16ビットの符号なし整数である。thumbnail_indexは、このthumbnail_indexフィールドから始まるforループ1回分のサムネイル情報で表されるサムネイル画像のインデクス番号を表す16ビットの符号なし整数である。thumbnail_index として、0xFFFFという値を使用してはならない。thumbnail_index はUIAppInfoVolume()、UIAppInfoPlayList()、 PlayListMark()、およびClipMark()の中のref_thumbnail_indexによって参照される。
thumbnail_picture_formatは、サムネイル画像のピクチャフォーマットを表す8ビットの符号なし整数である。
picture_data_sizeは、サムネイル画像のバイト長をバイト単位で示す32ビットの符号なし整数である。start_tn_block_numberは、サムネイル画像のデータが始まるtn_blockのtn_block番号を表す16ビットの符号なし整数である。サムネイル画像データの先頭は、tn_blockの先頭と一致していなければならない。tn_block番号は、0から始まり、tn_blockのfor-ループ中の変数kの値に関係する。
x_picture_lengthは、サムネイル画像のフレーム画枠の水平方向のピクセル数を表す16ビットの符号なし整数である。y_picture_lengthは、サムネイル画像のフレーム画枠の垂直方向のピクセル数を表す16ビットの符号なし整数である。tn_blockは、 サムネイル画像がストアされる領域である。Thumbnail()の中のすべてのtn_blockは、同じサイズ(固定長)であり、その大きさはtn_block_sizeによって定義される。
[AVストリームファイル]
次に、AVストリームファイルについて説明する。AVストリームファイルは、"STREAM"ディレクトリ(図15)のMTSファイルにストアされる。AVストリームファイルには、2つのタイプがあり、それらは、Clip AVストリームとBridge-Clip AVストリームファイルである。両方のAVストリーム共に、DVR MPEG-2トランスポートストリームファイルの構造でなければならない。
[記録処理1]
次に図31乃至図34を参照して、is_shared_Clipの記録媒体100への記録処理について説明する。図31は、記録処理を説明するフローチャートである。図32乃至図34は、Real PlayListのクリエイト、Real PlayListのデバイド、Real PlayListのコンバインを示す図である。この処理は、ユーザの指示に基づきコンテンツとしての番組を記録媒体100に記録したり、編集したりするとき、付随して実行される。
ステップS11において判定部204は、Real PlayListがクリエイトされたかを判定する。例えば新たなコンテンツを記録する場合、Real PlayListがクリエイトされる。
Real PlayListがクリエイトされた場合、ステップS16において設定部203は、Real PlayListのis_shared_Clipに0を設定する。例えば新たなコンテンツを記録する場合、Real PlayListのis_shared_Clipに0が設定される。
例えば図32に示されるように、Clip1とClip2を記録媒体100に記録するため、それぞれに対応するReal PlayList1とReal PlayList2がクリエイトされた場合、それぞれのis_shared_Clipには0が設定される。
Real PlayListがクリエイトされない場合、ステップS12において判定部204は、Real PlayListのis_shared_Clipは0であるかを判定する。例えば、記録済みのコンテンツを編集する場合、記録済みのReal PlayListが編集される。この場合、記録済みのReal PlayList、つまり編集対象のReal PlayListのis_shared_Clipの値が判定される。
編集対象のReal PlayListのis_shared_Clipが0である場合、ステップS13において判定部204は、現在の編集がデバイド編集であるかを判定する。現在の編集がデバイド編集である場合、ステップS14において設定部203は、Real PlayListのis_shared_Clipに1を設定する。
例えば図33に示されるように、Clip1に対応するReal PlayList1を所定のデバイドポイントでReal PlayList1とReal PlayList2の2つデバイドする場合、編集後のReal PlayList1とReal PlayList2のis_shared_Clipには、それぞれ1が設定される。なお、この操作により、Clipは何も変化しない。
これに対して、現在の編集がデバイド編集ではない場合、ステップS16において設定部203は、Real PlayListのis_shared_Clipに0を設定する。
例えば図34に示されるように、それぞれClip1とClip2に対応するReal PlayList1とReal PlayList2をコンバインする場合、編集後のReal PlayList1のis_shared_Clipには0が設定される。なお、この操作により、Clipは何も変化しない。
一方、ステップS12において編集対象のReal PlayListのis_shared_Clipは0ではない、すなわち1であると判定された場合、ステップS15の判定処理が実行される。ステップS15において判定部204は、Clipが他のReal PlayListにより参照されているかを判定する。具体的には、編集後のReal PlayListが参照するClipが、他のis_shared_Clip=1のReal PlayListにより参照されているかが判定される。
編集後のReal PlayListが参照するClipが、他のis_shared_Clip=1のReal PlayListにより参照されている場合、ステップS14の処理が実行される。つまり、編集後のReal PlayListのis_shared_Clipに1が設定される。編集後のReal PlayListが参照するClipが、他のis_shared_Clip=1のReal PlayListにより参照されていない場合、ステップS16の処理が実行される。つまり、編集後のReal PlayListのis_shared_Clipに0が設定される。
ステップS14,S16の処理の後、ステップS17において更新部206は、記録対象のReal PlayListのINDEX.BAVの情報を更新する。つまり、図17を参照して説明したように、is_shared_Clipは図17のINDEX.BAVに含まれている。そこで、INDEX.BAVのis_shared_Clipが、ステップS14,S16の処理で設定された値に更新される。勿論、その他変更された情報も更新される。
ステップS18において記録部201は、Real PlayListとINDEX.BAVを記録する。すなわちステップS17でis_shared_Clipと各種の情報が更新されたINDEX.BAVが記録媒体100に記録される。
図31の記録処理において、is_shared_Clipフラグが'1'にセットされている場合におけるPlayListが満たす条件は、上述した(2)である。すなわち、is_shared_Clip=1であるReal PlayListは、そのPlayItemsが参照するClipsのうちの少なくとも1つが、他のReal PlayListによって参照されているPlayListである。
is_shared_Clipの意味を、上述の(3)のように規定する場合の記録処理を図43を参照して後述するが、その場合に比べて、この図31の記録処理では、is_shared_Clip=1のPlayListが少なくて済む。その結果、この図31の記録処理では、すべてのis_shared_Clip=1のPlayListを読み出す時間は、is_shared_Clipの意味を、上述の(3)のように規定する図43の記録処理の場合に比べて短くて済む。
[コンテンツ削除処理]
次に図35乃至図37を参照して、コンテンツの削除処理を説明する。図35は、削除処理を説明するフローチャートである。図36は、Real PlayListの全体の削除を示す図であり、図37は、Real PlayListの一部分の削除を示す図である。
ステップS51において取得部202は、INDEX.BAV を取得する。つまり、図31のステップS18で記録媒体100に記録されたINDEX.BAV ファイル(図17)が読み出される。
ステップS52において取得部202は、Real PlayListの削除の指示を取得する。つまり、ユーザがコンテンツの削除を指示するとき、コンテンツの一覧(図16)が表示される。ユーザはこの一覧の中から削除対象とするコンテンツ(PlayList)を指定する。この指定されたReal PlayListが取得される。
ステップS53において取得部202は、is_shared_Clipの値を取得する。つまり、ステップS51で読み出されたINDEX.BAVに含まれるis_shared_Clipの中から、削除対象のReal PlayListのis_shared_Clipの値が取得される。
ステップS54において判定部204は、ステップS53において取得された削除対象のReal PlayListのis_shared_Clip の値が1であるかを判定する。
削除対象のReal PlayListのis_shared_Clip が1ではない場合、すなわち0である場合、ステップS58において削除部205は、Real PlayListと、それが参照するClipを削除する。つまりこの場合、削除対象のReal PlayListが参照するClipは、他のReal PalyListにより参照されていないので、削除対象のReal PlayListとそれが参照するClipが削除される。
例えば図36に示されるように、Real PlayListがClipを参照している場合に、そのReal PlayListの全体の削除が指示された場合、Real PlayListとそれにより参照されているClipが削除される。
また例えば図37に示されるように、Real PlayListがClipを参照している場合に、そのReal PlayListの一部の削除が指示された場合、Real PlayListの削除が指示された部分が削除される。また、Clipの、削除が指示された部分により参照されている部分が削除される。is_shared_Clipの値が0のReal PlayListの部分削除の編集をしたとき、編集後のReal PlayListのis_shared_Clipの値もまた0とされる(上述した図31のステップS12,S13,S16の処理)。
実用的には、is_shared_Clip が1であるReal PlayListより、is_shared_Clip が0であるReal PlayListの方がその数は圧倒的に多い。つまり、自身がが参照するClipが、他のReal PalyListにより参照されているReal PlayListより、参照されていないReal PalyListの方が多い。そこで、is_shared_Clip が0であるReal PlayListを直ちに削除することで、削除処理の平均の処理時間を短くすることが可能になる。
これに対して、ステップS54で削除対象のReal PlayList のis_shared_Clip が1であると判定された場合、削除対象のReal PlayListが参照する少なくとも1つのClipのは、他のReal PalyListにより参照されている。そこでステップS55において取得部202は、is_shared_Clip =1であるすべてのReal PlayListを取得する。つまり、図17のINDEX.BAVからis_shared_Clip =1であるすべてのReal PlayListが読み出される。
ステップS56で検索部207は、削除可能なClipを検索する。つまり、ステップS55で取得されたis_shared_Clip =1であるReal PlayListの中から、削除可能なClipが検索される。ここで削除可能なClipとは、削除対象のReal PlayListが参照するClipのうち、is_shared_Clip =1である他のReal PalyListにより参照されていないClipである。
検索対象とされるReal PlayListは、ステップS55の処理で、is_shared_Clip =1であるReal PalyListに限定されている。従って、is_shared_Clip フラグが存在しない場合に比べて、迅速な検索、すなわち迅速な削除が可能となる。
ステップS57において削除部205は、Real PlayListと、削除可能なClipを削除する。つまり、削除対象のReal PlayListと、ステップS56で検索された削除可能なClipが削除される。
ステップS57,S58の処理の後、ステップS59において削除部205は、削除したClipを参照するVirtual PlayListを削除する。つまり、削除したClipを参照するVirtual PlayListは最早存在意義がない。また、Virtual PlayListは他のVirtual PlayList とClipを共有していない。そこで、Virtual PlayListが存在する場合、それは直ちに削除される。
ステップS60において更新部206は、INDEX.BAVを更新する。すなわち、ステップS57乃至S59の削除処理に対応するようにINDEX.BAVが更新される。なお、この削除処理に伴うis_shared_Clip等の情報は、上述した図31のステップS17の処理で更新される。
次にステップS61において記録部201は、INDEX.BAVを記録する。つまり、ステップS60で更新されたINDEX.BAVファイルが記録媒体100に記録される。
[編集の例1]
次に、図38乃至図42を参照して、Real PlayListの編集について説明する。図38乃至図42は、Real PlayListの編集を示す図である。
図38は、複数のClip1乃至Clip4に対応するReal PlayList1乃至Real PlayList4をクリエイトによって作成した時の例を示す。図32に示される場合と同様に、すべてのReal PlayList1乃至Real PlayList4のis_shared_Clipの値は0である。
図39は、複数回の編集後の記録媒体100上のReal PlayListの例を示す。この例ではReal PlayList1のis_shared_Clipの値が0であり、Real PlayList2乃至Real PlayList4のis_shared_Clipの値が1である。Real PlayList1は、Clip1を参照している。Real PlayList2は、Clip2の一部を参照している。Real PlayList3は、Clip2の、Real PlayList2が参照していない部分と、Clip3の一部を参照している。Real PlayList4は、Clip3の、Real PlayList3が参照していない部分と、Clip4を参照している。
図40は、図39のReal PlayList1を削除した後の記録媒体100上のReal PlayListを示す。Real PlayList1のis_shared_Clipは0であるので、Real PlayList1と、それが参照するClip1(Clip Information fileと対応するClip AV stream file)を削除することができる(上述した図35のステップS58の処理)。
図41は、図40の状態からReal PlayList4を削除した後の記録媒体100上のReal PlayListを示す。図40のReal PlayList4のis_shared_Clipは1であるので、INDEX.BAVの中のis_shared_Clip=1であるすべてのPlayList filesが記録媒体100から読み出される(上述した図35のステップS55の処理)。そして、削除対象のReal PlayList4が参照するClip4が、他のis_shared_Clip=1のReal PlayListから参照されているかが調べられる(上述した図35のステップS56の処理)。
Real PlayList4が参照するClip3は、is_shared_Clip=1の他のReal PlayList3から参照されているので削除可能なClipではない。Real PlayList4が参照するClip4は、is_shared_Clip=1の他のReal PlayListから参照されていないので削除可能なClipである。したがって、Real PlayList4と、Clip4が削除され、図41のようになる(上述した図35のステップS57の処理)。
図42は、図31の記録処理と図35の削除処理を行って、図40の状態からReal PlayList3を削除した後のReal PlayListを示す。図40のReal PlayList3のis_shared_Clipは1であるので、INDEX.BAVの中のis_shared_Clip=1であるすべてのPlayListが記録媒体100から読み出される(上述した図35のステップS55の処理)。そして、削除対象のReal PlayList3が参照するClipが、他のis_shared_Clip=1のReal PlayListから参照されているかが調べられる(上述した図35のステップS56の処理)。
Real PlayList3が参照するClip2とClip3は、is_shared_Clip=1の他のReal PlayList1とReal PlayList4から参照されているので、削除可能なClipではない。そこでReal PlayList3だけが削除され、図42に示される状態になる(上述した図35のステップS57の処理)。
なお、図42の例では、Real PlayList3の削除とともに、Clip2とClip3の不必要なストリーム部分が削除されている。この処理は、図37のReal PlayListの部分的な削除の例に対応する処理である。
図42に示されるように、編集の結果、Real PlayList2が参照するClip2と、Real PlayList4が参照するClip3,4は、他のReal PlayListによって参照されなくなる。そこで、Real PlayList2とReal PlayList4のis_shared_Clipがいずれも0に変更される(上述した図31のステップS12,S15,S16の処理)。
[記録処理2]
次に、is_shared_Clipフラグが'1'にセットされている場合におけるPlayListが満たす条件を上述した(3)とした場合のis_shared_Clipフラグの記録処理を、図43を参照して説明する。この場合におけるis_shared_Clip=1であるReal PlayListは、記録されてから、かつて、is_shared_Clipの値が1にセットされたことがあるReal PlayListである。すなわち、そのReal PlayListは、現在は、それが参照するClipsは、他のReal PlayListによって参照されていないかもしれないReal PlayListである。
ステップS111において判定部204は、Real PlayListがクリエイトされたかを判定する。例えば新たなコンテンツを記録する場合、Real PlayListがクリエイトされる。
Real PlayListがクリエイトされた場合、ステップS115において設定部203は、Real PlayListのis_shared_Clipに0を設定する。例えば新たなコンテンツを記録する場合、Real PlayListのis_shared_Clipに0が設定される。
Real PlayListがクリエイトされていない場合、ステップS112において判定部204は、Real PlayListのis_shared_Clipは0であるかを判定する。例えば、記録済みのコンテンツを編集する場合、記録済みのReal PlayListが編集される。この場合、記録済みのReal PlayList、つまり編集対象のReal PlayListのis_shared_Clipの値が判定される。
編集対象のReal PlayListのis_shared_Clipが0である場合、ステップS113において判定部204は、現在の編集がデバイド編集であるかを判定する。現在の編集がデバイド編集である場合、ステップS114において設定部203は、Real PlayListのis_shared_Clipに1を設定する。
これに対して、現在の編集がデバイド編集ではない場合、ステップS115において設定部203は、Real PlayListのis_shared_Clipに0を設定する。
また、ステップS112においてReal PlayListのis_shared_Clipが0ではない、すなわち1であると判定された場合、ステップS113の判定処理はスキップされ、処理はステップS114に進み、Real PlayListのis_shared_Clipに1が設定される。つまり、is_shared_Clipは一度1に設定されると、以後、0に変更されることはない。
ステップS114,S115の処理の後、ステップS116において更新部206は、記録対象のReal PlayListのINDEX.BAVの情報を更新する。
ステップS117において記録部201は、Real PlayListとINDEX.BAVを記録する。すなわちステップS116でis_shared_Clipと各種の情報が更新されたINDEX.BAVが記録媒体100に記録される。
このように、図43の記録処理においては、図31の記録処理のステップS15の処理が削除されている。図43の記録処理のその他の処理は、図31の場合と同様である。
すなわち、図43のステップS111乃至S117の処理は、それぞれ図31のステップS11乃至S14,S16乃至S18の処理に対応する。
[編集の例2]
図31の記録処理においては、図40と図42を参照して説明したように、is_shared_Clipが書き替えられる。すなわち、図40に示される状態でReal PlayList 3が削除されると、図42に示されるように、Real PlayList2とReal PlayList 4が参照するClipsが、他のReal PlayListによって参照されなくなる。そこで、Real PlayList2とReal PlayList 4のis_shared_Clipは、1から0に書き替えられる。
しかしながら、図43の記録処理においては、編集後のReal PlayList2とReal PlayList4のis_shared_Clipの値は変更されず、値1のままとされる(上述した図43のステップS112,S114の処理)。
図44は、図43の記録処理と図35の削除処理を行って、図40の状態からReal PlayList3を削除した後のReal PlayListを示す。図35の削除処理に伴うReal PlayListとClipの変化は、図42を参照して説明した場合と同様である。
図44に示されるように、Real PlayList2が参照するClip2と、Real PlayList4が参照するClip3,4が、他のReal PlayListによって参照されなくなると、図43の記録処理ではis_shared_Clipに関して次のような処理が行われる。すなわち、図40に示されるように、Real PlayList2とReal PlayList4のis_shared_Clipは、編集前に既に1に設定されている。このような場合、ステップS112において常にNOと判定される。その結果、一旦is_shared_Clipに1が設定されると、ステップS115のis_shared_Clipに0を設定する処理は実行されることがなく、is_shared_Clipは1のままとされる。
このようにすると、Real PlayList3の削除のときに、そのReal PlayList3についてのINDEX.BAVの情報の削除(更新)だけで済み、Real PlayList2とReal PlayList4についてのINDEX.BAVの情報を更新しなくてよい。すなわち、is_shared_Clipの意味を、上述の(2)から(3)に広げることにより、削除対象のReal PlayListのINDEX.BAVの情報のみを更新すればよいので、INDEX.BAVの内容管理が容易になる。
次に、INDEX.BAVのis_shared_Clipの効果について説明する。PLAYLISTディレクトリの下に記録されているすべてのPlayListのClipsの参照状態は、図39に示されるようであるものとする。
いま図39の状態から、Real PlayList2を削除するものとする。Real PlayList2は、Clip2を参照している。仮に、INDEX.BAVのis_shared_Clipが存在しないとすると、他のReal PlayList1, Real PlayList3, Real PlayList4を記録媒体100から読み出して、それらによりClip2が参照されていないかどうかを調べる必要がある。この例では、PLAYLISTディレクトリの下のPlayListの数が4個なので、高々3個のファイルを読み出す時間はそれ程長くは無い。
しかし、記録媒体100に記録されているPlayListの数が非常に大きな数(たとえば、10000個以上)である場合、すべてのPlayListを読み出して、それらによりClip2が参照をされているかどうかを調べる時間は相当に長くなる。
そこで、INDEX.BAVにis_shared_Clipを記録し、その値を調べて、その値が1であるPlayListだけを読み出すようにすることにより、読み出す必要のあるPlayListの数を減らすことが期待できる。その結果、PlayListとClipsの参照関係を調べる時間を短縮できる。
[本技術のプログラムへの適用]
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることができる。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
このようなプログラムを含む記録媒体は、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVDを含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているフラッシュROMやハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
[その他]
本技術は、以下のような構成もとることができる。
(1)
再生情報が参照するコンテンツの実態としての実態情報が、他の前記再生情報により参照されていることを示すフラグを記録する記録部と、
前記再生情報の削除が指示された場合、前記フラグを用いて削除可能な前記実態情報を検索する検索部と、
前記再生情報の削除が指示された場合、削除対象の前記再生情報と削除可能な前記実態情報とを削除する削除部と
を備える情報処理装置。
(2)
前記検索部は、削除可能な前記実態情報として、削除対象の前記再生情報が参照する前記実態情報であって、削除対象以外の前記再生情報により参照されていない前記実態情報を検索する
前記(1)に記載の情報処理装置。
(3)
前記検索部は、他の前記再生情報により参照されていることを示す前記フラグを有する前記再生情報が参照する前記実体情報の中から削除可能な前記実態情報を検索する
前記(1)または(2)に記載の情報処理装置。
(4)
削除対象の前記再生情報の前記フラグが、削除対象の前記再生情報が参照する前記実態情報が他の前記再生情報により参照されていないことを示す場合、前記削除部は、削除対象の前記再生情報と削除対象の前記再生情報が参照する前記実態情報とを削除する
前記(1)乃至(3)のいずれかに記載の情報処理装置。
(5)
前記削除部は、削除された前記実態情報を参照する前記再生情報であって、前記実態情報を共有しない前記再生情報をさらに削除する
前記(4)に記載の情報処理装置。
(6)
前記再生情報の編集に伴って前記フラグを設定する設定部を
さらに備える前記(1)乃至(5)のいずれかに記載の情報処理装置。
(7)
前記設定部は、前記再生情報がデバイドされた場合、前記フラグを、前記実態情報が他の前記再生情報により参照されていることを示す状態に設定し、前記再生情報がクリエイト、コンバイン、および部分削除された場合、前記フラグを、前記実態情報が他の前記再生情報により参照されていないことを示す状態に設定する
前記(6)に記載の情報処理装置。
(8)
前記設定部は、編集前の前記再生情報の前記フラグが、前記実態情報が他の前記再生情報により参照されていることを示す状態に設定されている場合に、編集後の前記再生情報が参照する前記実態情報が、前記実態情報が他の前記再生情報により参照されていることを示す前記フラグの他の前記再生情報により参照されないとき、前記フラグを、前記実態情報が他の前記再生情報により参照されていないことを示す状態に変更する
前記(6)または(7)に記載の情報処理装置。
(9)
前記フラグは、前記再生情報が、記録されてから、かつて、前記実態情報が他の前記再生情報により参照されことがあることを示し、
前記設定部は、前記フラグが、一旦、前記実態情報が他の前記再生情報により参照されていることを示す状態に設定された場合、以後、前記実態情報が他の前記再生情報により参照されていないことを示す状態に変更しない
前記(6)乃至(8)のいずれかに記載の情報処理装置。
(10)
再生情報が参照するコンテンツの実態としての実態情報が、他の前記再生情報により参照されていることを示すフラグを記録する記録ステップと、
前記再生情報の削除が指示された場合、前記フラグを用いて削除可能な前記実態情報を検索する検索ステップと、
前記再生情報の削除が指示された場合、削除対象の前記再生情報と削除可能な前記実態情報とを削除する削除ステップと
を含む情報処理方法。
(11)
再生情報が参照するコンテンツの実態としての実態情報が、他の前記再生情報により参照されていることを示すフラグを記録する記録ステップと、
前記再生情報の削除が指示された場合、前記フラグを用いて削除可能な前記実態情報を検索する検索ステップと、
前記再生情報の削除が指示された場合、削除対象の前記再生情報と削除可能な前記実態情報とを削除する削除ステップと
を含む処理をコンピュータに実行させるプログラム。