説明

記録装置、記録方法および記録プログラム、ならびに、撮像装置、撮像方法および撮像プログラム

【課題】記録開始から停止の間に生成されたAVデータをファイルとして記録する際に、長時間の連続記録や連続再生を容易とする。
【解決手段】AVデータを多重化したストリームをパケット単位でファイルに記録する。次のパケットの記録でファイルサイズが2GBを超える場合、当該ファイルのオーディオデータの後端が次にストリームが記録されるファイルのオーディオデータの先頭と時間的に対応するように記録制御して当該ファイルをクローズすると共に、クローズしたファイルと次にストリームが記録されるファイルとを、オーディオデータの重複がないようにシームレス接続することが指定される。新規にファイルを作成してストリームを継続的に記録する。停止操作でファイルの記録を停止する。長時間の記録に対しファイルが自動的に分割される。再生時には、長時間記録されたファイルをファイルの分割を意識することなく連続再生できる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ビデオデータとオーディオデータとを多重化したストリームデータを記録媒体に記録するのに適した記録装置、記録方法および記録プログラム、ならびに、撮像装置、撮像方法および撮像プログラムに関する。
【背景技術】
【0002】
従来では、例えばビデオカメラなどにおいて、撮像素子で撮像された映像信号をディジタルビデオデータに変換し、圧縮符号化して記録する場合の記録媒体として、磁気テープが用いられていた。磁気テープは、大容量のデータを連続的に記録するのに適していた。
【0003】
一方、近年では、記録可能で記録再生装置から取り外し可能とされると共に、記録容量が比較的大きく、ビデオデータとオーディオデータとからなるAV(Audio/Video)データを記録するのに適した記録媒体として、4.7GB(Giga Byte)以上の記録容量を有するDVD(Digital Versatile Disc)が普及している。特許文献1には、記録可能なタイプのDVDに対してDVD−Videoフォーマットで記録する撮像装置が記載されている。
【特許文献1】特開2004−350251
【0004】
この記録可能なタイプのDVDは、ファイルシステムにUDF(Universal Disk Format)が用いられており、UDFに対応するコンピュータ装置でアクセスが可能となっている。UDFは、ISO(International Organization for Standarization)9660によるフォーマットを含んでおり、コンピュータ装置に用いられる様々なファイルシステムでアクセス可能なようになっている。この記録可能なタイプのDVDに対し、ビデオデータおよびオーディオデータをファイルとして記録することで、コンピュータ装置などの他の装置との親和性が増し、記録されたデータをより有効に活用することが可能となる。
【0005】
また、近年では、ビデオカメラにハードディスクドライブを内蔵し、撮影して得られたビデオデータおよびオーディオデータを、このハードディスクドライブにファイルとして記録するような製品も出現している。また、記録媒体として大容量の半導体メモリを用いた製品も提案されている。
【0006】
従来の、記録媒体として磁気テープを用いた場合では、記録開始操作から記録停止操作の間に生成されるビデオデータを単位として、記録媒体に対するビデオデータおよびオーディオデータの記録を行うことが一般的に行われていた。そこで、ビデオデータおよびオーディオデータをファイルとして記録するようにした場合も、記録開始操作から記録停止操作の間に生成されるデータを単位としてファイルを生成すると、従来からの記録方式とも馴染みやすく、好ましい。
【発明の開示】
【発明が解決しようとする課題】
【0007】
ところで、連続的に供給されるビデオデータおよびオーディオデータをファイルとして記録媒体に記録する場合、システム上の制約により、記録開始操作から記録停止操作の間に記録可能な記録時間に制限が生じることがある。システム上の制限としては、例えば記録媒体に適用されるファイルシステム上のファイルサイズの制限や、ビデオデータおよびオーディオデータが格納されたファイルにおける管理情報に関する制限などが考えられる。
【0008】
ファイルシステム上の制限について、概略的に説明する。記録媒体に記録されたファイルをコンピュータ装置で扱う場合には、記録媒体に記録されたファイルの形式がコンピュータ装置のファイルシステムに対応している必要がある。ここで、コンピュータ装置に用いられるより低位のファイルシステムを考慮することで、より多くのコンピュータ装置に対して読み取り可能とすることができる。例えば、コンピュータ装置のOS(Operating System)の一つであるWindows(登録商標)で用いられるファイルシステムである、FAT16(File Allocation Table 16)と互換性を持たせることが考えられる。
【0009】
FAT16においては、1ファイルの最大サイズが2GB(Giga Byte)に制限されている。一方、UDFにおいては、1ファイルの最大サイズは、2GBに比べて遙かに大きい。したがって、UDFの規格に準じて記録されたファイルのサイズが2GBを超えた場合、このファイルは、FAT16では扱うことができないことになる。
【0010】
このため、例えばビデオカメラを考えた場合、ユーザは、ファイルとして記録されたディジタルビデオデータが使用されるコンピュータ装置のファイルシステムを考慮しながら、記録開始および停止を行わなければならず、操作性を著しく損なってしまうという問題点があった。またこのため、記録媒体に記録可能な時間分の記録が行われないうちに、記録を停止せざるを得なくなることも考えられ、記録容量に応じた連続記録時間を確保できなくなるという問題点があった。
【0011】
この問題を避けるために、例えば、記録中のファイルのサイズをシステムが監視し、ファイルサイズが所定のサイズに達したら当該ファイルをクローズし、新規にファイルを作成して記録を継続することが考えられる。しかしながら、この場合であっても、再生時に、連続的な記録で生成された複数のファイルを連続再生するための操作が必要となり、ユーザにとって負担になってしまうという問題点があった。
【0012】
したがって、この発明の目的は、記録開始から記録停止までの間に生成されたビデオデータおよびオーディオデータをファイルとして記録する場合において、長時間の連続記録および連続再生が容易な記録装置、記録方法および記録プログラム、ならびに、撮像装置、撮像方法および撮像プログラムを提供することにある。
【課題を解決するための手段】
【0013】
上述した課題を解決するために、第1の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録装置において、ビデオデータおよびオーディオデータが入力されるデータ入力部と、ビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力部と、ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録部と、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、記録部および管理情報生成部とを制御する制御部とを有し、制御部は、記録指示入力部による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録部を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録部を制御することを特徴とする記録装置である。
【0014】
また、第2の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法において、データ入力から入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、記録指示入力のステップによる記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録のステップを制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録のステップを制御することを特徴とする記録方法である。
【0015】
また、第3の発明は、ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法をコンピュータ装置に実行させる記録プログラムにおいて、記録方法は、データ入力から入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、記録指示入力のステップによる記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録のステップを制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録のステップを制御することを特徴とする記録プログラムである。
【0016】
また、第4の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置において、被写体を撮像してビデオデータを出力する撮像部と、音声を収音してオーディオデータを出力する収音部と、ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録部と、ビデオデータおよびオーディオデータの記録媒体への記録開始および記録停止を指示するユーザ操作を受け付ける操作部と、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、記録部および管理情報生成部とを制御する制御部とを有し、制御部は、操作部に対する操作による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録部を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録部を制御することを特徴とする撮像装置である。
【0017】
また、第5の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法において、被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、操作部に対するビデオデータおよびオーディオデータの記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、操作部に対する操作による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録のステップを制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録のステップを制御することを特徴とする撮像方法である。
【0018】
また、第6の発明は、撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法をコンピュータ装置に実行させる撮像プログラムにおいて、撮像方法は、被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、操作部に対するビデオデータおよびオーディオデータの記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、記録のステップおよび管理情報生成のステップとを制御する制御のステップとを有し、制御のステップは、操作部に対する操作による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録のステップを制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録のステップを制御することを特徴とする撮像プログラムである。
【0019】
上述したように、第1、第2および第3の発明は、データ入力から入力されたビデオデータおよびオーディオデータをパケット単位で多重化したストリームをパケット毎に順次、記録媒体上のストリームファイルに記録し、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように制御するようにしているため、ストリームファイルに対する所定の制約を意識することなく、長時間の連続的な記録を行うことができる。
【0020】
また、第4、第5および第6の発明は、被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録し、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、操作部に対する操作による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録を制御するようにしているため、ユーザは、ストリームファイルに対する所定の制約を意識することなく、長時間の連続的な撮影および撮影され得られたビデオデータおよびオーディオデータの記録を行うことができる。
【発明の効果】
【0021】
第1、第2および第3の発明は、上述したように、データ入力から入力されたビデオデータおよびオーディオデータをパケット単位で多重化したストリームをパケット毎に順次、記録媒体上のストリームファイルに記録し、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように制御するようにしているため、ストリームファイルに対する所定の制約を意識することなく、長時間の連続的な記録を行うことができる効果がある。
【0022】
また、第4、第5および第6の発明は、被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームをパケット毎に順次、記録媒体上のストリームファイルに記録し、記録媒体に記録されるストリームファイルに対し、少なくとも、ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成し、操作部に対する操作による記録開始および記録停止の指示に応じてストリームのストリームファイルに対する記録の開始および停止をそれぞれ行うように記録を制御し、1または複数のパケットからなる所定単位をストリームファイルに記録することでストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、ストリームファイルをクローズして新規のストリームファイルを作成し、新規のストリームファイルに対してストリームを所定単位から順次、記録するように記録を制御するようにしているため、ユーザは、ストリームファイルに対する所定の制約を意識することなく、長時間の連続的な撮影および撮影され得られたビデオデータおよびオーディオデータの記録を行うことができる効果がある。
【発明を実施するための最良の形態】
【0023】
以下、この発明の実施の一形態を、図面を参照しながら説明する。先ず、理解を容易とするために、この発明に適用可能な一例のフォーマット(以下、AVCHDフォーマットと呼ぶ)について説明する。AVCHDフォーマットは、ビデオデータとオーディオデータとが所定に多重化されたAV(Audio/Video)ストリームを記録可能な記録媒体に記録する記録フォーマットとして現在提案されているもので、記録媒体に記録されたAVストリームを、クリップ単位でプレイリストを用いて管理可能としている。
【0024】
例えばITU−T(International Telecommunication Union-Telecommunication Standarization Sector)勧告H.264あるいはISO(International Organization for Standarization)/IEC(International Electrotechnical Commission)国際標準14496−10(MPEG−4パート10)Advanced Video Coding(以下、H.264|AVCと略称する)に規定される符号化方式で符号化され、MPEG2システムズに従い多重化されたビットストリームは、クリップAVストリーム(またはAVストリーム)と称される。クリップAVストリームは、所定のファイルシステムによりファイルとしてディスクに記録される。このファイルを、クリップAVストリームファイル(またはAVストリームファイル)と称する。
【0025】
クリップAVストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップAVストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップAVストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。
【0026】
図1は、この発明に適用可能なAVCHDフォーマットに規定されるデータモデルを概略的に示す。このAVCHDフォーマットによれば、データ構造は、図1に示されるように4層のレイヤよりなる。最も最下層のレイヤは、クリップAVストリームが配置されるレイヤである(便宜上、クリップレイヤと呼ぶ)。その上のレイヤは、クリップAVストリームに対する再生箇所を指定するための、プレイリスト(PlayList)と、プレイアイテム(PlayItem)とが配置されるレイヤである(便宜上、プレイリストレイヤと呼ぶ)。さらにその上のレイヤは、プレイリストに対して再生順などを指定するコマンドからなるムービーオブジェクト(Movie Object)などが配置されるレイヤである(便宜上、オブジェクトレイヤと呼ぶ)。最上層のレイヤは、記録媒体に格納されるタイトルなどを管理するインデックステーブルが配置される(便宜上、インデックスレイヤと呼ぶ)。
【0027】
クリップレイヤについて説明する。クリップAVストリームは、ビデオデータやオーディオデータがMPEG2 TS(トランスポートストリーム)の形式などに多重化されたビットストリームである。このクリップAVストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
【0028】
また、クリップAVストリームには、字幕を表示するグラフィクスストリームであるOBストリーム(Overlay Bitmap stream)や、メニュー表示などに用いられるデータ(ボタン画像データなど)をストリームにしたMBストリーム(Menu Bitmap stream)を多重化することができる。
【0029】
クリップAVストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップAVストリームとクリップ情報とから構成される、一つのオブジェクトである。
【0030】
ファイルは、一般的に、バイト列として扱われる。クリップAVストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップAVストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
【0031】
プレイリストレイヤについて説明する。プレイリストは、再生するAVストリームファイルの指定と、指定されたAVストリームファイルの再生箇所を指定する再生開始点(IN点)と再生終了点(OUT点)の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるAVストリームファイルの一部分を再生するということになる。すなわち、プレイアイテム中のIN点およびOUT点情報に基づき、クリップ中の対応する区間が再生される。
【0032】
オブジェクトレイヤについて説明する。ムービーオブジェクトは、ナビゲーションコマンドプログラムと、ムービーオブジェクトとを連携するターミナルインフォメーションを含む。ナビゲーションプログラムは、プレイリストの再生を制御するためのコマンド(ナビゲーションコマンド:navigation command)である。
【0033】
インデックスレイヤについて説明する。インデックスレイヤは、インデックステーブル(Index Table)からなる。インデックステーブルは、記録媒体に記録されたコンテンツのタイトルを定義する、トップレベルのテーブルである。インデックステーブルに格納されているタイトル情報に基づき、プレーヤに常駐されるシステムソフトウェア中のモジュールマネージャにより記録媒体の再生が制御される。
【0034】
すなわち、図2に概略的に示されるように、インデックステーブル中の任意のエントリは、タイトルと称され、インデックステーブルにエントリされるファーストプレイバックタイトル(First PlaybackTitle)、メニュータイトル(MenuTitle)およびムービータイトル(MovieTitle)#1、#2、・・・は、全てタイトルである。各タイトルは、ムービーオブジェクトに対するリンクを示す。
【0035】
理解を容易とするため再生専用の記録媒体を例にとると、例えば、ファーストプレイバックタイトルは、当該記録媒体に格納されるコンテンツが映画であれば、映画本編に先立って映出される映画会社の宣伝用映像(トレーラ)に対応する。メニュータイトルは、例えばコンテンツが映画である場合、本編再生、チャプタサーチ、字幕や言語設定、特典映像再生などを選択するためのメニュー画面に対応する。また、ムービータイトルは、メニュータイトルから選択される各映像である。タイトルがさらにメニュー画面であるような構成も可能である。
【0036】
図3は、上述のようなクリップAVストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すUML(Unified Modeling Language)図である。プレイリストは、1または複数のプレイアイテムに対応付けられ、プレイアイテムは、1のクリップに対応付けられる。1のクリップに対して、それぞれ開始点および/または終了点が異なる複数のプレイアイテムを対応付けることができる。1のクリップから1のクリップAVストリームファイルが参照される。同様に、1のクリップから1のクリップ情報ファイルが参照される。また、クリップAVストリームファイルとクリップ情報ファイルとは、1対1の対応関係を有する。このような構造を定義することにより、クリップAVストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
【0037】
また、図4のように、複数のプレイリストから同一のクリップを参照することもできる。また、1のプレイリストから複数のクリップを指定することもできる。クリップは、プレイリスト中のプレイアイテムに示されるIN点およびOUT点により、参照される。図4の例では、クリップ300は、プレイリスト310のプレイアイテム320から参照されると共に、プレイリスト311を構成するプレイアイテム321および322のうちプレイアイテム321から、IN点およびOUT点で示される区間が参照される。また、クリップ301は、プレイリスト311のプレイアイテム322からIN点およびOUT点で示される区間が参照されると共に、プレイリスト312のプレイアイテム323および324のうち、プレイアイテム323のIN点およびOUT点で示される区間が参照される。図4の例では、クリップ301は、さらに別のプレイリストからも参照されている。
【0038】
次に、AVCHDフォーマットによる、記録媒体に記録されるファイルの管理構造について、図5を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、1つのディレクトリ(図5の例ではルート(root)ディレクトリ)が作成される。このディレクトリの下が、1つの記録再生システムで管理される範囲とする。
【0039】
ルートディレクトリの下に、ディレクトリ"BDMV"が置かれる。さらに必要に応じて、ルートディレクトリの下にディレクトリ"AVCHDTN"がおかれる。ディレクトリ"AVCHDTN"には、例えばクリップの代表画像を所定サイズに縮小したサムネイルファイルが置かれる。ディレクトリ"BDMV"に、図1を用いて説明したデータ構造が格納される。
【0040】
ディレクトリ"BDMV"の直下には、ファイルは、ファイル"index.bdmv"およびファイル"MovieObject.bdmv"の2つのみを置くことができる。また、ディレクトリ"BDMV"の下に、ディレクトリ"PLAYLIST"、ディレクトリ"CLIPINF"、ディレクトリ"STREAM"およびディレクトリ"BACKUP"が置かれる。ディレクトリ"BACKUP"は、各ディレクトリおよびファイルのバックアップが格納される。
【0041】
ファイル"index.bdmv"は、ディレクトリ"BDMV"の内容について記述される。すなわち、このファイル"index.bdmv"が上述した最上層のレイヤであるインデックスレイヤにおけるインデックステーブルに対応する。また、ファイル"MovieObject.bdmv"は、1つ以上のムービーオブジェクトの情報が格納される。すなわち、このファイル"MovieObject.bdmv"が上述したオブジェクトレイヤに対応する。
【0042】
ディレクトリ"PLAYLIST"は、プレイリストのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"PLAYLIST"は、プレイリストに関するファイルであるファイル"xxxxx.mpls"を含む。ファイル"xxxxx.mpls"は、プレイリストのそれぞれに対して作成されるファイルである。ファイル名において、"."(ピリオド)の前の"xxxxx"は、5桁の数字とされ、ピリオドの後ろの"mpls"は、このタイプのファイルに固定的とされた拡張子である。
【0043】
ディレクトリ"CLIPINF"は、クリップのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"CLIPINF"は、クリップAVストリームファイルのそれぞれに対するクリップインフォメーションファイルであるファイル"zzzzz.clpi"を含む。ファイル名において、"."(ピリオド)の前の"zzzzz"は、5桁の数字とされ、ピリオドの後ろの"clpi"は、このタイプのファイルに固定的とされた拡張子である。
【0044】
ディレクトリ"STREAM"は、実体としてのAVストリームファイルが置かれるディレクトリである。すなわち、ディレクトリ"STREAM"は、クリップインフォメーションファイルのそれぞれに対応するクリップAVストリームファイルを含む。クリップAVストリームファイルは、MPEG2(Moving Pictures Experts Group 2)のトランスポートストリーム(以下、MPEG2 TSと略称する)からなり、ファイル名が"zzzzz.m2ts"とされる。ファイル名において、ピリオドの前の"zzzzz"は、対応するクリップインフォメーションファイルと同一することで、クリップインフォメーションファイルとこのクリップAVストリームファイルとの対応関係を容易に把握することができる。
【0045】
なお、ディレクトリ"AVCHDTN"は、2種類のサムネイルファイル"thumbnail.tidx"および"thumbnail.tdt2"を置くことができる。サムネイルファイル"thumbnail.tidx"は、所定の方式で暗号化されたサムネイル画像が格納される。サムネイルファイル"thumbnail.tdt2"は、暗号化されていないサムネイル画像が格納される。例えばビデオカメラでユーザが撮影したクリップに対応するサムネイル画像は、コピーフリーであって暗号化する必要が無いと考えられるため、このサムネイルファイル"thumbnail.tdt2"に格納される。
【0046】
図5で示した各ファイルのうち、この発明に関わりの深いものについて、より詳細に説明する。先ず、ディレクトリ"BDMV"の直下に置かれるファイル"index.bdmv"について説明する。図6は、このファイル"index.bdmv"の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるC言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
【0047】
図6において、フィールドTypeIndicatorは、32ビットのデータ長を有し、このファイルがインデックステーブルであることを示す。フィールドTypeIndicator2は、32ビットのデータ長を有し、このファイル"index.bdmv"のバージョンを示す。フィールドIndexesStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkIndexes()の開始アドレスを示す。
【0048】
フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。フィールドExtensionDataStartAddressは、このファイル"index.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【0049】
フィールドExtensionDataStartAddressに続けて、データ長が192バイトの領域reservedが配される。なお、領域reservedは、バイトアライメントや、将来的なフィールドの追加などのための領域である。これは、以下の説明においても同様である。ブロックblkAppInfoBDMV()は、コンテンツ制作者が任意の情報を記述できるブロックであって、プレーヤの動作などには影響を与えない。
【0050】
ブロックblkIndexes()は、このファイル"index.bdmv"の実質的な内容であって、このブロックblkIndexes()に記述された内容により、ディスクをプレーヤに装填した際に再生されるファーストプレイバックや、トップメニューから呼び出されるタイトル(ムービーオブジェクト)が指定される。インデックステーブルにより呼び出されたムービーオブジェクト等に記述されたコマンドに基づき、後述するプレイリストファイルが読み込まれる。
【0051】
図7は、ブロックblkIndexes()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLength直後からこのブロックblkIndexes()の終わりまでのデータ長を示す。続けて、ブロックFirstPlaybackTitle()およびブロックMenuTitle()が配される。
【0052】
ブロックFirstPlaybackTitle()は、ファーストプレイバックで用いられるオブジェクトに関する情報が記述される。ブロックFirstPlaybackTitle()は、1ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに31ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、14ビットのデータ長を有する領域reservedを介して、16ビットのデータ長を有するフィールドFirstPlaybackTitleMobjIDRefが配される。このフィールドFirstPlaybackTitleMobjIDRefにより、ファーストプレイバックタイトルで用いられるムービーオブジェクトのIDを示す。
【0053】
ムービーオブジェクトのIDは、例えば、図8および図9を用いて後述するムービーオブジェクトのシンタクスに基づき、ムービーオブジェクトのforループ文においてループ変数として用いられる値mobj_idで示される。この例では、フィールドFirstPlaybackTitleMobjIDRefは、参照するムービーオブジェクトに対応する値mobj_idが格納される。
【0054】
なお、ブロックblkIndexes()におけるブロックFirstPlaybackTitle()内のフィールドFirstPlaybackTitleMobjIDRefは、トップメニューのムービーオブジェクトを指していてもよいし、タイトルを指していてもよい。
【0055】
ブロックMenuTitle()は、トップメニューで用いられるオブジェクトに関する情報が記述される。ブロックMenuTitle()は、1ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに31ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、14ビットのデータ長を有する領域reservedを介して、16ビットのデータ長を有するフィールドMenuTitleMobjIDRefが配される。フィールドMenuTitleMobjIDRefは、メニュータイトルで用いられるムービーオブジェクトのIDを示す。
【0056】
ブロックMenuTitle()の次のフィールドNumberOfTitlesは、16ビットのデータ長を有し、ユーザが選択、再生可能なタイトルの数を示す。次のforループ文に従い、このフィールドNumberOfTitlesに示される回数だけ、値title_idを引数として、ブロックMovieTitle[title_id]()が記述される。ブロックMovieTitle[title_id]()は、タイトル毎の情報が記述される。値title_idは、"0"からフィールドNumberOfTitlesで示される値までの数値であり、タイトルを識別する。
【0057】
ブロックMovieTitle[title_id]()において、1ビットのデータ長を有する領域reservedを介して固定値"1"が記述され、さらに、46ビットのデータ長を有する領域reservedを介してフィールドMovieTitleMobjIDRefが記述される。フィールドMovieTitleMobjIDRefは、16ビットのデータ長を有し、このタイトルで用いられるムービーオブジェクトのIDを示す。フィールドMovieTitleMobjIDRefの後ろに、32ビットのデータ長を有する領域reservedが配される。
【0058】
図8は、ディレクトリ"BDMV"の直下に置かれるファイル"MovieObject.bdmv"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがファイル"MovieObject.bdmv"であることを示す。フィールドTypeIndicatorは、ISO(International Organization for Standarization)646に規定された符号化方式で符号化した4文字からなる文字列が記述される。この図8の例では、フィールドtype_indicatiorにISO646に既定の方式で符号化された4文字の文字列"MOBJ"が記述され、このファイルがファイル"MovieObject.bdmv"であることが示される。
【0059】
フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このファイル"MovieObject.bdmv"のバージョン番号を示す。このファイル"MovieObject.bdmv"では、フィールドTypeIndicator2は、ISO646に規定された符号化方式で符号化した4文字の文字列"0100"でなければならない。
【0060】
フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、このファイル"MovieObject.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"MovieObject.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【0061】
なお、この図8に示すシンタクス内のフィールドpadding_wordは、16ビットのデータ長を有し、このファイル"MovieObject.bdmv"のシンタクスに従いforループ文に値N1または値N2で示される回数だけ挿入される。値N1または値N2は、0または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
【0062】
フィールドExtensionDataStartAddressに続けてデータ長が224ビットの領域reservedが配され、その次に、このファイル"MovieObject.bdmv"の本体であるブロックblkMovieObjects()が格納される。
【0063】
図9は、ブロックblkMovieObjects()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からこのブロックblkMovieObjects()の終わりまでのデータ長を示す。32ビットのデータ長を有する領域reservedを介してフィールドNumberOfMobjsが配される。フィールドNumberOfMobjsは、直後のforループ文に従い格納されるムービーオブジェクトの数を示す。forループ文のループ変数として用いられる値mobj_idで、ムービーオブジェクトが一意に特定される。値mobj_idは、"0"から始まる値で、ムービーオブジェクトは、forループ文中に記述される順序により定義される。
【0064】
forループ文中のブロックTerminalInfo()は、固定値"1"が記述され、次に15ビットのデータ長を有する領域reservedが配される。その次に、16ビットのデータ長を有するフィールドNumberOfNavigationCommands[mobj_id]が配される。このフィールドNumberOfNavigationCommands[mobj_id]は、値mobj_idによって指し示されるムービーオブジェクトMovieObject[mobj_id]()に含まれるナビゲーションコマンド(NavigationCommand)の数を表す。
【0065】
次の、値command_idをループ変数とするforループ文により、フィールドNumberOfNavigationCommands[mobj_id]に示される数だけ、ナビゲーションコマンドが記述される。すなわち、このforループ文中に配されるフィールドNavigationCommand[mobj_id][command_id]は、値mobj_idによって指し示されるブロックMovieObject[mobj_id]()に含まれる、値command_idで示される順番のナビゲーションコマンドNavigationCommandを格納する。値command_idは、0から始まる値で、ナビゲーションコマンドNavigationCommandは、このforループ文中に記述される順序で定義される。
【0066】
図10は、プレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがプレイリストファイルであることを示す。フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このプレイリストファイルのバージョンを示す。フィールドPlayListStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkPlayList()の開始アドレスを示す。
【0067】
フィールドPlayListMarkStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkPlayListMark()の開始アドレスを示す。フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、ブロックblkExtensionData()の開始アドレスを、ファイル"xxxxx.mpls"の最初のバイトからの相対バイト数を表した値である。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"xxxxx.mpls"内に、ブロックblkExtensionData()が存在しないことを示す。
【0068】
160ビットのデータ長を有する領域reservedを介してブロックblkAppInfoPlayList()が配される。ブロックblkAppInfoPlayList()は、次のブロックblkPlayList()に記述されるプレイリストのタイプ、再生制限などの情報が記述される。ブロックblkPlayList()は、プレイリストが記述される。ブロックblkPlayListMark()は、チャプタジャンプなどでジャンプされるポイントが記述される。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。
【0069】
なお、この図10に示すシンタクス内のフィールドpadding_wordは、16ビットのデータ長を有し、このファイル"xxxxx.mpls"のシンタクスに従いforループ文に値N1、値N2および値N3で示される回数だけ挿入される。値N1、値N2または値N3は、0または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
【0070】
図11は、ブロックblkPlayList()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayList()の最後までのデータ長を示す。フィールドLengthに続けて16ビットのデータ長を有する領域reservedが配され、次にフィールドNumberOfPlayItemsが配される。フィールドNumberOfPlayItemsは、16ビットのデータ長を有し、このブロックblkPlayList()に含まれるプレイアイテムの数を示す。フィールドNumberOfSubPathは、このブロックblkPlayList()に含まれるサブパスの数を示す。
【0071】
次のforループ文に従い、フィールドNumberOfPlayItemsで示される数だけ、プレイアイテムが記述されるブロックblkPlayItem()が記述される。forループ文に基づくカウント数がブロックblkPlayItem()の識別子PlayItem_idとなる。さらに次のforループ文に従い、フィールドNumberOfSubPathで示される数だけ、ブロックblkSubPath()が記述される。forループ文に基づくカウント数がブロックblkSubPath()の識別子SubPath_idとなる。
【0072】
なお、サブパスは、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応して持つことができる。サブパスは、例えば、アフレコ用のオーディオデータの指定や、2枚の映像を合成する際に、プレイアイテムで指定されるクリップと同期して再生する副映像を指定するといった目的で用いられる。
【0073】
図12は、ブロックblkPlayItem()の一例の構造を表すシンタクスを示す。フィールドLengthは、16ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayItem()の最後までのデータ長を示す。
【0074】
フィールドClipInformationFileNameは、40ビット(5バイト)のデータ長を有し、このブロックblkPlayItem()が参照するクリップインフォメーションファイルのファイル名が示される。このプレイアイテムにおいて、フィールドClipInformationFileName[0]で示されるファイル名のクリップインフォメーションファイルが読み出される。フィールドClipCodecIdentifier[0]は、32ビット(4バイト)のデータ長を有し、このブロックblkPlayItem()によるプレイアイテムにおいて用いられるクリップAVストリームのコーデック方式を示す。
【0075】
12ビットのデータ長を有する領域reservedを介して、フィールドConnectionConditionが配される。フィールドConnectionConditionは、4ビットのデータ長を有し、クリップ間の接続状態に関する情報を示す。記録用途の記録媒体に対しては、フィールドConnectionConditionの値として"1"、"5"または"6"が用いられる。フィールドConnectionConditionの値が"1"で、そのプレイアイテムから参照されているクリップと手前のプレイアイテムから参照されているクリップとがシームレス接続しないことを示し、フィールドConnectionConditionの値が"5"または"6"で、そのプレイアイテムから参照されているクリップと手前のプレイアイテムから参照されているクリップとがシームレス接続することを示す。なお、シームレス接続とは、クリップと次のクリップとがフレームタイミングで連続的に再生されるように、クリップ間の再生制御を行うことをいう。
【0076】
フィールドConnectionConditionの値が"5"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して長くされる(図13A参照)。これにより、クリップとクリップとを接続する際に、オーディオデータのフェイドアウト処理が可能とされる。例えば、ユーザによる記録停止操作によりクリップがクローズされる場合に、フィールドConnectionConditionの値が"5"とされる。以下、このフィールドConnectionConditionの値が"5"で示されるクリップの接続方法を、第1のシームレス接続と呼ぶ。
【0077】
フィールドConnectionConditionの値が"6"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して同じくされる(図13B参照)。これにより、クリップとクリップとの接続をシームレスに行うことが可能とされる。例えば、ユーザ操作に応じた記録停止以外の理由、例えばシステム要因に基づきクリップがクローズされる場合に、フィールドConnectionConditionの値が"6"とされる。以下、このフィールドConnectionConditionの値が"6"で示されるクリップの接続方法を、第2のシームレス接続と呼ぶ。
【0078】
フィールドRefToSTCID[0]は、8ビットのデータ長を有し、システムタイムベース(STC)の不連続点に関する情報を示す。フィールドINTimeおよびフィールドOUTTimeは、それぞれ32ビットのデータ長を有し、メインクリップAVストリームの再生範囲を示す。フィールドINTimeが開始点(IN点)を示し、フィールドOUTTimeが終了点(OUT点)を示す。
【0079】
ブロックblkUOMaskTable()は、ユーザ入力の受付制限が設定されるテーブルである。1ビットのデータ長を有するフラグPlayItemRandomAccessFlagは、このブロックblkPlayItem()によるプレイアイテムに対してランダムアクセスを許可するか否かを規定する。続けて、7ビットのデータ長を有する領域reservedを介してフィールドStillModeが配される。フィールドStillModeは、8ビットのデータ長を有し、ブロックblkPlayItem()によるプレイアイテムにおいて、最後に表示した映像を静止画として表示させるか否かを示す。フィールドStillModeの値が"0x01"(バイナリ)であれば、if文に基づき、16ビットのデータ長を有するフィールドStillTimeにより静止時間が示される。フィールドStillModeの値が"0x01"以外であれば、当該16ビットのデータ長を有する領域が領域reservedとされる。
【0080】
なお、数値の記述において"0x"は、その数値が16進表記されていることを示す。これは、以下の同様な表記について共通である。
【0081】
ブロックblkSTNTable()は、このブロックblkPlayItem()によるプレイアイテムが管理しているクリップAVストリームの属性、PID番号、記録媒体上での記録位置などが管理される。
【0082】
図14は、ブロックblkPlayListMark()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayListMark()の最後までのデータ長を示す。
【0083】
フィールドNumberOfPlayListMarksは、16ビットのデータ長を有し、このブロックblkPlayListMark()に含まれるプレイリストマークの数を示す。次のforループ文に従い、フィールドNumberOfPlayListMarksで示される数だけプレイリストマークの情報が記述される。
【0084】
forループ文内において、8ビットのデータ長を有する領域reserveに続けてフィールドMarkTypeが配される。フィールドMarkTypeは、8ビットのデータ長を有し、マークのタイプを示す。プレイリストマークには、エントリマーク(Entry Mark)およびリンクポイント(Link Point)の2タイプが定義されており、このフィールドMarkTypeにより、何れのタイプであるかが示される。チャプタを定義するためには、エントリマークを用いる。リンクポイントは、この発明と関連性が薄いので、説明を省略する。上述したフィールドNumberOfPlayListMarksは、エントリマークおよびリンクポイントを合計した値を示す。
【0085】
フィールドRefToPlayItemIDは、16ビットのデータ長を有し、マークが打たれるプレイアイテムを参照する識別情報PlayItem_idが記述される。フィールドMarkTimeStampは、32ビットのデータ長を有し、マークが打たれるポイントを示すタイムスタンプが記述される。フィールドEntryESPIDは、16ビットのデータ長を有し、マークによって指し示されるエレメンタリストリームを含んでいるTSパケットのPIDの値を示す。フィールドDurationは、45kHzのクロックを単位とした計測による、32ビットのデータ長を有する符号無し整数である。このフィールドDurationに格納される値が"0"であれば、このフィールドDurationは、意味を成さない。
【0086】
図15は、クリップインフォメーションファイルの一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがクリップインフォメーションファイルであることを示す。フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このクリップインフォメーションファイルのバージョンを示す。
【0087】
このクリップインフォメーションファイルは、ブロックblkClipInfo()、ブロックblkSequenceInfo()、ブロックblkProgramInfo()、ブロックblkCPI()、ブロックblkClipMark()およびブロックblkExtensionData()を有し、それぞれ32ビットのデータ長を有するフィールドSequenceInfoStartAddress、フィールドProgramInfoStartAddress、フィールドCPIStartAddress、フィールドClipMarkStartAddressおよびフィールドExtensionDataStartAddressは、各々対応するブロックの開始アドレスを示す。
【0088】
フィールドExtensionDataStartAddressは、このクリップインフォメーションファイルの最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
【0089】
ブロックblkClipInfo()は、これらの開始アドレスを示すフィールドに続く、96ビットのデータ長を有する領域reservedの次から開始される。ブロックblkClipInfo()は、このクリップインフォメーションファイルが管理するクリップAVストリームに関する情報が記述される。ブロックblkSequenceInfo()は、STCやATC(アライバルタイムベース)が連続しているシーケンスをまとまりとして管理する情報が記述される。ブロックblkProgramInfo()は、このクリップインフォメーションファイルに管理されるクリップAVストリームの符号化方式、クリップAVストリーム中のビデオデータのアスペクト比などの情報が記述される。ブロックblkCPI()は、ランダムアクセス開始点などの、AVストリーム中の特徴的な箇所を表す特徴点情報CPIに関する情報が格納される。
【0090】
また、ブロックblkClipMark()は、チャプタ位置などの、クリップに付された頭出しのためのインデックス点(ジャンプポイント)が記述される。ブロックblkExtensionData()は、拡張データを格納することができる領域である。なお、これらブロックblkClipMark()およびクリップインフォメーションファイル内のブロックblkExtensionData()は、この発明との関連性が薄いので、詳細な説明を省略する。
【0091】
図16は、ブロックblkClipInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkClipInfo()の最後までのデータ長を示す。16ビットのデータ長を有する領域reservedを介して、フィールドClipStreamTypeが配される。
【0092】
フィールドClipStreamTypeは、8ビットのデータ長を有し、クリップAVストリームの種別を表す。このフィールドClipStreamTypeの値は、例えば"1"に固定的とされる。フィールドApplicationTypeは、8ビットのデータ長を有し、クリップAVストリーム(拡張子が「m2ts」のファイル)がどのような多重化によって作られているかを示す。フィールドApplicationTypeの値が"1"で、対応するクリップAVストリームは、通常の動画が再生される。続けて31ビットのデータ長を有する領域reservedが配される。
【0093】
データ長が1ビットのフラグIsCC5は、プレイリストにおけるブロックblkPlayItem()によって、対応するクリップと次のクリップとの接続を、上述した第1のシームレス接続、すなわちフィールドConnectionConditionの値が"5"で示される方法で行うか否かを示す。フラグIsCC5の値が"1"(バイナリ値)であれば、クリップ間の接続が第1のシームレス接続によりなされていることを示す。
【0094】
フィールドTSRecordingRateは、クリップAVストリームファイルの記録レートをバイト/秒で表したものである。フィールドNumberOfSourcePacketsは、クリップAVストリームに含まれるソースパケット数を表す。1024ビットのデータ長の領域reservedを介してブロックTSTypeInfoBlock()が配される。ブロックTSTypeInfoBlock()は、クリップAVストリームが格納されるパケットのタイプを示す情報が格納される。このブロックTSTypeInfoBlock()は、この発明との関連性が薄いので、詳細な説明を省略する。
【0095】
次のif文以下の情報は、上述のフラグIsCC5の値が"1"である場合に記述される。if文の次の8ビットのデータ長を有する領域reservedを介してフィールドFollowingClipStreamTypeが配されるフィールドFollowingClipStreamTypeは、8ビットのデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップのタイプが記述される。32ビットのデータ長を有する領域reservedを介してフィールドFollowingClipInformationFileNameが配される。
【0096】
フィールドFollowingClipInformationFileNameは、40ビット(5バイト)のデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップに対応するクリップインフォメーションファイルのファイル名が記述される。次のフィールドClipCodecIdentifierは、32ビット(4バイト)のデータ長を有し、当該次のクリップの符号化方式を示す。この例では、フィールドClipCodecIdentifierは、ISO646に既定の方式で符号化された4文字の文字列値"M2TS"に固定的とされる。次に8ビットのデータ長を有する領域reservedが配される。
【0097】
図17は、ブロックblkSequenceInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkSequenceInfo()の最後までのデータ長を示す。15ビットのデータ長を有する領域reservedを介して、データ長が1ビットで固定値"1"が記述される。
【0098】
次のフィールドSPNATCStartは、32ビットのデータ長を有し、連続した時間に記録されたことを表すシーケンス(シーケンスATCSequenceと呼ぶ)の開始をパケット番号で表す。この図17の例では、フィールドSPNATCStartは、値を"0"としてクリップAVストリームファイルの先頭と一致させている。フィールドNumberOfSTCSequenceは、シーケンスATCSequence上のシーケンスSTCSequenceの数を表す。フィールドNumberOfSTCSequenceは、値が"1"以上とされる。
【0099】
次のforループ文に従い、フィールドNumberOfSTCSequenceで示される数だけ、シーケンスSTCSequenceの情報が記述される。シーケンスSTCSequenceは、MPEG2 TS(Transport Stream)における時間軸の基準であるPCR(Program Clock Reference)が連続な範囲を表す。シーケンスSTCSequenceには、クリップ内で一意な番号STC_idが割り当てられる。このシーケンスSTCSequence内では、不連続の無い一貫した時間軸を定義できるので、プレイアイテムの開始時刻および終了時刻を一意に定めることができる。つまり、各プレイアイテムの開始点と終了点は、同一のシーケンスSTCSequenceに存在していなければならない。このforループ文においては、値stc_idによりシーケンスSTCSequenceが指定される。
【0100】
フィールドPCRPID[stc_id]は、16ビットのデータ長を有し、MPEG2 TSにおいて、PCR(Program Clock Reference)が含まれるTSパケットのPIDを表す。フィールドSPNSTCStart[stc_id]は、32ビットのデータ長を有し、シーケンスSTCSequenceの開始をパケット番号で表す。フィールドPresentationStartTimeおよびフィールドPresentationEndTimeは、それぞれ32ビットのデータ長を有し、クリップAVストリーム中の有効な範囲を表す。フィールドPresentationStartTimeおよびフィールドPresentationEndTimeで示される範囲がプレイアイテムから参照できる範囲となる。
【0101】
図18は、ブロックblkProgramInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkProgramInfo()の最後までのデータ長を示す。15ビットのデータ長を有する領域reservedを介して、データ長が1ビットで固定値"1"が記述される。
【0102】
フィールドSPNProgramSequenceStartは、32ビットのデータ長を有し、対応するクリップAVストリームファイルにおいて、プログラムシーケンスが開始されるソースパケットの番号が記述される。フィールドProgramMapPIDは、16ビットのデータ長を有し、プログラムシーケンスに適用可能なプログラムマップセクションを含むとされているTSパケットのPIDの値を示す。フィールドNumberOfStreamsInPSは、8ビットのデータ長を有し、プログラムシーケンスに定義されるエレメンタリストリームの数を示す。フィールドNumberOfStreamsInPSに続けて、8ビットのデータ長を有する領域reservedが配される。
【0103】
次のforループ文に従い、値[stream_index]をループ変数として、フィールドNumberOfStreamsInPSで示される数だけ、フィールドStreamPID[stream_index]およびブロックblkStreamCodingInfo(stream_index)の組が格納される。フィールドStreamPID[stream_index]は、プログラムシーケンスによって参照されたPMT(Program Map Table)に記述されたエレメンタリストリームに対応するPIDの値を示す。次のブロックblkStreamCodingInfo(stream_index)は、対応するフィールドStreamPID[stream_index]で示されるエレメンタリストリームの符号化方式に関する情報が記述される。
【0104】
図19は、ブロックblkCPI()の一例の構造を表すシンタクスを示す。MPEGストリームのような、フレーム間圧縮を行っている符号化ストリームにおいては、デコード開始可能な箇所は、GOP(Group Of Picture)の先頭など一部の箇所に限定されていることが多い。CPI(Characteristic Point Information)とは、そのデコード可能な開始点の位置の情報を集めたデータベースで、再生時刻と、ファイル内アドレスとが対応付けられたテーブルになっている。すなわち、CPIは、デコード単位の先頭位置を示す情報がテーブル化されている。
【0105】
このようにデータベースを定めることで、例えば、任意の時刻から再生したい場合、再生時刻を元にCPIを参照することによって再生位置のファイル内アドレスがわかる。このアドレスは、デコード単位の先頭となっているため、プレーヤは、そこからデータを読み出してデコードし、素早く画像を表示することができる。
【0106】
なお、このCPIに格納される、デコード単位の先頭位置(この例ではGOPの先頭位置)を、EP(Entry Point)エントリと称する。
【0107】
図19において、フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkCPI()の最後までのデータ長を示す。次のif文に従い、フィールドLengthの値が0でなければ、12ビットのデータ長を有する領域reservedを介してフィールドCPITypeが配される。フィールドCPITypeは、4ビットのデータ長を有し、CPIの種類を示す。次のブロックblkEPMap()は、対応するクリップAVストリームファイルにおけるPTS値とバイトアドレスとの関連付けを行うテーブルが格納される。
【0108】
図20は、ブロックblkEPMap()の一例の構造を表すシンタクスを示す。8ビットのデータ長を有する領域reservedを介してフィールドNumberOfStreamPIDEntriesが配される。フィールドNumberOfStreamPIDEntriesは、8ビットのデータ長を有し、ブロックblkEPMap()におけるブロックblkEPMapForOneStreamPIDのエントリ数を示す。forループ文に従い、値[k]をループ変数として、フィールドNumberOfStreamPIDEntriesに示される数だけ、エントリポイントに関する情報が記述される。
【0109】
forループ文内において、フィールドStreamPID[k]は、16ビットのデータ長を有し、ブロックblkEPMap()の中で[k]番目にエントリされるブロックblkEPMapForOneStreamPID(以下、[k]番目のブロックblkEPMapForOneStreamPIDと記述する)によって参照されるエレメンタリストリームを伝送するトランスポートパケットのPIDの値を示す。
【0110】
10ビットのデータ長を有する領域reservedを介してフィールドEPStreamType[k]が配される。フィールドEPStreamType[k]は、4ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDによって参照されるエレメンタリストリームのタイプを示す。フィールドNumberOfEPCoarseEntries[k]は、16ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDの中にある粗い検索用のサブテーブル(EP coarse table)のエントリ数を示す。フィールドNumberOfEPFineEntries[k]は、18ビットのデータ長を有し、[k]番目のブロックblkEPMapForOneStreamPIDの中にある精密な検索用のサブテーブル(EP fine table)のエントリ数を示す。フィールドEPMapForOneStreamPIDStartAddress[k]は、32ビットのデータ長を有し、ブロックblkEPMap()の中で[k]番目のブロックblkEPMapForOneStreamPIDが始まる相対バイト位置を示す。この値は、ブロックblkEPMap()の第1バイト目からのバイト数で示される。
【0111】
上述のforループ文による記述の後、16ビットの整数倍のデータ長を有するパディングワードを挟んで記述される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と呼ぶ。
【0112】
図21は、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の一例の構造を表すシンタクスを示す。ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)のセマンティクスを説明するために、先ず、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)に格納されるデータの元となるエントリである、エントリPTSEPStartおよびエントリSPNEPStartの意味について説明する。
【0113】
エントリPTSEPStartと、エントリPTSEPStartに関連付けられたエントリSPNEPStartは、それぞれAVストリーム上のエントリポイントを指す。そして、エントリPTSEPFineと、エントリPTSEPFineに関連付けられたエントリPTSEPCoarseは、同一のエントリPTSEPStartから導かれる。また、エントリSPNEPFineと、エントリSPNEPFineに関連付けられたエントリSPNEPCoarseは、同一のエントリSPNEPStartから導かれる。
【0114】
図22は、エントリPTSEPCoarseおよびエントリPTSEPFineの一例のフォーマットについて示す。PTSすなわちエントリPTSEPStartは、データ長が33ビットの値である。MSBのビットを第32ビット、LSBのビットを第0ビットとするとき、この図22の例では、大まかな単位で検索を行う際に用いられるエントリPTSEPCoarseは、エントリPTSEPStartの第32ビットから第19ビットまでの14ビットが用いられる。エントリPTSEPCoarseにより、解像度が5.8秒で、26.5時間までの範囲で検索が可能である。また、より精密な検索を行うためのエントリPTSEPFineは、エントリPTSEPStartの第19ビットから第9ビットまでの11ビットが用いられる。エントリPTSEPFineにより、解像度が5.7ミリ秒で、11.5秒までの範囲で検索が可能である。なお、第19ビットは、エントリPTSEPCoarseとエントリPTSEPFineとで共通して用いられる。また、LSB側の第0ビットから第8ビットまでの9ビットは、用いられない。
【0115】
図23は、エントリSPNEPCoarseおよびエントリSPNEPFineの一例のフォーマットについて示す。ソースパケット番号すなわちエントリSPNEPStartは、データ長が32ビットの値である。MSBのビットを第31ビット、LSBのビットを第0ビットとするとき、この図23の例では、大まかな単位で検索を行う際に用いられるエントリSPNEPCoarseは、エントリSPNEPStartの第31ビットから第0ビットまでの全てのビットが用いられる。また、より精密な検索を行うためのエントリSPNEPFineは、エントリSPNEPStartの第16ビットから第0ビットまでの17ビットが用いられる。エントリSPNEPFineにより、例えば略25MB(Mega Byte)のAVストリームファイルまでの範囲で、検索が可能である。
【0116】
なお、ソースパケット番号の場合でも、エントリSPNEPCoarseとしてMSB側の所定ビット数の値だけ用いるようにしてもよい。例えば、エントリSPNEPCoarseとして、エントリSPNEPStartの第31ビットから第16ビットまでの17ビットを用い、エントリSPNEPFineは、エントリSPNEPStartの第16ビットから第0ビットまでの17ビットを用いる。
【0117】
上述に基づき、エントリPTSEPStartおよびエントリSPNEPStartは、次のように定義される。
【0118】
エントリPTSEPStartは、図22で示したように、データ長が33ビットの符号無し整数であり、AVストリーム中で、ランダムアクセスが可能なピクチャ(例えばIDR(Instantaneous Decoding Refresh)ピクチャやI(Intra)ピクチャ)から開始するビデオアクセスユニットの33ビット長のPTSを示す。
【0119】
エントリSPNEPStartは、図23で示したように、32ビットの符号無し整数であり、エントリPTSEPStartに関連付けられたビデオアクセスユニットの第1バイト目を含むソースパケットの、AVストリームの中でのアドレスを示す。エントリSPNEPStartは、ソースパケット番号の単位で表され、AVストリームファイル中の最初のソースパケットから、値"0"を初期値として、ソースパケット毎に1ずつ増加する値としてカウントされる。
【0120】
図21を参照し、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)は、第1のforループ文により大まかな単位での検索を行うためのサブテーブル(EP coarse table)が記述され、第2のforループ文によりサブテーブル(EP coarse table)の検索結果に基づきより詳細な検索を行うためのサブテーブル(EP fine table)が記述される。
【0121】
第1のforループ文の直前に、フィールドEPFineTableStartAddressが配される。フィールドEPFineTableStartAddressは、32ビットのデータ長を有し、最初の第2のforループにおけるフィールドReservedEPFine[EP_fine_id]の第1バイト目の開始アドレスを、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の第1バイト目からの相対バイト数で示す。相対バイト数は、値"0"から開始する。
【0122】
第1のforループ文は、ループ変数[i]で以て、サブテーブル(EP coarse table)のエントリ数Ncまで繰り返され、エントリ数Ncの組数だけフィールドRefToEPFineID[i]、エントリPTSEPCoarse[i]およびエントリSPNEPCoarse[i]が格納される。第1のforループ文において、フィールドRefToEPFineID[i]は、18ビットのデータ長を有し、フィールドRefToEPFineID[i]に続くフィールドPTSEPCoarse[i]が示すエントリPTSEPCoarseに関連付けられるエントリPTSEPFineを持つ、サブテーブル(EP fine table)内のエントリ番号を示す。エントリPTSEPFineと、このエントリPTSEPFineに関連付けられるエントリPTSEPCoarseとは、同一のエントリPTSEPStartから導かれる。フィールドRefToEPFineID[i]は、第2のforループ文中で記述される順番で定義されるループ変数[EP_fine_id]の値により与えられる。
【0123】
第1のforループ文の後に、パディングワードを挟んで第2のforループ文による記述がなされる。第2のforループ文は、ループ変数[EP_fine_id]で以て、サブテーブル(EP fine table)のエントリ数Nfまで繰り返され、エントリ数Nfの組数だけ、1ビットのデータ長を有するフィールドReservedEPFine[EP_fine_id]と、3ビットのデータ長を有するフィールドIEndPositionOffset[EP_fine_id]と、11ビットのデータ長を有するフィールドPTSEPFine[EP_fine_id]と、17ビットのデータ長を有するフィールドSPNEPFine[EP_fine_id]とが格納される。これらのうち、フィールドPTSEPFine[EP_fine_id]およびフィールドSPNEPFine[EP_fine_id]は、ループ変数[EP_fine_id]に基づきサブテーブル(EP fine table)から参照されるエントリPTSEPFineおよびエントリSPNEPFineそれぞれが格納される。
【0124】
エントリPTSEPCoarseおよびエントリPTSEPFine、ならびに、エントリSPNEPCoarseおよびエントリSPNEPFineは、次のように導かれる。サブテーブル(EP fine table)に、関連するデータSPNEPStartの値の昇順に並んでいるNf個のエントリがあるとする。それぞれのエントリPTSEPFineは、対応するエントリPTSEPStartから、次式(1)のように導かれる。
PTSEPFine[EP_fine_id]=(PTSEPStart[EP_fine_id] >>9)/211 ・・(1)
【0125】
エントリPTSEPCoarseと、対応するエントリPTSEPFineとの関係は、次式(2)、(3)の通りである。
PTSEPCoarse[i]=(PTSEPStart[RefToEPFineID[i]] >>19)/214 ・・(2)
PTSEPFine[RefToEPFineID[i]]=(PTSEPStart[RefToEPFineID[i]] >>9)/211 ・・(3)
【0126】
それぞれのエントリSPNEPFineは、対応するエントリSPNEPStartから、次式(4)のように導かれる。
SPNEPFine[EP_fine_id]=SPNEPStart[EP_fine_id]/217 ・・(4)
【0127】
エントリSPNEPCoarseと、対応するエントリSPNEPFineとの関係は、次式(5)、(6)の通りである。
SPNEPCoarse[i]=SPNEPStart[RefToEPFineID[i]] ・・(5)
SPNEPFine[RefToEPFineID[i]]=SPNEPStart[RefToEPFineID[i]]/217 ・・(6)
【0128】
なお、上述の式(1)〜(6)において、記号「>>x」は、データのLSB側からxビットを超える桁からビットを用いることを意味する。
【0129】
次に、拡張データを格納するためのブロックblkExtensionData()について説明する。このブロックblkExtensionData()は、所定の拡張データを格納可能なように定義され、インデックステーブルが格納されるファイル"index.bdmv"、プレイリストが格納されるファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"の各ファイルに記述することができる。
【0130】
図24は、ブロックblkExtensionData()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkExtensionData()の終わりまでのデータ長をバイト数で示す。このフィールドLengthの示すデータ長が"0"でなければ、if文以下の記述がなされる。
【0131】
フィールドDataBlockStartAddressは、32ビットのデータ長を有し、このシンタクス中の、拡張データの本体が格納されるブロックDataBlock()の開始アドレスを、このブロックblkExtensionData()の先頭バイトからの相対バイト数で示す。すなわち、相対バイト数は、"0"から開始される。なお、フィールドDataBlockStartAddressは、次に示す32ビットアライメントの条件を満たさなければならない。
DataBlockStartAddress%4=0
【0132】
24ビットのデータ長を有する領域reservedを介してフィールドNumberOfExtDataEntriesが配される。フィールドNumberOfExtDataEntriesは、8ビットのデータ長を有し、このブロックblkExtensionData()のブロックDataBlock()に格納される拡張データのエントリ数を示す。拡張データのエントリは、拡張データの本体を取得するための情報が格納される。この例では、拡張データのエントリは、フィールドExtDataType、フィールドExtDataVersion、フィールドExtDataStartAddressおよびフィールドExtDataLengthからなるブロックext_data_entry()であって、ブロックblkExtensionData()において、第1のforループ文に従いこのフィールドNumberOfExtDataEntriesに示される個数だけ、このブロックext_data_entry()が存在する。
【0133】
フィールドExtDataTypeは、16ビットのデータ長を有し、このブロックblkExtensionData()に記述される拡張データが記録装置用の拡張データであることを表す。このフィールドExtDataTypeの値は、拡張データを識別する第1の値であり、このブロックblkExtensionData()を含む規格書のライセンサ(使用認可者)が割り当てると定義することができる。フィールドExtDataVersionは、拡張データを識別する第2の値であり、この拡張データのバージョン番号を表すものと定義することができる。なお、このブロックblkExtensionData()において、フィールドExtDataTypeおよびフィールドExtDataVersionの値が同一のブロックext_data_entry()が2以上、存在してはならない。
【0134】
フィールドExtDataStartAddressは、32ビットのデータ長を有し、このフィールドExtDataStartAddressが含まれる拡張データのエントリ(ブロックext_data_entry())に対応する拡張データの開始アドレスを示す。フィールドExtDataStartAddressは、ブロックblkExtensionData()の先頭バイトからの相対バイト数で、拡張データext_dataの開始アドレスを示す。なお、フィールドExtDataStartAddressは、次に示す32ビットアライメントの条件を満たさなければならない。
ExtDataStartAddress%4=0
【0135】
フィールドExtDataLengthは、32ビットのデータ長を有し、このフィールドExtDataStartAddressが含まれる拡張データのエントリ(ブロックext_data_entries())に対応する拡張データのデータ長を示す。データ長は、バイト数で示される。
【0136】
フィールドNumberOfExtDataEntriesで示された個数だけ、拡張データのエントリ(ブロックext_data_entry())が記述されると、それぞれ16ビットのデータ長を有し任意のデータ列からなるフィールドpadding_wordが、2フィールドを組として任意の回数L1だけ繰り返される。その後、拡張データの本体が格納されるブロックDataBlock()が記述される。ブロックDataBlock()は、1以上の拡張データが格納される。それぞれの拡張データext_dataは、上述したフィールドExtDataStartAddressフィールドExtDataLengthに基づき、ブロックDataBlock()から取り出される。
【0137】
図25は、ブロックblkExtensionData()における各データの参照関係を模式的に示す。フィールドLengthにより、フィールドLength直後の位置からブロックblkExtensionData()の最後までのデータ長が示される。フィールドDataBlockStartAddressにより、ブロックDataBlock()の開始位置が示される。フィールドNumberOfExtDataEntriesで示される個数だけ、ブロックext_data_entryが記述される。最後のブロックext_data_entryからブロックDataBlock()の間には、任意の長さでフィールドpadding_wordが置かれる。
【0138】
ブロックDataBlock()内には、ブロックext_data_entry()で示される拡張データext_dataが置かれる。それぞれの拡張データext_dataの位置およびデータ長は、対応するブロックext_data_entry()内のフィールドExtDataStartAddressおよびフィールドExtDataLengthにより示される。したがって、ブロックDataBlock()内での拡張データext_dataの並び順は、対応するブロックext_data_entry()の並び順と一致していなくてもよい。
【0139】
このように、拡張データを、拡張データの本体が格納されるブロックDataBlock()と、ブロックDataBlock()内の拡張データに対するアクセス情報などが格納されるブロックext_data_entry()とによる2層構造とすることで、複数の拡張データを格納することが可能となる。
【0140】
次に、上述の拡張データの一例の作成方法および読み出し方法について説明する。図26は、ブロックblkExtensionData()にデータを書き込む際の一例の処理を示すフローチャートである。この図26は、ブロックblkExtensionData()中の(n+1)番目のエントリとして、拡張データを追加し、ブロックblkExtensionData()を書き換える場合の例である。
【0141】
先ず、ステップS10で、書き込もうとしている拡張データのデータ長を取得し、フィールドExtDataLength[n+1]の値にセットする。なお、「[n+1]」の記述は、(n+1)番目のエントリの番号に対応する。次に、ステップS11で、現在のブロックblkExtensionData()に列挙されているブロックext_data_entry()のフィールドExtDataLengthおよびフィールドExtDataStartAddressの値を調べ、ブロックDataBlock()の使用状況を取得する。
【0142】
そして、次のステップS12で、ブロックDataBlock()中に、書き込もうとしている拡張データのデータ長であるフィールドExtDataLength[n+1]に示されるデータ長以上の、連続した空き領域があるか否かが判断される。若し、あると判断されれば、処理はステップS14に移行される。
【0143】
一方、フィールドExtDataLength[n+1]に示されるデータ長以上の連続した空き領域が無いと判断されれば、処理はステップS13に移行され、ブロックblkExtensionData()におけるフィールドLengthの値を大きくし、フィールドExtDataLength[n+1]に示されるデータ長以上の連続した空き領域をブロックDataBlock()内に作る。空き領域ができたら、処理がステップS14に移行される。
【0144】
ステップS14では、拡張データを書き込む領域の先頭アドレスを決め、その先頭アドレスの値をフィールドExtDataStartAddress[n+1]とする。次のステップS15で、フィールドExtDataStartAddress[n+1]から、上述のステップS10でセットされたフィールドExtDataLength[n+1]の長さの拡張データext_data[n+1]を書き込む。
【0145】
データの書き込みが終了したら、ステップS16で、ブロックext_data_entry()に対して、フィールドExtDataLength[n+1]と、フィールドExtDataStartAddress[n+1]とを追加する。
【0146】
なお、上述において、書き換えを行うブロックblkExtensionData()は、すでにディスクなどの記録媒体から読み出されて記録装置のメモリに記憶されているものとする。そのため、ステップS13における、フィールドLengthの値の変更によるブロックblkExtensionData()の拡大は、システムに任され、システムがメモリアロケーションを適切に行うことでなされる。
【0147】
図27は、ブロックblkExtensionData()から拡張データを読み出す際の一例の処理を示すフローチャートである。なお、この図27のフローチャートによる処理は、再生専用の記録媒体と、記録可能な記録媒体との両方に適用可能なものである。先ず、最初のステップS20で、読み込もうとする拡張データが準拠する規格から、フィールドExtDataTypeの値を取得し、ステップS21で、読み込もうとする拡張データの種別から、フィールドExtDataVersionの値を取得する。
【0148】
次のステップS22で、ブロックblkExtensionData()に列挙されているブロックext_data_entry()を1つずつ順次、読み込む。そして、ステップS23で、読み込んだブロックext_data_entry()に含まれるフィールドExtDataTypeおよびフィールドExtDataVersionの値が、上述のステップS20およびステップS21で取得したフィールドExtDataTypeおよびフィールドExtDataVersionの値と一致するか否かが判断される。
【0149】
一致していないと判断されれば、処理はステップS26に移行され、ブロックblkExtensionData()内に列挙されるブロックext_data_entry()を全て読み終えたか否かが判断される。全て読み終えたと判断されれば、処理はステップS27に移行され、このブロックblkExtensionData()には、読み込もうとした拡張データが存在しないとして、一連の処理が終了される。全て読み終えていないと判断されれば、処理はステップS22に戻され、次のブロックext_data_entry()が読み込まれる。
【0150】
上述のステップS23において、ブロックext_data_entry()に含まれるフィールドExtDataTypeおよびフィールドExtDataVersionの値が、取得したフィールドExtDataTypeおよびフィールドExtDataVersionの値と一致していると判断されれば、処理はステップS24に移行される。ここでは、ブロックblkExtensionData()中の[i]番目のエントリで一致したものとする。
【0151】
ステップS24では、[i]番目のエントリのブロックext_data_entry()からフィールドExtDataLength[i]の値と、フィールドExtDataStartAddress[i]の値とを読み込む。そして、ステップS25で、ステップS24で読み込んだフィールドExtDataStartAddress[i]で示されるアドレスから、フィールドExtDataLength[i]で示されるデータ長だけ、データを読み出す。
【0152】
次に、上述した、インデックスファイル"index.bdmv"、ムービーオブジェクトファイル"MovieObject.bdmv"、プレイリストファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"にそれぞれ定義可能な、拡張データを格納する拡張データブロックblkExtensionData()について説明する。
【0153】
先ず、インデックスファイル"index.bdmv"に対して定義される一例の拡張データブロックについて説明する。ここでは、プレイリスト毎に記録可能な記録媒体に特有の属性情報を付加するようにした、一例の拡張データブロックについて説明する。図28は、このプレイリスト属性を記述するための、ファイル"index.bdmv"内のフィールドblkExtensionData()におけるブロックDataBlock()(図24参照)の一例の構造を表すシンタクスを示す。この図28の例では、ブロックDataBlock()がブロックblkIndexExtensionData()として記述されている。
【0154】
先ず、上述の図24を参照して、ブロックblkExtensionData()においてフィールドExtDataTypeを値"0x1000"、フィールドExtDataVersionを値"0x0100"とする。これらフィールドExtDataTypeおよびフィールドExtDataVersionに記述された値は、例えば再生装置側において、予めROM(Read Only Memory)などに記憶されたテーブルが参照されて識別される。ブロックDataBlock()内のフィールドExtDataStartAddressおよびフィールドExtDataLengthで示される領域に、ブロックblkIndexExtensionData()が格納される。
【0155】
ブロックblkIndexExtensionData()において、フィールドTypeIndicatorは、次に続くデータの種類を示す、ISO646に規定された符号化方式で符号化した4文字からなる文字列が記述される。この図28の例では、フィールドTypeIndicatorにISO646に既定の方式で符号化された4文字の文字列"IDEX"が記述され、次に続くデータ種類がインデックスファイルにおける拡張データであることが示される。
【0156】
フィールドTypeIndicatorに続けて32ビットのデータ長を有する領域reservedが配され、その次に、32ビットのデータ長を有するフィールドTableOfPlayListStartAddressが配される。フィールドTableOfPlayListStartAddressは、ブロックblkTableOfPlayList()の、このブロックblkIndexExtensionData()先頭を基準とした開始アドレスが示される。
【0157】
フィールドTableOfPlayListStartAddressの次に、32ビットのデータ長を有するフィールドMakersPrivateDataStartAddressが配されブロックblkMakersPrivateData()のこのブロックblkIndexExtensionData()先頭を基準とした開始アドレスが示され、192ビットのデータ長を有する領域reservedを介してブロックblkUIAppInfoAVCHD()が配される。16ビットのデータ長を有するパディングワードpadding_wordが値N1で示される回数だけ回繰り返され、次に、ブロックblkTableOfPlayLists()が配される。さらに続けて、16ビットのデータ長を有するパディングワードpadding_wordが値N2で示される回数だけ繰り返され、次にブロックblkMakersPrivateData()が配される。このブロックblkMakersPrivateData()の後に、16ビットのデータ長を有するパディングワードpadding_wordが値N3で示される回数だけ繰り返される。
【0158】
なお、ブロックblkUIAppInfoAVCHD()およびブロックblkMakersPrivateData()は、この発明と関連性が薄いので、説明を省略する。
【0159】
図29は、上述したブロックblkTableOfPlayLists()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkTableOfPlayLists()の最後のバイトまでのデータ長をバイト数で示す。フィールドLengthに続けて、プレイバックタイトルを再生するためのプレイリストに関する情報が記述されるブロックblkFirstPlaybackTitlePlayLists()と、メニュータイトルに関する情報が記述されるブロックblkMenuTitlePlayLists()とが配される。これらブロックblkFirstPlaybackTitlePlayLists()およびブロックblkMenuTitlePlayLists()は、この発明と関連性が薄いので、説明を省略する。
【0160】
次に、16ビットのデータ長を有するフィールドNumberOfTitlePlayListPairが配される。フィールドNumberOfTitlePlayListPairは、プレイバックタイトルおよびメニュータイトル以外のタイトルを再生するためのプレイリストの数が記述される。次のforループ文に従い、フィールドNumberOfTitlePlayListPairで示される数だけ、ブロックblkMovieTitlePlayListPair()が記述される。ブロックblkMovieTitlePlayListPair()は、フィールドPlayListFileName、フィールドPlayListAttributeおよびフィールドRefToTitleIDを含む。すなわち、ブロックblkMovieTitlePlayListPair()は、このforループ文で示される[i]番目のプレイリストについて、当該プレイリストのファイル名、当該プレイリストに付与された属性、ならびに、当該プレイリストの参照タイトルIDからなるプレイリストの情報を構造化したものである。
【0161】
このforループ文による並び順は、記録順とされる。すなわち、1のプレイリストが追加されると、フィールドNumberOfTitlePlayListPairの値が"1"だけインクリメントされ、既存のプレイリストの情報の後ろに、追加されたプレイリストの情報が追記される。
【0162】
フィールドPlayListFileNameは、40ビット(5バイト)のデータ長を有し、プレイリストのファイル名がISO646に規定された符号化方式で符号化されて記述される。フィールドPlayListFileNameの次に、6ビットのデータ長を有する領域reservedを介してフィールドPlayListAttributeが配される。フィールドPlayListAttributeは、2ビットのデータ長を有し、当該プレイリストに付与された属性を示す。プレイリストは、その成因に基づき、クリップの生成と共に生成されるプレイリストに対応する第1の種類と、既存のタイトルあるいはプレイリストの一部または全部を用いて作成されるプレイリストに対応する第2の種類と、メニューを再生するために用いる第3の種類との3種類に分けられ、各プレイリストには、プレイリストの種類に応じて、それぞれ対応する属性「Real」(第1の種類)、属性「Virtual」(第2の種類)および属性「Menu」(第3の種類)が付与される。
【0163】
なお、以下では適宜、属性「Real」が付与されたプレイリストをリアルプレイリスト、属性「Virtual」が付与されたプレイリストをバーチャルプレイリスト、属性「Menu」を付与されたプレイリストをメニュープレイリストと呼ぶ。
【0164】
フィールドRefToTitleIdは、同一ループ内のフィールドPlayListFileNameに示されるプレイリストが作成時に属するタイトルのID(番号)が記述される。より具体的な例としては、インデックスファイル"index.bdmv"内のブロックblkIndexes()における、対応する値title_idが記述される。なお、当該プレイリストがファーストプレイバックタイトルのみから再生される場合、フィールドRefToTitleIdの値は、第1の固定値、例えば"0xFFFF"とされる。また、当該プレイリストがメニュータイトルのみから再生される場合は、フィールドRefToTitleIdの値は、第2の固定値、例えば"0xFFFE"とされる。
【0165】
次に、仮想プレーヤについて、概略的に説明する。上述したようなデータ構造を有するディスクがプレーヤに装填されると、プレーヤは、ディスクから読み出されたムービーオブジェクトなどに記述されたコマンドを、プレーヤ内部のハードウェアを制御するための固有のコマンドに変換する必要がある。プレーヤは、このような変換を行うためのソフトウェアを、プレーヤに内蔵されるROM(Read Only Memory)に予め記憶している。このソフトウェアは、ディスクとプレーヤを仲介してプレーヤにAVCHDフォーマットの規定に従った動作をさせることから、仮想プレーヤと称される。
【0166】
図30は、この仮想プレーヤの動作を概略的に示す。図30Aは、ディスクのローディング時の動作の例を示す。ディスクがプレーヤに装填されディスクに対するイニシャルアクセスがなされると(ステップS30)、1のディスクにおいて共有的に用いられる共有パラメータが記憶されるレジスタが初期化される(ステップS31)。そして、次のステップS32で、ムービーオブジェクトなどに記述されたプログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク装填時のように、ディスクの再生が初めて行われることをいう。
【0167】
図30Bは、プレーヤが停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。最初の停止状態(ステップS40)に対して、ユーザにより、例えばリモートコントロールコマンダなどを用いて再生が指示される(UO:User Operation)。再生が指示されると、先ず、レジスタすなわち共通パラメータが初期化され(ステップS41)、次のステップS42で、ムービーオブジェクト実行フェイズに移行する。
【0168】
ムービーオブジェクトの実行フェイズにおけるプレイリストの再生について、図31を用いて説明する。UOなどにより、タイトル番号#1のコンテンツを再生開始する指示があった場合について考える。プレーヤは、コンテンツの再生開始指示に応じて、上述した図2に示されるインデックステーブル(Index Table)を参照し、タイトル#1のコンテンツ再生に対応するオブジェクトの番号を取得する。例えばタイトル#1のコンテンツ再生を実現するオブジェクトの番号が#1であったとすると、プレーヤは、ムービーオブジェクト#1の実行を開始する。
【0169】
この図31の例では、ムービーオブジェクト#1に記述されたプログラムは2行からなり、1行目のコマンドが"Play PlayList(1)"であるとすると、プレーヤは、プレイリスト#1の再生を開始する。プレイリスト#1は、1以上のプレイアイテムから構成され、プレイアイテムが順次再生される。プレイリスト#1中のプレイアイテムの再生が終了すると、ムービーオブジェクト#1の実行に戻り、2行目のコマンドが実行される。図31の例では、2行目のコマンドが"jump MenuTitle"であって、このコマンドが実行されインデックステーブルに記述されたメニュータイトル(MenuTitle)を実現するムービーオブジェクトの実行が開始される。
【0170】
次に、この発明の実施の一形態について説明する。この発明では、ビデオデータおよびオーディオデータの記録に際し、ビデオデータおよびオーディオデータが格納されるファイルの情報とシステム上の所定の制約とを比較し、比較結果に基づき、記録の継続に際して当該ファイルを分割するか否かを判断する。例えば、当該ファイルの情報がシステム上の所定の制約を超えると判断されたら、生成中のファイルをクローズすると共に新規にファイルを作成し、継続的に記録されるビデオデータおよびオーディオデータをこの新規に作成されたファイルに格納する。
【0171】
ビデオデータおよびオーディオデータの格納されるファイルがシステム上の制約に基づき自動的に分割されるため、ユーザは、記録に際してシステム上の制約を意識することなく連続的な記録を行うことができる。
【0172】
また、クローズされたファイルの管理情報に対して、新規に作成されたファイルを示す情報を格納すると共に、クローズされたファイルに格納されたビデオデータおよびオーディオデータと、新規に作成されたファイルに格納されたビデオデータおよびオーディオデータとがシームレスに再生されることを示す識別情報を格納する。
【0173】
これによれば、再生時に、連続的に記録されたビデオデータおよびオーディオデータが格納されるファイルがシステム上の制約により分割されていても、それを意識することなく連続的な再生が可能となる。
【0174】
システム上の制約の例としては、最大ファイルサイズが考えられる。この発明が適用された記録機で記録されたビデオデータおよびオーディオデータが格納されたファイルを、コンピュータ装置などの外部機器で扱う場合、外部機器が用いるファイルシステムにおける最大ファイルサイズの制限に基づき、記録機で作成可能なファイルサイズに制限を設ける。より多くの機器で対応可能なファイルシステムの一例として、FAT16が挙げられる。FAT16では、1ファイルの最大ファイルサイズが2GBとされている。例えば、記録機のシステムにおいても、これに対応して1ファイルの最大サイズを決め、記録されるビデオデータおよびオーディオデータが格納されるクリップAVストリームファイルのサイズを監視し、ファイルサイズが2GBを超えるときに、現在記録中のファイルをクローズして新規にファイルを作成し、新規に作成されたファイルに対してビデオデータおよびオーディオデータを記録する。
【0175】
システム上の制約の他の例として、アドレス情報と時刻情報との対応関係を示す情報の最大値が考えられる。すなわち、AVCHDにおいては、図19〜図23を用いて説明したEPエントリに関して、1のクリップインフォメーションファイルに格納可能なEPエントリ数に上限が設けられている。そこで、ビデオデータおよびオーディオデータの記録中にこのEPエントリ数を監視し、EPエントリ数が1のクリップインフォメーションファイルに格納可能な最大値を超えるときに、現在記録中のファイルをクローズして新規にファイルを作成する。
【0176】
図32は、この発明の実施の一形態に適用可能な記録装置の一例の構成を概略的に示す。この記録装置は、入力されたディジタルビデオデータおよびディジタルオーディオデータを、所定の方式で圧縮符号化および多重化したAVストリームを記録媒体に記録するようにしている。
【0177】
この図32に例示される記録装置は、外部から入力されるビデオデータおよびオーディオデータを記録媒体に記録する、単独の記録装置として用いることもできるし、光学系や撮像素子などを備えたカメラブロックと組み合わせ、撮像した撮像信号に基づくビデオデータを記録媒体に記録する、ビデオカメラ装置の記録ブロックとして用いることもできる。
【0178】
適用可能な圧縮符号化や多重化の方式としては、様々に考えられる。例えば、H.264|AVCに規定される方式を、この発明の実施の一形態の圧縮符号化として適用することができる。これに限らず、MPEG2方式に基づき圧縮符号化を行うようにしてもよい。また、多重化方式は、例えばMPEG2システムズを適用することができる。以下では、ビデオデータの圧縮符号化をH.264|AVCに規定される方式に準じて行い、ビデオデータおよびオーディオデータの多重化を、MPEG2システムズに規定される方式に準じて行うものとして説明する。
【0179】
制御部30は、例えばCPU(Central Processing Unit)、RAM(Random Access Memory)およびROM(Read Only Memory)などからなり(図示しない)、ROMに予め記憶されたプログラムやデータに基づき、RAMをワークメモリとして用いてこの記録装置の記録部10の各部を制御する。なお、制御部30と記録部10の各部とを接続する経路は、繁雑さを避けるために、図32では省略している。
【0180】
制御部30上で動作するプログラムにより、この記録装置で用いられるファイルシステムが提供される。例えば、制御部30は、このファイルシステムに基づき、データが記録媒体20に記録される際の、記録媒体20の物理的なアドレスと当該データが格納されるファイルとの関連付けを行うと共に、各データが格納されるファイルの論理的な管理情報を生成する。上述した図6に示すディレクトリ構造は、ファイルの論理的な管理情報の一例である。新規ファイルの作成やファイルオープン、クローズは、ファイルシステム基づき制御部30により制御される。
【0181】
UI(User Interface)部31は、この記録装置の動作をユーザが操作するための操作子が所定に設けられ、操作子に対する操作に応じた制御信号を出力する。この制御信号は、制御部30に供給される。制御部30は、ユーザ操作に応じてUI部31から供給された制御信号に基づきなされるプログラムの処理により、記録部10の各部の動作を制御する。例えば、UI部31に対してなされた操作に応じて、記録装置による記録動作の開始および停止の動作が制御部30により制御される。
【0182】
ベースバンドのディジタルビデオデータが端子40から入力される。また、当該ディジタルビデオデータに伴い、ベースバンドのディジタルオーディオデータが端子41から入力される。
【0183】
ディジタルビデオデータは端子40から記録部10に入力され、ビデオエンコーダ11に供給される。ビデオエンコーダ11は、供給されたディジタルビデオデータを、所定の方式で以て圧縮符号化する。H.264|AVCに規定される方式に準じて圧縮符号化がなされるこの例では、例えば、DCT(Discrete Cosine Transform)と画面内予測とによりフレーム内圧縮を行うと共に、動きベクトルを用いたフレーム間圧縮を行い、さらにエントロピー符号化を行い圧縮効率を高める。ビデオエンコーダ11で圧縮符号化されたディジタルビデオデータは、H.264|AVCのエレメンタリストリーム(ES)として、マルチプレクサ(MUX)13に供給される。
【0184】
ディジタルオーディオデータは端子41から記録部10に入力され、オーディオエンコーダ12に供給される。オーディオエンコーダ12は、供給されたディジタルオーディオデータを所定の圧縮符号化方式、例えばAC3(Audio Code number 3)方式により圧縮符号化する。オーディオデータの圧縮符号化方式は、AC3方式に限られるものではない。オーディオデータを圧縮符号化せず、ベースバンドのデータのまま用いることも考えられる。圧縮符号化されたディジタルオーディオデータは、マルチプレクサ13に供給される。
【0185】
マルチプレクサ13は、それぞれ圧縮符号化されて供給されたディジタルビデオデータおよびディジタルオーディオデータを所定の方式で多重化し、1本のデータストリームとして出力する。MPEG2システムズに準じて多重化が行われるこの例では、MPEG2のトランスポートストリームを用いて、供給された圧縮ビデオデータおよび圧縮オーディオデータを時分割で多重化する。例えば、マルチプレクサ13は、バッファメモリを有し、供給された圧縮ビデオデータおよび圧縮オーディオデータをバッファメモリに溜め込む。
【0186】
なお、H.264|AVC方式においては、ビデオデータの符号化を、フレーム間相関を利用したフレーム間圧縮を用いて行い、デコード開始可能な位置に基づくデコード単位で符号化がなされる。このデコード単位は、例えばGOPである。クリップAVストリームファイルに格納されるビデオデータも、このデコード単位の境界に合わせる必要があり、マルチプレクサ13は、このデコード単位の境界に合わせてTSパケットを作成する。
【0187】
バッファメモリに溜め込まれた圧縮ビデオデータは、所定サイズ毎に分割されヘッダが付加されて、PES(Packetized Elementary Stream)パケット化される。圧縮オーディオデータも同様に、所定サイズ毎に分割されヘッダが付加されてPESパケット化される。ヘッダには、パケットに格納されるデータの再生時刻を示すPTSや復号時刻を示すDTS(Decoding Time Stamp)といった、MPEG2システムズに規定される所定の情報が格納される。PESパケットは、さらに分割されてトランスポートパケット(TSパケット)のペイロードに詰め込まれる。TSパケットのヘッダには、ペイロードに詰め込まれたデータを識別するためのPID(Packet Identification)が格納される。
【0188】
マルチプレクサ13は、TSパケットに対して、さらに所定のサイズのヘッダを付加して出力する。この、TSパケットに対して所定のヘッダを付加したパケットを、ソースパケットと呼ぶ。ソースパケットのそれぞれには、ソースパケットのそれぞれを識別すると共に、ソースパケットの順番を示すソースパケット番号が付与される。ソースパケット番号は、例えばTSパケットに対して付加されるヘッダに格納することができる。マルチプレクサ13から出力されたソースパケットは、ストリームバッファ14に一旦溜め込まれる。
【0189】
記録制御部15は、記録媒体20に対するデータの記録を制御する。記録媒体20としては、例えば記録可能なタイプのDVD(Digital Versatile Disc)を用いることができる。これに限らず、記録媒体20としてハードディスクドライブを用いてもよいし、半導体メモリを記録媒体20に適用することも可能である。また、記録媒体20として、より大容量を実現したBlu−ray Disc(ブルーレイディスク:登録商標)を適用することも考えられる。
【0190】
記録制御部15は、ストリームバッファ14に溜め込まれたデータ量を監視し、ストリームバッファ14に所定量以上のデータが溜め込まれると、ストリームバッファ14から記録媒体20の記録単位分のデータを読み出して記録媒体20に書き込む。データは、ファイルシステムに基づく制御部30の制御により、所定のファイルに対してソースパケット単位で順次追記されるようにして記録媒体20に書き込まれる。
【0191】
管理情報処理部16は、例えばCPU、ワークメモリとしてのRAMおよびプログラム所定のデータが予め記憶されるROMからなる(図示しない)。これに限らず、管理情報処理部16は、例えば制御部30におけるプログラム処理で管理情報処理部16の機能を実現することも可能である。この場合、例えば制御部30の有するRAMが揮発性メモリ17として用いられると共に、不揮発性メモリ18が制御部30に接続される。
【0192】
管理情報処理部16は、記録データに基づき、揮発性メモリ17をワークメモリとして用いて、上述したインデックスファイル"index.bdmv"、ムービーオブジェクトファイル"MovieObject.bdmv"、プレイリストファイル"xxxxx.mpls"およびクリップインフォメーションファイル"zzzzz.clpi"に格納するための情報を生成する。生成された情報は、所定のタイミングで記録媒体20に書き込まれる。
【0193】
一例として、管理情報処理部16は、マルチプレクサ13から記録データの時間情報を取得すると共に、記録制御部15から記録データの記録媒体20に対するアドレス情報を取得し、取得されたこれら時間情報およびアドレス情報に基づきEPエントリ情報が生成される。また、UI部31に対する記録開始、記録終了の操作に応じて制御部30から出力される制御信号と、マルチプレクサ13および記録制御部15からの記録データに関する情報とに基づき、プレイリストファイル"xxxxx.mpls"の生成または更新、クリップインフォメーションファイル"zzzzz.clpi"の生成などが行われる。さらに、記録媒体20に対して新規に記録が行われる際には、インデックスファイル"index.bdmv"やムービーオブジェクトファイル"MovieObject.bdmv"の生成または更新が行われる。
【0194】
次に、この発明の実施の一形態によるクリップの記録制御について説明する。図33は、この発明の実施の一形態による一例の記録方法を示すフローチャートである。なお、この実施の一形態では、新規に記録されるクリップの情報は、既に存在するプレイリストに対して順次、追記されるようになっている。また、このフローチャートによる処理に先立って、記録媒体20には、プレイリストファイル、インデックスファイルおよびムービーオブジェクトファイルが既に記録されているものとする。
【0195】
ステップS50で記録開始操作が行われると、次のステップS51で、制御部30の制御により、新規にクリップAVストリームファイルが作成される。例えば、ファイルシステムにより、新規に作成するクリップAVストリームファイルの論理構造が設定されると共に、記録媒体20上の物理アドレスが関連付けられる。次のステップS52で、ステップS51で作成されたクリップAVストリームファイルに対するクリップAVストリームの記録が開始される。
【0196】
記録開始操作は、例えば次のようになされる。例えば、UI部31に、記録開始を指示する記録開始スイッチと、記録停止を指示する記録停止スイッチとが設けられる。ステップS50では、ユーザによって記録開始スイッチが操作される。この操作に応じて、記録開始を指示する制御信号がUI部31から出力され、制御部30に供給される。制御部30は、この記録開始を指示する制御信号に基づき、記録部10の各部に対し、端子40から入力されるベースバンドのビデオデータと、端子41から入力されるベースバンドのオーディオデータとをクリップAVストリームファイルに記録するように制御する。
【0197】
記録開始に関わる制御部30の制御の一例として、記録停止状態ではビデオエンコーダ11およびオーディオエンコーダ12の動作を停止させておき、記録開始の指示に応じて、これらビデオエンコーダ11およびオーディオエンコーダ12の動作を開始させることが考えられる。これに限らず、マルチプレクサ13やストリームバッファ14、記録制御部15の動作の開始、停止を制御することで、記録開始および停止の制御を行うこともできる。
【0198】
記録開始の制御に応じて、クリップAVストリームが記録媒体20上のクリップAVストリームファイルに記録される(ステップS52)。すなわち、入力されたビデオデータおよびオーディオデータがビデオエンコーダ11およびオーディオエンコーダ12でそれぞれ圧縮符号化され、マルチプレクサ13でパケット化されTSパケットに所定のヘッダが付加されたソースパケットとされてストリームバッファ14に供給される。ストリームバッファ14に所定量以上のソースパケットが溜め込まれたら、記録制御部15によりストリームバッファ14からソースパケットが読み出される。読み出されたソースパケットは、所定にファイル名が付されたクリップAVストリームファイルに関連付けられた記録媒体20上のアドレスに基づき、順次、記録媒体20に記録される。
【0199】
新規に作成されるクリップAVストリームファイルのファイル名は、記録媒体20に既に記録されている他のクリップAVストリームファイルと重複しないファイル名が選ばれる。
【0200】
なお、クリップAVストリームの記録媒体20への記録に伴い、管理情報処理部16により、記録されるデータの再生時間とアドレス(クリップAVストリームファイル内の論理アドレス)との対応関係を示すEPエントリ情報がリアルタイムに生成される。このデータは、上述したクリップインフォメーションファイル"zzzzz.clpi"内のブロックblkEPMap()に格納されるデータとして、揮発性メモリ17に記憶される。当該データのバックアップとして、不揮発性メモリ18にも同一のデータを記憶することもできる。
【0201】
次のステップS53で、現在記録中のクリップAVストリームファイルのファイルサイズが所定サイズ、例えば2GBを超えるか否かが判断される。一例として、制御部30は、現在記録中のクリップAVストリームファイルのファイルサイズを常に監視し、例えばストリームバッファ14から次のソースパケットが読み出されて当該クリップAVストリームファイルに記録されたときに、当該クリップAVストリームファイルのファイルサイズが所定サイズを超えるか否かを判断する。
【0202】
より具体的な例としては、制御部30は、マルチプレクサ13における処理を監視し、マルチプレクサ13から出力されるソースパケットの容量を、クリップAVストリームファイルの先頭に格納されるソースパケットから積算する。この積算値に基づき、次にマルチプレクサ13から出力されるソースパケットでデータ量が所定値を超えるか否かを判断する。
【0203】
なお、上述したように、クリップAVストリームファイルは、デコード開始可能な位置に基づくデコード単位の境界に合わせて記録される。したがって、ステップS53における判断は、実際には、デコード単位で行われる。例えば、制御部30は、ストリームバッファ14から次のデコード単位分のソースパケットが読み出されてクリップAVストリームファイルに記録されたときに、当該クリップAVストリームファイルのファイルサイズが所定サイズを超えるか否かを判断する。
【0204】
ステップS53で、次のソースパケットがクリップAVストリームファイルに記録されたときに、当該クリップAVストリームファイルのファイルサイズが所定サイズを超えると判断されれば、処理は後述するステップS62に移行される。このとき、制御部30は、例えば、クリップAVストリームファイルに対して記録されることによりファイルサイズが所定サイズを超えるとされた当該次のソースパケットのソースパケット番号を保持する。
【0205】
一方、ステップS53で、次のソースパケットがクリップAVストリームファイルに記録されたときに、当該クリップAVストリームファイルのファイルサイズが所定サイズを越えないと判断されれば、処理はステップS54に移行され、記録停止操作が行われたか否かが判断される。例えば、ユーザによりUI部31に設けられた記録停止スイッチが操作され、記録が停止されたと判断されれば、処理はステップS55に移行される。一方、記録が停止されていないと判断されれば、処理はステップS52に戻され、クリップAVストリームの記録媒体20への記録が継続される。なお、このステップS53およびステップS54の判断に基づくループ処理は、例えばマルチプレクサ13でソースパケットが出力される毎に行われる。
【0206】
ステップS55では、記録の停止に伴い、ストリームバッファ14に溜め込まれているストリームが全て記録媒体20に書き込まれる。例えば、記録制御部15は、制御部30からの記録停止の命令に応じて、ストリームバッファ14に溜め込まれているストリーム(ソースパケット)を全て読み出し、記録媒体20上の現在記録中のクリップAVストリームファイルに書き込む。そして、次のステップS56で、ファイルシステムにおいて当該クリップAVストリームファイルがクローズされる。
【0207】
なお、記録停止の命令に応じて、例えばビデオエンコーダ11およびオーディオエンコーダ12の動作が停止される。このとき、図13Aを用いて説明した第1のシームレス接続を行うために、例えば、オーディオエンコーダ12の動作がビデオエンコーダ11の動作が停止してから所定時間後に停止されるように制御される。
【0208】
次のステップS57〜ステップS61で、記録媒体20に書き込まれたクリップAVストリームファイルに関するクリップインフォメーションファイルが生成されると共に、プレイリストファイルの更新がなされる。
【0209】
先ず、ステップS57で、管理情報処理部16により、ステップS56でクローズされたクリップAVストリームファイルに対応するクリップインフォメーションファイル"zzzzz.clpi"が生成される。ファイル名は、ステップS51で作成されたクリップAVストリームファイルのファイル名と対応するファイル名とされ、当該クリップAVストリームファイルのファイル名が"zzzzz.m2ts"であれば、このクリップインフォメーションファイルのファイル名は、拡張子より前の部分が同一のファイル名"zzzzz.clpi"とされる。
【0210】
クリップインフォメーションファイル"zzzzz.clpi"に、図15〜図21に例示した各シンタクスに従い、各フィールドやフラグの値が所定に設定され格納される。一例として、ソースパケットに関する情報や、再生時間(PTS)に関する情報は、管理情報処理部16により、クリップの記録中にマルチプレクサ13から取得された情報に基づき生成される。また、記録媒体20上の記録アドレスに関する情報は、管理情報処理部16により、クリップの記録中に記録制御部15から取得された情報に基づき生成される。システムにより固有の値は、例えば予めROM(図示しない)などに記憶されている情報に基づく。さらに、再生時間とアドレスとの対応関係を示す上述したブロックblkEPMap()の情報が、クリップインフォメーションファイル"zzzzz.clpi"のブロックblkCPI()に格納される。
【0211】
また、ブロックblkClipInfo()内のフラグIsCC5は、ユーザ操作によりクリップの記録が停止された場合、値が"1"(バイナリ値)とされる。それに伴い、ブロックblkClipInfo()内のif文(図16参照)で示されるデータが所定に設定される。
【0212】
クリップインフォメーションファイルの作成が完了したら、処理は次のステップS58に移行する。ステップS58〜ステップS61の処理は、プレイリストファイルに関する処理である。このステップS58〜ステップS61の処理により、既に記録媒体20上に存在するプレイリストファイルに対して、新たに記録されたクリップAVストリームファイル"00002.m2ts"に対応するプレイアイテムが追加される。
【0213】
先ず、ステップS58で、プレイリストファイル内のブロックblkPlayItem()におけるフィールドConnectionConditionの値が"5"に設定され、このクリップAVストリームファイル"00002.m2ts"が次に記録されるクリップAVストリームファイルに対して第1のシームレス接続により接続されることが示される(図12参照)。次にステップS59で、プレイアイテムファイルのフィールドNumberOfPlayItemsの値が"1"だけインクリメントされ、当該プレイリストに対してプレイアイテムが1つ、追加されることが示される(図11参照)。
【0214】
次のステップS60で、ブロックblkPlayItem()におけるフィールドClipInformationFileName、フィールドINTimeおよびフィールドOUTTimeがそれぞれ設定され、クリップの記録に伴い追加されるブロックblkPlayItem()が作成される。フィールドClipInformationFileNameは、上述のステップS55で作成されたクリップインフォメーションファイルのファイル名"zzzzz.clpi"が格納される。実際には、クリップインフォメーションファイルの拡張子は固定的とされているので、ピリオドの前の部分"zzzzz"が格納される。フィールドINTimeおよびフィールドOUTTimeは、対応するクリップAVストリームファイル"00002.m2ts"に格納されるビデオストリームの先頭および終端の時間を示す情報であって、例えばクリップインフォメーションファイル"zzzzz.clpi"内のブロックblkCPI()におけるブロックblkEPMap()の情報に基づく。
【0215】
次のステップS61で、プレイリストファイル内のブロックblkPlayListMark()におけるフィールドNumberOfPlayListMarksの値が"1"だけインクリメントされ、それに伴いforループ文内に追加されたフィールドMarkTimeStampの値が、上述のステップS60で設定された、ブロックblkPlayItem()におけるフィールドINTimeの値に設定される。すなわち、新たに記録されたクリップAVストリームの先頭に対応する時刻に、プレイリストマークが打たれる。
【0216】
このようにして、新たに記録されたクリップAVストリームファイル"zzzzz.m2ts"に対して、クリップインフォメーションファイル"zzzzz.clpi"が作成されると共に、既存のプレイリストファイルが更新される。
【0217】
記録が停止された状態から、UI部31に対する記録開始操作を行うことで、再びステップS50からの処理が開始され、新たなクリップAVストリームファイルの記録媒体20への記録と、クリップAVストリームファイルのファイルサイズに基づく判断、対応するクリップインフォメーションファイルの作成、作成されたクリップインフォメーションファイルを参照するプレイアイテムの生成、ならびに、生成されたプレイアイテムのプレイリストへの追加処理が同様にして行われる。
【0218】
なお、上述したステップS55によるストリームバッファ14に溜め込まれたデータの記録媒体20への書き込み処理は、ステップS61の処理の後に行うようにしてもよい。
【0219】
上述のステップS53の判断に基づき、この発明の実施の一形態による、システム都合に基づきクリップAVストリームファイルが分割された際の処理について説明する。上述のステップS53で、次のソースパケットがクリップAVストリームファイルに記録されたときに、当該クリップAVストリームファイルのファイルサイズが所定サイズを越えると判断された場合、処理はステップS62に移行される。ステップS62では、ストリームバッファに溜め込まれたストリームがクリップAVストリームファイル"zzzzz.m2ts"に書き出される。
【0220】
このとき、ステップS53の判断の際に制御部30に保持されたソースパケット番号に基づき、クリップAVストリームファイル"zzzzz.m2ts"に対して記録されることによりファイルサイズが所定サイズを超えるとされた当該次のソースパケットまで、すなわち、当該次のソースパケットより先にストリームバッファに溜め込まれたストリームが、クリップAVストリームファイル"zzzzz.m2ts"に対して書き出される。
【0221】
次のステップS63で、ファイルシステムにより、現在記録中のクリップAVストリームファイルがクローズされる。ファイルがクローズされると、ステップS64で、管理情報処理部16により、ステップS51で作成されたクリップAVストリームファイルに対応するクリップインフォメーションファイル"zzzzz.clpi"が、ステップS57の処理で説明したのと同様にして、所定に生成される。
【0222】
次のステップS65で、プレイリストファイル内のブロックblkPlayItem()におけるフィールドConnectionConditionの値が"6"に設定され、このクリップAVストリームファイル"zzzzz.m2ts"が次に記録されるクリップAVストリームファイルに対して第2のシームレス接続で接続されることが示される(図12参照)。
【0223】
ステップS66で、プレイリストファイルのフィールドNumberOfPlayItemsの値が"1"だけインクリメントされ、当該プレイリストに対してプレイアイテムが1つ、追加されることが示される(図11参照)。そして、ステップS67で、ブロックblkPlayItem()におけるフィールドClipInformationFileNameが設定されると共に、クリップインフォメーションファイル内のブロックblkCPI()におけるブロックblkEPMap()の情報に基づきフィールドINTimeおよびフィールドOUTTimeがそれぞれ設定され、クリップの記録に伴い追加されるブロックblkPlayItem()が作成される。
【0224】
次のステップS68で、プレイリストファイル内のブロックblkPlayListMark()におけるフィールドNumberOfPlayListMarksの値が"1"だけインクリメントされ、それに伴いforループ文内に追加されたフィールドMarkTimeStampの値が、上述のステップS67で設定された、ブロックblkPlayItem()におけるフィールドINTimeの値に設定される。すなわち、新たに記録されたクリップの先頭に、プレイリストマークが打たれる。
【0225】
ステップS68の処理が終了されると、処理はステップS51に戻され、新規にクリップAVストリームファイルが作成される。このステップS53の判断の後のステップS51で作成されたクリップAVストリームファイルは、当該ステップS53の判断により、次のソースパケットがファイルに格納されると当該ファイルのファイルサイズが所定サイズを超えるとされた、当該次のソースパケットから順次、ソースパケットが格納されるファイルである。
【0226】
ここで、このとき作成されるクリップAVストリームファイルと、一つ前に作成されたクリップAVストリームファイルとは、ビデオデータおよびオーディオデータがそれぞれ連続的となるようにされる。例えばオーディオデータに関しては、一つ前に作成されたクリップAVストリームファイルに記録されたオーディオデータの後端の時刻と、ここで作成されるクリップAVストリームファイルに記録されるオーディオデータの先頭の時刻とが対応するように、記録が制御される。例えば、制御部30によりオーディオエンコーダ12、マルチプレクサ13およびストリームバッファ14を所定に制御することで、このような記録制御が行われる。
【0227】
なお、上述では、ステップS68の処理後に処理をステップS51に戻して新規クリップAVストリームファイルを作成するようにしているが、これはこの例に限定されない。すなわち、ステップS53の判断により、システム都合に基づきクリップAVストリームファイルが分割された場合、分割前後のクリップAVストリームファイルが第2のシームレス接続で接続されるので、ステップS63でファイルがクローズされてから新規のクリップAVストリームファイルが作成されるまでの時間は、できるだけ短い方が好ましい。
【0228】
そのため、例えば、ステップS63でクリップAVストリームファイルをクローズした直後に処理をステップS51に戻し、新規にクリップAVストリームファイルを作成することが考えられる。この場合、ステップS64〜ステップS68の処理は、新規のクリップAVストリームファイルの作成処理などと並列的に行うようにする。プレイリストファイルや、ステップS63で作成されるクリップインフォメーションファイルは、揮発性メモリ17および/または不揮発性メモリ18に一時的に保持される。
【0229】
また、上述したステップS61およびステップS68によるプレイリストマーク設定の処理は、例えば、ステップS50の記録開始操作に伴い新規に作成されたクリップAVストリームファイルに対する、システム都合に基づく分割時において、最初の分割時以外は、省略することができる。一例として、第2のシームレス接続で接続されるクリップAVストリームファイルの先頭に対応するプレイリストマークを省略することが考えられる。これに限らず、記録停止操作時に、当該記録停止操作に対応する記録開始操作により記録が開始された時刻に対して、プレイリストマークを設定するようにしてもよい。
【0230】
図34は、上述の図33の手順に従い作成された一例のファイル構造を示す。一例として、図35Aに示されるような時間経過で、記録がなされたものとする。すなわち、図35Aを参照し、記録媒体20を用いた記録に対する記録開始操作が時刻ST1に行われ、対応する記録停止操作が時刻ED1に行われ、記録区間400の記録がなされる。同じ記録媒体20に対して、時刻ED1より後の時刻ST2に再び記録開始操作が行われ、時刻ED2に記録停止操作が行われ、記録区間401の記録がなされる。同様に、同じ記録媒体20に対して、時刻ED2より後の時刻ST3にさらに再び記録開始操作が行われ、時刻ED3に記録停止操作が行われ、記録区間402の記録がなされる。
【0231】
ここで、クリップAVストリームファイルに対してファイルサイズの上限として設けられた所定サイズ(例えば2GB)に相当する記録時間が、例えば図35Bに示される長さで表されるものとする。この場合、記録区間400は、記録開始時刻ST1から時点aまでで、所定サイズの2GBに対応する時間の記録が行われ、さらに時点aから時点bまでで、所定サイズに対応する時間の記録が、さらに行われている。時点bから記録停止時刻ED1までについては、所定サイズに対応する時間に満たない記録時間となっている。
【0232】
一方、記録区間401および記録区間402は、それぞれ、ファイルサイズの上限である2GBに対応する時間に満たない。
【0233】
上述した図33で示した処理を、この図35Aに示される時間経過で記録が行われた場合について、図33のフローチャートおよび図34のファイル構造を参照しながらより具体的に説明する。
【0234】
先ず、時刻ST1における記録開始操作に伴い、ステップS51でクリップAVストリームファイル"00001.m2ts"が作成される。作成されたクリップAVストリームファイル"00001.m2ts"に対してトリームが記録されていき、例えばソースパケット単位で、クリップAVストリームファイル"00001.m2ts"のファイルサイズが制御部30にチェックされ、ファイルサイズが所定サイズを超えるか否かが判断される。実際には、上述したように、マルチプレクサ13から出力されるソースパケットのデータ量が積算された結果に基づき、判断がなされる。図35Aの例では、時点aの直前で、次のソースパケットが記録されるとクリップAVストリームファイル"00001.m2ts"のファイルサイズが所定サイズを越える、と判断されることになる。
【0235】
処理はステップS62に移行され、ストリームバッファに溜め込まれたストリームが所定に読み出され、クリップAVストリームファイル"00001.m2ts"に対して書き込まれる。そして、ステップS63でクリップAVストリームファイル"00001.m2ts"がクローズされ、対応するクリップインフォメーションファイル"00001.clpi"が作成される(ステップS64)。なお、上述したように、クリップAVストリームファイル"00001.m2ts"がクローズされたら、ステップS64からの処理と並列的に、処理をステップS51に戻して次のクリップAVストリームファイルの作成を行ってもよい。
【0236】
次のステップS65から、クリップAVストリームファイル"00001.m2ts"を参照するプレイアイテム#1の作成およびプレイリスト#1の更新がなされる。先ず、プレイアイテム#1内のフィールドConnectConditionの値が、第2のシームレス接続を示す値"6"に設定され(ステップS65)、クリップインフォメーションファイル"00001.clpi"に基づき、例えば時刻ST1および時刻aをそれぞれフィールドINTimeおよびOUTTimeとしたプレイアイテム#1が所定に作成される(ステップS66)。そして、このプレイアイテム#1がプレイリスト#1に対して記述される。さらに、フィールドMarkTimeStampの値をフィールドINTimeの値すなわち時刻ST1とされ、プレイリストマークMark#1が設定される。
【0237】
処理はステップS51に戻され、時刻aからのストリームを記録するために、新規にクリップAVストリームファイル"00002.m2ts"が作成される。このクリップAVストリームファイル"00002.m2ts"にストリームが記録される(ステップS52)。
【0238】
ここで、上述したように、一つ前に作成され記録されたクリップAVストリームファイル"00001.m2ts"に対応するプレイアイテム#1において、フィールドConnectionConditionの値が"6"に設定され、第2のシームレス接続が指定されている。そこで、一つ前に記録されたクリップAVストリームファイル"00001.m2ts"に記録されたオーディオデータと、ここで作成されるクリップAVストリームファイル"00002.m2ts"に記録されたオーディオデータとが連続的に再生されるように、記録制御がなされる。例えば、クリップAVストリームファイル"00001.m2ts"に記録されたオーディオデータの後端の時刻と、クリップAVストリームファイル"00002.m2ts"の先頭の時刻とが対応するように、記録制御がなされる。
【0239】
次に、ステップS53でクリップAVストリームファイル"00002.m2ts"のファイルサイズが所定サイズを超えるか否かが判断される。図35Aの例では、時点bの直前で、次のソースパケットが記録されるとクリップAVストリームファイル"00002.m2ts"のファイルサイズが所定サイズを越える、と判断されることになる。すると、処理はステップS62に移行し、上述と同様にして、ストリームバッファに溜め込まれたストリームがクリップAVストリームファイル"00002.m2ts"に対して書き込まれ(ステップS62)て当該クリップAVストリームファイル"00002.m2ts"がクローズされる(ステップS63)。そして、当該クリップAVストリームファイル"00002.m2ts"に対応するクリップインフォメーションファイル"00002.clpi"が作成される(ステップS64)。
【0240】
次に、クリップインフォメーションファイル"00002.clpi"に対応するプレイアイテム#2のフィールドConnectionConditionが、第2のシームレス接続を示す値"6"に設定され(ステップS65)、次のステップS66で、時刻aおよび時刻bをそれぞれフィールドINTimeおよびフィールドOUTTimeとしたプレイアイテム#2が所定に作成され、プレイリスト#1に対して追記される。そして、ステップS68で、フィールドINTimeの値すなわち時刻aを示すプレイリストマークが設定される。なお、ここでのプレイリストマーク設定の処理は、省略可能である。
【0241】
処理は再びステップS51に戻され、時刻bからのストリームを記録するために、新規にクリップAVストリームファイル"00003.m2ts"が作成される。このクリップAVストリームファイル"00003.m2ts"にストリームが記録される(ステップS52)。
【0242】
ここで、上述したように、一つ前に作成され記録されたクリップAVストリームファイル"00001.m2ts"に対応するプレイアイテム#1において、フィールドConnectionConditionの値が"6"に設定され、第2のシームレス接続が指定されている。そこで、上述と同様に、例えば、クリップAVストリームファイル"00002.m2ts"に記録されたオーディオデータの後端の時刻と、クリップAVストリームファイル"00003.m2ts"の先頭の時刻とが対応するように、記録制御がなされる。
【0243】
次に、ステップS53で、クリップAVストリームファイル"00003.m2ts"のファイルサイズが所定サイズを超えるか否かが判断される。図35Aの例では、クリップAVストリームファイル"00003.m2ts"のファイルサイズが、ファイルサイズの上限である2GBを超える前に、時刻ED1において記録停止操作がなされている。したがって、ステップS54の判断に基づき、処理がステップS55に移行される。ステップS55で、ストリームバッファに溜め込まれたストリームがクリップAVストリームファイル"00003.m2ts"に記録され、ステップS56で当該AVストリームファイル"00003.m2ts"がクローズされ、ステップS57で対応するクリップインフォメーションファイル"00003.clpi"が作成される。
【0244】
次に、当該クリップインフォメーションファイル"00003.clpi"を参照するプレイアイテム#3のフィールドConnectionConditionが、第1のシームレス接続を示す値"5"に設定される(ステップS58)。そして、プレイアイテム#3が所定に作成され、当該プレイアイテム#3がプレイリストファイル#1に追記記録される(ステップS59、ステップS60)。さらに、プレイリストファイル#1に対し、プレイアイテム#3のフィールドINTimeに対応する時刻にプレイリストマークを打つことができる(ステップS61)。なお、ここでのプレイリストマーク設定の処理は、省略可能である。
【0245】
時刻ED1で記録停止操作がなされた後に、時刻ST2で再び記録開始操作がなされると(ステップS50)、ステップS51で新規にクリップAVストリームファイル"00004.m2ts"が作成され、ストリームが当該クリップAVストリームファイル"00004.m2ts"に記録される(ステップS52)。図35Aの例では、クリップAVストリームファイル"00004.m2ts"のファイルサイズが所定サイズを超える前に、ED2において記録停止操作がなされている。したがって、ステップS54の判断に基づき、処理がステップS55に移行される。
【0246】
ステップS55で、ストリームバッファに溜め込まれたストリームがクリップAVストリームファイル"00004.m2ts"に記録され、ステップS56で当該AVストリームファイル"00004.m2ts"がクローズされ、ステップS57で対応するクリップインフォメーションファイル"00004.clpi"が作成される。ステップS58で。当該クリップインフォメーションファイル"00004.clpi"を参照するプレイアイテム#4のフィールドConnectionConditionの値が、第1のシームレス接続を示す値"5"に設定される。そして、プレイアイテム#4が所定に作成され、当該プレイアイテム#4がプレイリスト#1に追記記録される(ステップS59、ステップS60)。さらに、プレイリスト#1に対し、プレイアイテム#4のフィールドINTimeに対応する時刻にプレイリストマークMark#2が設定される(ステップS61)。
【0247】
なお、図35Aにおける次の記録開始時刻ST3から記録停止時刻ED3による処理は、上述の記録開始時刻ST2から記録停止時刻ED2による処理と同等なので、繁雑さを避けるために省略する。
【0248】
なお、最初のクリップAVストリームファイル"00001.m2ts"の記録に伴い、プレイリスト#1を呼び出すムービーオブジェクト#1が記述されるムービーオブジェクトファイルと、ムービーオブジェクト#1をタイトル#1として選択および再生させるためのインデックスファイルを作成するようにできる。ムービーオブジェクトファイルおよびインデックスファイルは、テンプレートを予め作成しておき、それを更新するようにもできる。これらムービーオブジェクトファイルおよびインデックスファイルの作成については、この発明の主旨と関連性が薄いので、詳細な説明を省略する。
【0249】
図34および図35Aを用いて説明したようにしてクリップAVストリームファイルが記録された記録媒体20の一例の再生について、概略的に説明する。なお、ここでは、記録媒体20は、記録可能なタイプのDVDであるものとする。記録媒体20が再生装置に装填されると、インデックスファイルが読み込まれ、さらにムービーオブジェクトファイルが読み込まれる。インデックスファイルに対してタイトル#1の再生が指示されると、ムービーオブジェクトファイル内の対応するムービーオブジェクト#1が参照され、プレイリスト#1が記述されるプレイリストファイルが記録媒体20から読み込まれる。
【0250】
プレイリスト#1に従い、プレイアイテム#1、プレイアイテム#2、プレイアイテム#3、プレイアイテム#4、・・・の順に再生がなされる。プレイアイテム#1からクリップインフォメーションファイル"00001.clpi"が参照されて、クリップAVストリームファイル"00001.m2ts"が再生され、プレイリスト#1の記述に従い次にプレイアイテム#2からクリップインフォメーションファイル"00002.clpi"が参照され、クリップAVストリームファイル"00002.m2ts"が再生される。
【0251】
プレイアイテム#1のフィールドConnectionCoditionの値が"6"とされ第2のシームレス接続が指定されているため、クリップAVストリームファイル"00001.m2ts"とクリップAVストリームファイル"00002.m2ts"とは、シームレスに接続されて再生される。このとき、オーディオデータは、クリップAVストリームファイル"00001.m2ts"の後端の時刻と、クリップAVストリームファイル"00002.m2ts"の先頭の時刻とが対応するように記録制御されているため、クリップAVストリームファイル"00001.m2ts"によるオーディオと、クリップAVストリームファイル"00002.m2ts"によるオーディオとは、連続したオーディオとして再生される。
【0252】
プレイリスト#1の記述に従い、プレイアイテム#2の次にプレイアイテム#3による再生がなされる。すなわち、プレイアイテム#3からクリップインフォメーションファイル"00003.clpi"が参照され、クリップAVストリームファイル"00003.m2ts"が再生される。
【0253】
プレイアイテム#2のフィールドConnectionCoditionの値が"6"とされ第2のシームレス接続が指定されているため、クリップAVストリームファイル"00002.m2ts"とクリップAVストリームファイル"00003.m2ts"とは、シームレスに接続されて再生される。この場合でも、オーディオデータは、クリップAVストリームファイル"00002.m2ts"の後端の時刻と、クリップAVストリームファイル"00003.m2ts"の先頭の時刻とが対応するように記録制御されているため、クリップAVストリームファイル"00002.m2ts"によるオーディオと、クリップAVストリームファイル"00003.m2ts"によるオーディオとは、連続したオーディオとして再生される。
【0254】
したがって、連続的な記録による記録区間400(図35A参照)の記録開始時刻ST1から記録停止時刻ED1までの間に、所定サイズで3ファイルに分割されて記録されたクリップAVストリームファイル"00001.m2ts"、"00002.m2ts"および"00003.m2ts"は、再生時には、ユーザにファイル分割を意識させることなく、恰も1の連続したクリップAVストリームファイルに記録されたビデオデータおよびオーディオデータであるかのように、連続的に再生される。
【0255】
一方、時刻ED1での記録停止操作の後に、時刻ST2に記録開始操作がなされて記録されたクリップAVストリームファイル"00003.m2ts"は、プレイリスト#1に従い、上述のプレイアイテム#3による再生の次に、プレイアイテム#4に基づき再生される。このとき、プレイアイテム#3のフィールドConnectionConditionには、第1のシームレス接続を示す値"5"が設定されている。そのため、プレイアイテム#3によりクリップAVストリームファイル"00003.m2ts"の後端において、オーディオデータがビデオデータより若干長く記録されている。
【0256】
例えば、この部分にフェードアウトなど所望の音響効果を加えて、次のプレイアイテム#4によるクリップAVストリームファイル"00004.m2ts"の先頭部分のオーディオデータとミックスして、クリップAVストリームファイル"00003.m2ts"とクリップAVストリームファイル"00004.m2ts"とを連続的に再生する。このようにすることで、シーンの異なる2つのクリップAVストリームファイルを、違和感を抑えつつシームレスに再生することができる。
【0257】
次に、この発明の実施の一形態の他の例について説明する。上述では、この発明が単体の記録装置に適用された例について説明した(図32参照)。これに対し、この実施の一形態の他の例では、この発明を、撮像素子と、被写体からの光を撮像素子に入射させる光学系とを有し、撮像素子で撮像された撮像信号に基づきビデオデータを記録媒体に記録するようにした、ビデオカメラ装置に適用した。
【0258】
図36は、この発明の実施の一形態の他の例によるビデオカメラ装置100の一例の構成を示す。ビデオカメラ装置100において、記録系の構成は、図32を用いて説明した記録装置の構成を略そのまま適用できるので、図32と共通する部分には同一の符号を付し、詳細な説明を省略する。
【0259】
図36の構成において、カメラ部50は、映像信号に関する構成として、光学系51、撮像素子52、撮像信号処理部53、カメラ制御部54および表示部55を有し、音声信号に関する構成として、マイクロフォン(MIC)56および音声信号処理部57を有する。制御部30は、カメラ部50の各部との間で各種制御信号や情報のやりとりを行い、カメラ部50の動作を制御する。また、制御部50は、ユーザ操作に応じてUI部31から供給される制御信号に基づき、カメラ部50の動作を制御する。
【0260】
なお、ビデオカメラ装置100として構成される場合、記録開始操作および記録停止操作は、例えば、UI部31に設けられた単一の記録スイッチを用い、当該記録スイッチが押下される毎に記録開始および記録停止が交互に指示されるようになされるのが一般的である。また、このビデオカメラ装置100では、記録媒体20として、Blu−ray Discや記録可能なタイプのDVDといった、ディスク記録媒体を適用するものとする。
【0261】
勿論、これらに限らず、ビデオカメラ装置100にハードディスクドライブを内蔵させ(図示しない)、このハードディスクドライブを記録媒体20として用いてもよい。また、所定の連続記録時間分の記録を行った場合のデータが記憶可能な容量を有する、不揮発性の半導体メモリをビデオカメラ装置100に内蔵あるいは着脱可能に設け、この不揮発性メモリを記録媒体20として用いることもできる。
【0262】
カメラ部50において、光学系51は、被写体からの光を撮像素子52に導くためのレンズ系、絞り調整機構、フォーカス調整機構、ズーム機構、シャッタ機構などを備える。絞り調整機構、フォーカス調整機構、ズーム機構およびシャッタ機構の動作は、制御部30から供給される制御信号に基づき、カメラ制御部54により制御される。
【0263】
撮像素子52は、例えばCCD(Charge Coupled Device)からなり、光学系51を介して照射された光を光電変換により電気信号に変換し、所定の信号処理を施し撮像信号として出力する。撮像信号処理部53は、撮像素子から出力された撮像信号に対して所定の信号処理を施し、ベースバンドのディジタルビデオデータとして出力する。
【0264】
例えば撮像信号処理部53は、撮像素子52から出力された撮像信号に対して、CDS(Correlated Double Sampling)回路により画像情報を有する信号だけをンプリングすると共に、ノイズを除去し、AGC(Auto Gain Control)回路によりゲインを調整する。そして、A/D変換によりディジタル信号に変換する。また、撮像信号処理部53は、このディジタル信号に対して検波系の信号処理を施し、R(赤色)、G(緑色)およびB(青色)各色の成分を取り出し、γ補正やホワイトバランス補正などの処理を行い、最終的に1本のベースバンドのディジタルビデオデータとして出力する。
【0265】
また、撮像信号処理部53は、撮像素子52から出力された撮像信号の情報を制御部30に送る。制御部30は、この情報に基づき光学系51を制御するための制御信号を生成し、カメラ制御部54に供給する。カメラ制御部54は、この制御信号に基づきフォーカス調整機構や絞り調整機構などの制御を行う。
【0266】
さらに、撮像信号処理部53は、撮像素子52から出力された撮像信号に基づき、例えばLCD(Liquid Crystal Display)を表示素子として用いた表示部55に映出させる映像信号を生成する。
【0267】
一方、マイクロフォン56は、周囲の音声を収音して電気信号に変換して出力する。マイクロフォン56から出力された音声信号は、音声信号処理部57に供給される。音声信号処理部57は、供給された音声信号を、リミッタを介してからA/D変換を施してディジタルオーディオデータとし、ノイズ除去や音質補正など所定の音声信号処理を施してベースバンドのディジタルオーディオデータとして出力する。
【0268】
カメラ部50の撮像信号処理部53から出力されたベースバンドのディジタルビデオデータは、記録部10の端子40に供給される。また、音声信号処理部57から出力されたベースバンドのディジタルオーディオデータは、記録部10の端子41に供給される。
【0269】
記録停止状態からUI部31に設けられた記録スイッチが押下されると、記録開始を指示する制御信号がUI部31から制御部30に供給され、制御部30の制御に基づきカメラ部50から出力されたベースバンドのディジタルビデオ信号およびディジタルオーディオデータの記録媒体20への記録が開始される。
【0270】
すなわち、既に説明したように、制御部30の制御に基づきビデオエンコーダ11およびオーディオエンコーダ12の動作が開始され、ビデオデータおよびオーディオデータがそれぞれビデオエンコーダ11およびオーディオエンコーダ12で圧縮符号化され、マルチプレクサ13で所定にパケット化され多重化されてAVストリームデータとされる。AVストリームデータは、ストリームバッファ14を介して、記録制御部15に供給され、クリップAVストリームファイルとして記録媒体20に記録される。
【0271】
記録開始操作から所定時間以上、記録が連続され、クリップAVストリームファイルのファイルサイズが所定サイズを超えるときに、既に説明したように、記録中のクリップAVストリームファイルをクローズして対応するクリップインフォメーションファイルを作成し、当該クリップインフォメーションファイルを参照するプレイアイテムが生成される。ここで生成されるプレイアイテムは、第2のシームレス接続が指定される。生成されたプレイアイテムは、プレイリストに追記される。また、新規にクリップAVストリームファイルが作成され、継続される記録により供給されるAVストリームデータが、新規に作成されたこのクリップAVストリームファイルに記録される。
【0272】
UI部31の記録スイッチが押下されると、記録が停止され、クリップインフォメーションファイルの作成や、プレイリストファイルの更新が行われる。管理情報処理部16は、マルチプレクサ13および記録制御部15からの情報に基づき、記録媒体20に記録されるクリップAVストリームファイルに対応するクリップインフォメーションファイルを作成する。また、管理情報処理部16は、当該クリップインフォメーションファイルを参照するプレイアイテムを生成し、既にプレイリストが存在する場合には、生成されたプレイアイテムを当該プレイリストに対して追加すると共に、プレイリストに対してプレイリストマークを打つ。
【0273】
この状態からもう一度記録スイッチが押下されると、再び記録開始が指示され、新たなクリップAVストリームファイルの記録媒体20への記録が開始されると共に、対応するクリップインフォメーションファイルの作成や、当該クリップインフォメーションファイルを参照するプレイアイテムの生成、生成されたプレイアイテムのプレイリストへの追加などの処理が行われる。クリップAVストリームファイル間の再生は、第1のシームレス接続により接続される。
【0274】
この実施の一形態の他の例のように、この発明をビデオカメラ装置100に適用する場合、長時間の連続撮影を行い、記録開始操作から記録停止操作までの間に記録されるクリップAVストリームファイルのファイルサイズが所定サイズを超えるときに、クリップAVストリームファイルが自動的に分割され、1ファイルのサイズが所定サイズを超えないようにされる。また、分割時に、分割前後のクリップAVストリームファイルの接続方法として第2のシームレス接続が設定されるため、再生時には、所定サイズに基づくクリップAVストリームファイルの分割を意識することなく、1回の連続撮影で記録されたビデオデータおよびオーディオデータを連続的に再生することが可能となる。
【0275】
なお、上述では、クリップAVストリームファイルの分割を行うか否かを、ファイルサイズに基づき判断する例について説明したが、これはこの例に限定されない。すなわち、クリップAVストリームファイルに対する管理情報に基づきファイルの分割を行うか否かを判断することも考えられる。例えば、既に説明したように、クリップAVストリームファイルのアドレス情報と、当該ファイルに記録されるビデオデータおよびオーディオデータの時刻情報との対応関係を示すEPエントリ情報の上限に基づき、クリップAVストリームファイルの分割を行うか否かを判断する。
【0276】
EPエントリは、図20〜図23を用いて既に説明したように、ソースパケットに基づくエントリと、PTSに基づくエントリとをそれぞれ有し、また、それぞれのエントリは、粗い検索を行うエントリと精密な検索を行うエントリとからなる。それぞれのエントリは、図22および図23に例示したように、フォーマットによってエントリを表現するためのビット数が規定されているので、このビット数で表現可能な最大値がエントリ数の最大数に対応する。一例として、制御部30は、管理情報処理部16からのエントリポイントに関する情報に基づき、現在記録中のクリップAVストリームファイルに関し、エントリポイント数がこの最大値に達したか否かを判断する。
【0277】
一例として、図33のフローチャートを参照し、制御部30は、管理情報処理部16で生成されるEPエントリ情報を監視し、1のクリップAVストリームファイルに対して生成されるEPエントリの数が所定数になったか否かを判断する。そして、EPエントリ数が所定数になったと判断されれば、処理をステップS62に移行させ、ストリームバッファ14に溜め込まれているストリームを所定に読み出してクリップAVストリームファイルに記録し、当該クリップAVストリームファイルをクローズする(ステップS63)。そして、当該クリップAVストリームファイルに対応するクリップインフォメーションファイルを作成し(ステップS64)、対応するプレイアイテム内のフィールドConnectionCoditionの値を第2のシームレス接続を示す値"6"に設定する(ステップS65)。そして、ステップS66およびステップS67でプレイアイテムの情報を生成すると共に、生成されたプレイアイテムをプレイリストに対して追記記録する。必要であれば、ステップS68でプレイリストマークの設定を行う。
【0278】
また、クリップAVストリームファイルを分割するか否かの判断は、EPエントリ数に限らず、例えばPTSの上限に基づき行ってもよい。
【0279】
また、上述では、図32に示す記録装置や図36に示すビデオカメラ装置100の記録部10がハードウェア的に構成されるように説明したが、これはこの例に限定されない。すなわち、記録部10は、ソフトウェアとして構成することも可能である。この場合、ソフトウェアは、例えば制御部30が有する図示されないROMに予め記憶される。これに限らず、記録部10を、パーソナルコンピュータなどのコンピュータ装置上に構成することも可能である。この場合には、記録部10をコンピュータ装置に実行させるソフトウェアは、CD−ROMやDVD−ROMといった記録媒体に記録されて提供される。コンピュータ装置がネットワーク接続可能な場合、インターネットなどのネットワークを介して当該ソフトウェアを提供することも可能である。
【図面の簡単な説明】
【0280】
【図1】この発明に適用可能なAVCHDフォーマットに規定されるデータモデルを概略的に示す略線図である。
【図2】インデックステーブルを説明するための略線図である。
【図3】クリップAVストリーム、クリップ情報、クリップ、プレイアイテムおよびプレイリストの関係を示すUML図である。
【図4】複数のプレイリストから同一のクリップを参照する方法を説明するための略線図である。
【図5】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図6】ファイル"index.bdmv"の一例の構造を表すシンタクスを示す略線図である。
【図7】ブロックblkIndexes()の一例の構造を表すシンタクスを示す略線図である。
【図8】ファイル"MovieObject.bdmv"の一例の構造を表すシンタクスを示す略線図である。
【図9】ブロックblkMovieObjects()の一例の構造を表すシンタクスを示す略線図である。
【図10】プレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す略線図である。
【図11】ブロックblkPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図12】ブロックblkPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図13】第1および第2のシームレス接続を説明するための略線図である。
【図14】ブロックblkPlayListMark()の一例の構造を表すシンタクスを示す略線図である。
【図15】クリップインフォメーションファイルの一例の構造を表すシンタクスを示す略線図である。
【図16】ブロックblkClipInfo()の一例の構造を表すシンタクスを示す略線図である。
【図17】ブロックblkSequenceInfo()の一例の構造を表すシンタクスを示す略線図である。
【図18】ブロックblkProgramInfo()の一例の構造を表すシンタクスを示す略線図である。
【図19】ブロックblkCPI()の一例の構造を表すシンタクスを示す略線図である。
【図20】ブロックblkEPMap()の一例の構造を表すシンタクスを示す略線図である。
【図21】ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の一例の構造を表すシンタクスを示す略線図である。
【図22】エントリPTSEPCoarseおよびエントリPTSEPFineの一例のフォーマットについて示す略線図である。
【図23】エントリSPNEPCoarseおよびエントリSPNEPFineの一例のフォーマットについて示す略線図である。
【図24】ブロックblkExtensionData()の一例の構造を表すシンタクスを示す略線図である。
【図25】ブロックblkExtensionData()における各データの参照関係を模式的に示す略線図である。
【図26】ブロックblkExtensionData()にデータを書き込む際の一例の処理を示すフローチャートである。
【図27】ブロックblkExtensionData()から拡張データを読み出す際の一例の処理を示すフローチャートである。
【図28】ファイル"index.bdmv"内のフィールドblkExtensionData()におけるブロックDataBlock()の一例の構造を表すシンタクスを示す略線図である。
【図29】ブロックblkTableOfPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図30】仮想プレーヤの動作を概略的に示すフローチャートである。
【図31】仮想プレーヤの動作を概略的に示す略線図である。
【図32】この発明の実施の一形態に適用可能な記録装置の一例の構成を概略的に示すブロック図である。
【図33】この発明の実施の一形態による一例の記録方法を示すフローチャートである。
【図34】この発明の実施の一形態の方法により記録された一例のファイル構造を示す略線図である。
【図35】記録の時間経過の例を説明するための略線図である。
【図36】この発明の実施の一形態の他の例によるビデオカメラ装置の一例の構成を示す。
【符号の説明】
【0281】
10 記録部
11 ビデオエンコーダ
12 オーディオエンコーダ
13 マルチプレクサ
14 ストリームバッファ
15 記録制御部
16 管理情報処理部
17 揮発性メモリ
18 不揮発性メモリ
20 記録媒体
30 制御部
31 ユーザインターフェイス部
50 カメラ部
100 ビデオカメラ装置

