以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の情報処理装置は、複数の符号化ストリームをデコードする情報処理装置(例えば、図5の編集装置81)であって、第1の符号化ストリームをデコードし、前記第1の符号化ストリームが入力された場合、前記第1の符号化ストリームを構成する第1のデコード対象フレームのうちのアンカーフレームのデコードを開始する第1のデコード手段(例えば、図5のデコーダ102−1)と、第2の符号化ストリームをデコードし、前記第2の符号化ストリームが入力された場合、前記第2の符号化ストリームを構成する第2のデコード対象フレームのうちのアンカーフレームのデコードを開始する第2のデコード手段(例えば、図5のデコーダ102−2)と、符号化ストリームを構成するフレームのデコードが指示されてから、前記フレームのデコードが開始されるまでに必要とされる前処理時間のうちの最も長い時間である遅延時間であって、前記第1の符号化ストリームおよび前記第2の符号化ストリームのビットレートのうち、より高いビットレートに対して予め定められている遅延時間だけ、前記第1のデコード対象フレームと前記第2のデコード対象フレームとのデコードの開始を遅延させて、前記第1のデコード対象フレームのデコードと前記第2のデコード対象フレームのデコードとの完了が同期するように前記第1の符号化ストリームおよび前記第2の符号化ストリームのデコードを制御する制御手段(例えば、図6の制御部131)とを備える。
情報処理装置には、前記第1のデコード手段によるデコードにより得られた映像信号と、前記第2のデコード手段によるデコードにより得られた映像信号とを記憶する記憶手段(例えば、図6のメモリ101)をさらに設けることができる。
前記遅延時間は、前記第1の符号化ストリームおよび前記第2の符号化ストリームのフレームの表示周期の長さの整数倍の時間とされ、前記第1のデコード手段には、前記表示周期に同期したクロック信号に基づいて、前記遅延時間から前記表示周期の長さの時間ずつ減算していくことで、前記第1のデコード対象フレームのデコードの開始までの時間をカウント(例えば、図18のステップS126の処理)させ、前記第2のデコード手段には、前記表示周期に同期したクロック信号に基づいて、前記遅延時間から前記表示周期の長さの時間ずつ減算していくことで、前記第2のデコード対象フレームのデコードの開始までの時間をカウントさせる(例えば、図18のステップS126の処理)ことができる。
本発明の一側面の情報処理方法またはプログラムは、複数の符号化ストリームをデコードする情報処理を実行するためのものであって、符号化ストリームを構成するフレームのデコードが指示されてから、前記フレームのデコードが開始されるまでに必要とされる前処理時間のうちの最も長い時間である遅延時間であって、第1の符号化ストリームおよび第2の符号化ストリームのビットレートのうち、より高いビットレートに対して予め定められている遅延時間だけ、前記第1の符号化ストリームの第1のデコード対象フレームと前記第2の符号化ストリームの第2のデコード対象フレームとのデコードの開始を遅延させて、前記第1のデコード対象フレームのデコードと前記第2のデコード対象フレームのデコードとの完了が同期するように前記第1の符号化ストリームおよび前記第2の符号化ストリームのデコードを制御し(例えば、図15のステップS94およびステップS95)、第1のデコード手段により前記第1の符号化ストリームをデコードし、前記第1のデコード手段は、前記第1の符号化ストリームが入力された場合、前記第1のデコード対象フレームのうちのアンカーフレームのデコードを開始し(例えば、図18のステップS129)、第2のデコード手段により前記第2の符号化ストリームをデコードし、前記第2のデコード手段は、前記第2の符号化ストリームが入力された場合、前記第2のデコード対象フレームのうちのアンカーフレームのデコードを開始する(例えば、図18のステップS129)ステップを含む。
以下、図面を参照して、本発明を適用した実施の形態について説明する。
図5は本発明を適用した編集装置81のハードウェア構成を示すブロック図である。
CPU(Central Processing Unit)91は、ノースブリッジ92に接続され、例えば、HDD(Hard disk Drive)96に記憶されているデータの読み出しなどの処理を制御したり、CPU99が実行するデコードのスケジューリング、デコードおよび表示出力の制御などの処理の開始、変更、または終了を指令するためのコマンドを生成し、出力する。ノースブリッジ92は、PCIバス(Peripheral Component Interconnect/Interface)94に接続され、例えば、CPU91の制御に基づいて、サウスブリッジ95を介して、HDD96に記憶されているデータの供給を受けて、PCIバス94、PCIブリッジ97を介して、メモリ101に供給する。また、ノースブリッジ92は、メモリ93とも接続されており、CPU91の処理に必要なデータを授受する。
メモリ93は、CPU91が実行する処理に必要なデータを保存することが可能な、例えば、DDR(Double Data Rate)等の高速アクセス可能な記憶用のメモリである。サウスブリッジ95は、HDD96のデータの書き込みおよび読み出しを制御する。HDD96には、例えばMPEG規格に準拠した圧縮符号化されたストリームデータである符号化ストリームが記憶されている。
PCIブリッジ97は、CPU91の制御に基づいてHDD96から読み出された符号化ストリームを、メモリ101に供給して保存させることができるとともに、CPU91の制御に基づいて、メモリ101に保存されている、符号化ストリームがデコードされた非圧縮の映像信号を読み出して、PCIバス94およびノースブリッジ92を介してメモリ93に供給する。また、PCIブリッジ97は、PCIバス94またはコントロールバス98を介したコマンドまたはリザルトに対応する制御信号の授受を制御する。
CPU99は、コントロールバス98、PCIブリッジ97、PCIバス94、およびノースブリッジ92を介して、CPU91から供給されたコマンドを受け、このコマンドにしたがって、PCIブリッジ97、デコーダ102−1、デコーダ102−2、コンポジッタ103、およびリサイザ104が実行する処理を制御する。メモリ100は、CPU99の処理に必要なデータを記憶する。
デコーダ102−1およびデコーダ102−2は、CPU99の制御に基づいて、メモリ101から供給された符号化ストリームをデコードし、非圧縮のSDI(Serial Digital Interface)データである映像信号をメモリ101に供給して記憶させる。また、デコーダ102−1およびデコーダ102−2は、編集装置81に含まれない独立した装置として設けられていても良い。なお、以下、デコーダ102−1およびデコーダ102−2を特に区別する必要のない場合、単にデコーダ102と称する。
コンポジッタ103は、メモリ101に記憶されている複数の映像信号を取得し、取得した映像信号により表示される複数の画像が重畳されて表示されるように、映像信号に対して合成処理を施す。また、コンポジッタ103は、合成処理が施された映像信号をメモリ101に供給して記憶させる。
リサイザ104は、メモリ101に記憶されている、合成処理の施された映像信号を取得して、映像信号により表示される画像のサイズが編集装置81に接続されている図示せぬ表示装置の表示画面のサイズとなるように、取得した映像信号に対して縮小処理を施す。リサイザ104は、縮小処理が施された映像信号をメモリ101に供給して記憶させる。
なお、図5の編集装置81は、1つの装置として構成されていても良いし、複数の装置によって構成されるようにしても良い。例えば、図5のCPU91、ノースブリッジ92、メモリ93、サウスブリッジ95、およびHDD96の部分が、パーソナルコンピュータの構成のうちの一部であるとし、PCIカード、PCI−Expressカードなどの拡張カード、または拡張ボードに、PCIバス94、PCIブリッジ97、コントロールバス98、CPU99、メモリ100、メモリ101、デコーダ102−1、デコーダ102−2、コンポジッタ103、およびリサイザ104の機能を備えさせ、パーソナルコンピュータに拡張カードを装着して編集装置81として機能するようにしても良い。また、これらを、さらに複数の装置に分割して、編集装置81を構成するようにしても良い。
次に、編集装置81の動作について説明する。
HDD96には、MPEGのLong GOP方式で圧縮された符号化ストリームが記憶されている。例えばHDD96には、編集時に図1に示した表示画面の画像領域12に画像を表示させるための符号化ストリームA、および図1の画像領域23に画像を表示させるための符号化ストリームBが記憶されている。
CPU91は、ノースブリッジ92を介して、サウスブリッジ95を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD96から、圧縮符号化された符号化ストリームAおよび符号化ストリームBを読み出させ、ノースブリッジ92、PCIバス94、および、PCIブリッジ97を介してメモリ101に供給させて記憶させる。また、CPU91は、再生スピード(再生方向を示す情報を含む)を示す情報や、画像を表示させるために必要な処理の実行を指示する表示コマンドなどを、ノースブリッジ92、PCIバス94、PCIブリッジ97、およびコントロールバス98を介してCPU99に供給する。
CPU99は、CPU91からの表示コマンドを基に、メモリ101に転送された符号化ストリームAおよび符号化ストリームBのデコードおよび表示のスケジュールを決定する。具体的には、CPU99は、デコードに利用されるデコーダ102の選択、符号化ストリームのデコーダ102への入力のタイミング、フレームごとのデコードのタイミング、参照フレームのバンク位置の設定、およびデコード時のバンクメモリの割り当てなどを決定する。
そして、CPU99は、メモリ101を制御して、メモリ101に記憶されている符号化ストリームAおよび符号化ストリームBを、決定されたスケジュールに基づいて、デコーダ102−1およびデコーダ102−2に供給させる。CPU99は、デコーダ102−1およびデコーダ102−2を制御して、符号化ストリームAおよび符号化ストリームBをデコードさせ、デコードにより得られた非圧縮の映像信号Aおよび映像信号Bをメモリ101に供給させる。
また、CPU99は、コンポジッタ103を制御して、メモリ101に記憶されている映像信号Aおよび映像信号Bを基に合成処理を行わせ、合成処理により得られた映像信号をメモリ101に供給させて記憶させる。さらに、CPU99はリサイザ104を制御して、メモリ101に記憶されている映像信号に対して縮小処理を施させ、縮小処理が施された映像信号をメモリ101に供給させる。
そして、CPU91はノースブリッジ92を制御して、メモリ101に記憶された、縮小処理の施された映像信号を、PCIバス94およびPCIブリッジ97を介してメモリ101から読み出させ、メモリ93に供給させて記憶させる。CPU91は、メモリ93に記憶されている映像信号をノースブリッジ92を介して図示せぬ表示装置に供給し、図1に示したGUIの画像を表示させる。
次に、図6は、図5の編集装置81の機能の構成例を示すブロック図である。なお、図6において、図5における場合と対応する部分には同一の符号を付してあり、その説明は省略する。
編集装置81は、制御部131、デコーダ132、およびメモリ101から構成される。
制御部131は、図5のCPU91およびCPU99から構成され、編集装置81の各部を制御する。制御部131は、メモリ101を制御して、HDD96から読み出されてメモリ101に供給された符号化ストリームAおよび符号化ストリームBを、デコーダ132に供給させるとともに、デコーダ132を制御して、メモリ101からデコーダ132に供給された符号化ストリームAおよび符号化ストリームBをデコードさせる。
デコーダ132は、デコーダ102−1およびデコーダ102−2から構成され、メモリ101からの符号化ストリームAおよび符号化ストリームBをデコードしてメモリ101に供給する。なお、デコーダ132には、編集の対象となる符号化ストリームをデコードするためにデコーダ102−1およびデコーダ102−2が設けられているが、編集装置81に設けられるデコーダは、1つであってもよいし、3以上であってもよい。
また、制御部131は、より詳細には図7に示すように構成される。
すなわち、制御部131はCPU91およびCPU99から構成される。また、CPU91は、操作入力取得部161、ストリーム転送部162、表示コマンド生成部163、および表示制御部164から構成され、CPU99は、ストリーム入力部171、時刻管理部172、実行制御部173、および遅延テーブル保持部174から構成される。
CPU91の操作入力取得部161、ストリーム転送部162、表示コマンド生成部163、および表示制御部164のそれぞれは、CPU91が画像の編集を行うためのアプリケーションプログラムを実行することにより実現され、CPU99のストリーム入力部171、時刻管理部172、実行制御部173、および遅延テーブル保持部174のそれぞれは、CPU99がデコード等の各種の処理を制御するためのファームウェアを実行することにより実現される。
操作入力取得部161は、ユーザによる操作入力を受けて、編集される符号化ストリーム、符号化ストリームがデコーダ102に入力されるときの1秒あたりのデータ量、すなわちビットレートを示すビットレートID、および表示が開始されるフレームの位置などのユーザの操作に応じた情報を取得し、取得した情報をストリーム転送部162および表示コマンド生成部163に供給する。
ストリーム転送部162は、操作入力取得部161からの情報に基づいてノースブリッジ92を制御し、編集の対象となる符号化ストリームを、GOP単位でメモリ101に転送させる。また、ストリーム転送部162は、符号化ストリームの転送が完了すると、ストリーム入力部171に転送完了の通知を送信するとともに、転送されたGOPを特定するGOP−ID、GOPのサイズ、メモリ101におけるGOPが記憶されているアドレス、GOPに含まれるフレーム、すなわちピクチャに関するピクチャ情報などが含まれるGOP情報をストリーム入力部171に供給する。ここで、ピクチャ情報には、GOP内のピクチャのピクチャタイプ、ピクチャヘッダ、ピクチャサイズなどの情報が含まれている。
表示コマンド生成部163は、操作入力取得部161からの情報に基づいて、編集の対象となる符号化ストリームA、および符号化ストリームBに基づく画像を表示させるために必要な処理の実行を指示する表示コマンドを生成して時刻管理部172に供給する。ここで、表示コマンドは、1フレーム分の符号化ストリームに対する処理の実行を指示するコマンドであり、表示コマンド生成部163は、表示させるフレームの数だけ表示コマンドを生成する。また、表示コマンドには、処理の対象となるフレームが含まれているGOPを特定するためのGOP−ID、フレームを特定するフレームID、表示コマンドの実行を開始する開始時刻、符号化ストリームのビットレートIDなどが含まれている。
表示制御部164は、CPU99の実行制御部173からの表示コマンドに対する処理の完了通知が供給されると、ノースブリッジ92を制御して、メモリ101に記憶されている、デコードされ、重畳されたフレームを表示させるための映像信号を一旦、メモリ93に記憶させた後、ノースブリッジ92を介して表示装置に供給させ、画像を表示させる。
ストリーム入力部171は、実行制御部173の復号コマンド生成部181からの符号化ストリームの転送の要求に応じてメモリ101を制御し、メモリ101に記憶されている1GOP分の符号化ストリームをデコーダ102に入力させる。
時刻管理部172は、表示コマンド生成部163から供給された表示コマンドを解釈し、表示コマンドにより指示された処理を実行するタイミングのスケジューリングを行う。例えば、時刻管理部172は、表示コマンド生成部163からの表示コマンドのうち、表示コマンドに含まれている開始時刻を参照して、実行を開始する時刻となった表示コマンドを実行制御部173に供給する。
実行制御部173は、時刻管理部172からの表示コマンドを受け、デコーダ102乃至リサイザ104のそれぞれを制御し、編集の対象となる符号化ストリームに対してデコード、合成処理、および縮小処理を実行させる。また、実行制御部173は、復号コマンド生成部181を備えている。
復号コマンド生成部181は、時刻管理部172からの表示コマンドに含まれているビットレートIDに基づいて、遅延テーブル保持部174に保持されている遅延テーブルから、デコードの開始を遅延させる遅延時間を示す遅延値を取得する。
ここで、遅延値は、所定のビットレートの符号化ストリームに対して、デコードするフレームが含まれているGOP、およびそのフレームのデコードに必要なフレームの含まれているGOPをメモリ101からデコーダ102に転送するのに必要な時間、並びにフレームのデコードを開始するまでに必要とされる前処理時間などからビットレートごとに予め定められている。
つまり、遅延値は、フレームのデコードが指示されてから、GOPの転送、参照フレーム等のデコードなどの前処理の後、指示されたフレームのデコードを開始するまでに必要な最大の前処理時間とされる。換言すれば、前処理時間が最も長い場合における、その前処理時間が遅延値により示される遅延時間とされる。
したがって、所定のGOP内のどのフレーム、つまりどのピクチャから表示を開始する場合においても、その遅延値により示される遅延時間だけフレームのデコードの開始時間を遅らせることで、デコードするフレームのピクチャタイプやGOP内の位置に関わらず、重畳して表示させる符号化ストリームAおよび符号化ストリームBのフレームのデコードが同じ時刻に完了するようにすることができる。
復号コマンド生成部181は、遅延テーブル保持部174の遅延テーブルから遅延値を取得すると、表示コマンドにより指定されたフレームのデコードを指示する復号コマンドを生成し、デコーダ102に供給する。この復号コマンドには、デコードするフレームを特定するフレームID、フレームが含まれるGOPを特定するGOP−ID、取得した遅延値、およびフレームをデコードするために参照するフレームを示す情報などが含まれている。
遅延テーブル保持部174は、符号化ストリームのビットレートに対する遅延値が含まれる遅延テーブルを保持する。
図8は、図5のデコーダ102のより詳細な構成例を示すブロック図である。
デコードコントローラ221は、復号コマンド生成部181から供給された復号コマンドに基づいて、デコーダ102の各部を制御し、クロック信号発生部222からクロック信号が供給されるタイミングで、デコーダ102の各部に所定の処理を実行させる。また、デコードコントローラ221は、ストリームバッファ223に記憶されている符号化ストリームから、フレーム単位で、そのフレームが記憶されている先頭番地、データサイズ、ピクチャヘッダ情報、Qマトリクスなどを取得する。
クロック信号発生部222は、クロック信号を発生させてデコードコントローラ221に供給する。例えばクロック信号発生部222は、画像領域12および画像領域23に画像が表示される表示周期の4分の1の周期、つまり4倍の周波数のクロック信号を発生させる。
ストリームバッファ223は、メモリ101から供給された符号化ストリームを記憶し、デコードコントローラ221の制御の基に、記憶している符号化ストリームをフレーム単位でデコード処理部224に供給する。デコード処理部224は、必要に応じてセレクタ226から供給されるベースバンドの映像信号、すなわちPピクチャまたはBピクチャのデコードにおける参照フレームを参照して、ストリームバッファ223からの符号化ストリームを1フレームずつデコードする。デコード処理部224は、デコードにより得られた非圧縮の映像信号をフレーム単位でフレームメモリ225に供給する。
フレームメモリ225は、デコード処理部224から供給された符号化ストリームを記憶し、記憶している符号化ストリームをセレクタ226または出力部227に供給する。フレームメモリ225には、他のピクチャの参照フレームとして用いられるIピクチャ、およびPピクチャを格納する参照バンク231−1乃至参照バンク231−N(参照バンク231−2乃至参照バンク231−(N−1)は図示せず)と、Bピクチャなどを表示するために用意された表示専用バンク232−1および表示専用バンク232−2とが設けられている。
参照バンク231−1乃至参照バンク231−Nのそれぞれは、デコード処理部224から供給された参照フレームとされる1フレーム分の映像信号を記憶する。また、表示専用バンク232−1および表示専用バンク232−2は、Bピクチャであるフレームの映像信号を記憶する。
なお、以下、参照バンク231−1乃至参照バンク231−Nのそれぞれを特に区別する必要のない場合、単に参照バンク231と称する。また、以下、表示専用バンク232−1および表示専用バンク232−2を特に区別する必要のない場合、単に表示専用バンク232と称する。
セレクタ226は、デコードコントローラ221の制御の基に、フレームメモリ225の参照バンク231−1乃至参照バンク231−Nのうちの何れかに記憶されているフレームの映像信号をデコード処理部224に供給する。出力部227は、デコードコントローラ221の制御の基に、フレームメモリ225の参照バンク231または表示専用バンク232に記憶されている1フレーム分の映像信号をメモリ101に供給して記憶させる。
次に、編集装置81が、編集装置81に接続されている表示装置に図1に示したGUIの画面を表示させて、編集の対象となる符号化ストリームAおよび符号化ストリームBを基に、画像領域12および画像領域23に画像を表示させるときに行われる処理の概要を説明する。なお、以下の説明においては、符号化ストリームAおよび符号化ストリームBのビットレートは同じであるものとする。
例えば、図9Aに示すように、タイムライン領域11に、トラック1として、編集の対象となる素材1を構成するビデオデータとしての符号化ストリーム261−1、およびオーディオデータ262−1のそれぞれの再生時間が表示され、トラック2として、編集の対象となる素材2を構成するビデオデータとしての符号化ストリーム261−2、およびオーディオデータ262−2のそれぞれの再生時間が表示されているとする。
ユーザが編集装置81を操作して素材1および素材2の再生を指示すると、編集装置81は、符号化ストリーム261−1および符号化ストリーム261−2のうち、カーソル24により示されるフレームの位置から再生が開始されるように、素材1および素材2に対してデコード、合成処理、縮小処理、および再生処理を行う。
すなわち、図9Bに示すように、CPU91は、所定の時刻t31において、符号化ストリーム261−1の各フレームの表示コマンド、および符号化ストリーム261−2の各フレームの表示コマンドを発行してCPU99に供給する。なお、図中、横方向は時間を示しており、縦線は所定の時刻を示している。また、互いに隣接する縦線の時間間隔Tは、編集装置81における表示コマンドの実行周期、すなわち素材のフレームが表示される表示周期を示している。
なお、以下の説明において、符号化ストリーム261−1および符号化ストリーム261−2を個々に区別する必要のない場合、単に符号化ストリーム261と称する。
CPU99は、CPU91から表示コマンドが供給されると、それらの表示コマンドのうち、実行を開始する時刻となった表示コマンドから順番に、復号コマンドを生成してデコーダ102に供給し、デコードを開始させる。図9Bの例では、時刻t32から1表示周期に1フレーム分ずつ符号化ストリーム261−1および符号化ストリーム261−2のデコードが行われている。
例えば、図10Aに示すように、カーソル24が、符号化ストリーム261−1のフレームAおよび符号化ストリーム261−2のフレームBに位置する場合、CPU99は、図10Bに示すように時刻t32において、実行を開始する時刻となったフレームAの表示コマンド、およびフレームBの表示コマンドに対応する遅延値を考慮した復号コマンドのそれぞれを発行し、デコーダ102−1およびデコーダ102−2に供給する。
その後、CPU99は、表示周期の間隔で時刻t33乃至時刻t35において、符号化ストリーム261−1のフレームA以降の連続するフレーム(A+1)乃至フレーム(A+3)のそれぞれの表示コマンドに対応する復号コマンドのそれぞれを発行するとともに、符号化ストリーム261−2のフレームB以降の連続するフレーム(B+1)乃至フレーム(B+3)のそれぞれの表示コマンドに対応する復号コマンドのそれぞれを発行し、デコーダ102−1およびデコーダ102−2に供給する。
また、デコーダ102は、CPU99から復号コマンドの供給を受けると、その復号コマンドに含まれる遅延値により示される遅延時間だけデコードの開始を遅延させた後、復号コマンドを実行して、符号化ストリーム261をデコードする。図10Bの例では、フレームAおよびフレームBのデコードは、時刻t36において完了している。したがって、素材1および素材2の処理レイテンシは、表示周期をTとすると、それぞれ4Tとなる。
このように、遅延値の含まれる復号コマンドを発行し、その遅延値により示される時間だけフレームのデコードの開始時刻を遅延させることで、フレームAおよびフレームBのピクチャタイプやGOP内の位置に関わらず、素材1および素材2の処理レイテンシを同じ長さの時間とすることができる。
換言すれば、デコーダ102が最初に供給された復号コマンドにより指定されたフレーム、すなわち最初に表示されるフレームのデコードが指示されてから、そのフレームのデコードを開始するまでに必要とされる最大の前処理時間を遅延時間として、最初のフレームのデコードの開始を遅延させることで、必要なGOPの転送や、最初のフレームの参照フレームのデコードなどに必要な前処理時間の長さに関わらず、デコードが指示されてから、遅延時間後の時刻には、復号コマンドにより指定されたフレームのデコードを確実に開始することができる。
なお、より詳細には、前処理時間は、CPU99において表示コマンドの実行を開始する時刻から、その表示コマンドに対応する復号コマンドにより指定されたフレームのデコードを開始するまでに必要な時間とされるが、表示コマンドの実行を開始する時刻となってから、デコーダ102が復号コマンドを受信するまでの時間は充分に短い時間であるため、デコーダ102が復号コマンドによりフレームのデコードが指示された時刻を、前処理時間の開始時刻とみなすことができる。
CPU99は、このようにして、表示コマンドを実行すべき時刻になったとき、GOPの転送や参照フレームのデコードなどの前処理だけが直ちに実行され、最初に表示されるフレームのデコードが遅延時間後に開始されるように符号化ストリームのデコードを制御する。
したがって、図10Cに示すように、デコーダ102−1に符号化ストリーム261−1のフレームAを含むGOPが供給され、デコーダ102−2に符号化ストリーム261−2のフレームBを含むGOPが供給されると、デコーダ102−1およびデコーダ102−2は復号コマンドに基づいて、入力されたフレームAおよびフレームBを遅延値により示される遅延時間だけ遅延させてデコードする。そして、デコーダ102−1およびデコーダ102−2は、デコードされたフレームAおよびフレームBをそれぞれ、メモリ101の所定の領域に設けられたリングバッファ構造のフレームバッファ281−1およびフレームバッファ281−2に供給して記憶させる。
ここで、素材1および素材2の処理レイテンシは、遅延値の含まれた復号コマンドが発行されることで、常に同じとなるようになされるため、フレームバッファ281−1およびフレームバッファ281−2には、1フレーム分のデータを記憶するだけの記憶容量が確保されていればよい。
その後、フレームバッファ281−1およびフレームバッファ281−2に記憶されたフレームAおよびフレームBは、コンポジッタ103に供給されて合成処理が施され、リサイザ104において縮小処理が施されて表示装置の画像領域12および画像領域23に表示される。
また、デコーダ102においては、図11Aに示すように符号化ストリーム261がデコーダ102に入力されると、入力された符号化ストリーム261は、図11Bに示すようにデコーダ102のストリームバッファ223に供給されて記憶される。
そして、符号化ストリーム261がストリームバッファ223に記憶されると、図11Cに示すように、符号化ストリーム261を構成するIピクチャおよびPピクチャのうちの予め定められたいくつかが、符号化ストリーム261の入力と同時にデコードされて、参照バンク231に格納されて記憶される。なお、以下の説明において、符号化ストリームのストリームバッファ223への入力と同時にデコードが開始されるフレームを、アンカーフレームとも称する。
そして、図11Dに示すように、CPU99からデコーダ102に復号コマンドが供給されると、デコーダ102は、復号コマンドに含まれる遅延値により示される遅延時間だけ、フレームのデコードの開始を遅延させてから、復号コマンドによりデコードが指示されたフレームをデコードし、参照バンク231または表示専用バンク232に一時的に記憶させた後、メモリ101に供給する。
さらに、より詳細には、編集の対象となる素材の画像の再生が指示されると、図12に示すように、CPU91のストリーム転送部162は、時刻t41において編集の対象である素材の符号化ストリームのうち、最初に表示するフレームが含まれているGOP(A0)(そのフレームのデコードにGOP(A0)の前のGOPが必要なときは、そのGOPも含む)のメモリ101への転送を開始する。
なお、図中、横方向は時間を示しており、縦方向の線は所定の時刻を示している。また、互いに隣接する縦方向の実線の時間間隔Tは、編集装置81における表示コマンドの実行周期、すなわち素材のフレームが表示される表示周期を示している。
また、ストリーム転送部162は、GOP(A0)の転送が完了すると、転送完了の通知311とともにGOP(A0)に関するGOP情報をCPU99のストリーム入力部171に送信する。さらに、表示コマンド生成部163は、表示が指示されたフレームごとに、矢印Q11により示される表示コマンドを発行し、CPU99の時刻管理部172に送信する。ここで、矢印Q11により示される表示コマンドは、例えばGOP(A0)を構成するフレームのそれぞれに対する表示コマンドのそれぞれからなる表示コマンド群とされる。
同様にして、CPU91のストリーム転送部162は、GOP(A0)の次のGOP(A1)のメモリ101への転送を開始し、GOP(A1)の転送が完了すると、転送完了の通知312とともにGOP(A1)に関するGOP情報をCPU99のストリーム入力部171に送信する。また、表示コマンド生成部163は、表示が指示されたフレームごとに、矢印Q12により示される複数の表示コマンドを発行し、CPU99の時刻管理部172に送信する。
一方、CPU99では、CPU99のストリーム入力部171は、ストリーム転送部162から送信されてきた転送完了の通知311、および転送完了の通知312を受信する。そして、ストリーム入力部171は、復号コマンド生成部181からの要求に応じて、時刻t42にGOP(A0)のデコーダ102への転送を開始し、その転送が終了すると、続いて時刻t44においてGOP(A1)のデコーダ102への転送を開始する。
また、時刻管理部172は、矢印Q11および矢印Q12により示される、表示コマンド生成部163からの表示コマンドを受信して、受信した表示コマンドの実行のスケジューリングを行う。つまり、時刻管理部172は、時刻t42において、実行の開始時刻となった表示コマンド313−1を復号コマンド生成部181に供給し、その後、1表示周期ごとに表示コマンド313−2乃至表示コマンド313−5のそれぞれを、復号コマンド生成部181に供給する。すなわち、時刻管理部172は、時刻t43、時刻t45、時刻t46、および時刻t48のそれぞれの時刻において、表示コマンド313−2乃至表示コマンド313−5のそれぞれを、復号コマンド生成部181に供給する。
復号コマンド生成部181は、時刻管理部172から表示コマンド313−1乃至表示コマンド313−5のそれぞれが供給されると、それらの表示コマンドを基に、遅延値を考慮した復号コマンド314−1乃至復号コマンド314−5のそれぞれを発行してデコーダ102に送信する。なお、以下、表示コマンド313−1乃至表示コマンド313−5のそれぞれを特に区別する必要のない場合、単に表示コマンド313と称する。また、以下、復号コマンド314−1乃至復号コマンド314−5のそれぞれを特に区別する必要のない場合、単に復号コマンド314と称する。
デコーダ102は、復号コマンド生成部181から、復号コマンド314が供給されると、復号コマンド314が供給されてから、遅延値により示される遅延時間だけ待機した後、復号コマンド314により指示されているフレームのデコードを順番に開始する。
そして、それらのフレームのデコードが完了すると、デコードが完了した順に、CPU99の実行制御部173に対してデコードの完了通知315−1乃至完了通知315−5を送信する。図12の例では、時刻t47に完了通知315−1が実行制御部173に送信されており、その後1表示周期ごとに完了通知315−2乃至完了通知315−5が送信されている。なお、以下、完了通知315−1乃至完了通知315−5を特に区別する必要のない場合、単に完了通知315と称する。
また、デコーダ102は、完了通知315を実行制御部173に送信すると、次にフレームが表示されるタイミングとなった時刻において、デコードの完了したフレームのメモリ101への転送を開始する。図12の例では、時刻t48において、表示コマンド313−1により指示されたGOP(A0)のフレームA0の転送が開始され、その後1表示周期で、1つのフレームの転送が開始されている。
さらに図12の例では、各フレームの処理レイテンシは4表示周期、つまり4Tとされており、CPU99によって処理レイテンシが4Tとなるようにデコードのスケジューリング、つまり遅延値等のデコードの制御がなされていることが分かる。
次に、図13のフローチャートを参照して、CPU91による表示制御処理について説明する。この表示制御処理は、ユーザにより編集装置81が操作されて、図1の画像領域12および画像領域23に表示される画像の再生が指示されると開始される。
ステップS11において、ストリーム転送部162は、HDD96に記憶されている符号化ストリームを複数GOP分読み出させる。すなわち、操作入力取得部161は、ユーザの操作入力を受けて、画像領域12に表示する画像の符号化ストリームA、符号化ストリームAのビットレートID、符号化ストリームAの表示が開始されるフレームの位置などの情報と、画像領域23に表示する画像の符号化ストリームB、符号化ストリームBのビットレートID、符号化ストリームBの表示が開始されるフレームの位置などの情報とからなるユーザの操作に応じた情報を取得し、取得した情報をストリーム転送部162および表示コマンド生成部163に供給する。
ストリーム転送部162は、操作入力取得部161からの情報に基づいてノースブリッジ92を制御し、符号化ストリームAの表示が開始されるフレームを含むGOPと、それ以降の複数GOPとをサウスブリッジ95を介してHDD96から読み出させるとともに、符号化ストリームBの表示が開始されるフレームを含むGOPと、それ以降の複数GOPとをサウスブリッジ95を介してHDD96から読み出させる。
また、ストリーム転送部162は、GOPを特定するためのGOP−ID、およびメモリ101におけるそのGOPが記憶される位置を示す情報が含まれ、符号化ストリームへのGOP−IDの付加を指示するコマンドをストリーム入力部171に送信する。
ストリーム入力部171は、ストリーム転送部162から送信されてきたコマンドを受信すると、ノースブリッジ92を制御して、読み出された符号化ストリームAおよび符号化ストリームBのそれぞれのGOPの先頭に、GOPを特定するためのGOP−IDを付加させる。このGOP−IDは、MPEGヘッダに挿入されるのではなく、GOPに含まれるビデオデータの先頭に付加される。
ノースブリッジ92は、ストリーム転送部162の制御の基に、読み出しが指示された符号化ストリームのGOPをサウスブリッジ95を介してHDD96から読み出すとともに、ストリーム入力部171の制御に基づいて、読み出したGOPにGOP−IDを付加する。このように、各GOPの先頭にGOP−IDを付加することで、デコーダ102は、デコーダ102のストリームバッファ223に入力された各GOPのGOP−IDを参照してGOPを特定することができる。
ステップS12において、ストリーム転送部162は、ノースブリッジ92を制御して、読み出させた符号化ストリームをメモリ101に転送させる。ノースブリッジ92は、ストリーム転送部162の制御の基に、転送が指示された符号化ストリームを、GOP単位でPCIバス94、およびPCIブリッジ97を介してメモリ101に供給する。
符号化ストリームのメモリ101への転送が完了すると、ステップS13において、ストリーム転送部162は、GOPの転送完了の通知およびGOP情報を、ノースブリッジ92、PCIバス94、PCIブリッジ97、およびコントロールバス98を介して、CPU99のストリーム入力部171に送信する。
ストリーム入力部171において転送完了の通知が受信されると、ストリーム入力部171は、受信した転送完了の通知に対して、転送完了の通知を受信した旨のリザルトを、コントロールバス98、PCIブリッジ97、PCIバス94、およびノースブリッジ92を介してCPU91の表示コマンド生成部163に送信する。
表示コマンド生成部163が、ストリーム入力部171から送信されてきたリザルトを受信すると、ステップS14において、表示コマンド生成部163は、表示コマンドを生成し、生成した表示コマンドをノースブリッジ92、PCIバス94、PCIブリッジ97、およびコントロールバス98を介して、CPU99の時刻管理部172に送信する。
例えば、表示コマンド生成部163は、符号化ストリームAの最初にメモリ101に転送されたGOPを構成するフレームのそれぞれに対する表示コマンドのそれぞれと、符号化ストリームBの最初にメモリ101に転送されたGOPを構成するフレームのそれぞれに対する表示コマンドのそれぞれとを生成する。
表示コマンドが時刻管理部172に送信されると、時刻管理部172は、表示コマンド生成部163から送信されてきた表示コマンドを受信し、実行開始時刻になると、表示コマンドを実行制御部173に供給する。実行制御部173は、時刻管理部172からの表示コマンドに基づいて、指示されたフレームに対するデコード、合成処理、および縮小処理の実行を制御する。そして、実行制御部173は、指示されたフレームにそれらの処理が施されてメモリ101に供給されると、処理の完了通知をコントロールバス98、PCIブリッジ97、PCIバス94、およびノースブリッジ92を介してCPU91の表示制御部164に送信する。また、実行制御部173は、指示されたフレームに対するデコード、合成処理、および縮小処理の実行中にエラーが発生した場合、エラーが発生した旨の通知を表示制御部164に送信する。
ステップS15において、表示制御部164は、実行制御部173からエラーが発生した旨の通知を受信したか否かを判定する。ステップS15において、エラーが発生した旨の通知を受信したと判定された場合、エラーが発生し、画像領域12および画像領域23に画像を表示させることができないので、表示制御処理は終了する。
これに対して、ステップS15において、エラーが発生した旨の通知を受信していないと判定された場合、すなわち処理の完了通知が受信された場合、ステップS16において、表示制御部164は、画像領域12および画像領域23のそれぞれに画像を表示させる。より具体的には、表示制御部164は、ノースブリッジ92を制御して、PCIバス94およびPCIブリッジ97を介して、メモリ101からリサイザ104により縮小処理の施された映像信号を取得し、取得した映像信号を一旦メモリ93に供給して記憶させた後、図示せぬ表示装置に供給して、画像を表示させる。
ステップS17において、表示制御部164は、1GOP分のフレームの表示完了を検出する。すなわち、表示制御部164は、どのフレームの表示が終了したかを常に確認しておくことによって、1GOP分のフレームの表示完了を検出する。1GOP分のフレームの表示完了が検出されると、表示制御部164は、ストリーム転送部162に1GOP分のフレームの表示完了を通知する。
ステップS18において、ストリーム転送部162は、表示が完了したGOPは、表示が指示された符号化ストリームの最後のGOPであるか否か、すなわち指示された全ての画像の表示が終了したか否かを判定する。
ステップS18において、最後のGOPであると判定された場合、全ての画像を表示したので表示制御処理は終了する。
一方、ステップS18において、最後のGOPではないと判定された場合、ステップS19において、ストリーム転送部162は、転送していない符号化ストリームが残っているか否かを判定する。例えば、HDD96に記憶されている符号化ストリームを構成する、表示が指示されたフレームを含むGOPのうち、まだメモリ101に転送されていないGOPがある場合、ストリーム転送部162は、符号化ストリームが残っていると判定する。
ステップS19において、転送していない符号化ストリームが残っていないと判定された場合、デコードに必要な全てのGOPが転送されたので、処理はステップS14に進み、上述した処理が繰り返される。
これに対して、ステップS19において、転送していない符号化ストリームが残っていると判定された場合、ステップS20において、ストリーム転送部162は、ノースブリッジ92を制御し、まだ転送されていない符号化ストリームAを1GOP分だけHDD96から読み出させるとともに、まだ転送されていない符号化ストリームBを1GOP分だけHDD96から読み出させる。また、ストリーム転送部162は、符号化ストリームへのGOP−IDの付加を指示するコマンドをストリーム入力部171に送信する。そして、ストリーム入力部171は、ストリーム転送部162から送信されてきたコマンドを受信すると、ノースブリッジ92を制御して、読み出された符号化ストリームAおよび符号化ストリームBのそれぞれのGOPの先頭にGOP−IDを付加させる。
ステップS21において、ストリーム転送部162は、ノースブリッジ92を制御し、読み出させた符号化ストリームAおよび符号化ストリームBをメモリ101に転送させる。
ステップS22において、ストリーム転送部162は、GOPの転送完了の通知およびGOP情報を、ノースブリッジ92、PCIバス94、PCIブリッジ97、およびコントロールバス98を介して、CPU99のストリーム入力部171に送信し、処理はステップS14に進み、上述した処理が繰り返される。
このようにして、CPU91は、符号化ストリームを1GOPずつメモリ101に転送させるとともに、表示コマンドを発行して符号化ストリームをデコードさせる。そして、CPU91は、デコードされ、合成処理および縮小処理が施されて得られた映像信号を表示装置に供給して画像を表示させる。
CPU91が符号化ストリームをメモリ101に転送し、表示コマンドをCPU99に送信すると、CPU99は、CPU91から送信されてきた表示コマンドを受信して、デコード、合成処理、および縮小処理の実行を制御する処理である実行制御処理を行う。
以下、図14のフローチャートを参照して、CPU99による実行制御処理について説明する。
ステップS51において、ストリーム入力部171は、ストリーム転送部162からの転送完了の通知およびGOP情報の受信を受け付ける。すなわち、ストリーム入力部171は、ストリーム転送部162から転送完了の通知およびGOP情報が送信されてきた場合、送信されてきた転送完了の通知およびGOP情報を受信する。
ストリーム入力部171は、転送完了の通知およびGOP情報を受信すると、転送完了の通知を受信した旨のリザルトを、表示コマンド生成部163に送信する。また、ストリーム入力部171は、受信したGOP情報を復号コマンド生成部181に供給する。
ステップS52において、時刻管理部172は、表示コマンド生成部163から送信されてきた表示コマンドを受信する。例えば、時刻管理部172は、符号化ストリームAの1GOP分のフレームの表示コマンドのそれぞれと、符号化ストリームBの1GOP分のフレームの表示コマンドのそれぞれとを受信する。そして、時刻管理部172は、受信した表示コマンドを解釈し、表示コマンドに含まれる実行の開始時刻を参照して、受信した表示コマンドのうち、実行を開始する時刻となった表示コマンドを実行制御部173の復号コマンド生成部181に供給する。
ステップS53において、復号コマンド生成部181は、時刻管理部172から、実行の開始時刻となった表示コマンドを取得する。例えば、復号コマンド生成部181は、符号化ストリームAを構成する所定の1フレームに対する表示コマンドと、符号化ストリームBを構成する所定の1フレームに対する表示コマンドとを取得する。
ステップS54において、復号コマンド生成部181は、GOP情報が受信されたか否かを判定する。例えば、復号コマンド生成部181は、取得した表示コマンドにより指定されたフレームの含まれるGOPのGOP情報がストリーム入力部171から供給された場合、GOP情報が受信されたと判定する。
ステップS54において、GOP情報が受信されていないと判定された場合、GOP情報が得られず、表示コマンドにより指定されたフレームのデコードを行うことができないので、処理はステップS55に進む。そしてステップS55において、実行制御部173は、エラーが発生した旨の通知を生成して、表示制御部164に送信し、実行制御処理は終了する。
これに対して、ステップS54において、GOP情報が受信されたと判定された場合、復号コマンド生成部181は、ストリーム入力部171に対して、取得した表示コマンドにより指定されたフレームが含まれるGOP、およびそのフレームをデコードするために必要なフレームが含まれているGOPのデコーダ102への転送を要求し、処理はステップS56に進む。
ステップS56において、CPU99は、復号コマンド生成処理を行う。なお、復号コマンド生成処理の詳細は後述するが、この復号コマンド生成処理において、CPU99は、符号化ストリームをデコードするための復号コマンドを生成し、デコーダ102に供給する。
復号コマンド生成処理が行われ、復号コマンド生成部181からデコーダ102に復号コマンドが供給されると、デコーダ102は、復号コマンドによりデコードが指示されたフレームをデコードし、これにより得られた非圧縮の映像信号をメモリ101に供給して記憶させる。また、デコーダ102のデコードコントローラ221は、復号コマンドにより指示されたフレームのデコードが完了すると、デコードの完了通知を実行制御部173に供給する。
メモリ101に映像信号が記憶され、デコードコントローラ221から実行制御部173にデコードの完了通知が供給されると、ステップS57において、実行制御部173は、コンポジッタ103を制御して、メモリ101に記憶されている、符号化ストリームAおよび符号化ストリームBのそれぞれのデコードにより得られた映像信号のそれぞれを基に、合成処理を行わせる。コンポジッタ103は、実行制御部173の制御の基に、メモリ101から映像信号を取得し、取得した映像信号に対して合成処理を施す。そして、コンポジッタ103は、合成処理の施された映像信号をメモリ101に供給して記憶させる。
ステップS58において、実行制御部173は、リサイザ104を制御して、メモリ101に記憶されている、合成処理の施された映像信号を基に、縮小処理を行わせる。リサイザ104は、実行制御部173の制御の基に、メモリ101から映像信号を取得し、取得した映像信号に対して縮小処理を施す。例えば、リサイザ104は、映像信号により表示される画像が、HD画像のサイズからSD画像のサイズとなるように、映像信号に対して縮小処理を施す。そして、リサイザ104は、縮小処理の施された映像信号をメモリ101に供給して記憶させる。
ステップS59において、時刻管理部172は、全てのフレームの処理が終了したか否かを判定する。すなわち、時刻管理部172は、受信した全ての表示コマンドを実行したか否かを判定する。
ステップS59において、全てのフレームの処理が終了していないと判定された場合、処理はステップS51に戻り、上述した処理が繰り返される。
これに対して、ステップS59において、全てのフレームの処理が終了したと判定された場合、実行制御処理は終了する。
このようにして、CPU99は、CPU91からの表示コマンドを受信して、その表示コマンドにより指示された処理を行う。
次に、図15のフローチャートを参照して、図14のステップS56の処理に対応する復号コマンド生成処理について説明する。
ステップS91において、ストリーム入力部171は、デコードに必要なGOPがデコーダ102に入力されているか否かを判定する。すなわち、ストリーム入力部171は、ステップS54の処理において復号コマンド生成部181から転送が要求されたGOP、つまりこれからデコードするフレームの含まれたGOP、およびそのフレームをデコードするために必要なフレームが含まれているGOPが既にデコーダ102に入力されているか否かを判定する。
例えばストリーム入力部171は、デコーダ102に一時的に記憶されているGOPのGOP−IDを、GOPがデコーダ102に入力された順に並べたGOP−IDキューを用いることで、デコーダ102に記憶されているGOPを管理している。
例えば、デコーダ102のストリームバッファ223には、図16Aに示すように、最大で5つのGOPがバッファリングできるようになされている。図16Aの例では、ストリームバッファ223には、符号化ストリームのGOP(A)乃至GOP(E)が順番に並べられてバッファリングされている。
ストリームバッファ223に入力されるGOPは、矢印Q41に示されるように、GOP(A)が格納されている領域から順番に、図中、右方向に書き込まれていき、GOP(E)が格納されている領域に新たなGOPが書き込まれると、次のGOPは先頭の領域に戻り、GOP(A)が格納されている領域に書き込まれる。
また、図中、矢印Q42および矢印Q43は、書き込まれた時刻が最も古いGOPが格納されている領域、および書き込まれた時刻が最も新しいGOPが格納されている領域の位置を示している。したがって、これらの矢印Q42および矢印Q43により示される位置も、新たにGOPが書き込まれるごとに矢印Q41に示される方向に1つずつ移動される。
このようにストリームバッファ223に、最大で5つのGOPがバッファリングされる場合、ストリーム入力部171は、図16Bに示すGOP−IDキューを保持している。GOP−IDキューには、番号0乃至番号4の5つの要素が格納(キュー)されている。すなわち、番号0の要素乃至番号4の要素のそれぞれは、図16AにおけるGOP(A)乃至GOP(E)のGOP−IDのそれぞれを示している。
ここで、GOP−IDキューに格納されるGOP−IDは、GOP情報に含まれているGOP−IDであり、GOPを特定するための32ビットの識別子とされる。また、GOP−IDは番号0の要素から番号4の要素まで、ストリームバッファ223にGOPが転送された順番で格納されている。つまり、番号0の要素として格納されているGOP−IDは、ストリームバッファ223にバッファリングされているGOPのうち、最も古い時刻に書き込まれたGOP(A)のGOP−IDを示しており、番号4の要素として格納されているGOP−IDは、最も新しい時刻に書き込まれたGOP(E)のGOP−IDを示している。
ストリーム入力部171は、ストリームバッファ223に新たにGOPを転送するたびに、番号4の要素として新たに転送したGOPのGOP−IDをプッシュし、番号0の要素として格納されているGOP−IDをポップする。
このように、ストリーム入力部171には、ストリームバッファ223に記憶されているGOPのGOP−IDが、それらのGOPが転送された順番で格納されているので、どのGOPがストリームバッファ223に記憶されているかを知ることができる。したがって、ストリーム入力部171は、復号コマンド生成部181において復号コマンドが発行されるたびにGOPをストリームバッファ223に転送する必要がなくなる。
なお、ストリームバッファ223に最大で5つのGOPがバッファリングされる例について説明したが、ストリームバッファ223にバッファリングできる最大のGOP数は、4以下であってもよいし、6以上であってもよい。
ストリーム入力部171は、このようなGOP−IDキューを、デコーダ102−1およびデコーダ102−2のそれぞれについて保持している。
したがって、ストリーム入力部171は、復号コマンド生成部181から転送が要求されたGOPのGOP−IDが、GOP−IDキューに格納されている場合、ステップS91においてデコードに必要なGOPがデコーダ102に入力されていると判定する。
図15のフローチャートの説明に戻り、ステップS91において、デコードに必要なGOPが入力されていると判定された場合、ストリームバッファ223にGOPを転送する必要がないので、ステップS92の処理およびステップS93の処理はスキップされて、処理はステップS94に進む。
これに対して、ステップS91において、デコードに必要なGOPが入力されていないと判定された場合、ステップS92において、ストリーム入力部171はメモリ101を制御して、復号コマンド生成部181により転送が要求されたGOPのうち、まだストリームバッファ223に転送されていないGOPを1GOPずつストリームバッファ223に転送させる。
すなわち、ストリーム入力部171は、メモリ101を制御して、メモリ101に記憶されているGOPのうち、まだ転送されていないGOPのGOP−IDにより特定されるGOPをストリームバッファ223に供給させる。
ステップS93において、ストリーム入力部171は、メモリ101からストリームバッファ223に転送したGOPのGOP−IDを、GOPを転送した順番にGOP−IDキューに格納する。
ステップS93において、転送したGOPのGOP−IDがGOP−IDキューに格納されるか、ステップS91においてデコードに必要なGOPが入力されていると判定されると、ステップS94において、復号コマンド生成部181は、時刻管理部172から供給された表示コマンドに含まれているビットレートIDに基づいて、遅延テーブル保持部174の遅延テーブルから遅延値を取得する。
例えば、遅延テーブル保持部174は、図17に示すように、ビットレートIDにより示されるビットレート、すなわちデコードする符号化ストリームのビットレートに対する遅延値を示す情報が、ビットレートIDごとに並べられた遅延テーブルを保持している。
つまり、図17には、1つのビットレートIDに対する遅延値を示す情報が示されており、遅延テーブルには、このようなビットレートIDに対する遅延値を示す情報が複数含まれている。また、遅延値は、符号化ストリームに基づくフレームが表示される表示周期の長さの整数倍の時間、例えば表示周期をTとして、2T乃至4Tの何れかの値とされる。
復号コマンド生成部181は、遅延テーブル保持部174に保持されている遅延テーブルを参照して、表示コマンドに含まれているビットレートIDに対する遅延値を、デコードするフレームに対して与える遅延時間を示す遅延値として取得する。なお、ここでは、符号化ストリームAおよび符号化ストリームBのビットレートは同じであるとし、復号コマンド生成部181により、符号化ストリームAの表示コマンド、および符号化ストリームBの表示コマンドに対して、同じ遅延値が取得されるものとする。
図15のフローチャートの説明に戻り、ステップS95において、復号コマンド生成部181は、表示コマンド、取得した遅延値、およびストリーム入力部171からのGOP情報を基に、デコーダ102にデコードを行わせるための復号コマンドを生成する。
例えば、復号コマンド生成部181は、復号コマンドに、デコードさせるフレームのフレームID、そのフレームが含まれているGOPのGOP−ID、遅延値、およびそのフレームがデコードされるときに参照される参照フレームを示す情報、つまり参照フレームのフレームIDが含まれるように、符号化ストリームAを構成するフレームに対する復号コマンドと、符号化ストリームBを構成するフレームに対する復号コマンドとを生成する。ここで、復号コマンドに含まれるフレームIDおよびGOP−IDは、表示コマンドに含まれるフレームIDおよびGOP−IDと同一のものとされる。
復号コマンド生成部181は、復号コマンドを生成すると、生成した復号コマンドをデコーダ102のデコードコントローラ221に供給し、処理は図14のステップS57に進む。また、復号コマンド生成部181からデコーダ102に復号コマンドが供給されると、デコーダ102は、復号コマンドによりデコードが指示されたフレームをデコードし、これにより得られた映像信号をメモリ101に供給して記憶させる。そして、デコーダ102のデコードコントローラ221は、復号コマンドにより指示されたフレームのデコードが完了すると、デコードの完了通知を実行制御部173に供給する。
なお、より詳細には、復号コマンド生成部181は、ストリーム入力部171に保持されているGOP−IDキューを参照し、表示コマンドにより指定されたフレームが、GOP−IDキューに格納されているGOP−IDのうち、最も古い時刻に格納されたGOP−IDにより特定されるGOPに含まれるフレームである場合には、そのフレームに対する復号コマンドを生成しない。そして、実行制御部173は、エラーが発生した旨の通知を表示制御部164に送信する。
例えば、図16Bに示したGOP−IDキューにおいて、最も古い時刻に格納された番号0の要素であるGOP−IDにより特定されるGOP(A)は、ストリームバッファ223にバッファリングされているGOPのうち、最も古い時刻に入力されたGOPである。
したがって、GOP(A)に含まれるフレームに対して復号コマンドが発行された場合、ストリームバッファ223に新たなGOPが入力されたときには、ストリームバッファ223に記憶されているGOP(A)は、新たに入力されたGOPに上書きされてしまうので、デコーダ102は、復号コマンドによりフレームのデコードが指示されているにも関わらず、ストリームバッファ223にGOP(A)が記憶されていないので、フレームのデコードを行うことができなくなってしまう。
そこで、復号コマンド生成部181は、このようなデコードができなくなってしまう事態の発生を抑制するために、最も古い時刻にGOP−IDキューに格納されたGOP−IDにより特定されるGOPに含まれるフレームに対しては、復号コマンドを発行しない。
また、復号コマンド生成部181は、GOP−IDキューに格納された番号1乃至番号4の要素のGOP−IDにより特定されるGOPに含まれるフレームに対しては、復号コマンドを発行する。ストリーム入力部171は、GOP−IDキューを参照することにより、どのGOPがストリームバッファ223にバッファリングされているかを知ることができるので、番号1乃至番号4の要素のいずれかのGOP−IDにより特定されるGOPに含まれるフレームに対して復号コマンドが発行されるときには、復号コマンドを発行するたびにGOPをストリームバッファ223に転送する必要がなくなる。
このようにして、CPU99は、必要に応じて符号化ストリームを1GOP分ずつストリームバッファ223に転送させ、符号化ストリームのビットレートに応じた遅延値の含まれる復号コマンドを生成する。
このように、必要に応じて符号化ストリームを1GOP分ずつストリームバッファ223に転送させ、符号化ストリームのビットレートに応じた遅延値の含まれる復号コマンドを生成することで、GOPの転送時間、デコードさせるフレームのピクチャタイプやGOP内の位置に関わらず、符号化ストリームAおよび符号化ストリームBの処理レイテンシを同じ長さの時間とすることができる。
すなわち、遅延値が含まれる復号コマンドを発行して、その遅延値により示される遅延時間だけデコードの開始を遅延させるだけで、符号化ストリームAを構成するフレームのデコードが完了する時刻と、符号化ストリームBを構成するフレームのデコードが完了する時刻とを同じ時刻にすることができる。これにより、複数の画像を同時に表示させる場合に、より簡単に画像の表示を同期させることができる。
また、同じ時刻に符号化ストリームAおよび符号化ストリームBの同時に表示されるフレームのデコードを完了させることができるので、デコーダ102における処理レイテンシの差を吸収するために、後段のメモリ101に複数フレーム分の映像信号を記憶させるための記憶容量を確保する必要がなくなり、編集装置81の小型化を図ることができる。
ところで、復号コマンド生成処理が行われて復号コマンドが発行され、発行された復号コマンドが復号コマンド生成部181からデコーダ102のデコードコントローラ221に供給されると、デコーダ102は、復号コマンドにより指示されたフレームをデコードする処理であるデコード処理を開始する。
以下、図18のフローチャートを参照して、デコーダ102によるデコード処理について説明する。なお、このデコード処理は、デコーダ102−1およびデコーダ102−2のそれぞれにおいて実行される。
ステップS121において、デコードコントローラ221は、新たにストリームバッファ223に符号化ストリームが入力されたか否かを判定する。ステップS121において、符号化ストリームが入力されていないと判定された場合、処理はステップS123に進む。
これに対して、ステップS121において、符号化ストリームが入力されたと判定された場合、ステップS122において、デコードコントローラ221は、デコード処理部224を制御してアンカーフレームのデコードを開始させる。
すなわち、デコードコントローラ221は、ストリームバッファ223を制御して、新たに入力された符号化ストリームに含まれるアンカーフレームを1フレームずつデコード処理部224に供給させる。そして、デコードコントローラ221は、デコード処理部224を制御して、ストリームバッファ223からデコード処理部224に供給されたアンカーフレームをMEPGなどの所定の方式によりデコードさせ、これにより得られた非圧縮の映像信号を予め定められた参照バンク231に供給させて記憶させる。また、デコードコントローラ221は、必要に応じてセレクタ226を制御し、デコード処理部224においてデコードされるアンカーフレームの参照フレームを、参照バンク231からデコード処理部224に供給させる。
なお、デコード処理部224において他のフレームのデコードが行われており、アンカーフレームのデコードを直ちに開始できない場合や、参照バンク231に他のアンカーフレームが記憶されているため、新たなアンカーフレームを記憶させることができず、アンカーフレームのデコードを直ちに開始できない場合、デコードコントローラ221は、新たに入力された符号化ストリームのアンカーフレームのデコードを開始できる状態になった時点で、デコード処理部224を制御してデコードを開始させる。
ステップS122においてアンカーフレームのデコードが開始されたか、ステップS121において符号化ストリームが入力されていないと判定されると、ステップS123において、デコードコントローラ221は、復号コマンド生成部181から復号コマンドが供給されたか否かを判定する。ステップS123において、復号コマンドが供給されていないと判定された場合、処理はステップS125に進む。
これに対して、ステップS123において、復号コマンドが供給されたと判定された場合、ステップS124において、デコードコントローラ221は、復号コマンド生成部181から供給された復号コマンドを、復号コマンドの供給された順番に並べた復号コマンドキューに格納する。
例えば、復号コマンド生成部181からデコードコントローラ221には、図19の矢印Q61により示される復号コマンドが供給される。図19の例では、復号コマンドには、デコードするフレームが含まれているGOPのGOP−ID、フレームID、および遅延値が含まれている。ここで、遅延値における括弧内の数値は、デコードの開始を遅延させる遅延時間を表す表示周期の数を示している。矢印Q61により示される復号コマンドの遅延値により示される表示周期数は3であるので、この遅延値3は、遅延時間が表示周期Tの3倍である、3Tであることを示している。したがって、遅延値が3であるこの復号コマンドは、復号コマンドキューに格納されてから3表示周期後に実行される。
また、復号コマンドキューには、番号0乃至番号3の4つの要素が格納(キュー)されており、復号コマンドは、番号0の要素から番号3の要素まで、デコードコントローラ221に供給された順番で格納されている。つまり、番号0の要素として格納されている復号コマンドは、復号コマンドキューに格納されている復号コマンドのうち、最も古い時刻に格納された復号コマンドであり、番号3の要素として格納されている復号コマンドは、最も新しい時刻に格納された復号コマンドである。
デコードコントローラ221は、復号コマンド生成部181から復号コマンドが供給されると、供給された復号コマンドを復号コマンドキューにプッシュし、編集装置81におけるフレームが表示されるタイミング、つまり表示コマンドが実行されるタイミングの時刻になると、復号コマンドキューに格納されている各復号コマンドの遅延値を1ずつ減算する。そして、デコードコントローラ221は、遅延値が0となった復号コマンドを実行し、その復号コマンドについては、その要素を開放する。図19の例では、番号0の要素として格納されている復号コマンドの遅延値が0であるので、デコードコントローラ221は、遅延値が0となった番号0の要素の復号コマンドを実行して、番号0の要素を開放する。
図18のフローチャートの説明に戻り、ステップS124において復号コマンドが復号コマンドキューに格納されるか、ステップS123において復号コマンドが供給されていないと判定された場合、ステップS125において、デコードコントローラ221は、クロック信号発生部222から表示周期と同期したクロック信号が供給されたか否かを判定する。
つまり、CPU91およびCPU99は、表示周期Tを周期とするクロック信号に基づいて、各種の処理を実行したり、編集装置81の各部に処理を実行させたりしている。これに対して、デコーダ102に設けられたクロック信号発生部222は、表示周期の4分の1の周期のクロック信号を発生し、デコードコントローラ221は、このクロック信号に基づいて、デコーダ102の各部に各種の処理を実行させる。
ここで、クロック信号発生部222が発生するクロック信号の4クロックに一度は、CPU91およびCPU99が処理を行うタイミングと同期するようになされている。デコードコントローラ221は、クロック信号発生部222からのクロック信号が、CPU91およびCPU99が処理を行うタイミングと同期した場合、表示周期と同期したクロック信号が供給されたと判定する。
ステップS125において、表示周期と同期したクロック信号が供給されなかったと判定された場合、処理はステップS121に戻り、上述した処理が繰り返される。
一方、ステップS125において、表示周期と同期したクロック信号が供給されたと判定された場合、すなわち、最後にフレームが表示されるタイミングとなってから1表示周期だけ経過した場合、ステップS126に進み、デコードコントローラ221は、復号コマンドキューに格納されている各復号コマンドの遅延値を1だけ減算(デクリメント)する。例えば、図19の番号1の要素の復号コマンドの遅延値は1であるので、デコードコントローラ221は、その遅延値を1減算して0とする。
また、例えば図12の時刻t42において、復号コマンド生成部181からデコードコントローラ221に遅延値が3である復号コマンドが供給された場合、デコードコントローラ221は、時刻t43において遅延値を2とし、時刻t45において遅延値を1とし、さらに時刻t46において遅延値を0として復号コマンドを復号コマンドキューから取得し、デコードを開始させる。
このように、デコードコントローラ221は、表示周期に同期したクロック信号が供給されるたびに、すなわちフレームが表示されるタイミングの時刻となるたびに、復号コマンドキューに格納されている各復号コマンドの遅延値から、表示周期の長さの時間、つまり1ずつ減算していくことで、各復号コマンドにより指定されたフレームのデコードの開始までの時間をカウントする。
ステップS127において、デコードコントローラ221は、遅延値が0となった復号コマンドがあるか否かを判定する。ステップS127において、遅延値が0となった復号コマンドがないと判定された場合、実行すべき時刻となった復号コマンドはないので、ステップS128の処理およびステップS129の処理はスキップされて、処理はステップS130に進む。
これに対して、ステップS127において、遅延値が0となった復号コマンドがあると判定された場合、デコードコントローラ221は、復号コマンドキューから遅延値が0となった復号コマンドを取得するとともに、その復号コマンドが格納されていた要素を開放し、処理はステップS128に進む。
ステップS128において、デコードコントローラ221は、取得した復号コマンドにより指定されたフレームのデコードが終了しているか否かを判定する。例えば、復号コマンドにより指定されるフレームがアンカーフレームである場合、アンカーフレームは、デコーダ102に入力されると同時にデコードが開始されるので、復号コマンドを実行される時刻には、すでにフレームのデコードが終了し、フレームメモリ225に記憶されている。デコードコントローラ221は、復号コマンドにより指定されるフレームのデコードが終了し、フレームメモリ225に記憶されている場合、デコードが終了していると判定する。
ステップS128において、デコードが終了していると判定された場合、フレームのデコードは行われないので処理はステップS130に進む。
一方、ステップS128において、デコードが終了していないと判定された場合、ステップS129において、デコードコントローラ221はデコード処理部224を制御して、復号コマンドによりデコードが指示されたフレームのデコードを開始させる。
すなわち、デコードコントローラ221は、ストリームバッファ223を制御して、復号コマンドにより指定されたフレーム、より詳細には、符号化ストリームのうち、指定されたフレームを表示させるための部分のデータをコード処理部224に供給させる。そして、デコードコントローラ221は、デコード処理部224を制御して、ストリームバッファ223からデコード処理部224に供給されたフレームをデコードさせ、これにより得られた非圧縮の映像信号を予め定められた表示専用バンク232に供給させて記憶させる。また、デコードコントローラ221は、セレクタ226を制御し、デコード処理部224においてデコードされるフレームの参照フレームを、参照バンク231からデコード処理部224に供給させる。
デコード処理部224は、デコードコントローラ221の制御の基に、セレクタ226から供給された参照フレームを用いて、ストリームバッファ223から供給されたフレーム、つまりフレームのデータをデコードし、デコードにより得られた映像信号をフレームメモリ225の表示専用バンク232に供給して記憶させる。また、デコードコントローラ221は、復号コマンドにより指定されたフレームのデコードが完了すると、デコードの完了通知をCPU99の実行制御部173に供給する。
ステップS129においてデコードが開始されるか、ステップS128においてデコードが終了していると判定されたか、またはステップS127において遅延値が0となった復号コマンドがないと判定された場合、ステップS130において、デコードコントローラ221は、出力する時刻となったフレームがあるか否かを判定する。
例えば、デコードコントローラ221は、前回、クロック信号発生部222から表示周期と同期したクロック信号が供給されたときにデコードする時刻となったフレームであって、今回表示周期と同期したクロック信号が供給された時点において、参照バンク231または表示専用バンク232に記憶されているフレームを、出力する時刻となったフレームであるとして、そのようなフレームがある場合、デコードコントローラ221は、出力する時刻となったフレームがあると判定する。
ステップS130において、出力する時刻となったフレームがないと判定された場合、フレームを出力しないので、処理はステップS132に進む。これに対して、ステップS130において、出力する時刻となったフレームがあると判定された場合、ステップS131において、出力部227は、デコードコントローラ221の制御の基に、出力する時刻となったフレームが記憶されている参照バンク231または表示専用バンク232からフレームを取得して、メモリ101に出力する。そしてメモリ101は、出力部227から供給された1フレーム分の映像信号を記憶する。
ステップS131において、フレームが出力されるか、またはステップS130において出力するフレームがないと判定された場合、ステップS132において、デコードコントローラ221は、処理を終了するか否かを判定する。例えば、復号コマンドキューに復号コマンドが1つも格納されていない場合、デコードコントローラ221は、処理を終了すると判定する。
ステップS132において、処理を終了しないと判定された場合、すなわちまだ復号コマンドキューに格納されている復号コマンドがある場合、処理はステップS121に戻り、上述した処理が繰り返される。
これに対して、ステップS132において、処理を終了すると判定された場合、デコード処理は終了される。
このようにして、デコーダ102は、復号コマンド生成部181から復号コマンドが供給されると、復号コマンドに含まれる遅延値だけフレームのデコードの開始を遅延させた後、復号コマンドを実行してフレームのデコードを開始する。
このように、復号コマンドに含まれる遅延値だけ、フレームのデコードの開始を遅延させた後、復号コマンドを実行してフレームのデコードを開始することで、デコードするフレームのピクチャタイプやGOP内の位置に関わらず、復号コマンドが供給されてから所定の時間後にデコードが指示されたフレームを出力することができる。したがって、符号化ストリームAのフレームのデコードが完了する時刻と、符号化ストリームBのフレームのデコードが完了する時刻とを同じ時刻にすることができ、複数の画像を同時に表示させる場合に、より簡単に画像の表示を同期させることができる。
なお、以上においては、編集の対象となる複数の符号化ストリームのそれぞれのビットレートが同じである場合について説明したが、符号化ストリームのそれぞれのビットレートが異なる場合、それぞれの符号化ストリームの処理レイテンシは異なる。
例えば、図20Aに示す素材1および素材2において、素材1のビデオデータ21−1のビットレートよりも、素材2のビデオデータ21−2のビットレートが高い場合、素材2の処理レイテンシは、素材1の処理レイテンシよりも長くなる。すなわち、素材2においては、素材1よりもビットレートが高い分だけ、符号化ストリームのデコーダへの入力時間やデコード時間により長い時間が必要となるため、素材2の処理レイテンシは、素材1の処理レイテンシよりも長くなる。なお、図20において、図4における場合と対応する部分には、同一の符号を付してあり、その説明は省略する。
図20Aでは、カーソル24が、ビデオデータ21−1のフレームAおよびビデオデータ21−2のフレームBに位置しているので、編集装置のアプリケーションプログラムを実行する制御部は、図20Bに示すように、時刻t1において、フレームA乃至フレーム(A+3)のそれぞれの表示を指示するコマンドと、フレームB乃至フレーム(B+3)のそれぞれの表示を指示するコマンドとを処理部に対してフレームごとに発行する。
処理部は、制御部からコマンドが供給されると、時刻t2においてデコーダを制御し、素材1のフレームAおよび素材2のフレームBのデコードを開始させる。そして、図20Bの例では、フレームAのデコードは時刻t4に完了しているが、素材1よりもビットレートの高い素材2のフレームBは、フレームAと同時刻に処理が開始されたにも関わらず時刻t6となるまでデコードが完了しない。
素材1の処理レイテンシは2表示周期であり、素材2の処理レイテンシは4表示周期であるので、図20Cに示すように、フレームAおよびフレームBの表示の同期をとるためには、フレームバッファ52−1には3フレーム分のビデオデータを記憶させるための記憶容量が必要となる。また、フレームAおよびフレームBが同時にコンポジッタ53に供給されるように、制御が行われなければならない。
このように、編集の対象となる複数の符号化ストリームのそれぞれのビットレートが異なる場合、図5に示した編集装置81においては、アプリケーションプログラムを実行するCPU91が符号化ストリームAおよび符号化ストリームBのそれぞれのビットレートを把握しているため、CPU91によって符号化ストリームAおよび符号化ストリームBの処理レイテンシが同じとなるように制御が行われる。
すなわち、CPU91の表示コマンド生成部163は、操作入力取得部161からの情報に基づいて、符号化ストリームAおよび符号化ストリームBのビットレートIDのうち、より高いビットレートを示すビットレートIDが表示コマンドに含まれるように、符号化ストリームAおよび符号化ストリームBのそれぞれの表示コマンドを発行する。
以下、図21のフローチャートを参照して、符号化ストリームAおよび符号化ストリームBのビットレートが異なる場合における表示制御処理について説明する。なお、ステップS161の処理乃至ステップS163の処理は、図13のステップS11の処理乃至ステップS13の処理のそれぞれと同様であるのでその説明は省略する。
ステップS164において、表示コマンド生成部163は、操作入力取得部161から供給されるビットレートIDを基に、編集の対象となる符号化ストリームAのビットレートと符号化ストリームBのビットレートとが異なるか否かを判定する。
ステップS164において、ビットレートが同じであると判定された場合、ビットレートIDを変更する必要はないので、ステップS165の処理はスキップされて、処理はステップS166に進む。
これに対して、ステップS164において、ビットレートが異なると判定された場合、ステップS165に進み、表示コマンド生成部163は、符号化ストリームAのビットレートID、および符号化ストリームBのビットレートIDのうち、より低いビットレートを示すビットレートIDが、より高いビットレートを示すビットレートIDとなるように、ビットレートの低い符号化ストリームのビットレートIDを変更する。
例えば、符号化ストリームAのビットレートが符号化ストリームBのビットレートよりも低い場合、表示コマンド生成部163は、符号化ストリームAのビットレートIDが、符号化ストリームBのビットレートIDとなるように、符号化ストリームAのビットレートIDを変更する。
ステップS165において、ビットレートIDが変更されるか、ステップS164においてビットレートが同じであると判定されると、ステップS166において、表示コマンド生成部163は、必要に応じて変更されたビットレートIDが含まれる表示コマンドを生成し、生成した表示コマンドをCPU99の時刻管理部172に送信する。
その後、ステップS167の処理乃至ステップS174の処理のそれぞれが行われるが、それらの処理は図13のステップS15の処理乃至ステップS22の処理のそれぞれと同様なので、その説明は省略する。
また、CPU99は、必要に応じて変更されたビットレートIDが含まれる表示コマンドを受信すると、その表示コマンドにより指定されたフレームのビットレートは、ビットレートIDにより示されるビットレートであるものとして処理を行うので、符号化ストリームAおよび符号化ストリームBには同じ遅延値が与えられる。
つまり、符号化ストリームのビットレートIDは、より高い方のビットレートとなるように変更されるので、各符号化ストリームに与えられる遅延値は、よりビットレートの高い符号化ストリーム、すなわち、より長い前処理時間を必要とする符号化ストリームにおいて、フレームのデコードの開始までに必要な遅延時間を示す遅延値とされる。
したがって、符号化ストリームAおよび符号化ストリームBについて、CUP99によりスケジューリングされた出力時刻に間に合うように各フレームのデコードを完了することができるとともに、デコードの完了までの処理レイテンシを同じ時間にすることができる。
このように、必要に応じてビットレートIDを変更することで、簡単に符号化ストリームAおよび符号化ストリームBの処理レイテンシが同じとなるように制御することができ、複数の画像を同時に表示させる場合に、より簡単に画像の表示を同期させることができる。
なお、CPU91においてビットレートIDを変更すると説明したが、復号コマンド生成部181がビットレートIDを変更するようにしてもよい。そのような場合、復号コマンド生成部181は、時刻管理部172から取得した符号化ストリームAの表示コマンドに含まれるビットレートIDと、符号化ストリームBの表示コマンドに含まれるビットレートIDとを用いて、ビットレートを比較し、より低いビットレートの符号化ストリームのビットレートIDを、より高いビットレートの符号化ストリームのビットレートIDに変更し、復号コマンドを生成する。
また、以上においては、編集の対象となる符号化ストリームが2つである場合を例として説明したが、編集の対象となる符号化ストリームは3以上であってもよい。
さらに、以上の説明においては、CPU91とCPU99とが信号を授受し、分担して、制御を行うものとして説明したが、例えば、同様の処理を、1つのCPUを用いて実行するようにしてもよい。そのような場合、例えば、図14を参照して説明した処理が、CPU91によって実行される。
さらに、また、デコード方式としてMPEGを用いた場合を例として説明しているが、フレーム相関を伴う他のデコード方式により処理を行う場合においても、本発明は適用可能であることはいうまでもない。例えば、AVC(Advanced Video Coding)/H.264などにおいて、本発明は適用可能である。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図22は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。パーソナルコンピュータ501のCPU511は、ROM(Read Only Memory)512、または記憶部518に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)513には、CPU511が実行するプログラムやデータなどが適宜記憶される。これらのCPU511、ROM512、およびRAM513は、バス514により相互に接続されている。
CPU511にはまた、バス514を介して入出力インターフェース515が接続されている。入出力インターフェース515には、キーボード、マウス、マイクロホンなどよりなる入力部516、ディスプレイ、スピーカなどよりなる出力部517が接続されている。CPU511は、入力部516から入力される指令に対応して各種の処理を実行する。そして、CPU511は、処理の結果を出力部517に出力する。
入出力インターフェース515に接続されている記憶部518は、例えばハードディスクからなり、CPU511が実行するプログラムや各種のデータを記憶する。通信部519は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部519を介してプログラムを取得し、記憶部518に記憶してもよい。
入出力インターフェース515に接続されているドライブ520は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア531が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部518に転送され、記憶される。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図22に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア531、または、プログラムが一時的もしくは永続的に格納されるROM512や、記憶部518を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部519を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
81 編集装置, 91 CPU, 96 HDD, 99 CPU, 101 メモリ, 102−1,102−2,102 デコーダ, 103 コンポジッタ, 104 リサイザ, 131 制御部, 132 デコーダ, 162 ストリーム転送部, 163 表示コマンド生成部, 164 表示制御部, 171 ストリーム入力部, 172 時刻管理部, 173 実行制御部, 174 遅延テーブル保持部, 181 復号コマンド生成部, 221 デコードコントローラ, 222 クロック信号発生部, 223 ストリームバッファ, 224 デコード処理部, 225 フレームメモリ