(57)【特許請求の範囲】
【請求項１】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録装置において、
ビデオデータおよびオーディオデータが入力されるデータ入力部と、
上記ビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力部と、
上記ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録部と、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、
該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルと
を生成する管理情報生成部と、
上記記録部および上記管理情報生成部とを制御する制御部と
を有し、
上記制御部は、
上記記録指示入力部の指示に基づく記録開始から記録停止までの区間に対応する上記ビデオデータおよびオーディオデータを１の上記ストリームファイルとして上記記録媒体に記録するように上記記録部を制御すると共に、該１のストリームファイルの全体を再生区間として指定する上記再生区間データを生成し、該再生区間データが指定する上記ストリームファイルの先頭の位置に対応する上記マーク情報を上記再生リストファイルに格納するように上記管理情報生成部を制御する記録装置。
【請求項２】
請求項１に記載の記録装置において、
上記制御部は、
新たな上記ストリームファイルが上記記録媒体に記録された際には、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルを生成するように上記管理情報生成部を制御する記録装置。
【請求項３】
請求項１に記載の記録装置において、
上記記録指示入力部は、ユーザの操作を受け付ける記録装置。
【請求項４】
請求項３に記載の記録装置において、
上記制御部は、
上記ストリームファイルを上記記録媒体に記録した直後に対応する上記属性ファイルを記録する際には、該属性ファイルの記録が完了するまで上記記録指示入力部に対する上記記録開始の上記操作を受け付けないように制御する記録装置。
【請求項５】
請求項１に記載の記録装置において、
上記制御部は、
上記記録指示入力部による記録停止の指示に基づき、記録された上記ストリームファイルを再生区間として指定する上記再生区間データ内に、該ストリームファイルと該ストリームファイルに対して後続するストリームファイルとがフレームタイミングで連続的に再生されることを示す情報を設定して上記再生区間データを上記記録媒体に記録するように制御する記録装置。
【請求項６】
請求項１に記載の記録装置において、
上記制御部は、
上記ストリームファイル内で、上記ビデオデータの先端の再生時刻と上記オーディオデータの先端の再生時刻とが一致し、上記ビデオデータの終端の再生時刻よりも上記オーディオデータの終端の再生時刻が後になるように上記記録部を制御する記録装置。
【請求項７】
請求項１に記載の記録装置において、
上記制御部は、
新たな上記ストリームファイルが上記記録媒体に記録された際には、該新たなストリームファイルに対応する上記再生区間データを上記再生リストファイルに追加するように上記管理情報生成部を制御する記録装置。
【請求項８】
請求項７に記載の記録装置において、
上記制御部は、
１の上記記録媒体に対して唯一つの上記再生リストファイルを生成するように制御する記録装置。
【請求項９】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法において、
データ入力部に入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、
上記ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、
該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルと
を生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記記録指示入力のステップによる指示に基づく記録開始から記録停止までの区間に対応する上記ビデオデータおよびオーディオデータを１の上記ストリームファイルとして上記記録媒体に記録するように上記記録のステップを制御すると共に、該１のストリームファイルの全体を再生区間として指定する上記再生区間データを生成し、該再生区間データが指定する上記ストリームファイルの先頭の位置に対応する上記マーク情報を上記再生リストファイルに格納するように上記管理情報生成のステップを制御する記録方法。
【請求項１０】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法をコンピュータ装置に実行させる記録プログラムにおいて、
上記記録方法は、
データ入力部に入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、
上記ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、
該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルと
を生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記記録指示入力のステップによる指示に基づく記録開始から記録停止までの区間に対応する上記ビデオデータおよびオーディオデータを１の上記ストリームファイルとして上記記録媒体に記録するように上記記録のステップを制御すると共に、該１のストリームファイルの全体を再生区間として指定する上記再生区間データを生成し、該再生区間データが指定する上記ストリームファイルの先頭の位置に対応する上記マーク情報を上記再生リストファイルに格納するように上記管理情報生成のステップを制御する記録プログラム。
【請求項１１】
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置において、
被写体を撮像してビデオデータを出力する撮像部と、
音声を収音してオーディオデータを出力する収音部と、
上記ビデオデータおよび上記オーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録部と、
上記ビデオデータおよび上記オーディオデータの上記記録媒体への記録開始および記録停止を指示するユーザ操作を受け付ける操作部と、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、
該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルと
を生成する管理情報生成部と、
上記操作部に対するユーザ操作に応じて上記記録部の動作を制御すると共に、上記管理情報生成部を制御する制御部と
を有し、
上記制御部は、
上記操作部に対する操作に応じて、上記記録開始から上記記録停止までの区間に対応する上記ビデオデータおよび上記オーディオデータを１の上記ストリームファイルとして上記記録媒体に記録するように上記記録部を制御すると共に、該１のストリームファイルの全体を再生区間として指定する上記再生区間データを生成し、該再生区間データが指定する上記ストリームファイルの先頭の位置に対応する上記マーク情報を上記再生リストファイルに格納するように上記管理情報生成部を制御する撮像装置。
【請求項１２】
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法において、
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、
操作部に対する上記ビデオデータおよび上記オーディオデータの上記記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、
該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルと
を生成する管理情報生成のステップと、
上記操作部に対するユーザ操作に応じて上記記録のステップの動作を制御すると共に、上記管理情報生成のステップを制御する制御のステップと
を有し、
上記制御のステップは、
上記操作部に対する操作に応じて、上記記録開始から上記記録停止までの区間に対応する上記ビデオデータおよび上記オーディオデータを１の上記ストリームファイルとして上記記録媒体に記録するように上記記録のステップを制御すると共に、該１のストリームファイルの全体を再生区間として指定する上記再生区間データを生成し、該再生区間データが指定する上記ストリームファイルの先頭の位置に対応する上記マーク情報を上記再生リストファイルに格納するように上記管理情報生成のステップを制御する撮像方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビデオデータとオーディオデータとを多重化したストリームデータを記録媒体に記録するのに適した記録装置、記録方法および記録プログラム、ならびに、撮像装置および撮像方法に関する。
【背景技術】
【０００２】
従来から、記録可能で記録再生装置から取り外し可能とされると共に、記録容量が比較的大きく、ビデオデータとオーディオデータとからなるＡＶ(Audio/Video)データを記録するのに適した記録媒体として、４．７ＧＢ(Giga Byte)以上の記録容量を有するＤＶＤ(Digital Versatile Disc)が普及している。特許文献１には、記録可能なタイプのＤＶＤに対してＤＶＤ−Ｖｉｄｅｏフォーマットで記録する撮像装置が記載されている。
【特許文献１】特開２００４−３５０２５１
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このような大容量の記録媒体を、例えばビデオカメラ装置のような、記録の開始および停止を頻繁に繰り返すような記録装置に適用した場合に、記録されたＡＶストリームのユーザによる取り扱い、例えば記録されたＡＶストリームのタイトル管理や編集が容易な記録フォーマットが求められている。
【０００４】
例えば、ビデオデータおよびオーディオデータの連続同期再生、すなわち実時間再生が保障された再生が必要な所定単位に対して再生区間や再生順序を指定することが可能なフォーマットにおいては、記録された所定単位のＡＶストリームであるＡＶストリームファイルを、当該ＡＶストリームファイルの属性を示すファイルと、当該所定単位で再生区間などを指定するファイルとにより管理することで、記録媒体上のＡＶストリームファイルを加工することなく、当該ＡＶストリームファイルの再生区間や再生順序を自由に設定した編集を容易に行うことができる。このようなファイル管理形態において、編集処理が可能な記録フォーマットが求められている。
【０００５】
したがって、この発明の目的は、ビデオデータとオーディオデータとが多重化されたＡＶストリームを、タイトル管理や編集が容易なように記録媒体に記録可能な記録装置、記録方法および記録プログラム、ならびに、撮像装置および撮像方法を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、第１の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録装置において、ビデオデータおよびオーディオデータが入力されるデータ入力部と、ビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力部と、ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録部と、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、記録部および管理情報生成部とを制御する制御部とを有し、制御部は、記録指示入力部の指示に基づく記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように記録部を制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定するストリームファイルの先頭の位置に対応するマーク情報を再生リストファイルに格納するように管理情報生成部を制御する記録装置である。
【０００７】
また、第２の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法において、データ入力部に入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、記録指示入力のステップによる指示に基づく記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように記録のステップを制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定するストリームファイルの先頭の位置に対応するマーク情報を再生リストファイルに格納するように管理情報生成のステップを制御する記録方法である。
【０００８】
また、第３の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法をコンピュータ装置に実行させる記録プログラムにおいて、記録方法は、データ入力部に入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、記録指示入力のステップによる指示に基づく記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように記録のステップを制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定するストリームファイルの先頭の位置に対応するマーク情報を再生リストファイルに格納するように管理情報生成のステップを制御する記録プログラムである。
【０００９】
また、第４の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置において、被写体を撮像してビデオデータを出力する撮像部と、音声を収音してオーディオデータを出力する収音部と、ビデオデータおよびオーディオデータを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録部と、ビデオデータおよびオーディオデータの記録媒体への記録開始および記録停止を指示するユーザ操作を受け付ける操作部と、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、操作部に対するユーザ操作に応じて記録部の動作を制御すると共に、管理情報生成部を制御する制御部とを有し、制御部は、操作部に対する操作に応じて、記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように記録部を制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定するストリームファイルの先頭の位置に対応するマーク情報を再生リストファイルに格納するように管理情報生成部を制御する撮像装置である。
【００１０】
また、第５の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法において、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化し、多重化されたストリームをストリームファイルとして記録媒体に記録する記録のステップと、操作部に対するビデオデータおよびオーディオデータの記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、操作部に対するユーザ操作に応じて記録のステップの動作を制御すると共に、管理情報生成のステップを制御する制御のステップとを有し、制御のステップは、操作部に対する操作に応じて、記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように記録のステップを制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定するストリームファイルの先頭の位置に対応するマーク情報を再生リストファイルに格納するように管理情報生成のステップを制御する撮像方法である。
【００１２】
上述したように、第１、第２および第３の発明は、データ入力部に入力されたビデオデータおよびオーディオデータを多重化して記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、記録指示入力による指示に基づく記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定する再生開始時刻に対応する時刻情報を示すマーク情報を再生リストファイルに格納するように制御するようにしているため、ストリームファイルを、クリップを単位としてプレイリストを用いて管理する管理構造で記録媒体に記録することができる。
【００１３】
また、第４、第５および第６の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化したストリームが記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、操作部に対する操作に応じて、記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定する再生開始時刻に対応する時刻情報を示すマーク情報を再生リストファイルに格納するように制御するようにしているため、被写体を撮像して得られたビデオデータおよびオーディオデータを、クリップを単位としてプレイリストを用いて管理する管理構造で記録媒体に記録することができる。
【発明の効果】
【００１４】
上述のように、第１、第２および第３の発明は、データ入力部に入力されたビデオデータおよびオーディオデータを多重化して記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、記録指示入力による指示に基づく記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定する再生開始時刻に対応する時刻情報を示すマーク情報を再生リストファイルに格納するように制御するようにしているため、ストリームファイルを、クリップを単位としてプレイリストを用いて管理する管理構造で記録媒体に記録することができる効果がある。
【００１５】
また、第４、第５および第６の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化したストリームが記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けた属性ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する１以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、操作部に対する操作に応じて、記録開始から記録停止までの区間に対応するビデオデータおよびオーディオデータを１のストリームファイルとして記録媒体に記録するように制御すると共に、１のストリームファイルの全体を再生区間として指定する再生区間データを生成し、再生区間データが指定する再生開始時刻に対応する時刻情報を示すマーク情報を再生リストファイルに格納するように制御するようにしているため、被写体を撮像して得られたビデオデータおよびオーディオデータを、クリップを単位としてプレイリストを用いて管理する管理構造で記録媒体に記録することができる効果がある。
【発明を実施するための最良の形態】
【００１６】
以下、この発明の実施の一形態を、図面を参照しながら説明する。先ず、理解を容易とするために、この発明に適用可能な一例のフォーマット（以下、ＡＶＣＨＤフォーマットと呼ぶ）について説明する。ＡＶＣＨＤフォーマットは、ビデオデータとオーディオデータとが所定に多重化されたＡＶ(Audio/Video)ストリームを記録可能な記録媒体に記録する記録フォーマットとして現在提案されているもので、記録媒体に記録されたＡＶストリームを、クリップ単位でプレイリストを用いて管理可能としている。
【００１７】
例えばＩＴＵ−Ｔ(International Telecommunication Union-Telecommunication Standarization Sector)勧告Ｈ．２６４あるいはＩＳＯ(International Organization for Standarization)／ＩＥＣ(International Electrotechnical Commission)国際標準１４４９６−１０（ＭＰＥＧ−４パート１０）Advanced Video Coding（以下、Ｈ．２６４｜ＡＶＣと略称する）に規定される符号化方式や、ＭＰＥＧ(Moving Pictures Experts Group)ビデオやＭＰＥＧオーディオといった符号化方式で符号化され、ＭＰＥＧ２システムズに従い多重化されたビットストリームは、クリップＡＶストリーム（またはＡＶストリーム）と称される。クリップＡＶストリームは、所定のファイルシステムによりファイルとしてディスクに記録される。このファイルを、クリップＡＶストリームファイル（またはＡＶストリームファイル）と称する。
【００１８】
クリップＡＶストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップＡＶストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップＡＶストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。
【００１９】
図１は、この発明に適用可能なＡＶＣＨＤフォーマットに規定されるデータモデルを概略的に示す。このＡＶＣＨＤフォーマットによれば、データ構造は、図１に示されるように４層のレイヤよりなる。最も最下層のレイヤは、クリップＡＶストリームが配置されるレイヤである（便宜上、クリップレイヤと呼ぶ）。その上のレイヤは、クリップＡＶストリームに対する再生箇所を指定するための、プレイリスト(PlayList)と、プレイアイテム(PlayItem)とが配置されるレイヤである（便宜上、プレイリストレイヤと呼ぶ）。さらにその上のレイヤは、プレイリストに対して再生順などを指定するコマンドからなるムービーオブジェクト(Movie Object)などが配置されるレイヤである（便宜上、オブジェクトレイヤと呼ぶ）。最上層のレイヤは、記録媒体に格納されるタイトルなどを管理するインデックステーブルが配置される（便宜上、インデックスレイヤと呼ぶ）。
【００２０】
クリップレイヤについて説明する。クリップＡＶストリームは、ビデオデータやオーディオデータがＭＰＥＧ２  ＴＳ（トランスポートストリーム）の形式などに多重化されたビットストリームである。このクリップＡＶストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
【００２１】
また、クリップＡＶストリームには、字幕を表示するグラフィクスストリームであるＯＢストリーム(Overlay Bitmap stream)や、メニュー表示などに用いられるデータ（ボタン画像データなど）をストリームにしたＭＢストリーム(Menu Bitmap stream)ストリームを多重化することができる。
【００２２】
クリップＡＶストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップＡＶストリームとクリップ情報とから構成される、一つのオブジェクトである。
【００２３】
ファイルは、一般的に、バイト列として扱われる。クリップＡＶストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップＡＶストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
【００２４】
プレイリストレイヤについて説明する。プレイリストは、再生するＡＶストリームファイルの指定と、指定されたＡＶストリームファイルの再生箇所を指定する再生開始点（ＩＮ点）と再生終了点（ＯＵＴ点）の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるＡＶストリームファイルの一部分を再生するということになる。すなわち、プレイアイテム中のＩＮ点およびＯＵＴ点情報に基づき、クリップ中の対応する区間が再生される。
【００２５】
オブジェクトレイヤについて説明する。ムービーオブジェクトは、ナビゲーションコマンドプログラムと、ムービーオブジェクトとを連携するターミナルインフォメーションを含む。ナビゲーションプログラムは、プレイリストの再生を制御するためのコマンド（ナビゲーションコマンド：navigation command）である。ターミナルインフォメーションは、ユーザのプレーヤに対するインタラクティブな操作を許可するための情報を含んでいる。このターミナルインフォメーションに基づき、メニュー画面の呼び出しや、タイトルサーチといったユーザオペレーションが制御される。
【００２６】
インデックスレイヤについて説明する。インデックスレイヤは、インデックステーブル(Index Table)からなる。インデックステーブルは、記録媒体に記録されたコンテンツのタイトルを定義する、トップレベルのテーブルである。インデックステーブルに格納されているタイトル情報に基づき、プレーヤに常駐されるシステムソフトウェア中のモジュールマネージャにより記録媒体の再生が制御される。
【００２７】
すなわち、図２に概略的に示されるように、インデックステーブル中の任意のエントリは、タイトルと称され、インデックステーブルにエントリされるファーストプレイバックタイトル(First PlaybackTitle)、メニュータイトル(MenuTitle)およびムービータイトル(MovieTitle)＃１、＃２、・・・は、全てタイトルである。各タイトルは、ムービーオブジェクトに対するリンクを示す。
【００２８】
理解を容易とするため再生専用の記録媒体を例にとると、例えば、ファーストプレイバックタイトルは、当該記録媒体に格納されるコンテンツが映画であれば、映画本編に先立って映出される映画会社の宣伝用映像（トレーラ）に対応する。メニュータイトルは、例えばコンテンツが映画である場合、本編再生、チャプタサーチ、字幕や言語設定、特典映像再生などを選択するためのメニュー画面に対応する。また、ムービータイトルは、メニュータイトルから選択される各映像である。タイトルがさらにメニュー画面であるような構成も可能である。
【００２９】
図３は、上述のようなクリップＡＶストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ(Unified Modeling Language)図である。プレイリストは、１または複数のプレイアイテムに対応付けられ、プレイアイテムは、１のクリップに対応付けられる。１のクリップに対して、それぞれ開始点および／または終了点が異なる複数のプレイアイテムを対応付けることができる。１のクリップから１のクリップＡＶストリームファイルが参照される。同様に、１のクリップから１のクリップ情報ファイルが参照される。また、クリップＡＶストリームファイルとクリップ情報ファイルとは、１対１の対応関係を有する。このような構造を定義することにより、クリップＡＶストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
【００３０】
また、図４のように、複数のプレイリストから同一のクリップを参照することもできる。また、１のプレイリストから複数のクリップを指定することもできる。クリップは、プレイリスト中のプレイアイテムに示されるＩＮ点およびＯＵＴ点により、参照される。図４の例では、クリップ３００は、プレイリスト３１０のプレイアイテム３２０から参照されると共に、プレイリスト３１１を構成するプレイアイテム３２１および３２２のうちプレイアイテム３２１から、ＩＮ点およびＯＵＴ点で示される区間が参照される。また、クリップ３０１は、プレイリスト３１１のプレイアイテム３２２からＩＮ点およびＯＵＴ点で示される区間が参照されると共に、プレイリスト３１２のプレイアイテム３２３および３２４のうち、プレイアイテム３２３のＩＮ点およびＯＵＴ点で示される区間が参照される。
【００３１】
次に、ＡＶＣＨＤフォーマットによる、記録媒体に記録されるファイルの管理構造について、図５を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、１つのディレクトリ（図５の例ではルート(root)ディレクトリ）が作成される。このディレクトリの下が、１つの記録再生システムで管理される範囲とする。
【００３２】
ルートディレクトリの下に、ディレクトリ"BDMV"およびディレクトリ"AVCHDTN"が置かれる。ディレクトリ"AVCHDTN"には、例えばクリップの代表画像を所定サイズに縮小したサムネイルファイルが置かれる。ディレクトリ"BDMV"に、図１を用いて説明したデータ構造が格納される。
【００３３】
ディレクトリ"BDMV"の直下には、ファイルは、ファイル"index.bdmv"およびファイル"MovieObject.bdmv"の２つのみを置くことができる。また、ディレクトリ"BDMV"の下に、ディレクトリ"PLAYLIST"、ディレクトリ"CLIPINF"、ディレクトリ"STREAM"およびディレクトリ"BACKUP"が置かれる。ディレクトリ"BACKUP"は、各ディレクトリおよびファイルのバックアップが格納される。
【００３４】
ファイル"index.bdmv"は、ディレクトリ"BDMV"の内容について記述される。すなわち、このファイル"index.bdmv"が上述した最上層のレイヤであるインデックスレイヤにおけるインデックステーブルに対応する。また、ファイル"MovieObject.bdmv"は、１つ以上のムービーオブジェクトの情報が格納される。すなわち、このファイル"MovieObject.bdmv"が上述したオブジェクトレイヤに対応する。
【００３５】
ディレクトリ"PLAYLIST"は、プレイリストのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"PLAYLIST"は、プレイリストに関するファイルであるファイル"xxxxx.mpls"を含む。ファイル"xxxxx.mpls"は、プレイリストのそれぞれに対して作成されるファイルである。ファイル名において、"."（ピリオド）の前の"xxxxx"は、５桁の数字とされ、ピリオドの後ろの"mpls"は、このタイプのファイルに固定的とされた拡張子である。
【００３６】
ディレクトリ"CLIPINF"は、クリップのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"CLIPINF"は、クリップＡＶストリームファイルのそれぞれに対するクリップインフォメーションファイルであるファイル"zzzzz.clpi"を含む。ファイル名において、"."（ピリオド）の前の"zzzzz"は、５桁の数字とされ、ピリオドの後ろの"clpi"は、このタイプのファイルに固定的とされた拡張子である。
【００３７】
ディレクトリ"STREAM"は、実体としてのＡＶストリームファイルが置かれるディレクトリである。すなわち、ディレクトリ"STREAM"は、クリップインフォメーションファイルのそれぞれに対応するクリップＡＶストリームファイルを含む。クリップＡＶストリームファイルは、ＭＰＥＧ２(Moving Pictures Experts Group 2)のトランスポートストリーム（以下、ＭＰＥＧ２  ＴＳと略称する）からなり、ファイル名が"zzzzz.m2ts"とされる。ファイル名において、ピリオドの前の"zzzzz"は、対応するクリップインフォメーションファイルと同一することで、クリップインフォメーションファイルとこのクリップＡＶストリームファイルとの対応関係を容易に把握することができる。
【００３８】
なお、ディレクトリ"AVCHDTN"は、２種類のサムネイルファイル"thumbnail.tidx"および"thumbnail.tdt2"を置くことができる。サムネイルファイル"thumbnail.tidx"は、所定の方式で暗号化されたサムネイル画像が格納される。サムネイルファイル"thumbnail.tdt2"は、暗号化されていないサムネイル画像が格納される。例えばビデオカメラでユーザが撮影したクリップに対応するサムネイル画像は、コピーフリーであって暗号化する必要が無いと考えられるため、このサムネイルファイル"thumbnail.tdt2"に格納される。
【００３９】
図５で示した各ファイルのうち、この発明に関わりの深いものについて、より詳細に説明する。先ず、ディレクトリ"BDMV"の直下に置かれるファイル"index.bdmv"について説明する。図６は、このファイル"index.bdmv"の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるＣ言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
【００４０】
図６において、フィールドTypeIndicatorは、３２ビットのデータ長を有し、このファイルがインデックステーブルであることを示す。フィールドTypeIndicator2は、３２ビットのデータ長を有し、このファイル"index.bdmv"のバージョンを示す。フィールドIndexesStartAddressは、３２ビットのデータ長を有し、このシンタクス内にあるブロックblkIndexes()の開始アドレスを示す。
【００４１】
フィールドExtensionDataStartAddressは、３２ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。フィールドExtensionDataStartAddressは、このファイル"index.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"０"から開始される。若し、このフィールドExtensionDataStartAddressの値が"０"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【００４２】
フィールドExtensionDataStartAddressに続けて、データ長が１９２バイトの領域reservedが配される。なお、領域reservedは、バイトアライメントや、将来的なフィールドの追加などのための領域である。これは、以下の説明においても同様である。ブロックblkAppInfoBDMV()は、コンテンツ制作者が任意の情報を記述できるブロックであって、プレーヤの動作などには影響を与えない。
【００４３】
ブロックblkIndexes()は、このファイル"index.bdmv"の実質的な内容であって、このブロックblkIndexes()に記述された内容により、ディスクをプレーヤに装填した際に再生されるファーストプレイバックや、トップメニューから呼び出されるタイトル（ムービーオブジェクト）が指定される。インデックステーブルにより呼び出されたムービーオブジェクト等に記述されたコマンドに基づき、後述するプレイリストファイルが読み込まれる。
【００４４】
図７は、ブロックblkIndexes()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLength直後からこのブロックblkIndexes()の終わりまでのデータ長を示す。続けて、ブロックFirstPlaybackTitle()およびブロックMenuTitle()が配される。
【００４５】
ブロックFirstPlaybackTitle()は、ファーストプレイバックで用いられるオブジェクトに関する情報が記述される。ブロックFirstPlaybackTitle()は、１ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに３１ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、１４ビットのデータ長を有する領域reservedを介して、１６ビットのデータ長を有するフィールドFirstPlaybackTitleMobjIDRefが配される。このフィールドFirstPlaybackTitleMobjIDRefにより、ファーストプレイバックタイトルで用いられるムービーオブジェクトのＩＤを示す。
【００４６】
ムービーオブジェクトのＩＤは、例えば、図８および図９を用いて後述するムービーオブジェクトのシンタクスに基づき、ムービーオブジェクトのforループ文においてループ変数として用いられる値mobj_idで示される。この例では、フィールドFirstPlaybackTitleMobjIDRefは、参照するムービーオブジェクトに対応する値mobj_idが格納される。
【００４７】
なお、ブロックblkIndexes()におけるブロックFirstPlaybackTitle()内のフィールドFirstPlaybackTitleMobjIDRefは、トップメニューのムービーオブジェクトを指していてもよいし、タイトルを指していてもよい。
【００４８】
ブロックMenuTitle()は、トップメニューで用いられるオブジェクトに関する情報が記述される。ブロックMenuTitle()は、１ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに３１ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、１４ビットのデータ長を有する領域reservedを介して、１６ビットのデータ長を有するフィールドMenuTitleMobjIDRefが配される。フィールドMenuTitleMobjIDRefは、メニュータイトルで用いられるムービーオブジェクトのＩＤを示す。
【００４９】
ブロックMenuTitle()の次のフィールドNumberOfTitlesは、１６ビットのデータ長を有し、ユーザが選択、再生可能なタイトルの数を示す。次のforループ文に従い、このフィールドNumberOfTitlesに示される回数だけ、値title_idを引数として、ブロックMovieTitle[title_id]()が記述される。ブロックMovieTitle[title_id]()は、タイトル毎の情報が記述される。値title_idは、"０"からフィールドNumberOfTitlesで示される値までの数値であり、タイトルを識別する。
【００５０】
ブロックMovieTitle[title_id]()において、１ビットのデータ長を有する領域reservedを介して固定値"1"が記述され、さらに、４６ビットのデータ長を有する領域reservedを介してフィールドMovieTitleMobjIDRefが記述される。フィールドMovieTitleMobjIDRefは、１６ビットのデータ長を有し、このタイトルで用いられるムービーオブジェクトのＩＤを示す。フィールドMovieTitleMobjIDRefの後ろに、３２ビットのデータ長を有する領域reservedが配される。
【００５１】
図８は、ディレクトリ"BDMV"の直下に置かれるファイル"MovieObject.bdmv"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、３２ビット（４バイト）のデータ長を有し、このファイルがファイル"MovieObject.bdmv"であることを示す。フィールドTypeIndicatorは、ＩＳＯ(International Organization for Standarization)６４６に規定された符号化方式で符号化した４文字からなる文字列が記述される。この図８の例では、フィールドtype_indicatiorにＩＳＯ６４６に既定の方式で符号化された４文字の文字列"MOBJ"が記述され、このファイルがファイル"MovieObject.bdmv"であることが示される。
【００５２】
フィールドTypeIndicator2は、３２ビット（４バイト）のデータ長を有し、このファイル"MovieObject.bdmv"のバージョン番号を示す。このファイル"MovieObject.bdmv"では、フィールドTypeIndicator2は、ＩＳＯ６４６に規定された符号化方式で符号化した４文字の文字列"0100"でなければならない。
【００５３】
フィールドExtensionDataStartAddressは、３２ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、このファイル"MovieObject.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"０"から開始される。若し、このフィールドExtensionDataStartAddressの値が"０"であれば、このファイル"MovieObject.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【００５４】
なお、この図８に示すシンタクス内のフィールドpadding_wordは、１６ビットのデータ長を有し、このファイル"MovieObject.bdmv"のシンタクスに従いforループ文に値N1または値N2で示される回数だけ挿入される。値N1または値N2は、０または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
【００５５】
フィールドExtensionDataStartAddressに続けてデータ長が２２４ビットの領域reservedが配され、その次に、このファイル"MovieObject.bdmv"の本体であるブロックblkMovieObjects()が格納される。
【００５６】
図９は、ブロックblkMovieObjects()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からこのブロックblkMovieObjects()の終わりまでのデータ長を示す。３２ビットのデータ長を有する領域reservedを介してフィールドNumberOfMobjsが配される。フィールドNumberOfMobjsは、直後のforループ文に従い格納されるムービーオブジェクトの数を示す。forループ文のループ変数として用いられる値mobj_idで、ムービーオブジェクトが一意に特定される。値mobj_idは、"０"から始まる値で、ムービーオブジェクトは、forループ文中に記述される順序により定義される。
【００５７】
forループ文中のブロックTerminalInfo()は、固定値"1"が記述され、次に１５ビットのデータ長を有する領域reservedが配される。その次に、１６ビットのデータ長を有するフィールドNumberOfNavigationCommands[mobj_id]が配される。このフィールドNumberOfNavigationCommands[mobj_id]は、値mobj_idによって指し示されるムービーオブジェクトMovieObject[mobj_id]()に含まれるナビゲーションコマンド(NavigationCommand)の数を表す。
【００５８】
次の、値command_idをループ変数とするforループ文により、フィールドNumberOfNavigationCommands[mobj_id]に示される数だけ、ナビゲーションコマンドが記述される。すなわち、このforループ文中に配されるフィールドNavigationCommand[mobj_id][command_id]は、値mobj_idによって指し示されるブロックMovieObject[mobj_id]()に含まれる、値command_idで示される順番のナビゲーションコマンドNavigationCommandを格納する。値command_idは、０から始まる値で、ナビゲーションコマンドNavigationCommandは、このforループ文中に記述される順序で定義される。
【００５９】
図１０は、プレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、３２ビット（４バイト）のデータ長を有し、このファイルがプレイリストファイルであることを示す。フィールドTypeIndicator2は、３２ビット（４バイト）のデータ長を有し、このプレイリストファイルのバージョンを示す。フィールドPlayListStartAddressは、３２ビットのデータ長を有し、このシンタクス中のブロックblkPlayList()の開始アドレスを示す。
【００６０】
フィールドPlayListMarkStartAddressは、３２ビットのデータ長を有し、このシンタクス中のブロックblkPlayListMark()の開始アドレスを示す。フィールドExtensionDataStartAddressは、３２ビットのデータ長を有し、このシンタクス中のブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、ブロックblkExtensionData()の開始アドレスを、ファイル"xxxxx.mpls"の最初のバイトからの相対バイト数を表した値である。相対バイト数は、"０"から開始される。若し、このフィールドExtensionDataStartAddressの値が"０"であれば、このファイル"xxxxx.mpls"内に、ブロックblkExtensionData()が存在しないことを示す。
【００６１】
１６０ビットのデータ長を有する領域reservedを介してブロックblkAppInfoPlayList()が配される。ブロックblkAppInfoPlayList()は、次のブロックblkPlayList()に記述されるプレイリストのタイプ、再生制限などの情報が記述される。ブロックblkPlayList()は、プレイリストが記述される。ブロックblkPlayListMark()は、チャプタジャンプなどでジャンプされるポイントが記述される。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。
【００６２】
なお、この図１０に示すシンタクス内のフィールドpadding_wordは、１６ビットのデータ長を有し、このファイル"xxxxx.mpls"のシンタクスに従いforループ文に値N1、値N2および値N3で示される回数だけ挿入される。値N1、値N2または値N3は、０または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
【００６３】
図１１は、ブロックblkPlayList()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayList()の最後までのデータ長を示す。フィールドLengthに続けて１６ビットのデータ長を有する領域reservedが配され、次にフィールドNumberOfPlayItemsが配される。フィールドNumberOfPlayItemsは、１６ビットのデータ長を有し、このブロックblkPlayList()に含まれるプレイアイテムの数を示す。フィールドNumberOfSubPathは、このブロックblkPlayList()に含まれるサブパスの数を示す。
【００６４】
次のforループ文に従い、フィールドNumberOfPlayItemsで示される数だけ、プレイアイテムが記述されるブロックblkPlayItem()が記述される。forループ文に基づくカウント数がブロックblkPlayItem()の識別子PlayItem_idとなる。さらに次のforループ文に従い、フィールドNumberOfSubPathで示される数だけ、ブロックblkSubPath()が記述される。forループ文に基づくカウント数がブロックblkSubPath()の識別子SubPath_idとなる。
【００６５】
なお、サブパスは、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応して持つことができる。サブパスは、例えば、アフレコ用のオーディオデータの指定や、２枚の映像を合成する際に、プレイアイテムで指定されるクリップと同期して再生する副映像を指定するといった目的で用いられる。
【００６６】
図１２は、ブロックblkPlayItem()の一例の構造を表すシンタクスを示す。フィールドLengthは、１６ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayItem()の最後までのデータ長を示す。
【００６７】
フィールドClipInformationFileName[0]は、４０ビット（５バイト）のデータ長を有し、このブロックblkPlayItem()が参照するクリップインフォメーションファイルのファイル名が示される。このプレイアイテムにおいて、フィールドClipInformationFileName[0]で示されるファイル名のクリップインフォメーションファイルが読み出される。フィールドClipCodecIdentifier[0]は、３２ビット（４バイト）のデータ長を有し、このブロックblkPlayItem()によるプレイアイテムにおいて用いられるクリップＡＶストリームのコーデック方式を示す。
【００６８】
１２ビットのデータ長を有する領域reservedを介して、フィールドConnectionConditionが配される。フィールドConnectionConditionは、４ビットのデータ長を有し、クリップ間の接続状態に関する情報を示す。記録用途の記録媒体に対しては、フィールドConnectionConditionの値として"１"、"５"または"６"が用いられる。フィールドConnectionConditionの値が"１"で、そのクリップと次のクリップとがシームレス接続しないことを示し、フィールドConnectionConditionの値が"５"または"６"で、そのクリップと次のクリップとがシームレス接続することを示す。なお、シームレス接続とは、クリップと次のクリップとがフレームタイミングで連続的に再生されるように、クリップ間の再生制御を行うことをいう。
【００６９】
フィールドConnectionConditionの値が"５"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して長くされる（図１３Ａ参照）。これにより、クリップとクリップとを接続する際に、オーディオデータのフェイドアウト処理が可能とされる。例えば、ユーザによる記録停止操作によりクリップがクローズされる場合に、フィールドConnectionConditionの値が"５"とされる。以下、このフィールドConnectionConditionの値が"５"で示されるクリップの接続方法を、第１のシームレス接続と呼ぶ。
【００７０】
フィールドConnectionConditionの値が"６"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して同じか若しくは短いくされる（図１３Ｂ参照）。これにより、クリップとクリップとの接続をシームレスに行うことが可能とされる。例えば、ユーザ操作に応じた記録停止以外の理由、例えばシステム要因に基づきクリップがクローズされる場合に、フィールドConnectionConditionの値が"６"とされる。以下、このフィールドConnectionConditionの値が"６"で示されるクリップの接続方法を、第２のシームレス接続と呼ぶ。
【００７１】
フィールドRefToSTCID[0]は、８ビットのデータ長を有し、システムタイムベース（ＳＴＣ）の不連続点に関する情報を示す。フィールドINTimeおよびフィールドOUTTimeは、それぞれ３２ビットのデータ長を有し、メインクリップＡＶストリームの再生範囲を示す。フィールドINTimeが開始点（ＩＮ点）を示し、フィールドOUTTimeが終了点（ＯＵＴ点）を示す。
【００７２】
ブロックblkUOMaskTable()は、ユーザ入力の受付制限が設定されるテーブルである。１ビットのデータ長を有するフラグPlayItemRandomAccessFlagは、このブロックblkPlayItem()によるプレイアイテムに対してランダムアクセスを許可するか否かを規定する。続けて、７ビットのデータ長を有する領域reservedを介してフィールドStillModeが配される。フィールドStillModeは、８ビットのデータ長を有し、ブロックblkPlayItem()によるプレイアイテムにおいて、最後に表示した映像を静止画として表示させるか否かを示す。フィールドStillModeの値が"0x01"（バイナリ）であれば、if文に基づき、１６ビットのデータ長を有するフィールドStillTimeにより静止時間が示される。フィールドStillModeの値が"0x01"以外であれば、当該１６ビットのデータ長を有する領域がワードアライメントのために予約された領域reservedとされる。
【００７３】
ブロックblkSTNTable()は、このブロックblkPlayItem()によるプレイアイテムが管理しているクリップＡＶストリームの属性、ＰＩＤ番号、記録媒体上での記録位置などが管理される。
【００７４】
図１４は、ブロックblkPlayListMark()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayListMark()の最後までのデータ長を示す。
【００７５】
フィールドNumberOfPlayListMarksは、１６ビットのデータ長を有し、このブロックblkPlayListMark()に含まれるプレイリストマークの数を示す。次のforループ文に従い、フィールドNumberOfPlayListMarksで示される数だけプレイリストマークの情報が記述される。
【００７６】
forループ文内において、８ビットのデータ長を有する領域reserveに続けてフィールドMarkTypeが配される。フィールドMarkTypeは、８ビットのデータ長を有し、マークのタイプを示す。フィールドRefToPlayItemIDは、１６ビットのデータ長を有し、マークが打たれるプレイアイテムを参照する識別情報PlayItem_idが記述される。フィールドMarkTimeStampは、３２ビットのデータ長を有し、マークが打たれるポイントを示すタイムスタンプが記述される。フィールドEntryESPIDは、１６ビットのデータ長を有し、マークによって指し示されるエレメンタリストリームを含んでいるＴＳパケットのＰＩＤの値を示す。フィールドDurationは、４５ｋＨｚのクロックを単位とした計測による、３２ビットのデータ長を有する符号無し整数である。このフィールドDurationに格納される値が"０"であれば、このフィールドDurationは、意味を成さない。
【００７７】
図１５は、クリップインフォメーションファイルの一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、３２ビット（４バイト）のデータ長を有し、このファイルがクリップインフォメーションファイルであることを示す。フィールドTypeIndicator2は、３２ビット（４バイト）のデータ長を有し、このクリップインフォメーションファイルのバージョンを示す。
【００７８】
このクリップインフォメーションファイルは、ブロックblkClipInfo()、ブロックblkSequenceInfo()、ブロックblkProgramInfo()、ブロックblkCPI()、ブロックblkClipMark()およびブロックblkExtensionData()を有し、それぞれ３２ビットのデータ長を有するフィールドSequenceInfoStartAddress、フィールドProgramInfoStartAddress、フィールドCPIStartAddress、フィールドClipMarkStartAddressおよびフィールドExtensionDataStartAddressは、各々対応するブロックの開始アドレスを示す。
【００７９】
フィールドExtensionDataStartAddressは、このクリップインフォメーションファイルの最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"０"から開始される。若し、このフィールドExtensionDataStartAddressの値が"０"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【００８０】
ブロックblkClipInfo()は、これらの開始アドレスを示すフィールドに続く、９６ビットのデータ長を有する領域reservedの次から開始される。ブロックblkClipInfo()は、このクリップインフォメーションファイルが管理するクリップＡＶストリームに関する情報が記述される。ブロックblkSequenceInfo()は、ＳＴＣやＡＴＣ（アライバルタイムベース）が連続しているシーケンスをまとまりとして管理する情報が記述される。ブロックblkProgramInfo()は、このクリップインフォメーションファイルに管理されるクリップＡＶストリームの符号化方式、クリップＡＶストリーム中のビデオデータのアスペクト比などの情報が記述される。ブロックblkCPI()は、ランダムアクセス開始点などの、ＡＶストリーム中の特徴的な箇所を表す特徴点情報ＣＰＩに関する情報が格納される。
【００８１】
また、ブロックblkClipMark()は、チャプタ位置などの、クリップに付された頭出しのためのインデックス点（ジャンプポイント）が記述される。ブロックblkExtensionData()は、拡張データを格納することができる領域である。なお、これらブロックblkClipMark()およびクリップインフォメーションファイル内のブロックblkExtensionData()は、この発明との関連性が薄いので、詳細な説明を省略する。
【００８２】
図１６は、ブロックblkClipInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkClipInfo()の最後までのデータ長を示す。１６ビットのデータ長を有する領域reservedを介して、フィールドClipStreamTypeが配される。
【００８３】
フィールドClipStreamTypeは、８ビットのデータ長を有し、クリップＡＶストリームの種別を表す。このフィールドClipStreamTypeの値は、例えば"１"に固定的とされる。フィールドApplicationTypeは、８ビットのデータ長を有し、クリップＡＶストリーム（拡張子が「m2ts」のファイル）がどのような多重化によって作られているかを示す。フィールドApplicationTypeの値が"１"で、対応するクリップＡＶストリームは、通常の動画が再生される。続けて３１ビットのデータ長を有する領域reservedが配される。
【００８４】
データ長が１ビットのフラグIsCC5は、プレイリストにおけるブロックblkPlayItem()によって、対応するクリップと次のクリップとの接続を、上述した第１のシームレス接続、すなわちフィールドConnectionConditionの値が"５"で示される方法で行うか否かを示す。フラグIsCC5の値が"１"（バイナリ値）であれば、クリップ間の接続が第１のシームレス接続によりなされていることを示す。
【００８５】
フィールドTSRecordingRateは、クリップＡＶストリームファイルの記録レートをバイト／秒で表したものである。フィールドNumberOfSourcePacketsは、クリップＡＶストリームに含まれるパケット数を表す。システムにより予約された１０２４ビットのデータ長の領域reservedを介してブロックTSTypeInfoBlock()が配される。ブロックTSTypeInfoBlock()は、クリップＡＶストリームが格納されるパケットのタイプを示す情報が格納される。このブロックTSTypeInfoBlock()は、この発明との関連性が薄いので、詳細な説明を省略する。
【００８６】
次のif文以下の情報は、上述のフラグIsCC5の値が"１"、すなわち、対応するクリップと次のクリップとの接続を第１のシームレス接続で行うとされた場合に記述される。if文の次の８ビットのデータ長を有する領域reservedを介してフィールドFollowingClipStreamTypeが配されるフィールドFollowingClipStreamTypeは、８ビットのデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップのタイプが記述される。８ビットのデータ長を有する領域reservedを介してフィールドFollowingClipInformationFileNameが配される。
【００８７】
フィールドFollowingClipInformationFileNameは、４０ビット（５バイト）のデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップに対応するクリップインフォメーションファイルのファイル名が記述される。次のフィールドClipCodecIdentifierは、３２ビット（４バイト）のデータ長を有し、当該次のクリップの符号化方式を示す。この例では、フィールドClipCodecIdentifierは、ＩＳＯ６４６に既定の方式で符号化された４文字の文字列値"M2TS"に固定的とされる。次に８ビットのデータ長を有する領域reservedが配される。
【００８８】
図１７は、ブロックblkSequenceInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkSequenceInfo()の最後までのデータ長を示す。１５ビットのデータ長を有する領域reservedを介してデータ長が１ビットで固定値"１"が記述される。
【００８９】
次のフィールドSPNATCStartは、３２ビットのデータ長を有し、連続した時間に記録されたことを表すシーケンス（シーケンスATCSequenceと呼ぶ）の開始をパケット番号で表す。この図１７の例では、フィールドSPNATCStartは、値を"０"としてクリップＡＶストリームファイルの先頭と一致させている。フィールドNumberOfSTCSequenceは、シーケンスATCSequence上のシーケンスSTCSequenceの数を表す。フィールドNumberOfSTCSequenceは、値が"１"以上とされる。
【００９０】
次のforループ文に従い、フィールドNumberOfSTCSequenceで示される数だけ、シーケンスSTCSequenceの情報が記述される。シーケンスSTCSequenceは、ＭＰＥＧ２  ＴＳ(Transport Stream)における時間軸の基準であるＰＣＲ(Program Clock Reference)が連続な範囲を表す。シーケンスSTCSequenceには、クリップ内で一意な番号STC_idが割り当てられる。このシーケンスSTCSequence内では、不連続の無い一貫した時間軸を定義できるので、プレイアイテムの開始時刻および終了時刻を一意に定めることができる。つまり、各プレイアイテムの開始点と終了点は、同一のシーケンスSTCSequenceに存在していなければならない。このforループ文においては、値stc_idによりシーケンスSTCSequenceが指定される。
【００９１】
フィールドPCRPID[stc_id]は、１６ビットのデータ長を有し、ＭＰＥＧ２  ＴＳにおいて、ＰＣＲ(Program Clock Reference)が含まれるＴＳパケットのＰＩＤを表す。フィールドSPNSTCStart[stc_id]は、３２ビットのデータ長を有し、シーケンスSTCSequenceの開始をパケット番号で表す。フィールドPresentationStartTimeおよびフィールドPresentationEndTimeは、それぞれ３２ビットのデータ長を有し、クリップＡＶストリーム中の有効な範囲を表す。フィールドPresentationStartTimeおよびフィールドPresentationEndTimeで示される範囲がプレイアイテムから参照できる範囲となる。
【００９２】
図１８は、ブロックblkProgramInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkProgramInfo()の最後までのデータ長を示す。１５ビットのデータ長を有する領域reservedを介して、データ長が１ビットで固定値"１"が記述される。
【００９３】
フィールドSPNProgramSequenceStartは、３２ビットのデータ長を有し、対応するクリップＡＶストリームファイルにおいて、プログラムシーケンスが開始されるソースパケットの番号が記述される。フィールドProgramMapPIDは、１６ビットのデータ長を有し、プログラムシーケンスに適用可能なプログラムマップセクションを含むとされているＴＳパケットのＰＩＤの値を示す。フィールドNumberOfStreamsInPSは、８ビットのデータ長を有し、プログラムシーケンスに定義されるエレメンタリストリームの数を示す。フィールドNumberOfStreamsInPSに続けて、８ビットのデータ長を有する領域reservedが配される。
【００９４】
次のforループ文に従い、値[stream_index]をループ変数として、フィールドNumberOfStreamsInPSで示される数だけ、フィールドStreamPID[stream_index]およびブロックblkStreamCodingInfo(stream_index)の組が格納される。フィールドStreamPID[stream_index]は、プログラムシーケンスによって参照されたＰＭＴ(Program Map Table)に記述されたエレメンタリストリームに対応するＰＩＤの値を示す。次のブロックblkStreamCodingInfo(stream_index)は、対応するフィールドStreamPID[stream_index]で示されるエレメンタリストリームの符号化方式に関する情報が記述される。
【００９５】
図１９は、ブロックblkCPI()の一例の構造を表すシンタクスを示す。ＭＰＥＧストリームのような、フレーム間圧縮を行っている符号化ストリームにおいては、デコード開始可能な箇所は、ＧＯＰ(Group Of Picture)の先頭など一部の箇所に限定されていることが多い。ＣＰＩ(Characteristic Point Information)とは、そのデコード可能な開始点の位置の情報を集めたデータベースで、再生時刻と、ファイル内アドレスとが対応付けられたテーブルになっている。すなわち、ＣＰＩは、デコード単位の先頭位置を示す情報がテーブル化されている。
【００９６】
このようにデータベースを定めることで、例えば、任意の時刻から再生したい場合、再生時刻を元にＣＰＩを参照することによって再生位置のファイル内アドレスがわかる。このアドレスは、デコード単位の先頭となっているため、プレーヤは、そこからデータを読み出してデコードし、素早く画像を表示することができる。
【００９７】
なお、このＣＰＩに格納される、デコード単位の先頭位置（この例ではＧＯＰの先頭位置）を、ＥＰ(Entry Point)エントリと称する。
【００９８】
図１９において、フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkCPI()の最後までのデータ長を示す。次のif文に従い、フィールドLengthの値が０でなければ、１２ビットのデータ長を有する領域reservedを介してフィールドCPITypeが配される。フィールドCPITypeは、４ビットのデータ長を有し、ＣＰＩの種類を示す。次のブロックblkEPMap()は、対応するクリップＡＶストリームファイルにおけるＰＴＳ値とバイトアドレスとの関連付けを行うテーブルが格納される。
【００９９】
図２０は、ブロックblkEPMap()の一例の構造を表すシンタクスを示す。８ビットのデータ長を有する領域reservedを介してフィールドNumberOfStreamPIDEntriesが配される。フィールドNumberOfStreamPIDEntriesは、８ビットのデータ長を有し、ブロックblkEPMap()におけるブロックblkEPMapForOneStreamPIDのエントリ数を示す。forループ文に従い、値[k]をループ変数として、フィールドNumberOfStreamPIDEntriesに示される数だけ、エントリポイントに関する情報が記述される。
【０１００】
forループ文内において、フィールドStreamPID[k]は、１６ビットのデータ長を有し、ブロックblkEPMap()の中で[k]番目にエントリされるブロックblkEPMapForOneStreamPID（以下、[k]番目のブロックblkEPMapForOneStreamPIDと記述する）によって参照されるエレメンタリストリームを伝送するトランスポートパケットのＰＩＤの値を示す。
【０１０１】
１０ビットのデータ長を有する領域reservedを介してフィールドEPStreamType[k]が配される。フィールドEPStreamType[k]は、４ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDによって参照されるエレメンタリストリームのタイプを示す。フィールドNumberOfEPCoarseEntries[k]は、１６ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDの中にある粗い検索用のサブテーブル(EP coarse table)のエントリ数を示す。フィールドNumberOfEPFineEntries[k]は、１８ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDの中にある精密な検索用のサブテーブル(EP fine table)のエントリ数を示す。フィールドEPMapForOneStreamPIDStartAddress[k]は、３２ビットのデータ長を有し、ブロックblkEPMap()の中で[k]番目のブロックblkEPMapForOneStreamPIDが始まる相対バイト位置を示す。この値は、ブロックblkEPMap()の第１バイト目からのバイト数で示される。
【０１０２】
上述のforループ文による記述の後、１６ビットの整数倍のデータ長を有するパディングワードを挟んで記述されるforループ文に従い、値[k]をループ変数として、フィールドNumberOfStreamPIDEntriesに示される数だけ、ブロックblkEPMapForOneStreamPID(EPStreamType[k], NumberOfEPCoarseEntries[k], NumberOfEPFineEntries[k])が格納される。すなわち、引数NumberOfEPCoarseEntries[k]は、サブテーブル(EP coarse table)に格納されるエントリPTSEPCoarseおよびエントリSPNEPCoarseの数を示す。同様に、引数NumberOfEPFineEntries[k]は、サブテーブル(EP fine table)に格納されるエントリPTSEPFineおよびエントリSPNEPFineの数を示す。以下では、引数NumberOfEPCoarseEntries[k]および引数NumberOfEPFineEntries[k]を、それぞれ適宜、エントリ数Ncおよびエントリ数Nfと呼ぶ。
【０１０３】
図２１は、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の一例の構造を表すシンタクスを示す。ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)のセマンティクスを説明するために、先ず、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)に格納されるデータの元となるエントリである、エントリPTSEPStartおよびエントリSPNEPStartの意味について説明する。
【０１０４】
エントリPTSEPStartと、エントリPTSEPStartに関連付けられたエントリSPNEPStartは、それぞれＡＶストリーム上のエントリポイントを指す。そして、エントリPTSEPFineと、エントリPTSEPFineに関連付けられたエントリPTSEPCoarseは、同一のエントリPTSEPStartから導かれる。また、エントリSPNEPFineと、エントリSPNEPFineに関連付けられたエントリSPNEPCoarseは、同一のエントリSPNEPStartから導かれる。
【０１０５】
図２２は、エントリPTSEPCoarseおよびエントリPTSEPFineの一例のフォーマットについて示す。ＰＴＳすなわちエントリPTSEPStartは、データ長が３３ビットの値である。ＭＳＢのビットを第３２ビット、ＬＳＢのビットを第０ビットとするとき、この図２２の例では、大まかな単位で検索を行う際に用いられるエントリPTSEPCoarseは、エントリPTSEPStartの第３２ビットから第１９ビットまでの１４ビットが用いられる。エントリPTSEPCoarseにより、解像度が５．８秒で、２６．５時間までの範囲で検索が可能である。また、より精密な検索を行うためのエントリPTSEPFineは、エントリPTSEPStartの第１９ビットから第９ビットまでの１１ビットが用いられる。エントリPTSEPFineにより、解像度が５．７ミリ秒で、１１．５秒までの範囲で検索が可能である。なお、第１９ビットは、エントリPTSEPCoarseとエントリPTSEPFineとで共通して用いられる。また、ＬＳＢ側の第０ビットから第８ビットまでの９ビットは、用いられない。
【０１０６】
図２３は、エントリSPNEPCoarseおよびエントリSPNEPFineの一例のフォーマットについて示す。ソースパケット番号すなわちエントリSPNEPStartは、データ長が３２ビットの値である。ＭＳＢのビットを第３１ビット、ＬＳＢのビットを第０ビットとするとき、この図２３の例では、大まかな単位で検索を行う際に用いられるエントリSPNEPCoarseは、エントリSPNEPStartの第３１ビットから第０ビットまでの全てのビットが用いられる。また、より精密な検索を行うためのエントリSPNEPFineは、エントリSPNEPStartの第１６ビットから第０ビットまでの１７ビットが用いられる。エントリSPNEPFineにより、例えば略２５ＭＢ(Mega Byte)のＡＶストリームファイルまでの範囲で、検索が可能である。
【０１０７】
なお、ソースパケット番号の場合でも、エントリSPNEPCoarseとしてＭＳＢ側の所定ビット数の値だけ用いるようにしてもよい。例えば、エントリSPNEPCoarseとして、エントリSPNEPStartの第３１ビットから第１６ビットまでの１７ビットを用い、エントリSPNEPFineは、エントリSPNEPStartの第１６ビットから第０ビットまでの１７ビットを用いる。
【０１０８】
上述に基づき、エントリPTSEPStartおよびエントリSPNEPStartは、次のように定義される。
【０１０９】
エントリPTSEPStartは、図２２で示したように、データ長が３３ビットの符号無し整数であり、ＡＶストリーム中で、ランダムアクセスが可能なピクチャ（例えばＩＤＲ(Instantaneous Decoding Refresh)ピクチャやＩ(Intra)ピクチャ）から開始するビデオアクセスユニットの３３ビット長のＰＴＳを示す。
【０１１０】
エントリSPNEPStartは、図２３で示したように、３２ビットの符号無し整数であり、エントリPTSEPStartに関連付けられたビデオアクセスユニットの第１バイト目を含むソースパケットの、ＡＶストリームの中でのアドレスを示す。エントリSPNEPStartは、ソースパケット番号の単位で表され、ＡＶストリームファイル中の最初のソースパケットから、値"０"を初期値として、ソースパケット毎に１ずつ増加する値としてカウントされる。
【０１１１】
図２１を参照し、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)は、第１のforループ文により大まかな単位での検索を行うためのサブテーブル(EP coarse table)が記述され、第２のforループ文によりサブテーブル(EP coarse table)の検索結果に基づきより詳細な検索を行うためのサブテーブル(EP fine table)が記述される。
【０１１２】
第１のforループ文の直前に、フィールドEPFineTableStartAddressが配される。フィールドEPFineTableStartAddressは、３２ビットのデータ長を有し、最初の第２のforループにおけるフィールドReservedEPFine[EP_fine_id]の第１バイト目の開始アドレスを、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の第１バイト目からの相対バイト数で示す。相対バイト数は、値"０"から開始する。
【０１１３】
第１のforループ文は、ループ変数[i]で以て、サブテーブル(EP coarse table)のエントリ数Ncまで繰り返され、エントリ数Ncの組数だけフィールドRefToEPFineID[i]、エントリPTSEPCoarse[i]およびエントリPTSEPFine[i]が格納される。第１のforループ文において、フィールドRefToEPFineID[i]は、１８ビットのデータ長を有し、フィールドRefToEPFineID[i]に続くフィールドPTSEPCoarse[i]が示すエントリPTSEPCoarseに関連付けられるエントリPTSEPFineを持つ、サブテーブル(EP fine table)内のエントリ番号を示す。エントリPTSEPFineと、このエントリPTSEPFineに関連付けられるエントリPTSEPCoarseとは、同一のエントリPTSEPStartから導かれる。フィールドRefToEPFineID[i]は、第２のforループ文中で記述される順番で定義されるループ変数[EP_fine_id]の値により与えられる。
【０１１４】
第１のforループ文の後に、パディングワードを挟んで第２のforループ文による記述がなされる。第２のforループ文は、ループ変数[EP_fine_id]で以て、サブテーブル(EP fine table)のエントリ数Nfまで繰り返され、エントリ数Nfの組数だけ、１ビットのデータ長を有するフィールドReservedEPFine[EP_fine_id]と、３ビットのデータ長を有するフィールドIEndPositionOffset[EP_fine_id]と、１１ビットのデータ長を有するフィールドPTSEPFine[EP_fine_id]と、１７ビットのデータ長を有するフィールドSPNEPFine[EP_fine_id]とが格納される。これらのうち、フィールドPTSEPFine[EP_fine_id]およびフィールドSPNEPFine[EP_fine_id]は、ループ変数[EP_fine_id]に基づきサブテーブル(EP fine table)から参照されるエントリPTSEPFineおよびエントリSPNEPFineそれぞれが格納される。
【０１１５】
エントリPTSEPCoarseおよびエントリPTSEPFine、ならびに、エントリSPNEPCoarseおよびエントリSPNEPFineは、次のように導かれる。サブテーブル(EP fine table)に、関連するデータSPNEPStartの値の昇順に並んでいるNf個のエントリがあるとする。それぞれのエントリPTSEPFineは、対応するエントリPTSEPStartから、次式（１）のように導かれる。
PTSEPFine[EP_fine_id]＝（PTSEPStart[EP_fine_id] >>９）／２11  ・・（１）
【０１１６】
エントリPTSEPCoarseと、対応するエントリPTSEPFineとの関係は、次式（２）、（３）の通りである。
PTSEPCoarse[i]＝（PTSEPStart[RefToEPFineID[i]] >>１９）／２14  ・・（２）
PTSEPFine[RefToEPFineID[i]]＝（PTSEPStart[RefToEPFineID[i]] >>９）／２11  ・・（３）
【０１１７】
それぞれのエントリSPNEPFineは、対応するエントリSPNEPStartから、次式（４）のように導かれる。
SPNEPFine[EP_fine_id]＝SPNEPStart[EP_fine_id]／２17  ・・（４）
【０１１８】
エントリSPNEPCoarseと、対応するエントリSPNEPFineとの関係は、次式（５）、（６）の通りである。
SPNEPCoarse[i]＝SPNEPStart[RefToEPFineID[i]]  ・・（５）
SPNEPFine[RefToEPFineID[i]]＝SPNEPStart[RefToEPFineID[i]]／２17  ・・（６）
【０１１９】
なお、上述の式（１）〜（６）において、記号「>>ｘ」は、データのＬＳＢ側からｘビットを超える桁からビットを用いることを意味する。
【０１２０】
次に、拡張データを格納するためのブロックblkExtensionData()について説明する。このブロックblkExtensionData()は、所定の拡張データを格納可能なように定義され、インデックステーブルが格納されるファイル"index.bdmv"、プレイリストが格納されるファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"の各ファイルに記述することができる。
【０１２１】
図２４は、ブロックblkExtensionData()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkExtensionData()の終わりまでのデータ長をバイト数で示す。このフィールドLengthの示すデータ長が"０"でなければ、if文以下の記述がなされる。
【０１２２】
フィールドDataBlockStartAddressは、３２ビットのデータ長を有し、このシンタクス中の、拡張データの本体が格納されるブロックDataBlock()の開始アドレスを、このブロックblkExtensionData()の先頭バイトからの相対バイト数で示す。すなわち、相対バイト数は、"０"から開始される。なお、フィールドDataBlockStartAddressは、次に示す３２ビットアライメントの条件を満たさなければならない。
DataBlockStartAddress％４＝０
【０１２３】
２４ビットのデータ長を有する領域reservedを介してフィールドNumberOfExtDataEntriesが配される。フィールドNumberOfExtDataEntriesは、８ビットのデータ長を有し、このブロックblkExtensionData()のブロックDataBlock()に格納される拡張データのエントリ数を示す。拡張データのエントリは、拡張データの本体を取得するための情報が格納される。この例では、拡張データのエントリは、フィールドExtDataType、フィールドExtDataVersion、フィールドExtDataStartAddressおよびフィールドExtDataLengthからなるブロックext_data_entry()であって、ブロックblkExtensionData()において、第１のforループ文に従いこのフィールドNumberOfExtDataEntriesに示される個数だけ、このブロックext_data_entry()が存在する。
【０１２４】
フィールドExtDataTypeは、１６ビットのデータ長を有し、このブロックblkExtensionData()に記述される拡張データが記録装置用の拡張データであることを表す。このフィールドExtDataTypeの値は、拡張データを識別する第１の値であり、このブロックblkExtensionData()を含む規格書のライセンサ（使用認可者）が割り当てると定義することができる。フィールドExtDataVersionは、拡張データを識別する第２の値であり、この拡張データのバージョン番号を表すものと定義することができる。なお、このブロックblkExtensionData()において、フィールドExtDataTypeおよびフィールドExtDataVersionの値が同一のブロックext_data_entry()が２以上、存在してはならない。
【０１２５】
フィールドExtDataStartAddressは、３２ビットのデータ長を有し、このフィールドExtDataStartAddressが含まれる拡張データのエントリ（ブロックext_data_entry()）に対応する拡張データの開始アドレスを示す。フィールドExtDataStartAddressは、ブロックblkExtensionData()の先頭バイトからの相対バイト数で、拡張データext_dataの開始アドレスを示す。なお、フィールドExtDataStartAddressは、次に示す３２ビットアライメントの条件を満たさなければならない。
ExtDataStartAddress％４＝０
【０１２６】
フィールドExtDataLengthは、３２ビットのデータ長を有し、このフィールドExtDataStartAddressが含まれる拡張データのエントリ（ブロックext_data_entries()）に対応する拡張データのデータ長を示す。データ長は、バイト数で示される。
【０１２７】
フィールドNumberOfExtDataEntriesで示された個数だけ、拡張データのエントリ（ブロックext_data_entry()）が記述されると、それぞれ１６ビットのデータ長を有し任意のデータ列からなるフィールドpadding_wordが、２フィールドを組として任意の回数Ｌ１だけ繰り返される。その後、拡張データの本体が格納されるブロックDataBlock()が記述される。ブロックDataBlock()は、１以上の拡張データが格納される。それぞれの拡張データext_dataは、上述したフィールドExtDataStartAddressフィールドExtDataLengthに基づき、ブロックDataBlock()から取り出される。
【０１２８】
図２５は、ブロックblkExtensionData()における各データの参照関係を模式的に示す。フィールドLengthにより、フィールドLength直後の位置からブロックblkExtensionData()の最後までのデータ長が示される。フィールドDataBlockStartAddressにより、ブロックDataBlock()の開始位置が示される。フィールドNumberOfExtDataEntriesで示される個数だけ、ブロックext_data_entryが記述される。最後のブロックext_data_entryからブロックDataBlock()の間には、任意の長さでフィールドpadding_wordが置かれる。
【０１２９】
ブロックDataBlock()内には、ブロックext_data_entry()で示される拡張データext_dataが置かれる。それぞれの拡張データext_dataの位置およびデータ長は、対応するブロックext_data_entry()内のフィールドExtDataStartAddressおよびフィールドExtDataLengthにより示される。したがって、ブロックDataBlock()内での拡張データext_dataの並び順は、対応するブロックext_data_entry()の並び順と一致していなくてもよい。
【０１３０】
このように、拡張データを、拡張データの本体が格納されるブロックDataBlock()と、ブロックDataBlock()内の拡張データに対するアクセス情報などが格納されるブロックext_data_entry()とによる２層構造とすることで、複数の拡張データを格納することが可能となる。
【０１３１】
次に、上述の拡張データの一例の作成方法および読み出し方法について説明する。図２６は、ブロックblkExtensionData()にデータを書き込む際の一例の処理を示すフローチャートである。この図２６は、ブロックblkExtensionData()中の（ｎ＋１）番目のエントリとして、拡張データを追加し、ブロックblkExtensionData()を書き換える場合の例である。
【０１３２】
先ず、ステップＳ１０で、書き込もうとしている拡張データのデータ長を取得し、フィールドExtDataLength[n+1]の値にセットする。なお、「[n+1]」の記述は、（ｎ＋１）番目のエントリの番号に対応する。次に、ステップＳ１１で、現在のブロックblkExtensionData()に列挙されているブロックext_data_entry()のフィールドExtDataLengthおよびフィールドExtDataStartAddressの値を調べ、ブロックDataBlock()の使用状況を取得する。
【０１３３】
そして、次のステップＳ１２で、ブロックDataBlock()中に、書き込もうとしている拡張データのデータ長であるフィールドExtDataLength[n+1]に示されるデータ長以上の、連続した空き領域があるか否かが判断される。若し、あると判断されれば、処理はステップＳ１４に移行される。
【０１３４】
一方、フィールドExtDataLength[n+1]に示されるデータ長以上の連続した空き領域が無いと判断されれば、処理はステップＳ１３に移行され、ブロックblkExtensionData()におけるフィールドLengthの値を大きくし、フィールドExtDataLength[n+1]に示されるデータ長以上の連続した空き領域をブロックDataBlock()内に作る。空き領域ができたら、処理がステップＳ１４に移行される。
【０１３５】
ステップＳ１４では、拡張データを書き込む領域の先頭アドレスを決め、その先頭アドレスの値をフィールドExtDataStartAddress[n+1]とする。次のステップＳ１５で、フィールドExtDataStartAddress[n+1]から、上述のステップＳ１０でセットされたフィールドExtDataLength[n+1]の長さの拡張データext_data[n+1]を書き込む。
【０１３６】
データの書き込みが終了したら、ステップＳ１６で、ブロックext_data_entry()に対して、フィールドExtDataLength[n+1]と、フィールドExtDataStartAddress[n+1]とを追加する。
【０１３７】
なお、上述において、書き換えを行うブロックblkExtensionData()は、すでにディスクなどの記録媒体から読み出されて記録装置のメモリに記憶されているものとする。そのため、ステップＳ１３における、フィールドLengthの値の変更によるブロックblkExtensionData()の拡大は、システムに任され、システムがメモリアロケーションを適切に行うことでなされる。
【０１３８】
図２７は、ブロックblkExtensionData()から拡張データを読み出す際の一例の処理を示すフローチャートである。なお、この図２７のフローチャートによる処理は、再生専用の記録媒体と、記録可能な記録媒体との両方に適用可能なものである。先ず、最初のステップＳ２０で、読み込もうとする拡張データが準拠する規格から、フィールドExtDataTypeの値を取得し、ステップＳ２１で、読み込もうとする拡張データの種別から、フィールドExtDataVersionの値を取得する。
【０１３９】
次のステップＳ２２で、ブロックblkExtensionData()に列挙されているブロックext_data_entry()を１つずつ順次、読み込む。そして、ステップＳ２３で、読み込んだブロックext_data_entry()に含まれるフィールドExtDataTypeおよびフィールドExtDataVersionの値が、上述のステップＳ２０およびステップＳ２１で取得したフィールドExtDataTypeおよびフィールドExtDataVersionの値と一致するか否かが判断される。
【０１４０】
一致していないと判断されれば、処理はステップＳ２６に移行され、ブロックblkExtensionData()内に列挙されるブロックext_data_entry()を全て読み終えたか否かが判断される。全て読み終えたと判断されれば、処理はステップＳ２７に移行され、このブロックblkExtensionData()には、読み込もうとした拡張データが存在しないとして、一連の処理が終了される。全て読み終えていないと判断されれば、処理はステップＳ２２に戻され、次のブロックext_data_entry()が読み込まれる。
【０１４１】
上述のステップＳ２３において、ブロックext_data_entry()に含まれるフィールドExtDataTypeおよびフィールドExtDataVersionの値が、取得したフィールドExtDataTypeおよびフィールドExtDataVersionの値と一致していると判断されれば、処理はステップＳ２４に移行される。ここでは、ブロックblkExtensionData()中の[i]番目のエントリで一致したものとする。
【０１４２】
ステップＳ２４では、[i]番目のエントリのブロックext_data_entry()からフィールドExtDataLength[i]の値と、フィールドExtDataStartAddress[i]の値とを読み込む。そして、ステップＳ２５で、ステップＳ２４で読み込んだフィールドExtDataStartAddress[i]で示されるアドレスから、フィールドExtDataLength[i]で示されるデータ長だけ、データを読み出す。
【０１４３】
次に、上述した、インデックスファイル"index.bdmv"、ムービーオブジェクトファイル"MovieObject.bdmv"、プレイリストファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"にそれぞれ定義可能な、拡張データを格納する拡張データブロックblkExtensionData()について説明する。
【０１４４】
先ず、インデックスファイル"index.bdmv"に対して定義される一例の拡張データブロックについて説明する。ここでは、プレイリスト毎に記録可能な記録媒体に特有の属性情報を付加するようにした、一例の拡張データブロックについて説明する。図２８は、このプレイリスト属性を記述するための、ファイル"index.bdmv"内のフィールドblkExtensionData()におけるブロックDataBlock()（図２４参照）の一例の構造を表すシンタクスを示す。この図２８の例では、ブロックDataBlock()がブロックblkIndexExtensionData()として記述されている。
【０１４５】
先ず、上述の図２４を参照して、ブロックblkExtensionData()においてフィールドExtDataTypeを値"0x1000"、フィールドExtDataVersionを値"0x0100"とする。これらフィールドExtDataTypeおよびフィールドExtDataVersionに記述された値は、例えば再生装置側において、予めＲＯＭ(Read Only Memory)などに記憶されたテーブルが参照されて識別される。ブロックDataBlock()内のフィールドExtDataStartAddressおよびフィールドExtDataLengthで示される領域に、ブロックblkIndexExtensionData()が格納される。なお、数値の記述において"0x"は、その数値が１６進表記されていることを示す。
【０１４６】
ブロックblkIndexExtensionData()において、フィールドTypeIndicatorは、次に続くデータの種類を示す、ＩＳＯ６４６に規定された符号化方式で符号化した４文字からなる文字列が記述される。この図２８の例では、フィールドTypeIndicatorにＩＳＯ６４６に既定の方式で符号化された４文字の文字列"IDEX"が記述され、次に続くデータ種類が「IndexExtensionData」であることが示される。
【０１４７】
フィールドTypeIndicatorに続けて３２ビットのデータ長を有する領域reservedが配され、その次に、３２ビットのデータ長を有するフィールドTableOfPlayListStartAddressが配される。フィールドTableOfPlayListStartAddressは、ブロックblkTableOfPlayList()の、このブロックblkIndexExtensionData()先頭を基準とした開始アドレスが示される。
【０１４８】
フィールドTableOfPlayListStartAddressの次に、３２ビットのデータ長を有するフィールドMakersPrivateDataStartAddressが配されブロックblkMakersPrivateData()のこのブロックblkIndexExtensionData()先頭を基準とした開始アドレスが示され、１９２ビットのデータ長を有する領域reservedを介してブロックblkUIAppInfoAVCHD()が配される。１６ビットのデータ長を有するパディングワードpadding_wordが値N1で示される回数だけ回繰り返され、次に、ブロックblkTableOfPlayLists()が配される。さらに続けて、１６ビットのデータ長を有するパディングワードpadding_wordが値N2で示される回数だけ繰り返され、次にブロックblkMakersPrivateData()が配される。このブロックblkMakersPrivateData()の後に、１６ビットのデータ長を有するパディングワードpadding_wordが値N3で示される回数だけ繰り返される。
【０１４９】
なお、ブロックblkUIAppInfoAVCHD()およびブロックblkMakersPrivateData()は、この発明と関連性が薄いので、説明を省略する。
【０１５０】
図２９は、上述したブロックblkTableOfPlayLists()の一例の構造を表すシンタクスを示す。フィールドLengthは、３２ビットのデータ長を有し、このフィールドLengthの直後からブロックblkTableOfPlayList()の最後のバイトまでのデータ長をバイト数で示す。フィールドLengthに続けて、プレイバックタイトルを再生するためのプレイリストに関する情報が記述されるブロックblkFirstPlaybackTitlePlayLists()と、メニュータイトルに関する情報が記述されるブロックblkMenuTitlePlayLists()とが配される。これらブロックblkFirstPlaybackTitlePlayLists()およびブロックblkMenuTitlePlayLists()は、この発明と関連性が薄いので、説明を省略する。
【０１５１】
次に、１６ビットのデータ長を有するフィールドNumberOfTitlePlayListPairが配される。フィールドNumberOfTitlePlayListPairは、プレイバックタイトルおよびメニュータイトル以外のタイトルを再生するためのプレイリストの数が記述される。次のforループ文に従い、フィールドNumberOfTitlePlayListPairで示される数だけ、ブロックblkMovieTitlePlayListPair()が記述される。ブロックblkMovieTitlePlayListPair()は、フィールドPlayListFileName、フィールドPlayListAttributeおよびフィールドRefToTitleIDを含む。すなわち、ブロックblkMovieTitlePlayListPair()は、このforループ文で示される[i]番目のプレイリストについて、当該プレイリストのファイル名、当該プレイリストに付与された属性、ならびに、当該プレイリストの参照タイトルＩＤからなるプレイリストの情報を構造化したものである。
【０１５２】
このforループ文による並び順は、記録順とされる。すなわち、１のプレイリストが追加されると、フィールドNumberOfTitlePlayListPairの値が１だけインクリメントされ、既存のプレイリストの情報の後ろに、追加されたプレイリストの情報が追記される。
【０１５３】
フィールドPlayListFileNameは、４０ビット（５バイト）のデータ長を有し、プレイリストのファイル名がＩＳＯ６４６に規定された符号化方式で符号化されて記述される。フィールドPlayListFileNameの次に、６ビットのデータ長を有する領域reservedを介してフィールドPlayListAttributeが配される。フィールドPlayListAttributeは、２ビットのデータ長を有し、当該プレイリストに付与された属性を示す。プレイリストは、その成因に基づき、クリップの生成と共に生成されるプレイリストに対応する第１の種類と、既存のタイトルあるいはプレイリストの一部または全部を用いて作成されるプレイリストに対応する第２の種類と、メニューを再生するために用いる第３の種類との３種類に分けられ、各プレイリストには、プレイリストの種類に応じて、それぞれ対応する属性「Real」（第１の種類）、属性「Virtual」（第２の種類）および属性「Menu」（第３の種類）が付与される。
【０１５４】
なお、以下では適宜、属性「Real」が付与されたプレイリストをリアルプレイリスト、属性「Virtual」が付与されたプレイリストをバーチャルプレイリスト、属性「Menu」を付与されたプレイリストをメニュープレイリストと呼ぶ。
【０１５５】
フィールドRefToTitleIdは、同一ループ内のフィールドPlayListFileNameに示されるプレイリストが作成時に属するタイトルのＩＤ（番号）が記述される。より具体的な例としては、インデックスファイル"index.bdmv"内のブロックblkIndexes()における、対応する値title_idが記述される。なお、当該プレイリストがファーストプレイバックタイトルのみから再生される場合、フィールドRefToTitleIdの値は、第１の固定値、例えば"0xFFFF"とされる。また、当該プレイリストがメニュータイトルのみから再生される場合は、フィールドRefToTitleIdの値は、第２の固定値、例えば"0xFFFE"とされる。
【０１５６】
次に、仮想プレーヤについて、概略的に説明する。上述したようなデータ構造を有するディスクがプレーヤに装填されると、プレーヤは、ディスクから読み出されたムービーオブジェクトなどに記述されたコマンドを、プレーヤ内部のハードウェアを制御するための固有のコマンドに変換する必要がある。プレーヤは、このような変換を行うためのソフトウェアを、プレーヤに内蔵されるＲＯＭ(Read Only Memory)に予め記憶している。このソフトウェアは、ディスクとプレーヤを仲介してプレーヤにＡＶＣＨＤフォーマットの規定に従った動作をさせることから、仮想プレーヤと称される。
【０１５７】
図３０は、この仮想プレーヤの動作を概略的に示す。図３０Ａは、ディスクのローディング時の動作の例を示す。ディスクがプレーヤに装填されディスクに対するイニシャルアクセスがなされると（ステップＳ３０）、１のディスクにおいて共有的に用いられる共有パラメータが記憶されるレジスタが初期化される（ステップＳ３１）。そして、次のステップＳ３２で、ムービーオブジェクトなどに記述されたプログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク装填時のように、ディスクの再生が初めて行われることをいう。
【０１５８】
図３０Ｂは、プレーヤが停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。最初の停止状態（ステップＳ４０）に対して、ユーザにより、例えばリモートコントロールコマンダなどを用いて再生が指示される（ＵＯ：User Operation）。再生が指示されると、先ず、レジスタすなわち共通パラメータが初期化され（ステップＳ４１）、次のステップＳ４２で、ムービーオブジェクト実行フェイズに移行する。
【０１５９】
ムービーオブジェクトの実行フェイズにおけるプレイリストの再生について、図３１を用いて説明する。ＵＯなどにより、タイトル番号＃１のコンテンツを再生開始する指示があった場合について考える。プレーヤは、コンテンツの再生開始指示に応じて、上述した図２に示されるインデックステーブル(Index Table)を参照し、タイトル＃１のコンテンツ再生に対応するオブジェクトの番号を取得する。例えばタイトル＃１のコンテンツ再生を実現するオブジェクトの番号が＃１であったとすると、プレーヤは、ムービーオブジェクト＃１の実行を開始する。
【０１６０】
この図３１の例では、ムービーオブジェクト＃１に記述されたプログラムは２行からなり、１行目のコマンドが"Play PlayList(1)"であるとすると、プレーヤは、プレイリスト＃１の再生を開始する。プレイリスト＃１は、１以上のプレイアイテムから構成され、プレイアイテムが順次再生される。プレイリスト＃１中のプレイアイテムの再生が終了すると、ムービーオブジェクト＃１の実行に戻り、２行目のコマンドが実行される。図３１の例では、２行目のコマンドが"jump MenuTitle"であって、このコマンドが実行されインデックステーブルに記述されたメニュータイトル(MenuTitle)を実現するムービーオブジェクトの実行が開始される。
【０１６１】
次に、この発明の実施の一形態について説明する。この発明では、映像信号の記録開始から記録終了までを１つの記録単位として定義し、この１記録単位の区間に生成されるビデオデータからなるストリームを１つのストリームファイルとして記録媒体に記録する。このストリームファイルには、映像信号の記録に伴い記録される音声信号を含むことができる。この１記録単位に対応するストリームファイルに基づきクリップが構成される。
【０１６２】
また、この発明の実施の一形態では、１つのクリップを１つのプレイアイテムから参照し、クリップが生成される毎に、生成されたクリップを参照するプレイアイテムを順次、プレイリストに対して追加する。このとき、プレイリストにおいて、プレイアイテム毎すなわちクリップ毎にプレイリストマークを打つ。そして、例えば１の記録媒体に１のプレイリストのみが存在するようにする。これに限らず、ディスク上に複数のプレイリストを存在させてもよい。
【０１６３】
図３２は、この発明の実施の一形態に適用可能な記録装置の一例の構成を概略的に示す。この記録装置は、入力されたディジタルビデオデータおよびディジタルオーディオデータを、所定の方式で圧縮符号化および多重化したＡＶストリームを記録媒体に記録するようにしている。圧縮符号化および多重化の方式としては、例えば上述したＡＶＣＨＤフォーマットが適用できる。
【０１６４】
この図３２に例示される記録装置は、外部から入力されるビデオデータおよびオーディオデータを記録媒体に記録する、単独の記録装置として用いることもできるし、光学系や撮像素子などを備えたカメラブロックと組み合わせ、撮像した撮像信号に基づくビデオデータを記録媒体に記録する、ビデオカメラ装置の記録ブロックとして用いることもできる。
【０１６５】
適用可能な圧縮符号化や多重化の方式としては、様々に考えられる。例えば、Ｈ．２６４｜ＡＶＣに規定される方式を、この発明の実施の一形態の圧縮符号化として適用することができる。これに限らず、ＭＰＥＧ２方式に基づき圧縮符号化を行うようにしてもよい。また、多重化方式は、例えばＭＰＥＧ２システムズを適用することができる。以下では、ビデオデータの圧縮符号化をＨ．２６４｜ＡＶＣに規定される方式に準じて行い、ビデオデータおよびオーディオデータの多重化を、ＭＰＥＧ２システムズに規定される方式に準じて行うものとして説明する。
【０１６６】
制御部３０は、例えばＣＰＵ(Central Processing Unit)、ＲＡＭ(Random Access Memory)およびＲＯＭ(Read Only Memory)などからなり（図示しない）、ＲＯＭに予め記憶されたプログラムやデータに基づき、ＲＡＭをワークメモリとして用いてこの記録装置の記録部１０の各部を制御する。なお、制御部１０と記録部１０の各部とを接続する経路は、繁雑さを避けるために、図３２では省略している。
【０１６７】
ＵＩ(User Interface)部３１は、この記録装置の動作をユーザが操作するための操作子が所定に設けられ、操作子に対する操作に応じた制御信号を出力する。この制御信号は、制御部３０に供給される。制御部３０は、ユーザ操作に応じてＵＩ部３１から供給された制御信号に基づきなされるプログラムの処理により、記録部１０の各部の動作を制御する。例えば、ＵＩ部３１に対してなされた操作に応じて、記録装置による記録動作の開始および停止の動作が制御部３０により制御される。
【０１６８】
ベースバンドのディジタルビデオデータが端子４０から入力される。また、当該ディジタルビデオデータに伴い、ベースバンドのディジタルオーディオデータが端子４１から入力される。
【０１６９】
ディジタルビデオデータは端子４０から記録部１０に入力され、ビデオエンコーダ１１に供給される。ビデオエンコーダ１１は、供給されたディジタルビデオデータを、所定の方式で以て圧縮符号化する。ＭＰＥＧ４  ＡＶＣ｜Ｈ．２６４に規定される方式に準じて圧縮符号化がなされるこの例では、例えば、ＤＣＴ(Discrete Cosine Transform)と画面内予測とによりフレーム内圧縮を行うと共に、動きベクトルを用いたフレーム間圧縮を行い、さらにエントロピー符号化を行い圧縮効率を高める。ビデオエンコーダ１１で圧縮符号化されたディジタルビデオデータは、ＭＰＥＧ４のエレメンタリストリーム（ＥＳ）として、マルチプレクサ（ＭＵＸ）１３に供給される。
【０１７０】
ディジタルオーディオデータは端子４１から記録部１０に入力され、オーディオエンコーダ１２に供給される。オーディオエンコーダ１２は、所定の圧縮符号化方式、例えばＡＡＣ(Advanced Audio Coding)により圧縮符号化される。オーディオデータの圧縮符号化方式は、ＡＡＣに限られるものではない。オーディオデータを圧縮符号化せず、ベースバンドのデータのまま用いることも考えられる。圧縮符号化されたディジタルオーディオデータは、マルチプレクサ１３に供給される。
【０１７１】
マルチプレクサ１３は、それぞれ圧縮符号化されて供給されたディジタルビデオデータおよびディジタルオーディオデータを所定の方式で多重化し、１本のデータストリームとして出力する。ＭＰＥＧ２システムズに準じて多重化が行われるこの例では、ＭＰＥＧ２のトランスポートストリームを用いて、供給された圧縮ビデオデータおよび圧縮オーディオデータを時分割で多重化する。例えば、マルチプレクサ１３は、バッファメモリを有し、供給された圧縮ビデオデータおよび圧縮オーディオデータをバッファメモリに溜め込む。
【０１７２】
バッファメモリに溜め込まれた圧縮ビデオデータは、所定サイズ毎に分割されヘッダが付加されて、ＰＥＳ(Packetized Elementary Stream)パケット化される。圧縮オーディオデータも同様に、所定サイズ毎に分割されヘッダが付加されてＰＥＳパケット化される。ヘッダには、パケットに格納されるデータの再生時刻を示すＰＴＳや復号時刻を示すＤＴＳ(Decoding Time Stanp)といった、ＭＰＥＧ２システムズに規定される所定の情報が格納される。ＰＥＳパケットは、さらに分割されてトランスポートパケット（ＴＳパケット）のペイロードに詰め込まれる。ＴＳパケットのヘッダには、ペイロードに詰め込まれたデータを識別するためのＰＩＤ(Packet Identification)が格納される。マルチプレクサ１３から出力されたＴＳパケットは、ストリームバッファ１４に一旦溜め込まれる。
【０１７３】
なお、ＴＳパケットは、実際には、マルチプレクサ１３においてさらに所定サイズのヘッダが付加されて出力される。この、ＴＳパケットに対して所定のヘッダを付加したパケットを、ソースパケットと呼ぶ。
【０１７４】
記録制御部１５は、記録媒体２０に対するデータの記録を制御する。記録媒体２０としては、例えば記録可能なタイプのＤＶＤ(Digital Versatile Disc)を用いることができる。これに限らず、記録媒体２０としてハードディスクドライブを用いてもよいし、半導体メモリを記録媒体２０に適用することも可能である。また、記録媒体２０として、より大容量を実現したＢｌｕ−ｒａｙ  Ｄｉｓｃ（ブルーレイディスク：登録商標）を適用することも考えられる。
【０１７５】
記録制御部１５は、ストリームバッファ１４に溜め込まれたデータ量を監視し、ストリームバッファ１４に所定量以上のデータが溜め込まれると、ストリームバッファ１４から記録媒体２０の記録単位分のデータを読み出して記録媒体２０に書き込む。
【０１７６】
管理情報処理部１６は、例えばＣＰＵ、ワークメモリとしてのＲＡＭおよびプログラム所定のデータが予め記憶されるＲＯＭからなる（図示しない）。これに限らず、管理情報処理部１６は、例えば制御部３０におけるプログラム処理で管理情報処理部１６の機能を実現することも可能である。この場合、例えば制御部３０の有するＲＡＭが揮発性メモリ１７として用いられると共に、不揮発性メモリ１８が制御部３０に接続される。
【０１７７】
管理情報処理部１６は、記録データに基づき、揮発性メモリ１７をワークメモリとして用いて、上述したインデックスファイル"index.bdmv"、ムービーオブジェクトファイル"MovieObject.bdmv"、プレイリストファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"に格納するための情報を生成する。生成された情報は、所定のタイミングで記録媒体２０に書き込まれる。
【０１７８】
一例として、管理情報処理部１６は、マルチプレクサ１３から記録データの時間情報を取得すると共に、記録制御部１５から記録データの記録媒体２０に対するアドレス情報を取得し、取得されたこれら時間情報およびアドレス情報に基づきＥＰ＿ｍａｐ情報が生成される。また、ＵＩ部３１に対する記録開始、記録終了の操作に応じて制御部３０から出力される制御信号と、マルチプレクサ１３および記録制御部１５からの記録データに関する情報とに基づき、プレイリストファイル"xxxxx.mpls"の生成または更新、クリップインフォメーションファイル"zzzzz.clpi"の生成などが行われる。さらに、記録媒体２０に対して新規に記録が行われる際には、インデックスファイル"index.bdmv"やムービーオブジェクトファイル"MovieObject.bdmv"の生成または更新が行われる。
【０１７９】
次に、この発明の実施の一形態によるクリップの記録方法について説明する。図３３は、この発明の実施の一形態によるクリップの一例の記録方法を示すフローチャートである。このフローチャートによる処理に先立って、記録媒体２０には、クリップと、当該クリップを再生するための再生制御情報が格納されファイル（クリップインフォメーションファイル、プレイリストファイル、ムービーオブジェクトファイルおよびインデックスファイルなど）とが既に記録媒体２０上に記録されているものとする。
【０１８０】
ステップＳ５０で記録開始操作が行われると、次のステップＳ５１で、クリップＡＶストリームの記録媒体２０への記録が開始される。
【０１８１】
記録開始操作は、例えば次のようになされる。例えば、ＵＩ部３１に、記録開始を指示する記録開始スイッチと、記録停止を指示する記録停止スイッチとが設けられる。ステップＳ５０では、ユーザによって記録開始スイッチが操作される。この操作に応じて、記録開始を指示する制御信号がＵＩ部３１から出力され、制御部３０に供給される。制御部３０は、この記録開始を指示する制御信号に基づき、記録部１０の各部に対し、端子４０から入力されるベースバンドのビデオデータと、端子４１から入力されるベースバンドのオーディオデータとを記録媒体２０に記録するように制御する。
【０１８２】
記録開始に関わる制御部３０の制御の一例として、記録停止状態ではビデオエンコーダ１１およびオーディオエンコーダ１２の動作を停止させておき、記録開始の指示に応じて、これらビデオエンコーダ１１およびオーディオエンコーダ１２の動作を開始させることが考えられる。これに限らず、マルチプレクサ１３やストリームバッファ１４、記録制御部１５の動作の開始、停止を制御することで、記録開始および停止の制御を行うこともできる。
【０１８３】
記録開始の制御に応じて、クリップＡＶストリームが記録媒体２０に記録される（ステップＳ５１）。すなわち、入力されたビデオデータおよびオーディオデータがビデオエンコーダ１１およびオーディオエンコーダ１２でそれぞれ圧縮符号化され、マルチプレクサ１３でパケット化されＴＳパケット（実際にはさらに所定のヘッダが付加されたソースパケット）とされてストリームバッファ１４に供給される。ストリームバッファ１４に所定量以上のＴＳパケットが溜め込まれたら、記録制御部１５によりストリームバッファ１４からＴＳパケットが読み出される。読み出されたＴＳパケットは、所定にファイル名が付されたクリップＡＶストリームファイルに格納されて記録媒体２０に記録される。
【０１８４】
例えば、記録媒体２０に既にファイル名"00001.m2ts"であるクリップＡＶストリームファイルが記録されている場合には、新たに記録されるクリップＡＶストリームファイルのファイル名として既に記録されているファイルと重複しないファイル名が選ばれ、例えばファイル名"00002.m2ts"とされる。
【０１８５】
なお、クリップＡＶストリームの記録媒体２０への記録に伴い、管理情報処理部１６により、記録されるデータの再生時間とアドレスとの対応関係を示す情報がリアルタイムに生成される。このデータは、上述したクリップインフォメーションファイル"zzzzz.clpi"内のブロックblkEPMap()に格納されるデータとして、揮発性メモリ１７に記憶される。当該データのバックアップとして、不揮発性メモリ１８にも同一のデータを記憶することもできる。
【０１８６】
次のステップＳ５２で、記録停止操作が行われたか否かが判断される。例えば、ユーザによりＵＩ部３１に設けられた記録停止スイッチが操作され、記録が停止されたと判断されれば、処理はステップＳ５３に移行される。一方、記録が停止されていなければ、処理はステップＳ５１に戻され、クリップＡＶストリームの記録媒体２０への記録が継続される。
【０１８７】
ステップＳ５３では、記録の停止に伴い、ストリームバッファ１４に溜め込まれているストリームが全て記録媒体２０に書き込まれる。例えば、記録制御部１５は、制御部３０からの記録停止の命令に応じて、ストリームバッファ１４に溜め込まれているストリーム（ＴＳパケット）を全て読み出し、記録媒体２０に書き込む。
【０１８８】
また、記録停止の命令に応じて、例えばビデオエンコーダ１１およびオーディオエンコーダ１２の動作が停止される。このとき、図１３Ａを用いて説明した第１のシームレス接続を行うために、例えば、オーディオエンコーダ１２の動作がビデオエンコーダ１１の動作が停止してから所定時間後に停止されるように制御される。
【０１８９】
次のステップＳ５４〜ステップＳ５８で、管理情報処理部１６により、記録媒体２０に書き込まれたクリップＡＶストリームファイルに関するクリップインフォメーションファイルが生成されると共に、プレイリストファイルの更新が成される。
【０１９０】
先ず、ステップＳ５４で、管理情報処理部１６により、クリップインフォメーションファイル"zzzzz.clpi"が生成される。ファイル名は、例えばこのクリップインフォメーションファイルが示すクリップＡＶストリームファイルのファイル名と対応するファイル名とされ、当該クリップＡＶストリームファイルのファイル名が"00002.m2ts"であれば、このクリップインフォメーションファイルのファイル名は、拡張子より前の部分が同一のファイル名"00002.clpi"とされる。
【０１９１】
クリップインフォメーションファイル"00002.clpi"に、図１５〜図２１に例示した各シンタクスに従い、各フィールドやフラグの値が所定に設定され格納される。一例として、ＴＳパケットに関する情報や、再生時間（ＰＴＳ）に関する情報は、管理情報処理部１６により、クリップの記録中にマルチプレクサ１３から取得された情報に基づき生成される。また、記録媒体２０上の記録アドレスに関する情報は、管理情報処理部１６により、クリップの記録中に記録制御部１５から取得された情報に基づき生成される。システムにより固有の値は、例えば予めＲＯＭ（図示しない）などに記憶されている情報に基づく。さらに、再生時間とアドレスとの対応関係を示す上述したブロックblkEPMap()の情報が、クリップインフォメーションファイル"00002.clpi"のブロックblkCPI()に格納される。
【０１９２】
また、ブロックblkClipInfo()内のフラグIsCC5は、ユーザ操作によりクリップの記録が停止された場合、値が１（バイナリ値）とされる。それに伴い、ブロックblkClipInfo()内のif文（図１６参照）で示されるデータが所定に設定される。
【０１９３】
クリップインフォメーションファイルの作成が完了したら、処理は次のステップＳ５５に移行する。ステップＳ５５〜ステップＳ５８の処理は、プレイリストファイルに関する処理である。このステップＳ５５〜ステップＳ５８の処理により、既に記録媒体２０上に存在するプレイリストファイルに対して、新たに記録されたクリップＡＶストリームファイル"00002.m2ts"に対応するプレイアイテムが追加される。
【０１９４】
先ず、ステップＳ５５で、プレイリストファイル内のブロックblkPlayItem()におけるフィールドConnectionConditionの値が５に設定され、このクリップが次のクリップと第１のシームレス接続を行うことが示される（図１２参照）。次にステップＳ５６で、プレイアイテムファイルのフィールドNumberOfPlayItemsの値が１だけインクリメントされ、当該プレイリストに対してプレイアイテムが１つ、追加されることが示される（図１１参照）。
【０１９５】
次のステップＳ５７で、ブロックblkPlayItem()におけるフィールドClipInformationFileName、フィールドINTimeおよびフィールドOUTTimeがそれぞれ設定され、クリップの記録に伴い追加されるブロックblkPlayItem()が作成される。フィールドClipInformationFileNameは、上述のステップＳ５５で作成されたクリップインフォメーションファイルのファイル名"00002.clpi"が格納される。実際には、クリップインフォメーションファイルの拡張子は固定的とされているので、ピリオドの前の部分"00002"が格納される。フィールドINTimeおよびフィールドOUTTimeは、対応するクリップＡＶストリームファイル"00002.m2ts"に格納されるビデオストリームの先頭および終端の時間を示す情報であって、例えばクリップインフォメーションファイル"00002.clpi"内のブロックblkCPI()におけるブロックblkEPMap()の情報に基づく。
【０１９６】
次のステップＳ５８で、プレイリストファイル内のブロックblkPlayListMark()におけるフィールドNumberOfPlayListMarksの値が１だけインクリメントされ、それに伴いforループ文内に追加されたフィールドMarkTimeStampの値が、上述のステップＳ５７でブロックblkPlayItem()におけるフィールドINTimeの値に設定される。すなわち、新たに記録されたクリップの先頭に、プレイリストマークが打たれる。
【０１９７】
このようにして、新たに記録されたクリップＡＶストリームファイル"00002.m2ts"に対して、クリップインフォメーションファイル"00002.clpi"が作成されると共に、既存のプレイリストファイルが更新される。
【０１９８】
なお、上述したステップＳ５３によるストリームバッファ１４に溜め込まれたデータの記録媒体２０への書き込み処理は、ステップＳ５８の処理の後に行うようにしてもよい。
【０１９９】
記録が停止された状態から、ＵＩ部３１に対する記録開始操作を行うことで、再びステップＳ５０からの処理が開始され、新たなクリップＡＶストリームファイルの記録媒体２０への記録と、対応するクリップインフォメーションファイルの作成、作成されたクリップインフォメーションファイルを参照するプレイアイテムの生成、ならびに、生成されたプレイアイテムのプレイリストへの追加処理が同様にして行われる。
【０２００】
なお、一旦記録が停止されてから次の記録が開始される場合、上述したステップＳ５４で作成したクリップインフォメーションファイルの記録媒体２０への書き込みが終了するまで、次のクリップＡＶストリームファイルの記録は、開始しないようにする。
【０２０１】
この場合、記録が停止されてから次の記録を開始できない可能性がある。これを避けるために、例えばクリップインフォメーションファイルを生成するためにワークメモリとして用いた揮発性メモリ１７に、当該クリップインフォメーションファイルを保持しておき、例えばディスクイジェクト時や記録装置の電源ＯＦＦ時など所定のタイミングで揮発性メモリ１７に保持されているクリップインフォメーションファイルを記録媒体２０に書き込むことが考えられる。
【０２０２】
なお、ここでは、記録媒体２０上に既にクリップＡＶストリームファイルと、対応するクリップインフォメーションファイルおよびプレイリストファイルが記録されている状態で、次のクリップＡＶストリームファイルを記録する例について説明したが、図３３のフローチャートを用いて説明した処理は、記録媒体２０に最初のクリップＡＶストリームファイルを記録する際にも、適用可能なものである。
【０２０３】
ここで、ＡＶＣＨＤフォーマットによれば、クリップＡＶストリームファイルを参照するプレイアイテムが格納されるプレイリストファイルと、当該プレイリストファイルを呼び出すコマンドがムービーオブジェクトとして記述されたムービーオブジェクトファイルと、ムービーオブジェクトファイル中のムービーオブジェクトをタイトルとして呼び出すインデックスファイルとが必要とされる。記録媒体２０に対して最初のクリップＡＶストリームファイルを記録した際に、これらインデックスファイルおよびムービーオブジェクトファイルを自動的に作成されるようにできる。
【０２０４】
図３４は、上述の図３３の手順に従い作成された一例のファイル構造を示す。一例として、記録媒体２０に対して、最初のクリップＡＶストリームファイル"00001.m2ts"が記録され（ステップＳ５０〜ステップＳ５３）、対応するクリップインフォメーションファイル"00001.clpi"が作成される（ステップＳ５４）。
【０２０５】
クリップＡＶストリームファイル"00001.m2ts"およびクリップインフォメーションファイル"00001.clpi"の記録および作成に応じて、次に、当該クリップインフォメーションファイル"00001.clpi"を参照するプレイアイテム＃１の情報が生成されると共に、当該プレイアイテム＃１を格納するプレイリストファイルが作成される（ステップＳ５５〜ステップＳ５８）。また、プレイリストファイルに対し、プレイアイテム＃１のフィールドINTimeに対応する時刻にプレイリストマークMark#1が打たれる（ステップＳ５８）。
【０２０６】
なお、最初のクリップＡＶストリームファイル"00001.m2ts"の記録に伴い、プレイリスト＃１を呼び出すムービーオブジェクト＃１が記述されるムービーオブジェクトファイルと、ムービーオブジェクト＃１をタイトル＃１として選択および再生させるためのインデックスファイルを作成するようにできる。ムービーオブジェクトファイルおよびインデックスファイルは、テンプレートを予め作成しておき、それを更新するようにもできる。これらムービーオブジェクトファイルおよびインデックスファイルの作成については、この発明の主旨と関連性が薄いので、詳細な説明を省略する。
【０２０７】
次に記録開始操作がなされると、記録媒体２０に対して、クリップＡＶストリームファイル"00002.m2ts"と、対応するクリップインフォメーションファイル"00002.clpi"とが追加して記録される（ステップＳ５０〜ステップＳ５３、ならびに、ステップＳ５４）。クリップＡＶストリームファイル"00002.m2ts"およびクリップインフォメーションファイル"00002.clpi"の記録および作成に応じて、次に、当該クリップインフォメーションファイル"00002.clpi"を参照するプレイアイテム＃２が生成される。この生成されたプレイアイテム＃２は、既に作成されているプレイリストファイルに対して追加される。さらに、プレイリストファイルに対し、プレイアイテム＃２のフィールドINTimeに対応する時刻にプレイリストマークMark#2が打たれる（ステップＳ５８）。
【０２０８】
このようにして、１組の記録開始操作および記録停止操作により１個のクリップＡＶストリームファイルが記録媒体２０に記録され、それに伴い、当該クリップＡＶストリームファイルに対応するクリップインフォメーションファイルが作成される。また、当該クリップインフォメーションファイルを参照するプレイアイテムが生成されて既存のプレイリストに対して追加され、当該プレイアイテムのフィールドINTimeで示される時刻にプレイリストマークが打たれる。これら一連の処理が記録開始操作および記録停止操作の組毎に、繰り返される。
【０２０９】
また、図３４に例示されるファイル構造から分かるように、記録開始操作および記録停止操作の組の繰り返しにより記録される複数のクリップＡＶストリームファイルのそれぞれを参照する複数のプレイアイテムは、１つのプレイリストファイルに、クリップＡＶストリームファイルの記録に伴い順次、追加して格納される。このプレイリストは、ムービーオブジェクトファイル内の１つのムービーオブジェクトから呼び出され、このムービーオブジェクトは、インデックスファイルから１つのタイトルとして選択および再生される。したがって、一連の記録開始操作および記録停止操作の組の繰り返しにより記録される複数のクリップＡＶストリームファイルは、インデックスファイル上で、１つのタイトルとして管理されることになる。
【０２１０】
次に、この発明の実施の一形態の他の例について説明する。上述では、この発明が単体の記録装置に適用された例について説明した（図３２参照）。これに対し、この実施の一形態の他の例では、この発明を、撮像素子と、被写体からの光を撮像素子に入射させる光学系とを有し、撮像素子で撮像された撮像信号に基づきビデオデータを記録媒体に記録するようにした、ビデオカメラ装置に適用した。
【０２１１】
図３５は、この発明の実施の一形態の他の例によるビデオカメラ装置１００の一例の構成を示す。ビデオカメラ装置１００において、記録系の構成は、図３１を用いて説明した記録装置の構成を略そのまま適用できるので、図３１と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０２１２】
図３５の構成において、カメラ部５０は、映像信号に関する構成として、光学系５１、撮像素子５２、撮像信号処理部５３、カメラ制御部５４および表示部５５を有し、音声信号に関する構成として、マイクロフォン（ＭＩＣ）５６および音声信号処理部５７を有する。制御部３０は、カメラ部５０の各部との間で各種制御信号や情報のやりとりを行い、カメラ部５０の動作を制御する。また、制御部５０は、ユーザ操作に応じてＵＩ部３１から供給される制御信号に基づき、カメラ部５０の動作を制御する。
【０２１３】
なお、ビデオカメラ装置１００として構成される場合、記録開始操作および記録停止操作は、例えば、ＵＩ部３１に設けられた単一の記録スイッチを用い、当該記録スイッチが押下される毎に記録開始および記録停止が交互に指示されるようになされるのが一般的である。また、このビデオカメラ装置１００では、記録媒体２０として、Ｂｌｕ−ｒａｙ  Ｄｉｓｃや記録可能なタイプのＤＶＤといった、ディスク記録媒体を適用するものとする。
【０２１４】
カメラ部５０において、光学系５１は、被写体からの光を撮像素子５２に導くためのレンズ系、絞り調整機構、フォーカス調整機構、ズーム機構、シャッタ機構などを備える。絞り調整機構、フォーカス調整機構、ズーム機構およびシャッタ機構の動作は、制御部３０から供給される制御信号に基づき、カメラ制御部５４により制御される。
【０２１５】
撮像素子５２は、例えばＣＣＤ(Charge Coupled Device)からなり、光学系５１を介して照射された光を光電変換により電気信号に変換し、所定の信号処理を施し撮像信号として出力する。撮像信号処理部５３は、撮像素子から出力された撮像信号に対して所定の信号処理を施し、ベースバンドのディジタルビデオデータとして出力する。
【０２１６】
例えば撮像信号処理部５３は、撮像素子５２から出力された撮像信号に対して、ＣＤＳ(Correlated Double Sampling)回路により画像情報を有する信号だけをンプリングすると共に、ノイズを除去し、ＡＧＣ(Auto Gain Control)回路によりゲインを調整する。そして、Ａ／Ｄ変換によりディジタル信号に変換する。また、撮像信号処理部５３は、このディジタル信号に対して検波系の信号処理を施し、Ｒ（赤色）、Ｇ（緑色）およびＢ（青色）各色の成分を取り出し、γ補正やホワイトバランス補正などの処理を行い、最終的に１本のベースバンドのディジタルビデオデータとして出力する。
【０２１７】
また、撮像信号処理部５３は、撮像素子５２から出力された撮像信号の情報を制御部３０に送る。制御部３０は、この情報に基づき光学系５１を制御するための制御信号を生成し、カメラ制御部５４に供給する。カメラ制御部５４は、この制御信号に基づきフォーカス調整機構や絞り調整機構などの制御を行う。
【０２１８】
さらに、撮像信号処理部５３は、撮像素子５２から出力された撮像信号に基づき、例えばＬＣＤ(Liquid Crystal Display)を表示素子として用いた表示部５５に映出させる映像信号を生成する。
【０２１９】
一方、マイクロフォン５６は、周囲の音声を収音して電気信号に変換して出力する。マイクロフォン５６から出力された音声信号は、音声信号処理部５７に供給される。音声信号処理部５７は、供給された音声信号を、リミッタを介してからＡ／Ｄ変換を施してディジタルオーディオデータとし、ノイズ除去や音質補正など所定の音声信号処理を施してベースバンドのディジタルオーディオデータとして出力する。
【０２２０】
カメラ部５０の撮像信号処理部５３から出力されたベースバンドのディジタルビデオデータは、記録部１０の端子４０に供給される。また、音声信号処理部５７から出力されたベースバンドのディジタルオーディオデータは、記録部１０の端子４１に供給される。
【０２２１】
記録停止状態からＵＩ部３１に設けられた記録スイッチが押下されると、記録開始を指示する制御信号がＵＩ部３１から制御部３０に供給され、制御部３０の制御に基づきカメラ部５０から出力されたベースバンドのディジタルビデオ信号およびディジタルオーディオデータの記録媒体２０への記録が開始される。
【０２２２】
すなわち、既に説明したように、制御部３０の制御に基づきビデオエンコーダ１１およびオーディオエンコーダ１２の動作が開始され、ビデオデータおよびオーディオデータがそれぞれビデオエンコーダ１１およびオーディオエンコーダ１２で圧縮符号化され、マルチプレクサ１３で所定にパケット化され多重化されてＡＶストリームデータとされる。ＡＶストリームデータは、ストリームバッファ１４を介して、記録制御部１５に供給され、クリップＡＶストリームファイルとして記録媒体２０に記録される。
【０２２３】
ＵＩ部３１の記録スイッチが押下されると、記録が停止され、クリップインフォメーションファイルの作成や、プレイリストファイルの更新が行われる。管理情報処理部１６は、マルチプレクサ１３および記録制御部１５からの情報に基づき、記録媒体２０に記録されるクリップＡＶストリームファイルに対応するクリップインフォメーションファイルを作成する。また、管理情報処理部１６は、当該クリップインフォメーションファイルを参照するプレイアイテムを生成し、既にプレイリストが存在する場合には、生成されたプレイアイテムを当該プレイリストに対して追加すると共に、プレイリストに対してプレイリストマークを打つ。
【０２２４】
この状態からもう一度記録スイッチが押下されると、再び記録開始が指示され、新たなクリップＡＶストリームファイルの記録媒体２０への記録が開始されると共に、対応するクリップインフォメーションファイルの作成や、当該クリップインフォメーションファイルを参照するプレイアイテムの生成、生成されたプレイアイテムのプレイリストへの追加などの処理が行われる。クリップＡＶストリームファイル間の再生は、第１のシームレス接続により接続される。
【０２２５】
なお、記録停止に伴い作成されるクリップインフォメーションファイルを、作成直後から記録媒体２０に書き込む方式の場合は、直前に作成されたクリップインフォメーションファイルの記録媒体２０への書き込みが終了するまで、次の記録が開始されないように制御される。
【０２２６】
この実施の一形態の他の例のように、この発明をビデオカメラ装置１００に適用する場合、１の記録媒体２０に対して、プレイリストファイルは１ファイルのみが存在できるように制限することが考えられる。すなわち、編集処理などがなされない限り、１の記録媒体２０上には、当該プレイリストの再生を行うための１のタイトルしか存在しないようにする。こうすることで、記録媒体２０としてディスクを用いたビデオカメラ装置１００を、恰も従来の磁気テープを記録媒体に用いたビデオカメラ装置であるかのように扱うことができる。
【０２２７】
すなわち、この実施の一形態の他の例によれば、それぞれ個別に記録されるクリップＡＶストリームファイルが１のプレイリストにより管理され、各クリップＡＶストリームファイル間の再生が第１のシームレス接続で接続されるため、記録媒体２０に記録された全てのクリップＡＶストリームファイルを、磁気テープを再生する場合のように、連続的に再生することができる。また、プレイリストに対し、それぞれ個別に記録されるクリップＡＶストリームファイルの先頭に対応する位置にプレイリストマークが打たれているため、クリップ単位での検索が容易である。
【０２２８】
なお、上述では、図３１に示す記録装置や図３５に示すビデオカメラ装置１００の記録部１０がハードウェア的に構成されるように説明したが、これはこの例に限定されない。すなわち、記録部１０は、ソフトウェアとして構成することも可能である。この場合、ソフトウェアは、例えば制御部３０が有する図示されないＲＯＭに予め記憶される。これに限らず、記録部１０を、パーソナルコンピュータなどのコンピュータ装置上に構成することも可能である。この場合には、記録部１０をコンピュータ装置に実行させるソフトウェアは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭといった記録媒体に記録されて提供される。コンピュータ装置がネットワーク接続可能な場合、インターネットなどのネットワークを介して当該ソフトウェアを提供することも可能である。
【図面の簡単な説明】
【０２２９】
【図１】この発明に適用可能なＡＶＣＨＤフォーマットに規定されるデータモデルを概略的に示す略線図である。
【図２】インデックステーブルを説明するための略線図である。
【図３】クリップＡＶストリーム、クリップ情報、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ図である。
【図４】複数のプレイリストから同一のクリップを参照する方法を説明するための略線図である。
【図５】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図６】ファイル"index.bdmv"の一例の構造を表すシンタクスを示す略線図である。
【図７】ブロックblkIndexes()の一例の構造を表すシンタクスを示す略線図である。
【図８】ファイル"MovieObject.bdmv"の一例の構造を表すシンタクスを示す略線図である。
【図９】ブロックblkMovieObjects()の一例の構造を表すシンタクスを示す略線図である。
【図１０】プレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す略線図である。
【図１１】ブロックblkPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図１２】ブロックblkPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図１３】第１および第２のシームレス接続を説明するための略線図である。
【図１４】ブロックblkPlayListMark()の一例の構造を表すシンタクスを示す略線図である。
【図１５】クリップインフォメーションファイルの一例の構造を表すシンタクスを示す略線図である。
【図１６】ブロックblkClipInfo()の一例の構造を表すシンタクスを示す略線図である。
【図１７】ブロックblkSequenceInfo()の一例の構造を表すシンタクスを示す略線図である。
【図１８】ブロックblkProgramInfo()の一例の構造を表すシンタクスを示す略線図である。
【図１９】ブロックblkCPI()の一例の構造を表すシンタクスを示す略線図である。
【図２０】ブロックblkEPMap()の一例の構造を表すシンタクスを示す略線図である。
【図２１】ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の一例の構造を表すシンタクスを示す略線図である。
【図２２】エントリPTSEPCoarseおよびエントリPTSEPFineの一例のフォーマットについて示す略線図である。
【図２３】エントリSPNEPCoarseおよびエントリSPNEPFineの一例のフォーマットについて示す略線図である。
【図２４】ブロックblkExtensionData()の一例の構造を表すシンタクスを示す略線図である。
【図２５】ブロックblkExtensionData()における各データの参照関係を模式的に示す略線図である。
【図２６】ブロックblkExtensionData()にデータを書き込む際の一例の処理を示すフローチャートである。
【図２７】ブロックblkExtensionData()から拡張データを読み出す際の一例の処理を示すフローチャートである。
【図２８】ファイル"index.bdmv"内のフィールドblkExtensionData()におけるブロックDataBlock()の一例の構造を表すシンタクスを示す略線図である。
【図２９】ブロックblkTableOfPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図３０】仮想プレーヤの動作を概略的に示すフローチャートである。
【図３１】仮想プレーヤの動作を概略的に示す略線図である。
【図３２】この発明の実施の一形態に適用可能な記録装置の一例の構成を概略的に示すブロック図である。
【図３３】この発明の実施の一形態によるクリップの一例の記録方法を示すフローチャートである。
【図３４】この発明の実施の一形態の方法により記録された一例のファイル構造を示す略線図である。
【図３５】この発明の実施の一形態の他の例によるビデオカメラ装置の一例の構成を示す。
【符号の説明】
【０２３０】
１０  記録部
１１  ビデオエンコーダ
１２  オーディオエンコーダ
１３  マルチプレクサ
１４  ストリームバッファ
１５  記録制御部
１６  管理情報処理部
１７  揮発性メモリ
１８  不揮発性メモリ
２０  記録媒体
３０  制御部
３１  ユーザインターフェイス部
５０  カメラ部
１００  ビデオカメラ装置
【図１】
0004552889.tif 000002
【図２】
0004552889.tif 000003
【図３】
0004552889.tif 000004
【図４】
0004552889.tif 000005
【図５】
0004552889.tif 000006
【図６】
0004552889.tif 000007
【図７】
0004552889.tif 000008
【図８】
0004552889.tif 000009
【図９】
0004552889.tif 000010
【図１０】
0004552889.tif 000011
【図１１】
0004552889.tif 000012
【図１２】
0004552889.tif 000013
【図１３】
0004552889.tif 000014
【図１４】
0004552889.tif 000015
【図１５】
0004552889.tif 000016
【図１６】
0004552889.tif 000017
【図１７】
0004552889.tif 000018
【図１８】
0004552889.tif 000019
【図１９】
0004552889.tif 000020
【図２０】
0004552889.tif 000021
【図２１】
0004552889.tif 000022
【図２２】
0004552889.tif 000023
【図２３】
0004552889.tif 000024
【図２４】
0004552889.tif 000025
【図２５】
0004552889.tif 000026
【図２６】
0004552889.tif 000027
【図２７】
0004552889.tif 000028
【図２８】
0004552889.tif 000029
【図２９】
0004552889.tif 000030
【図３０】
0004552889.tif 000031
【図３１】
0004552889.tif 000032
【図３２】
0004552889.tif 000033
【図３３】
0004552889.tif 000034
【図３４】
0004552889.tif 000035
【図３５】
0004552889.tif 000036