以下、この発明について、図面を参照しながら説明する。先ず、理解を容易とするために、この発明に適用可能な再生制御処理について説明する。図1は、この発明に適用可能な、順方向または逆方向について再生速度が1倍速以内の場合の再生制御処理を概念的に示す。ステップS1で、次に再生すべき目標再生フレームが指示される。目標再生フレームは、例えば再生速度が順方向または逆方向に1倍速以内の場合、1フレームタイミング前で確定した目標再生フレームに対して表示順で隣接するフレームの範囲となる。目標再生フレームは、例えばより上位のシステムから指定され、フレームタイミング毎に供給される。
目標再生フレームが指示されると、次に、目標再生フレームに対する目標フレームバッファのパターンが作成される(ステップS2)。目標フレームバッファのパターンは、目標再生フレームを再生すると共に、逆方向および順方向への再生を継続するために、フレームバッファ上にデコードされた状態で溜め込まれている必要があるフレームのパターンである。次のステップS3で、作成された目標フレームバッファパターンと現在のフレームバッファの状態とが比較される。この比較により、現在のフレームバッファの状態に対して新規にデコードが必要なピクチャが抽出される(ステップS4)。それと共に、現在のフレームバッファに空き領域が無い場合、不要なピクチャが抽出される(ステップS5)。ステップS4抽出されるピクチャは、常に1ピクチャである。また、ステップS5でピクチャの抽出が行われる場合は、常に1ピクチャが抽出される。
ここまでが、実際にデコードを行うためのターゲットを作成する処理となる。次から、実際にデコーダが制御され、デコード処理が開始される。
ステップS6では、例えば記録媒体がアクセスされ、ステップS4で抽出された結果に基づき所定のピクチャがデコーダに対してストリーム入力される。デコーダでデコードされたピクチャは、フレームバッファ上の、上述のステップS5で抽出された不要ピクチャの領域に上書きされる(ステップS7)。1ピクチャ分のデコードが完了すると、デコード済みの出力フレーム画像として出力される(ステップS8)。
図2は、この発明の実施の一形態に適用可能な再生装置1の一例の構成を概略的に示す。再生装置1は、光ディスク10を記録媒体として用いる。CPU(Central Processing Unit)14は、ROM(Read Only Memory)およびRAM(Random Access Memory)が接続され(図示しない)、ROMに予め記憶されたプログラムに従いこの再生装置1の各部を制御する。RAMは、CPU14のワークメモリとして用いられる。
ディスクドライブ11は、CPU14の制御に基づき、装填された光ディスク10の所定のアドレスからデータを読み出す。読み出されたデータは、キャッシュメモリ12に一時的に溜め込まれる。そして、CPU14の命令に基づき、キャッシュメモリ12からデコーダ13に対してビデオストリームが供給され、要求に応じて入力されたビデオストリームをフレームメモリ13Aを用いてデコードする。デコード出力は、ベースバンドのビデオ信号として出力される。
操作部15は、キーやスイッチなどの様々な操作子が設けられ、操作子に対してなされた操作に応じた制御信号を生成し、CPU14に供給する。CPU14は、供給されたこの制御信号に応じて再生装置1の各部に対して命令を送る。操作部15には、例えばジョグダイヤル16が設けられる。ジョグダイヤル16は、回転角に応じた信号が出力されるようになっており、例えば、ジョグダイヤル16は、ユーザによる操作に応じて、再生方向について順方向および逆方向の指定を行うための制御信号や、再生速度を略リアルタイムで指示する制御信号などを生成し、CPU14に供給する。
インターフェイス(I/F)17は、上位の装置との間でコマンドやステータスなどのやりとりを行う。例えば、編集装置がインターフェイス17を介してこの再生装置1に接続される。再生速度や方向といった再生制御コマンドや、IN点およびOUT点といった編集点を示すデータ、編集開始指示といった編集コマンドが編集装置から送信され、インターフェイス17で受信され、CPU14に渡される。
同期信号入力部18は、外部から例えばフレームタイミングを示す所定の同期信号が入力される。再生装置1は、この同期信号入力部18に対して入力された同期信号に基づき動作することができる。
この再生装置1で扱われるビデオストリームは、MPEG2(Moving Pictures Experts Group 2)の規格に準じて圧縮符号化がなされたストリームであって、GOP(Group Of picture)の構成は、ロングGOPおよびオープンGOPであるものとする。
図3は、デコーダ13の一例の構成を概略的に示す。光ディスク10から読み出され、ディスクドライブ11から出力されるストリームデータは、例えばMPEG−ES(MPEG Elementally Stream)である。このMPEG−ESは、ストリームデコーダ20に供給される。ストリームデコーダ20は、入力されたMPEG−ESのパケットとヘッダ情報とを解析し、デコード処理に必要な各種パラメータと、圧縮符号化されパケット中のペイロードに格納されたピクチャのデータとを抽出する。各種パラメータは、例えばCPU14に供給される。抽出されたピクチャデータは、ストリームバッファ21に所定に溜め込まれる。
MPEGデコーダ22は、ストリームデコーダ20に対してストリームバッファ21に溜め込まれたピクチャデータを要求し、要求に応じてストリームバッファ21から読み出されたピクチャデータをデコードしてフレームメモリ13Aに書き込む。また、MPEGデコーダ22は、フレームメモリ13Aに書き込まれたピクチャデータを用いて他のピクチャデータ(例えばPピクチャやBピクチャ)をデコードする処理も行う。
なお、詳細は後述するが、フレームメモリ13Aは、順方向の再生と逆方向の再生とを固定的な遅延で実行可能とするための必要十分な容量を有する。例えば、フレームメモリ13Aは、デコードされたピクチャの9フレーム分を溜め込めるだけの容量を有する。一例として、フレームメモリ13Aは、それぞれ1フレーム分のデータを格納可能な9個のバンクに記憶領域が分割され、バンク毎にアクセスが制御される。
出力データ制御部23は、出力されるビデオデータの管理を行う。例えば、出力データ制御部23は、上位のシステムなどからインターフェイス17を介して供給されたコマンドや、操作部15に対する操作に応じたCPU14の命令に基づき、フレームメモリ13Aから次に表示するためのフレームデータを読み出す。読み出されたフレームデータは、ベースバンドのビデオ信号として出力される。
図4は、デコーダ13の一例の構成をより具体的に示す。なお、図4において、上述する図3と共通する部分には同一の符号を付して詳細な説明を省略する。ディスクドライブ11から出力されたMPEG−ESは、デマルチプレクサ(DMUX)30に供給され、パケットが解析される。パケットから取り出されたMPEG ESおよびヘッダ情報は、ストリームバッファ21に溜め込まれる。パケットのヘッダ情報は、また、ユーザデータデコーダ31に供給され、各種パラメータが抽出される。抽出されたパラメータは、ストリームバッファ21に所定に溜め込まれる。
デコーダ32は、ストリームバッファ21に溜め込まれたヘッダ情報やMPEG ESをデコードする。デコーダ32は、ヘッダ情報のデコードを行いピクチャのデコードに必要なパラメータを取り出す。デコーダ32は、ヘッダ情報から取り出されたパラメータに基づき、MPEG ESに対して、可変長符号のデコード、逆量子化および逆DCT(Discrete Cosine Transform)を行い、ピクチャ毎のデコードを行う。デコーダ32でデコードされたピクチャデータは、予測復元部33を介してフレームメモリ13Aに書き込まれる。
予測復元部33は、フレームメモリ13Aに書き込まれたピクチャデータを用いて、予測符号化を用いてフレーム間圧縮をされたピクチャをデコードする。フレーム間圧縮をデコードされたピクチャは、フレームデータとしてフレームメモリ13Aに再び書き込まれる。
一方、上位のシステムなどから、再生方向や再生速度、再生フレームなどを命令するコマンドが送信され、インターフェイス17を介してCPU14に供給される。また、ユーザの、再生方向および再生速度を指定するためのジョグダイヤル16に対する操作などにより、操作部15で、再生速度や再生方向を示す制御信号が所定に生成され、CPU14に供給される。
CPU14は、ROM35に予め記憶されたプログラムに従い、インターフェイス17を介して供給されたコマンドや、操作部15から供給された制御信号に基づき、ビデオ出力部23に対して命令を出し、出力すべきフレームを指示する。なお、RAM36は、必要に応じてCPU14のワークメモリとして用いられる。ビデオ出力部23は、この命令に応じてフレームメモリ13Aから指示されたフレームを読み出す。
読み出されたフレームは、補助データ重畳部34に供給され、ストリームバッファ21に溜め込まれた情報に基づき所定にビデオインデックス情報や補助データなどが重畳され、さらに同期信号を付加されて、出力ビデオ信号として出力される。
次に、この発明の実施の一形態に適用できる記録媒体について説明する。先ず、図5を用いて、ディスク状記録媒体における一例のデータ配置について説明する。この図5に一例が示されるデータ配置は、記録可能な光ディスク、ハードディスクといった、ランダムアクセスが可能なディスク状記録媒体における一般的なデータ配置である。論理アドレス空間は、任意のデータを記録再生可能な領域である。
この実施の一形態では、記録媒体を光ディスクとする。なお、この実施の一形態に適用可能な記録媒体は、光ディスクに限られない。すなわち、この実施の一形態は、ハードディスクドライブや半導体メモリといった、他のランダムアクセス可能な記録媒体にも適用できるものである。
論理アドレスの先端および後端には、ファイルシステムFSが配置される。任意のデータは、論理アドレス空間内に一般的にファイルと称される所定の形式で記録される。記録媒体上のデータは、基本的にファイル単位で管理される。ファイルの管理情報は、ファイルシステムFSに記録される。記録再生装置のシステム制御部(後述する)のファイルシステム層は、このファイルシステムFSの情報を参照および操作することで、多種多様なデータを一つの記録媒体上で管理することができる。ファイルシステムFSは、例えばUDF(Universal Disk Format)が用いられ、2kB単位でファイルを管理する。
論理アドレス空間の外に、交替領域が配置される。交替領域は、記録媒体の一部が欠陥(ディフェクト)により物理的に読み書きできなくなった場合に代替的に用いることができる領域である。例えば、記録媒体に対するアクセス(特に記録時のアクセス)の際に欠陥領域が認識された場合、通常は交替処理が行われ、当該欠陥領域のアドレスが交替領域内に移動される。
交替領域の使用状況は、所定領域にディフェクトリストとして記憶され、記録再生装置のドライブ制御部や、システム制御部の下位階層により用いられる。すなわち、後述するドライブ制御部やシステム制御部の下位階層では、記録媒体へのアクセスの際にディフェクトリストを参照することで、交替処理が行われている場合にも、適切な領域へのアクセスを行うことができる。交替領域のこの仕組みにより、上位アプリケーションは、記録媒体上の不良記録領域の有無や位置などを考慮することなく、記録媒体に対するデータの記録再生を行うことができる。
ディスク状記録媒体の場合、交替領域は、ディスクの最内周側または最外周側に配置されることが多い。ディスクの回転制御を、ディスクの半径方向に段階的に回転速度を変更するゾーン制御で行っている場合には、ゾーン毎に交替領域を設ける場合もある。記録媒体が半導体メモリなどディスク状記録媒体ではない場合には、物理アドレスが最も小さい側または最も大きい側に配置されることが多い。
オーディオデータおよびビデオデータ(以下、まとめてAVデータと呼ぶ)を扱うアプリケーションにおいては、連続同期再生、すなわち実時間再生が保障された再生が必要な単位となるデータのまとまりを、クリップと呼ぶ。例えば、ビデオカメラにより撮影が開始されてから終了されるまでのひとまとまりのデータがクリップとされる。クリップの実体は、単一のファイルまたは複数のファイルからなる。この発明においては、クリップは、複数のファイルからなる。クリップの詳細については、後述する。
論理アドレス空間に対して、例えば先頭側にクリップ以外の任意のファイルが記録できるNRT(Non Real Time)領域が配置され、NRT領域の次から、クリップが順に詰め込まれていく。クリップは、光ディスク10上のディフェクト位置を避けて配置され、上述した交替処理が行われないようにされる。各クリップには、ヘッダ(H)およびフッタ(F)が付加される。この例では、ヘッダおよびフッタは、クリップの後端側にまとめて配置されている。
なお、以下の説明において、光ディスク10に最初に記録されるクリップを、クリップ#1とし、以降、クリップ#2、クリップ#3、・・・とクリップ番号が増加していくものとする。
論理アドレス空間内において、データが記録されていない領域や、過去にデータが記録されていたが現在では不要になった領域は、未使用領域としてファイルシステムFSに管理される。記録媒体上に新たに記録されるファイルに対して、未使用領域に基づき記録領域が割り当てられる。当該ファイルの管理情報は、ファイルシステムFSに追加される。
記録媒体として記録可能な光ディスクを用いた場合、この発明では、クリップを年輪構造によって記録媒体に記録する。図6および図7を用いて、年輪構造について説明する。図6Aは、一つのクリップ100をタイムライン上に示す例である。この例では、クリップ100は、ビデオデータ101、オーディオデータ102A〜102D、補助AVデータ103およびリアルタイムメタデータ104の7ファイルからなる。
ビデオデータ101は、ベースバンドのビデオデータを、例えばビットレートが50Mbps(メガビットパーセカンド)の高ビットレートで圧縮符号化したビデオデータである。圧縮符号化方式としては、例えばMPEG2(Moving Pictures Experts Group 2)方式が用いられる。オーディオデータ102A、102B、102Cおよび102Dは、ベースバンドのオーディオデータが用いられ、それぞれ2チャンネルのオーディオデータである。これに限らず、オーディオデータ102A、102B、102Cおよび102Dは、ベースバンドのオーディオデータを高ビットレートで圧縮符号化したオーディオデータを用いてもよい。ビデオデータ101およびオーディオデータ102A〜102Dは、実際の放送や編集の対象とされるデータであって、本線系のデータと称される。
補助AVデータ103は、ベースバンドのビデオデータおよびオーディオデータを、本線系のビデオデータおよびオーディオデータに対してより低ビットレートで圧縮符号化して多重化したデータである。圧縮符号化方式としては、例えばMPEG4方式が用いられ、本線系のAVデータを、ビットレートを例えば数Mbpsまで落とすように圧縮符号化して生成する。補助AVデータ103は、高速サーチ再生を行うために本線系のデータの代理として用いられるデータであって、プロキシ(Proxy)データとも称される。
メタデータは、あるデータに関する上位データであり、各種データの内容を表すためのインデックスとして機能する。メタデータには、上述の本線系のAVデータの時系列に沿って発生されるリアルタイムメタデータ104と、本線系のAVデータにおけるシーン毎など、所定の区間に対して発生される非時系列メタデータの2種類がある。非時系列メタデータは、例えば図5で説明したNRT領域に記録される。
クリップ100は、図6Bに一例が示されるように、所定の再生時間(例えば2秒)を基準として分割され、年輪構造として光ディスクに記録される。一つの年輪は、図6Cに一例が示されるように、ビデオデータ101、オーディオデータ102A〜102D、補助AVデータ103およびリアルタイムメタデータ(RM)104を、それぞれ再生時間帯が対応するように、トラック1周分以上のデータサイズを有する所定の再生時間単位に分割し、分割された再生時間単位毎に順に配置して記録する。すなわち、クリップ100を構成する各データは、年輪構造により所定時間単位でインターリーブされ、光ディスクに記録される。
年輪を形成するデータを年輪データと称する。年輪データは、ディスクにおける最小の記録単位の整数倍のデータ量とされる。また、年輪は、その境界がディスクの記録単位のブロック境界と一致するように記録される。
図7は、光ディスク10に対して年輪データが形成された一例の様子を示す。例えば、図6Bを用いて説明したように、光ディスク10の内周側から外周側に向けて、1つのクリップが所定の再生時間単位に分割された年輪データ#1、#2、#3、・・・が連続的に記録される。すなわち、光ディスク10の内周側から外周側に向けて、再生の時系列が連続するようにデータが配置される。なお、図示しないが、NRT領域は、図7の例では、先頭の年輪データ#1のさらに内周側に配置される。
HDフォーマットでは、可変長ビットレートでの圧縮符号化が可能とされている。また、ロングGOPを用いた場合、予測符号化を用いたフレーム間圧縮符号化により、Iピクチャ、PピクチャおよびBピクチャにより、データサイズが異なる。そこで、ピクチャポインタファイルを用いて所望の位置へのアクセスを実現する。
ピクチャポインタは、クリップ内の各フレーム位置のオフセット情報である。すなわち、例えばMPEG2においては、フレーム毎にデータの圧縮率を変える可変ビットレートが可能とされている。例えば、平坦な画面のフレームは、より高圧縮率で圧縮符号化し、粗い画面のフレームは、より低圧縮率で圧縮符号化する。このように、フレームの性質に応じて圧縮率を変えることで、より高解像度のビデオデータをより低いビットレートで伝送および記録することができる。また、MPEG2においては、可変長符号による圧縮符号化もなされる。
このような、ビットレートを可変として圧縮符号化されたビデオデータは、フレーム位置や複数フレームで再生が完結されるGOPの位置がフレーム毎やGOP毎に異なり、所望の位置へのジャンプなどが難しい。そこで、可変長ビットレートのアクセスを容易とするために、クリップ内の各フレーム位置のオフセット情報をピクチャポイントとしてテーブル化して非時系列メタデータファイルとし、クリップにそれぞれ対応して配置する。例えばドライブにディスクを挿入した際にこのピクチャポイントを所定に読み込んでおくことで、クリップ内の所望位置へのアクセスを高速に行うことができるようになる。
図8および図9を用いて、より詳細に説明する。図8は、MPEG2のロングGOPにおける一例のデータ構造を示す。例えば、図8Aに示されるように、1つのクリップから1ロングGOPファイルが構成される。ロングGOPファイルは、図8Bに示されるように、ビデオMXF(Material Exchange Format)ファイルOP−Atomと呼ばれる構造を有し、先頭からヘッダパーティションパック(HPP)およびヘッダメタデータが配置されてヘッダ情報が構成され、その後ろに、ビデオデータの本体が格納されるエッセンスコンテナが配置される。ファイルの末尾には、フッタパーティションパック(FPP)が配置される。
エッセンスコンテナは、図8Cに示されるように、GOPが並んでいる構成となっている。各GOPの内容は、図8Dに示されるように、ピクチャの集合であり、1つのピクチャの内容は、図8Eに示されるように、先頭にKL(Key,length)情報が配され、次にI、PまたはBピクチャの本体が配され、さらにKL情報が配される。ピクチャの末尾には、必要に応じてフィラーが配され、バイト単位で末尾が揃えられる。
このような構成において、MPEG2のロングGOPでは、各ピクチャの情報量、すなわち図8Eに示されるI、PおよびBピクチャのサイズの値が不確定となる。したがって、例えばロングGOPビデオファイル中のあるフレームから再生を開始しようとした場合に、ロングGOPビデオファイル中のそのフレームに対応するピクチャの先頭位置を、バイト位置などで指定することができない。
そのため、ロングGOPビデオファイルの先頭位置からバイト単位で示されるファイルアドレス(図8F参照)を基準として、ロングGOPビデオファイルに含まれる各ピクチャそれぞれについて、ファイルアドレス、サイズおよびピクチャタイプ(I、PまたはBピクチャ)と、そのピクチャがGOPの先頭のピクチャであるか否かを示す情報を、ピクチャポインタ情報として用意する。このピクチャポインタ情報は、ロングGOPビデオファイル毎に用意される。
なお、図8Eに示されるピクチャ末尾に配されるフィラーは、各ピクチャの境界がファイルアドレスで見て例えば2048バイトといった所定バイトの倍数になるように調整する。一例として、各ピクチャの境界が光ディスク10のセクタといった最小アクセス単位の境界に一致するように、フィラーを用いて調整すると、各ピクチャ毎のアクセスが容易となり好ましい。
図9は、ピクチャポインタ情報が記述されるピクチャポインタテーブルのより具体的な例を示す。この例では、ピクチャポインタテーブルは、8バイト単位でデータが記述される。先頭の8バイトは、予約領域およびこのピクチャポインタテーブルのバージョン情報が格納される。以下、1フレームすなわち1ピクチャに対して8バイトが割り当てられ、この8バイトの情報がロングGOPビデオファイルに含まれるピクチャの数だけ並べられる。各ピクチャは、表示フレーム順に並べられている。
各ピクチャ毎のデータについて説明する。先頭の1ビットは、そのピクチャがGOPの先頭のピクチャであるか否かを示すフラグである。例えば、1GOP内にIピクチャが複数枚、存在する場合を想定すると、Iピクチャの位置だけではGOPの境界を特定できない。GOPの境界を特定できないと、MPEG2に規定されるシーケンスヘッダ(Sequence Header)の位置が分からず、デコーダに入力されるストリームの先頭にシーケンスヘッダが無いという状態になるおそれがある。このGOP先頭のピクチャであるか否かを示すフラグをピクチャ毎に持たせることで、このような状態を回避できる。再生時には、このフラグにもとづきでコーダにストリームを入力させる。
次の23ビットは、図8Eに示される、ピクチャのサイズ情報が格納される。サイズ情報として23ビットを確保することで、8MB(メガバイト)までのデータサイズに対応でき、MPEGプロファイルの422@HLにも対応可能となる。
次の2ビットでピクチャのタイプが示される。Bピクチャについては、参照方向の情報も示される。ピクチャのタイプは、より具体的には、例えば次のように記述される。
00:Iピクチャ
10:Pピクチャ
01:前方(未来)のフレームが参照されて復元されるBピクチャ。これは、例えばオープンGOPの場合の、ロングGOPビデオファイル先頭のBピクチャ、または、クローズドGOPの場合の各GOPの先頭のBピクチャである。
11:前方および後方のフレームが参照されて復元されるBピクチャ。
次の38ビットは、当該ピクチャのロングGOPビデオファイル内におけるファイルアドレスが示される。ファイルアドレスに38ビットを割り当てることで、サイズが256GB(ギガバイト)までのロングGOPビデオファイルに対応可能である。例えば、1層で27GBの記録容量を有する記録層が8層まで形成された光ディスク10に対応可能である。
このピクチャポインタテーブルは、ピクチャポインタファイルとして、非時系列メタデータと共に例えば記録媒体のNRT領域に記録される。光ディスク10がディスクドライブ11に装填された際に、このNRT領域に記録された非時系列メタデータとピクチャポインタファイルがディスクドライブ11により読み出され、光ディスク10が再生装置1のシステムに対してマウントされる。読み出された非時系列メタデータやピクチャポインタファイルは、例えばCPU14が有するRAMに保持される。CPU14は、RAMに保持されるピクチャポインタテーブルを参照することで、光ディスク10に記録されるクリップ中の任意のピクチャにアクセスすることができる。
次に、この発明の実施の一形態に適用可能な再生制御処理について、より詳細に説明する。先ず、図1のステップS2で説明した、目標フレームバッファパターンについて説明する。最初に、任意の目標再生フレームと、当該目標再生フレームに対して表示順で隣接する前後のフレームとを再生するために必要なフレームバッファサイズを求める。
図10は、カレントフレーム(例えば目標再生フレーム)に対して表示順で1フレーム後または1フレーム前のフレームをデコードする場合の必要バッファ量の例を示す。図10において、出力フレーム(カレントフレーム)を「0」で示し、現在より表示順で順方向すなわち未来(後)になるフレームは「+」を、表示順で逆方向すなわち過去(前)になるフレームは「−」を、それぞれ付して示す。また、図中、「M」は、基準ピクチャから次の基準ピクチャまでのピクチャの移動数、「N」は、1GOP内のピクチャ数を示す。例えば、GOPが「I3、B1、B2、P6、B4、B5、P9、B7、B8、P12、B10、B11、P15、B13、B14」の15枚のピクチャで構成される場合、(M=3、N=15)である。
図10Aは、順方向に1フレームだけ再生を進める場合の例を示す。この場合、M=3のときに、目標再生フレームが隣り合ったBピクチャの表示順で前方のBピクチャの場合に、最もバッファが必要となる。この場合には、次のフレームタイミングで当該目標再生フレームから次のBピクチャに移動することになる。
すなわち、この場合には、B4ピクチャおよびB5ピクチャは、それぞれI3ピクチャおよびP6ピクチャを用いてデコードされる。B5ピクチャのデコードが終了するまで、I3ピクチャはバッファから破棄できず、且つ、P6ピクチャはB5ピクチャの次に表示されるため、バッファ内に保持される。したがって、M+1=4ピクチャ分のバッファが必要となる。
図10Bは、逆方向に1フレームだけ再生を進める(戻す)場合の例を示す。一般的なM=3およびN=15のオープンGOPであれば、目標再生フレームがI3+1ピクチャである場合に、最もバッファが必要となる。この場合には、次のフレームタイミングで当該目標再生フレームから表示順で後方のB2+1ピクチャに移動することになる。なお、(+1)は、そのピクチャがカレントピクチャの次のGOPに属することを示す。
すなわち、この場合には、B2+1ピクチャをデコードするために、I3+1ピクチャと、B2+1ピクチャの表示順で前のP15ピクチャとが必要となり、このP15ピクチャをデコードするために、当該P15ピクチャの属するGOPにおけるI3ピクチャ、P6ピクチャ、P9ピクチャ、P12ピクチャが順次、必要となる。したがって、N/M+2=7ピクチャ分のバッファが必要となる。ここで、N/Mは、GOPに含まれるIピクチャおよびPピクチャの枚数に相当する。
図10Cは、順方向および逆方向の何れかの方向に対する1フレームの移行を考慮した場合の例である。一般的なM=3およびN=15のオープンGOPであれば、目標再生フレームがI3+1ピクチャである場合に最もバッファが必要となる。この場合には、次のフレームタイミングで、当該I3+1ピクチャの表示順で次のB4+1ピクチャまたは表示順で前のB2+1ピクチャに移動することになる。
すなわち、この場合は、上述の図10Aの例と図10Bの例とを組み合わせた状態となり、目標再生フレームであるI3+1ピクチャの表示順で次のB4+1ピクチャをデコードするために、当該I3+1ピクチャと、当該I3+1ピクチャの次に現れる基準ピクチャであるP6+1ピクチャとが必要となる。また、当該I3+1ピクチャの表示順で前のB2+1ピクチャをデコードするために、当該I3+1ピクチャと、当該I3+1ピクチャの属するGOPの前のGOPにおけるI3ピクチャ、P6ピクチャ、P9ピクチャ、P12ピクチャおよびP15ピクチャとが順次、必要となる。したがって、N/M+M+1=9ピクチャ分のバッファが必要となる。
このように、目標再生フレームから表示順で隣接する前後のフレームに移動する場合には、9ピクチャ分のバッファが必要となる。
ここで、フレームバッファにおいて、目標再生フレームに対して表示順で隣接する前後のピクチャが常に固定遅延で表示可能となるような、バッファの更新パターンについて考える。
すなわち、デコードされバッファ上に存在する目標再生フレームに対して表示順で前後に隣接するフレームが常にデコードされバッファ上に存在する状態とする。さらに、逆方向再生を継続するために必要なフレームと、順方向再生を継続するために必要なフレームとを、常に、全てデコードし、バッファ上に溜め込んでおく。このようなバッファ上のパターンを、目標再生フレームを1フレーム毎に移動させた全パターンについて作成する。
この状態において、目標再生フレームが1フレーム分移動し、更新された場合、新たにデコードが必要となるデータは、再生方向が順方向および逆方向によらず常に1フレーム分となる。したがって、再生方向が順方向および逆方向の何れの場合の1倍速以内の再生速度での変速再生が、1倍速デコーダを用いて実現可能となる。
さらに、この状態において、逆方向の1倍速再生から、順方向の1倍速再生のコマンド速度の間では、固定遅延で再生出力結果を得ることができる。
図11は、上述の考えに基づき作成した目標フレームバッファの一例の更新パターンを示す。この図11の例は、(N=15、M=3)であるロングGOPの場合に関する。1GOPが15ピクチャ(フレーム)で構成され、15のパターンからなる。図11中の各行に示されるように、目標再生フレームに対応したフレームがフレームバッファに格納された状態で、目標再生フレームを任意の方向に1フレームずつ移動させた場合に、更新されるフレームがそれぞれ1フレーム分で済み、順方向および逆方向の1倍速以内の可変速再生を、1倍速デコーダを用いて行うことができるようにしている。
すなわち、図11の更新パターンの各行において、その行に対応する目標再生フレームと、当該目標再生フレームに対して再生方向で順方向および逆方向にそれぞれ隣接するフレームが、当該目標再生フレームと共にフレームバッファに格納されるべきフレームとされる。それと共に、当該目標再生フレームに対して順方向および逆方向に隣接するフレームにさらに隣接するフレームをデコードするために必要なフレームが、当該目標再生フレームと共にフレームバッファに格納されるべきフレームとされる。また、目標再生フレームが隣接する行の間において、更新フレームが1フレームのみとなるようにされる。
なお、図11中のI、PおよびBは、それぞれIピクチャ、PピクチャおよびBピクチャに基づくフレームであって、付加される数字は、GOP内の表示順を示す。基準となるGOP(カレントGOP)に属するピクチャによるフレームは、記号を付加しない。カレントGOPの1つ前のGOP(GOP(−)と呼ぶ)に属するピクチャによるフレームに対して、マイナス記号(−)を付加する。カレントGOPの1つ後のGOP(GOP(+)と呼ぶ)に属するピクチャによるフレームに対して、プラス記号(+)を付加する。
また、以下の説明中でも、これに対応し、カレントフレームのn個前のフレームは(-n)を付して示し、カレントフレームのn個後のフレームは(+n)を付して示す。
この図11の更新パターンは、図の上側から下側に向けた方向が順方向の再生を示し、下側から上側に向けた方向が逆方向の再生を示す。すなわち、図11の上側から下側に1行分進むことで、目標再生フレームが1フレーム進み、下側から上側に1行分進むことで、目標再生フレームが1フレーム戻る。また、この図11の更新パターンは、循環的とされ、第1行目から目標再生フレームが1フレーム分戻ったときには、第15行目のフレームバッファの更新パターンに移行される。
図11を参照して、目標再生フレームがフレーム「I3」のとき(第1行目)のパターンは、フレーム「I3」、フレーム「P6」、フレーム「P15-1」、フレーム「P12-1」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B4」およびフレーム「B2」とされる。後述する目標再生フレームがフレーム「B2」のパターンに対して、フレーム「B1+1」がフレーム「B4」に更新されている。
目標再生フレームがフレーム「B4」のとき(第2行目)は、フレーム「I3」、フレーム「P6」、フレーム「P15-1」、フレーム「P12-1」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B4」およびフレーム「B5」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「I3」のパターンに対して、フレーム「B2」がフレーム「B5」に更新されている。
目標再生フレームがフレーム「B5」のとき(第3行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12-1」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B4」およびフレーム「B5」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B4」のパターンに対して、フレーム「P15-1」がフレーム「P9」に更新されている。
目標再生フレームがフレーム「P6」のとき(第4行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12-1」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B7」およびフレーム「B5」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B5」のパターンに対して、フレーム「B4」がフレーム「B7」に更新されている。
目標再生フレームがフレーム「B7」のとき(第5行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12-1」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B7」およびフレーム「B8」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「P6」のパターンに対して、フレーム「B5」がフレーム「B8」に更新されている。
目標再生フレームがフレーム「B8」のとき(第6行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B7」およびフレーム「B8」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B7」のパターンに対して、フレーム「P12-1」がフレーム「P12」に更新されている。
目標再生フレームがフレーム「P9」のとき(第7行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B10」およびフレーム「B8」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B8」のパターンに対して、フレーム「B7」がフレーム「B10」に更新されている。
目標再生フレームがフレーム「B10」のとき(第8行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P9-1」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B10」およびフレーム「B11」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「P9」のパターンに対して、フレーム「B8」がフレーム「B11」に更新されている。
目標再生フレームがフレーム「B11」のとき(第9行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B10」およびフレーム「B11」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B10」のパターンに対して、フレーム「P9-1」がフレーム「P15」に更新されている。
目標再生フレームがフレーム「P12」のとき(第10行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B13」およびフレーム「B11」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B11」のパターンに対して、フレーム「B10」がフレーム「B13」に更新されている。
目標再生フレームがフレーム「B13」のとき(第11行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「P6-1」、フレーム「I3-1」、フレーム「B13」およびフレーム「B14」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「P12」のパターンに対して、フレーム「B11」がフレーム「B14」に更新されている。
目標再生フレームがフレーム「B14」のとき(第12行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「I3+1」、フレーム「I3-1」、フレーム「B13」およびフレーム「B14」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B13」のパターンに対して、フレーム「P6-1」がフレーム「I3+1」に更新されている。
目標再生フレームがフレーム「P15」のとき(第13行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「I3+1」、フレーム「I3-1」、フレーム「B1+1」およびフレーム「B14」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B14」のパターンに対して、フレーム「B13」がフレーム「B1+1」に更新されている。
目標再生フレームがフレーム「B1+1」のとき(第14行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「I3+1」、フレーム「I3-1」、フレーム「B1+1」およびフレーム「B2+1」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「P15」のパターンに対して、フレーム「B14」がフレーム「B2+1」に更新されている。
目標再生フレームがフレーム「B2+1」のとき(第15行目)は、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「I3+1」、フレーム「P6+1」、フレーム「B1+1」およびフレーム「B2+1」がバッファメモリに格納されるべきフレームとされる。上述の目標再生フレームがフレーム「B1+1」のパターンに対して、フレーム「I3-1」がフレーム「P6+1」に更新されている。
このように、図11に一例を示すフレームバッファの更新パターンでは、各フレーム毎の更新パターン間で、1フレーム分のみが更新されるようになっている。幾つかの例を挙げて、より具体的に説明する。
第1の例として、目標再生フレームがPピクチャによるフレーム「P6」の場合について説明する。この場合、順方向および逆方向について1倍速以内の再生速度範囲においては、当該目標再生フレームの1フレームタイミング後に新たな目標再生フレームとなる可能性のあるフレームは、当該フレーム「P6」と、当該フレーム「P6」に対して表示順で前後に隣接するフレーム「B5」およびフレーム「B7」とである。
目標再生フレームがフレーム「P6」の状態において、上述したような、目標再生フレームに基づき作成された目標フレームバッファパターンに従いデコードされたフレームがフレームバッファに格納された状態では(図11の第4行目のパターン参照)、目標再生フレーム「P6」と、その前後のフレーム「B5」およびフレーム「B7」は、それぞれ既にデコードされた状態でフレームバッファに格納されている。
この状態から目標再生フレームがフレーム「B5」またはフレーム「B7」に移行された場合、移行された目標再生フレームに対する新たな目標フレームバッファパターンに基づいて、新たに必要となるフレームをデコードされた状態でフレームバッファに格納していく。
これらのデータが格納されたフレームバッファの他の領域は、直前のデータが保持される。すなわち、図11の例では、第4行目に示されるように、目標再生フレームがフレーム「P6」のときは、フレームバッファに、当該フレーム「P6」と、当該フレーム「P6」と同じGOPに属するフレーム「I3」、フレーム「P9」、フレーム「B5」およびフレーム「B7」、ならびに、当該フレーム「P6」が属するGOPに対して1つ前のGOPに属するフレーム「I3−」、フレーム「P6−」、フレーム「P9−」およびフレーム「P12−」が格納される。
この目標再生フレームがフレーム「P6」の場合、順方向に1フレーム分、目標再生フレームが移行すると、新たな目標再生フレームがフレーム「B7」となる。また、この新たな目標再生フレームに対して1フレームタイミング後にさらに新たな目標再生フレームとなる可能性があるフレームは、フレーム「B7」と、当該フレーム「B7」に対して表示順で前後に隣接するフレーム「P6」およびフレーム「B8」となる。
なお、再生速度が順方向および逆方向に1倍速以内の場合、同一のフレームが2フレームタイミングで連続して出力される場合がある。この場合、次のフレームタイミングに移っても、目標再生フレームが変化しない。
これらのうち、フレーム「P6」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B8」をデコードするためには、フレーム「P6」およびフレーム「P9」が必要となる。フレーム「P6」およびフレーム「P9」は、それぞれフレーム「B7」をデコードするために用いられているので、既にフレームバッファ上に存在している。フレーム「B8」がこれらフレーム「P6」および「P9」を用いてデコードされる。
一方、目標再生フレームがフレーム「B7」に移行した場合、目標再生フレームがフレーム「P6」の状態における逆方向側の表示順で隣接フレームであったフレーム「B5」は、不要となるため破棄される。フレームバッファ上の、この破棄されたフレーム「B5」の領域に、新たにデコードされたフレーム「B8」が格納され、フレームバッファが更新される。
逆方向に1フレーム分、再生が戻されると、新たな目標再生フレームがフレーム「B5」となり、この新たな目標再生フレームに対して1フレームタイミング後にさらに新たな目標再生フレームとなる可能性のあるフレームは、フレーム「B5」と、フレーム「B4」およびフレーム「P6」とである。フレーム「P6」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B4」をデコードするためには、フレーム「I3」およびフレーム「P6」が必要となる。フレーム「I3」を、フレームバッファ上に保持する。フレーム「B4」がこれらフレーム「I3」および「P6」を用いてデコードされる。
一方、目標再生フレームがフレーム「P6」からフレーム「B5」に移行した場合、目標再生フレームが「P6」の状態における順方向側の隣接フレームであったフレーム「B7」は、不要となるため、破棄される。フレームバッファ上の、この破棄されたフレーム「B7」の領域に、新たにデコードされたフレーム「B4」が格納され、フレームバッファが更新される。
このように、目標再生フレームがフレーム「P6」の状態から順方向に1フレーム分進んだ場合、フレームの更新は、フレーム「B5」からフレーム「B8」への1フレーム分のみ、行われる。目標再生フレームがフレーム「P6」の状態から逆方向に1フレーム分戻された場合も、フレームの更新は、フレーム「B7」からフレーム「B4」への1フレーム分のみ、行われる。
第2の例として、目標再生フレームがBピクチャによるフレーム「B7」の場合について説明する。この場合、順方向および逆方向について1倍速以内の再生速度範囲においては、当該目標再生フレームの1フレームタイミング後に新たな目標再生フレームとなる可能性のあるフレームは、当該フレーム「B7」と、当該フレーム「B7」に対して表示順で前後に隣接するフレーム「P6」および「B8」とである。
目標再生フレームがフレーム「B7」の状態において、上述したような、目標再生フレームに基づき作成された目標フレームバッファパターンに従いデコードされたフレームがフレームバッファに格納された状態では(図11の第5行目のパターン参照)、目標再生フレーム「B7」と、その前後のフレーム「P6」およびフレーム「B8」は、それぞれ既にデコードされた状態でフレームバッファに格納されている。
この状態から目標再生フレームがフレーム「P6」またはフレーム「B8」に移行された場合、移行された目標再生フレームに対する新たな目標フレームバッファパターンに基づいて、新たに必要となるフレームをデコードされた状態でフレームバッファに格納していく。
これらのデータが格納されたフレームバッファの他の領域は、直前のデータが保持される。すなわち、図11の例では、第5行目に示されるように、目標再生フレームがフレーム「B7」のときには、フレームバッファに、当該フレーム「B7」と、当該フレーム「B7」と同じGOPに属するフレーム「I3」、フレーム「P9」およびフレーム「B8」、ならびに、当該フレーム「B7」が属するGOPに対して1つ前のGOPに属するフレーム「I3−」、フレーム「P6−」、フレーム「P9−」およびフレーム「P12−」が格納される。
この目標再生フレームがフレーム「B7」の場合、順方向に1フレーム分、目標再生フレームが移行すると、新たな目標再生フレームがフレーム「B8」になる。また、この新たな目標再生フレームに対して1フレームタイミング後にさらに新たな目標再生フレームとなる可能性があるフレームは、当該フレーム「B8」と、当該フレーム「B8」に対して表示順で前後に隣接するフレーム「B7」およびフレーム「P9」とである。
これらのうち、フレーム「B7」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B8」をデコードするためには、フレーム「P6」およびフレーム「P9」が必要となる。フレーム「P6」およびフレーム「P9」は、それぞれフレーム「B7」をデコードするために必要なフレームであるので、既にフレームバッファ上に存在している。フレーム「B8」がこれらフレーム「P6」および「P9」を用いてデコードされる。また、フレーム「P9」も、既にフレームバッファ上に存在している。
この場合には、目標再生フレームがフレーム「B7」の状態における逆方向側の表示順で隣接フレームであったフレーム「P6」は、フレーム「B8」をデコードするために用いられるため、破棄されない。さらに順方向に1フレーム、再生が進んだ際に用いられるフレーム「P12」が、フレーム「P9」を用いてデコードされる。また、バッファメモリ内に存在する最も前のGOPに属するフレームのうち、バッファメモリ内に存在し最も表示順で新しいフレームであるフレーム「P12−」を破棄し、デコードされたフレーム「P12」を格納する。
逆方向に1フレーム分、再生が戻されると、新たな目標再生フレームがフレーム「P6」となり、この新たな目標再生フレームに対して1フレームタイミング後にさらに新たな目標再生フレームとなる可能性のあるフレームは、フレーム「P6」と、フレーム「B5」およびフレーム「B7」とである。フレーム「B7」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B5」をデコードするためには、フレーム「I3」およびフレーム「P6」が必要となる。フレーム「I3」をフレームバッファ上に保持する。フレーム「B5」がこれらフレーム「I3」およびフレーム「P6」を用いてデコードされる。
一方、目標再生フレームがフレーム「B7」からフレーム「P6」に移行した場合、目標再生フレームが「B7」の状態における順方向側の隣接フレームであったフレーム「B8」は、不要となるため、破棄される。フレームバッファ上の、この破棄されたフレーム「B8」の領域に、新たにデコードされたフレーム「B5」が格納され、フレームバッファが更新される。
このように、目標再生フレームがフレーム「B7」の状態から順方向に1フレーム進んだ場合、フレームの更新は、フレーム「P12−」からフレーム「P12」への1フレーム分のみ、行われる。目標再生フレームがフレーム「B7」の状態から逆方向に1フレーム分戻された場合も、フレームの更新は、フレーム「B8」からフレーム「B5」への1フレーム分のみ、行われる。
第3の例として、目標再生フレームがIピクチャによるフレーム「I3」の場合について説明する。この場合、順方向および逆方向について1倍速以内の再生速度範囲においては、当該目標再生フレームの1フレームタイミング後に新たな目標再生フレームとなる可能性のあるフレームは、当該フレーム「I3」と、当該フレーム「I3」に対して表示順で前後に隣接するフレーム「B2」およびフレーム「B4」とである。
目標再生フレームがフレーム「I3」の状態において、上述したような、目標再生フレームに基づき作成された目標フレームバッファパターンに従いデコードされたデータがフレームバッファに格納された状態では(図11の第1行目のパターン参照)、目標再生フレーム「I3」と、その前後のフレーム「B2」およびフレーム「B4」は、それぞれ既にデコードされた状態でフレームバッファに格納されている。
この状態から目標再生フレームがフレーム「B2」またはフレーム「B4」に移行された場合、移行された目標再生フレームに対する新たな目標フレームバッファパターンに基づいて、新たに必要となるフレームをデコードされた状態でフレームバッファに格納していく。
これらのデータが格納されたフレームバッファの他の領域は、直前のデータが保持される。すなわち、図11の例では、第1行目に示されるように、目標再生フレームが「I3」のときには、フレームバッファに、当該フレーム「I3」と、当該フレーム「I3」と同じGOPに属する、フレーム「P6」、フレーム「B2」およびフレーム「B4」、ならびに、当該フレーム「I3」が属するGOPに対して1つ前のGOPに属するフレーム「I3−」、フレーム「P6−」、フレーム「P9」、フレーム「P12−」およびフレーム「P15」とが格納される。
目標再生フレームがフレーム「I3」の場合、順方向に1フレーム分、目標再生フレームが移行すると、新たな目標再生フレームがフレーム「B4」になる。また、この新たな目標再生フレームに対して1フレームタイミング後にさらに新たな目標再生フレームとなる可能性があるフレームは、当該フレーム「B4」と、当該フレームに対して表示順で前後に隣接するフレーム「I3」およびフレーム「B5」とである。
これらのうち、フレーム「I3」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B5」をデコードするためには、フレーム「I3」およびフレーム「P6」が必要となる。フレーム「P6」は、フレーム「B4」をデコードするために用いられているので、既にフレームバッファ上に存在している。フレーム「B5」がこれらフレーム「I3」および「P6」を用いてデコードされる。
この場合には、目標再生フレームが「I3」の状態における逆方向側の目標再生フレームであるフレーム「B2」は、不要となるため、破棄される。フレームバッファ上の、この破棄されるフレーム「B2」の領域にデコードされたフレーム「B5」が格納され、フレームバッファが更新される。
逆方向に1フレーム分、再生が戻されると、新たな目標再生フレームがフレーム「B2」となり、この新たな目標再生フレーム対して1フレームタイミング後に新たな目標再生フレームとなる可能性のあるフレームは、フレーム「B2」と、フレーム「B1」およびフレーム「I3」とである。フレーム「I3」は、現在の目標再生フレームであるため、既にフレームバッファ上に存在している。また、フレーム「B1」をデコードするためには、フレーム「I3」と、フレーム「I3」が属するGOPの1つ前のGOPに属するフレーム「P15−」が必要となる。フレーム「B1」がこれらフレーム「P15−」および「I3」を用いてデコードされる。
一方、目標再生フレームがフレーム「I3」からフレーム「B2」に移行した場合、目標再生フレームがフレーム「I3」の状態における順方向の隣接フレームであったフレーム「B4」は、不要となるため、破棄される。フレームバッファ上の、この破棄されたフレーム「B4」の領域に、新たにデコードされたフレーム「B1」が格納され、フレームバッファが更新される。
このように、目標再生フレームがフレーム「I3」の状態から順方向に1フレーム進んだ場合、フレームの更新は、フレーム「B2」からフレーム「B5」への1フレーム分のみ、行われる。目標再生フレームがフレーム「I3」の状態から逆方向に1フレーム分戻された場合も、フレームの更新は、フレーム「B4」からフレーム「B1」への1フレーム分のみ、行われる。
なお、上述したように、目標再生フレームが他のフレームに移行される際には、バッファメモリに格納された1フレームが破棄され、破棄されたフレーム領域に新たな1フレームがデコードされて格納され、バッファメモリが更新される。このとき、バッファメモリから破棄するフレームを、次のルールに基づき決めることができる。
(1)目標再生フレームおよび表示順で目標再生フレームに隣接するフレーム以外のBピクチャによるフレームは、破棄する。
(2)上述の(1)のルールに従い破棄するBピクチャによるフレームが存在しなかった場合、バッファメモリ上に存在する、下記(2a)または(2b)の条件を満たすIまたはPピクチャによるフレームを破棄する。
(2a)順方向への目標再生フレーム移行の場合、目標再生フレームが存在するGOPから逆方向に最も離れたGOPにおいて、そのGOPに属する最後尾のIまたはPピクチャ。
(2b)逆方向への目標再生フレーム移行の場合、目標再生フレームが存在するGOPから順方向に最も離れたGOPにおいて、そのGOPに属する最後尾のIまたはPピクチャ。
上述のようにして、バッファメモリの更新パターンに従いバッファメモリ上にデータを溜め込んでおけば、現在の目標再生フレームがIピクチャによるフレーム、PピクチャによるフレームおよびBピクチャによるフレームの何れであっても、任意の方向への1フレーム分の移動に対してバッファメモリ上で行進されるデータが1フレーム分のみで済む。したがって、順方向および逆方向の1倍速以内の可変速再生を、1倍速デコーダを用いて固定遅延で実行することができる。
なお、上述では、現在の目標再生フレームとして、GOPを構成するIピクチャ、PピクチャおよびBピクチャのそれぞれについて一例ずつ例を挙げて説明を行ったが、説明を省略した他のフレームが現在の目標再生フレームの場合でも、同様にして、任意の方向への1フレーム分の移動に対して、バッファメモリ上の1フレーム分のデータのみが更新される。
次に、この発明の実施の一形態について説明する。この発明では、目標再生フレームを基点として、そのフレームを再生するために必要なピクチャをデコードする際の優先順位をピクチャ毎に付与する。そして、現状のバッファメモリに存在せず、且つ、最もデコード優先順位の高いピクチャをデコードしてバッファメモリに格納する。
この処理を常に繰り返すことで、バッファメモリに基点となるフレームのみが格納された状態から、図11を用いて説明した、目標フレームバッファの更新パターンにより速やかに復帰することができ、順方向の1倍速再生から逆方向の1倍速再生までの可変速再生が可能な状態に迅速に移行することができる。
したがって、この発明の実施の一形態を用いることで、例えば調相制御後などに、再生速度が1倍速以上から1倍速に戻った際にも速やかに安定した再生を継続することを可能としている。
図12は、(N=15、M=3)であるロングGOPの場合において、再生方向が順方向の場合についてデコード優先順位を付与した、バッファメモリの優先順位付き更新パターンの例を示す。すなわち、図12は、上述した図11のバッファメモリの更新パターンに対してフレーム毎に優先順位を付加した例である。
図12Aは、図11に対応する、再生方向が順方向の場合のバッファメモリの優先順位付き更新パターンの一例を示す。図12Aに示される更新パターンと図11に示される更新パターンとにおいて、対応する行には、同一のフレームが含まれる。すなわち、図12Aに示される更新パターンの各行は、図11に示される更新パターンの対応する行に含まれるフレームに対して、バッファに格納される順序の優先順位を反映している。図12Aの例では、各行において、右側から左側に向けて優先順位が高くされており、左端のフレームが最も優先順位が高く、右端のフレームが最も優先順位が低い。
また、図12Bは、この図12Aのパターンに基づき、ある1フレームのみがフレームバッファに格納された状態を基点として、1倍速デコーダでデコードされたフレームがバッファメモリに格納されていく様子を示す。
なお、図12の更新パターンは、図11の例と異なり、図の上側から下側に向けた方向の順方向の再生のみに対応し、逆方向の再生に関しては、異なる更新パターンとなる。逆方向の再生に関しては、後に図17を用いて説明する。
再生方向が順方向の場合、優先順位は、高い方から低い方へ、順方向再生端のGOPから逆方向再生端のGOPに向けて設定する。また、各GOPにおいては、再生順に、先に再生されるフレームに対してより高い優先順位を設定する。また、フレームに関しては、IピクチャおよびPピクチャによるフレームは、順方向再生端のGOPから、逆方向再生端のGOPに向かうように、優先順位を設定する。一方、Bピクチャによるフレームは、目標再生フレームを含むその前後3フレーム内のBピクチャを選び、優先順位の高い方から低い方へ、目標再生フレーム、順方向側フレーム、逆方向側フレームの順番で、バッファメモリのデコード可能なバンクに挿入する。
すなわち、図11に示されるバッファメモリの更新パターンに対し、9個のバッファメモリに格納されるフレームがGOP毎に纏められ、各GOP内で、再生順に、先に再生されるフレームに対してより高い優先順位が設定され、GOPは、再生順に、後に再生されるGOPにより高い優先順位が設定されて、図12Aに示される更新パターンが作成される。目標再生フレームに対して、図12Aに示される更新パターンの対応する行に示される優先順位に従って、優先順位が高いフレームからデコードしてバッファに格納する。
一例として、目標再生フレームがフレーム「P6」である図12Aの第4行目では、カレントGOP、カレントGOPの1つ前のGOPの順に優先順位が設定され、カレントGOPにおいては、フレーム「I3」が最も優先順位が高く、以下、フレーム「P6」、フレーム「P9」、フレーム「B7」、フレーム「B5」の順に優先順位が低くなるようにされる。
すなわち、目標再生フレームがフレーム「P6」であって、バッファメモリに1つもフレームが格納されていない場合には、フレーム「I3」を最優先でデコードし、デコードされた「I3」を用いてフレーム「P6」をデコードする。また、フレーム「I3」およびフレーム「P6」が既にバッファメモリに格納されている場合は、目標再生フレームに対して順方向に隣接するフレーム「B7」をデコードするために、フレーム「P9」を優先的にデコードする。
なお、目標再生フレームがフレーム「P6」以外の他の例においても、目標再生フレームそのものまたは目標再生フレームをデコードするために用いられるフレームが優先的にデコードされ、目標再生フレームに順方向に隣接するフレームそのものまたは当該隣接フレームをデコードするために用いられるフレームが、次の優先順位で以てデコードされる。
図12Bを用いて、フレーム「I3」のみがデコードされバッファメモリに格納されている状態を基点とした場合の動作について、より具体的に説明する。
図12Aにおける第1行目の、目標再生フレームがフレーム「I3」の場合、バッファメモリに既に格納されているフレーム「I3」(図12Bの第1行目参照)が再生される。
目標再生フレームがフレーム「I3」から次のフレーム「B4」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P6」(図12Aの第2行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第2行目参照)。これにより、バッファには、フレーム「I3」およびフレーム「P6」が格納されることになる。
一方、フレーム「P6」がデコードされた段階では、目標再生フレームであるフレーム「B4」は、未だデコードできない。このような場合、バッファメモリに格納され再生可能となっているフレームのうち、目標再生フレームに対して再生順が再生方向(この場合順方向)に最も近く、且つ、目標再生フレームの再生順を超えないフレームが再生フレームとされる。図12Bの例では、フレーム「I3」がこの条件を満たしている。
目標再生フレームがフレーム「B4」から次のフレーム「B5」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P9」(図12Aの第3行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第3行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」およびフレーム「P9」が格納されることになる。
一方、フレーム「P9」がデコードされた段階では、目標再生フレームであるフレーム「B5」は、未だデコードできない。そこで、目標再生フレームに対して再生順が順方向に最も近く、且つ、目標再生フレームの再生順を超えないフレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「B5」から次のフレーム「P6」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B7」(図12Aの第4行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第4行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」およびフレーム「P9」が格納されることになる。
この目標再生フレームがフレーム「P6」の場合には、当該フレーム「P6」は、既にデコードされバッファに格納されている。そのため、このフレーム「P6」が再生フレームとされる。
目標再生フレームがフレーム「P6」から次のフレーム「B7」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B8」(図12Aの第5行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第5行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」、フレーム「B8」およびフレーム「P9」が格納されることになる。
この目標再生フレームがフレーム「B7」の場合には、当該フレーム「B7」は、既にデコードされバッファに格納されている。そのため、このフレーム「B7」が再生フレームとされる。
目標再生フレームがフレーム「B7」から次のフレーム「B8」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P12」(図12Aの第6行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第6行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」、フレーム「B8」、フレーム「P9」およびフレーム「P12」が格納されることになる。
この目標再生フレームがフレーム「B8」の場合には、当該フレーム「B8」は、既にデコードされバッファに格納されている。そのため、このフレーム「B8」が再生フレームとされる。
目標再生フレームがフレーム「B8」から次のフレーム「P9」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B10」(図12Aの第7行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第7行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」、フレーム「B8」、フレーム「P9」、フレーム「B10」およびフレーム「P12」が格納されることになる。
この目標再生フレームがフレーム「P9」の場合には、当該フレーム「P9」は、既にデコードされバッファに格納されている。そのため、このフレーム「P9」が再生フレームとされる。
目標再生フレームがフレーム「P9」から次のフレーム「B10」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B11」(図12Aの第8行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第8行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」、フレーム「B8」、フレーム「P9」、フレーム「B10」、フレーム「B11」およびフレーム「P12」が格納されることになる。
この目標再生フレームがフレーム「B10」の場合には、当該フレーム「B10」は、既にデコードされバッファに格納されている。そのため、このフレーム「B10」が再生フレームとされる。
目標再生フレームがフレーム「B10」から次のフレーム「B11」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P15」(図12Aの第9行目参照)のデコードおよびバッファへの格納が開始される(図12Bの第9行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B7」、フレーム「B8」、フレーム「P9」、フレーム「B10」、フレーム「B11」、フレーム「P12」およびフレーム「P15」が格納されることになる。
この目標再生フレームがフレーム「B11」の場合には、当該フレーム「B11」は、既にデコードされバッファに格納されている。そのため、このフレーム「B11」が再生フレームとされる。
目標再生フレームがフレーム「B11」から次のフレーム「P12」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B13」(図12Aの第10行目参照)のデコードおよびバッファへの格納が開始される。このとき、上述した第9行目の処理で、既にバッファメモリがフレームで埋められている。したがって、新たにデコードするフレームをバッファメモリに格納するためには、1フレーム分をバッファメモリから破棄する必要がある。この場合では、既に再生されたBピクチャによるフレーム「B7」が破棄される(図12Bの第10行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「B8」、フレーム「P9」、フレーム「B10」、フレーム「B11」、フレーム「P12」、フレーム「B13」およびフレーム「P15」が格納されることになる。
この目標再生フレームがフレーム「P12」の場合には、当該フレーム「P12」は、既にデコードされバッファに格納されている。そのため、このフレーム「P12」が再生フレームとされる。
目標再生フレームがフレーム「P12」から次のフレーム「B13」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B14」(図12Aの第11行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生されたBピクチャによるフレーム「B8」が破棄される(図12Bの第11行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「B10」、フレーム「B11」、フレーム「P12」、フレーム「B13」、フレーム「B14」およびフレーム「P15」が格納されることになる。
この目標再生フレームがフレーム「B13」の場合には、当該フレーム「B13」は、既にデコードされバッファに格納されている。そのため、このフレーム「B13」が再生フレームとされる。
目標再生フレームがフレーム「B13」から次のフレーム「B14」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I3+1」(図12Aの第12行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生されたBピクチャによるフレーム「B10」が破棄される(図12Bの第12行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「B11」、フレーム「P12」、フレーム「B13」、フレーム「B14」、フレーム「P15」およびフレーム「I3+1」が格納されることになる。
この目標再生フレームがフレーム「B14」の場合には、当該フレーム「B14」は、既にデコードされバッファに格納されている。そのため、このフレーム「B14」が再生フレームとされる。
目標再生フレームがフレーム「B14」から次のフレーム「P15」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B1+1」(図12Aの第13行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生されたBピクチャによるフレーム「B11」が破棄される(図12Bの第13行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「B13」、フレーム「B14」、フレーム「P15」、フレーム「B1+1」およびフレーム「I3+1」が格納されることになる。
この目標再生フレームがフレーム「P15」の場合には、当該フレーム「P15」は、既にデコードされバッファに格納されている。そのため、このフレーム「P15」が再生フレームとされる。
目標再生フレームがフレーム「P15」から次のフレーム「B1+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B2+1」(図12Aの第14行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生されたBピクチャによるフレーム「B13」が破棄される(図12Bの第14行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「B14」、フレーム「P15」、フレーム「B1+1」、フレーム「B2+1」およびフレーム「I3+1」が格納されることになる。
この目標再生フレームがフレーム「B1+1」の場合には、当該フレーム「B1+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「B1+1」が再生フレームとされる。
目標再生フレームがフレーム「B1+1」から次のフレーム「B2+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P6+1」(図12Aの第15行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生されたBピクチャによるフレーム「B14」が破棄される(図12Bの第15行目参照)。これにより、バッファには、フレーム「I3」、フレーム「P6」、フレーム「P9」、フレーム「P12」、フレーム「P15」、フレーム「B1+1」、フレーム「B2+1」、フレーム「I3+1」およびフレーム「P6+1」が格納されることになる。
この目標再生フレームがフレーム「B2+1」の場合には、当該フレーム「B2+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「B2+1」が再生フレームとされる。
この図12Bの第15行目のシーケンスで、バッファメモリに格納されるフレームが、図12Aの第15行目に示される、バッファメモリの更新パターンのフレームの格納状態と一致する。すなわち順方向の再生において、優先順位に従いデコードを行うことで、フレーム「I3」だけがデコードされた状態を基点とした場合、15フレーム目で、順方向および逆方向に1倍速以内の可変速再生が可能な状態に復帰している。
したがって、例えば、1倍速の状態に変化する位置のフレームを予めデコードしバッファメモリに格納しておくことで、再生速度が1倍速以上の状態から1倍速の状態に変化した際に、15フレーム分の期間が経過した段階で順方向および逆方向に1倍速以内の可変速再生が可能となる。これに限らず、実際に再生速度が1倍速になった時点で取得されたフレームを基点としてもよい。
また、この15フレーム期間に再生されるフレームは、「I3、I3、I3、P6、B7、B8、P9、B10、B11、P12、B13、B14、P15、B1+1、B2+1」となり、再生の時間軸に沿っている。そのため、表示画面においても、違和感の少ない表示がなされる。
なお、上述では、フレーム「I3」だけがデコードされた状態を基点として説明したが、フレーム「I3」以外が基点とされた場合にも、同様の考えに基づき、目標再生フレームに対応する優先順位付きの目標フレームバッファのパターンにおける優先順位に従ってフレームをデコードしてバッファに格納していくことで、順方向および逆方向に1倍速以内の可変速再生が可能な状態に、速やかに復帰することができる。
次に、上述したような、優先順位付きの目標フレームバッファのパターンの一例の作成方法について、図13のフローチャートを用いて説明する。また、以下では、目標とされるフレーム(カレントフレームと呼ぶ)がBピクチャによるフレームであるものとして説明する。
先ず、ステップS10で、カレントフレームが属するカレントGOPのIピクチャ(I0)を取得する。図14Aに一例が示されるように、カレントフレーム対応するピクチャから記録媒体上の順序で逆方向に向けて、Iピクチャを検索する。なお、この段階では、目標フレームバッファパターンのフレームは、一つも確定していない(図15A参照)。また、記録媒体上の各ピクチャの位置は、上述したピクチャポインタ情報に基づき得ることができる。
カレントGOPの先頭Iピクチャ(I0)が取得されると、ステップS11で、カレントフレームに対応するピクチャから記録媒体上の順序で順方向に向けて、カレントフレームより2フレーム進んだ位置以降のIピクチャまたはPピクチャ(P0)を検索する(図14B参照)。この段階では、目標フレームバッファパターンのフレームは、一つも確定していない(図15B参照)。
ステップS12で、上述したステップS10およびステップS11で取得されたピクチャ(I0)かピクチャ(P0)までIおよび/またはPピクチャを検索する。そして、検索されて得られたIおよび/またはPピクチャの、目標フレームバッファに対する格納順を、デコード順に確定する。
例えば、図14Cに一例が示されるように、ステップS10で検索されたピクチャ(I0)から記録媒体上の順序で順方向に向けて、次のPピクチャ(P)が再生方向で順方向に順次、検索される。そして、検索されたPピクチャ(P)と、ステップS10で検索されたピクチャ(I0)とを、デコードの順番に並べ替える。
この並べ替えられたIおよび/またはPピクチャが目標フレームバッファパターンに用いる、カレントGOPの優先順位付きのフレームとされる。この例では、図15Cに一例が示されるように、GOPで見た場合は、カレントGOPが最も優先順位が高くされ、カレントGOPの次のGOPである(カレント+1)GOPがその次に高い優先順位とされる。GOP内では、例えばカレントGOPの場合、カレントGOPのIピクチャによるフレーム(I)が最も優先順位が高くされ、カレントGOPのPピクチャによるフレーム(P)が次に優先順位が高くされる。Pピクチャによるフレームが複数、検索された場合には、デコード順に優先順位が設定される。このGOP内の優先順位付けは、(カレント+1)GOP内でも同様である。
次のステップS13で、カレントGOPの1つ前のGOP、すなわち、カレントGOPに対して再生方向で逆方向側に隣接する(カレント−1)GOPの先頭Iピクチャ(I-1)が検索される(図14D参照)。この段階では、目標フレームバッファパターンは、上述の図15Cの状態から変化していない。
さらに、次のステップS14で、ステップS13で検索されたピクチャ(I-1)から、(カレント−1)GOP内のIおよび/またはPピクチャが再生方向で順方向に順次、検索される(図14E参照)。そして、検索されたPピクチャと、ステップS13で検索されたIピクチャ(I-1)とを、デコードの順番に並べ替える。この並べ替えられたIおよび/またはPピクチャが目標フレームバッファパターンに用いる(カレント−1)GOPの優先順位付きのフレームとして、上述のステップS12による、カレントGOPの優先順位付きのフレームに対して追加される。
すなわち、図15Eに一例が示されるように、(カレント−1)GOPが(カレント+1)GOPよりも低い優先順位が低い位置に並べられる。(カレント−1)GOP内での優先順位付けは、カレントGOPの場合と同様である。
上述のステップS13およびステップS14の処理は、バッファメモリが埋められるまで繰り返される(ステップS15)。バッファメモリがカレントGOPおよび(カレント−1)GOPの検索されたIおよび/またはPピクチャで埋められたら(図15F参照)、処理は次のステップS16に移行される。図15Fでは、(カレント−1)GOPよりさらに1つ先の、(カレント−2)GOPが(カレント−1)GOPよりも優先順位が低い位置に並べられる。
ステップS16では、カレントフレームに対し、再生方向の逆方向に隣接するフレームから再生方向の順方向に隣接するフレームまでの、Bピクチャによるフレーム(B)が検索される(図14F参照)。検索結果は、上述のバッファメモリに確定されたIおよび/またはPピクチャの情報とは別に、保持される(図16A)。
ステップS16で検索されたフレーム(B)は、次のステップS17で、デコードの優先順に並べ替えられる。ここで、再生方向が順方向の場合、優先順位は、目標再生フレーム>順方向側フレーム>逆方向フレームの順となる。また、再生方向が逆方向の場合、優先順位は、目標再生フレーム>逆方向再生フレーム>順方向再生フレームの順となる。
上述した図14Fの状態から、再生方向が順方向および逆方向についてフレーム(B)を優先順に並べた例を、図16Bにパターン50および51としてそれぞれ示す。なお、上述の図14Fの例では、カレントフレームがBピクチャによるフレームであって、カレントフレームの再生方向で順方向側に隣接するフレームがBピクチャによるフレームではなく、逆方向に隣接するフレームがBピクチャによるフレームとなっている。そのため、再生方向が順方向の場合は、上述の優先順位に従い、パターン50に示されるように、目標再生フレーム(B)、逆方向フレーム(B−)の順に並べられる。また、再生方向が逆方向の場合も、パターン51に示されるように、順方向と同一の並びとされる。
次のステップS18では、上述のステップS15までの処理で既に確定された目標フレームバッファパターンから、ステップS16で検索されたフレーム(B)の枚数分のフレームが削除される(図16C参照)。目標フレームバッファパターンからのフレームの削除は、優先順位の低い側からなされる。
ステップS19で、再生方向に応じて、目標フレームバッファパターン内に並べられたフレームの優先順位の順番を並び替える。フレームの優先順位が並べ替えられた目標フレームバッファパターンの例を図16Dに示す。
再生方向が順方向の場合、最も順方向側のGOPが最も優先順が高くされ、逆方向側に向けて、最も逆方向側のGOPが最も優先順位が低くなるように並び替えられる。すなわち、パターン52に一例が示されるように、(カレント+1)GOPが最も優先順位が高い位置に並べられ、次に優先順位が高い位置にカレントGOPが並べられる。(カレント−1)GOPは、最も優先順位が低い位置に並べられる。
一方、再生方向が逆方向の場合、最も逆方向側のGOPが最も優先順位が高くされ、順方向に向けて、最も順方向側のGOPが最も優先順位が低くなるように並び替えられる。すなわち、パターン53に一例が示されるように、(カレント−1)GOPが最も優先順位が高い位置に並べられ、次に優先順位が高い位置にカレントGOPが並べられる。(カレント+1)GOPは、最も優先順位が低い位置に並べられる。
また、再生方向が順方向および逆方向の何れの場合においても、GOP内でのフレームの順序は、デコード順に従い、最も先にデコードされるフレームが最も優先順位の高い位置に並べられ、以降、デコード順に従い優先順位が順次、低くされる。
なお、キューアップ時などのように、目標再生フレームの出力を少しでも速く行いたい場合は、パターン54に一例が示されるように、並べ替えないという方法も考えられる。
次のステップS20で、上述のステップS17でデコード順に優先順位付けされて並べられたフレーム(B)を、目標フレームバッファパターンに対して挿入して、1行分、すなわち、ある目標再生フレームに対する目標フレームバッファパターンが確定される。
フレーム(B)は、目標フレームバッファパターンにおいて、先頭フレームからデコードしていったときに、所望のフレーム(B)がデコード可能な最初のバッファに挿入する。フレーム(B)の挿入位置の例を、図16Eに示す。
一例として、対象となるフレーム(B)が、上述した図14Fに示されるように、記録媒体上の位置で(カレント+1)GOPの先頭に配置されるフレームである場合、当該フレーム(B)は、カレントGOPの最後のフレーム(P)と、(カレント+1)GOPの先頭のフレーム(I+1)とを用いてデコードされる。
したがって、再生方向が順方向の場合、(カレント+1)GOPの先頭のフレーム(I+1)の方がカレントGOPの最後のフレーム(P)よりも優先順位が高いので、パターン55に一例が示されるように、カレントGOPの最後のフレーム(P)の後ろに、2枚のフレーム(B)が挿入される。
一方、再生方向が順方向の場合、カレントGOPの最後のフレーム(P)の方が(カレント+1)GOPの先頭のフレーム(I+1)よりも優先順位が高いので、パターン56に一例が示されるように、(カレント+1)GOPの先頭のフレーム(I+1)の後ろに、2枚のフレーム(B)が挿入される。
なお、上述したキューアップ時のような、目標再生フレームの出力を少しでも速くしたい場合も、同様である。この場合の例をパターン57に示す。(カレント+1)GOPの先頭のフレーム(I+1)の後ろに、2枚のフレーム(B)が挿入される。
なお、記録媒体上に記録されたピクチャの位置やタイプ(Iピクチャ、PピクチャおよびBピクチャ)は、図9を用いて説明したピクチャポインタファイルを参照することで知ることができる。例えばシステムやより上位のシステムから、あるフレームの再生が指示されると、CPU14は、再生を指示されたフレームを目標再生フレームとし、当該目標再生フレームが属するGOPをカレントGOPとしてピクチャポインタファイルを検索し、カレントGOPのIピクチャの位置を取得する。ピクチャポインタファイルには、上述のように、ピクチャタイプ、そのピクチャがGOPの先頭のピクチャであるか否かを示すフラグ、ピクチャのサイズ情報、先頭アドレスが記述されているので、これらの情報に基づき記録媒体上の所望のピクチャを検索することが可能となっている。
目標再生フレームに基づき目標フレームバッファパターンが確定し、確定された目標フレームバッファパターンに従いフレームバッファがデコードされたフレームで埋められると、図12を用いて説明したような動作により、再生指示に対して所定の固定遅延で、順方向および逆方向の1倍速以内の再生が行われる。
なお、ここでは、目標再生フレームがBピクチャであるものとして説明したが、上述の図13のフローチャートで説明した処理は、カレントフレームがIピクチャおよびPピクチャの場合にも同様にして適用できる。
また、システムやより上位のシステムから再生を指示されたフレームを目標再生フレームとして、上述の図13のフローチャートに従い、当該目標再生フレームに対応した目標フレームバッファパターンを作成する。この処理を、例えば目標再生フレームが指示される毎に行う。最初の目標再生フレームの指示に基づき、GOP内の全てのフレームについて作成してもよい。作成された目標フレームバッファパターンは、例えばRAM36に記憶される。
これに限らず、再生するクリップのGOPの構成が予め分かっていれば、上述の図13のフローチャートに示される処理を、GOPを構成する各ピクチャに対して行って、上述した図12のようなフレームバッファの更新パターンを予め作成しておくことも可能である。また、再生装置1において適用可能なGOPの構成が決められていれば、予め更新パターンを作成し、ROM35に記憶させておくことも可能である。
上述では、(N=15、M=3)であるロングGOPの場合において、再生方向が順方向の場合の、バッファメモリの優先順位付き更新パターンについて説明したが、この発明は、この例だけでなく、他の場合にも適用することができる。例えば、再生方向が逆方向の場合や、ロングGOPの構成が(N=15、M=3)以外の場合にも、この発明を適用することができる。以下、これら他の場合について、具体的な例を挙げて説明する。
他の場合の第1の例として、ロングGOPの構成が上述の図12を用いて説明した例と同様の(N=15、M=3)であって、再生方向が逆方向である場合について、図17を用いて説明する。図17Aは、図11に対応する、再生方向が逆方向の場合のバッファメモリの優先順位付き更新パターンの一例を示す。この図17Aの更新パターンは、上述の図13のフローチャートを用いて説明した方法に従い、作成することができる。
また、図17Bは、この図17Aのパターンに基づき、ある1フレームのみがフレームバッファに格納された状態を基点として、1倍速デコーダでデコードされたフレームがバッファメモリに格納されていく様子を示す。
なお、図17Aおよび図17Bは、図の下側から図の上側に向けた方向、すなわち、第15行目から第1行目に進む方向が逆方向の再生方向を示す。
図12Aを用いて説明した順方向の例と同様に、図17Aに示される更新パターンと図11に示される更新パターンとにおいて、対応する行には、同一のフレームが含まれる。また、各行において、右側から左側に向けて優先順位が高くされているのも、同様である。
再生方向が逆方向の場合、優先順位は、GOPについては、高い方から低い方に、逆方向再生端のGOPから順方向再生端のGOPに向けて設定する。また、各GOPについては、IおよびPピクチャによるフレームは、逆方向再生端のGOPから、順方向再生端のGOPに向かうように、優先順位を設定する。一方、Bピクチャによるフレームは、目標再生フレームを含むその前後3フレーム内のBピクチャを選び、優先順位が高い方から低い方へ、目標再生フレーム、逆方向側フレーム、順方向側フレームの順番で、バッファメモリのデコード可能なバンクに挿入する。
一例として、目標再生フレームがフレーム「P6」である図17Aの第4行目では、カレントGOPの1つ前のGOP、カレントGOPの順に優先順位が設定され、カレントGOPの1つ前のGOPにおいては、フレーム「I3-1」が最も優先順位が高く、以下、フレーム「P6-1」、フレーム「P9-1」、フレーム「P12-1」の順に優先順位が低くなるようにされる。また、カレントGOPにおいては、フレーム「I3」が最も優先順位が高く、以下、フレーム「P6」、フレーム「B5」、フレーム「P9」、フレーム「B7」の順に優先順位が低くなるようにされる。
すなわち、目標再生フレームがフレーム「P6」であって、バッファメモリに1つもフレームが格納されていない場合には、カレントGOPの1つ前のGOPのフレーム「I3-1」を最優先でデコードし、デコードされたフレーム「I3-1」を用いてフレーム「P6-1」をデコードし、以下、カレントGOPの1つ前のGOPのPピクチャによるフレームを順次、デコードする。そして、次に、カレントGOPのフレーム「I3」をデコードし、フレーム「I3」を用いてフレーム「P6」をデコードする。
また、目標再生フレームがフレーム「P」であって、バッファメモリにフレーム「I3-1」〜フレーム「P6」までが既にバッファメモリに格納されている場合には、目標再生フレームのフレーム「P6」に隣接するBピクチャによるフレームのうち、逆方向側のフレーム「B5」が優先的にデコードされる。
図17Bを用いて、フレーム「I3」のみがデコードされバッファメモリに格納されている状態を基点とした場合の動作について、より具体的に説明する。
図17Aにおける第15行目の、目標再生フレームがフレーム「B2+1」の場合、最も優先順位の高いフレーム「I3」は、既にデコードされバッファに格納されている。この場合、再生可能なフレームがフレーム「I3」なので、このフレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「B2+1」からフレーム「B1+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I3-1」(図17Aの第14行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第14行目参照)。これにより、バッファには、フレーム「I3」およびフレーム「I3-1」が格納されることになる。
一方、フレーム「I3-1」がデコードされた段階では、目標再生フレームであるフレーム「B1+1」は、未だデコードできない。このようなばあい、バッファメモリに格納され再生可能となっているフレームのうち、目標再生フレームに対して再生順が再生方向(この場合逆方向)に最も近く、且つ、目標再生フレームの再生順を超えないフレームが再生フレームとされる。しかしながら、この図17Bの第14行目では、目標再生フレームに対して再生順が逆方向の位置にあるフレームが存在しない。そのため、ここでは、フレーム「I3」が再生フレームとされる。
なお、新たにデコードされるフレームは、デコードされつつバッファに格納されるため、実際には、再生できない。図17Bの例では、矢印が付されたフレームがこれに相当する。例えば、上述の図17Bの第14行目では、フレーム「I3-1」は、実際にはこのタイミングでは再生できないフレームとなる。
目標再生フレームがフレーム「B1+1」からフレーム「P15」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P6」(図17Aの第13行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第13行目)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」およびフレーム「P6」が格納されることになる。
一方、フレーム「P6」がデコードされた段階では、目標再生フレームであるフレーム「P15」は、未だデコードできない。また、このとき、目標再生フレームに対して再生方向が逆方向に位置するフレームがバッファメモリ中に存在しない。そのため、ここでは、フレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「P15」からフレーム「B14」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P9」(図17Aの第12行目)のデコードおよびバッファへの格納が開始される(図17Bの第12行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」およびフレーム「P9」が格納されることになる。
一方、フレーム「P9」がデコードされた段階では、目標再生フレームであるフレーム「B14」は、未だデコードできない。また、このとき、目標再生フレームに対して再生方向が逆方向に位置するフレームがバッファメモリ中に存在しない。そのため、ここでは、フレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「B14」からフレーム「B13」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P6-1」(図17Aの第11行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第11行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」およびフレーム「P6-1」が格納されることになる。
一方、フレーム「P6-1」がデコードされた段階では、目標再生フレームであるフレーム「B14」は、未だデコードできない。また、このとき、目標再生フレームに対して再生方向が逆方向に位置するフレームがバッファメモリ中に存在しない。そのため、ここでは、フレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「B13」からフレーム「P12」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P12」(図17Aの第10行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第10行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」およびフレーム「P12」が格納されることになる。
一方、この図17Bの第10行目において、フレーム「P12」は、デコードされつつバッファに格納されるため、実際には、このタイミングでは再生できない。また、このとき、目標再生フレームに対して再生方向が逆方向に位置するフレームがバッファメモリ中に存在しない。そのため、ここでは、フレーム「I3」が再生フレームとされる。
目標再生フレームがフレーム「P12」からフレーム「B11」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B11」(図17Aの第9行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第9行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」、フレーム「P12」およびフレーム「B11」が格納されることになる。
一方、この図17Bの第9行目において、フレーム「B11」は、デコードされつつバッファに格納されるため、実際には、このタイミングでは再生できない。そこで、目標再生フレームに対して再生順が逆方向に最も近く、且つ、目標再生フレームの再生順を超えないフレーム「P12」が再生フレームとされる。
目標再生フレームがフレーム「B11」からフレーム「B10」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P9-1」(図17Aの第8行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第8行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」、フレーム「P12」、フレーム「B11」およびフレーム「P9-1」が格納されることになる。
一方、この図17Bの第8行目において、フレーム「B10」は、デコードされつつバッファに格納されるため、実際には、このタイミングでは再生できない。そこで、目標再生フレームに対して再生順が逆方向に最も近く、且つ、目標再生フレームの再生順を超えないフレーム「B11」が再生フレームとされる。
目標再生フレームがフレーム「B10」からフレーム「P9」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B8」(図17Aの第7行目参照)のデコードおよびバッファへの格納が開始される(図17Bの第7行目参照)。これにより、バッファには、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」、フレーム「P12」、フレーム「B11」、フレーム「P9-1」およびフレーム「B8」が格納されることになる。
この目標再生フレームがフレーム「P9」の場合には、当該フレーム「P9」は、既にデコードされバッファに格納されている。そのため、このフレーム「P9」が再生フレームとされる。
目標再生フレームがフレーム「P9」からフレーム「B8」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「B7」(図17Aの第6行目参照)のデコードおよびバッファへの格納が開始されると共に、最も優先順位が低いとされたフレーム「P12」が破棄される(図17Bの第6行目参照)。これにより、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」、フレーム「B7」、フレーム「B11」、フレーム「P9-1」およびフレーム「B8」が格納されることになる。
この目標再生フレームがフレーム「B8」の場合には、フレーム「B8」は、既にデコードされバッファに格納されている。そのため、このフレーム「B8」が再生フレームとされる。
目標再生フレームがフレーム「B8」からフレーム「B7」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P12-1」(図17Aの第5行目参照)のデコードおよびバッファへの格納が開始されると共に、既に再生され、且つ、優先順位も低いBピクチャによるフレーム「B11」が破棄される(図17Bの第5行目参照)。これにより、フレーム「I3」、フレーム「I3-1」、フレーム「P6」、フレーム「P9」、フレーム「P6-1」、フレーム「B7」、フレーム「P12-1」、フレーム「P9-1」およびフレーム「B8」が格納されることになる。
この図17Bの第5行目のシーケンスで、バッファメモリに格納されるフレームが、図17Aの第5行目に示される、バッファメモリの更新パターンのフレームの格納状態と一致する。すなわち、逆方向の再生において、優先順位に従いデコードを行うことで、フレーム「I3」だけがデコードされた状態を基点とした場合、11フレーム目で、順方向および逆方向に1倍速以内の可変速再生が可能な状態に復帰している。
したがって、例えば、再生速度が1倍速以上の状態から1倍速に変化した際に、フレーム「I3」だけがデコードされバッファメモリに格納された状態になっていれば、11フレーム分の期間が経過した段階で順方向および逆方向に1倍速以内の可変速再生が可能となる。
また、この11フレーム期間に再生されるフレームは、「I3、I3、I3、I3、I3、I3、P12、B11、P9、B8、B7」となり、最初、フレーム「I3」が6フレーム期間で連続して現れ静止画として表示された後の表示は、再生方向の時間軸に沿っている。そのため、表示画面においても、違和感の少ない表示が可能である。
以降、図17Bの第4行目〜第1行目の処理は、目標再生フレームが移行する度に、バッファメモリに格納された所定のフレームが破棄されると共に、バッファメモリに格納されていないフレームのうち最も優先順位の高いフレームがデコードされ、フレームが破棄された位置にデコードされたフレームが格納される処理が繰り返されることになる。
次に、他の場合の第2および第3の例として、ロングGOPの構成が(N=5)である場合について説明する。この場合、GOPは、1枚のIピクチャと4枚のPピクチャとから構成され、Bピクチャが用いられない。この例では、GOP内のピクチャの順序は、記録媒体上および出力順で共通の、「I1、P2、P3、P4、P5」とされる。
先ず、他の場合の第2の例として、(N=5)であるロングGOPの場合の目標フレームバッファの一例の更新パターンについて、図18を用いて説明する。この場合、図10Cを用いて説明した式(N/M+M+1)によれば、N=7、M=1としてN/M+M+1=7となり、バッファメモリは、少なくとも7フレーム分の容量が必要となる。以下では、(N=5)であるロングGOPにおいて、上述と同様の9フレーム分が格納可能なバッファメモリを用いるものとして説明する。
この(N=5)の場合も、図11を用いて説明した(N=15、M=3)の場合と同様の考え基づき更新パターンを作成することができる。すなわち、この(N=5)の場合でも、図18中の各行に示されるように、目標再生フレームに対応したフレームがフレームバッファに格納された状態で、目標再生フレームを任意の方向に1フレームずつ移動させた場合に、更新されるフレームをそれぞれ1フレーム分とし、順方向および逆方向の1倍速以内の可変速再生を、1倍速デコーダを用いて行うことができるようにしている。
なお、図18中で用いられる記号等の意味は、上述した図11などで用いられる記号等と同様である。また、この図18の更新パターンは、図の上側から下側に向けた方向が順方向の再生を示し、下側から上側に向けた方向が逆方向の再生を示す。さらに、この図18の更新パターンは、循環的とされる。
上述した図11の例と同様に、図18の更新パターンの各行において、その行に対応する目標再生フレームと、当該目標再生フレームに対して再生方向で順方向および逆方向にそれぞれ隣接するフレームが、当該目標再生フレームと共にフレームバッファに格納されるべきフレームとされる。それと共に、当該目標再生フレームに対して順方向および逆方向に隣接するフレームにさらに隣接するフレームをデコードするために必要なフレームが、当該目標再生フレームと共にフレームバッファに格納されるべきフレームとされる。また、目標再生フレームが隣接する行の間において、更新フレームが1フレームのみとなるようにされる。
図18を参照して、目標再生フレームがフレーム「I1」のとき(第1行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P2-1」、フレーム「P3-1」、フレーム「P4-1」、フレーム「P5-1」およびフレーム「I1-2」とされる。後述する目標再生フレームがフレームP5+2」のパターンに対して、フレーム「P2-2」がフレーム「P3」に更新されている。
なお、後述する第15行目からこの第1行目のパターンに戻る場合、この図18の例では、フレーム「P5+2」の次の目標再生フレームがフレーム「I1」となる。したがって、この図18に示される15個のパターンを循環的に考える際には、例えば第15行目のGOPを再生順に3GOP分戻したGOPに置き換える。
目標再生フレームがフレーム「P2」のとき(第2行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P2-1」、フレーム「P3-1」、フレーム「P4-1」、フレーム「P5-1」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「I1」のパターンに対して、フレーム「I2-2」がフレーム「P4」に更新されている。
目標再生フレームがフレーム「P3」のとき(第3行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P2-1」、フレーム「P3-1」、フレーム「P4-1」、フレーム「P5」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「P2」のパターンに対して、フレーム「P5-1」がフレーム「P5」に更新されている。
目標再生フレームがフレーム「P4」のとき(第4行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P2-1」、フレーム「P3-1」、フレーム「I1+1」、フレーム「P5」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「P3」のパターンに対して、フレーム「P4-1」がフレーム「I1+1」に更新されている。
目標再生フレームがフレーム「P5」のとき(第5行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P2-1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「P4」のパターンに対して、フレーム「P3-1」がフレーム「P2+1」に更新されている。
目標再生フレームがフレーム「I1+1」のとき(第6行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1-1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「P5」のパターンに対して、フレーム「P2-1」がフレーム「P3+1」に更新されている。
目標再生フレームがフレーム「P2+1」のとき(第7行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「I1+1」のパターンに対して、フレーム「I1-1」がフレーム「P4+1」に更新されている。
目標再生フレームがフレーム「P3+1」のとき(第8行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+1」およびフレーム「P4」とされる。上述の目標再生フレームがフレーム「P2+1」のパターンに対して、フレーム「P5」がフレーム「P5+1」に更新されている。
目標再生フレームがフレーム「P4+1」のとき(第9行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+1」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P3+1」のパターンに対して、フレーム「P4」がフレーム「I1+2」に更新されている。
目標再生フレームがフレーム「P5+1」のとき(第10行目)のパターンは、フレーム「I1」、フレーム「P2」、フレーム「P2+2」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+1」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P4+1」のパターンに対して、フレーム「P3」がフレーム「P2+2」に更新されている。
目標再生フレームがフレーム「I1+2」のとき(第11行目)のパターンは、フレーム「I1」、フレーム「P3+2」、フレーム「P2+2」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+1」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P5+1」のパターンに対して、フレーム「P2」がフレーム「P3+2」に更新されている。
目標再生フレームがフレーム「P2+2」のとき(第12行目)のパターンは、フレーム「P4+2」、フレーム「P3+2」、フレーム「P2+2」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+1」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「I2+2」のパターンに対して、フレーム「I1」がフレーム「P4+2」に更新されている。
目標再生フレームがフレーム「P3+2」のとき(第13行目)のパターンは、フレーム「P4+2」、フレーム「P3+2」、フレーム「P2+2」、フレーム「P4+1」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+2」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P2+2」のパターンに対して、フレーム「P5+1」がフレーム「P5+2」に更新されている。
目標再生フレームがフレーム「P4+2」のとき(第14行目)のパターンは、フレーム「P4+2」、フレーム「P3+2」、フレーム「P2+2」、フレーム「I1+3」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+2」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P3+2」のパターンに対して、フレーム「P4+1」がフレーム「I1+3」に更新されている。
目標再生フレームがフレーム「P4+2」のとき(第14行目)のパターンは、フレーム「P4+2」、フレーム「P3+2」、フレーム「P2+2」、フレーム「I1+3」、フレーム「P3+1」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+2」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P3+2」のパターンに対して、フレーム「P4+1」がフレーム「I1+3」に更新されている。
目標再生フレームがフレーム「P5+2」のとき(第15行目)のパターンは、フレーム「P4+2」、フレーム「P3+2」、フレーム「P2+2」、フレーム「I1+3」、フレーム「P2+3」、フレーム「P2+1」、フレーム「I1+1」、フレーム「P5+2」およびフレーム「I1+2」とされる。上述の目標再生フレームがフレーム「P4+2」のパターンに対して、フレーム「P3+1」がフレーム「P2+3」に更新されている。
このように、図18に一例を示すフレームバッファの更新パターンでは、上述した図11の例と同様に、各フレーム毎の更新パターン間で、1フレーム分のみが更新されるようになっている。
第6行目の、目標再生フレームがフレーム「I1+1」の場合を例にとって説明する。この場合、先ず、目標再生フレーム「I1+1」と再生順で順方向および逆方向にそれぞれ隣接するフレームであるフレーム「P2+1」およびフレーム「P5」がフレームバッファに格納されるべきフレームとされる。
また、目標再生フレームに対して順方向に1フレーム分、再生が進んだ際に再生が継続できるように、目標再生フレーム「I1+1」の順方向の隣接フレーム「P2+1」に対して、順方向および逆方向にそれぞれ隣接するフレームがフレームバッファに格納されるべきフレームとされる。逆方向に隣接するフレームは、現在の目標再生フレーム「I1+1」であって、順方向に隣接するフレームは、フレーム「P3+1」である。
目標再生フレームの逆方向に隣接するフレームに対しても同様にして、当該フレームの順方向および逆方向に隣接するフレームがフレームバッファに格納されるべきフレームとされる。順方向に隣接するフレームは、現在の目標再生フレーム「I1+1」であって、逆方向に隣接するフレームは、フレーム「P5」となる。ここで、フレーム「P5」をデコードするためには、フレーム「P4」、フレーム「P3」、フレーム「P2」およびフレーム「I1」が必要とされるので、これらのフレームも、フレームバッファに格納されるべきフレームとされる。
このように、目標再生フレームがフレーム「I1+1」の場合には、順方向に対してフレーム「P2」およびフレーム「P3」が、逆方向に対してフレーム「P5」、フレーム「P4」、フレーム「P3」、フレーム「P2」およびフレーム「I1」が、それぞれフレームバッファに格納されるべきフレームとされる。
次に、上述した、(N=5)であって、ピクチャの構成が「I1、P2、P3、P4、P5」であるロングGOPの場合において、バッファメモリの更新パターンに対してデコードする際の優先順位をピクチャ毎に付与した例について説明する。
先ず、図19を用いて、再生方向が順方向の場合について説明する。図19Aは、上述した図18のバッファメモリの更新パターンに対して、再生方向が順方向の場合に対応して、フレーム毎に優先順位を付加して並べ替えたものである。
この図19Aおよび後述する図20Aに示されるバッファメモリの優先順位付き更新パターンは、図13〜図16を用いて既に説明した方法により、作成されるものである。したがって、目標再生フレームそのものまたは目標再生フレームをデコードするために用いられるフレームが優先的にデコードされ、目標再生フレームに順方向に隣接するフレームそのものまたは当該隣接フレームをデコードするために用いられるフレームが、次の優先順位で以てデコードされるように、各更新パターンにおいて優先順位が付与される。
図19Bは、(N=5)であって、ピクチャの構成が「I1、P2、P3、P4、P5」であるロングGOPの場合において、フレーム「I1」のみがデコードされバッファメモリに格納された状態を基点として、1倍速デコーダでデコードされたフレームがバッファメモリに格納されていく様子を示す。
目標再生フレームがフレーム「I1」の場合(図19Aにおける第1行目参照)、バッファメモリに既に格納されているフレーム「I1」(図19Bの第1行目参照)が再生される。
目標再生フレームがフレーム「I1」からフレーム「P2」に移行すると、バッファに格納されていないフレームの内最も優先順位の高いフレーム「P2」(図19Aの第2行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第2行目参照)。これにより、バッファには、フレーム「I1」およびフレーム「P2」が格納されることになる。
ここで、上述もしたが、新たにデコードされるフレームは、デコードされつつバッファメモリに格納されるため、実際にはそのタイミングでは再生できない。図19Bにおいて矢印が付されたフレームがこれに相当する。例えば、図19Bの第2行目に示されるフレーム「P2」は、実際にはこのタイミングでは再生できないフレームとなる。そこで、この場合には、既にデコードされてバッファメモリに格納され、且つ、目標再生フレームを再生順で越えずに最も時間的に近いフレーム「I1」が再生フレームとされる。
目標再生フレームがフレーム「P2」から次のフレーム「P3」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P3」(図19Aの第3行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第3行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」およびフレーム「P3」が格納されることになる。
このとき、上述と同様に、フレーム「P3」は、デコードされつつバッファに格納されるため、このタイミングでは再生できない。そのため、既にデコードされバッファメモリに格納され、且つ、目標再生フレーム「P3」を再生順で越えずに最も時間的に近いフレーム「P2」が再生フレームとされる。
目標再生フレームがフレーム「P3」からフレーム「P4」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I1+1」(図19Aの第4行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第4行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」およびフレーム「I1+1」が格納されることになる。
このとき、目標再生フレームであるフレーム「P4」は、未だデコードされていないので、既にデコードされてバッファメモリに格納され、且つ、目標再生フレームを再生順で越えずに最も時間的に近いフレーム「P3」が再生フレームとされる。
目標再生フレームがフレーム「P4」からフレーム「P5」に移行すると、バッファメモリに格納されていないフレームのうち最も優先順位の高いフレーム「P2+1」(図19Aの第5行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第5行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1+1」およびフレーム「P2+1」が格納されることになる。
このとき、目標再生フレームであるフレーム「P5」は、未だデコードされていないので、既にデコードされてバッファメモリに格納され、且つ、目標再生フレームを再生順で越えずに最も時間的に近いフレーム「P3」が再生フレームとされる。
目標再生フレームがフレーム「P5」からフレーム「I1+1」に移行すると、バッファメモリに格納されていないフレームのうち最も優先順位の高いフレーム「P3+1」(図19Aの第6行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第6行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1+1」、フレーム「P2+1」およびフレーム「P3+1」が格納されることになる。
この目標再生フレームがフレーム「I1+1」の場合には、当該フレーム「I1+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「I1+1」が再生フレームとされる。
目標再生フレームがフレーム「I1+1」からフレーム「P2+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P4+1」(図19Aの第7行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第7行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」およびフレーム「P4+1」が格納されることになる。
この目標再生フレームがフレーム「P2+1」の場合には、当該フレーム「P2+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「P2+1」が再生フレームとされる。
目標再生フレームがフレーム「P2+1」からフレーム「P3+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P5+1」(図19Aの第8行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第8行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「P4+1」およびフレーム「P5+1」が格納されることになる。
この目標再生フレームがフレーム「P3+1」の場合には、当該フレーム「P3+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「P3+1」が再生フレームとされる。
目標再生フレームがフレーム「P3+1」からフレーム「P4+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I2+2」(図19Aの第9行目参照)のデコードおよびバッファメモリへの格納が開始される(図19Bの第9行目参照)。これにより、バッファには、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「P4+1」、フレーム「P5+1」およびフレーム「I1+2」が格納されることになる。
この目標再生フレームがフレーム「P4+1」の場合には、当該フレーム「P4+1」は、既にデコードされバッファに格納されている。そのため、このフレーム「P4+1」が再生フレームとされる。
この図19Bの第9行目のシーケンスで、バッファメモリに格納されるフレームが、図19Aの第9行目に示される、バッファメモリの更新パターンのフレームの格納状態と一致する。すなわち、(N=5)であって、ピクチャの構成が「I1、P2、P3、P4、P5」であるロングGOPの場合に、順方向の再生において、優先順位に従いデコードを行うことで、フレーム「I1」だけがデコードされた状態を基点とした場合、9フレーム目で、順方向および逆方向に1倍速以内の可変速再生が可能な状態に復帰している。
したがって、例えば、再生速度が1倍速以上の状態から1倍速に変化した際に、フレーム「I1」だけがデコードされバッファメモリに格納された状態になっていれば、9フレーム分の期間が経過した段階で順方向および逆方向に1倍速以内の可変速再生が可能となる。
また、この9フレーム期間に再生されるフレームは、「I1、I1、P2、P3、P3、I1+1、P2+1、P3+1、P4+1」となり、再生の時間軸に沿っている。そのため、表示画面においても、違和感の少ない表示がなされる。
以降、図19Bの第10行目〜第15行目の処理は、目標再生フレームが移行する度に、バッファメモリに格納された所定のフレームが破棄されると共に、バッファメモリに格納されていないフレームのうち最も優先順位の高いフレームがデコードされ、フレームが破棄された位置にデコードされたフレームが格納される処理が繰り返されることになる。
次に、(N=5)であって、ピクチャの構成が「I1、P2、P3、P4、P5」であるロングGOPの場合における、再生方向が逆方向の場合について、図20を用いて説明する。なお、図20は、図の下側から図の上側に向けた方向、すなわち、第15行目から第1行目に進む方向が逆方向の再生方向を示す。
図20Aは、上述した図18のバッファメモリの更新パターンに対して、再生方向が逆方向の場合に対応して、フレーム毎に優先順位を付加して並べ替えたものである。また、図20Bは、この図20Aのパターンに基づき、フレーム「I1+2」のみがデコードされバッファメモリに格納されている状態が基点として、1倍速デコーダでデコードされたフレームがバッファメモリに格納される様子を示す。
図20Aにおける第15行目の、目標再生フレームがフレーム「P5+2」の場合、バッファメモリにはフレーム「I1+2」しか格納されていない。この場合、デコードされバッファに既に格納されているフレーム「I1+2」が再生される。
目標再生フレームがフレーム「P5+2」からフレーム「P4+2」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I1+1」(図20Aの第14行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第14行目参照)。これにより、バッファには、フレーム「I1+2」およびフレーム「I1+1」が格納されることになる。
一方、フレーム「I1+1」がデコードされた段階では、目標再生フレームであるフレーム「P4+2」は、未だデコードできない。このような場合、バッファメモリに格納され再生可能となっているフレームのうち、目標再生フレームに対して再生順が再生方向(この場合逆方向)に最も近く、且つ、目標再生フレームの再生順を超えないフレームが再生フレームとされる。しかしながら、この図20Bの第14行目の状態では、この条件を満たすフレームがバッファメモリ上に存在しない。そのため、ここでは、フレーム「I1+2」が再生フレームとされる。
目標再生フレームがフレーム「P4+2」からフレーム「P3+2」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P2+1」(図20Aの第13行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第13行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」およびフレーム「P2+1」が格納されることになる。
一方、フレーム「P2+1」がデコードされた段階では、目標再生フレームであるフレーム「P3+2」は、未だデコードできない。また、この図20Bの第13行目の状態では、目標再生フレームに対して再生順が再生方向に最も近く、且つ、目標再生フレームの再生順を越えないフレームがバッファメモリ上に存在しない。そのため、ここでは、フレーム「I1+2」が再生フレームとされる。
目標再生フレームがフレーム「P3+2」からフレーム「P2+2」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P3+1」(図20Aの第12行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第12行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」およびフレーム「P3+1」が格納されることになる。
一方、フレーム「P3+1」がデコードされた段階では、目標再生フレームであるフレーム「P2+2」は、未だデコードできない。また、この図20Bの第12行目の状態では、目標再生フレームに対して再生順が再生方向に最も近く、且つ、目標再生フレームの再生順を越えないフレームがバッファメモリ上に存在しない。そのため、ここでは、フレーム「I1+2」が再生フレームとされる。
目標フレームがフレーム「P2+2」からフレーム「I1+2」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I1」(図20Aの第11行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第11行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」およびフレーム「I1」が格納されることになる。
この図20Aにおける第11行目の、目標再生フレームがフレーム「I1+2」の場合、当該目標再生フレーム「I1+2」は、既にデコードされ、バッファに格納されている。そのため、このフレーム「I1+1」が再生フレームとされる。
目標再生フレームがフレーム「I1+2」からフレーム「P5+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P2」(図20Aの第10行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第10行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「I1」およびフレーム「P2」が格納されることになる。
一方、フレーム「P2」がデコードされた段階では、目標再生フレームであるフレーム「P5+1」は、未だデコードできない。ここで、バッファメモリに格納され再生可能となっているフレームのうち、目標再生フレームに対して再生順が再生方向に最も近く、且つ、目標再生フレームの再生順を越えないフレームは、フレーム「I1+2」となる。したがって、このフレーム「I1+2」が再生フレームとされる。
目標再生フレームがフレーム「P5+1」からフレーム「P4+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P3」(図20Aの第9行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第9行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「I1」、フレーム「P2」およびフレーム「P3」が格納されることになる。
一方、フレーム「P3」がデコードされた段階では、目標再生フレームであるフレーム「P4+1」は、未だデコードできない。ここで、バッファメモリに格納され再生可能となっているフレームのうち、目標再生フレームに対して再生順が再生方向に最も近く、且つ、目標再生フレームの再生順を越えないフレームは、フレーム「I1+2」となる。したがって、このフレーム「I1+2」が再生フレームとされる。
目標再生フレームがフレーム「P4+1」からフレーム「P3+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P4」(図20Aの第8行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第8行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「I1」、フレーム「P2」、フレーム「P3」およびフレーム「P4」が格納されることになる。
この図20Aにおける第8行目の、目標再生フレームがフレーム「P3+1」の場合、当該目標再生フレーム「P3+1」は、既にデコードされ、バッファに格納されている。そのため、このフレーム「P3+1」が再生フレームとされる。
目標再生フレームがフレーム「P3+1」からフレーム「P2+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「P5」(図20Aの第7行目参照)のデコードおよびバッファメモリへの格納が開始される(図20Bの第7行目参照)。これにより、バッファには、フレーム「I1+2」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「P4」およびフレーム「P5」が格納されることになる。
この図20Aにおける第7行目の、目標再生フレームがフレーム「P2+1」の場合、当該目標再生フレーム「P2+1」は、既にデコードされ、バッファに格納されている。そのため、このフレーム「P2+1」が再生フレームとされる。
目標再生フレームがフレーム「P2+1」からフレーム「I1+1」に移行すると、バッファに格納されていないフレームのうち最も優先順位の高いフレーム「I1-1」(図20Aの第6行目参照)がデコードされ、バッファメモリに格納される(図20Bの第6行目参照)。
ここで、上述の第7行目の状態において、既にバッファメモリはフレームメモリで埋まっているので、バッファメモリに格納されているフレームのうち少なくとも何れか1つを破棄する必要がある。例えば、目標再生フレームに対して再生方向と逆方向(この場合は再生方向で順方向)の位置にあり、且つ、目標再生フレームと時間的に最も遠い位置にあるフレームが破棄される。この例では、フレーム「I1+2」が破棄される。
これにより、バッファには、フレーム「I1+1」、フレーム「I1+1」、フレーム「P2+1」、フレーム「P3+1」、フレーム「I1」、フレーム「P2」、フレーム「P3」、フレーム「P4」およびフレーム「P5」が格納されることになる。
この図20Aにおける第7行目の、目標再生フレームがフレーム「P2+1」の場合、当該目標再生フレーム「P2+1」は、既にデコードされ、バッファに格納されている。そのため、このフレーム「P2+1」が再生フレームとされる。
この図20Bの第6行目のシーケンスで、バッファメモリに格納されるフレームが、図20Aの第6行目に示される、バッファメモリの更新パターンと一致する。すなわち、(N=5)であって、ピクチャの構成が「I1、P2、P3、P4、P5」であるロングGOPで、逆方向の再生において、優先順位に従いデコードを行うことで、フレーム「I1+2」だけがデコードされた状態を基点とした場合、10フレーム目で、順方向および逆方向に1倍速以内の可変速再生が可能な状態に復帰している。
したがって、例えば、再生速度が1倍速以上の状態から1倍速に変化した際に、フレーム「I1+2」だけがデコードされバッファメモリに格納された状態になっていれば、10フレーム分の期間が経過した段階で順方向および逆方向に1倍速以内の可変速再生が可能となる。
また、この10フレーム期間に再生されるフレームは、「I1+2、I1+2、I1+2、I1+2、I1+2、I1+2、I1+2、P3+1、P2+1、I1+1」となり、再生の時間軸に沿っている。そのため、表示画面においても、違和感の少ない表示がなされる。
以降、図20Bの第5行目〜第1行目の処理は、目標再生フレームが移行する度に、バッファメモリに格納された所定のフレームが破棄されると共に、バッファメモリに格納されていないフレームのうち最も優先順位の高いフレームがデコードされ、フレームが破棄された位置にデコードされたフレームが格納される処理が繰り返されることになる。
次に、優先順位付きのフレームバッファの更新パターンに基づく再生制御動作について説明する。再生制御は、フレームタイミングで同期を取られて、フレーム毎に順次、行われる。図21は、この発明の実施の一形態に適用可能な同期制御を概略的に示す。この図21の例では、3フレームを周期として、1フレーム分のビデオデータのデコードが行われると共に、このデコードに同期して、フレームバッファ上の1フレーム分のビデオデータが出力される。
先ず、第1フレーム目では、現在フレームバッファに格納されているフレームの情報であって、CPU14により取得されるフレームバッファ情報と、ディスクドライブ11におけるリード情報と、目標速度情報とから、目標再生フレームが確定される(ステップS20)。リード情報は、光ディスク10から既に読み出され、ディスクドライブ11のキャッシュメモリ12に溜め込まれているピクチャの情報である。また、目標速度情報は、操作部15に対する操作や、より上位のアプリケーションなどからのコマンドにより、CPU14に対して供給される、再生速度および方向を示す情報である。
目標再生フレームが確定されると、デコーダ22に転送するピクチャが確定される(ステップS21)。すなわち、図12A、図17A、図19Aおよび図20Aを用いて説明した、デコード優先順位付きのフレームバッファの更新パターン、再生方向および現在のフレームバッファの状態に基づき、目標再生フレームの確定に伴いデコードすべきピクチャが確定される。
例えば、再生方向が順方向である図12Aの第4行目の例でいうと、現在の目標再生フレーム「P6」に対して、新たな目標再生フレームがフレーム「B7」に確定される。また、現在のフレームバッファに対するフレームの格納状態が取得され、取得された状態と、新たな目標再生フレーム「B7」に対応するデコード優先順位付きのフレームバッファの更新パターンとが比較される。そして、新たな目標再生フレーム「B7」に対応するデコード優先順位付きのフレームバッファの更新パターンに基づき、現在フレームバッファに格納されていないフレームのうち最も優先順位が高いフレームがデコードするフレームとして確定される。
図12Aの例では、現在のバッファメモリは、第4行目に示されるようにフレーム「I3」、フレーム「P6」、フレーム「P9」およびフレーム「B7」が格納された状態となっている。これに対して、現在フレームバッファに格納されていないフレームのうち、新たな目標再生フレーム「B7」に対応するデコード優先順位付きのフレームバッファの更新パターン(図12Aの第5行目参照)において最も優先順位が高いフレーム「B8」がデコードするフレームとして確定される。
また例えば、再生方向が逆方向である図17Aの第12行目の例でいうと、現在の目標再生フレーム「B14」に対して、新たな目標再生フレームがフレーム「B13」に確定される。一方、現在のバッファメモリは、第12行目に示されるようにフレーム「I3」、フレーム「I3-1」、フレーム「P6」およびフレーム「P9」が格納された状態となっている。これに対して、現在フレームバッファに格納されていないフレームのうち、新たな目標再生フレーム「B13」に対応するデコード優先順位付きのフレームバッファの更新パターン(図17Aの第11行目参照)において最も優先順位が高いフレーム「P6-1」がデコードするフレームとして確定される。
ステップS21で転送するピクチャが確定されると、次の第2フレーム目のタイミングで、当該ピクチャがデコーダ22に対して転送される(ステップS22)。例えば、CPU14は、ディスクドライブ11に対して、転送が確定されたピクチャを光ディスク10から読み出すように要求する。この要求に応じて、ディスクドライブ11により、光ディスク10からピクチャが読み出される。読み出されたピクチャがデコーダ22に転送される。
なお、実際には、転送が確定されたピクチャの転送は、上述したように、ディスクドライブ11が有するキャッシュメモリ12に対してアクセスされてなされ、キャッシュメモリ12からデコーダ22に対して、DMA(Direct Memory Access)転送によりCPU14を介さないで行われる。
ディスクドライブ11からデコーダ22へのピクチャの転送は、次の第2フレーム目のタイミングに同期して行われる(ステップS22)。また、ステップS21での転送ピクチャの確定に伴い、当該ピクチャに対するデコード情報が確定される(ステップS23)。例えば、確定された転送ピクチャのヘッダ情報から取り出されたデコードに必要なパラメータや、デコードに必要な他のフレームの情報がデコード情報として確定される。これら確定されたデコード情報は、デコーダ22に渡される。
デコーダ22は、ステップS23で転送されたデコード情報に基づき、ステップS22で転送されたピクチャのデコードを、次の第3フレーム目のタイミングに同期して開始する(ステップS24)。デコードされたピクチャ(フレーム)は、フレームバッファの所定のバンクに書き込まれ、フレームバッファが更新される。
一方、上述したステップS20で目標再生フレームが確定されると、出力するビデオデータの情報が確定される(ステップS25)。この確定された出力ビデオデータの情報が出力データ制御部23に渡される。出力データ制御部23では、渡された情報に基づき、第3フレーム目の開始タイミングまでに、ビデオ出力の設定を行う(ステップS26)。そして、この設定に基づき、第3フレーム目に同期して、フレームが出力される(ステップS27)。
なお、再生方向が順方向および逆方向の何れの場合においても、上述のステップS20〜ステップS27で説明した処理は、フレームタイミング毎に順次、実行される。すなわち、第1フレーム目に同期して上述のステップS20の処理による目標再生フレームが確定される。確定された目標再生フレームを新たな出力フレームとして、この新たな出力フレームに対応する新たな目標再生フレームの確定処理が次の第2フレーム目に同期して開始される。
この新たな目標再生フレームの、ディスクドライブ11からデコーダ22への転送処理は、次の第3フレーム目に同期して行われるため、1つ前の処理と干渉することがない。同様に、デコーダ22によるデコード処理も、図示されない第4フレーム目に同期して行われることになるため、1つ前の処理と干渉することがない。
このように、この発明によれば、順方向の1倍速再生から逆方向の1倍速再生にわたる可変速再生において、与えられた再生速度および再生方向指示コマンドに対して固定的な遅延で、コマ落ちのない再生出力を、1倍速デコーダを用いて実現することができる。
なお、上述の図21のシーケンスにおいて、ステップS20で目標再生フレームが確定してから、その目標再生フレームが目標再生フレームの確定から固定遅延で以てステップS27でビデオ出力されるまでの間は、ステップS22のデータ転送処理およびステップS24のデコード処理がそれぞれ平均して1ピクチャ/フレーム時間に収まる必要がある。換言すれば、ステップS22のデータ転送処理およびステップS24のデコード処理は、それぞれ平均して1ピクチャ/フレーム時間に収まっていれば、それぞれの処理時間を1フレーム時間に固定的とする必要は、無い。
ピクチャのデコードに1倍速デコーダを用い、順方向および逆方向に1倍速以内の再生を、上述したような目標フレームバッファパターンに基づく制御で以て固定遅延で行う場合、上述のように、目標再生フレームが移行する毎に、1フレームのデコードが行われ、それに伴いバッファメモリ上の1フレームが破棄される。そのため、ステップS22のデータ転送処理およびステップS24のデコード処理は、それぞれ1ピクチャ/フレーム時間の処理に収束するように推移し、全体として、図21に示されるような3フレーム周期に収束する。
このように、この発明によれば、順方向の1倍速再生から逆方向の1倍速再生にわたる可変速再生を、与えられた再生速度および再生方向指示コマンドに対して固定的な遅延で、コマ落ちのない再生出力を、1倍速デコーダで行うことができるように作成されたフレームバッファの更新パターンに対して、フレーム毎にデコードの優先順位を設定している。したがって、結果的に見かけ上、再生速度が1倍速以上の再生状態から再生速度が1倍速の再生状態に遷移しても、固定遅延のコマンド応答で再生を継続させることができる。
これにより、デコードの優先順位に従いデコードを行いデコードされたフレームをフレームバッファに格納していくことで、フレームバッファにフレームが格納されていない状態から、表示における違和感を抑えつつ、速やかに、順方向の1倍速から逆方向の1倍速までの可変速再生が可能な状態に移行することができる。そのため、この発明は、編集作業の調相時などに用いて好適なものである。
上述では、この発明が記録媒体として光ディスクを用い、年輪構造でクリップが記録されている場合に適用されるように説明したが、これはこの例に限定されない。例えば、記録媒体上の記録フォーマットは、年輪構造に限られず、他のフォーマットであってもよい。また、記録媒体は、光ディスクに限られず、ハードディスクドライブや、半導体メモリであってもよい。さらに、この発明が記録媒体から再生されたデータに対して適用されるように説明したが、これはこの例に限定されず、安定的にストリームが供給可能な状況であれば、外部から供給されたストリームデータをデコードするようなデコーダ装置にもこの発明を適用することができる。
また、上述では、再生装置1が光ディスク10に記録されたビデオデータを再生する専用的なハードウェアであるように説明したが、これはこの例に限らず、例えばパーソナルコンピュータといった汎用的なコンピュータ装置(図示しない)を、再生装置1として用いることもできる。この場合、コンピュータ装置に搭載されるプログラムによって、再生装置1の機能を実現させることができる。またこの場合、ビデオデータのデコード処理は、ソフトウェア処理によりCPUで行ってもよいし、専用的なハードウェアをコンピュータ装置に搭載することもできる。