以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の第1の側面の情報処理装置(例えば、図1の再生装置)は、圧縮符号化映像データをデコードするデコード手段(例えば、図1のデコーダ22乃至デコーダ24)と、デコード手段への圧縮符号化映像データの供給を制御する供給制御手段(例えば、図1のPCIブリッジ17)と、供給制御手段およびデコード手段が実行する処理を制御する制御手段(例えば、図1のCPU20)とを備え、制御手段は、デコード手段によりデコード処理が実行される処理単位(例えば、正方向再生においては、コーディングオーダで、第1のGOPの先頭の2つのBピクチャ以外の13ピクチャと、その後ろの第2のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ、逆方向再生においては、第2のGOPの先頭の2つのBピクチャ以外の13ピクチャと、逆の表示順においてその前に表示される第3のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ)に含まれる複数のピクチャのうちの、IピクチャおよびPピクチャの数を基に、デコード手段によりデコードが開始されるタイミングである第1のタイミングに対する、デコード手段によりデコードされたピクチャの出力が開始されるタイミングである第2のタイミングのずれ量を決定する。
制御手段は、制御手段に再生速度および再生方向を指令する再生速度指令手段(例えば、図1のCPU11)により指令された再生方向を更に参照して、第1のタイミングに対する、第2のタイミングのずれ量を決定することができる。
デコード手段は、処理単位に含まれるピクチャ数より少ない数のバンクメモリ(例えば、図2のビデオバンクメモリ82)を備えて、デコード処理済のピクチャデータを保持することができ、制御手段は、IピクチャおよびPピクチャが、バンクメモリのうち、ピクチャタイプにより定められる固定の位置に保持され、バンクメモリに保持されているデコード処理済のピクチャデータが、必要に応じて参照画像として利用されるようにデコード手段によるデコード処理を制御することができる。
デコード手段を複数備えることができ、複数のデコード手段から出力された非圧縮のデータの供給を受け、供給された非圧縮のデータを切り替えて選択的に出力する出力切り替え手段(例えば、図1のセレクタ25)を更に備えることができ、制御手段は、出力切り替え手段による処理を更に制御することができる。
デコード手段は、デコード処理を実行するデコード処理実行手段(図2のデコード処理部77)と、デコード処理実行手段へのピクチャの供給を制御するピクチャ供給制御手段(例えば、図2のエレメンタリストリームアドレス決定部73)とを備えることができ、ピクチャ供給制御手段は、制御手段の制御に基づいて、処理単位に含まれるピクチャのうち、IピクチャおよびPピクチャ、並びに、デコード手段から出力されるピクチャとして選択されたBピクチャをデコード処理手段へ供給することができ、デコード処理手段は、制御手段の制御に基づいて、ピクチャ供給制御手段により供給されたそれぞれのピクチャをデコードするとともに、デコード手段から出力されるピクチャとして選択されたピクチャを出力することができる。
本発明の第1の側面の情報処理方法、記録媒体に記録されたプログラム、並びに、プログラムは、再生速度の指令を取得する再生速度指令取得ステップ(例えば、図15のステップS101の処理)と、圧縮符号化映像データの複数のデコーダ(例えば、図1のデコーダ22乃至デコーダ24)への供給を制御する供給制御ステップ(例えば、図15のステップS105の処理)と、デコーダによりデコード処理が実行される処理単位(例えば、正方向再生においては、コーディングオーダで、第1のGOPの先頭の2つのBピクチャ以外の13ピクチャと、その後ろの第2のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ、逆方向再生においては、第2のGOPの先頭の2つのBピクチャ以外の13ピクチャと、逆の表示順においてその前に表示される第3のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ)に含まれる複数のピクチャのうちの、IピクチャおよびPピクチャの数を基に、デコーダによりデコードが開始されるタイミングである第1のタイミングに対する、デコーダによりデコードされたピクチャの出力が開始されるタイミングである第2のタイミングのずれ量を決定する位相決定ステップ(例えば、図16を用いて説明する処理)と、供給制御ステップの処理によりデコーダへの供給が制御された圧縮符号化映像データをデコードするデコードステップ(例えば、図18のステップS192またはステップS193の処理)とを含む。
本発明の第2の側面の情報処理装置(例えば、図1の再生装置)は、圧縮符号化映像データを記憶する記憶手段(例えば、図1のHDD16)と、記憶手段により記憶されている前記圧縮符号化映像データを読み出して出力する読み出し手段(例えば、図1のサウスブリッジ15)と、圧縮符号化映像データをデコードするデコード手段(例えば、図1のデコーダ22乃至デコーダ24)と、デコード手段への圧縮符号化映像データの供給を制御する供給制御手段(例えば、図1のPCIブリッジ17)と、供給制御手段およびデコード手段が実行する処理を制御する制御手段(例えば、図1のCPU20)と、制御手段に再生速度を指令する再生速度指令手段(例えば、図1のCPU11)とを備え、制御手段は、デコード手段によりデコード処理が実行される処理単位(例えば、正方向再生においては、コーディングオーダで、第1のGOPの先頭の2つのBピクチャ以外の13ピクチャと、その後ろの第2のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ、逆方向再生においては、第2のGOPの先頭の2つのBピクチャ以外の13ピクチャと、逆の表示順においてその前に表示される第3のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ)に含まれる複数のピクチャのうちの、IピクチャおよびPピクチャの数を基に、デコード手段によりデコードが開始されるタイミングである第1のタイミングに対する、デコード手段によりデコードされたピクチャの出力が開始されるタイミングである第2のタイミングのずれ量を決定する。
本発明の第2の側面の情報処理方法、記録媒体に記録されたプログラム、並びに、プログラムは、記憶部に記憶された前記圧縮符号化映像データを読み出す読み出しステップ(例えば、図3のステップS1の処理)と、再生速度の指令を供給する再生速度指令供給ステップ(例えば、図3のステップS5またはステップS11の処理)と、再生速度の指令を取得する再生速度指令取得ステップ(例えば、図15のステップS101の処理)と、読み出しステップの処理により読み出された圧縮符号化映像データの複数のデコーダ(例えば、図1のデコーダ22乃至デコーダ24)への供給を制御する供給制御ステップ(例えば、図15のステップS105の処理)と、デコーダによりデコード処理が実行される処理単位(例えば、正方向再生においては、コーディングオーダで、第1のGOPの先頭の2つのBピクチャ以外の13ピクチャと、その後ろの第2のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ、逆方向再生においては、第2のGOPの先頭の2つのBピクチャ以外の13ピクチャと、逆の表示順においてその前に表示される第3のGOPの先頭のIBBの3ピクチャとの合計16ピクチャ)に含まれる複数のピクチャのうちの、IピクチャおよびPピクチャの数を基に、デコーダによりデコードが開始されるタイミングである第1のタイミングに対する、デコーダによりデコードされたピクチャの出力が開始されるタイミングである第2のタイミングのずれ量を決定する位相決定ステップ(例えば、図16を用いて説明する処理)と、供給制御ステップの処理によりデコーダへの供給が制御された圧縮符号化映像データをデコードするデコードステップ(例えば、図18のステップS192またはステップS193の処理)とを含む。
以下、図を参照して、本発明の実施の形態について説明する。
図1は本発明を適用した再生装置1のハードウェア構成を示すブロック図である。
CPU(Central Processing Unit)11は、ノースブリッジ12に接続され、例えば、HDD(Hard disk Drive)16に記憶されているデータの読み出しなどの処理を制御したり、CPU20が実行するデコードのスケジューリング、デコードおよび表示出力の制御などの処理の開始、変更、または終了を指令するためのコマンドを生成し、出力する。ノースブリッジ12は、PCIバス(Peripheral Component Interconnect/Interface)14に接続され、例えば、CPU11の制御に基づいて、サウスブリッジ15を介して、HDD16に記憶されているデータの供給を受けて、PCIバス14、PCIブリッジ17を介して、メモリ18に供給する。また、ノースブリッジ12は、メモリ13とも接続されており、CPU11の処理に必要なデータを授受する。
メモリ13は、CPU11が実行する処理に必要なデータを保存することが可能な、例えば、DDR(Double Data Rate)等の高速アクセス可能な記憶用のメモリである。サウスブリッジ15は、HDD16のデータの書き込みおよび読み出しを制御する。HDD16には、圧縮符号化されたストリームデータが記憶されている。
PCIブリッジ17は、コマンドバッファ31およびリザルトバッファ32を内部に備えるとともに、CPU11の制御に基づいてHDD16から読み出されたストリームデータをバッファリングするメモリ18が接続されている。PCIブリッジ17は、CPU11の制御に基づいてHDD16から読み出されたストリームデータを、メモリ18に供給して保存させることができるとともに、CPU20の制御に基づいて、メモリ18に保存されているストリームデータを読み出して、デコーダ22乃至デコーダ24に供給する。また、PCIブリッジ17は、PCIバス14またはコントロールバス19を介したコマンドまたはリザルトに対応する制御信号の授受を制御する。
コマンドバッファ31は、CPU11から、ノースブリッジ12およびPCIバス14を介してコマンドの書き込みを受けるとともに、CPU20から、コントロールバス19を介して、書き込まれているコマンドが読み出されるようになされている。また、リザルトバッファ32は、コントロールバス19を介して、CPU20によりコマンドに対するリザルトの書き込みを受けるとともに、CPU11から、ノースブリッジ12およびPCIバス14を介して、書き込まれているリザルトが読み取られるようになされている。
メモリ18は、PCIブリッジ17の制御に基づいて、HDD16により読み出された、圧縮符号化されたストリームデータを記憶するものであり、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等で構成されている。
CPU20は、コントロールバス19を介して、CPU11によりPCIブリッジ17のコマンドバッファ31に書き込まれたコマンドを読み取り、このコマンドにしたがって、PCIブリッジ17、デコーダ22乃至デコーダ24、および、セレクタ25が実行する処理を制御する。メモリ21は、CPU20の処理に必要なデータを記憶する。
デコーダ22乃至デコーダ24は、CPU20の制御に基づいて、供給された圧縮符号化されたストリームデータをデコードし、非圧縮の映像信号を出力する。デコーダ22は、その内部にメモリ41を、デコーダ23は、その内部にメモリ42を、デコーダ24は、その内部にメモリ43を有し、必要に応じて、供給された圧縮符号化されたストリームデータ、または、デコードされた非圧縮の映像信号を保持することが可能なようになされている。また、デコーダ22乃至デコーダ24は、再生装置1に含まれない独立した装置として設けられていても良い。
セレクタ25は、CPU20による設定に基づいて、デコーダ22乃至デコーダ24により出力された非圧縮のSDI(Serial Digital Interface)データの出力をフレーム精度で切り替えることができる。
なお、図1の再生装置1は、1つの装置として構成されていても良いし、複数の装置によって構成されるようにしても良い。例えば、図1の再生装置のうち、CPU11、ノースブリッジ12、メモリ13、サウスブリッジ15、および、HDD16の部分が、パーソナルコンピュータの構成のうちの一部であるとし、PCIカード、PCI−Expressカードなどの拡張カード、または、拡張ボードに、PCIバス14、PCIブリッジ17、メモリ18、コントロールバス19、CPU20、メモリ21、デコーダ22乃至デコーダ24、および、セレクタ25の機能を備えさせ、パーソナルコンピュータに拡張カードを装着して再生装置1として機能するようにしても良い。また、これらを、さらに複数の装置に分割して、再生装置1を構成するようにしても良い。
次に、再生装置1の動作について説明する。
HDD16には、MPEGのLong GOP方式で圧縮された圧縮映像のデータが記憶されている。
CPU11は、ノースブリッジ12を介して、サウスブリッジ15を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD16から、圧縮符号化されたストリームデータを読み出させ、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させるとともに、再生スピード(再生方向を示す情報を含む)を示す情報、デコード開始コマンド、または、表示開始コマンドなどを、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に書き込む。
CPU20は、PCIブリッジ17のコマンドバッファ31に書き込まれたCPU11からのコマンドを基に、圧縮符号化されたストリームデータのデコードおよび表示のスケジュールを決定する。具体的には、CPU20は、デコードに利用されるデコーダ22乃至デコーダ24の選択、圧縮符号化されたストリームデータのデコーダ22乃至デコーダ24への入力のタイミング、フレームごとのデコードのタイミング、参照画像のバンク位置の設定、デコード時のバンクメモリの割り当て、および、デコードされたピクチャの出力、すなわち、表示のタイミングを決定する。
そして、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化されたストリームデータを、決定されたスケジュールに基づいて、デコーダ22乃至デコーダ24のうちのいずれか対応するものに供給させる。
CPU20は、デコーダ22乃至デコーダ24を制御して、供給された圧縮符号化されたデータをデコードさせる。デコーダ22乃至デコーダ24は、供給された圧縮符号化されたストリームデータをデコードして、非圧縮のSDIデータを生成して、セレクタ25に出力する。
そして、CPU20は、セレクタ25を制御して、デコーダ22乃至デコーダ24より出力された非圧縮のSDIデータの出力を切り替えさせる。
図2は、デコーダ22乃至デコーダ24の更に詳細な構成を示すブロック図である。
入力処理部71は、PCIブリッジ17から供給された圧縮符号化されたストリームデータをメモリコントローラ74に供給して入力バッファ75に保存させるとともに、供給されたストリームデータから、ピクチャ単位で、先頭番地、データサイズ、ピクチャヘッダ情報、Qマトリクスなどを取得して、アドレス管理テーブル72に供給する。
アドレス管理テーブル72は、入力処理部71から供給された、ピクチャ単位の先頭番地、データサイズ、ピクチャヘッダ情報、Qマトリクスなどの情報を、テーブルIDにより区別可能なテーブル情報として、それぞれ、ピクチャ別に保持する。
エレメンタリストリームアドレス決定部73は、CPU20からコントロールバス19を介して供給される制御信号を基に、入力バッファ75に保存されたストリームデータを、ピクチャ単位でデコード処理部77に供給させることができるように、アドレス管理テーブル72に保持されている所定のテーブルIDで示されるテーブル情報から、対応するピクチャの先頭番地およびピクチャサイズ情報を読み出して、メモリコントローラ74に供給する。
メモリコントローラ74は、入力バッファ75へのストリームデータの書き込みおよび読み出しを制御する。すなわち、メモリコントローラ74は、入力処理部71から供給されたストリームデータを入力バッファ75に書き込むとともに、エレメンタリストリームアドレス決定部73から供給される、対応するピクチャの先頭番地およびピクチャサイズ情報を基に、所定のピクチャを読み出して、デコード処理部77に供給する。
入力バッファ75は、SDRAMなどの記憶用のメモリで構成された図1のメモリ41乃至メモリ43の記録領域のうちの一部に相当し、メモリコントローラ74の制御に基づいて、ストリームデータを保存する。
コントロールバス76は、データバス19を介してCPU20から供給される制御信号を、エレメンタリストリームアドレス決定部73、デコード処理部77、書き込み画アドレス決定部78、参照画アドレス決定部79、および、出力アドレス決定部80に供給するとともに、デコーダ22乃至デコーダ24の内部において実行される処理に関する情報を、データバス19を介して、CPU20に供給する。
デコード処理部77は、メモリコントローラ74により入力バッファ75から読み出されたMPEGビデオストリームを、参照画アドレス決定部79から供給された参照画を必要に応じて参照してデコードし、デコードされたベースバンド(非圧縮)の映像信号を、書き込み画アドレス決定部78に供給する。
書き込み画アドレス決定部78は、データバス19を介してCPU20から供給される制御信号を、コントロールバス76を介して取得し、この制御信号に基づいて、デコード処理部77によりデコードされて供給されたベースバンドの映像信号のビデオバンクメモリ82における記録位置、すなわち、保存されるバンク位置を決定し、ベースバンドの映像信号を、メモリコントローラ81を介して、ビデオバンクメモリ82の所定のバンク位置に保存させる。
参照画アドレス決定部79は、データバス19を介してCPU20から供給される制御信号を、コントロールバス76を介して取得し、この制御信号に基づいて、ビデオバンクメモリ82のうち、Pピクチャの前方向(forward)の参照画像バンクとして指定されたバンクに保持されているフレーム画像データや、Bピクチャの前方向および後ろ方向(backward)の参照画像バンクとして指定されたバンクに保持されているフレーム画像データを、メモリコントローラ81を制御して読み出させ、デコード処理部77に供給する。
出力アドレス決定部80は、データバス19を介してCPU20から供給される制御信号を、コントロールバス76を介して取得し、この制御信号に基づいて、ビデオバンクメモリ82に保持されているフレーム画像データのうちの出力画像、すなわち、表示させるフレームのバンクを指定して、メモリコントローラ81を制御して読み出させ、出力する。
メモリコントローラ81は、ビデオバンクメモリ82へのフレーム画像の書き込みおよび読み出しを制御する。ビデオバンクメモリ82は、SDRAMなどの記憶用のメモリで構成された図1のメモリ41乃至メモリ43の記録領域のうちの一部に相当する、8バンク(8面)のフレーム画像用のバンクメモリであり、メモリコントローラ81の制御に基づいて、1フレームのフレーム画像データを設定されたバンクに保持する。
次に、図3のフローチャートを参照して、CPU11が実行する制御処理について説明する。
ステップS1において、CPU11は、ノースブリッジ12およびサウスブリッジ15を制御して、ユーザによりデコードして出力するストリームデータとして指定された、圧縮符号化されたストリームデータのうちの複数GOPをHDD16から読み出す。
ステップS2において、CPU11は、読み出した複数GOPのストリームデータを、PCIバス14を介してPCIブリッジ17に供給し、メモリ18に転送する。
ステップS3において、CPU11は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に、データ転送完了と、メモリ18に転送されたGOPに含まれるピクチャのピクチャ情報を供給することにより、CPU20に対して、データ転送完了と、ピクチャ情報とを通知する。ピクチャ情報には、例えば、ピクチャタイプ、ピクチャ単位のヘッダ情報、ピクチャサイズなどの情報が含まれる。
ステップS4において、CPU11は、CPU20およびメモリ18から、準備完了の通知を受ける。具体的には、CPU11は、CPU20がコントロールバス19を介してPCIブリッジ17のリザルトバッファ32に供給した、データ転送完了とピクチャ情報の通知に対するリザルトを、ノースブリッジ12およびPCIバス14を介して読み込むとともに、メモリ18から、PCIブリッジ17、PCIバス14およびノースブリッジ12を介して、複数GOPのストリームデータの保存終了の通知を受ける。
ステップS5において、CPU11は、図示しない操作入力部から、ユーザによる再生出力処理の開始の指令を受け、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に、デコード開始コマンドを送信し、デコーダ22乃至デコーダ24により、デコード処理を開始させる。デコード開始コマンドには、表示スピード情報が含まれる。
CPU11は、ステップS6において、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に、表示開始コマンドを送信し、ステップS7において、デコーダによりデコードされて得られたSDI信号、すなわち、ベースバンドの画像信号の、1GOP分の表示を開始させる。
ステップS8において、CPU11は、CPU20がコントロールバス19を介してPCIブリッジ17のリザルトバッファ32に供給した表示開始コマンドに対するリザルト、すなわち、後述する図18のステップS194において、CPU20がPCIブリッジ17のリザルトバッファ32に書き込んだフレームごとの表示完了の通知を、ノースブリッジ12およびPCIバス14を介して読み込んで、いずれのピクチャの表示が終了したかを常にチェックしておくことにより、1GOPの表示完了を検出する。
ステップS9において、CPU11は、表示されたGOPは、表示されるストリームデータの最後であるか否かを判断する。ステップS9において、表示されたGOPは、表示されるストリームデータの最後であると判断された場合、処理は終了される。
ステップS9において、表示されたGOPは、表示されるストリームデータの最後ではないと判断された場合、ステップS10において、CPU11は、図示しない操作入力部から供給される信号を基に、例えば、ストリームデータの再生終了、再生されているストリームデータの変更、もしくは、再生速度または方向の変更指令など、入力ストリーム状態の変更を伴う指令がユーザから入力されたか否かを判断する。
ステップS10において、入力ストリーム状態の変更を伴う指令がユーザから入力されたと判断された場合、ステップS11において、CPU11は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に、ユーザの操作入力に対応するコマンドを送信する。
ステップS10において、入力ストリーム状態の変更を伴う指令がユーザから入力されていないと判断された場合、または、ステップS11の処理の終了後、ステップS12において、CPU11は、HDD16に、表示させるストリームデータが残っているか否かを判断する。ステップS12において、HDD16に、表示させるストリームデータが残っていないと判断された場合、処理は、ステップS7に戻り、メモリ18に転送され、まだ表示されていないストリームデータにおいて、ステップS7以降の処理が繰り返される。
ステップS12において、HDD16に、表示させるストリームデータが残っていると判断された場合、ステップS13において、CPU11は、ノースブリッジ12およびサウスブリッジ15を制御して、デコードして出力するストリームデータのうち、メモリ18へ転送済みのGOPに続く1GOPをHDD16から読み出す。
ステップS14において、CPU11は、読み出した1GOPのストリームデータを、PCIバス14を介してPCIブリッジ17に供給し、メモリ18に転送する。すなわち、メモリ18には、再生されるストリームデータの終了部分付近が保持されている場合を除いて、基本的には、所定数のGOPが保持されているようになされている。
ステップS15において、CPU11は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に、データ転送完了と、メモリ18に転送されたGOPに含まれるピクチャのピクチャ情報を供給することにより、CPU20に対して、データ転送完了と、ピクチャ情報とを通知する。ピクチャ情報には、例えば、ピクチャタイプ、ピクチャ単位のサイズなどの情報が含まれる。
ステップS16において、CPU11は、CPU20およびメモリ18から、準備完了の通知を受ける。具体的には、CPU11は、CPU20がコントロールバス19を介してPCIブリッジのリザルトバッファ32に供給した、データ転送完了とピクチャ情報の通知に対するリザルトを、ノースブリッジ12およびPCIバス14を介して読み込むとともに、メモリ18から、PCIブリッジ17、PCIバス14およびノースブリッジ12を介して、複数GOPのストリームデータの保存終了の通知を受ける。
ステップS16の処理の終了後、処理は、ステップS7に進み、それ以降の処理が繰り返される。
このような処理により、CPU11は、CPU20にコマンドを供給し、供給したコマンドに対するリザルトを受けて、ストリームデータのデコードと、デコードされたデータの表示を制御することができる。
ここでは、デコードされたデータを1GOPずつ表示させる場合について説明したが、デコードされて生成されたSDI信号を外部に出力する場合にも、同様の処理を実行することにより、CPU11は、CPU20にコマンドを供給し、供給したコマンドに対するリザルトを受けて、ストリームデータのデコードと、デコードされたデータの外部への出力を制御することができることは言うまでもない。
そして、CPU20は、CPU11から供給されるコマンドに基づいて、複数のデコーダ(図1においては、デコーダ22乃至デコーダ24)によるデコード処理を制御する。具体的には、CPU20は、デコードに利用されるデコーダ22乃至デコーダ24の選択、換言すれば、圧縮符号化されたストリームデータの供給先を、デコーダ22乃至デコーダ24のうちのいずれにするのかを選択する処理を実行する。更に、CPU20は、圧縮符号化されたストリームデータのデコーダ22乃至デコーダ24のうち対応するものへの入力のタイミング、ピクチャごとのデコードのタイミング、参照画像のバンク位置の設定、デコード時のバンクメモリの割り当て、および、デコードされたピクチャの出力、すなわち、表示のタイミングを決定し、これらのタイミングを基に、PCIブリッジ17、デコーダ22乃至デコーダ24、および、セレクタ25を制御する。以下、図4乃至図38を参照して、CPU20によるデコードおよび表示出力の制御について説明する。
CPU20は、デコーダ22乃至デコーダ24によるデコード処理と、セレクタ25により出力されるSDI信号のセレクト処理とを制御するために、メモリ21に、各種情報を保持可能な複数のレジスタおよび情報キューを有するようになされている。情報キューは、FIFO(First In First Out)のキュー(queue)構造で、CPU11により供給されたコマンドや、ピクチャタイプ情報が対応付けられたピクチャIDおよびピクチャIDに付随する情報(例えば、時間情報)などを、デコードタイミングのスケジューリングや、デコードおよび表示の制御の用途ごとに、それぞれ所定の深さで蓄積することができるようになされている。
CPU20は、対応する情報キューに蓄積された情報を用いて、デコードおよび表示のタイミングを制御する。すなわち、メモリ21にピクチャがキューされるのではなく、CPU20の制御に基づいて、ピクチャIDがそれぞれの情報キューに設定されることにより、CPU20は、デコードおよび表示のタイミングを制御するための演算処理を実行することができる。
各種情報を蓄積する情報キューとして、例えば、コントロールバス19を介して、PCIブリッジ17のコマンドバッファ31から取得したコマンドを蓄積するコマンドキューをはじめとして、処理待ち行列に対応する入力ピクチャのピクチャIDがコーディングオーダで蓄積される入力ピクチャキュー、入力ピクチャキューに蓄積されたピクチャIDをリオーダしてディスプレイオーダに並べ替えて蓄積する表示順情報キュー、表示順情報キューに蓄積されたピクチャIDから、IピクチャおよびPピクチャを抽出してデコード順に並べ替えて蓄積するI/Pピクチャデコードキュー、I/Pピクチャデコードキューに設定されたピクチャIDに加えて、これらのピクチャIDに対応する時間情報が更に蓄積される時間情報付きI/Pピクチャデコードキュー、表示順にピクチャIDが設定される表示順設定キュー、表示順設定キューに設定されたピクチャIDに加えて、これらのピクチャIDに対応する時間情報が更に蓄積される時間情報付き表示順設定キュー、次に表示されるピクチャのピクチャIDを保持する表示キューなどが、CPU20による各種制御に用いられている。各キューに蓄積される情報、各キューの深さ、その情報を用いて実行される処理の詳細については、それぞれ後述する。
次に、図4のフローチャートを参照して、フレームごとに行う処理1について説明する。この処理ルーチンは、表示が指令されたストリームデータが終了するまで、または、表示の終了が指令されるまで、1フレームごとに繰り返して実行される。
ステップS31において、図5を用いて後述する入力ストリーム状態変更処理が実行される。入力ストリーム状態変更処理は、CPU11から新たなコマンドが発行されているか否かを確認する処理である。
ステップS32において、図6を用いて後述するデコードスケジュール処理1が実行される。デコードスケジュール処理1において、デコードタイミングがスケジュールされる。
ステップS33において、CPU20は、1フレーム単位で処理の時間を表すカウンタである時間カウンタを参照することにより、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームであるか否かを判断する。
ステップS33において、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームではないと判断された場合、ステップS34において、図38を用いて後述する1フレームディレイ表示設定処理が実行される。1フレームディレイ表示設定処理によって、1つ前の処理ルーチンにおけるステップS35のフレーム制御処理1においてデコードされて生成されたベースバンドのフレーム画像の表示が設定される。
ステップS33において、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームであると判断された場合、または、ステップS34の処理の終了後、ステップS35において、図18を用いて後述するフレーム制御処理1が実行される。フレーム制御処理1において、処理対象となっているフレームがデコードされる。
ステップS36において、CPU20は、すべてのフレームの処理が終了したか否かを判断する。ステップS36において、すべてのフレームの処理が終了していないと判断された場合、ステップS37において、CPU20は、1フレームを単位とする時間カウンタをインクリメントする。
ステップS37の処理の終了後、処理は、ステップS31に戻り、それ以降の処理が繰り返される。ステップS36において、すべてのフレームの処理が終了したと判断された場合、処理は終了される。
このようにして、CPU20は、1フレームの処理ごとに、時間カウンタをカウントアップし、ユーザの指令した再生速度に応じて、デコードをスケジュールして、1フレームごとに、デコードを行わせ、表示を設定することができる。
次に、図5のフローチャートを参照して、図4のステップS31において実行される、入力ストリーム状態変更処理について説明する。
ステップS51において、CPU20は、PCIブリッジ17のコマンドバッファ31から取得したコマンドを蓄積するコマンドキューをチェックする。
ステップS52において、CPU20は、コマンドキューに、例えば、再生速度(再生方向を含む)の変更、または、再生終了の指令など、入力ストリーム状態を変更させる新たなコマンドが保存されているか否かを判断する。
ステップS52において、コマンドキューに新たなコマンドが保存されていると判断された場合、ステップS53において、CPU20は、コマンドキューに最も早い時刻に保存されたコマンドに基づいて、再生速度および再生方向の設定に基づいたストリーム入力状態を変更する。ステップS52において、コマンドキューに新たなコマンドが保存されていないと判断された場合、または、ステップS53の処理の終了後、処理は、図4のステップS31に戻り、ステップS32に進む。
このような処理により、PCIブリッジ17のコマンドバッファ31から取得したコマンドを蓄積するコマンドキューに最も早い時刻に保存されたコマンドが参照され、そのコマンドに基づいて、ストリームの入力状態が変更される。
次に、図6のフローチャートを参照して、図4のステップS32において実行される、デコードスケジュール処理1について説明する。
ステップS71において、CPU20は、入力ピクチャキューを参照して、入力ピクチャキューが空であるか否かを判断する。入力ピクチャキューは、後述する入力処理(ステップS72)において設定される情報キューであり、デコードのスケジュールが次に決定される入力ピクチャと、そのスケジューリングに必要なピクチャのピクチャIDが設定される。
再生装置1が取り扱うストリームデータが、図7に示されるように、1GOPが15ピクチャで構成されているMPEGのLONG GOPのストリームデータである場合、1GOP相当の15ピクチャごとにデコード処理を行うデコーダ22乃至デコーダ24のそれぞれには、それぞれのGOPにおいて、表示順で先頭となる2つのBピクチャを除いた13ピクチャと、正方向の再生の場合は、その前のGOPにおいて、表示順で先頭となるIBBの3ピクチャ、逆方向の場合は、その後ろのGOPにおいて、表示順で先頭となるIBBの3ピクチャとの16ピクチャが供給される。
図8を用いて、デコーダ22乃至デコーダ24のそれぞれが担当するデコードの単位について説明する。図8では、デコーダ22乃至デコーダ24に供給されるピクチャの並びを、ディスプレイオーダで示している。再生装置1においては、1GOP相当(15ピクチャ)ごとに、デコード処理がデコーダ22乃至デコーダ24のうちの1つのデコーダにおいてそれぞれ実行されるが、上述したように、デコーダ22乃至デコーダ24のそれぞれには、1GOPにおいて表示順で先頭となる2つのBピクチャを除いた13ピクチャと、その前またはその後ろのGOPにおいて表示順で先頭から3つのピクチャとの16ピクチャが供給される。したがって、再生方向が正方向の場合は、図8Aに示されるように、デコーダ22乃至デコーダ24のうちの第1のデコーダに、第1GOPの先頭の2つのBピクチャを除いた13ピクチャと第2のGOPの先頭の3ピクチャが供給され、第2のデコーダに、第2GOPの先頭の2つのBピクチャを除いた13ピクチャと第3GOPの先頭の3ピクチャが供給され、同様にして、第3のデコーダに、第3GOPの先頭の2つのBピクチャを除いた13ピクチャと第4GOPの先頭の3ピクチャが供給される。また、再生方向が逆方向の場合は、図8Bに示されるように、デコーダ22乃至デコーダ24のうちの第1のデコーダに、第2GOPの先頭の2つのBピクチャを除いた13ピクチャと第3のGOPの先頭の3ピクチャが供給され、第2のデコーダに、第1GOPの先頭の2つのBピクチャを除いた13ピクチャと第2GOPの先頭の3ピクチャが供給される。
そして、入力ピクチャキューには、デコーダ22乃至デコーダ24に入力されるピクチャのうち、デコードタイミングのスケジュール待ちである入力ピクチャと、そのスケジューリングに必要なピクチャとのピクチャIDが設定される。すなわち、入力ピクチャキューには、LONG GOPのストリームデータのうち、1GOPの15ピクチャと、その前またはその後ろのGOPの先頭のIBBの3ピクチャとの18ピクチャのピクチャIDが保持される。
図9Aに、正方向の再生のために、MPEGのLONG GOPのストリームデータのうち、第1のGOPの15ピクチャと、その後ろの第2のGOPの先頭のIBBの3ピクチャのピクチャIDが入力ピクチャキューに設定されている状態を示し、図9Bに、逆方向の再生のために、MPEGのLONG GOPのストリームデータのうち、第2のGOPの15ピクチャと、逆の表示順においてその前に表示される第3のGOPの先頭のIBBの3ピクチャのピクチャIDが入力ピクチャキューに設定されている状態を示す。
ステップS71において、入力ピクチャキューが空ではないと判断された場合、処理は、図4のステップS32に戻り、ステップS33に進む。すなわち、デコードのスケジュール処理は、LONG GOPの15ピクチャとは2ピクチャ分ずれた位置から設定される13ピクチャと次の3つのピクチャとの16ピクチャ分の処理単位ごとにまとめて実行される。
ステップS71において、入力ピクチャキューが空であると判断された場合、ステップS72において、図15のフローチャートを用いて後述する入力処理が実行される。
ステップS73において、CPU20は、次のデータを供給するデコーダを示すレジスタの値を基に、次にデータの供給を受けるデコーダに対応して設定される時間情報付き表示順設定キューが空であるか否かを判断する。時間情報付き表示順設定キューとは、後述するステップS80の時間情報付きスケジュール決定処理において設定されるキューであり、複数のデコーダのそれぞれ(図1を用いて説明した場合においては、デコーダ22乃至デコーダ24の3つのデコーダのそれぞれ)に対応して設定される。時間情報付き表示順設定キューの詳細については、図17のフローチャートを参照して後述する。
ステップS73において、次にデータの供給を受けるデコーダに対応する時間情報付き表示順設定キューが空ではないと判断された場合、すなわち、スケジュール済みの1GOP相当のピクチャに対して、フレームごとにデコード処理または表示処理が実行されている途中である場合、処理は、図4のステップS32に戻り、ステップS33に進む。
ステップS73において、次にデータの供給を受けるデコーダに対応する時間情報付き表示順設定キューが空であると判断された場合、ステップS74において、CPU20は、リオーダ処理を実行する。リオーダ処理とは、入力ピクチャキューに設定されているコーディングオーダに並べられている18ピクチャに対応するピクチャIDを、ディスプレイオーダに入れ替えて表示順情報キューに設定する処理である。
したがって、再生方向が正方向である場合、表示順情報キューには、図10Aに示されるように、図9Aを用いて説明した入力ピクチャキューに設定されているピクチャIDが、ディスプレイオーダに並べ替えられて設定され、再生方向が逆方向である場合、表示順情報キューには、図10Bに示されるように、図9Bを用いて説明した入力ピクチャキューに設定されているピクチャIDが、ディスプレイオーダに並べ替えられて設定される。
ステップS74において、リオーダ処理が実行されて、表示順情報キューにピクチャIDがセットされたとき、入力ピクチャキューにキューされているピクチャIDはすべて出力され、入力ピクチャキューは空となる。すなわち、上述したステップS71において、入力ピクチャキューが空であると判断される場合とは、入力ピクチャキューにキューされたピクチャIDに対するリオーダ処理が実行された場合であり、入力ピクチャキューが空ではないと判断される場合とは、この処理以前に実行されたデコードスケジュール処理1のステップS72において入力処理が実行された後、次にデータの供給を受けるデコーダに対応する時間情報付き表示順設定キューが空ではないため、ステップS74においてリオーダ処理が実行されていない場合である。
ステップS75において、CPU20は、ステップS74において設定された表示順情報キューを参照し、I/Pピクチャデコードキューに、デコードするGOPのうちのIピクチャおよびPピクチャのピクチャIDを、デコード順に設定する。I/Pピクチャデコードキューとは、Bピクチャに先行してデコードされるIピクチャおよびPピクチャのピクチャIDをデコード順に設定するキューである。
図11に、正方向再生および逆方向再生におけるI/Pピクチャデコードキューを示す。正方向再生の場合のI/Pピクチャデコードキューには、図11Aに示されるように、図10Aを用いて説明した表示順情報キューに設定されているピクチャIDのうち、IピクチャおよびPピクチャに対応する6つのピクチャのピクチャIDが設定され、逆方向再生の場合のI/Pピクチャデコードキューには、図11Bに示されるように、図10Bを用いて説明した表示順情報キューに設定されているピクチャIDのうち、IピクチャおよびPピクチャに対応する6つのピクチャのピクチャIDが設定される。
ステップS76において、CPU20は、IピクチャおよびPピクチャを格納するバンク位置、および、Pピクチャのデコードにおける参照画像バンクを指定する。IピクチャおよびPピクチャは、図2のビデオバンクメモリ82において、8つのバンクのうち、固定の6つのバンクを使用するようになされている。
IピクチャおよびPピクチャ(アンカーフレームとも称する)を先にデコードし、デコード後に保持されるバンク位置を固定しておくことにより、正方向、逆方向、頭だしなどの、どのピクチャからの再生も、即時に行えるようにすることができる。また、IピクチャおよびPピクチャを先にデコードしておくことにより、先にデコードする6枚のIピクチャおよびPピクチャの処理時間が短いほど、ユーザによる再生開始や、再生速度または再生方向の変更の指示から、指示を反映した表示開始までの時間を、表示開始フレームのGOP内の位置に関わらず短縮することや、スクラブ再生で任意のピクチャを表示する場合の表示時間を短縮することなどが可能となり、高速再生時のパフォーマンスが向上する。
ステップS77において、CPU20は、ステップS76の処理により指定された、IピクチャおよびPピクチャがそれぞれ格納されるバンク位置を基に、Bピクチャのデコードにおける参照画像バンクの位置を指定する。なお、Bピクチャが格納されるバンク位置は、後述するフレーム制御処理1において指定される。
ステップS78において、CPU20は、表示順設定キューを設定する。
図12に、正方向再生および逆方向再生における表示順設定キューを示す。正方向再生の場合の表示順設定キューには、図12Aに示されるように、図10Aを用いて説明した表示順情報キューにキューされている18個のピクチャIDのうち、先頭の2つのBピクチャと、最後のIピクチャを除いた15個のピクチャID、すなわち、図8Aを用いて説明した正方向再生の場合にデコーダ22乃至デコーダ24のうちのいずれかに供給されるピクチャのうち、最後のIピクチャを除いた15ピクチャのピクチャIDが、表示される順番に設定される。
そして、逆方向再生の場合の表示順設定キューには、図12Bに示されるように、図10Bを用いて説明した表示順情報キューにキューされている18個のピクチャIDのうち、先頭の2つのBピクチャと、最後のIピクチャを除いた15個のピクチャID、すなわち、図8Bを用いて説明した逆方向再生の場合にデコーダ22乃至デコーダ24のうちのいずれかに供給されるピクチャのうち、最後のIピクチャを除いた15ピクチャのピクチャIDが、実際に表示される順番に設定される。
ステップS78において表示順設定キューが設定されるときに、表示順情報キューにキューされているピクチャIDは、すべて出力され、表示順情報キューは空となる。
ステップS79において、図16のフローチャートを用いて後述する表示位相決定処理が実行される。表示位相決定処理は、1GOP相当の15フレーム+1フレームの処理単位におけるデコードの開始と表示の開始のタイミングのずれを決定する処理である。
ステップS80において、図17のフローチャートを用いて後述する時間情報付きスケジュール決定処理が実行される。時間情報付きスケジュール決定処理は、フレームごとのデコードのタイミングを制御するために、デコードのスケジューリングを実行して、所定の情報キューに、ピクチャIDに対応付けて時間情報を設定する処理である。
ステップS79およびステップS80の処理によって、デコードと表示のタイミングがスケジュールされる。具体的には、例えば、再生方向が正方向で通常速度の再生である場合など、表示の先頭がIピクチャまたはPピクチャである場合、図13に示されるように、先にIピクチャおよびPピクチャがデコードされた後、Bピクチャがデコードされ、表示開始のタイミングは、デコード開始から6ピクチャ分ずれることにより、Bピクチャのデコードのタイミングと表示のタイミングが、1フレーム分ずれるように、デコードと表示のタイミングのスケジュールが行われる。また、再生の方向が逆方向の場合、換言すれば、スピード設定が負の値である場合など、表示の先頭がBピクチャである場合、図14に示されるように、先にIピクチャおよびPピクチャがデコードされた後、Bピクチャがデコードされ、表示開始のタイミングは、デコード開始から7ピクチャ分ずれることにより、Bピクチャのデコードのタイミングと表示のタイミングが、1フレーム分ずれるように、デコードと表示のタイミングのスケジュールが行われる。
ステップS81において、CPU20は、次にデコードされるデータを供給するデコーダの設定を切り替える処理を実行する。具体的には、CPU20は、次のデータを供給するデコーダを示すレジスタの値がデコーダの数(図1を用いて説明した再生装置1においては、デコーダ22乃至デコーダ24の3つ)より1少ない値(図1を用いて説明した再生装置1においては、2)と等しい場合、レジスタの値を0とし、レジスタの値が、デコーダの数より2以上少ない場合、レジスタの値を1インクリメントする。ステップS81の処理の終了後、処理は、図4のステップS32に戻り、ステップS33に進む。
このような処理により、デコードと表示のタイミングがスケジュールされる。
次に、図15のフローチャートを参照して、図6のステップS72において実行される、入力処理について説明する。
ステップS101において、CPU20は、図3を用いて説明した制御処理のステップS5においてCPU11がコマンドバッファ31に送信したデコード開始コマンドに含まれている表示スピード情報、または、図3を用いて説明した制御処理のステップS11においてCPU11がコマンドバッファ31に送信したユーザの操作入力に対応するコマンドから、スピード設定値を取得し、メモリ21に保持する。スピード設定値が正の値であるとき、再生処理は正方向再生であり、負の値であるとき、再生処理は、逆方向再生であるものとすることができる。
例えば、スピード設定値が1であるとき、通常再生であるものとし、スピード設定値が1以上の値であるとき、高速再生であるものとし、スピード設定値が1未満の正の値であるとき、低速再生であるものとし、スピード設定値が−1であるとき、通常速度の逆方向再生であるものとし、スピード設定値が−1以下の値であるとき、高速の逆方向再生であるものとし、スピード設定値が絶対値1未満の負の値であるとき、低速の逆方向再生であるものとすることができる。
ステップS102において、CPU20は、ステップS101において取得したスピード設定値が正の値であるか負の値であるかを基に、実行される処理は正方向の再生処理であるか否かを判断する。
ステップS102において、正方向の再生処理であると判断された場合、ステップS103において、CPU20は、次にデコードする15フレームのうちの先頭から13フレームを含む1GOPと、その次のGOPのI,B,BピクチャのピクチャIDを、図9Aを用いて説明した入力ピクチャキューに設定する。
ステップS102において、正方向の再生処理ではない、すなわち、逆方向の再生処理であると判断された場合、ステップS104において、CPU20は、次にデコードする15フレームのうちの後ろから13フレームを含む1GOPと、その前のGOPのI,B,BピクチャのピクチャIDを、図9Bを用いて説明した入力ピクチャキューに設定する。
ステップS103またはステップS104の処理の終了後、ステップS105において、CPU20は、PCIブリッジ17を制御して、入力ピクチャキューの設定、および、次のデータを供給するデコーダを示すレジスタの値(再生されるストリームの最初のGOPにおいては、初期設定によって定められる値であり、2番目以降のGOPにおいては、図6のステップS81の処理により定められる値である)に基づいて、メモリ18に保存されているストリームデータのうち、図8を用いて説明した16フレームの圧縮画像データの、デコーダ22乃至デコーダ24のうちの所定のデコーダへの転送を制御する。
デコーダ22乃至デコーダ24の入力処理部71は、供給された16フレームのデータをメモリコントローラ74に供給して、入力バッファ75に保存させるとともに、アドレス管理テーブル72に、ピクチャ単位の先頭番地、データサイズ、ピクチャヘッダ情報、Qマトリクスなどの情報を供給し、それぞれ、ピクチャ別に、テーブルIDにより区別可能なテーブル情報として保持させる。
ステップS106において、CPU20は、コントロールバス19を介して、PCIブリッジ17のリザルトバッファ32に、デコーダ22乃至デコーダ24のうちの所定のデコーダへの1GOP相当のストリームの転送処理の終了を示すリザルトを供給することにより、CPU11に対してストリームの転送処理の終了を通知し、処理は、図6のステップS72に戻り、ステップS73に進む。
このような処理により、デコーダ22乃至デコーダ24に、図8を用いて説明したデコード処理単位となる16フレームのデータが供給される。
次に、図16のフローチャートを参照して、図6のステップS79において実行される、デコード開始タイミングに対して表示開始タイミングをディレイさせる位相を設定するための、表示位相決定処理について説明する。
ステップS131において、CPU20は、図12を用いて説明した表示順設定キューに設定されている、表示するピクチャの数の情報を、表示ピクチャ数レジスタに保持する。図12においては、表示順設定キューに15ピクチャ分のピクチャIDが設定されているので、表示ピクチャ数レジスタには、値15が保存される。
ステップS132において、CPU20は、図11を用いて説明したI/Pピクチャデコードキューに保持されている、デコードされるIピクチャおよびPピクチャの総数を、I/Pピクチャ数レジスタに保持する。図11においては、I/Pピクチャデコードキューに、6ピクチャ分のピクチャIDが設定されているので、I/Pピクチャ数レジスタには、値6が保存される。
ステップS133において、CPU20は、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプはBピクチャであるか否かを判断する。これは、通常速度再生または逆方向の通常速度再生における位相のずれ量を算出している場合、再生方向は正方向か逆方向かを判断しているのと同義である。なお、後述する間引き処理1が実行された後では、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプがBピクチャであっても、その再生速度の設定値によっては、再生方向が正方向であることもあり、逆方向であることもある。
ステップS133において、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプはBピクチャであると判断された場合、ステップS134において、CPU20は、デコードされるIピクチャおよびPピクチャの総数に1を加えた数を、I/Pピクチャデコードキューに保持されているピクチャIDに対応するIピクチャおよびPピクチャのデコード開始タイミングに対する、表示順設定キューに保持されるピクチャIDに対応するピクチャの表示開始タイミングの時間的な位相のずれ量disp_phaseとする。
例えば、上述した図14に示されるように、再生速度が−1倍である場合、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプはBピクチャであるので、先にIピクチャおよびPピクチャがデコードされた後、表示開始のタイミングが、デコード開始から7ピクチャ分ずらされて、Bピクチャのデコードのタイミングと表示のタイミングが1フレーム分ずれるように、Bピクチャがデコードされる。
ステップS133において、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプはBピクチャではないと判断された場合、ステップS135において、CPU20は、デコードされるIピクチャおよびPピクチャの総数を、I/Pピクチャデコードキューに保持されているピクチャIDに対応するIピクチャおよびPピクチャのデコードタイミングに対する、表示順設定キューに保持されるピクチャIDに対応するピクチャの表示開始タイミングの時間的な位相のずれ量disp_phaseとする。
例えば、上述した図13に示されるように、再生速度が1倍である場合、表示順設定キューの先頭に設定されているピクチャIDに対応するピクチャのピクチャタイプはIピクチャであり、Bピクチャではないので、先にIピクチャおよびPピクチャがデコードされた後、表示開始のタイミングが、デコード開始から6ピクチャ分ずらされて、Bピクチャのデコードのタイミングと表示のタイミングが1フレーム分ずれるように、Bピクチャがデコードされる。
ステップS134またはステップS135の処理の終了後、ステップS136において、CPU20は、ステップS134またはステップS135において決定された表示の位相のずれ量disp_phaseを、内部のレジスタに記憶する。
ステップS137において、CPU20は、処理中のGOPは、表示開始GOP(再生スピードが変更されたときの、対応するスピードでの再生開始部分を含む)であるか否かを判断する。
ステップS137において、処理中のGOPは表示開始GOPではないと判断された場合、ステップS138において、CPU20は、ステップS134またはステップS135において決定された表示位相のずれ量disp_phaseから、前回の処理、すなわち、1つ前に表示されるGOPにおける表示位相のずれ量prev_disp_phaseを減算し、その結果をずれ量補正値disp_zeroとして内部のレジスタに記憶するとともに、ステップS134またはステップS135において決定された表示位相のずれ量disp_phaseを1つ前に表示されるGOPにおける表示位相のずれ量prev_disp_phaseに代入して、処理は、図6のステップS79に戻り、ステップS80に進む。
ステップS137において、処理中のGOPは表示開始GOPであると判断された場合、ステップS139において、CPU20は、ずれ量補正値disp_zeroとして、初期値0を設定して内部のレジスタに記憶し、処理は、図6のステップS79に戻り、ステップS80に進む。
このような処理により、デコード開始タイミングに対して表示開始タイミングをディレイさせる位相が決定される。
次に、図17のフローチャートを参照して、図6のステップS80において実行される、時間情報付きスケジュール決定処理について説明する。
ステップS161において、CPU20は、処理対象は、入力ストリーム状態が変更されてから最初の1GOP相当のデコード処理単位であるか否かを判断する。間引きの前後でピクチャタイプが変更されるのは、少なくとも2番目以降のデコード処理単位の場合であるので、ステップS161において、処理対象が、最初の1GOP相当のデコード処理単位であると判断された場合、処理は、後述するステップS166に進む。
ステップS161において、処理対象が、最初の1GOP相当のデコード処理単位ではないと判断された場合、ステップS162において、CPU20は、間引きの前後で先頭ピクチャがIピクチャまたはPピクチャからBピクチャに変更されているか否かを判断する。
ステップS162において、間引きの前後で先頭ピクチャがIピクチャまたはPピクチャからBピクチャに変更されていると判断された場合、ステップS163において、CPU20は、位相調整値を1とし、処理は、後述するステップS167に進む。
ステップS162において、間引きの前後で先頭ピクチャがIピクチャまたはPピクチャからBピクチャに変更されていないと判断された場合、ステップS164において、CPU20は、間引きの前後で先頭ピクチャがBピクチャからIまたはPピクチャに変更されているか否かを判断する。
ステップS164において、間引きの前後で先頭ピクチャがBピクチャからIまたはPピクチャに変更されていると判断された場合、ステップS165において、CPU20は、位相調整値を−1とし、処理は、後述するステップS167に進む。
ステップS161において、処理対象が、最初のデコード処理単位であると判断された場合、または、ステップS164において、間引きの前後で先頭ピクチャがBピクチャからIまたはPピクチャに変更されていないと判断された場合、ステップS166において、CPU20は、位相調整値を0とする。
ステップS163、ステップS165、または、ステップS166の処理の終了後、ステップS167において、CPU20は、デコーダ22乃至デコーダ24のうちのいずれかのデコーダにおいてデコードされるデコード処理単位の16枚のピクチャにおいて、先頭のフレームがデコードされるタイミングを示すデコード開始時刻情報time_baseの値を、1つ前のデコード処理単位のデコード開始時刻情報であるprev_time_base、表示位相のずれ量補正値を示すdisp_zero、後述する間引き処理1において算出された時間情報調整値added_count、および、ステップS161乃至ステップS166の処理によって求められた位相調整値を用いて算出する(式(1))。
デコード開始時刻情報time_base=前GOPのデコード開始時刻情報prev_time_base−表示位相のずれ量補正値disp_zero+時間情報調整値added_count+位相調整値
・・・(1)
なお、表示開始GOPに対して、式(1)の演算処理が実行される場合、前GOPのデコード開始時刻情報を示すprev_time_base、および、前GOPの間引き処理1において算出される時間情報調整値added_countは、0として演算される。
ステップS168において、CPU20は、次にデータが供給されるデコーダに対応する時間情報付きI/Pピクチャデコードキューを設定する。
時間情報付きI/Pピクチャデコードキューは、図11を用いて説明したI/Pピクチャデコードキューに設定されているピクチャIDに対応付けて、先頭にデコードされるピクチャのデコード開始時刻time_baseの情報、および、1フレームを単位とする時間カウンタのカウント値が設定されるものであり、再生装置1に備えられているデコーダごと(ここでは、デコーダ22乃至デコーダ24のそれぞれ)に対応して設けられている。
具体的には、CPU20は、次のデータを供給するデコーダを示すレジスタの値を参照し、次にデータが供給されるデコーダに対応する時間情報付きI/Pピクチャデコードキューを設定する。CPU20は、I/PピクチャデコードキューにキューされているピクチャIDのうち、先頭のピクチャIDに対応するフレームがデコードされるタイミングを示す情報として、上述したデコード開始時刻情報time_baseの情報を用いるとともに、各ピクチャIDに対応するそれぞれのフレームがデコードされるタイミングを示す情報としては、1フレームを単位とする時間カウンタのカウント値を用いる。
ステップS168において、時間情報付きI/Pピクチャデコードキューが設定されたとき、I/PピクチャデコードキューにキューされているピクチャIDはすべて出力されて、I/Pピクチャデコードキューは空となる。
ステップS169において、CPU20は、次にデータが供給されるデコーダに対応する時間情報付き表示順設定キューを設定する。
時間情報付き表示順設定キューは、図12を用いて説明した表示順設定キューに設定されているピクチャIDに対応付けて、先頭に表示されるピクチャのデコード開始時刻に対する表示タイミングの位相のずれ量から1を減算した値、および、1フレームを単位とする時間カウンタのカウント値が設定されるものであり、再生装置1に備えられているデコーダごと(ここでは、デコーダ22乃至デコーダ24のそれぞれ)に対応して設けられている。
具体的には、CPU20は、次のデータを供給するデコーダを示すレジスタの値を参照し、次にデータが供給されるデコーダに対応する時間情報付き表示順設定キューを設定する。CPU20は、表示順設定キューにキューされているピクチャIDのうち、実際の表示順において先頭となるフレームに対応するフレームの表示タイミングを示す、上述した表示位相決定処理において決定された位相のずれ量disp_phaseから1を減算した値を、Bピクチャのデコードタイミングにあわせた基準時刻情報として用いるとともに、各ピクチャIDに対応するそれぞれのフレームがデコードされるタイミングを示す情報としては、1フレームを単位とする時間カウンタのカウント値を用いる。
ステップS169において時間情報付き表示順設定キューが設定されたとき、表示順設定キューにキューされているピクチャIDはすべて出力されて、表示順設定キューは空となる。
ステップS170において、CPU20は、デコード開始時刻情報time_baseに、上述した図16のステップS131において表示ピクチャ数レジスタに保持された値を加えた値を、前のGOPのデコード開始時刻情報prev_time_baseとして、レジスタに保存し、処理は、図6のステップS80に戻り、ステップS81に進む。
このような処理により、デコードの処理単位となる16フレーム分のデコード処理タイミングが設定される。
図16および図17を用いて説明した処理により、デコードの位相と表示の位相が、IピクチャおよびPピクチャの枚数、表示する枚数、先頭に表示するピクチャがBピクチャであるか否かなどを基に決定されて、時間情報として設定される。これにより、複数のデコーダを用いて正逆方向の高速再生を行うときに発生する、それぞれのデコーダにおいてデコードされたり出力されて表示されるピクチャの枚数の変化に追従して、動的にスピードを変更して、連続的にデコード済みの画像を表示させることが可能となる。更に、再生スピードの変更が指令されて、任意の位置のピクチャから間引き間隔の変更が行なわれた場合でも、表示する数の増減を反映することで、対応しているスピード範囲において、再生スピードをフレーム単位で変更させて、連続的にスピードを変更させることが可能となる。
図6乃至図17を用いて説明した処理により、図4のステップS32においてデコードスケジュール処理1が実行される。
そして、図4のステップS33において、最初のフレームから6フレーム目までのいずれかのフレームであるか否かが判断され、最初のフレームから6フレーム目までのいずれかのフレームであると判断された場合、ステップS34の1フレームディレイ表示設定処理はスキップされ、ステップS35において、フレーム制御処理1が実行される。
次に、図18のフローチャートを参照して、図4のステップS35において実行される、フレーム制御処理1について説明する。
ステップS191において、CPU20は、再生装置1内で実行される各処理のタイミングを管理するためのカウンタである時間管理カウンタと、時間情報付きI/Pピクチャデコードキューを参照し、表示時刻が過ぎてしまったストリームデータがあるか否かを判断する。ステップS191において、表示時刻が過ぎてしまったストリームデータがあると判断された場合、処理は、後述するステップS197に進む。
ステップS191において、表示時刻が過ぎてしまったストリームデータがないと判断された場合、ステップS192において、図19を用いて後述するIピクチャおよびPピクチャデコード処理が実行される。
ステップS193において、図20を用いて後述するBピクチャデコード処理が実行される。
ステップS194において、CPU20は、CPU11に、表示ピクチャ情報を通知する。具体的には、CPU20は、コントロールバス19を介して、PCIブリッジ17のリザルトバッファ32に、図3のステップS6において、CPU11から送信された表示開始コマンドに対するリザルトとして表示ピクチャ情報を書き込むことにより、CPU11に対して、表示ピクチャ情報を通知する。CPU11は、PCIブリッジ17のリザルトバッファ32に書き込まれる表示ピクチャ情報を参照することにより、表示されるピクチャがいずれのGOPのいずれのピクチャであるかを知ることができる。
ステップS195において、CPU20は、時間管理カウンタをインクリメントする。
ステップS196において、図23を用いて後述する間引き処理1が実行されて、処理は、図4のステップS35に戻り、ステップS36に進む。
ステップS191において、表示時刻が過ぎてしまったストリームデータがあると判断された場合、ステップS197において、図35を用いて後述するアンダーフロー処理が実行されて、処理は、図4のステップS35に戻り、ステップS36に進む。
このような処理により、表示が遅れていなければ、設定されたデコードスケジュールに基づいて、1フレーム分のデコードが実行されて、表示ピクチャ情報が、CPU11に通知され、間引き処理1が実行される。そして、表示が遅れているとき、後述するアンダーフロー処理が実行される。
次に、図19のフローチャートを参照して、図18のステップS192において実行されるIピクチャおよびPピクチャデコード処理について説明する。
ステップS221において、CPU20は、時間管理カウンタの値と、時間情報付きI/Pピクチャデコードキューに設定された、次にデコードされるピクチャのピクチャIDに対応付けられている時間情報とが一致したか否かを判断する。ステップS221において、時間管理カウンタの値は、時間情報付きI/Pピクチャデコードキューに設定された時間情報と一致していないと判断された場合、処理は、図18のステップS192に戻り、ステップS193に進む。
ステップS221において、時間管理カウンタの値と、時間情報付きI/Pピクチャデコードキューに設定された時間情報とが一致したと判断された場合、ステップS222において、CPU20は、デコードを実行するデコーダとして設定されているデコーダ22乃至デコーダ24のうちのいずれかを、コントロールバス19を介して制御し、Iピクチャ、または、Pピクチャをデコードさせ、時間情報付きI/Pピクチャデコードキューから、デコードコマンドが実行されたピクチャに対応するピクチャIDを削除する。
具体的には、CPU20は、次のデータを供給するデコーダを示すレジスタに保持されている値を参照し、デコーダ22乃至デコーダ24のうちデコードを実行するデコーダとして設定されているもののエレメンタリストリームアドレス決定部73を制御して、時間情報付きI/Pピクチャデコードキューに設定されたピクチャIDに対応するピクチャのデータを、メモリコントローラ74により、入力バッファ75から読み出させて、デコード処理部77に供給させる。
デコードされるピクチャがIピクチャである場合、CPU20は、デコード処理部77を制御して、メモリコントローラ74から供給されたIピクチャをデコードさせるとともに、書き込み画アドレス決定部78を制御して、デコードされたフレームデータをメモリコントローラ81に供給させて、ビデオバンクメモリ82のうち、図6のステップS76においてIピクチャの格納用に指定されたバンクに保存させる。また、デコードされるピクチャがPピクチャである場合、CPU20は、参照画アドレス決定部79を制御して、図6のステップS76において設定されたPピクチャの参照バンク位置を基に、メモリコントローラ81により、ビデオバンクメモリ82に格納されている参照画を読み出させて、デコード処理部77に供給させ、デコード処理部77を制御して、メモリコントローラ74から供給されたPピクチャをデコードさせるとともに、書き込み画アドレス決定部78を制御して、デコードされたフレームデータをメモリコントローラ81に供給させて、ビデオバンクメモリ82のうち、図6のステップS76においてPピクチャの格納用に指定されたバンクに保存させる。
ステップS222の処理の終了後、処理は、図18のステップS192に戻り、ステップS193に進む。
このような処理により、設定されたスケジュールに基づいて、Iピクチャ、または、Pピクチャがデコードされる。
次に、図20のフローチャートを参照して、図18のステップS193において実行されるBピクチャデコード処理について説明する。
ステップS241において、CPU20は、時間管理カウンタの設定と、時間情報付き表示順設定キューに設定された現在の先頭のピクチャIDに対応する時間情報が一致したか否かを判断する。時間情報付き表示順設定キューに設定された時間情報とは、スケジュール時の15フレームのうち、実際の表示順において先頭となるフレームに対応するフレームの表示タイミングを示す、上述した表示位相決定処理において決定された位相のずれ量disp_phaseから1を減算した値(Bピクチャのデコードタイミングにあわせた基準時刻情報)、または、15フレームのうち、実際の表示順において先頭となるフレーム以外の各ピクチャIDに対応する、1フレームを単位とする時間カウンタのカウント値である。ステップS241において、時間管理カウンタの設定は、時間情報付き表示順設定キューに設定された時間情報と一致しないと判断された場合、処理は、図18のステップS193に戻り、ステップS194に進む。
ステップS241において、時間管理カウンタの設定は、時間情報付き表示順設定キューに設定された時間情報と一致すると判断された場合、ステップS242において、CPU20は、時間情報と一致すると判断されたのは、Bピクチャに対応するピクチャIDであるか否かを判断する。
ステップS242において、時間情報と一致すると判断されたのは、Bピクチャに対応するピクチャIDであると判断された場合、ステップS243において、CPU20は、デコードを実行するデコーダとして設定されているデコーダ22乃至デコーダ24のうちのいずれかを、コントロールバス19を介して制御し、このピクチャIDで示されるBピクチャをデコードさせる。
具体的には、CPU20は、次のデータを供給するデコーダを示すレジスタに保持されている値を参照し、デコーダ22乃至デコーダ24のうちデコードを実行するデコーダとして設定されているもののエレメンタリストリームアドレス決定部73を制御して、時間情報付き表示順設定キューに設定されたピクチャIDに対応するピクチャのデータを、メモリコントローラ74により、入力バッファ75から読み出させて、デコード処理部77に供給させる。そして、CPU20は、参照画アドレス決定部79を制御して、図6のステップS77において設定されたBピクチャの参照バンク位置を基に、メモリコントローラ81により、ビデオバンクメモリ82に格納されている参照画を読み出させて、デコード処理部77に供給させ、デコード処理部77を制御して、メモリコントローラ74から供給されたBピクチャをデコードさせる。
ステップS244において、CPU20は、Bピクチャを格納するバンク位置を設定する。すなわち、CPU20は、ビデオバンクメモリ82のうち、IピクチャまたはPピクチャの格納用に指定されていない2つのバンクに対してBピクチャが交互に格納されるように、書き込み画アドレス決定部78を制御する。CPU20は、書き込み画アドレス決定部78を制御して、デコード処理部77によりデコードされたフレームデータをメモリコントローラ81に供給させて、ビデオバンクメモリ82の設定されたバンク位置にデコードされたフレームデータを記憶させる。
ステップS242において、時間情報と一致すると判断されたのは、Bピクチャに対応するピクチャIDではないと判断された場合、または、ステップS244の処理の終了後、ステップS245において、CPU20は、時間情報付き表示順設定キューに設定された現在の先頭のピクチャIDを、表示キューに設定する。表示キューは、1つのピクチャIDのみが保持される深さ1のキューである。
具体的には、CPU20は、ステップS242において、時間情報と一致すると判断されたのは、Bピクチャに対応するピクチャIDではないと判断された場合、上述した図19のステップS222において、時間情報付き表示順設定キューに設定された現在の先頭のピクチャIDに対応するIピクチャまたはPピクチャのデコードが制御されているので、CPU20は、そのIピクチャまたはPピクチャに対応するピクチャIDを表示キューに設定する。また、ステップS242において、時間情報と一致すると判断されたのは、Bピクチャに対応するピクチャIDであると判断されて、ステップS243においてBピクチャのデコードが制御された場合、CPU20は、時間情報付き表示順設定キューに設定された現在の先頭のピクチャID、すなわち、デコードされたBピクチャに対応するピクチャIDを、表示キューに設定する。
そして、時間情報付き表示順設定キューに設定された現在の先頭のピクチャIDは、時間情報付き表示順設定キューから出力され、表示キューに設定されたピクチャIDに対応するピクチャの次に表示されるピクチャに対応するピクチャIDが、時間情報付き表示順設定キューの先頭となるか、または、時間情報付き表示設定キューが空となる。ステップS245の処理の終了後、処理は、図18のステップS193に戻り、ステップS194に進む。
このようにして、時間情報付きI/Pピクチャデコードキューおよび時間情報付き表示順設定キューに設定されている時間情報を基に、デコードが実行される。正方向再生の場合は、図21に示されるように、時間情報付きI/Pピクチャデコードキューに設定されている時間情報を基に、IピクチャおよびPピクチャがデコードされ、時間情報付き表示順設定キューに設定されている時間情報を基に、Bピクチャがデコードされる。また、逆方向再生の場合は、図22に示されるように、時間情報付きI/Pピクチャデコードキューに設定されている時間情報を基に、IピクチャおよびPピクチャがデコードされ、時間情報付き表示順設定キューに設定されている時間情報を基に、Bピクチャがデコードされる。
また、Bピクチャのデコードのタイミングは、図21および図22に示されるように、正方向再生、逆方向再生のいずれの場合であっても、後述する1フレームディレイ表示設定処理により、Bピクチャのデコードのタイミングが表示されるタイミングと1フレームずれるようになされている。
なお、図21および図22においては、1倍速およびー1倍速における場合のデコードタイミングと表示タイミングについてそれぞれ図示されているが、高速再生が実行される場合、後述する間引き処理1により、時間情報付き表示順設定キューの設定が変更されて、次の処理ルーチンにおいて、間引き処理1後の時間情報付き表示順設定キューの設定を基に、デコードが実行されるようになされている。高速再生が実行される場合、Bピクチャはすべてデコードされるのではなく、間引かれてデコードされるが、IピクチャおよびPピクチャのデコードは、高速再生が実行される場合も、同様に全ピクチャにおいて実行される。
次に、図23のフローチャートを参照して、図18のステップS195において実行される、間引き処理1について説明する。
ステップS271において、CPU20は、図5を用いて説明した入力ストリーム状態変更処理において設定されたストリーム入力状態を基に、ユーザの設定に基づいた再生速度は、正方向、または、逆方向の高速再生であるか否かを判断する。ステップS271において、高速再生ではないと判断された場合、処理は、図18のステップS196に戻り、図4のステップS36に進む。
ステップS271において、高速再生であると判断された場合、ステップS272において、CPU20は、処理中のフレームは、スピード設定が変更された後の最初のGOPの最初のフレームであるか否かを判断する。
ステップS272において、処理中のフレームは、入力ストリーム状態が変更された後の最初のGOPの最初のフレームであると判断された場合、ステップS273において、CPU20は、スピード設定値を基に、間引き周期を決定して、レジスタに保存する。
具体的には、CPU20は、例えば、2倍速または−2倍速で再生が行われる場合、間引き周期を1/2としてレジスタに保存し、3倍速または−3倍速で再生が行われる場合、間引き周期を1/3としてレジスタに保存する。
ステップS274において、CPU20は、間引き処理1においてデコード処理単位にかかわらずフレームの数をカウントするフレームカウンタをリセットする。
ステップS272において、処理中のフレームは、入力ストリーム状態が変更された後の最初のGOPの最初のフレームではないと判断された場合、または、ステップS274の処理の終了後、ステップS275において、CPU20は、時間情報付き表示順設定キューに保持されているピクチャIDに対応付けられて、確認済みフラグが設定されているか否かを基に、時間情報付き表示順設定キューはすべて確認済みであるか否かを判断する。確認済みフラグは、後述するステップS280の処理により、時間情報付き表示順設定キューに設定されるフラグである。ステップS275において、時間情報付き表示順設定キューはすべて確認済みであると判断された場合、処理は、図18のステップS196に戻り、図4のステップS36に進む。
ステップS275において、時間情報付き表示順設定キューはすべて確認済みではない、換言すれば、時間情報付き表示順設定キューに確認済みフラグが設定されていないピクチャIDが残っていると判断された場合、ステップS276において、CPU20は、フレームカウンタを1インクリメントする。
ステップS277において、CPU20は、間引き周期の決定の結果、レジスタに保持されている間引き周期と、フレームカウンタの値を参照し、フレームカウンタに示されるフレームは表示されるか否かを判断する。具体的には、CPU20は、間引き周期が1/2である場合、フレーム数をカウントするフレームカウンタの値が2n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにしたり、間引き周期が1/3である場合、フレーム数をカウントするフレームカウンタの値が3n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにする。ステップS277において、表示が行われると判断された場合、すなわち、間引かれないフレームであると判断された場合、処理は、後述するステップS280に進む。
ステップS277において、表示されないと判断された場合、すなわち、間引かれるフレームであると判断された場合、ステップS278において、CPU20は、処理対象のフレームに対応するピクチャIDを、時間情報付き表示順設定キューから削除するか、または、時間情報付き表示順設定キューの対応するピクチャIDに対して、非表示であることを示すフラグを対応付ける。
ステップS279において、図24を用いて説明する、時間情報再設定処理が実行される。
ステップS277において、フレームカウンタに示されるフレームの表示が行われると判断された場合、または、ステップS279の処理の終了後、ステップS280において、CPU20は、時間情報付き表示順設定キューのフレームカウンタに示されるフレームに対応するピクチャIDに対応付けて確認済みフラグを設定し、処理は、ステップS275に戻り、それ以降の処理が繰り返される。
このような処理により、表示されないフレームのピクチャIDが、時間情報付き表示順設定キューから削除されるか、または、時間情報付き表示順設定キューの対応するピクチャIDに対して、非表示であることを示すフラグが対応付けられる。Bピクチャのデコード処理と、1フレームディレイ表示設定処理(後述)は、時間情報付き表示順設定キューを参照して実行される。高速再生の設定に基づいて、時間情報付き表示順設定キューの設定が更新されるため、この処理ルーチン以降にデコードされるBピクチャは、表示されるもののみとなり(間引かれるBピクチャは、デコード処理部77に供給されない)、間引かれるIピクチャまたはPピクチャは、デコードはされるが、表示されないようになされる。
また、フレームカウンタは、スピード設定が変更されるまで、すなわち、入力ストリーム状態が変更されるまで、GOPにかかわらず、リセットされずに連続してインクリメントされるので、例えば、1GOPが15フレームで構成されている場合の2倍速、4倍速、または、−2倍速、−4倍速など、間引き周期の分母が1GOPを構成するフレームの数を割り切ることができない値となってしまうため、GOPによって、表示されないピクチャの位置が変更される場合であっても、入力ストリームにおけるフレームの順番を示すフレームカウンタの値を用いて、間引き周期を基に、表示が行われるか否かを容易に決定することができる。
このようにして、Bピクチャはデコーダへのストリーム入力で間引き、IピクチャおよびPピクチャはデコード後の表示を止めることで、等間隔で間引きが施され、スピードの動的な変更に追従可能なように高速再生を行うことが可能となる。IピクチャおよびPピクチャは、デコード時に他のピクチャからの参照画像として用いられる場合があるので、この方法は、できるだけバンクメモリの面数を少なくして等間隔で間引きを施して高速再生を実行するために、有効な方法である。
これにより、等間隔の間引きを行いつつ、デコーダを2つ用いる場合には、−3倍乃至3倍の範囲で速度設定が可能となり、デコーダを3つ用いる場合には、−6倍乃至6倍の範囲で速度設定が可能となり、更に、2個以上のデコーダにおいて、同様の間引き処理1の制御を適用して、高速再生を実現することができる。
次に、図24のフローチャートを参照して、図23のステップS279において実行される時間情報再設定処理について説明する。
ステップS301において、CPU20は、スピード設定値の変更により発生した間引き処理1によるピクチャの変更数(削除数または追加数)を検出する。
ステップS302において、CPU20は、ピクチャの変更数(削除数または追加数)を、時間情報調整値added_countとする。
ステップS303において、CPU20は、時間情報付き表示順設定キューの時間情報を、連続となるように再設定し、処理は、図23のステップS279に戻り、ステップS280に進む。
このような処理により、再生速度の設定値に対応して、間引き後の時間情報付き表示順設定キューの設定が変更され、これ以降の処理ルーチンにおいては、変更された時間情報付き表示順設定キューを基に、Bピクチャのデコードタイミングとすべてのフレームの表示設定が制御される。
間引き処理1における時間情報付き表示順設定キューの設定について、図25乃至図30を用いて説明する。図25乃至図30においては、上部に、間引き前のスケジューリングの状態が、間引きされるフレームを点線で記載することによって示されており、その下部に、間引き処理1後のスケジューリングの状態が示されている。また、図25乃至図30において、カッコ内の数字の0,1,2は、デコーダ22乃至デコーダ24のうちのいずれかに対応してそれぞれ設定されている情報キューに蓄積される情報、または、デコーダ22乃至デコーダ24のうちのいずれかにおいてそれぞれ実行される処理であることを示すものである。
例えば、+2倍速の高速再生における場合、図25に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−7であり、時間情報調整値added_countは、−7となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプがIピクチャから変更されてBピクチャとなるので、位相調整値は−1となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−8となる。そして、2つ目のGOPの表示開始タイミングは、先頭がBピクチャであることからIピクチャのデコード開始タイミングより7フレーム分遅れる。
また、例えば、−2倍速の高速再生における場合、図26に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−7であり、時間情報調整値added_countは、−7となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプは、Bピクチャのまま変更されないので、位相調整値は0となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−7となる。そして、2つ目のGOPの表示開始タイミングは、先頭がBピクチャであることからIピクチャのデコード開始タイミングより7フレーム分遅れる。
例えば、+4倍速の高速再生における場合、図27に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−11であり、時間情報調整値added_countは、−11となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプがIピクチャから変更されてBピクチャとなるので、位相調整値は−1となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−12となる。そして、2つ目のGOPの表示開始タイミングは、先頭がBピクチャであることからIピクチャのデコード開始タイミングより7フレーム分遅れる。
例えば、−4倍速の高速再生における場合、図28に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−11であり、時間情報調整値added_countは、−11となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプは、Bピクチャのまま変更されないので、位相調整値は0となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−11となる。そして、2つ目のGOPの表示開始タイミングは、先頭がBピクチャであることからIピクチャのデコード開始タイミングより7フレーム分遅れる。
例えば、+5倍速の高速再生における場合、図29に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−12であり、時間情報調整値added_countは、−12となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプは、Iピクチャのまま変更されないので、位相調整値は0となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−12となる。そして、2つ目のGOPの表示開始タイミングは、先頭がIピクチャであることからIピクチャのデコード開始タイミングより6フレーム分遅れる。
例えば、−5倍速の高速再生における場合、図30に示されるように、間引き前後におけるデコード単位内の表示ピクチャ数の変更は−12であり、時間情報調整値added_countは、−12となる。そして、次のデコード単位の先頭のピクチャのピクチャタイプは、Bピクチャのまま変更されないので、位相調整値は0となるため、time_baseの調整量は、表示位相のずれ量補正値disp_zeroが0であるとき、−12となる。そして、2つ目のGOPの表示開始タイミングは、先頭がBピクチャであることからIピクチャのデコード開始タイミングより7フレーム分遅れる。
そして、図25乃至図30に示されるように、次に繰り返して実行される、図17を用いて説明した時間情報付きスケジュール決定処理のステップS167において、デコード開始時刻情報time_baseが、上述した式(1)を基に算出される。そして、図25乃至図30に示されるように、算出されたデコード開始時刻情報time_baseを基に、時間情報付きI/Pピクチャデコードキューに設定されたピクチャIDに対応するIピクチャおよびPピクチャのデコード開始タイミングが決定され、算出されたデコード開始時刻情報time_baseと、表示されないフレームが削除された時刻情報付き表示順設定キューを基に、間引き処理1後のBピクチャのデコードおよび表示のスケジュールが決定される。
例えば、N=15,M=3のLONG GOPのMPEGストリームを再生装置1でデコードする場合、図2のビデオバンクメモリ82の8つのバンクのうちのバンクNo.0乃至5の6つのバンクに、固定的に、I,P,P,P,P,Iのアンカーフレームが格納され、Bピクチャが、表示の1フレーム前にデコードされるように、残りのバンクNo.6および7に交互に格納されるようにすることで、ビデオバンクメモリ82に備えられているバンクが8面のみであっても、正方向、逆方向で、デコーダの数(本実施例の再生装置1では3つ)に対応して定められるスピード範囲内の表示を実行させることが可能である。
図31乃至図34を用いて、図2のビデオバンクメモリ82の設定について説明する。
図31は、1倍速再生時に各ピクチャが図2のビデオバンクメモリ82の8つのバンクに格納される状態を表す図である。
バンクNo.0乃至5は、IピクチャおよびPピクチャに占有され、デコード済みのIピクチャおよびPピクチャが、デコード順に格納されるようになされている。そして、最初のI2ピクチャの表示タイミングと同時に、バンクNo.6にB3ピクチャが格納され、B3ピクチャが表示されるタイミングと同時に、バンクNo.7にB4ピクチャが格納され、B3ピクチャが表示されるタイミングには、表示が終了されたB3ピクチャが格納されていたバンクNo.6と、参照画像としての利用が終了したI2ピクチャが格納されていたバンクNo.0とが開放される。その後、バンクNo.6および7には、Bピクチャが、Bピクチャの表示タイミングがデコードタイミングに対して1フレーム遅れるように交互に格納され、表示後に開放される。また、バンクNo.1乃至5は、格納されていたPピクチャの参照画像としての利用が終了した時点で開放される。すなわち、バンクNo.0乃至5は、ピクチャの表示によって開放されるのではなく、格納されていたIピクチャまたはPピクチャの参照画像としての利用とピクチャの表示とがいずれも終了した時点で開放される。
図32は、2倍速再生時に各ピクチャが図2のビデオバンクメモリ82の8つのバンクに格納される状態を表す図である。
バンクNo.0乃至5は、IピクチャおよびPピクチャに占有され、デコード済みのIピクチャおよびPピクチャが、デコード順に格納されるようになされている。そして、最初のI2ピクチャの表示タイミングと同時に、バンクNo.6にB4ピクチャが格納され、B4ピクチャが表示されるタイミングと同時に、バンクNo.7にB6ピクチャが格納され、B6ピクチャが表示されるタイミングには、表示が終了されたB4ピクチャが格納されていたバンクNo.6と、参照画像としての利用が終了したI2ピクチャが格納されていたバンクNo.0とが開放される。その後、バンクNo.6および7には、間引かれていないBピクチャが、Bピクチャの表示タイミングがデコードタイミングに対して1フレーム遅れるように交互に格納され、表示後に開放される。また、バンクNo.0乃至5は、ピクチャの表示によって開放されるのではなく、格納されていたIピクチャまたはPピクチャの参照画像としての利用とピクチャの表示とがいずれも終了した時点で開放されるので、バンクNo.1乃至5は、格納されていたPピクチャの参照画像としての利用とピクチャの表示とがいずれも終了した時点で開放される。
図33は、−1倍速再生時に各ピクチャが図2のビデオバンクメモリ82の8つのバンクに格納される状態を表す図である。
バンクNo.0乃至5は、IピクチャおよびPピクチャに占有され、デコード済みのIピクチャおよびPピクチャが、デコード順に格納されるようになされている。そして、バンクNo.5にI2ピクチャが格納された次のタイミングで、バンクNo.6にB1ピクチャが格納され、B1ピクチャが表示されるタイミングと同時に、バンクNo.7にB0ピクチャが格納され、B1ピクチャが表示されるタイミングには、表示が終了されたB1ピクチャが格納されていたバンクNo.6が開放される。その後、バンクNo.6および7には、Bピクチャが、Bピクチャの表示タイミングがデコードタイミングに対して1フレーム遅れるように、交互に格納され、表示後に開放される。バンクNo.0乃至5は、ピクチャの表示か、格納されていたIピクチャまたはPピクチャの参照画像としての利用が終了した時点のうちのいずれか遅いタイミングで開放される。すなわち、図33における場合は、逆方向再生であるので、最初にバンクNo.0に格納されたI2ピクチャは、最後に表示されるため、このGOPの表示が終了するまで開放されない。
図34は、−2倍速再生時に各ピクチャが図2のビデオバンクメモリ82の8つのバンクに格納される状態を表す図である。
バンクNo.0乃至5は、IピクチャおよびPピクチャに占有され、デコード済みのIピクチャおよびPピクチャが、デコード順に格納されるようになされている。そして、バンクNo.5にI2ピクチャが格納された次のタイミングで、バンクNo.6にB1ピクチャが格納され、B1ピクチャが表示されるタイミングの次のタイミングで、バンクNo.7にB12ピクチャが格納され、表示が終了されたB1ピクチャが格納されていたバンクNo.6が開放される。その後、バンクNo.6および7には、間引かれていないBピクチャが、Bピクチャの表示タイミングがデコードタイミングに対して1フレーム遅れるように交互に格納され、表示後に開放される。バンクNo.0乃至5は、ピクチャの表示か、格納されていたIピクチャまたはPピクチャの参照画像としての利用が終了した時点のうちのいずれか遅いタイミングで開放される。すなわち、図34における場合も、逆方向再生であるので、最初にバンクNo.0に格納されたI2ピクチャは、最後に表示されるため、このGOPの表示が終了するまで開放されない。
このように、MPEGなどに代表される画像圧縮方式で一般的な双方向のフレーム間予測を用いて圧縮した映像データを逆転再生、高速再生するような場合において、IピクチャおよびPピクチャを先にデコードし、Bピクチャのデコードを表示の1フレーム前のタイミングとなるようにスケジュールすることにより、IピクチャおよびPピクチャを、フレームを保持しておくバンクの固定位置に格納し、複雑なバンク面制御を行うことなく、バンクの面数をできるだけ少なくして、効率よく逆方向再生、逆方向高速再生を実現することができる。
具体的には、フレームを保持しておくバンクの数が、デコードの処理単位に含まれるIピクチャおよびPピクチャの数と、Bピクチャ格納分の2面との合計数であれば、アンカーフレームであるIピクチャおよびPピクチャを、バンクの固定位置に格納して、複雑なバンク面制御を行わずに、高速再生、逆方向再生を実現することができる。
例えば、本実施例のように、N=15,M=3の、MPEG LONG GOPストリームでは、I,P,P,P,Pピクチャの5面+次のIピクチャの1面+Bピクチャの2面の合計で、8面のビデオバンクメモリを用意することにより、IピクチャおよびPピクチャを、バンクの固定位置に格納して、複雑なバンク面制御を行わずに、高速再生、逆方向再生、逆方向高速再生を実現することができる。
また、ユーザからの操作によるスピード変更レスポンスを向上するために、フレーム単位でスピードを変更する目的で、Bピクチャのデコードおよび、表示を止める処理を行おうとしたとき、Bピクチャのデコードと、表示のタイミングの制御を別に管理しているにもかかわらず、バンクを管理するための処理が煩雑となることを防いで、バンク管理をシンプルにすることができ、例えば、入力ストリームの過渡状態で不正な参照処理などが行われたとしても容易に復帰することができ(後述するアンダーフロー処理)、スピード変更をフレーム単位に行うことができる。
次に、図35のフローチャートを参照して、図18のステップS197において実行されるアンダーフロー処理について説明する。
ステップS361において、CPU20は、時間管理カウンタおよび時間カウンタを参照し、表示処理に対してストリームデータの供給が間に合っていない状態、すなわち、アンダーフローが発生したか否かを判断する。ステップS361において、アンダーフローが発生していないと判断された場合、処理は、図18のステップS197に戻り、図4のステップS36に進む。
ステップS361において、アンダーフローが発生していると判断された場合、ステップS362において、CPU20は、時間を示すカウンタである時間カウンタの値を、時間情報付きI/Pピクチャデコードキューの先頭の時刻にあわせて修正し、処理は、図18のステップS197に戻り、図4のステップS36に進む。
図36および図37を用いて、アンダーフロー発生時の時間カウンタの値の補正について説明する。なお、図36および図37において、カッコ内の数字の0,1,2は、デコーダ22乃至デコーダ24のうちのいずれかに対応してそれぞれ設定されている情報キューに蓄積される情報、または、デコーダ22乃至デコーダ24のうちのいずれかにおいてそれぞれ実行される処理であることを示すものである。
図36には、図29を用いて説明した場合と同様に、−5倍速再生でアンダーフローが発生していない場合の時間カウンタに対して、情報キューに蓄積される情報、および、デコードと表示のタイミングが図示されている。図36においては、あるGOPのIピクチャのデコード開始タイミングの時間カウンタの値が7である場合を例としている。
そして、例えば、2フレーム分アンダーフローが発生した場合、図37に示されるように、時間カウンタを2フレーム分遅延させ、その時間カウンタを参照して処理を再開させることにより、それ以降のスケジューリングとデコードおよび表示の制御を、滞りなく実行させることが可能となる。
このような処理により、例えば、高速再生時のHDD16のスループット不足などにより、ストリームの供給が滞った場合であっても、ストリームの供給が滞ったことによるアンダーフロー状態を検出し、時間情報計数をアンダーフローした時間分戻すことにより、破綻無く再生処理を再開することが可能である。
そして、図4のステップS36において、すべてのフレームの処理が終了されていないと判断された場合、ステップS37において、時間カウンタがインクリメントされ、処理は、ステップS31に戻り、次のフレームに対して、それ以降の処理が繰り返される。
7フレーム目以降、ステップS33においては、最初のフレームから6番目のフレームまでのいずれかのフレームではないと判断されるので、ステップS34において、1フレームディレイ表示設定処理が実行される。
次に、図38のフローチャートを参照して、7フレーム目以降で、図4のステップS34において実行される、1フレームディレイ表示処理について説明する。
ステップS361において、CPU20は、表示キューに保持されている情報を基に、デコーダ22乃至デコーダ24のうちの、設定されているデコーダによるデコード処理から1フレーム遅れで表示が行われるように、表示命令を、デコーダ22デコーダ24のうちの、設定されているデコーダに、コントロールバス19を介して通知し、表示キューの対応するピクチャIDを削除する。このとき、デコーダ22乃至デコーダ24のうちの、設定されているデコーダの出力アドレス決定部80は、コントロールバス76を介して、CPU20からの制御信号を受け、メモリコントローラ80を制御して、ビデオバンクメモリ82から、対応するピクチャを読み出させて、セレクタ25に供給する。
ステップS362において、CPU20は、図6のステップS81において設定される次のデータを供給するデコーダを示すレジスタに保持されている値を基に、セレクタ25を制御して、デコード済みのフレームの出力を制御し、処理は、図4のステップS34に戻り、ステップS35に進む。
例えば、再生速度が1倍である場合、図21を用いて説明したように、時間情報付き表示順設定キューに設定されている時間情報を基に実行されるBピクチャのデコードタイミングに対して、1フレーム分Bピクチャの表示が遅れて実行されるように、時間情報付き表示順設定キューに設定されているピクチャの順に、表示が設定される。
また、再生速度が−1倍である場合も、図22を用いて説明したように、時間情報付き表示順設定キューに設定されている時間情報を基に実行されるBピクチャのデコードタイミングに対して、1フレーム分Bピクチャの表示が遅れて実行されるように、時間情報付き表示順設定キューに設定されているピクチャの順に、表示が設定される。
また、+2倍速の高速再生における場合は図25、−2倍速の高速再生における場合は図26、+4倍速の高速再生における場合は図27、−4倍速の高速再生における場合は図28、+5倍速の高速再生における場合は図29、そして、−5倍速の高速再生における場合は図30を用いて説明したように、時間情報付き表示順設定キューに設定されている時間情報を基に実行されるBピクチャのデコードタイミングに対して、1フレーム分Bピクチャの表示が遅れて実行されるように、時間情報付き表示順設定キューに設定されているピクチャの順に、表示が設定される。
このような処理により、フレームを保持しておくバンクの数が、デコードの処理単位に含まれるIピクチャおよびPピクチャの数と、Bピクチャ格納分の2面との合計数であれば、アンカーフレームであるIピクチャおよびPピクチャを、バンクの固定位置に格納して、複雑なバンク面制御を行わずに、高速再生、逆方向再生、および、逆方向高速再生を実現することができる。
なお、デコードと表示の開始タイミングの位相のずれは、デコード処理単位に含まれるIピクチャおよびPピクチャの数に基づいて求められるものとして説明したが、例えば、デコード処理単位に含まれるフレームのうち、表示されるフレーム数を基にデコードと表示の開始タイミングの位相のずれを求めることができるようにしても良い。
なお、正方向または逆方向の高速再生が実行される場合、例えば、2番目以降のデコード処理単位におけるデコードのスケジューリングにおいて、表示されるフレームと表示されないフレームとの判断、すなわち、間引きが行われるのに先立って、例えば、デコード処理単位の先頭で表示されるピクチャのピクチャタイプなどの符号化パラメータを予め検出するようにしても良い。
例えば、表示されるフレームと表示されないフレームとの判断が行われる前に、前のデコード処理単位のデコードのスケジュールにおいて計数されたフレームカウンタと、算出された間引き周期とに基づいて、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出するようにしても良いし、他の方法で、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出することができるようにしても良い。
このようにすることにより、デコードのスケジュール処理を、更に、正確に高速に実行することが可能となる。
デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出するための具体的な処理の一例について、以下に説明する。
図39のフローチャートを参照して、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出する処理をスケジューリングに先立って行うことができるようにした、フレームごとに行う処理2について説明する。この処理ルーチンは、表示が指令されたストリームデータが終了するまで、または、表示の終了が指令されるまで、1フレームごとに繰り返して実行される。
ステップS431において、図5を用いて説明した入力ストリーム状態変更処理が実行される。
ステップS432において、図40を用いて後述するデコードスケジュール処理2が実行される。デコードスケジュール処理2において、デコードタイミングがスケジュールされる。そして、デコードタイミングのスケジュール処理に先立って、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出するための処理が実行されるようになされている。
ステップS433において、CPU20は、1フレーム単位で処理の時間を表すカウンタである時間カウンタを参照することにより、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームであるか否かを判断する。
ステップS433において、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームではないと判断された場合、ステップS434において、図38を用いて説明した1フレームディレイ表示設定処理が実行される。
ステップS433において、処理の対象となっているのは、デコード順において、再生されるストリームデータの最初のフレームから6番目のフレームのうちのいずれかのフレームであると判断された場合、または、ステップS434の処理の終了後、ステップS435において、図42を用いて後述するフレーム制御処理2が実行される。フレーム制御処理2において、処理対象となっているフレームがデコードされる。
ステップS436において、CPU20は、すべてのフレームの処理が終了したか否かを判断する。ステップS436において、すべてのフレームの処理が終了していないと判断された場合、ステップS437において、CPU20は、1フレームを単位とする時間カウンタをインクリメントする。
ステップS437の処理の終了後、処理は、ステップS431に戻り、それ以降の処理が繰り返される。ステップS436において、すべてのフレームの処理が終了したと判断された場合、処理は終了される。
このようにして、CPU20は、1フレームの処理ごとに、時間カウンタをカウントアップし、ユーザの指令した再生速度に応じて、デコードをスケジュールして、1フレームごとに、デコードを行わせ、表示を設定するが、この処理においては、デコードタイミングのスケジュール処理に先立って、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出するための処理を実行するようになされている。
次に、図40のフローチャートを参照して、図39のステップS432において実行される、デコードスケジュール処理1について説明する。
ステップS471乃至ステップS478において、図6のステップS71乃至ステップS78と基本的に同様の処理が実行される。
すなわち、入力ピクチャキューを参照して、入力ピクチャキューが空であるか否かが判断され、入力ピクチャキューが空ではないと判断された場合、処理は、図39のステップS432に戻り、ステップS433に進む。入力ピクチャキューが空であると判断された場合、図15のフローチャートを用いて説明した入力処理が実行される。
そして、次にデータの供給を受けるデコーダに対応して設定される時間情報付き表示順設定キューが空であるか否かが判断され、時間情報付き表示順設定キューが空ではないと判断された場合、すなわち、スケジュール済みの1GOP相当のピクチャに対して、フレームごとにデコード処理または表示処理が実行されている途中である場合、処理は、図39のステップS432に戻り、ステップS433に進む。
時間情報付き表示順設定キューが空であると判断された場合、リオーダ処理が実行され、I/Pピクチャデコードキューに、デコードするGOPのうちのIピクチャおよびPピクチャのピクチャIDが、デコード順に設定される。そして、IピクチャおよびPピクチャを格納するバンク位置、および、Pピクチャのデコードにおける参照画像バンクが指定され、IピクチャおよびPピクチャがそれぞれ格納されるバンク位置を基に、Bピクチャのデコードにおける参照画像バンクの位置が指定され、図12を用いて説明した表示順設定キューが設定される。
そして、ステップS479において、図41を用いて後述する間引き処理2が実行される。この間引き処理2は、デコードタイミングのスケジュール処理に先立って、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出するための処理である。
そして、ステップS480乃至ステップS482において、図6のステップS79乃至ステップS81において実行された処理と基本的に同等の処理が実行される。すなわち、図16のフローチャートを用いて説明した表示位相決定処理が実行され、図17のフローチャートを用いて説明した時間情報付きスケジュール決定処理が実行され、デコードと表示のタイミングがスケジュールされる。
具体的には、ステップS479において実行された間引き処理2により、デコードタイミングのスケジュール処理に先立って、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを予め検出することができるので、例えば、表示の先頭がIピクチャまたはPピクチャである場合、図13を用いて説明した様に、先にIピクチャおよびPピクチャがデコードされた後、Bピクチャがデコードされ、表示開始のタイミングは、デコード開始から6ピクチャ分ずれることにより、Bピクチャのデコードのタイミングと表示のタイミングが、1フレーム分ずれるように、デコードと表示のタイミングのスケジュールが行われる。また、表示の先頭がBピクチャである場合、図14を用いて説明した様に、先にIピクチャおよびPピクチャがデコードされた後、Bピクチャがデコードされ、表示開始のタイミングは、デコード開始から7ピクチャ分ずれることにより、Bピクチャのデコードのタイミングと表示のタイミングが、1フレーム分ずれるように、デコードと表示のタイミングのスケジュールが行われる。
そして、次にデコードされるデータを供給するデコーダの設定を切り替える処理が実行されて、処理は、図39のステップS432に戻り、ステップS433に進む。
このような処理により、デコードと表示のタイミングがスケジュールされる。
次に、図41のフローチャートを参照して、図40のステップS479において実行される間引き処理2について説明する。
ステップS501において、CPU20は、図5を用いて説明した入力ストリーム状態変更処理において設定されたストリーム入力状態を基に、ユーザの設定に基づいた再生速度は、正方向、または、逆方向の高速再生であるか否かを判断する。ステップS501において、高速再生ではないと判断された場合、処理は、後述するステップS510に進む。
ステップS501において、高速再生であると判断された場合、ステップS502において、CPU20は、処理中のフレームは、スピード設定が変更された後の最初のGOPの最初のフレームであるか否かを判断する。
ステップS502において、処理中のフレームは、入力ストリーム状態が変更された後の最初のGOPの最初のフレームであると判断された場合、ステップS503において、CPU20は、スピード設定値GOP_Speedを基に、間引き周期を決定して、レジスタに保存する。
具体的には、CPU20は、例えば、2倍速または−2倍速で再生が行われる場合、間引き周期を1/2としてレジスタに保存し、3倍速または−3倍速で再生が行われる場合、間引き周期を1/3としてレジスタに保存する。
ステップS504において、CPU20は、間引き処理2においてデコード処理単位にかかわらずフレームの数をカウントするフレームカウンタをリセットする。
ステップS502において、処理中のフレームは、入力ストリーム状態が変更された後の最初のGOPの最初のフレームではないと判断された場合、または、ステップS504の処理の終了後、ステップS505において、CPU20は、表示順設定キューに保持されているピクチャIDに対応付けられて、確認済みフラグが設定されているか否かを基に、表示順設定キューはすべて確認済みであるか否かを判断する。確認済みフラグは、後述するステップS509の処理により、表示順設定キューに設定されるフラグである。ステップS505において、表示順設定キューはすべて確認済みであると判断された場合、処理は、後述するステップS510に進む。
ステップS505において、表示順設定キューはすべて確認済みではない、換言すれば、表示順設定キューに確認済みフラグが設定されていないピクチャIDが残っていると判断された場合、ステップS506において、CPU20は、フレームカウンタを1インクリメントする。
ステップS507において、CPU20は、間引き周期の決定の結果、レジスタに保持されている間引き周期と、フレームカウンタの値を参照し、フレームカウンタに示されるフレームは表示されるか否かを判断する。具体的には、CPU20は、間引き周期が1/2である場合、フレーム数をカウントするフレームカウンタの値が2n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにしたり、間引き周期が1/3である場合、フレーム数をカウントするフレームカウンタの値が3n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにする。ステップS507において、表示が行われると判断された場合、すなわち、間引かれないフレームであると判断された場合、処理は、後述するステップS509に進む。
ステップS507において、表示されないと判断された場合、すなわち、間引かれるフレームであると判断された場合、ステップS508において、CPU20は、表示順設定キューの処理対象のフレームに、非表示であることを示す削除フラグを設定する。
ステップS507において、フレームカウンタに示されるフレームの表示が行われると判断された場合、または、ステップS508の処理の終了後、ステップS509において、CPU20は、表示順設定キューのフレームカウンタに示されるフレームに対応するピクチャIDに対応付けて確認済みフラグを設定し、処理は、ステップS505に戻り、それ以降の処理が繰り返される。
ステップS501において、高速再生ではないと判断された場合、または、ステップS505において、表示順設定キューはすべて確認済みであると判断された場合、ステップS510において、CPU20は、表示順設定キューに、間引き処理2の実行時のスピード設定値であるGOP_Speedを設定し、図40のステップS479に戻り、ステップS480に進む。
このような処理により、表示順設定キューにおいて、デコードのスケジューリングに先立って、表示されないフレームに非表示であることを示す削除フラグが対応付けられるので、デコードのスケジュール時には、デコード処理単位の先頭で表示されるピクチャのピクチャタイプを検出することができる。そして、この処理ルーチン以降にデコードされるBピクチャは、表示されるもののみとなり(間引かれるBピクチャは、デコード処理部77に供給されない)、間引かれるIピクチャまたはPピクチャは、デコードはされるが、表示されないようになされる。
次に、図42のフローチャートを参照して、図39のステップS435において実行される、フレーム制御処理2について説明する。
ステップS541において、CPU20は、再生装置1内で実行される各処理のタイミングを管理するためのカウンタである時間管理カウンタと、時間情報付きI/Pピクチャデコードキューを参照し、表示時刻が過ぎてしまったストリームデータがあるか否かを判断する。ステップS541において、表示時刻が過ぎてしまったストリームデータがあると判断された場合、処理は、後述するステップS547に進み、図35を用いて説明したアンダーフロー処理が実行されて、処理は、図39のステップS435に戻り、ステップS436に進む。
ステップS541において、表示時刻が過ぎてしまったストリームデータがないと判断された場合、ステップS542乃至ステップS545において、図18のステップS192乃至ステップS195と基本的に同様の処理が実行される。
すなわち、図19を用いて説明したIピクチャおよびPピクチャデコード処理が実行され、図20を用いて説明したBピクチャデコード処理が実行される。そして、CPU20から、CPU11に、表示ピクチャ情報が通知され、CPU20は、時間管理カウンタをインクリメントする。これらの処理は、図41のステップS508において削除フラグが設定されなかった(間引かれなかった)フレームに対して実行される。
そして、ステップS546において、図43を用いて後述する間引き処理3が実行されて、処理は、図39のステップS435に戻り、ステップS436に進む。
このような処理により、表示が遅れていなければ、設定されたデコードスケジュールに基づいて、1フレーム分のデコードが実行されて、表示ピクチャ情報が、CPU11に通知され、間引き処理3が実行される。そして、表示が遅れているとき、図35を用いて説明したアンダーフロー処理が実行される。
次に、図43のフローチャートを参照して、図42のステップS546において実行される間引き処理3について説明する。
ステップS571において、CPU20は、1つ前に実行された間引き処理(デコードスケジュール処理2において、間引き処理2が実行された場合は、間引き処理2)の実行時と比較して、再生のスピード設定が同方向で高速になったか否かを判断する。具体的には、CPU20は、現在のスピード設定値speedと、表示順設定キューに設定されているGOP_speedとを基に、speed/GOP_speed>1が成立するか否かを判断することにより、1つ前に実行された間引き処理の実行時と比較して、再生のスピード設定が同方向で高速になったか否かを判断する。ステップS571において、1つ前に実行された間引き処理の実行時と比較して、再生のスピード設定が、同方向で高速になっていない、すなわち、前の間引き処理と速度が変更されていないか、遅くなったか、または、逆方向になったと判断された場合、処理は、図42のステップS546に戻り、処理は、図39のステップS436に進む。
ステップS571において、1つ前に実行された間引き処理の実行時と比較して、再生のスピード設定が、同方向で高速になったと判断された場合、ステップS572において、CPU20は、間引き処理2の実行時と現在のそれぞれのスピード設定値を基に、間引き周期を決定して、レジスタに保存する。
具体的には、CPU20は、speed/GOP_speedの絶対値の逆数を基に間引き周期を設定し、例えば、間引き処理2の実行時にスピード設定が2倍速であったが、現在のスピード設定値が4倍速であった場合、間引き周期を1/2として、間引き周期を保持するレジスタに保存する。
ステップS573において、CPU20は、間引き処理3においてデコード処理単位にかかわらずフレームの数をカウントするフレームカウンタをリセットする。
ステップS574において、CPU20は、時間情報付き表示順設定キューに保持されているピクチャIDに対応付けられて、確認済みフラグが設定されているか否かを基に、時間情報付き表示順設定キューはすべて確認済みであるか否かを判断する。確認済みフラグは、後述するステップS579の処理により、時間情報付き表示順設定キューに設定されるフラグである。ステップS574において、時間情報付き表示順設定キューはすべて確認済みであると判断された場合、処理は、図42のステップS546に戻り、処理は、図39のステップS436に進む。
ステップS574において、時間情報付き表示順設定キューはすべて確認済みではない、換言すれば、時間情報付き表示順設定キューに確認済みフラグが設定されていないピクチャIDが残っていると判断された場合、ステップS575において、CPU20は、フレームカウンタを1インクリメントする。
ステップS576において、CPU20は、間引き周期の決定の結果、レジスタに保持されている間引き周期と、フレームカウンタの値を参照し、フレームカウンタに示されるフレームは表示されるか否かを判断する。具体的には、CPU20は、間引き周期が1/2である場合、フレーム数をカウントするフレームカウンタの値が2n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにしたり、間引き周期が1/3である場合、フレーム数をカウントするフレームカウンタの値が3n(nは正の整数)であれば、表示を行い、それ以外の場合は、表示を行わないようにする。ステップS576において、表示が行われると判断された場合、すなわち、間引かれないフレームであると判断された場合、処理は、後述するステップS579に進む。
ステップS576において、表示されないと判断された場合、すなわち、間引かれるフレームであると判断された場合、ステップS577において、CPU20は、処理対象のフレームに対応するピクチャIDを、時間情報付き表示順設定キューから削除するか、または、時間情報付き表示順設定キューの対応するピクチャIDに対して、非表示であることを示すフラグを対応付ける。
ステップS578において、図24を用いて説明した、時間情報再設定処理が実行される。このとき、ステップS302において算出される時間情報調整値added_countは、一つ前の間引き処理と比較してスピード設定が変化した場合の、ステップS576およびステップS577の処理による間引きによって変更されたピクチャの数である。
ステップS576において、フレームカウンタに示されるフレームの表示が行われると判断された場合、または、ステップS578の処理の終了後、ステップS579において、CPU20は、時間情報付き表示順設定キューのフレームカウンタに示されるフレームに対応するピクチャIDに対応付けて確認済みフラグを設定し、処理は、ステップS574に戻り、それ以降の処理が繰り返される。
このような処理により、間引き処理2から速度設定が変更されて、同方向で、かつ、高速になった場合には、表示されないフレームのピクチャIDが、時間情報付き表示順設定キューから削除されるか、または、時間情報付き表示順設定キューの対応するピクチャIDに対して、非表示であることを示すフラグが対応付けられる。Bピクチャのデコード処理と、1フレームディレイ表示設定処理は、再設定された時間情報付き表示順設定キューを参照して実行される。間引き処理2から速度設定が変更されて、同方向で、かつ、高速になった場合には、その速度設定に基づいて、時間情報付き表示順設定キューの設定が更新されるため、この処理ルーチン以降にデコードされるBピクチャは、表示されるもののみとなり(間引かれるBピクチャは、デコード処理部77に供給されない)、間引かれるIピクチャまたはPピクチャは、デコードはされるが、表示されないようになされる。
したがって、デコードのスケジューリングが終了した後でも、1フレームごとに、速度設定の変更があるか否かが検出されて、間引き処理2から速度設定が変更されて、同方向で、かつ、高速になった場合には、時間情報付き表示順設定キューが再設定されるので、速度変更にすばやく追従して、ストリームが再生されるようにデコードをスケジューリングすることが可能となる。
以上においては、15ピクチャで1GOPが構成されている場合について説明したが、例えば、1GOPに含まれるアンカーフレーム(IピクチャおよびPピクチャ)の数が、5つ以上または4つ以下であるような場合について、図44乃至図64を用いて説明する。
図44および図45を用いて、1GOPを構成するピクチャのアンカーフレーム数が多いため、図1を用いて説明した再生装置1により上述した15ピクチャで1GOPが構成されている場合と同様にしてデコード処理を行った場合に発生する不具合について説明する。
まず、B0からP14までの15ピクチャで1GOPが構成されているGOP(0)、B0からP20までの21ピクチャで1GOPが構成されているGOP(1)、B0からP14までの15ピクチャで1GOPが構成されているGOP(2)を含むストリームを、上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPを1つのデコーダ(デコーダ22乃至デコーダ24のうちのいずれか)でデコードして1倍速で正方向に再生する場合について、図44を用いて説明する。
それぞれのGOPの先頭のBピクチャは、前のGOPとともにデコードされる。GOP(1)のアンカーフレームは7フレームであるので、GOP(1)をデコードするデコーダにおいて、ビデオバンクメモリ82の8つのバンクのうち、アンカーフレームをデコードするために用いられる6つのバンクがI2乃至P17で一杯になり、続くアンカーフレーム(P20と次のGOP(2)のI2)が配置できなくなる。したがって、GOP(1)をデコードするデコーダでは、アンカーフレームP20と次のGOP(2)のI2をデコード時に参照することができない。これにより、GOP(1)のP17以降のピクチャと、GOP(2)のB0B1はデコードすることができない。
次に、B0からP14までの15ピクチャで1GOPが構成されているGOP(0)、B0からP20までの21ピクチャで1GOPが構成されているGOP(1)、B0からP14までの15ピクチャで1GOPが構成されているGOP(2)を含むストリームを、上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPを1つのデコーダ(デコーダ22乃至デコーダ24のうちのいずれか)でデコードして1倍速で逆方向に再生する場合について、図45を用いて説明する。
それぞれのGOPの先頭のBピクチャは、次にデコードされるGOPとともにデコードされる。この場合においても、GOP(1)のアンカーフレームは7フレームであるので、図44を用いて説明した場合と同様に、GOP(1)をデコードするデコーダにおいて、ビデオバンクメモリ82の8つのバンクのうち、アンカーフレームをデコードするために用いられる6つのバンクがI2乃至P17で一杯になり、続くアンカーフレーム(P20と前のGOP(2)のI2)が配置できなくなる。したがって、GOP(1)をデコードするデコーダでは、アンカーフレームP20と前のGOP(2)のI2をデコード時に参照することができない。これにより、GOP(1)のP17以降のピクチャと、GOP(2)のB0B1はデコードすることができない。
このように、1GOPを構成するピクチャのアンカーフレーム数が多い場合、図1を用いて説明した再生装置1により上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPごとにデコード処理を施すと、再生できないフレームが発生してしまう。
一方、1GOPに含まれるアンカーフレームの数が5つ以下であるGOPと、1GOPに含まれるアンカーフレームの数が5つ以上であるGOPとが連続し、かつ、高速再生される場合に発生する不具合ついて、図46および図47を用いて説明する。
まず、B0B1I2の3ピクチャで1GOPが構成されているGOP(0)、GOP(1)、GOP(2)が連続し、B0からP14までの15ピクチャで1GOPが構成されているGOP(3)およびGOP(4)を含むストリームを、上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPを1つのデコーダ(デコーダ22乃至デコーダ24のうちのいずれか)でデコードして2倍速で正方向に再生する場合について、図46を用いて説明する。
それぞれのGOPの先頭のBピクチャは、前のGOPとともにデコードされる。GOP(0)乃至GOP(2)のアンカーフレームはそれぞれ1フレームのみであり、続くGOP(3)のアンカーフレームは5つである。GOP(0)のB0B1のうち表示されるピクチャであるB0は、一つ前のフレームとともに、デコーダ2においてデコードされ、次に、GOP(0)のI2ピクチャと、表示されるGOP(1)のB1とが、デコーダ0においてデコードされ、次に、GOP(1)のI2ピクチャと、表示されるGOP(2)のB0とが、デコーダ1においてデコードされる。そして、それぞれのデコーダにおいて、表示される全てのピクチャが出力された後、次のデコード処理が始まるようになされる。
すなわち、デコーダ0においては、GOP(1)のB1が表示のために出力されたのち、GOP(3)のアンカーフレームのデコードが開始されるので、デコード遅れが発生してしまい、GOP(3)のアンカーフレームのデコードが終了して、最初に表示されるピクチャであるB3がデコードされるまでの間、デコーダ2によりデコードされたGOP(3)のB1が出力された状態となってしまう。
次に、B0B1I2の3ピクチャで1GOPが構成されているGOP(4)、GOP(3)、GOP(2)が連続し、B0からP14までの15ピクチャで1GOPが構成されているGOP(1)およびGOP(0)を含むストリームを、上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPを1つのデコーダ(デコーダ22乃至デコーダ24のうちのいずれか)でデコードして2倍速で逆方向に再生する場合について、図47を用いて説明する。
それぞれのGOPの先頭のBピクチャは、次にデコードされるGOPとともにデコードされる。この場合においても、GOP(4)乃至GOP(2)のアンカーフレームはそれぞれ1フレームのみであり、続くGOP(1)のアンカーフレームは5つである。GOP(4)の前のGOPのB0B1のうち、表示されるB0は、GOP(4)のI2とともにデコーダ1でデコードされ、GOP(4)のB0B1のうち表示されるピクチャであるB1は、次のGOP(3)のI2とともに、デコーダ0においてデコードされる。次に、GOP(3)のB0B1のうち表示されるピクチャであるB1は、次のGOP(2)のI2とともに、デコーダ2においてデコードされ、次に、GOP(2)のB0B1のうち表示されるピクチャであるB0は、次のGOP(1)とともに、デコーダ1においてデコードされる。そして、それぞれのデコーダにおいて、表示される全てのピクチャが出力された後、次のデコード処理が始まるようになされる。
すなわち、デコーダ1においては、GOP(4)のI2が表示のために出力されたのち、GOP(1)のアンカーフレームのデコードが開始されるので、デコード遅れが発生してしまい、GOP(1)のアンカーフレームのデコードが終了して、最初に表示されるピクチャであるGOP(2)のB0がデコードされるまで、デコーダ2によりデコードされたGOP(3)のI2が出力された状態となってしまう。
このように、1GOPを構成するピクチャのアンカーフレーム数が少ないものと多いものが連続している場合、図1を用いて説明した再生装置1により上述した15ピクチャで1GOPが構成されている場合と同様にして1GOPごとにデコード処理を施すと、アンカーフレームのデコードにかかる時間のため、デコード遅れが発生してしまう。
図44乃至図47を用いて説明した様な、15ピクチャで1GOPが構成されていない場合の不具合を解消するために、図1を用いて説明した再生装置1においては、それぞれのGOPの構成を検出し、デコーダ22乃至デコーダ24のビデオバンクメモリ82の数に対応したアンカーフレームを有するデコード処理単位としてのデコードユニットを、GOPの分割および結合により構成するようにしても良い。
1GOPに30フレーム含まれている場合のGOP分割と、分割されたGOPのそれぞれのデコードについて、図48乃至図50を用いて説明する。
図48に示されるように、GOP(0)は、B0乃至P29の30フレームで構成され、次にGOP(1)が続いている。それぞれのデコード処理単位において、先頭の2枚のBピクチャは、その前のGOPと一緒にデコードされるようになされている。
ビデオバンクメモリ82においてアンカーフレームに割り当てられるのはビデオバンクメモリ82の8バンクのうちの6バンクであるが、GOP(0)には、アンカーフレームが10フレーム存在するので、上述したように、15ピクチャで1GOPが構成されている場合と同様にして1GOPごとにデコード処理を施す方法では、全てのフレームをデコードすることができない。そこで、図48の下段に示されるように、GOP(0)をアンカーフレームが6フレーム以下となるように2つに分割してデコード処理単位を構成し、分割された中に含まれるPピクチャおよびBピクチャを全てデコードするために必要となるアンカーフレームを含めてデコードを行うものとする。
図49に示されるように、GOP(0)をI2乃至P17と、B18乃至P29およびB0B1の2つのデコード単位GOP(0−0)とGOP(0−1)とに分割してそれぞれ異なるデコーダにてデコードする。後半のGOP(0−1)の先頭の2つのBピクチャB18B19をデコードするには、GOP(0−0)の最後のアンカーフレームP17が必要である。すなわち、P17はGOP(0−1)のアンカーフレームでもある。また、後半のGOP(0−1)のアンカーフレームをデコードするには、前半のGOP(0−0)のアンカーフレームが必要である。したがって、GOP(0−1)のアンカーフレームをデコードする前に、GOP(0−0)のアンカーフレームを、アンカーフレームのデコード用の6つのバンクを用いてデコードし、その後、GOP(0−1)のアンカーフレームと次のGOPの先頭のIピクチャをアンカーフレームのデコード用の6つのバンクを用いて(それぞれのバンクを上書きして)デコードする。
したがって、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位をデコードするデコーダにおいても、アンカーフレームは固定バンクでデコードされ、正方向であっても逆方向であっても、通常再生であっても、高速再生であっても、そのデコード順は不変である。一方、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位においても、Bピクチャは、再生方向および再生速度によって、デコード順が異なる。図49においては、再生速度1倍の正方向再生および逆方向再生におけるデコード順が示されている。
すなわち、図50に示されるように、再生速度1倍の正方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームI2乃至P17がデコードされた後、GOP(0−0)のBピクチャB3乃至B16がデコードされるとともに、異なるデコーダにおいて、アンカーフレームI2乃至P14がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームP17乃至P29およびGOP(1)の先頭のI2がデコードされ、続いて、GOP(0−1)のBピクチャB18乃至B28と、GOP(1)のB0B1がデコードされる。
そして、再生速度1倍の逆方向再生においては、いずれかのデコーダにおいて、アンカーフレームI2乃至P14がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームP17乃至P29およびGOP(1)の先頭のI2がデコードされ、続いて、GOP(1)のB1B0とGOP(0−1)のBピクチャB28乃至B18がデコードされ、異なるデコーダにおいて、GOP(0−0)のアンカーフレームI2乃至P17がデコードされた後、GOP(0−0)のBピクチャB16乃至B3がデコードされる。
次に、1GOPに含まれるアンカーフレーム数が4以下であるGOPが連続する場合のデコード処理単位の設定と、デコード処理について、図51乃至図53を用いて説明する。
図51に示されるように、B0乃至P5の6フレームで1GOPのGOP(0)が構成され、B(0)乃至P8の9フレームでGOP(1)が構成され、そして、GOP(2)が続いている。それぞれのデコード処理単位において、先頭の2枚のBピクチャは、その前のGOPと一緒にデコードされるようになされている。
ビデオバンクメモリ82においてアンカーフレームに割り当てられるのはビデオバンクメモリ82の8バンクのうちの6バンクであるが、GOP(0)には、アンカーフレームが2フレーム存在し、GOP(1)には、アンカーフレームが3フレーム存在する。そこで、図51の下段に示されるように、GOP(0)とGOP(1)とを結合してアンカーフレームが6フレーム以下となるデコード処理単位を設定し、デコードを行うものとする。
ここでは、GOP(0)の先頭のB0およびB1は、前のGOPとともにデコードされ、GOP(0)のI2乃至P5、GOP(1)、および、GOP(2)の先頭のB0およびB1を、1つのデコード処理単位GOP(0−0)としてデコードする。図52に示されるように、アンカーフレームは固定バンクでデコードされ、正方向であっても逆方向であっても、通常再生であっても、高速再生であっても、そのデコード順は不変である。一方、Bピクチャは、再生方向および再生速度によって、デコード順が異なる。図52においては、再生速度1倍の正方向再生および逆方向再生におけるデコード順が示されている。
すなわち、図53に示されるように、再生速度1倍の正方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームおよびGOP(2)の先頭のI2がデコードされ、続いて、GOP(0−0)のBピクチャがデコードされる。そして、再生速度1倍の逆方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームおよびGOP(2)の先頭のI2がデコードされ、続いて、GOP(0−0)のBピクチャが、逆方向再生されるようにデコードされる。
次に、1GOPに含まれるアンカーフレーム数が6GOP以上の長いGOPと、1GOPに含まれるアンカーフレーム数が4以下の短いGOPが連続している場合、これらのGOPを結合した後分割してデコード処理単位を設定し、デコーダへの負荷を均等化するようにした場合について、図54乃至図56を用いて説明する。
図54に示されるように、B0乃至P20の21フレームで1GOPのGOP(0)が構成され、B0乃至P8の9フレームで1GOPのGOP(1)が構成され、次にGOP(2)が続いている。それぞれのデコード処理単位において、先頭の2枚のBピクチャは、その前のGOPと一緒にデコードされるようになされている。
ビデオバンクメモリ82においてアンカーフレームに割り当てられるのはビデオバンクメモリ82の8バンクのうちの6バンクであるが、GOP(0)には、アンカーフレームが7フレーム存在するので、上述したように、15ピクチャで1GOPが構成されている場合と同様にして1GOPごとにデコード処理を施す方法では、不具合なくデコードすることができない。そこで、GOP(0)をアンカーフレームが6フレーム以下となる2つのデコード処理単位に分割するようにしてもよいが、ここでは、続くGOPを構成するフレーム数が少ないので、図54の下段に示されるように、GOP(0)とGOP(1)を結合した後、分割して、GOP(0)とGOP(1)から、2つのデコード処理単位GOP(0−0)とGOP(0−1)とを設定し、このデコード処理単位に基づいてデコードを行うものとする。
図55に示されるように、GOP(0)とGOP(1)を結合した後、GOP(0)のI2乃至P17を第1のデコード処理単位GOP(0−0)とし、GOP(0)のB18乃至P20、GOP(1)全体、および、GOP(2)のB1B2とを第2のデコード処理単位GOP(0−1)として、それぞれ異なるデコーダにてデコードする。GOP(0−1)の先頭の2つのBピクチャB18B19をデコードするには、GOP(0−0)の最後のアンカーフレームP17が必要である。すなわち、P17はGOP(0−1)のアンカーフレームでもある。また、後半のGOP(0−1)のアンカーフレームをデコードするには、前半のGOP(0−0)のアンカーフレームが必要である。したがって、GOP(0−1)のアンカーフレームをデコードする前に、GOP(0−0)のアンカーフレームを、アンカーフレームのデコード用の6つのバンクを用いてデコードし、その後、GOP(0−1)のアンカーフレームと次のGOPの先頭のIピクチャをアンカーフレームのデコード用の6つのバンクを用いて(それぞれのバンクを上書きして)デコードする。
したがって、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位をデコードするデコーダにおいても、アンカーフレームは固定バンクでデコードされ、正方向であっても逆方向であっても、通常再生であっても、高速再生であっても、そのデコード順は不変である。一方、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位においても、Bピクチャは、再生方向および再生速度によって、デコード順が異なる。図55においては、再生速度1倍の正方向再生および逆方向再生におけるデコード順が示されている。
すなわち、図56に示されるように、再生速度1倍の正方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームである、GOP(0)のI2乃至P17がデコードされた後、GOP(0−0)のBピクチャ、すなわち、GOP(0)のB3乃至B16がデコードされる。そして、異なるデコーダにおいて、GOP(0−0)のアンカーフレームI2乃至P14がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームである、GOP(0)のP17,P20、GOP(1)のI2,P5,P8、およびGOP(2)の先頭のI2がデコードされ、続いて、GOP(0−1)のBピクチャである、GOP(0)のB18、B19、GOP(1)のB0乃至B7、および、GOP(2)のB0B1がデコードされる。
そして、再生速度1倍の逆方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームI2乃至P14がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームである、GOP(0)のP17,P20、GOP(1)のI2,P5,P8、およびGOP(2)の先頭のI2がデコードされ、続いて、GOP(2)のB1B0と、GOP(0−1)のBピクチャである、GOP(1)のB7乃至B0、および、GOP(0)のB19、B18がデコードされる。そして、異なるデコーダにおいて、GOP(0−0)のアンカーフレームである、GOP(0)のI2乃至P17がデコードされた後、GOP(0−0)のBピクチャ、すなわち、GOP(0)のB16乃至B3がデコードされる。
次に、1GOPに含まれるアンカーフレーム数が4以下の短いGOPと、1GOPに含まれるアンカーフレーム数が6GOP以上の長いGOPとが連続している場合、これらのGOPを結合した後分割してデコード処理単位を設定し、デコーダへの負荷を均等化するようにした場合について、図57乃至図59を用いて説明する。
図57に示されるように、B0乃至P8の9フレームで1GOPのGOP(0)が構成され、B0乃至P20の21フレームで1GOPのGOP(1)が構成され、次にGOP(2)が続いている。それぞれのデコード処理単位において、先頭の2枚のBピクチャは、その前のGOPと一緒にデコードされるようになされている。
ビデオバンクメモリ82においてアンカーフレームに割り当てられるのはビデオバンクメモリ82の8バンクのうちの6バンクである。GOP(0)には、アンカーフレームが3フレームしか存在しないが、GOP(1)には、アンカーフレームが7フレーム存在するので、図57の下段に示されるように、GOP(0)とGOP(1)を結合した後、分割して、GOP(0)とGOP(1)から、2つのデコード処理単位GOP(0−0)とGOP(0−1)とを設定し、このデコード処理単位に基づいてデコードを行うものとする。
図58に示されるように、GOP(0)とGOP(1)を結合した後、GOP(0)のI2乃至GOP(1)のP8を第1のデコード処理単位GOP(0−0)とし、GOP(1)のB9乃至P20と、GOP(2)のB1B2とを第2のデコード処理単位GOP(0−1)として、それぞれ異なるデコーダにてデコードする。GOP(0−1)の先頭の2つのBピクチャB9B10をデコードするには、GOP(0−0)の最後のアンカーフレームP8が必要である。すなわち、P8はGOP(0−1)のアンカーフレームでもある。また、後半のGOP(0−1)のアンカーフレームをデコードするには、前半のGOP(0−0)のアンカーフレームのうち、GOP(1)のI2およびP5が必要である。したがって、GOP(0−1)のアンカーフレームをデコードする前に、GOP(0−0)のアンカーフレームに含まれるGOP(1)のI2およびP5を、アンカーフレームのデコード用の6つのバンクのうちのいずれかを用いてデコードし、その後、GOP(0−1)のアンカーフレームと次のGOPの先頭のIピクチャをアンカーフレームのデコード用の6つのバンクを用いて(それぞれのバンクを上書きして)デコードする。
したがって、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位をデコードするデコーダにおいても、アンカーフレームは固定バンクでデコードされ、正方向であっても逆方向であっても、通常再生であっても、高速再生であっても、そのデコード順は不変である。一方、GOP(0−0)とGOP(0−1)のいずれのデコード処理単位においても、Bピクチャは、再生方向および再生速度によって、デコード順が異なる。図58においては、再生速度1倍の正方向再生および逆方向再生におけるデコード順が示されている。
すなわち、図59に示されるように、再生速度1倍の正方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームである、GOP(0)のI2乃至P8と、GOP(1)のI2乃至P8がデコードされた後、GOP(0−0)のBピクチャ、すなわち、GOP(0)のB3乃至B7とGOP(1)のB0乃至B7がデコードされる。そして、異なるデコーダにおいて、GOP(0−0)のアンカーフレームのうちGOP(1)のアンカーフレームであるI2およびP5がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームである、GOP(1)のP8乃至P20、およびGOP(2)の先頭のI2がデコードされ、続いて、GOP(0−1)のBピクチャであるGOP(1)のB9乃至B19、および、GOP(2)のB0B1がデコードされる。
そして、再生速度1倍の逆方向再生においては、いずれかのデコーダにおいて、GOP(0−0)のアンカーフレームのうちGOP(1)のアンカーフレームであるI2およびP5がデコードされた後、それを参照画像として、GOP(0−1)のアンカーフレームである、GOP(1)のP8乃至P20、およびGOP(2)の先頭のI2がデコードされ、続いて、GOP(2)のB1B0と、GOP(0−1)のBピクチャである、GOP(1)のB19乃至B9がデコードされる。そして、異なるデコーダにおいて、GOP(0−0)のアンカーフレームである、GOP(0)のI2乃至P8およびGOP(1)のI2乃至P8がデコードされた後、GOP(0−0)のBピクチャ、すなわち、GOP(1)のB7乃至B0およびGOP(0)のB7乃至B3がデコードされる。
図48乃至図59を用いて説明した様にして、デコード処理単位としてのデコードユニットが構成されるので、デコードユニットごとにスケジューリングが実行されて、指定された再生方向および再生速度で再生されるように、必要に応じて間引き処理が実行されて、デコードが行われ、ストリームが再生出力される。
具体的には、CPU20が、メモリ18に転送されて保存されている複数のGOPのうちの次にデコードされるGOPと、その次(2番目)のGOPの構成を読み出して、アンカーフレームの数を基に、デコード処理単位としてのデコードユニットを、GOPの分割および結合により構成し、PCIブリッジ17に制御コマンドを送出して、メモリ18からデコードユニットごとにストリームデータを読み出させて、デコーダ22乃至デコーダ24のいずれかに供給させるように制御する。PCIブリッジ17は、CPU20の制御に基づいて、メモリ18からデコードユニットごとにストリームデータを読み出して、デコーダ22乃至デコーダ24のいずれかに供給する。
そして、CPU20は、デコードユニットに対して、上述した場合と同様にしてスケジューリングを行う。このとき、例えば、図48を用いて説明したGOP(0−1)図54を用いて説明したGOP(0−1)、または、図57を用いて説明したGOP(0−1)図54を用いて説明したGOP(0−1)のように、そのデコードユニットのアンカーフレームをデコードするために、他のデコードユニットのアンカーフレームの少なくとも一部をデコードする必要がある場合、入力ピクチャキューには、アンカーフレームをデコードするために必要な他のデコードユニットのアンカーフレームも設定され、これらは、I/Pピクチャデコードキューの先頭から順に設定される。しかし、アンカーフレームをデコードするために必要な他のデコードユニットのアンカーフレームは、この処理によって表示されないので、表示順設定キューには設定されない。
そして、CPU20は、次のデータを供給するデコーダを示すレジスタに保持されている値を参照し、デコーダ22乃至デコーダ24のうちデコードを実行するデコーダとして設定されているものを制御する。デコード処理を実行するデコーダ22乃至デコーダ24のうちのいずれかのエレメンタリストリームアドレス決定部73は、CPU20の制御に基づいて、時間情報付きI/Pピクチャデコードキューに設定されたピクチャIDに対応するピクチャのデータを、メモリコントローラ74により、入力バッファ75から読み出して、デコード処理部77に供給する。
デコードされるピクチャがIピクチャである場合、CPU20は、デコード処理部77を制御して、メモリコントローラ74から供給されたIピクチャをデコードさせるとともに、書き込み画アドレス決定部78を制御して、デコードされたフレームデータをメモリコントローラ81に供給させて、ビデオバンクメモリ82のうちIピクチャの格納用に指定されたバンクに保存させる。また、デコードされるピクチャがPピクチャである場合、CPU20は、参照画アドレス決定部79を制御してPピクチャの参照バンク位置を基に、メモリコントローラ81により、ビデオバンクメモリ82に格納されている参照画を読み出させて、デコード処理部77に供給させ、デコード処理部77を制御して、メモリコントローラ74から供給されたPピクチャをデコードさせるとともに、書き込み画アドレス決定部78を制御して、デコードされたフレームデータをメモリコントローラ81に供給させて、ビデオバンクメモリ82のうちPピクチャの格納用に指定されたバンクに保存させる。また、デコードされるピクチャがBピクチャである場合、CPU20は、参照画アドレス決定部79を制御して、Bピクチャの参照バンク位置を基に、メモリコントローラ81により、ビデオバンクメモリ82に格納されている参照画を読み出させて、デコード処理部77に供給させ、デコード処理部77を制御して、メモリコントローラ74から供給されたBピクチャをデコードさせる。
次に、図60のフローチャートを参照して、1GOPを構成するピクチャ数が15以外であるときのGOP分割・結合処理について説明する。
ステップS601において、CPU20は、分割後、スケジューリングされていないデコードユニットがあるか否かを判断する。
ステップS601において、スケジューリングされていないデコードユニットがあると判断された場合、ステップS602において、CPU20は、上述したフレームごとに行う処理1またはフレームごとに行う処理2によって、スケジュールされていない分割後のデコードユニットのデコードをスケジューリングし、デコードする。
ステップS601において、スケジューリングされていないデコードユニットがないと判断された場合、ステップS603において、CPU20は、デコードのスケジューリングが行われていない次のGOPおよび2番目のGOPの構成を検出する。
ステップS604において、CPU20は、次のGOPは、1つのデコーダでデコード可能な最大のサイズよりも大きいか否かを判断する。具体的には、CPU20は、次のGOPのアンカーフレームの数を確認し、1つのデコーダにおいてアンカーフレームのデコード用に用意されているバンクの数と比較することにより、次のGOPが1つのデコーダでデコード可能な最大のサイズよりも大きいか否かを判断する。
ステップS604において、次のGOPは1つのデコーダでデコード可能な最大のサイズよりも大きいと判断された場合、ステップS605において、CPU20は、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとなるか否かを判断する。具体的には、CPU20は、ビデオバンクメモリ82が8つのバンクを有している場合、次のGOPと2番目のGOPとを結合したときにアンカーフレームが10フレーム以下、すなわち、ビデオバンクメモリ82のバンク数から3を減算した値の2倍以下となっているか否かを判断する。
ステップS605において、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとなると判断された場合(例えば、図54乃至図56を用いて説明した様に、1GOPに含まれるアンカーフレーム数が6GOP以上の長いGOPと、1GOPに含まれるアンカーフレーム数が4以下の短いGOPが連続している場合など)、処理は、後述するステップS610に進む。
ステップS605において、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとならないと判断された場合、ステップS606において、CPU20は、例えば、図48乃至図50を用いて説明した30ピクチャで1GOPが構成されている場合のように、次のGOPを、1つのデコーダでデコード可能な大きさの複数のデコードユニットに分割し、処理は、後述するステップS612に進む。
ステップS604において、次のGOPは1つのデコーダでデコード可能な最大のサイズよりも大きくない(すなわち、小さい)と判断された場合、ステップS607において、CPU20は、次のGOPと2番目のGOPとを結合して、1つのデコーダでデコード可能なサイズとなるか否かを判断する。
ステップS607において、次のGOPと2番目のGOPとを結合して、1つのデコーダでデコード可能なサイズとなると判断された場合、ステップS608において、CPU20は、例えば、図51乃至図53を用いて説明した1GOPに含まれるアンカーフレーム数が4以下であるGOPが連続する場合のようにして、次のGOPと2番目のGOPとを結合して、1つのデコードユニットとし、処理は、後述するステップS612に進む。
ステップS607において、次のGOPと2番目のGOPとを結合して、1つのデコーダでデコード可能なサイズとならないと判断された場合、ステップS609において、CPU20は、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとなるか否かを判断する。具体的には、CPU20は、例えば、図57乃至図59を用いて説明した1GOPに含まれるアンカーフレーム数が4以下の短いGOPと、1GOPに含まれるアンカーフレーム数が6GOP以上の長いGOPとが連続しているときなどのように、ビデオバンクメモリ82が8つのバンクを有している場合、次のGOPと2番目のGOPとを結合したときにアンカーフレームが10フレーム以下、すなわち、ビデオバンクメモリ82のバンク数から3を減算した値の2倍以下となっているか否かを判断する。
ステップS605において、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとなると判断された場合、または、ステップS609において、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとなると判断された場合、ステップS610において、CPU20は、例えば、図54乃至図56を用いて説明した場合や、図57乃至図59を用いて説明した場合のように、次のGOPと2番目のGOPとを結合後、分割して、2つのデコードユニットとし、処理は、後述するステップS612に進む。
ステップS609において、次のGOPと2番目のGOPとを結合して、2つのデコーダでデコード可能なサイズとならないと判断された場合、ステップS611において、CPU20は、次のGOPを、そのまま、1つのデコードユニットとする。
ステップS606、ステップS608、ステップS610、または、ステップS611の処理の終了後、ステップS612において、CPU20は、上述した処理により設定されたデコードユニットのうち、次にデコードされるデコードユニットのデコードを、上述したフレームごとに行う処理1またはフレームごとに行う処理2によってスケジューリングし、デコードする。
ステップS613において、CPU20は、スケジュールされていない分割後のデコードユニットがある場合、そのデコードユニットを、スケジュール待ちのデータとして保持し、処理が終了される。
このような処理により、1GOPを構成するピクチャ数が、15ピクチャ以外であり、GOPごとに異なるような場合においても、高速にデコード処理ができるように、GOPの分割や結合が行われる。
なお、ここでは、デコーダ22乃至デコーダ24のそれぞれのビデオバンクメモリ82が8バンクであり、そのうち6バンクがアンカーフレームのデコード用として固定されている場合のスケジューリングが無駄なく行われるようなGOPの分割または結合の方法について説明したが、デコーダ22乃至デコーダ24のそれぞれのビデオバンクメモリ82に保持可能なフレームの数(バンクの数)が8つではない場合、または、アンカーフレームのデコード用として固定されているバンクの数が上述したものとは異なる場合などにおいては、ビデオバンクメモリ82に保持可能なフレームの数(バンクの数)やアンカーフレームのデコード用として固定されているバンクの数に応じて、GOPの分割または結合が行われるようにしても良いことは言うまでもない。具体的には、アンカーフレームのデコード用として固定されているバンクの数が6つよりも少ない場合、1つのデコードユニットに含まれるアンカーフレームの数が6つよりも少なくなるようにデコードユニットが設定され、アンカーフレームのデコード用として固定されているバンクの数が6つより多い場合、1つのデコードユニットに含まれるアンカーフレームの数が6つよりも多いアンカーフレームのデコード用として固定されているバンクの数よりも少なくなるようにデコードユニットが設定される。
以上説明した処理により、図44を用いて説明した様に21フレームで1GOPが構成されている場合の正方向1倍速再生においても、図61に示されるように、不具合なくデコード処理が実行される。
すなわち、21フレームで1GOPが構成されているGOP(1)は、2つのデコードユニットに分割され、デコーダ1とデコーダ2によりデコードされる。そのとき、後半のデコードユニットのアンカーフレームをデコードするために、まず、デコーダ2から出力されない前半のデコードユニットのアンカーフレームがデコードされた後、後半のデコードユニットのアンカーフレームが、アンカーフレーム用に固定されているバンクを用いて(必要に応じて、前半のデコードユニットのアンカーフレームに上書きされて)デコードされる。
また、同様にして、図45を用いて説明した様に21フレームで1GOPが構成されている場合の逆方向1倍速再生においても、図62に示されるように、不具合なくデコード処理が実行される。
すなわち、21フレームで1GOPが構成されているGOP(1)は、2つのデコードユニットに分割され、デコーダ2とデコーダ1によりデコードされる。そのとき、後半のデコードユニットのアンカーフレームをデコードするために、まず、デコーダ2から出力されない前半のデコードユニットのアンカーフレームがデコードされた後、後半のデコードユニットのアンカーフレームが、アンカーフレーム用に固定されているバンクを用いて(必要に応じて、前半のデコードユニットのアンカーフレームに上書きされて)デコードされる。
同様にして、図46を用いて説明した様にアンカーフレーム数の少ないGOPとアンカーフレーム数の多いGOPが連続している場合の正方向2倍速再生においても、図63に示されるように、不具合なくデコード処理が実行される。
すなわち、B0B1I2で構成されているGOP(0)とGOP(1)とが結合されて1つのデコードユニットが構成され、B0B1I2で構成されているGOP(2)とB0乃至P14の15フレームで構成されているGOP(3)とは、結合された後、2つのデコードユニットに分割される。
GOP(0)とGOP(1)とで構成されているデコードユニットの先頭のB0B1(GOP(0)のB0B1)のうちの表示されるB(0)と、このBピクチャをデコードするために必要な参照画であるI2は、その前のGOPまたはデコードユニットとともに、デコーダ2でデコードされる。GOP(2)とGOP(3)の前半とで構成されているデコードユニットの先頭のB0B1(GOP(2)のB0B1)のうちの表示されるB(0)と、このBピクチャをデコードするために必要な参照画であるI2は、その前のデコードユニットであるGOP(0)とGOP(1)とで構成されるデコードユニットとともに、デコーダ0でデコードされる。GOP(3)の後半で構成されているデコードユニットの表示されるBピクチャの先頭であるB(7)は、その前のデコードユニットであるGOP(2)とGOP(3)の前半とで構成されているデコードユニットとともに、デコーダ1でデコードされる。GOP(4)の先頭のB0B1のうち、表示されるB0と、このBピクチャをデコードするために必要な参照画であるI2は、その前のデコードユニットであるGOP(3)の後半で構成されているデコードユニットとともに、デコーダ2でデコードされる。そして、GOP(4)のI2以降は、デコーダ0でデコードされる。
更に、同様に、図47を用いて説明した様にアンカーフレーム数の少ないGOPとアンカーフレーム数の多いGOPが連続している場合の逆方向2倍速再生においても、図64に示されるように、不具合なくデコード処理が実行される。
すなわち、B0B1I2で構成されているGOP(4)とGOP(3)とが結合されて1つのデコードユニットが構成され、B0B1I2で構成されているGOP(2)とB0乃至P14の15フレームで構成されているGOP(1)とは、結合された後、2つのデコードユニットに分割される。
GOP(4)とGOP(3)とで構成されているデコードユニットの先頭のB0B1(GOP(3)のB0B1)を除いたピクチャと、その前のデコードユニットの2枚のBピクチャのうちの表示されるピクチャ(この図においては、B0)およびこのBピクチャをデコードするために必要な参照画であるI2は、デコーダ1でデコードされる。そして、GOP(4)とGOP(3)とで構成されているデコードユニットの先頭のB0B1(GOP(3)のB0B1)のうちの表示されるB(0)と、このBピクチャをデコードするために必要な参照画であるI2は、その次にデコードされるデコードユニットであるGOP(2)とGOP(1)の後半により構成されるデコードユニットとともに、デコーダ0でデコードされる。GOP(2)とGOP(1)の後半とで構成されているデコードユニットの先頭のB9B10(GOP(1)のB9B10)のうちの表示されるB(9)と、このBピクチャをデコードするために必要な参照画であるP8P11は、その次にデコードされるデコードユニットである、GOP(1)の前半とともに、デコーダ2でデコードされる。GOP(1)の前半で構成されているデコードユニットの表示されるBピクチャの先頭であるB(1)は、GOP(0)とともに、デコーダ1でデコードされる。
このようにして、CPU20は、アンカーフレーム数に基づいて、GOPを適宜分割または結合して、デコーダ22乃至デコーダ24に設けられているビデオバンクメモリ82の数に対応する数のアンカーフレームを有するデコードユニットを構成し、PCIブリッジ17を制御して、デコードユニットごとに、デコーダ22乃至デコーダ24にストリームを供給させるとともに、デコードユニットごとにデコード処理や表示順をスケジュールし、デコーダ22乃至デコーダ24を制御してデコードさせるようにする。これにより、アンカーフレーム数がGOPによって異なるようなストリームデータが供給された場合にも、再生装置1は、デコードされないフレームを発生させたり、デコード遅れを発生させることなく、高速にデコード処理を行うようにすることが可能となる。
なお、GOP分割時の後ろのデコードユニット、すなわち、アンカーフレームデコードのために、前のデコードユニットのアンカーフレームをデコードする必要があるデコードユニットにおいては、そのデコードユニットに含まれているアンカーフレームの数が6フレームである場合、そのデコードユニットに含まれているアンカーフレームのデコード開始タイミングから表示開始タイミングのずれは、先頭がIピクチャまたはPピクチャのとき6ピクチャずれで、Bピクチャのとき7ピクチャずれである。また、そのデコードユニットに含まれているアンカーフレームの数が5フレーム以下のnフレームである場合、そのデコードユニットに含まれているアンカーフレームのデコード開始タイミングと表示開始タイミングのずれは、デコードユニットに含まれるアンカーフレーム数に基づいて変更されるものとなり、先頭がIピクチャまたはPピクチャのときnフレームずれで、Bピクチャのときn+1フレームずれである。
なお、以上の説明においては、アンカーフレームのデコード用として固定されているバンクの数に対して、1つのデコードユニットに含まれるアンカーフレームの数が同一か、それよりも少なくなるようにデコードユニットが設定されるものとして説明したが、デコードユニットは、前のデコードユニットのアンカーフレーム数と比較して、m(mは1以上の実験的経験的に設定可能な正の整数で、例えば、2乃至4フレーム程度が好適である)フレーム以上多くしないようにデコードユニットを設定すると、更に好適である。
例えば、アンカーフレーム数1のGOPと、アンカーフレーム数10のGOPとがが連続していた場合、2GOPの合計アンカーフレーム数が11となり、この2GOPを加えて、2つのデコードユニットを構成することができない。このため、「アンカーフレーム数1+1」「アンカーフレーム数5+1」「アンカーフレーム数5+1」の構成でデコードが行われてしまい、デコード遅れが発生してしまう。
そこで、例えば、前のデコードユニットのアンカーフレーム数と比較して、2以上多いアンカーフレームを含まないようにデコードユニットを設定するものとした場合、2GOPの合計アンカーフレーム数が11であるとき、「アンカーフレーム数1+1」「アンカーフレーム数3+1」「アンカーフレーム数3+1」「アンカーフレーム数4+1」の構成でデコードユニットが構成されて、デコードが実行されるので、デコード遅れは発生しない。
以上説明した処理(間引き処理が2段階である場合と1段階のみである場合のいずれの場合も)においては、HDD16に記録されている圧縮符号化データに対して、HDD16から読み出すデータとして有効であるか否かを示す読み出し用のフラグ群、デコードのスケジューリングにおいて有効であるか否かを示すデコード用のフラグ群、デコードされたデータを表示するスケジューリングにおいて有効であるか否かを示す表示用のフラグ群等をメタデータとして適宜設け、一連のフラグ群を再生速度・方向に応じて自動的に更新することによりスケジューリングを管理することも可能である。
このとき、過去の可変速再生処理に用いた一連のスケジューリング、フラグ群の更新情報を、別途スケジューリングのメタデータ(履歴情報)として管理することも可能であり、必要に応じて、圧縮符号化データ中にシンタックスとして記述したり、記録媒体であるHDD16等に別途記録したりしても良い。
また、デコーダ数、バンク数、デコーダID等をメタデータ(構成履歴情報)として管理することも可能である。さらに、再生速度、再生方向等をメタデータ(再生履歴情報)として管理することも可能である。このとき、これらメタデータを、必要に応じて圧縮符号化データ中にシンタックスとして記述したり、記録媒体であるHDD16等に別途記録したりしても良い。
このようなメタデータ(履歴情報)を参照することにより、過去に行われたスケジューリング処理を再利用することができ、更に正確に高速にスケジューリング処理を実行することが可能となる。
なお、このようなメタデータは、例えば、データベースとして外部装置で管理するような構成にしてもよい。
なお、上述の実施の形態においては、デコーダ22乃至デコーダ24が、HDD16に記録されている圧縮符号化データを、完全にデコードしない(中途段階までデコードする)場合においても、本発明は適用可能である。
具体的には、例えば、デコーダ22乃至デコーダ24が、可変長符号に対する復号および逆量子化のみを行い、逆DCT変換を実行しない場合や、逆量子化を行うが可変長符号に対する復号を行わない場合などにおいても、本発明を適用することができる。このような場合、例えば、デコーダ22乃至デコーダ24は、例えば、符号化処理および復号処理処理においてどの段階(例えば逆量子化の段階)まで処理が行われたかを示す履歴情報を必要に応じて生成し、不完全に復号されたデータに対応付けて出力することができるようにしても良い。
さらに、上述の実施の形態においては、HDD16に、不完全に符号化されたデータ(例えば、DCT変換および量子化が行われているが、可変長符号化処理が行われていないデータなど)と、必要に応じて、符号化処理および復号処理の履歴情報が記憶されており、デコーダ22乃至デコーダ24が、CPU20の制御に基づいて、供給された不完全に符号化されたデータをデコードし、ベースバンド信号に変換することができるような場合においても、本発明は適用可能である。
具体的には、デコーダ22乃至デコーダ24が、例えば、DCT変換および量子化が行われているが、可変長符号化処理が行われていない不完全に符号化されたデータに対して、逆DCT変換および逆量子化のみを行い、可変長符号に対する復号は実行しない場合などにおいても、本発明を適用することができる。
また、このような場合、例えば、CPU20は、不完全に符号化されたデータに対応付けられてHDD16に記憶されている符号化処理および復号処理の履歴情報を取得し、これらの情報に基づいて、デコーダ22乃至デコーダ24によるデコードのスケジューリングを行うことができるようにしても良い。
さらに、上述の実施の形態においては、HDD16に、不完全に符号化されたデータと、必要に応じて、符号化処理および復号処理の履歴情報が記憶されており、デコーダ22乃至デコーダ24が、CPU20の制御に基づいて、供給された不完全に符号化されたデータを完全にデコードしない(中途段階までデコードする)場合においても、本発明は適用可能である。
また、このような場合も、例えば、CPU20は、不完全に符号化されたデータに対応付けられてHDD16に記憶されている符号化処理および復号処理の履歴情報を取得し、これらの情報に基づいて、デコーダ22乃至デコーダ24によるデコードのスケジューリングを行うことができるようにしても良い。更に、この場合においても、デコーダ22乃至デコーダ24は、符号化処理および復号処理の履歴情報を必要に応じて生成し、不完全に復号されたデータに対応付けて出力することができるようにしても良い。
換言すれば、デコーダ22乃至デコーダ24が、CPU20の制御に基づいて、部分的な復号を行う(復号処理の工程のうちの一部を実行する)場合においても、本発明は適用可能であり、CPU20は、不完全に符号化されたデータに対応付けてHDD16に記憶されている符号化処理および復号処理の履歴情報を取得し、これらの情報に基づいて、デコーダ22乃至デコーダ24によるデコードのスケジューリングを行うことができ、デコーダ22乃至デコーダ24は、符号化処理および復号処理の履歴情報を必要に応じて生成し、不完全に復号されたデータに対応付けて出力することができるようにしても良い。
更に、HDD16には、圧縮符号化されたストリームデータに対応付けて、更に、符号化処理および復号処理の履歴情報を記録するようにしても良く、CPU20は、圧縮符号化されたストリームデータのデコードのスケジューリングを、符号化処理および復号処理の履歴情報に基づいて行うようにしても良い。さらに、デコーダ22乃至デコーダ24が、CPU20の制御に基づいて、圧縮符号化されたストリームデータをデコードして、ベースバンド信号に変換することができるような場合においても、符号化処理および復号処理の履歴情報を必要に応じて生成し、ベースバンド信号に対応付けて出力することができるようにしても良い。
なお、上述の実施の形態においては、再生装置1が、それぞれ、複数のデコーダを有しているものとして説明したが、デコーダが、それぞれ、独立した装置として構成されている場合においても、本発明は適用可能である。
このとき、独立した装置として構成されているデコーダは、圧縮符号化データの供給を受けてこれを復号し、表示または出力するのみならず、上述した場合と同様にして、圧縮符号化データの供給を受け、中途段階まで部分的に復号して、符号化および復号の履歴情報とともに外部に出力したり、部分的に符号化されたデータの供給を受け、復号処理を行い、ベースバンド信号に変換して外部に出力したり、部分的に符号化されたデータの供給を受け、中途段階まで部分的に復号して、符号化および復号の履歴情報とともに外部に出力するようにしても良い。
さらに、上述の実施の形態においては、CPU11およびCPU20がそれぞれ別の形態で構成されているが、CPUの構成は、これに限らず、例えば、CPU11およびCPU20を、再生装置1全体を制御する1つのCPUとして構成する形態も考えられる。また、CPU11およびCPU20がそれぞれ独立して構成されている場合であっても、CPU11およびCPU20を1つのチップとして構成するようにしてもよい。
更に、CPU11およびCPU20がそれぞれ独立して構成されている場合、上述の実施の形態においてCPU11が実行した処理の少なくとも一部を、例えば、時分割で、CPU20が実行することができるようにしたり、CPU20が実行した処理の少なくとも一部を、例えば、時分割で、CPU11が実行することができるようにしてもよい。すなわち、CPU11およびCPU20には、分散処理が可能なプロセッサを用いるようにしても良い。
また、例えば、再生装置1をネットワークに接続可能な構成とし、上述の実施の形態において、CPU11またはCPU20が実行した処理の少なくとも一部を、ネットワークを介して接続されている他の装置のCPUにおいて実行させることができるようにしても良い。
同様に、上述の実施の形態においては、メモリ13およびメモリ21がそれぞれ別の形態で構成されているが、これに限らず、メモリ13およびメモリ21を、再生装置1において1つのメモリとして構成する形態も考えられる。
さらに、上述の実施の形態においては、HDD16、デコーダ22乃至デコーダ24、および、セレクタ25を、それぞれ、ブリッジおよびバスを介して接続し、再生装置として一体化されている場合について述べたが、本発明はこれに限らず、例えば、これらの構成要素のうちの一部が、外部から有線または無線で接続される場合や、これらの構成要素が、この他、種々の接続形態で相互に接続される場合にも適用することができる。
さらに、上述の実施の形態においては、圧縮されたストリームデータがHDDに記憶されている場合について述べたが、本発明はこれに限らず、例えば、光ディスク、光磁気ディスク、半導体メモリ、磁気ディスク等の種々の記録媒体に記録されたストリームデータに対して再生処理を行う場合にも適用することができる。
さらに、上述の実施の形態においては、CPU20、メモリ21、メモリ18、デコーダ22乃至デコーダ24、および、セレクタ25を、同一の拡張カード(例えば、PCIカード、PCI−Expressカード)に搭載する形態に限らず、例えばPCI−Expressなどの技術によりカード間の転送速度が高い場合には、これらの構成要素を、それぞれ別の拡張カードに搭載するようにしてもよい。
また、本発明は、例えば、H264/AVCなどの他の符号化方法においても適用可能であることはいうまでもない。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。この場合、例えば、図1を用いて説明した再生装置1は、図65に示されるようなパーソナルコンピュータ201により構成される。
図65において、CPU(Central Processing Unit)211は、ROM(Read Only Memory)212に記憶されているプログラム、または記憶部218からRAM(Random Access Memory)213にロードされたプログラムにしたがって、各種の処理を実行する。RAM213にはまた、CPU211が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU211、ROM212、およびRAM213は、バス214を介して相互に接続されている。このバス214にはまた、入出力インタフェース215も接続されている。
入出力インタフェース215には、キーボード、マウスなどよりなる入力部216、ディスプレイやスピーカなどよりなる出力部217、ハードディスクなどより構成される記憶部218、モデム、ターミナルアダプタなどより構成される通信部219が接続されている。通信部219は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース215にはまた、必要に応じてドライブ220が接続され、磁気ディスク231、光ディスク232、光磁気ディスク233、もしくは、半導体メモリ234などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部218にインストールされる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図65に示されるように、装置本体とは別に、ユーザにプログラムを供給するために配布される、プログラムが記憶されている磁気ディスク231(フロッピディスクを含む)、光ディスク232(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク233(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリ234などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに供給される、プログラムが記憶されているROM212や、記憶部218に含まれるハードディスクなどで構成される。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 再生装置, 11 CPU, 16 HDD, 20 CPU, 22乃至24 デコーダ, 25 セレクタ, 71 入力処理部, 72 アドレス管理テーブル, 73 エレメンタリストリームアドレス決定部, 74 メモリコントローラ, 75 入力バッファ, 76 コントロールバス, 77 デコード処理部, 78 書き込み画アドレス決定部, 79 参照画アドレス決定部, 80 出力アドレス決定部, 81 メモリコントローラ, 82 ビデオバンクメモリ