(57)【要約】  符号化画像データを並列復号する場合、復号時の瞬間的なデータ転送量の増加を抑えて、小さなメモリバンド幅で画像データの並列復号を行うことができる画像復号装置を提供する。  画像復号装置（１００）であって、参照画像のデータを格納している外部メモリ（１１０）と、ブロックごとに、参照される参照画像の枚数を示す参照情報の復号を行うストリームパーサ部（１２０）と、ブロックごとに、参照情報を用いて、外部メモリ（１１０）から読み出される参照画像の予測データ量を計算するデータ転送量予測部（１３１）と、予測データ量を用いて、外部メモリ（１１０）から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる複数のブロックを決定するブロック決定部（１３２）と、決定された複数のブロックを並列に復号する複数のマクロブロック復号部（１４０〜１６０）とを備える。
2010052837.tif 000002
【特許請求の範囲】
【請求項１】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置であって、
前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部と、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に前記記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部と
を備える画像復号装置。
【請求項２】
前記プリデコード部は、前記符号化画像データに含まれる、前記ブロックであるマクロブロックのマクロブロックタイプ情報を前記参照情報として可変長復号し、
前記データ転送量予測部は、前記マクロブロックタイプ情報で示される前記参照画像の枚数に当該参照画像のデータ量を乗じて、前記予測データ量を計算する
請求項１に記載の画像復号装置。
【請求項３】
前記ブロック復号部が前記符号化画像データの復号を行う際に、前記符号化画像データの各ブロックをさらに小さなブロックに分割した分割ブロックを単位とした前記参照画像を参照する場合、
前記プリデコード部は、さらに、前記符号化画像データに含まれる、前記分割ブロックのサイズを示すブロック分割パターン情報の復号を行い、
前記データ転送量予測部は、前記ブロック分割パターン情報で示されるサイズの前記分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、前記整数画素位置の参照画像のデータ量と前記小数画素位置の参照画像のデータ量とに重み付けを行うことで、前記予測データ量を計算する
請求項１又は２に記載の画像復号装置。
【請求項４】
前記データ転送量予測部は、前記分割ブロックごとに、
水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、
水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、
水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、
水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とし、
前記第１参照画像、前記第２参照画像、前記第３参照画像及び前記第４参照画像のデータ量に、それぞれ前記第１確率、前記第２確率、前記第３確率及び前記第４確率を乗じて加算することで、前記予測データ量を計算する
請求項３に記載の画像復号装置。
【請求項５】
前記プリデコード部は、前記ブロックごとに、さらに、復号対象の前記ブロックの画像と参照画像との間の動き量を示す動き情報の復号を行い、
前記データ転送量予測部は、前記ブロックごとに、さらに前記動き情報を用いて、前記予測データ量を計算する
請求項１〜３のいずれか１項に記載の画像復号装置。
【請求項６】
前記データ転送量予測部は、前記動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、前記参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を前記予測データ量として計算する
請求項５に記載の画像復号装置。
【請求項７】
前記データ転送量予測部は、前記動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、前記参照画像のアドレスがアライメントされたアドレスではないと判断した場合、前記参照画像のアドレスをアライメントされたアドレスに補正して前記予測データ量を計算する
請求項５又は６に記載の画像復号装置。
【請求項８】
前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、前記符号化画像データのブロックの復号順序を入れ替えることで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１〜７のいずれか１項に記載の画像復号装置。
【請求項９】
前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データのブロック数を変更することで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１〜７のいずれか１項に記載の画像復号装置。
【請求項１０】
前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項８又は９に記載の画像復号装置。
【請求項１１】
前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が、前記記憶部から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項８又は９に記載の画像復号装置。
【請求項１２】
前記ブロック決定部は、前記差分データ量が大きい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１１に記載の画像復号装置。
【請求項１３】
前記ブロック決定部は、前記差分データ量が小さい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１１に記載の画像復号装置。
【請求項１４】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号方法であって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコードステップと、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測ステップと、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定ステップと、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号ステップと
を含む画像復号方法。
【請求項１５】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置を制御する集積回路であって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部と
を備える集積回路。
【請求項１６】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行うためのプログラムであって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコードステップと、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測ステップと、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定ステップと、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号ステップと
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化画像データの復号を行う画像復号装置、画像復号方法、集積回路及びプログラムに関するものである。
【背景技術】
【０００２】
動画像データを圧縮符号化（以下、単に「符号化」と呼ぶ）する技術として、画面間差分を用いたＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）符号化方式が用いられることが多い。【０００３】
ＭＰＥＧ符号化方式では、現在のフレームと時間的に近いフレームは似ているという、動画像の性質を利用している。この性質を利用して、時間的に近いフレームから現在のフレームを予測し、入力画像と予測画像との差分だけを符号化すれば、データ量を削減できる。【０００４】
一般的には、フレームの中の物体が動いたり、カメラがパンをしたりすることで、フレーム間で動きがあるため、動きの分だけをずらした位置の画像を参照画像として予測画像を生成している。【０００５】
こうして生成した予測画像と入力画像との差分と、この動き情報（これを動きベクトルという）を符号化することで、高い圧縮率を実現している。このような処理を動き補償予測という。【０００６】
動き補償予測を含めて復号処理または符号化処理は、１つの画面（ピクチャ）内を所定画素数のブロック（輝度成分：１６画素×１６画素）に分割して行われる。この画素ブロックのことをマクロブロックという。復号時には、マクロブロック毎に動きベクトルに応じた位置の画像を参照画像としてメモリから取得して動き補償予測を行う。なお、１画素のデータ量は１バイトである。【０００７】
ＭＰＥＧ符号化方式としては、従来からＭＰＥＧ−２（ＩＳＯ／ＩＥＣ１３８１８−２）やＭＰＥＧ−４（ＩＳＯ／ＩＥＣ１４４９６−２）が使用されている。加えて、近年ではＨ．２６４／ＭＰＥＧ−４  ＡＶＣ（ＩＳＯ／ＩＥＣ１４４９６−１０）（以下、単に「Ｈ．２６４」と呼ぶ）やＶＣ−１（ＳＭＰＴＥ  ４２１Ｍ）といった新しい符号化方式が用いられるようになってきている。【０００８】
特にＨ．２６４に代表される新しい符号化方式は、従来のＭＰＥＧ−２の２〜４倍の圧縮率を実現し、フルＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）（１９２０画素×１０８０画素）といった高精細画像の圧縮に多く用いられている。【０００９】
一方、近年では、４Ｋ２Ｋ（４０９６画素×２０４８画素）といったフルＨＤを超える、超高精細なディスプレイの開発が行われており、このような超高精細な画像データを扱うことが今後必要となってくる。【００１０】
しかし、４Ｋ２Ｋの画像データはフルＨＤの約４倍のデータ量となり、４Ｋ２Ｋの画像データを復号するには、フルＨＤの画像データを復号する場合と比べて、約４倍近くの演算性能とメモリバンド幅が必要となる。４Ｋ２Ｋといった超高精細な画像データに対応した画像復号装置を実現するためには、この高い演算性能とメモリバンド幅をいかに実現するかが課題となる。【００１１】
演算性能の課題に対しては、既存のフルＨＤ対応の画像復号装置を複数用いて並列処理することで、高い演算性能を実現する方法が考えられる。しかし、Ｈ．２６４に代表される新しい符号化方式では、あるマクロブロックを符号化する際、その周辺隣接マクロブロックとの相関を利用して圧縮率を高めている。【００１２】
図１は、Ｈ．２６４における周辺隣接マクロブロックとの相関を利用して圧縮率を高める復号方法を説明する図である。【００１３】
同図に示すように、ある任意のマクロブロックＰを復号するには、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、右上隣接マクロブロックＣの、４つの隣接マクロブロックの処理結果を参照する必要がある。【００１４】
つまり、対象のマクロブロックを復号するためには、予めこれらの隣接マクロブロックを復号しておかなければならず、この依存関係が並列化する上での課題であった。【００１５】
そこで、従来、この依存関係を解決しながら画像データを並列復号する画像復号装置が提案されている（例えば、特許文献１参照）。【００１６】
図２は、従来の画像復号装置の復号方法を説明する図である。【００１７】
同図に示す各ブロックはピクチャ内のマクロブロックを表し、マクロブロックに付けられた番号は処理時間を示し、同じ番号のマクロブロックが同時に並列に復号されている。【００１８】
図２に示すように、ピクチャの左上のマクロブロックから処理を開始し、ある任意のマクロブロックを処理する場合、そのマクロブロックの、１つ下の行の２列左側に位置するマクロブロックを並列に復号する。これよって、位置による依存関係を解決している。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００６−１２９２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、従来の画像復号装置では、瞬間的なデータ転送量が増加し、画像復号装置に用いるメモリに必要なメモリバンド幅が大きくなってしまうという課題がある。【００２１】
つまり、並列に復号するマクロブロックが、多くのデータをメモリから取得しなければならないマクロブロックであった場合、従来の画像復号装置では、瞬間的に多くのデータをメモリから転送することになる。そのため、この大きなデータ量の転送が可能なメモリを用いる必要があり、これによって、画像復号装置に用いるメモリに必要なメモリバンド幅が大きくなってしまう。【００２２】
このため、例えば、画像復号装置が他の装置とメモリを共用している場合であって、画像復号装置の瞬間的なデータ転送量の増加があった場合には、他の装置が使用可能なメモリバンド幅が小さくなり、他の装置の転送を妨げてしまうことから、他の装置の処理を遅延させてしまう。このように、従来の画像復号装置では、メモリバンド幅について課題を抱えている。【００２３】
本発明は、上記従来の課題を解決するものであり、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を可能とする画像復号装置、画像復号方法、集積回路及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
上記目的を達成するために、本発明の一態様に係る画像復号装置は、所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置であって、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部と、前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に前記記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部とを備える。【００２５】
これによれば、参照画像の枚数から参照画像の予測データ量を計算し、並列に復号が行われる符号化画像データの複数のブロックを決定することで、複数のブロックを並列に復号する。例えば、復号に２枚の参照画像が必要な場合は、予測データ量は、１枚の参照画像が必要な場合の２倍になる。つまり、例えばＨ．２６４などのＭＰＥＧ符号化方式で符号化された画像データを並列に復号する場合に、予め、メモリから取得するデータ量を正確に予測することができるため、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００２６】
これにより、例えば、画像復号装置が他の装置と記憶部を共用している場合であって、他の装置のデータ転送量が大きい場合には、画像復号装置のデータ転送量が小さくなるようにすることで、他の装置の転送を妨げることができ、他の装置の処理へ影響を与えない。また、他の装置のデータ転送量が小さい場合には、画像復号装置のデータ転送量が大きくなるようにすることで、画像復号装置の画像復号処理自体を高速化することができる。【００２７】
また、好ましくは、前記プリデコード部は、前記符号化画像データに含まれる、前記ブロックであるマクロブロックのマクロブロックタイプ情報を前記参照情報として可変長復号し、前記データ転送量予測部は、前記マクロブロックタイプ情報で示される前記参照画像の枚数に当該参照画像のデータ量を乗じて、前記予測データ量を計算する。【００２８】
これによれば、参照画像の枚数を示す参照情報として、マクロブロックタイプ情報の復号が行われる。例えば、Ｉマクロブロックタイプのマクロブロックの復号に必要な参照画像は０枚であり、Ｐマクロブロックタイプのマクロブロックの復号に必要な参照画像は１枚であり、Ｂマクロブロックタイプのマクロブロックの復号に必要な参照画像は２枚である。これにより、簡易に参照画像の枚数を取得して、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００２９】
また、好ましくは、前記ブロック復号部が前記符号化画像データの復号を行う際に、前記符号化画像データの各ブロックをさらに小さなブロックに分割した分割ブロックを単位とした前記参照画像を参照する場合、前記プリデコード部は、さらに、前記符号化画像データに含まれる、前記分割ブロックのサイズを示すブロック分割パターン情報の復号を行い、前記データ転送量予測部は、前記ブロック分割パターン情報で示されるサイズの前記分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、前記整数画素位置の参照画像のデータ量と前記小数画素位置の参照画像のデータ量とに重み付けを行うことで、前記予測データ量を計算する。【００３０】
これによれば、分割ブロック単位で参照画像を参照する場合、分割ブロックごとに、さらに整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。これにより、整数画素位置の参照画像のデータ量だけではなく、小数画素位置の参照画像のデータ量も考慮した予測データ量を計算することができる。このため、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。したがって、分割ブロック単位で参照画像を参照する必要がある場合でも、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００３１】
また、好ましくは、前記データ転送量予測部は、前記分割ブロックごとに、水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とし、前記第１参照画像、前記第２参照画像、前記第３参照画像及び前記第４参照画像のデータ量に、それぞれ前記第１確率、前記第２確率、前記第３確率及び前記第４確率を乗じて加算することで、前記予測データ量を計算する。【００３２】
これによれば、水平位置又は垂直位置が整数画素位置又は小数画素位置の参照画像が参照される確率を用いて、予測データ量を計算する。これにより、水平位置又は垂直位置が整数画素位置か小数画素位置かを考慮して計算が行われるため、予測データ量をさらに正確に計算することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００３３】
また、前記プリデコード部は、前記ブロックごとに、さらに、復号対象の前記ブロックの画像と参照画像との間の動き量を示す動き情報の復号を行い、前記データ転送量予測部は、前記ブロックごとに、さらに前記動き情報を用いて、前記予測データ量を計算することにしてもよい。【００３４】
これによれば、動き情報を用いて、予測データ量を計算する。これにより、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００３５】
また、好ましくは、前記データ転送量予測部は、前記動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、前記参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を前記予測データ量として計算する。【００３６】
これによれば、参照画像の位置が小数画素位置である場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００３７】
また、好ましくは、前記データ転送量予測部は、前記動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、前記参照画像のアドレスがアライメントされたアドレスではないと判断した場合、前記参照画像のアドレスをアライメントされたアドレスに補正して前記予測データ量を計算する。【００３８】
これによれば、参照画像のアドレスがアライメントされたアドレスではない場合、参照画像のアドレスをアライメントされたアドレスに補正して予測データ量を計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００３９】
また、好ましくは、前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、前記符号化画像データのブロックの復号順序を入れ替えることで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。【００４０】
これによれば、ブロックの復号順序を入れ替えることで、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロックの復号順序を入れ替えることができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００４１】
また、前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データのブロック数を変更することで、並列に復号が行われる前記符号化画像データの複数のブロックを決定することにしてもよい。【００４２】
これによれば、並列に復号が行われるブロック数を変更することで、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロック数を変更することができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００４３】
また、好ましくは、前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。【００４４】
これによれば、複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる複数のブロックを決定する。これにより、並列復号が行われるブロックの予測データ量が平均的な値となる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。【００４５】
また、好ましくは、前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が、前記記憶部から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。前記ブロック決定部は、前記差分データ量が大きい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。また、前記ブロック決定部は、前記差分データ量が小さい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。【００４６】
これによれば、並列に復号が行われる複数のブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のブロックを決定する。つまり、差分データ量が大きい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が大きくなるように、差分データ量が小さい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、予め設定されたメモリバンド幅で画像データの並列復号を行うことができる。【００４７】
なお、本発明は、このような画像復号装置として実現することができるだけでなく、その装置を構成する各処理部を備える集積回路として実現したり、当該各処理部の処理をステップとする方法として実現したりすることができる。さらに、本発明は、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【発明の効果】
【００４８】
本発明の画像復号装置によれば、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。これにより、例えば、画像復号装置が他の装置とメモリを共用している場合であって、他の装置のデータ転送量が大きい場合には、画像復号装置のデータ転送量が小さくなるようにすることで、他の装置の転送を妨げることができ、他の装置の処理へ影響を与えない。また、他の装置のデータ転送量が小さい場合には、画像復号装置のデータ転送量が大きくなるようにすることで、画像復号装置の画像復号処理自体を高速化することができる。
【図面の簡単な説明】
【００４９】
【図１】図１は、Ｈ．２６４における周辺隣接マクロブロックとの相関を利用して圧縮率を高める復号方法を説明する図である。
【図２】図２は、従来の画像復号装置の復号方法を説明する図である。
【図３】図３は、実施の形態１における画像復号装置の機能構成を示すブロック図である。
【図４】図４は、実施の形態１におけるマクロブロック復号部の機能構成を示すブロック図である。
【図５】図５は、一般的なＨ．２６４の、符号化ストリームの構成を示す図である。
【図６】図６は、実施の形態１における画像復号装置の動作の一例を示すフローチャートである。
【図７】図７は、実施の形態１におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図８】図８は、Ｐスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【図９】図９は、Ｂスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【図１０】図１０は、実施の形態１におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図１１】図１１は、実施の形態１におけるマクロブロック復号部がマクロブロックの復号を行う処理の一例を示すフローチャートである。
【図１２】図１２は、実施の形態２におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図１３】図１３は、マクロブロック分割パターンを説明する図である。
【図１４】図１４は、サブマクロブロック分割パターンを説明する図である。
【図１５】図１５は、Ｐマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【図１６】図１６は、Ｂマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【図１７】図１７は、実施の形態２におけるＨ．２６４の動き補償予測における小数位置画素の、参照画像の画素値の計算方法を示す図である。
【図１８】図１８は、実施の形態２におけるＨ．２６４の動き補償予測の単位ブロックと予測データ量との関係を示す図である。
【図１９】図１９は、実施の形態３におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図２０】図２０は、実施の形態３におけるデータ転送量予測部が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２１】図２１は、実施の形態３におけるデータ転送量予測部が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２２】図２２は、実施の形態４におけるデータ転送量予測部が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２３】図２３は、実施の形態４におけるデータ転送量予測部が参照画像をアライメントされたアドレスに補正することを説明する図である。
【図２４】図２４は、実施の形態４におけるデータ転送量予測部が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２５】図２５は、実施の形態５におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図２６】図２６は、実施の形態５におけるブロック決定部が並列に復号するマクロブロックの数を決定することを説明する図である。
【図２７】図２７は、実施の形態６における他の装置が画像復号装置の外部メモリにアクセスする場合の機能構成を示すブロック図である。
【図２８】図２８は、実施の形態６におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図２９】図２９は、画像復号装置を制御する集積回路の一例を示す図である。
【発明を実施するための形態】
【００５０】
Ｈ．２６４符号化方式に対応した画像復号装置に本発明を適用した実施の形態について、図面を参照しながら説明する。なお、本実施の形態では、Ｈ．２６４符号化方式に対応した画像復号装置を示したが、動き補償予測を行う動画像符号化方式に対応した画像復号装置であれば、同様の形態で実現することができる。
【００５１】
（実施の形態１）
図３は、本発明の実施の形態１における画像復号装置１００の機能構成を示すブロック図である。
【００５２】
画像復号装置１００は、所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、ブロックごとに行う装置である。ここで、所定の画素数のブロックとは、マクロブロックである。
【００５３】
同図に示すように、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、復号制御部１３０、マクロブロック復号部１４０、マクロブロック復号部１５０、マクロブロック復号部１６０、デブロッキングフィルタ部１７０、及び隣接ＭＢ情報メモリ１８０を備えている。
【００５４】
隣接ＭＢ情報メモリ１８０には、マクロブロックの復号処理に必要となる周辺隣接マクロブロックの情報が格納されている。
【００５５】
外部メモリ１１０には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像が格納されている。符号化ストリームは、入力される符号化画像データである。復号ストリームは、ストリームパーサ部１２０によって可変長復号された符号化画像データである。参照画像は、符号化画像データの復号が行われる際に参照される画像である。復号画像は、符号化画像データが復号された画像である。
【００５６】
なお、外部メモリ１１０は、請求の範囲に記載の「記憶部」に相当する。
【００５７】
なお、外部メモリ１１０は、本実施の形態の画像復号装置１００とは異なる他の装置のメモリと共用されてもよい。その場合、外部メモリ１１０には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像以外のデータも格納されることになる。
【００５８】
ストリームパーサ部１２０は、符号化ストリームの可変長復号を行い、復号ストリームを生成すると共に、マクロブロック復号時に外部メモリ１１０から取得する参照画像のデータ量を予測するために必要なパラメータを、復号制御部１３０に送る。
【００５９】
具体的には、ストリームパーサ部１２０は、Ｈ．２６４で符号化された符号化ストリームを外部メモリ１１０から読み出し、可変長復号を行い、復号した復号ストリームを外部メモリ１１０に書き戻す。この時、本実施の形態１では、可変長復号して得られたパラメータのうち、少なくとも、符号化画像データの復号が行われる際にマクロブロックごとに参照される参照画像の枚数を示す参照情報が、復号制御部１３０に送られる。ここで、参照情報は、符号化画像データに含まれるマクロブロックのマクロブロックタイプ情報である。
【００６０】
なお、ストリームパーサ部１２０は、請求の範囲に記載の「プリデコード部」に相当する。
【００６１】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、復号制御部１３０からの指示に従って、外部メモリ１１０から復号ストリームを読み出し、並列にマクロブロックの復号処理を行い、再構成した画素データをデブロッキングフィルタ部１７０に出力する。この時、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、外部メモリ１１０から動き補償予測に用いる参照画像の画素データの読出しを必要に応じて行う。
【００６２】
なお、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれは、請求の範囲に記載の「ブロック復号部」に相当する。
【００６３】
デブロッキングフィルタ部１７０は、再構成した画素データに対してブロックノイズを除去するデブロッキングフィルタ処理を行い、復号画像を外部メモリ１１０に出力する。この時、以降の復号処理で参照画像として用いられる復号画像は、参照画像としても外部メモリに保存される。
【００６４】
復号制御部１３０は、ストリームパーサ部１２０、マクロブロック復号部１４０、マクロブロック復号部１５０、マクロブロック復号部１６０、及びデブロッキングフィルタ部１７０に対して、処理開始指示を出して画像復号処理全体の制御を行っている。
【００６５】
また、復号制御部１３０は、データ転送量予測部１３１及びブロック決定部１３２を備えている。
【００６６】
データ転送量予測部１３１は、マクロブロックごとに、マクロブロックタイプ情報を用いて、符号化画像データの復号が行われる際に外部メモリ１１０から読み出される参照画像の予測データ量を計算する。つまり、データ転送量予測部１３１は、ストリームパーサ部１２０から送られてきたパラメータを用いて、マクロブロック復号処理の動き補償予測の時に、外部メモリ１１０から取得を要する参照画像のデータ量をマクロブロック単位で予測する。
【００６７】
具体的には、データ転送量予測部１３１は、マクロブロックタイプ情報で示される参照画像の枚数に当該参照画像のデータ量を乗じて、予測データ量を計算する。
【００６８】
ブロック決定部１３２は、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、データ転送量予測部１３１が計算した予測データ量を用いて、並列に復号が行われる複数のマクロブロックを決定する。具体的には、ブロック決定部１３２は、この予測データ量に基づいて、マクロブロック復号時に、外部メモリ１１０から取得する参照画像のデータ量が瞬間的に増大しないように、予めマクロブロックの復号順序を決定しておく。
【００６９】
予め決定した復号順序に従って、復号制御部１３０は、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のマクロブロック復号処理を制御している。復号制御部１３０は、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０に復号開始指示を出す場合、隣接ＭＢ情報メモリ１８０から、復号対象のマクロブロックの復号に必要な周辺隣接マクロブロックの情報を読み出して、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０に渡す。
【００７０】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、ブロック決定部１３２が決定した複数のマクロブロックを並列に復号する。マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０がマクロブロックの復号処理を終えると、復号したマクロブロックの情報のうち、以降の復号処理に周辺隣接マクロブロック情報として必要となる情報を、復号制御部１３０に渡す。復号制御部１３０はこれを隣接ＭＢ情報メモリ１８０に格納する。
【００７１】
次に、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０の構成について、詳細に説明する。なお、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、共に同じ構成であるため、以下、マクロブロック復号部１４０の構成について説明を行う。
【００７２】
図４は、本実施の形態１におけるマクロブロック復号部１４０の機能構成を示すブロック図である。
【００７３】
同図に示すように、マクロブロック復号部１４０は、逆量子化部１４１、逆直交変換部１４２、画面内予測部１４３、動き補償予測部１４４及び加算回路１４５を備えている。
【００７４】
逆量子化部１４１は、外部メモリ１１０から読み出した復号ストリームから、量子化された係数データを読み出して逆量子化を行い、係数データを逆直交変換部１４２に出力する。
【００７５】
逆直交変換部１４２は、係数データに対して逆直交変換を行い、空間領域の画素データを生成する。
【００７６】
画面内予測部１４３と動き補償予測部１４４は、復号ストリームから読み出される予測モードによって、どちらか一方が起動され、予測画像の画素データを生成する。
【００７７】
画面内予測部１４３は、予測モードがイントラ予測であった場合に起動され、画面内予測を行うことで、予測画像の画素データを生成する。
【００７８】
動き補償予測部１４４は、予測モードがインター予測であった場合に起動され、復号された動きベクトルに応じた参照画像の画素データを取得して、動き補償予測を行うことで、予測画像の画素データを生成する。
【００７９】
なお、画面内予測部１４３及び動き補償予測部１４４は、画面内予測及び動き補償予測を、復号制御部１３０から渡された周辺隣接マクロブロックの情報を用いて行う。
【００８０】
加算回路１４５は、逆直交変換部１４２が出力した画素データと、画面内予測部１４３または動き補償予測部１４４が出力した予測画像の画素データとを加算して、再構成された画素データを出力する。
【００８１】
次に、一般的なＨ．２６４符号化ストリームの構成について説明する。
【００８２】
図５は、一般的なＨ．２６４符号化ストリームの構成を示す図である。
【００８３】
同図に示すように、符号化ストリームの先頭にはＳＰＳ（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ５０２があり、その後にＰＰＳ（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ５０３、スライスヘッダ５０４、スライスデータ５０５が続く。
【００８４】
ＳＰＳヘッダ５０２、ＰＰＳヘッダ５０３、及びスライスヘッダ５０４の先頭にはデータの区切りを示すスタートコード（ＳＣ：Ｓｔａｒｔ  Ｃｏｄｅ）５０１が挿入されている。そのため、符号化ストリームに対してスタートコードサーチを行い、スタートコード５０１に続くデータを解析することで、符号化ストリームの中からＳＰＳヘッダ５０２、ＰＰＳヘッダ５０３、及びスライスヘッダ５０４を探索することができる。
【００８５】
ピクチャの先頭にはＰＰＳヘッダ５０３が存在し、次のＰＰＳヘッダ５０３が現れるまでの一連のデータが１ピクチャ分のデータになっている。１ピクチャのデータの中には、スライスヘッダ５０４とスライスデータ５０５のセットが、そのピクチャに存在するスライスの数分存在する。
【００８６】
次に、画像復号装置１００の動作について、詳細に説明する。
【００８７】
図６は、本発明の実施の形態１における画像復号装置１００の動作の一例を示すフローチャートである。
【００８８】
まず、ストリームパーサ部１２０は、外部メモリ１１０から符号化ストリームを読み出し、ＳＰＳヘッダ５０２の復号（Ｓ１０２）、ＰＰＳヘッダ５０３の復号（Ｓ１０４）、スライスヘッダ５０４の復号（Ｓ１０６）を順次行う。
【００８９】
そして、ストリームパーサ部１２０は、スライスヘッダ５０４の復号（Ｓ１０６）が完了すると、スライスデータに含まれるマクロブロックの可変長復号のみを行い、復号ストリームを生成する（Ｓ１０８）。
【００９０】
ここで、ストリームパーサ部１２０が生成する復号ストリームには、以降の処理でマクロブロックを並列に復号する時にマクロブロックの先頭が分かるように、マクロブロックの先頭にＭＢ（Ｍａｃｒｏｂｌｏｃｋ）スタートコードが挿入されている。本実施の形態では、ＭＢスタートコードを０ｘ０００００１Ｆ０とした。なお、ＭＢスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
【００９１】
また、復号ストリームの生成と合わせて、ストリームパーサ部１２０は、復号したパラメータのうち、ｍｂ＿ｔｙｐｅ（Ｍａｃｒｏｂｌｏｃｋ  Ｔｙｐｅ）、ｓｕｂ＿ｍｂ＿ｔｙｐｅ（Ｓｕｂ−Ｍａｃｒｏｂｌｏｃｋ  Ｔｙｐｅ）と、ｒｅｆ＿ｉｄｘ（Ｒｅｆｅｒｅｎｃｅ  Ｉｎｄｅｘ）やｍｖｄ（Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｄｉｆｆｅｒｅｎｃｅ）などの動きベクトルを算出するために必要なパラメータを復号制御部１３０に送る。
【００９２】
なお、本実施の形態１では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅを復号制御部１３０に送る。また、ｍｂ＿ｔｙｐｅは、請求の範囲に記載の「マクロブロックタイプ情報」に包含される。
【００９３】
ストリームパーサ部１２０は、１スライス分の可変長復号を完了すると、復号を行ったスライスがピクチャの終端であるかどうかを判断する（Ｓ１１０）。ピクチャに含まれるスライスの数は、ＰＰＳヘッダ５０３にあるｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１を復号することで分かる。このため、復号したスライスの数から１を引いた数と、ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１が一致すれば、ピクチャの終端であると判断する。
【００９４】
ストリームパーサ部１２０は、ピクチャの終端でないと判断した場合は（Ｓ１１０でＮＯ）、ピクチャの終端になるまで、スライスヘッダ５０４の復号（Ｓ１０６）及びスライスデータ５０５の可変長復号（Ｓ１０８）を順次行う。
【００９５】
そして、ストリームパーサ部１２０がピクチャの終端であると判断した場合は（Ｓ１１０でＹＥＳ）、復号制御部１３０のデータ転送量予測部１３１が、マクロブロックの復号処理の、動き補償予測の時に、外部メモリ１１０から取得しなければならない参照画像の予測データ量を、マクロブロック単位で計算する（Ｓ１１２）。データ転送量予測部１３１が予測データ量を計算する処理の詳細については、後ほど述べる。
【００９６】
データ転送量予測部１３１がマクロブロック毎の参照画像のデータ転送量の予測を１ピクチャ分終えると、ブロック決定部１３２は、その予測値に従って、並列に復号が行われる複数のマクロブロックを決定する（Ｓ１１４）。具体的には、ブロック決定部１３２は、マクロブロックの復号順序を決定する。ブロック決定部１３２が並列復号するマクロブロックを決定する処理の詳細については、後ほど述べる。
【００９７】
ブロック決定部１３２が１ピクチャ分のマクロブロックの復号順序を決定すると、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、それぞれ復号制御部１３０の指示に従って、外部メモリ１１０から復号ストリームを読み出し、復号対象マクロブロックの復号処理を並列に行う（Ｓ１１６）。マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理の詳細については、後ほど述べる。
【００９８】
復号制御部１３０は、ブロック決定部１３２が決定した復号順序に従って、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０にマクロブロック単位で復号開始の指示を出している。
【００９９】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０が復号対象マクロブロックの復号を完了すると、復号制御部１３０は、復号が行われたマクロブロックがピクチャの終端であるか否かを判断する（Ｓ１１８）。
【０１００】
そして、復号制御部１３０が、復号が行われたマクロブロックがピクチャの終端でないと判断した場合（Ｓ１１８でＮＯ）、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、ピクチャの終端になるまでマクロブロックの復号処理（Ｓ１１６）を行う。
【０１０１】
復号制御部１３０が、復号が行われたマクロブロックがピクチャの終端であると判断した場合（Ｓ１１８でＹＥＳ）、デブロッキングフィルタ部１７０が１ピクチャ分の再構成画素データに対して、デブロッキングフィルタ処理を行う（Ｓ１２０）。
【０１０２】
デブロッキングフィルタ部１７０がデブロッキングフィルタ処理を完了すると、次に復号制御部１３０が、デブロッキングフィルタ処理を行ったピクチャがストリームの終端であるか否かを判断する（Ｓ１２２）。
【０１０３】
後続にストリームが続いている場合は、復号制御部１３０は、当該ピクチャがストリームの終端でないと判断し（Ｓ１２２でＮＯ）、ストリームパーサ部１２０がＰＰＳヘッダ５０３の復号（Ｓ１０４）を再度行うことにより、符号化ストリームを次々と復号していく。
【０１０４】
復号制御部１３０が、当該ピクチャがストリームの終端であると判断した場合は（Ｓ１２２でＹＥＳ）、処理を終了する。
【０１０５】
以上により、画像復号装置１００が符号化ストリームを復号する処理は終了する。
【０１０６】
次に、データ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）の詳細について、説明する。
【０１０７】
本実施の形態では、マクロブロックレイヤにあるｍｂ＿ｔｙｐｅを用いたマクロブロックタイプによる予測方法により、データ転送量予測部１３１が予測データ量を計算する。
【０１０８】
図７は、本実施の形態１におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０１０９】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ２０２）。なお、ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０１１０】
ここで、マクロブロックのマクロブロックタイプは、Ｉマクロブロックタイプ、Ｐマクロブロックタイプ、及びＢマクロブロックタイプの３種類がある。このため、データ転送量予測部１３１が、ｍｂ＿ｔｙｐｅから、この３種類のマクロブロックタイプのうちのどのマクロブロックタイプを取得するかを、以下に説明する。
【０１１１】
図８は、Ｐスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【０１１２】
図９は、Ｂスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【０１１３】
ストリームパーサ部１２０で復号された、復号対象のマクロブロックを含むスライスのスライスヘッダ５０４に含まれるｓｌｉｃｅ_ｔｙｐｅから、当該スライスは、Ｉスライス、Ｐスライス、又はＢスライスのどのスライスタイプかが得られる。
【０１１４】
そして、図８に示すように、ＰスライスはＰマクロブロックとＩマクロブロックとで構成されている。具体的には、ｍｂ＿ｔｙｐｅが「０〜４」のマクロブロックは、Ｐマクロブロックであり、ｍｂ＿ｔｙｐｅが「５〜２５」のマクロブロックは、Ｉマクロブロックである。
【０１１５】
このため、データ転送量予測部１３１は、Ｐスライスのマクロブロックのｍｂ＿ｔｙｐｅが「０〜４」の場合は、当該マクロブロックはＰマクロブロックタイプであり、ｍｂ＿ｔｙｐｅが「５〜２５」の場合は、当該マクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１６】
また、図９に示すように、ＢスライスはＢマクロブロックとＩマクロブロックとで構成されている。具体的には、ｍｂ＿ｔｙｐｅが「０〜２２」のマクロブロックは、Ｂマクロブロックであり、ｍｂ＿ｔｙｐｅが「２３〜２５」のマクロブロックは、Ｉマクロブロックである。
【０１１７】
このため、データ転送量予測部１３１は、Ｂスライスのマクロブロックのｍｂ＿ｔｙｐｅが「０〜２２」の場合は、当該マクロブロックはＢマクロブロックタイプであり、ｍｂ＿ｔｙｐｅが「２３〜２５」の場合は、当該マクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１８】
また、ＩスライスはＩマクロブロックのみで構成されている。このため、データ転送量予測部１３１は、ＩスライスのマクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１９】
図７に戻り、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ２０４）。
【０１２０】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｉ」）、予測データ量は０バイトであると計算する（Ｓ２０６）。
【０１２１】
つまり、Ｉマクロブロックタイプのマクロブロックは、画面内予測によって予測画像を生成して、動き補償予測は行われないため、参照画像データを必要としない。
【０１２２】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｐ」）、予測データ量は２５６バイトであると計算する（Ｓ２０８）。
【０１２３】
つまり、Ｐマクロブロックタイプのマクロブロックは、時間的に近い１枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック１つ分、つまり２５６バイト（１６画素×１６画素×１）の参照画像データを必要とする。
【０１２４】
データ転送量予測部１３１は、取得したマクロブロックタイプがＢマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｂ」）、予測データ量は５１２バイトであると計算する（Ｓ２１０）。
【０１２５】
つまり、Ｂマクロブロックタイプのマクロブロックは、時間的に近い２枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック２つ分、つまり５１２バイト（１６画素×１６画素×２）の参照画像データを必要とする。
【０１２６】
このように、マクロブロックタイプによって動き補償予測に必要となる参照画像の予測データ量を計算することができる。つまり、本実施の形態のマクロブロックタイプによる予測方法では、この予測データ量を外部メモリ１１０から取得する参照画像の予測データ量であるとする。
【０１２７】
以上により、本実施の形態１におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０１２８】
次に、ブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）の詳細について、説明する。
【０１２９】
本実施の形態では、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、マクロブロックの復号順序を入れ替えることで、並列に復号が行われる複数のマクロブロックを決定する。
【０１３０】
図１０は、本実施の形態１におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０１３１】
まず、ブロック決定部１３２は、所定の数のマクロブロックの予測データ量の平均値を算出する（Ｓ３０２）。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部１３２が既に復号順序を決定したマクロブロックでもよい。
【０１３２】
そして、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックを選択する（Ｓ３０４）。ここでは、所定の数のマクロブロックは、ピクチャ内の全てのマクロブロックであることとする。
【０１３３】
以下に、このブロック決定部１３２が予測データ量の平均値を算出し（Ｓ３０２）、並列に復号するマクロブロックを選択する（Ｓ３０４）処理について、具体的に説明する。
【０１３４】
マクロブロックの復号順序は図２に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。しかし、本実施の形態では、マクロブロック復号部は３つしかないため、並列に復号可能なマクロブロックが３個より多い場合、同じ番号のマクロブロックを一度には復号することができない。
【０１３５】
例えば、１１番のマクロブロックは６個あるが、マクロブロック復号部の数が３個であるため、２回に分けて復号する必要がある。どのマクロブロックを始めに復号し、どのマクロブロックを後で復号するかの判断に、参照画像の予測データ量を用いる。
【０１３６】
つまり、ブロック決定部１３２は、並列に復号するマクロブロックの、参照画像の予測データ量の平均値が、各マクロブロックの予測データ量の平均値となるべく近くなるように、並列に復号するマクロブロックを選択する。これは、ブロック決定部１３２が、並列に復号するマクロブロックの全組み合わせパターンを求め、各組み合わせパターンで参照画像の予測データ量の平均値を算出して、これが全体の平均値と最も近くなる組み合わせを求めることで行う。
【０１３７】
そして、ブロック決定部１３２は、選択した複数のマクロブロックが並列に復号されるように、マクロブロックの復号順序を入れ替える（Ｓ３０６）。
【０１３８】
このようにすることで、外部メモリ１１０から瞬間的に多くのデータが転送されることを防ぎ、小さなメモリバンド幅で、Ｈ．２６４で符号化された画像データを並列復号することができる。
【０１３９】
なお、Ｈ．２６４の符号化画像を復号する上で必要となるデータ転送は、動き補償予測のための参照画像の取得転送以外にもある。しかし、この参照画像の取得転送が復号に必要なデータ転送量の大部分を占めているため、参照画像取得のデータ転送量の瞬間的な増加を抑えることで、外部メモリ１１０のメモリバンド幅を抑えることができる。
【０１４０】
以上により、ブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０１４１】
次に、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理（図６のＳ１１６）の詳細について、説明する。
【０１４２】
図１１は、本実施の形態１におけるマクロブロック復号部１４０がマクロブロックの復号を行う処理の一例を示すフローチャートである。なお、マクロブロック復号部１５０及びマクロブロック復号部１６０がマクロブロックの復号を行う処理は、マクロブロック復号部１４０がマクロブロックの復号を行う処理と同様であるため、省略する。
【０１４３】
まず、同図に示すように、マクロブロック復号部１４０は、復号制御部１３０からマクロブロック復号開始の指示を受けると、外部メモリ１１０から復号対象マクロブロックの復号ストリームを読み出す（Ｓ４０２）。
【０１４４】
次に、マクロブロック復号部１４０は、復号ストリームから予測モードを読み出し、予測モードがイントラ予測かインター予測かを判断する（Ｓ４０４）。
【０１４５】
マクロブロック復号部１４０は、予測モードがイントラ予測であると判断した場合（Ｓ４０４で「イントラ予測」）、画面内予測部１４３が起動して、画面内予測処理を行い、予測ブロックの画素データを生成する（Ｓ４０６）。
【０１４６】
マクロブロック復号部１４０は、予測モードがインター予測であると判断した場合（Ｓ４０４で「インター予測」）、動き補償予測部１４４が起動して、動き補償予測処理を行い、予測ブロックの画素データを生成する（Ｓ４０８）。
【０１４７】
次に、マクロブロック復号部１４０は、復号ストリームから予測誤差データを読み出し、逆量子化部１４１で逆量子化し、逆直交変換部１４２で逆直交変換することで、予測ブロックに対する予測誤差画素データを生成する（Ｓ４１０）。
【０１４８】
最後に、マクロブロック復号部１４０は、予測ブロックの画素データと、予測誤差画素データを加算回路１４５で加算して再構成画素データを得る（Ｓ４１２）。
【０１４９】
このように、１マクロブロックの復号処理が完了すると、マクロブロック復号部１４０は、復号制御部１３０にマクロブロック完了を通知する（Ｓ４１４）。また、それとともに、マクロブロック復号部１４０は、復号したマクロブロックの情報のうち、後の復号に周辺隣接マクロブロック情報として使用する情報を、復号制御部１３０に渡す。
【０１５０】
以上により、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理（図６のＳ１１６）は、終了する。
【０１５１】
以上のことから、本実施の形態における画像復号装置１００によれば、参照画像の枚数から参照画像の予測データ量を計算し、並列に復号が行われる符号化画像データの複数のブロックを決定することで、複数のブロックを並列に復号する。つまり、符号化画像データを並列に復号する場合に、予め、メモリから取得する予測データ量を正確に計算することができるため、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、並列に復号するブロックを適切に選択することができる。
【０１５２】
また、参照画像の枚数を示す参照情報として、マクロブロックタイプ情報の復号が行われる。これにより、簡易に参照画像の枚数を取得することができる。
【０１５３】
また、ブロックの復号順序を入れ替えることで、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロックの復号順序を入れ替えることができる。なお、この方法に最も効果がある符号化画像データであったとすれば、外部メモリ１１０のメモリバンド幅を最大で半分近く低減することが可能となる。
【０１５４】
また、複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる複数のブロックを決定する。これにより、並列復号が行われるブロックの予測データ量が平均的な値となる。
【０１５５】
これらにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０１５６】
（実施の形態２）
本実施の形態２では、符号化画像データの復号が行われる際に、符号化画像データの各マクロブロックをさらに小さなブロックに分割した分割ブロックを単位とした参照画像を参照する場合、ストリームパーサ部１２０は、符号化画像データに含まれる、分割ブロックのサイズを示すブロック分割パターン情報を、さらに復号制御部１３０に送る。
【０１５７】
そして、データ転送量予測部１３１は、ブロック分割パターン情報で示されるサイズの分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。
【０１５８】
なお、ブロック分割パターン情報は、マクロブロックの分割パターンであるマクロブロック分割パターンと、サブマクロブロックの分割パターンであるサブマクロブロック分割パターンとを包含している。つまり、本実施の形態２では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ及びｓｕｂ＿ｍｂ＿ｔｙｐｅを復号制御部１３０に送る。詳細については、後述する。
【０１５９】
ここで、本実施の形態２では、図６に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１２）の詳細について、以下に説明する。
【０１６０】
図１２は、本実施の形態２におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０１６１】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ５０２）。詳細については、実施の形態１の図７でのマクロブロックタイプを取得する処理（図７のＳ２０２）と同様であるため、省略する。
【０１６２】
そして、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ５０４）。
【０１６３】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ５０４で「Ｉ」）、予測データ量は０バイトであると計算し（Ｓ５０６）、処理を終了する。
【０１６４】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプ又はＢマクロブロックタイプであると判断した場合（Ｓ５０４で「ＰまたはＢ」）、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する（Ｓ５０８）。
【０１６５】
図１３は、マクロブロック分割パターンを説明する図である。
【０１６６】
同図に示すように、ｍｂ＿ｔｙｐｅによって、１６画素×１６画素、１６画素×８画素、８画素×１６画素、８画素×８画素の４種類のマクロブロック分割パターンが定義されている。
【０１６７】
また、マクロブロックが分割された各分割ブロックには、ｍｂＰａｒｔＩｄｘ（Ｍａｃｒｏｂｌｏｃｋ  Ｐａｒｔｉｏｔｉｏｎ  Ｉｎｄｅｘ）と呼ばれる番号が付けられている。例えば、８画素×８画素のマクロブロック分割パターンであれば、マクロブロックは、ｍｂＰａｒｔＩｄｘが０〜３の４つの分割ブロックに分割されている。
【０１６８】
そして、図８及び図９に示されたように、ｍｂ＿ｔｙｐｅの値から、マクロブロック分割パターンを取得することができる。つまり、図８及び図９に示された「Ｎａｍｅ  ｏｆ  ｍｂ＿ｔｙｐｅ」はマクロブロック分割パターンを示している。また、「ＮｕｍＭｂＰａｒｔ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの個数を示し、「ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの幅を示し、「ＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの高さを示している。
【０１６９】
このように、ストリームパーサ部１２０が、符号化ストリームに含まれるｍｂ＿ｔｙｐｅを復号することで、データ転送量予測部１３１は、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する。
【０１７０】
図１２に戻り、データ転送量予測部１３１は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する（Ｓ５１０）。
【０１７１】
データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「８×８」）、ｉｄｘ＝０とする（Ｓ５１２）。ここでは、ｉｄｘは、０以上の整数である。
【０１７２】
次に、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ５１４）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０１７３】
図１４は、サブマクロブロック分割パターンを説明する図である。
【０１７４】
同図に示すように、８画素×８画素のマクロブロック分割パターンの場合には、８画素×８画素の分割ブロックであるサブマクロブロックをさらに分割する分割パターンである、８画素×８画素、８画素×４画素、４画素×８画素、４画素×４画素のサブマクロブロック分割パターンが定義されている。
【０１７５】
また、サブマクロブロックが分割された各分割ブロックには、ｓｕｂＭｂＰａｒｔＩｄｘ（Ｓｕｂ−Ｍａｃｒｏｂｌｏｃｋ  Ｐａｒｔｉｏｔｉｏｎ  Ｉｎｄｅｘ）と呼ばれる番号が付けられている。例えば、４画素×４画素のサブマクロブロック分割パターンであれば、サブマクロブロックは、ｓｕｂＭｂＰａｒｔＩｄｘが０〜３の４つの分割ブロックに分割されている。
【０１７６】
図１５は、Ｐマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【０１７７】
図１６は、Ｂマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【０１７８】
これらの図に示すように、ｍｂ＿ｔｙｐｅの値によって、分割ブロックのサイズが８画素×８画素であった場合には、その８画素×８画素のサブマクロブロックごとに、さらにｓｕｂ＿ｍｂ＿ｔｙｐｅが定められている。そして、ｓｕｂ＿ｍｂ＿ｔｙｐｅの値から、サブマクロブロック分割パターンを取得することができる。
【０１７９】
つまり、これらの図に示された「Ｎａｍｅ  ｏｆ  ｓｕｂ＿ｍｂ＿ｔｙｐｅ」はサブマクロブロック分割パターンを示している。また、「ＮｕｍＭｂＰａｒｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの個数を示し、「ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの幅を示し、「ＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの高さを示している。
【０１８０】
このように、ストリームパーサ部１２０が、符号化ストリームに含まれるｓｕｂ＿ｍｂ＿ｔｙｐｅを復号することで、データ転送量予測部１３１は、ｓｕｂ＿ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのサブマクロブロック分割パターンを取得する。
【０１８１】
図１２に戻り、データ転送量予測部１３１は、取得したサブマクロブロック分割パターンがどのサブマクロブロック分割パターンかを判断する（Ｓ５１６）。
【０１８２】
データ転送量予測部１３１は、サブマクロブロック分割パターンが８画素×８画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「８×８」）、予測データ量は１２１バイトであると計算する（Ｓ５１８）。
【０１８３】
また、データ転送量予測部１３１は、サブマクロブロック分割パターンが４画素×４画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「４×４」）、予測データ量は４９バイト×４であると計算する（Ｓ５２０）。
【０１８４】
データ転送量予測部１３１は、サブマクロブロック分割パターンが８画素×４画素又は４画素×８画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「８×４または４×８」）、予測データ量は７７バイト×２であると計算する（Ｓ５２２）。
【０１８５】
そして、データ転送量予測部１３１は、ｉｄｘに１加算し（Ｓ５２４）、ｉｄｘが３よりも大きいか否かを判断する（Ｓ５２６）。
【０１８６】
データ転送量予測部１３１は、ｉｄｘが３以下であると判断した場合（Ｓ５２６でＮＯ）、予測データ量を計算する処理（Ｓ５１４〜Ｓ５２４）を繰り返す。つまり、データ転送量予測部１３１は、全てのサブマクロブロックの分割ブロックについて、予測データ量を計算する。
【０１８７】
また、データ転送量予測部１３１は、マクロブロック分割パターンが１６画素×１６画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「１６×１６」）、予測データ量は３６１バイトであると計算する（Ｓ５２８）。
【０１８８】
また、データ転送量予測部１３１は、マクロブロック分割パターンが１６画素×８画素又は８画素×１６画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「１６×８または８×１６」）、予測データ量は２０９バイト×２であると計算する（Ｓ５３０）。
【０１８９】
ここで、データ転送量予測部１３１がマクロブロック分割パターン又はサブマクロブロック分割パターンから予測データ量を計算する処理（Ｓ５１８〜Ｓ５２２、Ｓ５２８、Ｓ５３０）について、詳細に説明する。
【０１９０】
Ｈ．２６４では、１／４画素精度で動き補償予測を行うため、小数位置画素の参照画像を必要とする場合がある。この場合、画素と画素との間の小数位置の画素値を計算するために、余分に参照画像データを外部メモリ１１０から読み出す必要がある。この点を考慮したのが、マクロブロック分割パターン又はサブマクロブロック分割パターンを用いた予測方法である。
【０１９１】
図１７は、本実施の形態２におけるＨ．２６４の動き補償予測における小数位置画素の、参照画像の画素値の計算方法を示す図である。
【０１９２】
同図に示すように、画素と画素との中間に位置する１／２位置画素の画素値は、６タップのＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタ演算によって計算される。そのため、１／２位置画素の画素値を計算するためには、周辺隣接の整数位置の６画素が必要となる。
【０１９３】
例えば、動きベクトルが水平方向と垂直方向の両方で小数位置を指している場合、１６画素×１６画素の参照画像を生成するには、水平方向、垂直方向にそれぞれ余分に５画素必要となり、２１画素×２１画素の参照画像データが必要となる。
【０１９４】
また、動きベクトルが水平方向又は垂直方向のいずれか一方で小数位置を指している場合、１６画素×１６画素の参照画像を生成するには、水平方向、垂直方向のいずれか一方に余分に５画素必要となり、１６画素×２１画素又は２１画素×１６画素の参照画像データが必要となる。
【０１９５】
１／４位置画素の画素値は、同図に示す通り、隣接する整数位置画素または１／２位置画素の画素値の平均をとって算出する。このため、１／４位置画素の画素値を計算するためには、１／２位置画素の画素値を計算する場合と同じデータ量の参照画像データが必要となる。
【０１９６】
このように動きベクトルが小数位置を指す場合、画素値計算のために余分に参照画像が必要となるため、動きベクトルによって外部メモリ１１０から取得する参照画像のデータ量は異なる。
【０１９７】
また、Ｈ．２６４では、マクロブロックの大きさである１６画素×１６画素だけでなく、１６画素×８画素、８画素×１６画素、８画素×８画素、８画素×４画素、４画素×８画素、４画素×４画素のブロック単位で動き補償予測が可能である。どの単位で分割するかをマクロブロック単位に自由に選択・組み合わせることが可能になっている。
【０１９８】
１６画素×１６画素よりも細かい単位で動き補償予測する場合でも、動き補償予測する上で小数位置画素の参照画像が必要となると、動き補償予測の単位ブロックに対して水平方向、垂直方向にそれぞれ５画素分、余分に必要となる。そのため、動き補償予測する上で小数位置画素の参照画像が必要となる場合は、より細かい単位でマクロブロックを分割して動き補償予測を行うほど、余分に必要となる参照画像のデータ量が大きくなる。
【０１９９】
図１８は、本実施の形態２におけるＨ．２６４の動き補償予測の単位ブロックと予測データ量との関係を示す図である。
【０２００】
同図に示すように、「動き補償予測の単位ブロック」の欄は、動き補償予測の単位ブロックの大きさを示している。
【０２０１】
また、「水平、垂直位置の両方が整数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。なお、動きベクトルの水平、垂直位置の両方が整数画素位置を指す場合は、動き補償予測に必要な参照画像のデータ量は、動き補償予測の単位ブロックのデータ量と同じである。
【０２０２】
同様に、「水平位置が小数画素位置」の欄は、動き補償予測する上で、水平位置が小数画素位置の参照画像、及び垂直位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０３】
また、「垂直位置が小数画素位置」の欄は、動き補償予測する上で、垂直位置が小数画素位置の参照画像、及び水平位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０４】
また、「水平、垂直位置の両方が小数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が小数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０５】
「予測データ量」の欄は、実際に外部メモリ１１０から取得する参照画像の、データ量の予測値を示している。参照画像のデータ量の予測値は、動きベクトルの指す位置が整数位置、小数位置のどの位置も等確率であるとして算出している。
【０２０６】
つまり、図１７に示したように、「水平、垂直位置の両方が整数画素位置」の画素は、画素Ｃ、Ｄ、Ｉ、Ｌの４個である。また、「水平位置が小数画素位置」の画素は、画素ａ〜ｆの６個である。また、「垂直位置が小数画素位置」の画素は、ｇ〜ｌの６個である。また、「水平、垂直位置の両方が小数画素位置」の画素は、画素ｍ〜ｕの９個である。
【０２０７】
このため、「水平、垂直位置の両方が整数画素位置」、「水平位置が小数画素位置」、「垂直位置が小数画素位置」及び「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量を、それぞれ４：６：６：９で重み付けすることで、予測データ量が算出される。
【０２０８】
具体的には、データ転送量予測部１３１は、以下の式により、予測データ量を算出する。
【０２０９】
（「水平、垂直位置の両方が整数画素位置」の参照画像のデータ量×４
＋「水平位置が小数画素位置」の参照画像のデータ量×６
＋「垂直位置が小数画素位置」の参照画像のデータ量×６
＋「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量×９）／２５
【０２１０】
このように、データ転送量予測部１３１は、分割ブロックごとに、水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とした場合、第１参照画像、第２参照画像、第３参照画像及び第４参照画像のデータ量に、それぞれ第１確率、第２確率、第３確率及び第４確率を乗じて加算することで、予測データ量を計算する。
【０２１１】
図１２に戻り、次に、データ転送量予測部１３１は、復号対象のマクロブロックのマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ５３２）。
【０２１２】
データ転送量予測部１３１は、マクロブロックタイプがＰマクロブロックタイプであると判断した場合は（Ｓ５３２で「Ｐ」）、処理を終了する。
【０２１３】
また、データ転送量予測部１３１は、マクロブロックタイプがＢマクロブロックタイプであると判断した場合（Ｓ５３２で「Ｂ」）、予測データ量を２倍にし（Ｓ５３４）、処理を終了する。
【０２１４】
つまり、マクロブロック分割パターンを用いた予測方法では、マクロブロックレイヤにあるｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅからマクロブロックタイプとマクロブロックの分割パターンを求める。そして、マクロブロック内の各分割ブロックに対応する予測データ量の総和を、外部メモリ１１０から取得する参照画像のデータ量であるとする。
【０２１５】
この時、分割ブロックのマクロブロックタイプがＢマクロブロックタイプである場合は、参照画像が２枚必要であることを考慮して、図１８の予測データ量の、２倍の値を予測値とする。Ｐマクロブロックパターンである場合は、参照画像が１枚必要であることを考慮して、図１８の予測データ量を予測値とし、Ｉマクロブロックパターンである場合は、動き補償予測は行われないため予測値はゼロとして計算する。
【０２１６】
動き補償予測の単位ブロックが８画素×８画素よりも大きい場合は、ｍｂ＿ｔｙｐｅから得られるＭｂＰａｒｔＷｉｄｔｈとＭｂＰａｒｔＨｅｉｇｈｔが、分割ブロックの幅と高さになる。動き補償予測の単位ブロックが８画素×８画素以下の場合は、８画素×８画素ブロック毎にｓｕｂ＿ｍｂ＿ｔｙｐｅがある。この、ｓｕｂ＿ｍｂ＿ｔｙｐｅから得られるＭｂＰａｒｔＷｉｄｔｈとＭｂＰａｒｔＨｅｉｇｈｔが、分割ブロックの幅と高さになる。
【０２１７】
以上により、本実施の形態２におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０２１８】
以上のように、本実施の形態２における画像復号装置１００によれば、分割ブロック単位で参照画像を参照する場合、ブロック分割パターン情報を用いて、予測データ量を計算する。これにより、分割ブロック単位で参照画像を参照する必要がある場合でも、予測データ量を計算することができる。
【０２１９】
また、分割ブロックごとに、さらに整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。これにより、整数画素位置の参照画像のデータ量だけではなく、小数画素位置の参照画像のデータ量も考慮した予測データ量を計算することができる。このため、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２２０】
また、水平位置又は垂直位置が整数画素位置又は小数画素位置の参照画像が参照される確率を用いて、予測データ量を計算する。これにより、水平位置又は垂直位置が整数画素位置か小数画素位置かを考慮して計算が行われるため、予測データ量をさらに正確に計算することができる。
【０２２１】
したがって、分割ブロック単位で参照画像を参照する必要がある場合でも、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０２２２】
（実施の形態３）
本実施の形態３では、ストリームパーサ部１２０は、マクロブロックごとに、復号対象のマクロブロックの画像と参照画像との間の動き量を示す動き情報を、さらに復号制御部１３０に送り、データ転送量予測部１３１は、マクロブロックごとに、さらに動き情報を用いて、予測データ量を計算する。
【０２２３】
つまり、本実施の形態３では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ及びｍｖｄを復号制御部１３０に送る。
【０２２４】
具体的には、データ転送量予測部１３１は、動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。
【０２２５】
ここで、本実施の形態３では、図６に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１２）の詳細について、以下に説明する。
【０２２６】
図１９は、本実施の形態３におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０２２７】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ６０２）。詳細については、実施の形態１の図７でのマクロブロックタイプを取得する処理（図７のＳ２０２）と同様であるため、省略する。
【０２２８】
そして、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ６０４）。
【０２２９】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ６０４で「Ｉ」）、予測データ量は０バイトであると計算し（Ｓ６０６）、処理を終了する。
【０２３０】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプ又はＢマクロブロックタイプであると判断した場合（Ｓ６０４で「ＰまたはＢ」）、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する（Ｓ６０８）。詳細については、実施の形態２の図１２でのマクロブロック分割パターンを取得する処理（図１２のＳ５０８）と同様であるため、省略する。
【０２３１】
そして、データ転送量予測部１３１は、ｉｄｘ＝０とする（Ｓ６１０）。
【０２３２】
そして、データ転送量予測部１３１は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する（Ｓ６１２）。
【０２３３】
データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素のマクロブロック分割パターンであると判断した場合（Ｓ６１２で「８×８」）、８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する（Ｓ６１４）。このデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
【０２３４】
また、データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素以外のマクロブロック分割パターンであると判断した場合（Ｓ６１２で「８×８以外」）、当該マクロブロック分割パターンの場合の予測データ量を計算する（Ｓ６１６）。このデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
【０２３５】
そして、データ転送量予測部１３１は、ｉｄｘに１加算し（Ｓ６１８）、ｉｄｘが「マクロブロックの分割数−１」よりも大きいか否かを判断する（Ｓ６２０）。
【０２３６】
データ転送量予測部１３１は、ｉｄｘが「マクロブロックの分割数−１」以下であると判断した場合（Ｓ６２０でＮＯ）、予測データ量を計算する処理（Ｓ６１２〜Ｓ６１８）を繰り返す。つまり、データ転送量予測部１３１は、全てのマクロブロックの分割ブロックについて、予測データ量を計算する。
【０２３７】
データ転送量予測部１３１は、ｉｄｘが「マクロブロックの分割数−１」よりも大きいと判断した場合（Ｓ６２０でＹＥＳ）、処理を終了する。
【０２３８】
以上により、本実施の形態３におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０２３９】
次に、データ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）の詳細について、説明する。
【０２４０】
図２０は、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２４１】
復号対象のマクロブロックのマクロブロック分割パターンが８画素×８画素の場合は、８画素×８画素のサブマクロブロックにサブマクロブロック分割パターンが存在する。
【０２４２】
このため、まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ７０２）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２４３】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘ＝０とする（Ｓ７０４）。ここで、ｓｕｂＩｄｘは、０以上の整数である。
【０２４４】
そして、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割サイズを取得し、ｓｕｂＷ及びｓｕｂＨに代入する（Ｓ７０６）。
【０２４５】
具体的には、データ転送量予測部１３１は、図１５又は図１６に示された、サブマクロブロックの分割ブロックの幅である「ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」及びサブマクロブロックの分割ブロックの高さである「ＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」を取得する。そして、データ転送量予測部１３１は、ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）をｓｕｂＷに代入し、及びＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）をｓｕｂＨに代入する。
【０２４６】
そして、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘのサブマクロブロックの分割ブロックの動きベクトルを算出する（Ｓ７０８）。つまり、まず、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝０のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０２４７】
そして、データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置か否かを判断する（Ｓ７１０）。
【０２４８】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置であると判断した場合（Ｓ７１０でＹＥＳ）、ｓｕｂＷに５加算する（Ｓ７１２）。つまり、データ転送量予測部１３１は、サブマクロブロックの分割ブロックの幅を５画素広げる。
【０２４９】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は（Ｓ７１０でＮＯ）、ｓｕｂＷに加算することなく、次の処理（Ｓ７１４）へ進む。
【０２５０】
次に、データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する（Ｓ７１４）。
【０２５１】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合（Ｓ７１４でＹＥＳ）、ｓｕｂＨに５加算する（Ｓ７１６）。つまり、データ転送量予測部１３１は、サブマクロブロックの分割ブロックの高さを５画素広げる。
【０２５２】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は（Ｓ７１４でＮＯ）、ｓｕｂＨに加算することなく、次の処理（Ｓ７１８）へ進む。
【０２５３】
次に、データ転送量予測部１３１は、ｓｕｂＷにｓｕｂＨを乗じた値を予測データ量として計算する（Ｓ７１８）。
【０２５４】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘに１加算し（Ｓ７２０）、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいか否かを判断する（Ｓ７２２）。
【０２５５】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値以下であると判断した場合（Ｓ７２２でＮＯ）、予測データ量を計算する処理（Ｓ７０６〜Ｓ７２０）を繰り返す。つまり、データ転送量予測部１３１は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理（Ｓ７０６〜Ｓ７２０）を行う。
【０２５６】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいと判断した場合は（Ｓ７２２でＹＥＳ）、処理を終了する。
【０２５７】
以上により、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）は、終了する。
【０２５８】
次に、データ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）の詳細について、説明する。
【０２５９】
図２１は、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２６０】
復号対象のマクロブロックのマクロブロック分割パターンが８画素×８画素以外の場合は、サブマクロブロックにサブマクロブロック分割パターンが存在せず、サブマクロブロックが復号処理の最小単位である。
【０２６１】
このため、まず、データ転送量予測部１３１は、サブマクロブロックのサイズを取得し、ｗ及びｈに代入する（Ｓ８０２）。
【０２６２】
具体的には、データ転送量予測部１３１は、図８又は図９に示された、マクロブロックの分割ブロックの幅である「ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）」及びマクロブロックの分割ブロックの高さである「ＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）」を取得する。そして、データ転送量予測部１３１は、ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）をｗに代入し、及びＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）をｈに代入する。
【０２６３】
そして、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトルを算出する（Ｓ８０４）。つまり、まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝０のサブマクロブロックの動きベクトルを算出する。
【０２６４】
そして、データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置か否かを判断する（Ｓ８０６）。
【０２６５】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置であると判断した場合（Ｓ８０６でＹＥＳ）、ｗに５加算する（Ｓ８０８）。つまり、データ転送量予測部１３１は、サブマクロブロックの幅を５画素広げる。
【０２６６】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は（Ｓ８０６でＮＯ）、ｗに加算することなく、次の処理（Ｓ８１０）へ進む。
【０２６７】
次に、データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する（Ｓ８１０）。
【０２６８】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合（Ｓ８１０でＹＥＳ）、ｈに５加算する（Ｓ８１２）。つまり、データ転送量予測部１３１は、サブマクロブロックの高さを５画素広げる。
【０２６９】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は（Ｓ８１０でＮＯ）、ｈに加算することなく、次の処理（Ｓ８１４）へ進む。
【０２７０】
次に、データ転送量予測部１３１は、ｗにｈを乗じた値を予測データ量として計算する（Ｓ８１４）。
【０２７１】
以上により、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）は、終了する。
【０２７２】
以上のように、本実施の形態３における画像復号装置１００によれば、動き情報を用いて、予測データ量を計算する。これにより、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２７３】
また、参照画像の位置が小数画素位置である場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２７４】
これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０２７５】
（実施の形態４）
本実施の形態４では、データ転送量予測部１３１は、動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、参照画像のアドレスがアライメントされたアドレスではないと判断した場合、参照画像のアドレスをアライメントされたアドレスに補正して、予測データ量を計算する。
【０２７６】
つまり、外部メモリ１１０から読み出す参照画像データのアドレスが、アライメントされていないアドレスであった場合、アライメントされたアドレスから読み出さなければならない。そのため、その分、余分に外部メモリ１１０から読み出す必要がある。動きベクトルが分かれば、参照画像を読み出す外部メモリ１１０のアドレスも計算できるために、アドレスのアラインも考慮してデータ量を予測することができる。このように、動きベクトル自体を完全に算出して用いる予測方法では、参照画像の転送データ量を完全に予測することができる。
【０２７７】
なお、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ、ｒｅｆ＿ｉｄｘ及びｍｖｄなどの動きベクトルを算出するために必要なパラメータを復号制御部１３０に送る。
【０２７８】
ここで、本実施の形態４では、図１９に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図１９のＳ６１４及びＳ６１６）が、実施の形態３と異なる処理であり、それ以外の処理は実施の形態３と同様であるため、当該処理（図１９のＳ６１４及びＳ６１６）の詳細について、以下に説明する。
【０２７９】
まず、データ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）の詳細について、説明する。
【０２８０】
図２２は、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２８１】
まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ９０２）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２８２】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘ＝０とする（Ｓ９０４）。
【０２８３】
そして、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘのサブマクロブロックの分割ブロックの動きベクトルを算出する（Ｓ９０６）。つまり、まず、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝０のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０２８４】
そして、データ転送量予測部１３１は、マクロブロックタイプ、サブマクロブロック分割パターン、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘの分割ブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すｒｅｆ＿ｉｄｘから、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘの分割ブロックの動き補償に必要となる参照画像の外部メモリ１１０上のアドレスを算出する（Ｓ９０８）。なお、ｒｅｆ＿ｉｄｘは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２８５】
次に、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する（Ｓ９１０）。
【０２８６】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合（Ｓ９１０でＮＯ）、当該参照画像のアドレスをアライメントされたアドレスに補正する（Ｓ９１２）。
【０２８７】
ここで、データ転送量予測部１３１が、アライメントされた位置にない参照画像のアドレスをアライメントされたアドレスに補正することについて、以下に説明する。
【０２８８】
図２３は、本実施の形態４におけるデータ転送量予測部１３１が参照画像をアライメントされたアドレスに補正することを説明する図である。
【０２８９】
同図の（ａ）に示すように、外部メモリ１１０が、８バイトのメモリアライメント（８バイト転送のメモリ）の場合、１３×１３バイトの参照画像は、メモリアライメントの境界を跨いでいる。このような、メモリアライメントの境界を跨ぐようなアドレスの参照画像を転送する場合、アライメントされたアドレスから転送しなければならない。
【０２９０】
このため、同図の（ｂ）に示すように、参照画像のアドレスをアライメントされたアドレスに補正する必要がある。つまり、当該参照画像のデータ転送量は、１３×１３＝１６９バイトから、２４×１３＝３１２バイトに増加する。
【０２９１】
このように、データ転送量予測部１３１は、アライメントされた位置にない参照画像のアドレスを、アライメントされたアドレスに補正する。
【０２９２】
図２２に戻り、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合（Ｓ９１０でＹＥＳ）、次の処理（Ｓ９１４）へ進む。
【０２９３】
次に、データ転送量予測部１３１は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する（Ｓ９１４）。例えば、図２３に示された場合であれば、データ転送量予測部１３１は、当該参照画像のデータ転送量として、３１２バイトと算出する。
【０２９４】
そして、データ転送量予測部１３１は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する（Ｓ９１６）。
【０２９５】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘに１加算し（Ｓ９１８）、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいか否かを判断する（Ｓ９２０）。
【０２９６】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値以下であると判断した場合（Ｓ９２０でＮＯ）、予測データ量を計算する処理（Ｓ９０６〜Ｓ９１８）を繰り返す。つまり、データ転送量予測部１３１は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理（Ｓ９０６〜Ｓ９１８）を行う。
【０２９７】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいと判断した場合は（Ｓ９２０でＹＥＳ）、処理を終了する。
【０２９８】
以上により、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）は、終了する。
【０２９９】
次に、データ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）の詳細について、説明する。
【０３００】
図２４は、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０３０１】
まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトルを算出する（Ｓ１００２）。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０３０２】
そして、データ転送量予測部１３１は、マクロブロックタイプ、マクロブロック分割パターン、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すｒｅｆ＿ｉｄｘから、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動き補償に必要となる参照画像の外部メモリ１１０上のアドレスを算出する（Ｓ１００４）。なお、ｒｅｆ＿ｉｄｘは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０３０３】
次に、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する（Ｓ１００６）。
【０３０４】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合（Ｓ１００６でＮＯ）、当該参照画像のアドレスをアライメントされたアドレスに補正する（Ｓ１００８）。
【０３０５】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合（Ｓ１００６でＹＥＳ）、次の処理（Ｓ１０１０）へ進む。
【０３０６】
次に、データ転送量予測部１３１は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する（Ｓ１０１０）。例えば、図２３に示された場合であれば、データ転送量予測部１３１は、当該参照画像のデータ転送量として、３１２バイトと算出する。
【０３０７】
そして、データ転送量予測部１３１は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する（Ｓ１０１２）。
【０３０８】
以上により、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）は、終了する。
【０３０９】
以上のように、本実施の形態４における画像復号装置１００によれば、参照画像のアドレスがアライメントされたアドレスではない場合、参照画像のアドレスをアライメントされたアドレスに補正して予測データ量を計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０３１０】
（実施の形態５）
本実施の形態５では、ブロック決定部１３２は、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、予測データ量を用いて、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる符号化画像データの複数のマクロブロックを決定する。
【０３１１】
ここで、本実施の形態５では、図６に示されたブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１４）の詳細について、以下に説明する。
【０３１２】
図２５は、本実施の形態５におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０３１３】
まず、ブロック決定部１３２は、所定の数のマクロブロックの予測データ量の平均値を算出する（Ｓ１１０２）。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部１３２が既に復号順序を決定したマクロブロックでもよい。
【０３１４】
そして、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックの数を決定する（Ｓ１１０４）。
【０３１５】
図２６は、本実施の形態５におけるブロック決定部１３２が並列に復号するマクロブロックの数を決定することを説明する図である。
【０３１６】
同図に示すように、マクロブロックの復号順序は、同図に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。つまり、１つ下の行の２列左側のマクロブロックを、３行単位で並列に復号処理していく。
【０３１７】
図２に記載の復号順序では、並列に復号できるマクロブロックがマクロブロック復号部の数よりも多くなることがあった。図２６に記載の復号順序は、マクロブロック復号部が３つしかない点を考慮して、並列に復号するマクロブロック数を３つ以下になるようにしている。
【０３１８】
しかし、図２６に記載の順序で復号する場合、並列に復号するマクロブロックが、多くのデータを外部メモリ１１０から取得しなければならないマクロブロックであった場合、その瞬間に多くのデータを転送しなければならない。
【０３１９】
そこで、この方法では、同じ番号が付いたマクロブロックを並列に復号するマクロブロックの候補として、まず、これらの復号候補マクロブロックの、予測転送データ量の総和を求める。
【０３２０】
求めた予測転送データ量が、予め定めた転送データ量よりも大きいかどうかを判定し、小さい場合は、これら３つの復号候補マクロブロックを復号する。しかし、大きい場合は、復号候補マクロブロックのうち、どれか１つを復号しないようにする。復号しないマクロブロックはどれを選んでも良いが、例えば、最も下の行に位置するマクロブロックは復号しないようにする。
【０３２１】
つまり、並列に復号するマクロブロックを２つまでに抑えることで、外部メモリ１１０から転送データ量を抑える。復号されなかったマクロブロックは、次のマクロブロックの復号タイミングで、復号候補マクロブロックに加えて、再び復号するかどうかの判定を行っていく。
【０３２２】
例えば、図２６の６番の番号が付いた３つのマクロブロックが、復号候補マクロブロックであった場合を考える。まず、６番のマクロブロックの、予測転送データ量の総和を求め、所定の転送データ量よりも小さければ、この３つのマクロブロックを復号する。所定の転送データ量よりも大きい場合は、上から３行目にある６番のマクロブロックを除き、上から１行目と２行目にある６番のマクロブロックを復号するようにする。
【０３２３】
次に、１行目と２行目にある７番のマクロブロックと、先ほど復号されなかった、３行目の６番のマクロブロックとを復号候補マクロブロックとして、復号するマクロブロックを決定していく。
【０３２４】
なお、並列に復号するマクロブロックの数を２つに抑えても、求めた予測転送データ量が、予め定めた転送データ量よりも大きい場合は、さらに並列に復号するマクロブロックの数を減らしてもよい。
【０３２５】
このようにすることで、外部メモリ１１０の転送データ量が予め定めた転送データ量よりも大きくなることを防ぐことができる。また、これによって、外部メモリ１１０を、他の装置と共用していた場合に、本実施の形態５の画像復号装置がメモリのバンド幅を占有して、他の装置が外部メモリ１１０からデータを転送できないという状態を防ぐことができる。
【０３２６】
以上により、本実施の形態５におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０３２７】
以上のように、本実施の形態５における画像復号装置１００によれば、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる複数のマクロブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、マクロブロックの数を変更することができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０３２８】
（実施の形態６）
上記実施の形態１では、マクロブロックの復号処理を行う前にマクロブロックの復号順序を決定したが、参照画像のデータ転送量の予測だけを予め行っておき、マクロブロックの並列復号を行いながら、復号順序を適応的に決定していっても良い。例えば、実施の形態１の画像復号装置１００以外の他の装置も、外部メモリ１１０にアクセスするのであれば、当該他の装置が外部メモリ１１０にアクセスする時は、参照画像のデータ転送量が小さいマクロブロックを選んで復号する。こうすれば、画像復号装置１００も他の装置も同時に動作させることができる。
【０３２９】
このように、本実施の形態６では、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、外部メモリ１１０から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３０】
つまり、ブロック決定部１３２は、当該差分データ量が大きい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３１】
また、ブロック決定部１３２は、当該差分データ量が小さい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３２】
図２７は、本実施の形態６における他の装置２００が画像復号装置１００の外部メモリ１１０にアクセスする場合の機能構成を示すブロック図である。ここで、画像復号装置１００は、図３で説明した実施の形態１における画像復号装置１００と同じ構成であるため、詳細な説明は省略する。
【０３３３】
同図に示すように、他の装置２００は、画像復号装置１００の外部メモリ１１０にアクセスする、画像復号装置１００とは異なる装置である。なお、他の装置２００は、１つの装置であってもよいし、複数の装置であってもよい。
【０３３４】
また、他の装置２００は、例えば、画像符号化ブロック、音声復号ブロック、音声符号化ブロック、プロセッサブロック、又はグラフィックアクセラレータなどである。なお、他の装置２００は、画像復号装置１００と外部メモリ１１０を共用するものであれば、どのような装置であってもよい。
【０３３５】
外部メモリ転送量制御部３００は、他の装置２００から、他の装置２００と外部メモリ１１０との間のデータ転送量を受け取る。そして、外部メモリ転送量制御部３００は、外部メモリ１１０が持つ最大転送性能（転送量）から、他の装置２００のデータ転送量を差し引いたデータ転送量を、画像復号装置１００の復号制御部１３０に通知する。
【０３３６】
復号制御部１３０は、予測データ量がこの通知されたデータ転送量に近付くように、マクロブロックを選択して復号処理を実施していく。
【０３３７】
次に、ブロック決定部１３２が並列復号するマクロブロックを決定する処理について、説明する。
【０３３８】
ここで、本実施の形態６では、図６に示されたブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１４）の詳細について、以下に説明する。
【０３３９】
図２８は、本実施の形態６におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０３４０】
同図に示すように、まず、外部メモリ転送量制御部３００が、他の装置２００から、他の装置２００と外部メモリ１１０との間のデータ転送量を取得する（Ｓ１２０２）。
【０３４１】
そして、外部メモリ転送量制御部３００は、外部メモリ１１０から読み出されるデータ転送可能な最大データ転送量から他の装置２００のデータ転送量を差し引いた差分データ量を算出し（Ｓ１２０４）、ブロック決定部１３２に送信する。
【０３４２】
ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する（Ｓ１２０６）。具体的には、ブロック決定部１３２は、当該合計値が、差分データ量以下になるように、当該複数のマクロブロックを決定する。
【０３４３】
以上により、本実施の形態６におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０３４４】
以上のように、本実施の形態６における画像復号装置１００によれば、並列に復号が行われる複数のブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のブロックを決定する。つまり、差分データ量が大きい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が大きくなるように、差分データ量が小さい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、予め設定されたメモリバンド幅で画像データの並列復号を行うことができる。
【０３４５】
具体的には、他の装置２００のデータ転送量が大きい時は、画像復号装置１００のデータ転送量が小さくなるように制御するため、他の装置２００の転送を妨げることがなく、画像復号装置１００と同時に他の装置２００を動作させても、他の装置２００の処理を遅延させることなく、動作させることができる。
【０３４６】
また、他の装置２００のデータ転送量が小さい時は、画像復号装置１００のデータ転送量が大きくなるように制御するため、復号処理における参照画像の転送を高速に行うことができ、画像復号処理自体を高速化できる。
【０３４７】
なお、外部メモリ転送量制御部３００が無く、復号制御部１３０と他の装置２００とが直接通信するようにしてもよい。つまり、ブロック決定部１３２が、他の装置２００から、他の装置２００のデータ転送量を取得し、差分データ量を算出することにしてもよい。
【０３４８】
また、上記実施の形態１〜６において、画像復号装置１００は、構成要件の全部あるいはその一部を１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路であってもよいし、ネットワークやバスを介して接続される独立した装置であっても構わない。
【０３４９】
図２９は、画像復号装置１００を制御する集積回路４００の一例を示す図である。
【０３５０】
同図に示すように、集積回路４００は、図３に示された画像復号装置１００の外部メモリ１１０以外の機能を備えている。
【０３５１】
なお、集積回路４００は、各処理部が個別に１チップ化されても良いし、一部又は全ての処理部を含むように１チップ化されても良い。
【０３５２】
また、集積回路４００は、隣接ＭＢ情報メモリ１８０やデブロッキングフィルタ部を含まないことにしてもよい。つまり、集積回路４００は、ストリームパーサ部１２０、データ転送量予測部１３１、ブロック決定部１３２、及びマクロブロック復号部１４０〜１６０を備えていればよく、これらの構成により本発明の目的を達成することができる。
【０３５３】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３５４】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０３５５】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０３５６】
以上、本発明に係る画像復号装置について、上記実施の形態を用いて説明したが、本発明は、これに限定されるものではない。
【０３５７】
例えば、上記実施の形態１〜６では、３つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は３個でなくてもよい。特許文献１には、３個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、３個以上のマクロブロック復号部を用いても復号することができる。また、ブロック決定部１３２は、マクロブロックの復号順序を決定する場合も、並列に復号するマクロブロックの、参照画像の予測転送データ量の平均値が、各マクロブロックの予測転送データ量の平均値となるべく近くなるように、マクロブロックを選択すればよい。このため、マクロブロック復号部の個数とは関係なく復号処理を行うことができる。
【０３５８】
また、上記実施の形態１〜６では、ストリームパーサ部１２０が完全に可変長復号した復号ストリームを外部メモリ１１０に出力している。しかし、ストリームパーサ部１２０では、参照画像のデータ転送量の予測に必要なパラメータだけを復号さえできればよく、必ずしも完全に可変長復号した復号ストリームを出力する必要はない。例えば、ストリームパーサ部１２０では必要なパラメータの復号だけを行っておき、マクロブロックの並列復号を行うために必要な部分だけを復号した中間ストリームを外部メモリ１１０に出力する方法が考えられる。この場合、マクロブロック復号部１４０〜１６０には、中間ストリームを復号するために可変長復号部を搭載させる必要がある。
【０３５９】
また、上記実施の形態１〜６では、データ転送量予測部１３１がピクチャ内の全てのマクロブロックについて予測データ量を計算した後に、ブロック決定部１３２は、並列復号するマクロブロックを決定することとした。しかし、データ転送量予測部１３１が一部のマクロブロックの予測データ量を計算するごとに、ブロック決定部１３２は、並列復号するマクロブロックを決定することにしてもよい。
【０３６０】
また、上記実施の形態１〜６では、データ転送量予測部１３１は、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得することとした。しかし、データ転送量予測部１３１は、スライスヘッダに含まれるｓｌｉｃｅ_ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得することにしてもよい。この場合、正確ではないが、Ｉスライス、Ｐスライス、及びＢスライスのマクロブロックは、それぞれＩマクロブロックタイプ、Ｐマクロブロックタイプ、及びＢマクロブロックタイプであるとして、復号対象のマクロブロックのマクロブロックタイプを取得することができる。
【０３６１】
また、上記実施の形態１〜６では、復号制御部１３０のデータ転送量予測部１３１が予測データ量を計算することにしたが、ストリームパーサ部１２０が予測データ量を計算することにしてもよい。
【０３６２】
また、上記実施の形態１〜６では、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、復号制御部１３０、マクロブロック復号部１４０〜１６０、デブロッキングフィルタ部１７０、及び隣接ＭＢ情報メモリ１８０を備えており、復号制御部１３０は、データ転送量予測部１３１及びブロック決定部１３２を備えていることとした。しかし、デブロッキングフィルタ部１７０及び隣接ＭＢ情報メモリ１８０は、本発明の目的を達成するために必須の構成ではない。つまり、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、データ転送量予測部１３１、ブロック決定部１３２、及びマクロブロック復号部１４０〜１６０を備えていればよく、これらの構成により本発明の目的を達成することができる。
【０３６３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【０３６４】
また、発明の趣旨を逸脱しない範囲で、上記複数の実施の形態における各構成要素を任意に組み合わせても良い。
【産業上の利用可能性】
【０３６５】
本発明にかかる画像復号装置は、高速に動画像データを復号することが可能な特徴を有する。このため、ＭＰＥＧ等の圧縮画像を扱うデジタルテレビ、ＤＶＤおよびＢｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標）レコーダ等として有用である。また、放送局などの高速な処理が必要とされる機器の用途にも応用できる。
【符号の説明】
【０３６６】
１００    画像復号装置
１１０    外部メモリ
１２０    ストリームパーサ部
１３０    復号制御部
１３１    データ転送量予測部
１３２    ブロック決定部
１４０、１５０、１６０  マクロブロック復号部
１４１    逆量子化部
１４２    逆直交変換部
１４３    画面内予測部
１４４    動き補償予測部
１４５    加算回路
１７０    デブロッキングフィルタ部
１８０    隣接ＭＢ情報メモリ
２００    他の装置
３００    外部メモリ転送量制御部
４００    集積回路
５０１    スタートコード
５０２    ＳＰＳヘッダ
５０３    ＰＰＳヘッダ
５０４    スライスヘッダ
５０５    スライスデータ
【図１】
2010052837.tif 000003
【図２】
2010052837.tif 000004
【図３】
2010052837.tif 000005
【図４】
2010052837.tif 000006
【図５】
2010052837.tif 000007
【図６】
2010052837.tif 000008
【図７】
2010052837.tif 000009
【図８】
2010052837.tif 000010
【図９】
2010052837.tif 000011
【図１０】
2010052837.tif 000012
【図１１】
2010052837.tif 000013
【図１２】
2010052837.tif 000014
【図１３】
2010052837.tif 000015
【図１４】
2010052837.tif 000016
【図１５】
2010052837.tif 000017
【図１６】
2010052837.tif 000018
【図１７】
2010052837.tif 000019
【図１８】
2010052837.tif 000020
【図１９】
2010052837.tif 000021
【図２０】
2010052837.tif 000022
【図２１】
2010052837.tif 000023
【図２２】
2010052837.tif 000024
【図２３】
2010052837.tif 000025
【図２４】
2010052837.tif 000026
【図２５】
2010052837.tif 000027
【図２６】
2010052837.tif 000028
【図２７】
2010052837.tif 000029
【図２８】
2010052837.tif 000030
【図２９】
2010052837.tif 000031
【手続補正書】
【提出日】平成22年6月4日(2010.6.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化画像データの復号を行う画像復号装置、画像復号方法、集積回路及びプログラムに関するものである。
【背景技術】
【０００２】
動画像データを圧縮符号化（以下、単に「符号化」と呼ぶ）する技術として、画面間差分を用いたＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）符号化方式が用いられることが多い。
【０００３】
ＭＰＥＧ符号化方式では、現在のフレームと時間的に近いフレームは似ているという、動画像の性質を利用している。この性質を利用して、時間的に近いフレームから現在のフレームを予測し、入力画像と予測画像との差分だけを符号化すれば、データ量を削減できる。
【０００４】
一般的には、フレームの中の物体が動いたり、カメラがパンをしたりすることで、フレーム間で動きがあるため、動きの分だけをずらした位置の画像を参照画像として予測画像を生成している。
【０００５】
こうして生成した予測画像と入力画像との差分と、この動き情報（これを動きベクトルという）を符号化することで、高い圧縮率を実現している。このような処理を動き補償予測という。
【０００６】
動き補償予測を含めて復号処理または符号化処理は、１つの画面（ピクチャ）内を所定画素数のブロック（輝度成分：１６画素×１６画素）に分割して行われる。この画素ブロックのことをマクロブロックという。復号時には、マクロブロック毎に動きベクトルに応じた位置の画像を参照画像としてメモリから取得して動き補償予測を行う。なお、１画素のデータ量は１バイトである。
【０００７】
ＭＰＥＧ符号化方式としては、従来からＭＰＥＧ−２（ＩＳＯ／ＩＥＣ１３８１８−２）やＭＰＥＧ−４（ＩＳＯ／ＩＥＣ１４４９６−２）が使用されている。加えて、近年ではＨ．２６４／ＭＰＥＧ−４  ＡＶＣ（ＩＳＯ／ＩＥＣ１４４９６−１０）（以下、単に「Ｈ．２６４」と呼ぶ）やＶＣ−１（ＳＭＰＴＥ  ４２１Ｍ）といった新しい符号化方式が用いられるようになってきている。
【０００８】
特にＨ．２６４に代表される新しい符号化方式は、従来のＭＰＥＧ−２の２〜４倍の圧縮率を実現し、フルＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）（１９２０画素×１０８０画素）といった高精細画像の圧縮に多く用いられている。
【０００９】
一方、近年では、４Ｋ２Ｋ（４０９６画素×２０４８画素）といったフルＨＤを超える、超高精細なディスプレイの開発が行われており、このような超高精細な画像データを扱うことが今後必要となってくる。
【００１０】
しかし、４Ｋ２Ｋの画像データはフルＨＤの約４倍のデータ量となり、４Ｋ２Ｋの画像データを復号するには、フルＨＤの画像データを復号する場合と比べて、約４倍近くの演算性能とメモリバンド幅が必要となる。４Ｋ２Ｋといった超高精細な画像データに対応した画像復号装置を実現するためには、この高い演算性能とメモリバンド幅をいかに実現するかが課題となる。
【００１１】
演算性能の課題に対しては、既存のフルＨＤ対応の画像復号装置を複数用いて並列処理することで、高い演算性能を実現する方法が考えられる。しかし、Ｈ．２６４に代表される新しい符号化方式では、あるマクロブロックを符号化する際、その周辺隣接マクロブロックとの相関を利用して圧縮率を高めている。
【００１２】
図１は、Ｈ．２６４における周辺隣接マクロブロックとの相関を利用して圧縮率を高める復号方法を説明する図である。
【００１３】
同図に示すように、ある任意のマクロブロックＰを復号するには、左隣接マクロブロックＡ、左上隣接マクロブロックＤ、上隣接マクロブロックＢ、右上隣接マクロブロックＣの、４つの隣接マクロブロックの処理結果を参照する必要がある。
【００１４】
つまり、対象のマクロブロックを復号するためには、予めこれらの隣接マクロブロックを復号しておかなければならず、この依存関係が並列化する上での課題であった。
【００１５】
そこで、従来、この依存関係を解決しながら画像データを並列復号する画像復号装置が提案されている（例えば、特許文献１参照）。
【００１６】
図２は、従来の画像復号装置の復号方法を説明する図である。
【００１７】
同図に示す各ブロックはピクチャ内のマクロブロックを表し、マクロブロックに付けられた番号は処理時間を示し、同じ番号のマクロブロックが同時に並列に復号されている。
【００１８】
図２に示すように、ピクチャの左上のマクロブロックから処理を開始し、ある任意のマクロブロックを処理する場合、そのマクロブロックの、１つ下の行の２列左側に位置するマクロブロックを並列に復号する。これよって、位置による依存関係を解決している。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００６−１２９２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、従来の画像復号装置では、瞬間的なデータ転送量が増加し、画像復号装置に用いるメモリに必要なメモリバンド幅が大きくなってしまうという課題がある。
【００２１】
つまり、並列に復号するマクロブロックが、多くのデータをメモリから取得しなければならないマクロブロックであった場合、従来の画像復号装置では、瞬間的に多くのデータをメモリから転送することになる。そのため、この大きなデータ量の転送が可能なメモリを用いる必要があり、これによって、画像復号装置に用いるメモリに必要なメモリバンド幅が大きくなってしまう。
【００２２】
このため、例えば、画像復号装置が他の装置とメモリを共用している場合であって、画像復号装置の瞬間的なデータ転送量の増加があった場合には、他の装置が使用可能なメモリバンド幅が小さくなり、他の装置の転送を妨げてしまうことから、他の装置の処理を遅延させてしまう。このように、従来の画像復号装置では、メモリバンド幅について課題を抱えている。
【００２３】
本発明は、上記従来の課題を解決するものであり、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を可能とする画像復号装置、画像復号方法、集積回路及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
上記目的を達成するために、本発明の一態様に係る画像復号装置は、所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置であって、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部と、前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に前記記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部とを備える。
【００２５】
これによれば、参照画像の枚数から参照画像の予測データ量を計算し、並列に復号が行われる符号化画像データの複数のブロックを決定することで、複数のブロックを並列に復号する。例えば、復号に２枚の参照画像が必要な場合は、予測データ量は、１枚の参照画像が必要な場合の２倍になる。つまり、例えばＨ．２６４などのＭＰＥＧ符号化方式で符号化された画像データを並列に復号する場合に、予め、メモリから取得するデータ量を正確に予測することができるため、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００２６】
これにより、例えば、画像復号装置が他の装置と記憶部を共用している場合であって、他の装置のデータ転送量が大きい場合には、画像復号装置のデータ転送量が小さくなるようにすることで、他の装置の転送を妨げることができ、他の装置の処理へ影響を与えない。また、他の装置のデータ転送量が小さい場合には、画像復号装置のデータ転送量が大きくなるようにすることで、画像復号装置の画像復号処理自体を高速化することができる。
【００２７】
また、好ましくは、前記プリデコード部は、前記符号化画像データに含まれる、前記ブロックであるマクロブロックのマクロブロックタイプ情報を前記参照情報として可変長復号し、前記データ転送量予測部は、前記マクロブロックタイプ情報で示される前記参照画像の枚数に当該参照画像のデータ量を乗じて、前記予測データ量を計算する。
【００２８】
これによれば、参照画像の枚数を示す参照情報として、マクロブロックタイプ情報の復号が行われる。例えば、Ｉマクロブロックタイプのマクロブロックの復号に必要な参照画像は０枚であり、Ｐマクロブロックタイプのマクロブロックの復号に必要な参照画像は１枚であり、Ｂマクロブロックタイプのマクロブロックの復号に必要な参照画像は２枚である。これにより、簡易に参照画像の枚数を取得して、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００２９】
また、好ましくは、前記ブロック復号部が前記符号化画像データの復号を行う際に、前記符号化画像データの各ブロックをさらに小さなブロックに分割した分割ブロックを単位とした前記参照画像を参照する場合、前記プリデコード部は、さらに、前記符号化画像データに含まれる、前記分割ブロックのサイズを示すブロック分割パターン情報の復号を行い、前記データ転送量予測部は、前記ブロック分割パターン情報で示されるサイズの前記分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、前記整数画素位置の参照画像のデータ量と前記小数画素位置の参照画像のデータ量とに重み付けを行うことで、前記予測データ量を計算する。
【００３０】
これによれば、分割ブロック単位で参照画像を参照する場合、分割ブロックごとに、さらに整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。これにより、整数画素位置の参照画像のデータ量だけではなく、小数画素位置の参照画像のデータ量も考慮した予測データ量を計算することができる。このため、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。したがって、分割ブロック単位で参照画像を参照する必要がある場合でも、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００３１】
また、好ましくは、前記データ転送量予測部は、前記分割ブロックごとに、水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とし、前記第１参照画像、前記第２参照画像、前記第３参照画像及び前記第４参照画像のデータ量に、それぞれ前記第１確率、前記第２確率、前記第３確率及び前記第４確率を乗じて加算することで、前記予測データ量を計算する。
【００３２】
これによれば、水平位置又は垂直位置が整数画素位置又は小数画素位置の参照画像が参照される確率を用いて、予測データ量を計算する。これにより、水平位置又は垂直位置が整数画素位置か小数画素位置かを考慮して計算が行われるため、予測データ量をさらに正確に計算することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００３３】
また、前記プリデコード部は、前記ブロックごとに、さらに、復号対象の前記ブロックの画像と参照画像との間の動き量を示す動き情報の復号を行い、前記データ転送量予測部は、前記ブロックごとに、さらに前記動き情報を用いて、前記予測データ量を計算することにしてもよい。
【００３４】
これによれば、動き情報を用いて、予測データ量を計算する。これにより、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００３５】
また、好ましくは、前記データ転送量予測部は、前記動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、前記参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を前記予測データ量として計算する。
【００３６】
これによれば、参照画像の位置が小数画素位置である場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００３７】
また、好ましくは、前記データ転送量予測部は、前記動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、前記参照画像のアドレスがアライメントされたアドレスではないと判断した場合、前記参照画像のアドレスをアライメントされたアドレスに補正して前記予測データ量を計算する。
【００３８】
これによれば、参照画像のアドレスがアライメントされたアドレスではない場合、参照画像のアドレスをアライメントされたアドレスに補正して予測データ量を計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００３９】
また、好ましくは、前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、前記符号化画像データのブロックの復号順序を入れ替えることで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。
【００４０】
これによれば、ブロックの復号順序を入れ替えることで、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロックの復号順序を入れ替えることができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００４１】
また、前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データのブロック数を変更することで、並列に復号が行われる前記符号化画像データの複数のブロックを決定することにしてもよい。
【００４２】
これによれば、並列に復号が行われるブロック数を変更することで、記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロック数を変更することができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００４３】
また、好ましくは、前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。
【００４４】
これによれば、複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる複数のブロックを決定する。これにより、並列復号が行われるブロックの予測データ量が平均的な値となる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【００４５】
また、好ましくは、前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が、前記記憶部から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。前記ブロック決定部は、前記差分データ量が大きい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。また、前記ブロック決定部は、前記差分データ量が小さい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する。
【００４６】
これによれば、並列に復号が行われる複数のブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のブロックを決定する。つまり、差分データ量が大きい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が大きくなるように、差分データ量が小さい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、予め設定されたメモリバンド幅で画像データの並列復号を行うことができる。
【００４７】
なお、本発明は、このような画像復号装置として実現することができるだけでなく、その装置を構成する各処理部を備える集積回路として実現したり、当該各処理部の処理をステップとする方法として実現したりすることができる。さらに、本発明は、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【発明の効果】
【００４８】
本発明の画像復号装置によれば、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。これにより、例えば、画像復号装置が他の装置とメモリを共用している場合であって、他の装置のデータ転送量が大きい場合には、画像復号装置のデータ転送量が小さくなるようにすることで、他の装置の転送を妨げることができ、他の装置の処理へ影響を与えない。また、他の装置のデータ転送量が小さい場合には、画像復号装置のデータ転送量が大きくなるようにすることで、画像復号装置の画像復号処理自体を高速化することができる。
【図面の簡単な説明】
【００４９】
【図１】図１は、Ｈ．２６４における周辺隣接マクロブロックとの相関を利用して圧縮率を高める復号方法を説明する図である。
【図２】図２は、従来の画像復号装置の復号方法を説明する図である。
【図３】図３は、実施の形態１における画像復号装置の機能構成を示すブロック図である。
【図４】図４は、実施の形態１におけるマクロブロック復号部の機能構成を示すブロック図である。
【図５】図５は、一般的なＨ．２６４の、符号化ストリームの構成を示す図である。
【図６】図６は、実施の形態１における画像復号装置の動作の一例を示すフローチャートである。
【図７】図７は、実施の形態１におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図８】図８は、Ｐスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【図９】図９は、Ｂスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【図１０】図１０は、実施の形態１におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図１１】図１１は、実施の形態１におけるマクロブロック復号部がマクロブロックの復号を行う処理の一例を示すフローチャートである。
【図１２】図１２は、実施の形態２におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図１３】図１３は、マクロブロック分割パターンを説明する図である。
【図１４】図１４は、サブマクロブロック分割パターンを説明する図である。
【図１５】図１５は、Ｐマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【図１６】図１６は、Ｂマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【図１７】図１７は、実施の形態２におけるＨ．２６４の動き補償予測における小数位置画素の、参照画像の画素値の計算方法を示す図である。
【図１８】図１８は、実施の形態２におけるＨ．２６４の動き補償予測の単位ブロックと予測データ量との関係を示す図である。
【図１９】図１９は、実施の形態３におけるデータ転送量予測部が予測データ量を計算する処理の一例を示すフローチャートである。
【図２０】図２０は、実施の形態３におけるデータ転送量予測部が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２１】図２１は、実施の形態３におけるデータ転送量予測部が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２２】図２２は、実施の形態４におけるデータ転送量予測部が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２３】図２３は、実施の形態４におけるデータ転送量予測部が参照画像をアライメントされたアドレスに補正することを説明する図である。
【図２４】図２４は、実施の形態４におけるデータ転送量予測部が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【図２５】図２５は、実施の形態５におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図２６】図２６は、実施の形態５におけるブロック決定部が並列に復号するマクロブロックの数を決定することを説明する図である。
【図２７】図２７は、実施の形態６における他の装置が画像復号装置の外部メモリにアクセスする場合の機能構成を示すブロック図である。
【図２８】図２８は、実施の形態６におけるブロック決定部が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【図２９】図２９は、画像復号装置を制御する集積回路の一例を示す図である。
【発明を実施するための形態】
【００５０】
Ｈ．２６４符号化方式に対応した画像復号装置に本発明を適用した実施の形態について、図面を参照しながら説明する。なお、本実施の形態では、Ｈ．２６４符号化方式に対応した画像復号装置を示したが、動き補償予測を行う動画像符号化方式に対応した画像復号装置であれば、同様の形態で実現することができる。
【００５１】
（実施の形態１）
図３は、本発明の実施の形態１における画像復号装置１００の機能構成を示すブロック図である。
【００５２】
画像復号装置１００は、所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、ブロックごとに行う装置である。ここで、所定の画素数のブロックとは、マクロブロックである。
【００５３】
同図に示すように、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、復号制御部１３０、マクロブロック復号部１４０、マクロブロック復号部１５０、マクロブロック復号部１６０、デブロッキングフィルタ部１７０、及び隣接ＭＢ情報メモリ１８０を備えている。
【００５４】
隣接ＭＢ情報メモリ１８０には、マクロブロックの復号処理に必要となる周辺隣接マクロブロックの情報が格納されている。
【００５５】
外部メモリ１１０には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像が格納されている。符号化ストリームは、入力される符号化画像データである。復号ストリームは、ストリームパーサ部１２０によって可変長復号された符号化画像データである。参照画像は、符号化画像データの復号が行われる際に参照される画像である。復号画像は、符号化画像データが復号された画像である。
【００５６】
なお、外部メモリ１１０は、請求の範囲に記載の「記憶部」に相当する。
【００５７】
なお、外部メモリ１１０は、本実施の形態の画像復号装置１００とは異なる他の装置のメモリと共用されてもよい。その場合、外部メモリ１１０には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像以外のデータも格納されることになる。
【００５８】
ストリームパーサ部１２０は、符号化ストリームの可変長復号を行い、復号ストリームを生成すると共に、マクロブロック復号時に外部メモリ１１０から取得する参照画像のデータ量を予測するために必要なパラメータを、復号制御部１３０に送る。
【００５９】
具体的には、ストリームパーサ部１２０は、Ｈ．２６４で符号化された符号化ストリームを外部メモリ１１０から読み出し、可変長復号を行い、復号した復号ストリームを外部メモリ１１０に書き戻す。この時、本実施の形態１では、可変長復号して得られたパラメータのうち、少なくとも、符号化画像データの復号が行われる際にマクロブロックごとに参照される参照画像の枚数を示す参照情報が、復号制御部１３０に送られる。ここで、参照情報は、符号化画像データに含まれるマクロブロックのマクロブロックタイプ情報である。
【００６０】
なお、ストリームパーサ部１２０は、請求の範囲に記載の「プリデコード部」に相当する。
【００６１】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、復号制御部１３０からの指示に従って、外部メモリ１１０から復号ストリームを読み出し、並列にマクロブロックの復号処理を行い、再構成した画素データをデブロッキングフィルタ部１７０に出力する。この時、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、外部メモリ１１０から動き補償予測に用いる参照画像の画素データの読出しを必要に応じて行う。
【００６２】
なお、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれは、請求の範囲に記載の「ブロック復号部」に相当する。
【００６３】
デブロッキングフィルタ部１７０は、再構成した画素データに対してブロックノイズを除去するデブロッキングフィルタ処理を行い、復号画像を外部メモリ１１０に出力する。この時、以降の復号処理で参照画像として用いられる復号画像は、参照画像としても外部メモリに保存される。
【００６４】
復号制御部１３０は、ストリームパーサ部１２０、マクロブロック復号部１４０、マクロブロック復号部１５０、マクロブロック復号部１６０、及びデブロッキングフィルタ部１７０に対して、処理開始指示を出して画像復号処理全体の制御を行っている。
【００６５】
また、復号制御部１３０は、データ転送量予測部１３１及びブロック決定部１３２を備えている。
【００６６】
データ転送量予測部１３１は、マクロブロックごとに、マクロブロックタイプ情報を用いて、符号化画像データの復号が行われる際に外部メモリ１１０から読み出される参照画像の予測データ量を計算する。つまり、データ転送量予測部１３１は、ストリームパーサ部１２０から送られてきたパラメータを用いて、マクロブロック復号処理の動き補償予測の時に、外部メモリ１１０から取得を要する参照画像のデータ量をマクロブロック単位で予測する。
【００６７】
具体的には、データ転送量予測部１３１は、マクロブロックタイプ情報で示される参照画像の枚数に当該参照画像のデータ量を乗じて、予測データ量を計算する。
【００６８】
ブロック決定部１３２は、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、データ転送量予測部１３１が計算した予測データ量を用いて、並列に復号が行われる複数のマクロブロックを決定する。具体的には、ブロック決定部１３２は、この予測データ量に基づいて、マクロブロック復号時に、外部メモリ１１０から取得する参照画像のデータ量が瞬間的に増大しないように、予めマクロブロックの復号順序を決定しておく。
【００６９】
予め決定した復号順序に従って、復号制御部１３０は、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のマクロブロック復号処理を制御している。復号制御部１３０は、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０に復号開始指示を出す場合、隣接ＭＢ情報メモリ１８０から、復号対象のマクロブロックの復号に必要な周辺隣接マクロブロックの情報を読み出して、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０に渡す。
【００７０】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、ブロック決定部１３２が決定した複数のマクロブロックを並列に復号する。マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０がマクロブロックの復号処理を終えると、復号したマクロブロックの情報のうち、以降の復号処理に周辺隣接マクロブロック情報として必要となる情報を、復号制御部１３０に渡す。復号制御部１３０はこれを隣接ＭＢ情報メモリ１８０に格納する。
【００７１】
次に、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０の構成について、詳細に説明する。なお、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、共に同じ構成であるため、以下、マクロブロック復号部１４０の構成について説明を行う。
【００７２】
図４は、本実施の形態１におけるマクロブロック復号部１４０の機能構成を示すブロック図である。
【００７３】
同図に示すように、マクロブロック復号部１４０は、逆量子化部１４１、逆直交変換部１４２、画面内予測部１４３、動き補償予測部１４４及び加算回路１４５を備えている。
【００７４】
逆量子化部１４１は、外部メモリ１１０から読み出した復号ストリームから、量子化された係数データを読み出して逆量子化を行い、係数データを逆直交変換部１４２に出力する。
【００７５】
逆直交変換部１４２は、係数データに対して逆直交変換を行い、空間領域の画素データを生成する。
【００７６】
画面内予測部１４３と動き補償予測部１４４は、復号ストリームから読み出される予測モードによって、どちらか一方が起動され、予測画像の画素データを生成する。
【００７７】
画面内予測部１４３は、予測モードがイントラ予測であった場合に起動され、画面内予測を行うことで、予測画像の画素データを生成する。
【００７８】
動き補償予測部１４４は、予測モードがインター予測であった場合に起動され、復号された動きベクトルに応じた参照画像の画素データを取得して、動き補償予測を行うことで、予測画像の画素データを生成する。
【００７９】
なお、画面内予測部１４３及び動き補償予測部１４４は、画面内予測及び動き補償予測を、復号制御部１３０から渡された周辺隣接マクロブロックの情報を用いて行う。
【００８０】
加算回路１４５は、逆直交変換部１４２が出力した画素データと、画面内予測部１４３または動き補償予測部１４４が出力した予測画像の画素データとを加算して、再構成された画素データを出力する。
【００８１】
次に、一般的なＨ．２６４符号化ストリームの構成について説明する。
【００８２】
図５は、一般的なＨ．２６４符号化ストリームの構成を示す図である。
【００８３】
同図に示すように、符号化ストリームの先頭にはＳＰＳ（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ５０２があり、その後にＰＰＳ（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ）ヘッダ５０３、スライスヘッダ５０４、スライスデータ５０５が続く。
【００８４】
ＳＰＳヘッダ５０２、ＰＰＳヘッダ５０３、及びスライスヘッダ５０４の先頭にはデータの区切りを示すスタートコード（ＳＣ：Ｓｔａｒｔ  Ｃｏｄｅ）５０１が挿入されている。そのため、符号化ストリームに対してスタートコードサーチを行い、スタートコード５０１に続くデータを解析することで、符号化ストリームの中からＳＰＳヘッダ５０２、ＰＰＳヘッダ５０３、及びスライスヘッダ５０４を探索することができる。
【００８５】
ピクチャの先頭にはＰＰＳヘッダ５０３が存在し、次のＰＰＳヘッダ５０３が現れるまでの一連のデータが１ピクチャ分のデータになっている。１ピクチャのデータの中には、スライスヘッダ５０４とスライスデータ５０５のセットが、そのピクチャに存在するスライスの数分存在する。
【００８６】
次に、画像復号装置１００の動作について、詳細に説明する。
【００８７】
図６は、本発明の実施の形態１における画像復号装置１００の動作の一例を示すフローチャートである。
【００８８】
まず、ストリームパーサ部１２０は、外部メモリ１１０から符号化ストリームを読み出し、ＳＰＳヘッダ５０２の復号（Ｓ１０２）、ＰＰＳヘッダ５０３の復号（Ｓ１０４）、スライスヘッダ５０４の復号（Ｓ１０６）を順次行う。
【００８９】
そして、ストリームパーサ部１２０は、スライスヘッダ５０４の復号（Ｓ１０６）が完了すると、スライスデータに含まれるマクロブロックの可変長復号のみを行い、復号ストリームを生成する（Ｓ１０８）。
【００９０】
ここで、ストリームパーサ部１２０が生成する復号ストリームには、以降の処理でマクロブロックを並列に復号する時にマクロブロックの先頭が分かるように、マクロブロックの先頭にＭＢ（Ｍａｃｒｏｂｌｏｃｋ）スタートコードが挿入されている。本実施の形態では、ＭＢスタートコードを０ｘ０００００１Ｆ０とした。なお、ＭＢスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
【００９１】
また、復号ストリームの生成と合わせて、ストリームパーサ部１２０は、復号したパラメータのうち、ｍｂ＿ｔｙｐｅ（Ｍａｃｒｏｂｌｏｃｋ  Ｔｙｐｅ）、ｓｕｂ＿ｍｂ＿ｔｙｐｅ（Ｓｕｂ−Ｍａｃｒｏｂｌｏｃｋ  Ｔｙｐｅ）と、ｒｅｆ＿ｉｄｘ（Ｒｅｆｅｒｅｎｃｅ  Ｉｎｄｅｘ）やｍｖｄ（Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｄｉｆｆｅｒｅｎｃｅ）などの動きベクトルを算出するために必要なパラメータを復号制御部１３０に送る。
【００９２】
なお、本実施の形態１では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅを復号制御部１３０に送る。また、ｍｂ＿ｔｙｐｅは、請求の範囲に記載の「マクロブロックタイプ情報」に包含される。
【００９３】
ストリームパーサ部１２０は、１スライス分の可変長復号を完了すると、復号を行ったスライスがピクチャの終端であるかどうかを判断する（Ｓ１１０）。ピクチャに含まれるスライスの数は、ＰＰＳヘッダ５０３にあるｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１を復号することで分かる。このため、復号したスライスの数から１を引いた数と、ｎｕｍ＿ｓｌｉｃｅ＿ｇｒｏｕｐｓ＿ｍｉｎｕｓ１が一致すれば、ピクチャの終端であると判断する。
【００９４】
ストリームパーサ部１２０は、ピクチャの終端でないと判断した場合は（Ｓ１１０でＮＯ）、ピクチャの終端になるまで、スライスヘッダ５０４の復号（Ｓ１０６）及びスライスデータ５０５の可変長復号（Ｓ１０８）を順次行う。
【００９５】
そして、ストリームパーサ部１２０がピクチャの終端であると判断した場合は（Ｓ１１０でＹＥＳ）、復号制御部１３０のデータ転送量予測部１３１が、マクロブロックの復号処理の、動き補償予測の時に、外部メモリ１１０から取得しなければならない参照画像の予測データ量を、マクロブロック単位で計算する（Ｓ１１２）。データ転送量予測部１３１が予測データ量を計算する処理の詳細については、後ほど述べる。
【００９６】
データ転送量予測部１３１がマクロブロック毎の参照画像のデータ転送量の予測を１ピクチャ分終えると、ブロック決定部１３２は、その予測値に従って、並列に復号が行われる複数のマクロブロックを決定する（Ｓ１１４）。具体的には、ブロック決定部１３２は、マクロブロックの復号順序を決定する。ブロック決定部１３２が並列復号するマクロブロックを決定する処理の詳細については、後ほど述べる。
【００９７】
ブロック決定部１３２が１ピクチャ分のマクロブロックの復号順序を決定すると、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、それぞれ復号制御部１３０の指示に従って、外部メモリ１１０から復号ストリームを読み出し、復号対象マクロブロックの復号処理を並列に行う（Ｓ１１６）。マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理の詳細については、後ほど述べる。
【００９８】
復号制御部１３０は、ブロック決定部１３２が決定した復号順序に従って、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０にマクロブロック単位で復号開始の指示を出している。
【００９９】
マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０が復号対象マクロブロックの復号を完了すると、復号制御部１３０は、復号が行われたマクロブロックがピクチャの終端であるか否かを判断する（Ｓ１１８）。
【０１００】
そして、復号制御部１３０が、復号が行われたマクロブロックがピクチャの終端でないと判断した場合（Ｓ１１８でＮＯ）、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０は、ピクチャの終端になるまでマクロブロックの復号処理（Ｓ１１６）を行う。
【０１０１】
復号制御部１３０が、復号が行われたマクロブロックがピクチャの終端であると判断した場合（Ｓ１１８でＹＥＳ）、デブロッキングフィルタ部１７０が１ピクチャ分の再構成画素データに対して、デブロッキングフィルタ処理を行う（Ｓ１２０）。
【０１０２】
デブロッキングフィルタ部１７０がデブロッキングフィルタ処理を完了すると、次に復号制御部１３０が、デブロッキングフィルタ処理を行ったピクチャがストリームの終端であるか否かを判断する（Ｓ１２２）。
【０１０３】
後続にストリームが続いている場合は、復号制御部１３０は、当該ピクチャがストリームの終端でないと判断し（Ｓ１２２でＮＯ）、ストリームパーサ部１２０がＰＰＳヘッダ５０３の復号（Ｓ１０４）を再度行うことにより、符号化ストリームを次々と復号していく。
【０１０４】
復号制御部１３０が、当該ピクチャがストリームの終端であると判断した場合は（Ｓ１２２でＹＥＳ）、処理を終了する。
【０１０５】
以上により、画像復号装置１００が符号化ストリームを復号する処理は終了する。
【０１０６】
次に、データ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）の詳細について、説明する。
【０１０７】
本実施の形態では、マクロブロックレイヤにあるｍｂ＿ｔｙｐｅを用いたマクロブロックタイプによる予測方法により、データ転送量予測部１３１が予測データ量を計算する。
【０１０８】
図７は、本実施の形態１におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０１０９】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ２０２）。なお、ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０１１０】
ここで、マクロブロックのマクロブロックタイプは、Ｉマクロブロックタイプ、Ｐマクロブロックタイプ、及びＢマクロブロックタイプの３種類がある。このため、データ転送量予測部１３１が、ｍｂ＿ｔｙｐｅから、この３種類のマクロブロックタイプのうちのどのマクロブロックタイプを取得するかを、以下に説明する。
【０１１１】
図８は、Ｐスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【０１１２】
図９は、Ｂスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
【０１１３】
ストリームパーサ部１２０で復号された、復号対象のマクロブロックを含むスライスのスライスヘッダ５０４に含まれるｓｌｉｃｅ_ｔｙｐｅから、当該スライスは、Ｉスライス、Ｐスライス、又はＢスライスのどのスライスタイプかが得られる。
【０１１４】
そして、図８に示すように、ＰスライスはＰマクロブロックとＩマクロブロックとで構成されている。具体的には、ｍｂ＿ｔｙｐｅが「０〜４」のマクロブロックは、Ｐマクロブロックであり、ｍｂ＿ｔｙｐｅが「５〜２５」のマクロブロックは、Ｉマクロブロックである。
【０１１５】
このため、データ転送量予測部１３１は、Ｐスライスのマクロブロックのｍｂ＿ｔｙｐｅが「０〜４」の場合は、当該マクロブロックはＰマクロブロックタイプであり、ｍｂ＿ｔｙｐｅが「５〜２５」の場合は、当該マクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１６】
また、図９に示すように、ＢスライスはＢマクロブロックとＩマクロブロックとで構成されている。具体的には、ｍｂ＿ｔｙｐｅが「０〜２２」のマクロブロックは、Ｂマクロブロックであり、ｍｂ＿ｔｙｐｅが「２３〜２５」のマクロブロックは、Ｉマクロブロックである。
【０１１７】
このため、データ転送量予測部１３１は、Ｂスライスのマクロブロックのｍｂ＿ｔｙｐｅが「０〜２２」の場合は、当該マクロブロックはＢマクロブロックタイプであり、ｍｂ＿ｔｙｐｅが「２３〜２５」の場合は、当該マクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１８】
また、ＩスライスはＩマクロブロックのみで構成されている。このため、データ転送量予測部１３１は、ＩスライスのマクロブロックはＩマクロブロックタイプであるとして、マクロブロックタイプを取得する。
【０１１９】
図７に戻り、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ２０４）。
【０１２０】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｉ」）、予測データ量は０バイトであると計算する（Ｓ２０６）。
【０１２１】
つまり、Ｉマクロブロックタイプのマクロブロックは、画面内予測によって予測画像を生成して、動き補償予測は行われないため、参照画像データを必要としない。
【０１２２】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｐ」）、予測データ量は２５６バイトであると計算する（Ｓ２０８）。
【０１２３】
つまり、Ｐマクロブロックタイプのマクロブロックは、時間的に近い１枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック１つ分、つまり２５６バイト（１６画素×１６画素×１）の参照画像データを必要とする。
【０１２４】
データ転送量予測部１３１は、取得したマクロブロックタイプがＢマクロブロックタイプであると判断した場合（Ｓ２０４で「Ｂ」）、予測データ量は５１２バイトであると計算する（Ｓ２１０）。
【０１２５】
つまり、Ｂマクロブロックタイプのマクロブロックは、時間的に近い２枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック２つ分、つまり５１２バイト（１６画素×１６画素×２）の参照画像データを必要とする。
【０１２６】
このように、マクロブロックタイプによって動き補償予測に必要となる参照画像の予測データ量を計算することができる。つまり、本実施の形態のマクロブロックタイプによる予測方法では、この予測データ量を外部メモリ１１０から取得する参照画像の予測データ量であるとする。
【０１２７】
以上により、本実施の形態１におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０１２８】
次に、ブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）の詳細について、説明する。
【０１２９】
本実施の形態では、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、マクロブロックの復号順序を入れ替えることで、並列に復号が行われる複数のマクロブロックを決定する。
【０１３０】
図１０は、本実施の形態１におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０１３１】
まず、ブロック決定部１３２は、所定の数のマクロブロックの予測データ量の平均値を算出する（Ｓ３０２）。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部１３２が既に復号順序を決定したマクロブロックでもよい。
【０１３２】
そして、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックを選択する（Ｓ３０４）。ここでは、所定の数のマクロブロックは、ピクチャ内の全てのマクロブロックであることとする。
【０１３３】
以下に、このブロック決定部１３２が予測データ量の平均値を算出し（Ｓ３０２）、並列に復号するマクロブロックを選択する（Ｓ３０４）処理について、具体的に説明する。
【０１３４】
マクロブロックの復号順序は図２に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。しかし、本実施の形態では、マクロブロック復号部は３つしかないため、並列に復号可能なマクロブロックが３個より多い場合、同じ番号のマクロブロックを一度には復号することができない。
【０１３５】
例えば、１１番のマクロブロックは６個あるが、マクロブロック復号部の数が３個であるため、２回に分けて復号する必要がある。どのマクロブロックを始めに復号し、どのマクロブロックを後で復号するかの判断に、参照画像の予測データ量を用いる。
【０１３６】
つまり、ブロック決定部１３２は、並列に復号するマクロブロックの、参照画像の予測データ量の平均値が、各マクロブロックの予測データ量の平均値となるべく近くなるように、並列に復号するマクロブロックを選択する。これは、ブロック決定部１３２が、並列に復号するマクロブロックの全組み合わせパターンを求め、各組み合わせパターンで参照画像の予測データ量の平均値を算出して、これが全体の平均値と最も近くなる組み合わせを求めることで行う。
【０１３７】
そして、ブロック決定部１３２は、選択した複数のマクロブロックが並列に復号されるように、マクロブロックの復号順序を入れ替える（Ｓ３０６）。
【０１３８】
このようにすることで、外部メモリ１１０から瞬間的に多くのデータが転送されることを防ぎ、小さなメモリバンド幅で、Ｈ．２６４で符号化された画像データを並列復号することができる。
【０１３９】
なお、Ｈ．２６４の符号化画像を復号する上で必要となるデータ転送は、動き補償予測のための参照画像の取得転送以外にもある。しかし、この参照画像の取得転送が復号に必要なデータ転送量の大部分を占めているため、参照画像取得のデータ転送量の瞬間的な増加を抑えることで、外部メモリ１１０のメモリバンド幅を抑えることができる。
【０１４０】
以上により、ブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０１４１】
次に、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理（図６のＳ１１６）の詳細について、説明する。
【０１４２】
図１１は、本実施の形態１におけるマクロブロック復号部１４０がマクロブロックの復号を行う処理の一例を示すフローチャートである。なお、マクロブロック復号部１５０及びマクロブロック復号部１６０がマクロブロックの復号を行う処理は、マクロブロック復号部１４０がマクロブロックの復号を行う処理と同様であるため、省略する。
【０１４３】
まず、同図に示すように、マクロブロック復号部１４０は、復号制御部１３０からマクロブロック復号開始の指示を受けると、外部メモリ１１０から復号対象マクロブロックの復号ストリームを読み出す（Ｓ４０２）。
【０１４４】
次に、マクロブロック復号部１４０は、復号ストリームから予測モードを読み出し、予測モードがイントラ予測かインター予測かを判断する（Ｓ４０４）。
【０１４５】
マクロブロック復号部１４０は、予測モードがイントラ予測であると判断した場合（Ｓ４０４で「イントラ予測」）、画面内予測部１４３が起動して、画面内予測処理を行い、予測ブロックの画素データを生成する（Ｓ４０６）。
【０１４６】
マクロブロック復号部１４０は、予測モードがインター予測であると判断した場合（Ｓ４０４で「インター予測」）、動き補償予測部１４４が起動して、動き補償予測処理を行い、予測ブロックの画素データを生成する（Ｓ４０８）。
【０１４７】
次に、マクロブロック復号部１４０は、復号ストリームから予測誤差データを読み出し、逆量子化部１４１で逆量子化し、逆直交変換部１４２で逆直交変換することで、予測ブロックに対する予測誤差画素データを生成する（Ｓ４１０）。
【０１４８】
最後に、マクロブロック復号部１４０は、予測ブロックの画素データと、予測誤差画素データを加算回路１４５で加算して再構成画素データを得る（Ｓ４１２）。
【０１４９】
このように、１マクロブロックの復号処理が完了すると、マクロブロック復号部１４０は、復号制御部１３０にマクロブロック完了を通知する（Ｓ４１４）。また、それとともに、マクロブロック復号部１４０は、復号したマクロブロックの情報のうち、後の復号に周辺隣接マクロブロック情報として使用する情報を、復号制御部１３０に渡す。
【０１５０】
以上により、マクロブロック復号部１４０、マクロブロック復号部１５０及びマクロブロック復号部１６０のそれぞれが、マクロブロックの復号を行う処理（図６のＳ１１６）は、終了する。
【０１５１】
以上のことから、本実施の形態における画像復号装置１００によれば、参照画像の枚数から参照画像の予測データ量を計算し、並列に復号が行われる符号化画像データの複数のブロックを決定することで、複数のブロックを並列に復号する。つまり、符号化画像データを並列に復号する場合に、予め、メモリから取得する予測データ量を正確に計算することができるため、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、並列に復号するブロックを適切に選択することができる。
【０１５２】
また、参照画像の枚数を示す参照情報として、マクロブロックタイプ情報の復号が行われる。これにより、簡易に参照画像の枚数を取得することができる。
【０１５３】
また、ブロックの復号順序を入れ替えることで、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロックの復号順序を入れ替えることができる。なお、この方法に最も効果がある符号化画像データであったとすれば、外部メモリ１１０のメモリバンド幅を最大で半分近く低減することが可能となる。
【０１５４】
また、複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる複数のブロックを決定する。これにより、並列復号が行われるブロックの予測データ量が平均的な値となる。
【０１５５】
これらにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０１５６】
（実施の形態２）
本実施の形態２では、符号化画像データの復号が行われる際に、符号化画像データの各マクロブロックをさらに小さなブロックに分割した分割ブロックを単位とした参照画像を参照する場合、ストリームパーサ部１２０は、符号化画像データに含まれる、分割ブロックのサイズを示すブロック分割パターン情報を、さらに復号制御部１３０に送る。
【０１５７】
そして、データ転送量予測部１３１は、ブロック分割パターン情報で示されるサイズの分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。
【０１５８】
なお、ブロック分割パターン情報は、マクロブロックの分割パターンであるマクロブロック分割パターンと、サブマクロブロックの分割パターンであるサブマクロブロック分割パターンとを包含している。つまり、本実施の形態２では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ及びｓｕｂ＿ｍｂ＿ｔｙｐｅを復号制御部１３０に送る。詳細については、後述する。
【０１５９】
ここで、本実施の形態２では、図６に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１２）の詳細について、以下に説明する。
【０１６０】
図１２は、本実施の形態２におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０１６１】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ５０２）。詳細については、実施の形態１の図７でのマクロブロックタイプを取得する処理（図７のＳ２０２）と同様であるため、省略する。
【０１６２】
そして、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ５０４）。
【０１６３】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ５０４で「Ｉ」）、予測データ量は０バイトであると計算し（Ｓ５０６）、処理を終了する。
【０１６４】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプ又はＢマクロブロックタイプであると判断した場合（Ｓ５０４で「ＰまたはＢ」）、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する（Ｓ５０８）。
【０１６５】
図１３は、マクロブロック分割パターンを説明する図である。
【０１６６】
同図に示すように、ｍｂ＿ｔｙｐｅによって、１６画素×１６画素、１６画素×８画素、８画素×１６画素、８画素×８画素の４種類のマクロブロック分割パターンが定義されている。
【０１６７】
また、マクロブロックが分割された各分割ブロックには、ｍｂＰａｒｔＩｄｘ（Ｍａｃｒｏｂｌｏｃｋ  Ｐａｒｔｉｏｔｉｏｎ  Ｉｎｄｅｘ）と呼ばれる番号が付けられている。例えば、８画素×８画素のマクロブロック分割パターンであれば、マクロブロックは、ｍｂＰａｒｔＩｄｘが０〜３の４つの分割ブロックに分割されている。
【０１６８】
そして、図８及び図９に示されたように、ｍｂ＿ｔｙｐｅの値から、マクロブロック分割パターンを取得することができる。つまり、図８及び図９に示された「Ｎａｍｅ  ｏｆ  ｍｂ＿ｔｙｐｅ」はマクロブロック分割パターンを示している。また、「ＮｕｍＭｂＰａｒｔ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの個数を示し、「ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの幅を示し、「ＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）」はマクロブロックの分割ブロックの高さを示している。
【０１６９】
このように、ストリームパーサ部１２０が、符号化ストリームに含まれるｍｂ＿ｔｙｐｅを復号することで、データ転送量予測部１３１は、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する。
【０１７０】
図１２に戻り、データ転送量予測部１３１は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する（Ｓ５１０）。
【０１７１】
データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「８×８」）、ｉｄｘ＝０とする（Ｓ５１２）。ここでは、ｉｄｘは、０以上の整数である。
【０１７２】
次に、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ５１４）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０１７３】
図１４は、サブマクロブロック分割パターンを説明する図である。
【０１７４】
同図に示すように、８画素×８画素のマクロブロック分割パターンの場合には、８画素×８画素の分割ブロックであるサブマクロブロックをさらに分割する分割パターンである、８画素×８画素、８画素×４画素、４画素×８画素、４画素×４画素のサブマクロブロック分割パターンが定義されている。
【０１７５】
また、サブマクロブロックが分割された各分割ブロックには、ｓｕｂＭｂＰａｒｔＩｄｘ（Ｓｕｂ−Ｍａｃｒｏｂｌｏｃｋ  Ｐａｒｔｉｏｔｉｏｎ  Ｉｎｄｅｘ）と呼ばれる番号が付けられている。例えば、４画素×４画素のサブマクロブロック分割パターンであれば、サブマクロブロックは、ｓｕｂＭｂＰａｒｔＩｄｘが０〜３の４つの分割ブロックに分割されている。
【０１７６】
図１５は、Ｐマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【０１７７】
図１６は、Ｂマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
【０１７８】
これらの図に示すように、ｍｂ＿ｔｙｐｅの値によって、分割ブロックのサイズが８画素×８画素であった場合には、その８画素×８画素のサブマクロブロックごとに、さらにｓｕｂ＿ｍｂ＿ｔｙｐｅが定められている。そして、ｓｕｂ＿ｍｂ＿ｔｙｐｅの値から、サブマクロブロック分割パターンを取得することができる。
【０１７９】
つまり、これらの図に示された「Ｎａｍｅ  ｏｆ  ｓｕｂ＿ｍｂ＿ｔｙｐｅ」はサブマクロブロック分割パターンを示している。また、「ＮｕｍＭｂＰａｒｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの個数を示し、「ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの幅を示し、「ＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」はサブマクロブロックの分割ブロックの高さを示している。
【０１８０】
このように、ストリームパーサ部１２０が、符号化ストリームに含まれるｓｕｂ＿ｍｂ＿ｔｙｐｅを復号することで、データ転送量予測部１３１は、ｓｕｂ＿ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのサブマクロブロック分割パターンを取得する。
【０１８１】
図１２に戻り、データ転送量予測部１３１は、取得したサブマクロブロック分割パターンがどのサブマクロブロック分割パターンかを判断する（Ｓ５１６）。
【０１８２】
データ転送量予測部１３１は、サブマクロブロック分割パターンが８画素×８画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「８×８」）、予測データ量は１２１バイトであると計算する（Ｓ５１８）。
【０１８３】
また、データ転送量予測部１３１は、サブマクロブロック分割パターンが４画素×４画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「４×４」）、予測データ量は４９バイト×４であると計算する（Ｓ５２０）。
【０１８４】
データ転送量予測部１３１は、サブマクロブロック分割パターンが８画素×４画素又は４画素×８画素のサブマクロブロック分割パターンであると判断した場合（Ｓ５１６で「８×４または４×８」）、予測データ量は７７バイト×２であると計算する（Ｓ５２２）。
【０１８５】
そして、データ転送量予測部１３１は、ｉｄｘに１加算し（Ｓ５２４）、ｉｄｘが３よりも大きいか否かを判断する（Ｓ５２６）。
【０１８６】
データ転送量予測部１３１は、ｉｄｘが３以下であると判断した場合（Ｓ５２６でＮＯ）、予測データ量を計算する処理（Ｓ５１４〜Ｓ５２４）を繰り返す。つまり、データ転送量予測部１３１は、全てのサブマクロブロックの分割ブロックについて、予測データ量を計算する。
【０１８７】
また、データ転送量予測部１３１は、マクロブロック分割パターンが１６画素×１６画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「１６×１６」）、予測データ量は３６１バイトであると計算する（Ｓ５２８）。
【０１８８】
また、データ転送量予測部１３１は、マクロブロック分割パターンが１６画素×８画素又は８画素×１６画素のマクロブロック分割パターンであると判断した場合（Ｓ５１０で「１６×８または８×１６」）、予測データ量は２０９バイト×２であると計算する（Ｓ５３０）。
【０１８９】
ここで、データ転送量予測部１３１がマクロブロック分割パターン又はサブマクロブロック分割パターンから予測データ量を計算する処理（Ｓ５１８〜Ｓ５２２、Ｓ５２８、Ｓ５３０）について、詳細に説明する。
【０１９０】
Ｈ．２６４では、１／４画素精度で動き補償予測を行うため、小数位置画素の参照画像を必要とする場合がある。この場合、画素と画素との間の小数位置の画素値を計算するために、余分に参照画像データを外部メモリ１１０から読み出す必要がある。この点を考慮したのが、マクロブロック分割パターン又はサブマクロブロック分割パターンを用いた予測方法である。
【０１９１】
図１７は、本実施の形態２におけるＨ．２６４の動き補償予測における小数位置画素の、参照画像の画素値の計算方法を示す図である。
【０１９２】
同図に示すように、画素と画素との中間に位置する１／２位置画素の画素値は、６タップのＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタ演算によって計算される。そのため、１／２位置画素の画素値を計算するためには、周辺隣接の整数位置の６画素が必要となる。
【０１９３】
例えば、動きベクトルが水平方向と垂直方向の両方で小数位置を指している場合、１６画素×１６画素の参照画像を生成するには、水平方向、垂直方向にそれぞれ余分に５画素必要となり、２１画素×２１画素の参照画像データが必要となる。
【０１９４】
また、動きベクトルが水平方向又は垂直方向のいずれか一方で小数位置を指している場合、１６画素×１６画素の参照画像を生成するには、水平方向、垂直方向のいずれか一方に余分に５画素必要となり、１６画素×２１画素又は２１画素×１６画素の参照画像データが必要となる。
【０１９５】
１／４位置画素の画素値は、同図に示す通り、隣接する整数位置画素または１／２位置画素の画素値の平均をとって算出する。このため、１／４位置画素の画素値を計算するためには、１／２位置画素の画素値を計算する場合と同じデータ量の参照画像データが必要となる。
【０１９６】
このように動きベクトルが小数位置を指す場合、画素値計算のために余分に参照画像が必要となるため、動きベクトルによって外部メモリ１１０から取得する参照画像のデータ量は異なる。
【０１９７】
また、Ｈ．２６４では、マクロブロックの大きさである１６画素×１６画素だけでなく、１６画素×８画素、８画素×１６画素、８画素×８画素、８画素×４画素、４画素×８画素、４画素×４画素のブロック単位で動き補償予測が可能である。どの単位で分割するかをマクロブロック単位に自由に選択・組み合わせることが可能になっている。
【０１９８】
１６画素×１６画素よりも細かい単位で動き補償予測する場合でも、動き補償予測する上で小数位置画素の参照画像が必要となると、動き補償予測の単位ブロックに対して水平方向、垂直方向にそれぞれ５画素分、余分に必要となる。そのため、動き補償予測する上で小数位置画素の参照画像が必要となる場合は、より細かい単位でマクロブロックを分割して動き補償予測を行うほど、余分に必要となる参照画像のデータ量が大きくなる。
【０１９９】
図１８は、本実施の形態２におけるＨ．２６４の動き補償予測の単位ブロックと予測データ量との関係を示す図である。
【０２００】
同図に示すように、「動き補償予測の単位ブロック」の欄は、動き補償予測の単位ブロックの大きさを示している。
【０２０１】
また、「水平、垂直位置の両方が整数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。なお、動きベクトルの水平、垂直位置の両方が整数画素位置を指す場合は、動き補償予測に必要な参照画像のデータ量は、動き補償予測の単位ブロックのデータ量と同じである。
【０２０２】
同様に、「水平位置が小数画素位置」の欄は、動き補償予測する上で、水平位置が小数画素位置の参照画像、及び垂直位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０３】
また、「垂直位置が小数画素位置」の欄は、動き補償予測する上で、垂直位置が小数画素位置の参照画像、及び水平位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０４】
また、「水平、垂直位置の両方が小数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が小数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
【０２０５】
「予測データ量」の欄は、実際に外部メモリ１１０から取得する参照画像の、データ量の予測値を示している。参照画像のデータ量の予測値は、動きベクトルの指す位置が整数位置、小数位置のどの位置も等確率であるとして算出している。
【０２０６】
つまり、図１７に示したように、「水平、垂直位置の両方が整数画素位置」の画素は、画素Ｃ、Ｄ、Ｉ、Ｌの４個である。また、「水平位置が小数画素位置」の画素は、画素ａ〜ｆの６個である。また、「垂直位置が小数画素位置」の画素は、ｇ〜ｌの６個である。また、「水平、垂直位置の両方が小数画素位置」の画素は、画素ｍ〜ｕの９個である。
【０２０７】
このため、「水平、垂直位置の両方が整数画素位置」、「水平位置が小数画素位置」、「垂直位置が小数画素位置」及び「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量を、それぞれ４：６：６：９で重み付けすることで、予測データ量が算出される。
【０２０８】
具体的には、データ転送量予測部１３１は、以下の式により、予測データ量を算出する。
【０２０９】
（「水平、垂直位置の両方が整数画素位置」の参照画像のデータ量×４
＋「水平位置が小数画素位置」の参照画像のデータ量×６
＋「垂直位置が小数画素位置」の参照画像のデータ量×６
＋「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量×９）／２５
【０２１０】
このように、データ転送量予測部１３１は、分割ブロックごとに、水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とした場合、第１参照画像、第２参照画像、第３参照画像及び第４参照画像のデータ量に、それぞれ第１確率、第２確率、第３確率及び第４確率を乗じて加算することで、予測データ量を計算する。
【０２１１】
図１２に戻り、次に、データ転送量予測部１３１は、復号対象のマクロブロックのマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ５３２）。
【０２１２】
データ転送量予測部１３１は、マクロブロックタイプがＰマクロブロックタイプであると判断した場合は（Ｓ５３２で「Ｐ」）、処理を終了する。
【０２１３】
また、データ転送量予測部１３１は、マクロブロックタイプがＢマクロブロックタイプであると判断した場合（Ｓ５３２で「Ｂ」）、予測データ量を２倍にし（Ｓ５３４）、処理を終了する。
【０２１４】
つまり、マクロブロック分割パターンを用いた予測方法では、マクロブロックレイヤにあるｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅからマクロブロックタイプとマクロブロックの分割パターンを求める。そして、マクロブロック内の各分割ブロックに対応する予測データ量の総和を、外部メモリ１１０から取得する参照画像のデータ量であるとする。
【０２１５】
この時、分割ブロックのマクロブロックタイプがＢマクロブロックタイプである場合は、参照画像が２枚必要であることを考慮して、図１８の予測データ量の、２倍の値を予測値とする。Ｐマクロブロックパターンである場合は、参照画像が１枚必要であることを考慮して、図１８の予測データ量を予測値とし、Ｉマクロブロックパターンである場合は、動き補償予測は行われないため予測値はゼロとして計算する。
【０２１６】
動き補償予測の単位ブロックが８画素×８画素よりも大きい場合は、ｍｂ＿ｔｙｐｅから得られるＭｂＰａｒｔＷｉｄｔｈとＭｂＰａｒｔＨｅｉｇｈｔが、分割ブロックの幅と高さになる。動き補償予測の単位ブロックが８画素×８画素以下の場合は、８画素×８画素ブロック毎にｓｕｂ＿ｍｂ＿ｔｙｐｅがある。この、ｓｕｂ＿ｍｂ＿ｔｙｐｅから得られるＭｂＰａｒｔＷｉｄｔｈとＭｂＰａｒｔＨｅｉｇｈｔが、分割ブロックの幅と高さになる。
【０２１７】
以上により、本実施の形態２におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０２１８】
以上のように、本実施の形態２における画像復号装置１００によれば、分割ブロック単位で参照画像を参照する場合、ブロック分割パターン情報を用いて、予測データ量を計算する。これにより、分割ブロック単位で参照画像を参照する必要がある場合でも、予測データ量を計算することができる。
【０２１９】
また、分割ブロックごとに、さらに整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。これにより、整数画素位置の参照画像のデータ量だけではなく、小数画素位置の参照画像のデータ量も考慮した予測データ量を計算することができる。このため、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２２０】
また、水平位置又は垂直位置が整数画素位置又は小数画素位置の参照画像が参照される確率を用いて、予測データ量を計算する。これにより、水平位置又は垂直位置が整数画素位置か小数画素位置かを考慮して計算が行われるため、予測データ量をさらに正確に計算することができる。
【０２２１】
したがって、分割ブロック単位で参照画像を参照する必要がある場合でも、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０２２２】
（実施の形態３）
本実施の形態３では、ストリームパーサ部１２０は、マクロブロックごとに、復号対象のマクロブロックの画像と参照画像との間の動き量を示す動き情報を、さらに復号制御部１３０に送り、データ転送量予測部１３１は、マクロブロックごとに、さらに動き情報を用いて、予測データ量を計算する。
【０２２３】
つまり、本実施の形態３では、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ及びｍｖｄを復号制御部１３０に送る。
【０２２４】
具体的には、データ転送量予測部１３１は、動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。
【０２２５】
ここで、本実施の形態３では、図６に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１２）の詳細について、以下に説明する。
【０２２６】
図１９は、本実施の形態３におけるデータ転送量予測部１３１が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、１つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部１３１は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
【０２２７】
同図に示すように、まず、データ転送量予測部１３１は、ストリームパーサ部１２０が復号したｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得する（Ｓ６０２）。詳細については、実施の形態１の図７でのマクロブロックタイプを取得する処理（図７のＳ２０２）と同様であるため、省略する。
【０２２８】
そして、データ転送量予測部１３１は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する（Ｓ６０４）。
【０２２９】
データ転送量予測部１３１は、取得したマクロブロックタイプがＩマクロブロックタイプであると判断した場合（Ｓ６０４で「Ｉ」）、予測データ量は０バイトであると計算し（Ｓ６０６）、処理を終了する。
【０２３０】
データ転送量予測部１３１は、取得したマクロブロックタイプがＰマクロブロックタイプ又はＢマクロブロックタイプであると判断した場合（Ｓ６０４で「ＰまたはＢ」）、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロック分割パターンを取得する（Ｓ６０８）。詳細については、実施の形態２の図１２でのマクロブロック分割パターンを取得する処理（図１２のＳ５０８）と同様であるため、省略する。
【０２３１】
そして、データ転送量予測部１３１は、ｉｄｘ＝０とする（Ｓ６１０）。
【０２３２】
そして、データ転送量予測部１３１は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する（Ｓ６１２）。
【０２３３】
データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素のマクロブロック分割パターンであると判断した場合（Ｓ６１２で「８×８」）、８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する（Ｓ６１４）。このデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
【０２３４】
また、データ転送量予測部１３１は、マクロブロック分割パターンが８画素×８画素以外のマクロブロック分割パターンであると判断した場合（Ｓ６１２で「８×８以外」）、当該マクロブロック分割パターンの場合の予測データ量を計算する（Ｓ６１６）。このデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
【０２３５】
そして、データ転送量予測部１３１は、ｉｄｘに１加算し（Ｓ６１８）、ｉｄｘが「マクロブロックの分割数−１」よりも大きいか否かを判断する（Ｓ６２０）。
【０２３６】
データ転送量予測部１３１は、ｉｄｘが「マクロブロックの分割数−１」以下であると判断した場合（Ｓ６２０でＮＯ）、予測データ量を計算する処理（Ｓ６１２〜Ｓ６１８）を繰り返す。つまり、データ転送量予測部１３１は、全てのマクロブロックの分割ブロックについて、予測データ量を計算する。
【０２３７】
データ転送量予測部１３１は、ｉｄｘが「マクロブロックの分割数−１」よりも大きいと判断した場合（Ｓ６２０でＹＥＳ）、処理を終了する。
【０２３８】
以上により、本実施の形態３におけるデータ転送量予測部１３１が予測データ量を計算する処理（図６のＳ１１２）は、終了する。
【０２３９】
次に、データ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）の詳細について、説明する。
【０２４０】
図２０は、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２４１】
復号対象のマクロブロックのマクロブロック分割パターンが８画素×８画素の場合は、８画素×８画素のサブマクロブロックにサブマクロブロック分割パターンが存在する。
【０２４２】
このため、まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ７０２）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２４３】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘ＝０とする（Ｓ７０４）。ここで、ｓｕｂＩｄｘは、０以上の整数である。
【０２４４】
そして、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割サイズを取得し、ｓｕｂＷ及びｓｕｂＨに代入する（Ｓ７０６）。
【０２４５】
具体的には、データ転送量予測部１３１は、図１５又は図１６に示された、サブマクロブロックの分割ブロックの幅である「ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」及びサブマクロブロックの分割ブロックの高さである「ＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）」を取得する。そして、データ転送量予測部１３１は、ＭｂＰａｒｔＷｉｄｔｈ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）をｓｕｂＷに代入し、及びＭｂＰａｒｔＨｅｉｇｈｔ（ｓｕｂ＿ｍｂ＿ｔｙｐｅ）をｓｕｂＨに代入する。
【０２４６】
そして、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘのサブマクロブロックの分割ブロックの動きベクトルを算出する（Ｓ７０８）。つまり、まず、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝０のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０２４７】
そして、データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置か否かを判断する（Ｓ７１０）。
【０２４８】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置であると判断した場合（Ｓ７１０でＹＥＳ）、ｓｕｂＷに５加算する（Ｓ７１２）。つまり、データ転送量予測部１３１は、サブマクロブロックの分割ブロックの幅を５画素広げる。
【０２４９】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は（Ｓ７１０でＮＯ）、ｓｕｂＷに加算することなく、次の処理（Ｓ７１４）へ進む。
【０２５０】
次に、データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する（Ｓ７１４）。
【０２５１】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合（Ｓ７１４でＹＥＳ）、ｓｕｂＨに５加算する（Ｓ７１６）。つまり、データ転送量予測部１３１は、サブマクロブロックの分割ブロックの高さを５画素広げる。
【０２５２】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は（Ｓ７１４でＮＯ）、ｓｕｂＨに加算することなく、次の処理（Ｓ７１８）へ進む。
【０２５３】
次に、データ転送量予測部１３１は、ｓｕｂＷにｓｕｂＨを乗じた値を予測データ量として計算する（Ｓ７１８）。
【０２５４】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘに１加算し（Ｓ７２０）、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいか否かを判断する（Ｓ７２２）。
【０２５５】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値以下であると判断した場合（Ｓ７２２でＮＯ）、予測データ量を計算する処理（Ｓ７０６〜Ｓ７２０）を繰り返す。つまり、データ転送量予測部１３１は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理（Ｓ７０６〜Ｓ７２０）を行う。
【０２５６】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいと判断した場合は（Ｓ７２２でＹＥＳ）、処理を終了する。
【０２５７】
以上により、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）は、終了する。
【０２５８】
次に、データ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）の詳細について、説明する。
【０２５９】
図２１は、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２６０】
復号対象のマクロブロックのマクロブロック分割パターンが８画素×８画素以外の場合は、サブマクロブロックにサブマクロブロック分割パターンが存在せず、サブマクロブロックが復号処理の最小単位である。
【０２６１】
このため、まず、データ転送量予測部１３１は、サブマクロブロックのサイズを取得し、ｗ及びｈに代入する（Ｓ８０２）。
【０２６２】
具体的には、データ転送量予測部１３１は、図８又は図９に示された、マクロブロックの分割ブロックの幅である「ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）」及びマクロブロックの分割ブロックの高さである「ＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）」を取得する。そして、データ転送量予測部１３１は、ＭｂＰａｒｔＷｉｄｔｈ（ｍｂ＿ｔｙｐｅ）をｗに代入し、及びＭｂＰａｒｔＨｅｉｇｈｔ（ｍｂ＿ｔｙｐｅ）をｈに代入する。
【０２６３】
そして、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトルを算出する（Ｓ８０４）。つまり、まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝０のサブマクロブロックの動きベクトルを算出する。
【０２６４】
そして、データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置か否かを判断する（Ｓ８０６）。
【０２６５】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置であると判断した場合（Ｓ８０６でＹＥＳ）、ｗに５加算する（Ｓ８０８）。つまり、データ転送量予測部１３１は、サブマクロブロックの幅を５画素広げる。
【０２６６】
データ転送量予測部１３１は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は（Ｓ８０６でＮＯ）、ｗに加算することなく、次の処理（Ｓ８１０）へ進む。
【０２６７】
次に、データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する（Ｓ８１０）。
【０２６８】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合（Ｓ８１０でＹＥＳ）、ｈに５加算する（Ｓ８１２）。つまり、データ転送量予測部１３１は、サブマクロブロックの高さを５画素広げる。
【０２６９】
データ転送量予測部１３１は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は（Ｓ８１０でＮＯ）、ｈに加算することなく、次の処理（Ｓ８１４）へ進む。
【０２７０】
次に、データ転送量予測部１３１は、ｗにｈを乗じた値を予測データ量として計算する（Ｓ８１４）。
【０２７１】
以上により、本実施の形態３におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）は、終了する。
【０２７２】
以上のように、本実施の形態３における画像復号装置１００によれば、動き情報を用いて、予測データ量を計算する。これにより、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２７３】
また、参照画像の位置が小数画素位置である場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
【０２７４】
これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０２７５】
（実施の形態４）
本実施の形態４では、データ転送量予測部１３１は、動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、参照画像のアドレスがアライメントされたアドレスではないと判断した場合、参照画像のアドレスをアライメントされたアドレスに補正して、予測データ量を計算する。
【０２７６】
つまり、外部メモリ１１０から読み出す参照画像データのアドレスが、アライメントされていないアドレスであった場合、アライメントされたアドレスから読み出さなければならない。そのため、その分、余分に外部メモリ１１０から読み出す必要がある。動きベクトルが分かれば、参照画像を読み出す外部メモリ１１０のアドレスも計算できるために、アドレスのアラインも考慮してデータ量を予測することができる。このように、動きベクトル自体を完全に算出して用いる予測方法では、参照画像の転送データ量を完全に予測することができる。
【０２７７】
なお、ストリームパーサ部１２０は、復号したパラメータのうち、少なくともｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ、ｒｅｆ＿ｉｄｘ及びｍｖｄなどの動きベクトルを算出するために必要なパラメータを復号制御部１３０に送る。
【０２７８】
ここで、本実施の形態４では、図１９に示されたデータ転送量予測部１３１が予測データ量を計算する処理（図１９のＳ６１４及びＳ６１６）が、実施の形態３と異なる処理であり、それ以外の処理は実施の形態３と同様であるため、当該処理（図１９のＳ６１４及びＳ６１６）の詳細について、以下に説明する。
【０２７９】
まず、データ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）の詳細について、説明する。
【０２８０】
図２２は、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０２８１】
まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックのｓｕｂ＿ｍｂ＿ｔｙｐｅから、サブマクロブロック分割パターンを取得する（Ｓ９０２）。なお、ｓｕｂ＿ｍｂ＿ｔｙｐｅは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２８２】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘ＝０とする（Ｓ９０４）。
【０２８３】
そして、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘのサブマクロブロックの分割ブロックの動きベクトルを算出する（Ｓ９０６）。つまり、まず、データ転送量予測部１３１は、ｓｕｂＭｂＰａｒｔＩｄｘ＝０のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０２８４】
そして、データ転送量予測部１３１は、マクロブロックタイプ、サブマクロブロック分割パターン、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘの分割ブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すｒｅｆ＿ｉｄｘから、ｓｕｂＭｂＰａｒｔＩｄｘ＝ｓｕｂＩｄｘの分割ブロックの動き補償に必要となる参照画像の外部メモリ１１０上のアドレスを算出する（Ｓ９０８）。なお、ｒｅｆ＿ｉｄｘは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０２８５】
次に、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する（Ｓ９１０）。
【０２８６】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合（Ｓ９１０でＮＯ）、当該参照画像のアドレスをアライメントされたアドレスに補正する（Ｓ９１２）。
【０２８７】
ここで、データ転送量予測部１３１が、アライメントされた位置にない参照画像のアドレスをアライメントされたアドレスに補正することについて、以下に説明する。
【０２８８】
図２３は、本実施の形態４におけるデータ転送量予測部１３１が参照画像をアライメントされたアドレスに補正することを説明する図である。
【０２８９】
同図の（ａ）に示すように、外部メモリ１１０が、８バイトのメモリアライメント（８バイト転送のメモリ）の場合、１３×１３バイトの参照画像は、メモリアライメントの境界を跨いでいる。このような、メモリアライメントの境界を跨ぐようなアドレスの参照画像を転送する場合、アライメントされたアドレスから転送しなければならない。
【０２９０】
このため、同図の（ｂ）に示すように、参照画像のアドレスをアライメントされたアドレスに補正する必要がある。つまり、当該参照画像のデータ転送量は、１３×１３＝１６９バイトから、２４×１３＝３１２バイトに増加する。
【０２９１】
このように、データ転送量予測部１３１は、アライメントされた位置にない参照画像のアドレスを、アライメントされたアドレスに補正する。
【０２９２】
図２２に戻り、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合（Ｓ９１０でＹＥＳ）、次の処理（Ｓ９１４）へ進む。
【０２９３】
次に、データ転送量予測部１３１は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する（Ｓ９１４）。例えば、図２３に示された場合であれば、データ転送量予測部１３１は、当該参照画像のデータ転送量として、３１２バイトと算出する。
【０２９４】
そして、データ転送量予測部１３１は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する（Ｓ９１６）。
【０２９５】
そして、データ転送量予測部１３１は、ｓｕｂＩｄｘに１加算し（Ｓ９１８）、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいか否かを判断する（Ｓ９２０）。
【０２９６】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値以下であると判断した場合（Ｓ９２０でＮＯ）、予測データ量を計算する処理（Ｓ９０６〜Ｓ９１８）を繰り返す。つまり、データ転送量予測部１３１は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理（Ｓ９０６〜Ｓ９１８）を行う。
【０２９７】
データ転送量予測部１３１は、ｓｕｂＩｄｘがｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの分割数から１差し引いた値よりも大きいと判断した場合は（Ｓ９２０でＹＥＳ）、処理を終了する。
【０２９８】
以上により、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１４）は、終了する。
【０２９９】
次に、データ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）の詳細について、説明する。
【０３００】
図２４は、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
【０３０１】
まず、データ転送量予測部１３１は、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトルを算出する（Ｓ１００２）。なお、データ転送量予測部１３１は、ストリームパーサ部１２０が復号制御部１３０に送ったｍｖｄから、当該動きベクトルを算出する。
【０３０２】
そして、データ転送量予測部１３１は、マクロブロックタイプ、マクロブロック分割パターン、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すｒｅｆ＿ｉｄｘから、ｍｂＰａｒｔＩｄｘ＝ｉｄｘのサブマクロブロックの動き補償に必要となる参照画像の外部メモリ１１０上のアドレスを算出する（Ｓ１００４）。なお、ｒｅｆ＿ｉｄｘは、ストリームパーサ部１２０が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部１２０から復号制御部１３０に予め送られている。
【０３０３】
次に、データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する（Ｓ１００６）。
【０３０４】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合（Ｓ１００６でＮＯ）、当該参照画像のアドレスをアライメントされたアドレスに補正する（Ｓ１００８）。
【０３０５】
データ転送量予測部１３１は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合（Ｓ１００６でＹＥＳ）、次の処理（Ｓ１０１０）へ進む。
【０３０６】
次に、データ転送量予測部１３１は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する（Ｓ１０１０）。例えば、図２３に示された場合であれば、データ転送量予測部１３１は、当該参照画像のデータ転送量として、３１２バイトと算出する。
【０３０７】
そして、データ転送量予測部１３１は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する（Ｓ１０１２）。
【０３０８】
以上により、本実施の形態４におけるデータ転送量予測部１３１が８画素×８画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理（図１９のＳ６１６）は、終了する。
【０３０９】
以上のように、本実施の形態４における画像復号装置１００によれば、参照画像のアドレスがアライメントされたアドレスではない場合、参照画像のアドレスをアライメントされたアドレスに補正して予測データ量を計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０３１０】
（実施の形態５）
本実施の形態５では、ブロック決定部１３２は、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、予測データ量を用いて、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる符号化画像データの複数のマクロブロックを決定する。
【０３１１】
ここで、本実施の形態５では、図６に示されたブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１４）の詳細について、以下に説明する。
【０３１２】
図２５は、本実施の形態５におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０３１３】
まず、ブロック決定部１３２は、所定の数のマクロブロックの予測データ量の平均値を算出する（Ｓ１１０２）。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部１３２が既に復号順序を決定したマクロブロックでもよい。
【０３１４】
そして、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックの数を決定する（Ｓ１１０４）。
【０３１５】
図２６は、本実施の形態５におけるブロック決定部１３２が並列に復号するマクロブロックの数を決定することを説明する図である。
【０３１６】
同図に示すように、マクロブロックの復号順序は、同図に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。つまり、１つ下の行の２列左側のマクロブロックを、３行単位で並列に復号処理していく。
【０３１７】
図２に記載の復号順序では、並列に復号できるマクロブロックがマクロブロック復号部の数よりも多くなることがあった。図２６に記載の復号順序は、マクロブロック復号部が３つしかない点を考慮して、並列に復号するマクロブロック数を３つ以下になるようにしている。
【０３１８】
しかし、図２６に記載の順序で復号する場合、並列に復号するマクロブロックが、多くのデータを外部メモリ１１０から取得しなければならないマクロブロックであった場合、その瞬間に多くのデータを転送しなければならない。
【０３１９】
そこで、この方法では、同じ番号が付いたマクロブロックを並列に復号するマクロブロックの候補として、まず、これらの復号候補マクロブロックの、予測転送データ量の総和を求める。
【０３２０】
求めた予測転送データ量が、予め定めた転送データ量よりも大きいかどうかを判定し、小さい場合は、これら３つの復号候補マクロブロックを復号する。しかし、大きい場合は、復号候補マクロブロックのうち、どれか１つを復号しないようにする。復号しないマクロブロックはどれを選んでも良いが、例えば、最も下の行に位置するマクロブロックは復号しないようにする。
【０３２１】
つまり、並列に復号するマクロブロックを２つまでに抑えることで、外部メモリ１１０から転送データ量を抑える。復号されなかったマクロブロックは、次のマクロブロックの復号タイミングで、復号候補マクロブロックに加えて、再び復号するかどうかの判定を行っていく。
【０３２２】
例えば、図２６の６番の番号が付いた３つのマクロブロックが、復号候補マクロブロックであった場合を考える。まず、６番のマクロブロックの、予測転送データ量の総和を求め、所定の転送データ量よりも小さければ、この３つのマクロブロックを復号する。所定の転送データ量よりも大きい場合は、上から３行目にある６番のマクロブロックを除き、上から１行目と２行目にある６番のマクロブロックを復号するようにする。
【０３２３】
次に、１行目と２行目にある７番のマクロブロックと、先ほど復号されなかった、３行目の６番のマクロブロックとを復号候補マクロブロックとして、復号するマクロブロックを決定していく。
【０３２４】
なお、並列に復号するマクロブロックの数を２つに抑えても、求めた予測転送データ量が、予め定めた転送データ量よりも大きい場合は、さらに並列に復号するマクロブロックの数を減らしてもよい。
【０３２５】
このようにすることで、外部メモリ１１０の転送データ量が予め定めた転送データ量よりも大きくなることを防ぐことができる。また、これによって、外部メモリ１１０を、他の装置と共用していた場合に、本実施の形態５の画像復号装置がメモリのバンド幅を占有して、他の装置が外部メモリ１１０からデータを転送できないという状態を防ぐことができる。
【０３２６】
以上により、本実施の形態５におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０３２７】
以上のように、本実施の形態５における画像復号装置１００によれば、外部メモリ１１０から読み出されるデータ量の変動が小さくなるように、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる複数のマクロブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、マクロブロックの数を変更することができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
【０３２８】
（実施の形態６）
上記実施の形態１では、マクロブロックの復号処理を行う前にマクロブロックの復号順序を決定したが、参照画像のデータ転送量の予測だけを予め行っておき、マクロブロックの並列復号を行いながら、復号順序を適応的に決定していっても良い。例えば、実施の形態１の画像復号装置１００以外の他の装置も、外部メモリ１１０にアクセスするのであれば、当該他の装置が外部メモリ１１０にアクセスする時は、参照画像のデータ転送量が小さいマクロブロックを選んで復号する。こうすれば、画像復号装置１００も他の装置も同時に動作させることができる。
【０３２９】
このように、本実施の形態６では、ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、外部メモリ１１０から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３０】
つまり、ブロック決定部１３２は、当該差分データ量が大きい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３１】
また、ブロック決定部１３２は、当該差分データ量が小さい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のマクロブロックを決定する。
【０３３２】
図２７は、本実施の形態６における他の装置２００が画像復号装置１００の外部メモリ１１０にアクセスする場合の機能構成を示すブロック図である。ここで、画像復号装置１００は、図３で説明した実施の形態１における画像復号装置１００と同じ構成であるため、詳細な説明は省略する。
【０３３３】
同図に示すように、他の装置２００は、画像復号装置１００の外部メモリ１１０にアクセスする、画像復号装置１００とは異なる装置である。なお、他の装置２００は、１つの装置であってもよいし、複数の装置であってもよい。
【０３３４】
また、他の装置２００は、例えば、画像符号化ブロック、音声復号ブロック、音声符号化ブロック、プロセッサブロック、又はグラフィックアクセラレータなどである。なお、他の装置２００は、画像復号装置１００と外部メモリ１１０を共用するものであれば、どのような装置であってもよい。
【０３３５】
外部メモリ転送量制御部３００は、他の装置２００から、他の装置２００と外部メモリ１１０との間のデータ転送量を受け取る。そして、外部メモリ転送量制御部３００は、外部メモリ１１０が持つ最大転送性能（転送量）から、他の装置２００のデータ転送量を差し引いたデータ転送量を、画像復号装置１００の復号制御部１３０に通知する。
【０３３６】
復号制御部１３０は、予測データ量がこの通知されたデータ転送量に近付くように、マクロブロックを選択して復号処理を実施していく。
【０３３７】
次に、ブロック決定部１３２が並列復号するマクロブロックを決定する処理について、説明する。
【０３３８】
ここで、本実施の形態６では、図６に示されたブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）が、実施の形態１と異なる処理であり、それ以外の処理は実施の形態１と同様であるため、当該処理（図６のＳ１１４）の詳細について、以下に説明する。
【０３３９】
図２８は、本実施の形態６におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
【０３４０】
同図に示すように、まず、外部メモリ転送量制御部３００が、他の装置２００から、他の装置２００と外部メモリ１１０との間のデータ転送量を取得する（Ｓ１２０２）。
【０３４１】
そして、外部メモリ転送量制御部３００は、外部メモリ１１０から読み出されるデータ転送可能な最大データ転送量から他の装置２００のデータ転送量を差し引いた差分データ量を算出し（Ｓ１２０４）、ブロック決定部１３２に送信する。
【０３４２】
ブロック決定部１３２は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する（Ｓ１２０６）。具体的には、ブロック決定部１３２は、当該合計値が、差分データ量以下になるように、当該複数のマクロブロックを決定する。
【０３４３】
以上により、本実施の形態６におけるブロック決定部１３２が並列復号するマクロブロックを決定する処理（図６のＳ１１４）は、終了する。
【０３４４】
以上のように、本実施の形態６における画像復号装置１００によれば、並列に復号が行われる複数のブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のブロックを決定する。つまり、差分データ量が大きい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が大きくなるように、差分データ量が小さい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、予め設定されたメモリバンド幅で画像データの並列復号を行うことができる。
【０３４５】
具体的には、他の装置２００のデータ転送量が大きい時は、画像復号装置１００のデータ転送量が小さくなるように制御するため、他の装置２００の転送を妨げることがなく、画像復号装置１００と同時に他の装置２００を動作させても、他の装置２００の処理を遅延させることなく、動作させることができる。
【０３４６】
また、他の装置２００のデータ転送量が小さい時は、画像復号装置１００のデータ転送量が大きくなるように制御するため、復号処理における参照画像の転送を高速に行うことができ、画像復号処理自体を高速化できる。
【０３４７】
なお、外部メモリ転送量制御部３００が無く、復号制御部１３０と他の装置２００とが直接通信するようにしてもよい。つまり、ブロック決定部１３２が、他の装置２００から、他の装置２００のデータ転送量を取得し、差分データ量を算出することにしてもよい。
【０３４８】
また、上記実施の形態１〜６において、画像復号装置１００は、構成要件の全部あるいはその一部を１つの集積回路上に実装してもよいし、１つの基板上に実装した複数の集積回路であってもよいし、ネットワークやバスを介して接続される独立した装置であっても構わない。
【０３４９】
図２９は、画像復号装置１００を制御する集積回路４００の一例を示す図である。
【０３５０】
同図に示すように、集積回路４００は、図３に示された画像復号装置１００の外部メモリ１１０以外の機能を備えている。
【０３５１】
なお、集積回路４００は、各処理部が個別に１チップ化されても良いし、一部又は全ての処理部を含むように１チップ化されても良い。
【０３５２】
また、集積回路４００は、隣接ＭＢ情報メモリ１８０やデブロッキングフィルタ部を含まないことにしてもよい。つまり、集積回路４００は、ストリームパーサ部１２０、データ転送量予測部１３１、ブロック決定部１３２、及びマクロブロック復号部１４０〜１６０を備えていればよく、これらの構成により本発明の目的を達成することができる。
【０３５３】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３５４】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０３５５】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０３５６】
以上、本発明に係る画像復号装置について、上記実施の形態を用いて説明したが、本発明は、これに限定されるものではない。
【０３５７】
例えば、上記実施の形態１〜６では、３つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は３個でなくてもよい。特許文献１には、３個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、３個以上のマクロブロック復号部を用いても復号することができる。また、ブロック決定部１３２は、マクロブロックの復号順序を決定する場合も、並列に復号するマクロブロックの、参照画像の予測転送データ量の平均値が、各マクロブロックの予測転送データ量の平均値となるべく近くなるように、マクロブロックを選択すればよい。このため、マクロブロック復号部の個数とは関係なく復号処理を行うことができる。
【０３５８】
また、上記実施の形態１〜６では、ストリームパーサ部１２０が完全に可変長復号した復号ストリームを外部メモリ１１０に出力している。しかし、ストリームパーサ部１２０では、参照画像のデータ転送量の予測に必要なパラメータだけを復号さえできればよく、必ずしも完全に可変長復号した復号ストリームを出力する必要はない。例えば、ストリームパーサ部１２０では必要なパラメータの復号だけを行っておき、マクロブロックの並列復号を行うために必要な部分だけを復号した中間ストリームを外部メモリ１１０に出力する方法が考えられる。この場合、マクロブロック復号部１４０〜１６０には、中間ストリームを復号するために可変長復号部を搭載させる必要がある。
【０３５９】
また、上記実施の形態１〜６では、データ転送量予測部１３１がピクチャ内の全てのマクロブロックについて予測データ量を計算した後に、ブロック決定部１３２は、並列復号するマクロブロックを決定することとした。しかし、データ転送量予測部１３１が一部のマクロブロックの予測データ量を計算するごとに、ブロック決定部１３２は、並列復号するマクロブロックを決定することにしてもよい。
【０３６０】
また、上記実施の形態１〜６では、データ転送量予測部１３１は、ｍｂ＿ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得することとした。しかし、データ転送量予測部１３１は、スライスヘッダに含まれるｓｌｉｃｅ_ｔｙｐｅから、復号対象のマクロブロックのマクロブロックタイプを取得することにしてもよい。この場合、正確ではないが、Ｉスライス、Ｐスライス、及びＢスライスのマクロブロックは、それぞれＩマクロブロックタイプ、Ｐマクロブロックタイプ、及びＢマクロブロックタイプであるとして、復号対象のマクロブロックのマクロブロックタイプを取得することができる。
【０３６１】
また、上記実施の形態１〜６では、復号制御部１３０のデータ転送量予測部１３１が予測データ量を計算することにしたが、ストリームパーサ部１２０が予測データ量を計算することにしてもよい。
【０３６２】
また、上記実施の形態１〜６では、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、復号制御部１３０、マクロブロック復号部１４０〜１６０、デブロッキングフィルタ部１７０、及び隣接ＭＢ情報メモリ１８０を備えており、復号制御部１３０は、データ転送量予測部１３１及びブロック決定部１３２を備えていることとした。しかし、デブロッキングフィルタ部１７０及び隣接ＭＢ情報メモリ１８０は、本発明の目的を達成するために必須の構成ではない。つまり、画像復号装置１００は、外部メモリ１１０、ストリームパーサ部１２０、データ転送量予測部１３１、ブロック決定部１３２、及びマクロブロック復号部１４０〜１６０を備えていればよく、これらの構成により本発明の目的を達成することができる。
【０３６３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【０３６４】
また、発明の趣旨を逸脱しない範囲で、上記複数の実施の形態における各構成要素を任意に組み合わせても良い。
【産業上の利用可能性】
【０３６５】
本発明にかかる画像復号装置は、高速に動画像データを復号することが可能な特徴を有する。このため、ＭＰＥＧ等の圧縮画像を扱うデジタルテレビ、ＤＶＤおよびＢｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標）レコーダ等として有用である。また、放送局などの高速な処理が必要とされる機器の用途にも応用できる。
【符号の説明】
【０３６６】
１００    画像復号装置
１１０    外部メモリ
１２０    ストリームパーサ部
１３０    復号制御部
１３１    データ転送量予測部
１３２    ブロック決定部
１４０、１５０、１６０  マクロブロック復号部
１４１    逆量子化部
１４２    逆直交変換部
１４３    画面内予測部
１４４    動き補償予測部
１４５    加算回路
１７０    デブロッキングフィルタ部
１８０    隣接ＭＢ情報メモリ
２００    他の装置
３００    外部メモリ転送量制御部
４００    集積回路
５０１    スタートコード
５０２    ＳＰＳヘッダ
５０３    ＰＰＳヘッダ
５０４    スライスヘッダ
５０５    スライスデータ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置であって、
前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部と、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に前記記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部と
を備える画像復号装置。
【請求項２】
前記プリデコード部は、前記符号化画像データに含まれる、前記ブロックであるマクロブロックのマクロブロックタイプ情報を前記参照情報として可変長復号し、
前記データ転送量予測部は、前記マクロブロックタイプ情報で示される前記参照画像の枚数に当該参照画像のデータ量を乗じて、前記予測データ量を計算する
請求項１に記載の画像復号装置。
【請求項３】
前記ブロック復号部が前記符号化画像データの復号を行う際に、前記符号化画像データの各ブロックをさらに小さなブロックに分割した分割ブロックを単位とした前記参照画像を参照する場合、
前記プリデコード部は、さらに、前記符号化画像データに含まれる、前記分割ブロックのサイズを示すブロック分割パターン情報の復号を行い、
前記データ転送量予測部は、前記ブロック分割パターン情報で示されるサイズの前記分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、前記整数画素位置の参照画像のデータ量と前記小数画素位置の参照画像のデータ量とに重み付けを行うことで、前記予測データ量を計算する
請求項１又は２に記載の画像復号装置。
【請求項４】
前記データ転送量予測部は、前記分割ブロックごとに、
水平位置及び垂直位置がともに整数画素位置である第１参照画像が参照される確率を第１確率とし、
水平位置が小数画素位置であり垂直位置が整数画素位置である第２参照画像が参照される確率を第２確率とし、
水平位置が整数画素位置であり垂直位置が小数画素位置である第３参照画像が参照される確率を第３確率とし、
水平位置及び垂直位置がともに小数画素位置である第４参照画像が参照される確率を第４確率とし、
前記第１参照画像、前記第２参照画像、前記第３参照画像及び前記第４参照画像のデータ量に、それぞれ前記第１確率、前記第２確率、前記第３確率及び前記第４確率を乗じて加算することで、前記予測データ量を計算する
請求項３に記載の画像復号装置。
【請求項５】
前記プリデコード部は、前記ブロックごとに、さらに、復号対象の前記ブロックの画像と参照画像との間の動き量を示す動き情報の復号を行い、
前記データ転送量予測部は、前記ブロックごとに、さらに前記動き情報を用いて、前記予測データ量を計算する
請求項１〜３のいずれか１項に記載の画像復号装置。
【請求項６】
前記データ転送量予測部は、前記動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、前記参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を前記予測データ量として計算する
請求項５に記載の画像復号装置。
【請求項７】
前記データ転送量予測部は、前記動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、前記参照画像のアドレスがアライメントされたアドレスではないと判断した場合、前記参照画像のアドレスをアライメントされたアドレスに補正して前記予測データ量を計算する
請求項５又は６に記載の画像復号装置。
【請求項８】
前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、前記符号化画像データのブロックの復号順序を入れ替えることで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１〜７のいずれか１項に記載の画像復号装置。
【請求項９】
前記ブロック決定部は、前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データのブロック数を変更することで、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１〜７のいずれか１項に記載の画像復号装置。
【請求項１０】
前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項８又は９に記載の画像復号装置。
【請求項１１】
前記ブロック決定部は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が、前記記憶部から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項８又は９に記載の画像復号装置。
【請求項１２】
前記ブロック決定部は、前記差分データ量が大きい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１１に記載の画像復号装置。
【請求項１３】
前記ブロック決定部は、前記差分データ量が小さい場合は、並列に復号が行われる前記符号化画像データの複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定する
請求項１１に記載の画像復号装置。
【請求項１４】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号方法であって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコードステップと、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測ステップと、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定ステップと、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号ステップと
を含む画像復号方法。
【請求項１５】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行う画像復号装置を制御する集積回路であって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコード部と、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測部と、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定部と、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号部と
を備える集積回路。
【請求項１６】
所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、前記ブロックごとに行うためのプログラムであって、
前記ブロックごとに、前記符号化画像データの復号が行われる際に参照される前記参照画像の枚数を示す参照情報の復号を行うプリデコードステップと、
前記ブロックごとに、前記参照情報を用いて、前記符号化画像データの復号が行われる際に、前記符号化画像データの復号が行われる際に参照される参照画像のデータを格納している記憶部から読み出される前記参照画像の予測データ量を計算するデータ転送量予測ステップと、
計算された前記予測データ量を用いて、前記記憶部から読み出されるデータ量の変動が小さくなるように、並列に復号が行われる前記符号化画像データの複数のブロックを決定するブロック決定ステップと、
決定された前記符号化画像データの複数のブロックを並列に復号する複数のブロック復号ステップと
をコンピュータに実行させるプログラム。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010052837.tif 000032
【図２】
2010052837.tif 000033
【図３】
2010052837.tif 000034
【図４】
2010052837.tif 000035
【図５】
2010052837.tif 000036
【図６】
2010052837.tif 000037
【図７】
2010052837.tif 000038
【図８】
2010052837.tif 000039
【図９】
2010052837.tif 000040
【図１０】
2010052837.tif 000041
【図１１】
2010052837.tif 000042
【図１２】
2010052837.tif 000043
【図１３】
2010052837.tif 000044
【図１４】
2010052837.tif 000045
【図１５】
2010052837.tif 000046
【図１６】
2010052837.tif 000047
【図１７】
2010052837.tif 000048
【図１８】
2010052837.tif 000049
【図１９】
2010052837.tif 000050
【図２０】
2010052837.tif 000051
【図２１】
2010052837.tif 000052
【図２２】
2010052837.tif 000053
【図２３】
2010052837.tif 000054
【図２４】
2010052837.tif 000055
【図２５】
2010052837.tif 000056
【図２６】
2010052837.tif 000057
【図２７】
2010052837.tif 000058
【図２８】
2010052837.tif 000059
【図２９】
2010052837.tif 000060
【国際調査報告】
2010052837.tif 000061
2010052837.tif 000062
2010052837.tif 000063
2010052837.tif 000064
2010052837.tif 000065