(57)【要約】【課題】本発明は、画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体に関し、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ規格に従ってビデオデータを符号化、復号化する場合に適用して、処理を完了した隣接マクロブロックを参照してマクロブロックを処理する方式において、複数のマクロブロックを同時並列的に処理して処理を高速度化する。【解決手段】本発明は、１つのマクロブロックの処理を完了する毎に、処理可能なマクロブロックを検出して処理することにより、複数の処理部で同時並列的に１フレームのマクロブロックを処理するようにして、処理可能なマクロブロックを処理中の１フレームで検出できなくなると、続くフレームから処理可能なマクロブロックを検出して処理する。【選択図】        図１
2007251865.tif 000002
【特許請求の範囲】
【請求項１】
所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理装置であって、
前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化する複数のマクロブロック処理部と、
前記マクロブロック処理部を管理する状態管理部とを有し、
前記状態管理部は、
前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出し、
前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理し、
前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する
ことを特徴とする画像データの処理装置。
【請求項２】
複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法であって、
前記複数のマクロブロック処理部は、
それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、
前記画像データの処理方法は、
前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、
前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、
前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する
ことを特徴とする画像データの処理方法。
【請求項３】
前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記処理中の１フレームのマクロブロックの処理の状況を記録した現フレームのテーブル、又は前記続く１フレームのマクロブロックの処理の状況を記録した次フレームのテーブルを更新するテーブル更新のステップを有し、
前記マクロブロック検出ステップは、
前記現フレームのテーブル、前記次フレームのテーブルの記録に基づいて、前記処理可能なマクロブロックを検出する
ことを特徴とする請求項２に記載の画像データの処理方法。
【請求項４】
前記所定の順序が、ラスタ走査の順序である
ことを特徴とする請求項２に記載の画像データの処理方法。
【請求項５】
複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法のプログラムであって、
前記複数のマクロブロック処理部は、
それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、
前記画像データの処理方法のプログラムは、
前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、
前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、
前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する
ことを特徴とする画像データの処理方法のプログラム。
【請求項６】
複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法のプログラムを記録した記録媒体であって、
前記複数のマクロブロック処理部は、
それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、
前記画像データの処理方法のプログラムは、
前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、
前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、
前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する
ことを特徴とする画像データの処理方法のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体に関し、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ（ITU-T Rec. H.264 ISO/IEC 14496-10 AVC ）規格に従ってビデオデータを符号化、復号化する場合に適用することができる。本発明は、１つのマクロブロックの処理を完了する毎に、処理可能なマクロブロックを検出して処理することにより、複数の処理部で同時並列的に１フレームのマクロブロックを処理するようにして、処理可能なマクロブロックを処理中の１フレームで検出できなくなると、続くフレームから処理可能なマクロブロックを検出して処理することにより、処理を完了した隣接マクロブロックを参照してマクロブロックを処理する方式において、複数のマクロブロックを同時並列的に処理して処理を高速度化する。
【背景技術】
【０００２】
従来、各種映像機器では、Ｈ．２６４／ＭＰＥＧ−４ＡＶＣ、ＷＭＶ９（Windows Media Video 9 ）、ＭＰＥＧ−４（ISO/IEC14496 Information Technology-Generic Coding of Audio-Visual Object ）等で動画像の画像データを符号化処理、復号化処理している。ここでこれらの符号化方法、復号化方法では、ラスタ走査の順序で、マクロブロックを順次処理している。なおマクロブロックは、符号化処理単位の基本のブロックであり、例えば輝度信号で１６画素×１６画素のブロックである。
【０００３】
ところで画像データの符号化処理、復号化処理を複数のプロセッサで実行すれば、処理を高速度化することができると考えられる。すなわち復号化処理の場合を例に取って図１７（Ａ）に示すように、複数の中央処理ユニット（ＣＰＵ：Central Processing Unit ）１Ａ〜１Ｄで１つのメモリ２をアクセスできるように構成し、このメモリ２に順次符号化データを入力して保持する。また第１の中央処理ユニット１Ａに、符号化データの可変長復号化処理（ＶＬＤ）を割り当て、第２の中央処理ユニット１Ｂに、予測符号を生成する処理（ＭＣ）を割り当てる。また第３の中央処理ユニット１Ｃに、可変長復号化処理したデータを画像データに復号する処理を割り当て、第４の中央処理ユニット１Ｄに第３の中央処理ユニット１Ｃで復号された画像データのデブロッキングフィルタリング処理（ＤＥＢＬＫ）を割り当てる。なおここで第３の中央処理ユニット１Ｃの処理は、具体的に、逆量子化処理、逆ディスクリートコサイン変換処理、予測符号との加算処理等である。
【０００４】
図１７（Ｂ１）〜（Ｂ４）に示すように、ラスタ走査の順序で順次マクロブロックをこれら中央処理ユニット１Ａ〜１Ｄでパイプライン処理すれば、一台の中央処理ユニットで復号化処理する場合に比して、処理を高速度化することができる。なおここでこの図１７（Ｂ１）〜（Ｂ４）では、数字１〜６で連続するマクロブロックを示す。すなわちこの場合、先頭のマクロブロック１は、第１、第２、第３、第４の中央処理ユニット１Ａ〜１Ｄで順次処理されて復号化処理され、この先頭のマクロブロック１を最後の中央処理ユニット１Ｄで処理している間、第３、第２、第１の中央処理ユニット１Ｃ、１Ｂ、１Ａでは、それぞれ続く２番目のマクロブロック２、３番目のマクロブロック３、４番目のマクロブロック４を事前に処理することができる。
【０００５】
しかしながらＭＰＥＧ−４等の符号化処理、復号化処理では、処理するマクロブロックによって、各処理の処理時間が変化することから、この図１７に示すようなパイプライン処理では、他の処理の完了を待機する待ち時間が各中央処理ユニット１Ａ〜１Ｄで発生する問題がある。なお図１７では、この待ち時間をハッチングで示す。従って各中央処理ユニット１Ａ〜１Ｄは、この待ち時間の間、無駄に電力を消費し、消費電力を増大させることになる。
【０００６】
この問題を解決する１つの方法として、例えば特開２０００−３００４７号公報に提案されているように、複数のマクロブロックを同時並列的に処理して、符号化処理、復号化処理を高速度化する方法が考えられる。
【０００７】
しかしながらＭＰＥＧ−４等では、図１８において矢印で参照関係を示すように、ラスタ走査の順序で符号化処理して、処理を完了している隣接マクロブロック（ｘ−１，ｙ−１）、（ｘ，ｙ−１）、（ｘ＋１，ｙ−１）、（ｘ−１，ｙ）の何れかを参照してマクロブロック（ｘ，ｙ）を符号化処理する予測モードが存在する。従ってＭＰＥＧ−４等では、結局、これらの隣接マクロブロック（ｘ−１，ｙ−１）、（ｘ，ｙ−１）、（ｘ＋１，ｙ−１）、（ｘ−１，ｙ）の符号化処理、復号化処理の完了を待って、マクロブロック（ｘ，ｙ）を符号化処理、復号化処理しなければならず、特開２０００−３００４７号公報に提案の手法を適用しても、処理を十分に高速度化できない問題があった。
【特許文献１】特開２０００−３００４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は以上の点を考慮してなされたもので、処理を完了した隣接マクロブロックを参照してマクロブロックを処理する方式において、複数のマクロブロックを同時並列的に処理して処理を高速度化することができる画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体を提案しようとするものである。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため請求項１の発明は、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理装置に適用して、前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化する複数のマクロブロック処理部と、前記マクロブロック処理部を管理する状態管理部とを有し、前記状態管理部は、前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出し、前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理し、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する。
【００１０】
また請求項２の発明は、複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法に適用して、前記複数のマクロブロック処理部は、それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、前記画像データの処理方法は、前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する。
【００１１】
また請求項５の発明は、複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法のプログラムに適用して、前記複数のマクロブロック処理部は、それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、前記画像データの処理方法のプログラムは、前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する。
【００１２】
また請求項６の発明は、複数のマクロブロック処理部を用いて、所定の順序でマクロブロックを順次処理した場合に処理を完了している隣接マクロブロックを参照して画像データを符号化又は復号化する画像データの処理方法のプログラムを記録した記録媒体に適用して、前記複数のマクロブロック処理部は、それぞれ前記処理を完了している隣接マクロブロックを参照して、前記マクロブロック単位で前記画像データを符号化又は復号化し、前記画像データの処理方法のプログラムは、前記マクロブロック処理部で未処理のマクロブロックにおける前記隣接マクロブロックの処理の状況を判定して、前記マクロブロック処理部で処理可能なマクロブロックを検出するマクロブロック検出ステップと、前記複数のマクロブロック処理部で１つの前記マクロブロックの処理を完了する毎に、前記マクロブロック検出ステップによって、処理中の１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームを同時並列的に処理する１フレームの同時並列処理ステップと、前記マクロブロック検出ステップによって、前記処理中の１フレームで前記処理可能なマクロブロックを検出できなくなると、前記マクロブロック検出ステップによって、続く１フレームで前記処理可能なマクロブロックを検出すると共に、該検出したマクロブロックの処理を前記マクロブロックの処理を完了した前記マクロブロック処理部に指示することにより、前記複数のマクロブロック処理部で前記処理中の１フレームと前記続く１フレームとを同時並列的に処理する２フレームの同時並列処理ステップとを有する。
【００１３】
請求項１、請求項２、請求項５、請求項６の構成によれば、画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム、画像データの処理方法のプログラムを記録した記録媒体に適用して、それぞれマクロブロック単位で処理可能な複数のマクロブロック処理部に、処理中の１フレームから処理可能なマクロブロックが順次検出されて割り当てられ、また処理中の１フレームから処理可能なマクロブロックを検出できない場合には、続く１フレームから処理可能なマクロブロックが検出されて割り当てられる。従って符号化処理を完了した隣接マクロブロックを参照してマクロブロックを符号化処理する方式においても、連続するフレームのマクロブロックは、これら複数のマクロブロック処理部で同時並列的に処理されることになり、符号化処理、復号化処理を高速度化することができる。
【発明の効果】
【００１４】
本発明によれば、処理を完了した隣接マクロブロックを参照してマクロブロックを処理する方式において、複数のマクロブロックを同時並列的に処理して処理を高速度化することができる。
【発明を実施するための最良の形態】
【００１５】
以下、適宜図面を参照しながら本発明の実施例を詳述する。
【実施例１】
【００１６】
（１）実施例の構成
図１は、本発明の実施例１の映像機器に適用されるエンコーダを示すブロック図である。この映像機器は、このエンコーダ１０で画像データを符号化処理して記録媒体に記録し、また伝送路に出力する。また後述するデコーダで記録媒体に記録した画像データ、伝送路から入力する符号化データを復号化処理する。
【００１７】
ここでエンコーダ１０は、複数の中央処理ユニットを有するいわゆるマルチコアプロセッサで形成され、図示しないバッファメモリに動画像の画像データpixelを順次入力する。エンコーダ１０は、これら複数の中央処理ユニットがそれぞれこのバッファメモリメモリをアクセスできるように構成される。エンコーダ１０は、これら複数の中央処理ユニットの演算処理によってこのバッファメモリに格納された画像データpixelをＨ．２６４／ＭＰＥＧ−４ＡＶＣの手法で符号化処理し、符号化データstreamを出力する。
【００１８】
エンコーダ１０は、各中央処理ユニットによって、それぞれマクロブロックを処理するマクロブロック処理エージェント（ＭＢ処理）１１Ａ〜１１Ｎの機能ブロックが形成される。またエンコーダ１０は、全体の動作を制御するメインの中央処理ユニットによって、前処理部（ＭＥ）１２、後処理部（ＶＬＣ）１３、状態管理部１４の機能ブロックが形成される。なおこのエンコーダ１０のプログラムは、この映像機器に事前にインストールされて提供されるものの、これに代えて光ディスク、磁気ディスク、メモリカード等の種々の記録媒体に記録して提供するようにしてもよく、またインターネット等のネットワークを介したダウンロードにより提供するようにしてもよい。
【００１９】
ここで前処理部１２は、マクロブロック処理エージェント１１Ａ〜１１Ｎで処理する画像データpixelを事前にまとめてフレーム単位で処理する機能ブロックである。具体的に、前処理部１２は、各マクロブロックの最適な予測モードを検出する。またさらにインター予測では、フレームメモリに格納された参照フレームに対して動きベクトルを検出する。またイントラ予測では、符号化処理を完了した現フレームＦｎの隣接マクロブロックに代えて、画像データpixelによる原画像の隣接マクロブロックを参照して最適な予測モードを検出する。
【００２０】
マクロブロック処理エージェント１１Ａ〜１１Ｎは、画像データpixelをそれぞれマクロブロック単位で処理する並列処理可能な機能ブロックである。マクロブロック処理エージェント１１Ａ〜１１Ｎは、前処理部１２で設定された最適予測モードに応じて予測ブロックを作成し、マクロブロックの画像データを符号化処理する。
【００２１】
すなわち図２に示すように、マクロブロック処理エージェント１１Ａ〜１１Ｎは、マクロブロック単位でバッファメモリから画像データpixelを減算回路２１に入力する。減算回路２１は、最適予測モードに応じて動作を切り換え、イントラ符号化する場合には、イントラ予測回路２２で生成される予測値と画像データpixelとの差分データを生成し、インター符号化する場合には、動き予測補償回路２３で生成される予測値と画像データpixelとの差分データを生成する。
【００２２】
ディスクリートコサイン変換回路（ＤＣＴ）２４は、減算回路２１から出力される差分データを直交変換処理して係数データを出力する。量子化回路（Ｑ）２５は、所定の量子化スケールでこの係数データを量子化して出力する。マクロブロック処理エージェント１１Ａ〜１１Ｎは、この量子化回路２５の出力データcoefを後処理部１３に出力する。
【００２３】
逆量子化回路（Ｑ-1）２６は、量子化回路２５の出力データcoefを逆量子化処理し、量子化回路２５に入力される係数データを復号する。逆ディスクリートコサイン変換回路（ＩＤＣＴ）２７は、逆量子化回路２６の出力データを逆ディスクリートコサイン変換処理し、ディスクリートコサイン変換回路２４に入力される差分データを復号する。加算回路２８は、この復号した差分データにイントラ予測回路２２又は動き予測補償回路２３で生成した予測値を加算し、マクロブロック処理エージェント１１Ａ〜１１Ｎの入力データpixelを復号する。
【００２４】
イントラ予測回路２２は、この加算回路２８で復号される現フレームＦｎの画像データpixelを用いて、イントラ符号化する場合の予測値を出力する。動き予測補償回路２３は、バッファメモリを介して、加算回路２８で復号される画像データpixelを参照フレームＦｎ−１の画像データとして入力し、この参照フレームＦｎ−１の画像データを用いて、インター符号化する場合の予測値を出力する。
【００２５】
マクロブロック処理エージェント１１Ａ〜１１Ｎは、Ｉピクチャーでは、イントラ符号化の最適予測モードで画像データpixelを符号化するように、イントラ予測回路２２の予測値を選択的に減算回路２１に出力する。またＩピクチャー以外では、イントラ符号化の最適予測モードとインター符号化の最適予測モードのうちで、発生符号量が少ない側の最適予測モードで画像データpixelを符号化するように、これらイントラ予測回路２２、動き予測補償回路２３の予測値を選択的に減算回路２１に出力する。なおマクロブロック処理エージェント１１Ａ〜１１Ｎは、１つのマクロブロックを複数のブロックに分割して形成されるサブマクロブロックを処理単位とする予測モードを最適予測モードとして処理する場合もあるが、この場合、１つのマクロブロックを構成するサブマクロブロックを順次符号化処理し、その結果、最終的には、マクロブロック単位で画像データpixelを符号化処理する。
【００２６】
後処理部１３（図１）は、バッファメモリを介してマクロブロック処理エージェント１１Ａ〜１１Ｎの出力データcoefを一定の順序で入力する。また入力したデータcoefを可変長符号化処理した後、量子化スケール、マクロブロックタイプ（mb type ）等の情報を付加して符号化データstreamを出力する。またマクロブロック処理エージェント１１Ａ〜１１Ｎから出力して一旦バッファメモリに格納した現フレームＦｎの画像データを、デブロックフィルタリング処理してブロック歪みを除去する。
【００２７】
状態管理部１４は、図３に示すように、画像データpixelをパイプライン処理するように、前処理部１２、マクロブロック処理エージェント１１Ａ〜１１Ｎ、後処理部１３を管理する。またこのときマクロブロック処理エージェント１１Ａ〜１１Ｎでは、同時並列的にマクロブロックを処理するように、マクロブロック処理エージェント１１Ａ〜１１Ｎを管理する。なおここで図３では、フレーム単位で画像データpixelを処理しているように表しているものの、この図３は、前処理部１２、マクロブロック処理エージェント１１Ａ〜１１Ｎ、後処理部１３によるパイプライン処理を示すイメージ図であり、エンコーダ１０は、実際には後述する処理手順に従って順次画像データpixelを処理する。
【００２８】
状態管理部１４は、図３との対比により図４に示すように、１フレームを構成する各マクロブロックの処理状況を記録したテーブルを３フレーム分、有する。状態管理部１４は、画像データpixelの連続するフレームをこれらのテーブル＃０〜＃２に順次循環的に割り当て、マクロブロック処理エージェント１１Ａ〜１１Ｎ、前処理部１２、後処理部１３の処理に応じてそれぞれ対応するテーブル＃０〜＃２を更新する。また状態管理部１４は、テーブル＃０〜＃２の記録に従って、マクロブロック処理エージェント１１Ａ〜１１Ｎ、前処理部１２、後処理部１３に処理を指示する。この実施例において、このテーブル＃０〜＃２は、各マクロブロックの処理状況を示すステータスを記録して形成される。
【００２９】
ここで図５（Ａ）に示すように、１つのピクチャーにおける各マクロブロックの位置を、ラスタ走査開始位置を基準にした水平方向Ｘ及び垂直方向Ｙの座標（ｘ，ｙ）で示す。従って垂直方向の座標は、スライス層の順番を示すことになり、ラスタ走査開始位置のマクロブロックの座標は（０，０）で示される。
【００３０】
状態管理部１４は、前処理部１２で処理を完了していないマクロブロックのステータスをイニシャル状態（ｓ００）に設定する。従ってステータスがイニシャル状態（ｓ００）のマクロブロックは、前処理部１２でのみ処理可能となる。また状態管理部１４は、前処理部１２で処理を完了したマクロブロックであって、マクロブロック処理エージェント１１Ａ〜１１Ｎで未だ処理していないマクロブロックのステータスを、準備完了状態（ｓ０１）に設定する。従ってこの準備完了状態（ｓ０１）に設定されたマクロブロックのうち、図１８について上述した参照関係にある隣接マクロブロックが既にマクロブロック処理エージェント１１Ａ〜１１Ｎで処理されているマクロブロックが、マクロブロック処理エージェント１１Ａ〜１１Ｎで処理可能となる。
【００３１】
また状態管理部１４は、マクロブロック処理エージェント１１Ａ〜１１Ｎの何れかで処理中のマクロブロックのステータスを、実行中状態（ｓ０２）に設定する。また状態管理部１４は、マクロブロック処理エージェント１１Ａ〜１１Ｎの何れかで処理の完了したマクロブロックであって、後処理部１３で処理の完了していないマクロブロックのステータスを、処理完了状態（ｓ０３）に設定する。従って処理完了状態（ｓ０３）のステータスに設定されたマクロブロックは、後処理部１３でのみ処理可能となる。
【００３２】
従ってこの図５（Ａ）の例では、先頭スライス層のマクロブロックのうち、ラスタ走査開始位置から５番目までのマクロブロックが、処理完了状態（ｓ０３）に設定され、続く６番目のマクロブロックが、実行中状態（ｓ０２）に設定され、続く７番目及び８番目のマクロブロックが、準備完了状態（ｓ０１）のステータスに設定されていることになる。
【００３３】
状態管理部１４は、図５（Ａ）との対比により図５（Ｂ）に示すように、各スライス層を特定するスライスアドレスＳＴ毎に、準備完了状態（ｓ０１）、実行中状態（ｓ０２）、処理完了状態（ｓ０３）のマクロブロックの右端のマクロブロックのＸ座標をそれぞれ記録してテーブル＃０〜＃２を形成する。
【００３４】
ここでＭＰＥＧ−４等では、通常、ラスタ走査の順序で順次マクロブロックを処理して画像データを符号化処理することから、この図５に示す１つのピクチャーの符号化処理を開始する場合、ラスタ走査の開始位置の座標（０，０）のマクロブロックを初めに符号化処理することが必要になる。またＭＰＥＧ−４では、ラスタ走査順に処理した場合の、処理を完了している隣接マクロブロックの何れかを参照する予測モードが存在することから、ラスタ走査の順序で先に走査する隣接マクロブロックが既に符号化処理されていることが符号化処理の前提条件となり、従って座標（０，０）のマクロブロックを符号化処理する場合、座標（０，０）以外の他のマクロブロックは、符号化処理できないことになる。
【００３５】
またこのラスタ走査の開始位置の座標（０，０）のマクロブロックの符号化処理を完了すると、この座標（０，０）のマクロブロックの水平方向に隣接する座標（１，０）のマクロブロックが符号化処理可能となる。しかしながら座標（１，０）以外の他のマクロブロックについては、座標（０，０）のマクロブロックの処理を開始する場合と同様に、符号化処理できないことになる。
【００３６】
しかしながら図６に示すように、この続く座標（１，０）のマクロブロックの符号化処理を完了した場合、１つ下のスライス層の走査開始位置である座標（０，１）のマクロブロックは、ラスタ走査の順序で先に走査する隣接マクロブロックが既に符号化処理されていることになり、符号化処理することが可能となる。従ってこの場合、丸印で示す座標（２，０）、（０，１）の２つのマクロブロックが共に符号化処理可能となり、この２つのマクロブロックを同時並列的に符号化処理することが可能となる。
【００３７】
またこの図６に示す状況から、座標（２，０）、（０，１）の２つのマクロブロックの符号化処理を完了すると、今度は、座標（２，０）、（０，１）のマクロブロックに続く座標（３，０）、（１，１）のマクロブロックが共に符号化処理可能となり、この場合もこの２つのマクロブロックを同時並列的に符号化処理することができる。
【００３８】
またこの座標（３，０）、（１，１）の２つのマクロブロックの符号化処理を完了すると、図７に示すように、さらに１つ下のスライス層の走査開始位置である座標（０，２）のマクロブロックは、ラスタ走査の順序で先に走査する隣接マクロブロックが既に符号化処理されていることになり、符号化処理することが可能となる。従ってこの場合、丸印で示す座標（４，０）、（２，１）、（０，２）の３つのマクロブロックが共に処理可能となり、この場合、この３つのマクロブロックを同時並列的に符号化処理することが可能となる。
【００３９】
またこの実施例のように前処理部１２、マクロブロック処理エージェント１１Ａ〜１１Ｎ、後処理部１３で画像データをパイプライン処理して符号化処理する場合、前処理部１２は、未処理のマクロブロックであれば、何れのマクロブロックについても処理することができる。また後処理部１３では、デブロックフィルタリングを実行するフィルタのタップ数に対応する複数のマクロブロックをマクロブロック処理エージェント１１Ａ〜１１Ｎで処理していれば、この複数のマクロブロックについては処理することができる。しかしながら最適予測モードで差分データを計算して処理するマクロブロック処理エージェント１１Ａ〜１１Ｎでは、前処理部１２の処理が完了していることを前提条件として、図５〜図７について上述した順序に依らなければ、マクロブロックを処理することが困難になる。
【００４０】
そこで状態管理部１４は、前処理部１２については、マクロブロック処理エージェント１１Ａ〜１１Ｎの処理に対して十分に先行して各マクロブロックを処理するようにして、ラスタ走査の順序で順次マクロブロックを処理するように指示する。すなわち状態管理部１４は、前処理部１２から１つのマクロブロックの処理の完了が通知されると、対応するマクロブロックのステータスを準備完了状態（ｓ０１）に切り換え、図５（Ｂ）に示す対応するテーブル＃０〜＃２の左端（準備完了状態（ｓ０１））の記録を更新する。また状態管理部１４は、ラスタ走査の順序で続くマクロブロックの処理を前処理部１２に指示する。
【００４１】
また状態管理部１４は、マクロブロック処理エージェント１１Ａ〜１１Ｎの何れかから処理の完了が通知されると、対応するマクロブロックのステータスを処理完了状態（ｓ０３）に切り換え、図５（Ｂ）に示す対応するテーブル＃０〜＃２の右端の記録を更新する。
【００４２】
また状態管理部１４は、続いてこの対応するテーブル＃０〜＃２の左端（準備完了状態（ｓ０１））及び中段（実行中状態（ｓ０２））の記録に基づいて、ラスタ走査の順序で先に走査する隣接マクロブロックの処理状況を判定し、マクロブロック処理エージェント１１Ａ〜１１Ｎで処理可能なマクロブロックを検出する。具体的に、状態管理部１４は、準備完了状態（ｓ０１）のマクロブロックであって、かつ、左上、真上、右上、左の隣接マクロブロックが、処理完了状態（ｓ０３）となっているマクロブロックを処理可能なマクロブロックとして検出する。状態管理部１４は、この検出した処理可能なマクロブロックの処理を、処理の完了が通知されたマクロブロック処理エージェント１１Ａ〜１１Ｎに指示する。またマクロブロック処理エージェント１１Ａ〜１１Ｎに処理を指示すると、この処理を指示したマクロブロックのステータスの記録を実行中状態（ｓ０２）に更新し、対応するテーブルの記録を更新する。
【００４３】
このとき状態管理部１４は、現在処理しているフレームのテーブルから処理可能なマクロブロックが検出できなくなると、続くフレームのテーブルから処理可能なマクロブロックを検出し、この検出したマクロブロックの処理を、処理の完了が通知されたマクロブロック処理エージェント１１Ａ〜１１Ｎに指示する。
【００４４】
これに対して後処理部１３から処理の完了が通知されると、続くフレームのテーブル＃０〜＃２の右端（処理完了状態（ｓ０３））の記録に基づいて、続く１フレームの全てのマクロブロックの処理をマクロブロック処理エージェント１１Ａ〜１１Ｎで完了したか否か判断する。またマクロブロック処理エージェント１１Ａ〜１１Ｎで続く１フレームのマクロブロックの全ての処理を完了すると、この処理の完了した続く１フレームの処理を後処理部１３に指示する。またこのようにして処理を指示して処理の完了が通知されると、この続く１フレームのテーブルを、新たに処理するフレームに割り当てる。
【００４５】
すなわち図８は、この状態管理部１４の構成を示すブロック図である。状態管理部１４は、３フレーム分のテーブル＃０〜＃２を連続するフレームに順次循環的に割り当てるようにして、マクロブロック処理エージェント１１Ａ〜１１Ｎの何れかから処理の完了が通知されると、対応するテーブル＃０〜＃２の記録を更新する。また処理可能なマクロブロック検出部（処理可能ＭＢ検出）１４Ａの機能ブロックで、現在処理しているテーブルから処理可能なマクロブロックを検出し、この検出したマクロブロックを処理の完了が通知されたマクロブロック処理エージェント１１Ａ〜１１Ｎに通知して続く処理を指示する。またこの通知に対応するように対応するテーブルの記録を更新する。
【００４６】
またこの現在処理しているテーブルから処理可能なマクロブロックを検出できない場合、余剰マクロブロック処理エージェント検出部１４Ｂの機能ブロックで、参照対象のテーブルを次のフレームのテーブルに切り換え、処理可能マクロブロック検出部１４Ａでこの切り換えたテーブルから処理可能なマクロブロックを検出する。また検出したマクロブロックを処理の完了が通知されたマクロブロック処理エージェント１１Ａ〜１１Ｎに通知して続く処理を指示し、この通知に対応するように対応するテーブルの記録を更新する。
【００４７】
図９は、このテーブル＃０〜＃２を用いた前処理部１２等の管理に関する状態管理部１４の処理手順を示すフローチャートである。状態管理部１４は、フレーム毎にこの処理手順を実行する。状態管理部１４は、この処理手順を開始すると、ステップＳＰ１からステップＳＰ２に移り、ここで処理対象フレームの全てのマクロブロックについて、テーブルのステータスをイニシャル状態（ｓ００）に設定する。また続くステップＳＰ３において、前処理部１２にこの処理対象フレームの処理を指示し、ラスタ走査順に各マクロブロックを前処理する。
【００４８】
続いて状態管理部１４は、ステップＳＰ４に移り、現在処理中のフレームに割り当てたマクロブロック処理エージェント１１Ａ〜１１Ｎの全てで、現在処理中のフレームのテーブルから処理可能なマクロブロックを検出することができたか否か判断し、余剰のマクロブロック処理エージェント１１Ａ〜１１Ｎが存在するか否か判断する。なおここで余剰のマクロブロック処理エージェント１１Ａ〜１１Ｎとは、処理可能なマクロブロックを検出できなかったマクロブロック処理エージェントであり、待ち時間が生じてしまうマクロブロック処理エージェント１１Ａ〜１１Ｎを意味する。
【００４９】
ここで余剰マクロブロック処理エージェントが発生していない場合、状態管理部１４は、ステップＳＰ４からステップＳＰ５に移る。なお連続するフレームの先頭フレームの処理開始時は、図５〜図６について上述したように、数マクロブロックの間、先頭スライス層でしか処理可能なマクロブロックを検出できないことから、またその後も一定期間の間、先頭側の複数のスライス層でしか処理可能なマクロブロックを検出できないことから、これらの期間の間、余剰のマクロブロック処理エージェント１１Ａ〜１１Ｎが検出されることになる。しかしながら状態管理部１４は、連続するフレームの先頭フレームの処理開始時については、余剰のマクロブロック処理エージェント１１Ａ〜１１Ｎが検出された場合でも、ステップＳＰ４からステップＳＰ５に移る。
【００５０】
このステップＳＰ５において、状態管理部１４は、各マクロブロック処理エージェント１１Ａ〜１１Ｎに処理可能マクロブロックを割り当ててテーブルを更新する。またマクロブロック処理エージェント１１Ａ〜１１Ｎからこの割り当てたマクロブロックの処理の完了が通知されると、テーブルを更新して、ステップＳＰ４に戻る。
【００５１】
状態管理部１４は、このステップＳＰ４−ＳＰ５−ＳＰ４の処理ループを繰り返し、連続するフレームの先頭フレームの処理開始時は、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎの一部で処理可能なマクロブロックを処理する。またこの処理ループを繰り返して、全てのマクロブロック処理エージェント１１Ａ〜１１Ｎにマクロブロックを割り当て可能になると、さらにこの処理ループを繰り返してこれら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎで同時並列的にマクロブロックを処理する。
【００５２】
ところで処理可能なマクロブロックを処理対象に設定して複数のマクロブロック処理エージェント１１Ａ〜１１Ｎで同時並列的にマクロブロックを処理して行くと、図６及び図７との対比により、マクロブロック処理エージェント１１Ａ〜１１Ｎが３個の場合を例に取って図１０に示すように、最終的には、これら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎがそれぞれ末尾側のスライス層に割り当てられるようになる。またさらにこれらの末尾側のスライス層のうちで最も番号の若いスライス層（図１０では番号５で示すスライス層である）では、水平方向の右端のマクロブロックが処理対象に設定されるようになる。なおこの場合、続くスライス層では、右端のマクロブロックから３個目のマクロブロックが処理対象に設定され、続く最後尾のスライス層では、右端のマクロブロックから５個目のマクロブロックが処理対象に設定されることになる。
【００５３】
この図１０に示す状態で、マクロブロック処理エージェント１１Ａ〜１１Ｎでこれら処理対象のマクロブロックの処理を完了すると、図１０との対比により、図１１に示すように、このフレームでは、処理可能なマクロブロックが２個しか検出できなくなる。従ってこの場合、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎの一部にマクロブロックの処理を割り当てることが困難になり、余剰マクロブロック処理エージェントが発生する。
【００５４】
そこで状態管理部１４は、この図１１に示す例のように、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎで余剰マクロブロック処理エージェントが発生すると、ステップＳＰ４で肯定結果が得られてステップＳＰ６に移り、この余剰マクロブロック処理エージェントを次のフレームの処理に振り分ける。すなわちこの場合、状態管理部１４は、続くフレームを処理するためにこの図９の処理手順を別途立ち上げ、ステップＳＰ５でそれまでマクロブロックを割り当てていたマクロブロック処理エージェント１１Ａ〜１１Ｎの１つを、この別途立ち上げた処理手順のステップＳＰ５の割り当てに振り分ける。なおここで続くフレームについて、この図９の処理手順が既に立ち上げられている場合、状態管理部１４は、ステップＳＰ５でそれまでマクロブロックを割り当てていたマクロブロック処理エージェント１１Ａ〜１１Ｎの１つを、単に、この次のフレームを処理する処理手順に振り分ける。
【００５５】
続いて状態管理部１４は、ステップＳＰ７に移り、１フレームの処理を完了したか否か判断し、ここで否定結果が得られると、ステップＳＰ４に戻る。また余剰マクロブロック処理エージェントと判断されなかった残りのマクロブロック処理エージェントについて、状態管理部１４は、ステップＳＰ４からステップＳＰ５に移り、割り当て可能なマクロブロックを割り当ててステップＳＰ４に戻る。
【００５６】
従って状態管理部１４は、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎで同時並列的にマクロブロックを処理するようにして、１フレームの末尾側となって処理可能なマクロブロックを割り当てることができないマクロブロック処理エージェントが発生する毎に、この割り当て困難なマクロブロック処理エージェントを次のフレームの処理に振り分けるようにする。また全てのマクロブロック処理エージェント１１Ａ〜１１Ｎを次のフレームの処理に振り分けると、ステップＳＰ７で肯定結果が得られ、ステップＳＰ８に移る。
【００５７】
このステップＳＰ８において、状態管理部１４は、マクロブロック処理エージェント１１Ａ〜１１Ｎの処理の完了した１フレームの後処理を後処理部１３に指示した後、ステップＳＰ９に移り、後処理部１３からの処理の完了通知を待機する。また処理の完了通知が得られると、ステップＳＰ１０に移ってこの処理手順を終了する。
【００５８】
図１２は、図１との対比により、本発明の実施例１の映像機器に適用されるデコーダを示すブロック図である。このデコーダ３０は、図１について上述したエンコーダ１０を構成する複数の中央処理ユニットで実行するプログラムが、エンコーダ用のプログラムからデコーダ用のプログラムに入れ換えられて構成される。デコーダ３０は、図１のエンコーダ１０で生成された符号化データstreamから画像データpixelを復号化する。
【００５９】
ここでデコーダ３０は、各中央処理ユニットによって、それぞれマクロブロックを処理するマクロブロック処理エージェント（ＭＢ処理）３１Ａ〜３１Ｎの機能ブロックが形成される。またデコーダ３０は、全体の動作を制御するメインの中央処理ユニットによって、前処理部（ＶＬＤ）３２、後処理部（デブロッキング）３３、状態管理部３４の機能ブロックが形成される。
【００６０】
ここで前処理部３２は、マクロブロック処理エージェント３１Ａ〜３１Ｎで処理する符号化データstreamを事前にまとめてフレーム単位で処理する機能ブロックである。具体的に、前処理部３２は、エンコーダ１０の後処理部１３に対応する構成であり、バッファメモリに入力された符号化データstreamを可変長復号化処理して後処理部１３の入力データcoefを復号する。
【００６１】
マクロブロック処理エージェント３１Ａ〜３１Ｎは、エンコーダ１０のマクロブロック処理エージェント１１Ａ〜１１Ｎに対応する構成であり、前処理部３２の出力データcoefをそれぞれマクロブロック単位で処理して画像データpixelを出力する並列処理可能な機能ブロックである。
【００６２】
すなわち図１３に示すように、マクロブロック処理エージェント３１Ａ〜３１Ｎは、マクロブロック単位でバッファメモリから前処理部３２の出力データcoefを逆量子化回路（Ｑ-1）４１に入力する。ここで逆量子化回路４１は、符号化データstreamに設定された量子化スケールで前処理部３２の出力データcoefを逆量子化処理し、エンコーダ１０の量子化回路２５に入力される係数データを復号する。逆ディスクリートコサイン変換回路（ＩＤＣＴ）４２は、逆量子化回路４１の出力データを逆ディスクリートコサイン変換処理し、エンコーダ１０のディスクリートコサイン変換回路２４に入力される差分データを復号する。加算回路４３は、この復号した差分データにイントラ予測回路４４又は動き予測補償回路４５で生成した予測値を加算し、画像データpixelを復号する。
【００６３】
イントラ予測回路４４は、この加算回路４３で復号される現フレームＦｎの画像データpixelを用いて、イントラ符号化の場合の予測値を出力する。動き予測補償回路４５は、加算回路４３で復号される画像データpixelをバッファメモリを介して参照フレームＦｎ−１の画像データとして入力し、この画像データを用いて、インター符号化の場合の予測値を出力する。
【００６４】
後処理部３３（図１２）は、マクロブロック処理エージェント３１Ａ〜３１Ｎの出力データpixelをデブロックフィルタリング処理してブロック歪みを除去する。またこのブロック歪みを除去した画像データpixelを参照フレームとしてバッファメモリに格納する。
【００６５】
状態管理部３４は、前処理部３２、マクロブロック処理エージェント３１Ａ〜３１Ｎ、後処理部３３で符号化データstreamをパイプライン処理するように、またマクロブロック処理エージェント１１Ａ〜１１Ｎでは、同時並列的にマクロブロックを処理するように、前処理部３２、マクロブロック処理エージェント３１Ａ〜３１Ｎ、後処理部３３を管理する。
【００６６】
ここで状態管理部３４における前処理部３２、マクロブロック処理エージェント３１Ａ〜３１Ｎ、後処理部３３の管理は、処理対象がそれぞれエンコーダ１０の各部とデコーダ３０の各部とで異なる点を除いて、エンコーダ１０の状態管理部１４と同一に実行される。
【００６７】
なお符号化データstreamは、予測モードを示す制御コード、図１８で説明した隣接マクロブロックの何れを参照しているか示す制御コードが設定されており、予測モードがインター予測の場合、図１８について上述した、参照関係の他のマクロブロックを参照することなく、マクロブロックを処理することができる。また予測モードがインター予測の場合でも、この制御コードで特定される隣接マクロブロックさえ復号化されていれば、対応する座標（ｘ，ｙ）のマクロブロックを復号化することができる（図１８参照）。従って状態管理部３４は、エンコーダ１０について上述した左上、真上、右上、左の隣接マクロブロックが、処理完了状態（ｓ０３）となっているマクロブロックを検出する代わりに、予測モードがインター予測に設定されたマクロブロックを検出して、さらにはイントラ予測モードで制御コードで特定される隣接マクロブロックが処理完了状態（ｓ０３）となっているマクロブロックを検出して、マクロブロック処理エージェント３１Ａ〜３１Ｎで処理可能なマクロブロックを検出するようにしてもよい。
【００６８】
（２）実施例の動作
以上の構成において、この実施例の映像機器では、例えばチュナー、光ディスク装置等から出力される画像データpixelが、エンコーダ１０（図１）で符号化処理されて符号化データstreamが生成され、この符号化データstreamが記録媒体に記録され、また伝送路に出力される。またこれとは逆に、記録媒体から再生された符号化データstream、伝送路から入力される符号化データstreamがデコーダ３０（図１２）で復号化されて画像データpixel が生成され、この画像データpixelがモニタ装置等に出力される。
【００６９】
この映像機器では、このエンコーダ１０、デコーダ３０が、複数の中央処理ユニットを有するいわゆるマルチコアプロセッサに対応するプログラムをロードして形成される。またこのプログラムによって、エンコーダ１０、デコーダ３０は、前処理、各マクロブロックの処理、後処理で画像データpixel、符号化データstreamをパイプライン処理するように形成される（図３、図４）。
【００７０】
すなわちエンコーダ１０において（図１）、順次入力される画像データpixelは、前処理部１２で最適な予測モードが選択され、続く複数のマクロブロック処理エージェント１１Ａ〜１１Ｎで差分データが生成されて直交変換処理、量子化処理され（図２）、続く後処理部１３で符号化データstreamに変換される。またデコーダ３０において（図１２）、符号化データstreamは、前処理部３２で可変長復号処理され、続く複数のマクロブロック処理エージェント３１Ａ〜３１Ｎで逆量子化処理、逆直交変換処理等されて画像データpixelに変換され（図１３）、続く後処理部３３でフィルタリング処理される。
【００７１】
この前処理、各マクロブロックの処理、後処理のパイプライン処理により、エンコーダ１０、デコーダ３０では、１つの中央処理ユニットで順次マクロブロックを処理する場合に比して、符号化処理、復号化処理が高速度化される。
【００７２】
しかしながら単なるこれら処理のパイプライン処理では、何れかの処理で待ち時間が発生して無駄に電力を消費することになる。このために、図１７との対比により図１４に示すように、マクロブロック単位で、複数の中央処理ユニット１Ａ〜１Ｄでそれぞれマクロブロック単位で符号化処理、復号化処理するようにして、これら複数の中央処理ユニット１Ａ〜１Ｄで同時並列的に符号化処理、復号化処理することが考えられるが、ＭＰＥＧ−４等では、ラスタ走査の順序で処理した場合に既に処理を完了している隣接マクロブロックを参照して符号化、復号化する場合があることから、単に複数の処理部で同時並列的に符号化処理、復号化処理するようにしてしても、結局、待ち時間が発生することになる。
【００７３】
そこでこの実施例では、パイプライン処理する処理のうちで、最も負荷の大きな処理であり、他のマクロブロックを参照する処理である各マクロブロックの処理に、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎが割り当てられる。またこれら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎで、１つのマクロブロックを処理する毎に、参照する可能性のある隣接マクロブロックの処理の状況が判定され、マクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎでそれぞれ処理可能なマクロブロックが検出される。またこの検出されたマクロブロックの処理が、処理の完了したマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎに割り当てられ、これら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎで１つのフレームを構成する複数のマクロブロックが同時並列的に処理される。
【００７４】
その結果、この実施例では、ラスタ走査の順序で処理した場合に、既に処理を完了していることになる隣接マクロブロックを参照して符号化、復号化する方式により符号化、復号化する場合でも、待ち時間の発生を有効に回避して、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎで同時並列的に画像データpixel、符号化データstreamを処理することができ、符号化、復号化の処理を従来に比して高速度化することができる。
【００７５】
しかしながら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎで処理可能なマクロブロック数は、１つのフレームの処理を開始した直後は１個であり、処理が進むに従って徐々に増大し、遂には全てのマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎに割り当て可能な数となる（図６及び図７）。また１つのフレームの処理を終了する前の一定期間では、徐々に処理可能なマクロブロック数が減少し、最後には処理可能なマクロブロック数が１個になる（図１０及び図１１）。従ってこのような１フレームの処理を開始した後の一定期間と、１フレームの処理を終了する前の一定期間とでは、これら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎの一部にマクロブロックの処理を割り当てることが困難になり、複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎの一部で待ち時間が発生することになる。
【００７６】
そこでこの実施例では、処理中の１フレームで処理可能なマクロブロックを検出できなくなると、続く１フレームから処理可能なマクロブロックが検出され、この検出したマクロブロックが、待ち時間の発生するマクロブロック処理エージェントで処理される。すなわち１つのフレームを複数のマクロブロック処理エージェントで同時並列的に処理できなくなると、連続する２つのフレームを複数のマクロブロック処理エージェントで同時並列的に処理する。
【００７７】
その結果、この実施例では、順次連続するフレームを符号化、復号化する場合の、フレームの切れ目における待ち時間の発生が有効に回避され、複数のマクロブロックを同時並列的に処理して符号化処理、復号化処理を高速度化することができる。
【００７８】
すなわち６４個のマクロブロックで形成されるピクチャーを４つのマクロブロック処理エージェント１１Ａ〜１１Ｎ、（３１Ａ〜３１Ｎ）で処理する場合を例に取って図１５に示すように、フレーム単位で、処理可能なマクロブロックを検出してこの４つのマクロブロック処理エージェントで処理すると、これら４つのマクロブロック処理エージェント１１Ａ〜１１Ｎ、（３１Ａ〜３１Ｎ）の１つでは最大で２２個のマクロブロックを処理することになり、最小で１０個のマクロブロックを処理することになる。従ってこの図１５ではハッチングで示す待ち時間の期間が発生する。
【００７９】
しかしながらこの実施例のように１つのフレームで処理可能なマクロブロックを検出できなくなると、続くフレームで処理可能なマクロブロックを検出処理するようにすれば、図１５との対比により図１６に示すように、連続するフレームの先頭フレームを除いて、各マクロブロック処理エージェント１１Ａ〜１１Ｎ、（３１Ａ〜３１Ｎ）で処理するマクロブロック数を等しく設定して、これら複数のマクロブロック処理エージェント１１Ａ〜１１Ｎ、（３１Ａ〜３１Ｎ）における待ち時間の発生を有効に回避することができる。従って、符号化、復号化の処理を高速度化することができる。また無駄な電力消費を防止することもできる。
【００８０】
この実施例では、処理中の１フレームのマクロブロックの処理の状況を示す現フレームのテーブルと、続く１フレームのマクロブロックの処理の状況を示す次フレームのテーブルとを設けるようにして、１つのマクロブロックの処理を完了する毎に、これらのテーブルを更新した後、このテーブルの記録に基づいて、マクロブロック処理エージェントで処理可能なマクロブロックが検出されて、簡易かつ確実な処理により処理可能なマクロブロックを検出して処理することができる。
【００８１】
（３）実施例の効果
以上の構成によれば、１つのマクロブロックの処理を完了する毎に、処理可能なマクロブロックを検出して処理することにより、複数の処理部で同時並列的に１フレームのマクロブロックを処理するようにして、処理可能なマクロブロックを処理中の１フレームで検出できなくなると、続くフレームから処理可能なマクロブロックを検出して処理することにより、処理を完了した隣接マクロブロックを参照してマクロブロックを処理する方式において、複数のマクロブロックを同時並列的に処理して処理を高速度化することができる。
【００８２】
また処理中の１フレームのマクロブロックの処理の状況を示す現フレームのテーブルと、続く１フレームのマクロブロックの処理の状況を示す次フレームのテーブルとを設けるようにして、１つのマクロブロックの処理を完了する毎に、これらのテーブルを更新した後、このテーブルの記録に基づいて、処理可能なマクロブロックを検出することにより、簡易かつ確実な処理により処理可能なマクロブロックを検出し、処理を高速度化することができる。
【実施例２】
【００８３】
なお上述の実施例においては、前処理部で原画像を用いて最適予測モードを検出する場合について述べたが、本発明はこれに限らず、この最適予測モードを検出する処理をマクロブロック処理エージェントで実行するようにしてもよい。
【００８４】
また上述の実施例においては、ラスタ走査順にマクロブロックを順次処理することを前提とした方式で画像データを符号化、復号化する場合について述べたが、本発明はこれに限らず、種々の順序でマクロブロックを順次処理することを前提とした方式に広く適用することができる。
【００８５】
また上述の実施例においては、複数の中央処理ユニットを有するマルチコアプロセッサで符号化、復号化処理する場合について述べたが、本発明はこれに限らず、複数のプロセッサで符号化、復号化処理する場合、全部又は一部をハードウェア構成として符号化、復号化する場合、さらには１つの演算処理手段で複数の機能ブロックを構成して符号化、復号化する場合等に広く適用することができる。
【００８６】
また上述の実施例においては、本発明を映像機器に適用する場合について述べたが、本発明はこれに限らず、付加的な機能として画像データを処理する機能が設けられた種々の機器に広く適用することができる。なおこのように付加的な機能として画像データを処理する機能が設けられた機器としては、例えば携帯電話、パーソナルコンピュータ等がある。
【産業上の利用可能性】
【００８７】
本発明は、画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体に関し、例えばＨ．２６４／ＭＰＥＧ−４ＡＶＣ規格に従ってビデオデータを符号化、復号化する場合に適用することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施例１の映像機器に適用されるエンコーダを示すブロック図である。
【図２】図１のエンコーダのマクロブロック処理エージェントを示すブロック図である。
【図３】図１のエンコーダのパイプライン処理の説明に供するタイムチャートである。
【図４】図３のパイプライン処理で参照するテーブルを示すタイムチャートである。
【図５】図４のテーブルの構成を示す略線図である。
【図６】１フレームの処理開始時の処理可能マクロブロックの説明に供する略線図である。
【図７】図６に続く時点における、処理可能マクロブロックの説明に供する略線図である。
【図８】図２のマクロブロック処理エージェントにおける状態管理部を示すブロック図である。
【図９】図８の状態管理部の処理手順を示すフローチャートである。
【図１０】１フレームの処理終了時、直前の処理可能マクロブロックの説明に供する略線図である。
【図１１】図１０に続く時点における、処理可能マクロブロックの説明に供する略線図である。
【図１２】本発明の実施例１の映像機器に適用されるデコーダを示すブロック図である。
【図１３】図１２のデコーダのマクロブロック処理エージェントを示すブロック図である。
【図１４】複数の中央処理ユニットによる並列処理の説明に供する略線図である。
【図１５】フレームの切り換わり時で発生する待ち時間の説明に供するタイムチャートである。
【図１６】図１５との対比により図１のエンコーダ又は図１２のデコーダによる処理を示すタイムチャートである。
【図１７】復号化の処理を複数の中央処理ユニットでパイプライン処理する場合を示す略線図である。
【図１８】マクロブロックにおける参照関係を示す略線図である。
【符号の説明】
【００８９】
１Ａ〜１Ｄ……中央処理ユニット、２……メモリ、１０……エンコーダ、１１Ａ〜１１Ｎ、３１Ａ〜３１Ｎ……マクロブロック処理エージェント、１２、３２……前処理部、１３、３３……後処理部、１４、３４……状態管理部
【図１】
2007251865.tif 000003
【図２】
2007251865.tif 000004
【図３】
2007251865.tif 000005
【図４】
2007251865.tif 000006
【図５】
2007251865.tif 000007
【図６】
2007251865.tif 000008
【図７】
2007251865.tif 000009
【図８】
2007251865.tif 000010
【図９】
2007251865.tif 000011
【図１０】
2007251865.tif 000012
【図１１】
2007251865.tif 000013
【図１２】
2007251865.tif 000014
【図１３】
2007251865.tif 000015
【図１４】
2007251865.tif 000016
【図１５】
2007251865.tif 000017
【図１６】
2007251865.tif 000018
【図１７】
2007251865.tif 000019
【図１８】
2007251865.tif 000020