(57)【要約】符号化ストリームに含まれるピクチャ毎に、複数のＭＢラインに分割し、それぞれを複数の分割ストリームのうちの何れかの一部に割り当てることにより、並列に復号できる複数の分割ストリームを生成するストリーム分割部を備え、分割ストリーム部は、ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリーム毎に、その分割ストリームに割り当てられる複数のスライス部分からなるスライス部分群が、複号装置にスライスとして認識されるように再構成する。このとき、連続する２つのＭＢラインが、所定の符号語（例えばＱＰ値変化量やＭＢスキャップラン情報）による依存関係を有するときには、その依存関係が各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、符号語を分割ストリームに設定する。
2010067505.tif 000002
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第１の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第１の符号語が、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも２つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第１の符号語を、前記少なくとも２つの連続するスライス部分がそれぞれ割り当てられる少なくとも２つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、さらに、
各分割ストリームにおいて、設定される複数の第１の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第１の符号語を、前記複数の第１の符号語のそれぞれが示す個数の総和を示す１つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項２に記載の画像復号化装置。
【請求項４】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第２の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語が、符号化ストリームにおいて連続する２つのスライス部分に跨るブロック間の変化量を示すことにより、前記２つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記２つのスライス部分がそれぞれ割り当てられる２つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項５】
前記ストリーム分割部は、
計算した変化量に修正した前記第２の符号語を前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項６】
前記ストリーム分割部は、
計算した変化量を示す新たな符号語と前記第２の符号語とを前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項７】
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第２の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
第２の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を０にリセットする、
請求項８に記載の画像復号化装置。
【請求項１０】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１１】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１２】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データが符号化された符号化ストリームを復号化する画像復号化装置および画像復号化方法に関し、特に、復号化を並列に実行する画像復号化装置および画像復号化方法に関する。
【背景技術】
【０００２】
動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。【０００３】
図２８は、符号化されるピクチャの構成を示す図である。【０００４】
ピクチャは１６×１６画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位をマクロブロックライン（ＭＢライン）という。【０００５】
図２９は、符号化ストリームの構成を示す図である。【０００６】
符号化ストリームは、階層化されており、図２９の（ａ）に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット（ＳＰＳ）が含まれる。また、その符号化されたピクチャは、図２９の（ｂ）に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図２９の（ｃ）に示すように、ヘッダと、複数のマクロブロック（ＭＢ）とを含んで構成されている。なお、図２９の（ｂ）に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット（ＰＰＳ）が含まれる。【０００７】
図３０は、従来の画像復号化装置の構成を示す図である。【０００８】
画像復号化装置３００は、メモリ３１０およびデコードエンジン３２０を備えている。メモリ３１０は、符号化ストリームを記憶するための領域を有するストリームバッファ３１１と、デコードエンジン３２０から出力される復号画像データを記憶するための領域を有するフレームメモリ３１２とを備えている。画像復号化装置３００は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ３１１に格納する。【０００９】
デコードエンジン３２０は、そのストリームバッファ３１１から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ３１２に格納する。また、デコードエンジン３２０は、復号化するときには、フレームメモリ３１２に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。【００１０】
そして、フレームメモリ３１２に格納された復号画像データは、表示順に表示装置に出力されて表示される。【００１１】
図３１は、デコードエンジン３２０の構成を示す図である。【００１２】
デコードエンジン３２０は、エントロピー復号部３２１、逆変換部３２２、加算器３２３、デブロッキングフィルタ３２４、動き補償部３２５、重み付き予測部３２６、画面内予測部３２７、およびスイッチ３２８を備えている。【００１３】
エントロピー復号部３２１は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部３２２に出力する。【００１４】
逆変換部３２２は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。【００１５】
加算器３２３は、逆変換部３２２から出力された差分画像データと、重み付き予測部３２６または画面内予測部３２７からスイッチ３２８を介して出力された予測画像データとを加算することにより復号画像データを生成する。【００１６】
デブロッキングフィルタ３２４は、加算器によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ３１２に格納する。【００１７】
動き補償部３２５は、フレームメモリ３１２に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部３２６に出力する。【００１８】
重み付き予測部３２６は、動き補償部３２５から出力された予測画像データに重みを付けてスイッチ３２８に出力する。【００１９】
画面内予測部３２７は画面内予測を行う。つまり、画面内予測部３２７は、加算器３２３によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ３２８に出力する。【００２０】
スイッチ３２８は、逆変換部３２２から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部３２７から出力される予測画像データを加算器３２３に出力する。また、スイッチ３２８は、逆変換部３２２から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部３２６から出力される予測画像データを加算器３２３に出力する。【００２１】
ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、ＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる４ｋ２ｋ解像度による動画像の実用化が検討されている。【００２２】
図３２は、ＨＤおよび４ｋ２ｋを説明するための説明図である。【００２３】
ＨＤの符号化ストリームは、地上デジタル放送やＢＳデジタル放送などで配信されており、解像度「１９２０×１０８０画素」のピクチャが３０フレーム／秒のフレームレートで復号化されて表示される。４ｋ２ｋの符号化ストリームは、２０１１年から高度ＢＳデジタル放送で試験的に配信される予定であり、解像度「３８４０×２１６０画素」のピクチャが６０フレーム／秒のフレームレートで復号化されて表示される。【００２４】
つまり、４ｋ２ｋでは、ＨＤよりも縦および横のそれぞれで２倍の解像度を有し、且つ２倍のフレームレートを有する。【００２５】
さらに、縦および横のそれぞれで４ｋ２ｋの２倍に高解像度化された８ｋ４ｋの画像（７６８０×４３２０画素）の符号化および復号化が検討されようとしている。【００２６】
このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図３０に示す画像復号化装置３００のデコードエンジン３２０は、４ｋ２ｋの符号化ストリームを復号化する場合には、現実的には困難な１ＧＨｚ以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。【００２７】
図３３は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。【００２８】
画像復号化装置４００は、メモリ３１０およびデコーダ４２０を備えている。デコーダ４２０は、図３０および図３１に示すデコードエンジン３２０と同様の機能を有するデコードエンジン４２１をＮ個（例えばＮ＝４）備えている。Ｎ個のデコードエンジン４２１（第１デコードエンジン４２１〜第Ｎデコードエンジン４２１）のそれぞれは、ストリームバッファ３１１に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ３１２に出力する。【００２９】
図３４Ａおよび図３４Ｂは、復号化の並列処理の一例を説明するための説明図である。【００３０】
例えば、画像復号化装置４００は、４つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ３１１に格納する。これらの４つの領域符号化ストリームのそれぞれは、独立したストリームであり、図３４Ａに示すように、一つの画面が４等分されたうちの１つの領域の動画像を示すストリームである。画像復号化装置４００の４つのデコードエンジン４２１（例えばＮ＝４）はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ３１１から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。【００３１】
または、画像復号化装置４００は、４つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ３１１に格納する。４つのスライスは、図３４Ｂに示すように、ピクチャを縦方向に４等分することによって生成されている。画像復号化装置４００の４つのデコードエンジン４２１（例えばＮ＝４）はそれぞれ、自らが処理すべきスライスをストリームバッファ３１１から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。【００３２】
しかしながら、図３４Ａに示すように、１つの符号化ストリームを４つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。【００３３】
また、図３４Ｂに示すように、１つのピクチャを４等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。【００３４】
具体的には、動画像の符号化および復号化の規格であるＭＰＥＧ−２（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ｐｈａｓｅ  ２）では、ＭＢラインの境界で必ずスライスが分離されている。また、Ｈ．２６４／ＡＶＣでは、ピクチャに設定されるスライスの大きさや位置は任意であり、１ピクチャに１スライスしか設定されない場合もある。したがって、図３４Ｂに示すように、スライスの位置および大きさを一義的に設定してしまうことは、デジタル放送システムの運用規格など、システム全体の変更が必要となり、その負担は膨大である。【００３５】
そこで、そのような運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。【００３６】
例えば、特許文献１および特許文献２の画像復号化装置は、ＭＰＥＧ−２により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。【００３７】
また、特許文献３の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームのピクチャをＭＢラインごとに分離し、各ＭＢラインの復号化処理を並列に実行する。【００３８】
図３５は、特許文献３の画像復号化装置による復号化処理を説明するための説明図である。【００３９】
画像復号化装置の第１デコードエンジンは、ピクチャにある０行目のＭＢラインを復号化し、２番目のデコードエンジンは、ピクチャにある１行目のＭＢラインを復号化し、３番目のデコードエンジンは、ピクチャにある２行目のＭＢラインを復号化する。【００４０】
また、各デコードエンジンは、ＭＢラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。【００４１】
特許文献４の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームを取得すると、その符号化ストリームのＭＢラインの境界に行ヘッダを挿入し、各ＭＢラインの復号化処理を並列に実行する。この画像復号化装置のデコードエンジンのそれぞれは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出し、そのＭＢラインの復号化を実行する。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開平６−２２５２７８号公報
【特許文献２】特開平８−１３０７４５号公報
【特許文献３】特開２００６−１２９２８４号公報
【特許文献４】米国特許第７３０５０３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００４３】
しかしながら、上記特許文献１〜４の画像復号化装置では、復号化の並列処理を適切に実行できないという問題や、装置の構成が複雑になってしまうという問題がある。【００４４】
つまり、上記特許文献１および特許文献２の画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、Ｈ．２６４／ＡＶＣの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、１ピクチャが１スライスで構成されている場合には、そのピクチャを分割することができず、１つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。【００４５】
また、上記特許文献３および特許文献４の画像復号化装置では、Ｈ．２６４／ＡＶＣのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。【００４６】
そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
上記目的を達成するために、本発明の一態様に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、符号化ストリームを取得する取得部と、前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、前記ストリーム分割部は、前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する。【００４８】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。【００４９】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。【００５０】
そのため、このようなスライス部分群では、符号化ピクチャが分割される前に対してマクロブロックライン単位での前後関係が変化している。したがって、連続する複数のマクロブロックラインが、所定の符号語による依存関係を有する場合、その依存関係が保てなくなり、そのままでは復号化部は分割ストリームを復号化できない。【００５１】
そこで本発明では、このようなスライス部分群内で連続するマクロブロックラインの新たな前後関係に従って分割ストリームに符号語を設定する。これにより、スライス部分群は新たなスライスとして再構成されるため、そのスライス部分群を含む分割ストリームを復号化する復号化部は、そのスライス部分群を認識するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識することができる。つまり、本発明では、Ｎ個の復号化部のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置の全体構成を簡単にすることができる。【００５２】
また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第１の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第１の符号語が、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも２つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第１の符号語を、前記少なくとも２つの連続するスライス部分がそれぞれ割り当てられる少なくとも２つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。【００５３】
これにより、符号化ストリームに第１の符号語が含まれる場合であっても、第１の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第１の符号語を適切に復号化することができる。【００５４】
また、前記ストリーム分割部は、さらに、各分割ストリームにおいて、設定される複数の第１の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第１の符号語を、前記複数の第１の符号語のそれぞれが示す個数の総和を示す１つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。【００５５】
これにより、符号化ストリームに第１の符号語が含まれ、かつ再構成前には分割ストリーム内で第１の符号語が連続する場合であっても、第１の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第１の符号語を適切に復号化することができる。【００５６】
また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第２の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第２の符号語が、符号化ストリームにおいて連続する２つのスライス部分に跨るブロック間の変化量を示すことにより、前記２つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記２つのスライス部分がそれぞれ割り当てられる２つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。【００５７】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、符号語が分割ストリームに設定される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。【００５８】
また、前記ストリーム分割部は、計算した変化量に修正した前記第２の符号語を前記分割ストリームに設定するとしてもよい。【００５９】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、第２の符号語が修正される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。【００６０】
また、前記ストリーム分割部は、計算した変化量を示す新たな符号語と前記第２の符号語とを前記分割ストリームに設定するとしてもよい。【００６１】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、分割ストリームに新たな符号語が挿入される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。【００６２】
また、前記ストリーム分割部は、前記符号化ストリームに含まれる第２の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。【００６３】
これにより、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を簡易な方法で計算することができる。【００６４】
また、前記ストリーム分割部は、前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第２の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。【００６５】
また、前記ストリーム分割部は、第２の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を０にリセットすることが好ましい。【００６６】
これにより、各ブロックの符号化係数を復元することなく、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算することができるため、ストリーム分割部の構成を簡単にすることが出来る。【００６７】
なお、本発明は、このような画像復号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００６８】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという作用効果を奏する。
【図面の簡単な説明】
【００６９】
【図１】図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【図２Ｂ】図２Ｂは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【図３】図３は、本発明の実施の形態１におけるスライスヘッダの挿入処理を説明するための説明図である。
【図４】図４は、本発明の実施の形態１におけるＭＢアドレス情報の更新処理を説明するための説明図である。
【図５】図５は、本発明の実施の形態１におけるスライス終端処理を説明するための説明図である。
【図６】図６は、本発明の実施の形態１における画像復号化装置の全体的な動きを示すフローチャートである。
【図７】図７は、本発明の実施の形態１におけるストリーム分割部の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態１におけるスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。
【図９】図９は、本発明の実施の形態１におけるスライスヘッダ挿入部の構成を示すブロック図である。
【図１０】図１０は、本発明の実施の形態１における分割ストリームバッファの第１領域〜第４領域に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【図１１Ａ】図１１Ａは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１１Ｂ】図１１Ｂは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１２】図１２は、本発明の実施の形態１における分割点検出部の動作を示すフローチャートである。
【図１３Ａ】図１３Ａは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１３Ｂ】図１３Ｂは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１４】図１４は、本発明の実施の形態１におけるスキップラン修正部の構成を示すブロック図である。
【図１５】図１５は、本発明の実施の形態１におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図１６Ａ】図１６Ａは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図１６Ｂ】図１６Ｂは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図１７】図１７は、本発明の実施の形態１におけるＱＰ変化量の累積を説明するための説明図である。
【図１８】図１８は、本発明の実施の形態１におけるＱＰデルタ修正部によるＱＰ変化量の修正処理を示すフローチャートである。
【図１９Ａ】図１９Ａは、本発明の実施の形態１における高解像度デコードを説明するための説明図である。
【図１９Ｂ】図１９Ｂは、本発明の実施の形態１における高速デコードを説明するための説明図である。
【図１９Ｃ】図１９Ｃは、本発明の実施の形態１における複数チャンネルデコードを説明するための説明図である。
【図２０】図２０は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。
【図２１】図２１は、本発明の実施の形態２におけるストリーム分割部の構成を示すブロック図である。
【図２２】図２２は、本発明の実施の形態２におけるＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【図２３】図２３は、本発明の実施の形態２におけるスキップラン修正部の構成を示すブロック図である。
【図２４】図２４は、本発明の実施の形態２におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図２５】図２５は、本発明の実施の形態２におけるＱＰデルタ挿入部による累積ＱＰ変化量の挿入処理を示すフローチャートである。
【図２６】図２６は、本発明の実施の形態に係る画像復号化装置の適用例を示す図である。
【図２７】図２７は、本発明の実施の形態に係る画像復号化装置の最小構成を示すブロック図である。
【図２８】図２８は、符号化されるピクチャの構成を示す図である。
【図２９】図２９は、符号化ストリームの構成を示す図である。
【図３０】図３０は、従来の画像復号化装置の構成を示す図である。
【図３１】図３１は、従来のデコードエンジンの構成を示す図である。
【図３２】図３２は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【図３３】図３３は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。
【図３４Ａ】図３４Ａは、従来の復号化並列処理の一例を説明するための説明図である。
【図３４Ｂ】図３４Ｂは、従来の復号化並列処理の一例を説明するための説明図である。
【図３５】図３５は、従来の画像復号化装置による復号化処理を説明するための説明図である。
【発明を実施するための形態】
【００７０】
以下、本発明の実施の形態における画像復号化装置について図面を参照しながら説明する。
【００７１】
（実施の形態１）
図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【００７２】
本実施の形態における画像復号化装置１００は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ１１０とメモリ１５０とを備えている。
【００７３】
メモリ１５０は、デコーダ１１０に入力されるデータ、デコーダ１１０により中間的に生成されたデータ、およびデコーダ１１０により最終的に生成されて出力されるデータを記憶するための領域を有する。
【００７４】
具体的には、メモリ１５０は、ストリームバッファ１５１と、分割ストリームバッファ１５２と、フレームメモリ１５３とを備えている。
【００７５】
ストリームバッファ１５１には、画像符号化装置により生成されて送信された符号化ストリームが格納される。つまり、本実施の形態では、このストリームバッファ１５１が符号化ストリームを取得する取得部として構成されている。分割ストリームバッファ１５２には、デコーダ１１０により生成されるＮ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。フレームメモリ１５３には、Ｎ個のデコードエンジン（復号化部）１２０によって生成されたＮ個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ１５３に格納され、表示装置に読み込まれて動画像として表示される。
【００７６】
デコーダ１１０は、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ１１０は、ストリーム分割部１３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）１２０とを備えている。
【００７７】
なお、本実施の形態におけるデコードエンジン１２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有する。
【００７８】
ストリーム分割部１３０は、後述するモード情報を取得し、そのモード情報に応じて符号化ストリームをＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）に分割する。つまり、本実施の形態におけるストリーム分割部１３０は、符号化ストリームに含まれる符号化されたピクチャごとに、そのピクチャを複数のＭＢラインに分割する。そして、ストリーム分割部１３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。
【００７９】
なお、ＭＢラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位である。また、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されていない場合には、ピクチャを複数のＭＢラインに分割するが、ピクチャがＭＢＡＦＦで構成されている場合には、２つのＭＢラインを１つの構成単位（以下、ＭＢラインペアという）として扱い、ピクチャを複数のＭＢラインペアに分割する。言い換えれば、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦで構成されている場合には、ピクチャを複数のＭＢラインに分割し、ＭＢラインペアに属する２つのＭＢラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがＭＢＡＦＦで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがＭＢＡＦＦで構成されていない場合と、ＭＢＡＦＦで構成されている場合とで異なる処理が必要なときには、その都度、ＭＢＡＦＦに対して特有の処理を説明する。また、ＭＢＡＦＦに対してその特有な処理などが必要とされない場合には、以下の説明において、ＭＢラインをＭＢラインペアに置き換えることによって、その説明を、ピクチャがＭＢＡＦＦで構成されている場合における本発明の説明に置き換えることができる。
【００８０】
ストリーム分割部１３０は、ピクチャを複数のＭＢラインに分割する際に、符号化ストリーム中のＭＢラインの直前、または、そのＭＢラインに属する２つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのＭＢラインに付随させて、分割ストリームの一部に割り当てる。
【００８１】
このようなストリーム分割部１３０によるＭＢラインごとの分割によって、ピクチャに含まれる、複数のＭＢラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部１３０は、Ｎ個の分割ストリームに分割するときには、Ｎ個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
【００８２】
Ｎ個のデコードエンジン１２０は、それぞれ自らが処理すべき分割ストリームを分割ストリームバッファ１５２から読み出し、読み出した分割ストリームを並列に復号化することによりＮ個の分割復号画像データを生成する。例えば、第１デコードエンジン１２０は第１分割ストリームを分割ストリームバッファ１５２から読み出し、第２デコードエンジン１２０は第２分割ストリームを分割ストリームバッファ１５２から読み出し、第３デコードエンジン１２０は第３分割ストリームを分割ストリームバッファ１５２から読み出し、第４デコードエンジン１２０は第４分割ストリームを分割ストリームバッファ１５２から読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【００８３】
また、Ｎ個のデコードエンジン１２０は、分割ストリームを復号化するときには、フレームメモリ１５３に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
【００８４】
さらに、Ｎ個のデコードエンジン１２０のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン１２０から、それらの復号化されたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したデコードエンジン１２０は、その隣接ＭＢ情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン１２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【００８５】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のデコードエンジン１２０はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接ＭＢ情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
【００８６】
図２Ａは、ピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【００８７】
ピクチャがＭＢＡＦＦで構成されていない場合、第１デコードエンジン１２０は第０ＭＢラインを復号化し、第２デコードエンジン１２０が第１ＭＢラインを復号化し、第３デコードエンジン１２０が第２ＭＢラインを復号化し、第４デコードエンジン１２０が第３ＭＢラインを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【００８８】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインの復号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインの左端のマクロブロックの復号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインの左端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインの左端のマクロブロックの復号化を開始する。
【００８９】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
【００９０】
図２Ｂは、ピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【００９１】
ピクチャがＭＢＡＦＦで構成されている場合、ＭＢラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列（ＭＢライン）を２つ有する構成単位である。ＭＢラインペアは、上下にある２つのマクロブロック（マクロブロックペア）ごとに、適応的にフレーム／フィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがＭＢＡＦＦで構成されていない場合と同様に、第１デコードエンジン１２０は第０ＭＢラインペアを復号化し、第２デコードエンジン１２０が第１ＭＢラインペアを復号化し、第３デコードエンジン１２０が第２ＭＢラインペアを復号化し、第４デコードエンジン１２０が第３ＭＢラインペアを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【００９２】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインペアの復号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインペアの左上端のマクロブロックの復号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインペアの左上端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインペアの左上端のマクロブロックの復号化を開始する。
【００９３】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
【００９４】
なお、ピクチャがＭＢＡＦＦで構成されていない場合、および、ピクチャがＭＢＡＦＦで構成されている場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて復号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて復号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
【００９５】
このような本実施の形態における画像復号化装置１００の特徴は、ストリーム分割部１３０による分割によって生成された、スライスの１つまたは複数の部分（スライス部分）からなるスライス部分群を１つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、ＭＢアドレス情報の更新処理、スキップラン修正処理、およびＱＰデルタ設定処理を含む。また、ＱＰデルタ設定処理は、ＱＰデルタ修正処理およびＱＰデルタ挿入処理を含む。なお、本実施の形態では、ＱＰデルタ設定処理がＱＰデルタ修正処理である場合について説明する。
【００９６】
図３は、スライスヘッダの挿入処理を説明するための説明図である。
【００９７】
例えば、ストリーム分割部１３０は、図３の（ａ）に示すピクチャｐ１を分割する。
【００９８】
ピクチャｐ１は、スライスＡ、スライスＢおよびスライスＣから構成されているとともに、ＭＢラインＬ１〜Ｌ１２から構成されている。
【００９９】
スライスＡは、ＭＢラインＬ１〜Ｌ７にわたって配置され、スライスヘッダｈａと、そのスライスヘッダｈａから連続して配置されている複数のマクロブロックｍｂａとを有する。スライスＢは、ＭＢラインＬ７〜Ｌ８にわたって配置され、スライスヘッダｈｂと、そのスライスヘッダｈｂから連続して配置されている複数のマクロブロックｍｂｂとを有する。スライスＣは、ＭＢラインＬ９〜Ｌ１２にわたって配置され、スライスヘッダｈｃと、そのスライスヘッダｈｃから連続して配置されている複数のマクロブロックｍｂｃとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
【０１００】
ストリーム分割部１３０は、図３の（ｂ）に示すように、上述のピクチャｐ１をＭＢラインごとに分割する。そして、ストリーム分割部１３０は、ＭＢラインＬ１〜Ｌ１２のそれぞれを先頭から順に、第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部１３０は、ＭＢラインＬ１を第１分割ストリームの一部に割り当て、ＭＢラインＬ２を第２分割ストリームの一部に割り当て、ＭＢラインＬ３を第３分割ストリームの一部に割り当て、ＭＢラインＬ４を第４分割ストリームの一部に割り当てる。そして、ストリーム分割部１３０は、第４分割ストリームへのＭＢラインの割り当てが終了すると、第１分割ストリームへのＭＢラインの割り当てを繰り返す。つまり、ストリーム分割部１３０は、ＭＢラインＬ５を第１分割ストリームの一部に割り当て、ＭＢラインＬ６を第２分割ストリームの一部に割り当て、ＭＢラインＬ７を第３分割ストリームの一部に割り当て、ＭＢラインＬ８を第４分割ストリームの一部に割り当てる。
【０１０１】
その結果、第１分割ストリームは連続するＭＢラインＬ１、Ｌ５、Ｌ９を含み、第２分割ストリームは連続するＭＢラインＬ２、Ｌ６、Ｌ１０を含み、第３分割ストリームは連続するＭＢラインＬ３、Ｌ７、Ｌ１１を含み、第４分割ストリームは連続するＭＢラインＬ４、Ｌ８、Ｌ１２を含む。
【０１０２】
なお、ＭＢラインＬ１〜Ｌ６と、ＭＢラインＬ７の先頭側の６マクロブロックからなる集合と、ＭＢラインＬ７の終端側の１０マクロブロックからなる集合と、ＭＢラインＬ８〜Ｌ１２とは、それぞれスライスＡ〜Ｃの一部を構成するスライス部分である。そして、第１分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ１、Ｌ５からスライス部分群（第１分割ストリームにおけるスライスＡ）が構成される。また、第２分割ストリームでは、スライスＢのスライス部分であるＭＢラインＬ２、Ｌ６からスライス部分群（第２分割ストリームにおけるスライスＢ）が構成される。
【０１０３】
ここで、単純にＭＢラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン１２０に認識させることができない場合がある。
【０１０４】
例えば、第１分割ストリームには、上述のように連続するＭＢラインＬ１、Ｌ５、Ｌ９が含まれている。この場合、ＭＢラインＬ１、Ｌ５はスライスＡとして認識されるべきであり、ＭＢラインＬ９はスライスＣとして認識されるべきである。そのためには、第１分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ１の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第１分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ９の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。図３に示す例では、スライスヘッダｈａ、ｈｃがそれぞれＭＢラインＬ１、Ｌ９の先頭に予め配されているため、ストリーム分割部１３０はＭＢラインＬ１、Ｌ５、Ｌ９をスライスヘッダｈａ、ｈｃとともに第１分割ストリームに割り当てればよい。
【０１０５】
一方、第２分割ストリームには、上述のように連続するＭＢラインＬ２、Ｌ６、Ｌ１０が含まれている。この場合、ＭＢラインＬ２、Ｌ６はスライスＡとして認識されるべきであり、ＭＢラインＬ１０はスライスＣとして認識されるべきである。そのためには、第２分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ２の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第２分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ１０の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。
【０１０６】
そこで、本実施の形態におけるストリーム分割部１３０は、ＭＢラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダｈａ、ｈｂ、ｈｃを複製することにより複製スライスヘッダｈａ’、ｈｂ’、ｈｃ’を生成し、それらを分割ストリームに挿入する。
【０１０７】
例えば、ストリーム分割部１３０は、スライスヘッダｈａを複製することにより３つの複製スライスヘッダｈａ’を生成し、その複製スライスヘッダｈａ’をＭＢラインＬ２、Ｌ３、Ｌ４の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｂを複製することにより１つの複製スライスヘッダｈｂ’を生成し、その複製スライスヘッダｈｂ’をＭＢラインＬ８の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｃを複製することにより３つの複製スライスヘッダｈｃ’を生成し、その複製スライスヘッダｈｃ’をＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。
【０１０８】
その結果、第２分割ストリームでは、スライスＡの先頭となるＭＢラインＬ２の直前に、スライスＡのスライスヘッダｈａの複製である複製スライスヘッダｈａ’が配置され、スライスＣの先頭となるＭＢラインＬ１０の直前に、スライスＣのスライスヘッダｈｃの複製である複製スライスヘッダｈｃ’が配置される。これにより、第２デコードエンジン１２０は、複製スライスヘッダｈａ’、ｈｃ’から、第２分割ストリームのスライスＡおよびスライスＣのそれぞれの復号化に必要なパラメータを得ることができる。
【０１０９】
次に、ＭＢアドレス情報の更新処理について説明する。
【０１１０】
ストリーム分割部１３０は、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１１１】
つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのＭＢアドレス情報と同一のＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
【０１１２】
例えば、ピクチャｐ１のスライスＡのスライスヘッダｈａには、そのスライスＡの先頭マクロブロック（ＭＢラインＬ１の先頭マクロブロック）のピクチャｐ１内におけるアドレスを示すＭＢアドレス情報が含まれている。このようなスライスヘッダｈａが複製されることによって生成された複製スライスヘッダｈａ’には、当初、ＭＢラインＬ１の先頭マクロブロックのピクチャｐ１内におけるアドレスを特定するためのＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダｈａ’が、ＭＢラインＬ２の直前に挿入されれば、その複製スライスヘッダｈａ’のＭＢアドレス情報により特定されるアドレスは、第２分割ストリームにおいてその複製スライスヘッダｈａ’を有するスライスＡの先頭マクロブロック（ＭＢラインＬ２の先頭マクロブロック）のピクチャｐ１内におけるアドレスを指し示さず、ＭＢラインＬ１の先頭マクロブロックのアドレスを指し示している。
【０１１３】
そこで、本実施の形態におけるストリーム分割部１３０は、上述のように、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１１４】
図４は、ＭＢアドレス情報の更新処理を説明するための説明図である。
【０１１５】
ストリーム分割部１３０は、まず、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）から、ピクチャの水平方向のマクロブロックの数に関連する情報である“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”を取得する。
【０１１６】
さらに、ストリーム分割部１３０は、複製元のスライスヘッダに含まれるＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
【０１１７】
次に、ストリーム分割部１３０は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のＭＢラインにあるかを示す値“ｍｂｐｏｓｖ”を算出する。なお、値“ｍｂｐｏｓｖ”は０以上の整数である。
【０１１８】
そして、ストリーム分割部１３０は、直前に複製スライスヘッダが挿入されるＭＢラインが、複製元のスライスヘッダが配置されているＭＢラインから見てｎ行離れているときには、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１１９】
なお、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されている場合には、ストリーム分割部１３０は、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１２０】
ストリーム分割部１３０は、複製スライスヘッダに当初含まれているＭＢアドレス情報を、上述のように算出されたＭＢアドレス情報に更新する。これにより、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
【０１２１】
次に、スライス終端処理について説明する。
【０１２２】
符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図３に示すように、単純に、ピクチャが複数のＭＢラインに分割され、その複数のＭＢラインがそれぞれ第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン１２０に認識させることができない場合がある。
【０１２３】
そこで、本実施の形態におけるストリーム分割部１３０は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
【０１２４】
図５は、スライス終端処理を説明するための説明図である。
【０１２５】
例えば、図５の（ａ）に示すように、符号化ストリームのピクチャｐ１に含まれるスライスＣは、スライスヘッダｈｃと、ＭＢラインＬ９〜Ｌ１２と、スライス終端情報ｅｃとを含んでいる。
【０１２６】
ストリーム分割部１３０はピクチャｐ１をＭＢラインごとに分割する。その結果、図５の（ｂ）〜（ｅ）に示すように、ＭＢラインＬ９はスライスヘッダｈｃと共に第１分割ストリームに割り当てられ、ＭＢラインＬ１０は第２分割ストリームに割り当てられ、ＭＢラインＬ１１は第３分割ストリームに割り当てられ、ＭＢラインＬ１２は第４分割ストリームに割り当てられる。
【０１２７】
さらに、ストリーム分割部１３０は、上述のスライスヘッダの挿入処理により、スライスヘッダｈｃを複製して３つの複製スライスヘッダｈｃ’を生成し、それらの３つの複製スライスヘッダｈｃ’をそれぞれ、第２分割ストリーム〜第４分割ストリームのＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。また、ストリーム分割部１３０は、上述のＭＢアドレス情報の更新処理により、挿入される複製スライスヘッダｈｃ’の位置に応じて、その複製スライスヘッダｈｃ’に含まれるＭＢアドレス情報を更新する。
【０１２８】
ここで、ストリーム分割部１３０は、スライス終端処理として、第１分割ストリームにおけるスライスＣ（ＭＢラインＬ９）の終端、第２分割ストリームにおけるスライスＣ（ＭＢラインＬ１０）の終端、第３分割ストリームにおけるスライスＣ（ＭＢラインＬ１１）の終端、および第４分割ストリームにおけるスライスＣ（ＭＢラインＬ１２）の終端を示すスライス終端情報ｅｃ’を生成する。そして、ストリーム分割部１３０は、その生成されたスライス終端情報ｅｃ’を、第１分割ストリーム〜第４分割ストリームのＭＢラインＬ９、Ｌ１０、Ｌ１１、Ｌ１２の直後に設定する。なお、ストリーム分割部１３０は、符号化ストリームをＭＢラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ｅｃを破棄している。また、スライス終端情報ｅｃとスライス終端情報ｅｃとが同一の情報であれば、最終的には、ＭＢラインＬ１２はスライス終端情報ｅｃ’（ｅｃ）と共に第４分割ストリームに割り当てられることになる。
【０１２９】
これにより、各デコードエンジン１２０は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
【０１３０】
図６は、本実施の形態における画像復号化装置１００の全体的な動きを示すフローチャートである。
【０１３１】
まず、画像復号化装置１００は、符号化ストリームを取得し（ステップＳ１０）、その符号化ストリームから処理対象となる符号化されたピクチャを特定する（ステップＳ１２）。さらに、画像復号化装置１００は、処理対象のピクチャを分割することにより１つのＭＢラインを抽出する（ステップＳ１４）。なお、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがあれば、そのＭＢラインはそのスライスヘッダと共に抽出される。
【０１３２】
次に、画像復号化装置１００は、ステップＳ１４の分割によって抽出された１つのＭＢラインを、生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる前に、スライス再構成処理をする必要があるか否か（そのＭＢラインの直前にスライスヘッダを挿入する必要があるか否か、既に割り当てられているＭＢラインの直後にスライス終端情報を設定する必要があるか否か、ＭＢスキップラン情報を修正する必要があるか否か、および、ＱＰ変化量を設定する必要があるか否か）を判別する（ステップＳ１６）。
【０１３３】
画像復号化装置１００は、ステップＳ１６で、スライス再構成処理をする必要があると判別したときには（ステップＳ１６のＹｅｓ）、スライス再構成処理を実行する（ステップＳ１８）。つまり、画像復号化装置１００は、上述のスライスヘッダの挿入処理、スライス終端処理、スキップラン修正処理およびＱＰデルタ設定処理の少なくとも１つを実行する。また、画像復号化装置１００は、スライスヘッダの挿入処理を実行するときには、ＭＢアドレス情報の更新処理も実行する。
【０１３４】
そして、画像復号化装置１００は、そのＭＢラインを生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる（ステップＳ２０）。このステップＳ２０が繰り返し行われることによって、第１〜第Ｎ分割ストリームのそれぞれにＭＢラインが順次割り当てられ、第１〜第Ｎ分割ストリームが生成される。
【０１３５】
画像復号化装置１００は、第１〜第Ｎ分割ストリームのそれぞれに割り当てられたＭＢラインを並列に復号化する（ステップＳ２２）。なお、第１〜第Ｎ分割ストリームのうちの何れかの分割ストリームにＭＢラインが割り当てられていない場合には、画像復号化装置１００は、そのＭＢラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
【０１３６】
次に、画像復号化装置１００は、ピクチャに含まれる全てのＭＢラインを割り当てたか否かを判別し（ステップＳ２４）、割り当てていないと判別したときには（ステップＳ２４のＮｏ）、ステップＳ１４からの処理を繰り返し実行する。一方、画像復号化装置１００は、全てのＭＢラインを割り当てたと判別したときには（ステップＳ２４のＹｅｓ）、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する（ステップＳ２６）。ここで、画像復号化装置１００は、全てのピクチャを分割していないと判別したときには（ステップＳ２６のＮｏ）、ステップＳ１２からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには（ステップＳ２６のＹｅｓ）、復号化処理を終了する。
【０１３７】
なお、図６のフローチャートに示される処理動作は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
【０１３８】
例えば、図６のフローチャートでは、画像復号化装置１００のストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン１２０に複製スライスヘッダを直接渡してもよい。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、ＭＢアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン１２０が、分割ストリームに含まれている複製スライスヘッダのＭＢアドレス情報を更新する。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップＳ２０でＭＢラインが第１〜第Ｎ分割ストリームの何れかに割り当てられた後であって、次の新たなＭＢラインがストリーム分割部１３０からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているＭＢラインに対してスライス終端処理が行われてもよい。
【０１３９】
ここで、ストリーム分割部１３０の構成および動作について詳細に説明する。
【０１４０】
図７は、ストリーム分割部１３０の構成を示すブロック図である。
【０１４１】
ストリーム分割部１３０は、スタートコード検出部１３１、ＥＰＢ除去部１３２ａ、ＥＰＢ挿入部１３２ｂ、スライスヘッダ挿入部１３３、およびスライスデータ処理部１３４ａ、１３４ｂを備えている。
【０１４２】
スタートコード検出部１３１は、ストリームバッファ１５１から符号化ストリームを読み出して、ＮＡＬユニットごとにスタートコードを検出する。
【０１４３】
ＥＰＢ除去部１３２ａは、ＥＰＢ（エミュレーション防止バイト）を符号化ストリームから除去し、ＥＰＢが除去された符号化ストリームをスライスデータ処理部１３４ａ、１３４ｂに出力する。さらに、ＥＰＢ除去部１３２ａは、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）およびＰＰＳ（ピクチャパラメータセット）などのスライスより上層の情報を取得し、その情報が４つの分割ストリームのそれぞれに挿入されるように、その情報をＥＰＢ挿入部１３２ｂに出力する。
【０１４４】
ＥＰＢ挿入部１３２ｂは、符号化ストリームが分割されることによって生成される分割ストリームに、ＥＰＢ除去部１３２ａによって除去されたＥＰＢを挿入する。
【０１４５】
スライスヘッダ挿入部１３３は、上述のスライスヘッダの挿入処理およびＭＢアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部１３３は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４ａ、１３４ｂに送り、スライスデータ処理部１３４ａ、１３４ｂから終端処理完了通知Ｍ２を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部１３３は、スライスヘッダの挿入処理によって、ＭＢラインの直前にあるスライスヘッダと、ＭＢアドレス情報が更新された複製スライスヘッダとをＥＰＢ挿入部１３２ｂに出力する。
【０１４６】
スライスデータ処理部１３４ａ、１３４ｂは、ＥＰＢが除去された符号化ストリームを分割することにより４つの分割ストリームを生成し、その４つの分割ストリームを出力する。なお、スライスデータ処理部１３４ａ、１３４ｂから出力される分割ストリームには、上述のＭＢラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部１３４ａは、ＣＡＶＬＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。また、スライスデータ処理部１３４ｂは、ＣＡＢＡＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。
【０１４７】
スライスデータ処理部１３４ａは、スライスデータ層デコード部１３５ａ、マクロブロック層デコード部１３６ａ、スキップラン修正部１３７ａ、ＱＰデルタ修正部１３８ａおよび分割点検出部１３９ａを備えている。
【０１４８】
スライスデータ層デコード部１３５ａは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部１３６ａは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報（具体的には、ＣＡＶＬＣのｎＣ（ｎｏｎ−ｚｅｒｏ  ｃｏｅｆｆｉｃｉｅｎｔ）など）のみを復号化してもよい。
【０１４９】
スキップラン修正部１３７ａは、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。すなわち、スキップラン修正部１３７ａは、ＭＢスキップラン情報が、符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すときには、その連続するブロックの個数を分割し、スライス部分ごとのブロックの個数を示すように修正したＭＢスキップラン情報を、少なくとも２つの連続するスライス部分がそれぞれ割り当てられる分割ストリームに設定する。さらに、スキップラン修正部１３７ａは、各分割ストリームにおいて、設定される複数のＭＢスキップラン情報に対応する複数のブロックが当該分割ストリーム内で連続するときには、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換する。
【０１５０】
ここで、ＭＢスキップラン情報は、符号化ピクチャに含まれるスライス内で特定の種類のブロックが連続する場合に連続する当該ブロックの個数を示す第１の符号語の一例である。具体的には、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０１５１】
例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、ＭＢスキップラン情報による、ＭＢライン間の依存関係が崩れてしまう。
【０１５２】
そこで、スキップラン修正部１３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン修正部１３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０１５３】
ＱＰデルタ修正部１３８ａは、マクロブロックごとに、マクロブロック層デコード部１３６ａによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。すなわち、ＱＰデルタ修正部１３８ａは、ＱＰ変化量が、２つのＭＢラインに跨るブロック間の変化量を示す場合には、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する。そしてＱＰデルタ修正部１３８ａは、計算した変化量にＱＰ変化量を修正する。
【０１５４】
なお、ＱＰ変化量は、符号化ピクチャに含まれるスライス内で連続するブロック間における符号化係数の変化量を示す第２の符号語の一例である。具体的には、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの直前に位置するマクロブロックのＱＰ値との差分値を示す。
【０１５５】
つまり、ピクチャがＭＢラインごとに分割され、ＭＢラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、ＭＢラインの境界を挟んで互いに連続していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに連続していた一方のマクロブロック（対象マクロブロック）を含む分割ストリームを復号化の対象とするデコードエンジン１２０は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。つまり、ＱＰ変化量による、ＭＢライン間の依存関係が崩れてしまう。
【０１５６】
そこで、ＱＰデルタ修正部１３８ａは、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量を、分割ストリームにおける新たなマクロブロックの前後関係に基づいて再計算する。
【０１５７】
分割点検出部１３９ａは、符号化ストリームを４つの分割ストリームに分割する。つまり、分割点検出部１３９ａは、ピクチャを複数のＭＢラインに分割し、ＭＢラインのそれぞれを４つの分割ストリームの何れかに割り当てる。なお、分割点検出部１３９ａは、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、ＭＢラインだけを分割ストリームに割り当てる。また、分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部１３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ修正部１３８ａから取得したＱＰ変化量とを含める。
【０１５８】
さらに、分割点検出部１３９ａは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ａは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１５９】
スライスデータ処理部１３４ｂは、スライスデータ層デコード部１３５ｂ、マクロブロック層デコード部１３６ｂ、ＱＰデルタ修正部１３８ｂおよび分割点検出部１３９ｂを備えている。
【０１６０】
スライスデータ層デコード部１３５ｂは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化（算術復号化）する。マクロブロック層デコード部１３６ｂは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化（算術復号化）する。このような、スライスデータ層デコード部１３５ｂおよびマクロブロック層デコード部１３６ｂによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
【０１６１】
ＱＰデルタ修正部１３８ｂは、上述のＱＰデルタ修正部１３８ａと同様、マクロブロックごとに、マクロブロック層デコード部１３６ｂによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。
【０１６２】
分割点検出部１３９ｂは、分割点検出部１３９ａと同様、符号化ストリームを４つの分割ストリームに分割する。このとき、分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ修正部１３８ｂから取得したＱＰ変化量を含める。さらに、分割点検出部１３９ｂは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からのスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ｂは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１６３】
ここで、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４ａ、１３４ｂについて詳細に説明する。なお、スライスデータ処理部１３４ａ、１３４ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部１３４と総称する。
【０１６４】
まず、スライスヘッダ挿入部１３３がスライスヘッダを挿入するタイミング、およびスライスデータ処理部１３４がスライス終端情報を挿入するタイミングについて説明する。
【０１６５】
図８は、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４の動作を説明するための説明図である。
【０１６６】
スライスデータ処理部１３４は、スライスＡおよびスライスＢを含むピクチャをＭＢラインごとに分割し、ＥＰＢ挿入部１３２ｂを介して、先頭側のＭＢラインから各ＭＢラインを順次、分割ストリームバッファ１５２に含まれる４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）に格納する。このとき、スライスデータ処理部１３４は、１ＭＢラインの格納ごとに、ＭＢラインの格納先を第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４、第１領域ｄｆ１の順に繰り返し変更する。
【０１６７】
例えば、スライスデータ処理部１３４は、図８の（ａ）に示すように、スライスＡのＭＢラインＬａ１を、分割ストリームバッファ１５２の第１領域ｄｆ１に格納し、スライスＡの次のＭＢラインＬａ２を、分割ストリームバッファ１５２の第２領域ｄｆ２に格納し、スライスＡの次のＭＢラインＬａ３を、分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。さらに、スライスデータ処理部１３４は、スライスＡの次のスライスＢのＭＢラインＬｂ１を、分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。
【０１６８】
その結果、分割ストリームバッファ１５２の４つの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれにＭＢラインが格納され、分割ストリームバッファ１５２は、スライスＢの次のＭＢラインが再び第１領域ｄｆ１に格納される直前の状態になる。
【０１６９】
なお、スライスデータ処理部１３４は、ＭＢラインＬａ３を第３領域ｄｆ３に格納するときには、符号化ストリームにおいてＭＢラインＬａ３の直後にスライス終端情報ｅａがあっても、そのスライス終端情報ｅａを格納することなく、ＭＢラインＬａ３だけを第３領域ｄｆ３に格納する。そして、スライスデータ処理部１３４は、その後に、第３領域ｄｆ３に新たなスライスに属するＭＢラインを格納するときになって、そのスライス終端情報ｅａに対応するスライス終端情報ｅａ’を第３領域ｄｆ３に格納する。また、スライスデータ処理部１３４がＭＢラインＬｂ１を第４領域ｄｆ４に格納するときには、事前に、スライスヘッダ挿入部１３３によってスライスＢのスライスヘッダｈｂが第４領域ｄｆ４に格納されている。また、ピクチャには、スライスＡのＭＢラインＬａ１よりも前に、そのスライスＡの他のＭＢラインが存在している。したがって、第１領域ｄｆ１、第２領域ｄｆ２および第３領域ｄｆ３のＭＢラインＬａ１、Ｌａ２、Ｌａ３の直前には、スライスＡの複製スライスヘッダが挿入されていない。
【０１７０】
また、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、マクロブロックを出力するごとに、１ＭＢラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部１３９ａ、１３９ｂは、全てのマクロブロックが出力されたと判別すると、ＭＢラインの境界（ＭＢラインの終端）を検出する。そして、分割点検出部１３９ａ、１３９ｂは、ＭＢラインの境界を検出するごとに、マクロブロックの出力処理を中断し、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知する。
【０１７１】
したがって、ＭＢラインの最後のマクロブロックが分割ストリームバッファ１５２に格納されて、分割ストリームバッファ１５２が上述のような図８の（ａ）に示す状態になったときにも、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂから、ＭＢラインの境界が検出されたことの通知を受ける。
【０１７２】
ＭＢラインの境界検出の通知を受けたスライスヘッダ挿入部１３３は、図８の（ｂ）に示すように、スライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に送る。このスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインが格納される直前に、スライスヘッダを分割ストリームバッファ１５２に出力して格納する予定があるか否かをそのスライスデータ処理部１３４に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４に対してスライス終端処理を促す通知である。
【０１７３】
例えば、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインＬｂ２が格納される直前に、複製スライスヘッダｈｂ’を分割ストリームバッファ１５２に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部１３３は、「出力」を示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に出力する。
【０１７４】
スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１を取得すると、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ１５２に格納した後に、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。一方、スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ１５２に格納することなく、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１７５】
例えば、スライスデータ処理部１３４は、「出力」を示すスライスヘッダ処理内容通知Ｍ１を取得すると、図８の（ｃ）に示すように、スライス終端情報ｅａ’を生成し、分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その格納が完了すると、スライスデータ処理部１３４は、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１７６】
スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ＥＰＢ挿入部１３２ｂを介して、スライスヘッダを分割ストリームバッファ１５２に出力して格納し、その後、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。一方、直前に出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、スライスヘッダ挿入部１３３は、スライスヘッダを分割ストリームバッファ１５２に格納することなく、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７７】
例えば、スライスヘッダ挿入部１３３は、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合に、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、図８の（ｄ）に示すように、複製スライスヘッダｈｂ’を生成して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その後、スライスヘッダ挿入部１３３は、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７８】
スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けると、中断していたマクロブロックの出力処理を再開し、次のＭＢラインを出力して分割ストリームバッファ１５２に格納する。
【０１７９】
例えば、スライスデータ処理部１３４は、図８の（ｄ）に示すように、次のＭＢラインＬｂ２を出力して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１８０】
このようなスライスヘッダ挿入部１３３およびスライスデータ処理部１３４による処理によって、分割ストリームバッファ１５２の各領域において、スライス終端情報、スライスヘッダ、次のＭＢラインの順に、これらのデータを適切なＭＢラインの境界に書き込むことができる。
【０１８１】
図９は、スライスヘッダ挿入部１３３の構成を示すブロック図である。
【０１８２】
なお、図９を用いて、分割点検出部１３９ａ、１３９ｂについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部１３９と総称する。
【０１８３】
スライスヘッダ挿入部１３３は、ＮＡＬタイプ判定部１３３ａ、ヘッダ挿入カウンタ１３３ｂ、ヘッダアドレス更新部１３３ｃおよびヘッダバッファ１３３ｄを備えている。
【０１８４】
ＮＡＬタイプ判定部１３３ａは、符号化ストリームのＮＡＬユニットを取得するごとに、そのＮＡＬユニットのタイプがスライスであるか否かを判別する。そして、ＮＡＬタイプ判定部１３３ａは、スライスであると判別したときには、そのＮＡＬユニットのタイプがスライスであることをヘッダバッファ１３３ｄおよびヘッダ挿入カウンタ１３３ｂに通知する。
【０１８５】
ヘッダバッファ１３３ｄは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、そのＮＡＬユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ１３３ｄは、後のＮＡＬユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ１３３ｄは、常に最新のスライスヘッダを保持している。
【０１８６】
ヘッダ挿入カウンタ１３３ｂは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のＭＢラインの境界（終端）が分割点検出部１３９で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ１３３ｂは、０〜４（デコードエンジン１２０の総数）までの値をカウントする。ヘッダ挿入カウンタ１３３ｂは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。さらに、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界（ＭＢラインの終端）が検出されたときには、カウント値を１だけカウントアップする。そして、ヘッダ挿入カウンタ１３３ｂは、カウント値が４に達した後に、さらにＭＢラインの境界が検出されたときには、カウントアップすることなく、カウント値を４に維持しておく。
【０１８７】
このように、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、カウント値を更新あるいは保持し、ＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。
【０１８８】
また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、その検出によって更新されたカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力する。具体的には、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出された直後のカウント値が０〜３のときには、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力し、そのカウント値が４のときには、「非出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときに限らず、カウント値が０になったときにも、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。
【０１８９】
さらに、ヘッダ挿入カウンタ１３３ｂは、スライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力した後に、その分割点検出部１３９から終端処理完了通知Ｍ２を受け取ると、その出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させる。その後、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。なお、ヘッダバッファ１３３ｄからスライスヘッダが出力されるときには、スライスヘッダ挿入部１３３は、そのスライスヘッダに含まれているＭＢアドレス情報により示される値に応じて、分割ストリームバッファ１５２の格納先となる領域を選択する。そして、スライスヘッダ挿入部１３３は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ１３３ｂは、その出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。
【０１９０】
ヘッダアドレス更新部１３３ｃは、ＭＢラインの境界が検出された直後のカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、ヘッダバッファ１３３ｄに格納されているスライスヘッダのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を更新する。
【０１９１】
例えば、ヘッダアドレス更新部１３３ｃは、カウント値ｎ＝０のときには、ＭＢアドレス情報を更新せず、カウント値ｎ≠０のときには、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）に更新する。なお、ピクチャがＭＢＡＦＦで構成されている場合には、ヘッダアドレス更新部１３３ｃは、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により更新する。
【０１９２】
図１０は、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【０１９３】
例えば、ストリーム分割部１３０は、ストリームバッファ１５１に格納されている符号化ストリームのスライスＡ〜Ｃを、スライスＡ、スライスＢ、スライスＣの順に読み出す。
【０１９４】
この場合、まず、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、スライスＡの先頭からスライスヘッダｈａを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、カウント値が０であるため、記憶しているスライスヘッダｈａを出力することにより、そのスライスヘッダｈａを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１９５】
スライスヘッダｈａがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＡのスライスヘッダｈａに続く第１ＭＢラインを出力することにより、その第１ＭＢラインを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その結果、第１領域ｄｆ１には、スライスヘッダｈａ、スライスＡに属する第１ＭＢラインの順に、それらのデータが格納される。
【０１９６】
第１ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第１ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈａを複製スライスヘッダｈａ’として出力することにより、その複製スライスヘッダｈａ’を分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。なお、複製スライスヘッダｈａ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１９７】
複製スライスヘッダｈａ’がヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中で第１ＭＢラインに続く第２ＭＢラインを出力することにより、その第２ＭＢラインを分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。
【０１９８】
ここで、第２ＭＢラインは、スライスＡに属する複数のマクロブロックと、スライスＢのスライスヘッダｈｂと、スライスＢに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部１３４の分割点検出部１３９は、まず、第２ＭＢラインに含まれるスライスＡに属する全てのマクロブロックを第２領域ｄｆ２に格納する。その格納が終了すると、分割点検出部１３９は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けるまで待機する。このとき、スライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを検出するため、カウント値を０にリセットし、「出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に送る。このスライスヘッダ処理内容通知Ｍ１を受けた分割点検出部１３９は、第２領域ｄｆ２のスライスＡの終端に対してスライス終端処理を行い、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に送る。この終端処理完了通知Ｍ２を受けたスライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを第２領域ｄｆ２に格納し、スライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に送る。このスライスヘッダ処理完了通知Ｍ３を受けた分割点検出部１３９は、中断していた出力処理を再開し、第２ＭＢラインに含まれる次のスライスＢに属する複数のマクロブロックを第２領域ｄｆ２に格納する。
【０１９９】
その結果、第２領域ｄｆ２には、複製スライスヘッダｈａ’に続いて、スライスＡに属する第２ＭＢラインの一部を成す複数のマクロブロック、スライスヘッダｈｂ、スライスＢに属する第２ＭＢラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
【０２００】
第２ＭＢラインがスライスデータ処理部１３４から出力されると、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、符号化ストリーム中でその第２ＭＢラインに続くスライスＣの先頭からスライスヘッダｈｃを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、第２ＭＢラインの終端でカウント値が０であるため、記憶しているスライスヘッダｈｃを出力することにより、そのスライスヘッダｈｃを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。
【０２０１】
スライスヘッダｈｃがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＣのスライスヘッダｈｃに続く第３ＭＢラインを出力することにより、その第３ＭＢラインを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。その結果、第３領域ｄｆ３には、スライスヘッダｈｃ、スライスＣに属する第３ＭＢラインの順に、それらのデータが格納される。
【０２０２】
第３ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第３ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈｃを複製スライスヘッダｈｃ’として出力することにより、その複製スライスヘッダｈｃ’を分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。なお、複製スライスヘッダｈｃ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０２０３】
このような処理が繰り返されることにより、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４にデータが順次格納される。その結果、それらの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに第１分割ストリーム〜第４分割ストリームが格納される。
【０２０４】
図１１Ａおよび図１１Ｂは、スライス終端情報が設定される位置を示す図である。
【０２０５】
例えば、図１１Ａに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢのスライスヘッダｈｂが出力される直前に、そのスライスＢの先頭ＭＢラインから４ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。さらに、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢの先頭ＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２０６】
このように、スライスの先頭のマクロブロックがＭＢラインの左端にある場合には、そのＭＢラインの１〜４ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０７】
また、図１１Ｂに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端以外にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢのスライスヘッダｈｂを含むＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２０８】
このように、スライスの先頭のマクロブロックがＭＢラインの左端以外にある場合には、そのＭＢラインにおけるスライスの境界と、そのＭＢラインの１〜３ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０９】
ここで、分割点検出部１３９の動作について詳細に説明する。
【０２１０】
図１２は、分割点検出部１３９の動作を示すフローチャートである。
【０２１１】
まず、分割点検出部１３９は、符号化ストリームの先頭側から処理対象とすべきデータ（例えばマクロブロック）を特定して出力し、分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２１２】
ここで、分割点検出部１３９は、出力されるマクロブロックのアドレス（ＭＢアドレス値）を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部１３９は、出力されるマクロブロックのＭＢアドレス値を、そのスライスのスライスヘッダに含まれるＭＢアドレス情報により示される値に更新する。そして、分割点検出部１３９は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのＭＢアドレス値をインクリメントする。なお、ＭＢアドレス値は０以上の整数である。
【０２１３】
そして、分割点検出部１３９は、ステップＳ１００でマクロブロックを出力するときには、そのマクロブロックのＭＢアドレス値に応じて、分割ストリームバッファ１５２内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ１５２に含まれる４つの領域に１番〜４番までの番号が割り振られている場合、分割点検出部１３９は、ｍ＝（（ＭＢアドレス値／Ｗ）％Ｎ＋１）番目の領域を選択し、そのｍ番目の領域にマクロブロックを格納する。
【０２１４】
なお、Ｗは、Ｗ＝“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１により示され、ピクチャの水平方向のマクロブロック数を示す。また、Ｎはデコードエンジン１２０の総数（Ｎ＝４）であり、％は（ＭＢアドレス値／Ｗ）をＮで割ったときの余りを示す。
【０２１５】
次に、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックがＭＢラインの終端（境界）であったか否か、つまりマクロブロックの出力処理がＭＢラインの終端に達したか否かを判別する（ステップＳ１０２）。具体的には、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックのＭＢアドレス値が（Ｗの倍数−１）となるか否かを判別する。ＭＢアドレス値＝（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達し、ＭＢアドレス値≠（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達していない。
【０２１６】
分割点検出部１３９は、終端に達していないと判別すると（ステップＳ１０２のＮｏ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。一方、分割点検出部１３９は、終端（ＭＢラインの境界）に達したと判別すると、つまりＭＢラインの境界を検出すると（ステップＳ１０２のＹｅｓ）、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けたか否かを判別する（ステップＳ１０４）。
【０２１７】
分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けていないと判別すると（ステップＳ１０４のＮｏ）、スライスヘッダ処理内容通知Ｍ１を受けるまで待機する。
一方、分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けたと判別すると（ステップＳ１０４のＹｅｓ）、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示しているか否かを判別する（ステップＳ１０６）。
【０２１８】
ここで、分割点検出部１３９は、「出力」を示していると判別すると（ステップＳ１０６のＹｅｓ）、スライス終端処理を実行する（ステップＳ１０８）。つまり、分割点検出部１３９は、符号化ストリームがＣＡＢＡＤで復号化される場合には、スライス終端情報として“ｅｎｄ＿ｏｆ＿ｓｌｉｃｅ＿ｆｌａｇ”に「１」を設定する。また、分割点検出部１３９は、符号化ストリームがＣＡＶＬＤで復号化される場合には、スライス終端情報として“ｒｂｓｐ＿ｓｌｉｃｅ＿ｔｒａｉｌｉｎｇ＿ｂｉｔｓ”を付与する。
【０２１９】
分割点検出部１３９は、ステップＳ１０６で「出力」を示していないと判別した後（ステップＳ１０６のＮｏ）、またはステップＳ１０８でスライス終端処理を実行した後には、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る（ステップＳ１１０）。その後、分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けたか否かを判別する（ステップＳ１１２）。ここで、分割点検出部１３９は、スライスヘッダ処理完了通知Ｍ３を受けていないと判別すると（ステップＳ１１２のＮｏ）、スライスヘッダ処理完了通知Ｍ３を受けるまで待機する。一方、分割点検出部１３９は、ステップＳ１１２でスライスヘッダ処理完了通知Ｍ３を受けたと判別したとき（ステップＳ１１２のＹｅｓ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。
【０２２０】
ここで、分割点検出部１３９は、終了すべきと判別したときには（ステップＳ１１４のＹｅｓ）、処理を終了し、終了すべきでないと判別したときには（ステップＳ１１４のＮｏ）、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２２１】
次に、スキップラン修正部１３７ａの動作について詳細に説明する。
【０２２２】
スキップラン修正部１３７ａは、前述したようにＭＢスキップラン情報である“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正する。ＭＢスキップラン情報は、符号化方法にＣＡＶＬＣを用いた場合に符号化ストリームに含まれる符号語であり、連続するスキップマクロブロックの個数（以下、「長さ」ともいう。）を示している。また、以下の記載において、ＭＢスキップラン情報の長さとは、ＭＢスキップラン情報が示す、連続するスキップマクロブロックの個数を意味する。
【０２２３】
図１３Ａおよび図１３Ｂは、ＭＢスキップラン情報の修正処理を説明するための説明図である。
【０２２４】
図１３Ａに示されたピクチャでは、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２〜Ｌ３に跨って連続するスキップマクロブロックの個数を示す長さ８（５＋３＝８）のＭＢスキップラン情報が符号化され、ＭＢラインＬ５〜Ｌ６に跨って連続するスキップマクロブロックの個数を示す長さ６（２＋４＝６）のＭＢスキップラン情報が符号化されている。
【０２２５】
しかし、このような場合にピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報による、その複数のＭＢライン間の依存関係が崩れてしまう。
【０２２６】
すなわち、第１分割ストリームに含まれるＭＢラインはＬ１およびＬ５であり、ＭＢラインＬ５の末尾に連続する２個のスキップマクロブロックが存在する。また、第２分割ストリームに含まれるＭＢラインはＬ２およびＬ６であり、ＭＢラインはＬ２からＬ６に跨って連続する９個のスキップマクロブロックが存在する。また、第３分割ストリームに含まれるＭＢラインはＬ３およびＬ７であり、ＭＢラインはＬ３の先頭に連続する３個のスキップマクロブロックが存在する。また、第４分割ストリームに含まれるＭＢラインはＬ４およびＬ８であり、スキップマクロブロックは存在しない。
【０２２７】
以上のように、もともと符号化ストリームに含まれていたＭＢスキップラン情報は長さ８と６であったのに対し、第１分割ストリームに対しては長さ２のＭＢスキップラン情報を、第２分割ストリームに対しては長さ９のＭＢスキップラン情報を、第３分割ストリームに対しては長さ３のＭＢスキップラン情報を出力する必要がある。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報によって、その複数のＭＢラインが互いに依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＭＢスキップラン情報を修正する必要がある。
【０２２８】
そこでスキップラン修正部１３７ａは、まずスライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報に対応するスキップマクロブロックの集合が複数のＭＢラインに跨って存在する場合、ＭＢライン境界でＭＢスキップラン情報を分割する。ここで、ＭＢライン境界でＭＢスキップラン情報を分割するとは、複数のＭＢラインに跨って連続する複数のスキップマクロブロックの個数を分割し、ＭＢラインごとのスキップマクロブロックの個数をそれぞれが示す複数のＭＢスキップラン情報を生成することを意味する。
【０２２９】
すなわち、図１３Ａに示されたピクチャの場合、スキップラン修正部１３７ａは、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部１３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。
【０２３０】
次に、スキップラン修正部１３７ａは、分割されたＭＢスキップラン情報のうち、各分割ストリームにおいて連続するスキップマクロブロックの集合に対応する複数のＭＢスキップラン情報を再結合する。ここで複数のＭＢスキップラン情報の再結合とは、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換することを意味する。
【０２３１】
図１３Ａに示されたピクチャの場合、分割されたＭＢスキップラン情報に対応するスキップマクロブロックの集合のうち、ＭＢラインＬ２に含まれる長さ５のスキップマクロブロックの集合と、ＭＢラインＬ６に含まれる長さ４のスキップマクロブロックの集合とは、第２分割ストリーム内で連続する。そのため、スキップラン修正部１３７ａは、これらの２つのスキップマクロブロックの集合にそれぞれ対応する２つのＭＢスキップラン情報を結合し、長さ９のＭＢスキップラン情報に変換する。
【０２３２】
最後にスキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０２３３】
以上説明したように、スキップラン修正部１３７ａは、入力されたＭＢスキップラン情報をＭＢライン境界で分割した後、必要に応じて再結合することで、各分割ストリームに対して適切な長さのＭＢスキップラン情報を出力することが出来る。
【０２３４】
なお、ここで、スキップラン修正部１３７ａが、各分割ストリームにおいて連続するＭＢスキップラン情報を分割されたままにせずに、必要に応じて再結合するのは、Ｈ．２６４／ＡＶＣ規格において、複数のＭＢスキップラン情報が連続して存在することが許されていないためである。つまり、Ｈ．２６４／ＡＶＣ規格において、連続するスキップマクロブロックの個数を複数のＭＢスキップラン情報を用いて表現することが許されていないので、スキップラン修正部１３７ａは、その複数のＭＢスキップラン情報を結合する。このように、スキップラン修正部１３７ａがＨ．２６４／ＡＶＣ規格に準拠した形式でＭＢスキップラン情報が修正されることにより、各分割ストリームがＨ．２６４／ＡＶＣ規格に準拠した形式で生成される。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０２３５】
また、図１３Ｂに示されたピクチャでは、ＭＢラインＬ２の末尾に５個の連続するスキップマクロブロックと、ＭＢラインＬ６の先頭に３個の連続するスキップマクロブロックとが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２に長さ５のＭＢスキップラン情報が符号化され、ＭＢラインＬ６に長さ３のＭＢスキップラン情報が符号化されている。
【０２３６】
このピクチャの場合、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在していないため、スキップラン修正部１３７ａは、ＭＢライン境界でＭＢスキップラン情報を分割する必要はない。しかしながら、このピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられた場合、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とが連続して存在することになる。
【０２３７】
したがってこの例のように、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在しない場合においても、スキップラン修正部１３７ａは、各分割ストリームにおいて１つの連続するスキップマクロブロックの個数を示す複数のＭＢスキップラン情報を再結合する処理を行う。すなわち、スキップラン修正部１３７ａは、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とを結合し、長さ８のＭＢスキップラン情報に変換する。
【０２３８】
スキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０２３９】
図１４は、スキップラン修正部１３７ａの構成を示すブロック図である。
【０２４０】
スキップラン修正部１３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、スキップラン累積・保持部１６２、加算部１６３、およびスキップラン符号化部１６４を備えている。
【０２４１】
スキップラン抽出部１６０は、スライスデータ層デコード部から出力されるストリームから、ＭＢスキップラン情報を検出および抽出する。抽出したＭＢスキップラン情報は、スキップラン分割部１６１に対して出力され、それ以外の情報は、そのまま分割点検出部１３９ａに対して出力される。
【０２４２】
スキップラン分割部１６１は、ＭＢスキップラン情報の長さとＭＢスキップラン情報が存在するマクロブロックの位置情報から、入力されたＭＢスキップラン情報が複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すかどうかを判定する。ここで、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すと判定された場合は、スキップラン分割部１６１は、ＭＢライン境界を分割点として、ＭＢスキップラン情報を分割する。分割されたＭＢスキップラン情報のうち、ＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報は加算部１６３に出力され、ＭＢライン境界を越えなかったスキップマクロブロックの個数を示すＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０２４３】
なお、ＭＢスキップラン情報は、３つ以上のＭＢラインに跨って連続するスキップマクロブロックの個数を示す場合もある。その場合、連続するスキップマクロブロックの間に２つ以上のＭＢライン境界が存在することになるため、スキップラン分割部１６１はそれぞれのＭＢライン境界を分割点として、繰り返し分割を行う。その際、分割されたＭＢスキップラン情報のうち、最後のＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報が加算部１６３に出力され、それ以外のＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０２４４】
スキップラン累積・保持部１６２は、スキップラン分割部１６１から出力される分割されたＭＢスキップラン情報を受け取り、先行ＭＢスキップラン情報として分割ストリームごとにその値を保持する。すなわち、スキップラン累積・保持部１６２は、第１分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第１分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第２分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第２分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第３分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第３分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第４分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第４分割ストリームの先行ＭＢスキップラン情報として保持する。
【０２４５】
このとき、既にスキップラン累積・保持部１６２に先行ＭＢスキップラン情報が保持されている場合、スキップラン累積・保持部１６２は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を累積し、新たなＭＢスキップラン情報として、分割ストリーム毎にその値を保持する。つまり、スキップラン累積・保持部１６２は、分割ストリームごとに、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を、保持されている先行ＭＢスキップラン情報に加算する。
【０２４６】
加算部１６３は、スキップラン分割部１６１からＭＢスキップラン情報を受け取るとともに、そのＭＢスキップラン情報が含まれる分割ストリームに対応した、スキップラン累積・保持部１６２に保持された先行ＭＢスキップラン情報を読み出す。そして、加算部１６３は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報の値と、スキップラン累積・保持部１６２にから読み出した先行ＭＢスキップラン情報の値とを加算し、その結果を修正されたＭＢスキップラン情報として、スキップラン符号化部１６４に出力する。この処理により、ＭＢスキップラン情報の再結合が行われる。
【０２４７】
スキップラン符号化部１６４は、加算部１６３から出力される修正されたＭＢスキップラン情報を再符号化して分割点検出部１３９ａに出力することで、修正されたＭＢスキップラン情報をストリームに再度埋め込む。
【０２４８】
図１５は、スキップラン修正部１３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。
【０２４９】
まずスキップラン修正部１３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別する（ステップＳ２００）。これは、ＭＢスキップラン情報がスライス境界を跨って連続するスキップマクロブロックの個数を示すことがないため、スライス終端に到達した際には、スキップラン修正部１３７ａの内部に保持された先行ＭＢスキップラン情報をすべて出力する必要があるためである。ここでスライス終端に到達していると判別すると（ステップＳ２００のＹｅｓ）、ステップＳ２２４の処理に進む。処理の詳細は後述する。
【０２５０】
一方、スライス終端に到達していないと判別すると（ステップＳ２００のＮｏ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部１３７ａは、処理の最初に戻りストリームを再度読み進める。
【０２５１】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。ここで、スキップラン修正部１３７ａは、取得したＭＢスキップラン情報によって示される連続したスキップマクロブロックのうち、先頭のスキップマクロブロックの位置を特定する。
【０２５２】
スキップラン修正部１３７ａは、ステップＳ２０４でマクロブロックの位置を算出すると、そのマクロブロックの位置情報とＭＢスキップラン情報の長さとから、連続するスキップマクロブロックがＭＢライン境界に到達するかどうかを調べることにより、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０２５３】
より具体的には、先頭のスキップマクロブロックの水平位置および垂直位置をそれぞれ“ｍｂｐｏｓｈ”、“ｍｂｐｏｓｖ”と表現し、ピクチャの水平方向の総マクロブロック数を“ＰｉｃＷｉｄｔｈＩｎＭｂｓ”と表現した場合において、“ｍｂ＿ｓｋｉｐ＿ｒｕｎ  ≧  ＰｉｃＷｉｄｔｈＩｎＭｂｓ  −  ｍｂｐｏｓｈ”が成立するときは、スキップラン修正部１３７ａは、連続するスキップマクロブロックがＭＢライン境界に到達すると判定する。
【０２５４】
なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、スキップラン修正部１３７ａは、マクロブロックの位置情報とＭＢスキップラン情報の長さから、連続するスキップマクロブロックが分割境界に到達するかどうかを判定すればよい。
【０２５５】
連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０２５６】
連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報がＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ２０８）。すなわち、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報について、先行ＭＢスキップラン情報との結合が必要かどうかを判定する。
【０２５７】
該当のＭＢスキップラン情報がＭＢラインの先頭に位置していると判定された場合（ステップＳ２０８のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に対して先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を加算することにより、ＭＢスキップラン情報の再結合を行う（ステップＳ２１０）。なお、このＭＢスキップラン情報の再結合処理は、分割ストリーム毎に独立して行われる必要がある。すなわち、先行ＭＢスキップラン情報は分割ストリーム毎にスキップラン修正部１３７ａに保持されており、該当のＭＢスキップラン情報が含まれるＭＢラインに対応した、先行ＭＢスキップラン情報が加算される。
【０２５８】
ステップＳ２０８で該当のＭＢスキップラン情報がＭＢラインの先頭に位置していないと判定された場合（ステップＳ２０８のＮｏ）、またはステップＳ２１０でＭＢスキップラン情報の結合が実行された後、スキップラン修正部１３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０２５９】
その後スキップラン修正部１３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０２６０】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。なお、連続するスキップマクロブロックがＭＢライン境界に到達しているがＭＢライン境界を跨がない場合、後半部は０であることもあり得る。
【０２６１】
さらにスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、前半部を先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”として内部に保持する。このとき、既にスキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報が存在する場合、スキップラン修正部１３７ａは、新たに発生したＭＢスキップラン情報の前半部の長さを保持された先行ＭＢスキップラン情報の長さに加算して保持する（ステップＳ２１８）。なお前述したように、先行ＭＢスキップラン情報は、それ自身が含まれるＭＢラインに対応する分割ストリームの先行ＭＢスキップラン情報として、分割ストリームごとに独立に保持される。
【０２６２】
次にスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０２６３】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０２６４】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割・再結合および出力処理を行う。このように、スキップラン修正部１３７ａがＭＢスキップラン情報の分割・再結合を繰り返し行うことにより、３ＭＢライン以上に跨ったＭＢスキップラン情報についても正しく分割・再結合処理が行われる。
【０２６５】
一方、ステップＳ２００でスライス終端であると判別された場合（ステップＳ２００のＹｅｓ）、スキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報を出力するため、先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を、そのままＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に置き換える（ステップＳ２２４）。その後はステップＳ２１２の処理に進み、スキップラン修正部１３７ａは、置き換えたＭＢスキップラン情報を再符号化した後、分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１２〜Ｓ２１４）。なお、この先行ＭＢスキップラン情報の出力は、すべての分割ストリームに対して行われる。
【０２６６】
以上説明した処理が、スキップラン修正部１３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部１３７ａでは、ＭＢスキップラン情報の分割・再結合が適切に行われる。
【０２６７】
次に、ＱＰデルタ修正部１３８ａ、１３８ｂの動作について詳細に説明する。なお、以降の説明において、ＱＰデルタ修正部１３８ａ、１３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ修正部１３８と総称する。
【０２６８】
ＱＰデルタ修正部１３８は、マクロブロックごとに原則として存在するＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正する。ＱＰ変化量とは、マクロブロックの量子化パラメータであるＱＰ値を復号するために符号化ストリームに含まれる符号語であり、対象マクロブロックと、その直前に処理したマクロブロックのＱＰ値の差分値を示している。
【０２６９】
ＱＰ値の復号は、次式（１）によって行われる。
【０２７０】
ＱＰＹ  ＝  （  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ＋  ２  ＊  ＱｐＢｄＯｆｆｓｅｔＹ  ）％  （  ５２  ＋  ＱｐＢｄＯｆｆｓｅｔＹ  ）  ）  −  ＱｐＢｄＯｆｆｓｅｔＹ        ・・・（１）
【０２７１】
ここで、ＱＰＹは処理対象マクロブロックの輝度のＱＰ値を、ＱＰＹ,ＰＲＥＶは直前のマクロブロックの輝度のＱＰ値を示している。なお、ＱｐＢｄＯｆｆｓｅｔＹはピクチャを構成する画素のビット深度によって決まる値であり、一般的に用いられる８ビット深度の場合、ＱｐＢｄＯｆｆｓｅｔＹ＝０である。その場合、上記の式（１）は次式（２）のように書き換えられる。
【０２７２】
ＱＰＹ  ＝  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（２）
【０２７３】
式（２）から分かるように、画素のビット深度が８である場合、ＱＰ値は０〜５１の範囲となるようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を用いて復号化される。なお、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取りうる値である。
【０２７４】
量子化パラメータであるＱＰ値の復号は、処理順で連続するマクロブロック間で依存関係があるが、途中でスライスの境界があった場合はそこで依存関係が解消される。すなわち、量子化パラメータであるＱＰ値は、スライスの先頭でスライスＱＰ値によって初期化される。スライスの先頭のマクロブロックには、該当マクロブロックのＱＰ値とスライスＱＰ値との差分値がＱＰ変化量として符号化される。
【０２７５】
図１６Ａおよび図１６Ｂは、ＱＰ変化量の修正処理を説明するための説明図である。
【０２７６】
図１６Ａに示されたピクチャにおけるマクロブロックＣに着目すると、本来その直前に処理が行われるマクロブロックはマクロブロックＢである。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０２７７】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０２７８】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン１２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量による、そのＭＢライン間の依存関係が崩れてしまう。
【０２７９】
そこでＱＰデルタ修正部１３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＱＰ変化量の修正を行う。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量によって、その２つのＭＢラインが依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＱＰ変化量を修正する。
【０２８０】
ＱＰ変化量の修正方法としては、全てのマクロブロックについてＱＰ値の復号化（ＱＰ値の復元）を行った上で、ストリーム分割後の新たなマクロブロックの前後関係に基づき、ＱＰ変化量を算出し直す方法が考えられる。しかしながらこの方法では、ＱＰ値復号化とＱＰ変化量算出との２つの処理が必要であり、ＱＰデルタ修正部１３８における処理量が大きくなってしまう。
【０２８１】
そこで本実施の形態では、ＱＰデルタ修正部１３８は、分割ストリーム毎に、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することで、ＱＰ値を復号化することなく、修正されたＱＰ変化量を直接導出する。
【０２８２】
ここで、ＱＰ変化量累積による修正ＱＰ変化量の導出について、図を用いて説明する。図１７は、ＱＰ変化量の累積を説明するための説明図である。
【０２８３】
図中において、横軸はＱＰ値を表しており、ＱＰ１〜ＱＰ４は連続したマクロブロックにおけるＱＰ値を示している。また図中には、各々のＱＰ値の差分値を表す“ｍｂ＿ｑｐ＿ｄｅｌｔａ”が示されている。“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の末尾に添えられている２桁の数字は、上位側が先行するマクロブロックに対応するＱＰ値の番号を示しており、下位側が後続するマクロブロックに対応するＱＰ値の番号を示している。例えば、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”は、ＱＰ１とＱＰ２との差分値を表す。また、図に示されるように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、ＱＰ値の最小値である０と、最大値である５１とが、連続してつながった軸におけるＱＰ値の差分値を表している。
【０２８４】
通常のＱＰ値の復号処理では、ＱＰ１と“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”とから、式（２）を用いてＱＰ２が求められる。また、同様にＱＰ２と“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”とからＱＰ３が求められる。また、ＱＰ３と“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”とからＱＰ４が求められる。
【０２８５】
ここで、図に示されているように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”が表すＱＰ変化量の合計は、ＱＰ１とＱＰ４との差分値を示す“ｍｂ＿ｑｐ＿ｄｅｌｔａ１４”に等しい。すなわち、隣接していないマクロブロック間のＱＰ変化量を求めるには、その間のすべてのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積すれば良いことが分かる。
【０２８６】
なお、累積は次式（３）に従って行う。
【０２８７】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  （  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（３）
【０２８８】
ここで、“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、累積された“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を示す。このように、式（２）に合わせた形式で“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積することで、図１７に示したＱＰ値の最小値である０と最大値である５１が連続してつながった軸において、ＱＰ変化量の合計を求めることが出来る。
【０２８９】
具体的な例として、図１６Ａに示されたピクチャにおけるマクロブロックＣのＱＰ変化量の修正処理について説明する。前述のように、ストリーム分割後の第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなるため、マクロブロックＣには、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値がＱＰ変化量として含まれる必要がある。
【０２９０】
そこでＱＰデルタ修正部１３８は、ＭＢラインＬ３〜Ｌ５に含まれる全てのマクロブロックのＱＰ変化量と、マクロブロックＣのＱＰ変化量を累積する。このように、マクロブロックＡとマクロブロックＣの間にある全てのマクロブロックのＱＰ変化量を累積することで、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値である修正ＱＰ変化量を求めることが出来る。
【０２９１】
なお、ここで求められたＱＰ変化量は式（３）により導出されているため、０〜５１の範囲を示す値となっている。本来のＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取る値であるため、ＱＰデルタ修正部１３８は次式（４）により、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を−２６〜＋２５の範囲となるように修正する。
【０２９２】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ＞２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  −  ５２
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ≦２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ        ・・・（４）
【０２９３】
なお式（４）で示した処理は、ここで示したようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の累積対象の全てのマクロブロックについて累積した後、最後に１回だけで行ってもよいし、累積対象の全てのマクロブロックについて、１マクロブロックごとに行ってもよい。
【０２９４】
また、ここではマクロブロックＣに着目して説明したが、全てのＭＢラインの先頭のマクロブロックについても同様な処理を行う。例えば、マクロブロックＣの下方向に隣接するマクロブロックについては、ＭＢラインＬ４〜Ｌ６の全てのマクロブロックのＱＰ変化量を累積し、該当のマクロブロックに対して反映を行うことで、修正されたＱＰ変化量を導出する。これらの処理は、分割ストリーム毎に独立して行われる。
【０２９５】
最後にＱＰデルタ修正部１３８は、このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。なお、ＱＰデルタ修正部１３８ａはＣＡＶＬＣ方式で、ＱＰデルタ修正部１３８ｂはＣＡＢＡＣ方式で符号化を行う。
【０２９６】
以上説明したように、ＱＰデルタ修正部１３８は、入力されたＱＰ変化量を分割ストリームにおけるマクロブロックの前後関係に合うように修正することで、各分割ストリームに対して適切なＱＰ変化量を設定することができる。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０２９７】
また、図１６Ｂには、ＭＢラインＬ４とＬ５の境界でスライスが分割されていた場合の例を示している。この例では、ＭＢラインＬ１〜Ｌ４はスライスＡに、ＭＢラインＬ５〜Ｌ８はスライスＢに含まれる。
【０２９８】
このとき、第２分割ストリームにおいて、図１６Ａ同様にマクロブロックＡとマクロブロックＣは連続しているが、それぞれのマクロブロックが含まれるスライスは異なっており、マクロブロックＡとマクロブロックＣとの間で依存関係はなくなっている。第２分割ストリームにおいて、マクロブロックＣはスライスＢの先頭のマクロブロックとなるため、マクロブロックＣのＱＰ変化量は、マクロブロックＣのＱＰ値とスライスＢのスライスＱＰ値との差分値を示している必要がある。
【０２９９】
すなわちＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのうち、スライスＢに含まれるものについて、ＱＰ変化量の累積を行うことで、スライスＢのスライスＱＰ値からの差分値を求めることが出来る。しかしながら、実際にスライスが分割されているかどうかは、スライスＢの先頭が到達するまでは判別できない。
【０３００】
そこでＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのすべてについてＱＰ変化量の累積を行うとともに、スライスＢの先頭のマクロブロック処理開始時に、累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする。このようにすることで、スライスＢに含まれるマクロブロックのみについて、ＱＰ変化量の累積を行うことができ、正しくマクロブロックＣの修正ＱＰ変化量を求めることが出来る。
【０３０１】
このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。
【０３０２】
図１８は、ＱＰデルタ修正部１３８によるＱＰ変化量の修正処理を示すフローチャートである。
【０３０３】
マクロブロックの処理が開始されると、まずＱＰデルタ修正部１３８は、処理対象マクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ３００）。
【０３０４】
次にＱＰデルタ修正部１３８は、処理対象マクロブロックがスライスの先頭であるかどうかを判定する（ステップＳ３０２）。
【０３０５】
処理対象マクロブロックがスライスの先頭であると判定された場合（ステップＳ３０２のＹｅｓ）、全ての分割ストリームに対応する累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする（ステップＳ３０４）。この処理により、途中でスライスが分割されていた場合、正しくスライスＱＰ値からのＱＰ変化量が導出できる。なお、ここではスライスの先頭のマクロブロックかどうかで累積ＱＰ変化量をリセットするかどうかを決定しているが、スライスの先頭で累積ＱＰ変化量をリセット出来れば良いため、スライスヘッダが到着した時点で累積ＱＰ変化量をリセットするような構成であっても良い。
【０３０６】
ステップＳ３０２で処理対象マクロブロックがスライスの先頭でないと判定された場合（ステップＳ３０２のＮｏ）、またはステップＳ３０４で累積ＱＰ変化量のリセットを行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックの分割ストリーム出力先を判定する（ステップＳ３０６）。
【０３０７】
ステップＳ３０６で処理対象マクロブロックの出力先が第１分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第２、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３０８）。
【０３０８】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第２分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１０）。
【０３０９】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第３分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１２）。
【０３１０】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第４分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第３分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１４）。
【０３１１】
このように、ステップＳ３０８〜ステップＳ３１４では、処理対象マクロブロックの出力先となる分割ストリーム以外の分割ストリームに対応するＱＰ変化量の累積が行われる。これは、各分割ストリームにおいて、対象の分割ストリームに割り当てられなかった３ＭＢラインに含まれるマクロブロックのＱＰ変化量累積を行うことを意味している。このような処理により、ＱＰデルタ修正部１３８は、対象の分割ストリームに割り当てられなかった３ＭＢラインに対する前後のマクロブロックのＱＰ値の差分値を正しく是正することが出来る。
【０３１２】
ステップＳ３０８、ステップＳ３１０、ステップＳ３１２、ステップＳ３１４でＱＰ変化量の累積を行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックがＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ３１６）。なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、ＱＰデルタ修正部１３８は、マクロブロックの位置情報から、処理対象マクロブロックが分割単位の先頭に位置しているかどうかを判定すればよい。
【０３１３】
処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する。そして、ＱＰデルタ修正部１３８は、得られた累積ＱＰ変化量を式（４）に従って−２６〜＋２５の範囲となるように修正したうえで、処理対象マクロブロックのＱＰ変化量として置き換える。さらに、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３１８）。このように、ステップＳ３１８では、累積したＱＰ変化量が、ＭＢライン先頭のマクロブロックのＱＰ変化量に反映されることで、ＱＰ変化量の修正が行われる。
【０３１４】
処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、またはステップＳ３１８で処理対象マクロブロックのＱＰ変化量の修正が行われた後、ＱＰデルタ修正部１３８は、処理対象マクロブロックのＱＰ変化量の再符号化処理を行う（ステップＳ３２０）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０３１５】
その後ＱＰデルタ修正部１３８は、再符号化されたＱＰ変化量を分割点検出部１３９に出力して処理を終了する（ステップＳ３２２）。
【０３１６】
以上のように、ＱＰデルタ修正部１３８は、ＭＢラインの先頭のマクロブロックに対してはＱＰ変化量の修正を行った上で、ＭＢラインの先頭以外のマクロブロックに対してはそのまま、ＱＰ変化量の再符号化・出力処理を行う。
【０３１７】
このように、本実施の形態における画像復号化装置１００では、符号化されたピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のＭＢラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１２０で負担することなく、Ｎ個のデコードエンジン１２０で均等に負担することができる。
【０３１８】
ここで、符号化ピクチャが複数のＭＢラインに分割されると、複数のＭＢラインに跨るスライスが複数のスライス部分（例えば、図３に示す各ＭＢラインＬ１〜Ｌ６や、ＭＢラインＬ７のうちの先頭６マクロブロックの集合など）に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群（例えば、図３に示す第２分割ストリームに含まれるＭＢラインＬ２、Ｌ６）が含まれることとなる。また、このようなスライス部分群（ＭＢラインＬ２、Ｌ６）には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
【０３１９】
さらに、符号化ストリームに含まれる所定の符号語に起因して、複数のＭＢラインが依存関係を持つ場合がある。例えば、Ｈ．２６４／ＡＶＣでは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”や、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”によって複数のＭＢラインが互いに依存関係を有する場合がある。このような符号化ストリームが複数のＭＢラインに分割されて互いに異なる分割ストリームに割り当てられると、ＭＢライン間の依存関係を正しく保つことが出来ない。
【０３２０】
そこで本実施の形態では、ストリーム分割部１３０がそのスライス部分群を新たなスライスとして再構成する。その結果、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本実施の形態では、Ｎ個のデコードエンジン１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置１００の全体構成を簡単にすることができる。
【０３２１】
また、本実施の形態の画像復号化装置では、上記特許文献３の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献３の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献３の画像復号化装置では、符号化ストリームを適切に分割していない、言い換えれば、符号化ストリームが分割されて生成されるデータが、従来のデコードエンジンで復号化可能なストリームとして構成されていない。一方、本実施の形態の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図３３に示すデコードエンジン４２１のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本実施の形態の画像復号化装置では、復号化処理の高速化を図ることができる。
【０３２２】
また、本実施の形態では、上記特許文献４の画像復号化装置と比べて、従来のデコードエンジンを流用することができるというメリットがある。具体的には、上記特許文献４の画像復号化装置では、符号化ストリームを分割することなく、符号化ストリームにおいてＭＢラインの境界に行ヘッダを挿入している。したがって、上記特許文献４の画像復号化装置の複数のデコードエンジンは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出しなければならない。このとき、それらのデコードエンジンは、処理対象のＭＢラインが格納されている位置が既に特定されていれば、処理対象のＭＢラインを抽出するために符号化ストリームに対して不連続にアクセスする必要があり、その位置が特定されていなければ、符号化ストリームに先頭からアクセスし、処理対象でないＭＢラインを読み飛ばす必要がある。一方、本実施の形態の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図３３に示すデコードエンジン４２１のように、分割ストリームを通常の符号化ストリームとして扱って復号化することができる。このように、本実施の形態の画像復号化装置では、従来のデコードエンジンを流用することができ、上記特許文献４の画像復号化装置では成し得ない効果を奏することができる。
【０３２３】
また、このような本実施の形態における画像復号化装置１００は、ストリーム分割部１３０に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０３２４】
図１９Ａは、高解像度デコードを説明するための説明図である。図１９Ｂは、高速デコードを説明するための説明図である。図１９Ｃは、複数チャンネルデコードを説明するための説明図である。
【０３２５】
画像復号化装置１００のストリーム分割部１３０は、図１９Ａに示すように、高解像度デコードの実行を指示するモード情報を取得すると、４ｋ２ｋの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０３２６】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、４ｋ２ｋの画像（３８４０×２１６０画素、６０ｐ）をリアルタイムに処理することができる。
【０３２７】
また、画像復号化装置１００のストリーム分割部１３０は、図１９Ｂに示すように、高速デコードの実行を指示するモード情報を取得すると、ＨＤの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０３２８】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、ＨＤの画像を８倍速（４×２）で処理することができる。
【０３２９】
また、画像復号化装置１００のストリーム分割部１３０は、図１９Ｃに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のＨＤの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン１２０に復号化させる。なお、この複数チャンネルデコードの場合、ストリーム分割部１３０は、ＳＰＳ、ＰＰＳおよびスライスなどの各種ＮＡＬユニットの複製および挿入を行わず、分割ストリームバッファ１５２の各領域への符号化ストリーム（チャンネル）の振り分けのみを行う。
【０３３０】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、最大８チャンネル、つまり８つのＨＤの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル（符号化ストリーム）を復号化する場合には、デコードエンジン１２０のクロック周波数を下げて消費電力の低減を図ることができる。例えば、４チャンネルを復号化する場合には、第１デコードエンジン１２０と第２デコードエンジン１２０のそれぞれに２チャンネルの復号化を実行させ、残りの第３デコードエンジン１２０と第４デコードエンジン１２０を停止させる。または、第１デコードエンジン１２０〜第４デコードエンジン１２０を使用し、それらのクロック周波数を１／２にする。
【０３３１】
このように、本実施の形態における画像復号化装置１００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。なお、画像復号化装置１００における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを４つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート（４ｋ２ｋまたはＨＤ）が異なるだけである。したがって、画像復号化装置１００は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
【０３３２】
（実施の形態２）
次に、本発明の実施の形態２について、詳細に説明する。
【０３３３】
実施の形態１における画像復号化装置１００は、ＭＢスキップラン情報およびＱＰ変化量を修正することにより、分割前の符号化ストリームにおいて連続するＭＢライン間の依存関係を、各分割ストリームにおけるＭＢラインの前後関係に応じた依存関係に修正した。
【０３３４】
ここで、符号化ストリームには、ＱＰ変化量が含まれていないマクロブロックが含まれる場合がある。ＱＰ変化量が含まれていないマクロブロックは、量子化されていないマクロブロックに相当する。具体的には、Ｈ．２６４／ＡＶＣ規格における、ＱＰ変化量が含まれていないマクロブロックは、例えば、（１）スキップマクロブロック、（２）非圧縮のマクロブロック（Ｉ＿ＰＣＭ）、または（３）イントラ予測の予測モードが“Ｉｎｔｒａ１６×１６”ではなく、かつ“ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ”が０である（非０係数を１つも含まない）マクロブロックである。
【０３３５】
このようなＱＰ変化量が含まれていないマクロブロックがＭＢラインの先頭に存在する場合、実施の形態１における画像復号化装置１００は、修正対象となるＱＰ変化量が存在しないので、ＱＰ変化量を修正することができない。
【０３３６】
そこで、実施の形態２における画像復号化装置２００は、ＱＰ変化量が含まれていないマクロブロックをＭＢラインの先頭に含む符号化ストリームから複数の分割ストリームを生成する際に、そのマクロブロックを含む分割ストリームにＱＰ変化量を挿入することを１つの特徴とする。これにより、画像復号化装置２００は、各分割ストリームにおける新たな前後関係に基づくＱＰ変化量を適切に設定することができる。
【０３３７】
ここで、分割ストリームにＱＰ変化量が挿入された場合には、ＭＢライン間にＱＰ変化量が存在するため、ＭＢラインを跨って連続するスキップマクロブロックの個数を１つのＭＢスキップラン情報を用いて示すことができない。そこで、実施の形態２における画像復号化装置２００は、ＭＢスキップラン情報の再結合処理を行わないことをもう１つの特徴とする。
【０３３８】
以下、図面を用いて、本実施の形態における画像復号化装置２００について説明する。
【０３３９】
図２０は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。なお、図２０において、図１と同様の構成要素については、同一の符号を付し、説明を省略する。
【０３４０】
図２０に示すように、画像復号化装置２００は、デコーダ２１０とメモリ１５０とを備えている。
【０３４１】
デコーダ２１０は、デコーダ１１０と同様に、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ２１０は、ストリーム分割部２３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）２２０とを備えている。
【０３４２】
ストリーム分割部２３０は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の修正処理を除き、ストリーム分割部１３０と同等の処理を実行する。ストリーム分割部２３０の詳細は、図２１を用いて後述する。
【０３４３】
Ｎ個のデコードエンジン２２０は、Ｎ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部に相当する。Ｎ個のデコードエンジン２２０は、ストリーム分割部２３０によって分割ストリームに挿入された累積ＱＰ変化量を用いてＱＰ値を算出する点を除いて、Ｎ個のデコードエンジン１２０と同等の処理を実行する。
【０３４４】
続いて、ストリーム分割部２３０の構成および動作について詳細に説明する。
【０３４５】
図２１は、ストリーム分割部２３０の構成を示すブロック図である。
【０３４６】
ストリーム分割部２３０は、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの代わりに、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂを備えている点が、図７に示すストリーム分割部１３０と異なる。
【０３４７】
スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢスキップラン情報が、互いに異なる分割ストリームに割り当てられる少なくとも２つのＭＢラインに跨って連続するマクロブロックの個数を示す場合には、ＭＢラインごとのブロックの個数を示すようにＭＢスキップラン情報を分割する。
【０３４８】
ただし、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと異なり、各分割ストリームにおいて、複数のＭＢスキップラン情報を１つのＭＢスキップラン情報に結合しない。
【０３４９】
ＱＰデルタ挿入部２３８ａ、２３８ｂは、ＱＰデルタ修正部１３８ａ、１３８ｂと同様に、ＱＰ変化量が、２つのＭＢラインに跨るマクロブロック間の変化量を示す場合には、各分割ストリームにおけるマクロブロックの新たな前後関係に基づくＱＰ変化量を計算する。
【０３５０】
ただし、ＱＰデルタ挿入部２３８ａ、２３８ｂは、計算したＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。これにより、各分割ストリームには、新たなＱＰ変化量が挿入（設定）される。つまり、ＱＰデルタ挿入部２３８ａ、２３８ｂは、各マクロブロックに含まれているＱＰ変化量を修正しない。
【０３５１】
分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部２３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ挿入部２３８ａから取得した累積ＱＰ変化量とを含める。
【０３５２】
分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ挿入部２３８ｂから取得した累積ＱＰ変化量を含める。
【０３５３】
次に、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂの動作について、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの動作と異なる点を中心に、詳細に説明する。
【０３５４】
なお、以降の説明において、ＱＰデルタ挿入部２３８ａ、２３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ挿入部２３８と総称する。
【０３５５】
図２２は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【０３５６】
図２２に示されたピクチャには、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。
【０３５７】
また前述したように、スキップマクロブロックには、ＱＰ変化量が含まれない。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０３５８】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０３５９】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置する、ＱＰ変化量を含むマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン２２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。
【０３６０】
そこでＱＰデルタ挿入部２３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＭＢラインへ挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。つまり、ＱＰデルタ挿入部２３８は、ＱＰ変化量が２つのＭＢラインを跨ぐブロック間のＱＰ値の差分値を示すことにより、その２つのＭＢラインが依存関係を有する場合に、その依存関係を断つように、ＭＢラインの先頭に挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。
【０３６１】
なお、本実施の形態では、ＭＢラインの先頭にＱＰ変化量が挿入されているが、必ずしもＭＢラインの先頭にＱＰ変化量が挿入される必要はない。例えば、ＭＢラインの先頭のマクロブロック内など他の場所にＱＰ変化量が挿入されてもよい。
【０３６２】
ＭＢラインの先頭に挿入するためのＱＰ変化量の計算方法としては、実施の形態１と同様に、全てのマクロブロックについてＱＰ値を復元することによりＱＰ変化量を計算する方法と、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することによりＱＰ変化量を計算する方法とが考えられる。本実施の形態では、後者の計算方法について説明する。
【０３６３】
ＱＰデルタ挿入部２３８は、ＭＢラインＬ３〜Ｌ５に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を再び符号化し、符号化された累積ＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。その結果、図２２に示すように、累積ＱＰ変化量は、ＭＢラインＬ６の先頭に挿入される。つまり、第２分割ストリームには、累積ＱＰ変化量と、もともとマクロブロックＣに含まれていたＱＰ変化量とが設定される。なお、累積ＱＰ変化量の詳細な計算方法は、実施の形態１と同様であるので説明を省略する。
【０３６４】
なお、ここではＭＢラインＬ６に着目して説明したが、ＱＰデルタ挿入部２３８は、他のＭＢラインについても、累積ＱＰ変化量をＭＢラインの先頭に挿入するために、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。例えば、ＱＰデルタ挿入部２３８は、ＭＢラインＬ７の先頭に挿入するための累積ＱＰ変化量として、ＭＢラインＬ４〜Ｌ６に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を符号化し、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。これらの処理は、分割ストリーム毎に独立して行われる。
【０３６５】
このように、本実施の形態では、累積ＱＰ変化量がＭＢラインの先頭に挿入されるので、ＭＢラインを跨いでスキップマクロブロックは連続しない。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａと異なり、ＭＢスキップラン情報の結合処理を行わない。
【０３６６】
例えば、図２２に示されたピクチャの場合、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部２３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。
【０３６７】
ここで、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックと、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックとの間には、上述したように累積ＱＰ変化量が新たなＱＰ変化量として挿入される。そこで、スキップラン修正部２３７ａは、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックに対応するＭＢスキップラン情報とを再結合しない。
【０３６８】
なお、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０３６９】
図２３は、スキップラン修正部２３７ａの構成を示すブロック図である。なお、図２３において、図１４と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
【０３７０】
スキップラン修正部２３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、およびスキップラン符号化部１６４を備えている。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａからスキップラン累積・保持部１６２と加算部１６３とを除いた構成と同様である。なお、スキップラン分割部１６１は、分割したＭＢスキップラン情報をスキップラン符号化部１６４に出力する。
【０３７１】
図２４は、スキップラン修正部２３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。なお、図２４において、図１５と同様の処理を行うステップについては、同一の符号を付し、説明を省略する。
【０３７２】
まずスキップラン修正部２３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。すなわち、スキップラン修正部２３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別しない。これは、後述するように、スキップラン修正部２３７ａは、先行ＭＢスキップラン情報を内部に保持しないため、スライス終端に到達したときの先行ＭＢスキップラン情報の出力処理が不要だからである。
【０３７３】
ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部２３７ａは、処理の最初に戻りストリームを再度読み進める。
【０３７４】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。
【０３７５】
続いて、スキップラン修正部２３７ａは、実施の形態１と同様に、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０３７６】
ここで、連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０３７７】
一方、連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。ここで、図１５に示すステップＳ２０８およびステップＳ２１０の処理が実行されないのは、本実施の形態におけるスキップラン修正部２３７ａは、ＭＢスキップラン情報を再結合しないからである。
【０３７８】
その後、スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０３７９】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。
【０３８０】
さらにスキップラン修正部２３７ａは、分割したＭＢスキップラン情報のうち、前半部をＭＢスキップラン情報として再符号化する（ステップＳ２５０）。その後スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力する（ステップＳ２５２）。つまり、本実施の形態では、ＭＢスキップラン情報を再結合する必要がないので、実施の形態１のように先行ＭＢスキップラン情報を内部に保持しない。
【０３８１】
次にスキップラン修正部２３７ａは、実施の形態１と同様に、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０３８２】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部２３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０３８３】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割および出力処理を行う。
【０３８４】
以上説明した処理が、スキップラン修正部２３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部２３７ａでは、ＭＢスキップラン情報の分割が適切に行われる。
【０３８５】
図２５は、ＱＰデルタ挿入部２３８による累積ＱＰ変化量の挿入処理を示すフローチャートである。なお、図２５において、図１８と同様の処理を行うステップについては、同一の符号を付し、詳細な説明を省略する。
【０３８６】
マクロブロックの処理が開始されると、ＱＰデルタ挿入部２３８は、実施の形態１と同様に、ステップＳ３００〜ステップＳ３１６までの処理を実行する。
【０３８７】
そして、処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが割り当てられる分割ストリームに対応する累積ＱＰ変化量を符号化し、分割点検出部１３９に出力する（ステップＳ３５２）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報を出力する前に、累積ＱＰ変化量を出力する。
【０３８８】
続いて、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３５４）。そして、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５６）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、ＱＰ変化量を修正することなくそのまま出力する。
【０３８９】
一方、処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５０）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、そのＱＰ変化量を修正することなく、ＭＢ情報を出力する。
【０３９０】
以上のように、ＱＰデルタ挿入部２３８は、ＭＢラインの先頭に挿入するために累積した新たなＱＰ変化量（累積ＱＰ変化量）と、符号化ストリームに含まれていたＱＰ変化量とを分割点検出部１３９に出力する。
【０３９１】
このように、本実施の形態における画像復号化装置２００では、実施の形態１における画像復号化装置１００と同様に、Ｎ個のデコードエンジン２２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。
【０３９２】
特に、ＭＢラインの先頭に位置するマクロブロックがＱＰ変化量を含まない場合であっても、本実施の形態における画像復号化装置２００は、新たなＱＰ変化量をＭＢラインに挿入することにより、並行して復号化処理が行われるときに正しいＱＰ値を得ることができる。
【０３９３】
また、このような本実施の形態における画像復号化装置２００は、実施の形態１における画像復号化装置１００と同様に、ストリーム分割部２３０に入力されるモード情報に応じて、図１９Ａ〜図１９Ｃに示した高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０３９４】
これにより、本実施の形態における画像復号化装置２００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。
【０３９５】
次に、上記実施の形態１および２に係る画像復号化装置の適用例について説明する。
【０３９６】
図２６は、上記実施の形態１および２に係る画像復号化装置の適用例を示す図である。
【０３９７】
例えば、上記実施の形態１および２に係る画像復号化装置は、図２６に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生する再生装置１０１に備えられる。再生装置１０１は、ＢＳデジタル放送の放送波を受信するアンテナ１０１ａと装置本体１０１ｂとを備え、装置本体１０１ｂは上述の画像復号化装置を備える。
【０３９８】
装置本体１０１ｂに備えられた画像復号化装置は、アンテナ１０１ａによって受信された放送波から例えば４ｋ２ｋの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してＮ個の分割ストリームを生成し、Ｎ個の分割ストリームを並列に復号化する。
【０３９９】
以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態を用いて説明したが、本発明は、これらに限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を上記実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０４００】
例えば、上記実施の形態では、画像復号化装置１００、２００は分割ストリームバッファ１５２などを備えていたが、これらを備えていなくてもよい。
【０４０１】
図２７は、本発明の実施の形態における画像復号化装置の最小構成を示すブロック図である。
【０４０２】
画像復号化装置１０は、本発明を実現するための最小構成を有し、取得部１１、ストリーム分割部１２、およびＮ個の復号化部１３を備えている。
【０４０３】
取得部１１は、ストリームバッファ１５１、若しくはストリームバッファ１５１から画像復号化装置１０に符号化ストリームを取り込むための取得装置（あるいは単なる取得口）に相当し、画像データが符号化された符号化ストリームを取得する。ストリーム分割部１２は、ストリーム分割部１３０、２３０に相当する。つまり、ストリーム分割部１２は、取得部１１で取得された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。Ｎ個の復号化部１３は、デコードエンジン１２０、２２０に相当し、ストリーム分割部１２により生成されたＮ個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部１２は、Ｎ個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の復号化部１３の何れかにスライスとして認識されるように、スライス部分群を新たなスライスとして再構成する。
【０４０４】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【０４０５】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。また、複数のスライス部分のうち、符号化ストリームにおいて連続する少なくとも２つのスライス部分が、符号化ストリームに含まれる所定の符号語による依存関係を有する場合がある。
【０４０６】
そこで上記実施の形態では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部１３は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、上記実施の形態では、Ｎ個の復号化部１３のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【０４０７】
したがって、画像復号化装置１０は、上記実施の形態における分割ストリームバッファ１５２などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０４０８】
例えば、上記実施の形態では、１ＭＢラインを１つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は１ＭＢラインに限らず、２ＭＢラインや、３ＭＢラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがＭＢＡＦＦで構成されている場合には、２ＭＢラインを構成単位として扱い、ピクチャがＭＢＡＦＦで構成されていない場合には、１ＭＢラインを構成単位として扱ってもよい。
【０４０９】
また、上記実施の形態では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のＭＢラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのＭＢラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
【０４１０】
また、上記実施の形態では、ストリーム分割部は、ＱＰ変化量の修正およびＱＰ変化量の挿入のどちらか一方を実行していたが、両方を実行してもよい。その場合、ストリーム分割部は、例えば、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいるか否かを判定すればよい。ここで、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいる場合、ストリーム分割部は、当該マクロブロックのＱＰ変化量の置き換え等を行えばよい（図１８のステップＳ３１８〜Ｓ３２２）。一方、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいない場合、ストリーム分割部は、累積ＱＰ変化量の出力等を行えばよい（図２５のステップＳ３５２〜Ｓ３５６）。
【０４１１】
さらに、ストリーム分割部がＱＰ変化量の修正およびＱＰ変化量の挿入の両方を実行する場合、スキップラン修正部は、例えば、ＭＢスキップラン情報がＭＢラインの先頭に位置しているときに、そのＭＢラインの先頭にＱＰ変化量が挿入されるか否かを判定することが好ましい。ここで、ＭＢラインの先頭にＱＰ変化量が挿入されない場合、スキップラン修正部は、ＭＢスキップラン情報に先行ＭＢスキップラン情報を加算すればよい（図１５のＳ２１０）。一方、ＭＢラインの先頭にＱＰ変化量が挿入される場合、先行ＭＢスキップラン情報とＭＢスキップラン情報とをそれぞれＭＢスキップラン情報として出力すればよい。
【０４１２】
また、上記実施の形態では、第１の符号語がＭＢスキップラン情報である場合について説明したが、必ずしも第１の符号語はＭＢスキップラン情報である必要はない。例えば、第１の符号語は、スキップマクロブロックとは異なる種類のマクロブロックが連続することを示す符号語であってもよい。
【０４１３】
また、上記実施の形態では、第２の符号語がＱＰ変化量である場合について説明したが、必ずしも第２の符号語はＱＰ変化量である必要はない。例えば、第２の符号語は、ＱＰ変化量とは異なる、マクロブロック間における符号化係数の変化量を示す符号語であってもよい。
【０４１４】
なお、ブロック図（図１、図７、図９、図１４、図２０、図２１、および図２３など）の各機能ブロックは典型的には集積回路であるＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）として実現される。これらは個別に１チップ化されても良いし、一部または全てを含むように１チップ化されても良い。例えば、図１のデコーダ１１０で表される部分（ストリーム分割部１３０と、第１デコードエンジン〜第Ｎデコードエンジン１２０とを含んだもの）が１チップに含まれていても良い。
【０４１５】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０４１６】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０４１７】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０４１８】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという効果を奏し、例えば、４ｋ２ｋの符号化ストリームを復号化する再生装置などとして有用である。
【符号の説明】
【０４１９】
１０、１００、２００    画像復号化装置
１１    取得部
１２、１３０、２３０    ストリーム分割部
１３    復号化部
１１０、２１０    デコーダ
１２０、２２０    第１〜第Ｎデコードエンジン（デコードエンジン）
１３１    スタートコード検出部
１３２ａ    ＥＰＢ除去部
１３２ｂ    ＥＰＢ挿入部
１３３    スライスヘッダ挿入部
１３３ａ    ＮＡＬタイプ判定部
１３３ｂ    ヘッダ挿入カウンタ
１３３ｃ    ヘッダアドレス更新部
１３３ｄ    ヘッダバッファ
１３４、１３４ａ、１３４ｂ    スライスデータ処理部
１３５ａ、１３５ｂ    スライスデータ層デコード部
１３６ａ、１３６ｂ    マクロブロック層デコード部
１３７ａ、２３７ａ    スキップラン修正部
１３８、１３８ａ、１３８ｂ    ＱＰデルタ修正部
１３９、１３９ａ、１３９ｂ    分割点検出部
１５０    メモリ
１５１    ストリームバッファ
１５２    分割ストリームバッファ
１５３    フレームメモリ
１６０    スキップラン抽出部
１６１    スキップラン分割部
１６２    スキップラン累積・保持部
１６３    加算部
１６４    スキップラン符号化部
２３８、２３８ａ、２３８ｂ    ＱＰデルタ挿入部
【図１】
2010067505.tif 000003
【図２Ａ】
2010067505.tif 000004
【図２Ｂ】
2010067505.tif 000005
【図３】
2010067505.tif 000006
【図４】
2010067505.tif 000007
【図５】
2010067505.tif 000008
【図６】
2010067505.tif 000009
【図７】
2010067505.tif 000010
【図８】
2010067505.tif 000011
【図９】
2010067505.tif 000012
【図１０】
2010067505.tif 000013
【図１１Ａ】
2010067505.tif 000014
【図１１Ｂ】
2010067505.tif 000015
【図１２】
2010067505.tif 000016
【図１３Ａ】
2010067505.tif 000017
【図１３Ｂ】
2010067505.tif 000018
【図１４】
2010067505.tif 000019
【図１５】
2010067505.tif 000020
【図１６Ａ】
2010067505.tif 000021
【図１６Ｂ】
2010067505.tif 000022
【図１７】
2010067505.tif 000023
【図１８】
2010067505.tif 000024
【図１９Ａ】
2010067505.tif 000025
【図１９Ｂ】
2010067505.tif 000026
【図１９Ｃ】
2010067505.tif 000027
【図２０】
2010067505.tif 000028
【図２１】
2010067505.tif 000029
【図２２】
2010067505.tif 000030
【図２３】
2010067505.tif 000031
【図２４】
2010067505.tif 000032
【図２５】
2010067505.tif 000033
【図２６】
2010067505.tif 000034
【図２７】
2010067505.tif 000035
【図２８】
2010067505.tif 000036
【図２９】
2010067505.tif 000037
【図３０】
2010067505.tif 000038
【図３１】
2010067505.tif 000039
【図３２】
2010067505.tif 000040
【図３３】
2010067505.tif 000041
【図３４Ａ】
2010067505.tif 000042
【図３４Ｂ】
2010067505.tif 000043
【図３５】
2010067505.tif 000044
【手続補正書】
【提出日】平成22年3月17日(2010.3.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第１の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第１の符号語が、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも２つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第１の符号語を、前記少なくとも２つの連続するスライス部分がそれぞれ割り当てられる少なくとも２つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、さらに、
各分割ストリームにおいて、設定される複数の第１の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第１の符号語を、前記複数の第１の符号語のそれぞれが示す個数の総和を示す１つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項２に記載の画像復号化装置。
【請求項４】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第２の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語が、符号化ストリームにおいて連続する２つのスライス部分に跨るブロック間の変化量を示すことにより、前記２つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記２つのスライス部分がそれぞれ割り当てられる２つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項５】
前記ストリーム分割部は、
計算した変化量に修正した前記第２の符号語を前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項６】
前記ストリーム分割部は、
計算した変化量を示す新たな符号語と前記第２の符号語とを前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項７】
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第２の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
第２の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を０にリセットする、
請求項８に記載の画像復号化装置。
【請求項１０】
前記Ｎ個の復号化部は、第１および第２の復号化部を含み、
前記第１の復号化部が、前記Ｎ個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記Ｎ個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が前記符号化ピクチャ内で互いに隣接していた場合には、
前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、
前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する、
請求項１〜９のいずれか１項に記載の画像復号化装置。
【請求項１１】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１２】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１３】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
集積回路。
【手続補正書】
【提出日】平成22年8月4日(2010.8.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データが符号化された符号化ストリームを復号化する画像復号化装置および画像復号化方法に関し、特に、復号化を並列に実行する画像復号化装置および画像復号化方法に関する。
【背景技術】
【０００２】
動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。
【０００３】
図２８は、符号化されるピクチャの構成を示す図である。
【０００４】
ピクチャは１６×１６画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位をマクロブロックライン（ＭＢライン）という。
【０００５】
図２９は、符号化ストリームの構成を示す図である。
【０００６】
符号化ストリームは、階層化されており、図２９の（ａ）に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット（ＳＰＳ）が含まれる。また、その符号化されたピクチャは、図２９の（ｂ）に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図２９の（ｃ）に示すように、ヘッダと、複数のマクロブロック（ＭＢ）とを含んで構成されている。なお、図２９の（ｂ）に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット（ＰＰＳ）が含まれる。
【０００７】
図３０は、従来の画像復号化装置の構成を示す図である。
【０００８】
画像復号化装置３００は、メモリ３１０およびデコードエンジン３２０を備えている。メモリ３１０は、符号化ストリームを記憶するための領域を有するストリームバッファ３１１と、デコードエンジン３２０から出力される復号画像データを記憶するための領域を有するフレームメモリ３１２とを備えている。画像復号化装置３００は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ３１１に格納する。
【０００９】
デコードエンジン３２０は、そのストリームバッファ３１１から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ３１２に格納する。また、デコードエンジン３２０は、復号化するときには、フレームメモリ３１２に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。
【００１０】
そして、フレームメモリ３１２に格納された復号画像データは、表示順に表示装置に出力されて表示される。
【００１１】
図３１は、デコードエンジン３２０の構成を示す図である。
【００１２】
デコードエンジン３２０は、エントロピー復号部３２１、逆変換部３２２、加算器３２３、デブロッキングフィルタ３２４、動き補償部３２５、重み付き予測部３２６、画面内予測部３２７、およびスイッチ３２８を備えている。
【００１３】
エントロピー復号部３２１は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部３２２に出力する。
【００１４】
逆変換部３２２は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。
【００１５】
加算器３２３は、逆変換部３２２から出力された差分画像データと、重み付き予測部３２６または画面内予測部３２７からスイッチ３２８を介して出力された予測画像データとを加算することにより復号画像データを生成する。
【００１６】
デブロッキングフィルタ３２４は、加算器によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ３１２に格納する。
【００１７】
動き補償部３２５は、フレームメモリ３１２に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部３２６に出力する。
【００１８】
重み付き予測部３２６は、動き補償部３２５から出力された予測画像データに重みを付けてスイッチ３２８に出力する。
【００１９】
画面内予測部３２７は画面内予測を行う。つまり、画面内予測部３２７は、加算器３２３によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ３２８に出力する。
【００２０】
スイッチ３２８は、逆変換部３２２から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部３２７から出力される予測画像データを加算器３２３に出力する。また、スイッチ３２８は、逆変換部３２２から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部３２６から出力される予測画像データを加算器３２３に出力する。
【００２１】
ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、ＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる４ｋ２ｋ解像度による動画像の実用化が検討されている。
【００２２】
図３２は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【００２３】
ＨＤの符号化ストリームは、地上デジタル放送やＢＳデジタル放送などで配信されており、解像度「１９２０×１０８０画素」のピクチャが３０フレーム／秒のフレームレートで復号化されて表示される。４ｋ２ｋの符号化ストリームは、２０１１年から高度ＢＳデジタル放送で試験的に配信される予定であり、解像度「３８４０×２１６０画素」のピクチャが６０フレーム／秒のフレームレートで復号化されて表示される。
【００２４】
つまり、４ｋ２ｋでは、ＨＤよりも縦および横のそれぞれで２倍の解像度を有し、且つ２倍のフレームレートを有する。
【００２５】
さらに、縦および横のそれぞれで４ｋ２ｋの２倍に高解像度化された８ｋ４ｋの画像（７６８０×４３２０画素）の符号化および復号化が検討されようとしている。
【００２６】
このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図３０に示す画像復号化装置３００のデコードエンジン３２０は、４ｋ２ｋの符号化ストリームを復号化する場合には、現実的には困難な１ＧＨｚ以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。
【００２７】
図３３は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。
【００２８】
画像復号化装置４００は、メモリ３１０およびデコーダ４２０を備えている。デコーダ４２０は、図３０および図３１に示すデコードエンジン３２０と同様の機能を有するデコードエンジン４２１をＮ個（例えばＮ＝４）備えている。Ｎ個のデコードエンジン４２１（第１デコードエンジン４２１〜第Ｎデコードエンジン４２１）のそれぞれは、ストリームバッファ３１１に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ３１２に出力する。
【００２９】
図３４Ａおよび図３４Ｂは、復号化の並列処理の一例を説明するための説明図である。
【００３０】
例えば、画像復号化装置４００は、４つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ３１１に格納する。これらの４つの領域符号化ストリームのそれぞれは、独立したストリームであり、図３４Ａに示すように、一つの画面が４等分されたうちの１つの領域の動画像を示すストリームである。画像復号化装置４００の４つのデコードエンジン４２１（例えばＮ＝４）はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ３１１から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。
【００３１】
または、画像復号化装置４００は、４つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ３１１に格納する。４つのスライスは、図３４Ｂに示すように、ピクチャを縦方向に４等分することによって生成されている。画像復号化装置４００の４つのデコードエンジン４２１（例えばＮ＝４）はそれぞれ、自らが処理すべきスライスをストリームバッファ３１１から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。
【００３２】
しかしながら、図３４Ａに示すように、１つの符号化ストリームを４つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。
【００３３】
また、図３４Ｂに示すように、１つのピクチャを４等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。
【００３４】
具体的には、動画像の符号化および復号化の規格であるＭＰＥＧ−２（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ｐｈａｓｅ  ２）では、ＭＢラインの境界で必ずスライスが分離されている。また、Ｈ．２６４／ＡＶＣでは、ピクチャに設定されるスライスの大きさや位置は任意であり、１ピクチャに１スライスしか設定されない場合もある。したがって、図３４Ｂに示すように、スライスの位置および大きさを一義的に設定してしまうことは、デジタル放送システムの運用規格など、システム全体の変更が必要となり、その負担は膨大である。
【００３５】
そこで、そのような運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。
【００３６】
例えば、特許文献１および特許文献２の画像復号化装置は、ＭＰＥＧ−２により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。
【００３７】
また、特許文献３の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームのピクチャをＭＢラインごとに分離し、各ＭＢラインの復号化処理を並列に実行する。
【００３８】
図３５は、特許文献３の画像復号化装置による復号化処理を説明するための説明図である。
【００３９】
画像復号化装置の第１デコードエンジンは、ピクチャにある０行目のＭＢラインを復号化し、２番目のデコードエンジンは、ピクチャにある１行目のＭＢラインを復号化し、３番目のデコードエンジンは、ピクチャにある２行目のＭＢラインを復号化する。
【００４０】
また、各デコードエンジンは、ＭＢラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。
【００４１】
特許文献４の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームを取得すると、その符号化ストリームのＭＢラインの境界に行ヘッダを挿入し、各ＭＢラインの復号化処理を並列に実行する。この画像復号化装置のデコードエンジンのそれぞれは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出し、そのＭＢラインの復号化を実行する。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開平６−２２５２７８号公報
【特許文献２】特開平８−１３０７４５号公報
【特許文献３】特開２００６−１２９２８４号公報
【特許文献４】米国特許第７３０５０３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００４３】
しかしながら、上記特許文献１〜４の画像復号化装置では、復号化の並列処理を適切に実行できないという問題や、装置の構成が複雑になってしまうという問題がある。
【００４４】
つまり、上記特許文献１および特許文献２の画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、Ｈ．２６４／ＡＶＣの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、１ピクチャが１スライスで構成されている場合には、そのピクチャを分割することができず、１つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。
【００４５】
また、上記特許文献３および特許文献４の画像復号化装置では、Ｈ．２６４／ＡＶＣのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。
【００４６】
そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
上記目的を達成するために、本発明の一態様に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、符号化ストリームを取得する取得部と、前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、前記ストリーム分割部は、前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する。
【００４８】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【００４９】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。
【００５０】
そのため、このようなスライス部分群では、符号化ピクチャが分割される前に対してマクロブロックライン単位での前後関係が変化している。したがって、連続する複数のマクロブロックラインが、所定の符号語による依存関係を有する場合、その依存関係が保てなくなり、そのままでは復号化部は分割ストリームを復号化できない。
【００５１】
そこで本発明では、このようなスライス部分群内で連続するマクロブロックラインの新たな前後関係に従って分割ストリームに符号語を設定する。これにより、スライス部分群は新たなスライスとして再構成されるため、そのスライス部分群を含む分割ストリームを復号化する復号化部は、そのスライス部分群を認識するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識することができる。つまり、本発明では、Ｎ個の復号化部のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置の全体構成を簡単にすることができる。
【００５２】
また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第１の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第１の符号語が、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも２つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第１の符号語を、前記少なくとも２つの連続するスライス部分がそれぞれ割り当てられる少なくとも２つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
【００５３】
これにより、符号化ストリームに第１の符号語が含まれる場合であっても、第１の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第１の符号語を適切に復号化することができる。
【００５４】
また、前記ストリーム分割部は、さらに、各分割ストリームにおいて、設定される複数の第１の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第１の符号語を、前記複数の第１の符号語のそれぞれが示す個数の総和を示す１つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
【００５５】
これにより、符号化ストリームに第１の符号語が含まれ、かつ再構成前には分割ストリーム内で第１の符号語が連続する場合であっても、第１の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第１の符号語を適切に復号化することができる。
【００５６】
また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第２の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第２の符号語が、符号化ストリームにおいて連続する２つのスライス部分に跨るブロック間の変化量を示すことにより、前記２つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記２つのスライス部分がそれぞれ割り当てられる２つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
【００５７】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、符号語が分割ストリームに設定される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。
【００５８】
また、前記ストリーム分割部は、計算した変化量に修正した前記第２の符号語を前記分割ストリームに設定するとしてもよい。
【００５９】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、第２の符号語が修正される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。
【００６０】
また、前記ストリーム分割部は、計算した変化量を示す新たな符号語と前記第２の符号語とを前記分割ストリームに設定するとしてもよい。
【００６１】
これにより、符号化ストリームに第２の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第２の符号語に基づいて適切な値が算出されるように、分割ストリームに新たな符号語が挿入される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第２の符号語から符号化係数を復元することができる。
【００６２】
また、前記ストリーム分割部は、前記符号化ストリームに含まれる第２の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。
【００６３】
これにより、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を簡易な方法で計算することができる。
【００６４】
また、前記ストリーム分割部は、前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第２の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。
【００６５】
また、前記ストリーム分割部は、第２の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を０にリセットすることが好ましい。
【００６６】
これにより、各ブロックの符号化係数を復元することなく、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算することができるため、ストリーム分割部の構成を簡単にすることが出来る。
【００６７】
なお、本発明は、このような画像復号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００６８】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという作用効果を奏する。
【図面の簡単な説明】
【００６９】
【図１】図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【図２Ｂ】図２Ｂは、本発明の実施の形態１におけるピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【図３】図３は、本発明の実施の形態１におけるスライスヘッダの挿入処理を説明するための説明図である。
【図４】図４は、本発明の実施の形態１におけるＭＢアドレス情報の更新処理を説明するための説明図である。
【図５】図５は、本発明の実施の形態１におけるスライス終端処理を説明するための説明図である。
【図６】図６は、本発明の実施の形態１における画像復号化装置の全体的な動きを示すフローチャートである。
【図７】図７は、本発明の実施の形態１におけるストリーム分割部の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態１におけるスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。
【図９】図９は、本発明の実施の形態１におけるスライスヘッダ挿入部の構成を示すブロック図である。
【図１０】図１０は、本発明の実施の形態１における分割ストリームバッファの第１領域〜第４領域に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【図１１Ａ】図１１Ａは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１１Ｂ】図１１Ｂは、本発明の実施の形態１におけるスライス終端情報が設定される位置を示す図である。
【図１２】図１２は、本発明の実施の形態１における分割点検出部の動作を示すフローチャートである。
【図１３Ａ】図１３Ａは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１３Ｂ】図１３Ｂは、本発明の実施の形態１におけるＭＢスキップラン情報の修正処理を説明するための説明図である。
【図１４】図１４は、本発明の実施の形態１におけるスキップラン修正部の構成を示すブロック図である。
【図１５】図１５は、本発明の実施の形態１におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図１６Ａ】図１６Ａは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図１６Ｂ】図１６Ｂは、本発明の実施の形態１におけるＱＰ変化量の修正処理を説明するための説明図である。
【図１７】図１７は、本発明の実施の形態１におけるＱＰ変化量の累積を説明するための説明図である。
【図１８】図１８は、本発明の実施の形態１におけるＱＰデルタ修正部によるＱＰ変化量の修正処理を示すフローチャートである。
【図１９Ａ】図１９Ａは、本発明の実施の形態１における高解像度デコードを説明するための説明図である。
【図１９Ｂ】図１９Ｂは、本発明の実施の形態１における高速デコードを説明するための説明図である。
【図１９Ｃ】図１９Ｃは、本発明の実施の形態１における複数チャンネルデコードを説明するための説明図である。
【図２０】図２０は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。
【図２１】図２１は、本発明の実施の形態２におけるストリーム分割部の構成を示すブロック図である。
【図２２】図２２は、本発明の実施の形態２におけるＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【図２３】図２３は、本発明の実施の形態２におけるスキップラン修正部の構成を示すブロック図である。
【図２４】図２４は、本発明の実施の形態２におけるスキップラン修正部によるＭＢスキップラン情報の修正動作を示すフローチャートである。
【図２５】図２５は、本発明の実施の形態２におけるＱＰデルタ挿入部による累積ＱＰ変化量の挿入処理を示すフローチャートである。
【図２６】図２６は、本発明の実施の形態に係る画像復号化装置の適用例を示す図である。
【図２７】図２７は、本発明の実施の形態に係る画像復号化装置の最小構成を示すブロック図である。
【図２８】図２８は、符号化されるピクチャの構成を示す図である。
【図２９】図２９は、符号化ストリームの構成を示す図である。
【図３０】図３０は、従来の画像復号化装置の構成を示す図である。
【図３１】図３１は、従来のデコードエンジンの構成を示す図である。
【図３２】図３２は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【図３３】図３３は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。
【図３４Ａ】図３４Ａは、従来の復号化並列処理の一例を説明するための説明図である。
【図３４Ｂ】図３４Ｂは、従来の復号化並列処理の一例を説明するための説明図である。
【図３５】図３５は、従来の画像復号化装置による復号化処理を説明するための説明図である。
【発明を実施するための形態】
【００７０】
以下、本発明の実施の形態における画像復号化装置について図面を参照しながら説明する。
【００７１】
（実施の形態１）
図１は、本発明の実施の形態１における画像復号化装置の構成を示すブロック図である。
【００７２】
本実施の形態における画像復号化装置１００は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ１１０とメモリ１５０とを備えている。
【００７３】
メモリ１５０は、デコーダ１１０に入力されるデータ、デコーダ１１０により中間的に生成されたデータ、およびデコーダ１１０により最終的に生成されて出力されるデータを記憶するための領域を有する。
【００７４】
具体的には、メモリ１５０は、ストリームバッファ１５１と、分割ストリームバッファ１５２と、フレームメモリ１５３とを備えている。
【００７５】
ストリームバッファ１５１には、画像符号化装置により生成されて送信された符号化ストリームが格納される。つまり、本実施の形態では、このストリームバッファ１５１が符号化ストリームを取得する取得部として構成されている。分割ストリームバッファ１５２には、デコーダ１１０により生成されるＮ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。フレームメモリ１５３には、Ｎ個のデコードエンジン（復号化部）１２０によって生成されたＮ個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ１５３に格納され、表示装置に読み込まれて動画像として表示される。
【００７６】
デコーダ１１０は、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ１１０は、ストリーム分割部１３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）１２０とを備えている。
【００７７】
なお、本実施の形態におけるデコードエンジン１２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有する。
【００７８】
ストリーム分割部１３０は、後述するモード情報を取得し、そのモード情報に応じて符号化ストリームをＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）に分割する。つまり、本実施の形態におけるストリーム分割部１３０は、符号化ストリームに含まれる符号化されたピクチャごとに、そのピクチャを複数のＭＢラインに分割する。そして、ストリーム分割部１３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。
【００７９】
なお、ＭＢラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位である。また、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されていない場合には、ピクチャを複数のＭＢラインに分割するが、ピクチャがＭＢＡＦＦで構成されている場合には、２つのＭＢラインを１つの構成単位（以下、ＭＢラインペアという）として扱い、ピクチャを複数のＭＢラインペアに分割する。言い換えれば、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦで構成されている場合には、ピクチャを複数のＭＢラインに分割し、ＭＢラインペアに属する２つのＭＢラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがＭＢＡＦＦで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがＭＢＡＦＦで構成されていない場合と、ＭＢＡＦＦで構成されている場合とで異なる処理が必要なときには、その都度、ＭＢＡＦＦに対して特有の処理を説明する。また、ＭＢＡＦＦに対してその特有な処理などが必要とされない場合には、以下の説明において、ＭＢラインをＭＢラインペアに置き換えることによって、その説明を、ピクチャがＭＢＡＦＦで構成されている場合における本発明の説明に置き換えることができる。
【００８０】
ストリーム分割部１３０は、ピクチャを複数のＭＢラインに分割する際に、符号化ストリーム中のＭＢラインの直前、または、そのＭＢラインに属する２つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのＭＢラインに付随させて、分割ストリームの一部に割り当てる。
【００８１】
このようなストリーム分割部１３０によるＭＢラインごとの分割によって、ピクチャに含まれる、複数のＭＢラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部１３０は、Ｎ個の分割ストリームに分割するときには、Ｎ個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
【００８２】
Ｎ個のデコードエンジン１２０は、それぞれ自らが処理すべき分割ストリームを分割ストリームバッファ１５２から読み出し、読み出した分割ストリームを並列に復号化することによりＮ個の分割復号画像データを生成する。例えば、第１デコードエンジン１２０は第１分割ストリームを分割ストリームバッファ１５２から読み出し、第２デコードエンジン１２０は第２分割ストリームを分割ストリームバッファ１５２から読み出し、第３デコードエンジン１２０は第３分割ストリームを分割ストリームバッファ１５２から読み出し、第４デコードエンジン１２０は第４分割ストリームを分割ストリームバッファ１５２から読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【００８３】
また、Ｎ個のデコードエンジン１２０は、分割ストリームを復号化するときには、フレームメモリ１５３に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
【００８４】
さらに、Ｎ個のデコードエンジン１２０のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン１２０から、それらの復号化されたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したデコードエンジン１２０は、その隣接ＭＢ情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン１２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【００８５】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のデコードエンジン１２０はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接ＭＢ情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
【００８６】
図２Ａは、ピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【００８７】
ピクチャがＭＢＡＦＦで構成されていない場合、第１デコードエンジン１２０は第０ＭＢラインを復号化し、第２デコードエンジン１２０が第１ＭＢラインを復号化し、第３デコードエンジン１２０が第２ＭＢラインを復号化し、第４デコードエンジン１２０が第３ＭＢラインを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【００８８】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインの復号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインの左端のマクロブロックの復号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインの左端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインの左端のマクロブロックの復号化を開始する。
【００８９】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
【００９０】
図２Ｂは、ピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【００９１】
ピクチャがＭＢＡＦＦで構成されている場合、ＭＢラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列（ＭＢライン）を２つ有する構成単位である。ＭＢラインペアは、上下にある２つのマクロブロック（マクロブロックペア）ごとに、適応的にフレーム／フィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがＭＢＡＦＦで構成されていない場合と同様に、第１デコードエンジン１２０は第０ＭＢラインペアを復号化し、第２デコードエンジン１２０が第１ＭＢラインペアを復号化し、第３デコードエンジン１２０が第２ＭＢラインペアを復号化し、第４デコードエンジン１２０が第３ＭＢラインペアを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【００９２】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインペアの復号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインペアの左上端のマクロブロックの復号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインペアの左上端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインペアの左上端のマクロブロックの復号化を開始する。
【００９３】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
【００９４】
なお、ピクチャがＭＢＡＦＦで構成されていない場合、および、ピクチャがＭＢＡＦＦで構成されている場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて復号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて復号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
【００９５】
このような本実施の形態における画像復号化装置１００の特徴は、ストリーム分割部１３０による分割によって生成された、スライスの１つまたは複数の部分（スライス部分）からなるスライス部分群を１つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、ＭＢアドレス情報の更新処理、スキップラン修正処理、およびＱＰデルタ設定処理を含む。また、ＱＰデルタ設定処理は、ＱＰデルタ修正処理およびＱＰデルタ挿入処理を含む。なお、本実施の形態では、ＱＰデルタ設定処理がＱＰデルタ修正処理である場合について説明する。
【００９６】
図３は、スライスヘッダの挿入処理を説明するための説明図である。
【００９７】
例えば、ストリーム分割部１３０は、図３の（ａ）に示すピクチャｐ１を分割する。
【００９８】
ピクチャｐ１は、スライスＡ、スライスＢおよびスライスＣから構成されているとともに、ＭＢラインＬ１〜Ｌ１２から構成されている。
【００９９】
スライスＡは、ＭＢラインＬ１〜Ｌ７にわたって配置され、スライスヘッダｈａと、そのスライスヘッダｈａから連続して配置されている複数のマクロブロックｍｂａとを有する。スライスＢは、ＭＢラインＬ７〜Ｌ８にわたって配置され、スライスヘッダｈｂと、そのスライスヘッダｈｂから連続して配置されている複数のマクロブロックｍｂｂとを有する。スライスＣは、ＭＢラインＬ９〜Ｌ１２にわたって配置され、スライスヘッダｈｃと、そのスライスヘッダｈｃから連続して配置されている複数のマクロブロックｍｂｃとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
【０１００】
ストリーム分割部１３０は、図３の（ｂ）に示すように、上述のピクチャｐ１をＭＢラインごとに分割する。そして、ストリーム分割部１３０は、ＭＢラインＬ１〜Ｌ１２のそれぞれを先頭から順に、第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部１３０は、ＭＢラインＬ１を第１分割ストリームの一部に割り当て、ＭＢラインＬ２を第２分割ストリームの一部に割り当て、ＭＢラインＬ３を第３分割ストリームの一部に割り当て、ＭＢラインＬ４を第４分割ストリームの一部に割り当てる。そして、ストリーム分割部１３０は、第４分割ストリームへのＭＢラインの割り当てが終了すると、第１分割ストリームへのＭＢラインの割り当てを繰り返す。つまり、ストリーム分割部１３０は、ＭＢラインＬ５を第１分割ストリームの一部に割り当て、ＭＢラインＬ６を第２分割ストリームの一部に割り当て、ＭＢラインＬ７を第３分割ストリームの一部に割り当て、ＭＢラインＬ８を第４分割ストリームの一部に割り当てる。
【０１０１】
その結果、第１分割ストリームは連続するＭＢラインＬ１、Ｌ５、Ｌ９を含み、第２分割ストリームは連続するＭＢラインＬ２、Ｌ６、Ｌ１０を含み、第３分割ストリームは連続するＭＢラインＬ３、Ｌ７、Ｌ１１を含み、第４分割ストリームは連続するＭＢラインＬ４、Ｌ８、Ｌ１２を含む。
【０１０２】
なお、ＭＢラインＬ１〜Ｌ６と、ＭＢラインＬ７の先頭側の６マクロブロックからなる集合と、ＭＢラインＬ７の終端側の１０マクロブロックからなる集合と、ＭＢラインＬ８〜Ｌ１２とは、それぞれスライスＡ〜Ｃの一部を構成するスライス部分である。そして、第１分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ１、Ｌ５からスライス部分群（第１分割ストリームにおけるスライスＡ）が構成される。また、第２分割ストリームでは、スライスＢのスライス部分であるＭＢラインＬ２、Ｌ６からスライス部分群（第２分割ストリームにおけるスライスＢ）が構成される。
【０１０３】
ここで、単純にＭＢラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン１２０に認識させることができない場合がある。
【０１０４】
例えば、第１分割ストリームには、上述のように連続するＭＢラインＬ１、Ｌ５、Ｌ９が含まれている。この場合、ＭＢラインＬ１、Ｌ５はスライスＡとして認識されるべきであり、ＭＢラインＬ９はスライスＣとして認識されるべきである。そのためには、第１分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ１の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第１分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ９の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。図３に示す例では、スライスヘッダｈａ、ｈｃがそれぞれＭＢラインＬ１、Ｌ９の先頭に予め配されているため、ストリーム分割部１３０はＭＢラインＬ１、Ｌ５、Ｌ９をスライスヘッダｈａ、ｈｃとともに第１分割ストリームに割り当てればよい。
【０１０５】
一方、第２分割ストリームには、上述のように連続するＭＢラインＬ２、Ｌ６、Ｌ１０が含まれている。この場合、ＭＢラインＬ２、Ｌ６はスライスＡとして認識されるべきであり、ＭＢラインＬ１０はスライスＣとして認識されるべきである。そのためには、第２分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ２の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第２分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ１０の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。
【０１０６】
そこで、本実施の形態におけるストリーム分割部１３０は、ＭＢラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダｈａ、ｈｂ、ｈｃを複製することにより複製スライスヘッダｈａ’、ｈｂ’、ｈｃ’を生成し、それらを分割ストリームに挿入する。
【０１０７】
例えば、ストリーム分割部１３０は、スライスヘッダｈａを複製することにより３つの複製スライスヘッダｈａ’を生成し、その複製スライスヘッダｈａ’をＭＢラインＬ２、Ｌ３、Ｌ４の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｂを複製することにより１つの複製スライスヘッダｈｂ’を生成し、その複製スライスヘッダｈｂ’をＭＢラインＬ８の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｃを複製することにより３つの複製スライスヘッダｈｃ’を生成し、その複製スライスヘッダｈｃ’をＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。
【０１０８】
その結果、第２分割ストリームでは、スライスＡの先頭となるＭＢラインＬ２の直前に、スライスＡのスライスヘッダｈａの複製である複製スライスヘッダｈａ’が配置され、スライスＣの先頭となるＭＢラインＬ１０の直前に、スライスＣのスライスヘッダｈｃの複製である複製スライスヘッダｈｃ’が配置される。これにより、第２デコードエンジン１２０は、複製スライスヘッダｈａ’、ｈｃ’から、第２分割ストリームのスライスＡおよびスライスＣのそれぞれの復号化に必要なパラメータを得ることができる。
【０１０９】
次に、ＭＢアドレス情報の更新処理について説明する。
【０１１０】
ストリーム分割部１３０は、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１１１】
つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのＭＢアドレス情報と同一のＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
【０１１２】
例えば、ピクチャｐ１のスライスＡのスライスヘッダｈａには、そのスライスＡの先頭マクロブロック（ＭＢラインＬ１の先頭マクロブロック）のピクチャｐ１内におけるアドレスを示すＭＢアドレス情報が含まれている。このようなスライスヘッダｈａが複製されることによって生成された複製スライスヘッダｈａ’には、当初、ＭＢラインＬ１の先頭マクロブロックのピクチャｐ１内におけるアドレスを特定するためのＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダｈａ’が、ＭＢラインＬ２の直前に挿入されれば、その複製スライスヘッダｈａ’のＭＢアドレス情報により特定されるアドレスは、第２分割ストリームにおいてその複製スライスヘッダｈａ’を有するスライスＡの先頭マクロブロック（ＭＢラインＬ２の先頭マクロブロック）のピクチャｐ１内におけるアドレスを指し示さず、ＭＢラインＬ１の先頭マクロブロックのアドレスを指し示している。
【０１１３】
そこで、本実施の形態におけるストリーム分割部１３０は、上述のように、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１１４】
図４は、ＭＢアドレス情報の更新処理を説明するための説明図である。
【０１１５】
ストリーム分割部１３０は、まず、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）から、ピクチャの水平方向のマクロブロックの数に関連する情報である“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”を取得する。
【０１１６】
さらに、ストリーム分割部１３０は、複製元のスライスヘッダに含まれるＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
【０１１７】
次に、ストリーム分割部１３０は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のＭＢラインにあるかを示す値“ｍｂｐｏｓｖ”を算出する。なお、値“ｍｂｐｏｓｖ”は０以上の整数である。
【０１１８】
そして、ストリーム分割部１３０は、直前に複製スライスヘッダが挿入されるＭＢラインが、複製元のスライスヘッダが配置されているＭＢラインから見てｎ行離れているときには、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１１９】
なお、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されている場合には、ストリーム分割部１３０は、複製スライスヘッダのＭＢアドレス情報を“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ［ｎ］”＝（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により算出する。
【０１２０】
ストリーム分割部１３０は、複製スライスヘッダに当初含まれているＭＢアドレス情報を、上述のように算出されたＭＢアドレス情報に更新する。これにより、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
【０１２１】
次に、スライス終端処理について説明する。
【０１２２】
符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図３に示すように、単純に、ピクチャが複数のＭＢラインに分割され、その複数のＭＢラインがそれぞれ第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン１２０に認識させることができない場合がある。
【０１２３】
そこで、本実施の形態におけるストリーム分割部１３０は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
【０１２４】
図５は、スライス終端処理を説明するための説明図である。
【０１２５】
例えば、図５の（ａ）に示すように、符号化ストリームのピクチャｐ１に含まれるスライスＣは、スライスヘッダｈｃと、ＭＢラインＬ９〜Ｌ１２と、スライス終端情報ｅｃとを含んでいる。
【０１２６】
ストリーム分割部１３０はピクチャｐ１をＭＢラインごとに分割する。その結果、図５の（ｂ）〜（ｅ）に示すように、ＭＢラインＬ９はスライスヘッダｈｃと共に第１分割ストリームに割り当てられ、ＭＢラインＬ１０は第２分割ストリームに割り当てられ、ＭＢラインＬ１１は第３分割ストリームに割り当てられ、ＭＢラインＬ１２は第４分割ストリームに割り当てられる。
【０１２７】
さらに、ストリーム分割部１３０は、上述のスライスヘッダの挿入処理により、スライスヘッダｈｃを複製して３つの複製スライスヘッダｈｃ’を生成し、それらの３つの複製スライスヘッダｈｃ’をそれぞれ、第２分割ストリーム〜第４分割ストリームのＭＢラインＬ１０、Ｌ１１、Ｌ１２の直前に挿入する。また、ストリーム分割部１３０は、上述のＭＢアドレス情報の更新処理により、挿入される複製スライスヘッダｈｃ’の位置に応じて、その複製スライスヘッダｈｃ’に含まれるＭＢアドレス情報を更新する。
【０１２８】
ここで、ストリーム分割部１３０は、スライス終端処理として、第１分割ストリームにおけるスライスＣ（ＭＢラインＬ９）の終端、第２分割ストリームにおけるスライスＣ（ＭＢラインＬ１０）の終端、第３分割ストリームにおけるスライスＣ（ＭＢラインＬ１１）の終端、および第４分割ストリームにおけるスライスＣ（ＭＢラインＬ１２）の終端を示すスライス終端情報ｅｃ’を生成する。そして、ストリーム分割部１３０は、その生成されたスライス終端情報ｅｃ’を、第１分割ストリーム〜第４分割ストリームのＭＢラインＬ９、Ｌ１０、Ｌ１１、Ｌ１２の直後に設定する。なお、ストリーム分割部１３０は、符号化ストリームをＭＢラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ｅｃを破棄している。また、スライス終端情報ｅｃとスライス終端情報ｅｃとが同一の情報であれば、最終的には、ＭＢラインＬ１２はスライス終端情報ｅｃ’（ｅｃ）と共に第４分割ストリームに割り当てられることになる。
【０１２９】
これにより、各デコードエンジン１２０は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
【０１３０】
図６は、本実施の形態における画像復号化装置１００の全体的な動きを示すフローチャートである。
【０１３１】
まず、画像復号化装置１００は、符号化ストリームを取得し（ステップＳ１０）、その符号化ストリームから処理対象となる符号化されたピクチャを特定する（ステップＳ１２）。さらに、画像復号化装置１００は、処理対象のピクチャを分割することにより１つのＭＢラインを抽出する（ステップＳ１４）。なお、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがあれば、そのＭＢラインはそのスライスヘッダと共に抽出される。
【０１３２】
次に、画像復号化装置１００は、ステップＳ１４の分割によって抽出された１つのＭＢラインを、生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる前に、スライス再構成処理をする必要があるか否か（そのＭＢラインの直前にスライスヘッダを挿入する必要があるか否か、既に割り当てられているＭＢラインの直後にスライス終端情報を設定する必要があるか否か、ＭＢスキップラン情報を修正する必要があるか否か、および、ＱＰ変化量を設定する必要があるか否か）を判別する（ステップＳ１６）。
【０１３３】
画像復号化装置１００は、ステップＳ１６で、スライス再構成処理をする必要があると判別したときには（ステップＳ１６のＹｅｓ）、スライス再構成処理を実行する（ステップＳ１８）。つまり、画像復号化装置１００は、上述のスライスヘッダの挿入処理、スライス終端処理、スキップラン修正処理およびＱＰデルタ設定処理の少なくとも１つを実行する。また、画像復号化装置１００は、スライスヘッダの挿入処理を実行するときには、ＭＢアドレス情報の更新処理も実行する。
【０１３４】
そして、画像復号化装置１００は、そのＭＢラインを生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる（ステップＳ２０）。このステップＳ２０が繰り返し行われることによって、第１〜第Ｎ分割ストリームのそれぞれにＭＢラインが順次割り当てられ、第１〜第Ｎ分割ストリームが生成される。
【０１３５】
画像復号化装置１００は、第１〜第Ｎ分割ストリームのそれぞれに割り当てられたＭＢラインを並列に復号化する（ステップＳ２２）。なお、第１〜第Ｎ分割ストリームのうちの何れかの分割ストリームにＭＢラインが割り当てられていない場合には、画像復号化装置１００は、そのＭＢラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
【０１３６】
次に、画像復号化装置１００は、ピクチャに含まれる全てのＭＢラインを割り当てたか否かを判別し（ステップＳ２４）、割り当てていないと判別したときには（ステップＳ２４のＮｏ）、ステップＳ１４からの処理を繰り返し実行する。一方、画像復号化装置１００は、全てのＭＢラインを割り当てたと判別したときには（ステップＳ２４のＹｅｓ）、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する（ステップＳ２６）。ここで、画像復号化装置１００は、全てのピクチャを分割していないと判別したときには（ステップＳ２６のＮｏ）、ステップＳ１２からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには（ステップＳ２６のＹｅｓ）、復号化処理を終了する。
【０１３７】
なお、図６のフローチャートに示される処理動作は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
【０１３８】
例えば、図６のフローチャートでは、画像復号化装置１００のストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン１２０に複製スライスヘッダを直接渡してもよい。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、ＭＢアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン１２０が、分割ストリームに含まれている複製スライスヘッダのＭＢアドレス情報を更新する。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップＳ２０でＭＢラインが第１〜第Ｎ分割ストリームの何れかに割り当てられた後であって、次の新たなＭＢラインがストリーム分割部１３０からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているＭＢラインに対してスライス終端処理が行われてもよい。
【０１３９】
ここで、ストリーム分割部１３０の構成および動作について詳細に説明する。
【０１４０】
図７は、ストリーム分割部１３０の構成を示すブロック図である。
【０１４１】
ストリーム分割部１３０は、スタートコード検出部１３１、ＥＰＢ除去部１３２ａ、ＥＰＢ挿入部１３２ｂ、スライスヘッダ挿入部１３３、およびスライスデータ処理部１３４ａ、１３４ｂを備えている。
【０１４２】
スタートコード検出部１３１は、ストリームバッファ１５１から符号化ストリームを読み出して、ＮＡＬユニットごとにスタートコードを検出する。
【０１４３】
ＥＰＢ除去部１３２ａは、ＥＰＢ（エミュレーション防止バイト）を符号化ストリームから除去し、ＥＰＢが除去された符号化ストリームをスライスデータ処理部１３４ａ、１３４ｂに出力する。さらに、ＥＰＢ除去部１３２ａは、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）およびＰＰＳ（ピクチャパラメータセット）などのスライスより上層の情報を取得し、その情報が４つの分割ストリームのそれぞれに挿入されるように、その情報をＥＰＢ挿入部１３２ｂに出力する。
【０１４４】
ＥＰＢ挿入部１３２ｂは、符号化ストリームが分割されることによって生成される分割ストリームに、ＥＰＢ除去部１３２ａによって除去されたＥＰＢを挿入する。
【０１４５】
スライスヘッダ挿入部１３３は、上述のスライスヘッダの挿入処理およびＭＢアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部１３３は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４ａ、１３４ｂに送り、スライスデータ処理部１３４ａ、１３４ｂから終端処理完了通知Ｍ２を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部１３３は、スライスヘッダの挿入処理によって、ＭＢラインの直前にあるスライスヘッダと、ＭＢアドレス情報が更新された複製スライスヘッダとをＥＰＢ挿入部１３２ｂに出力する。
【０１４６】
スライスデータ処理部１３４ａ、１３４ｂは、ＥＰＢが除去された符号化ストリームを分割することにより４つの分割ストリームを生成し、その４つの分割ストリームを出力する。なお、スライスデータ処理部１３４ａ、１３４ｂから出力される分割ストリームには、上述のＭＢラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部１３４ａは、ＣＡＶＬＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。また、スライスデータ処理部１３４ｂは、ＣＡＢＡＤ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｄｅｃｏｄｉｎｇ）に応じた処理を実行し、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）によって生成された符号化ストリームを４つの分割ストリームに分割する。
【０１４７】
スライスデータ処理部１３４ａは、スライスデータ層デコード部１３５ａ、マクロブロック層デコード部１３６ａ、スキップラン修正部１３７ａ、ＱＰデルタ修正部１３８ａおよび分割点検出部１３９ａを備えている。
【０１４８】
スライスデータ層デコード部１３５ａは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部１３６ａは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報（具体的には、ＣＡＶＬＣのｎＣ（ｎｏｎ−ｚｅｒｏ  ｃｏｅｆｆｉｃｉｅｎｔ）など）のみを復号化してもよい。
【０１４９】
スキップラン修正部１３７ａは、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。すなわち、スキップラン修正部１３７ａは、ＭＢスキップラン情報が、符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すときには、その連続するブロックの個数を分割し、スライス部分ごとのブロックの個数を示すように修正したＭＢスキップラン情報を、少なくとも２つの連続するスライス部分がそれぞれ割り当てられる分割ストリームに設定する。さらに、スキップラン修正部１３７ａは、各分割ストリームにおいて、設定される複数のＭＢスキップラン情報に対応する複数のブロックが当該分割ストリーム内で連続するときには、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換する。
【０１５０】
ここで、ＭＢスキップラン情報は、符号化ピクチャに含まれるスライス内で特定の種類のブロックが連続する場合に連続する当該ブロックの個数を示す第１の符号語の一例である。具体的には、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０１５１】
例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、ＭＢスキップラン情報による、ＭＢライン間の依存関係が崩れてしまう。
【０１５２】
そこで、スキップラン修正部１３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン修正部１３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０１５３】
ＱＰデルタ修正部１３８ａは、マクロブロックごとに、マクロブロック層デコード部１３６ａによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。すなわち、ＱＰデルタ修正部１３８ａは、ＱＰ変化量が、２つのＭＢラインに跨るブロック間の変化量を示す場合には、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する。そしてＱＰデルタ修正部１３８ａは、計算した変化量にＱＰ変化量を修正する。
【０１５４】
なお、ＱＰ変化量は、符号化ピクチャに含まれるスライス内で連続するブロック間における符号化係数の変化量を示す第２の符号語の一例である。具体的には、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの直前に位置するマクロブロックのＱＰ値との差分値を示す。
【０１５５】
つまり、ピクチャがＭＢラインごとに分割され、ＭＢラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、ＭＢラインの境界を挟んで互いに連続していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに連続していた一方のマクロブロック（対象マクロブロック）を含む分割ストリームを復号化の対象とするデコードエンジン１２０は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。つまり、ＱＰ変化量による、ＭＢライン間の依存関係が崩れてしまう。
【０１５６】
そこで、ＱＰデルタ修正部１３８ａは、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量を、分割ストリームにおける新たなマクロブロックの前後関係に基づいて再計算する。
【０１５７】
分割点検出部１３９ａは、符号化ストリームを４つの分割ストリームに分割する。つまり、分割点検出部１３９ａは、ピクチャを複数のＭＢラインに分割し、ＭＢラインのそれぞれを４つの分割ストリームの何れかに割り当てる。なお、分割点検出部１３９ａは、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、ＭＢラインだけを分割ストリームに割り当てる。また、分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部１３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ修正部１３８ａから取得したＱＰ変化量とを含める。
【０１５８】
さらに、分割点検出部１３９ａは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ａは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１５９】
スライスデータ処理部１３４ｂは、スライスデータ層デコード部１３５ｂ、マクロブロック層デコード部１３６ｂ、ＱＰデルタ修正部１３８ｂおよび分割点検出部１３９ｂを備えている。
【０１６０】
スライスデータ層デコード部１３５ｂは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化（算術復号化）する。マクロブロック層デコード部１３６ｂは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化（算術復号化）する。このような、スライスデータ層デコード部１３５ｂおよびマクロブロック層デコード部１３６ｂによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
【０１６１】
ＱＰデルタ修正部１３８ｂは、上述のＱＰデルタ修正部１３８ａと同様、マクロブロックごとに、マクロブロック層デコード部１３６ｂによって復号化された、そのマクロブロックのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正し、修正されたＱＰ変化量を再び符号化し、符号化されたＱＰ変化量を出力する。
【０１６２】
分割点検出部１３９ｂは、分割点検出部１３９ａと同様、符号化ストリームを４つの分割ストリームに分割する。このとき、分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ修正部１３８ｂから取得したＱＰ変化量を含める。さらに、分割点検出部１３９ｂは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からのスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ｂは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１６３】
ここで、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４ａ、１３４ｂについて詳細に説明する。なお、スライスデータ処理部１３４ａ、１３４ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部１３４と総称する。
【０１６４】
まず、スライスヘッダ挿入部１３３がスライスヘッダを挿入するタイミング、およびスライスデータ処理部１３４がスライス終端情報を挿入するタイミングについて説明する。
【０１６５】
図８は、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４の動作を説明するための説明図である。
【０１６６】
スライスデータ処理部１３４は、スライスＡおよびスライスＢを含むピクチャをＭＢラインごとに分割し、ＥＰＢ挿入部１３２ｂを介して、先頭側のＭＢラインから各ＭＢラインを順次、分割ストリームバッファ１５２に含まれる４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）に格納する。このとき、スライスデータ処理部１３４は、１ＭＢラインの格納ごとに、ＭＢラインの格納先を第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４、第１領域ｄｆ１の順に繰り返し変更する。
【０１６７】
例えば、スライスデータ処理部１３４は、図８の（ａ）に示すように、スライスＡのＭＢラインＬａ１を、分割ストリームバッファ１５２の第１領域ｄｆ１に格納し、スライスＡの次のＭＢラインＬａ２を、分割ストリームバッファ１５２の第２領域ｄｆ２に格納し、スライスＡの次のＭＢラインＬａ３を、分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。さらに、スライスデータ処理部１３４は、スライスＡの次のスライスＢのＭＢラインＬｂ１を、分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。
【０１６８】
その結果、分割ストリームバッファ１５２の４つの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれにＭＢラインが格納され、分割ストリームバッファ１５２は、スライスＢの次のＭＢラインが再び第１領域ｄｆ１に格納される直前の状態になる。
【０１６９】
なお、スライスデータ処理部１３４は、ＭＢラインＬａ３を第３領域ｄｆ３に格納するときには、符号化ストリームにおいてＭＢラインＬａ３の直後にスライス終端情報ｅａがあっても、そのスライス終端情報ｅａを格納することなく、ＭＢラインＬａ３だけを第３領域ｄｆ３に格納する。そして、スライスデータ処理部１３４は、その後に、第３領域ｄｆ３に新たなスライスに属するＭＢラインを格納するときになって、そのスライス終端情報ｅａに対応するスライス終端情報ｅａ’を第３領域ｄｆ３に格納する。また、スライスデータ処理部１３４がＭＢラインＬｂ１を第４領域ｄｆ４に格納するときには、事前に、スライスヘッダ挿入部１３３によってスライスＢのスライスヘッダｈｂが第４領域ｄｆ４に格納されている。また、ピクチャには、スライスＡのＭＢラインＬａ１よりも前に、そのスライスＡの他のＭＢラインが存在している。したがって、第１領域ｄｆ１、第２領域ｄｆ２および第３領域ｄｆ３のＭＢラインＬａ１、Ｌａ２、Ｌａ３の直前には、スライスＡの複製スライスヘッダが挿入されていない。
【０１７０】
また、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、マクロブロックを出力するごとに、１ＭＢラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部１３９ａ、１３９ｂは、全てのマクロブロックが出力されたと判別すると、ＭＢラインの境界（ＭＢラインの終端）を検出する。そして、分割点検出部１３９ａ、１３９ｂは、ＭＢラインの境界を検出するごとに、マクロブロックの出力処理を中断し、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知する。
【０１７１】
したがって、ＭＢラインの最後のマクロブロックが分割ストリームバッファ１５２に格納されて、分割ストリームバッファ１５２が上述のような図８の（ａ）に示す状態になったときにも、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂから、ＭＢラインの境界が検出されたことの通知を受ける。
【０１７２】
ＭＢラインの境界検出の通知を受けたスライスヘッダ挿入部１３３は、図８の（ｂ）に示すように、スライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に送る。このスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインが格納される直前に、スライスヘッダを分割ストリームバッファ１５２に出力して格納する予定があるか否かをそのスライスデータ処理部１３４に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４に対してスライス終端処理を促す通知である。
【０１７３】
例えば、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインＬｂ２が格納される直前に、複製スライスヘッダｈｂ’を分割ストリームバッファ１５２に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部１３３は、「出力」を示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に出力する。
【０１７４】
スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１を取得すると、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ１５２に格納した後に、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。一方、スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ１５２に格納することなく、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１７５】
例えば、スライスデータ処理部１３４は、「出力」を示すスライスヘッダ処理内容通知Ｍ１を取得すると、図８の（ｃ）に示すように、スライス終端情報ｅａ’を生成し、分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その格納が完了すると、スライスデータ処理部１３４は、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１７６】
スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ＥＰＢ挿入部１３２ｂを介して、スライスヘッダを分割ストリームバッファ１５２に出力して格納し、その後、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。一方、直前に出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、スライスヘッダ挿入部１３３は、スライスヘッダを分割ストリームバッファ１５２に格納することなく、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７７】
例えば、スライスヘッダ挿入部１３３は、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合に、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、図８の（ｄ）に示すように、複製スライスヘッダｈｂ’を生成して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その後、スライスヘッダ挿入部１３３は、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７８】
スライスデータ処理部１３４の分割点検出部１３９ａ、１３９ｂは、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けると、中断していたマクロブロックの出力処理を再開し、次のＭＢラインを出力して分割ストリームバッファ１５２に格納する。
【０１７９】
例えば、スライスデータ処理部１３４は、図８の（ｄ）に示すように、次のＭＢラインＬｂ２を出力して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１８０】
このようなスライスヘッダ挿入部１３３およびスライスデータ処理部１３４による処理によって、分割ストリームバッファ１５２の各領域において、スライス終端情報、スライスヘッダ、次のＭＢラインの順に、これらのデータを適切なＭＢラインの境界に書き込むことができる。
【０１８１】
図９は、スライスヘッダ挿入部１３３の構成を示すブロック図である。
【０１８２】
なお、図９を用いて、分割点検出部１３９ａ、１３９ｂについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部１３９と総称する。
【０１８３】
スライスヘッダ挿入部１３３は、ＮＡＬタイプ判定部１３３ａ、ヘッダ挿入カウンタ１３３ｂ、ヘッダアドレス更新部１３３ｃおよびヘッダバッファ１３３ｄを備えている。
【０１８４】
ＮＡＬタイプ判定部１３３ａは、符号化ストリームのＮＡＬユニットを取得するごとに、そのＮＡＬユニットのタイプがスライスであるか否かを判別する。そして、ＮＡＬタイプ判定部１３３ａは、スライスであると判別したときには、そのＮＡＬユニットのタイプがスライスであることをヘッダバッファ１３３ｄおよびヘッダ挿入カウンタ１３３ｂに通知する。
【０１８５】
ヘッダバッファ１３３ｄは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、そのＮＡＬユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ１３３ｄは、後のＮＡＬユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ１３３ｄは、常に最新のスライスヘッダを保持している。
【０１８６】
ヘッダ挿入カウンタ１３３ｂは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のＭＢラインの境界（終端）が分割点検出部１３９で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ１３３ｂは、０〜４（デコードエンジン１２０の総数）までの値をカウントする。ヘッダ挿入カウンタ１３３ｂは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。さらに、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界（ＭＢラインの終端）が検出されたときには、カウント値を１だけカウントアップする。そして、ヘッダ挿入カウンタ１３３ｂは、カウント値が４に達した後に、さらにＭＢラインの境界が検出されたときには、カウントアップすることなく、カウント値を４に維持しておく。
【０１８７】
このように、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、カウント値を更新あるいは保持し、ＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。
【０１８８】
また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、その検出によって更新されたカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力する。具体的には、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出された直後のカウント値が０〜３のときには、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力し、そのカウント値が４のときには、「非出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときに限らず、カウント値が０になったときにも、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。
【０１８９】
さらに、ヘッダ挿入カウンタ１３３ｂは、スライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力した後に、その分割点検出部１３９から終端処理完了通知Ｍ２を受け取ると、その出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させる。その後、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。なお、ヘッダバッファ１３３ｄからスライスヘッダが出力されるときには、スライスヘッダ挿入部１３３は、そのスライスヘッダに含まれているＭＢアドレス情報により示される値に応じて、分割ストリームバッファ１５２の格納先となる領域を選択する。そして、スライスヘッダ挿入部１３３は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ１３３ｂは、その出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。
【０１９０】
ヘッダアドレス更新部１３３ｃは、ＭＢラインの境界が検出された直後のカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、ヘッダバッファ１３３ｄに格納されているスライスヘッダのＭＢアドレス情報“ｆｉｒｓｔ＿ｍｂ＿ｉｎ＿ｓｌｉｃｅ”を更新する。
【０１９１】
例えば、ヘッダアドレス更新部１３３ｃは、カウント値ｎ＝０のときには、ＭＢアドレス情報を更新せず、カウント値ｎ≠０のときには、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）に更新する。なお、ピクチャがＭＢＡＦＦで構成されている場合には、ヘッダアドレス更新部１３３ｃは、ＭＢアドレス情報を（“ｍｂｐｏｓｖ”／２＋ｎ）×（“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１）により更新する。
【０１９２】
図１０は、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【０１９３】
例えば、ストリーム分割部１３０は、ストリームバッファ１５１に格納されている符号化ストリームのスライスＡ〜Ｃを、スライスＡ、スライスＢ、スライスＣの順に読み出す。
【０１９４】
この場合、まず、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、スライスＡの先頭からスライスヘッダｈａを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、カウント値が０であるため、記憶しているスライスヘッダｈａを出力することにより、そのスライスヘッダｈａを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１９５】
スライスヘッダｈａがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＡのスライスヘッダｈａに続く第１ＭＢラインを出力することにより、その第１ＭＢラインを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その結果、第１領域ｄｆ１には、スライスヘッダｈａ、スライスＡに属する第１ＭＢラインの順に、それらのデータが格納される。
【０１９６】
第１ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第１ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈａを複製スライスヘッダｈａ’として出力することにより、その複製スライスヘッダｈａ’を分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。なお、複製スライスヘッダｈａ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１９７】
複製スライスヘッダｈａ’がヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中で第１ＭＢラインに続く第２ＭＢラインを出力することにより、その第２ＭＢラインを分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。
【０１９８】
ここで、第２ＭＢラインは、スライスＡに属する複数のマクロブロックと、スライスＢのスライスヘッダｈｂと、スライスＢに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部１３４の分割点検出部１３９は、まず、第２ＭＢラインに含まれるスライスＡに属する全てのマクロブロックを第２領域ｄｆ２に格納する。その格納が終了すると、分割点検出部１３９は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けるまで待機する。このとき、スライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを検出するため、カウント値を０にリセットし、「出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に送る。このスライスヘッダ処理内容通知Ｍ１を受けた分割点検出部１３９は、第２領域ｄｆ２のスライスＡの終端に対してスライス終端処理を行い、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に送る。この終端処理完了通知Ｍ２を受けたスライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを第２領域ｄｆ２に格納し、スライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に送る。このスライスヘッダ処理完了通知Ｍ３を受けた分割点検出部１３９は、中断していた出力処理を再開し、第２ＭＢラインに含まれる次のスライスＢに属する複数のマクロブロックを第２領域ｄｆ２に格納する。
【０１９９】
その結果、第２領域ｄｆ２には、複製スライスヘッダｈａ’に続いて、スライスＡに属する第２ＭＢラインの一部を成す複数のマクロブロック、スライスヘッダｈｂ、スライスＢに属する第２ＭＢラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
【０２００】
第２ＭＢラインがスライスデータ処理部１３４から出力されると、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、符号化ストリーム中でその第２ＭＢラインに続くスライスＣの先頭からスライスヘッダｈｃを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、第２ＭＢラインの終端でカウント値が０であるため、記憶しているスライスヘッダｈｃを出力することにより、そのスライスヘッダｈｃを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。
【０２０１】
スライスヘッダｈｃがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＣのスライスヘッダｈｃに続く第３ＭＢラインを出力することにより、その第３ＭＢラインを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。その結果、第３領域ｄｆ３には、スライスヘッダｈｃ、スライスＣに属する第３ＭＢラインの順に、それらのデータが格納される。
【０２０２】
第３ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第３ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈｃを複製スライスヘッダｈｃ’として出力することにより、その複製スライスヘッダｈｃ’を分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。なお、複製スライスヘッダｈｃ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０２０３】
このような処理が繰り返されることにより、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４にデータが順次格納される。その結果、それらの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに第１分割ストリーム〜第４分割ストリームが格納される。
【０２０４】
図１１Ａおよび図１１Ｂは、スライス終端情報が設定される位置を示す図である。
【０２０５】
例えば、図１１Ａに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢのスライスヘッダｈｂが出力される直前に、そのスライスＢの先頭ＭＢラインから４ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。さらに、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢの先頭ＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２０６】
このように、スライスの先頭のマクロブロックがＭＢラインの左端にある場合には、そのＭＢラインの１〜４ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０７】
また、図１１Ｂに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端以外にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢのスライスヘッダｈｂを含むＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２０８】
このように、スライスの先頭のマクロブロックがＭＢラインの左端以外にある場合には、そのＭＢラインにおけるスライスの境界と、そのＭＢラインの１〜３ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０９】
ここで、分割点検出部１３９の動作について詳細に説明する。
【０２１０】
図１２は、分割点検出部１３９の動作を示すフローチャートである。
【０２１１】
まず、分割点検出部１３９は、符号化ストリームの先頭側から処理対象とすべきデータ（例えばマクロブロック）を特定して出力し、分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２１２】
ここで、分割点検出部１３９は、出力されるマクロブロックのアドレス（ＭＢアドレス値）を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部１３９は、出力されるマクロブロックのＭＢアドレス値を、そのスライスのスライスヘッダに含まれるＭＢアドレス情報により示される値に更新する。そして、分割点検出部１３９は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのＭＢアドレス値をインクリメントする。なお、ＭＢアドレス値は０以上の整数である。
【０２１３】
そして、分割点検出部１３９は、ステップＳ１００でマクロブロックを出力するときには、そのマクロブロックのＭＢアドレス値に応じて、分割ストリームバッファ１５２内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ１５２に含まれる４つの領域に１番〜４番までの番号が割り振られている場合、分割点検出部１３９は、ｍ＝（（ＭＢアドレス値／Ｗ）％Ｎ＋１）番目の領域を選択し、そのｍ番目の領域にマクロブロックを格納する。
【０２１４】
なお、Ｗは、Ｗ＝“ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１”＋１により示され、ピクチャの水平方向のマクロブロック数を示す。また、Ｎはデコードエンジン１２０の総数（Ｎ＝４）であり、％は（ＭＢアドレス値／Ｗ）をＮで割ったときの余りを示す。
【０２１５】
次に、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックがＭＢラインの終端（境界）であったか否か、つまりマクロブロックの出力処理がＭＢラインの終端に達したか否かを判別する（ステップＳ１０２）。具体的には、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックのＭＢアドレス値が（Ｗの倍数−１）となるか否かを判別する。ＭＢアドレス値＝（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達し、ＭＢアドレス値≠（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達していない。
【０２１６】
分割点検出部１３９は、終端に達していないと判別すると（ステップＳ１０２のＮｏ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。一方、分割点検出部１３９は、終端（ＭＢラインの境界）に達したと判別すると、つまりＭＢラインの境界を検出すると（ステップＳ１０２のＹｅｓ）、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けたか否かを判別する（ステップＳ１０４）。
【０２１７】
分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けていないと判別すると（ステップＳ１０４のＮｏ）、スライスヘッダ処理内容通知Ｍ１を受けるまで待機する。
一方、分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けたと判別すると（ステップＳ１０４のＹｅｓ）、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示しているか否かを判別する（ステップＳ１０６）。
【０２１８】
ここで、分割点検出部１３９は、「出力」を示していると判別すると（ステップＳ１０６のＹｅｓ）、スライス終端処理を実行する（ステップＳ１０８）。つまり、分割点検出部１３９は、符号化ストリームがＣＡＢＡＤで復号化される場合には、スライス終端情報として“ｅｎｄ＿ｏｆ＿ｓｌｉｃｅ＿ｆｌａｇ”に「１」を設定する。また、分割点検出部１３９は、符号化ストリームがＣＡＶＬＤで復号化される場合には、スライス終端情報として“ｒｂｓｐ＿ｓｌｉｃｅ＿ｔｒａｉｌｉｎｇ＿ｂｉｔｓ”を付与する。
【０２１９】
分割点検出部１３９は、ステップＳ１０６で「出力」を示していないと判別した後（ステップＳ１０６のＮｏ）、またはステップＳ１０８でスライス終端処理を実行した後には、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る（ステップＳ１１０）。その後、分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けたか否かを判別する（ステップＳ１１２）。ここで、分割点検出部１３９は、スライスヘッダ処理完了通知Ｍ３を受けていないと判別すると（ステップＳ１１２のＮｏ）、スライスヘッダ処理完了通知Ｍ３を受けるまで待機する。一方、分割点検出部１３９は、ステップＳ１１２でスライスヘッダ処理完了通知Ｍ３を受けたと判別したとき（ステップＳ１１２のＹｅｓ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。
【０２２０】
ここで、分割点検出部１３９は、終了すべきと判別したときには（ステップＳ１１４のＹｅｓ）、処理を終了し、終了すべきでないと判別したときには（ステップＳ１１４のＮｏ）、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２２１】
次に、スキップラン修正部１３７ａの動作について詳細に説明する。
【０２２２】
スキップラン修正部１３７ａは、前述したようにＭＢスキップラン情報である“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を修正する。ＭＢスキップラン情報は、符号化方法にＣＡＶＬＣを用いた場合に符号化ストリームに含まれる符号語であり、連続するスキップマクロブロックの個数（以下、「長さ」ともいう。）を示している。また、以下の記載において、ＭＢスキップラン情報の長さとは、ＭＢスキップラン情報が示す、連続するスキップマクロブロックの個数を意味する。
【０２２３】
図１３Ａおよび図１３Ｂは、ＭＢスキップラン情報の修正処理を説明するための説明図である。
【０２２４】
図１３Ａに示されたピクチャでは、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２〜Ｌ３に跨って連続するスキップマクロブロックの個数を示す長さ８（５＋３＝８）のＭＢスキップラン情報が符号化され、ＭＢラインＬ５〜Ｌ６に跨って連続するスキップマクロブロックの個数を示す長さ６（２＋４＝６）のＭＢスキップラン情報が符号化されている。
【０２２５】
しかし、このような場合にピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報による、その複数のＭＢライン間の依存関係が崩れてしまう。
【０２２６】
すなわち、第１分割ストリームに含まれるＭＢラインはＬ１およびＬ５であり、ＭＢラインＬ５の末尾に連続する２個のスキップマクロブロックが存在する。また、第２分割ストリームに含まれるＭＢラインはＬ２およびＬ６であり、ＭＢラインはＬ２からＬ６に跨って連続する９個のスキップマクロブロックが存在する。また、第３分割ストリームに含まれるＭＢラインはＬ３およびＬ７であり、ＭＢラインはＬ３の先頭に連続する３個のスキップマクロブロックが存在する。また、第４分割ストリームに含まれるＭＢラインはＬ４およびＬ８であり、スキップマクロブロックは存在しない。
【０２２７】
以上のように、もともと符号化ストリームに含まれていたＭＢスキップラン情報は長さ８と６であったのに対し、第１分割ストリームに対しては長さ２のＭＢスキップラン情報を、第２分割ストリームに対しては長さ９のＭＢスキップラン情報を、第３分割ストリームに対しては長さ３のＭＢスキップラン情報を出力する必要がある。つまり、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報によって、その複数のＭＢラインが互いに依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＭＢスキップラン情報を修正する必要がある。
【０２２８】
そこでスキップラン修正部１３７ａは、まずスライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報に対応するスキップマクロブロックの集合が複数のＭＢラインに跨って存在する場合、ＭＢライン境界でＭＢスキップラン情報を分割する。ここで、ＭＢライン境界でＭＢスキップラン情報を分割するとは、複数のＭＢラインに跨って連続する複数のスキップマクロブロックの個数を分割し、ＭＢラインごとのスキップマクロブロックの個数をそれぞれが示す複数のＭＢスキップラン情報を生成することを意味する。
【０２２９】
すなわち、図１３Ａに示されたピクチャの場合、スキップラン修正部１３７ａは、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部１３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックの集合に対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックの集合に対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックの集合に対応するＭＢスキップラン情報とに分割する。
【０２３０】
次に、スキップラン修正部１３７ａは、分割されたＭＢスキップラン情報のうち、各分割ストリームにおいて連続するスキップマクロブロックの集合に対応する複数のＭＢスキップラン情報を再結合する。ここで複数のＭＢスキップラン情報の再結合とは、複数のＭＢスキップラン情報を、その複数のＭＢスキップラン情報のそれぞれが示す個数の総和を示す１つのＭＢスキップラン情報に変換することを意味する。
【０２３１】
図１３Ａに示されたピクチャの場合、分割されたＭＢスキップラン情報に対応するスキップマクロブロックの集合のうち、ＭＢラインＬ２に含まれる長さ５のスキップマクロブロックの集合と、ＭＢラインＬ６に含まれる長さ４のスキップマクロブロックの集合とは、第２分割ストリーム内で連続する。そのため、スキップラン修正部１３７ａは、これらの２つのスキップマクロブロックの集合にそれぞれ対応する２つのＭＢスキップラン情報を結合し、長さ９のＭＢスキップラン情報に変換する。
【０２３２】
最後にスキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０２３３】
以上説明したように、スキップラン修正部１３７ａは、入力されたＭＢスキップラン情報をＭＢライン境界で分割した後、必要に応じて再結合することで、各分割ストリームに対して適切な長さのＭＢスキップラン情報を出力することが出来る。
【０２３４】
なお、ここで、スキップラン修正部１３７ａが、各分割ストリームにおいて連続するＭＢスキップラン情報を分割されたままにせずに、必要に応じて再結合するのは、Ｈ．２６４／ＡＶＣ規格において、複数のＭＢスキップラン情報が連続して存在することが許されていないためである。つまり、Ｈ．２６４／ＡＶＣ規格において、連続するスキップマクロブロックの個数を複数のＭＢスキップラン情報を用いて表現することが許されていないので、スキップラン修正部１３７ａは、その複数のＭＢスキップラン情報を結合する。このように、スキップラン修正部１３７ａがＨ．２６４／ＡＶＣ規格に準拠した形式でＭＢスキップラン情報が修正されることにより、各分割ストリームがＨ．２６４／ＡＶＣ規格に準拠した形式で生成される。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０２３５】
また、図１３Ｂに示されたピクチャでは、ＭＢラインＬ２の末尾に５個の連続するスキップマクロブロックと、ＭＢラインＬ６の先頭に３個の連続するスキップマクロブロックとが存在する。したがって、このようなピクチャを含む符号化ストリームでは、ＭＢラインＬ２に長さ５のＭＢスキップラン情報が符号化され、ＭＢラインＬ６に長さ３のＭＢスキップラン情報が符号化されている。
【０２３６】
このピクチャの場合、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在していないため、スキップラン修正部１３７ａは、ＭＢライン境界でＭＢスキップラン情報を分割する必要はない。しかしながら、このピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられた場合、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とが連続して存在することになる。
【０２３７】
したがってこの例のように、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すＭＢスキップラン情報は存在しない場合においても、スキップラン修正部１３７ａは、各分割ストリームにおいて１つの連続するスキップマクロブロックの個数を示す複数のＭＢスキップラン情報を再結合する処理を行う。すなわち、スキップラン修正部１３７ａは、第２分割ストリームにおいて、長さ５のＭＢスキップラン情報と長さ３のＭＢスキップラン情報とを結合し、長さ８のＭＢスキップラン情報に変換する。
【０２３８】
スキップラン修正部１３７ａは、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０２３９】
図１４は、スキップラン修正部１３７ａの構成を示すブロック図である。
【０２４０】
スキップラン修正部１３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、スキップラン累積・保持部１６２、加算部１６３、およびスキップラン符号化部１６４を備えている。
【０２４１】
スキップラン抽出部１６０は、スライスデータ層デコード部から出力されるストリームから、ＭＢスキップラン情報を検出および抽出する。抽出したＭＢスキップラン情報は、スキップラン分割部１６１に対して出力され、それ以外の情報は、そのまま分割点検出部１３９ａに対して出力される。
【０２４２】
スキップラン分割部１６１は、ＭＢスキップラン情報の長さとＭＢスキップラン情報が存在するマクロブロックの位置情報から、入力されたＭＢスキップラン情報が複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すかどうかを判定する。ここで、複数のＭＢラインに跨って連続するスキップマクロブロックの個数を示すと判定された場合は、スキップラン分割部１６１は、ＭＢライン境界を分割点として、ＭＢスキップラン情報を分割する。分割されたＭＢスキップラン情報のうち、ＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報は加算部１６３に出力され、ＭＢライン境界を越えなかったスキップマクロブロックの個数を示すＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０２４３】
なお、ＭＢスキップラン情報は、３つ以上のＭＢラインに跨って連続するスキップマクロブロックの個数を示す場合もある。その場合、連続するスキップマクロブロックの間に２つ以上のＭＢライン境界が存在することになるため、スキップラン分割部１６１はそれぞれのＭＢライン境界を分割点として、繰り返し分割を行う。その際、分割されたＭＢスキップラン情報のうち、最後のＭＢライン境界を越えたスキップマクロブロックの個数を示すＭＢスキップラン情報が加算部１６３に出力され、それ以外のＭＢスキップラン情報はスキップラン累積・保持部１６２に出力される。
【０２４４】
スキップラン累積・保持部１６２は、スキップラン分割部１６１から出力される分割されたＭＢスキップラン情報を受け取り、先行ＭＢスキップラン情報として分割ストリームごとにその値を保持する。すなわち、スキップラン累積・保持部１６２は、第１分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第１分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第２分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第２分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第３分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第３分割ストリームの先行ＭＢスキップラン情報として保持する。また、スキップラン累積・保持部１６２は、第４分割ストリームに含まれるＭＢスキップラン情報を受け取った場合は第４分割ストリームの先行ＭＢスキップラン情報として保持する。
【０２４５】
このとき、既にスキップラン累積・保持部１６２に先行ＭＢスキップラン情報が保持されている場合、スキップラン累積・保持部１６２は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を累積し、新たなＭＢスキップラン情報として、分割ストリーム毎にその値を保持する。つまり、スキップラン累積・保持部１６２は、分割ストリームごとに、スキップラン分割部１６１から受け取ったＭＢスキップラン情報を、保持されている先行ＭＢスキップラン情報に加算する。
【０２４６】
加算部１６３は、スキップラン分割部１６１からＭＢスキップラン情報を受け取るとともに、そのＭＢスキップラン情報が含まれる分割ストリームに対応した、スキップラン累積・保持部１６２に保持された先行ＭＢスキップラン情報を読み出す。そして、加算部１６３は、スキップラン分割部１６１から受け取ったＭＢスキップラン情報の値と、スキップラン累積・保持部１６２にから読み出した先行ＭＢスキップラン情報の値とを加算し、その結果を修正されたＭＢスキップラン情報として、スキップラン符号化部１６４に出力する。この処理により、ＭＢスキップラン情報の再結合が行われる。
【０２４７】
スキップラン符号化部１６４は、加算部１６３から出力される修正されたＭＢスキップラン情報を再符号化して分割点検出部１３９ａに出力することで、修正されたＭＢスキップラン情報をストリームに再度埋め込む。
【０２４８】
図１５は、スキップラン修正部１３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。
【０２４９】
まずスキップラン修正部１３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別する（ステップＳ２００）。これは、ＭＢスキップラン情報がスライス境界を跨って連続するスキップマクロブロックの個数を示すことがないため、スライス終端に到達した際には、スキップラン修正部１３７ａの内部に保持された先行ＭＢスキップラン情報をすべて出力する必要があるためである。ここでスライス終端に到達していると判別すると（ステップＳ２００のＹｅｓ）、ステップＳ２２４の処理に進む。処理の詳細は後述する。
【０２５０】
一方、スライス終端に到達していないと判別すると（ステップＳ２００のＮｏ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部１３７ａは、処理の最初に戻りストリームを再度読み進める。
【０２５１】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。ここで、スキップラン修正部１３７ａは、取得したＭＢスキップラン情報によって示される連続したスキップマクロブロックのうち、先頭のスキップマクロブロックの位置を特定する。
【０２５２】
スキップラン修正部１３７ａは、ステップＳ２０４でマクロブロックの位置を算出すると、そのマクロブロックの位置情報とＭＢスキップラン情報の長さとから、連続するスキップマクロブロックがＭＢライン境界に到達するかどうかを調べることにより、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０２５３】
より具体的には、先頭のスキップマクロブロックの水平位置および垂直位置をそれぞれ“ｍｂｐｏｓｈ”、“ｍｂｐｏｓｖ”と表現し、ピクチャの水平方向の総マクロブロック数を“ＰｉｃＷｉｄｔｈＩｎＭｂｓ”と表現した場合において、“ｍｂ＿ｓｋｉｐ＿ｒｕｎ  ≧  ＰｉｃＷｉｄｔｈＩｎＭｂｓ  −  ｍｂｐｏｓｈ”が成立するときは、スキップラン修正部１３７ａは、連続するスキップマクロブロックがＭＢライン境界に到達すると判定する。
【０２５４】
なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、スキップラン修正部１３７ａは、マクロブロックの位置情報とＭＢスキップラン情報の長さから、連続するスキップマクロブロックが分割境界に到達するかどうかを判定すればよい。
【０２５５】
連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０２５６】
連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報がＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ２０８）。すなわち、スキップラン修正部１３７ａは、該当のＭＢスキップラン情報について、先行ＭＢスキップラン情報との結合が必要かどうかを判定する。
【０２５７】
該当のＭＢスキップラン情報がＭＢラインの先頭に位置していると判定された場合（ステップＳ２０８のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に対して先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を加算することにより、ＭＢスキップラン情報の再結合を行う（ステップＳ２１０）。なお、このＭＢスキップラン情報の再結合処理は、分割ストリーム毎に独立して行われる必要がある。すなわち、先行ＭＢスキップラン情報は分割ストリーム毎にスキップラン修正部１３７ａに保持されており、該当のＭＢスキップラン情報が含まれるＭＢラインに対応した、先行ＭＢスキップラン情報が加算される。
【０２５８】
ステップＳ２０８で該当のＭＢスキップラン情報がＭＢラインの先頭に位置していないと判定された場合（ステップＳ２０８のＮｏ）、またはステップＳ２１０でＭＢスキップラン情報の結合が実行された後、スキップラン修正部１３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０２５９】
その後スキップラン修正部１３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０２６０】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部１３７ａは、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。なお、連続するスキップマクロブロックがＭＢライン境界に到達しているがＭＢライン境界を跨がない場合、後半部は０であることもあり得る。
【０２６１】
さらにスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、前半部を先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”として内部に保持する。このとき、既にスキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報が存在する場合、スキップラン修正部１３７ａは、新たに発生したＭＢスキップラン情報の前半部の長さを保持された先行ＭＢスキップラン情報の長さに加算して保持する（ステップＳ２１８）。なお前述したように、先行ＭＢスキップラン情報は、それ自身が含まれるＭＢラインに対応する分割ストリームの先行ＭＢスキップラン情報として、分割ストリームごとに独立に保持される。
【０２６２】
次にスキップラン修正部１３７ａは、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０２６３】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０２６４】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割・再結合および出力処理を行う。このように、スキップラン修正部１３７ａがＭＢスキップラン情報の分割・再結合を繰り返し行うことにより、３ＭＢライン以上に跨ったＭＢスキップラン情報についても正しく分割・再結合処理が行われる。
【０２６５】
一方、ステップＳ２００でスライス終端であると判別された場合（ステップＳ２００のＹｅｓ）、スキップラン修正部１３７ａに保持された先行ＭＢスキップラン情報を出力するため、先行ＭＢスキップラン情報“ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を、そのままＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”に置き換える（ステップＳ２２４）。その後はステップＳ２１２の処理に進み、スキップラン修正部１３７ａは、置き換えたＭＢスキップラン情報を再符号化した後、分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１２〜Ｓ２１４）。なお、この先行ＭＢスキップラン情報の出力は、すべての分割ストリームに対して行われる。
【０２６６】
以上説明した処理が、スキップラン修正部１３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部１３７ａでは、ＭＢスキップラン情報の分割・再結合が適切に行われる。
【０２６７】
次に、ＱＰデルタ修正部１３８ａ、１３８ｂの動作について詳細に説明する。なお、以降の説明において、ＱＰデルタ修正部１３８ａ、１３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ修正部１３８と総称する。
【０２６８】
ＱＰデルタ修正部１３８は、マクロブロックごとに原則として存在するＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を修正する。ＱＰ変化量とは、マクロブロックの量子化パラメータであるＱＰ値を復号するために符号化ストリームに含まれる符号語であり、対象マクロブロックと、その直前に処理したマクロブロックのＱＰ値の差分値を示している。
【０２６９】
ＱＰ値の復号は、次式（１）によって行われる。
【０２７０】
ＱＰＹ  ＝  （  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ＋  ２  ＊  ＱｐＢｄＯｆｆｓｅｔＹ  ）％  （  ５２  ＋  ＱｐＢｄＯｆｆｓｅｔＹ  ）  ）  −  ＱｐＢｄＯｆｆｓｅｔＹ        ・・・（１）
【０２７１】
ここで、ＱＰＹは処理対象マクロブロックの輝度のＱＰ値を、ＱＰＹ,ＰＲＥＶは直前のマクロブロックの輝度のＱＰ値を示している。なお、ＱｐＢｄＯｆｆｓｅｔＹはピクチャを構成する画素のビット深度によって決まる値であり、一般的に用いられる８ビット深度の場合、ＱｐＢｄＯｆｆｓｅｔＹ＝０である。その場合、上記の式（１）は次式（２）のように書き換えられる。
【０２７２】
ＱＰＹ  ＝  （  ＱＰＹ,ＰＲＥＶ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（２）
【０２７３】
式（２）から分かるように、画素のビット深度が８である場合、ＱＰ値は０〜５１の範囲となるようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を用いて復号化される。なお、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取りうる値である。
【０２７４】
量子化パラメータであるＱＰ値の復号は、処理順で連続するマクロブロック間で依存関係があるが、途中でスライスの境界があった場合はそこで依存関係が解消される。すなわち、量子化パラメータであるＱＰ値は、スライスの先頭でスライスＱＰ値によって初期化される。スライスの先頭のマクロブロックには、該当マクロブロックのＱＰ値とスライスＱＰ値との差分値がＱＰ変化量として符号化される。
【０２７５】
図１６Ａおよび図１６Ｂは、ＱＰ変化量の修正処理を説明するための説明図である。
【０２７６】
図１６Ａに示されたピクチャにおけるマクロブロックＣに着目すると、本来その直前に処理が行われるマクロブロックはマクロブロックＢである。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０２７７】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０２７８】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン１２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量による、そのＭＢライン間の依存関係が崩れてしまう。
【０２７９】
そこでＱＰデルタ修正部１３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＱＰ変化量の修正を行う。つまり、２つのＭＢラインに跨るマクロブロック間の変化量を示すＱＰ変化量によって、その２つのＭＢラインが依存関係を有する場合には、その依存関係が、各分割ストリームにおけるＭＢラインの前後関係に応じた新たな依存関係となるように、ＱＰ変化量を修正する。
【０２８０】
ＱＰ変化量の修正方法としては、全てのマクロブロックについてＱＰ値の復号化（ＱＰ値の復元）を行った上で、ストリーム分割後の新たなマクロブロックの前後関係に基づき、ＱＰ変化量を算出し直す方法が考えられる。しかしながらこの方法では、ＱＰ値復号化とＱＰ変化量算出との２つの処理が必要であり、ＱＰデルタ修正部１３８における処理量が大きくなってしまう。
【０２８１】
そこで本実施の形態では、ＱＰデルタ修正部１３８は、分割ストリーム毎に、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することで、ＱＰ値を復号化することなく、修正されたＱＰ変化量を直接導出する。
【０２８２】
ここで、ＱＰ変化量累積による修正ＱＰ変化量の導出について、図を用いて説明する。図１７は、ＱＰ変化量の累積を説明するための説明図である。
【０２８３】
図中において、横軸はＱＰ値を表しており、ＱＰ１〜ＱＰ４は連続したマクロブロックにおけるＱＰ値を示している。また図中には、各々のＱＰ値の差分値を表す“ｍｂ＿ｑｐ＿ｄｅｌｔａ”が示されている。“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の末尾に添えられている２桁の数字は、上位側が先行するマクロブロックに対応するＱＰ値の番号を示しており、下位側が後続するマクロブロックに対応するＱＰ値の番号を示している。例えば、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”は、ＱＰ１とＱＰ２との差分値を表す。また、図に示されるように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、ＱＰ値の最小値である０と、最大値である５１とが、連続してつながった軸におけるＱＰ値の差分値を表している。
【０２８４】
通常のＱＰ値の復号処理では、ＱＰ１と“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”とから、式（２）を用いてＱＰ２が求められる。また、同様にＱＰ２と“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”とからＱＰ３が求められる。また、ＱＰ３と“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”とからＱＰ４が求められる。
【０２８５】
ここで、図に示されているように、“ｍｂ＿ｑｐ＿ｄｅｌｔａ１２”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ２３”、“ｍｂ＿ｑｐ＿ｄｅｌｔａ３４”が表すＱＰ変化量の合計は、ＱＰ１とＱＰ４との差分値を示す“ｍｂ＿ｑｐ＿ｄｅｌｔａ１４”に等しい。すなわち、隣接していないマクロブロック間のＱＰ変化量を求めるには、その間のすべてのＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積すれば良いことが分かる。
【０２８６】
なお、累積は次式（３）に従って行う。
【０２８７】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  （  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＋  ５２  ）  ％  ５２        ・・・（３）
【０２８８】
ここで、“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”は、累積された“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を示す。このように、式（２）に合わせた形式で“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を累積することで、図１７に示したＱＰ値の最小値である０と最大値である５１が連続してつながった軸において、ＱＰ変化量の合計を求めることが出来る。
【０２８９】
具体的な例として、図１６Ａに示されたピクチャにおけるマクロブロックＣのＱＰ変化量の修正処理について説明する。前述のように、ストリーム分割後の第２分割ストリームにおいて、マクロブロックＣの直前に位置するマクロブロックはマクロブロックＡとなるため、マクロブロックＣには、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値がＱＰ変化量として含まれる必要がある。
【０２９０】
そこでＱＰデルタ修正部１３８は、ＭＢラインＬ３〜Ｌ５に含まれる全てのマクロブロックのＱＰ変化量と、マクロブロックＣのＱＰ変化量を累積する。このように、マクロブロックＡとマクロブロックＣの間にある全てのマクロブロックのＱＰ変化量を累積することで、マクロブロックＡのＱＰ値とマクロブロックＣのＱＰ値の差分値である修正ＱＰ変化量を求めることが出来る。
【０２９１】
なお、ここで求められたＱＰ変化量は式（３）により導出されているため、０〜５１の範囲を示す値となっている。本来のＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”は−２６〜＋２５の範囲を取る値であるため、ＱＰデルタ修正部１３８は次式（４）により、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”を−２６〜＋２５の範囲となるように修正する。
【０２９２】
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ＞２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ  −  ５２
ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ≦２５の場合：ｍｂ＿ｑｐ＿ｄｅｌｔａ  ＝  ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ        ・・・（４）
【０２９３】
なお式（４）で示した処理は、ここで示したようにＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”の累積対象の全てのマクロブロックについて累積した後、最後に１回だけで行ってもよいし、累積対象の全てのマクロブロックについて、１マクロブロックごとに行ってもよい。
【０２９４】
また、ここではマクロブロックＣに着目して説明したが、全てのＭＢラインの先頭のマクロブロックについても同様な処理を行う。例えば、マクロブロックＣの下方向に隣接するマクロブロックについては、ＭＢラインＬ４〜Ｌ６の全てのマクロブロックのＱＰ変化量を累積し、該当のマクロブロックに対して反映を行うことで、修正されたＱＰ変化量を導出する。これらの処理は、分割ストリーム毎に独立して行われる。
【０２９５】
最後にＱＰデルタ修正部１３８は、このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。なお、ＱＰデルタ修正部１３８ａはＣＡＶＬＣ方式で、ＱＰデルタ修正部１３８ｂはＣＡＢＡＣ方式で符号化を行う。
【０２９６】
以上説明したように、ＱＰデルタ修正部１３８は、入力されたＱＰ変化量を分割ストリームにおけるマクロブロックの前後関係に合うように修正することで、各分割ストリームに対して適切なＱＰ変化量を設定することができる。その結果、後段のデコードエンジン１２０は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
【０２９７】
また、図１６Ｂには、ＭＢラインＬ４とＬ５の境界でスライスが分割されていた場合の例を示している。この例では、ＭＢラインＬ１〜Ｌ４はスライスＡに、ＭＢラインＬ５〜Ｌ８はスライスＢに含まれる。
【０２９８】
このとき、第２分割ストリームにおいて、図１６Ａ同様にマクロブロックＡとマクロブロックＣは連続しているが、それぞれのマクロブロックが含まれるスライスは異なっており、マクロブロックＡとマクロブロックＣとの間で依存関係はなくなっている。第２分割ストリームにおいて、マクロブロックＣはスライスＢの先頭のマクロブロックとなるため、マクロブロックＣのＱＰ変化量は、マクロブロックＣのＱＰ値とスライスＢのスライスＱＰ値との差分値を示している必要がある。
【０２９９】
すなわちＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのうち、スライスＢに含まれるものについて、ＱＰ変化量の累積を行うことで、スライスＢのスライスＱＰ値からの差分値を求めることが出来る。しかしながら、実際にスライスが分割されているかどうかは、スライスＢの先頭が到達するまでは判別できない。
【０３００】
そこでＱＰデルタ修正部１３８は、マクロブロックＡからマクロブロックＣの間に含まれるマクロブロックのすべてについてＱＰ変化量の累積を行うとともに、スライスＢの先頭のマクロブロック処理開始時に、累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする。このようにすることで、スライスＢに含まれるマクロブロックのみについて、ＱＰ変化量の累積を行うことができ、正しくマクロブロックＣの修正ＱＰ変化量を求めることが出来る。
【０３０１】
このようにして得られた修正ＱＰ変化量を再び符号化し、符号化された修正ＱＰ変化量を分割点検出部１３９に対して出力する。
【０３０２】
図１８は、ＱＰデルタ修正部１３８によるＱＰ変化量の修正処理を示すフローチャートである。
【０３０３】
マクロブロックの処理が開始されると、まずＱＰデルタ修正部１３８は、処理対象マクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ３００）。
【０３０４】
次にＱＰデルタ修正部１３８は、処理対象マクロブロックがスライスの先頭であるかどうかを判定する（ステップＳ３０２）。
【０３０５】
処理対象マクロブロックがスライスの先頭であると判定された場合（ステップＳ３０２のＹｅｓ）、全ての分割ストリームに対応する累積ＱＰ変化量“ａｃｃ＿ｍｂ＿ｑｐ＿ｄｅｌｔａ”を０にリセットする（ステップＳ３０４）。この処理により、途中でスライスが分割されていた場合、正しくスライスＱＰ値からのＱＰ変化量が導出できる。なお、ここではスライスの先頭のマクロブロックかどうかで累積ＱＰ変化量をリセットするかどうかを決定しているが、スライスの先頭で累積ＱＰ変化量をリセット出来れば良いため、スライスヘッダが到着した時点で累積ＱＰ変化量をリセットするような構成であっても良い。
【０３０６】
ステップＳ３０２で処理対象マクロブロックがスライスの先頭でないと判定された場合（ステップＳ３０２のＮｏ）、またはステップＳ３０４で累積ＱＰ変化量のリセットを行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックの分割ストリーム出力先を判定する（ステップＳ３０６）。
【０３０７】
ステップＳ３０６で処理対象マクロブロックの出力先が第１分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第２、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３０８）。
【０３０８】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第２分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第３、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１０）。
【０３０９】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第３分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第４分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１２）。
【０３１０】
また、ステップＳ３０６で処理対象マクロブロックの出力先が第４分割ストリームであると判定された場合、ＱＰデルタ修正部１３８は、第１、第２、第３分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する（ステップＳ３１４）。
【０３１１】
このように、ステップＳ３０８〜ステップＳ３１４では、処理対象マクロブロックの出力先となる分割ストリーム以外の分割ストリームに対応するＱＰ変化量の累積が行われる。これは、各分割ストリームにおいて、対象の分割ストリームに割り当てられなかった３ＭＢラインに含まれるマクロブロックのＱＰ変化量累積を行うことを意味している。このような処理により、ＱＰデルタ修正部１３８は、対象の分割ストリームに割り当てられなかった３ＭＢラインに対する前後のマクロブロックのＱＰ値の差分値を正しく是正することが出来る。
【０３１２】
ステップＳ３０８、ステップＳ３１０、ステップＳ３１２、ステップＳ３１４でＱＰ変化量の累積を行った後、ＱＰデルタ修正部１３８は、ステップＳ３００で求めたマクロブロックの位置情報から、処理対象マクロブロックがＭＢラインの先頭に位置しているかどうかを判定する（ステップＳ３１６）。なお、ここではＭＢライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、ＱＰデルタ修正部１３８は、マクロブロックの位置情報から、処理対象マクロブロックが分割単位の先頭に位置しているかどうかを判定すればよい。
【０３１３】
処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量に対し、処理対象マクロブロックのＱＰ変化量を、式（３）に従って累積する。そして、ＱＰデルタ修正部１３８は、得られた累積ＱＰ変化量を式（４）に従って−２６〜＋２５の範囲となるように修正したうえで、処理対象マクロブロックのＱＰ変化量として置き換える。さらに、ＱＰデルタ修正部１３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３１８）。このように、ステップＳ３１８では、累積したＱＰ変化量が、ＭＢライン先頭のマクロブロックのＱＰ変化量に反映されることで、ＱＰ変化量の修正が行われる。
【０３１４】
処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、またはステップＳ３１８で処理対象マクロブロックのＱＰ変化量の修正が行われた後、ＱＰデルタ修正部１３８は、処理対象マクロブロックのＱＰ変化量の再符号化処理を行う（ステップＳ３２０）。これは、分割ストリームをＨ．２６４／ＡＶＣ規格に準拠した形式にするためである。
【０３１５】
その後ＱＰデルタ修正部１３８は、再符号化されたＱＰ変化量を分割点検出部１３９に出力して処理を終了する（ステップＳ３２２）。
【０３１６】
以上のように、ＱＰデルタ修正部１３８は、ＭＢラインの先頭のマクロブロックに対してはＱＰ変化量の修正を行った上で、ＭＢラインの先頭以外のマクロブロックに対してはそのまま、ＱＰ変化量の再符号化・出力処理を行う。
【０３１７】
このように、本実施の形態における画像復号化装置１００では、符号化されたピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のＭＢラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１２０で負担することなく、Ｎ個のデコードエンジン１２０で均等に負担することができる。
【０３１８】
ここで、符号化ピクチャが複数のＭＢラインに分割されると、複数のＭＢラインに跨るスライスが複数のスライス部分（例えば、図３に示す各ＭＢラインＬ１〜Ｌ６や、ＭＢラインＬ７のうちの先頭６マクロブロックの集合など）に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群（例えば、図３に示す第２分割ストリームに含まれるＭＢラインＬ２、Ｌ６）が含まれることとなる。また、このようなスライス部分群（ＭＢラインＬ２、Ｌ６）には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
【０３１９】
さらに、符号化ストリームに含まれる所定の符号語に起因して、複数のＭＢラインが依存関係を持つ場合がある。例えば、Ｈ．２６４／ＡＶＣでは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”や、ＱＰ変化量“ｍｂ＿ｑｐ＿ｄｅｌｔａ”によって複数のＭＢラインが互いに依存関係を有する場合がある。このような符号化ストリームが複数のＭＢラインに分割されて互いに異なる分割ストリームに割り当てられると、ＭＢライン間の依存関係を正しく保つことが出来ない。
【０３２０】
そこで本実施の形態では、ストリーム分割部１３０がそのスライス部分群を新たなスライスとして再構成する。その結果、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本実施の形態では、Ｎ個のデコードエンジン１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置１００の全体構成を簡単にすることができる。
【０３２１】
また、本実施の形態の画像復号化装置では、上記特許文献３の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献３の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献３の画像復号化装置では、符号化ストリームを適切に分割していない、言い換えれば、符号化ストリームが分割されて生成されるデータが、従来のデコードエンジンで復号化可能なストリームとして構成されていない。一方、本実施の形態の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図３３に示すデコードエンジン４２１のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本実施の形態の画像復号化装置では、復号化処理の高速化を図ることができる。
【０３２２】
また、本実施の形態では、上記特許文献４の画像復号化装置と比べて、従来のデコードエンジンを流用することができるというメリットがある。具体的には、上記特許文献４の画像復号化装置では、符号化ストリームを分割することなく、符号化ストリームにおいてＭＢラインの境界に行ヘッダを挿入している。したがって、上記特許文献４の画像復号化装置の複数のデコードエンジンは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出しなければならない。このとき、それらのデコードエンジンは、処理対象のＭＢラインが格納されている位置が既に特定されていれば、処理対象のＭＢラインを抽出するために符号化ストリームに対して不連続にアクセスする必要があり、その位置が特定されていなければ、符号化ストリームに先頭からアクセスし、処理対象でないＭＢラインを読み飛ばす必要がある。一方、本実施の形態の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図３３に示すデコードエンジン４２１のように、分割ストリームを通常の符号化ストリームとして扱って復号化することができる。このように、本実施の形態の画像復号化装置では、従来のデコードエンジンを流用することができ、上記特許文献４の画像復号化装置では成し得ない効果を奏することができる。
【０３２３】
また、このような本実施の形態における画像復号化装置１００は、ストリーム分割部１３０に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０３２４】
図１９Ａは、高解像度デコードを説明するための説明図である。図１９Ｂは、高速デコードを説明するための説明図である。図１９Ｃは、複数チャンネルデコードを説明するための説明図である。
【０３２５】
画像復号化装置１００のストリーム分割部１３０は、図１９Ａに示すように、高解像度デコードの実行を指示するモード情報を取得すると、４ｋ２ｋの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０３２６】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、４ｋ２ｋの画像（３８４０×２１６０画素、６０ｐ）をリアルタイムに処理することができる。
【０３２７】
また、画像復号化装置１００のストリーム分割部１３０は、図１９Ｂに示すように、高速デコードの実行を指示するモード情報を取得すると、ＨＤの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０３２８】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、ＨＤの画像を８倍速（４×２）で処理することができる。
【０３２９】
また、画像復号化装置１００のストリーム分割部１３０は、図１９Ｃに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のＨＤの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン１２０に復号化させる。なお、この複数チャンネルデコードの場合、ストリーム分割部１３０は、ＳＰＳ、ＰＰＳおよびスライスなどの各種ＮＡＬユニットの複製および挿入を行わず、分割ストリームバッファ１５２の各領域への符号化ストリーム（チャンネル）の振り分けのみを行う。
【０３３０】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、最大８チャンネル、つまり８つのＨＤの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル（符号化ストリーム）を復号化する場合には、デコードエンジン１２０のクロック周波数を下げて消費電力の低減を図ることができる。例えば、４チャンネルを復号化する場合には、第１デコードエンジン１２０と第２デコードエンジン１２０のそれぞれに２チャンネルの復号化を実行させ、残りの第３デコードエンジン１２０と第４デコードエンジン１２０を停止させる。または、第１デコードエンジン１２０〜第４デコードエンジン１２０を使用し、それらのクロック周波数を１／２にする。
【０３３１】
このように、本実施の形態における画像復号化装置１００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。なお、画像復号化装置１００における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを４つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート（４ｋ２ｋまたはＨＤ）が異なるだけである。したがって、画像復号化装置１００は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
【０３３２】
（実施の形態２）
次に、本発明の実施の形態２について、詳細に説明する。
【０３３３】
実施の形態１における画像復号化装置１００は、ＭＢスキップラン情報およびＱＰ変化量を修正することにより、分割前の符号化ストリームにおいて連続するＭＢライン間の依存関係を、各分割ストリームにおけるＭＢラインの前後関係に応じた依存関係に修正した。
【０３３４】
ここで、符号化ストリームには、ＱＰ変化量が含まれていないマクロブロックが含まれる場合がある。ＱＰ変化量が含まれていないマクロブロックは、量子化されていないマクロブロックに相当する。具体的には、Ｈ．２６４／ＡＶＣ規格における、ＱＰ変化量が含まれていないマクロブロックは、例えば、（１）スキップマクロブロック、（２）非圧縮のマクロブロック（Ｉ＿ＰＣＭ）、または（３）イントラ予測の予測モードが“Ｉｎｔｒａ１６×１６”ではなく、かつ“ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ”が０である（非０係数を１つも含まない）マクロブロックである。
【０３３５】
このようなＱＰ変化量が含まれていないマクロブロックがＭＢラインの先頭に存在する場合、実施の形態１における画像復号化装置１００は、修正対象となるＱＰ変化量が存在しないので、ＱＰ変化量を修正することができない。
【０３３６】
そこで、実施の形態２における画像復号化装置２００は、ＱＰ変化量が含まれていないマクロブロックをＭＢラインの先頭に含む符号化ストリームから複数の分割ストリームを生成する際に、そのマクロブロックを含む分割ストリームにＱＰ変化量を挿入することを１つの特徴とする。これにより、画像復号化装置２００は、各分割ストリームにおける新たな前後関係に基づくＱＰ変化量を適切に設定することができる。
【０３３７】
ここで、分割ストリームにＱＰ変化量が挿入された場合には、ＭＢライン間にＱＰ変化量が存在するため、ＭＢラインを跨って連続するスキップマクロブロックの個数を１つのＭＢスキップラン情報を用いて示すことができない。そこで、実施の形態２における画像復号化装置２００は、ＭＢスキップラン情報の再結合処理を行わないことをもう１つの特徴とする。
【０３３８】
以下、図面を用いて、本実施の形態における画像復号化装置２００について説明する。
【０３３９】
図２０は、本発明の実施の形態２における画像復号化装置の構成を示すブロック図である。なお、図２０において、図１と同様の構成要素については、同一の符号を付し、説明を省略する。
【０３４０】
図２０に示すように、画像復号化装置２００は、デコーダ２１０とメモリ１５０とを備えている。
【０３４１】
デコーダ２１０は、デコーダ１１０と同様に、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ２１０は、ストリーム分割部２３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）２２０とを備えている。
【０３４２】
ストリーム分割部２３０は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の修正処理を除き、ストリーム分割部１３０と同等の処理を実行する。ストリーム分割部２３０の詳細は、図２１を用いて後述する。
【０３４３】
Ｎ個のデコードエンジン２２０は、Ｎ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部に相当する。Ｎ個のデコードエンジン２２０は、ストリーム分割部２３０によって分割ストリームに挿入された累積ＱＰ変化量を用いてＱＰ値を算出する点を除いて、Ｎ個のデコードエンジン１２０と同等の処理を実行する。
【０３４４】
続いて、ストリーム分割部２３０の構成および動作について詳細に説明する。
【０３４５】
図２１は、ストリーム分割部２３０の構成を示すブロック図である。
【０３４６】
ストリーム分割部２３０は、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの代わりに、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂを備えている点が、図７に示すストリーム分割部１３０と異なる。
【０３４７】
スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢスキップラン情報が、互いに異なる分割ストリームに割り当てられる少なくとも２つのＭＢラインに跨って連続するマクロブロックの個数を示す場合には、ＭＢラインごとのブロックの個数を示すようにＭＢスキップラン情報を分割する。
【０３４８】
ただし、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと異なり、各分割ストリームにおいて、複数のＭＢスキップラン情報を１つのＭＢスキップラン情報に結合しない。
【０３４９】
ＱＰデルタ挿入部２３８ａ、２３８ｂは、ＱＰデルタ修正部１３８ａ、１３８ｂと同様に、ＱＰ変化量が、２つのＭＢラインに跨るマクロブロック間の変化量を示す場合には、各分割ストリームにおけるマクロブロックの新たな前後関係に基づくＱＰ変化量を計算する。
【０３５０】
ただし、ＱＰデルタ挿入部２３８ａ、２３８ｂは、計算したＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。これにより、各分割ストリームには、新たなＱＰ変化量が挿入（設定）される。つまり、ＱＰデルタ挿入部２３８ａ、２３８ｂは、各マクロブロックに含まれているＱＰ変化量を修正しない。
【０３５１】
分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン修正部２３７ａから取得したＭＢスキップラン情報と、ＱＰデルタ挿入部２３８ａから取得した累積ＱＰ変化量とを含める。
【０３５２】
分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰデルタ挿入部２３８ｂから取得した累積ＱＰ変化量を含める。
【０３５３】
次に、スキップラン修正部２３７ａおよびＱＰデルタ挿入部２３８ａ、２３８ｂの動作について、スキップラン修正部１３７ａおよびＱＰデルタ修正部１３８ａ、１３８ｂの動作と異なる点を中心に、詳細に説明する。
【０３５４】
なお、以降の説明において、ＱＰデルタ挿入部２３８ａ、２３８ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくＱＰデルタ挿入部２３８と総称する。
【０３５５】
図２２は、ＭＢスキップラン情報の修正処理およびＱＰ変化量の挿入処理を説明するための説明図である。
【０３５６】
図２２に示されたピクチャには、ＭＢラインＬ２の末尾に５個、ＭＢラインＬ３の先頭に３個、ＭＢラインＬ５の末尾に２個、ＭＢラインＬ６の先頭に４個の連続するスキップマクロブロックが存在する。
【０３５７】
また前述したように、スキップマクロブロックには、ＱＰ変化量が含まれない。したがって、マクロブロックＣには、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値がＱＰ変化量として符号化されている。
【０３５８】
しかし、このようなピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、ＭＢライン境界におけるマクロブロックの前後関係が変化してしまう。
【０３５９】
すなわち、ストリーム分割後には、マクロブロックＣが含まれる第２分割ストリームにおいて、マクロブロックＣの直前に位置する、ＱＰ変化量を含むマクロブロックはマクロブロックＡとなる。したがって、そのまま第２分割ストリームをデコードエンジン２２０が復号した場合、マクロブロックＡのＱＰ値に対して、マクロブロックＢのＱＰ値とマクロブロックＣのＱＰ値との差分値であるＱＰ変化量を反映してしまうことになり、マクロブロックＣのＱＰ値を正しく復号化できない。
【０３６０】
そこでＱＰデルタ挿入部２３８は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、ＭＢラインへ挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。つまり、ＱＰデルタ挿入部２３８は、ＱＰ変化量が２つのＭＢラインを跨ぐブロック間のＱＰ値の差分値を示すことにより、その２つのＭＢラインが依存関係を有する場合に、その依存関係を断つように、ＭＢラインの先頭に挿入するための新たなＱＰ変化量を分割点検出部１３９に出力する。
【０３６１】
なお、本実施の形態では、ＭＢラインの先頭にＱＰ変化量が挿入されているが、必ずしもＭＢラインの先頭にＱＰ変化量が挿入される必要はない。例えば、ＭＢラインの先頭のマクロブロック内など他の場所にＱＰ変化量が挿入されてもよい。
【０３６２】
ＭＢラインの先頭に挿入するためのＱＰ変化量の計算方法としては、実施の形態１と同様に、全てのマクロブロックについてＱＰ値を復元することによりＱＰ変化量を計算する方法と、対象分割ストリームに割り当てられなかったマクロブロックのＱＰ変化量を累積することによりＱＰ変化量を計算する方法とが考えられる。本実施の形態では、後者の計算方法について説明する。
【０３６３】
ＱＰデルタ挿入部２３８は、ＭＢラインＬ３〜Ｌ５に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を再び符号化し、符号化された累積ＱＰ変化量を新たなＱＰ変化量として分割点検出部１３９に出力する。その結果、図２２に示すように、累積ＱＰ変化量は、ＭＢラインＬ６の先頭に挿入される。つまり、第２分割ストリームには、累積ＱＰ変化量と、もともとマクロブロックＣに含まれていたＱＰ変化量とが設定される。なお、累積ＱＰ変化量の詳細な計算方法は、実施の形態１と同様であるので説明を省略する。
【０３６４】
なお、ここではＭＢラインＬ６に着目して説明したが、ＱＰデルタ挿入部２３８は、他のＭＢラインについても、累積ＱＰ変化量をＭＢラインの先頭に挿入するために、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。例えば、ＱＰデルタ挿入部２３８は、ＭＢラインＬ７の先頭に挿入するための累積ＱＰ変化量として、ＭＢラインＬ４〜Ｌ６に含まれる、ＱＰ変化量を含む全てのマクロブロックのＱＰ変化量を累積した累積ＱＰ変化量を計算する。そして、ＱＰデルタ挿入部２３８は、計算した累積ＱＰ変化量を符号化し、符号化された累積ＱＰ変化量を分割点検出部１３９に出力する。これらの処理は、分割ストリーム毎に独立して行われる。
【０３６５】
このように、本実施の形態では、累積ＱＰ変化量がＭＢラインの先頭に挿入されるので、ＭＢラインを跨いでスキップマクロブロックは連続しない。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａと異なり、ＭＢスキップラン情報の結合処理を行わない。
【０３６６】
例えば、図２２に示されたピクチャの場合、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、ＭＢラインＬ２〜Ｌ３に跨って存在する８個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ２に含まれる５個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ３に含まれる３個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。同様に、スキップラン修正部２３７ａは、ＭＢラインＬ５〜Ｌ６に跨って存在する６個のスキップマクロブロックに対応するＭＢスキップラン情報を、ＭＢラインＬ５に含まれる２個のスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個のスキップマクロブロックに対応するＭＢスキップラン情報とに分割する。
【０３６７】
ここで、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックと、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックとの間には、上述したように累積ＱＰ変化量が新たなＱＰ変化量として挿入される。そこで、スキップラン修正部２３７ａは、ＭＢラインＬ２に含まれる５個の連続するスキップマクロブロックに対応するＭＢスキップラン情報と、ＭＢラインＬ６に含まれる４個の連続するスキップマクロブロックに対応するＭＢスキップラン情報とを再結合しない。
【０３６８】
なお、スキップラン修正部２３７ａは、スキップラン修正部１３７ａと同様に、このようにして得られたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。
【０３６９】
図２３は、スキップラン修正部２３７ａの構成を示すブロック図である。なお、図２３において、図１４と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
【０３７０】
スキップラン修正部２３７ａは、スキップラン抽出部１６０、スキップラン分割部１６１、およびスキップラン符号化部１６４を備えている。つまり、スキップラン修正部２３７ａは、実施の形態１におけるスキップラン修正部１３７ａからスキップラン累積・保持部１６２と加算部１６３とを除いた構成と同様である。なお、スキップラン分割部１６１は、分割したＭＢスキップラン情報をスキップラン符号化部１６４に出力する。
【０３７１】
図２４は、スキップラン修正部２３７ａによるＭＢスキップラン情報の修正動作を示すフローチャートである。なお、図２４において、図１５と同様の処理を行うステップについては、同一の符号を付し、説明を省略する。
【０３７２】
まずスキップラン修正部２３７ａは、ＭＢスキップラン情報“ｍｂ＿ｓｋｉｐ＿ｒｕｎ”を取得したかどうかを調べる（ステップＳ２０２）。すなわち、スキップラン修正部２３７ａは、処理しているストリームがスライス終端に到達しているかどうかを判別しない。これは、後述するように、スキップラン修正部２３７ａは、先行ＭＢスキップラン情報を内部に保持しないため、スライス終端に到達したときの先行ＭＢスキップラン情報の出力処理が不要だからである。
【０３７３】
ここで、まだＭＢスキップラン情報を取得していない場合（ステップＳ２０２のＮｏ）、スキップラン修正部２３７ａは、処理の最初に戻りストリームを再度読み進める。
【０３７４】
一方、ＭＢスキップラン情報を取得している場合（ステップＳ２０２のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、該当のＭＢスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する（ステップＳ２０４）。
【０３７５】
続いて、スキップラン修正部２３７ａは、実施の形態１と同様に、取得したＭＢスキップラン情報を分割する必要があるかどうかを判定する（ステップＳ２０６）。
【０３７６】
ここで、連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報を分割するためステップＳ２１６に進む。詳細は後述する。
【０３７７】
一方、連続するスキップマクロブロックがＭＢライン境界に到達しないと判定された場合（ステップＳ２０６のＮｏ）、スキップラン修正部２３７ａは、ＭＢスキップラン情報の再符号化処理を行う（ステップＳ２１２）。ここで、図１５に示すステップＳ２０８およびステップＳ２１０の処理が実行されないのは、本実施の形態におけるスキップラン修正部２３７ａは、ＭＢスキップラン情報を再結合しないからである。
【０３７８】
その後、スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力して処理を終了する（ステップＳ２１４）。
【０３７９】
また、ステップＳ２０６で連続するスキップマクロブロックがＭＢライン境界に到達すると判定された場合（ステップＳ２０６のＹｅｓ）、スキップラン修正部２３７ａは、実施の形態１と同様に、ＭＢライン境界を分割点として、該当のＭＢスキップラン情報を前半部と後半部とに分割する（ステップＳ２１６）。
【０３８０】
さらにスキップラン修正部２３７ａは、分割したＭＢスキップラン情報のうち、前半部をＭＢスキップラン情報として再符号化する（ステップＳ２５０）。その後スキップラン修正部２３７ａは、再符号化されたＭＢスキップラン情報を分割点検出部１３９ａに出力する（ステップＳ２５２）。つまり、本実施の形態では、ＭＢスキップラン情報を再結合する必要がないので、実施の形態１のように先行ＭＢスキップラン情報を内部に保持しない。
【０３８１】
次にスキップラン修正部２３７ａは、実施の形態１と同様に、分割したＭＢスキップラン情報のうち、後半部を新たなＭＢスキップラン情報として設定した後（ステップＳ２２０）、その長さが０であるかどうかを判定する（ステップＳ２２２）。
【０３８２】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０であると判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部２３７ａは、それ以上処理すべきＭＢスキップラン情報がないものとして、処理を終了する。
【０３８３】
ステップＳ２２２で新たなＭＢスキップラン情報の長さが０でないと判定された場合（ステップＳ２２２のＹｅｓ）、スキップラン修正部１３７ａは、まだ処理すべきＭＢスキップラン情報が存在するものとしてステップＳ２０４に戻り、再度ＭＢスキップラン情報の分割および出力処理を行う。
【０３８４】
以上説明した処理が、スキップラン修正部２３７ａではストリームの終了まで繰り返し行われる。このように、スキップラン修正部２３７ａでは、ＭＢスキップラン情報の分割が適切に行われる。
【０３８５】
図２５は、ＱＰデルタ挿入部２３８による累積ＱＰ変化量の挿入処理を示すフローチャートである。なお、図２５において、図１８と同様の処理を行うステップについては、同一の符号を付し、詳細な説明を省略する。
【０３８６】
マクロブロックの処理が開始されると、ＱＰデルタ挿入部２３８は、実施の形態１と同様に、ステップＳ３００〜ステップＳ３１６までの処理を実行する。
【０３８７】
そして、処理対象マクロブロックがＭＢラインの先頭に位置していると判定された場合（ステップＳ３１６のＹｅｓ）、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが割り当てられる分割ストリームに対応する累積ＱＰ変化量を符号化し、分割点検出部１３９に出力する（ステップＳ３５２）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報を出力する前に、累積ＱＰ変化量を出力する。
【０３８８】
続いて、ＱＰデルタ挿入部２３８は、処理対象マクロブロックが含まれる分割ストリームに対応する累積ＱＰ変化量を０にリセットする（ステップＳ３５４）。そして、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５６）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、ＱＰ変化量を修正することなくそのまま出力する。
【０３８９】
一方、処理対象マクロブロックがＭＢラインの先頭に位置していないと判定された場合（ステップＳ３１６のＮｏ）、ＱＰデルタ挿入部２３８は、ＭＢ情報を分割点検出部１３９に出力し、処理を終了する（ステップＳ３５０）。つまり、ＱＰデルタ挿入部２３８は、ＭＢ情報にＱＰ変化量が含まれている場合には、そのＱＰ変化量を修正することなく、ＭＢ情報を出力する。
【０３９０】
以上のように、ＱＰデルタ挿入部２３８は、ＭＢラインの先頭に挿入するために累積した新たなＱＰ変化量（累積ＱＰ変化量）と、符号化ストリームに含まれていたＱＰ変化量とを分割点検出部１３９に出力する。
【０３９１】
このように、本実施の形態における画像復号化装置２００では、実施の形態１における画像復号化装置１００と同様に、Ｎ個のデコードエンジン２２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。
【０３９２】
特に、ＭＢラインの先頭に位置するマクロブロックがＱＰ変化量を含まない場合であっても、本実施の形態における画像復号化装置２００は、新たなＱＰ変化量をＭＢラインに挿入することにより、並行して復号化処理が行われるときに正しいＱＰ値を得ることができる。
【０３９３】
また、このような本実施の形態における画像復号化装置２００は、実施の形態１における画像復号化装置１００と同様に、ストリーム分割部２３０に入力されるモード情報に応じて、図１９Ａ〜図１９Ｃに示した高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０３９４】
これにより、本実施の形態における画像復号化装置２００は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。
【０３９５】
次に、上記実施の形態１および２に係る画像復号化装置の適用例について説明する。
【０３９６】
図２６は、上記実施の形態１および２に係る画像復号化装置の適用例を示す図である。
【０３９７】
例えば、上記実施の形態１および２に係る画像復号化装置は、図２６に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生する再生装置１０１に備えられる。再生装置１０１は、ＢＳデジタル放送の放送波を受信するアンテナ１０１ａと装置本体１０１ｂとを備え、装置本体１０１ｂは上述の画像復号化装置を備える。
【０３９８】
装置本体１０１ｂに備えられた画像復号化装置は、アンテナ１０１ａによって受信された放送波から例えば４ｋ２ｋの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してＮ個の分割ストリームを生成し、Ｎ個の分割ストリームを並列に復号化する。
【０３９９】
以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態を用いて説明したが、本発明は、これらに限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を上記実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０４００】
例えば、上記実施の形態では、画像復号化装置１００、２００は分割ストリームバッファ１５２などを備えていたが、これらを備えていなくてもよい。
【０４０１】
図２７は、本発明の実施の形態における画像復号化装置の最小構成を示すブロック図である。
【０４０２】
画像復号化装置１０は、本発明を実現するための最小構成を有し、取得部１１、ストリーム分割部１２、およびＮ個の復号化部１３を備えている。
【０４０３】
取得部１１は、ストリームバッファ１５１、若しくはストリームバッファ１５１から画像復号化装置１０に符号化ストリームを取り込むための取得装置（あるいは単なる取得口）に相当し、画像データが符号化された符号化ストリームを取得する。ストリーム分割部１２は、ストリーム分割部１３０、２３０に相当する。つまり、ストリーム分割部１２は、取得部１１で取得された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。Ｎ個の復号化部１３は、デコードエンジン１２０、２２０に相当し、ストリーム分割部１２により生成されたＮ個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部１２は、Ｎ個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の復号化部１３の何れかにスライスとして認識されるように、スライス部分群を新たなスライスとして再構成する。
【０４０４】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【０４０５】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。また、複数のスライス部分のうち、符号化ストリームにおいて連続する少なくとも２つのスライス部分が、符号化ストリームに含まれる所定の符号語による依存関係を有する場合がある。
【０４０６】
そこで上記実施の形態では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部１３は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、上記実施の形態では、Ｎ個の復号化部１３のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【０４０７】
したがって、画像復号化装置１０は、上記実施の形態における分割ストリームバッファ１５２などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０４０８】
例えば、上記実施の形態では、１ＭＢラインを１つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は１ＭＢラインに限らず、２ＭＢラインや、３ＭＢラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがＭＢＡＦＦで構成されている場合には、２ＭＢラインを構成単位として扱い、ピクチャがＭＢＡＦＦで構成されていない場合には、１ＭＢラインを構成単位として扱ってもよい。
【０４０９】
また、上記実施の形態では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のＭＢラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのＭＢラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
【０４１０】
また、上記実施の形態では、ストリーム分割部は、ＱＰ変化量の修正およびＱＰ変化量の挿入のどちらか一方を実行していたが、両方を実行してもよい。その場合、ストリーム分割部は、例えば、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいるか否かを判定すればよい。ここで、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいる場合、ストリーム分割部は、当該マクロブロックのＱＰ変化量の置き換え等を行えばよい（図１８のステップＳ３１８〜Ｓ３２２）。一方、ＭＢラインの先頭のマクロブロックがＱＰ変化量を含んでいない場合、ストリーム分割部は、累積ＱＰ変化量の出力等を行えばよい（図２５のステップＳ３５２〜Ｓ３５６）。
【０４１１】
さらに、ストリーム分割部がＱＰ変化量の修正およびＱＰ変化量の挿入の両方を実行する場合、スキップラン修正部は、例えば、ＭＢスキップラン情報がＭＢラインの先頭に位置しているときに、そのＭＢラインの先頭にＱＰ変化量が挿入されるか否かを判定することが好ましい。ここで、ＭＢラインの先頭にＱＰ変化量が挿入されない場合、スキップラン修正部は、ＭＢスキップラン情報に先行ＭＢスキップラン情報を加算すればよい（図１５のＳ２１０）。一方、ＭＢラインの先頭にＱＰ変化量が挿入される場合、先行ＭＢスキップラン情報とＭＢスキップラン情報とをそれぞれＭＢスキップラン情報として出力すればよい。
【０４１２】
また、上記実施の形態では、第１の符号語がＭＢスキップラン情報である場合について説明したが、必ずしも第１の符号語はＭＢスキップラン情報である必要はない。例えば、第１の符号語は、スキップマクロブロックとは異なる種類のマクロブロックが連続することを示す符号語であってもよい。
【０４１３】
また、上記実施の形態では、第２の符号語がＱＰ変化量である場合について説明したが、必ずしも第２の符号語はＱＰ変化量である必要はない。例えば、第２の符号語は、ＱＰ変化量とは異なる、マクロブロック間における符号化係数の変化量を示す符号語であってもよい。
【０４１４】
なお、ブロック図（図１、図７、図９、図１４、図２０、図２１、および図２３など）の各機能ブロックは典型的には集積回路であるＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）として実現される。これらは個別に１チップ化されても良いし、一部または全てを含むように１チップ化されても良い。例えば、図１のデコーダ１１０で表される部分（ストリーム分割部１３０と、第１デコードエンジン〜第Ｎデコードエンジン１２０とを含んだもの）が１チップに含まれていても良い。
【０４１５】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０４１６】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０４１７】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０４１８】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという効果を奏し、例えば、４ｋ２ｋの符号化ストリームを復号化する再生装置などとして有用である。
【符号の説明】
【０４１９】
１０、１００、２００    画像復号化装置
１１    取得部
１２、１３０、２３０    ストリーム分割部
１３    復号化部
１１０、２１０    デコーダ
１２０、２２０    第１〜第Ｎデコードエンジン（デコードエンジン）
１３１    スタートコード検出部
１３２ａ    ＥＰＢ除去部
１３２ｂ    ＥＰＢ挿入部
１３３    スライスヘッダ挿入部
１３３ａ    ＮＡＬタイプ判定部
１３３ｂ    ヘッダ挿入カウンタ
１３３ｃ    ヘッダアドレス更新部
１３３ｄ    ヘッダバッファ
１３４、１３４ａ、１３４ｂ    スライスデータ処理部
１３５ａ、１３５ｂ    スライスデータ層デコード部
１３６ａ、１３６ｂ    マクロブロック層デコード部
１３７ａ、２３７ａ    スキップラン修正部
１３８、１３８ａ、１３８ｂ    ＱＰデルタ修正部
１３９、１３９ａ、１３９ｂ    分割点検出部
１５０    メモリ
１５１    ストリームバッファ
１５２    分割ストリームバッファ
１５３    フレームメモリ
１６０    スキップラン抽出部
１６１    スキップラン分割部
１６２    スキップラン累積・保持部
１６３    加算部
１６４    スキップラン符号化部
２３８、２３８ａ、２３８ｂ    ＱＰデルタ挿入部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第１の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第１の符号語が、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも２つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第１の符号語を、前記少なくとも２つの連続するスライス部分がそれぞれ割り当てられる少なくとも２つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、さらに、
各分割ストリームにおいて、設定される複数の第１の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第１の符号語を、前記複数の第１の符号語のそれぞれが示す個数の総和を示す１つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項２に記載の画像復号化装置。
【請求項４】
前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第２の符号語であり、
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語が、符号化ストリームにおいて連続する２つのスライス部分に跨るブロック間の変化量を示すことにより、前記２つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記２つのスライス部分がそれぞれ割り当てられる２つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１に記載の画像復号化装置。
【請求項５】
前記ストリーム分割部は、
計算した変化量に修正した前記第２の符号語を前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項６】
前記ストリーム分割部は、
計算した変化量を示す新たな符号語と前記第２の符号語とを前記分割ストリームに設定する、
請求項４に記載の画像復号化装置。
【請求項７】
前記ストリーム分割部は、
前記符号化ストリームに含まれる第２の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第２の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
請求項４に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
第２の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を０にリセットする、
請求項８に記載の画像復号化装置。
【請求項１０】
前記Ｎ個の復号化部は、第１および第２の復号化部を含み、
前記第１の復号化部が、前記Ｎ個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記Ｎ個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が前記符号化ピクチャ内で互いに隣接していた場合には、
前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、
前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する、
請求項１〜９のいずれか１項に記載の画像復号化装置。
【請求項１１】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１２】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、
前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１３】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
符号化ストリームを取得する取得部と、
前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、前記Ｎ個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも２つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも１つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010067505.tif 000045
【図２Ａ】
2010067505.tif 000046
【図２Ｂ】
2010067505.tif 000047
【図３】
2010067505.tif 000048
【図４】
2010067505.tif 000049
【図５】
2010067505.tif 000050
【図６】
2010067505.tif 000051
【図７】
2010067505.tif 000052
【図８】
2010067505.tif 000053
【図９】
2010067505.tif 000054
【図１０】
2010067505.tif 000055
【図１１Ａ】
2010067505.tif 000056
【図１１Ｂ】
2010067505.tif 000057
【図１２】
2010067505.tif 000058
【図１３Ａ】
2010067505.tif 000059
【図１３Ｂ】
2010067505.tif 000060
【図１４】
2010067505.tif 000061
【図１５】
2010067505.tif 000062
【図１６Ａ】
2010067505.tif 000063
【図１６Ｂ】
2010067505.tif 000064
【図１７】
2010067505.tif 000065
【図１８】
2010067505.tif 000066
【図１９Ａ】
2010067505.tif 000067
【図１９Ｂ】
2010067505.tif 000068
【図１９Ｃ】
2010067505.tif 000069
【図２０】
2010067505.tif 000070
【図２１】
2010067505.tif 000071
【図２２】
2010067505.tif 000072
【図２３】
2010067505.tif 000073
【図２４】
2010067505.tif 000074
【図２５】
2010067505.tif 000075
【図２６】
2010067505.tif 000076
【図２７】
2010067505.tif 000077
【図２８】
2010067505.tif 000078
【図２９】
2010067505.tif 000079
【図３０】
2010067505.tif 000080
【図３１】
2010067505.tif 000081
【図３２】
2010067505.tif 000082
【図３３】
2010067505.tif 000083
【図３４Ａ】
2010067505.tif 000084
【図３４Ｂ】
2010067505.tif 000085
【図３５】
2010067505.tif 000086
【国際調査報告】
2010067505.tif 000087
2010067505.tif 000088
2010067505.tif 000089
2010067505.tif 000090