近年において種々の動画像圧縮符号化技術が提案されているが、その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)を生成する時のデータの再構成処理が異なる。
VC−1デコーダにおいて、入力されたビットストリームを構造解析(Parsing)して得られたイントラ符号化データ及びインター符号化データは、AC/DC予測(Prediction)され、逆量子化/逆DCT(IQ/IDCT)が施された後、イントラ符号化データがオーバーラップスムージングフィルタ(Overlap Smoothing Filter)に送られる。このオーバーラップスムージングフィルタは、ブロック境界(エッジ)での歪を軽減するために、ブロック境界をスムージングする処理を行うフィルタである。
規格書SMTPE 421M によってVC−1デコーダとして規格化されている上記オーバーラップスムージング(Overlap Smoothing)処理について説明する。
このオーバーラップスムージング処理は、図20に示すように、8×8画素のブロックの境界(エッジ)について、4タップのフィルタ処理を行うものであり、垂直エッジ、水平エッジの順に行われ、Y(輝度)/C(クロマ)信号のデータに対して同じ演算が行われ、Iピクチャ(フレーム内符号化画像)又はPピクチャ(前方予測符号化画像)のみに対して処理が行われる。
図21は、前段のモジュールからあるいは外部メモリから送られてくるデータの時系列を示しており、ピクチャ再構成処理の単位をマクロブロック(MB)としている。この図21の矢印に示すように送られてくるデータの時系列に対してレイテンシ(処理のための待ち時間)を少なくする場合の方法として、上記オーバーラップスムージング処理を行うために必要とされるマクロブロック(MB)を図22に示す。この図22において、現在処理されるべく前段のモジュールから送られてきた(あるいは外部メモリから読み出された)現在のマクロブロック(Current MB)C−MBに対して、オーバーラップスムージング処理される範囲(処理が完了する領域)はXosとなる。この図22の範囲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に属するデータを必要とする。
ここで、図22の範囲Xdbは、上記規格書SMTPE 421M のVC−1デコーダ規格において、オーバーラップスムージング処理されたデータに対して施される別種のブロック境界歪軽減のためのデブロッキングフィルタ(Deblocking Filter)処理の処理範囲を示しており、上記オーバーラップスムージング処理の場合と同様に4つのマクロブロックC−MB,L−MB,A−MB,LA−MBに属するデータが必要となる。なお、上記VC−1規格におけるデブロッキングフィルタ処理は、Iピクチャ、Bピクチャ(双方向予測符号化画像)では8×8ブロックの境界(エッジ)のみに適用され、Pピクチャでは4×4ブロック境界まで適用されるものであり、8タップフィルタで、境界の2画素だけが変化し、水平エッジ、垂直エッジの順に処理が行われ、Y(輝度)/C(クロマ)信号のデータに対して同じ演算が行われる。なお、上記図22の範囲Xdbは、フィールド符号化の場合とフレーム符号化の場合を考慮して、上記デブロッキングフィルタ処理が完了する領域を示している。
なお、図21、図22の現在のマクロブロックC−MBに対して、復号後のピクチャにおいて下部に位置するマクロブロックをB−MB(Below MB)としている。
上記オーバーラップスムージング処理についてさらに説明すると、図23の(A)に示すように、輝度(Y)信号のデータについての1つのマクロブロックは、8×8画素のブロック(いわゆるDCTブロック)を4ブロック(Y0,Y1,Y2,Y3)有して成り、この8×8画素ブロックの画素データがブロック単位で、ブロックY0、ブロックY1、ブロックY2、ブロックY3の順に送られてきて、オーバーラップスムージング処理モジュール内のキャッシュメモリに格納される。そして、図23の(B)に示すように、4つのブロックY0,Y1,Y2,Y3のデータの全て(1マクロブロック分)がキャッシュメモリ内に記憶された後、上記オーバーラップスムージング処理が施される。この処理の際に、メモリ内の画素については、送られてきた順に関係なく、任意に読み出し可能となる。図23の(C)は、オーバーラップスムージング処理が施される部分を示しており、領域OSa,OSbは、垂直エッジのフィルタ作用としてオーバーラップスムージング処理される画素データ領域を、領域OSc,OSdは、水平エッジのフィルタ作用としてオーバーラップスムージング処理される画素データ領域をそれぞれ示している。また、領域e1〜e4は、垂直エッジの、水平エッジの両フィルタで作用される画素データ領域を示している。
図23の(C)や図22に示すように、輝度(Y)成分のオーバーラップスムージング処理においては、処理範囲が複数のYのブロックにまたがることになる。例えば、図23の領域e1では、図22に示されるようなマクロブロックの位置関係における上記マクロブロックL−MB,A−MB,LA−MBと現在のマクロブロックC−MBのY0の4つに属する画素データが必要になる。
上記規格書SMTPE 421M 等に示されている従来の技術においては、Y成分のオーバーラップスムージング処理においては8×8画素ブロックY0〜Y3の4つのブロックを一つの単位として扱い、これを現在のマクロブロックC−MBとし、残りの3つのマクロブロックL−MB,A−MB,LA−MBのデータを外部メモリなどからの読み込んでフィルタ処理を実施する構成となっていた。
一般に、現在のマクロブロックC−MBに対して準備される画素データは、周辺マクロブロックの全てのデータを用意する必要はなく、図24や図25に示すように、周辺2画素の範囲となる。
図24は、輝度(Y)成分について、オーバーラップスムージング処理に必要とされる現在のマクロブロックC−MB以外の各マクロブロックに属する画素範囲を示す図であり、範囲Xosは上述したようにオーバーラップスムージング処理が完了する領域を示している。この図24において、現在のマクロブロックC−MB以外のオーバーラップスムージング処理に必要とされる画素範囲は、垂直エッジ処理のための垂直2ライン×16画素(=2画素×水平16ライン)の領域Kvと、水平エッジ処理のための水平2ライン×14画素の領域Khと、垂直及び水平の両エッジ処理が施される2×2画素の領域Kvhとから成る。ここで、垂直2ライン×16画素の領域Kv内における上記範囲Xos以外の2×2画素の部分Kvnは、現在のマクロブロックC−MBのオーバーラップスムージング処理の際に垂直エッジのフィルタ処理は行われるが、水平エッジのフィルタ処理は完了しておらず、上記図21、図22の下部マクロブロックB−MBが現在のマクロブロックとなったときに行われるため、2×2画素の部分Kvnのデータは、中間結果データとして外部メモリに格納される。
図25の(A),(B)は、カラー映像信号のクロマ成分(Cb,Cr成分)について、オーバーラップスムージング処理に必要とされる現在のマクロブロック以外の各マクロブロックに属する画素範囲を示す図であり、オーバーラップスムージング処理が完了する領域を、それぞれXos(Cb),Xos(Cr)で示している。クロマ(Cb,Cr)成分の場合のマクロブロックが8×8画素で構成される以外は、上述した図24の輝度(Y)成分の場合と同様であり、例えば、クロマ信号のCb成分を示す図25の(A)において、現在のマクロブロックC−MB(Cb)以外のオーバーラップスムージング処理に必要とされる画素範囲は、垂直エッジ処理のための垂直2ライン×8画素(=2画素×水平8ライン)の領域Kv(Cb)と、水平エッジ処理のための水平2ライン×6画素の領域Kh(Cb)と、垂直及び水平の両エッジ処理が施される2×2画素の領域Kvh(Cb)とから成る。また、クロマ信号のCr成分を示す図25の(B)では、図25の(A)の各指示符号の(Cb)を(Cr)に付け替えている。すなわち、図24中のY成分の場合の各指示符号に対して、図25の(A)のCb成分の場合は(Cb)を付し、図25の(B)のCr成分の場合は(Cr)を付すことによって、図24の説明が容易に適用できるため、説明を省略する。
従来技術として、非特許文献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が施された後、選択スイッチ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)される。
また、別法として選択スイッチ14を使用せずに、オーバーラップスムージングフィルタ15にインター符号化データ、イントラ符号化データの双方を入力し、それぞれの符号化に沿って処理方法を工夫する事で、選択スイッチ14に入力されるデータが、選択スイッチ14を必要とせずに、オーバーラップスムージングフィルタ15から加算器16にデータを送られる事も可能となる。
ここで、図1の制御部23を介して外部メモリからオーバーラップスムージングフィルタ15の内部メモリ15mに経路R1で読み込まれるデータは、図24のオーバーラップスムージング処理範囲Xosの内の上部マクロブロックA−MB及びその直前のマクロブロックLA−MBに対応する部分のデータである。また、オーバーラップスムージング処理後に内部メモリ15mから図1の経路W2で外部メモリに書き出されるデータは、オーバーラップスムージング処理範囲Xos及びその下部領域を含む範囲のデータとなる。
なお、デブロッキングフィルタ17の内部メモリ17mについても、外部メモリから経路R3でフィルタ処理に必要なデータが読み込まれ、処理後のデータが経路W4で外部メモリに書き出される。
図2は、オーバーラップスムージング処理の際に一時的にデータが記憶される記憶領域(メモリ)を示している。この図2に示す一時記憶領域は、従来の図24に示されるようなマクロブロック単位のオーバーラップスムージング処理を、8×8ブロック(いわゆるDCTブロック)単位で行うと共に、8×8ブロックで垂直エッジフィルタ処理と水平エッジフィルタ処理とを完了して次の8×8ブロックに処理を進めるようにする場合に最低限必要とされるメモリ領域である。
先ず、従来の図24と共に説明したようなオーバーラップスムージング処理について、図3の(A)に示す輝度(Y)信号の8×8ブロックY0の処理に注目し、処理に必要な周辺マクロブロックL−MB,A−MB,LA−MBに属する画素領域を抽出すると、図3の(B)に示すようになる。すなわち、現在のマクロブロックC−MB内の右上のブロックY0を処理するために必要な周辺マクロブロックの画素領域は、直前のマクロブロックL−MBに属する垂直2ライン×8画素(=2画素×水平8ライン)の領域Kv(Y0)と、上部マクロブロックA−MBに属する2ライン×6画素の領域Kh(Y0)と、上部マクロブロックA−MBの直前のマクロブロックLA−MBに属する2×2画素の領域Kvh(Y0)とに分解できる。これは、図25に示したクロマ成分Cb,Crの場合と同様な構成とも考えられ、回路規模の削減に寄与できる。しかしながら、輝度(Y)信号の8×8ブロックY0の場合には、クロマ成分Cb,Crの場合と異なり、残りのブロックY1,Y2,Y3についての処理を考慮する必要がある。
図4は、輝度(Y)信号の8×8ブロックY1,Y2,Y3についての処理にそれぞれ必要とされる、当該ブロック以外の範囲での画素領域を示すものである。この図4において、ブロックY1に関しては、ブロックY1以外の範囲において、2ライン×8画素(=2画素×水平8ライン)の領域Kv(Y1)と、2ライン×6画素の領域Kh(Y1)と、2×2画素の領域Kvh(Y1)とが必要となり、以下同様に、ブロックY2に関してはブロックY2以外で、領域Kv(Y2)、領域Kh(Y2)、領域Kvh(Y2)が必要となり、ブロックY3に関してはブロックY3以外で、領域Kv(Y3)、領域Kh(Y3)、領域Kvh(Y3)が必要となる。
これらの図3、図4に示した各8×8ブロックY0〜Y3についてのオーバーラップスムージング処理に必要とされる周辺画素領域を考慮して、上記図2に示すように、現在のマクロブロックC−MBの画素データに対してオーバーラップスムージング処理を行う際に一時的にデータが記憶される記憶領域(メモリ領域)を規定する。
図2の(A)は、輝度(Y)信号成分のフィルタ処理時にデータを一時保持しておくためのメモリ領域を示し、現在のマクロブロックC−MBに対して、前記図21、図22に示す上部マクロブロックA−MBに属する処理に必要な画素データを一時的に保持する2ライン×16画素分のメモリ領域Mhと、直前のマクロブロックL−MBに属する処理に必要な画素データを一時的に保持する垂直2ライン×16画素分(=2画素×水平16ライン分)のメモリ領域Mvと、8×8ブロックY2,Y3の処理時に上部の8×8ブロックY0,Y1に属する処理に必要な画素データを一時的に保持する2ライン×16画素分のメモリ領域Mmとが必要とされ、さらに、垂直エッジフィルタ処理後に水平エッジフィルタ処理を行うまでにデータを一時的に保持する2ライン×8画素分のメモリ領域Mtが必要とされる。なお、上記図4における領域Kv(Y1),Kv(Y3)のデータを一時的に保持するためには、メモリ領域Mvを流用することで回路規模を削減する構成としている。また、図2のメモリ領域Mh’は、前記図21、図22に示す下部マクロブロックB−MBが現在のマクロブロックとなるときに水平エッジフィルタ処理に必要とされるデータが一時的に保持される領域であり、上記メモリ領域Mhが流用される。
図2の(B)は、クロマ(Cb,Cr)信号成分のフィルタ処理時にデータを一時保持しておくためのメモリ領域を示し、上部マクロブロックに属する処理に必要な画素データを一時的に保持する2ライン×8画素×2(Cb,Cr用)分のメモリ領域MhCと、直前のマクロブロックに属する処理に必要な画素データを一時的に保持する垂直2ライン×8画素(=2画素×水平8ライン)×2(Cb,Cr用)分のメモリ領域MvCとが必要とされる。垂直エッジフィルタ処理後に水平エッジフィルタ処理を行うまでにデータを一時的に保持する2ライン×8画素分のメモリ領域Mtは、上記輝度(Y)信号成分の場合のメモリ領域Mtを流用できる。なお、クロマ(Cb,Cr)信号成分のマクロブロックは8×8画素であり、上記輝度(Y)信号成分の場合のメモリ領域Mmは不要であり、下部マクロブロックが現在のマクロブロックとなるときに水平エッジフィルタ処理に必要とされるデータが一時的に保持されるメモリ領域MhC’は、上記領メモリ域MhCが流用される。
なお、上記各メモリ領域Mh,Mv,Mm,Mt,MhC,MvCは、SRAM等のメモリ素子をそれぞれ個別に用いてもよく、1つのメモリを分割して用いてもよく、また、半導体メモリ等でなくとも一時保持できる記憶手段であれば何でもよい。
次に、上述したような本発明の実施の形態の動作について、図5〜図16を参照しながら説明する。図5〜図12は、輝度(Y)信号成分のオーバーラップスムージング処理を8×8ブロック(いわゆるDCTブロック)単位で行うための周辺画素を保持しているメモリ領域の使用手順とオーバーラップスムージング処理手順を示している。図13〜図16は、クロマ(Cb,Cr)信号成分の場合のメモリ領域の使用手順とオーバーラップスムージング処理手順を示している。
図5、図6は、オーバーラップスムージング処理のために入力されるデータがY成分の8×8ブロックY0のデータであるときの処理を示している。ここで、上記図3に示したように、ブロックY0の処理を行うときに必要な直前のマクロブロックL−MBに属する画素を、図5のメモリ領域MvのデータP1として読み出し、入力されたブロックY0の画素データに応じてフィルタ処理の演算を行う。この時、本発明の実施の形態で特徴的な処理方法として、入力されてきた画素データに対して、わずかなレイテンシで画素を処理していくことが挙げられる。
すなわち、上記SMTPE 421M の規格書で規定されている処理手順は、前記図20に示したように、エッジを挟む4画素に対して垂直エッジ、水平エッジを処理するようなっている。また、対象とする画素が両方のエッジ処理を行う必要性がある場合は、垂直エッジを施した後、水平エッジを処理するように規定されている。そこで4画素用意できたとすれば、処理手順を守ることを前提に、ブロック全てのデータが揃う以前に処理を実行することができる。よって本実施の形態でも、処理を行うのに必要な画素データが入力された時点で直ちにエッジフィルタ処理を行っている。ここで、図5のブロックY0内の各画素毎に付した番号「0,1,2,・・・」は画素番号を入力順に表しており、例えば画素番号「1」の画素データが入力された時点で、画素番号「0,1」及びその左隣の上記データP1の2画素(直前のマクロブロックL−MBに属する2画素)の4画素分のデータに対して垂直エッジ処理を行い、処理までのレイテンシを短縮するように実施している。
このように、入力された画素データと、直前のマクロブロックL−MBに属するデータP1によって垂直エッジのフィルタ処理が行われるが、ブロックY0の上部2ライン分の画素は、必要な場合には現在のマクロブロックC−MBに対する上部マクロブロックA−MBのデータとの間で水平エッジのフィルタ処理を行うことが必要になる。そこで、垂直エッジの処理が済み、水平エッジ処理が終了していない画素のデータを一時的に上記メモリ領域Mtに保持する。メモリ領域Mtはメモリなどではなくても一時保持できる機構であれば構わない。上記メモリ領域Mhには上部マクロブロックA−MBに属している画素データと、その直前のマクロブロックLA−MBに属している画素データSD1,SD2をSDRAM等の外部メモリから読み込んで用意される。ブロックY0の処理には外部メモリからのデータSD1が用いられる。これらの上部マクロブロックA−MBやその直前のマクロブロックLA−MBの画素データは、上部マクロブロックA−MBが現在のマクロブロックである時に、垂直エッジ処理が終了した中間データとして、外部メモリに保持されたものであり、現在のマクロブロックC−MBの処理時に外部メモリから読み出されて上記メモリ領域Mhに書き込まれる。
メモリ領域Mhに外部メモリから書き込まれたデータの内、ブロックY0の処理に必要とされるデータSD1と、メモリ領域Mtに先ほど保持された垂直エッジ処理済みデータとによって水平エッジ処理を行う。この水平エッジ処理においてもレイテンシ短縮のため、メモリ領域Mtに格納されるデータのうち、処理に必要な垂直に並んだ画素のデータが準備できた時点で水平エッジ処理を行う。例えば、図5において、画素番号「11」のデータの入力時に水平エッジ処理が開始できるのならば、その時点から水平エッジ処理を開始する。
さらに、図6に示すように、ブロックY0のデータが入力されている過程で、垂直、水平エッジ処理を行うだけでなく、他のブロックでの処理に必要となる画素のデータを準備する処理を行う。例えば、上記図4のブロックY1を処理する際において、左隣のブロックY0に属する領域Kv(Y1)の画素データを準備するために、図6のブロックY0の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP3を、上記メモリ領域Mv(図中上半分の上記データP1が記憶されていた領域)に書き込む。これは、ブロックY0の垂直エッジ処理に使用するために、メモリ領域MvからデータP1を読み出して2度と読み出す必要のなくなった領域(メモリ領域Mvの図中の上半分の領域)を利用するものである。これにより保持エリアをブロックY0,Y2の時とブロックY1,Y3の時で共用することが可能となる。
次に、ブロックY0において垂直エッジ処理を終えた画素データで、ブロックY2の処理の時に必要な、図4の領域Kvh(Y2),Kh(Y2)の画素データを、図6に示すようにデータQ1として、上記メモリ領域Mmの半分の領域に保持していく。
以上のサイクルで、ブロックY0におけるオーバーラップスムージング処理は完結し、かつレイテンシを短縮することが可能となっている。
図7、図8は、8×8ブロックY0の右隣のブロックY1の画素データが入力された時のオーバーラップスムージング処理手順を示しており、上記図5、図6と共に説明したブロックY0の場合と略々同様な処理が行われる。すなわち、8×8ブロックY1の垂直エッジ処理を行うために、図7の上記メモリ領域Mvに保持された上記データP3が用意され、また、水平エッジ処理を行うために、上記メモリMhに外部メモリから書き込まれた図7のデータSD2が用意される。これらの画素データP3,SD2は、上記図4の各領域Kv(Y1),Kvh(Y1),Kh(Y1)のデータに相当する。さらに、図8に示すように、次のマクロブロックの8×8ブロックY0の処理の時に必要とされる画素データとして、ブロックY1の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP1’を用意する。このデータP1’は、図7のメモリ領域MvのデータP3が読み出されて垂直エッジ処理が行われ不要となった領域(メモリ領域MvのデータP3が記憶されていた領域)に書き込まれる。また、ブロックY1の垂直エッジ処理を終えた画素データで、ブロックY3の処理の時に必要な、図4の領域Kvh(Y3),Kh(Y3)の画素データを、図8に示すようにデータQ2として、上記メモリ領域Mmの半分の領域に保持していく。
同様に、図9、図10は、8×8ブロックY2の画素データが入力された時の処理手順を示しており、垂直エッジ処理を行うために図5の上記メモリ領域Mvに保持された上記データP2が用意され、水平エッジ処理を行うために、上記メモリMmに書き込まれた図6のデータQ1が用意される。これらの画素データP2,Q1は、上記図4の各領域Kv(Y2),Kvh(Y2),Kh(Y2)のデータに相当する。また、図10に示すように、次の8×8ブロックY3の処理の時に必要とされる画素データとして、ブロックY2の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP4を用意する。このデータP4は、図9のメモリ領域MvのデータP2が読み出されて垂直エッジ処理が行われ不要となった領域(メモリ領域MvのデータP2が記憶されていた領域)に書き込まれる。また、ブロックY2の垂直エッジ処理を終えた画素データで、前記図21、図22の下部マクロブロックB−MBが現在のマクロブロックとなるときのブロックY0の処理時に必要な、図4の領域Kvh(Y1),Kh(Y1)の画素データを、図10に示すようにデータSD1’として、上記メモリ領域Mhの半分の領域(上記データSD1が記憶されていた領域)に保持していく。このメモリ領域Mhに保持された画素データSD1’は、適当なタイミングで外部メモリに書き出される。
同様に、図11、図12は、8×8ブロックY3の画素データが入力された時の処理手順を示しており、垂直エッジ処理を行うために、図10のメモリ領域Mvに保持された上記データP4が用意され、また、水平エッジ処理を行うために、上記メモリMhに書き込まれた図8のデータQ2が用意される。これらの画素データP4,Q2は、上記図4の各領域Kv(Y3),Kvh(Y3),Kh(Y3)のデータに相当する。さらに、図12に示すように、次のマクロブロックの8×8ブロックY2の処理の時に必要とされる画素データとして、ブロックY3の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP2’を用意する。このデータP2’は、図11のメモリ領域MvのデータP4が読み出されて垂直エッジ処理が行われ不要となった領域(メモリ領域MvのデータP4が記憶されていた領域)に書き込まれる。また、ブロックY3の垂直エッジ処理を終えた画素データで、前記図21、図22の下部マクロブロックB−MBが現在のマクロブロックとなるときのブロックY1の処理の時に必要な、図4の領域Kvh(Y1),Kh(Y1)の画素データを、図12に示すようにデータSD2’として、上記メモリ領域Mhの半分の領域に保持していく。このメモリ領域Mhに保持された画素データSD2’は、適当なタイミングで外部メモリに書き出される。
次に、図13、図14は、クロマ信号のCb成分の現在のマクロブロックC−MB(Cb)の画素データが入力された場合のメモリ領域の使用手順及びオーバーラップスムージング処理手順を示す図である。図13において、クロマ成分のマクロブロックC−MB(Cb)の垂直エッジ処理を行うために、上記図2の(B)のメモリ領域MvC(の半分の領域)に保持された画素データP−Cbが用意される。この画素データP−Cbは、前記図25の(A)に示した現在のCb成分のマクロブロックC−MB(Cb)に対して、直前のマクロブロックL−MB(Cb)に属するオーバーラップスムージング処理に必要とされる領域Kv(Cb)の画素データに相当する。また、クロマ成分のマクロブロックC−MB(Cb)の水平エッジ処理を行うために、上記図2の(B)のメモリ領域MhC(の半分の領域)に外部メモリから書き込まれた画素データSD−Cbが用意される。この画素データSD−Cbは、前記図25の(A)の現在のマクロブロックC−MB(Cb)に対して、上部マクロブロックA−MB(Cb)及びその直前のマクロブロックLA−MB(Cb)に属する領域Kh(Cb)及びKvh(Cb)の画素データに相当する。ここで、クロマ成分用のメモリ領域MvC,MhCは、クロマ成分のマクロブロック毎の処理時に変更されなければならないため、上記Y成分のメモリ領域Mv,Mhとは別に確保する必要がある。
また、図14に示すように、次のCb成分のマクロブロックのオーバーラップスムージング処理の時に必要とされる画素データとして、現在のマクロブロックC−MB(Cb)の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP−Cb’を用意する。このデータP−Cb’は、図13のメモリ領域MvCのデータP−Cbが読み出されて垂直エッジ処理が行われ不要となった領域(メモリ領域MvCのデータP−Cbが記憶されていた領域)に書き込まれる。また、垂直エッジ処理を終えた画素データで、現在のマクロブロックC−MB(Cb)の下部のマクロブロックが現在のマクロブロックとなるときの処理の時に必要な図25の領域Kvh(Cb),Kh(Cb)の画素データを、図14に示すようにデータSD−Cb’として、上記図2の(B)のメモリ領域MhCの半分の領域(図13のデータSD−Cbが記憶されていた領域)に保持していく。このメモリ領域MhCに保持された画素データSD−Cb’は、適当なタイミングで外部メモリに書き出される。
同様に、図15、図16は、クロマのCr成分の現在のマクロブロックC−MB(Cr)の画素データが入力された場合のメモリ領域の使用手順及びオーバーラップスムージング処理手順を示している。図15は、マクロブロックC−MB(Cr)の垂直エッジ処理を行うために、上記図2の(B)のメモリ領域MvC(の半分の領域)に保持された画素データP−Crが用意される。この画素データP−Crは、前記図25の(B)に示した現在のCr成分のマクロブロックC−MB(Cr)に対して、直前のマクロブロックL−MB(Cr)に属する領域Kv(Cr)の画素データに相当する。また、クロマ成分のマクロブロックC−MB(Cr)の水平エッジ処理を行うために、上記図2の(B)のメモリ領域MhC(の半分の領域)に外部メモリから書き込まれた画素データSD−Crが用意される。この画素データSD−Crは、前記図25の(B)の現在のマクロブロックC−MB(Cr)に対して、上部マクロブロックA−MB(Cr)及びその直前のマクロブロックLA−MB(Cr)に属する領域Kh(Cr)及びKvh(Cr)の画素データに相当する。
また、図16に示すように、次のCr成分のマクロブロックのオーバーラップスムージング処理の時に必要とされる画素データとして、現在のマクロブロックC−MB(Cr)の右端の垂直2ライン×8画素(=2画素×水平8ライン)のデータP−Cr’を用意する。このデータP−Cr’は、図15のメモリ領域MvCのデータP−Crが読み出されて垂直エッジ処理が行われ不要となった領域(メモリ領域MvCのデータP−Crが記憶されていた領域)に書き込まれる。また、垂直エッジ処理を終えた画素データで、現在のマクロブロックC−MB(Cr)の下部のマクロブロックが現在のマクロブロックとなるときの処理の時に必要な図25の領域Kvh(Cr),Kh(Cr)の画素データを、図16に示すようにデータSD−Cr’として、上記図2の(B)のメモリ領域MhCの半分の領域(図15のデータSD−Crが記憶されていた領域)に保持していく。このメモリ領域MhCに保持された画素データSD−Cr’は、適当なタイミングで外部メモリに書き出される。
以上の図5〜図16と共に説明した処理を繰り返すことによって、全ての入力データに対してブロック単位で処理を完結する構成法が実現されている。
次に、図17は、輝度(Y)信号成分について、従来のマクロブロック単位のオーバーラップスムージング処理を行う場合に必要とされるメモリ領域の例を示している。この図17において、フィルタ処理に必要とされる一時記憶メモリ容量は、1マクロブロック分(64画素×4)の領域M1と、垂直エッジ処理用の2画素×16(32画素)の領域M2と、水平エッジ処理用の16画素×2ライン(32画素)の領域M3と、垂直水平演算用一時保持メモリとしての16画素×6ライン(96画素)の領域M4とが必要とされ、合計で416画素分のメモリ容量が必要となる。
これに対して、本発明の実施の形態のように、輝度(Y)信号成分について、8×8ブロック単位でオーバーラップスムージング処理を行う場合に必要とされる一時記憶メモリ容量は、図18のようになる。この図18は、上記図2の(A)に示したメモリ領域の内の流用分を省略して示すものであり、垂直エッジ処理用の2画素×16(32画素)の領域Mvと、水平エッジ処理用の16画素×2ライン(32画素)の領域Mhと、垂直エッジ処理後に他のブロックの水平エッジ処理するための16画素×2ライン(32画素)の領域Mmと、垂直水平演算用一時保持メモリとしての8画素×2ライン(16画素)の領域Mtとが必要とされ、一時記憶メモリ容量は合計で112画素分となる。従って、従来例に対して本発明の実施の形態の構成は、一時記憶メモリ容量が304画素分削減されることになる。
次に、図19は、本発明の実施の形態の処理が行われるタイミングを模式的に示す図である。この図19において、(A)は、図1の逆量子化/逆DCT(IQ/IDCT)モジュール13から送られてきたデータ列を示し、マクロブロックMB0〜MB2の内のマクロブロックMB1を現在のマクロブロックC−MBとしている。図19の(B)は、現在のマクロブロックC−MBが輝度(Y)成分の4ブロックY0〜Y3、クロマ(Cb,Cr)成分の2ブロックCb,Crの順に供給されることを示しており、時間軸上で1ブロックは、8×8画素の64画素(ピクセル)分の時間L11に相当する。図19の(C)は、図19の(B)のデータ列を内部バッファに書き込んで算術論理演算ユニット(ALU)によりオーバーラップスムージング処理が行われるデータ列を示し、このときのレイテンシL12は、最小で2画素分となる。図19の(D),(E),(F)は、現在のマクロブロックC−MBの周囲の直前のマクロブロックL−MB、上部マクロブロックA−MB、その直前のマクロブロックLA−MBにそれぞれ属する処理に必要な画素データを示すものであり、各ブロックY0〜Y3の符号の前に付したL−,A−,LB−が、それぞれ直前のマクロブロックL−MB、上部マクロブロックA−MB、その直前のマクロブロックLA−MBにそれぞれ属するデータを意味する。また、V−Y0,V−Y1は、現在のマクロブロックC−MBのそれぞれブロックY0,Y1に属し、垂直エッジ処理済みのデータを意味する。このときのレイテンシL13は、最初のデータ処理が終了するまでのレイテンシを示し、図19の(G)に示すように、オーバーラップスムージング処理後のデータを直ちに外部メモリに書き出すことができ、マクロブロック内の全データの書き出し時間はL14となる。従って、図19の(A)のクロマCr成分のデータ入力が終了して当該クロマCr成分のオーバーラップスムージング処理後のデータが外部メモリに書き出されるまでのオーバーラップスムージング処理に必要なレイテンシL15は、最小で2画素分となる。
以上説明したような本発明の実施の形態によれば、オーバーラップスムージング処理に要するレイテンシを数画素単位(例えば2画素分)にまで短縮することが可能となり、オーバーラップスムージングフィルタにおける一時記憶保持領域のリソース(メモリ)を削減することができる。例えば、マクロブロック単位でデータを読み込んで処理する場合には、512画素サイズ+α(垂直、水平の両方を行う場合のバッファ)が必要であるのに対し、本発明の実施の形態では、垂直、水平の両方を行う場合のバッファを含めて160画素サイズにまで削減できる。
また、処理が8×8ブロック単位であるため、輝度(Y)成分とクロマ(Cb,Cr)成分における処理手順を類似化し易く、回路規模の削減が実現でき、外部メモリに対して読み出し/書き込みを行うタイミングがマクロブロック単位に比較して分散でき、外部メモリへのアクセスのレイテンシが集中するのを防止できる。さらに、処理が8×8ブロック単位で、そのブロック内で垂直エッジ、水平エッジの演算を効率よく処理していくことが可能となるため、演算装置の共有化を実現してもレイテンシの低下が発生しない、という利点がある。
なお、本発明は上述した実施の形態のみに限定されるものではなく、例えばソフトウェアプログラムにより実現することも可能であり、この場合、コンピュータに、映像信号を符号化する単位となるマクロブロック毎に符号化データを復号する際に、該マクロブロックを構成する複数のブロックのブロック境界円滑化処理を行わせ、復号処理中のデータを上記ブロック毎に読み込み、該ブロック単位で上記ブロック境界円滑化処理を逐次行わせるためのプログラムを提供することもできる。この他、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
11 ビットストリーム構造解析モジュール、 13 逆量子化/逆DCTモジュール、15 オーバーラップスムージングフィルタ、 17 デブロッキングフィルタ、 22 動き補償モジュール、 23 制御部