説明

動き補償装置

【課題】圧縮動画像をマクロブロック単位で動き補償を行う際に、処理効率を高めつつ、回路規模の増大を抑制する。
【解決手段】読出対象領域特定部124は、マクロブロックに対する動き補償処理のための参照領域を含む参照画像が記憶された外部メモリから参照領域の画素データを読み出す際の読出対象領域を特定し、読出対象領域分割部124はこの読出対象領域を複数の分割領域に分割する。制御部130は、読出対象領域が特定した読出対象領域の読出要求をメモリコントローラ180に出力すると共に、前回までの読出しによりバッファメモリ140に格納されたデータを分割領域毎に管理する。そして、読出対象領域特定部が特定した今回の読出対象領域の各分割領域のうちの、バッファメモリ140にその画素データが格納されていない分割領域のみについて読出要求をメモリコントローラ190に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動き補償より具体的には圧縮動画像の復号時にマクロブロック単位で動き補償をする技術に関する。
【背景技術】
【0002】
近年、動画像を圧縮して情報量を削減する方法として種々の動画像圧縮技術が規格化されており、その代表的なものとしてMPEG−4、H.264/MPEG−4 AVC(MPEG−4 Part10 Advanced Video Coding)、VC−1などのMPEG技術がある。
【0003】
これらの技術では、動画像信号の時間冗長性を軽減するために動き補償(MC:Motion Compensation)処理が行われている。
【0004】
特許文献1は、動き補償処理をする際に、現在復号中のマクロブロックの次に復号されるマクロブロックの参照領域を予測し、予測した参照領域を含む該参照領域より大きい領域の画素データを主記憶手段から読み出してキャッシュメモリに格納する手法を開示している。この手法は、現在復号中のマクロブロックの復号中に、次に復号されるマクロブロックの参照領域を予測して該参照領域の画素データをキャッシュメモリに格納しているので、予測が正しければ、次に復号されるマクロブロックの復号時に参照領域の画素データをキャッシュメモリから動き補償演算に提供することができるため、高速な動き補償処理ができる。また、予測した参照領域を含む該参照領域よりも大きい領域の画素データを主記憶手段から読み出してキャッシュメモリに格納するので、予測がずれた場合でもそのずれを吸収できる可能性が高い。
【0005】
また、特許文献2に記載されたように、水平走査方向(横方向)のマクロブロック単位で順次処理を行う動き補償処理では、復号中のマクロブロックの参照領域の画素データは直前に動き補償処理をしたマクロブロックの参照領域の画素データの次のアドレスになる可能性が高い。ところで、この参照領域の画素データの主記憶手段における開始アドレスは、ランダムに発生し、アドレスのオフセットは一律ではない。一般に、SDRAM(Synchronous Dynamic Random Access Memroy)などの主記憶手段やメモリバスなどのスループット性能は、シングルアクセスに比べ、バーストアクセスの方が優れており、主記憶手段のコントローラやバスプロトコルは、バースト転送をより高速に実現するように実装されている。従って、復号中のマクロブロックの参照領域の画素データを主記憶手段から読み出す際に、次に復号するマクロブロックの参照領域の画素データまたはその一部を読み出している可能性が高い。特許文献2は、このような事情に基づき、現在の参照領域の画素データを読み出す際に、余分の画素データまで読出してキャッシュメモリに格納する手法を提案している。この手法によれば、次のマクロブロックに対して動き補償処理を行う際に、このマクロブロックの参照領域の一部の画素データが既にキャッシュメモリに格納されている場合、この一部の画素データをキャッシュメモリから供給することができるため、参領域の画素データの読み出す時間を短縮することができる(特許文献2の「0050」〜「0051」を参照)。
【0006】
このように、圧縮動画像に対してマクロブロック単位で動き補償を処理する際に、現在復号中のマクロブロックの参照領域を含む該参照領域より大きい領域の画素データか、現在復号中のマクロブロックの次に復号するマクロブロックの参照領域を予測して該参照領域を含む該参照領域より大きい領域の画素データをキャッシュメモリに格納することによって、次に復号するマクロブロックの参照領域の画素データの一部がキャッシュメモリに格納されている(キャッシュヒット)場合に、この一部の画素データをキャッシュメモリから出力することにより動き補償処理の効率向上を図っている。
【0007】
通常のキャッシュメモリは、データをラインと呼ぶある程度まとまった管理単位で管理するものであり、1つのラインは、データとそのアドレス、フラグなど属性情報のセットで構成される。キャッシュメモリは、ライン単位アドレスの下位ビットであるエントリアドレスによりラインを特定し、各ラインには、ライン単位アドレスの上位ビットが、タグと呼ばれるバッファに格納されている。また、1つのライン分のデータが該ラインに格納されたときに、該ラインのタグがセットされて該ラインにデータが格納されたことを示す。
【0008】
データのアクセス要求があった際に、キャッシュメモリは、アクセスアドレスに含まれるエントリアドレスにより可能性のあるラインを特定し、特定したラインのタグと、アクセスアドレスの上位ビットとを比較することによってキャッシュのヒットを検出する。具体的には、アクセスアドレスの上位ビットと一致するタグがセットされていれば、キャッシュヒットとして該タグのラインから、アクセス要求されたデータを出力する。
【特許文献1】特開2006−279330号公報
【特許文献2】特開2003−296724号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
ここで、図13を参照して、通常のキャッシュメモリのラインサイズと、動き補償処理時に必要とする参照領域の画素データ(以下参照データという)のサイズと、主記憶手段から読み出したデータ(以下読出データという)のサイズについて考える。
【0010】
図13は通常のキャッシュメモリ1の模式図である。図13において、A1−A2−A7−A6や、A6−A7−A12−A11などにより示す太線矩形はそれぞれ1つのラインに該当し、キャッシュメモリ1は複数のこのようなラインにより構成されている。1ラインは、2のべき乗のビット数のサイズを有する。
【0011】
各太線矩形内の細線により囲まれる小さい矩形(例えばB11−B12−B22−B21)は、主記憶手段からデータを読み出してキャッシュメモリに格納する際の格納単位のデータを示し、図13の例では、1つのラインは、4つの格納単位のデータの大きさを有する。なお、この格納単位の大きさは例えば圧縮動画像を復号するLSIの内部バスがクロック信号のサイクル毎に転送するデータのサイズ(ビット幅)である。
【0012】
図13において、C1−C2−C3−C4により示される矩形は、動き補償処理時の参照データを示す。この参照データは、主記憶手段から読み出されて、そのアドレスに対応するラインに格納される。
【0013】
前述したように、参照データを主記憶手段から読み出す際に、参照領域を含む参照領域より大きい領域の画素データの読出しが行われている。そのため、C1−C2−C3−C4の参照データの読出時に、この参照データのみならず、例えばB13−B14−B42−B41の点線矩形が示す部分のデータ(読出データ)が読み出されてキャッシュメモリ1に格納されることになる。
【0014】
ところで、通常のキャッシュメモリはライン単位でデータを管理し、ライン内に1ライン分のデータが格納されたときに該ラインのタグをセットする。したがって、図13に示す例の場合、B13−B14−B42−B41が示す点線矩形内にデータが格納されているが、A8−A9−A14−A13が示すラインのタグのみはセットされる。A2−A3−A8−A7が示すラインと、A1−A3−A8−A7、A7−A8−A13−A12、A12−A13−A18−A17、A3−A4−A9−A8、A13−A14−A19−A18、A4−A5−A10−A9、A9−A10−A15−A14、A14−A15−A20−A19が示す各ライン内に、一部のデータしか格納されていないため、それらのタグがセットされない。
【0015】
そのため、マクロブロックの復号時に、このマクロブロックの動き補償処理のための参照データの一部が、例えば図13に示すB31−B32−B42−B41が示す矩形のデータである場合でも、これらのデータが属するラインのタグがセットされていないため、キャッシュミスとして、主記憶手段からこれらのデータの読出しが再度行われる。
【0016】
キャッシュのヒット率を高めるために、キャッシュメモリのラインサイズを小さくすることが考えられる。しかし、キャッシュメモリのラインサイズを小さくすると、タグの容量が大きくなり、キャッシュメモリの制御回路が複雑化し回路規模が大きくなるという問題がある。一方、ラインサイズを大きくすると、キャッシュのヒット率が低下し、それに起因してシステム全体の処理効率も低下する。
【課題を解決するための手段】
【0017】
本発明の一つの態様は、圧縮動画像の復号に際してマクロブロック単位で順次動き補償処理を行う動き補償装置である。この動き補償装置は、バッファメモリと、読出部と、読出対象領域特定部と、読出対象領域分割部と、制御部を備える。
【0018】
読出部は、参照画像が記憶された外部メモリからデータの読出しを行い、読み出したデータをバッファメモリに格納する。
【0019】
読出対象領域特定部は、マクロブロックに対する動き補償処理のための参照領域を含む参照画像が記憶された外部メモリから参照領域の画素データを読み出す際の読出対象領域を特定し、読出対象領域分割部はこの読出対象領域を複数の分割領域に分割する。
【0020】
制御部は、読出対象領域特定部が特定した読出対象領域の読出しを読出部に行わせると共に、読出部の前回までの読出しによりバッファメモリに格納されたデータを分割領域毎に管理する。そして、読出対象領域が特定した今回の読出対象領域の各分割領域のうちの、バッファメモリにその画素データが格納されていない分割領域の画素データの読出しのみを読出部に行わせる。
【0021】
なお、上記態様の動き補償装置を、方法や、装置、システムに置き換えて表現したものも、本発明の態様としては有効である。
【発明の効果】
【0022】
本発明の技術によれば、圧縮動画像をマクロブロック単位で動き補償を行う際に、処理効率を高めつつ、回路規模の増大を抑制することができる。
【発明を実施するための最良の形態】
【0023】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の実施の形態となる復号装置100を示す。例として復号装置100はMPEG−4に準拠したものであり、可変長符号復号部112と、逆量子化部114と、逆離散コサイン変換部116と、動き補償処理部120と、加算部170と、フィルタ処理部172と、メモリコントローラ180と、外部メモリ190を有する。なお、復号装置100は動画像の輝度成分と色差成分について復号するが、以下において、「データ」を「輝度成分のデータ」として用い、輝度成分のみについて説明する。色差成分については、データサイズが異なるだけで、処理シーケンスは同じであるため、同様の方式で処理される。
【0024】
可変長符号復号部112は、MPEG−4の圧縮動画データS0に対して可変長符号の復号を行って量子化係数と動きベクトルを得る。この処理は、水平走査順にマクロブロック単位で行われる。
【0025】
逆量子化部114は、可変長符号復号部112が得た量子化係数を逆量子化し、変換係数を得る。逆離散コサイン変換部116は、逆量子化部114が得た変換係数に対して逆離散コサイン変換を行って動き予測残差を得る。
【0026】
動き補償処理部120は、可変長符号復号部112が得た動きベクトルに基づいて、該動きベクトルが示す参照領域の画素データである参照データ(その詳細について後述する)に対して動き補償演算を行って動き予測データを得る。
【0027】
加算部170は、逆離散コサイン変換部116が得た動き予測残差と、動き補償処理部120が得た動き予測データとを加算して加算データを得る。
【0028】
フィルタ処理部172は、加算部170が得た加算データをフィルタリングし、復号済みのデータ(復号データS1)を得る。
【0029】
メモリコントローラ180は、フィルタ処理部172が得た復号データS1を外部メモリ190に格納させると共に、動き補償処理部120から読出要求があった際に、該読出要求に応じたデータ(読出データ)を外部メモリ190から読み出して動き補償処理部120に備えられた後述のキャッシュメモリに出力する。
【0030】
復号装置100を詳細に説明する前に、まず、外部メモリとしてよく用いられるSDRAMを例にして、圧縮動画像を復号する際に復号済みのデータを外部メモリに格納する態様および外部メモリからデータを読み出す態様について説明する。
【0031】
図2は、SDRAMの構成を示す。SDRAMは、複数のバンクから構成され、各バンクは、さらに複数のカラムより構成される。1つのカラムは、128バイトや256バイト、512バイトなどの容量を有する。前述したように、SDRAMにアクセスする際に、バーストアクセスのほうが優れているため、SDRAMの制御部やメモリバスプロトコルは、バースト転送をより高速に実現するように実装されている。また、同じカラム内のデータへのアクセスであれば、バースト転送開始の位置がランダムでも転送効率が悪くならないことと、アクセスが連続した場合、連続したアクセスが異なるバンクに対してなされるものであれば転送効率が悪くならないことも知られている。
【0032】
このような事情から、SDRAMで構成されたフレームバッファに動画像を格納する際に、一般的に、動画像のフレームの水平走査方向順に画素単位に格納するのではなく、フレームを複数の矩形ブロック(以下格納ブロックという)に分け、1つの格納ブロック内のデータが1つのカラムに格納されるように、かつ、相隣する格納ブロックが異なるバンクに格納されるようにしている。図3は、そのイメージを示す。
【0033】
図3に示すように、1つのフレームは、格納ブロック1、格納ブロック2、・・・などの複数の格納ブロックを有する。格納ブロックと、フレームバッファ内のカラムは1対1に対応し、各格納ブロック内のデータは、それぞれが対応するカラムに格納される。図中括弧の中は、その格納ブロックが格納されるバンクの番号であり、隣接する格納ブロックは、異なるバンクの中に格納されるようになっている。
【0034】
動画像のフレームは、図3に示す態様でフレームバッファに格納される。フレームバッファからデータを読み出す際に、バンク番号、バンク内のカラム番号、カラム内の位置(ローアドレス)を指定する。
【0035】
また、フレームバッファへのデータの格納およびフレームバッファからデータの読出しは、アクセス単位(1サイクルでやり取りするデータの量)で行われるので、各カラム内に格納されるデータのサイズは、アクセス単位の整数倍になる。
【0036】
ここでフレームバッファへアクセスする際のアクセス単位について考える。前述したように、SDRAMとのデータ転送はバースト転送が用いられ、バースト転送の単位(ビット幅)は例えば8ビットや16ビットなどである。また、近年、SDRAMではDDR−SDRAM(Double−Data−Rate SDRAM)が主流になっている。図4の左側に示すように、DDR−SDRAMのメモリバスバスプロトコルは、高速なクロック信号の立ち上がりと立ち下がりの両エッジにそれぞれ同期してデータをやり取りする。このプロトコルをそのままLSIで用いることが困難であるため、DDR−SDRAMとデータのやり取りをLSIは、図4の右側に示すように、ビット幅とクロック周波数の変換を行い、クロック信号の周波数を下げると共にデータのビット幅を増やして、クロック信号の立ち上がりエッジのみに同期してLSIの内部バスにデータを転送する。そのため、LSIからDDR−SDRAMへのアクセス単位は、バースト転送の単位より大きい。
【0037】
すなわち、DDR−SDRAMで構成されたフレームバッファでは、動画像のフレームは格納ブロック毎に対応するカラムに格納され、かつ、隣接する格納ブロックとそれぞれ対応するカラムは、異なるバンク内にある。フレームバッファへアクセスする際のアクセス単位は、SDRAMのバースト転送より大きく、各カラムにはアクセス単位の整数倍のデータが格納される。
【0038】
以上の説明を踏まえて、図1に示す実施の形態の復号装置100におけるメモリコントローラ180と外部メモリ190を説明する。
【0039】
外部メモリ190は、DDR−SDRAMにより構成されたフレームバッファである。フィルタ処理部172は、復号データS1を得てメモリコントローラ180に出力し、メモリコントローラ180は、復号データS1を外部メモリ190に格納する。
【0040】
本実施の形態において、例として、外部メモリ190の各カラムのサイズは16バイト×16バイト(256バイト)であり、メモリコントローラ180が外部メモリ190へアクセスする際のアクセス単位は64ビット(8バイト)である。また、復号データS1の1画素が8ビットであり、外部メモリ190への1アクセス単位は、水平走査方向の連続した8画素分のデータである。そのため、本実施の形態において、復号データS1は、図5に示す格納ブロック単位(16画素×16画素)で外部メモリ190に格納され、外部メモリ190内における1つのカラムに、1つの格納ブロックのデータが格納される。
【0041】
また、本実施の形態において、各格納ブロックへのアドレスの割り当ては、水平8画素単位でなされている。図6は、アドレスの割り当て順の例を示す。図中矢印が示すように、格納ブロック内において、左上の8画素(図中0で表す)→左下の8画素→右上の8画素右下の8画素(図中31で表す)の順でアドレスが割り当てられている。
【0042】
このようなアドレスの割り当ては、フレーム内において、左上の格納ブロックから水平走査順に各格納ブロックに対してなされる。図7は、4格納ブロック×4格納ブロックのフレームのアドレスの割り当て例を示しており、図示のように、左上の格納ブロックから水平走査方向の順で格納ブロック毎に32個のアドレスが割り当てられている。これらのアドレスの上位ビットは、バンク番号の指定や、格納ブロックがフレームにおける位置を示すことができる。図7から分かるように、アドレスの割り当ては、フレームの左上の8画素からスタートし、水平走査順に行われているので、格納ブロックがフレームにおける位置はフレームの先頭(左上端)との相対位置であり、左上の8画素のアドレスは、他の各8画素のベースアドレスとなる。
【0043】
次いで復号装置100の動き補償処理部120を説明する。
図8は、動き補償処理部120を示す。動き補償処理部120は、水平走査方向順にマクロブロック単位で動き補償を行うものであり、参照領域特定部122と、読出対象領域特定部124と、読出対象領域分割部126と、制御部130と、バッファメモリ140と、出力部150と、動き補償演算部160を備える。なお、図8において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0044】
参照領域特定部122は、可変長符号復号部112が得た復号中のマクロブロックの動きベクトルを入力し、この動きベクトルが示す領域を参照領域として特定する。マクロブロックのサイズおよび参照領域のサイズが規格によって異なり、本実施の形態において、マクロブロックのサイズは8画素×8画素であり、参照領域のサイズは13画素×13画素である。
【0045】
参照領域は既に復号済みのフレーム(以下参照フレームという)上の領域であり、そのデータはフレームバッファとして機能する外部メモリ190に格納されている。読出対象領域特定部124は、参照領域特定部122が特定した参照領域に基づいて、外部メモリ190からデータを読み出す領域(読出対象領域)を特定する。図9を参照して参照領域と読出対象領域の関係を説明する。
【0046】
前述したように、外部メモリ190へのアクセスが水平走査方向に並ぶ8画素単位であるので、13画素×13画素の参照領域のデータを外部メモリ190から読み出すために、この参照領域を含む16画素×13画素か24画素×13画素の読出対象領域のデータを読み出すことになる。図9において、点線枠が示す13画素×13画素の領域が参照領域であり、図9の左部分と右部分は16画素×13画素を読み出す場合と24画素×13画素を読み出す場合をそれぞれ示す。読出対象領域特定部124は、参照領域特定部122が特定した13画素×13画素の参照領域に基づいて、図9に示す16画素×13画素または24画素×13画素の読出対象領域を特定する。
【0047】
すなわち、復号中のマクロブロックに対して動き補償をするための参照領域のデータを読み出すために、実際に読み出す領域(読出対象領域)はこの参照領域を含み参照領域より大きい。
【0048】
読出対象領域分割部126は、読出対象領域特定部124が特定した読出対象領域を複数の分割領域に分割する。本実施の形態において、読出対象領域分割部126は、読出対象領域に対して、水平方向において、アクセス単位と同じ大きさの8画素単位に分割する。図10に示すように、16画素×13画素の読出対象領域は8画素×13画素の2つの分割領域に分割され、24画素×13画素の読出対象領域は8画素×13画素の3つの分割領域に分割される。
【0049】
読出対象領域分割部126は、このようにして読出対象領域を分割し、各分割領域のサイズ情報と位置情報、およびベースアドレスを読出対象情報として制御部130に出力する。サイズ情報は分割領域の大きさ(図10の例では8画素×13画素)である。位置情報は、分割領域が参照フレーム上における位置を示すものであり、参照フレームの左上端を基準とする。ベースアドレスは、参照フレームの先頭アドレスであり、本実施の形態においては、参照フレームの左上の8画素のアドレスとなる。
【0050】
制御部130は管理情報バッファ132と読出制御部134を備え、読出制御部134は、読出対象領域分割部126からの読出対象情報と、管理情報バッファ132に記憶された管理情報とに基づいて外部メモリ190からのデータの読出しを制御する。なお、管理情報は、バッファメモリ140にその画素データが格納されている分割領域の読出対象情報である。
【0051】
ここでまず、管理情報バッファ132に管理情報が記憶されていない場合について説明する。この場合、復号中のマクロブロックは、それが属するフレームの各マクロブロックのうちの最初に復号されるマクロブロックすなわち該フレームの左上端のマクロブロックである。
【0052】
読出制御部134は、読出対象領域分割部126からの読出対象情報が示す各分割領域の読出要求をメモリコントローラ180に出力すると共に、これらの分割領域の読出対象情報を管理情報として管理情報バッファ132に格納させる。
【0053】
メモリコントローラ180は、読出部として機能し、読出制御部134からの読出要求を受信すると、該当する分割領域の画素データを外部メモリ190から読み出してバッファメモリ140に出力する。なお、メモリコントローラ180は、外部メモリ190が出力するデータのビット幅に対してビット幅変換と周波数変換を行う機能が実装されている。
【0054】
バッファメモリ140は、メモリコントローラ180が読み出したデータ(読出データ)を格納する。この読出データは、参照領域特定部122が特定した参照領域のデータを含む16画素×13画素または24画素×13画素の読出対象領域の画素データである。
【0055】
出力部150は、制御部130の管理情報バッファ132に格納された管理情報に基づいて、参照領域特定部122が特定した13画素×13画素の参照領域の画素データ(参照データ)がバッファメモリ140に格納されているか否かを確認する。このとき、キャッシュメモリに格納された各分割領域の管理情報が既に管理情報バッファ132に格納されているので、出力部150は、参照データをバッファメモリ140から読み出して動き補償演算部160に出力する。
【0056】
動き補償演算部160は、出力部150からの参照データを用いて動き補償演算を行い、復号中のマクロブロックの動き予測データを得る。
【0057】
次いで管理情報バッファ132に管理情報が記憶されている場合について説明する。上記の説明から分かるように、管理情報バッファ132に格納された管理情報は、外部メモリ190からそのデータが読み出されバッファメモリ140に格納された各分割領域の管理情報である。
【0058】
ここで、復号中のマクロブロックの読出対象領域とその後に復号するマクロブロックの読出対象領域の関係について考える。マクロブロックの参照領域はその動きベクトルにより示されるが、隣接するマクロブロックは同じ動きベクトルを有する確率が高い。また、隣接するマクロブロックの動きベクトルが異なる場合でも、2つの動きベクトルが指す参照領域間の差は整数個の画素に満たさないことが多い。さらに、本実施の形態において、参照領域より大きい領域を読出対象領域に特定しているので、隣接するマクロブロックの読出対象領域の大部分は高い確率で重なる。
【0059】
復号中のマクロブロックの次に復号するマクロブロックは、復号中のマクロブロックと同一の水平方向走査ラインに位置している場合、この復号中のマクロブロックと水平方向に隣接する。また、復号中のマクロブロックの次に復号するマクロブロックは、復号中のマクロブロックの水平方向走査ラインの1つ下の水平方向走査ラインに位置する場合には、復号中のマクロブロックの水平方向走査ラインに位置する各マクロブロックの復号が既に完了している。そのため、次に復号するマクロブロックは、復号中のマクロブロックの水平方向走査ラインに位置する既に復号が完了しているマクロブロックと垂直方向に隣接する。
【0060】
すなわち、動き補償演算のために外部メモリ190から読み出してバッファメモリ140に格納された読出データには、復号中のマクロブロックの後に復号するマクロブロックの読出データの少なくとも一部を含むことが多い。
【0061】
読出制御部134は、管理情報バッファ132に管理情報が記憶されている場合に、読出対象領域分割部126からの読出対象情報と、管理情報バッファ132に記憶された管理情報とを比較する。読出制御部134は、読出対象領域分割部126からの読出対象情報が示す分割領域のうちの、管理情報バッファ132にその管理情報が格納されていない分割領域に対してのみ、読出要求をメモリコントローラ180に出力する。また、読出制御部134は、読出要求をした分割領域の読出対象情報を管理情報として管理情報バッファ132に格納させる。
【0062】
なお、読出対象領域分割部126からの読出対象情報が示す分割領域のうちの、管理情報バッファ132にその管理情報が格納されている分割領域の画素データは、前に復号したマクロブロックの動き補償演算のために既に外部メモリ190から読み出されてバッファメモリ140に格納されている。
【0063】
メモリコントローラ180、バッファメモリ140、出力部150、動き補償演算部160のこの後の処理は、前述した1つ目のマクロブロックのときと同じである。
【0064】
本実施の形態において、バッファメモリ140は、FIFO(First In First Out)メモリである。管理情報バッファ132もFIFOメモリであり、バッファメモリ140が格納できる分割領域の分の管理情報を記憶する容量を有する。バッファメモリ140にその画素データが格納された分割領域の管理情報は管理情報バッファ132に格納されており、バッファメモリ140が分割領域の画素データを破棄する際に、管理情報バッファ132もこの分割領域の管理情報を破棄する。
【0065】
図11は、図8に示す動き補償処理部120における処理の流れを示すフローチャートである。参照領域特定部122は、復号中のマクロブロックの動きベクトルが示す13画素×13画素の参照領域を特定し(S10)、読出対象領域特定部124は、参照領域特定部が特定した参照領域に応じて、該参照領域を含む16画素×13画素または24画素×13画素の読出対象領域を特定する(S20)。読出対象領域分割部126は、読出対象領域特定部124が特定した読出対象領域を8画素×13画素の分割領域に分割すると共に、これらの分割領域が位置する参照フレームのベースアドレス、および各分割領域が参照フレームにおける位置を示す位置情報とサイズ情報を読出対象情報として制御部130に出力する(S30)。
【0066】
制御部130の読出制御部134は、読出対象領域分割部126から出力された各分割領域の読出対象情報と、管理情報バッファ132に分割領域毎に格納された管理情報とを比較し、読出対象情報が示す分割領域のうちの、その管理情報が管理情報バッファ132に格納されていない分割領域についてのみ読出要求をメモリコントローラ180に出力する(S40、S50:No、S60)。また、ステップS60において、読出制御部134は、読出要求をした分割領域の読出対象情報を、該分割領域の管理情報として管理情報バッファ132に出力して格納させる。
【0067】
メモリコントローラ180は、読出制御部134からの読出要求に応じて外部メモリ190から当該分割領域の画素データを読み出して読出データをバッファメモリ140に格納する(S70、S80)。
【0068】
すなわち、復号中のマクロブロックの読出領域の各分割領域のうちの、その画素データがバッファメモリ140に格納されていない分割領域の画素データは外部メモリ190から読み出されてバッファメモリ140に格納される。復号中のマクロブロックの読出領域の各分割領域のうちの、その画素データが既にバッファメモリ140に格納されている分割領域の画素データについては、外部メモリ190からの読出しがなされない。
【0069】
これにより、復号中のマクロブロックの参照領域を含む読出対象領域の画素データがバッファメモリ140に格納され、管理情報バッファ132にはそれらの管理情報が格納される。そのため、出力部150は、管理情報バッファ132を参照して読出対象領域の画素データがバッファメモリ140に格納されていることを知ることができる。出力部150は、参照領域特定部122が特定した13画素×13画素の参照領域の画素データのアドレスを特定し、特定したアドレスから参照データを読み出して動き補償演算部160に出力する(S90、S100)。
【0070】
動き補償演算部160は、出力部150からの参照データを用いて動き補償演算を行って動き予測データを得、この動き予測データを加算部170に出力する(S110)。これをもって、復号中のマクロブロックの動き補償処理が完了する。
【0071】
図12は、復号装置100のバッファメモリ140における参照領域の画素データおよび読出対象領域の画素データの格納態様と管理態様を示す。なお、図13に示す従来のキャッシュメモリ1と比較しやすいために、参照領域の画素データ、読出対象領域の画素データを示す枠に対して同じ符号で表示する。
【0072】
図12に示すように、バッファメモリ140において、画素データが格納単位で格納される。この格納単位は、動き補償処理部120の内部バス上を転送されるデータのビット幅であり、外部メモリ190へのアクセス単位と同一である。本実施の形態においてこの格納単位は64ビットの8画素分となる。図12に示す例では、参照領域の画素データは、C1−C2−C3−C4の点線枠で示す13画素×13画素のデータであり、読出対象領域の画素データは、B13−B14−B42−B41で示す24画素×13画素のデータである。
【0073】
制御部130は、読出対象領域を8画素×13画素の分割領域に分割して得た分割領域毎にバッファメモリ140に格納されたデータを管理している。図12に示すように、B13−B14−B42−B41で示す読出対象領域の画素データは、B13−B14−D2−D1、D1−D2−D3−D4、D4−D3−B42−B41の3つの分割領域の画素データに分割されている。制御部130の管理情報バッファ132は、これらの分割領域毎に管理情報を保持している。
【0074】
従来のキャッシュメモリは、データが外部メモリに記憶されたアドレスそのものを用いてライン単位でデータを管理するので、ラインサイズは2のべき乗ビット数であり、ライン内にラインサイズ分のデータが格納されてはじめてこのライン内のデータが利用できる。そのため、図13に示す例のように、B31−B32−B42−B41が示すデータが格納されている場合でも、これらのデータが属するラインのタグがセットされないため、キャッシュミスとして、主記憶手段からこれらのデータの読出しが再度行われる。
【0075】
それに対して、本実施の形態では、バッファメモリ140に格納されたデータを分割領域単位で管理し、管理情報として分割領域の位置情報を用いることによって、参照フレーム上の任意の位置(アドレス)からの画素データを管理することができる。そのため、バッファメモリ140に画素データが格納されている分割領域であれば、管理情報バッファ132にはその管理情報が保持されており、バッファメモリ140から出力可能であり、動き補償処理の効率を高めることができる。
【0076】
また、本実施の形態において、分割領域のサイズ情報も管理情報に用いる。こうすることによって、データを分割領域のサイズで管理することができ、動き補償演算に参照データを供給するための、外部メモリからの読出しを必要最小限に抑えることができる。さらに、バッファメモリ140の容量も分割領域のサイズで管理することができるので、参照領域乃至読出対象領域の大きさが可変である場合や参照データのサイズが2のべき乗ビット数ではない場合においても、読出データを詰めて格納することができ効率的にバッファメモリを利用することができる。すなわち、格納されたデータの再利用に際して、小さなバッファメモリ容量で従来のキャッシュメモリと同様な再利用効果を得ることができる。
【0077】
また、H.264やVC−1の規格に準拠した動画像の場合、マクロブロックのサイズは4画素×4画素や4画素×8画素などの小さいサイズになり、参照領域のサイズ、読出対象領域のサイズも小さくなる場合がある。このような場合においても、参照領域のサイズに応じた読出対象領域を分割して得た分割領域単位でバッファメモリに格納されたデータを管理することができるので、バッファメモリに格納されたデータの再利用における本発明の技術の効果をより発揮することができる。
【0078】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0079】
例えば、本実施の形態の復号装置100において、分割領域の大きさが固定した8画素×13画素である。H.264やVC−1などの場合は、マクロブロックのサイズが可変であるため、参照領域のサイズ、読出対象領域のサイズも可変である。このような場合においても、外部メモリからの読出データの読出しおよびバッファメモリに格納されたデータの管理に本発明の技術を適用することができる。
【0080】
また、本実施の形態の復号装置100は、復号中のマクロブロックの動き補償演算処理のために読み出した読出データをバッファメモリに蓄積しておき、時系列に後に処理されるマクロブロックの動き補償演算処理の際に、バッファメモリに蓄積されたデータを再利用する形態に本発明の技術を適用したものである。本発明は、特許文献1に記載されたような、現在のマクロブロックの復号時に次の参照領域を予測し、予測した参照領域の画素データを外部メモリから読み出してキャッシュメモリに格納する形態の復号装置にも本発明の技術を適用することができる。この場合、予測された参照領域について読出対象領域を特定すればよい。
【0081】
また、本実施の形態の復号装置100は、外部メモリ190の構造上の理由から参照領域より大きい読出対象領域の画素データを外部メモリ190から読み出しているが、たとえば特許文献2に記載されたように、キャッシュメモリのヒット率を高めるために意図的に参照領域を含む参照領域より大きい領域の画素データを読み出す形態の復号装置にも、本発明の技術を適用することができる。
【図面の簡単な説明】
【0082】
【図1】本発明の実施の形態にかかる復号装置を示す図である。
【図2】図1に示す復号装置における外部メモリを説明するための図である。
【図3】フレームが外部メモリに格納される態様を示す図である。
【図4】外部メモリへアクセスする際のアクセス単位を説明するための図である。
【図5】外部メモリの1カラムに格納される格納ブロックのデータを示す図である。
【図6】格納ブロック内のデータに対するアドレスの割当てを説明するための図である。
【図7】1フレームのデータのアドレスの割当て例を示す図である。
【図8】図1に示す復号装置における動き補償処理部を示す図である。
【図9】参照領域と読出対象領域の関係を示す図である。
【図10】読出対象領域の分割を説明するための図である。
【図11】図8に示す動き補償処理部における処理の流れを示すフローチャートである。
【図12】図8に示す動き補償処理部のバッファメモリにおけるデータの格納態様および管理態様を示す図である。
【図13】動き補償処理に従来のキャッシュメモリを利用する場合の問題点を説明するための図である。
【符号の説明】
【0083】
100 復号装置
112 可変長符号復号部
114 逆量子化部
116 逆離散コサイン変換部
120 動き補償処理部
122 参照領域特定部
124 読出対象領域特定部
126 読出対象領域分割部
130 制御部
132 管理情報バッファ
134 読出制御部
140 バッファメモリ
150 出力部
160 動き補償演算部
170 加算部
172 フィルタ処理部
180 メモリコントローラ
190 外部メモリ

