(57)【要約】【課題】より多様な条件下において、ソフトウェアエンコーダやソフトウェアデコーダに対してハードウェア資源をより適切に割り当てることができるようにする。【解決手段】符号化プログラム選択部５１７は、各種条件に従って、XDR-RAM４０３に保持されている符号化プログラム５４６の中から、実行するプログラムを１つ選択する。プログラム実行部５１８は、符号化プログラム選択部５１７により選択された符号化プログラムを実行する。復号プログラム選択部５２５は、各種条件に従って、XDR-RAM４０３に保持されている復号プログラム５４７の中から、実行するプログラムを１つ選択する。プログラム実行部５２６は、復号プログラム選択部５２５により選択された復号プログラムを実行する。本発明は、例えば、符号化装置または復号装置に適用することができる。【選択図】図３０
2008287460.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスから構成される符号化処理を行うプログラムを実行する情報処理装置において、
前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の符号化プログラムを記憶するプログラム記憶手段と、
前記プログラム記憶手段により記憶された複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択するプログラム選択手段と、
前記プログラム選択手段により選択された利用符号化プログラムを利用して、符号化処理を実行するプログラム実行手段と
を備える情報処理装置。
【請求項２】
前記プログラム選択手段は、利用可能な前記演算処理部の個数又は前記演算処理部に内蔵されるメモリの容量に応じて、前記利用符号化プログラムを選択する
請求項１に記載の情報処理装置。
【請求項３】
前記プログラム選択手段は、符号化処理の対象となる画像データの画像パラメータに応じて、前記利用符号化プログラムを選択する
請求項１に記載の情報処理装置。
【請求項４】
前記プログラム選択手段は、前記画像データを符号化する際の符号化パラメータに応じて、前記利用符号化プログラムを選択する
請求項１に記載の情報処理装置。
【請求項５】
前記プログラム選択手段は、符号化処理方式を示すコーデックの種類に応じて、前記利用符号化プログラムを選択する
請求項１に記載の情報処理装置。
【請求項６】
前記符号化処理は、MPEG（Moving Picture Experts Group）２規格又はH.264/AVC（Advanced Video Coding）規格に準じた符号化処理である
請求項１に記載の情報処理装置。
【請求項７】
前記符号化処理は、JPEG（Joint Photographic Experts Group）２０００規格に準じた符号化処理である
請求項１に記載の情報処理装置。
【請求項８】
前記符号化処理を構成する複数のプロセスは、
前記画像データに対して階層的にフィルタ処理を行い、周波数帯域毎に分解された係数データからなる複数のサブバンドを生成するフィルタ処理と、
前記フィルタ処理の途中で発生する中間データを保持する中間データ保持処理と、前記フィルタ処理により生成された前記係数データを保持する係数保持処理と、
前記係数保持処理により保持されている前記係数データを所定の順序で出力するように並び替える係数並び替え処理と、
前記係数並び替え処理により順序が並び替えられた前記係数データをエントロピ符号化するエントロピ符号化処理と
を含む請求項１に記載の情報処理装置。
【請求項９】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、共通の演算処理部を用いて実行させるパターンを含む
請求項８に記載の情報処理装置。
【請求項１０】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、前記画像データの輝度成分および色差成分の何れに対しても、前記共通の演算処理部を用いて実行させるパターンを含む
請求項９に記載の情報処理装置。
【請求項１１】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、前記画像データの輝度成分に対する処理と、前記画像データの色差成分に対する処理とを互いに異なる演算処理部を用いて実行させるパターンを含む
請求項９に記載の情報処理装置。
【請求項１２】
前記割り当てパターンは、前記フィルタ処理と、前記係数並び替え処理および前記エントロピ符号化処理とに対して、互いに異なる演算処理部を用いて実行させるパターンを含む
請求項１に記載の情報処理装置。
【請求項１３】
複数のプロセスから構成された符号化処理を行うプログラムを実行する情報処理装置の情報処理方法であって、
記憶部に予め記憶された、前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択し、
選択した利用符号化プログラムを利用して、符号化処理を実行する
ステップを含む情報処理方法。
【請求項１４】
複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置において、
前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の復号プログラムを記憶するプログラム記憶手段と、
前記プログラム記憶手段により記憶された複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択するプログラム選択手段と、
前記プログラム選択手段により選択された利用復号プログラムを利用して、復号処理を実行するプログラム実行手段と
を備える情報処理装置。
【請求項１５】
前記復号処理を構成する複数のプロセスは、
符号化データをエントロピ復号し、画像データに対して階層的にフィルタ処理がなされ周波数帯域毎に分解された複数のサブバンドの係数データを生成するエントロピ復号処理と、
前記エントロピ復号処理により生成された前記係数データを保持する係数保持処理と、
前記係数保持処理により保持されている前記係数データを読み出してフィルタ処理を行い、周波数帯域に分解された複数のサブバンドの係数データを合成して画像データを生成するフィルタ処理と
を含む請求項１に記載の情報処理装置。
【請求項１６】
複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置の情報処理方法であって、
記憶部に予め記憶された、前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択し、
選択した利用復号プログラムを利用して、復号処理を実行する
ステップを含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法に関し、特に、より多様な条件下において、ソフトウェアエンコーダやソフトウェアデコーダに対してハードウェア資源をより適切に割り当てることができるようにした情報処理装置および方法に関する。
【背景技術】
【０００２】
従来、画像データを圧縮符号化するエンコーダがある（例えば、特許文献１参照）。このようなエンコーダは、ハードウェアにより実現可能であるが、ソフトウェアプログラムにより実現することもできる。ソフトウェアエンコーダの場合、例えば、パーソナルコンピュータ等において、ソフトウェアプログラムがRAM（Random Access Memory）にロードされ、ソフトウェアプログラムに含まれる各処理がCPU（Central Processing Unit）により実行される。また、符号化される画像データ、符号化により生成される符号化データ、および、処理中に発生する各種データ等は、RAMに適宜保持される。
【０００３】
同様に、画像データが圧縮符号化された符号化データを復号するデコーダをソフトウェアプログラムにより実現するソフトウェアデコーダも存在する。このソフトウェアデコーダもソフトウェアエンコーダと同様に、例えば、パーソナルコンピュータ等において、ソフトウェアプログラムがRAMにロードされ、ソフトウェアプログラムに含まれる各処理がCPUにより実行される。また、復号される符号化データ、復号された画像データ、および、処理中に発生する各種データ等は、RAMに適宜保持される。
【０００４】
通常のパーソナルコンピュータの場合、CPUとRAMとの間は、共有バスで接続されている。一般的に、共有バスの動作周波数は、CPUの動作周波数に比べて低く、また、共有バスは他のデバイス間のデータの授受にも利用される。従って、CPUの外部に設けられたRAMは大容量であるものの、データの読み出しや書き込みの速度は、基本的にCPUの動作速度に対して遅い。また、共有バスの混雑状況によっては、遅延がさらに大きくなってしまう恐れもある。
【０００５】
これに対して、CPUの内部に設けられたキャッシュメモリは、高速に動作するSRAM（Static Random Access Memory）等により構成されており、通常の場合、動作周波数も共有バスより高く、CPUの外部のRAMよりも高速に読み出しや書き込みを行うことができる。また、キャッシュメモリはそのCPUにより独占的に使用されるので、CPUは、他のデバイス間のデータの授受に影響を受けずに、読み出しや書き込みを高速に行うことができる。ただし、キャッシュメモリは、コスト等の点から、その容量がCPUの外部に設けられたRAMに比べて小さく制限されている。
【０００６】
また、近年においては、複数のCPUが並列に動作するコンピュータも存在する。
【０００７】
ソフトウェアエンコーダやソフトウェアデコーダの場合、CPUやメモリ等のハードウェア資源の割り当てを行う必要があるが、符号化処理や復号処理の効率を不要に低下させないように、符号化処理や復号処理に対してCPUやメモリ等のハードウェア資源を適切に割り当てる必要がある。
【０００８】
【特許文献１】特開平９−２６１６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、近年、CPUやメモリ等のハードウェア資源の構成が複雑化することにより、ハードウェア資源の適切な割り当てを容易に行うことができなくなってきた。また、ソフトウェアエンコーダやソフトウェアデコーダに求められる特性が、画像データの内容（画像）、符号化方法、復号方法、使用可能なハードウェア資源、または使用目的等の各種条件によって異なる場合があり、それによってハードウェア資源の適切な割り当てパターンが異なる恐れもあった。
【００１０】
通常のパーソナルコンピュータの場合、ソフトウェアプログラムにおいて使用するハードウェア資源を指定していなくても、ハードウェア資源の割り当てをOSが行う場合もあるが、ソフトウェアエンコーダやソフトウェアデコーダに求められる特性を考慮して割り当てを行うことは少なく、ソフトウェアエンコーダやソフトウェアデコーダとしての処理効率を向上させるように適切にハードウェア資源を割り当てるとは限らず、場合によっては、不要な処理効率の低下や不要な遅延時間の増大を招く恐れもあった。
【００１１】
本発明は、このような従来の実情に鑑みて提案されたものであり、より多様な条件下において、ソフトウェアエンコーダやソフトウェアデコーダに対してハードウェア資源をより適切に割り当てることができることができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の第１の側面は、複数のプロセスから構成される符号化処理を行うプログラムを実行する情報処理装置において、前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の符号化プログラムを記憶するプログラム記憶手段と、前記プログラム記憶手段により記憶された複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択するプログラム選択手段と、前記プログラム選択手段により選択された利用符号化プログラムを利用して、符号化処理を実行するプログラム実行手段とを備える情報処理装置である。
【００１３】
前記プログラム選択手段は、利用可能な前記演算処理部の個数又は前記演算処理部に内蔵されるメモリの容量に応じて、前記利用符号化プログラムを選択することができる。
【００１４】
前記プログラム選択手段は、符号化処理の対象となる画像データの画像パラメータに応じて、前記利用符号化プログラムを選択することができる。
【００１５】
前記プログラム選択手段は、前記画像データを符号化する際の符号化パラメータに応じて、前記利用符号化プログラムを選択することができる。
【００１６】
前記プログラム選択手段は、符号化処理方式を示すコーデックの種類に応じて、前記利用符号化プログラムを選択することができる。
【００１７】
前記符号化処理は、MPEG（Moving Picture Experts Group）２規格又はH.264/AVC（Advanced Video Coding）規格に準じた符号化処理であることができる。
【００１８】
前記符号化処理は、JPEG（Joint Photographic Experts Group）２０００規格に準じた符号化処理であることができる。
【００１９】
前記符号化処理を構成する複数のプロセスは、前記画像データに対して階層的にフィルタ処理を行い、周波数帯域毎に分解された係数データからなる複数のサブバンドを生成するフィルタ処理と、前記フィルタ処理の途中で発生する中間データを保持する中間データ保持処理と、前記フィルタ処理により生成された前記係数データを保持する係数保持処理と、前記係数保持処理により保持されている前記係数データを所定の順序で出力するように並び替える係数並び替え処理と、前記係数並び替え処理により順序が並び替えられた前記係数データをエントロピ符号化するエントロピ符号化処理とを含むことができる。
【００２０】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、共通の演算処理部を用いて実行させるパターンを含むことができる。
【００２１】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、前記画像データの輝度成分および色差成分の何れに対しても、前記共通の演算処理部を用いて実行させるパターンを含むことができる。
【００２２】
前記割り当てパターンは、前記フィルタ処理、前記係数並び替え処理、および前記エントロピ符号化処理に対して、前記画像データの輝度成分に対する処理と、前記画像データの色差成分に対する処理とを互いに異なる演算処理部を用いて実行させるパターンを含むことができる。
【００２３】
前記割り当てパターンは、前記フィルタ処理と、前記係数並び替え処理および前記エントロピ符号化処理とに対して、互いに異なる演算処理部を用いて実行させるパターンを含むことができる。
【００２４】
本発明の第１の側面はまた、複数のプロセスから構成された符号化処理を行うプログラムを実行する情報処理装置の情報処理方法であって、記憶部に予め記憶された、前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択し、選択した利用符号化プログラムを利用して、符号化処理を実行するステップを含む情報処理方法である。
【００２５】
本発明の第２の側面は、複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置において、前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の復号プログラムを記憶するプログラム記憶手段と、前記プログラム記憶手段により記憶された複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択するプログラム選択手段と、前記プログラム選択手段により選択された利用復号プログラムを利用して、復号処理を実行するプログラム実行手段とを備える情報処理装置である。
【００２６】
前記復号処理を構成する複数のプロセスは、符号化データをエントロピ復号し、画像データに対して階層的にフィルタ処理がなされ周波数帯域毎に分解された複数のサブバンドの係数データを生成するエントロピ復号処理と、前記エントロピ復号処理により生成された前記係数データを保持する係数保持処理と、前記係数保持処理により保持されている前記係数データを読み出してフィルタ処理を行い、周波数帯域に分解された複数のサブバンドの係数データを合成して画像データを生成するフィルタ処理とを含むことができる。
【００２７】
本発明の第２の側面はまた、複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置の情報処理方法であって、記憶部に予め記憶された、前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は前記複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択し、選択した利用復号プログラムを利用して、復号処理を実行するステップを含む情報処理方法である。
【００２８】
本発明の第１の側面においては、符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の符号化プログラムが記憶され、その複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムが、利用符号化プログラムとして選択され、その選択された利用符号化プログラムを利用して、符号化処理が実行される。
【００２９】
本発明の第２の側面においては、復号処理を構成する複数のプロセスのそれぞれに対する演算処理部の割り当てパターン又は複数のプロセスで利用するメモリの配置パターンがそれぞれ異なる複数の復号プログラムが記憶され、その複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムが、利用復号プログラムとして選択され、その選択された利用復号プログラムを利用して、復号処理が実行される。
【発明の効果】
【００３０】
本発明によれば、ソフトウェアエンコーダやソフトウェアデコーダをコンピュータに実装することができる。特に、より多様な条件下において、ソフトウェアエンコーダやソフトウェアデコーダに対してハードウェア資源をより適切に割り当てることができる。
【発明を実施するための最良の形態】
【００３１】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３２】
本発明の第１の側面は、複数のプロセスから構成される符号化処理を行うプログラムを実行する情報処理装置（例えば、図２８の情報処理システム３００）において、前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部（例えば、図２８のサブCPUコア４４２）の割り当てパターン又は前記複数のプロセスで利用するメモリ（例えば、図２９のLS４５１およびXDR-RAM４０３）の配置パターンがそれぞれ異なる複数の符号化プログラム（例えば、図３０の符号化プログラム５４６）を記憶するプログラム記憶手段（例えば、図３０のXDR-RAM４０３）と、前記プログラム記憶手段により記憶された複数の符号化プログラムの中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択するプログラム選択手段（例えば、図３０の符号化プログラム選択部５１７）と、前記プログラム選択手段により選択された利用符号化プログラムを利用して、符号化処理を実行するプログラム実行手段（例えば、図３０のプログラム実行部５１８）とを備える情報処理装置である。
【００３３】
前記プログラム選択手段は、利用可能な前記演算処理部の個数又は前記演算処理部に内蔵されるメモリの容量（例えば、図３０の資源情報取得部５１３により取得される資源情報）に応じて、前記利用符号化プログラムを選択することができる。
【００３４】
前記プログラム選択手段は、符号化処理の対象となる画像データの画像パラメータ（例えば、図３０の画像パラメータ５４３）に応じて、前記利用符号化プログラムを選択することができる。
【００３５】
前記プログラム選択手段は、前記画像データを符号化する際の符号化パラメータ（例えば、図３０の符号化パラメータ５４４）に応じて、前記利用符号化プログラムを選択することができる。
【００３６】
前記符号化処理を構成する複数のプロセスは、前記画像データに対して階層的にフィルタ処理を行い、周波数帯域毎に分解された係数データからなる複数のサブバンドを生成するフィルタ処理（例えば、図１のウェーブレット変換部１１）と、前記フィルタ処理の途中で発生する中間データを保持する中間データ保持処理（例えば、図１の途中計算用バッファ部１２）と、前記フィルタ処理により生成された前記係数データを保持する係数保持処理（例えば、図１の係数並び替え用バッファ部１３）と、前記係数保持処理により保持されている前記係数データを所定の順序で出力するように並び替える係数並び替え処理（例えば、図１の係数並び替え部１４）と、前記係数並び替え処理により順序が並び替えられた前記係数データをエントロピ符号化するエントロピ符号化処理（例えば、図１のエントロピ符号化部１５）とを含むことができる。
【００３７】
本発明の第１の側面はまた、複数のプロセスから構成された符号化処理を行うプログラムを実行する情報処理装置（例えば、図２８の情報処理システム３００）の情報処理方法であって、記憶部に予め記憶された、前記符号化処理を構成する複数のプロセスのそれぞれに対する演算処理部（例えば、図２８のサブCPUコア４４２）の割り当てパターン又は前記複数のプロセスで利用するメモリ（例えば、図２９のLS４５１およびXDR-RAM４０３）の配置パターンがそれぞれ異なる複数の符号化プログラム（例えば、図３０の符号化プログラム５４６）の中から、符号化処理を実行する際に利用する符号化プログラムを、利用符号化プログラムとして選択し（例えば、図３３のステップＳ１０７）、選択した利用符号化プログラムを利用して、符号化処理を実行する（例えば、図３３のステップＳ１０８）ステップを含む情報処理方法である。
【００３８】
本発明の第２の側面は、複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置（例えば、図２８の情報処理システム３００）において、前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部（例えば、図２８のサブCPUコア４４２）の割り当てパターン又は前記複数のプロセスで利用するメモリ（例えば、図２９のLS４５１およびXDR-RAM４０３）の配置パターンがそれぞれ異なる複数の復号プログラム（例えば、図３０の復号プログラム５４７）を記憶するプログラム記憶手段と、前記プログラム記憶手段により記憶された複数の復号プログラムの中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択するプログラム選択手段（例えば、図３０の復号プログラム選択部５２５）と、前記プログラム選択手段により選択された利用復号プログラムを利用して、復号処理を実行するプログラム実行手段（例えば、図３０のプログラム実行部５２６）とを備える情報処理装置である。
【００３９】
前記復号処理を構成する複数のプロセスは、符号化データをエントロピ復号し、画像データに対して階層的にフィルタ処理がなされ周波数帯域毎に分解された複数のサブバンドの係数データを生成するエントロピ復号処理（例えば、図６のエントロピ復号部２１）と、前記エントロピ復号処理により生成された前記係数データを保持する係数保持処理（例えば、図６の係数バッファ部２２）と、前記係数保持処理により保持されている前記係数データを読み出してフィルタ処理を行い、周波数帯域に分解された複数のサブバンドの係数データを合成して画像データを生成するフィルタ処理（例えば、図６のウェーブレット逆変換部２３）とを含むことができる。
【００４０】
本発明の第２の側面はまた、複数のプロセスから構成される復号処理を行う復号プログラムを実行する情報処理装置（例えば、図２８の情報処理システム３００）の情報処理方法であって、記憶部に予め記憶された、前記復号処理を構成する複数のプロセスのそれぞれに対する演算処理部（例えば、図２８のサブCPUコア４４２）の割り当てパターン又は前記複数のプロセスで利用するメモリ（例えば、図２９のLS４５１およびXDR-RAM４０３）の配置パターンがそれぞれ異なる複数の復号プログラム（例えば、図３０の復号プログラム５４７）の中から、復号処理を実行する際に利用する復号プログラムを、利用復号プログラムとして選択し（例えば、図３６のステップＳ２０５）、選択した利用復号プログラムを利用して、復号処理を実行する（例えば、図３６のステップＳ２０６）ステップを含む情報処理方法である。
【００４１】
以下、本発明の実施の形態について説明する。最初に符号化部の構成について説明する。
【００４２】
図１は、本発明を適用した符号化部の構成例を示すブロック図である。図１に示される符号化部１０は、ソフトウェアプログラムにより構成され、画像データを符号化して符号化データを生成するソフトウェアエンコーダが所定の情報処理装置のCPU（Central Processing Unit）により実行されることにより実現される機能を模式的に示したものである。図１に示されるように符号化部１０は、ウェーブレット変換部１１、途中計算用バッファ部１２、係数並び替え用バッファ部１３、係数並び替え部１４、およびエントロピ符号化部１５の機能を有する。
【００４３】
符号化部１０に入力された画像データは、ウェーブレット変換部１１を介して途中計算用バッファ部１２に一時的に溜め込まれる。ウェーブレット変換部１１は、途中計算用バッファ部１２に溜め込まれた画像データに対してウェーブレット変換を施す。すなわち、ウェーブレット変換部１１は、途中計算用バッファ部１２から画像データを読み出して分析フィルタによりフィルタ処理を施して低域成分および高域成分の係数のデータを生成し、生成された係数データを途中計算用バッファ部１２に格納する。ウェーブレット変換部１１は、水平分析フィルタと垂直分析フィルタとを有し、画像データ群に対して、画面水平方向と画面垂直方向の両方について分析フィルタ処理を行う。ウェーブレット変換部１１は、途中計算用バッファ部１２に格納された低域成分の係数データを再度読み出し、読み出した係数データに対して分析フィルタによるフィルタ処理を施して、高域成分および低域成分の係数のデータをさらに生成する。生成された係数データは、途中計算用バッファ部１２に格納される。
【００４４】
ウェーブレット変換部１１は、この処理を繰り返して分解レベルが所定レベルに達したら、途中計算用バッファ部１２から係数データを読み出し、読み出された係数データを係数並び替え用バッファ部１３に書き込む。
【００４５】
係数並び替え部１４は、係数並び替え用バッファ部１３に書き込まれた係数データを所定の順序で読み出し、エントロピ符号化部１５に供給する。エントロピ符号化部１５は、供給された係数データを、所定の方法で量子化し、例えばハフマン符号化や算術符号化といった所定のエントロピ符号化方式で符号化する。エントロピ符号化部１５は、生成した符号化データを符号化部１０の外部に出力する。
【００４６】
次に、図１のウェーブレット変換部１１で行われる処理について、より詳細に説明する。先ず、ウェーブレット変換について、概略的に説明する。画像データに対するウェーブレット変換では、図２に概略的に示されるように、画像データを空間周波数の高い帯域と低い帯域とに分割する処理を、分割の結果得られる空間周波数の低い帯域のデータに対して再帰的に繰り返す。こうして、空間周波数の低い帯域のデータをより小さな領域に追い込んでいくことで、効率的な圧縮符号化を可能とする。
【００４７】
なお、図２は、画像データの最低域成分領域に対する低域成分の領域Ｌおよび高域成分の領域Ｈへの分割処理を３回、繰り返し、分割の階層の総数を示す分割レベル＝３とした場合の例である。図２において、"Ｌ"および"Ｈ"は、それぞれ低域成分および高域成分を表し、"Ｌ"および"Ｈ"の順序は、前側が横方向に分割した結果の帯域を示し、後側が縦方向に分割した結果の帯域を示す。また、"Ｌ"および"Ｈ"の前の数字は、その領域の階層を示しており、低域成分の階層ほど小さい値で表されている。この階層の最大値が、ウェーブレット変換のその時の分割レベル（分割数）を示す。
【００４８】
また、図２の例から分かるように、画面の右下の領域から左上の領域にかけて段階的に処理がなされ、低域成分が追い込まれていく。すなわち、図２の例では、画面の右下の領域が最も低域成分の少ない（高域成分が最も多く含まれる）領域３ＨＨとされる、画面が４分割された左上の領域は、さらに４分割され、この４分割された領域のうち左上の領域がさらに４分割される。最も左上隅の領域は、最も低域成分を多く含む領域０ＬＬとされる。
【００４９】
低域成分に対して繰り返し変換および分割を行うのは、画像のエネルギが低域成分に集中しているためである。このことは、図３Ａに一例が示される分割レベル＝１の状態から、図３Ｂに一例が示される分割レベル＝３の状態のように分割レベルを進めていくに従って、図３Ｂに示されるようにしてサブバンドが形成されていくことからも、理解される。例えば、図２におけるウェーブレット変換の分割レベルは３であり、この結果、１０個のサブバンドが形成されている。
【００５０】
ウェーブレット変換部１１は、通常、低域フィルタと高域フィルタとから構成されるフィルタバンクを用いて、上述のような処理を行う。なお、デジタルフィルタは、通常、複数タップ長のインパルス応答すなわちフィルタ係数を持っているため、フィルタ処理を行えるだけの入力画像データまたは係数データを予めバッファリングしておく必要がある。また、ウェーブレット変換を多段にわたって行う場合も同様に、前段で生成したウェーブレット変換係数を、フィルタ処理が行える数だけバッファリングしておく必要がある。
【００５１】
このウェーブレット変換の具体的な例として、５×３フィルタを用いた方法について説明する。この５×３フィルタを用いた方法は、JPEG（Joint Photographic Experts Group）２０００規格でも採用されており、少ないフィルタタップ数でウェーブレット変換を行うことができる点で、優れた方法である。
【００５２】
５×３フィルタのインパルス応答（Ｚ変換表現）は、次の式（１）および式（２）に示すように、低域フィルタＨ0（ｚ）と、高域フィルタＨ1（ｚ）とから構成される。
【００５３】
Ｈ0（ｚ）＝（−１＋２ｚ-1＋６ｚ-2＋２ｚ-3−ｚ-4）／８    ・・・（１）
Ｈ1（ｚ）＝（−１＋２ｚ-1−ｚ-2）／２            ・・・（２）
【００５４】
これら式（１）および式（２）によれば、低域成分および高域成分の係数を、直接的に算出することができる。ここで、リフティング(Lifting)技術を用いることで、フィルタ処理の計算を減らすことができる。
【００５５】
次に、このウェーブレット変換方法について、さらに具体的に説明する。図４は、５×３フィルタのリフティングによるフィルタ処理を、分解レベル＝２まで実行した例を示している。なお、図４において、図の左側に分析フィルタとして示される部分は、図１のウェーブレット変換部１１のフィルタである。また、図の右側に合成フィルタとして示される部分は、後述するウェーブレット逆変換部のフィルタである。
【００５６】
なお、以下の説明では、例えば表示デバイスなどにおいて画面の左上隅の画素を先頭として、画素が画面の左端から右端に向けて走査されて１ラインが構成され、ライン毎の走査が画面の上端から下端に向けて行われて１画面が構成されるものとする。
【００５７】
図４において、左端列は、原画像データのライン上の対応する位置にある画素データが縦方向に並べられて示されている。すなわち、ウェーブレット変換部１１におけるフィルタ処理は、垂直フィルタを用いて画面上を画素が縦に走査されて行われる。左端から１列目乃至３列目が分割レベル＝１のフィルタ処理を示し、４列目乃至６列目が分割レベル＝２のフィルタ処理を示す。左端から２列目は、左端の原画像データの画素に基づく高域成分出力、左端から３列目は、原画像データおよび高域成分出力に基づく低域成分出力を示す。分割レベル＝２のフィルタ処理は、左端から４列目乃至６列目に示されるように、分割レベル＝１のフィルタ処理の出力に対して処理がなされる。
【００５８】
分解レベル＝１のフィルタ処理において、第１段階のフィルタ処理として、原画像データの画素に基づき高域成分の係数データが算出され、第２段階のフィルタ処理として、第１段階のフィルタ処理で算出された高域成分の係数データと、原画像データの画素とに基づき低域成分の係数データが算出される。分解レベル＝１の一例のフィルタ処理を、図４における左側（分析フィルタ側）の第１列目乃至第３列目に示す。算出された高域成分の係数データは、図１の係数並び替え用バッファ部１３に格納される。また、算出された低域成分の係数データは、図１の途中計算用バッファ部１２に格納される。
【００５９】
図４においては、係数並び替え用バッファ部１３は、一点鎖線で囲まれた部分として示し、途中計算用バッファ部１２は、点線で囲まれた部分として示す。
【００６０】
途中計算用バッファ部１２に保持された分解レベル＝１のフィルタ処理の結果に基づき、分解レベル＝２のフィルタ処理が行われる。分解レベル＝２のフィルタ処理では、分解レベル＝１のフィルタ処理において低域成分の係数として算出された係数データを、低域成分および高域成分を含んだ係数データと見做して、分解レベル＝１と同様のフィルタ処理を行う。分解レベル＝２のフィルタ処理により算出された、高域成分の係数データおよび低域成分の係数データは、係数並び替え用バッファ部１３に格納される。
【００６１】
ウェーブレット変換部１１では、上述したようなフィルタ処理を、画面の水平方向および垂直方向にそれぞれ行う。例えば、先ず、分解レベル＝１のフィルタ処理を水平方向に行い、生成された高域成分および低域成分の係数データを途中計算用バッファ部１２に格納する。次に、途中計算用バッファ部１２に格納された係数データに対して、垂直方向に分解レベル＝１のフィルタ処理を行う。この分解レベル＝１の水平および垂直方向の処理により、高域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域ＨＨおよび領域ＨＬと、低域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域ＬＨおよび領域ＬＬとの４領域が形成される。
【００６２】
そして、分解レベル＝２では、水平方向および垂直方向のそれぞれについて、分解レベル＝１で生成された低域成分の係数データに対してフィルタ処理が行われる。すなわち、分解レベル＝２では、分解レベル＝１で分割されて形成された領域ＬＬがさらに４分割され、領域ＬＬ内にさらに領域ＨＨ、領域ＨＬ、領域ＬＨおよび領域ＬＬが形成される。
【００６３】
ウェーブレット変換部１１は、ウェーブレット変換によるフィルタ処理を、画面の縦方向について、数ライン毎の処理に分割して、複数回に分けて段階的に行うようにしている。図４の例では、画面上の第１ラインからの処理になる１回目の処理は、７ラインについてフィルタ処理を行い、８ライン目からの処理になる２回目以降の処理は、４ライン毎にフィルタ処理を行っている。このライン数は、高域成分と低域成分とに２分解した後に、１ライン分の最低域成分が生成されるために必要なライン数に基づく。
【００６４】
なお、以下において、この最低域成分の１ライン分（最低域成分のサブバンドの１ライン分の係数データ）を生成するために必要な、他のサブバンドも含めたラインの集まりを、プレシンクト（またはラインブロック）と称する。ここでラインとは、ウェーブレット変換前の画像データに対応するピクチャ若しくはフィールド内、または各サブバンド内において形成される１行分の画素データ若しくは係数データのことを示す。すなわち、プレシンクト（ラインブロック）とは、ウェーブレット変換前の元の画像データにおける、ウェーブレット変換後の最低域成分のサブバンド１ライン分の係数データを生成するために必要なライン数分の画素データ群、または、その画素データ群をウェーブレット変換して得られる各サブバンドの係数データ群のことを示す。
【００６５】
図４によれば、分解レベル＝２のフィルタ処理結果で得られる係数Ｃ５は、係数Ｃ４および途中計算用バッファ部１２に格納された係数Ｃaに基づき算出され、係数Ｃ４は、途中計算用バッファ部１２に格納された係数Ｃa、係数Ｃbおよび係数Ｃcに基づき算出される。さらに、係数Ｃcは、係数並び替え用バッファ部１３に格納される係数Ｃ２および係数Ｃ３、並びに、第５ラインの画素データに基づき算出される。また、係数Ｃ３は、第５ライン乃至第７ラインの画素データに基づき算出される。このように、分割レベル＝２における低域成分の係数Ｃ５を得るためには、第１ライン乃至第７ラインの画素データが必要とされる。
【００６６】
これに対して、２回目以降のフィルタ処理においては、前回までのフィルタ処理で既に算出され係数並び替え用バッファ部１３に格納されている係数データを用いることができるので、必要なライン数が少なくて済む。
【００６７】
すなわち、図４によれば、分解レベル＝２のフィルタ処理結果で得られる低域成分の係数のうち、係数Ｃ５の次の係数である係数Ｃ９は、係数Ｃ４および係数Ｃ８、並びに、途中計算用バッファ部１２に格納された係数Ｃcに基づき算出される。係数Ｃ４は、上述した１回目のフィルタ処理により既に算出され、係数並び替え用バッファ部１３に格納されている。同様に、係数Ｃcは、上述の１回目のフィルタ処理により既に算出され、途中計算用バッファ部１２に格納されている。したがって、この２回目のフィルタ処理においては、係数Ｃ８を算出するためのフィルタ処理のみが、新たになされることになる。この新たなフィルタ処理は、第８ライン乃至第１１ラインがさらに用いられてなされる。
【００６８】
このように、２回目以降のフィルタ処理は、前回までのフィルタ処理により算出され途中計算用バッファ部１２および係数並び替え用バッファ部１３に格納されたデータを用いることができるので、それぞれ４ライン毎の処理で済むことになる。
【００６９】
なお、画面上のライン数が符号化のライン数と合致しない場合は、原画像データのラインを所定の方法で複製してライン数を符号化のライン数と合わせて、フィルタ処理を行う。
【００７０】
このように、最低域成分１ライン分の係数データが得られるだけのフィルタ処理を段階的に、画面全体のラインに対して複数回に分けて（プレシンクト単位で）行うことで、符号化データを伝送した際に低遅延で復号画像を得ることを可能としている。
【００７１】
ウェーブレット変換を行うためには、ウェーブレット変換そのものを実行するために用いられる第１のバッファと、所定の分割レベルまで処理を実行する間に生成される係数を格納するための第２のバッファとが必要とされる。第１のバッファは、途中計算用バッファ部１２に対応し、図４においては点線で囲まれて示されている。また、第２のバッファは、係数並び替え用バッファ部１３に対応し、図４においては一点鎖線に囲まれて示されている。第２のバッファに格納された係数は、復号の際に用いられるため、後段のエントロピ符号化処理の対象とされる。
【００７２】
次に、図１の係数並び替え部１４の処理について説明する。上述したように、ウェーブレット変換部１１で算出された係数データは、係数並び替え用バッファ部１３に格納され、係数並び替え部１４により順序を並び替えられて読み出され、コーディングユニット単位でエントロピ符号化部１５に送出される。
【００７３】
既に説明したように、ウェーブレット変換においては、高域成分側から低域成分側へと係数が生成されていく。図４の例では、１回目において、原画像の画素データにより、分解レベル＝１のフィルタ処理で、高域成分の係数Ｃ１、係数Ｃ２および係数Ｃ３が順次生成される。そして、分解レベル＝１のフィルタ処理で得られた低域成分の係数データに対して分解レベル＝２のフィルタ処理を行い、低域成分の係数Ｃ４および係数Ｃ５が順次生成される。すなわち、第１回目では、係数Ｃ１、係数Ｃ２、係数Ｃ３、係数Ｃ４、係数Ｃ５の順に、係数データが生成される。この係数データの生成順は、ウェーブレット変換の原理上、必ずこの順序（高域から低域の順）になる。
【００７４】
これに対して、復号側では、低遅延で即座に復号を行うためには低域成分から画像の生成および出力を行う必要がある。そのため、符号化側で生成された係数データを最低域成分側から高域成分側に向けて並び替えて復号側に供給することが望ましい。
【００７５】
図４の例を用いて、より具体的に説明する。図４の右側は、逆ウェーブレット変換を行う合成フィルタ側を示す。復号側の、出力画像データの第１ライン目を含む１回目の合成処理（逆ウェーブレット変換処理）は、符号化側の１回目のフィルタ処理で生成された最低域成分の係数Ｃ４および係数Ｃ５と、係数Ｃ１とを用いて行われる。
【００７６】
すなわち、１回目の合成処理においては、係数Ｃ５、係数Ｃ４、係数Ｃ１の順に符号化側から復号側に係数データを供給し、復号側では、分解レベル＝２に対応する合成処理である合成レベル＝２の処理で、係数Ｃ５および係数Ｃ４に対して合成処理を行って係数Ｃfを生成し、バッファに格納する。そして、分解レベル＝１に対応する合成処理である合成レベル＝１の処理で、この係数Ｃfと係数Ｃ１に対して合成処理を行って、第１ラインを出力する。
【００７７】
このように、第１回目の合成処理においては、符号化側で係数Ｃ１、係数Ｃ２、係数Ｃ３、係数Ｃ４、係数Ｃ５の順に生成され係数並び替え用バッファ部１３に格納された係数データが、係数Ｃ５、係数Ｃ４、係数Ｃ１、・・・の順に並び替えられて復号側に供給される。
【００７８】
なお、図４の右側に示す合成フィルタ側では、符号化側から供給される係数について、括弧内に符号化側での係数の番号を記し、括弧外に合成フィルタのライン順を記す。例えば係数Ｃ１（５）は、図４の左側の分析フィルタ側では係数Ｃ５であって、合成フィルタ側では第１ライン目であることを示す。
【００７９】
符号化側の２回目以降のフィルタ処理で生成された係数データによる復号側の合成処理は、前回の合成処理の際に合成あるいは符号化側から供給された係数データを用いて行うことができる。図４の例では、符号化側の２回目のフィルタ処理で生成された低域成分の係数Ｃ８および係数Ｃ９を用いて行う、復号側の２回目の合成処理は、符号化側の１回目のフィルタ処理で生成された係数Ｃ２および係数Ｃ３がさらに必要とされ、第２ライン乃至第５ラインが復号される。
【００８０】
すなわち、２回目の合成処理においては、係数Ｃ９、係数Ｃ８、係数Ｃ２、係数Ｃ３の順に符号化側から復号側に係数データを供給する。復号側では、合成レベル＝２の処理において、係数Ｃ８および係数Ｃ９と、１回目の合成処理の際に符号化側から供給された係数Ｃ４とを用いて係数Ｃgを生成し、バッファに格納する。この係数Ｃgと、上述の係数Ｃ４と、１回目の合成処理により生成されバッファに格納された係数Ｃfとを用いて係数Ｃhを生成し、バッファに格納する。
【００８１】
そして、合成レベル＝１の処理において、合成レベル＝２の処理で生成されバッファに格納された係数Ｃgおよび係数Ｃhと、符号化側から供給された係数Ｃ２（合成フィルタでは係数Ｃ６（２）と示されている）および係数Ｃ３（合成フィルタでは係数Ｃ７（３）と示されている）とを用いて合成処理が行われ、第２ライン乃至第５ラインが復号される。
【００８２】
このように、第２回目の合成処理においては、符号化側で係数Ｃ２、係数Ｃ３、（係数Ｃ４、係数Ｃ５）、係数Ｃ６、係数Ｃ７、係数Ｃ８、係数Ｃ９の順に生成された係数データが、係数Ｃ９、係数Ｃ８、係数Ｃ２、係数Ｃ３、・・・の順に並び替えられて復号側に供給される。
【００８３】
３回目以降の合成処理においても、同様にして、係数並び替え用バッファ部１３に格納された係数データが所定の順序に並び替えられて復号部に供給され、４ラインずつ、ラインが復号される。
【００８４】
なお、符号化側において画面の下端のラインを含むフィルタ処理（以下、最後の回と呼ぶ）に対応する復号側の合成処理では、それまでの処理で生成されバッファに格納された係数データを全て出力することになるため、出力ライン数が多くなる。図４の例では、最後の回に８ラインが出力される。
【００８５】
なお、係数並び替え部１４による係数データの並び替え処理は、例えば、係数並び替え用バッファ部１３に格納された係数データを読み出す際の読み出しアドレスを、所定の順序に設定することでなされる。
【００８６】
図５を用いて、上述までの処理をより具体的に説明する。図５は、５×３フィルタを用いて、分解レベル＝２までウェーブレット変換によるフィルタ処理を施した例である。ウェーブレット変換部１１において、図５Ａに一例が示されるように、入力画像データの第１ラインから第７ラインに対して１回目のフィルタ処理が水平および垂直方向にそれぞれ行われる（図５ＡのＩｎ−１）。
【００８７】
１回目のフィルタ処理の分解レベル＝１の処理において、係数Ｃ１、係数Ｃ２、および係数Ｃ３の３ライン分の係数データが生成され、図５Ｂに一例が示されるように、分解レベル＝１で形成される領域ＨＨ、領域ＨＬおよび領域ＬＨのそれぞれに配置される（図５ＢのＷＴ−１）。
【００８８】
また、分解レベル＝１で形成される領域ＬＬは、分解レベル＝２による水平および垂直方向のフィルタ処理でさらに４分割される。分解レベル＝２で生成される係数Ｃ５および係数Ｃ４は、分解レベル＝１による領域ＬＬ内において、領域ＬＬに係数Ｃ５による１ラインが配置され、領域ＨＨ、領域ＨＬおよび領域ＬＨのそれぞれに、係数Ｃ４による１ラインが配置される。
【００８９】
ウェーブレット変換部１１による２回目以降のフィルタ処理では、４ライン毎にフィルタ処理が行われ（図５ＡのＩｎ−２・・・）、分解レベル＝１で２ラインずつの係数データが生成され（図５ＢのＷＴ−２）、分解レベル＝２で１ラインずつの係数データが生成される。
【００９０】
図４の２回目の例では、分解レベル＝１のフィルタ処理で係数Ｃ６および係数Ｃ７の２ライン分の係数データが生成され、図５Ｂに一例が示されるように、分解レベル１で形成される領域ＨＨ、領域ＨＬおよび領域ＬＨの、１回目のフィルタ処理で生成された係数データの次から配置される。同様に、分解レベル＝１による領域ＬＬ内において、分解レベル＝２のフィルタ処理で生成された１ライン分の係数Ｃ９が領域ＬＬに配置され、１ライン分の係数Ｃ８が領域ＨＨ、領域ＨＬおよび領域ＬＨにそれぞれ配置される。
【００９１】
図５Ｂのようにウェーブレット変換されたデータを復号した際には、図５Ｃに一例が示されるように、符号化側の第１ライン乃至第７ラインによる１回目のフィルタ処理に対して、復号側の１回目の合成処理による第１ラインが出力される（図５ＣのＯｕｔ−１）。以降、符号化側の２回目から最後の回の前までのフィルタ処理に対して、復号側で４ラインずつが出力される（図５ＣのＯｕｔ−２・・・）。そして、符号化側の最後の回のフィルタ処理に対して、復号側で８ラインが出力される。
【００９２】
ウェーブレット変換部１１で高域成分側から低域成分側へと生成された係数データは、係数並び替え用バッファ部１３に順次格納される。係数並び替え部１４は、上述した係数データの並び替えが可能となるまで係数並び替え用バッファ部１３に係数データが蓄積されると、係数並び替え用バッファ部１３から合成処理に必要な順に並び替えて係数データを読み出す。読み出された係数データは、エントロピ符号化部１５に順次、供給される。
【００９３】
エントロピ符号化部１５は、供給される係数データを順次符号化し、生成した符号化データを符号化部１０の外部に出力する。
【００９４】
次に、図１の符号化部１０に対応する復号部について説明する。図６は、本発明を適用した復号部の構成例を示すブロック図である。図６に示される復号部２０は、ソフトウェアプログラムにより構成され、画像データが符号化された符号化データを復号して画像データを復元するソフトウェアデコーダが所定の情報処理装置のCPUにより実行されることにより実現される機能を模式的に示したものである。図６に示されるように、復号部２０は、エントロピ復号部２１、係数バッファ部２２、およびウェーブレット逆変換部２３の機能を有する。
【００９５】
エントロピ復号部２１は、供給された符号化データをエントロピ符号化部１５による符号化方法に対応する復号方法で復号し、係数データを得る。その係数データは、係数バッファ部２２に格納される。ウェーブレット逆変換部２３は、係数バッファ部２２に格納された係数データを用いて、合成フィルタによる合成フィルタ処理（ウェーブレット逆変換）を行い、合成フィルタ処理の結果を再び係数バッファ部２２に格納する。ウェーブレット逆変換部２３は、この処理を分解レベルに応じて繰り返して、復号された画像データ（出力画像データ）を得ると、それを外部に出力する。
【００９６】
次に、符号化部１０および復号部２０により実行される処理の流れの例について説明する。最初に、図７のフローチャートを参照して符号化部１０により実行される符号化処理の流れの例を説明する。
【００９７】
符号化処理が開始されると、ウェーブレット変換部１１は、ステップＳ１において、処理対象プレシンクトの番号Ａを初期設定にする。通常の場合、番号Ａは「１」に設定される。設定が終了すると、ウェーブレット変換部１１は、ステップＳ２において、最低域サブバンドにおいて上からＡ番目の１ラインを生成するのに必要なライン数（すなわち、１プレシンクト）の画像データを取得し、その画像データに対して、ステップＳ３において画面垂直方向に並ぶ画像データに対して分析フィルタリングを行う垂直分析フィルタリング処理を行い、ステップＳ４において画面水平方向に並ぶ画像データに対して分析フィルタリング処理を行う水平分析フィルタリング処理を行う。
【００９８】
ステップＳ５においてウェーブレット変換部１１は、分析フィルタリング処理を最終レベルまで行ったか否かを判定する。分解レベルが最終レベルに達していないと判定された場合、処理はステップＳ３に戻り、現在の分解レベルに対して、ステップＳ３およびステップＳ４の分析フィルタリング処理が繰り返される。
【００９９】
ステップＳ５において、分析フィルタリング処理が最終レベルまで行われたと判定された場合、処理は、ステップＳ６に進む。
【０１００】
ステップＳ６において、係数並び替え部１４は、プレシンクトＡ（ピクチャ（フレームまたはフィールド）の上からＡ番目のプレシンクト）の係数を低域から高域の順番に並び替える。エントロピ符号化部１５は、ステップＳ７において、その係数に対してライン毎にエントロピ符号化し、ステップＳ８において、プレシンクトＡの符号化データを送出する。
【０１０１】
ウェーブレット変換部１１は、ステップＳ９において番号Ａの値を「１」インクリメントして次のプレシンクトを処理対象とし、ステップＳ１０において、処理対象のピクチャ（フレームまたはフィールド）について、未処理の画像入力ラインが存在するか否かを判定する。未処理の画像入力ラインが存在すると判定された場合、処理は、ステップＳ２に戻り、新たな処理対象のプレシンクトに対してそれ以降の処理が繰り返される。
【０１０２】
以上のようにステップＳ２乃至ステップＳ１０の処理が繰り返し実行され、各プレシンクトが符号化される。そして、ステップＳ１０において、未処理の画像入力ラインが存在しないと判定された場合、そのピクチャに対する符号化処理が終了される。次のピクチャに対しては新たに符号化処理が開始される。
【０１０３】
このように、ウェーブレット変換部１１は、プレシンクト単位で垂直分析フィルタリング処理および水平分析フィルタリング処理を最終レベルまで連続して行うので、従来の方法と比較して、一度に（同時期に）保持する（バッファリングする）必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、最終レベルまで分析フィルタリング処理が行われることにより、後段の係数並び替えやエントロピ符号化等の処理も行うことができる（つまり、係数並び替えやエントロピ符号化をプレシンクト単位で行うことができる）。従って、画面全体に対してウェーブレット変換を行う方法と比較して遅延時間を大幅に低減させることができる。
【０１０４】
次に、図８のフローチャートを参照して、復号部２０により実行される復号処理の流れの例を説明する。
【０１０５】
復号処理が開始されると、エントロピ復号部２１は、ステップＳ３１において、復号部２０の外部より供給される符号化データを取得し、ステップＳ３２において、ライン毎に符号化データをエントロピ復号する。ステップＳ３３において、係数バッファ部２２は、その復号されて得られた係数データを保持する。ステップＳ３４においてウェーブレット逆変換部２３は、係数バッファ部２２に１プレシンクト分の係数データが蓄積されたか否かを判定する。１プレシンクト分の係数データが蓄積されていないと判定された場合、処理は、ステップＳ３１に戻り、それ以降の処理が実行される。つまり、ウェーブレット逆変換部２３は、係数バッファ部２２に１プレシンクト分の係数データが蓄積されるまで待機する。
【０１０６】
ステップＳ３４において係数バッファ部２２に１プレシンクト分の係数データが蓄積されたと判定された場合、処理はステップＳ３５に進む。ステップＳ３５において、ウェーブレット逆変換部２３は、係数バッファ部２２に保持されている係数データを１プレシンクト分読み出し、ステップＳ３６において、その読み出した係数データに対して、画面垂直方向に並ぶ係数データに対して合成フィルタリング処理を行う垂直合成フィルタリング処理を行い、ステップＳ３７において、画面水平方向に並ぶ係数データに対して合成フィルタリング処理を行う水平合成フィルタリング処理を行う。ステップＳ３８において、ウェーブレット逆変換部２３は、合成フィルタリング処理がレベル１（分解レベルの値が「１」のレベル）まで終了したか否か、すなわち、ウェーブレット変換前の状態まで逆変換したか否かを判定する。レベル１まで達していないと判定された場合、処理はステップＳ３６に戻り、ステップＳ３６およびステップＳ３７のフィルタリング処理が繰り返される。
【０１０７】
ステップＳ３８において、レベル１までウェーブレット逆変換処理が終了されたと判定した場合、処理はステップＳ３９に進む。ステップＳ３９において、ウェーブレット逆変換部２３は、ウェーブレット逆変換処理により得られた画像データを外部に出力する。
【０１０８】
ステップＳ４０において、エントロピ復号部２１は、復号処理を終了するか否かを判定する。復号処理を終了しないと判定された場合、処理はステップＳ３１に戻り、それ以降の処理が繰り返される。また、ステップＳ４０において、プレシンクトが終了するなどして復号処理が終了されると判定した場合、復号処理は終了される。
【０１０９】
従来のウェーブレット逆変換の方法の場合、処理対象の分解レベルの全係数に対して、まず、画面水平方向に水平合成フィルタリング処理を行い、次に画面垂直方向に垂直合成フィルタリング処理を行っていた。つまり、各合成フィルタリング処理の度に、その合成フィルタリング処理の結果をバッファに保持させる必要があるが、その際、バッファは、その時点の分解レベルの合成フィルタリング結果と、次の分解レベルの全係数を保持する必要があり、多大なメモリ容量を必要とすることになる（保持するデータ量が多い）。
【０１１０】
また、この場合、ピクチャ（フレームまたはフィールド）内において全てのウェーブレット逆変換が終了するまで画像データ出力が行われないので、入力から出力までの遅延時間が増大する。
【０１１１】
これに対して、復号部２０のウェーブレット逆変換部２３の場合、上述したようにプレシンクト単位で垂直合成フィルタリング処理および水平合成フィルタリング処理をレベル１まで連続して行うので、従来の方法と比較して、一度に（同時期に）バッファリングする必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、レベル１まで合成フィルタリング処理（ウェーブレット逆変換処理）が行われることにより、ピクチャ内の全画像データが得られる前に（プレシンクト単位で）画像データを順次出力させることができ、従来の方法と比較して遅延時間を大幅に低減させることができる。
【０１１２】
以上のような各種処理は、例えば、図９に示されるように、適宜、並列的に実行させることもできる。
【０１１３】
図９は、図１に示される符号化部１０および図６に示される復号部２０の各部により実行される処理の各要素の並列動作の例を概略的に示す図である。この図９は、上述した図５と対応するものである。画像データの入力Ｉｎ−１（図９Ａ）に対して、ウェーブレット変換部１１（図１）で１回目のウェーブレット変換ＷＴ−１が施される（図９Ｂ）。図４を参照し説明したように、この１回目のウェーブレット変換ＷＴ−１は、最初の３ラインが入力された時点で開始され、係数Ｃ１が生成される。すなわち、画像データＩｎ−１の入力からウェーブレット変換ＷＴ−１が開始されるまで、３ライン分の遅延が生じる。
【０１１４】
生成された係数データは、係数並び替え用バッファ部１３（図１）に格納される。以降、入力された画像データに対してウェーブレット変換が施され、１回目の処理が終了すると、そのまま２回目のウェーブレット変換ＷＴ−２に処理が移行する。
【０１１５】
２回目のウェーブレット変換ＷＴ−２のための画像データＩｎ−２の入力と、当該２回目のウェーブレット変換ＷＴ−２の処理と並列的に、係数並び替え部１４（図１）により３個の、係数Ｃ１、係数Ｃ４、および係数Ｃ５の並び替えＯｒｄ−１が実行される（図９Ｃ）。
【０１１６】
なお、ウェーブレット変換ＷＴ−１の終了から並び替えＯｒｄ−１が開始されるまでの遅延は、例えば、並び替え処理を係数並び替え部１４に指示する制御信号の伝達に伴う遅延や、制御信号に対する係数並び替え部１４の処理開始に要する遅延、プログラム処理に要する遅延といった、装置やシステム構成に基づく遅延であって、符号化処理における本質的な遅延ではない。
【０１１７】
係数データは、並び替えが終了した順に係数並び替え用バッファ部１３から読み出され、エントロピ符号化部１５（図１）に供給され、エントロピ符号化ＥＣ−１が行われる（図９Ｄ）。このエントロピ符号化ＥＣ−１は、３個の、係数Ｃ１、係数Ｃ４、および係数Ｃ５の、全ての並び替えの終了を待たずに開始することができる。例えば、最初に出力される係数Ｃ５による１ラインの並び替えが終了した時点で、当該係数Ｃ５に対するエントロピ符号化を開始することができる。この場合、並び替えＯｒｄ−１の処理開始からエントロピ符号化ＥＣ−１の処理開始までの遅延は、１ライン分となる。
【０１１８】
エントロピ符号化部１５によるエントロピ符号化ＥＣ−１が終了した符号化データは、所定の信号処理が施された後、復号部２０（図６）に伝送される（図９Ｅ）。
【０１１９】
以上のように、符号化部１０に対しては、１回目の処理による７ライン分の画像データ入力に続けて、画面上の下端のラインまで画像データが順次、入力される。符号化部１０では、画像データの入力Ｉｎ−ｎ（ｎは２以上）に伴い、上述したようにして、４ライン毎にウェーブレット変換ＷＴ−ｎ、並び替えＯｒｄ−ｎおよびエントロピ符号化ＥＣ−ｎを行う。符号化部１０における最後の回の処理に対する並び替えＯｒｄおよびエントロピ符号化ＥＣは、６ラインに対して行われる。これらの処理は、符号化部１０において、図９Ａ乃至図９Ｄに例示されるように、並列的に行われる。
【０１２０】
符号化部１０によるエントロピ符号化ＥＣ−１により符号化された符号化データは、復号部２０に供給される。復号部２０のエントロピ復号部２１（図６）は、供給された、エントロピ符号化ＥＣ−１により符号化された符号化データに対して、順次、エントロピ符号の復号ｉＥＣ−１を行い、係数データを復元する（図９Ｆ）。復元された係数データは、順次、係数バッファ部２２に格納される。ウェーブレット逆変換部２３は、係数バッファ部２２にウェーブレット逆変換が行えるだけ係数データが格納されたら、係数バッファ部２２から係数データを読み出して、読み出された係数データを用いてウェーブレット逆変換ｉＷＴ−１を行う（図９Ｇ）。
【０１２１】
図４を参照して説明したように、ウェーブレット逆変換部２３によるウェーブレット逆変換ｉＷＴ−１は、係数Ｃ４および係数Ｃ５が係数バッファ部２２に格納された時点で開始することができる。したがって、エントロピ復号部２１による復号ｉＥＣ−１が開始されてからウェーブレット逆変換部２３によるウェーブレット逆変換ｉＷＴ−１が開始されるまでの遅延は、２ライン分となる。
【０１２２】
ウェーブレット逆変換部２３において、１回目のウェーブレット変換による３ライン分のウェーブレット逆変換ｉＷＴ−１が終了すると、ウェーブレット逆変換ｉＷＴ−１で生成された画像データの出力Ｏｕｔ−１が行われる（図９Ｈ）。出力Ｏｕｔ−１では、図４および図５を用いて説明したように、第１ライン目の画像データが出力される。
【０１２３】
復号部２０に対して、符号化部１０における１回目の処理による３ライン分の符号化された係数データの入力に続けて、エントロピ符号化ＥＣ−ｎ（ｎは２以上）により符号化された係数データが順次、入力される。復号部２０では、入力された係数データに対して、上述したようにして、４ライン毎にエントロピ復号ｉＥＣ−ｎおよびウェーブレット逆変換ｉＷＴ−ｎを行い、ウェーブレット逆変換ｉＷＴ−ｎにより復元された画像データの出力Ｏｕｔ−ｎを順次、行う。符号化部１０の最後の回に対応するエントロピ復号ｉＥＣおよびウェーブレット逆変換ｉＷＴは、６ラインに対して行われ、出力Ｏｕｔは、８ラインが出力される。これらの処理は、復号部２０において、図９Ｆ乃至図９Ｈに例示されるように、並列的に行われる。
【０１２４】
上述のようにして、画面上部から下部の方向に順番に、符号化部１０および復号部２０における各処理を並列的に行うことで、画像圧縮処理および画像復号処理をより低遅延で行うことが可能となる。
【０１２５】
図９を参照して、５×３フィルタを用いて分解レベル＝２までウェーブレット変換を行った場合の、画像入力から画像出力までの遅延時間を計算してみる。第１ライン目の画像データが符号化部１０に入力されてから、この第１ライン目の画像データが復号部２０から出力されるまでの遅延時間は、下記の各要素の総和となる。なお、ここでは、伝送路における遅延や、装置各部の実際の処理タイミングに伴う遅延などの、システムの構成により異なる遅延は、除外している。
【０１２６】
（１）最初のライン入力から７ライン分のウェーブレット変換ＷＴ−１が終了するまでの遅延Ｄ＿ＷＴ
（２）３ライン分の係数並び替えＯｒｄ−１に伴う時間Ｄ＿Ｏｒｄ
（３）３ライン分のエントロピ符号化ＥＣ−１に伴う時間Ｄ＿ＥＣ
（４）３ライン分のエントロピ復号ｉＥＣ−１に伴う時間Ｄ＿ｉＥＣ
（５）３ライン分のウェーブレット逆変換ｉＷＴ−１に伴う時間Ｄ＿ｉＷＴ
【０１２７】
図９を参照して、上述の各要素による遅延の計算を試みる。（１）の遅延Ｄ＿ＷＴは、１０ライン分の時間である。（２）の時間Ｄ＿Ｏｒｄ、（３）の時間Ｄ＿ＥＣ、（４）の時間Ｄ＿ｉＥＣ、および（５）の時間Ｄ＿ｉＷＴは、それぞれ３ライン分の時間である。また、符号化部１０において、並び替えＯｒｄ−１が開始されてから１ライン後には、エントロピ符号化ＥＣ−１を開始することができる。同様に、復号部２０において、エントロピ復号ｉＥＣ−１が開始されてから２ライン後には、ウェーブレット逆変換ｉＷＴ−１を開始することができる。また、エントロピ復号ｉＥＣ−１は、エントロピ符号化ＥＣ−１で１ライン分の符号化が終了した時点で処理を開始することができる。
【０１２８】
したがって、この図９の例では、符号化部１０に第１ライン目の画像データが入力されてから、復号部２０から当該第１ライン目の画像データが出力されるまでの遅延時間は、１０＋１＋１＋２＋３＝１７ライン分となる。
【０１２９】
遅延時間について、より具体的な例を挙げて考察する。入力される画像データがHDTV(High Definition Television)のインタレースビデオ信号の場合、例えば１９２０画素×１０８０ラインの解像度で１フレームが構成され、１フィールドは、１９２０画素×５４０ラインとなる。したがって、フレーム周波数を３０Hzとした場合、１フィールドの５４０ラインが１６.６７msec（＝１sec/６０フィールド）の時間に、符号化部１０に入力されることになる。
【０１３０】
したがって、７ライン分の画像データの入力に伴う遅延時間は、０.２１６msec（＝１６.６７msec×７/５４０ライン）であり、例えば１フィールドの更新時間に対して非常に短い時間となる。また、上述した（１）の遅延Ｄ＿ＷＴ、（２）の時間Ｄ＿Ｏｒｄ、（３）の時間Ｄ＿ＥＣ、（４）の時間Ｄ＿ｉＥＣ、および（５）の時間Ｄ＿ｉＷＴの総和についても、処理対象のライン数が少ないため、遅延時間が非常に短縮される。
【０１３１】
次に、以上のようなソフトウェアエンコーダやソフトウェアデコーダに割り当てられるハードウェア資源の例について説明する。図１０は、パーソナルコンピュータの構成例を示すブロック図である。
【０１３２】
図１０において、パーソナルコンピュータ１００のCPU１０１−１、CPU１０１−２、CPU１０１−３、およびCPU１０１−４は、それぞれ、ソフトウェアプログラムに従って各種の処理を実行する演算処理部である。以下において、CPU１０１−１乃至CPU１０１−４を互いに区別して説明する必要の無い場合、CPU１０１と称する。CPU１０１は、共有バスであるバス１０４を介してROM（Read Only Memory）１０２およびRAM（Random Access Memory）１０３と相互に接続されている。ROM１０２には予めソフトウェアプログラムやデータが格納されている。RAM１０３には、ROM１０２や記憶部１２３に格納されているソフトウェアプログラムやデータがロードされる。
【０１３３】
CPU１０１−１にはキャッシュメモリ１１１−１が内蔵され、CPU１０１−２にはキャッシュメモリ１１１−２が内蔵され、CPU１０１−３にはキャッシュメモリ１１１−３が内蔵され、CPU１０１−４にはキャッシュメモリ１１１−４が内蔵される。以下において、キャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４を互いに区別して説明する必要の無い場合、キャッシュメモリ１１１と称する。
【０１３４】
キャッシュメモリ１１１は、例えばSRAM（Static Random Access Memory）のような、高速で動作する記憶媒体であり、そのキャッシュメモリ１１１を内蔵するCPU１０１により独占的に使用される。このキャッシュメモリ１１１は、記憶容量辺りの単価が高く、また、CPU１０１に内蔵されるため、キャッシュメモリ１１１の記憶容量を増大させるとCPU１０１の回路規模も増大してしまう。そこでコストの低減や回路規模の増大を抑制するために、キャッシュメモリ１１１の記憶容量は、一般的に、例えば数百キロバイト乃至数メガバイト程度と、数百メガバイト乃至数ギガバイト程度の記憶容量を有する、CPU１０１の外部に設けられたRAM１０３よりも小容量に抑えられている。
【０１３５】
もちろん、キャッシュメモリ１１１としてどのようなメモリを用いるようにし、また、その記憶容量をどの程度にするようにしてもよいが、ここでは、キャッシュメモリ１１１が、そのキャッシュメモリ１１１を内蔵するCPU１０１により独占的に使用され、RAM１０３より高速にデータの読み出しや書き込みが可能であるものの、その記憶容量がRAM１０３より小容量であり、格納可能な情報量に制限がある記憶媒体であるものとする。
【０１３６】
このキャッシュメモリ１１１に対して、RAM１０３は、CPU１０１−１乃至CPU１０１−４等により共有され、キャッシュメモリ１１１よりもデータの読み出しや書き込みが低速であり、かつ、キャッシュメモリ１１１より大容量であるものとする。なお、もちろん、実際にはRAM１０３の記憶容量も有限であるが、以下においては、説明の便宜上、RAM１０３の記憶容量は、上述した符号化処理や復号処理に必要な容量に対して十分に大きく、その容量の制限については特に考慮しないものとする。
【０１３７】
つまり、キャッシュメモリ１１１は、高速でプログラムやデータの入出力が可能であるが、容量に制限があるので、ソフトウェアエンコーダやソフトウェアデコーダの全てのソフトウェアプログラムやデータを格納することが困難であることもある。これに対して、RAM１０３は、任意のソフトウェアプログラムやデータを格納可能であるが、それらの入出力が低速である。
【０１３８】
CPU１０１は、自分自身に内蔵されるキャッシュメモリ１１１またはRAM１０３にソフトウェアプログラムやデータをロードし、それらを用いて符号化や復号の各種処理を行う。
【０１３９】
バス１０４にはまた、入出力インタフェース１２０も接続されている。入出力インタフェース１２０には、キーボード、マウスなどよりなる入力部１２１、CRT（Cathode Ray Tube）、LCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部１２２、ハードディスクなどより構成される記憶部１２３、モデムなどより構成される通信部１２４が接続されている。通信部１２４は、インターネットを含むネットワークを介しての通信処理を行う。
【０１４０】
入出力インタフェース１２０にはまた、必要に応じてドライブ１２５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１３１が適宜装着され、それらから読み出されたソフトウェアプログラムが、必要に応じて記憶部１２３にインストールされる。なお、ソフトウェアプログラムは、ネットワークを介して通信部１２４よりインストールすることも可能である。
【０１４１】
なお、図１０においては、パーソナルコンピュータ１００に、CPU１０１が４つ設けられているように説明したが、CPU１０１の数は任意である。ただし、後述するソフトウェアエンコーダやソフトウェアデコーダの実装方法によっては、CPU１０１の最小数に制限がある場合もあり、例えば、CPU１０１が２つ必要な場合や、４つ必要な場合もある。また、このCPU１０１−１乃至CPU１０１−４が、４つのコアを有する物理的には１つのCPU１０１であるものとしてもよい。その場合、各CPUコア（CPU１０１−１乃至CPU１０１−４）にキャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４が設けられているものとしてもよいし、各CPUコアが共有する唯一のキャッシュメモリ１１１の、各CPUコアに割り当てられたキャッシュメモリ１１１の部分領域がキャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４であるとしてもよい。
【０１４２】
このような構成のパーソナルコンピュータ１００において、図１の符号化部１０や図６の復号部２０を、不要に処理の効率を低下させたり、遅延時間を増大させたりしないように実装するためには、符号化部１０や復号部２０の各処理に対してCPU１０１やRAM１０３等のパーソナルコンピュータ１００のハードウェア資源を適切に割り当てる必要がある。以下にその割り当ての例について説明する。
【０１４３】
図１１は、図１の符号化部１０に対するハードウェア資源の割り当ての例を示す図である。図１１に示される例においては、符号化部１０のウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の全処理に対してCPU１０１−１が割り当てられ、途中計算用バッファ部１２および係数並び替え用バッファ部１３は、キャッシュメモリ１１１−１に形成される。
【０１４４】
このとき、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１にロードされる。CPU１０１−１は、そのソフトウェアプログラムの関数を必要に応じてキャッシュメモリ１１１−１より読み出して実行する。
【０１４５】
符号化される画像データの輝度成分である画像データＹと、色差成分である画像データＣは、RAM１０３に保持される。なお、実際には、色差成分にはCbとCrとがあるが、ここでは説明の簡略化のため、CbとCrをまとめてＣとする。なお、以下においては輝度成分Ｙと色差成分ＣよりなるYC（YCbCr）コンポーネントについて説明するが、Ｒ成分、Ｇ成分、およびＢ成分よりなるRGBコンポーネントの場合も同様である。
【０１４６】
図１１の例の場合、画像データＹも画像データＣもCPU１０１−１において符号化される。つまり、CPU１０１−１は、ウェーブレット変換部１１の処理を実行することにより、RAM１０３より画像データＹを読み出してウェーブレット変換処理を行う。その際、CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部を途中計算用バッファ部１２として利用し、ウェーブレット変換処理の垂直方向および水平方向の分析フィルタリング処理において発生する中間データ（例えば、途中の分割レベルの低域成分）をその途中計算用バッファ部１２に保持させる。また、CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の、他の一部を係数並び替え用バッファ部１３として利用し、ウェーブレット変換により生成された係数データをその係数並び替え用バッファ部１３に保持させる。
【０１４７】
CPU１０１−１は、係数並び替え部１４の処理を実行することにより、キャッシュメモリ１１１−１の係数並び替え用バッファ部１３に保持されている係数データを所定の順に並び替えながら読み出す。CPU１０１−１は、エントロピ符号化部１５の処理を実行することにより、係数並び替え部１４の処理により順序が並び替えられながらキャッシュメモリ１１１−１より読み出された係数データを符号化し、符号化データＹを生成する。CPU１０１−１は、生成した符号化データＹをRAM１０３に供給して格納させる。
【０１４８】
CPU１０１−１は、画像データＣに対しても画像データＹの場合と同様に処理を行う。
【０１４９】
図１１のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、符号化部１０の全ての処理は、１つのCPU１０１において実行され、符号化処理中に発生するウェーブレット変換の中間データや係数データは、全てそのCPU１０１のキャッシュメモリ１１１に格納される。
【０１５０】
このとき、例えば、他のCPU１０１−２乃至CPU１０１−４も、このCPU１０１−１と同様に符号化部１０に割り当てられるようにしてもよい。つまり、図１１に示されるCPU１０１−１の場合と同様に、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれにもロードされる。CPU１０１−２乃至CPU１０１−４は、それぞれのキャッシュメモリ１１１よりそれらのソフトウェアプログラムを読み出して実行し、符号化部１０のウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各処理を実行する。このとき、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれには、キャッシュメモリ１１１−１と同様に、途中計算用バッファ部１２および係数並び替え用バッファ部１３が形成される。
【０１５１】
つまり、この場合、CPU１０１−１乃至CPU１０１−４により４つの符号化部１０が実現される。これらの符号化部１０は、例えば、符号化される動画像データのピクチャ毎に符号化処理が割り当てられる。つまり、この場合、CPU１０１−１乃至CPU１０１−４は、互いに異なるピクチャに対する符号化処理を互いに並行して実行する。その場合の処理の流れを図１２に模式的に示す。
【０１５２】
図１２においては、図中縦方向上から下向きに時系列が示されており、各CPUにおいて実行される処理が四角で示されている。
【０１５３】
図１２の例において、CPU１０１−１は、最初に、先頭のピクチャの先頭のプレシンクト（P1）の輝度成分Ｙである画像データＹをRAM１０３より読み出し、その画像データＹに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P1DWT（Y））、得られた係数データをキャッシュメモリ１１１−１に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P1VLC（Y））。このエントロピ符号化により生成された符号化データＹは、RAM１０３に蓄積される。次に、CPU１０１−１は、この先頭のプレシンクト（P1）の色差成分Ｃである画像データＣをRAM１０３より読み出し、その画像データＣに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P1DWT（C））、得られた係数データをキャッシュメモリ１１１−１に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P1VLC（C））。このエントロピ符号化により生成された符号化データＣは、RAM１０３に蓄積される。
【０１５４】
この時点で、RAM１０３には、少なくとも１プレシンクト分以上の符号化データＹおよび符号化データＣが蓄積されるので、それら符号化データＹおよび符号化データＣの出力が開始される。
【０１５５】
このように、CPU１０１−１およびキャッシュメモリ１１１−１において実現されるウェーブレット変換部１１乃至エントロピ符号化部１５は、画像データＹおよび画像データＣの両方に対して、互いに同様に処理を行ったり、データを保持したりする。換言するにCPU１０１−１およびキャッシュメモリ１１１−１は、画像データＹと画像データＣの何れに対しても同様に符号化に関する処理を行ったりデータを保持したりする。
【０１５６】
先頭のプレシンクトに対する処理が終了すると、CPU１０１−１は、次に、先頭のピクチャの２番目のプレシンクト（P2）の画像データＹをRAM１０３より読み出し、その画像データＹに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P2DWT（Y））、得られた係数データをキャッシュメモリ１１１−１に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P2VLC（Y））。このエントロピ符号化により生成された符号化データＹは、RAM１０３に蓄積された後出力される。次に、CPU１０１−１は、２番目のプレシンクト（P2）の画像データＣをRAM１０３より読み出し、その画像データＣに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P2DWT（C））、得られた係数データをキャッシュメモリ１１１−１に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P2VLC（C））。このエントロピ符号化により生成された符号化データＣは、RAM１０３に蓄積された後出力される。
【０１５７】
CPU１０１−１は、先頭のピクチャの３番目以降のプレシンクトに対しても同様に処理を行い、最後のｎ番目のプレシンクト（Pn）の画像データＹと画像データＣのそれぞれに対して、ウェーブレット変換、並びに、係数並び替えおよびエントロピ符号化を行う（PnDWT(Y),PnVLC(Y),PnDWT(C),PnVLC(C)）。得られた符号化データＹおよび符号化データＣは、それまでのプレシンクトと同様にRAM１０３に蓄積された後出力される。ｎ番目のプレシンクトの符号化データＣが出力されると、先頭のピクチャの符号化データは全て出力されたので、先頭のピクチャについて符号化データの出力が終了される。
【０１５８】
このCPU１０１−１の処理と並行して、図１２に示されるように、CPU１０１−２は２番目のピクチャについて、CPU１０１−３は３番目のピクチャについて、CPU１０１−４は４番目のピクチャについて、それぞれ、先頭のプレシンクトからｎ番目のプレシンクトまで、CPU１０１の場合と同様にウェーブレット変換、並びに、係数並び替えおよびエントロピ符号化の各処理を行い、画像データＹおよび画像データＣより符号化データＹおよび符号化データＣを生成し、それらをRAM１０３に保持させた後出力させるようにすることができる。
【０１５９】
つまり、この場合、CPU１０１−２およびキャッシュメモリ１１１−２、CPU１０１−３およびキャッシュメモリ１１１−３、並びに、CPU１０１−４およびキャッシュメモリ１１１−４のそれぞれも、CPU１０１−１およびキャッシュメモリ１１１−１と同様に、画像データＹと画像データＣの両方に対して同様に符号化に関する処理を行ったり、データを保持したりする。
【０１６０】
この場合、CPU１０１−１は、先頭のピクチャに対する処理が終了すると次に５番目のピクチャに対して符号化処理を行う。そのCPU１０１−１の処理と並行してCPU１０１−２乃至CPU１０１−４も同様に、それぞれ６番目乃至８番目のピクチャに対して符号化処理を行う。なお、９番目以降のピクチャについても同様に処理される。
【０１６１】
以上のように、図１１に示される割り当ての例の場合、符号化部１０は、４つのピクチャの符号化処理を同時に並行して行うことができる。さらに、この場合、一連の符号化処理の中でCPUの切り替えを行う必要がない。また、キャッシュメモリ１１１のみを用いてRAM１０３を使用せずに処理を行うことができるので、ウェーブレット変換部１１や係数並び替え部１４は、途中計算用バッファ部１２や係数並び替え用バッファ部１３へのデータの読み出しや書き込みも高速に行うことができる。従って、このようなハードウェア資源の割り当てにより、符号化部１０は、高速に画像データを符号化することができる。つまり、図１１に示される割り当ての例の場合、符号化部１０は、高スループットで符号化を行うことができる。また、パーソナルコンピュータ１００は、そのCPU１０１の数によらず（例えば１つであっても）、符号化部１０を実装することができる。
【０１６２】
しかしながら、キャッシュメモリ１１１の容量は少ないので、同時に蓄積可能なデータ量に制限があり、符号化する画像データのデータ量や内容によっては、キャッシュメモリ１１１の容量が不足し、溢れが生じる恐れがあるので、図１１に示される割り当ての例は、符号化の実行に必要なバッファ量が多い場合には適用することができないこともある。
【０１６３】
また、画像データＹの符号化も、画像データＣの符号化も１つのCPU１０１において行われるので、符号化処理が開始されてから先頭のプレシンクトの符号化データが符号化部１０より出力されるまでの時間、すなわち符号化処理の遅延時間が長い。従って、その符号化データが復号部２０において復号され、復元された画像データの画像がモニタに表示されるまでの遅延時間も長くなる。同様の理由により先頭のピクチャがモニタに表示されるまでの時間が長い。
【０１６４】
図１３に、図１の符号化部１０に対するハードウェア資源の割り当ての、他の例を示す。図１３に示される例においては、図１１の場合と同様に、符号化部１０のウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の全処理に、CPU１０１−１が割り当てられる。ただし、途中計算用バッファ部１２は、キャッシュメモリ１１１−１に形成されるものの、係数並び替え用バッファ部１３は、RAM１０３に形成される。
【０１６５】
このとき、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１にロードされる。CPU１０１−１は、そのソフトウェアプログラムの関数を必要に応じてキャッシュメモリ１１１−１より読み出して実行する。
【０１６６】
図１３の例の場合も、図１１の例の場合と同様に、画像データＹおよび画像データＣのいずれもCPU１０１−１において符号化される。つまり、CPU１０１−１は、ウェーブレット変換部１１の処理を実行することにより、RAM１０３より画像データＹを読み出してウェーブレット変換処理を行う。その際、CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部を途中計算用バッファ部１２として利用し、ウェーブレット変換処理の垂直方向および水平方向の分析フィルタリング処理において発生する中間データ（例えば、途中の分割レベルの低域成分）をその途中計算用バッファ部１２に保持させる。
【０１６７】
ただし、図１３の例の場合、図１１の例の場合と異なり、CPU１０１−１は、RAM１０３の記憶領域の一部を係数並び替え用バッファ部１３として利用し、ウェーブレット変換により生成された係数データをその係数並び替え用バッファ部１３に保持させる。
【０１６８】
CPU１０１−１は、係数並び替え部１４の処理を実行することにより、RAM１０３の係数並び替え用バッファ部１３に保持されている係数データを所定の順に並び替えながら読み出す。CPU１０１−１は、エントロピ符号化部１５の処理を実行することにより、係数並び替え部１４の処理により順序が並び替えられながらRAM１０３より読み出された係数データを符号化し、符号化データＹを生成する。CPU１０１−１は、生成した符号化データＹをRAM１０３に供給して格納させる。
【０１６９】
CPU１０１−１は、画像データＣに対しても画像データＹの場合と同様に処理を行う。
【０１７０】
図１３のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、符号化部１０の全ての処理は、１つのCPU１０１において実行され、符号化処理中に発生するウェーブレット変換の中間データは、高速に動作する、そのCPU１０１のキャッシュメモリ１１１に格納され、ウェーブレット変換により生成される係数データは、大容量のRAM１０３に格納される。
【０１７１】
このとき、例えば、他のCPU１０１−２乃至CPU１０１−４も、このCPU１０１−１と同様に符号化部１０に割り当てられるようにしてもよい。つまり、図１３の場合と同様に、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれにもロードされる。CPU１０１−２乃至CPU１０１−４は、それぞれのキャッシュメモリ１１１よりそれらのソフトウェアプログラムを読み出して実行し、符号化部１０のウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各処理を実行する。このとき、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれには、キャッシュメモリ１１１−１と同様に、途中計算用バッファ部１２が形成され、RAM１０３にはそれぞれの係数並び替え用バッファ部１３が形成される。
【０１７２】
つまりこの場合、CPU１０１−１乃至CPU１０１−４により４つの符号化部１０が実現される。これらの符号化部１０は、例えば、符号化される動画像データのピクチャ毎に符号化処理が割り当てられる。つまり、この場合、CPU１０１−１乃至CPU１０１−４は、互いに異なるピクチャに対する符号化処理を互いに並行して実行する。その場合の処理の流れは、図１１の場合と同様に、図１２に模式的に示される。
【０１７３】
以上のような図１３に示される割り当ての例の場合、係数並び替え用バッファ部１３がRAM１０３に形成されるため、図１１の割り当ての例の場合よりも、キャッシュメモリ１１１の多くを途中計算用バッファ部１２として使用することができる。つまり、途中計算用バッファ部１２の容量を大きくすることができる。また、係数並び替え用バッファ部１３の容量も大きくすることができる。つまり、図１３の例のように割り当てられた場合の方が、符号化部１０は、図１１のように割り当てられた場合よりも、バッファ溢れの発生を抑制することができ、より広範な条件下で実現可能である。
【０１７４】
ただし、係数並び替え用バッファ部１３が、読み出しおよび書き込みがキャッシュメモリ１１１よりも低速なRAM１０３に形成されるため、図１１の割り当ての例の場合よりも、スループットは低下する。しかしながら、データの読み出しや書き込みの回数が多い途中計算用バッファ部１２は、高速に動作するキャッシュメモリ１１１に形成されるので、そのスループットの低下は少ない。
【０１７５】
図１４に、図１の符号化部１０に対するハードウェア資源の割り当ての、さらに他の例を示す。図１４に示される例においては、図１３の割り当ての例よりさらに、画像データＹの符号化を行う符号化部と画像データＣの符号化を行う符号化部のそれぞれに対して、互いに異なるCPUが割り当てられている。つまり、画像データＹの符号化を行う符号化部のウェーブレット変換部１１−１、係数並び替え部１４−１、およびエントロピ符号化部１５−１の全処理に対してCPU１０１−１が割り当てられ、途中計算用バッファ部１２−１は、キャッシュメモリ１１１−１に形成され、係数並び替え用バッファ部１３−１は、RAM１０３に形成される。また、画像データＣの符号化を行う符号化部のウェーブレット変換部１１−２、係数並び替え部１４−２、およびエントロピ符号化部１５−２の全処理に対してCPU１０１−２が割り当てられ、途中計算用バッファ部１２−２は、キャッシュメモリ１１１−２に形成され、係数並び替え用バッファ部１３−２は、RAM１０３に形成される。
【０１７６】
このとき、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１およびキャッシュメモリ１１１−２にロードされる。CPU１０１−１およびCPU１０１−２は、それぞれ、そのソフトウェアプログラムの関数を必要に応じてキャッシュメモリ１１１−１またはキャッシュメモリ１１１−２より読み出して実行する。
【０１７７】
図１４の例の場合、画像データＹはCPU１０１−１において符号化され、画像データＣはCPU１０１−２において符号化される。つまり、CPU１０１−１は、画像データＹについて、図１３の例の場合と同様に、ウェーブレット変換部１１−１の処理を実行することにより、RAM１０３より画像データＹを読み出してウェーブレット変換処理を行う。その際、CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部を途中計算用バッファ部１２として利用し、ウェーブレット変換処理の垂直方向および水平方向の分析フィルタリング処理において発生する中間データをその途中計算用バッファ部１２に保持させる。
【０１７８】
CPU１０１−１は、図１３の例の場合と同様に、RAM１０３の記憶領域の一部を係数並び替え用バッファ部１３として利用し、ウェーブレット変換により生成された係数データをその係数並び替え用バッファ部１３に保持させる。CPU１０１−１は、係数並び替え部１４の処理を実行することにより、RAM１０３の係数並び替え用バッファ部１３に保持されている係数データを所定の順に並び替えながら読み出す。CPU１０１−１は、エントロピ符号化部１５の処理を実行することにより、係数並び替え部１４の処理により順序が並び替えられながらRAM１０３より読み出された係数データを符号化し、符号化データＹを生成する。CPU１０１−１は、生成した符号化データＹをRAM１０３に供給して格納させる。
【０１７９】
ただし、図１４の例の場合、図１３の例の場合と異なり、そのCPU１０１−１の処理と並行して、CPU１０１−２が、画像データＣについて、図１３の例の場合と同様に、ウェーブレット変換、係数並び替え、およびエントロピ符号化を行う。
【０１８０】
図１４のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、画像データＹおよび画像データＣに対する符号化部１０の全ての処理は、それぞれ互いに異なる１つのCPU１０１において実行され、それらの符号化処理中に発生するウェーブレット変換の中間データは、それぞれのCPU１０１に内蔵されるキャッシュメモリ１１１に格納され、それぞれのウェーブレット変換により生成される係数データは、ともにRAM１０３に格納される。つまり、２つのCPUを１組として符号化処理が行われる。
【０１８１】
このとき、例えば、他のCPU１０１−３およびCPU１０１−４も、このCPU１０１−１およびCPU１０１−２と同様に、符号化部１０に割り当てられるようにしてもよい。つまり、図１４の場合と同様に、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−３およびキャッシュメモリ１１１−４のそれぞれにもロードされる。CPU１０１−３およびCPU１０１−４は、それぞれのキャッシュメモリ１１１よりそれらのソフトウェアプログラムを読み出して実行し、符号化部１０のウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各処理を実行する。このとき、キャッシュメモリ１１１−３には、画像データＹ用の途中計算用バッファ部１２−１が形成され、キャッシュメモリ１１１−４には、画像データＣ用の途中計算用バッファ部１２−２が形成され、RAM１０３には、画像データＹ用の係数並び替え用バッファ部１３−１および画像データＣ用の係数並び替え用バッファ部１３−２の両方が形成される。
【０１８２】
つまり、この場合、CPU１０１−１乃至CPU１０１−４により２つの符号化部１０が実現される。これらの符号化部１０は、例えば、符号化される動画像データのピクチャ毎に符号化処理が割り当てられる。例えば、CPU１０１−１およびCPU１０１−２が奇数番目のピクチャの符号化処理を行い、CPU１０１−３およびCPU１０１−４が偶数番目のピクチャの符号化処理を行うようになされる。その場合の処理の流れを図１５に示す。
【０１８３】
図１５の例において、CPU１０１−１は、先頭のピクチャの先頭のプレシンクト（P1）の画像データＹをRAM１０３より読み出し、その画像データＹに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P1DWT（Y））、得られた係数データをRAM１０３に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P1VLC（Y））。このエントロピ符号化により生成された符号化データＹは、RAM１０３に蓄積される。そのCPU１０１−１の処理に並行して、CPU１０１−２は、先頭のピクチャの先頭のプレシンクト（P1）の画像データＣをRAM１０３より読み出し、その画像データＣに対してキャッシュメモリ１１１−２に中間データを保持させながらウェーブレット変換を行い（P1DWT（C））、得られた係数データをRAM１０３に保持させた後、その係数データに対して、順序の並び替えおよびエントロピ符号化を行う（P1VLC（C））。このエントロピ符号化により生成された符号化データＣも、RAM１０３に蓄積される。
【０１８４】
従って、この場合の符号化部１０は、CPU１０１−１およびCPU１０１−２が先頭のプレシンクトについてエントロピ符号化を終了した時点で、RAM１０３に１プレシンクト分以上の符号化データ（符号化データＹおよび符号化データＣ）が蓄積されるので、符号化データの出力を開始することができる。
【０１８５】
２番目以降のプレシンクトについても同様に、画像データＹは、CPU１０１−１により符号化され、それと並行して、画像データＣは、CPU１０１−２により符号化される。最後のｎ番目のプレシンクト（Pn）の画像データＹおよび画像データＣが符号化され、符号化データＹおよび符号化データＣが出力されると、先頭のピクチャの符号化データは全て出力されたので、先頭のピクチャについて符号化データの出力が終了される。
【０１８６】
このCPU１０１−１およびCPU１０１−２の処理と並行して、図１５に示されるように、CPU１０１−３およびCPU１０１−４により２番目のピクチャについて、CPU１０１−１およびCPU１０１−２の処理と同様の符号化処理を行うようにすることができる。つまり、この場合、CPU１０１−３は２番目のピクチャの画像データＹについて符号化を行い、CPU１０１−４は２番目のピクチャの画像データＣについて符号化を行う。
【０１８７】
この場合、CPU１０１−１およびCPU１０１−２は、先頭のピクチャに対する処理を終了すると、次に、３番目のピクチャに対して復号処理を行う。そのCPU１０１−１およびCPU１０１−２の処理と並行して、CPU１０１−３およびCPU１０１−４も同様に４番目のピクチャに対して復号処理を行う。５番目以降のピクチャについても同様に処理される。
【０１８８】
以上のように、図１４に示される割り当ての例の場合、画像データＹと画像データＣを並行して符号化することにより、図１１や図１３の例の場合よりも、符号化データの出力開始タイミング、すなわち、先頭のプレシンクトの符号化データＹおよび符号化データＣの出力タイミングを早めることができるので、符号化処理の遅延時間を低減させることができる。付言するに、同様の理由から、図１４に示される割り当ての例の場合の方が、図１１や図１３の例の場合よりも速く、先頭ピクチャの符号化を完了させることができる。従って、符号化部１０において符号化された符号化データを復号部２０において順次復号し、復元された画像データの画像をモニタに表示させる場合、符号化が開始されてから最初のピクチャが表示されるまでの遅延時間は、図１４に示される割り当ての例の場合の方が、図１１や図１３の例の場合よりも短くなる。
【０１８９】
また、図１３の例の場合と同様に、途中計算用バッファ部１２がキャッシュメモリ１１１に形成され、係数並び替え用バッファ部１３がRAM１０３に形成されるので、図１１の例の場合よりも、途中計算用バッファ部１２および係数並び替え用バッファ部１３の容量を大きくすることができ、バッファ溢れの発生を抑制することができ、さらにスループットの低下を小さくすることができる。
【０１９０】
なお、図１４の例の場合、画像データＹのウェーブレット変換の中間データと、画像データＣのウェーブレット変換の中間データとが、互いに異なるキャッシュメモリ１１１に蓄積されるので、図１３の例の場合よりも、途中計算用バッファ部１２の容量をさらに大きくすることができ、バッファ溢れの発生をより抑制することができる。
【０１９１】
ただし、実際には、画像データＹの方が画像データＣよりも情報量が多く絵が複雑であるので、符号化処理に要する時間が長い。従って、CPU１０１−２に待機時間が発生するので、CPU１０１の使用効率は図１３の場合よりも低下し、スループットも図１３の場合よりも低下する。
【０１９２】
図１６に、図１の符号化部１０に対するハードウェア資源の割り当ての、さらに他の例を示す。図１６に示される例においては、図１４の割り当ての例よりさらに、ウェーブレット変換部１１と、係数並び替え部１４およびエントロピ符号化部１５のそれぞれに対して互いに異なるCPU１０１が割り当てられている。
【０１９３】
つまり、画像データＹのウェーブレット変換処理を行うウェーブレット変換部１１−１に対して、CPU１０１−１が割り当てられ、画像データＹの係数データの係数並び替えを行う係数並び替え部１４−１、および、画像データＹの係数データのエントロピ符号化を行うエントロピ符号化部１５−１に対して、CPU１０１−２が割り当てられる。途中計算用バッファ部１２−１は、CPU１０１−１のキャッシュメモリ１１１−１に形成され、係数並び替え用バッファ部１３−１は、RAM１０３に形成される。
【０１９４】
同様に、画像データＣのウェーブレット変換処理を行うウェーブレット変換部１１−２に対して、CPU１０１−３が割り当てられ、画像データＣの係数データの係数並び替えを行う係数並び替え部１４−２、および、画像データＣの係数データのエントロピ符号化を行うエントロピ符号化部１５−２に対して、CPU１０１−４が割り当てられる。途中計算用バッファ部１２−２は、CPU１０１−３のキャッシュメモリ１１１−３に形成され、係数並び替え用バッファ部１３−２は、RAM１０３に形成される。
【０１９５】
このとき、ウェーブレット変換部１１の機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１およびキャッシュメモリ１１１−３にロードされ、係数並び替え部１４およびエントロピ符号化部１５の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−２およびキャッシュメモリ１１１−４にロードされる。CPU１０１−１乃至CPU１０１−４は、それぞれ、それらのソフトウェアプログラムの関数を、必要に応じて、それぞれのキャッシュメモリ１１１より読み出して実行する。
【０１９６】
図１６の例の場合、画像データＹはCPU１０１−１およびCPU１０１−２において符号化され、画像データＣはCPU１０１−３およびCPU１０１−４において符号化される。つまり、CPU１０１−１は、画像データＹについて、ウェーブレット変換部１１−１の処理を実行することにより、RAM１０３より画像データＹを読み出してウェーブレット変換処理を行う。その際、CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部または全部を途中計算用バッファ部１２−１として利用し、ウェーブレット変換処理の垂直方向および水平方向の分析フィルタリング処理において発生する中間データをその途中計算用バッファ部１２−１に保持させる。
【０１９７】
CPU１０１−１は、図１４の例の場合と同様に、RAM１０３の記憶領域の一部を係数並び替え用バッファ部１３−１として利用し、ウェーブレット変換により生成された係数データをその係数並び替え用バッファ部１３−１に保持させる。
【０１９８】
ただし、図１６の例の場合、図１４の例の場合と異なり、CPU１０１−２が、係数並び替え部１４−１の処理を実行することにより、CPU１０１−１が生成し、RAM１０３の係数並び替え用バッファ部１３−１に保持されている係数データを所定の順に並び替えながら読み出す。CPU１０１−２は、エントロピ符号化部１５−１の処理を実行することにより、係数並び替え部１４−１の処理により順序が並び替えられながらRAM１０３より読み出された係数データを符号化し、符号化データＹを生成する。CPU１０１−２は、生成した符号化データＹをRAM１０３に供給して格納させる。
【０１９９】
このCPU１０１−１およびCPU１０１−２の処理と並行して、CPU１０１−３およびCPU１０１−４が、画像データＣについて、画像データＹの場合と同様に、ウェーブレット変換、係数並び替え、およびエントロピ符号化を行う。
【０２００】
図１６のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、CPU１０１−１乃至CPU１０１−４の４つのCPUを１組として符号化処理が行われる。従って、この場合、CPU１０１−１乃至CPU１０１−４により１つの符号化部１０が実現される。当然、この符号化部１０は、符号化される動画像データの全てのピクチャの符号化処理を行うようになされる。その場合の処理の流れを図１７に示す。
【０２０１】
CPU１０１−１乃至CPU１０１−４は、互いに独立して動作することができ、図１７に示される例のように、各処理を並行して実行することができる。
【０２０２】
図１７に示される例においては、CPU１０１−１は、先頭のピクチャの先頭のプレシンクト（P1）の画像データＹをRAM１０３より読み出し、その画像データＹに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P1DWT（Y））、得られた係数データをRAM１０３に格納する。
【０２０３】
係数データをRAM１０３に格納すると、CPU１０１−１は、続けて、先頭のピクチャの２番目のプレシンクト（P1）の画像データＹをRAM１０３より読み出し、その画像データＹに対してキャッシュメモリ１１１−１に中間データを保持させながらウェーブレット変換を行い（P2DWT（Y））、得られた係数データをRAM１０３に格納する。このとき、CPU１０１−２は、そのCPU１０１−１のP2DWT（Y）の処理と並行して、RAM１０３に格納された先頭のプレシンクト（P1）の係数データを読み出し、順序の並び替えおよびエントロピ符号化を行う（P1VLC（Y））。得られた符号化データＹをRAM１０３に格納すると、CPU１０１−２は、続けて、RAM１０３に格納された２番目のプレシンクト（P1）の係数データを読み出し、順序の並び替えおよびエントロピ符号化を行う（P2VLC（Y））。
【０２０４】
つまり、CPU１０１−１およびCPU１０１−２は、処理対象を互いに１プレシンクト分ずらして、ウェーブレット変換と、係数並び替えおよびエントロピ符号化を並行して実行する。３番目以降のプレシンクトについても同様に、ウェーブレット変換と、係数並び替えおよびエントロピ符号化が並行して実行される。
【０２０５】
なお、この画像データＹに対する符号化処理と並行して、CPU１０１−３およびCPU１０１−４は、画像データＣに対して同様に処理を行う。つまり、CPU１０１−１がP1DWT（Y）の処理を実行するのと並行して、CPU１０１−３がP1DWT（C）の処理を実行し、CPU１０１−１がP2DWT（Y）の処理を実行するのと並行して、CPU１０１−３がP2DWT（C）の処理を実行し、CPU１０１−４がP1VLC（C）の処理を実行する。
【０２０６】
従って、この場合の符号化部１０は、CPU１０１−２およびCPU１０１−４が先頭のプレシンクトについてエントロピ符号化を終了した時点で、RAM１０３に１プレシンクト分以上の符号化データ（符号化データＹおよび符号化データＣ）が蓄積されるので、符号化データの出力を開始することができる。
【０２０７】
２番目以降のプレシンクトについても同様に、画像データＹは、CPU１０１−１およびCPU１０１−２により符号化され、それと並行して、画像データＣは、CPU１０１−３およびCPU１０１−４により符号化される。最後のｎ番目のプレシンクト（Pn）の画像データＹおよび画像データＣが符号化され、符号化データＹおよび符号化データＣが出力されると、先頭のピクチャの符号化データは全て出力されたので、先頭のピクチャについて符号化データの出力が終了される。
【０２０８】
２番目以降のピクチャについても同様に処理される。
【０２０９】
以上のように、図１６に示される割り当ての例の場合、図１４の例の場合と同様に、符号化データの出力開始タイミングを早くすることができ、遅延時間を低減させることができる。付言するに、図１６に示される割り当ての例の場合、符号化部１０は、図１７に示されるように、図１４の例の場合よりも速く最初のピクチャの符号化を行うことができるので、符号化部１０において符号化された符号化データを復号部２０において順次復号し、復元された画像データの画像をモニタに表示させる場合、符号化が開始されてから最初のピクチャが表示されるまでの遅延時間を短くすることができる。
【０２１０】
また、図１３の例の場合と同様に、途中計算用バッファ部１２がキャッシュメモリ１１１に形成され、係数並び替え用バッファ部１３がRAM１０３に形成されるので、図１１の例の場合よりも、途中計算用バッファ部１２および係数並び替え用バッファ部１３の容量を大きくすることができ、バッファ溢れの発生を抑制することができ、さらにスループットの低下を小さくすることができる。
【０２１１】
さらに、図１６の例の場合、図１４の例の場合と同様に、画像データＹのウェーブレット変換の中間データと、画像データＣのウェーブレット変換の中間データとが、互いに異なるキャッシュメモリ１１１に蓄積されるので、図１３の例の場合よりも、途中計算用バッファ部１２の容量をさらに大きくすることができ、バッファ溢れの発生をより抑制することができる。
【０２１２】
ただし、実際には、画像データＹの方が画像データＣよりも情報量が多く絵が複雑であるので、符号化処理に要する時間が長い。従って、CPU１０１−３およびCPU１０１−４に待機時間が発生する。さらに、符号化処理の途中でCPU１０１が切り替わるので制御が複雑になるとともに処理時間も増大する。従って、CPU１０１の使用効率は図１４の場合よりもさらに低下し、スループットも図１４の場合よりもさらに低下する。
【０２１３】
ウェーブレット変換、係数並び替え、およびエントロピ符号化の各処理は、それぞれ複数の関数により構成されているので、上述したようなウェーブレット変換と係数並び替えの間以外のところで割り当てるCPU１０１を変更するようにすることも可能であるが、並列に実行可能な処理でなければ互いに異なるCPU１０１が割り当てられるようにしても処理時間を短縮することはできない。図１に示される符号化部１０において、ウェーブレット変換部１１の処理に含まれる詳細な処理を並列化することは困難である。また、係数並び替えは、係数並び替え用バッファ部１３からの係数データの読み出しであるので、この係数並び替えとエントロピ符号化に互いに異なるCPU１０１を割り当てると、さらにCPU１０１間で係数データの転送も必要になるので、処理が非効率になる。従って、符号化部１０においては、上述したように、ウェーブレット変換と、係数並び替えおよびエントロピ符号化とで分けるのが理想的である。
【０２１４】
従来あるコンピュータのように、コンピュータが自動的に処理を実行するCPUを割り当てる場合、負荷状況等に応じて割り当てを行うため、このように最適な位置で処理を分割し、互いに異なるCPUに割り当てるとは限らず、場合によっては符号化処理の効率が大幅に低減してしまう恐れがある。予め、図１７の例のように、ウェーブレット変換と、係数並び替えおよびエントロピ符号化との間で処理を分割するようにすることにより、符号化部１０は、効率よく符号化処理を実行することができる。
【０２１５】
なお、図１６においては、係数並び替え用バッファ部１３−１および係数並び替え用バッファ部１３−２をRAM１０３に形成するように説明したが、係数並び替え用バッファ部１３−１は、CPU１０１−２のキャッシュメモリ１１１−２に形成されるようにしてもよく、また、係数並び替え用バッファ部１３−２は、CPU１０１−４のキャッシュメモリ１１１−４に形成されるようにしてもよい。
【０２１６】
図１８は、図６の復号部２０に対するハードウェア資源の割り当ての例を示す図である。図１８に示される例においては、図１１の符号化部１０の例の場合と同様に、復号部２０のエントロピ復号部２１およびウェーブレット逆変換部２３の全処理に対してCPU１０１−１が割り当てられ、係数バッファ部２２は、キャッシュメモリ１１１−１に形成される。
【０２１７】
このとき、エントロピ復号部２１およびウェーブレット逆変換部２３の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１にロードされる。CPU１０１−１は、そのソフトウェアプログラムの関数を必要に応じてキャッシュメモリ１１１−１より読み出して実行する。
【０２１８】
復号される符号化データＹと符号化データＣは、RAM１０３に保持される。
【０２１９】
図１８の例の場合、符号化データＹも符号化データＣもCPU１０１−１において復号される。つまり、CPU１０１−１は、エントロピ復号部２１の処理を実行することにより、RAM１０３より符号化データＹを読み出してエントロピ復号を行う。CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部または全部を係数バッファ部２２として利用し、エントロピ復号により生成された係数データをその係数バッファ部２２に保持させる。
【０２２０】
CPU１０１−１は、ウェーブレット逆変換部２３の処理を実行することにより、キャッシュメモリ１１１−１の係数バッファ部２２に保持されている係数データを読み出し、ウェーブレット逆変換処理を行い、画像データＹを復元する。CPU１０１−１は、復元した画像データＹをRAM１０３に供給して格納させる。
【０２２１】
CPU１０１−１は、画像データＣに対しても画像データＹの場合と同様に処理を行う。
【０２２２】
図１８のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、復号部２０の全ての処理は、１つのCPU１０１において実行され、エントロピ復号処理により生成される係数データは、そのCPU１０１のキャッシュメモリ１１１に格納される。
【０２２３】
このとき、例えば、他のCPU１０１−２乃至CPU１０１−４も、このCPU１０１−１と同様に復号部２０に割り当てられるようにしてもよい。つまり、図１８に示されるCPU１０１−１の場合と同様に、エントロピ復号部２１およびウェーブレット逆変換部２３の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれにもロードされる。CPU１０１−２乃至CPU１０１−４は、それぞれのキャッシュメモリ１１１よりそれらのソフトウェアプログラムを読み出して実行し、復号部２０のエントロピ復号部２１およびウェーブレット逆変換部２３を実行する。このとき、キャッシュメモリ１１１−２乃至キャッシュメモリ１１１−４のそれぞれには、キャッシュメモリ１１１−１と同様に、係数バッファ部２２が形成される。
【０２２４】
つまり、この場合、CPU１０１−１乃至CPU１０１−４により４つの復号部２０が実現される。これらの復号部２０は、例えば、符号化データの符号化前の画像データのピクチャ毎に割り当てられる。つまり、この場合、CPU１０１−１乃至CPU１０１−４は、互いに異なるピクチャに対する復号処理を互いに並行して実行する。その場合の処理の流れを図１９に模式的に示す。
【０２２５】
図１９に示されるように、エントロピ復号部２１の処理を実行するCPU１０１−１は、RAM１０３より先頭のピクチャの先頭のプレシンクトの符号化データＹを読み出してエントロピ復号を行い（P1VLD（Y））、得られた係数データを、キャッシュメモリ１１１−１の係数バッファ部２２に格納させる。次に、ウェーブレット逆変換部２３の処理を実行するCPU１０１−１は、その係数バッファ部２２より係数データを読み出し、ウェーブレット逆変換を行い（P1DWT（Y））、得られた画像データＹをRAM１０３に供給して保持させる。画像データＹについて処理が終了すると、CPU１０１−１は、次に符号化データＣについて同様の処理を行う（P1VLD(C),P1DWT(C)）。
【０２２６】
この時点で、RAM１０３には、少なくとも１プレシンクト分以上の画像データＹおよび画像データＣが蓄積されるので、それら画像データＹおよび画像データＣの出力が開始される。
【０２２７】
先頭のプレシンクトに対して復号処理が終了すると、CPU１０１−１は、２番目以降のプレシンクトに対して復号処理を同様に行う（P2VLD(Y),P2DWT(Y),P2VLD(C),P2DWT(C),・・・）。
【０２２８】
図１９に示されるように、このCPU１０１−１の処理と並行して、CPU１０１−２は２番目のピクチャについて、CPU１０１−３は３番目のピクチャについて、CPU１０１−４は４番目のピクチャについて、同様の復号処理を行うこともできる。この場合、CPU１０１−１は、先頭のピクチャに対する処理が終了すると、次に、５番目のピクチャに対して復号処理を行う。そのCPU１０１−１の処理と並行して、CPU１０１−２乃至CPU１０１−４も同様に、それぞれ６番目乃至８番目のピクチャに対して復号処理を行う。なお、９番目以降のピクチャについても同様に処理される。
【０２２９】
つまり、このように図１８に示される割り当ての場合、復号部２０は４つのピクチャの復号処理を同時に並行して行うことができる。さらに、この場合、一連の復号処理の中でCPUの切り替えを行う必要が無い。また、キャッシュメモリ１１１のみを用いてRAM１０３を使用せずに処理を行うことができるので、復号部２０は、高速に符号化データを復号することができる。つまり復号部２０は、高スループットで復号処理を行うことができる。また、パーソナルコンピュータ１００は、そのCPU１０１の数によらず（例えば１つであっても）、復号部２０を実装することができる。
【０２３０】
しかしながら、キャッシュメモリ１１１の容量は少ないので、同時に蓄積可能なデータ量に制限があり、復号する符号化データのデータ量や内容によっては、キャッシュメモリ１１１の容量が不足し、溢れが生じる恐れがあるので、図１８に示される割り当ての例は、復号の実行に必要なバッファ量が多い場合には適用することができないこともある。
【０２３１】
図２０は、図６の復号部２０に対するハードウェア資源の割り当ての、他の例を示す図である。図２０に示される例においては、符号化データＹの復号を行う復号部と、符号化データＣの復号を行う復号部のそれぞれに対して互いに異なるCPUが割り当てられている。
【０２３２】
つまり、符号化データＹの復号を行う復号部のエントロピ復号部２１−１およびウェーブレット逆変換部２３−１の全処理に対して、CPU１０１−１が割り当てられ、係数バッファ部２２−１はキャッシュメモリ１１１−１に形成される。また、符号化データＣの復号を行う復号部のエントロピ復号部２１−２およびウェーブレット逆変換部２３−２の全処理に対してCPU１０１−２が割り当てられ、係数バッファ部２２−２はキャッシュメモリ１１１−２に形成される。
【０２３３】
このときエントロピ復号部２１およびウェーブレット逆変換部２３の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１およびキャッシュメモリ１１１−２にロードされる。CPU１０１−１およびCPU１０１−２は、それぞれ、そのソフトウェアプログラムの関数を必要に応じてキャッシュメモリ１１１−１またはキャッシュメモリ１１１−２に読み出して実行する。
【０２３４】
図２０の例の場合、符号化データＹはCPU１０１−１において復号され、符号化データＣは、CPU１０１−２において復号される。つまり、CPU１０１−１は、エントロピ復号部２１−１の処理を実行することにより、RAM１０３より符号化データＹを読み出してエントロピ復号を行う。CPU１０１−１は、キャッシュメモリ１１１−１の記憶領域の一部または全部を係数バッファ部２２−１として利用し、エントロピ復号により生成された係数データをその係数バッファ部２２−１に保持させる。
【０２３５】
CPU１０１−１は、ウェーブレット逆変換部２３−１の処理を実行することにより、キャッシュメモリ１１１−１の係数バッファ部２２−１に保持されている係数データを読み出し、ウェーブレット逆変換処理を行い、画像データＹを復元する。CPU１０１−１は、復元した画像データＹをRAM１０３に供給して格納させる。
【０２３６】
CPU１０１−２は、エントロピ復号部２１−２の処理を実行することにより、RAM１０３より符号化データＣを読み出してエントロピ復号を行う。CPU１０１−２は、キャッシュメモリ１１１−２の記憶領域の一部または全部を係数バッファ部２２−２として利用し、エントロピ復号により生成された係数データをその係数バッファ部２２−２に保持させる。
【０２３７】
CPU１０１−２は、ウェーブレット逆変換部２３−２の処理を実行することにより、キャッシュメモリ１１１−２の係数バッファ部２２−２に保持されている係数データを読み出し、ウェーブレット逆変換処理を行い、画像データＣを復元する。CPU１０１−２は、復元した画像データＣをRAM１０３に供給して格納させる。
【０２３８】
図２０のように、パーソナルコンピュータ１００において符号化部１０を実装する場合、画像データＹおよび画像データＣに対する復号部２０の全ての処理は、それぞれ互いに異なる１つのCPU１０１において実行され、エントロピ復号により発生する係数データは、それぞれのCPU１０１に内蔵されるキャッシュメモリ１１１に格納され、ウェーブレット逆変換により復元される画像データＹおよび画像データＣは、ともにRAM１０３に格納される。つまり、２つのCPUを１組として符号化処理が行われる。
【０２３９】
このとき、例えば、他のCPU１０１−３およびCPU１０１−４も、このCPU１０１−１およびCPU１０１−２と同様に、復号部２０に割り当てられるようにしてもよい。つまり、図２０のCPU１０１−１およびCPU１０１−２の場合と同様に、エントロピ復号部２１およびウェーブレット逆変換部２３の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−３およびキャッシュメモリ１１１−４のそれぞれにもロードされる。CPU１０１−３およびCPU１０１−４は、それぞれのキャッシュメモリ１１１よりそれらのソフトウェアプログラムを読み出して実行し、復号部２０のエントロピ復号部２１およびウェーブレット逆変換部２３の各処理を実行する。このとき、キャッシュメモリ１１１−３には、符号化データＹ用の係数バッファ部２２−１が形成され、キャッシュメモリ１１１−４には、符号化データＣ用の係数バッファ部２２−２が形成される。
【０２４０】
つまり、この場合、CPU１０１−１乃至CPU１０１−４により２つの復号部２０が実現される。これらの復号部２０は、例えば、符号化データの符号化前の画像データのピクチャ毎に割り当てられる。例えば、CPU１０１−１およびCPU１０１−２が奇数番目のピクチャの復号処理を行い、CPU１０１−３およびCPU１０１−４が偶数番目のピクチャの復号処理を行うようになされる。その場合の処理の流れを図２１に示す。
【０２４１】
この場合、図２１に示されるように、エントロピ復号部２１−１の処理を実行するCPU１０１−１は、RAM１０３より先頭のピクチャの先頭のプレシンクトの符号化データＹを読み出してエントロピ復号を行い（P1VLD（Y））、得られた係数データを、キャッシュメモリ１１１−１の係数バッファ部２２−１に格納させる。次に、ウェーブレット逆変換部２３−１の処理を実行するCPU１０１−１は、その係数バッファ部２２−１より係数データを読み出し、ウェーブレット逆変換を行い（P1DWT（Y））、得られた画像データＹをRAM１０３に供給して保持させる。
【０２４２】
この処理と並行して、エントロピ復号部２１−２の処理を実行するCPU１０１−２は、RAM１０３より先頭のピクチャの先頭のプレシンクトの符号化データＣを読み出してエントロピ復号を行い（P1VLD（C））、得られた係数データを、キャッシュメモリ１１１−２の係数バッファ部２２−２に格納させる。次に、ウェーブレット逆変換部２３−２の処理を実行するCPU１０１−２は、その係数バッファ部２２−２より係数データを読み出し、ウェーブレット逆変換を行い（P1DWT（C））、得られた画像データＣをRAM１０３に供給して保持させる。
【０２４３】
従って、この場合の復号部２０は、CPU１０１−１およびCPU１０１−２が先頭のプレシンクトについてウェーブレット逆変換を終了した時点で、RAM１０３に１プレシンクト分以上の画像データ（画像データＹおよび画像データＣ）が蓄積されるので、画像データの出力を開始することができる。
【０２４４】
２番目以降のプレシンクトについても同様に、符号化データＹはCPU１０１−１により、符号化データＣはCPU１０１−２により、互いに並行して復号される。
【０２４５】
このCPU１０１−１およびCPU１０１−２の処理と並行して、CPU１０１−３およびCPU１０１−４により２番目のピクチャについてCPU１０１−１およびCPU１０１−２の処理と同様の復号処理を行うようにすることができる。この場合、CPU１０１−３は２番目のピクチャの符号化データＹについて復号を行い、CPU１０１−４は２番目のピクチャの符号化データＣについて復号を行う。
【０２４６】
この場合、CPU１０１−１およびCPU１０１−２は、先頭のピクチャに対する処理を終了すると、次に、３番目のピクチャに対して復号処理を行う。そのCPU１０１−１およびCPU１０１−２の処理と並行して、CPU１０１−３およびCPU１０１−４も同様に４番目のピクチャに対して復号処理を行う。５番目以降のピクチャについても同様に処理される。
【０２４７】
従って、図２０に示される割り当ての例の場合、符号化データＹと符号化データＣを並行して復号することにより、図１８の例の場合よりも、復元された画像データの出力開始タイミング、すなわち、先頭のプレシンクトの画像データＹおよび画像データＣの出力タイミングを早くすることができるので、復号処理の遅延時間を低減させることができる。付言するに、同様の理由から、図２０に示される割り当ての例の場合の方が、図１８の例の場合よりも速く、先頭ピクチャの復号を完了させることができる。従って、復号部２０において復元された画像データの画像をモニタに表示させる場合、復号処理が開始されてから最初のピクチャが表示されるまでの遅延時間は、図２０に示される割り当ての例の場合の方が、図１８の例の場合よりも短くなる。
【０２４８】
また、符号化データＹが復号されて得られる係数データと、符号化データＣが復号されて得られる係数データとが、互いに異なるキャッシュメモリ１１１に蓄積されるので、図１８の例の場合よりも、係数バッファ部２２の容量を大きくすることができ、バッファ溢れの発生をより抑制することができる。
【０２４９】
なお、画像データＹの方が画像データＣよりも情報量が多く絵が複雑であるので、復号処理に要する時間が長い。従って、CPU１０１−２やCPU１０１−４に待機時間が発生するので、CPU１０１の使用効率は図１８の例の場合よりも低下し、スループットも図１８の場合よりも低下する。
【０２５０】
図２２に、図６の復号部２０の割り当ての、さらに他の例を示す。図２２に示される例においては、図２０の割り当ての例よりさらに、エントロピ復号部２１と、ウェーブレット逆変換部２３のそれぞれに対して互いに異なるCPU１０１が割り当てられている。
【０２５１】
つまり、符号化データＹを復号するエントロピ復号部２１−１に対して、CPU１０１−１が割り当てられ、エントロピ復号部２１−１において生成された係数データのウェーブレット逆変換処理を行うウェーブレット逆変換部２３−１に対して、CPU１０１−２が割り当てられている。係数バッファ部２２−１は、キャッシュメモリ１１１−２に形成される。
【０２５２】
同様に、符号化データＣを復号するエントロピ復号部２１−２に対して、CPU１０１−３が割り当てられ、エントロピ復号部２１−２において生成された係数データのウェーブレット逆変換処理を行うウェーブレット逆変換部２３−２に対して、CPU１０１−４が割り当てられている。係数バッファ部２２−２は、キャッシュメモリ１１１−４に形成される。
【０２５３】
このとき、エントロピ復号部２１の機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−１およびキャッシュメモリ１１１−３にロードされ、ウェーブレット逆変換部２３の各機能を実現するソフトウェアプログラムは、キャッシュメモリ１１１−２およびキャッシュメモリ１１１−４にロードされる。CPU１０１−１乃至CPU１０１−４は、それぞれ、それらのソフトウェアプログラムの関数を、必要に応じて、それぞれのキャッシュメモリ１１１より読み出して実行する。
【０２５４】
図２２の例の場合、符号化データＹはCPU１０１−１およびCPU１０１−２において復号され、符号化データＣはCPU１０１−３およびCPU１０１−４において復号される。つまり、CPU１０１−１は、符号化データＹについて、エントロピ復号部２１−１の処理を実行することにより、RAM１０３より符号化データＹを読み出してエントロピ復号処理を行う。その際、CPU１０１−１は、キャッシュメモリ１１１−２の記憶領域の一部または全部を係数バッファ部２２として利用し、生成した係数データをその係数バッファ部２２に保持させる。
【０２５５】
CPU１０１−２は、ウェーブレット逆変換部２３−１の処理を実行することにより、CPU１０１−１が生成し、RAM１０３の係数バッファ部２２に保持されている係数データを読み出し、ウェーブレット逆変換処理として階層的に垂直方向および水平方向に合成フィルタリング処理を行い、画像データＹを生成する。CPU１０１−２は、生成した画像データＹをRAM１０３に供給して格納させる。
【０２５６】
このCPU１０１−１およびCPU１０１−２の処理と並行して、CPU１０１−３およびCPU１０１−４が、画像データＣについて、図２２の例の場合と同様に、エントロピ復号処理およびウェーブレット逆変換処理を行う。
【０２５７】
図２２の例のように、パーソナルコンピュータ１００において復号部２０を実装する場合、CPU１０１−１乃至CPU１０１−４の４つのCPUを１組として復号処理が行われる。従って、この場合、CPU１０１−１乃至CPU１０１−４により１つの復号部２０が実現される。当然、この復号部２０は、復号されて復元される動画像データの全てのピクチャの復号処理を行うようになされる。その場合の処理の流れを図２３に示す。
【０２５８】
CPU１０１−１乃至CPU１０１−４は、互いに独立して動作するので、図２３に示される例のように、各処理を並行して実行することができる。
【０２５９】
この場合、図２３に示されるように、エントロピ復号部２１−１の処理を実行するCPU１０１−１は、RAM１０３より先頭のピクチャの先頭のプレシンクトの符号化データＹを読み出してエントロピ復号を行い（P1VLD（Y））、得られた係数データを、キャッシュメモリ１１１−２の係数バッファ部２２−１に格納させる。エントロピ復号部２１−１の処理を実行するCPU１０１−１は、２番目のプレシンクトの符号化データＹに対して同様にエントロピ復号（P2VLD（Y））を行う。
【０２６０】
このP2VLD（Y）に並行して、ウェーブレット逆変換部２３−１の処理を実行するCPU１０１−２は、係数バッファ部２２−１より、先頭のピクチャの先頭のプレシンクトの係数データを読み出し、ウェーブレット逆変換（P1DWT（Y））を行い、得られた画像データＹを、RAM１０３に保持させた後出力させる。ウェーブレット逆変換部２３−１の処理を実行するCPU１０１−２は、２番目のプレシンクトの係数データに対して同様にウェーブレット逆変換（P2DWT（Y））を行う。
【０２６１】
CPU１０１−１およびCPU１０１−２は、３番目以降のプレシンクトに対しても、同様に、処理対象を互いに１プレシンクト分ずらして、エントロピ復号と、ウェーブレット逆変換とを並行して実行する。
【０２６２】
なお、この画像データＹに対する復号処理と並行して、CPU１０１−３およびCPU１０１−４は、画像データＣに対して同様に復号処理を行う。つまり、CPU１０１−１がP1DWT（Y）の処理を実行するのと並行して、CPU１０１−３がP1DWT（C）の処理を実行し、CPU１０１−１がP2DWT（Y）の処理を実行するのと並行して、CPU１０１−３がP2DWT（C）の処理を実行し、CPU１０１−４がP1VLC（C）の処理を実行する。
【０２６３】
従って、この場合の復号部２０は、CPU１０１−２およびCPU１０１−４が先頭のプレシンクトについてウェーブレット逆変換を終了した時点で、RAM１０３に１プレシンクト分以上の画像データ（画像データＹおよび画像データＣ）が蓄積されるので、画像データの出力を開始することができる。
【０２６４】
２番目以降のプレシンクトについても同様に、符号化データＹは、CPU１０１−１およびCPU１０１−２により復号され、それと並行して、符号化データＣは、CPU１０１−３およびCPU１０１−４により復号される。最後のｎ番目のプレシンクト（Pn）の符号化データＹおよび符号化データＣが復号され、画像データＹおよび画像データＣが出力されると、先頭のピクチャの画像データは全て出力されたので、先頭のピクチャについて画像データの出力が終了される。
【０２６５】
２番目以降のピクチャについても同様に処理される。
【０２６６】
以上のように、図２２に示される割り当ての例の場合、エントロピ復号処理とウェーブレット逆変換処理とを並行して行うことにより、図２０の例の場合よりも、復元された画像データの出力開始タイミング、すなわち、先頭のプレシンクトの画像データＹおよび画像データＣの出力タイミングを早くすることができるので、復号処理の遅延時間を低減させることができる。付言するに、同様の理由から、図２２に示される割り当ての例の場合の方が、図２２の例の場合よりも速く、先頭ピクチャの復号を完了させることができる。従って、復号部２０において復元された画像データの画像をモニタに表示させる場合、復号処理が開始されてから最初のピクチャが表示されるまでの遅延時間は、図２２に示される割り当ての例の場合の方が、図２０の例の場合よりも短くなる。
【０２６７】
また、図２０の例の場合と同様に、符号化データＹを復号して得られる係数データと、符号化データＣを復号して得られる係数データとが互いに異なるキャッシュメモリ１１１に蓄積されるので、図１８の例の場合よりも、係数バッファ部２２の容量をさらに大きくすることができ、バッファ溢れの発生をより抑制することができる。
【０２６８】
ただし、実際には、画像データＹの方が画像データＣよりも情報量が多く絵が複雑であるので、復号処理に要する時間が長い。従って、CPU１０１−３およびCPU１０１−４に待機時間が発生する。さらに、復号処理の途中でCPU１０１が切り替わるので制御が複雑になるとともに処理時間も増大する。従って、CPU１０１の使用効率は図２０の場合よりもさらに低下し、スループットも図２０の場合よりもさらに低下する。
【０２６９】
エントロピ復号およびウェーブレット逆変換の各処理は、それぞれ複数の関数により構成されているので、上述したようなエントロピ復号とウェーブレット逆変換の間以外のところで割り当てるCPU１０１を変更するようにすることも可能であるが、並列に実行可能な処理でなければ互いに異なるCPU１０１に割り当てられるようにしても処理時間を短縮することはできない。図６に示される復号部２０において、エントロピ復号やウェーブレット逆変換の処理に含まれる詳細な処理を並列化することは困難である。従って、復号部２０においては、上述したように、エントロピ復号とウェーブレット逆変換とで分けるのが理想的である。
【０２７０】
従来あるコンピュータのように、コンピュータが自動的に処理を実行するCPUを割り当てる場合、負荷状況等に応じて割り当てを行うため、このように最適な位置で処理を分割し、互いに異なるCPUに割り当てるとは限らず、場合によっては復号処理の効率が大幅に低減してしまう恐れがある。予め、図２２の例のように、エントロピ復号とウェーブレット逆変換との間で処理を分割するようにすることにより、復号部２０は、効率よく復号処理を実行することができる。
【０２７１】
ところで、図１においては、係数の並び替えをウェーブレット変換の直後（エントロピ符号化の前）に行うように説明したが、符号化データが低域から高域の順に復号部２０（図６）のウェーブレット逆変換部２３に供給されればよく（つまり、低域のサブバンドに属する係数データを符号化して得られる符号化データから、高域のサブバンドに属する係数データを符号化して得られる符号化データに向かう順に供給されればよく）、並び替えのタイミングは、ウェーブレット変換の直後以外であってもよい。
【０２７２】
例えば、図２４に示されるように、エントロピ符号化によって得られる符号化データの順序を並び替えるようにしてもよい。図２４の場合の符号化部１０は、図１の場合と同様に、ウェーブレット変換部１１、途中計算用バッファ部１２、およびエントロピ符号化部１５を有するが、図１の係数並び替え用バッファ部１３および係数並び替え部１４の代わりに、符号並び替え用バッファ部２１３および符号並び替え部２１４を有する。
【０２７３】
ウェーブレット変換部１１より出力された係数データはエントロピ符号化部１５に供給される。エントロピ符号化部１５は、供給される係数データをその供給順に符号化し、符号化により得られた符号化データを符号並び替え用バッファ部２１３に保持させる。つまり、符号並び替え用バッファ部２１３には、符号化データが高域から低域の順に供給される。符号並び替え部２１４は、符号並び替え用バッファ部２１３に保持されている符号化データを、ウェーブレット逆変換処理が行われる順、すなわち、低域から高域の順に読み出すことにより符号化データの並び替えを行い、RAM１０３に保持させた後、その順で出力させる。
【０２７４】
図２４には、このような符号化部１０に対するハードウェア資源の割り当ての例も示す。図２４の例の場合、１つのCPU１０１において、符号化処理の各処理を全て行うように割り当てが行われている。つまり、符号化データの順序を並び替える場合も、図１１を参照して説明した係数データを並び替える場合と同様にハードウェア資源を割り当てることができる。同様に、図１３、図１４、または図１６の例のようにハードウェア資源を割り当てることもできる。図１６の例のようにハードウェア資源を割り当てるときの様子を図２５に示す。
【０２７５】
図２５に示されるように、この場合、画像データＹのウェーブレット変換処理を行うウェーブレット変換部１１−１に対して、CPU１０１−１が割り当てられ、画像データＹの係数データのエントロピ符号化を行うエントロピ符号化部１５−１、および、符号化データＹの並び替えを行う符号並び替え部２１４−１に対して、CPU１０１−２が割り当てられる。途中計算用バッファ部１２−１は、CPU１０１−１のキャッシュメモリ１１１−１に形成され、符号並び替え用バッファ部２１３−１は、RAM１０３に形成される。
【０２７６】
同様に、画像データＣのウェーブレット変換処理を行うウェーブレット変換部１１−２に対して、CPU１０１−３が割り当てられ、画像データＣの係数データのエントロピ符号化を行うエントロピ符号化部１５−２、および、符号化データＣの並び替えを行う符号並び替え部２１４−２に対して、CPU１０１−４が割り当てられる。途中計算用バッファ部１２−２は、CPU１０１−３のキャッシュメモリ１１１−３に形成され、符号並び替え用バッファ部２１３−２は、RAM１０３に形成される。
【０２７７】
このように、符号化データの順序を並び替える場合も、係数データを並び替える場合と同様に、ハードウェア資源の割り当てを適切に行うことにより、符号化部１０は、効率よく符号化処理を実行することができる。なお、符号化データの順序を並び替える場合も、図２５に示されるようにウェーブレット変換部１１−１、エントロピ符号化部１５−１、および符号並び替え部２１４−１（または、ウェーブレット変換部１１−２、エントロピ符号化部１５−２、および符号並び替え部２１４−２）に対して複数のCPU１０１を割り当てるとき、そのCPU１０１の切り替え位置を予め定めておくことにより、不適切なハードウェア資源の割り当てを抑制することができる。
【０２７８】
なお、ハードウェア資源の割り当て方法は、上述した以外であってもよい。例えば、図２５の例において、符号並び替え用バッファ部２１３−１がキャッシュメモリ１１１−２に形成され、符号並び替え用バッファ部２１３−２がキャッシュメモリ１１１−４に形成されるようにしてもよいし、エントロピ符号化部１５−１に対してCPU１０１−１を割り当て、エントロピ符号化部１５−２に対してCPU１０１−３を割り当てるようにしてもよいし、ウェーブレット変換部１１−１、エントロピ符号化部１５−１、および符号並び替え部２１４−１に対して互いに異なるCPU１０１を割り当て、ウェーブレット変換部１１−２、エントロピ符号化部１５−２、および符号並び替え部２１４−２に対して互いに異なるCPU１０１を割り当てるようにしてもよい。
【０２７９】
なお、この場合、復号部２０の構成およびハードウェア資源の割り当て方法は、図１８乃至図２３を参照して説明した場合と同様である。
【０２８０】
並び替えは、復号部２０側で行うようにしてもよい。その場合、符号化部１０は、図２６に示されるように、ウェーブレット変換部１１、途中計算用バッファ部１２、およびエントロピ符号化部１５を有し、図１のような係数並び替え用バッファ部１３や係数並び替え部１４を有していない。
【０２８１】
もちろん、このときの符号化部１０のCPU１０１への割り当ても、図１２乃至図１７を参照して説明した、係数データを並び替える場合と同様に行うことができる。つまり、この場合も、ハードウェア資源の割り当てを適切に行うことにより、符号化部１０は、効率よく符号化処理を実行することができる。一例として、図１６の例に対応する例を図２６に示す。
【０２８２】
このときの符号化部１０に対応する復号部２０の構成は、図２７に示されるようになる。すなわち、復号部２０は、係数バッファ部２２とウェーブレット逆変換部２３との間に、係数データの順序を並び替えるための係数並び替え用バッファ部２２３を有する。このときの復号部２０も図１８乃至図２３を参照して説明した例と同様に、CPU１０１に割り当てることができる。つまり、この場合も、ハードウェア資源の割り当てを適切に行うことにより、復号部２０は、効率よく復号処理を実行することができる。一例として、図２２の例に対応する例を図２７に示す。
【０２８３】
図２７の例の場合、係数バッファ部２２−１より出力される輝度成分Ｙの係数データを保持する係数並び替え用バッファ部２２３−１、および、係数バッファ部２２−２より出力される色差成分Ｃの係数データを保持する係数並び替え用バッファ部２２３−２は、RAM１０３に形成される。
【０２８４】
ウェーブレット逆変換部２３−１の処理を実行するCPU１０１−２は、RAM１０３の係数並び替え用バッファ部２２３−１より、輝度成分Ｙの係数データを、並び替えた順、すなわち低域から高域に向かう順で読み出し、その順で係数データに対してウェーブレット逆変換処理を行う。CPU１０１−２は、生成された画像データＹをRAM１０３に保持させた後出力させる。
【０２８５】
同様に、ウェーブレット逆変換部２３−２の処理を実行するCPU１０１−４は、RAM１０３の係数並び替え用バッファ部２２３−２より、色差成分Ｃの係数データを、並び替えた順、すなわち低域から高域に向かう順で読み出し、その順で係数データに対してウェーブレット逆変換処理を行う。CPU１０１−４は、生成された画像データＣをRAM１０３に保持させた後出力させる。
【０２８６】
以上のように、符号化部１０および復号部２０の各処理を適切にCPU１０１に割り当てることにより、符号化部１０および復号部２０の処理効率を向上させ、スループットを向上させたり、遅延時間を低減させたりすることができる。
【０２８７】
なお、図２７においては、係数並び替え用バッファ部２２３−１および係数並び替え用バッファ部２２３−２をRAM１０３に形成するように説明したが、係数並び替え用バッファ部２２３−１は、CPU１０１−２のキャッシュメモリ１１１−２に形成されるようにしてもよく、また、係数並び替え用バッファ部２２３−２は、CPU１０１−４のキャッシュメモリ１１１−４に形成されるようにしてもよい。
【０２８８】
なお、符号化部１０や復号部２０に求められる特性が、画像データの内容（画像）、符号化方法、復号方法、使用可能なハードウェア資源、または使用目的等によって異なる場合がある。例えば、画像の画素数が４０００×２０００以上である高精細映像を符号化処理の対象とする場合やフレームレートが高い場合、符号化処理や復号処理の処理量（処理されるデータ量）が多い。そのため、符号化処理が復号処理をリアルタイム（即時的）に行うためには、処理の高スループット化が優先される。また、例えばテレビ会議システムや家庭用ビデオゲームシステムのように、より低遅延で画像データの伝送を行う必要がある場合、符号化処理や復号処理も低遅延化が優先される。また、現在使用可能なハードウェア資源や、予想されるメモリの使用量によっては、実現不可能な割り当てパターンが存在する可能性もある。
【０２８９】
つまり、ハードウェアの割り当てパターンの例を上述したが、どのような割り当てパターンが最善であるか（より効率よく処理を行うことができるか）は、画像データの内容（画像）、符号化方法、復号方法、使用可能なハードウェア資源、または使用目的等によって変化することがある。
【０２９０】
そこで多様な条件において適切な割り当てパターンを適用することができるように、上述したようなハードウェアの割り当てパターンを予め複数用意し、条件に応じて適切に割り当てパターンを選択するようにしてもよい。以下にその場合について説明する。最初に、ソフトウェアエンコーダやソフトウェアデコーダに対して割り当てられるハードウェア資源の例について説明する。図２８は、ソフトウェアエンコーダやソフトウェアデコーダが実装される情報処理システムの構成例を示すブロック図である。
【０２９１】
図２８に示されるように、情報処理システム３００は、情報処理装置３０１、その情報処理装置３０１とPCIバス３０２によって接続された、記憶装置３０３、複数台のビデオテープレコーダ（VTR）であるVTR３０４−１乃至VTR３０４−Ｓ、ユーザがこれらに対する操作入力を行うためのマウス３０５、キーボード３０６、並びに操作コントローラ３０７により構成されるシステムであり、インストールされたプログラムによって、上述したような画像符号化処理や画像復号処理等を行うシステムである。
【０２９２】
例えば情報処理システム３００の情報処理装置３０１は、RAID（Redundant Arrays of Independent Disks）でなる大容量の記憶装置３０３に記憶されている動画コンテンツを符号化して得られた符号化データを記憶装置３０３に記憶させたり、記憶装置３０３に記憶されている符号化データを復号して得られた復号画像データ（動画コンテンツ）を記憶装置３０３に記憶させたり、符号化データや復号画像データをVTR３０４−１乃至VTR３０４−Ｓを介してビデオテープに記録したりすることができる。また、情報処理装置３０１は、VTR３０４−１乃至VTR３０４−Ｓに装着されたビデオテープに記録された動画コンテンツを記憶装置３０３に取り込み得るようにもなされている。その際、情報処理装置３０１が、動画コンテンツを符号化するようにしてもよい。
【０２９３】
情報処理装置３０１は、マイクロプロセッサ４０１、GPU（Graphics Processing Unit）４０２、XDR（Extreme Data Rate）-RAM４０３、サウスブリッジ４０４、HDD（Hard Disk Drive）４０５、USBインタフェース（USB I/F）４０６、およびサウンド入出力コーデック４０７を有している。
【０２９４】
GPU４０２は専用のバス４１１を介してマイクロプロセッサ４０１に接続される。XDR-RAM４０３は専用のバス４１２を介してマイクロプロセッサ４０１に接続される。サウスブリッジ４０４は、専用のバスを介してマイクロプロセッサ４０１のI/Oコントローラ４４４に接続される。このサウスブリッジ４０４には、HDD４０５、USBインタフェース４０６、および、サウンド入出力コーデック４０７も接続されている。このサウンド入出力コーデック４０７にはスピーカ４２１が接続されている。また、GPU４０２にはディスプレイ４２２が接続されている。
【０２９５】
またサウスブリッジ４０４には、さらに、PCIバス３０２を介して、マウス３０５、キーボード３０６、VTR３０４−１乃至VTR３０４−Ｓ、記憶装置３０３、並びに、操作コントローラ３０７が接続されている。
【０２９６】
マウス３０５およびキーボード３０６は、ユーザの操作入力を受け、PCIバス３０２およびサウスブリッジ４０４を介して、ユーザの操作入力の内容を示す信号を、マイクロプロセッサ４０１に供給する。記憶装置３０３およびVTR３０４−１乃至VTR３０４−Ｓは、所定のデータを記録または再生できるようになされている。
【０２９７】
PCIバス３０２にはさらに、必要に応じてドライブ３０８が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア３１１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてHDD４０５にインストールされる。
【０２９８】
マイクロプロセッサ４０１は、OS（Operating System）等の基本プログラムを実行する汎用のメインCPUコア４４１と、メインCPUコア４４１に共有バス４４５を介して接続された複数（この場合８個）のRISC（Reduced Instruction Set Computer）タイプの信号処理プロセッサである、サブCPUコア４４２−１乃至サブCPUコア４４２−８と、例えば２５６[MByte]の容量を持つXDR-RAM４０３に対するメモリコントロールを行うメモリコントローラ４４３と、サウスブリッジ４０４との間でデータの入出力を管理するI/O（In/Out）コントローラ４４４とが１チップに集積されたマルチコア構成でなり、例えば動作周波数４[GHz]を実現している。
【０２９９】
このマイクロプロセッサ４０１は、起動時、HDD４０５に格納された制御プログラムに基づき、HDD４０５に格納されている必要なアプリケーションプログラムを読み出してXDR-RAM４０３に展開し、この後このアプリケーションプログラム及びオペレータ操作に基づいて必要な制御処理を実行する。
【０３００】
また、マイクロプロセッサ４０１は、ソフトウェアを実行することにより、例えば、上述した符号化処理や復号処理を実現し、エンコードの結果得られた符号化ストリームを、サウスブリッジ４０４を介して、HDD４０５に供給して記憶させたり、デコードした結果得られる動画像コンテンツの再生映像を、GPU４０２へデータ転送して、ディスプレイ４２２に表示させたりすることができる。
【０３０１】
マイクロプロセッサ４０１内の各CPUコアの使用方法は任意であるが、例えば、メインCPUコア４４１が、画像符号化処理や画像復号処理の制御に関する処理を行い、８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８に、ウェーブレット変換、係数並び替え、エントロピ符号化、エントロピ復号、ウェーブレット逆変換、量子化、および逆量子化等の各処理を、例えば図９を参照して説明したように同時並列的に実行させるようにしてもよい。その際、メインCPUコア４４１が、８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれに対してプレシンクト単位で処理を割り振るようにすれば、符号化処理や復号処理が、図９を参照して説明した場合と同様にプレシンクト単位で同時並列的に実行される。つまり、符号化処理や復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。もちろん、これ以外の方法で各処理を行うようにしてもよい。
【０３０２】
GPU４０２は、ディスプレイ４２２に表示する動画コンテンツの再生映像を動かすときのテクスチャの張り込みなどに関する最終的なレンダリング処理に加えて、動画コンテンツの再生映像及び静止画コンテンツの静止画像をディスプレイ４２２に一度に複数表示するときの座標変換計算処理や、動画コンテンツの再生映像及び静止画コンテンツの静止画像に対する拡大・縮小処理等を行う機能を司り、マイクロプロセッサ４０１の処理負担を軽減させるようになされている。
【０３０３】
GPU４０２は、マイクロプロセッサ４０１の制御のもとに、供給された動画コンテンツの映像データや静止画コンテンツの画像データに対して所定の信号処理を施し、その結果得られた映像データや画像データをディスプレイ４２２へ送出して、画像信号をディスプレイ４２２へ表示させる。
【０３０４】
ところで、マイクロプロセッサ４０１における８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８で同時並列的にデコードされた複数の動画コンテンツにおける再生映像は、バス４１１を介してGPU４０２へデータ転送されるが、このときの転送速度は、例えば、最大３０[Gbyte/sec]であり、特殊効果の施された複雑な再生映像であっても高速かつ滑らかに表示し得るようになされている。
【０３０５】
また、マイクロプロセッサ４０１は、動画コンテンツの映像データ及び音声データのうち音声データに対して音声ミキシング処理を施し、その結果得られた編集音声データを、サウスブリッジ４０４およびサウンド入出力コーデック４０７を介して、スピーカ４２１へ送出することにより、音声信号に基づく音声をスピーカ４２１から出力させることもできる。
【０３０６】
このような情報処理システム３００のマイクロプロセッサ４０１における８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれには、図２９に示されるように、キャッシュメモリとしてLS（Local Store）４５１−１乃至LS４５１−８が内蔵されている。つまり、８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８は、各自が内蔵するLS４５１−１乃至LS４５１−８とXDR-RAM４０３の記憶領域を利用することができる。
【０３０７】
図１０のパーソナルコンピュータ１００のキャッシュメモリ１１１の場合と同様に、LS４５１−１乃至LS４５１−８は、サブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれが独占的に使用することができ、かつ、共有バス４４５を介さずにデータの読み出しや書き込みを行うことができ、さらに、XDR-RAM４０３よりも高速に動作する。従って、LS４５１−１乃至LS４５１−８は、XDR-RAM４０３よりも高速にデータの読み出しや書き込みが可能である。ただし、LS４５１−１乃至LS４５１−８は、XDR-RAM４０３と比べて容量当たりの単価が高く、かつ、その容量が小さい。
【０３０８】
実際には、XDR-RAM４０３の容量も有限であるが、以下においては、XDR-RAM４０３の容量は十分に大きいものとし、逆に、LS４５１−１乃至LS４５１−８の容量は小さく、必要最小限のデータしか保持することができないものとする。
【０３０９】
なお、以下において、サブCPUコア４４２−１乃至サブCPUコア４４２−８を互いに区別して説明する必要の無い場合、サブCPUコア４４２と称する。また、LS４５１−１乃至LS４５１−８を互いに区別して説明する必要の無い場合、LS４５１と称する。このサブCPUコア４４２（LS４５１）の数は、図２８においては８個設けられるように示されているが、実際には任意である。
【０３１０】
サブCPUコア４４２−１乃至サブCPUコア４４２−８は、メインCPUコア４４１により、予め用意された複数の割り当て方法から最適なものが選択され、その割り当て方法に従って符号化部１０および復号部２０の各処理が割り当てられる。
【０３１１】
そのメインCPUコア４４１が有する機能ブロックを図３０に示す。
【０３１２】
図３０に示されるように、メインCPUコア４４１は、情報処理システム３００全体の制御を行い、ソフトウェアプログラムの処理をハードウェアに実行させる基本ソフトウェアであるOS５０１、符号化部１０を実装する際の割り当て方法の選択を行う符号化選択制御部５０２、復号部２０を実装する際の割り当て方法の選択を行う復号選択制御部５０３、および、メインCPUコア４４１のローカルなキャッシュメモリであるキャッシュ５０４を有する。
【０３１３】
OS５０１は、情報処理システム３００のハードウェア資源を管理しており、符号化選択制御部５０２や復号選択制御部５０３からの要求に基づいて、ハードウェア資源に関する情報である資源情報を提供したり、処理に対してハードウェア資源を割り当てたりする。例えば、OS５０１は、符号化プログラムや復号プログラムをHDD４０５より読み出し、LS４５１やXDR-RAM４０３に割り当てたり、処理をサブCPUコア４４２に実行させたりする。また、OS５０１は、例えば、XDR-RAM４０３に必要な容量の領域を確保したりする。
【０３１４】
符号化選択制御部５０２は、画像パラメータ取得部５１１、符号化パラメータ取得部５１２、資源情報取得部５１３、演算精度選択部５１４、途中計算用バッファ使用量算出部５１５、係数並び替え用バッファ使用量算出部５１６、符号化プログラム選択部５１７、およびプログラム実行部５１８を有する。
【０３１５】
画像パラメータ取得部５１１は、XDR-RAM４０３に保持されている、符号化処理の処理対象である画像データ５４１の画像、または、復号処理の処理対象である符号化データ５４２の画像に関するパラメータ情報である画像パラメータ５４３を取得する。符号化パラメータ取得部５１２は、XDR-RAM４０３に保持されている、符号化処理に関するパラメータ情報である符号化パラメータ５４４を取得する。資源情報取得部５１３は、現在利用可能なサブCPUコアの個数やLS４５１の容量等の情報のうち、少なくともいずれか１つを含む資源情報を、OS５０１を介して取得する。演算精度選択部５１４は、符号化パラメータ取得部５１２により取得された符号化パラメータ５４４に基づいて、ウェーブレット変換処理における演算精度を選択する。
【０３１６】
途中計算用バッファ使用量算出部５１５は、途中計算用バッファ部１２として必要な容量を示す途中計算用バッファ使用量を各コンポーネントについて算出する。係数並び替え用バッファ使用量算出部５１６は、係数並び替え用バッファ部１３として必要な容量を示す係数並び替え用バッファ使用量を各コンポーネントについて算出する。
【０３１７】
符号化プログラム選択部５１７は、各種条件に従って、XDR-RAM４０３に保持されている符号化プログラム５４６−１、符号化プログラム５４６−２、および符号化プログラム５４６−３の中から、実行するプログラム（利用符号化プログラムとも称する）を１つ選択する。プログラム実行部５１８は、符号化プログラム選択部５１７により選択された符号化プログラム（利用符号化プログラム）を実行することにより、その符号化プログラムの割り当て方法に従って、図１の符号化部１０の各工程（プロセス）に、サブCPUコア４４２−１乃至サブCPUコア４４２−８等のハードウェア資源を割り当て、それらのハードウェア資源に画像データ５４１の符号化処理を行わせる。ここで工程（プロセス）とは、図１に示される各処理部が実行する処理のことを示す。
【０３１８】
復号選択制御部５０３は、画像パラメータ取得部５２１、復号パラメータ取得部５２２、資源情報取得部５２３、係数バッファ使用量算出部５２４、復号プログラム選択部５２５、およびプログラム実行部５２６を有する。
【０３１９】
画像パラメータ取得部５２１は、XDR-RAM４０３に保持されている画像パラメータ５４３を取得する。復号パラメータ取得部５２２は、XDR-RAM４０３に保持されている、復号処理に関するパラメータ情報である復号パラメータ５４５を取得する。資源情報取得部５２３は、OS５０１を介して情報処理システム３００の資源情報を取得する。
【０３２０】
係数バッファ使用量算出部５２４は、係数バッファ部２２として必要な容量を示す係数バッファ使用量を各コンポーネントについて算出する。
【０３２１】
復号プログラム選択部５２５は、各種条件に従って、XDR-RAM４０３に保持されている復号プログラム５４７−１、復号プログラム５４７−２、および復号プログラム５４７−３の中から、実行するプログラム（利用復号プログラムとも称する）を１つ選択する。プログラム実行部５２６は、復号プログラム選択部５２５により選択された復号プログラム（利用復号プログラム）を実行することにより、その復号プログラムの割り当て方法に従って、図６の復号部２０の各工程（プロセス）に、サブCPUコア４４２−１乃至サブCPUコア４４２−８等のハードウェア資源を割り当て、それらのハードウェア資源に符号化データ５４２の復号処理を行わせる。ここで工程（プロセス）とは、図６に示される各処理部が実行する処理のことを示す。
【０３２２】
キャッシュ５０４には、符号化方式の選択に用いられるウェーブレット変換用関係テーブル５３１、および、係数並び替え用関係テーブル５３２が保持されている。
【０３２３】
ウェーブレット変換用関係テーブル５３１は、図３１に示されるように、分解数、５×３フィルタ、および９×７フィルタの各項により構成されるテーブル情報であり、ウェーブレット変換用の途中計算用バッファ部１２に必要な容量を算出するための関係指数を求めるためのテーブル情報である。
【０３２４】
また、係数並び替え用関係テーブル５３２は、図３２に示されるように、分解数、５×３フィルタ、および９×７フィルタの各項により構成されるテーブル情報であり、係数並び替え用バッファ部１３に必要な容量を算出するための関係指数を求めるためのテーブル情報である。
【０３２５】
XDR-RAM４０３には、画像データ５４１、符号化データ５４２、画像パラメータ５４３、符号化パラメータ５４４、復号パラメータ５４５、符号化プログラム５４６−１乃至符号化プログラム５４６−３、並びに、復号プログラム５４７−１乃至復号プログラム５４７−３が保持される。
【０３２６】
画像データ５４１は、符号化対象とされる例えば動画像のデータである。符号化データ５４２は、復号対象とされるデータであり、画像データを符号化して得られるデータである。
【０３２７】
画像パラメータ５４３は、画像に関するパラメータ情報である。この画像パラメータ５４３の内容は任意であり、どの様なパラメータを含むようにしてもよいが、例えば、画像の縦横サイズ、ビット深度、ウェーブレットフィルタの種類、およびウェーブレット変換の分解数等のパラメータを含む。
【０３２８】
符号化パラメータ５４４は、予め設定された符号化条件を示すパラメータ情報である。この符号化パラメータ５４４の内容は任意であり、どの様なパラメータを含むようにしてもよいが、例えば、ウェーブレット変換処理およびウェーブレット逆変換処理において使用されるフィルタの種類、ウェーブレット変換の分割レベル、並びに、演算精度、レイテンシ、またはスループット等の優先事項の有無等のパラメータを含む。
【０３２９】
復号パラメータ５４５は、予め設定された復号条件を示すパラメータ情報である。この復号パラメータ５４５の内容は任意であり、どの様なパラメータを含むようにしてもよいが、例えば、演算精度、レイテンシ、またはスループット等の優先事項の有無等のパラメータを含む。
【０３３０】
符号化プログラム５４６−１乃至符号化プログラム５４６−３は、それぞれ、図１の符号化部１０を実現するソフトウェアプログラムであり、さらに、自分自身に対するハードウェアの割り当て方法が予め定められている。ただし、その割り当て方は、ソフトウェアプログラム毎に互いに異なる。なお、以下において、これらの符号化プログラム５４６−１乃至符号化プログラム５４６−３を互いに区別して説明する必要の無い場合、単に符号化プログラム５４６と称する。
【０３３１】
復号プログラム５４７−１乃至復号プログラム５４７−３は、それぞれ、図６の復号部２０を実現するソフトウェアプログラムであり、さらに、自分自身に対するハードウェアの割り当て方法が予め定められている。ただし、その割り当て方は、ソフトウェアプログラム毎に互いに異なる。なお、以下において、これらの復号プログラム５４７−１乃至復号プログラム５４７−３を互いに区別して説明する必要の無い場合、単に復号プログラム５４７と称する。
【０３３２】
図３０においてはXDR-RAM４０３に、３つの符号化プログラム５４６が保持されるように示されているが、このXDR-RAM４０３が保持する符号化プログラム５４６の数（つまり割り当てパターンの数）は任意であり、２つ以下であってもよいし、４つ以上であってもよい。また、図３０においてはXDR-RAM４０３に３つの復号プログラム５４７が保持されるように示されているが、このXDR-RAM４０３が保持する復号プログラム５４７の数（つまり割り当てパターンの数）は任意であり、２つ以下であってもよいし、４つ以上であってもよい。
【０３３３】
なお、図３０において、画像データ５４１乃至復号パラメータ５４５は、それぞれ、１つずつ示されているが、これは各データの数を示しているわけではない。XDR-RAM４０３に同時に保持される画像データ５４１乃至復号パラメータ５４５の数は任意である。
【０３３４】
次に、以上のようなメインCPUコア４４１により実行される各処理について説明する。
【０３３５】
最初に、符号化選択制御部５０２により実行される符号化選択制御処理の流れの例を図３３のフローチャートを参照して説明する。符号化選択制御処理は、符号化処理を行う際に、サブCPUコア４４２−１乃至サブCPUコア４４２−８の割り当て方が互いに異なる複数の符号化プログラム５４６の中から１つを利用符号化プログラムとして選択するために実行される処理である。例えば、ユーザにより符号化処理の実行を指示されると、符号化選択制御部５０２は、符号化選択制御処理を開始する。
【０３３６】
符号化選択制御処理が開始されると、ステップＳ１０１において、画像パラメータ取得部５１１は、XDR-RAM４０３より画像パラメータ５４３を取得する。ステップＳ１０２において、符号化パラメータ取得部５１２は、XDR-RAM４０３より符号化パラメータ５４４を取得する。ステップＳ１０３において、資源情報取得部５１３は、OS５０１を介して、使用可能なハードウェア資源に関する情報である資源情報を取得する。ステップＳ１０４において、演算精度選択部５１４は、ステップＳ１０１の処理において取得された画像パラメータ５４３や、ステップＳ１０２の処理において取得された符号化パラメータ５４４等に基づいて、ウェーブレット変換処理の演算精度を選択し、設定する。演算精度選択処理の詳細な流れについては後述する。
【０３３７】
演算精度が選択されると、途中計算用バッファ使用量算出部５１５は、ステップＳ１０５において、ウェーブレット変換用関係テーブル５３１等を用いて、途中計算用バッファ部１２として必要な容量を示す途中計算用バッファ使用量を算出する。係数並び替え用バッファ使用量算出部５１６は、ステップＳ１０６において、係数並び替え用関係テーブル５３２等を用いて、係数並び替え用バッファ部１３として必要な容量を示す係数並び替え用バッファ使用量を算出する。
【０３３８】
ステップＳ１０７において、符号化プログラム選択部５１７は、画像パラメータ５４３、資源情報、選択された演算精度、並びに、算出された途中計算用バッファ使用量および係数並び替え用バッファ使用量等の各種情報に基づいて符号化プログラムを選択する。符号化プログラム選択処理の詳細については後述する。
【０３３９】
符号化プログラムが選択されると、ステップＳ１０８において、プログラム実行部５１８は、選択された符号化プログラム５４６の割り当て方法に従って、各工程（プロセス）に対してサブCPUコア４４２−１乃至サブCPUコア４４２−８を割り当て、処理を実行させる。
【０３４０】
ステップＳ１０８の処理が終了すると、符号化選択制御処理は終了される。
【０３４１】
次に、図３３のステップＳ１０４において実行される演算精度選択処理の流れの例を図３４のフローチャートを参照して説明する。
【０３４２】
演算精度選択処理が開始されると、演算精度選択部５１４は、ステップＳ１２１において、符号化パラメータ５４４に基づいて、ウェーブレット変換処理において使用されるフィルタの種類が５×３フィルタであるか９×７フィルタであるかを判定する。５×３フィルタであると判定された場合、処理はステップＳ１２２に進む。
【０３４３】
ステップＳ１２２において、演算精度選択部５１４は、符号化パラメータ５４４に基づいて、可逆符号化を行うか否かを判定する。可逆符号化を行うと判定された場合、処理はステップＳ１２３に進む。ステップＳ１２３において、演算精度選択部５１４は、画像パラメータ５４３に基づいて、画像データ５４１のビット深度が１３以下であるか否かを判定する。
【０３４４】
ビット深度が１３以下であると判定された場合、処理はステップＳ１２４に進む。ステップＳ１２４において、演算精度選択部５１４は、演算精度として１６ビット固定小数点型を選択し、設定する。ステップＳ１２４の処理が終了すると、演算精度選択処理が終了され、処理は図３３のステップＳ１０４に戻り、ステップＳ１０５以降の処理が実行される。
【０３４５】
また、図３４のステップＳ１２３において、ビット深度が１３より大きいと判定された場合、処理はステップＳ１２５に進む。ステップＳ１２５において、演算精度選択部５１４は、演算精度として３２ビット固定小数点型を選択し、設定する。ステップＳ１２５の処理が終了すると、演算精度選択処理が終了され、処理は図３３のステップＳ１０４に戻り、ステップＳ１０５以降の処理が実行される。
【０３４６】
図３４のステップＳ１２２において、非可逆符号化が行われると判定された場合、処理はステップＳ１２６に進む。ステップＳ１２６において、演算精度選択部５１４は、符号化パラメータ５４４に基づいて、精度優先であるか否かを判定する。精度優先でないと判定された場合、処理はステップＳ１２３に戻り、それ以降の処理が繰り返される。
【０３４７】
また、ステップＳ１２６において、精度優先であると判定された場合、処理はステップＳ１２７に進む。さらに、ステップＳ１２１において、画像パラメータ５４３に基づいて、ウェーブレット変換処理に使用されるフィルタの種類が９×７フィルタであると判定された場合、処理はステップＳ１２７に進む。
【０３４８】
ステップＳ１２７において、演算精度選択部５１４は、演算精度として３２ビット浮動小数点型を選択し、設定する。ステップＳ１２７の処理が終了すると、演算精度選択処理が終了され、処理は図３３のステップＳ１０４に戻り、ステップＳ１０５以降の処理が実行される。
【０３４９】
以上のように演算精度が選択される。
【０３５０】
次に、図３３のステップＳ１０７において実行される符号化プログラム選択処理の流れの例を図３５のフローチャートを参照して説明する。
【０３５１】
ステップＳ１４１において、符号化プログラム選択部５１７は、途中計算用バッファ使用量算出部５１５が算出した途中計算用バッファ使用量と、資源情報取得部５１３により確認されたLS４５１の使用可能な記憶容量を示す使用可能量に基づいて、LS４５１の使用可能量が２コンポーネント分の途中計算用バッファ部１２として十分な容量があるか否かを判定する。つまり、符号化プログラム選択部５１７は、LS４５１の使用可能量が２コンポーネントのそれぞれの途中計算用バッファ使用量の和以上であるか否かを判定する。十分であると判定された場合、処理はステップＳ１４２に進む。
【０３５２】
ステップＳ１４２において、符号化プログラム選択部５１７は、途中計算用バッファ使用量算出部５１５が算出した途中計算用バッファ使用量と、係数並び替え用バッファ使用量算出部５１６が算出した係数並び替え用バッファ使用量と、資源情報取得部５１３により確認されたLS４５１の使用可能量に基づいて、LS４５１の使用可能量が２コンポーネント分の途中計算用バッファ部１２および係数並び替え用バッファ部１３として十分な容量があるか否かを判定する。つまり、符号化プログラム選択部５１７は、LS４５１の使用可能量が、２コンポーネントのそれぞれの途中計算用バッファ使用量および係数並び替え用バッファ使用量の総和以上であるか否かを判定する。十分であると判定された場合、処理はステップＳ１４３に進む。
【０３５３】
ステップＳ１４３において、符号化プログラム選択部５１７は、符号化パラメータ５４４に基づいてスループット優先であるか否かを判定する。スループット優先であると判定された場合、処理はステップＳ１４４に進む。
【０３５４】
ステップＳ１４４において、符号化プログラム選択部５１７は、図１１を参照して説明した割り当て方法を適用する符号化プログラムＡを選択する。つまりこの場合、図１１に示されるように、符号化部１０の全ての処理に対して１つのサブCPUコア４４２が割り当てられる。また、そのLS４５１には、途中計算用バッファ部１２および係数並び替え用バッファ部１３の両方が形成される。ステップＳ１４４の処理が終了すると、符号化プログラム選択処理は終了され、処理は図３３のステップＳ１０７に戻り、ステップＳ１０８に処理が進む。
【０３５５】
図３５のステップＳ１４２において、LS４５１の使用可能量が２コンポーネント分の途中計算用バッファ部１２および係数並び替え用バッファ部１３として十分でないと判定された場合、処理はステップＳ１４５に進む。ステップＳ１４５において、符号化プログラム選択部５１７は、符号化パラメータ５４４に基づいてスループット優先であるか否かを判定する。スループット優先であると判定された場合、処理はステップＳ１４６に進む。また、ステップＳ１４３において、スループット優先でないと判定された場合、処理はステップＳ１４６に進む。
【０３５６】
ステップＳ１４６において、符号化プログラム選択部５１７は、図１３を参照して説明した割り当て方法を適用する符号化プログラムＢを選択する。つまりこの場合、図１３に示されるように、符号化部１０の全ての処理に対して１つのサブCPUコア４４２が割り当てられる。また、そのLS４５１には、途中計算用バッファ部１２が形成され、係数並び替え用バッファ部１３は共有メモリであるXDR-RAM４０３に形成される。ステップＳ１４６の処理が終了すると、符号化プログラム選択処理は終了され、処理は図３３のステップＳ１０７に戻り、ステップＳ１０８に処理が進む。
【０３５７】
図３５のステップＳ１４５において、スループット優先でないと判定された場合、処理はステップＳ１４７に進む。ステップＳ１４７において、符号化プログラム選択部５１７は、資源情報取得部５１３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が１個であるか否かを判定する。１個であると判定された場合、処理はステップＳ１４６に戻る。また、ステップＳ１４７において、使用可能なサブCPUコア４４２が複数存在すると判定された場合、処理はステップＳ１４８に進む。ステップＳ１４８において、符号化プログラム選択部５１７は、資源情報取得部５１３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が２個であるか否かを判定する。２個であると判定された場合、処理はステップＳ１４９に進む。
【０３５８】
ステップＳ１４９において、符号化プログラム選択部５１７は、図１４を参照して説明した割り当て方法を適用する符号化プログラムＣを選択する。つまりこの場合、図１４に示されるように、２つのサブCPUコア４４２を１組として、画像データＹを符号化する符号化部１０の全ての処理に対して一方のサブCPUコア４４２が割り当てられ、画像データＣを符号化する符号化部１０の全ての処理に対して他方のサブCPUコア４４２が割り当てられる。また、画像データＹに対するウェーブレット変換で利用される途中計算用バッファ部１２−１は、画像データＹを符号化するサブCPUコア４４２のLS４５１に形成され、画像データＣに対するウェーブレット変換で利用される途中計算用バッファ部１２−２は、画像データＣを符号化するサブCPUコア４４２のLS４５１に形成される。また、画像データＹより生成された係数データを保持する係数並び替え用バッファ部１３−１と、画像データＣより生成された係数データを保持する係数並び替え用バッファ部１３−２は、両方とも共有メモリであるXDR-RAM４０３に形成される。ステップＳ１４９の処理が終了すると、符号化プログラム選択処理は終了され、処理は図３３のステップＳ１０７に戻り、ステップＳ１０８に処理が進む。
【０３５９】
図３５のステップＳ１４１において、LS４５１の使用可能量が２コンポーネント分の途中計算用バッファ部１２として十分でないと判定された場合、処理はステップＳ１５０に進む。ステップＳ１５０において、符号化プログラム選択部５１７は、途中計算用バッファ使用量算出部５１５が算出した途中計算用バッファ使用量と、資源情報取得部５１３により確認されたLS４５１の使用可能量に基づいて、LS４５１の使用可能量が１コンポーネント分の途中計算用バッファ部１２として十分な容量があるか否かを判定する。つまり、符号化プログラム選択部５１７は、LS４５１の使用可能量が、各コンポーネントの途中計算用バッファ使用量以上であるか否かを判定する。十分であると判定された場合、処理はステップＳ１５１に進む。
【０３６０】
ステップＳ１５１において、符号化プログラム選択部５１７は、資源情報取得部５１３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が１個であるか否かを判定する。使用可能なサブCPUコア４４２が複数存在すると判定された場合、処理はステップＳ１５２に進む。ステップＳ１５２において、符号化プログラム選択部５１７は、資源情報取得部５１３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が２個であるか否かを判定する。２個であると判定された場合、処理はステップＳ１４９に戻る。
【０３６１】
ステップＳ１５２において、現在使用可能なサブCPUコア４４２が３個以上あると判定された場合、処理はステップＳ１５３に進む。ステップＳ１５３において、符号化プログラム選択部５１７は、符号化パラメータ５４４に基づいてスループット優先であるか否かを判定する。スループット優先であると判定された場合、処理はステップＳ１４９に戻る。
【０３６２】
また、ステップＳ１５３において、スループット優先でないと判定された場合、処理はステップＳ１５４に進む。また、ステップＳ１４８において、現在使用可能なサブCPUコア４４２が３個以上あると判定された場合、処理はステップＳ１５４に進む。
【０３６３】
ステップＳ１５４において、符号化プログラム選択部５１７は、図１６を参照して説明した割り当て方法を適用する符号化プログラムＤを選択する。つまりこの場合、図１６に示されるように、４つのサブCPUコア４４２を１組として、画像データＹを符号化する符号化部１０のウェーブレット変換部１１−１の処理、画像データＹを符号化する符号化部１０の係数並び替え部１４−１およびエントロピ符号化部１５−１の処理、画像データＣを符号化する符号化部１０のウェーブレット変換部１１−２の処理、画像データＣを符号化する符号化部１０の係数並び替え部１４−２およびエントロピ符号化部１５−２の各処理に対して、互いに異なるサブCPUコア４４２が割り当てられる。
【０３６４】
また、画像データＹを符号化する符号化部１０の途中計算用バッファ部１２−１は、ウェーブレット変換部１１−１の処理が割り当てられたサブCPUコア４４２のLS４５１に形成され、画像データＣを符号化する符号化部１０の途中計算用バッファ部１２−２は、ウェーブレット変換部１１−２の処理が割り当てられたサブCPUコア４４２のLS４５１に形成される。
【０３６５】
さらに、画像データＹを符号化する符号化部１０の係数並び替え用バッファ部１３−１と、画像データＣを符号化する符号化部１０の係数並び替え用バッファ部１３−２は、両方とも共有メモリであるXDR-RAM４０３に形成される。ステップＳ１５４の処理が終了すると、符号化方式選択処理は終了され、処理は図３３のステップＳ１０７に戻り、ステップＳ１０８に処理が進む。
【０３６６】
図３５のステップＳ１５０において、LS４５１の使用可能量が１コンポーネント分の途中計算用バッファ部１２として十分でないと判定された場合、処理はステップＳ１５５に進む。また、ステップＳ１５１において、現在使用可能なサブCPUコアが１個であると判定された場合、処理はステップＳ１５５に進む。この場合、予め用意された４つの符号化プログラムのいずれも選択することができないので（実装不可能であるので）、符号化プログラム選択部５１７は、ステップＳ１５５において、例えばユーザに通知する等のエラー処理を行う。ステップＳ１５５の処理が終了すると、符号化プログラム選択処理は終了され、処理は図３３のステップＳ１０７に戻り、ステップＳ１０８に処理が進む。
【０３６７】
以上のように、符号化選択制御部５０２は、画像パラメータ５４３、資源情報、または符号化パラメータ５４４等に基づいて、実際の条件下において、符号化部１０がより効率的に動作するように、適切にハードウェア資源の割り当てを行うことができる。
【０３６８】
なお、この割り当ては、どのような単位で行うようにしてもよく、例えば、プレシンクト毎に行うようにしてもよいし、ピクチャ毎に行うようにしてもよい。また、以上においては４つの割り当て方法を予め用意し、符号化プログラム選択部５１７がその中から選択するように説明したが、用意するハードウェア資源の割り当て方法は、いくつであってもよい。つまり、符号化プログラム５４６の数は任意である。さらに、ハードウェア資源の割り当て方法は、任意であり、上述した４つの割り当て方法以外の方法であってもよい。
【０３６９】
また、８つのサブCPUコア４４２−１乃至サブCPUコア４４２−８の内、任意のサブCPUコア４４２を用いて、上述した符号化プログラムＡ乃至符号化プログラムＤを併用する（並列的に動作させる）ようにしてもよい。つまり、例えば、符号化選択制御部５０２は、プレシンクト毎やピクチャ毎に互いに異なる符号化方式を採用し、ハードウェア資源の割り当て方を変更することもできる。このようにすることにより、符号化選択制御部５０２は、ハードウェア資源をより有効に利用するように符号化部１０の各処理にハードウェア資源を割り当て、符号化部１０がより効率的に動作するようにすることができる。
【０３７０】
次に、図３６のフローチャートを参照して、復号選択制御部５０３により実行される復号選択制御処理の流れの例を説明する。復号選択制御処理は、復号処理を行う際に、サブCPUコア４４２−１乃至サブCPUコア４４２−８の割り当て方が互いに異なる複数の復号プログラム５４７の中から１つを利用復号プログラムとして選択するために実行される処理である。例えば、ユーザにより復号処理の実行を指示されると、復号選択制御部５０３は、復号選択制御処理を開始する。
【０３７１】
復号選択制御処理が開始されると、ステップＳ２０１において、画像パラメータ取得部５２１は、XDR-RAM４０３に保持されている処理対象の符号化データ５４２についての画像パラメータ５４３を取得する。ステップＳ２０２において、復号パラメータ取得部５２２は、XDR-RAM４０３に保持されている復号パラメータ５４５を取得する。ステップＳ２０３において、資源情報取得部５２３は、OS５０１を介して、使用可能なハードウェア資源に関する情報である資源情報を取得する。
【０３７２】
係数バッファ使用量算出部５２４は、ステップＳ２０４において、ウェーブレット変換用関係テーブル５３１等を用いて、係数バッファ部２２として必要な容量を示す係数バッファ使用量を算出する。
【０３７３】
ステップＳ２０５において、復号プログラム選択部５２５は、画像パラメータ５４３、復号パラメータ５４５、資源情報、並びに、算出された係数バッファ使用量等の各種情報に基づいて利用復号プログラムを選択する。復号プログラム選択処理の詳細については後述する。
【０３７４】
復号プログラムが選択されると、ステップＳ２０６において、プログラム実行部５２６は、利用復号プログラムとして選択された復号プログラム５４７の割り当て方法に従って、各工程（プロセス）に対してサブCPUコア４４２−１乃至サブCPUコア４４２−８を割り当て、処理を実行させる。
【０３７５】
ステップＳ２０６の処理が終了すると、符号化選択制御処理は終了される。
【０３７６】
次に、図３６のステップＳ２０４において実行される復号プログラム選択処理の流れの例を図３７のフローチャートを参照して説明する。
【０３７７】
ステップＳ２２１において、復号プログラム選択部５２５は、係数バッファ使用量算出部５２４が算出した係数バッファ使用量と、資源情報取得部５２３により確認されたLS４５１の使用可能量に基づいて、LS４５１の使用可能量が係数バッファ部２２として十分な容量があるか否かを判定する。つまり、復号プログラム選択部５２５は、LS４５１の使用可能量が、各コンポーネントの係数バッファ使用量以上であるか否かを判定する。十分であると判定された場合、処理はステップＳ２２２に進む。
【０３７８】
ステップＳ２２２において、復号プログラム選択部５２５は、復号パラメータ５４５に基づいて、復号処理がスループット優先であるか否かを判定する。スループット優先であると判定された場合、処理はステップＳ２２３に進む。
【０３７９】
ステップＳ２２３において、復号プログラム選択部５２５は、係数バッファ使用量算出部５２４が算出した係数バッファ使用量と、資源情報取得部５２３により確認されたLS４５１の使用可能量に基づいて、LS４５１の使用可能量が２コンポーネント分の係数バッファ部２２として十分な容量があるか否かを判定する。つまり、復号プログラム選択部５２５は、LS４５１の使用可能量が、２コンポーネントのそれぞれの係数バッファ使用量の和以上か否かを判定する。十分であると判定された場合、処理はステップＳ２２４に進む。
【０３８０】
ステップＳ２２４において、復号プログラム選択部５２５は、図１８を参照して説明した割り当て方法を適用する復号プログラムＡを選択する。つまりこの場合、図１８に示されるように、復号部２０の全ての処理に対して１つのサブCPUコア４４２が割り当てられる。また、そのLS４５１には、係数バッファ部２２が形成される。ステップＳ２２４の処理が終了すると、復号プログラム選択処理は終了され、処理は図３６のステップＳ２０４に戻り、ステップＳ２０５に処理が進む。
【０３８１】
図３７のステップＳ２２２において、復号処理がスループット優先でないと判定された場合、処理はステップＳ２２５に進む。ステップＳ２２５において、復号プログラム選択部５２５は、資源情報取得部５２３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が１個であるか否かを判定する。１個であると判定された場合、処理はステップＳ２２３に戻り、それ以降の処理が繰り返される。また、ステップＳ２２５において、使用可能なサブCPUコア４４２が複数存在すると判定された場合、処理はステップＳ２２６に進む。
【０３８２】
ステップＳ２２６において、復号プログラム選択部５２５は、資源情報取得部５２３が取得した資源情報に基づいて、現在使用可能なサブCPUコア４４２が２個であるか否かを判定する。２個であると判定された場合、処理はステップＳ２２７に進む。また、ステップＳ２２３において、LS４５１の使用可能量が２コンポーネント分の係数バッファ部２２として十分でないと判定された場合、処理はステップＳ２２７に進む。
【０３８３】
ステップＳ２２７において、復号プログラム選択部５２５は、図２０を参照して説明した割り当て方法を適用する復号プログラムＢを選択する。つまりこの場合、図２０に示されるように、２つのサブCPUコア４４２を１組として、符号化データＹを復号する復号部２０の全ての処理に対して一方のサブCPUコア４４２が割り当てられ、符号化データＣを復号する復号部２０の全ての処理に対して他方のサブCPUコア４４２に割り当てられる。また、符号化データＹを復号する復号部２０の係数バッファ部２２−１は、符号化データＹを復号する復号部２０が割り当てられたサブCPUコア４４２のLS４５１に形成され、符号化データＣを復号する復号部２０の係数バッファ部２２−２は、符号化データＣを復号する復号部２０が割り当てられたサブCPUコア４４２のLS４５１に形成される。ステップＳ２２７の処理が終了すると、復号プログラム選択処理は終了され、処理は図３６のステップＳ２０４に戻り、ステップＳ２０５に処理が進む。
【０３８４】
図３７のステップＳ２２６において、現在使用可能なサブCPUコア４４２が３個以上であると判定された場合、処理はステップＳ２２８に進む。
【０３８５】
ステップＳ２２８において、復号プログラム選択部５２５は、図２２を参照して説明した割り当て方法を適用する復号プログラムＣを選択する。つまりこの場合、図２２に示されるように、４つのサブCPUコア４４２を１組として、符号化データＹを復号する復号部２０のエントロピ復号部２１−１の処理、符号化データＹを復号する復号部２０のウェーブレット逆変換部２３−１の処理、符号化データＣを復号する復号部２０のエントロピ復号部２１−２の処理、および、符号化データＣを復号する復号部２０のウェーブレット逆変換部２３−２の各処理に対して、互いに異なるサブCPUコア４４２が割り当てられる。
【０３８６】
また、符号化データＹを復号する復号部２０の係数バッファ部２２−１は、ウェーブレット逆変換部２３−１の処理が割り当てられたサブCPUコア４４２のLS４５１に形成され、符号化データＣを復号する復号部２０の係数バッファ部２２−２は、ウェーブレット逆変換部２３−２の処理が割り当てられたサブCPUコア４４２のLS４５１に形成される。
【０３８７】
ステップＳ２２８の処理が終了すると、復号プログラム選択処理は終了され、処理は図３６のステップＳ２０４に戻り、ステップＳ２０５に処理が進む。
【０３８８】
図３７のステップＳ２２１において、LS４５１の使用可能量が係数バッファ部２２として十分でないと判定された場合、処理はステップＳ２２９に進む。この場合、予め用意された３つの復号プログラムのいずれも選択することができないので（実装不可能であるので）、復号プログラム選択部５２５は、ステップＳ２２９において、例えばユーザに通知する等のエラー処理を行う。ステップＳ２２９の処理が終了すると、復号プログラム選択処理は終了され、処理は図３６のステップＳ２０４に戻り、ステップＳ２０５に処理が進む。
【０３８９】
以上のように、復号選択制御部５０３は、符号化データ５４２の画像パラメータ５４３、資源情報、または復号パラメータ５４５等に基づいて、実際の条件下において、復号部２０がより効率的に動作するように、適切にハードウェア資源の割り当てを行うことができる。
【０３９０】
なお、この割り当ては、どのような単位で行うようにしてもよく、例えば、プレシンクト毎に行うようにしてもよいし、ピクチャ毎に行うようにしてもよい。また、以上においては４つの割り当て方法を予め用意し、復号プログラム選択部５２５がその中から選択するように説明したが、用意するハードウェア資源の割り当て方法は、いくつであってもよい。つまり、復号プログラム５４７の数は任意である。さらに、ハードウェア資源の割り当て方法は、任意であり、上述した４つの割り当て方法以外の方法であってもよい。
【０３９１】
また、８つのサブCPUコア４４２−１乃至サブCPUコア４４２−８の内、任意のサブCPUコア４４２を用いて、上述した復号プログラムＡ乃至復号プログラムＣを併用する（並列的に動作させる）ようにしてもよい。つまり、例えば、復号選択制御部５０３は、プレシンクト毎やピクチャ毎に互いに異なる復号方式を採用し、ハードウェア資源の割り当て方を変更することもできる。このようにすることにより、復号選択制御部５０３は、ハードウェア資源をより有効に利用するように復号部２０の各処理にハードウェア資源を割り当て、復号部２０がより効率的に動作するようにすることができる。
【０３９２】
次に、割り当ての具体的な例について説明する。
【０３９３】
第１の例として、符号化される画像データ５４１は、その画像サイズが１９２０画素×１０８０画素であり、そのデータ構成が輝度成分Ｙと色差成分ＣよりなるコンポーネントＹ／Ｃであり、そのビット深度が１２ビットであるものとし、ウェーブレット変換に用いられるフィルタは、５×３フィルタであり、ウェーブレット変換の分解レベルは４であり、精度優先の設定はなされていないものとする。また、現在使用可能なサブCPUコア４４２の数が４個以上であるとし、各サブCPUコア４４２のLS４５１の容量が２５６［kByte］とする。
【０３９４】
さらに符号化パラメータ５４４において符号化条件として、非可逆符号化とレイテンシ優先の設定がされている。また、復号パラメータ５４５において復号条件としてレイテンシ優先の設定がされている。
【０３９５】
このような場合において、演算精度選択部５１４は、図３４に示されるフローチャートのように演算精度選択処理を行い、５×３フィルタ、可逆符号化、精度優先設定無し、および、ビット深度１３以下の条件に基づいて、１６ビット固定小数点型を選択する。また、途中計算用バッファ使用量算出部５１５は、ウェーブレット変換用関係テーブル５３１を用いて、５×３フィルタと分解数４の条件から、関係指数に「７．５」を設定し、さらに、入力画像の横サイズ（１９２０画素）と、演算精度（１６ビット）と、その関係指数（７．５）を乗算することにより、途中計算用バッファ使用量を算出する。
【０３９６】
また、係数並び替え用バッファ使用量算出部５１６は、係数並び替え用関係テーブル５３２を用いて、５×３フィルタと分解数４の条件から、関係指数に「４２．２５」を設定し、さらに、入力画像の横サイズ（１９２０画素）と、単位サイズと、その関係指数（４２．２５）を乗算することにより、係数並び替え用バッファ使用量を算出する。
【０３９７】
以上の算出結果および資源情報等に基づいて、符号化プログラム選択部５１７は、図３５に示されるフローチャートのように符号化プログラム選択処理を行う。LS４５１の使用可能量が、２コンポーネント分の途中計算用バッファ部１２として十分であるものの、２コンポーネント分の途中計算用バッファ部１２および係数並び替え用バッファ部１３としては不十分であり、優先項目はレイテンシであり、使用可能なサブCPUコア４４２の数が４個であるので、符号化プログラム選択部５１７は、図１６に示されるように割り当てを行う符号化プログラムＤを選択する。
【０３９８】
このような割り当てにより、符号化部１０は、符号化処理を図１７に示されるように進めることができる。つまり、このような割り当てにより、符号化部１０は、低遅延で符号化処理を行うことができる。
【０３９９】
なお、この条件において、復号部２０を割り当てる場合、復号プログラム選択部５２５は、図３７に示されるフローチャートのように復号プログラム選択処理を行う。LS４５１の使用可能量が、係数バッファ部２２として十分であり、優先項目がレイテンシであり、使用可能なサブCPUコア４４２の数が４個であるので、復号プログラム選択部５２５は、図２２に示されるように割り当てを行う復号プログラムＣを選択する。
【０４００】
このような割り当てにより、復号部２０は、復号処理を図２３に示されるように進めることができる。つまり、このような割り当てにより、復号部２０は、低遅延で復号処理を行うことができる。
【０４０１】
例えば、テレビジョン会議システムのように、リアルタイムに画像の授受を行うことが要求されるシステムにおいては、低遅延で符号化処理や復号処理を行うことが求められる。このような場合でも、符号化選択制御部５０２および復号選択制御部５０３は、符号化部１０および復号部２０が低遅延に処理を行うことができるように、ハードウェア資源を適切に割り当てることができる。
【０４０２】
第２の例として、符号化される画像データ５４１は、その画像サイズが１２８０画素×７２０画素であり、そのデータ構成が輝度成分Ｙと色差成分ＣよりなるコンポーネントＹ／Ｃであり、そのビット深度が１２ビットであるものとし、ウェーブレット変換に用いられるフィルタが９×７フィルタであり、ウェーブレット変換の分解レベルが４であるものとする。また、現在使用可能なサブCPUコア４４２の数が４個以上であるとし、各サブCPUコア４４２のLS４５１の容量が２５６［kByte］とする。
【０４０３】
さらに符号化パラメータ５４４において符号化条件としてスループット優先の設定がされている。また、復号パラメータ５４５において復号条件としてスループット優先の設定がされている。
【０４０４】
このような場合において、演算精度選択部５１４は、図３４に示されるフローチャートのように演算精度選択処理を行い、９×７フィルタの条件に基づいて、３２ビット浮動小数点型を選択する。また、途中計算用バッファ使用量算出部５１５は、ウェーブレット変換用関係テーブル５３１を用いて、９×７フィルタと分解数４の条件から、関係指数に「１１．２５」を設定し、さらに、入力画像の横サイズ（１２８０画素）と、演算精度（３２ビット）と、その関係指数（１１．２５）を乗算することにより、途中計算用バッファ使用量を算出する。
【０４０５】
また、係数並び替え用バッファ使用量算出部５１６は、係数並び替え用関係テーブル５３２を用いて、９×７フィルタと分解数４の条件から、関係指数に「９４．７５」を設定し、さらに、入力画像の横サイズ（１２８０画素）と、単位サイズと、その関係指数（９４．７５）を乗算することにより、係数並び替え用バッファ使用量を算出する。
【０４０６】
以上の算出結果および資源情報等に基づいて、符号化プログラム選択部５１７は、図３５に示されるフローチャートのように符号化プログラム選択処理を行う。LS４５１の使用可能量が、２コンポーネント分の途中計算用バッファ部１２として十分であるものの、２コンポーネント分の途中計算用バッファ部１２および係数並び替え用バッファ部１３としては不十分であり、優先項目がスループットであることから、符号化プログラム選択部５１７は、図１３に示されるように割り当てを行う符号化プログラムＢを選択する。
【０４０７】
このような割り当てにより、符号化部１０は、符号化処理を図１２に示されるように進めることができる。つまり、このような割り当てにより、符号化部１０は、高スループットで符号化処理を行うことができる。
【０４０８】
なお、この条件において、復号部２０を割り当てる場合、復号プログラム選択部５２５は、図３７に示されるフローチャートのように復号プログラム選択処理を行う。LS４５１の使用可能量が、係数バッファ部２２として十分であり、優先項目がスループットであり、さらに、LS４５１の使用可能量が、２コンポーネント分の係数バッファ部２２としても十分であるので、復号プログラム選択部５２５は、図１８に示されるように割り当てを行う復号プログラムＡを選択する。
【０４０９】
このような割り当てにより、復号部２０は、復号処理を図１９に示されるように進めることができる。つまり、このような割り当てにより、復号部２０は、高スループットで復号処理を行うことができる。
【０４１０】
例えば、フレームレートが高い画像データを処理するシステムのように、符号化処理や復号処理をより高速に行うこと（高スループット）が要求される場合がある。このような場合でも、符号化選択制御部５０２および復号選択制御部５０３は、符号化部１０および復号部２０が高スループットで処理を行うことができるように、ハードウェア資源を適切に割り当てることができる。
【０４１１】
第３の例として、符号化される画像データ５４１は、その画像サイズが４０９６画素×２１６０画素であり、そのデータ構成が輝度成分Ｙと色差成分ＣよりなるコンポーネントＹ／Ｃであり、そのビット深度が１２ビットであるものとし、ウェーブレット変換に用いられるフィルタが９×７フィルタであり、ウェーブレット変換の分解レベルが４であるものとする。また、現在使用可能なサブCPUコア４４２の数が４個以上であるとし、各サブCPUコア４４２のLS４５１の容量が２５６［kByte］とする。
【０４１２】
さらに符号化パラメータ５４４において符号化条件としてスループット優先の設定がされている。また、復号パラメータ５４５において復号条件としてスループット優先の設定がされている。
【０４１３】
このような場合において、演算精度選択部５１４は、図３４に示されるフローチャートのように演算精度選択処理を行い、９×７フィルタの条件に基づいて、３２ビット浮動小数点型を選択する。また、途中計算用バッファ使用量算出部５１５は、ウェーブレット変換用関係テーブル５３１を用いて、９×７フィルタと分解数４の条件から、関係指数に「１１．２５」を設定し、さらに、入力画像の横サイズ（４０９６画素）と、演算精度（３２ビット）と、その関係指数（１１．２５）を乗算することにより、途中計算用バッファ使用量を算出する。
【０４１４】
また、係数並び替え用バッファ使用量算出部５１６は、係数並び替え用関係テーブル５３２を用いて、９×７フィルタと分解数４の条件から、関係指数に「９４．７５」を設定し、さらに、入力画像の横サイズ（４０９６画素）と、単位サイズと、その関係指数（９４．７５）を乗算することにより、係数並び替え用バッファ使用量を算出する。
【０４１５】
以上の算出結果および資源情報等に基づいて、符号化プログラム選択部５１７は、図３５に示されるフローチャートのように符号化プログラム選択処理を行う。LS４５１の使用可能量が、２コンポーネント分の途中計算用バッファ部１２として不十分であるが、１コンポーネント分の途中計算用バッファ部１２としては十分であり、使用可能なサブCPUコア４４２の数が４個で、優先項目がスループットであることから、符号化プログラム選択部５１７は、図１４に示されるように割り当てを行う符号化プログラムＣを選択する。
【０４１６】
このような割り当てにより、符号化部１０は、符号化処理を図１５に示されるように進めることができる。つまり、このような割り当てにより、符号化部１０は、符号化プログラムＤよりも高スループットで、かつ、符号化プログラムＢよりも低遅延に符号化処理を行うことができる。
【０４１７】
なお、この条件において、復号部２０を割り当てる場合、復号プログラム選択部５２５は、図３７に示されるフローチャートのように復号プログラム選択処理を行う。LS４５１の使用可能量が、係数バッファ部２２として十分であり、優先項目がスループットであり、さらに、LS４５１の使用可能量が、２コンポーネント分の係数バッファ部２２として不十分であり、使用可能なサブCPUコア４４２の数が４個であるので、復号プログラム選択部５２５は、図２０に示されるように割り当てを行う復号プログラムＢを選択する。
【０４１８】
このような割り当てにより、復号部２０は、復号処理を図２１に示されるように進めることができる。つまり、このような割り当てにより、復号部２０は、復号プログラムＣよりも高スループットで、かつ、復号プログラムＡよりも低遅延に復号処理を行うことができる。
【０４１９】
例えば、高精細映像の画像データを処理するシステムのように、符号化処理や復号処理をより高速に行うこと（高スループット）が要求されるものの、画像データのデータ量が多い場合がある。このような場合、スループット向上のために、１つのサブCPUコア４４２で符号化処理および復号処理を行うようにすると、LS４５１の容量が不足し、不要な遅延が増大する恐れがある。そのため、符号化選択制御部５０２および復号選択制御部５０３は、符号化部１０および復号部２０が、バッファ溢れ等の発生により遅延時間が不要に増大しないように、かつ、極力スループットを向上させるように、ハードウェア資源を適切に割り当てることができる。
【０４２０】
以上のように、ハードウェア資源の割り当てパターンを、入力画像信号の種類、符号化処理や復号処理のパラメータ(要求されるレイテンシやスループット等の特性)、および利用可能なハードウェア資源等に応じて適切に選択することにより、より多様な条件下において、より効率よく符号化処理や復号処理を実行させることができる。このとき、効率よく符号化処理や復号処理を行うことができるようにハードウェアの割り当てパターンが設定された符号化プログラムや復号プログラムを予め用意する（割り当てパターンを制限する）ことにより、符号化処理や復号処理の効率の低下を抑制することができる。
【０４２１】
以上においては、ハードウェアの割り当てを行う符号化プログラム５４６がプレシンクト単位でウェーブレット変換を行うように説明したが、符号化プログラム５４６は、例えば、ピクチャ全体を１単位としてウェーブレット変換を行うようにしてもよいし、ピクチャ全体を縦方向および横方向に所定数に分割して得られる部分領域であるタイルを単位としてウェーブレット変換を行うようにしてもよい。その場合の符号化部１０の構成は、例えば図２６に構成例が示される、係数並び替えを復号部２０において行う場合と同様になる。つまり、この場合のハードウェアの割り当てパターンは、係数並び替えを復号部２０において行う場合と同様になる。
【０４２２】
復号プログラム５４７は、符号化データ５４２の符号化方式に応じた復号方式により復号を行う。つまり、例えば、符号化データ５４２がピクチャ全体を１単位としてウェーブレット変換されたものであれば、その符号化データ５４２を復号する復号プログラム５４７も、ピクチャ全体を１単位としてウェーブレット逆変換を行うようになされている。また、例えば、符号化データ５４２がピクチャ全体を縦方向および横方向に所定数に分割して得られる部分領域であるタイルを単位としてウェーブレット変換されたものであれば、その符号化データ５４２を復号する復号プログラム５４７も、そのタイルを１単位としてウェーブレット逆変換を行うようになされている。
【０４２３】
また、符号化プログラム５４６の符号化方式および復号プログラム５４７の復号方式は、上述した方式以外にも、例えば、MPEG（Moving Picture Experts Group）２規格やH.264/AVC（Advanced Video Coding）規格に準拠した方式であってもよい。
【０４２４】
図３８は、ソフトウェアプログラムにより構成され、画像データを符号化して符号化データを生成する、MPEG２規格に準拠したソフトウェアエンコーダが所定の情報処理装置のCPUにより実行されることにより実現される機能（プロセス）を模式的に示す図である。図３８に示されるように、このソフトウェアエンコーダは、画像データをMPEG２方式で符号化する符号化部６０１と、符号化部６０１より出力される符号化データを一時的に保持するバッファ部６０２により構成される。
【０４２５】
符号化部６０１は、画像符号化タイプ指定部６１１、画像符号化順序並び替え部６１２、スキャンコンバータ６１３、予測モード決定部６１４、動きベクトル検出部６１５、量子化制御部６１６、演算部６１７、DCT（Discrete Cosine Transform）部６１８、量子化部６１９、可変長符号化部６２０、逆量子化部６２１、IDCT（Inverse Discrete Cosine Transform）部６２２、加算部６２３、フレームメモリ６２４、および動き補償部６２５を有する。
【０４２６】
符号化部６０１に入力された映像信号は画像符号化タイプ指定部６１１に入力される。画像符号化タイプ指定部６１１は入力される画像データの各フレームをＩピクチャ、Ｐピクチャ又はＢピクチャのうちのどの画像タイプのピクチャとして処理するかを指定して画像符号化順序並び替え部６１２に送出する。この符号化部６０１は、例えば１５個のフレームを１GOP（Group Of Picture）として処理の１単位とする。
【０４２７】
画像符号化順序並び替え部６１２は、指定された画像符号化タイプに従って各フレームを符号化する順番に並び替えてスキャンコンバータ６１３に送出すると共に、その画像データの画像符号化タイプの情報を予測モード決定部６１４、動きベクトル検出部６１５、および量子化制御部６１６に送出する。また画像符号化順序並び替え部６１２は現在符号化されているフレームの動きベクトルを検出するために現在画像と、その現在画像より時間的に過去にある画像（以下、これを過去参照画像と呼ぶ）及び又は現在画像より時間的に未来にある画像（以下、これを未来参照画像と呼ぶ）とを動きベクトル検出部６１５に送出する。
【０４２８】
スキャンコンバータ６１３は、画像データをフレーム毎にブロックフォーマットの信号に変換し、この１フレームの信号を、１６ラインを１単位として、Ｎ個のスライスに区分すると共に、各スライスを１６×１６の画素に対応する輝度信号によって構成されるＭ個のマクロブロックに分割し、各マクロブロックを量子化制御部６１６および演算部６１７に送出する。
【０４２９】
動きベクトル検出部６１５は画像データの各フレームに同期した画像符号化タイプに従って各フレームの画像データをＩピクチャ、Ｐピクチャ又はＢピクチャとして処理する。すなわちＩピクチャとして処理されるフレームの画像データは、動きベクトル検出部６１５に内蔵される、過去参照画像を格納する過去参照画像メモリ（図示せず）に格納され、Ｂピクチャとして処理されるフレームの画像データは、動きベクトル検出部６１５に内蔵される、現在画像を格納する現在画像メモリ（図示せず）に格納され、Ｐピクチャとして処理されるフレームの画像データは、動きベクトル検出部６１５に内蔵される、未来参照画像を格納する未来参照画像メモリ（図示せず）に格納される。
【０４３０】
ここで次のタイミングにおいて、Ｂピクチャ又はＰピクチャとして処理すべきフレームが動きベクトル検出部６１５に入力されたとき、これまでに未来参照画像メモリに格納されていた最初のＰピクチャの画像データは過去参照画像メモリに格納される。また次のＢピクチャの画像データは現在画像メモリに格納され、次のＰピクチャの画像データは未来参照画像メモリに格納される。以降このような動作が順次繰り返される。
【０４３１】
動きベクトル検出部６１５は順方向予測における動きベクトル、および、そのときの動きベクトル推定残差を予測モード決定部６１４に送出する。ここで動きベクトル検出部６１５は、Ｂピクチャの場合には、逆方向予測における動きベクトルとそのときの動きベクトル推定残差とを送出する。予測モード決定部６１４はイントラモード、順方向予測モード、逆方向予測モード又は双方向予測モードのうちどの予測モードを選択するかを決定する。
【０４３２】
ここでイントラモードは、符号化対象となるフレームの画像データをそのまま伝送データとして伝送する処理であり、順方向予測モードは、過去参照画像との予測残差と順方向動きベクトルとを伝送する処理である。また逆方向予測モードは、未来参照画像との予測残差と逆方向動きベクトルとを伝送する処理であり、双方向予測モードは、過去参照画像と未来参照画像の２つの予測画像の平均値との予測残差と順方向及び逆方向の２つの動きベクトルとを伝送する処理である。Ｂピクチャの場合には、これら４種類の予測モードをマクロブロック単位で切り換える。
【０４３３】
予測モード決定部６１４は画像符号化順序並び替え部６１２から送出される画像符号化タイプに基づいて、Ｉピクチャの場合にはイントラモードを選択し、Ｐピクチャの場合にはイントラモード又は順方向予測モードのいずれかの予測モードを選択し、Ｂピクチャの場合には、イントラモード、順方向予測モード、逆方向予測モード又は双方向予測モードのうちいずれかの予測モードを選択し、選択した予測モードの情報を演算部６１７に送出する。
【０４３４】
演算部６１７はスキャンコンバータ６１３より読み出されたマクロブロックに対して、予測モードに基づいてイントラ、順方向予測、逆方向予測又は双方向予測の演算を行う。演算部６１７は、Ｉピクチャとして処理すべき画像データ（マクロブロック）が入力された場合、その画像データをイントラ符号化してDCT部６１８に送出する。DCT部６１８はイントラ符号化された画像データをDCT係数に変換して量子化部６１９に送出する。
【０４３５】
量子化部６１９は各DCT係数を量子化制御部６１６から指定された量子化ステップで量子化して可変長符号化部６２０および逆量子化部６２１に送出する。可変長符号化部６２０は量子化された画像データ、予測モード決定部６１４から送出される予測モードおよび動きベクトル検出部６１５から送出される動きベクトルを例えばハフマン符号などの可変長符号に変換し、符号化データとしてバッファ部６０２に出力する。
【０４３６】
逆量子化部６２１は量子化された画像データを量子化時における量子化ステップに応じて逆量子化してIDCT（逆DCT）部６２２に送出する。IDCT部６２２は逆量子化部６２１からの出力を逆DCT処理する。IDCT部６２２からの出力は加算部６２３を介してフレームメモリ６２４内の、過去参照画像を格納する過去参照画像記憶部（図示せず）に格納される。
【０４３７】
次に演算部６１７にスキャンコンバータ６１３からＰピクチャとして処理すべき画像データが入力され、予測モード決定部６１４から送出される予測モードがイントラモードの場合、画像データは上述のＩピクチャの場合と同様にイントラ符号化されてDCT部６１８、量子化部６１９、および可変長符号化部６２０を介してバッファ部６０２に出力され、逆量子化部６２１、IDCT部６２２、および加算部６２３を介して、フレームメモリ６２４内の、未来参照画像を格納する未来参照画像記憶部（図示せず）に格納される。
【０４３８】
予測モードが順方向予測モードの場合、フレームメモリ６２４の過去参照画像記憶部に格納されている画像データ（この場合Ｉピクチャの画像データ）が読み出されて動き補償部６２５に送出される。動き補償部６２５はこの画像データを動きベクトル検出部６１５から送出される順方向動きベクトルに対応して動き補償する。
【０４３９】
すなわち動き補償部６２５は、順方向予測モードの場合、フレームメモリ６２４の過去参照画像記憶部の読出しアドレスを、動きベクトル検出部６１５が現在出力しているマクロブロックの位置に対応する位置から順方向動きベクトルに対応する分だけずらしてデータを読み出して予測参照画像を生成し、演算部６１７及び加算部６２３に送出する。
【０４４０】
演算部６１７はスキャンコンバータ６１３から送出される参照画像のマクロブロックのデータから、動き補償部６２５から送出されたマクロブロックに対応する予測参照画像の画像データを減算して予測残差としての差分データを得、この差分データをDCT部６１８に送出する。この差分データはDCT部６１８、量子化部６１９、および可変長符号化部６２０を介してバッファ部６０２に出力される。またこの差分データは逆量子化部６２１、およびIDCT部６２２によって局所的に復号されて加算部６２３に送出される。
【０４４１】
加算部６２３はIDCT部６２２から送出される差分データに、動き補償部６２５から送出される予測参照画像の画像データを加算する。これにより局所的に復号したＰピクチャの画像データが得られる。このＰピクチャの画像データはフレームメモリ６２４内の、未来参照画像を格納する未来参照画像記憶部に格納される。
【０４４２】
次に演算部６１７にスキャンコンバータ６１３からＢピクチャとして処理すべきフレームの画像データが入力され、予測モード決定部６１４から送出される予測モードがイントラモード又は順方向予測モードの場合、そのフレームの画像データは上述のＰピクチャの場合と同様に処理される。これに対して予測モードが逆方向予測モードに設定された場合、フレームメモリ６２４の未来参照画像記憶部に格納されている画像データ（この場合Ｐピクチャの画像データ）が読み出されて動き補償部６２５に送出される。動き補償部６２５はこの画像データを動きベクトル検出部６１５から送出される逆方向動きベクトルに対応して動き補償する。
【０４４３】
すなわち動き補償部６２５は、逆方向予測モードの場合、フレームメモリ６２４の未来参照画像記憶部の読出しアドレスを、動きベクトル検出部６１５が現在出力しているマクロブロックの位置に対応する位置から動きベクトルに対応する分だけずらしてデータを読み出して予測参照画像を生成し、演算部６１７および加算部６２３に送出する。
【０４４４】
演算部６１７はスキャンコンバータ６１３から送出される参照画像のマクロブロックのデータから、動き補償部６２５から送出されたマクロブロックに対応する予測参照画像の画像データを減算して予測残差としての差分データを得、この差分データをDCT部６１８に送出する。この差分データはDCT部６１８、量子化部６１９、および可変長符号化部６２０を介して、バッファ部６０２に送出される。またこの差分データは逆量子化部６２１、およびIDCT部６２２によって局所的に復号されて加算部６２３に送出される。加算部６２３はIDCT部６２２から送出される差分データに、動き補償部６２５から送出される予測参照画像の画像データを加算する。これにより局所的に復号したＢピクチャの画像データが得られる。
【０４４５】
双方向予測モードの場合には、フレームメモリ６２４の過去参照画像記憶部に格納されている画像データ（この場合Ｉピクチャの画像データ）と、未来参照画像記憶部に格納されている画像データ（この場合Ｐピクチャの画像データ）とが読み出されて動き補償部６２５に送出される。動き補償部６２５はこの画像データを動きベクトル検出部６１５から送出される順方向動きベクトル及び逆方向動きベクトルに対応して動き補償する。
【０４４６】
すなわち、動き補償部６２５は、双方向予測モードの場合、フレームメモリ６２４の過去参照画像記憶部と未来参照画像記憶部の読出しアドレスを、動きベクトル検出部６１５が現在出力しているマクロブロックの位置に対応する位置から順方向動きベクトル及び逆方向動きベクトルに対応する分だけずらしてデータを読み出して予測参照画像を生成し、演算部６１７、および加算部６２３に送出する。
【０４４７】
演算部６１７はスキャンコンバータ６１３から送出される参照画像のマクロブロックのデータから、動き補償部６２５から送出されたマクロブロックに対応する予測参照画像の画像データの平均値を減算して予測残差としての差分データを得、この差分データをDCT部６１８に送出する。この差分データはDCT部６１８、量子化部６１９、および可変長符号化部６２０を介して、バッファ部６０２に出力される。またこの差分データは逆量子化部６２１およびIDCT部６２２によって局所的に復号されて加算部６２３に送出される。
【０４４８】
加算部６２３はIDCT部６２２から送出される差分データに、動き補償部６２５から送出される予測参照画像の画像データを加算する。これにより局所的に復号したＢピクチャの画像データが得られる。ここでＢピクチャは他の画像の予測画像として使用されないので、フレームメモリ６２４には格納されない。
【０４４９】
量子化制御部６１６は、所定の量子化制御アルゴリズムに従って、量子化部６１９において各マクロブロックを量子化する際に用いる量子化ステップを算出し、その量子化ステップを量子化部６１９に供給する。
【０４５０】
量子化制御部６１６には、バッファ部６０２に蓄積されている符号化データのデータ量（符号量）の情報が供給される。量子化制御部６１６は、その符号量に基づいて、量子化ステップや、各フレームの割り当て符号量を算出し、量子化ステップの情報を量子化部６１９に供給したり、割り当て符号量の情報を可変長符号化部６２０に供給したりする。
【０４５１】
このようなソフトウェアエンコーダの各工程（プロセス）に対するハードウェアの割り当て方法の例について、図２８に示される情報処理システム３００に割り当てる場合を例に説明する。ここで工程（プロセス）とは、図３８に示される各処理部が実行する処理のことを示す。例えば、符号化部６０１全体に対してサブCPUコア４４２−１を割り当て、フレームメモリ６２４等の、符号化部６０１内部の記憶部をLS４５１−１により実現させ、バッファ部６０２をXDR-RAM４０３により実現させるようにしてもよい。つまり、この場合、符号化部６０１の全ての処理は１つのサブCPUコア４４２により実行され、符号化処理中においてデータは、そのサブCPUコア４４２のローカルメモリであるLS４５１に保持され、符号化結果は共有メモリであるXDR-RAM４０３に保持される。この場合、ソフトウェアエンコーダに対して、サブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれが、例えば１GOP等所定の処理単位毎に割り当てられるようにすることもできる。その場合、各サブCPUコア４４２において行われる符号化処理は互いに並行して実行されるようにしてもよい。
【０４５２】
図３８に示されるようなMPEG２方式のエンコーダにおいては、例えば動き補償部６２５や動きベクトル検出部６１５の処理の負荷が、他の処理部において実行される処理の負荷に比べて大きい場合が多い。そこで、図３９に示されるように、符号化部６０１の処理に（全プロセスに対して）複数のサブCPUコア４４２を割り当てるようにしてもよい。
【０４５３】
図３９の例においては、符号化部６０１内の処理部のうち、画像符号化タイプ指定部６１１、画像符号化順序並び替え部６１２、スキャンコンバータ６１３、予測モード決定部６１４、量子化制御部６１６、演算部６１７、DCT部６１８、量子化部６１９、可変長符号化部６２０、逆量子化部６２１、IDCT部６２２、および加算部６２３に対してサブCPUコア４４２−１が割り当てられ、動きベクトル検出部６１５および動き補償部６２５に対してサブCPUコア４４２−２が割り当てられている。また、フレームメモリ６２４は、LS４５１−２により実現され、バッファ部６０２は、XDR-RAM４０３により実現される。
【０４５４】
もちろん、これ以外の割り当て方法を採用することも可能であり、例えば、図３９に示されるように、符号化部６０１内の処理部（プロセス）に対して複数のサブCPUコア４４２を割り当てる場合、１つのサブCPUコア４４２を割り当てる処理部（プロセス）の構成は任意であり、図３９に示される以外の組み合わせであってもよいし、３つ以上のサブCPUコア４４２を符号化部６０１内の処理部（プロセス）に対して割り当てることもできる。例えば、符号化部６０１内の各処理部（プロセス）に対して互いに異なるサブCPUコア４４２を割り当てるようにしてもよい。
【０４５５】
このように、符号化プログラム５４６がMPEG２に準拠するソフトウェアエンコーダのソフトウェアプログラムである場合も、ハードウェアの割り当てパターンを複数用意することができる。つまり、図３０を参照して説明した場合と同様に、ハードウェアの割り当てパターンが互いに異なる複数の符号化プログラム５４６を用意することができる。従って、この場合も、図３０を参照して説明した場合と同様に、符号化選択制御部５０２は、画像パラメータ５４３、符号化パラメータ５４４、および資源情報等に基づいて、採用する符号化プログラム５４６を複数用意された中から選択することができる。ただしこの場合、途中計算用バッファ使用量算出部５１５や係数並び替え用バッファ使用量算出部５１６は省略することができる。
【０４５６】
この場合の、符号化選択制御部５０２による符号化選択制御処理の流れの例を図４０のフローチャートを参照して説明する。なお、この符号化選択制御処理は、例えば１GOP毎等、所定の処理単位毎に繰り返し実行される。
【０４５７】
符号化選択制御処理が開始されると、符号化選択制御部５０２の画像パラメータ取得部５１１は、ステップＳ３０１において画像パラメータ５４３を取得する。ステップＳ３０２において、符号化パラメータ取得部５１２は、符号化パラメータ５４４を取得する。ステップＳ３０３において、資源情報取得部５１３は、資源情報を取得する。ステップＳ３０４において、符号化プログラム選択部５１７は、ステップＳ３０１において取得された画像パラメータ５４３、ステップＳ３０２において取得された符号化パラメータ５４４、およびステップＳ３０３において取得された資源情報に基づいて、符号化プログラム５４６の中から利用符号化プログラムを選択する。ステップＳ３０５において、プログラム実行部５１８は、ステップＳ３０４において選択された利用符号化プログラムを実行する。利用符号化プログラムが実行されると、符号化選択制御処理は終了される。
【０４５８】
実際のソフトウェアプログラムにおいては、図３８や図３９に示されるMPEG２方式の符号化部６０１の各処理部はそれぞれ複数の関数により構成されているので、各処理部（プロセス）内でも割り当てるサブCPUコア４４２を変更するようにすることも可能であるが、並列に実行可能な処理でなければ互いに異なるサブCPUコア４４２が割り当てられるようにしても処理時間を短縮することはできず、逆に、より非効率になる恐れもある。
【０４５９】
従来あるコンピュータのように、コンピュータが自動的に処理を実行するCPUを割り当てる場合、負荷状況等に応じて割り当てを行うため、上述したようにサブCPUコア４４２の割り当てを行うとは限らず、場合によっては符号化処理の効率が大幅に低減してしまう恐れがある。従って、MPEG２方式の符号化部６０１であっても、効率よく符号化処理を行うことができるようにハードウェアの割り当てパターンが設定された符号化プログラムを予め用意することにより、符号化処理の効率の低下を抑制することができる。また、その割り当てパターンが互いに異なる複数の符号化プログラムを予め用意し、符号化選択制御部５０２が、その中から条件に応じて選択するようにすることにより、より多様な条件下において効率よく符号化処理を実行することができる。
【０４６０】
なお、図示は省略するが、図３８に示される符号化部６０１に対応するMPEG２方式に準拠した復号部を実現する復号プログラムに対しても複数のパターンでハードウェアを割り当てることができる。つまり、図３０の場合と同様に、復号選択制御部５０３により、予め用意された、復号処理の各プロセスに対するハードウェアの割り当てパターンが互いに異なる複数の復号プログラム５４７の中から利用復号プログラムを選択し、実行させることができる。
【０４６１】
この復号処理の場合も、符号化処理の場合と同様に、効率よく復号処理を行うことができるようにハードウェアの割り当てパターンが設定された復号プログラムであって、その割り当てパターンが互いに異なる復号プログラムを予め複数用意することにより、より多様な条件下において効率よく復号処理を実行することができる。
【０４６２】
以上のように、ハードウェア資源の割り当てパターンを、入力画像信号の種類、符号化処理や復号処理のパラメータ(要求されるレイテンシやスループット等の特性)、および利用可能なハードウェア資源等に応じて適切に選択することにより、より多様な条件下において、より効率よく符号化処理や復号処理を実行させることができる。
【０４６３】
図４１は、ソフトウェアプログラムにより構成され、画像データを符号化して符号化データを生成する、H.264/AVC規格に準拠したソフトウェアエンコーダが所定の情報処理装置のCPUにより実行されることにより実現される機能（プロセス）を模式的に示す図である。図４１に示されるように、このソフトウェアエンコーダは、画像データをH.264/AVC方式で符号化する符号化部７００により構成される。
【０４６４】
符号化部７００は、符号化制御部７１１、減算部７２１、DCT部７２２、量子化部７２３、可変長符号化部７２４、逆量子化部７２５、IDCT部７２６、加算部７２７、デブロッキングフィルタ部７２８、動き補償部７２９、重み付き予測部７３０、フレーム内予測部７３１、選択部７３２、および動きベクトル検出部７３３を有する。
【０４６５】
符号化制御部７１１は、入力画像データに基づいて量子化ステップサイズや各ピクチャの割り当て符号量を算出し、量子化ステップサイズの情報を量子化部７２３に供給し、割り当て符号量の情報を可変長符号化部７２４に供給する。また、符号化制御部７１１は、所定数の画素群であるブロック毎にフレーム内予測の予測方向を選択し、その予測方向の情報をフレーム内予測部７３１に供給する。
【０４６６】
減算部７２１は、入力画像データから、選択部７３２より供給される予測結果を減算し、その減算結果をDCT部７２２に供給する。DCT部７２２は、減算部７２１より供給される減算結果に対してDCT変換を行い、その係数を量子化部７２３およびフレーム内予測部７３１に供給する。量子化部７２３は、DCT部７２２の出力を、符号化制御部７１１より供給された量子化ステップサイズで量子化し、その結果を可変長符号化部７２４および逆量子化部７２５に供給する。可変長符号化部７２４は、符号化制御部７１１より供給される割り当て符号量、および動きベクトル検出部７３３より供給される動きベクトルに基づいて、量子化部７２３より供給される量子化係数を符号化し、符号化データを出力する。
【０４６７】
逆量子化部７２５は、量子化部７２３による量子化に対応する方法で逆量子化を行い、その結果をIDCT部７２６に供給する。IDCT部７２６は、逆量子化部７２５の出力に対して、逆DCT変換を行い、その結果を加算部７２７に供給する。加算部７２７は、そのIDCT結果と、入力画像データを加算し、得られた画像データをデブロッキングフィルタ部７２８に供給する。デブロッキングフィルタ部７２８は、加算部７２７の出力に対して、画像の符号化時に生じるブロック歪を減少させるためのフィルタを用いてブロック歪の除去を適応的に行う。デブロッキングフィルタ部７２８は、そのフィルタ結果を動き補償部７２９に供給する。
【０４６８】
動き補償部７２９は、複数のピクチャを参照ピクチャとして用い、動きベクトル検出部７３３より供給される動きベクトルに基づいてその中から最適なものを選択し、デブロッキングフィルタ部７２８の出力に対して動き補償を行う。動き補償部７２９は、その動き補償の情報を重み付き予測部７３０に供給する。重み付き予測部７３０は、動き補償部７２９より供給される動き補償の情報に所定の重み係数を乗算し、さらに所定の係数を加算することにより、オフセット付き重み補間情報を生成し、それを選択部７３２に供給する。
【０４６９】
フレーム内予測部７３１は、DCT部７２２より供給されるDCT結果に対して、符号化制御部７１１より供給された予測方向にフレーム内予測を行い、その予測結果を選択部７３２に供給する。選択部７３２は、制御モードがイントラモードであるか否かによって、重み付き予測部７３０より供給されるオフセット付き重み補間情報、並びに、フレーム内予測部７３１より供給される予測結果のうちいずれか一方を選択し、減算部７２１に供給する。
【０４７０】
動きベクトル検出部７３３は、入力画像データに基づいてピクチャ間の動きベクトルを検出し、その動きベクトルの情報を動き補償部７２９および可変長符号化部７２４に供給する。
【０４７１】
このようなソフトウェアエンコーダの各工程（プロセス）に対するハードウェアの割り当て方法の例について、図２８に示される情報処理システム３００に割り当てる場合を例に説明する。ここで工程（プロセス）とは、図４１に示される各処理部が実行する処理のことを示す。例えば、符号化部７００全体に対してサブCPUコア４４２−１を割り当てるようにしてもよい。つまり、この場合、符号化部７００の全ての処理は１つのサブCPUコア４４２により実行され、符号化処理中においてデータは、そのサブCPUコア４４２のローカルメモリであるLS４５１に保持され、符号化結果は共有メモリであるXDR-RAM４０３に保持される。この場合、ソフトウェアエンコーダに対して、サブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれが、例えば１GOP等所定の処理単位毎に割り当てられるようにすることもできる。その場合、各サブCPUコア４４２において行われる符号化処理は互いに並行して実行されるようにしてもよい。
【０４７２】
図４１に示されるようなH.264/AVC方式のエンコーダにおいても、例えば動き補償部７２９や動きベクトル検出部７３３等の処理の負荷が、他の処理部において実行される処理の負荷に比べて大きい場合が多い。そこで、図４２に示されるように、符号化部７００の処理に（全プロセスに対して）複数のサブCPUコア４４２を割り当てるようにしてもよい。
【０４７３】
図４２の例においては、符号化部７００内の処理部のうち、符号化制御部７１１に対してサブCPUコア４４２−１が割り当てられ、減算部７２１、DCT部７２２、量子化部７２３、可変長符号化部７２４、逆量子化部７２５、IDCT部７２６、加算部７２７、フレーム内予測部７３１、および選択部７３２に対してサブCPUコア４４２−２が割り当てられ、デブロッキングフィルタ部７２８、動き補償部７２９、および重み付き予測部７３０に対してサブCPUコア４４２−３が割り当てられ、動きベクトル検出部７３３に対してサブCPUコア４４２−４が割り当てられている。
【０４７４】
もちろん、これ以外の割り当て方法を採用することも可能であり、例えば、図４２に示されるように、符号化部７００内の処理部（プロセス）に対して複数のサブCPUコア４４２を割り当てる場合、１つのサブCPUコア４４２を割り当てる処理部（プロセス）の構成は任意であり、図４２に示される以外の組み合わせであってもよいし、５つ以上のサブCPUコア４４２を符号化部７００内の処理部（プロセス）に対して割り当てることもできる。例えば、符号化部７００内の各処理部（プロセス）に対して互いに異なるサブCPUコア４４２を割り当てるようにしてもよい。
【０４７５】
このように、符号化プログラム５４６がH.264/AVCに準拠するソフトウェアエンコーダのソフトウェアプログラムである場合も、ハードウェアの割り当てパターンを複数用意することができる。つまり、図３０を参照して説明した場合と同様に、ハードウェアの割り当てパターンが互いに異なる複数の符号化プログラム５４６を用意することができる。従って、この場合も、図３０を参照して説明した場合と同様に、符号化選択制御部５０２は、画像パラメータ５４３、符号化パラメータ５４４、および資源情報等に基づいて、採用する符号化プログラム５４６を複数用意された中から選択することができる。ただしこの場合、途中計算用バッファ使用量算出部５１５や係数並び替え用バッファ使用量算出部５１６は省略することができる。また、符号化選択制御処理の流れは、図４０のフローチャートを参照して説明したMPEG２方式の符号化プログラムの場合と同様であるのでその説明は省略する。
【０４７６】
実際のソフトウェアプログラムにおいては、図４０や図４１に示されるH.264/AVC方式の符号化部７００の各処理部はそれぞれ複数の関数により構成されているので、各処理部（プロセス）内でも割り当てるサブCPUコア４４２を変更するようにすることも可能であるが、並列に実行可能な処理でなければ互いに異なるサブCPUコア４４２が割り当てられるようにしても処理時間を短縮することはできず、逆に、より非効率になる恐れもある。
【０４７７】
従来あるコンピュータのように、コンピュータが自動的に処理を実行するサブCPUコア４４２を割り当てる場合、負荷状況等に応じて割り当てを行うため、上述したようにサブCPUコア４４２の割り当てを行うとは限らず、場合によっては符号化処理の効率が大幅に低減してしまう恐れがある。従って、H.264/AVC方式の符号化部７００であっても、効率よく符号化処理を行うことができるようにハードウェアの割り当てパターンが設定された符号化プログラムを予め用意することにより、符号化処理の効率の低下を抑制することができる。また、その割り当てパターンが互いに異なる複数の符号化プログラムを予め用意し、符号化選択制御部５０２が、その中から条件に応じて選択するようにすることにより、より多様な条件下において効率よく符号化処理を実行することができる。
【０４７８】
なお、図示は省略するが、図４１に示される符号化部７００に対応するH.264/AVC方式に準拠した復号部を実現する復号プログラムに対しても複数のパターンでハードウェアを割り当てることができる。つまり、図３０の場合と同様に、復号選択制御部５０３により、予め用意された、ハードウェアの割り当てパターンが互いに異なる複数の復号プログラム５４７の中から利用復号プログラムを選択し、実行させることができる。
【０４７９】
この復号処理の場合も、符号化処理の場合と同様に、効率よく復号処理を行うことができるようにハードウェアの割り当てパターンが設定された復号プログラムであって、その割り当てパターンが互いに異なる復号プログラムを予め複数用意することにより、より多様な条件下において効率よく復号処理を実行することができる。
【０４８０】
以上のように、ハードウェア資源の割り当てパターンを、入力画像信号の種類、符号化処理や復号処理のパラメータ(要求されるレイテンシやスループット等の特性)、および利用可能なハードウェア資源等に応じて適切に選択することにより、より多様な条件下において、より効率よく符号化処理や復号処理を実行させることができる。
【０４８１】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
【０４８２】
例えば、図１１に示されるように、符号化部１０が、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各処理を行う１つの演算処理部と、途中計算用バッファ部１２および係数並び替え用バッファ部１３が形成される1つの記憶部により構成されるようにしてもよい。
【０４８３】
同様に、符号化部１０が、図１３に示されるように、ウェーブレット変換部１１、係数並び替え部１４、およびエントロピ符号化部１５の各処理を行う１つの演算処理部と、途中計算用バッファ部１２が形成される高速に読み出しおよび書き込みが可能な第１の記憶部と、係数並び替え用バッファ部１３が形成される大容量の第２の記憶部とにより構成されるようにしてもよい。
【０４８４】
また、同様に、符号化部１０が、図１４に示されるように、ウェーブレット変換部１１−１、係数並び替え部１４−１、およびエントロピ符号化部１５−１の各処理を行う第１の演算処理部と、途中計算用バッファ部１２−１が形成される高速に読み出しおよび書き込みが可能な第１の記憶部と、ウェーブレット変換部１１−２、係数並び替え部１４−２、およびエントロピ符号化部１５−２の各処理を行う第２の演算処理部と、途中計算用バッファ部１２−２が形成される高速に読み出しおよび書き込みが可能な第２の記憶部と、係数並び替え用バッファ部１３−１および係数並び替え用バッファ部１３−２が形成される大容量の第３の記憶部とにより構成されるようにしてもよい。
【０４８５】
さらに、同様に、符号化部１０が、図１６に示されるように、ウェーブレット変換部１１−１の処理を行う第１の演算処理部と、途中計算用バッファ部１２−１が形成される高速に読み出しおよび書き込みが可能な第１の記憶部と、係数並び替え部１４−１およびエントロピ符号化部１５−１の各処理を行う第２の演算処理部と、ウェーブレット変換部１１−２の処理を行う第３の演算処理部と、途中計算用バッファ部１２−２が形成される高速に読み出しおよび書き込みが可能な第２の記憶部と、係数並び替え部１４−２およびエントロピ符号化部１５−２の各処理を行う第４の演算処理部と、係数並び替え用バッファ部１３−１および係数並び替え用バッファ部１３−２が形成される大容量の第３の記憶部とにより構成されるようにしてもよい。
【０４８６】
同様に、復号部２０が、図１８に示されるように、エントロピ復号部２１およびウェーブレット逆変換部２３の各処理を行う１つの演算処理部と、係数バッファ部２２が形成される記憶部とにより構成されるようにしてもよい。
【０４８７】
また、同様に、復号部２０が、図２０に示されるように、エントロピ復号部２１−１およびウェーブレット逆変換部２３−１の各処理を行う第１の演算処理部と、係数バッファ部２２−１が形成される第１の記憶部と、エントロピ復号部２１−２およびウェーブレット逆変換部２３−２の各処理を行う第２の演算処理部と、係数バッファ部２２−２が形成される第２の記憶部とにより構成されるようにしてもよい。
【０４８８】
さらに、同様に、復号部２０が、図２２に示されるように、エントロピ復号部２１−１の処理を行う第１の演算処理部と、ウェーブレット逆変換部２３−１の処理を行う第２の演算処理部と、係数バッファ部２２−１が形成される第１の記憶部と、エントロピ復号部２１−２の処理を行う第３の演算処理部と、ウェーブレット逆変換部２３−２の処理を行う第４の演算処理部と、係数バッファ部２２−２が形成される第２の記憶部とにより構成されるようにしてもよい。
【０４８９】
このように符号化部１０や復号部２０をハードウェアで構成する場合も、上述したように各ソフトウェアプログラムの場合と同様の効果を得ることができる。
【０４９０】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ、または、複数の装置よりなる情報処理システムの情報処理装置などに、プログラム記録媒体からインストールされる。
【０４９１】
この記録媒体は、例えば、図１０や図２８に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（MD（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１３１またはリムーバブルメディア３１１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM１０２や、記憶部１２３または記憶装置３０３に含まれるハードディスク、または、HDD４０５などで構成される。
【０４９２】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０４９３】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【０４９４】
なお、以上において、１つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて１つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０４９５】
【図１】本発明を適用した符号化部の構成例を示すブロック図である。
【図２】ウェーブレット変換について概略的に説明するための略線図である。
【図３】ウェーブレット変換について概略的に説明するための略線図である。
【図４】５×３フィルタのリフティングによるフィルタリングを分解レベル＝２まで実行した例を示す略線図である。
【図５】この発明によるウェーブレット変換およびウェーブレット逆変換の流れを概略的に示す略線図である。
【図６】本発明を適用した復号部の構成例を示すブロック図である。
【図７】符号化処理の流れの例を説明するフローチャートである。
【図８】復号処理の流れの例を説明するフローチャートである。
【図９】符号化部および復号部の各要素が行う並列動作の様子の例を概略的に示す略線図である。
【図１０】パーソナルコンピュータの構成例を示すブロック図である。
【図１１】符号化部に対するハードウェア資源の割り当ての例を示す図である。
【図１２】図１１の例の場合の処理の流れを示す模式図である。
【図１３】符号化部に対するハードウェア資源の割り当ての、他の例を示す図である。
【図１４】符号化部に対するハードウェア資源の割り当ての、さらに他の例を示す図である。
【図１５】図１４の例の場合の処理の流れを示す模式図である。
【図１６】符号化部に対するハードウェア資源の割り当ての、さらに他の例を示す図である。
【図１７】図１６の例の場合の処理の流れを示す模式図である。
【図１８】復号部に対するハードウェア資源の割り当ての例を示す図である。
【図１９】図１８の例の場合の処理の流れを示す模式図である。
【図２０】復号部に対するハードウェア資源の割り当ての、他の例を示す図である。
【図２１】図２０の例の場合の処理の流れを示す模式図である。
【図２２】復号部に対するハードウェア資源の割り当ての、さらに他の例を示す図である。
【図２３】図２２の例の場合の処理の流れを示す模式図である。
【図２４】符号化部の他の構成例を示すブロック図である。
【図２５】図２４の符号化部に対するハードウェア資源の割り当ての、他の例を示す図である。
【図２６】符号化部の、さらに他の構成例を示すブロック図である。
【図２７】図２６の符号化部に対応する復号部の構成例を示すブロック図である。
【図２８】情報処理システムの構成例を示すブロック図である。
【図２９】サブCPUコアの構成例を示すブロック図である。
【図３０】メインCPUコアの構成例を示すブロック図である。
【図３１】ウェーブレット変換用関係テーブルの構成例を示す図である。
【図３２】係数並び替え用関係テーブルの構成例を示す図である。
【図３３】符号化選択制御処理の流れの例を説明するフローチャートである。
【図３４】演算精度選択処理の流れの例を説明するフローチャートである。
【図３５】符号化方式選択処理の流れの例を説明するフローチャートである。
【図３６】復号選択制御処理の流れの例を説明するフローチャートである。
【図３７】復号方式選択処理の流れの例を説明するフローチャートである。
【図３８】符号化部の、さらに他の構成例を示すブロック図である。
【図３９】符号化部の、さらに他の構成例を示すブロック図である。
【図４０】符号化選択制御処理の流れの、他の例を説明するフローチャートである。
【図４１】符号化部の、さらに他の構成例を示すブロック図である。
【図４２】符号化部の、さらに他の構成例を示すブロック図である。
【符号の説明】
【０４９６】
１０  符号化部，  １１  ウェーブレット変換部，  １２  途中計算用バッファ部，  １３  係数並び替え用バッファ部，  １４  係数並び替え部，  １５  エントロピ符号化部，  ２０  復号部，  ２１  エントロピ復号部，  ２２  係数バッファ部，  ２３  ウェーブレット変換部，  １００  パーソナルコンピュータ，  １０１  CPU，  １０３  RAM，  １１１  キャッシュメモリ，  ３００  情報処理システム，  ４０３  XDR-RAM，  ４４１  メインCPUコア，  ４４２  サブCPUコア，  ４５１  LS，  ５０２  符号化選択制御部，  ５０３  復号選択制御部，  ５０４  キャッシュ，  ５１７  符号化プログラム選択部，  ５１８  プログラム実行部，  ５２５  復号プログラム選択部，  ５２６  プログラム実行部
【図１】
2008287460.tif 000003
【図２】
2008287460.tif 000004
【図３】
2008287460.tif 000005
【図４】
2008287460.tif 000006
【図５】
2008287460.tif 000007
【図６】
2008287460.tif 000008
【図７】
2008287460.tif 000009
【図８】
2008287460.tif 000010
【図９】
2008287460.tif 000011
【図１０】
2008287460.tif 000012
【図１１】
2008287460.tif 000013
【図１２】
2008287460.tif 000014
【図１３】
2008287460.tif 000015
【図１４】
2008287460.tif 000016
【図１５】
2008287460.tif 000017
【図１６】
2008287460.tif 000018
【図１７】
2008287460.tif 000019
【図１８】
2008287460.tif 000020
【図１９】
2008287460.tif 000021
【図２０】
2008287460.tif 000022
【図２１】
2008287460.tif 000023
【図２２】
2008287460.tif 000024
【図２３】
2008287460.tif 000025
【図２４】
2008287460.tif 000026
【図２５】
2008287460.tif 000027
【図２６】
2008287460.tif 000028
【図２７】
2008287460.tif 000029
【図２８】
2008287460.tif 000030
【図２９】
2008287460.tif 000031
【図３０】
2008287460.tif 000032
【図３１】
2008287460.tif 000033
【図３２】
2008287460.tif 000034
【図３３】
2008287460.tif 000035
【図３４】
2008287460.tif 000036
【図３５】
2008287460.tif 000037
【図３６】
2008287460.tif 000038
【図３７】
2008287460.tif 000039
【図３８】
2008287460.tif 000040
【図３９】
2008287460.tif 000041
【図４０】
2008287460.tif 000042
【図４１】
2008287460.tif 000043
【図４２】
2008287460.tif 000044