以下、この発明の実施の形態について、下記の順序に従って説明する。
1.発明に適用可能な一例のフォーマットについて
1−1.データモデルについて
1−2.ファイルの管理構造について
1−2−1.光ディスク以外の記録媒体に適用されるファイルの管理構造について
1−3.各ファイルの構造について
1−3−1.拡張データの構造について
1−3−2.拡張データの具体的な例
1−4.仮想プレーヤについて
2.発明に適用可能な記録装置について
3.発明に適用可能なデータ構造について
4.発明の施の第1の形態について
4−1.実施の第1の形態によるダビング処理について
4−1−1.ダビング処理の具体的な例について
4−1−2.ダビング先のプレイアイテムおよびクリップインフォメーションの作成について
4−1−3.シームレス情報の決定処理の例について
4−2.補足
5.発明の実施の第1の形態の変形例について
6.発明の実施の第2の形態について
6−1.実施の第2の形態に適用可能な装置の構成例について
6−2.実施の第2の形態による一例のダビング処理について
1.発明に適用可能な一例のフォーマットについて
先ず、理解を容易とするために、この発明に適用可能な一例のフォーマット(以下、AVCHDフォーマットと呼ぶ)について説明する。AVCHDフォーマットは、ビデオデータとオーディオデータとが所定に多重化されたAV(Audio/Video)ストリームを記録可能な記録媒体に記録する記録フォーマットとして現在提案されているもので、記録媒体に記録されたAVストリームを、クリップ単位でプレイリストを用いて管理可能としている。
例えば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と略称する)に規定される符号化方式や、MPEG(Moving Pictures Experts Group)ビデオやMPEGオーディオといった符号化方式で符号化され、MPEG2システムズに従い多重化されたビットストリームは、クリップAVストリーム(またはAVストリーム)と称される。クリップAVストリームは、所定のファイルシステムによりファイルとしてディスクに記録される。このファイルを、クリップAVストリームファイル(またはAVストリームファイル)と称する。
クリップAVストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップAVストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップAVストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。
1−1.データモデルについて
図1は、この発明に適用可能なAVCHDフォーマットに規定されるデータモデルを概略的に示す。このAVCHDフォーマットによれば、データ構造は、図1に示されるように4層のレイヤよりなる。最も最下層のレイヤは、クリップAVストリームが配置されるレイヤである(便宜上、クリップレイヤと呼ぶ)。その上のレイヤは、クリップAVストリームに対する再生箇所を指定するための、プレイリスト(PlayList)と、プレイアイテム(PlayItem)とが配置されるレイヤである(便宜上、プレイリストレイヤと呼ぶ)。さらにその上のレイヤは、プレイリストに対して再生順などを指定するコマンドからなるムービーオブジェクト(Movie Object)などが配置されるレイヤである(便宜上、オブジェクトレイヤと呼ぶ)。最上層のレイヤは、記録媒体に格納されるタイトルなどを管理するインデックステーブルが配置される(便宜上、インデックスレイヤと呼ぶ)。
クリップレイヤについて説明する。クリップAVストリームは、ビデオデータやオーディオデータがMPEG2 TS(トランスポートストリーム)の形式などに多重化されたビットストリームである。このクリップAVストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
また、クリップAVストリームには、字幕を表示するグラフィクスストリームであるOBストリーム(Overlay Bitmap stream)や、メニュー表示などに用いられるデータ(ボタン画像データなど)をストリームにしたMBストリーム(Menu Bitmap stream)ストリームを多重化することができる。
クリップAVストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップAVストリームとクリップ情報とから構成される、一つのオブジェクトである。
ファイルは、一般的に、バイト列として扱われる。クリップAVストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップAVストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
プレイリストレイヤについて説明する。プレイリストは、再生するAVストリームファイルの指定と、指定されたAVストリームファイルの再生箇所を指定する再生開始点(IN点)と再生終了点(OUT点)の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるAVストリームファイルの一部分を再生するということになる。すなわち、プレイアイテム中のIN点およびOUT点情報に基づき、クリップ中の対応する区間が再生される。
オブジェクトレイヤについて説明する。ムービーオブジェクトは、ナビゲーションコマンドプログラムと、ムービーオブジェクトとを連携するターミナルインフォメーションを含む。ナビゲーションプログラムは、プレイリストの再生を制御するためのコマンド(ナビゲーションコマンド:navigation command)である。ターミナルインフォメーションは、ユーザのプレーヤに対するインタラクティブな操作を許可するための情報を含んでいる。このターミナルインフォメーションに基づき、メニュー画面の呼び出しや、タイトルサーチといったユーザオペレーションが制御される。
インデックスレイヤについて説明する。インデックスレイヤは、インデックステーブル(Index Table)からなる。インデックステーブルは、記録媒体に記録されたコンテンツのタイトルを定義する、トップレベルのテーブルである。インデックステーブルに格納されているタイトル情報に基づき、プレーヤに常駐されるシステムソフトウェア中のモジュールマネージャにより記録媒体の再生が制御される。
すなわち、図2に概略的に示されるように、インデックステーブル中の任意のエントリは、タイトルと称され、インデックステーブルにエントリされるファーストプレイバックタイトル(First PlaybackTitle)、メニュータイトル(MenuTitle)およびムービータイトル(MovieTitle)#1、#2、・・・は、全てタイトルである。各タイトルは、ムービーオブジェクトに対するリンクを示す。
理解を容易とするため再生専用の記録媒体を例にとると、例えば、ファーストプレイバックタイトルは、当該記録媒体に格納されるコンテンツが映画であれば、映画本編に先立って映出される映画会社の宣伝用映像(トレーラ)に対応する。メニュータイトルは、例えばコンテンツが映画である場合、本編再生、チャプタサーチ、字幕や言語設定、特典映像再生などを選択するためのメニュー画面に対応する。また、ムービータイトルは、メニュータイトルから選択される各映像である。タイトルがさらにメニュー画面であるような構成も可能である。
図3は、上述のようなクリップAVストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すUML(Unified Modeling Language)図である。プレイリストは、1または複数のプレイアイテムに対応付けられ、プレイアイテムは、1のクリップに対応付けられる。1のクリップに対して、それぞれ開始点および/または終了点が異なる複数のプレイアイテムを対応付けることができる。1のクリップから1のクリップAVストリームファイルが参照される。同様に、1のクリップから1のクリップ情報ファイルが参照される。また、クリップAVストリームファイルとクリップ情報ファイルとは、1対1の対応関係を有する。このような構造を定義することにより、クリップAVストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
また、図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点で示される区間が参照される。
1−2.ファイルの管理構造について
次に、AVCHDフォーマットによる、記録媒体に記録されるファイルの管理構造について、図5を用いて説明する。この図5に示される管理構造は、記録可能なタイプのDVDといった光ディスクを記録媒体として適用した際に用いて好適なものである。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、1つのディレクトリ(図5の例ではルート(root)ディレクトリ)が作成される。このディレクトリの下が、1つの記録再生システムで管理される範囲とする。
ルートディレクトリの下に、ディレクトリ"BDMV"およびディレクトリ"AVCHDTN"が置かれる。ディレクトリ"AVCHDTN"には、例えばクリップの代表画像を所定サイズに縮小したサムネイルファイルが置かれる。ディレクトリ"BDMV"に、図1を用いて説明したデータ構造が格納される。
ディレクトリ"BDMV"の直下には、ファイルは、ファイル"index.bdmv"およびファイル"MovieObject.bdmv"の2つのみを置くことができる。また、ディレクトリ"BDMV"の下に、ディレクトリ"PLAYLIST"、ディレクトリ"CLIPINF"、ディレクトリ"STREAM"およびディレクトリ"BACKUP"が置かれる。ディレクトリ"BACKUP"は、各ディレクトリおよびファイルのバックアップが格納される。
ファイル"index.bdmv"は、ディレクトリ"BDMV"の内容について記述される。すなわち、このファイル"index.bdmv"が上述した最上層のレイヤであるインデックスレイヤにおけるインデックステーブルに対応する。また、ファイル"MovieObject.bdmv"は、1つ以上のムービーオブジェクトの情報が格納される。すなわち、このファイル"MovieObject.bdmv"が上述したオブジェクトレイヤに対応する。
ディレクトリ"PLAYLIST"は、プレイリストのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"PLAYLIST"は、プレイリストに関するファイルであるファイル"xxxxx.mpls"を含む。ファイル"xxxxx.mpls"は、プレイリストのそれぞれに対して作成されるファイルである。ファイル名において、"."(ピリオド)の前の"xxxxx"は、5桁の数字とされ、ピリオドの後ろの"mpls"は、このタイプのファイルに固定的とされた拡張子である。
ディレクトリ"CLIPINF"は、クリップのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"CLIPINF"は、クリップAVストリームファイルのそれぞれに対するクリップインフォメーションファイルであるファイル"zzzzz.clpi"を含む。ファイル名において、"."(ピリオド)の前の"zzzzz"は、5桁の数字とされ、ピリオドの後ろの"clpi"は、このタイプのファイルに固定的とされた拡張子である。
ディレクトリ"STREAM"は、実体としてのAVストリームファイルが置かれるディレクトリである。すなわち、ディレクトリ"STREAM"は、クリップインフォメーションファイルのそれぞれに対応するクリップAVストリームファイルを含む。クリップAVストリームファイルは、MPEG2(Moving Pictures Experts Group 2)のトランスポートストリーム(以下、MPEG2 TSと略称する)からなり、ファイル名が"zzzzz.m2ts"とされる。ファイル名において、ピリオドの前の"zzzzz"は、対応するクリップインフォメーションファイルと同一することで、クリップインフォメーションファイルとこのクリップAVストリームファイルとの対応関係を容易に把握することができる。
なお、ディレクトリ"AVCHDTN"は、2種類のサムネイルファイル"thumbnail.tidx"および"thumbnail.tdt2"を置くことができる。サムネイルファイル"thumbnail.tidx"は、所定の方式で暗号化されたサムネイル画像が格納される。サムネイルファイル"thumbnail.tdt2"は、暗号化されていないサムネイル画像が格納される。例えばビデオカメラでユーザが撮影したクリップに対応するサムネイル画像は、コピーフリーであって暗号化する必要が無いと考えられるため、このサムネイルファイル"thumbnail.tdt2"に格納される。
1−2−1.光ディスク以外の記録媒体に適用されるファイルの管理構造について
なお、光ディスク以外の記録媒体(例えば記録装置に内蔵されるハードディスクやフラッシュメモリ、記録装置に脱着可能なフラッシュメモリなど)にストリームデータファイルを記録する場合、この図5に示される管理構造とは若干異なった管理構造が適用される。図6は、AVCHDフォーマットによる、この光ディスク以外の記録媒体に適用可能な一例の管理構造を示す。
この図6の例では、ルートディレクトリの下にディレクトリ"AVCHD"が置かれ、このディレクトリ"AVCHD"の下に、ディレクトリ"BDMV"が置かれる。そして、このディレクトリ"BDMV"の直下に、2つのファイル、インデックスファイル"INDEX.BDM"およびムービーオブジェクトファイル"MOVIEOBJ.BDM"が置かれると共に、プレイリストファイルが格納されるディレクトリ"PLAYLIST"、クリップインフォメーションファイルが格納されるディレクトリ"CLIPINFO"およびストリームデータファイルが格納されるディレクトリ"STREAM"がそれぞれ置かれる。
なお、図6では省略されているが、サムネイルファイルを格納するディレクトリは、ディレクトリ"AVCHD"の下に、上述のディレクトリ"BDMV"と並列的に置かれる。
また、各ディレクトリにおいて、格納されるファイル名が、図5に示す、光ディスクに適用される管理構造の例とは異ならされる。例えばファイル名は、大文字を用いると共に"."(ピリオド)の後ろの部分が3文字とされる。図6の例では、インデックスファイルがファイル"INDEX.BDM"、ムービーオブジェクトファイルがファイル"MOVIEOBJ.BDM"、プレイリストファイルがファイル"XXXXX.MPL"、クリップインフォメーションファイルがファイル"ZZZZZ.CPI"、クリップAVストリームファイルがファイル"ZZZZZ.MTS"とされている。
これらファイル"INDEX.BDM"、ファイル"MOVIEOBJ.BDM"、ファイル"XXXXX.MPL"、ファイル"ZZZZZ.CPI"、ファイル"ZZZZZ.MTS"は、それぞれ図5のファイル"index.bdmv"、ファイル"MovieObject.bdmv"、ファイル"xxxxx.mpls"、ファイル"zzzzz.clpi"、ファイル"zzzzz.m2ts"に対応する。
1−3.各ファイルの構造について
図5および図6で示した各ファイルのうち、この発明に関わりの深いものについて、より詳細に説明する。なお、図6に示す各ファイルの説明は、図5に示す対応するファイルの説明で読み替えるものとする。先ず、ディレクトリ"BDMV"の直下に置かれるファイル"index.bdmv"について説明する。図7は、このファイル"index.bdmv"の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるC言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
図7において、フィールドTypeIndicatorは、32ビットのデータ長を有し、このファイルがインデックステーブルであることを示す。フィールドTypeIndicator2は、32ビットのデータ長を有し、このファイル"index.bdmv"のバージョンを示す。フィールドIndexesStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkIndexes()の開始アドレスを示す。
フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。フィールドExtensionDataStartAddressは、このファイル"index.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
フィールドExtensionDataStartAddressに続けて、データ長が192バイトの領域reservedが配される。なお、領域reservedは、バイトアライメントや、将来的なフィールドの追加などのための領域である。これは、以下の説明においても同様である。ブロックblkAppInfoBDMV()は、コンテンツ制作者が任意の情報を記述できるブロックであって、プレーヤの動作などには影響を与えない。
ブロックblkIndexes()は、このファイル"index.bdmv"の実質的な内容であって、このブロックblkIndexes()に記述された内容により、ディスクをプレーヤに装填した際に再生されるファーストプレイバックや、トップメニューから呼び出されるタイトル(ムービーオブジェクト)が指定される。インデックステーブルにより呼び出されたムービーオブジェクト等に記述されたコマンドに基づき、後述するプレイリストファイルが読み込まれる。
図8は、ブロックblkIndexes()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLength直後からこのブロックblkIndexes()の終わりまでのデータ長を示す。続けて、ブロックFirstPlaybackTitle()およびブロックMenuTitle()が配される。
ブロックFirstPlaybackTitle()は、ファーストプレイバックで用いられるオブジェクトに関する情報が記述される。ブロックFirstPlaybackTitle()は、1ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに31ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、14ビットのデータ長を有する領域reservedを介して、16ビットのデータ長を有するフィールドFirstPlaybackTitleMobjIDRefが配される。このフィールドFirstPlaybackTitleMobjIDRefにより、ファーストプレイバックタイトルで用いられるムービーオブジェクトのIDを示す。
ムービーオブジェクトのIDは、例えば、図9および図10を用いて後述するムービーオブジェクトのシンタクスに基づき、ムービーオブジェクトのforループ文においてループ変数として用いられる値mobj_idで示される。この例では、フィールドFirstPlaybackTitleMobjIDRefは、参照するムービーオブジェクトに対応する値mobj_idが格納される。
なお、ブロックblkIndexes()におけるブロックFirstPlaybackTitle()内のフィールドFirstPlaybackTitleMobjIDRefは、トップメニューのムービーオブジェクトを指していてもよいし、タイトルを指していてもよい。
ブロックMenuTitle()は、トップメニューで用いられるオブジェクトに関する情報が記述される。ブロックMenuTitle()は、1ビットのデータ長を有する領域reservedに続けて固定値"1"が記述される。さらに31ビットのデータ長を有する領域reservedを介して固定値"1"が記述される。そして、14ビットのデータ長を有する領域reservedを介して、16ビットのデータ長を有するフィールドMenuTitleMobjIDRefが配される。フィールドMenuTitleMobjIDRefは、メニュータイトルで用いられるムービーオブジェクトのIDを示す。
ブロックMenuTitle()の次のフィールドNumberOfTitlesは、16ビットのデータ長を有し、ユーザが選択、再生可能なタイトルの数を示す。次のforループ文に従い、このフィールドNumberOfTitlesに示される回数だけ、値title_idを引数として、ブロックMovieTitle[title_id]()が記述される。ブロックMovieTitle[title_id]()は、タイトル毎の情報が記述される。値title_idは、"0"からフィールドNumberOfTitlesで示される値までの数値であり、タイトルを識別する。
ブロックMovieTitle[title_id]()において、1ビットのデータ長を有する領域reservedを介して固定値"1"が記述され、さらに、46ビットのデータ長を有する領域reservedを介してフィールドMovieTitleMobjIDRefが記述される。フィールドMovieTitleMobjIDRefは、16ビットのデータ長を有し、このタイトルで用いられるムービーオブジェクトのIDを示す。フィールドMovieTitleMobjIDRefの後ろに、32ビットのデータ長を有する領域reservedが配される。
図9は、ディレクトリ"BDMV"の直下に置かれるファイル"MovieObject.bdmv"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがファイル"MovieObject.bdmv"であることを示す。フィールドTypeIndicatorは、ISO(International Organization for Standarization)646に規定された符号化方式で符号化した4文字からなる文字列が記述される。この図9の例では、フィールドtype_indicatiorにISO646に既定の方式で符号化された4文字の文字列"MOBJ"が記述され、このファイルがファイル"MovieObject.bdmv"であることが示される。
フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このファイル"MovieObject.bdmv"のバージョン番号を示す。このファイル"MovieObject.bdmv"では、フィールドTypeIndicator2は、ISO646に規定された符号化方式で符号化した4文字の文字列"0100"でなければならない。
フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス内にあるブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、このファイル"MovieObject.bdmv"の最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"MovieObject.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
なお、この図9に示すシンタクス内のフィールドpadding_wordは、16ビットのデータ長を有し、このファイル"MovieObject.bdmv"のシンタクスに従いforループ文に値N1または値N2で示される回数だけ挿入される。値N1または値N2は、0または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
フィールドExtensionDataStartAddressに続けてデータ長が224ビットの領域reservedが配され、その次に、このファイル"MovieObject.bdmv"の本体であるブロックblkMovieObjects()が格納される。
図10は、ブロックblkMovieObjects()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からこのブロックblkMovieObjects()の終わりまでのデータ長を示す。32ビットのデータ長を有する領域reservedを介してフィールドNumberOfMobjsが配される。フィールドNumberOfMobjsは、直後のforループ文に従い格納されるムービーオブジェクトの数を示す。forループ文のループ変数として用いられる値mobj_idで、ムービーオブジェクトが一意に特定される。値mobj_idは、"0"から始まる値で、ムービーオブジェクトは、forループ文中に記述される順序により定義される。
forループ文中のブロックTerminalInfo()は、固定値"1"が記述され、次に15ビットのデータ長を有する領域reservedが配される。その次に、16ビットのデータ長を有するフィールド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は、0から始まる値で、ナビゲーションコマンドNavigationCommandは、このforループ文中に記述される順序で定義される。
図11は、プレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがプレイリストファイルであることを示す。フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このプレイリストファイルのバージョンを示す。フィールドPlayListStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkPlayList()の開始アドレスを示す。
フィールドPlayListMarkStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkPlayListMark()の開始アドレスを示す。フィールドExtensionDataStartAddressは、32ビットのデータ長を有し、このシンタクス中のブロックblkExtensionData()の開始アドレスを示す。フィールドExtensionDataStartAddressは、ブロックblkExtensionData()の開始アドレスを、ファイル"xxxxx.mpls"の最初のバイトからの相対バイト数を表した値である。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"xxxxx.mpls"内に、ブロックblkExtensionData()が存在しないことを示す。
160ビットのデータ長を有する領域reservedを介してブロックblkAppInfoPlayList()が配される。ブロックblkAppInfoPlayList()は、次のブロックblkPlayList()に記述されるプレイリストのタイプ、再生制限などの情報が記述される。ブロックblkPlayList()は、プレイリストが記述される。ブロックblkPlayListMark()は、チャプタジャンプなどでジャンプされるポイントが記述される。ブロックblkExtensionData()は、所定の拡張データを格納可能とするためのブロックである。
なお、この図11に示すシンタクス内のフィールドpadding_wordは、16ビットのデータ長を有し、このファイル"xxxxx.mpls"のシンタクスに従いforループ文に値N1、値N2および値N3で示される回数だけ挿入される。値N1、値N2または値N3は、0または任意の正の整数である。また、フィールドpadding_wordは、任意の値を用いることができる。
図12は、ブロックblkPlayList()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayList()の最後までのデータ長を示す。フィールドLengthに続けて16ビットのデータ長を有する領域reservedが配され、次にフィールドNumberOfPlayItemsが配される。フィールドNumberOfPlayItemsは、16ビットのデータ長を有し、このブロックblkPlayList()に含まれるプレイアイテムの数を示す。フィールドNumberOfSubPathは、このブロックblkPlayList()に含まれるサブパスの数を示す。
次のforループ文に従い、フィールドNumberOfPlayItemsで示される数だけ、プレイアイテムが記述されるブロックblkPlayItem()が記述される。forループ文に基づくカウント数がブロックblkPlayItem()の識別子PlayItem_idとなる。さらに次のforループ文に従い、フィールドNumberOfSubPathで示される数だけ、ブロックblkSubPath()が記述される。forループ文に基づくカウント数がブロックblkSubPath()の識別子SubPath_idとなる。
なお、サブパスは、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応して持つことができる。サブパスは、例えば、アフレコ用のオーディオデータの指定や、2枚の映像を合成する際に、プレイアイテムで指定されるクリップと同期して再生する副映像を指定するといった目的で用いられる。
図13は、ブロックblkPlayItem()の一例の構造を表すシンタクスを示す。フィールドLengthは、16ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayItem()の最後までのデータ長を示す。
フィールドClipInformationFileName[0]は、40ビット(5バイト)のデータ長を有し、このブロックblkPlayItem()が参照するクリップインフォメーションファイルのファイル名が示される。このプレイアイテムにおいて、フィールドClipInformationFileName[0]で示されるファイル名のクリップインフォメーションファイルが読み出される。フィールドClipCodecIdentifier[0]は、32ビット(4バイト)のデータ長を有し、このブロックblkPlayItem()によるプレイアイテムにおいて用いられるクリップAVストリームのコーデック方式を示す。
12ビットのデータ長を有する領域reservedを介して、フィールドConnectionConditionが配される。フィールドConnectionConditionは、4ビットのデータ長を有し、クリップ間の接続状態に関する情報を示す。記録用途の記録媒体に対しては、フィールドConnectionConditionの値として"1"、"5"または"6"が用いられる。フィールドConnectionConditionの値が"1"で、そのクリップと直前のクリップとがシームレス接続しないことを示し、フィールドConnectionConditionの値が"5"または"6"で、そのクリップと直前のクリップとがシームレス接続することを示す。なお、シームレス接続とは、クリップとクリップとがフレームタイミングで連続的に再生されるように、クリップ間の再生制御を行うことをいう。
フィールドConnectionConditionの値が"5"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して長くされる(図14A参照)。これにより、クリップとクリップとを接続する際に、オーディオデータのフェイドアウト処理が可能とされる。例えば、ユーザによる記録停止操作によりクリップがクローズされる場合に、フィールドConnectionConditionの値が"5"とされる。以下、このフィールドConnectionConditionの値が"5"で示されるクリップの接続方法を、第1のシームレス接続と呼ぶ。
フィールドConnectionConditionの値が"6"で、当該プレイアイテムが参照するクリップにおいて、オーディオデータの記録長がビデオデータの記録長に対して同じか若しくは短くされる(図14B参照)。これにより、クリップとクリップとの接続をシームレスに行うことが可能とされる。例えば、ユーザ操作に応じた記録停止以外の理由、例えばシステム要因に基づきクリップがクローズされる場合に、フィールドConnectionConditionの値が"6"とされる。以下、このフィールドConnectionConditionの値が"6"で示されるクリップの接続方法を、第2のシームレス接続と呼ぶ。
なお、この第2のシームレス接続は、ファイルブレイク(File Break)と称され、フィールドConnectionConditionの値が"6"で以て、一続きのストリームファイルを複数のストリームファイルに分割して記録する際の境界の状態または条件が示される。
フィールドRefToSTCID[0]は、8ビットのデータ長を有し、STC(System Time Clock)の不連続点に関する情報を示す。フィールドINTimeおよびフィールドOUTTimeは、それぞれ32ビットのデータ長を有し、メインクリップAVストリームの再生範囲を示す。フィールドINTimeが開始点(IN点)を示し、フィールドOUTTimeが終了点(OUT点)を示す。
ブロックblkUOMaskTable()は、ユーザ入力の受付制限が設定されるテーブルである。1ビットのデータ長を有するフラグPlayItemRandomAccessFlagは、このブロックblkPlayItem()によるプレイアイテムに対してランダムアクセスを許可するか否かを規定する。続けて、7ビットのデータ長を有する領域reservedを介してフィールドStillModeが配される。フィールドStillModeは、8ビットのデータ長を有し、ブロックblkPlayItem()によるプレイアイテムにおいて、最後に表示した映像を静止画として表示させるか否かを示す。フィールドStillModeの値が"0x01"(バイナリ)であれば、if文に基づき、16ビットのデータ長を有するフィールドStillTimeにより静止時間が示される。フィールドStillModeの値が"0x01"以外であれば、当該16ビットのデータ長を有する領域がワードアライメントのために予約された領域reservedとされる。
ブロックblkSTNTable()は、このブロックblkPlayItem()によるプレイアイテムが管理しているクリップAVストリームの属性、PID番号、記録媒体上での記録位置などが管理される。
図15は、ブロックblkPlayListMark()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkPlayListMark()の最後までのデータ長を示す。
フィールドNumberOfPlayListMarksは、16ビットのデータ長を有し、このブロックblkPlayListMark()に含まれるプレイリストマークの数を示す。次のforループ文に従い、フィールドNumberOfPlayListMarksで示される数だけプレイリストマークの情報が記述される。それぞれのプレイリストマークは、forループ文におけるループ変数PL_mark_idによって識別される。
forループ文内において、8ビットのデータ長を有する領域reserveに続けてフィールドMarkTypeが配される。フィールドMarkTypeは、8ビットのデータ長を有し、マークのタイプを示す。プレイリストマークには、エントリマーク(Entry Mark)およびリンクポイント(Link Point)の2タイプが定義されており、このフィールドMarkTypeにより、何れのタイプであるかが示される。チャプタを定義するためには、エントリマークを用いる。すなわち、チャプタは、2つのプレイリストマークの間の区間として定義される。リンクポイントは、この発明と関連性が薄いので、説明を省略する。上述したフィールドNumberOfPlayListMarksは、エントリマークおよびリンクポイントを合計した値を示す。
フィールドRefToPlayItemIDは、16ビットのデータ長を有し、マークが打たれるプレイアイテムを参照する識別情報PlayItem_idが記述される。フィールドMarkTimeStampは、32ビットのデータ長を有し、マークが打たれるポイントを示すタイムスタンプが記述される。フィールドEntryESPIDは、16ビットのデータ長を有し、マークによって指し示されるエレメンタリストリームを含んでいるTSパケットのPIDの値を示す。フィールドDurationは、45kHzのクロックを単位とした計測による、32ビットのデータ長を有する符号無し整数である。このフィールドDurationに格納される値が"0"であれば、このフィールドDurationは、意味を成さない。
図16は、クリップインフォメーションファイルの一例の構造を表すシンタクスを示す。フィールドTypeIndicatorは、32ビット(4バイト)のデータ長を有し、このファイルがクリップインフォメーションファイルであることを示す。フィールドTypeIndicator2は、32ビット(4バイト)のデータ長を有し、このクリップインフォメーションファイルのバージョンを示す。
このクリップインフォメーションファイルは、ブロックblkClipInfo()、ブロックblkSequenceInfo()、ブロックblkProgramInfo()、ブロックblkCPI()、ブロックblkClipMark()およびブロックblkExtensionData()を有し、それぞれ32ビットのデータ長を有するフィールドSequenceInfoStartAddress、フィールドProgramInfoStartAddress、フィールドCPIStartAddress、フィールドClipMarkStartAddressおよびフィールドExtensionDataStartAddressは、各々対応するブロックの開始アドレスを示す。
フィールドExtensionDataStartAddressは、このクリップインフォメーションファイルの最初のバイトからの相対バイト数で、ブロックblkExtensionData()の開始アドレスを示す。相対バイト数は、"0"から開始される。若し、このフィールドExtensionDataStartAddressの値が"0"であれば、このファイル"index.bdmv"内に、ブロックblkExtensionData()が存在しないことを示す。
ブロックblkClipInfo()は、これらの開始アドレスを示すフィールドに続く、96ビットのデータ長を有する領域reservedの次から開始される。ブロックblkClipInfo()は、このクリップインフォメーションファイルが管理するクリップAVストリームに関する情報が記述される。ブロックblkSequenceInfo()は、STCやATC(アライバルタイムベース)が連続しているシーケンスをまとまりとして管理する情報が記述される。ブロックblkProgramInfo()は、このクリップインフォメーションファイルに管理されるクリップAVストリームの符号化方式、クリップAVストリーム中のビデオデータのアスペクト比などの情報が記述される。ブロックblkClipMark()は、チャプタ位置などの、クリップに付された頭出しのためのインデックス点(ジャンプポイント)が記述される。ブロックblkCPI()は、ランダムアクセス開始点などの、AVストリーム中の特徴的な箇所を表す特徴点情報CPIに関する情報が格納される。
図17は、ブロックblkClipInfo()の一例の構造を表すシンタクスを示す。フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkClipInfo()の最後までのデータ長を示す。16ビットのデータ長を有する領域reservedを介して、フィールドClipStreamTypeが配される。
フィールドClipStreamTypeは、8ビットのデータ長を有し、クリップAVストリームの種別を表す。このフィールドClipStreamTypeの値は、例えば"1"に固定的とされる。フィールドApplicationTypeは、8ビットのデータ長を有し、クリップAVストリーム(拡張子が「m2ts」のファイル)がどのような多重化によって作られているかを示す。フィールドApplicationTypeの値が"1"で、対応するクリップAVストリームは、通常の動画が再生される。続けて31ビットのデータ長を有する領域reservedが配される。
データ長が1ビットのフラグIsCC5は、プレイリストにおけるブロックblkPlayItem()によって、対応するクリップと次のクリップとの接続を、上述した第1のシームレス接続、すなわちフィールドConnectionConditionの値が"5"で示される方法で行うか否かを示す。フラグIsCC5の値が"1"(バイナリ値)であれば、クリップ間の接続が第1のシームレス接続によりなされていることを示す。
フィールドTSRecordingRateは、クリップAVストリームファイルの記録レートをバイト/秒で表したものである。フィールドNumberOfSourcePacketsは、クリップAVストリームに含まれるパケット数を表す。システムにより予約された1024ビットのデータ長の領域reservedを介してブロックTSTypeInfoBlock()が配される。ブロックTSTypeInfoBlock()は、クリップAVストリームが格納されるパケットのタイプを示す情報が格納される。このブロックTSTypeInfoBlock()は、この発明との関連性が薄いので、詳細な説明を省略する。
次のif文以下の情報は、上述のフラグIsCC5の値が"1"、すなわち、対応するクリップと次のクリップとの接続を第1のシームレス接続で行うとされた場合に記述される。if文の次の8ビットのデータ長を有する領域reservedを介してフィールドFollowingClipStreamTypeが配されるフィールドFollowingClipStreamTypeは、8ビットのデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップのタイプが記述される。8ビットのデータ長を有する領域reservedを介してフィールドFollowingClipInformationFileNameが配される。
フィールドFollowingClipInformationFileNameは、40ビット(5バイト)のデータ長を有し、このクリップインフォメーションファイルに対応するクリップの次のクリップに対応するクリップインフォメーションファイルのファイル名が記述される。次のフィールドClipCodecIdentifierは、32ビット(4バイト)のデータ長を有し、当該次のクリップの符号化方式を示す。この例では、フィールドClipCodecIdentifierは、ISO646に既定の方式で符号化された4文字の文字列値"M2TS"に固定的とされる。次に8ビットのデータ長を有する領域reservedが配される。
図18は、クリップインフォメーションファイルにおけるブロックblkCPI()の一例の構造を表すシンタクスを示す。MPEGストリームのような、フレーム間圧縮を行っている符号化ストリームにおいては、デコード開始可能な箇所は、GOP(Group Of Picture)の先頭など一部の箇所に限定されていることが多い。CPI(Characteristic Point Information)とは、そのデコード可能な開始点の位置の情報を集めたデータベースで、再生時刻と、ファイル内アドレスとが対応付けられたテーブルになっている。すなわち、CPIは、デコード単位の先頭位置を示す情報がテーブル化されている。
このようにデータベースを定めることで、例えば、任意の時刻から再生したい場合、再生時刻を元にCPIを参照することによって再生位置のファイル内アドレスがわかる。このアドレスは、デコード単位の先頭となっているため、プレーヤは、そこからデータを読み出してデコードし、素早く画像を表示することができる。
なお、このCPIに格納される、デコード単位の先頭位置(この例ではGOPの先頭位置)を、EP(Entry Point)エントリと称する。
図18において、フィールドLengthは、32ビットのデータ長を有し、このフィールドLengthの直後からブロックblkCPI()の最後までのデータ長を示す。次のif文に従い、フィールドLengthの値が0でなければ、12ビットのデータ長を有する領域reservedを介してフィールドCPITypeが配される。フィールドCPITypeは、4ビットのデータ長を有し、CPIの種類を示す。次のブロックblkEPMap()は、対応するクリップAVストリームファイルにおけるPTS値とバイトアドレスとの関連付けを行うテーブルが格納される。
図19は、ブロックblkEPMap()の一例の構造を表すシンタクスを示す。8ビットのデータ長を有する領域reservedを介してフィールドNumberOfStreamPIDEntriesが配される。フィールドNumberOfStreamPIDEntriesは、8ビットのデータ長を有し、ブロックblkEPMap()におけるブロックblkEPMapForOneStreamPIDのエントリ数を示す。第1のforループ文に従い、値[k]をループ変数として、フィールドNumberOfStreamPIDEntriesに示される数だけ、エントリポイントに関する情報が記述される。
第1のforループ文内において、フィールドStreamPID[k]は、16ビットのデータ長を有し、ブロックblkEPMap()の中で[k]番目にエントリされるブロックblkEPMapForOneStreamPID(以下、[k]番目のブロックblkEPMapForOneStreamPIDと記述する)によって参照されるエレメンタリストリームを伝送するトランスポートパケットのPIDの値を示す。
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バイト目からのバイト数で示される。
上述の第1のforループ文による記述の後、16ビットの整数倍のデータ長を有するパディングワード(第2のforループ文)を挟んで記述される第3の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と呼ぶ。
図20は、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の一例の構造を表すシンタクスを示す。ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)のセマンティクスを説明するために、先ず、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)に格納されるデータの元となるエントリである、エントリPTSEPStartおよびエントリSPNEPStartの意味について説明する。
エントリPTSEPStartと、エントリPTSEPStartに関連付けられたエントリSPNEPStartは、それぞれAVストリーム上のエントリポイントを指す。そして、エントリPTSEPFineと、エントリPTSEPFineに関連付けられたエントリPTSEPCoarseは、同一のエントリPTSEPStartから導かれる。また、エントリSPNEPFineと、エントリSPNEPFineに関連付けられたエントリSPNEPCoarseは、同一のエントリSPNEPStartから導かれる。
図21は、エントリPTSEPCoarseおよびエントリPTSEPFineの一例のフォーマットについて示す。PTSすなわちエントリPTSEPStartは、データ長が33ビットの値である。MSBのビットを第32ビット、LSBのビットを第0ビットとするとき、この図21の例では、大まかな単位で検索を行う際に用いられるエントリ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ビットは、用いられない。
図22は、エントリSPNEPCoarseおよびエントリSPNEPFineの一例のフォーマットについて示す。ソースパケット番号すなわちエントリSPNEPStartは、データ長が32ビットの値である。MSBのビットを第31ビット、LSBのビットを第0ビットとするとき、この図22の例では、大まかな単位で検索を行う際に用いられるエントリSPNEPCoarseは、エントリSPNEPStartの第31ビットから第0ビットまでの全てのビットが用いられる。また、より精密な検索を行うためのエントリSPNEPFineは、エントリSPNEPStartの第16ビットから第0ビットまでの17ビットが用いられる。エントリSPNEPFineにより、例えば略25MB(Mega Byte)のAVストリームファイルまでの範囲で、検索が可能である。
なお、ソースパケット番号の場合でも、エントリSPNEPCoarseとしてMSB側の所定ビット数の値だけ用いるようにしてもよい。例えば、エントリSPNEPCoarseとして、エントリSPNEPStartの第31ビットから第16ビットまでの17ビットを用い、エントリSPNEPFineは、エントリSPNEPStartの第16ビットから第0ビットまでの17ビットを用いる。
上述に基づき、エントリPTSEPStartおよびエントリSPNEPStartは、次のように定義される。
エントリPTSEPStartは、図21で示したように、データ長が33ビットの符号無し整数であり、AVストリーム中で、ランダムアクセスが可能なピクチャ(例えばIDR(Instantaneous Decoding Refresh)ピクチャやI(Intra)ピクチャ)から開始するビデオアクセスユニットの33ビット長のPTSを示す。
エントリSPNEPStartは、図22で示したように、32ビットの符号無し整数であり、エントリPTSEPStartに関連付けられたビデオアクセスユニットの第1バイト目を含むソースパケットの、AVストリームの中でのアドレスを示す。エントリSPNEPStartは、ソースパケット番号の単位で表され、AVストリームファイル中の最初のソースパケットから、値"0"を初期値として、ソースパケット毎に1ずつ増加する値としてカウントされる。
図20を参照し、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)は、第1のforループ文により大まかな単位での検索を行うためのサブテーブル(EP coarse table)が記述され、第2のforループ文によりサブテーブル(EP coarse table)の検索結果に基づきより詳細な検索を行うためのサブテーブル(EP fine table)が記述される。
第1のforループ文の直前に、フィールドEPFineTableStartAddressが配される。フィールドEPFineTableStartAddressは、32ビットのデータ長を有し、最初の第2のforループにおけるフィールドReservedEPFine[EP_fine_id]の第1バイト目の開始アドレスを、ブロックblkEPMapForOneStreamPID(EP_stream_type, Nc, Nf)の第1バイト目からの相対バイト数で示す。相対バイト数は、値"0"から開始する。
第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]の値により与えられる。
第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それぞれが格納される。
エントリPTSEPCoarseおよびエントリPTSEPFine、ならびに、エントリSPNEPCoarseおよびエントリSPNEPFineは、次のように導かれる。サブテーブル(EP fine table)に、関連するデータSPNEPStartの値の昇順に並んでいるNf個のエントリがあるとする。それぞれのエントリPTSEPFineは、対応するエントリPTSEPStartから、次式(1)のように導かれる。
PTSEPFine[EP_fine_id]=(PTSEPStart[EP_fine_id] >>9)/211 ・・(1)
エントリPTSEPCoarseと、対応するエントリPTSEPFineとの関係は、次式(2)、(3)の通りである。
PTSEPCoarse[i]=(PTSEPStart[RefToEPFineID[i]] >>19)/214 ・・(2)
PTSEPFine[RefToEPFineID[i]]=(PTSEPStart[RefToEPFineID[i]] >>9)/211 ・・(3)
それぞれのエントリSPNEPFineは、対応するエントリSPNEPStartから、次式(4)のように導かれる。
SPNEPFine[EP_fine_id]=SPNEPStart[EP_fine_id]/217 ・・(4)
エントリSPNEPCoarseと、対応するエントリSPNEPFineとの関係は、次式(5)、(6)の通りである。
SPNEPCoarse[i]=SPNEPStart[RefToEPFineID[i]] ・・(5)
SPNEPFine[RefToEPFineID[i]]=SPNEPStart[RefToEPFineID[i]]/217 ・・(6)
なお、上述の式(1)〜(6)において、記号「>>x」は、データのLSB側からxビットを超える桁からビットを用いることを意味する。
1−4.仮想プレーヤについて
次に、仮想プレーヤについて、概略的に説明する。上述したようなデータ構造を有するディスクがプレーヤに装填されると、プレーヤは、ディスクから読み出されたムービーオブジェクトなどに記述されたコマンドを、プレーヤ内部のハードウェアを制御するための固有のコマンドに変換する必要がある。プレーヤは、このような変換を行うためのソフトウェアを、プレーヤに内蔵されるROM(Read Only Memory)に予め記憶している。このソフトウェアは、ディスクとプレーヤを仲介してプレーヤにAVCHDフォーマットの規定に従った動作をさせることから、仮想プレーヤと称される。
図23は、この仮想プレーヤの動作を概略的に示す。図23Aは、ディスクのローディング時の動作の例を示す。ディスクがプレーヤに装填されディスクに対するイニシャルアクセスがなされると(ステップS30)、1のディスクにおいて共有的に用いられる共有パラメータが記憶されるレジスタが初期化される(ステップS31)。そして、次のステップS32で、ムービーオブジェクトなどに記述されたプログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク装填時のように、ディスクの再生が初めて行われることをいう。
図23Bは、プレーヤが停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。最初の停止状態(ステップS40)に対して、ユーザにより、例えばリモートコントロールコマンダなどを用いて再生が指示される(UO:User Operation)。再生が指示されると、先ず、レジスタすなわち共通パラメータが初期化され(ステップS41)、次のステップS42で、ムービーオブジェクト実行フェイズに移行する。
ムービーオブジェクトの実行フェイズにおけるプレイリストの再生について、図24を用いて説明する。UOなどにより、タイトル番号#1のコンテンツを再生開始する指示があった場合について考える。プレーヤは、コンテンツの再生開始指示に応じて、上述した図2に示されるインデックステーブル(Index Table)を参照し、タイトル#1のコンテンツ再生に対応するオブジェクトの番号を取得する。例えばタイトル#1のコンテンツ再生を実現するオブジェクトの番号が#1であったとすると、プレーヤは、ムービーオブジェクト#1の実行を開始する。
この図24の例では、ムービーオブジェクト#1に記述されたプログラムは2行からなり、1行目のコマンドが"Play PlayList(1)"であるとすると、プレーヤは、プレイリスト#1の再生を開始する。プレイリスト#1は、1以上のプレイアイテムから構成され、プレイアイテムが順次再生される。プレイリスト#1中のプレイアイテムの再生が終了すると、ムービーオブジェクト#1の実行に戻り、2行目のコマンドが実行される。図24の例では、2行目のコマンドが"jump MenuTitle"であって、このコマンドが実行されインデックステーブルに記述されたメニュータイトル(MenuTitle)を実現するムービーオブジェクトの実行が開始される。
2.発明に適用可能な記録装置について
次に、この発明に適用可能な記録装置について説明する。図25は、この発明に適用可能な記録再生装置100の一例の構成を示す。この図25に例示される記録再生装置100は、外部から入力されるビデオデータおよびオーディオデータを記録媒体に記録し、記録媒体に記録されたビデオデータおよびオーディオデータを再生するように構成されている。
適用可能な圧縮符号化や多重化の方式としては、様々に考えられる。例えば、H.264|AVCに規定される方式を、この発明の実施の一形態の圧縮符号化として適用することができる。また、多重化方式は、例えばMPEG2システムズが適用される。
制御部30は、例えば図示されないCPU(Central Processing Unit)上で動作するプログラムであって、CPUに接続されるROM(Read Only Memory)に予め記憶されたプログラムやデータに基づき、同じくCPUに接続されるRAM(Random Access Memory)をワークメモリとして用いてこの記録再生装置の記録再生部50の各部を制御する。なお、制御部30と記録再生部50の各部とを接続する経路は、繁雑さを避けるために、図25では省略している。
制御部30上で動作するプログラムにより、この記録再生装置で用いられるファイルシステムが提供される。例えば、制御部30は、このファイルシステムに基づき、後述する各記録媒体にデータが記録される際の、記録媒体の物理的なアドレスと当該データが格納されるファイルとの関連付けを行うと共に、各データが格納されるファイルの論理的な管理情報を生成する。上述した図5および図6に示すディレクトリ構造は、ファイルの論理的な管理情報の一例である。新規ファイルの作成やファイルオープン、クローズは、ファイルシステム基づき制御部30により制御される。
UI(User Interface)部31は、この記録装置の動作をユーザが操作するための操作子が所定に設けられ、操作子に対する操作に応じた制御信号を出力する。この制御信号は、制御部30に供給される。制御部30は、ユーザ操作に応じてUI部31から供給された制御信号に基づきなされるプログラムの処理により、記録再生部50の各部の動作を制御する。また、UI部31は、簡易的な表示部を有し、所定の表示、例えばダビングを行うチャプタを示す情報などを表示することができるようになっている。
例えば、UI部31に対してなされた操作に応じて、記録再生装置によるハードディスク21に対してデータを記録する動作の開始および停止の動作や、ハードディスク21からデータを再生する再生動作が制御部30により制御される。また例えば、UI部31に対してなされた操作に応じて、クリップに対してマークが打たれ、チャプタが設定される。
信号処理部10は、ビデオコーデック部11、オーディオコーデック部12、マルチプレクサ13およびデマルチプレクサ14とを含む。ビデオコーデック部11は、入力されたベースバンドのビデオデータを圧縮符号化して出力するビデオエンコード部と、圧縮符号化されて入力された圧縮ビデオデータを復号化してベースバンドのビデオデータとして出力するビデオデコード部とを有する。また、ビデオコーデック部11は、複数フレームのビデオデータを格納可能なバッファメモリを有する。このバッファメモリは、ビデオエンコード部およびビデオデコード部とで共用して用いられる。
ビデオエンコード部は、端子40から供給されたベースバンドのディジタルビデオデータをバッファメモリに溜め込んで、所定の方式で以て圧縮符号化する。H.264|AVCに規定される方式に準じて圧縮符号化がなされるこの例では、例えば、DCT(Discrete Cosine Transform)と画面内予測とによりフレーム内圧縮を行うと共に、動きベクトルを用いたフレーム間圧縮を行い、さらにエントロピー符号化を行い圧縮効率を高める。ビデオエンコード部で圧縮符号化されたディジタルビデオデータは、H.264|AVCエレメンタリストリーム(ES)として出力される。
ビデオデコード部は、供給された圧縮ビデオデータをバッファメモリに溜め込んで、圧縮符号化方式に対応した復号化方式でデコードし、ベースバンドのディジタルビデオデータとして出力する。例えば、ビデオエンコード部がH.264|AVCに規定される方式に準じて圧縮符号化を行うこの例では、ビデオデコード部もビデオエンコード部に対応して、H.264|AVCに規定される方式に準じてデコード処理を行う。ビデオデコード部は、後述するデマルチプレクサ14で抽出される、DTS(Decoding Time Stamp)およびPTS(Presentation Time Stamp)で示される時刻に基づき、デコードおよび出力を行うことができる。ビデオデコード部でデコードされて得られたベースバンドのディジタルビデオデータは、端子41から出力される。
オーディオコーデック部12は、入力されたベースバンドのオーディオデータを圧縮符号化して出力するオーディオエンコード部と、圧縮符号化されて入力された圧縮オーディオデータを復号化してベースバンドのオーディオデータとして出力するオーディオデコード部とを有する。
オーディオエンコード部は、端子42から供給されたベースバンドのディジタルオーディオデータを所定の圧縮符号化方式、例えばドルビーディジタル方式により圧縮符号化する。オーディオデータの圧縮符号化方式は、ドルビーディジタル方式に限られるものではない。オーディオデータを圧縮符号化せず、ベースバンドのデータのまま用いることも考えられる。オーディオデコード部は、供給された圧縮オーディオデータを圧縮符号化方式に対応した復号化方式でデコードし、ベースバンドのオーディオデータとして出力する。オーディオエンコード部がドルビーディジタル方式により圧縮符号化されるこの例では、オーディオデコード部もオーディオエンコード部に対応して、ドルビーディジタル方式に準じた復号化方式でデコードがなされる。デコードされたオーディオデータは、ビデオコーデック部11のビデオデコード部から出力されるビデオデータと同期的に、端子43から出力される。
マルチプレクサ13は、例えば、MPEG2システムズに準じて多重化が行われるこの例では、MPEG2のトランスポートストリームを用いて、供給された圧縮ビデオデータおよび圧縮オーディオデータを時分割で多重化する。例えば、マルチプレクサ13は、バッファメモリを有し、供給された圧縮ビデオデータおよび圧縮オーディオデータを一旦バッファメモリに格納する。バッファメモリに格納された圧縮ビデオデータは、所定サイズ毎に分割されヘッダが付加されて、PES(Packetized Elementary Stream)パケット化される。圧縮オーディオデータも同様に、所定サイズ毎に分割されヘッダが付加されてPESパケット化される。ヘッダには、パケットに格納されるデータの再生時刻を示すPTSや復号時刻を示すDTSといった、MPEG2システムズに規定される所定の情報が格納される。PESパケットは、さらに分割されて固定長のトランスポートパケット(TSパケット)のペイロードに詰め込まれる。TSパケットのヘッダには、ペイロードに詰め込まれたデータ種別などを識別するためのPID(Packet Identification)が格納される。TSパケットに対してさらに所定データ長のヘッダが付加され、ソースパケットが形成される。
デマルチプレクサ14は、マルチプレクサ13と逆の処理を行い、パケットから圧縮ビデオデータおよび圧縮オーディオデータを抽出する。例えば、供給されたソースパケットからヘッダを分離してTSパケットとし、TSパケットのヘッダからPIDを検出し、TSパケットをペイロードに格納されるデータ種別毎に振り分ける。そして、振り分けられたTSパケットのそれぞれについて、ペイロードに格納されたデータを取り出し、PESパケットを再構築する。さらに、PESパケットのペイロードに格納された圧縮ビデオデータや圧縮オーディオデータを取り出し、PESヘッダに格納された情報などに基づきヘッダ情報などを付加し、それぞれ1本のエレメンタリストリームとして出力する。
ストリームバッファ15は、マルチプレクサ13(記録時)または記録再生制御部20(再生時)から供給されたソースパケットを一時的に格納する。ストリームバッファ15に対するソースパケットの読み書きのタイミングを所定に制御することで、後述する各記録媒体に対するアクセス速度と、オーディオおよびビデオデータのエンコードやデコードなどの信号処理速度との間の整合性をとる。
記録再生制御部20は、複数の記録媒体に対するデータの記録および再生を制御する。この図25の例では、記録再生制御部20に対して固定的にハードディスク21が接続される。さらに、記録再生制御部20は、記録可能なタイプのDVD23(以下、DVD23と略称する)に対する記録再生に対応するドライブ装置22が接続されると共に、記憶内容が書き換え可能で、且つ、記憶内容が不揮発性の、脱着可能なメモリ24が装着可能とされている。記録再生制御部20は、例えば制御部30といった上位からの命令に基づき、指定された記録媒体について、指定されたアドレスに対するデータの書き込みや、指定されたアドレスからのデータの読み出しを行う。
なお、ここでは、記録再生成制御部16にハードディスク21と、ドライブ装置22と、メモリ24とが接続されるように説明したが、これはこの例に限定されない。ハードディスク21、ドライブ装置22およびメモリ24のうち何れか1つが省略されていてもよい。また、ドライブ装置22を複数台接続するようにしてもよいし、同様に複数のメモリ24を同時に装着可能としてもよい。さらに、上述ではドライブ装置22が記録可能なタイプのDVDに対応するものとして説明したが、これはこの例に限定されず、例えばより大容量を実現したBlu−ray Disc(ブルーレイディスク:登録商標)に対応するようにしてもよい。
なお、脱着可能な記録媒体であるDVD23や、メモリ24は、少なくとも排出動作は、制御部30の制御に基づきなされる。例えば、UI部31や、記録再生装置の筐体の他の部分に設けられたイジェクトボタンの操作に応じて、制御部30によりドライブ装置22やメモリ24の排出機構(図示しない)が制御され、記録媒体が排出される。
管理情報処理部16は、上述したインデックスファイル("index.bdmv")、ムービーオブジェクトファイル("MovieObject.bdmv")、プレイリストファイル("xxxxx.mpls")およびクリップインフォメーションファイル("zzzzz.clpi")に関する処理を行う。
管理情報処理部16は、例えば、上述した制御部30と共に、CPU上で動作するプログラムにより機能が実現される。勿論、管理情報処理部16を制御部30とは異なるハードウェアで構成することも可能である。管理情報処理部16が制御部30上で動作するプログラムで実現される場合、制御部30および管理情報処理部16を構成するCPUに接続されるRAMが、メモリ17に対応する。
このような構成を有する記録再生装置における、記録時の動作について説明する。なお、ここでは、端子40および42から供給されたビデオデータおよびオーディオデータを、ハードディスク21に記録するものとして説明する。
ベースバンドのビデオデータが端子40から記録再生部50に入力され、信号処理部10に供給される。そして、このビデオデータは、ビデオコーデック部11内のビデオエンコード部に供給される。例えば制御部30による記録開始の命令に応じて、ビデオエンコード部は、供給されたビデオデータの圧縮符号化を開始する。ビデオエンコード部は、ベースバンドのディジタルビデオデータを圧縮符号化してH.264|AVCのエレメンタリストリーム(ES)として出力する。このエレメンタリストリームは、マルチプレクサ13に供給される。
ベースバンドのオーディオデータが端子42から記録再生部50に入力され、信号処理部10に供給される。そして、このオーディオデータは、オーディオコーデック部12内のオーディオエンコード部に供給される。オーディオエンコード部は、上述の制御部30による記録開始命令に応じて、供給されたオーディオデータの圧縮符号化を開始する。オーディオエンコード部で圧縮符号化されたオーディオデータは、マルチプレクサ13に供給される。
マルチプレクサ13は、それぞれ圧縮符号化されて供給されたディジタルビデオデータおよびディジタルオーディオデータを所定の方式で多重化し、1本のデータストリームとして出力する。例えば、マルチプレクサ13は、バッファメモリを有し、供給された圧縮ビデオデータおよび圧縮オーディオデータを一旦バッファメモリに格納する。
バッファメモリに格納された圧縮ビデオデータは、所定構造毎に分割されヘッダが付加されて、PESパケット化される。圧縮オーディオデータも同様に、所定サイズ毎に分割されヘッダが付加されてPESパケット化される。ヘッダには、PTSやDTSといった、MPEG2システムズに規定される所定の情報が格納される。PESパケットは、さらに分割されてトランスポートパケット(TSパケット)のペイロードに詰め込まれ、ペイロードに詰め込まれたデータを識別するためのPIDがヘッダに格納される。TSパケットに対して、ソースパケットを識別するためのソースパケット番号などが格納される所定長のヘッダがさらに付加され、ソースパケットが形成される。マルチプレクサ13から出力されたソースパケットは、ストリームバッファ15に一旦溜め込まれる。
記録再生制御部20は、ストリームバッファ15に溜め込まれたデータのデータ量を監視し、ストリームバッファ15に所定量以上のデータが溜め込まれると、ストリームバッファ15からハードディスク21の記録単位毎にデータを読み出してハードディスク21に書き込む。
管理情報処理部16は、記録データに基づき、メモリ17をワークメモリとして用いて、管理情報、すなわち上述したインデックスファイル、ムービーオブジェクトファイル、プレイリストファイルおよびクリップインフォメーションファイルに格納するための情報を生成する。
一例として、管理情報処理部16は、制御部30の制御に従い、制御部30、マルチプレクサ13および記録再生制御部20から供給される情報に基づき、メモリ17をワークメモリとして用いながら、記録中のクリップAVストリームファイルに対応するクリップ情報を生成する。クリップ情報は、換言すれば、クリップインフォメーションファイルを作成するために必要な情報である。生成された情報は、メモリ17上に保持される。
ここで、クリップインフォメーションファイルに格納される情報のうちブロックblkCPI()内のEPエントリは、記録に対して動的な情報であって、記録の経過に伴い順次、生成される情報である。管理情報処理部16は、マルチプレクサ13から、ビデオアクセスユニットのPTSと、ビデオアクセスユニットの第1バイト目を含むソースパケットのソースパケット番号とを取得し、揮発性メモリ17をワークメモリとして用いてエントリPTSEPStartおよびエントリSPNEPStartを生成する。生成されたエントリPTSEPStartおよびエントリSPNEPStartは、メモリ17上に保持される。
この記録再生装置100が記録開始に伴い記録開始位置にプレイリストマークを設けるようにされている場合、UI部31に対する記録開始操作に応じて生成される先頭のフレームに対応する再生時刻をフィールドMarkTimeStampの値として持つプレイリストマークが、管理情報処理部16において作成される。作成されたプレイリストマークは、揮発性メモリ17上のプレイリストファイルに格納される情報に対して追加され保持される。
メモリ17に記憶された管理情報は、所定のタイミングでハードディスク21に書き込まれる。例えば、UI部31に対する記録終了操作に応じて、メモリ17に記憶された管理情報がハードディスク21に書き込まれる。また、メモリ17に記憶された管理情報のハードディスク21への書き出しを、電源OFF操作時にも行うようにできる。
再生時の動作について説明する。ここでは、上述のようにしてハードディスク21に記録されたクリップを再生する場合について説明する。例えば、記録再生装置100の電源がONとされると、ハードディスク21から、インデックスファイル、ムービーオブジェクトファイルが読み込まれ、管理情報処理部16に渡される。管理情報処理部16は、これらのファイルに格納される情報を、メモリ17に記憶する。
制御部30は、管理情報処理部16からメモリ17に記憶された情報を取得し、取得された情報に基づき、例えば、UI部31が有する表示部に対してハードディスク21に記録されているクリップに関する情報を表示させる。ユーザは、この表示に基づきUI部31に対して所定の操作を行うことで、ハードディスク21に記録されているクリップの再生を指示することができる。
制御部30は、UI部31に対する操作に応じて管理情報処理部16および記録再生制御部20を制御し、メモリ17に記憶されているインデックスファイルの情報を参照してムービーオブジェクトファイルに記述されるコマンドを呼び出し、コマンドに記述されるプレイリストファイルをハードディスク21から読み出す。そして、読み出されたプレイリストファイルに基づき当該プレイリストファイルに格納されるプレイアイテムに参照されるクリップインフォメーションファイルをハードディスク21から読み出す。ハードディスク21から読み出されたこれらプレイリストファイルおよびクリップインフォメーションファイルに格納される情報は、メモリ17に記憶される。
制御部30は、メモリ17上に記憶されたクリップインフォメーションファイルに基づき、対応するクリップAVストリームファイルを読み出すように命令を出す。記録再生制御部20は、この命令に従い、ハードディスク21からクリップインフォメーションファイルとクリップAVストリームファイルとを読み出す。クリップAVストリームファイルは、ハードディスク21からソースパケット単位で読み出され、記録再生制御部20を介してストリームバッファ15に溜め込まれる。
デマルチプレクサ14は、ストリームバッファ15に溜め込まれたデータ量を監視し、ストリームバッファ15に所定量以上のソースパケットが溜め込まれると、ストリームバッファ15からビデオコーデック部11のビデオでコード部がデコードに必要とする分のデータを、ソースパケット単位で読み出す。読み出されたソースパケットは、デマルチプレクサ14に供給されバッファメモリに一旦格納され、ヘッダを分離されTSパケットとされる。そして、TSパケットのPIDに基づきデータ種類毎に振り分けられペイロードに格納されたデータからPESパケットが再構築される。さらに、PESパケットのペイロードからデータが取り出されると共に、PESヘッダの情報に基づき、DTSやPTSといったデコードや再生の時刻を指定する情報など、所定にヘッダ情報などが付加され、圧縮符号化されたビデオデータおよびオーディオデータのエレメンタリストリームがそれぞれ生成される。
圧縮ビデオデータは、ビデオコーデック部11のビデオでコード部に供給される。ビデオでコード部は、供給された圧縮ビデオデータをバッファメモリに溜め込み、所定ピクチャ分のデータが溜め込まれたら、バッファメモリに溜め込まれたデータに対してデコード処理を開始する。デコードされたビデオデータは、例えば図示されないシステムクロックから供給されるSTC(System Time Clock)に基づき、PTSに従いフレームタイミングで順次出力される。
一方、圧縮オーディオデータは、オーディオコーデック部12のオーディオデコード部に供給され、所定にデコード処理がなされる。デコードされたオーディオデータは、ビデオコーデック部11からデコードされて出力されるビデオデータと同期的に、オーディオコーデック部12から出力される。
3.発明に適用可能なデータ構造について
図26は、この発明に適用可能な一例のデータ構造を示す。インデックスファイル"index.bdmv"は、1乃至複数のタイトルを有する。ムービーオブジェクトファイル"MovieObject.bdmv"は、インデックスファイル"index.bdmv"が有するタイトルに対応して、1乃至複数のムービーオブジェクトを含む。ムービーオブジェクトのそれぞれは、1つのプレイリストファイル"xxxxx.mpls"を呼び出す。プレイリストファイル"xxxxx.mpls"は、1乃至複数のプレイアイテムを含み、プレイアイテムのそれぞれは、クリップインフォメーションファイル"zzzzz.clpi"を参照する。クリップインフォメイションファイル"zzzzz.clpi"は、クリップの実体であるクリップAVストリームファイル"zzzzz.m2ts"と1対1の関係にある。
このような構造において、ユーザには、インデックスファイル"index.bdmv"が有するタイトル単位で、記録媒体に記録されたクリップが見えることになる。ユーザが所望のタイトルを選択すると、ムービーオブジェクトファイル"MovieObject.bdmv"から当該タイトルに対応するムービーオブジェクトが参照される。そして、参照されたムービーオブジェクトに記述されたプレイリストファイル"xxxxx.mpls"が呼び出され、プレイリストファイルに含まれるプレイアイテムに従いクリップインフォメーションファイル"zzzzz.clpi"が参照され対応するクリップAVストリームファイル"zzzzz.m2ts"が再生される。
プレイリストファイル"xxxxx.mpls"に対して時刻情報を示すマーク(プレイリストマーク)を設けることで、ジャンプ位置を設定することができる。マークによってチャプタが定義される。チャプタは、ユーザから見えるタイトル内の再生単位である。すなわち、ユーザは、再生位置をチャプタ単位で指定することができる。記録開始位置には、必ずマークが設けられる。記録開始位置以外の位置にマークを設けることもできる。
すなわち、プレイリストファイル"xxxxx.mpls"に対して、例えば記録開始に伴いプレイリストマークを設定すると共に、クリップを参照するプレイアイテムを登録することで、当該プレイリストファイルに対してチャプタが形成される。換言すれば、プレイリストファイルに対してプレイリストマークを記録すると共に、プレイアイテムを記録することで、当該プレイリストファイルに対してチャプタが記録されるといえる。
上述したように、リアルプレイリストは、クリップと共に生成される。図26の例では、プレイリストファイル"00000.mpls"、"00200.mpls"および"00018.mpls"がリアルプレイリストの属性を有する。
これらのうち、プレイリストファイル"00000.mpls"は、新規に生成されたクリップの情報をプレイリストに追記記録していく例である。例えば、クリップAVストリームファイル"00001.m2ts"に対応するクリップインフォメーションファイル"00001.clpi"を参照するプレイアイテム#0が既に格納されているプレイリストファイル"00000.mpls"に対して、新規に記録されたクリップAVストリームファイル"00125.m2ts"に対応するクリップインフォメーションファイル"00125.m2ts"を参照するプレイアイテム#1が追記記録される。プレイアイテムが示す先頭の時刻には、それぞれマークが設けられる。このプレイリストファイル"00000.mpls"を再生すると、ますプレイアイテム#0に基づきクリップAVストリームファイル"00001.m2ts"が再生され、続けてプレイアイテム#1に基づきクリップAVストリームファイル"00125.m2ts"が再生される。
プレイリストファイル"00200.mpls"は、1のクリップに対して1のプレイリストファイルが生成され、プレイリストファイルが唯一つのプレイアイテムのみを含む例である。
さらに、プレイリストファイル"00018.mpls"は、複数のプレイアイテムが1のクリップを参照する例である。例えば、記録開始および停止によりプレイアイテムが生成されると共に、1のクリップに対してデータが追記されていくような制御が考えられる。プレイアイテム#0の先頭にマークが設けられ、プレイアイテム#0およびプレイアイテム#1を連続的に再生することで、クリップAVストリームファイル"00002.m2ts"の全体が再生される。
一方、バーチャルプレイリストは、図26にプレイリストファイル"00005.mpls"として示されるように、既に存在するクリップに対して再生区間を指定する。この例では、プレイリストファイル"00005.mpls"に含まれるプレイアイテム#0がクリップインフォメーションファイル"00028.clpi"を参照して区間を指定し、プレイアイテム#1がクリップインフォメーションファイル"00002.clpi"を参照して区間を指定している。また、プレイアイテム#0およびプレイアイテム#1の先頭に、マークが設けられている。プレイリストファイル"00005.mpls"を再生すると、先ずプレイアイテム#0に基づきクリップAVストリームファイル"00028.m2ts"の指定区間が再生され、続けて、プレイアイテム#1に基づきクリップAVストリームファイル"00002.m2ts"が再生される。
上述したように、マーク(プレイリストマーク)は、記録開始位置以外の位置にも設けることができる。例えば、クリップを再生中や一時停止動作(ポーズ)中などに、UI部31に対して所定の操作を行うことで、再生中であれば操作のタイミングに応じた位置に、ポーズ中であればポーズされている位置に、マークが設けられる。マークが設けられることで、チャプタが新たに定義される。例えば、マークAおよびマークBの間に新たにマークCを設けると、マークAおよびマークCにより定義されるチャプタと、マークCおよびマークBにより定義されるチャプタとが新たに定義される。マークAおよびマークBにより定義されるチャプタが、マークCの設定により、マークAおよびマークCにより定義されるチャプタと、マークCおよびマークBにより定義されるチャプタとに分割されること考えることもできる。
4.発明の実施の第1の形態について
4−1.実施の第1の形態によるダビング処理について
次に、この発明の実施の第1の形態について説明する。この発明は、概略的には、上述したようにして記録媒体に記録されたクリップを他の記録媒体にダビングする際の処理に関するものである。このダビングの際に、ダビング先記録媒体に記録されるクリップの管理情報を、ダビング元のクリップに対してダビング範囲を指定する指定範囲とダビング元のクリップに対する管理情報とに基づき生成するようにしている。より具体的には、ダビング箇所をチャプタ単位で指定すると共に、複数のチャプタをダビングする際に、当該複数のチャプタがシームレス接続されるか否かを判断し、シームレス接続を管理するための管理情報をダビング先に生成する。
なお、上述もしたように、チャプタは、2つのプレイリストマークとプレイリストマークとの間の区間として定義される。より具体的には、チャプタは、プレイリストファイル内のブロックblkPlayListMark()において(図15参照)、フィールドMarkTypeがエントリマークであるループ変数PL_mark_idにより示されるプレイリストマークのうち、時間的に隣り合う2つのプレイリストマークの間の区間として定義される。
4−1−1.ダビング処理の具体的な例について
この実施の第1の形態による一例のダビング処理について、図27のフローチャートを用いて説明する。なお、ここでは、ダビング処理が図25を用いて説明した記録再生装置100を用いて行われるものとし、ハードディスク21に記録されたクリップをチャプタ単位で指定して、ドライブ装置22に装填されたDVD23にダビングするものとして説明を行う。また、図27のフローチャートにおける各処理は、所定のプログラムに基づく制御部30および管理情報処理部16による制御に従いなされる。
ダビング処理を行うにあたり、先ず、ダビング元となる記録媒体(この例ではハードディスク21)と、ダビング先となる記録媒体(この例ではドライブ装置22に装填されたDVD23)のそれぞれから管理情報、すなわち、インデックスファイル、ムービーオブジェクトファイル、プレイリストファイルおよび各クリップインフォメーションファイルを読み出す(ステップS100)。
例えば、制御部30は、UI部31に対してなされたハードディスク21からDVD23へのダビング開始を指示する操作に応じて、記録再生制御部20に対してハードディスク21に記録される、管理情報を構成するこれらのファイルを読み出すように命令を出す。記録再生制御部20は、この命令に従いハードディスク21からこれらのファイルを読み出す。また、記録再生制御部20は、ダビング先記録媒体であるDVD23に当該管理情報が存在するとき、DVD23からこれらのファイルを読み出す。読み出された管理情報は、管理情報処理部16を介してメモリ17に書き込まれる。なお、クリップインフォメーションファイルは、指定された時点でハードディスク21やDVD23から読み出すようにしてもよい。
次のステップS101で、ハードディスク21に記録されるコンテンツから、DVD23へのダビングを行うコンテンツがユーザにより選択される。コンテンツは、チャプタ単位で選択することができる。制御部30は、コンテンツすなわちチャプタの選択結果に基づきダビングを行うチャプタのリストDubbingListを作成する。リストDubbingListは、例えばチャプタの始点および終点のタイムスタンプと、当該チャプタに対応するプレイアイテムを示す情報とを含む。
チャプタの始点および終点のタイムスタンプは、チャプタを定義するプレイリストマーク、すなわち、プレイリストファイル中のブロックblkPlayListMark()におけるforループ文内に記述される、エントリマークを示すフィールドMarkTypeに対応するフィールドMarkTimeStampの値を用いることができる(図15参照)。また、プレイアイテムを示す情報は、当該エントリマークを示すフィールドMarkTypeに対応するフィールドRefToPlayItemIDの値を用いることができる(図15参照)。これらの情報は、メモリ17に書き込まれた管理情報中のプレイリストファイル中のブロックblkPlayListMark()を検索することで得られる。
ここで、ダビングを行うとして選択されたチャプタの数をN個とし、リストDubbingList中、n番目にダビングを行うチャプタを、チャプタDubbingList[n]として表すものとする。なお、リストDubbingListにおいて、チャプタのダビングの順番は、例えばチャプタが対応するプレイアイテムの、プレイリストファイルに定義される再生順に従うものとする。
一例として、制御部30は、ステップS100で読み出された管理情報に基づき、ハードディスク21に記録されるクリップに対して定義されているチャプタの情報を抽出し、抽出されたチャプタ情報に基づき、UI部31に対してUI部31が有する表示部にチャプタの一覧を表示するように命令を出す。ユーザは、このチャプタの一覧表示に基づきUI部31に対して所定の操作を行い、DVD23にダビングしたいチャプタを選択する。
なお、ステップS101における、ダビングを行うコンテンツのユーザによる選択時に、選択されたコンテンツの情報に基づき当該コンテンツがダビング可能か否かを判断するようにできる。例えば、選択されたコンテンツの特性に応じてダビング可能なコンテンツを制限することができる。
一例として、コンテンツに含まれるクリップAVストリームファイルの記録ビットレートに基づきダビング制限を行うことが考えられる。例えば、アクセス速度が高速な記録媒体をダビング元記録媒体とし、アクセス速度がダビング元記録媒体より遅い記録媒体をダビング先記録媒体とした場合、ダビング元記録媒体に対して、ダビング先記録媒体のアクセス速度を超える記録ビットレートでクリップAVストリームファイルが記録されている場合が有り得る。この場合、当該クリップAVストリームファイルをダビング元の記録媒体からダビング先の記録媒体ダビングしても、ダビング先の記録媒体から当該ダビングされたクリップAVストリームファイルを正常に再生できないことになる。
より具体的な例として、記録再生制御部20に装着されたメモリ24をダビング元の記録媒体とし、ドライブ装置22に装填されたDVD23をダビング先の記録媒体とした場合が考えられる。すなわち、メモリ24およびDVD23の記録可能なビデオデータの最大ビットレートが、例えばそれぞれ24Mbps(Mega bits per second)および18Mbpsである場合、メモリ24に対して記録ビットレートが24Mbpsで記録されたクリップAVストリームファイルをDVD23にダビングしても、DVD23にダビングされたクリップAVストリームファイルは、正常に再生されないことになる。
図28は、ステップS101におけるダビングを行うコンテンツのユーザによる選択時に、選択されたコンテンツの情報に基づき当該コンテンツがダビング可能か否かを判断する場合の一例の処理を示すフローチャートである。先ず、ステップS130で、選択されたチャプタ数を示す値Nが0とされ、ステップS131で、ユーザにより例えばUI部31が所定に操作され、N番目のダビング元のコンテンツ(チャプタ)が選択される。
次のステップS132で、ユーザが選択したコンテンツに含まれる全てのクリップインフォメーションファイルが存在するか否かが判断される。例えば、チャプタ単位で選択されたコンテンツについて、チャプタの始点および終点のタイムスタンプに基づき対応するプレイアイテムを求め、求められたプレイアイテムから参照されるクリップインフォメーションファイルが存在するか否かが判断される。プレイアイテムから参照されるクリップインフォメーションファイルは、例えばプレイリストファイル中のブロックPlayItem()内のフィールドClipInformationFileNameに基づき参照できる(図13参照)。
若し、ユーザが選択したコンテンツに含まれるクリップインフォメーションファイルのうち存在しないものがあると判断されたら、選択されたコンテンツはダビング不可であるとされ、処理がステップS131に戻される。一方、ユーザが選択したコンテンツに含まれる全てのクリップインフォメーションファイルが存在すると判断されたら、処理はステップS133に移行される。
ステップS133では、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルが存在するか否かが判断される。例えば、ステップS132の判断処理の際に求められたクリップインフォメーションファイルのファイル名に基づき、対応するクリップAVストリームファイルが存在するか否かが判断される。
若し、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルのうち存在しないものがあると判断されたら、選択されたコンテンツはダビング不可であるとされ、処理がステップS131に戻される。一方、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルが存在すると判断されれば、処理はステップS134に移行される。
ステップS134では、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルのビットレートが所定値以下であるか否かが判断される。例えば、当該クリップAVストリームファイルに対応するクリップインフォメーションファイルにおいて、ブロックClipInfo()内のフィールドTSRecordingRateを参照することで、当該クリップAVストリームファイルのビットレートを取得することができる(図17参照)。
なお、ステップS134における判断基準となるビットレートの所定値は、ダビング先の記録媒体に応じて設定することが考えられる。一例として、ダビング先の記録媒体がDVD23であれば、当該DVD23に規定される記録ビットレートの上限に基づき当該ビットレートの所定値が18Mbpsとされ、ビットレートが18Mbpsを超えるクリップAVストリームファイルのダビングを制限する。
若し、ステップS134において、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルのうちビットレートが所定値以下ではないものがあると判断されれば、選択されたコンテンツはダビング不可であるとされ、処理がステップS131に戻される。一方、ユーザが選択したコンテンツに含まれる全てのクリップAVストリームファイルのビットレートが所定値以下であると判断されれば、選択されたコンテンツがダビング可能であるとされ、当該コンテンツすなわちチャプタを、N番目にダビングを行うチャプタDubbingList[N]としてリストDubbingListに含める。
そして、処理がステップS135に移行され、チャプタ数Nが1だけインクリメントされる。次のステップS136でコンテンツの選択が終了されたか否かが判断される。コンテンツの選択が終了されたか否かは、例えばUI部31に対するユーザの所定の操作に応じた制御信号に基づき、制御部30により判断される。コンテンツの選択が終了したと判断されれば、処理は図27のステップS102に移行される。一方、未だコンテンツの選択が終了されていないと判断されれば、処理はステップS131に戻される。
説明は図27のフローチャートに戻り、ステップS102で変数nの値が0にセットされ、ステップS103での変数nと値Nの比較結果に基づく判断により、ステップS104〜ステップS108の処理がN回繰り返される。
ステップS104で、チャプタDubbingList[n]の始点および終点のプレイリストマーク情報に基づき、当該チャプタの構成に応じてダビング先におけるクリップインフォメーションおよびプレイリストを作成する。作成されたクリップインフォメーションおよびプレイリストは、メモリ17に記憶される。
例えば、ステップS104では、チャプタDubbingList[n]の始点および終点が対応するプレイアイテムのIN点およびOUT点と一致しているか否か、当該チャプタが対応するプレイアイテムのIN点およびOUT点が当該プレイアイテムに参照されるクリップインフォメーションファイルに示される、対応するクリップAVストリームファイルの先頭位置および/または終端位置と一致しているか否かを判断する。この判断結果に基づき、当該チャプタDubbingList[n]をダビング先の記録媒体(この例ではDVD23)にダビングした際の、当該チャプタDubbingList[n]に対応する、ダビング先の記録媒体におけるクリップインフォメーションおよびプレイリストを作成する。この場合には、チャプタDubbingList[n]により参照される範囲に一致するように、ダビング先のプレイアイテムおよび/またはクリップインフォメーションを作成する。
また、当該チャプタDubbingList[n]が複数のプレイアイテムおよび複数のクリップインフォメーションを参照しているか否かの判断も行う。複数のプレイアイテムおよび複数のクリップインフォメーションを1のチャプタが参照している場合、これら複数のプレイアイテムおよび複数のクリップインフォメーションのそれぞれについて、上述のような、チャプタの始点および/または終点がプレイアイテムのIN点および/またはOUT点に一致しているか否か、プレイアイテムのIN点および/またはOUT点が対応するクリップAVストリームファイルの先頭位置および/または終端位置と一致しているか否かをそれぞれ判断し、判断結果に応じて、ダビング先のプレイアイテムおよびクリップインフォメーションを作成する。
このように作成されたプレイアイテムの情報が、図12に例示されるブロックblkPlayList()における、識別子PlayItem_idをループ変数とするforループ文内のブロックblkPlayItem()として順次、追加されることで、プレイリストが作成される。また、ステップS101で選択されたチャプタ数を示す値Nが、ブロックblkPlayList()におけるフィールドNumberOfPlayListの値とされる。
4−1−2.ダビング先のプレイアイテムおよびクリップインフォメーションの作成について
チャプタとプレイアイテムとクリップインフォメーションとの関係に応じてダビング先のプレイアイテムおよびクリップインフォメーションを作成する例について、図29〜図32を用いてより具体的に説明する。図29Aは、ダビング元のチャプタが対応するプレイアイテムの全体を参照し、当該プレイアイテムが、対応するクリップインフォメーションファイルに示されるエレメンタリストリームの範囲の全体を参照している例である。この場合、図29Bに例示されるように、ダビング元のプレイアイテムおよびクリップインフォメーションを、ダビング先のプレイアイテムおよびクリップインフォメーションとしてそのまま用いることができる。
チャプタとプレイアイテムとの参照関係は、例えば次のようにして求められる。リストDubbingListから、対象とされているチャプタDubbingList[n]ついて、当該チャプタDubbingList[n]を定義する、始点および終点それぞれのプレイリストマークが示すタイムスタンプと、当該チャプタDubbingList[n]に対応するプレイアイテムを示す情報とが取り出される。プレイアイテムを示す情報に基づきプレイアイテムを特定し、特定されたプレイアイテムのIN点およびOUT点のタイムスタンプを抽出する。すなわち、プレイアイテムを示す情報に基づきプレイリストファイル中のブロックblkPlayList()におけるブロックblkPlayItem()が特定され(図12参照)、特定されたブロックblkPlayItem()中のフィールドINTimeおよびOUTTimeの値がそれぞれ抽出される。これらフィールドINTimeおよびOUTTimeの値と、上述のチャプタを定義する始点および終点それぞれのプレイリストマークが示すタイムスタンプとが比較される。
また、プレイアイテムとクリップインフォメーションとの参照関係は、例えば次のようにして求められる。上述のようにしてチャプタDubbingList[n]のプレイアイテムを示す情報に基づき特定されたブロックblkPlayItem()において、フィールドClipInformationFileNameの値に基づきクリップインフォメーションファイルが特定される(図13参照)。このクリップインフォメーションファイルが例えばメモリ17上の管理情報から参照され、当該ファイル中のブロックblkCPI()が抽出される(図16参照)。そして、抽出されたブロックblkCPI()中のブロックbklEPMap()において、第3のforループ文のループ変数を0としたときのPTS(先頭PTSと呼ぶ)と、ループ変数を最大値すなわちフィールドNumberOfStreamPIDEntriesに示される値としたときのPTS(終端PTSと呼ぶ)とを抽出する(図19および図20参照)。そして、これら先頭および終端PTSと、上述した、参照元のプレイアイテムにおけるこれらフィールドINTimeおよびOUTTimeの値とを比較する。
図30Aは、ダビング元のチャプタが、対応するプレイアイテムの一部分を参照し、当該プレイアイテムが、対応するクリップインフォメーションに示されるエレメンタリストリームの範囲の全体を参照している例である。この場合、図30Bに例示されるように、プレイアイテムについては、IN点およびOUT点をチャプタの始点および終点にそれぞれ一致するように変更してダビング先のプレイアイテムとして用い、クリップインフォメーションについても、参照されるエレメンタリストリームの範囲をチャプタの始点および終点に一致させるように変更する。プレイアイテムおよびクリップインフォメーションにおいて、チャプタの始点および終点で示される範囲外の部分については、削除される。
より具体的には、プレイアイテムについては、IN点およびOUT点の値を、チャプタの始点および終点のタイムスタンプの値に変更し、ダビング先のプレイアイテムとする。クリップインフォメーションについては、チャプタの始点に対応するPTSをエントリPTSEPStartの値とし、エントリSPNEPStartが示すソースパケット番号を0として、ダビング先のクリップインフォメーションを作成する。
図31Aは、ダビング元のチャプタが、対応するプレイアイテムの全体を参照し、当該プレイアイテムが、対応するクリップインフォメーションに示されるエレメンタリストリームの範囲の一部分を参照している例である。この場合、図31Bに例示されるように、プレイアイテムについては、ダビング元のプレイアイテムをそのままダビング先のプレイアイテムとして用いることができる。一方、クリップインフォメーションについては、参照されるエレメンタリストリームの範囲をチャプタの始点および終点(または対応するプレイアイテムのIN点およびOUT点)に一致させるように変更する。クリップインフォメーションの、チャプタの始点および終点で指定される範囲外の部分については、図30Bを用いて既に説明した処理と同様に削除される。
図32Aは、ダビング元のチャプタが複数のプレイアイテムを参照している例である。この場合は、図29、図30および図31を用いて説明した処理のそれぞれを組み合わせて、ダビング先のプレイアイテムおよびクリップインフォメーションを作成する。例えば、ダビング元において、チャプタが対応する複数のプレイアイテムのそれぞれについて全体を参照し、これら複数のプレイアイテムのそれぞれが、対応するクリップインフォメーションに示されるエレメンタリストリームの範囲の全体をそれぞれ参照している場合、図32Bに例示されるように、ダビング元のプレイアイテムおよびクリップインフォメーションを、ダビング先のプレイアイテムおよびクリップインフォメーションとしてそのまま用いることができる。
また、チャプタが複数のプレイアイテムを参照している場合に、上述の図30や図31に例示されるように、チャプタがプレイアイテムの一部分を参照している場合や、チャプタはプレイアイテムの全体を参照しているが、当該プレイアイテムがクリップインフォメーションに示されるエレメンタリストリームの一部分を参照していない場合も有り得る(図示しない)。これらの場合にも、上述と同様にして、複数のプレイアイテムや複数のクリップインフォメーションについて、それぞれチャプタにより参照されている範囲に一致するように、ダビング先のプレイアイテムやクリップインフォメーションが作成される。
説明は図27のフローチャートに戻り、ステップS104で上述したようにしてダビング先のプレイアイテムやクリップインフォメーションが作成されメモリ17に記憶されると、処理はステップS105に移行される。
なお、クリップインフォメーションの作成に当たり、上述の図30Bや図31Bの例のように、参照されるエレメンタリストリームの範囲が変更される場合には、チャプタの始点および終点(チャプタがプレイアイテムの一部を参照している場合)、あるいは、プレイアイテムのIN点およびOUT点(プレイアイテムがエレメンタリストリームの一部を参照している場合)のタイムスタンプに基づきEPエントリの情報が再構築される。一例として、図30Bの場合には、ダビング元のクリップインフォメーションファイル中のブロックblkCPI()におけるブロックblkEPMap()から、チャプタの始点のタイムスタンプに対応するエントリが検索される。そして、このエントリで示されるソースパケットの番号を0として、チャプタの終点のタイムスタンプに対応するエントリまで、EPエントリの情報が再構築される。
次のステップS105では、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]が参照するプレイアイテムのシームレス接続を示す情報が決定される。
例えば、ダビング先において、対象のチャプタDubbingList[n]が参照するプレイアイテムと、当該チャプタDubbingList[n]の直前に再生されるチャプタDubbingList[n-1]が参照するプレイアイテムとがシームレス接続されるか否か、また、シームレス接続される場合には、上述した第1のシームレス接続と第2のシームレス接続のうち何れの接続方法で接続されるかが決定される。換言すれば、このステップS105では、チャプタDubbingList[n]に対応するブロックblkPlayItem()内のフィールドConnectionCondition(図13および図14参照)の値を"1"、"5"および"6"のうち何れにするかが決定される。
ダビング先におけるプレイアイテムに関するシームレス接続の可否およびシームレス接続の方法は、ダビングを行うチャプタDubbingList[n]およびチャプタDubbingList[n-1]と、ダビング先での当該チャプタDubbingList[n]およびチャプタDubbingList[n-1]にそれぞれ対応するプレイアイテムとの関係に基づき決定される。
4−1−3.シームレス情報の決定処理の例について
ステップS105による、対象のチャプタが参照するプレイアイテムのシームレス接続を示す情報を決定するための一例の処理を、図33のフローチャートを用いて説明する。最初のステップS120で、対象のチャプタDubbingList[n]の始点と、当該チャプタDubbingList[n]が参照するプレイアイテムの先頭すなわちIN点とが一致するか否かが判断される。若し、一致しないと判断されたら、シームレス接続を行わないとされ、処理はステップS127に移行される。
一方、ステップS120で、対象のチャプタDubbingList[n]の始点と、当該チャプタDubbingList[n]が参照するプレイアイテムの先頭すなわちIN点とが一致すると判断されたら、処理はステップS121に移行される。ステップS121では、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]が参照するプレイアイテムが、対象チャプタDubbingList[n]が参照するプレイアイテムの直前のプレイアイテムであるか否かが判断される。
すなわち、ステップS121では、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]が参照するプレイアイテムが、対象のチャプタDubbingList[n]が参照するプレイアイテムに対し、プレイリスト上の記述におけるプレイアイテム順の直前のプレイアイテムであるか否かが判断される。この判断は、対象のチャプタDubbingList[n]の始点に対応するプレイリストマークと、当該対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]の終点に対応するプレイリストマークとについて、例えば図15に示すブロックblkPlayListMark()中のフィールドRefToPlayItemIDの値が連続しているか否かで判断することができる。
若し、ステップS121で、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]が参照するプレイアイテムが、対象チャプタDubbingList[n]が参照するプレイアイテムの直前のプレイアイテムではないと判断されたら、シームレス接続を行わないとされ、処理はステップS127に移行される。
一方、ステップS121で、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]が参照するプレイアイテムが、対象チャプタDubbingList[n]が参照するプレイアイテムの直前のプレイアイテムであると判断されたら、処理はステップS122に移行される。ステップS122では、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]の終点と、当該直前のチャプタDubbingList[n-1]が参照しているプレイアイテムのOUT点とが一致するか否かが判断される。若し、一致しないと判断されれば、シームレス接続を行わないとされ、処理はステップS127に移行される。
一方、ステップS122で、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]の終点と、当該直前のチャプタDubbingList[n-1]が参照しているプレイアイテムのOUT点とが一致すると判断されたら、処理はステップS123に移行される。ステップS123では、対象チャプタDubbingList[n]が参照するプレイアイテムのフィールドConnectionConditionの値が"5"であるか否か、すなわち、対象チャプタDubbingList[n]と直前のチャプタDubbingList[n-1]とを第1のシームレス接続で接続するか否かが判断される。
若し、値が"5"であると判断されれば、処理はステップS124に移行され、当該チャプタが参照するプレイアイテムのフィールドConnectionConditionの値が"5"に決定される。この決定に応じて、メモリ17上に記憶される当該プレイアイテムにおけるフィールドConnectionConditionの値が"5"に設定される。
一方、ステップS123で、対象チャプタDubbingList[n]が参照するプレイアイテムのフィールドConnectionConditionの値が"5"ではないと判断されれば、処理はステップS125に移行される。ステップS125では、当該チャプタDubbingList[n]が参照するプレイアイテムのフィールドConnectionConditionの値が"6"であるか否か、すなわち、対象チャプタDubbingList[n]と直前のチャプタDubbingList[n-1]とを第2のシームレス接続で接続する否かが判断される。
若し、値が"6"であると判断されれば、処理はステップS126に移行され、当該チャプタDubbingList[n]が参照するプレイアイテムのフィールドConnectionConditionの値が"6"に決定される。この決定に応じて、メモリ17上に記憶される当該プレイアイテムにおけるフィールドConnectionConditionの値が"6"に設定される。
一方、ステップS126で、当該チャプタDubbingList[n]が参照するプレイアイテムのフィールドConnectionConditionの値が"6"ではないと判断されれば、シームレス接続を行わないとされ、処理はステップS127に移行される。
ステップS127では、対象のチャプタDubbingList[n]の直前のチャプタDubbingList[n-1]に対応するプレイアイテムにおけるフィールドConnectionConditionの値が"1"に決定される。この決定に応じて、メモリ17上に記憶される当該プレイアイテムにおけるフィールドConnectionConditionの値が"1"に設定される。
説明は図27のフローチャートに戻り、上述のようにして、ステップS105により対象のチャプタが参照するプレイアイテムのシームレス接続を示す情報が決定されると、処理はステップS106に移行される。ステップS106では、上述のステップS104で作成されたクリップインフォメーションに基づいて、ダビング先の記録媒体に対してクリップインフォメーションファイルが記録される。例えば、管理情報制御部16は、制御部30の命令に従い、メモリ17に記憶されるクリップインフォメーションに基づき、対象チャプタDubbingList[n]のクリップインフォメーションファイルを作成する。作成されたクリップインフォメーションファイルは、記録再生制御部20に供給され、ドライブ装置22によりダビング先の記録媒体であるDVD23に記録される。
次のステップS107では、ストリームの実体、すなわちダビング元のクリップAVストリームファイルについて、どの範囲をダビング先の記録媒体にコピーするかを算出する。算出結果は、ステップS101で選択されたチャプタに対応するコピー範囲を示す情報からなるリストCopyListにおける、チャプタDubbingList[n]に関するコピー範囲情報CopyList[n]としてメモリ17に記憶される。すなわち、コピー範囲情報CopyList[n]は、チャプタDubbingList[n]をダビング先へコピーする際の、ダビング元のクリップAVストリームファイルのコピー範囲を示す情報である。コピー範囲情報CopyList[n]は、例えばダビング元のクリップAVストリームファイル名と、当該クリップAVストリームファイルにおけるコピー開始および終了位置をバイト位置で示した情報とを含む。
一例として、チャプタDubbingList[n]の始点および終点(またはプレイアイテムのIN点およびOUT点)のタイムスタンプの情報に基づきダビング元のクリップインフォメーションファイルからEPエントリを検索し、チャプタDubbingList[n]の始点および終点にそれぞれ対応するソースパケット番号を取得する。ソースパケットは、既に説明したようにデータサイズが固定長なので、ソースパケット番号に基づきクリップAVストリームファイル内のバイト位置を算出することができる。
ステップS107でコピー範囲情報CopyList[n]が作成されたら、処理は次のステップS108に移行され、変数nが1だけインクリメントされる。そして、処理がステップS103に戻され、次のチャプタDubbingList[n]に対する処理がなされる。
一方、上述のステップS103で、ステップS101で作成されたリストDubbingList中の全てのチャプタに関するステップS104〜ステップS107による処理が終了したと判断されれば、処理はステップS109に移行される。ステップS109では、プレイリストファイルが作成され、ダビング先の記録媒体に対して記録される。ここで作成されるプレイリストファイルは、上述のステップS101で作成されたリストDubbingListに示される全てのチャプタに対するプレイリストであって、ステップS104で作成された全てのプレイアイテムを含む。
例えば、管理情報処理部16は、制御部30の命令に従い、上述のステップS104およびステップS105で作成されメモリ17に記憶されたプレイリストに基づきプレイリストファイルが作成される。作成されたプレイリストファイルは、記録再生制御部20に供給され、ドライブ装置22によりダビング先の記録媒体であるDVD23に記録される。
さらに、次のステップS110で、ムービーオブジェクトおよびインデックステーブルが作成される。例えば、管理情報制御部16は、ステップS109で作成されたプレイリストファイルに基づきメモリ17上にムービーオブジェクトを作成する。そして、メモリ17上のムービーオブジェクトに基づきムービーオブジェクトファイルを作成し、記録再生制御部20に供給し、ダビング先の記録媒体であるDVD23に記録する。また、管理情報制御部16は、図8を参照し、このムービーオブジェクトを呼び出すブロックblkIndexes()をメモリ17上に作成し、このブロックblkIndexes()に基づきインデックスファイルを作成する。インデックスファイルは、記録再生制御部20に供給され、ドライブ装置22によりダビング先の記録媒体であるDVD23に記録される。
次のステップS111で変数nが0に設定され、以下のステップS112〜ステップS114により、上述したステップS107で作成されたコピー範囲情報CopyList[n]で示される情報に従い、ダビング元のクリップAVストリームファイルの指定範囲がダビング先の記録媒体であるDVD23にコピーされ、当該DVD23上にクリップAVストリームファイルが作成される(ステップS113)。このステップS113の処理を、変数nを1ずつインクリメント(ステップS114)しながらN回行うことで、ステップS101で選択されたチャプタのダビング先の記録媒体であるDVD23に対するダビングが終了する。
なお、ステップS113で、ダビング先の記録媒体であるDVD23に対して作成されるクリップAVストリームファイルのファイル名は、上述のステップS107でDVD23に記録されるクリップインフォメーションファイルのファイル名と対応するように決められる。
上述したように、この発明の実施の第1の形態では、ダビング元の記録媒体から選択されたチャプタをダビング先の記録媒体にダビングする際に、選択されたダビング元のチャプタと、当該チャプタに対応するダビング元のプレイアイテムおよびクリップインフォメーションとの関係に基づき、ダビング先の記録媒体におけるプレイアイテムおよびクリップインフォメーションを作成するようにしているので、AVCHD規格に準じたコンテンツのダビング処理を容易に行うことができる。
またその際、選択されたダビング元のチャプタと、当該チャプタに対応するダビング元のプレイアイテムおよびクリップインフォメーションとの関係に基づきシームレス接続を行うか否か、また、シームレス接続を行うとされた場合には、第1および第2のシームレス接続のうち何方の方法でシームレス接続を行うようにするかを自動的に判断し、判断結果に基づきシームレス接続を管理するための管理情報をダビング先の記録媒体に記録するようにしている。そのため、ダビング元におけるチャプタ間のシームレス接続の状態を、容易にダビング先に引き継ぐことができる。
4−2.補足
また、上述では、ダビング元の記録媒体をハードディスク21とし、ダビング先の記録媒体をDVD23としたが、これはこの例に限られない。例えば、ダビング先の記録媒体を、着脱可能なメモリ24としてもよい。さらに、上述では、ダビング先の記録媒体にディスク状記録媒体を用いる例として、当該記録媒体にDVD23を採用したが、これはこの例に限られず、例えばBlu−ray Disc(登録商標)をダビング先の記録媒体として用いることもできる。
さらにまた、上述では、ダビング元の記録媒体として、記録再生装置100に内蔵されるハードディスク21を用いたが、これはこの例に限られず、ダビング元の記録媒体として着脱可能な記録媒体を用いることもできる。図25の例では、メモリ24をダビング元の記録媒体とし、DVD23をダビング先の記録媒体としたり、その逆の組み合わせとすることが考えられる。また、記録再生装置100に他の機器とのデータ通信が可能な通信I/Fを設け、この通信I/Fを介して接続される他の機器の記録媒体に対してダビングを行うことも考えられる。
5.発明の実施の第1の形態の変形例について
次に、この発明の実施の第1の形態の変形例について説明する。この実施の第1の形態の変形例では、この発明を、撮像素子と、被写体からの光を撮像素子に入射させる光学系とを有し、撮像素子で撮像された撮像信号に基づきビデオデータを記録媒体に記録するようにした、ビデオカメラ装置に適用した。
図34は、この発明の実施の第1の形態の変形例によるビデオカメラ装置400の一例の構成を示す。記録系、再生系および制御系の構成は、図25を用いて説明した記録再生装置100の構成を略そのまま適用できるので、図25と共通する部分には同一の符号を付し、詳細な説明を省略する。
図34の構成において、カメラ部410は、映像信号に関する構成として、光学系311、撮像素子412、撮像信号処理部413、カメラ制御部414および表示部415を有し、音声信号に関する構成として、マイクロフォン(MIC)416および音声信号処理部417を有する。制御部30は、カメラ部410の各部との間で各種制御信号や情報のやりとりを行い、カメラ部410の動作を制御する。また、制御部30は、ユーザ操作に応じてUI部31から供給される制御信号に基づき、カメラ部410の動作を制御する。なお、ビデオカメラ装置400として構成される場合、記録開始操作および記録停止操作は、例えば、UI部31に設けられた単一の記録スイッチを用い、当該記録スイッチが押下される毎に記録開始および記録停止が交互に指示されるようになされるのが一般的である。
カメラ部410において、光学系411は、被写体からの光を撮像素子412に導くためのレンズ系、絞り調整機構、フォーカス調整機構、ズーム機構、シャッタ機構などを備える。絞り調整機構、フォーカス調整機構、ズーム機構およびシャッタ機構の動作は、制御部30から供給される制御信号に基づき、カメラ制御部414により制御される。
撮像素子412は、例えばCCD(Charge Coupled Device)からなり、光学系411を介して照射された光を光電変換により電気信号に変換し、所定の信号処理を施し撮像信号として出力する。撮像信号処理部413は、撮像素子から出力された撮像信号に対して所定の信号処理を施し、ベースバンドのディジタルビデオデータとして出力する。撮像素子412をCMOS(Complementary Metal-Oxide Semiconductor)イメージャを用いて構成することも可能である。
例えば撮像信号処理部413は、撮像素子412から出力された撮像信号に対して、CDS(Correlated Double Sampling)回路により画像情報を有する信号だけをンプリングすると共に、ノイズを除去し、AGC(Auto Gain Control)回路によりゲインを調整する。そして、A/D変換によりディジタル信号に変換する。また、撮像信号処理部413は、このディジタル信号に対して検波系の信号処理を施し、R(赤色)、G(緑色)およびB(青色)各色の成分を取り出し、γ補正やホワイトバランス補正などの処理を行い、最終的に1本のベースバンドのディジタルビデオデータとして出力する。
また、撮像信号処理部413は、撮像素子412から出力された撮像信号の情報を制御部30に送る。制御部30は、この情報に基づき光学系411を制御するための制御信号を生成し、カメラ制御部414に供給する。カメラ制御部414は、この制御信号に基づきフォーカス調整機構や絞り調整機構などの制御を行う。
さらに、撮像信号処理部413は、撮像素子412から出力された撮像信号に基づき、例えばLCD(Liquid Crystal Display)を表示素子として用いた表示部415に映出させる映像信号を生成する。
一方、マイクロフォン416は、周囲の音声を収音して電気信号に変換して出力する。マイクロフォン416から出力された音声信号は、音声信号処理部417に供給される。音声信号処理部417は、供給された音声信号を、リミッタを介してからA/D変換を施してディジタルオーディオデータとし、ノイズ除去や音質補正など所定の音声信号処理を施してベースバンドのディジタルオーディオデータとして出力する。
カメラ部410の撮像信号処理部413から出力されたベースバンドのディジタルビデオデータは、端子40を介して記録再生部50に供給され、ビデオコーデック部11に入力される。また、音声信号処理部417から出力されたベースバンドのディジタルオーディオデータは、端子42を介して記録再生部50に供給され、オーディオコーデック部12に入力される。
記録停止状態からUI部31に設けられた記録スイッチが押下されると、記録開始を指示する制御信号がUI部31から制御部30に供給され、制御部30の制御に基づきカメラ部310から出力されたベースバンドのディジタルビデオ信号およびディジタルオーディオデータのハードディスク21への記録が開始される。
すなわち、既に説明したように、ビデオデータおよびオーディオデータは、ビデオコーデック部11およびオーディオコーデック部12でそれぞれ所定に圧縮符号化される。圧縮符号化されたビデオデータおよびオーディオデータは、マルチプレクサ13で固定長のソースパケットに所定にパケット化され、多重化されてAVストリームデータとされる。AVストリームデータは、ストリームバッファ15を介して記録再生制御部20に供給され、ハードディスク21に対してクリップAVストリームとして記録される。
UI部31の記録スイッチが押下されると、記録が停止され、ハードディスク21に記録されたクリップAVストリームファイルに対応する管理情報が所定に生成され、ハードディスク21に記録される。例えば制御部30は、信号処理部10や記録再生制御部20からの情報に基づき、ハードディスク21に記録されるクリップAVストリームファイルに対応するクリップインフォメーションファイルを作成する。また、制御部30は、当該クリップインフォメーションファイルを参照するプレイアイテムを生成し、既にプレイリストが存在する場合には、生成されたプレイアイテムを当該プレイリストに対して追加すると共に、プレイリストに対してプレイリストマークを打つ。
ハードディスク21に記録されたクリップの、他の記録媒体、例えばDVD23やメモリ24へのダビング処理は、上述した実施の第1の形態によるダビング処理と何ら変わるところがないため、ここでの詳細な説明を省略する。
6.発明の実施の第2の形態について
次に、この発明の実施の第2の形態について説明する。この実施の第2の形態は、この発明によるダビング処理を、図35に概略的に示されるような一般的な構成のコンピュータ200で実現する例である。すなわち、この発明によるダビング処理は、上述した実施の第1の形態による記録再生装置100のような、ビデオコーデック部11、オーディオコーデック部12、マルチプレクサ13およびデマルチプレクサ14といった、ビデオデータやオーディオデータに対する信号処理系の構成を有していなくても、実現可能である。
6−1.実施の第2の形態に適用可能な装置の構成例について
図35において、バス210に対してCPU211、RAM212、ROM213、表示制御部214および通信インターフェース(I/F)215がそれぞれ接続される。さらに、バス210に対して、入力I/F220、メモリI/F222、リード/ライト制御部223およびデータI/F225がそれぞれ接続される。入力I/F220には、例えばキーボード221Aやマウス221Bといった入力デバイスが接続される。リード/ライト制御部223は、ハードディスク230といったストレージ装置や、装填されたディスク状記録媒体に対するデータの読み書きを行うドライブ装置224が接続される。
CPU211は、ROM213に記憶される基本プログラムや、ハードディスク230に格納されるプログラムに従い、RAM212をワークメモリとして用い、このコンピュータ200全体の制御を行ったり、アプリケーションソフトウェアを実行したりする。表示制御部214は、CPU211で所定のプログラムに従い生成された表示制御信号に基づき、ディスプレイ215に表示可能な形式の信号を生成し、ディスプレイ215に供給する。通信I/F216は、所定のプロトコルに基づき、CPU211の命令に従い外部との通信を制御する。例えば、通信I/F216は、通信プロトコルとしてTCP/IP(Transmission Control Protocol/Internet Protocol)などを実装し、CPU211の命令に従いインターネットとの通信を制御する。
リード/ライト制御部223は、CPU211の命令に従い、ハードディスク230に対するデータの読み書きや、ドライブ装置224に装填された記録媒体に対するデータの読み書きを制御する。ここで、ドライブ装置224は、例えば記録可能なタイプのDVD231に対応し、DVD231に対するデータの読み書きが可能とされているものとする。リード/ライト制御部223は、CPU211から指定されたアドレスに従いハードディスク230の動作を制御し、当該アドレスにアクセスする。同様に、リード/ライト制御部223は、CPU211から指定されたアドレスに従いドライブ装置224を制御し、DVD231上の当該アドレスにアクセスする。
メモリI/F222は、脱着可能且つ不揮発性のメモリ232に対するデータの読み書きを制御する。メモリI/F222は、CPU211から指定されたアドレスに従い、メモリ232上の当該アドレスにアクセスする。
データI/F225は、外部の機器と有線または無線で接続され、所定のプロトコルで以て接続された機器との間でデータのやりとりを行う。データI/F225に適用可能なインターフェイス規格としては、USB(Universal Serial Bus)やIEEE1394(Institute Electrical and Electronics Engineers 1394)などのシリアルインターフェイスが考えられる。勿論、これらのインターフェイスに限らず、他のインターフェイス規格を採用してもよい。
ファイルシステムやGUI(Graphical User Interface)など、このコンピュータ200における基本的な機能を提供するためのソフトウェアであるOS(Operating System)や、この発明によるダビング処理を実行するためのアプリケーションソフトウェアなど、各種のプログラムは、ハードディスク230に格納される。これらのプログラムは、例えばCD−ROM(Compact Disc-Read Only Memory)やDVD−ROMといった記録媒体に記録されて提供され、ドライブ装置224により読み出されてハードディスク230上に所定に格納されることで、実行可能とされる。ダビング処理を行うアプリケーションソフトウェアは、図示されないインターネット上のサーバにより提供されるようにしてもよい。CPU211の命令に従い通信I/F216によりインターネットを介してサーバにアクセスし、当該アプリケーションソフトウェアをダウンロードする。ダウンロードされたアプリケーションソフトウェアは、ハードディスク230上に所定に格納される。
例えばキーボード221Aやマウス221Bなどの入力デバイスに対する所定の操作によりアプリケーションソフトウェアの起動が指示されると、OSは、ハードディスク230からアプリケーションソフトウェアのプログラムを読み出し、RAM212上に所定に展開する。CPU211は、RAM212上に展開されたこのプログラムに従い、表示制御信号の生成、リード/ライト制御部223やメモリI/F222に対する読み出しや書き込み命令の生成、入力デバイスによる入力の受け付けなどを行い、アプリケーションソフトウェアを実行する。
6−2.実施の第2の形態による一例のダビング処理について
このような構成のコンピュータ200に対し、AVCHDの規格に準じたコンテンツデータが入力される。入力されたコンテンツデータは、例えばハードディスク230に格納される。なお、AVCHD規格によれば、データは、上述した図5または図6に示す管理構造を持つ必要がある。例えば、ハードディスク230上に所定のディレクトリを作成し、そのディレクトリに対し、図5または図6の構造を構築することが考えられる。
データは、例えばDVD231に図6に示される構造で記録されて供給されることが考えられる。この場合、当該DVD231の記録内容をそのままハードディスク230にコピーすることが考えられる。これに限らず、データI/F225に対して所定のインターフェイスを介して接続された外部の機器からデータ通信により供給されるようにしてもよいし、通信I/F216によりインターネットを介して供給されるようにもできる。
ここで、ドライブ装置224に対して例えば新規のDVD231を装填し、ハードディスク230に格納されているクリップをチャプタ単位で選択し、DVD231にダビングさせることができる。ダビング処理は、所定のアプリケーションソフトウェアを起動し、そのアプリケーションソフトウェアに従いCPU211の制御により行う。このアプリケーションソフトウェアは、ダビング処理の制御を行うと共に、ダビング処理に関わる操作などをユーザに促すためのGUIを構成する。
ダビング処理は、上述の実施の第1の形態で説明した方法と、略同一に実行することができる。すなわち、図27のフローチャートを参照し、アプリケーションソフトウェア(以下、アプリケーション)によりハードディスク230上の所定のディレクトリが参照され、管理情報、すなわちインデックスファイル、ムービーオブジェクトファイル、プレイリストファイルおよびクリップインフォメーションファイルが読み出される(ステップS100)。読み出された管理情報は、RAM212に記憶される。
次に、読み出されRAM212に記憶された管理情報に基づきチャプタのリストが作成され、このチャプタのリストを表示させるための表示制御信号がCPU211により生成される。表示制御信号は、表示制御部214に供給され、ディスプレイ215に対して選択可能なチャプタのリストが表示される。ユーザは、ディスプレイ215の表示に基づき、キーボード221やマウス221Bなど入力デバイスを用いてチャプタのリストからダビングを行いたいチャプタを選択する。このとき、例えば上述の図28のフローチャートを用いて説明したようにして、選択されたチャプタがダビング可能か否かを判断することができる。選択されたチャプタの情報に基づき、ダビングするチャプタのリストDubbingListが作成され、例えばRAM212に記憶される。
以下、ステップS103〜ステップS108のループにより、チャプタDubbingListに示されるチャプタ毎に、RAM212に記憶された管理情報に基づきクリップインフォメーションおよびプレイリストが作成され(ステップS104)、プレイアイテムのシームレス情報が決定される(ステップS105および図33の各ステップ)。そして、ステップS106で、DVD231に対してチャプタDubbingList[n]に対応するクリップインフォメーションファイルが記録される。また、対応するクリップAVストリームファイルのどの部分をDVD231にコピーするかが算出され、コピー範囲情報CopyList[n]が生成される(ステップS107)。コピー範囲情報CopyList[n]は、リストCopyListを構成する情報としてRAM212上に記憶される。
選択された全てのチャプタについて、ステップS104〜ステップS107の処理が終了したら、プレイリストファイルが作成されてDVD231に記録され(ステップS109)、ムービーオブジェクトおよびインデックステーブルが作成され、ムービーオブジェクトファイルおよびインデックスファイルがDVD231に記録される(ステップS110)。
そして、RAM212に記憶されているリストCopyListに格納されるコピー範囲情報CopyList[n]に従い、ハードディスク230に格納されるクリップAVストリームファイルの指定範囲がDVD231にコピーされる(ステップS113)。クリップAVストリームファイルのコピー範囲は、コピー範囲情報CopyList[n]によりファイル中のバイト位置として指定される。アプリケーションは、OSのファイルシステムに基づきバイト位置をハードディスク230上のアドレスに変換し、そのアドレスからデータを読み出す。読み出されたデータは、ドライブ装置224に転送され、DVD231に記録される。選択された全てのチャプタについてコピーが終了したら、一連のダビング処理が終了される。
なお、上述では、ダビング先の記録媒体をドライブ装置224に装填されるDVD231としたが、これはこの例に限定されない。例えばメモリI/F222に装填されるメモリ232をダビング先の記録媒体とすることができる。また、データI/F225により所定のインターフェイスを介して接続された他の機器を、ダビング先として指定することもできる。例えば、所定のインターフェイスを介して制御可能なハードディスクを、ダビング先の記録媒体として指定できる。さらに、通信I/F216によりインターネットを介して接続される他の機器をダビング先に指定することも考えられる。