【特許請求の範囲】
【請求項1】
圧縮動画像の復号に際してマクロブロック単位で順次動き補償処理を行う動き補償装置であって、
バッファメモリと、
参照画像が記憶された外部メモリからデータの読出しを行い、読み出したデータを前記バッファメモリに格納する読出部と、
前記参照画像上の読出対象領域であって、前記マクロブロックに対する前記動き補償処理のための参照領域の画素データを前記外部メモリから読み出す際の前記読出対象領域を特定する読出対象領域特定部と、
該読出対象領域特定部が特定した前記読出対象領域を複数の分割領域に分割する読出対象領域分割部と、
前記読出対象領域特定部が特定した読出対象領域の読出しを前記読出部に行わせると共に、前記読出部の前回までの読出しにより前記バッファメモリに格納された画素データを前記分割領域毎に管理する制御部であって、前記読出対象領域特定部が特定した今回の読出対象領域の各分割領域のうちの、前記バッファメモリにその画素データが格納されていない分割領域の画素データの読出しのみを前記読出部に行わせる制御部とを備えることを特徴とする動き補償装置。
【請求項2】
前記読出対象領域特定部は、前記参照領域を含む前記参照領域より大きい領域を該参照領域の読出対象領域として特定することを特徴とする請求項1に記載の動き補償装置。
【請求項3】
現在復号中のマクロブロックの動きベクトルを復号する動きベクトル復号部をさらに備え、
前記読出対象領域特定部は、前記動きベクトル復号部により得られた前記動きベクトルが示す前記参照領域に対応する前記読出対象領域を特定するものであることを特徴とする請求項1または2に記載の動き補償装置。
【請求項4】
現在復号中のマクロブロックの動きベクトルを復号する動きベクトル復号部と、
前記動きベクトルが示す前記参照領域の次の参照領域を予測する予測部とをさらに備え、
前記読出対象領域特定部は、前記予測部が予測した前記次の参照領域に対応する前記読出対象領域を特定するものであることを特徴とする請求項1または2に記載の動き補償装置。
【請求項5】
前記制御部は、
前記バッファメモリに格納されている各前記分割領域の画素データ毎に、該分割領域が含まれる前記参照画像の先頭アドレスと、該分割領域が前記参照画像上における位置を示す位置情報とを管理情報として管理情報保持部と、
該管理情報保持部が保持した前記管理情報に基づいて前記読出部による読出しの制御を行う読出制御部とを備えることを特徴とする請求項1から5のいずれか1項に記載の動き補償装置。
【請求項6】
前記管理情報保持部は、前記分割領域の大きさを示すサイズ情報も前記管理情報として保持することを特徴とする請求項5に記載の動き補償装置。
【請求項7】
前記バッファメモリは、FIFO(First In First Out)であることを特徴とする請求項1から6のいずれか1項に記載の動き補償装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2008−271292(P2008−271292A)
【公開日】平成20年11月6日(2008.11.6)
【国際特許分類】
【出願番号】特願2007−112762(P2007−112762)
【出願日】平成19年4月23日(2007.4.23)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】