【特許請求の範囲】
【請求項1】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録装置において、
ビデオデータおよびオーディオデータが入力されるデータ入力部と、
上記ビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力部と、
上記ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録部と、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、
上記記録部および上記管理情報生成部とを制御する制御部と
を有し、
上記制御部は、
上記記録指示入力部による上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録部を制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録部を制御する
ことを特徴とする記録装置。
【請求項2】
請求項1に記載の記録装置において、
上記制御部は、
上記所定の制約に基づく上記ストリームファイルのクローズに応じて、クローズされる該ストリームファイルに記録される上記オーディオデータの後端の時刻と、上記新規のストリームファイルに格納される上記オーディオデータの先端の時刻とが対応するように上記記録部による記録を制御すると共に、
上記クローズされるストリームファイルを再生区間として指定する再生区間データ内に、該クローズされるストリームファイルに記録されるビデオデータおよびオーディオデータと、該新規のストリームファイルに記録されるビデオデータおよびオーディオデータとが連続的に再生されることを示す情報を設定して上記再生区間データを上記記録媒体に記録するように上記記録部を制御する
ことを特徴とする記録装置。
【請求項3】
請求項1に記載の記録装置において、
上記ストリームファイルの属性は、ファイルサイズであって、
上記所定の制約は、該ファイルサイズの上限である
ことを特徴とする記録装置。
【請求項4】
請求項1に記載の記録装置において、
上記ストリームファイルの属性は、上記ストリーム情報ファイルに格納される、上記ストリームファイルに格納される上記ビデオデータの時刻を示す情報と、該ストリームファイル内のアドレスとを関連付けるエントリポイント情報であって、
上記所定の制約は、1の上記ストリーム情報ファイルに対して格納可能とされた上記エントリポイント情報数の上限である
ことを特徴とする記録装置。
【請求項5】
請求項1に記載の記録装置において、
上記ストリームファイルの属性は、上記ストリームファイルに格納される上記ビデオデータの時刻を示す情報であって、
上記所定の制約は、上記時刻を示す情報が表現可能な時刻の上限である
ことを特徴とする記録装置。
【請求項6】
請求項1に記載の記録装置において、
上記制御部は、上記記録指示入力部による記録停止の指示に基づき、
上記ストリームファイル内で、上記ビデオデータの先端の再生時刻と上記オーディオデータの先端の再生時刻とが一致し、上記ビデオデータの終端の再生時刻よりも上記オーディオデータの終端の再生時刻が後になるように上記記録部を制御すると共に、
記録された上記ストリームファイルを再生区間として指定する上記再生区間データ内に、該ストリームファイルと該ストリームファイルに対して後続するストリームファイルとがフレームタイミングで連続的に再生されることを示す情報を設定して上記再生区間データを上記記録媒体に記録するように上記記録部を制御する
ことを特徴とする記録装置。
【請求項7】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法において、
データ入力から入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、
上記ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記記録指示入力のステップによる上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録のステップを制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録のステップを制御する
ことを特徴とする記録方法。
【請求項8】
ビデオデータとオーディオデータとを多重化して記録媒体に記録する記録方法をコンピュータ装置に実行させる記録プログラムにおいて、
上記記録方法は、
データ入力から入力されたビデオデータおよびオーディオデータの記録開始および記録停止の指示が入力される記録指示入力のステップと、
上記ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記記録指示入力のステップによる上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録のステップを制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録のステップを制御する
ことを特徴とする記録プログラム。
【請求項9】
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置において、
被写体を撮像してビデオデータを出力する撮像部と、
音声を収音してオーディオデータを出力する収音部と、
上記ビデオデータおよびオーディオデータをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録部と、
上記ビデオデータおよび上記オーディオデータの上記記録媒体への記録開始および記録停止を指示するユーザ操作を受け付ける操作部と、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成部と、
上記記録部および上記管理情報生成部とを制御する制御部と
を有し、
上記制御部は、
上記操作部に対する操作による上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録部を制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録部を制御する
ことを特徴とする撮像装置。
【請求項10】
請求項9に記載の撮像装置において、
上記制御部は、
上記所定の制約に基づく上記ストリームファイルのクローズに応じて、クローズされる該ストリームファイルに記録される上記オーディオデータの後端の時刻と、上記新規のストリームファイルに格納される上記オーディオデータの先端の時刻とが対応するように上記記録部による記録を制御すると共に、
上記クローズされるストリームファイルを再生区間として指定する再生区間データ内に、該クローズされるストリームファイルに記録されるビデオデータおよびオーディオデータと、該新規のストリームファイルに記録されるビデオデータおよびオーディオデータとが連続的に再生されることを示す情報を設定して上記再生区間データを上記記録媒体に記録するように上記記録部を制御する
ことを特徴とする撮像装置。
【請求項11】
請求項9に記載の撮像装置において、
上記ストリームファイルの属性は、ファイルサイズであって、
上記所定の制約は、該ファイルサイズの上限である
ことを特徴とする撮像装置。
【請求項12】
請求項9に記載の撮像装置において、
上記ストリームファイルの属性は、上記ストリーム情報ファイルに格納される、上記ストリームファイルに格納される上記ビデオデータの時刻を示す情報と、該ストリームファイル内のアドレスとを関連付けるエントリポイント情報であって、
上記所定の制約は、1の上記ストリーム情報ファイルに対して格納可能とされた上記エントリポイント情報数の上限である
ことを特徴とする撮像装置。
【請求項13】
請求項9に記載の撮像装置において、
上記ストリームファイルの属性は、上記ストリームファイルに格納される上記ビデオデータの時刻を示す情報であって、
上記所定の制約は、上記時刻を示す情報が表現可能な時刻の上限である
ことを特徴とする撮像装置。
【請求項14】
請求項9に記載の撮像装置において、
上記制御部は、上記操作部に対する操作に応じた記録停止の指示に基づき、
上記ストリームファイル内で、上記ビデオデータの先端の再生時刻と上記オーディオデータの先端の再生時刻とが一致し、上記ビデオデータの終端の再生時刻よりも上記オーディオデータの終端の再生時刻が後になるように上記記録部を制御すると共に、
記録された上記ストリームファイルを再生区間として指定する上記再生区間データ内に、該ストリームファイルと該ストリームファイルに対して後続するストリームファイルとがフレームタイミングで連続的に再生されることを示す情報を設定して上記再生区間データを上記記録媒体に記録するように上記記録部を制御する
ことを特徴とする撮像装置。
【請求項15】
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法において、
被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、
操作部に対する上記ビデオデータおよび上記オーディオデータの上記記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記操作部に対する操作による上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録のステップを制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録のステップを制御する
ことを特徴とする撮像方法。
【請求項16】
撮像部で被写体を撮像して得られたビデオデータと、収音部で音声を収音して得られたオーディオデータとを多重化して記録媒体に記録する撮像装置の撮像方法をコンピュータ装置に実行させる撮像プログラムにおいて、
上記撮像方法は、
被写体を撮像して得られたビデオデータと、音声を収音して得られたオーディオデータとをパケット単位で多重化し、多重化されたストリームを該パケット毎に順次、記録媒体上のストリームファイルに記録する記録のステップと、
操作部に対する上記ビデオデータおよび上記オーディオデータの上記記録媒体への記録開始および記録停止を指示するユーザ操作を受け付けるステップと、
上記記録媒体に記録される上記ストリームファイルに対し、少なくとも、該ストリームファイルの再生時刻情報とアドレス情報とを対応付けたストリーム情報ファイルと、該ストリームファイルに対して再生開始点と再生終了点とを設定することにより再生区間を指定する1以上の再生区間データが格納され、上記ストリームファイルに対する再生時刻情報を示すマーク情報が格納可能な再生リストファイルとを生成する管理情報生成のステップと、
上記記録のステップおよび上記管理情報生成のステップとを制御する制御のステップと
を有し、
上記制御のステップは、
上記操作部に対する操作による上記記録開始および記録停止の指示に応じて上記ストリームの上記ストリームファイルに対する記録の開始および停止をそれぞれ行うように上記記録のステップを制御し、
1または複数の上記パケットからなる所定単位を上記ストリームファイルに記録することで該ストリームファイルの属性を示す情報が所定の制約を満たさなくなる場合に、該ストリームファイルをクローズして新規の上記ストリームファイルを作成し、該新規のストリームファイルに対して上記ストリームを該所定単位から順次、記録するように上記記録のステップを制御する
ことを特徴とする撮像プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate


【公開番号】特開2008−33983(P2008−33983A)
【公開日】平成20年2月14日(2008.2.14)
【国際特許分類】
【出願番号】特願2006−203037(P2006−203037)
【出願日】平成18年7月26日(2006.7.26)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】