(57)【要約】  簡単な構成で復号化の並列処理を適切に実行する画像復号化装置（１００）は、処理対象領域を指定し、その処理対象領域の配置に基づいて、分割ストリームの一部を選択するストリーム分割制御部（１４０）と、ストリーム分割処理を、指定されたＭ個の処理対象領域に対して並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成するＭ個のストリーム分割部（１３０）と、選択された一部を含むＮ個の分割ストリームのそれぞれの一部を並列に復号化するＮ個のデコードエンジン（１２０）とを備え、ストリーム分割部（１３０）は、その処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する。
2012014471.tif 000002
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
前記符号化ストリームに含まれる処理対象領域を指定する第１の分割制御部と、
前記第１の分割制御部によって前記処理対象領域が指定されるごとに、前記処理対象領域からＮ個（Ｎは２以上の整数）の分割ストリームの少なくとも一部を生成するストリーム分割処理を、前記第１の分割制御部によって指定されたＭ個（Ｍは２以上の整数）の処理対象領域に対して並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成するＭ個のストリーム分割部と、
前記第１の分割制御部によって指定された処理対象領域ごとに、当該処理対象領域の前記符号化ストリーム内における配置に基づいて、前記Ｍ個のストリーム分割部によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部を選択する第２の分割制御部と、
前記第２の分割制御部によって少なくとも１つの分割ストリームの一部が選択されるごとに、当該少なくとも１つの分割ストリームの一部を含む、Ｎ個の分割ストリームのそれぞれの一部を並列に復号化するＮ個の復号化部とを備え、
前記Ｍ個のストリーム分割部のそれぞれは、
前記処理対象領域を複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、前記ストリーム分割処理を実行し、
前記処理対象領域を複数の構成単位に分割することによって、当該処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記Ｍ個のストリーム分割部のそれぞれは、
指定された処理対象領域に関わらず、前記符号化ストリームに含まれる各第１のヘッダ情報を解析し、その解析結果に基づいて前記Ｎ個の分割ストリームを生成する、
請求項１に記載の画像復号化装置。
【請求項３】
前記Ｍ個のストリーム分割部のうちの何れか１つのストリーム分割部は、
前記符号化ストリームに含まれる第２のヘッダ情報を含むＮ個の分割ストリームを生成し、
前記Ｍ個のストリーム分割部のうちの他の全てのストリーム分割部は、
前記第２のヘッダ情報を含まないＮ個の分割ストリームを生成する、
請求項１または２に記載の画像復号化装置。
【請求項４】
前記第２の分割制御部は、さらに、
選択された分割ストリームの一部を示す選択情報を生成して前記Ｎ個の復号化部のそれぞれに出力し、
前記Ｎ個の復号化部は、前記第２の分割制御部から出力された前記選択情報によって示されるＮ個の分割ストリームのそれぞれの一部を並列に復号化する、
請求項１〜３の何れか１項に記載の画像復号化装置。
【請求項５】
前記第２の分割制御部は、
選択された分割ストリームの一部のデータのサイズを含む前記選択情報を前記Ｎ個の復号化部のそれぞれに出力し、
前記Ｎ個の復号化部は、前記第２の分割制御部から出力された前記選択情報に含まれるデータのサイズに基づいて、Ｎ個の分割ストリームのそれぞれの一部を特定して、それらの一部を並列に復号化する、
請求項４に記載の画像復号化装置。
【請求項６】
前記第２の分割制御部は、
前記Ｎ個の分割ストリームのそれぞれを構成するデータ構成単位の数、またはビット量を前記サイズとして含む前記選択情報を出力する、
請求項５に記載の画像復号化装置。
【請求項７】
前記第１の分割制御部は、さらに、
前記ストリーム分割部ごとに、当該ストリーム分割部によって実行される１つの処理対象領域に対するストリーム分割処理が終了したか否かを判定し、
終了したと判定した際には、前記ストリーム分割処理を終了したストリーム分割部に対して優先的に新たな処理対象領域を指定する、
請求項１〜６の何れか１項に記載の画像復号化装置。
【請求項８】
前記Ｎ個の復号化部は、第１および第２の復号化部を含み、
前記第１の復号化部が、前記Ｎ個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記Ｎ個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が空間的に隣接していた場合には、
前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、
前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する、
請求項１〜７の何れか１項に記載の画像復号化装置。
【請求項９】
前記第１の分割制御部は、
前記符号化ストリームに含まれる、スライス、ピクチャ、または複数のピクチャからなるピクチャ群を前記処理対象領域として指定する、
請求項１〜８の何れか１項に記載の画像復号化装置。
【請求項１０】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
前記符号化ストリームに含まれる処理対象領域を指定する第１の分割制御ステップと、
前記第１の分割制御ステップによって前記処理対象領域が指定されるごとに、前記処理対象領域からＮ個（Ｎは２以上の整数）の分割ストリームの少なくとも一部を生成するストリーム分割処理を、前記第１の分割制御ステップによって指定されたＭ個（Ｍは２以上の整数）の前記処理対象領域に対して並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成するストリーム分割ステップと、
前記第１の分割制御ステップによって指定された処理対象領域ごとに、当該処理対象領域の前記符号化ストリーム内における配置に基づいて、前記ストリーム分割ステップによって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部を選択する第２の分割制御ステップと、
前記第２の分割制御ステップによって少なくとも１つの分割ストリームの一部が選択されるごとに、当該少なくも１つの分割ストリームの一部を含む、Ｎ個の分割ストリームのそれぞれの一部を並列に復号化する復号化ステップとを含み、
前記ストリーム分割ステップでは、
前記処理対象領域を複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、前記ストリーム分割処理を実行し、
前記処理対象領域を複数の構成単位に分割することによって、当該処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１１】
請求項１〜９の何れか１項に記載の画像復号化装置が備える各部としてコンピュータを機能させるためのプログラム。
【請求項１２】
前記画像復号化装置は集積回路として構成されている、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１３】
画像データを符号化することにより符号化ストリームを生成する画像符号化装置であって、
前記画像データに含まれるピクチャごとに、当該ピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成するＮ個の符号化部と、
前記符号化ストリームを構成する処理対象領域を指定する第１の結合制御部と、
Ｎ個の分割ストリームのそれぞれに含まれる、処理対象領域に対応する部分領域を結合することによって、前記処理対象領域である結合符号化領域を生成する結合処理を、前記第１の結合制御部によって指定されたＭ個（Ｍは２以上の整数）の前記処理対象領域に対して並列に実行するＭ個のストリーム結合部と、
前記第１の結合制御部によって指定されたＭ個の処理対象領域の前記符号化ストリーム内での配置に基づいて、前記Ｍ個のストリーム結合部によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域を順次選択する第２の結合制御部と、
前記第２の結合制御部によって選択された順に、前記Ｍ個の結合符号化領域を多重化することによって前記符号化ストリームを生成する多重化部とを備え、
前記Ｍ個のストリーム結合部のそれぞれは、
前記結合処理を行う際に、符号化された複数の前記構成単位から前記部分領域が構成されている場合には、前記部分領域を符号化された複数の前記構成単位に分割して組み替えることによって前記結合符号化領域を生成し、
前記組み替えを行う際に、前記画像データに含まれるスライスが複数のスライス部分に分割および符号化されて前記Ｎ個の分割ストリームに割り当てられているときには、前記結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する、
画像符号化装置。
【請求項１４】
前記第２の結合制御部は、さらに、
多重化されるべき結合符号化領域を選択するごとに、当該結合符号化領域を示す選択情報を生成して前記多重化部に出力し、
前記多重化部は、前記第２の結合制御部から前記選択情報を取得するごとに、当該選択情報によって示される結合符号化領域を前記符号化ストリームに多重化する、
請求項１３に記載の画像符号化装置。
【請求項１５】
前記第２の結合制御部は、
選択された結合符号化領域のデータのサイズを含む前記選択情報を前記多重化部に出力し、
前記多重化部は、前記選択情報に含まれるサイズの結合符号化領域を前記符号化ストリームに多重化する、
請求項１４に記載の画像符号化装置。
【請求項１６】
前記第１の結合制御部は、さらに、
前記ストリーム結合部ごとに、当該ストリーム結合部によって実行される結合処理が終了したか否かを判定し、
終了したと判定した際には、前記結合処理を終了したストリーム結合部に対して優先的に新たな処理対象領域を指定する、
請求項１３〜１５の何れか１項に記載の画像符号化装置。
【請求項１７】
前記Ｎ個の符号化部は、第１および第２の符号化部を含み、
前記第１の符号化部が、前記Ｎ個の構成単位のうちの当該第１の符号化部に割り当てられた第１の構成単位を符号化し、前記第２の符号化部が、前記Ｎ個の構成単位のうちの当該第２の符号化部に割り当てられた第２の構成単位を符号化する場合であって、前記第１および第２の構成単位が前記ピクチャ内で互いに隣接していた場合には、
前記第１の符号化部は、前記第２の符号化部による前記第２の構成単位の符号化開始前に、前記第１の構成単位の符号化を開始し、
前記第２の符号化部は、前記第１の符号化部による前記第１の構成単位の符号化によって生成される隣接情報を前記第１の符号化部から取得し、前記隣接情報を用いて前記第２の構成単位を符号化する、または、前記隣接情報を用いずに前記第２の構成単位を符号化する、
請求項１３〜１６の何れか１項に記載の画像符号化装置。
【請求項１８】
画像データを符号化することにより符号化ストリームを生成する画像符号化方法であって、
前記画像データに含まれるピクチャごとに、当該ピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成する符号化ステップと、
前記符号化ストリームを構成する処理対象領域を指定する第１の結合制御ステップと、
Ｎ個の分割ストリームのそれぞれに含まれる、処理対象領域に対応する部分領域を結合することによって、前記処理対象領域である結合符号化領域を生成する結合処理を、前記第１の結合制御ステップによって指定されたＭ個（Ｍは２以上の整数）の前記処理対象領域に対して並列に実行するストリーム結合ステップと、
前記第１の結合制御ステップによって指定されたＭ個の処理対象領域の前記符号化ストリーム内での配置に基づいて、前記ストリーム結合ステップによって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域を順次選択する第２の結合制御ステップと、
前記第２の結合制御ステップによって選択された順に、前記Ｍ個の結合符号化領域を多重化することによって前記符号化ストリームを生成する多重化ステップとを含み、
前記ストリーム結合ステップでは、
前記結合処理を行う際に、符号化された複数の前記構成単位から前記部分領域が構成されている場合には、前記部分領域を符号化された複数の前記構成単位に分割して組み替えることによって前記結合符号化領域を生成し、
前記組み替えを行う際に、前記画像データに含まれるスライスが複数のスライス部分に分割および符号化されて前記Ｎ個の分割ストリームに割り当てられているときには、前記結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する、
画像符号化方法。
【請求項１９】
請求項１３〜１７の何れか１項に記載の画像符号化装置が備える各部としてコンピュータを機能させるためのプログラム。
【請求項２０】
前記画像符号化装置は集積回路として構成されている、
請求項１３〜１７の何れか１項に記載の画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データが符号化された符号化ストリームを復号化する画像復号化装置および画像復号化方法、ならびに画像データを符号化ストリームに符号化する画像符号化装置および画像符号化方法に関し、特に、復号化および符号化を並列に実行する画像復号化装置および画像復号化方法、ならびに画像符号化装置および画像符号化方法に関する。
【背景技術】
【０００２】
動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。【０００３】
図４４は、符号化されるピクチャの構成を示す図である。【０００４】
ピクチャは１６×１６画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位をマクロブロックライン（ＭＢライン）という。【０００５】
図４５は、符号化ストリームの構成を示す図である。【０００６】
符号化ストリームは、階層化されており、図４５の（ａ）に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット（ＳＰＳ）が含まれる。また、その符号化されたピクチャは、図４５の（ｂ）に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図４５の（ｃ）に示すように、ヘッダと、複数のマクロブロック（ＭＢ）とを含んで構成されている。なお、図４５の（ｂ）に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット（ＰＰＳ）が含まれる。【０００７】
図４６は、従来の画像復号化装置の構成を示す図である。【０００８】
画像復号化装置１３００は、メモリ１３１０およびデコードエンジン１３２０を備えている。メモリ１３１０は、符号化ストリームを記憶するための領域を有するストリームバッファ１３１１と、デコードエンジン１３２０から出力される復号画像データを記憶するための領域を有するフレームメモリ１３１２とを備えている。画像復号化装置１３００は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ１３１１に格納する。【０００９】
デコードエンジン１３２０は、そのストリームバッファ１３１１から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ１３１２に格納する。また、デコードエンジン１３２０は、復号化するときには、フレームメモリ１３１２に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。【００１０】
そして、フレームメモリ１３１２に格納された復号画像データは、表示順に表示装置に出力されて表示される。【００１１】
図４７は、デコードエンジン１３２０の構成を示す図である。 【００１２】
デコードエンジン１３２０は、エントロピー復号部１３２１、逆変換部１３２２、加算器１３２３、デブロッキングフィルタ１３２４、動き補償部１３２５、重み付き予測部１３２６、画面内予測部１３２７、およびスイッチ１３２８を備えている。【００１３】
エントロピー復号部１３２１は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部１３２２に出力する。【００１４】
逆変換部１３２２は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。【００１５】
加算器１３２３は、逆変換部１３２２から出力された差分画像データと、重み付き予測部１３２６または画面内予測部１３２７からスイッチ１３２８を介して出力された予測画像データとを加算することにより復号画像データを生成する。【００１６】
デブロッキングフィルタ１３２４は、加算器１３２３によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ１３１２に格納する。【００１７】
動き補償部１３２５は、フレームメモリ１３１２に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部１３２６に出力する。【００１８】
重み付き予測部１３２６は、動き補償部１３２５から出力された予測画像データに重みを付けてスイッチ１３２８に出力する。【００１９】
画面内予測部１３２７は画面内予測を行う。つまり、画面内予測部１３２７は、加算器１３２３によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ１３２８に出力する。【００２０】
スイッチ１３２８は、逆変換部１３２２から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部１３２７から出力される予測画像データを加算器１３２３に出力する。また、スイッチ１３２８は、逆変換部１３２２から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部１３２６から出力される予測画像データを加算器１３２３に出力する。【００２１】
ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、ＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる４ｋ２ｋ解像度による動画像の実用化が検討されている。【００２２】
図４８は、ＨＤおよび４ｋ２ｋを説明するための説明図である。【００２３】
ＨＤの符号化ストリームは、地上デジタル放送やＢＳデジタル放送などで配信されており、解像度「１９２０×１０８０画素」のピクチャが３０フレーム／秒のフレームレートで復号化されて表示される。４ｋ２ｋの符号化ストリームは、２０１１年から高度ＢＳデジタル放送で試験的に配信される予定であり、解像度「３８４０×２１６０画素」のピクチャが６０フレーム／秒のフレームレートで復号化されて表示される。【００２４】
つまり、４ｋ２ｋでは、ＨＤよりも縦および横のそれぞれで２倍の解像度を有し、且つ２倍のフレームレートを有する。 【００２５】
さらに、縦および横のそれぞれで４ｋ２ｋの２倍に高解像度化された８ｋ４ｋの画像（７６８０×４３２０画素）の符号化および復号化が検討されようとしている。【００２６】
このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図４６に示す画像復号化装置１３００のデコードエンジン１３２０は、４ｋ２ｋの符号化ストリームを復号化する場合には、現実的には困難な１ＧＨｚ以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。【００２７】
図４９は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。【００２８】
画像復号化装置１４００は、メモリ１３１０およびデコーダ１４２０を備えている。デコーダ１４２０は、図４６および図４７に示すデコードエンジン１３２０と同様の機能を有するデコードエンジン１４２１をＮ個（例えばＮ＝４）備えている。Ｎ個のデコードエンジン１４２１（第１デコードエンジン１４２１〜第Ｎデコードエンジン１４２１）のそれぞれは、ストリームバッファ１３１１に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ１３１２に出力する。【００２９】
図５０Ａおよび図５０Ｂは、復号化の並列処理の一例を説明するための説明図である。【００３０】
例えば、画像復号化装置１４００は、４つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ１３１１に格納する。これらの４つの領域符号化ストリームのそれぞれは、独立したストリームであり、図５０Ａに示すように、一つの画面が４等分されたうちの１つの領域の動画像を示すストリームである。画像復号化装置１４００の４つのデコードエンジン１４２１（例えばＮ＝４）はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ１３１１から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。【００３１】
または、画像復号化装置１４００は、４つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ１３１１に格納する。４つのスライスは、図５０Ｂに示すように、ピクチャを縦方向に４等分することによって生成されている。画像復号化装置１４００の４つのデコードエンジン１４２１（例えばＮ＝４）はそれぞれ、自らが処理すべきスライスをストリームバッファ１３１１から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。【００３２】
しかしながら、図５０Ａに示すように、１つの符号化ストリームを４つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。【００３３】
また、図５０Ｂに示すように、１つのピクチャを４等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。【００３４】
具体的には、動画像の符号化および復号化の規格であるＭＰＥＧ−２（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ｐｈａｓｅ  ２）では、ＭＢラインの境界で必ずスライスが分離されている。また、Ｈ．２６４／ＡＶＣでは、ピクチャに設定されるスライスの大きさや位置は任意であり、１ピクチャに１スライスしか設定されない場合もある。したがって、図５０Ｂに示すように、スライスの位置および大きさを一義的に設定してしまうことは、デジタル放送システムの運用規格など、システム全体の変更が必要となり、その負担は膨大である。【００３５】
そこで、そのような運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。例えば、この画像復号化装置は、ＭＰＥＧ−２により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。【００３６】
しかし、この画像復号化装置では、復号化の並列処理を適切に実行できない。つまり、この画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、Ｈ．２６４／ＡＶＣの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、１ピクチャが１スライスで構成されている場合には、そのピクチャを分割することができず、１つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。【００３７】
そこで、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームに対して可変長復号処理を行い、可変長復号処理によって得られたピクチャをＭＢラインごとに分離し、各ＭＢラインの復号化処理を並列に実行する画像復号化装置が提案されている（例えば、特許文献１参照）。【００３８】
図５１は、特許文献１の画像復号化装置による復号化処理を説明するための説明図である。【００３９】
画像復号化装置の第１デコードエンジンは、ピクチャにある０行目のＭＢラインを復号化し、２番目のデコードエンジンは、ピクチャにある１行目のＭＢラインを復号化し、３番目のデコードエンジンは、ピクチャにある２行目のＭＢラインを復号化する。【００４０】
また、各デコードエンジンは、ＭＢラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。【００４１】
しかし、上記特許文献１の画像復号化装置では、Ｈ．２６４／ＡＶＣのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。【００４２】
そこで、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置が提案されている（例えば、特許文献２参照）。【００４３】
図５２は、上記特許文献２の画像復号化装置の構成を示すブロック図である。 【００４４】
上記特許文献２の画像復号化装置１１００は、ストリームバッファ１１５１、分割ストリームバッファ１１５２およびフレームメモリ１１５３を有するメモリ１１５０と、ストリーム分割部１１３０およびＮ個のデコードエンジン１１２０を有するデコーダ１１１０とを備える。ストリーム分割部１１３０は、ストリームバッファ１１５１に蓄積された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数のマクロブロックラインに分割し、複数のマクロブロックラインのそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。Ｎ個のデコードエンジン１１２０は、ストリーム分割部１１３０から分割ストリームバッファ１１５２を介してそのＮ個の分割ストリームを取得し、Ｎ個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部１１３０は、Ｎ個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する。【００４５】
これにより、符号化ピクチャは複数のマクロブロックラインに分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１１２０で負担することなく、Ｎ個のデコードエンジン１１２０で均等に負担することができる。【００４６】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。【００４７】
そこで上記特許文献２の画像復号化装置１１００では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、上記特許文献２の画像復号化装置１１００では、Ｎ個のデコードエンジン１１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化するデコードエンジン１１２０に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。【００４８】
ところで、上記特許文献１の画像復号化装置では、マクロブロックの復号化においては並列化がなされているが、可変長符号の復号処理の並列化がなされていないため、性能の向上に限界があるという問題もある。【００４９】
そこで、可変長符号の復号処理の並列化を行う画像復号化装置も提案されている（例えば、特許文献３参照）。【００５０】
特許文献３の画像復号化装置は、符号化ストリームに含まれる複数のピクチャあるいはスライスに対する可変長復号処理を並列して行い、可変長復号処理によって得られた中間データを中間データバッファに格納する。そして、中間データバッファに格納された中間データからピクチャを抽出し、複数の画像復号処理部を用いて、ピクチャをＭＢライン単位で並列に復号処理を行う。
【先行技術文献】
【特許文献】
【００５１】
【特許文献１】特開２００６−１２９２８４号公報
【特許文献２】国際公開第２０１０／０４１４７２号
【特許文献３】特開２００８−６７０２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００５２】
しかしながら、上記特許文献２の画像復号化装置１１００では、復号化の処理速度を十分に上げることができないという問題がある。つまり、符号化ストリームのデータ量が大きい場合には、デコードエンジン１１２０の数を増加し、並列処理の数を増加することによって、処理速度を上げることができるが、ストリーム分割部１１３０については、その数を増加することができないため、処理速度を上げることができない。【００５３】
そこで、上記特許文献２の画像復号化装置１１００でも、上記特許文献３の画像復号化装置のように、符号化ストリームに含まれる複数のピクチャあるいはスライスに対して、Ｎ個の分割ストリームの生成を並列に行うことが考えられる。【００５４】
しかし、Ｎ個の分割ストリームを生成する処理を並列に行った場合には、ストリーム分割部１１３０は、並列に復号化されるべき分割ストリームをＮ個のデコードエンジン１１２０に認識させるための処理および構成を要する。さらに、Ｎ個のデコードエンジン１１２０は、並列に復号化すべき分割ストリームを見つけ出すための処理および構成を要する。したがって、上記特許文献２の画像復号化装置１１００の各構成要素に対して、処理および構成の変更を要するため、画像復号化装置の全体的な構成が複雑になってしまう。【００５５】
そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。また、それらの装置および方法に対応する画像符号化装置および画像符号化方法を提供することも目的とする。
【課題を解決するための手段】
【００５６】
上記目的を達成するために、本発明の一態様に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、前記符号化ストリームに含まれる処理対象領域を指定する第１の分割制御部と、前記第１の分割制御部によって前記処理対象領域が指定されるごとに、前記処理対象領域からＮ個（Ｎは２以上の整数）の分割ストリームの少なくとも一部を生成するストリーム分割処理を、前記第１の分割制御部によって指定されたＭ個（Ｍは２以上の整数）の処理対象領域に対して並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成するＭ個のストリーム分割部と、前記第１の分割制御部によって指定された処理対象領域ごとに、当該処理対象領域の前記符号化ストリーム内における配置に基づいて、前記Ｍ個のストリーム分割部によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部を選択する第２の分割制御部と、前記第２の分割制御部によって少なくとも１つの分割ストリームの一部が選択されるごとに、当該少なくとも１つの分割ストリームの一部を含む、Ｎ個の分割ストリームのそれぞれの一部を並列に復号化するＮ個の復号化部とを備え、前記Ｍ個のストリーム分割部のそれぞれは、前記処理対象領域を複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、前記ストリーム分割処理を実行し、前記処理対象領域を複数の構成単位に分割することによって、当該処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する。【００５７】
これにより、ストリーム分割処理がＭ個の処理対象領域（例えば、スライスまたはピクチャなど）に対して並列に実行される。したがって、符号化ストリームのデータ量が大きい場合には、復号化部の数を増加し、並列処理の数を増加することによって、処理速度を上げることができるとともに、ストリーム分割部についても、その数を増加することができ、処理速度を上げることができる。【００５８】
また、本発明の一態様に係る画像復号化装置では、Ｍ個の処理対象領域がＭ個のストリーム分割部に対して指定される。つまり、処理対象領域を複数の構成単位（例えばマクロブロックライン）に分割するストリーム分割処理が、Ｍ個のストリーム分割部のそれぞれに対して振り分けられる。その結果、符号化ストリームに含まれる複数の処理対象領域の順序関係を、Ｍ個のストリーム分割部によって生成されるＭ×Ｎ個の分割ストリームにおいて維持することができなくなり、Ｍ×Ｎ個の分割ストリームをそのままを復号化することはできない。そこで本発明の一態様に係る画像復号化装置では、指定された処理対象領域ごとに、その処理対象領域の配置、つまり符号化ストリームにおける処理対象領域の復号化の順序に基づいて、Ｍ個のストリーム分割部によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部が選択される。例えば、処理対象領域に対応するＮ個の分割ストリームのそれぞれの一部が同一のバッファ（分割ストリームバッファ）に格納されていれば、そのバッファが選択される。そして、その選択されたＮ個の分割ストリームのそれぞれの一部が並列に復号化される。したがって、正しい順序関係でＭ×Ｎ個の分割ストリームを復号化することができる。さらに、本発明の一態様に係る画像復号化装置では、処理対象領域の指定と、分割ストリームの一部の選択とが、Ｍ個のストリーム分割部およびＮ個の復号化部と異なる構成要素によって一元的に行われる。したがって、上述のように正しい順序関係でＭ×Ｎ個の分割ストリームを復号化するために、Ｍ個のストリーム分割部およびＮ個の復号化部などの各構成要素に対して、特別な処理および構成を要することなく、簡単な構成で復号化の並列処理を適切に実行することができる。【００５９】
また、前記Ｍ個のストリーム分割部のそれぞれは、指定された処理対象領域に関わらず、前記符号化ストリームに含まれる各第１のヘッダ情報を解析し、その解析結果に基づいて前記Ｎ個の分割ストリームを生成する。【００６０】
これにより、ストリーム分割部のそれぞれでは、符号化ストリームに含まれる例えばＳＰＳ、ＰＰＳおよびスライスヘッダなどの各第１のヘッダ情報が解析されるため、符号化ストリームに含まれる各処理対象領域および各第１のヘッダ情報の参照関係に基づいて、適切にＮ個の分割ストリームを生成することができる。【００６１】
また、前記Ｍ個のストリーム分割部のうちの何れか１つのストリーム分割部は、前記符号化ストリームに含まれる第２のヘッダ情報を含むＮ個の分割ストリームを生成し、前記Ｍ個のストリーム分割部のうちの他の全てのストリーム分割部は、前記第２のヘッダ情報を含まないＮ個の分割ストリームを生成する。【００６２】
これにより、１つの分割ストリームにのみ例えばＳＰＳまたはＰＰＳなどの第２のヘッダ情報が含まれ、他のＮ−１個の分割ストリームにはその第２のヘッダ情報が含まれないため、重複した複数の第２のヘッダ情報をＮ個の復号化部に処理させることを防ぐことができ、第２のヘッダ情報の重複デコードによる復号化部の処理性能低下を回避できる。【００６３】
また、前記第２の分割制御部は、さらに、選択された分割ストリームの一部を示す選択情報を生成して前記Ｎ個の復号化部のそれぞれに出力し、前記Ｎ個の復号化部は、前記第２の分割制御部から出力された前記選択情報によって示されるＮ個の分割ストリームのそれぞれの一部を並列に復号化する。【００６４】
これにより、Ｎ個の復号化部は、選択情報を用いて正しい順序関係でＮ個の分割ストリームのそれぞれの一部を並列に復号化することができる。【００６５】
また、前記第２の分割制御部は、選択された分割ストリームの一部のデータのサイズを含む前記選択情報を前記Ｎ個の復号化部のそれぞれに出力し、前記Ｎ個の復号化部は、前記第２の分割制御部から出力された前記選択情報に含まれるデータのサイズに基づいて、Ｎ個の分割ストリームのそれぞれの一部を特定して、それらの一部を並列に復号化する。例えば、前記第２の分割制御部は、前記Ｎ個の分割ストリームのそれぞれを構成するデータ構成単位の数、またはビット量を前記サイズとして含む前記選択情報を出力する。【００６６】
これにより、Ｎ個の復号化部は、Ｎ個の分割ストリームのそれぞれから並列に復号化すべき部分を適切に認識して復号化することができる。また、選択情報がデータ構成単位（例えば、Ｈ．２６４／ＡＶＣのＮＡＬユニット）の数を示す場合には、その選択情報によって示される内容を簡単にすることができる。【００６７】
また、前記第１の分割制御部は、さらに、前記ストリーム分割部ごとに、当該ストリーム分割部によって実行される１つの処理対象領域に対するストリーム分割処理が終了したか否かを判定し、終了したと判定した際には、前記ストリーム分割処理を終了したストリーム分割部に対して優先的に新たな処理対象領域を指定する。【００６８】
これにより、ストリーム分割部で１つの処理対象領域に対するストリーム分割処理が終了すると、新たな処理対象領域に対するストリーム分割処理がそのストリーム分割部に割り当てられるため、Ｍ個のストリーム分割部の処理量を均等にすることができる。【００６９】
また、前記Ｎ個の復号化部は、第１および第２の復号化部を含み、前記第１の復号化部が、前記Ｎ個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記Ｎ個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が空間的に隣接していた場合には、前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する。【００７０】
これにより、分割ストリームに含まれる第１のスライス部分と、他の分割ストリームに含まれる第２のスライス部分とが互いに隣接しているにも関わらず、第１の復号化部と第２の復号化部のそれぞれによって個別に復号化される場合でも、第１の復号化部から第２の復号化部に対して隣接情報が渡されるため、必要に応じてその隣接情報を用いることで、他の分割ストリームに含まれる第２のスライス部分を適切に復号化することができる。【００７１】
また、前記第１の分割制御部は、前記符号化ストリームに含まれる、スライス、ピクチャ、または複数のピクチャからなるピクチャ群を前記処理対象領域として指定する。【００７２】
これにより、スライスが処理対象領域として指定される場合には、処理対象領域、すなわちストリーム分割処理が最小の粒度でＭ個のストリーム分割部に対して振り分けられるため、Ｍ個のストリーム分割部の処理量を均等にすることが容易となる。また、ピクチャまたはピクチャ群が処理対象領域として指定される場合には、処理対象領域、すなわちストリーム分割処理が比較的大きな粒度でＭ個のストリーム分割部に対して振り分けられるため、第１および第２の分割制御部による処理対象領域の指定、およびＮ個の分割ストリームの選択のそれぞれの処理にかかる負荷を軽減することができる。【００７３】
また、前記Ｎ個の復号化部のうち、ｎ番目（ｎは１以上かつＮ以下の整数）の復号化部は、前記ストリーム分割部が生成する前記Ｎ個の分割ストリームのうち、ｎ番目の分割ストリームを復号化することが好ましい。言い換えれば、復号化部は、Ｎ×Ｍ個の分割ストリームのうち、予め定められたＭ個の分割ストリームの中から順次選択される、分割ストリームの一部をそれぞれ復号化することが好ましい。その結果、Ｎ個の復号化部のそれぞれは、前記第２の分割制御部によって順次選択される分割ストリームの一部をそれぞれ復号化することによって、前記Ｍ×Ｎ個の分割ストリームのうちのＭ個の分割ストリームを復号化する。これにより、Ｎ個の復号化部は、それぞれに割り当てられた分割ストリームのみを復号化することができる。【００７４】
また、前記ストリーム分割部は、前記第１の分割制御部から指定されていない処理対象領域を読み飛ばすことによって、指定された処理対象領域のみに対してストリーム分割処理を行ってもよい。これにより、ストリーム分割部は、複雑な処理を行うことなく指定された処理対象領域のみを処理することができる。【００７５】
また、前記ヘッダ情報は、ピクチャ層以上のヘッダ情報であってもよい。これにより、処理対象領域がピクチャよりも小さい場合、つまり、ストリーム分割処理がピクチャより小さな単位で振り分けられる場合であっても、全てのストリーム分割部でピクチャ層以上のヘッダ情報の解析処理が行われるため、ストリーム分割部は適切に分割ストリームを生成することができる。【００７６】
また、本発明の一態様に係る画像符号化装置は、画像データを符号化することにより符号化ストリームを生成する画像符号化装置であって、前記画像データに含まれるピクチャごとに、当該ピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成するＮ個の符号化部と、前記符号化ストリームを構成する処理対象領域を指定する第１の結合制御部と、Ｎ個の分割ストリームのそれぞれに含まれる、処理対象領域に対応する部分領域を結合することによって、前記処理対象領域である結合符号化領域を生成する結合処理を、前記第１の結合制御部によって指定されたＭ個（Ｍは２以上の整数）の前記処理対象領域に対して並列に実行するＭ個のストリーム結合部と、前記第１の結合制御部によって指定されたＭ個の処理対象領域の前記符号化ストリーム内での配置に基づいて、前記Ｍ個のストリーム結合部によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域を順次選択する第２の結合制御部と、前記第２の結合制御部によって選択された順に、前記Ｍ個の結合符号化領域を多重化することによって前記符号化ストリームを生成する多重化部とを備え、前記Ｍ個のストリーム結合部のそれぞれは、前記結合処理を行う際に、符号化された複数の前記構成単位から前記部分領域が構成されている場合には、前記部分領域を符号化された複数の前記構成単位に分割して組み替えることによって前記結合符号化領域を生成し、前記組み替えを行う際に、前記画像データに含まれるスライスが複数のスライス部分に分割および符号化されて前記Ｎ個の分割ストリームに割り当てられているときには、前記結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する。【００７７】
これにより、ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれがＮ個の符号化部に割り当てられて符号化されるため、Ｎ個の符号化部による符号化処理の負担を均等にすることができ、符号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャを１スライスで構成する場合であっても、ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの符号化を１つの符号化部で負担することなく、Ｎ個の符号化部で均等に負担することができる。【００７８】
さらに、結合処理（ストリーム結合処理）は、第１の結合制御部による処理対象領域の指定によって、Ｍ個のストリーム結合部に対して処理対象領域単位で振り分けられるため、その結合処理をＭ個のストリーム結合部で並列に行うことができる。【００７９】
ここで、ピクチャが複数のマクロブロックラインに分割されて符号化されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が分割ストリームに順に割り当てられることがある。つまり、各分割ストリームには、スライスの断片であるスライス部分が分散されている。そのため、このように分散された複数のスライス部分は、画像データ内における前後関係を有していない。したがって、連続する複数のマクロブロックラインが、所定の符号語による依存関係を有する場合、分散された複数のスライス部分はその依存関係を保てなくなり、そのままでは符号化方式に準じた符号化ストリームを生成できない。そこで本発明の一態様に係る画像符号化装置では、結合処理において、その分散された複数のスライス部分の集合であるスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む結合符号化領域（例えばスライスまたはピクチャなど）を符号化方式に準じた形式とすることができる。【００８０】
また、結合処理がＭ個のストリーム結合部に対して処理対象領域単位で振り分けられ、Ｍ個のストリーム結合部で並列に行われると、符号化ストリームに含まれる複数の処理対象領域の順序関係を、並列化された結合処理により生成されるＭ個の結合符号化領域（部分ストリーム）において維持することができなくなり、Ｍ個の結合符号化領域を正しい順序で多重化することができない。【００８１】
そこで本発明の一態様に係る画像符号化装置では、指定された処理対象領域ごとに、その処理対象領域の配置、つまり符号化ストリームにおける処理対象領域の符号化の順序に基づいて、Ｍ個のストリーム結合部によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域が順次選択される。そして、その選択された順にＭ個の結合符号化領域が多重化される。したがって、正しい順序関係でＭ個の結合符号化領域を多重化することができる。さらに、本発明の一態様に係る画像符号化装置では、処理対象領域の指定と、多重化されるべき結合符号化領域の選択とが、Ｍ個のストリーム結合部およびＮ個の符号化部と異なる構成要素によって一元的に行われる。したがって、上述のように正しい順序関係でＭ個の結合符号化領域を多重化するために、Ｍ個のストリーム結合部およびＮ個の符号化部などの各構成要素に対して、特別な処理および構成を要することなく、簡単な構成で符号化の並列処理を適切に実行することができる。【００８２】
また、前記第２の結合制御部は、さらに、多重化されるべき結合符号化領域を選択するごとに、当該結合符号化領域を示す選択情報を生成して前記多重化部に出力し、前記多重化部は、前記第２の結合制御部から前記選択情報を取得するごとに、当該選択情報によって示される結合符号化領域を前記符号化ストリームに多重化する。【００８３】
これにより、多重化部は、選択情報を用いて正しい順序関係でＭ個の結合符号化領域を多重化することができる。【００８４】
また、前記第２の結合制御部は、選択された結合符号化領域のデータのサイズを含む前記選択情報を前記多重化部に出力し、前記多重化部は、前記選択情報に含まれるサイズの結合符号化領域を前記符号化ストリームに多重化する。【００８５】
これにより、第１の結合制御部による処理対象領域の指定が繰り返されることによって、ストリーム結合部から結合符号化領域が順次生成される場合には、多重化部は、それらの生成される複数の結合符号化領域から、多重化すべき結合符号化領域を適切に認識して多重化することができる。【００８６】
例えば、前記第２の結合制御部は、結合符号化領域を構成するデータ構成単位の数、またはビット量を前記サイズとして含む前記選択情報を出力する。これにより、選択情報がデータ構成単位（例えば、Ｈ．２６４／ＡＶＣのＮＡＬユニット）の数を示す場合には、その選択情報によって示される内容を簡単にすることができる。【００８７】
また、前記第１の結合制御部は、さらに、前記ストリーム結合部ごとに、当該ストリーム結合部によって実行される結合処理が終了したか否かを判定し、終了したと判定した際には、前記結合処理を終了したストリーム結合部に対して優先的に新たな処理対象領域を指定する。【００８８】
これにより、結合処理をしていないストリーム結合部に対して、新たな結合処理が割り当てられるため、Ｍ個のストリーム結合部の処理量を均等にすることができる。【００８９】
また、前記Ｎ個の符号化部は、第１および第２の符号化部を含み、前記第１の符号化部が、前記Ｎ個の構成単位のうちの当該第１の符号化部に割り当てられた第１の構成単位を符号化し、前記第２の符号化部が、前記Ｎ個の構成単位のうちの当該第２の符号化部に割り当てられた第２の構成単位を符号化する場合であって、前記第１および第２の構成単位が前記ピクチャ内で互いに隣接していた場合には、前記第１の符号化部は、前記第２の符号化部による前記第２の構成単位の符号化開始前に、前記第１の構成単位の符号化を開始し、前記第２の符号化部は、前記第１の符号化部による前記第１の構成単位の符号化によって生成される隣接情報を前記第１の符号化部から取得し、前記隣接情報を用いて前記第２の構成単位を符号化する、または、前記隣接情報を用いずに前記第２の構成単位を符号化する。【００９０】
これにより、処理対象領域が複数のマクロブロックラインなどの構成単位に分割され、第１および第２の構成単位のそれぞれが第１および第２の符号化部によって並列に符号化される場合であっても、第１の符号化部から第２の符号化部に対して隣接情報が渡されるため、必要に応じてその隣接情報を用いることによって、第２の構成単位の符号化を適切に行うことができる。【００９１】
また、前記ストリーム結合部は、Ｎ個の分割ストリームのそれぞれに含まれる、前記第１の結合制御部から指定されていない処理対象領域に対応する部分領域を読み飛ばすことによって、指定された処理対象領域に対応する部分領域のみに対して結合処理を行ってもよい。これにより、ストリーム結合部は、複雑な処理を行うことなく指定された処理対象領域に対応する部分領域のみを処理することができる。【００９２】
また、前記処理対象領域はスライスであってもよい。これにより、処理対象領域、すなわち結合処理が最小の粒度でＭ個のストリーム結合部に対して振り分けられるため、Ｍ個のストリーム結合部の処理量を均等にすることが容易となる。【００９３】
また、前記処理対象領域はピクチャ、または複数のピクチャからなるピクチャ群であってもよい。これにより、処理対象領域、すなわち結合処理が比較的大きな粒度でＭ個のストリーム結合部に対して振り分けられるため、第１および第２の結合制御部による処理対象領域の指定、および結合符号化領域の選択のそれぞれの処理にかかる負荷を軽減することができる。【００９４】
なお、本発明は、このような画像復号化装置および画像符号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００９５】
本発明の画像復号化装置および画像符号化装置は、簡単な構成で復号化および符号化の並列処理を適切に実行することができるという作用効果を奏する。
【図面の簡単な説明】
【００９６】
【図１】図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【図２Ｂ】図２Ｂは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【図３】図３は、本発明の実施の形態１におけるスライスヘッダの挿入処理を説明するための説明図である。
【図４】図４は、本発明の実施の形態１におけるＭＢアドレス情報の更新処理を説明するための説明図である。
【図５】図５は、本発明の実施の形態１におけるスライス終端処理を説明するための説明図である。
【図６Ａ】図６Ａは、本発明の実施の形態１における符号化ストリームを示す図である。
【図６Ｂ】図６Ｂは、本発明の実施の形態１におけるストリーム分割制御部によるスライスの振り分け処理の具体例を示す説明図である。
【図７】図７は、本発明の実施の形態１におけるストリーム分割制御部によるスライスの振り分け、およびストリーム分割処理を行った場合における分割ストリームバッファの状態を示す図である。
【図８】図８は、本発明の実施の形態１におけるストリーム分割制御部によるスライスの振り分け、およびストリーム分割処理を行った場合における選択情報の形式の一例を示す図である。
【図９】図９は、本発明の実施の形態１における画像復号化装置の全体的な動きを示すフローチャートである。
【図１０】図１０は、本発明の実施の形態１におけるストリーム分割部の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態１におけるスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。
【図１２】図１２は、本発明の実施の形態１におけるスライスヘッダ挿入部の構成を示すブロック図である。
【図１３】図１３は、本発明の実施の形態１における分割ストリームバッファの第１領域〜第４領域に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【図１４Ａ】図１４Ａは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１４Ｂ】図１４Ｂは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１５】図１５は、本発明の実施の形態１における分割点検出部の動作を示すフローチャートである。
【図１６Ａ】図１６Ａは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１６Ｂ】図１６Ｂは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１７】図１７は、本発明の実施の形態１におけるスキップラン修正部の構成を示すブロック図である。
【図１８】図１８は、本発明の実施の形態１におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図１９Ａ】図１９Ａは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図１９Ｂ】図１９Ｂは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図２０】図２０は、本発明の実施の形態１におけるＱＰ変化量の累積を説明するための説明図である。
【図２１】図２１は、本発明の実施の形態１におけるＱＰデルタ修正部によるＱＰ変化量の修正処理を示すフローチャートである。
【図２２Ａ】図２２Ａは、本発明の実施の形態１における高解像度デコードを説明するための説明図である。
【図２２Ｂ】図２２Ｂは、本発明の実施の形態１における高速デコードを説明するための説明図である。
【図２２Ｃ】図２２Ｃは、本発明の実施の形態１における複数チャンネルデコードを説明するための説明図である。
【図２３】図２３は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。
【図２４】図２４は、本発明の実施の形態２におけるストリーム分割部の構成を示すブロック図である。
【図２５】図２５は、本発明の実施の形態２におけるＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【図２６】図２６は、本発明の実施の形態２におけるスキップラン修正部の構成を示すブロック図である。
【図２７】図２７は、本発明の実施の形態２におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図２８】図２８は、本発明の実施の形態２におけるＱＰデルタ挿入部による累積ＱＰ変化量の挿入処理を示すフローチャートである。
【図２９】図２９は、本発明の実施の形態３における画像符号化装置の構成を示すブロック図である。
【図３０Ａ】図３０Ａは、本発明の実施の形態３におけるピクチャがＭＢＡＦＦで構成されていない場合の符号化の順序を示す図である。
【図３０Ｂ】図３０Ｂは、本発明の実施の形態３におけるピクチャがＭＢＡＦＦで構成されている場合の符号化の順序を示す図である。
【図３１】図３１は、本発明の実施の形態３におけるスライスヘッダの挿入処理およびスライス終端処理を説明するための説明図である。
【図３２Ａ】図３２Ａは、本発明の実施の形態３における分割ストリームを示す図である。
【図３２Ｂ】図３２Ｂは、本発明の実施の形態３におけるストリーム結合制御部によるスライスの振り分け処理の具体例を示す説明図である。
【図３３】図３３は、本発明の実施の形態３におけるストリーム結合制御部によるスライスの振り分け、およびストリーム分割処理を行った場合における部分ストリームバッファの状態を示す図である。
【図３４】図３４は、本発明の実施の形態３におけるストリーム結合制御部によるスライスの振り分け、およびストリーム分割処理を行った場合における選択情報の形式の一例を示す図である。
【図３５】図３５は、本発明の実施の形態３におけるストリーム結合部の構成を示すブロック図である。
【図３６】図３６は、本発明の実施の形態３におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図３７Ａ】図３７Ａは、本発明の実施の形態３におけるＱＰ変化量の修正処理を説明するための説明図である。
【図３７Ｂ】図３７Ｂは、本発明の実施の形態３におけるＱＰ変化量の修正処理を説明するための説明図である。
【図３８Ａ】図３８Ａは、本発明の実施の形態３におけるストリーム結合部を１つだけ備えた画像符号化装置の構成を示すブロック図である。
【図３８Ｂ】図３８Ｂは、本発明の実施の形態３におけるストリーム結合部を１つだけ備えた画像符号化装置の動作を示すフローチャートである。
【図３９】図３９は、本発明に係る画像復号化装置および画像符号化装置の適用例を示す図である。
【図４０】図４０は、本発明に係る画像復号化装置の最小構成を示すブロック図である。
【図４１】図４１は、本発明に係る画像復号化装置による画像復号化方法を示すフローチャートである。
【図４２】図４２は、本発明に係る画像符号化装置の最小構成を示すブロック図である。
【図４３】図４３は、本発明に係る画像符号化装置による画像符号化方法を示すフローチャートである。
【図４４】図４４は、符号化されるピクチャの構成を示す図である。
【図４５】図４５は、符号化ストリームの構成を示す図である。
【図４６】図４６は、従来の画像復号化装置の構成を示す図である。
【図４７】図４７は、従来のデコードエンジンの構成を示す図である。
【図４８】図４８は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【図４９】図４９は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。
【図５０Ａ】図５０Ａは、従来の復号化並列処理の一例を説明するための説明図である。
【図５０Ｂ】図５０Ｂは、従来の復号化並列処理の一例を説明するための説明図である。
【図５１】図５１は、従来の画像復号化装置による復号化処理を説明するための説明図である。
【図５２】図５２は、従来のストリーム分割部を備えた画像復号化装置の構成を示すブロック図である。
【発明を実施するための形態】
【００９７】
以下、本発明の実施の形態における画像復号化装置および画像符号化装置について図面を参照しながら説明する。
【００９８】
（実施の形態１）
図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【００９９】
本実施の形態における画像復号化装置１００は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ１１０とメモリ１５０とを備えている。
【０１００】
メモリ１５０は、デコーダ１１０に入力されるデータ、デコーダ１１０により中間的に生成されたデータ、およびデコーダ１１０により最終的に生成されて出力されるデータを記憶するための領域を有する。
【０１０１】
具体的には、メモリ１５０は、ストリームバッファ１５１と、Ｍ個の分割ストリームバッファ（第１分割ストリームバッファ〜第Ｍ分割ストリームバッファ）１５２と、フレームメモリ１５３とを備えている。
【０１０２】
ストリームバッファ１５１には、画像符号化装置により生成されて送信された符号化ストリームが格納される。Ｍ個の分割ストリームバッファ１５２には、デコーダ１１０により生成されるＭ×Ｎ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。なお、各分割ストリームバッファ１５２には、Ｎ個のデコードエンジン１２０のそれぞれに対して割り当てられた領域がある。フレームメモリ１５３には、Ｎ個のデコードエンジン（復号化部）１２０によって生成されたＮ個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ１５３に格納され、表示装置に読み込まれて動画像として表示される。
【０１０３】
デコーダ１１０は、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ１１０は、Ｍ個のストリーム分割部（第１ストリーム分割部〜第Ｍストリーム分割部）１３０と、ストリーム分割制御部１４０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）１２０とを備えている。
【０１０４】
なお、本実施の形態におけるデコードエンジン１２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有する。
【０１０５】
ストリーム分割制御部１４０は、後述するモード情報を取得し、そのモード情報に応じて、Ｍ個のストリーム分割部１３０におけるストリーム分割処理の処理量が均等になるようにするため、各ストリーム分割部１３０のそれぞれに対し、ストリーム分割処理を所定の単位で振り分けるための振り分け制御情報を通知する。なお、ストリーム分割処理については後述する。本実施の形態では、ストリーム分割制御部１４０は、Ｍ個のストリーム分割部１３０におけるストリーム分割処理を、スライス単位で振り分けるものとして説明する。つまり、ストリーム分割制御部１４０は、振り分け制御情報の通知によって、符号化ストリームに含まれる処理対処領域（スライス）ごとに、その処理対象領域に対するストリーム分割処理を、Ｍ個のストリーム分割部１３０のうちの何れか１つに実行させる。例えば、振り分け制御情報は、ストリーム分割処理の対象とされるスライスを識別するためのスライス番号を示す。言い換えれば、ストリーム分割制御部１４０は、Ｍ個のストリーム分割部１３０のうちの何れか１つに対して振り分け制御情報を送信することにより、そのストリーム分割部１３０に対して、ストリーム分割処理の対象となる処理対象領域を指定する。さらに、ストリーム分割制御部１４０は、ストリーム分割処理をスライス単位でＭ個のストリーム分割部１３０に振り分けた結果から、Ｎ個のデコードエンジン１２０に対し、Ｍ個の分割ストリームバッファ１５２のうちどの分割ストリームバッファ１５２から分割ストリームを取得すればよいかを示す選択情報を通知する。
【０１０６】
Ｍ個のストリーム分割部１３０のそれぞれは、モード情報および振り分け制御情報を取得し、そのモード情報および振り分け制御情報に応じて、符号化ストリームから処理すべきスライス（処理対象領域）を抽出し、そのスライスをＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）に並列に分割する。つまり、本実施の形態におけるストリーム分割部１３０は、符号化ストリームに含まれる、ストリーム分割制御部１４０によって振り分けられたスライスごとに、そのスライスを１つまたは複数のＭＢラインに分割する。そして、ストリーム分割部１３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。上述のストリーム分割処理は、このように、スライス（処理対象領域）を複数のＭＢラインに分割してＮ個の分割ストリームのうちの何れかの一部に割り当てる処理である。また、Ｍ個のストリーム分割部１３０は、そのストリーム分割処理を並列して実行することにより、Ｎ×Ｍ個の分割ストリームを生成する。
【０１０７】
なお、ＭＢラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位である。また、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されていない場合には、処理対象領域（スライス）を複数のＭＢラインに分割するが、ピクチャがＭＢＡＦＦで構成されている場合には、２つのＭＢラインを１つの構成単位（以下、ＭＢラインペアという）として扱い、処理対象領域（スライス）を複数のＭＢラインペアに分割する。言い換えれば、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦで構成されている場合には、処理対象領域（スライス）を複数のＭＢラインに分割し、ＭＢラインペアに属する２つのＭＢラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがＭＢＡＦＦで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがＭＢＡＦＦで構成されていない場合と、ＭＢＡＦＦで構成されている場合とで異なる処理が必要なときには、その都度、ＭＢＡＦＦに対して特有の処理を説明する。また、ＭＢＡＦＦに対してその特有な処理などが必要とされない場合には、以下の説明において、ＭＢラインをＭＢラインペアに置き換えることによって、その説明を、ピクチャがＭＢＡＦＦで構成されている場合における本発明の説明に置き換えることができる。
【０１０８】
Ｍ個のストリーム分割部１３０のそれぞれは、このように分割したＮ個の分割ストリームを、Ｍ個の分割ストリームバッファ１５２のうちの、そのストリーム分割部１３０に対応付けられた１つの分割ストリームバッファ１５２に格納する。すなわち、第１ストリーム分割部１３０は、分割したＮ個の分割ストリームを第１分割ストリームバッファ１５２に格納し、第２ストリーム分割部１３０は、分割したＮ個の分割ストリームを第２分割ストリームバッファ１５２に格納し、第Ｍストリーム分割部１３０は、分割したＮ個の分割ストリームを第Ｍ分割ストリームバッファ１５２に格納する。
【０１０９】
また、Ｍ個のストリーム分割部１３０のそれぞれは、スライスを所定の単位として扱い、スライスを複数のＭＢラインに分割する際に、符号化ストリーム中のＭＢラインの直前、または、そのＭＢラインに属する２つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのＭＢラインに付随させて、分割ストリームの一部に割り当てる。
【０１１０】
このようなストリーム分割部１３０によるＭＢラインごとの分割によって、ピクチャに含まれる、複数のＭＢラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部１３０は、Ｎ個の分割ストリームに分割するときには、Ｎ個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
【０１１１】
Ｎ個のデコードエンジン１２０は、モード情報および選択情報を取得し、そのモード情報および選択情報に応じて、それぞれ自らが処理すべき分割ストリームをＭ個の分割ストリームバッファ１５２のいずれかから読み出し、読み出した分割ストリームを並列に復号化することによりＮ個の分割復号画像データを生成する。
【０１１２】
例えば、ストリーム分割制御部１４０の選択情報により、第１分割ストリームバッファ１５２から分割ストリームを取得するように通知された場合には、第１デコードエンジン１２０は、第１分割ストリームバッファ１５２の第１デコードエンジン１２０に割り当てたれた領域から第１分割ストリームを読み出す。同様に、第２デコードエンジン１２０は、第１分割ストリームバッファ１５２の第２デコードエンジン１２０に割り当てられた領域から第２分割ストリームを読み出し、第３デコードエンジン１２０は、第１分割ストリームバッファ１５２の第３デコードエンジン１２０に割り当てられた領域から第３分割ストリームを読み出し、第４デコードエンジン１２０は、第１分割ストリームバッファ１５２の第４デコードエンジン１２０に割り当てられた領域から第４分割ストリームを読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【０１１３】
また、例えば、ストリーム分割制御部１４０の選択情報により、第Ｍ分割ストリームバッファ１５２から分割ストリームを取得するように通知された場合には、第１デコードエンジン１２０は、第Ｍ分割ストリームバッファ１５２の第１デコードエンジン１２０に割り当てられた領域から第１分割ストリームを読み出す。同様に、第２デコードエンジン１２０は、第２分割ストリームを第Ｍ分割ストリームバッファ１５２の第２デコードエンジン１２０に割り当てられた領域から第２分割ストリームを読み出し、第３デコードエンジン１２０は、第Ｍ分割ストリームバッファ１５２の第３デコードエンジン１２０が割り当てられた領域から第３分割ストリームを読み出し、第４デコードエンジン１２０は、第Ｍ分割ストリームバッファ１５２の第４デコードエンジン１２０に割り当てられた領域から第４分割ストリームを読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【０１１４】
また、Ｎ個のデコードエンジン１２０は、分割ストリームを復号化するときには、フレームメモリ１５３に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
【０１１５】
さらに、Ｎ個のデコードエンジン１２０のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン１２０から、それらの復号化されたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したデコードエンジン１２０は、その隣接ＭＢ情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン１２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【０１１６】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のデコードエンジン１２０はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接ＭＢ情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
【０１１７】
図２Ａは、ピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。 
【０１１８】
ピクチャがＭＢＡＦＦで構成されていない場合、第１デコードエンジン１２０は第０ＭＢラインを復号化し、第２デコードエンジン１２０が第１ＭＢラインを復号化し、第３デコードエンジン１２０が第２ＭＢラインを復号化し、第４デコードエンジン１２０が第３ＭＢラインを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【０１１９】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインの復号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインの左端のマクロブロックの復号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインの左端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインの左端のマクロブロックの復号化を開始する。
【０１２０】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
【０１２１】
図２Ｂは、ピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【０１２２】
ピクチャがＭＢＡＦＦで構成されている場合、ＭＢラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列（ＭＢライン）を２つ有する構成単位である。ＭＢラインペアは、上下にある２つのマクロブロック（マクロブロックペア）ごとに、適応的にフレーム／フィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがＭＢＡＦＦで構成されていない場合と同様に、第１デコードエンジン１２０は第０ＭＢラインペアを復号化し、第２デコードエンジン１２０が第１ＭＢラインペアを復号化し、第３デコードエンジン１２０が第２ＭＢラインペアを復号化し、第４デコードエンジン１２０が第３ＭＢラインペアを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインペアは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【０１２３】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインペアの復号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインペアの左上端のマクロブロックの復号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインペアの左上端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインペアの左上端のマクロブロックの復号化を開始する。
【０１２４】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
【０１２５】
なお、ピクチャがＭＢＡＦＦで構成されていない場合、および、ピクチャがＭＢＡＦＦで構成されている場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて復号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて復号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
【０１２６】
このような本実施の形態における画像復号化装置１００の特徴は、ストリーム分割部１３０による分割によって生成された、スライスの１つまたは複数の部分（スライス部分）からなるスライス部分群を１つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、ＭＢアドレス情報の更新処理、スキップラン修正処理、およびＱＰデルタ設定処理を含む。また、ＱＰデルタ設定処理は、ＱＰデルタ修正処理およびＱＰデルタ挿入処理を含む。なお、本実施の形態では、ＱＰデルタ設定処理がＱＰデルタ修正処理である場合について説明する。
【０１２７】
図３は、スライスヘッダの挿入処理を説明するための説明図である。
【０１２８】
例えば、Ｍ個のストリーム分割部１３０は、図３の（ａ）に示すピクチャｐ１を分割する。なお、以下の説明では、Ｍ個のストリーム分割部１３０の全体を、ストリーム分割部群１３０ａという。上述のように、本実施の形態では、ストリーム分割制御部１４０による振り分けの単位である処理対象領域をスライスとして説明する。したがって、ピクチャｐ１が複数のスライスから構成されている場合には、各ストリーム分割部１３０がピクチャｐ１に含まれるスライスを分割する。その結果、Ｍ個のストリーム分割部１３０の全体であるストリーム分割部群１３０ａが、以下に説明するように、ピクチャｐ１を分割することになる。なお、ストリーム分割制御部１４０による振り分けの単位である処理対象領域がピクチャである場合には、１つのストリーム分割部１３０が、以下に説明するように、ピクチャｐ１を分割することになる。
【０１２９】
ピクチャｐ１は、スライスＡ、スライスＢおよびスライスＣから構成されているとともに、ＭＢラインＬ１〜Ｌ１２から構成されている。
【０１３０】
スライスＡは、ＭＢラインＬ１〜Ｌ７にわたって配置され、スライスヘッダｈａと、そのスライスヘッダｈａから連続して配置されている複数のマクロブロックｍｂａとを有する。スライスＢは、ＭＢラインＬ７〜Ｌ８にわたって配置され、スライスヘッダｈｂと、そのスライスヘッダｈｂから連続して配置されている複数のマクロブロックｍｂｂとを有する。スライスＣは、ＭＢラインＬ９〜Ｌ１２にわたって配置され、スライスヘッダｈｃと、そのスライスヘッダｈｃから連続して配置されている複数のマクロブロックｍｂｃとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
【０１３１】
ストリーム分割部群１３０ａは、図３の（ｂ）に示すように、上述のピクチャｐ１をＭＢラインごとに分割する。そして、ストリーム分割部群１３０ａは、ＭＢラインＬ１〜Ｌ１２のそれぞれを先頭から順に、第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部群１３０ａは、ＭＢラインＬ１を第１分割ストリームの一部に割り当て、ＭＢラインＬ２を第２分割ストリームの一部に割り当て、ＭＢラインＬ３を第３分割ストリームの一部に割り当て、ＭＢラインＬ４を第４分割ストリームの一部に割り当てる。そして、ストリーム分割部群１３０ａは、第４分割ストリームへのＭＢラインの割り当てが終了すると、第１分割ストリームへのＭＢラインの割り当てを繰り返す。つまり、ストリーム分割部群１３０ａは、ＭＢラインＬ５を第１分割ストリームの一部に割り当て、ＭＢラインＬ６を第２分割ストリームの一部に割り当て、ＭＢラインＬ７を第３分割ストリームの一部に割り当て、ＭＢラインＬ８を第４分割ストリームの一部に割り当てる。
【０１３２】
その結果、第１分割ストリームは連続するＭＢラインＬ１、Ｌ５、Ｌ９を含み、第２分割ストリームは連続するＭＢラインＬ２、Ｌ６、Ｌ１０を含み、第３分割ストリームは連続するＭＢラインＬ３、Ｌ７、Ｌ１１を含み、第４分割ストリームは連続するＭＢラインＬ４、Ｌ８、Ｌ１２を含む。
【０１３３】
なお、ＭＢラインＬ１〜Ｌ６と、ＭＢラインＬ７の先頭側の６マクロブロックからなる集合と、ＭＢラインＬ７の終端側の１０マクロブロックからなる集合と、ＭＢラインＬ８〜Ｌ１２とは、それぞれスライスＡ〜Ｃの一部を構成するスライス部分である。そして、第１分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ１、Ｌ５からスライス部分群（第１分割ストリームにおけるスライスＡ）が構成される。また、第２分割ストリームでは、スライスＢのスライス部分であるＭＢラインＬ２、Ｌ６からスライス部分群（第２分割ストリームにおけるスライスＢ）が構成される。
【０１３４】
ここで、単純にＭＢラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン１２０に認識させることができない場合がある。
【０１３５】
例えば、第１分割ストリームには、上述のように連続するＭＢラインＬ１、Ｌ５、Ｌ９が含まれている。この場合、ＭＢラインＬ１、Ｌ５はスライスＡとして認識されるべきであり、ＭＢラインＬ９はスライスＣとして認識されるべきである。そのためには、第１分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ１の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第１分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ９の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。図３に示す例では、スライスヘッダｈａ、ｈｃがそれぞれＭＢラインＬ１、Ｌ９の先頭に予め配されているため、ストリーム分割部群１３０ａはＭＢラインＬ１、Ｌ５、Ｌ９をスライスヘッダｈａ、ｈｃとともに第１分割ストリームに割り当てればよい。
【０１３６】
一方、第２分割ストリームには、上述のように連続するＭＢラインＬ２、Ｌ６、Ｌ１０が含まれている。この場合、ＭＢラインＬ２、Ｌ６はスライスＡとして認識されるべきであり、ＭＢラインＬ１０はスライスＣとして認識されるべきである。そのためには、第２分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ２の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第２分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ１０の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。
【０１３７】
そこで、本実施の形態におけるストリーム分割部群１３０ａは、ＭＢラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダｈａ、ｈｂ、ｈｃを複製することにより複製スライスヘッダｈａ’、ｈｂ’、ｈｃ’を生成し、それらを分割ストリームに挿入する。
【０１３８】
例えば、ストリーム分割部群１３０ａは、スライスヘッダｈａを複製することにより３つの複製スライスヘッダｈａ’を生成し、その複製スライスヘッダｈａ’をＭＢラインＬ２、Ｌ３、Ｌ４の直前に挿入する。さらに、ストリーム分割部群１３０ａは、スライスヘッダｈｂを複製することにより１つの複製スライスヘッダｈｂ’を生成し、その複製スライスヘッダｈｂ’をＭＢラインＬ８の直前に挿入する。さらに、ストリーム分割部群１３０ａは、スライスヘッダｈｃを複製することにより３つの複製スライスヘッダｈｃ’を生成し、その複製スライスヘッダｈｃ’をＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。
【０１３９】
その結果、第２分割ストリームでは、スライスＡの先頭となるＭＢラインＬ２の直前に、スライスＡのスライスヘッダｈａの複製である複製スライスヘッダｈａ’が配置され、スライスＣの先頭となるＭＢラインＬ１０の直前に、スライスＣのスライスヘッダｈｃの複製である複製スライスヘッダｈｃ’が配置される。これにより、第２デコードエンジン１２０は、複製スライスヘッダｈａ’、ｈｃ’から、第２分割ストリームのスライスＡおよびスライスＣのそれぞれの復号化に必要なパラメータを得ることができる。
【０１４０】
次に、ＭＢアドレス情報の更新処理について説明する。
【０１４１】
ストリーム分割部群１３０ａは、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１４２】
つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのＭＢアドレス情報と同一のＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
【０１４３】
例えば、ピクチャｐ１のスライスＡのスライスヘッダｈａには、そのスライスＡの先頭マクロブロック（ＭＢラインＬ１の先頭マクロブロック）のピクチャｐ１内におけるアドレスを示すＭＢアドレス情報が含まれている。このようなスライスヘッダｈａが複製されることによって生成された複製スライスヘッダｈａ’には、当初、ＭＢラインＬ１の先頭マクロブロックのピクチャｐ１内におけるアドレスを特定するためのＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダｈａ’が、ＭＢラインＬ２の直前に挿入されれば、その複製スライスヘッダｈａ’のＭＢアドレス情報により特定されるアドレスは、第２分割ストリームにおいてその複製スライスヘッダｈａ’を有するスライスＡの先頭マクロブロック（ＭＢラインＬ２の先頭マクロブロック）のピクチャｐ１内におけるアドレスを指し示さず、ＭＢラインＬ１の先頭マクロブロックのアドレスを指し示している。
【０１４４】
そこで、本実施の形態におけるストリーム分割部群１３０ａは、上述のように、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１４５】
図４は、ＭＢアドレス情報の更新処理を説明するための説明図である。
【０１４６】
ストリーム分割部１３０は、まず、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）から、ピクチャの水平方向のマクロブロックの数に関連する情報である“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”を取得する。
【０１４７】
さらに、ストリーム分割部１３０は、複製元のスライスヘッダに含まれるＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
【０１４８】
次に、ストリーム分割部１３０は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のＭＢラインにあるかを示す値“ｍｂｐｏｓｖ”を算出する。なお、値“ｍｂｐｏｓｖ”は０以上の整数である。
【０１４９】
そして、ストリーム分割部１３０は、直前に複製スライスヘッダが挿入されるＭＢラインが、複製元のスライスヘッダが配置されているＭＢラインから見てｎ行離れているときには、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１５０】
なお、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されている場合には、ストリーム分割部１３０は、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１５１】
ストリーム分割部１３０は、複製スライスヘッダに当初含まれているＭＢアドレス情報を、上述のように算出されたＭＢアドレス情報に更新する。これにより、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
【０１５２】
次に、スライス終端処理について説明する。
【０１５３】
符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図３に示すように、単純に、ピクチャが複数のＭＢラインに分割され、その複数のＭＢラインがそれぞれ第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン１２０に認識させることができない場合がある。
【０１５４】
そこで、本実施の形態におけるストリーム分割部１３０は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
【０１５５】
図５は、スライス終端処理を説明するための説明図である。
【０１５６】
例えば、図５の（ａ）に示すように、符号化ストリームのピクチャｐ１に含まれるスライスＣは、スライスヘッダｈｃと、ＭＢラインＬ９〜Ｌ１２と、スライス終端情報ｅｃとを含んでいる。
【０１５７】
ストリーム分割部群１３０ａはピクチャｐ１をＭＢラインごとに分割する。その結果、図５の（ｂ）〜（ｅ）に示すように、１つのストリーム分割部１３０によって、ＭＢラインＬ９はスライスヘッダｈｃと共に第１分割ストリームに割り当てられ、ＭＢラインＬ１０は第２分割ストリームに割り当てられ、ＭＢラインＬ１１は第３分割ストリームに割り当てられ、ＭＢラインＬ１２は第４分割ストリームに割り当てられる。
【０１５８】
さらに、ストリーム分割部１３０は、上述のスライスヘッダの挿入処理により、スライスヘッダｈｃを複製して３つの複製スライスヘッダｈｃ’を生成し、それらの３つの複製スライスヘッダｈｃ’をそれぞれ、第２分割ストリーム〜第４分割ストリームのＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。また、ストリーム分割部１３０は、上述のＭＢアドレス情報の更新処理により、挿入される複製スライスヘッダｈｃ’の位置に応じて、その複製スライスヘッダｈｃ’に含まれるＭＢアドレス情報を更新する。
【０１５９】
ここで、ストリーム分割部１３０は、スライス終端処理として、第１分割ストリームにおけるスライスＣ（ＭＢラインＬ９）の終端、第２分割ストリームにおけるスライスＣ（ＭＢラインＬ１０）の終端、第３分割ストリームにおけるスライスＣ（ＭＢラインＬ１１）の終端、および第４分割ストリームにおけるスライスＣ（ＭＢラインＬ１２）の終端を示すスライス終端情報ｅｃ’を生成する。そして、ストリーム分割部１３０は、その生成されたスライス終端情報ｅｃ’を、第１分割ストリーム〜第４分割ストリームのＭＢラインＬ９、Ｌ１０、Ｌ１１、Ｌ１２の直後に設定する。なお、ストリーム分割部１３０は、符号化ストリームをＭＢラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ｅｃを破棄している。また、スライス終端情報ｅｃとスライス終端情報ｅｃとが同一の情報であれば、最終的には、ＭＢラインＬ１２はスライス終端情報ｅｃ’（ｅｃ）と共に第４分割ストリームに割り当てられることになる。
【０１６０】
これにより、各デコードエンジン１２０は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
【０１６１】
次に、ストリーム分割制御部１４０によって行われる、符号化ストリームに含まれるスライスの振り分け処理について説明する。
【０１６２】
ここまでで説明したように、本実施の形態における画像復号化装置１００は、Ｍ個のストリーム分割部１３０と、Ｎ個のデコードエンジン１２０とを備えており、符号化ストリームの復号化処理を並列化している。このように、システム全体における並列処理を可能とすることにより、復号化処理全体の性能向上を実現している。
【０１６３】
ここで、Ｍ個のストリーム分割部１３０のそれぞれは、符号化ストリームに含まれる符号化ピクチャのスライスを所定の単位（処理対象領域）として１つまたは複数のＭＢラインに分割するが、スライスの大きさは一定ではないため、その処理量はスライス毎に変動する。
【０１６４】
また、全てのスライスの大きさが一定であるようなシステムであっても、処理の対象は符号化されたストリームであるため、その処理量はスライス毎の符号量に依存する。一般的な動画像符号化方式では、符号化ストリームは可変長符号化されており、データの内容に応じて符号量が変動する。また、Ｈ．２６４／ＡＶＣ方式におけるスライスには、Ｉスライス、Ｐスライス、Ｂスライスなどと呼ばれる種類がある。画面内符号化処理が行われるＩスライスでは符号量が多く、画面内符号化処理に加えて画面間符号化処理が行われるＰスライスと、Ｂスライスでは符号量が少なくなる傾向がある。このように、符号化ストリームに含まれる符号化スライスの符号量は一定ではなく、大きく変動しうる。そのため、入力される符号化されたスライスを順番にＭ個のストリーム分割部１３０のそれぞれに振り分けるだけでは各ストリーム分割部１３０の処理量が均等にならず、並列化による処理性能向上の効果が十分に得られない。
【０１６５】
そこで、ストリーム分割制御部１４０は、各ストリーム分割部１３０の処理量が均等になるように、各スライスをストリーム分割部１３０のそれぞれに対して振り分ける。
【０１６６】
図６Ａおよび図６Ｂは、ストリーム分割制御部１４０によるスライスの振り分け処理の具体例を示す説明図である。なお、本実施の形態では、説明を簡単にするために、以下、ＭをＭ＝２として説明する。 
【０１６７】
図６Ａは、Ｈ．２６４／ＡＶＣ方式の符号化ストリームの一例を示す図である。この例における符号化ストリームは、ＳＰＳ（シーケンスパラメータセット）、ＰＰＳ（ピクチャパラメータセット）、およびピクチャを構成するスライスデータ（スライス）から構成されている。ピクチャ０はスライス０のみから構成される。ピクチャ１はスライス１およびスライス２から構成される。ピクチャ２はスライス３およびスライス４から構成される。
【０１６８】
図６Ａ中の矢印は、スライスデータとＰＰＳの参照関係、およびＰＰＳとＳＰＳの参照関係を示しており、例えばスライス０は、ＰＰＳ０に含まれるヘッダ情報を用いて復号化され、スライス１とスライス２は、ＰＰＳ１に含まれるヘッダ情報を用いて復号化される。また、ストリームのシーケンス情報を含むＳＰＳは、ＰＰＳ０〜２によって参照される。つまり、図６Ａに示したＳＰＳは、スライス０〜スライス４の全てのスライスの復号化に利用される。
【０１６９】
このように、Ｈ．２６４／ＡＶＣ方式では、複数のスライスが同一のヘッダ情報（ＳＰＳ、ＰＰＳ）を参照することがあり得る。従って、Ｍ個のストリーム分割部１３０のそれぞれに対してストリーム分割処理を振り分ける場合、ＳＰＳやＰＰＳなどのヘッダ情報は、すべてのストリーム分割部１３０で等しく復号化されて解析処理される必要がある。
【０１７０】
図６Ｂは、ストリーム分割制御部１４０による一連のスライスの振り分け処理を示す図である。処理の開始時点で、各ストリーム分割部１３０は、これから処理するスライスの番号を保持している。例えば、第１ストリーム分割部１３０はこれから処理するスライスの番号の初期値としてＳＮ１＝０を保持し、第２ストリーム分割部１３０はこれから処理するスライスの番号の初期値としてＳＮ２＝０を保持している。
【０１７１】
タイミングｔ０で、第１ストリーム分割部１３０および第２ストリーム分割部１３０はどちらもストリーム分割処理をしていないため、ストリーム分割制御部１４０は、振り分け制御情報を送信することにより、第１ストリーム分割部１３０に対してスライス０の復号化を通知し、第２ストリーム分割部１３０に対してスライス１の復号化を通知する。
【０１７２】
第１ストリーム分割部１３０は、ストリーム分割制御部１４０からスライス０の復号化を通知されると、復号化を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ１の値とを比較する。このタイミングでは、両者は０で一致しているため、第１ストリーム分割部１３０は、最初に入力されるスライスに対してストリーム分割処理を行う。
【０１７３】
具体的には、第１ストリーム分割部１３０は、まずＳＰＳを復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するとともに、振り分け制御情報により通知されたスライスのスライス番号とＳＮ１の値とが一致しているため、入力されたＳＰＳを第１分割ストリームバッファ１５２に対してそのまま出力する。次に、第１ストリーム分割部１３０は、ＰＰＳ０を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するとともに、同様に、入力されたＰＰＳ０を第１分割ストリームバッファ１５２に対してそのまま出力する。次に、第１ストリーム分割部１３０は、スライス０に対してストリーム分割処理を行うとともに、生成したＮ個の分割ストリームを第１分割ストリームバッファ１５２に対して出力する。
【０１７４】
一方、第２ストリーム分割部１３０は、振り分け制御情報により、ストリーム分割制御部１４０からスライス１の復号化を通知されると、復号化を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、復号化を通知されたスライスのスライス番号は１を示し、ＳＮ２は０を示しており、その差分は１である。そこで、第２ストリーム分割部１３０は、入力される１スライス分の処理をスキップし、２番目に入力されるスライスに対してストリーム分割処理を行う。つまり、第２ストリーム分割部１３０は、差分の数だけのスライスに対するストリーム分割処理をスキップする。
【０１７５】
具体的には、第２ストリーム分割部１３０は、まずＳＰＳを復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出する。ここで、第２ストリーム分割部１３０は、復号化を通知されたスライスのスライス番号とＳＮ２の値とが一致していないため、第２分割ストリームバッファ１５２に対するＳＰＳの出力を行わない。次に、第２ストリーム分割部１３０は、ＰＰＳ０を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するが、同様に、第２分割ストリームバッファ１５２に対するＰＰＳ０の出力を行わない。次に、第２ストリーム分割部１３０は、入力されるスライス０に対するストリーム分割処理をスキップする。したがって、第２ストリーム分割部１３０は、第２分割ストリームバッファ１５２に対して、スライス０のストリーム分割処理の結果を出力しない。なお、ストリーム分割処理のスキップは、符号化データに付随するスタートコードを探索することで行われる。ここで、第２ストリーム分割部１３０は、スライス０の処理をスキップしたことで、ＳＮ２をインクリメントしてＳＮ２＝１とする。
【０１７６】
ここで、第２ストリーム分割部１３０がＳＰＳおよびＰＰＳ０を第２分割ストリームバッファ１５２に出力しないのは、Ｎ個のデコードエンジン１２０にて、同じヘッダ情報を重複して受信しないようにするためである。すなわち、ＳＰＳおよびＰＰＳ０は、第１ストリーム分割部１３０により、第１分割ストリームバッファ１５２に対して出力されるため、ＳＰＳおよびＰＰＳ０の第２ストリーム分割部１３０からの出力は抑止されている。
【０１７７】
次に、第２ストリーム分割部１３０は、ＰＰＳ１を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するとともに、復号化を通知されたスライスのスライス番号とＳＮ２の値とが一致しているため、入力されたＰＰＳ１を第２分割ストリームバッファ１５２に対してそのまま出力する。次に、第２ストリーム分割部１３０は、スライス１に対してストリーム分割処理を行うとともに、生成したＮ個の分割ストリームを第２分割ストリームバッファ１５２に対して出力する。
【０１７８】
タイミングｔ１では、第２ストリーム分割部１３０によるスライス１に対するストリーム分割処理が終了するため、第２ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了を通知するとともに、第２分割ストリームバッファ１５２に出力した分割ストリームの情報を通知する。具体的には、第２ストリーム分割部１３０は、実際に分割ストリームバッファ１５２に出力したＰＰＳ１およびスライス１のそれぞれを構成するＮＡＬユニットの個数を通知する。ＮＡＬユニットは、Ｈ．２６４／ＡＶＣ方式のストリームを構成する構成単位であり、ＳＰＳ、ＰＰＳ、およびスライスなどはそれぞれ、このＮＡＬユニットに含まれる。
【０１７９】
なお、スライスの大きさは可変であるため、スライスに含まれるＭＢライン数が分割ストリーム数であるＮに満たないこともあり得る。そのため、ストリーム分割部１３０で処理されたスライスに対応するＮＡＬユニットの個数は、生成するＮ個の分割ストリームごとに異なり、その値は０または１となる。従って、ストリーム分割部１３０は、ストリーム分割制御部１４０に対して、Ｎ個の分割ストリームごとに出力したＮＡＬユニットの個数を通知する。
【０１８０】
なお、図６Ｂで示す動作例では、説明を簡単にするため、各スライスが含むＭＢライン数はＮよりも十分大きいものとし、１スライスに対応するＮＡＬユニットの個数は、分割ストリームによらず１であるものして説明する。ここでは、第２ストリーム分割部１３０は、ＰＰＳ１とスライス１で合計２個のＮＡＬユニットを処理したことをストリーム分割制御部１４０に対して通知する。同時に第２ストリーム分割部１３０は、スライス１に対するストリーム分割処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝２とする。第２ストリーム分割部１３０から処理完了の通知を受けたストリーム分割制御部１４０は、第２ストリーム分割部１３０に対してスライス２の復号化を通知する。
【０１８１】
第２ストリーム分割部１３０は、ストリーム分割制御部１４０からスライス２の復号化を通知されると、復号化を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、両者は２で一致しているため、第２ストリーム分割部１３０は最初に入力されるスライスに対してストリーム分割処理を行う。
【０１８２】
具体的には、第２ストリーム分割部１３０は、スライス２に対してストリーム分割処理を行うとともに、復号化を通知されたスライスのスライス番号とＳＮ２の値とが一致しているため、生成したＮ個の分割ストリームを第２分割ストリームバッファ１５２に対して出力する。
【０１８３】
タイミングｔ２では、第１ストリーム分割部１３０によるスライス０に対するストリーム分割処理が終了するため、第１ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了を通知するとともに、第１分割ストリームバッファ１５２に出力した分割ストリームの情報として、ＳＰＳ、ＰＰＳ０およびスライス０のそれぞれを構成するＮＡＬユニットの個数「３」を通知する。同時に、第１ストリーム分割部１３０は、スライス０に対するストリーム分割処理が終了したことで、ＳＮ１をインクリメントしてＳＮ１＝１とする。第１ストリーム分割部１３０から処理完了の通知を受けたストリーム分割制御部１４０は、振り分け制御情報により、第１ストリーム分割部１３０に対してスライス３の復号化を通知する。
【０１８４】
第１ストリーム分割部１３０は、ストリーム分割制御部１４０からスライス３の復号化を通知されると、復号化を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ１の値とを比較する。このタイミングでは、通知されたスライスのスライス番号は３を示し、ＳＮ２は１を示しており、その差分は２である。そこで、第１ストリーム分割部１３０は、入力される２スライス分の処理をスキップし、３番目に入力されるスライスに対してストリーム分割処理を行うように動作する。
【０１８５】
具体的には、第１ストリーム分割部１３０は、まずＰＰＳ１を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するが、復号化を通知されたスライスのスライス番号とＳＮ１の値とが一致していないため、第１分割ストリームバッファ１５２に対するＰＰＳ１の出力を行わない。次に、第１ストリーム分割部１３０は、入力されるスライス１の処理をスキップする。したがって、第１ストリーム分割部１３０は、第１分割ストリームバッファ１５２に対して、スライス１のストリーム分割処理の結果を出力しない。ここで、第１ストリーム分割部１３０は、スライス１の処理をスキップしたことで、ＳＮ１をインクリメントしてＳＮ１＝２とする。次に、第１ストリーム分割部１３０にはスライス２が入力されるが、復号化を通知されたスライスのスライス番号とＳＮ１の値とがまだ一致していないため、入力されるスライス２の処理もスキップされる。したがって、第１ストリーム分割部１３０は、第１分割ストリームバッファ１５２に対して、スライス２のストリーム分割処理の結果を出力しない。ここで、第１ストリーム分割部１３０は、スライス２の処理をスキップしたことで、ＳＮ１をインクリメントしてＳＮ１＝３とする。
【０１８６】
次に、第１ストリーム分割部１３０は、ＰＰＳ２を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するとともに、復号化を通知されたスライスのスライス番号とＳＮ１の値とが一致しているため、入力されたＰＰＳ２を第１分割ストリームバッファ１５２に対してそのまま出力する。次に、第１ストリーム分割部１３０は、スライス３に対してストリーム分割処理を行うとともに、生成したＮ個の分割ストリームを第１分割ストリームバッファ１５２に対して出力する。
【０１８７】
タイミングｔ３では、第２ストリーム分割部１３０によるスライス２に対するストリーム分割処理が終了するため、第２ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了を通知するとともに、第２分割ストリームバッファ１５２に出力した分割ストリームの情報として、スライス２を構成するＮＡＬユニットの個数「１」を通知する。同時に、第２ストリーム分割部１３０は、スライス２に対するストリーム分割処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝３とする。第２ストリーム分割部１３０から処理完了の通知を受けたストリーム分割制御部１４０は、振り分け制御情報により、第２ストリーム分割部１３０に対してスライス４の復号化を通知する。
【０１８８】
第２ストリーム分割部１３０は、ストリーム分割制御部１４０からスライス４の復号化を通知されると、復号化を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、復号化を通知されたスライスのスライス番号は４を示し、ＳＮ２は３を示しており、その差分は１である。そこで、第２ストリーム分割部１３０は入力される１スライス分の処理をスキップし、２番目に入力されるスライスに対してストリーム分割処理を行う。
【０１８９】
具体的には、第２ストリーム分割部１３０は、まずＰＰＳ２を復号化して解析し、ストリーム分割処理に必要な各種パラメータを抽出するが、復号化を通知されたスライスのスライス番号とＳＮ２の値とが一致していないため、第２分割ストリームバッファ１５２に対するＰＰＳ２の出力は行わない。次に、第２ストリーム分割部１３０は、入力されるスライス３の処理をスキップする。したがって、第２ストリーム分割部１３０は、第２分割ストリームバッファ１５２に対して、スライス３のストリーム分割処理の結果を出力しない。ここで、第２ストリーム分割部１３０は、スライス３の処理をスキップしたことで、ＳＮ２をインクリメントしてＳＮ２＝４とする。
【０１９０】
次に、第２ストリーム分割部１３０は、復号化を通知されたスライスのスライス番号とＳＮ２の値とが一致しているため、スライス４に対してストリーム分割処理を行うとともに、生成したＮ個の分割ストリームを第２分割ストリームバッファ１５２に対して出力する。
【０１９１】
タイミングｔ４では、第１ストリーム分割部１３０によるスライス３に対するストリーム分割処理が終了するため、第１ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了を通知するとともに、第１分割ストリームバッファ１５２に出力した分割ストリームの情報として、ＰＰＳ２およびスライス３のそれぞれを構成するＮＡＬユニットの個数「２」を通知する。同時に、第１ストリーム分割部１３０は、スライス３に対するストリーム分割処理が終了したことで、ＳＮ１をインクリメントしてＳＮ１＝４とする。
【０１９２】
同様に、タイミングｔ５では、第２ストリーム分割部１３０によるスライス４に対するストリーム分割処理が終了するため、第２ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了を通知するとともに、第２分割ストリームバッファ１５２に出力した分割ストリームの情報として、スライス４を構成するＮＡＬユニットの個数「１」を通知する。同時に、第２ストリーム分割部１３０は、スライス４に対するストリーム分割処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝５とする。
【０１９３】
以上説明したように、ストリーム分割制御部１４０は、処理を完了したストリーム分割部１３０に対して順次スライスの復号化処理（ストリーム分割処理）を振り分けていく。これにより、各ストリーム分割部１３０の処理量が均等になる。
【０１９４】
図７は、図６Ｂで示したスライスの振り分け、およびストリーム分割処理を行った場合における分割ストリームバッファ１５２の状態を示す図である。なお、図７に示すスライス０〜４はそれぞれスライスの一部分のデータを示す。
【０１９５】
第１分割ストリームバッファ１５２には、スライス０およびスライス３に対応するＮ（Ｎ＝４）個の分割ストリームが格納される。また、第２分割ストリームバッファ１５２には、スライス１、スライス２およびスライス４に対応するＮ（Ｎ＝４）個の分割ストリームが格納される。このように、２つの分割ストリームバッファ１５２には各ストリーム分割部１３０における処理量に応じてスライスが分散して格納されるため、各スライスの格納順序は一定とはならない。
【０１９６】
そのためストリーム分割制御部１４０は、Ｎ個のデコードエンジン１２０がそれぞれ、分割前の符号化ストリームと同じスライス順で分割ストリームを取得できるよう、Ｍ個の分割ストリームバッファ１５２のうち、どの分割ストリームバッファから分割ストリームを取得すればよいかを示す選択情報を、Ｎ個のデコードエンジン１２０に通知する。
【０１９７】
図８は、図６Ｂで示したスライスの振り分け、およびストリーム分割処理を行った場合における選択情報の形式の一例を示す図である。
【０１９８】
図８に示すように、選択情報は、１スライスにつき、分割ストリームバッファ情報と、ＮＡＬユニット数情報とを含んでおり、ストリーム分割制御部１４０によるスライスの振り分け処理を行う毎に生成される。分割ストリームバッファ情報は、ストリーム分割制御部１４０が、第１ストリーム分割部１３０と第２ストリーム分割部１３０のどちらにスライスを振り分けたかを示す。つまり、分割ストリームバッファ情報は、ストリーム分割部１３０がスライスに対してストリーム分割処理を行った結果、そのスライスに対してストリーム分割部１３０から出力された分割ストリームが格納されている分割ストリームバッファを示す。また、ＮＡＬユニット数情報は、ストリーム分割部１３０において、対象となるスライスの処理を行った際に出力されたＮＡＬユニット個数を示しており、ストリーム分割部１３０の処理完了時に、ストリーム分割部１３０からストリーム分割制御部１４０に対して通知される。
【０１９９】
なお、前述のように、ＮＡＬユニット数情報はＮ個の分割ストリームごとに異なる可能性がある。したがって、Ｎ個のデコードエンジン１２０のそれぞれに対して、Ｎ個の分割ストリームに対応する別々の内容の選択情報が通知される。すなわち、第１デコードエンジンには、第１分割ストリームに対応する選択情報が通知され、第２デコードエンジンには、第２分割ストリームに対応する選択情報が通知され、第３デコードエンジンには、第３分割ストリームに対応する選択情報が通知され、第４デコードエンジンには、第４分割ストリームに対応する選択情報が通知される。ここでは前述のように、各スライスに含まれるＭＢライン数はＮよりも十分大きく、１スライスに対応するＮＡＬユニットの個数は分割ストリームによらず１であるとしているため、Ｎ個のデコードエンジン１２０に対して通知される選択情報は同じであるものとして説明する。
【０２００】
ストリーム分割制御部１４０によって生成された選択情報は、Ｎ個のデコードエンジン１２０に対して通知され、例えばデコードエンジン１２０内のＦＩＦＯ（先入れ先出し）メモリに格納される。ＦＩＦＯに格納された選択情報は、通知された順番にデコードエンジン１２０によって読み出され、分割ストリームバッファ１５２からのストリーム取得処理に利用される。
【０２０１】
具体的には、まずデコードエンジン１２０は、スライス０の選択情報として、分割ストリームバッファ情報＝１およびＮＡＬユニット数情報＝３を読み出す。デコードエンジン１２０はスライス０の選択情報に従い、第１分割ストリームバッファ１５２から、３個のＮＡＬユニット（ＳＰＳ、ＰＰＳ０、スライス０）を取得する。次に、デコードエンジン１２０は、スライス１の選択情報として、分割ストリームバッファ情報＝２およびＮＡＬユニット数情報＝２を読み出す。デコードエンジン１２０はスライス１の選択情報に従い、第２分割ストリームバッファ１５２から、２個のＮＡＬユニット（ＰＰＳ１、スライス１）を取得する。次に、デコードエンジン１２０は、スライス２の選択情報として、分割ストリームバッファ情報＝２およびＮＡＬユニット数情報＝１を読み出す。デコードエンジン１２０はスライス２の選択情報に従い、第２分割ストリームバッファ１５２から、１個のＮＡＬユニット（スライス２）を取得する。次に、デコードエンジン１２０は、スライス３の選択情報として、分割ストリームバッファ情報＝１およびＮＡＬユニット数情報＝２を読み出す。デコードエンジン１２０はスライス３の選択情報に従い、第１分割ストリームバッファ１５２から、２個のＮＡＬユニット（ＰＰＳ２、スライス３）を取得する。次に、デコードエンジン１２０は、スライス４の選択情報として、分割ストリームバッファ情報＝２およびＮＡＬユニット数情報＝１を読み出す。デコードエンジン１２０はスライス４の選択情報に従い、第２分割ストリームバッファ１５２から、１個のＮＡＬユニット（スライス４）を取得する。
【０２０２】
このように、デコードエンジン１２０は、ストリーム分割制御部１４０から通知される選択情報を用いることで、デコーダ１１０に入力された符号化ストリームと同じスライス順序で、Ｍ個の分割ストリームバッファ１５２から分割ストリーム（分割ストリームのスライス）を取得することが出来る。
【０２０３】
なお、図６Ａ〜図８を用いて説明したスライスの振り分け処理は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、ここで説明した処理動作に限定されない。
【０２０４】
例えば、図６Ｂでは、ストリーム分割制御部１４０が、ストリーム分割部１３０に対してスライスの復号化を通知する際にスライス番号を指定したが、スライス番号ではなく、処理をスキップするスライス数を指定してもよい。この場合、ストリーム分割制御部１４０は、Ｍ個のストリーム分割部１３０のそれぞれに対して振り分けたスライス数を記憶しておき、それをもとに処理をスキップするスライス数を計算する。また、図６Ｂでは、ストリーム分割部１３０によるスライスのストリーム分割処理が終了した際、ストリーム分割部１３０は、ストリーム分割制御部１４０に対して処理の完了および分割ストリームバッファ１５２に出力したＮＡＬユニットの個数を通知したが、分割ストリームバッファ１５２に出力したＮＡＬユニットの個数の代わりに、分割ストリームバッファ１５２に出力した分割ストリームのビット数を通知してもよい。つまり、デコードエンジン１２０が分割ストリームバッファ１５２から取得すべき分割ストリームのサイズが判定可能な情報を通知できればよい。
【０２０５】
また、例えば、図８では、分割ストリームバッファ情報は、分割ストリームバッファ１５２の番号を直接指定するものとしたが、その番号と異なる情報であってもよい。つまり、Ｍ＝２の場合には、分割ストリームバッファ情報は、処理対象のスライスに対応する分割ストリームが格納されている分割ストリームバッファ１５２が、直前のスライスに対応する分割ストリームが格納されていた分割ストリームバッファ１５２と同じであるかどうかを示す情報であってもよい。すなわち分割ストリームバッファ情報は、複数の分割ストリームバッファ１５２から適切に分割ストリームを取得できる情報であればよい。また、例えば図８では、選択情報はＮＡＬユニット数情報を含むものとしたが、前述したように、ＮＡＬユニット数情報の代わりに分割ストリームのビット数を示す情報を含むものとしてもよい。
【０２０６】
図９は、本実施の形態における画像復号化装置１００の全体的な動きを示すフローチャートである。
【０２０７】
まず、画像復号化装置１００は、符号化ストリームを取得し（ステップＳ１０）、その符号化ストリームから処理対象となる符号化されたピクチャを特定するとともに、ストリーム分割を並列処理するため、処理量が均等になるようにスライスを振り分ける（ステップＳ１２）。さらに、画像復号化装置１００は、処理対象のピクチャを分割することにより１つのＭＢラインを抽出する（ステップＳ１４）。なお、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがあれば、そのＭＢラインはそのスライスヘッダと共に抽出される。
【０２０８】
次に、画像復号化装置１００は、ステップＳ１４の分割によって抽出された１つのＭＢラインを、生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる前に、スライス再構成処理をする必要があるか否か（そのＭＢラインの直前にスライスヘッダを挿入する必要があるか否か、既に割り当てられているＭＢラインの直後にスライス終端情報を設定する必要があるか否か、ＭＢスキップラン情報を修正する必要があるか否か、および、ＱＰ変化量を設定する必要があるか否か）を判別する（ステップＳ１６）。
【０２０９】
画像復号化装置１００は、ステップＳ１６で、スライス再構成処理をする必要があると判別したときには（ステップＳ１６のＹｅｓ）、スライス再構成処理を実行する（ステップＳ１８）。つまり、画像復号化装置１００は、上述のスライスヘッダの挿入処理、スライス終端処理、スキップラン修正処理およびＱＰデルタ設定処理の少なくとも１つを実行する。また、画像復号化装置１００は、スライスヘッダの挿入処理を実行するときには、ＭＢアドレス情報の更新処理も実行する。なお、ステップＳ１４〜ステップＳ２０のストリーム分割処理は、スライス単位で並列に行われる。
【０２１０】
そして、画像復号化装置１００は、そのＭＢラインを生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる（ステップＳ２０）。このステップＳ２０が繰り返し行われることによって、第１〜第Ｎ分割ストリームのそれぞれにＭＢラインが順次割り当てられ、第１〜第Ｎ分割ストリームが生成される。
【０２１１】
画像復号化装置１００は、第１〜第Ｎ分割ストリームのそれぞれに割り当てられたＭＢラインを並列に復号化する（ステップＳ２２）。なお、第１〜第Ｎ分割ストリームのうちの何れかの分割ストリームにＭＢラインが割り当てられていない場合には、画像復号化装置１００は、そのＭＢラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
【０２１２】
次に、画像復号化装置１００は、ピクチャに含まれる全てのＭＢラインを割り当てたか否かを判別し（ステップＳ２４）、割り当てていないと判別したときには（ステップＳ２４のＮｏ）、ステップＳ１４からの処理を繰り返し実行する。一方、画像復号化装置１００は、全てのＭＢラインを割り当てたと判別したときには（ステップＳ２４のＹｅｓ）、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する（ステップＳ２６）。ここで、画像復号化装置１００は、全てのピクチャを分割していないと判別したときには（ステップＳ２６のＮｏ）、ステップＳ１２からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには（ステップＳ２６のＹｅｓ）、復号化処理を終了する。
【０２１３】
なお、図９のフローチャートに示される処理動作は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
【０２１４】
例えば、図９のフローチャートでは、画像復号化装置１００のストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン１２０に複製スライスヘッダを直接渡してもよい。また、図９のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、ＭＢアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン１２０が、分割ストリームに含まれている複製スライスヘッダのＭＢアドレス情報を更新する。また、図９のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップＳ２０でＭＢラインが第１〜第Ｎ分割ストリームの何れかに割り当てられた後であって、次の新たなＭＢラインがストリーム分割部１３０からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているＭＢラインに対してスライス終端処理が行われてもよい。
【０２１５】
ここで、ストリーム分割部１３０の構成および動作について詳細に説明する。
【０２１６】
図１０は、ストリーム分割部１３０の構成を示すブロック図である。
【０２１７】
ストリーム分割部１３０は、処理管理部１３０ｍ、セレクタＳｃｔ、スタートコード検出部１３１、ＥＰＢ除去部１３２ａ、ＥＰＢ挿入部１３２ｂ、スライスヘッダ挿入部１３３、およびスライスデータ処理部１３４ａ、１３４ｂを備えている。
【０２１８】
処理管理部１３０ｍは、モード情報および振り分け制御情報を取得し、それらの情報にしたがって、ストリーム分割部１３０に備えられている他の構成要素を制御する。つまり、図６Ａ〜図８に示すようなストリーム分割処理が行われるように、処理管理部１３０ｍは、例えば、これから処理するスライスの番号（ＳＮ１またはＳＮ２など）を保持し、その番号に基づいてセレクタＳｃｔを制御する。その結果、処理管理部１３０ｍは、ＳＰＳ、ＰＰＳ、または、処理対処のスライスから生成された分割ストリームを出力させたり、その出力を停止させたりする。
【０２１９】
スタートコード検出部１３１は、ストリームバッファ１５１から符号化ストリームを読み出して、ＮＡＬユニットごとにスタートコードを検出する。
【０２２０】
ＥＰＢ除去部１３２ａは、ＥＰＢ（エミュレーション防止バイト）を符号化ストリームから除去し、ＥＰＢが除去された符号化ストリームをスライスデータ処理部１３４ａ、１３４ｂに出力する。さらに、ＥＰＢ除去部１３２ａは、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）およびＰＰＳ（ピクチャパラメータセット）などのスライスより上層の情報を取得し、その情報が４つの分割ストリームのそれぞれに挿入されるように、その情報をＥＰＢ挿入部１３２ｂに出力する。
【０２２１】
ＥＰＢ挿入部１３２ｂは、符号化ストリームが分割されることによって生成される分割ストリームに、ＥＰＢ除去部１３２ａによって除去されたＥＰＢを挿入する。
【０２２２】
スライスヘッダ挿入部１３３は、上述のスライスヘッダの挿入処理およびＭＢアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部１３３は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４ａ、１３４ｂに送り、スライスデータ処理部１３４ａ、１３４ｂから終端処理完了通知Ｍ２を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部１３３は、スライスヘッダの挿入処理によって、ＭＢラインの直前にあるスライスヘッダと、ＭＢアドレス情報が更新された複製スライスヘッダとをＥＰＢ挿入部１３２ｂに出力する。
【０２２３】
スライスデータ処理部１３４ａ、１３４ｂは、ＥＰＢが除去された符号化ストリームを分割することにより４つの分割ストリームを生成し、その４つの分割ストリームを出力する。なお、スライスデータ処理部１３４ａ、１３４ｂから出力される分割ストリームには、上述のＭＢラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部１３４ａは、ＣＡＶＬＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。また、スライスデータ処理部１３４ｂは、ＣＡＢＡＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。
【０２２４】
スライスデータ処理部１３４ａは、スライスデータ層デコード部１３５ａ、マクロブロック層デコード部１３６ａ、スキップラン修正部１３７ａ、ＱＰデルタ修正部１３８ａおよび分割点検出部１３９ａを備えている。
【０２２５】
スライスデータ層デコード部１３５ａは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部１３６ａは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報（具体的には、ＣＡＶＬＣのｎＣ（ｎｏｎ−ｚｅｒｏ  ｃｏｅｆｆｉｃｉｅｎｔ）など）のみを復号化してもよい。
【０２２６】
スキップラン修正部１３７ａは、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。すなわち、スキップラン修正部１３７ａは、ＭＢスキップラン情報が、符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すときには、その連続するブロックの個数を分割し、スライス部分ごとのブロックの個数を示すように修正したＭＢスキップラン情報を、少なくとも２つの連続するスライス部分がそれぞれ割り当てられる分割ストリームに設定する。さらに、スキップラン修正部１３７ａは、各分割ストリームにおいて、設定される複数のＭＢスキップラン情報に対応する複数のブロックが当該分割ストリーム内で連続するときには、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換する。
【０２２７】
ここで、ＭＢスキップラン情報は、符号化ピクチャに含まれるスライス内で特定の種類のブロックが連続する場合に連続する当該ブロックの個数を示す第１の符号語の一例である。具体的には、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０２２８】
例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、ＭＢスキップラン情報による、ＭＢライン間の依存関係が崩れてしまう。
【０２２９】
そこで、スキップラン修正部１３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン修正部１３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０２３０】
ＱＰデルタ修正部１３８ａは、マクロブロックごとに、マクロブロック層デコード部１３６ａによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。すなわち、ＱＰデルタ修正部１３８ａは、ＱＰ変化量が、２つのＭＢラインに跨るブロック間の変化量を示す場合には、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する。そしてＱＰデルタ修正部１３８ａは、計算した変化量にＱＰ変化量を修正する。
【０２３１】
なお、ＱＰ変化量は、符号化ピクチャに含まれるスライス内で連続するブロック間における符号化係数の変化量を示す第２の符号語の一例である。具体的には、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの直前に位置するマクロブロックのＱＰ値との差分値を示す。
【０２３２】
つまり、ピクチャがＭＢラインごとに分割され、ＭＢラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、ＭＢラインの境界を挟んで互いに連続していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに連続していた一方のマクロブロック（対象マクロブロック）を含む分割ストリームを復号化の対象とするデコードエンジン１２０は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。つまり、ＱＰ変化量による、ＭＢライン間の依存関係が崩れてしまう。
【０２３３】
そこで、ＱＰデルタ修正部１３８ａは、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量を、分割ストリームにおける新たなマクロブロックの前後関係に基づいて再計算する。
【０２３４】
分割点検出部１３９ａは、符号化ストリームを４つの分割ストリームに分割する。つまり、分割点検出部１３９ａは、ピクチャまたはスライスを複数のＭＢラインに分割し、ＭＢラインのそれぞれを４つの分割ストリームの何れかに割り当てる。なお、分割点検出部１３９ａは、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、ＭＢラインだけを分割ストリームに割り当てる。また、分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部１３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ修正部１３８ａから取得したＱＰ変化量とを含める。
【０２３５】
さらに、分割点検出部１３９ａは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ａは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０２３６】
スライスデータ処理部１３４ｂは、スライスデータ層デコード部１３５ｂ、マクロブロック層デコード部１３６ｂ、ＱＰデルタ修正部１３８ｂおよび分割点検出部１３９ｂを備えている。
【０２３７】
スライスデータ層デコード部１３５ｂは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化（算術復号化）する。マクロブロック層デコード部１３６ｂは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化（算術復号化）する。このような、スライスデータ層デコード部１３５ｂおよびマクロブロック層デコード部１３６ｂによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
【０２３８】
ＱＰデルタ修正部１３８ｂは、上述のＱＰデルタ修正部１３８ａと同様、マクロブロックごとに、マクロブロック層デコード部１３６ｂによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。
【０２３９】
分割点検出部１３９ｂは、分割点検出部１３９ａと同様、符号化ストリームを４つの分割ストリームに分割する。このとき、分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ修正部１３８ｂから取得したＱＰ変化量を含める。さらに、分割点検出部１３９ｂは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からのスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ｂは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０２４０】
ここで、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４ａ、１３４ｂについて詳細に説明する。なお、スライスデータ処理部１３４ａ、１３４ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部１３４と総称する。
【０２４１】
まず、スライスヘッダ挿入部１３３がスライスヘッダを挿入するタイミング、およびスライスデータ処理部１３４がスライス終端情報を挿入するタイミングについて説明する。
【０２４２】
図１１は、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４の動作を説明するための説明図である。なお、ここでは、ピクチャに含まれるスライスＡおよびスライスＢがストリーム分割処理対象のスライスとしてストリーム分割部１３０に振り分けられている。
【０２４３】
スライスデータ処理部１３４は、スライスＡおよびスライスＢを含むピクチャをＭＢラインごとに分割し、ＥＰＢ挿入部１３２ｂを介して、先頭側のＭＢラインから各ＭＢラインを順次、分割ストリームバッファ１５２に含まれる４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）に格納する。このとき、スライスデータ処理部１３４は、１ＭＢラインの格納ごとに、ＭＢラインの格納先を第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４、第１領域ｄｆ１の順に繰り返し変更する。
【０２４４】
例えば、スライスデータ処理部１３４は、図１１の（ａ）に示すように、スライスＡのＭＢラインＬａ１を、分割ストリームバッファ１５２の第１領域ｄｆ１に格納し、スライスＡの次のＭＢラインＬａ２を、分割ストリームバッファ１５２の第２領域ｄｆ２に格納し、スライスＡの次のＭＢラインＬａ３を、分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。さらに、スライスデータ処理部１３４は、スライスＡの次のスライスＢのＭＢラインＬｂ１を、分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。
【０２４５】
その結果、分割ストリームバッファ１５２の４つの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれにＭＢラインが格納され、分割ストリームバッファ１５２は、スライスＢの次のＭＢラインが再び第１領域ｄｆ１に格納される直前の状態になる。
【０２４６】
なお、スライスデータ処理部１３４は、ＭＢラインＬａ３を第３領域ｄｆ３に格納するときには、符号化ストリームにおいてＭＢラインＬａ３の直後にスライス終端情報ｅａがあっても、そのスライス終端情報ｅａを格納することなく、ＭＢラインＬａ３だけを第３領域ｄｆ３に格納する。そして、スライスデータ処理部１３４は、その後に、第３領域ｄｆ３に新たなスライスに属するＭＢラインを格納するときになって、そのスライス終端情報ｅａに対応するスライス終端情報ｅａ’を第３領域ｄｆ３に格納する。また、スライスデータ処理部１３４がＭＢラインＬｂ１を第４領域ｄｆ４に格納するときには、事前に、スライスヘッダ挿入部１３３によってスライスＢのスライスヘッダｈｂが第４領域ｄｆ４に格納されている。また、ピクチャには、スライスＡのＭＢラインＬａ１よりも前に、そのスライスＡの他のＭＢラインが存在している。したがって、第１領域ｄｆ１、第２領域ｄｆ２および第３領域ｄｆ３のＭＢラインＬａ１、Ｌａ２、Ｌａ３の直前には、スライスＡの複製スライスヘッダが挿入されていない。
【０２４７】
また、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、マクロブロックを出力するごとに、１ＭＢラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部１３９ａ、１３９ｂは、全てのマクロブロックが出力されたと判別すると、ＭＢラインの境界（ＭＢラインの終端）を検出する。そして、分割点検出部１３９ａ、１３９ｂは、ＭＢラインの境界を検出するごとに、マクロブロックの出力処理を中断し、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知する。
【０２４８】
したがって、ＭＢラインの最後のマクロブロックが分割ストリームバッファ１５２に格納されて、分割ストリームバッファ１５２が上述のような図１１の（ａ）に示す状態になったときにも、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂから、ＭＢラインの境界が検出されたことの通知を受ける。
【０２４９】
ＭＢラインの境界検出の通知を受けたスライスヘッダ挿入部１３３は、図１１の（ｂ）に示すように、スライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に送る。このスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインが格納される直前に、スライスヘッダを分割ストリームバッファ１５２に出力して格納する予定があるか否かをそのスライスデータ処理部１３４に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４に対してスライス終端処理を促す通知である。
【０２５０】
例えば、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインＬｂ２が格納される直前に、複製スライスヘッダｈｂ’を分割ストリームバッファ１５２に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部１３３は、「出力」を示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に出力する。
【０２５１】
スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１を取得すると、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ１５２に格納した後に、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。一方、スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ１５２に格納することなく、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０２５２】
例えば、スライスデータ処理部１３４は、「出力」を示すスライスヘッダ処理内容通知Ｍ１を取得すると、図１１の（ｃ）に示すように、スライス終端情報ｅａ’を生成し、分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その格納が完了すると、スライスデータ処理部１３４は、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０２５３】
スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ＥＰＢ挿入部１３２ｂを介して、スライスヘッダを分割ストリームバッファ１５２に出力して格納し、その後、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。一方、直前に出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、スライスヘッダ挿入部１３３は、スライスヘッダを分割ストリームバッファ１５２に格納することなく、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０２５４】
例えば、スライスヘッダ挿入部１３３は、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合に、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、図１１の（ｄ）に示すように、複製スライスヘッダｈｂ’を生成して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その後、スライスヘッダ挿入部１３３は、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０２５５】
スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けると、中断していたマクロブロックの出力処理を再開し、次のＭＢラインを出力して分割ストリームバッファ１５２に格納する。
【０２５６】
例えば、スライスデータ処理部１３４は、図１１の（ｄ）に示すように、次のＭＢラインＬｂ２を出力して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０２５７】
このようなスライスヘッダ挿入部１３３およびスライスデータ処理部１３４による処理によって、分割ストリームバッファ１５２の各領域において、スライス終端情報、スライスヘッダ、次のＭＢラインの順に、これらのデータを適切なＭＢラインの境界に書き込むことができる。
【０２５８】
図１２は、スライスヘッダ挿入部１３３の構成を示すブロック図である。
【０２５９】
なお、図１２を用いて、分割点検出部１３９ａ、１３９ｂについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部１３９と総称する。
【０２６０】
スライスヘッダ挿入部１３３は、ＮＡＬタイプ判定部１３３ａ、ヘッダ挿入カウンタ１３３ｂ、ヘッダアドレス更新部１３３ｃおよびヘッダバッファ１３３ｄを備えている。
【０２６１】
ＮＡＬタイプ判定部１３３ａは、符号化ストリームのＮＡＬユニットを取得するごとに、そのＮＡＬユニットのタイプがスライスであるか否かを判別する。そして、ＮＡＬタイプ判定部１３３ａは、スライスであると判別したときには、そのＮＡＬユニットのタイプがスライスであることをヘッダバッファ１３３ｄおよびヘッダ挿入カウンタ１３３ｂに通知する。
【０２６２】
ヘッダバッファ１３３ｄは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、そのＮＡＬユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ１３３ｄは、後のＮＡＬユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ１３３ｄは、常に最新のスライスヘッダを保持している。
【０２６３】
ヘッダ挿入カウンタ１３３ｂは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のＭＢラインの境界（終端）が分割点検出部１３９で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ１３３ｂは、０〜４（デコードエンジン１２０の総数）までの値をカウントする。ヘッダ挿入カウンタ１３３ｂは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。さらに、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界（ＭＢラインの終端）が検出されたときには、カウント値を１だけカウントアップする。そして、ヘッダ挿入カウンタ１３３ｂは、カウント値が４に達した後に、さらにＭＢラインの境界が検出されたときには、カウントアップすることなく、カウント値を４に維持しておく。
【０２６４】
このように、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、カウント値を更新あるいは保持し、ＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。
【０２６５】
また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、その検出によって更新されたカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力する。具体的には、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出された直後のカウント値が０〜３のときには、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力し、そのカウント値が４のときには、「非出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときに限らず、カウント値が０になったときにも、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。
【０２６６】
さらに、ヘッダ挿入カウンタ１３３ｂは、スライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力した後に、その分割点検出部１３９から終端処理完了通知Ｍ２を受け取ると、その出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させる。その後、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。なお、ヘッダバッファ１３３ｄからスライスヘッダが出力されるときには、スライスヘッダ挿入部１３３は、そのスライスヘッダに含まれているＭＢアドレス情報により示される値に応じて、分割ストリームバッファ１５２の格納先となる領域を選択する。そして、スライスヘッダ挿入部１３３は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ１３３ｂは、その出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。
【０２６７】
ヘッダアドレス更新部１３３ｃは、ＭＢラインの境界が検出された直後のカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、ヘッダバッファ１３３ｄに格納されているスライスヘッダのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を更新する。
【０２６８】
例えば、ヘッダアドレス更新部１３３ｃは、カウント値ｎ＝０のときには、ＭＢアドレス情報を更新せず、カウント値ｎ≠０のときには、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）に更新する。なお、ピクチャがＭＢＡＦＦで構成されている場合には、ヘッダアドレス更新部１３３ｃは、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により更新する。
【０２６９】
図１３は、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【０２７０】
例えば、ストリーム分割部１３０は、ストリームバッファ１５１に格納されている符号化ストリームのスライスＡ〜Ｃを、スライスＡ、スライスＢ、スライスＣの順に読み出す。
【０２７１】
この場合、まず、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、スライスＡの先頭からスライスヘッダｈａを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、カウント値が０であるため、記憶しているスライスヘッダｈａを出力することにより、そのスライスヘッダｈａを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０２７２】
スライスヘッダｈａがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＡのスライスヘッダｈａに続く第１ＭＢラインを出力することにより、その第１ＭＢラインを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その結果、第１領域ｄｆ１には、スライスヘッダｈａ、スライスＡに属する第１ＭＢラインの順に、それらのデータが格納される。
【０２７３】
第１ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第１ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈａを複製スライスヘッダｈａ’として出力することにより、その複製スライスヘッダｈａ’を分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。なお、複製スライスヘッダｈａ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０２７４】
複製スライスヘッダｈａ’がヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中で第１ＭＢラインに続く第２ＭＢラインを出力することにより、その第２ＭＢラインを分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。
【０２７５】
ここで、第２ＭＢラインは、スライスＡに属する複数のマクロブロックと、スライスＢのスライスヘッダｈｂと、スライスＢに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部１３４の分割点検出部１３９は、まず、第２ＭＢラインに含まれるスライスＡに属する全てのマクロブロックを第２領域ｄｆ２に格納する。その格納が終了すると、分割点検出部１３９は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けるまで待機する。このとき、スライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを検出するため、カウント値を０にリセットし、「出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に送る。このスライスヘッダ処理内容通知Ｍ１を受けた分割点検出部１３９は、第２領域ｄｆ２のスライスＡの終端に対してスライス終端処理を行い、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に送る。この終端処理完了通知Ｍ２を受けたスライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを第２領域ｄｆ２に格納し、スライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に送る。このスライスヘッダ処理完了通知Ｍ３を受けた分割点検出部１３９は、中断していた出力処理を再開し、第２ＭＢラインに含まれる次のスライスＢに属する複数のマクロブロックを第２領域ｄｆ２に格納する。
【０２７６】
その結果、第２領域ｄｆ２には、複製スライスヘッダｈａ’に続いて、スライスＡに属する第２ＭＢラインの一部を成す複数のマクロブロック、スライスヘッダｈｂ、スライスＢに属する第２ＭＢラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
【０２７７】
第２ＭＢラインがスライスデータ処理部１３４から出力されると、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、符号化ストリーム中でその第２ＭＢラインに続くスライスＣの先頭からスライスヘッダｈｃを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、第２ＭＢラインの終端でカウント値が０であるため、記憶しているスライスヘッダｈｃを出力することにより、そのスライスヘッダｈｃを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。
【０２７８】
スライスヘッダｈｃがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＣのスライスヘッダｈｃに続く第３ＭＢラインを出力することにより、その第３ＭＢラインを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。その結果、第３領域ｄｆ３には、スライスヘッダｈｃ、スライスＣに属する第３ＭＢラインの順に、それらのデータが格納される。
【０２７９】
第３ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第３ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈｃを複製スライスヘッダｈｃ’として出力することにより、その複製スライスヘッダｈｃ’を分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。なお、複製スライスヘッダｈｃ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０２８０】
このような処理が繰り返されることにより、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４にデータが順次格納される。その結果、それらの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに第１分割ストリーム〜第４分割ストリームが格納される。
【０２８１】
図１４Ａおよび図１４Ｂは、スライス終端情報が設定される位置を示す図である。
【０２８２】
例えば、図１４Ａに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢのスライスヘッダｈｂが出力される直前に、そのスライスＢの先頭ＭＢラインから４ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。さらに、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢの先頭ＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２８３】
このように、スライスの先頭のマクロブロックがＭＢラインの左端にある場合には、そのＭＢラインの１〜４ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２８４】
また、図１４Ｂに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端以外にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢのスライスヘッダｈｂを含むＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２８５】
このように、スライスの先頭のマクロブロックがＭＢラインの左端以外にある場合には、そのＭＢラインにおけるスライスの境界と、そのＭＢラインの１〜３ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２８６】
ここで、分割点検出部１３９の動作について詳細に説明する。
【０２８７】
図１５は、分割点検出部１３９の動作を示すフローチャートである。
【０２８８】
まず、分割点検出部１３９は、符号化ストリームの先頭側から処理対象とすべきデータ（例えばマクロブロック）を特定して出力し、分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２８９】
ここで、分割点検出部１３９は、出力されるマクロブロックのアドレス（ＭＢアドレス値）を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部１３９は、出力されるマクロブロックのＭＢアドレス値を、そのスライスのスライスヘッダに含まれるＭＢアドレス情報により示される値に更新する。そして、分割点検出部１３９は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのＭＢアドレス値をインクリメントする。なお、ＭＢアドレス値は０以上の整数である。
【０２９０】
そして、分割点検出部１３９は、ステップＳ１００でマクロブロックを出力するときには、そのマクロブロックのＭＢアドレス値に応じて、分割ストリームバッファ１５２内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ１５２に含まれる４つの領域に１番〜４番までの番号が割り振られている場合、分割点検出部１３９は、ｍ＝（（ＭＢアドレス値／Ｗ）％Ｎ＋１）番目の領域を選択し、そのｍ番目の領域にマクロブロックを格納する。
【０２９１】
なお、Ｗは、Ｗ＝“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１により示され、ピクチャの水平方向のマクロブロック数を示す。また、Ｎはデコードエンジン１２０の総数（Ｎ＝４）であり、％は（ＭＢアドレス値／Ｗ）をＮで割ったときの余りを示す。
【０２９２】
次に、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックがＭＢラインの終端（境界）であったか否か、つまりマクロブロックの出力処理がＭＢラインの終端に達したか否かを判別する（ステップＳ１０２）。具体的には、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックのＭＢアドレス値が（Ｗの倍数−１）となるか否かを判別する。ＭＢアドレス値＝（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達し、ＭＢアドレス値≠（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達していない。
【０２９３】
分割点検出部１３９は、終端に達していないと判別すると（ステップＳ１０２のＮｏ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。一方、分割点検出部１３９は、終端（ＭＢラインの境界）に達したと判別すると、つまりＭＢラインの境界を検出すると（ステップＳ１０２のＹｅｓ）、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けたか否かを判別する（ステップＳ１０４）。
【０２９４】
分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けていないと判別すると（ステップＳ１０４のＮｏ）、スライスヘッダ処理内容通知Ｍ１を受けるまで待機する。一方、分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けたと判別すると（ステップＳ１０４のＹｅｓ）、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示しているか否かを判別する（ステップＳ１０６）。
【０２９５】
ここで、分割点検出部１３９は、「出力」を示していると判別すると（ステップＳ１０６のＹｅｓ）、スライス終端処理を実行する（ステップＳ１０８）。つまり、分割点検出部１３９は、符号化ストリームがＣＡＢＡＤで復号化される場合には、スライス終端情報として“ｅｎｄ＿ｏｆ＿ｓｌｉｃｅ＿ｆｌａｇ”に「１」を設定する。また、分割点検出部１３９は、符号化ストリームがＣＡＶＬＤで復号化される場合には、スライス終端情報として“ｒｂｓｐ＿ｓｌｉｃｅ＿ｔｒａｉｌｉｎｇ＿ｂｉｔｓ”を付与する。
【０２９６】
分割点検出部１３９は、ステップＳ１０６で「出力」を示していないと判別した後（ステップＳ１０６のＮｏ）、またはステップＳ１０８でスライス終端処理を実行した後には、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る（ステップＳ１１０）。その後、分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けたか否かを判別する（ステップＳ１１２）。ここで、分割点検出部１３９は、スライスヘッダ処理完了通知Ｍ３を受けていないと判別すると（ステップＳ１１２のＮｏ）、スライスヘッダ処理完了通知Ｍ３を受けるまで待機する。一方、分割点検出部１３９は、ステップＳ１１２でスライスヘッダ処理完了通知Ｍ３を受けたと判別したとき（ステップＳ１１２のＹｅｓ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。
【０２９７】
ここで、分割点検出部１３９は、終了すべきと判別したときには（ステップＳ１１４のＹｅｓ）、処理を終了し、終了すべきでないと判別したときには（ステップＳ１１４のＮｏ）、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２９８】
次に、スキップラン修正部１３７ａの動作について詳細に説明する。
【０２９９】
スキップラン修正部１３７ａは、前述したようにＭＢスキップラン情報である“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正する。ＭＢスキップラン情報は、符号化方法にＣＡＶＬＣを用いた場合に符号化ストリームに含まれる符号語であり、連続するスキップマクロブロックの個数（以下、「長さ」ともいう。）を示している。また、以下の記載において、ＭＢスキップラン情報の長さとは、ＭＢスキップラン情報が示す、連続するスキップマクロブロックの個数を意味する。
【０３００】
図１６Ａおよび図１６Ｂは、ＭＢスキップラン情報の修正処理を説明するための説明図である。
【０３０１】
図１６Ａに示されたピクチャでは、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２〜Ｌ３に跨って連続するスキップマクロブロックの個数を示す長さ８（５＋３＝８）のＭＢスキップラン情報が符号化され、ＭＢラインＬ５〜Ｌ６に跨って連続するスキップマクロブロックの個数を示す長さ６（２＋４＝６）のＭＢスキップラン情報が符号化されている。
【０３０２】
しかし、このような場合にピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報による、その複数のＭＢライン間の依存関係が崩れてしまう。
【０３０３】
すなわち、第１分割ストリームに含まれるＭＢラインはＬ１およびＬ５であり、ＭＢラインＬ５の末尾に連続する２個のスキップマクロブロックが存在する。また、第２分割ストリームに含まれるＭＢラインはＬ２およびＬ６であり、ＭＢラインはＬ２からＬ６に跨って連続する９個のスキップマクロブロックが存在する。また、第３分割ストリームに含まれるＭＢラインはＬ３およびＬ７であり、ＭＢラインはＬ３の先頭に連続する３個のスキップマクロブロックが存在する。また、第４分割ストリームに含まれるＭＢラインはＬ４およびＬ８であり、スキップマクロブロックは存在しない。
【０３０４】
以上のように、もともと符号化ストリームに含まれていたＭＢスキップラン情報は長さ８と６であったのに対し、第１分割ストリームに対しては長さ２のＭＢスキップラン情報を、第２分割ストリームに対しては長さ９のＭＢスキップラン情報を、第３分割ストリームに対しては長さ３のＭＢスキップラン情報を出力する必要がある。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報によって、その複数のＭＢラインが互いに依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＭＢスキップラン情報を修正する必要がある。
【０３０５】
そこでスキップラン修正部１３７ａは、まずスライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報に対応するスキップマクロブロックの集合が複数のＭＢラインに跨って存在する場合、ＭＢライン境界でＭＢスキップラン情報を分割する。ここで、ＭＢライン境界でＭＢスキップラン情報を分割するとは、複数のＭＢラインに跨って連続する複数のスキップマクロブロックの個数を分割し、ＭＢラインごとのスキップマクロブロックの個数をそれぞれが示す複数のＭＢスキップラン情報を生成することを意味する。
【０３０６】
すなわち、図１６Ａに示されたピクチャの場合、スキップラン修正部１３７ａは、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部１３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。
【０３０７】
次に、スキップラン修正部１３７ａは、分割されたＭＢスキップラン情報のうち、各分割ストリームにおいて連続するスキップマクロブロックの集合に対応する複数のＭＢスキップラン情報を再結合する。ここで複数のＭＢスキップラン情報の再結合とは、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換することを意味する。
【０３０８】
図１６Ａに示されたピクチャの場合、分割されたＭＢスキップラン情報に対応するスキップマクロブロックの集合のうち、ＭＢラインＬ２に含まれる長さ５のスキップマクロブロックの集合と、ＭＢラインＬ６に含まれる長さ４のスキップマクロブロックの集合とは、第２分割ストリーム内で連続する。そのため、スキップラン修正部１３７ａは、これらの２つのスキップマクロブロックの集合にそれぞれ対応する２つのＭＢスキップラン情報を結合し、長さ９のＭＢスキップラン情報に変換する。
【０３０９】
最後にスキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０３１０】
以上説明したように、スキップラン修正部１３７ａは、入力されたＭＢスキップラン情報をＭＢライン境界で分割した後、必要に応じて再結合することで、各分割ストリームに対して適切な長さのＭＢスキップラン情報を出力することが出来る。
【０３１１】
なお、ここで、スキップラン修正部１３７ａが、各分割ストリームにおいて連続するＭＢスキップラン情報を分割されたままにせずに、必要に応じて再結合するのは、Ｈ．２６４／ＡＶＣ規格において、複数のＭＢスキップラン情報が連続して存在することが許されていないためである。つまり、Ｈ．２６４／ＡＶＣ規格において、連続するスキップマクロブロックの個数を複数のＭＢスキップラン情報を用いて表現することが許されていないので、スキップラン修正部１３７ａは、その複数のＭＢスキップラン情報を結合する。このように、スキップラン修正部１３７ａがＨ．２６４／ＡＶＣ規格に準拠した形式でＭＢスキップラン情報が修正されることにより、各分割ストリームがＨ．２６４／ＡＶＣ規格に準拠した形式で生成される。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０３１２】
また、図１６Ｂに示されたピクチャでは、ＭＢラインＬ２の末尾に５個の連続するスキップマクロブロックと、ＭＢラインＬ６の先頭に３個の連続するスキップマクロブロックとが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２に長さ５のＭＢスキップラン情報が符号化され、ＭＢラインＬ６に長さ３のＭＢスキップラン情報が符号化されている。
【０３１３】
このピクチャの場合、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在していないため、スキップラン修正部１３７ａは、ＭＢライン境界でＭＢスキップラン情報を分割する必要はない。しかしながら、このピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられた場合、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とが連続して存在することになる。
【０３１４】
したがってこの例のように、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在しない場合においても、スキップラン修正部１３７ａは、各分割ストリームにおいて１つの連続するスキップマクロブロックの個数を示す複数のＭＢスキップラン情報を再結合する処理を行う。すなわち、スキップラン修正部１３７ａは、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とを結合し、長さ８のＭＢスキップラン情報に変換する。
【０３１５】
スキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０３１６】
図１７は、スキップラン修正部１３７ａの構成を示すブロック図である。
【０３１７】
スキップラン修正部１３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、スキップラン累積・保持部１６２、加算部１６３、およびスキップラン符号化部１６４を備えている。
【０３１８】
スキップラン抽出部１６０は、スライスデータ層デコード部から出力されるストリームから、ＭＢスキップラン情報を検出および抽出する。抽出したＭＢスキップラン情報は、スキップラン分割部１６１に対して出力され、それ以外の情報は、そのまま分割点検出部１３９ａに対して出力される。
【０３１９】
スキップラン分割部１６１は、ＭＢスキップラン情報の長さとＭＢスキップラン情報が存在するマクロブロックの位置情報から、入力されたＭＢスキップラン情報が複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すかどうかを判定する。ここで、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すと判定された場合は、スキップラン分割部１６１は、ＭＢライン境界を分割点として、ＭＢスキップラン情報を分割する。分割されたＭＢスキップラン情報のうち、ＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報は加算部１６３に出力され、ＭＢライン境界を越えなかったスキップマクロブロックの個数を示すＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０３２０】
なお、ＭＢスキップラン情報は、３つ以上のＭＢラインに跨って連続するスキップマクロブロックの個数を示す場合もある。その場合、連続するスキップマクロブロックの間に２つ以上のＭＢライン境界が存在することになるため、スキップラン分割部１６１はそれぞれのＭＢライン境界を分割点として、繰り返し分割を行う。その際、分割されたＭＢスキップラン情報のうち、最後のＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報が加算部１６３に出力され、それ以外のＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０３２１】
スキップラン累積・保持部１６２は、スキップラン分割部１６１から出力される分割されたＭＢスキップラン情報を受け取り、先行ＭＢスキップラン情報として分割ストリームごとにその値を保持する。すなわち、スキップラン累積・保持部１６２は、第１分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第１分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第２分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第２分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第３分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第３分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第４分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第４分割ストリームの先行ＭＢスキップラン情報として保持する。
【０３２２】
このとき、既にスキップラン累積・保持部１６２に先行ＭＢスキップラン情報が保持されている場合、スキップラン累積・保持部１６２は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を累積し、新たなＭＢスキップラン情報として、分割ストリーム毎にその値を保持する。つまり、スキップラン累積・保持部１６２は、分割ストリームごとに、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を、保持されている先行ＭＢスキップラン情報に加算する。
【０３２３】
加算部１６３は、スキップラン分割部１６１からＭＢスキップラン情報を受け取るとともに、そのＭＢスキップラン情報が含まれる分割ストリームに対応した、スキップラン累積・保持部１６２に保持された先行ＭＢスキップラン情報を読み出す。そして、加算部１６３は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報の値と、スキップラン累積・保持部１６２にから読み出した先行ＭＢスキップラン情報の値とを加算し、その結果を修正されたＭＢスキップラン情報として、スキップラン符号化部１６４に出力する。この処理により、ＭＢスキップラン情報の再結合が行われる。
【０３２４】
スキップラン符号化部１６４は、加算部１６３から出力される修正されたＭＢスキップラン情報を再符号化して分割点検出部１３９ａに出力することで、修正されたＭＢスキップラン情報をストリームに再度埋め込む。
【０３２５】
図１８は、スキップラン修正部１３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。
【０３２６】
まずスキップラン修正部１３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別する（ステップＳ２００）。これは、ＭＢスキップラン情報がスライス境界を跨って連続するスキップマクロブロックの個数を示すことがないため、スライス終端に到達した際には、スキップラン修正部１３７ａの内部に保持された先行ＭＢスキップラン情報をすべて出力する必要があるためである。ここでスライス終端に到達していると判別すると（ステップＳ２００のＹｅｓ）、ステップＳ２２４の処理に進む。処理の詳細は後述する。
【０３２７】
一方、スライス終端に到達していないと判別すると（ステップＳ２００のＮｏ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部１３７ａは、処理の最初に戻りストリームを再度読み進める。
【０３２８】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。ここで、スキップラン修正部１３７ａは、取得したＭＢスキップラン情報によって示される連続したスキップマクロブロックのうち、先頭のスキップマクロブロックの位置を特定する。
【０３２９】
スキップラン修正部１３７ａは、ステップＳ２０４でマクロブロックの位置を算出すると、そのマクロブロックの位置情報とＭＢスキップラン情報の長さとから、連続するスキップマクロブロックがＭＢライン境界に到達するかどうかを調べることにより、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０３３０】
より具体的には、先頭のスキップマクロブロックの水平位置および垂直位置をそれぞれ“ｍｂｐｏｓｈ”、“ｍｂｐｏｓｖ”と表現し、ピクチャの水平方向の総マクロブロック数を“ＰｉｃＷｉｄｔｈＩｎＭｂｓ”と表現した場合において、“ｍｂ＿ｓｋｉｐ＿ｒｕｎ  ≧  ＰｉｃＷｉｄｔｈＩｎＭｂｓ  −  ｍｂｐｏｓｈ”が成立するときは、スキップラン修正部１３７ａは、連続するスキップマクロブロックがＭＢライン境界に到達すると判定する。
【０３３１】
なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、スキップラン修正部１３７ａは、マクロブロックの位置情報とＭＢスキップラン情報の長さから、連続するスキップマクロブロックが分割境界に到達するかどうかを判定すればよい。
【０３３２】
連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０３３３】
連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報がＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ２０８）。すなわち、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報について、先行ＭＢスキップラン情報との結合が必要かどうかを判定する。
【０３３４】
該当のＭＢスキップラン情報がＭＢラインの先頭に位置していると判定された場合（ステップＳ２０８のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に対して先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を加算することにより、ＭＢスキップラン情報の再結合を行う（ステップＳ２１０）。なお、このＭＢスキップラン情報の再結合処理は、分割ストリーム毎に独立して行われる必要がある。すなわち、先行ＭＢスキップラン情報は分割ストリーム毎にスキップラン修正部１３７ａに保持されており、該当のＭＢスキップラン情報が含まれるＭＢラインに対応した、先行ＭＢスキップラン情報が加算される。
【０３３５】
ステップＳ２０８で該当のＭＢスキップラン情報がＭＢラインの先頭に位置していないと判定された場合（ステップＳ２０８のＮｏ）、またはステップＳ２１０でＭＢスキップラン情報の結合が実行された後、スキップラン修正部１３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０３３６】
その後スキップラン修正部１３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０３３７】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。なお、連続するスキップマクロブロックがＭＢライン境界に到達しているがＭＢライン境界を跨がない場合、後半部は０であることもあり得る。
【０３３８】
さらにスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、前半部を先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”として内部に保持する。このとき、既にスキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報が存在する場合、スキップラン修正部１３７ａは、新たに発生したＭＢスキップラン情報の前半部の長さを保持された先行ＭＢスキップラン情報の長さに加算して保持する（ステップＳ２１８）。なお前述したように、先行ＭＢスキップラン情報は、それ自身が含まれるＭＢラインに対応する分割ストリームの先行ＭＢスキップラン情報として、分割ストリームごとに独立に保持される。
【０３３９】
次にスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０３４０】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０３４１】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割・再結合および出力処理を行う。このように、スキップラン修正部１３７ａがＭＢスキップラン情報の分割・再結合を繰り返し行うことにより、３ＭＢライン以上に跨ったＭＢスキップラン情報についても正しく分割・再結合処理が行われる。
【０３４２】
一方、ステップＳ２００でスライス終端であると判別された場合（ステップＳ２００のＹｅｓ）、スキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報を出力するため、先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を、そのままＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に置き換える（ステップＳ２２４）。その後はステップＳ２１２の処理に進み、スキップラン修正部１３７ａは、置き換えたＭＢスキップラン情報を再符号化した後、分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１２〜Ｓ２１４）。なお、この先行ＭＢスキップラン情報の出力は、すべての分割ストリームに対して行われる。
【０３４３】
以上説明した処理が、スキップラン修正部１３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部１３７ａでは、ＭＢスキップラン情報の分割・再結合が適切に行われる。
【０３４４】
次に、ＱＰデルタ修正部１３８ａ、１３８ｂの動作について詳細に説明する。なお、以降の説明において、ＱＰデルタ修正部１３８ａ、１３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ修正部１３８と総称する。
【０３４５】
ＱＰデルタ修正部１３８は、マクロブロックごとに原則として存在するＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正する。ＱＰ変化量とは、マクロブロックの量子化パラメータであるＱＰ値を復号するために符号化ストリームに含まれる符号語であり、対象マクロブロックと、その直前に処理したマクロブロックのＱＰ値の差分値を示している。
【０３４６】
ＱＰ値の復号は、次式（１）によって行われる。
【０３４７】
ＱＰＹ  ＝  （  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ＋  ２  ＊  ＱｐＢｄＯｆｆｓｅｔＹ  ）％  （  ５２  ＋  ＱｐＢｄＯｆｆｓｅｔＹ  ）  ）  −  ＱｐＢｄＯｆｆｓｅｔＹ        ・・・（１）
【０３４８】
ここで、ＱＰＹは処理対象マクロブロックの輝度のＱＰ値を、ＱＰＹ,ＰＲＥＶは直前のマクロブロックの輝度のＱＰ値を示している。なお、ＱｐＢｄＯｆｆｓｅｔＹはピクチャを構成する画素のビット深度によって決まる値であり、一般的に用いられる８ビット深度の場合、ＱｐＢｄＯｆｆｓｅｔＹ＝０である。その場合、上記の式（１）は次式（２）のように書き換えられる。
【０３４９】
ＱＰＹ  ＝  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（２）
【０３５０】
式（２）から分かるように、画素のビット深度が８である場合、ＱＰ値は０〜５１の範囲となるようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を用いて復号化される。なお、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取りうる値である。
【０３５１】
量子化パラメータであるＱＰ値の復号は、処理順で連続するマクロブロック間で依存関係があるが、途中でスライスの境界があった場合はそこで依存関係が解消される。すなわち、量子化パラメータであるＱＰ値は、スライスの先頭でスライスＱＰ値によって初期化される。スライスの先頭のマクロブロックには、該当マクロブロックのＱＰ値とスライスＱＰ値との差分値がＱＰ変化量として符号化される。
【０３５２】
図１９Ａおよび図１９Ｂは、ＱＰ変化量の修正処理を説明するための説明図である。
【０３５３】
図１９Ａに示されたピクチャにおけるマクロブロックＣに着目すると、本来その直前に処理が行われるマクロブロックはマクロブロックＢである。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０３５４】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０３５５】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン１２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量による、そのＭＢライン間の依存関係が崩れてしまう。
【０３５６】
そこでＱＰデルタ修正部１３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＱＰ変化量の修正を行う。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量によって、その２つのＭＢラインが依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＱＰ変化量を修正する。
【０３５７】
ＱＰ変化量の修正方法としては、全てのマクロブロックについてＱＰ値の復号化（ＱＰ値の復元）を行った上で、ストリーム分割後の新たなマクロブロックの前後関係に基づき、ＱＰ変化量を算出し直す方法が考えられる。しかしながらこの方法では、ＱＰ値復号化とＱＰ変化量算出との２つの処理が必要であり、ＱＰデルタ修正部１３８における処理量が大きくなってしまう。
【０３５８】
そこで本実施の形態では、ＱＰデルタ修正部１３８は、分割ストリーム毎に、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することで、ＱＰ値を復号化することなく、修正されたＱＰ変化量を直接導出する。
【０３５９】
ここで、ＱＰ変化量累積による修正ＱＰ変化量の導出について、図を用いて説明する。
【０３６０】
図２０は、ＱＰ変化量の累積を説明するための説明図である。
【０３６１】
図中において、横軸はＱＰ値を表しており、ＱＰ１〜ＱＰ４は連続したマクロブロックにおけるＱＰ値を示している。また図中には、各々のＱＰ値の差分値を表す“ｍｂ＿ｑｐ＿ｄｅｌｔａ”が示されている。“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の末尾に添えられている２桁の数字は、上位側が先行するマクロブロックに対応するＱＰ値の番号を示しており、下位側が後続するマクロブロックに対応するＱＰ値の番号を示している。例えば、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”は、ＱＰ１とＱＰ２との差分値を表す。また、図に示されるように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、ＱＰ値の最小値である０と、最大値である５１とが、連続してつながった軸におけるＱＰ値の差分値を表している。
【０３６２】
通常のＱＰ値の復号処理では、ＱＰ１と“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”とから、式（２）を用いてＱＰ２が求められる。また、同様にＱＰ２と“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”とからＱＰ３が求められる。また、ＱＰ３と“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”とからＱＰ４が求められる。
【０３６３】
ここで、図に示されているように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”が表すＱＰ変化量の合計は、ＱＰ１とＱＰ４との差分値を示す“ｍｂ＿ｑｐ＿ｄｅｌｔａ１４”に等しい。すなわち、隣接していないマクロブロック間のＱＰ変化量を求めるには、その間のすべてのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積すれば良いことが分かる。
【０３６４】
なお、累積は次式（３）に従って行う。
【０３６５】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  （  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（３）
【０３６６】
ここで、“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、累積された“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を示す。このように、式（２）に合わせた形式で“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積することで、図２０に示したＱＰ値の最小値である０と最大値である５１が連続してつながった軸において、ＱＰ変化量の合計を求めることが出来る。
【０３６７】
具体的な例として、図１９Ａに示されたピクチャにおけるマクロブロックＣのＱＰ変化量の修正処理について説明する。前述のように、ストリーム分割後の第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなるため、マクロブロックＣには、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値がＱＰ変化量として含まれる必要がある。
【０３６８】
そこでＱＰデルタ修正部１３８は、ＭＢラインＬ３〜Ｌ５に含まれる全てのマクロブロックのＱＰ変化量と、マクロブロックＣのＱＰ変化量を累積する。このように、マクロブロックＡとマクロブロックＣの間にある全てのマクロブロックのＱＰ変化量を累積することで、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値である修正ＱＰ変化量を求めることが出来る。
【０３６９】
なお、ここで求められたＱＰ変化量は式（３）により導出されているため、０〜５１の範囲を示す値となっている。本来のＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取る値であるため、ＱＰデルタ修正部１３８は次式（４）により、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を−２６〜＋２５の範囲となるように修正する。
【０３７０】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ＞２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  −  ５２
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ≦２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ        ・・・（４）
【０３７１】
なお式（４）で示した処理は、ここで示したようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の累積対象の全てのマクロブロックについて累積した後、最後に１回だけで行ってもよいし、累積対象の全てのマクロブロックについて、１マクロブロックごとに行ってもよい。
【０３７２】
また、ここではマクロブロックＣに着目して説明したが、全てのＭＢラインの先頭のマクロブロックについても同様な処理を行う。例えば、マクロブロックＣの下方向に隣接するマクロブロックについては、ＭＢラインＬ４〜Ｌ６の全てのマクロブロックのＱＰ変化量を累積し、該当のマクロブロックに対して反映を行うことで、修正されたＱＰ変化量を導出する。これらの処理は、分割ストリーム毎に独立して行われる。
【０３７３】
最後にＱＰデルタ修正部１３８は、このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。なお、ＱＰデルタ修正部１３８ａはＣＡＶＬＣ方式で、ＱＰデルタ修正部１３８ｂはＣＡＢＡＣ方式で符号化を行う。
【０３７４】
以上説明したように、ＱＰデルタ修正部１３８は、入力されたＱＰ変化量を分割ストリームにおけるマクロブロックの前後関係に合うように修正することで、各分割ストリームに対して適切なＱＰ変化量を設定することができる。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０３７５】
また、図１９Ｂには、ＭＢラインＬ４とＬ５の境界でスライスが分割されていた場合の例を示している。この例では、ＭＢラインＬ１〜Ｌ４はスライスＡに、ＭＢラインＬ５〜Ｌ８はスライスＢに含まれる。
【０３７６】
このとき、第２分割ストリームにおいて、図１９Ａ同様にマクロブロックＡとマクロブロックＣは連続しているが、それぞれのマクロブロックが含まれるスライスは異なっており、マクロブロックＡとマクロブロックＣとの間で依存関係はなくなっている。第２分割ストリームにおいて、マクロブロックＣはスライスＢの先頭のマクロブロックとなるため、マクロブロックＣのＱＰ変化量は、マクロブロックＣのＱＰ値とスライスＢのスライスＱＰ値との差分値を示している必要がある。
【０３７７】
すなわちＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのうち、スライスＢに含まれるものについて、ＱＰ変化量の累積を行うことで、スライスＢのスライスＱＰ値からの差分値を求めることが出来る。しかしながら、実際にスライスが分割されているかどうかは、スライスＢの先頭が到達するまでは判別できない。
【０３７８】
そこでＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのすべてについてＱＰ変化量の累積を行うとともに、スライスＢの先頭のマクロブロック処理開始時に、累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする。このようにすることで、スライスＢに含まれるマクロブロックのみについて、ＱＰ変化量の累積を行うことができ、正しくマクロブロックＣの修正ＱＰ変化量を求めることが出来る。
【０３７９】
このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。
【０３８０】
図２１は、ＱＰデルタ修正部１３８によるＱＰ変化量の修正処理を示すフローチャートである。
【０３８１】
マクロブロックの処理が開始されると、まずＱＰデルタ修正部１３８は、処理対象マクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ３００）。
【０３８２】
次にＱＰデルタ修正部１３８は、処理対象マクロブロックがスライスの先頭であるかどうかを判定する（ステップＳ３０２）。
【０３８３】
処理対象マクロブロックがスライスの先頭であると判定された場合（ステップＳ３０２のＹｅｓ）、全ての分割ストリームに対応する累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする（ステップＳ３０４）。この処理により、途中でスライスが分割されていた場合、正しくスライスＱＰ値からのＱＰ変化量が導出できる。なお、ここではスライスの先頭のマクロブロックかどうかで累積ＱＰ変化量をリセットするかどうかを決定しているが、スライスの先頭で累積ＱＰ変化量をリセット出来れば良いため、スライスヘッダが到着した時点で累積ＱＰ変化量をリセットするような構成であっても良い。
【０３８４】
ステップＳ３０２で処理対象マクロブロックがスライスの先頭でないと判定された場合（ステップＳ３０２のＮｏ）、またはステップＳ３０４で累積ＱＰ変化量のリセットを行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックの分割ストリーム出力先を判定する（ステップＳ３０６）。
【０３８５】
ステップＳ３０６で処理対象マクロブロックの出力先が第１分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第２、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３０８）。
【０３８６】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第２分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１０）。
【０３８７】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第３分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１２）。
【０３８８】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第４分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第３分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１４）。
【０３８９】
このように、ステップＳ３０８〜ステップＳ３１４では、処理対象マクロブロックの出力先となる分割ストリーム以外の分割ストリームに対応するＱＰ変化量の累積が行われる。これは、各分割ストリームにおいて、対象の分割ストリームに割り当てられなかった３ＭＢラインに含まれるマクロブロックのＱＰ変化量累積を行うことを意味している。このような処理により、ＱＰデルタ修正部１３８は、対象の分割ストリームに割り当てられなかった３ＭＢラインに対する前後のマクロブロックのＱＰ値の差分値を正しく是正することが出来る。
【０３９０】
ステップＳ３０８、ステップＳ３１０、ステップＳ３１２、ステップＳ３１４でＱＰ変化量の累積を行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックがＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ３１６）。なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、ＱＰデルタ修正部１３８は、マクロブロックの位置情報から、処理対象マクロブロックが分割単位の先頭に位置しているかどうかを判定すればよい。
【０３９１】
処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する。そして、ＱＰデルタ修正部１３８は、得られた累積ＱＰ変化量を式（４）に従って−２６〜＋２５の範囲となるように修正したうえで、処理対象マクロブロックのＱＰ変化量として置き換える。さらに、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３１８）。このように、ステップＳ３１８では、累積したＱＰ変化量が、ＭＢライン先頭のマクロブロックのＱＰ変化量に反映されることで、ＱＰ変化量の修正が行われる。
【０３９２】
処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、またはステップＳ３１８で処理対象マクロブロックのＱＰ変化量の修正が行われた後、ＱＰデルタ修正部１３８は、処理対象マクロブロックのＱＰ変化量の再符号化処理を行う（ステップＳ３２０）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０３９３】
その後ＱＰデルタ修正部１３８は、再符号化されたＱＰ変化量を分割点検出部１３９に出力して処理を終了する（ステップＳ３２２）。
【０３９４】
以上のように、ＱＰデルタ修正部１３８は、ＭＢラインの先頭のマクロブロックに対してはＱＰ変化量の修正を行った上で、ＭＢラインの先頭以外のマクロブロックに対してはそのまま、ＱＰ変化量の再符号化・出力処理を行う。
【０３９５】
このように、本実施の形態における画像復号化装置１００では、符号化されたピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のＭＢラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１２０で負担することなく、Ｎ個のデコードエンジン１２０で均等に負担することができる。
【０３９６】
ここで、符号化ピクチャが複数のＭＢラインに分割されると、複数のＭＢラインに跨るスライスが複数のスライス部分（例えば、図３に示す各ＭＢラインＬ１〜Ｌ６や、ＭＢラインＬ７のうちの先頭６マクロブロックの集合など）に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群（例えば、図３に示す第２分割ストリームに含まれるＭＢラインＬ２、Ｌ６）が含まれることとなる。また、このようなスライス部分群（ＭＢラインＬ２、Ｌ６）には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
【０３９７】
さらに、符号化ストリームに含まれる所定の符号語に起因して、複数のＭＢラインが依存関係を持つ場合がある。例えば、Ｈ．２６４／ＡＶＣでは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”や、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”によって複数のＭＢラインが互いに依存関係を有する場合がある。このような符号化ストリームが複数のＭＢラインに分割されて互いに異なる分割ストリームに割り当てられると、ＭＢライン間の依存関係を正しく保つことが出来ない。
【０３９８】
そこで本実施の形態では、ストリーム分割部１３０がそのスライス部分群を新たなスライスとして再構成する。その結果、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本実施の形態では、Ｎ個のデコードエンジン１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置１００の全体構成を簡単にすることができる。
【０３９９】
また、本実施の形態の画像復号化装置１００では、上記特許文献１の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献１の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献１の画像復号化装置では、符号化ストリームを適切に分割していない。一方、本実施の形態の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図４９に示すデコードエンジン１４２１のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本実施の形態の画像復号化装置では、復号化処理の高速化を図ることができる。
【０４００】
また、本実施の形態の画像復号化装置では、上記特許文献３の画像復号化装置と比べて、中間データバッファに必要な容量を削減することが出来る。具体的には、上記特許文献３の画像復号化装置では、符号化ストリームに含まれる可変長符号を、複数の可変長復号処理部を用いてピクチャ単位で並列に復号化し、その復号データを中間データバッファに格納しており、後段の画像復号処理部は、その復号データからＭＢライン単位で並列に復号処理を行う。つまり、上記特許文献３の画像復号化装置では、可変長符号を復号化した状態で中間データバッファに格納するため、中間データバッファに必要な容量が大きくなる。特に、複数の可変長復号処理部がピクチャ単位で効率的に並列動作するためには、中間データバッファには複数のピクチャを格納できる容量が必要となり、その大きさは膨大である。一方、本実施の形態の画像復号化装置１００では、可変長符号を復号化しない状態で分割ストリームを生成するため、分割ストリームバッファ１５２の容量を節減することができる。
【０４０１】
また、このような本実施の形態における画像復号化装置１００は、Ｍ個のストリーム分割部１３０に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０４０２】
図２２Ａは、高解像度デコードを説明するための説明図である。図２２Ｂは、高速デコードを説明するための説明図である。図２２Ｃは、複数チャンネルデコードを説明するための説明図である。
【０４０３】
画像復号化装置１００のＭ個のストリーム分割部１３０およびストリーム分割制御部１４０は、図２２Ａに示すように、高解像度デコードの実行を指示するモード情報を取得すると、４ｋ２ｋの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０４０４】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、４ｋ２ｋの画像（３８４０×２１６０画素、６０ｐ）をリアルタイムに処理することができる。
【０４０５】
また、画像復号化装置１００のＭ個のストリーム分割部１３０およびストリーム分割制御部１４０は、図２２Ｂに示すように、高速デコードの実行を指示するモード情報を取得すると、ＨＤの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０４０６】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、ＨＤの画像を８倍速（４×２）で処理することができる。
【０４０７】
また、画像復号化装置１００のＭ個のストリーム分割部１３０およびストリーム分割制御部１４０は、図２２Ｃに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のＨＤの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン１２０に復号化させる。なお、この複数チャンネルデコードの場合、Ｍ個のストリーム分割部１３０は、ＳＰＳ、ＰＰＳおよびスライスなどの各種ＮＡＬユニットの複製および挿入を行わず、分割ストリームバッファ１５２の各領域への符号化ストリーム（チャンネル）の振り分けのみを行う。
【０４０８】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、最大８チャンネル、つまり８つのＨＤの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル（符号化ストリーム）を復号化する場合には、デコードエンジン１２０のクロック周波数を下げて消費電力の低減を図ることができる。例えば、４チャンネルを復号化する場合には、第１デコードエンジン１２０と第２デコードエンジン１２０のそれぞれに２チャンネルの復号化を実行させ、残りの第３デコードエンジン１２０と第４デコードエンジン１２０を停止させる。または、第１デコードエンジン１２０〜第４デコードエンジン１２０を使用し、それらのクロック周波数を１／２にする。
【０４０９】
このように、本実施の形態における画像復号化装置１００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。なお、画像復号化装置１００における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを４つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート（４ｋ２ｋまたはＨＤ）が異なるだけである。したがって、画像復号化装置１００は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
【０４１０】
（実施の形態２）
次に、本発明の実施の形態２について、詳細に説明する。
【０４１１】
実施の形態１における画像復号化装置１００は、ＭＢスキップラン情報およびＱＰ変化量を修正することにより、分割前の符号化ストリームにおいて連続するＭＢライン間の依存関係を、各分割ストリームにおけるＭＢラインの前後関係に応じた依存関係に修正した。
【０４１２】
ここで、符号化ストリームには、ＱＰ変化量が含まれていないマクロブロックが含まれる場合がある。ＱＰ変化量が含まれていないマクロブロックは、量子化されていないマクロブロックに相当する。具体的には、Ｈ．２６４／ＡＶＣ規格における、ＱＰ変化量が含まれていないマクロブロックは、例えば、（１）スキップマクロブロック、（２）非圧縮のマクロブロック（Ｉ＿ＰＣＭ）、または（３）イントラ予測の予測モードが“Ｉｎｔｒａ１６×１６”ではなく、かつ“ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ”が０である（非０係数を１つも含まない）マクロブロックである。
【０４１３】
このようなＱＰ変化量が含まれていないマクロブロックがＭＢラインの先頭に存在する場合、実施の形態１における画像復号化装置１００は、修正対象となるＱＰ変化量が存在しないので、ＱＰ変化量を修正することができない。
【０４１４】
そこで、実施の形態２における画像復号化装置２００は、ＱＰ変化量が含まれていないマクロブロックをＭＢラインの先頭に含む符号化ストリームから複数の分割ストリームを生成する際に、そのマクロブロックを含む分割ストリームにＱＰ変化量を挿入することを１つの特徴とする。これにより、画像復号化装置２００は、各分割ストリームにおける新たな前後関係に基づくＱＰ変化量を適切に設定することができる。
【０４１５】
ここで、分割ストリームにＱＰ変化量が挿入された場合には、ＭＢライン間にＱＰ変化量が存在するため、ＭＢラインを跨って連続するスキップマクロブロックの個数を１つのＭＢスキップラン情報を用いて示すことができない。そこで、実施の形態２における画像復号化装置２００は、ＭＢスキップラン情報の再結合処理を行わないことをもう１つの特徴とする。
【０４１６】
以下、図面を用いて、本実施の形態における画像復号化装置２００について説明する。
【０４１７】
図２３は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。なお、図２３において、図１と同様の構成要素については、同一の符号を付し、説明を省略する。
【０４１８】
図２３に示すように、画像復号化装置２００は、デコーダ２１０とメモリ１５０とを備えている。
【０４１９】
デコーダ２１０は、デコーダ１１０と同様に、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ２１０は、ストリーム分割制御部１４０と、Ｍ個のストリーム分割部（第１ストリーム分割部〜第Ｍストリーム分割部）２３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）２２０とを備えている。
【０４２０】
Ｍ個のストリーム分割部２３０は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の修正処理を除き、Ｍ個のストリーム分割部１３０と同等の処理を実行する。ストリーム分割部２３０の詳細は、図２４を用いて後述する。
【０４２１】
Ｎ個のデコードエンジン２２０は、Ｎ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部に相当する。Ｎ個のデコードエンジン２２０は、ストリーム分割部２３０によって分割ストリームに挿入された累積ＱＰ変化量を用いてＱＰ値を算出する点を除いて、Ｎ個のデコードエンジン１２０と同等の処理を実行する。
【０４２２】
続いて、ストリーム分割部２３０の構成および動作について詳細に説明する。
【０４２３】
図２４は、ストリーム分割部２３０の構成を示すブロック図である。
【０４２４】
ストリーム分割部２３０は、処理管理部１３０ｍ、セレクタＳｃｔ、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの代わりに、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂを備えている点が、図１０に示すストリーム分割部１３０と異なる。
【０４２５】
処理管理部１３０ｍは、実施の形態１と同様、モード情報および振り分け制御情報を取得し、それらの情報にしたがって、ストリーム分割部２３０に備えられている他の構成要素を制御する。つまり、図６Ａ〜図８に示すようなストリーム分割処理が行われるように、処理管理部１３０は、例えば、セレクタＳｃｔを制御し、ＳＰＳ、ＰＰＳ、または、処理対処のスライスから生成された分割ストリームを出力させたり、その出力を停止させたりする。
【０４２６】
スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢスキップラン情報が、互いに異なる分割ストリームに割り当てられる少なくとも２つのＭＢラインに跨って連続するマクロブロックの個数を示す場合には、ＭＢラインごとのブロックの個数を示すようにＭＢスキップラン情報を分割する。
【０４２７】
ただし、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと異なり、各分割ストリームにおいて、複数のＭＢスキップラン情報を１つのＭＢスキップラン情報に結合しない。
【０４２８】
ＱＰデルタ挿入部２３８ａ、２３８ｂは、ＱＰデルタ修正部１３８ａ、１３８ｂと同様に、ＱＰ変化量が、２つのＭＢラインに跨るマクロブロック間の変化量を示す場合には、各分割ストリームにおけるマクロブロックの新たな前後関係に基づくＱＰ変化量を計算する。
【０４２９】
ただし、ＱＰデルタ挿入部２３８ａ、２３８ｂは、計算したＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。これにより、各分割ストリームには、新たなＱＰ変化量が挿入（設定）される。つまり、ＱＰデルタ挿入部２３８ａ、２３８ｂは、各マクロブロックに含まれているＱＰ変化量を修正しない。
【０４３０】
分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部２３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ挿入部２３８ａから取得した累積ＱＰ変化量とを含める。
【０４３１】
分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ挿入部２３８ｂから取得した累積ＱＰ変化量を含める。
【０４３２】
次に、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂの動作について、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの動作と異なる点を中心に、詳細に説明する。
【０４３３】
なお、以降の説明において、ＱＰデルタ挿入部２３８ａ、２３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ挿入部２３８と総称する。
【０４３４】
図２５は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【０４３５】
図２５に示されたピクチャには、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。
【０４３６】
また前述したように、スキップマクロブロックには、ＱＰ変化量が含まれない。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０４３７】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０４３８】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置する、ＱＰ変化量を含むマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン２２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。
【０４３９】
そこでＱＰデルタ挿入部２３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＭＢラインへ挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。つまり、ＱＰデルタ挿入部２３８は、ＱＰ変化量が２つのＭＢラインを跨ぐブロック間のＱＰ値の差分値を示すことにより、その２つのＭＢラインが依存関係を有する場合に、その依存関係を断つように、ＭＢラインの先頭に挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。
【０４４０】
なお、本実施の形態では、ＭＢラインの先頭にＱＰ変化量が挿入されているが、必ずしもＭＢラインの先頭にＱＰ変化量が挿入される必要はない。例えば、ＭＢラインの先頭のマクロブロック内など他の場所にＱＰ変化量が挿入されてもよい。
【０４４１】
ＭＢラインの先頭に挿入するためのＱＰ変化量の計算方法としては、実施の形態１と同様に、全てのマクロブロックについてＱＰ値を復元することによりＱＰ変化量を計算する方法と、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することによりＱＰ変化量を計算する方法とが考えられる。本実施の形態では、後者の計算方法について説明する。
【０４４２】
ＱＰデルタ挿入部２３８は、ＭＢラインＬ３〜Ｌ５に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を再び符号化し、符号化された累積ＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。その結果、図２５に示すように、累積ＱＰ変化量は、ＭＢラインＬ６の先頭に挿入される。つまり、第２分割ストリームには、累積ＱＰ変化量と、もともとマクロブロックＣに含まれていたＱＰ変化量とが設定される。なお、累積ＱＰ変化量の詳細な計算方法は、実施の形態１と同様であるので説明を省略する。
【０４４３】
なお、ここではＭＢラインＬ６に着目して説明したが、ＱＰデルタ挿入部２３８は、他のＭＢラインについても、累積ＱＰ変化量をＭＢラインの先頭に挿入するために、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。例えば、ＱＰデルタ挿入部２３８は、ＭＢラインＬ７の先頭に挿入するための累積ＱＰ変化量として、ＭＢラインＬ４〜Ｌ６に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を符号化し、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。これらの処理は、分割ストリーム毎に独立して行われる。
【０４４４】
このように、本実施の形態では、累積ＱＰ変化量がＭＢラインの先頭に挿入されるので、ＭＢラインを跨いでスキップマクロブロックは連続しない。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａと異なり、ＭＢスキップラン情報の結合処理を行わない。
【０４４５】
例えば、図２５に示されたピクチャの場合、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部２３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。
【０４４６】
ここで、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックと、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックとの間には、上述したように累積ＱＰ変化量が新たなＱＰ変化量として挿入される。そこで、スキップラン修正部２３７ａは、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックに対応するＭＢスキップラン情報とを再結合しない。
【０４４７】
なお、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０４４８】
図２６は、スキップラン修正部２３７ａの構成を示すブロック図である。なお、図２６において、図１７と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
【０４４９】
スキップラン修正部２３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、およびスキップラン符号化部１６４を備えている。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａからスキップラン累積・保持部１６２と加算部１６３とを除いた構成と同様である。なお、スキップラン分割部１６１は、分割したＭＢスキップラン情報をスキップラン符号化部１６４に出力する。
【０４５０】
図２７は、スキップラン修正部２３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。なお、図２７において、図１８と同様の処理を行うステップについては、同一の符号を付し、説明を省略する。
【０４５１】
まずスキップラン修正部２３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。すなわち、スキップラン修正部２３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別しない。これは、後述するように、スキップラン修正部２３７ａは、先行ＭＢスキップラン情報を内部に保持しないため、スライス終端に到達したときの先行ＭＢスキップラン情報の出力処理が不要だからである。
【０４５２】
ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部２３７ａは、処理の最初に戻りストリームを再度読み進める。
【０４５３】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。
【０４５４】
続いて、スキップラン修正部２３７ａは、実施の形態１と同様に、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０４５５】
ここで、連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０４５６】
一方、連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。ここで、図１８に示すステップＳ２０８およびステップＳ２１０の処理が実行されないのは、本実施の形態におけるスキップラン修正部２３７ａは、ＭＢスキップラン情報を再結合しないからである。
【０４５７】
その後、スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０４５８】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。
【０４５９】
さらにスキップラン修正部２３７ａは、分割したＭＢスキップラン情報のうち、前半部をＭＢスキップラン情報として再符号化する（ステップＳ２５０）。その後スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力する（ステップＳ２５２）。つまり、本実施の形態では、ＭＢスキップラン情報を再結合する必要がないので、実施の形態１のように先行ＭＢスキップラン情報を内部に保持しない。
【０４６０】
次にスキップラン修正部２３７ａは、実施の形態１と同様に、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０４６１】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部２３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０４６２】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割および出力処理を行う。
【０４６３】
以上説明した処理が、スキップラン修正部２３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部２３７ａでは、ＭＢスキップラン情報の分割が適切に行われる。
【０４６４】
図２８は、ＱＰデルタ挿入部２３８による累積ＱＰ変化量の挿入処理を示すフローチャートである。なお、図２８において、図２１と同様の処理を行うステップについては、同一の符号を付し、詳細な説明を省略する。
【０４６５】
マクロブロックの処理が開始されると、ＱＰデルタ挿入部２３８は、実施の形態１と同様に、ステップＳ３００〜ステップＳ３１６までの処理を実行する。
【０４６６】
そして、処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが割り当てられる分割ストリームに対応する累積ＱＰ変化量を符号化し、分割点検出部１３９に出力する（ステップＳ３５２）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報を出力する前に、累積ＱＰ変化量を出力する。
【０４６７】
続いて、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３５４）。そして、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５６）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、ＱＰ変化量を修正することなくそのまま出力する。
【０４６８】
一方、処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５０）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、そのＱＰ変化量を修正することなく、ＭＢ情報を出力する。
【０４６９】
以上のように、ＱＰデルタ挿入部２３８は、ＭＢラインの先頭に挿入するために累積した新たなＱＰ変化量（累積ＱＰ変化量）と、符号化ストリームに含まれていたＱＰ変化量とを分割点検出部１３９に出力する。
【０４７０】
このように、本実施の形態における画像復号化装置２００では、実施の形態１における画像復号化装置１００と同様に、Ｎ個のデコードエンジン２２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。
【０４７１】
特に、ＭＢラインの先頭に位置するマクロブロックがＱＰ変化量を含まない場合であっても、本実施の形態における画像復号化装置２００は、新たなＱＰ変化量をＭＢラインに挿入することにより、並行して復号化処理が行われるときに正しいＱＰ値を得ることができる。
【０４７２】
また、このような本実施の形態における画像復号化装置２００は、実施の形態１における画像復号化装置１００と同様に、Ｍ個のストリーム分割部２３０に入力されるモード情報に応じて、図２２Ａ〜図２２Ｃに示した高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０４７３】
これにより、本実施の形態における画像復号化装置２００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。
【０４７４】
（実施の形態３）
次に、本発明の実施の形態３について、詳細に説明する。
【０４７５】
図２９は、本発明の実施の形態３における画像符号化装置の構成を示すブロック図である。
【０４７６】
本実施の形態における画像符号化装置３００は、簡単な構成で符号化の並列処理を適切に実行する装置であって、エンコーダ３１０とメモリ３６０とを備えている。
【０４７７】
メモリ３６０は、エンコーダ３１０に入力される原画像データ、およびエンコーダ３１０により中間的に生成されたデータを記憶するための領域を有する。
【０４７８】
具体的には、メモリ３６０は、フレームメモリ３６１と、分割ストリームバッファ３６２と、Ｍ個の部分ストリームバッファ（第１部分ストリームバッファ〜第Ｍ部分ストリームバッファ）３６３とを備えている。
【０４７９】
フレームメモリ３６１には、符号化対象となるピクチャの原画像データが格納されるとともに、Ｎ個のエンコードエンジン（符号化部）３２０によって生成されたＮ個の分割ローカルデコード画像データが格納される。分割ストリームバッファ３６２には、エンコーダ３１０により生成されるＮ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。なお、分割ストリームバッファ３６２には、Ｎ個のエンコードエンジン３２０のそれぞれに対して割り当てられた領域がある。Ｍ個の部分ストリームバッファ３６３のそれぞれには、エンコーダ３１０により生成される部分ストリーム（結合符号化領域）が格納される。
【０４８０】
エンコーダ３１０は、メモリ３６０のフレームメモリ３６１に格納されている原画像データを読み出して符号化することによって符号化ストリームを生成して出力する。また、このエンコーダ３１０は、Ｎ個のエンコードエンジン（第１エンコードエンジン〜第Ｎエンコードエンジン）３２０と、Ｍ個のストリーム結合部（第１ストリーム結合部〜第Ｍストリーム結合部）３３０と、ストリーム結合制御部３４０と、多重化部３５０とを備えている。
【０４８１】
なお、本実施の形態におけるエンコードエンジン３２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分符号化可能な処理能力を有する。
【０４８２】
Ｎ個のエンコードエンジン３２０は、モード情報を取得し、そのモード情報に応じて、符号化対象となるピクチャの原画像データをＭＢラインもしくはＭＢラインペア毎に読み出し、並列に符号化を行う。すなわち、本実施の形態における画像符号化装置３００は、実施の形態１における画像復号化装置１００と同様にピクチャを複数のＭＢラインもしくはＭＢラインペアに分割し、それぞれの符号化処理をＮ個のエンコードエンジン３２０に割り当てることで、符号化処理の並列化を実現している。
【０４８３】
さらに、Ｎ個のエンコードエンジン３２０のそれぞれは、画面内予測によりマクロブロックを符号化するときには、その符号化対象マクロブロックの左上、上および右上にあるマクロブロックを符号化およびローカルデコードしたエンコードエンジン３２０から、それらのローカルデコードされたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したエンコードエンジン３２０は、その隣接ＭＢ情報を用いて、符号化対象マクロブロックを符号化する。また、エンコードエンジン３２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理、可変長符号化処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある符号化およびローカルデコードされたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【０４８４】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のエンコードエンジン３２０はそれぞれ、符号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの符号化が終了すると、それらの隣接ＭＢ情報を用いて、その符号化対象のマクロブロックの符号化を開始する。その結果、第１エンコードエンジン３２０〜第４エンコードエンジン３２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に符号化する。
【０４８５】
図３０Ａは、ＭＢＡＦＦを使用せずにピクチャを符号化する場合の符号化の順序を示す図である。
【０４８６】
ＭＢＡＦＦを使用せずにピクチャを符号化する場合、第１エンコードエンジン３２０は第０ＭＢラインを符号化し、第２エンコードエンジン３２０は第１ＭＢラインを符号化し、第３エンコードエンジン３２０は第２ＭＢラインを符号化し、第４エンコードエンジン３２０は第３ＭＢラインを符号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【０４８７】
ここで、ピクチャの符号化が開始されるときには、まず、第１エンコードエンジン３２０が第０ＭＢラインの符号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの符号化が完了すると、第２エンコードエンジン３２０が第１ＭＢラインの左端のマクロブロックの符号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの符号化が完了すると、第３エンコードエンジン３２０が第２ＭＢラインの左端のマクロブロックの符号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの符号化が完了すると、第４エンコードエンジン３２０が第３ＭＢラインの左端のマクロブロックの符号化を開始する。
【０４８８】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで符号化される。
【０４８９】
図３０Ｂは、ＭＢＡＦＦを使用してピクチャを符号化する場合の符号化の順序を示す図である。
【０４９０】
ＭＢＡＦＦを使用してピクチャを符号化する場合、ＭＢＡＦＦを使用せずにピクチャを符号化する場合と同様に、第１エンコードエンジン３２０は第０ＭＢラインペアを符号化し、第２エンコードエンジン３２０が第１ＭＢラインペアを符号化し、第３エンコードエンジン３２０が第２ＭＢラインペアを符号化し、第４エンコードエンジン３２０が第３ＭＢラインペアを符号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインペアは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【０４９１】
ここで、ピクチャの符号化が開始されるときには、まず、第１エンコードエンジン３２０が第０ＭＢラインペアの符号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの符号化が完了すると、第２エンコードエンジン３２０が第１ＭＢラインペアの左上端のマクロブロックの符号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの符号化が完了すると、第３エンコードエンジン３２０が第２ＭＢラインペアの左上端のマクロブロックの符号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの符号化が完了すると、第４エンコードエンジン３２０が第３ＭＢラインペアの左上端のマクロブロックの符号化を開始する。
【０４９２】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで符号化される。
【０４９３】
なお、ＭＢＡＦＦを使用せずにピクチャを符号化する場合、および、ＭＢＡＦＦを使用してピクチャを符号化する場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて符号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて符号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて符号化される場合には、ピクチャの符号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて符号化される場合には、その遅れる分量に応じてピクチャの符号化にかかる時間が長くなる。
【０４９４】
なお、Ｎ個のエンコードエンジン３２０は、符号化方法としてＣＡＶＬＣを用いて符号化を行う場合には、可変長符号化処理を含めて符号化処理を行うが、符号化方法としてＣＡＢＡＣを用いて符号化を行う場合には、可変長符号化処理のうち、符号語の２値化のみを行い、算術符号化は行わない。これは、ＣＡＢＡＣ方式による算術符号化処理において、Ｎ個のエンコードエンジン３２０が複数のＭＢラインを跨いで依存関係を持つことにより、並列処理ができないためである。ここで、Ｎ個のエンコードエンジン３２０にて実施されない算術符号化処理は、後述するＭ個のストリーム結合部３３０にて実施される。ただし、符号化方法としてＣＡＢＡＣを用いて符号化を行う場合でも、後段のストリーム結合部３３０がスライスを正しく認識できるよう、スライス毎に仮のスタートコードを付与するとともに、ＥＰＢ（エミュレーション防止バイト）を挿入しておく。
【０４９５】
このようにＮ個のエンコードエンジン３２０によってそれぞれ符号化されたデータは、Ｎ個の分割ストリームとして分割ストリームバッファ３６２に格納される。
【０４９６】
ストリーム結合制御部３４０は、モード情報を取得し、そのモード情報に応じて、Ｍ個のストリーム結合部３３０におけるストリーム結合処理の処理量が均等になるようにするため、各ストリーム結合部３３０のそれぞれに対し、ストリーム結合処理を所定の単位で振り分けるための振り分け制御情報を通知する。本実施の形態では、ストリーム結合制御部３４０は、Ｍ個のストリーム結合部３３０におけるストリーム結合処理を、スライス単位で振り分けるものとして説明する。つまり、ストリーム結合制御部３４０は、振り分け制御情報の通知によって、符号化ストリームに含まれるべき生成対象のスライスごとに、そのスライスに対するストリーム結合処理を、Ｍ個のストリーム結合部３３０の何れか１つに実行させる。例えば、振り分け制御情報は、ストリーム結合処理の対象とされるスライスを識別するためのスライス番号を示す。さらに、ストリーム結合制御部３４０は、ストリーム結合処理をスライス単位でＭ個のストリーム結合部３３０に振り分けた結果から、多重化部３５０に対し、Ｍ個の部分ストリームバッファ３６３のうちどの部分ストリームバッファ３６３から部分ストリームを取得すればよいかを示す選択情報を通知する。
【０４９７】
Ｍ個のストリーム結合部３３０はそれぞれ、モード情報および振り分け制御情報を取得し、そのモード情報および振り分け制御情報に応じて、分割ストリームバッファ３６２から処理すべきスライスに含まれるＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）を抽出し、抽出したＮ個の分割ストリームを結合することで、そのスライスを所定の単位として再構成する。つまり、本実施の形態におけるストリーム結合部３３０は、ストリーム結合制御部３４０によって振り分けられたスライスごとに、そのスライスを構成するＮ個の分割ストリームをそれぞれ複数のＭＢラインに分割する。そして、ストリーム結合部３３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるスライスに順に割り当てることにより分割ストリームをひとつに結合し、スライスを再構成する。上述のストリーム結合処理は、このように、Ｎ個のエンコードエンジン３２０によって生成されたＮ個の分割ストリームのそれぞれに含まれる、原画像データの元のスライスに対応するスライス（部分領域）を、１つのスライス（結合符号化領域）に再構成する処理である。なお、このストリーム結合処理では、符号化された複数のＭＢライン（構成単位）からスライス（部分領域）が構成されている場合には、そのスライスを符号化された複数のＭＢラインに分割して組み替えることによって、つまり、上述のように、その複数のＭＢラインを生成対象であるスライスに順に割り当てることによって、上述の１つのスライス（結合符号化領域）を生成する。また、Ｍ個のストリーム結合部３３０は、そのストリーム結合処理を並列して実行する。これにより、Ｍ個のストリーム結合部３３０はそれぞれ再構成されたスライスを部分ストリームとして生成する。
【０４９８】
なお、Ｍ個のストリーム結合部３３０はそれぞれ、分割ストリームバッファ３６２に格納されたＮ個の分割ストリームのそれぞれから、スタートコードを探索することで、振り分け制御情報により通知されたスライスを抽出する。
【０４９９】
また、符号化方法としてＣＡＢＡＣを用いて符号化を行う場合、Ｍ個のストリーム結合部３３０は、Ｎ個の分割ストリームに対して算術符号化を行いながらスライスを再構成する。
【０５００】
Ｍ個のストリーム結合部３３０は、このように再構成したスライスを、Ｍ個の部分ストリーム（第１部分ストリーム〜第Ｍ部分ストリーム）としてＭ個の対応する部分ストリームバッファ３６３に格納する。すなわち、第１ストリーム結合部３３０は、第１部分ストリームを第１部分ストリームバッファ３６３に格納し、第２ストリーム結合部３３０は、第２部分ストリームを第２部分ストリームバッファ３６３に格納し、第Ｍストリーム結合部３３０は、第Ｍ部分ストリームを第Ｍ部分ストリームバッファ３６３に格納する。
【０５０１】
また、Ｍ個のストリーム結合部３３０のそれぞれは、スライスを所定の単位として扱って部分ストリームを生成する際に、ＳＰＳやＰＰＳ、スライスヘッダなどのヘッダ情報をスライスに付随させて出力する。
【０５０２】
多重化部３５０は、モード情報および選択情報を取得し、そのモード情報および選択情報に応じて、処理すべき部分ストリームをＭ個の部分ストリームバッファ３６３のいずれかから読み出し、読み出した部分ストリームを順に出力することでＭ個の部分ストリームを多重化し、その結果、一つの符号化ストリームを生成して出力する。
【０５０３】
例えば、ストリーム結合制御部３４０からの選択情報により、第１部分ストリームバッファ３６３から部分ストリームを取得するように通知された場合には、多重化部３５０は、第１部分ストリームを第１部分ストリームバッファ３６３から読み出す。また、ストリーム結合制御部３４０からの選択情報により、第Ｍ部分ストリームバッファ３６３から部分ストリームを取得するように通知された場合には、多重化部３５０は、第Ｍ部分ストリームを第Ｍ部分ストリームバッファ３６３から読み出す。そして、多重化部３５０は、Ｍ個の部分ストリームバッファ３６３から読み出した部分ストリームを多重化し、符号化ストリームとして出力する。
【０５０４】
このような本実施の形態における画像符号化装置３００の特徴は、ストリーム結合部３３０により、Ｎ個の分割ストリームに含まれるスライスをそれぞれ複数のＭＢラインに分割し、それらを結合することによって１つの新たなスライスを再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、スキップラン修正処理、およびＱＰデルタ修正処理を含む。
【０５０５】
図３１は、スライスヘッダの挿入処理およびスライス終端処理を説明するための説明図である。
【０５０６】
この図では、ピクチャのＭＢライン０〜ＭＢライン５から１つのスライスを構成して符号化する場合の例を示している。
【０５０７】
Ｎ個のエンコードエンジン３２０は、このスライスに含まれる互いに異なるＭＢラインを並列に符号化する。その結果、Ｎ個のエンコードエンジン３２０はそれぞれ、１つまたは複数のＭＢラインからなるデータを単独のスライスとして符号化する。すなわち、第１エンコードエンジン３２０はＭＢライン０およびＭＢライン４からなるデータを単独のスライスとして符号化し、第２エンコードエンジン３２０はＭＢライン１およびＭＢライン５からなるデータを単独のスライスとして符号化し、第３エンコードエンジン３２０はＭＢライン２からなるデータを単独のスライスとして符号化し、第４エンコードエンジン３２０はＭＢライン３からなるデータを単独のスライスとして符号化する。
【０５０８】
その結果、図３１の（ａ）〜（ｄ）に示すように、Ｎ個のエンコードエンジン３２０によって生成される各分割ストリームに含まれるスライスは、１つまたは複数のＭＢラインのデータとスライス終端情報を含む。すなわち、第１分割ストリームは、ＭＢライン０およびＭＢライン４のデータとスライス終端情報ｅｃ１を含み、第２分割ストリームは、ＭＢライン１およびＭＢライン５のデータとスライス終端情報ｅｃ２を含み、第３分割ストリームは、ＭＢライン２のデータとスライス終端情報ｅｃ３を含み、第４分割ストリームはＭＢライン３のデータとスライス終端情報ｅｃ４を含む。
【０５０９】
ストリーム結合部３３０は、これら第１分割ストリーム〜第４分割ストリームのそれぞれのスライスを結合して新たなスライスを再構成することで、部分ストリーム（結合符号化領域）を生成する。
【０５１０】
具体的には、ストリーム結合部３３０は、新たなスライスに対して適切なスライスヘッダを付与して部分ストリームに割り当てる。次にストリーム結合部３３０は、第１分割ストリームからＭＢライン０のデータを抽出し、部分ストリームに割り当てる。同様に、ストリーム結合部３３０は、第２分割ストリームからＭＢライン１のデータを抽出し、部分ストリームに割り当てる。
【０５１１】
次にストリーム結合部３３０は、第３分割ストリームからＭＢライン２のデータを抽出する。ＭＢライン２のデータにはスライス終端情報ｅｃ３が付随するが、再構成すべき新たなスライスはＭＢライン５まで継続するため、スライス終端情報ｅｃ３を除去し、ＭＢライン２以降もスライスが継続するものとしてＭＢライン２を部分ストリームに割り当てる。同様に、ストリーム結合部３３０は、第４分割ストリームからＭＢライン３のデータおよびスライス終端情報ｅｃ４を抽出するが、スライス終端情報ｅｃ４を除去し、ＭＢライン３以降もスライスが継続するものとしてＭＢライン３を部分ストリームに割り当てる。同様に、ストリーム結合部３３０は、第１分割ストリームからＭＢライン４のデータおよびスライス終端情報ｅｃ１を抽出するが、スライス終端情報ｅｃ１を除去し、ＭＢライン４以降もスライスが継続するものとしてＭＢライン４を部分ストリームに割り当てる。
【０５１２】
最後にストリーム結合部３３０は、第２分割ストリームからＭＢライン５のデータおよびスライス終端情報ｅｃ２を抽出する。ストリーム結合部３３０は、ＭＢライン５を部分ストリームに割り当てるとともに、スライス終端情報ｅｃ２を除去し、再構成される新たなスライスに適切なスライス終端情報ｅｃｃを生成して部分ストリームに割り当てる。
【０５１３】
ここで、再構成される新たなスライスに適切なスライス終端情報ｅｃｃを付与し直すのは、ＭＢラインの結合により再構成される新たなスライス末尾のビット位置が、元の分割ストリームにおけるスライス末尾のビット位置と異なる可能性があるためである。ストリーム結合部３３０は、再構成される新たなスライスに適切なスライス終端情報を付与することで、スライスの末尾をバイト境界に合わせる。
【０５１４】
このように、ストリーム結合部３３０は、スライスに対して適切なスライスヘッダの挿入およびスライス終端処理を行うとともに、各分割ストリームから抽出したＭＢラインのデータを結合することで、画像符号化装置３００が出力する符号化ストリームの方式に準じたスライスを再構成することができる。
【０５１５】
次に、ストリーム結合制御部３４０によって行われる、スライスの振り分け処理について説明する。
【０５１６】
ここまでで説明したように、本実施の形態における画像符号化装置３００は、Ｎ個のエンコードエンジン３２０と、Ｍ個のストリーム結合部３３０とを備えており、動画像データ（原画像データ）の符号化処理を並列化している。このように、システム全体における並列処理を可能とすることにより、符号化処理全体の性能向上を実現している。
【０５１７】
ここで、Ｍ個のストリーム結合部３３０は、Ｎ個のエンコードエンジン３２０によって生成される各分割ストリームのスライスを所定の単位として結合することで、新たなスライスを再構成するが、スライスの大きさは一定ではないため、その処理量はスライス毎に変動する。
【０５１８】
また、全てのスライスの大きさを一定にするようなシステムであっても、処理の対象は符号化されたストリームであるため、その処理量はスライス毎の符号量に依存する。一般的な動画像符号化方式では、符号化ストリームは可変長符号化されており、データの内容に応じて符号量が変動する。また、Ｈ．２６４／ＡＶＣ方式におけるスライスには、Ｉスライス、Ｐスライス、Ｂスライスなどと呼ばれる種類がある。画面内符号化処理が行われるＩスライスでは符号量が多く、画面内符号化処理に加えて画面間符号化処理が行われるＰスライスと、Ｂスライスでは符号量が少なくなる傾向がある。このように、符号化ストリームに含まれる符号化スライスの符号量は一定ではなく、大きく変動しうる。そのため、Ｎ個のエンコードエンジン３２０によって生成される各分割ストリームのスライスを順番にＭ個のストリーム結合部３３０に振り分けるだけでは各ストリーム結合部３３０の処理量が均等にならず、並列化による処理性能向上の効果が十分に得られない。
【０５１９】
そこで、ストリーム結合制御部３４０は、各ストリーム結合部３３０の処理量が均等になるように、各スライスをストリーム結合部３３０のそれぞれに対して振り分ける。
【０５２０】
図３２Ａおよび図３２Ｂは、ストリーム結合制御部３４０によるスライスの振り分け処理の具体例を示す説明図である。なお、本実施の形態では、説明を簡単にするために、以下、ＭをＭ＝２として説明する。
【０５２１】
図３２Ａは、Ｎ個のエンコードエンジン３２０により生成されたＮ個の分割ストリームの例を示している。この例におけるＮ個の分割ストリーム（第１分割ストリーム〜第４分割ストリーム）は、ピクチャを構成するスライスデータ（スライス）から構成されている。ピクチャ０はスライス０のみから構成される。ピクチャ１はスライス１およびスライス２から構成される。ピクチャ２はスライス３およびスライス４から構成される。
【０５２２】
図３２Ｂは、ストリーム結合制御部３４０による一連のスライスの振り分け処理を示す図である。処理の開始時点で、各ストリーム結合部３３０は、これから処理するスライスの番号を保持している。例えば、第１ストリーム結合部３３０はこれから処理するスライスの番号の初期値としてＳＮ１＝０を、第２ストリーム結合部３３０はこれから処理するスライスの番号の初期値としてＳＮ２＝０を保持している。
【０５２３】
ストリーム結合制御部３４０は、各ストリーム結合部３３０の処理状況に応じて、振り分け制御情報を送信することにより、各ストリーム結合部３３０に対してスライスの再構成を通知するとともに、必要に応じてＳＰＳ、ＰＰＳなどのヘッダ情報を付与するように各ストリーム結合部３３０に指示する。
【０５２４】
スライスの再構成を通知されたストリーム結合部３３０は、対象のスライスを含む複数の分割ストリームを分割ストリームバッファ３６２から読み出し、読み出した複数の分割ストリームをそれぞれＭＢラインに分割し、分割されたＭＢラインを再結合するとともに、スライスヘッダの付与などを行うことによって、新たなスライスを再構成する。以下、ストリーム結合部３３０におけるこれら一連の処理を、ストリーム結合処理と記載する。
【０５２５】
タイミングｔ０で、第１ストリーム結合部３３０および第２ストリーム結合部３３０はどちらもストリーム結合処理をしていない。そのためストリーム結合制御部３４０は、振り分け制御情報を送信することにより、第１ストリーム結合部３３０に対してスライス０のストリーム結合を通知するとともに、ストリームの先頭に存在すべきＳＰＳの付与を指示し、且つ、ピクチャ０の先頭に存在すべきＰＰＳ０の付与を指示する。また、ストリーム結合制御部３４０は、振り分け制御情報を送信することにより、第２ストリーム結合部３３０に対してスライス１のストリーム結合処理を通知するとともに、ピクチャ１の先頭に存在すべきＰＰＳ１の付与を指示する。なお、本実施の形態では、振り分け制御情報は、例えば、ストリーム結合処理の対象とされるスライスを識別するためのスライス番号と、ＳＰＳまたはＰＰＳを付与すべきか否かを指示するための情報とを示す。
【０５２６】
第１ストリーム結合部３３０は、振り分け制御情報により、ストリーム結合制御部３４０からスライス０のストリーム結合を通知されると、ストリーム結合を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ１の値とを比較する。このタイミングでは、両者は０で一致しているため、第１ストリーム結合部３３０は最初に入力されるスライスに対してストリーム結合処理を行う。
【０５２７】
具体的には、第１ストリーム結合部３３０は、まずＳＰＳおよびＰＰＳ０を生成して付与する。次に、第１ストリーム結合部３３０は、スライス０に対してストリーム結合処理を行うとともに、生成した部分ストリームの新たなスライス０を第１部分ストリームバッファ３６３に対して出力する。
【０５２８】
一方、第２ストリーム結合部３３０は、振り分け制御情報により、ストリーム結合制御部３４０からスライス１のストリーム結合を通知されると、ストリーム結合を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、ストリーム結合を通知されたスライスのスライス番号は１を示し、ＳＮ２は０を示しており、その差分は１である。そこで、第２ストリーム結合部３３０は、入力される１スライス分の処理をスキップし、２番目に入力されるスライスに対してストリーム結合処理を行う。つまり、第２ストリーム結合部３３０は、差分の数だけのスライスに対するストリーム結合処理をスキップする。
【０５２９】
具体的には、第２ストリーム結合部３３０は、まず入力されるスライス０のストリーム結合処理をスキップする。なお、ストリーム結合処理のスキップは、分割ストリームに付随するスタートコードを探索することで行われる。ここで、第２ストリーム結合部３３０は、スライス０のストリーム結合処理をスキップしたことで、ＳＮ２をインクリメントしてＳＮ２＝１とする。
【０５３０】
次に、第２ストリーム結合部３３０は、ストリーム結合を通知されたスライスのスライス番号とＳＮ２の値とが一致しているため、ＰＰＳ１を生成して付与するとともに、スライス１に対してストリーム結合処理を行い、生成した部分ストリームの新たなスライス１を第２部分ストリームバッファ３６３に対して出力する。
【０５３１】
タイミングｔ１では、第２ストリーム結合部３３０によるスライス１に対するストリーム結合処理が終了するため、第２ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了を通知するとともに、第２部分ストリームバッファ３６３に出力した部分ストリームの情報を通知する。具体的には、実際に部分ストリームバッファ３６３に出力したＰＰＳ１およびスライス１を構成するＮＡＬユニットの個数を通知する。
【０５３２】
ここでは、第２ストリーム結合部３３０は、ＰＰＳ１とスライス１で合計２個のＮＡＬユニットを処理したことをストリーム結合制御部３４０に対して通知する。同時に第２ストリーム結合部３３０は、スライス１に対するストリーム結合処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝２とする。第２ストリーム結合部３３０から処理完了の通知を受けたストリーム結合制御部３４０は、第２ストリーム結合部３３０に対してスライス２のストリーム結合を通知する。
【０５３３】
第２ストリーム結合部３３０は、ストリーム結合制御部３４０からスライス２のストリーム結合を通知されると、ストリーム結合を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、両者は２で一致しているため、第２ストリーム結合部３３０は最初に入力されるスライスに対してストリーム結合処理を行う。具体的には、第２ストリーム結合部３３０は、スライス２に対してストリーム結合処理を行う。
【０５３４】
タイミングｔ２では、第１ストリーム結合部３３０によるスライス０に対するストリーム結合処理が終了するため、第１ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了を通知するとともに、第１部分ストリームバッファ３６３に出力した部分ストリームの情報として、ＳＰＳ、ＰＰＳ０およびスライス０を構成するＮＡＬユニットの個数「３」を通知する。同時に第１ストリーム結合部３３０は、スライス０に対するストリーム結合処理が終了したことで、ＳＮ１をインクリメントしてＳＮ１＝１とする。第１ストリーム結合部３３０から処理完了の通知を受けたストリーム結合制御部３４０は、振り分け制御情報により、第１ストリーム結合部３３０に対してスライス３のストリーム結合を通知するとともに、ピクチャ２の先頭に存在すべきＰＰＳ２の付与を指示する。
【０５３５】
第１ストリーム結合部３３０は、ストリーム結合制御部３４０からスライス３のストリーム結合を通知されると、ストリーム結合を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ１の値とを比較する。このタイミングでは、ストリーム結合を通知されたスライスのスライス番号は３を示し、ＳＮ２は１を示しており、その差分は２である。そこで、第１ストリーム結合部３３０は入力される２スライス分の処理をスキップし、３番目に入力されるスライスに対してストリーム結合処理を行う。
【０５３６】
具体的には、第１ストリーム結合部３３０は、まず入力されるスライス１のストリーム結合処理をスキップする。ここで、第１ストリーム結合部３３０は、スライス１のストリーム結合処理をスキップしたことで、ＳＮ１をインクリメントしてＳＮ１＝２とする。次に、第１ストリーム結合部３３０にはスライス２が入力されるが、ストリーム結合を通知されたスライスのスライス番号とＳＮ１の値とがまだ一致していないため、入力されるスライス２の処理をスキップする。ここで、第１ストリーム結合部３３０は、スライス２の処理をスキップしたことで、ＳＮ１をインクリメントしてＳＮ１＝３とする。
【０５３７】
次に、第１ストリーム結合部３３０は、ストリーム結合を通知されたスライスのスライス番号とＳＮ１の値とが一致しているため、ＰＰＳ２を生成して付与するとともに、スライス３に対してストリーム結合処理を行い、生成した部分ストリームの新たなスライス３を第１部分ストリームバッファ３６３に対して出力する。
【０５３８】
タイミングｔ３では、第２ストリーム結合部３３０によるスライス２に対するストリーム結合処理が終了するため、第２ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了を通知するとともに、第２部分ストリームバッファ３６３に出力した部分ストリームの情報として、スライス２を構成するＮＡＬユニットの個数「１」を通知する。同時に第２ストリーム結合部３３０は、スライス２に対するストリーム結合処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝３とする。第２ストリーム結合部３３０から処理完了の通知を受けたストリーム結合制御部３４０は、第２ストリーム結合部３３０に対してスライス４のストリーム結合を通知する。
【０５３９】
第２ストリーム結合部３３０は、ストリーム結合制御部３４０からスライス４のストリーム結合を通知されると、ストリーム結合を通知されたスライスのスライス番号と、これから処理するスライスの番号として保持しているＳＮ２の値とを比較する。このタイミングでは、ストリーム結合を通知されたスライスのスライス番号は４を示し、ＳＮ２は３を示しており、その差分は１である。そこで、第２ストリーム結合部３３０は入力される１スライス分の処理をスキップし、２番目に入力されるスライスに対してストリーム結合処理を行う。
【０５４０】
具体的には、第２ストリーム結合部３３０は、まず入力されるスライス３の処理をスキップする。ここで、第２ストリーム結合部３３０は、スライス３の処理をスキップしたことで、ＳＮ２をインクリメントしてＳＮ２＝４とする。
【０５４１】
次に、第２ストリーム結合部３３０は、ストリーム結合を通知されたスライスのスライス番号とＳＮ２の値とが一致しているため、スライス４に対してストリーム結合処理を行うとともに、生成した部分ストリームの新たなスライス４を第２部分ストリームバッファ３６３に対して出力する。
【０５４２】
タイミングｔ４では、第１ストリーム結合部３３０によるスライス３に対するストリーム結合処理が終了するため、第１ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了を通知するとともに、第１部分ストリームバッファ３６３に出力した部分ストリームの情報として、ＰＰＳ２およびスライス３を構成するＮＡＬユニットの個数「２」を通知する。同時に第１ストリーム結合部３３０は、スライス３に対するストリーム結合処理が終了したことで、ＳＮ１をインクリメントしてＳＮ１＝４とする。
【０５４３】
同様に、タイミングｔ５では、第２ストリーム結合部３３０によるスライス４に対するストリーム結合処理が終了するため、第２ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了を通知するとともに、第２部分ストリームバッファ３６３に出力した部分ストリームの情報、スライス４を構成するＮＡＬユニットの個数「１」を通知する。同時に第２ストリーム結合部３３０は、スライス４に対するストリーム結合処理が終了したことで、ＳＮ２をインクリメントしてＳＮ２＝５とする。
【０５４４】
以上説明したように、ストリーム結合制御部３４０は、処理を完了したストリーム結合部３３０に対して順次スライスのストリーム結合処理を振り分けていく。これにより、各ストリーム結合部３３０の処理量が均等になる。
【０５４５】
図３３は、図３２Ｂで示したスライスの振り分け、およびストリーム結合処理を行った場合における部分ストリームバッファ３６３の状態を示す図である。
【０５４６】
第１部分ストリームバッファ３６３には、スライス０およびスライス３に対応する部分ストリームが格納される。また、第２部分ストリームバッファ３６３には、スライス１、スライス２およびスライス４に対応する部分ストリームが格納される。このように、２つの部分ストリームバッファ３６３には各ストリーム結合部３３０における処理量に応じてスライスが分散して格納されるため、各スライスの格納順序は一定とはならない。
【０５４７】
そのためストリーム結合制御部３４０は、多重化部３５０がストリーム結合処理前の分割ストリームと同じスライス順で部分ストリームを取得できるよう、Ｍ個の部分ストリームバッファ３６３のうち、どの部分ストリームバッファから部分ストリームを取得すればよいかを示す選択情報を、その多重化部３５０に通知する。
【０５４８】
図３４は、図３２Ｂで示したスライスの振り分け、およびストリーム結合処理を行った場合における選択情報の形式の一例を示す図である。
【０５４９】
図３４に示すように、選択情報は、１スライスにつき、部分ストリームバッファ情報と、ＮＡＬユニット数情報とを含んでおり、ストリーム結合制御部３４０によるスライスの振り分け処理を行う毎に生成される。部分ストリームバッファ情報は、ストリーム結合制御部３４０が、第１ストリーム結合部３３０と第２ストリーム結合部３３０のどちらにスライスを振り分けたかを示す。つまり、部分ストリームバッファ情報は、ストリーム結合部３３０によるストリーム結合処理によって生成された新たなスライス（新たなスライスを含む部分ストリーム）が格納されている部分ストリームバッファを示す。また、ＮＡＬユニット数情報は、ストリーム結合部３３０において、対象となるスライスの処理を行った際に出力されたＮＡＬユニット個数を示しており、ストリーム結合部３３０の処理完了時に、ストリーム結合部３３０からストリーム結合制御部３４０に対して通知される。
【０５５０】
ストリーム結合制御部３４０によって生成された選択情報は、多重化部３５０に対して通知され、例えば多重化部３５０内のＦＩＦＯ（先入れ先出し）メモリに格納される。ＦＩＦＯに格納された選択情報は、通知された順番に多重化部３５０によって読み出され、部分ストリームバッファ３６３からのストリーム取得処理に利用される。
【０５５１】
具体的には、まず多重化部３５０は、スライス０の選択情報として、部分ストリームバッファ情報＝１およびＮＡＬユニット数情報＝３を読み出す。多重化部３５０はスライス０の選択情報に従い、第１部分ストリームバッファ３６３から、３個のＮＡＬユニット（ＳＰＳ、ＰＰＳ０、スライス０）を取得する。次に、多重化部３５０は、スライス１の選択情報として、部分ストリームバッファ情報＝２およびＮＡＬユニット数情報＝２を読み出す。多重化部３５０はスライス１の選択情報に従い、第２部分ストリームバッファ３６３から、２個のＮＡＬユニット（ＰＰＳ１、スライス１）を取得する。次に、多重化部３５０は、スライス２の選択情報として、部分ストリームバッファ情報＝２およびＮＡＬユニット数情報＝１を読み出す。多重化部３５０はスライス２の選択情報に従い、第２部分ストリームバッファ３６３から、１個のＮＡＬユニット（スライス２）を取得する。次に、多重化部３５０は、スライス３の選択情報として、部分ストリームバッファ情報＝１およびＮＡＬユニット数情報＝２を読み出す。多重化部３５０はスライス３の選択情報に従い、第１部分ストリームバッファ３６３から、２個のＮＡＬユニット（ＰＰＳ２、スライス３）を取得する。次に、多重化部３５０は、スライス４の選択情報として、部分ストリームバッファ情報＝２およびＮＡＬユニット数情報＝１を読み出す。多重化部３５０はスライス４の選択情報に従い、第２部分ストリームバッファ３６３から、１個のＮＡＬユニット（スライス４）を取得する。
【０５５２】
このように、多重化部３５０は、ストリーム結合制御部３４０から通知される選択情報を用いることで、Ｎ個のエンコードエンジン３２０で生成した分割ストリームと同じスライス順序で、Ｍ個の部分ストリームバッファ３６３から部分ストリーム（部分ストリームのスライス）を取得することが出来る。
【０５５３】
なお、図３２Ａ〜図３４を用いて説明したスライスの振り分け処理は、本発明の画像符号化装置３００の処理動作の一例であって、本発明は、ここで説明した処理動作に限定されない。
【０５５４】
例えば、図３２Ｂでは、ストリーム結合制御部３４０が、ストリーム結合部３３０に対してスライスのストリーム結合を通知する際にスライス番号を指定したが、スライス番号ではなく、処理をスキップするスライス数を指定してもよい。この場合、ストリーム結合制御部３４０は、Ｍ個のストリーム結合部３３０のそれぞれに対して振り分けたスライス数を記憶しておき、それをもとに処理をスキップするスライス数を計算する。また、図３２Ｂでは、ストリーム結合部３３０によるスライスのストリーム結合処理が終了した際、ストリーム結合部３３０は、ストリーム結合制御部３４０に対して処理の完了および部分ストリームバッファ３６３に出力したＮＡＬユニットの個数を通知したが、部分ストリームバッファ３６３に出力したＮＡＬユニットの個数の代わりに、部分ストリームバッファ３６３に出力した部分ストリームのビット数を通知してもよい。つまり、多重化部３５０が部分ストリームバッファ３６３から取得すべき部分ストリームのサイズが判定可能な情報を通知できればよい。
【０５５５】
また、例えば図３４では、部分ストリームバッファ情報は、部分ストリームバッファ３６３の番号を直接指定したが、その番号と異なる情報であってもよい。つまり、Ｍ＝２の場合には、部分ストリームバッファ情報は、処理対象のスライスに対応する部分ストリームが格納されている部分ストリームバッファ３６３が、直前のスライスに対応する部分ストリームが格納されていた部分ストリームバッファ３６３と同じであるかどうかを示す情報であってもよい。すなわち部分ストリームバッファ情報は、複数の部分ストリームバッファ３６３から適切に部分ストリームを取得できる情報であればよい。また、例えば図３４では、選択情報はＮＡＬユニット数情報を含むものとしたが、前述したように、ＮＡＬユニット数情報の代わりに部分ストリームのビット数を示す情報を含むものとしてもよい。
【０５５６】
ここで、ストリーム結合部３３０の構成および動作について詳細に説明する。
【０５５７】
図３５は、ストリーム結合部３３０の構成を示すブロック図である。
【０５５８】
ストリーム結合部３３０は、処理管理部３３０ｍ、セレクタＳｃｔ１、スタートコード検出部３３１、ＥＰＢ除去部３３２ａ、ＥＰＢ挿入部３３２ｂ、ヘッダ挿入部３３３、およびスライスデータ処理部３３４ａ、３３４ｂを備えている。
【０５５９】
処理管理部３３０ｍは、モード情報および振り分け制御情報を取得し、それらの情報にしたがって、ストリーム結合部３３０に備えられている他の構成要素を制御する。つまり、図３２Ａ〜図３４に示すようなストリーム結合処理が行われるように、処理管理部３３０ｍは、例えば、これから処理するスライスの番号（ＳＮ１またはＳＮ２など）を保持し、その番号に基づいてセレクタＳｃｔ１を制御する。その結果、処理管理部３３０ｍは、ＳＰＳ、ＰＰＳ、または、処理対処のスライスから再構成された新たなスライス（新たなスライスを含む部分ストリーム）を出力させたり、その出力を停止させたりする。
【０５６０】
スタートコード検出部３３１は、分割ストリームバッファ３５２からＮ個の分割ストリームのいずれかを読み出して、スタートコードを検出することでスライスを認識する。
【０５６１】
ＥＰＢ除去部３３２ａは、ＥＰＢ（エミュレーション防止バイト）を分割ストリームから除去し、ＥＰＢが除去された分割ストリームをスライスデータ処理部３３４ａ、３３４ｂに出力する。
【０５６２】
ＥＰＢ挿入部３３２ｂは、分割ストリームを結合することによって生成される部分ストリームに、ＥＰＢ除去部３３２ａによって除去されたＥＰＢを挿入する。
【０５６３】
ヘッダ挿入部３３３は、ＳＰＳ、ＰＰＳ、スライスヘッダといったヘッダ情報を生成し、ＥＰＢ挿入部３３２ｂに出力する。
【０５６４】
スライスデータ処理部３３４ａ、３３４ｂは、ＥＰＢが除去されたＮ個の分割ストリームを結合することによりスライスデータを再構成し、その再構成されたスライスデータを出力する。ここで、スライスデータ処理部３３４ａは、ＣＡＶＬＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）によって生成されたＮ個の分割ストリームを結合し、部分ストリームを生成する。また、スライスデータ処理部３３４ｂは、ＣＡＢＡＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）によって生成されたＮ個の分割ストリームを結合し、部分ストリームを生成する。
【０５６５】
スライスデータ処理部３３４ａは、スライスデータ層解析部３３５ａ、マクロブロック層解析部３３６ａ、スキップラン修正部３３７ａ、ＱＰデルタ修正部３３８ａおよび分割点検出部３３９ａを備えている。
【０５６６】
スライスデータ層解析部３３５ａは、分割ストリームに含まれるスライスデータ層の符号化データを解析し、ストリーム結合処理に必要な情報を抽出する。マクロブロック層解析部３３６ａは、分割ストリームに含まれるマクロブロック層の符号化データを解析し、ストリーム結合処理に必要な情報を抽出する。
【０５６７】
スキップラン修正部３３７ａは、スライスデータ層解析部３３５ａによって抽出されたＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。すなわち、スキップラン修正部３３７ａは、ＭＢスキップラン情報が、分割ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すときには、その連続するブロックの個数を分割し、スライス部分ごとのブロックの個数を示すように修正したＭＢスキップラン情報を、少なくとも２つの連続するスライス部分がそれぞれ割り当てられる分割ストリームに設定する。さらに、スキップラン修正部３３７ａは、分割ストリームを結合して生成される部分ストリームにおいて、設定される複数のＭＢスキップラン情報に対応する複数のブロックが当該分割ストリーム内で連続するときには、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換する。
【０５６８】
ここで、ＭＢスキップラン情報は、符号化ピクチャに含まれるスライス内で特定の種類のブロックが連続する場合に連続する当該ブロックの個数を示す第１の符号語の一例である。具体的には、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０５６９】
例えば、分割ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層解析部３３５ａによって抽出されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、Ｎ個の分割ストリームがＭＢラインごとに分割され、それらのＮ個の分割ストリームに含まれるＭＢラインが１つの部分ストリームに順に割り当てられると、部分ストリーム内で、連続してスキップされるマクロブロックの数が変わってしまう。つまり、ＭＢスキップラン情報による、ＭＢライン間の依存関係が崩れてしまう。
【０５７０】
そこで、スキップラン修正部３３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン修正部３３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０５７１】
ＱＰデルタ修正部３３８ａは、マクロブロックごとに、マクロブロック層解析部３３６ａによって抽出された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。すなわち、ＱＰデルタ修正部３３８ａは、ＱＰ変化量が、２つのＭＢラインに跨るブロック間の変化量を示す場合には、部分ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する。そしてＱＰデルタ修正部３３８ａは、計算した変化量にＱＰ変化量を修正する。
【０５７２】
なお、ＱＰ変化量は、符号化ピクチャに含まれるスライス内で連続するブロック間における符号化係数の変化量を示す第２の符号語の一例である。具体的には、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの直前に位置するマクロブロックのＱＰ値との差分値を示す。
【０５７３】
つまり、Ｎ個の分割ストリームがＭＢラインごとに分割され、それらのＮ個の分割ストリームに含まれるＭＢラインが１つの部分ストリームに順に割り当てられると、ＭＢラインの境界を挟んで互いに連続していたマクロブロックはそれぞれ部分ストリーム内で離れた位置に割り当てられる。その結果、生成される部分ストリームを含む符号化ストリームを復号する復号化器は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。つまり、ＱＰ変化量による、ＭＢライン間の依存関係が崩れてしまう。
【０５７４】
そこで、ＱＰデルタ修正部３３８ａは、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量を、部分ストリームにおける新たなマクロブロックの前後関係に基づいて再計算する。
【０５７５】
分割点検出部３３９ａは、分割ストリームをＭＢラインに分割し、そのＭＢラインを結合することで部分ストリームを生成する。具体的には、分割点検出部３３９ａは、スライスデータ層解析部３３５ａおよびマクロブロック層解析部３３６ａにより抽出された情報から分割ストリーム内のＭＢラインの境界を検出し、ＭＢラインの境界ごとに、ストリーム結合部３３０が分割ストリームバッファ３５２から読み出す分割ストリームを切り替えることで、Ｎ個の分割ストリームをＭＢライン単位で結合する。また、分割点検出部３３９ａは、部分ストリームに対して、スキップラン修正部３３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ修正部３３８ａから取得したＱＰ変化量とを含める。
【０５７６】
さらに、分割点検出部３３９ａは、入力される分割ストリームに含まれるスライス終端情報を検出・除去するとともに、分割ストリームを結合することで再構成したスライスに対して、適切なスライス終端情報を付与して部分ストリームに割り当てる。
【０５７７】
スライスデータ処理部３３４ｂは、スライスデータ層解析部３３５ｂ、マクロブロック層解析部３３６ｂ、ＱＰデルタ修正部３３８ｂおよび分割点検出部３３９ｂを備えている。
【０５７８】
スライスデータ層解析部３３５ｂは、分割ストリームに含まれるスライスデータ層の符号化データを解析し、ストリーム結合処理に必要な情報を抽出する。マクロブロック層解析部３３６ｂは、分割ストリームに含まれるマクロブロック層の符号化データ（２値データ）を解析し、ストリーム結合処理に必要な情報を抽出する。
【０５７９】
ＱＰデルタ修正部３３８ｂは、上述のＱＰデルタ修正部３３８ａと同様、マクロブロックごとに、マクロブロック層解析部３３６ｂによって抽出された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。
【０５８０】
分割点検出部３３９ｂは、分割点検出部３３９ａと同様、分割ストリームをＭＢラインに分割し、そのＭＢラインを結合することで部分ストリームを生成する。このとき、分割点検出部３３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ修正部１３８ｂから取得したＱＰ変化量を含める。さらに、分割点検出部１３９ｂは、入力される分割ストリームに含まれるスライス終端情報を検出・除去するとともに、分割ストリームを結合することで再構成したスライスに対して、適切なスライス終端情報を付与して部分ストリームに割り当てる。さらに、分割点検出部１３９ｂは、分割ストリームに含まれる２値データに対して算術符号化を行う。
【０５８１】
ここで、スキップラン修正部３３７ａの動作について詳細に説明する。
【０５８２】
スキップラン修正部３３７ａは、前述したようにＭＢスキップラン情報である“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正する。ＭＢスキップラン情報は、符号化方法にＣＡＶＬＣを用いた場合に符号化ストリームに含まれる符号語であり、連続するスキップマクロブロックの個数（以下、「長さ」ともいう。）を示している。また、以下の記載において、ＭＢスキップラン情報の長さとは、ＭＢスキップラン情報が示す、連続するスキップマクロブロックの個数を意味する。
【０５８３】
図３６は、ＭＢスキップラン情報の修正処理を説明するための説明図である。
【０５８４】
図３６には、Ｎ個のエンコードエンジン３２０によって、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在するように符号化されたピクチャを示している。したがって、このように符号化したピクチャを含む分割ストリームでは、第１分割ストリームのＭＢラインＬ５の末尾に連続するスキップマクロブロックの個数を示す長さ２のＭＢスキップラン情報が符号化され、第２分割ストリームのＭＢラインＬ２〜Ｌ３に跨って連続するスキップマクロブロックの個数を示す長さ９（５＋４＝９）のＭＢスキップラン情報が符号化され、第３分割ストリームのＭＢラインＬ３の先頭に連続するスキップマクロブロックの個数を示す長さ３のＭＢスキップラン情報が符号化されている。第４分割ストリームには、ＭＢスキップラン情報は符号化されていない。
【０５８５】
しかし、このような場合にＮ個の分割ストリームがＭＢラインごとに分割され、それらのＭＢラインが１つのストリームとして結合されると、結合されたストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報による、その複数のＭＢライン間の依存関係が崩れてしまう。
【０５８６】
すなわち、結合されたストリームでは、ＭＢラインＬ２からＬ３に跨って連続する８個のスキップマクロブロックが存在し、ＭＢラインＬ５からＬ６に跨って連続する６個のスキップマクロブロックが存在するが、それ以外のスキップマクロブロックは存在しない。
【０５８７】
以上のように、もともと分割ストリームに含まれていたＭＢスキップラン情報は、第１分割ストリームに長さ２のＭＢスキップラン情報が、第２分割ストリームに長さ９のＭＢスキップラン情報が、第３分割ストリームに長さ３のＭＢスキップラン情報が存在していたのに対し、結合されたストリームでは、長さ８と６のＭＢスキップラン情報を出力する必要がある。つまり、各分割ストリーム内で複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報によって、その複数のＭＢラインが互いに依存関係を有する場合には、その依存関係が、結合されたストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＭＢスキップラン情報を修正する必要がある。
【０５８８】
そこでスキップラン修正部３３７ａは、まずスライスデータ層解析部３３５ａによって抽出されたＭＢスキップラン情報に対応するスキップマクロブロックの集合が、１つの分割ストリーム内で複数のＭＢラインに跨って存在する場合、ＭＢライン境界でＭＢスキップラン情報を分割する。ここで、ＭＢライン境界でＭＢスキップラン情報を分割するとは、１つの分割ストリーム内で複数のＭＢラインに跨って連続する複数のスキップマクロブロックの個数を分割し、ＭＢラインごとのスキップマクロブロックの個数をそれぞれが示す複数のＭＢスキップラン情報を生成することを意味する。
【０５８９】
すなわち、図３６に示されたピクチャの場合、スキップラン修正部３３７ａは、第２分割ストリーム内でＭＢラインＬ２〜Ｌ６に跨って存在する９個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。
【０５９０】
次に、スキップラン修正部３３７ａは、分割されたＭＢスキップラン情報のうち、結合されたストリームにおいて連続するスキップマクロブロックの集合に対応する複数のＭＢスキップラン情報を再結合する。ここで複数のＭＢスキップラン情報の再結合とは、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換することを意味する。
【０５９１】
図３６に示されたピクチャの場合、分割されたＭＢスキップラン情報に対応するスキップマクロブロックの集合のうち、ＭＢラインＬ２に含まれる長さ５のスキップマクロブロックの集合と、ＭＢラインＬ３に含まれる長さ３のスキップマクロブロックの集合とは、結合されたストリーム内で連続する。そのため、スキップラン修正部３３７ａは、これらの２つのスキップマクロブロックの集合にそれぞれ対応する２つのＭＢスキップラン情報を結合し、長さ８のＭＢスキップラン情報に変換する。また、ＭＢラインＬ５に含まれる長さ２のスキップマクロブロックの集合と、ＭＢラインＬ６に含まれる長さ４のスキップマクロブロックの集合とは、結合されたストリーム内で連続する。そのため、スキップラン修正部３３７ａは、これらの２つのスキップマクロブロックの集合にそれぞれ対応する２つのＭＢスキップラン情報を結合し、長さ６のＭＢスキップラン情報に変換する。
【０５９２】
最後にスキップラン修正部３３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０５９３】
以上説明したように、スキップラン修正部３３７ａは、入力されたＭＢスキップラン情報をＭＢライン境界で分割した後、必要に応じて再結合することで、結合されたストリームに対して適切な長さのＭＢスキップラン情報を出力することが出来る。
【０５９４】
なお、ここで、スキップラン修正部３３７ａが、結合されたストリームにおいて連続するＭＢスキップラン情報を分割されたままにせずに、必要に応じて再結合するのは、Ｈ．２６４／ＡＶＣ規格において、複数のＭＢスキップラン情報が連続して存在することが許されていないためである。つまり、Ｈ．２６４／ＡＶＣ規格において、連続するスキップマクロブロックの個数を複数のＭＢスキップラン情報を用いて表現することが許されていないので、スキップラン修正部３３７ａは、その複数のＭＢスキップラン情報を結合する。このように、スキップラン修正部３３７ａがＨ．２６４／ＡＶＣ規格に準拠した形式でＭＢスキップラン情報が修正されることにより、結合されたストリームがＨ．２６４／ＡＶＣ規格に準拠した形式で生成される。
【０５９５】
なお、ここでは、ＭＢスキップラン情報が各分割ストリーム内で複数のＭＢラインに跨って存在する場合に、スキップラン修正部３３７ａがＭＢスキップラン情報の分割・再結合を行う例を示したが、ＭＢスキップラン情報が各分割ストリーム内で複数のＭＢラインに跨って存在しない場合でも、ＭＢスキップラン情報が結合されたストリーム内で複数のＭＢラインに跨って存在する場合には、スキップラン修正部３３７ａは、ＭＢスキップラン情報の分割は行わず、ＭＢスキップラン情報の再結合のみを行う。
【０５９６】
次に、ＱＰデルタ修正部３３８ａ、３３８ｂの動作について詳細に説明する。なお、以降の説明において、ＱＰデルタ修正部３３８ａ、３３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ修正部３３８と総称する。
【０５９７】
ＱＰデルタ修正部３３８は、マクロブロックごとに原則として存在するＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正する。
【０５９８】
図３７Ａおよび図３７Ｂは、ＱＰ変化量の修正処理を説明するための説明図である。
【０５９９】
図３７Ａに示されたピクチャにおけるマクロブロックＣに着目すると、第２分割ストリーム内でその直前に処理が行われるマクロブロックはマクロブロックＡである。したがって、マクロブロックＣには、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０６００】
しかし、このような分割ストリームがＭＢラインごとに分割され、それらのＭＢラインが結合されて１つのストリームに割り当てられると、結合されたストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０６０１】
すなわち、ストリーム結合後には、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＢとなる。したがって、このように符号化された符号化ストリームを復号化器が復号した場合、マクロブロックＢのＱＰ値に対して、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量による、そのＭＢライン間の依存関係が崩れてしまう。
【０６０２】
そこでＱＰデルタ修正部３３８は、ストリームを結合することにより発生するマクロブロックの前後関係の変化を是正するように、ＱＰ変化量の修正を行う。つまり、１つの分割ストリーム内で２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量によって、その２つのＭＢラインが依存関係を有する場合には、その依存関係が、結合されたストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＱＰ変化量を修正する。
【０６０３】
ＱＰ変化量の修正方法としては、全てのマクロブロックについてＱＰ値の復号化（ＱＰ値の復元）を行った上で、ストリーム結合後の新たなマクロブロックの前後関係に基づき、ＱＰ変化量を算出し直す方法が考えられる。しかしながらこの方法では、ＱＰ値復号化とＱＰ変化量算出との２つの処理が必要であり、ＱＰデルタ修正部３３８における処理量が大きくなってしまう。
【０６０４】
そこで本実施の形態では、ＱＰデルタ修正部３３８は、分割ストリーム毎に、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積し、累積したＱＰ変化量を減算することで、ＱＰ値を復号化することなく、修正されたＱＰ変化量を直接導出する。ＱＰ変化量の累積は、式（３）に従って行われる。
【０６０５】
具体的な例として、図３７Ａに示されたピクチャにおけるマクロブロックＣのＱＰ変化量の修正処理について説明する。前述のように、結合されたストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＢとなるため、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値の差分値がＱＰ変化量として含まれる必要がある。
【０６０６】
そこでＱＰデルタ修正部３３８は、ＭＢラインＬ３〜Ｌ５に含まれる全てのマクロブロックのＱＰ変化量を累積する。このように、マクロブロックＡとマクロブロックＣの間にある全てのマクロブロックのＱＰ変化量を累積することで、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値の差分値であるＱＰ変化量を導出するための補正値を求めることができる。
【０６０７】
次にＱＰデルタ修正部３３８は、次式（５）に従って、マクロブロックＣのＱＰ変化量から、求めたＱＰ変化量の累積値を減算し、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値の差分値であるＱＰ変化量を導出する。
【０６０８】
ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  （ｍｂ＿ｑｐ＿ｄｅｌｔａ  −  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（５）
【０６０９】
ここで、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”はマクロブロックＣのＱＰ変化量を、“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”はＭＢラインＬ３〜Ｌ５に含まれる全てのマクロブロックのＱＰ変化量の累積値を示している。
【０６１０】
なお、ここで求められたＱＰ変化量は式（５）により導出されているため、０〜５１の範囲を示す値となっている。本来のＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取る値であるため、ＱＰデルタ修正部３３８は次式（６）により、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を−２６〜＋２５の範囲となるように修正する。
【０６１１】
ｍｂ＿ｑｐ＿ｄｅｌｔａ＞２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ｍｂ＿ｑｐ＿ｄｅｌｔａ  −  ５２
ｍｂ＿ｑｐ＿ｄｅｌｔａ≦２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ｍｂ＿ｑｐ＿ｄｅｌｔａ        ・・・（６）
【０６１２】
以上示したように、マクロブロックＣのＱＰ変化量の修正が行われる。
【０６１３】
なお、ここではマクロブロックＣに着目して説明したが、全てのＭＢラインの先頭のマクロブロックについても同様な処理を行う。例えば、マクロブロックＣの下方向に隣接するマクロブロックについては、ＭＢラインＬ４〜Ｌ６の全てのマクロブロックのＱＰ変化量を累積し、その累積値を該当のマクロブロックのＱＰ変化量から減算することで、修正されたＱＰ変化量を導出する。これらの処理は、ＭＢライン毎に独立して行われる。
【０６１４】
また、Ｎ個のエンコードエンジン３２０はそれぞれ、各ＭＢラインの先頭にあるマクロブロックを符号化するときには、その先頭にあるマクロブロックがＱＰ変化量を含むマクロブロックとなるように符号化する。なお、Ｈ．２６４／ＡＶＣ規格におけるＱＰ変化量が含まれていないマクロブロックとは、（１）スキップマクロブロック、（２）非圧縮のマクロブロック（Ｉ＿ＰＣＭ）、または（３）イントラ予測の予測モードが“Ｉｎｔｒａ１６×１６”ではなく、かつ“ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ”が０である（非０係数を１つも含まない）マクロブロックである。これにより、各ＭＢラインの先頭のマクロブロックに対して、ＱＰ変化量の修正を正しく行うことができる。
【０６１５】
もし該当のＭＢラインに含まれる全てのマクロブロックがＱＰ変化量を含まない場合は、ＱＰ変化量の修正対象となるマクロブロックが出現するまでＱＰ変化量の累積を継続する。
【０６１６】
最後にＱＰデルタ修正部３３８は、このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部３３９ａ、３３９ｂに対して出力する。なお、ＱＰデルタ修正部３３８ａはＣＡＶＬＣ方式で、ＱＰデルタ修正部３３８ｂはＣＡＢＡＣ方式で符号化を行う。
【０６１７】
以上説明したように、ＱＰデルタ修正部３３８は、入力されたＱＰ変化量を結合されたストリームにおけるマクロブロックの前後関係に合うように修正することで、結合されたストリームに対して適切なＱＰ変化量を設定することができる。
【０６１８】
また、図３７Ｂには、ＭＢラインＬ４とＬ５の境界でスライスを分割する場合の例を示している。この例では、ＭＢラインＬ１〜Ｌ４はスライスＡに、ＭＢラインＬ５〜Ｌ８はスライスＢに含まれる。
【０６１９】
このとき、第２分割ストリームにおいて、図３７Ａ同様にマクロブロックＡとマクロブロックＣは連続しているが、それぞれのマクロブロックが含まれるスライスは異なっており、マクロブロックＡとマクロブロックＣとの間で依存関係はなくなっている。第２分割ストリームにおいて、マクロブロックＣはスライスＢの先頭のマクロブロックとなるため、マクロブロックＣのＱＰ変化量は、マクロブロックＣのＱＰ値とスライスＢのスライスＱＰ値との差分値を示している。
【０６２０】
すなわちＱＰデルタ修正部３３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのうち、スライスＢに含まれるものについて、ＱＰ変化量の累積を行い、累積したＱＰ変化量を減算することで、マクロブロックＢとマクロブロックＣのＱＰ差分値を求めることが出来る。
【０６２１】
具体的には、ＱＰデルタ修正部３３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのすべてについてＱＰ変化量の累積を行うが、スライスＢの先頭のマクロブロック処理開始時に、累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする。このようにすることで、スライスＢに含まれるマクロブロックのみについて、ＱＰ変化量の累積を行うことができ、正しくマクロブロックＣの修正ＱＰ変化量を求めることが出来る。
【０６２２】
このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部３３９ａ、３３９ｂに対して出力する。
【０６２３】
このように、本実施の形態における画像符号化装置３００では、ピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれがＮ個のエンコードエンジン３２０に割り当てられて符号化されるため、Ｎ個のエンコードエンジン３２０による符号化処理の負担を均等にすることができ、符号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣ形式で１枚のピクチャを１つのスライスで構成する場合であっても、そのピクチャは複数のＭＢラインに分割されるため、その１つのスライスの符号化を１つのエンコードエンジン３２０で負担することなく、Ｎ個のエンコードエンジン３２０で均等に負担することができる。
【０６２４】
ここで、ピクチャがＮ個のエンコードエンジン３２０によって独立に符号化されると、本来は１つのピクチャ内で複数のＭＢラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。
【０６２５】
さらに、符号化ストリームに含まれる所定の符号語に起因して、複数のＭＢラインが依存関係を持つ場合がある。例えば、Ｈ．２６４／ＡＶＣでは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”や、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”によって複数のＭＢラインが互いに依存関係を有する場合がある。このような符号化ストリームが複数のＭＢラインに分割されて互いに異なる分割ストリームに割り当てられると、ＭＢライン間の依存関係を正しく保つことが出来ない。
【０６２６】
そこで本実施の形態では、ストリーム結合部３３０がＮ個の分割ストリームを結合することで新たなスライスを再構成する。その結果、画像符号化装置３００は、Ｈ．２６４／ＡＶＣ形式に準じた符号化ストリームを生成することができる。また、このようにすることで、本実施の形態では、Ｎ個のエンコードエンジン３２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像符号化装置３００の全体構成を簡単にすることができる。
【０６２７】
また、本実施の形態における画像符号化装置３００では、上述のストリーム結合処理をＭ個のストリーム結合部３３０で処理するとともに、ストリーム結合制御部３４０が、Ｍ個のストリーム結合部３３０の処理量が均等になるよう、Ｍ個のストリーム結合部３３０に対してスライス単位でストリーム結合処理を振り分ける。このような構成により、ストリーム結合処理をＭ個のストリーム結合部３３０で均等に負担することができ、システム全体で符号化の並列処理を実現している。
【０６２８】
なお、本実施の形態では、エンコーダ３１０はＭ個のストリーム結合部３３０を備えたが、ストリーム結合部３３０を１つだけ備えてもよい。
【０６２９】
図３８Ａは、ストリーム結合部を１つだけ備えた画像符号化装置の構成を示すブロック図である。
【０６３０】
この画像符号化装置３００ａはエンコーダ３１０ａとメモリ３６０ａとを備える。メモリ３６０ａは、上述のメモリ３６０と同様、フレームメモリ３６１および分割ストリームバッファ３６２を備えているが、部分ストリームバッファ３６３を備えていない。また、エンコーダ３１０ａは、上述のエンコーダ３１０と同様、Ｎ個のエンコードエンジン３２０とを備えているが、Ｍ個のストリーム結合部３３０の代わりに、１つのストリーム結合部３３０ｂを備えている。
【０６３１】
つまり、ストリーム結合部３３０ｂは、Ｍ個のストリーム結合部３３０によって並列に行われる複数のストリーム結合処理をシリアルに行う。つまり、ストリーム結合部３３０ｂは、Ｎ個のエンコードエンジン３２０から出力されるＮ個の分割ストリームのそれぞれに複数のスライスが含まれていれば、それらのスライスの配列にしたがって、ストリーム結合処理を順次行う。例えば、Ｎ個の分割ストリームのそれぞれに、スライス０、スライス１、スライス２、…スライスｎが含まれていれば、ストリーム結合部３３０ｂは、Ｎ個の分割ストリームに含まれる複数のスライス０を結合するストリーム結合処理を行い、次に、複数のスライス１を結合するストリーム結合処理を行い、次に、複数のスライス２を結合するストリーム結合処理を行う。そして、最後に、ストリーム結合部３３０ｂは、複数のスライスｎを結合するストリーム結合処理を行う。なお、ストリーム結合部３３０ｂによって行われるストリーム結合処理は、上述のストリーム結合部３３０による処理と同様である。
【０６３２】
そして、ストリーム結合部３３０ｂは、上述のように順次行われるストリーム結合処理によって生成される新たなスライス（再構成されたスライス）を順次出力する。その結果、ストリーム結合部３３０ｂから符号化ストリームが出力される。
【０６３３】
つまり、画像符号化装置３００ａは、画像データを符号化することにより符号化ストリームを生成する画像符号化装置であって、前記画像データに含まれるピクチャごとに、当該ピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成するＮ個の符号化部（エンコードエンジン３２０）と、前記符号化ストリームを構成する処理対象領域ごとに、Ｎ個の分割ストリームのそれぞれに含まれる、当該処理対象領域に対応する部分領域を結合することによって、前記処理対象領域である結合符号化領域を生成する結合処理を実行するストリーム結合部（３３０ｂ）とを備え、前記ストリーム結合部は、前記結合処理を行う際に、符号化された複数の前記構成単位から前記部分領域が構成されている場合には、前記部分領域を符号化された複数の前記構成単位に分割して組み替えることによって前記結合符号化領域を生成し、前記組み替えを行う際に、前記画像データに含まれるスライスが複数のスライス部分に分割および符号化されて前記Ｎ個の分割ストリームに割り当てられているときには、前記結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６３４】
なお、構成単位は例えばマクロブロックラインであり、処理対象領域は符号化ストリームのスライスなどであり、部分領域は分割ストリームのスライスなどである。
【０６３５】
図３８Ｂは、画像符号化装置３００ａの動作を示すフローチャートである。
【０６３６】
まず、画像符号化装置３００ａのＮ個のエンコードエンジン３２０は、画像データに含まれるピクチャごとに、当該ピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成する（ステップＳ３０）。次に、ストリーム結合部３３０ｂは、符号化ストリームを構成する処理対象領域ごとに、Ｎ個の分割ストリームのそれぞれに含まれる、当該処理対象領域に対応する部分領域を結合することによって、その処理対象領域である結合符号化領域を生成する結合処理を実行する（ステップＳ３１）。ここで、ステップＳ３１では、ストリーム結合部３３０ｂは、上述の結合処理を行う際に、符号化された複数の構成単位から部分領域が構成されている場合には、その部分領域を符号化された複数の前記構成単位に分割して組み替えることによって結合符号化領域を生成する。また、ストリーム結合部３３０ｂは、その組み替えを行う際に、画像データに含まれるスライスが複数のスライス部分に分割および符号化されてＮ個の分割ストリームに割り当てられているときには、結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６３７】
このように、ストリーム結合部が１つだけあるような場合であっても、そのストリーム結合部によるストリーム結合処理の速度が、Ｎ個のエンコードエンジン３２０による並列符号化処理の速度と同等か、それ以上であるようなときには、並列符号化処理による高い符号化処理性能を十分に発揮できるとともに、画像符号化装置の構成を簡単にすることができる。さらに、ストリーム結合制御部３４０、多重化部３５０およびＭ個の部分ストリームバッファ３６３などを備える必要がないため、全体的な画像符号化装置の構成および処理を簡単にすることができる。
【０６３８】
次に、上記実施の形態１および２に係る画像復号化装置の適用例について説明する。
【０６３９】
図３９は、上記実施の形態１および２に係る画像復号化装置、および上記実施の形態３に係る画像符号化装置の適用例を示す図である。
【０６４０】
例えば、上述の画像復号化装置および画像符号化装置は、図３９に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生・録画する再生・録画装置１０１に備えられる。再生・録画装置１０１は、ＢＳデジタル放送の放送波を受信するアンテナ１０１ａと装置本体１０１ｂとを備え、装置本体１０１ｂは上述の画像復号化装置および画像符号化装置を備える。
【０６４１】
装置本体１０１ｂに備えられた画像復号化装置は、アンテナ１０１ａによって受信された放送波から例えば４ｋ２ｋの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してＮ個の分割ストリームを生成し、Ｎ個の分割ストリームを並列に復号化する。
【０６４２】
また、装置本体１０１ｂに備えられた画像符号化装置は、画像復号化装置によって復号化された４ｋ２ｋのピクチャを並列に再符号化して、装置本体１０１ｂに備えられた記憶媒体に記録する。
【０６４３】
以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態を用いて説明したが、本発明は、これらに限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を上記実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０６４４】
例えば、上記実施の形態では、画像復号化装置１００、２００は分割ストリームバッファ１５２などを備えていたが、これらを備えていなくてもよい。
【０６４５】
図４０は、本発明に係る画像復号化装置の最小構成を示すブロック図である。
【０６４６】
画像復号化装置１０は、画像データが符号化された符号化ストリームを復号化する装置であって、本発明を実現するための最小構成を有し、第１の分割制御部１１、Ｍ個のストリーム分割部１２、第２の分割制御部１３、およびＮ個の復号化部１４を備えている。ここで、第１の分割制御部１１および第２の分割制御部１３を含む構成要素は、実施の形態１および２のストリーム分割制御部１４０に相当する。また、Ｍ個のストリーム分割部１２は、実施の形態１のＭ個のストリーム分割部１３０または実施の形態２のＭ個のストリーム分割部２３０に相当する。また、Ｎ個の復号化部１４は、実施の形態１のＮ個のデコードエンジン部１２０または実施の形態２のＮ個のデコードエンジン２２０に相当する。
【０６４７】
第１の分割制御部１１は、符号化ストリームに含まれる処理対象領域（例えば、スライスまたはピクチャなど）を指定する。つまり、第１の分割制御部１１は、その処理対象領域を示す振り分け制御情報を送信する。Ｍ個のストリーム分割部１２のそれぞれは、第１の分割制御部１１によって処理対象領域が指定されるごとに、その処理対象領域からＮ個（Ｎは２以上の整数）の分割ストリームの少なくとも一部を生成するストリーム分割処理を実行する。ここで、Ｍ個のストリーム分割部１２は、第１の分割制御部１１によって指定されたＭ個（Ｍは２以上の整数）の処理対象領域に対して上述のストリーム分割処理を並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成する。
【０６４８】
第２の分割制御部１３は、第１の分割制御部１１によって指定された処理対象領域ごとに、その処理対象領域の符号化ストリーム内における配置に基づいて、Ｍ個のストリーム分割部１２によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部を選択する。なお、上述の配置は、符号化ストリーム内で配置されている処理対象領域の順番などである。また、このように、Ｍ×Ｎ個の分割ストリームから少なくとも１つの分割ストリームの一部が選択されることは、実施の形態１および２のＭ個の分割ストリームバッファ１５２から１つの分割ストリームバッファ１５２が選択されることに相当する。そして、Ｎ個の復号化部１４は、第２の分割制御部１３によって選択された少なくとも１つの分割ストリームの一部を含む、Ｎ個の分割ストリームのそれぞれの一部を並列に復号化する。
【０６４９】
ここで、Ｍ個のストリーム分割部１２のそれぞれは、処理対象領域を複数の構成単位（例えば、マクロブロックライン）に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、上述のストリーム分割処理を実行する。また、Ｍ個のストリーム分割部１２のそれぞれは、処理対象領域を複数の構成単位に分割することによって、その処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６５０】
図４１は、画像復号化装置１０による画像復号化方法を示すフローチャートである。
【０６５１】
この画像復号化方法は、画像復号化装置１０が符号化ストリームを復号化する方法であって、符号化ストリームに含まれる処理対象領域を指定する第１の分割制御ステップＳ５０と、第１の分割制御ステップＳ５０によって処理対象領域が指定されるごとに、その処理対象領域からＮ個（Ｎは２以上の整数）の分割ストリームの少なくとも一部を生成するストリーム分割処理を、第１の分割制御ステップＳ５０によって指定されたＭ個（Ｍは２以上の整数）の処理対象領域に対して並列に実行することによって、Ｍ×Ｎ個の分割ストリームを生成するストリーム分割ステップＳ５１と、第１の分割制御ステップＳ５１によって指定された処理対象領域ごとに、その処理対象領域の符号化ストリーム内における配置に基づいて、ストリーム分割ステップＳ５１によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部を選択する第２の分割制御ステップＳ５２と、第２の分割制御ステップＳ５２によって少なくとも１つの分割ストリームの一部が選択されるごとに、当該少なくも１つの分割ストリームの一部を含む、Ｎ個の分割ストリームのそれぞれの一部を並列に復号化する復号化ステップＳ５３とを含む。ストリーム分割ステップＳ５１では、処理対象領域を複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、上述のストリーム分割処理を実行する。また、ストリーム分割ステップＳ５１では、処理対象領域を複数の構成単位に分割することによって、その処理対象領域に含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６５２】
このような画像復号化装置１０およびその画像復号化方法では、符号化されたピクチャまたはスライスなどの処理対象領域は例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化される。したがって、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【０６５３】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。また、複数のスライス部分のうち、符号化ストリームにおいて連続する少なくとも２つのスライス部分が、符号化ストリームに含まれる所定の符号語による依存関係を有する場合がある。
【０６５４】
そこで、画像復号化装置１０およびその画像復号化方法では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部１４は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、画像復号化装置１０およびその画像復号化方法では、Ｎ個の復号化部１４のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部１４に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【０６５５】
また、ここで示したストリーム分割処理は、Ｍ個のストリーム分割部１２によって、例えばスライス単位で並列に実行されるため、ストリーム分割部１２のそれぞれにおけるストリーム分割処理の負担を軽減することが出来る。さらに、第１の分割制御部１１によって、Ｍ個のストリーム分割部１２における処理量が均等になるように制御されるため、ストリーム分割処理の処理量がスライス毎に変動する場合であっても、ストリーム分割処理をＭ個のストリーム分割部１２で均等に負担することができる。
【０６５６】
また、ストリーム分割処理がＭ個の処理対象領域に対して並列に実行されるため、符号化ストリームのデータ量が大きい場合には、復号化部の数を増加し、並列処理の数を増加することによって、処理速度を上げることができるとともに、ストリーム分割部についても、その数を増加することができ、処理速度を上げることができる。
【０６５７】
また、画像復号化装置１０およびその画像復号化方法では、Ｍ個の処理対象領域がＭ個のストリーム分割部１２に対して指定される。つまり、処理対象領域を複数の構成単位（例えばマクロブロックライン）に分割するストリーム分割処理が、Ｍ個のストリーム分割部のそれぞれに対して振り分けられる。その結果、符号化ストリームに含まれる複数の処理対象領域の順序関係を、Ｍ個のストリーム分割部１２によって生成されるＭ×Ｎ個の分割ストリームにおいて維持することができなくなり、Ｍ×Ｎ個の分割ストリームをそのままを復号化することはできない。そこで、画像復号化装置１０およびその画像復号化方法では、指定された処理対象領域ごとに、その処理対象領域の配置、つまり符号化ストリームにおける処理対象領域の復号化の順序などに基づいて、Ｍ個のストリーム分割部１２によって生成されるＭ×Ｎ個の分割ストリームから、少なくとも１つの分割ストリームの一部が選択される。そして、その選択された一部を含むＮ個の分割ストリームのそれぞれの一部が並列に復号化される。したがって、正しい順序関係でＭ×Ｎ個の分割ストリームを復号化することができる。さらに、画像復号化装置１０およびその画像復号化方法では、処理対象領域の指定と、分割ストリームの一部の選択とが、Ｍ個のストリーム分割部１２およびＮ個の復号化部１４と異なる構成要素によって一元的に行われる。したがって、上述のように正しい順序関係でＭ×Ｎ個の分割ストリームを復号化するために、Ｍ個のストリーム分割部１２およびＮ個の復号化部１４などの各構成要素に対して、特別な処理および構成を要することなく、簡単な構成で復号化の並列処理を適切に実行することができる。
【０６５８】
したがって、画像復号化装置１０およびその画像復号化方法では、上記実施の形態における分割ストリームバッファ１５２などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０６５９】
図４２は、本発明に係る画像符号化装置の最小構成を示すブロック図である。
【０６６０】
画像符号化装置２０は、画像データを符号化することにより符号化ストリームを生成する装置であって、本発明を実現するための最小構成を有し、Ｎ個の符号化部２１、第１の結合制御部２２、Ｍ個のストリーム結合部２３、第２の結合制御部２４、および多重化部２５を備えている。ここで、第１の結合制御部２２および第２の結合制御部２４を含む構成要素は、実施の形態３のストリーム結合制御部３４０に相当する。また、Ｎ個の符号化部２１は、実施の形態３のＮ個のエンコードエンジン３２０に相当し、Ｍ個のストリーム結合部２３は、実施の形態３のＭ個のストリーム結合部３３０に相当する。また、多重化部２５は、実施の形態３の多重化部３５０に相当する。
【０６６１】
Ｎ個の符号化部２１は、画像データに含まれるピクチャごとに、そのピクチャに含まれるＮ個の構成単位（例えば、マクロブロックラインなど）を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成する。
【０６６２】
第１の結合制御部２２は、符号化ストリームを構成する処理対象領域（例えば、スライスまたはピクチャなど）を指定する。つまり、第１の結合制御部２２は、その処理対象領域を示す振り分け制御情報を送信する。
【０６６３】
Ｍ個のストリーム結合部２３は、Ｎ個の分割ストリームのそれぞれに含まれる、処理対象領域に対応する部分領域を結合することによって、処理対象領域である結合符号化領域を生成する結合処理を、第１の結合制御部２２によって指定されたＭ個の処理対象領域に対して並列に実行する。つまり、Ｍ個のストリーム結合部２３のそれぞれは、上述の結合処理（ストリーム結合処理）を並列に実行する。ここで、部分領域は、処理対象領域から分割された領域である。その処理対象領域に対応する各部分領域は、Ｎ個の符号化部２１による処理によって、Ｎ個の分割ストリームのそれぞれに含められている。これらの部分領域は、上述の結合処理によって１つの結合符号化領域となる。例えば、処理対象領域がスライスであれば、Ｎ個の符号化部２１によって、そのスライスが複数のスライス部分に分割され、上述の結合処理によって、結合符号化領域として新たなスライスが再構成される。なお、ストリーム結合部２３は、その結合符号化領域（スライス）を順次生成することによって、それらの結合符号化領域を含む部分ストリームを生成して出力する。
【０６６４】
第２の結合制御部２４は、第１の結合制御部２２によって指定されたＭ個の処理対象領域の符号化ストリーム内での配置に基づいて、Ｍ個のストリーム結合部２３によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域を順次選択する。例えば、その選択結果は、実施の形態３のように、選択情報として多重化部３５０に通知される。
【０６６５】
多重化部２５は、第２の結合制御部２４によって選択された順に、Ｍ個の結合符号化領域を多重化することによって符号化ストリームを生成する。
【０６６６】
ここで、Ｍ個のストリーム結合部３３０のそれぞれは、結合処理を行う際に、符号化された複数の構成単位（例えば、マクロブロックラインなど）から部分領域が構成されている場合には、その部分領域を符号化された複数の前記構成単位に分割して組み替えることによって上述の結合符号化領域を生成する。ここで、Ｍ個のストリーム結合部３３０のそれぞれは、組み替えを行う際に、画像データに含まれるスライスが複数のスライス部分に分割および符号化されてＮ個の分割ストリームに割り当てられているときには、結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６６７】
図４３は、画像符号化装置２０による画像符号化方法を示すフローチャートである。
【０６６８】
この画像符号化方法は、画像符号化装置２０が画像データを符号化することにより符号化ストリームを生成する方法であって、画像データに含まれるピクチャごとに、そのピクチャに含まれる複数の構成単位を並列に符号化することにより、Ｎ個（Ｎは２以上の整数）の分割ストリームを生成するＮ個の符号化ステップＳ６０と、符号化ストリームを構成する処理対象領域を指定する第１の結合制御ステップＳ６１と、Ｎ個の分割ストリームのそれぞれに含まれる、処理対象領域に対応する部分領域を結合することによって、処理対象領域である結合符号化領域を生成する結合処理を、第１の結合制御ステップＳ６１によって指定されたＭ個の処理対象領域に対して並列に実行するストリーム結合ステップＳ６２と、第１の結合制御ステップＳ６１によって指定されたＭ個の処理対象領域の符号化ストリーム内での配置に基づいて、ストリーム結合ステップＳ６２によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域を順次選択する第２の結合制御ステップＳ６３と、第２の結合制御ステップＳ６３によって選択された順に、Ｍ個の結合符号化領域を多重化することによって符号化ストリームを生成する多重化ステップＳ６４とを含む。
【０６６９】
ここで、ストリーム結合ステップＳ６２では、結合処理を行う際に、符号化された複数の構成単位から部分領域が構成されている場合には、その部分領域を符号化された複数の前記構成単位に分割して組み替えることによって上述の結合符号化領域を生成する。ここで、ストリーム結合ステップＳ６２では、組み替えを行う際に、画像データに含まれるスライスが複数のスライス部分に分割および符号化されてＮ個の分割ストリームに割り当てられているときには、結合符号化領域内において、符号化された複数のスライス部分からなるスライス部分群を新たなスライスとして再構成する。
【０６７０】
なお、画像符号化装置２０およびその画像符号化方法では、結合処理を並列に行ったが、シリアルに結合処理を行ってもよい。この場合には、画像符号化装置２０は、ストリーム結合部２３を１つだけ備える。
【０６７１】
このような画像符号化装置２０およびその画像符号化方法では、ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれがＮ個の符号化部に割り当てられて符号化される。したがって、Ｎ個の符号化部２１による符号化処理の負担を均等にすることができ、符号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャを１スライスで構成する場合であっても、ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの符号化を１つの符号化部２１で負担することなく、Ｎ個の符号化部２１で均等に負担することができる。
【０６７２】
さらに、結合処理は、第１の結合制御部２２による処理対象領域の指定によって、Ｍ個のストリーム結合部２３に対して処理対象領域単位で振り分けられるため、その結合処理をＭ個のストリーム結合部２３で並列に行うことができる。
【０６７３】
ここで、ピクチャが複数のマクロブロックラインに分割されて符号化されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が分割ストリームに順に割り当てられることがある。つまり、各分割ストリームには、スライスの断片であるスライス部分が分散されている。そのため、このように分散された複数のスライス部分は、画像データ内における前後関係を有していない。したがって、連続する複数のマクロブロックラインが、所定の符号語による依存関係を有する場合、分散された複数のスライス部分はその依存関係を保てなくなり、そのままでは符号化方式に準じた符号化ストリームを生成できない。そこで画像符号化装置２０およびその画像符号化方法では、結合処理において、その分散された複数のスライス部分の集合であるスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む結合符号化領域を符号化方式に準じた形式とすることができる。
【０６７４】
また、結合処理がＭ個のストリーム結合部２３に対して処理対象領域単位で振り分けられ、Ｍ個のストリーム結合部２３で並列に行われると、符号化ストリームに含まれる複数の処理対象領域の順序関係を、並列化された結合処理により生成されるＭ個の結合符号化領域（部分ストリーム）において維持することができなくなり、Ｍ個の結合符号化領域を正しい順序で多重化することができない。
【０６７５】
そこで、画像符号化装置２０およびその画像符号化方法では、指定された処理対象領域ごとに、その処理対象領域の配置、つまり符号化ストリームにおける処理対象領域の符号化の順序に基づいて、Ｍ個のストリーム結合部２３によって生成されるＭ個の結合符号化領域から、多重化されるべき結合符号化領域が順次選択される。そして、その選択された順にＭ個の結合符号化領域が多重化される。したがって、正しい順序関係でＭ個の結合符号化領域を多重化することができる。さらに、画像符号化装置２０およびその画像符号化方法では、処理対象領域の指定と、多重化されるべき結合符号化領域の選択とが、Ｍ個のストリーム結合部２３およびＮ個の符号化部２１と異なる構成要素によって一元的に行われる。したがって、上述のように正しい順序関係でＭ個の結合符号化領域を多重化するために、Ｍ個のストリーム結合部２３およびＮ個の符号化部２１などの各構成要素に対して、特別な処理および構成を要することなく、簡単な構成で符号化の並列処理を適切に実行することができる。
【０６７６】
したがって、画像符号化装置２０およびその画像符号化方法では、上記実施の形態における部分ストリームバッファ３６３などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０６７７】
なお、上記実施の形態１〜３では、１ＭＢラインを１つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は１ＭＢラインに限らず、２ＭＢラインや、３ＭＢラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがＭＢＡＦＦで構成されている場合には、２ＭＢラインを構成単位として扱い、ピクチャがＭＢＡＦＦで構成されていない場合には、１ＭＢラインを構成単位として扱ってもよい。
【０６７８】
また、上記実施の形態１および２では、ストリーム分割制御部が、Ｍ個のストリーム分割部に対してスライス単位で処理を振り分けたが、より大きな単位、例えばピクチャの単位、あるいは複数ピクチャをまとめたピクチャ群の単位で処理を振り分けてもよい。
【０６７９】
同様に、上記実施の形態３では、ストリーム結合制御部が、Ｍ個のストリーム結合部に対してスライス単位で処理を振り分けたが、より大きな単位、例えばピクチャの単位、あるいは複数ピクチャをまとめたピクチャ群の単位で処理を振り分けてもよい。
【０６８０】
また、上記実施の形態１および２では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のＭＢラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのＭＢラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
【０６８１】
また、上記実施の形態３では、ストリーム結合部がＳＰＳ、ＰＰＳ、およびスライスヘッダなどのヘッダ情報を生成して付与するものとしたが、他の処理部でヘッダ情報を生成して付与することとしてもよい。具体的には、Ｎ個のエンコードエンジンのそれぞれが分割ストリームを生成する際、スライスヘッダを付与した状態で分割ストリームを生成しても良い。その場合、ストリーム結合部で分割ストリームを結合する際、同一のスライスに対するスライスヘッダが重複することがあるが、その場合はストリーム結合部が不要なスライスヘッダを除去する。また、ＳＰＳ、ＰＰＳ、およびスライスヘッダの生成と付与は、多重化部が行うこととしてもよい。
【０６８２】
また、上記実施の形態１および２では、ストリーム分割部は、ＱＰ変化量の修正およびＱＰ変化量の挿入のどちらか一方を実行していたが、両方を実行してもよい。その場合、ストリーム分割部は、例えば、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいるか否かを判定すればよい。ここで、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいる場合、ストリーム分割部は、当該マクロブロックのＱＰ変化量の置き換え等を行えばよい（図２１のステップＳ３１８〜Ｓ３２２）。一方、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいない場合、ストリーム分割部は、累積ＱＰ変化量の出力等を行えばよい（図２８のステップＳ３５２〜Ｓ３５６）。
【０６８３】
さらに、ストリーム分割部がＱＰ変化量の修正およびＱＰ変化量の挿入の両方を実行する場合、スキップラン修正部は、例えば、ＭＢスキップラン情報がＭＢラインの先頭に位置しているときに、そのＭＢラインの先頭にＱＰ変化量が挿入されるか否かを判定することが好ましい。ここで、ＭＢラインの先頭にＱＰ変化量が挿入されない場合、スキップラン修正部は、ＭＢスキップラン情報に先行ＭＢスキップラン情報を加算すればよい（図１８のＳ２１０）。一方、ＭＢラインの先頭にＱＰ変化量が挿入される場合、先行ＭＢスキップラン情報とＭＢスキップラン情報とをそれぞれＭＢスキップラン情報として出力すればよい。
【０６８４】
また、上記実施の形態１〜３では、第１の符号語がＭＢスキップラン情報である場合について説明したが、必ずしも第１の符号語はＭＢスキップラン情報である必要はない。例えば、第１の符号語は、スキップマクロブロックとは異なる種類のマクロブロックが連続することを示す符号語であってもよい。
【０６８５】
また、上記実施の形態１〜３では、第２の符号語がＱＰ変化量である場合について説明したが、必ずしも第２の符号語はＱＰ変化量である必要はない。例えば、第２の符号語は、ＱＰ変化量とは異なる、マクロブロック間における符号化係数の変化量を示す符号語であってもよい。
【０６８６】
なお、ブロック図（図１、図１０、図１２、図１７、図２３、図２４、図２６、図２９、図３５、および図３８Ａなど）の各機能ブロックは典型的には集積回路であるＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）として実現される。これらは個別に１チップ化されても良いし、一部または全てを含むように１チップ化されても良い。例えば、図１のデコーダ１１０で表される部分（Ｍ個のストリーム分割部１３０と、第１デコードエンジン〜第Ｎデコードエンジン１２０とを含んだもの）が１チップに含まれていても良い。
【０６８７】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０６８８】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０６８９】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０６９０】
本発明の画像復号化装置および画像符号化装置は、簡単な構成で復号化および符号化の並列処理を適切に実行することができるという効果を奏し、例えば、４ｋ２ｋの符号化ストリームを復号化する再生装置や、４ｋ２ｋの動画像を符号化する記録装置などとして有用である。
【符号の説明】
【０６９１】
１０、１００、２００    画像復号化装置
１１    第１の分割制御部
１２、１３０、２３０    第１〜第Ｍストリーム分割部（ストリーム分割部）
１３    第２の分割制御部
１４    復号化部
２０、３００、３００ａ    画像符号化装置
２１    符号化部
２２    第１の結合制御部
２３、３３０、３３０ｂ    第１〜第Ｍストリーム結合部（ストリーム結合部）
２４    第２の結合制御部
２５、３５０    多重化部  １１０、２１０    デコーダ
１２０、２２０    第１〜第Ｎデコードエンジン（デコードエンジン）
１３０ｍ、３３０ｍ    処理管理部
１３１    スタートコード検出部
１３２ａ    ＥＰＢ除去部
１３２ｂ    ＥＰＢ挿入部
１３３    スライスヘッダ挿入部
１３３ａ    ＮＡＬタイプ判定部
１３３ｂ    ヘッダ挿入カウンタ
１３３ｃ    ヘッダアドレス更新部
１３３ｄ    ヘッダバッファ
１３４、１３４ａ、１３４ｂ    スライスデータ処理部
１３５ａ、１３５ｂ    スライスデータ層デコード部
１３６ａ、１３６ｂ    マクロブロック層デコード部
１３７ａ、２３７ａ    スキップラン修正部 
１３８、１３８ａ、１３８ｂ    ＱＰデルタ修正部
１３９、１３９ａ、１３９ｂ    分割点検出部
１４０    ストリーム分割制御部
１５０    メモリ
１５１    ストリームバッファ
１５２    第１〜第Ｍ分割ストリームバッファ（分割ストリームバッファ）
１５３    フレームメモリ
１６０    スキップラン抽出部
１６１    スキップラン分割部
１６２    スキップラン累積・保持部
１６３    加算部
１６４    スキップラン符号化部
２３８、２３８ａ、２３８ｂ    ＱＰデルタ挿入部
３１０    エンコーダ
３２０    第１〜第Ｎエンコードエンジン（エンコードエンジン）
３３１    スタートコード検出部
３３２ａ    ＥＰＢ除去部
３３２ｂ    ＥＰＢ挿入部
３３３    ヘッダ挿入部
３３４ａ、３３４ｂ    スライスデータ処理部
３３５ａ、３３５ｂ    スライスデータ層解析部
３３６ａ、３３６ｂ    マクロブロック層解析部
３３７ａ    スキップラン修正部
３３８、１３８ａ、１３８ｂ    ＱＰデルタ修正部
３３９ａ、３３９ｂ    分割点検出部
３４０    ストリーム結合制御部
３６０    メモリ
３６１    フレームメモリ
３６２    分割ストリームバッファ
３６３    第１〜第Ｍ部分ストリームバッファ（部分ストリームバッファ）
【図１】
2012014471.tif 000003
【図２Ａ】
2012014471.tif 000004
【図２Ｂ】
2012014471.tif 000005
【図３】
2012014471.tif 000006
【図４】
2012014471.tif 000007
【図５】
2012014471.tif 000008
【図６Ａ】
2012014471.tif 000009
【図６Ｂ】
2012014471.tif 000010
【図７】
2012014471.tif 000011
【図８】
2012014471.tif 000012
【図９】
2012014471.tif 000013
【図１０】
2012014471.tif 000014
【図１１】
2012014471.tif 000015
【図１２】
2012014471.tif 000016
【図１３】
2012014471.tif 000017
【図１４Ａ】
2012014471.tif 000018
【図１４Ｂ】
2012014471.tif 000019
【図１５】
2012014471.tif 000020
【図１６Ａ】
2012014471.tif 000021
【図１６Ｂ】
2012014471.tif 000022
【図１７】
2012014471.tif 000023
【図１８】
2012014471.tif 000024
【図１９Ａ】
2012014471.tif 000025
【図１９Ｂ】
2012014471.tif 000026
【図２０】
2012014471.tif 000027
【図２１】
2012014471.tif 000028
【図２２Ａ】
2012014471.tif 000029
【図２２Ｂ】
2012014471.tif 000030
【図２２Ｃ】
2012014471.tif 000031
【図２３】
2012014471.tif 000032
【図２４】
2012014471.tif 000033
【図２５】
2012014471.tif 000034
【図２６】
2012014471.tif 000035
【図２７】
2012014471.tif 000036
【図２８】
2012014471.tif 000037
【図２９】
2012014471.tif 000038
【図３０Ａ】
2012014471.tif 000039
【図３０Ｂ】
2012014471.tif 000040
【図３１】
2012014471.tif 000041
【図３２Ａ】
2012014471.tif 000042
【図３２Ｂ】
2012014471.tif 000043
【図３３】
2012014471.tif 000044
【図３４】
2012014471.tif 000045
【図３５】
2012014471.tif 000046
【図３６】
2012014471.tif 000047
【図３７Ａ】
2012014471.tif 000048
【図３７Ｂ】
2012014471.tif 000049
【図３８Ａ】
2012014471.tif 000050
【図３８Ｂ】
2012014471.tif 000051
【図３９】
2012014471.tif 000052
【図４０】
2012014471.tif 000053
【図４１】
2012014471.tif 000054
【図４２】
2012014471.tif 000055
【図４３】
2012014471.tif 000056
【図４４】
2012014471.tif 000057
【図４５】
2012014471.tif 000058
【図４６】
2012014471.tif 000059
【図４７】
2012014471.tif 000060
【図４８】
2012014471.tif 000061
【図４９】
2012014471.tif 000062
【図５０Ａ】
2012014471.tif 000063
【図５０Ｂ】
2012014471.tif 000064
【図５１】
2012014471.tif 000065
【図５２】
2012014471.tif 000066
【国際調査報告】
2012014471.tif 000067
2012014471.tif 000068
2012014471.tif 000069
2012014471.tif 000070
2012014471.tif 000071
2012014471.tif 000072