(57)【要約】【課題】本発明は、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ規格に従ってビデオデータを符号化、復号化する場合に適用して、複数の演算処理手段で画像データを同時並列的に処理して符号化処理、復号化処理する構成において、キャッシュメモリの容量を低減する。【解決手段】本発明は、複数の演算処理部に順次循環的にスライスを割り当てて、これら複数の演算処理部で同時並列的に画像データを符号化、復号化するようにして、各スライスにおける処理中のマクロブロックの参照マクロブロックと、直前スライスにおける処理中のマクロブロックの参照マクロブロックとが一部重複するような関係に各スライスの処理を設定する。【選択図】        図１
2007295423.tif 000002
【特許請求の範囲】
【請求項１】
画像データをそれぞれマクロブロック単位で符号化又は復号化する複数の演算処理部と、
前記複数の演算処理部の処理に使用するデータを蓄積して保持するメインメモリと、
前記メインメモリに保持されたデータの一部を保持する前記複数の演算処理部のキャッシュメモリとを備え、
前記複数の演算処理部には、
前記画像データのスライスが順次循環的に割り当てられて、それぞれ処理対象の複数のスライスが設定され、
前記複数の演算処理部は、
各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象の複数のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記キャッシュメモリに保持されたデータを処理して前記画像データを同時並列的に符号化又は復号化し、
前記一定の関係が、
現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、
かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係である
ことを特徴とする画像データの処理装置。
【請求項２】
前記キャッシュメモリの容量が、
１つのマクロブロックの参照マクロブロック数に値１を加算した加算値に、前記複数の演算処理部の数を乗算した後、前記一部重複する参照マクロブロックの数を減算した数のマクロブロック数に対応する容量である
ことを特徴とする請求項１に記載の画像データの処理装置。
【請求項３】
前記キャッシュメモリの容量が、
１つのマクロブロックの参照マクロブロック数に値１を加算した加算値に、前記複数の演算処理部の数を乗算した後、前記一部重複する参照マクロブロックの数を減算した数のマクロブロック数に対応する容量となるように、前記複数の演算処理部の数が設定された
ことを特徴とする請求項１に記載の画像データの処理装置。
【請求項４】
前記複数の演算処理部による処理系統を複数系統有し、
前記複数系統の前記複数の演算処理部で前記キャッシュメモリを共用した
ことを特徴とする請求項１に記載の画像データの処理装置。
【請求項５】
画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法において、
前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、
前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、
前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、
前記同時並列処理ステップは、
各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、
前記一定の関係が、
現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、
かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係である
ことを特徴とする画像データの処理方法。
【請求項６】
演算処理手段による実行により、画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法のプログラムにおいて、
前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、
前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、
前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、
前記同時並列処理ステップは、
各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、
前記一定の関係が、
現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、
かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係である
ことを特徴とする画像データの処理方法のプログラム。
【請求項７】
演算処理手段による実行により、画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法のプログラムを記録した記録媒体において、
前記画像データの処理方法のプログラムは、
前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、
前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、
前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、
前記同時並列処理ステップは、
各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、
前記一定の関係が、
現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、
かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係である
ことを特徴とする画像データの処理方法のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ（ITU-T Rec. H.264 ISO/IEC 14496-10 AVC ）規格に従ってビデオデータを符号化、復号化する場合に適用することができる。本発明は、複数の演算処理部に順次循環的にスライスを割り当てて、これら複数の演算処理部で同時並列的に画像データを符号化、復号化するようにして、各スライスにおける処理中のマクロブロックの参照マクロブロックと、直前スライスにおける処理中のマクロブロックの参照マクロブロックとが一部重複するような関係に各スライスの処理を設定することにより、複数の演算処理手段で画像データを同時並列的に処理して符号化処理、復号化処理する構成において、キャッシュメモリの容量を低減する。
【背景技術】
【０００２】
従来、各種映像機器では、Ｈ．２６４／ＭＰＥＧ−４ＡＶＣ（以下において、H.264/AVCと呼ぶ）、ＷＭＶ９（Windows Media Video 9 ）、ＭＰＥＧ−４（ISO/IEC14496 Information Technology-Generic Coding of Audio-Visual Object ）、ＭＰＥＧ−２（ISO/IEC13818-2 International Standard MPEG-2 Video）、ＭＰＥＧ−１（ISO/IEC11172-2 International Standard MPEG-1 Video）等で動画像の画像データを符号化処理、復号化処理している。これらの符号化処理、復号化処理では、ラスタ走査の順序で、マクロブロックを順次処理している。
【０００３】
すなわち図４１にビデオ信号がいわゆる４：２：０の場合を例に取って示すように、この種の符号化処理では、輝度信号Ｙ及び色差信号Ｃｒ、Ｃｂをそれぞれ１６画素×１６画素及び８画素×８画素のマクロブロックに分割する。また輝度信号Ｙは、１つのマクロブロックを水平方向及び垂直方向にそれぞれ１／２分割した８画素×８画素のブロック毎に、ディスクリートコサイン変換処理し、色差信号Ｃｒ、Ｃｂは、マクロブロック毎に、ディスクリートコサイン変換処理する。Ｈ．２６４／ＡＶＣでは、更にそれぞれ１／２分割した４画素×４画素のブロックごとに直行変換処理や離散アダマール変換処理を行う。この種の符号化処理では、このディスクリートコサイン変換処理結果である各係数データを量子化処理、可変長符号化処理する。
【０００４】
従ってこの種の符号化処理、復号化処理では、図４２（Ａ）に示すように、２次元のアドレスである水平方向及び垂直方向のアドレス（Ｘ，Ｙ）で各マクロブロック（ＭＢ）を特定する。またこの種の処理では、図４２（Ｂ）に示すように、この水平方向及び垂直方向のアドレス（Ｘ，Ｙ）を１次元のアドレスに変換してメモリをアクセスし、このメモリに保持された各マクロブロックの画像データを順次処理する。
【０００５】
またこれらの処理では、隣接マクロブロックの処理結果を参照して伝送効率を向上している。具体的に、ＭＰＥＧ−１、２のイントラ予測では、図４３に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）の処理結果を参照して、続くマクロブロック（Ｘ，Ｙ）を処理している。なおこの図４３及び以下の図では、参照関係を矢印で示す。また以下において、この参照されるマクロブロックを参照マクロブロックと呼ぶ。従ってこの図４３の例では、マクロブロック（Ｘ−１，Ｙ）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックである。なおここでスライスは、スライスレイヤの処理単位であり、水平方向に連続する複数のマクロブロックで形成される。
【０００６】
またＭＰＥＧ−４のイントラ予測では、図４４に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ−１，Ｙ）、（Ｘ，Ｙ−１）又は（Ｘ−１，Ｙ−１）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。
【０００７】
またＭＰＥＧ−４の動きベクトル予測では、図４５に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査終了端側の隣接マクロブロック（Ｘ＋１，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ−１，Ｙ）、（Ｘ，Ｙ−１）又は（Ｘ＋１，Ｙ−１）の動きベクトルを参照して、マクロブロック（Ｘ，Ｙ）の動きベクトルを予測している。
【０００８】
またＨ２６４／ＡＶＣのイントラ予測では、図４６に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査終了端側の隣接マクロブロック（Ｘ＋１，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ−１，Ｙ）、（Ｘ，Ｙ−１）、（Ｘ−１，Ｙ−１）又は（Ｘ＋１，Ｙ−１）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。
【０００９】
またＨ２６４／ＡＶＣの動きベクトル予測では、図４７に示すように、ＭＰＥＧ−４の動きベクトル予測と同様に、隣接マクロブロック（Ｘ，Ｙ−１）、（Ｘ＋１，Ｙ−１）、（Ｘ−１，Ｙ）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ，Ｙ−１）、（Ｘ＋１，Ｙ−１）、又は（Ｘ−１，Ｙ）の動きベクトルを参照して、動きベクトルを処理している。
【００１０】
またＨ２６４／ＡＶＣのデブロッキングフィルタの処理では、図４８に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ，Ｙ−１）又は（Ｘ＋１，Ｙ−１）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。
【００１１】
このような符号化、復号化処理では、中央処理ユニット等の演算処理手段の演算処理で符号化処理、復号化処理する場合もある。
【００１２】
これに対して演算処理手段を用いたデータ処理システムでは、キャッシュメモリを用いて処理の高速度化が図られている。
【００１３】
すなわち図４９に示すように、演算処理手段を用いたデータ処理システム１では、高速アクセス可能なＳＲＡＭ等のメモリでキャッシュメモリ２が形成され、またキャッシュメモリ２に比して高速アクセス困難ではあるものの、キャッシュメモリ２に比して消費電力の小さなメモリでメインメモリ４が形成される。またデータ処理手段３の命令を含むデータをメインメモリ３に格納して保持し、このメインメモリ３に格納した命令、データの一部をキャッシュメモリ２にロードして保持する。なおキャッシュメモリ２には、各データのアドレスを管理するＴＡＧ情報が設定されて命令、データが格納される。
【００１４】
データ処理システム１において、データ処理手段３は、同一命令、データを再び使用する場合、矢印Ａで示すように、先ずキャッシュメモリ２をアクセスして所望する命令、データを検索し、目的の命令、データがキャッシュメモリ２に存在する場合には、キャッシュメモリ２に記録された命令、データを取り出して使用する。また目的の命令、データがキャッシュメモリ２に存在しない場合、矢印Ｂで示すように、メインメモリ３から目的の命令、データを取り出して使用し、またこの命令、データをキャッシュメモリ２に格納する。なおキャッシュメモリ２は、データ管理の高速度化を目的として、メインメモリ内にソフトウェア的に構成する場合もある。
【００１５】
演算処理手段を用いて符号化処理、復号化処理する構成に関して、例えば特開２００６−４２３６４号公報には、メモリから処理対象の画像データをロードする総サイクル数を低減させる工夫が提案されている。また特開２０００−１１５８０６号公報には、キャッシュメモリを用いて画像データの処理速度を高速度化する工夫が提案されている。
【００１６】
ところで画像データを複数の演算処理手段で同時並列的に処理して符号化処理、復号化処理すれば、１つの演算処理手段で画像データを処理する場合に比して、処理速度を高速度化することができる。またさらに複数の演算処理手段で同時並列的に画像データを処理して符号化処理、復号化処理する構成において、キャッシュメモリを使用すれば、一段と処理速度を高速度化することができると考えられる。この場合に、複数の演算処理手段で画像データを同時並列的に処理する構成を有効に利用して、キャッシュメモリの容量を低減することができれば、回路規模を低減し、消費電力を低減することができる。
【特許文献１】特開２００６−４２３６４号公報
【特許文献２】特開２０００−１１５８０６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明は以上の点を考慮してなされたもので、複数の演算処理手段で画像データを同時並列的に処理して符号化処理、復号化処理する構成において、キャッシュメモリの容量を低減することができる画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体を提案しようとするものである。
【課題を解決するための手段】
【００１８】
上記の課題を解決するため請求項１の発明は、画像データの処理装置に適用して、画像データをそれぞれマクロブロック単位で符号化又は復号化する複数の演算処理部と、前記複数の演算処理部の処理に使用するデータを蓄積して保持するメインメモリと、前記メインメモリに保持されたデータの一部を保持する前記複数の演算処理部のキャッシュメモリとを備え、前記複数の演算処理部には、前記画像データのスライスが順次循環的に割り当てられて、それぞれ処理対象の複数のスライスが設定され、前記複数の演算処理部は、各スライスの処理が直前スライスの処理に対して一定の関係となるようにしてそれぞれ前記処理対象の複数のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記キャッシュメモリに保持されたデータを処理して、前記画像データを同時並列的に符号化又は復号化し、前記一定の関係が、現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係であるようにする。
【００１９】
また請求項５の発明は、画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法に適用して、前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、前記同時並列処理ステップは、各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、前記一定の関係が、現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係である。
【００２０】
また請求項６の発明は、演算処理手段による実行により、画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法のプログラムに適用して、前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、前記同時並列処理ステップは、各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、前記一定の関係が、現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係であるようにする。
【００２１】
また請求項７の発明は、演算処理手段による実行により、画像データをマクロブロック単位で符号化又は復号化する画像データの処理方法のプログラムを記録した記録媒体に適用して、前記画像データの処理方法のプログラムは、前記符号化又は復号化に必要なデータをメインメモリに格納するメインメモリへのデータ格納のステップと、前記メインメモリに格納されたデータをキャッシュメモリに格納するキャッシュメモリへのデータ格納のステップと、前記画像データのスライスが順次循環的に割り当てられた複数の処理対象を、それぞれ前記マクロブロック単位で、同時並列的に処理するように、前記キャッシュメモリに保持されたデータを用いて複数の演算処理手段で前記画像データを符号化又は復号化する同時並列処理ステップとを有し、前記同時並列処理ステップは、各スライスの処理が直前スライスの処理に対して一定の関係となるようにして、それぞれ前記処理対象のスライスのマクロブロックをラスタ走査の順序で処理する順序で、前記画像データを符号化又は復号化し、前記一定の関係が、現在のスライスと直前のスライスとを同時並列的に処理可能な関係であって、かつ前記現在のスライスで処理中のマクロブロックの参照マクロブロックと、前記直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複する関係となるように、前記現在のスライスで処理中のマクロブロックが、前記直前スライスで処理中のマクロブロックから一定数のマクロブロックだけラスタ走査開始端側となる関係であるようにする。
【００２２】
請求項１の構成によれば、キャッシュメモリを用いて、複数の演算処理部で同時並列的に画像データを符号化、復号化することができる。またこのとき現在のスライスで処理中のマクロブロックの参照マクロブロックと、直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複することから、処理中のマクロブロックの全ての参照マクロブロックのデータを格納する場合に比して、キャッシュメモリに格納するデータを低減することができ、キャッシュメモリの容量を少なくすることができる。
【００２３】
請求項５、請求項６、又は請求項７の構成によれば、同時並列処理ステップで、キャッシュメモリを用いて画像データを同時並列的に処理することができる。またこのとき現在のスライスで処理中のマクロブロックの参照マクロブロックと、直前スライスで処理中のマクロブロックの参照マクロブロックとが一部重複することから、処理中のマクロブロックの全ての参照マクロブロックのデータを格納する場合に比して、キャッシュメモリに格納するデータを低減することができ、キャッシュメモリの容量を少なくすることができる。
【発明の効果】
【００２４】
本発明によれば、複数の演算処理手段で画像データを同時並列的に処理して符号化処理、復号化処理する構成において、キャッシュメモリの容量を低減することができる。
【発明を実施するための最良の形態】
【００２５】
以下、適宜図面を参照しながら本発明の実施例を詳述する。
【実施例１】
【００２６】
（１）実施例の構成
図２は、本発明の実施例１の映像機器に適用されるエンコーダを示すブロック図である。この実施例の映像機器は、このエンコーダ１０で画像データを符号化処理して記録媒体に記録し、また伝送路に出力する。また後述するデコーダで記録媒体に記録した画像データ、伝送路から入力する符号化データを復号化処理する。
【００２７】
ここでエンコーダ１０は、複数の中央処理ユニットを有するいわゆるマルチコアプロセッサで形成され、バッファメモリ３１に動画像の画像データPixelを順次入力する。なおこの図２では、このバッファメモリ３１への画像データの入出力の記載は、簡略化して示す。エンコーダ１０は、これら複数の中央処理ユニットがそれぞれこのバッファメモリ３１をアクセスできるように構成される。エンコーダ１０は、これら複数の中央処理ユニットの演算処理によってこのバッファメモリ３１に格納された画像データPixelをＨ．２６４／ＡＶＣの手法で符号化処理し、符号化データStreamを出力する。
【００２８】
エンコーダ１０は、各中央処理ユニットによって、それぞれマクロブロックを処理するマクロブロック処理エンジン（ＭＢ処理エンジン）１１Ａ〜１１Ｎの機能ブロックが形成される。またエンコーダ１０は、全体の動作を制御するメインの中央処理ユニットによって、前処理部（ＭＥ）１２、後処理部（ＶＬＣ）１３の機能ブロックが形成される。なおこのエンコーダ１０のプログラムは、この映像機器に事前にインストールされて提供されるものの、これに代えて光ディスク、磁気ディスク、メモリカード等の種々の記録媒体に記録して提供するようにしてもよく、またインターネット等のネットワークを介したダウンロードにより提供するようにしてもよい。
【００２９】
ここで前処理部１２は、マクロブロック処理エンジン１１Ａ〜１１Ｎで処理する前に画像データPixelを事前にまとめてフレーム単位で処理する機能ブロックである。具体的に、前処理部１２は、インター予測時に、バッファメモリ３１に格納した参照フレームに対して動き検出回路２１で最適な予測モードならびに動きベクトルを検出する。
【００３０】
マクロブロック処理エンジン１１Ａ〜１１Ｎは、画像データPixelをそれぞれマクロブロック単位で処理する並列処理可能な機能ブロックである。マクロブロック処理エンジン１１Ａ〜１１Ｎは、前処理部１２で設定された最適予測モードならびに動きベクトルに応じて予測値を作成し、各マクロブロックの画像データを符号化処理して出力データcoefを出力する。
【００３１】
すなわちマクロブロック処理エンジン１１Ａ〜１１Ｎは、マクロブロック単位でバッファメモリ３１から画像データPixelを減算回路２２に入力する。減算回路２２は、イントラ符号化する場合には、イントラ予測回路２３で生成される予測値と順次入力される画像データPixelとの差分データを生成し、インター符号化する場合には、動き補償回路２４で生成される予測値と画像データPixelとの差分データを生成する。
【００３２】
ディスクリートコサイン変換回路（ＤＣＴ）２５は、減算回路２２から出力される差分データを直交変換処理して係数データを出力する。量子化回路（Ｑ）２６は、所定の量子化スケールでこの係数データを量子化して出力する。マクロブロック処理エンジン１１Ａ〜１１Ｎは、この量子化回路２６の出力データcoefを後処理部１３に出力する。
【００３３】
逆量子化回路（Ｑ-1）２７は、量子化回路２６の出力データcoefを逆量子化処理し、量子化回路２６に入力される係数データを復号する。逆ディスクリートコサイン変換回路（ＩＤＣＴ）２８は、逆量子化回路２７の出力データを逆ディスクリートコサイン変換処理し、ディスクリートコサイン変換回路２５に入力される差分データを復号する。加算回路２９は、逆ディスクリートコサイン変換回路２８で復号した差分データにイントラ予測回路２３又は動き補償回路２４で生成した予測値を加算し、デブロッキングフィルタ３０もしくはイントラ予測器２３の入力データPixelを復号する。
【００３４】
イントラ予測回路２３は、この加算回路２９で復号される現フレームＦｎの画像データPixelを用いて、イントラ符号化する場合の予測値を出力する。動き補償回路２４は、加算回路２９で復号されてバッファメモリ３１に保持された画像データPixelを参照フレームＦｎ−１の画像データとして入力し、この参照フレームＦｎ−１の画像データを用いて、インター符号化する場合の予測値を出力する。
【００３５】
マクロブロック処理エンジン１１Ａ〜１１Ｎは、Ｉピクチャーでは、イントラ予測の最適予測モードで画像データPixelを符号化するように、イントラ予測回路２３の予測値を選択的に減算回路２２に出力する。またＩピクチャー以外では、イントラ予測の最適予測モードとインター予測の最適予測モードのうちで、発生符号量が少ない側の最適予測モードで画像データPixelを符号化するように、これらイントラ予測回路２３、動き補償回路２４の予測値を減算回路２２に出力する。なおマクロブロック処理エンジン１１Ａ〜１１Ｎは、１つのマクロブロックを複数のブロックに分割して形成されるサブマクロブロックを処理単位とする予測モードを最適予測モードとして処理する場合もあるが、この場合、１つのマクロブロックを構成するサブマクロブロックを順次符号化処理し、その結果、最終的には、マクロブロック単位で画像データPixelを符号化処理する。
【００３６】
後処理部１３は、マクロブロック処理エンジン１１Ａ〜１１Ｎの出力データcoefを一定の順序で入力する。入力したデータcoefを可変長符号化回路（ＶＬＣ）で可変長符号化処理した後、量子化スケール、マクロブロックタイプ（mb type ）等の情報を付加して符号化データStreamを出力する。またマクロブロック処理エンジン１１Ａ〜１１Ｎから出力される画像データを、デブロッキングフィルタ（デブロッキング）３０でフィルタリング処理してブロック歪みを除去した後、バッファメモリ３１に参照フレームＦｎ−１として格納する。
【００３７】
図３は、各マクロブロック処理エンジン１１Ａ〜１１Ｎの処理手順を示すフローチャートである。各マクロブロック処理エンジン１１Ａ〜１１Ｎは、メインの中央処理ユニットの制御によって、この図３に示す処理手順を実行する。
【００３８】
すなわち各マクロブロック処理エンジン１１Ａ〜１１Ｎは、この処理手順を開始するとステップＳＰ１からステップＳＰ２に移り、前処理部１２から通知されるマクロブロックタイプに基づいて、インター予測、イントラ予測を判定する。ここでインター予測の場合、マクロブロック処理エンジン１１Ａ〜１１Ｎは、ステップＳＰ２からステップＳＰ３に移って動き補償回路２４を用いて予測値を計算するのに対し、イントラ予測する場合、ステップＳＰ２からステップＳＰ４に移ってイントラ予測回路２３を用いて予測値を計算する。
【００３９】
続いてマクロブロック処理エンジン１１Ａ〜１１Ｎは、ステップＳＰ５において減算回路２２で差分データを計算し、続くステップＳＰ６において、ディスクリートコサイン変換回路２５でこの差分データを係数データに変換する。また続くステップＳＰ７において、量子化回路２６で係数データを量子化処理し、処理結果を後処理部１３に出力する。またマクロブロック処理エンジン１１Ａ〜１１Ｎは、続くステップＳＰ８で、逆量子化処理を実行し、続くステップＳＰ９で逆ディスクリートコサイン変換処理を実行する。また続くステップＳＰ１０で逆ディスクリートコサイン変換処理結果に予測値を加算し、元の画像データを復号する。
【００４０】
マクロブロック処理エンジン１１Ａ〜１１Ｎは、この復号した画像データを後処理部１３に出力し、続くステップＳＰ１１で、他に処理するマクロブロックが存在するか否か判断する。ここで他に処理するマクロブロックが存在する場合、マクロブロック処理エンジン１１Ａ〜１１Ｎは、ステップＳＰ１１からステップＳＰ２に戻り、続くマクロブロックの処理を開始する。これに対して他に処理するマクロブロックが存在しない場合、マクロブロック処理エンジン１１Ａ〜１１Ｎは、ステップＳＰ１１からステップＳＰ１２に移ってこの処理手順を終了する。
【００４１】
図４は、イントラ予測の画像データに関するマクロブロック処理エンジン１１Ａ〜１１Ｎとバッファメモリ３１との関係を示すブロック図である。なおこの図４及び以下の説明では、マクロブロック処理エンジン１１Ａ〜１１Ｎの個数は３個であるとして説明する。ここで各マクロブロック処理エンジン１１Ａ〜１１Ｃは、バス（ＢＵＳ）を介してそれぞれ独立してバッファメモリ３１をアクセス可能に形成される。
【００４２】
バッファメモリ３１は、高速アクセス可能なＳＲＡＭ等のメモリによりキャッシュメモリ３２が形成され、またキャッシュメモリ３２に比して高速アクセス困難ではあるものの、キャッシュメモリ３２に比して消費電力の小さな小型のメモリでメインメモリ３３が形成される。またバッファメモリ３１は、マクロブロック処理エンジン１１Ａ〜１１Ｃでイントラ予測に使用する現フレームの画像データ、動き補償に使用する参照フレームの画像データ、前処理部１２から入力される処理対象の画像データをメインメモリ３３に格納して保持する。またメイン中央処理ユニットの制御により、マクロブロック処理エンジン１１Ａ〜１１Ｃが１つのマクロブロックを処理している間に、続いてマクロブロック処理エンジン１１Ａ〜１１Ｃが処理するマクロブロック、参照マクロブロックの画像データを、メインメモリ３３からロードして、キャッシュメモリ３２に保持する。なお参照マクロブロックの画像データのうちで、直前マクロブロックの画像データについては、対応するマクロブロック処理エンジン１１Ａ〜１１Ｃで処理の完了した画像データをメインメモリ３３に格納する際に、併せてキャッシュメモリ３２に格納する。
【００４３】
またバッファメモリ３１は、図５に示すように、ラスタ走査開始位置を基準にして各マクロブロックの位置を特定する水平方向及び垂直方向の２次元のアドレス（Ｘ，Ｙ）を各マクロブロックの画像データに設定して、マクロブロック単位で、現フレームの画像データ、前処理部１２で処理した画像データをキャッシュメモリ３２に保持する。これに対してバッファメモリ３１は、メモリ空間上の１次元のアドレスで各マクロブロックの画像データをメインメモリ３３に格納する。従ってバッファメモリ３１は、メインメモリ３３から画像データをロードしてキャッシュメモリ３２に格納する際には、キャッシュメモリ３２に格納する画像データの属するマクロブロックの２次元のアドレスを、メインメモリ３３の１次元のアドレスにアドレス変換してメインメモリ３３から画像データをロードする。
【００４４】
なおこのバッファメモリ３１のアクセス方法は、図４との対比により図６に示すように、メインメモリ３３のアドレス管理にも２次元のアドレスを適用して、メインメモリ３３からキャッシュメモリ３２にデータをロードする際のアドレス変換処理を省略するようにしてもよい。また図４との対比により図７に示すように、キャッシュメモリ３２のアドレス管理を１次元のアドレスで実行して、メインメモリ３３からキャッシュメモリ３２にデータをロードする際のアドレス変換処理を省略するようにしてもよい。但し、この場合は、バッファメモリ３１をアクセスする際に、２次元アドレスを１次元アドレスに変換するアドレス変換処理が必要になる。また図４との対比により図８に示すように、キャッシュメモリ３２側を２次元のアドレスでアドレス管理し、メインメモリ３３側を１次元のアドレスでアドレス管理するようにしてもよい。
【００４５】
図１は、これらマクロブロック処理エンジン１１Ａ〜１１Ｃのマクロブロックの処理順序の説明に供する略線図である。マクロブロック処理エンジン１１Ａ〜１１Ｃは、図示しないメイン中央処理ユニットの制御により、マクロブロック単位で画像データを順次処理する。ここでこのメイン中央処理ユニットは、１つのフレームを構成するスライスを、ラスタ走査開始端側から順次循環的に各マクロブロック処理エンジン１１Ａ〜１１Ｃに割り当てる。従ってこの図１に示す例では、垂直方向の先頭スライスＳＬ１が、第１のマクロブロック処理エンジン１１Ａに割り当てられ、続く２番目のスライスＳＬ２が、続く第２のマクロブロック処理エンジン１１Ｂに割り当てられる。また続く３番目のスライスＳＬ３が、第３のマクロブロック処理エンジン１１Ｃに割り当てられ、続く４番目のスライスＳＬ４が、第１のマクロブロック処理エンジン１１Ａに割り当てられる。
【００４６】
各マクロブロック処理エンジン１１Ａ〜１１Ｃは、同期して、それぞれに割り当てられた複数スライスのマクロブロックをラスタ走査の順序で順次処理する。またさらに各マクロブロック処理エンジン１１Ａ〜１１Ｃは、各マクロブロックの処理を開始する時点で、処理対象のマクロブロックの参照マクロブロックの処理が完了していて、処理中のマクロブロックが参照する画像データがバッファメモリ３１に格納されているように、直前のスライスにおけるマクロブロック処理エンジン１１Ａ〜１１Ｃの処理に対して、所定マクロブロック数だけ遅れたタイミングで、各スライスの処理を開始する。
【００４７】
すなわち図９に示すように、ＭＰＥＧ−１、２のイントラ予測では、図４３について上述したように、同一スライスの走査開始端側、直前の隣接マクロブロックだけが参照マクロブロックであることから、各マクロブロック処理エンジン１１Ａ〜１１Ｃでそれぞれ独立して各スライスを処理するようにして、何れのスライスを処理する場合でも、ラスタ走査方向に順次マクロブロックを処理するだけで、符号化処理を完了した現フレームの画像データを参照してマクロブロックを符号化処理することができる。従ってＭＰＥＧ−１、２では、何ら各スライスにおける処理のタイミングを考慮することなく、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃで同時並列的に１フレームの画像データを符号化処理することができる。
【００４８】
しかしながらこの実施例の符号化処理では、Ｈ．２６４／ＡＶＣの手法で画像データを符号化処理し、このＨ．２６４／ＡＶＣのイントラ予測では、図４６について上述したように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）だけでなく、直前スライスの隣接マクロブロック（Ｘ，Ｙ−１）、（Ｘ−１，Ｙ−１）、（Ｘ＋１，Ｙ−１）もマクロブロック（Ｘ，Ｙ）の参照マクロブロックである。従ってＭＰＥＧ−１、２の場合と同様に、何ら前後のスライスの処理を考慮することなく、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃで各スライスのマクロブロックを同時並列的に処理したのでは、各マクロブロック処理エンジン１１Ａ〜１１Ｃで、直前スライスにおける参照マクロブロックの処理完了を待機する待ち時間が発生する。従ってこの場合、効率良く、高速にマクロブロックを処理できなくなる。
【００４９】
そこで待ち時間を無くすためには、１つのスライスの処理を開始する場合に、直前スライスで参照マクロブロックの処理を完了していることが必要になる。
【００５０】
ここでＨ．２６４／ＡＶＣのイントラ予測では、この直前スライスの参照マクロブロックが、真上に位置するマクロブロック（Ｘ，Ｙ−１）と、この真上に位置するマクロブロックの前後のマクロブロック（Ｘ−１，Ｙ−１）、（Ｘ＋１，Ｙ−１）であることから、ラスタ走査開始端側から２つ以上のマクロブロックを直前スライスで処理していれば、続くスライスの処理を開始できることになる。
【００５１】
そこでこの実施例において、各マクロブロック処理エンジン１１Ａ〜１１Ｃは、同期して、それぞれに割り当てられた複数スライスのマクロブロックをラスタ走査順に処理するようにして、直前のスライスにおけるマクロブロック処理エンジン１１Ａ〜１１Ｃの処理に対して、所定マクロブロック数だけ遅れたタイミングで、各スライスの処理を開始し、同時並列的に画像データを符号化処理する。
【００５２】
またさらにこの実施例では、直前スライスにおける処理中マクロブロックの参照マクロブロックと、続くスライスにおける処理中マクロブロックの参照マクロブロックとが、一部重複するように、直前のスライスにおける処理に対して、続くスライスの処理開始時点が設定され、参照するマクロブロック処理結果の数が極力少なくなるように設定される。
【００５３】
より具体的には、各スライスの処理中のマクロブロックの水平方向の位置が、直前スライスの処理中のマクロブロックに対して、１つのマクロブロックを間に挟んで、走査開始端側の位置となるように、連続するスライスにおける処理対象マクロブロックの位置関係を設定して、各スライスのマクロブロックを順次処理する。従って図１の例では、矢印により参照関係を示すように、先頭スライスでは、左端から５番目のマクロブロックの処理結果を、同一スライスと続くスライスとで参照していることになり、続くスライスでは、左端から３番目のマクロブロックの処理結果を、同一スライスと続くスライスとで参照していることになる。
【００５４】
従って各マクロブロック処理エンジン１１Ａ〜１１Ｃは、図１０に示す順序で、順次、マクロブロックを処理する。すなわちマクロブロック処理エンジン１１Ａ〜１１Ｃは、第１のマクロブロック処理エンジン１１Ａが先頭スライスの処理を開始してマクロブロック（０，０）を処理する。また続いてこの第１のマクロブロック処理エンジン１１Ａが、マクロブロック（０，０）の処理結果を参照して、続くマクロブロック（１，０）を処理する。
【００５５】
この続くマクロブロック（１，０）の処理を完了すると、続くスライスでは、直前スライスで、ラスタ走査開始端側の２つのマクロブロックの処理が完了したことにより、第２のマクロブロック処理エンジン１１Ｂが処理を開始する。すなわち続いて第１及び第２のマクロブロック処理エンジン１１Ａ及び１１Ｂが、それぞれマクロブロック（２，０）及び（０，１）を処理する。また続いて第１及び第２のマクロブロック処理エンジン１１Ａ及び１１Ｂが、それぞれマクロブロック（３，０）及び（１，１）を処理する。
【００５６】
ここでマクロブロック（１，１）の処理を完了すると、続くスライスでは、直前スライスで、ラスタ走査開始端側の２つのマクロブロックの処理が完了したことにより、第３のマクロブロック処理エンジン１１Ｃが処理を開始する。すなわち続いて第１、第２、第３のマクロブロック処理エンジン１１Ａ、１１Ｂ、１１Ｃが、それぞれマクロブロック（４，０）、（２，１）、（０，２）を処理する。また続いて第１、第２、第３のマクロブロック処理エンジン１１Ａ、１１Ｂ、１１Ｃが、それぞれマクロブロック（５，０）、（３，１）、（１，２）を処理する。
【００５７】
このようにしてマクロブロック処理エンジン１１Ａ〜１１Ｃで同時並列的にマクロブロックを処理する前提で、バッファメモリ３１は、復号した現フレームＦｎの画像データ、前処理部１２から入力される処理対象の画像データをメインメモリ３３に格納するようにして、マクロブロック処理エンジン１１Ａ〜１１Ｃの処理対象マクロブロックに応じて、処理対象マクロブロックの画像データ、参照マクロブロックの現フレームＦｎの画像データを逐次、メインメモリ３３からキャッシュメモリ３２にロードする。
【００５８】
すなわち図７の例では、第１のマクロブロック処理エンジン１１Ａが、先頭のマクロブロック（０，０）を処理する場合には、事前に前処理部１２から入力された対応するマクロブロック（０，０）の画像データをキャッシュメモリ３２にロードして保持する。また第１のマクロブロック処理エンジン１１Ａが、続くマクロブロック（１，０）を処理する場合、事前に前処理部１２から入力された対応するマクロブロック（１，０）の画像データと、直前で処理したマクロブロック（０，０）の現フレームＦｎの画像データとをキャッシュメモリ３２にロードして保持する。
【００５９】
また続いて第２のマクロブロック処理エンジン１１Ｂが処理を開始すると、事前に第１及び第２のマクロブロック処理エンジン１１Ａ、１１Ｂで処理するマクロブロック（２，０）、（０，１）の画像データと、参照マクロブロック（０，０）、（１，０）の現フレームＦｎの画像データとをキャッシュメモリ３２にロードして保持する。また続いて第１及び第２のマクロブロック処理エンジン１１Ａ、１１Ｂの処理対象であるマクロブロック（３，０）、（１，１）の画像データと、参照マクロブロック（０，０）、（１，０）、（２，０）、（０，１）の現フレームＦｎの画像データとをキャッシュメモリ３２にロードして保持する。また続くマクロブロックの処理で参照する必要の無くなったデータについては、キャッシュメモリ３２から破棄する。
【００６０】
キャッシュメモリ３２は、この図１を用いて説明したマクロブロック処理エンジン１１Ａ〜１１Ｃの処理に対応可能に、必要最小限度のメモリ容量で構成される。ここで図１１に示すように、３つのマクロブロック処理エンジン１１Ａ〜１１Ｃでそれぞれマクロブロックを処理する場合、各マクロブロック処理エンジン１１Ａ〜１１Ｃでは、それぞれ最大、４つの参照マクロブロックの何れかを使用してマクロブロックを処理することになる（図１１（Ａ））。従って図１１（Ｂ）に示すように、単純に計算すれば、１つのマクロブロックの画像データ量×（処理対象マクロブロック数（１）＋最大の参照マクロブロック数（４））×マクロブロック処理エンジン１１Ａ〜１１Ｃの数で求められる容量Ｍがキャッシュメモリ３２に最低限必要になる。しかしながらこの実施例では、処理中のスライスイと直前スライスとで、参照マクロブロックが重複するように設定されることから、この容量Ｍから重複するマクロブロック数に対応する容量Ｎを減じた容量（Ｍ−Ｎ）がキャッシュメモリ３２に最低限必要になる。
【００６１】
従ってキャッシュメモリ３２の容量は、この必要最小限度の容量（Ｍ−Ｎ）に設定され、処理対象のスライスと直前スライスとで参照マクロブロックが重複するように設定しない場合に比して、容量が低減される。
【００６２】
図１２は、図２との対比により、本発明の実施例１の映像機器に適用されるデコーダを示すブロック図である。このデコーダ４０は、図２について上述したエンコーダ１０を構成する複数の中央処理ユニットで実行するプログラムが、エンコーダ用のプログラムからデコーダ用のプログラムに入れ換えられて構成される。デコーダ４０は、図２のエンコーダ１０で生成された符号化データStreamから画像データPixelを復号化する。
【００６３】
ここでデコーダ４０は、各中央処理ユニットによって、それぞれマクロブロックを処理するマクロブロック処理エンジン（ＭＢ処理）４１Ａ〜４１Ｎの機能ブロックが形成される。またデコーダ４０は、全体の動作を制御するメインの中央処理ユニットによって、前処理部（ＶＬＤ）４２、後処理部（デブロッキング）４３の機能ブロックが形成される。
【００６４】
ここで前処理部４２は、マクロブロック処理エンジン４１Ａ〜４１Ｎで処理する符号化データStreamを事前にまとめてフレーム単位で処理する機能ブロックである。具体的に、前処理部４２は、エンコーダ１０の後処理部１３に対応する構成であり、後処理部１３より出力された符号化データStreamを可変長復号化処理してマクロブロック処理エンジン４１Ａ〜４１Ｎの入力データcoefを復号する。
【００６５】
マクロブロック処理エンジン４１Ａ〜４１Ｎは、エンコーダ１０のマクロブロック処理エンジン１１Ａ〜１１Ｎに対応する構成であり、前処理部４２の出力データcoefをそれぞれマクロブロック単位で処理して画像データPixelを出力する並列処理可能な機能ブロックである。
【００６６】
すなわちマクロブロック処理エンジン４１Ａ〜４１Ｎは、マクロブロック単位でバッファメモリ３１から前処理部４２の出力データcoefを逆量子化回路（Ｑ-1）５１に入力する。ここで逆量子化回路５１は、符号化データStreamに設定された量子化スケールで前処理部４２の出力データcoefを逆量子化処理し、逆ディスクリートコサイン変換回路５２に入力する。逆ディスクリートコサイン変換回路（ＩＤＣＴ）５２は、逆量子化回路５１の出力データを逆ディスクリートコサイン変換処理する。加算回路５３は、この復号した差分データに逆イントラ予測回路５４又は動き予測補償回路５５で生成した逆予測値を加算し、画像データPixelを復号する。
【００６７】
逆イントラ予測回路５４は、この加算回路５３で復号される現フレームＦｎの画像データPixelを用いて、イントラ予測の逆予測値を出力する。動き補償回路５５は、加算回路５３で復号される画像データPixelをバッファメモリ３１を介して参照フレームＦｎ−１の画像データとして入力し、この画像データを用いて、逆インター予測の予測値を出力する。
【００６８】
後処理部４３は、マクロブロック処理エンジン４１Ａ〜４１Ｎの出力データPixelをデブロックフィルタリング処理してブロック歪みを除去する。またこのブロック歪みを除去した画像データPixelを出力すると共に参照フレームとしてバッファメモリ３１に格納する。
【００６９】
図１３は、各マクロブロック処理エンジン４１Ａ〜４１Ｎの処理手順を示すフローチャートである。各マクロブロック処理エンジン４１Ａ〜４１Ｎは、メインの中央処理ユニットの制御によって、この図１３に示す処理手順を実行する。
【００７０】
すなわち各マクロブロック処理エンジン４１Ａ〜４１Ｎは、この処理手順を開始するとステップＳＰ２１からステップＳＰ２２に移り、前処理部４２から通知されるマクロブロックタイプに基づいて、逆インター予測、逆イントラ予測を判定する。ここで逆インター予測の場合、マクロブロック処理エンジン４１Ａ〜４１Ｎは、ステップＳＰ２２からステップＳＰ２３に移って動き補償回路５５を用いて逆予測値を計算するのに対し、逆イントラ予測する場合、ステップＳＰ２２からステップＳＰ２４に移って逆イントラ予測回路５４を用いて逆予測値を計算する。
【００７１】
続いてマクロブロック処理エンジン４１Ａ〜４１Ｎは、ステップＳＰ２５において前処理部４２から入力される符号化データStream を逆量子化処理し、続くステップＳＰ２６で逆ディスクリートコサイン変換処理する。また続くステップＳＰ２７で逆ディスクリートコサイン変換処理結果に逆予測値を加算し、元の画像データPixel を復号する。マクロブロック処理エンジン４１Ａ〜４１Ｎは、この復号した画像データを後処理部４３に出力し、続くステップＳＰ２８で、他に処理するマクロブロックが存在するか否か判断する。ここで他に処理するマクロブロックが存在する場合、マクロブロック処理エンジン４１Ａ〜４１Ｎは、ステップＳＰ２８からステップＳＰ２２に戻り、続くマクロブロックの処理を開始する。これに対して他に処理するマクロブロックが存在しない場合、マクロブロック処理エンジン４１Ａ〜４１Ｎは、ステップＳＰ２８からステップＳＰ２９に移ってこの処理手順を終了する。
【００７２】
これらマクロブロック処理エンジン４１Ａ〜４１Ｎは、エンコーダ１０のマクロブロック処理エンジン１１Ａ〜１１Ｎと同様に、直前スライスで処理中のマクロブロックに対して、各スライスで処理中のマクロブロックが、水平方向に１つのマクロブロックを間に挟んで走査開始端側となるように、直前スライスに対して各スライスの処理を遅れて開始し、処理中のスライスと直前スライスとで一部参照マクロブロックが重複するようにして、連続するスライスを同時並列的に処理する。
【００７３】
またバッファメモリ３１は、エンコーダ１０の場合と同様に、各マクロブロック処理エンジン４１Ａ〜４１Ｎの処理対象マクロブロック、参照マクロブロックの画像データをメインメモリ３３からキャッシングしてキャッシュメモリ３２に保持し、各マクロブロック処理エンジン４１Ａ〜４１Ｎからのアクセスによりキャッシュメモリ３２に保持した画像データを出力する。
【００７４】
（２）実施例の動作
以上の構成において、これら実施例の映像機器では、例えばチューナー、光ディスク装置等から出力される画像データPixelが、エンコーダ１０（図２）で符号化処理されて符号化データStreamが生成され、この符号化データStreamが記録媒体に記録され、また伝送路に出力される。またこれとは逆に、記録媒体から再生された符号化データStream、伝送路から入力される符号化データStreamがデコーダ４０（図１２）で復号化されて画像データPixel が生成され、この画像データPixelがモニタ装置等に出力される。
【００７５】
この映像機器では、このエンコーダ１０、デコーダ４０が、複数の中央処理ユニットを有するいわゆるマルチコアプロセッサに対応するプログラムをロードして形成される。またこのプログラムによって、エンコーダ１０、デコーダ４０は、前処理、各マクロブロックの処理、後処理で画像データPixel、符号化データStreamをパイプライン処理するように形成される。
【００７６】
すなわちエンコーダ１０において（図２）、順次入力される画像データPixelは、前処理部１２で前処理された後、続く複数のマクロブロック処理エンジン１１Ａ〜１１Ｎで差分データが生成されて直交変換処理、量子化処理され、続く後処理部１３で符号化データStreamに変換される（図２）。またデコーダ４０において（図１２）、符号化データStreamは、前処理部４２で可変長復号処理され、続く複数のマクロブロック処理エンジン４１Ａ〜４１Ｎで逆量子化処理、逆直交変換処理等されて画像データPixelに変換され、続く後処理部４３でフィルタリング処理される（図１２）。
【００７７】
この前処理、各マクロブロックの処理、後処理のパイプライン処理により、エンコーダ１０、デコーダ４０では、１つの演算処理手段で順次画像データを処理する場合に比して、符号化処理、復号化処理が高速度化される。
【００７８】
しかしながら単なるこれら処理のパイプライン処理では、何れかの処理で待ち時間が発生して無駄に電力を消費することになる。そこでエンコーダ１０及びデコーダ４０では、これらのパイプライン処理する処理のうちで、最も負荷の大きな処理であり、他のマクロブロックを参照する処理である各マクロブロックの処理に、複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎが割り当てられ、これら複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎで同時並列的に順次マクロブロックを処理する（図４及び図５）。
【００７９】
また画像データを一時保持するバッファメモリ３１をキャッシュメモリ３２とメインメモリ３３とで構成してキャッシング可能とし、これら複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎで処理に必要な画像データをキャッシングして処理速度を一段と向上する（図４及び図５）。
【００８０】
しかしながらこれらマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎの処理では、符号化、復号化処理を完了した参照マクロブロックを参照して各マクロブロックを処理しており、この参照マクロブロックが、処理対象マクロブロックと同一スライスの直前に存在する。そこでエンコーダ１０、デコーダ４０では、ラスタ走査の開始端側から順次循環的に各マクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎに処理対象のスライスが割り当てられ、各マクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎでそれぞれ処理対象スライスのマクロブロックを順次処理する。
【００８１】
しかしながらさらにマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎの処理では、参照マクロブロックが直前スライスにも存在する。従ってＭＰＥＧ−１、２のように（図９）、単に各スライスをこれら複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎにそれぞれ割り当てて処理したのでは、これら複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎで、直前スライスにおける参照マクロブロックの処理完了を待機する待ち時間が発生することになり、高速度でデータ処理できなくなる。
【００８２】
そこでエンコーダ１０、デコーダ４０では、処理対象スライスの各マクロブロックを処理する際に、直前スライスに存在する対応する参照マクロブロックの処理を完了しているように、直前スライスに対して各スライスの処理開始のタイミングが遅延するように設定され、その結果、これら複数のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎで同時並列的に各マクロブロックを処理することが可能となる（図１）。
【００８３】
またバッファメモリ３１を用いたキャッシングでは、各マクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎの処理対象マクロブロックの画像データ、参照マクロブロックの画像データを処理対象に設定し、キャッシュメモリ３２の容量の増大を防止しつつ処理速度を向上する（図１０）。
【００８４】
しかしながら単に処理対象マクロブロックの画像データと、参照マクロブロックの画像データとをキャッシュメモリ３２に保持してキャッシングする場合、結局、処理対象マクロブロック数（１）と参照マクロブロック数との加算値に、マクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎの数を乗算した数に対応する容量が、キャッシュメモリ３２に必要となる（図１１（Ａ）及び（Ｂ））。
【００８５】
そこでエンコーダ１０、デコーダ４０では、さらに直前スライスにおける処理中のマクロブロックの参照マクロブロックの一部と、続くスライスにおける処理中のマクロブロックの参照マクロブロックの一部とが重複するように、より具体的には、水平方向に見たときに、直前スライスの処理中のマクロブロックに対して、処理対象スライスの処理中のマクロブロックが、１つのマクロブロックを間に挟んでラスタ走査開始端となるように設定して、各スライスのマクロブロックを処理する（図１）。
【００８６】
その結果、エンコーダ１０、デコーダ４０では、この参照マクロブロックが重複した分だけ、単に処理対象マクロブロックの画像データと、参照マクロブロックの画像データとをキャッシュメモリ３２に保持してキャッシングする場合に比して、キャッシュメモリ３２の容量を低減することができ、電力消費を低減し、全体形状を小型化することができる。
【００８７】
（３）実施例の効果
以上の構成によれば、複数のマクロブロック処理エンジンにそれぞれ順次循環的にスライスを割り当てて、これら複数の演算処理手段で同時並列的に画像データを符号化処理、復号化処理するようにして、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するように、各スライスの処理開始のタイミングを設定することにより、複数の演算処理手段で画像データを同時並列的に処理して符号化処理、復号化処理する構成において、キャッシュメモリの容量を低減することができる。従って、全体の消費電力を低減し、構成を簡略化、小型化することができる。
【００８８】
また１つの演算処理手段が処理するマクロブロック数である値１と最大の参照マクロブロック数との加算値に、演算処理手段数を乗算した値から、重複する参照マクロブロック数を減じた数に対応する容量に、キャッシュメモリの容量を設定したことにより、キャッシュメモリの容量を必要最小限度に設定することができる。
【実施例２】
【００８９】
図１４は、図４との対比により本発明の実施例２の映像機器におけるバッファメモリの構成を示す略線図である。この実施例では、キャッシュメモリ３２に格納した各マクロブロックのデータに共有フラグを設定し、このフラグで複数の処理対象マクロブロックで重複する参照マクロブロックを識別する。またこのフラグが設定された参照マクロブロックは、マクロブロック処理エンジン１１Ａ〜１１Ｃ、４１Ａ〜４１Ｃからの競合するアクセスを調停する。
【００９０】
なおこのフラグの設定は、マクロブロック処理エンジン１１Ａ〜１１Ｃ、４１Ａ〜４１Ｃで実行してもよく、別途フラグを管理するスケジューラで行っても良い。この実施例のエンコーダ、デコーダは、このフラグに関する構成が異なる点を除いて、実施例１と同一に構成される。
【００９１】
この実施例のようにフラグを設定して複数の演算処理手段からのアクセスを制御するようにしても、実施例１と同様の効果を得ることができる。
【実施例３】
【００９２】
図１５及び図１６は、図１及び図１１との対比により、本発明の実施例３の映像機器におけるマクロブロックの処理の説明に供する略線図である。この実施例では、実施例１で上述した後処理部１３を、さらに複数の後処理用マクロブロック処理エンジン４３Ａ、４３Ｂ、４３Ｃで構成する。この実施例のエンコーダ、デコーダは、この後処理部１３が複数の後処理用マクロブロック処理エンジン４３Ａ、４３Ｂ、４３Ｃで構成されている点を除いて、実施例１のエンコーダ、デコーダと同一に構成される。
【００９３】
ここで各後処理用マクロブロック処理エンジン４３Ａ、４３Ｂ、４３Ｃは、実施例１のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎと同様に、順次循環的にスライスが割り当てられ、それぞれに割り当てられた複数スライスをラスタ走査の順序で順次処理する。またそれぞれキャッシュメモリを用いてデブロックフィルタリング処理を実行する。また各スライスでは、直前スライスの参照マクロブロックと処理中のマクロブロックの参照マクロブロックとが一部重複するように、走査開始のタイミングが設定される。
【００９４】
ここでＨ．２６４／ＡＶＣのデブロッキングフィルタの処理では、図４８について上述したように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ，Ｙ−１）又は（Ｘ＋１，Ｙ−１）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。
【００９５】
従ってこの実施例では、水平方向に見たとき、直前スライスで処理中のマクロブロックに対して、各スライスで処理中のマクロブロックが、ラスタ走査開始端側に隣接するマクロブロックとなるように設定される。従って各マクロブロックでは、真上の参照マクロブロックが、直前スライスの参照マクロブロックと重複することになり、この実施例では、この重複した参照マクロブロックの分、キャッシュメモリの容量を低減して複数の演算処理部でマクロブロックを同時並列的に処理する。
【００９６】
この実施例によれば、後処理のフィルタリング処理においても、複数の演算処理手段で同時並列的に処理するようにして、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するように設定することにより、キャッシュメモリの容量を低減して、一段と高速度に画像データを処理することができる。
【実施例４】
【００９７】
図１７及び図１８は、図１及び図１１との対比により、本発明の実施例４の映像機器におけるマクロブロックの処理の説明に供する略線図である。この実施例では、ＭＰＥＧ−４で画像データを符号化、復号化する。この実施例のエンコーダ、デコーダは、フォーマットに関する構成を除いて、実施例１のエンコーダ、デコーダと同一に構成される。
【００９８】
ここでＭＰＥＧ−４のイントラ予測では、図４４について上述したように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定される。
【００９９】
従ってこの実施例では、各マクロブロック処理エンジンは、実施例１のマクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎと同様に、順次循環的にスライスが割り当てられ、それぞれに割り当てられた複数スライスをラスタ走査の順序で順次処理する。またそれぞれキャッシュメモリを用いてマクロブロックを処理するようにして、各スライスでは、直前スライスの参照マクロブロックと処理中のマクロブロックの参照マクロブロックとが一部重複するように、走査開始のタイミングが設定される。
【０１００】
より具体的には、水平方向に見たとき、直前スライスの処理中のマクロブロックに対して、各スライスの処理中のマクロブロックが、ラスタ走査開始端側に隣接するマクロブロックとなるように設定される。従って各マクロブロックでは、真上の参照マクロブロックが、直前スライスの参照マクロブロックと重複することになり、この実施例では、この重複した参照マクロブロックの分、キャッシュメモリの容量を低減して複数の演算処理部でマクロブロックを同時並列的に処理する。
【０１０１】
この実施例によれば、ＭＰＥＧ−４の処理に適用しても、実施例１と同様の効果を得ることができる。
【実施例５】
【０１０２】
図１９及び図２０は、図１及び図１１との対比により、本発明の実施例５の映像機器におけるマクロブロックの処理の説明に供する略線図である。この実施例５では、実施例４のＭＰＥＧ−４のエンコーダ、デコーダにおいて、前処理部１２を、さらに複数の前処理用マクロブロック処理エンジン１２Ａ、１２Ｂ、１２Ｃで構成する。この実施例のエンコーダ、デコーダは、この前処理部１２が複数の前処理用マクロブロック処理エンジン１２Ａ、１２Ｂ、１２Ｃで構成されている点を除いて、実施例４のエンコーダ、デコーダと同一に構成される。
【０１０３】
ここで各前処理用マクロブロック処理エンジン１２Ａ、１２Ｂ、１２Ｃは、マクロブロック処理エンジン１１Ａ〜１１Ｎ、４１Ａ〜４１Ｎと同様に、順次循環的にスライスが割り当てられ、それぞれに割り当てられた複数スライスをラスタ走査の順序で順次処理する。またそれぞれキャッシュメモリを用いて動きベクトル予測の処理を実行する。また各スライスでは、直前スライスの参照マクロブロックと処理中のマクロブロックの参照マクロブロックが一部重複するように、走査開始のタイミングが設定される。
【０１０４】
ここでＭＰＥＧ−４の動きベクトル予測の処理では、図４５について上述したように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）、この真上の隣接マクロブロック（Ｘ，Ｙ−１）と同一スライスの走査終了端側の隣接マクロブロック（Ｘ＋１，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ−１，Ｙ）、（Ｘ，Ｙ−１）又は（Ｘ＋１，Ｙ−１）の動きベクトルを参照して、マクロブロック（Ｘ，Ｙ）の動きベクトルを予測している。
【０１０５】
従ってこの実施例において、各前処理用マクロブロック処理エンジンは、実施例１のマクロブロック処理エンジン１１Ａ〜１１Ｃ、４１Ａ〜４１Ｎと同様に、水平方向に見たとき、直前スライスの処理中のマクロブロックに対して、１つのマクロブロックを間に挟んで、各スライスの処理中のマクロブロックが、ラスタ走査開始端側のマクロブロックとなるように設定される。従って各マクロブロックでは、真上の参照マクロブロックに続く参照マクロブロックが、直前スライスの参照マクロブロックと重複することになり、この実施例では、この重複した参照マクロブロックの分、キャッシュメモリの容量を低減して複数の演算処理部で動きベクトル予測の処理を同時並列的に処理する。
【０１０６】
この実施例によれば、前処理の動きベクトル予測においても、複数の演算処理手段で同時並列的に処理するようにして、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するように設定することにより、キャッシュメモリの容量を低減して、一段と高速度に画像データを処理することができる。
【実施例６】
【０１０７】
図２１は、図４との対比により、本発明の実施例６のエンコーダの要部を示すブロック図である。この実施例では、それぞれ個別のマルチコアプロセッサで構成された２系統のエンコーダが設けられる。また各エンコーダは、それぞれ実施例１について上述したと同様に、前処理部１２、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃ、後処理部１３が設けられる。この実施例では、この２系統でバッファメモリ３１を共用して、ビットレートが異なる２系統の符号化データを同時並列的に生成する。なおこの図２１において、１系統のマクロブロック処理エンジンを符号１１ＡＡ〜１１ＡＣで示し、残る１系統のマクロブロック処理エンジンを符号１１ＢＡ〜１１ＢＣで示す。
【０１０８】
ここで図５との対比により図２２に示すように、バッファメモリ３１は、実施例１について上述した２次元のアドレス（Ｘ，Ｙ）に、さらに処理する系統を特定する１次元のアドレスが付加された３次元のアドレス（Ｘ，Ｙ，Ｚ）を用いたアドレス管理で、各マクロブロックの画像データを管理する。従ってメインメモリ３３をアクセスする場合、この実施例では、３次元のアドレス（Ｘ，Ｙ，Ｚ）を１次元のアドレスにアドレス変換する。
【０１０９】
各系統のマクロブロック処理エンジン１１ＡＡ〜１１ＡＣ、１１ＢＡ〜１１ＢＣは、図２３〜図２６に示すように、それぞれ各系統内では、実施例１について上述した各マクロブロック処理エンジン１１Ａ〜１１Ｃと同様に、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するようにして、それぞれに割り当てられた複数のスライスを同時並列的に処理する。また各系統の前処理部、後処理部にあっても、それぞれの系統のマクロブロック処理エンジン１１ＡＡ〜１１ＡＣ、１１ＢＡ〜１１ＢＣの処理に対応して、実施例１について上述したと同様に順次画像データを処理する。
【０１１０】
この実施例では、複数系統の処理で処理する場合に適用しても、実施例１と同様の効果を得ることができる。
【実施例７】
【０１１１】
図２７は、図２１との対比により、本発明の実施例７のエンコーダ、デコーダの要部を示すブロック図である。この実施例において、エンコーダ、デコーダは、それぞれ個別のマルチコアプロセッサで構成される。ここでエンコーダは、実施例１について上述したと同様に、前処理部１２、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃ、後処理部１３が設けられる。これに対してデコーダは、実施例１について上述したと同様に、前処理部４２、複数のマクロブロック処理エンジン４１Ａ〜４１Ｃ、後処理部４３が設けられ、この後処理部４３が複数の後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃで形成される。この実施例では、このエンコーダのマクロブロック処理エンジン１１Ａ〜１１Ｃと、デコーダの後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃとでバッファメモリ３１を共用して、Ｈ.２６４／ＡＶＣの符号化データを復号し、また別途入力される画像データをＨ.２６４／ＡＶＣで符号化処理する。
【０１１２】
図２３〜図２６との対比により図２８〜図３１に示すように、マクロブロック処理エンジン１１Ａ〜１１Ｃは、上述したと同様に、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するようにして、それぞれに割り当てられた複数のスライスを同時並列的に処理する。また後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃでも、上述したと同様に、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するようにして、それぞれに割り当てられた複数のスライスを同時並列的に処理する。
【０１１３】
この実施例では、エンコーダとデコーダとの複数系統の処理で処理する場合に適用しても、実施例１と同様の効果を得ることができる。
【実施例８】
【０１１４】
この実施例では、それぞれ個別のマルチコアプロセッサで構成された２系統のエンコーダが設けられる。また各エンコーダは、それぞれ実施例１について上述したと同様に、前処理部１２、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃ、後処理部１３が設けられる。またさらに前処理部１２は、それぞれ複数の前処理用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣで形成される。この実施例では、この２系統の前処理用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣでバッファメモリ３１を共用して、Ｈ.２６４／ＡＶＣの前処理における動きベクトル予測の処理を実行し、２系統の符号化データを出力する。
【０１１５】
図３２及び図３３は、図２８〜図３１との対比により、これら２系統の前処理用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣの動作の説明に供する略線図である。この実施例でも、各系統の前処理用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣは、それぞれ上述したと同様に、各スライスにおける処理中のマクロブロックの参照マクロブロックが、直前スライスにおける処理中のマクロブロックの参照マクロブロックと一部重複するようにして、それぞれに割り当てられた複数のスライスを同時並列的に処理する。
【０１１６】
この実施例によれば、２系統のエンコーダにおける動きベクトル予測に本発明を適用しても、実施例１と同様の効果を得ることができる。
【実施例９】
【０１１７】
図３４は、図２１との対比により、本発明の実施例９の映像機器におけるバッファメモリの構成を示す略線図である。この実施例では、図４との対比により図１４について上述したと同様に、キャッシュメモリ３２に格納した各マクロブロックのデータに共有フラグを設定し、このフラグで複数の処理中のマクロブロックで重複する参照マクロブロックを識別する。またこのフラグを参考にして、複数のマクロブロック処理エンジンからのアクセスを調停する。
【０１１８】
この実施例のように複数系統で処理する場合に、複数の演算処理手段からのアクセスを制御するようにしても、実施例１と同様の効果を得ることができる。
【実施例１０】
【０１１９】
この実施例では、それぞれ個別のマルチコアプロセッサで構成されたエンコーダ、デコーダが設けられる。ここでエンコーダは、実施例１について上述したと同様に、前処理部１２、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃ、後処理部１３が設けられる。また前処理部が、複数の前処理用マクロブロック処理エンジン１２Ａ〜１２Ｃで形成される。これに対してデコーダは、実施例１について上述したと同様に、前処理部４２、複数のマクロブロック処理エンジン４１Ａ〜４１Ｃ、後処理部４３が設けられ、この後処理部４３が複数の後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃで形成される。この実施例では、このエンコーダのマクロブロック処理エンジン１２Ａ〜１２Ｃと、デコーダの後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃとバッファメモリ３１を共用して、Ｈ.２６４／ＡＶＣの符号化データを復号し、この復号化した画像データをＭＰＥＧ−４でエンコードする。
【０１２０】
またこれらエンコーダ及びデコーダにおいて、前処理用マクロブロック処理エンジン１２Ａ〜１２Ｃ、後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃは、それぞれ上述した実施例と同様に、各スライスの処理中マクロブロックの参照マクロブロックと、直前スライスの処理中マクロブロックの参照マクロブロックとが一部重複するように、各マクロブロック処理のタイミングが設定されて担当のスライスを同時並列的に処理する。
【０１２１】
さらにこの実施例では、図３５及び図３６に示すように、エンコーダとデコーダとを同期させて動作させると共に、復号化した処理結果をキャッシュメモリ３２に保持するようにして、符号Ａ、Ｂ、Ｃ、…で示すようにキャッシュメモリ３２に保持した直後の続くマクロブロックの処理周期で、このキャッシュメモリ３２に保持したデコーダの処理結果を処理する。
【０１２２】
この実施例では、デコードした画像データをエンコーダに入力するバッファメモリに、キャッシュメモリを利用したことにより、さらに全体のメモリ容量を低減することができる。
【実施例１１】
【０１２３】
図３７は、図２１との対比により、本発明の実施例１１のエンコーダ、デコーダの要部を示すブロック図である。ここでエンコーダは、実施例１について上述したと同様に、前処理部１２、複数のマクロブロック処理エンジン１１Ａ〜１１Ｃ、後処理部１３が設けられる。また前処理部１２が、それぞれ動きベクトルを検出する複数の動きベクトル検出用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、それぞれ動きベクトル予測の処理を実行する複数の動きベクトル予測用マクロブロック処理エンジン１２ＢＡ〜１２ＢＣとにより形成される。これに対してデコーダは、実施例１について上述したと同様に、前処理部４２、複数のマクロブロック処理エンジン４１Ａ〜４１Ｃ、後処理部４３が設けられ、この後処理部４３が複数の後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃで形成される。この実施例では、このエンコーダのマクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣと、デコーダの後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃとでバッファメモリ３１を共用して、Ｈ.２６４／ＡＶＣの符号化データを復号し、この復号化した画像データをＭＰＥＧ−４でエンコードする。
【０１２４】
またこれらエンコーダ及びデコーダにおいて、動きベクトル検出用マクロブロック処理エンジン１２ＡＡ〜１２ＡＣ、動きベクトル予測用マクロブロック処理エンジン１２ＢＡ〜１２ＢＣ、後処理用マクロブロック処理エンジン４３Ａ〜４３Ｃは、それぞれ上述した実施例と同様に、各スライスの処理中マクロブロックの参照マクロブロックが、直前スライスの処理中マクロブロックの参照マクロブロックと一部重複するように、各マクロブロック処理のタイミングが設定されて担当のスライスを同時並列的に処理する。
【０１２５】
さらにこの実施例では、図３８〜図４０に示すように、エンコーダとデコーダとを同期させて動作させると共に、復号化した処理結果をキャッシュメモリ３２に保持するようにして、符号Ａ〜Ｄで示すようにキャッシュメモリ３２に保持した直後の続くマクロブロックの処理周期で、このキャッシュメモリ３２に保持したデコーダの処理結果を順次続くエンコードの処理に渡す。
【０１２６】
この実施例のように、デコードとエンコードとの連続する３つの処理に適用しても、実施例９と同様の効果を得ることができる。
【実施例１２】
【０１２７】
なお上述の実施例においては、事前に設定された固定の機能ブロックで画像データを符号化、復号化する場合について述べたが、本発明はこれに限らず、処理する画像データのフォーマット、各処理の負荷等に応じて機能ブロックを動的に変更する場合にも広く適用することができる。なおこの場合、キャッシュメモリの容量が、１つのマクロブロックの参照マクロブロック数に値１を加算した加算値に、複数の演算処理部の数を乗算した後、一部重複する参照マクロブロックの数を減算した数のマクロブロック数に対応する容量となるように、各機能ブロックの演算処理部の数を設定することが必要になる。
【０１２８】
また上述の実施例においては、イントラ予測等の処理を複数の演算処理手段で同時並列的に実行する場合について述べたが、本発明はこれに限らず、併せて画像データをプリフィルタ処理する場合、ポストフィルタ処理等にも広く適用することができる。また動きベクトル、マクロブロックタイプ等の伝送にも適用するようにしてもよい。
【０１２９】
また上述の実施例においては、Ｈ.２６４／ＡＶＣ等により画像データを符号化処理、復号化処理する場合について述べたが、本発明はこれに限らず、これら以外の種々の符号化方法で符号化処理、復号化処理する場合に広く適用することができる。
【０１３０】
また上述の実施例においては、画像データを同時並列的に処理する複数の演算処理部を複数の中央処理ユニットで構成する場合について述べたが、本発明はこれに限らず、ソフトウェアにより画像データを同時並列的に処理する複数の演算処理部を構成する場合等にも広く適用することができる。なおこの場合、このソフトウェアのプログラムは、事前のインストールにより提供するようにしてもよく、光ディスク、磁気ディスク、メモリカード等の記録媒体に記録して提供するようにしてもよく、さらにはインターネット等のネットワークを介して提供するようにしてもよい。
【産業上の利用可能性】
【０１３１】
本発明は、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ（ITU-T Rec. H.264 ISO/IEC 14496-10 AVC ）規格に従ってビデオデータを符号化、復号化する場合に適用することができる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の実施例１のエンコーダにおけるマクロブロック処理エンジンの処理順序の説明に供する略線図である。
【図２】本発明の実施例１の映像機器に適用されるエンコーダを示すブロック図である。
【図３】図２のエンコーダの各マクロブロック処理エンジンの処理手順を示すフローチャートである。
【図４】イントラ予測用の画像データに関するマクロブロック処理エンジンとバッファメモリとの関係を示すブロック図である。
【図５】マクロブロックのアドレスを示す図表である。
【図６】図４の構成の他の例を示すブロック図である。
【図７】図６の例とは異なる図４の構成の他の例を示すブロック図である。
【図８】図６及び図７の例とは異なる図４の構成の他の例を示すブロック図である。
【図９】ＭＰＥＧ−１、２のイントラ予測の処理の説明に供する略線図である。
【図１０】図１の処理によるマクロブロックの処理を示す略線図である。
【図１１】キャッシュメモリの容量の説明に供する略線図である。
【図１２】本発明の実施例１の映像機器に適用されるデコーダを示すブロック図である。
【図１３】図１２のデコーダの各マクロブロック処理エンジンの処理手順を示すフローチャートである。
【図１４】本発明の実施例２の映像機器におけるバッファメモリの構成を示すブロック図である。
【図１５】本発明の実施例３の映像機器におけるマクロブロックの処理の説明に供する略線図である。
【図１６】図１５の構成におけるキャッシュメモリの容量の説明に供する略線図である。
【図１７】本発明の実施例４の映像機器におけるマクロブロックの処理の説明に供する略線図である。
【図１８】図１７の構成におけるキャッシュメモリの容量の説明に供する略線図である。
【図１９】本発明の実施例５の映像機器におけるマクロブロックの処理の説明に供する略線図である。
【図２０】図１９の構成におけるキャッシュメモリの容量の説明に供する略線図である。
【図２１】本発明の実施例６のエンコーダの要部を示すブロック図である。
【図２２】図２１の構成におけるマクロブロックのアドレスを示す図表である。
【図２３】図２１の構成におけるマクロブロックの処理を示す略線図である。
【図２４】図２３の続きを示す略線図である。
【図２５】図２３及び図２４の続きを示す略線図である。
【図２６】図２３〜図２５の続きを示す略線図である。
【図２７】本発明の実施例７のエンコーダ、デコーダの要部を示すブロック図である。
【図２８】図２７の構成におけるマクロブロックの処理を示す略線図である。
【図２９】図２８の続きを示す略線図である。
【図３０】図２８及び図２９の続きを示す略線図である。
【図３１】図２８〜図３０の続きを示す略線図である。
【図３２】本発明の実施例８のエンコーダにおける前処理用マクロブロック処理エンジンの動作の説明に供する略線図である。
【図３３】図３２の続きを示す略線図である。
【図３４】本発明の実施例９の映像機器におけるバッファメモリの構成を示すブロック図である。
【図３５】本発明の実施例１０のエンコーダにおける前処理用マクロブロック処理エンジンの動作の説明に供する略線図である。
【図３６】図３５の続きを示す略線図である。
【図３７】本発明の実施例１１のエンコーダ、デコーダの要部を示すブロック図である。
【図３８】図３７のエンコーダにおける前処理用マクロブロック処理エンジンの動作の説明に供する略線図である。
【図３９】図３８の続きを示す略線図である。
【図４０】図３９の続きを示す略線図である。
【図４１】マクロブロックの説明に供する略線図である。
【図４２】マクロブロックのアドレスの説明に供する略線図である。
【図４３】ＭＰＥＧ−１、２のイントラ予測における参照マクロブロックの説明に供する略線図である。
【図４４】ＭＰＥＧ−４のイントラ予測における参照マクロブロックの説明に供する略線図である。
【図４５】ＭＰＥＧ−４の動きベクトル予測における参照マクロブロックの説明に供する略線図である。
【図４６】Ｈ.２６４／ＡＶＣのイントラ予測における参照マクロブロックの説明に供する略線図である。
【図４７】ＭＰＥＧ−４の動きベクトル予測における参照マクロブロックの説明に供する略線図である。
【図４８】Ｈ２６４／ＡＶＣのデブロッキングフィルタの処理における参照マクロブロックの説明に供する略線図である。
【図４９】キャッシングの説明に供する略線図である。
【符号の説明】
【０１３３】
１……データ処理システム、２……キャッシュメモリ、３……メインメモリ、１０……エンコーダ、１１Ａ〜１１Ｃ、１１ＡＡ〜１１ＡＣ、１１ＢＡ〜１１ＢＣ、４１Ａ〜４１Ｃ……マクロブロック処理エンジン、１２……前処理部１２……後処理部、３１……バッファメモリ、３２……キャッシュメモリ、３３……メインメモリ、４０……デコーダ、４３Ａ〜４３Ｃ……後処理用マクロブロック処理エンジン、１２Ａ〜１２Ｃ、１２ＡＡ〜１２ＡＣ、１２ＢＡ〜１２ＢＣ……前処理用マクロブロック処理エンジン
【図１】
2007295423.tif 000003
【図２】
2007295423.tif 000004
【図３】
2007295423.tif 000005
【図４】
2007295423.tif 000006
【図５】
2007295423.tif 000007
【図６】
2007295423.tif 000008
【図７】
2007295423.tif 000009
【図８】
2007295423.tif 000010
【図９】
2007295423.tif 000011
【図１０】
2007295423.tif 000012
【図１１】
2007295423.tif 000013
【図１２】
2007295423.tif 000014
【図１３】
2007295423.tif 000015
【図１４】
2007295423.tif 000016
【図１５】
2007295423.tif 000017
【図１６】
2007295423.tif 000018
【図１７】
2007295423.tif 000019
【図１８】
2007295423.tif 000020
【図１９】
2007295423.tif 000021
【図２０】
2007295423.tif 000022
【図２１】
2007295423.tif 000023
【図２２】
2007295423.tif 000024
【図２３】
2007295423.tif 000025
【図２４】
2007295423.tif 000026
【図２５】
2007295423.tif 000027
【図２６】
2007295423.tif 000028
【図２７】
2007295423.tif 000029
【図２８】
2007295423.tif 000030
【図２９】
2007295423.tif 000031
【図３０】
2007295423.tif 000032
【図３１】
2007295423.tif 000033
【図３２】
2007295423.tif 000034
【図３３】
2007295423.tif 000035
【図３４】
2007295423.tif 000036
【図３５】
2007295423.tif 000037
【図３６】
2007295423.tif 000038
【図３７】
2007295423.tif 000039
【図３８】
2007295423.tif 000040
【図３９】
2007295423.tif 000041
【図４０】
2007295423.tif 000042
【図４１】
2007295423.tif 000043
【図４２】
2007295423.tif 000044
【図４３】
2007295423.tif 000045
【図４４】
2007295423.tif 000046
【図４５】
2007295423.tif 000047
【図４６】
2007295423.tif 000048
【図４７】
2007295423.tif 000049
【図４８】
2007295423.tif 000050
【図４９】
2007295423.tif 000051
【手続補正書】
【提出日】平成19年6月5日(2007.6.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
すなわち図４１にビデオ信号がいわゆる４：２：０の場合を例に取って示すように、この種の符号化処理では、輝度信号Ｙ及び色差信号Ｃｒ、Ｃｂをそれぞれ１６画素×１６画素及び８画素×８画素のマクロブロックに分割する。また輝度信号Ｙは、１つのマクロブロックを水平方向及び垂直方向にそれぞれ１／２分割した８画素×８画素のブロック毎に、ディスクリートコサイン変換処理し、色差信号Ｃｒ、Ｃｂは、マクロブロック毎に、ディスクリートコサイン変換処理する。Ｈ．２６４／ＡＶＣでは、更にそれぞれ１／２分割した４画素×４画素のブロックごとに直交変換処理や離散アダマール変換処理を行う。この種の符号化処理では、このディスクリートコサイン変換処理結果である各係数データを量子化処理、可変長符号化処理する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
またＨ２６４／ＡＶＣのデブロッキングフィルタの処理では、図４８に示すように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ，Ｙ−１）又は（Ｘ−１，Ｙ）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
すなわち図４９に示すように、演算処理手段を用いたデータ処理システム１では、高速アクセス可能なＳＲＡＭ等のメモリでキャッシュメモリ２が形成され、またキャッシュメモリ２に比して高速アクセス困難ではあるものの、キャッシュメモリ２に比して消費電力の小さなメモリでメインメモリ４が形成される。またデータ処理手段３の命令を含むデータをメインメモリ４に格納して保持し、このメインメモリ４に格納した命令、データの一部をキャッシュメモリ２にロードして保持する。なおキャッシュメモリ２には、各データのアドレスを管理するＴＡＧ情報が設定されて命令、データが格納される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
データ処理システム１において、データ処理手段３は、同一命令、データを再び使用する場合、矢印Ａで示すように、先ずキャッシュメモリ２をアクセスして所望する命令、データを検索し、目的の命令、データがキャッシュメモリ２に存在する場合には、キャッシュメモリ２に記録された命令、データを取り出して使用する。また目的の命令、データがキャッシュメモリ２に存在しない場合、矢印Ｂで示すように、メインメモリ４から目的の命令、データを取り出して使用し、またこの命令、データをキャッシュメモリ２に格納する。なおキャッシュメモリ２は、データ管理の高速度化を目的として、メインメモリ内にソフトウェア的に構成する場合もある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
ここでＨ．２６４／ＡＶＣのデブロッキングフィルタの処理では、図４８について上述したように、同一スライスの走査開始端側の隣接マクロブロック（Ｘ−１，Ｙ）、直前スライスの真上の隣接マクロブロック（Ｘ，Ｙ−１）がマクロブロック（Ｘ，Ｙ）の参照マクロブロックに設定され、これら参照マクロブロック（Ｘ，Ｙ−１）又は（Ｘ−１，Ｙ）の処理結果を参照して、マクロブロック（Ｘ，Ｙ）を処理している。