以下、図を参照して、本発明の実施の形態について説明する。
図1は、再生装置1のハードウェア構成を示すブロック図である。
CPU(Central Processing Unit)11は、ノースブリッジ12に接続され、例えば、HDD(Hard disk Drive)16に記憶されているデータの読み出しなどの処理を制御したり、CPU23が実行するデコードのスケジューリング、デコードおよび表示出力の制御などの処理の開始、変更、または終了を指令するためのコマンドを生成し、出力する。ノースブリッジ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のデータの書き込みおよび読み出しを制御するとともに、操作入力部21から供給されるユーザの操作入力を受け、ノースブリッジ12を介して、CPU11に供給する。HDD16には、圧縮符号化されたストリームデータが記憶されている。
更に、ノースブリッジ12には、AGP(Accelerated Graphics Port)バス19も接続されている。CPU11は、ノースブリッジ12およびAGPバス19を介して、グラフィックコントローラ20を制御し、ユーザの操作入力を補助するためのGUI(Graphic User Interface)の表示を制御することができる。グラフィックコントローラ20は、図示しない表示部または外部の表示装置と接続されており、CPU11の制御に基づいて、図示しない表示部または外部の表示装置の表示処理を制御する。
PCIブリッジ17は、コマンドバッファ31およびリザルトバッファ32を内部に備えるとともに、CPU11の制御に基づいてHDD16から読み出されたストリームデータをバッファリングするメモリ18が接続されている。PCIブリッジ17は、CPU11の制御に基づいてHDD16から読み出されたストリームデータを、メモリ18に供給して保存させることができるとともに、CPU23の制御に基づいて、メモリ18に保存されているストリームデータを読み出して、デコーダ26に接続されているメモリ25に供給する。また、PCIブリッジ17は、PCIバス14またはコントロールバス22を介したコマンドまたはリザルトに対応する制御信号の授受を制御する。
コマンドバッファ31は、CPU11から、ノースブリッジ12およびPCIバス14を介してコマンドの書き込みを受けるとともに、CPU23から、コントロールバス22を介して、書き込まれているコマンドが読み出されるようになされている。また、リザルトバッファ32は、コントロールバス22を介して、CPU23によりコマンドに対するリザルトの書き込みを受けるとともに、CPU11から、ノースブリッジ12およびPCIバス14を介して、書き込まれているリザルトが読み取られるようになされている。
メモリ18は、PCIブリッジ17の制御に基づいて、HDD16により読み出された、圧縮符号化されたストリームデータを記憶するものであり、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等で構成されている。
CPU23は、コントロールバス22を介して、CPU11によりPCIブリッジ17のコマンドバッファ31に書き込まれたコマンドを読み取り、このコマンドにしたがって、PCIブリッジ17、メモリ18、メモリ25、および、デコーダ26が実行する処理を制御する。メモリ24は、CPU23の処理に必要なデータを記憶する。
デコーダ26は、CPU23の制御に基づいて、供給された圧縮符号化されたストリームデータをデコードし、非圧縮の映像信号を出力する。デコーダ26は、1フレームが表示される表示時間よりも充分短い時間に1フレームをデコードすることができる。デコーダ26にはメモリ25が接続されている。メモリ25には、PCIブリッジ17から供給され、メモリ18に保存されている圧縮符号化されたストリームデータを一時保存し、デコーダ26に供給するとともに、デコーダ26によりデコードされた非圧縮の映像信号を保持することが可能なようになされている。また、デコーダ26は、再生装置1に含まれない独立した装置として設けられていても良い。
なお、図1の再生装置1は、1つの装置として構成されていても良いし、複数の装置によって構成されるようにしても良い。例えば、図1の再生装置のうち、CPU11、ノースブリッジ12、メモリ13、サウスブリッジ15、HDD16、AGP7バス19、グラフィックコントローラ20、および、操作入力部21の全ての部分またはそのうちの一部が、パーソナルコンピュータの構成のうちの一部であるとし、PCIカード、PCI−Expressカードなどの拡張カード、または、拡張ボードに、PCIバス14、PCIブリッジ17、メモリ18、コントロールバス22、CPU23、メモリ24、メモリ25、および、デコーダ26の機能を備えさせ、パーソナルコンピュータに拡張カードを装着して再生装置1として機能するようにしても良い。また、これらを、さらに複数の装置に分割して、再生装置1を構成するようにしても良い。
次に、再生装置1の動作について説明する。
HDD16には、MPEGのLong GOP方式で圧縮された圧縮映像のデータが記憶されている。
CPU11は、操作入力部21から入力されたユーザの操作入力に基づいて、圧縮符号化ストリームの復号再生のための処理を制御する。例えば、ユーザは、グラフィックコントローラ20の処理により、図示しない表示装置または表示部に表示される図2に示されるようなGUIを参照して、ストリームの再生を指令する。
図2に示される表示画面においては、再生可能なストリーム、すなわち、HDD16に蓄積されているストリームが、例えば、タグやアイコンなどで表現されて、一覧表示されるとともに、ストリーム中の再生位置を指令するためのタイムライン(Time line)41-1乃至41-5および表示フレーム位置指示ライン42が表示されている。ユーザが、所望のストリームのスクラブ再生を指令する場合、例えば、マウスなどの入力デバイスを用いて、タイムライン41-1乃至41-5のうちのいずれかの位置に再生させたいストリームのタグなどを貼り付けることにより、スクラブ再生を行うストリームを指定することができ、表示フレーム位置指示ライン42を移動することにより、表示するフレームの位置を変更することができる。表示フレーム位置指示ライン42がゆっくり動かされた場合、フレームが連続して再生され、表示フレーム位置指示ライン42が速く動かされた場合、数フレームおきの再生処理が実行され、何フレームごとに再生されるかは、その表示フレーム位置指示ライン42の移動速度によって決まる。また、再生開始位置の変更が指令される場合、ユーザは、表示フレーム位置指示ライン42を所定の速度以上に速く移動させればよい。更に、逆転再生が指令される場合、ユーザは、表示フレーム位置指示ライン42を逆方向(図中左方向)に所望の速度で移動させればよい。
なお、図2においては、タイムライン(Time line)41-1乃至41-5が5つ用意されるものとして図示されているが、タイムラインの数は、5つ以外のいずれの数であってもよいことは言うまでもない。
CPU11は、サウスブリッジ15およびノースブリッジ12を介して、操作入力部12から供給されたユーザの操作入力を基に、ノースブリッジ12を介して、サウスブリッジ15を制御して、HDD16から、ユーザにより指定された圧縮符号化されたストリームデータを読み出させ、ユーザが指令した再生位置のフレームをデコードして再生するために必要な部分を、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させる。このとき、ストリームデータは、基本的には、1GOP単位でメモリ18に転送されるが、ストリームの転送単位の決定方法の詳細については後述する。
更に、CPU11は、1GOPのデータのメモリ18への転送を完了したことを示すGOP転送完了コマンド、再生スピード(再生方向を示す情報を含む)を示す情報、デコード開始を指令するコマンド、または、表示の開始を指令するコマンドなどを、ノースブリッジ12およびPCIバス14を介して、PCIブリッジ17のコマンドバッファ31に書き込む。
CPU23は、PCIブリッジ17のコマンドバッファ31に書き込まれたCPU11からのコマンドを基に、圧縮符号化されたストリームデータのデコードおよび表示のスケジュールを決定する。具体的には、CPU23は、圧縮符号化されたストリームデータのメモリ18からメモリ25への転送のタイミング、圧縮符号化されたストリームデータのメモリ25からデコーダ26への入力のタイミング、フレームごとのデコードのタイミング、および、デコードされたピクチャの出力、すなわち、表示のタイミングを決定する。
すなわち、CPU23は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化されたストリームデータを、決定されたスケジュールに基づいて、メモリ25に供給し、デコーダ26に供給させる。
CPU23は、デコーダ26を制御して、メモリ25を介して供給された圧縮符号化されたデータをデコードさせる。デコーダ26は、供給された圧縮符号化されたストリームデータをデコードして、非圧縮のベースバンド画像データを生成して、出力する。
具体的には、CPU23は、デコーダ26に、メモリ25に供給されたGOPのIピクチャおよびPピクチャのうちの少なくとも一部を優先的にデコードさせ、得られた非圧縮のベースバンド画像データをメモリ25に蓄積させるように制御を行う。すなわち、CPU23は、CPU11から、フレームの表示コマンドの供給を受けた場合、メモリ25に表示するべき非圧縮のベースバンド画像データが存在すれば、それを出力させ、存在しなければ、適宜、メモリ25に蓄積された非圧縮のベースバンド画像データを参照画像として利用して、表示されるフレームをデコードして、非圧縮のベースバンド画像データを生成して、出力させるように、デコーダ26を制御する。
デコーダ26は、1フレームが表示される表示時間よりも充分短い時間に1フレームをデコードすることができるので、表示されるフレームのデコードのための処理を行っていない間に、メモリ25に蓄積されているGOPのIピクチャおよびPピクチャを優先的にデコードし、得られた非圧縮のベースバンド画像データをメモリ25に蓄積させることができる。CPU11から表示コマンドが送信された場合、表示されるフレーム自体、または、表示されるフレームの参照画像が、すでにメモリ25に蓄積されていれば、メモリ25に蓄積されているベースバンド画像信号を出力したり、参照画像として用いることができる。したがって、ピクチャによってデコードの優先順位を付けない場合と比較して、特に、表示開始フレームにおいて、高速にデコード処理を行うことが可能となる。
すなわち、再生装置1においては、1GOP分のデータを表示の指令に先駆けて転送することができるので、先行されて転送されたGOPに含まれるGOPに含まれるIピクチャおよびPピクチャのうちの少なくとも一部を優先的にデコードさせることができる。そして、所定のフレームを表示したいときには、そのフレームの表示を指令するコマンドが発生され、予めデコードされているIピクチャおよびPピクチャを用いて指定されたフレームが表示されるので、表示を指令するコマンドの発生からデコード処理終了までの時間を短縮することができ、応答性が向上する。
したがって、ユーザにより、高速に表示フレーム位置指示ライン42の移動が指令され、1GOPにつき1frameしか表示が行わないような場合、GOPすべてのフレームを転送するより、再生されるフレームをデコードするための必要最低限のフレームのみを転送したほうが効率がよい。しかしながら、その直後に連続した再生が指令され、対応するGOPのその他のデータが必要となる場合もある。このとき、最低限のデータ(すなわち、表示されるフレームおよびそのデコードに必要となるデータ)しか転送していないと、不足しているデータを追加して転送する必要が生じる。このように、高速表示時に必要最低限のフレームのみを転送しつつ、必要に応じてデータを追加で転送するような制御では、データ管理が複雑になってしまう。このため、CPU11は、フレームの転送を、基本的にGOP単位に行うように制御している。
すなわち、CPU11は、表示するフレームが含まれるGOPのメモリ18への転送を制御した後、表示するフレームを特定する表示コマンドを送信する。
次に、図3に示される機能ブロック図を参照して、CPU11が有する機能について説明する。
CPU11は、操作入力取得部61、転送GOP決定部62、転送単位決定部63、GOP転送タイミング制御部64、転送完了コマンド送出部65、リザルト取得部66、および、表示コマンド送出部67を含む機能を有している。
操作入力取得部61は、サウスブリッジ15およびノースブリッジ12を介して操作入力部21から供給されるユーザの操作入力を取得し、ユーザの操作入力を示す情報を、必要に応じて、転送GOP決定部62、または、転送単位決定部63に供給する。
転送GOP決定部62は、操作入力取得部61により供給されたユーザの操作入力を基に、フレーム表示順をスケジューリングして、再生出力されるフレームを求め、メモリ18に転送するべきGOPを決定し、転送単位決定部63、および、GOP転送タイミング制御部64に通知する。
転送単位決定部63は、操作入力取得部61により供給されたユーザの操作入力、および、転送GOP決定部62から通知された転送するべきGOPを示す情報を基に、転送するべきGOPのデータ転送単位を決定する。
上述したように、フレームデータの転送は、基本的にGOP単位で行われるが、表示されるフレームがGOPの先頭のB0,B1である場合、図4に示されるように、前のGOPのフレームを参照するため、例外処理が必要となる。
特に、再生フレームが連続しない場合、例えば、図5の図中αで示される位置から図中βで示される位置へ移動するように、表示フレーム位置指示ライン42が高速に移動されているような場合、完全にGOP単位で転送を実行すると、GOP(n)とGOP(n+1)の2GOP分の転送を行う必要がある。しかしながら、図2を用いて説明したようなGUI画面を用いたスクラブ再生においては、再生位置が高速で移動することは頻繁に行われており、図2を用いて説明したようなGUI画面において表示フレーム位置指示ライン42が高速で移動されている状態においては、図中βで示されるフレームの次に表示されるフレームがGOP(n+1)以外のGOPに含まれるフレームである可能性が高く、その場合においては、GOP(n+1)のデータをすべて転送すると無駄が多くなってしまう。
そのため、CPU11は、例外処理として、表示されるフレームがGOPの先頭のB0,B1である場合、表示するフレームがあるGOPの前のGOPに、表示するフレームがあるGOPのI2,B0,B1を加えた形で転送するように、データ転送を制御する。また、前のGOPにI2,B0,B1を付加してデータ転送し、βに示されるフレームを表示した後、通常再生が指令されたり、表示フレーム位置指示ライン42の移動量が少なくなり、GOP(n+1)に含まれるフレーム、例えば、図中γで示されるフレームの表示が指令された場合に、通常通り、GOP(n+1)を転送しても、データ転送の冗長部分はI2,B0,B1の分だけで、制御も複雑にならない。このことにより、データ転送の無駄が少なくなり、データ転送効率が向上する。
GOP転送タイミング制御部64は、必要に応じて、FIFOのキューを用いて、メモリ18に蓄積されているGOPを管理することにより、GOPのメモリ18への転送のタイミングを制御する。転送タイミング制御の詳細については、後述する。
転送完了コマンド送出部65は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、転送完了コマンドを送出する。転送完了コマンド送出タイミング制御の詳細については、後述する。
リザルト取得部66は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのリザルトバッファ32からコマンドに対するリザルトを取得する。
表示コマンド送出部67は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、表示コマンドを送出する。表示コマンド送出タイミング制御の詳細については、後述する。
そして、CPU23は、コマンド取得部101、メモリ間転送制御部102、デコードスケジュール処理部103、デコード制御部104、および、リザルト送出部105を含む機能を有している。
コマンド取得部101は、CPU11の転送完了コマンド送出部65または表示コマンド送出部67により送出され、PCIブリッジ17のコマンドバッファ31に保持されているコマンドを、コントロールバス22を介して取得する。
メモリ間転送制御部102は、コマンド取得部101により取得された転送完了コマンドおよび表示コマンドに基づいて、メモリ18に転送されたそれぞれのGOPの、メモリ25への転送を制御する。
デコードスケジュール処理部103は、コマンド取得部101により取得された転送完了コマンドおよび表示コマンドに基づいて、メモリ間転送制御部102によりメモリ25への転送が制御されたそれぞれのGOPに含まれるフレームのデコードスケジュールを決定する。デコードスケジュール処理部103は、表示のために必要なデコード処理が行われない時間を用いて、メモリ25に保持されているフレームのうちのIピクチャおよびPピクチャのうちの少なくとも一部が優先的にデコードされるように、デコードのスケジュールを行う。また、デコードスケジュール処理部103は、先行してデコードされ、メモリ25に蓄積されているIピクチャおよびPピクチャを用いて、表示が指令されたフレームのベースバンド画像データが迅速に出力されるように、デコードのスケジュールを行う。
デコード制御部104は、デコードスケジュール処理部103によるデコードスケジュールに基づいて、デコーダ26によるデコード処理を制御する。
リザルト送出部105は、コマンド取得部101により取得された転送完了コマンドおよび表示コマンドに対するリザルトを、コントロールバス22を介して、PCIブリッジ17のリザルトバッファ32に送出する。
次に、図3を用いて説明したGOP転送タイミング制御部64が実行するGOP転送タイミング制御、転送完了コマンド送出部65が実行する転送完了コマンド送出タイミング制御、および、表示コマンド送出部67が実行する表示コマンド送出タイミング制御の詳細について説明する。
再生装置1においては、CPU11の制御に基づいて、HDD16に蓄積されているフレームデータが、メモリ18に転送された後、CPU23の制御に基づいて、メモリ25に転送され、デコードされるようになされている。このように、HDD16に蓄積されているフレームデータを直接メモリ25に転送せず、一度、メモリ18に転送することにより、メモリ25に蓄積することが可能なデータ量が少ない場合であっても、デコード処理ができるだけ遅延しないようにすることができる。
例えば、メモリ25に蓄積可能なデータ量が5GOP分である場合、短い区間で正方向と逆方向の再生を連続して指令するトランジェント再生等における再生方向の反転のことも考えると、使用しないデータは、できるだけ供給されないことが望ましい。しかしながら、HDD16からのデータの読み出しはメモリからの読み出しと比較して安定しておらず、また、PCIバス14も、GOPデータの転送のみに占有されておらず、他のデバイスからの割り込みなどが発生する場合などもある。これらのため、例えば、再生速度が変更されたり、再生方向が反転された場合や、再生開始位置が変更された場合など、HDD16に蓄積されているフレームデータを直接メモリ25に高速に安定して転送することができるとは限らない。
そこで、外部からの割り込みがなく、メモリ25への安定した転送が期待できるメモリ18を中間バッファとして利用することにより、メモリ25に蓄積することが可能なデータ量が少ない場合であっても、安定したデコード処理を行うことが可能となる。
また、GOP転送タイミング制御部64は、現在表示が指令されているフレームを含むGOPがまだ転送されていない場合、対応するGOPの転送を制御するのみならず、過去の状況から判断して連続した再生であると判断される場合は、その再生方向に応じて、次に転送される可能性の高いGOPを先行して転送するように、データ転送を制御するようにしてもよい。
具体的には、GOP転送タイミング制御部64は、連続した正方向の再生処理が実行されていると判断した場合、時間的に次のGOPに含まれるフレームの表示を指令するよりも所定の期間だけ(例えば、5フレーム分)先行して、次のGOPの転送を開始させる。また、GOP転送タイミング制御部64は、同様にして、連続した逆方向の再生が実行されていると判断した場合、時間的に前のGOPに含まれるフレームの表示を指令するよりも所定の期間だけ(例えば、8フレーム分)先行して、前のGOPの転送を開始させる。
ここで、正方向と逆方向の再生において、次に表示されると予測されるGOPを先行して転送するタイミングは、同一の所定の期間だけ先行するようにしてもよい。しかしながら、正方向と比較して、参照画像の枚数が多いフレームが先に表示される可能性が高い逆方向の再生における場合のほうが、より多くの時間だけ先行して、次に表示されると予測されるGOPを転送するようにすると好適である。
これにより、デコーダ26は、次に表示が指令されると予想されるGOPのIピクチャおよびPピクチャのうちの少なくとも一部を優先的にデコードして、それらのベースバンド画像信号を、これらの画像およびこれらを参照してデコードされる画像の表示の指令に先駆けて、メモリ25に蓄積しておくことができる。したがって、表示が指令された画像を、その参照画像フレームから順次デコードしていく場合と比較して、より高速にデコード処理を実行することが可能となる。
なお、連続して再生されていない、すなわち、例えば、1GOPに1フレームも表示されないような非常に高速の再生処理がなされている場合など、非連続の再生が指令されている場合においては、予め再生方向の次のGOPを転送しても、無駄になる可能性が高いので、その場合は、先行した転送処理は行われない。
このようにして、GOP転送タイミング制御部64が、GOPの転送を制御するためには、メモリ18に現在蓄積されているGOPを認識する必要がある。そのため、GOP転送タイミング制御部64は、例えば、FIFOのキューを用いて、メモリ18に蓄積されているGOPを管理している。
また、上述したように、再生装置1においては、CPU11のGOP転送タイミング制御部64の制御に基づいて、HDD16に蓄積されているフレームデータが、メモリ18に転送された後、メモリ25に転送され、デコードされるようになされている。このように、2回の転送を行うために、データ転送が間に合わない場合がある。
そこで、メモリ18は、メモリ25と比較して、充分にデータ容量が多いものとしておき、GOP転送タイミング制御部64は、再生中のフレームを含むGOPの途中(例えば、正方向の再生の場合、GOPの最後から5フレーム以内、逆方向の再生の場合、GOPの最初から8フレーム以内)である第1のタイミングとは異なる第2のタイミングとして、再生中のフレームのGOPの変わり目において、その次に転送される可能性のあるGOPを先行してメモリ18に転送するものとする。GOP転送タイミング制御部64は、再生中のフレームを含むGOPの途中である第1のタイミングにおいて、次に再生される可能性の高いGOPがまだ転送されていない場合、その転送を開始するのは、上述した場合と同様である。
また、このとき、第2のタイミングにおいて次に再生される可能性の高いGOPの転送が開始された場合であっても、第1のタイミングにおいて次に再生される可能性の高いGOPの転送が開始された場合であっても、データ転送完了コマンドは、第1のタイミングにおいて送信されるものとすると、必要以上に、メモリ25に先行してデータが送信されてしまうことがなくなり、好適である。
これにより、データの転送が安定し、表示の指令に対するレスポンスが向上するが、例えば、メモリ18に先行して転送されたGOPが、転送方向の変更や転送速度の変更などにより再生されない場合でも、テータ転送完了コマンドが送信されていなければ、そのGOPは、メモリ25には転送されないので、メモリ25を有効に利用することが可能となる。
また、このとき、コマンドを送信する処理や、現在再生中のフレームを含むGOPの次に再生される可能性の高いGOPを転送する処理と比較して、GOPの変わり目において、さらにその次に転送される可能性のあるGOPを先行して送信する処理の優先度を下げるようにすると更に好適である。
すなわち、表示コマンドなどのコマンドを送信する処理や、現在再生中のフレームを含むGOPの次に再生される可能性の高いGOPを転送する処理と比較して、GOPの変わり目でデータを先行して転送する処理は、次使うであろうデータをあらかじめ転送しておくという処理のため、緊急性がない。
よって優先度をつけることによって、コマンドの送信など、絵を表示するために必要な処理のレスポンスを落とすことなく、データ転送の効率を向上させることが可能となる。また、表示のために必要なデータの転送処理や、再生中のフレームを含むGOPの次に再生される可能性の高いGOPを転送する処理も、コマンド送信と同等に、優先度を高く設定することにより、GOPの変わり目でデータだけを転送する処理をバックグラウンドでおこなっている最中に、緊急度の高い他のGOPを転送する必要が生じた場合には、その処理の優先度をあげ、必要なGOPの転送のレスポンスが遅くならないようにすることが可能となる。
次に、図6のフローチャートを参照して、CPU11の処理1について説明する。
ステップS1において、CPU11の操作入力取得部61は、サウスブリッジ15およびノースブリッジ12を介して操作入力部21から供給されるユーザの操作入力を受け、転送GOP決定部62、および、転送単位決定部63に供給する。
転送GOP決定部62は、ステップS2において、フレーム表示順をスケジューリングし、ステップS3において、表示するフレームを指定して、メモリ18に転送するべきGOPを決定し、転送単位決定部63、および、GOP転送タイミング制御部64に通知する。
ステップS4において、図8を用いて後述する転送単位決定処理が実行される。
ステップS5において、図9または図10を用いて後述する転送タイミング決定処理が実行される。
ステップS6において、GOP転送タイミング制御部64は、いずれかのGOPのデータの転送処理が完了したか否かを判断する。
ステップS6において、いずれかのGOPのデータの転送処理が完了したと判断された場合、ステップS7において、GOP転送タイミング制御部64は、GOPの転送完了コマンドの送信を、転送完了コマンド送出部65に指令する。転送完了コマンド送出部65は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、転送完了コマンドを送出する。
ステップS6において、現在転送処理中のGOPのデータの転送処理が完了していないと判断された場合、または、ステップS7の処理の終了後、ステップS8において、GOP転送タイミング制御部64は、リザルト取得部66から供給される信号を基に、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのリザルトバッファ32から、次に表示されるフレームを含むGOPの転送終了のリザルトを取得したか否か、または、取得済みであるか否かを判断する。ステップS8において、次に表示されるフレームを含むGOPの転送終了のリザルトは取得されていないと判断された場合、転送終了のリザルトが取得されたと判断されるまで、ステップS8の処理が繰り返される。
ステップS8において、次に表示されるフレームを含むGOPの転送終了のリザルトは取得されていると判断された場合、ステップS9において、GOP転送タイミング制御部64は、表示コマンド送出部67に、次に表示されるフレームの表示コマンドの送出を指令する。表示コマンド送出部67は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、表示コマンドを送信する。
ステップS10において、転送GOP決定部63は、操作入力取得部61から供給されるユーザの操作入力を示す信号を基に、ユーザから、例えば、図2を用いて説明した表示フレーム位置指示ライン42の位置の変更や、表示されるストリームの変更などの、フレーム表示順の変更を伴う操作が入力されたか否かを判断する。ステップS10において、フレーム表示順の変更を伴う操作が入力されたと判断された場合、処理は、ステップS2に戻り、それ以降の処理が繰り返される。
ステップS10において、フレーム表示順の変更を伴う操作が入力されていないと判断された場合、ステップS11において、転送GOP決定部63は、操作入力取得部61から供給されるユーザの操作入力を示す信号を基に、表示処理が終了されるか否かを判断する。ステップS11において、表示処理が終了されないと判断された場合、処理は、ステップS3に戻り、それ以降の処理が繰り返される。ステップS11において、表示処理が終了されると判断された場合、処理は終了される。
このようにして、CPU11において、ユーザの操作入力に基づいて、フレーム表示順が決定されて、表示コマンドの送信に先駆けて対応するGOPのIピクチャおよびPピクチャをデコードすることができるようにGOPの転送単位および転送タイミングが決定され、転送が完了された場合に転送完了コマンドが送信され、その後、表示コマンドが送信されるので、表示コマンドが送信されるときには、既に、対応するGOPのIピクチャおよびPピクチャがデコード済みである可能性が高くなり、表示コマンドに対する表示レスポンスが高くなる。
次に、図7のフローチャートを参照して、図6を用いて説明したCPU11の処理と並行して実行されるCPU23の処理について説明する。
ステップS41において、CPU23のコマンド取得部101は、コントロールバス22を介して、PCIブリッジ17のコマンドバッファ31を参照し、GOPの転送完了コマンドを受信したか否かを判断する。ステップS41において、GOPの転送完了コマンドを受信していないと判断された場合、処理は、後述するステップS45に進む。
ステップS41において、GOPの転送完了コマンドを受信したと判断された場合、ステップS42において、コマンド取得部101は、GOPの転送完了コマンドを受信したことを、メモリ間転送制御部102およびリザルト送出部105に通知する。メモリ間転送制御部102は、HDD16からメモリ18へのGOPの転送完了を確認する。そして、リザルト送出部105は、コントロールバス22を介して、PCIブリッジ17のリザルトバッファ32に、GOPの転送完了コマンドに対するリザルトを返す。
ステップS43において、メモリ間転送制御部102は、メモリ18からメモリ25へのGOPの転送を制御する。すなわち、メモリ間転送制御部102は、メモリ18へのGOPの転送が完了されたタイミングではなく、CPU11からGOPの転送完了コマンドを受信したタイミングに基づいて、メモリ18からメモリ25へのGOPの転送を制御する。
ステップS44において、デコードスケジュール処理部103は、メモリ25へ転送されたGOPのアンカーフレームが優先的にデコードされるように、デコードをスケジュールし、スケジュールをデコード制御部104に通知する。デコード制御部104は、デコードスケジュール処理部103によるデコードスケジュールに基づいて、デコーダ26によるデコード処理を制御する。
ステップS41において、GOPの転送完了コマンドを受信していないと判断された場合、または、ステップS44の処理の終了後、ステップS45において、コマンド取得部101は、コントロールバス22を介して、PCIブリッジ17のコマンドバッファ31を参照し、表示コマンドを受信したか否かを判断する。ステップS45において、表示コマンドを受信していないと判断された場合、処理は、後述するステップS48に進む。
ステップS45において、表示コマンドを受信したと判断された場合、ステップS46において、デコード制御部104は、表示されるピクチャを出力するために、デコーダ26およびメモリ25を制御する。
具体的には、例えば、表示が指令されたフレームがIピクチャまたはPピクチャであるとき、デコードが終了されたベースバンド画像データがメモリ25に蓄積されているか否かが検出され、ベースバンド画像データがメモリ25に蓄積されている場合は、そのベースバンド画像データが出力される。また、例えば、表示が指令されたフレームがBピクチャであるとき、そのBピクチャをデコードするために必要な参照画像データが、メモリ25に蓄積されているか否かが検出され、参照画像データがメモリ25に蓄積されている場合は、その参照画像データを用いて、出力されるBピクチャがデコードされる。
ステップS47において、デコード制御部104は、該当するフレームの表示が終了したか否かを判断する。ステップS47において、該当するフレームの表示が終了していないと判断された場合、処理は、ステップS46に戻り、それ以降の処理が繰り返される。
ステップS45において、表示コマンドを受信していないと判断された場合、または、ステップS47において、該当するフレームの表示が終了したと判断された場合、ステップS48において、コマンド取得部101は、コントロールバス22を介して、PCIブリッジ17のコマンドバッファ31を参照することにより、表示処理が終了されるか否かを判断する。ステップS48において、表示処理が終了されていないと判断された場合、処理は、ステップS41に戻り、それ以降の処理が繰り返される。ステップS48において、表示処理が終了されたと判断された場合、処理が終了される。
このような処理により、CPU23は、CPU11の制御に基づいて、メモリ18からメモリ25へのGOPの転送と、デコーダ26によるデコード処理を制御する。そのとき、メモリ25へ転送されたGOPのアンカーフレームが優先的にデコードされるので、表示コマンド受信から、デコードされたベースバンド画像データの出力までのレスポンスが向上する。
次に、図8のフローチャートを参照して、図6のステップS4において実行される、転送単位決定処理について説明する。
ステップS71において、CPU11の転送単位決定部62は、表示するフレームは、GOPの先頭の2枚のBピクチャのうちのいずれかであるか否かを判断する。ステップS71において、表示するフレームは、GOPの先頭の2枚のBピクチャのうちのいずれでもないと判断された場合、処理は、後述するステップS74に進む。
ステップS71において、表示するフレームは、GOPの先頭の2枚のBピクチャのうちのいずれかであると判断された場合、ステップS72において、転送単位決定部62は、このBピクチャが含まれるのは、ストリームの先頭のGOPであるか否か、すなわち、このBピクチャに対する前方向の参照画像が存在しないGOPであるか否かを判断する。ステップS72において、ストリームの先頭のGOPであると判断された場合、処理は、後述するステップS74に進む。
ステップS72において、ストリームの先頭のGOPではないと判断された場合、ステップS73において、転送単位決定部62は、前のGOP、すなわち、このBピクチャに対する前方向の参照画像を含むGOPは転送済みであるか否かを判断する。ステップS73において、前のGOPは転送済みではないと判断された場合、処理は、後述するステップS76に進む。
ステップS71において、表示するフレームは、GOPの先頭の2枚のBピクチャのうちのいずれでもないと判断された場合、ステップS72において、ストリームの先頭のGOPであると判断された場合、または、ステップS73において、前のGOPは転送済みであると判断された場合、ステップS74において、転送単位決定部62は、表示するフレームが含まれるGOPは転送済みであるかを判断する。ステップS74において、表示するフレームが含まれるGOPは転送済みであると判断された場合、処理は、図6のステップS4に戻り、ステップS5に進む。
ステップS74において、表示するフレームが含まれるGOPは転送済みではないと判断された場合、ステップS75において、転送単位決定部62は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、表示するフレームが含まれるGOPの転送の開始を制御し、処理は、図6のステップS4に戻り、ステップS5に進む。
ステップS73において、前のGOPは転送済みではないと判断された場合、ステップS76において、転送単位決定部62は、そのBピクチャが含まれるGOP、換言すれば、表示されるフレームが含まれるGOPは転送済みであるか否かを判断する。
ステップS73において、そのBピクチャが含まれるGOPは転送済みであると判断された場合、ステップS77において、転送単位決定部62は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ前のGOPの転送の開始を制御し、処理は、図6のステップS4に戻り、ステップS5に進む。
ステップS73において、そのBピクチャが含まれるGOPは転送済みではないと判断された場合、ステップS78において、転送単位決定部62は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ前のGOPに加えて、表示されるGOPのI2B0B1の転送の開始を制御し、処理は、図6のステップS4に戻り、ステップS5に進む。
このような処理により、表示されるピクチャがGOP先頭の2枚のBピクチャのうちのいずれかであり、そのBピクチャが含まれているGOPと、その前のGOP(すなわち、表示されるBピクチャをデコードするために必要な参照画像フレームが含まれているGOP)とがいずれも転送されていない場合、一つ前のGOP+I2B0B1が転送される。したがって、現在実行されている再生処理が高速再生処理で、このBピクチャが含まれているGOPの他のフレームが表示されない場合にも、無駄なデータを転送することがなく、更に、高速再生処理ではなく、このBピクチャが含まれているGOPの他のフレームが表示されるために、このBピクチャが含まれているGOPの転送が必要になった場合であっても、転送データの冗長分が少ない。
次に、図9のフローチャートを参照して、図6のステップS5において実行される処理の第1の例である、転送タイミング決定処理1について説明する。
ステップS101において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであるか否かを判断する。ステップS101において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS101において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであると判断された場合、ステップS102において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであるか否か、すなわち、正方向の再生であるか否かを判断する。ステップS102において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであると判断された場合、処理は、後述するステップS106に進む。
ステップS102において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームではない、すなわち、逆方向の再生であると判断された場合、ステップS103において、GOP転送タイミング制御部64は、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームであるか否かを判断する。ステップS103において、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームではないと判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS103において、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームであると判断された場合、ステップS104において、GOP転送タイミング制御部64は、一つ前のGOPのデータは転送中または転送済みであるか否かを判断する。ステップS104において、一つ前のGOPのデータは転送中または転送済みであると判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS104において、一つ前のGOPのデータは転送中ではなく、また、転送済みでもないと判断された場合、ステップS105において、GOP転送タイミング制御部64は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ前のGOPの転送の開始を制御し、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS102において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであると判断された場合、ステップS106において、GOP転送タイミング制御部64は、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームであるか否かを判断する。ステップS106において、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームではないと判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS106において、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームであると判断された場合、ステップS107において、GOP転送タイミング制御部64は、一つ後ろのGOPのデータは転送中または転送済みであるか否かを判断する。ステップS107において、GOP転送タイミング制御部64は、一つ後ろのGOPのデータは転送中または転送済みであると判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS107において、GOP転送タイミング制御部64は、一つ後ろのGOPのデータは転送中または転送済みではないと判断された場合、ステップS108において、GOP転送タイミング制御部64は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ後ろのGOPの転送の開始を制御し、処理は、図6のステップS5に戻り、ステップS6に進む。
このような処理により、次に再生されるフレームが、正方向の再生の場合、GOPの最後から5フレーム以内、逆方向の再生の場合、GOPの最初から8フレーム以内である場合、次に表示されると予測されるGOPが転送されるので、そのGOPに含まれるIピクチャおよびPピクチャを予めデコードしておくことが可能となる。これにより、実際の表示指令に対して、デコード処理が終了するまでにかかる時間が短くなる。
また、上述したように、GOP転送タイミング制御部64は、再生中のフレームを含むGOPの途中(例えば、正方向の再生の場合、GOPの最後から5フレーム以内、逆方向の再生の場合、GOPの最初から8フレーム以内)である第1のタイミングとは異なる第2のタイミングとして、再生中のフレームのGOPの変わり目において、その次に転送される可能性のあるGOPを先行してメモリ18に転送することができるようにしてもよい。その場合においても、GOP転送タイミング制御部64は、再生中のフレームを含むGOPの途中である第1のタイミングにおいて、次に再生される可能性の高いGOPがまだ転送されていない場合、その転送を開始するのは、上述した場合と同様である。
次に、図10のフローチャートを参照して、図6のステップS5において実行される処理の第2の例である、転送タイミング決定処理2について説明する。
ステップS131において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであるか否かを判断する。ステップS131において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであると判断された場合、処理は、ステップS132に進み、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、処理は、後述するステップS139に進む。
ステップS132乃至ステップS138においては、図9のステップS102乃至ステップS108と基本的に同様の処理が実行される。
すなわち、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームではなく、そのGOPの先頭から8フレーム以内のフレームであり、かつ、一つ前のGOPのデータは転送中ではなく、また、転送済みでもないと判断された場合、HDD16からメモリ18への、一つ前のGOPの転送の開始が制御されて、処理は、図6のステップS5に戻り、ステップS6に進む。
そして、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであり、そのGOPの最後から5フレーム以内のフレームであり、かつ、一つ後ろのGOPのデータは転送中または転送済みではないと判断された場合、一つ後ろのGOPのデータの転送が開始され、処理は、図6のステップS5に戻り、ステップS6に進む。
そして、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームではないと判断された場合、一つ前のGOPのデータは転送中または転送済みであると判断された場合、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームではないと判断された場合、または、一つ後ろのGOPのデータは転送中または転送済みであると判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS131において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、ステップS139において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームが含まれていたGOPよりも一つ後ろのGOPに含まれているフレームであるか否か、すなわち、正方向の再生におけるGOPの変わり目であるか否かを判断する。ステップS139において、表示されるフレームは、前に表示されたフレームが含まれていたGOPよりも一つ後ろのGOPに含まれているフレームではないと判断された場合、処理は、後述するステップS141に進む。
ステップS139において、表示されるフレームは、前に表示されたフレームが含まれていたGOPよりも一つ後ろのGOPに含まれているフレームであると判断された場合、ステップS140において、GOP転送タイミング制御部64は、更に一つ後ろのGOPの転送を開始し、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS139において、表示されるフレームは、前に表示されたフレームが含まれていたGOPよりも一つ後ろのGOPに含まれているフレームではないと判断された場合、ステップS141において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームが含まれていたGOPよりも一つ前のGOPに含まれているフレームであるか否か、すなわち、逆方向の再生におけるGOPの変わり目であるか否かを判断する。ステップS141において、前に表示されたフレームが含まれていたGOPよりも一つ前のGOPに含まれているフレームではないと判断された場合、処理は、図6のステップS5に戻り、ステップS6に進む。
ステップS141において、前に表示されたフレームが含まれていたGOPよりも一つ前のGOPに含まれているフレームであると判断された場合、ステップS142において、GOP転送タイミング制御部64は、更に一つ前のGOPの転送を開始し、処理は、図6のステップS5に戻り、ステップS6に進む。
このような処理により、第1のタイミング(例えば、正方向の再生の場合、GOPの最後から5フレーム以内、逆方向の再生の場合、GOPの最初から8フレーム以内)とは異なる第2のタイミングとして、GOPの変わり目に、次に表示されると予測されるGOPの転送を開始することができるので、フレームデータの転送が間に合わずに、表示レスポンスが悪化してしまうことを防止することができる。
また、さらに、第2のタイミングにおいて次に再生される可能性の高いGOPの転送が開始された場合には、そのデータ転送の優先度を表示コマンドなどと比較して下げるようにしてもよい。また、このとき、第2のタイミングにおいて次に再生される可能性の高いGOPの転送が開始された場合であっても、第1のタイミングにおいて次に再生される可能性の高いGOPの転送が開始された場合であっても、データ転送完了コマンドは、第1のタイミングにおいて送信されるものとすると、必要以上に、メモリ25に先行してデータが送信されてしまうことがなくなり、好適である。
すなわち、表示コマンドなどのコマンドを送信する処理や、現在再生中のフレームを含むGOPの次に再生される可能性の高いGOPを転送する処理と比較して、GOPの変わり目でデータを先行して転送する処理は、次使うであろうデータをあらかじめ転送しておくという処理のため、緊急性がない。よって、優先度をつけることにより、コマンドの送信など、絵を表示するために必要な処理のレスポンスを落とすことなく、データ転送の効率を向上させることが可能となる。
次に、図11のフローチャートを参照して、第2のタイミングとして、GOPの変わり目において、その次に転送される可能性のあるGOPをさらに先行してメモリ18に転送させ、その優先度を低くするとともに、データ転送完了コマンドは、例えば、正方向の再生の場合GOPの最後から5フレーム以内、逆方向の再生の場合GOPの最初から8フレーム以内のフレームが再生されるタイミングである第1のタイミングにおいて送信されるものとした場合に実行される、CPU11の処理2について説明する。
ステップS171乃至ステップS174において、図6を用いて説明したステップS1乃至ステップS4と基本的に同様の処理が実行される。
すなわち、サウスブリッジ15およびノースブリッジ12を介して操作入力部21から供給されるユーザの操作入力を受け、フレーム表示順がスケジューリングされて、表示するフレームが指定され、メモリ18に転送するべきGOPが決定されて、図8を用いて説明した転送単位決定処理が実行される。
ステップS175において、図12のフローチャートを用いて説明する、転送タイミング決定処理3が実行される。
ステップS176において、図13のフローチャートを用いて説明する、転送完了送信決定処理が実行される。
そして、ステップS177乃至ステップS179において、図6を用いて説明したステップS9乃至ステップS11と基本的に同様の処理が実行されて、処理が終了される。
すなわち、次に表示されるフレームの表示コマンドが送信され、ユーザの操作入力を示す信号を基に、ユーザから、例えば、図2を用いて説明した表示フレーム位置指示ライン42の位置の変更や、表示されるストリームの変更などの、フレーム表示順の変更を伴う操作が入力されたか否かが判断されて、フレーム表示順の変更を伴う操作が入力されたと判断された場合、処理は、ステップS172に戻り、それ以降の処理が繰り返される。
そして、フレーム表示順の変更を伴う操作が入力されていないと判断された場合、ユーザの操作入力を示す信号を基に、表示処理が終了されるか否かが判断され、表示処理が終了されないと判断された場合、処理は、ステップS173に戻り、それ以降の処理が繰り返される。表示処理が終了されると判断された場合、処理は終了される。
このような処理により、GOPの変わり目において、その次に転送される可能性のあるGOPを先行してメモリ18に転送させ、その優先度を低くするとともに、データ転送完了コマンドは、例えば、正方向の再生の場合GOPの最後から5フレーム以内、逆方向の再生の場合GOPの最初から8フレーム以内のフレームが再生されるタイミングで送信される。これにより、フレームデータの転送が間に合わずに、表示レスポンスが悪化してしまうことを防止することができるとともに、メモリ25へ多くのデータが先行して転送されてしまうことにより、再生方向が変更された場合などに、メモリ25がオーバーフローしてしまったり、デコード処理が間に合わなくなってしまうことを防ぐことができる。
なお、図11のフローチャートを用いて説明した処理と並行してCPU23において実行される処理は、図7を用いて説明した場合と同様であるので、その説明は省略する。
次に、図12のフローチャートを参照して、図11のステップS175において実行される、転送タイミング決定処理3について説明する。
ステップS201において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであるか否かを判断する。ステップS201において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであると判断された場合、処理は、図11のステップS175に戻り、ステップS176に進む。
ステップS201において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、ステップS202において、GOP転送タイミング制御部64は、前に表示されたフレームが含まれていたGOPよりも一つ後ろのGOPに含まれているフレームであるか否か、すなわち、正方向の再生におけるGOPの変わり目であるか否かを判断する。ステップS202において、一つ後ろのGOPに含まれているフレームであると判断された場合、処理は、後述するステップS206に進む。
ステップS202において、一つ後ろのGOPに含まれているフレームではないと判断された場合、ステップS203において、GOP転送タイミング制御部64は、前に表示されたフレームが含まれていたGOPよりも一つ前のGOPに含まれているフレームであるか否か、すなわち、逆方向の再生におけるGOPの変わり目であるか否かを判断する。
ステップS203において、一つ前のGOPに含まれているフレームであると判断された場合、ステップS204において、GOP転送タイミング制御部64は、優先度を下げて、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、更に一つ前のGOPの転送を開始し、処理は、図11のステップS175に戻り、ステップS176に進む。
ステップS203において、一つ前のGOPに含まれているフレームではないと判断された場合、すなわち、表示されるフレームは、前に表示されたフレームの前後のフレームに含まれていないと判断された場合、ステップS205において、GOP転送タイミング制御部64は、転送中である表示するフレームのGOPの転送の優先度を上げ、処理は、図11のステップS175に戻り、ステップS176に進む。
ステップS202において、一つ後ろのGOPに含まれているフレームであると判断された場合、ステップS206において、GOP転送タイミング制御部64は、優先度を下げて、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、更に一つ後ろのGOPの転送を開始し、処理は、図11のステップS175に戻り、ステップS176に進む。
このような処理により、第2のタイミングとして、GOPの変わり目において、その次に転送される可能性のあるGOPをさらに先行してメモリ18に転送させ、その優先度を低くすることができる。
次に、図13および図14のフローチャートを参照して、図11のステップS176において実行される、転送完了送信決定処理について説明する。
ステップS231において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであるか否かを判断する。ステップS231において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、処理は、後述するステップS245に進む。
ステップS231において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームであると判断された場合、ステップS232において、GOP転送タイミング制御部64は、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであるか否かを判断する。ステップS232において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであると判断された場合、処理は、後述するステップS239に進む。
ステップS232において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームではないと判断された場合、ステップS233において、GOP転送タイミング制御部64は、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームであるか否かを判断する。ステップS233において、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームではないと判断された場合、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS233において、表示されるフレームは、そのGOPの先頭から8フレーム以内のフレームであると判断された場合、ステップS234において、GOP転送タイミング制御部64は、1つ前のGOPは転送中であるか否かを判断する。
ステップS234において、1つ前のGOPは転送中であると判断された場合、ステップS235において、GOP転送タイミング制御部64は、転送中の1つ前のGOPのデータ転送の優先度を上げて、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS234において、1つ前のGOPは転送中ではないと判断された場合、ステップS236において、GOP転送タイミング制御部64は、1つ前のGOPは転送済みであるか否かを判断する。
ステップS236において、1つ前のGOPは転送済みであると判断された場合、ステップS237において、GOP転送タイミング制御部64は、1つ前のGOPの転送完了コマンドの送信を、転送完了コマンド送出部65に指令する。転送完了コマンド送出部65は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、1つ前のGOPの転送完了コマンドを送出し、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS236において、1つ前のGOPは転送済みではないと判断された場合、ステップS238において、GOP転送タイミング制御部64は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ前のGOPの転送の開始を制御し、処理は、図11のステップS176に戻り、ステップS177に進む。このとき、一つ前のGOPの転送の優先度は、転送完了コマンドなどと同等に、高く設定される。
ステップS232において、表示されるフレームは、前に表示されたフレームよりも時間的に後方に位置しているフレームであると判断された場合、ステップS239において、GOP転送タイミング制御部64は、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームであるか否かを判断する。ステップS239において、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームではないと判断された場合、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS239において、表示されるフレームは、そのGOPの最後から5フレーム以内のフレームであると判断された場合、ステップS240において、GOP転送タイミング制御部64は、一つ後ろのGOPのデータは転送中であるか否かを判断する。
ステップS240において、一つ後ろのGOPのデータは転送中であると判断された場合、ステップS241において、GOP転送タイミング制御部64は、転送中の1つ後ろのGOPのデータ転送の優先度を上げて、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS240において、一つ後ろのGOPのデータは転送中ではないと判断された場合、ステップS242において、GOP転送タイミング制御部64は、一つ後ろのGOPのデータは転送済みであるか否かを判断する。
ステップS242において、一つ後ろのGOPのデータは転送済みであると判断された場合、ステップS243において、GOP転送タイミング制御部64は、1つ後ろのGOPの転送完了コマンドの送信を、転送完了コマンド送出部65に指令する。転送完了コマンド送出部65は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、1つ後ろのGOPの転送完了コマンドを送出し、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS242において、一つ後ろのGOPのデータは転送済みではないと判断された場合、ステップS244において、GOP転送タイミング制御部64は、サウスブリッジ15、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介した、HDD16からメモリ18への、一つ後ろのGOPの転送の開始を制御し、処理は、図11のステップS176に戻り、ステップS177に進む。このとき、一つ前のGOPの転送の優先度は、転送完了コマンドなどと同等に、高く設定される。
ステップS231において、表示されるフレームは、前に表示されたフレームと同じGOPに含まれているフレームではないと判断された場合、ステップS245において、GOP転送タイミング制御部64は、表示されるフレームを含むGOPの転送完了コマンドの送信を、転送完了コマンド送出部65に指令済みであるか否か、すなわち、転送完了コマンド送出部65は、表示されるフレームを含むGOPの転送完了コマンドを送信したか否かを判断する。ステップS245において、表示されるフレームを含むGOPの転送完了コマンドを送信したと判断された場合、処理は、図11のステップS176に戻り、ステップS177に進む。
ステップS245において、表示されるフレームを含むGOPの転送完了コマンドを送信していないと判断された場合、ステップS246において、GOP転送タイミング制御部64は、表示されるフレームを含むGOPのデータは転送済みであるか否かを判断する。
ステップS246において、表示されるフレームを含むGOPのデータは転送済みではないと判断された場合、ステップS247において、GOP転送タイミング制御部64は、表示されるフレームを含むGOPのデータの転送の優先度を上げて、GOPのデータの転送が完了されるのを待つ。
ステップS246において、表示されるフレームを含むGOPのデータは転送済みであると判断された場合、または、ステップS247の処理の終了後、ステップS248において、GOP転送タイミング制御部64は、表示されるフレームを含むGOPの転送完了コマンドの送信を、転送完了コマンド送出部65に指令する。転送完了コマンド送出部65は、ノースブリッジ12およびPCIバス14を介して、PCIブリッジのコマンドバッファ31に、表示されるフレームを含むGOPの転送完了コマンドを送出し、処理は、図11のステップS176に戻り、ステップS177に進む。
このような処理により、データ転送完了コマンドは、実際のGOPの転送タイミングとはかかわらず、正方向の再生の場合GOPの最後から5フレーム以内、逆方向の再生の場合GOPの最初から8フレーム以内のフレームが再生されるタイミングである第1のタイミングにおいて送信される。
以上説明した処理を実行することにより、大容量のフレームメモリを用意することなく、LONG GOPの圧縮映像データのデコード処理の応答性を向上させることができ、スクラブ再生や正・逆コマ送り再生の制御が簡単にかつ高速に行えるようになる。
なお、ここでは、コーディックの方式としてMPEGを用いた場合を例として説明しているが、フレーム相関を伴う他のコーディック処理を行う場合においても、本発明は適用可能であることはいうまでもない。例えば、AVC(Advanced Video Coding)/H.264などにおいて、本発明は適用可能である。
なお、AVC/H.264のBピクチャは、必ずしも、前方向および後ろ方向の双方向の参照画像を用いるとは限らず、過去から2枚の参照画像を用いて予測しても、未来から2枚の参照画像を用いて予測してもよいが、このような場合を考慮して、本発明を適用することは可能であり、本発明を適用することにより、誤った量子化マトリクスを用いてデコード処理を行ってしまう区間を減少することかでき、画像の劣化を抑制することが可能となる。
なお、AVC/H.264のBピクチャは、必ずしも、前方向および後ろ方向の双方向の参照画像を用いるとは限らず、過去から2枚の参照画像を用いて予測しても、未来から2枚の参照画像を用いて予測してもよいが、このような場合を考慮して、本発明を適用することは可能である。
なお、以上の説明においては、CPU11とCPU23が、PCIブリッジ17のコマンドバッファ31およびリザルトバッファ32を介して、制御情報を授受し、分担して、制御を行うものとして説明したが、例えば、同様の処理を、1つのCPUを用いて実行するようにしても良い。
その場合、CPUが有する機能は、図15の機能ブロック図に示されるように、図3を用いて説明した、操作入力取得部61、転送GOP決定部62、転送単位決定部63、GOP転送タイミング制御部64、表示コマンド送出部67、メモリ間転送制御部102、デコードスケジュール処理部103、および、デコード制御部104と、基本的に同様となる。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図16において、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、CRT,LCDなどよりなるディスプレイ、スピーカなどよりなる出力部217、ハードディスクなどより構成される記憶部218、並びに、モデム、ターミナルアダプタなどより構成される通信部219が接続されている。通信部219は、電話回線やCATVを含む各種のネットワークを介しての通信処理を行う。
入出力インターフェース215にはまた、必要に応じてドライブ220が接続され、磁気ディスク231(フレキシブルディスクを含む)、光ディスク232(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク233(MD(Mini-Disk)(商標)を含む)、もまたは、半導体メモリ234などが適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部218にインストールされる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、図16に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク231、光ディスク232、光磁気ディスク233、または、半導体メモリ234などよりなるパッケージメディアなどにより構成される。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
さらに、上述の実施の形態においては、圧縮されたストリームデータがHDD16に記憶されている場合について述べたが、本発明はこれに限らず、例えば、光ディスク、光磁気ディスク、半導体メモリ、磁気ディスク等の種々の記録媒体に記録されたストリームデータをデコードする場合にも適用することができる。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 再生装置, 11 CPU, 16 HDD, 18 メモリ, 23 CPU, 25 メモリ, 26 デコーダ, 20 グラフィックコントローラ, 21 操作入力部, 61 操作入力取得部, 62 転送単位決定部, 63 転送GOP決定部, 64 GOP転送タイミング制御部, 102 メモリ間転送制御部, 103 デコードスケジュール処理部, 104 デコード制御部