以下、この発明について、下記の順序に従い説明する。
1.この発明に適用されるシステムについて
1−1.再生制御処理の概念的な説明
1−2.再生装置の一例の構成
1−3.デコーダの一例の構成
1−4.光ディスクのフォーマットについて
1−5.再生制御処理のより詳細な説明
1−5−1.目標フレームバッファパターンの作成
1−5−2.目標フレームバッファの一例の更新パターン
1−5−3.目標フレームバッファパターン作成の流れ
1−5−4.フレームバッファの更新パターンに基づく再生制御動作
2.この発明の実施の一形態について
2−1.再生装置の一例の構成
2−2.再生制御処理について
1.この発明に適用されるシステムについて
先ず、この発明の実施形態の説明に先んじて、この発明に適用されるシステムについて説明する。
1−1.再生制御処理の概念的な説明
図1は、この発明に適用されるシステムにおける再生制御処理を概念的に示す。ステップS1で、次に再生すべき目標再生フレームが指示される。目標再生フレームは、例えば再生速度が順方向または逆方向に1倍速以内であれば、1フレームタイミング前で確定した目標再生フレームに対して表示順で隣接するフレームの範囲となる。目標再生フレームは、例えばより上位のシステムから指定され、フレームタイミング毎に供給される。
目標再生フレームが指示されると、次に、目標再生フレームに対する目標フレームバッファのパターンが作成される(ステップS2)。目標フレームバッファのパターンは、目標再生フレームを再生すると共に、逆方向および順方向への再生を継続するために、フレームバッファ上にデコードされた状態で溜め込まれている必要があるフレームのパターンである。次のステップS3で、作成された目標フレームバッファパターンと現在のフレームバッファの状態とが比較される。この比較により、現在のフレームバッファの状態に対して新規にデコードが必要なピクチャが抽出される(ステップS4)と共に、現在のフレームバッファの状態において不要なピクチャが抽出される(ステップS5)。ステップS4およびステップS5で抽出されるピクチャは、常に1ピクチャである。
ここまでが、実際にデコードを行うためのターゲットを作成する処理となる。次から、実際にデコーダが制御され、デコード処理が開始される。
ステップS6では、例えば記録媒体がアクセスされ、ステップS4で抽出された結果に基づき所定のピクチャがデコーダに対してストリーム入力される。デコーダでデコードされたピクチャは、フレームバッファ上の、上述のステップS5で抽出された不要ピクチャの領域に上書きされる(ステップS7)。1ピクチャ分のデコードが完了すると、デコード済みの出力フレーム画像として出力される(ステップS8)。
1−2.再生装置の一例の構成
図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に対してビデオストリームが供給され、要求に応じて入力されたビデオストリームをフレームメモリ17を用いてデコードする。デコード出力は、ベースバンドのビデオ信号として出力される。
操作部15は、キーやスイッチなどの様々な操作子が設けられ、操作子に対してなされた操作に応じた制御信号を生成し、CPU14に供給する。CPU14は、供給されたこの制御信号に応じて再生装置1の各部に対して命令を送る。操作部15には、例えばジョグダイヤル16が設けられる。ジョグダイヤル16は、回転角に応じた信号が出力されるようになっており、例えば、ジョグダイヤル16は、ユーザによる操作に応じて、再生方向について順方向および逆方向の指定を行うための制御信号や、再生速度を略リアルタイムで指示する制御信号などを生成し、CPU14に供給する。
なお、再生速度や再生方向などを指示する命令は、操作部15に対する操作に基づくものに限定されない。例えば、所定の通信手段(図示しない)により再生装置1に接続された、編集装置などの他の装置からこの装置に対して、再生速度や再生方向を命令するコマンドを送信するようにできる。この場合、再生装置1に対してコマンドを送信する他の装置は、この再生装置1に対するより上位の装置となる。
この再生装置1で扱われるビデオストリームは、MPEG2(Moving Pictures Experts Group 2)の規格に準じて圧縮符号化がなされたストリームであって、GOP(Group Of picture)の構成は、ロングGOPおよびオープンGOPであるものとする。
1−3.デコーダの一例の構成
図3は、デコーダ13の一例の構成を概略的に示す。光ディスク10から読み出され、ディスクドライブ11から出力されるストリームデータは、例えばMPEG−ES(MPEG Elementally Stream)である。このMPEG−ESは、ストリームデコーダ20に供給される。ストリームデコーダ20は、入力されたMPEG−ESのパケットとヘッダ情報とを解析し、デコード処理に必要な各種パラメータと、圧縮符号化されパケット中のペイロードに格納されたピクチャのデータとを抽出する。各種パラメータは、例えばCPU14に供給される。抽出されたピクチャデータは、ストリームバッファ21に所定に溜め込まれる。
MPEGデコーダ22は、ストリームデコーダ20に対してストリームバッファ21に溜め込まれたピクチャデータを要求し、要求に応じてストリームバッファ21から読み出されたピクチャデータをデコードしてフレームメモリ17に書き込む。また、MPEGデコーダ22は、フレームメモリ17に書き込まれたピクチャデータを用いて他のピクチャデータ(例えばPピクチャやBピクチャ)をデコードする処理も行う。
なお、詳細は後述するが、フレームメモリ17は、順方向の再生と逆方向の再生とを固定的な遅延で実行可能とするための必要十分な容量を有する。例えば、フレームメモリ17は、デコードされたピクチャの9フレーム分を溜め込めるだけの容量を有する。一例として、フレームメモリ17は、それぞれ1フレーム分のデータを格納可能な9個のバンクに記憶領域が分割され、バンク毎にアクセスが制御される。
出力データ制御部23は、出力されるビデオデータの管理を行う。例えば、出力データ制御部23は、操作部15に対する操作に応じたCPU14の命令に基づき、フレームメモリ17から次に表示するためのフレームデータを読み出す。読み出されたフレームデータは、ベースバンドのビデオ信号として出力される。
図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を介してフレームメモリ17に書き込まれる。
予測復元部33は、フレームメモリ17に書き込まれたピクチャデータを用いて、予測符号化を用いてフレーム間圧縮をされたピクチャをデコードする。フレーム間圧縮をデコードされたピクチャは、フレームデータとしてフレームメモリ17に再び書き込まれる。
一方、ユーザの、再生方向および再生速度を指定するためのジョグダイヤル16に対する操作などにより、操作部15で、再生速度や再生方向を示す制御信号が所定に生成される。この制御信号は、CPU14に供給される。再生方向や再生速度を示す制御信号は、これに限らず、上述したように、図示されない通信手段を介してより上位の装置からコマンドとしてCPU14に供給されるようにしてもよい。
CPU14は、ROM35に予め記憶されたプログラムに従い、操作部15から供給された制御信号に基づき、ビデオ出力部23に対して命令を出し、出力すべきフレームを指示する。なお、RAM36は、必要に応じてCPU14のワークメモリとして用いられる。ビデオ出力部23は、この命令に応じてフレームメモリ17から指示されたフレームを読み出す。
読み出されたフレームは、補助データ重畳部34に供給され、ストリームバッファ21に溜め込まれた情報に基づき所定にビデオインデックス情報や補助データなどが重畳され、さらに同期信号を付加されて、出力ビデオ信号として出力される。
1−4.光ディスクのフォーマットについて
次に、光ディスク10について説明する。先ず、図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−5.再生制御処理のより詳細な説明
次に、この発明に適用されるシステムにおける再生制御処理について、より詳細に説明する。
1−5−1.目標フレームバッファパターンの作成
先ず、図1のステップS2で説明した、目標フレームバッファパターンの作成について説明する。最初に、任意の目標再生フレームと、当該目標再生フレームに対して表示順で隣接する前後のフレームとを再生するために必要なフレームバッファサイズを求める。
図10は、カレントフレーム(例えば目標再生フレーム)に対して表示順で1フレーム後または1フレーム前のフレームをデコードする場合の必要バッファ量の例を示す。図10において、出力フレーム(カレントフレーム)を「0」で示し、現在より表示順で順方向すなわち未来(後)になるフレームは「+」を、表示順で逆方向すなわち過去(前)になるフレームは「−」を、それぞれ付して示す。また、図中、「M」は、間にBピクチャがある場合の、基準ピクチャから次の基準ピクチャまでのピクチャの移動数、「N」は、1GOP内のピクチャ数を示す。例えば、GOPが「I2B0B1P5B3B4P8B6B7P11B9B10P14B12B13」の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’ピクチャである場合に、最もバッファが必要となる。この場合には、次のフレームタイミングで当該目標再生フレームから表示順で後方のB2’ピクチャに移動することになる。
すなわち、この場合には、B2’ピクチャをデコードするために、I3’ピクチャと、B2’ピクチャの表示順で前の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’ピクチャである場合に最もバッファが必要となる。この場合には、次のフレームタイミングで、当該I3’ピクチャの表示順で次のB4’ピクチャまたは表示順で前のB2’ピクチャに移動することになる。
すなわち、この場合は、上述の図10Aの例と図10Bの例とを組み合わせた状態となり、目標再生フレームであるI3’ピクチャの表示順で次のB4’ピクチャをデコードするために、当該I3’ピクチャと、当該I3’ピクチャの次に現れる基準ピクチャであるP6’ピクチャとが必要となる。また、当該I3’ピクチャの表示順で前のB2’ピクチャをデコードするために、当該I3’ピクチャと、当該I3’ピクチャの属するGOPの前のGOPにおけるI3ピクチャ、P6ピクチャ、P9ピクチャ、P12ピクチャおよびP15ピクチャとが順次、必要となる。したがって、N/M+M+1=9ピクチャ分のバッファが必要となる。
このように、目標再生フレームから表示順で隣接する前後のフレームに移動する場合には、9ピクチャ分のバッファが必要となる。
1−5−2.目標フレームバッファの一例の更新パターン
この発明に適用されるシステムでは、フレームバッファにおいて、目標再生フレームに対して表示順で隣接する前後のピクチャが常に固定遅延で表示可能となるような、バッファの更新パターンを作成する。すなわち、デコードされバッファ上に存在する目標再生フレームに対して表示順で前後に隣接するフレームが常にデコードされバッファ上に存在する状態とする。さらに、逆方向再生を継続するために必要なフレームと、順方向再生を継続するために必要なフレームとを、常に、全てデコードし、バッファ上に溜め込んでおく。このようなバッファ上のパターンを、目標再生フレームを1フレーム毎に移動させた全パターンについて作成する。
この状態において、目標再生フレームが1フレーム分移動し、更新された場合、新たにデコードが必要となるデータは、再生方向が順方向および逆方向によらず常に1フレーム分となる。したがって、再生方向が順方向および逆方向の何れの場合の1倍速以内の再生速度での変速再生が、1倍速デコーダを用いて実現可能となる。
さらに、この状態において、逆方向の1倍速再生から、順方向の1倍速再生のコマンド速度の間では、固定遅延で再生出力結果を得ることができる。
図11は、上述の考えに基づき作成した目標フレームバッファの一例の更新パターンを示す。この図11の例は、(N=15、M=3)であるロングGOPの場合に関する。1GOPが15ピクチャ(フレーム)で構成されるため、15のパターンからなる。図11中の各行に示されるように、目標再生フレームに対応したフレームがフレームバッファに格納された状態で、目標再生フレームを任意の方向に1フレームずつ移動させた場合に、更新されるフレームがそれぞれ1フレーム分で済み、順方向および逆方向の1倍速以内の可変速再生を、1倍速デコーダを用いて行うことができるようにしている。
なお、図11中のI、PおよびBは、それぞれIピクチャ、PピクチャおよびBピクチャに基づくフレームであって、付加される数字は、GOP内の表示順を示す。基準となるGOP(カレントGOP)に属するピクチャによるフレームは、記号を付加しない。カレントGOPの1つ前のGOP(GOP(−)と呼ぶ)に属するピクチャによるフレームに対して、マイナス記号(−)を付加する。カレントGOPの1つ後のGOP(GOP(+)と呼ぶ)に属するピクチャによるフレームに対して、プラス記号(+)を付加する。
この図11の更新パターンは、図の上側から下側に向けた方向が順方向の再生を示し、下側から上側に向けた方向が逆方向の再生を示す。すなわち、図11の上側から下側に1行分進むことで、目標再生フレームが1フレーム進み、下側から上側に1行分進むことで、目標再生フレームが1フレーム戻る。また、この図11の更新パターンは、循環的とされ、第1行目から目標再生フレームが1フレーム分戻ったときには、第15行目のフレームバッファの格納パターンに移行される。
図11のフレームバッファの更新パターンにおいて、第1行目は、目標再生フレームがフレーム「I3」の場合のパターンの例である。目標再生フレーム「I3」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B4」およびフレーム「P6」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B2」、フレーム「P15−」、フレーム「P12−」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第2行目は、目標再生フレームがフレーム「B4」の場合のパターンの例である。目標再生フレーム「B4」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B5」およびフレーム「P6」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「I3」、フレーム「P15−」、フレーム「P12−」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第3行目は、目標再生フレームがフレーム「B5」の場合のパターンの例である。目標再生フレーム「B5」から順方向に1フレーム進むために必要とされるフレームは、フレーム「P6」およびフレーム「P9」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B4」、フレーム「I3」、フレーム「P12−」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第4行目は、目標再生フレームがフレーム「P6」の場合のパターンの例である。目標再生フレーム「P6」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B7」およびフレーム「P9」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B5」、フレーム「I3」、フレーム「P12−」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第5行目は、目標再生フレームがフレーム「B7」の場合のパターンの例である。目標再生フレーム「B7」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B8」およびフレーム「P9」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「P6」、フレーム「I3」、フレーム「P12−」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第6行目は、目標再生フレームがフレーム「B8」の場合のパターンの例である。目標再生フレーム「B8」から順方向に1フレーム進むために必要とされるフレームは、フレーム「P9」およびフレーム「P12」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B7」、フレーム「P6」、フレーム「I3」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第7行目は、目標再生フレームがフレーム「P9」の場合のパターンの例である。目標再生フレーム「P9」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B10」およびフレーム「P12」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「P6」、フレーム「I3」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第8行目は、目標再生フレームがフレーム「B10」の場合のパターンの例である。目標再生フレーム「B10」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B11」およびフレーム「P12」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「P9」、フレーム「P6」、フレーム「I3」、フレーム「P9−」、フレーム「P6−」およびフレーム「I3−」である。
第9行目は、目標再生フレームがフレーム「B11」の場合のパターンの例である。目標再生フレーム「B11」から順方向に1フレーム進むために必要とされるフレームは、フレーム「P12」およびフレーム「P15」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B10」、フレーム「P9」、フレーム「P6」、フレーム「I3」、フレーム「P6−」およびフレーム「I3−」である。
第10行目は、目標再生フレームがフレーム「P12」の場合のパターンの例である。目標再生フレーム「P12」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B13」およびフレーム「P15」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B11」、フレーム「P9」、フレーム「P6」、フレーム「I3」、フレーム「P6−」およびフレーム「I3−」である。
第11行目は、目標再生フレームがフレーム「B13」の場合のパターンの例である。目標再生フレーム「B13」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B14」およびフレーム「P15」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「P12」、フレーム「P9」、フレーム「P6」、フレーム「I3」、フレーム「P6−」およびフレーム「I3−」である。
第12行目は、目標再生フレームがフレーム「B14」の場合のパターンの例である。目標再生フレーム「B14」から順方向に1フレーム進むために必要とされるフレームは、フレーム「P15」およびフレーム「I3+」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B13」、フレーム「P12」、フレーム「P9」、フレーム「P6」、フレーム「I3」およびフレーム「I3−」である。
第13行目は、目標再生フレームがフレーム「P15」の場合のパターンの例である。目標再生フレーム「P15」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B1+」およびフレーム「I3+」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B14」、フレーム「P12」、フレーム「P9」、フレーム「P6」、フレーム「I3」およびフレーム「I3−」である。
第14行目は、目標再生フレームがフレーム「B1+」の場合のパターンの例である。目標再生フレーム「B1+」から順方向に1フレーム進むために必要とされるフレームは、フレーム「B2+」およびフレーム「I3+」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「P15」、フレーム「P12」、フレーム「P9」、フレーム「P6」、フレーム「I3」およびフレーム「I3−」である。
第15行目は、目標再生フレームがフレーム「B2+」の場合のパターンの例である。目標再生フレーム「B2+」から順方向に1フレーム進むために必要とされるフレームは、フレーム「I3+」およびフレーム「P6+」である。また、目標再生フレームから逆方向に1フレーム戻るために必要とされるフレームは、フレーム「B1+」フレーム「P15」、フレーム「P12」、フレーム「P9」、フレーム「P6」およびフレーム「I3」である。
このように、図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フレーム分のデータのみが更新される。
1−5−3.目標フレームバッファパターン作成の流れ
次に、上述したような目標フレームバッファのパターンの一例の作成方法について、図12のフローチャートを用いて説明する。また、以下では、目標とされるフレーム(カレントフレームと呼ぶ)がBピクチャによるフレームであるものとして説明する。
先ず、ステップS10で、カレントフレームが属するカレントGOPのIピクチャ(I0)を取得する。図13Aに一例が示されるように、カレントフレームに対応するピクチャから記録媒体上の順序で逆方向に向けて、Iピクチャを検索する。なお、この段階では、目標フレームバッファパターンのフレームは、一つも確定していない(図14A参照)。
カレントGOPの先頭Iピクチャ(I0)ピクチャが取得されると、ステップS11で、カレントフレームに対応するピクチャから記録媒体上の順序で順方向に向けて、カレントフレームより2フレーム進んだ位置以降のIピクチャまたはPピクチャ(P0)を検索する(図13B参照)。この段階では、目標フレームバッファパターンのフレームは、一つも確定していない(図14B参照)。
ステップS12で、上述したステップS10およびステップS11で取得されたピクチャ(I0)からピクチャ(P0)までのIおよび/またはPピクチャを記録媒体から検索する。例えば、図13Cに一例が示されるように、ステップS10で検索されたピクチャ(I0)を目標フレームバッファパターンに用いるフレームとして確定する。さらに、ピクチャ(I0)から記録媒体上の順序で順方向に向けて、次のPピクチャ(P)が検索される。検索されたPピクチャを、目標フレームバッファパターンに用いるフレームとして確定する。このように、記録媒体から順次、検索されたPまたはIピクチャに基づき、目標フレームバッファパターンに用いる、カレントGOPのフレームが順次、確定される(図14C参照)。
ステップS12で、カレントGOPのIおよびPピクチャによるフレームが目標フレームバッファパターンに用いるフレームとして確定されると、ステップS13で、記録媒体上の順序で、カレントフレームの1つ前のフレームからカレントフレームの1つ後のフレームまでの間に存在するBピクチャが検索される(図13D参照)。検索されたBピクチャによるフレームは、目標フレームバッファパターンに用いられる、カレントGOPのフレームとして確定される(図14D参照)。
すなわち、上述したステップS11およびステップS12で、カレントフレームの1つ前のフレームからカレントフレームの1つ後のフレームまでの間に存在するBピクチャをデコードするために用いられるIおよび/またはPピクチャによるフレームが、目標フレームバッファパターンに用いられるフレームとして確定されている。ステップS13では、これら確定された、Iおよび/またはPピクチャによるフレームを用いてデコードされるBピクチャによるフレームが、目標フレームバッファパターンに用いるフレームとして確定される。
ステップS13までの処理で、カレントGOPの、目標フレームバッファパターンに用いるフレームが全て確定されると、ステップS14で、カレントGOPの1つ前のGOP内の先頭Iピクチャ(I-1)が検索される(図13E参照)。例えば、カレントGOPの先頭のIピクチャ(I0)を起点として、記録媒体上の順序で逆方向に向けてIピクチャが検索され、検索されたIピクチャ(I-1)に基づき、記録媒体上の順序で順方向に、Pピクチャが検索される(図13F参照)。そして、検索されたカレントGOPの1つ前のGOPのIおよび/またはPピクチャによるフレームが、目標フレームバッファパターンに用いるフレームとして確定される(図14F参照)。
上述のステップS14からステップS15までの処理は、バッファメモリが埋められるまで繰り返される(ステップS16)。
なお、記録媒体上に記録されたピクチャの位置やタイプ(Iピクチャ、PピクチャおよびBピクチャ)は、図9を用いて説明したピクチャポインタファイルを参照することで知ることができる。例えばシステムやより上位のシステムから、あるフレームの再生が指示されると、CPU14は、再生を指示されたフレームを目標再生フレームとし、当該目標再生フレームが属するGOPをカレントGOPとしてピクチャポインタファイルを検索し、カレントGOPのIピクチャの位置を取得する。ピクチャポインタファイルには、上述のように、ピクチャタイプ、そのピクチャがGOPの先頭のピクチャであるか否かを示すフラグ、ピクチャのサイズ情報、先頭アドレスが記述されているので、これらの情報に基づき記録媒体上の所望のピクチャを検索することが可能となっている。
目標再生フレームに基づき目標フレームバッファパターンが確定し、確定された目標フレームバッファパターンに従いフレームバッファがデコードされたフレームで埋められると、図11を用いて説明したような動作により、再生指示に対して所定の固定遅延で、順方向および逆方向の1倍速以内の再生が行われる。
なお、ここでは、目標再生フレームがBピクチャであるものとして説明したが、上述の図12のフローチャートで説明した処理は、カレントフレームがIピクチャおよびPピクチャの場合にも同様にして適用できる。
また、システムやより上位のシステムから再生を指示されたフレームを目標再生フレームとして、上述の図12のフローチャートに従い、当該目標再生フレームに対応した目標フレームバッファパターンを作成する。この処理を、例えば目標再生フレームが指示される毎に行う。最初の目標再生フレームの指示に基づき、GOP内の全てのフレームについて作成してもよい。作成された目標フレームバッファパターンは、例えばRAM36に記憶される。
これに限らず、再生するクリップのGOPの構成が予め分かっていれば、上述の図12のフローチャートに示される処理を、GOPを構成する各ピクチャに対して行って、上述した図11のようなフレームバッファの更新パターンを予め作成しておくことも可能である。また、再生装置1において適用可能なGOPの構成が決められていれば、予め更新パターンを作成し、ROM35に記憶させておくことも可能である。
CPU14は、操作部15に対する、順方向への1倍速以内または逆方向への1倍速以内の再生指示に応じて、出力フレームに対応する更新パターンを参照し、フレームタイミング毎に光ディスク10から読み出すピクチャを指示し、フレームバッファの更新を行う。
1−5−4.フレームバッファの更新パターンに基づく再生制御動作
次に、フレームバッファの更新パターンに基づく再生制御動作について説明する。再生制御は、フレームタイミングで同期を取られて、フレーム毎に順次、行われる。図15は、この発明に適用可能なシステムによる同期制御を概略的に示す。この図15の例では、3フレームを周期として、1フレーム分のビデオデータのデコードが行われると共に、このデコードに同期して、フレームバッファ上の1フレーム分のビデオデータが出力される。
先ず、第1フレーム目では、現在フレームバッファに格納されているフレームの情報であって、CPU14により取得されるフレームバッファ情報と、ディスクドライブ11におけるリード情報と、目標速度情報とから、目標再生フレームが確定される(ステップS20)。リード情報は、光ディスク10から既に読み出され、ディスクドライブ11のキャッシュメモリ12に溜め込まれているピクチャの情報である。また、目標速度情報は、操作部15に対する操作や、より上位のアプリケーションなどからのコマンドにより、CPU14に対して供給される、再生速度および方向を示す情報である。
目標再生フレームが確定されると、デコーダ22に転送するピクチャが確定される(ステップS21)。すなわち、図11を用いて説明したフレームバッファの更新パターンに基づき、目標再生フレームの確定に伴いデコードすべきピクチャが確定される。
例えば、図11の第4行目の例でいうと、再生方向が順方向であれば、現在の目標再生フレーム「P6」に対して、新たな目標再生フレームは、フレーム「B7」またはフレーム「P6」の何れかに確定される。新たな目標再生フレームがフレーム「B7」およびフレーム「P6」の何方に確定されるかは、目標速度情報や、指示のタイミングなどに基づき一意的に決められる。ここでは、新たな目標再生フレームがフレーム「B7」に確定されたものとして説明する。
さらに、第4行目のフレームバッファ情報と、新たな目標再生フレームが目標再生フレームとされているフレームバッファ情報とが比較され、新たにデコードされる必要があるフレームと、不要となるフレームとが抽出される。新たな目標再生フレームがフレーム「B7」であるこの例では、第4行目のフレームバッファ情報と次の第5行目のフレームバッファ情報とが比較され、フレーム「B5」が不要となると共に、フレーム「B8」がデコードされている必要があることが分かる。
ステップS21で転送するピクチャが確定されると、次の第2フレーム目のタイミングで、当該ピクチャがデコーダ22に対して転送される(ステップS22)。例えば、CPU14は、ディスクドライブ11に対して、転送が確定されたピクチャを光ディスク10から読み出すように要求する。この要求に応じて、ディスクドライブ11により、光ディスク10からピクチャ(上述の例では、フレーム「B8」に対応するピクチャ)が読み出される。読み出されたピクチャがデコーダ22に転送されると共に、読み出されたピクチャをデコードするために必要な他のフレームがある場合は、フレームバッファから当該他のフレームが読み出され、デコーダ22に転送される。
フレーム「B8」をデコードするこの例では、フレーム「B8」に対応するピクチャと、フレーム「B8」をデコードするための他のフレーム「P6」および「P9」とがデコーダ22に転送される。
なお、実際には、転送が確定されたピクチャの転送は、上述したように、ディスクドライブ11が有するキャッシュメモリ12に対してアクセスされてなされ、キャッシュメモリ12からデコーダ22に対して、DMA(Direct Memory Access)転送によりCPU14を介さないで行われる。
ディスクドライブ11からデコーダ22へのピクチャの転送は、次の第2フレーム目のタイミングに同期して行われる(ステップS22)。また、ステップS21での転送ピクチャの確定に伴い、当該ピクチャに対するデコード情報が確定される(ステップS23)。例えば、確定された転送ピクチャのヘッダ情報から取り出されたデコードに必要なパラメータや、デコードに必要な他のフレームの情報がデコード情報として確定される。これら確定されたデコード情報は、デコーダ22に渡される。
デコーダ22は、ステップS23で転送されたデコード情報に基づき、ステップS22で転送されたピクチャのデコードを、次の第3フレーム目のタイミングに同期して開始する(ステップS24)。デコードされたピクチャ(フレーム)は、フレームバッファの所定のバンクに書き込まれ、フレームバッファが更新される。上述の図11の第4行目の例では、バッファメモリ上のフレーム「B5」が書き込まれているバンクに対して、デコードされたフレーム「B8」のデータが上書きされる(図11の第5行目参照)。
一方、上述したステップS20で目標再生フレームが確定されると、出力するビデオデータの情報が確定される(ステップS25)。上述の図11の第4行目の例では、出力ビデオデータとしてフレーム「P6」が確定される。この確定された出力ビデオデータの情報が出力データ制御部23に渡される。出力データ制御部23では、渡された情報に基づき、第3フレーム目の開始タイミングまでに、ビデオ出力の設定を行う(ステップS26)。そして、この設定に基づき、第3フレーム目に同期して、フレーム「P6」が出力される(ステップS27)。
なお、1倍速以下の順方向の再生は、例えば、上述したステップS20において、上位のアプリケーションからなど供給された再生速度情報に応じて、目標再生フレームを次のフレームに進めるか否かを制御することで可能である。一例として、順方向に1/2倍速で再生を行う場合には、出力するフレームを2フレームタイミング毎に1フレームだけ更新すればよい。これは、例えば、2フレームに1回の割合で、目標再生フレームを更新することで可能である。目標再生フレームが更新されなければ、直前の処理と同一のフレームバッファのパターンに基づき処理が行われることになるため、直前のフレームタイミングと同一のフレームが出力されることになる。このとき、ディスクドライブ1による光ディスク10に対するアクセス動作や、デコーダ22のデコード動作なども停止するようにすると、好ましい。
上述では、再生方向が順方向の場合の処理について説明したが、再生方法が逆方向の場合にも、同様の処理が行われる。第1フレーム目で、フレームバッファ情報と、リード情報と、目標速度情報とから、目標再生フレームが確定される(ステップS20)。目標再生フレームが確定されると、デコーダ22に転送するピクチャが確定される(ステップS21)。図11の第4行目の例でいうと、再生方向が逆方向なので、目標再生フレームがフレーム「B5」またはフレーム「P6」の何れかに確定される。ここでは、目標再生フレームがフレーム「B5」に確定されるものとする。さらに、第4行目のフレームバッファ情報と、目標再生フレームが出力フレームとされている第3行目のフレームバッファ情報とが比較され、フレーム「B7」が不要になると共に、フレーム「B4」がデコードされている必要があることが分かる。
ステップS21で転送するピクチャが確定されると、次の第2フレーム目のタイミングに同期して、当該ピクチャがデコーダ22に対して転送される(ステップS22)。このとき、当該ピクチャをデコードするために必要な他のピクチャがある場合には、当該他のピクチャもフレームバッファから読み出されてデコーダ22に転送される。フレーム「B4」をデコードするこの例では、フレーム「B4」をデコードするために用いられる、フレーム「I3」および「P6」も、デコーダ22に転送される。フレーム「I3」および「P6」は、図11の第4行目に示されるように、フレームバッファ上に既に存在する。
ステップS21での転送ピクチャの確定に伴い、当該ピクチャに対するデコード情報が確定される(ステップS23)。確定されたデコード情報は、デコーダ22に渡される。デコーダ22は、ステップS23で転送されたデコード情報に基づき、ステップS22で転送されたピクチャのデコードを、次の第3フレーム目のタイミングに同期して開始する(ステップS24)。デコードされたピクチャ(フレーム)は、フレームバッファの所定のバンクに書き込まれ、フレームバッファが更新される。上述の図11の第4行目の例では、バッファメモリ上のフレーム「B7」が書き込まれているバンクに対して、デコードされたフレーム「B4」のデータが上書きされる(図11の第3行目参照)。
一方、上述したステップS20で目標再生フレームが確定されると、出力するビデオデータの情報が確定される(ステップS25)。上述の図11の第4行目の例では、出力ビデオデータとしてフレーム「P6」が確定される。この確定された出力ビデオデータの情報が出力データ制御部23に渡される。出力データ制御部23では、渡された情報に基づき、第3フレーム目の開始タイミングまでに、ビデオ出力の設定を行う(ステップS26)。そして、この設定に基づき、第3フレーム目に同期して、フレーム「P6」が出力される(ステップS27)
なお、再生方向が順方向および逆方向の何れの場合においても、上述のステップS20〜ステップS27で説明した処理は、フレームタイミング毎に順次、実行される。すなわち、第1フレーム目に同期して上述のステップS20の処理による目標再生フレームが確定される。確定された目標再生フレームを新たな出力フレームとして、この新たな出力フレームに対応する新たな目標再生フレームの確定処理が次の第2フレーム目に同期して開始される。
この新たな目標再生フレームの、ディスクドライブ11からデコーダ22への転送処理は、次の第3フレーム目に同期して行われるため、1つ前の処理と干渉することがない。同様に、デコーダ22によるデコード処理も、図示されない第4フレーム目に同期して行われることになるため、1つ前の処理と干渉することがない。
このように、この発明によれば、順方向の1倍速再生から逆方向の1倍速再生にわたる可変速再生において、与えられた再生速度および再生方向指示コマンドに対して固定的な遅延で、コマ落ちのない再生出力を、1倍速デコーダを用いて実現することができる。
なお、上述の図15のシーケンスにおいて、ステップS20で目標再生フレームが確定してから、その目標再生フレームが目標再生フレームの確定から固定遅延で以てステップS27でビデオ出力されるまでの間は、ステップS22のデータ転送処理およびステップS24のデコード処理がそれぞれ平均して1ピクチャ/フレーム時間に収まる必要がある。換言すれば、ステップS22のデータ転送処理およびステップS24のデコード処理は、それぞれ平均して1ピクチャ/フレーム時間に収まっていれば、それぞれの処理時間を1フレーム時間に固定的とする必要は、無い。
ピクチャのデコードに1倍速デコーダを用い、順方向および逆方向に1倍速以内の再生を、上述したような目標フレームバッファパターンに基づく制御で以て固定遅延で行う場合、上述のように、目標再生フレームが移行する毎に、1フレームのデコードが行われ、それに伴いバッファメモリ上の1フレームが破棄される。そのため、ステップS22のデータ転送処理およびステップS24のデコード処理は、それぞれ1ピクチャ/フレーム時間の処理に収束するように推移し、全体として、図15に示されるような3フレーム周期に収束する。
2.この発明の実施の一形態について
次に、この発明の実施の一形態について説明する。この発明の実施の一形態では、再生装置に1倍速デコーダを2個、設け、一方のデコーダで現在出力するための再生を行っているクリップ(以下、現在再生中のクリップと呼ぶ)のデコードを行い、他方のデコーダで次に出力するために再生されるクリップのデコードを予め行う。なお、以下では、現在再生中のクリップをデコードするデコーダを出力デコーダと呼び、次に出力するために再生されるクリップのデコードを行うデコーダを他方のデコーダと呼ぶものとする。
このとき、次に出力するために再生されるクリップ(以下、目標再生クリップと呼ぶ)は、現在再生中のクリップにおける再生位置(デコード位置)に基づき決める。そして、目標再生クリップのピクチャにおいて、最初に出力されるフレームを目標再生フレームとして上述した目標フレームバッファ更新パターンを作成し、作成されたこの目標フレームバッファ更新パターンに従い、他方のデコーダにより目標再生クリップのフレームを予めデコードし、保持する。
目標再生クリップは、例えば現在再生中のクリップにおける再生位置と、当該クリップの時間長で略中央位置との位置関係に基づき決める。例えば、現在再生中のクリップの再生位置(デコード位置)が、当該クリップの時間長で略中央位置に対して順方向の再生方向で後側であれば、当該クリップの順方向の再生順で次のクリップが目標再生クリップとされる。また、現在再生中のクリップの再生位置(デコード位置)が、当該クリップの時間長で略中央位置に対して順方向の再生方向で前側であれば、当該クリップの順方向の再生順で前のクリップが目標再生クリップとされる。
2−1.再生装置の一例の構成
図16は、この実施の一形態に適用可能な再生装置200の一例の構成を示す。図16に例示されるように、再生装置200は、図2を用いて説明した再生装置1に対して、デコーダ13Bを追加した構成とされている。図2におけるデコーダ13は、図16においては、デコーダ13Aとして表示されている。デコーダ13Aおよびデコーダ13Bの出力は、フレームタイミングに同期して切り換えられるスイッチ回路201により選択される。なお、図16において、上述した図2と共通する部分には同一の符号を付し、詳細な説明を省略する。
デコーダ13Aおよびデコーダ13Bは、互いに同等の仕様とされ、例えばそれぞれ図3および図4を用いて説明したような構成を有する。デコーダ13Aはフレームメモリ17Aを有し、また、デコーダ13Bはフレームメモリ17Bを有し、CPU14の制御によりそれぞれ独立的に動作を制御される。ドライブ11は、CPU14の制御に基づきディスク10からデータを読み出し、読み出されたデータをデコーダ13Aおよびデコーダ13Bに対して、それぞれ所定に供給する。
デコーダ13Aおよびデコーダ13Bは、それぞれフレームメモリ17Aおよびフレームメモリ17Bを用いて、CPU14の制御に基づき供給されたデータをデコードする。デコードは、図1および図10〜図15を用いて既に説明したように、目標再生フレームに基づき目標フレームバッファパターンを作成し、目標フレームバッファパターンが埋まるようにディスク10からデータを読み出して行う。デコーダ13Aおよびデコーダ13Bのうち一方は、目標再生フレームが現在再生中のクリップ中のフレームとされ、他方は、目標再生フレームが目標再生クリップにおける再生開始位置のフレームとされる。
なお、デコーダ13Aおよびデコーダ13Bのうち最初に何方が現在再生中のクリップのデコードを行い、何方が目標再生クリップのデコードを行うかは、任意に決めることができる。例えば、システム上でデフォルトの設定を定義してもよいし、前回の処理を引き継いだ設定としてもよい。
デコーダ13Aおよびデコーダ13Bの出力は、スイッチ回路201の選択入力端201Aおよび選択入力端201Bにそれぞれ供給される。スイッチ回路201は、CPU14により、現在再生中のクリップをデコードするデコーダの出力が選択されるように選択入力端201Aおよび選択入力端201Bが切り換えられる。スイッチ回路201の制御は、フレームタイミングに同期してなされる。
2−2.再生制御処理について
図17は、デコーダ13Aおよびデコーダ13Bのフレームタイミング毎の一例の動作を概略的に示す。マスタポジションは、出力すべきクリップおよびフレームの情報を有する。マスタポジションは、例えば再生速度情報に基づき決められる。すなわち、出力すべきフレームは、マスタポジションが有するクリップ情報およびフレーム情報に基づき決められる。
マスタポジションが設定されてから2フレームタイミング後に出力がなされる。マスタポジションに示されるフレームは、例えば順方向に1倍速で再生中であれば、フレームタイミング毎に1フレームずつ進む。また、ジョグダイヤル16などで順方向または逆方向に1倍速以内の速度で再生を行っている場合は、マスタポジションに示されるフレームは、ジョグダイヤル16の操作に応じたタイミングで1フレームずつ移動する。
マスタポジションが設定されたフレーム期間中に、デコーダAおよびデコーダBに対して目標再生フレームが設定される。なお、説明のため、デコーダAが図16のデコーダ13Aに対応し、デコーダBがデコーダ13Bに対応するものとする。デコーダAおよびデコーダBのうち一方は、現在再生中のクリップ、すなわち、マスタポジションが含まれるクリップのデコードを行い、他方は、目標再生クリップのデコードを行う。ここでは、説明のため、デコーダAがマスタポジションが含まれるクリップをデコードし、デコーダBが目標再生クリップのデコードを行うものとする。
デコーダAには、マスタポジションに示されるフレームが目標再生フレームとして設定される。また、デコーダBには、目標再生クリップの再生開始フレームが目標再生フレームとして設定される。デコーダAおよびデコーダBのそれぞれは、目標再生フレームが設定されると、そのフレーム期間中に、当該目標再生フレームに基づき各々目標フレームバッファの更新パターンを作成し、次のフレーム期間で1フレーム分のデコードを行う。
マスタポジションに基づき、デコーダAおよびデコーダBの何方のデコード結果を出力すべきかが選択される。すなわち、マスタポジションが目標再生フレームとして設定されている側のデコーダが選択される。選択結果に基づきスイッチ回路201が制御され、選択された側のデコーダのフレームメモリからビデオデータが1フレーム期間で読み出される。
マスタポジションのクリップ情報が更新され、マスタポジションで示されるフレームがクリップ間で移動すると、デコーダAおよびデコーダBの役割が切り換えられる。例えば、上述のデコーダAがマスタポジションで示されるクリップをデコードし、デコーダBが目標再生クリップのデコードを行う例で、マスタポジションで示されるクリップが現在再生中のクリップから目標再生クリップに更新されると、マスタポジションで示されるフレームがデコーダBの目標再生フレームとされ、デコーダAの目標再生フレームが目標再生クリップの再生開始フレームに設定される。
次に、この発明の実施の一形態による再生制御処理について、より詳細に説明する。図18は、クリップの再生方法の代表的な例を示す。図18Aは、ディスク上の物理的な並び順に従いクリップを再生する例である。例えばディスク上にクリップがクリップ#1、クリップ#2、クリップ#3の順に並んでいる場合、順方向の再生では、クリップ#1の先頭から再生が開始され、再生位置がクリップ#1の最後尾に達したらクリップ#1からクリップ#2にジャンプされ、クリップ#2が先頭から再生される。クリップ#2の最後尾まで再生されたら、クリップ#2からクリップ#3にジャンプされ、クリップ#3の先頭からの再生が開始される。
図18Bは、プレイリストに従いクリップを再生する例である。プレイリストには、再生する各クリップ#1、クリップ#2およびクリップ#3のそれぞれにおける再生開始位置(IN点)および再生終了位置(OUT点)が記述される。IN点およびOUT点は、例えばタイムコードを用いて記述される。プレイリストを再生することによって、プレイリストに記述されたIN点およびOUT点情報に基づき各クリップが参照され、各クリップが連続的に再生される。
図18Bの例では、プレイリストに基づき、クリップ#1のIN点TCin#1から再生が開始され、OUT点TCout#1でクリップ#1からクリップ#2へジャンプされ、クリップ#2がIN点TCin#2から再生される。クリップ#2のOUT点TCout#2でクリップ#2からクリップ#3にジャンプされ、クリップ#3がIN点TCin#3から再生される。
これら、図18Aのディスク上の並び順に従い再生される方法と、図18Bのプレイリストに従い再生される方法の何れにおいても、フレームがフレームタイミングで連続的に出力されるように、クリップ間の移動が行われる必要がある。
なお、図18に示すクリップの再生方法は代表的な例であって、これらに限られるものではない。
次に、この発明の実施の一形態によるクリップの一例の再生制御処理について、図19〜図21のフローチャートを用いて説明する。この実施の一形態においては、クリップの再生は、デコーダ13Aおよびデコーダ13Bそれぞれのデコード動作と、マスタポジションに応じたデコーダ13Aおよびデコーダ13Bに対する制御とが並列的に行われる。すなわち、例えばCPU14は、マスタポジションが更新される毎に、マスタポジションに応じてデコーダ13Aおよびデコーダ13Bそれぞれに対する目標再生フレームを設定する。デコーダ13Aおよびデコーダ13Bは、それぞれ、CPU14により設定された目標再生フレームに基づくデコード処理を行う。
デコーダ13Aおよびデコーダ13Bの処理は、図1を用いて既に説明した処理と略同様である。すなわち、図19に概略的に示されるように、ステップS50で、デコードすべきクリップの情報、目標再生フレームおよび再生速度情報が取得される。これらの情報は、図20および図21を用いて後述する処理により、例えばCPU14から供給される。次のステップS51で、デコードすべきクリップの情報および目標再生フレームに基づき、目標フレームバッファパターンが作成される。そして、ステップS52で、作成された目標フレームバッファパターンに従い、デコード処理が行われる。すなわち、目標フレームバッファパターンに基づき、新規にデコードが必要なピクチャが抽出されストリームの入力が開始されると共に、不要なピクチャが抽出され、空きバンクに対してデコードが開始される。このステップS50〜ステップS52の処理が目標再生フレームが更新される毎に行われる。
図20は、CPU14によるマスタポジションに応じた一例の処理を示すフローチャートである。ステップS60で、再生速度情報に基づきマスタポジションが更新されると、次のステップS61で、更新されたマスタポジションに応じて出力をデコーダ13Aおよびデコーダ13Bの何れで行うかが確定される。例えば、デコーダ13Aおよびデコーダ13Bのうち、マスタポジションに示されるフレームがフレームバッファに格納されている方のデコーダを、出力デコーダに確定する。CPU14は、スイッチ回路201を、出力デコーダ側が選択されるように制御する。スイッチ回路201の制御は、例えばフレームタイミングに同期してなされる。なお、以下では、便宜上、出力デコーダではない方のデコーダを、他方のデコーダと呼ぶ。
出力デコーダが確定されると、処理はステップS62に移行され、マスタポジションに示されるフレームを第1の目標再生フレームとして、出力デコーダに対して設定する。次に、ステップS63で、マスタポジションの示すフレームのクリップ上の位置に基づき、第2の目標再生フレームを取得する。この第2の目標再生フレームは、次のステップS64で、他方のデコーダに対して設定される。このステップS60〜ステップS64の処理がマスタポジションの更新毎に実行される。
図21は、上述したステップS63の、第2の目標再生フレームの一例の取得方法を示すフローチャートである。先ず、ステップS70で、マスタポジションが示すフレームの、現在再生中のクリップ、すなわち、マスタポジションで示されるクリップの中央位置に対する位置が取得される。そして、マスタポジションに示されるフレームとクリップの中央位置とが比較され、マスタポジションに示されるフレームが当該クリップの中央位置に対してどの位置にあるかが判断される。
例えば、ディスク上のクリップの並び順に基づき方向を定義するとき、マスタポジションに示されるフレームがクリップの中央位置に対して前側にあるか、後側にあるかが判断される。クリップの再生がプレイリストに従いなされる場合は、プレイリストに定義される再生順で前後が判断される。
ステップS70で、マスタポジションで示されるフレームがクリップの中央位置より前側にあると判断されれば、処理はステップS71に移行する。ステップS56では、マスタポジションで示されるクリップに対して1つ前のクリップを目標再生クリップとして、当該目標再生クリップに対して目標再生フレームFprvを設定する。この目標再生フレームFprvは、当該目標再生クリップの再生順で最終フレームである。この目標再生フレームFprvを他方のデコーダに対して供給する。他方のデコーダでは、この目標再生フレームFprvに従い、上述の図19のフローチャートに示される目標フレームバッファパターンの作成などの処理を行う。
一方、ステップS70で、マスタポジションで示されるフレームがクリップの中央位置より後側にあると判断されれば、処理はステップS72に移行する、ステップS72では、マスタポジションで示されるクリップに対して1つ後のクリップを目標再生クリップとして、当該目標再生クリップに対して目標再生フレームFadvを設定する。この目標再生フレームFadvは、当該目標再生クリップの再生順で先頭フレームである。この目標再生フレームFadvを、他方のデコーダに対して供給する。他方のデコーダでは、この目標再生フレームFadvに従い、上述の図19のフローチャートに示される目標フレームバッファパターンの作成などの処理を行う。
上述のステップS70による、クリップの中央位置の取得方法の例について説明する。クリップの中央位置は、例えば、図9を用いて説明したピクチャポインタ情報に基づき取得することができる。一例として、上述した図9の例では、ピクチャポインタテーブルにおいて、各フレーム毎の情報を示すピクチャポインタ情報が表示順のフレーム番号順に並べられている。したがって、リストに列挙されるピクチャポインタ情報を計数することで、クリップ内のフレーム数Fが分かる。
ディスク上での並び順にクリップを再生する場合、図22Aに一例が示されるように、現在再生中のクリップ#2の先頭TCstと最後TCendの略中点がクリップの中央位置TCcentとされる。一例として、フレーム数Fを2で除した商の小数点以下を切り上げてクリップ中央のフレーム番号Fcentとすることが考えられる。フレーム数Fが偶数の場合は、フレーム番号Fcentが正確な中央位置から0.5フレーム分ずれることになるが、この場合も、クリップの中央位置であると見なす。
また、プレイリストに基づきクリップを再生する場合、図22Bに一例が示されるように、現在再生中のクリップ#2において、プレイリストに記述されるIN点TCin#2と、OUT点TCout#2の略中点がクリップの中央位置TCcentとされる。この場合、IN点TCin#2に対応するフレーム番号Fin#2と、OUT点TCout#2に対応するフレーム番号Fout#2とをそれぞれ求め、フレーム番号Fin#2とフレーム番号Fout#2とを加算した値を2で除した商の小数点以下を切り上げてクリップ中央のフレーム番号Fcentとすることが考えられる。IN点およびOUT点間のフレーム数が偶数の場合は、フレーム番号Fcentが正確な中央位置から0.5フレーム分ずれることになるが、この場合も、クリップの中央位置であると見なす。
求められたフレーム番号Fcentに対応するタイムコードをクリップの中央位置として取得する。フレーム番号Fcentそのものをクリップの中央位置として取得してもよい。
ここでは、クリップの中央位置がマスタポジションに基づき、その都度、取得されるように説明したが、これはこの例に限定されない。例えば、光ディスク10が再生装置200に装填されNRT領域のデータが読み出されてピクチャポインタが取得された際に、光ディスク10上に存在する全てのクリップについて、中央位置を予め取得しておいてもよい。
なお、これらのクリップ中央位置の取得方法は、この発明の実施の一形態を実施可能とする例であって、これらの例に限られるものではない。
上述のステップS71およびステップS72の処理について、図22を用いてより具体的に説明する。ディスク上での並び順にクリップを再生する場合、図22Aに一例が示されるように、マスタポジションで示されるクリップ#2に対して1つ前のクリップは、ディスク上でクリップ#2に順方向の再生方向で前側に隣接するクリップ#1となり、目標再生フレームFprvは、クリップ#1の最後尾のフレームとされる(ステップS71)。また、マスタポジションで示されるクリップ#2に対して1つ後ろのクリップは、ディスク上でクリップ#3に順方向の再生方向で後側に隣接するクリップ#3となり、目標再生フレームFadvは、クリップ#3の先頭のフレームとされる(ステップS72)。
プレイリストに基づきクリップを再生する場合、図22Bに一例が示されるように、マスタポジションで示されるクリップ#2に対して1つ前のクリップは、プレイリスト上で順方向再生においてクリップ#2の前に再生されるように指示されているクリップ#1となり、クリップ#1における目標再生フレームFprvは、プレイリスト上でクリップ#1に対して指定されるOUT点TCout#1に対応するフレームとされる(ステップS71)。また、マスタポジションで示されるクリップ#2に対して1つ後ろのクリップは、プレイリスト上で順方向再生においてクリップ#2の後に再生されるように指示されているクリップ#3となり、クリップ#3における目標再生フレームFadvは、プレイリスト上でクリップ#3に対して指定されるIN点TCin#3に対応するフレームとされる(ステップS72)。なお、プレイリストに基づきクリップが再生される場合、各クリップのディスク上での位置関係は、クリップの再生順と対応している必要はない。
図16を参照して、より具体的に説明する。当初、出力デコーダがデコーダ13Aであるとしたとき、CPU14の制御によりスイッチ回路201において選択入力端201Aが選択されている。デコーダ13Bでは、上述の図20のステップS64で設定された目標再生フレームFprvまたは目標再生フレームFadvに基づき、目標フレームバッファ更新パターンが作成され、フレームメモリ17Bに、この目標フレームバッファ更新パターンのフレームがデコードされた状態で所定に溜め込まれるまで、デコードが行われる。
マスタポジションのクリップ情報が更新されると、マスタポジションで示されるフレームがクリップ間で移動される。このとき、上述したステップS61の処理に従い出力デコーダがデコーダ13Bに確定され、CPU14の制御により、スイッチ回路201において選択出力端201Bが選択される。
デコーダ13Bでは、上述のように、既に、過去にステップS64で設定された目標再生フレームFprvまたは目標再生フレームFadvに基づき作成された目標フレームバッファ更新パターンのフレームが、デコードされた状態で所定に溜め込まれている。したがって、スイッチ回路201が選択入力端201Aから選択入力端201Bへ切り換えられた直後から、フレームの出力を開始することができる。そのため、クリップ間で、フレームタイミングで連続的に出力を行うことができる。
また、マスタポジションのクリップ情報が更新されマスタポジションで示されるフレームがクリップ間で移動した直後は、マスタポジションにおいてクリップ情報が更新される直前のマスタポジションのクリップ情報で示されるクリップが、目標再生クリップとされ、目標再生クリップに対して設定される所定の目標再生フレームに基づき目標フレームバッファ更新パターンが作成され、デコード処理が開始される。
このとき、マスタポジションのクリップ情報の更新直後は、更新直前のマスタポジションのクリップ情報に示されるクリップをデコードしていたデコーダのフレームバッファには、目標フレームバッファ更新パターンによるデコード済みフレームが溜め込まれている。そのため、マスタポジションがのリップ情報の更新直後であっても、順方向および逆方向の1倍速以下の再生速度でのジョグ操作を、コマ落ちすることなく行うことができる。
すなわち、この発明の実施の一形態によれば、マスタポジションで示されるクリップおよびフレームが、現在出力が選択されているデコーダに対してそのままデコードするクリップおよび目標再生フレームとなり、出力が選択されていないデコーダに対しては、現在再生中のクリップに隣接するクリップとなる。つまり、2個のデコーダそれぞれに対して、目標再生フレームと目標再生クリップとが常に与えられ、それぞれのデコーダで各目標再生位置を基準とするデコード処理を独立的に行い、マスタポジションに応じて2個のデコーダ出力を切り換えることで、フレームが連続した再生を可能としている。
次に、この発明の実施の一形態における再生制御動作について、図23を用いて説明する。この実施の一形態における再生制御動作は、基本的には図15を用いて説明した制御と同様である。すなわち、実施の一形態においては、出力デコーダに対する制御と、他のデコーダに対する制御とが互いに並列的に行われる。
すなわち、図23に例示されるように、マスタポジションに基づきデコーダ13Aおよびデコーダ13Bに対する目標再生フレームがそれぞれ確定され(ステップS20’およびステップS20”)、デコーダ13Aおよびデコーダ13Bのそれぞれで、図15を用いて説明したような制御動作がなされる。デコーダ13Aおよびデコーダ13Bのそれぞれでは、例えば3フレームを周期として、1フレーム分のビデオデータのデコードが行われると共に、このデコードに同期して、マスタポジションに基づき選択された側のデコーダにおいて、フレームバッファ上の1フレーム分のビデオデータが出力される。
例えば、マスタポジションに示されるクリップのフレームをデコードする出力デコーダ(デコーダ13Aとする)において、第1フレーム目でマスタポジションに示されるフレームが目標再生フレームに確定される(ステップS20’)。マスタポジションは、上述したように、例えば再生速度情報に基づき決められる。再生速度情報は、例えばCPU14やより上位のシステムからの指示、さらには、操作部15に対する操作などに基づき決められる。
以下、転送ピクチャの確定(ステップS21’)および確定されたピクチャの転送(ステップS22’)、デコード情報の確定(ステップS23’)および確定されたデコード情報に基づく、ステップS22’で転送されたピクチャのデコード(ステップS24’)が、上述した図15の説明と同様にして行われる。
また、ステップS20’での目標再生フレームの確定に伴う出力ビデオ情報の確定(ステップS25’)および出力設定(ステップS26’)が、上述した図15の説明と同様にして行われる。
予測再生ピクチャのフレーム(再生フレーム(裏))をデコードするデコーダ(デコーダ13Bとする)における処理も同様である。第1フレーム目で、マスタポジションに基づき、目標再生フレームが確定される(ステップS20”)。ここで、再生フレーム(裏)をデコードするデコーダに対しては、目標再生フレームは、図21および図22を用いて説明したように、マスタポジションに示されるフレームの現在の位置に応じて一意的に確定される。また、目標速度は、0とされる。
以下、転送ピクチャの確定(ステップS21”)および確定されたピクチャの転送(ステップS22”)、デコード情報の確定(ステップS23”)および確定されたデコード情報に基づく、ステップS22”出転送されたピクチャのデコード(ステップS24”)が、上述した図15の説明と同様にして行われる。また、ステップS20”での目標再生フレームの設定に伴う出力ビデオ情報の確定(ステップS25”)および出力設定(ステップS26”)も、上述して図15の説明と同様にして行われる。
また、第1フレーム目のタイミングでマスタポジションに基づき出力デコーダが確定され(ステップS80)、第2フレームのタイミングで出力デコーダの設定がなされる(ステップS81)。例えば、ステップS81では、CPU14によるスイッチ回路201の切り替え制御がなされる。そして、第3フレーム目のタイミングで、ステップS81で設定されたデコーダからビデオ出力がなされる(ステップS82)。
上述のステップS20’乃至ステップS26’、ステップS20”乃至ステップS26”、ならびに、ステップS80乃至ステップS82で説明した処理は、フレームタイミング毎に順次、実行される。すなわち、マスタポジションで示されるフレームをデコードしている出力デコーダにおいて、第1フレーム目に同期して上述のステップS20’の処理による目標再生フレームが確定される。確定された目標再生フレームを新たな出力フレームとして、この新たな出力フレームに対応する新たな目標再生フレームの確定処理が次の第2フレーム目に同期して開始される。
目標再生クリップをデコードしている他方のデコーダにおいても同様にして、第1フレーム目に同期して上述のステップS20”の処理による目標再生フレームが確定される。確定された目標フレームに対応する新たな目標再生フレームの確定処理が次の第2フレーム目に同期して開始される。このとき、他方のデコーダに対する再生速度が0として設定されるため、デコードされたフレームが一旦フレームバッファに溜め込まれてしまうと、以降の処理は省略できる。実際には、デコードされたフレームがフレームバッファに溜め込まれた後も、他方のデコーダによるデコード処理は継続される。このとき、デコード処理は、キャッシュメモリ12に格納されているデータのみを用いて行うことができ、ディスク10からの読み出しを行う必要が無い。
上述では、この発明が記録媒体として光ディスクを用い、年輪構造でクリップが記録されている場合に適用されるように説明したが、これはこの例に限定されない。例えば、記録媒体上の記録フォーマットは、年輪構造に限られず、他のフォーマットであってもよい。また、記録媒体は、光ディスクに限られず、ハードディスクドライブや、半導体メモリであってもよい。さらに、この発明が記録媒体から再生されたデータに対して適用されるように説明したが、これはこの例に限定されず、安定的にストリームが供給可能な状況であれば、外部から供給されたストリームデータをデコードするようなデコーダ装置にもこの発明を適用することができる。
また、上述では、再生装置200が光ディスク10に記録されたビデオデータを再生する専用的なハードウェアであるように説明したが、これはこの例に限らず、例えばパーソナルコンピュータといった汎用的なコンピュータ装置(図示しない)を、再生装置200として用いることもできる。この場合、コンピュータ装置に搭載されるプログラムによって、再生装置200の機能を実現させることができる。またこの場合、ビデオデータのデコード処理は、ソフトウェア処理によりCPUで行ってもよいし、専用的なハードウェアをコンピュータ装置に搭載することもできる。