(57)【要約】符号化ストリームに含まれるピクチャごとに、そのピクチャを複数のＭＢラインに分割し、複数のＭＢラインのそれぞれを、生成対象である４つの分割ストリームのうちの何れかの一部に割り当てることにより、４つの分割ストリームを生成するストリーム分割部と、４つの分割ストリームのそれぞれを並列に復号化する４つのデコードエンジンとを備える。ストリーム分割部は、ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、デコードエンジンにスライスとして認識されるように、そのスライス部分群を新たなスライスとして再構成する。
2010041472.tif 000002
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記ストリーム分割部は、
前記スライス部分群の先頭が、前記符号化ピクチャに含まれるスライスの先頭でない場合には、前記スライス部分群の先頭に、前記スライスの復号化に必要な補助情報を挿入することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、前記スライス部分群の先頭に前記補助情報をヘッダとして挿入する、
請求項２記載の画像復号化装置。
【請求項４】
前記ストリーム分割部は、
前記符号化ピクチャに含まれるスライスの先頭にある、前記スライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する複製部と、
前記複製補助情報を前記補助情報として前記スライス部分群の先頭に挿入する挿入部とを備え、
前記画像復号化装置は、さらに、
前記複製補助情報に含まれるアドレス情報を、前記スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新するアドレス更新部を備える、
請求項２記載の画像復号化装置。
【請求項５】
前記アドレス更新部は、
前記ストリーム分割部に備えられ、前記複製部によって生成された複製補助情報に含まれるアドレス情報を更新し、
前記挿入部は、
前記アドレス更新部によって更新されたアドレス情報を含む前記複製補助情報を前記スライス部分群の先頭に挿入する、
請求項４記載の画像復号化装置。
【請求項６】
前記アドレス更新部は、
前記挿入部によって前記スライス部分群の先頭に挿入されている前記複製補助情報に含まれるアドレス情報を更新する、
請求項４記載の画像復号化装置。
【請求項７】
前記符号化ストリームに含まれるスライスの先頭には、前記スライスの復号化に必要な補助情報があり、
前記ストリーム分割部は、
前記Ｎ個の復号化部にそれぞれ対応付けられたＮ個のバッファと、
前記符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、前記Ｎ個のバッファのうちの何れかに出力する分割出力部と、
前記符号化ピクチャに含まれるデータを順次取得し、前記データが前記補助情報であるときに、前記補助情報を前記Ｎ個のバッファに出力する補助情報処理部とを備え、
前記Ｎ個のバッファのそれぞれは、
前記分割出力部から出力された前記構成単位に含まれるデータを取得するごとに、前記データを出力し、
前記補助情報処理部から出力された前記補助情報を取得したときには、前記補助情報を保持し、前記補助情報の直後に前記構成単位のデータを取得したときにのみ、保持している前記補助情報を前記データの前に出力し、前記補助情報の直後に新たな補助情報を取得したときには、前記補助情報を前記新たな補助情報に上書きし、
前記Ｎ個の復号化部のそれぞれは、
当該復号化部に対応付けられたバッファから出力される前記補助情報および前記構成単位のデータからなる前記分割ストリームを復号化する、
請求項２記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記スライス部分群の終端が、前記符号化ピクチャに含まれるスライスの終端でない場合には、前記スライス部分群の終端であることを示す終端情報を、当該スライス部分群の終端に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１〜７の何れか１項に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
さらに、分割すべきか否かを示すモード情報を取得し、前記モード情報が分割すべきでないことを示す場合には、前記取得部によって取得される複数の符号化ストリームのそれぞれを、前記Ｎ個の復号化部のうちの何れかに出力し、
前記Ｎ個の復号化部は、 
さらに、前記ストリーム分割部から出力された複数の符号化ストリームを取得したときには、前記複数の符号化ストリームを並列に復号化する、
請求項１〜８の何れか１項に記載の画像復号化装置。
【請求項１０】
前記ストリーム分割部は、前記符号化ピクチャの水平方向に一列に配列された複数のマクロブロックからなるマクロブロックラインを少なくとも１つ含む単位を前記構成単位として扱い、前記符号化ピクチャを複数の前記構成単位に分割する、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１１】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１２】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１３】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
集積回路。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化された画像を復号化する画像復号化装置および画像復号化方法に関し、特に、復号化を並列に実行する画像復号化装置および画像復号化方法に関する。
【背景技術】
【０００２】
動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。【０００３】
図２５は、符号化されるピクチャの構成を示す図である。【０００４】
ピクチャは１６×１６画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位をマクロブロックライン（ＭＢライン）という。【０００５】
図２６は、符号化ストリームの構成を示す図である。【０００６】
符号化ストリームは、階層化されており、図２６の（ａ）に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット（ＳＰＳ）が含まれる。また、その符号化されたピクチャは、図２６の（ｂ）に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図２６の（ｃ）に示すように、ヘッダと、複数のマクロブロック（ＭＢ）とを含んで構成されている。なお、図２６の（ｂ）に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット（ＰＰＳ）が含まれる。【０００７】
図２７は、従来の画像復号化装置の構成を示す図である。【０００８】
画像復号化装置２００は、メモリ２１０およびデコードエンジン２２０を備えている。メモリ２１０は、符号化ストリームを記憶するための領域を有するストリームバッファ２１１と、デコードエンジン２２０から出力される復号画像データを記憶するための領域を有するフレームメモリ２１２とを備えている。画像復号化装置２００は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ２１１に格納する。【０００９】
デコードエンジン２２０は、そのストリームバッファ２１１から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ２１２に格納する。また、デコードエンジン２２０は、復号化するときには、フレームメモリ２１２に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。【００１０】
そして、フレームメモリ２１２に格納された復号画像データは、表示順に表示装置に出力されて表示される。【００１１】
図２８は、デコードエンジン２２０の構成を示す図である。【００１２】
デコードエンジン２２０は、エントロピー復号部２２１、逆変換部２２２、加算器２２３、デブロッキングフィルタ２２４、動き補償部２２５、重み付き予測部２２６、画面内予測部２２７、およびスイッチ２２８を備えている。 【００１３】
エントロピー復号部２２１は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部２２２に出力する。【００１４】
逆変換部２２２は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。【００１５】
加算器２２３は、逆変換部２２２から出力された差分画像データと、重み付き予測部２２６または画面内予測部２２７からスイッチ２２８を介して出力された予測画像データとを加算することにより復号画像データを生成する。【００１６】
デブロッキングフィルタ２２４は、加算器２２３によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ２１２に格納する。【００１７】
動き補償部２２５は、フレームメモリ２１２に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部２２６に出力する。【００１８】
重み付き予測部２２６は、動き補償部２２５から出力された予測画像データに重みを付けてスイッチ２２８に出力する。【００１９】
画面内予測部２２７は画面内予測を行う。つまり、画面内予測部２２７は、加算器２２３によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ２２８に出力する。【００２０】
スイッチ２２８は、逆変換部２２２から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部２２７から出力される予測画像データを加算器２２３に出力する。また、スイッチ２２８は、逆変換部２２２から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部２２６から出力される予測画像データを加算器２２３に出力する。【００２１】
ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、ＨＤ（High Definition）の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる４ｋ２ｋ解像度による動画像の実用化が検討されている。【００２２】
図２９は、ＨＤおよび４ｋ２ｋを説明するための説明図である。【００２３】
ＨＤの符号化ストリームは、地上デジタル放送やＢＳデジタル放送などで配信されており、解像度「１９２０×１０８０画素」のピクチャが３０フレーム／秒のフレームレートで復号化されて表示される。４ｋ２ｋの符号化ストリームは、２０１１年から高度ＢＳデジタル放送で試験的に配信される予定であり、解像度「３８４０×２１６０画素」のピクチャが６０フレーム／秒のフレームレートで復号化されて表示される。【００２４】
つまり、４ｋ２ｋでは、ＨＤよりも縦および横のそれぞれで２倍の解像度を有し、且つ２倍のフレームレートを有する。【００２５】
さらに、縦および横のそれぞれで４ｋ２ｋの２倍に高解像度化された８ｋ４ｋの画像（７６８０×４３２０画素）の符号化および復号化が検討されようとしている。 【００２６】
このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図２７に示す画像復号化装置２００のデコードエンジン２２０は、４ｋ２ｋの符号化ストリームを復号化する場合には、現実的には困難な１ＧＨｚ以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。【００２７】
図３０は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。【００２８】
画像復号化装置３００は、メモリ２１０およびデコーダ３２０を備えている。デコーダ３２０は、図２７および図２８に示すデコードエンジン２２０と同様の機能を有するデコードエンジン３２１をＮ個（例えばＮ＝４）備えている。Ｎ個のデコードエンジン３２１（第１デコードエンジン３２１〜第Ｎデコードエンジン３２１）のそれぞれは、ストリームバッファ２１１に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ２１２に出力する。【００２９】
図３１Ａおよび図３１Ｂは、復号化の並列処理の一例を説明するための説明図である。【００３０】
例えば、画像復号化装置３００は、４つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ２１１に格納する。これらの４つの領域符号化ストリームのそれぞれは、独立したストリームであり、図３１Ａに示すように、一つの画面が４等分されたうちの１つの領域の動画像を示すストリームである。画像復号化装置３００の４つのデコードエンジン３２１（例えばＮ＝４）はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ２１１から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。【００３１】
または、画像復号化装置３００は、４つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ２１１に格納する。４つのスライスは、図３１Ｂに示すように、ピクチャを縦方向に４等分することによって生成されている。画像復号化装置３００の４つのデコードエンジン３２１（例えばＮ＝４）はそれぞれ、自らが処理すべきスライスをストリームバッファ２１１から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。【００３２】
しかしながら、図３１Ａに示すように、１つの符号化ストリームを４つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。【００３３】
また、図３１Ｂに示すように、１つのピクチャを４等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。【００３４】
具体的には、動画像の符号化および復号化の規格であるＭＰＥＧ−２（Moving Picture Experts Group phase 2）では、ＭＢラインの境界で必ずスライスが分離されている。また、Ｈ．２６４／ＡＶＣでは、ピクチャに設定されるスライスの大きさや位置は任意であり、１ピクチャに１スライスしか設定されない場合もある。したがって、図３１Ｂに示すように、スライスの位置および大きさを一義的に設定してしまうことは、ＭＰＥＧ−２およびＨ．２６４／ＡＶＣにとってシステム全体の変更が必要となり、その負担は膨大である。【００３５】
そこで、ＭＰＥＧ−２やＨ．２６４／ＡＶＣの運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。【００３６】
例えば、特許文献１および特許文献２の画像復号化装置は、ＭＰＥＧ−２により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。【００３７】
また、特許文献３の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームのピクチャをＭＢラインごとに分離し、各ＭＢラインの復号化処理を並列に実行する。【００３８】
図３２は、特許文献３の画像復号化装置による復号化処理を説明するための説明図である。【００３９】
画像復号化装置の第１デコードエンジンは、ピクチャにある０行目のＭＢラインを復号化し、２番目のデコードエンジンは、ピクチャにある１行目のＭＢラインを復号化し、３番目のデコードエンジンは、ピクチャにある２行目のＭＢラインを復号化する。【００４０】
また、各デコードエンジンは、ＭＢラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。【００４１】
特許文献４の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームを取得すると、その符号化ストリームのＭＢラインの境界に行ヘッダを挿入し、各ＭＢラインの復号化処理を並列に実行する。この画像復号化装置のデコードエンジンのそれぞれは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出し、そのＭＢラインの復号化を実行する。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開平６−２２５２７８号公報
【特許文献２】特開平８−１３０７４５号公報
【特許文献３】特開２００６−１２９２８４号公報
【特許文献４】米国特許第７３０５０３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００４３】
しかしながら、上記特許文献１〜４の画像復号化装置では、復号化の並列処理を適切に実行できないという問題や、装置の構成が複雑になってしまうという問題がある。【００４４】
つまり、上記特許文献１および特許文献２の画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、Ｈ．２６４／ＡＶＣの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、１ピクチャが１スライスで構成されている場合には、そのピクチャを分割することができず、１つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。【００４５】
また、上記特許文献３および特許文献４の画像復号化装置では、Ｈ．２６４／ＡＶＣのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。【００４６】
そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
上記目的を達成するために、本発明に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、前記符号化ストリームを取得する取得部と、前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、前記ストリーム分割部は、前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、ことを特徴とする。【００４８】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。【００４９】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。【００５０】
そこで本発明では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個の復号化部のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。【００５１】
例えば、前記ストリーム分割部は、前記スライス部分群の先頭が、前記符号化ピクチャに含まれるスライスの先頭でない場合には、前記スライス部分群の先頭に、前記スライスの復号化に必要な補助情報を挿入することにより、前記スライス部分群を新たなスライスとして再構成する。【００５２】
これにより、分割ストリームに含まれるスライス部分群の先頭には補助情報があるため、その分割ストリームを復号化する復号化部は、その補助情報を取得して利用することにより、特別な処理を行うことなく、そのスライス部分群を適切に復号化することができる。【００５３】
また、前記ストリーム分割部は、前記符号化ピクチャに含まれるスライスの先頭にある、前記スライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する複製部と、前記複製補助情報を前記補助情報として前記スライス部分群の先頭に挿入する挿入部とを備え、前記画像復号化装置は、さらに、前記複製補助情報に含まれるアドレス情報を、前記スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新するアドレス更新部を備える、ことを特徴としてもよい。【００５４】
これにより、スライス部分群の先頭のマクロブロックのアドレスを示すアドレス情報が、そのスライス部分群の補助情報に含まれているため、復号化部は、特別な処理を行うことなく、そのアドレス情報を読み出すことによって、そのスライス部分群の先頭のマクロブロックのアドレスを適切に把握することができる。【００５５】
また、前記符号化ストリームに含まれるスライスの先頭には、前記スライスの復号化に必要な補助情報があり、前記ストリーム分割部は、前記Ｎ個の復号化部にそれぞれ対応付けられたＮ個のバッファと、前記符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、前記Ｎ個のバッファのうちの何れかに出力する分割出力部と、前記符号化ピクチャに含まれるデータを順次取得し、前記データが前記補助情報であるときに、前記補助情報を前記Ｎ個のバッファに出力する補助情報処理部とを備え、前記Ｎ個のバッファのそれぞれは、前記分割出力部から出力された前記構成単位に含まれるデータを取得するごとに、前記データを出力し、前記補助情報処理部から出力された前記補助情報を取得したときには、前記補助情報を保持し、前記補助情報の直後に前記構成単位のデータを取得したときにのみ、保持している前記補助情報を前記データの前に出力し、前記補助情報の直後に新たな補助情報を取得したときには、前記補助情報を前記新たな補助情報に上書きし、前記Ｎ個の復号化部のそれぞれは、当該復号化部に対応付けられたバッファから出力される前記補助情報および前記構成単位のデータからなる前記分割ストリームを復号化する、ことを特徴としてもよい。【００５６】
これにより、補助情報処理部が、符号化ストリームから得られる補助情報をＮ個のバッファに単純に出力すれば、Ｎ個のバッファに出力された補助情報のうち、Ｎ個の分割ストリームに必要とされる補助情報だけを、そのＮ個のバッファから適切なタイミングで出力させることができる。その結果、簡単な構成で、符号化ピクチャのスライスの先頭でなかったスライス部分群の先頭に、補助情報を適切に挿入することができる。【００５７】
また、前記ストリーム分割部は、前記スライス部分群の終端が、前記符号化ピクチャに含まれるスライスの終端でない場合には、前記スライス部分群の終端であることを示す終端情報を、当該スライス部分群の終端に設定することにより、前記スライス部分群を新たなスライスとして再構成する。【００５８】
これにより、分割ストリームに含まれるスライス部分群の終端には終端情報があるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、そのスライス部分群の終端を適切に認識することができる。【００５９】
また、前記ストリーム分割部は、さらに、分割すべきか否かを示すモード情報を取得し、前記モード情報が分割すべきでないことを示す場合には、前記取得部によって取得される複数の符号化ストリームのそれぞれを、前記Ｎ個の復号化部のうちの何れかに出力し、前記Ｎ個の復号化部は、さらに、前記ストリーム分割部から出力された複数の符号化ストリームを取得したときには、前記複数の符号化ストリームを並列に復号化する、ことを特徴としてもよい。【００６０】
これにより、１つの符号化ストリームを複数の分割ストリームに分割してそれらの分割ストリームを並列に復号化する処理と、複数の符号化ストリームを並列に復号化する処理とが、モード情報に応じて切り替えられる。その結果、例えば、４ｋ２ｋの高解像度の画像をリアルタイムで再生したり、複数のチャンネルのＨＤの画像を同時に再生することができる。【００６１】
なお、本発明は、このような画像復号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。 
【発明の効果】
【００６２】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという作用効果を奏する。
【図面の簡単な説明】
【００６３】
【図１】図１は、本発明の実施の形態における画像復号化装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、同上のピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【図２Ｂ】図２Ｂは、同上のピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【図３】図３は、同上のスライスヘッダの挿入処理を説明するための説明図である。
【図４】図４は、同上のＭＢアドレス情報の更新処理を説明するための説明図である。
【図５】図５は、同上のスライス終端処理を説明するための説明図である。
【図６】図６は、同上の画像復号化装置の全体的な動きを示すフローチャートである。
【図７】図７は、同上のストリーム分割部の構成を示すブロック図である。
【図８】図８は、同上のスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。
【図９】図９は、同上のスライスヘッダ挿入部の構成を示すブロック図である。
【図１０】図１０は、同上の分割ストリームバッファの第１領域〜第４領域に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【図１１Ａ】図１１Ａは、同上のスライス終端情報が設定される位置を示す図である。
【図１１Ｂ】図１１Ｂは、同上のスライス終端情報が設定される他の位置を示す図である。
【図１２】図１２は、同上の分割点検出部の動作を示すフローチャートである。
【図１３Ａ】図１３Ａは、同上の高解像度デコードを説明するための説明図である。
【図１３Ｂ】図１３Ｂは、同上の高速デコードを説明するための説明図である。
【図１３Ｃ】図１３Ｃは、同上の複数チャンネルデコードを説明するための説明図である。
【図１４】図１４は、同上の変形例１に係るデコードエンジンがＭＢアドレス情報を変更するためのコードを示す図である。
【図１５】図１５は、同上の変形例２に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【図１６】図１６は、同上の変形例２に係るストリーム分割部および４つのデコードエンジンの動作を説明するための説明図である。
【図１７】図１７は、同上の変形例３に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【図１８】図１８は、同上の変形例３に係るバッファのポインタを示す図である。
【図１９】図１９は、同上の変形例３に係るストリーム分割部の動作を説明するための説明図である。
【図２０】図２０は、本発明の画像復号化装置の適用例を示す図である。
【図２１】図２１は、本発明の画像復号化装置の最小構成を示すブロック図である。
【図２２】図２２は、本発明のストリーム分割部の構成を示すブロック図である。
【図２３】図２３は、本発明の画像復号化装置の他の最小構成を示すブロック図である。
【図２４】図２４は、本発明のストリーム分割部の他の構成を示すブロック図である。
【図２５】図２５は、符号化されるピクチャの構成を示す図である。
【図２６】図２６は、符号化ストリームの構成を示す図である。
【図２７】図２７は、従来の画像復号化装置の構成を示す図である。
【図２８】図２８は、従来のデコードエンジンの構成を示す図である。
【図２９】図２９は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【図３０】図３０は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。
【図３１Ａ】図３１Ａは、従来の復号化並列処理の一例を説明するための説明図である。
【図３１Ｂ】図３１Ｂは、従来の復号化並列処理の他の例を説明するための説明図である。
【図３２】図３２は、従来の画像復号化装置による復号化処理を説明するための説明図である。
【発明を実施するための形態】
【００６４】
以下、本発明の実施の形態における画像復号化装置について図面を参照しながら説明する。
【００６５】
図１は、本発明の実施の形態における画像復号化装置の構成を示すブロック図である。
【００６６】
本発明の実施の形態における画像復号化装置１００は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ１１０とメモリ１５０とを備えている。
【００６７】
メモリ１５０は、デコーダ１１０に入力されるデータ、デコーダ１１０により中間的に生成されたデータ、およびデコーダ１１０により最終的に生成されて出力されるデータを記憶するための領域を有する。
【００６８】
具体的には、メモリ１５０は、ストリームバッファ１５１と、分割ストリームバッファ１５２と、フレームメモリ１５３とを備えている。
【００６９】
ストリームバッファ１５１には、画像符号化装置により生成されて送信された符号化ストリームが格納される。つまり、本実施の形態では、このストリームバッファ１５１が符号化ストリームを取得する取得部として構成されている。分割ストリームバッファ１５２には、デコーダ１１０により生成されるＮ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。フレームメモリ１５３には、Ｎ個のデコードエンジン（復号化部）１２０によって生成されたＮ個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ１５３に格納され、表示装置に読み込まれて動画像として表示される。
【００７０】
デコーダ１１０は、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ１１０は、ストリーム分割部１３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）１２０とを備えている。
【００７１】
なお、本実施の形態におけるデコードエンジン１２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有する。
【００７２】
ストリーム分割部１３０は、後述するモード情報を取得し、そのモード情報に応じて符号化ストリームをＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）に分割する。つまり、本実施の形態におけるストリーム分割部１３０は、符号化ストリームに含まれる符号化されたピクチャごとに、そのピクチャを複数のＭＢラインに分割する。そして、ストリーム分割部１３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。
【００７３】
なお、ＭＢラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位である。また、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されていない場合には、ピクチャを複数のＭＢラインに分割するが、ピクチャがＭＢＡＦＦで構成されている場合には、２つのＭＢラインを１つの構成単位（以下、ＭＢラインペアという）として扱い、ピクチャを複数のＭＢラインペアに分割する。言い換えれば、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦで構成されている場合には、ピクチャを複数のＭＢラインに分割し、ＭＢラインペアに属する２つのＭＢラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがＭＢＡＦＦで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがＭＢＡＦＦで構成されていない場合と、ＭＢＡＦＦで構成されている場合とで異なる処理が必要なときには、その都度、ＭＢＡＦＦに対して特有の処理を説明する。また、ＭＢＡＦＦに対してその特有な処理などが必要とされない場合には、以下の説明において、ＭＢラインをＭＢラインペアに置き換えることによって、その説明を、ピクチャがＭＢＡＦＦで構成されている場合における本発明の説明に置き換えることができる。
【００７４】
ストリーム分割部１３０は、ピクチャを複数のＭＢラインに分割する際に、符号化ストリーム中のＭＢラインの直前、または、そのＭＢラインに属する２つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのＭＢラインに付随させて、分割ストリームの一部に割り当てる。
【００７５】
このようなストリーム分割部１３０によるＭＢラインごとの分割によって、ピクチャに含まれる、複数のＭＢラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部１３０は、Ｎ個の分割ストリームに分割するときには、Ｎ個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
【００７６】
Ｎ個のデコードエンジン１２０は、それぞれ自らが処理すべき分割ストリームを分割ストリームバッファ１５２から読み出し、読み出した分割ストリームを並列に復号化することによりＮ個の分割復号画像データを生成する。例えば、第１デコードエンジン１２０は第１分割ストリームを分割ストリームバッファ１５２から読み出し、第２デコードエンジン１２０は第２分割ストリームを分割ストリームバッファ１５２から読み出し、第３デコードエンジン１２０は第３分割ストリームを分割ストリームバッファ１５２から読み出し、第４デコードエンジン１２０は第４分割ストリームを分割ストリームバッファ１５２から読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【００７７】
また、Ｎ個のデコードエンジン１２０は、分割ストリームを復号化するときには、フレームメモリ１５３に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
【００７８】
さらに、Ｎ個のデコードエンジン１２０のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン１２０から、それらの復号化されたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したデコードエンジン１２０は、その隣接ＭＢ情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン１２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【００７９】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のデコードエンジン１２０はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接ＭＢ情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
【００８０】
図２Ａは、ピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【００８１】
ピクチャがＭＢＡＦＦで構成されていない場合、第１デコードエンジン１２０は第０ＭＢラインを復号化し、第２デコードエンジン１２０が第１ＭＢラインを復号化し、第３デコードエンジン１２０が第２ＭＢラインを復号化し、第４デコードエンジン１２０が第３ＭＢラインを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【００８２】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインの復号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインの左端のマクロブロックの復号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインの左端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインの左端のマクロブロックの復号化を開始する。
【００８３】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
【００８４】
図２Ｂは、ピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【００８５】
ピクチャがＭＢＡＦＦで構成されている場合、ＭＢラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列（ＭＢライン）を２つ有する構成単位である。ＭＢラインペアは、上下にある２つのマクロブロック（マクロブロックペア）ごとにフィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがＭＢＡＦＦで構成されていない場合と同様に、第１デコードエンジン１２０は第０ＭＢラインペアを復号化し、第２デコードエンジン１２０が第１ＭＢラインペアを復号化し、第３デコードエンジン１２０が第２ＭＢラインペアを復号化し、第４デコードエンジン１２０が第３ＭＢラインペアを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【００８６】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインペアの復号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインペアの左上端のマクロブロックの復号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインペアの左上端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインペアの左上端のマクロブロックの復号化を開始する。
【００８７】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
【００８８】
なお、ピクチャがＭＢＡＦＦで構成されていない場合、および、ピクチャがＭＢＡＦＦで構成されている場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて復号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて復号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
【００８９】
このような本実施の形態における画像復号化装置１００の特徴は、ストリーム分割部１３０による分割によって生成された、スライスの１つまたは複数の部分（スライス部分）からなるスライス部分群を１つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、およびＭＢアドレス情報の更新処理を含む。
【００９０】
図３は、スライスヘッダの挿入処理を説明するための説明図である。
【００９１】
例えば、ストリーム分割部１３０は、図３の（ａ）に示すピクチャｐ１を分割する。
【００９２】
ピクチャｐ１は、スライスＡ、スライスＢおよびスライスＣから構成されているとともに、ＭＢラインＬ１〜Ｌ１２から構成されている。
【００９３】
スライスＡは、ＭＢラインＬ１〜Ｌ７にわたって配置され、スライスヘッダｈａと、そのスライスヘッダｈａから連続して配置されている複数のマクロブロックｍｂａとを有する。スライスＢは、ＭＢラインＬ７〜Ｌ８にわたって配置され、スライスヘッダｈｂと、そのスライスヘッダｈｂから連続して配置されている複数のマクロブロックｍｂｂとを有する。スライスＣは、ＭＢラインＬ９〜Ｌ１２にわたって配置され、スライスヘッダｈｃと、そのスライスヘッダｈｃから連続して配置されている複数のマクロブロックｍｂｃとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
【００９４】
ストリーム分割部１３０は、図３の（ｂ）に示すように、上述のピクチャｐ１をＭＢラインごとに分割する。そして、ストリーム分割部１３０は、ＭＢラインＬ１〜Ｌ１２のそれぞれを先頭から順に、第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部１３０は、ＭＢラインＬ１を第１分割ストリームの一部に割り当て、ＭＢラインＬ２を第２分割ストリームの一部に割り当て、ＭＢラインＬ３を第３分割ストリームの一部に割り当て、ＭＢラインＬ４を第４分割ストリームの一部に割り当てる。そして、ストリーム分割部１３０は、第４分割ストリームへのＭＢラインの割り当てが終了すると、第１分割ストリームへのＭＢラインの割り当てを繰り返す。つまり、ストリーム分割部１３０は、ＭＢラインＬ５を第１分割ストリームの一部に割り当て、ＭＢラインＬ６を第２分割ストリームの一部に割り当て、ＭＢラインＬ７を第３分割ストリームの一部に割り当て、ＭＢラインＬ８を第４分割ストリームの一部に割り当てる。
【００９５】
その結果、第１分割ストリームは連続するＭＢラインＬ１，Ｌ５，Ｌ９を含み、第２分割ストリームは連続するＭＢラインＬ２，Ｌ６，Ｌ１０を含み、第３分割ストリームは連続するＭＢラインＬ３，Ｌ７，Ｌ１１を含み、第４分割ストリームは連続するＭＢラインＬ４，Ｌ８，Ｌ１２を含む。
【００９６】
なお、ＭＢラインＬ１〜Ｌ６と、ＭＢラインＬ７の先頭側の６マクロブロックからなる集合と、ＭＢラインＬ７の終端側の１０マクロブロックからなる集合と、ＭＢラインＬ８〜Ｌ１２とは、それぞれスライスＡ〜Ｃの一部を構成するスライス部分である。そして、第１分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ１，Ｌ５からスライス部分群（第１分割ストリームにおけるスライスＡ）が構成される。また、第２分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ２，Ｌ６からスライス部分群（第２分割ストリームにおけるスライスＡ）が構成される。
【００９７】
ここで、単純にＭＢラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン１２０に認識させることができない場合がある。
【００９８】
例えば、第１分割ストリームには、上述のように連続するＭＢラインＬ１，Ｌ５，Ｌ９が含まれている。この場合、ＭＢラインＬ１，Ｌ５はスライスＡとして認識されるべきであり、ＭＢラインＬ９はスライスＣとして認識されるべきである。そのためには、第１分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ１の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第１分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ９の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。図３に示す例では、スライスヘッダｈａ，ｈｃがそれぞれＭＢラインＬ１，Ｌ９の先頭に予め配されているため、ストリーム分割部１３０はＭＢラインＬ１，Ｌ５，Ｌ９をスライスヘッダｈａ，ｈｃとともに第１分割ストリームに割り当てればよい。
【００９９】
一方、第２分割ストリームには、上述のように連続するＭＢラインＬ２，Ｌ６，Ｌ１０が含まれている。この場合、ＭＢラインＬ２，Ｌ６はスライスＡとして認識されるべきであり、ＭＢラインＬ１０はスライスＣとして認識されるべきである。そのためには、第２分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ２の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第２分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ１０の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。
【０１００】
そこで、本実施の形態におけるストリーム分割部１３０は、ＭＢラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダｈａ，ｈｂ，ｈｃを複製することにより複製スライスヘッダｈａ’，ｈｂ’，ｈｃ’を生成し、それらを分割ストリームに挿入する。
【０１０１】
例えば、ストリーム分割部１３０は、スライスヘッダｈａを複製することにより３つの複製スライスヘッダｈａ’を生成し、その複製スライスヘッダｈａ’をＭＢラインＬ２，Ｌ３，Ｌ４の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｂを複製することにより１つの複製スライスヘッダｈｂ’を生成し、その複製スライスヘッダｈｂ’をＭＢラインＬ８の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｃを複製することにより３つの複製スライスヘッダｈｃ’を生成し、その複製スライスヘッダｈｃ’をＭＢラインＬ１０，Ｌ１１，Ｌ１２の直前に挿入する。
【０１０２】
その結果、第２分割ストリームでは、スライスＡの先頭となるＭＢラインＬ２の直前に、スライスＡのスライスヘッダｈａの複製である複製スライスヘッダｈａ’が配置され、スライスＣの先頭となるＭＢラインＬ１０の直前に、スライスＣのスライスヘッダｈｃの複製である複製スライスヘッダｈｃ’が配置される。これにより、第２デコードエンジン１２０は、複製スライスヘッダｈａ’，ｈｃ’から、第２分割ストリームのスライスＡおよびスライスＣのそれぞれの復号化に必要なパラメータを得ることができる。
【０１０３】
次に、ＭＢアドレス情報の更新処理について説明する。
【０１０４】
ストリーム分割部１３０は、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１０５】
つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのＭＢアドレス情報“first_mb_in_slice”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのＭＢアドレス情報と同一のＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
【０１０６】
例えば、ピクチャｐ１のスライスＡのスライスヘッダｈａには、そのスライスＡの先頭マクロブロック（ＭＢラインＬ１の先頭マクロブロック）のピクチャｐ１内におけるアドレスを示すＭＢアドレス情報が含まれている。このようなスライスヘッダｈａが複製されることによって生成された複製スライスヘッダｈａ’には、当初、ＭＢラインＬ１の先頭マクロブロックのピクチャｐ１内におけるアドレスを特定するためのＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダｈａ’が、ＭＢラインＬ２の直前に挿入されれば、その複製スライスヘッダｈａ’のＭＢアドレス情報により特定されるアドレスは、第２分割ストリームにおいてその複製スライスヘッダｈａ’を有するスライスＡの先頭マクロブロック（ＭＢラインＬ２の先頭マクロブロック）のピクチャｐ１内におけるアドレスを指し示さず、ＭＢラインＬ１の先頭マクロブロックのアドレスを指し示している。 
【０１０７】
そこで、本実施の形態におけるストリーム分割部１３０は、上述のように、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１０８】
図４は、ＭＢアドレス情報の更新処理を説明するための説明図である。
【０１０９】
ストリーム分割部１３０は、まず、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）から、ピクチャの水平方向のマクロブロックの数に関連する情報である“pic_width_in_mbs_minus1”を取得する。
【０１１０】
さらに、ストリーム分割部１３０は、複製元のスライスヘッダに含まれるＭＢアドレス情報“first_mb_in_slice”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
【０１１１】
次に、ストリーム分割部１３０は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のＭＢラインにあるかを示す値“mbposv”を算出する。なお、値“mbposv”は０以上の整数である。
【０１１２】
そして、ストリーム分割部１３０は、直前に複製スライスヘッダが挿入されるＭＢラインが、複製元のスライスヘッダが配置されているＭＢラインから見てｎ行離れているときには、複製スライスヘッダのＭＢアドレス情報を“first_mb_in_slice[n]”＝（“mbposv”＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により算出する。
【０１１３】
なお、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されている場合には、ストリーム分割部１３０は、複製スライスヘッダのＭＢアドレス情報を“first_mb_in_slice[n]”＝（“mbposv”／２＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により算出する。
【０１１４】
ストリーム分割部１３０は、複製スライスヘッダに当初含まれているＭＢアドレス情報を、上述のように算出されたＭＢアドレス情報に更新する。これにより、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
【０１１５】
次に、スライス終端処理について説明する。
【０１１６】
符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図３に示すように、単純に、ピクチャが複数のＭＢラインに分割され、その複数のＭＢラインがそれぞれ第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン１２０に認識させることができない場合がある。
【０１１７】
そこで、本実施の形態におけるストリーム分割部１３０は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
【０１１８】
図５は、スライス終端処理を説明するための説明図である。
【０１１９】
例えば、図５の（ａ）に示すように、符号化ストリームのピクチャｐ１に含まれるスライスＣは、スライスヘッダｈｃと、ＭＢラインＬ９〜Ｌ１２と、スライス終端情報ｅｃとを含んでいる。
【０１２０】
ストリーム分割部１３０はピクチャｐ１をＭＢラインごとに分割する。その結果、図５の（ｂ）〜（ｅ）に示すように、ＭＢラインＬ９はスライスヘッダｈｃと共に第１分割ストリームに割り当てられ、ＭＢラインＬ１０は第２分割ストリームに割り当てられ、ＭＢラインＬ１１は第３分割ストリームに割り当てられ、ＭＢラインＬ１２は第４分割ストリームに割り当てられる。
【０１２１】
さらに、ストリーム分割部１３０は、上述のスライスヘッダの挿入処理により、スライスヘッダｈｃを複製して３つの複製スライスヘッダｈｃ’を生成し、それらの３つの複製スライスヘッダｈｃ’をそれぞれ、第２分割ストリーム〜第４分割ストリームのＭＢラインＬ１０，Ｌ１１，Ｌ１２の直前に挿入する。また、ストリーム分割部１３０は、上述のＭＢアドレス情報の更新処理により、挿入される複製スライスヘッダｈｃ’の位置に応じて、その複製スライスヘッダｈｃ’に含まれるＭＢアドレス情報を更新する。
【０１２２】
ここで、ストリーム分割部１３０は、スライス終端処理として、第１分割ストリームにおけるスライスＣ（ＭＢラインＬ９）の終端、第２分割ストリームにおけるスライスＣ（ＭＢラインＬ１０）の終端、第３分割ストリームにおけるスライスＣ（ＭＢラインＬ１１）の終端、および第４分割ストリームにおけるスライスＣ（ＭＢラインＬ１２）の終端を示すスライス終端情報ｅｃ’を生成する。そして、ストリーム分割部１３０は、その生成されたスライス終端情報ｅｃ’を、第１分割ストリーム〜第４分割ストリームのＭＢラインＬ９，Ｌ１０，Ｌ１１，Ｌ１２の直後に設定する。なお、ストリーム分割部１３０は、符号化ストリームをＭＢラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ｅｃを破棄している。また、スライス終端情報ｅｃとスライス終端情報ｅｃ’とが同一の情報であれば、最終的には、ＭＢラインＬ１２はスライス終端情報ｅｃ’（ｅｃ）と共に第４分割ストリームに割り当てられることになる。
【０１２３】
これにより、各デコードエンジン１２０は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
【０１２４】
図６は、本実施の形態における画像復号化装置１００の全体的な動きを示すフローチャートである。
【０１２５】
まず、画像復号化装置１００は、符号化ストリームを取得し（ステップＳ１０）、その符号化ストリームから処理対象となる符号化されたピクチャを特定する（ステップＳ１２）。さらに、画像復号化装置１００は、処理対象のピクチャを分割することにより１つのＭＢラインを抽出する（ステップＳ１４）。なお、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがあれば、そのＭＢラインはそのスライスヘッダと共に抽出される。
【０１２６】
次に、画像復号化装置１００は、ステップＳ１４の分割によって抽出された１つのＭＢラインを、生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる前に、そのＭＢラインの直前にスライスヘッダを挿入する必要があるか否か、および、既に割り当てられているＭＢラインの直後にスライス終端情報を設定する必要があるか否かを判別する（ステップＳ１６）。
【０１２７】
画像復号化装置１００は、ステップＳ１６で、スライスヘッダを挿入する必要があると判別したとき、スライス終端情報を設定する必要があると判別したとき、または、その挿入および設定の両方を行う必要があると判別したときには（ステップＳ１６のＹｅｓ）、スライス再構成処理を実行する（ステップＳ１８）。つまり、画像復号化装置１００は、上述のスライスヘッダの挿入処理およびスライス終端処理の少なくとも一方を実行する。また、画像復号化装置１００は、スライスヘッダの挿入処理を実行するときには、ＭＢアドレス情報の更新処理も実行する。
【０１２８】
そして、画像復号化装置１００は、そのＭＢラインを生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる（ステップＳ２０）。このステップＳ２０が繰り返し行われることによって、第１〜第Ｎ分割ストリームのそれぞれにＭＢラインが順次割り当てられ、第１〜第Ｎ分割ストリームが生成される。
【０１２９】
画像復号化装置１００は、第１〜第Ｎ分割ストリームのそれぞれに割り当てられたＭＢラインを並列に復号化する（ステップＳ２２）。なお、第１〜第Ｎ分割ストリームのうちの何れかの分割ストリームにＭＢラインが割り当てられていない場合には、画像復号化装置１００は、そのＭＢラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
【０１３０】
次に、画像復号化装置１００は、ピクチャに含まれる全てのＭＢラインを割り当てたか否かを判別し（ステップＳ２４）、割り当てていないと判別したときには（ステップＳ２４のＮｏ）、ステップＳ１４からの処理を繰り返し実行する。一方、画像復号化装置１００は、全てのＭＢラインを割り当てたと判別したときには（ステップＳ２４のＹｅｓ）、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する（ステップＳ２６）。ここで、画像復号化装置１００は、全てのピクチャを分割していないと判別したときには（ステップＳ２６のＮｏ）、ステップＳ１２からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには（ステップＳ２６のＹｅｓ）、復号化処理を終了する。
【０１３１】
なお、図６のフローチャートに示される処理動作は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
【０１３２】
例えば、図６のフローチャートでは、画像復号化装置１００のストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン１２０に複製スライスヘッダを直接渡してもよい。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、ＭＢアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン１２０が、分割ストリームに含まれている複製スライスヘッダのＭＢアドレス情報を更新する。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップＳ２０でＭＢラインが第１〜第Ｎ分割ストリームの何れかの分割ストリームに割り当てられた後であって、次の新たなＭＢラインがストリーム分割部１３０からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているＭＢラインに対してスライス終端処理が行われてもよい。
【０１３３】
ここで、ストリーム分割部１３０の構成および動作について詳細に説明する。
【０１３４】
図７は、ストリーム分割部１３０の構成を示すブロック図である。
【０１３５】
ストリーム分割部１３０は、スタートコード検出部１３１、ＥＰＢ除去部１３２ａ、ＥＰＢ挿入部１３２ｂ、スライスヘッダ挿入部１３３、およびスライスデータ処理部１３４ａ，１３４ｂを備えている。
【０１３６】
スタートコード検出部１３１は、ストリームバッファ１５１から符号化ストリームを読み出して、ＮＡＬユニットごとにスタートコードを検出する。
【０１３７】
ＥＰＢ除去部１３２ａは、ＥＰＢ（エミュレーション防止バイト）を符号化ストリームから除去し、ＥＰＢが除去された符号化ストリームをスライスデータ処理部１３４ａ，１３４ｂに出力する。さらに、ＥＰＢ除去部１３２ａは、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）およびＰＰＳ（ピクチャパラメータセット）などのスライスより上層の情報を取得し、その情報が４つの分割ストリームのそれぞれに挿入されるように、その情報をＥＰＢ挿入部１３２ｂに出力する。
【０１３８】
ＥＰＢ挿入部１３２ｂは、符号化ストリームが分割されることによって生成される分割ストリームに、ＥＰＢ除去部１３２ａによって除去されたＥＰＢを挿入する。
【０１３９】
スライスヘッダ挿入部１３３は、上述のスライスヘッダの挿入処理およびＭＢアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部１３３は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４ａ，１３４ｂに送り、スライスデータ処理部１３４ａ，１３４ｂから終端処理完了通知Ｍ２を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部１３３は、スライスヘッダの挿入処理によって、ＭＢラインの直前にあるスライスヘッダと、ＭＢアドレス情報が更新された複製スライスヘッダとをＥＰＢ挿入部１３２ｂに出力する。 
【０１４０】
スライスデータ処理部１３４ａ，１３４ｂは、ＥＰＢが除去された符号化ストリームを分割することにより４つの分割ストリームを生成し、その４つの分割ストリームを出力する。なお、スライスデータ処理部１３４ａ，１３４ｂから出力される分割ストリームには、上述のＭＢラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部１３４ａは、ＣＡＶＬＤ（Context Adaptive Variable Length Decoding）に応じた処理を実行し、ＣＡＶＬＣ（Context-Adaptive Variable Length Coding）によって生成された符号化ストリームを４つの分割ストリームに分割する。また、スライスデータ処理部１３４ｂは、ＣＡＢＡＤ（Context-Adaptive Binary Arithmetic Decoding）に応じた処理を実行し、ＣＡＢＡＣ（Context-Adaptive Binary Arithmetic Coding）によって生成された符号化ストリームを４つの分割ストリームに分割する。
【０１４１】
スライスデータ処理部１３４ａは、スライスデータ層デコード部１３５ａ、マクロブロック層デコード部１３６ａ、スキップラン分割部１３７ａ、ＱＰ計算部１３８ａおよび分割点検出部１３９ａを備えている。
【０１４２】
スライスデータ層デコード部１３５ａは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部１３６ａは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報（具体的には、ＣＡＶＬＣのｎＣ（non-zero coefficient）など）のみを復号化してもよい。
【０１４３】
スキップラン分割部１３７ａは、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報“mb_skip_run”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。ここで、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０１４４】
例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。
【０１４５】
そこで、スキップラン分割部１３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン分割部１３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０１４６】
ＱＰ計算部１３８ａは、マクロブロックごとに、マクロブロック層デコード部１３６ａによって復号化された、そのマクロブロックのＱＰ変化量“mb_qp_delta”をＱＰ値（量子化パラメータの値）に変換し、そのＱＰ値を出力する。なお、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの左隣のマクロブロック（左隣接マクロブロック）のＱＰ値との差分を示す。
【０１４７】
つまり、ピクチャがＭＢラインごとに分割され、ＭＢラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、ＭＢラインの境界を挟んで互いに隣接していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに隣接していた一方のマクロブロック（対象マクロブロック）を含む分割ストリームを復号化の対象とするデコードエンジン１２０は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。
【０１４８】
そこで、ＱＰ計算部１３８ａは、ピクチャが分割される前に、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量に、左隣接マクロブロックのＱＰ値を加算することによって、その対象マクロブロックのＱＰ値を算出する。
【０１４９】
分割点検出部１３９ａは、符号化ストリームを４つの分割ストリームに分割する。つまり、分割点検出部１３９ａは、ピクチャを複数のＭＢラインに分割し、ＭＢラインのそれぞれを４つの分割ストリームの何れかに割り当てる。なお、分割点検出部１３９ａは、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、ＭＢラインだけを分割ストリームに割り当てる。また、分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン分割部１３７ａから取得したＭＢスキップラン情報と、ＱＰ計算部１３８ａから取得したＱＰ値とを含める。
【０１５０】
さらに、分割点検出部１３９ａは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ａは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１５１】
スライスデータ処理部１３４ｂは、スライスデータ層デコード部１３５ｂ、マクロブロック層デコード部１３６ｂ、ＱＰ計算部１３８ｂおよび分割点検出部１３９ｂを備えている。
【０１５２】
スライスデータ層デコード部１３５ｂは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化（算術復号化）する。マクロブロック層デコード部１３６ｂは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化（算術復号化）する。このような、スライスデータ層デコード部１３５ｂおよびマクロブロック層デコード部１３６ｂによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
【０１５３】
ＱＰ計算部１３８ｂは、上述のＱＰ計算部１３８ａと同様、マクロブロックごとに、マクロブロック層デコード部１３６ｂによって復号化された、そのマクロブロックのＱＰ変化量“mb_qp_delta”をＱＰ値（量子化パラメータの値）に変換し、そのＱＰ値を出力する。
【０１５４】
分割点検出部１３９ｂは、分割点検出部１３９ａと同様、符号化ストリームを４つの分割ストリームに分割する。このとき、分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰ計算部１３８ｂから取得したＱＰ値を含める。さらに、分割点検出部１３９ｂは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からのスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ｂは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。 
【０１５５】
ここで、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４ａ，１３４ｂについて詳細に説明する。なお、スライスデータ処理部１３４ａ，１３４ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部１３４と総称する。
【０１５６】
まず、スライスヘッダ挿入部１３３がスライスヘッダを挿入するタイミング、およびスライスデータ処理部１３４がスライス終端情報を挿入するタイミングについて説明する。
【０１５７】
図８は、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４の動作を説明するための説明図である。
【０１５８】
スライスデータ処理部１３４は、スライスＡおよびスライスＢを含むピクチャをＭＢラインごとに分割し、ＥＰＢ挿入部１３２ｂを介して、先頭側のＭＢラインから各ＭＢラインを順次、分割ストリームバッファ１５２に含まれる４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）に格納する。このとき、スライスデータ処理部１３４は、１ＭＢラインの格納ごとに、ＭＢラインの格納先を第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４、第１領域ｄｆ１の順に繰り返し変更する。
【０１５９】
例えば、スライスデータ処理部１３４は、図８の（ａ）に示すように、スライスＡのＭＢラインＬａ１を、分割ストリームバッファ１５２の第１領域ｄｆ１に格納し、スライスＡの次のＭＢラインＬａ２を、分割ストリームバッファ１５２の第２領域ｄｆ２に格納し、スライスＡの次のＭＢラインＬａ３を、分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。さらに、スライスデータ処理部１３４は、スライスＡの次のスライスＢのＭＢラインＬｂ１を、分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。
【０１６０】
その結果、分割ストリームバッファ１５２の４つの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれにＭＢラインが格納され、分割ストリームバッファ１５２は、スライスＢの次のＭＢラインが再び第１領域ｄｆ１に格納される直前の状態になる。
【０１６１】
なお、スライスデータ処理部１３４は、ＭＢラインＬａ３を第３領域ｄｆ３に格納するときには、符号化ストリームにおいてＭＢラインＬａ３の直後にスライス終端情報ｅａがあっても、そのスライス終端情報ｅａを格納することなく、ＭＢラインＬａ３だけを第３領域ｄｆ３に格納する。そして、スライスデータ処理部１３４は、その後に、第３領域ｄｆ３に新たなスライスに属するＭＢラインを格納するときになって、そのスライス終端情報ｅａに対応するスライス終端情報ｅａ’を第３領域ｄｆ３に格納する。また、スライスデータ処理部１３４がＭＢラインＬｂ１を第４領域ｄｆ４に格納するときには、事前に、スライスヘッダ挿入部１３３によってスライスＢのスライスヘッダｈｂが第４領域ｄｆ４に格納されている。また、ピクチャには、スライスＡのＭＢラインＬａ１よりも前に、そのスライスＡの他のＭＢラインが存在している。したがって、第１領域ｄｆ１、第２領域ｄｆ２および第３領域ｄｆ３のＭＢラインＬａ１，Ｌａ２，Ｌａ３の直前には、スライスＡの複製スライスヘッダが挿入されていない。
【０１６２】
また、スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂは、マクロブロックを出力するごとに、１ＭＢラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部１３９ａ，１３９ｂは、全てのマクロブロックが出力されたと判別すると、ＭＢラインの境界（ＭＢラインの終端）を検出する。そして、分割点検出部１３９ａ，１３９ｂは、ＭＢラインの境界を検出するごとに、マクロブロックの出力処理を中断し、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知する。
【０１６３】
したがって、ＭＢラインの最後のマクロブロックが分割ストリームバッファ１５２に格納されて、分割ストリームバッファ１５２が上述のような図８の（ａ）に示す状態になったときにも、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂから、ＭＢラインの境界が検出されたことの通知を受ける。
【０１６４】
ＭＢラインの境界検出の通知を受けたスライスヘッダ挿入部１３３は、図８の（ｂ）に示すように、スライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に送る。このスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインが格納される直前に、スライスヘッダを分割ストリームバッファ１５２に出力して格納する予定があるか否かをそのスライスデータ処理部１３４に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４に対してスライス終端処理を促す通知である。
【０１６５】
例えば、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインＬｂ２が格納される直前に、複製スライスヘッダｈｂ’を分割ストリームバッファ１５２に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部１３３は、「出力」を示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に出力する。
【０１６６】
スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１を取得すると、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ１５２に格納した後に、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。一方、スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ１５２に格納することなく、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１６７】
例えば、スライスデータ処理部１３４は、「出力」を示すスライスヘッダ処理内容通知Ｍ１を取得すると、図８の（ｃ）に示すように、スライス終端情報ｅａ’を生成し、分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その格納が完了すると、スライスデータ処理部１３４は、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１６８】
スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ＥＰＢ挿入部１３２ｂを介して、スライスヘッダを分割ストリームバッファ１５２に出力して格納し、その後、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。一方、直前に出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、スライスヘッダ挿入部１３３は、スライスヘッダを分割ストリームバッファ１５２に格納することなく、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１６９】
例えば、スライスヘッダ挿入部１３３は、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合に、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、図８の（ｄ）に示すように、複製スライスヘッダｈｂ’を生成して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その後、スライスヘッダ挿入部１３３は、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７０】
スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂは、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けると、中断していたマクロブロックの出力処理を再開し、次のＭＢラインを出力して分割ストリームバッファ１５２に格納する。
【０１７１】
例えば、スライスデータ処理部１３４は、図８の（ｄ）に示すように、次のＭＢラインＬｂ２を出力して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１７２】
このようなスライスヘッダ挿入部１３３およびスライスデータ処理部１３４による処理によって、分割ストリームバッファ１５２の各領域において、スライス終端情報、スライスヘッダ、次のＭＢラインの順に、これらのデータを適切なＭＢラインの境界に書き込むことができる。
【０１７３】
図９は、スライスヘッダ挿入部１３３の構成を示すブロック図である。
【０１７４】
なお、図９を用いて、分割点検出部１３９ａ，１３９ｂについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部１３９と総称する。
【０１７５】
スライスヘッダ挿入部１３３は、ＮＡＬタイプ判定部１３３ａ、ヘッダ挿入カウンタ１３３ｂ、ヘッダアドレス更新部１３３ｃおよびヘッダバッファ１３３ｄを備えている。
【０１７６】
ＮＡＬタイプ判定部１３３ａは、符号化ストリームのＮＡＬユニットを取得するごとに、そのＮＡＬユニットのタイプがスライスであるか否かを判別する。そして、ＮＡＬタイプ判定部１３３ａは、スライスであると判別したときには、そのＮＡＬユニットのタイプがスライスであることをヘッダバッファ１３３ｄおよびヘッダ挿入カウンタ１３３ｂに通知する。
【０１７７】
ヘッダバッファ１３３ｄは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、そのＮＡＬユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ１３３ｄは、後のＮＡＬユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ１３３ｄは、常に最新のスライスヘッダを保持している。
【０１７８】
ヘッダ挿入カウンタ１３３ｂは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のＭＢラインの境界（終端）が分割点検出部１３９で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ１３３ｂは、０〜４（デコードエンジン１２０の総数）までの値をカウントする。ヘッダ挿入カウンタ１３３ｂは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。さらに、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界（ＭＢラインの終端）が検出されたときには、カウント値を１だけカウントアップする。そして、ヘッダ挿入カウンタ１３３ｂは、カウント値が４に達した後に、さらにＭＢラインの境界が検出されたときには、カウントアップすることなく、カウント値を４に維持しておく。
【０１７９】
このように、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、カウント値を更新あるいは保持し、ＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。
【０１８０】
また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、その検出によって更新されたカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力する。具体的には、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出された直後のカウント値が０〜３のときには、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力し、そのカウント値が４のときには、「非出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときに限らず、カウント値が０になったときにも、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。
【０１８１】
さらに、ヘッダ挿入カウンタ１３３ｂは、スライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力した後に、その分割点検出部１３９から終端処理完了通知Ｍ２を受け取ると、その出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させる。その後、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。なお、ヘッダバッファ１３３ｄからスライスヘッダが出力されるときには、スライスヘッダ挿入部１３３は、そのスライスヘッダに含まれているＭＢアドレス情報により示される値に応じて、分割ストリームバッファ１５２の格納先となる領域を選択する。そして、スライスヘッダ挿入部１３３は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ１３３ｂは、その出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。
【０１８２】
ヘッダアドレス更新部１３３ｃは、ＭＢラインの境界が検出された直後のカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、ヘッダバッファ１３３ｄに格納されているスライスヘッダのＭＢアドレス情報“first_mb_in_slice”を更新する。
【０１８３】
例えば、ヘッダアドレス更新部１３３ｃは、カウント値ｎ＝０のときには、ＭＢアドレス情報を更新せず、カウント値ｎ≠０のときには、ＭＢアドレス情報を（“mbposv”＋ｎ）×（“pic_width_in_mbs_minus1”＋１）に更新する。なお、ピクチャがＭＢＡＦＦで構成されている場合には、ヘッダアドレス更新部１３３ｃは、ＭＢアドレス情報を（“mbposv”／２＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により更新する。
【０１８４】
図１０は、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【０１８５】
例えば、ストリーム分割部１３０は、ストリームバッファ１５１に格納されている符号化ストリームのスライスＡ〜Ｃを、スライスＡ、スライスＢ、スライスＣの順に読み出す。
【０１８６】
この場合、まず、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、スライスＡの先頭からスライスヘッダｈａを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、カウント値が０であるため、記憶しているスライスヘッダｈａを出力することにより、そのスライスヘッダｈａを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１８７】
スライスヘッダｈａがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＡのスライスヘッダｈａに続く第１ＭＢラインを出力することにより、その第１ＭＢラインを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その結果、第１領域ｄｆ１には、スライスヘッダｈａ、スライスＡに属する第１ＭＢラインの順に、それらのデータが格納される。
【０１８８】
第１ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第１ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈａを複製スライスヘッダｈａ’として出力することにより、その複製スライスヘッダｈａ’を分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。なお、複製スライスヘッダｈａ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１８９】
複製スライスヘッダｈａ’がヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中で第１ＭＢラインに続く第２ＭＢラインを出力することにより、その第２ＭＢラインを分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。
【０１９０】
ここで、第２ＭＢラインは、スライスＡに属する複数のマクロブロックと、スライスＢのスライスヘッダｈｂと、スライスＢに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部１３４の分割点検出部１３９は、まず、第２ＭＢラインに含まれるスライスＡに属する全てのマクロブロックを第２領域ｄｆ２に格納する。その格納が終了すると、分割点検出部１３９は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けるまで待機する。このとき、スライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを検出するため、カウント値を０にリセットし、「出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に送る。このスライスヘッダ処理内容通知Ｍ１を受けた分割点検出部１３９は、第２領域ｄｆ２のスライスＡの終端に対してスライス終端処理を行い、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に送る。この終端処理完了通知Ｍ２を受けたスライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを第２領域ｄｆ２に格納し、スライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に送る。このスライスヘッダ処理完了通知Ｍ３を受けた分割点検出部１３９は、中断していた出力処理を再開し、第２ＭＢラインに含まれる次のスライスＢに属する複数のマクロブロックを第２領域ｄｆ２に格納する。
【０１９１】
その結果、第２領域ｄｆ２には、複製スライスヘッダｈａ’に続いて、スライスＡに属する第２ＭＢラインの一部を成す複数のマクロブロック、スライスヘッダｈｂ、スライスＢに属する第２ＭＢラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
【０１９２】
第２ＭＢラインがスライスデータ処理部１３４から出力されると、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、符号化ストリーム中でその第２ＭＢラインに続くスライスＣの先頭からスライスヘッダｈｃを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、第２ＭＢラインの終端でカウント値が０であるため、記憶しているスライスヘッダｈｃを出力することにより、そのスライスヘッダｈｃを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。
【０１９３】
スライスヘッダｈｃがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＣのスライスヘッダｈｃに続く第３ＭＢラインを出力することにより、その第３ＭＢラインを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。その結果、第３領域ｄｆ３には、スライスヘッダｈｃ、スライスＣに属する第３ＭＢラインの順に、それらのデータが格納される。
【０１９４】
第３ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第３ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈｃを複製スライスヘッダｈｃ’として出力することにより、その複製スライスヘッダｈｃ’を分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。なお、複製スライスヘッダｈｃ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１９５】
このような処理が繰り返されることにより、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４にデータが順次格納される。その結果、それらの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに第１分割ストリーム〜第４分割ストリームが格納される。
【０１９６】
図１１Ａおよび図１１Ｂは、スライス終端情報が設定される位置を示す図である。
【０１９７】
例えば、図１１Ａに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢのスライスヘッダｈｂが出力される直前に、そのスライスＢの先頭ＭＢラインから４ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。さらに、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢの先頭ＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０１９８】
このように、スライスの先頭のマクロブロックがＭＢラインの左端にある場合には、そのＭＢラインの１〜４ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０１９９】
また、図１１Ｂに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端以外にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢのスライスヘッダｈｂを含むＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２００】
このように、スライスの先頭のマクロブロックがＭＢラインの左端以外にある場合には、そのＭＢラインにおけるスライスの境界と、そのＭＢラインの１〜３ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０１】
ここで、分割点検出部１３９の動作について詳細に説明する。
【０２０２】
図１２は、分割点検出部１３９の動作を示すフローチャートである。
【０２０３】
まず、分割点検出部１３９は、符号化ストリームの先頭側から処理対象とすべきデータ（例えばマクロブロック）を特定して出力し、分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２０４】
ここで、分割点検出部１３９は、出力されるマクロブロックのアドレス（ＭＢアドレス値）を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部１３９は、出力されるマクロブロックのＭＢアドレス値を、そのスライスのスライスヘッダに含まれるＭＢアドレス情報により示される値に更新する。そして、分割点検出部１３９は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのＭＢアドレス値をインクリメントする。なお、ＭＢアドレス値は０以上の整数である。
【０２０５】
そして、分割点検出部１３９は、ステップＳ１００でマクロブロックを出力するときには、そのマクロブロックのＭＢアドレス値に応じて、分割ストリームバッファ１５２内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ１５２に含まれる４つの領域に１番〜４番までの番号が割り振られている場合、分割点検出部１３９は、ｍ＝（（ＭＢアドレス値／Ｗ）％Ｎ＋１）番目の領域を選択し、そのｍ番目の領域にマクロブロックを格納する。
【０２０６】
なお、Ｗは、Ｗ＝“pic_width_in_mbs_minus1”＋１により示され、ピクチャの水平方向のマクロブロック数を示す。また、Ｎはデコードエンジン１２０の総数（Ｎ＝４）であり、％は（ＭＢアドレス値／Ｗ）をＮで割ったときの余りを示す。
【０２０７】
次に、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックがＭＢラインの終端（境界）であったか否か、つまりマクロブロックの出力処理がＭＢラインの終端に達したか否かを判別する（ステップＳ１０２）。具体的には、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックのＭＢアドレス値が（Ｗの倍数−１）となるか否かを判別する。ＭＢアドレス値＝（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達し、ＭＢアドレス値≠（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達していない。
【０２０８】
分割点検出部１３９は、終端に達していない判別すると（ステップＳ１０２のＮｏ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。一方、分割点検出部１３９は、終端（ＭＢラインの境界）に達したと判別すると、つまりＭＢラインの境界を検出すると（ステップＳ１０２のＹｅｓ）、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けたか否かを判別する（ステップＳ１０４）。
【０２０９】
分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けていないと判別すると（ステップＳ１０４のＮｏ）、スライスヘッダ処理内容通知Ｍ１を受けるまで待機する。一方、分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けたと判別すると（ステップＳ１０４のＹｅｓ）、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示しているか否かを判別する（ステップＳ１０６）。
【０２１０】
ここで、分割点検出部１３９は、「出力」を示していると判別すると（ステップＳ１０６のＹｅｓ）、スライス終端処理を実行する（ステップＳ１０８）。つまり、分割点検出部１３９は、符号化ストリームがＣＡＢＡＤで復号化される場合には、スライス終端情報として“end_of_slice_flag”に「１」を設定する。また、分割点検出部１３９は、符号化ストリームがＣＡＶＬＤで復号化される場合には、スライス終端情報として“rbsp_slice_trailing_bits”を付与する。
【０２１１】
分割点検出部１３９は、ステップＳ１０６で「出力」を示していないと判別した後（ステップＳ１０６のＮｏ）、またはステップＳ１０８でスライス終端処理を実行した後には、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る（ステップＳ１１０）。その後、分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けたか否かを判別する（ステップＳ１１２）。ここで、分割点検出部１３９は、スライスヘッダ処理完了通知Ｍ３を受けていないと判別すると（ステップＳ１１２のＮｏ）、スライスヘッダ処理完了通知Ｍ３を受けるまで待機する。一方、分割点検出部１３９は、ステップＳ１１２でスライスヘッダ処理完了通知Ｍ３を受けたと判別したとき（ステップＳ１１２のＹｅｓ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。
【０２１２】
ここで、分割点検出部１３９は、終了すべきと判別したときには（ステップＳ１１４のＹｅｓ）、処理を終了し、終了すべきでないと判別したときには（ステップＳ１１４のＮｏ）、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２１３】
このように、本実施の形態における画像復号化装置１００では、符号化されたピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のＭＢラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１２０で負担することなく、Ｎ個のデコードエンジン１２０で均等に負担することができる。
【０２１４】
ここで、符号化ピクチャが複数のＭＢラインに分割されると、複数のＭＢラインに跨るスライスが複数のスライス部分（例えば、図３に示す各ＭＢラインＬ１〜Ｌ６や、ＭＢラインＬ７のうちの先頭６マクロブロックの集合など）に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群（例えば、図３に示す第２分割ストリームに含まれるＭＢラインＬ２，Ｌ６）が含まれることとなる。また、このようなスライス部分群（ＭＢラインＬ２，Ｌ６）には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
【０２１５】
そこで本発明では、ストリーム分割部１３０がそのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個のデコードエンジン１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置１００の全体構成を簡単にすることができる。
【０２１６】
また、本発明では、上記特許文献３の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献３の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献３の画像復号化装置では、符号化ストリームを適切に分割していない、言い換えれば、符号化ストリームが分割されて生成されるデータが、従来のデコードエンジンで復号化可能なストリームとして構成されていない。一方、本発明の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図２８に示すデコードエンジン２２０のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本発明の画像復号化装置では、復号化処理の高速化を図ることができる。
【０２１７】
また、本発明では、上記特許文献４の画像復号化装置と比べて、従来のデコードエンジンを流用することができるというメリットがある。具体的には、上記特許文献４の画像復号化装置では、符号化ストリームを分割することなく、符号化ストリームにおいてＭＢラインの境界に行ヘッダを挿入している。したがって、上記特許文献４の画像復号化装置の複数のデコードエンジンは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出しなければならない。このとき、それらのデコードエンジンは、処理対象のＭＢラインが格納されている位置が既に特定されていれば、処理対象のＭＢラインを抽出するために符号化ストリームに対して不連続にアクセスする必要があり、その位置が特定されていなければ、符号化ストリームに先頭からアクセスし、処理対象でないＭＢラインを読み飛ばす必要がある。一方、本発明の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図２８に示すデコードエンジン２２０のように、分割ストリームを通常の符号化ストリームとして扱って復号化することができる。このように、本発明の画像復号化装置では、従来のデコードエンジンを流用することができ、上記特許文献４の画像復号化装置では成し得ない効果を奏することができる。
【０２１８】
また、このような本実施の形態における画像復号化装置１００は、ストリーム分割部１３０に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０２１９】
図１３Ａ〜図１３Ｃは、高解像度デコード、高速デコードおよび複数チャンネルデコードを説明するための説明図である。
【０２２０】
画像復号化装置１００のストリーム分割部１３０は、図１３Ａに示すように、高解像度デコードの実行を指示するモード情報を取得すると、４ｋ２ｋの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０２２１】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、４ｋ２ｋの画像（３８４０×２１６０画素、６０ｐ）をリアルタイムに処理することができる。
【０２２２】
また、画像復号化装置１００のストリーム分割部１３０は、図１３Ｂに示すように、高速デコードの実行を指示するモード情報を取得すると、ＨＤの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０２２３】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、ＨＤの画像を８倍速（４×２）で処理することができる。
【０２２４】
また、画像復号化装置１００のストリーム分割部１３０は、図１３Ｃに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のＨＤの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン１２０に復号化させる。なお、この複数チャンネルデコードの場合、ストリーム分割部１３０は、ＳＰＳ、ＰＰＳおよびスライスなどの各種ＮＡＬユニットの複製および挿入を行わず、分割ストリームバッファ１５２の各領域への符号化ストリーム（チャンネル）の振り分けのみを行う。
【０２２５】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、最大８チャンネル、つまり８つのＨＤの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル（符号化ストリーム）を復号化する場合には、デコードエンジン１２０のクロック周波数を下げて消費電力の低減を図ることができる。例えば、４チャンネルを復号化する場合には、第１デコードエンジン１２０と第２デコードエンジン１２０のそれぞれに２チャンネルの復号化を実行させ、残りの第３デコードエンジン１２０と第４デコードエンジン１２０を停止させる。または、第１デコードエンジン１２０〜第４デコードエンジン１２０を使用し、それらのクロック周波数を１／２にする。
【０２２６】
このように、本実施の形態における画像復号化装置１００では、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードに切り替えるため、ユーザの使い勝手を向上することができる。なお、画像復号化装置１００における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを４つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート（４ｋ２ｋまたはＨＤ）が異なるだけである。したがって、画像復号化装置１００は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
【０２２７】
（変形例１）
ここで、上記実施の形態では、ストリーム分割部１３０のヘッダアドレス更新部１３３ｃで複製スライスヘッダに含まれるＭＢアドレス情報を更新したが、ストリーム分割部１３０で更新することなく、デコードエンジン１２０が更新してもよい。つまり、変形例１では、ストリーム分割部１３０は、複製スライスヘッダに含まれるＭＢアドレス情報を変更することなく、その複製スライスヘッダを出力する。そして、デコードエンジン１２０は、複製スライスヘッダを取得して処理を行う前に、その複製スライスヘッダに含まれるＭＢアドレス情報を変更する。
【０２２８】
図１４は、変形例１に係るデコードエンジン１２０がＭＢアドレス情報を変更するための擬似コードを示す図である。
【０２２９】
ここでは、ピクチャに含まれるｋ番目（ｋは０以上の整数）のＭＢラインは、（ｋ％４）番目のデコードエンジン１２０によって復号化されることを前提とする。なお、０番目のデコードエンジン１２０は第１デコードエンジン１２０であり、１番目のデコードエンジン１２０は第２デコードエンジン１２０であり、２番目のデコードエンジン１２０は第３デコードエンジン１２０であり、３番目のデコードエンジン１２０は第４デコードエンジン１２０である。
【０２３０】
まず、デコードエンジン１２０は、“n = mode_core_number”を実行することにより、自らのデコードエンジン１２０の番号を“ｎ”に代入する。次に、デコードエンジン１２０は、“pic_width_in_mbs = pic_width_in_mbs_minus1 + 1”を実行することにより、ピクチャに含まれる水平方向のマクロブロックの数を“pic_width_in_mbs”に代入する。
【０２３１】
そして、デコードエンジン１２０は、“org_header_num = ( first_mb_in_slice / pic_width_in_mbs ) ％ 4”を実行することにより、複製元のスライスヘッダを有するＭＢラインを復号化すべきデコードエンジン１２０の番号を“org_header_num”に代入する。つまり、“org_header_num”番目のデコードエンジン１２０が複製元のスライスヘッダを有するＭＢラインを復号化する。さらに、デコードエンジン１２０は、“org_mb_address =mbaff ？ ( first_mb_in_slice * 2 ) : first_mb_in_slice”を実行することにより、ピクチャがＭＢＡＦＦで構成されていれば、複製元のスライスヘッダのＭＢアドレス“org_mb_address”を“first_mb_in_slice * 2”として扱い、ピクチャがＭＢＡＦＦで構成されていなければ、複製元のスライスヘッダのＭＢアドレス“org_mb_address”を“first_mb_in_slice”として扱う。
【０２３２】
ここで、デコードエンジン１２０は、デコードエンジン１２０の番号“ｎ”が“org_header_num”に等しければ、“mb_address = org_mb_address”を実行することにより、複製スライスヘッダに含まれるＭＢアドレス情報“mb_address”を“org_mb_address”に更新する。一方、デコードエンジン１２０は、デコードエンジン１２０の番号“ｎ”が“org_header_num”と異なれば、まず、“d = ( n - org_header_num + 4 ) ％ 4”を実行することにより、その複製スライスヘッダが何番目の複製スライスヘッダであるかを判断する。そして、デコードエンジン１２０は、ピクチャがＭＢＡＦＦで構成されていれば、複製スライスヘッダに含まれるＭＢアドレス情報“mb_address”を“(( first_mb_in_slice/ pic_width_in_mbs ) + d ) * pic_width_in_mbs * 2”に更新し、ピクチャがＭＢＡＦＦで構成されていなければ、複製スライスヘッダのＭＢアドレス情報“mb_address”を“(( first_mb_in_slice / pic_width_in_mbs ) + d ) * pic_width_in_mbs”に更新する。
【０２３３】
このように、変形例１では、ストリーム分割部１３０がＭＢアドレス情報を更新しないため、そのストリーム分割部１３０の処理負担を軽減し、その構成を簡単にすることができる。なお、本発明では、ＭＢアドレス情報の更新のタイミングは、ストリーム分割部１３０で符号化ストリームが分割されるときに限らず、分割ストリームが生成された後であっても、デコードエンジン１２０で複製スライスヘッダが処理される前であれば、いつでもよい。
【０２３４】
（変形例２）
ここで、上記実施の形態では、ストリーム分割部１３０は、複製スライスヘッダが必要とされる分割ストリームにのみ、その複製スライスヘッダを挿入したが、それ以外の分割ストリームに複製スライスヘッダを挿入してもよい。変形例２に係るストリーム分割部は、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入する。
【０２３５】
図１５は、変形例２に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【０２３６】
変形例２に係るストリーム分割部１３０ｃは、スライスヘッダ処理部１３３ｇ、スライスデータ処理部１３４ｃおよび制御部１６０を備えている。なお、ストリーム分割部１３０ｃは、これらの構成要素以外にも、スタートコード検出部１３１、ＥＰＢ除去部１３２ａおよびＥＰＢ挿入部１３２ｂを備えているが、図１５では、説明を簡単にするために、スタートコード検出部１３１などの構成要素を省略している。
【０２３７】
分割ストリームバッファ１５２は、スライスヘッダ処理部１３３ｇおよびスライスデータ処理部１３４ｃから出力されるデータを蓄積し、その蓄積されたデータから分割ストリームを構成するための４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）を有する。
【０２３８】
スライスデータ処理部１３４ｃは、上記実施の形態におけるスライスデータ処理部１３４ａ，１３４ｂと同様の機能および構成を有し、符号化ストリーム中の各ピクチャを複数のＭＢラインに分割し、それらのＭＢラインを先頭側から順に、第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３および第４領域ｄｆ４の何れかに格納する。例えば、スライスデータ処理部１３４ｃは、ＭＢラインごとに、そのＭＢラインの格納先となる領域を、第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４の順に切り替えて、切り替えられた領域にＭＢラインを格納する。また、スライスデータ処理部１３４ｃは、符号化ストリーム中のＭＢラインの直前にスライスヘッダがあっても、そのＭＢラインだけを分割ストリームバッファ１５２の領域に格納し、ＭＢラインの中にスライスヘッダがあっても、そのスライスヘッダを除くＭＢラインを分割ストリームバッファ１５２の領域に格納する。
【０２３９】
スライスヘッダ処理部１３３ｇは、符号化ストリームに含まれるデータを先頭側から順次取得しているときに、その取得したデータがスライスヘッダである場合には、そのスライスヘッダを分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、スライスヘッダが４つに複製される。つまり、符号化ストリームに含まれていた複製元のスライスヘッダが第１領域ｄｆ１〜第４領域ｄｆ４のいずれか１つの領域に格納され、残りの３つの領域に３つの複製スライスヘッダがそれぞれ格納される。
【０２４０】
例えば、スライスヘッダ処理部１３３ｇがスライスヘッダを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力すると、複製元のスライスヘッダが第１領域ｄｆ１に格納され、３つの複製スライスヘッダがそれぞれＭＢラインの先頭に挿入されるように、第２領域ｄｆ２、第３領域ｄｆ３および第４領域ｄｆ４のそれぞれに格納される。
【０２４１】
このようなスライスデータ処理部１３４ｃおよびスライスヘッダ処理部１３３ｇによる処理によって、分割ストリームバッファ１５２の各領域からは、ＭＢラインの先頭に０または１つのスライスヘッダを有する分割ストリームだけでなく、ＭＢラインの先頭に連続する複数のスライスヘッダ（複製スライスヘッダまたは複製元のスライスヘッダ）を有する分割ストリームが出力される。
【０２４２】
制御部１６０は、上述のようなスライスヘッダ処理部１３３ｇによる処理を管理し、分割ストリームバッファ１５２の領域ごとに、その領域に格納されるＭＢラインの直前に連続して挿入されるスライスヘッダの数（総ヘッダ数）をカウントする。そして、制御部１６０は、その領域から出力される分割ストリームを復号化するデコードエンジン１２１（第１デコードエンジン１２１〜第４デコードエンジン１２１の全て）に、その総ヘッダ数を通知する。
【０２４３】
第１デコードエンジン１２１〜第４デコードエンジン１２１はそれぞれ、ストリーム分割部１３０ｃから出力される分割ストリームを復号化する。このとき、第１デコードエンジン１２１〜第４デコードエンジン１２１はそれぞれ、制御部１６０から総ヘッダ数の通知を受けると、その総ヘッダ数の数に応じた処理を行う。つまり、デコードエンジン１２１は、総ヘッダ数が０の場合には、スライスヘッダについての処理を行わず、総ヘッダ数が１の場合には、ＭＢラインの先頭に挿入されている１つのスライスヘッダを処理する。また、デコードエンジン１２１は、総ヘッダ数が２〜３の場合には、ＭＢラインの先頭に連続して挿入されている２〜３個のスライスヘッダのうち最後のスライスヘッダ以外のスライスヘッダに対する処理をスキップし、その最後のスライスヘッダのみを処理する。
【０２４４】
図１６は、変形例２におけるストリーム分割部１３０ｃおよび４つのデコードエンジン１２１の動作を説明するための説明図である。
【０２４５】
例えば、符号化ストリームに含まれるピクチャは、スライスＡ、スライスＢ、スライスＣおよびスライスＤを含む。ここで、スライスＡはスライスヘッダｈａおよび第１ＭＢラインを含み、スライスＢはスライスヘッダｈｂおよび第２ＭＢラインを含み、スライスＣはスライスヘッダｈｃおよび第３ＭＢラインを含み、スライスＤはスライスヘッダｈｄおよび第４ＭＢラインを含む。
【０２４６】
ストリーム分割部１３０ｃのスライスヘッダ処理部１３３ｇは、符号化ストリームのスライスヘッダｈａを取得すると、そのスライスヘッダｈａを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈａが第１分割ストリームの一部として第１領域ｄｆ１に格納されるとともに、そのスライスヘッダｈａと同一の３つの複製スライスヘッダｈａ’のそれぞれが第２分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４に格納される。そして、スライスデータ処理部１３４ｃは、第１ＭＢラインを第１分割ストリームの一部として第１領域ｄｆ１に格納する。
【０２４７】
次に、スライスヘッダ処理部１３３ｇは、符号化ストリームのスライスヘッダｈｂを取得すると、そのスライスヘッダｈｂを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｂが第２分割ストリームの一部として第２領域ｄｆ２に格納されるとともに、そのスライスヘッダｈｂと同一の３つの複製スライスヘッダｈｂ’のそれぞれが第１分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第１領域ｄｆ１、第３領域ｄｆ３、第４領域ｄｆ４に格納される。そして、スライスデータ処理部１３４ｃは、第２ＭＢラインを第２分割ストリームの一部として第２領域ｄｆ２に格納する。
【０２４８】
ストリーム分割部１３０ｃは、このような処理をスライスＣおよびスライスＤに対しても繰り返し実行する。
【０２４９】
その結果、第１領域ｄｆ１からは、スライスヘッダｈａ、第１ＭＢライン、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’を含む第１分割ストリームが出力される。同様に、第２領域ｄｆ２からは、複製スライスヘッダｈａ’、スライスヘッダｈｂ、第２ＭＢライン、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’を含む第２分割ストリームが出力される。第３領域ｄｆ３からは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、スライスヘッダｈｃ、第３ＭＢラインおよび複製スライスヘッダｈｄ’を含む第３分割ストリームが出力される。第４領域ｄｆ４からは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’、スライスヘッダｈｄおよび第４ＭＢラインを含む第４分割ストリームが出力される。
【０２５０】
なお、第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれには、第４ＭＢラインの後に続くＭＢラインが順次格納され、図１６に示す第１分割ストリーム〜第４分割ストリームの終端以降にも他のＭＢラインが続いて配置される。具体的には、符号化ストリームには、第４ＭＢライン以降にも、スライスＤに属する４ＭＢライン以上のスライスデータが後続しており、図１６に示す第１分割ストリーム〜第４分割ストリームの終端以降には、新たなスライスヘッダは後続していない。
【０２５１】
つまり、第１分割ストリームでは、スライスヘッダｈａが第１ＭＢラインの前に配置され、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’からなる３つのスライスヘッダが第１ＭＢラインの後に連続して配置される。
【０２５２】
また、第２分割ストリームでは、複製スライスヘッダｈａ’およびスライスヘッダｈｂからなる２つのスライスヘッダが第２ＭＢラインの前に連続して配置され、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’からなる２つのスライスヘッダが第２ＭＢラインの後に連続して配置される。
【０２５３】
また、第３分割ストリームでは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’およびスライスヘッダｈｃからなる３つのスライスヘッダが第３ＭＢラインの前に連続して配置され、複製スライスヘッダｈｄ’が第３ＭＢラインの後に配置される。
【０２５４】
また、第４分割ストリームでは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’およびスライスヘッダｈｄからなる４つのスライスヘッダが第４ＭＢラインの前に連続して配置される。
【０２５５】
第１デコードエンジン１２１は、第１領域ｄｆ１から出力される上述の第１分割ストリームの第１ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「１」の通知を受ける。その結果、第１デコードエンジン１２１は、スライスヘッダに対する処理をスキップすることなく、スライスヘッダｈａを処理し、そのスライスヘッダｈａに続く第１ＭＢラインを復号化する。次に、第１デコードエンジン１２１は、制御部１６０から総ヘッダ数「３」の通知を受ける。その結果、第１デコードエンジン１２１は、第１ＭＢラインを復号した後に、（総ヘッダ数−１＝２）個のスライスヘッダに対する処理をスキップする。つまり、第１デコードエンジン１２１は、２個のスライスヘッダ（複製スライスヘッダｈｂ’および複製スライスヘッダｈｃ’）に対する処理をスキップし、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５６】
また、第２デコードエンジン１２１は、第２領域ｄｆ２から出力される上述の第２分割ストリームの第２ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「２」の通知を受ける。その結果、第２デコードエンジン１２１は、（総ヘッダ数−１＝１）個のスライスヘッダに対する処理をスキップする。つまり、第２デコードエンジン１２１は、複製スライスヘッダｈａ’に対する処理をスキップし、スライスヘッダｈｂを処理し、そのスライスヘッダｈｂに続く第２ＭＢラインを復号化する。次に、第２デコードエンジン１２１は、制御部１６０から再び総ヘッダ数「２」の通知を受ける。その結果、第２デコードエンジン１２１は、（総ヘッダ数−１＝１）個のスライスヘッダに対する処理をスキップする。つまり、第２デコードエンジン１２１は、複製スライスヘッダｈｃ’に対する処理をスキップし、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５７】
また、第３デコードエンジン１２１は、第３領域ｄｆ３から出力される上述の第３分割ストリームの第３ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「３」の通知を受ける。その結果、第３デコードエンジン１２１は、（総ヘッダ数−１＝２）個のスライスヘッダに対する処理をスキップする。つまり、第３デコードエンジン１２１は、複製スライスヘッダｈａ’および複製スライスヘッダｈｂ’に対する処理をスキップし、スライスヘッダｈｃを処理し、そのスライスヘッダｈｃに続く第３ＭＢラインを復号化する。次に、第３デコードエンジン１２１は、制御部１６０から総ヘッダ数「１」の通知を受ける。その結果、第３デコードエンジン１２１は、スライスヘッダに対する処理をスキップすることなく、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５８】
また、第４デコードエンジン１２１は、第４領域ｄｆ４から出力される上述の第４分割ストリームの第４ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「４」の通知を受ける。その結果、第４デコードエンジン１２１は、（総ヘッダ数−１＝３）個のスライスヘッダに対する処理をスキップする。つまり、第４デコードエンジン１２１は、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’および複製スライスヘッダｈｃ’に対する処理をスキップし、スライスヘッダｈｄを処理し、そのスライスヘッダｈｄに続く第４ＭＢラインを復号化する。
【０２５９】
このように、変形例２では、ストリーム分割部１３０ｃが、複製スライスヘッダが必要であるか否かに関わらず、分割ストリームに複製スライスヘッダを挿入するため、ストリーム分割部１３０ｃにおけるその複製スライスヘッダの必要性の判断に要する処理負担を軽減することができる。さらに、ストリーム分割部１３０ｃは、符号化ストリームに含まれるスライスヘッダを取得すると、単純にそのスライスヘッダを出力すればよいため、上記実施の形態のストリーム分割部１３０のようにヘッダバッファ１３３ｄを備える必要がない。その結果、ストリーム分割部１３０ｃの構成を簡単にすることができる。
【０２６０】
（変形例３）
ここで上記変形例２では、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入することにより、連続して配置された複数のスライスヘッダを含む分割ストリームを生成した。変形例３では、上記変形例２と同様、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入するが、連続してスライスヘッダを挿入する場合には、既に挿入されているスライスヘッダに新たなスライスヘッダを上書する。これにより、分割ストリームにおいて複数のスライスヘッダが連続して配置されるのを防ぐ。
【０２６１】
図１７は、変形例３に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【０２６２】
変形例３に係るストリーム分割部１３０ｄは、スライスヘッダ処理部１３３ｈ、スライスデータ処理部１３４ｄおよび４つのバッファ（第１バッファ１４１〜第４バッファ１４４）を備えている。なお、ストリーム分割部１３０ｄは、これらの構成要素以外にも、スタートコード検出部１３１、ＥＰＢ除去部１３２ａおよびＥＰＢ挿入部１３２ｂを備えているが、図１７では、説明を簡単にするために、スタートコード検出部１３１などの構成要素を省略している。
【０２６３】
スライスデータ処理部１３４ｄは、上記実施の形態におけるスライスデータ処理部１３４ａ，１３４ｂと同様の機能および構成を有し、符号化ストリーム中の各ピクチャを複数のＭＢラインに分割し、それらのＭＢラインを先頭側から順に、第１バッファ１４１、第２バッファ１４２、第３バッファ１４３および第４バッファ１４４の何れかに出力する。例えば、スライスデータ処理部１３４ｄは、ＭＢラインごとに、そのＭＢラインの出力先となるバッファを、第１バッファ１４１、第２バッファ１４２、第３バッファ１４３、第４バッファ１４４の順に切り替えて、切り替えられたバッファにＭＢラインを出力する。また、スライスデータ処理部１３４ｄは、符号化ストリーム中のＭＢラインの直前にスライスヘッダがあっても、そのＭＢラインだけをバッファに出力し、ＭＢラインの中にスライスヘッダがあっても、そのスライスヘッダを除くＭＢラインをバッファに出力する。
【０２６４】
スライスヘッダ処理部１３３ｈは、符号化ストリームに含まれるデータを先頭側から順次取得しているときに、その取得したデータがスライスヘッダである場合には、そのスライスヘッダを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、スライスヘッダが４つに複製される。つまり、符号化ストリームに含まれていた複製元のスライスヘッダが第１バッファ１４１〜第４バッファ１４４のいずれか１つのバッファに格納され、残りの３つのバッファに３つの複製スライスヘッダがそれぞれ格納される。
【０２６５】
例えば、スライスヘッダ処理部１３３ｈがスライスヘッダを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力すると、複製元のスライスヘッダが第１バッファ１４１に格納され、３つの複製スライスヘッダが第２バッファ１４２、第３バッファ１４３および第４バッファ１４４のそれぞれに格納される。
【０２６６】
バッファ（第１バッファ１４１〜第４バッファ１４４）は、少なくとも１つのスライスヘッダを格納し得る程度の容量を有し、スライスヘッダ処理部１３３ｈおよびスライスデータ処理部１３４ｄから出力されるデータを一時的に蓄積し、そのバッファに対応付けられた分割ストリームバッファ１５２の領域に出力する。なお、説明を簡単にするために、バッファが１つのスライスヘッダと１つのマクロブロックとを格納し得る容量を有するものとして、以下、説明する。
【０２６７】
バッファは、スライスヘッダ処理部１３３ｈからスライスヘッダ（複製元のスライスヘッダまたは複製スライスヘッダ）を取得したときには、一時的に、そのスライスヘッダを保持し、そのスライスヘッダを保持している状態で次の新たなスライスヘッダを取得すると、既に保持しているスライスヘッダに、その新たなスライスヘッダを上書する。
【０２６８】
また、バッファは、スライスヘッダを取得して保持した直後に、スライスデータ処理部１３４ｄからマクロブロックを取得して保持すると、その保持しているデータを、スライスヘッダ、マクロブロックの順に出力する。さらに、バッファは、先のマクロブロックに続いてスライスデータ処理部１３４ｄから新たなマクロブロックを取得するときには、既に保持しているスライスヘッダおよびマクロブロックを順次消去して新たなマクロブロックを保持し、その新たなマクロブロックを出力する。
【０２６９】
つまり、バッファは、マクロブロックを取得するごとに、そのマクロブロックを直ぐに出力する。一方、バッファは、スライスヘッダを取得したときには、そのスライスヘッダを直ぐには出力せずに保持しておき、マクロブロックを取得して出力するときに、そのスライスヘッダをマクロブロックの前に出力する。また、バッファは、スライスヘッダを保持しているときに、新たなスライスヘッダを取得したときには、既に保持しているスライスヘッダに新たなスライスヘッダを上書きする。
【０２７０】
このようなスライスデータ処理部１３４ｄ、スライスヘッダ処理部１３３ｈおよびバッファによる処理によって、分割ストリームバッファ１５２の各領域（第１領域ｄｆ１〜第４領域ｄｆ４）には、連続するスライスヘッダを含まない分割ストリームが蓄積される。
【０２７１】
デコードエンジン１２０は、上記実施の形態と同様、そのデコードエンジン１２０に対応付けられた分割ストリームバッファ１５２の領域から分割ストリームを読み出して復号化する。
【０２７２】
図１８は、バッファのポインタを示す図である。
【０２７３】
バッファは、スライスヘッダをスライスヘッダ処理部１３３ｈから取得して記憶領域に書き込むときには、記憶領域のライトポインタＷＰをガードポインタＧＰまで巻き戻し、スライスヘッダをそのガードポインタＧＰから書き込む。これにより、既に格納されているスライスヘッダは上書されて消去される。また、バッファは、通常、記憶領域に書き込まれたデータをリードポインタＲＰから読み出して出力するが、そのリードポインタＲＰはガードポインタＧＰを超えないように設定されている。
【０２７４】
そして、バッファは、スライスヘッダを記憶領域に書き込んだ直後に、マクロブロックを記憶領域に書き込むときだけ、そのガードポインタＧＰによるリードポインタＲＰのガードを外して、その書き込んだスライスヘッダとマクロブロックとを読み出して出力する。このように出力されたスライスヘッダとマクロブロックは、新たなスライスヘッダまたはマクロブロックが書き込まれるときに上書きされて消去されることとなる。
【０２７５】
図１９は、変形例３におけるストリーム分割部１３０ｄの動作を説明するための説明図である。
【０２７６】
例えば、符号化ストリームに含まれるピクチャは、スライスＡ、スライスＢ、スライスＣおよびスライスＤを含む。ここで、スライスＡはスライスヘッダｈａおよび第１ＭＢラインを含み、スライスＢはスライスヘッダｈｂ、第２ＭＢラインおよび第３ＭＢラインの一部を含み、スライスＣはスライスヘッダｈｃおよび第３ＭＢラインの残りの一部を含み、スライスＤはスライスヘッダｈｄおよび第４ＭＢラインを含む。
【０２７７】
ストリーム分割部１３０ｄのスライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈａを取得すると、そのスライスヘッダｈａを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈａが第１分割ストリームの一部として第１バッファ１４１に出力されるとともに、そのスライスヘッダｈａと同一の３つの複製スライスヘッダｈａ’のそれぞれが第２分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第２バッファ１４２、第３バッファ１４３、第４バッファ１４４に出力される。その結果、第１バッファ１４１にはスライスヘッダｈａが書き込まれ、第２バッファ１４２〜第４バッファ１４４のそれぞれには複製スライスヘッダｈａ’が書き込まれる。
【０２７８】
そして、スライスデータ処理部１３４ｄは、第１ＭＢラインに含まれるマクロブロックを先頭側から順次、第１分割ストリームの一部として第１バッファ１４１に出力する。これにより、第１バッファ１４１には、スライスヘッダｈａの直後にマクロブロックが書き込まれることになり、その第１バッファ１４１のリードポインタＲＰのガードが外される。したがって、第１バッファ１４１は、スライスヘッダｈａと第１ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第１領域ｄｆ１に出力する。第１ＭＢラインの先頭マクロブロックが第１バッファ１４１に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第１バッファ１４１に順次書き込まれるときには、その第１バッファ１４１に書き込まれているスライスヘッダｈａと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第１バッファ１４１は、第１ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第１領域ｄｆ１に順次出力する。
【０２７９】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈａおよび第１ＭＢラインが、第１バッファ１４１を介して分割ストリームバッファ１５２の第１領域ｄｆ１に格納される。
【０２８０】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｂを取得すると、そのスライスヘッダｈｂを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｂが第２分割ストリームの一部として第２バッファ１４２に出力されるとともに、そのスライスヘッダｈｂと同一の３つの複製スライスヘッダｈｂ’のそれぞれが第１分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第１バッファ１４１、第３バッファ１４３、第４バッファ１４４に出力される。
【０２８１】
その結果、第２バッファ１４２にはスライスヘッダｈｂが書き込まれ、第１バッファ１４１、第３バッファ１４３および第４バッファ１４４のそれぞれには複製スライスヘッダｈｂ’が書き込まれる。つまり、第２バッファ１４２〜第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは、スライスヘッダｈｂまたは複製スライスヘッダｈｂ’に上書される。
【０２８２】
そして、スライスデータ処理部１３４ｄは、第２ＭＢラインに含まれるマクロブロックを先頭側から順次、第２分割ストリームの一部として第２バッファ１４２に出力する。これにより、第２バッファ１４２には、スライスヘッダｈｂの直後にマクロブロックが書き込まれることになり、その第２バッファ１４２のリードポインタＲＰのガードが外される。したがって、第２バッファ１４２は、スライスヘッダｈｂと第２ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第２領域ｄｆ２に出力する。第２ＭＢラインの先頭マクロブロックが第２バッファ１４２に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第２バッファ１４２に順次書き込まれるときには、その第２バッファ１４２に書き込まれているスライスヘッダｈｂと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第２バッファ１４２は、第２ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第２領域ｄｆ２に順次出力する。
【０２８３】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｂおよび第２ＭＢラインが、第２バッファ１４２を介して分割ストリームバッファ１５２の第２領域ｄｆ２に格納される。
【０２８４】
ここで、スライスＢは、上述の第２ＭＢラインと第３ＭＢラインのうちの３マクロブロックを含んでいる。したがって、スライスデータ処理部１３４ｄは、第２ＭＢラインを出力した後、引き続き第３ＭＢラインの３マクロブロックを先頭側から順次、第３分割ストリームの一部として第３バッファ１４３に出力する。
【０２８５】
これにより、第３バッファ１４３には、複製スライスヘッダｈｂ’の直後にマクロブロックが書き込まれることになり、その第３バッファ１４３のリードポインタＲＰのガードが外される。したがって、第３バッファ１４３は、複製スライスヘッダｈｂ’と第３ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に出力する。第３ＭＢラインの先頭マクロブロックが第３バッファ１４３に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第３バッファ１４３に順次書き込まれるときには、その第３バッファ１４３に書き込まれている複製スライスヘッダｈｂ’と先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第３バッファ１４３は、第３ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に順次出力する。
【０２８６】
このようなストリーム分割部１３０ｄの処理によって、第３ＭＢラインに含まれるスライスＢの残りの３つのマクロブロックが、第３バッファ１４３を介して分割ストリームバッファ１５２の第３領域ｄｆ３に格納される。
【０２８７】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｃを取得すると、そのスライスヘッダｈｃを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｃが第３分割ストリームの一部として第３バッファ１４３に出力されるとともに、そのスライスヘッダｈｃと同一の３つの複製スライスヘッダｈｃ’のそれぞれが第１分割ストリーム、第２分割ストリーム、第４分割ストリームの一部として第１バッファ１４１、第２バッファ１４２、第４バッファ１４４に出力される。
【０２８８】
その結果、第３バッファ１４３にはスライスヘッダｈｃが書き込まれ、第１バッファ１４１、第２バッファ１４２および第４バッファ１４４のそれぞれには複製スライスヘッダｈｃ’が書き込まれる。つまり、第１バッファ１４１および第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは複製スライスヘッダｈｃ’に上書される。
【０２８９】
そして、スライスデータ処理部１３４ｄは、第３ＭＢラインに含まれるスライスＣのマクロブロックを先頭側から順次、第３分割ストリームの一部として第３バッファ１４３に出力する。これにより、第３バッファ１４３には、スライスヘッダｈｃの直後にマクロブロックが書き込まれることになり、その第３バッファ１４３のリードポインタＲＰのガードが外される。したがって、第３バッファ１４３は、スライスヘッダｈｃとスライスＣの先頭のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に出力する。スライスＣの先頭マクロブロックが第３バッファ１４３に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第３バッファ１４３に順次書き込まれるときには、その第３バッファ１４３に書き込まれているスライスヘッダｈｃと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第３バッファ１４３は、スライスＣの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に順次出力する。
【０２９０】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｃおよびスライスＣのマクロブロックが、第３バッファ１４３を介して分割ストリームバッファ１５２の第３領域ｄｆ３に格納される。
【０２９１】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｄを取得すると、そのスライスヘッダｈｄを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｄが第４分割ストリームの一部として第４バッファ１４４に出力されるとともに、そのスライスヘッダｈｄと同一の３つの複製スライスヘッダｈｄ’のそれぞれが第１分割ストリーム、第２分割ストリーム、第３分割ストリームの一部として第１バッファ１４１、第２バッファ１４２、第３バッファ１４３に出力される。
【０２９２】
その結果、第４バッファ１４４にはスライスヘッダｈｄが書き込まれ、第１バッファ１４１、第２バッファ１４２および第３バッファ１４３のそれぞれには複製スライスヘッダｈｄ’が書き込まれる。つまり、第１バッファ１４１、第２バッファ１４２および第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは、スライスヘッダｈｄまたは複製スライスヘッダｈｄ’に上書される。
【０２９３】
そして、スライスデータ処理部１３４ｄは、第４ＭＢラインに含まれるマクロブロックを先頭側から順次、第４分割ストリームの一部として第４バッファ１４４に出力する。これにより、第４バッファ１４４には、スライスヘッダｈｄの直後にマクロブロックが書き込まれることになり、その第４バッファ１４４のリードポインタＲＰのガードが外される。したがって、第４バッファ１４４は、スライスヘッダｈｄと第４ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第４領域ｄｆ４に出力する。第４ＭＢラインの先頭マクロブロックが第４バッファ１４４に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第４バッファ１４４に順次書き込まれるときには、その第４バッファ１４４に書き込まれているスライスヘッダｈｂと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第４バッファ１４４は、第４ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第４領域ｄｆ４に順次出力する。
【０２９４】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｄおよび第４ＭＢラインは、第３バッファ１４３を介して分割ストリームバッファ１５２の第４領域ｄｆ４に格納される。
【０２９５】
このように、変形例３では、スライスヘッダ処理部１３３ｈが、複製スライスヘッダが必要であるか否かに関わらず、複製スライスヘッダを出力するため、スライスヘッダ処理部１３３ｈにおけるその複製スライスヘッダの必要性の判断に要する処理負担を軽減することができる。さらに、スライスヘッダ処理部１３３ｈは、符号化ストリームに含まれるスライスヘッダを取得すると、単純にそのスライスヘッダを出力すればよいため、上記実施の形態のスライスヘッダ挿入部１３３のようにヘッダバッファ１３３ｄを備える必要がない。その結果、スライスヘッダ処理部１３３ｈの構成を簡単にすることができる。
【０２９６】
さらに、変形例３では、分割ストリームにおいてスライスヘッダが連続して挿入されることがないため、変形例２と比べて、連続するスライスヘッダに対する処理負担を軽減することができる。つまり、連続しているスライスヘッダの数をデコードエンジン１２０に通知するための処理や、デコードエンジン１２０がスライスヘッダに対してスキップすべきか否かを判別する処理などを省くことができる。その結果、ストリーム分割部１３０ｄおよびデコードエンジン１２０の機能構成を簡単にすることができ、デコードエンジン１２０に従来のデコードエンジンを流用することができる。
【０２９７】
図２０は、上記実施の形態またはその変形例に係る画像復号化装置の適用例を示す図である。
【０２９８】
例えば、上記実施の形態またはその変形例に係る画像復号化装置は、図２０に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生する再生装置１０１に備えられる。再生装置１０１は、ＢＳデジタル放送の放送波を受信するアンテナ１０１ａと装置本体１０１ｂとを備え、装置本体１０１ｂは上述の画像復号化装置を備える。
【０２９９】
装置本体１０１ｂに備えられた画像復号化装置は、アンテナ１０１ａによって受信された放送波から例えば４ｋ２ｋの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してＮ個の分割ストリームを生成し、Ｎ個の分割ストリームを並列に復号化する。
【０３００】
以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態およびその変形例を用いて説明したが、本発明は、これらに限定されるものではない。
【０３０１】
例えば、上記実施の形態およびその変形例では、画像復号化装置１００は分割ストリームバッファ１５２などを備えていたが、これらを備えていなくてもよい。
【０３０２】
図２１は、本発明の画像復号化装置の最小構成を示すブロック図である。
【０３０３】
画像復号化装置１０は、本発明を実現するための最小構成を有し、取得部１１、ストリーム分割部１２、およびＮ個の復号化部１３を備えている。
【０３０４】
取得部１１は、ストリームバッファ１５１、若しくはストリームバッファ１５１から画像復号化装置１０に符号化ストリームを取り込むための取得装置（あるいは単なる取得口）に相当し、画像データが符号化された符号化ストリームを取得する。ストリーム分割部１２は、ストリーム分割部１３０，１３０ｃ，１３０ｄに相当する。つまり、ストリーム分割部１２は、取得部１１で取得された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。Ｎ個の復号化部１３は、デコードエンジン１２０，１２１に相当し、ストリーム分割部１２により生成されたＮ個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部１２は、Ｎ個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の復号化部１３の何れかにスライスとして認識されるように、スライス部分群を新たなスライスとして再構成する。
【０３０５】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【０３０６】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。
【０３０７】
そこで本発明では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部１３は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個の復号化部１３のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【０３０８】
したがって、画像復号化装置１０は、上記実施の形態およびその変形例における分割ストリームバッファ１５２などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０３０９】
図２２は、ストリーム分割部１２の構成を示すブロック図である。
【０３１０】
ストリーム分割部１２は、例えば、複製部１２ａ、アドレス更新部１２ｂ、および挿入部１２ｃを備えている。
【０３１１】
複製部１２ａおよび挿入部１２ｃは、スライスヘッダ挿入部１３３またはスライスヘッダ処理部１３３ｇ，１３３ｈに相当する。また、複製部１２ａは、符号化ピクチャに含まれるスライスの先頭にある、そのスライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する。例えば、補助情報はスライスヘッダに相当し、複製補助情報は複製スライスヘッダに相当する。挿入部１２ｃは、その複製補助情報を補助情報としてスライス部分群の先頭に挿入する。アドレス更新部１２ｂは、ヘッダアドレス更新部１３３ｃに相当し、複製補助情報に含まれるアドレス情報を、スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新する。なお、アドレス情報はＭＢアドレス情報である。
【０３１２】
ここで、アドレス更新部１２ｂは、ストリーム分割部１２に備えられ、複製部１２ａによって生成された複製補助情報に含まれるアドレス情報を更新する。そして、挿入部１２ｃは、アドレス更新部１２ｂによって更新されたアドレス情報を含む複製補助情報をスライス部分群の先頭に挿入する。
【０３１３】
これにより、スライス部分群の先頭のマクロブロックのアドレスを示すアドレス情報が、そのスライス部分群の補助情報に含まれているため、復号化部１３は、特別な処理を行うことなく、そのアドレス情報を読み出すことによって、そのスライス部分群の先頭のマクロブロックのアドレスを適切に把握することができる。
【０３１４】
なお、アドレス更新部１２ｂはストリーム分割部１２の外部にあってもよい。
【０３１５】
図２３は、本発明の画像復号化装置の他の最小構成を示すブロック図である。
【０３１６】
画像復号化装置２０は、本発明を実現するための他の最小構成を有し、取得部１１、ストリーム分割部２２、アドレス更新部１２ｂおよびＮ個の復号化部１３を備えている。ストリーム分割部２２は、複製部１２ａと挿入部１２ｃだけを備え、アドレス更新部１２ｂは、ストリーム分割部２２の外部に備えられている。この場合、アドレス更新部１２ｂは、挿入部１２ｃによってスライス部分群の先頭に挿入されている複製補助情報に含まれるアドレス情報を更新する。
【０３１７】
また、アドレス更新部１２ｂは、Ｎ個の復号化部１３のそれぞれに備えられていてもよい。この場合、復号化部１３は、その復号化部１３が処理対象とする分割ストリームに対してアドレス情報の更新を行う機能を有する。つまり、上記実施の形態の変形例１がこの場合に相当する。
【０３１８】
図２４は、ストリーム分割部１２の他の構成を示すブロック図である。
【０３１９】
ストリーム分割部１２は、補助情報処理部１２ｄ、分割出力部１２ｅ、およびＮ個のバッファ１２ｆを備えている。ここで、符号化ストリームに含まれるスライスの先頭には、そのスライスの復号化に必要な補助情報がある。例えば、補助情報はスライスヘッダに相当する。Ｎ個のバッファ１２ｆはそれぞれ、第１バッファ１４１〜第４バッファ１４４に相当し、Ｎ個の復号化部１３にそれぞれ対応付けられている。分割出力部１２ｅは、スライスデータ処理部１３４ｄに相当し、符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、Ｎ個のバッファ１２ｆのうちの何れかに出力する。補助情報処理部１２ｄは、スライスヘッダ処理部１３３ｈに相当し、符号化ピクチャに含まれるデータを順次取得し、そのデータが補助情報であるときに、その補助情報をＮ個のバッファ１２ｆに出力する。
【０３２０】
ここで、Ｎ個のバッファ１２ｆのそれぞれは、分割出力部１２ｅから出力された構成単位に含まれるデータを取得するごとに、そのデータを出力する。また、Ｎ個のバッファ１２ｆのそれぞれは、補助情報処理部１２ｄから出力された補助情報を取得したときには、その補助情報を保持し、その補助情報の直後に構成単位のデータを取得したときにのみ、保持している補助情報をそのデータの前に出力し、補助情報の直後に新たな補助情報を取得したときには、補助情報をその新たな補助情報に上書きする。Ｎ個の復号化部１３のそれぞれは、その復号化部１３に対応付けられたバッファから出力される補助情報および構成単位のデータからなる分割ストリームを復号化する。
【０３２１】
これにより、補助情報処理部１２ｄが、符号化ストリームから得られる補助情報をＮ個のバッファ１２ｆに単純に出力すれば、Ｎ個のバッファ１２ｆに出力された補助情報のうち、Ｎ個の分割ストリームに必要とされる補助情報だけを、そのＮ個のバッファから適切なタイミングで出力させることができる。その結果、簡単な構成で、符号化ピクチャのスライスの先頭でなかったスライス部分群の先頭に、補助情報を適切に挿入することができる。
【０３２２】
なお、上記実施の形態およびその変形例では、複製スライスヘッダを挿入したが、複製スライスヘッダを挿入しなくてもよい。例えば、複製元のスライスヘッダに含まれる、そのスライスヘッダを有するスライスの復号化に必要な補助情報だけを複製し、その複製によって生成された複製補助情報を挿入してもよい。
【０３２３】
また、上記実施の形態およびその変形例では、１ＭＢラインを１つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は１ＭＢラインに限らず、２ＭＢラインや、３ＭＢラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがＭＢＡＦＦで構成されている場合には、２ＭＢラインを構成単位として扱い、ピクチャがＭＢＡＦＦで構成されていない場合には、１ＭＢラインを構成単位として扱ってもよい。
【０３２４】
また、上記実施の形態およびその変形例では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のＭＢラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのＭＢラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
【０３２５】
なお、ブロック図（図１、図７、図９、図１５および図１７など）の各機能ブロックは典型的には集積回路であるＬＳＩ（Large Scale Integration）として実現される。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。例えばメモリ以外の機能ブロックが１チップ化されていても良い。
【０３２６】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Integrated Circuit）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３２７】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０３２８】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０３２９】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという効果を奏し、例えば、４ｋ２ｋの符号化ストリームを復号化する再生装置などとして有用である。
【符号の説明】
【０３３０】
１００    画像復号化装置
１１０    デコーダ
１２０    第１〜第Ｎデコードエンジン
１３０    ストリーム分割部
１３１    スタートコード検出部 
１３２ａ    ＥＰＢ除去部
１３２ｂ    ＥＰＢ挿入部
１３３    スライスヘッダ挿入部
１３３ａ    ＮＡＬタイプ判定部
１３３ｂ    ヘッダ挿入カウンタ
１３３ｃ    ヘッダアドレス更新部
１３３ｄ    ヘッダバッファ
１３４ａ，１３４ｂ    スライスデータ処理部
１３５ａ，１３５ｂ    スライスデータ層デコード部
１３６ａ，１３６ｂ    マクロブロック層デコード部
１３７ａ    スキップラン分割部
１３８ａ，１３８ｂ    ＱＰ計算部
１３９ａ，１３９ｂ    分割点検出部
１５０    メモリ
１５１    ストリームバッファ
１５２    分割ストリームバッファ
１５３    フレームメモリ
【図１】
2010041472.tif 000003
【図２Ａ】
2010041472.tif 000004
【図２Ｂ】
2010041472.tif 000005
【図３】
2010041472.tif 000006
【図４】
2010041472.tif 000007
【図５】
2010041472.tif 000008
【図６】
2010041472.tif 000009
【図７】
2010041472.tif 000010
【図８】
2010041472.tif 000011
【図９】
2010041472.tif 000012
【図１０】
2010041472.tif 000013
【図１１Ａ】
2010041472.tif 000014
【図１１Ｂ】
2010041472.tif 000015
【図１２】
2010041472.tif 000016
【図１３Ａ】
2010041472.tif 000017
【図１３Ｂ】
2010041472.tif 000018
【図１３Ｃ】
2010041472.tif 000019
【図１４】
2010041472.tif 000020
【図１５】
2010041472.tif 000021
【図１６】
2010041472.tif 000022
【図１７】
2010041472.tif 000023
【図１８】
2010041472.tif 000024
【図１９】
2010041472.tif 000025
【図２０】
2010041472.tif 000026
【図２１】
2010041472.tif 000027
【図２２】
2010041472.tif 000028
【図２３】
2010041472.tif 000029
【図２４】
2010041472.tif 000030
【図２５】
2010041472.tif 000031
【図２６】
2010041472.tif 000032
【図２７】
2010041472.tif 000033
【図２８】
2010041472.tif 000034
【図２９】
2010041472.tif 000035
【図３０】
2010041472.tif 000036
【図３１Ａ】
2010041472.tif 000037
【図３１Ｂ】
2010041472.tif 000038
【図３２】
2010041472.tif 000039
【手続補正書】
【提出日】平成22年3月15日(2010.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記ストリーム分割部は、
前記スライス部分群の先頭が、前記符号化ピクチャに含まれるスライスの先頭でない場合には、前記スライス部分群の先頭に、前記スライスの復号化に必要な補助情報を挿入することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、前記スライス部分群の先頭に前記補助情報をヘッダとして挿入する、
請求項２記載の画像復号化装置。
【請求項４】
前記ストリーム分割部は、
前記符号化ピクチャに含まれるスライスの先頭にある、前記スライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する複製部と、
前記複製補助情報を前記補助情報として前記スライス部分群の先頭に挿入する挿入部とを備え、
前記画像復号化装置は、さらに、
前記複製補助情報に含まれるアドレス情報を、前記スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新するアドレス更新部を備える、
請求項２記載の画像復号化装置。
【請求項５】
前記アドレス更新部は、
前記ストリーム分割部に備えられ、前記複製部によって生成された複製補助情報に含まれるアドレス情報を更新し、
前記挿入部は、
前記アドレス更新部によって更新されたアドレス情報を含む前記複製補助情報を前記スライス部分群の先頭に挿入する、
請求項４記載の画像復号化装置。
【請求項６】
前記アドレス更新部は、
前記挿入部によって前記スライス部分群の先頭に挿入されている前記複製補助情報に含まれるアドレス情報を更新する、
請求項４記載の画像復号化装置。
【請求項７】
前記符号化ストリームに含まれるスライスの先頭には、前記スライスの復号化に必要な補助情報があり、
前記ストリーム分割部は、
前記Ｎ個の復号化部にそれぞれ対応付けられたＮ個のバッファと、
前記符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、前記Ｎ個のバッファのうちの何れかに出力する分割出力部と、
前記符号化ピクチャに含まれるデータを順次取得し、前記データが前記補助情報であるときに、前記補助情報を前記Ｎ個のバッファに出力する補助情報処理部とを備え、
前記Ｎ個のバッファのそれぞれは、
前記分割出力部から出力された前記構成単位に含まれるデータを取得するごとに、前記データを出力し、
前記補助情報処理部から出力された前記補助情報を取得したときには、前記補助情報を保持し、前記補助情報の直後に前記構成単位のデータを取得したときにのみ、保持している前記補助情報を前記データの前に出力し、前記補助情報の直後に新たな補助情報を取得したときには、前記補助情報を前記新たな補助情報に上書きし、
前記Ｎ個の復号化部のそれぞれは、
当該復号化部に対応付けられたバッファから出力される前記補助情報および前記構成単位のデータからなる前記分割ストリームを復号化する、
請求項２記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記スライス部分群の終端が、前記符号化ピクチャに含まれるスライスの終端でない場合には、前記スライス部分群の終端であることを示す終端情報を、当該スライス部分群の終端に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１〜７の何れか１項に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
さらに、分割すべきか否かを示すモード情報を取得し、前記モード情報が分割すべきでないことを示す場合には、前記取得部によって取得される複数の符号化ストリームのそれぞれを、前記Ｎ個の復号化部のうちの何れかに出力し、
前記Ｎ個の復号化部は、
さらに、前記ストリーム分割部から出力された複数の符号化ストリームを取得したときには、前記複数の符号化ストリームを並列に復号化する、
請求項１〜８の何れか１項に記載の画像復号化装置。
【請求項１０】
前記ストリーム分割部は、前記符号化ピクチャの水平方向に一列に配列された複数のマクロブロックからなるマクロブロックラインを少なくとも１つ含む単位を前記構成単位として扱い、前記符号化ピクチャを複数の前記構成単位に分割する、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１１】
前記Ｎ個の復号化部は、第１および第２の復号化部を含み、
前記第１の復号化部が、前記Ｎ個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記Ｎ個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が前記符号化ピクチャ内で互いに隣接していた場合には、
前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、
前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１２】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１３】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１４】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
集積回路。
【手続補正書】
【提出日】平成22年6月2日(2010.6.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化された画像を復号化する画像復号化装置および画像復号化方法に関し、特に、復号化を並列に実行する画像復号化装置および画像復号化方法に関する。
【背景技術】
【０００２】
動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。
【０００３】
図２５は、符号化されるピクチャの構成を示す図である。
【０００４】
ピクチャは１６×１６画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位をマクロブロックライン（ＭＢライン）という。
【０００５】
図２６は、符号化ストリームの構成を示す図である。
【０００６】
符号化ストリームは、階層化されており、図２６の（ａ）に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット（ＳＰＳ）が含まれる。また、その符号化されたピクチャは、図２６の（ｂ）に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図２６の（ｃ）に示すように、ヘッダと、複数のマクロブロック（ＭＢ）とを含んで構成されている。なお、図２６の（ｂ）に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット（ＰＰＳ）が含まれる。
【０００７】
図２７は、従来の画像復号化装置の構成を示す図である。
【０００８】
画像復号化装置２００は、メモリ２１０およびデコードエンジン２２０を備えている。メモリ２１０は、符号化ストリームを記憶するための領域を有するストリームバッファ２１１と、デコードエンジン２２０から出力される復号画像データを記憶するための領域を有するフレームメモリ２１２とを備えている。画像復号化装置２００は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ２１１に格納する。
【０００９】
デコードエンジン２２０は、そのストリームバッファ２１１から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ２１２に格納する。また、デコードエンジン２２０は、復号化するときには、フレームメモリ２１２に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。
【００１０】
そして、フレームメモリ２１２に格納された復号画像データは、表示順に表示装置に出力されて表示される。
【００１１】
図２８は、デコードエンジン２２０の構成を示す図である。
【００１２】
デコードエンジン２２０は、エントロピー復号部２２１、逆変換部２２２、加算器２２３、デブロッキングフィルタ２２４、動き補償部２２５、重み付き予測部２２６、画面内予測部２２７、およびスイッチ２２８を備えている。 
【００１３】
エントロピー復号部２２１は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部２２２に出力する。
【００１４】
逆変換部２２２は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。
【００１５】
加算器２２３は、逆変換部２２２から出力された差分画像データと、重み付き予測部２２６または画面内予測部２２７からスイッチ２２８を介して出力された予測画像データとを加算することにより復号画像データを生成する。
【００１６】
デブロッキングフィルタ２２４は、加算器２２３によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ２１２に格納する。
【００１７】
動き補償部２２５は、フレームメモリ２１２に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部２２６に出力する。
【００１８】
重み付き予測部２２６は、動き補償部２２５から出力された予測画像データに重みを付けてスイッチ２２８に出力する。
【００１９】
画面内予測部２２７は画面内予測を行う。つまり、画面内予測部２２７は、加算器２２３によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ２２８に出力する。
【００２０】
スイッチ２２８は、逆変換部２２２から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部２２７から出力される予測画像データを加算器２２３に出力する。また、スイッチ２２８は、逆変換部２２２から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部２２６から出力される予測画像データを加算器２２３に出力する。
【００２１】
ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、ＨＤ（High Definition）の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる４ｋ２ｋ解像度による動画像の実用化が検討されている。
【００２２】
図２９は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【００２３】
ＨＤの符号化ストリームは、地上デジタル放送やＢＳデジタル放送などで配信されており、解像度「１９２０×１０８０画素」のピクチャが３０フレーム／秒のフレームレートで復号化されて表示される。４ｋ２ｋの符号化ストリームは、２０１１年から高度ＢＳデジタル放送で試験的に配信される予定であり、解像度「３８４０×２１６０画素」のピクチャが６０フレーム／秒のフレームレートで復号化されて表示される。
【００２４】
つまり、４ｋ２ｋでは、ＨＤよりも縦および横のそれぞれで２倍の解像度を有し、且つ２倍のフレームレートを有する。
【００２５】
さらに、縦および横のそれぞれで４ｋ２ｋの２倍に高解像度化された８ｋ４ｋの画像（７６８０×４３２０画素）の符号化および復号化が検討されようとしている。 
【００２６】
このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図２７に示す画像復号化装置２００のデコードエンジン２２０は、４ｋ２ｋの符号化ストリームを復号化する場合には、現実的には困難な１ＧＨｚ以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。
【００２７】
図３０は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。
【００２８】
画像復号化装置３００は、メモリ２１０およびデコーダ３２０を備えている。デコーダ３２０は、図２７および図２８に示すデコードエンジン２２０と同様の機能を有するデコードエンジン３２１をＮ個（例えばＮ＝４）備えている。Ｎ個のデコードエンジン３２１（第１デコードエンジン３２１〜第Ｎデコードエンジン３２１）のそれぞれは、ストリームバッファ２１１に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ２１２に出力する。
【００２９】
図３１Ａおよび図３１Ｂは、復号化の並列処理の一例を説明するための説明図である。
【００３０】
例えば、画像復号化装置３００は、４つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ２１１に格納する。これらの４つの領域符号化ストリームのそれぞれは、独立したストリームであり、図３１Ａに示すように、一つの画面が４等分されたうちの１つの領域の動画像を示すストリームである。画像復号化装置３００の４つのデコードエンジン３２１（例えばＮ＝４）はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ２１１から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。
【００３１】
または、画像復号化装置３００は、４つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ２１１に格納する。４つのスライスは、図３１Ｂに示すように、ピクチャを縦方向に４等分することによって生成されている。画像復号化装置３００の４つのデコードエンジン３２１（例えばＮ＝４）はそれぞれ、自らが処理すべきスライスをストリームバッファ２１１から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。
【００３２】
しかしながら、図３１Ａに示すように、１つの符号化ストリームを４つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。
【００３３】
また、図３１Ｂに示すように、１つのピクチャを４等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。
【００３４】
具体的には、動画像の符号化および復号化の規格であるＭＰＥＧ−２（Moving Picture Experts Group phase 2）では、ＭＢラインの境界で必ずスライスが分離されている。また、Ｈ．２６４／ＡＶＣでは、ピクチャに設定されるスライスの大きさや位置は任意であり、１ピクチャに１スライスしか設定されない場合もある。したがって、図３１Ｂに示すように、スライスの位置および大きさを一義的に設定してしまうことは、ＭＰＥＧ−２およびＨ．２６４／ＡＶＣにとってシステム全体の変更が必要となり、その負担は膨大である。
【００３５】
そこで、ＭＰＥＧ−２やＨ．２６４／ＡＶＣの運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。
【００３６】
例えば、特許文献１および特許文献２の画像復号化装置は、ＭＰＥＧ−２により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。
【００３７】
また、特許文献３の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームのピクチャをＭＢラインごとに分離し、各ＭＢラインの復号化処理を並列に実行する。
【００３８】
図３２は、特許文献３の画像復号化装置による復号化処理を説明するための説明図である。
【００３９】
画像復号化装置の第１デコードエンジンは、ピクチャにある０行目のＭＢラインを復号化し、２番目のデコードエンジンは、ピクチャにある１行目のＭＢラインを復号化し、３番目のデコードエンジンは、ピクチャにある２行目のＭＢラインを復号化する。
【００４０】
また、各デコードエンジンは、ＭＢラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。
【００４１】
特許文献４の画像復号化装置は、Ｈ．２６４／ＡＶＣにより生成された符号化ストリームを取得すると、その符号化ストリームのＭＢラインの境界に行ヘッダを挿入し、各ＭＢラインの復号化処理を並列に実行する。この画像復号化装置のデコードエンジンのそれぞれは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出し、そのＭＢラインの復号化を実行する。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開平６−２２５２７８号公報
【特許文献２】特開平８−１３０７４５号公報
【特許文献３】特開２００６−１２９２８４号公報
【特許文献４】米国特許第７３０５０３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００４３】
しかしながら、上記特許文献１〜４の画像復号化装置では、復号化の並列処理を適切に実行できないという問題や、装置の構成が複雑になってしまうという問題がある。
【００４４】
つまり、上記特許文献１および特許文献２の画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、Ｈ．２６４／ＡＶＣの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、１ピクチャが１スライスで構成されている場合には、そのピクチャを分割することができず、１つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。
【００４５】
また、上記特許文献３および特許文献４の画像復号化装置では、Ｈ．２６４／ＡＶＣのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。
【００４６】
そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
上記目的を達成するために、本発明に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、前記符号化ストリームを取得する取得部と、前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、前記ストリーム分割部は、前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、ことを特徴とする。
【００４８】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【００４９】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。
【００５０】
そこで本発明では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個の復号化部のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【００５１】
例えば、前記ストリーム分割部は、前記スライス部分群の先頭が、前記符号化ピクチャに含まれるスライスの先頭でない場合には、前記スライス部分群の先頭に、前記スライスの復号化に必要な補助情報を挿入することにより、前記スライス部分群を新たなスライスとして再構成する。
【００５２】
これにより、分割ストリームに含まれるスライス部分群の先頭には補助情報があるため、その分割ストリームを復号化する復号化部は、その補助情報を取得して利用することにより、特別な処理を行うことなく、そのスライス部分群を適切に復号化することができる。
【００５３】
また、前記ストリーム分割部は、前記符号化ピクチャに含まれるスライスの先頭にある、前記スライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する複製部と、前記複製補助情報を前記補助情報として前記スライス部分群の先頭に挿入する挿入部とを備え、前記画像復号化装置は、さらに、前記複製補助情報に含まれるアドレス情報を、前記スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新するアドレス更新部を備える、ことを特徴としてもよい。
【００５４】
これにより、スライス部分群の先頭のマクロブロックのアドレスを示すアドレス情報が、そのスライス部分群の補助情報に含まれているため、復号化部は、特別な処理を行うことなく、そのアドレス情報を読み出すことによって、そのスライス部分群の先頭のマクロブロックのアドレスを適切に把握することができる。
【００５５】
また、前記符号化ストリームに含まれるスライスの先頭には、前記スライスの復号化に必要な補助情報があり、前記ストリーム分割部は、前記Ｎ個の復号化部にそれぞれ対応付けられたＮ個のバッファと、前記符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、前記Ｎ個のバッファのうちの何れかに出力する分割出力部と、前記符号化ピクチャに含まれるデータを順次取得し、前記データが前記補助情報であるときに、前記補助情報を前記Ｎ個のバッファに出力する補助情報処理部とを備え、前記Ｎ個のバッファのそれぞれは、前記分割出力部から出力された前記構成単位に含まれるデータを取得するごとに、前記データを出力し、前記補助情報処理部から出力された前記補助情報を取得したときには、前記補助情報を保持し、前記補助情報の直後に前記構成単位のデータを取得したときにのみ、保持している前記補助情報を前記データの前に出力し、前記補助情報の直後に新たな補助情報を取得したときには、前記補助情報を前記新たな補助情報に上書きし、前記Ｎ個の復号化部のそれぞれは、当該復号化部に対応付けられたバッファから出力される前記補助情報および前記構成単位のデータからなる前記分割ストリームを復号化する、ことを特徴としてもよい。
【００５６】
これにより、補助情報処理部が、符号化ストリームから得られる補助情報をＮ個のバッファに単純に出力すれば、Ｎ個のバッファに出力された補助情報のうち、Ｎ個の分割ストリームに必要とされる補助情報だけを、そのＮ個のバッファから適切なタイミングで出力させることができる。その結果、簡単な構成で、符号化ピクチャのスライスの先頭でなかったスライス部分群の先頭に、補助情報を適切に挿入することができる。
【００５７】
また、前記ストリーム分割部は、前記スライス部分群の終端が、前記符号化ピクチャに含まれるスライスの終端でない場合には、前記スライス部分群の終端であることを示す終端情報を、当該スライス部分群の終端に設定することにより、前記スライス部分群を新たなスライスとして再構成する。
【００５８】
これにより、分割ストリームに含まれるスライス部分群の終端には終端情報があるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、そのスライス部分群の終端を適切に認識することができる。
【００５９】
また、前記ストリーム分割部は、さらに、分割すべきか否かを示すモード情報を取得し、前記モード情報が分割すべきでないことを示す場合には、前記取得部によって取得される複数の符号化ストリームのそれぞれを、前記Ｎ個の復号化部のうちの何れかに出力し、前記Ｎ個の復号化部は、さらに、前記ストリーム分割部から出力された複数の符号化ストリームを取得したときには、前記複数の符号化ストリームを並列に復号化する、ことを特徴としてもよい。
【００６０】
これにより、１つの符号化ストリームを複数の分割ストリームに分割してそれらの分割ストリームを並列に復号化する処理と、複数の符号化ストリームを並列に復号化する処理とが、モード情報に応じて切り替えられる。その結果、例えば、４ｋ２ｋの高解像度の画像をリアルタイムで再生したり、複数のチャンネルのＨＤの画像を同時に再生することができる。
【００６１】
なお、本発明は、このような画像復号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。 
【発明の効果】
【００６２】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという作用効果を奏する。
【図面の簡単な説明】
【００６３】
【図１】図１は、本発明の実施の形態における画像復号化装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、同上のピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【図２Ｂ】図２Ｂは、同上のピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【図３】図３は、同上のスライスヘッダの挿入処理を説明するための説明図である。
【図４】図４は、同上のＭＢアドレス情報の更新処理を説明するための説明図である。
【図５】図５は、同上のスライス終端処理を説明するための説明図である。
【図６】図６は、同上の画像復号化装置の全体的な動きを示すフローチャートである。
【図７】図７は、同上のストリーム分割部の構成を示すブロック図である。
【図８】図８は、同上のスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。
【図９】図９は、同上のスライスヘッダ挿入部の構成を示すブロック図である。
【図１０】図１０は、同上の分割ストリームバッファの第１領域〜第４領域に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【図１１Ａ】図１１Ａは、同上のスライス終端情報が設定される位置を示す図である。
【図１１Ｂ】図１１Ｂは、同上のスライス終端情報が設定される他の位置を示す図である。
【図１２】図１２は、同上の分割点検出部の動作を示すフローチャートである。
【図１３Ａ】図１３Ａは、同上の高解像度デコードを説明するための説明図である。
【図１３Ｂ】図１３Ｂは、同上の高速デコードを説明するための説明図である。
【図１３Ｃ】図１３Ｃは、同上の複数チャンネルデコードを説明するための説明図である。
【図１４】図１４は、同上の変形例１に係るデコードエンジンがＭＢアドレス情報を変更するためのコードを示す図である。
【図１５】図１５は、同上の変形例２に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【図１６】図１６は、同上の変形例２に係るストリーム分割部および４つのデコードエンジンの動作を説明するための説明図である。
【図１７】図１７は、同上の変形例３に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【図１８】図１８は、同上の変形例３に係るバッファのポインタを示す図である。
【図１９】図１９は、同上の変形例３に係るストリーム分割部の動作を説明するための説明図である。
【図２０】図２０は、本発明の画像復号化装置の適用例を示す図である。
【図２１】図２１は、本発明の画像復号化装置の最小構成を示すブロック図である。
【図２２】図２２は、本発明のストリーム分割部の構成を示すブロック図である。
【図２３】図２３は、本発明の画像復号化装置の他の最小構成を示すブロック図である。
【図２４】図２４は、本発明のストリーム分割部の他の構成を示すブロック図である。
【図２５】図２５は、符号化されるピクチャの構成を示す図である。
【図２６】図２６は、符号化ストリームの構成を示す図である。
【図２７】図２７は、従来の画像復号化装置の構成を示す図である。
【図２８】図２８は、従来のデコードエンジンの構成を示す図である。
【図２９】図２９は、ＨＤおよび４ｋ２ｋを説明するための説明図である。
【図３０】図３０は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。
【図３１Ａ】図３１Ａは、従来の復号化並列処理の一例を説明するための説明図である。
【図３１Ｂ】図３１Ｂは、従来の復号化並列処理の他の例を説明するための説明図である。
【図３２】図３２は、従来の画像復号化装置による復号化処理を説明するための説明図である。
【発明を実施するための形態】
【００６４】
以下、本発明の実施の形態における画像復号化装置について図面を参照しながら説明する。
【００６５】
図１は、本発明の実施の形態における画像復号化装置の構成を示すブロック図である。
【００６６】
本発明の実施の形態における画像復号化装置１００は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ１１０とメモリ１５０とを備えている。
【００６７】
メモリ１５０は、デコーダ１１０に入力されるデータ、デコーダ１１０により中間的に生成されたデータ、およびデコーダ１１０により最終的に生成されて出力されるデータを記憶するための領域を有する。
【００６８】
具体的には、メモリ１５０は、ストリームバッファ１５１と、分割ストリームバッファ１５２と、フレームメモリ１５３とを備えている。
【００６９】
ストリームバッファ１５１には、画像符号化装置により生成されて送信された符号化ストリームが格納される。つまり、本実施の形態では、このストリームバッファ１５１が符号化ストリームを取得する取得部として構成されている。分割ストリームバッファ１５２には、デコーダ１１０により生成されるＮ個の分割ストリームが、上述の中間的に生成されたデータとして格納される。フレームメモリ１５３には、Ｎ個のデコードエンジン（復号化部）１２０によって生成されたＮ個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ１５３に格納され、表示装置に読み込まれて動画像として表示される。
【００７０】
デコーダ１１０は、メモリ１５０のストリームバッファ１５１に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ１５０のフレームメモリ１５３に格納する。また、このデコーダ１１０は、ストリーム分割部１３０と、Ｎ個のデコードエンジン（第１デコードエンジン〜第Ｎデコードエンジン）１２０とを備えている。
【００７１】
なお、本実施の形態におけるデコードエンジン１２０は、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有する。
【００７２】
ストリーム分割部１３０は、後述するモード情報を取得し、そのモード情報に応じて符号化ストリームをＮ個の分割ストリーム（第１分割ストリーム〜第Ｎ分割ストリーム）に分割する。つまり、本実施の形態におけるストリーム分割部１３０は、符号化ストリームに含まれる符号化されたピクチャごとに、そのピクチャを複数のＭＢラインに分割する。そして、ストリーム分割部１３０は、それらの複数のＭＢラインのそれぞれを、生成対象であるＮ個の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。
【００７３】
なお、ＭＢラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を１つ有する構成単位である。また、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されていない場合には、ピクチャを複数のＭＢラインに分割するが、ピクチャがＭＢＡＦＦで構成されている場合には、２つのＭＢラインを１つの構成単位（以下、ＭＢラインペアという）として扱い、ピクチャを複数のＭＢラインペアに分割する。言い換えれば、ストリーム分割部１３０は、ピクチャがＭＢＡＦＦで構成されている場合には、ピクチャを複数のＭＢラインに分割し、ＭＢラインペアに属する２つのＭＢラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがＭＢＡＦＦで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがＭＢＡＦＦで構成されていない場合と、ＭＢＡＦＦで構成されている場合とで異なる処理が必要なときには、その都度、ＭＢＡＦＦに対して特有の処理を説明する。また、ＭＢＡＦＦに対してその特有な処理などが必要とされない場合には、以下の説明において、ＭＢラインをＭＢラインペアに置き換えることによって、その説明を、ピクチャがＭＢＡＦＦで構成されている場合における本発明の説明に置き換えることができる。
【００７４】
ストリーム分割部１３０は、ピクチャを複数のＭＢラインに分割する際に、符号化ストリーム中のＭＢラインの直前、または、そのＭＢラインに属する２つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのＭＢラインに付随させて、分割ストリームの一部に割り当てる。
【００７５】
このようなストリーム分割部１３０によるＭＢラインごとの分割によって、ピクチャに含まれる、複数のＭＢラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部１３０は、Ｎ個の分割ストリームに分割するときには、Ｎ個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
【００７６】
Ｎ個のデコードエンジン１２０は、それぞれ自らが処理すべき分割ストリームを分割ストリームバッファ１５２から読み出し、読み出した分割ストリームを並列に復号化することによりＮ個の分割復号画像データを生成する。例えば、第１デコードエンジン１２０は第１分割ストリームを分割ストリームバッファ１５２から読み出し、第２デコードエンジン１２０は第２分割ストリームを分割ストリームバッファ１５２から読み出し、第３デコードエンジン１２０は第３分割ストリームを分割ストリームバッファ１５２から読み出し、第４デコードエンジン１２０は第４分割ストリームを分割ストリームバッファ１５２から読み出す。そして、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ第１分割ストリーム〜第４分割ストリームを並列に復号化する。
【００７７】
また、Ｎ個のデコードエンジン１２０は、分割ストリームを復号化するときには、フレームメモリ１５３に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
【００７８】
さらに、Ｎ個のデコードエンジン１２０のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン１２０から、それらの復号化されたマクロブロックの情報を隣接ＭＢ情報として取得する。その隣接ＭＢ情報を取得したデコードエンジン１２０は、その隣接ＭＢ情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン１２０は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接ＭＢ情報として取得して、上述の処理を行う。
【００７９】
なお、本実施の形態では、説明を簡単にするために、以下、ＮをＮ＝４として説明する。また、本実施の形態では、Ｎ（Ｎ＝４）個のデコードエンジン１２０はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接ＭＢ情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第１デコードエンジン１２０〜第４デコードエンジン１２０はそれぞれ、各ＭＢラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
【００８０】
図２Ａは、ピクチャがＭＢＡＦＦで構成されていない場合の復号化の順序を示す図である。
【００８１】
ピクチャがＭＢＡＦＦで構成されていない場合、第１デコードエンジン１２０は第０ＭＢラインを復号化し、第２デコードエンジン１２０が第１ＭＢラインを復号化し、第３デコードエンジン１２０が第２ＭＢラインを復号化し、第４デコードエンジン１２０が第３ＭＢラインを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインは、ピクチャの上端からｋ番目にあるＭＢラインを示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にあるＭＢラインである。
【００８２】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインの復号化を開始する。次に、第０ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインの左端のマクロブロックの復号化を開始する。そして、第１ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインの左端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインの左端にある２つのマクロブロックの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインの左端のマクロブロックの復号化を開始する。
【００８３】
したがって、第（ｋ＋１）ＭＢラインは、第ｋＭＢラインに比べて、２マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
【００８４】
図２Ｂは、ピクチャがＭＢＡＦＦで構成されている場合の復号化の順序を示す図である。
【００８５】
ピクチャがＭＢＡＦＦで構成されている場合、ＭＢラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列（ＭＢライン）を２つ有する構成単位である。ＭＢラインペアは、上下にある２つのマクロブロック（マクロブロックペア）ごとにフィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがＭＢＡＦＦで構成されていない場合と同様に、第１デコードエンジン１２０は第０ＭＢラインペアを復号化し、第２デコードエンジン１２０が第１ＭＢラインペアを復号化し、第３デコードエンジン１２０が第２ＭＢラインペアを復号化し、第４デコードエンジン１２０が第３ＭＢラインペアを復号化する。なお、第ｋ（ｋは０以上の整数）ＭＢラインペアは、ピクチャの上端からｋ番目にある２つのＭＢラインからなる構成単位を示し、例えば、第０ＭＢラインは、ピクチャの上端から０番目にある２つのＭＢラインからなる構成単位である。
【００８６】
ここで、ピクチャの復号化が開始されるときには、まず、第１デコードエンジン１２０が第０ＭＢラインペアの復号化を開始する。次に、第０ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第２デコードエンジン１２０が第１ＭＢラインペアの左上端のマクロブロックの復号化を開始する。そして、第１ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第３デコードエンジン１２０が第２ＭＢラインペアの左上端のマクロブロックの復号化を開始する。同様に、第２ＭＢラインペアの左端にある２つのマクロブロックペアの復号化が完了すると、第４デコードエンジン１２０が第３ＭＢラインペアの左上端のマクロブロックの復号化を開始する。
【００８７】
したがって、第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインペアに比べて、２マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
【００８８】
なお、ピクチャがＭＢＡＦＦで構成されていない場合、および、ピクチャがＭＢＡＦＦで構成されている場合のそれぞれにおいて、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアは、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、少なくとも２マクロブロック分または２マクロブロックペア分だけ遅れて復号化されればよい。つまり、３マクロブロック分または３マクロブロックペア分以上遅れて復号化されてもよい。例えば、第（ｋ＋１）ＭＢラインまたは第（ｋ＋１）ＭＢラインペアが、第ｋＭＢラインまたは第ｋＭＢラインペアに比べて、２マクロブロック分または２マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、３マクロブロック分または３マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
【００８９】
このような本実施の形態における画像復号化装置１００の特徴は、ストリーム分割部１３０による分割によって生成された、スライスの１つまたは複数の部分（スライス部分）からなるスライス部分群を１つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、およびＭＢアドレス情報の更新処理を含む。
【００９０】
図３は、スライスヘッダの挿入処理を説明するための説明図である。
【００９１】
例えば、ストリーム分割部１３０は、図３の（ａ）に示すピクチャｐ１を分割する。
【００９２】
ピクチャｐ１は、スライスＡ、スライスＢおよびスライスＣから構成されているとともに、ＭＢラインＬ１〜Ｌ１２から構成されている。
【００９３】
スライスＡは、ＭＢラインＬ１〜Ｌ７にわたって配置され、スライスヘッダｈａと、そのスライスヘッダｈａから連続して配置されている複数のマクロブロックｍｂａとを有する。スライスＢは、ＭＢラインＬ７〜Ｌ８にわたって配置され、スライスヘッダｈｂと、そのスライスヘッダｈｂから連続して配置されている複数のマクロブロックｍｂｂとを有する。スライスＣは、ＭＢラインＬ９〜Ｌ１２にわたって配置され、スライスヘッダｈｃと、そのスライスヘッダｈｃから連続して配置されている複数のマクロブロックｍｂｃとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
【００９４】
ストリーム分割部１３０は、図３の（ｂ）に示すように、上述のピクチャｐ１をＭＢラインごとに分割する。そして、ストリーム分割部１３０は、ＭＢラインＬ１〜Ｌ１２のそれぞれを先頭から順に、第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部１３０は、ＭＢラインＬ１を第１分割ストリームの一部に割り当て、ＭＢラインＬ２を第２分割ストリームの一部に割り当て、ＭＢラインＬ３を第３分割ストリームの一部に割り当て、ＭＢラインＬ４を第４分割ストリームの一部に割り当てる。そして、ストリーム分割部１３０は、第４分割ストリームへのＭＢラインの割り当てが終了すると、第１分割ストリームへのＭＢラインの割り当てを繰り返す。つまり、ストリーム分割部１３０は、ＭＢラインＬ５を第１分割ストリームの一部に割り当て、ＭＢラインＬ６を第２分割ストリームの一部に割り当て、ＭＢラインＬ７を第３分割ストリームの一部に割り当て、ＭＢラインＬ８を第４分割ストリームの一部に割り当てる。
【００９５】
その結果、第１分割ストリームは連続するＭＢラインＬ１，Ｌ５，Ｌ９を含み、第２分割ストリームは連続するＭＢラインＬ２，Ｌ６，Ｌ１０を含み、第３分割ストリームは連続するＭＢラインＬ３，Ｌ７，Ｌ１１を含み、第４分割ストリームは連続するＭＢラインＬ４，Ｌ８，Ｌ１２を含む。
【００９６】
なお、ＭＢラインＬ１〜Ｌ６と、ＭＢラインＬ７の先頭側の６マクロブロックからなる集合と、ＭＢラインＬ７の終端側の１０マクロブロックからなる集合と、ＭＢラインＬ８〜Ｌ１２とは、それぞれスライスＡ〜Ｃの一部を構成するスライス部分である。そして、第１分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ１，Ｌ５からスライス部分群（第１分割ストリームにおけるスライスＡ）が構成される。また、第２分割ストリームでは、スライスＡのスライス部分であるＭＢラインＬ２，Ｌ６からスライス部分群（第２分割ストリームにおけるスライスＡ）が構成される。
【００９７】
ここで、単純にＭＢラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン１２０に認識させることができない場合がある。
【００９８】
例えば、第１分割ストリームには、上述のように連続するＭＢラインＬ１，Ｌ５，Ｌ９が含まれている。この場合、ＭＢラインＬ１，Ｌ５はスライスＡとして認識されるべきであり、ＭＢラインＬ９はスライスＣとして認識されるべきである。そのためには、第１分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ１の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第１分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ９の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。図３に示す例では、スライスヘッダｈａ，ｈｃがそれぞれＭＢラインＬ１，Ｌ９の先頭に予め配されているため、ストリーム分割部１３０はＭＢラインＬ１，Ｌ５，Ｌ９をスライスヘッダｈａ，ｈｃとともに第１分割ストリームに割り当てればよい。
【００９９】
一方、第２分割ストリームには、上述のように連続するＭＢラインＬ２，Ｌ６，Ｌ１０が含まれている。この場合、ＭＢラインＬ２，Ｌ６はスライスＡとして認識されるべきであり、ＭＢラインＬ１０はスライスＣとして認識されるべきである。そのためには、第２分割ストリームにおいてスライスＡの先頭となるべきＭＢラインＬ２の先頭にスライスＡのスライスヘッダｈａが配置されている必要があり、第２分割ストリームにおいてスライスＣの先頭となるべきＭＢラインＬ１０の先頭にスライスＣのスライスヘッダｈｃが配置されている必要がある。
【０１００】
そこで、本実施の形態におけるストリーム分割部１３０は、ＭＢラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダｈａ，ｈｂ，ｈｃを複製することにより複製スライスヘッダｈａ’，ｈｂ’，ｈｃ’を生成し、それらを分割ストリームに挿入する。
【０１０１】
例えば、ストリーム分割部１３０は、スライスヘッダｈａを複製することにより３つの複製スライスヘッダｈａ’を生成し、その複製スライスヘッダｈａ’をＭＢラインＬ２，Ｌ３，Ｌ４の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｂを複製することにより１つの複製スライスヘッダｈｂ’を生成し、その複製スライスヘッダｈｂ’をＭＢラインＬ８の直前に挿入する。さらに、ストリーム分割部１３０は、スライスヘッダｈｃを複製することにより３つの複製スライスヘッダｈｃ’を生成し、その複製スライスヘッダｈｃ’をＭＢラインＬ１０，Ｌ１１，Ｌ１２の直前に挿入する。
【０１０２】
その結果、第２分割ストリームでは、スライスＡの先頭となるＭＢラインＬ２の直前に、スライスＡのスライスヘッダｈａの複製である複製スライスヘッダｈａ’が配置され、スライスＣの先頭となるＭＢラインＬ１０の直前に、スライスＣのスライスヘッダｈｃの複製である複製スライスヘッダｈｃ’が配置される。これにより、第２デコードエンジン１２０は、複製スライスヘッダｈａ’，ｈｃ’から、第２分割ストリームのスライスＡおよびスライスＣのそれぞれの復号化に必要なパラメータを得ることができる。
【０１０３】
次に、ＭＢアドレス情報の更新処理について説明する。
【０１０４】
ストリーム分割部１３０は、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１０５】
つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのＭＢアドレス情報“first_mb_in_slice”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのＭＢアドレス情報と同一のＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
【０１０６】
例えば、ピクチャｐ１のスライスＡのスライスヘッダｈａには、そのスライスＡの先頭マクロブロック（ＭＢラインＬ１の先頭マクロブロック）のピクチャｐ１内におけるアドレスを示すＭＢアドレス情報が含まれている。このようなスライスヘッダｈａが複製されることによって生成された複製スライスヘッダｈａ’には、当初、ＭＢラインＬ１の先頭マクロブロックのピクチャｐ１内におけるアドレスを特定するためのＭＢアドレス情報が含まれている。その結果、このような複製スライスヘッダｈａ’が、ＭＢラインＬ２の直前に挿入されれば、その複製スライスヘッダｈａ’のＭＢアドレス情報により特定されるアドレスは、第２分割ストリームにおいてその複製スライスヘッダｈａ’を有するスライスＡの先頭マクロブロック（ＭＢラインＬ２の先頭マクロブロック）のピクチャｐ１内におけるアドレスを指し示さず、ＭＢラインＬ１の先頭マクロブロックのアドレスを指し示している。 
【０１０７】
そこで、本実施の形態におけるストリーム分割部１３０は、上述のように、複製スライスヘッダに含まれているＭＢアドレス情報を更新する。
【０１０８】
図４は、ＭＢアドレス情報の更新処理を説明するための説明図である。
【０１０９】
ストリーム分割部１３０は、まず、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）から、ピクチャの水平方向のマクロブロックの数に関連する情報である“pic_width_in_mbs_minus1”を取得する。
【０１１０】
さらに、ストリーム分割部１３０は、複製元のスライスヘッダに含まれるＭＢアドレス情報“first_mb_in_slice”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
【０１１１】
次に、ストリーム分割部１３０は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のＭＢラインにあるかを示す値“mbposv”を算出する。なお、値“mbposv”は０以上の整数である。
【０１１２】
そして、ストリーム分割部１３０は、直前に複製スライスヘッダが挿入されるＭＢラインが、複製元のスライスヘッダが配置されているＭＢラインから見てｎ行離れているときには、複製スライスヘッダのＭＢアドレス情報を“first_mb_in_slice[n]”＝（“mbposv”＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により算出する。
【０１１３】
なお、ピクチャがＭＢＡＦＦ（マクロブロックアダプティブフレームフィールド）で構成されている場合には、ストリーム分割部１３０は、複製スライスヘッダのＭＢアドレス情報を“first_mb_in_slice[n]”＝（“mbposv”／２＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により算出する。
【０１１４】
ストリーム分割部１３０は、複製スライスヘッダに当初含まれているＭＢアドレス情報を、上述のように算出されたＭＢアドレス情報に更新する。これにより、複製スライスヘッダのＭＢアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
【０１１５】
次に、スライス終端処理について説明する。
【０１１６】
符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図３に示すように、単純に、ピクチャが複数のＭＢラインに分割され、その複数のＭＢラインがそれぞれ第１分割ストリーム〜第４分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン１２０に認識させることができない場合がある。
【０１１７】
そこで、本実施の形態におけるストリーム分割部１３０は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
【０１１８】
図５は、スライス終端処理を説明するための説明図である。
【０１１９】
例えば、図５の（ａ）に示すように、符号化ストリームのピクチャｐ１に含まれるスライスＣは、スライスヘッダｈｃと、ＭＢラインＬ９〜Ｌ１２と、スライス終端情報ｅｃとを含んでいる。
【０１２０】
ストリーム分割部１３０はピクチャｐ１をＭＢラインごとに分割する。その結果、図５の（ｂ）〜（ｅ）に示すように、ＭＢラインＬ９はスライスヘッダｈｃと共に第１分割ストリームに割り当てられ、ＭＢラインＬ１０は第２分割ストリームに割り当てられ、ＭＢラインＬ１１は第３分割ストリームに割り当てられ、ＭＢラインＬ１２は第４分割ストリームに割り当てられる。
【０１２１】
さらに、ストリーム分割部１３０は、上述のスライスヘッダの挿入処理により、スライスヘッダｈｃを複製して３つの複製スライスヘッダｈｃ’を生成し、それらの３つの複製スライスヘッダｈｃ’をそれぞれ、第２分割ストリーム〜第４分割ストリームのＭＢラインＬ１０，Ｌ１１，Ｌ１２の直前に挿入する。また、ストリーム分割部１３０は、上述のＭＢアドレス情報の更新処理により、挿入される複製スライスヘッダｈｃ’の位置に応じて、その複製スライスヘッダｈｃ’に含まれるＭＢアドレス情報を更新する。
【０１２２】
ここで、ストリーム分割部１３０は、スライス終端処理として、第１分割ストリームにおけるスライスＣ（ＭＢラインＬ９）の終端、第２分割ストリームにおけるスライスＣ（ＭＢラインＬ１０）の終端、第３分割ストリームにおけるスライスＣ（ＭＢラインＬ１１）の終端、および第４分割ストリームにおけるスライスＣ（ＭＢラインＬ１２）の終端を示すスライス終端情報ｅｃ’を生成する。そして、ストリーム分割部１３０は、その生成されたスライス終端情報ｅｃ’を、第１分割ストリーム〜第４分割ストリームのＭＢラインＬ９，Ｌ１０，Ｌ１１，Ｌ１２の直後に設定する。なお、ストリーム分割部１３０は、符号化ストリームをＭＢラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ｅｃを破棄している。また、スライス終端情報ｅｃとスライス終端情報ｅｃ’とが同一の情報であれば、最終的には、ＭＢラインＬ１２はスライス終端情報ｅｃ’（ｅｃ）と共に第４分割ストリームに割り当てられることになる。
【０１２３】
これにより、各デコードエンジン１２０は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
【０１２４】
図６は、本実施の形態における画像復号化装置１００の全体的な動きを示すフローチャートである。
【０１２５】
まず、画像復号化装置１００は、符号化ストリームを取得し（ステップＳ１０）、その符号化ストリームから処理対象となる符号化されたピクチャを特定する（ステップＳ１２）。さらに、画像復号化装置１００は、処理対象のピクチャを分割することにより１つのＭＢラインを抽出する（ステップＳ１４）。なお、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがあれば、そのＭＢラインはそのスライスヘッダと共に抽出される。
【０１２６】
次に、画像復号化装置１００は、ステップＳ１４の分割によって抽出された１つのＭＢラインを、生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる前に、そのＭＢラインの直前にスライスヘッダを挿入する必要があるか否か、および、既に割り当てられているＭＢラインの直後にスライス終端情報を設定する必要があるか否かを判別する（ステップＳ１６）。
【０１２７】
画像復号化装置１００は、ステップＳ１６で、スライスヘッダを挿入する必要があると判別したとき、スライス終端情報を設定する必要があると判別したとき、または、その挿入および設定の両方を行う必要があると判別したときには（ステップＳ１６のＹｅｓ）、スライス再構成処理を実行する（ステップＳ１８）。つまり、画像復号化装置１００は、上述のスライスヘッダの挿入処理およびスライス終端処理の少なくとも一方を実行する。また、画像復号化装置１００は、スライスヘッダの挿入処理を実行するときには、ＭＢアドレス情報の更新処理も実行する。
【０１２８】
そして、画像復号化装置１００は、そのＭＢラインを生成対象となる第１〜第Ｎ分割ストリームの何れかに割り当てる（ステップＳ２０）。このステップＳ２０が繰り返し行われることによって、第１〜第Ｎ分割ストリームのそれぞれにＭＢラインが順次割り当てられ、第１〜第Ｎ分割ストリームが生成される。
【０１２９】
画像復号化装置１００は、第１〜第Ｎ分割ストリームのそれぞれに割り当てられたＭＢラインを並列に復号化する（ステップＳ２２）。なお、第１〜第Ｎ分割ストリームのうちの何れかの分割ストリームにＭＢラインが割り当てられていない場合には、画像復号化装置１００は、そのＭＢラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
【０１３０】
次に、画像復号化装置１００は、ピクチャに含まれる全てのＭＢラインを割り当てたか否かを判別し（ステップＳ２４）、割り当てていないと判別したときには（ステップＳ２４のＮｏ）、ステップＳ１４からの処理を繰り返し実行する。一方、画像復号化装置１００は、全てのＭＢラインを割り当てたと判別したときには（ステップＳ２４のＹｅｓ）、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する（ステップＳ２６）。ここで、画像復号化装置１００は、全てのピクチャを分割していないと判別したときには（ステップＳ２６のＮｏ）、ステップＳ１２からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには（ステップＳ２６のＹｅｓ）、復号化処理を終了する。
【０１３１】
なお、図６のフローチャートに示される処理動作は、本発明の画像復号化装置１００の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
【０１３２】
例えば、図６のフローチャートでは、画像復号化装置１００のストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン１２０に複製スライスヘッダを直接渡してもよい。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、ＭＢアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン１２０が、分割ストリームに含まれている複製スライスヘッダのＭＢアドレス情報を更新する。また、図６のフローチャートでは、ストリーム分割部１３０が、ステップＳ１８のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップＳ２０でＭＢラインが第１〜第Ｎ分割ストリームの何れかの分割ストリームに割り当てられた後であって、次の新たなＭＢラインがストリーム分割部１３０からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているＭＢラインに対してスライス終端処理が行われてもよい。
【０１３３】
ここで、ストリーム分割部１３０の構成および動作について詳細に説明する。
【０１３４】
図７は、ストリーム分割部１３０の構成を示すブロック図である。
【０１３５】
ストリーム分割部１３０は、スタートコード検出部１３１、ＥＰＢ除去部１３２ａ、ＥＰＢ挿入部１３２ｂ、スライスヘッダ挿入部１３３、およびスライスデータ処理部１３４ａ，１３４ｂを備えている。
【０１３６】
スタートコード検出部１３１は、ストリームバッファ１５１から符号化ストリームを読み出して、ＮＡＬユニットごとにスタートコードを検出する。
【０１３７】
ＥＰＢ除去部１３２ａは、ＥＰＢ（エミュレーション防止バイト）を符号化ストリームから除去し、ＥＰＢが除去された符号化ストリームをスライスデータ処理部１３４ａ，１３４ｂに出力する。さらに、ＥＰＢ除去部１３２ａは、符号化ストリームに含まれているＳＰＳ（シーケンスパラメータセット）およびＰＰＳ（ピクチャパラメータセット）などのスライスより上層の情報を取得し、その情報が４つの分割ストリームのそれぞれに挿入されるように、その情報をＥＰＢ挿入部１３２ｂに出力する。
【０１３８】
ＥＰＢ挿入部１３２ｂは、符号化ストリームが分割されることによって生成される分割ストリームに、ＥＰＢ除去部１３２ａによって除去されたＥＰＢを挿入する。
【０１３９】
スライスヘッダ挿入部１３３は、上述のスライスヘッダの挿入処理およびＭＢアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部１３３は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４ａ，１３４ｂに送り、スライスデータ処理部１３４ａ，１３４ｂから終端処理完了通知Ｍ２を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部１３３は、スライスヘッダの挿入処理によって、ＭＢラインの直前にあるスライスヘッダと、ＭＢアドレス情報が更新された複製スライスヘッダとをＥＰＢ挿入部１３２ｂに出力する。 
【０１４０】
スライスデータ処理部１３４ａ，１３４ｂは、ＥＰＢが除去された符号化ストリームを分割することにより４つの分割ストリームを生成し、その４つの分割ストリームを出力する。なお、スライスデータ処理部１３４ａ，１３４ｂから出力される分割ストリームには、上述のＭＢラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部１３４ａは、ＣＡＶＬＤ（Context Adaptive Variable Length Decoding）に応じた処理を実行し、ＣＡＶＬＣ（Context-Adaptive Variable Length Coding）によって生成された符号化ストリームを４つの分割ストリームに分割する。また、スライスデータ処理部１３４ｂは、ＣＡＢＡＤ（Context-Adaptive Binary Arithmetic Decoding）に応じた処理を実行し、ＣＡＢＡＣ（Context-Adaptive Binary Arithmetic Coding）によって生成された符号化ストリームを４つの分割ストリームに分割する。
【０１４１】
スライスデータ処理部１３４ａは、スライスデータ層デコード部１３５ａ、マクロブロック層デコード部１３６ａ、スキップラン分割部１３７ａ、ＱＰ計算部１３８ａおよび分割点検出部１３９ａを備えている。
【０１４２】
スライスデータ層デコード部１３５ａは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部１３６ａは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部１３５ａおよびマクロブロック層デコード部１３６ａは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報（具体的には、ＣＡＶＬＣのｎＣ（non-zero coefficient）など）のみを復号化してもよい。
【０１４３】
スキップラン分割部１３７ａは、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報“mb_skip_run”を修正し、修正されたＭＢスキップラン情報を再び符号化し、符号化されたＭＢスキップラン情報を出力する。ここで、ＭＢスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
【０１４４】
例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のＭＢラインに跨って存在する場合、スライスデータ層デコード部１３５ａによって復号化されたＭＢスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがＭＢラインごとに分割され、それらのＭＢラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。
【０１４５】
そこで、スキップラン分割部１３７ａは、上述の集合の一部を含むＭＢラインごとに、そのＭＢラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン分割部１３７ａは、ＭＢラインごとに、ＭＢスキップラン情報により示される数が、そのＭＢラインに対して特定された数となるように、ＭＢスキップラン情報を修正する。
【０１４６】
ＱＰ計算部１３８ａは、マクロブロックごとに、マクロブロック層デコード部１３６ａによって復号化された、そのマクロブロックのＱＰ変化量“mb_qp_delta”をＱＰ値（量子化パラメータの値）に変換し、そのＱＰ値を出力する。なお、ＱＰ変化量は、マクロブロック（対象マクロブロック）に含まれており、その対象マクロブロックのＱＰ値と、その対象マクロブロックの左隣のマクロブロック（左隣接マクロブロック）のＱＰ値との差分を示す。
【０１４７】
つまり、ピクチャがＭＢラインごとに分割され、ＭＢラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、ＭＢラインの境界を挟んで互いに隣接していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに隣接していた一方のマクロブロック（対象マクロブロック）を含む分割ストリームを復号化の対象とするデコードエンジン１２０は、対象マクロブロックのＱＰ変化量から、その対象マクロブロックのＱＰ値を導出することができない。
【０１４８】
そこで、ＱＰ計算部１３８ａは、ピクチャが分割される前に、マクロブロックごとに、そのマクロブロック（対象マクロブロック）のＱＰ変化量に、左隣接マクロブロックのＱＰ値を加算することによって、その対象マクロブロックのＱＰ値を算出する。
【０１４９】
分割点検出部１３９ａは、符号化ストリームを４つの分割ストリームに分割する。つまり、分割点検出部１３９ａは、ピクチャを複数のＭＢラインに分割し、ＭＢラインのそれぞれを４つの分割ストリームの何れかに割り当てる。なお、分割点検出部１３９ａは、ＭＢラインの直前またはそのＭＢラインに属する２つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、ＭＢラインだけを分割ストリームに割り当てる。また、分割点検出部１３９ａは、分割ストリームのそれぞれに、スキップラン分割部１３７ａから取得したＭＢスキップラン情報と、ＱＰ計算部１３８ａから取得したＱＰ値とを含める。
【０１５０】
さらに、分割点検出部１３９ａは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ａは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。
【０１５１】
スライスデータ処理部１３４ｂは、スライスデータ層デコード部１３５ｂ、マクロブロック層デコード部１３６ｂ、ＱＰ計算部１３８ｂおよび分割点検出部１３９ｂを備えている。
【０１５２】
スライスデータ層デコード部１３５ｂは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化（算術復号化）する。マクロブロック層デコード部１３６ｂは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化（算術復号化）する。このような、スライスデータ層デコード部１３５ｂおよびマクロブロック層デコード部１３６ｂによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
【０１５３】
ＱＰ計算部１３８ｂは、上述のＱＰ計算部１３８ａと同様、マクロブロックごとに、マクロブロック層デコード部１３６ｂによって復号化された、そのマクロブロックのＱＰ変化量“mb_qp_delta”をＱＰ値（量子化パラメータの値）に変換し、そのＱＰ値を出力する。
【０１５４】
分割点検出部１３９ｂは、分割点検出部１３９ａと同様、符号化ストリームを４つの分割ストリームに分割する。このとき、分割点検出部１３９ｂは、分割ストリームのそれぞれに、ＱＰ計算部１３８ｂから取得したＱＰ値を含める。さらに、分割点検出部１３９ｂは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部１３３からのスライスヘッダ処理内容通知Ｍ１を受けると、そのスライスヘッダ処理内容通知Ｍ１の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部１３９ｂは、スライス終端処理が完了すると、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る。 
【０１５５】
ここで、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４ａ，１３４ｂについて詳細に説明する。なお、スライスデータ処理部１３４ａ，１３４ｂについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部１３４と総称する。
【０１５６】
まず、スライスヘッダ挿入部１３３がスライスヘッダを挿入するタイミング、およびスライスデータ処理部１３４がスライス終端情報を挿入するタイミングについて説明する。
【０１５７】
図８は、スライスヘッダ挿入部１３３およびスライスデータ処理部１３４の動作を説明するための説明図である。
【０１５８】
スライスデータ処理部１３４は、スライスＡおよびスライスＢを含むピクチャをＭＢラインごとに分割し、ＥＰＢ挿入部１３２ｂを介して、先頭側のＭＢラインから各ＭＢラインを順次、分割ストリームバッファ１５２に含まれる４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）に格納する。このとき、スライスデータ処理部１３４は、１ＭＢラインの格納ごとに、ＭＢラインの格納先を第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４、第１領域ｄｆ１の順に繰り返し変更する。
【０１５９】
例えば、スライスデータ処理部１３４は、図８の（ａ）に示すように、スライスＡのＭＢラインＬａ１を、分割ストリームバッファ１５２の第１領域ｄｆ１に格納し、スライスＡの次のＭＢラインＬａ２を、分割ストリームバッファ１５２の第２領域ｄｆ２に格納し、スライスＡの次のＭＢラインＬａ３を、分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。さらに、スライスデータ処理部１３４は、スライスＡの次のスライスＢのＭＢラインＬｂ１を、分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。
【０１６０】
その結果、分割ストリームバッファ１５２の４つの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれにＭＢラインが格納され、分割ストリームバッファ１５２は、スライスＢの次のＭＢラインが再び第１領域ｄｆ１に格納される直前の状態になる。
【０１６１】
なお、スライスデータ処理部１３４は、ＭＢラインＬａ３を第３領域ｄｆ３に格納するときには、符号化ストリームにおいてＭＢラインＬａ３の直後にスライス終端情報ｅａがあっても、そのスライス終端情報ｅａを格納することなく、ＭＢラインＬａ３だけを第３領域ｄｆ３に格納する。そして、スライスデータ処理部１３４は、その後に、第３領域ｄｆ３に新たなスライスに属するＭＢラインを格納するときになって、そのスライス終端情報ｅａに対応するスライス終端情報ｅａ’を第３領域ｄｆ３に格納する。また、スライスデータ処理部１３４がＭＢラインＬｂ１を第４領域ｄｆ４に格納するときには、事前に、スライスヘッダ挿入部１３３によってスライスＢのスライスヘッダｈｂが第４領域ｄｆ４に格納されている。また、ピクチャには、スライスＡのＭＢラインＬａ１よりも前に、そのスライスＡの他のＭＢラインが存在している。したがって、第１領域ｄｆ１、第２領域ｄｆ２および第３領域ｄｆ３のＭＢラインＬａ１，Ｌａ２，Ｌａ３の直前には、スライスＡの複製スライスヘッダが挿入されていない。
【０１６２】
また、スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂは、マクロブロックを出力するごとに、１ＭＢラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部１３９ａ，１３９ｂは、全てのマクロブロックが出力されたと判別すると、ＭＢラインの境界（ＭＢラインの終端）を検出する。そして、分割点検出部１３９ａ，１３９ｂは、ＭＢラインの境界を検出するごとに、マクロブロックの出力処理を中断し、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知する。
【０１６３】
したがって、ＭＢラインの最後のマクロブロックが分割ストリームバッファ１５２に格納されて、分割ストリームバッファ１５２が上述のような図８の（ａ）に示す状態になったときにも、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂから、ＭＢラインの境界が検出されたことの通知を受ける。
【０１６４】
ＭＢラインの境界検出の通知を受けたスライスヘッダ挿入部１３３は、図８の（ｂ）に示すように、スライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に送る。このスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインが格納される直前に、スライスヘッダを分割ストリームバッファ１５２に出力して格納する予定があるか否かをそのスライスデータ処理部１３４に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知Ｍ１は、スライスデータ処理部１３４に対してスライス終端処理を促す通知である。
【０１６５】
例えば、スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から分割ストリームバッファ１５２へ次のＭＢラインＬｂ２が格納される直前に、複製スライスヘッダｈｂ’を分割ストリームバッファ１５２に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部１３３は、「出力」を示すスライスヘッダ処理内容通知Ｍ１をスライスデータ処理部１３４に出力する。
【０１６６】
スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１を取得すると、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ１５２に格納した後に、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。一方、スライスデータ処理部１３４は、スライスヘッダ処理内容通知Ｍ１が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ１５２に格納することなく、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１６７】
例えば、スライスデータ処理部１３４は、「出力」を示すスライスヘッダ処理内容通知Ｍ１を取得すると、図８の（ｃ）に示すように、スライス終端情報ｅａ’を生成し、分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その格納が完了すると、スライスデータ処理部１３４は、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に出力する。
【０１６８】
スライスヘッダ挿入部１３３は、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ＥＰＢ挿入部１３２ｂを介して、スライスヘッダを分割ストリームバッファ１５２に出力して格納し、その後、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。一方、直前に出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、スライスヘッダ挿入部１３３は、スライスヘッダを分割ストリームバッファ１５２に格納することなく、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１６９】
例えば、スライスヘッダ挿入部１３３は、直前に出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合に、スライスデータ処理部１３４から終端処理完了通知Ｍ２を取得すると、図８の（ｄ）に示すように、複製スライスヘッダｈｂ’を生成して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その後、スライスヘッダ挿入部１３３は、スライスヘッダ処理完了通知Ｍ３をスライスデータ処理部１３４に出力する。
【０１７０】
スライスデータ処理部１３４の分割点検出部１３９ａ，１３９ｂは、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けると、中断していたマクロブロックの出力処理を再開し、次のＭＢラインを出力して分割ストリームバッファ１５２に格納する。
【０１７１】
例えば、スライスデータ処理部１３４は、図８の（ｄ）に示すように、次のＭＢラインＬｂ２を出力して分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１７２】
このようなスライスヘッダ挿入部１３３およびスライスデータ処理部１３４による処理によって、分割ストリームバッファ１５２の各領域において、スライス終端情報、スライスヘッダ、次のＭＢラインの順に、これらのデータを適切なＭＢラインの境界に書き込むことができる。
【０１７３】
図９は、スライスヘッダ挿入部１３３の構成を示すブロック図である。
【０１７４】
なお、図９を用いて、分割点検出部１３９ａ，１３９ｂについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部１３９と総称する。
【０１７５】
スライスヘッダ挿入部１３３は、ＮＡＬタイプ判定部１３３ａ、ヘッダ挿入カウンタ１３３ｂ、ヘッダアドレス更新部１３３ｃおよびヘッダバッファ１３３ｄを備えている。
【０１７６】
ＮＡＬタイプ判定部１３３ａは、符号化ストリームのＮＡＬユニットを取得するごとに、そのＮＡＬユニットのタイプがスライスであるか否かを判別する。そして、ＮＡＬタイプ判定部１３３ａは、スライスであると判別したときには、そのＮＡＬユニットのタイプがスライスであることをヘッダバッファ１３３ｄおよびヘッダ挿入カウンタ１３３ｂに通知する。
【０１７７】
ヘッダバッファ１３３ｄは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、そのＮＡＬユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ１３３ｄは、後のＮＡＬユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ１３３ｄは、常に最新のスライスヘッダを保持している。
【０１７８】
ヘッダ挿入カウンタ１３３ｂは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のＭＢラインの境界（終端）が分割点検出部１３９で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ１３３ｂは、０〜４（デコードエンジン１２０の総数）までの値をカウントする。ヘッダ挿入カウンタ１３３ｂは、ＮＡＬタイプ判定部１３３ａからの通知を受けると、その通知に対応するＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。さらに、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界（ＭＢラインの終端）が検出されたときには、カウント値を１だけカウントアップする。そして、ヘッダ挿入カウンタ１３３ｂは、カウント値が４に達した後に、さらにＭＢラインの境界が検出されたときには、カウントアップすることなく、カウント値を４に維持しておく。
【０１７９】
このように、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、カウント値を更新あるいは保持し、ＮＡＬユニットにスライスヘッダが含まれていれば、カウント値を０にリセットする。
【０１８０】
また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときには、その検出によって更新されたカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力する。具体的には、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出された直後のカウント値が０〜３のときには、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力し、そのカウント値が４のときには、「非出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。また、ヘッダ挿入カウンタ１３３ｂは、ＭＢラインの境界が検出されたときに限らず、カウント値が０になったときにも、「出力」を示すスライスヘッダ処理内容通知Ｍ１を出力する。
【０１８１】
さらに、ヘッダ挿入カウンタ１３３ｂは、スライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に出力した後に、その分割点検出部１３９から終端処理完了通知Ｍ２を受け取ると、その出力したスライスヘッダ処理内容通知Ｍ１が「出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させる。その後、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。なお、ヘッダバッファ１３３ｄからスライスヘッダが出力されるときには、スライスヘッダ挿入部１３３は、そのスライスヘッダに含まれているＭＢアドレス情報により示される値に応じて、分割ストリームバッファ１５２の格納先となる領域を選択する。そして、スライスヘッダ挿入部１３３は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ１３３ｂは、その出力したスライスヘッダ処理内容通知Ｍ１が「非出力」を示していた場合には、ヘッダバッファ１３３ｄに格納されているスライスヘッダをそのヘッダバッファ１３３ｄから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ１３３ｂはスライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に出力する。
【０１８２】
ヘッダアドレス更新部１３３ｃは、ＭＢラインの境界が検出された直後のカウント値（ＭＢライン境界の直後のスライスヘッダによってリセットされたカウント値＝０を含む）に応じて、ヘッダバッファ１３３ｄに格納されているスライスヘッダのＭＢアドレス情報“first_mb_in_slice”を更新する。
【０１８３】
例えば、ヘッダアドレス更新部１３３ｃは、カウント値ｎ＝０のときには、ＭＢアドレス情報を更新せず、カウント値ｎ≠０のときには、ＭＢアドレス情報を（“mbposv”＋ｎ）×（“pic_width_in_mbs_minus1”＋１）に更新する。なお、ピクチャがＭＢＡＦＦで構成されている場合には、ヘッダアドレス更新部１３３ｃは、ＭＢアドレス情報を（“mbposv”／２＋ｎ）×（“pic_width_in_mbs_minus1”＋１）により更新する。
【０１８４】
図１０は、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４に割り当てられるＭＢラインおよびスライスヘッダを示す図である。
【０１８５】
例えば、ストリーム分割部１３０は、ストリームバッファ１５１に格納されている符号化ストリームのスライスＡ〜Ｃを、スライスＡ、スライスＢ、スライスＣの順に読み出す。
【０１８６】
この場合、まず、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、スライスＡの先頭からスライスヘッダｈａを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、カウント値が０であるため、記憶しているスライスヘッダｈａを出力することにより、そのスライスヘッダｈａを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。
【０１８７】
スライスヘッダｈａがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＡのスライスヘッダｈａに続く第１ＭＢラインを出力することにより、その第１ＭＢラインを分割ストリームバッファ１５２の第１領域ｄｆ１に格納する。その結果、第１領域ｄｆ１には、スライスヘッダｈａ、スライスＡに属する第１ＭＢラインの順に、それらのデータが格納される。
【０１８８】
第１ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第１ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈａを複製スライスヘッダｈａ’として出力することにより、その複製スライスヘッダｈａ’を分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。なお、複製スライスヘッダｈａ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１８９】
複製スライスヘッダｈａ’がヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中で第１ＭＢラインに続く第２ＭＢラインを出力することにより、その第２ＭＢラインを分割ストリームバッファ１５２の第２領域ｄｆ２に格納する。
【０１９０】
ここで、第２ＭＢラインは、スライスＡに属する複数のマクロブロックと、スライスＢのスライスヘッダｈｂと、スライスＢに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部１３４の分割点検出部１３９は、まず、第２ＭＢラインに含まれるスライスＡに属する全てのマクロブロックを第２領域ｄｆ２に格納する。その格納が終了すると、分割点検出部１３９は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けるまで待機する。このとき、スライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを検出するため、カウント値を０にリセットし、「出力」を示すスライスヘッダ処理内容通知Ｍ１を分割点検出部１３９に送る。このスライスヘッダ処理内容通知Ｍ１を受けた分割点検出部１３９は、第２領域ｄｆ２のスライスＡの終端に対してスライス終端処理を行い、終端処理完了通知Ｍ２をスライスヘッダ挿入部１３３に送る。この終端処理完了通知Ｍ２を受けたスライスヘッダ挿入部１３３は、スライスＢのスライスヘッダｈｂを第２領域ｄｆ２に格納し、スライスヘッダ処理完了通知Ｍ３を分割点検出部１３９に送る。このスライスヘッダ処理完了通知Ｍ３を受けた分割点検出部１３９は、中断していた出力処理を再開し、第２ＭＢラインに含まれる次のスライスＢに属する複数のマクロブロックを第２領域ｄｆ２に格納する。
【０１９１】
その結果、第２領域ｄｆ２には、複製スライスヘッダｈａ’に続いて、スライスＡに属する第２ＭＢラインの一部を成す複数のマクロブロック、スライスヘッダｈｂ、スライスＢに属する第２ＭＢラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
【０１９２】
第２ＭＢラインがスライスデータ処理部１３４から出力されると、スライスヘッダ挿入部１３３のヘッダバッファ１３３ｄは、符号化ストリーム中でその第２ＭＢラインに続くスライスＣの先頭からスライスヘッダｈｃを取り出して記憶する。このとき、ヘッダ挿入カウンタ１３３ｂはカウント値を０にリセットする。したがって、ヘッダバッファ１３３ｄは、第２ＭＢラインの終端でカウント値が０であるため、記憶しているスライスヘッダｈｃを出力することにより、そのスライスヘッダｈｃを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。
【０１９３】
スライスヘッダｈｃがヘッダバッファ１３３ｄから出力されると、スライスデータ処理部１３４は、符号化ストリーム中でスライスＣのスライスヘッダｈｃに続く第３ＭＢラインを出力することにより、その第３ＭＢラインを分割ストリームバッファ１５２の第３領域ｄｆ３に格納する。その結果、第３領域ｄｆ３には、スライスヘッダｈｃ、スライスＣに属する第３ＭＢラインの順に、それらのデータが格納される。
【０１９４】
第３ＭＢラインがスライスデータ処理部１３４から出力されると、上述のヘッダ挿入カウンタ１３３ｂはカウント値を１にカウントアップする。したがって、ヘッダバッファ１３３ｄは、第３ＭＢラインの終端でカウント値が１であるため、記憶しているスライスヘッダｈｃを複製スライスヘッダｈｃ’として出力することにより、その複製スライスヘッダｈｃ’を分割ストリームバッファ１５２の第４領域ｄｆ４に格納する。なお、複製スライスヘッダｈｃ’のＭＢアドレス情報はヘッダアドレス更新部１３３ｃによって更新されている。
【０１９５】
このような処理が繰り返されることにより、分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４にデータが順次格納される。その結果、それらの第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに第１分割ストリーム〜第４分割ストリームが格納される。
【０１９６】
図１１Ａおよび図１１Ｂは、スライス終端情報が設定される位置を示す図である。
【０１９７】
例えば、図１１Ａに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢのスライスヘッダｈｂが出力される直前に、そのスライスＢの先頭ＭＢラインから４ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。さらに、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢの先頭ＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０１９８】
このように、スライスの先頭のマクロブロックがＭＢラインの左端にある場合には、そのＭＢラインの１〜４ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０１９９】
また、図１１Ｂに示すように、ピクチャはスライスＡとスライスＢとを含み、スライスＡに続くスライスＢの先頭のマクロブロックはＭＢラインの左端以外にある。このような場合、スライスデータ処理部１３４の分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスＢの複製スライスヘッダｈｂ’が出力される直前に、そのスライスＢのスライスヘッダｈｂを含むＭＢラインから３ＭＢライン前にある、スライスＡのＭＢラインの終端に、スライスＡのスライス終端情報ｅａ’を設定する。
【０２００】
このように、スライスの先頭のマクロブロックがＭＢラインの左端以外にある場合には、そのＭＢラインにおけるスライスの境界と、そのＭＢラインの１〜３ＭＢライン前にある各ＭＢラインの終端にスライス終端情報ｅａ’が設定される。
【０２０１】
ここで、分割点検出部１３９の動作について詳細に説明する。
【０２０２】
図１２は、分割点検出部１３９の動作を示すフローチャートである。
【０２０３】
まず、分割点検出部１３９は、符号化ストリームの先頭側から処理対象とすべきデータ（例えばマクロブロック）を特定して出力し、分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２０４】
ここで、分割点検出部１３９は、出力されるマクロブロックのアドレス（ＭＢアドレス値）を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部１３９は、出力されるマクロブロックのＭＢアドレス値を、そのスライスのスライスヘッダに含まれるＭＢアドレス情報により示される値に更新する。そして、分割点検出部１３９は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのＭＢアドレス値をインクリメントする。なお、ＭＢアドレス値は０以上の整数である。
【０２０５】
そして、分割点検出部１３９は、ステップＳ１００でマクロブロックを出力するときには、そのマクロブロックのＭＢアドレス値に応じて、分割ストリームバッファ１５２内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ１５２に含まれる４つの領域に１番〜４番までの番号が割り振られている場合、分割点検出部１３９は、ｍ＝（（ＭＢアドレス値／Ｗ）％Ｎ＋１）番目の領域を選択し、そのｍ番目の領域にマクロブロックを格納する。
【０２０６】
なお、Ｗは、Ｗ＝“pic_width_in_mbs_minus1”＋１により示され、ピクチャの水平方向のマクロブロック数を示す。また、Ｎはデコードエンジン１２０の総数（Ｎ＝４）であり、％は（ＭＢアドレス値／Ｗ）をＮで割ったときの余りを示す。
【０２０７】
次に、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックがＭＢラインの終端（境界）であったか否か、つまりマクロブロックの出力処理がＭＢラインの終端に達したか否かを判別する（ステップＳ１０２）。具体的には、分割点検出部１３９は、ステップＳ１００で出力されたマクロブロックのＭＢアドレス値が（Ｗの倍数−１）となるか否かを判別する。ＭＢアドレス値＝（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達し、ＭＢアドレス値≠（Ｗの倍数−１）のときには、出力処理がＭＢラインの終端に達していない。
【０２０８】
分割点検出部１３９は、終端に達していない判別すると（ステップＳ１０２のＮｏ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。一方、分割点検出部１３９は、終端（ＭＢラインの境界）に達したと判別すると、つまりＭＢラインの境界を検出すると（ステップＳ１０２のＹｅｓ）、ＭＢラインの境界を検出したことをスライスヘッダ挿入部１３３に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部１３３からスライスヘッダ処理内容通知Ｍ１を受けたか否かを判別する（ステップＳ１０４）。
【０２０９】
分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けていないと判別すると（ステップＳ１０４のＮｏ）、スライスヘッダ処理内容通知Ｍ１を受けるまで待機する。一方、分割点検出部１３９は、スライスヘッダ処理内容通知Ｍ１を受けたと判別すると（ステップＳ１０４のＹｅｓ）、そのスライスヘッダ処理内容通知Ｍ１が「出力」を示しているか否かを判別する（ステップＳ１０６）。
【０２１０】
ここで、分割点検出部１３９は、「出力」を示していると判別すると（ステップＳ１０６のＹｅｓ）、スライス終端処理を実行する（ステップＳ１０８）。つまり、分割点検出部１３９は、符号化ストリームがＣＡＢＡＤで復号化される場合には、スライス終端情報として“end_of_slice_flag”に「１」を設定する。また、分割点検出部１３９は、符号化ストリームがＣＡＶＬＤで復号化される場合には、スライス終端情報として“rbsp_slice_trailing_bits”を付与する。
【０２１１】
分割点検出部１３９は、ステップＳ１０６で「出力」を示していないと判別した後（ステップＳ１０６のＮｏ）、またはステップＳ１０８でスライス終端処理を実行した後には、スライスヘッダ挿入部１３３に終端処理完了通知Ｍ２を送る（ステップＳ１１０）。その後、分割点検出部１３９は、スライスヘッダ挿入部１３３からスライスヘッダ処理完了通知Ｍ３を受けたか否かを判別する（ステップＳ１１２）。ここで、分割点検出部１３９は、スライスヘッダ処理完了通知Ｍ３を受けていないと判別すると（ステップＳ１１２のＮｏ）、スライスヘッダ処理完了通知Ｍ３を受けるまで待機する。一方、分割点検出部１３９は、ステップＳ１１２でスライスヘッダ処理完了通知Ｍ３を受けたと判別したとき（ステップＳ１１２のＹｅｓ）、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する（ステップＳ１１４）。
【０２１２】
ここで、分割点検出部１３９は、終了すべきと判別したときには（ステップＳ１１４のＹｅｓ）、処理を終了し、終了すべきでないと判別したときには（ステップＳ１１４のＮｏ）、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ１５２に格納する（ステップＳ１００）。
【０２１３】
このように、本実施の形態における画像復号化装置１００では、符号化されたピクチャは複数のＭＢライン（構成単位）に分割され、複数のＭＢラインのそれぞれが分割ストリームの一部としてＮ個のデコードエンジン１２０に割り当てられて復号化されるため、Ｎ個のデコードエンジン１２０による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のＭＢラインに分割されるため、その１スライスの復号化を１つのデコードエンジン１２０で負担することなく、Ｎ個のデコードエンジン１２０で均等に負担することができる。
【０２１４】
ここで、符号化ピクチャが複数のＭＢラインに分割されると、複数のＭＢラインに跨るスライスが複数のスライス部分（例えば、図３に示す各ＭＢラインＬ１〜Ｌ６や、ＭＢラインＬ７のうちの先頭６マクロブロックの集合など）に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群（例えば、図３に示す第２分割ストリームに含まれるＭＢラインＬ２，Ｌ６）が含まれることとなる。また、このようなスライス部分群（ＭＢラインＬ２，Ｌ６）には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
【０２１５】
そこで本発明では、ストリーム分割部１３０がそのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン１２０は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個のデコードエンジン１２０のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置１００の全体構成を簡単にすることができる。
【０２１６】
また、本発明では、上記特許文献３の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献３の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献３の画像復号化装置では、符号化ストリームを適切に分割していない、言い換えれば、符号化ストリームが分割されて生成されるデータが、従来のデコードエンジンで復号化可能なストリームとして構成されていない。一方、本発明の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図２８に示すデコードエンジン２２０のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本発明の画像復号化装置では、復号化処理の高速化を図ることができる。
【０２１７】
また、本発明では、上記特許文献４の画像復号化装置と比べて、従来のデコードエンジンを流用することができるというメリットがある。具体的には、上記特許文献４の画像復号化装置では、符号化ストリームを分割することなく、符号化ストリームにおいてＭＢラインの境界に行ヘッダを挿入している。したがって、上記特許文献４の画像復号化装置の複数のデコードエンジンは、行ヘッダを目印にして自らが処理すべきＭＢラインを符号化ストリームから抽出しなければならない。このとき、それらのデコードエンジンは、処理対象のＭＢラインが格納されている位置が既に特定されていれば、処理対象のＭＢラインを抽出するために符号化ストリームに対して不連続にアクセスする必要があり、その位置が特定されていなければ、符号化ストリームに先頭からアクセスし、処理対象でないＭＢラインを読み飛ばす必要がある。一方、本発明の画像復号化装置１００では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン１２０のそれぞれは、図２８に示すデコードエンジン２２０のように、分割ストリームを通常の符号化ストリームとして扱って復号化することができる。このように、本発明の画像復号化装置では、従来のデコードエンジンを流用することができ、上記特許文献４の画像復号化装置では成し得ない効果を奏することができる。
【０２１８】
また、このような本実施の形態における画像復号化装置１００は、ストリーム分割部１３０に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
【０２１９】
図１３Ａ〜図１３Ｃは、高解像度デコード、高速デコードおよび複数チャンネルデコードを説明するための説明図である。
【０２２０】
画像復号化装置１００のストリーム分割部１３０は、図１３Ａに示すように、高解像度デコードの実行を指示するモード情報を取得すると、４ｋ２ｋの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０２２１】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、４ｋ２ｋの画像（３８４０×２１６０画素、６０ｐ）をリアルタイムに処理することができる。
【０２２２】
また、画像復号化装置１００のストリーム分割部１３０は、図１３Ｂに示すように、高速デコードの実行を指示するモード情報を取得すると、ＨＤの符号化ストリームを上述のように４つの分割ストリームに分割し、４つの分割ストリームのそれぞれを各デコードエンジン１２０に復号化させる。
【０２２３】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、ＨＤの画像を８倍速（４×２）で処理することができる。
【０２２４】
また、画像復号化装置１００のストリーム分割部１３０は、図１３Ｃに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のＨＤの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン１２０に復号化させる。なお、この複数チャンネルデコードの場合、ストリーム分割部１３０は、ＳＰＳ、ＰＰＳおよびスライスなどの各種ＮＡＬユニットの複製および挿入を行わず、分割ストリームバッファ１５２の各領域への符号化ストリーム（チャンネル）の振り分けのみを行う。
【０２２５】
例えば、４つのデコードエンジン１２０はそれぞれ、ＨＤの画像（１９２０×１０８８画素、６０ｉ）を２チャンネル分復号可能な処理能力を有するため、画像復号化装置１００は、最大８チャンネル、つまり８つのＨＤの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル（符号化ストリーム）を復号化する場合には、デコードエンジン１２０のクロック周波数を下げて消費電力の低減を図ることができる。例えば、４チャンネルを復号化する場合には、第１デコードエンジン１２０と第２デコードエンジン１２０のそれぞれに２チャンネルの復号化を実行させ、残りの第３デコードエンジン１２０と第４デコードエンジン１２０を停止させる。または、第１デコードエンジン１２０〜第４デコードエンジン１２０を使用し、それらのクロック周波数を１／２にする。
【０２２６】
このように、本実施の形態における画像復号化装置１００では、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードに切り替えるため、ユーザの使い勝手を向上することができる。なお、画像復号化装置１００における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを４つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート（４ｋ２ｋまたはＨＤ）が異なるだけである。したがって、画像復号化装置１００は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
【０２２７】
（変形例１）
ここで、上記実施の形態では、ストリーム分割部１３０のヘッダアドレス更新部１３３ｃで複製スライスヘッダに含まれるＭＢアドレス情報を更新したが、ストリーム分割部１３０で更新することなく、デコードエンジン１２０が更新してもよい。つまり、変形例１では、ストリーム分割部１３０は、複製スライスヘッダに含まれるＭＢアドレス情報を変更することなく、その複製スライスヘッダを出力する。そして、デコードエンジン１２０は、複製スライスヘッダを取得して処理を行う前に、その複製スライスヘッダに含まれるＭＢアドレス情報を変更する。
【０２２８】
図１４は、変形例１に係るデコードエンジン１２０がＭＢアドレス情報を変更するための擬似コードを示す図である。
【０２２９】
ここでは、ピクチャに含まれるｋ番目（ｋは０以上の整数）のＭＢラインは、（ｋ％４）番目のデコードエンジン１２０によって復号化されることを前提とする。なお、０番目のデコードエンジン１２０は第１デコードエンジン１２０であり、１番目のデコードエンジン１２０は第２デコードエンジン１２０であり、２番目のデコードエンジン１２０は第３デコードエンジン１２０であり、３番目のデコードエンジン１２０は第４デコードエンジン１２０である。
【０２３０】
まず、デコードエンジン１２０は、“n = mode_core_number”を実行することにより、自らのデコードエンジン１２０の番号を“ｎ”に代入する。次に、デコードエンジン１２０は、“pic_width_in_mbs = pic_width_in_mbs_minus1 + 1”を実行することにより、ピクチャに含まれる水平方向のマクロブロックの数を“pic_width_in_mbs”に代入する。
【０２３１】
そして、デコードエンジン１２０は、“org_header_num = ( first_mb_in_slice / pic_width_in_mbs ) ％ 4”を実行することにより、複製元のスライスヘッダを有するＭＢラインを復号化すべきデコードエンジン１２０の番号を“org_header_num”に代入する。つまり、“org_header_num”番目のデコードエンジン１２０が複製元のスライスヘッダを有するＭＢラインを復号化する。さらに、デコードエンジン１２０は、“org_mb_address =mbaff ？ ( first_mb_in_slice * 2 ) : first_mb_in_slice”を実行することにより、ピクチャがＭＢＡＦＦで構成されていれば、複製元のスライスヘッダのＭＢアドレス“org_mb_address”を“first_mb_in_slice * 2”として扱い、ピクチャがＭＢＡＦＦで構成されていなければ、複製元のスライスヘッダのＭＢアドレス“org_mb_address”を“first_mb_in_slice”として扱う。
【０２３２】
ここで、デコードエンジン１２０は、デコードエンジン１２０の番号“ｎ”が“org_header_num”に等しければ、“mb_address = org_mb_address”を実行することにより、複製スライスヘッダに含まれるＭＢアドレス情報“mb_address”を“org_mb_address”に更新する。一方、デコードエンジン１２０は、デコードエンジン１２０の番号“ｎ”が“org_header_num”と異なれば、まず、“d = ( n - org_header_num + 4 ) ％ 4”を実行することにより、その複製スライスヘッダが何番目の複製スライスヘッダであるかを判断する。そして、デコードエンジン１２０は、ピクチャがＭＢＡＦＦで構成されていれば、複製スライスヘッダに含まれるＭＢアドレス情報“mb_address”を“(( first_mb_in_slice/ pic_width_in_mbs ) + d ) * pic_width_in_mbs * 2”に更新し、ピクチャがＭＢＡＦＦで構成されていなければ、複製スライスヘッダのＭＢアドレス情報“mb_address”を“(( first_mb_in_slice / pic_width_in_mbs ) + d ) * pic_width_in_mbs”に更新する。
【０２３３】
このように、変形例１では、ストリーム分割部１３０がＭＢアドレス情報を更新しないため、そのストリーム分割部１３０の処理負担を軽減し、その構成を簡単にすることができる。なお、本発明では、ＭＢアドレス情報の更新のタイミングは、ストリーム分割部１３０で符号化ストリームが分割されるときに限らず、分割ストリームが生成された後であっても、デコードエンジン１２０で複製スライスヘッダが処理される前であれば、いつでもよい。
【０２３４】
（変形例２）
ここで、上記実施の形態では、ストリーム分割部１３０は、複製スライスヘッダが必要とされる分割ストリームにのみ、その複製スライスヘッダを挿入したが、それ以外の分割ストリームに複製スライスヘッダを挿入してもよい。変形例２に係るストリーム分割部は、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入する。
【０２３５】
図１５は、変形例２に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【０２３６】
変形例２に係るストリーム分割部１３０ｃは、スライスヘッダ処理部１３３ｇ、スライスデータ処理部１３４ｃおよび制御部１６０を備えている。なお、ストリーム分割部１３０ｃは、これらの構成要素以外にも、スタートコード検出部１３１、ＥＰＢ除去部１３２ａおよびＥＰＢ挿入部１３２ｂを備えているが、図１５では、説明を簡単にするために、スタートコード検出部１３１などの構成要素を省略している。
【０２３７】
分割ストリームバッファ１５２は、スライスヘッダ処理部１３３ｇおよびスライスデータ処理部１３４ｃから出力されるデータを蓄積し、その蓄積されたデータから分割ストリームを構成するための４つの領域（第１領域ｄｆ１〜第４領域ｄｆ４）を有する。
【０２３８】
スライスデータ処理部１３４ｃは、上記実施の形態におけるスライスデータ処理部１３４ａ，１３４ｂと同様の機能および構成を有し、符号化ストリーム中の各ピクチャを複数のＭＢラインに分割し、それらのＭＢラインを先頭側から順に、第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３および第４領域ｄｆ４の何れかに格納する。例えば、スライスデータ処理部１３４ｃは、ＭＢラインごとに、そのＭＢラインの格納先となる領域を、第１領域ｄｆ１、第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４の順に切り替えて、切り替えられた領域にＭＢラインを格納する。また、スライスデータ処理部１３４ｃは、符号化ストリーム中のＭＢラインの直前にスライスヘッダがあっても、そのＭＢラインだけを分割ストリームバッファ１５２の領域に格納し、ＭＢラインの中にスライスヘッダがあっても、そのスライスヘッダを除くＭＢラインを分割ストリームバッファ１５２の領域に格納する。
【０２３９】
スライスヘッダ処理部１３３ｇは、符号化ストリームに含まれるデータを先頭側から順次取得しているときに、その取得したデータがスライスヘッダである場合には、そのスライスヘッダを分割ストリームバッファ１５２の第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、スライスヘッダが４つに複製される。つまり、符号化ストリームに含まれていた複製元のスライスヘッダが第１領域ｄｆ１〜第４領域ｄｆ４のいずれか１つの領域に格納され、残りの３つの領域に３つの複製スライスヘッダがそれぞれ格納される。
【０２４０】
例えば、スライスヘッダ処理部１３３ｇがスライスヘッダを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力すると、複製元のスライスヘッダが第１領域ｄｆ１に格納され、３つの複製スライスヘッダがそれぞれＭＢラインの先頭に挿入されるように、第２領域ｄｆ２、第３領域ｄｆ３および第４領域ｄｆ４のそれぞれに格納される。
【０２４１】
このようなスライスデータ処理部１３４ｃおよびスライスヘッダ処理部１３３ｇによる処理によって、分割ストリームバッファ１５２の各領域からは、ＭＢラインの先頭に０または１つのスライスヘッダを有する分割ストリームだけでなく、ＭＢラインの先頭に連続する複数のスライスヘッダ（複製スライスヘッダまたは複製元のスライスヘッダ）を有する分割ストリームが出力される。
【０２４２】
制御部１６０は、上述のようなスライスヘッダ処理部１３３ｇによる処理を管理し、分割ストリームバッファ１５２の領域ごとに、その領域に格納されるＭＢラインの直前に連続して挿入されるスライスヘッダの数（総ヘッダ数）をカウントする。そして、制御部１６０は、その領域から出力される分割ストリームを復号化するデコードエンジン１２１（第１デコードエンジン１２１〜第４デコードエンジン１２１の全て）に、その総ヘッダ数を通知する。
【０２４３】
第１デコードエンジン１２１〜第４デコードエンジン１２１はそれぞれ、ストリーム分割部１３０ｃから出力される分割ストリームを復号化する。このとき、第１デコードエンジン１２１〜第４デコードエンジン１２１はそれぞれ、制御部１６０から総ヘッダ数の通知を受けると、その総ヘッダ数の数に応じた処理を行う。つまり、デコードエンジン１２１は、総ヘッダ数が０の場合には、スライスヘッダについての処理を行わず、総ヘッダ数が１の場合には、ＭＢラインの先頭に挿入されている１つのスライスヘッダを処理する。また、デコードエンジン１２１は、総ヘッダ数が２〜３の場合には、ＭＢラインの先頭に連続して挿入されている２〜３個のスライスヘッダのうち最後のスライスヘッダ以外のスライスヘッダに対する処理をスキップし、その最後のスライスヘッダのみを処理する。
【０２４４】
図１６は、変形例２におけるストリーム分割部１３０ｃおよび４つのデコードエンジン１２１の動作を説明するための説明図である。
【０２４５】
例えば、符号化ストリームに含まれるピクチャは、スライスＡ、スライスＢ、スライスＣおよびスライスＤを含む。ここで、スライスＡはスライスヘッダｈａおよび第１ＭＢラインを含み、スライスＢはスライスヘッダｈｂおよび第２ＭＢラインを含み、スライスＣはスライスヘッダｈｃおよび第３ＭＢラインを含み、スライスＤはスライスヘッダｈｄおよび第４ＭＢラインを含む。
【０２４６】
ストリーム分割部１３０ｃのスライスヘッダ処理部１３３ｇは、符号化ストリームのスライスヘッダｈａを取得すると、そのスライスヘッダｈａを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈａが第１分割ストリームの一部として第１領域ｄｆ１に格納されるとともに、そのスライスヘッダｈａと同一の３つの複製スライスヘッダｈａ’のそれぞれが第２分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第２領域ｄｆ２、第３領域ｄｆ３、第４領域ｄｆ４に格納される。そして、スライスデータ処理部１３４ｃは、第１ＭＢラインを第１分割ストリームの一部として第１領域ｄｆ１に格納する。
【０２４７】
次に、スライスヘッダ処理部１３３ｇは、符号化ストリームのスライスヘッダｈｂを取得すると、そのスライスヘッダｈｂを第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｂが第２分割ストリームの一部として第２領域ｄｆ２に格納されるとともに、そのスライスヘッダｈｂと同一の３つの複製スライスヘッダｈｂ’のそれぞれが第１分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第１領域ｄｆ１、第３領域ｄｆ３、第４領域ｄｆ４に格納される。そして、スライスデータ処理部１３４ｃは、第２ＭＢラインを第２分割ストリームの一部として第２領域ｄｆ２に格納する。
【０２４８】
ストリーム分割部１３０ｃは、このような処理をスライスＣおよびスライスＤに対しても繰り返し実行する。
【０２４９】
その結果、第１領域ｄｆ１からは、スライスヘッダｈａ、第１ＭＢライン、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’を含む第１分割ストリームが出力される。同様に、第２領域ｄｆ２からは、複製スライスヘッダｈａ’、スライスヘッダｈｂ、第２ＭＢライン、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’を含む第２分割ストリームが出力される。第３領域ｄｆ３からは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、スライスヘッダｈｃ、第３ＭＢラインおよび複製スライスヘッダｈｄ’を含む第３分割ストリームが出力される。第４領域ｄｆ４からは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’、スライスヘッダｈｄおよび第４ＭＢラインを含む第４分割ストリームが出力される。
【０２５０】
なお、第１領域ｄｆ１〜第４領域ｄｆ４のそれぞれには、第４ＭＢラインの後に続くＭＢラインが順次格納され、図１６に示す第１分割ストリーム〜第４分割ストリームの終端以降にも他のＭＢラインが続いて配置される。具体的には、符号化ストリームには、第４ＭＢライン以降にも、スライスＤに属する４ＭＢライン以上のスライスデータが後続しており、図１６に示す第１分割ストリーム〜第４分割ストリームの終端以降には、新たなスライスヘッダは後続していない。
【０２５１】
つまり、第１分割ストリームでは、スライスヘッダｈａが第１ＭＢラインの前に配置され、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’からなる３つのスライスヘッダが第１ＭＢラインの後に連続して配置される。
【０２５２】
また、第２分割ストリームでは、複製スライスヘッダｈａ’およびスライスヘッダｈｂからなる２つのスライスヘッダが第２ＭＢラインの前に連続して配置され、複製スライスヘッダｈｃ’および複製スライスヘッダｈｄ’からなる２つのスライスヘッダが第２ＭＢラインの後に連続して配置される。
【０２５３】
また、第３分割ストリームでは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’およびスライスヘッダｈｃからなる３つのスライスヘッダが第３ＭＢラインの前に連続して配置され、複製スライスヘッダｈｄ’が第３ＭＢラインの後に配置される。
【０２５４】
また、第４分割ストリームでは、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’、複製スライスヘッダｈｃ’およびスライスヘッダｈｄからなる４つのスライスヘッダが第４ＭＢラインの前に連続して配置される。
【０２５５】
第１デコードエンジン１２１は、第１領域ｄｆ１から出力される上述の第１分割ストリームの第１ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「１」の通知を受ける。その結果、第１デコードエンジン１２１は、スライスヘッダに対する処理をスキップすることなく、スライスヘッダｈａを処理し、そのスライスヘッダｈａに続く第１ＭＢラインを復号化する。次に、第１デコードエンジン１２１は、制御部１６０から総ヘッダ数「３」の通知を受ける。その結果、第１デコードエンジン１２１は、第１ＭＢラインを復号した後に、（総ヘッダ数−１＝２）個のスライスヘッダに対する処理をスキップする。つまり、第１デコードエンジン１２１は、２個のスライスヘッダ（複製スライスヘッダｈｂ’および複製スライスヘッダｈｃ’）に対する処理をスキップし、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５６】
また、第２デコードエンジン１２１は、第２領域ｄｆ２から出力される上述の第２分割ストリームの第２ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「２」の通知を受ける。その結果、第２デコードエンジン１２１は、（総ヘッダ数−１＝１）個のスライスヘッダに対する処理をスキップする。つまり、第２デコードエンジン１２１は、複製スライスヘッダｈａ’に対する処理をスキップし、スライスヘッダｈｂを処理し、そのスライスヘッダｈｂに続く第２ＭＢラインを復号化する。次に、第２デコードエンジン１２１は、制御部１６０から再び総ヘッダ数「２」の通知を受ける。その結果、第２デコードエンジン１２１は、（総ヘッダ数−１＝１）個のスライスヘッダに対する処理をスキップする。つまり、第２デコードエンジン１２１は、複製スライスヘッダｈｃ’に対する処理をスキップし、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５７】
また、第３デコードエンジン１２１は、第３領域ｄｆ３から出力される上述の第３分割ストリームの第３ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「３」の通知を受ける。その結果、第３デコードエンジン１２１は、（総ヘッダ数−１＝２）個のスライスヘッダに対する処理をスキップする。つまり、第３デコードエンジン１２１は、複製スライスヘッダｈａ’および複製スライスヘッダｈｂ’に対する処理をスキップし、スライスヘッダｈｃを処理し、そのスライスヘッダｈｃに続く第３ＭＢラインを復号化する。次に、第３デコードエンジン１２１は、制御部１６０から総ヘッダ数「１」の通知を受ける。その結果、第３デコードエンジン１２１は、スライスヘッダに対する処理をスキップすることなく、複製スライスヘッダｈｄ’を処理し、その複製スライスヘッダｈｄ’に続くＭＢラインを復号化する。
【０２５８】
また、第４デコードエンジン１２１は、第４領域ｄｆ４から出力される上述の第４分割ストリームの第４ＭＢラインを復号化するとき、まず、制御部１６０から総ヘッダ数「４」の通知を受ける。その結果、第４デコードエンジン１２１は、（総ヘッダ数−１＝３）個のスライスヘッダに対する処理をスキップする。つまり、第４デコードエンジン１２１は、複製スライスヘッダｈａ’、複製スライスヘッダｈｂ’および複製スライスヘッダｈｃ’に対する処理をスキップし、スライスヘッダｈｄを処理し、そのスライスヘッダｈｄに続く第４ＭＢラインを復号化する。
【０２５９】
このように、変形例２では、ストリーム分割部１３０ｃが、複製スライスヘッダが必要であるか否かに関わらず、分割ストリームに複製スライスヘッダを挿入するため、ストリーム分割部１３０ｃにおけるその複製スライスヘッダの必要性の判断に要する処理負担を軽減することができる。さらに、ストリーム分割部１３０ｃは、符号化ストリームに含まれるスライスヘッダを取得すると、単純にそのスライスヘッダを出力すればよいため、上記実施の形態のストリーム分割部１３０のようにヘッダバッファ１３３ｄを備える必要がない。その結果、ストリーム分割部１３０ｃの構成を簡単にすることができる。
【０２６０】
（変形例３）
ここで上記変形例２では、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入することにより、連続して配置された複数のスライスヘッダを含む分割ストリームを生成した。変形例３では、上記変形例２と同様、複製スライスヘッダが必要であるか否かに関わらず、複製元のスライスヘッダを含む分割ストリーム以外の全ての分割ストリームに複製スライスヘッダを挿入するが、連続してスライスヘッダを挿入する場合には、既に挿入されているスライスヘッダに新たなスライスヘッダを上書する。これにより、分割ストリームにおいて複数のスライスヘッダが連続して配置されるのを防ぐ。
【０２６１】
図１７は、変形例３に係る画像復号化装置のストリーム分割部、分割ストリームバッファおよび４つのデコードエンジンを示すブロック図である。
【０２６２】
変形例３に係るストリーム分割部１３０ｄは、スライスヘッダ処理部１３３ｈ、スライスデータ処理部１３４ｄおよび４つのバッファ（第１バッファ１４１〜第４バッファ１４４）を備えている。なお、ストリーム分割部１３０ｄは、これらの構成要素以外にも、スタートコード検出部１３１、ＥＰＢ除去部１３２ａおよびＥＰＢ挿入部１３２ｂを備えているが、図１７では、説明を簡単にするために、スタートコード検出部１３１などの構成要素を省略している。
【０２６３】
スライスデータ処理部１３４ｄは、上記実施の形態におけるスライスデータ処理部１３４ａ，１３４ｂと同様の機能および構成を有し、符号化ストリーム中の各ピクチャを複数のＭＢラインに分割し、それらのＭＢラインを先頭側から順に、第１バッファ１４１、第２バッファ１４２、第３バッファ１４３および第４バッファ１４４の何れかに出力する。例えば、スライスデータ処理部１３４ｄは、ＭＢラインごとに、そのＭＢラインの出力先となるバッファを、第１バッファ１４１、第２バッファ１４２、第３バッファ１４３、第４バッファ１４４の順に切り替えて、切り替えられたバッファにＭＢラインを出力する。また、スライスデータ処理部１３４ｄは、符号化ストリーム中のＭＢラインの直前にスライスヘッダがあっても、そのＭＢラインだけをバッファに出力し、ＭＢラインの中にスライスヘッダがあっても、そのスライスヘッダを除くＭＢラインをバッファに出力する。
【０２６４】
スライスヘッダ処理部１３３ｈは、符号化ストリームに含まれるデータを先頭側から順次取得しているときに、その取得したデータがスライスヘッダである場合には、そのスライスヘッダを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、スライスヘッダが４つに複製される。つまり、符号化ストリームに含まれていた複製元のスライスヘッダが第１バッファ１４１〜第４バッファ１４４のいずれか１つのバッファに格納され、残りの３つのバッファに３つの複製スライスヘッダがそれぞれ格納される。
【０２６５】
例えば、スライスヘッダ処理部１３３ｈがスライスヘッダを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力すると、複製元のスライスヘッダが第１バッファ１４１に格納され、３つの複製スライスヘッダが第２バッファ１４２、第３バッファ１４３および第４バッファ１４４のそれぞれに格納される。
【０２６６】
バッファ（第１バッファ１４１〜第４バッファ１４４）は、少なくとも１つのスライスヘッダを格納し得る程度の容量を有し、スライスヘッダ処理部１３３ｈおよびスライスデータ処理部１３４ｄから出力されるデータを一時的に蓄積し、そのバッファに対応付けられた分割ストリームバッファ１５２の領域に出力する。なお、説明を簡単にするために、バッファが１つのスライスヘッダと１つのマクロブロックとを格納し得る容量を有するものとして、以下、説明する。
【０２６７】
バッファは、スライスヘッダ処理部１３３ｈからスライスヘッダ（複製元のスライスヘッダまたは複製スライスヘッダ）を取得したときには、一時的に、そのスライスヘッダを保持し、そのスライスヘッダを保持している状態で次の新たなスライスヘッダを取得すると、既に保持しているスライスヘッダに、その新たなスライスヘッダを上書する。
【０２６８】
また、バッファは、スライスヘッダを取得して保持した直後に、スライスデータ処理部１３４ｄからマクロブロックを取得して保持すると、その保持しているデータを、スライスヘッダ、マクロブロックの順に出力する。さらに、バッファは、先のマクロブロックに続いてスライスデータ処理部１３４ｄから新たなマクロブロックを取得するときには、既に保持しているスライスヘッダおよびマクロブロックを順次消去して新たなマクロブロックを保持し、その新たなマクロブロックを出力する。
【０２６９】
つまり、バッファは、マクロブロックを取得するごとに、そのマクロブロックを直ぐに出力する。一方、バッファは、スライスヘッダを取得したときには、そのスライスヘッダを直ぐには出力せずに保持しておき、マクロブロックを取得して出力するときに、そのスライスヘッダをマクロブロックの前に出力する。また、バッファは、スライスヘッダを保持しているときに、新たなスライスヘッダを取得したときには、既に保持しているスライスヘッダに新たなスライスヘッダを上書きする。
【０２７０】
このようなスライスデータ処理部１３４ｄ、スライスヘッダ処理部１３３ｈおよびバッファによる処理によって、分割ストリームバッファ１５２の各領域（第１領域ｄｆ１〜第４領域ｄｆ４）には、連続するスライスヘッダを含まない分割ストリームが蓄積される。
【０２７１】
デコードエンジン１２０は、上記実施の形態と同様、そのデコードエンジン１２０に対応付けられた分割ストリームバッファ１５２の領域から分割ストリームを読み出して復号化する。
【０２７２】
図１８は、バッファのポインタを示す図である。
【０２７３】
バッファは、スライスヘッダをスライスヘッダ処理部１３３ｈから取得して記憶領域に書き込むときには、記憶領域のライトポインタＷＰをガードポインタＧＰまで巻き戻し、スライスヘッダをそのガードポインタＧＰから書き込む。これにより、既に格納されているスライスヘッダは上書されて消去される。また、バッファは、通常、記憶領域に書き込まれたデータをリードポインタＲＰから読み出して出力するが、そのリードポインタＲＰはガードポインタＧＰを超えないように設定されている。
【０２７４】
そして、バッファは、スライスヘッダを記憶領域に書き込んだ直後に、マクロブロックを記憶領域に書き込むときだけ、そのガードポインタＧＰによるリードポインタＲＰのガードを外して、その書き込んだスライスヘッダとマクロブロックとを読み出して出力する。このように出力されたスライスヘッダとマクロブロックは、新たなスライスヘッダまたはマクロブロックが書き込まれるときに上書きされて消去されることとなる。
【０２７５】
図１９は、変形例３におけるストリーム分割部１３０ｄの動作を説明するための説明図である。
【０２７６】
例えば、符号化ストリームに含まれるピクチャは、スライスＡ、スライスＢ、スライスＣおよびスライスＤを含む。ここで、スライスＡはスライスヘッダｈａおよび第１ＭＢラインを含み、スライスＢはスライスヘッダｈｂ、第２ＭＢラインおよび第３ＭＢラインの一部を含み、スライスＣはスライスヘッダｈｃおよび第３ＭＢラインの残りの一部を含み、スライスＤはスライスヘッダｈｄおよび第４ＭＢラインを含む。
【０２７７】
ストリーム分割部１３０ｄのスライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈａを取得すると、そのスライスヘッダｈａを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈａが第１分割ストリームの一部として第１バッファ１４１に出力されるとともに、そのスライスヘッダｈａと同一の３つの複製スライスヘッダｈａ’のそれぞれが第２分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第２バッファ１４２、第３バッファ１４３、第４バッファ１４４に出力される。その結果、第１バッファ１４１にはスライスヘッダｈａが書き込まれ、第２バッファ１４２〜第４バッファ１４４のそれぞれには複製スライスヘッダｈａ’が書き込まれる。
【０２７８】
そして、スライスデータ処理部１３４ｄは、第１ＭＢラインに含まれるマクロブロックを先頭側から順次、第１分割ストリームの一部として第１バッファ１４１に出力する。これにより、第１バッファ１４１には、スライスヘッダｈａの直後にマクロブロックが書き込まれることになり、その第１バッファ１４１のリードポインタＲＰのガードが外される。したがって、第１バッファ１４１は、スライスヘッダｈａと第１ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第１領域ｄｆ１に出力する。第１ＭＢラインの先頭マクロブロックが第１バッファ１４１に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第１バッファ１４１に順次書き込まれるときには、その第１バッファ１４１に書き込まれているスライスヘッダｈａと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第１バッファ１４１は、第１ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第１領域ｄｆ１に順次出力する。
【０２７９】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈａおよび第１ＭＢラインが、第１バッファ１４１を介して分割ストリームバッファ１５２の第１領域ｄｆ１に格納される。
【０２８０】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｂを取得すると、そのスライスヘッダｈｂを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｂが第２分割ストリームの一部として第２バッファ１４２に出力されるとともに、そのスライスヘッダｈｂと同一の３つの複製スライスヘッダｈｂ’のそれぞれが第１分割ストリーム、第３分割ストリーム、第４分割ストリームの一部として第１バッファ１４１、第３バッファ１４３、第４バッファ１４４に出力される。
【０２８１】
その結果、第２バッファ１４２にはスライスヘッダｈｂが書き込まれ、第１バッファ１４１、第３バッファ１４３および第４バッファ１４４のそれぞれには複製スライスヘッダｈｂ’が書き込まれる。つまり、第２バッファ１４２〜第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは、スライスヘッダｈｂまたは複製スライスヘッダｈｂ’に上書される。
【０２８２】
そして、スライスデータ処理部１３４ｄは、第２ＭＢラインに含まれるマクロブロックを先頭側から順次、第２分割ストリームの一部として第２バッファ１４２に出力する。これにより、第２バッファ１４２には、スライスヘッダｈｂの直後にマクロブロックが書き込まれることになり、その第２バッファ１４２のリードポインタＲＰのガードが外される。したがって、第２バッファ１４２は、スライスヘッダｈｂと第２ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第２領域ｄｆ２に出力する。第２ＭＢラインの先頭マクロブロックが第２バッファ１４２に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第２バッファ１４２に順次書き込まれるときには、その第２バッファ１４２に書き込まれているスライスヘッダｈｂと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第２バッファ１４２は、第２ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第２領域ｄｆ２に順次出力する。
【０２８３】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｂおよび第２ＭＢラインが、第２バッファ１４２を介して分割ストリームバッファ１５２の第２領域ｄｆ２に格納される。
【０２８４】
ここで、スライスＢは、上述の第２ＭＢラインと第３ＭＢラインのうちの３マクロブロックを含んでいる。したがって、スライスデータ処理部１３４ｄは、第２ＭＢラインを出力した後、引き続き第３ＭＢラインの３マクロブロックを先頭側から順次、第３分割ストリームの一部として第３バッファ１４３に出力する。
【０２８５】
これにより、第３バッファ１４３には、複製スライスヘッダｈｂ’の直後にマクロブロックが書き込まれることになり、その第３バッファ１４３のリードポインタＲＰのガードが外される。したがって、第３バッファ１４３は、複製スライスヘッダｈｂ’と第３ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に出力する。第３ＭＢラインの先頭マクロブロックが第３バッファ１４３に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第３バッファ１４３に順次書き込まれるときには、その第３バッファ１４３に書き込まれている複製スライスヘッダｈｂ’と先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第３バッファ１４３は、第３ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に順次出力する。
【０２８６】
このようなストリーム分割部１３０ｄの処理によって、第３ＭＢラインに含まれるスライスＢの残りの３つのマクロブロックが、第３バッファ１４３を介して分割ストリームバッファ１５２の第３領域ｄｆ３に格納される。
【０２８７】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｃを取得すると、そのスライスヘッダｈｃを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｃが第３分割ストリームの一部として第３バッファ１４３に出力されるとともに、そのスライスヘッダｈｃと同一の３つの複製スライスヘッダｈｃ’のそれぞれが第１分割ストリーム、第２分割ストリーム、第４分割ストリームの一部として第１バッファ１４１、第２バッファ１４２、第４バッファ１４４に出力される。
【０２８８】
その結果、第３バッファ１４３にはスライスヘッダｈｃが書き込まれ、第１バッファ１４１、第２バッファ１４２および第４バッファ１４４のそれぞれには複製スライスヘッダｈｃ’が書き込まれる。つまり、第１バッファ１４１および第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは複製スライスヘッダｈｃ’に上書される。
【０２８９】
そして、スライスデータ処理部１３４ｄは、第３ＭＢラインに含まれるスライスＣのマクロブロックを先頭側から順次、第３分割ストリームの一部として第３バッファ１４３に出力する。これにより、第３バッファ１４３には、スライスヘッダｈｃの直後にマクロブロックが書き込まれることになり、その第３バッファ１４３のリードポインタＲＰのガードが外される。したがって、第３バッファ１４３は、スライスヘッダｈｃとスライスＣの先頭のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に出力する。スライスＣの先頭マクロブロックが第３バッファ１４３に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第３バッファ１４３に順次書き込まれるときには、その第３バッファ１４３に書き込まれているスライスヘッダｈｃと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第３バッファ１４３は、スライスＣの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第３領域ｄｆ３に順次出力する。
【０２９０】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｃおよびスライスＣのマクロブロックが、第３バッファ１４３を介して分割ストリームバッファ１５２の第３領域ｄｆ３に格納される。
【０２９１】
次に、スライスヘッダ処理部１３３ｈは、符号化ストリームのスライスヘッダｈｄを取得すると、そのスライスヘッダｈｄを第１バッファ１４１〜第４バッファ１４４のそれぞれに同時に出力する。その結果、そのスライスヘッダｈｄが第４分割ストリームの一部として第４バッファ１４４に出力されるとともに、そのスライスヘッダｈｄと同一の３つの複製スライスヘッダｈｄ’のそれぞれが第１分割ストリーム、第２分割ストリーム、第３分割ストリームの一部として第１バッファ１４１、第２バッファ１４２、第３バッファ１４３に出力される。
【０２９２】
その結果、第４バッファ１４４にはスライスヘッダｈｄが書き込まれ、第１バッファ１４１、第２バッファ１４２および第３バッファ１４３のそれぞれには複製スライスヘッダｈｄ’が書き込まれる。つまり、第１バッファ１４１、第２バッファ１４２および第４バッファ１４４のそれぞれに書き込まれていたスライスヘッダは、スライスヘッダｈｄまたは複製スライスヘッダｈｄ’に上書される。
【０２９３】
そして、スライスデータ処理部１３４ｄは、第４ＭＢラインに含まれるマクロブロックを先頭側から順次、第４分割ストリームの一部として第４バッファ１４４に出力する。これにより、第４バッファ１４４には、スライスヘッダｈｄの直後にマクロブロックが書き込まれることになり、その第４バッファ１４４のリードポインタＲＰのガードが外される。したがって、第４バッファ１４４は、スライスヘッダｈｄと第４ＭＢラインの先頭のマクロブロックを分割ストリームバッファ１５２の第４領域ｄｆ４に出力する。第４ＭＢラインの先頭マクロブロックが第４バッファ１４４に書き込まれた後に、その先頭マクロブロックの次に続く２番目以降のマクロブロックが第４バッファ１４４に順次書き込まれるときには、その第４バッファ１４４に書き込まれているスライスヘッダｈｂと先頭マクロブロックは２番目以降のマクロブロックによって上書きされて消去される。そして、第４バッファ１４４は、第４ＭＢラインの２番目以降のマクロブロックを取得するごとに、既に書き込まれているデータを消去しながら、その２番目以降のマクロブロックを分割ストリームバッファ１５２の第４領域ｄｆ４に順次出力する。
【０２９４】
このようなストリーム分割部１３０ｄの処理によって、スライスヘッダｈｄおよび第４ＭＢラインは、第３バッファ１４３を介して分割ストリームバッファ１５２の第４領域ｄｆ４に格納される。
【０２９５】
このように、変形例３では、スライスヘッダ処理部１３３ｈが、複製スライスヘッダが必要であるか否かに関わらず、複製スライスヘッダを出力するため、スライスヘッダ処理部１３３ｈにおけるその複製スライスヘッダの必要性の判断に要する処理負担を軽減することができる。さらに、スライスヘッダ処理部１３３ｈは、符号化ストリームに含まれるスライスヘッダを取得すると、単純にそのスライスヘッダを出力すればよいため、上記実施の形態のスライスヘッダ挿入部１３３のようにヘッダバッファ１３３ｄを備える必要がない。その結果、スライスヘッダ処理部１３３ｈの構成を簡単にすることができる。
【０２９６】
さらに、変形例３では、分割ストリームにおいてスライスヘッダが連続して挿入されることがないため、変形例２と比べて、連続するスライスヘッダに対する処理負担を軽減することができる。つまり、連続しているスライスヘッダの数をデコードエンジン１２０に通知するための処理や、デコードエンジン１２０がスライスヘッダに対してスキップすべきか否かを判別する処理などを省くことができる。その結果、ストリーム分割部１３０ｄおよびデコードエンジン１２０の機能構成を簡単にすることができ、デコードエンジン１２０に従来のデコードエンジンを流用することができる。
【０２９７】
図２０は、上記実施の形態またはその変形例に係る画像復号化装置の適用例を示す図である。
【０２９８】
例えば、上記実施の形態またはその変形例に係る画像復号化装置は、図２０に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生する再生装置１０１に備えられる。再生装置１０１は、ＢＳデジタル放送の放送波を受信するアンテナ１０１ａと装置本体１０１ｂとを備え、装置本体１０１ｂは上述の画像復号化装置を備える。
【０２９９】
装置本体１０１ｂに備えられた画像復号化装置は、アンテナ１０１ａによって受信された放送波から例えば４ｋ２ｋの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してＮ個の分割ストリームを生成し、Ｎ個の分割ストリームを並列に復号化する。
【０３００】
以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態およびその変形例を用いて説明したが、本発明は、これらに限定されるものではない。
【０３０１】
例えば、上記実施の形態およびその変形例では、画像復号化装置１００は分割ストリームバッファ１５２などを備えていたが、これらを備えていなくてもよい。
【０３０２】
図２１は、本発明の画像復号化装置の最小構成を示すブロック図である。
【０３０３】
画像復号化装置１０は、本発明を実現するための最小構成を有し、取得部１１、ストリーム分割部１２、およびＮ個の復号化部１３を備えている。
【０３０４】
取得部１１は、ストリームバッファ１５１、若しくはストリームバッファ１５１から画像復号化装置１０に符号化ストリームを取り込むための取得装置（あるいは単なる取得口）に相当し、画像データが符号化された符号化ストリームを取得する。ストリーム分割部１２は、ストリーム分割部１３０，１３０ｃ，１３０ｄに相当する。つまり、ストリーム分割部１２は、取得部１１で取得された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成する。Ｎ個の復号化部１３は、デコードエンジン１２０，１２１に相当し、ストリーム分割部１２により生成されたＮ個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部１２は、Ｎ個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の復号化部１３の何れかにスライスとして認識されるように、スライス部分群を新たなスライスとして再構成する。
【０３０５】
これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてＮ個の復号化部に割り当てられて復号化されるため、Ｎ個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、Ｈ．２６４／ＡＶＣの符号化ピクチャが１スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その１スライスの復号化を１つの復号化部で負担することなく、Ｎ個の復号化部で均等に負担することができる。
【０３０６】
ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、１つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が１つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。
【０３０７】
そこで本発明では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部１３は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本発明では、Ｎ個の復号化部１３のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
【０３０８】
したがって、画像復号化装置１０は、上記実施の形態およびその変形例における分割ストリームバッファ１５２などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
【０３０９】
図２２は、ストリーム分割部１２の構成を示すブロック図である。
【０３１０】
ストリーム分割部１２は、例えば、複製部１２ａ、アドレス更新部１２ｂ、および挿入部１２ｃを備えている。
【０３１１】
複製部１２ａおよび挿入部１２ｃは、スライスヘッダ挿入部１３３またはスライスヘッダ処理部１３３ｇ，１３３ｈに相当する。また、複製部１２ａは、符号化ピクチャに含まれるスライスの先頭にある、そのスライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する。例えば、補助情報はスライスヘッダに相当し、複製補助情報は複製スライスヘッダに相当する。挿入部１２ｃは、その複製補助情報を補助情報としてスライス部分群の先頭に挿入する。アドレス更新部１２ｂは、ヘッダアドレス更新部１３３ｃに相当し、複製補助情報に含まれるアドレス情報を、スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新する。なお、アドレス情報はＭＢアドレス情報である。
【０３１２】
ここで、アドレス更新部１２ｂは、ストリーム分割部１２に備えられ、複製部１２ａによって生成された複製補助情報に含まれるアドレス情報を更新する。そして、挿入部１２ｃは、アドレス更新部１２ｂによって更新されたアドレス情報を含む複製補助情報をスライス部分群の先頭に挿入する。
【０３１３】
これにより、スライス部分群の先頭のマクロブロックのアドレスを示すアドレス情報が、そのスライス部分群の補助情報に含まれているため、復号化部１３は、特別な処理を行うことなく、そのアドレス情報を読み出すことによって、そのスライス部分群の先頭のマクロブロックのアドレスを適切に把握することができる。
【０３１４】
なお、アドレス更新部１２ｂはストリーム分割部１２の外部にあってもよい。
【０３１５】
図２３は、本発明の画像復号化装置の他の最小構成を示すブロック図である。
【０３１６】
画像復号化装置２０は、本発明を実現するための他の最小構成を有し、取得部１１、ストリーム分割部２２、アドレス更新部１２ｂおよびＮ個の復号化部１３を備えている。ストリーム分割部２２は、複製部１２ａと挿入部１２ｃだけを備え、アドレス更新部１２ｂは、ストリーム分割部２２の外部に備えられている。この場合、アドレス更新部１２ｂは、挿入部１２ｃによってスライス部分群の先頭に挿入されている複製補助情報に含まれるアドレス情報を更新する。
【０３１７】
また、アドレス更新部１２ｂは、Ｎ個の復号化部１３のそれぞれに備えられていてもよい。この場合、復号化部１３は、その復号化部１３が処理対象とする分割ストリームに対してアドレス情報の更新を行う機能を有する。つまり、上記実施の形態の変形例１がこの場合に相当する。
【０３１８】
図２４は、ストリーム分割部１２の他の構成を示すブロック図である。
【０３１９】
ストリーム分割部１２は、補助情報処理部１２ｄ、分割出力部１２ｅ、およびＮ個のバッファ１２ｆを備えている。ここで、符号化ストリームに含まれるスライスの先頭には、そのスライスの復号化に必要な補助情報がある。例えば、補助情報はスライスヘッダに相当する。Ｎ個のバッファ１２ｆはそれぞれ、第１バッファ１４１〜第４バッファ１４４に相当し、Ｎ個の復号化部１３にそれぞれ対応付けられている。分割出力部１２ｅは、スライスデータ処理部１３４ｄに相当し、符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、Ｎ個のバッファ１２ｆのうちの何れかに出力する。補助情報処理部１２ｄは、スライスヘッダ処理部１３３ｈに相当し、符号化ピクチャに含まれるデータを順次取得し、そのデータが補助情報であるときに、その補助情報をＮ個のバッファ１２ｆに出力する。
【０３２０】
ここで、Ｎ個のバッファ１２ｆのそれぞれは、分割出力部１２ｅから出力された構成単位に含まれるデータを取得するごとに、そのデータを出力する。また、Ｎ個のバッファ１２ｆのそれぞれは、補助情報処理部１２ｄから出力された補助情報を取得したときには、その補助情報を保持し、その補助情報の直後に構成単位のデータを取得したときにのみ、保持している補助情報をそのデータの前に出力し、補助情報の直後に新たな補助情報を取得したときには、補助情報をその新たな補助情報に上書きする。Ｎ個の復号化部１３のそれぞれは、その復号化部１３に対応付けられたバッファから出力される補助情報および構成単位のデータからなる分割ストリームを復号化する。
【０３２１】
これにより、補助情報処理部１２ｄが、符号化ストリームから得られる補助情報をＮ個のバッファ１２ｆに単純に出力すれば、Ｎ個のバッファ１２ｆに出力された補助情報のうち、Ｎ個の分割ストリームに必要とされる補助情報だけを、そのＮ個のバッファから適切なタイミングで出力させることができる。その結果、簡単な構成で、符号化ピクチャのスライスの先頭でなかったスライス部分群の先頭に、補助情報を適切に挿入することができる。
【０３２２】
なお、上記実施の形態およびその変形例では、複製スライスヘッダを挿入したが、複製スライスヘッダを挿入しなくてもよい。例えば、複製元のスライスヘッダに含まれる、そのスライスヘッダを有するスライスの復号化に必要な補助情報だけを複製し、その複製によって生成された複製補助情報を挿入してもよい。
【０３２３】
また、上記実施の形態およびその変形例では、１ＭＢラインを１つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は１ＭＢラインに限らず、２ＭＢラインや、３ＭＢラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがＭＢＡＦＦで構成されている場合には、２ＭＢラインを構成単位として扱い、ピクチャがＭＢＡＦＦで構成されていない場合には、１ＭＢラインを構成単位として扱ってもよい。
【０３２４】
また、上記実施の形態およびその変形例では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のＭＢラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのＭＢラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
【０３２５】
なお、ブロック図（図１、図７、図９、図１５および図１７など）の各機能ブロックは典型的には集積回路であるＬＳＩ（Large Scale Integration）として実現される。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。例えばメモリ以外の機能ブロックが１チップ化されていても良い。
【０３２６】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Integrated Circuit）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３２７】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０３２８】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０３２９】
本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという効果を奏し、例えば、４ｋ２ｋの符号化ストリームを復号化する再生装置などとして有用である。
【符号の説明】
【０３３０】
１００    画像復号化装置
１１０    デコーダ
１２０    第１〜第Ｎデコードエンジン
１３０    ストリーム分割部
１３１    スタートコード検出部 
１３２ａ    ＥＰＢ除去部
１３２ｂ    ＥＰＢ挿入部
１３３    スライスヘッダ挿入部
１３３ａ    ＮＡＬタイプ判定部
１３３ｂ    ヘッダ挿入カウンタ
１３３ｃ    ヘッダアドレス更新部
１３３ｄ    ヘッダバッファ
１３４ａ，１３４ｂ    スライスデータ処理部
１３５ａ，１３５ｂ    スライスデータ層デコード部
１３６ａ，１３６ｂ    マクロブロック層デコード部
１３７ａ    スキップラン分割部
１３８ａ，１３８ｂ    ＱＰ計算部
１３９ａ，１３９ｂ    分割点検出部
１５０    メモリ
１５１    ストリームバッファ
１５２    分割ストリームバッファ
１５３    フレームメモリ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化装置。
【請求項２】
前記ストリーム分割部は、
前記スライス部分群の先頭が、前記符号化ピクチャに含まれるスライスの先頭でない場合には、前記スライス部分群の先頭に、前記スライスの復号化に必要な補助情報を挿入することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１記載の画像復号化装置。
【請求項３】
前記ストリーム分割部は、前記スライス部分群の先頭に前記補助情報をヘッダとして挿入する、
請求項２記載の画像復号化装置。
【請求項４】
前記ストリーム分割部は、
前記符号化ピクチャに含まれるスライスの先頭にある、前記スライスの復号化に必要な補助情報を複製することにより複製補助情報を生成する複製部と、
前記複製補助情報を前記補助情報として前記スライス部分群の先頭に挿入する挿入部とを備え、
前記画像復号化装置は、さらに、
前記複製補助情報に含まれるアドレス情報を、前記スライス部分群に含まれる先頭のマクロブロックのアドレスを示すアドレス情報に更新するアドレス更新部を備える、
請求項２記載の画像復号化装置。
【請求項５】
前記アドレス更新部は、
前記ストリーム分割部に備えられ、前記複製部によって生成された複製補助情報に含まれるアドレス情報を更新し、
前記挿入部は、
前記アドレス更新部によって更新されたアドレス情報を含む前記複製補助情報を前記スライス部分群の先頭に挿入する、
請求項４記載の画像復号化装置。
【請求項６】
前記アドレス更新部は、
前記挿入部によって前記スライス部分群の先頭に挿入されている前記複製補助情報に含まれるアドレス情報を更新する、
請求項４記載の画像復号化装置。
【請求項７】
前記符号化ストリームに含まれるスライスの先頭には、前記スライスの復号化に必要な補助情報があり、
前記ストリーム分割部は、
前記Ｎ個の復号化部にそれぞれ対応付けられたＮ個のバッファと、
前記符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、前記Ｎ個のバッファのうちの何れかに出力する分割出力部と、
前記符号化ピクチャに含まれるデータを順次取得し、前記データが前記補助情報であるときに、前記補助情報を前記Ｎ個のバッファに出力する補助情報処理部とを備え、
前記Ｎ個のバッファのそれぞれは、
前記分割出力部から出力された前記構成単位に含まれるデータを取得するごとに、前記データを出力し、
前記補助情報処理部から出力された前記補助情報を取得したときには、前記補助情報を保持し、前記補助情報の直後に前記構成単位のデータを取得したときにのみ、保持している前記補助情報を前記データの前に出力し、前記補助情報の直後に新たな補助情報を取得したときには、前記補助情報を前記新たな補助情報に上書きし、
前記Ｎ個の復号化部のそれぞれは、
当該復号化部に対応付けられたバッファから出力される前記補助情報および前記構成単位のデータからなる前記分割ストリームを復号化する、
請求項２記載の画像復号化装置。
【請求項８】
前記ストリーム分割部は、
前記スライス部分群の終端が、前記符号化ピクチャに含まれるスライスの終端でない場合には、前記スライス部分群の終端であることを示す終端情報を、当該スライス部分群の終端に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
請求項１〜７の何れか１項に記載の画像復号化装置。
【請求項９】
前記ストリーム分割部は、
さらに、分割すべきか否かを示すモード情報を取得し、前記モード情報が分割すべきでないことを示す場合には、前記取得部によって取得される複数の符号化ストリームのそれぞれを、前記Ｎ個の復号化部のうちの何れかに出力し、
前記Ｎ個の復号化部は、
さらに、前記ストリーム分割部から出力された複数の符号化ストリームを取得したときには、前記複数の符号化ストリームを並列に復号化する、
請求項１〜８の何れか１項に記載の画像復号化装置。
【請求項１０】
前記ストリーム分割部は、前記符号化ピクチャの水平方向に一列に配列された複数のマクロブロックからなるマクロブロックラインを少なくとも１つ含む単位を前記構成単位として扱い、前記符号化ピクチャを複数の前記構成単位に分割する、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１１】
前記N個の復号化部は、第１および第２の復号化部を含み、
前記第１の復号化部が、前記N個の分割ストリームのうちの当該第１の復号化部に割り当てられた分割ストリームに含まれる第１のスライス部分を復号化し、前記第２の復号化部が、前記N個の分割ストリームのうちの当該第２の復号化部に割り当てられた分割ストリームに含まれる第２のスライス部分を復号化する場合であって、前記第１および第２のスライス部分が前記符号化ピクチャ内で互いに隣接していた場合には、
前記第１の復号化部は、前記第２の復号化部による前記第２のスライス部分の復号化開始前に、前記第１のスライス部分の復号化を開始し、
前記第２の復号化部は、前記第１の復号化部による前記第１のスライス部分の復号化によって生成される隣接情報を前記第１の復号化部から取得し、前記隣接情報を用いて前記第２のスライス部分を復号化する、または、前記隣接情報を用いずに前記第２のスライス部分を復号化する、
請求項１〜９の何れか１項に記載の画像復号化装置。
【請求項１２】
画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
画像復号化方法。
【請求項１３】
画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
前記符号化ストリームを取得し、
取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成し、
生成されたＮ個の分割ストリームのそれぞれを並列に復号化し、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
ことをコンピュータに実行させるプログラム。
【請求項１４】
画像データが符号化された符号化ストリームを復号化する集積回路であって、
前記符号化ストリームを取得する取得部と、
前記取得部で取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、複数の前記構成単位のそれぞれを、生成対象であるＮ個（Ｎは２以上の整数）の分割ストリームのうちの何れかの一部に割り当てることにより、Ｎ個の分割ストリームを生成するストリーム分割部と、
前記ストリーム分割部により生成されたＮ個の分割ストリームのそれぞれを並列に復号化するＮ個の復号化部とを備え、
前記ストリーム分割部は、
前記Ｎ個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の前記分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも１つのスライス部分からなるスライス部分群が、Ｎ個の前記復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成する、
集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010041472.tif 000040
【図２Ａ】
2010041472.tif 000041
【図２Ｂ】
2010041472.tif 000042
【図３】
2010041472.tif 000043
【図４】
2010041472.tif 000044
【図５】
2010041472.tif 000045
【図６】
2010041472.tif 000046
【図７】
2010041472.tif 000047
【図８】
2010041472.tif 000048
【図９】
2010041472.tif 000049
【図１０】
2010041472.tif 000050
【図１１Ａ】
2010041472.tif 000051
【図１１Ｂ】
2010041472.tif 000052
【図１２】
2010041472.tif 000053
【図１３Ａ】
2010041472.tif 000054
【図１３Ｂ】
2010041472.tif 000055
【図１３Ｃ】
2010041472.tif 000056
【図１４】
2010041472.tif 000057
【図１５】
2010041472.tif 000058
【図１６】
2010041472.tif 000059
【図１７】
2010041472.tif 000060
【図１８】
2010041472.tif 000061
【図１９】
2010041472.tif 000062
【図２０】
2010041472.tif 000063
【図２１】
2010041472.tif 000064
【図２２】
2010041472.tif 000065
【図２３】
2010041472.tif 000066
【図２４】
2010041472.tif 000067
【図２５】
2010041472.tif 000068
【図２６】
2010041472.tif 000069
【図２７】
2010041472.tif 000070
【図２８】
2010041472.tif 000071
【図２９】
2010041472.tif 000072
【図３０】
2010041472.tif 000073
【図３１Ａ】
2010041472.tif 000074
【図３１Ｂ】
2010041472.tif 000075
【図３２】
2010041472.tif 000076
【国際調査報告】
2010041472.tif 000077
2010041472.tif 000078
2010041472.tif 000079
2010041472.tif 000080