(57)【要約】【課題】符号化された動画像データの復号処理の実行効率を安定に十分高くできるようにする。【解決手段】ビットストリーム解析部１により、これに供給された動画像データを、復号処理プロセッサ２（０）〜２（Ｎ−１）の数に応じて、マクロブロックを最小単位として画面を縦の帯状部分に分割する。この分割したそれぞれの縦の帯状部分に属する動画像データを、縦の帯状部分毎に異なる復号処理プロセッサ２（０）〜２（Ｎ−１）に分配する。復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれは、マクロブロック単位に復号処理を行い、得られた画素データをフレームメモリ５に供給し、データ圧縮前の元の１画面分の画像データを復元する。【選択図】図１
2010273190.tif 000002
【特許請求の範囲】
【請求項１】
予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段と、
符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、前記複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配手段と、
前記複数の復号処理手段からの復号された動画像データの供給を受けて、１画面分の画像データを形成する形成手段と
を備える復号処理装置。
【請求項２】
請求項１に記載の復号処理装置であって、
前記複数の復号処理手段のそれぞれは、
割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
前記処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくとも左隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信し、
当該受信した左隣の処理ブロックの処理結果と、上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果とを用いて復号処理を実行し、
その復号処理の結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
右隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信し、
当該受信した右上の処理ブロックの処理結果を用いて復号処理を実行し、
その復号処理の結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信する復号処理装置。
【請求項３】
請求項２に記載の復号処理装置であって、
前記複数の復号処理手段のそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
処理結果を受信しようとする復号処理手段は、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となり、
処理結果を送信しようとする復号処理手段は、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となる復号処理装置。
【請求項４】
請求項１、請求項２または請求項３に記載の復号処理装置であって、
画面の左端の縦の帯状部分が割り当てられた復号処理装置から右端の縦の帯状部分が割り当てられた復号処理装置に向かう順番で、復号処理手段毎に１処理ブロック行ずつ階段状に処理が遅れた態様で、各縦の帯状部分の復号処理を並列に実行する復号処理装置。
【請求項５】
請求項１、請求項２、請求項３または請求項４に記載の復号処理装置であって、
前記分配手段は、
画面の水平方向の幅を、前記処理ブロックの水平方向の幅を最小単位とする幅に換算し、
当該換算した画面の水平方向の幅を、前記複数の復号処理手段の数で割り算し、
余りが出ない場合には、当該割り算の商を前記縦の帯状部分のそれぞれの水平方向の幅として分割する処理を行ない、
余りが出た場合には、当該割り算の商を前記縦の帯状部分のそれぞれの水平方向の基準幅とし、画面の左側の縦の帯状部分から画面の右側に向かう方向に、当該余りに応じた数の前記縦の帯状部分のそれぞれの水平方向の基準幅に対して値「１」を加算することにより、前記縦の帯状部分のそれぞれの水平方向の幅を特定して分割する処理を行う復号処理装置。
【請求項６】
請求項１に記載の復号処理装置であって、
前記複数の復号処理手段のそれぞれは、
割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
復号処理に処理対象の処理ブロックの左側の処理ブロックの処理結果を用いるようにしており、
割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理した場合には、その処理結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、左隣の前記他の縦の帯状部分を処理する復号処理手段から、目的とする処理ブロックの処理結果を受信する復号処理装置。
【請求項７】
請求項１に記載の復号処理装置であって、
前記複数の復号処理手段のそれぞれは、
割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
復号処理に処理対象の処理ブロックの右上の処理ブロックの処理結果を用いるようにしており、
割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理した場合には、その処理結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、右隣の前記他の縦の帯状部分を処理する復号処理手段から、目的とする処理ブロックの処理結果を受信する復号処理装置。
【請求項８】
分配手段が、符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、複数の復号処理手段の数に応じ、予め決められた処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配工程と、
前記複数の復号処理手段のそれぞれが、前記分配工程において分配するようにされた画像データの供給を受けて、前記処理ブロック単位に動画像データの復号処理を行う復号処理工程と、
前記復号処理工程において前記複数の復号処理手段により復号された動画像データから、形成手段が、１画面分の画像データを形成する形成工程と
を有する復号処理方法。
【請求項９】
請求項８に記載の復号処理方法であって、
前記復号処理工程において、複数の復号処理手段のそれぞれは、
割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うようにしており、
前記処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくとも左隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信し、
当該受信した左隣の処理ブロックの処理結果と上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果とを用いて復号処理を実行し、
その復号処理の結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
右隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信し、
当該受信した右上の処理ブロックの処理結果を用いて復号処理を実行し、
その復号処理の結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信する復号処理方法。
【請求項１０】
請求項９に記載の復号処理方法であって、
前記複数の復号処理手段のそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
前記復号処理工程においては、
前記復号処理手段が処理結果を受信しようとする場合に、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となり、
前記復号処理手段が処理結果を送信しようとする場合に、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となる復号処理方法。
【請求項１１】
予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段を備えた復号処理装置に搭載され、前記複数の復号処理手段に動画像データを分配する分配手段としての機能を実現するコンピュータが、
符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配ステップを実行するデータ分配プログラム。
【請求項１２】
動画像データの復号処理を行う復号処理装置に搭載され、予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段のそれぞれを実現する複数のコンピュータのそれぞれが実行するプログラムであって、
前記複数のコンピュータのそれぞれには、復号対象の動画像データが形成する画面毎に、前記複数のコンピュータの数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データが、前記縦の帯状部分毎に異なる前記コンピュータに供給するようにされており、
前記複数のコンピュータのそれぞれは、
割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくともの左隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信する第１の受信ステップと、
前記受信ステップにおいて受信した左隣の処理ブロックの処理結果と、上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果を用いて復号処理を実行する第１の復号処理ステップと、
前記第１の復号処理ステップにおいての復号処理の結果を左隣の前記他の縦の帯状部分を処理するコンピュータに対して送信する第１の送信ステップと
を実行し、
割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
右隣の前記他の縦の帯状部分を処理するコンピュータから、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信する第２の受信ステップと、
前記受信ステップにおいて受信した右上の処理ブロックの処理結果を用いて復号処理を実行する第２の復号処理ステップと、
前記第２の復号処理ステップにおいての復号処理の結果を右隣の前記他の縦の帯状部分を処理するコンピュータに対して送信する第２の送信ステップと
を実行する復号処理プログラム。
【請求項１３】
請求項１２に記載の復号処理プログラムであって、
前記複数のコンピュータのそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
前記第１の復号処理ステップにおいて、前記コンピュータが処理結果を受信しようとする場合に、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となるように制御し、
前記第２の復号処理ステップにおいて、前記コンピュータ段が処理結果を送信しようとする場合に、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となるように制御する復号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、マクロブロックなどの予め決められた所定の処理ブロック単位で符号化された動画像データの復号処理を行う装置、当該装置において用いられる復号処理のための方法、プログラムに関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ−２（Moving Picture Experts Group phase 2）、ＭＰＥＧ−４（Moving Picture Experts Group phase 4）、Ｈ．２６４（MPEG-4 Advanced Video Coding）、マイクロソフト社が開発したＶＣ−１などの動画像符号化方式が用いられるようになっている。
【０００３】
これらの動画像符号化方式でデータ圧縮（符号化）された動画像を利用する場合には、復号処理を行う。そして、上述したような動画像符号化方式でデータ圧縮された動画像データの動画像復号処理を、マルチプロセッサ上で負荷分散により並列化処理する場合、例えば、マクロブロックを最小処理単位として各プロセッサに分担させることになる。
【０００４】
ここで、マクロブロックは、図１１に示すように、所定のピクチャ幅、ピクチャ高を有する１画面分（１フレーム分）の画像を、縦横が１６ピクセルの小領域（正方形の画素ブロック）に分割した場合の当該小領域を意味する。
【０００５】
そして、ＭＰＥＧ−４、Ｈ．２６４、ＶＣ−１など近年の動画像符号化方式の場合には、目的とするマクロブロックを復号処理する場合、処理対象のマクロブロックの左、左上、上、右上の各マクロブロックの復号結果を参照することが規定されている。
【０００６】
例えば、図１２に示すように、塗り潰して示した中央部分のマクロブロックが、処理対象のマクロブロックであるとする。この場合、当該処理対象のマクロブロックの画像データを復号するためには、その周囲の左、左上、上、右上の４つのマクロブロックの復号結果が必要になる。
【０００７】
このため、処理対象のマクロブロックの復号処理は、当該処理対象のマクロブロックの左、左上、上、右上の少なくとも４つのマクロブロックの復号処理が終了してから開始しなければならない。
【０００８】
逆に言えば、上述したようなマクロブロックの処理順序関係さえ保たれていれば、どのようなマクロブロック⇔プロセッサ分担をしても矛盾なく復号処理できる。すなわち、マクロブロックの処理順序関係さえ保たれていれば、どのプロセッサがどのような順番でどのマクロブロックを処理するかは自由である。
【０００９】
上述のような状況下において、種々の復号処理に関する方式が開発され提案されている。例えば、後に記す特許文献１、２には、各マクロブロックの処理状態（実行中・処理完了など）を管理して走査しながら（可能であれば並列に）マクロブロック処理を行っていく仕組みが開示されている。
【００１０】
具体的に、特許文献１、２では、図１３に示すように、あるマクロブロックに対して１マクロブロック行下のマクロブロック行で、２つ左のマクロブロックを同時に処理するように並列化している。
【００１１】
つまり、図１３において、プロセッサ１、２、３が示すように、ピクチャ幅分の１マクロブロック行をプロセッサひとつで担当し、ひとつ下の１マクロブロック行は別のプロセッサが担当している。
【００１２】
各プロセッサ１、２、３は、１マクロブロック行について左から順番に処理を行うようにするとともに、１つ上のマクロブロック行に対して、２マクロブロック分遅れたタイミングで処理を行うようにしている。
【００１３】
また、後に記す特許文献３では、イントラマクロブロックとインターマクロブロックとの間に依存関係がないという点に注目し、１マクロブロック行をインターマクロブロックの直前で区切ってプロセッサ分担の境界を決めて復号処理を行うことが開示されている。
【００１４】
また、後に記す特許文献４では、用いるデコーダの数に応じて画面を横に分割（スライス）し、これを複数のデコーダで分担して処理する方式が記載されている。ここで画面の横に分割とは、画面の垂直方向に複数の領域に分割することを意味している。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００６−１２９２８４号公報
【特許文献２】特開２００６−１２９２８５号公報
【特許文献３】特開２００８−０７２６４７号公報
【特許文献４】特開２００６−３１９９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところで、ＭＰＥＧ−４、Ｈ．２６４、ＶＣ−１等の動画像符号化方式で符号化された動画像データを復号する場合に、実行効率を上げるためには以下に示す（ａ）〜（ｃ）の問題点を考慮しなければならない。
【００１７】
すなわち、  
（ａ）異なるプロセッサに割り当てられたマクロブロック間の順序関係により発生する、プロセッサの待ち時間  
（ｂ）マクロブロックの処理順序を正しく制御するための仕組みの複雑度  
（ｃ）参照するマクロブロックの処理結果を通信する必要があるので、その通信頻度とデータ転送のコスト  
についてである。
【００１８】
上述した特許文献１、２に記載された技術の場合、各マクロブロックの処理状態が管理されるので、上述の（ａ）の問題については効果的に解消することができる。しかしながら、仕組みが複雑になることが懸念され、上述の（ｂ）の問題が十分に解消できないとの指摘がある。
【００１９】
また、上述した特許文献１、２に記載された技術の場合、マクロブロック単位に復号処理を行う複数のプロセッサ間で、上のマクロブロック行の処理結果を通信する必要が生じる。この通信は１マクロブロックごとに行うというように、高い頻度で行わなければならない。また一般的に、プロセッサ間の通信は、プロセッサから離れた遅いメモリ（２次キャッシュメモリなど）を介して行う必要がある。このため、上述した（ｃ）の問題が十分に解消できないとの指摘がある。
【００２０】
そして、上述した特許文献３に記載された技術の場合、その仕組みが比較的に簡単であるので、上述した（ａ）、（ｂ）、（ｃ）の問題を効果的に解消できるようにも思える。しかし、特許文献３に記載された技術の場合、イントラマクロブロックやインターマクロブロックの発生の頻度等は異なるので、入力されるストリームによって並列度がまちまちになるか、そもそも全く並列化できないケースさえ考えられる。このため、復号処理の実行効率を向上させることができない場合もあると考えられる。
【００２１】
また、上述した特許文献４の場合、上述した特許文献４に記載された技術の場合には、上述もしたように、画面を横に分割しているが、これは１マクロブロック行が必ず１スライスとなるＭＰＥＧ−２にしか適用できない。
【００２２】
ＭＰＥＧ−４、Ｈ．２６４、ＶＣ−１にもスライスは存在し、スライスをまたぐマクロブロック間には依存関係がないので、スライス境界をプロセッサ分担の境界とすることも考えられる。しかし、上述した引用文献３の場合と同様に、入力ストリームによっては全く並列化できないケースがある。さらにピクチャ単位で考えた場合、Ｉピクチャ以外は動き補償による依存関係があるため、並列化は容易ではない。
【００２３】
このように、従来提案されている種々の復号処理の方式は、上述した（ａ）、（ｂ）、（ｃ）のいずれかの問題を解決することができず、復号処理の実行効率を十分に上げることができない場合があると考えられる。
【００２４】
以上のことに鑑み、この発明は、符号化された動画像データの復号処理の実行効率を安定に十分高くするため、上述した（ａ）、（ｂ）、（ｃ）の問題を全てクリアーできるようにすることを目的とする。
【課題を解決するための手段】
【００２５】
上記課題を解決するため、請求項１に記載の発明の復号処理装置は、
予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段と、
符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、前記複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配手段と、
前記複数の復号処理手段からの復号された動画像データの供給を受けて、１画面分の画像データを形成する形成手段と
を備える。
【００２６】
この請求項１に記載の発明の復号処理装置によれば、分配手段により、これに供給された動画像データは、復号処理手段の数に応じて、処理ブロックを最小単位として画面を縦の帯状部分に分割される。この分割されたそれぞれの縦の帯状部分に属する動画像データが、縦の帯状部分毎に異なる復号処理手段に分配される。
【００２７】
分配手段により複数の復号処理手段に分配された動画像データは、復号処理手段のそれぞれにおいて、予め決められた処理ブロック単位に復号処理がなされて画素データが復元され、これが形成手段に供給される。そして、形成手段により、データ圧縮前の元の１画面分の画像データが復元するようにされる。
【００２８】
このように、１画面分（１フレーム分）の画像データを、画面の縦の帯状部分に分割し、縦の帯状部分毎に異なる復号処理手段に復号処理を分担させる。これにより、縦の帯状部分の左端部や右端部の処理で、他の縦の帯状部分に属する処理ブロックの復号処理結果が必要になっても、その処理結果は、隣接する縦の帯状部分を処理する他の復号処理手段で得られるようにされる。したがって、復号処理手段における処理で待ち時間が発生することがないようにされる。
【００２９】
また、縦の帯状部分の左端部と右端部において、隣接する縦の帯状部分を担当する復号処理装置との間における処理結果の送受を考慮すればよいので、処理ブロックの処理順序を比較的に簡単に制御することができる。
【００３０】
また、復号処理結果の送受は、縦の帯状部分の左端部と右端部とにおいてのみ発生するので、復号処理手段間の復号処理結果の通信を少なくすることができ、データの転送のコストも低減させることができる。
【００３１】
すなわち、復号処理手段における待ち時間を発生させないようにすることができ、復号処理の処理順序の制御のために複雑な仕組みを設ける必要も無く、復号処理手段間のデータ通信も必要最小限度に押さえることができる。したがって、全体として効率的に復号処理を行うことができるようにされる。
【発明の効果】
【００３２】
この発明によれば、複数の復号処理手段間において、処理の待ち時間を発生させることが無いようにすることができる。
【００３３】
また、複数の復号処理手段間における依存性を低減させ、処理ブロックの処理順序を簡単に正しく制御することができる。
【００３４】
また、複数の復号処理手段間において、復号処理結果の通信（送受信）の頻度を低減させ、データ通信コストを低減させることができる。
【図面の簡単な説明】
【００３５】
【図１】この発明の一実施の形態が適用された復号処理装置の構成例を説明するためのブロック図である。
【図２】ビットストリーム解析部１において行われる画像データの分配処理を説明するための図である。
【図３】ビットストリーム解析部１において行われる画像データの分配処理を説明するための図である。
【図４】ビットストリーム解析部１で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。
【図５】ビットストリーム解析部１で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。
【図６】ビットストリーム解析部１で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。
【図７】復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理を説明するためのフローチャートである。
【図８】図７のステップＳ３で行われるマクロブロック単位の復号処理を説明するためのフローチャートである。
【図９】図１に示した復号処理装置において、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受の態様を説明するための図である。
【図１０】復号処理プロセッサ２（０）〜２（Ｎ−１）の復号処理の並列化を説明するための図である。
【図１１】画面とマクロブロックとの関係を説明するための図である。
【図１２】マクロブロック単位に復号処理を行う場合に復号結果を参照する周囲のマクロブロックについて説明するための図である。
【図１３】画面をスライスして復号処理を行う場合の従来の一例について説明するための図である。
【発明を実施するための形態】
【００３６】
以下、図を参照しながらこの発明による装置、方法、プログラムの一実施の形態について説明する。
【００３７】
［実施の形態の概要］
以下に説明する実施の形態の復号処理装置は、この発明の装置、方法、プログラムの一実施の形態が適用されたものである。そして、この実施の形態の復号処理装置は、例えば、ＭＰＥＧ−４、Ｈ．２６４、ＶＣ−１など近年の動画像符号化方式により符号化された動画像データの復号処理を行うことができるものである。
【００３８】
ここで、この実施の形態の復号処理装置の概要について説明する。この実施の形態の復号処理装置は、マクロブロック（ｍｂ）単位で動画像データの復号処理を行う装置であり、並列化のために複数の復号処理プロセッサ（復号処理ユニット）を備えている。
【００３９】
そして、この実施の形態の復号処理装置は、符号化された動画像データが形成する各画面を縦の帯状部分（帯状領域）に分割し、各縦の帯状部分に属するマクロブロック全てを復号処理プロセッサひとつあたりの処理分担とする手法をとっている。なお、縦の帯状部分は、画面を分割することにより形成した分割部分ということができる。
【００４０】
各復号処理プロセッサは、担当する縦の帯状部分の左上端マクロブロックから右方向へ、そして下方向の次のマクロブロック行へと進みながら、マクロブロック単位の復号処理を行う。
【００４１】
ＭＰＥＧ−４、Ｈ．２６４、ＶＣ−１など近年の動画像符号化フォーマットは、図１２を用いて上述もしたように、復号処理対象のマクロブロックに対して、左・左上・上・右上のマクロブロックの復号処理結果を参照することが規定されている。
【００４２】
これに対応するために、各復号処理プロセッサが各マクロブロック行において、  
（１）縦の帯状部分の左端マクロブロックの復号処理前には、左隣の縦の帯状部分を処理する復号処理プロセッサから左マクロブロックの処理結果を受信する。  
（２）縦の帯状部分の左端マクロブロックの復号処理後には、その処理結果を左隣の縦の帯状部分を処理する復号処理プロセッサに送信する。  
（３）縦の帯状部分の右端マクロブロックの復号処理前には、右隣の縦の帯状部分を処理する復号処理プロセッサから右上マクロブロックの処理結果を受信する。  
（４）縦の帯状部分の右端MBの復号処理後には、その処理結果を右隣の縦の帯状部分を処理する復号処理プロセッサに送信する。  
と言う処理を行う。
【００４３】
また、復号処理プロセッサ間における復号処理結果の送受信（通信処理）は、バッファを介したブロッキングアクセスによって行う手法をとる。
【００４４】
つまり、他のマクロブロックの復号処理の結果を受信しようとする復号処理プロセッサは、バッファが空である間は待機する。また、マクロブロックの復号処理の結果を送信しようとする復号処理プロセッサは、バッファが満杯である間は待機する。
【００４５】
この場合、送信されてバッファに一時記憶されたデータ（復号処理の結果）は、他の復号処理プロセッサによって受信するようにされた場合に、ＦＩＦＯ（First In First Out）方式で順に取り除かれる（読み出される）。なお、バッファの記憶容量は、通信する１マクロブロックの復号処理結果のサイズよりも大きいものとする。
【００４６】
さらに、この実施の形態の復号処理装置においては、復号処理プロセッサ毎に、１マクロブロック行ずつ階段状にずれた状態で、各縦の帯状部分の復号処理を並列実行する手法をとる。
【００４７】
具体的には、画面の左端の縦の帯状部分を担当する復号処理プロセッサが、上端側の１マクロブロック行から復号処理を開始し、２マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサが上端側の１マクロブロック行目の処理を開始する。
【００４８】
さらに、画面の左端の縦の帯状部分を担当する復号処理プロセッサが、上端側から３マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサが２マクロブロック行目の処理を開始する。
【００４９】
また、さらに右隣の縦の帯状部分を担当する復号処理プロセッサが１マクロブロック行目の処理を開始するというように、それぞれの縦の帯状部分毎に、処理するマクロブロック行が階段上に異なるようにされる。
【００５０】
このように構成することによって、通常、異なる復号処理プロセッサに割り当てられたマクロブロック間の順序関係により発生する可能性のある復号処理プロセッサの待ち時間を発生させないようにしている。
【００５１】
さらに、マクロブロックの処理順序を正しく制御するための仕組みをできるだけ簡単なものとなるようにしている。具体的には、上述もしたように、復号処理プロセッサ間における復号処理結果の送受信を、バッファを介したブロッキングアクセスによって行うことにより実現している。
【００５２】
さらに、画面の縦の帯状部分に分割し、各縦の帯状部分を異なる復号処理プロセッサプロセッサに割り当てているので、各縦の帯状部分の左端部と右端部とでしか他の復号処理プロセッサとの間でデータの送受を行わないようにすることができる。
【００５３】
これにより、他の復号処理プロセッサ間でのマクロブロックの復号処理結果の送受のための通信頻度を低減し、データ転送のコストを低下させることを実現している。以下、この実施の形態の復号処理装置について具体的に説明する。
【００５４】
［復号処理装置の構成例］
図１は、この実施の形態の復号処理装置の構成例を説明するためのブロック図である。図１に示すように、この実施の形態の復号処理装置は、ビットストリーム解析部１と、複数の復号処理プロセッサ２（０）、２（１）、…２（Ｎ−１）とを備えている。
【００５５】
また、各復号処理プロセッサ間には、第１の送受信バッファ３（０）、３（１）、…、３（Ｎ−２）と、第２の送受信バッファ４（０）、４（１）、…、４（Ｎ−２）と、フレームメモリ５とを備えている。
【００５６】
ビットストリーム解析部１は、詳しくは後述するが、ビットストリームの供給を受けて、これを複数の部分に分割し、後段の複数の復号処理プロセッサ２（０）、２（１）、…２（Ｎ−１）に分配する分配手段としての機能を実現するものである。
【００５７】
復号処理プロセッサ２（０）、２（１）、…２（Ｎ−１）のそれぞれは、マクロブロック単位に符号化された動画像データの復号処理を行う復号処理手段としての機能を実現するものである。
【００５８】
また、フレームメモリ５は、複数の復号処理プロセッサ２（０）、２（１）、…２（Ｎ−１）からの復号された画像データの供給を受けて、１画面（１ピクチャ（１フレーム））の画像データを形成する形成手段としての機能を実現するものである。
【００５９】
そして、ビットストリーム解析部１は、外部から符号化された動画像データであるビットストリームの供給を受ける。ここで、ビットストリームの供給元は、例えば、符号化されて送信されてくる放送信号を受信して復調するチューナ部や、符号化されてＤＶＤ（Digital Versatile Disc）等の記録媒体に記録されているデジタルコンテンツを読み出して再生する再生処理部などである。
【００６０】
ビットストリームはエントロピー符号化されているので、ビットストリーム解析部１は、これに供給されるビットストリームについて、用いられている動画符号化規格にしたがって、エントロピー復号して行く。
【００６１】
エントロピー復号の過程で、復号対象の動画像全体、あるいは、ピクチャ（画面）全体に関するパラメータを取得した場合には、ビットストリーム解析部１は、これを後段の各復号処理プロセッサ２（０）〜２（Ｎ−１）に対して区別無く出力する。ここで取得されるパラメータとしては、例えば、ＤＣＴ（Discrete Cosine Transform）係数や動きベクトルなどである。
【００６２】
そして、ビットストリーム解析部１は、１ピクチャ（１画面）分のマクロブロックデータを取得する。この後、ビットストリーム解析部１は、１ピクチャ（１画面）を所定の方式に従って縦の複数の帯状部分に分割する。ここで、縦の複数の帯状部分は、詳しくは後述もするが、図２に示すように、画面を水平方向に複数に分割することによって、縦の複数の帯状部分に分割するようにしている。
【００６３】
そして、ビットストリーム解析部１は、分割して形成した各縦の帯状部分に属するマクロブロックデータを縦の帯状部分毎に決まる復号処理プロセッサ２（０）〜２（Ｎ−１）に分配する。ビットストリーム解析部１は、このようなマクロブロックデータの分配処理を、ビットストリームに含まれるピクチャ（画面）分繰り返す。
【００６４】
このように、ビットストリーム解析部１は、１ピクチャ（１画面）を所定の方式に従って複数の縦の帯状部分に分割し、各縦の帯状部分に属するマクロブロックデータを縦の帯状部分毎に決まる復号処理プロセッサ２（０）〜２（Ｎ−１）に分配する。
【００６５】
なお、ビットストリーム解析部１において、マクロブロックデータの復号処理は、エントロピー復号を間違いなく処理する程度の最低限の復号を行えばよい。たとえば、ＤＣＴ係数に対する逆ＤＣＴ処理を施す必要はない。これらのエントロピー復号に依存しない復号処理は復号処理プロセッサ２（０）〜２（Ｎ−１）で行えばよい。
【００６６】
そして、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれでは、ビットストリーム解析部１からのマクロブロックデータについて、フレームメモリ５からのリファレンスピクチャをも参照して、マクロブロック単位に最終的な復号処理を行う。
【００６７】
具体的に、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれでは、逆ジグザグ変換、逆量子化、逆直交変換（含むオーバーラップスムージングフィルタ）、画面内予測（含むＡＣ／ＤＣ予測）等の処理が行われる。
【００６８】
さらに、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれでは、動きベクトル予測、動き補償（含む重みつき予測、レンジリダクション、インテンシティ補償）、デブロッキングフィルタ等の処理も行われる。
【００６９】
そして、上述もしたように、ビットストリーム解析部１は、１画面（１ピクチャ）毎に、縦の帯状部分に分割し、各縦の帯状部分のマクロブロックデータを異なる復号処理プロセッサに割り当てている。そして、復号処理に当たっては、図１２に示したように、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号結果も必要になる。
【００７０】
このため、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれでは、処理対象の縦の帯状部分の左端部及び右端部のマクロブロックを処理する場合には、隣接する復号処理プロセッサとの間でデータの送受を行う必要が生じる。
【００７１】
そこで、各縦の帯状部分の左端部及び右端部のマクロブロックを処理する場合に、隣接する復号処理プロセッサとの間でデータの送受を行う場合には、各復号処理プロセッサ間に設けられた第１のバッファ３、第２のバッファ４を介してデータの送受を行う。
【００７２】
すなわち、図１において、第１のバッファ３（０）〜３（Ｎ−１）は、復号処理プロセッサ３（ｉ）から復号処理プロセッサ３（ｉ＋１）へのデータ転送を行うためのバッファリングモジュールである。なお、変数ｉは、０〜Ｎ−２までの整数である。
【００７３】
同様に、第２のバッファ４（０）〜３（Ｎ−１）は、復号処理プロセッサ４（ｉ＋１）から復号処理プロセッサ４（ｉ）へのデータ転送を行うためのバッファリングモジュールである。なお、変数ｉは、０〜Ｎ−２までの整数である。
【００７４】
第１のバッファ３（０）〜３（Ｎ−２）及び第２のバッファ３（０）〜４（Ｎ−２）へのアクセスはブロッキングアクセスである。
【００７５】
すなわち、復号処理プロセッサ２（ｉ）が、第１のバッファ３（ｉ−１）や第２のバッファ４（ｉ）からデータの読み出しを行う場合、もし当該バッファが空であれば、当該バッファにデータが入るまで復号処理プロセッサ２（ｉ）は待機する。
【００７６】
同様に、復号処理プロセッサ２（ｉ）が、第２のバッファ４（ｉ−１）や第１のバッファ３（ｉ）にデータの書き込みを行う場合、もし当該バッファが満杯であれば、当該場ファイルに空き領域ができるまで復号処理プロセッサ２（ｉ）は待機させられる。この場合、バッファから読み出されたデータは、受信によりバッファから取り除かれることにより、バッファの空き領域が増える構成になっている。
【００７７】
このように、第１のバッファ３、第２のバッファ４へのアクセスをブロッキングアクセスとすることによって、マクロブロックの処理順序を簡単かつ正確に制御することができるようにしている。
【００７８】
なお、第１のバッファ３（０）〜３（Ｎ−２）と、第２のバッファ４（０）〜４（Ｎ−２）のそれぞれの容量は、通信する１マクロブロックの処理結果のデータサイズと等しければ十分である。
【００７９】
しかし、余裕を持たせた容量とすることももちろん可能である。第１のバッファ３（０）〜３（Ｎ−２）と、第２のバッファ４（０）〜４（Ｎ−２）のそれぞれの容量が十分に大きい場合、バッファには、ＦＩＦＯ（First In First Out）方式で入出力を行うようにすればよい。
【００８０】
このように、各復号処理プロセッサ間には、第１のバッファ３（０）〜３（Ｎ−２）、第２のバッファ４（０）〜４（Ｎ−２）が設けられ、各縦の帯状部分の境界に隣接するマクロブロックの復号処理結果を送受することができるようにしている。
【００８１】
なお、画面の最左端の縦の帯状部分を処理する場合には、それよりも左側にマクロブロックは存在しないので、左及び左上のマクロブロックの処理結果を参照する必要は無い。同様に、画面の最右端の縦の帯状部分を処理する場合には、それよりも右側にマクロブロックは存在しないので、右上のマクロブロックの処理結果を参照する必要は無い。
【００８２】
そして、各復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて復号処理の結果得られた画像データは、フレームメモリ５に供給されて記録される。フレームメモリ５は、復号処理プロセッサ２（０）〜２（Ｎ−１）の復号結果である画像データを一時記憶するものである。
【００８３】
フレームメモリ５に一時記憶された画像データは、図１に示したように、動き補償のためのリファレンスピクチャとして、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて参照されたり、外部へ動画像を形成する画像データとして出力されたりする。
【００８４】
このように、この実施の形態の復号処理装置においては、ビットストリーム解析部１が、これに供給されたビットストリームについて、画面毎に縦の帯状部分に分割する。そして、分割した各帯状部分に属するマクロブロックデータを、縦の帯状部分毎に異なる復号処理プロセッサ２（０）〜２（Ｎ−１）に供給して、復号処理を並列して行うことができるようにしている。
【００８５】
そして、後述もするように、この実施の形態の復号処理装置においては、例えば、図２示したように、縦の帯状部分に分割されるそれぞれの部分が、異なる復号処理プロセッサに分配される。
【００８６】
この例の復号処理装置においては、左端から順番に、最初の縦の帯状部分は復号処理プロセッサ２（０）に割り当てられ、次の縦の帯状部分は復号処理プロセッサ２（１）に割り当てられるというようにされる。
【００８７】
そして、画面の左端の縦の帯状部分を担当する復号処理プロセッサ２（０）が、上端側の１マクロブロック行から復号処理を開始し、２マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサ２（１）が上端側の１マクロブロック行目の処理を開始する。
【００８８】
さらに、画面の左端の縦の帯状部分を担当する復号処理プロセッサ２（０）が、上端側から３マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサ２（１）が２マクロブロック行目の処理を開始する。
【００８９】
また、さらに右隣の縦の帯状部分を担当する復号処理プロセッサ２（２）が１マクロブロック行目の処理を開始するというように、それぞれの縦の帯状部分毎に、処理するマクロブロック行が階段上に異なるようにされる。
【００９０】
このような、並列処理を行うことによって、目的とするマクロブロックを復号するに当たり、図１２に示したように、その周囲のマクロブロックの復号結果を参照する場合にも、処理の順序関係は大きくずれることがないようにしている。
【００９１】
［画面の分割とマクロブロックデータの分配］
次に、ビットストリーム解析部１において行われる、マクロブロックデータの復号処理プロセッサ２（０）〜２（Ｎ−１）への分配処理について説明する。図２、図３は、ビットストリーム解析部１において行われるマクロブロックデータの復号処理プロセッサ２（０）〜２（Ｎ−１）への分配処理について説明するための図である。
【００９２】
図２に示すように、この実施の形態のビットストリーム解析部１は、供給されるビットストリームに含まれる各画面（ピクチャ）について、水平方向に復号処理プロセッサ２（０）〜２（Ｎ−１）の数に対応する数の縦の帯状部分に分割する。
【００９３】
この場合に、縦の帯状部分毎に、その先頭位置（左上端位置）をｍｂ＿ｏｆｆｓｅｔ（ｉ）とし、横幅（水平方向の幅）をｍｂ＿ｗｉｄｔｈ（ｉ）として特定し、これを管理することができるようにしている。
【００９４】
具体的に、画面を縦の帯状部分に分割する場合についてする。図２に示すように、この実施の形態においては、処理対象のビットストリームが形成する各画面の、マクロブロックを最小単位とするピクチャ幅をｐｉｃ＿ｍｂ＿ｗｉｄｔｈとする。また、図２に示すように、処理対象のビットストリームが形成する各画面の、マクロブロックを最小単位とするピクチャ高をｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔとする。
【００９５】
例えば、ビットストリームが、１９２０ピクセル×１０８０ピクセルのいわゆるＦｕｌｌ  ＨＤ（Full High Definition Television）規格のものであるとする。
【００９６】
この場合、１６ピクセル×１６ピクセルのマクロブロックを最小単位として換算しなおすと、ピクチャ幅（ｐｉｃ＿ｍｂ＿ｗｉｄｔｈ）は、１２０マクロブロック（ｍｂ）となる。また、ピクチャ高（ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔ）は、６８マクロブロック（ｍｂ）となる。
【００９７】
このように、この実施の形態のビットストリーム解析部１で用いるピクチャ幅（ｐｉｃ＿ｍｂ＿ｗｉｄｔｈ）とピクチャ高（ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔ）とは、マクロブロックを最小単位として換算されたものである。したがって、以下において、画面上における位置の指定等は、全てマクロブロック単位のものとなる。
【００９８】
また、ビットストリーム解析部１は、後段に配置された復号処理プロセッサ２（０）〜２（Ｎ−１）の数を変数Ｎとする。この例の場合、図１に示したように、復号処理プロセッサを特定する変数（指標）は０（ゼロ）から始まっているので、復号処理プロセッサの数は、Ｎ個ということになる。
【００９９】
さらに、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれに対応して、変数ｍｂ＿ｏｆｆｓｅｔ（ｉ）と、ｍｂ＿ｗｉｄｔｈ（ｉ）とを設ける。
【０１００】
変数ｍｂ＿ｏｆｆｓｅｔ（ｉ）は、図２に示したように、分割されて形成された各縦の帯状部分の水平方向（ｘ軸上）の開始位置（左上端部の位置）を示すものである。また、変数ｍｂ＿ｗｉｄｔｈ（ｉ）は、図２に示したように、分割されて形成された各縦の帯状部分の幅（縦の帯状部分の幅）を示すものである。
【０１０１】
このように、この実施の形態においては、図２に示したように、各画面（ピクチャ）を水平方向に分割しているので、垂直方向（画面の縦方向）に帯状部分の大きさが変化することは無い。
【０１０２】
このため、各縦の帯状部分の水平方向（ｘ軸上）の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）と、各縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）とによって、分割された各縦の帯状部分の範囲を適切に把握することができる。
【０１０３】
そして、上述したマクロブロックを最小単位とするピクチャ幅（ｐｉｃ＿ｍｂ＿ｗｉｄｔｈ）とピクチャ高（ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔ）と、復号処理プロセッサの数Ｎとを用いて、変数ｍｂ＿ｏｆｆｓｅｔ（ｉ）、ｍｂ＿ｗｉｄｔｈ（ｉ）を求める。
【０１０４】
具体的な求め方は、図３に示す通りである。すなわち、図３の（１）式に示すように、変数ｄｉｖ＿ｍｂにピクチャ幅（ｐｉｃ＿ｍｂ＿ｗｉｄｔｈ）を復号処理プロセッサの数Ｎで割った場合の整数部分（商）を求める。この（１）式は、いわば画面を復号処理プロセッサの数の縦の帯状部分に分割する場合の各帯状部分の基準幅を求めるものである。
【０１０５】
次に、図３の（２）式に示すように、変数ｍｏｄ＿ｍｂにピクチャ幅（ｐｉｃ＿ｍｂ＿ｗｉｄｔｈ）を復号処理プロセッサの数Ｎで割った場合の余り（剰余）を求める。この（２）式は、いわば図３の（１）式で求めた各帯状部分の基準幅を調整する必要のあるマクロブロックの数を求めるものである。
【０１０６】
そして、図３の（２）式で求めた変数ｍｏｄ＿ｍｂが０（ゼロ）でない場合には、変数ｍｏｄ＿ｍｂが示す数の縦の帯状部分について、その基準幅に対して１ずつ加算する。つまり、変数ｍｏｄ＿ｍｂが「１」である場合には、１つの縦の帯状部分の基準幅に「１」を加算した幅がその縦の帯状部分の幅となる。また、変数ｍｏｄ＿ｍｂが「２」である場合には、２つの帯状部分の基準幅に「１」を加算した幅がそれら２つの帯状部分の幅となる。
【０１０７】
すなわち、この実施の形態において、変数ｉは、復号処理プロセッサを特定し、また、復号処理プロセッサの順番にも対応する０〜Ｎ−１までの値を取る情報である。また、変数ｉは、復号処理プロセッサが担当する縦の帯状部分をも特定する情報である。
【０１０８】
このため、変数ｉが、ピクチャ幅をＮで割り算したときの余りであるｍｏｄ＿ｍｂよりも小さい場合には、図３の（３）式により、変数ｉによって特定される復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を求める。
【０１０９】
この場合には、変数ｄｉｖ＿ｍｂが示す帯状部分の基準幅に対して「１」を加算したものが、復号処理プロセッサ２（ｉ）が担当する帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）となる。
【０１１０】
したがって、ｉ＜ｍｏｄ＿ｍｂの範囲において、復号処理プロセッサ２（ｉ）が担当する帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）は、基準幅ｄｉｖ＿ｍｂに「１」を加算した値となる。
【０１１１】
また、変数ｉが、ピクチャ幅をＮで割り算したときの余りであるｍｏｄ＿ｍｂと同じか大きい場合には、図３の（４）式により、変数ｉによって特定される復号処理プロセッサ２（ｉ）が担当する帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を求める。
【０１１２】
この場合には、変数ｄｉｖ＿ｍｂが示す縦の帯状部分の基準幅そのものが、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）となる。したがって、ｉ≧ｍｏｄ＿ｍｂの範囲において、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）は、基準幅ｄｉｖ＿ｍｂそのもの値となる。
【０１１３】
また、各縦の帯状部分の開始位置（左上端部の位置）であるｍｂ＿ｏｆｆｓｅｔ（ｉ）は、図３の（３）式、（４）式を用いて算出した、各縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を考慮することによって、求めることができる。
【０１１４】
すなわち、変数ｉが０（ゼロ）である場合、これは、最初の復号処理プロセッサ２（０）が担当する画面最左端の縦の帯状部分を意味している。このため、復号処理プロセッサ２（０）が担当する帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）は、図３において（５）式が示すように０（ゼロ）ということになる。
【０１１５】
また、変数ｉが０（ゼロ）より大きい場合には、前の帯状部分の先頭位置に、前の帯状部分の幅を加算すれば、復号処理プロセッサ（ｉ）の先頭位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）が求められる。
【０１１６】
したがって、変数ｉが０（ゼロ）より大きい場合、復号処理プロセッサ（ｉ）が担当する縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）は、図３の（６）式により求められる。
【０１１７】
すなわち、変数ｉが０（ゼロ）より大きい場合、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ−１）に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ−１）を加算することにより、ｍｂ＿ｏｆｆｓｅｔ（ｉ）が求められる。
【０１１８】
これにより、ビットストリーム解析部１は、図２に示したように、ピクチャ高ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔは変わらないが、開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）とｍｂ＿ｗｉｄｔｈ（ｉ）とが変わる縦の帯状部分を適切に特定し、分割することができる。
【０１１９】
そして、図２に示したように、各画面を復号処理プロセッサ２（０）〜２（Ｎ−１）の数分の縦の帯状部分に分割することができる。そして、図２に示したように、各縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）〜ｍｂ＿ｏｆｆｓｅｔ（Ｎ−１）と、各縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）〜ｍｂ＿ｗｉｄｔｈ（Ｎ−１）とを適切に特定することができる。
【０１２０】
そして、ビットストリーム解析部１は、図２において、画面に向かって最左端の縦の帯状部分を復号処理プロセッサ２（０）が担当する部分として、当該縦の帯状部分のマクロブロックデータを復号処理プロセッサ２（０）に供給する。
【０１２１】
また、ビットストリーム解析部１は、図２において、画面に向かって左から２番目の縦の帯状部分を復号処理プロセッサ２（１）が担当する部分として、当該縦の帯状部分のマクロブロックデータを復号処理プロセッサ２（１）に供給する。というように、分割した縦の帯状部分のそれぞれのマクロブロックデータを、復号処理プロセッサ２（０）〜２（Ｎ−１）の内の担当する（対応する）に分配することができる。
【０１２２】
そして、ビットストリーム解析部１は、図３を用いて説明したようにして求められるｍｂ＿ｏｆｆｓｅｔ（ｉ）と、ｍｂ＿ｗｉｄｔｈ（ｉ）とに基づいて、適切にマクロブロックデータを目的とする復号処理プロセッサに分配できる。
【０１２３】
より具体的には、マクロブロックの水平位置が、ｍｂ＿ｏｆｆｓｅｔ（ｉ）以上であって、ｍｂ＿ｏｆｆｓｅｔ（ｉ）＋ｍｂ＿ｗｉｄｔｈ（ｉ）未満のマクロブロックデータは、復号処理プロセッサ２（ｉ）に送るようにすればよい。
【０１２４】
［画面の分割とマクロブロックデータの分配処理の具体例］
次に、図２、図３を用いて説明したビットストリーム解析部１で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明する。図４〜図６は、ビットストリーム解析部１で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。
【０１２５】
以下においては、マクロブロックを最小単位とした場合の画面のピクチャ幅ｐｉｃ＿ｍｂ＿ｗｉｄｔｈが、１００マクロブロックである場合（図４）、１０１マクロブロックである場合（図５）、１０２マクロブロックである場合（図６）の３つ場合について説明する。なお、復号処理プロセッサの数は、いずれの場合の３個であるものとして説明する。
【０１２６】
［ピクチャ幅が１００マクロブロックである場合］
図４は、マクロブロックを最少単位とする画面のピクチャ幅ｐｉｃ＿ｍｂ＿ｗｉｄｔｈが１００マクロブロックで、復号処理プロセッサの数Ｎが３個である場合の、ビットストリーム解析部１の処理を説明するための図である。
【０１２７】
図４において、図４（Ａ）は、ビットストリーム解析部１において行われる処理を示し、図４（Ｂ）は、ビットストリーム解析部１により分割された縦の帯状部分について具体的に説明するための図である。
【０１２８】
この例の場合、図４（Ａ）の（１）式に示すように、変数ｄｉｖ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１００」を復号処理プロセッサの数である「３」で割った場合の商である「３３」が入力される。これが、各縦の帯状部分の基準幅になる。
【０１２９】
そして、図４（Ａ）の（２）式に示すように、変数ｍｏｄ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１００」を復号処理プロセッサの数である「３」で割った場合の余りである「１」が入力される。
【０１３０】
このようにして求めた変数ｄｉｖ＿ｍｂと、変数ｍｏｄ＿ｍｂと、変数ｉとに基づいて、各縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）が特定され、各縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）が特定される。
【０１３１】
そして、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、変数ｍｏｄ＿ｍｂの値「１」より小さい（ｉ＜１）。このため、図３の（３）式が当てはまり、図４（Ａ）の（３）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、基本幅「３３」に「１」を加算した値となる。
【０１３２】
また、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、図３の（５）式に示したように、基準値「０」と同じである（ｉ＝０）。このため、図３の（５）式が当てはまり、図４（Ａ）の（４）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）は、「０（ゼロ）」になる。
【０１３３】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、変数ｍｏｄ＿ｍｂの値「１」と同じである（ｉ＝１）。このため、図３の（４）式が当てはまり、図４（Ａ）の（５）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、「３３」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、基本幅「３３」のままとなる。
【０１３４】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図４（Ａ）の（６）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、「３４」になる。
【０１３５】
すなわち、当該縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４を加算した値となる。
【０１３６】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、変数ｍｏｄ＿ｍｂの値「１」より大きい（ｉ＞１）。このため、図３の（４）式が当てはまり、図４（Ａ）の（７）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、「３３」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、基本幅「３３」のままとなる。
【０１３７】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図４（Ａ）の（８）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（２）は、「６７」になる。
【０１３８】
すなわち、当該帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３３を加算した値となる。
【０１３９】
この具体例の場合には、図４（Ｂ）に示すように、復号処理プロセッサ２（０）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０、縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４の領域であると特定できる。
【０１４０】
同様に、復号処理プロセッサ２（１）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４、縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３３の領域であると特定できる。
【０１４１】
また、復号処理プロセッサ２（２）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（２）＝６７、縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）＝３３の領域であると特定できる。
【０１４２】
［ピクチャ幅が１０１マクロブロックである場合］
図５は、マクロブロックを最少単位とする画面のピクチャ幅ｐｉｃ＿ｍｂ＿ｗｉｄｔｈが１０１マクロブロックで、復号処理プロセッサの数Ｎが３個である場合の、ビットストリーム解析部１の処理を説明するための図である。
【０１４３】
図５において、図５（Ａ）は、ビットストリーム解析部１において行われる処理を示し、図５（Ｂ）は、ビットストリーム解析部１により分割された縦の帯状部分について具体的に説明するための図である。
【０１４４】
この例の場合、図５（Ａ）の（１）式に示すように、変数ｄｉｖ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１０１」を復号処理プロセッサの数である「３」で割った場合の商である「３３」が入力される。これが、各縦の帯状部分の基準幅になる。
【０１４５】
そして、図５（Ａ）の（２）式に示すように、変数ｍｏｄ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１０１」を復号処理プロセッサの数である「３」で割った場合の余りである「２」が入力される。
【０１４６】
このようにして求めた変数ｄｉｖ＿ｍｂと、変数ｍｏｄ＿ｍｂと、変数ｉとに基づいて、各帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）が特定され、各帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）が特定される。
【０１４７】
そして、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、変数ｍｏｄ＿ｍｂの値「２」より小さい（ｉ＜２）。このため、図３の（３）式が当てはまり、図５（Ａ）の（３）式に示すように、その帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、基本幅「３３」に「１」を加算した値となる。
【０１４８】
また、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、図３の（５）式に示したように、基準値「０」と同じである（ｉ＝０）。このため、図３の（５）式が当てはまり、図５（Ａ）の（４）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）は、「０（ゼロ）」になる。
【０１４９】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、ｍｏｄ＿ｍｂの値「２」より小さい（ｉ＜２）。このため、図３の（３）式が当てはまり、図５（Ａ）の（５）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、基本幅「３３」に「１」を加算した値となる。
【０１５０】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図５（Ａ）の（６）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、「３４」になる。
【０１５１】
すなわち、当該縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４を加算した値となる。
【０１５２】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、変数ｍｏｄ＿ｍｂの値「２」と同じである（ｉ＝２）。このため、図３の（４）式が当てはまり、図５（Ａ）の（７）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、「３３」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、基本幅「３３」のままとなる。
【０１５３】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図５（Ａ）の（８）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（２）は、「６８」になる。
【０１５４】
すなわち、当該帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３４を足した値となる。
【０１５５】
この具体例の場合には、図５（Ｂ）に示すように、復号処理プロセッサ２（０）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４の領域であると特定できる。
【０１５６】
同様に、復号処理プロセッサ２（１）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３４の領域であると特定できる。また、復号処理プロセッサ２（２）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（２）＝６８、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）＝３３の領域であると特定できる。
【０１５７】
［ピクチャ幅が１０２マクロブロックである場合］
図６は、マクロブロックを最少単位とする画面のピクチャ幅ｐｉｃ＿ｍｂ＿ｗｉｄｔｈが１０２マクロブロックで、復号処理プロセッサの数Ｎが３個である場合の、ビットストリーム解析部１の処理を説明するための図である。
【０１５８】
図６において、図６（Ａ）は、ビットストリーム解析部１において行われる処理を示し、図６（Ｂ）は、ビットストリーム解析部１により分割された縦の帯状部分について具体的に説明するための図である。
【０１５９】
この例の場合、図６（Ａ）の（１）式に示すように、変数ｄｉｖ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１０２」を復号処理プロセッサの数である「３」で割った場合の商である「３４」が入力される。これが、縦の各帯状部分の基準幅になる。
【０１６０】
そして、図６（Ａ）の（２）式に示すように、変数ｍｏｄ＿ｍｂには、マクロブロック単位で表現されたピクチャ幅である「１０２」を復号処理プロセッサの数である「３」で割った場合の余りが入力される。しかし、この場合、余りは出ないので、変数ｍｏｄ＿ｍｂには、「０」が入力される。
【０１６１】
このようにして求めた変数ｄｉｖ＿ｍｂと、変数ｍｏｄ＿ｍｂと、変数ｉとに基づいて、各縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）が特定され、各縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）が特定される。
【０１６２】
そして、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、変数ｍｏｄ＿ｍｂの値「０」と同じである（ｉ＝０）。このため、図３の（４）式が当てはまり、図６（Ａ）の（３）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）は、基本幅「３４」のままとなる。
【０１６３】
また、復号処理プロセッサ（０）が担当する縦の帯状部分については、変数ｉは「０（ゼロ）」であり、図３の（５）式に示したように、基準値「０」と同じである（ｉ＝０）。このため、図３の（５）式が当てはまり、図６（Ａ）の（４）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）は、「０（ゼロ）」になる。
【０１６４】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、変数ｍｏｄ＿ｍｂの値「０」より大きい（ｉ＞０）。このため、図３の（４）式が当てはまり、図６（Ａ）の（５）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）は、基本幅「３４」のままとなる。
【０１６５】
また、復号処理プロセッサ（１）が担当する縦の帯状部分については、変数ｉは「１」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図６（Ａ）の（６）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、「３４」になる。すなわち、当該縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４を加算した値となる。
【０１６６】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、変数ｍｏｄ＿ｍｂの値「０」より大きい（ｉ＞０）。このため、図３の（４）式が当てはまり、図６（Ａ）の（７）式に示すように、その縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、「３４」になる。すなわち、当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）は、基本幅「３４」のままとなる。
【０１６７】
また、復号処理プロセッサ（２）が担当する縦の帯状部分については、変数ｉは「２」であり、図３の（６）式に示したように、基準値「０」より大きい（ｉ＞０）。このため、図３の（６）式が当てはまり、図６（Ａ）の（８）式に示すように、その縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（２）は、「６８」になる。
【０１６８】
すなわち、当該縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）は、１つ前の縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４に、１つ前の縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３４を足した値となる。
【０１６９】
この具体例の場合には、図６（Ｂ）に示すように、復号処理プロセッサ２（０）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（０）＝０、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（０）＝３４の領域であると特定できる。
【０１７０】
同様に、復号処理プロセッサ２（１）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（１）＝３４、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（１）＝３４の領域であると特定できる。また、復号処理プロセッサ２（２）が担当する縦の帯状部分は、その開始位置ｍｂ＿ｏｆｆｓｅｔ（２）＝６８、帯状部分の幅ｍｂ＿ｗｉｄｔｈ（２）＝３４の領域であると特定できる。
【０１７１】
図４〜図６に示したように、ビットストリーム解析部１は、ビットストリームが形成する画面のマクロブロックを最小単位とするピクチャ幅と、復号処理を実行する復号処理プロセッサの数に応じて、画面を縦の複数の帯状部分に分割することができる。
【０１７２】
したがって、どのような画面サイズの動画像データが供給された場合であっても、その画像データの画面サイズに応じて、適切に画面を縦の帯状部分に分割し、その縦の帯状部分を異なる復号処理プロセッサに分配して並列処理することができる。
【０１７３】
具体的には、上述もしたように、マクロブロックの水平位置が、ｍｂ＿ｏｆｆｓｅｔ（ｉ）以上であって、ｍｂ＿ｏｆｆｓｅｔ（ｉ）＋ｍｂ＿ｗｉｄｔｈ（ｉ）未満のマクロブロックデータは、復号処理プロセッサ２（ｉ）に送るようにすればよい。
【０１７４】
［復号処理プロセッサ２（ｉ）における処理］
上述したように、ビットストリーム解析部１により、画面が分割されて形成された縦の各帯状部分のマクロブロックデータが、対応する復号処理プロセッサ２（０）〜２（Ｎ−１）に分配されて復号処理が行われる。
【０１７５】
ここでは、図１に示したこの実施の形態の復号処理装置の復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて行われる復号処理について、図７、図８のフローチャートを参照しながら説明する。
【０１７６】
図７は、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理を説明するためのフローチャートである。また、図８は、図７のステップＳ３で行われるマクロブロック単位の復号処理を説明するためのフローチャートである。
【０１７７】
なお、図１に示した復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれで行われる復号処理は同様の処理である。このため、以下においては説明を簡単にするため、復号処理プロセッサ２（ｉ）（ｉは、０〜Ｎ−１までの整数）が行う処理として説明する。
【０１７８】
まず、図７に示した、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理について説明する。
【０１７９】
１画面の画像データを処理する場合、その原点は左上端部となる。すなわち、図２に示したように、縦軸をｙ軸、横軸をｘ軸とすると、原点（０，０）は、画面の左上端部である。
【０１８０】
そして、各縦の帯状部分（分割領域）の処理の開始位置は、ｙ軸上は０（ゼロ）であるが、ｘ軸上では、各縦の帯状部分の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）が示す位置となる。すなわち、各縦の帯状部分の処理の開始位置は、（ｍｂ＿ｏｆｆｓｅｔ（ｉ），０）ということになる。
【０１８１】
そこで、復号処理プロセッサ２（ｉ）は、ｙ軸上の位置を示す変数ｍｂ＿ｙ（ｉ）に「０（ゼロ）」をセットする（ステップＳ１）。次に、復号処理プロセッサ２（ｉ）は、ｘ軸上の位置を示す変数ｍｂ＿ｘ（ｉ）に、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分のｘ軸上の開始位置を示す変数ｍｂ＿ｏｆｆｓｅｔ（ｉ）の値をセットする（ステップＳ２）。
【０１８２】
そして、復号処理プロセッサ２（ｉ）は、（ｍｂ＿ｘ（ｉ）、ｍｂ＿ｙ（ｉ））で特定される位置のマクロブロックの復号処理（ＭＢ処理）を実行する（ステップＳ３）。このステップＳ３の処理の詳細については後述する。
【０１８３】
ステップＳ３において、（ｍｂ＿ｘ（ｉ）、ｍｂ＿ｙ（ｉ））の位置のマクロブロックの復号処理（ＭＢ処理）が終了すると、復号処理プロセッサ２（ｉ）は、変数ｍｂ＿ｘ（ｉ）に「１」を加算する（ステップＳ４）。
【０１８４】
次に、復号処理プロセッサ２（ｉ）は、ｘ軸上の位置を示す変数ｍｂ＿ｘ（ｉ）が、当該縦の帯状部分のｘ軸上の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）に当該帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を加算した値より小さいか否かを判断する（ステップＳ５）。
【０１８５】
このステップＳ５の判断処理は、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の１マクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了したか否かを判断する処理である。
【０１８６】
ステップＳ５の判断処理において、担当する縦の帯状部分の１マクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了していない判断したときには、ステップＳ３からの処理を繰り返す。
【０１８７】
すなわち、ｘ軸上の位置を示す変数ｍｂ＿ｘ（ｉ）が、ｍｂ＿ｏｆｆｓｅｔ（ｉ）＋ｍｂ＿ｗｉｄｔｈ（ｉ）より小さいときには、１マクロブロック行の全部のマクロブロックについて復号処理が終了していないことになるので、ステップＳ３からの処理を繰り返す。
【０１８８】
また、ステップＳ５の判断処理において、担当する縦の帯状部分の１マクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了したと判断したときには、復号処理プロセッサ２（ｉ）は、変数ｍｂ＿ｙ（ｉ）に「１」を加算する（ステップＳ６）。
【０１８９】
すなわち、ｘ軸上の位置を示すｍｂ＿ｘ（ｉ）が、ｍｂ＿ｏｆｆｓｅｔ（ｉ）＋ｍｂ＿ｗｉｄｔｈ（ｉ）より小さくない場合には、１マクロブロック行の全部のマクロブロックについて復号処理を終了したと判断できるので、ステップＳ６の処理を実行する。
【０１９０】
そして、復号処理プロセッサ２（ｉ）は、ｙ軸上の位置を示す変数ｍｂ＿ｙ（ｉ）が、画面のピクチャ高ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔより小さいか否かを判断する（ステップＳ７）。
【０１９１】
このステップＳ７の判断処理は、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了したか否かを判断する処理である。
【０１９２】
ステップＳ７の判断処理において、担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了していないと判断したときには、復号処理プロセッサ２（ｉ）は、ステップＳ２からの処理を繰り返す。
【０１９３】
つまり、ｙ軸上の位置を示すｍｂ＿ｙ（ｉ）が、画面のピクチャ高ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔより小さいと判断した場合には、その縦の帯状部分の全部のマクロブロック行の復号処理が終わっていないことが分かる。この場合には、ステップＳ２からの処理を繰り返すことにより、次のマクロブロック行の処理を行うことになる。
【０１９４】
また、ステップＳ７の判断処理において、担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理（ＭＢ処理）を終了したと判断したときには、復号処理プロセッサ２（ｉ）は、この図７に示す処理を終了する。
【０１９５】
つまり、ｙ軸上の位置を示すｍｂ＿ｙ（ｉ）が、画面のピクチャ高ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔより小さくないと判断した場合には、その縦の帯状部分の全部のマクロブロック行の復号処理が終わったことが分かる。この場合には、図７に示した処理を終了する。そして、新たな画面（新たなピクチャ）についての復号処理を行うことになる。
【０１９６】
このように、この実施の形態の復号処理装置の復号処理プロセッサ２（ｉ）のそれぞれは、自機が担当する縦の帯状部分において、左上端部のマクロブロックを復号処理の開始ブロックとする。
【０１９７】
そして、当該開始ブロックから右端に向かう方向に１マクロブロック行の各マクロブロックの復号処理を行い、１マクロブロック行の復号処理が終了したら、同様にして次のマクロブロック行の処理を行うようにしている。これにより、各縦の帯状部分の左上端部から右下端部に向かうようにして、各マクロブロックの復号処理が行われる。
【０１９８】
［マクロブロック単位の復号処理（ＭＢ処理）］
次に、図７に示したステップＳ３において行われるマクロブロックの復号処理（ＭＢ処理）について、図８を参照しながら説明する。
【０１９９】
この実施の形態の復号処理プロセッサ２（ｉ）においては、上述もしたように、マクロブロック単位に復号処理を行うが、図１２に示したように、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号結果を参照する必要がある。
【０２００】
そして、この実施の形態の復号処理装置においては、図２に示したように、画面を縦の帯状部分に分割して、各縦の帯状部分の復号処理を異なる復号処理プロセッサに分担させるようにしている。
【０２０１】
このため、縦の帯状部分の左端部や右端部を処理する場合には、隣接する縦の帯状部分を処理する他の復号処理プロセッサから目的とするマクロブロックの復号結果の提供を受ける必要がある。また、自機から当該他の復号処理プロセッサに対してマクロブロックの復号結果を提供しなければならない場合もある。
【０２０２】
このような、復号処理プロセッサ間におけるマクロブロックの復号結果の送受信をも、この図８に示す処理において行うことができるようにしている。
【０２０３】
そして、図８に示したフローチャートの説明を簡単にするため、まず、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受信の態様について、図９を参照しながら説明する。
【０２０４】
図９は、この実施の形態の復号処理装置において、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受信の態様を説明するための図である。
【０２０５】
例えば、図９において、復号処理プロセッサ２（ｉ）が担当する縦の帯状部分の左端部に位置するマクロブロックＡが復号対象であるとする。この場合、マクロブロックＡを復号処理するためには、左のマクロブロックＹ、左上のマクロブロックＸ、上のマクロブロックＢ、右上のマクロブロックＣの復号結果が必要となる。
【０２０６】
そして、図９に示したように、マクロブロックＡに対して、マクロブロックＸ、Ｙ、Ｚのそれぞれは、復号処理プロセッサ２（ｉ−１）が担当する異なる縦の帯状部分に属するものである。
【０２０７】
このため、図９においてマクロブロックＡを復号する場合には、復号処理プロセッサ２（ｉ）は、復号処理プロセッサ２（ｉ−１）からマクロブロックＹの処理結果を受信して、復号処理を行う。
【０２０８】
したがって、復号処理プロセッサ２（ｉ−１）においては、マクロブロックＹの復号処理を行った場合に、その復号結果を、復号処理プロセッサ２（ｉ）に送信するようにしておく。
【０２０９】
この場合、左上のマクロブロックＸの復号結果は、図９において点線矢印で示したように、マクロブロックＡが属する行の直前の行において、マクロブロックＢの復号処理を行ったときに、復号処理プロセッサ２（ｉ−１）から既に受信しているのでこれを用いる。
【０２１０】
また、マクロブロックＢ、Ｃについては、復号処理プロセッサ（ｉ）で既に復号したマクロブロックであるので、自プロセッサにおけるマクロブロックＢ、Ｃの復号結果を参照すればよい。
【０２１１】
そして、復号処理プロセッサ２（ｉ）は、マクロブロックＡの復号処理を行った場合に、その復号結果を、復号処理プロセッサ２（ｉ−１）に送信しておく。そして、復号処理プロセッサ２（ｉ−１）において、マクロブロックＺの復号処理を行う場合に、復号処理プロセッサ２（ｉ）から送信されたマクロブロックＡの復号結果を受信して用いることができるようにされる。
【０２１２】
これらのことは、図９において、復号処理プロセッサ２（ｉ）が処理する縦の帯状部分において、右端部に位置するマクロブロックＤを処理する場合にも、送受信の順番は異なるように見えるが、ほぼ同様に考えることができる。
【０２１３】
すなわち、復号処理プロセッサ２（ｉ）が、マクロブロックＤを復号処理する場合には、右側に隣接する縦の帯状部分を担当する復号処理プロセッサ２（ｉ＋１）からマクロブロックＥを復号処理したときに復号結果を受信する。したがって、復号処理プロセッサ２（ｉ＋１）は、マクロブロックＥを復号処理したときに、その復号結果を復号処理プロセッサ２（ｉ）に送信しておく。
【０２１４】
復号処理プロセッサ２（ｉ）は、マクロブロックＤを処理する場合、その左、左上、上の各マクロブロックの復号処理結果も必要になるが、これらは、復号処理プロセッサ２（ｉ）において既に復号処理した結果を用いるようにすればよい。
【０２１５】
そして、復号処理プロセッサ２（ｉ）は、マクロブロックＤを復号処理した場合に、その処理結果を復号処理プロセッサ２（ｉ＋１）に送信しておく。これにより、復号処理プロセッサ２（ｉ＋１）において、マクロブロックＦの復号処理を行う場合に、その左側のマクロブロックＤの復号結果を用いることができるようにされる。
【０２１６】
このように、復号処理プロセッサ間通信により、各縦の帯状部分の各マクロブロック行の左端マクロブロックにおいて、左マクロブロックの処理結果を知ることができる。この場合、左上マクロブロックの処理結果は１マクロブロック行上の処理時に受信したものを記憶しておけばよい。同様に、各帯の各マクロブロック行の右端マクロブロックにおいて、右上マクロブロックの処理結果を知ることができる。
【０２１７】
また、復号対象のマクロブロックに対して、左・左上・上・右上のマクロブロックが同じ縦の帯状部分に属している場合は、復号処理プロセッサ間の通信は不要で、自プロセッサ内で復号処理結果を記憶保持するようにしておき、これを利用するようにすればよい。
【０２１８】
このように、この実施の形態の復号処理装置においては、縦の帯状部分の左端部、右端部においては、隣接する縦の帯状部分を処理する復号処理プロセッサ間で復号結果の送信、受信が行われる。
【０２１９】
この復号結果の送信、受信を行う処理が、以下に説明する図８に示した復号処理のステップＳ３２、ステップＳ３４、ステップＳ３７、ステップＳ３９において行うようにされる。
【０２２０】
なお、復号処理結果の送信、受信は、実際には、図１に示したように、各復号処理プロセッサ間に設けられる第１のバッファ３（０）〜３（Ｎ−２）、第２のバッファ４（０）〜４（Ｎ−２）を介して行われる。
【０２２１】
次に、図７に示したステップＳ３において行われるマクロブロック単位の復号処理について、図８を参照しながら詳細に説明する。
【０２２２】
上述したように、図７に示した処理においては、処理対象のマクロブロックの位置が、ｘ軸上の位置を示す変数ｍｂ＿ｘ（ｉ）と、ｙ軸上の位置を示す変数ｍｂ＿ｙ（ｉ）とによって指示される。
【０２２３】
そして、復号処理プロセッサ２（ｉ）は、以下の（条件１）、（条件２）を満足するか否かを判断する（ステップＳ３１）。すなわち、ステップＳ３１においては、  
（条件１）処理対象のマクロブロックのｘ軸上の位置ｍｂ＿ｘ（ｉ）が、処理対象の縦の帯状部分のｘ軸上の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）と同じである。かつ、
（条件２）当該縦の帯状部分が、画面の最左端の縦の帯状部分でない。  
か否かを判断する。
【０２２４】
このステップＳ３１の判断処理は、処理対象のマクロブロックが属する縦の帯状部分の左端部に位置し、当該縦の帯状部分が画面の最左端の縦の帯状部分でないか否かを判断する処理である。
【０２２５】
ステップＳ３１の判断処理において、（条件１）と（条件２）とを共に満足すると判断したときには、復号処理プロセッサ２（ｉ）は、第１のバッファ３（ｉ−１）から左のマクロブロックの復号処理結果を受信する（ステップＳ３２）。
【０２２６】
このステップＳ３２の処理は、図９を用いて説明したように、処理対象がマクロブロックＡである場合に、復号処理プロセッサ２（ｉ−１）におけるマクロブロックＹの復号結果を受信する処理である。
【０２２７】
ステップＳ３１の判断処理において、（条件１）と（条件２）とのいずれか一方でも満足しないと判断した場合、及び、ステップＳ３２の処理の後には、ステップＳ３３の判断処理を実行する。
【０２２８】
すなわち、復号処理プロセッサ２（ｉ）は、以下の（条件３）、（条件４）、（条件５）を満足するか否かを判断する（ステップＳ３３）。具体的に、ステップＳ３３においては、  
（条件３）処理対象のマクロブロックのｘ軸上の位置ｍｂ＿ｘ（ｉ）が、処理対象の縦の帯状部分のｘ軸上の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）に当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を加算し、さらに「１」を減算した値と同じである。かつ  
（条件４）変数ｉが、Ｎ−１と同じである。かつ  
（条件５）処理対象のマクロブロックのｙ軸上の位置ｍｂ＿ｙ（ｉ）が、０（ゼロ）より大きい。  
か否かを判断する。
【０２２９】
このステップＳ３３の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の右端部に位置し、当該縦の帯状部分が画面の最右端の縦の帯状部分でなく、しかも縦の帯状部分の最上端のマクロブロック行に位置していないか否かを判断する処理である。
【０２３０】
ステップＳ３３の判断処理において、（条件３）と（条件４）と（条件５）とをいずれも満足すると判断したときには、復号処理プロセッサ２（ｉ）は、第２のバッファ４（ｉ）から右上のマクロブロックの復号処理結果を受信する（ステップＳ３４）。
【０２３１】
このステップＳ３４の処理は、図９を用いて説明したように、例えば、処理対象がマクロブロックＤである場合に、復号処理プロセッサ２（ｉ＋１）におけるマクロブロックＥの復号結果を受信する処理である。
【０２３２】
ステップＳ３３の判断処理において、（条件３）と（条件４）と（条件５）のいずれか１つでも満足しないと判断した場合、及び、ステップＳ３４の処理の後には、ステップＳ３５の復号処理を実行する。
【０２３３】
復号処理プロセッサ２（ｉ）は、復号対象の動画像データで用いられている動画像符号化規格で定められている通りに、座標（ｍｂ＿ｘ（ｉ）、ｍｂ＿ｙ（ｉ））のマクロブロックデータから画素を復号し、これをフレームメモリ５に書き込む（ステップＳ３５）。
【０２３４】
このステップＳ３５で行われる具体的な処理は、上述した復号処理プロセッサ２（０）〜２（Ｎ−１）が行う種々の処理が含まれる。なお、動画像データの復号処理の一例が、例えば、特願２００６−１２９２８４号公報の段落［００３９］〜段落［００５１］等に説明されている。また、用いる動画像符号化規格によっても、復号処理が異なる場合もあるので、詳しくは個々の動画像符号化規格の規格書に準拠した復号処理を行うことになる。
【０２３５】
そして、ステップＳ３５の目的とするマクロブロックの復号処理の後、復号処理プロセッサ２（ｉ）は、ステップＳ３６の判断処理を実行する。
【０２３６】
復号処理プロセッサ２（ｉ）は、以下の（条件６）、（条件７）、（条件８）を満足するか否かを判断する（ステップＳ３６）。すなわち、ステップＳ３６においては、  
（条件６）処理対象のマクロブロックのｘ軸上の位置ｍｂ＿ｘ（ｉ）が、処理対象の縦の帯状部分のｘ軸上の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）と同じである。かつ  
（条件７）変数ｉが、０（ゼロ）より大きい。かつ  
（条件８）処理対象のマクロブロックのｙ軸上の位置ｍｂ＿ｙ（ｉ）が、ピクチャ高ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔから「１」を減算した値より小さい。  
か否かを判断する。
【０２３７】
このステップＳ３６の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の左端部に位置し、当該縦の帯状部分が画面の最左端の縦の帯状部分でなく、しかも縦の帯状部分の最下端のマクロブロック行に位置していないか否かを判断する処理である。
【０２３８】
ステップＳ３６の判断処理において、（条件６）と（条件７）と（条件８）とをいずれも満足すると判断したときには、復号処理プロセッサ２（ｉ）は、第２のバッファ４（ｉ−１）に、処理対象のマクロブロックの復号処理結果を送信する（ステップＳ３７）。
【０２３９】
このステップＳ３６の処理は、図９を用いて説明したように、例えば、処理対象がマクロブロックＡである場合に、マクロブロックＡの復号結果を復号処理プロセッサ２（ｉ−１）に対して送信する処理である。
【０２４０】
ステップＳ３６の判断処理において、（条件６）と（条件７）と（条件８）のいずれか１つでも満足しないと判断した場合、及び、ステップＳ３７の処理の後には、ステップＳ３８の判断処理を実行する。
【０２４１】
復号処理プロセッサ２（ｉ）は、以下の（条件９）、（条件１０）を満足するか否かを判断する（ステップＳ３８）。すなわち、ステップＳ３８においては、  
（条件９）処理対象のマクロブロックのｘ軸上の位置ｍｂ＿ｘ（ｉ）が、処理対象の縦の帯状部分のｘ軸上の開始位置ｍｂ＿ｏｆｆｓｅｔ（ｉ）に当該縦の帯状部分の幅ｍｂ＿ｗｉｄｔｈ（ｉ）を加算し、さらに「１」を減算した値と同じである。かつ  
（条件１０）変数ｉが、Ｎ−１と同じである。  
か否かを判断する。
【０２４２】
このステップＳ３８の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の右端部に位置し、当該縦の帯状部分が画面の最右端の縦の帯状部分でないか否かを判断する処理である。
【０２４３】
ステップＳ３８の判断処理において、（条件９）と（条件１０）の両方を満足すると判断したときには、復号処理プロセッサ２（ｉ）は、第１のバッファ３（ｉ）に、処理対象のマクロブロックの復号処理結果を送信する（ステップＳ３９）。
【０２４４】
このステップＳ３８の処理は、図９を用いて説明したように、例えば、処理対象がマクロブロックＤである場合に、マクロブロックＤの復号処理結果を復号処理プロセッサ２（ｉ＋１）に送信する処理である。
【０２４５】
ステップＳ３８の判断処理において、（条件９）と（条件１０）のいずれか１つでも満足しないと判断した場合、及び、ステップＳ３９の処理の後には、この図８に示す処理を終了する。すなわち、処理対象のマクロブロックの復号処理を終了する。
【０２４６】
そして、この図８に示した処理において、ステップＳ３２、ステップＳ３４の受信処理において、復号処理結果を読み出そうとしたバッファ３（ｉ−１）、４（ｉ）に復号処理結果が存在しない場合には、復号処理結果が入力されるまで待機状態となる。
【０２４７】
また、この図８に示した処理において、ステップＳ３７、ステップＳ３９の送信処理において、復号処理結果を書き込もうとしたバッファ４（ｉ−１）、３（ｉ）にデータがいっぱいである場合には、空きができるまで待機状態となる。
【０２４８】
このように、各復号処理プロセッサ間でバッファを介していわゆるブロッキングアクセスを行うことにより、マクロブロックの処理順序を簡単かつ適切に制御することができる。
【０２４９】
図７、図８を用いて説明したように、この実施の形態の復号処理装置の各復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれは、マクロブロック単位に復号処理を行う。また、この実施の形態の復号処理装置は、復号処理プロセッサ２（０）〜２（Ｎ−１）のそれぞれは、復号処理プロセッサ毎に１マクロブロック行ずつ階段状にずれた態様で、各帯状部分の復号処理を並列に実行する。
【０２５０】
すなわち、画面の左端の縦の帯状部分が割り当てられた復号処理プロセッサから右端の縦の帯状部分が割り当てられた復号処理プロセッサに向かう順番で、処理対象のマクロブロック行が、復号処理プロセッサ毎に１マクロブロック行ずつ階段状にずれた態様となる。
【０２５１】
図１０は、復号処理プロセッサ２（０）〜２（Ｎ−１）の復号処理の並列化を説明するための図である。
【０２５２】
この実施の形態の復号処理装置においては、一番左（０列目）の縦の帯状部分に属するｊ行目（Ｎ−１≦ｊ＜ｐｉｃ＿ｍｂ＿ｈｅｉｇｈｔ）のマクロブロック行が処理対象になっているとする。
【０２５３】
この場合、１列目の縦の帯状部分においては、ｊ−１行目のマクロブロック行が処理対象となり、２列目の縦の帯状部分においては、ｊ−２行目のマクロブロック行が処理対象となる。そして、Ｎ−１列目の縦の帯状部分においては、ｊ−Ｎ＋１行目のマクロブロック行処理対象となる。
【０２５４】
このように、この実施の形態の復号処理装置においては、画面の左端の縦の帯状部分が割り当てられた復号処理プロセッサから右端の縦の帯状部分が割り当てられた復号処理プロセッサに向かう順番で、復号処理プロセッサ毎に１処理ブロック行ずつ階段状にずれた態様で、各帯状部分の復号処理を並列に実行するようにしている。
【０２５５】
［実施の形態の効果］
上述もしたように、マクロブロック単位に復号処理を行う復号処理プロセッサを複数備える復号処理装置において、復号処理の並列化の際に実行効率を上げるための問題点としては、以下の３つが挙げられる。
【０２５６】
（ａ）異なるプロセッサに割り当てられたマクロブロック間の順序関係により発生する、プロセッサの待ち時間
（ｂ）マクロブロックの処理順序を正しく制御するための仕組みの複雑度
（ｃ）参照するマクロブロックの処理結果を通信する必要があるので、その通信頻度とデータ転送のコスト
である。
【０２５７】
上述した実施の形態の復号処理装置によれば、図１０を用いて具体的に説明したように、復号処理プロセッサ毎に１マクロブロック行ずつ階段状にずれた状態で、並列に各縦の帯状部分の復号処理を行うことができるので、上記（ａ）の発生を抑えることができる。
【０２５８】
というのも、各縦の帯状部分のマクロブロック行左端においては、その左と左上のマクロブロックの復号結果が必要であるが、当該左と左上のマクロブロックを含むマクロブロック行は別の復号処理プロセッサですでに処理が完了している。
【０２５９】
また、各縦の帯状部分のマクロブロック行右端は、その右上マクロブロックの復号結果が必要であるが、当該右上マクロブロックを含むマクロブロック行は別の復号処理プロセッサで並列に処理が進んでいる。このため、当該マクロブロック行右端に達したとき、当該右上マクロブロックはすでに処理が完了している確率が非常に高い。
【０２６０】
このように、各復号処理プロセッサの処理対象のマクロブロック行を階段上に異ならせることによって、上記（ａ）の発生を抑えることができるのである。
【０２６１】
また、マクロブロックの処理順序の制御は、上述した実施の形態の復号処理装置においては、縦の帯状部分の左右両端のマクロブロックにおけるプロセッサ間通信で自動的になされている。これには標準的なブロッキング通信機構を使用すればよいので、特殊な装置は不要である。つまり上記（ｂ）の問題が解消できることを意味している。
【０２６２】
また、上述した実施の形態の復号処理装置においては、各縦の帯状部分の左右両端のマクロブロックでしかプロセッサ間通信を必要としないので、上記（Ｃ）が少なくて済むことを意味している。
【０２６３】
特に、各マクロブロックにおいて上のマクロブロックは同じ復号処理プロセッサで処理される。したがって、上のマクロブロックの処理結果を高コストなプロセッサ間通信でやりとりする必要はなく、１次キャッシュなどプロセッサに密結合した速いメモリ上で読み書きできると言うメリットもある。
【０２６４】
このように、上述した実施の形態の復号処理装置は、上記（ａ）、（ｂ）、（ｃ）の全ての問題を解決することができる。
【０２６５】
その他の効果として、復号処理プロセッサ間の同期タイミングは各縦の帯状部分のマクロブロック行の左右の両端のみとなる。つまり、ある復号処理プロセッサが他の復号処理プロセッサを待つ可能性のあるポイントは各縦の帯状部分のマクロブロック行の左右の両端のみとなる。
【０２６６】
このため、各マクロブロックの処理時間にばらつきがあったとしても、各縦の帯状部分のマクロブロック行あたりで平均化される効果がある。各復号処理プロセッサで並列動作する各縦の帯状部分のマクロブロック行（マクロブロック単体ではない）の処理時間にばらつきがなければ、最も理想的な効率で並列動作が行われる。
【０２６７】
このとき、ピクチャの縦マクロブロック数が十分大きければ、全体の復号処理時間はほぼプロセッサ数分の１（１／プロセッサ数）とすることができる。すなわち、復号処理の高速化も実現できる。
【０２６８】
［この発明の方法、プログラム］
図２〜図６を用いて説明したビットストリーム解析部１において行われる動画像データにより形成される画面の分割と動画像データ（マクロブロックデータ）の複数の復号処理プロセッサへの分配方法は、この発明による方法が適用されたものである。
【０２６９】
そして、ビットストリーム解析部１は、コンピュータによって構成することも可能である。したがって、図２〜図６を用いて説明した画面の分割方法、動画像データの分配方法をビットストリーム解析部１において実行されるプログラムによって実現することも可能である。このように、ビットストリーム解析部１において実行可能なように構成したプログラムが、この発明によるデータ分配プログラムである。
【０２７０】
また、図７〜図１０を用いて説明した符号化された動画像データの復号方法が、この発明による復号処理方法が適用されたものである。そして、図７〜図１０に示した処理を、復号処理プロセッサにおいて実行可能なように構成したプログラムが、この発明による復号処理プログラムである。
【０２７１】
［その他］
なお、ピクチャの解像度、復号処理の並列数は特に限定はない。種々の解像度の動画像データをこの発明の装置、方法、プログラムによって復号処理することができる。また、復号処理の並列数、すなわち、復号処理プロセッサの数も種々の数とすることができる。
【０２７２】
例えば、Ｆｕｌｌ−ＨＤ（１９２０ピクセル×１０８０ピクセル）を３つの復号処理プロセッサで並列復号する場合などにおいては、この発明は特に有効である。すなわち、縦マクロブロック数に対する復号処理プロセッサの数がそれほど多くない方が効果は大きいためである。
【０２７３】
これは、復号処理プロセッサの数が多いと、画面の上あるいは下に行くにしたがって復号処理プロセッサが余ってしまうため、結果として使用されない復号処理プロセッサが発生し、逆に効率が悪くなってしまうためである。
【０２７４】
もちろん、上述のＦｕｌｌ−ＨＤ以下の解像度の画像を処理する場合であって、また、それ以上の解像度の画像を処理する場合であっても、復号処理プロセッサの数を適切に考慮することによって、復号処理を効率的に行うことが可能である。
【０２７５】
また、縦の帯状部分の分割の仕方は種々の態様が考えられる。例えば画面の中心部分の縦の帯状部分の幅をそれ以外の縦の帯状部分よりも少なくしたり、逆に多くしたりするなどのこともできる。しかし、上述した実施の形態で説明したように、（ほぼ）等分割となるよいにしたほうが効果は大きい。マクロブロック行単位の処理時間のばらつきを最小限にできる可能性が高いからである。
【０２７６】
なお、例えば、処理能力の異なる復号処理プロセッサを組み合わせて用いるようする場合も考えられる。このような場合には、復号処理プロセッサの処理能力に応じて、各復号処理プロセッサに割り当てる縦の帯状部分の幅を調整するようにしてもよい。
【０２７７】
すなわち、処理能力の高い復号処理プロセッサに対しては、幅の広い縦の帯状部分を割り当て、それよりも処理能力の低い復号処理プロセッサに対しては、それよりも幅の狭い縦の帯状領域を割り当てるといったことが可能である。
【０２７８】
また、複数の復号処理プロセッサの処理能力が同程度の場合であっても、割り当てられた縦の帯状部分の画像データによっては、処理の負荷がばらついてしまう場合もあると考えられる。
【０２７９】
そこで、復号対象の画像データの特徴、例えば、ビットストリーム解析部１から出力されるＤＣＴ係数のＡＣ成分の量などから、復号処理に負荷のかかる処理ブロックとそうでない処理ブロックとを把握するようにする。
【０２８０】
そして、復号処理に負荷のかかる処理ブロックを多く含むようになる縦の帯状領域については、その幅を短くし、復号処理に負荷のかかる処理ブロックが少ない縦の帯状領域については、その幅を長くするようにしてもよい。
【０２８１】
このように、複数の復号処理プロセッサにおける復号処理にかかる負荷ができるだけ均等になるように、各復号処理プロセッサに割り当てる縦の帯状領域の幅を決定するようにすることも可能である。
【０２８２】
また、上述した実施の形態においては、ピクチャ幅を復号処理プロセッサの数で割り算して余りが出た場合に、図４、図５においては、画面の左端の縦の帯状部分から帯状部分の幅を調整するようにした。しかしこれに限るものではない。例えば、画面の右端の縦の帯状部分から帯状部分の幅を調整するようにしてもよい。
【０２８３】
また、画面の中央の縦の帯状部分→画面の右端の縦の帯状部分→画面の左端の縦の帯状部分というように、予め決められた順番で縦の帯状部分の幅を調整するようにしてもよい。すなわち、縦の帯状部分の幅の調整は、適宜の順番で割り振りを行うようにすることができる。
【０２８４】
復号処理プロセッサは、後述もするように、ＣＰＵ上のソフトウェアプログラムで実現することもできる。もちろんも、ハードウェア回路による装置でもよく、実現方法は問わない。復号処理プロセッサ自体が、たとえば機能分散による並列化のために複数の装置から構成されていてもよい。
【０２８５】
また、バッファリングモジュールは、ＦＩＦＯ回路を使用するようなハードウェアでもよいし、いわゆるセマフォなどを使用してソフトウェアで実現してもよい。ここで、セマフォとは、簡単には、平行して動作しているプロセス間で同期を取ったり、割込み処理の制御を行ったりする機構を意味している。
【０２８６】
なお、上述した実施の形態では、説明を簡単にするために、第１のバッファ３（０）〜３（Ｎ−２）と第２のファイル場４（０）〜４（Ｎ−２）を復号処理プロセッサ間に設ける構成とした。しかしこれに限るものではない。バッファリングモジュールは、ひとつのモジュールとして全ての復号処理プロセッサからの要求を調停しながら送受信を行うように構成することも可能である。
【０２８７】
なお、上述した実施の形態の復号処理装置においては、「左・左上・上・右上に対する依存関係」だけが本質的な前提条件なので、同様の依存関係をもつ２次元データ処理であれば、動画像復号に限らず種々の処理に適用可能である。例えば、符号処理、静止画処理、高画質化処理などに適用可能である。
【０２８８】
すなわち、上述した実施の形態においては、復号処理を行う場合について説明したが、上述したように、画面を複数の縦の帯状部分に分割し、各縦の帯状部分毎であって、マクロブロック単位に符号化処理を行うようにしてもよい。
【０２８９】
この場合に、隣接する縦の帯状部分のマクロブロックの符号化処理の結果が必要な場合には、上述した復号処理の場合と同様にして、符号化を行う複数のプロセッサ間でデータの送受を行うようにすればよい。
【０２９０】
また、処理単位（依存関係をもつ単位）が１６ピクセル×１６ピクセルのマクロブロックである必要もない。したがって、種々の大きさ、形状の処理ブロックを処理単位とすることが可能である。
【０２９１】
また、依存関係の方向や、それに伴って分割や走査の方向などを回転・反転すれば、それぞれ異なるバージョンが得られる。すなわち、マクロブロック等の処理対象の処理ブロックに対して、参照すべき処理結果を有する処理ブロックの位置に応じて、分割や操作の方向を調整することにより、この発明を適用して、適切な復号処理等の画像処理を行うことができる。
【０２９２】
また、上述した実施の形態においては、マクロブロックの処理時において、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号処理の結果を参照するものとして説明した。しかし、これに限るものではない。
【０２９３】
例えば、処理対象のマクロブロックの左や左上のマクロブロックのみを参照する場合であっても、この発明を適用することができる。その場合には、図９を用いて説明したように、例えば、マクロブロックＡが処理対象の場合には、マクロブロックＹの処理時のその結果を復号処理プロセッサ２（ｉ−１）から復号処理プロセッサ２（ｉ）に送信する。そして、マクロブロックＡの処理時に、復号処理プロセッサ（ｉ）がマクロブロックＹの処理結果を復号処理プロセッサ２（ｉ−１）から受信するように構成すればよい。
【０２９４】
同様に、処理対象のマクロブロックの右上のマクロブロックのみを参照する場合であっても、この発明を適用することができる。その場合には、例えば、図９を用いて説明したように、例えば、マクロブロックＤが処理対象の場合には、マクロブロックＥの処理時のその結果を復号処理プロセッサ（ｉ＋１）から復号処理プロセッサ２（ｉ）に送信する。そして、マクロブロックＤの処理時に、マクロブロックＥの処理結果を復号処理プロセッサ（ｉ）が復号処理プロセッサ２（ｉ＋１）から受信するように構成すればよい。
【符号の説明】
【０２９５】
１…ビットストリーム解析部、２（０）〜２（Ｎ−１）…復号処理プロセッサ、３（０）〜３（Ｎ−２）…第１の送受信バッファ、４（０）〜４（Ｎ−２）…第２の送受信バッファ、５…フレームメモリ
【図１】
2010273190.tif 000003
【図２】
2010273190.tif 000004
【図３】
2010273190.tif 000005
【図４】
2010273190.tif 000006
【図５】
2010273190.tif 000007
【図６】
2010273190.tif 000008
【図７】
2010273190.tif 000009
【図８】
2010273190.tif 000010
【図９】
2010273190.tif 000011
【図１０】
2010273190.tif 000012
【図１１】
2010273190.tif 000013
【図１２】
2010273190.tif 000014
【図１３】
2010273190.tif 000015