以下、この発明の実施の一形態を、図面を参照しながら説明する。図1は、この発明の第1の形態に適用可能な一例の再生装置の構成を概略的に示す。この再生装置は、コンピュータ装置1と、コンピュータ装置1と接続し、コンピュータ装置1に対してビデオストリームのデコード機能および再生制御機能をハードウェア的に提供するデコーダボード2とからなる再生システムとして構成される。
以下では、コンピュータ装置1がパーソナルコンピュータであって、デコーダボード2は、パーソナルコンピュータのスロットに装填され、PCIバス(Peripheral Component Interconnect Bus)に接続して用いられるPCIボードであるものとして説明する。なお、これはこの例に限定されず、再生装置は、ビデオストリームを再生するために設計および製造された専用の再生装置であってもよいし、ビデオストリームの記録再生を行うための記録再生装置であってもよい。さらに、他の目的のために設計および製造された装置に組み込まれているものでもよい。
コンピュータ装置1において、ノースブリッジ10とサウスブリッジ13とが互いに接続される。ノースブリッジ10は、例えばCPU(Central Processing Unit)11、メモリ12および図示されないグラフィック回路が接続され、これらCPU11、メモリ12およびグラフィック回路などの間でなされる、高速なデータ転送を制御する。
サウスブリッジ13は、ノースブリッジ10と比べて低速なデータ転送を制御し、主にインターフェイスの制御を行う。例えば、サウスブリッジ13は、ハードディスクドライブに対するインターフェイスを有し、ハードディスクドライブ14が接続される。また、例えばCD(Compact Disc)やDVD(Digital Versatile Disc)などを読み取り可能なドライブ装置に対するインターフェイスなども有する。さらに、サウスブリッジ13は、PCIバスに対するインターフェイスを有し、PCIバス15が接続される。PCIバス15は、PCIボードを接続可能なコネクタを1また複数有する。
ハードディスクドライブ14には、この再生装置で再生されるビデオストリームが格納される。ハードディスクドライブ14に格納されたビデオストリームは、CPU11により読み出され、サウスブリッジ13の制御に基づきPCIバス15に対して転送される。この実施の一形態においては、ハードディスクドライブ14に格納されたビデオストリームへのアクセスは、所定に区切られた複数フレームを単位として行われる。例えば、ビデオストリームがMPEG2のエレメンタリストリームであれば、ハードディスクドライブ14に格納されたビデオストリームに対するアクセスは、GOPを単位として行われる。
なお、ハードディスクドライブ14は、CPU11を動作させるためのプログラムデータなども、格納される。このプログラムデータは、例えばCD−ROM(Compact Disc-Read Only Memory)やDVD−ROM(Digital Versatile Disc-Read Only Memory)といった記録媒体に記録され、提供される。プログラムデータが記録された記録媒体を、コンピュータ装置1の図示されないドライブ装置に所定に装填して、記録媒体を再生し、プログラムデータを読み出してハードディスクドライブ14に所定にインストールする。ハードディスクドライブ14から読み出されたプログラムデータは、例えばメモリ12上に展開され、CPU11により読み込まれ実行される。プログラムデータとビデオストリームとは、それぞれ別のハードディスクドライブに格納すると、アクセス性などの面から好ましい。
デコーダボード2において、コントロールバス22に対してPCIブリッジ20、デコード部30およびCPU25が接続される。PCIブリッジ20は、コンピュータ装置1のPCIバス15に対するインターフェイスである。すなわち、このデコーダボード2は、コンピュータ装置1のPCIバス15に設けられたコネクタに装着され、PCIバス15とPCIブリッジ20とが電気的に接続されて用いられる。PCIブリッジ20は、メモリ21をバッファとして用い、PCIバス15との間でのデータのやりとりを制御する。
例えば、CPU11からのコマンドや各種データがPCIバス15を介してPCIブリッジ20に供給される。PCIブリッジ20は、供給されたCPU11からのコマンドや各種データを、コントロールバス22を介してCPU25に供給する。また例えば、ハードディスクドライブ14から読み出されたビデオストリームがPCIバス15を介してPCIブリッジ20に供給される。PCIブリッジ20は、供給されたビデオストリームを一旦メモリ21に溜め込んでから、デコード部30に供給する。
デコード部40は、概略的には、デコーダ23とフレームメモリ24とを有する。デコーダ23は、供給されたビデオストリームを復号化してフレーム単位でフレームメモリ24に書き込む。フレームメモリに書き込まれたデータは、所定に読み出され、出力ビデオデータとして出力される。
CPU25は、メモリ26をワークメモリとして用い、CPU11と各種命令やデータのやりとりを行いながら、デコーダボード2の各部を制御し、デコーダボード2における復号化処理を制御する。なお、デコーダボード2におけるビデオデータに対する処理は、図示されないクロック発生回路により発生された、ビデオフレーム周期に同期したフレーム同期信号に基づきタイミング制御されて行われる。
上述のような構成において、CPU11により、ハードディスクドライブ14から所定の複数フレーム単位でビデオストリームが読み出されると共に、CPU11とCPU25との間で、PCIバス15を介してコマンドや各種データのやりとりが行われる。このやりとりに基づき、ハードディスクドライブ14から読み出されたビデオストリームがサウスブリッジ13およびPCIバス15を介してPCIブリッジ20に供給され、メモリ21に一旦溜め込まれる。
CPU25は、CPU11の命令に基づき、PCIブリッジ20に対して、メモリ21に溜め込まれたビデオストリームをフレーム単位で読み出してデコーダ23に供給するように命令する。メモリ21に溜め込まれたビデオストリームは、例えばCPU11からの再生方向の指示に基づくCPU25の命令に従い、供給された順序とは異なる順序にフレーム単位で並び替えられて読み出される。また、CPU11からの再生速度を指示する速度情報に基づくCPU25の命令に従い、読み出しのタイミングが制御される。
デコーダ23は、メモリ21から供給されたフレーム単位のビデオデータをCPU25から供給される復号化開始命令に従い復号化し、フレームメモリ24に書き込む。フレームメモリ24に書き込まれたビデオデータは、CPU25から供給される表示開始命令に従い読み出され、出力ビデオデータとして出力される。
図2は、デコーダ23の一例の構成を示す。デコード回路30および出力アドレス決定回路31は、それぞれコントロールバス22を介してCPU25と接続され、CPU25からの命令に基づき、ビデオストリームの復号化や、復号化されてフレームメモリ24に書き込まれたビデオデータの読み出しを行う。メモリコントローラ32は、フレームメモリ24に対するアクセス制御を行う。
デコーダ23に供給されたビデオデータは、デコード回路30で復号化され、CPU25の命令に基づきメモリコントローラ32にアドレス制御され、フレームメモリ24に書き込まれる。また、デコード回路30は、供給されたビデオデータの復号化を、CPU25からの命令に基づき、必要に応じてフレームメモリ24上にあるビデオデータを用いて行い、復号化されたビデオデータをフレームメモリ24に書き込む。
一方、CPU25は、次のタイミングで出力するフレームを指示する表示開始命令を、コントロールバス22を介して出力アドレス決定回路31に供給する。この表示開始命令は、例えば、出力アドレス決定回路31が有するレジスタなどに書き込まれ、次に供給される表示開始命令により更新される。換言すれば、表示開始命令は、新たな表示開始命令が供給されるまで、保持される。出力アドレス決定回路31は、この表示開始命令に従い、フレームメモリ24から読み出すべきフレームのアドレスを求め、このアドレスに基づきメモリコントローラ32を介してフレームメモリ24からビデオデータをフレーム単位で読み出す。フレームメモリ24から読み出されたビデオデータは、出力ビデオデータとして出力される。
次に、この発明の実施の一形態によるスロー再生の制御方法について説明する。先ず、理解を容易とするために、この発明に適用可能なビデオストリームおよびビデオストリームの1倍速再生時の再生制御について、概略的に説明する。
この発明の実施の一形態では、ビデオデータの符号化方式として、背景技術の項で既に述べたMPEG2方式を適用する。また、1GOPが15フレームからなり、I、PおよびBピクチャの表示順は、「B0B1I2B3B4P5B6B7P8B9B10P11B12B13P14」であり、ビデオストリーム(以下、エレメンタリストリーム(Elementary Stream:ES)と呼ぶ)におけるI、PおよびBピクチャの配列は、「I2B0B1P5B3B4P8B6B7P11B9B10P14B12B13」であるものとする。
この実施の一形態では、ハードディスクドライブ14から読み出され、デコーダボード2に入力されたエレメンタリストリームのこのピクチャ配列を、フォワード(正方向)再生の際には、下記の配列(1)のように並べ替えて、デコーダ23に入力する。
I2P5P8P11P14B0B1B3B4B6B7B9B10B12B13 ・・・(1)
また、リバース(逆方向)再生の際には、下記の配列(2)のように並べ替えて、デコーダ23に入力する。なお、リバース再生の場合、B1ピクチャおよびB0ピクチャは、符号化順で1つ前のGOPのピクチャである。
I2P5P8P11P14(B1)(B0)B13B12B10B9B7B6B4B3 ・・・(2)
このように並べ替えることで、MPEG2ビデオストリームのリバース再生が容易に行えると共に、フォワード再生をリバース再生と同様の処理で行うことができる。
データの並べ替えは、デコーダボード2のメモリ21を用いて行う。すなわち、CPU11により、ハードディスクドライブ14から1乃至複数GOPのエレメンタリストリームが読み出され、PCIバス15を介してデコーダボード2に転送される。この1乃至複数GOPのエレメンタリストリームは、デコーダボード2において、PCIブリッジ20に入力され、メモリ21に溜め込まれる。なお、メモリ21は、少なくとも4GOP分の容量を有するものとする。
なお、CPU25は、メモリ21に複数GOP分が溜め込まれたエレメンタリストリームについて、GOPの先頭と、各フレーム(ピクチャ)の境界と、各ピクチャのピクチャタイプ(I、PおよびB)とを知ることができ、これらの情報に基づき、メモリ21から任意のピクチャ順でデータを読み出すことができる。
例えば、CPU11は、ハードディスクドライブ14に格納されたエレメンタリストリーム中のGOPヘッダをサーチし、サーチ結果に基づきエレメンタリストリームをGOP単位でハードディスクドライブ14から読み出し、デコーダボード2のメモリ21に対して、GOP先頭が書き込まれるアドレスを指定して書き込む。CPU11からCPU25に対して、このGOP先頭のメモリ21上でのアドレス情報が送信される。このアドレス情報に基づき、CPU25は、メモリ21上に書き込まれたエレメンタリストリームのGOP先頭にアクセスし、さらに、GOP内の各ピクチャヘッドをサーチし、ピクチャ境界と、各ピクチャのピクチャタイプを取得する。
図3および図4を用いて、1倍速再生の際のフォワード再生の再生制御について説明する。図3は、デコーダ23における入出力および内部処理の概略的なシーケンスを示す。この図3に一例が示されるシーケンスは、エレメンタリストリームの復号化の開始時に、CPU25により予めスケジューリングされる。
図3において、「ES入力」は、デコーダ23に対して入力されるエレメンタリストリームのピクチャ順序を示す。エレメンタリストリームは、上述した配列(1)に従ったピクチャ順序でデコーダ23に入力される。デコード回路30では、CPU25からの復号化開始命令に従い入力されたピクチャを復号化して、「デコード」に示されるようなピクチャ順序でフレームメモリ24に書き込む。この図3の例では、ES入力に対して1フレーム同期信号分遅延して、復号化されたピクチャがフレームメモリ24に書き込まれている。フレームメモリ24に書き込まれたピクチャは、出力可能となる。CPU25から、「表示命令」に示されるピクチャ順序で表示開始命令が送信される。この表示開始命令に従い、フレームメモリ24から、「出力」に示されるようなピクチャ順序で、フレーム同期信号に同期してピクチャが読み出され、出力される。この図3の例では、出力は、表示開始命令に対して1フレーム同期信号分遅延される。「ビデオ出力」は、デコーダボード2から外部に出力されるストリームを示す。
なお、図3における「ES入力」、「デコード」、「表示命令」、「出力」および「ビデオ出力」などの意味は、後述する同様の図において、共通である。
図4は、図3のシーケンスに基づくフレームメモリ24の一例の使用状況を、GOP#1の先頭から復号化が開始されるものとして示す。図4において、縦軸は、図3の「デコード」に対応し、フレームメモリ24に対して書き込まれるピクチャをフレーム同期信号単位の時系列で示す。横軸は、出力されるピクチャを示す。出力ピクチャは、時系列的には、図4中に「●(黒丸)」で示されるようにして出力される。また、図4において、「◎(二重丸)」は、横軸のタイミングでフレームメモリ24に書き込まれるピクチャを示し、「○(丸印)」は、横軸のタイミングで既に書き込まれているピクチャを示す。すなわち、図4の横軸は、そのタイミングでフレームメモリ24に書き込まれているピクチャを示している。
先ず、I2ピクチャが復号化されフレームメモリ24に書き込まれ、続けて、P5ピクチャ、P8ピクチャ、P11ピクチャおよびP14ピクチャが、図中に矢印で示されるように、それぞれ1つ前に復号化されたIまたはPピクチャを用いて復号化され、それぞれフレームメモリ24に書き込まれる。次に、B0ピクチャおよびB1ピクチャが、1つ前のGOPのP14ピクチャと、このGOP#1のI2ピクチャとを用いて復号化される。この図4の例では、GOP#1から復号化が開始されているので、B0ピクチャおよびB1ピクチャを復号化する必要が無い。
続けて、B3ピクチャおよびB4ピクチャ、B6ピクチャおよびB7ピクチャ、B9ピクチャおよびB10ピクチャ、ならびに、B12ピクチャおよびB13ピクチャが順次、図中に矢印で示されるように、それぞれのピクチャの表示順で前後のIまたはPピクチャを用いて復号化され、それぞれ表示開始命令により自身の表示がなされるまで、フレームメモリ24に保持される。
このように、この実施の一形態では、IピクチャおよびPピクチャは、GOP内の全てのBピクチャより先に復号化され、自身の出力がなされるまで、フレームメモリ24内に保持される。このような、他のピクチャから参照されるためにフレームメモリ24内に保持されるピクチャを、アンカーピクチャと称する。例えば、Iピクチャおよび4枚のPピクチャは、アンカーピクチャである。
なお、図4において、時系列方向でGOP#2のI2ピクチャ以降は、GOP#1のI2ピクチャからB13ピクチャまでの処理が繰り返されるので、詳細な説明を省略する。
各タイミングにおけるフレームメモリ24の占有フレーム数を、図4の右端に示す。なお、時系列上でGOP#2以降の占有フレーム数は、GOP#1の対応する部分の処理が繰り返されるものとして示す。このように、フォワード再生においては、占有フレーム数が7フレームを超えることがない。フォワード再生時には、フレームメモリ24に書き込まれたピクチャのそれぞれは、表示開始命令に従い出力された時点で解放可能である。開放された領域には、新たなピクチャを上書きすることができる。
図5および図6を用いて、1倍速再生の際のリバース再生の再生制御について説明する。図5は、上述した図3と対応する図であって、デコーダ23におけるリバース再生時の入出力および内部処理の概略的なシーケンスを示す。この図5に示されるシーケンスも、上述と同様に、エレメンタリストリームの復号化開始時に、CPU25により予めスケジューリングされる。
図5において、エレメンタリストリームは、「ES入力」に示されるように、上述した配列(2)に従ったピクチャ順序でデコーダ23に入力される。デコーダ回路30では、CPU25からの復号化開始命令に従い、入力されたピクチャを復号化して、「デコード」に示されるようなピクチャ順序でフレームメモリ24に書き込む。この図5の例では、ES入力に対して1フレーム同期信号分遅延して、ピクチャが復号化されフレームメモリ24に書き込まれている。フレームメモリ24に書き込まれたピクチャは、出力可能となる。
CPU25から、「表示命令」に示されるピクチャ順序で表示開始命令が送信される。リバース再生の場合には、上述のフォワード再生とは逆に、P14ピクチャからB0ピクチャに向けた表示順で表示されるように表示開始命令が送信される。この表示開始命令に従い、フレームメモリ24から、「出力」に示されるようなピクチャ順序でピクチャが読み出され、表示開始命令に対して1フレーム同期信号分遅延されて出力される。
図6は、図5のシーケンスに基づくフレームメモリ24の使用状況を、GOP#1の先頭から復号化が開始されるものとして示す。図6中の各部の意味は、上述した図4と同様である。
IピクチャおよびPピクチャの処理は、フォワード再生の場合と同様に、I2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャおよびP14ピクチャの順に、それぞれ1つ前に復号化されたIまたはPピクチャを用いて復号化され、それぞれフレームメモリ24に書き込まれる。
リバース再生の場合、上述したように、P14ピクチャの次に復号化されるB1ピクチャおよびB0ピクチャは、リバース再生の入力順で1つ前のGOP#0に含まれるピクチャである。この図6の例では、GOP#1から復号化が開始されており、B1ピクチャおよびB0ピクチャの復号化が省略されている。
続けて、B13ピクチャおよびB12ピクチャ、B10ピクチャおよびB9ピクチャ、B7ピクチャおよびB6ピクチャ、ならびに、B4ピクチャおよびB3ピクチャが順次、図中に矢印で示されるように、それぞれのピクチャの表示順で前後のIまたはPピクチャを用いて復号化され、それぞれ表示開始命令により自身の表示がなされるまで、フレームメモリ24に保持される。リバース再生の場合でも、上述したフォワード再生の場合と同様に、IピクチャおよびPピクチャは、GOP内の全てのBピクチャより先に復号化され、自身の出力がなされるまで、フレームメモリ24内に保持される。
なお、図6において、時系列方向でGOP#2のI2ピクチャ以降は、GOP#1のI2ピクチャからB3ピクチャまでの処理が繰り返されるので、詳細な説明を省略する。
各タイミングにおけるフレームメモリ24の占有フレーム数を、図6の右端に示す。なお、時系列上でGOP#2以降の占有フレーム数は、GOP#1の対応する部分の処理が繰り返されるものとして示す。リバース再生の場合には、B0ピクチャの復号化の際にI2ピクチャが必要となるため、上述したフォワード再生の場合とは異なり、B0ピクチャの復号化のタイミングにおいて占有フレーム数が8フレームとなる。その他のタイミングでは、占有フレーム数が7フレームを超えることがない。したがって、上述のフォワード再生時の処理と併せて、フレームメモリ24の容量を少なくとも8フレーム分とすることで、フォワード再生およびリバース再生の何方にも対応可能である。
なお、リバース再生時には、フレームメモリ24上のI2ピクチャは、自身の出力が完了した後も、B0ピクチャの復号化が完了するまでは解放されない。I2ピクチャ以外のピクチャに関しては、自身の出力がなされた時点で解放可能である。
また、フォワード再生およびリバース再生の何れの場合も、フレームメモリ24上のどの領域にどのピクチャを書き込むか、といった制御は、例えば復号化のシーケンスをスケジューリングする際に、CPU25により適宜に行われる。例えば、デコーダボード2に供給されるエレメンタリストリームのフォーマットが予め分かっていれば、所定のテーブルやアルゴリズムを用いて、フレームメモリ24に対する各ピクチャのマッピングを制御することができる。
このように、この実施の一形態に適用される再生制御方法によれば、メモリ21上でエレメンタリストリームのピクチャ順序を所定に並び替えてデコーダ23に供給するようにしているため、フォワード再生とリバース再生とを略同様の処理で行うことができ、必要なフレームメモリも8フレーム分で済む。
次に、この発明の実施の一形態に適用可能なスロー再生制御について説明する。このスロー再生制御は、デコーダ23に対するビデオデータ(ピクチャ)の入力と、CPU25からデコーダ23に供給される表示開始命令とを共に停止することで行うようにしている。これにより、フォワードおよびリバース方向のスロー再生を容易に、応答性よく行うことができる。
また、この発明では、再生の開始時からスロー再生を行う場合において、再生の開始時にピクチャの出力に先立って復号化されるピクチャを、1倍速再生の場合と同様のタイミングで予め入力および復号化する。これにより、スロー再生から再生を開始する際の応答性を向上させることができ、また、スロー再生開始から実際にスロー再生による出力が得られるまでの遅延時間がスロー再生の再生速度に依存されないようにできる。
なお、スロー再生は、2以上のフレーム同期信号毎に1回、出力フレームを更新することで実現できる。換言すれば、スロー再生は、同一フレーム画像を固定的に出力するポーズ再生と、ステップ命令により1フレームずつ送りながら出力するステップ再生とを組み合わせた動作であるということができる。例えば、1フレーム期間のポーズ再生と、1回のステップ再生との組み合わせを繰り返すことで、1/2倍速再生となる。また例えば、2フレーム期間のポーズ再生と、1回のステップ再生との組み合わせを繰り返すと、1/3倍速再生となる。以下では、1/2倍速再生の場合について、説明する。
図7は、フォワード再生時に、ポーズ再生、ステップ再生および1/2倍速のスロー再生を行う場合の一例のシーケンスを示す。ES入力におけるI、PおよびBピクチャの配列は、上述の図3の例と同一の配列(1)である。先ず、ポーズ再生について説明する。例えばユーザは、ビデオ出力で出力されたビデオデータによる再生映像を見ながら、所望の再生映像位置でポーズ再生が行われることを期待して、再生装置を操作する。図7の例では、ユーザにより、出力データにおけるI2ピクチャのタイミングでポーズ再生の指示がなされる。この指示に基づき、CPU11からポーズ再生命令200が送信される。
なお、図7では、説明のため、1フレーム同期信号期間の中間付近でポーズ再生の指示がなされたものとしている。ポーズ再生指示によるポーズ命令200は、フレーム同期信号に同期してなされるため、ポーズ命令200は、命令が送信されたタイミングの直後のフレーム同期信号のタイミングから有効となる。例えば、上述のようにIピクチャのタイミングでポーズ命令200が送信された場合、実際には、次のフレーム期間からポーズ再生が開始され、B3ピクチャが固定的に映出される。
ユーザによるポーズ再生指示は、CPU11により受け取られる。CPU11は、このポーズ再生指示に応じて、再生速度を示す速度情報を、出力画像の更新を全く行わないことを示す「0」としてCPU25に伝える。CPU25は、この速度情報に基づき、デコーダ23に対する復号化開始命令および表示開始命令を停止する。それと共に、CPU25は、デコーダ23に対するピクチャの入力を停止する。例えば、CPU25は、メモリ21からのピクチャの読み出しを停止させて、デコーダ23に対するピクチャの入力を停止する。メモリ21からは通常通りピクチャを読み出し、読み出されたピクチャをデコーダ23に供給しないようにしてもよい。
図7を参照して、ポーズ再生指示に応じたデコーダ23各部の動作について説明する。出力データにおけるI2ピクチャのタイミングは、ES入力のB6ピクチャに対応する。したがって、ポーズ命令200に従い、ES入力においてB6ピクチャの次のピクチャ(B7ピクチャ)の入力が停止される。
CPU25は、ES入力により入力されたB6ピクチャに対する復号化開始命令を出し、次のピクチャからの復号化開始命令を停止する。復号化されたB6ピクチャは、1倍速のフォワード再生の場合と同様にして、フレームメモリ24に書き込まれる。
一方、出力データにおけるI2ピクチャのタイミングは、表示開始命令のB3ピクチャに対応する。したがって、B3ピクチャに対する表示開始命令が送信された後、次のピクチャ(B4ピクチャ)からの表示開始命令がポーズ命令200に従い停止される。表示開始命令が停止され表示開始命令が無い期間では、表示開始命令が停止される直前のピクチャがフレームメモリ24からフレーム同期信号に同期して繰り返し読み出される。この図7の例では、B3ピクチャがフレームメモリ24から繰り返し読み出されることになり、ポーズ再生指示に応じたポーズ再生が実現される。
ポーズ再生中は、フレームメモリ24内の各ピクチャは、保持される。そのため、ポーズ再生が解除されポーズ再生命令により入力を停止されたピクチャがES入力としてデコーダ23に入力されても、フレームメモリ24内のピクチャを用いた復号化を実行することができる。
例えば、図7の例で、出力データのI2ピクチャのタイミングでポーズ命令200が送信され、ポーズ命令200から2フレーム後(図7のステップ命令201の位置)のタイミングでポーズ再生を解除する指示が送信された場合について考える。
この場合、ポーズ再生解除の指示の直後のフレーム同期信号のタイミングでポーズ再生が解除され、通常の復号化動作が開始される。したがって、ES入力では、ポーズ再生指示の際に入力が停止されたB7ピクチャからピクチャの入力が開始され、入力されたB7ピクチャの復号化開始命令が送信される。この復号化開始命令に応じて、フレームメモリ24に保持されているP5ピクチャおよびP8ピクチャを用いてB7ピクチャが復号化される。
表示開始命令についても同様に、ポーズ再生指示により停止されたB3ピクチャの次のピクチャであるB4ピクチャから表示開始命令が出力され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB4ピクチャが出力される。
次に、図7を参照してステップ再生指示に応じたデコーダ23各部の動作について説明する。例えば、ポーズ再生中に現在表示されているフレームの次のフレームを見たい場合に、ステップ再生が指示される。このステップ再生指示に応じて、CPU11からCPU25に対してステップ再生を行うステップ命令201が送信される。CPU25は、このステップ命令201に応じて、デコーダ23の各部をステップ再生を行うように制御する。この制御は、上述のポーズ再生動作におけるポーズ再生解除の際の制御と、略同一である。
例えば、図7の例で、ポーズ再生中にステップ命令201が送信された場合、ステップ命令201の直後のフレーム同期信号のタイミングで、1フレーム分の復号化動作が行われる。
すなわち、ES入力では、直前のポーズ再生により入力が停止されたB6ピクチャの次のB7ピクチャが入力され、入力されたB7ピクチャの復号化開始命令が送信される。この復号化開始命令に従い、フレームメモリ24に保持されているP5ピクチャおよびP8ピクチャを用いてB7ピクチャが復号化され、フレームメモリ24に所定に書き込まれる。表示開始命令についても同様に、直前のポーズ再生により更新が停止されているB3ピクチャの次のピクチャであるB4ピクチャの表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB4ピクチャが出力される。
なお、ステップ再生動作においては、CPU25は、CPU11により送信されるフレーム更新命令毎に、デコーダ23に対して次のピクチャを入力すると共に、入力された次のピクチャの復号化開始命令と、出力フレームを更新する表示開始命令とを、フレーム同期信号に合わせて送信する。すなわち、ステップ再生動作では、CPU11からCPU25に対してフレーム更新命令が送信されるまでは、デコーダ23に対してピクチャが入力されず、出力フレームの更新も行われない。
次に、スロー再生時の動作について説明する。再生速度が1倍速未満のスロー再生は、フレーム同期信号に合わせて同一のフレームを繰り返し出力し、速度情報に応じた更新タイミングで出力フレームを更新することで、実現される。CPU25は、CPU11から送信された速度情報の値が「1」未満且つ「0」以上であれば、スロー再生が指示されたと判断し、速度情報に応じたフレームの更新タイミングを求める。フレームの更新タイミングは、例えば与えられた速度情報に基づく計算や、予め求められ例えばメモリ26に記憶されたテーブルを参照するなどにより、求められる。例えば1/2倍速のスロー再生の場合は、速度情報「0.5」に基づき、2回のフレーム同期信号に対して1回、出力フレームの更新を行うことで実現される。
図7を参照して、スロー再生時のデコーダ23各部の動作について説明する。CPU11からCPU25に対して、速度情報として値「0.5」が送信され、CPU25に対して1/2倍速のスロー再生を指示する1/2倍速命令202が出される。この1/2倍速命令202は、次のフレーム同期信号のタイミングで有効とされる。CPU25は、この1/2倍速命令202に基づき、デコーダ23のES入力としてB10ピクチャを入力し、入力されたB10ピクチャの復号化開始命令をデコーダ23に送信する。それと共に、CPU25は、デコーダ23に対して、出力フレームを次のB6ピクチャに更新するように、表示開始命令を送信する。この表示開始命令に応じて、表示開始命令から1フレーム同期信号分遅延して、出力フレームが更新される。
Bピクチャを更新する表示開始命令が送信された次のフレーム同期信号のタイミングでは、ES入力において入力が停止され、それと共に復号化開始命令も送信されない。入力が停止されたので、CPU25から表示開始命令が送信されず、そのため、出力フレームが更新されず、B6ピクチャが再び出力される。
以降、1/2倍速のスロー再生時には、この動作が繰り返し行われる。したがって、スロー再生は、1回のステップ再生と、当該ステップ再生により更新されたフレームに対する所定フレーム期間分のポーズ再生とを組み合わせた動作と等価であるといえる。
すなわち、CPU25は、出力フレームの更新タイミングでないときは、デコーダ23に対する復号化開始命令および表示開始命令の送信を停止し、上述したポーズ再生動作をデコーダ23に行わせる。これにより、デコーダ23は、上述したように、入力されるピクチャが無いため出力側のピクチャを保持し、次の更新タイミングになるまで同一ピクチャを繰り返し出力する。
また、出力フレームの更新タイミングでは、復号化開始命令と表示開始命令とをデコーダ23に送信し、上述したステップ再生動作をデコーダ23に行わせる。これにより、デコーダ23は、上述したように、入力されたピクチャの復号化と、出力ピクチャの更新とを行う。
ここで、再生開始時からスロー再生(1/2倍速スロー再生とする)を行う場合について考える。再生開始時にスロー再生が指示されると、図8に一例が示されるように、復号化されたピクチャの出力に先立って、I2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャおよびP14ピクチャが順次、デコーダ23に入力される。デコーダ23は、先行的に入力されたこれらのIピクチャおよび4枚のPピクチャを復号化し、フレームメモリ24に書き込む。Iピクチャおよび4枚のPピクチャが復号化されると、最初に出力される予定のB0ピクチャがデコーダ23に入力される。
従来は、このIピクチャおよび4枚のPピクチャ、ならびに、最初に出力が予定されているB0ピクチャのデコーダ23に対する入力および復号化を、スロー再生による再生速度のタイミングで行っていた。例えば、CPU25からデコーダ23に対して送信された1/2倍速スロー命令300は、直後のフレーム同期信号302から有効となる。このフレーム同期信号302から、上述したような1/2倍速のスロー再生のシーケンスに従ってスロー再生動作が開始され、最初にI2ピクチャが入力および復号化され、以降、1フレーム同期信号期間おきに4枚のPピクチャが順次入力および復号化される。このようなスロー再生制御方法では、既に問題点として説明したように、スロー再生速度に応じて、1/2倍速スロー命令から実際にスロー再生による出力が得られるまでの遅延時間が長くなることになり、応答性が悪い。
そこで、この発明の実施の一形態では、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い、出力を行わないピクチャについて、予め復号化してフレームメモリ24に書き込むようにしている。このとき、当該ピクチャのデコーダ23への入力や、デコーダ23における復号化は、予め通常の1倍速再生のシーケンスに従って、フレーム同期信号毎に行うようにする。
このように、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い、出力を行わないピクチャについて、通常の1倍速再生のシーケンスに従って先行的に復号化を行うことで、例えば再生の開始時からスロー再生が指示されているような場合でも、応答性よくスロー再生を開始することができる。
図9を用いて、より具体的に説明する。なお、この図9および上述した図8は、例えば図3における「デコード」、「出力」および「ビデオ出力」を抜き出して簡略化した図である。Iピクチャおよび4枚のPピクチャは、全てのBピクチャに先立ってデコーダ23に入力され、復号化されてフレームメモリ24に書き込まれる。これらのIピクチャおよびPピクチャは、少なくとも、B1ピクチャの出力タイミングが経過するまで出力されない。また、最初に出力される予定のB0ピクチャは、勿論、デコーダ23に入力されてから少なくとも1フレーム同期信号期間分後に、出力される。そこで、Iピクチャおよび4枚のPピクチャと、最初に出力が予定されるB0ピクチャとを、先行的にデコーダ23に入力し復号化するピクチャとし、例えば再生の開始時からスロー再生が指示された場合に、1倍速再生のシーケンスに従ってデコーダ23への入力および復号化を行い、フレームメモリ24に書き込む。
そして、B0ピクチャの次からデコーダ23に入力される各ピクチャ(B1ピクチャ以降のピクチャ)に対するデコーダ23への入力および復号化を、デコーダ23の1/2倍速スロー再生のシーケンスに従い行う。デコーダ23における1/2倍速スロー再生のシーケンスは、図7を用いて既に説明した動作と同様なので、繁雑さを避けるために、詳細な説明を省略する。
上述したように、CPU25は、メモリ21にエレメンタリストリームが書き込まれた際に、GOPの先頭と、各フレーム(ピクチャ)の境界と、各ピクチャのピクチャタイプ(I、PおよびB)とを取得している。そのため、1/2倍速スロー命令300直後のIピクチャおよび4枚のPピクチャ、ならびに、最初に出力される予定のB0ピクチャの入力および復号化を1倍速再生のタイミングで行い、それ以降のピクチャの入力および復号化を1/2倍速再生の動作に従い行うように制御するのは、容易である。
この発明による再生制御方法は、リバース再生時にも、上述のフォワード再生の場合と同様に適用できる。図10は、リバース再生時に、ポーズ再生、ステップ再生および1/2倍速のスロー再生を行う場合の一例のシーケンスを示す。ES入力におけるI、PおよびBピクチャの配列は、上述の図5の例と同一である。また、リバース再生時の動作は、基本的な考え方は、図7を用いて説明したフォワード再生時の動作と共通である。
すなわち、ポーズ再生など、同一のフレームを繰り返し出力する場合には、デコーダ23に対するピクチャの入力および復号化開始命令を停止すると共に、出力フレームに対する表示開始命令を停止して出力フレームの更新を行わない。また、ポーズ再生を解除したり、ステップ再生を行うなど、一旦更新が停止されていた出力フレームを再び更新する場合には、入力が停止された次のピクチャを入力し、入力されたピクチャに対する復号化開始命令を出すと共に、表示開始命令が停止された次の出力フレームに対する表示開始命令が送信され、出力フレームが更新される。
図10を参照して、リバース再生時のポーズ再生指示に応じたデコーダ23各部の動作について説明する。ユーザにより、出力データにおけるP14ピクチャのタイミングでポーズ再生の指示がなされポーズ命令203が送信された場合、出力データにおけるP14ピクチャのタイミングに対応するES入力のB10ピクチャの次のピクチャ(B9ピクチャ)の入力が停止される。また、ES入力により入力されたB10ピクチャの復号化開始命令が送信され、次のピクチャからの復号化開始命令が停止される。復号化されたB10ピクチャは、1倍速のリバース再生の場合と同様にして、フレームメモリ24に書き込まれる。
出力データ側では、出力データのP14ピクチャのタイミングに対応するB13ピクチャに対する表示開始命令が送信された後、次のピクチャ(B12ピクチャ)からの表示開始命令が停止され、表示開始命令が無い期間に、表示開始命令が停止される直前のピクチャ(図10の例ではB13ピクチャ)がフレームメモリ24からフレーム同期信号に同期して繰り返し読み出される。
リバース再生時においても、ポーズ再生中は、フレームメモリ24内の各ピクチャは、保持される。そのため、ポーズ再生が解除されポーズ命令203により入力を停止されたピクチャがES入力としてデコーダ23に入力されても、フレームメモリ24内のピクチャを用いた復号化を実行することができる。
ポーズ再生の解除が指示されると、指示直後のフレーム同期信号のタイミングでポーズ再生が解除され、通常の復号化動作が開始される。例えば、図10の例で、出力データのP14ピクチャのタイミングでポーズ命令203が送信され、ポーズ命令203から2フレーム後(図10のステップ命令204の位置)のタイミングでポーズ再生を解除する指示が送信された場合、ES入力では、ポーズ命令203の際に入力が停止されたB9ピクチャからピクチャの入力が開始され、ポーズ再生解除の指示の直後のフレーム同期信号のタイミングでB9ピクチャからの復号化開始命令が送信される。この復号化開始命令に従い、フレームメモリ24に保持されているP8ピクチャおよびP11ピクチャを用いてB9ピクチャが復号化される。
表示開始命令についても同様に、ポーズ再生指示により停止されたB13ピクチャの次のピクチャであるB12ピクチャから表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB12ピクチャが出力される。
次に、図10を参照して、リバース再生時のステップ再生指示に応じたデコーダ23各部の動作について説明する。例えば、ポーズ再生中に現在表示されているフレームの次のフレーム(リバース再生の場合は、フォワード再生における1つ前のフレーム)を見たい場合に、ステップ再生が指示され、CPU11からCPU25に対してステップ再生を行うステップ命令204が送信される。
例えば、図10の例で、ポーズ再生中にステップ命令204が送信された場合、ES入力では、直前のポーズ命令203により入力が停止されたB10ピクチャの次のB9ピクチャが入力され、復号化開始命令が送信される。この復号化開始命令に従い、フレームメモリ24に保持されているP8ピクチャおよびP11ピクチャを用いてB9ピクチャが復号化され、フレームメモリ24に所定に書き込まれる。
表示開始命令についても同様に、直前のポーズ命令203により更新が停止されているB13ピクチャの次のピクチャであるB12ピクチャの表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB12ピクチャが出力される。この場合も、フォワード再生の場合と同様に、CPU11からCPU25に対してフレーム更新命令が送信されるまでは、デコーダ23に対してピクチャが入力されず、出力フレームの更新も行われない。
次に、スロー再生時の動作について説明する。リバース再生時においても、上述のフォワード再生と同様に、再生速度が1倍速未満のスロー再生は、フレーム同期信号に合わせて同一のフレームを繰り返し出力し、速度情報に応じた更新タイミングで出力フレームを更新することで、実現される。
図10を参照して、リバース再生時のスロー再生におけるデコーダ23各部の動作について説明する。CPU11からCPU25に対して、速度情報として値「0.5」が送信され、CPU25に対して1/2倍速のスロー再生を指示する1/2倍速命令205が出される。なお、リバース再生を指示する命令は、予めCPU11からCPU25に送信されているものとする。速度情報にリバース再生命令を含めることもできる。1/2倍速命令205は、次のフレーム同期信号のタイミングで有効とされる。CPU25は、この1/2倍速命令205に基づき、デコーダ23のES入力としてB6ピクチャを入力し、入力されたB6ピクチャの復号化開始命令をデコーダ23に送信すると共に、デコーダ23に対して、出力フレームを次のB10ピクチャに更新するように、表示開始命令を送信する。この表示開始命令に応じて、1フレーム同期信号分遅延して出力フレームが更新される。
Bピクチャを更新する表示開始命令が送信された次のフレーム同期信号のタイミングでは、ES入力において入力が停止され、それと共に復号化開始命令も送信されない。入力が停止されたので、CPU25から表示開始命令が送信されず、そのため、出力フレームが更新されず、B10ピクチャが再び出力される。
以降、1/2倍速のスロー再生時には、この動作が繰り返し行われる。したがって、リバース再生においても、スロー再生は、1回のステップ再生と、当該ステップ再生により更新されたフレームに対する所定フレーム期間分のポーズ再生とを組み合わせた動作と等価であるといえる。
リバース再生開始時からスロー再生(1/2倍速スロー再生とする)を行う場合について考える。リバース再生開始時にスロー再生が指示されると、図11に一例が示されるように、復号化されたピクチャの出力に先立って、I2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャおよびP14ピクチャが順次、デコーダ23に入力される。デコーダ23は、先行的に入力されたこれらのIおよび4枚のPピクチャを復号化し、フレームメモリ24に書き込む。Iおよび4枚のPピクチャが復号化されると、最初に出力される予定の、リバース再生順で1つ前のGOPの(B1)ピクチャがデコーダ23に入力される。
従来のように、このIピクチャおよび4枚のPピクチャ、ならびに、最初に出力が予定されている(B1)ピクチャのデコーダ23に対する入力および復号化を、リバース方向のスロー再生によるシーケンスに従い行うと、図8を用いて説明した従来のフォワード再生の例と同様にして、スロー再生速度に応じて、1/2倍速スロー命令から実際にスロー再生による出力が得られるまでの遅延時間が長くなることになり、応答性が悪い。
リバース再生の場合にも、図9を用いて説明したこの発明の実施の一形態による再生制御方法を適用し、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い出力を行わないピクチャについて、予め復号化してフレームメモリ24に書き込む。このとき、当該ピクチャのデコーダ23への入力や、デコーダ23における復号化は、予め通常の1倍速再生のシーケンスで行うようにする。リバース再生についても、このように、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い出力を行わないピクチャについて、先行的に復号化を行うことで、例えば再生の開始時からリバース再生のスロー再生が指示されているような場合でも、応答性よくスロー再生を開始することができる。
図12を用いて、より具体的に説明する。なお、この図12および上述した図11は、例えば図3における「デコード」、「出力」および「ビデオ出力」を抜き出して簡略化した図である。Iピクチャおよび4枚のPピクチャは、全てのBピクチャに先立ってデコーダ23に入力され、復号化されてフレームメモリ24に書き込まれる。これらのIおよびPピクチャは、少なくとも、リバース再生の再生順で1つ前のGOPの(B0)ピクチャの出力タイミングが経過するまで出力されない。また、最初に出力される予定の(B1)ピクチャは、勿論、デコーダ23に入力されてから少なくとも1フレーム同期信号期間分後に、出力される。そこで、Iピクチャおよび4枚のPピクチャと、最初に出力が予定される(B1)ピクチャとを、先行的にデコーダ23に入力し復号化するピクチャとし、例えば再生の開始時からスロー再生が指示された場合に、1倍速再生のシーケンスに従いデコーダ23への入力および復号化を行い、フレームメモリ24に書き込む。
そして、(B1)ピクチャの次からデコーダ23に入力される各ピクチャ((B0)ピクチャ以降のピクチャ)に対するデコーダ23への入力および復号化を、デコーダ23のリバース方向の1/2倍速スロー再生のシーケンスに従い行う。デコーダ23におけるリバース再生時の1/2倍速スロー再生のシーケンスは、図10を用いて既に説明した動作と同様なので、繁雑さを避けるために、詳細な説明を省略する。
次に、この発明の実施の一形態の第1の変形例について説明する。上述では、リバース再生に対応させるため、デコーダ23に入力されるピクチャの配列を、メモリ21を用いて所定に並べ替えていたが、これはこの例に限定されない。すなわち、この発明による再生制御方法は、他の配列のエレメンタリストリームに対しても適用可能である。この発明の実施の一形態の第1の変形例は、上述した実施の一形態による1/2倍速スロー命令による再生制御方法を、標準的なピクチャ配列(I2B0B1P5B3B4P8B6B7P11B9B10P14B12B13)に対して適用した例である。
先ず、図13を用いて、標準的な配列による、1倍速のフォワード再生時におけるデコーダ23各部の動作について、概略的に説明する。なお、図13において、ピクチャを示す四角に付された斜線は、ES入力におけるGOPを区別するためのものである。また、図13の先頭のBピクチャの表示開始命令のタイミングでは、GOP#1の一つ前の図示されないGOP#0がデコーダ23に既に入力され、復号化や出力など所定の処理が既に完了され、GOP#1においては、I2ピクチャおよびB0ピクチャが既にデコーダ23に入力され、I2ピクチャに関しては復号化が完了しているものとする。
B0ピクチャの表示開始命令のタイミングで、既に入力されているBピクチャがGOP#0のP14ピクチャおよびGOP#1のI2ピクチャを用いて復号化され、フレームメモリ24に書き込まれる。それと共に、ES入力としてB1ピクチャがデコーダ23に入力され、CPU25からデコーダ23に対して、入力されたB1ピクチャの復号化開始命令が送信される。B0ピクチャは、表示開始命令に対して1フレーム同期信号分遅延されて出力される。
次に、B1ピクチャの表示開始命令のタイミングで、ES入力としてP5ピクチャがデコーダ23に対して入力され、I2ピクチャを用いて復号化され次のフレーム同期信号のタイミングでフレームメモリ24に書き込まれる。Bピクチャは、表示開始命令に対して1フレーム同期信号分遅延されて出力される。以降、エレメンタリストリームのピクチャの入力順に従いこの処理が繰り返される。
図14は、標準的な配列による、フォワード再生時のポーズ再生、ステップ再生および1/2倍速のスロー再生を行う場合の一例のシーケンスを示す。先ず、ポーズ再生の動作について、概略的に説明する。例えばユーザにより、ビデオ出力で出力されたビデオデータによる再生映像を見ながら、出力データにおけるB4ピクチャのタイミングでポーズ再生の指示がなされる。CPU11は、このポーズ再生指示に応じたポーズ命令210により、速度情報の値を「0」としてCPU25に伝える。CPU25は、この速度情報に基づき、デコーダ23に対する復号化開始命令および表示開始命令を停止する。
出力データにおけるI2ピクチャのタイミングは、ES入力のB4ピクチャに対応する。したがって、ES入力においてB4ピクチャの次のピクチャ(P8ピクチャ)の入力が停止される。CPU25は、ES入力により入力されたB4ピクチャに対する復号化開始命令を出し、次のピクチャからの復号化開始命令を停止する。復号化されたB4ピクチャは、フレームメモリ24に書き込まれる。
一方、出力データにおけるI2ピクチャのタイミングは、表示開始命令のB3ピクチャに対応する。したがって、B3ピクチャに対する表示開始命令が送信された後、次のピクチャ(B4ピクチャ)からの表示開始命令が停止される。表示開始命令が停止され表示開始命令が無い期間では、表示開始命令が停止される直前のピクチャがフレームメモリ24からフレーム同期信号に同期して繰り返し読み出される。この図14の例では、B3ピクチャがフレームメモリ24から繰り返し読み出されることになり、ポーズ再生指示に応じたポーズ再生が実現される。
ポーズ再生中は、フレームメモリ24内の各ピクチャは、保持される。そのため、ポーズ再生が解除されポーズ再生命令により入力を停止されたピクチャがES入力としてデコーダ23に入力されても、フレームメモリ24内のピクチャを用いた復号化を実行することができる。
例えば、図14の例で、出力データのI2ピクチャのタイミングでポーズ命令210が送信され、ポーズ命令210から2フレーム後(図14のステップ命令211の位置)のタイミングでポーズ再生を解除する指示が送信された場合について考える。
この場合、ポーズ再生解除の指示の直後のフレーム同期信号のタイミングでポーズ命令210が解除され、通常の復号化動作が開始される。したがって、ES入力では、ポーズ命令210により入力が停止されたP8ピクチャからピクチャの入力が開始され、復号化開始命令が送信される。この復号化開始命令に従い、フレームメモリ24に保持されているP5ピクチャを用いてP8ピクチャが復号化される。表示開始命令についても同様に、ポーズ命令210により停止されたB3ピクチャの次のピクチャであるB4ピクチャから表示開始命令が開始され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB4ピクチャが出力される。
次に、図14を参照してステップ再生指示に応じたデコーダ23各部の動作について説明する。例えば、図14の例で、ポーズ再生中にステップ再生を指示するステップ命令I211が送信された場合、ステップ命令211の直後のフレーム同期信号のタイミングで、1フレーム分の復号化動作が行われる。
すなわち、ES入力では、直前のポーズ命令210により入力が停止されたB4ピクチャの次のP8ピクチャが入力され、P8ピクチャの復号化開始命令が送信される。この復号化開始命令に従い、P8ピクチャが復号化され、フレームメモリ24に所定に書き込まれる。表示開始命令についても同様に、直前のポーズ命令210により更新が停止されているB3ピクチャの次のピクチャであるB4ピクチャの表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24に保持されているB4ピクチャが出力される。
図14を参照して、スロー再生時のデコーダ23各部の動作について説明する。CPU11からCPU25に対して、速度情報として値「0.5」が送信され、1/2倍速のスロー再生を指示する1/2倍速命令212が出される。この1/2倍速命令212は、次のフレーム同期信号のタイミングで有効とされる。CPU25は、この1/2倍速命令212に基づき、デコーダ23のES入力としてB7ピクチャを入力すると共に、入力されたB7ピクチャの復号化開始命令をデコーダ23に送信する。それと共に、CPU25は、デコーダ23に対して、出力フレームを次のB6ピクチャに更新するように、表示開始命令を送信する。この表示開始命令に応じて、1フレーム同期信号分遅延して、出力フレームが更新される。
Bピクチャを更新する表示開始命令が送信された次のフレーム同期信号のタイミングでは、ES入力において入力が停止され、それと共に復号化開始命令も送信されない。入力が停止されたので、CPU25から表示開始命令が送信されず、そのため、出力フレームが更新されず、B6ピクチャが再び出力される。
以降、1/2倍速のスロー再生時には、ES入力および表示開始命令などに従い、この動作が繰り返し行われる。
ここで、標準的な配列において、再生開始時からスロー再生(1/2倍速スロー再生とする)を行う場合についての問題点は、発明の課題として既に説明した通りであるので、ここでの説明は省略する。
標準的なピクチャ配列の場合にも、図9を用いて説明したこの発明の実施の一形態による再生制御方法を適用し、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い出力を行わないピクチャについて、予め復号化してフレームメモリ24に書き込む。このとき、当該ピクチャのデコーダ23への入力や、デコーダ23における復号化は、予め通常の1倍速再生のシーケンスに従い行うようにする。このように、再生開始直後からデコーダ23への入力およびデコーダ23での復号化を行い出力を行わないピクチャについて、先行的に復号化を行うことで、例えば再生の開始時からスロー再生が指示されているような場合でも、応答性よくスロー再生を開始することができる。
図15を用いて、より具体的に説明する。なお、この図15は、例えば図3における「デコード」、「出力」および「ビデオ出力」を抜き出して簡略化した図である。標準的なピクチャ配列においては、I2ピクチャは、P5ピクチャがデコーダ23に入力され復号化されるタイミングで、出力される。そのため、P5ピクチャまで、すなわちI2ピクチャ、B0ピクチャおよびB1ピクチャとを、先行的にデコーダ23に入力し復号化するピクチャとし、例えば再生の開始時からスロー再生が指示された場合に、1倍速再生のシーケンスに従いデコーダ23への入力および復号化を行い、フレームメモリ24に書き込む。
なお、B0ピクチャおよびB1ピクチャは、1つ前のGOPにおける(P14)ピクチャを用いて復号化されるため、当該(P14)ピクチャがフレームメモリ24上に存在しない場合には、復号化および出力されない。
そして、B1ピクチャの次からデコーダ23に入力される各ピクチャ(P5ピクチャ以降のピクチャ)に対する入力タイミングおよび復号化のタイミングの制御を、デコーダ23の1/2倍速スロー再生のシーケンスに従い行う。デコーダ23における1/2倍速スロー再生のシーケンスは、図14を用いて既に説明した動作と同様なので、繁雑さを避けるために、詳細な説明を省略する。
次に、この実施の一形態の第2の変形例について説明する。上述では、デコーダボード2にデコーダ23が1基、搭載されている場合について説明したが、これはこの例に限定されない。すなわち、この発明は、複数のデコーダ23、23、・・・を用いてビデオストリームの復号化を行う場合にも適用することが可能である。
図16は、デコーダボード2に3基のデコーダ23A、23Bおよび23Cを搭載し、デコード部40’がこれら3基のデコーダを含む例である。なお、図16において、上述した図1と共通する部分には同一の符号を付し、詳細な説明を省略する。デコーダ23Aは、フレームメモリ24Aを有する。同様に、デコーダ23Bはフレームメモリ24Bを、デコーダ23Cはフレームメモリ24Cをそれぞれ有する。デコーダ23A、23Bおよび23Cそれぞれの構成は、図2を用いて説明したものと同一であるので、詳細な説明を省略する。
PCIブリッジ20に供給され、メモリ21に溜め込まれたエレメンタリストリームは、デコード部40’に供給される。このとき、CPU25は、エレメンタリストリームを、GOP毎に順次、デコーダ23A、23Bおよび23Cに振り分ける。デコーダ23A、23Bおよび23Cで復号化されたピクチャのそれぞれは、セレクタ27に供給される。セレクタ27は、CPU25の制御に従い、供給されたピクチャをピクチャ単位で表示順に選択して出力する。
このように、複数のデコーダ23A、23Bおよび23Cを用いて1本のエレメンタリストリームの復号化を行うことで、デコーダボード2全体としての処理能力が向上し、例えばより高精細な映像を映出するような、データレートが高いエレメンタリストリームを処理することができるようになる。また、フレームメモリ24の利用にも余裕が生じる。
図17は、3基のデコーダ23A、23Bおよび23Cを用いた場合の、フォワード再生時の入出力および内部処理の概略的なシーケンスを示す。この実施の一形態の第2の変形例においては、デコード部40’に供給されるエレメンタリストリームのピクチャ配列を、上述した実施の一形態で説明したような、先ずGOP内のIおよびPピクチャを先に配置し、その後、Bピクチャを順に配置した配列とする。
ここで、複数のデコーダ23A、23Bおよび23Cに対して、エレメンタリストリームをGOP毎に振り分けて供給する場合、それぞれのデコーダに供給されるGOPは、そのGOP自身で復号化が完結する、クローズドGOPの形態になっている必要がある。上述の実施の一形態の例では、GOPがオープンGOPの構成とされ、B0ピクチャおよびB1ピクチャは、1つ前のGOPのP14ピクチャを用いなければ復号化できない。
そのため、例えば本来のエレメンタリストリームのGOP#0に対して、当該GOP#0の1つ後のGOPであるGOP#1の、I2ピクチャとB0ピクチャおよびB1ピクチャとをGOP#0に含ませ、配列(3)のようなピクチャ配列として、1つのデコーダに供給する。なお、配列(3)において、括弧()で括ったピクチャタイプは、主として処理対象とするエレメンタリストリームにおけるGOPの次のGOPに含まれるピクチャを示す。
I2P5P8P11P14(I2)B3B4B6B7B9B10B12B13(B0)(B1) ・・・(3)
このようなピクチャ配列とすることで、(I2)ピクチャはそれ自身で復号化され、(B0)ピクチャおよび(B1)ピクチャは、P14ピクチャと、復号化された(I2)ピクチャとを用いて復号化される。したがって、配列(3)によるピクチャ配列は、それ自身で完結して復号化が可能で、クローズドGOPを形成する。
図17の説明に戻り、上段はデコーダ23Aの処理、中段はデコーダ23Bの処理、下段はデコーダ23Cの処理をそれぞれ示す。最下段は、セレクタ27から出力される出力ビデオデータを示す。図17において、デコーダ23Bおよび23Cに対する表示開始命令は、「出力」を1フレーム同期信号分前にずらしたものと同等なので、の省略する。また、図17において、ピクチャを示す四角に付された斜線は、ES入力におけるGOPを区別するためのものである。
上述の配列(3)によれば、デコーダ23A、23Bおよび23Cのそれぞれにおいて、Iピクチャおよび4枚のPピクチャの入力タイミングと、1つ前に入力されるGOPの処理を行うデコーダの入力タイミングとを重複させることで、復号化動作を出力と対応するタイミングで行うことができる。
例えば、デコーダ23Aの処理を例にとると、図示せずも、ES入力においてI2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャ、P14ピクチャ、(I2)ピクチャが順次、入力され、復号化開始命令によりそれぞれ復号化されてフレームメモリ24に書き込まれる。
続けてB3ピクチャおよびB4ピクチャが入力され、復号化開始命令により復号化されフレームメモリ24に書き込まれると同時に、これらB3ピクチャおよびB4ピクチャの表示開始命令が送信される。表示開始命令から1フレーム同期信号分遅延して、出力がなされる。なお、I2ピクチャの表示開始命令は、B3ピクチャの入力タイミングで出される。以降、B6ピクチャ、B7ピクチャ、B9ピクチャ、B10ピクチャ、B12ピクチャ、B13ピクチャが順次入力される。このとき、既に復号化されているPピクチャの順序に対応する期間がスキップされて、各Bピクチャが入力される。Bピクチャは、入力順に復号化され、復号化と同時に表示開始命令が送信される。既に復号化されているPピクチャに対しても、出力順に対応して表示開始命令が送信される。
B13ピクチャが入力されると、P14ピクチャに対応する期間、すなわち1フレーム同期信号期間分を空けて、(B0)ピクチャおよび(B1)ピクチャが入力され、復号化開始命令により、既に復号化されている(I2)ピクチャおよびP14ピクチャを用いて復号化され、復号化と同時に表示開始命令が送信される。(B1)ピクチャの入力後、配列(3)の2周期分の期間を空けて、ピクチャが入力される。
以上のシーケンスを、デコーダ23A、23Bおよび23Cにおいて順次繰り返すことで、3基のデコーダ23A、23Bおよび23Cを用いた構成でのフォワード再生が行われる。
図18は、3基のデコーダ23A、23Bおよび23Cを用いた場合の、フォワード再生時に、ポーズ再生、ステップ再生および1/2倍速のスロー再生を行う場合の一例のシーケンスを示す。複数のデコーダを用いる場合も、各動作の基本的な考え方は、上述のデコーダを1個のみ用いる場合と同様である。ポーズ再生、ステップ再生、スロー再生などの命令は、CPU25からデコーダ23A、23Bおよび23Cに対して共に供給される。なお、図18において、ピクチャタイプに付された「*(スター印)」は、ES入力におけるGOPを区別するためのものである。
先ず、ポーズ再生指示に応じた動作について説明する。最下段に示される出力ビデオデータのI2ピクチャのタイミングでポーズ再生を指示するポーズ命令220が送信されたものとする。このポーズ命令220は、ポーズ命令220が送信された直後のフレーム同期信号のタイミングで有効とされる。出力ビデオデータのI2ピクチャのタイミングは、ES入力のB4ピクチャに対応する。このポーズ命令220に応じて、B4ピクチャの次のピクチャからのES入力が停止される。入力の停止に伴い、入力されたBピクチャの次のピクチャからの復号化開始命令が停止される。
また、出力データにおけるI2ピクチャのタイミングは、表示開始命令のB3ピクチャに対応する。したがって、B3ピクチャの表示開始命令が送信された後、次のピクチャ(B4ピクチャ)からの表示開始命令が停止され、B3ピクチャがフレーム同期信号に同期して繰り返し出力される。これにより、ポーズ命令220に応じたポーズ再生が実現される。
なお、例えば図17の出力データにおけるP14ピクチャのタイミングのように、複数のデコーダ23Aおよび23Bに対して並列的にピクチャが入力されている(この場合(B1)ピクチャおよび(P14)ピクチャ)ような場合、ピクチャが入力されているデコーダ23Aおよび23Bのそれぞれに対して復号化開始命令が送信され、各々復号化がなされる。また、複数のデコーダに対して並列的にピクチャが入力されているタイミングでポーズ命令が送信された場合、複数のデコーダそれぞれに対するES入力が停止される。
ポーズ再生中は、各デコーダ23A、23Bおよび23Cのそれぞれにおいてフレームメモリ24A、24Bおよび24C内の各ピクチャが保持される。そのため、ポーズ再生が解除されポーズ命令により入力を停止されたピクチャがデコーダ23A、23Bおよび23Cに入力されても、ピクチャが入力されたデコーダのそれぞれにおいて、フレームメモリ24A、24Bおよび24C内のピクチャを用いた復号化を実行することができる。
なお、図17における(B0)ピクチャや(B1)ピクチャの出力時などのような、デコーダ間で出力が切り替わるようなタイミングでポーズ再生が送信された場合でも、同様の処理が行われる。
例えば、出力データにおける(B0)ピクチャのタイミングでポーズ命令が送信された場合、デコーダ23AのES入力が停止されると共に、デコーダ23BのES入力が対応する次の(B3)ピクチャで停止される。また、デコーダ23Cに対するES入力も停止される。表示開始命令も、(B1)ピクチャで停止され、以降、ポーズ命令が解除されるまで、(B1)ピクチャが繰り返し出力される。
また例えば、出力データにおける(B1)ピクチャのタイミングでポー命令が送信された場合、デコーダ23AのES入力が停止されると共に、デコーダ23BのES入力が対応する次の(B4)ピクチャで停止される。また、デコーダ23Cに対するES入力も停止される。表示開始命令は、デコーダ23Bに対して(B3)ピクチャで停止され、以降、ポーズ命令が解除されるまで、(B3)ピクチャが繰り返し出力される。
次に、図18を参照して、ステップ再生指示に応じた動作について説明する。例えば、図18のステップ命令221のように、ポーズ再生中にステップ命令221が送信された場合、ステップ命令221の直後のフレーム同期信号のタイミングで、1フレーム分の復号化動作が行われる。この例の場合、ES入力は、ポーズ命令220により入力が停止されたB4ピクチャの次のピクチャが、既に入力され復号化がなされているP5ピクチャであるため、実際のピクチャの入力は行われない。表示開始命令については、直前のポーズ再生により更新が停止されているB3ピクチャの次のピクチャであるB4ピクチャの表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24Aに保持されているB4ピクチャが出力される。
なお、図17における(B1)ピクチャの出力時などのような、デコーダ間で出力が切り替わるような場合でも、上述したポーズ再生時の動作と同様にして、切り替わり先のデコーダに対して表示開始命令が送信されると共に、各デコーダに対するES入力が開始される。
次に、図18を参照して、スロー再生に応じた動作について説明する。例えば1/2倍速のスロー再生を指示する1/2倍速命令222が次のフレーム同期信号の周期で有効とされ、この1/2倍速命令222に基づき、CPU25は、デコーダ23AのES入力としてB7ピクチャを入力し、このピクチャの復号化開始命令をデコーダ23Aに送信する。それと共に、CPU25は、デコーダ23Aに対して、出力フレームを次のB6ピクチャに更新するように表示開始命令を送信する。この表示開始命令に応じて、表示開始命令から1フレーム同期信号分遅延して、デコーダ23Aの出力フレームが更新される。
B6ピクチャに更新する表示開始命令が送信された次のフレーム同期信号タイミングでは、ES入力において入力が停止され、それと共に復号化開始命令も送信されない。なお、この図18の例では、1/2倍速命令222に応じて入力されたES入力の次のピクチャは、P8ピクチャであり、既に入力および復号化が完了している。入力が停止されたので、CPU25から表示開始命令が送信されず、そのため、出力フレームが更新されずP5ピクチャが再び出力される。この動作が繰り返され、1/2倍速スロー再生が実現される。
なお、1/2倍速スロー再生中に、デコーダ23Aにエレメンタリストリームが入力されるのと並列的に、次のデコーダ(デコーダ23B)に対してエレメンタリストリームが入力される場合(例えば図17におけるデコーダ23Bの(I2)ピクチャからの入力)、デコーダ23Bにおけるエレメンタリストリームの入力も、デコーダ23Aの入力と同様にして、1ピクチャ毎に入力および停止が繰り返される。
3基のデコーダ23A、23Bおよび23Cを用いた場合においても、再生開始時からフォワード方向にスロー再生(1/2倍速スロー再生とする)を行う場合、図19に一例が示されるように、上述したデコーダ23を1基用いてフォワード方向にスロー再生を行う場合と同様に、ピクチャの出力に先立って、I2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャ、P14ピクチャおよび(I2)ピクチャが順次、例えばデコーダ23Aに入力される。デコーダ23Aは、先行的に入力されたこれらのI2ピクチャ、4枚のPピクチャおよび(I2)ピクチャを復号化し、フレームメモリ24Aに書き込む。
従来は、このI2ピクチャ、4枚のPピクチャおよび(I2)ピクチャのデコーダ23への入力および復号化を、スロー再生によるシーケンスに従い行っていた。そのため、既に問題点として説明したように、スロー再生速度に応じて、1/2倍速スロー命令から実際にスロー再生による出力が得られるまでの遅延時間が長くなることになり、応答性が悪い。
デコーダを複数用いる場合でも、図9を用いて説明したこの発明の実施の一形態による再生制御方法を適用し、再生開始直後から例えばデコーダ23Aへの入力およびデコーダ23Aでの復号化を行い出力を行わないピクチャについて、予め復号化してフレームメモリ24Aに書き込む。このとき、当該ピクチャのデコーダ23Aへの入力や、デコーダ23Aにおける復号化は、予め通常の1倍速再生のシーケンスに従い行うようにする。このように、再生開始直後から例えばデコーダ23Aへの入力およびデコーダ23Aでの復号化を行い出力を行わないピクチャについて、先行的に復号化を行うことで、例えば再生の開始時からフォワード再生のスロー再生が指示されているような場合でも、応答性よくスロー再生を開始することができる。
図20を用いて、より具体的に説明する。なお、この図20および上述した図19は、例えば図3における「デコード」、「出力」および「ビデオ出力」を抜き出して簡略化した図である。I2ピクチャ、4枚のPピクチャおよび(I2)ピクチャは、全てのBピクチャに先立って例えばデコーダ23Aに入力され、復号化されてフレームメモリ24Aに書き込まれる。これらのうち、(I2)ピクチャは、最初に出力される予定のピクチャである。そこで、I2ピクチャ、4枚のPピクチャおよび(I2)ピクチャを、先行的にデコーダ23Aに入力し復号化するピクチャとし、例えば再生の開始時からスロー再生が指示された場合に、1倍速再生のシーケンスに従いデコーダ23Aへの入力および復号化を行い、フレームメモリ24Aに書き込む。
そして、(I2)ピクチャの次からデコーダ23Aに入力される各ピクチャ(B3ピクチャ以降のピクチャ)に対する入力および復号化を、デコーダ23の1/2倍速スロー再生のシーケンスに従い行う。デコーダ23における1/2倍速スロー再生のシーケンスは、図18を用いて既に説明した動作と同様なので、繁雑さを避けるために、詳細な説明を省略する。
図21は、3基のデコーダ23A、23Bおよび23Cを用いた場合の、リバース再生時の入出力および内部処理の概略的なシーケンスを示す。なお、図21において、ピクチャを示す四角に付された斜線は、ES入力におけるGOPを区別するためのものである。デコード部40’に供給されるエレメンタリストリームのピクチャ配列を、上述した実施の一形態で説明したような、先ずGOP内のIおよびPピクチャを先に配置し、その後、Bピクチャを順に配置した配列とする。この場合も、上述のフォワード再生の場合と同様に、複数のデコーダ23A、23Bおよび23Cのそれぞれに入力されるエレメンタリストリームは、クローズドGOPの形態となっている必要がある。
リバース再生の場合、配列(4)のようなピクチャ配列を用いる。なお、配列(4)において、括弧()で括ったピクチャタイプは、本来のエレメンタリストリームにおける、リバース再生時のGOPの再生順で前のGOPに含まれるピクチャを示す。
I2P5P8P11P14(I2)(B0)(B1)B13B12B10B9B7B6B4B3 ・・・(4)
このようなピクチャ配列とすることで、(I2)ピクチャはそれ自身で復号化され、(B0)ピクチャおよび(B1)ピクチャは、P14ピクチャと、復号化された(I2)ピクチャとを用いて復号化される。したがって、配列(4)によるピクチャ配列は、それ自身で完結して復号化が可能で、クローズドGOPを形成する。
上述の配列(4)によれば、デコーダ23A、23Bおよび23Cのそれぞれにおいて、Iピクチャおよび4枚のPピクチャのタイミングを、1つ前に入力されるGOPの処理を行うデコーダの入力タイミングとを重複させることで、復号化動作を出力と対応するタイミングで行うことができる。
例えば、デコーダ23Aの処理を例にとると、図示せずも、ES入力においてI2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャ、P14ピクチャ、(I2)ピクチャが順次、入力され、復号化開始命令によりそれぞれ復号化されてフレームメモリ24に書き込まれる。
続けて(B1)ピクチャおよび(B0)ピクチャが入力され、復号化開始命令によりP14ピクチャおよび(I2)ピクチャを用いて復号化されフレームメモリ24に書き込まれ、表示開始命令から1フレーム同期信号分遅延して、出力がなされる。
次に、既に復号化されているP14ピクチャに対しても、出力順に対応して表示開始命令が送信され、さらに、B13ピクチャ、B12ピクチャ、B10ピクチャ、B9ピクチャ、B7ピクチャ、B6ピクチャ、B4ピクチャ、B3ピクチャが順次入力される。このとき、既に復号化されているPピクチャの順序に対応する期間がスキップされて、各Bピクチャが入力される。Bピクチャは、入力順に復号化され、復号化と同時に表示開始命令が送信される。さらに、既に復号化されているI2ピクチャに対して表示開始命令が送信される。
B3ピクチャの入力後、配列(4)の2周期分の期間を空けて、ピクチャが入力される。
以上のシーケンスを、デコーダ23A、23Bおよび23Cにおいて順次繰り返すことで、3基のデコーダ23A、23Bおよび23Cを用いた構成でのリバース再生が行われる。
図22は、3基のデコーダ23A、23Bおよび23Cを用いた場合の、リバース再生時に、ポーズ再生、ステップ再生および1/2倍速のスロー再生を行う場合の一例のシーケンスを示す。なお、図22において、ピクチャタイプに付された「*(スター印)」や「**」は、それぞれES入力におけるGOPを区別するためのものである。リバース再生の場合も、各動作の基本的な考え方は、上述のデコーダを1個のみ用いる場合と同様である。
先ず、ポーズ再生指示に応じた動作について説明する。最下段に示される出力ビデオデータのP14ピクチャのタイミングでポーズ再生を指示するポーズ命令230が送信されたものとする。このポーズ命令230は、ポーズ命令230が送信された直後のフレーム同期信号のタイミングで有効とされる。出力ビデオデータのP14ピクチャのタイミングは、ES入力のB12ピクチャに対応する。このポーズ命令230に応じて、B12ピクチャの次のピクチャからのES入力が停止される。入力の停止に伴い、入力されたB12ピクチャの次のピクチャからの復号化開始命令が停止される。
また、出力データにおけるP14ピクチャのタイミングは、表示開始命令のB13ピクチャに対応する。したがって、B13ピクチャの表示開始命令が送信された後、次のピクチャ(B12ピクチャ)からの表示開始命令が停止され、B13ピクチャがフレーム同期信号に同期して繰り返し出力される。これにより、ポーズ命令230に応じたポーズ再生が実現される。
なお、例えば図21の出力データにおけるP5ピクチャのタイミングのように、複数のデコーダ23Aおよび23Bに対して並列的にピクチャが入力されている(この場合(B3)ピクチャおよび(P14)ピクチャ)ような場合、ピクチャが入力されているデコーダ23Aおよび23Bのそれぞれに対して復号化開始命令が送信され、各々復号化がなされる。また、複数のデコーダに対して並列的にピクチャが入力されているタイミングでポーズ命令が送信された場合、複数のデコーダそれぞれに対するピクチャ入力が停止される。
ポーズ再生中は、各デコーダ23A、23Bおよび23Cのそれぞれにおいてフレームメモリ24A、24Bおよび24C内の各ピクチャが保持される。そのため、ポーズ命令が解除されポーズ命令により入力を停止されたピクチャがデコーダ23A、23Bおよび23Cに入力されても、ピクチャが入力されたデコーダのそれぞれにおいて、フレームメモリ24A、24Bおよび24C内のピクチャを用いた復号化を実行することができる。
なお、図21における(I2)ピクチャの出力時などのような、デコーダ間で出力が切り替わるようなタイミングでポーズ命令が送信された場合でも、同様の処理が行われる。例えば、出力データにおける(I2)ピクチャのタイミングでポーズ再生命令が送信された場合、デコーダ23AのES入力が停止されると共に、デコーダ23BのES入力が対応する次のピクチャで停止される。この図21の例では、デコーダ23Bの当該入力は、既に復号化されたP14ピクチャに対応して空けられているので、その次のB13ピクチャの入力から停止されることになる。また、デコーダ23Cに対するES入力も停止される。表示開始命令も、(I2)ピクチャで停止され、以降、ポーズ命令が解除されるまで、(I2)ピクチャが繰り返し出力される。
次に、図22を参照して、ステップ再生指示に応じた動作について説明する。例えば、図22のステップ命令231のように、ポーズ命令230によるポーズ再生中にステップ再生を指示するステップ命令231が送信された場合、ステップ再生指示の直後のフレーム同期信号のタイミングで、1フレーム分の復号化動作が行われる。この例の場合、ES入力は、ポーズ命令230により入力が停止されたB12ピクチャの次のピクチャが、既に入力され復号化がなされているP11ピクチャであるため、実際のピクチャの入力は行われない。表示開始命令については、直前のポーズ再生により更新が停止されているB13ピクチャの次のピクチャであるB12ピクチャの表示開始命令が送信され、表示開始命令から1フレーム同期信号分遅延して、フレームメモリ24Aに保持されているB12ピクチャが出力される。
なお、図21における(I2)ピクチャの出力時などのような、デコーダ間で出力が切り替わるような場合でも、上述したポーズ再生時の処理と同様にして、切り替わり先のデコーダに対して表示開始命令が送信されると共に、各デコーダに対するES入力が開始される。
次に、図22を参照して、スロー再生に応じた動作について説明する。例えば1/2倍速のスロー再生を指示する1/2倍速命令232が次のフレーム同期信号の周期で有効とされ、この1/2倍速命令232に基づき、CPU25は、デコーダ23AのES入力としてB9ピクチャを入力し、このピクチャの復号化開始命令をデコーダ23Aに送信する。それと共に、CPU25は、デコーダ23Aに対して、出力フレームを次のB10ピクチャに更新するように表示開始命令を送信する。この表示開始命令に応じて、表示開始命令から1フレーム同期信号分遅延して、デコーダ23Aの出力フレームが更新される。
B10ピクチャに更新する表示開始命令が送信された次のフレーム同期信号タイミングでは、ES入力において入力が停止され、それと共に復号化開始命令も送信されない。入力が停止されたので、CPU25から表示開始命令が送信されず、そのため、出力フレームが更新されずB10ピクチャが再び出力される。この動作が繰り返され、1/2倍速スロー再生が実現される。
なお、1/2倍速スロー再生中に、デコーダ23Aにエレメンタリストリームが入力されるのと並列的に、次のデコーダ(デコーダ23B)に対してエレメンタリストリームが入力される場合(例えば図21におけるデコーダ23BのI2ピクチャからの入力)、デコーダ23Bにおけるエレメンタリストリームの入力も、デコーダ23Aの入力と同様にして、1ピクチャ毎に入力および停止が繰り返される。
3基のデコーダ23A、23Bおよび23Cを用いた場合においても、再生開始時からリバース方向にスロー再生(1/2倍速スロー再生とする)を行う場合、図23に一例が示されるように、上述したデコーダ23を1基用いてフォワード方向にスロー再生を行う場合と同様に、ピクチャの出力に先立って、I2ピクチャ、P5ピクチャ、P8ピクチャ、P11ピクチャ、P14ピクチャおよび(I2)ピクチャが順次、例えばデコーダ23Aに入力される。また、最初に出力される予定の(B1)ピクチャがデコーダ23Aに入力される。デコーダ23Aは、先行的に入力されたこれらのI2ピクチャ、4枚のPピクチャ、(I2)ピクチャおよび(B1)ピクチャを復号化し、フレームメモリ24Aに書き込む。
従来は、このI2ピクチャ、4枚のPピクチャ、(I2)ピクチャおよび(B1)ピクチャのデコーダ23Aに対する入力および復号化を、リバース方向のスロー再生のシーケンスに従い行っていた。そのため、既に問題点として説明したように、スロー再生速度に応じて、1/2倍速スロー命令から実際にスロー再生による出力が得られるまでの遅延時間が長くなることになり、応答性が悪い。
デコーダを複数用いる場合でも、図9を用いて説明したこの発明の実施の一形態による再生制御方法を適用し、再生開始直後から例えばデコーダ23Aへの入力およびデコーダ23Aでの復号化を行い出力を行わないピクチャについて、予め復号化してフレームメモリ24Aに書き込む。このとき、当該ピクチャのデコーダ23Aへの入力や、デコーダ23Aにおける復号化は、予め通常の1倍速再生のシーケンスに従い行うようにする。このように、再生開始直後から例えばデコーダ23Aへの入力およびデコーダ23Aでの復号化を行い出力を行わないピクチャについて、先行的に復号化を行うことで、例えば再生の開始時からリバース再生のスロー再生が指示されているような場合でも、応答性よくスロー再生を開始することができる。
図24を用いて、より具体的に説明する。なお、この図24および上述した図23は、例えば図3における「デコード」、「出力」および「ビデオ出力」を抜き出して簡略化した図である。I2ピクチャ、4枚のPピクチャおよび(I2)ピクチャは、全てのBピクチャに先立って例えばデコーダ23Aに入力され、復号化されてフレームメモリ24Aに書き込まれる。また、最初に出力される予定の(B1)ピクチャは、勿論、全てのピクチャの出力前にデコーダ23Aに入力され、復号化される。
そこで、I2ピクチャ、4枚のPピクチャ、(I2)ピクチャおよび(B1)ピクチャを、先行的にデコーダ23Aに入力し復号化するピクチャとし、例えば再生の開始時からスロー再生が指示された場合に、リバース再生の1倍速再生のシーケンスに従いデコーダ23Aへの入力および復号化を行い、フレームメモリ24Aに書き込む。
そして、(B1)ピクチャの次からデコーダ23Aに入力される各ピクチャ(B0ピクチャ以降のピクチャ)に対する入力および復号化を、デコーダ23Aでのリバース方向の1/2倍速スロー再生のシーケンスに従い行う。デコーダ23Aにおける1/2倍速スロー再生のシーケンスは、図22を用いて既に説明した動作と同様なので、繁雑さを避けるために、詳細な説明を省略する。
なお、上述では、デコーダボード2に3基のデコーダ23A、23Bおよび23Cが搭載されている例について説明したが、これはこの例に限られず、デコーダボード2にデコーダが2基搭載されている場合や、4基以上のデコーダがデコーダボード2上に搭載されている場合にも、同様にして処理を行うことが可能である。
図25および図26は、この発明に適用可能な再生装置におけるビデオストリームの一例の表示処理を示すフローチャートである。このフローチャートによる処理は、上述した、この発明の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例に共通して適用可能である。ここでは、繁雑さを避けるために、実施の一形態または実施の一形態の変形例のように、デコーダボード2に対してデコーダ23が1基のみ、搭載されているものとする。なお、図25および図26において、符号「A」および「B」は、図25および図26間で対応する符号に処理が移行することを示す。
例えば再生装置のスタンバイ状態などにおいて、CPU11により、1乃至複数GOP分のエレメンタリストリームがハードディスクドライブ14から読み出される(ステップS10)。このエレメンタリストリームは、サウスブリッジ13およびPCIバス15を介してデコーダボード2に供給され、デコーダボード2においてPCIブリッジ20を介してメモリ21に転送され、溜め込まれる(ステップS11)。ハードディスクドライブ14から所定量のエレメンタリストリームが読み出され、読み出されたストリームのメモリ21への転送が完了されたら、たら、CPU11からCPU25に対して、転送完了が通知される(ステップS12)。
CPU25は、CPU11からの転送完了通知を受けると、例えばデコーダ23の初期化など、当該エレメンタリストリームを復号化するための準備を行う。そして、CPU25からCPU11に対して、復号化の準備が完了した旨が通知される(ステップS13)。そして、ステップS14で、例えばユーザによるコンピュータ装置1の操作に応じて、CPU11からCPU25に対して復号化を開始する旨の命令が送信される。
この復号化開始命令には、フォワード再生およびリバース再生の何れを行うかを示す再生方向情報と、再生速度を示す速度情報とが含まれる。速度情報は、値が「1」で通常の1倍速再生、値が「1」未満「0」以上でスロー再生を示し、特に速度情報の値が「0」であれば、ポーズ再生を示す。速度情報として負の値を許し、速度情報が負の値であればリバース再生であることを示すようにしてもよい。また、ステップ再生を行うか否かの情報も、復号化開始命令に含まれて送信される。なお、以下では、ステップ再生は、再生速度が1倍速以下であるものと見なす。
CPU25は、このCPU11からの復号化開始命令を受けると、メモリ21に溜め込まれたエレメンタリストリームのうち1GOP分のデータに対して、再生方向に応じて、デコーダ23に入力するピクチャと表示ピクチャとをスケジューリングする(ステップS15)。例えば、フォワード再生であれば、図3に示したようにしてスケジューリングがなされ、メモリ21からのピクチャの読み出し順と、デコーダ23に対する表示開始命令とが決められる。
次のステップS16(図26)で、CPU25は、速度情報に基づき1倍速未満の再生速度での再生が指示されているか否かを判断する。若し、1倍速未満の再生速度での再生が指示されていると判断されれば処理はステップS17に移行され、現在デコーダ23に入力されるピクチャが先行的に復号化を行うピクチャであるか否かが判断される。
例えば、デコーダ23に入力されるピクチャの配列が配列(1)であれば、I2ピクチャ、4枚のPピクチャおよびB0ピクチャが先行的に復号化されるピクチャであるとされる。ピクチャ配列が配列(2)であれば、I2ピクチャ、4枚のPピクチャおよび出力順で1つ前のGOPにおけるB1ピクチャが先行的に復号化されるピクチャであるとされる。また、デコーダ23に入力されるピクチャ配列が標準的なピクチャ配列であれば、I2ピクチャ、B0ピクチャおよびB1ピクチャが先行的に復号化されるピクチャであるとされる。ステップS17で、入力ピクチャが先行的に復号化を行うピクチャであると判断されれば、処理はステップS20に移行される。
一方、ステップS17で、入力ピクチャが先行的に復号化を行うピクチャでないと判断されれば、処理はステップS18に移行する。ステップS18では、CPU25が速度情報に基づきフレーム更新タイミングを計算し、次のステップS19で、現在がフレーム更新タイミングであるか否かが判断される。例えば、図7や図8を用いて既に説明したように、1/2倍速スロー再生が命令されている場合には、次のフレーム同期信号のタイミングから1フレーム同期信号期間毎に、フレーム更新がなされる。また、ポーズ再生が命令されている場合には、次のフレーム同期信号のタイミングから、フレーム更新がなされない。さらに、ステップ再生が命令されている場合には、次のフレーム同期信号のタイミングでフレーム更新がなされる。
ステップS19で、現在が更新タイミングでないと判断されれば、処理は後述するステップS25に移行される。また、現在が更新タイミングであると判断されれば、処理はステップS20に移行される。なお、最初の1フレーム目は、更新タイミングであると見做される。
ステップS20で、CPU25は、ステップS15で求められたスケジュールなどに基づき、デコーダ23に対して復号化開始命令を転送する。それと共に、CPU25は、メモリ21に溜め込まれたエレメンタリストリームを、ステップS15で求められたスケジュールなどに基づきピクチャ単位で読み出し、デコーダ23に供給する。デコーダ23は、転送された復号化開始命令に基づき、供給されたピクチャを、必要に応じてフレームメモリ24に書き込まれた、復号化されたピクチャを用いて復号化する。復号化されたピクチャは、フレームメモリ24の書き込みあるいは上書き可能な領域に対して書き込まれる(ステップS21)。
また、ステップS22で、CPU25からデコーダ23に対して、ステップS15で求められたスケジュールなどに基づき、表示開始命令が転送される。そして、ステップS23で、この表示開始命令に応じて、1フレームの表示(出力)がなされる。
なお、上述のステップS17で、入力ピクチャが先行的に復号化を行うピクチャであると判断された場合、処理がステップS20に移行されることで、ステップS18およびステップS19によるフレーム更新タイミングに関する処理がキャンセルされるので、速度情報が1倍速を示す値に自動的に設定されることになる。これに限らず、入力ピクチャが先行的に復号化を行うピクチャであると判断された場合に、ステップS18により速度情報の値を「1」として、フレーム更新タイミングを計算してもよい。
ステップS24で、1GOP分の表示(出力)が行われたか否かが判断される。若し、1GOP分の表示(出力)が行われていないと判断されれば、処理はステップS25に移行され、データの最後まで出力されたか否かが判断される。若し、最後まで出力されたと判断されれば、一連の再生動作が終了される。また、ステップS25で、データの最後まで出力されていないと判断されれば、処理はステップS16に戻される。
一方、ステップS24で、1GOP分の表示(出力)が行われたと判断されれば、処理はステップS26に移行され、データの最後まで出力されたか否かが判断される。若し、最後まで出力されたと判断されれば、一連の再生動作が終了される。また、ステップS26で、データの最後まで出力されていないと判断されれば、処理はステップS27に移行され、CPU25からCPU11に対して、1GOP分の表示(出力)が完了した旨が通知される。
次のステップS28で、CPU11により、上述のステップS10でハードディスクドライブ14から読み出されたエレメンタリストリームに対し、次に必要となる1GOP分のエレメンタリストリームが、ハードディスクドライブ14から読み出される。このとき、メモリ21に対して既に十分なデータが溜め込まれている場合には、ステップS28の処理を省略することができる。読み出された1GOP分のエレメンタリストリームは、メモリ21に転送され、溜め込まれる(ステップS29)。読み出されたストリームのメモリ21への転送が完了されたら、たら、CPU11からCPU25に対して、転送完了が通知される(ステップS30)。
CPU25は、CPU11からの転送完了通知を受けると、例えばデコーダ23の初期化など、当該エレメンタリストリームを復号化するための準備を行う。そして、CPU25からCPU11に対して、復号化の準備が完了した旨が通知される(ステップS31)。そして、ステップS32で、CPU25により、GOP処理が必要か否かが判断される。例えば、ユーザがコンピュータ装置1に対して、再生方向を切り替えるような操作を行った場合、GOP単位で再度スケジューリングを行う必要がある。若し、必要であると判断されれば、処理はステップS15に移行され、スケジューリングがなされる。また、GOP処理が必要でないと判断されれば、処理はステップS16に移行される。
なお、上述では、この発明の実施の一形態、ならびに、実施の一形態の大1および第2の変形例がMPEG2方式のロングGOPによるエレメンタリストリームに対して適用されるように説明したが、これはこの例に限定されない。例えば、この発明は、ピクチャが全てIピクチャで構成され、1GOP=1ピクチャとされるシングルGOPの例についても適用可能である。また、MPEG2方式に限らず、他の方式のビデオストリームにも適用させることができる。
また、上述では、この発明に適用可能な再生装置が、デコーダ23を搭載するデコーダボード2をコンピュータ装置に所定に装填して構成されるように説明したが、これはこの例に限定されない。例えば、CPU11が十分高速であって、尚かつ、メモリ12に十分な容量があれば、デコーダボード2をコンピュータ装置1に装填せず、CPU11上のソフトウェア処理で、この発明による再生制御を行うことも可能である。
さらに、上述では、GOPがI、PおよびBピクチャから構成されているように説明したが、これはこの例に限らず、GOPがIピクチャおよびBピクチャのみから構成される場合にも、この発明を適用することができる。この場合、例えばIピクチャおよび最初に出力される予定のBピクチャを、デコーダ23に対して先行的に入力され復号化されるピクチャとすることが考えられる。
なお、ハードディスクドライブ14に格納されているビデオストリームに対して、ハードディスクドライブ14からから読み出すデータとして有効であるか否かを示す読み出し用のフラグ群、復号化のスケジューリングにおいて有効であるか否かを示す復号化用のフラグ群、復号化されたデータを表示するスケジューリングにおいて有効であるか否かを示す表示用のフラグ群などを、当該ビデオストリームに対応するメタデータとして適宜設け、一連のフラグ群を再生速度や再生方向に応じて自動的に更新することにより、デコーダ23におけるスケジューリングを管理することも可能である。
このとき、過去のスロー再生などの可変速再生処理に用いた一連のスケジューリング、フラグ群の更新情報を、別途スケジューリングのメタデータ(履歴情報)として管理することも可能であり、必要に応じて、ビデオストリーム中にシンタックスとして記述したり、記録媒体であるハードディスクドライブ14などに別途記録したりしてもよい。
また、デコーダボード2に搭載されるデコーダ数やフレームメモリ24のバンク数、デコーダIDなどをメタデータ(構成履歴情報)として管理することも可能である。さらに、再生速度、再生方向などをメタデータ(再生履歴情報)として管理することも可能である。このとき、これらメタデータを、必要に応じてビデオストリーム中にシンタックスとして記述したり、記録媒体であるハードディスクドライブ14などに別途記録してもよい。
このようなメタデータ(履歴情報)を参照することにより、過去に実行されたスケジューリング処理を再利用することができ、さらに正確に高速に実行することが可能となる。このようなメタデータは、例えばデータベースとして外部装置で管理するような構成にしてもよい。
なお、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、デコーダ23(実施の一形態の第2の変形例においては、デコーダ23A、23Bおよび23C、以下では、繁雑さを避けるために実施の一形態の、デコーダボード2に対してデコーダ23が1基のみ、搭載されている例について、説明する)が、ハードディスクドライブ14に記録されているビデオストリームを、完全に復号化しない(中途段階まで復号化する)場合においても、この発明を適用可能である。
具体的には、例えば、デコーダ23が、可変長符号に対する復号化および逆量子化のみを行い、逆DCT(Discrete Cosine Transform)を実行しない場合や、逆量子化を行うが可変長符号に対する復号化を行わない場合などにおいても、この発明を適用することができる。このような場合、例えば、デコーダ23は、例えば符号化処理および復号化処理においてどの段階(例えば逆量子化の段階)まで処理が行われたかを示す履歴情報を必要に応じて生成し、不完全に復号化されたデータに対応付けて出力することができるようにしてもよい。
さらに、上述の実施の形態においては、ハードディスクドライブ14に、不完全に符号化されたデータ(例えば、DCTおよび量子化が行われているが、可変長符号化処理が行われていないデータなど)と、必要に応じて、符号化処理および復号化処理の履歴情報が記憶されており、デコーダ23が、CPU25の制御に基づいて、供給された不完全に符号化されたデータを復号化し、ベースバンド信号に変換することができるような場合においても、この発明は適用可能である。
具体的には、デコーダ23が例えばDCTおよび量子化が行われているが、可変長符号化処理が行われていない不完全に符号化されたデータに対して、逆DCT変換および逆量子化のみを行い、可変長符号に対する復号化は実行しない場合などにおいても、この発明を適用することができる。
また、このような場合、例えば、CPU25は、不完全に符号化されたデータに対応付けられてハードディスクドライブ14に記憶されている符号化処理および復号化処理の履歴情報をCPU11を介して取得し、これらの情報に基づいて、デコーダ23による復号化のスケジューリングを行うことができるようにしてもよい。
さらに、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、ハードディスクドライブ14に、不完全に符号化されたデータと、必要に応じて、符号化処理および復号化処理の履歴情報が記憶されており、デコーダ23が、CPU25の制御に基づいて、供給された不完全に符号化されたデータを完全に復号化しない(中途段階まで復号化する)場合においても、この発明は適用可能である。
また、このような場合も、例えば、CPU25は、不完全に符号化されたデータに対応付けられてハードディスクドライブ14に記憶されている符号化処理および復号化処理の履歴情報を取得し、これらの情報に基づいて、デコーダ23による復号化のスケジューリングを行うことができるようにしてもよい。さらに、この場合においても、デコーダ23は、符号化処理および復号化処理の履歴情報を必要に応じて生成し、不完全に復号化されたデータに対応付けて出力することができるようにしてもよい。
換言すれば、デコーダ23が、CPU25の制御に基づいて、部分的な復号化を行う(復号化処理の工程のうちの一部を実行する)場合においても、この発明は適用可能であり、CPU25は、不完全に符号化されたデータに対応付けてハードディスクドライブ14に記憶されている符号化処理および復号化処理の履歴情報を取得し、これらの情報に基づいて、デコーダ23による復号化のスケジューリングを行うことができ、デコーダ23は、符号化および復号化の履歴情報を必要に応じて生成し、不完全に復号化されたデータに対応付けて出力することができるようにしてもよい。
さらに、ハードディスクドライブ14には、ビデオストリームに対応付けて、さらに符号化お処理よび復号化処理の履歴情報を記録するようにしてもよく、CPU25は、圧縮符号化されたビデオストリームの復号化のスケジューリングを、符号化処理および復号化処理の履歴情報に基づいて行うようにしてもよい。さらに、デコーダ23が、CPU25の制御に基づいて、圧縮符号化されたビデオストリームを復号化して、ベースバンド信号に変換することができるような場合においても、符号化および復号化の履歴情報を必要に応じて生成し、ベースバンド信号に対応付けて出力することができるようにしてもよい。
なお、上述の実施の一形態の第2の変形例においては、1または複数のデコーダ23がデコーダボード2に搭載され、デコーダボード2がコンピュータ装置1に装填されて用いられるように説明したが、デコーダが独立した装置として構成されている場合にも、この発明を適用可能である。
このとき、独立した装置として構成されているデコーダは、圧縮符号化されたビデオストリームの供給を受けてこれを復号化し、表示または出力するのみならず、上述した場合と同様にして、ビデオストリームの供給を受け、中途段階まで部分的に復号化して、符号化および復号化の履歴情報と共に外部に出力したり、部分的に符号化されたビデオストリームの供給を受け、復号化処理を行い、ベースバンド信号に変換して外部に出力したり、部分的に符号化されたビデオストリームの供給を受け、中途段階まで部分的に復号化して、符号化および復号化の履歴情報と共に外部に出力するようにしてもよい。
さらに、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、CPU11およびCPU25が互いに独立した構成とされているが、CPUの構成は、これに限らず、例えば、CPU11およびCPU25を、再生装置全体を制御する1つのCPUとして構成するようにしてもよい。また、CPU11およびCPU25が互いに独立して構成されている場合であっても、CPU11およびCPU25を1つのチップ内に構成することも可能である。
さらにまた、CPU11およびCPU25が互いに独立して構成されている場合、上述の実施の形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例において、CPU11が実行する処理の少なくとも一部を、例えば時分割でCPU25が実行することができるようにしたり、CPU25が実行する処理の少なくとも一部を、例えば時分割で、CPU11が実行することができるようにしてもよい。すなわち、CPU11およびCPU25は、分散処理が可能なプロセッサを用いることができる。
また、例えば、再生装置をLAN(Local Area Network)などのネットワークに接続可能な構成とし、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例において、CPU11および/またはCPU25が実行する処理の少なくとも一部を、ネットワークを介して接続されている他の装置のCPU上で実行させるようにもできる。
同様に、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、メモリ21およびフレームメモリ24が互いに独立した構成とされているが、これはこの例に限らず、メモリ21およびフレームメモリ24のそれぞれを、1つのメモリの異なる領域で構成することもできる。
さらに、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、ハードディスクドライブ14およびデコーダ23(実施の一形態の第2の変形例においては、ハードディスクドライブ14、デコーダ23A、23Bおよび23C、ならびに、セレクタ27)を、それぞれPCIブリッジ20およびPCIバス15を介して接続し、再生装置として一体的に構成したものとして説明したが、この発明はこの例に限られない。例えば、これらの構成要素のうちの一部が外部から有線または無線で接続される場合や、これらの構成要素が、この他、種々の接続形態で相互に接続される場合にも適用することができる。
さらに、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、ビデオストリームがハードディスクドライブ14に格納されているものとして説明したが、これはこの例に限定されない。すなわち、例えば光ディスク、光磁気ディスク、半導体メモリ、磁気ディスクといった様々な記録媒体に記録されたビデオストリームに対して再生処理を行う場合にも、この発明を適用することができる。
さらにまた、上述の実施の一形態、実施の一形態の第1の変形例および実施の一形態の第2の変形例においては、CPU25、メモリ21、デコーダ23およびフレームメモリ24(実施の一形態の第2の変形例においては、CPU25、メモリ21、デコーダ23A、23Bおよび23C、フレームメモリ24A、24Bおよび24C、ならびに、セレクタ27)を、コンピュータ装置に接続可能な同一の拡張ボード(例えば、PCIボードやPCI−Expressボード)に搭載した例について説明したが、これはこの例に限定されない。例えば、PCIーExpressなどの技術により、拡張ボード間のデータ転送速度が十分速い場合には、これらの構成要素を、それぞれ別の拡張ボードに搭載するようにしてもよい。
なお、この明細書において、システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かを問わない。