しかしながら、特許文献1に記載の方式(以下では従来例と呼ぶ)では、下記に記述する5つの問題点がある。
第1に従来例では、DUTの開始位置しか管理していないため、2〜3倍速の高速再生時になめらかな表示ができないという問題がある。
高速再生時には、圧縮データの中からIピクチャの符号の読み出しを繰り返す。
図21を用いてこの様子を説明する。
図21において、まずDUT211の先頭にジャンプし、DUT211内のIピクチャ213を読み出す。Iピクチャの終了を検出するとDUT212の先頭にジャンプし、DUT212内のIピクチャ214を読み出し、以下同様の動作を繰り返す。
一例として、GOPを構成するフレーム数を15枚、DUTが4GOPで構成されているとすると1DUTは約2秒のデータに相当し、約2秒毎のデータのうちの1枚のIピクチャの再生を繰り返す。この場合に、1秒当たり1枚のIピクチャを再生すると2倍速となり、1秒当たり2枚のIピクチャを再生すると4倍速になる。言い変えると2倍速の場合は1秒間に1枚、4倍速の場合は1秒間に2枚の画像しか表示できず、なめらかな高速再生にならない。
従来例において、DUTを構成するGOPの数を少なくすれば、より多くのIピクチャを再生することはできる。例えばDUTを1GOPで構成するとすると、1秒当たり4枚のIピクチャを再生すると2倍速となる。しかしながら、単位時間当たりに読み出し可能なIピクチャの枚数がより多い場合には、表示可能枚数よりも少ない枚数しか表示できない。
第2に、従来例では、高速再生時に無駄な読み出しが生じるという問題がある。
図21に示した通り、高速再生時にはまずDUTの先頭にジャンプする。読み出すべきIピクチャのデータは図20の主映像データ205に記録されているが、それまでにDUTヘッダ202、副映像データ203、音声データ204を読み出す必要がある。
また、高速再生時には、Iピクチャの読み出しが終了した後に次のDUTにジャンプするが、Iピクチャの終了位置は別途検出する必要がある。
図22にディスクに映像を記録、再生する装置のブロック図を示す。
図22において、コントローラ229が記録メディア231を制御し、記録メディア231からはDIUの先頭からのデータが出力される。出力データは、ECC(誤り訂正)符号化されており、ECC部230でデコードされる。
デコードされたデータは多重化・分離回路227でDUTヘッダ、副映像データ、音声データ、主映像データに分離され、メモリ228に保持される。DUTヘッダは図示しないシステムコントローラに入力され、副映像データは図示しない副映像デコード回路に入力される。そして音声データはオーディオコーデック225でデコードされ、主映像データはビデオコーデック226でデコードされる。通常、ビデオデータのデコードは、ビデオコーデック226で行われるため、Iピクチャの終了もビデオコーデック226で検出される。
図22において、記録メディア231からデータが読み出されてから、ビデオコーデック226に主映像データが入力されるまでにはECC部230、多重化・分離回路227での処理時間の遅延がある。
ECC部230は、32KBといった大きな単位で処理を行うので、最低でも単位分のデータが蓄積する時間の遅延が発生する。従って、ビデオコーデック226でIピクチャの終了を検出した時点で、既に次の不要なデータが読み出されていることになる。
第3に、従来例において記録メディアにリアルタイムで記録を行う場合には、DUTを構成するために大容量のメモリが必要になるという問題がある。
図20に示したように、従来例ではまず音声データを記録し、次に主映像データを記録する。即ち、DUTの音声データが得られるまで、主映像データはメモリに保持しておく必要がある。
例えば、映像の符号化データレートが平均で4Mbps、DUTが約2秒のデータで構成されている場合、
4Mbit × 2 = 8Mbit
の容量のメモリが必要になる。
さらには、映像の符号化データは可変長のため、一時的な発生符号量はより多くなるため、平均符号量以上のメモリ容量を備えておく必要がある。
第4に、従来例では、DUTより細かい単位での符号化データの加工ができないという問題がある。
ディスク媒体の場合には、記録されているデータは変更せず、再生順序をポインタで示すプログラム再生や編集を行うことが可能である。従来例でDUTが複数のGOPで構成されている場合、GOPの境界がわからないために最小の編集単位はDUTとなってしまい、MPEGのアクセス単位であるGOP毎の編集ができないという問題がある。
第5に、従来例ではオーディオデータとビデオデータの同期のための情報がないため、オーディオとビデオの同期を確保できないという問題もある。
従来例では、DUTはGOPを構成する時間に対応する符号化データで構成される。ここで、ビデオフレームの周期は 30000/1001 Hz であり、符号化も1周期毎に行われる。これに対して、オーディオデータのサンプリング周波数は44.1KHzで、MPEG1方式の場合は1152データをオーディオフレームとし、ATRAC方式、ATRAC2方式では1024データをオーディオフレームとして符号化することが多い。
ビデオフレームは約33m秒、オーディオフレームは約26m秒や約23m秒となり、GOPに対応する主映像データと音声データの時間を完全に一致させることはできない。即ち、DUT単位で主映像データと音声データの再生開始時刻が完全に一致しているのは最初のDUTだけで、以降のDUTの開始点では主映像の再生時刻と音声データの再生時刻は一致しない。
DUTを構成する主映像データと音声データの時間が異なるため、再生開始点と終了点をポインタで指定するプログラム再生を連続して行った場合には、主映像データと音声データの時間の誤差が蓄積し、同期がとれない問題が発生する。
本発明は、このような問題点に鑑みてなされたものであり、高速再生時において無駄なデータを読み出すことがなく、単位時間当たりの表示枚数を増やしてなめらかな高速再生を実現する動画像記録再生方法及び装置、及びリアルタイム記録の場合においても大容量のメモリを必要しない動画像記録再生方法及び装置、及びGOP単位でのランダムアクセスや編集が可能で、編集を行ってもオーディオデータとビデオデータの同期を確保できる動画像記録再生方法及び装置を提供することを目的とする。
本発明は、課題を解決するために以下のような手段を講じた。
即ち、本発明にかかる動画像記録再生装置は、少なくともオーディオ符号化データとビデオ符号化データを多重化した多重化データ及び管理データが別ファイルとして記録された記録メディアから、多重化データを再生する動画像再生装置であって、前記管理データは少なくともディスクのタイトル名、多重化データの記録メディア上での位置情報及び再生時刻情報を含み、該位置情報は、複数のフレームで構成されるフレーム群の多重化データについて、該多重化データの全てのフレーム群について、該フレーム群の開始位置及びフレーム内符号化されるフレームの終了位置を含み、該フレーム群の先頭位置は多重化データの先頭からの相対位置であり、前記再生時刻情報は、前記フレーム群の先頭のビデオフレームの再生時刻を含み、前記位置情報を用いてフレーム内符号化されるフレームの符号化データのみを読み出し、前記再生時刻情報を用いてフレーム内符号化されるビデオフレームの再生時刻を制御することを特徴とするものである。
加えて、前記多重化データは前記記録メディアに一定長に分割して記録され、前記フレーム群の多重化データを該一定長の単位に過不足なく記録されていることを特徴とする動画像再生装置である。
また、本発明にかかる記録媒体は、少なくともオーディオ符号化データとビデオ符号化データを多重化した多重化データ及び管理データが別ファイルとして記録された記録媒体であって、前記管理データは少なくともディスクのタイトル名、多重化データの記録メディア上での位置情報及び再生時刻情報を含み、該位置情報は、複数のフレームで構成されるフレーム群の多重化データについて、該多重化データの全てのフレーム群について、該フレーム群の開始位置及びフレーム内符号化されるフレームの終了位置を含み、該フレーム群の先頭位置は多重化データの先頭からの相対位置であり、前記再生時刻情報は、前記フレーム群の先頭のビデオフレームの再生時刻を含むことを特徴とするものである。
本発明によれば、多重化データとは別に記録される管理ファイルにGOP毎の位置情報とIピクチャやPピクチャの終了位置を記録し、高速再生時には記録メディアから必要なデータだけを読み出すことができ、高速再生時の表示枚数が多くなる。
また、Iピクチャ、Pピクチャ両方の終了位置を管理しているため、2〜3倍の高速再生においても多くの画像を表示することができ、なめらかに画面を変化させることができる。
また、管理ファイルだけで高速再生に読み出すべき多重化データの記録位置がわかるので、ビデオコーデックや多重化・分離回路からの制御信号は必要なく、高速再生の読み出し制御が単純になる効果もある。
さらに、位置情報は多重化データとは別の管理ファイルに記録し、多重化データにはヘッダなどの付加的な情報を付加しないため、記録メディアの記録速度を全て多重化データに割り当てることができ、画質が向上する効果がある。
さらに、本発明では管理ファイルにGOP毎の位置情報とともにオーディオとビデオの再生時刻を記録しているため、GOP単位でランダムアクセスが可能で、かつオーディオとビデオで再生時間にずれが生じた場合にも補正することができ、常にオーディオとビデオで同期を確保できる。
また、本発明によれば、複数のGOPでパケットを構成し、多重化データ、管理データともにパケット毎に記録するため、パケット単位でのデータの削除や編集が容易に行える。
また、本発明によれば、GOPの多重化データをビデオ符号化データ、オーディオ符号化データの順に構成するので、ビデオコーデックから出力されるビデオ符号化データは順次記録することができ、符号化データをバッファリングする大容量のメモリを備える必要がない効果がある。
また、GOPの多重化データを構成するビデオフレームとオーディオフレームのずれが一定の閾値以下になっているので、編集等でGOP単位やパケット単位で多重化データを入れ換えてもビデオフレームとオーディオフレームのずれが一定の閾値以下にすることができる。
また、本発明によれば、GOPの境界毎にビデオフレームの再生時刻とオーディオフレームの再生時刻のずれ量が大きい場合に補正が行われるため、ずれ量が蓄積することがない。
また、ずれ量の補正はビデオフレームのフリーズまたはスキップで容易に実現できる。
また、ずれ量の補正はビデオフレームで行い、オーディオフレームは連続して再生するので不快な音を発生させることがない効果がある。
また、本発明によれば、管理ファイルの位置を示すポインタだけでプログラム再生が表現できる。管理ファイルはコントローラに保持されており、多重化データを読み出すことなく、容易にプログラム再生を指定できる効果がある。
また、本発明によれば、ビデオフレーム毎に多重化データを構成するので、ビデオ符号化データだけでなく、オーディオ符号化データも順次記録することができるので、バッファリング用のメモリがより少ない容量とすることができる。
また、本発明によれば、ビデオ符号化データとオーディオ符号化データの境界が管理データに記録されているので、境界を検出する回路を削減できる。
また、高速再生時には予めビデオ符号化データとオーディオ符号化データを読み出すことができ、不要なデータを読み出すことなく音声を再生しながらの高速再生が実現できる。
また、本発明によれば、GOP毎の位置情報や時刻情報を多重化データに多重化して記録するため、管理ファイルの大きさを大幅に小さくすることができる。
以下図面を参照しながら、本発明の実施の形態を詳細に説明する。
〔第1の実施の形態〕
図1に本発明の動画像記録再生装置の第1の実施の形態の構成をブロック図で示す。
図1の実施の形態はオーディオコーデック15、ビデオコーデック16、多重化・分離回路17、メモリ18、コントローラ19、ECC部20、ディスク21で構成され、本発明では、多重化・分離回路17とコントローラ19の動作に特徴がある。
なお、ディスク21は磁気ディスク、光磁気ディスク、相変化ディスクなどの書き換え可能な記録媒体全てを指すが、ディスクに限らず半導体メモリと置き換えても構わない。
図1の実施の形態の記録時の動作を説明する。
記録時にはオーディオ入力端子11からオーディオデータが入力され、オーディオコーデック15で符号化される。ビデオ入力端子13からはビデオデータが入力され、ビデオコーデック16で符号化される。オーディオコーデック15からはオーディオ符号化データが出力され、ビデオコーデック16からはビデオ符号化データが出力され、それぞれ多重化・分離回路17に入力される。
多重化・分離回路17は符号化データを一旦メモリ18に出力し、後述する順序でメモリ18から符号化データを読み出し、多重化データとしてECC部20に出力する。多重化データはECC部20で誤り訂正符号化され、ディスク21に記録される。コントローラ19は記録メディアの制御を行う。
図2を用いて多重化・分離回路17から出力される多重化データについて説明する。
図2(a)は、GOPを構成するビデオフレームとGOPに対応するオーディオフレームの時間関係を示す図である。
図2(a)は、15ビデオフレームで1GOPが構成され、オーディオフレームの期間がビデオフレームの期間よりも短い場合の例であり、15ビデオフレームの期間をGOP期間22としている。ビデオフレームとオーディオフレームの期間が異なる場合、オーディオフレームを複数集めてもGOP期間22とは一致しない。そのためにGOP期間22の先頭からのずれと後端からのずれがそれぞれ1オーディオフレーム期間未満となる期間をオーディオ期間23とし、GOP期間22のビデオフレームの符号化データとオーディオ期間23のオーディオフレームの符号化データをまとめて多重化を行う。
図2(b)に多重化データにおけるビデオ符号化データとオーディオ符号化データの並びを示す。
多重化データは、GOP毎に図2(a)で示したGOP期間22のビデオ符号化データ、オーディオ期間23のオーディオ符号化データの順に出力する。そして、複数のGOPをまとめたパケットという単位でディスクに記録する。図2(b)には4つのGOPをパケットとする例を示している。
図3に、多重化・分離部回路17において図2(b)で示した多重化データを出力する動作をフローチャートで示す。
多重化・分離回路17では、オーディオコーデック15から入力されるオーディオ符号化データとビデオコーデック16から入力されるビデオ符号化データを一旦メモリ18に記録する。
図3のフローチャートは、メモリ18に記録された符号化データを読み出す動作を示す。
図3において、ステップS32〜S35では図2(a)に示したGOP期間22のビデオ符号化データを出力し、ステップS36〜S39ではオーディオ期間23のオーディオ符号化データを読み出す。
まずステップS31でビデオフレームの時刻を示すVPTS、オーディオフレームの時刻を示すAPTSを0にセットする。そしてステップS32でメモリ18からビデオ符号化データを読み出し、ECC部20に出力する。
次にステップS33では、ビデオフレームの終了かどうかを判定する。ビデオフレームの終了かどうかはビデオフレームの符号量がわかっていれば判定ができる。このために、多重化・分離回路17にビデオフレームのヘッダを検出する回路を付加してメモリ18へのビデオ符号化データ書き込み時にビデオフレームの区切りを検出し、予めビデオフレーム毎の符号量を算出しておく、あるいはビデオコーデック16にビデオフレームの符号量を算出する回路を付加しておき、ビデオコーデックからビデオフレーム毎の符号量の通知を受けるようにしておく。
ステップS33でビデオフレームの終了と判定された場合、ステップS34でVPTSをビデオフレーム期間分増加させる。ステップS35ではGOPの終了かどうかを判定し、GOPの終了でない場合はステップS32〜S34を繰り返す。GOPの終了かどうかは、ビデオフレームの終了となる回数をカウントしておき、GOPを構成するビデオフレーム数と一致するかどうかを比較すればよい。ステップS35までの過程でGOP期間のビデオ符号化データを全て出力することになる。また、ステップS31でVPTSを0とし、以降1ビデオフレームのビデオ符号化データを出力する毎にステップS34でVPTSをインクリメントするため、VPTSは常にメモリ18から読み出すビデオ符号化データの時刻を指すことになる。
ステップS35でGOPの終了と判定された場合は、ステップS36でメモリ18からオーディオ符号化データを読み出し、ECC部20に出力する。次にステップS37ではオーディオフレームの終了かどうかを判定する。
MPEG1方式、ATRAC方式などの主なオーディオ符号化方式では、オーディオフレームの符号量は一定になるので、ステップS36での読み出しデータ量を用いてオーディオフレームの終了かどうかを判定できる。ステップS37でオーディオフレームの終了と判定された場合、ステップS38でAPTSをオーディオフレーム期間分増加させる。ステップS39ではAPTSとVPTSを比較し、APTSが小さい場合にはステップS36〜S38を繰り返し、次のオーディオ符号化データを読み出す。
このとき、GOP期間のビデオ符号化データは全て出力され、VPTSは次のGOP期間の先頭を示しているので、ステップS39の判定がNoとなるのはオーディオ期間のオーディオ符号化データを全て読み出し、APTSがGOP期間外を指した時になる。
図3は、多重化・分離回路17内でVPTSやAPTSを計算して求める例であるが、VPTSをビデオコーデック16から入力し、APTSをオーディオコーデック15から入力する構成としてもよい。
ステップS32〜S39で1GOP期間に対応するビデオ符号化データ、オーディオ符号化データの順でメモリ18から読み出され、図2(b)で示した多重化データが出力されることになる。そしてステップS40で符号化データの終了かどうかを判定し、符号化データが終了するまでステップS32〜S39を繰り返す。
従来例では、DUTのビデオ符号化データ全てを一旦メモリに格納しておく必要があり、大容量のメモリが必要であったが、本実施の形態ではビデオ符号化データは順次メモリから読み出すため、大容量のメモリは必要ない。
GOPに対応するオーディオ符号化データはメモリに格納しておく必要があるが、オーディオ符号化データはビデオ符号化データと比較してデータ量が非常に小さいので、従来例と比較すると格段に小さい容量のメモリを備えるだけでよい。
なお、記録媒体への多重化データの記録は、2Kバイトや32Kバイトといった一定の記録単位毎に行われる。そこで、GOP期間のビデオ符号化データ毎、GOP期間の多重化データ毎、あるいはパケット毎に記録単位となるようにスタッフィングとよばれるデータを付加してもよい。スタッフィングは全てが0又は1のデータで、復号処理の際には無視されるデータである。
GOP期間のビデオ符号化データ毎に記録単位となるようにするには、ステップS35でGOPの終了と判定された後に記録単位まで0又は1を付加し、GOP期間の多重化データ毎に記録単位となるようにするには、ステップS39でNoと判定された後に記録単位まで0又は1を付加し、パケット毎に記録単位となるようにするには、ステップS39でNoと判定された後にパケットの終了かどうかの判定を行い、パケットの終了の場合には記録単位まで0又は1を付加すればよい。
本実施の形態では、パケットは4つのGOPで構成されているので、GOPの数を積算し、GOPの数が4の倍数の場合にパケットの終了と判定できる。
次にコントローラ19の動作について説明する。コントローラ19はディスク21に記録される多重化データをファイルとして管理し、ディスクの記録制御、再生制御を行う。
ディスク21には、多重化ファイルを記録する領域とは別の領域にディスク全体の情報として管理ファイルが記録されている。管理ファイルは、動画像記録再生装置の起動時やディスク媒体が装置に挿入された時にディスク21から読み出され、コントローラ19に保持される。コントローラ19は、記録時にはディスクの空き領域に多重化データを記録するようにディスクを制御するとともに、随時管理ファイルの内容を更新する。
図4に管理ファイルの一例を示す。管理ファイルはディスクのタイトルなどの「ディスク情報41」、ファイル(即ち多重化データ)の記録位置情報やファイルが不連続領域に分割して記録されている場合のつながりを示す情報などの「ファイル情報42」、ディスクの空き情報である「空き領域情報43」、パケット毎の情報を記録する「パケット情報44」で構成される。
図2(b)で示したように、本実施の形態では4つのGOPをまとめたものをパケットと呼び、パケット単位で管理を行う。「パケット情報」は1パケットに1つあり、記録時にはディスク21にパケットを記録する毎に記録したパケットの「パケット情報」が追記される。
「パケット情報」は「パケット開始位置」、「次のアドレス」とGOP毎に「GOP開始位置」、「VPTS」、「APTS」、「I終了位置」、「P終了位置」が記録される。
図5に、記録時に図4で示した管理ファイルの「パケット情報」を更新する動作をフローチャートで示す。
この動作は図3で示した、多重化・分離回路17でパケットを構成する動作に、「パケットの開始位置」、「GOPの開始位置」、「VPTS」、「APTS」、「I終了位置」、「P終了位置」を出力する動作を付加したもので、図3と同じ動作の部分は同じ記号を付与して説明は省略する。
コントローラ19では多重化・分離回路17から入力される位置情報を取り込み、パケット毎に「パケット情報」を追記する。このため、コントローラ19は管理ファイル上の「パケット情報」を書き込む空き領域も管理する。「パケット情報」の「次のアドレス」は現パケットに続くパケットの「パケット情報」のアドレスを示すもので、コントローラ19で付与される。
本実施の形態では、「パケット開始位置」や「I終了位置」、「P終了位置」(以降ではまとめて位置情報と呼ぶ)は多重化データの先頭からの相対位置であり、例えばアクセスの単位が32Kバイトの場合は最初の32Kバイトが0、次の32Kバイトが1となり、以降32Kバイト毎にインクリメントされる値である。相対位置からディスクの物理アドレスへの変換は図示しないファイルシステムが行う。多重化・分離回路17ではメモリ18に記録するデータ量やECC部20に出力するデータ量をカウントしておき、位置情報の算出に用いる。
図5において、まずステップS51で「パケット開始位置」をコントローラ19に出力する。次にステップS52で「GOP開始位置」と「VPTS」をコントローラ19に出力する。次にS32〜S33で1ビデオフレームの符号化データの読み出しが終了した後に、Iピクチャの終了かどうかを判定する(ステップS53)。
Iピクチャの終了の場合は「I終了位置」をコントローラ19に出力し(ステップS54)、Iピクチャの終了でない場合はGOP内で1枚目のPピクチャの終了かどうかを判定する(ステップS55)。GOP内で1枚目のPピクチャの終了の場合は「P終了位置」をコントローラ19に出力する(ステップS56)。ステップS32〜S35のループでGOPのビデオ符号化データの出力が終了すると、ステップS57でAPTSを出力し、S36〜S39でGOPのオーディオ符号化データを読み出した後に、パケットの終了かどうかを判定する(ステップS58)。
パケットの終了でない場合はS52〜S39を繰り返し実行し、パケットが終了するまでGOP毎の処理を行う。パケットの終了の場合はステップS40で符号化データの終了かどうかを判定し、符号化データの終了でない場合はステップS51〜S58を繰り返し実行し、パケット毎の処理を繰り返す。
ステップS51はパケット毎に1回実行され、S52、S54、S56、S57はGOP毎に1回実行され、パケット情報を構成するのに必要な情報が多重化・分離回路17からコントローラ19に出力される。
本実施の形態では、管理ファイルにパケット毎の位置情報及びGOP毎の位置情報を記録することに特徴があるのであり、管理ファイルの内容は図4で示した例に限定するものではない。例えば管理ファイルに多重化データ毎の管理情報を付加してもよいし、パケット情報にパケットの符号量やGOP毎の符号量を付加しもよい。また、図4の例ではディスク全体の多重化データに対するパケット情報がまとまって管理されているが、多重化データ毎に分離して管理しても構わない。
更に、図4に示した管理ファイルは一例であり、例えば「P終了位置」は2つ以上であっても構わない。
次に、本実施の形態における通常再生の動作について説明する。
通常再生時には、コントローラ19がディスク21に再生するファイル(即ち多重化データ)を読み出すように制御する。再生するファイルのディスク上での位置は図4の「ファイル情報42」に記録されている。
ディスクから読み出されたデータはECC部20で誤り訂正復号され、多重化データとなる。多重化データは多重化・分離回路17でオーディオ符号化データとビデオ符号化データに分離され、一旦メモリ18に記録される。メモリ18からはオーディオ符号化データがオーディオコーデック15に出力され、デコードされる。ビデオ符号化データはビデオコーデック16に出力され、デコードされる。
ディスク媒体では、記録されている多重化は変更せず、ランダムアクセスで連続していないデータをあたかも連続したデータであるかのように再生することが可能である。この場合、オーディオとビデオの同期を確保するための処理が必要になる。
図6に2つのGOPを連続したデータであるかのように再生する場合の例を示す。
図2(a)で示したように一般的にはGOPを構成するビデオフレームの期間であるGOP期間とGOPに対応するオーディオフレームの期間であるオーディオ期間は一致しない。図6において、(a)で示したGOP期間61とオーディオ期間62で構成される多重化データと、(b)で示したGOP期間63とオーディオ期間64で構成される多重化データを連続して再生した場合を(c)に示す。図6(a)、(b)のようにGOP期間よりもオーディオ期間の方が長い場合、GOPを連続して再生すると、(c)のようにオーディオフレームとビデオフレームの再生時刻の誤差が蓄積する問題がある。
そこで、本実施の形態では管理ファイルのパケット情報の中の「VPTS」、「APTS」を用いて再生時刻補正を行う。
例えば、図6(c)のようにビデオフレームがオーディオフレームに先行する場合は、ビデオのデコードを1フレーム中断させるフリーズ期間65を設定して同期を確保する。この様子を図6(d)に示す。また、逆にオーディオフレームがビデオフレームに先行する場合は、ビデオの1フレームをスキップするスキップ期間を設定する。
図7を用いてビデオのフリーズ期間とスキップ期間を設定する方法について説明する。図7は連続して再生するビデオ符号化データとオーディオ符号化データのGOPの境界での再生時刻を示すものである。図7(a)はデコードされるビデオフレーム、(b)、(c)はデコードされるオーディオフレームを示し、ビデオのGOP期間71は記録時、再生時とも時刻1から始まり、記録時のオーディオ期間72は時刻2から始まるが、再生時にはオーディオ期間3として時刻3から始まることを示している。
図6(b)、(c)で示したように、再生時のビデオフレームとオーディオフレームの関係は、記録時のビデオフレームとオーディオフレームの関係と一致しないことがある。図7において、記録時には時刻1が「VPTS」、時刻2が「APTS」として管理ファイルに記録されるが、再生時にオーディオ期間は時刻2からずれ量74だけ遅れて始まる。本実施の形態では、この「ずれ量」の大きさによってビデオのフリーズ期間とスキップ期間を設定する。
図8を用いて図7のずれ量74の求め方を説明する。
図8は多重化データの先頭から再生を開始し、途中のGOP81を再生した後、GOP83にジャンプしGOP83から再生を行う例を示している。
図8において、GOP82の「VPTS」、「APTS」をそれぞれVPTS82、APTS82とし、GOP83の「VPTS」、「APTS」をそれぞれVPTS83、APTS83とする。ここで、(VPTS82 − APTS82)と (VPTS83 − APTS83)が一致しない場合にGOP83の再生でオーディオフレームの再生時刻にずれが生じる。図7(c)で示した、再生が遅れるずれ量を正の値とすると、図8の場合のずれ量は、(APTS82 − VPTS82) − (APTS83 − VPTS83)となる。
図9に、正のずれ量がビデオフレーム期間以上となった場合にビデオのデコードを1フレーム期間停止してビデオ出力をフリーズ(静止)させ、負のずれ量がオーディオフレーム期間以上となった場合にビデオデコードを1フレーム分スキップさせる動作をフローチャートで示す。
図9において、まずステップS91でずれ量を0にセットする。そして、ステップS92でずれ量がビデオフレーム期間以上の場合は、オーディオデコードが遅れているので、ステップS93でビデオデコードを1フレーム分停止し、ビデオ出力をフリーズさせ、ステップS94でずれ量からビデオフレーム期間を減算する。ステップS92でずれ量がビデオフレーム期間未満の場合は、ステップS95でずれ量が負のオーディオフレーム期間より小さいかどうかを判定する。
ステップS95でYesとなった場合は、ビデオデコードが遅れているので、ステップS96でビデオのデコードをスキップしてビデオを1フレーム分先に進める。ステップS96では、GOPの最初のIピクチャは通常通り再生し、次のBピクチャをスキップする。これは、IピクチャをスキップするとGOP全体がデコードできなくなるためである。
また、Bピクチャは符号量が少なくスキップが容易に行えるという効果もある。GOPにBピクチャがない場合は、GOPの最後のPピクチャをスキップする。そしてステップS97でずれ量にビデオフレーム期間を加算する。次にステップS98、S99でGOPが終了するまでオーディオデータとビデオデータのデコードを行う。GOPのデコードが終了するとステップS100で次のGOPの先頭でのずれ量を計算する。
ステップS100で[次に記録されているGOP]とは記録時に連続していたGOPであり、[次に再生するGOP]とはランダムアクセスで次に再生するGOPを示す。図8の例では、[次に記録されているGOP]がGOP82であり、[次に再生するGOP]はGOP83である。[次に記録されているGOP]と[次に再生するGOP]は現在のGOPと次に再生するGOPが連続して記録されていない場合にのみ異なり、記録された順に再生する場合には同じGOPを指し、ずれ量も変化しない。
ステップS101で符号化データが終了するまでステップS92〜S100を繰り返し実行し、GOPの先頭でずれ量の絶対値が大きい場合にはずれ量を補正するようにビデオフリーズやビデオスキップが行われ、常にオーディオとビデオの同期が保たれる。
次に、本実施の形態における高速再生の動作について説明する。
高速再生時の動作は、図21で示した通り、ランダムアクセスとIピクチャの読み出しを繰り返すことになる。
本実施の形態では、管理ファイルの「パケット情報」のうちの「GOP開始位置」から「I終了位置」までがIピクチャのビデオ符号化データとなる。従来の実施の形態では「I終了位置」を管理していなかったため、別途Iピクチャの終了を検出する必要があり、ディスクからのデータ読み出しからIピクチャの終了を検出するまでに時間差があるために不要なデータまで読み出していたが、本実施の形態では予め読み出すべきデータがわかっているので、無駄なデータを読み出すことがなく、高速再生時の表示枚数がより多くなる。
高速再生時に全てのGOPのIピクチャを読み出すのか、間引いて読み出すのかは、高速再生時の表示枚数との速度によって判定すればよい。
全てのIピクチャよりも、より多くの画像を表示できる場合にはIピクチャに加えてPピクチャも表示することで、よりなめらかな高速再生が実現できる。高速再生時にIピクチャとPピクチャを表示する場合に読み出すデータを図10を用いて説明する。
図10は図19で示したGOP構成で符号化した場合の例で、GOPの符号化データはI、B、B、P、...という順序で記録される。一般的にビデオフレーム当たりの符号量は、Iピクチャが最も多く、次にPピクチャが多く、Bピクチャが最も少ない。そして、Bピクチャの符号量はIピクチャやPピクチャに比べるとかなり少ないことが多い。
そのため、同一GOP内のIピクチャとPピクチャを読み出す場合に、Iピクチャ、Pピクチャそれぞれにランダムアクセスするよりは、Iピクチャの開始位置からPピクチャの終了位置まで読み出し、不要なBピクチャを捨てる方が効率がよい。
従って、本実施の形態では、IピクチャとPピクチャを読み出す場合は、「パケット情報」の「GOP開始位置」から「P終了位置」までを読み出し、ビデオコーデック16でIピクチャ101を再生し、不要になるBピクチャ102、103の符号を捨て、次にPピクチャ104を再生する。
高速再生時には、コントローラ19がIピクチャ、あるいはIピクチャから最初のPピクチャまでの符号化データを再生するように制御し、その他は通常動作と同じ動作を行う。
次に、ディスク21に記録された多重化データの再生開始点と終了点をポインタで指定し、記録されている多重化データを変更せずに再生編集を行うプログラム再生について説明する。
図11にプログラム再生の例を示す。図11は多重化データのうち、GOP111〜112、GOP114〜115だけを選択して再生する例で、再生開始点と終了点を示す管理ファイルのアドレスをユーザプログラムとして多重化データと別に記録する。図11において、ユーザプログラムは2組の開始アドレスと終了アドレスを持ち、開始アドレス1はGOP111の開始位置を示し、終了アドレス1はGOP112の終了位置を示す。また開始アドレス2はGOP113の開始位置を示し、終了アドレス2はGOP114の終了位置を示す。ユーザプログラムは管理ファイルのアドレスを指すため、開始アドレス1はGOP111を含むパケットのパケット情報の「GOP先頭位置」が記録されるアドレスを示し、終了アドレス1はGOP113を含むパケットのパケット情報の「GOP先頭位置」が記録されるアドレスを示す。本実施の形態では、GOPの終了位置は管理していないので、次のGOPの「GOP開始位置」の1前の位置をGOPの終了位置とする。
プログラム再生時にも、コントローラ19が指定された多重化データをディスク21から読み出すように制御し、その他は通常動作と同じ動作を行う。
本実施の形態において、多重化データを削除する場合は、多重化データそのものを削除するとともに、削除する多重化データに対応するパケット情報も削除する。削除して空き領域となったパケット情報部分は別途空き領域を管理するテーブルを用いて管理するか、多重化データを削除する毎に空き領域部分を詰めるようにパケット情報部分の書き換えを行う。
なお、本実施の形態では、多重化データを構成するオーディオ符号化データとビデオビデオ符号化データの境界を示す情報は備えていない。オーディオ符号化データとビデオ符号化データの境界は、例えばビデオの復号を行い、GOPの復号が終了した時点をビデオ符号化データとオーディオ符号化データの境界とする、あるいは各符号化データの先頭に符号化データの種類を示すヘッダを付加するなどで認識することができる。
〔第1の実施の形態の変形例〕第1の実施の形態では、図2(b)に示したようにGOP毎のビデオ符号化データとオーディオ符号化データをまとめて記録しているが、図12に示すようにGOPのビデオ符号化データとオーディオ符号化データを分割して記録してもよい。
図2(b)で示した多重化データを構成するには、GOP期間のオーディオデータを全てメモリ18に保持しておく必要があったが、図12で示した多重化データを構成する場合は、オーディオ符号化データを順次出力することができ、メモリ18の容量をより少なくすることができる。
図13に、多重化・分離部回路17において図12で示した多重化データを出力する動作をフローチャートで示す。図12のフローチャートと図2(b)の多重化データを構成する動作を示す図3のフローチャートでは、図3ではステップS32〜S35でGOP毎のビデオ符号化データの読み出しを行い、ステップS36〜S39でGOPに対応するオーディオ符号化データの読み出しを行っているのに対し、図13ではステップS32〜S34で1ビデオフレームのビデオ符号化データの読み出しを行い、ステップS36〜S39で1ビデオフレームに対応するオーディオ符号化データの読み出しを実行し、ステップS32〜S34とステップS36〜S39をGOPが終了するまで繰り返し実行する点が異なるが、各ステップで実行する処理は同一である。
なお、本実施の形態では、ビデオフレームの符号化データは、再生するビデオフレーム順には入力されない。例えば図19で示したGOPの場合、GOPはBピクチャから始まるが、符号化データはBピクチャの後のIピクチャから入力される。従って、ビデオフレームに対応するオーディオフレームとは符号化データ順での対応のことである。
〔第2の実施の形態〕
第1の実施の形態では、多重化データを構成するオーディオ符号化データとビデオ符号化データの境界は、多重化データを入力しなければわからなかった。本実施の形態では、境界を示す情報を管理ファイルに含め、予めオーディオ符号化データとビデオ符号化データの境界を認識できるようにしたものである。
本実施の形態では、例えば高速再生時にもビデオフレームとオーディオフレームを選択して読み出すことができ、音声を再生しながらの高速再生が可能になる。
本実施の形態における管理ファイルの構成を図14に示す。
図14の管理ファイルと図4に示した第1の実施の形態の管理ファイルとでは、図14の管理ファイルにはパケット情報にGOPのビデオ符号化データ量を示す「ビデオ符号量」が含まれている点が異なる。
本実施の形態では図2(b)で示したように、GOPのビデオ符号化データがGOPの先頭から記録されているので、「GOP開始位置」と「GOP符号量」からオーディオ符号化データの開始位置がわかる。
図15に、記録時に図14で示した管理ファイルの「パケット情報」を更新する動作をフローチャートで示す。この動作は図5で示した、管理ファイルの「パケット情報」を更新する動作のフローチャートにおいて、図5ではステップS35で「APTS」を出力していた動作を、「ビデオ符号量」と「APTS」を出力するステップ151に変更したもので、ステップ151以外は図5のフローチャートと同じ動作を行う。「ビデオ符号量」はステップS32でビデオ符号化データを読み出す際に、符号量をカウントすることで算出する。
〔第3の実施の形態〕
第1、第2の実施の形態では、ディスク全体の管理ファイルにGOP毎の「GOP開始位置」、「VPTS」、「APTS」「I終了位置」、「P終了位置」を記録していたが、記録時間が長くなると管理ファイルのデータ量が多くなるという問題ある。第3の実施の形態では、GOPの位置情報の一部を多重化データに記録し、管理ファイルのデータ量を削減する。
図16に本発明の第3の実施の形態における多重化データの構成を示す。
図16は、図2(b)で示した多重化データの構成に加え、GOPの先頭にGOPの管理データを付加したものである。GOPの管理データには、第1の実施の形態では管理ファイルに記録していた「VPTS」、「APTS」、「I終了位置」、「P終了位置」を記録する。この場合の管理ファイルの構成を図17に示す。
図18に、記録時に図17で示した管理ファイルの「パケット情報」を更新する動作をフローチャートで示す。この動作は図5で示した、管理ファイルの「パケット情報」を更新する動作のフローチャートにおいて、「GOP開始位置」、「VPTS」、「APTS」、「I終了位置」、「P終了位置」を出力する動作部分をステップS181〜S186に変更したもので、図5と同じ動作の部分は同じ番号を付して説明を省略する。
図18において、パケットの先頭で「パケット開始位置」をコントローラ19に出力する(ステップS51)。次にステップS181で「GOP開始位置」、「VPTS」、「APTS」をECC部20に出力する。次にビデオコーデック16からIピクチャの符号化データの入力が終了すると、「I終了位置」をECC部20に出力し(ステップS183)、GOPの最初のPピクチャの符号化データの入力が終了すると、「P終了位置」をECC部20に出力する(ステップS185)。
ステップS181〜S185はGOPの先頭で実行され、ビデオエンコーダ16からPピクチャの符号化データの入力が終了した時点でGOP毎の位置情報や時刻情報が出力され、その後にステップS32〜S39でGOPのビデオ符号化データとオーディオ符号化データが出力される。