近年において種々の動画像圧縮符号化技術が提案されているが、その1つとして知られているVC−1動画像圧縮符号化方式は、MPEG(Moving Picture Exparts Group)−4パート2をベースとし、さらに圧縮効率を高めるための種々の工夫が施されたものであり、SMPTE(米国映画テレビジョン技術者協会)での規格化がなされ、SMPTE 421Mとして発表されている。
一般に、VC−1符号化方式におけるデコーダは、VC−1のレファレンスソースコードや規格書SMTPE 421MのDecodeing Process Overviewに構成案が記載されている。この規格書によればVC−1コーデック(Codec)によってエンコードされたビットストリーム(Bit Stream)信号はデコーダシステムに入力され、構造解析(Parsing)されると、そのデータの符号化された手法により大別して、イントラ(Intra)符号化(フレーム内予測符号化)されたものとインター(Inter)符号化(フレーム間予測符号化)されたものにデータが分類される。分類されたイントラ符号化データとインター符号化データとは、復号画像(Decode Picture)を生成する時のデータの再構成処理が異なる。
図12は、このVC−1デコーダシステムの一例を概略的に示すブロック図であり、ビットストリーム構造解析モジュール11が入力されたビットストリームを構造解析する。ビットストリーム構造解析モジュール11からのイントラ符号化データ及びインター符号化データは、AC/DC予測(Prediction)モジュール12を介して、逆量子化/逆DCT(IQ/IDCT)モジュール13に送られ、逆量子化及び逆DCTが施された後、選択スイッチ14に送られ、イントラ符号化データがオーバーラップスムージングフィルタ(Overlap Smoothing Filter)15に送られ、インター符号化データが加算器16に送られる。
オーバーラップスムージングフィルタ15は、ブロック境界(エッジ)での歪を軽減するために、ブロック境界をスムージングするフィルタであり、イントラ符号化データのみをオーバーラップスムージング処理して加算器16に送っている。また、ビットストリーム構造解析モジュール11から動きベクトル(MV)が動きベクトル予測モジュール21を介して動き補償(MC)モジュール22に送られ、この動き補償モジュール22では、制御部23により外部メモリから読み出された復号データを用いて動き補償が施され、得られたデータ(インター符号化データ)が加算器16に送られる。加算器16では、選択スイッチ14からのインター符号化データ、オーバーラップスムージングフィルタ15からのイントラ符号化データ、動き補償モジュール22からのインター符号化データが加算され、デブロッキングフィルタ(Deblocking Filter)17に送られる。デブロッキングフィルタ17では、ブロック境界(エッジ)のみを平滑化してブロックノイズの発生を抑制する。このような復号処理が行われることにより、画像(ピクチャ:Picture)が再構成(decode)される。
規格書SMTPE 421M によってVC−1デコーダとして規格化されている上記オーバーラップスムージング(Overlap Smoothing)処理を行う場合について説明する。
このオーバーラップスムージング処理は、図13に示すように、8×8画素のブロックの境界(エッジ)について、4タップのフィルタ処理を行うものであり、垂直エッジ、水平エッジの順に行われ、Y(輝度)/C(クロマ)信号のデータに対して同じ演算が行われ、Iピクチャ(フレーム内符号化画像)又はPピクチャ(前方予測符号化画像)のみに対して処理が行われる。
図14は、前段のモジュールからあるいは外部メモリから送られてくるデータの時系列を示しており、ピクチャ再構成処理の単位をマクロブロック(MB)としている。この図14の矢印に示すように送られてくるデータの時系列に対してレイテンシ(処理のための待ち時間)を少なくする場合の方法として、上記オーバーラップスムージング処理を行うために必要とされるマクロブロック(MB)を図15に示す。この図15において、現在処理されるべく前段のモジュールから送られてきた(あるいは外部メモリから読み出された)現在のマクロブロック(Current MB)C−MBに対して、オーバーラップスムージング処理される範囲(処理が完了する領域)はXosとなる。この図15の範囲Xosのオーバーラップスムージング処理を行うために、上記現在のマクロブロックC−MBと、直前のマクロブロック(Left MB)L−MBと、現在のマクロブロックC−MBに対してピクチャが再構成された時に上部に位置する上部マクロブロック(Above MB)A−MBと、この上部マクロブロックA−MBの直前のマクロブロック(Left Above MB)LA−MB(ピクチャが再構成された時に上部マクロブロックA−MBの左に位置するマクロブロック)の、合計4つのマクロブロックC−MB,L−MB,A−MB,LA−MBに属するデータを必要とする。
また、上記デブロッキングフィルタ(Deblocking Filter)処理される範囲は、図15の範囲Xdbとなり、上記オーバーラップスムージング処理の場合と同様に4つのマクロブロックC−MB,L−MB,A−MB,LA−MBに属するデータが必要となる。ここで、上記VC−1規格におけるデブロッキングフィルタ処理は、Iピクチャ、Bピクチャ(双方向予測符号化画像)では8×8ブロックの境界のみに適用され、Pピクチャでは4×4ブロック境界まで適用されるものであり、8タップフィルタで、境界の2画素だけが変化し、水平エッジ、垂直エッジの順に処理が行われ、Y(輝度)/C(クロマ)信号のデータに対して同じ演算が行われる。なお、上記図15の範囲Xdbは、フィールド符号化の場合とフレーム符号化の場合を考慮して、上記デブロッキングフィルタ処理が完了する領域を示している。
上述したように4つのマクロブロックC−MB,L−MB,A−MB,LA−MBに属するデータを用いてフィルタ処理を行う場合、ビットストリーム構造解析モジュール11の構造解析(Parsing)処理の仕方にもよるが、前段のモジュールから送られてくるデータの他に、処理に必要なデータを制御部23により外部メモリ等から読み出すことが一般に行われている。外部メモリには例えばSDRAMが用いられ、制御部23は、アービター経由/SDRAM制御回路を経由してSDRAMをアクセスする。
ここで、現在のマクロブロックC−MBに対する直前のマクロブロックL−MBに関しては、内部キャッシュを利用することで解決することもできるが、上部マクロブロックA−MBに関しては、デコードされるべきピクチャの横方向のマクロブロックの数がピクチャが構成される画素数によって任意に変化するため、システム内部にそのデータを保持しようとすれば、任意に可変する画素数に対して、格納領域としては規格の示す最大量で用意しなければならず、リソースの無駄にもなってしまう。このため、上記オーバーラップスムージングフィルタ15やデブロッキングフィルタ17の各モジュールにてフィルタ処理した後、制御部23により外部メモリに格納し、処理に必要な任意のタイミングで外部メモリから再度、読み出すことによって処理に必要なデータを取り揃える構成となるのが一般的である。
図12の例では、逆量子化/逆DCT(IQ/IDCT)モジュール13がイントラ/インターの両符号化データを扱うため、その前段に当たるAC/DC予測モジュール12もインター符号化データを扱う構成になっている。例えば、図12において逆DCT処理が終了した符号化データはオーバーラップスムージングフィルタ15の手前でイントラ符号化データとインター符号化データかによって経路が選択され、イントラ符号化データはオーバーラップスムージングフィルタ15に送られる。
オーバーラップスムージングフィルタ15の処理を行うタイミングにおいて、図12の経路R1に示すように、上部マクロブロックA−MBとその直前のマクロブロックLA−MBのデータの中で必要とされるデータが外部メモリからオーバーラップスムージングフィルタ15に取り込まれる。このオーバーラップスムージング処理が完了される画素データは、図16の(A)中の枠Xosで囲まれた範囲のものとなる。また、オーバーラップスムージングフィルタ15にてフィルタ処理されたデータの全ては、図16の(B)中の枠Xosに相当する部分となる。このフィルタ処理された全データ、または現在のマクロブロックC−MB以外のマクロブロックに属する画素データは、フィルタ処理されたピクチャデータとして図12の経路W2で制御部23により再び外部メモリに格納される。
ここで図15に示すように、現在のマクロブロックC−MBに対して、復号後の再構成されたピクチャにおいて下部に位置するマクロブロック(Below MB)B−MBが現在のマクロブロックC−MBとなった時に利用するための中間結果としてのデータも、図12のW2の経路で外部メモリに格納される。これは図16の(B)中の枠KXの部分の画素データに相当する。
以上の処理の後にオーバーラップスムージングフィルタ15での処理後の現在のマクロブロックC−MBに属するデータや、オーバーラップスムージングフィルタ15でフィルタ処理された直前のマクロブロックL−MBに属していたデータは、動き補償などの他の経路で処理されたインター符号化データと加算され、デブロッキングフィルタ17に送られる。
以上は、輝度(Y)信号のデータについて説明したものであるが、カラー画像の場合のクロマ信号Cb,Crのマクロブロックについても同様にオーバーラップスムージング処理が行われ、このオーバーラップスムージング処理される範囲は、図17に示すように、枠Xbos、Xrosで囲まれた範囲となる。
なお、本明細書においては、主として輝度(Y)信号のデータのフィルタ処理について説明し、クロマ(Cb,Cr)信号のデータについては説明を省略している。
次のデブロッキングフィルタ17でのデブロッキング処理では、現在のマクロブロックC−MBに対してオーバーラップスムージングフィルタ15と同様に図12のR3に示すような経路で、必要とされる直前のマクロブロックL−MBと上部マクロブロックA−MBとその直前のマクロブロックLA−MBの4つのマクロブロックに所属するデータがデブロッキングフィルタ17に取り込まれる。そして最後に図12のW4の経路によって復号画像(Decode Picture)が外部メモリに格納される構成となる。
従来技術として、非特許文献1には、上記VC−1動画像圧縮符号化方式の規格が開示されている。
SMPTE 421M 規格書、 SMPTE Draft Standard for Television, SMPTE(米国映画テレビジョン技術者協会)、2005年8月23日
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図1は、本発明の実施の形態の一例の構成を概略的に示すブロック図である。SMTPE 421M(いわゆるVC−1)の規格に基づいてエンコードされたビットストリーム(Bit Stream)信号は、図1に示すようなデコーダシステムに入力され、ビットストリーム構造解析(Parsing)モジュール11により構造解析され、そのデータの符号化手法により、イントラ(Intra)符号化データとインター(Inter)符号化データとに分類される。イントラ符号化データ及びインター符号化データは、復号画像(Decode Picture)を生成する時のデータの再構成処理が異なる。ビットストリーム構造解析モジュール11からは動きベクトル(Motion Vector)も出力される。
ビットストリーム構造解析モジュール11からのイントラ符号化データ及びインター符号化データは、AC/DC予測(Prediction)モジュール12を介して、逆量子化/逆DCT(IQ/IDCT)モジュール13に送られ、逆量子化及び逆DCTが施される。ビットストリーム構造解析モジュール11からの動きベクトルは、動きベクトル予測モジュール21を介して動き補償モジュール22に送られ、動き補償モジュール22では、制御部23により外部メモリから読み出された復号データを用いて動き補償が施される。
ここで、イントラ符号化データは、オーバーラップスムージングフィルタ処理以降ではデータ処理を施されないことから、デブロッキングフィルタ処理の直前までにインター符号化データと加算されれば、デブロッキングフィルタ処理に違いは生じない。この点を考慮し、図1に示すように、オーバーラップスムージングフィルタ31の直前に加算器25を設けて、逆量子化/逆DCTモジュール13からのイントラ符号化データとインター符号化データの混在したデータに、動き補償モジュール22からのインター符号化データを加算するようにしている。
加算器25からの加算データは、オーバーラップスムージングフィルタ31及びデブロッキングフィルタ32を一体化したフィルタ処理部30に送られる。このフィルタ処理部30内では、イントラ符号化データとインター符号化データとを選別し、それぞれの符号化データに対して必要とされる処理を行う仕組みにすることにより、オーバーラップスムージングフィルタ31とデブロッキングフィルタ32とを連続して配置することを可能としている。一体化したことで、2つのフィルタ31,32間で処理する時に必要な復号画像(Decode Picture)の重複画素エリア(後述する図2の範囲MX)を、図1に示すような内部記憶保持領域(例えばSRAM等のキャッシュ)のメモリ33として内部モジュールに格納することで、イントラ符号化データを処理する場合において、外部メモリへのアクセス頻度、データ転送量を削減することが可能なシステムを構成している。
オーバーラップスムージングフィルタ31及びデブロッキングフィルタ32を一体化したフィルタ処理部30は、最初に処理されるべきデータをイントラ符号化データとインター符号化データに選別する手段を有し、オーバーラップスムージングフィルタ処理に必要な一時的なデータを格納する手段および前記図15の上部マクロブロック(Above MB)A−MBのデータを一時的に格納する手段であるSRAM等のメモリ34と、デブロッキングフィルタ処理に必要な一時的なデータを格納する手段であるSRAM等のメモリ35及び上部マクロブロックA−MBのデータを一時的に格納する手段であるSRAM等のメモリ36と、2つのフィルタ処理に共通のデータを格納する手段である上記メモリ33とを有している。
ここで、オーバーラップスムージングフィルタ処理及びデブロッキングフィルタ処理に必要とされる画素範囲について、図2を参照しながら説明する。この図2において、前記図15と共に説明したように、上記2つのフィルタ処理を行うために、現在送られてきているマクロブロック(Current MB)C−MBと、直前のマクロブロック(Left MB)L−MBと、現在のマクロブロックC−MBに対してピクチャが再構成された時に上部に位置する上部マクロブロック(Above MB)A−MBと、この上部マクロブロックA−MBの直前のマクロブロック(Left Above MB)LA−MB(ピクチャが再構成された時に上部マクロブロックA−MBの左に位置するマクロブロック)の、合計4つのマクロブロックC−MB,L−MB,A−MB,LA−MBに属するデータを必要とする。本発明の実施の形態となる図1のデコーダシステムのフィルタ処理部30の場合、上記オーバーラップスムージング処理に必要とされる範囲をMos、上記デブロッキングフィルタ処理に必要とされる範囲をMdbにて表しており、これらの2つのフィルタ処理で必要とされる各範囲の間では部分MXが重複している。この重複範囲MXが、フィルタ処理部30内のメモリ33に格納される。
フィルタ処理部30に送られたデータは、最初にイントラ符号化データかインター符号化データで処理方法が選別される。イントラ符号化データの場合、オーバーラップスムージングフィルタ31にデータが送られ、現在送られてきているマクロブロック(Current MB)C−MBに属するデータ以外の処理に必要なデータが、図1のR1の経路で外部記憶装置(SDRAMなどのメモリ:外部メモリ)から読み込まれる。図1のR1の経路で外部メモリから読み込まれるデータは、現在のマクロブロックC−MBに対して、上部マクロブロックA−MBとその直前のマクロブロックLA−MBのデータである。また、直前のマクロブロックL−MBに属しているが、現在のマクロブロックC−MBがモジュールに送られてくる今回のタイミングで必要とされるデータは、直前のマクロブロックL−MBが現在マクロブロックとして処理される1つ前のタイミングで内部のメモリ34に格納(図1の経路W5)しておき、現在のタイミングで図1のR5の経路に示すように内部より読み出すような工夫を施すことができる。図1のR1とR5の経路で読み込まれたデータと、現在のデータ(現在のマクロブロックC−MB)とによってオーバーラップスムージングフィルタ処理されたデータの中で、次のオーバーラップ処理されるマクロブロックの処理に必要なデータは、図1のW5の経路でメモリ34に書き込まれる。また、前記図15に示すような再構成された画像(Picture)において、下部のマクロブロックB−MBが現在マクロブロックとなった時点で最終処理されるべき中間データは、図1のW2の経路によって外部メモリに書き出される。
さらに、完全に処理が終了したデータは、図1のW6の経路に示すようにモジュール内部のデータ格納手段のメモリ33に書き込まれる。次にオーバーラップスムージング処理されたデータはデブロッキングフィルタ処理を行うが、この時、2つのフィルタ処理で重複する部分のデータは、外部メモリではなく図1のR6の経路でメモリ33から読み出している。
またデブロッキングフィルタ処理に必要な画素データの中で直前のマクロブロックL−MBに属する画素のデータは、メモリ33に格納するデータ量を調整することで、図3に示すデータ格納構成で直前のマクロブロックL−MBと現在のマクロブロックC−MBのデータなどを連続して格納し、内部キャッシュのようにモジュール内に保持しておくことで、メモリ33から読み出すことが可能となる。図3では実際のハードウェアシステムの都合上とオーバーラップスムージング処理後のデータを書き込むタイミングとデブロッキングフィルタ処理の時に読み出すタイミング上の制約から、メモリ33の格納サイズとして、マクロブロックサイズとして3つのマクロブロック分(MB−0,MB−1,MB−2)を用意していることを示している。また、オーバーラップスムージング処理とは重複しない部分の上部マクロブロックA−MBやその直前のマクロブロックLA−MBに属する復号画像の画素は、図1のR3の経路で外部メモリから読み込むことで用意される。デブロッキングフィルタ処理において処理の中間結果は図1のメモリ35に一時的に格納される。そしてデブロッキングフィルタ処理が完了したデータは図1のW4の外部メモリに向かう経路で、再構成された復号画像として外部メモリに書き出される。
ここで、図3において、範囲Xosがオーバーラップスムージング処理が完了する領域を、範囲Xdbがデブロッキングフィルタ処理が完了する領域を示し、3つのマクロブロック(MB−0,MB−1,MB−2)及びこれらの3つのマクロブロックの上部のオーバーラップスムージング処理される2ライン分を含む範囲Maのデータがメモリ33に内部保留され、マクロブロックMB−0,MB−1の上部のマクロブロック領域から上記内部保留される2ライン分を除いた範囲Mbのデータが、外部メモリから経路R3を介してメモリ36に読み込まれる。また、オーバーラップスムージング処理範囲Xos内の上部2ラインの範囲Mcが、オーバーラップスムージング処理時に外部メモリから読み出される画素領域を示している。
フィルタ処理部30の入力側の選別手段によって選別されたインター符号化データは、オーバーラップスムージング処理ブロックではデータの加工は行わずに、イントラ符号化データの時と同様なデータ範囲を図1のメモリ33に格納する。これによって後段のデブロッキングフィルタブロックではインターかイントラかの違いなく読み出す範囲を処理することが可能となる。以上のような作用から、2つのフィルタ処理ブロック間で共有できるデータ領域を外部メモリに書き出すことと読み込む場合の双方の場合において、外部メモリへのアクセス頻度とデータ量が改善されることが実現できる。同時にレイテンシ(処理のための待ち時間)の大きい外部メモリへのアクセスが削減されることで、このモジュールとしてのレイテンシの改善も実現できる。
次に、本発明の実施の形態のメモリアクセス及びレイテンシについて、従来例の場合と対比しながら説明する。
図4は、前記図12に示したような従来のデコーダシステムのオーバーラップスムージングフィルタ15におけるオーバーラップスムージング処理に伴うメモリ操作範囲を示しており、上述したように、現在のマクロブロックC−MBに対して、直前のマクロブロックL−MB、上部マクロブロックA−MB、上部マクロブロックA−MBの直前のマクロブロックLA−MBの合計4つのマクロブロックを示している。これらの4つのマクロブロックC−MB,L−MB,A−MB,LA−MBは、以下の図5〜図10についても同様である。現在のマクロブロックC−MBに対してオーバーラップスムージング処理が完了する部分は、図中の破線の枠で囲った範囲Xosである。
この図4において、図12の制御部23を介して外部メモリからオーバーラップスムージングフィルタ15のメモリ15mに経路R1で読み込まれるデータは、オーバーラップスムージング処理範囲Xosの内の上部マクロブロックA−MB及びその直前のマクロブロックLA−MBに対応する部分K1のデータである。次に、オーバーラップスムージング処理後にメモリ15mから図12の経路W2で外部メモリに書き出されるデータは、オーバーラップスムージング処理範囲Xos及びその下部領域の範囲K2を含む範囲K3のデータとなる。このK3のデータの書き出し処理には、2マクロブロック(2MB)サイズのバッファが必要とされる。なお、上記範囲K2のデータは、上述した図15の下部のマクロブロックB−MBが現在のマクロブロックになったときに利用するための中間結果として外部メモリに格納されるものである。また、現在のマクロブロックC−MB内における範囲Xosの右側に隣接する範囲K4のデータは、メモリ15m内に内部保留されて、右隣のマクロブロックが現在のマクロブロックになったときに利用される。
次に、図5、図6は、前記図12に示した従来のデコーダシステムのデブロッキングフィルタ17におけるフィルタ処理に伴うメモリ操作範囲を示している。図5は、図12のデブロッキングフィルタ17内のメモリ17mに内部保留され、また外部メモリから経路R3で読み込まれるデータを示し、現在のマクロブロックC−MBから時間的に連続する直前のマクロブロックL−MB等の3マクロブロック(3MB)分の範囲K5のデータがメモリ17mに内部保留され、外部メモリからは、上部マクロブロックA−MB及びその直前のマクロブロックLA−MBの2マクロブロック(2MB)分の範囲K6のデータが経路R3を介してメモリ17mに読み込まれる。
図6は、デブロッキングフィルタ処理後のメモリ操作範囲を示し、図中の破線の枠で囲った範囲Xdbは、デブロッキングフィルタ処理が完了した部分を示している。図12のデブロッキングフィルタ17内のメモリ17mからは、上記デブロッキングフィルタ処理範囲Xdb及びその下部領域を含む範囲K7(図6中の斜線部)のデータが経路W4で外部メモリに書き出される。
図7は、このような従来のオーバーラップスムージング処理及びデブロッキングフィルタ処理におけるレイテンシを模式的に示す図であり、図7の(A)は、図12の逆量子化/逆DCT(IQ/IDCT)モジュール13から送られてきたデータ列を示し、マクロブロックMB1をカレントマクロブロックC−MBとしている。図7の(B)は、図7の(A)のデータ列を内部バッファに書き込んだときのオーバーラップスムージング処理前のデータ列を示し、このときのレイテンシL1は64ピクセル(画素)分となる。この図7の(B)のデータ列をオーバーラップスムージング処理することによりレイテンシL2だけ遅れた図7の(C)のデータ列となり、書き出しバッファから処理後のデータをオーバーラップスムージングフィルタ15から外部メモリに出力するときの図7の(D)のデータ列のレイテンシL3は、3マクロブロック(3MB)+L2(オーバーラップスムージング処理のレイテンシ)となる。
次に、デブロッキングフィルタ処理は、図12のオーバーラップスムージングフィルタ15から加算器16を介して得られたデータ列に対してデブロッキングフィルタ17により行われる。このとき、図7の(E)に示すように、上述したデブロッキングフィルタ処理範囲のため、2マクロブロック(2MB)サイズのデータを内部メモリ17mに保持する必要があるため、レイテンシL4は2MB分の64ピクセル(画素)×2となる。内部メモリ17mに保持されたデータに対してデブロッキングフィルタ処が施されることによりレイテンシL5だけ遅れた図7の(F)のデータ列となり、図7の(G)に示すタイミングで外部メモリに書き出しされる。
このような従来のオーバーラップスムージング処理及びデブロッキングフィルタ処理に対して、本発明の実施の形態の図1に示すような構成によれば、外部メモリへのアクセス頻度とデータ量が改善され、レイテンシも改善される。
図8は、上記図1のデコーダシステムのフィルタ処理部30内のオーバーラップスムージングフィルタ31によるオーバーラップスムージング処理に伴うメモリ操作範囲を示しており、現在のマクロブロックC−MBに対してオーバーラップスムージング処理が完了する部分は、図中の破線の枠で囲った範囲Xosである。
この図8において、図1の制御部23を介して外部メモリからオーバーラップスムージングフィルタ31に経路R1で読み込まれるデータは、オーバーラップスムージング処理範囲Xosの内の上部マクロブロックA−MB及びその直前のマクロブロックLA−MBに対応する部分K11のデータである。次に、オーバーラップスムージング処理後にオーバーラップスムージングフィルタ31から図1の経路W2で外部メモリに書き出されるデータは、オーバーラップスムージング処理範囲Xosの下部領域の範囲K12のデータとなる。オーバーラップスムージング処理範囲Xos内の書き出し範囲K13のデータの書き出し用のバッファは、図1のフィルタ処理部30内のデブロッキングフィルタ32の内部メモリに吸収される。従って、上記図4の従来のメモリ操作範囲に比べて、外部メモリアクセスが32画素分削減され、また、データ書き出し用のバッファの2マクロブロック(2MB)分が削減される。なお、上記範囲K12のデータは、上述した図15の下部のマクロブロックB−MBが現在のマクロブロックになったときに利用するための中間結果として外部メモリに格納されるものである。また、現在のマクロブロックC−MB内における範囲Xosの右側に隣接する範囲K14のデータは、メモリ34内に内部保留されて、右隣のマクロブロックが現在のマクロブロックになったときに利用される。
次に、図9、図10は、図1のデコーダシステムのデブロッキングフィルタ32によるフィルタ処理に伴うメモリ操作範囲を示している。図9は、図1のフィルタ処理部30内のメモリ33に内部保留され、また外部メモリから経路R3で読み込まれるデータを示しいる。現在のマクロブロックC−MBから時間的に連続する直前のマクロブロックL−MB等の3マクロブロック(3MB)分と、上記オーバーラップスムージング処理された2ライン分とを含む範囲K15のデータがメモリ33に内部保留され、外部メモリからは、上部マクロブロックA−MB及びその直前のマクロブロックLA−MBの2マクロブロック(2MB)分から上記オーバーラップスムージング処理されて内部保留された部分を除く範囲K16のデータが経路R3を介してメモリ36に読み込まれる。この図9中の範囲K15、K16は、上記図3の範囲Ma、Mbにそれぞれ相当し、範囲K15が3マクロブロック(3MB)+48画素×2ライン、範囲K16が2マクロブロック(2MB)−32画素×2ラインとなる。
図10は、デブロッキングフィルタ処理後のメモリ操作範囲を示し、図中の破線の枠で囲った範囲Xdbは、デブロッキングフィルタ処理が完了した部分を示している。図1のデブロッキングフィルタ32内のメモリ35からは、上記デブロッキングフィルタ処理範囲Xdb及びその下部領域を含む範囲K17(図10中の斜線部)のデータが経路W4で外部メモリに書き出される。
図11は、このような本発明の実施の形態のオーバーラップスムージング処理及びデブロッキングフィルタ処理におけるレイテンシを模式的に示す図である。図11の(A)は、図1の逆量子化/逆DCT(IQ/IDCT)モジュール13から送られてきたデータ列を示し、マクロブロックMB1をカレントマクロブロックC−MBとしている。図11の(B)は、図11の(A)のデータ列を内部バッファに書き込んだときのオーバーラップスムージング処理前のデータ列を示し、このときのレイテンシL11は64ピクセル(画素)分となる。この図7の(B)のデータ列をオーバーラップスムージング処理し、オーバーラップスムージングフィルタ31のバッファに直接書き込めるため、図11の(C)に示すオーバーラップスムージングフィルタ31でのレイテンシL12は、64画素+1マクロブロック(1MB)となる。
次に、デブロッキングフィルタ処理は、図1のオーバーラップスムージングフィルタ31からメモリ33を介して得られたデータ列に対してデブロッキングフィルタ32により行われる。このとき、図11の(D)に示すように、上述したデブロッキングフィルタ処理範囲のため、2マクロブロック(2MB)サイズのデータを内部メモリに保持する必要があるため、レイテンシL13は上記オーバーラップスムージング処理後にさらに1マクロブロック(1MB)だけ必要となる。内部メモリに保持されたデータに対してデブロッキングフィルタ処が施されることによりレイテンシL14だけ遅れた図11の(E)のデータ列となり、図11の(F)に示すタイミングで外部メモリに書き出しされる。
これらの図4〜図11から明らかなように、本発明の実施の形態によれば、従来に比べて、システムが外部メモリにアクセスする頻度を削減することが可能となり、システムが外部メモリにアクセスするデータ量を削減することが可能となり、システムが外部メモリにアクセスするデータ量と頻度が削減されることで、システムの他のモジュールの外部メモリへのアクセス機会を増加することができ、全体としてのレイテンシの改善につながる。
次に、他の実施の形態として、モジュールにデータが送られて符号化を選別する手段において、インター符号化データと選別された場合、図1に示す破線のようにオーバーラップスムージングフィルタ31にデータを送らず、直接デブロッキングフィルタ32にデータを送ることによって、処理にかかるレイテンシを改善することも考えられる。
また他の実施の形態として、モジュール内部に構成されるデータの一時格納先を1つから複数で構成するパターンが存在する。
以上説明したような本発明の実施の形態によれば、図1に示すようなデコーダシステムにおいて、フィルタ処理部30内の2つのフィルタ31,32間のデータの流れにおけるレイテンシが改善され、フィルタ処理部30の内部のィルタ処理に必要な一時データを格納するメモリ33を共通で利用できることになり、内部の格納手段(メモリ)のリソースの削減が実現できる。また、2つのフィルタ31,32において必要とされるパラメータデータなどを再利用する仕組みを取り入れることが可能となりモジュールを構成するリソースの削減とパラメーターデータへのアクセス量の削減も実現できる。また、フィルタ処理を行う前にイントラ符号化データとインター符号化データを加算するので、フィルタ処理を必要としないデータが送られてきた場合、後段のモジュールの構成次第によっては、フィルタモジュールをパスして最終的な復号画像を外部メモリに書き出す構成が可能となり、システム全体のレイテンシの改善が実現できる。また、上記の場合において、フィルタモジュールの電源をアダプティブにコントロールする仕組みを組み込むことでフィルタブロックの電源をオフにすることも可能となり、システムとしての消費電力の削減が可能となる。さらに、リアルタイムデコードを考えた場合、デブロッキングフィルタの処理に必要な画素データを用意するための構成において、事前に最適な形で内部キャッシュにデータを用意することが可能となり、デブロッキングフィルタの構成を簡素にすることが可能となる。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
11 ビットストリーム構造解析モジュール、 13 逆量子化/逆DCTモジュール、 22 動き補償モジュール、 23 制御部、 25 加算器、 30 フィルタ処理部、 31 オーバーラップスムージングフィルタ、 32 デブロッキングフィルタ、 33,34,35,36 メモリ(SRAM)