(57)【要約】  処理順序による依存関係を有する符号化ストリームを並列に復号する画像復号装置（４０）は、符号化ストリーム（Ｓｔｒ）に含まれるマクロブロック群ごとに、プリデコード処理を行うことにより、他のマクロブロック群の復号処理に必要なマクロブロック復号情報（１００１）を生成するスライスデータプリデコード部（４０２）と、それぞれが符号化ストリーム（Ｓｔｒ）に含まれる互いに異なるマクロブロック群に対して復号処理を並列に行う第１マクロブロック復号部（４０４）および第２マクロブロック復号部（４０５）とを備え、マクロブロック復号部（４０４，４０５）のそれぞれは、一方のマクロブロック群に対して復号処理を行うときには、他方のマクロブロック群に対して既に生成されたマクロブロック復号情報（１００１）を用いて復号処理を行う。
2009150808.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
画像復号装置。
【請求項２】
前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、
前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号する、
請求項１記載の画像復号装置。
【請求項３】
前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、
前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
請求項１または２記載の画像復号装置。
【請求項４】
前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要なパラメータを、前記ブロック復号情報として生成する、
請求項１〜３の何れか１項に記載の画像復号装置。
【請求項５】
前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成する、
請求項１〜４の何れか１項に記載の画像復号装置。
【請求項６】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、
それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部と
を備える画像符号化装置。
【請求項７】
前記調整部は、前記複数のブロック符号化部による符号化に用いられるパラメータを決定し、
前記複数のブロック符号化部はそれぞれ、前記調整部によって決定されたパラメータを用いて符号化を行うことにより、前記符号化ストリームに一致した前記中間ストリームを生成する、
請求項６記載の画像符号化装置。
【請求項８】
前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
請求項６記載の画像符号化装置。
【請求項９】
前記中間ストリームに含まれる前記各パラメータは符号化されており、
前記調整部は、前記パラメータを修正するときには、前記パラメータに対して既に行われていた符号化をやり直す、
請求項８記載の画像符号化装置。
【請求項１０】
前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、当該ブロック群に含まれる最後のブロックの符号化に用いられたパラメータを前記保存パラメータとして保存しておく、
請求項８または９記載の画像符号化装置。
【請求項１１】
前記調整部は、前記符号化ブロック群のパラメータを修正するときには、前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックの符号化に用いられたパラメータを修正する
請求項８〜１０の何れか１項に記載の画像符号化装置。
【請求項１２】
前記複数のブロック符号化部のそれぞれは、前記ブロック群の符号化に用いられたパラメータを符号化ブロック群に含めるときには、前記ブロック群の符号化前に既に判明している既定係数を用いて前記パラメータを圧縮して前記符号化ブロック群に含め、
前記調整部は、前記符号化ブロック群の圧縮された前記パラメータを、前記既定係数を用いて伸張し、伸張された前記パラメータを、前記保存パラメータを用いて圧縮することにより、前記符号化ブロック群の圧縮された前記パラメータを修正する
請求項８〜１１の記載の画像符号化装置。
【請求項１３】
前記調整部は、
前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックから符号化が不要とされた連続するブロックの数を示す、前記符号化ブロック群に含まれている第１のスキップパラメータと、
前記他の符号化ブロック群に含まれる符号化された複数のブロックのうちの最後のブロックから符号化が不要とされた連続するブロックの数を示す、前記他の符号化ブロック群に含まれている第２のスキップパラメータとが共に０であるか否かを判定し、
０でないと判定した場合に、前記符号化ブロック群のパラメータとして前記中間ストリームに含まれていた前記第１のスキップパラメータを削除することにより前記パラメータを修正するとともに、前記第２のスキップパラメータの示す数と前記第１のスキップパラメータの数とを加えた数を示すように、前記中間ストリームに含まれている前記第２のスキップパラメータを修正する
請求項８または９記載の画像符号化装置。
【請求項１４】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号方法であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行い、
前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
画像復号方法。
【請求項１５】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化方法であって、
前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる、
画像符号化方法。
【請求項１６】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号するためのプログラムであって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う
ことをコンピュータに実行させ、
前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
プログラム。
【請求項１７】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化するためのプログラムであって、
前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる
ことをコンピュータに実行させるプログラム。
【請求項１８】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する集積回路であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
集積回路。
【請求項１９】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する集積回路であって、
それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部と
を備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像データの復号または符号化を行なう画像復号装置、画像符号化装置、画像復号方法および画像符号化方法に関する。
【背景技術】
【０００２】
動画像データを圧縮符号化（以下、単に「符号化」と呼ぶ）する技術として、フレーム間差分を用いたＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）符号化方式が用いられることが多い。ＭＰＥＧ符号化方式としては、ＭＰＥＧ−２（ＩＳＯ／ＩＥＣ１３８１８−２）やＭＰＥＧ−４（ＩＳＯ/ＩＥＣ１４４９６−２）が従来から使用されている。加えて、近年ではＨ．２６４／ＭＰＥＧ−４  ＡＶＣ（ＩＳＯ／ＩＥＣ１４４９６−１０）（以下、単に「Ｈ．２６４」と呼ぶ）やＶＣ−１（ＳＭＰＴＥ  ４２１Ｍ）といった新しい符号化方式が用いられるようになってきている。【０００３】
このような符号化規格では、１つの画面（ピクチャ）内を所定画素数のブロック（輝度成分：１６画素×１６画素）に分割し、当該ブロック単位で復号処理または符号化処理が行われる。この画素ブロックのことをマクロブロックという。【０００４】
Ｈ．２６４に代表される新しい符号化方式では、マクロブロックを符号化する際、その処理対象マクロブロックに隣接しているマクロブロック（以下、隣接マクロブロックという）と処理対象マクロブロックとの相関を利用して圧縮効率を高めている。つまり、この新しい符号化方式には、位置による依存関係がある。【０００５】
図２２は、Ｈ．２６４における位置による依存関係を示す図である。【０００６】
具体的には、ある任意のマクロブロックを処理対象マクロブロックとして復号または符号化するときには、図２２に示す通り、処理対象マクロブロックに隣接する、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、および右上隣接マクロブロックＣの、４つの隣接マクロブロックの処理結果を参照する必要がある。【０００７】
このため、予めこれらの隣接マクロブロックを復号または符号化しておかなければならない。つまり、復号処理および符号化処理には、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、および右上隣接マクロブロックＣの位置による依存関係がある。【０００８】
復号処理あるいは符号化処理を高速に行うために、マクロブロックを復号する復号部あるいは符号化する符号化部を複数用いて並列処理するには、この位置による依存関係を解決する必要がある。特許文献１では、この依存関係を解決する方法が提案されている。【０００９】
図２３は、上記特許文献１に記載された画像復号装置および画像符号化装置の処理手順を示す図である。図２３において、各マクロブロックＭＢ内に付けられた番号は、そのマクロブロックＭＢが復号または符号化される処理順序を示す。つまり、同じ番号のマクロブロックＭＢは同時に並列に処理される。【００１０】
図２３に示すように、上記特許文献１の画像復号装置および画像符号化装置は、ピクチャＰｉｃの左上のマクロブロックＭＢから処理を開始し、ある任意のマクロブロックＭＢを処理する場合、そのマクロブロックＭＢの１つ下の行の２列左側に位置するマクロブロックＭＢを並列に処理することで、上述の位置による依存関係を解決している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−１２９２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記特許文献１の画像復号装置および画像符号化装置であっても、Ｈ．２６４に代表される新しい符号化方式の復号処理または符号化処理を並列に実行することができず、復号処理または符号化処理を高速化することができないという問題がある。【００１３】
Ｈ．２６４に代表される新しい符号化方式では、直前に復号または符号化されたマクロブロックとの相関も利用して圧縮効率を高めている。例えばＨ．２６４では、ある任意のマクロブロックの量子化パラメータＱＰは、その直前に処理されたマクロブロックの量子化パラメータ（ＱＰ＿ＰＲＥＶ）を用いて算出されている。そのため、ある任意のマクロブロックを復号または符号化するには、その直前に処理されたマクロブロックを参照する必要がある。つまり、前述の位置による依存関係に加えて、処理順序による依存関係がある。【００１４】
図２４は、Ｈ．２６４における処理順序による依存関係を示す図である。【００１５】
ＭＰＥＧ符号化方式では、図２４に示す通り、ピクチャＰｉｃ内のマクロブロックＭＢはラスタースキャン順で処理される。ここで、図２４中のマクロブロックＭＢに付けられた番号は処理順序を示し、矢印は処理順序による依存関係を示している。通常、直前に処理されたマクロブロックＭＢは、処理対象マクロブロックＭＢの左隣接マクロブロックＭＢになるため、この処理対象マクロブロックＭＢにおける処理順序による依存関係は、位置による依存関係と同じになる。しかし、ピクチャＰｉｃの左端に位置するマクロブロックＭＢを処理する場合、直前に処理されたマクロブロックＭＢは、その１つ上の行の右端に位置するマクロブロックＭＢになる。例えば、図２４では９番のマクロブロックＭＢの直前のマクロブロックＭＢは、８番のマクロブロックＭＢであり、１つ上の行の右端に位置するマクロブロックＭＢである。【００１６】
上記特許文献１の画像復号装置および画像符号化装置では、ピクチャＰｉｃの左端に位置するマクロブロックＭＢを処理する前に、そのマクロブロックＭＢ（処理対象マクロブロック）の１つ上の行の右端に位置するマクロブロックＭＢを処理しておらず、処理順序による依存関係が解決できていない。つまり、上記特許文献１の画像復号装置および画像符号化装置では、並列に復号および符号化することができない。【００１７】
そこで、本発明は、かかる問題に鑑みてなされたものであって、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して、動画像データを並列に復号および符号化する画像復号装置、画像符号化装置、画像復号方法および画像符号化方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、本発明にかかる画像復号装置は、複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴とする。【００１９】
例えば、第１のブロック復号部による第１のブロック群の復号処理と、第２のブロック復号部による第２のブロック群の復号処理とが行われるときに、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係が第１および第２のブロック群にある場合には、第２のブロック群の復号処理には、第１のブロック群に対してプリデコード処理（可変長復号）が行われて生成されるブロック復号情報（例えば、量子化パラメータなど）が必要となる。そこで、本発明では、第１のブロック群の復号処理の前に、その第１のブロック群に対してプリデコード処理をしておき、そのプリデコード処理によって得られたブロック復号情報を用いて、第１のブロック群の復号処理と第２のブロック群の復号処理とを並列に行う。このように、本発明では、事前にプリデコード処理を行ってブロック復号情報を生成しておくことにより、複数のブロック復号部は、予め定められた処理順序でブロック群を順次復号しなくても、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができる。さらに、本発明では、複数のブロック復号部はそれぞれ、プリデコード処理されたブロック群に対して、復号処理のうちプリデコード処理を除く残りの処理を行うのではなく、符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、プリデコード処理された複数のブロック群を有する一部復号済みの符号化ストリームを生成する必要がない。この一部復号済みの符号化ストリームは、元の符号化ストリームをよりもデータ量が多い。したがって、本発明では、複数のブロック復号部が、元の符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、復号処理の対象となるストリームを復号処理の前に一時的に蓄えておくバッファの容量を抑えることができる。【００２０】
また、前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号することを特徴としてもよい。【００２１】
これにより、符号化ストリームの各ブロック群の先頭にビットパターンが挿入されているため、各ブロック復号部は、符号化ストリームに対してその先頭から順に可変長復号を行うことなく、復号処理の対象となるブロック群を容易に見つけることができる。【００２２】
また、前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴としてもよい。【００２３】
これにより、ブロック復号情報が符号化ストリームに挿入されるため、各ブロック復号部は、符号化ストリームを取得するときにブロック復号情報も取得することができ、ブロック復号情報を容易に取得することができる。【００２４】
また、前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成することを特徴としてもよい。【００２５】
これにより、最後のブロックの復号処理に必要な係数（例えば、量子化パラメータ）と、予め定められた係数（例えば、スライスヘッダに格納された量子化パラメータの初期値）との差分がブロック復号情報として生成されるため、最後のブロックの係数そのものをブロック復号情報として生成するよりも、ブロック復号情報のデータ量を抑えることができる。【００２６】
上記目的を達成するために、本発明にかかる画像符号化装置は、複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部とを備えることを特徴とする。【００２７】
これにより、複数のブロック符号化部が複数のブロック群を並列に符号化しても、調整部によるパラメータ（例えば、量子化パラメータ）の調整によって、複数のブロック群が予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができる。【００２８】
また、前記調整部は、前記複数のブロック符号化部による符号化に用いられるパラメータを決定し、前記複数のブロック符号化部はそれぞれ、前記調整部によって決定されたパラメータを用いて符号化を行うことにより、前記符号化ストリームに一致した前記中間ストリームを生成することを特徴としてもよい。【００２９】
これにより、各ブロック符号化部の符号化に用いられるパラメータが決定されて、そのパラメータを用いて符号化が行われるため、各ブロック符号化部は、他のブロック符号化部による符号化が行われていなくても、その符号化に用いられる既に決定されたパラメータを知ることができ、自らの符号化に用いられた他のパラメータを、その決定されたパラメータを用いて処理した上で符号化ストリーム中に含めることができる。その結果、簡単に符号化ストリームに一致した中間ストリームを生成することができる。【００３０】
また、前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させることを特徴としてもよい。【００３１】
これにより、中間ストリームは生成された後に符号化ストリームに一致するように修正されるため、上述のように予めパラメータが決定されてそのパラメータどおりに符号化が行われる場合と比べて、より適切な符号化を行うことができる。【００３２】
なお、本発明は、このような画像復号装置および画像符号化装置として実現することができるだけでなく、画像復号方法、画像符号化方法、コンピュータに復号または符号化させるためのプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００３３】
本発明の画像復号装置および画像符号化装置によれば、処理順序による依存関係がある符号化画像を並列に復号することができ、高速に符号化画像を復号することができるとともに、処理順序による依存関係がある符号化方式で画像を並列に符号化することができ、高速に画像を符号化することができる。
【図面の簡単な説明】
【００３４】
【図１】図１は、本発明の実施の形態１における画像復号装置の構成図である。
【図２】図２は、同上のマクロブロック復号部の構成図である。
【図３】図３は、一般的なＨ．２６４の符号化ストリームの構成図である。
【図４】図４は、本発明の実施の形態１における画像復号装置の動作を示すフロー図である。
【図５】図５は、同上のマクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。
【図６】図６は、同上のスライスデータのプリデコード処理の動作を示すフロー図である。
【図７】図７は、同上の加工済符号化ストリームのスライスデータの構成図である。
【図８】図８は、同上のマクロブロック復号部による復号処理を示すフロー図である。
【図９】図９は、本発明の実施の形態２における画像符号化装置の構成図である。
【図１０】図１０は、同上のマクロブロック符号化部の構成図である。
【図１１】図１１は、同上の画像符号化装置の動作を示すフロー図である。
【図１２】図１２は、同上のマクロブロック符号化部による符号化処理を示すフロー図である。
【図１３】図１３は、同上の可変長符号化処理を示すフロー図である。
【図１４】図１４は、ＣＡＶＬＣで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。
【図１５】図１５は、ＣＡＢＡＣで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。
【図１６】図１６は、本発明の実施の形態２の変形例に係る画像符号化装置の構成図である。
【図１７】図１７は、同上の画像符号化装置の動作を示すフロー図である。
【図１８Ａ】図１８Ａは、同上の量子化パラメータが決定されるマクロブロックの位置を示す図である。
【図１８Ｂ】図１８Ｂは、同上のスキップランパラメータが決定されるマクロブロックの位置を示す図である。
【図１９】図１９は、同上のマクロブロック符号化部による符号化処理の詳細を示すフロー図である。
【図２０】図２０は、同上のマクロブロック符号化部の構成図である。
【図２１】図２１は、可変長符号化部によって行われる可変長符号化処理の詳細を示すフロー図である。
【図２２】図２２は、Ｈ．２６４における位置による依存関係を示す図である。
【図２３】図２３は、従来の画像復号装置および画像符号化装置の処理手順を示す図である
【図２４】図２４は、Ｈ．２６４における処理順序による依存関係を示す図である。
【発明を実施するための形態】
【００３５】
以下、Ｈ．２６４符号化方式に対応した画像復号装置および画像符号化装置に、本発明を適用した実施の形態について、図面を参照しながら説明する。なお、以下に示す実施の形態は、Ｈ．２６４の画像復号装置および画像符号化装置であるが、処理順序による依存関係を持つ動画像符号化方式であれば、どのような動画像符号化方式に対しても、以下に示す実施の形態と同様の形態で本発明を実現することができる。
【００３６】
（実施の形態１）
図１は、本発明の実施の形態１における画像復号装置の構成図である。
【００３７】
図１に示すように、画像復号装置４０は、復号制御部４００、ヘッダ復号部４０１、スライスデータプリデコード部４０２、ストリームバッファ４０３、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、デブロッキングフィルタ部４０６、および参照画像メモリ４０７から構成される。なお、以下の説明において、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５をそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
【００３８】
次に、図１に示す画像復号装置４０の各構成要素の動作について説明する。
【００３９】
ヘッダ復号部４０１は、Ｈ．２６４で符号化された符号化ストリームＳｔｒを取得し、その符号化ストリームＳｔｒに含まれるヘッダを順次復号する。
【００４０】
スライスデータプリデコード部４０２は、ヘッダ復号部４０１から、ヘッダが復号された符号化ストリームＳｔｒを取得し、その符号化ストリームＳｔｒに含まれるマクロブロックの復号処理を並列に行う上で予め必要となるパラメータ（並列処理用パラメータ）を復号する。さらに、スライスデータプリデコード部４０２は、その並列処理用パラメータの復号結果を用いて、符号化ストリームＳｔｒの加工処理を行い、加工処理された符号化ストリーム（以下、加工済符号化ストリームＳｔｍという）をストリームバッファ４０３に出力する。これにより、加工済符号化ストリームＳｔｍはストリームバッファで一時的に保持される。
【００４１】
第１マクロブロック復号部４０４および第２マクロブロック復号部４０５はそれぞれ、ストリームバッファ４０３から加工済符号化ストリームＳｔｍを読み出し、加工済符号化ストリームＳｔｍに含まれる符号化された複数のマクロブロックのうち、それぞれのマクロブロック復号部に割り当てられたマクロブロックを並列に復号する。この時、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５はそれぞれ、必要に応じて、参照画像メモリ４０７から動き補償予測に用いる参照画像を読み出し、その読み出された参照画像を用いてマクロブロックを復号する。なお、参照画像は画素データから構成されている。その結果、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、再構成された画素データからなる再構成画像をデブロッキングフィルタ部４０６に出力する。
【００４２】
デブロッキングフィルタ部４０６は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行うことによって、復号画像を生成して出力する。また、デブロッキングフィルタ部４０６は、その復号画像を画像復号装置４０の外部に出力すると共に、その復号画像がマクロブロックの復号処理での参照画像として用いられるために、その復号画像を参照画像メモリ４０７に書き込み、参照画像メモリ４０７に一時的に保持させる。
【００４３】
復号制御部４００は、ヘッダ復号部４０１、スライスデータプリデコード部４０２、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、およびデブロッキングフィルタ部４０６を制御することにより、画像復号処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
【００４４】
図２は、マクロブロック復号部の構成図である。
【００４５】
第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、共に同じ構成を有し、それぞれ、可変長復号部５００、逆量子化部５０１、逆直交変換部５０２、画面内予測部５０３、動き補償予測部５０４、および加算回路５０５から構成される。
【００４６】
可変長復号部５００は、加工済符号化ストリームＳｔｍのうち復号処理の対象となる複数のマクロブロックからなるブロック群（例えば、マクロブロックライン）を可変長復号して、予測モード、量子化された係数、および動きベクトルなどを出力する。逆量子化部５０１は、可変長復号部５００から出力される量子化された係数に対して逆量子化を行い、係数データを逆直交変換部５０２に出力する。逆直交変換部５０２では、係数データに対して逆直交変換を行い、空間領域の画素データからなる誤差画像を生成する。
【００４７】
画面内予測部５０３と動き補償予測部５０４は、可変長復号部５００が出力する予測モードによって、どちらか一方が起動され、画素データから成る予測画像を生成する。予測モードがイントラ予測であった場合は、画面内予測部５０３が起動され、このとき、画面内予測部５０３は画面内予測を行う。予測モードがインター予測であった場合は、動き補償予測部５０４が起動される。このとき、動き補償予測部５０４は、復号された動きベクトルに応じた参照画像を取得して、動き補償予測を行う。加算回路５０５は、逆直交変換部５０２から出力された誤差画像と、画面内予測部５０３または動き補償予測部５０４から出力された予測画像とを加算することにより、画素データからなる再構成画像を生成して出力する。
【００４８】
図３は、一般的なＨ．２６４の符号化ストリームＳｔｒの構成図である。
【００４９】
符号化ストリームＳｔｒの先頭にはＳＰＳ（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ６０１があり、その後にＰＰＳ（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ６０２、スライスヘッダ６０３、およびスライスデータ６０４が続く。ＳＰＳヘッダ６０１、ＰＰＳヘッダ６０２、およびスライスヘッダ６０３の先頭にはデータの区切りを示すスタートコード（ＳＣ：Ｓｔａｒｔ  Ｃｏｄｅ）６００が挿入されている。
【００５０】
そのため、ヘッダ復号部４０１は、符号化ストリームＳｔｒに対してスタートコードサーチを行い、スタートコード６００に続くデータを解析することで、符号化ストリームＳｔｒの中からＳＰＳヘッダ６０１、ＰＰＳヘッダ６０２、スライスヘッダ６０３を探索することができる。ピクチャの先頭にはＰＰＳヘッダ６０２が存在し、次のＰＰＳヘッダ６０２が現れるまでの一連のデータが１ピクチャ分のデータである。１ピクチャのデータの中には、スライスヘッダ６０３とスライスデータ６０４のセットが、そのピクチャに存在するスライスの数分存在する。また、スライスデータ６０４には、符号化された複数のマクロブロックを示すマクロブロックレイヤデータが格納されている。
【００５１】
スライスデータプリデコード部４０２は、このスライスデータ６０４に含まれるマクロブロックレイヤデータに対して可変長復号を行うことにより、上述の並列処理用パラメータを取得する。
【００５２】
図４は、本発明の実施の形態１における画像復号装置４０の動作を示すフロー図である。
【００５３】
まず、ヘッダ復号部４０１は、符号化ストリームＳｔｒを取得すると、ＳＰＳヘッダ６０１を復号し（ステップＳ７００）、次に、ＰＰＳヘッダ６０２を復号し（ステップＳ７０１）、次に、スライスヘッダ６０３を復号する（ステップＳ７０２）。スライスヘッダ６０３の復号が完了すると、スライスデータプリデコード部４０２は、スライスデータ６０４に対してプリデコードを行うことによって、マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータを復号するとともに、符号化ストリームＳｔｒの加工処理を行う（ステップＳ７０３）。
【００５４】
１スライス分のスライスデータ６０４のプリデコードが完了すると、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、復号制御部４００の指示に従って、それぞれストリームバッファ４０３に格納されている加工済符号化ストリームＳｔｍから復号対象のマクロブロック（マクロブロックライン）を読み出しながら、マクロブロックの復号処理を並列に行う（ステップＳ７０４）。
【００５５】
図５は、マクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。
【００５６】
Ｈ．２６４では、図２２に示した位置による依存関係が存在するため、画像復号装置４０は図５に示す手順で復号を行う。なお、図５において、各マクロブロックＭＢに付けられた番号は処理順序を示す。つまり、同じ番号のマクロブロックＭＢは同時に並列に処理される。
【００５７】
図５に示すように、第１マクロブロック復号部４０４は、ピクチャＰｉｃに含まれる奇数ラインのマクロブロックＭＢ、つまり奇数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックＭＢを復号し、第２マクロブロック復号部４０５は、ピクチャＰｉｃに含まれる偶数ラインのマクロブロックＭＢ、つまり偶数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックＭＢを復号する。また、第１マクロブロック復号部４０４がある任意のマクロブロックＭＢを復号する場合、第２マクロブロック復号部４０５は、そのマクロブロックＭＢの１つ下の行の２列左側に位置するマクロブロックＭＢを並列に処理する。これにより、位置による依存関係を解決して並列に復号することが可能となる。
【００５８】
復号制御部４００は、１スライス分のマクロブロックの復号処理が完了すると、その復号処理が完了したスライスがピクチャの終端にあるかどうかを判断する（ステップＳ７０５）。ピクチャに含まれるスライスの数は、ＰＰＳヘッダ６０２にあるパラメータ（ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１）を復号することで分かる。このため、復号制御部４００は、これまでに復号処理が完了したスライスの数から１を引いた数と、パラメータ（ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１）が一致すれば、直前に復号処理が完了したスライスがピクチャの終端にあると判断する。
【００５９】
ここで、復号制御部４００は、ピクチャの終端にないと判断すると（ステップＳ７０５のＮＯ）、ヘッダ復号部４０１、スライスデータプリデコード部４０２およびマクロブロック復号部に対して、ピクチャの終端になるまで、スライスヘッダ６０３の復号（ステップＳ７０２）、スライスデータ６０４のプリデコード（ステップＳ７０３）、およびマクロブロックの復号（ステップＳ７０４）を順次実行させる。一方、復号制御部４００は、ピクチャの終端にあると判断すると（ステップＳ７０５のＹＥＳ）、デブロッキングフィルタ部４０６に、1ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる（ステップＳ７０６）。デブロッキングフィルタ処理が完了すると、復号制御部４００は、次に、デブロッキングフィルタ処理されたピクチャがその符号化ストリームＳｔｒの終端にあるかどうかを判定する（ステップＳ７０７）。
【００６０】
ここで、復号制御部４００は、符号化ストリームＳｔｒの終端にない、つまり後にストリームが続いていると判断した場合は（ステップＳ７０７のＮＯ）、ヘッダ復号部４０１に対して、次に復号されるべきピクチャのＰＰＳヘッダ６０２の復号を実行させることにより（ステップＳ７０１）、符号化ストリームＳｔｒに含まれるピクチャを次々と復号していく。
【００６１】
次に、スライスデータ６０４のプリデコード（図４のステップＳ７０３）の詳細について説明する。
【００６２】
図６は、スライスデータ６０４に対するプリデコードの詳細な動作を示すフロー図である。
【００６３】
スライスデータプリデコード部４０２は、スライスデータ６０４に対してマクロブロック単位でプリデコードを行う。具体的には、スライスデータプリデコード部４０２は、まず、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５から、プリデコードの対象とされるマクロブロック（プリデコード対象マクロブロック）ＭＢを復号するマクロブロック復号部を、担当復号部として特定する（ステップＳ９００）。そして、スライスデータプリデコード部４０２は、そのプリデコード対象マクロブロックＭＢのマクロブロックアドレスＢａ１が、その担当復号部が直前に復号したマクロブロック（直前復号マクロブロック）ＭＢのマクロブロックアドレスＢａ２に１を加えた値よりも大きいかどうかを判定する（ステップＳ９０１）。
【００６４】
マクロブロックアドレスは、図２４に示すように、ピクチャＰｉｃ内のマクロブロックＭＢに対してラスタースキャン順に番号が付けられたインデックスのことであり、Ｈ．２６４では、ピクチャＰｉｃ内のマクロブロックＭＢはマクロブロックアドレス順で処理される。図５に示す手順で復号を行う場合、例えば、第１マクロブロック復号部４０４は、ライン１のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン１にある８番のマクロブロックＭＢ）の次に、ライン３のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン３にある９番のマクロブロックＭＢ）を復号する。このとき、その８番目のマクロブロックＭＢと９番目のマクロブロックＭＢの間にある、ライン２上の全てのマクロブロックＭＢは、第１マクロブロック復号部４０４で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックＭＢ（ライン３にある９番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ１は、直前復号マクロブロックＭＢ（ライン１にある８番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ２に１を加えた値よりも大きくなる。同様に、第２マクロブロック復号部４０５は、ライン２のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン２にある１０番のマクロブロックＭＢ）の次に、ライン４のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン４にある１１番のマクロブロックＭＢ）を復号する。このとき、その１０番目のマクロブロックＭＢと１１番目のマクロブロックＭＢの間にある、ライン３上の全てのマクロブロックＭＢは、第２マクロブロック復号部４０５で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックＭＢ（ライン４にある１１番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ１は、直前復号マクロブロックＭＢ（ライン２にある１０番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ２に１を加えた値よりも大きくなる。
【００６５】
このように、スライスデータプリデコード部４０２は、ステップＳ９０１では、プリデコード対象マクロブロックＭＢが、担当復号部によって復号される、マクロブロックアドレスが一続きになっているマクロブロック群の先頭のマクロブロックＭＢであるかどうかを判定する。つまり、図５に示す手順で復号が行われる場合、スライスデータプリデコード部４０２は、ステップＳ９０１では、ピクチャＰｉｃ左端に位置するマクロブロックＭＢをプリデコードするときに、真（ＹＥＳ）と判定する。
【００６６】
スライスデータプリデコード部４０２は、ステップＳ９０１で、偽（ＮＯ）と判定すると、次のマクロブロックＭＢの先頭を探すために、通常のマクロブロックＭＢの可変長復号を行う（ステップＳ９０４）。一方、スライスデータプリデコード部４０２は、ステップＳ９０１で、真（ＹＥＳ）と判定すると、符号化ストリームＳｔｒ中におけるプリデコード対象マクロブロックＭＢの先頭に位置する部分に、プリデコード対象マクロブロックＭＢの先頭を示すビットパターンであるＭＢ（Ｍａｃｒｏｂｌｏｃｋ）スタートコードを挿入する（ステップＳ９０２）。本実施の形態では、例えば、ＭＢスタートコードを０ｘ０００００１Ｆ０とする。ＭＢスタートコードの挿入後、スライスデータプリデコード部４０２は、プリデコード対象マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータをマクロブロック復号情報として、符号化ストリームＳｔｒ中におけるＭＢスタートコードの直後（プリデコード対象マクロブロックＭＢの直前）に埋め込む（ステップＳ９０３）。なお、ＭＢスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
【００６７】
埋め込むマクロブロック復号情報は、プリデコード対象マクロブロックＭＢのマクロブロックアドレスの直前にあるマクロブロックＭＢ（直前マクロブロックＭＢ）を可変長復号することによって生成された、処理順序による依存関係があるパラメータである。Ｈ．２６４では、可変長符号化の方式がＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ Ｃｏｄｉｎｇ）の場合は、スライスデータプリデコード部４０２は、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）と、スキップするマクロブロックの数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）とをマクロブロック復号情報として埋め込む。以下、そのスキップするマクロブロックをスキップマクロブロックといい、そのスキップマクロブロックの数をスキップマクロブロック数という。スキップマクロブロック数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）は、先頭のマクロブロックＭＢがスキップマクロブロックの場合に、その先頭のマクロブロックＭＢを含めてスキップマクロブロックが何個続くかを表し、先頭のマクロブロックＭＢがスキップマクロブロックでなければ０となる。なお、スライスデータプリデコード部４０２は、直前マクロブロックＭＢを可変長復号することによって、その直前マクロブロックＭＢを含めてその直前マクロブロックＭＢから後に続くスキップマクロブロックの数を示すスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を取得する。スライスデータプリデコード部４０２は、このスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）と直前マクロブロックＭＢのマクロブロックアドレスとに基づいて、上述のスキップマクロブロック数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）を算出する。
【００６８】
可変長符号化の方式がＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）の場合は、スライスデータプリデコード部４０２は、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）と、直前マクロブロックＭＢをＣＡＢＡＣに従って可変長復号したときのスライスデータプリデコード部４０２（可変長復号器）の内部状態を示す情報（ｃｏｄＩＯｆｆｓｅｔ、ｃｏｄＩＲａｎｇｅ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘ）とをマクロブロック復号情報として埋め込む。ＣＡＢＡＣの可変長復号器の内部状態はシンタックスではないが、ＣＡＢＡＣでは、１ビット復号する度に内部状態が変化するため、マクロブロックＭＢの途中から復号する場合は、その途中までの内部状態が必要となる。したがって、直前マクロブロックＭＢを可変長復号したときにおける内部状態を示す情報を、マクロブロック復号情報として符号化ストリームＳｔｒに埋め込む必要がある。
【００６９】
なお、ＣＡＢＡＣの可変長復号処理（算術復号処理および多値化処理）のうち、1ビット復号する度に内部状態が変化するのは算術復号処理であるので、スライスデータプリデコード部４０２は、算術復号処理だけを行ってスライスデータ６０４を２値化データに復号してしまってもよい。算術復号だけを行った場合、量子化パラメータ（ＱＰ＿ＰＲＥＶ）だけをマクロブロック復号情報として符号化ストリームＳｔｒに埋め込めばよい。
【００７０】
本実施の形態では、スライスデータプリデコード部４０２は、マクロブロック復号情報をｅｘｐ−Ｇｏｌｏｍｂ符号化方式で符号化して埋め込む。なお、マクロブロック復号情報の符号化方式は、マクロブロック復号情報の示すパラメータを一意に復号できるものであれば何でもよい。また、スライスデータプリデコード部４０２は、量子化パラメータ（ＱＰ＿ＰＲＥＶ）をそのままマクロブロック復号情報として埋め込んでもよいが、ある値と量子化パラメータ（ＱＰ＿ＰＲＥＶ）との差分をマクロブロック復号情報として埋め込んでもよい。これにより、マクロブロック復号情報のデータ量を削減することができる。例えば、スライスデータプリデコード部４０２は、対象マクロブロックＭＢを含むスライスの全てのマクロブロックＭＢで使用される量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）と、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）との差分を、マクロブロック復号情報として埋め込む。なお、上述の初期値（ＳｌｉｃｅＱＰ）は、スライスヘッダ６０３に含まれているパラメータから算出することができる。
【００７１】
スライスデータプリデコード部４０２は、マクロブロック復号情報の挿入処理（ステップＳ９０３）が完了すると、次に、次のマクロブロックＭＢの先頭を探すために、プリデコード対象マクロブロックの可変長復号を行う（ステップＳ９０４）。次に、スライスデータプリデコード部４０２は、ステップＳ９０４で可変長復号されたプリデコード対象マクロブロックＭＢがスライスの終端にあるマクロブロックＭＢかどうかを判定する（ステップＳ９０５）。ここで、スライスデータプリデコード部４０２は、スライスの終端にあるマクロブロックＭＢでないと判定すると（ステップＳ９０５のＮＯ）、次のプリデコード対象マクロブロックＭＢに対してステップＳ９００からの処理を繰り返し行うことにより、スライスデータ６０４のプリデコードを行っていく。
【００７２】
このように、本実施の形態におけるスライスデータプリデコード部４０２は、符号化ストリームＳｔｒに含まれる、複数のブロックからなるマクロブロックラインごとに、復号処理の一部である可変長復号（プリデコード処理）をそのマクロブロックラインに対して行うことにより、他のマクロブロックラインの復号処理に必要なパラメータであるマクロブロック復号情報を生成している。そして、符号化ストリームＳｔｒに含まれる各スライスデータ６０４に対して、上述のようなプリデコードが行われることによって、加工済符号化ストリームＳｔｍが生成されて、ストリームバッファ４０３に格納される。
【００７３】
図７は、加工済符号化ストリームＳｔｍのスライスデータの構成を示す図である。
【００７４】
加工済符号化ストリームＳｔｍのスライスデータ６０４ａ、つまり１つのスライスのスライスデータ６０４がプリデコードされることによって得られたスライスデータ６０４ａは、ＭＢスタートコード１０００、マクロブロック復号情報１００１、およびマクロブロックレイヤデータ１００２からなるデータセットを１つまたは複数個含んでいる。マクロブロックレイヤデータ１００２は、符号化ストリームＳｔｒのスライスデータ６０４の中に含まれているデータと全く同じものである。つまり、マクロブロックレイヤデータ１００２は、全く復号処理されていないデータとなっている。このスライスデータ６０４ａに含まれるデータセットの数は、スライスデータ６０４のプリデコードの際にステップＳ９０１で真（ＹＥＳ）と判定された回数と同じ数である。
【００７５】
なお、データセットに含まれるマクロブロックレイヤデータ１００２は、可変長復号されていない、つまり可変長符号化されたままのマクロブロックＭＢを含んでいる。
【００７６】
また、可変長符号化の方式がＣＡＢＡＣの場合、スライスデータ６０４のプリデコード（ステップＳ７０３）においてスライスデータ６０４を２値化データに復号した時には、マクロブロックレイヤデータ１００２ではなく、復号された２値データが代わりに入る。
【００７７】
なお、ステップＳ９０１の真（ＹＥＳ）と判定されたプリデコード対象マクロブロックＭＢの先頭に、ＭＢスタートコードおよびマクロブロック復号情報１００１を挿入しているが、プリデコード対象マクロブロックＭＢ以外のマクロブロックＭＢにも、ＭＢスタートコード１０００およびマクロブロック復号情報１００１を挿入してもよい。例えば、全てのマクロブロックＭＢの先頭にＭＢスタートコード１０００およびマクロブロック復号情報１００１を挿入してもよい。全てのマクロブロックＭＢの先頭に挿入すると、マクロブロックＭＢの復号処理（ステップＳ７０４）の際に、どのマクロブロックＭＢをどのマクロブロック復号部に割当てても、処理順序による依存関係を解決して復号することが可能となる。
【００７８】
次に、図４に示すマクロブロックＭＢの復号処理（ステップＳ７０４）の詳細について図８を用いて説明する。
【００７９】
図８は、マクロブロック復号部によるマクロブロックＭＢの復号処理を示すフロー図である。
【００８０】
まず、マクロブロック復号部は、加工済符号化ストリームＳｔｍからＭＢスタートコード１０００の探索を行い、ＭＢスタートコード１０００が見つかるまで加工済符号化ストリームＳｔｍを読み進める（ステップＳ１１００）。次に、マクロブロック復号部は、ＭＢスタートコード１０００が付いたマクロブロックＭＢが、そのマクロブロック復号部に割り当てられた復号対象のマクロブロックＭＢであるかどうかを判定する（ステップＳ１１０１）。ここで、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックＭＢでないと判定すると（ステップＳ１１０１のＮＯ）、復号対象のマクロブロックＭＢが現れるまで繰り返しＭＢスタートコードの探索（ステップＳ１１００）を行う。一方、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックＭＢであると判定すると（ステップＳ１１０１のＹＥＳ）、ＭＢスタートコード１０００に続くマクロブロック復号情報１００１の復号を行う（ステップＳ１１０２）。以降、マクロブロック復号部は、マクロブロックＭＢの通常の復号処理を行っていく。なお、ＭＢスタートコード探索（ステップＳ１１００）、復号対象マクロブロック判定（ステップＳ１１０１）、およびマクロブロック復号情報の復号（ステップＳ１１０２）の処理は、全て可変長復号部５００で行われる。
【００８１】
次に、マクロブロック復号部の可変長復号部５００は、そのマクロブロック復号部に割り当てられた復号対象マクロブロックＭＢに対して可変長復号処理を行う（ステップＳ１１０３）。ここで、復号対象マクロブロックＭＢが、ＭＢスタートコード１０００が付いた先頭のマクロブロックＭＢ（マクロブロック復号情報の直後のマクロブロックＭＢ）の場合には、可変長復号部５００は、ステップＳ１１０２で復号したマクロブロック復号情報１００１を使用して、その先頭のマクロブロックＭＢを可変長復号する。次に、マクロブロック復号部は、可変長復号結果から、予測モードがイントラ予測かインター予測を判定する（ステップＳ１１０４）。予測モードがイントラ予測であると判定されると（ステップＳ１１０４のイントラ予測）、画面内予測部５０３が起動して画面内予測処理を行う（ステップＳ１１０５）、予測モードがインター予測であると判定されると（ステップＳ１１０４のインター予測）、動き補償予測部５０４が起動して動き補償予測処理を行う（ステップＳ１１０６）。これらのステップＳ１１０５およびステップＳ１１０６の処理によって、画素データからなる予測画像が生成される。
【００８２】
次に、マクロブロック復号部は、可変長復号処理（ステップＳ１１０３）が行われた量子化された係数を、逆量子化部５０１で逆量子化し、逆直交変換部５０２で逆直交変換することで、予測画像に対する誤差画像を生成する（ステップＳ１１０７）。最後に、マクロブロック復号部は、予測画像と誤差画像を加算することにより、画素データからなる再構成画像を得る（ステップＳ１１０８）。このように１マクロブロックＭＢの復号処理が完了すると、マクロブロック復号部は、まだ復号すべきマクロブロックレイヤデータ１００２があるかどうかを判定する（ステップＳ１１０９）。マクロブロック復号部は、復号すべきマクロブロックレイヤデータ１００２がないと判定すると（ステップＳ１１０９のＮＯ）、マクロブロックＭＢの復号処理を終える。一方、マクロブロック復号部は、復号すべきマクロブロックレイヤデータ１００２が残っていると判定すると（ステップＳ１１０９のＹＥＳ）、次に復号すべきマクロブロックＭＢのマクロブロックアドレスが、直前に復号したマクロブロックＭＢのマクロブロックアドレスに１を加えた値より大きいかどうかを判定する（ステップＳ１１１０）。この判定の結果が真（ステップＳ１１１０のＹＥＳ）であれば、マクロブロック復号部は、次に復号すべきマクロブロックＭＢの先頭を探索するためにＭＢスタートコード探索を行い（ステップＳ１１００）、判定の結果が偽（ステップＳ１１１０のＮＯ）であれば、次のマクロブロックＭＢの可変長復号を行う（ステップＳ１１０３）。
【００８３】
このように、本実施の形態では、事前にプリデコードを行ってマクロブロック復号情報１００１を生成しておくことにより、２つのマクロブロック復号部は、予め定められた処理順序でマクロブロックラインを順次復号しなくても、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができ、復号の高速化を図ることができる。さらに、本実施の形態では、２つのマクロブロック復号部はそれぞれ、プリデコードされたマクロブロックラインに対して、復号処理のうち可変長復号を除く残りの処理を行うのではなく、符号化ストリームＳｔｒに含まれているマクロブロックラインに対して復号処理の全てを行うため、プリデコードされた複数のマクロブロックラインを有する可変長復号済みの復号ストリームを生成する必要がない。この可変長復号済みの復号ストリームは、元の符号化ストリームＳｔｒよりもデータ量が多い。したがって、本実施の形態では、２つのマクロブロック復号部が、元の符号化ストリームＳｔｒに含まれているマクロブロックラインに対して復号処理の全てを行うため、復号処理の対象となるストリームを一時的に蓄えておくストリームバッファ４０３の容量を抑えることができる。
【００８４】
なお、本実施の形態では、並列処理用パラメータであるマクロブロック復号情報１００１を符号化ストリームＳｔｒに埋め込む方法を取った。しかし、マクロブロックＭＢの復号を行う場合に、第１マクロブロック復号部４０４または第２マクロブロック復号部４０５にマクロブロック復号情報１００１を渡せればよく、必ずしも符号化ストリームＳｔｒにマクロブロック復号情報１００１を埋め込む必要はない。例えば、スライスデータプリデコード部４０２は、マクロブロック復号情報１００１を符号化ストリームＳｔｒには埋め込まずに、スライスデータ６０４のプリデコードが終わった後にマクロブロック復号情報１００１を復号制御部４００に渡し、マクロブロック復号部が起動する時に、復号制御部４００がそのマクロブロック復号情報１００１をマクロブロック復号部に通知してもよい。
【００８５】
また、本実施の形態では、スキップするマクロブロックの数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）をマクロブロック復号情報１００１として符号化ストリームＳｔｒに埋め込んだが、その代わりにスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）をマクロブロック復号情報１００１として符号化ストリームＳｔｒに埋め込んでもよい。
【００８６】
また、本実施の形態では、２つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は２個に限らない。特許文献１には、２個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、２個以上のマクロブロック復号部を用いても復号することができる。
【００８７】
また、本実施の形態において、復号制御部４００、ヘッダ復号部４０１、スライスデータプリデコード部４０２、ストリームバッファ４０３、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、デブロッキングフィルタ部４０６、および参照画像メモリ４０７の全部あるいはその一部を、１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
【００８８】
なお、本実施の形態では、一般的なＨ．２６４符号化方式に対応した画像復号装置について説明したが、Ｈ．２６４符号化方式に一部制約を入れて符号化された画像であれば、スライスデータプリデコード部４０２でのプリデコード（ステップＳ７０３）をなくすことができる。プリデコードは、処理順序による依存関係を解決するために行うものであり、処理順序の依存関係がなければ、プリデコードをせずに並列にマクロブロック復号処理（ステップＳ７０４）を行うことができるからである。つまり、並列復号処理に適した画像符号化方式を規格化する場合は、この処理順序の依存関係をなくすように、既存の画像符号化方式に制約を加えればよい。例えば、Ｈ．２６４符号化方式をベースにして並列復号処理に適した新しい画像符号化方式を考える場合、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を符号化するのではなく、量子化パラメータＱＰの値そのままを符号化する方式、または量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）からの差分値のみを符号化する方式が考えられる。また、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）は必ず０になるように符号化する方式も考えられる。また、ＣＡＢＡＣを使用禁止にしてＣＡＶＬＣでのみ可変長符号化する方式も考えられる。
【００８９】
（実施の形態２）
図９は、本発明の実施の形態２における画像符号化装置の構成図である。
【００９０】
図９に示すように、画像符号化装置１２０は、符号化制御部１２００、第１マクロブロック符号化部１２０１、第２マクロブロック符号化部１２０２、デブロッキングフィルタ部１２０３、ストリームバッファ１２０４、スライスデータ再符号化部１２０５、ヘッダ符号化部１２０６、および参照画像メモリ１２０７から構成される。なお、以下の説明において、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２をそれぞれ区別する必要がない場合には、それらをマクロブロック符号化部と総称する。
【００９１】
次に、図９に示す画像符号化装置１２０の各構成要素の動作について説明する。
【００９２】
第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、画素データからなる符号化対象画像を取得すると、並列にマクロブロック単位の符号化処理を行う。そして、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、その符号化処理で符号化された画像が再構成されることにより生成された、画素データからなる再構成画像をデブロッキングフィルタ部１２０３に出力する。さらに、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、上述の符号化処理で符号化された画像を示す中間ストリームをストリームバッファ１２０４に出力する。この時、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、参照画像メモリ１２０７から、動き補償に用いる画素データからなる参照画像を必要に応じて読み出す。
【００９３】
ストリームバッファ１２０４は、各マクロブロック符号化部から出力された中間ストリームを一時的に保持している。なお、２つのマクロブロック符号化部から出力された複数の断片的な中間ストリームは、ストリームバッファ１２０４に格納されることにより、１つの結合された中間ストリームとして扱われる。また、この中間ストリームは、２つのマクロブロック符号化部がマクロブロックＭＢを並列に符号化したことによって生成されたストリームであるために、この中間ストリームに含まれるピクチャでは上述の処理順序による依存関係が満たされていない。したがって、この中間ストリームは、一部符号化できない部分があるため、まだ完全には符号化が完了していないストリームになっている。
【００９４】
デブロッキングフィルタ部１２０３は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行い、その結果生成される復号画像を参照画像メモリ１２０７に出力する。参照画像メモリ１２０７は、上述の参照画像として利用できるように、デブロッキングフィルタ部１２０３から出力された復号画像を保持する。
【００９５】
スライスデータ再符号化部１２０５は、ストリームバッファ１２０４から中間化ストリームを読出し、中間化ストリームに対して再符号化処理を行う。ヘッダ符号化部１２０６はヘッダの符号化を行い、スライスデータ再符号化部１２０５から出力される再符号化ストリームと符号化されたヘッダとを併せて最終的な符号化ストリームを生成して出力する。なお、本実施の形態では、このスライスデータ再符号化部１２０５が調整部として構成されており、このスライスデータ再符号化部１２０５が、２つのマクロブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームにその中間ストリームを一致させる。
【００９６】
符号化制御部１２００は、第１マクロブロック符号化部１２０１、第２マクロブロック符号化部１２０２、デブロッキングフィルタ部１２０３、スライスデータ再符号化部１２０５、およびヘッダ符号化部１２０６を制御することにより、画像符号化処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
【００９７】
図１０は、マクロブロック符号化部の構成図である。
【００９８】
第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、共に同じ構成を有し、それぞれ、画面内予測部１３００、動き補償予測部１３０１、減算回路１３０２、直交変換部１３０３、量子化部１３０４、可変長符号化部１３０５、逆量子化部１３０６、逆直交変換部１３０７、および加算回路１３０８から構成される。まず、符号化対象画像に含まれる画素データからなるマクロブロックＭＢがマクロブロック符号化部に入力されると、符号化制御部１２００は、予測モードを指示することによって、画面内予測部１３００および動き補償予測部１３０１のどちらか一方を起動させる。画面内予測部１３００は、予測モードがイントラ予測であった場合に起動して画面内予測を行うことにより、上述の符号化対象のマクロブロックＭＢに対応する、画素データからなる予測画像を生成して出力する。動き補償予測部１３０１は、予測モードがインター予測であった場合に起動し、動きベクトルに応じた参照画像を取得して動き補償予測を行うことにより、上述の符号化対象のマクロブロックＭＢに対応する、画素データからなる予測画像を生成して出力する。
【００９９】
減算回路１３０２は、上述の符号化対象のマクロブロックＭＢから予測画像を減算することにより、空間領域の画素データからなる誤差画像を生成する。直交変換部１３０３は、その誤差画像に対して直交変換を行うことにより、その誤差画像を係数に変換する。量子化部１３０４はその係数を量子化する。可変長符号化部１３０５は、量子化された係数および予測モードなどを可変長符号化することにより、上述の中間ストリームを生成して出力する。
【０１００】
逆量子化部１３０６は、量子化された係数を逆量子化する。逆直交変換部１３０７は、逆量子化された係数に対して逆直交変換を行うことにより、その係数を誤差画像に再構成する。加算回路１３０８は、その誤差画像を、画面内予測部１３００または動き補償予測部１３０１から出力された予測画像に加算することにより、再構成画像を生成して出力する。
【０１０１】
図１１は、本発明の実施の形態２における画像符号化装置１２０の動作を示すフロー図である。
【０１０２】
まず、ヘッダ符号化部１２０６は、ＳＰＳヘッダ６０１の符号化（ステップＳ１４００）、ＰＰＳヘッダ６０２の符号化（ステップＳ１４０１）、およびスライスヘッダ６０３の符号化（ステップＳ１４０２）を順次行う。スライスヘッダ６０３の符号化（ステップＳ１４０２）が完了すると、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は符号化制御部１２００の指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する（ステップＳ１４０３）。Ｈ．２６４では、図２２に示した位置による依存関係が存在するため、復号の場合と同様に、２つのマクロブロック符号化部は、図５に示す手順で並列符号化を行う。詳細については復号の場合と同様であるので、説明を省略する。なお、マクロブロックＭＢの符号化処理（ステップＳ１４０３）での可変長符号化（後述するステップＳ１５０７）では、マクロブロックＭＢを並列に符号化するために、上述の処理順序による依存関係が満たされていない。したがって、この符号化処理で生成される中間ストームには、一部完全に符号化できない部分があるため、マクロブロック符号化部は、マクロブロックＭＢを可変長符号化するときには、必要とされる可変長符号化の処理の一部だけを行い、中間ストリームを生成する。
【０１０３】
スライスデータ再符号化部１２０５は、１スライス分のマクロブロックＭＢの符号化処理（ステップＳ１４０３）が完了すると、そのマクロブロックＭＢの符号化処理（ステップＳ１４０３）では完全に符号化できなかったスライスデータの部分に対して、再符号化処理を行う（ステップＳ１４０４）。符号化制御部１２００は、スライスデータの再符号化処理（ステップＳ１４０４）が完了すると、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端であるかどうかを判定する（ステップＳ１４０５）。符号化制御部１２００は、ピクチャの終端でないと判定すると（ステップＳ１４０５のＮＯ）、次に符号化されるスライスに対する、スライスヘッダの符号化（ステップＳ１４０２）、マクロブロックＭＢの符号化（ステップＳ１４０３）、およびスライスデータの再符号化（ステップＳ１４０４）の処理を各構成要素に実行させ、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端になるまで、上記各処理を繰り返させる。
【０１０４】
一方、符号化制御部１２００は、上記位置がピクチャの終端であると判定すると（ステップＳ１４０５のＹＥＳ）、デブロッキングフィルタ部１２０３に対して、１ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる（ステップＳ１４０６）。デブロッキングフィルタ処理（ステップＳ１４０６）が完了すると、符号化制御部１２００は、デブロッキングフィルタ処理されたピクチャがシーケンスの終端にあるかどうか判定する（ステップＳ１４０７）。符号化制御部１２００は、シーケンスの終端にないと判定したとき（ステップＳ１４０７のＮＯ）、つまり、後続に符号化すべきピクチャが続いている場合は、そのピクチャに対するＰＰＳヘッダ６０２の符号化（ステップＳ１４００）などの処理を各構成要素に再度実行させることにより、１シーケンス分の符号化対象画像を符号化する。
【０１０５】
次に、図１１に示すマクロブロックＭＢの符号化処理（ステップＳ１４０３）の詳細について図１２を用いて説明する。
【０１０６】
図１２は、マクロブロック符号化部による符号化処理を示すフロー図である。
【０１０７】
まず、画面内予測部１３００および動き補償予測部１３０１は、符号化制御部１２００から指示される予測モードがイントラ予測であるか、インター予測であるかを判定する（ステップＳ１５００）。予測モードがイントラ予測であれば、画面内予測部１３００が起動して、画面内予測処理を行い（ステップＳ１５０１）、予測モードがインター予測であれば、動き補償予測部１３０１が起動して、動き補償予測処理を行う（ステップＳ１５０２）。これにより、予測画像が生成される。次に、減算回路１３０２は、符号化対象マクロブロックＭＢから予測画像を減算して、予測画像に対する誤差画像を生成する（ステップＳ１５０３）。直交変換部１３０３および量子化部１３０４は、誤差画像を直交変換し、さらに量子化する（ステップＳ１５０４）。
【０１０８】
ここで、マクロブロック符号化部は、次に符号化される予定のマクロブロック（次マクロブロック）ＭＢのマクロブロックアドレスが、今、符号化しているマクロブロック（符号化対象マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値よりも大きいかどうかを判定する（ステップＳ１５０５）。図５に示す手順で符号化が行われる場合、例えば、第１マクロブロック符号化部１２０１は、ライン１のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン１にある８番のマクロブロックＭＢ）の次に、ライン３のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン３にある９番のマクロブロックＭＢ）を符号化する。このとき、その８番目のマクロブロックＭＢと９番目のマクロブロックＭＢの間にある、ライン２上の全てマクロブロックＭＢは、第１マクロブロック符号化部１２０１で符号化されずに、符号化対象から外される。したがって、次マクロブロックＭＢ（ライン３にある９番目のマクロブロックＭＢ）のマクロブロックアドレスが、符号化対象マクロブロックＭＢ（ライン１にある８番目のマクロブロックＭＢ）のマクロブロックアドレスに１を加えた値よりも大きくなる。
【０１０９】
同様に、第２マクロブロック符号化部１２０２は、ライン２のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン２にある１０番のマクロブロックＭＢ）の次に、ライン４のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン４にある１１番のマクロブロックＭＢ）を符号化する。このとき、その１０番目のマクロブロックＭＢと１１番目のマクロブロックＭＢの間にある、ライン３上の全てのマクロブロックＭＢは、第２マクロブロック符号化部１２０２で符号化されずに、符号化対象から外される。したがって、次マクロブロックＭＢ（ライン４にある１１番目のマクロブロックＭＢ）のマクロブロックアドレスが、符号化対象マクロブロックＭＢ（ライン２にある１０番目のマクロブロックＭＢ）のマクロブロックアドレスに１を加えた値よりも大きくなる。
【０１１０】
このように、ステップＳ１５０５では、マクロブロック符号化部は、符号化対象マクロブロックＭＢが、そのマクロブロック符号化部によって符号化される、マクロブロックアドレスが一続きになっているマクロブロック群の最後のマクロブロックＭＢであるかどうかを判定する。つまり、図５に示す手順で符号化が行われる場合、マクロブロック符号化部は、ステップＳ１５０５では、ピクチャＰｉｃ右端に位置するマクロブロックＭＢを符号化するときに、真（ＹＥＳ）と判定する。
【０１１１】
マクロブロック符号化部は、ステップＳ１５０５で真（ＹＥＳ）と判定すると、符号化対象マクロブロックＭＢの量子化パラメータＱＰがスライスデータ再符号化部１２０５で利用されるように、その量子化パラメータＱＰを再符号化情報（保存パラメータ）として保存する（ステップＳ１５０６）。このとき、マクロブロック符号化部は、保存した再符号化情報を符号化制御部１２００に送信している。なお、ステップＳ１５０５の判定処理およびステップＳ１５０６の保存は、マクロブロック符号化部の可変長符号化部１３０５で行われてもよく、それらの処理を実行する専用の構成要素をマクロブロック符号化部に備えてもよい。
【０１１２】
可変長符号化部１３０５は、ステップＳ１５０５で偽（ＮＯ）と判定されると、可変長符号化を行う（ステップＳ１５０７）。つまり、可変長符号化部１３０５は、量子化された係数、予測モード、およびステップＳ１５０１〜Ｓ１５０４で利用されたパラメータ（例えば、量子化パラメータＱＰの差分値）などを可変長符号化することにより、中間ストリームを生成して出力する（ステップＳ１５０７）。
【０１１３】
次に、逆量子化部１３０６および逆直交変換部１３０７は、量子化された係数を逆量子化し、さらに逆直交変換を行うことによって、誤差画像を再構成する(ステップＳ１５０８)。加算回路１３０８は、再構成された誤差画像と、画面内予測部１３００または動き補償予測部１３０１から出力された予測画像とを加算することにより、再構成画像を生成して出力する(ステップＳ１５０９)。このように１マクロブロックの符号化処理が完了すると、マクロブロック符号化部は、まだ符号化すべきマクロブロックＭＢがあるかどうかを判定する（ステップＳ１５１０）。マクロブロック符号化部は、符号化すべきマクロブロックＭＢがないと判定すると（ステップＳ１５１０のＮＯ）、マクロブロックＭＢの符号化処理を終え、符号化すべきマクロブロックＭＢが残っていると判定すると（ステップＳ１５１０のＹＥＳ）、符号化すべきマクロブロックＭＢがなくなるまで、再び予測モードの判定（ステップＳ１５００）から処理を行っていく。
【０１１４】
次に、マクロブロックの符号化処理（図１１のステップＳ１４０３）の中の可変長符号化処理（図１２のステップＳ１５０７）の詳細について図１３を用いて説明する。
【０１１５】
図１３は、可変長符号化処理のフロー図である。
【０１１６】
まず、可変長符号化部１３０５は、今、符号化するマクロブロック（符号化対象マクロブロック）ＭＢのマクロブロックアドレスが、直前に符号化したマクロブロック（直前符号化マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値よりも大きいかどうかを判定する（ステップＳ１６００）。例えば、図５に示す手順で符号化が行われる場合、可変長符号化部１３０５は、ステップＳ１６００では、ピクチャＰｉｃ左端に位置するマクロブロックＭＢを符号化対象マクロブロックＭＢとして符号化するときに、真（ＹＥＳ）と判定する。つまり、このときに真（ＹＥＳ）と判定されるマクロブロックＭＢは、マクロブロックラインの先頭にある。可変長符号化部１３０５は、ステップＳ１６００で真（ＹＥＳ）と判定すると、その符号化対象マクロブロックＭＢの量子化に使用された量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を、量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）から、符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算した値に置き換える（ステップＳ１６０１）。
【０１１７】
なお、スライスデータ６０４の再符号化の際に、量子化パラメータＱＰの値を一意に復号できればよいため、置き換える値は、ある特定の値から符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算した値であれば何でもよい。また、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の取りうる範囲を超えてしまうが、符号化対象マクロブロックＭＢの量子化パラメータＱＰの値に置き換えてもよい。
【０１１８】
次に、可変長符号化部１３０５は、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の置き換えが終わると、または、ステップＳ１６００で偽（ＮＯ）と判定すると、可変長符号化方式がＣＡＶＬＣかＣＡＢＡＣかを判定する（ステップＳ１６０２）。可変長符号化方式がＣＡＶＬＣであると判定すると、可変長符号化部１３０５は、ＣＡＶＬＣの符号化方式で可変長符号化を行う（ステップＳ１６０３）。一方、可変長符号化方式がＣＡＢＡＣであると判定すると、可変長符号化部１３０５は、ＣＡＢＡＣの符号化処理のうち、２値化処理だけを行う（ステップＳ１６０４）。
【０１１９】
なお、ステップＳ１６００で真（ＹＥＳ）と判定された場合は、ＣＡＶＬＣの可変長符号化処理（Ｓ１６０３）または２値化処理（Ｓ１６０４）されて生成される中間ストリームに対して、ステップＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭が再符号化処理で分かるような処置をしておいてもよい。例えば、ステップＳ１６００で真（ＹＥＳ）と判定された場合は、可変長符号化部１３０５は、直前まで出力していた中間ストリームとは別のアドレスに、それ以降に出力する中間ストリームを保存する。または、可変長符号化部１３０５は、中間ストリームをストリームバッファ１２０４に格納するときに、ステップＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭のアドレスを符号化制御部１２００に送信しておく。この場合には、スライスデータ再符号化部１２０５は、符号化制御部１２００からそのアドレスが通知されることで、再符号化すべき中間ストリーム（マクロブロックＭＢ）を容易に見つけることができる。または、可変長符号化部１３０５は、中間ストリーム中のそのマクロブロックＭＢの先頭にＭＢスタートコードを挿入しておく。この場合には、スライスデータ再符号化部１２０５は、そのＭＢスタートコードを検索することで、再符号化すべき中間ストリーム（マクロブロックＭＢ）を容易に見つけることができる。
【０１２０】
以上で、マクロブロックの可変長符号化処理が完了する。
【０１２１】
次に、スライスデータ６０４の再符号化処理（図１１のステップＳ１４０４）の詳細について説明する。
【０１２２】
図１４は、ＣＡＶＬＣで可変長符号化されたスライスデータ６０４に対する再符号化処理を示すフロー図である。
【０１２３】
最初に、スライスデータ再符号化部１２０５は、中間ストリームに含まれるマクロブロックＭＢをマクロブロックアドレス順に順次読み出す（ステップＳ１７００）。次に、スライスデータ再符号化部１２０５は、中間ストリームの読み出しによって、中間ストリーム内で読み出しが完了した最終位置がスライスの終端になったかどうかを判定する（ステップＳ１７０１）。スライスの終端になったと判定すると（ステップＳ１７０１のＹＥＳ）、スライスデータ再符号化部１２０５は再符号化処理を終了する。一方、スライスの終端になっていないと判定すると（ステップＳ１７０１のＮＯ）、スライスデータ再符号化部１２０５は、保存されたマクロブロック符号化情報に対応するマクロブロック（対応マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとを比較する（ステップＳ１７０２）。対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスが一致するまで、スライスデータ再符号化部１２０５は中間ストリームを読み出していく。ステップＳ１７０２で一致すると判定された再符号化対象マクロブロックＭＢは、図１３のＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢと同じであって、マクロブロックラインの先頭にあるマクロブロックＭＢである。そのため、ストリームバッファ１２０４に中間ストリームを保存する場合に、Ｓ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭が分かるような処置をしておけば、ステップＳ１７０２の判定を簡単に行うことができる。
【０１２４】
スライスデータ再符号化部１２０５は、対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスが一致すると判定すると（ステップＳ１７０２のＹＥＳ）、まず、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を復号し、そのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいかどうかを判定する（ステップＳ１７０３）。ここで、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいと判定すると（ステップＳ１７０３のＹＥＳ）、スライスデータ再符号化部１２０５は、マクロブロックアドレスが１つ前のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）である直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を復号し、その直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいかどうかを判定する（ステップＳ１７０４）。ここで、直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいと判定すると（ステップＳ１７０４のＹＥＳ）、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を中間ストリームから除去して、１つ前のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を加えた値に変更して再符号化する（ステップＳ１７０５）。
【０１２５】
次に、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化を行う（ステップＳ１７０６）。差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化は、以下の手順で行われる。まず、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を復号して、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを算出する。次に、スライスデータ再符号化部１２０５は、保存されている再符号化情報を符号化制御部１２００から受けて、その再符号化情報から、マクロブロックアドレスが１つ前のマクロブロックＭＢの量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を取得する。そして、スライスデータ再符号化部１２０５は、その直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から再符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算することにより、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を再計算する。さらに、スライスデータ再符号化部１２０５は、中間ストリームから再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を除去して、再計算した値を符号化して中間ストリームに挿入する。以上の手順で、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化が完了する。以降、上述の一連の処理をスライスの終端になるまで繰り返していく。
【０１２６】
図１５は、ＣＡＢＡＣで可変長符号化されたスライスデータ６０４に対する再符号化処理を示すフロー図である。
【０１２７】
ＣＡＢＡＣの場合は、可変長符号化処理（図１２のステップＳ１５０７）では２値化処理までしか行っていないため、中間ストリーム全体に対して再符号化を行う必要がある点が、ＣＡＶＬＣの場合と大きく異なる点である。
【０１２８】
まず、スライスデータ再符号化部１２０５は、保存された再符号化情報に対応するマクロブロック（対応マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとを比較する（ステップＳ１８００）。ステップＳ１８００の判定処理は、図１４に示すＣＡＶＬＣのステップＳ１７０２の判定処理と同じである。スライスデータ再符号化部１２０５は、対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとが一致すると判定すると（ステップＳ１８００のＹＥＳ）、量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを修正する（ステップＳ１８０１）。
【０１２９】
差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データの修正は、以下の手順で行う。まず、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを復号して、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを算出する。次に、スライスデータ再符号化部１２０５は、保存されている再符号化情報を符号化制御部１２００から受けて、その再符号化情報から、マクロブロックアドレスが１つ前のマクロブロックＭＢの量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を取得する。そして、スライスデータ再符号化部１２０５は、その直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算することにより、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を再計算する。さらに、スライスデータ再符号化部１２０５は、中間ストリームから再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを除去して、再計算した差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを中間ストリームに挿入する。以上の手順で、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データの修正が完了する。
【０１３０】
次に、スライスデータ再符号化部１２０５は、２値データに対して、ＣＡＢＡＣの２値化処理以降の算術符号化処理を行う（ステップＳ１８０２）。そして、スライスデータ再符号化部１２０５は、算術符号化された再符号化対象マクロブロックＭＢがスライスの終端にあるか否かを判定し（ステップＳ１８０３）、終端になければ（ステップＳ１８０３のＮＯ）、次に再符号化されるマクロブロックＭＢを新たな再符号化対象マクロブロックＭＢとして扱い、ステップＳ１８００からの処理を繰り返し実行する。
【０１３１】
このように、本実施の形態では、２つのマクロブロック符号化部が複数のマクロブロックラインを並列に符号化しても、スライスデータ再符号化部１２０５によるパラメータの修正によって、複数のマクロブロックラインが予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができ、符号化の高速化を図ることができる。
【０１３２】
（変形例）
ここで、上記実施の形態２の画像符号化装置１２０の変形例について説明する。
【０１３３】
上記実施の形態２の画像符号化装置１２０はスライスデータ再符号化部１２０５を備えたが、本変形例に係る画像符号化装置は、このスライスデータ再符号化部１２０５を備えずに、上述の処理順序による依存関係を解決してマクロブロックを並列に符号化する点に特徴がある。
【０１３４】
図１６は、本変形例に係る画像符号化装置の構成図である。
【０１３５】
本変形例に係る画像符号化装置１２０ａは、符号化制御部１２００ａ、第１マクロブロック符号化部１２０１ａ、第２マクロブロック符号化部１２０２ａ、デブロッキングフィルタ部１２０３、ストリームバッファ１２０４、算術符号化部１２０８、ヘッダ符号化部１２０６および参照画像メモリ１２０７を備えている。つまり、本変形例に係る画像符号化装置１２０ａは、実施の形態２の画像符号化装置１２０と比べて、スライスデータ再符号化部１２０５、符号化制御部１２００、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２の代わりに、算術符号化部１２０８、符号化制御部１２００ａ、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａを備えている。なお、以下の説明において、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａをそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
【０１３６】
ここで、本変形例に係る画像符号化装置１２０ａでは、符号化制御部１２００ａおよびマクロブロック符号化部の処理動作に特徴があり、この処理動作によって、スライスデータ再符号化部１２０５による再符号化処理を省いている。この再符号化処理が必要となる理由は、２つのマクロブロック符号化部がそれぞれ独自に符号化対象マクロブロックＭＢに応じて量子化パラメータＱＰおよびスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）などのパラメータを決定して並列に符号化対象マクロブロックＭＢを符号化しているために、一方のマクロブロック符号化部が、他方のマクロブロック符号化部で用いられるパラメータを知らずに符号化対象マクロブロックＭＢを符号化することによって、処理順序による依存関係が満たされないようになるからである。
【０１３７】
そこで、本変形例における画像符号化装置１２０ａでは、上述の一方のマクロブロック符号化部で、他方のマクロブロック符号化部で用いられるパラメータが分かるように、符号化制御部１２００ａがそのパラメータ（量子化パラメータＱＰ、可変長符号化方式がＣＡＶＬＣの場合にはスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ））を予め決めておき、２つのマクロブロック符号化部がそれぞれ、その決められたパラメータを用いて符号化対象マクロブロックＭＢを符号化する処理動作に特徴がある。つまり、本変形例では、符号化制御部１２００ａが調整部として構成されており、この符号化制御部１２００ａが、２つのブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに中間ストリームを一致させる。
【０１３８】
図１７は、本変形例に係る画像符号化装置１２０ａの動作を示すフロー図である。
【０１３９】
本変形例に係る画像符号化装置１２０ａは、図１１に示す画像符号化装置１２０の動作と同様、ＳＰＳヘッダ６０１の符号化（ステップＳ１４００）、ＰＰＳヘッダ６０２の符号化（ステップＳ１４０１）、およびスライスヘッダ６０３の符号化（ステップＳ１４０２）を順次行う。スライスヘッダ６０３の符号化（ステップＳ１４０２）が完了すると、符号化制御部１２００ａは、処理順序の依存関係を満たすための再符号化処理が不要になるように、所定のマクロブロックＭＢの量子化パラメータＱＰと、可変長符号化方式がＣＡＶＬＣの場合には、その所定のマクロブロックＭＢとは異なる他のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）とを、それらのマクロブロックＭＢの符号化前に予め決定しておく（ステップＳ１４１０）。
【０１４０】
つまり、符号化制御部１２００ａは、符号化対象のスライスに含まれるマクロブロックＭＢのうち、ピクチャＰｉｃの下端を除く右端のマクロブロックＭＢに対して用いられる量子化パラメータＱＰを決定するとともに、可変長符号化方式がＣＡＶＬＣの場合には、ピクチャＰｉｃの上端を除く左端のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定しておく。
【０１４１】
次に、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは、符号化制御部１２００ａの指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する（ステップＳ１４１１）。このとき、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは、ステップＳ１４１０で決定された量子化パラメータＱＰやスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に従って、マクロブロックＭＢを符号化する。なお、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａはそれぞれ、ＣＡＢＡＣでマクロブロックＭＢを可変長符号化するときには、ＣＡＢＡＣの可変長符号化処理の全てを行わず、その可変長符号化処理に含まれる２値化処理および算術符号化処理のうち、２値化処理だけを行う。つまり、この場合には、ストリームバッファ１２０４に格納される中間ストリームのスライスデータは２値化データの状態になっている。
【０１４２】
さらに、符号化制御部１２００ａは、マクロブロック符号化部に実行させた可変長符号化の方式がＣＡＢＡＣであるかＣＡＶＬＣであるかを判定する（ステップＳ１４１２）。ここで、符号化制御部１２００ａは、可変長符号化方式がＣＡＢＡＣであると判定すると、中間ストリームに含まれる２値化データであるスライスデータを算術符号化部１２０８に算術符号化させる（ステップＳ１４１３）。なお、上述のスライスデータは、ステップＳ１４１１で符号化された１スライス分のマクロブロックＭＢの集合からなる。一方、符号化制御部１２００ａは、可変長符号化方式がＣＡＶＬＣであると判定すると、算術符号化処理を算術符号化部１２０８に実行させることなく、中間ストリームのヘッダ符号化部１２０６への出力を算術符号化部１２０８に実行させる。
【０１４３】
その後、画像符号化装置１２０ａは、図１１に示す画像符号化装置１２０の動作と同様、ステップＳ１４０５〜Ｓ１４０７の処理を実行することにより、１シーケンス分の符号化対象画像を符号化する。
【０１４４】
図１８Ａは、量子化パラメータＱＰが決定されるマクロブロックＭＢの位置を示す図である。
【０１４５】
符号化制御部１２００ａは、スライスを符号化する前に、ピクチャＰｉｃの下端を除く右端のマクロブロック（右端マクロブロック）ＭＢに対して量子化パラメータＱＰを予め決定しておく。そして、マクロブロック符号化部は、その決定された量子化パラメータＱＰに従って右端マクロブロックＭＢを符号化する。これにより、マクロブロック符号化部は、ピクチャＰｉｃの上端を除く左端のマクロブロック（左端マクロブロック）ＭＢを符号化するときには、その左端マクロブロックＭＢの１つ前にある右端マクロブロックＭＢに対して既に決定された量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を知ることができる。その結果、マクロブロック符号化部は、直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から、符号化対象マクロブロックＭＢである左端マクロブロックＭＢの量子化パラメータＱＰを減算することにより、左端マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を、再符号化処理を行うことなく、処理順序の依存関係を満たした上で算出して符号化することができる。
【０１４６】
図１８Ｂは、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が決定されるマクロブロックＭＢの位置を示す図である。
【０１４７】
符号化制御部１２００ａは、スライスを符号化する前に、ピクチャＰｉｃの上端を除く左端のマクロブロック（左端マクロブロック）ＭＢに対してスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を予め決定しておく。そして、マクロブロック符号化部は、その決定されたスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に従って左端マクロブロックＭＢを符号化する。これにより、マクロブロック符号化部は、ピクチャＰｉｃの下端を除く右端のマクロブロック（右端マクロブロック）ＭＢを符号化するときには、その右端マクロブロックＭＢの１つ後にある左端マクロブロックＭＢに対して既に決定されたスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を知ることができる。その結果、マクロブロック符号化部は、その左端マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を考慮し、再符号化処理を行うことなく、処理順序の依存関係を満たした上で、符号化対象マクロブロックＭＢである右端マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定して符号化することができる。
【０１４８】
図１９は、本変形例に係るマクロブロック符号化部による符号化処理（図１７のステップＳ１４１１）の詳細を示すフロー図である。
【０１４９】
本変形例に係るマクロブロック符号化部は、図１２に示す符号化処理と同様、予測モードの判定処理（ステップＳ１５００）、画面内予測処理（ステップＳ１５０１）、動き補償予測処理（ステップＳ１５０２）、減算処理（ステップＳ１５０３）、および直交変換・量子化処理（ステップＳ１５０４）を実行する。このとき、マクロブロック符号化部は、上述の既に決定されたパラメータを用いて処理を行う。
【０１５０】
次に、本変形例に係るマクロブロック符号化部は、図１２に示す判定処理（ステップＳ１５０５）および再符号化情報保存処理（ステップＳ１５０６）を実行することなく、可変長符号化処理（ステップＳ１５０７ａ）を実行する。そして、マクロブロック符号化部は、図１２に示す符号化処理と同様、加算処理（ステップＳ１５０９）および判定処理（ステップＳ１５１０）を実行することにより、１スライス分のマクロブロックＭＢを符号化する。
【０１５１】
図２０は、本変形例に係るマクロブロック符号化部の構成図である。
【０１５２】
本変形例に係る第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは共に同じ構成を有し、それぞれ、画面内予測部１３００、動き補償予測部１３０１、減算回路１３０２、直交変換部１３０３、量子化部１３０４、可変長符号化部１３０５ａ、逆量子化部１３０６、逆直交変換部１３０７、および加算回路１３０８から構成される。つまり、本変形例に係るマクロブロック符号化部は、図１０に示す実施の形態２のマクロブロック符号化部の可変長符号化部１３０５の代わりに可変長符号化部１３０５ａを備え、他の構成要素については、実施の形態２のマクロブロック符号化部と同様の構成要素を備えている。
【０１５３】
本変形例に係る可変長符号化部１３０５ａは、実施の形態２の可変長符号化部１３０５のように量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の置き換えなどを行うことなく、ＣＡＶＬＣまたはＣＡＢＡＣの符号化方式に従って可変長符号化を行う。
【０１５４】
図２１は、可変長符号化部１３０５ａによって行われる可変長符号化処理（図１９のステップＳ１５０７ａ）の詳細を示すフロー図である。
【０１５５】
本変形例に係る可変長符号化部１３０５ａは、まず、可変長符号化方式がＣＡＶＬＣかＣＡＢＡＣかを判定する（ステップＳ１６０２）。可変長符号化方式がＣＡＶＬＣであると判定すると、可変長符号化部１３０５ａは、ＣＡＶＬＣの符号化方式で可変長符号を行う（ステップＳ１６０３）。一方、可変長符号化方式がＣＡＢＡＣであると判定すると、可変長符号化部１３０５ａは、ＣＡＢＡＣの可変長符号化処理に含まれる２値化処理および算術符号化処理のうち、２値化処理だけを行う（ステップＳ１６０４ａ）。
【０１５６】
このように、本変形例では、各マクロブロック符号化部の符号化に用いられるパラメータのうち、処理順序に依存関係のあるパラメータが決定された後、そのパラメータを用いて符号化が行われるため、各マクロブロック符号化部は、他のマクロブロック符号化部による符号化が行われていなくても、その符号化に用いられるパラメータを予め知ることができる。その結果、各マクロブロック符号化部は、処理順序に依存関係のあるパラメータについても最後まで符号化することができ、処理順序による依存関係を解決した再符号化不要な符号化ストリームを簡単に生成することができる。
【０１５７】
なお、上記変形例では、スライスに含まれる一部のマクロブロックＭＢに対してのみ量子化パラメータＱＰやスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定したが、スライスに含まれる全てのマクロブロックＭＢに対して上述のパラメータを決定してもよい。
【０１５８】
また、上記実施の形態２では、スライスデータ６０４の再符号化処理で予め必要となるパラメータである再符号化情報を、符号化制御部１２００を経由してスライスデータ再符号化部１２０５に渡した。しかし、スライスデータ再符号化部に再符号化情報が伝わればよく、必ずしも符号化制御部１２００を経由して渡す必要はない。例えば、実施の形態１の画像復号装置で行ったように、中間ストリームに再符号化情報を埋め込んで渡してもよい。
【０１５９】
また、上記実施の形態２およびその変形例では、２つのマクロブロック符号化部を用いて並列に画素データの符号化を行ったが、マクロブロック符号化部の個数は２個に限らない。特許文献１には、２個以上のマクロブロック符号化部を使って並列に画素データを符号化する方法が記載されており、この方法に従えば、２個以上のマクロブロック符号化部を用いても符号化することができる。
【０１６０】
また、上記実施の形態２およびその変形例において、画像符号化装置１２０，１２０ａのそれぞれに含まれる各構成要素の全部あるいはその一部を、１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
【０１６１】
また、上記実施の形態２では、スライスの先頭マクロブロックＭＢにおいて、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の算出に用いられる直前のマクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）は、マクロブロックＭＢの符号化前から明らかになっている量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）であって、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化は不要である。このため、マクロブロック符号化部が次に符号化するマクロブロックＭＢのマクロブロックアドレスが、今、符号化しているマクロブロックＭＢのマクロブロックアドレスに１を加えた値よりも大きくなるような箇所でスライスを切ってもよい。これにより、いずれのマクロブロックＭＢであっても差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化を省くことができる。
【０１６２】
以上、本発明に係る画像復号装置および画像符号化装置について、実施の形態１および２とその変形例とを用いて説明したが、本発明はこれらに限定されるものではない。
【０１６３】
例えば、上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されててもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。上記ＲＡＭには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていてもよいし、一部またはすべてを含むように１チップ化されていてもよい。また、ここでは、システムＬＳＩと呼称したが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限られるものではなく、専用回路または汎用プロセッサで実現してもよい。また、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１６４】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１６５】
また、上記各実施の形態およびその変形例において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１６６】
また、上記実施の形態１および２とその変形例とを矛盾の無い範囲で任意に組み合わせてもよい。
【産業上の利用可能性】
【０１６７】
本発明にかかる画像復号装置および画像符号化装置は、高速に動画像データを復号および符号化することが可能な特徴を有し、例えば、ＭＰＥＧ等の圧縮画像を扱うデジタルテレビ、ＤＶＤレコーダおよびＢｌｕ−ｒａｙ  Ｄｉｓｃレコーダ等として有用である。また、放送局などの高速な処理が必要とされる機器の用途にも応用できる。
【符号の説明】
【０１６８】
４０    画像復号装置
１２０，１２０ａ    画像符号化装置
４００    復号制御部
４０１    ヘッダ復号部
４０２    スライスデータプリデコード部
４０３    ストリームバッファ
４０４    第１マクロブロック復号部
４０５    第２マクロブロック復号部
４０６    デブロッキングフィルタ部
４０７    参照画像メモリ
５００    可変長復号部
５０１    逆量子化部
５０２    逆直交変換部
５０３    画面内予測部
５０４    動き補償予測部
５０５    加算回路
６００    スタートコード
６０１    ＳＰＳヘッダ
６０２    ＰＰＳヘッダ
６０３    スライスヘッダ
６０４    スライスデータ
１０００    ＭＢスタートコード
１００１    マクロブロック復号情報
１００２    マクロブロックレイヤデータ
１２００，１２００ａ    符号化制御部
１２０１，１２０１ａ    第１マクロブロック符号化部
１２０２，１２０２ａ    第２マクロブロック符号化部
１２０３    デブロッキングフィルタ部
１２０４    ストリームバッファ
１２０５    スライスデータ再符号化部
１２０６    ヘッダ符号化部
１２０７    参照画像メモリ
１３００    画面内予測部
１３０１    動き補償予測部
１３０２    減算回路
１３０３    直交変換部
１３０４    量子化部
１３０５    可変長符号化部
１３０６    逆量子化部
１３０７    逆直交変換部
１３０８    加算回路
【図１】
2009150808.tif 000003
【図２】
2009150808.tif 000004
【図３】
2009150808.tif 000005
【図４】
2009150808.tif 000006
【図５】
2009150808.tif 000007
【図６】
2009150808.tif 000008
【図７】
2009150808.tif 000009
【図８】
2009150808.tif 000010
【図９】
2009150808.tif 000011
【図１０】
2009150808.tif 000012
【図１１】
2009150808.tif 000013
【図１２】
2009150808.tif 000014
【図１３】
2009150808.tif 000015
【図１４】
2009150808.tif 000016
【図１５】
2009150808.tif 000017
【図１６】
2009150808.tif 000018
【図１７】
2009150808.tif 000019
【図１８Ａ】
2009150808.tif 000020
【図１８Ｂ】
2009150808.tif 000021
【図１９】
2009150808.tif 000022
【図２０】
2009150808.tif 000023
【図２１】
2009150808.tif 000024
【図２２】
2009150808.tif 000025
【図２３】
2009150808.tif 000026
【図２４】
2009150808.tif 000027
【手続補正書】
【提出日】平成22年1月25日(2010.1.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像データの復号または符号化を行なう画像復号装置、画像符号化装置、画像復号方法および画像符号化方法に関する。
【背景技術】
【０００２】
動画像データを圧縮符号化（以下、単に「符号化」と呼ぶ）する技術として、フレーム間差分を用いたＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）符号化方式が用いられることが多い。ＭＰＥＧ符号化方式としては、ＭＰＥＧ−２（ＩＳＯ／ＩＥＣ１３８１８−２）やＭＰＥＧ−４（ＩＳＯ/ＩＥＣ１４４９６−２）が従来から使用されている。加えて、近年ではＨ．２６４／ＭＰＥＧ−４  ＡＶＣ（ＩＳＯ／ＩＥＣ１４４９６−１０）（以下、単に「Ｈ．２６４」と呼ぶ）やＶＣ−１（ＳＭＰＴＥ  ４２１Ｍ）といった新しい符号化方式が用いられるようになってきている。
【０００３】
このような符号化規格では、１つの画面（ピクチャ）内を所定画素数のブロック（輝度成分：１６画素×１６画素）に分割し、当該ブロック単位で復号処理または符号化処理が行われる。この画素ブロックのことをマクロブロックという。
【０００４】
Ｈ．２６４に代表される新しい符号化方式では、マクロブロックを符号化する際、その処理対象マクロブロックに隣接しているマクロブロック（以下、隣接マクロブロックという）と処理対象マクロブロックとの相関を利用して圧縮効率を高めている。つまり、この新しい符号化方式には、位置による依存関係がある。
【０００５】
図２２は、Ｈ．２６４における位置による依存関係を示す図である。
【０００６】
具体的には、ある任意のマクロブロックを処理対象マクロブロックとして復号または符号化するときには、図２２に示す通り、処理対象マクロブロックに隣接する、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、および右上隣接マクロブロックＣの、４つの隣接マクロブロックの処理結果を参照する必要がある。
【０００７】
このため、予めこれらの隣接マクロブロックを復号または符号化しておかなければならない。つまり、復号処理および符号化処理には、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、および右上隣接マクロブロックＣの位置による依存関係がある。
【０００８】
復号処理あるいは符号化処理を高速に行うために、マクロブロックを復号する復号部あるいは符号化する符号化部を複数用いて並列処理するには、この位置による依存関係を解決する必要がある。特許文献１では、この依存関係を解決する方法が提案されている。
【０００９】
図２３は、上記特許文献１に記載された画像復号装置および画像符号化装置の処理手順を示す図である。図２３において、各マクロブロックＭＢ内に付けられた番号は、そのマクロブロックＭＢが復号または符号化される処理順序を示す。つまり、同じ番号のマクロブロックＭＢは同時に並列に処理される。
【００１０】
図２３に示すように、上記特許文献１の画像復号装置および画像符号化装置は、ピクチャＰｉｃの左上のマクロブロックＭＢから処理を開始し、ある任意のマクロブロックＭＢを処理する場合、そのマクロブロックＭＢの１つ下の行の２列左側に位置するマクロブロックＭＢを並列に処理することで、上述の位置による依存関係を解決している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−１２９２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記特許文献１の画像復号装置および画像符号化装置であっても、Ｈ．２６４に代表される新しい符号化方式の復号処理または符号化処理を並列に実行することができず、復号処理または符号化処理を高速化することができないという問題がある。
【００１３】
Ｈ．２６４に代表される新しい符号化方式では、直前に復号または符号化されたマクロブロックとの相関も利用して圧縮効率を高めている。例えばＨ．２６４では、ある任意のマクロブロックの量子化パラメータＱＰは、その直前に処理されたマクロブロックの量子化パラメータ（ＱＰ＿ＰＲＥＶ）を用いて算出されている。そのため、ある任意のマクロブロックを復号または符号化するには、その直前に処理されたマクロブロックを参照する必要がある。つまり、前述の位置による依存関係に加えて、処理順序による依存関係がある。
【００１４】
図２４は、Ｈ．２６４における処理順序による依存関係を示す図である。
【００１５】
ＭＰＥＧ符号化方式では、図２４に示す通り、ピクチャＰｉｃ内のマクロブロックＭＢはラスタースキャン順で処理される。ここで、図２４中のマクロブロックＭＢに付けられた番号は処理順序を示し、矢印は処理順序による依存関係を示している。通常、直前に処理されたマクロブロックＭＢは、処理対象マクロブロックＭＢの左隣接マクロブロックＭＢになるため、この処理対象マクロブロックＭＢにおける処理順序による依存関係は、位置による依存関係と同じになる。しかし、ピクチャＰｉｃの左端に位置するマクロブロックＭＢを処理する場合、直前に処理されたマクロブロックＭＢは、その１つ上の行の右端に位置するマクロブロックＭＢになる。例えば、図２４では９番のマクロブロックＭＢの直前のマクロブロックＭＢは、８番のマクロブロックＭＢであり、１つ上の行の右端に位置するマクロブロックＭＢである。
【００１６】
上記特許文献１の画像復号装置および画像符号化装置では、ピクチャＰｉｃの左端に位置するマクロブロックＭＢを処理する前に、そのマクロブロックＭＢ（処理対象マクロブロック）の１つ上の行の右端に位置するマクロブロックＭＢを処理しておらず、処理順序による依存関係が解決できていない。つまり、上記特許文献１の画像復号装置および画像符号化装置では、並列に復号および符号化することができない。
【００１７】
そこで、本発明は、かかる問題に鑑みてなされたものであって、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して、動画像データを並列に復号および符号化する画像復号装置、画像符号化装置、画像復号方法および画像符号化方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、本発明にかかる画像復号装置は、複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴とする。
【００１９】
例えば、第１のブロック復号部による第１のブロック群の復号処理と、第２のブロック復号部による第２のブロック群の復号処理とが行われるときに、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係が第１および第２のブロック群にある場合には、第２のブロック群の復号処理には、第１のブロック群に対してプリデコード処理（可変長復号）が行われて生成されるブロック復号情報（例えば、量子化パラメータなど）が必要となる。そこで、本発明では、第１のブロック群の復号処理の前に、その第１のブロック群に対してプリデコード処理をしておき、そのプリデコード処理によって得られたブロック復号情報を用いて、第１のブロック群の復号処理と第２のブロック群の復号処理とを並列に行う。このように、本発明では、事前にプリデコード処理を行ってブロック復号情報を生成しておくことにより、複数のブロック復号部は、予め定められた処理順序でブロック群を順次復号しなくても、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができる。さらに、本発明では、複数のブロック復号部はそれぞれ、プリデコード処理されたブロック群に対して、復号処理のうちプリデコード処理を除く残りの処理を行うのではなく、符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、プリデコード処理された複数のブロック群を有する一部復号済みの符号化ストリームを生成する必要がない。この一部復号済みの符号化ストリームは、元の符号化ストリームをよりもデータ量が多い。したがって、本発明では、複数のブロック復号部が、元の符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、復号処理の対象となるストリームを復号処理の前に一時的に蓄えておくバッファの容量を抑えることができる。
【００２０】
また、前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号することを特徴としてもよい。
【００２１】
これにより、符号化ストリームの各ブロック群の先頭にビットパターンが挿入されているため、各ブロック復号部は、符号化ストリームに対してその先頭から順に可変長復号を行うことなく、復号処理の対象となるブロック群を容易に見つけることができる。
【００２２】
また、前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴としてもよい。
【００２３】
これにより、ブロック復号情報が符号化ストリームに挿入されるため、各ブロック復号部は、符号化ストリームを取得するときにブロック復号情報も取得することができ、ブロック復号情報を容易に取得することができる。
【００２４】
また、前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成することを特徴としてもよい。
【００２５】
これにより、最後のブロックの復号処理に必要な係数（例えば、量子化パラメータ）と、予め定められた係数（例えば、スライスヘッダに格納された量子化パラメータの初期値）との差分がブロック復号情報として生成されるため、最後のブロックの係数そのものをブロック復号情報として生成するよりも、ブロック復号情報のデータ量を抑えることができる。
【００２６】
上記目的を達成するために、本発明にかかる画像符号化装置は、複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部とを備えることを特徴とする。
【００２７】
これにより、複数のブロック符号化部が複数のブロック群を並列に符号化しても、調整部によるパラメータ（例えば、量子化パラメータ）の調整によって、複数のブロック群が予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができる。
【００２８】
また、前記調整部は、前記複数のブロック符号化部による符号化に用いられるパラメータを決定し、前記複数のブロック符号化部はそれぞれ、前記調整部によって決定されたパラメータを用いて符号化を行うことにより、前記符号化ストリームに一致した前記中間ストリームを生成することを特徴としてもよい。
【００２９】
これにより、各ブロック符号化部の符号化に用いられるパラメータが決定されて、そのパラメータを用いて符号化が行われるため、各ブロック符号化部は、他のブロック符号化部による符号化が行われていなくても、その符号化に用いられる既に決定されたパラメータを知ることができ、自らの符号化に用いられた他のパラメータを、その決定されたパラメータを用いて処理した上で符号化ストリーム中に含めることができる。その結果、簡単に符号化ストリームに一致した中間ストリームを生成することができる。
【００３０】
また、前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させることを特徴としてもよい。
【００３１】
これにより、中間ストリームは生成された後に符号化ストリームに一致するように修正されるため、上述のように予めパラメータが決定されてそのパラメータどおりに符号化が行われる場合と比べて、より適切な符号化を行うことができる。
【００３２】
なお、本発明は、このような画像復号装置および画像符号化装置として実現することができるだけでなく、画像復号方法、画像符号化方法、コンピュータに復号または符号化させるためのプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００３３】
本発明の画像復号装置および画像符号化装置によれば、処理順序による依存関係がある符号化画像を並列に復号することができ、高速に符号化画像を復号することができるとともに、処理順序による依存関係がある符号化方式で画像を並列に符号化することができ、高速に画像を符号化することができる。
【図面の簡単な説明】
【００３４】
【図１】図１は、本発明の実施の形態１における画像復号装置の構成図である。
【図２】図２は、同上のマクロブロック復号部の構成図である。
【図３】図３は、一般的なＨ．２６４の符号化ストリームの構成図である。
【図４】図４は、本発明の実施の形態１における画像復号装置の動作を示すフロー図である。
【図５】図５は、同上のマクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。
【図６】図６は、同上のスライスデータのプリデコード処理の動作を示すフロー図である。
【図７】図７は、同上の加工済符号化ストリームのスライスデータの構成図である。
【図８】図８は、同上のマクロブロック復号部による復号処理を示すフロー図である。
【図９】図９は、本発明の実施の形態２における画像符号化装置の構成図である。
【図１０】図１０は、同上のマクロブロック符号化部の構成図である。
【図１１】図１１は、同上の画像符号化装置の動作を示すフロー図である。
【図１２】図１２は、同上のマクロブロック符号化部による符号化処理を示すフロー図である。
【図１３】図１３は、同上の可変長符号化処理を示すフロー図である。
【図１４】図１４は、ＣＡＶＬＣで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。
【図１５】図１５は、ＣＡＢＡＣで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。
【図１６】図１６は、本発明の実施の形態２の変形例に係る画像符号化装置の構成図である。
【図１７】図１７は、同上の画像符号化装置の動作を示すフロー図である。
【図１８Ａ】図１８Ａは、同上の量子化パラメータが決定されるマクロブロックの位置を示す図である。
【図１８Ｂ】図１８Ｂは、同上のスキップランパラメータが決定されるマクロブロックの位置を示す図である。
【図１９】図１９は、同上のマクロブロック符号化部による符号化処理の詳細を示すフロー図である。
【図２０】図２０は、同上のマクロブロック符号化部の構成図である。
【図２１】図２１は、可変長符号化部によって行われる可変長符号化処理の詳細を示すフロー図である。
【図２２】図２２は、Ｈ．２６４における位置による依存関係を示す図である。
【図２３】図２３は、従来の画像復号装置および画像符号化装置の処理手順を示す図である。
【図２４】図２４は、Ｈ．２６４における処理順序による依存関係を示す図である。
【発明を実施するための形態】
【００３５】
以下、Ｈ．２６４符号化方式に対応した画像復号装置および画像符号化装置に、本発明を適用した実施の形態について、図面を参照しながら説明する。なお、以下に示す実施の形態は、Ｈ．２６４の画像復号装置および画像符号化装置であるが、処理順序による依存関係を持つ動画像符号化方式であれば、どのような動画像符号化方式に対しても、以下に示す実施の形態と同様の形態で本発明を実現することができる。
【００３６】
（実施の形態１）
図１は、本発明の実施の形態１における画像復号装置の構成図である。
【００３７】
図１に示すように、画像復号装置４０は、復号制御部４００、ヘッダ復号部４０１、スライスデータプリデコード部４０２、ストリームバッファ４０３、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、デブロッキングフィルタ部４０６、および参照画像メモリ４０７から構成される。なお、以下の説明において、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５をそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
【００３８】
次に、図１に示す画像復号装置４０の各構成要素の動作について説明する。
【００３９】
ヘッダ復号部４０１は、Ｈ．２６４で符号化された符号化ストリームＳｔｒを取得し、その符号化ストリームＳｔｒに含まれるヘッダを順次復号する。
【００４０】
スライスデータプリデコード部４０２は、ヘッダ復号部４０１から、ヘッダが復号された符号化ストリームＳｔｒを取得し、その符号化ストリームＳｔｒに含まれるマクロブロックの復号処理を並列に行う上で予め必要となるパラメータ（並列処理用パラメータ）を復号する。さらに、スライスデータプリデコード部４０２は、その並列処理用パラメータの復号結果を用いて、符号化ストリームＳｔｒの加工処理を行い、加工処理された符号化ストリーム（以下、加工済符号化ストリームＳｔｍという）をストリームバッファ４０３に出力する。これにより、加工済符号化ストリームＳｔｍはストリームバッファで一時的に保持される。
【００４１】
第１マクロブロック復号部４０４および第２マクロブロック復号部４０５はそれぞれ、ストリームバッファ４０３から加工済符号化ストリームＳｔｍを読み出し、加工済符号化ストリームＳｔｍに含まれる符号化された複数のマクロブロックのうち、それぞれのマクロブロック復号部に割り当てられたマクロブロックを並列に復号する。この時、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５はそれぞれ、必要に応じて、参照画像メモリ４０７から動き補償予測に用いる参照画像を読み出し、その読み出された参照画像を用いてマクロブロックを復号する。なお、参照画像は画素データから構成されている。その結果、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、再構成された画素データからなる再構成画像をデブロッキングフィルタ部４０６に出力する。
【００４２】
デブロッキングフィルタ部４０６は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行うことによって、復号画像を生成して出力する。また、デブロッキングフィルタ部４０６は、その復号画像を画像復号装置４０の外部に出力すると共に、その復号画像がマクロブロックの復号処理での参照画像として用いられるために、その復号画像を参照画像メモリ４０７に書き込み、参照画像メモリ４０７に一時的に保持させる。
【００４３】
復号制御部４００は、ヘッダ復号部４０１、スライスデータプリデコード部４０２、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、およびデブロッキングフィルタ部４０６を制御することにより、画像復号処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
【００４４】
図２は、マクロブロック復号部の構成図である。
【００４５】
第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、共に同じ構成を有し、それぞれ、可変長復号部５００、逆量子化部５０１、逆直交変換部５０２、画面内予測部５０３、動き補償予測部５０４、および加算回路５０５から構成される。
【００４６】
可変長復号部５００は、加工済符号化ストリームＳｔｍのうち復号処理の対象となる複数のマクロブロックからなるブロック群（例えば、マクロブロックライン）を可変長復号して、予測モード、量子化された係数、および動きベクトルなどを出力する。逆量子化部５０１は、可変長復号部５００から出力される量子化された係数に対して逆量子化を行い、係数データを逆直交変換部５０２に出力する。逆直交変換部５０２では、係数データに対して逆直交変換を行い、空間領域の画素データからなる誤差画像を生成する。
【００４７】
画面内予測部５０３と動き補償予測部５０４は、可変長復号部５００が出力する予測モードによって、どちらか一方が起動され、画素データから成る予測画像を生成する。予測モードがイントラ予測であった場合は、画面内予測部５０３が起動され、このとき、画面内予測部５０３は画面内予測を行う。予測モードがインター予測であった場合は、動き補償予測部５０４が起動される。このとき、動き補償予測部５０４は、復号された動きベクトルに応じた参照画像を取得して、動き補償予測を行う。加算回路５０５は、逆直交変換部５０２から出力された誤差画像と、画面内予測部５０３または動き補償予測部５０４から出力された予測画像とを加算することにより、画素データからなる再構成画像を生成して出力する。
【００４８】
図３は、一般的なＨ．２６４の符号化ストリームＳｔｒの構成図である。
【００４９】
符号化ストリームＳｔｒの先頭にはＳＰＳ（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ６０１があり、その後にＰＰＳ（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ６０２、スライスヘッダ６０３、およびスライスデータ６０４が続く。ＳＰＳヘッダ６０１、ＰＰＳヘッダ６０２、およびスライスヘッダ６０３の先頭にはデータの区切りを示すスタートコード（ＳＣ：Ｓｔａｒｔ  Ｃｏｄｅ）６００が挿入されている。
【００５０】
そのため、ヘッダ復号部４０１は、符号化ストリームＳｔｒに対してスタートコードサーチを行い、スタートコード６００に続くデータを解析することで、符号化ストリームＳｔｒの中からＳＰＳヘッダ６０１、ＰＰＳヘッダ６０２、スライスヘッダ６０３を探索することができる。ピクチャの先頭にはＰＰＳヘッダ６０２が存在し、次のＰＰＳヘッダ６０２が現れるまでの一連のデータが１ピクチャ分のデータである。１ピクチャのデータの中には、スライスヘッダ６０３とスライスデータ６０４のセットが、そのピクチャに存在するスライスの数分存在する。また、スライスデータ６０４には、符号化された複数のマクロブロックを示すマクロブロックレイヤデータが格納されている。
【００５１】
スライスデータプリデコード部４０２は、このスライスデータ６０４に含まれるマクロブロックレイヤデータに対して可変長復号を行うことにより、上述の並列処理用パラメータを取得する。
【００５２】
図４は、本発明の実施の形態１における画像復号装置４０の動作を示すフロー図である。
【００５３】
まず、ヘッダ復号部４０１は、符号化ストリームＳｔｒを取得すると、ＳＰＳヘッダ６０１を復号し（ステップＳ７００）、次に、ＰＰＳヘッダ６０２を復号し（ステップＳ７０１）、次に、スライスヘッダ６０３を復号する（ステップＳ７０２）。スライスヘッダ６０３の復号が完了すると、スライスデータプリデコード部４０２は、スライスデータ６０４に対してプリデコードを行うことによって、マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータを復号するとともに、符号化ストリームＳｔｒの加工処理を行う（ステップＳ７０３）。
【００５４】
１スライス分のスライスデータ６０４のプリデコードが完了すると、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５は、復号制御部４００の指示に従って、それぞれストリームバッファ４０３に格納されている加工済符号化ストリームＳｔｍから復号対象のマクロブロック（マクロブロックライン）を読み出しながら、マクロブロックの復号処理を並列に行う（ステップＳ７０４）。
【００５５】
図５は、マクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。
【００５６】
Ｈ．２６４では、図２２に示した位置による依存関係が存在するため、画像復号装置４０は図５に示す手順で復号を行う。なお、図５において、各マクロブロックＭＢに付けられた番号は処理順序を示す。つまり、同じ番号のマクロブロックＭＢは同時に並列に処理される。
【００５７】
図５に示すように、第１マクロブロック復号部４０４は、ピクチャＰｉｃに含まれる奇数ラインのマクロブロックＭＢ、つまり奇数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックＭＢを復号し、第２マクロブロック復号部４０５は、ピクチャＰｉｃに含まれる偶数ラインのマクロブロックＭＢ、つまり偶数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックＭＢを復号する。また、第１マクロブロック復号部４０４がある任意のマクロブロックＭＢを復号する場合、第２マクロブロック復号部４０５は、そのマクロブロックＭＢの１つ下の行の２列左側に位置するマクロブロックＭＢを並列に処理する。これにより、位置による依存関係を解決して並列に復号することが可能となる。
【００５８】
復号制御部４００は、１スライス分のマクロブロックの復号処理が完了すると、その復号処理が完了したスライスがピクチャの終端にあるかどうかを判断する（ステップＳ７０５）。ピクチャに含まれるスライスの数は、ＰＰＳヘッダ６０２にあるパラメータ（ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１）を復号することで分かる。このため、復号制御部４００は、これまでに復号処理が完了したスライスの数から１を引いた数と、パラメータ（ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１）が一致すれば、直前に復号処理が完了したスライスがピクチャの終端にあると判断する。
【００５９】
ここで、復号制御部４００は、ピクチャの終端にないと判断すると（ステップＳ７０５のＮＯ）、ヘッダ復号部４０１、スライスデータプリデコード部４０２およびマクロブロック復号部に対して、ピクチャの終端になるまで、スライスヘッダ６０３の復号（ステップＳ７０２）、スライスデータ６０４のプリデコード（ステップＳ７０３）、およびマクロブロックの復号（ステップＳ７０４）を順次実行させる。一方、復号制御部４００は、ピクチャの終端にあると判断すると（ステップＳ７０５のＹＥＳ）、デブロッキングフィルタ部４０６に、1ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる（ステップＳ７０６）。デブロッキングフィルタ処理が完了すると、復号制御部４００は、次に、デブロッキングフィルタ処理されたピクチャがその符号化ストリームＳｔｒの終端にあるかどうかを判定する（ステップＳ７０７）。
【００６０】
ここで、復号制御部４００は、符号化ストリームＳｔｒの終端にない、つまり後にストリームが続いていると判断した場合は（ステップＳ７０７のＮＯ）、ヘッダ復号部４０１に対して、次に復号されるべきピクチャのＰＰＳヘッダ６０２の復号を実行させることにより（ステップＳ７０１）、符号化ストリームＳｔｒに含まれるピクチャを次々と復号していく。
【００６１】
次に、スライスデータ６０４のプリデコード（図４のステップＳ７０３）の詳細について説明する。
【００６２】
図６は、スライスデータ６０４に対するプリデコードの詳細な動作を示すフロー図である。
【００６３】
スライスデータプリデコード部４０２は、スライスデータ６０４に対してマクロブロック単位でプリデコードを行う。具体的には、スライスデータプリデコード部４０２は、まず、第１マクロブロック復号部４０４および第２マクロブロック復号部４０５から、プリデコードの対象とされるマクロブロック（プリデコード対象マクロブロック）ＭＢを復号するマクロブロック復号部を、担当復号部として特定する（ステップＳ９００）。そして、スライスデータプリデコード部４０２は、そのプリデコード対象マクロブロックＭＢのマクロブロックアドレスＢａ１が、その担当復号部が直前に復号したマクロブロック（直前復号マクロブロック）ＭＢのマクロブロックアドレスＢａ２に１を加えた値よりも大きいかどうかを判定する（ステップＳ９０１）。
【００６４】
マクロブロックアドレスは、図２４に示すように、ピクチャＰｉｃ内のマクロブロックＭＢに対してラスタースキャン順に番号が付けられたインデックスのことであり、Ｈ．２６４では、ピクチャＰｉｃ内のマクロブロックＭＢはマクロブロックアドレス順で処理される。図５に示す手順で復号を行う場合、例えば、第１マクロブロック復号部４０４は、ライン１のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン１にある８番のマクロブロックＭＢ）の次に、ライン３のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン３にある９番のマクロブロックＭＢ）を復号する。このとき、その８番目のマクロブロックＭＢと９番目のマクロブロックＭＢの間にある、ライン２上の全てのマクロブロックＭＢは、第１マクロブロック復号部４０４で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックＭＢ（ライン３にある９番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ１は、直前復号マクロブロックＭＢ（ライン１にある８番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ２に１を加えた値よりも大きくなる。同様に、第２マクロブロック復号部４０５は、ライン２のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン２にある１０番のマクロブロックＭＢ）の次に、ライン４のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン４にある１１番のマクロブロックＭＢ）を復号する。このとき、その１０番目のマクロブロックＭＢと１１番目のマクロブロックＭＢの間にある、ライン３上の全てのマクロブロックＭＢは、第２マクロブロック復号部４０５で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックＭＢ（ライン４にある１１番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ１は、直前復号マクロブロックＭＢ（ライン２にある１０番目のマクロブロックＭＢ）のマクロブロックアドレスＢａ２に１を加えた値よりも大きくなる。
【００６５】
このように、スライスデータプリデコード部４０２は、ステップＳ９０１では、プリデコード対象マクロブロックＭＢが、担当復号部によって復号される、マクロブロックアドレスが一続きになっているマクロブロック群の先頭のマクロブロックＭＢであるかどうかを判定する。つまり、図５に示す手順で復号が行われる場合、スライスデータプリデコード部４０２は、ステップＳ９０１では、ピクチャＰｉｃ左端に位置するマクロブロックＭＢをプリデコードするときに、真（ＹＥＳ）と判定する。
【００６６】
スライスデータプリデコード部４０２は、ステップＳ９０１で、偽（ＮＯ）と判定すると、次のマクロブロックＭＢの先頭を探すために、通常のマクロブロックＭＢの可変長復号を行う（ステップＳ９０４）。一方、スライスデータプリデコード部４０２は、ステップＳ９０１で、真（ＹＥＳ）と判定すると、符号化ストリームＳｔｒ中におけるプリデコード対象マクロブロックＭＢの先頭に位置する部分に、プリデコード対象マクロブロックＭＢの先頭を示すビットパターンであるＭＢ（Ｍａｃｒｏｂｌｏｃｋ）スタートコードを挿入する（ステップＳ９０２）。本実施の形態では、例えば、ＭＢスタートコードを０ｘ０００００１Ｆ０とする。ＭＢスタートコードの挿入後、スライスデータプリデコード部４０２は、プリデコード対象マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータをマクロブロック復号情報として、符号化ストリームＳｔｒ中におけるＭＢスタートコードの直後（プリデコード対象マクロブロックＭＢの直前）に埋め込む（ステップＳ９０３）。なお、ＭＢスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
【００６７】
埋め込むマクロブロック復号情報は、プリデコード対象マクロブロックＭＢのマクロブロックアドレスの直前にあるマクロブロックＭＢ（直前マクロブロックＭＢ）を可変長復号することによって生成された、処理順序による依存関係があるパラメータである。Ｈ．２６４では、可変長符号化の方式がＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ Ｃｏｄｉｎｇ）の場合は、スライスデータプリデコード部４０２は、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）と、スキップするマクロブロックの数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）とをマクロブロック復号情報として埋め込む。以下、そのスキップするマクロブロックをスキップマクロブロックといい、そのスキップマクロブロックの数をスキップマクロブロック数という。スキップマクロブロック数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）は、先頭のマクロブロックＭＢがスキップマクロブロックの場合に、その先頭のマクロブロックＭＢを含めてスキップマクロブロックが何個続くかを表し、先頭のマクロブロックＭＢがスキップマクロブロックでなければ０となる。なお、スライスデータプリデコード部４０２は、直前マクロブロックＭＢを可変長復号することによって、その直前マクロブロックＭＢを含めてその直前マクロブロックＭＢから後に続くスキップマクロブロックの数を示すスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を取得する。スライスデータプリデコード部４０２は、このスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）と直前マクロブロックＭＢのマクロブロックアドレスとに基づいて、上述のスキップマクロブロック数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）を算出する。
【００６８】
可変長符号化の方式がＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）の場合は、スライスデータプリデコード部４０２は、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）と、直前マクロブロックＭＢをＣＡＢＡＣに従って可変長復号したときのスライスデータプリデコード部４０２（可変長復号器）の内部状態を示す情報（ｃｏｄＩＯｆｆｓｅｔ、ｃｏｄＩＲａｎｇｅ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘ）とをマクロブロック復号情報として埋め込む。ＣＡＢＡＣの可変長復号器の内部状態はシンタックスではないが、ＣＡＢＡＣでは、１ビット復号する度に内部状態が変化するため、マクロブロックＭＢの途中から復号する場合は、その途中までの内部状態が必要となる。したがって、直前マクロブロックＭＢを可変長復号したときにおける内部状態を示す情報を、マクロブロック復号情報として符号化ストリームＳｔｒに埋め込む必要がある。
【００６９】
なお、ＣＡＢＡＣの可変長復号処理（算術復号処理および多値化処理）のうち、1ビット復号する度に内部状態が変化するのは算術復号処理であるので、スライスデータプリデコード部４０２は、算術復号処理だけを行ってスライスデータ６０４を２値化データに復号してしまってもよい。算術復号だけを行った場合、量子化パラメータ（ＱＰ＿ＰＲＥＶ）だけをマクロブロック復号情報として符号化ストリームＳｔｒに埋め込めばよい。
【００７０】
本実施の形態では、スライスデータプリデコード部４０２は、マクロブロック復号情報をｅｘｐ−Ｇｏｌｏｍｂ符号化方式で符号化して埋め込む。なお、マクロブロック復号情報の符号化方式は、マクロブロック復号情報の示すパラメータを一意に復号できるものであれば何でもよい。また、スライスデータプリデコード部４０２は、量子化パラメータ（ＱＰ＿ＰＲＥＶ）をそのままマクロブロック復号情報として埋め込んでもよいが、ある値と量子化パラメータ（ＱＰ＿ＰＲＥＶ）との差分をマクロブロック復号情報として埋め込んでもよい。これにより、マクロブロック復号情報のデータ量を削減することができる。例えば、スライスデータプリデコード部４０２は、対象マクロブロックＭＢを含むスライスの全てのマクロブロックＭＢで使用される量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）と、直前マクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）との差分を、マクロブロック復号情報として埋め込む。なお、上述の初期値（ＳｌｉｃｅＱＰ）は、スライスヘッダ６０３に含まれているパラメータから算出することができる。
【００７１】
スライスデータプリデコード部４０２は、マクロブロック復号情報の挿入処理（ステップＳ９０３）が完了すると、次に、次のマクロブロックＭＢの先頭を探すために、プリデコード対象マクロブロックの可変長復号を行う（ステップＳ９０４）。次に、スライスデータプリデコード部４０２は、ステップＳ９０４で可変長復号されたプリデコード対象マクロブロックＭＢがスライスの終端にあるマクロブロックＭＢかどうかを判定する（ステップＳ９０５）。ここで、スライスデータプリデコード部４０２は、スライスの終端にあるマクロブロックＭＢでないと判定すると（ステップＳ９０５のＮＯ）、次のプリデコード対象マクロブロックＭＢに対してステップＳ９００からの処理を繰り返し行うことにより、スライスデータ６０４のプリデコードを行っていく。
【００７２】
このように、本実施の形態におけるスライスデータプリデコード部４０２は、符号化ストリームＳｔｒに含まれる、複数のブロックからなるマクロブロックラインごとに、復号処理の一部である可変長復号（プリデコード処理）をそのマクロブロックラインに対して行うことにより、他のマクロブロックラインの復号処理に必要なパラメータであるマクロブロック復号情報を生成している。そして、符号化ストリームＳｔｒに含まれる各スライスデータ６０４に対して、上述のようなプリデコードが行われることによって、加工済符号化ストリームＳｔｍが生成されて、ストリームバッファ４０３に格納される。
【００７３】
図７は、加工済符号化ストリームＳｔｍのスライスデータの構成を示す図である。
【００７４】
加工済符号化ストリームＳｔｍのスライスデータ６０４ａ、つまり１つのスライスのスライスデータ６０４がプリデコードされることによって得られたスライスデータ６０４ａは、ＭＢスタートコード１０００、マクロブロック復号情報１００１、およびマクロブロックレイヤデータ１００２からなるデータセットを１つまたは複数個含んでいる。マクロブロックレイヤデータ１００２は、符号化ストリームＳｔｒのスライスデータ６０４の中に含まれているデータと全く同じものである。つまり、マクロブロックレイヤデータ１００２は、全く復号処理されていないデータとなっている。このスライスデータ６０４ａに含まれるデータセットの数は、スライスデータ６０４のプリデコードの際にステップＳ９０１で真（ＹＥＳ）と判定された回数と同じ数である。
【００７５】
なお、データセットに含まれるマクロブロックレイヤデータ１００２は、可変長復号されていない、つまり可変長符号化されたままのマクロブロックＭＢを含んでいる。
【００７６】
また、可変長符号化の方式がＣＡＢＡＣの場合、スライスデータ６０４のプリデコード（ステップＳ７０３）においてスライスデータ６０４を２値化データに復号した時には、マクロブロックレイヤデータ１００２ではなく、復号された２値データが代わりに入る。
【００７７】
なお、ステップＳ９０１の真（ＹＥＳ）と判定されたプリデコード対象マクロブロックＭＢの先頭に、ＭＢスタートコードおよびマクロブロック復号情報１００１を挿入しているが、プリデコード対象マクロブロックＭＢ以外のマクロブロックＭＢにも、ＭＢスタートコード１０００およびマクロブロック復号情報１００１を挿入してもよい。例えば、全てのマクロブロックＭＢの先頭にＭＢスタートコード１０００およびマクロブロック復号情報１００１を挿入してもよい。全てのマクロブロックＭＢの先頭に挿入すると、マクロブロックＭＢの復号処理（ステップＳ７０４）の際に、どのマクロブロックＭＢをどのマクロブロック復号部に割当てても、処理順序による依存関係を解決して復号することが可能となる。
【００７８】
次に、図４に示すマクロブロックＭＢの復号処理（ステップＳ７０４）の詳細について図８を用いて説明する。
【００７９】
図８は、マクロブロック復号部によるマクロブロックＭＢの復号処理を示すフロー図である。
【００８０】
まず、マクロブロック復号部は、加工済符号化ストリームＳｔｍからＭＢスタートコード１０００の探索を行い、ＭＢスタートコード１０００が見つかるまで加工済符号化ストリームＳｔｍを読み進める（ステップＳ１１００）。次に、マクロブロック復号部は、ＭＢスタートコード１０００が付いたマクロブロックＭＢが、そのマクロブロック復号部に割り当てられた復号対象のマクロブロックＭＢであるかどうかを判定する（ステップＳ１１０１）。ここで、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックＭＢでないと判定すると（ステップＳ１１０１のＮＯ）、復号対象のマクロブロックＭＢが現れるまで繰り返しＭＢスタートコードの探索（ステップＳ１１００）を行う。一方、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックＭＢであると判定すると（ステップＳ１１０１のＹＥＳ）、ＭＢスタートコード１０００に続くマクロブロック復号情報１００１の復号を行う（ステップＳ１１０２）。以降、マクロブロック復号部は、マクロブロックＭＢの通常の復号処理を行っていく。なお、ＭＢスタートコード探索（ステップＳ１１００）、復号対象マクロブロック判定（ステップＳ１１０１）、およびマクロブロック復号情報の復号（ステップＳ１１０２）の処理は、全て可変長復号部５００で行われる。
【００８１】
次に、マクロブロック復号部の可変長復号部５００は、そのマクロブロック復号部に割り当てられた復号対象マクロブロックＭＢに対して可変長復号処理を行う（ステップＳ１１０３）。ここで、復号対象マクロブロックＭＢが、ＭＢスタートコード１０００が付いた先頭のマクロブロックＭＢ（マクロブロック復号情報の直後のマクロブロックＭＢ）の場合には、可変長復号部５００は、ステップＳ１１０２で復号したマクロブロック復号情報１００１を使用して、その先頭のマクロブロックＭＢを可変長復号する。次に、マクロブロック復号部は、可変長復号結果から、予測モードがイントラ予測かインター予測を判定する（ステップＳ１１０４）。予測モードがイントラ予測であると判定されると（ステップＳ１１０４のイントラ予測）、画面内予測部５０３が起動して画面内予測処理を行う（ステップＳ１１０５）、予測モードがインター予測であると判定されると（ステップＳ１１０４のインター予測）、動き補償予測部５０４が起動して動き補償予測処理を行う（ステップＳ１１０６）。これらのステップＳ１１０５およびステップＳ１１０６の処理によって、画素データからなる予測画像が生成される。
【００８２】
次に、マクロブロック復号部は、可変長復号処理（ステップＳ１１０３）が行われた量子化された係数を、逆量子化部５０１で逆量子化し、逆直交変換部５０２で逆直交変換することで、予測画像に対する誤差画像を生成する（ステップＳ１１０７）。最後に、マクロブロック復号部は、予測画像と誤差画像を加算することにより、画素データからなる再構成画像を得る（ステップＳ１１０８）。このように１マクロブロックＭＢの復号処理が完了すると、マクロブロック復号部は、まだ復号すべきマクロブロックレイヤデータ１００２があるかどうかを判定する（ステップＳ１１０９）。マクロブロック復号部は、復号すべきマクロブロックレイヤデータ１００２がないと判定すると（ステップＳ１１０９のＮＯ）、マクロブロックＭＢの復号処理を終える。一方、マクロブロック復号部は、復号すべきマクロブロックレイヤデータ１００２が残っていると判定すると（ステップＳ１１０９のＹＥＳ）、次に復号すべきマクロブロックＭＢのマクロブロックアドレスが、直前に復号したマクロブロックＭＢのマクロブロックアドレスに１を加えた値より大きいかどうかを判定する（ステップＳ１１１０）。この判定の結果が真（ステップＳ１１１０のＹＥＳ）であれば、マクロブロック復号部は、次に復号すべきマクロブロックＭＢの先頭を探索するためにＭＢスタートコード探索を行い（ステップＳ１１００）、判定の結果が偽（ステップＳ１１１０のＮＯ）であれば、次のマクロブロックＭＢの可変長復号を行う（ステップＳ１１０３）。
【００８３】
このように、本実施の形態では、事前にプリデコードを行ってマクロブロック復号情報１００１を生成しておくことにより、２つのマクロブロック復号部は、予め定められた処理順序でマクロブロックラインを順次復号しなくても、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができ、復号の高速化を図ることができる。さらに、本実施の形態では、２つのマクロブロック復号部はそれぞれ、プリデコードされたマクロブロックラインに対して、復号処理のうち可変長復号を除く残りの処理を行うのではなく、符号化ストリームＳｔｒに含まれているマクロブロックラインに対して復号処理の全てを行うため、プリデコードされた複数のマクロブロックラインを有する可変長復号済みの復号ストリームを生成する必要がない。この可変長復号済みの復号ストリームは、元の符号化ストリームＳｔｒよりもデータ量が多い。したがって、本実施の形態では、２つのマクロブロック復号部が、元の符号化ストリームＳｔｒに含まれているマクロブロックラインに対して復号処理の全てを行うため、復号処理の対象となるストリームを一時的に蓄えておくストリームバッファ４０３の容量を抑えることができる。
【００８４】
なお、本実施の形態では、並列処理用パラメータであるマクロブロック復号情報１００１を符号化ストリームＳｔｒに埋め込む方法を取った。しかし、マクロブロックＭＢの復号を行う場合に、第１マクロブロック復号部４０４または第２マクロブロック復号部４０５にマクロブロック復号情報１００１を渡せればよく、必ずしも符号化ストリームＳｔｒにマクロブロック復号情報１００１を埋め込む必要はない。例えば、スライスデータプリデコード部４０２は、マクロブロック復号情報１００１を符号化ストリームＳｔｒには埋め込まずに、スライスデータ６０４のプリデコードが終わった後にマクロブロック復号情報１００１を復号制御部４００に渡し、マクロブロック復号部が起動する時に、復号制御部４００がそのマクロブロック復号情報１００１をマクロブロック復号部に通知してもよい。
【００８５】
また、本実施の形態では、スキップするマクロブロックの数（ｎｕｍ＿ｓｋｉｐｐｅｄ＿ｍｂ）をマクロブロック復号情報１００１として符号化ストリームＳｔｒに埋め込んだが、その代わりにスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）をマクロブロック復号情報１００１として符号化ストリームＳｔｒに埋め込んでもよい。
【００８６】
また、本実施の形態では、２つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は２個に限らない。特許文献１には、２個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、２個以上のマクロブロック復号部を用いても復号することができる。
【００８７】
また、本実施の形態において、復号制御部４００、ヘッダ復号部４０１、スライスデータプリデコード部４０２、ストリームバッファ４０３、第１マクロブロック復号部４０４、第２マクロブロック復号部４０５、デブロッキングフィルタ部４０６、および参照画像メモリ４０７の全部あるいはその一部を、１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
【００８８】
なお、本実施の形態では、一般的なＨ．２６４符号化方式に対応した画像復号装置について説明したが、Ｈ．２６４符号化方式に一部制約を入れて符号化された画像であれば、スライスデータプリデコード部４０２でのプリデコード（ステップＳ７０３）をなくすことができる。プリデコードは、処理順序による依存関係を解決するために行うものであり、処理順序の依存関係がなければ、プリデコードをせずに並列にマクロブロック復号処理（ステップＳ７０４）を行うことができるからである。つまり、並列復号処理に適した画像符号化方式を規格化する場合は、この処理順序の依存関係をなくすように、既存の画像符号化方式に制約を加えればよい。例えば、Ｈ．２６４符号化方式をベースにして並列復号処理に適した新しい画像符号化方式を考える場合、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を符号化するのではなく、量子化パラメータＱＰの値そのままを符号化する方式、または量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）からの差分値のみを符号化する方式が考えられる。また、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）は必ず０になるように符号化する方式も考えられる。また、ＣＡＢＡＣを使用禁止にしてＣＡＶＬＣでのみ可変長符号化する方式も考えられる。
【００８９】
（実施の形態２）
図９は、本発明の実施の形態２における画像符号化装置の構成図である。
【００９０】
図９に示すように、画像符号化装置１２０は、符号化制御部１２００、第１マクロブロック符号化部１２０１、第２マクロブロック符号化部１２０２、デブロッキングフィルタ部１２０３、ストリームバッファ１２０４、スライスデータ再符号化部１２０５、ヘッダ符号化部１２０６、および参照画像メモリ１２０７から構成される。なお、以下の説明において、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２をそれぞれ区別する必要がない場合には、それらをマクロブロック符号化部と総称する。
【００９１】
次に、図９に示す画像符号化装置１２０の各構成要素の動作について説明する。
【００９２】
第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、画素データからなる符号化対象画像を取得すると、並列にマクロブロック単位の符号化処理を行う。そして、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、その符号化処理で符号化された画像が再構成されることにより生成された、画素データからなる再構成画像をデブロッキングフィルタ部１２０３に出力する。さらに、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、上述の符号化処理で符号化された画像を示す中間ストリームをストリームバッファ１２０４に出力する。この時、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、参照画像メモリ１２０７から、動き補償に用いる画素データからなる参照画像を必要に応じて読み出す。
【００９３】
ストリームバッファ１２０４は、各マクロブロック符号化部から出力された中間ストリームを一時的に保持している。なお、２つのマクロブロック符号化部から出力された複数の断片的な中間ストリームは、ストリームバッファ１２０４に格納されることにより、１つの結合された中間ストリームとして扱われる。また、この中間ストリームは、２つのマクロブロック符号化部がマクロブロックＭＢを並列に符号化したことによって生成されたストリームであるために、この中間ストリームに含まれるピクチャでは上述の処理順序による依存関係が満たされていない。したがって、この中間ストリームは、一部符号化できない部分があるため、まだ完全には符号化が完了していないストリームになっている。
【００９４】
デブロッキングフィルタ部１２０３は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行い、その結果生成される復号画像を参照画像メモリ１２０７に出力する。参照画像メモリ１２０７は、上述の参照画像として利用できるように、デブロッキングフィルタ部１２０３から出力された復号画像を保持する。
【００９５】
スライスデータ再符号化部１２０５は、ストリームバッファ１２０４から中間化ストリームを読出し、中間化ストリームに対して再符号化処理を行う。ヘッダ符号化部１２０６はヘッダの符号化を行い、スライスデータ再符号化部１２０５から出力される再符号化ストリームと符号化されたヘッダとを併せて最終的な符号化ストリームを生成して出力する。なお、本実施の形態では、このスライスデータ再符号化部１２０５が調整部として構成されており、このスライスデータ再符号化部１２０５が、２つのマクロブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームにその中間ストリームを一致させる。
【００９６】
符号化制御部１２００は、第１マクロブロック符号化部１２０１、第２マクロブロック符号化部１２０２、デブロッキングフィルタ部１２０３、スライスデータ再符号化部１２０５、およびヘッダ符号化部１２０６を制御することにより、画像符号化処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
【００９７】
図１０は、マクロブロック符号化部の構成図である。
【００９８】
第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は、共に同じ構成を有し、それぞれ、画面内予測部１３００、動き補償予測部１３０１、減算回路１３０２、直交変換部１３０３、量子化部１３０４、可変長符号化部１３０５、逆量子化部１３０６、逆直交変換部１３０７、および加算回路１３０８から構成される。まず、符号化対象画像に含まれる画素データからなるマクロブロックＭＢがマクロブロック符号化部に入力されると、符号化制御部１２００は、予測モードを指示することによって、画面内予測部１３００および動き補償予測部１３０１のどちらか一方を起動させる。画面内予測部１３００は、予測モードがイントラ予測であった場合に起動して画面内予測を行うことにより、上述の符号化対象のマクロブロックＭＢに対応する、画素データからなる予測画像を生成して出力する。動き補償予測部１３０１は、予測モードがインター予測であった場合に起動し、動きベクトルに応じた参照画像を取得して動き補償予測を行うことにより、上述の符号化対象のマクロブロックＭＢに対応する、画素データからなる予測画像を生成して出力する。
【００９９】
減算回路１３０２は、上述の符号化対象のマクロブロックＭＢから予測画像を減算することにより、空間領域の画素データからなる誤差画像を生成する。直交変換部１３０３は、その誤差画像に対して直交変換を行うことにより、その誤差画像を係数に変換する。量子化部１３０４はその係数を量子化する。可変長符号化部１３０５は、量子化された係数および予測モードなどを可変長符号化することにより、上述の中間ストリームを生成して出力する。
【０１００】
逆量子化部１３０６は、量子化された係数を逆量子化する。逆直交変換部１３０７は、逆量子化された係数に対して逆直交変換を行うことにより、その係数を誤差画像に再構成する。加算回路１３０８は、その誤差画像を、画面内予測部１３００または動き補償予測部１３０１から出力された予測画像に加算することにより、再構成画像を生成して出力する。
【０１０１】
図１１は、本発明の実施の形態２における画像符号化装置１２０の動作を示すフロー図である。
【０１０２】
まず、ヘッダ符号化部１２０６は、ＳＰＳヘッダ６０１の符号化（ステップＳ１４００）、ＰＰＳヘッダ６０２の符号化（ステップＳ１４０１）、およびスライスヘッダ６０３の符号化（ステップＳ１４０２）を順次行う。スライスヘッダ６０３の符号化（ステップＳ１４０２）が完了すると、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２は符号化制御部１２００の指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する（ステップＳ１４０３）。Ｈ．２６４では、図２２に示した位置による依存関係が存在するため、復号の場合と同様に、２つのマクロブロック符号化部は、図５に示す手順で並列符号化を行う。詳細については復号の場合と同様であるので、説明を省略する。なお、マクロブロックＭＢの符号化処理（ステップＳ１４０３）での可変長符号化（後述するステップＳ１５０７）では、マクロブロックＭＢを並列に符号化するために、上述の処理順序による依存関係が満たされていない。したがって、この符号化処理で生成される中間ストームには、一部完全に符号化できない部分があるため、マクロブロック符号化部は、マクロブロックＭＢを可変長符号化するときには、必要とされる可変長符号化の処理の一部だけを行い、中間ストリームを生成する。
【０１０３】
スライスデータ再符号化部１２０５は、１スライス分のマクロブロックＭＢの符号化処理（ステップＳ１４０３）が完了すると、そのマクロブロックＭＢの符号化処理（ステップＳ１４０３）では完全に符号化できなかったスライスデータの部分に対して、再符号化処理を行う（ステップＳ１４０４）。符号化制御部１２００は、スライスデータの再符号化処理（ステップＳ１４０４）が完了すると、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端であるかどうかを判定する（ステップＳ１４０５）。符号化制御部１２００は、ピクチャの終端でないと判定すると（ステップＳ１４０５のＮＯ）、次に符号化されるスライスに対する、スライスヘッダの符号化（ステップＳ１４０２）、マクロブロックＭＢの符号化（ステップＳ１４０３）、およびスライスデータの再符号化（ステップＳ１４０４）の処理を各構成要素に実行させ、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端になるまで、上記各処理を繰り返させる。
【０１０４】
一方、符号化制御部１２００は、上記位置がピクチャの終端であると判定すると（ステップＳ１４０５のＹＥＳ）、デブロッキングフィルタ部１２０３に対して、１ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる（ステップＳ１４０６）。デブロッキングフィルタ処理（ステップＳ１４０６）が完了すると、符号化制御部１２００は、デブロッキングフィルタ処理されたピクチャがシーケンスの終端にあるかどうか判定する（ステップＳ１４０７）。符号化制御部１２００は、シーケンスの終端にないと判定したとき（ステップＳ１４０７のＮＯ）、つまり、後続に符号化すべきピクチャが続いている場合は、そのピクチャに対するＰＰＳヘッダ６０２の符号化（ステップＳ１４００）などの処理を各構成要素に再度実行させることにより、１シーケンス分の符号化対象画像を符号化する。
【０１０５】
次に、図１１に示すマクロブロックＭＢの符号化処理（ステップＳ１４０３）の詳細について図１２を用いて説明する。
【０１０６】
図１２は、マクロブロック符号化部による符号化処理を示すフロー図である。
【０１０７】
まず、画面内予測部１３００および動き補償予測部１３０１は、符号化制御部１２００から指示される予測モードがイントラ予測であるか、インター予測であるかを判定する（ステップＳ１５００）。予測モードがイントラ予測であれば、画面内予測部１３００が起動して、画面内予測処理を行い（ステップＳ１５０１）、予測モードがインター予測であれば、動き補償予測部１３０１が起動して、動き補償予測処理を行う（ステップＳ１５０２）。これにより、予測画像が生成される。次に、減算回路１３０２は、符号化対象マクロブロックＭＢから予測画像を減算して、予測画像に対する誤差画像を生成する（ステップＳ１５０３）。直交変換部１３０３および量子化部１３０４は、誤差画像を直交変換し、さらに量子化する（ステップＳ１５０４）。
【０１０８】
ここで、マクロブロック符号化部は、次に符号化される予定のマクロブロック（次マクロブロック）ＭＢのマクロブロックアドレスが、今、符号化しているマクロブロック（符号化対象マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値よりも大きいかどうかを判定する（ステップＳ１５０５）。図５に示す手順で符号化が行われる場合、例えば、第１マクロブロック符号化部１２０１は、ライン１のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン１にある８番のマクロブロックＭＢ）の次に、ライン３のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン３にある９番のマクロブロックＭＢ）を符号化する。このとき、その８番目のマクロブロックＭＢと９番目のマクロブロックＭＢの間にある、ライン２上の全てマクロブロックＭＢは、第１マクロブロック符号化部１２０１で符号化されずに、符号化対象から外される。したがって、次マクロブロックＭＢ（ライン３にある９番目のマクロブロックＭＢ）のマクロブロックアドレスが、符号化対象マクロブロックＭＢ（ライン１にある８番目のマクロブロックＭＢ）のマクロブロックアドレスに１を加えた値よりも大きくなる。
【０１０９】
同様に、第２マクロブロック符号化部１２０２は、ライン２のピクチャＰｉｃ右端に位置するマクロブロックＭＢ（ライン２にある１０番のマクロブロックＭＢ）の次に、ライン４のピクチャＰｉｃ左端に位置するマクロブロックＭＢ（ライン４にある１１番のマクロブロックＭＢ）を符号化する。このとき、その１０番目のマクロブロックＭＢと１１番目のマクロブロックＭＢの間にある、ライン３上の全てのマクロブロックＭＢは、第２マクロブロック符号化部１２０２で符号化されずに、符号化対象から外される。したがって、次マクロブロックＭＢ（ライン４にある１１番目のマクロブロックＭＢ）のマクロブロックアドレスが、符号化対象マクロブロックＭＢ（ライン２にある１０番目のマクロブロックＭＢ）のマクロブロックアドレスに１を加えた値よりも大きくなる。
【０１１０】
このように、ステップＳ１５０５では、マクロブロック符号化部は、符号化対象マクロブロックＭＢが、そのマクロブロック符号化部によって符号化される、マクロブロックアドレスが一続きになっているマクロブロック群の最後のマクロブロックＭＢであるかどうかを判定する。つまり、図５に示す手順で符号化が行われる場合、マクロブロック符号化部は、ステップＳ１５０５では、ピクチャＰｉｃ右端に位置するマクロブロックＭＢを符号化するときに、真（ＹＥＳ）と判定する。
【０１１１】
マクロブロック符号化部は、ステップＳ１５０５で真（ＹＥＳ）と判定すると、符号化対象マクロブロックＭＢの量子化パラメータＱＰがスライスデータ再符号化部１２０５で利用されるように、その量子化パラメータＱＰを再符号化情報（保存パラメータ）として保存する（ステップＳ１５０６）。このとき、マクロブロック符号化部は、保存した再符号化情報を符号化制御部１２００に送信している。なお、ステップＳ１５０５の判定処理およびステップＳ１５０６の保存は、マクロブロック符号化部の可変長符号化部１３０５で行われてもよく、それらの処理を実行する専用の構成要素をマクロブロック符号化部に備えてもよい。
【０１１２】
可変長符号化部１３０５は、ステップＳ１５０５で偽（ＮＯ）と判定されると、可変長符号化を行う（ステップＳ１５０７）。つまり、可変長符号化部１３０５は、量子化された係数、予測モード、およびステップＳ１５０１〜Ｓ１５０４で利用されたパラメータ（例えば、量子化パラメータＱＰの差分値）などを可変長符号化することにより、中間ストリームを生成して出力する（ステップＳ１５０７）。
【０１１３】
次に、逆量子化部１３０６および逆直交変換部１３０７は、量子化された係数を逆量子化し、さらに逆直交変換を行うことによって、誤差画像を再構成する(ステップＳ１５０８)。加算回路１３０８は、再構成された誤差画像と、画面内予測部１３００または動き補償予測部１３０１から出力された予測画像とを加算することにより、再構成画像を生成して出力する(ステップＳ１５０９)。このように１マクロブロックの符号化処理が完了すると、マクロブロック符号化部は、まだ符号化すべきマクロブロックＭＢがあるかどうかを判定する（ステップＳ１５１０）。マクロブロック符号化部は、符号化すべきマクロブロックＭＢがないと判定すると（ステップＳ１５１０のＮＯ）、マクロブロックＭＢの符号化処理を終え、符号化すべきマクロブロックＭＢが残っていると判定すると（ステップＳ１５１０のＹＥＳ）、符号化すべきマクロブロックＭＢがなくなるまで、再び予測モードの判定（ステップＳ１５００）から処理を行っていく。
【０１１４】
次に、マクロブロックの符号化処理（図１１のステップＳ１４０３）の中の可変長符号化処理（図１２のステップＳ１５０７）の詳細について図１３を用いて説明する。
【０１１５】
図１３は、可変長符号化処理のフロー図である。
【０１１６】
まず、可変長符号化部１３０５は、今、符号化するマクロブロック（符号化対象マクロブロック）ＭＢのマクロブロックアドレスが、直前に符号化したマクロブロック（直前符号化マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値よりも大きいかどうかを判定する（ステップＳ１６００）。例えば、図５に示す手順で符号化が行われる場合、可変長符号化部１３０５は、ステップＳ１６００では、ピクチャＰｉｃ左端に位置するマクロブロックＭＢを符号化対象マクロブロックＭＢとして符号化するときに、真（ＹＥＳ）と判定する。つまり、このときに真（ＹＥＳ）と判定されるマクロブロックＭＢは、マクロブロックラインの先頭にある。可変長符号化部１３０５は、ステップＳ１６００で真（ＹＥＳ）と判定すると、その符号化対象マクロブロックＭＢの量子化に使用された量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を、量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）から、符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算した値に置き換える（ステップＳ１６０１）。
【０１１７】
なお、スライスデータ６０４の再符号化の際に、量子化パラメータＱＰの値を一意に復号できればよいため、置き換える値は、ある特定の値から符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算した値であれば何でもよい。また、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の取りうる範囲を超えてしまうが、符号化対象マクロブロックＭＢの量子化パラメータＱＰの値に置き換えてもよい。
【０１１８】
次に、可変長符号化部１３０５は、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の置き換えが終わると、または、ステップＳ１６００で偽（ＮＯ）と判定すると、可変長符号化方式がＣＡＶＬＣかＣＡＢＡＣかを判定する（ステップＳ１６０２）。可変長符号化方式がＣＡＶＬＣであると判定すると、可変長符号化部１３０５は、ＣＡＶＬＣの符号化方式で可変長符号化を行う（ステップＳ１６０３）。一方、可変長符号化方式がＣＡＢＡＣであると判定すると、可変長符号化部１３０５は、ＣＡＢＡＣの符号化処理のうち、２値化処理だけを行う（ステップＳ１６０４）。
【０１１９】
なお、ステップＳ１６００で真（ＹＥＳ）と判定された場合は、ＣＡＶＬＣの可変長符号化処理（Ｓ１６０３）または２値化処理（Ｓ１６０４）されて生成される中間ストリームに対して、ステップＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭が再符号化処理で分かるような処置をしておいてもよい。例えば、ステップＳ１６００で真（ＹＥＳ）と判定された場合は、可変長符号化部１３０５は、直前まで出力していた中間ストリームとは別のアドレスに、それ以降に出力する中間ストリームを保存する。または、可変長符号化部１３０５は、中間ストリームをストリームバッファ１２０４に格納するときに、ステップＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭のアドレスを符号化制御部１２００に送信しておく。この場合には、スライスデータ再符号化部１２０５は、符号化制御部１２００からそのアドレスが通知されることで、再符号化すべき中間ストリーム（マクロブロックＭＢ）を容易に見つけることができる。または、可変長符号化部１３０５は、中間ストリーム中のそのマクロブロックＭＢの先頭にＭＢスタートコードを挿入しておく。この場合には、スライスデータ再符号化部１２０５は、そのＭＢスタートコードを検索することで、再符号化すべき中間ストリーム（マクロブロックＭＢ）を容易に見つけることができる。
【０１２０】
以上で、マクロブロックの可変長符号化処理が完了する。
【０１２１】
次に、スライスデータ６０４の再符号化処理（図１１のステップＳ１４０４）の詳細について説明する。
【０１２２】
図１４は、ＣＡＶＬＣで可変長符号化されたスライスデータ６０４に対する再符号化処理を示すフロー図である。
【０１２３】
最初に、スライスデータ再符号化部１２０５は、中間ストリームに含まれるマクロブロックＭＢをマクロブロックアドレス順に順次読み出す（ステップＳ１７００）。次に、スライスデータ再符号化部１２０５は、中間ストリームの読み出しによって、中間ストリーム内で読み出しが完了した最終位置がスライスの終端になったかどうかを判定する（ステップＳ１７０１）。スライスの終端になったと判定すると（ステップＳ１７０１のＹＥＳ）、スライスデータ再符号化部１２０５は再符号化処理を終了する。一方、スライスの終端になっていないと判定すると（ステップＳ１７０１のＮＯ）、スライスデータ再符号化部１２０５は、保存されたマクロブロック符号化情報に対応するマクロブロック（対応マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとを比較する（ステップＳ１７０２）。対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスが一致するまで、スライスデータ再符号化部１２０５は中間ストリームを読み出していく。ステップＳ１７０２で一致すると判定された再符号化対象マクロブロックＭＢは、図１３のＳ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢと同じであって、マクロブロックラインの先頭にあるマクロブロックＭＢである。そのため、ストリームバッファ１２０４に中間ストリームを保存する場合に、Ｓ１６００で真（ＹＥＳ）と判定されたマクロブロックＭＢの先頭が分かるような処置をしておけば、ステップＳ１７０２の判定を簡単に行うことができる。
【０１２４】
スライスデータ再符号化部１２０５は、対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスが一致すると判定すると（ステップＳ１７０２のＹＥＳ）、まず、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を復号し、そのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいかどうかを判定する（ステップＳ１７０３）。ここで、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいと判定すると（ステップＳ１７０３のＹＥＳ）、スライスデータ再符号化部１２０５は、マクロブロックアドレスが１つ前のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）である直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を復号し、その直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいかどうかを判定する（ステップＳ１７０４）。ここで、直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が０より大きいと判定すると（ステップＳ１７０４のＹＥＳ）、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を中間ストリームから除去して、１つ前のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を、再符号化対象マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に直前パラメータ（ｐｒｅｖ＿ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を加えた値に変更して再符号化する（ステップＳ１７０５）。
【０１２５】
次に、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化を行う（ステップＳ１７０６）。差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化は、以下の手順で行われる。まず、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を復号して、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを算出する。次に、スライスデータ再符号化部１２０５は、保存されている再符号化情報を符号化制御部１２００から受けて、その再符号化情報から、マクロブロックアドレスが１つ前のマクロブロックＭＢの量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を取得する。そして、スライスデータ再符号化部１２０５は、その直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から再符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算することにより、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を再計算する。さらに、スライスデータ再符号化部１２０５は、中間ストリームから再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を除去して、再計算した値を符号化して中間ストリームに挿入する。以上の手順で、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化が完了する。以降、上述の一連の処理をスライスの終端になるまで繰り返していく。
【０１２６】
図１５は、ＣＡＢＡＣで可変長符号化されたスライスデータ６０４に対する再符号化処理を示すフロー図である。
【０１２７】
ＣＡＢＡＣの場合は、可変長符号化処理（図１２のステップＳ１５０７）では２値化処理までしか行っていないため、中間ストリーム全体に対して再符号化を行う必要がある点が、ＣＡＶＬＣの場合と大きく異なる点である。
【０１２８】
まず、スライスデータ再符号化部１２０５は、保存された再符号化情報に対応するマクロブロック（対応マクロブロック）ＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとを比較する（ステップＳ１８００）。ステップＳ１８００の判定処理は、図１４に示すＣＡＶＬＣのステップＳ１７０２の判定処理と同じである。スライスデータ再符号化部１２０５は、対応マクロブロックＭＢのマクロブロックアドレスに１を加えた値と、再符号化対象マクロブロックＭＢのマクロブロックアドレスとが一致すると判定すると（ステップＳ１８００のＹＥＳ）、量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを修正する（ステップＳ１８０１）。
【０１２９】
差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データの修正は、以下の手順で行う。まず、スライスデータ再符号化部１２０５は、再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを復号して、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを算出する。次に、スライスデータ再符号化部１２０５は、保存されている再符号化情報を符号化制御部１２００から受けて、その再符号化情報から、マクロブロックアドレスが１つ前のマクロブロックＭＢの量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を取得する。そして、スライスデータ再符号化部１２０５は、その直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から、再符号化対象マクロブロックＭＢの量子化パラメータＱＰを減算することにより、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を再計算する。さらに、スライスデータ再符号化部１２０５は、中間ストリームから再符号化対象マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを除去して、再計算した差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データを中間ストリームに挿入する。以上の手順で、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の２値データの修正が完了する。
【０１３０】
次に、スライスデータ再符号化部１２０５は、２値データに対して、ＣＡＢＡＣの２値化処理以降の算術符号化処理を行う（ステップＳ１８０２）。そして、スライスデータ再符号化部１２０５は、算術符号化された再符号化対象マクロブロックＭＢがスライスの終端にあるか否かを判定し（ステップＳ１８０３）、終端になければ（ステップＳ１８０３のＮＯ）、次に再符号化されるマクロブロックＭＢを新たな再符号化対象マクロブロックＭＢとして扱い、ステップＳ１８００からの処理を繰り返し実行する。
【０１３１】
このように、本実施の形態では、２つのマクロブロック符号化部が複数のマクロブロックラインを並列に符号化しても、スライスデータ再符号化部１２０５によるパラメータの修正によって、複数のマクロブロックラインが予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、Ｈ．２６４に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができ、符号化の高速化を図ることができる。
【０１３２】
（変形例）
ここで、上記実施の形態２の画像符号化装置１２０の変形例について説明する。
【０１３３】
上記実施の形態２の画像符号化装置１２０はスライスデータ再符号化部１２０５を備えたが、本変形例に係る画像符号化装置は、このスライスデータ再符号化部１２０５を備えずに、上述の処理順序による依存関係を解決してマクロブロックを並列に符号化する点に特徴がある。
【０１３４】
図１６は、本変形例に係る画像符号化装置の構成図である。
【０１３５】
本変形例に係る画像符号化装置１２０ａは、符号化制御部１２００ａ、第１マクロブロック符号化部１２０１ａ、第２マクロブロック符号化部１２０２ａ、デブロッキングフィルタ部１２０３、ストリームバッファ１２０４、算術符号化部１２０８、ヘッダ符号化部１２０６および参照画像メモリ１２０７を備えている。つまり、本変形例に係る画像符号化装置１２０ａは、実施の形態２の画像符号化装置１２０と比べて、スライスデータ再符号化部１２０５、符号化制御部１２００、第１マクロブロック符号化部１２０１および第２マクロブロック符号化部１２０２の代わりに、算術符号化部１２０８、符号化制御部１２００ａ、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａを備えている。なお、以下の説明において、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａをそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
【０１３６】
ここで、本変形例に係る画像符号化装置１２０ａでは、符号化制御部１２００ａおよびマクロブロック符号化部の処理動作に特徴があり、この処理動作によって、スライスデータ再符号化部１２０５による再符号化処理を省いている。この再符号化処理が必要となる理由は、２つのマクロブロック符号化部がそれぞれ独自に符号化対象マクロブロックＭＢに応じて量子化パラメータＱＰおよびスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）などのパラメータを決定して並列に符号化対象マクロブロックＭＢを符号化しているために、一方のマクロブロック符号化部が、他方のマクロブロック符号化部で用いられるパラメータを知らずに符号化対象マクロブロックＭＢを符号化することによって、処理順序による依存関係が満たされないようになるからである。
【０１３７】
そこで、本変形例における画像符号化装置１２０ａでは、上述の一方のマクロブロック符号化部で、他方のマクロブロック符号化部で用いられるパラメータが分かるように、符号化制御部１２００ａがそのパラメータ（量子化パラメータＱＰ、可変長符号化方式がＣＡＶＬＣの場合にはスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ））を予め決めておき、２つのマクロブロック符号化部がそれぞれ、その決められたパラメータを用いて符号化対象マクロブロックＭＢを符号化する処理動作に特徴がある。つまり、本変形例では、符号化制御部１２００ａが調整部として構成されており、この符号化制御部１２００ａが、２つのブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに中間ストリームを一致させる。
【０１３８】
図１７は、本変形例に係る画像符号化装置１２０ａの動作を示すフロー図である。
【０１３９】
本変形例に係る画像符号化装置１２０ａは、図１１に示す画像符号化装置１２０の動作と同様、ＳＰＳヘッダ６０１の符号化（ステップＳ１４００）、ＰＰＳヘッダ６０２の符号化（ステップＳ１４０１）、およびスライスヘッダ６０３の符号化（ステップＳ１４０２）を順次行う。スライスヘッダ６０３の符号化（ステップＳ１４０２）が完了すると、符号化制御部１２００ａは、処理順序の依存関係を満たすための再符号化処理が不要になるように、所定のマクロブロックＭＢの量子化パラメータＱＰと、可変長符号化方式がＣＡＶＬＣの場合には、その所定のマクロブロックＭＢとは異なる他のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）とを、それらのマクロブロックＭＢの符号化前に予め決定しておく（ステップＳ１４１０）。
【０１４０】
つまり、符号化制御部１２００ａは、符号化対象のスライスに含まれるマクロブロックＭＢのうち、ピクチャＰｉｃの下端を除く右端のマクロブロックＭＢに対して用いられる量子化パラメータＱＰを決定するとともに、可変長符号化方式がＣＡＶＬＣの場合には、ピクチャＰｉｃの上端を除く左端のマクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定しておく。
【０１４１】
次に、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは、符号化制御部１２００ａの指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する（ステップＳ１４１１）。このとき、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは、ステップＳ１４１０で決定された量子化パラメータＱＰやスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に従って、マクロブロックＭＢを符号化する。なお、第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａはそれぞれ、ＣＡＢＡＣでマクロブロックＭＢを可変長符号化するときには、ＣＡＢＡＣの可変長符号化処理の全てを行わず、その可変長符号化処理に含まれる２値化処理および算術符号化処理のうち、２値化処理だけを行う。つまり、この場合には、ストリームバッファ１２０４に格納される中間ストリームのスライスデータは２値化データの状態になっている。
【０１４２】
さらに、符号化制御部１２００ａは、マクロブロック符号化部に実行させた可変長符号化の方式がＣＡＢＡＣであるかＣＡＶＬＣであるかを判定する（ステップＳ１４１２）。ここで、符号化制御部１２００ａは、可変長符号化方式がＣＡＢＡＣであると判定すると、中間ストリームに含まれる２値化データであるスライスデータを算術符号化部１２０８に算術符号化させる（ステップＳ１４１３）。なお、上述のスライスデータは、ステップＳ１４１１で符号化された１スライス分のマクロブロックＭＢの集合からなる。一方、符号化制御部１２００ａは、可変長符号化方式がＣＡＶＬＣであると判定すると、算術符号化処理を算術符号化部１２０８に実行させることなく、中間ストリームのヘッダ符号化部１２０６への出力を算術符号化部１２０８に実行させる。
【０１４３】
その後、画像符号化装置１２０ａは、図１１に示す画像符号化装置１２０の動作と同様、ステップＳ１４０５〜Ｓ１４０７の処理を実行することにより、１シーケンス分の符号化対象画像を符号化する。
【０１４４】
図１８Ａは、量子化パラメータＱＰが決定されるマクロブロックＭＢの位置を示す図である。
【０１４５】
符号化制御部１２００ａは、スライスを符号化する前に、ピクチャＰｉｃの下端を除く右端のマクロブロック（右端マクロブロック）ＭＢに対して量子化パラメータＱＰを予め決定しておく。そして、マクロブロック符号化部は、その決定された量子化パラメータＱＰに従って右端マクロブロックＭＢを符号化する。これにより、マクロブロック符号化部は、ピクチャＰｉｃの上端を除く左端のマクロブロック（左端マクロブロック）ＭＢを符号化するときには、その左端マクロブロックＭＢの１つ前にある右端マクロブロックＭＢに対して既に決定された量子化パラメータＱＰである直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）を知ることができる。その結果、マクロブロック符号化部は、直前量子化パラメータ（ＱＰ＿ＰＲＥＶ）から、符号化対象マクロブロックＭＢである左端マクロブロックＭＢの量子化パラメータＱＰを減算することにより、左端マクロブロックＭＢの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）を、再符号化処理を行うことなく、処理順序の依存関係を満たした上で算出して符号化することができる。
【０１４６】
図１８Ｂは、スキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）が決定されるマクロブロックＭＢの位置を示す図である。
【０１４７】
符号化制御部１２００ａは、スライスを符号化する前に、ピクチャＰｉｃの上端を除く左端のマクロブロック（左端マクロブロック）ＭＢに対してスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を予め決定しておく。そして、マクロブロック符号化部は、その決定されたスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）に従って左端マクロブロックＭＢを符号化する。これにより、マクロブロック符号化部は、ピクチャＰｉｃの下端を除く右端のマクロブロック（右端マクロブロック）ＭＢを符号化するときには、その右端マクロブロックＭＢの１つ後にある左端マクロブロックＭＢに対して既に決定されたスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を知ることができる。その結果、マクロブロック符号化部は、その左端マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を考慮し、再符号化処理を行うことなく、処理順序の依存関係を満たした上で、符号化対象マクロブロックＭＢである右端マクロブロックＭＢのスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定して符号化することができる。
【０１４８】
図１９は、本変形例に係るマクロブロック符号化部による符号化処理（図１７のステップＳ１４１１）の詳細を示すフロー図である。
【０１４９】
本変形例に係るマクロブロック符号化部は、図１２に示す符号化処理と同様、予測モードの判定処理（ステップＳ１５００）、画面内予測処理（ステップＳ１５０１）、動き補償予測処理（ステップＳ１５０２）、減算処理（ステップＳ１５０３）、および直交変換・量子化処理（ステップＳ１５０４）を実行する。このとき、マクロブロック符号化部は、上述の既に決定されたパラメータを用いて処理を行う。
【０１５０】
次に、本変形例に係るマクロブロック符号化部は、図１２に示す判定処理（ステップＳ１５０５）および再符号化情報保存処理（ステップＳ１５０６）を実行することなく、可変長符号化処理（ステップＳ１５０７ａ）を実行する。そして、マクロブロック符号化部は、図１２に示す符号化処理と同様、加算処理（ステップＳ１５０９）および判定処理（ステップＳ１５１０）を実行することにより、１スライス分のマクロブロックＭＢを符号化する。
【０１５１】
図２０は、本変形例に係るマクロブロック符号化部の構成図である。
【０１５２】
本変形例に係る第１マクロブロック符号化部１２０１ａおよび第２マクロブロック符号化部１２０２ａは共に同じ構成を有し、それぞれ、画面内予測部１３００、動き補償予測部１３０１、減算回路１３０２、直交変換部１３０３、量子化部１３０４、可変長符号化部１３０５ａ、逆量子化部１３０６、逆直交変換部１３０７、および加算回路１３０８から構成される。つまり、本変形例に係るマクロブロック符号化部は、図１０に示す実施の形態２のマクロブロック符号化部の可変長符号化部１３０５の代わりに可変長符号化部１３０５ａを備え、他の構成要素については、実施の形態２のマクロブロック符号化部と同様の構成要素を備えている。
【０１５３】
本変形例に係る可変長符号化部１３０５ａは、実施の形態２の可変長符号化部１３０５のように量子化パラメータＱＰの差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の置き換えなどを行うことなく、ＣＡＶＬＣまたはＣＡＢＡＣの符号化方式に従って可変長符号化を行う。
【０１５４】
図２１は、可変長符号化部１３０５ａによって行われる可変長符号化処理（図１９のステップＳ１５０７ａ）の詳細を示すフロー図である。
【０１５５】
本変形例に係る可変長符号化部１３０５ａは、まず、可変長符号化方式がＣＡＶＬＣかＣＡＢＡＣかを判定する（ステップＳ１６０２）。可変長符号化方式がＣＡＶＬＣであると判定すると、可変長符号化部１３０５ａは、ＣＡＶＬＣの符号化方式で可変長符号を行う（ステップＳ１６０３）。一方、可変長符号化方式がＣＡＢＡＣであると判定すると、可変長符号化部１３０５ａは、ＣＡＢＡＣの可変長符号化処理に含まれる２値化処理および算術符号化処理のうち、２値化処理だけを行う（ステップＳ１６０４ａ）。
【０１５６】
このように、本変形例では、各マクロブロック符号化部の符号化に用いられるパラメータのうち、処理順序に依存関係のあるパラメータが決定された後、そのパラメータを用いて符号化が行われるため、各マクロブロック符号化部は、他のマクロブロック符号化部による符号化が行われていなくても、その符号化に用いられるパラメータを予め知ることができる。その結果、各マクロブロック符号化部は、処理順序に依存関係のあるパラメータについても最後まで符号化することができ、処理順序による依存関係を解決した再符号化不要な符号化ストリームを簡単に生成することができる。
【０１５７】
なお、上記変形例では、スライスに含まれる一部のマクロブロックＭＢに対してのみ量子化パラメータＱＰやスキップランパラメータ（ｍｂ＿ｓｋｉｐ＿ｒｕｎ）を決定したが、スライスに含まれる全てのマクロブロックＭＢに対して上述のパラメータを決定してもよい。
【０１５８】
また、上記実施の形態２では、スライスデータ６０４の再符号化処理で予め必要となるパラメータである再符号化情報を、符号化制御部１２００を経由してスライスデータ再符号化部１２０５に渡した。しかし、スライスデータ再符号化部に再符号化情報が伝わればよく、必ずしも符号化制御部１２００を経由して渡す必要はない。例えば、実施の形態１の画像復号装置で行ったように、中間ストリームに再符号化情報を埋め込んで渡してもよい。
【０１５９】
また、上記実施の形態２およびその変形例では、２つのマクロブロック符号化部を用いて並列に画素データの符号化を行ったが、マクロブロック符号化部の個数は２個に限らない。特許文献１には、２個以上のマクロブロック符号化部を使って並列に画素データを符号化する方法が記載されており、この方法に従えば、２個以上のマクロブロック符号化部を用いても符号化することができる。
【０１６０】
また、上記実施の形態２およびその変形例において、画像符号化装置１２０，１２０ａのそれぞれに含まれる各構成要素の全部あるいはその一部を、１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
【０１６１】
また、上記実施の形態２では、スライスの先頭マクロブロックＭＢにおいて、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の算出に用いられる直前のマクロブロックＭＢの量子化パラメータ（ＱＰ＿ＰＲＥＶ）は、マクロブロックＭＢの符号化前から明らかになっている量子化パラメータＱＰの初期値（ＳｌｉｃｅＱＰ）であって、差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化は不要である。このため、マクロブロック符号化部が次に符号化するマクロブロックＭＢのマクロブロックアドレスが、今、符号化しているマクロブロックＭＢのマクロブロックアドレスに１を加えた値よりも大きくなるような箇所でスライスを切ってもよい。これにより、いずれのマクロブロックＭＢであっても差分値（ｍｂ＿ｑｐ＿ｄｅｌｔａ）の再符号化を省くことができる。
【０１６２】
以上、本発明に係る画像復号装置および画像符号化装置について、実施の形態１および２とその変形例とを用いて説明したが、本発明はこれらに限定されるものではない。
【０１６３】
例えば、上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されててもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。上記ＲＡＭには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていてもよいし、一部またはすべてを含むように１チップ化されていてもよい。また、ここでは、システムＬＳＩと呼称したが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限られるものではなく、専用回路または汎用プロセッサで実現してもよい。また、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１６４】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１６５】
また、上記各実施の形態およびその変形例において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１６６】
また、上記実施の形態１および２とその変形例とを矛盾の無い範囲で任意に組み合わせてもよい。
【産業上の利用可能性】
【０１６７】
本発明にかかる画像復号装置および画像符号化装置は、高速に動画像データを復号および符号化することが可能な特徴を有し、例えば、ＭＰＥＧ等の圧縮画像を扱うデジタルテレビ、ＤＶＤレコーダおよびＢｌｕ−ｒａｙ  Ｄｉｓｃレコーダ等として有用である。また、放送局などの高速な処理が必要とされる機器の用途にも応用できる。
【符号の説明】
【０１６８】
４０    画像復号装置
１２０，１２０ａ    画像符号化装置
４００    復号制御部
４０１    ヘッダ復号部
４０２    スライスデータプリデコード部
４０３    ストリームバッファ
４０４    第１マクロブロック復号部
４０５    第２マクロブロック復号部
４０６    デブロッキングフィルタ部
４０７    参照画像メモリ
５００    可変長復号部
５０１    逆量子化部
５０２    逆直交変換部
５０３    画面内予測部
５０４    動き補償予測部
５０５    加算回路
６００    スタートコード
６０１    ＳＰＳヘッダ
６０２    ＰＰＳヘッダ
６０３    スライスヘッダ
６０４    スライスデータ
１０００    ＭＢスタートコード
１００１    マクロブロック復号情報
１００２    マクロブロックレイヤデータ
１２００，１２００ａ    符号化制御部
１２０１，１２０１ａ    第１マクロブロック符号化部
１２０２，１２０２ａ    第２マクロブロック符号化部
１２０３    デブロッキングフィルタ部
１２０４    ストリームバッファ
１２０５    スライスデータ再符号化部
１２０６    ヘッダ符号化部
１２０７    参照画像メモリ
１３００    画面内予測部
１３０１    動き補償予測部
１３０２    減算回路
１３０３    直交変換部
１３０４    量子化部
１３０５    可変長符号化部
１３０６    逆量子化部
１３０７    逆直交変換部
１３０８    加算回路
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
画像復号装置。
【請求項２】
前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、
前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号する、
請求項１記載の画像復号装置。
【請求項３】
前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、
前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
請求項１または２記載の画像復号装置。
【請求項４】
前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要なパラメータを、前記ブロック復号情報として生成する、
請求項１〜３の何れか１項に記載の画像復号装置。
【請求項５】
前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成する、
請求項１〜４の何れか１項に記載の画像復号装置。
【請求項６】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、
それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部と
を備える画像符号化装置。
【請求項７】
前記調整部は、前記複数のブロック符号化部による符号化に用いられるパラメータを決定し、
前記複数のブロック符号化部はそれぞれ、前記調整部によって決定されたパラメータを用いて符号化を行うことにより、前記符号化ストリームに一致した前記中間ストリームを生成する、
請求項６記載の画像符号化装置。
【請求項８】
前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
請求項６記載の画像符号化装置。
【請求項９】
前記中間ストリームに含まれる前記各パラメータは符号化されており、
前記調整部は、前記パラメータを修正するときには、前記パラメータに対して既に行われていた符号化をやり直す、
請求項８記載の画像符号化装置。
【請求項１０】
前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、当該ブロック群に含まれる最後のブロックの符号化に用いられたパラメータを前記保存パラメータとして保存しておく、
請求項８または９記載の画像符号化装置。
【請求項１１】
前記調整部は、前記符号化ブロック群のパラメータを修正するときには、前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックの符号化に用いられたパラメータを修正する
請求項８〜１０の何れか１項に記載の画像符号化装置。
【請求項１２】
前記複数のブロック符号化部のそれぞれは、前記ブロック群の符号化に用いられたパラメータを符号化ブロック群に含めるときには、前記ブロック群の符号化前に既に判明している既定係数を用いて前記パラメータを圧縮して前記符号化ブロック群に含め、
前記調整部は、前記符号化ブロック群の圧縮された前記パラメータを、前記既定係数を用いて伸張し、伸張された前記パラメータを、前記保存パラメータを用いて圧縮することにより、前記符号化ブロック群の圧縮された前記パラメータを修正する
請求項８〜１１の何れか１項に記載の画像符号化装置。
【請求項１３】
前記調整部は、
前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックから符号化が不要とされた連続するブロックの数を示す、前記符号化ブロック群に含まれている第１のスキップパラメータと、
前記他の符号化ブロック群に含まれる符号化された複数のブロックのうちの最後のブロックから符号化が不要とされた連続するブロックの数を示す、前記他の符号化ブロック群に含まれている第２のスキップパラメータとが共に０であるか否かを判定し、
０でないと判定した場合に、前記符号化ブロック群のパラメータとして前記中間ストリームに含まれていた前記第１のスキップパラメータを削除することにより前記パラメータを修正するとともに、前記第２のスキップパラメータの示す数と前記第１のスキップパラメータの数とを加えた数を示すように、前記中間ストリームに含まれている前記第２のスキップパラメータを修正する
請求項８または９記載の画像符号化装置。
【請求項１４】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号方法であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行い、
前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
画像復号方法。
【請求項１５】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化方法であって、
前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる、
画像符号化方法。
【請求項１６】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号するためのプログラムであって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う
ことをコンピュータに実行させ、
前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
プログラム。
【請求項１７】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化するためのプログラムであって、
前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる
ことをコンピュータに実行させるプログラム。
【請求項１８】
複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する集積回路であって、
前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
集積回路。
【請求項１９】
複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する集積回路であって、
それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部と
を備える集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009150808.tif 000028
【図２】
2009150808.tif 000029
【図３】
2009150808.tif 000030
【図４】
2009150808.tif 000031
【図５】
2009150808.tif 000032
【図６】
2009150808.tif 000033
【図７】
2009150808.tif 000034
【図８】
2009150808.tif 000035
【図９】
2009150808.tif 000036
【図１０】
2009150808.tif 000037
【図１１】
2009150808.tif 000038
【図１２】
2009150808.tif 000039
【図１３】
2009150808.tif 000040
【図１４】
2009150808.tif 000041
【図１５】
2009150808.tif 000042
【図１６】
2009150808.tif 000043
【図１７】
2009150808.tif 000044
【図１８Ａ】
2009150808.tif 000045
【図１８Ｂ】
2009150808.tif 000046
【図１９】
2009150808.tif 000047
【図２０】
2009150808.tif 000048
【図２１】
2009150808.tif 000049
【図２２】
2009150808.tif 000050
【図２３】
2009150808.tif 000051
【図２４】
2009150808.tif 000052
【国際調査報告】
2009150808.tif 000053
2009150808.tif 000054
2009150808.tif 000055
2009150808.tif 000056
2009150808.tif 000057