説明

映像データ符号化装置および方法、記録媒体、並びにプログラム

【課題】記録媒体に記録する情報の管理を容易にできるようにする。
【解決手段】 ステップS20で、トランスポートストリームの多重化ビットレートTS_recording_rateおよびビデオ符号化の平均ビットレートが設定される。ステップS21で、ビデオストリームを、あらかじめ設定した所定の時間区間毎に所定の平均ビットレートが保証される様に、可変ビットレートでエンコードするようにビデオエンコーダが制御される。ステップS22で、トランスポートパケット化するエレメンタリストリームがない場合にヌルパケットを発生しないようにマルチプレクサが制御される。ステップS23で、各トランスポートパケットにアライバルタイムスタンプを付加して、ソースパケット化するように、ソースパケッタイザ19が制御される。本技術は、例えばHDDレコーダに適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は映像データ符号化装置および方法、記録媒体、並びにプログラムに関し、特に、記録媒体に記録されているデータの内容の管理情報をファイル化して記録する映像データ符号化装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【0002】
近年、記録再生装置から取り外し可能なディスク型の記録媒体として、各種の光ディスクが提案されつつある。このような記録可能な光ディスクは、数ギガバイトの大容量メディアとして提案されており、ビデオ信号等のAV(Audio Visual)信号を記録するメディアとしての期待が高い。この記録可能な光デイスクに記録するデジタルのAV信号のソース(供給源)としては、CSデジタル衛星放送やBSデジタル放送があり、また、将来はデジタル方式の地上波テレビジョン放送等も提案されている。
【0003】
ここで、これらのソースから供給されるデジタルビデオ信号は、通常MPEG(Moving Picture Experts Group)2方式で画像圧縮されているのが一般的である。また、記録装置には、その装置固有の記録レートが定められている。従来の民生用映像蓄積メディアで、デジタル放送由来のデジタルビデオ信号を記録する場合、アナログ記録方式であれば、デジタルビデオ信号をデコード後、帯域制限をして記録する。あるいは、MPEG1 Video、MPEG2 Video、DV方式をはじめとするデジタル記録方式であれば、1度デコードされた後に、その装置固有の記録レート・符号化方式で再エンコードされて記録される。
【0004】
しかしながら、このような記録方法は、供給されたビットストリームを1度デコードし、その後で帯域制限や再エンコードを行って記録するため、画質の劣化を伴う。画像圧縮されたデジタル信号の記録をする場合、入力されたデジタル信号の伝送レートが記録再生装置の記録レートを超えない場合には、供給されたビットストリームをデコードや再エンコードすることなく、そのまま記録する方法が最も画質の劣化が少ない。ただし、画像圧縮されたデジタル信号の伝送レートが記録媒体としてのディスクの記録レートを超える場合には、記録再生装置でデコード後、伝送レートがディスクの記録レートの上限以下になるように、再エンコードをして記録する必要はある。
【0005】
また、入力デジタル信号のビットレートが時間により増減する可変レート方式によって伝送されている場合には、回転ヘッドが固定回転数であるために記録レートが固定レートになるテープ記録方式に比べ、1度バッファにデータを蓄積し、バースト的に記録ができるディスク記録装置が記録媒体の容量をより無駄なく利用できる。
【0006】
以上のように、デジタル放送が主流となる将来においては、データストリーマのように放送信号をデジタル信号のまま、デコードや再エンコードすることなく記録し、記録媒体としてディスクを使用した記録再生装置が求められると予測される。
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述したように、記録媒体の容量が増大することにより、その記録媒体には、多くのデータ(この場合、番組に関する映像や音声など)が記録できるようになる。従って、1枚のディスクに多くの番組が記録されることになり、ユーザが、それらのディスク内に記録されている多くの番組から視聴したい1番組を選択するといったような操作が煩雑になってしまう。そこで、ユーザがディスクの再生時に、簡便に記録されているデータを確認し、所望の番組(データ)が選択できるようにする必要があるといった課題があった。
【0008】
本技術はこのような状況に鑑みてなされたものであり、記録媒体に記録されているデータの内容の管理情報をファイル化して記録する事により、記録媒体に記録されているデータ内容、および、再生情報を適切に管理することができるようにする。
【課題を解決するための手段】
【0009】
本技術の一側面の映像データ符号化装置は、映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化器と、記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御部とを有する。
【0010】
前記所定の時間はGOPであるようにすることができる。
【0011】
前記制御部は、前記所定の時間区間毎の時間経過に対して符号化データ量が所定の誤差の範囲内で比例するような符号化制御を行う第1の符号化モードと、前記符号化制御を行わない第2の符号化モードのどちらか一方で符号化するように制御することができる。
【0012】
前記制御部は、前記所定の時間区間毎の時間経過に対して前記符号化データ量が前記所定の誤差の範囲内で比例するように符号化する前記第1の符号化モードか否かを示す付加情報を生成することができる。
【0013】
本技術の一側面の映像データ符号化方法、記録媒体、またはプログラムは、映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化ステップと、記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御ステップとを含む映像データ符号化方法、コンピュータに実行させるコンピュータが読み取り可能なプログラムが記録されている記録媒体、またはプログラムである。
【0014】
本技術の一側面においては、映像データが、所定の時間毎にビットレートを変更する可変ビットレートにより符号化され、記録してからの時間経過に対して符号化される映像データのファイルサイズが比例するように、所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御が行われる。
【発明の効果】
【0015】
本技術の側面によれば、記録媒体に記録する情報の管理を容易にすることが可能になる。
【図面の簡単な説明】
【0016】
【図1】本技術を適用した記録再生装置の一実施の形態の構成を示す図である。
【図2】記録再生装置により記録媒体に記録されるデータのフォーマットについて説明する図である。
【図3】Real PlayListとVirtual PlayListについて説明する図である。
【図4】Real PlayListの作成について説明する図である。
【図5】Real PlayListの削除について説明する図である。
【図6】アセンブル編集について説明する図である。
【図7】Virtual PlayListにサブパスを設ける場合について説明する図である。
【図8】PlayListの再生順序の変更について説明する図である。
【図9】PlayList上のマークとClip上のマークについて説明する図である。
【図10】メニューサムネイルについて説明する図である。
【図11】PlayListに付加されるマークについて説明する図である。
【図12】クリップに付加されるマークについて説明する図である。
【図13】PlayList、Clip、サムネイルファイルの関係について説明する図である。
【図14】ディレクトリ構造について説明する図である。
【図15】info.dvrのシンタクスを示す図である。
【図16】DVR volumeのシンタクスを示す図である。
【図17】Resumevolumeのシンタクスを示す図である。
【図18】UIAppInfovolumeのシンタクスを示す図である。
【図19】Character set valueのテーブルを示す図である。
【図20】TableOfPlayListのシンタクスを示す図である。
【図21】TableOfPlayListの他のシンタクスを示す図である。
【図22】MakersPrivateDataのシンタクスを示す図である。
【図23】xxxxx.rplsとyyyyy.vplsのシンタクスを示す図である。
【図24】PlayListについて説明する図である。
【図25】PlayListのシンタクスを示す図である。
【図26】PlayList_typeのテーブルを示す図である。
【図27】UIAppinfoPlayListのシンタクスを示す図である。
【図28】UIAppinfoPlayListのシンタクス内のフラグについて説明する図である。
【図29】PlayItemについて説明する図である。
【図30】PlayItemについて説明する図である。
【図31】PlayItemについて説明する図である。
【図32】PlayItemのシンタクスを示す図である。
【図33】IN_timeについて説明する図である。
【図34】OUT_timeについて説明する図である。
【図35】Connection_Conditionのテーブルを示す図である。
【図36】Connection_Conditionについて説明する図である。
【図37】BridgeSequenceInfoを説明する図である。
【図38】BridgeSequenceInfoのシンタクスを示す図である。
【図39】SubPlayItemについて説明する図である。
【図40】SubPlayItemのシンタクスを示す図である。
【図41】SubPath_typeのテーブルを示す図である。
【図42】PlayListMarkのシンタクスを示す図である。
【図43】Mark_typeのテーブルを示す図である。
【図44】Mark_time_stampを説明する図である。
【図45】zzzzz.clipのシンタクスを示す図である。
【図46】ClipInfoのシンタクスを示す図である。
【図47】Clip_stream_typeのテーブルを示す図である。
【図48】offset_SPNについて説明する図である。
【図49】offset_SPNについて説明する図である。
【図50】STC区間について説明する図である。
【図51】STC_Infoについて説明する図である。
【図52】STC_Infoのシンタクスを示す図である。
【図53】ProgramInfoを説明する図である。
【図54】ProgramInfoのシンタクスを示す図である。
【図55】VideoCondingInfoのシンタクスを示す図である。
【図56】Video_formatのテーブルを示す図である。
【図57】frame_rateのテーブルを示す図である。
【図58】display_aspect_ratioのテーブルを示す図である。
【図59】AudioCondingInfoのシンタクスを示す図である。
【図60】audio_codingのテーブルを示す図である。
【図61】audio_component_typeのテーブルを示す図である。
【図62】sampling_frequencyのテーブルを示す図である。
【図63】CPIについて説明する図である。
【図64】CPIについて説明する図である。
【図65】CPIのシンタクスを示す図である。
【図66】CPI_typeのテーブルを示す図である。
【図67】ビデオEP_mapについて説明する図である。
【図68】EP_mapについて説明する図である。
【図69】EP_mapについて説明する図である。
【図70】EP_mapのシンタクスを示す図である。
【図71】EP_type valuesのテーブルを示す図である。
【図72】EP_map_for_one_stream_PIDのシンタクスを示す図である。
【図73】TU_mapについて説明する図である。
【図74】TU_mapのシンタクスを示す図である。
【図75】ClipMarkのシンタクスを示す図である。
【図76】mark_typeのテーブルを示す図である。
【図77】mark_type_stampのテーブルを示す図である。
【図78】menu.thmbとmark.thmbのシンタクスを示す図である。
【図79】Thumbnailのシンタクスを示す図である。
【図80】thumbnail_picture_formatのテーブルを示す図である。
【図81】tn_blockについて説明する図である。
【図82】DVR MPEG2のトランスポートストリームの構造について説明する図である。
【図83】DVR MPEG2のトランスポートストリームのレコーダモデルを示す図である。
【図84】DVR MPEG2のトランスポートストリームのプレーヤモデルを示す図である。
【図85】source packetのシンタクスを示す図である。
【図86】TP_extra_headerのシンタクスを示す図である。
【図87】copy permission indicatorのテーブルを示す図である。
【図88】シームレス接続について説明する図である。
【図89】シームレス接続について説明する図である。
【図90】シームレス接続について説明する図である
【図91】シームレス接続について説明する図である。
【図92】シームレス接続について説明する図である
【図93】オーディオのオーバーラップについて説明する図である。
【図94】BridgeSequenceを用いたシームレス接続について説明する図である。
【図95】BridgeSequenceを用いないシームレス接続について説明する図である。
【図96】DVR STDモデルを示す図である。
【図97】復号、表示のタイミングチャートを示す図である。
【図98】図1のAVエンコーダの動作を説明する図である。
【図99】ビデオを可変ビットレート符号化して、AVストリームを記録する動作を説明するフローチャートである。
【図100】Video Buffering Verifierを説明する図である。
【図101】VBV制御を説明する図である。
【図102】VBV制御を説明する図である。
【図103】可変ビットレートを制御する場合の例を示す図である。
【図104】可変ビットレート制御の場合の例を示す図である。
【図105】図99のステップS21の詳細を説明するフローチャートである。
【図106】図106のステップS205の詳細を説明するフローチャートである。
【図107】AVストリームの時間経過とAVストリームのデータバイト量との関係を説明する図である。
【図108】ビデオを可変ビットレート符号化して、AVストリームを記録する動作を説明するフローチャートである。
【図109】図108のステップS400の詳細を説明するフローチャートである。
【図110】AVストリームの時間経過とAVストリームのデータバイト量との関係が、比例することを保証する符号化モードを説明するフローチャートである。
【図111】ミニマイズのオペレーションの例を示す図である。
【図112】ミニマイズの時にIN_timeの前の不要なストリームデータを消去する例を示す図である。
【図113】ミニマイズの時にOUT_timeの後ろの不要なストリームデータを消去する例を示す図である。
【図114】EP_mapの作成の動作例を示すフローチャートである。
【図115】媒体を説明する図である。
【発明を実施するための最良の形態】
【0017】
以下に、本技術の実施の形態について、図面を参照して説明する。図1は、本技術を適用した記録再生装置1の内部構成例を示す図である。まず、外部から入力された信号を記録媒体に記録する動作を行う部分の構成について説明する。記録再生装置1は、アナログデータ、または、デジタルデータを入力し、記録することができる構成とされている。
【0018】
端子11には、アナログのビデオ信号が、端子12には、アナログのオーディオ信号が、それぞれ入力される。端子11に入力されたビデオ信号は、解析部14とAVエンコーダ15に、それぞれ出力される。端子12に入力されたオーディオ信号は、AVエンコーダ15に出力される。解析部14は、入力されたビデオ信号からシーンチェンジなどの特徴点を抽出する。
【0019】
AVエンコーダ15は、入力されたビデオ信号とオーディオ信号を、それぞれ符号化し、符号化ビデオストリーム(V)、符号化オーディオストリーム(A)、およびAV同期等のシステム情報(S)をマルチプレクサ16に出力する。
【0020】
符号化ビデオストリームは、例えば、MPEG(Moving Picture Expert Group)2方式により符号化されたビデオストリームであり、符号化オーディオストリームは、例えば、MPEG1方式により符号化されたオーディオストリームや、ドルビーAC3方式により符号化されたオーディオストリーム等である。マルチプレクサ16は、入力されたビデオおよびオーディオのストリームを、入力システム情報に基づいて多重化して、スイッチ17を介して多重化ストリーム解析部18とソースパケッタイザ19に出力する。
【0021】
多重化ストリームは、例えば、MPEG2トランスポートストリームやMPEG2プログラムストリームである。ソースパケッタイザ19は、入力された多重化ストリームを、そのストリームを記録させる記録媒体100のアプリケーションフォーマットに従って、ソースパケットから構成されるAVストリームを符号化する。AVストリームは、ECC(誤り訂正)符号化部20、変調部21で所定の処理が施され、書き込み部22に出力される。書き込み部22は、制御部23から出力される制御信号に基づいて、記録媒体100にAVストリームファイルを書き込む(記録する)。
【0022】
デジタルインタフェースまたはデジタルテレビジョンチューナから入力されるデジタルテレビジョン放送等のトランスポートストリームは、端子13に入力される。端子13に入力されたトランスポートストリームの記録方式には、2通りあり、それらは、トランスペアレントに記録する方式と、記録ビットレートを下げるなどの目的のために再エンコードをした後に記録する方式である。記録方式の指示情報は、ユーザインタフェースとしての端子24から制御部23へ入力される。
【0023】
入力トランスポートストリームをトランスペアレントに記録する場合、端子13に入力されたトランスポートストリームは、多重化ストリーム解析部18と、ソースパケッタイザ19に出力される。これ以降の記録媒体100へAVストリームが記録されるまでの処理は、上述の入力オーディオ浸透とビデオ信号を符号化して記録する場合と同一の処理なので、その説明は省略する。
【0024】
入力トランスポートストリームを再エンコードした後に記録する場合、端子13に入力されたトランスポートストリームは、デマルチプレクサ26に入力される。デマルチプレクサ26は、入力されたトランスポートストリームに対してデマルチプレクス処理を施し、ビデオストリーム(V)、オーディオストリーム(A)、およびシステム情報(S)を抽出する。
【0025】
デマルチプレクサ26により抽出されたストリーム(情報)のうち、ビデオストリームはAVデコーダ27に、オーディオストリームとシステム情報はマルチプレクサ16に、それぞれ出力される。AVデコーダ27は、入力されたビデオストリームを復号し、その再生ビデオ信号をAVエンコーダ15に出力する。AVエンコーダ15は、入力ビデオ信号を符号化し、符号化ビデオストリーム(V)をマルチプレクサ16に出力する。
【0026】
一方、デマルチプレクサ26から出力され、マルチプレクサ16に入力されたオーディオストリームとシステム情報、および、AVエンコーダ15から出力されたビデオストリームは、入力システム情報に基づいて、多重化されて、多重化ストリームとして多重化ストリーム解析部18とソースパケットタイザ19にスイッチ17を介して出力される。これ以後の記録媒体100へAVストリームが記録されるまでの処理は、上述の入力オーディオ信号とビデオ信号を符号化して記録する場合と同一の処理なので、その説明は省略する。
【0027】
本実施の形態の記録再生装置1は、AVストリームのファイルを記録媒体100に記録すると共に、そのファイルを説明するアプリケーションデータベース情報も記録する。アプリケーションデータベース情報は、制御部23により作成される。制御部23への入力情報は、解析部14からの動画像の特徴情報、多重化ストリーム解析部18からのAVストリームの特徴情報、および端子24から入力されるユーザからの指示情報である。
【0028】
解析部14から供給される動画像の特徴情報は、入力動画像信号の中の特徴的な画像に関係する情報であり、例えば、プログラムの開始点、シーンチェンジ点、コマーシャル(CM)の開始・終了点などの指定情報(マーク)であり、また、その指定場所の画像のサムネイル画像の情報も含まれる。
【0029】
多重化ストリーム解析部18からのAVストリームの特徴情報は、記録されるAVストリームの符号化情報に関係する情報であり、例えば、AVストリーム内のIピクチャのアドレス情報、AVストリームの符号化パラメータ、AVストリームの中の符号化パラメータの変化点情報、ビデオストリームの中の特徴的な画像に関係する情報(マーク)などである。
【0030】
端子24からのユーザの指示情報は、AVストリームの中の、ユーザが指定した再生区間の指定情報、その再生区間の内容を説明するキャラクター文字、ユーザが好みのシーンにセットするブックマークやリジューム点の情報などである。
【0031】
制御部23は、上記の入力情報に基づいて、AVストリームのデータベース(Clip)、 AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベース、記録媒体100の記録内容の管理情報(info.dvr)、およびサムネイル画像の情報を作成する。これらの情報から構成されるアプリケーションデータベース情報は、AVストリームと同様にして、ECC符号化部20、変調部21で処理されて、書き込み部22へ入力される。書き込み部22は、制御部23から出力される制御信号に基づいて、記録媒体100へデータベースファイルを記録する。
【0032】
上述したアプリケーションデータベース情報についての詳細は後述する。
【0033】
このようにして記録媒体100に記録されたAVストリームファイル(画像データと音声データのファイル)と、アプリケーションデータベース情報が再生される場合、まず、制御部23は、読み出し部28に対して、記録媒体100からアプリケーションデータベース情報を読み出すように指示する。そして、読み出し部28は、記録媒体100からアプリケーションデータベース情報を読み出し、そのアプリケーションデータベース情報は、復調部29、ECC復号部30の処理を経て、制御部23へ入力される。
【0034】
制御部23は、アプリケーションデータベース情報に基づいて、記録媒体100に記録されているPlayListの一覧を端子24のユーザインタフェースへ出力する。ユーザは、PlayListの一覧から再生したいPlayListを選択し、再生を指定されたPlayListに関する情報が制御部23へ入力される。制御部23は、そのPlayListの再生に必要なAVストリームファイルの読み出しを、読み出し部28に指示する。読み出し部28は、その指示に従い、記録媒体100から対応するAVストリームを読み出し復調部29に出力する。復調部29に入力されたAVストリームは、所定の処理が施されることにより復調され、さらにECC復号部30の処理を経て、ソースデパケッタイザ31出力される。
【0035】
ソースデパケッタイザ31は、記録媒体100から読み出され、所定の処理が施されたアプリケーションフォーマットのAVストリームを、デマルチプレクサ26に出力できるストリームに変換する。デマルチプレクサ26は、制御部23により指定されたAVストリームの再生区間(PlayItem)を構成するビデオストリーム(V)、オーディオストリーム(A)、およびAV同期等のシステム情報(S)を、AVデコーダ27に出力する。AVデコーダ27は、ビデオストリームとオーディオストリームを復号し、再生ビデオ信号と再生オーディオ信号を、それぞれ対応する端子32と端子33から出力する。
【0036】
また、ユーザインタフェースとしての端子24から、ランダムアクセス再生や特殊再生を指示する情報が入力された場合、制御部23は、AVストリームのデータベース(Clip)の内容に基づいて、記憶媒体100からのAVストリームの読み出し位置を決定し、そのAVストリームの読み出しを、読み出し部28に指示する。例えば、ユーザにより選択されたPlayListを、所定の時刻から再生する場合、制御部23は、指定された時刻に最も近いタイムスタンプを持つIピクチャからのデータを読み出すように読み出し部28に指示する。
【0037】
また、ユーザによって高速再生(Fast-forward playback)が指示された場合、制御部23は、AVストリームのデータベース(Clip)に基づいて、AVストリームの中のI-ピクチャデータを順次連続して読み出すように読み出し部28に指示する。
【0038】
読み出し部28は、指定されたランダムアクセスポイントからAVストリームのデータを読み出し、読み出されたデータは、後段の各部の処理を経て再生される。
【0039】
次に、ユーザが、記録媒体100に記録されているAVストリームの編集をする場合を説明する。ユーザが、記録媒体100に記録されているAVストリームの再生区間を指定して新しい再生経路を作成したい場合、例えば、番組Aという歌番組から歌手Aの部分を再生し、その後続けて、番組Bという歌番組の歌手Aの部分を再生したいといった再生経路を作成したい場合、ユーザインタフェースとしての端子24から再生区間の開始点(イン点)と終了点(アウト点)の情報が制御部23に入力される。制御部23は、AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベースを作成する。
【0040】
ユーザが、記録媒体100に記録されているAVストリームの一部を消去したい場合、ユーザインタフェースとしての端子24から消去区間のイン点とアウト点の情報が制御部23に入力される。制御部23は、必要なAVストリーム部分だけを参照するようにPlayListのデータベースを変更する。また、AVストリームの不必要なストリーム部分を消去するように、書き込み部22に指示する。
【0041】
ユーザが、記録媒体100に記録されているAVストリームの再生区間を指定して新しい再生経路を作成したい場合であり、かつ、それぞれの再生区間をシームレスに接続したい場合について説明する。このような場合、制御部23は、AVストリームの再生区間(PlayItem)をグループ化したもの(PlayList)のデータベースを作成し、さらに、再生区間の接続点付近のビデオストリームの部分的な再エンコードと再多重化を行う。
【0042】
まず、端子24から再生区間のイン点のピクチャの情報と、アウト点のピクチャの情報が制御部23へ入力される。制御部23は、読み出し部28にイン点側ピクチャとアウト点側のピクチャを再生するために必要なデータの読み出しを指示する。そして、読み出し部28は、記録媒体100からデータを読み出し、そのデータは、復調部29、ECC復号部30、ソースデパケッタイザ31を経て、デマルチプレクサ26に出力される。
【0043】
制御部23は、デマルチプレクサ26に入力されたデータを解析して、ビデオストリームの再エンコード方法(picture_coding_typeの変更、再エンコードする符号化ビット量の割り当て)と、再多重化方式を決定し、その方式をAVエンコーダ15とマルチプレクサ16に供給する。
【0044】
次に、デマルチプレクサ26は、入力されたストリームをビデオストリーム(V)、オーディオストリーム(A)、およびシステム情報(S)に分離する。ビデオストリームは、「AVデコーダ27に入力されるデータ」と「マルチプレクサ16に入力されるデータ」がある。前者のデータは、再エンコードするために必要なデータであり、これはAVデコーダ27で復号され、復号されたピクチャはAVエンコーダ15で再エンコードされて、ビデオストリームにされる。後者のデータは、再エンコードをしないで、オリジナルのストリームからコピーされるデータである。オーディオストリーム、システム情報については、直接、マルチプレクサ16に入力される。
【0045】
マルチプレクサ16は、制御部23から入力された情報に基づいて、入力ストリームを多重化し、多重化ストリームを出力する。多重化ストリームは、ECC符号化部20、変調部21で処理されて、書き込み部22に入力される。書き込み部22は、制御部23から供給される制御信号に基づいて、記録媒体100にAVストリームを記録する。
【0046】
以下に、アプリケーションデータベース情報や、その情報に基づく再生、編集といった操作に関する説明をする。図2は、アプリケーションフォーマットの構造を説明する図である。アプリケーションフォーマットは、AVストリームの管理のためにPlayListとClipの2つのレイヤをもつ。Volume Informationは、ディスク内のすべてのClipとPlayListの管理をする。ここでは、1つのAVストリームとその付属情報のペアを1つのオブジェクトと考え、それをClipと称する。AVストリームファイルはClip AV stream fileと称し、その付属情報は、Clip Information fileと称する。
【0047】
1つのClip AV stream fileは、MPEG2トランスポートストリームをアプリケーションフォーマットによって規定される構造に配置したデータをストアする。一般的に、ファイルは、バイト列として扱われるが、Clip AV stream fileのコンテンツは、時間軸上に展開され、Clipの中のエントリーポイントは、主に時間ベースで指定される。所定のClipへのアクセスポイントのタイムスタンプが与えられた時、Clip Information fileは、Clip AV stream fileの中でデータの読み出しを開始すべきアドレス情報を見つけるために役立つ。
【0048】
PlayListについて、図3を参照して説明する。PlayListは、Clipの中からユーザが見たい再生区間を選択し、それを簡単に編集することができるようにするために設けられている。1つのPlayListは、Clipの中の再生区間の集まりである。所定のClipの中の1つの再生区間は、PlayItemと呼ばれ、それは、時間軸上のイン点(IN)とアウト点(OUT)の対で表される。従って、PlayListは、複数のPlayItemが集まることにより構成される。
【0049】
PlayListには、2つのタイプがある。1つは、Real PlayListであり、もう1つは、Virtual PlayListである。Real PlayListは、それが参照しているClipのストリーム部分を共有している。すなわち、Real PlayListは、それの参照しているClipのストリーム部分に相当するデータ容量をディスクの中で占め、Real PlayListが消去された場合、それが参照しているClipのストリーム部分もまたデータが消去される。
【0050】
Virtual PlayListは、Clipのデータを共有していない。従って、Virtual PlayListが変更または消去されたとしても、Clipの内容には何も変化が生じない。
【0051】
次に、Real PlayListの編集について説明する。図4(A)は、Real PlayListのクリエイト(create:作成)に関する図であり、AVストリームが新しいClipとして記録される場合、そのClip全体を参照するReal PlayListが新たに作成される操作である。
【0052】
図4(B)は、Real PlayListのディバイド(divide:分割)に関する図であり、Real PlayListが所望な点で分けられて、2つのReal PlayListに分割される操作である。この分割という操作は、例えば、1つのPlayListにより管理される1つのクリップ内に、2つの番組が管理されているような場合に、ユーザが1つ1つの番組として登録(記録)し直したいといったようなときに行われる。この操作により、Clipの内容が変更される(Clip自体が分割される)ことはない。
【0053】
図4(C)は、Real PlayListのコンバイン(combine:結合)に関する図であり、2つのReal PlayListを結合して、1つの新しいReal PlayListにする操作である。この結合という操作は、例えば、ユーザが2つの番組を1つの番組として登録し直したいといったようなときに行われる。この操作により、Clipが変更される(Clip自体が1つにされる)ことはない。
【0054】
図5(A)は、Real PlayList全体のデリート(delete:削除)に関する図であり、所定のReal PlayList全体を消去する操作がされた場合、削除されたReal PlayListが参照するClipの、対応するストリーム部分も削除される。
【0055】
図5(B)は、Real PlayListの部分的な削除に関する図であり、Real PlayListの所望な部分が削除された場合、対応するPlayItemが、必要なClipのストリーム部分だけを参照するように変更される。そして、Clipの対応するストリーム部分は削除される。
【0056】
図5(C)は、Real PlayListのミニマイズ(Minimize:最小化)に関する図であり、Real PlayListに対応するPlayItemを、Virtual PlayListに必要なClipのストリーム部分だけを参照するようにする操作である。Virtual PlayList にとって不必要なClipの、対応するストリーム部分は削除される。
【0057】
上述したような操作により、Real PlayListが変更されて、そのReal PlayListが参照するClipのストリーム部分が削除された場合、その削除されたClipを使用しているVirtual PlayListが存在し、そのVirtual PlayListにおいて、削除されたClipにより問題が生じる可能性がある。
【0058】
そのようなことが生じないように、ユーザに、削除という操作に対して、「そのReal PlayListが参照しているClipのストリーム部分を参照しているVirtual PlayListが存在し、もし、そのReal PlayListが消去されると、そのVirtual PlayListもまた消去されることになるが、それでも良いか?」といったメッセージなどを表示させることにより、確認(警告)を促した後に、ユーザの指示により削除の処理を実行、または、キャンセルする。または、Virtual PlayListを削除する代わりに、Real PlayListに対してミニマイズの操作が行われるようにする。
【0059】
次にVirtual PlayListに対する操作について説明する。Virtual PlayListに対して操作が行われたとしても、Clipの内容が変更されることはない。図6は、アセンブル(Assemble) 編集 (IN-OUT 編集)に関する図であり、ユーザが見たいと所望した再生区間のPlayItemを作り、Virtual PlayListを作成するといった操作である。PlayItem間のシームレス接続が、アプリケーションフォーマットによりサポートされている(後述)。
【0060】
図6(A)に示したように、2つのReal PlayList1,2と、それぞれのRealPlayListに対応するClip1,2が存在している場合に、ユーザがReal PlayList1内の所定の区間(In1乃至Out1までの区間:PlayItem1)を再生区間として指示し、続けて再生する区間として、Real PlayList2内の所定の区間(In2乃至Out2までの区間:PlayItem2)を再生区間として指示したとき、図6(B)に示すように、PlayItem1とPlayItem2から構成される1つのVirtual PlayListが作成される。
【0061】
次に、Virtual PlayList の再編集(Re-editing)について説明する。再編集には、Virtual PlayListの中のイン点やアウト点の変更、Virtual PlayListへの新しいPlayItemの挿入(insert)や追加(append)、Virtual PlayListの中のPlayItemの削除などがある。また、Virtual PlayListそのものを削除することもできる。
【0062】
図7は、Virtual PlayListへのオーディオのアフレコ(Audio dubbing (post recording))に関する図であり、Virtual PlayListへのオーディオのアフレコをサブパスとして登録する操作のことである。このオーディオのアフレコは、アプリケーションフォーマットによりサポートされている。Virtual PlayListのメインパスのAVストリームに、付加的なオーディオストリームが、サブパスとして付加される。
【0063】
Real PlayListとVirtual PlayListで共通の操作として、図8に示すようなPlayListの再生順序の変更(Moving)がある。この操作は、ディスク(ボリューム)の中でのPlayListの再生順序の変更であり、アプリケーションフォーマットにおいて定義されるTable Of PlayList(図20などを参照して後述する)によってサポートされる。この操作により、Clipの内容が変更されるようなことはない。
【0064】
次に、マーク(Mark)について説明する。マークは、ClipおよびPlayListの中のハイライトや特徴的な時間を指定するために設けられている。Clipに付加されるマークは、AVストリームの内容に起因する特徴的なシーンを指定する、例えば、シーンチェンジ点などである。PlayListを再生する時、そのPlayListが参照するClipのマークを参照して、使用する事ができる。
【0065】
PlayListに付加されるマークは、主にユーザによってセットされる、例えば、ブックマークやリジューム点などである。ClipまたはPlayListにマークをセットすることは、マークの時刻を示すタイムスタンプをマークリストに追加することにより行われる。また、マークを削除することは、マークリストの中から、そのマークのタイムスタンプを除去する事である。従って、マークの設定や削除により、AVストリームは何の変更もされない。
【0066】
次にサムネイルについて説明する。サムネイルは、Volume、PlayList、およびClipに付加される静止画である。サムネイルには、2つの種類があり、1つは、内容を表す代表画としてのサムネイルである。これは主としてユーザがカーソル(不図示)などを操作して見たいものを選択するためのメニュー画面で使われるものである。もう1つは、マークが指しているシーンを表す画像である。
【0067】
Volumeと各Playlistは代表画を持つことができるようにする必要がある。Volumeの代表画は、ディスク(記録媒体100、以下、記録媒体100はディスク状のものであるとし、適宜、ディスクと記述する)を記録再生装置1の所定の場所にセットした時に、そのディスクの内容を表す静止画を最初に表示する場合などに用いられることを想定している。Playlistの代表画は、Playlistを選択するメニュー画面において、Playlistの内容を表すための静止画として用いられることを想定している。
【0068】
Playlistの代表画として、Playlistの最初の画像をサムネイル(代表画)にすることが考えられるが、必ずしも再生時刻0の先頭の画像が内容を表す上で最適な画像とは限らない。そこで、Playlistのサムネイルとして、任意の画像をユーザが設定できるようにする。以上2種類のサムネイルをメニューサムネイルと称する。メニューサムネイルは頻繁に表示されるため、ディスクから高速に読み出される必要がある。このため、すべてのメニューサムネイルを1つのファイルに格納することが効率的である。メニューサムネイルは、必ずしもボリューム内の動画から抜き出したピクチャである必要はなく、図10に示すように、パーソナルコンピュータやデジタルスチルカメラから取り込こまれた画像でもよい。
【0069】
一方、ClipとPlaylistには、複数個のマークを打てる必要があり、マーク位置の内容を知るためにマーク点の画像を容易に見ることが出来るようにする必要がある。このようなマーク点を表すピクチャをマークサムネイル(Mark Thumbnails)と称する。従って、サムネイルの元となる画像は、外部から取り込んだ画像よりも、マーク点の画像を抜き出したものが主となる。
【0070】
図11は、PlayListに付けられるマークと、そのマークサムネイルの関係について示す図であり、図12は、Clipに付けられるマークと、そのマークサムネイルの関係について示す図である。マークサムネイルは、メニューサムネイルと異なり、Playlistの詳細を表す時に、サブメニュー等で使われるため、短いアクセス時間で読み出されるようなことは要求されない。そのため、サムネイルが必要になる度に、記録再生装置1がファイルを開き、そのファイルの一部を読み出すことで多少時間がかかっても、問題にはならない。
【0071】
また、ボリューム内に存在するファイル数を減らすために、すべてのマークサムネイルは1つのファイルに格納するのがよい。Playlistはメニューサムネイル1つと複数のマークサムネイルを有することができるが、Clipは直接ユーザが選択する必要性がない(通常、Playlist経由で指定する)ため、メニューサムネイルを設ける必要はない。
【0072】
図13は、上述したことを考慮した場合のメニューサムネイル、マークサムネイル、PlayList、およびClipの関係について示した図である。メニューサムネイルファイルには、PlayList毎に設けられたメニューサムネイルがファイルされている。メニューサムネイルファイルには、ディスクに記録されているデータの内容を代表するボリュームサムネイルが含まれている。マークサムネイルファイルは、各PlayList毎と各Clip毎に作成されたサムネイルがファイルされている。
【0073】
次に、CPI(Characteristic Point Information)について説明する。CPIは、Clipインフォメーションファイルに含まれるデータであり、主に、それはClipへのアクセスポイントのタイムスタンプが与えられた時、Clip AV stream fileの中でデータの読み出しを開始すべきデータアドレスを見つけるために用いられる。本実施の形態では、2種類のCPIを用いる。1つは、EP_mapであり、もう一つは、TU_mapである。
【0074】
EP_mapは、エントリーポイント(EP)データのリストであり、それはエレメンタリストリームおよびトランスポートストリームから抽出されたものである。これは、AVストリームの中でデコードを開始すべきエントリーポイントの場所を見つけるためのアドレス情報を持つ。1つのEPデータは、プレゼンテーションタイムスタンプ(PTS)と、そのPTSに対応するアクセスユニットのAVストリームの中のデータアドレスの対で構成される。
【0075】
EP_mapは、主に2つの目的のために使用される。第1に、PlayListの中でプレゼンテーションタイムスタンプによって参照されるアクセスユニットのAVストリームの中のデータアドレスを見つけるために使用される。第2に、ファーストフォワード再生やファーストリバース再生のために使用される。記録再生装置1が、入力AVストリームを記録する場合、そのストリームのシンタクスを解析することができるとき、EP_mapが作成され、ディスクに記録される。
【0076】
TU_mapは、デジタルインタフェースを通して入力されるトランスポートパケットの到着時刻に基づいたタイムユニット(TU)データのリストを持つ。これは、到着時刻ベースの時間とAVストリームの中のデータアドレスとの関係を与える。記録再生装置1が、入力AVストリームを記録する場合、そのストリームのシンタクスを解析することができないとき、TU_mapが作成され、ディスクに記録される。
【0077】
本実施の形態では、セルフエンコードのストリームフォーマット(SESF)を定義する。SESFは、アナログ入力信号を符号化する目的、およびデジタル入力信号(例えばDV)をデコードしてからMPEG2トランスポートストリームに符号化する場合に用いられる。
【0078】
SESFは、MPEG-2トランスポートストリームおよびAVストリームについてのエレメンタリストリームの符号化制限を定義する。記録再生装置1が、SESFストリームをエンコードし、記録する場合、EP_mapが作成され、ディスクに記録される。
【0079】
デジタル放送のストリームは、次に示す方式のうちのいずれかが用いられて記録媒体100に記録される。まず、デジタル放送のストリームをSESFストリームにトランスコーディングする。この場合、記録されたストリームは、SESFに準拠しなければならない。この場合、EP_mapが作成されて、ディスクに記録されなければならない。
【0080】
あるいは、デジタル放送ストリームを構成するエレメンタリストリームを新しいエレメンタリストリームにトランスコーディングし、そのデジタル放送ストリームの規格化組織が定めるストリームフォーマットに準拠した新しいトランスポートストリームに再多重化する。この場合、EP_mapが作成されて、ディスクに記録されなければならない。
【0081】
例えば、入力ストリームがISDB(日本のデジタルBS放送の規格名称)準拠のMPEG-2トランスポートストリームであり、それがHDTVビデオストリームとMPEG AACオーディオストリームを含むとする。HDTVビデオストリームをSDTVビデオストリームにトランスコーディングし、そのSDTVビデオストリームとオリジナルのAACオーディオストリームをTSに再多重化する。SDTVストリームと記録されるトランスポートストリームは、共にISDBフォーマットに準拠しなければならない。
【0082】
デジタル放送のストリームが、記録媒体100に記録される際の他の方式として、入力トランスポートストリームをトランスペアレントに記録する(入力トランスポートストリームを何も変更しないで記録する)場合であり、その時にEP_mapが作成されてディスクに記録される。
【0083】
または、入力トランスポートストリームをトランスペアレントに記録する(入力トランスポートストリームを何も変更しないで記録する)場合であり、その時にTU_mapが作成されてディスクに記録される。
【0084】
次にディレクトリとファイルについて説明する。以下、記録再生装置1をDVR(Digital Video Recording)と適宜記述する。図14はディスク上のディレクトリ構造の一例を示す図である。DVRのディスク上に必要なディレクトリは、図14に示したように、"DVR"ディレクトリを含むrootディレクトリ、"PLAYLIST"ディレクトリ、"CLIPINF"ディレクトリ、"M2TS"ディレクトリ、および"DATA"ディレクトリを含む"DVR"ディレクトリである。rootディレクトリの下に、これら以外のディレクトリを作成されるようにしても良いが、それらは、本実施の形態のアプリケーションフォーマットでは、無視されるとする。
【0085】
"DVR"ディレクトリの下には、 DVRアプリケーションフォーマットによって規定される全てのファイルとディレクトリがストアされる。"DVR"ディレクトリは、4個のディレクトリを含む。"PLAYLIST"ディレクトリの下には、Real PlayListとVirtual PlayListのデータベースファイルが置かれる。このディレクトリは、PlayListが1つもなくても存在する。
【0086】
"CLIPINF"ディレクトリの下には、Clipのデータベースが置かれる。このディレクトリも、Clipが1つもなくても存在する。"M2TS"ディレクトリの下には、AVストリームファイルが置かれる。このディレクトリは、AVストリームファイルが1つもなくても存在する。"DATA"ディレクトリは、デジタルTV放送などのデータ放送のファイルがストアされる。
【0087】
"DVR"ディレクトリは、次に示すファイルをストアする。"info.dvr"ファイルは、 DVRディレクトリの下に作られ、アプリケーションレイヤの全体的な情報をストアする。DVRディレクトリの下には、ただ一つのinfo.dvrがなければならない。ファイル名は、info.dvrに固定されるとする。"menu.thmb"ファイルは、メニューサムネイル画像に関連する情報をストアする。DVRディレクトリの下には、ゼロまたは1つのメニューサムネイルがなければならない。ファイル名は、memu.thmbに固定されるとする。メニューサムネイル画像が1つもない場合、このファイルは、存在しなくても良い。
【0088】
"mark.thmb"ファイルは、マークサムネイル画像に関連する情報をストアする。DVRディレクトリの下には、ゼロまたは1つのマークサムネイルがなければならない。ファイル名は、mark.thmbに固定されるとする。メニューサムネイル画像が1つもない場合、このファイルは、存在しなくても良い。
【0089】
"PLAYLIST"ディレクトリは、2種類のPlayListファイルをストアするものであり、それらは、Real PlayListとVirtual PlayListである。”xxxxx.rpls" ファイルは、1つのReal PlayListに関連する情報をストアする。それぞれのReal PlayList毎に、1つのファイルが作られる。ファイル名は、"xxxxx.rpls"である。ここで、"xxxxx"は、5個の0乃至9まで数字である。ファイル拡張子は、"rpls"でなければならないとする。
【0090】
"yyyyy.vpls"ファイルは、1つのVirtual PlayListに関連する情報をストアする。それぞれのVirtual PlayList毎に、1つのファイルが作られる。ファイル名は、"yyyyy.vpls"である。ここで、"yyyyy"は、5個の0乃至9まで数字である。ファイル拡張子は、"vpls"でなければならないとする。
【0091】
"CLIPINF"ディレクトリは、それぞれのAVストリームファイルに対応して、1つのファイルをストアする。"zzzzz.clpi" ファイルは、1つのAVストリームファイル(Clip AV stream file または Bridge-Clip AV stream file)に対応するClip Information fileである。ファイル名は、"zzzzz.clpi"であり、"zzzzz"は、5個の0乃至9までの数字である。ファイル拡張子は、"clpi"でなければならないとする。
【0092】
"M2TS"ディレクトリは、AVストリームのファイルをストアする。"zzzzz.m2ts"ファイルは、DVRシステムにより扱われるAVストリームファイルである。これは、Clip AV stream fileまたはBridge-Clip AV streamである。ファイル名は、"zzzzz.m2ts"であり、"zzzzz"は、5個の0乃至9までの数字である。ファイル拡張子は、"m2ts"でなければならないとする。
【0093】
”DATA”ディレクトリは、データ放送から伝送されるデータをストアするものであり、データとは、例えば、XML fileやMHEGファイルなどである。
【0094】
次に、各ディレクトリ(ファイル)のシンタクスとセマンティクスを説明する。まず、”info.dvr”ファイルについて説明する。図15は、”info.dvr”ファイルのシンタクスを示す図である。”info.dvr”ファイルは、3個のオブジェクトから構成され、それらは、DVRVolume()、TableOfPlayLists()、およびMakerPrivateData()である。
【0095】
図15に示したinfo.dvrのシンタクスについて説明するに、TableOfPlayLists_Start_addressは、info.dvrファイルの先頭のバイトからの相対バイト数を単位として、TableOfPlayList()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
【0096】
MakerPrivateData_Start_addressは、info.dvrファイルの先頭のバイトからの相対バイト数を単位として、MakerPrivateData()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。padding_word(パディングワード)は、info.dvrのシンタクスに従って挿入される。N1とN2は、ゼロまたは任意の正の整数である。それぞれのパディングワードは、任意の値を取るようにしても良い。
【0097】
DVRVolume()は、ボリューム(ディスク)の内容を記述する情報をストアする。図16は、DVRVolume()のシンタクスを示す図である。図16に示したDVR Volume()のシンタクスを説明するに、version_numberは、このDVRVolume()のバージョンナンバーを示す4個のキャラクター文字を示す。version_numberは、ISO 646に従って、"0045"と符号化される。
【0098】
lengthは、このlengthフィールドの直後からDVRVolume()の最後までのDVRVolume()のバイト数を示す32ビットの符号なし整数で表される。
【0099】
ResumeVolume()は、ボリュームの中で最後に再生したReal PlayListまたはVirtual PlayListのファイル名を記憶している。ただし、Real PlayListまたはVirtual PlayListの再生をユーザが中断した時の再生位置は、PlayListMark()において定義されるresume-markにストアされる。
【0100】
図17は、ResumeVolume()のシンタクスを示す図である。図17に示したResumeVolume()のシンタクスを説明するに、valid_flagは、この1ビットのフラグが1にセットされている場合、resume_PlayList_nameフィールドが有効であることを示し、このフラグが0にセットされている場合、resume_PlayList_nameフィールドが無効であることを示す。
【0101】
resume_PlayList_nameの10バイトのフィールドは、リジュームされるべきReal PlayListまたはVirtual PlayListのファイル名を示す。
【0102】
図16に示したDVRVolume()のシンタクスのなかの、UIAppInfoVolume は、ボリュームについてのユーザインタフェースアプリケーションのパラメータをストアする。図18は、UIAppInfoVolumeのシンタクスを示す図であり、そのセマンティクスを説明するに、character_setの8ビットのフィールドは、Volume_nameフィールドに符号化されているキャラクター文字の符号化方法を示す。その符号化方法は、図19に示される値に対応する。
【0103】
name_lengthの8ビットフィールドは、Volume_nameフィールドの中に示されるボリューム名のバイト長を示す。Volume_nameのフィールドは、ボリュームの名称を示す。このフィールドの中の左からname_length数のバイト数が、有効なキャラクター文字であり、それはボリュームの名称を示す。Volume_nameフィールドの中で、それら有効なキャラクター文字の後の値は、どんな値が入っていても良い。
【0104】
Volume_protect_flagは、ボリュームの中のコンテンツを、ユーザに制限することなしに見せてよいかどうかを示すフラグである。このフラグが1にセットされている場合、ユーザが正しくPIN番号(パスワード)を入力できたときだけ、そのボリュームのコンテンツを、ユーザに見せる事(再生される事)が許可される。このフラグが0にセットされている場合、ユーザがPIN番号を入力しなくても、そのボリュームのコンテンツを、ユーザに見せる事が許可される。
【0105】
最初に、ユーザが、ディスクをプレーヤへ挿入した時点において、もしこのフラグが0にセットされているか、または、このフラグが1にセットされていてもユーザがPIN番号を正しく入力できたならば、記録再生装置1は、そのディスクの中のPlayListの一覧を表示させる。それぞれのPlayListの再生制限は、volume_protect_flagとは無関係であり、それはUIAppInfoPlayList()の中に定義されるplayback_control_flagによって示される。
【0106】
PINは、4個の0乃至9までの数字で構成され、それぞれの数字は、ISO/IEC 646に従って符号化される。ref_thumbnail_indexのフィールドは、ボリュームに付加されるサムネイル画像の情報を示す。ref_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのボリュームにはサムネイル画像が付加されており、そのサムネイル画像は、menu.thumファイルの中にストアされている。その画像は、menu.thumファイルの中でref_thumbnail_indexの値を用いて参照される。ref_thumbnail_indexフィールドが、0xFFFF である場合、そのボリュームにはサムネイル画像が付加されていないことを示す。
【0107】
次に図15に示したinfo.dvrのシンタクス内のTableOfPlayLists()について説明する。TableOfPlayLists()は、PlayList(Real PlayListとVirtual PlayList)のファイル名をストアする。ボリュームに記録されているすべてのPlayListファイルは、TableOfPlayList()の中に含まれる。TableOfPlayLists()は、ボリュームの中のPlayListのデフォルトの再生順序を示す。
【0108】
図20は、TableOfPlayLists()のシンタクスを示す図であり、そのシンタクスについて説明するに、TableOfPlayListsのversion_numberは、このTableOfPlayListsのバージョンナンバーを示す4個のキャラクター文字を示す。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0109】
lengthは、このlengthフィールドの直後からTableOfPlayLists()の最後までのTableOfPlayLists()のバイト数を示す32ビットの符号なしの整数である。number_of_PlayListsの16ビットのフィールドは、PlayList_file_nameを含むfor-loopのループ回数を示す。この数字は、ボリュームに記録されているPlayListの数に等しくなければならない。PlayList_file_nameの10バイトの数字は、PlayListのファイル名を示す。
【0110】
図21は、TableOfPlayLists()のシンタクスを別実施の構成を示す図である。図21に示したシンタクスは、図20に示したシンタクスに、UIAppinfoPlayList(後述)を含ませた構成とされている。このように、UIAppinfoPlayListを含ませた構成とすることで、TableOfPlayListsを読み出すだけで、メニュー画面を作成することが可能となる。ここでは、図20に示したシンタクスを用いるとして以下の説明をする。
【0111】
図15に示したinfo.dvrのシンタクス内のMakersPrivateDataについて説明する。MakersPrivateDataは、記録再生装置1のメーカが、各社の特別なアプリケーションのために、MakersPrivateData()の中にメーカのプライベートデータを挿入できるように設けられている。各メーカのプライベートデータは、それを定義したメーカを識別するために標準化されたmaker_IDを持つ。MakersPrivateData()は、1つ以上のmaker_IDを含んでも良い。
【0112】
所定のメーカが、プライベートデータを挿入したい時に、すでに他のメーカのプライベートデータがMakersPrivateData()に含まれていた場合、他のメーカは、既にある古いプライベートデータを消去するのではなく、新しいプライベートデータをMakersPrivateData()の中に追加するようにする。このように、本実施の形態においては、複数のメーカのプライベートデータが、1つのMakersPrivateData()に含まれることが可能であるようにする。
【0113】
図22は、MakersPrivateDataのシンタクスを示す図である。図22に示したMakersPrivateDataのシンタクスについて説明するに、version_numberは、このMakersPrivateData()のバージョンナンバーを示す4個のキャラクター文字を示す。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。lengthは、このlengthフィールドの直後からMakersPrivateData()の最後までのMakersPrivateData()のバイト数を示す32ビットの符号なし整数を示す。
【0114】
mpd_blocks_start_addressは、MakersPrivateData()の先頭のバイトからの相対バイト数を単位として、最初のmpd_block()の先頭バイトアドレスを示す。相対バイト数はゼロからカウントされる。number_of_maker_entriesは、MakersPrivateData()の中に含まれているメーカプライベートデータのエントリー数を与える16ビットの符号なし整数である。MakersPrivateData()の中に、同じmaker_IDの値を持つメーカプライベートデータが2個以上存在してはならない。
【0115】
mpd_block_sizeは、1024バイトを単位として、1つのmpd_blockの大きさを与える16ビットの符号なし整数である。例えば、mpd_block_size=1ならば、それは1つのmpd_blockの大きさが1024バイトであることを示す。number_of_mpd_blocksは、MakersPrivateData()の中に含まれるmpd_blockの数を与える16ビットの符号なし整数である。maker_IDは、そのメーカプライベートデータを作成したDVRシステムの製造メーカを示す16ビットの符号なし整数である。maker_IDに符号化される値は、このDVRフォーマットのライセンサによって指定される。
【0116】
maker_model_codeは、そのメーカプライベートデータを作成したDVRシステムのモデルナンバーコードを示す16ビットの符号なし整数である。maker_model_codeに符号化される値は、このフォーマットのライセンスを受けた製造メーカによって設定される。start_mpd_block_numberは、そのメーカプライベートデータが開始されるmpd_blockの番号を示す16ビットの符号なし整数である。メーカプライベートデータの先頭データは、mpd_blockの先頭にアラインされなければならない。start_mpd_block_numberは、mpd_blockのfor-loopの中の変数jに対応する。
【0117】
mpd_lengthは、バイト単位でメーカプライベートデータの大きさを示す32ビットの符号なし整数である。mpd_blockは、メーカプライベートデータがストアされる領域である。MakersPrivateData()の中のすべてのmpd_blockは、同じサイズでなければならない。
【0118】
次に、Real PlayList fileとVirtual PlayList fileについて、換言すれば、xxxxx.rplsとyyyyy.vplsについて説明する。図23は、xxxxx.rpls(Real PlayList)、または、yyyyy.vpls(Virtual PlayList)のシンタクスを示す図である。xxxxx.rplsとyyyyy.vplsは、同一のシンタクス構成をもつ。xxxxx.rplsとyyyyy.vplsは、それぞれ、3個のオブジェクトから構成され、それらは、PlayList()、PlayListMark()、およびMakerPrivateData()である。
【0119】
PlayListMark_Start_addressは、PlayListファイルの先頭のバイトからの相対バイト数を単位として、PlayListMark()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
【0120】
MakerPrivateData_Start_addressは、PlayListファイルの先頭のバイトからの相対バイト数を単位として、MakerPrivateData()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
【0121】
padding_word(パディングワード)は、PlayListファイルのシンタクスにしたがって挿入され、N1とN2は、ゼロまたは任意の正の整数である。それぞれのパディングワードは、任意の値を取るようにしても良い。
【0122】
ここで、既に、簡便に説明したが、PlayListについてさらに説明する。ディスク内にあるすべてのReal PlayListによって、Bridge-Clip(後述)を除くすべてのClipの中の再生区間が参照されていなければならない。かつ、2つ以上のReal PlayListが、それらのPlayItemで示される再生区間を同一のClipの中でオーバーラップさせてはならない。
【0123】
図24を参照してさらに説明するに、図24(A)に示したように、全てのClipは、対応するReal PlayListが存在する。この規則は、図24(B)に示したように、編集作業が行われた後においても守られる。従って、全てのClipは、どれかしらのReal PlayListを参照することにより、必ず視聴することが可能である。
【0124】
図24(C)に示したように、Virtual PlayListの再生区間は、Real PlayListの再生区間またはBridge-Clipの再生区間の中に含まれていなければならない。どのVirtual PlayListにも参照されないBridge-Clipがディスクの中に存在してはならない。
【0125】
Real PlayListは、PlayItemのリストを含むが、SubPlayItemを含んではならない。Virtual PlayListは、PlayItemのリストを含み、PlayList()の中に示されるCPI_typeがEP_map typeであり、かつPlayList_typeが0(ビデオとオーディオを含むPlayList)である場合、Virtual PlayListは、ひとつのSubPlayItemを含む事ができる。本実施の形態におけるPlayList()では、SubPlayIteはオーディオのアフレコの目的にだけに使用される、そして、1つのVirtual PlayListが持つSubPlayItemの数は、0または1でなければならない。
【0126】
次に、PlayListについて説明する。図25は、PlayListのシンタクスを示す図である。図25に示したPlayListのシンタクスを説明するに、version_numberは、このPlayList()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。lengthは、このlengthフィールドの直後からPlayList()の最後までのPlayList()のバイト数を示す32ビットの符号なし整数である。PlayList_typeは、このPlayListのタイプを示す8ビットのフィールドであり、その一例を図26に示す。
【0127】
CPI_typeは、1ビットのフラグであり、PlayItem()およびSubPlayItem()によって参照されるClipのCPI_typeの値を示す。1つのPlayListによって参照される全てのClipは、それらのCPI()の中に定義されるCPI_typeの値が同じでなければならない。number_of_PlayItemsは、PlayListの中にあるPlayItemの数を示す16ビットのフィールドである。
【0128】
所定のPlayItem()に対応するPlayItem_idは、PlayItem()を含むfor-loopの中で、そのPlayItem()の現れる順番により定義される。PlayItem_idは、0から開始される。number_of_SubPlayItemsは、PlayListの中にあるSubPlayItemの数を示す16ビットのフィールドである。この値は、0または1である。付加的なオーディオストリームのパス(オーディオストリームパス)は、サブパスの一種である。
【0129】
次に、図25に示したPlayListのシンタクスのUIAppInfoPlayListについて説明する。UIAppInfoPlayListは、PlayListについてのユーザインタフェースアプリケーションのパラメータをストアする。図27は、UIAppInfoPlayListのシンタクスを示す図である。図27に示したUIAppInfoPlayListのシンタクスを説明するに、character_setは、8ビットのフィールドであり、PlayList_nameフィールドに符号化されているキャラクター文字の符号化方法を示す。その符号化方法は、図19に示したテーブルに準拠する値に対応する。
【0130】
name_lengthは、8ビットフィールドであり、PlayList_nameフィールドの中に示されるPlayList名のバイト長を示す。PlayList_nameのフィールドは、PlayListの名称を示す。このフィールドの中の左からname_length数のバイト数が、有効なキャラクター文字であり、それはPlayListの名称を示す。PlayList_nameフィールドの中で、それら有効なキャラクター文字の後の値は、どんな値が入っていても良い。
【0131】
record_time_and_dateは、PlayListが記録された時の日時をストアする56ビットのフィールドである。このフィールドは、年/月/日/時/分/秒について、14個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、2001/12/23:01:02:03 は、"0x20011223010203"と符号化される。
【0132】
durationは、PlayListの総再生時間を時間/分/秒の単位で示した24ビットのフィールドである。このフィールドは、6個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、01:45:30は、"0x014530"と符号化される。
【0133】
valid_periodは、PlayListが有効である期間を示す32ビットのフィールドである。このフィールドは、8個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、記録再生装置1は、この有効期間の過ぎたPlayListを自動消去する、といったように用いられる。例えば、2001/05/07 は、"0x20010507"と符号化される。
【0134】
maker_idは、そのPlayListを最後に更新したDVRプレーヤ(記録再生装置1)の製造者を示す16ビットの符号なし整数である。maker_idに符号化される値は、DVRフォーマットのライセンサによって割り当てられる。maker_codeは、そのPlayListを最後に更新したDVRプレーヤのモデル番号を示す16ビットの符号なし整数である。maker_codeに符号化される値は、DVRフォーマットのライセンスを受けた製造者によって決められる。
【0135】
playback_control_flagのフラグが1にセットされている場合、ユーザが正しくPIN番号を入力できた場合にだけ、そのPlayListは再生される。このフラグが0にセットされている場合、ユーザがPIN番号を入力しなくても、ユーザは、そのPlayListを視聴することができる。
【0136】
write_protect_flagは、図28(A)にテーブルを示すように、1にセットされている場合、write_protect_flagを除いて、そのPlayListの内容は、消去および変更されない。このフラグが0にセットされている場合、ユーザは、そのPlayListを自由に消去および変更できる。このフラグが1にセットされている場合、ユーザが、そのPlayListを消去、編集、または上書きする前に、記録再生装置1はユーザに再確認するようなメッセージを表示させる。
【0137】
write_protect_flagが0にセットされているReal PlayListが存在し、かつ、そのReal PlayListのClipを参照するVirtual PlayListが存在し、そのVirtual PlayListのwrite_protect_flagが1にセットされていても良い。ユーザが、RealPlayListを消去しようとする場合、記録再生装置1は、そのReal PlayListを消去する前に、上記Virtual PlayListの存在をユーザに警告するか、または、そのReal PlayListを"Minimize”する。
【0138】
is_played_flagは、図28(B)に示すように、フラグが1にセットされている場合、そのPlayListは、記録されてから一度は再生されたことを示し、0にセットされている場合、そのPlayListは、記録されてから一度も再生されたことがないことを示す。
【0139】
archiveは、図28(C)に示すように、そのPlayListがオリジナルであるか、コピーされたものであるかを示す2ビットのフィールドである。ref_thumbnail_index のフィールドは、PlayListを代表するサムネイル画像の情報を示す。ref_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのPlayListには、PlayListを代表するサムネイル画像が付加されており、そのサムネイル画像は、menu.thum ファイルの中にストアされている。その画像は、menu.thumファイルの中でref_thumbnail_indexの値を用いて参照される。ref_thumbnail_indexフィールドが、0xFFFF である場合、そのPlayListには、PlayListを代表するサムネイル画像が付加されていない。
【0140】
次にPlayItemについて説明する。1つのPlayItem()は、基本的に次のデータを含む。Clipのファイル名を指定するためのClip_information_file_name、Clipの再生区間を特定するためのIN_timeとOUT_timeのペア、PlayList()において定義されるCPI_typeがEP_map typeである場合、IN_timeとOUT_timeが参照するところのSTC_sequence_id、および、先行するPlayItemと現在のPlayItemとの接続の状態を示すところのconnection_conditionである。
【0141】
PlayListが2つ以上のPlayItemから構成される時、それらのPlayItemはPlayListのグローバル時間軸上に、時間のギャップまたはオーバーラップなしに一列に並べられる。PlayList()において定義されるCPI_typeがEP_map typeであり、かつ現在のPlayItemがBridgeSequence()を持たない時、そのPlayItemにおいて定義されるIN_timeとOUT_timeのペアは、STC_sequence_idによって指定される同じSTC連続区間上の時間を指していなければならない。そのような例を図29に示す。
【0142】
図30は、PlayList()において定義されるCPI_typeがEP_map typeであり、かつ現在のPlayItemがBridgeSequence()を持つ時、次に説明する規則が適用される場合を示している。現在のPlayItemに先行するPlayItemのIN_time (図の中でIN_time1と示されているもの)は、先行するPlayItemのSTC_sequence_idによって指定されるSTC連続区間上の時間を指している。先行するPlayItemのOUT_time(図の中でOUT_time1と示されているもの)は、現在のPlayItemのBridgeSequenceInfo()の中で指定されるBridge-Clipの中の時間を指している。このOUT_timeは、後述する符号化制限に従っていなければならない。
【0143】
現在のPlayItemのIN_time(図の中でIN_time2と示されているもの)は、現在のPlayItemのBridgeSequenceInfo()の中で指定されるBridge-Clipの中の時間を指している。このIN_timeも、後述する符号化制限に従っていなければならない。現在のPlayItemのPlayItemのOUT_time (図の中でOUT_time2と示されているもの)は、現在のPlayItemのSTC_sequence_idによって指定されるSTC連続区間上の時間を指している。
【0144】
図31に示すように、PlayList()のCPI_typeがTU_map typeである場合、PlayItemのIN_timeとOUT_timeのペアは、同じClip AVストリーム上の時間を指している。
【0145】
PlayItemのシンタクスは、図32に示すようになる。図32に示したPlayItemのシンタクスを説明するに、Clip_Information_file_nameのフィールドは、Clip Information fileのファイル名を示す。このClip Information fileのClipInfo()において定義されるClip_stream_typeは、Clip AV streamを示していなければならない。
【0146】
STC_sequence_idは、8ビットのフィールドであり、PlayItemが参照するSTC連続区間のSTC_sequence_idを示す。PlayList()の中で指定されるCPI_typeがTU_map typeである場合、この8ビットフィールドは何も意味を持たず、0にセットされる。IN_timeは、32ビットフィールドであり、PlayItemの再生開始時刻をストアする。IN_timeのセマンティクスは、図33に示すように、PlayList()において定義されるCPI_typeによって異なる。
【0147】
OUT_timeは、32ビットフィールドであり、PlayItemの再生終了時刻をストアする。OUT_timeのセマンティクスは、図34に示すように、PlayList()において定義されるCPI_typeによって異なる。
【0148】
Connection_Conditionは、図35に示したような先行するPlayItemと、現在のPlayItemとの間の接続状態を示す2ビットのフィールドである。図36は、図35に示したConnection_Conditionの各状態について説明する図である。
【0149】
次に、BridgeSequenceInfoについて、図37を参照して説明する。BridgeSequenceInfo()は、現在のPlayItemの付属情報であり、次に示す情報を持つ。Bridge-Clip AV streamファイルとそれに対応するClip Information fileを指定するBridge_Clip_Information_file_nameを含む。
【0150】
また、先行するPlayItemが参照するClip AV stream上のソースパケットのアドレスであり、このソースパケットに続いてBridge-Clip AV streamファイルの最初のソースパケットが接続される。このアドレスは、RSPN_exit_from_previous_Clipと称される。さらに現在のPlayItemが参照するClip AV stream上のソースパケットのアドレスであり、このソースパケットの前にBridge-Clip AV streamファイルの最後のソースパケットが接続される。このアドレスは、RSPN_enter_to_current_Clipと称される。
【0151】
図37において、RSPN_arrival_time_discontinuityは、the Bridge-Clip AVstreamファイルの中でアライバルタイムベースの不連続点があるところのソースパケットのアドレスを示す。このアドレスは、ClipInfo()の中において定義される。
【0152】
図38は、BridgeSequenceinfoのシンタクスを示す図である。図38に示したBridgeSequenceinfoのシンタクスを説明するに、Bridge_Clip_Information_file_nameのフィールドは、Bridge-Clip AV streamファイルに対応するClip Information fileのファイル名を示す。このClip Information fileのClipInfo()において定義されるClip_stream_typeは、'Bridge-Clip AV stream'を示していなければならない。
【0153】
RSPN_exit_from_previous_Clipの32ビットフィールドは、先行するPlayItemが参照するClip AV stream上のソースパケットの相対アドレスであり、このソースパケットに続いてBridge-Clip AV streamファイルの最初のソースパケットが接続される。RSPN_exit_from_previous_Clipは、ソースパケット番号を単位とする大きさであり、先行するPlayItemが参照するClip AV streamファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。
【0154】
RSPN_enter_to_current_Clipの32ビットフィールドは、現在のPlayItemが参照するClip AV stream上のソースパケットの相対アドレスであり、このソースパケットの前にBridge-Clip AV streamファイルの最後のソースパケットが接続される。RSPN_exit_from_previous_Clipは、ソースパケット番号を単位とする大きさであり、現在のPlayItemが参照するClip AV streamファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。
【0155】
次に、SubPlayItemについて、図39を参照して説明する。SubPlayItem()の使用は、PlayList()のCPI_typeがEP_map typeである場合だけに許される。本実施の形態においては、SubPlayItemはオーディオのアフレコの目的のためだけに使用されるとする。SubPlayItem()は、次に示すデータを含む。まず、PlayListの中のsub pathが参照するClipを指定するためのClip_information_file_ nameを含む。
【0156】
また、Clipの中のsub pathの再生区間を指定するためのSubPath_IN_time と SubPath_OUT_timeを含む。さらに、main pathの時間軸上でsub pathが再生開始する時刻を指定するためのsync_PlayItem_id と sync_start_PTS_of_PlayItemを含む。sub pathに参照されるオーディオのClip AV streamは、STC不連続点(システムタイムベースの不連続点)を含んではならない。sub pathに使われるClipのオーディオサンプルのクロックは、main pathのオーディオサンプルのクロックにロックされている。
【0157】
図40は、SubPlayItemのシンタクスを示す図である。図40に示したSubPlayItemのシンタクスを説明するに、Clip_Information_file_nameのフィールドは、Clip Information fileのファイル名を示し、それはPlayListの中でsub pathによって使用される。このClip Information fileのClipInfo()において定義されるClip_stream_typeは、Clip AV streamを示していなければならない。
【0158】
SubPath_typeの8ビットのフィールドは、sub pathのタイプを示す。ここでは、図41に示すように、'0x00'しか設定されておらず、他の値は、将来のために確保されている。
【0159】
sync_PlayItem_idの8ビットのフィールドは、main pathの時間軸上でsub pathが再生開始する時刻が含まれるPlayItemのPlayItem_idを示す。所定のPlayItemに対応するPlayItem_idの値は、PlayList()において定義される(図25参照)。
【0160】
sync_start_PTS_of_PlayItemの32ビットのフィールドは、main pathの時間軸上でsub pathが再生開始する時刻を示し、sync_PlayItem_idで参照されるPlayItem上のPTS(Presentaiotn Time Stamp)の上位32ビットを示す。SubPath_IN_timeの32ビットフィールドは、Sub pathの再生開始時刻をストアする。SubPath_IN_timeは、Sub Pathの中で最初のプレゼンテーションユニットに対応する33ビット長のPTSの上位32ビットを示す。
【0161】
SubPath_OUT_timeの32ビットフィールドは、Sub pathの再生終了時刻をストアする。SubPath_OUT_timeは、次式によって算出されるPresenation_end_TSの値の上位32ビットを示す。
Presentation_end_TS = PTS_out + AU_duration
ここで、PTS_outは、SubPathの最後のプレゼンテーションユニットに対応する33ビット長のPTSである。AU_durationは、SubPathの最後のプレゼンテーションユニットの90kHz単位の表示期間である。
【0162】
次に、図23に示したxxxxx.rplsとyyyyy.vplsのシンタクス内のPlayListMark()について説明する。PlayListについてのマーク情報は、このPlayListMarkにストアされる。図42は、PlayListMarkのシンタクスを示す図である。図42に示したPlayListMarkのシンタクスについて説明するに、version_numberは、このPlayListMark()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0163】
lengthは、このlengthフィールドの直後からPlayListMark()の最後までのPlayListMark()のバイト数を示す32ビットの符号なし整数である。number_of_PlayList_marksは、PlayListMarkの中にストアされているマークの個数を示す16ビットの符号なし整数である。number_of_PlayList_marks は、0であってもよい。mark_typeは、マークのタイプを示す8ビットのフィールドであり、図43に示すテーブルに従って符号化される。
【0164】
mark_time_stampの32ビットフィールドは、マークが指定されたポイントを示すタイムスタンプをストアする。mark_time_stampのセマンティクスは、図44に示すように、PlayList()において定義されるCPI_typeによって異なる。PlayItem_idは、マークが置かれているところのPlayItemを指定する8ビットのフィールドである。所定のPlayItemに対応するPlayItem_idの値は、PlayList()において定義される(図25参照)。
【0165】
character_setの8ビットのフィールドは、mark_nameフィールドに符号化されているキャラクター文字の符号化方法を示す。その符号化方法は、図19に示した値に対応する。name_lengthの8ビットフィールドは、Mark_nameフィールドの中に示されるマーク名のバイト長を示す。mark_nameのフィールドは、マークの名称を示す。このフィールドの中の左からname_length数のバイト数が、有効なキャラクター文字であり、それはマークの名称を示す。Mark_nameフィールドの中で、それら有効なキャラクター文字の後の値は、どのような値が設定されても良い。
【0166】
ref_thumbnail_indexのフィールドは、マークに付加されるサムネイル画像の情報を示す。ref_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのマークにはサムネイル画像が付加されており、そのサムネイル画像は、mark.thmbファイルの中にストアされている。その画像は、mark.thmbファイルの中でref_thumbnail_indexの値を用いて参照される(後述)。ref_thumbnail_indexフィールドが、0xFFFF である場合、そのマークにはサムネイル画像が付加されていない事を示す。
【0167】
次に、Clip information fileについて説明する。zzzzz.clpi(Clip information fileファイル)は、図45に示すように6個のオブジェクトから構成される。それらは、ClipInfo()、STC_Info()、ProgramInfo()、CPI()、ClipMark()、およびMakerPrivateData()である。AVストリーム(Clip AVストリームまたはBridge-Clip AV stream)とそれに対応するClip Informationファイルは、同じ数字列の"zzzzz"が使用される。
【0168】
図45に示したzzzzz.clpi(Clip information fileファイル)のシンタクスについて説明するに、ClipInfo_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、ClipInfo()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
【0169】
STC_Info_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、STC_Info()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。ProgramInfo_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、ProgramInfo()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。CPI_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、CPI()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。
【0170】
ClipMark_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、ClipMark()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。MakerPrivateData_Start_addressは、zzzzz.clpiファイルの先頭のバイトからの相対バイト数を単位として、MakerPrivateData ()の先頭アドレスを示す。相対バイト数はゼロからカウントされる。padding_word(パディングワード)は、zzzzz.clpiファイルのシンタクスにしたがって挿入される。N1,N2,N3,N4、およびN5は、ゼロまたは任意の正の整数でなければならない。それぞれのパディングワードは、任意の値がとられるようにしても良い。
【0171】
次に、ClipInfoについて説明する。図46は、ClipInfoのシンタクスを示す図である。ClipInfo()は、それに対応するAVストリームファイル(Clip AVストリームまたはBridge-Clip AVストリームファイル)の属性情報をストアする。
【0172】
図46に示したClipInfoのシンタクスについて説明するに、version_numberは、このClipInfo()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。lengthは、このlengthフィールドの直後からClipInfo()の最後までのClipInfo()のバイト数を示す32ビットの符号なし整数である。Clip_stream_typeの8ビットのフィールドは、図47に示すように、Clip Informationファイルに対応するAVストリームのタイプを示す。それぞれのタイプのAVストリームのストリームタイプについては後述する。
【0173】
offset_SPNの32ビットのフィールドは、AVストリーム(Clip AVストリームまたはBridge-Clip AVストリーム)ファイルの最初のソースパケットについてのソースパケット番号のオフセット値を与える。AVストリームファイルが最初にディスクに記録される時、このoffset_SPNは0でなければならない。
【0174】
図48に示すように、AVストリームファイルのはじめの部分が編集によって消去された時、offset_SPNは、ゼロ以外の値をとっても良い。本実施の形態では、offset_SPNを参照する相対ソースパケット番号(相対アドレス)が、しばしば、RSPN_xxx(xxxは変形する。例.RSPN_EP_start)の形式でシンタクスの中に記述されている。相対ソースパケット番号は、ソースパケット番号を単位とする大きさであり、AVストリームファイルの最初のソースパケットからoffset_SPNの値を初期値としてカウントされる。
【0175】
AVストリームファイルの最初のソースパケットから相対ソースパケット番号で参照されるソースパケットまでのソースパケットの数(SPN_xxx)は、次式で算出される。
SPN_xxx = RSPN_xxx - offset_SPN
図48に、offset_SPN が、4である場合の例を示す。
【0176】
TS_recording_rateは、24ビットの符号なし整数であり、この値は、DVRドライブ(書き込み部22)へまたはDVRドライブ(読み出し部28)からのAVストリームの必要な入出力のビットレートを与える。record_time_and_dateは、Clipに対応するAVストリームが記録された時の日時をストアする56ビットのフィールドであり、年/月/日/時/分/秒について、14個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、2001/12/23:01:02:03 は、0x20011223010203"と符号化される。
【0177】
durationは、Clipの総再生時間をアライバルタイムクロックに基づいた時間/分/秒の単位で示した24ビットのフィールドである。このフィールドは、6個の数字を4ビットのBinary Coded Decimal(BCD)で符号化したものである。例えば、01:45:30は、0x014530"と符号化される。
【0178】
time_controlled_flag:のフラグは、AVストリームファイルの記録モードを示す。このtime_controlled_flagが1である場合、記録モードは、記録してからの時間経過に対してファイルサイズが比例するようにして記録されるモードであることを示し、次式に示す条件を満たさなければならない。
TS_average_rate192/188(t - start_time)−α <= size_clip(t)
<= TS_average_rate192/188(t - start_time)+α
ここで、TS_average_rateは、AVストリームファイルのトランスポートストリームの平均ビットレートをbytes/second の単位で表したものである。
【0179】
また、上式において、tは、秒単位で表される時間を示し、start_timeは、AVストリームファイルの最初のソースパケットが記録された時の時刻であり、秒単位で表される。size_clip(t)は、 時刻tにおけるAVストリームファイルのサイズをバイト単位で表したものであり、例えば、start_timeから時刻tまでに10個のソースパケットが記録された場合、size_clip(t)は10192バイトである。αは、TS_average_rateに依存する定数である。
【0180】
time_controlled_flagが0にセットされている場合、記録モードは、記録の時間経過とAVストリームのファイルサイズが比例するように制御していないことを示す。例えば、これは入力トランスポートストリームをトランスペアレント記録する場合である。
【0181】
TS_average_rateは、time_controlled_flagが1にセットされている場合、この24ビットのフィールドは、上式で用いているTS_average_rateの値を示す。time_controlled_flagが0にセットされている場合、このフィールドは、何も意味を持たず、0にセットされなければならない。例えば、可変ビットレートのトランスポートストリームは、次に示す手順により符号化される。まずトランスポートレートをTS_recording_rateの値にセットする。次に、ビデオストリームを可変ビットレートで符号化する。そして、ヌルパケットを使用しない事によって、間欠的にトランスポートパケットを符号化する。
【0182】
RSPN_arrival_time_discontinuityの32ビットフィールドは、Bridge-Clip AV streamファイル上でアライバルタイムベースの不連続が発生する場所の相対アドレスである。RSPN_arrival_time_discontinuityは、ソースパケット番号を単位とする大きさであり、Bridge-Clip AV streamファイルの最初のソースパケットからClipInfo() において定義されるoffset_SPNの値を初期値としてカウントされる。そのBridge-Clip AV streamファイルの中での絶対アドレスは、上述した
SPN_xxx = RSPN_xxx - offset_SPN
に基づいて算出される。
【0183】
reserved_for_system_useの144ビットのフィールドは、システム用にリザーブされている。is_format_identifier_validのフラグが1である時、format_identifierのフィールドが有効であることを示す。is_original_network_ID_validのフラグが1である場合、original_network_IDのフィールドが有効であることを示す。is_transport_stream_ID_validのフラグが1である場合、transport_stream_IDのフィールドが有効であることを示す。is_servece_ID_validのフラグが1である場合、servece_IDのフィールドが有効であることを示す。
【0184】
is_ country_code_validのフラグが1である時、country_codeのフィールドが有効であることを示す。format_identifierの32ビットフィールドは、トランスポートストリームの中でregistration deascriotor(ISO/IEC13818-1で定義されている)が持つformat_identifierの値を示す。original_network_IDの16ビットフィールドは、トランスポートストリームの中で定義されているoriginal_network_IDの値を示す。transport_stream_IDの16ビットフィールドは、トランスポートストリームの中で定義されているtransport_stream_IDの値を示す。
【0185】
servece_IDの16ビットフィールドは、トランスポートストリームの中で定義されているservece_IDの値を示す。country_codeの24ビットのフィールドは、ISO3166によって定義されるカントリーコードを示す。それぞれのキャラクター文字は、ISO8859-1で符号化される。例えば、日本は"JPN"と表され、"0x4A 0x50 0x4E"と符号化される。stream_format_nameは、トランスポートストリームのストリーム定義をしているフォーマット機関の名称を示すISO-646の16個のキャラクターコードである。このフィールドの中の無効なバイトは、値'0xFF'がセットされる。
【0186】
format_identifier、original_network_ID、transport_stream_ID、 servece_ID,country_code 、およびstream_format_nameは、トランスポートストリームのサービスプロバイダを示すものであり、これにより、オーディオやビデオストリームの符号化制限、SI(サービスインフォメーション)の規格やオーディオビデオストリーム以外のプライベートデータストリームのストリーム定義を認識することができる。これらの情報は、デコーダが、そのストリームをデコードできるか否か、そしてデコードできる場合にデコード開始前にデコーダシステムの初期設定を行うために用いることが可能である。
【0187】
次に、STC_Infoについて説明する。ここでは、MPEG-2トランスポートストリームの中でSTCの不連続点(システムタイムベースの不連続点)を含まない時間区間をSTC_sequenceと称し、Clipの中で、STC_sequenceは、STC_sequence_idの値によって特定される。図50は、連続なSTC区間について説明する図である。同じSTC_sequenceの中で同じSTCの値は、決して現れない(ただし、後述するように、Clipの最大時間長は制限されている)。従って、同じSTC_sequenceの中で同じPTSの値もまた、決して現れない。AVストリームが、N(N>0)個のSTC不連続点を含む場合、Clipのシステムタイムベースは、(N+1)個のSTC_sequenceに分割される。
【0188】
STC_Infoは、STCの不連続(システムタイムベースの不連続)が発生する場所のアドレスをストアする。図51を参照して説明するように、RSPN_STC_startが、そのアドレスを示し、最後のSTC_sequenceを除くk番目(k>=0)のSTC_sequenceは、k番目のRSPN_STC_startで参照されるソースパケットが到着した時刻から始まり、(k+1)番目のRSPN_STC_startで参照されるソースパケットが到着した時刻で終わる。最後のSTC_sequenceは、最後のRSPN_STC_startで参照されるソースパケットが到着した時刻から始まり、最後のソースパケットが到着した時刻で終了する。
【0189】
図52は、STC_Infoのシンタクスを示す図である。図52に示したSTC_Infoのシンタクスについて説明するに、version_numberは、このSTC_Info()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0190】
lengthは、このlengthフィールドの直後からSTC_Info()の最後までのSTC_Info()のバイト数を示す32ビットの符号なし整数である。CPI()のCPI_typeがTU_map typeを示す場合、このlengthフィールドはゼロをセットしても良い。CPI()のCPI_typeがEP_map typeを示す場合、num_of_STC_sequencesは1以上の値でなければならない。
【0191】
num_of_STC_sequencesの8ビットの符号なし整数は、Clipの中でのSTC_sequenceの数を示す。この値は、このフィールドに続くfor-loopのループ回数を示す。所定のSTC_sequenceに対応するSTC_sequence_idは、RSPN_STC_startを含むfor-loopの中で、そのSTC_sequenceに対応するRSPN_STC_startの現れる順番により定義されるものである。STC_sequence_idは、0から開始される。
【0192】
RSPN_STC_startの32ビットフィールドは、AVストリームファイル上でSTC_sequenceが開始するアドレスを示す。RSPN_STC_startは、AVストリームファイルの中でシステムタイムベースの不連続点が発生するアドレスを示す。RSPN_STC_startは、AVストリームの中で新しいシステムタイムベースの最初のPCRを持つソースパケットの相対アドレスとしても良い。RSPN_STC_startは、ソースパケット番号を単位とする大きさであり、AVストリームファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。そのAV streamファイルの中での絶対アドレスは、既に上述した
SPN_xxx = RSPN_xxx - offset_SPN
により算出される。
【0193】
次に、図45に示したzzzzz.clipのシンタクス内のProgramInfoについて説明する。図53を参照しながら説明するに、ここでは、Clipの中で次の特徴をもつ時間区間をprogram_sequenceと呼ぶ。まず、PCR_PIDの値が変わらない。次に、ビデオエレメンタリストリームの数が変化しない。また、それぞれのビデオストリームについてのPIDの値とそのVideoCodingInfoによって定義される符号化情報が変化しない。さらに、オーディオエレメンタリストリームの数が変化しない。また、それぞれのオーディオストリームについてのPIDの値とそのAudioCodingInfoによって定義される符号化情報が変化しない。
【0194】
program_sequenceは、同一の時刻において、ただ1つのシステムタイムベースを持つ。program_sequenceは、同一の時刻において、ただ1つのPMTを持つ。ProgramInfo()は、program_sequenceが開始する場所のアドレスをストアする。RSPN_program_sequence_startが、そのアドレスを示す。
【0195】
図54は、ProgramInfoのシンタクスを示す図である。図54に示したProgramInfoのシンタクを説明するに、version_numberは、このProgramInfo()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0196】
lengthは、このlengthフィールドの直後からProgramInfo()の最後までのProgramInfo()のバイト数を示す32ビットの符号なし整数である。CPI()のCPI_typeがTU_map typeを示す場合、このlengthフィールドはゼロにセットされても良い。CPI()のCPI_typeがEP_map typeを示す場合、number_of_programsは1以上の値でなければならない。
【0197】
number_of_program_sequencesの8ビットの符号なし整数は、Clipの中でのprogram_sequenceの数を示す。この値は、このフィールドに続くfor-loopのループ回数を示す。Clipの中でprogram_sequenceが変化しない場合、number_of_program_sequencesは1をセットされなければならない。RSPN_program_sequence_startの32ビットフィールドは、AVストリームファイル上でプログラムシーケンスが開始する場所の相対アドレスである。
【0198】
RSPN_program_sequence_startは、ソースパケット番号を単位とする大きさであり、AVストリームファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。そのAVストリームファイルの中での絶対アドレスは、
SPN_xxx = RSPN_xxx - offset_SPN
により算出される。シンタクスのfor-loopの中でRSPN_program_sequence_start値は、昇順に現れなければならない。
【0199】
PCR_PIDの16ビットフィールドは、そのprogram_sequenceに有効なPCRフィールドを含むトランスポートパケットのPIDを示す。number_of_videosの8ビットフィールドは、video_stream_PIDとVideoCodingInfo()を含むfor-loopのループ回数を示す。number_of_audiosの8ビットフィールドは、audio_stream_PIDとAudioCodingInfo()を含むfor-loopのループ回数を示す。video_stream_PIDの16ビットフィールドは、そのprogram_sequenceに有効なビデオストリームを含むトランスポートパケットのPIDを示す。このフィールドに続くVideoCodingInfo()は、そのvideo_stream_PIDで参照されるビデオストリームの内容を説明しなければならない。
【0200】
audio_stream_PIDの16ビットフィールドは、そのprogram_sequenceに有効なオーディオストリームを含むトランスポートパケットのPIDを示す。このフィールドに続くAudioCodingInfo()は、そのaudio_stream_PIDで参照されるビデオストリームの内容を説明しなければならない。
【0201】
なお、シンタクスのfor-loopの中でvideo_stream_PIDの値の現れる順番は、そのprogram_sequenceに有効なPMTの中でビデオストリームのPIDが符号化されている順番に等しくなければならない。また、シンタクスのfor-loopの中でaudio_stream_PIDの値の現れる順番は、そのprogram_sequenceに有効なPMTの中でオーディオストリームのPIDが符号化されている順番に等しくなければならない。
【0202】
図55は、図54に示したPrograminfoのシンタクス内のVideoCodingInfoのシンタクスを示す図である。図55に示したVideoCodingInfoのシンタクスを説明するに、video_formatの8ビットフィールドは、図56に示すように、ProgramInfo()の中のvideo_stream_PIDに対応するビデオフォーマットを示す。
【0203】
frame_rateの8ビットフィールドは、図57に示すように、ProgramInfo()の中のvideo_stream_PIDに対応するビデオのフレームレートを示す。display_aspect_ratioの8ビットフィールドは、図58に示すように、ProgramInfo()の中のvideo_stream_PIDに対応するビデオの表示アスペクト比を示す。
【0204】
図59は、図54に示したPrograminfoのシンタクス内のAudioCodingInfoのシンタクスを示す図である。図59に示したAudioCodingInfoのシンタクスを説明するに、audio_codingの8ビットフィールドは、図60に示すように、ProgramInfo()の中のaudio_stream_PIDに対応するオーディオの符号化方法を示す。
【0205】
audio_component_typeの8ビットフィールドは、図61に示すように、ProgramInfo()の中のaudio_stream_PIDに対応するオーディオのコンポーネントタイプを示す。sampling_frequencyの8ビットフィールドは、図62に示すように、ProgramInfo()の中のaudio_stream_PIDに対応するオーディオのサンプリング周波数を示す。
【0206】
次に、図45に示したzzzzz.clipのシンタクス内のCPI (Characteristic Point Information)について説明する。CPIは、AVストリームの中の時間情報とそのファイルの中のアドレスとを関連づけるためにある。CPIには2つのタイプがあり、それらはEP_mapとTU_mapである。図63に示すように、CPI()の中のCPI_typeがEP_map typeの場合、そのCPI()はEP_mapを含む。図64に示すように、CPI()の中のCPI_typeがTU_map typeの場合、そのCPI()はTU_mapを含む。1つのAVストリームは、1つのEP_mapまたは一つのTU_mapを持つ。AVストリームがSESFトランスポートストリームの場合、それに対応するClipはEP_mapを持たなければならない。
【0207】
図65は、CPIのシンタクスを示す図である。図65に示したCPIのシンタクスを説明するに、version_numberは、このCPI()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。lengthは、このlengthフィールドの直後からCPI()の最後までのCPI()のバイト数を示す32ビットの符号なし整数である。CPI_typeは、図66に示すように、1ビットのフラグであり、ClipのCPIのタイプを表す。
【0208】
次に、図65に示したCPIのシンタクス内のEP_mapについて説明する。EP_mapには、2つのタイプがあり、それはビデオストリーム用のEP_mapとオーディオストリーム用のEP_mapである。EP_mapの中のEP_map_typeが、EP_mapのタイプを区別する。Clipが1つ以上のビデオストリームを含む場合、ビデオストリーム用のEP_mapが使用されなければならない。Clipがビデオストリームを含まず、1つ以上のオーディオストリームを含む場合、オーディオストリーム用のEP_mapが使用されなければならない。
【0209】
ビデオストリーム用のEP_mapについて図67を参照して説明する。ビデオストリーム用のEP_mapは、stream_PID、PTS_EP_start、および、RSPN_EP_startというデータを持つ。stream_PIDは、ビデオストリームを伝送するトランスポートパケットのPIDを示す。PTS_EP_startは、ビデオストリームのシーケンスヘッダから始めるアクセスユニットのPTSを示す。RSPN_EP_startは、AVストリームの中でPTS_EP_startにより参照されるアクセスユニットの第1バイト目を含むソースポケットのアドレスを示す。
【0210】
EP_map_for_one_stream_PID()と呼ばれるサブテーブルは、同じPIDを持つトランスポートパケットによって伝送されるビデオストリーム毎に作られる。Clipの中に複数のビデオストリームが存在する場合、EP_mapは複数のEP_map_for_one_stream_PID()を含んでも良い。
【0211】
オーディオストリーム用のEP_mapは、stream_PID、PTS_EP_start、およびRSPN_EP_startというデータを持つ。stream_PIDは、オーディオストリームを伝送するトランスポートパケットのPIDを示す。PTS_EP_startは、オーディオストリームのアクセスユニットのPTSを示す。RSPN_EP_startは、AVストリームの中でPTS_EP_startで参照されるアクセスユニットの第1バイト目を含むソースポケットのアドレスを示す。
【0212】
EP_map_for_one_stream_PID()と呼ばれるサブテーブルは、同じPIDを持つトランスポートパケットによって伝送されるオーディオストリーム毎に作られる。Clipの中に複数のオーディオストリームが存在する場合、EP_mapは複数のEP_map_for_one_stream_PID()を含んでも良い。
【0213】
EP_mapとSTC_Infoの関係を説明するに、1つのEP_map_for_one_stream_PID()は、STCの不連続点に関係なく1つのテーブルに作られる。RSPN_EP_startの値とSTC_Info()において定義されるRSPN_STC_startの値を比較する事により、それぞれのSTC_sequenceに属するEP_mapのデータの境界が分かる(図68を参照)。EP_mapは、同じPIDで伝送される連続したストリームの範囲に対して、1つのEP_map_for_one_stream_PIDを持たねばならない。図69に示したような場合、program#1とprogram#3は、同じビデオPIDを持つが、データ範囲が連続していないので、それぞれのプログラム毎にEP_map_for_one_stream_PIDを持たねばならない。
【0214】
図70は、EP_mapのシンタクスを示す図である。図70に示したEP_mapのシンタクスを説明するに、EP_typeは、4ビットのフィールドであり、図71に示すように、EP_mapのエントリーポイントタイプを示す。EP_typeは、このフィールドに続くデータフィールドのセマンティクスを示す。Clipが1つ以上のビデオストリームを含む場合、EP_typeは0('video')にセットされなければならない。または、Clipがビデオストリームを含まず、1つ以上のオーディオストリームを含む場合、EP_typeは1('audio')にセットされなければならない。
【0215】
number_of_stream_PIDsの16ビットのフィールドは、EP_map()の中のnumber_of_stream_PIDsを変数にもつfor-loopのループ回数を示す。stream_PID(k)の16ビットのフィールドは、EP_map_for_one_stream_PID(num_EP_entries(k))によって参照されるk番目のエレメンタリストリーム(ビデオまたはオーディオストリーム)を伝送するトランスポートパケットのPIDを示す。EP_typeが0 ('video')に等しい場合、そのエレメンタリストリームはビデオストリームでなけれならない。また、EP_typeが1('audio')に等しい場合、そのエレメンタリストリームはオーディオストリームでなければならない。
【0216】
num_EP_entries(k)の16ビットのフィールドは、EP_map_for_one_stream_PID(num_EP_entries(k))によって参照されるnum_EP_entries(k)を示す。EP_map_for_one_stream_PID_Start_address(k): この32ビットのフィールドは、EP_map()の中でEP_map_for_one_stream_PID(num_EP_entries(k))が始まる相対バイト位置を示す。この値は、EP_map()の第1バイト目からの大きさで示される。
【0217】
padding_wordは、EP_map()のシンタクスにしたがって挿入されなければならない。XとYは、ゼロまたは任意の正の整数でなければならない。それぞれのパディングワードは、任意の値を取っても良い。
【0218】
図72は、EP_map_for_one_stream_PIDのシンタクスを示す図である。図72に示したEP_map_for_one_stream_PIDのシンタクスを説明するに、PTS_EP_startの32ビットのフィールドのセマンティクスは、EP_map()において定義されるEP_typeにより異なる。EP_typeが0('video')に等しい場合、このフィールドは、ビデオストリームのシーケンスヘッダで始まるアクセスユニットの33ビット精度のPTSの上位32ビットを持つ。EP_typeが1('audio')に等しい場合、このフィールドは、オーディオストリームのアクセスユニットの33ビット精度のPTSの上位32ビットを持つ。
【0219】
RSPN_EP_startの32ビットのフィールドのセマンティクスは、EP_map()において定義されるEP_typeにより異なる。EP_typeが0('video')に等しい場合、このフィールドは、AVストリームの中でPTS_EP_startにより参照されるアクセスユニットのシーケンスヘッダの第1バイト目を含むソースポケットの相対アドレスを示す。または、EP_typeが1('audio')に等しい場合、このフィールドは、AVストリームの中でPTS_EP_startにより参照されるアクセスユニットのオーディオフレームの第一バイト目を含むソースポケットの相対アドレスを示す。
【0220】
RSPN_EP_startは、ソースパケット番号を単位とする大きさであり、AVストリームファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。そのAVストリームファイルの中での絶対アドレスは、
SPN_xxx = RSPN_xxx - offset_SPN
により算出される。シンタクスのfor-loopの中でRSPN_EP_startの値は、昇順に現れなければならない。
【0221】
次に、TU_mapについて、図73を参照して説明する。TU_mapは、ソースパケットのアライバルタイムクロック(到着時刻ベースの時計)に基づいて、1つの時間軸を作る。その時間軸は、TU_map_time_axisと呼ばれる。TU_map_time_axisの原点は、TU_map()の中のoffset_timeによって示される。TU_map_time_axisは、offset_timeから一定の単位に分割される。その単位を、time_unitと称する。
【0222】
AVストリームの中の各々のtime_unitの中で、最初の完全な形のソースパケットのAVストリームファイル上のアドレスが、TU_mapにストアされる。これらのアドレスを、RSPN_time_unit_startと称する。TU_map_time_axis上において、k (k>=0)番目のtime_unitが始まる時刻は、TU_start_time(k)と呼ばれる。この値は次式に基づいて算出される。
TU_start_time(k) = offset_time + ktime_unit_size
TU_start_time(k)は、45kHzの精度を持つ。
【0223】
図74は、TU_mapのシンタクスを示す図である。図74に示したTU_mapのシンタクスを説明するに、offset_timeの32bit長のフィールドは、TU_map_time_axisに対するオフセットタイムを与える。この値は、Clipの中の最初のtime_unitに対するオフセット時刻を示す。offset_timeは、27MHz精度のアライバルタイムクロックから導き出される45kHzクロックを単位とする大きさである。AVストリームが新しいClipとして記録される場合、offset_timeはゼロにセットされなければならない。
【0224】
time_unit_sizeの32ビットフィールドは、time_unitの大きさを与えるものであり、それは27MHz精度のアライバルタイムクロックから導き出される45kHzクロックを単位とする大きさである。time_unit_sizeは、1秒以下(time_unit_size<=45000)にすることが良い。number_of_time_unit_entriesの32ビットフィールドは、TU_map()の中にストアされているtime_unitのエントリー数を示す。
【0225】
RSPN_time_unit_startの32ビットフィールドは、AVストリームの中でそれぞれのtime_unitが開始する場所の相対アドレスを示す。RSPN_time_unit_startは、ソースパケット番号を単位とする大きさであり、AV streamファイルの最初のソースパケットからClipInfo()において定義されるoffset_SPNの値を初期値としてカウントされる。そのAV streamファイルの中での絶対アドレスは、
SPN_xxx = RSPN_xxx - offset_SPN
により算出される。シンタクスのfor-loopの中でRSPN_time_unit_startの値は、昇順に現れなければならない。(k+1)番目のtime_unitの中にソースパケットが何もない場合、(k+1)番目のRSPN_time_unit_startは、k番目のRSPN_time_unit_startと等しくなければならない。
【0226】
図45に示したzzzzz.clipのシンタクス内のClipMarkについて説明する。ClipMarkは、クリップについてのマーク情報であり、ClipMarkの中にストアされる。このマークは、記録器(記録再生装置1)によってセットされるものであり、ユーザによってセットされるものではない。
【0227】
図75は、ClipMarkのシンタクスを示す図である。図75に示したClipMarkのシンタクスを説明するに、version_numberは、このClipMark()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0228】
lengthは、このlengthフィールドの直後からClipMark()の最後までのClipMark()のバイト数を示す32ビットの符号なし整数である。number_of_Clip_marksは、 ClipMarkの中にストアされているマークの個数を示す16ビットの符号なし整数である。number_of_Clip_marks は、0であってもよい。mark_typeは、マークのタイプを示す8ビットのフィールドであり、図76に示すテーブルに従って符号化される。
【0229】
mark_time_stampは、32ビットフィールドであり、マークが指定されたポイントを示すタイムスタンプをストアする。mark_time_stampのセマンティクスは、図77に示すように、PlayList()の中のCPI_typeにより異なる。
【0230】
STC_sequence_idは、CPI()の中のCPI_typeがEP_map typeを示す場合、この8ビットのフィールドは、マークが置かれているところのSTC連続区間のSTC_sequence_idを示す。CPI()の中のCPI_typeがTU_map typeを示す場合、この8ビットのフィールドは何も意味を持たず、ゼロにセットされる。character_setの8ビットのフィールドは、mark_nameフィールドに符号化されているキャラクター文字の符号化方法を示す。その符号化方法は、図19に示される値に対応する。
【0231】
name_lengthの8ビットフィールドは、Mark_nameフィールドの中に示されるマーク名のバイト長を示す。mark_nameのフィールドは、マークの名称を示す。このフィールドの中の左からname_length数のバイト数が、有効なキャラクター文字であり、それはマークの名称を示す。mark_nameフィールドの中で、それら有効なキャラクター文字の後の値は、どんな値が入っていても良い。
【0232】
ref_thumbnail_indexのフィールドは、マークに付加されるサムネイル画像の情報を示す。ref_thumbnail_indexフィールドが、0xFFFFでない値の場合、そのマークにはサムネイル画像が付加されており、そのサムネイル画像は、mark.thmbファイルの中にストアされている。その画像は、mark.thmbファイルの中でref_thumbnail_indexの値を用いて参照される。ref_thumbnail_indexフィールドが、0xFFFF である場合、そのマークにはサムネイル画像が付加されていない。
【0233】
MakersPrivateDataについては、図22を参照して既に説明したので、その説明は省略する。
【0234】
次に、サムネイルインフォメーション(Thumbnail Information)について説明する。サムネイル画像は、menu.thmbファイルまたはmark.thmbファイルにストアされる。これらのファイルは同じシンタクス構造であり、ただ1つのThumbnail()を持つ。menu.thmbファイルは、メニューサムネイル画像,すなわちVolumeを代表する画像、および、それぞれのPlayListを代表する画像をストアする。すべてのメニューサムネイルは、ただ1つのmenu.thmbファイルにストアされる。
【0235】
mark.thmbファイルは、マークサムネイル画像,すなわちマーク点を表すピクチャをストアする。すべてのPlayListおよびClipに対するすべてのマークサムネイルは、ただ1つのmark.thmbファイルにストアされる。サムネイルは頻繁に追加、削除されるので、追加操作と部分削除の操作は容易に高速に実行できなければならない。この理由のため、Thumbnail()はブロック構造を有する。画像のデータはいくつかの部分に分割され、各部分は一つのtn_blockに格納される。1つの画像データはは連続したtn_blockに格納される。tn_blockの列には、使用されていないtn_blockが存在してもよい。1つのサムネイル画像のバイト長は可変である。
【0236】
図78は、menu.thmbとmark.thmbのシンタクスを示す図であり、図79は、図78に示したmenu.thmbとmark.thmbのシンタクス内のThumbnailのシンタクスを示す図である。図79に示したThumbnailのシンタクスについて説明するに、version_numberは、このThumbnail()のバージョンナンバーを示す4個のキャラクター文字である。version_numberは、ISO 646に従って、"0045"と符号化されなければならない。
【0237】
lengthは、このlengthフィールドの直後からThumbnail()の最後までのMakersPrivateData()のバイト数を示す32ビットの符号なし整数である。tn_blocks_start_addressは、Thumbnail()の先頭のバイトからの相対バイト数を単位として、最初のtn_blockの先頭バイトアドレスを示す32ビットの符号なし整数である。相対バイト数はゼロからカウントされる。number_of_thumbnailsは、Thumbnail()の中に含まれているサムネイル画像のエントリー数を与える16ビットの符号なし整数である。
【0238】
tn_block_sizeは、1024バイトを単位として、1つのtn_blockの大きさを与える16ビットの符号なし整数である。例えば、tn_block_size=1ならば、それは1つのtn_blockの大きさが1024バイトであることを示す。number_of_tn_blocksは、このThumbnail()中のtn_blockのエントリ数を表す16ビットの符号なし整数である。thumbnail_indexは、このthumbnail_indexフィールドから始まるforループ一回分のサムネイル情報で表されるサムネイル画像のインデクス番号を表す16ビットの符号なし整数である。thumbnail_index として、0xFFFFという値を使用してはならない。thumbnail_index はUIAppInfoVolume()、UIAppInfoPlayList()、PlayListMark()、およびClipMark()の中のref_thumbnail_indexによって参照される。
【0239】
thumbnail_picture_formatは、サムネイル画像のピクチャフォーマットを表す8ビットの符号なし整数で、図80に示すような値をとる。表中のDCFとPNGは”menu.thmb”内でのみ許される。マークサムネイルは、値"0x00" (MPEG-2 Video I-picture)をとらなければならない。
【0240】
picture_data_sizeは、サムネイル画像のバイト長をバイト単位で示す32ビットの符号なし整数である。start_tn_block_numberは、サムネイル画像のデータが始まるtn_blockのtn_block番号を表す16ビットの符号なし整数である。サムネイル画像データの先頭は、tb_blockの先頭と一致していなければならない。tn_block番号は、0から始まり、tn_blockのfor-ループ中の変数kの値に関係する。
【0241】
x_picture_lengthは、サムネイル画像のフレーム画枠の水平方向のピクセル数を表す16ビットの符号なし整数である。y_picture_lengthは、サムネイル画像のフレーム画枠の垂直方向のピクセル数を表す16ビットの符号なし整数である。tn_blockは、 サムネイル画像がストアされる領域である。Thumbnail()の中のすべてのtn_blockは、同じサイズ(固定長)であり、その大きさはtn_block_sizeによって定義される。
【0242】
図81は、サムネイル画像データがどのようにtn_blockに格納されるかを模式的に表した図である。図81のように、各サムネイル画像データはtn_blockの先頭から始まり、1 tn_blockを超える大きさの場合は、連続する次のtn_blockを使用してストアされる。このようにすることにより、可変長であるピクチャデータが、固定長のデータとして管理することが可能となり、削除といった編集に対して簡便な処理により対応する事ができるようになる。
【0243】
次に、AVストリームファイルについて説明する。AVストリームファイルは、"M2TS"ディレクトリ(図14)にストアされる。AVストリームファイルには、2つのタイプがあり、それらは、Clip AVストリームとBridge-Clip AVストリームファイルである。両方のAVストリーム共に、これ以降で定義されるDVR MPEG-2トランスポートストリームファイルの構造でなければならない。
【0244】
まず、DVR MPEG-2 トランスポートストリームについて説明する。DVR MPEG-2トランスポートストリームの構造は、図82に示すようになっている。AVストリームファイルは、DVR MPEG2トランスポートストリームの構造を持つ。DVR MPEG2トランスポートストリームは、整数個のAligned unitから構成される。Alignedunitの大きさは、6144バイト (20483 バイト)である。Aligned unitは、ソースパケットの第1バイト目から始まる。ソースパケットは、192バイト長である。一つのソースパケットは、TP_extra_headerとトランスポートパケットから成る。TP_extra_headerは、4バイト長であり、またトランスポートパケットは、188バイト長である。
【0245】
1つのAligned unitは、32個のソースパケットから成る。DVR MPEG2トランスポートストリームの中の最後のAligned unitも、また32個のソースパケットから成る。よって、DVR MPEG2トランスポートストリームは、Aligned unitの境界で終端する。ディスクに記録される入力トランスポートストリームのトランスポートパケットの数が32の倍数でない時、ヌルパケット(PID=0x1FFFのトランスポートパケット)を持ったソースパケットを最後のAligned unitに使用しなければならない。ファイルシステムは、DVR MPEG2トランスポートストリームに余分な情報を付加してはならない。
【0246】
図83に、DVR MPEG-2トランスポートストリームのレコーダモデルを示す。図83に示したレコーダは、レコーディングプロセスを規定するための概念上のモデルである。DVR MPEG-2トランスポートストリームは、このモデルに従う。
【0247】
MPEG-2トランスポートストリームの入力タイミングについて説明する。入力MPEG2トランスポートストリームは、フルトランスポートストリームまたはパーシャルトランスポートストリームである。入力されるMPEG2トランスポートストリームは、ISO/IEC13818-1またはISO/IEC13818-9に従っていなければならない。MPEG2トランスポートストリームのi番目のバイトは、T-STD(ISO/IEC13818-1で規定されるTransport stream system target decoder)とソースパケッタイザへ、時刻t(i)に同時に入力される。Rpkは、トランスポートパケットの入力レートの瞬時的な最大値である。
【0248】
27MHz PLL52は、27MHzクロックの周波数を発生する。27MHzクロックの周波数は、MPEG-2トランスポートストリームのPCR (Program Clock Reference)の値にロックされる。arrival time clock counter53は、27MHzの周波数のパルスをカウントするバイナリーカウンターである。Arrival_time_clock(i)は、時刻t(i)におけるArrival time clock counterのカウント値である。
【0249】
source packetizer54は、すべてのトランスポートパケットにTP_extra_headerを付加し、ソースパケットを作る。Arrival_time_stampは、トランスポートパケットの第1バイト目がT-STDとソースパケッタイザの両方へ到着する時刻を表す。Arrival_time_stamp(k)は、次式で示されるようにArrival_time_clock(k)のサンプル値であり、ここで、kはトランスポートパケットの第1バイト目を示す。
arrival_time_stamp(k) = arrival_time_clock(k)% 230
【0250】
2つの連続して入力されるトランスポートパケットの時間間隔が、230/27000000秒(約40秒)以上になる場合、その2つのトランスポートパケットのarrival_time_stampの差分は、230/27000000秒になるようにセットされるべきである。レコーダは、そのようになる場合に備えてある。
【0251】
smoothing buffer55は、入力トランスポートストリームのビットレートをスムージングする。スムージングバッファは、オーバーフロウしてはならない。Rmaxは、スムージングバッファが空でない時のスムージングバッファからのソースパケットの出力ビットレートである。スムージングバッファが空である時、スムージングバッファからの出力ビットレートはゼロである。
【0252】
次に、DVR MPEG-2トランスポートストリームのレコーダモデルのパラメータについて説明する。Rmaxという値は、AVストリームファイルに対応するClipInfo()において定義されるTS_recording_rateによって与えられる。この値は、次式により算出される。
Rmax = TS_recording_rate 192/188
TS_recording_rateの値は、bytes/secondを単位とする大きさである。
【0253】
入力トランスポートストリームがSESFトランスポートストリームの場合、Rpkは、AVストリームファイルに対応するClipInfo()において定義されるTS_recording_rateに等しくなければならない。入力トランスポートストリームがSESFトランスポートストリームでない場合、この値はMPEG-2 transport streamのデスクリプター,例えばmaximum_bitrate_descriptorやpartial_transport_stream_descriptorなど、において定義される値を参照しても良い。
【0254】
smoothing buffer sizeは、入力トランスポートストリームがSESFトランスポートストリームの場合、スムージングバッファの大きさはゼロである。入力トランスポートストリームがSESFトランスポートストリームでない場合、スムージングバッファの大きさはMPEG-2 transport streamのデスクリプター、例えばsmoothing_buffer_descriptor、short_smoothing_buffer_descriptor、partial_transport_stream_descriptorなどにおいて定義される値を参照しても良い。
【0255】
記録機(レコーダ)および再生機(プレーヤ)は、十分なサイズのバッファを用意しなければならない。デフォールトのバッファサイズは、1536 bytes である。
【0256】
次に、DVR MPEG-2トランスポートストリームのプレーヤモデルについて説明する。図84は、DVR MPEG-2トランスポートストリームのプレーヤモデルを示す図である。これは、再生プロセスを規定するための概念上のモデルである。DVR MPEG-2トランスポートストリームは、このモデルに従う。
【0257】
27MHz X-tal61は、27Mhzの周波数を発生する。27MHz周波数の誤差範囲は、+/-30 ppm (27000000 +/- 810 Hz)でなければならない。arrival time clock counter62は、27MHzの周波数のパルスをカウントするバイナリーカウンターである。Arrival_time_clock(i)は、時刻t(i)におけるArrival time clock counterのカウント値である。
【0258】
smoothing buffer64において、Rmaxは、スムージングバッファがフルでない時のスムージングバッファへのソースパケットの入力ビットレートである。スムージングバッファがフルである時、スムージングバッファへの入力ビットレートはゼロである。
【0259】
MPEG-2トランスポートストリームの出力タイミングを説明するに、現在のソースパケットのarrival_time_stampがarrival_time_clock(i)のLSB 30ビットの値と等しい時、そのソースパケットのトランスポートパケットは、スムージングバッファから引き抜かれる。Rpkは、トランスポートパケットレートの瞬時的な最大値である。スムージングバッファは、アンダーフロウしてはならない。
【0260】
DVR MPEG-2トランスポートストリームのプレーヤモデルのパラメータについては、上述したDVR MPEG-2トランスポートストリームのレコーダモデルのパラメータと同一である。
【0261】
図85は、Source packetのシンタクスを示す図である。transport_packet()は、ISO/IEC 13818-1で規定されるMPEG-2トランスポートパケットである。図85に示したSource packetのシンタクス内のTP_Extra_headerのシンタクスを図86に示す。図86に示したTP_Extra_headerのシンタクスについて説明するに、copy_permission_indicatorは、トランスポートパケットのペイロードのコピー制限を表す整数である。コピー制限は、copy free、no more copy、copy once、またはcopy prohibitedとすることができる。図87は、copy_permission_indicatorの値と、それらによって指定されるモードの関係を示す。
【0262】
copy_permission_indicatorは、すべてのトランスポートパケットに付加される。IEEE1394デジタルインタフェースを使用して入力トランスポートストリームを記録する場合、copy_permission_indicatorの値は、IEEE1394 isochronouspacket headerの中のEMI (Encryption Mode Indicator)の値に関連付けても良い。IEEE1394デジタルインタフェースを使用しないで入力トランスポートストリームを記録する場合、copy_permission_indicatorの値は、トランスポートパケットの中に埋め込まれたCCIの値に関連付けても良い。アナログ信号入力をセルフエンコードする場合、copy_permission_indicatorの値は、アナログ信号のCGMS-Aの値に関連付けても良い。
【0263】
arrival_time_stampは、次式
arrival_time_stamp(k) = arrival_time_clock(k)% 230
において、arrival_time_stampによって指定される値を持つ整数値である。
【0264】
Clip AVストリームの定義をするに、Clip AVストリームは、上述したような定義がされるDVR MPEG-2トランスポートストリームの構造を持たねばならない。arrival_time_clock(i)は、Clip AVストリームの中で連続して増加しなければならない。Clip AVストリームの中にシステムタイムベース(STCベース)の不連続点が存在したとしても、そのClip AVストリームのarrival_time_clock(i)は、連続して増加しなければならない。
【0265】
Clip AVストリームの中の開始と終了の間のarrival_time_clock(i)の差分の最大値は、26時間でなければならない。この制限は、MPEG2トランスポートストリームの中にシステムタイムベース(STCベース)の不連続点が存在しない場合に、Clip AVストリームの中で同じ値のPTS(Presentation Time Stamp)が決して現れないことを保証する。MPEG2システムズ規格は、PTSのラップアラウンド周期を233/90000秒(約26.5時間).と規定している。
【0266】
Bridge-Clip AVストリームの定義をするに、Bridge-Clip AVストリームは、上述したような定義がされるDVR MPEG-2トランスポートストリームの構造を持たねばならない。Bridge-Clip AVストリームは、1つのアライバルタイムベースの不連続点を含まなければならない。アライバルタイムベースの不連続点の前後のトランスポートストリームは、後述する符号化の制限に従わなければならず、かつ後述するDVR-STDに従わなければならない。
【0267】
本実施の形態においては、編集におけるPlayItem間のビデオとオーディオのシームレス接続をサポートする。PlayItem間をシームレス接続にすることは、プレーヤ/レコーダに"データの連続供給"と"シームレスな復号処理"を保証する。"データの連続供給"とは、ファイルシステムが、デコーダにバッファのアンダーフロウを起こさせる事のないように必要なビットレートでデータを供給する事を保証できることである。データのリアルタイム性を保証して、データをディスクから読み出すことができるように、データが十分な大きさの連続したブロック単位でストアされるようにする。
【0268】
"シームレスな復号処理"とは、プレーヤが、デコーダの再生出力にポーズやギャップを起こさせる事なく、ディスクに記録されたオーディオビデオデータを表示できることである。
【0269】
シームレス接続されているPlayItemが参照するAVストリームについて説明する。先行するPlayItemと現在のPlayItemの接続が、シームレス表示できるように保証されているかどうかは、現在のPlayItemにおいて定義されているconnection_conditionフィールドから判断することができる。PlayItem間のシームレス接続は、Bridge-Clipを使用する方法と使用しない方法がある。
【0270】
図88は、Bridge-Clipを使用する場合の先行するPlayItemと現在のPlayItemの関係を示している。図88においては、プレーヤが読み出すストリームデータが、影をつけて示されている。図88に示したTS1は、Clip1(Clip AVストリーム)の影を付けられたストリームデータとBridge-ClipのRSPN_arrival_time_discontinuityより前の影を付けられたストリームデータから成る。
【0271】
TS1のClip1の影を付けられたストリームデータは、先行するPlayItemのIN_time(図88においてIN_time1で図示されている)に対応するプレゼンテーションユニットを復号する為に必要なストリームのアドレスから、RSPN_exit_from_previous_Clipで参照されるソースパケットまでのストリームデータである。TS1に含まれるBridge-ClipのRSPN_arrival_time_discontinuityより前の影を付けられたストリームデータは、Bridge-Clipの最初のソースパケットから、RSPN_arrival_time_discontinuityで参照されるソースパケットの直前のソースパケットまでのストリームデータである。
【0272】
また、図88におけるTS2は、Clip2(Clip AVストリーム)の影を付けられたストリームデータとBridge-ClipのRSPN_arrival_time_discontinuity以後の影を付けられたストリームデータから成る。TS2に含まれるBridge-ClipのRSPN_arrival_time_discontinuity以後の影を付けられたストリームデータは、RSPN_arrival_time_discontinuityで参照されるソースパケットから、Bridge-Clipの最後のソースパケットまでのストリームデータである。TS2のClip2の影を付けられたストリームデータは、RSPN_enter_to_current_Clipで参照されるソースパケットから、現在のPlayItemのOUT_time(図88においてOUT_time2で図示されている)に対応するプレゼンテーションユニットを復号する為に必要なストリームのアドレスまでのストリームデータである。
【0273】
図89は、Bridge-Clipを使用しない場合の先行するPlayItemと現在のPlayItemの関係を示している。この場合、プレーヤが読み出すストリームデータは、影をつけて示されている。図89におけるTS1は、Clip1 (Clip AVストリーム)の影を付けられたストリームデータから成る。TS1のClip1の影を付けられたストリームデータは、先行するPlayItemのIN_time(図89においてIN_time1で図示されている)に対応するプレゼンテーションユニットを復号する為に必要なストリームのアドレスから始まり、Clip1の最後のソースパケットまでのデータである。また、図89におけるTS2は、Clip2 (Clip AVストリーム)の影を付けられたストリームデータから成る。
【0274】
TS2のClip2の影を付けられたストリームデータは、Clip2の最初のソースパケットから始まり、現在のPlayItemのOUT_time(図89においてOUT_time2で図示されている)に対応するプレゼンテーションユニットを復号する為に必要なストリームのアドレスまでのストリームデータである。
【0275】
図88と図89において、TS1とT2は、ソースパケットの連続したストリームである。次に、TS1とTS2のストリーム規定と、それらの間の接続条件について考える。まず、シームレス接続のための符号化制限について考える。トランスポートストリームの符号化構造の制限として、まず、TS1とTS2の中に含まれるプログラムの数は、1でなければならない。TS1とTS2の中に含まれるビデオストリームの数は、1でなければならない。TS1とTS2の中に含まれるオーディオストリームの数は、2以下でなければならない。TS1とTS2の中に含まれるオーディオストリームの数は、等しくなければならない。TS1および/またはTS2の中に、上記以外のエレメンタリストリームまたはプライベートストリームが含まれていても良い。
【0276】
ビデオビットストリームの制限について説明する。図90は、ピクチャの表示順序で示すシームレス接続の例を示す図である。接続点においてビデオストリームをシームレスに表示できるためには、OUT_time1(Clip1のOUT_time)の後とIN_time2(Clip2のIN_time)の前に表示される不必要なピクチャは、接続点付近のClipの部分的なストリームを再エンコードするプロセスにより、除去されなければならない。
【0277】
図90に示したような場合において、BridgeSequenceを使用してシームレス接続を実現する例を、図91に示す。RSPN_arrival_time_discontinuityより前のBridge-Clipのビデオストリームは、図90のClip1のOUT_time1に対応するピクチャまでの符号化ビデオストリームから成る。そして、そのビデオストリームは先行するClip1のビデオストリームに接続され、1つの連続でMPEG2規格に従ったエレメンタリストリームとなるように再エンコードされている。
【0278】
同様にして、RSPN_arrival_time_discontinuity以後のBridge-Clipのビデオストリームは、図90のClip2のIN_time2に対応するピクチャ以後の符号化ビデオストリームから成る。そして、そのビデオストリームは、正しくデコード開始する事ができて、これに続くClip2のビデオストリームに接続され、1つの連続でMPEG2規格に従ったエレメンタリストリームとなるように再エンコードされている。Bridge-Clipを作るためには、一般に、数枚のピクチャは再エンコードしなければならず、それ以外のピクチャはオリジナルのClipからコピーすることができる。
【0279】
図90に示した例の場合にBridgeSequenceを使用しないでシームレス接続を実現する例を図92に示す。Clip1のビデオストリームは、図90のOUT_time1に対応するピクチャまでの符号化ビデオストリームから成り、それは、1つの連続でMPEG2規格に従ったエレメンタリストリームとなるように再エンコードされている。同様にして、Clip2のビデオストリームは、図90のClip2のIN_time2に対応するピクチャ以後の符号化ビデオストリームから成り、それは、一つの連続でMPEG2規格に従ったエレメンタリストリームとなるように再エンコードされている。
【0280】
ビデオストリームの符号化制限について説明するに、まず、TS1とTS2のビデオストリームのフレームレートは、等しくなければならない。TS1のビデオストリームは、sequence_end_codeで終端しなければならない。TS2のビデオストリームは、Sequence Header、GOP Header、そしてI-ピクチャで開始しなければならない。TS2のビデオストリームは、クローズドGOPで開始しなければならない。
【0281】
ビットストリームの中で定義されるビデオプレゼンテーションユニット(フレームまたはフィールド)は、接続点を挟んで連続でなければならない。接続点において、フレームまたはフィールドのギャップがあってはならない。接続点において、トップ―ボトムのフィールドシーケンスは連続でなければならない。3-2プルダウンを使用するエンコードの場合は、"top_field_first" および "repeat_first_field"フラグを書き換える必要があるかもしれない,またはフィールドギャップの発生を防ぐために局所的に再エンコードするようにしても良い。
【0282】
オーディオビットストリームの符号化制限について説明するに、TS1とTS2のオーディオのサンプリング周波数は、同じでなければならない。TS1とTS2のオーディオの符号化方法(例.MPEG1レイヤ2, AC-3, SESF LPCM, AAC)は、同じでなければならない。
【0283】
次に、MPEG-2トランスポートストリームの符号化制限について説明するに、TS1のオーディオストリームの最後のオーディオフレームは、TS1の最後の表示ピクチャの表示終了時に等しい表示時刻を持つオーディオサンプルを含んでいなければならない。TS2のオーディオストリームの最初のオーディオフレームは、TS2の最初の表示ピクチャの表示開始時に等しい表示時刻を持つオーディオサンプルを含んでいなければならない。
【0284】
接続点において、オーディオプレゼンテーションユニットのシーケンスにギャップがあってはならない。図93に示すように、2オーディオフレーム区間未満のオーディオプレゼンテーションユニットの長さで定義されるオーバーラップがあっても良い。TS2のエレメンタリストリームを伝送する最初のパケットは、ビデオパケットでなければならない。接続点におけるトランスポートストリームは、後述するDVR-STDに従わなくてはならない。
【0285】
ClipおよびBridge-Clipの制限について説明するに、TS1とTS2は、それぞれの中にアライバルタイムベースの不連続点を含んではならない。
【0286】
以下の制限は、Bridge-Clipを使用する場合にのみ適用される。TS1の最後のソースパケットとTS2の最初のソースパケットの接続点においてのみ、Bridge-Clip AVストリームは、ただ1つのアライバルタイムベースの不連続点を持つ。ClipInfo()において定義されるRSPN_arrival_time_discontinuityが、その不連続点のアドレスを示し、それはTS2の最初のソースパケットを参照するアドレスを示さなければならない。
【0287】
BridgeSequenceInfo()において定義されるRSPN_exit_from_previous_Clipによって参照されるソースパケットは、Clip1の中のどのソースパケットでも良い。それは、Aligned unitの境界である必要はない。BridgeSequenceInfo()において定義されるRSPN_enter_to_current_Clipによって参照されるソースパケットは、Clip2の中のどのソースパケットでも良い。それは、Aligned unitの境界である必要はない。
【0288】
PlayItemの制限について説明するに、先行するPlayItemのOUT_time(図88、図89において示されるOUT_time1)は、TS1の最後のビデオプレゼンテーションユニットの表示終了時刻を示さなければならない。現在のPlayItemのIN_time(図88、図89において示されるIN_time2)は、TS2の最初のビデオプレゼンテーションユニットの表示開始時刻を示さなければならない。
【0289】
Bridge-Clipを使用する場合のデータアロケーションの制限について、図94を参照して説明するに、シームレス接続は、ファイルシステムによってデータの連続供給が保証されるように作られなければならない。これは、Clip1(Clip AVストリームファイル)とClip2(Clip AVストリームファイル)に接続されるBridge-Clip AVストリームを、データアロケーション規定を満たすように配置することによって行われなければならない。
【0290】
RSPN_exit_from_previous_Clip以前のClip1(Clip AVストリームファイル)のストリーム部分が、ハーフフラグメント以上の連続領域に配置されているように、RSPN_exit_from_previous_Clipが選択されなければならない。Bridge-Clip AVストリームのデータ長は、ハーフフラグメント以上の連続領域に配置されるように、選択されなければならない。RSPN_enter_to_current_Clip以後のClip2(Clip AVストリームファイル)のストリーム部分が、ハーフフラグメント以上の連続領域に配置されているように、RSPN_enter_to_current_Clipが選択されなければならない。
【0291】
Bridge-Clipを使用しないでシームレス接続する場合のデータアロケーションの制限について、図95を参照して説明するに、シームレス接続は、ファイルシステムによってデータの連続供給が保証されるように作られなければならない。これは、Clip1(Clip AVストリームファイル)の最後の部分とClip2(Clip AVストリームファイル)の最初の部分を、データアロケーション規定を満たすように配置することによって行われなければならない。
【0292】
Clip1(Clip AVストリームファイル)の最後のストリーム部分が、ハーフフラグメント以上の連続領域に配置されていなければならない。Clip2(Clip AVストリームファイル)の最初のストリーム部分が、ハーフフラグメント以上の連続領域に配置されていなければならない。
【0293】
次に、DVR-STDについて説明する。DVR-STDは、DVR MPEG2トランスポートストリームの生成および検証の際におけるデコード処理をモデル化するための概念モデルである。また、DVR-STDは、上述したシームレス接続された2つのPlayItemによって参照されるAVストリームの生成および検証の際におけるデコード処理をモデル化するための概念モデルでもある。
【0294】
DVR-STDモデルを図96に示す。図96に示したモデルには、DVR MPEG-2トランスポートストリームプレーヤモデルが構成要素として含まれている。n, TBn,MBn, EBn, TBsys, Bsys, Rxn, Rbxn, Rxsys, Dn, Dsys, OnおよびPn(k)の表記方法は、ISO/IEC13818-1のT-STDに定義されているものと同じである。すなわち、次の通りである。nは、エレメンタリストリームのインデクス番号である。TBnは、エレメンタリストリームnのトランスポートバッファでる。
【0295】
MBnは、エレメンタリストリームnの多重バッファである。ビデオストリームについてのみ存在する。EBnは、エレメンタリストリームnのエレメンタリストリームバッファである。ビデオストリームについてのみ存在する。TBsysは、復号中のプログラムのシステム情報のための入力バッファである。Bsysは、復号中のプログラムのシステム情報のためのシステムターゲットデコーダ内のメインバッファである。Rxnは、データがTBnから取り除かれる伝送レートである。Rbxnは、PESパケットペイロードがMBnから取り除かれる伝送レートである。ビデオストリームについてのみ存在する。
【0296】
Rxsysは、データがTBsysから取り除かれる伝送レートである。Dnは、エレメンタリストリームnのデコーダである。Dsysは、復号中のプログラムのシステム情報に関するデコーダである。Onは、ビデオストリームnのre-ordering bufferである。Pn(k)は、エレメンタリストリームnのk番目のプレゼンテーションユニットである。
【0297】
DVR-STDのデコーディングプロセスについて説明する。単一のDVR MPEG-2トランスポートストリームを再生している間は、トランスポートパケットをTB1, TBnまたはTBsysのバッファへ入力するタイミングは、ソースパケットのarrival_time_stampにより決定される。TB1, MB1, EB1, TBn, Bn, BsysおよびTBsysのバッファリング動作の規定は、ISO/IEC 13818-1に規定されているT-STDと同じである。復号動作と表示動作の規定もまた、ISO/IEC 13818-1に規定されているT-STDと同じである。
【0298】
シームレス接続されたPlayItemを再生している間のデコーディングプロセスについて説明する。ここでは、シームレス接続されたPlayItemによって参照される2つのAVストリームの再生について説明をすることにし、以後の説明では、上述した(例えば、図88に示した)TS1とTS2の再生について説明する。TS1は、先行するストリームであり、TS2は、現在のストリームである。
【0299】
図97は、あるAVストリーム(TS1)からそれにシームレスに接続された次のAVストリーム(TS2)へと移る時のトランスポートパケットの入力,復号,表示のタイミングチャートを示す。所定のAVストリーム(TS1)からそれにシームレスに接続された次のAVストリーム(TS2)へと移る間には、TS2のアライバルタイムベースの時間軸(図97においてATC2で示される)は、TS1のアライバルタイムベースの時間軸(図97においてATC1で示される)と同じでない。
【0300】
また、TS2のシステムタイムベースの時間軸(図97においてSTC2で示される)は、TS1のシステムタイムベースの時間軸(図97においてSTC1で示される)と同じでない。ビデオの表示は、シームレスに連続していることが要求される。オーディオのプレゼンテーションユニットの表示時間にはオーバーラップがあっても良い。
【0301】
DVR-STD への入力タイミングについて説明する。時刻T1までの時間、すなわち、TS1の最後のビデオパケットがDVR-STDのTB1に入力終了するまでは、DVR-STDのTB1、TBn またはTBsysのバッファへの入力タイミングは、TS1のソースパケットのarrival_time_stampによって決定される。
【0302】
TS1の残りのパケットは、TS_recording_rate(TS1)のビットレートでDVR-STDのTBnまたはTBsysのバッファへ入力されなければならない。ここで、TS_recording_rate(TS1)は、Clip1に対応するClipInfo()において定義されるTS_recording_rateの値である。TS1の最後のバイトがバッファへ入力する時刻は、時刻T2である。従って、時刻T1からT2までの区間では、ソースパケットのarrival_time_stampは無視される。
【0303】
N1をTS1の最後のビデオパケットに続くTS1のトランスポートパケットのバイト数とすると、時刻T1乃至T2までの時間DT1は、N1バイトがTS_recording_rate(TS1)のビットレートで入力終了するために必要な時間であり、次式により算出される。
ΔT1=T2−T1=N1 / TS_recording_rate (TS1)
時刻T1乃至T2までの間は、RXnとRXsysの値は共に、TS_recording_rate(TS1)の値に変化する。このルール以外のバッファリング動作は、T-STDと同じである。
【0304】
2の時刻において、arrival time clock counterは、TS2の最初のソースパケットのarrival_time_stampの値にリセットされる。DVR-STDのTB1, TBn またはTBsysのバッファへの入力タイミングは、TS2のソースパケットのarrival_time_stampによって決定される。RXnとRXsysは共に、T-STDにおいて定義されている値に変化する。
【0305】
付加的なオーディオバッファリングおよびシステムデータバッファリングについて説明するに、オーディオデコーダとシステムデコーダは、時刻T1からT2までの区間の入力データを処理することができるように、T-STDで定義されるバッファ量に加えて付加的なバッファ量(約1秒分のデータ量)が必要である。
【0306】
ビデオのプレゼンテーションタイミングについて説明するに、ビデオプレゼンテーションユニットの表示は、接続点を通して、ギャップなしに連続でなければならない。ここで、STC1は、TS1のシステムタイムベースの時間軸(図97ではSTC1と図示されている)とし、STC2は、TS2のシステムタイムベースの時間軸(図97ではSTC2と図示されている。正確には、STC2は、TS2の最初のPCRがT-STDに入力した時刻から開始する。)とする。
【0307】
STC1とSTC2の間のオフセットは、次のように決定される。PTS1endは、TS1の最後のビデオプレゼンテーションユニットに対応するSTC1上のPTSであり、PTS2startは、TS2の最初のビデオプレゼンテーションユニットに対応するSTC2上のPTSであり、Tppは、TS1の最後のビデオプレゼンテーションユニットの表示期間とすると、2つのシステムタイムベースの間のオフセットSTC_deltaは、次式により算出される。
STC_delta = PTS1end + Tpp - PTS2start
【0308】
オーディオのプレゼンテーションのタイミングについて説明するに、接続点において、オーディオプレゼンテーションユニットの表示タイミングのオーバーラップがあっても良く、それは0乃至2オーディオフレーム未満である(図97に図示されている"audio overlap"を参照)。どちらのオーディオサンプルを選択するかということと、オーディオプレゼンテーションユニットの表示を接続点の後の補正されたタイムベースに再同期することは、プレーヤ側により設定されることである。
【0309】
DVR-STDのシステムタイムクロックについて説明するに、時刻T5において、TS1の最後のオーディオプレゼンテーションユニットが表示される。システムタイムクロックは、時刻T2からT5の間にオーバーラップしていても良い。この区間では、DVR-STDは、システムタイムクロックを古いタイムベースの値(STC1)と新しいタイムベースの値(STC2)の間で切り替える。STC2の値は、次式により算出される。
STC2=STC1−STC_delta
【0310】
バッファリングの連続性について説明する。STC11video_endは、TS1の最後のビデオパケットの最後のバイトがDVR-STDのTB1へ到着する時のシステムタイムベースSTC1上のSTCの値である。STC22video_startは、TS2の最初のビデオパケットの最初のバイトがDVR-STDのTB1へ到着する時のシステムタイムベースSTC2上のSTCの値である。STC21video_endは、STC11video_end の値をシステムタイムベースSTC2上の値に換算した値である。STC21video_endは、次式により算出される。
STC21video_end = STC11video_end - STC_delta
【0311】
DVR-STDに従うために、次の2つの条件を満たす事が要求される。まず、TS2の最初のビデオパケットのTB1への到着タイミングは、次に示す不等式を満たさなければならない。そして、次に示す不等式を満たさなければならない。
STC22video_start > STC21video_end + ΔT1
この不等式が満たされるように、Clip1および、または、Clip2の部分的なストリームを再エンコードおよび、または、再多重化する必要がある場合は、その必要に応じて行われる。
【0312】
次に、STC1とSTC2を同じ時間軸上に換算したシステムタイムベースの時間軸上において、TS1からのビデオパケットの入力とそれに続くTS2からのビデオパケットの入力は、ビデオバッファをオーバーフローおよびアンダーフローさせてはならない。
【0313】
このようなシンタクス、データ構造、規則に基づく事により、記録媒体に記録されているデータの内容、再生情報などを適切に管理することができ、もって、ユーザが再生時に適切に記録媒体に記録されているデータの内容を確認したり、所望のデータを簡便に再生できるようにすることができる。
【0314】
次に、図46で示したClipInfoのシンタクスの中にあるtime_controlled_flagを1にセットする場合のAVストリームファイルの記録について、詳細な内容を説明する。time_controlled_flagを1にセットする場合、AVストリームの時間経過とAVストリームのデータバイト量が、次の関係にあることを示す。すなわち、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差の範囲内で比例する、ことを保証する。
TS_average_rate192/188 (t -α)<= AV_file_size(t)
<= TS_average_rate192/188 (t +α)
...式(1)
【0315】
上記の式は、図46のClipInfoのtime_controlled_flagの説明の中で示した式とは、すこし形式が違うが本質的には同じである。
【0316】
ここで、TS_average_rateは、AVストリームファイル(DVRトランスポートストリームファイル)の平均ビットレートをbytes/second の単位で表したものであり、ClipInfoの中の同名のフィールドにより示される。また、tは、AVストリームファイルの最初のソースパケットからのアライバルライムベースの経過時刻を秒単位で示す。AV_file_size(t)は、 時刻tにおけるAVストリームファイルのサイズをバイト単位で表したものである。αは、所定の一定値であり、例えば、300秒である。
【0317】
TS_average_rateは、記録器のアプリケーションによって所定に値に決める。例えば、長時間録画モード(LPモード),標準録画モード(SPモード)、高画質録画モード(HQモード)といった記録モードに応じて、それぞれのモード用のTS_average_rate値を決める。
【0318】
式(1)を満たすように、AVストリームファイルが記録されている場合、そのストリームのある時間分だけ部分的にストリームを消去すると、消去した時間分だけ前記ストリームのTS_average_rateで示されるビットレートで記録可能な空き領域をディスク上に作れることを保証できる。例えば、SPモードのAVストリームファイルのある時間分だけ部分的にストリームを消去すると、消去した時間分だけ、同じSPモードで記録可能な空き領域をディスク上に作ることができる。
【0319】
図98は、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差の範囲内で比例するように、可変ビットレートを制御する場合の、図1の記録再生装置1のAVエンコーダ15の動作を説明するブロック図である。図98と図1で、同じ番号がつけられているブロックは同一のものである。
【0320】
まず、ユーザインタフェース24を通して、ユーザーからLP, SPモードなどの記録モードが制御部23に入力される。制御部23は記録モードに応じて、記録するAVストリーム(DVRトランスポートストリーム)の多重化ビットレート、およびビデオ符号化の平均ビットレートを設定する(図99のフローチャートのステップS20参照)。
【0321】
制御部23は、time_controlled_flagを1にセットし、多重化ストリームの平均ビットレートをTS_average_rateとし、また多重化ビットレートをTS_recording_rateとする。制御部23は、time_controlled_flag,TS_recording_rateとTS_average_rateをClipInfoに設定したClip Informationファイルのデータベースを出力する。Clip Informationファイルは、図1で説明したようにECC符号化部20の処理を通して、記録媒体に記録される。
【0322】
アナログのビデオ入力をエンコードする場合は、端子11からビデオが入力される。または、ディジタル放送入力のビデオをトランスコードする場合は、AVデコーダ27からのビデオが入力される。入力ビデオは、ビデオエンコーダ151へ入力される。制御部23は、所定時間あたりのビデオに対する割り当て符号化ビット量を計算して、それをビデオエンコーダに指定する。ビデオエンコーダ151は、所定時間あたりのビデオをエンコードして、実際に発生した符号化ビット量を制御部23へ入力する。例えば、所定時間の大きさは、ビデオのGOPであり、0.5秒である。制御部23は、エンコーダから入力される実際に発生した符号化ビット量のエンコード開始後の累計値に基づいて、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差の範囲内で比例するように、ビデオ符号化の可変ビットレートの制御をして、次の所定時間あたりのビデオに対する割り当て符号化ビット量を計算する。また、この時に、制御部23が、エンコーダからビデオの符号化難易度(動きベクトル予測の予測残差の大きさ、DCT係数の量子化スケールの大きさ、など)を供給されることができれば、さらに高画質な可変ビットレートを実現できる。すなわち、ビデオの符号化難易度が高いほど、所定時間あたりのビデオに対する割り当て符号化ビット量を大きくするように制御する。
【0323】
ビデオエンコーダ151は、ビデオストリームをマルチプレクサ16へ入力する。マルチプレクサ16へはまた、オーディオストリームとAV同期等のシステム情報(S)が入力される。また、オーディオ入力のエンコード処理の流れ、および、AV同期等のシステム情報(S)については、図1の説明と同じである。
【0324】
マルチプレクサ16は、ビデオおよびオーディオストリームを、所定の多重化ビットレートのトランスポートストリームに多重化する。この時、ビデオとオーディオのパケット化は、MPEG2トランスポートストリームのシステムターゲットデコーダ(T−STD)を破綻させないように制御しなければならない。T−STDの制限によって、ビデオのアクセスユニット(符号化されたI, P, Bのピクチャ)およびオーディオのアクセスユニット(オーディオフレーム)をパケット化することができない場合、マルチプレクサ16は、ヌルパケット(パケットIDが、0x1FFFであるパケット)を発生しないように多重化する。この多重化制御により、連続するトランスポートパケットの時間間隔は不規則になり、パケットは間欠的に発生する。
【0325】
マルチプレクサ16から出力されるトランスポートパケットは、ソースパケッタイザ19へ入力される。ソースパケッタイザ19は、各トランスポートパケットにアライバルタイムスタンプを付加して、ソースパケット化する。そして、ソースパケット列を前詰して、AVストリームファイルを生成する。AVストリームファイルは、図1で説明したようにECC符号化部20の処理を通して、記録媒体に記録される。
【0326】
図99は、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差の範囲内で比例することを保証する符号化モード(time_controlled_flag=1)において、ビデオを可変ビットレート符号化して、AVストリームを記録する動作を説明するフローチャートである。
【0327】
ステップS20で、制御部23は、トランスポートストリームの多重化ビットレートTS_recording_rateおよびビデオ符号化の平均ビットレートを設定する。
【0328】
ビデオ符号化の平均ビットレートは、TS_average_rateから、オーディオ符号化の一定のビットレートと多重化のオーバヘッドのビットレートを差し引いた値とする。ここで、TS_average_rateは、記録器のアプリケーション(LP, SPモードなど)によって所定に値に決められる。
【0329】
TS_recording_rateは、ビデオの可変ビットレート符号化の最大ビットレートに、オーディオ符号化の一定のビットレートと多重化のオーバヘッドのビットレートを加えた値よりも大きい値である。
【0330】
ステップS21で、制御部23は、ビデオストリームを、あらかじめ設定した所定の時間区間毎に所定の平均ビットレートが保証される様に、可変ビットレートでエンコードするようにビデオエンコーダ151を制御する。
【0331】
ステップS22で、制御部23は、トランスポートパケット化するエレメンタリストリームがない場合にヌルパケットを発生しないようにマルチプレクサ16を制御する。この多重化制御により、連続する2個のトランスポートパケットの時間間隔は不規則になり、パケットは間欠的に発生する。
【0332】
ステップS23で、制御部23は、各トランスポートパケットにアライバルタイムスタンプを付加して、ソースパケット化するように、ソースパケッタイザ19を制御し、そして、ソースパケット列を前詰して、AVストリームファイルとして記録するように制御する。
【0333】
次に、ビデオの可変ビットレート符号化をする場合のMPEGのVBV(Video Buffering Verifier)の制御方法について説明する。VBVは、MPEGが規定する理論的なデコーダモデルである(図100を参照)。MPEGビデオエンコーダは、VBVを正しく動作させるようにビデオストリームをエンコードしなければならない。これにより、エンコード方法を制限する(主に量子化制御およびピクチャのビット量の制限)。VBVの持つバッファをVBVバッファと呼ぶ。これは現実のデコーダに理論上、最低必要なバッファサイズである。MPEG2メインプロファイルメインレベルの場合、VBVバッファサイズは、1.75 Mbitsである。
【0334】
可変ビットレート時のMPEGのVBVは、一般に、図101で示す方法が広く知られている。すなわち、図101は、VBVバッファに空きがあるときは、バッファへの入力ビットレートがVBR(Variable Bit-Rate、可変ビットレート)の最大ビットレートであり、VBVバッファのビット占有量がフルの場合は、バッファへの入力ビットレートがゼロになる場合のVBV制御を説明する図である。図101において、右上がりの線の傾きは、VBRの最大ビットレートを示し、VBVバッファに空きがあるときは、VBRの最大ビットレートでバッファ占有量が増える。また、VBVバッファのビット占有量がフルの場合は、バッファへの入力ビットレートがゼロとなり、バッファ占有量は変わらない。横軸は時間軸であり、T1は一つのデコード時刻を示し、時刻T1において図示するT1の時刻のピクチャが瞬時にデコードされて、バッファ占有量が減少する。以後、所定の時間間隔で同様にして、ピクチャがデコードされて、バッファ占有量が減少する。この図101で示す方法では、ビデオエンコーダがビデオストリーム中にスタッフィングバイトを発生することはない。
【0335】
これに対して、本技術では、VBVを図102に示すように制御する。すなわち、所定の時間(例えば、GOP)毎にビットレートを変更する可変ビットレートにおいて、所定の時間内ではCBR(Constant Bit-Rate、固定ビットレート)のVBV制御を行う。図102は、GOP(例えば、0.5秒のビデオシーケンス)内でCBRの場合のVBV制御を示す。すなわち、VBVバッファへの入力ビットレートが、現在のGOPの符号化ビットレートであり、VBVバッファがオーバーフローしないようにスタッフィングバイトを挿入する場合のVBV制御を説明する図である。
【0336】
スタッフィングバイトの挿入するかどうかの判断と、挿入する場合のスタッフィングバイトの量の計算は、次の手順で行う。以下の説明において、
VBV_BUFFER_SIZE = 1.7510241024 bit
gop_bit_rate: GOP毎のビットレート [bit/second]
とする。
【0337】
(1) 現在、符号化するピクチャの最低ビット量の計算。
図102の時刻d1のピクチャを例として説明する。まず、時刻d1のピクチャをVBVがデコードする直前のVBVバッファのビット占有量vbv_bを得る。次に、ビット占有量vbv_bに、時刻d1からその次のピクチャのデコード時刻d2までの間(tau)にビットレートgop_bit_rateで入力されるビット量を加えた値tmpを計算する。現在、符号化するピクチャの最低ビット量min_picture_bitは、tmp と VBV_BUFFER_SIZEから次のように計算できる。
tmp = vbv_b + gop_bit_ratetau
min_picture_bit = tmp - VBV_BUFFER_SIZE
【0338】
(2) pictureの符号化後に、byte stuffingが必要かのチェック。現在のピクチャの実際の符号化ビットgen_picture_bitが、min_picture_bitより小さい場合は、次に示す計算式で示す大きさのスタッフィングバイト発生する。現在符号化したpictureの後にnum_stuffing_byteの数のstuffing bytesをビデオエンコーダが符号化する。一つのスタッフィングバイトは、8ビットの"0000 0000"の符号である。
if (gen_picture_bit < min_picture_bit)
num_stuffing_byte=(min_picture_bit-gen_picture_bit+4)/8
【0339】
この図102で示す方法では、ビデオエンコーダが所定時間のビデオに割り当てられたビット量を使うように制御することを目的として、VBVバッファへの入力ビットレートが現在のGOPの符号化ビットレートであり、VBVバッファがオーバーフローしないようにビデオエンコーダがスタッフィングバイトを発生する。
【0340】
図102に示すVBV制御は、本技術のコンセプトである、AVストリームの時間経過とAVストリームのデータバイト量との関係が図103に示すように、所定の誤差範囲内で比例することを保証するために、有効である。図101に示すVBV制御を使うと、入力ビデオの中に長い時間の静止画像があると、図103の関係を保証できなくなる。すなわち、静止画像は情報量が比較的小さいため、その情報量よりも符号化の割り当てビット量を大きくしても、実際に符号化して発生するビット量はある比較的小さな値に飽和してしまう。したがって、この場合、AVストリームの時間経過とAVストリームのデータバイト量の関係が図104に示すように、比例しない。このような場合でも、図102に示すVBV制御を使えば、ビデオエンコーダが所定時間のビデオに割り当てられたビット量を使うように制御することを目的として、VBVバッファへの入力ビットレートが現在のGOPの符号化ビットレートであり、VBVバッファがオーバーフローしないようにビデオエンコーダがスタッフィングバイトを発生するので、AVストリームの時間経過とAVストリームのデータバイト量との関係が図103に示すように、所定の誤差範囲内でほぼ比例することを保証できる。
【0341】
図104の場合、静止画像部分の時間部分のAVストリームを消去しても、その部分の占めるデータバイト量は、平均ビットレートに消去時間を掛けたデータサイズよりも小さいため、消去した時間分だけ前記ストリームのTS_average_rateで示されるビットレートで記録可能な空き領域をディスク上に作れることができない。一方、図103の場合、AVストリームのある時間分だけ部分的にストリームを消去すると、消去した時間分だけ前記ストリームのTS_average_rateで示されるビットレートで記録可能な空き領域をディスク上に作れることができる。
【0342】
図105は、上述の図99のステップS21の処理における、ビデオの可変ビットレート制御の処理の詳細を説明するフローチャートである。
【0343】
ステップS200で、VBRの余裕量sv_nowに初期値SV1をセットする。本技術の可変ビットレート制御は、AVストリームの時間経過とAVストリームのデータバイト量との関係が所定の誤差範囲内で比例することを保証するために、VBRの余裕量sv_nowが、ゼロから最大値SVMAXになるように制御を行う。
【0344】
例えば、上記の式(1)において、α=300秒の場合、SV1, SVMAXは次の値である。ここで、ビデオの平均符号化ビットレートは、図99のステップS20で決定された値である(図107を参照)。
SV1 = (ビデオの平均符号化ビットレート) 300
SVMAX = SV1 2
【0345】
ステップS201で、現GOPの符号化の割り当てビットb_allocの計算する。
【0346】
ステップS202で、以下の不等式が成り立つかを調べる。このステップS202は、VBRの余裕量がマイナスにならないかどうかチェックである。
sv_now + b_av - b_alloc >= 0
【0347】
ここで、b_avは、ビデオの平均符号化ビットレートから計算される、GOPあたりの符号化の割り当てビット量の平均値である。GOPの時間長を、0.5秒とするとb_avは次の値である。
b_av = (ビデオの平均ビットレート) 0.5
【0348】
ステップS202でYesの場合は、ステップS203へ進む。ステップS202でNoの場合は、ステップS204へ進み、b_allocをb_avとし、ステップS205へ進む。
【0349】
ステップS203では、以下の不等式が成り立つかを調べる。このステップSは、VBRの余裕量が最大値SVMAXを超えないかどうかチェックである。
sv_now + b_av - b_alloc <= SVMAX
【0350】
ステップS203でYesの場合は、ステップS205へ進む。ステップS203でNoの場合は、ステップS204へ進み、b_allocをb_avとし、ステップS205へ進む。
【0351】
ステップS205で、現在のGOPのエンコードする。そして、現在のGOPを割り当てビット量b_allocでエンコードし、その時のVBV制御は、VBVバッファへの入力ビットレートを現在のGOPの符号化ビットレートとし、VBVバッファがオーバーフローしないようにスタッフィングバイトを挿入するように制御する。この処理の詳細については、図106で説明する。
【0352】
ステップS206で、VBRの余裕量sv_nowを次式のように更新する。ここで、b_genは、ステップS205で、現在のGOPのエンコードした結果、得られた現GOPの符号化ビット量である。
sv_now += b_av - b_gen
【0353】
ステップS207で、現GOPが最後のGOPであるか調べる。ステップS207で、Yesの場合は、処理を終了する。ステップS207で、Noの場合は、ステップS201へ戻る。
【0354】
図106は、上述の図105のステップS205の処理における、VBV制御の処理の詳細を説明するフローチャートである。
【0355】
ステップS300で、次式のように現GOPに割り当てられた符号化ビット量を符号化ビットレートgop_bit_rateに変換する。
gop_bit_rate = b_alloc / (15/ 29.97)
【0356】
ステップS301で、現GOPの中で、現在符号化するピクチャの最低ビット量 min_picture_bitを次式により計算する。
tmp = vbv_b + gop_bit_ratetau
min_picture_bit = tmp - VBV_BUFFER_SIZE
【0357】
ここで、vbv_bは、VBVが、現在符号化するピクチャをデコードする直前のVBVバッファのビット占有量である(図102参照)。
【0358】
tauは、現在 符号化するピクチャのデコード時刻と その次のピクチャのデコード時刻の差である(図102参照)。
【0359】
VBV_BUFFER_SIZEは、VBVバッファサイズであり、MPEG2 MP@MLの場合、1.75 Mbitである。
【0360】
ステップS302で、現在のピクチャのエンコードし、その発生ビット量gen_picture_bitを得る。
【0361】
ステップS303で、次の不等式を調べる。
gen_picture_bit < min_picture_bit
【0362】
ステップS303でYesの場合は、ステップS304へ進む。ステップS303でNoの場合は、ステップS305へ進む。
【0363】
ステップS304で、現在符号化したpictureの後にnum_stuffing_byteの数のスタッフィングバイトをビデオエンコーダが現在符号化し、それらを符号化ピクチャの後ろに付加する(図102参照)。
num_stuffing_byte=(min_picture_bit-gen_picture_bit+4)/8
【0364】
ステップS305で、GOPの最後のピクチャかどうか調べる。ステップS305で、Yesの場合は、処理を終了する。ステップS305で、Noの場合は、ステップS301へ戻る。
【0365】
以上のようにして、ビデオストリームの可変ビットレート符号化を制御し、AVストリームファイルを生成することにより、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差の範囲内で比例することを保証することできる。これにより、そのストリームのある時間分だけ部分的にストリームを消去すると、消去した時間分だけ前記ストリームのTS_average_rateで示されるビットレートで記録可能な空き領域をディスク上に作れることを保証できる。
【0366】
次に、比較のため、AVストリームの時間経過とAVストリームのデータバイト量との関係が比例することを保証しない符号化モード(time_controlled_flag=0)におけるAVストリームの記録方法の例を2つ示す。
【0367】
一つ目のtime_controlled_flag=0の場合の例は、ディジタル放送のAVストリーム(プログラム)のトランスポートストリームをトランスペアレント記録する場合である。ディジタル放送が統計多重を用いている場合、一般に、その中のAVストリームは可変ビットレートである。一般に、この場合のAVストリームの時間経過とAVストリームのデータバイト量との関係が比例することは保証されないので、このAVストリームをトランスペアレント記録してClipを作成した場合、そのClipのtime_controlled_flagをゼロにセットする。
【0368】
二つ目のtime_controlled_flag=0の場合の例は、ビデオを可変ビットレート符号化する場合に、ビデオストリームを、あらかじめ設定した所定の時間区間毎に所定の平均ビットレート以下になる様に、可変ビットレートでエンコードする場合である。これは、図101で説明したように、ビデオ符号化のVBV制御が、VBVバッファに空きがあるときは、バッファへの入力ビットレートをVariable Bit-Rateの最大ビットレートにし、VBVバッファのビット占有量がフルの場合は、バッファへの入力ビットレートをゼロにする場合である。図108と図109を用いて、この場合のAVストリームの記録方法を説明する。
【0369】
図108は、AVストリームの時間経過とAVストリームのデータバイト量との関係が、比例することを保証しない符号化モード(time_controlled_flag=0)において、ビデオを可変ビットレート符号化して、AVストリームを記録する動作を説明するフローチャートを示す。
【0370】
ステップS400以外は、図99と同じである。
【0371】
ステップS400で、ビデオストリームを、あらかじめ設定した所定の時間区間毎に所定の平均ビットレート以下になる様に、可変ビットレートでエンコードするようにビデオエンコーダ151を制御する。
【0372】
図109は、上述の図108のステップS400の処理における、ビデオの可変ビットレート制御の処理の詳細を説明するフローチャートである。
【0373】
ステップS500で、VBRの余裕量sv_nowに初期値SV1をセットする。この場合の可変ビットレート制御は、VBRの余裕量sv_nowが、負の値にならないように制御を行う。
【0374】
ステップS501で、現GOPの符号化の割り当てビットb_allocの計算する。
【0375】
ステップS502で、以下の不等式が成り立つかを調べる。このステップS502は、VBRの余裕量がマイナスにならないかどうかチェックである。
sv_now + b_av - b_alloc >= 0
【0376】
ここで、b_avは、ビデオの平均符号化ビットレートから計算される、GOPあたりの符号化の割り当てビット量の平均値である。GOPの時間長を、0.5秒とするとb_avは次の値である。
b_av = (ビデオの平均ビットレート) 0.5
【0377】
ステップS502でYesの場合は、ステップS504へ進む。ステップS502でNoの場合は、ステップS504へ進み、b_allocをb_avとし、ステップS504へ進む。
【0378】
ステップS504で、現在のGOPのエンコードする。そして、現在のGOPを割り当てビット量b_allocでエンコードし、その時のVBV制御は、その時のVBV制御は、VBVバッファに空きがあるときは、バッファへの入力ビットレートをVBR(Variable Bit-Rate)の最大ビットレートにし、VBVバッファのビット占有量がフルの場合は、バッファへの入力ビットレートをゼロにする場合のVBV制御とする(図101参照)。このステップSでは、ビデオストリームにスタッフィングバイトを符号化しない。
【0379】
ステップS505で、VBRの余裕量sv_nowを次式のように更新する。ここで、b_genは、ステップS504で、現在のGOPのエンコードした結果、得られた現GOPの符号化ビット量である。
sv_now += b_av - b_gen
【0380】
ステップS506で、現GOPが最後のGOPであるか調べる。ステップS506で、Yesの場合は、処理を終了する。ステップS506で、Noの場合は、ステップS501へ戻る。
【0381】
上記の図108および図109の記録方法の場合、前述したようにAVストリームの時間経過とAVストリームのデータバイト量との関係が所定の誤差範囲内で比例することを保証しない。例えば、入力ビデオの中に長い時間の静止画像があると、AVストリームの時間経過とAVストリームのデータバイト量との関係が図104に示したようになる。すなわち、静止画像は情報量が比較的小さいため、その情報量よりも符号化の割り当てビット量を大きくしても、実際に符号化して発生するビット量はある比較的小さな値に飽和してしまう。したがって、この場合、AVストリームの時間経過とAVストリームのデータバイト量の関係が、比例しない。
【0382】
一方、ビデオエンコーダが所定時間のビデオに割り当てられたビット量を使うように制御することを目的として、VBVバッファへの入力ビットレートが現在のGOPの符号化ビットレートであり、VBVバッファがオーバーフローしないようにビデオエンコーダがスタッフィングバイトを発生するように制御すれば、AVストリームの時間経過とAVストリームのデータバイト量との関係が、所定の誤差範囲内でほぼ比例することを保証できる。
【0383】
また、AVストリームの時間経過とAVストリームのデータバイト量との関係が、比例することを保証する符号化モード(time_controlled_flag=1)を簡単に実現する方法として、トランスポートストリームを多重化する時にヌルパケットを挿入して、一定ビットレートのトランスポートストリームを記録することも考えられる。これは、主にテープ記録媒体(D−VHS等)で用いられている符号化方法である。ここで、ヌルパケットは、そのパケットID(PID)が、0x1FFFにセットされている、情報としては何も意味をもたないトランスポートパケットである。
【0384】
図99の方法と比較する参考のために、図110に、所定の一定ビットレートのトランスポートストリームを符号化することによって、AVストリームの時間経過とAVストリームのデータバイト量との関係が、比例することを保証する符号化モードのフローチャートを示す。
【0385】
ステップS600で、トランスポートストリームの多重化ビットレートおよびビデオ符号化のビットレートを設定する。ステップS601で、ビデオストリームを、所定の一定のビットレート、または、そのビットレート以下で、エンコードする。
【0386】
ステップS602で、トランスポートパケット化するエレメンタリストリームがない場合にヌルパケット(情報としては意味をもたないトランスポートパケット)を発生して多重化し、所定の一定の多重化ビットレートのトランスポートストリームを符号化する。
【0387】
ステップS603で、各トランスポートパケットにアライバルタイムスタンプを付加して、ソースパケット化する。ソースパケットを記録媒体に記録する。
【0388】
上記の記録方法でAVストリームをClipとして記録した場合、そのClipのtime_controlled_flagは1にセットされる。しかしながら、この方法は、ヌルパケットを使用するため、ビデオ符号化に効率良く符号ビットを使用していないので、図99の符号化方法よりもビデオの画質が劣る問題がある(このことについては、例えば特願平11-220727の従来の技術の欄に詳しく述べている)。そのため、本技術では上記の図110の記録方法を推奨しない。
【0389】
次に、AVストリームファイルのある時間分だけ部分的にストリームを消去する方法について説明する。
【0390】
図111は、オリジナルのAVストリームファイルと、そのストリームの部分的な再生範囲のストリームを消去する編集を行った後のAVストリームファイルの例を示す。編集前に、Virtual PlayListは、オリジナルAVストリーム上のIN_timeとOUT_timeを指しているとする。この時、Virtual PlayListが使用していないストリーム部分を消去する編集(ミニマイズ編集)をした場合、それはオリジナルAVストリームを図111に示す編集後のストリームへ変える。オリジナルAVストリームの先頭からX点までのデータと、Y点から最後までのデータが消去される。以下の説明では、このX点とY点を決める方法の例を説明する。
【0391】
図112は、AVストリームの内容を解析することをしないで、IN点の前の不要なデータを消去する方法を説明する図である。PlayListはオリジナルAVストリーム上のIN点を指す。また、そのAVストリームのEP_mapを図示する。IN点が指すピクチャをデコードするためには、アドレスISA2から開始するIピクチャが必要である。
【0392】
また、X点の後で、PAT,PMTおよびPCRパケットが必要である。RSPN_EP_start=ISA1のPTSはpts1であり、RSPN_EP_start=ISA2のPTSはpts2である。pts1とpts2のシステムタイムベースの時間差が100 msec以上ならば、アドレスISA1とISA2の間にはPAT, PMTおよびPCRパケットが存在する(少なくとも、SESF, DVB, ATSC, ISDBの場合はそうである)。
【0393】
したがって、X点はアドレスISA1の前に決められる。そして、X点はアラインドユニットの境界でなければならない。記録装置は、AVストリームの内容を解析することをしないで、X点をEP_mapを使用して次のステップSで決めることができる。
(S1)システムタイムベース上でIN timeのPTSに最も近く、かつそれよりも過去の表示時刻のPTSの値を持つSPN_EP_startを見つける。
(S2)ステップS1で見つけたSPN_EP_startのPTSの値よりも少なくとも100 msec過去の表示時刻のPTSの値を持つSPN_EP_startを見つける。
(S3)X点は、ステップS2で見つけたSPN_EP_startよりも前に決められる。
そして、X点はアラインドユニットの境界でなければならない。
【0394】
この方法は、X点を決めるためにAVストリームのデータを読み出し、その内容を解析することを必要としないので、簡単である。しかし、編集後のAVストリームは、そのPlayListの再生には不要なデータを残してしまう場合がある。もし、X点を決めるためにAVストリームのデータを読み出し、その内容を解析するならば、そのPlayListの再生には不要なデータをより効率良く消去できる。
【0395】
図113は、AVストリームの内容を解析することをしないで、OUT点の後ろの不要なデータを消去する方法を説明する図である。PlayListはオリジナルAVストリーム上のOUT点を指す。また、そのAVストリームのEP_mapを図示する。
【0396】
SPN_EP_start=ISA4から開始するビデオシーケンスは次に示すものであることを前提とする。
I2 B0 B1 P5 …
ここで、I,P,BはそれぞれIピクチャ,PピクチャそしてBピクチャを表す。数字は表示順序を表す。この処理において、記録装置がAVストリームの内容を解析しない場合、記録装置はOUT_timeのPTSが参照するところのピクチャの情報(ピクチャコーディングタイプ,テンポラル・レファレンスなど)がわからない。OUT_timeのPTSはピクチャB0またはB1を参照しているかもしれない(記録装置がAVストリームの内容を解析しない場合、このことはわからない)、この場合、ピクチャB0,B1をデコードするためにはI2が必要である。I2のPTSはOUT timeのPTSよりも大きい(OUT_time < pts4, ここでpts4はI2のPTSである)。I2のPTSはOUT_timeのPTSよりも大きいが、B0, B1のためにI2が必要である。
【0397】
したがって、Y点は図に示すアドレスISA5の後ろに決められる。ISA5は、EP_mapの中でISA4の直後にあるSPN_EP_startの値である。Y点はまたアラインドユニットの境界でなければならない。
【0398】
記録装置は、AVストリームの内容を解析することをしないで、Y点をEP_mapを使用して次のステップSで決めることができる。
(S1)システムタイムベース上でOUT timeのPTSに最も近く、かつそれよりも未来の表示時刻のPTSの値を持つSPN_EP_startを見つける。
(S2)ステップS1で見つけたSPN_EP_startの直後にあるSPN_EP_start を見つける。
(S3)Y点は、ステップS2で見つけたSPN_EP_startよりも後ろに決められる。そして、Y点はアラインドユニットの境界でなければならない。
【0399】
この方法は、Y点を決めるためにAVストリームのデータを読み出し、その内容を解析することを必要としないので、簡単である。しかし、編集後のAVストリームは、そのPlayListの再生には不要なデータを残してしまう場合がある。もし、Y点を決めるためにAVストリームのデータを読み出し、その内容を解析するならば、そのPlayListの再生には不要なデータをより効率良く消去できる。
【0400】
次に、EP_mapの作成の動作例を図114のフローチャートを用いて説明する。この処理は図1の記録再生装置の多重化ストリーム解析部18で行われる。
【0401】
ステップS11でストリーム解析部18は、記録するAVプログラムのビデオのPIDをセットする。トランスポートストリームの中に複数のビデオが含まれている場合は、それぞれのビデオPIDをセットする。
【0402】
ステップS12でストリーム解析部18は、ビデオのトランスポートパケットを受信する。
【0403】
ステップS13でストリーム解析部は、トランスポートパケットのペイロード(パケットヘッダーに続くデータ部)がPESパケットの第一バイト目から開始しているかを調べる(PESパケットは、MPEG2で規定されているパケットであり、エレメンタリストリームをパケット化するものである)。これは、トランスポートパケットヘッダにある"payload_unit_start_indicator"の値を調べることによりわかり、この値が1である場合、トランスポートパケットのペイロードがPESパケットの第一バイト目から開始する。ステップS13でNoの場合は、ステップS12へ戻り、Yesの場合は、ステップS14へ進む。
【0404】
ステップS14でストリーム解析部は、PESパケットのペイロードが、MPEGビデオのsequence_header_code(32ビット長で"0x000001B3"の符号)の第一バイト目から開始しているかを調べる。ステップS14でNoの場合は、ステップS12へ戻り、Yesの場合は、ステップS15へ進む。
【0405】
ステップS15へ進んだ場合、現在のトランスポートパケットをエントリーポイントとする。ステップS16でストリーム解析部は、上記パケットのパケット番号と上記sequence_header_code から開始するIピクチャのPTSとそのエントリーポイントが属するビデオのPIDを取得し、制御部23へ入力する。制御部23はEP_mapを作成する。
【0406】
ステップS17で、現在のパケットが最後に入力されるトランスポートパケットであるかどうかを判定する。最後のパケットでない場合、ステップS12へ戻る。最後のパケットである場合、処理を終了する。
【0407】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0408】
この記録媒体は、図115に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク221(フロッピディスクを含む)、光ディスク222(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク223(MD(Mini-Disk)を含む)、若しくは半導体メモリ224などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM202や記憶部208が含まれるハードディスクなどで構成される。
【0409】
なお、本明細書において、媒体により提供されるプログラムを記述するステップSは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0410】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【符号の説明】
【0411】
1 記録再生装置, 11乃至13 端子, 14 解析部, 15 AVエンコーダ, 16 マルチプレクサ, 17 スイッチ, 18 多重化ストリーム解析部, 19 ソースパケッタイザ, 20 ECC符号化部, 21 変調部, 22 書き込み部, 23 制御部, 24 ユーザインタフェース, 26 デマルチプレクサ, 27 AVデコーダ, 28 読み出し部, 29 復調部, 30 ECC復号部, 31 ソースパケッタイザ, 32,33 端子

【特許請求の範囲】
【請求項1】
映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化器と、
記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御部と
を有する映像データ符号化装置。
【請求項2】
前記所定の時間はGOPである
請求項1に記載の映像データ符号化装置。
【請求項3】
前記制御部は、前記所定の時間区間毎の時間経過に対して符号化データ量が所定の誤差の範囲内で比例するような符号化制御を行う第1の符号化モードと、前記符号化制御を行わない第2の符号化モードのどちらか一方で符号化するように制御する
請求項1に記載の映像データ符号化装置。
【請求項4】
前記制御部は、前記所定の時間区間毎の時間経過に対して前記符号化データ量が前記所定の誤差の範囲内で比例するように符号化する前記第1の符号化モードか否かを示す付加情報を生成する
請求項3に記載の映像データ符号化装置。
【請求項5】
映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化ステップと、
記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御ステップと
を含む映像データ符号化方法。
【請求項6】
映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化ステップと、
記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御ステップと
をコンピュータに実行させるコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項7】
映像データを、所定の時間毎にビットレートを変更する可変ビットレートにより符号化する符号化ステップと、
記録してからの時間経過に対して符号化される前記映像データのファイルサイズが比例するように、前記所定の時間内では固定ビットレートとし、単位時間あたりの映像符号化データ発生量が所定量に満たない場合、スタッフィングバイトを符号化し映像符号化データに挿入してVBV制御を行う制御ステップと
を実行させるプログラム。

【図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

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate

【図50】
image rotate

【図51】
image rotate

【図52】
image rotate

【図53】
image rotate

【図54】
image rotate

【図55】
image rotate

【図56】
image rotate

【図57】
image rotate

【図58】
image rotate

【図59】
image rotate

【図60】
image rotate

【図61】
image rotate

【図62】
image rotate

【図63】
image rotate

【図64】
image rotate

【図65】
image rotate

【図66】
image rotate

【図67】
image rotate

【図68】
image rotate

【図69】
image rotate

【図70】
image rotate

【図71】
image rotate

【図72】
image rotate

【図73】
image rotate

【図74】
image rotate

【図75】
image rotate

【図76】
image rotate

【図77】
image rotate

【図78】
image rotate

【図79】
image rotate

【図80】
image rotate

【図81】
image rotate

【図82】
image rotate

【図83】
image rotate

【図84】
image rotate

【図85】
image rotate

【図86】
image rotate

【図87】
image rotate

【図88】
image rotate

【図89】
image rotate

【図90】
image rotate

【図91】
image rotate

【図92】
image rotate

【図93】
image rotate

【図94】
image rotate

【図95】
image rotate

【図96】
image rotate

【図97】
image rotate

【図98】
image rotate

【図99】
image rotate

【図100】
image rotate

【図101】
image rotate

【図102】
image rotate

【図103】
image rotate

【図104】
image rotate

【図105】
image rotate

【図106】
image rotate

【図107】
image rotate

【図108】
image rotate

【図109】
image rotate

【図110】
image rotate

【図111】
image rotate

【図112】
image rotate

【図113】
image rotate

【図114】
image rotate

【図115】
image rotate


【公開番号】特開2011−135589(P2011−135589A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2011−12107(P2011−12107)
【出願日】平成23年1月24日(2011.1.24)
【分割の表示】特願2001−112756(P2001−112756)の分割
【原出願日】平成13年4月11日(2001.4.11)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】