(57)【特許請求の範囲】
【請求項１】
各マクロブロック内で、少なくとも第１のブロックに対して、前記第１のブロックが第１のフィルタ操作で部分的に処理され、次に第２のフィルタ操作で完全に処理されるように、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行するインループフィルタを有するビデオアクセラレータであって、
前記第１のフィルタ操作は、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行することを含み、
前記第２のフィルタ操作は、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行することを含む、
ビデオアクセラレータ。
【請求項２】
各フィルタ操作では、異なるマクロブロックから集められてなる複数のブロックが処理される請求項１に記載のビデオアクセラレータ。
【請求項３】
前記第１のフィルタ操作は、マクロブロックの先頭行に対するオーバーラップスムージング操作およびデブロッキング操作を含み、前記第２のフィルタ操作は、マクロブロックの第２の行に対するオーバーラップスムージング操作およびデブロッキング操作を含む請求項１に記載のビデオアクセラレータ。
【請求項４】
前記第１のフィルタ操作は、前記第１のブロックに対する、区分的なオーバーラップスムージング操作およびデブロッキング操作の第１の組を含み、前記第２のフィルタ操作は、前記第１のブロックに対する、区分的なオーバーラップスムージング操作およびデブロッキング操作の第２の組を含む請求項１に記載のビデオアクセラレータ。
【請求項５】
前記部分的に処理された第１のブロックを記憶するためのスクラッチパッドメモリを更に有し、前記第２のフィルタ操作は、前記スクラッチパッドメモリから前記部分的に処理された第１のブロックをフェッチする請求項１に記載のビデオアクセラレータ。
【請求項６】
前記第１のブロックが前に処理されたマクロブロックに隣接している場合に、前記第１のフィルタ操作は、オーバーラップスムージングおよびデブロッキングのために、前記第１のブロックを完全にフィルタすることを含む請求項１に記載のビデオアクセラレータ。
【請求項７】
前記第１のブロックがその後処理されるマクロブロックに隣接している場合に、前記第２のフィルタ操作は、オーバーラップスムージングおよびデブロッキングのために、前記第１のブロックを部分的にフィルタすることを含む請求項１に記載のビデオアクセラレータ。
【請求項８】
前記第１のフィルタ操作は、
少なくとも前記第１のブロックの選択された垂直ブロック境界に対してオーバーラップスムージングを実行することと、
少なくとも前記第１のブロックの選択された水平ブロック境界に対してオーバーラップスムージングを実行することと、
少なくとも前記第１のブロックの選択された水平ブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの選択された水平サブブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの選択された垂直ブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの選択された垂直サブブロック境界に対してインループデブロッキングを実行することと、を含む請求項１に記載のビデオアクセラレータ。
【請求項９】
前記第２のフィルタ操作は、 少なくとも前記第１のブロックの残りの垂直ブロック境界に対してオーバーラップスムージングを実行することと、
少なくとも前記第１のブロックの残りの水平ブロック境界に対してオーバーラップスムージングを実行することと、
少なくとも前記第１のブロックの残りの水平ブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの残りの水平サブブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの残りの垂直ブロック境界に対してインループデブロッキングを実行することと、
少なくとも前記第１のブロックの残りの垂直サブブロック境界に対してインループデブロッキングを実行することと、を含む請求項８に記載のビデオアクセラレータ。
【請求項１０】
圧縮ビデオデータストリームからのビデオ情報を復号化するためのビデオ処理システムであって、
部分的に復号化されたビデオデータを生成するために、前記圧縮ビデオデータストリームを部分的に復号化するプロセッサと、
ビデオフレームを生成するために、前記部分的に復号化されたビデオデータを復号化するビデオ復号化回路と、を有し、前記ビデオ復号化回路は、前記ビデオフレームの各マクロブロック内で、少なくとも第１のブロックに対して、前記第１のブロックが第１のフィルタ操作で部分的に処理され、次に第２のフィルタ操作で完全に処理されるように、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行するためのインループフィルタを有するビデオ処理システムであって、
前記第１のフィルタ操作は、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行することを含み、
前記第２のフィルタ操作は、区分的なオーバーラップスムージングおよびデブロッキングを逐次的に実行することを含む、
ビデオ処理システム。
【請求項１１】
前記インループフィルタは、一度に１つのマクロブロックについてオーバーラップスムージングおよびデブロッキングをするために、ビデオフレーム内のマクロブロックの各行を逐次的に処理する請求項１０に記載のビデオ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ処理技術に関する。一態様では、本発明は、デジタルビデオ情報の伸張に関する。
【背景技術】
【０００２】
ビデオ情報は大量の記憶空間を必要とするため、ビデオ情報は通常圧縮される。したがって、例えばＣＤ−ＲＯＭまたはＤＶＤに記憶されている圧縮ビデオ情報を表示するためには、その圧縮ビデオ情報を伸張して、伸張されたビデオ情報を提供する必要がある。次に、この伸張されたビデオ情報が、ビットストリーム中でディスプレイに提供される。ビデオ情報の伸張されたビットストリームは通常、ディスプレイ上のピクセル位置に対応するメモリ位置のビットマップとして記憶される。ディスプレイに情報の１画面を提示するのに必要とされるビデオ情報はフレームと呼ばれる。多くのビデオシステムは、一連のフレームを表示することによって動画ビデオを提供するために、圧縮ビデオ情報を迅速かつ効率的に復号化することを目標としている。
【０００３】
記録媒体や装置、データ処理のさまざまな態様（ビデオ圧縮など）を標準化することが、この技術とその用途が引き続き成長するために非常に望ましい。ビデオ情報を圧縮および伸張するため、数多くの圧縮（伸張）標準が既に開発されているか開発中である。このようなものには、例えばビデオの符号化および復号化のためのＭＰＥＧ（Moving Pictures Expert Group）の各種標準（例えばＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−３、ＭＰＥＧ−４、ＭＰＥＧ−７、ＭＰＥＧ−２１）またはＷｉｎｄｏｗｓメディアビデオ圧縮標準（例えばＷＭＶ９）がある。ＭＰＥＧ標準およびＷＭＶ標準の各々は、ここに完全に記載したものとして、本明細書にその全体を援用する。
【０００４】
一般に、ビデオ圧縮技術には、ビデオフレーム内に存在する空間的および時間的な冗長性を減らすことによって、ビデオ情報を圧縮するように動作するフレーム内圧縮とフレーム間圧縮が含まれる。フレーム内圧縮技術は、Ｉフレームと呼ばれるフレーム内に含まれている情報のみを使用して、フレームを圧縮する。フレーム間圧縮技術は、予測フレーム（Ｐ−フレーム）またはＢ−フレームと通常呼ばれる先行フレームおよび／または後続フレームを参照してフレームを圧縮する。フレーム内圧縮技術とフレーム間圧縮技術は、空間またはブロックベースの符号化を使用しており、通常は、ビデオフレームが符号化（ブロック変換処理とも呼ばれる）のためブロックに分割されている。例えば、Ｉ−フレームは、８×８ブロックに分割されている。ブロックは、特定の余弦基底関数の振幅として係数を符号化する離散コサイン変換（ＤＣＴ）符号体系、あるいは他の何らかの変換（整数変換など）を使用して符号化される。次に、変換された係数が量子化されて、振幅レベルがゼロではない係数と振幅レベルがゼロの係数のラン（またはサブシーケンス）が得られる。次に、量子化された係数がランレベル符号化（ランレングス符号化）されて、ゼロ係数のロングランが要約される。次に、この結果が、符号化する値にコードワードを割り当てる統計符号化技術を使用するか、または、例えばＣＡＢＡＣ（Context-based Adaptive Binary Arithmetic Coding）、ＣＡＶＬＣ（Context Adaptive Variable Length Coding）などの何らかのエントロピー符号化技術を使用して、可変長符号器（variable length coader：ＶＬＣ）内でエントロピー符号化される。出現頻度の高い値には短いコードワードが割り当てられ、出現頻度の低い値には長いコードワードが割り当てられる。平均すると、符号列が原データより短くなるように出現頻度の高い短いコードワードが多くなる。このため、空間またはブロックベースの符号化技術は、１つのフレームに関連するデジタル情報を圧縮する。ビデオ圧縮技術は、一連のフレームに関連するデジタル情報を圧縮するために、Ｐ−フレームおよび／またはＢ−フレームを使用して、連続するフレーム間に時間的な相関関係が存在している点を利用する。フレーム間圧縮技術は、異なるフレーム間の差を特定して、次に、ＤＣＴ、量子化、ランレングス符号化技術およびエントロピー符号化技術を使用して、その差情報を空間的に符号化するが、異なる実装では、別のブロック構成を使用することができる。例えば、Ｐ−フレームは１６×１６のマクロブロック（例えば、４つの８×８輝度ブロックと２つの８×８色差ブロックを有する）に分割されて、このマクロブロックが圧縮される。フレーム内圧縮技術、フレーム間圧縮技術のいずれが使用されるかどうかを問わず、ビデオデータを符号化するために空間またはブロックベースの符号化技術を使用するということは、圧縮ビデオデータが可変長に符号化されるか、あるいは上記のブロックベースの圧縮技術を使用して圧縮されることになる。
【０００５】
受信装置または再生装置では、圧縮ステップが逆転されて、ブロック変換によって処理されたビデオデータが復号化される。図１は、ビデオ情報を伸張するための従来のシステム３０を示しており、システム３０は、入力ストリーム復号化部３５、動きデコーダ３８、加算器３９、フレームバッファ４０およびディスプレイ４１を有する。入力ストリームデコーダ３５は、入力バッファ３１で圧縮ビデオ情報のストリームを受け取って、ＶＬＣデコーダ３２で可変長復号化を実行し、逆量子化器３３でジグザグおよび量子化を逆転させ、ＩＤＣＴ３４でＤＣＴ変換を逆転させて、静的に伸張されたビデオ情報のブロックを加算器３９に提供する。 動き復号化部３８では、動き補償ユニット３７は、ＶＬＣデコーダ３２からの動き情報と、前の画像データのコピー（前の画像ストアバッファ３６に記憶されている）を受け取り、動き補償されたピクセルを加算器３９に提供する。加算器３９は静的に伸張されたビデオ情報と、動き補償されたピクセルを受け取り、伸張されたピクセルをフレームバッファ４０に提供し、続いてフレームバッファ４０がディスプレイ４１にこの情報を提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のビデオエンコーダおよびデコーダの設計では、ブロックベースの変換、動き補償、量子化および／またはほかの損失の多い処理ステップによって、フレームにブロッキングアーチファクト（認識できるブロック間の不連続性）が入り込むことがある。ブロッキングアーチファクトを低減させようとする従来の試みでは、オーバーラップスムージングまたはデブロッキングフィルタリング（インループ処理または後処理のいずれにおいても）を使用してブロック間の境界をスムージングすることによって、フレームを処理してきた。例えば、ＷＭＶ９標準では、ブロッキングアーチファクトを低減させるために、画像全体に対して、オーバーラップスムージングとインループデブロッキングを処理することが規定されている。ＷＭＶ９復号化が有効の場合、オーバーラップスムージングが、８×８ブロック境界のみに対して行われ、その際、最初にフレーム全体について垂直方向のスムージングが行われて、次にフレーム全体について水平方向にオーバーラップスムージングが実行される。次に、インループデブロッキングが有効の場合、これは以下の順序で行われる。（ｉ）フレーム内のすべての８×８ブロックの水平境界線が、一番上の線を始点としてフィルタされ、（ｉｉ）フレーム内のすべての８×４サブブロックの水平境界線が、一番上の線を始点としてフィルタされ、（ｉｉｉ）すべての８×８ブロックの垂直境界線が、一番左の線を始点としてフィルタされて、（ｉｖ）すべての４×８サブブロックの垂直境界線が、一番左の線を始点としてフィルタされる。従来の手法では、フレーム全体に２つのパスが用いられ、このうち、第１のパスはオーバーラップスムージング用であり、第２のパスはインループデブロッキング用である。個々のステップの処理を実行すべきかどうかを決定するほかの要求事項（例えば、パラメータＰＱＵＡＮＴおよびブロックのタイプに関連するものなど）が当てはまる場合もあるが、これらの処理が目標としているのは、１６×１６マクロブロック、８×８ブロックまたは４×４サブブロックの端を超えてスムージングを行い、二次元変換および量子化によって入り込むブロック歪み（blockiness）アーチファクトを除去することにある。
【０００７】
ビデオ伸長を処理するためのプロセッサを利用した手法では、スムージングまたはデブロッキングの機能（function）を追加することは、多量の計算が必要なフィルタリング処理である。フレームを保持する大容量のメモリバッファ（例えば、３０７キロバイトに相当する６４０×４８０ピクセルのＶＧＡサイズ）がある場合、この処理の順序はソフトウェアで実行することができる。これに対して、ハードウェアを利用した復号化のための手法は、スムージングとデブロッキングを同時に実行せず、フレーム全体に対してデブロッキングを実行しており、大容量のローカルメモリを必要とし、大きなバス帯域幅を要求し、メモリアクセス時間が犠牲にされる。したがって、伸張方法に関連する処理の要求事項を下げ、伸張操作（より詳細には、オーバーラップスムージング操作および／またはデブロッキングフィルタ操作を含む）を改善することが大いに必要とされている。従来のシステムの更に別の制約と不都合は、添付の図面と詳細な説明を参照して、本出願のほかの部分を検討すれば、当業者にとって明らかであろう。
【課題を解決するための手段】
【０００８】
ビデオ伸張を実行するためのソフトウェアとハードウェアの組合せを使用することによって、各種のビデオ圧縮方式を迅速かつ効率的に処理するために適合させることができる柔軟な伸張システムが提供される。この柔軟な伸張システムは、フロントエンドの伸張ステップを実行するためのプロセッサと、バックエンドの伸張ステップを実行するためのビデオアクセラレータとを有する。ビデオフレームデータに対してオーバーラップスムージング操作とインループデブロッキングフィルタ操作を実行するためのビデオアクセラレータのメモリ容量および／または帯域幅の要求事項を下げるために、インループフィルタは、マクロブロックベースで、オーバーラップスムージングおよびインループデブロッキングの区分的な処理を実行する。ピクセルの区分的な処理を使用することによって、ブロックにアクセスしながら、オーバーラップスムージングとインループデブロッキングを同時に実行することができる。部分的に処理されたデータを記憶するためのスクラッチパッドメモリを使用することによって、スムージングアルゴリズムとデブロッキングアルゴリズムを分け、より小さなデータブロックに適用することができる。処理の順序が、フレームに基づいた順序で実行されているように維持され、ブロックのフェッチと記憶のバーストを防ぐため、フィルタスループットを均等化するために、レーテンシが認識できないレベルに抑えられ、パイプライン方式で実行されることができる。
【０００９】
本発明の１つ以上の実施形態によれば、複数のマクロブロックへのブロック変換により処理されたビデオデータを復号化するためのビデオ処理システム、装置および方法が提供される。各マクロブロックでは、少なくとも第１のブロック内で、第１のブロックが第１のフィルタ操作で部分的に処理されて、次に、第２のフィルタ操作で完全に処理されるように、選択されたピクセルデータをスムージングおよびデブロッキングするために、インループフィルタによって区分的な処理が実行される。これによって、１つ以上の完了したブロックと１つ以上の部分的にフィルタされたブロックとが生成される。例えば、第１のフィルタ操作は、マクロブロックの先頭行に対するスムージングおよびデブロッキングフィルタリングであってもよく、第２のフィルタ操作は、マクロブロックの第２の行に対するスムージングおよびデブロッキングフィルタリングであってもよい。あるいは、別の態様では、第１のフィルタ操作は、第１のブロックに対する区分的なオーバーラップスムージングおよびデブロッキングフィルタリングの第１の組であってもよく、第２のフィルタ操作は、第１のブロックに対する区分的なオーバーラップスムージング操作およびデブロッキング操作の第２の組であってもよい。その結果、第１のフィルタ操作中に、前に処理されたマクロブロックに隣接するブロックが、オーバーラップスムージングおよびデブロッキングのために完全にフィルタされて、次に、完了したブロックとして出力されうる。一方、その後処理されるマクロブロックに隣接するブロックは、オーバーラップスムージングおよびデブロッキングのために部分的にフィルタされて、次に、部分的にフィルタされたブロックとしてスクラッチパッドメモリに記憶されうる。第２のフィルタ操作中に、完全に処理できない部分的にフィルタされたブロックがスクラッチパッドメモリに記憶され、第２のマクロブロック内の選択されたピクセルデータをスムージングおよびデブロッキングするために取得されるときに完了されうる。選択した実施形態では、 区分的な処理は、選択された垂直ブロック境界および水平ブロック境界に対するオーバーラップスムージングのシーケンスを実行し、続いて、選択されたブロック境界およびサブブロック境界に対して、水平方向および垂直方向にインループデブロッキングを実行する第１のフィルタ操作として実装される。次に、第２のフィルタ操作が実行されて、これにより、残りの垂直ブロック境界および水平ブロック境界がオーバーラップスムージングされて、続いて、残りのブロック境界およびサブブロック境界に対して、インループデブロッキングが水平方向および垂直方向に実行される。マクロブロックの各行に、一度に１マクロブロックずつ、この区分的な処理を実行することによって、マクロブロック処理をパイプライン化することができる。
【００１０】
本発明の目的、利点、および他の新しい特徴は、添付の特許請求の範囲と添付の図面と併せて読めば、以下の詳細な説明から、当業者にとって明らかとなるであろう。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明の例示的な実施形態を記載するが、本発明がこれらの具体的な詳細に従わなくとも実施でき、システム上の制約およびビジネス上の制約に適合させるなど、開発の具体的な目的を達成するために、実装に固有の判断が数多く必要とされ、これは実装によって変わるということが理解される。この種の開発作業は複雑かつ時間がかかるものであるが、本開示の利益を受ける当業者にとって日常的な作業である。例えば、本発明をわかりにくくすることのないように、選択された態様を、詳細に図示するのではなく、ブロック図形式で示す。このような記述および表現は、当業者が、自身の作業の内容を他の当業者に説明し伝えるために用いられているものである。添付の図面を参照して本発明を説明する。
【００１２】
図２を参照すると、本発明による例示的なビデオ伸張システム１００のブロック図が示される。図に示すように、ビデオ伸張システム１００はどのようなビデオ再生装置に実装されてもよく、これには、デスクトップコンピュータまたはラップトップコンピュータ、ワイヤレスまたは携帯式デバイス、携帯情報端末（ＰＤＡ）、携帯式またはセルラー式電話や、ビデオ画像化機能を備えたそれ以外のビデオ再生装置などがある。図２に示すように、ビデオ伸張システム１００は、１つ以上のプロセッサまたは処理ユニット５０と、ビデオまたはメディアアクセラレーションハードウェアユニット１０１とに結合されたバス９５を有するホストまたはアプリケーション処理ユニットとして実装される。また、ビデオ伸張システム１００はメインメモリシステムを有し、これにはＤＤＲコントローラ６０を介してアクセスされる大容量ＤＤＲ  ＳＤＲＡＭ６２，６４が含まれる。これに加えて、あるいは別法として、１つ以上のメモリ（例えば、ＩＤＥ７２、フラッシュメモリユニット７４、ＲＯＭ７６など）が、スタティックメモリコントローラ７０を介してアクセスされる。ＤＤＲ  ＳＤＲＡＭまたはほかのメモリの一方または両方が、ビデオ伸張システム１００と一体化されていても、その外部にあってもよい。当然、ほかの周辺機器や表示装置（８２，８４，８６，９２）が、それぞれのコントローラ８０，９０を介してアクセスされてもよい。簡潔を期すと共に理解しやすくするために、ビデオ伸張システム１００を構成する要素のすべてを詳細に記載しない。このような詳細は当業者に公知であり、特定のコンピュータ供給業者およびマイクロプロセッサの種類によって変更され得る。更に、ビデオ伸張システム１００は、所望の実装に応じて、ほかのバス、デバイスおよび／またはサブシステムを有していてもよい。例えば、ビデオ伸張システム１００は、キャッシュ、モデム、パラレルインタフェースまたはシリアルインタフェース、ＳＣＳＩインタフェース、ネットワークインターフェイスカードなどを有していてもよい。図中の実施形態では、ＣＰＵ５０は、フラッシュメモリ７４および／またはＳＤＲＡＭ６２，６４に記憶されているソフトウェアを実行する。
【００１３】
図２に示すビデオ伸張システム１００では、ＣＰＵ５０は、ＶＬＤブロック５２に示すように、最初の可変長復号化機能を実行する一方、メディアアクセラレーションハードウェアユニット１０１は、復号化データに対して、逆量子化１０４、逆変換１０６、動き補償１０８、インループフィルタリング１１０、色空間変換１１２、およびスケーリング１１４とフィルタリング１１６を実行する。得られた復号化データは、出力バッファ１１８および／またはフレームバッファ（図示せず）に一時的に記憶されてから、ディスプレイ９２に表示されうる。復号化処理機能をプロセッサ５０とメディアアクセラレーションハードウェア１０１とに分けることにより、フロントエンドの復号化ステップ（例えば可変長復号化）を、各種の圧縮方式（例えばＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ-３、ＭＰＥＧ−４、ＭＰＥＧ-７、ＭＰＥＧ-２１、ＷＭＶ９など）に合わせるために、ソフトウェアで実装することができる。フロントエンドが生成した復号化データはメディアアクセラレーションハードウェア１０１に提供され、メディアアクセラレーションハードウェア１０１は、この復号化データを更に復号化して、フレームが完成するまで、出力バッファ１１８またはフレームバッファに、マクロブロック毎にピクセル値を提供する。
【００１４】
動作時に、ビデオ伸張システム１００は、ＣＤ  ＲＯＭ、ＤＶＤまたはほかの記憶装置などのビデオ信号源から圧縮ビデオ信号を受け取る。圧縮ビデオ信号は、圧縮ビデオ情報のストリームとしてプロセッサ５０に提供され、プロセッサ５０は、命令を実行して、圧縮信号の可変長符号化部分を復号化して、可変長復号化データ（ＶＬＤデータ）信号を提供する。ソフトウェアの支援によって可変長復号化が実行されると、ＶＬＤデータ（ヘッダ、マトリックス重み、運動ベクトル、変換された残りの係数と、更には差分運動ベクトルを含む）が、メディアアクセラレーションハードウェアユニット１０１に、直接送られるか、あるいは米国特許出願公開第１１／０４２，３６５号により詳細に記載されているデータ圧縮技術（“Lightweight Compression Of Input Data”）を使用して送られる。メディアアクセラレーションハードウェアユニット１０１においてＶＬＤデータを受け取ると、このデータが逆ジグザグ量子化器回路１０４に提供され、逆ジグザグ量子化器回路１０４は、ＶＬＤデータを復号化して、ジグザグ復号化信号を提供する。圧縮ビデオ信号はジグザグランレングスコード方式で圧縮されているが、ジグザグ復号化信号が情報の逐次的なブロックとして逆ＤＣＴ回路１０６に提供されるという点が、逆ジグザグおよび量子化によって補償される。したがって、このジグザグ復号化信号は、ディスプレイ９２へのラスタスキャンのために必要な順序に並んだブロックを提供する。次に、このジグザグ復号化信号が、逆変換回路１０６（例えば、ＩＤＣＴまたは逆整数変換）に提供され、逆変換回路１０６が、ジグザグ復号化ビデオ信号に対して、ブロック毎に逆離散コサイン変換を実行して、静的に伸張されたピクセル値または伸張された誤差項を提供する。この静的に伸張されたピクセル値が、動き補償ユニット１０８によってブロック毎に処理され、動き補償ユニット１０８は、１、２および４つの運動ベクトル（１６×１６、１６×８および８×８の各ブロック）のためのサポートを含む、フレーム内の予測された双方向の動き補償を提供する。インループフィルタ１１０は、下記に詳しく述べる通り、スクラッチパッドメモリ１１１を使用して、部分的に完了したマクロブロックフィルタデータを記憶することによって、オーバーラップスムージングおよび／またはデブロッキングを実行して、ＷＭＶ９圧縮標準に従ってブロッキングアーチファクトを低減させるか除去する。色空間コンバータ１１２が、１つ以上の入力データ形式（例えばＹＣｂＣｒ４：２：０）を、１つ以上の出力形式（例えばＲＧＢ）に変換して、この結果がフィルタ１１６でフィルタリングおよび／またはスケーリングされる。
【００１５】
ここに開示するように、スムージングおよびデブロッキングインループフィルタ１１０は、第１のパスの間に、マクロブロックの各行を部分的にフィルタリングまたは処理して、次に、マクロブロックの次の行の処理中に、部分的に処理したブロックの処理を完了させることによって、隣接するブロック間の境界の不連続性を除去する。この技術により、従来のデブロッキング処理で行われているように、フィルタリングのために、大容量のメモリを使用してフレーム画像全体を記憶するのとは対照的に、小容量のスクラッチパッドメモリ１１１を、部分的に処理したブロックをスクラッチパッドメモリに記憶するために能率的に使用することができる。各ブロックのオーバーラップスムージングおよびデブロッキングの処理が行毎に完了すると、完了したブロックが、フィルタ１１０からＦＩＦＯバッファ（図示せず）に出力されてから、ＣＳＣ１１２に転送される。
【００１６】
図３は、本発明の選択した実施形態による、スクラッチパッドメモリを使用して、オーバーラップスムージングおよびデブロッキングを効率的に処理するマクロブロックベースのインループフィルタリング処理の模式図である。フィルタリング処理では、マクロブロックの行を通るインループフィルタの各パスによって、完全に完了したブロック（ブロックをスムージングおよびデブロックするために完全にフィルタされている）と、部分的に完了したブロック（マクロブロックの次の行をスムージングおよびデブロックする際に後から使用するため、スクラッチパッドメモリに記憶される）とが得られる。図に示すように、インループフィルタリング処理のマクロブロックのそれぞれ（例えば、４つのｌｕｍａブロックｍｂ４ｙ０、ｍｂ４ｙ１、ｍｂ４ｙ２およびｍｂ４ｙ３を有するマクロブロック例４すなわち“ｍｂ４”）は以下の順序の処理を受ける。
（ｉ）前のマクロブロック（マクロブロック１など）に隣接する８×８ブロック（ｍｂ４ｙ０、ｍｂ４ｙ１など）のスムージングおよびデブロッキングを完全に完了し、次のマクロブロック（マクロブロック７など）に隣接する８×８ブロック（ｍｂ４ｙ２、ｍｂ４ｙ３など）のスムージングおよびデブロッキングを部分的に完了する。
（ｉｉ）完了した８×８ブロック（ｍｂ４ｙ０、ｍｂ４ｙ１など）を出力して、部分的に完了した８×８ブロック（ｍｂ４ｙ２、ｍｂ４ｙ３など）をスクラッチパッドメモリに記憶する。
（ｉｉｉ）次のマクロブロック（マクロブロック７など）の処理中に、スクラッチパッドメモリから部分的に完了した８×８ブロック（ｍｂ４ｙ２、ｍｂ４ｙ３など）をフェッチして、取り出した８×８ブロック（ｍｂ４ｙ２、ｍｂ４ｙ３など）の処理を完了する。
（ｉｖ）次のマクロブロックの完了した８×８ブロック（ｍｂ７ｙ０、ｍｂ７ｙ１など）と共に、完了した８×８ブロック（ｍｂ４ｙ２、ｍｂ４ｙ３など）を出力する。
【００１７】
実装の詳細は用途によって変わりうるが、図３は、インループフィルタ１１０によって処理中の画像フレーム１５０がマクロブロック（例えばマクロブロックｍｂ０、ｍｂ１、ｍｂ２、ｍｂ３、ｍｂ４、ｍｂ５、ｍｂ６、ｍｂ７、ｍｂ８など）によって構成され、複数の行（例えばｍｂ０、ｍｂ１およびｍｂ２から構成される先頭行１５１）に配置される説明のための実施形態を示している。図３Ａに示すように、インループフィルタ１１０は、マクロブロック１５１の先頭行を通る第１のパスを既に通っている。先頭行１５１を通る第１のパスの結果、上のブロック（ｍｂ０ｙ０、ｍｂ０ｙ１、ｍｂ１ｙ０、ｍｂ１ｙ１、ｍｂ２ｙ０、ｍｂ２ｙ１）は、オーバーラップスムージングおよびデブロッキングが完全に処理されているのに対し（クロスハッチングで示す）、下のブロック（ｍｂ０ｙ２、ｍｂ０ｙ３、ｍｂ１ｙ２、ｍｂ１ｙ３、ｍｂ２ｙ２、ｍｂ２ｙ３）はオーバーラップスムージングおよびデブロッキングが部分的にしか処理されていない。マクロブロック処理の次のパスの間に、先頭行１５１からの部分的に処理されたブロックを完了させるために、先頭行１５１からの部分的に処理されたブロックが、スクラッチパッドメモリ１１１に記憶される（ドットパターンで示す）。
【００１８】
更に図３Ａに示すように、インループフィルタ１１０は、マクロブロック１５２の第２の行の処理を開始しており、先頭行１５１からの部分的に処理されたブロックを完了する処理も行われる。この結果、ｍｂ０ｙ２ブロックとｍｂ３ｙのブロックは、スムージングおよびデブロッキングが完全に処理され、ｍｂ３ｙ２ブロックは部分的にしか処理されていない（スクラッチパッドに記憶される）。図３Ａでフィルタ１１０によって処理されるブロック（フィルタされたブロック１５４と共に斜めハッチングで示す）では、ｍｂ０ｙ３、ｍｂ３ｙ１およびｍｂ３ｙ３の各ブロックは、スムージングおよびデブロッキングが部分的に処理されて（フィルタ１１０に保持され）ており、ｍｂ１ｙ２ブロックはスクラッチパッドからフェッチされた部分的に完了したブロックであり、残りのブロック（ｍｂ４ｙ０およびｍｂ４ｙ２）は現在のマクロブロック（マクロブロック４など）から得られる。インループフィルタ１１０がフィルタされたブロック１５４を処理すると、スムージングおよびデブロッキングが、部分的に処理されたブロック（ｍｂ０ｙ３、ｍｂ３ｙ１など）の１つ以上で完了するが、残りのブロック（ｍｂ１ｙ２、ｍｂ４ｙ０、ｍｂ４ｙ２およびｍｂ３ｙ３）は部分的にしか完了しない。
【００１９】
フィルタされたブロック１５４の処理後は、インループフィルタ１１０は新しいデータをシフトインする。これは、図３Ｂに示すフレーム１５５に示され、フィルタ１１０がフィルタされたブロック１５６を取得しており、その際、完了したブロック（ｍｂ０ｙ３、ｍｂ３ｙ１など）を出力し、部分的に完了したブロックの１つ以上（ｍｂ３ｙ３など）をスクラッチパッドメモリに記憶し、残りの部分的に完了したブロック（ｍｂ１ｙ２、ｍｂ４ｙ０、ｍｂ４ｙ２など）をフィルタ内で１ブロック位置だけシフトして、マクロブロックの前の行から部分的に完了したブロック（ｍｂ１ｙ３など）をフェッチして、現在のマクロブロックから新しいブロック（ｍｂ４ｙ１、ｍｂ４ｙ３など）をロードする。インループフィルタ１１０がフィルタされたブロック１５６を処理すると、スムージングおよびデブロッキングが、部分的に処理されたブロック（ｍｂ１ｙ２、ｍｂ４ｙ０など）の１つ以上で完了するが、残りのブロック（ｍｂ１ｙ３、ｍｂ４ｙ１、ｍｂ４ｙ３およびｍｂ４ｙ２）は部分的にしか完了しない。
【００２０】
フィルタされたブロック１５６の処理後、図３Ｃのフレーム１５７に示すように、インループフィルタ１１０は新しいデータを再度シフトインする。より詳細には、フィルタ１１０はフィルタされたブロック１５８を取得し、その際、完了したブロック（ｍｂ１ｙ２、ｍｂ４ｙ０など）を出力し、部分的に完了したブロックの１つ以上（ｍｂ４ｙ２など）をスクラッチパッドメモリに記憶し、残りの部分的に完了したブロック（例えばｍｂ１ｙ３、ｍｂ４ｙ１、ｍｂ４ｙ３）をフィルタ内で１ブロック位置だけシフトして、マクロブロックの前の行から部分的に完了したブロック（ｍｂ２ｙ２など）をフェッチして、現在のマクロブロックから新しいブロック（ｍｂ５ｙ０、ｍｂ５ｙ２など）をロードする。インループフィルタ１１０がフィルタされたブロック１５８を処理すると、スムージングおよびデブロッキングが、部分的に処理されたブロック（ｍｂ１ｙ３、ｍｂ４ｙ１など）の１つ以上で完了するが、残りのブロック（ｍｂ２ｙ２、ｍｂ５ｙ０、ｍｂ５ｙ２およびｍｂ４ｙ３）は部分的にしか完了しない。この時点で、マクロブロック４の上のブロック（ｍｂ４ｙ０、ｍｂ４ｙ１）に対するスムージングおよびデブロッキングは完了しているが、下のブロック（ｍｂ４ｙ２、ｍｂ４ｙ３）は部分的にしか完了していない。部分的に記憶された下のブロックをスクラッチパッドメモリに記憶することによって、フィルタ１１０がマクロブロックの次の行を処理するときに、フィルタリング操作を完了させることができる。
【００２１】
本発明の別の実施形態の更に詳細が、ビデオエンコーダまたはデコーダ内でスムージングおよびデブロッキングフィルタを使用して、復号化されたフレーム中のブロック歪みを低減するための手法（２００）を示す図４に示される。明らかなように、図中の技術は、ｌｕｍａまたはｃｈｒｏｍａブロックを処理するために使用することができるが、各フレームの端の特別なコーナーの場合も考えられ、これについては、当業者が適宜、本発明を調整して適用させるであろう。しかし、簡潔を期すために、本開示は、主として各フレームの内部のマクロブロックに実行されるインループフィルタリングステップに焦点を当てる。
【００２２】
図４を参照すると、ビデオエンコーダ／デコーダが、フレームの少なくとも先頭のマクロブロックを生成すると（２０１）、インループフィルタは、その隣接するブロックとの各ブロックの境界をフィルタするために、一度に１マクロブロックずつ、マクロブロックの先頭行を処理する。明らかなように、フレームの端にはスムージングもデブロッキングも実行されないため、フィルタリング処理で使用するための部分的に完了したブロックが、このフレームの外に存在しない。しかし、マクロブロックの先頭行がフィルタされると、スクラッチパッドメモリが部分的に完了したブロックで埋まる。エンコーダ／デコーダは、先頭マクロブロック（２０１）を始点として、必要なブロックをロードし、上からの部分的に完了した隣接するブロックを、スクラッチパッドから取得する（ただし、マクロブロックの先頭行を除く）。マクロブロックが４つのｌｕｍａブロック（ｙ０、ｙ１、ｙ２、ｙ３）と２つのｃｈｒｏｍａブロック（Ｃｂ、Ｃｒ）から構成される場合、ブロックは、ｙ０、ｙ１、ｙ２、ｙ３、Ｃｂ、Ｃｒの順でエンコーダ／デコーダのハードウェアに入る。
【００２３】
次に、ビデオエンコーダ／デコーダが、フィルタ内に読み込まれたブロックの、隣接するブロックまたはサブブロックとの所定の境界をフィルタする（２１０）。選択した実施形態では、フィルタ内の各ブロックを部分的に処理するために、区分的な処理手法を使用することができる。例えば、輝度面または色差面のいずれかの８×８ブロックを復号化した後に、左および／または右の（垂直の）端の全部または一部に対して、スムージングフィルタ処理が行われる（２１１）。このほか、あるいはこれに代えて、ブロックの上および／または下の（水平の）端の全部または一部に対して、スムージングフィルタ処理が行われる（２１２）オーバーラップスムージングに加えて、８×８ブロックの選択された水平境界線の全部または一部（２１３）および／または８×４サブブロックの選択された水平境界線の全部または一部（２１４）に対してデブロッキングフィルタ処理が適用されうる。このほか、あるいはこれに代えて、８×８ブロックの選択された垂直境界線の全部または一部（２１５）および／または４×８サブブロックの選択された垂直境界線の全部または一部（２１６）に対してデブロッキングフィルタ処理が適用されうる。
【００２４】
フィルタ内のブロックが区分的に処理されると、更なる処理のために、結果がフィルタ内で記憶されるかまたはシフトされる。より詳細には、フィルタが新しいデータを処理できるように、フィルタ内の完了したブロックがフィルタから出力される（２１７）。更に、新しいブロックと共に処理されない、部分的に完了したブロックが、後から使用してマクロブロックの次の行と共に更に処理するためにスクラッチパッドメモリに記憶される（２１９）。ただし、マクロブロックの最終行が処理中の場合（判定２１８に対して結果が「いいえ」のとき）はスクラッチパッドへの記憶ステップが省略されうる（２１９）。
【００２５】
選択されたブロック（２１７、２１９）を記憶することによって、フィルタ内に空間が作成されると、フィルタが新しいデータを処理できるようになる。より詳細には、フレーム内に更にブロックが存在する場合（判定２２０に対して結果が「はい」のとき）、フィルタ内の残りの部分的にフィルタされたブロックが左シフトされる（２２２）。先頭行の下の行の場合（判定２２４に対して結果が「いいえ」のとき）、次の部分的に完了したブロックをスクラッチパッドメモリから取得することによって、フィルタ内の空き空間が埋まり（２２６）、フィルタの残りの空間が新しいブロックで埋まる（２２８）。新しいデータがフィルタにロードされると、フィルタブロックの新しい組に対して、ブロックフィルタリング処理２１０が繰り返される。操作のこのシーケンスを繰り返すことによって、フレームの各マクロブロックが逐次的にフィルタされて、マクロブロックの前の行の処理中に生成された部分的に完了したブロックが、スクラッチパッドから取得されて、その後、マクロブロックの次の行の処理中に使用するために、部分的にフィルタされたブロックがスクラッチパッドに記憶される。これに対して、フィルタすべき残りのブロックがない場合（判定２２２に対して結果が「いいえ」のとき）、現在のフレームに対するスムージングおよびデブロッキング処理が終了する。この時点で、次のフレームが取得され（２３０）、新しいフレームの先頭マクロブロックを始点に、フィルタ処理が繰り返される。
【００２６】
図５Ａ〜Ｋを参照すると、ＷＭＶ９のスムージングおよびデブロッキング手順を、区分的な処理手法により、マクロブロック４（“ｍｂ４”）内のｌｕｍａブロックに実装可能な方法を示すために、本発明の説明のための実施形態が示される。フィルタリング処理の最初の状態が図５Ａに示され、フィルタ３２０には、オーバーラップスムージング（例えば、楕円形のマーク３２２を参照のこと）とデブロッキング（例えば、線のマーク３２３を参照のこと）が既に部分的に処理されているブロック（ｍｂ０ｙ３、ｍｂ３ｙ１およびｍｂ３ｙ３など）が既にロードされている。
【００２７】
図５Ｂに示すように、次に、フィルタ３２０が、追加のブロックで埋まる。より詳細には、部分的に完了したブロック（ｍｂ１ｙ２など）がスクラッチパッドメモリから取得されて、フィルタにロードされる。また、現在のマクロブロック（ｍｂ４など）からの選択されたブロック（ｍｂ４ｙ０、ｍｂ４ｙ２など）がエンコーダ／デコーダにロードされるが、３２１に示すように、この時点では、マクロブロックをロードするシーケンス（ｍｂ４ｙ０、ｍｂ４ｙ１、ｍｂ４ｙ２およびｍｂ４ｙ３など）のために、ブロックの少なくとも１つがロードされるが、フィルタ３２０にシフトされないことが求められる。
【００２８】
フィルタブロックがロードされると、図５Ｃに示すように、フィルタ３２０は区分的なオーバーラップスムージングを実行する。より詳細には、選択された内部の垂直端部３０１、３０２に対して、垂直オーバーラップスムージング（Ｖ）が実行される。次に、選択された内部の水平端部（３０３、３０４、３０５および３０６など）に対して、水平オーバーラップスムージング（Ｈ）が実行される。
【００２９】
フィルタブロックが部分的にスムージングされた後は、図５Ｄに示すように、フィルタ３２０は区分的なデブロッキングを実行する。最初に、選択された８×８ブロック境界（３０７、３０８、３０９、３１０など）に対して、水平インループデブロッキング（ＨＤ）が実行され、続いて、選択されたサブブロック境界（３１１、３１２、３１３、３１４など）に対して水平インループデブロッキング（ＨＤＨ）が実行される。次に、フィルタは、選択された８×８ブロック境界（３１５、３１６など）に対して垂直インループデブロッキング（ＶＤ）を実行し、続いて、選択されたサブブロック境界（３１７、３１８など）に対して垂直インループデブロッキング（ＶＤＨ）を実行する。
【００３０】
上記のスムージングステップとデブロッキングステップのそれぞれの中では、境界の区分（piece）間に依存関係がないために、境界の区分がフィルタされる順序は重要でない。図５Ｃ，５Ｄに示す区分的な処理の特定のシーケンスのほかに、本発明に従って、別のシーケンスおよび／またはフィルタリングステップを実装することもできる。例えば、境界端の区分の別のシーケンスがフィルタされてもよい。更に、スムージングまたはデブロッキングのモードの１種類以上が適用されていてもよく、フィルタリング方式に応じて、フィルタリング操作が、境界のいずれかの側で最大で３ピクセル以上に作用してもよい。例えば、ＭＰＥＧ−４標準は、２つのデブロッキングモードを使用しており、１つのモードでは、ブロック端のいずれかの側の１つのピクセルに短いフィルタを適用し、第２のモードでは、いずれかの側の２つのピクセルに長いフィルタを適用する。別の実装では、特定の要求事項を満足させるために、フィルタの定義、異種のフィルタの数および／または適応フィルタリングの条件が適合されうる。
【００３１】
スムージング操作とデブロッキングフィルタ操作が終了すると、図５Ｅに示すように、処理されたフィルタブロックが記憶されてシフトされる。より詳細には、ブロック（ｍｂ０ｙ３、ｍｂ３ｙ１など）は完了しているため、次に、これら完了したブロックが出力されうる。更に、１つ以上の部分的に完了したブロック（ｍｂ３ｙ３など）が、その後、下の隣接するマクロブロック（例えば、図３のｍｂ３ｙ３に関連するマクロブロック６を参照）を処理する際に使用するために、スクラッチパッドに移動されうる。次に、フィルタ内の残りの部分的に完了したブロック（ｍｂ１ｙ２、ｍｂ４ｙ０、ｍｂ４ｙ２など）が、新しいデータのための空間を空けるために、フィルタ内をシフトされうる。出力ステップ、記憶ステップおよびシフトステップの結果が図５Ｆに示される。
【００３２】
このとき、図５Ｇに示すように、フィルタ３２０に新しいデータブロックが埋まりうる。より詳細には、部分的に完了したブロック（ｍｂ１y３など）がスクラッチパッドメモリから取得されて、フィルタにロードされる。更に、現在のマクロブロック（ｍｂ４など）からの残りのブロック（ｍｂ４ｙ１、ｍｂ４ｙ３など）がフィルタ３２０にロードされる。
【００３３】
フィルタブロックがロードされると、図５Ｈに示すように、フィルタ３２０は区分的なオーバーラップスムージングを実行する。より詳細には、選択された内部の垂直端部に対して、垂直オーバーラップスムージング（Ｖ１、Ｖ２）が実行される。次に、選択された内部の水平端部に対して、水平オーバーラップスムージング（Ｈ１、Ｈ２、Ｈ３、Ｈ４）が実行される。
【００３４】
フィルタブロックが部分的にスムージングされた後は、図５Ｉに示すように、フィルタ３２０は区分的なデブロッキングを実行する。最初に、選択された８×８ブロック境界に対して、水平インループデブロッキング（ＨＤ１、ＨＤ２、ＨＤ３、ＨＤ４）が実行され、続いて、選択されたサブブロック境界に対して水平インループデブロッキング（ＨＤＨ１、ＨＤＨ２、ＨＤＨ３、ＨＤＨ４）が実行される。次に、フィルタは、選択された８×８ブロック境界に対して垂直インループデブロッキング（ＶＤ１、ＶＤ２）を実行し、続いて、選択されたサブブロック境界で垂直インループデブロッキング（ＶＤＨ１、ＶＤＨ２）を実行する。
【００３５】
スムージング操作とデブロッキングフィルタ操作が終了すると、図５Ｊに示すように、処理されたフィルタブロックが記憶されてシフトされる。より詳細には、ブロック（ｍｂ１ｙ２、ｍｂ４ｙ０など）は完了しているため、次に、これら完了したブロックが出力されうる。更に、１つ以上の部分的に完了したブロック（ｍｂ４ｙ２など）が、その後、下の隣接するマクロブロックを処理する際に使用するために、スクラッチパッドに移動されうる。次に、フィルタ内の残りの部分的に完了したブロック（ｍｂ１ｙ３、ｍｂ４ｙ１、ｍｂ４ｙ３など）が、新しいデータのための空間を空けるために、フィルタ内をシフトされうる。出力ステップ、記憶ステップおよびシフトステップの結果が図５Ｋに示され、これは、図５Ａに示したフィルタの最初の状態に対応している。その結果、図５Ａ〜Ｋに示すステップのシーケンスが繰り返されて、次のマクロブロック（マクロブロック５またはｍｂ５など）等の次のフィルタブロックのフィルタリングが続行される。
【００３６】
次に図６Ａ〜Ｆを参照すると、本発明の説明のための実施形態が示されており、ＷＭＶ９のスムージング手順とデブロッキング手順を、区分的な処理技術によってマクロブロックのＣｂブロックまたはＣｒブロックに実装可能な方法を示す。ＣｂマクロブロックとＣｒマクロブロックは似ているため、インデックスラベルＣｂ（ｘ，ｙ）を付した現在のＣｂマクロブロックを参照して例を示す。フィルタリング処理の最初の状態が図６Ａに示され、フィルタ４２０には、オーバーラップスムージング（例えば、楕円形のマーク４２２を参照のこと）とデブロッキング（例えば、線のマーク４２３を参照のこと）が既に部分的に処理されているブロック（Ｃｂ（ｘ−１，ｙ−１）およびＣｂ（ｘ−１，ｙ）など）が既にロードされている。
【００３７】
図６Ｂに示すように、次に、フィルタ４２０が、追加のブロックで埋まる。より詳細には、部分的に完了したブロック（Ｃｂ（ｘ，ｙ−１）など）がスクラッチパッドメモリから取得されて、フィルタにロードされる。更に、現在のマクロブロックからのブロック（Ｃｂ（ｘ，ｙ）など）がフィルタ４２０にロードされる。フィルタブロックがロードされると、図６Ｃに示すように、フィルタ４２０は区分的なオーバーラップスムージングを実行する。より詳細には、選択された内部の垂直端部に対して、垂直オーバーラップスムージング（Ｖ）が実行される。次に、選択された内部の水平端部に対して、水平オーバーラップスムージング（Ｈ１、Ｈ２）が実行される。
【００３８】
フィルタブロックが部分的にスムージングされた後は、図６Ｄに示すように、フィルタ４２０は区分的なデブロッキングを実行する。最初に、選択された８×８ブロック境界に対して、水平インループデブロッキング（ＨＤ１、ＨＤ２）が実行され、続いて、選択されたサブブロック境界に対して水平インループデブロッキング（ＨＤＨ１、ＨＤＨ２）が実行される。次に、フィルタは、選択された８×８ブロック境界に対して垂直インループデブロッキング（ＶＤ）を実行し、続いて、選択されたサブブロック境界で垂直インループデブロッキング（ＶＤＨ）を実行する。
【００３９】
スムージング操作とデブロッキングフィルタ操作が終了すると、図６Ｅに示すように、処理されたフィルタブロックが記憶されてシフトされる。より詳細には、ブロック（Ｃｂ（ｘ−１，ｙ−１））は完了しているため、次に、この完了したブロックが出力されうる。更に、部分的に完了したブロック（Ｃｂ（ｘ−１，ｙ）など）が、その後、下の隣接するマクロブロックを処理する際に使用するために、スクラッチパッドに移動されうる。次に、フィルタ内の残りの部分的に完了したブロック（Ｃｂ（ｘ，ｙ−１），Ｃｂ（ｘ，ｙ）など）が、新しいデータのための空間を空けるために、フィルタ内をシフトされうる。出力ステップ、記憶ステップおよびシフトステップの結果が図６Ｆに示され、これは、図６Ａに示したフィルタの最初の状態に対応している。その結果、図６Ａ〜Ｆに示すステップのシーケンスが繰り返されて、次のマクロブロックのフィルタリングが続行される。
【００４０】
上記からわかるように、ハードウェアデコーダユニット内に小容量のスクラッチパッドメモリを提供することによって、インループフィルタが、スクラッチパッドメモリ内の現在のマクロブロック（ＭＢ（ｘ，ｙ）で示す）のｌｕｍａブロックおよびのｃｈｒｏｍａブロックからの部分的に完了したフィルタリング結果を一時的に記憶しうる。その後、記憶したフィルタリング結果が、下の行でこのマクロブロックに隣接するブロックを処理する際に使用されうる。より詳細には、フィルタがすぐ下のマクロブロック、すなわちＭＢ（ｘ，ｙ＋１）を処理中に、ＭＢ（ｘ，ｙ）に対して記憶したデータが、スクラッチパッドからフェッチされて、ＭＢ（ｘ，ｙ＋１）の処理のために使用される。
【００４１】
スクラッチパッドメモリに記憶されている部分的に完了したフィルタリング結果は、少なくとも８×８ピクセルデータを有する必要があるが、選択した実施形態では、スクラッチパッドは、そのブロックに境界フィルタリングが必要かどうかを決定するための制御データも記憶している。例えば、この制御データは、各ブロックについて、現在のマクロブロック内の６つのブロックのヘッダのグループを含んでいてもよく、これには、１ｍｖまたは４ｍｖのセレクタ、ブロックアドレス、フレーム内のブロック位置、ｍｂｍｏｄｅ、変換サイズ、係数（ゼロまたは非ゼロ）、および運動ベクトル（２つがｘ方向およびｙ方向の前進用、２つがｘ方向およびｙ方向の後退用）などがある。このデータは、バーストサイズを効率的に利用できるような方法でパッキングされうる。
【００４２】
スクラッチパッドメモリは小容量であるため、このメモリを、ビデオアクセラレータと同じチップに搭載することができるが、代表的なフレームのサイズの場合、スクラッチパッドは、ＤＤＲメモリまたはほかの外的メモリなどの別のチップに搭載されうる。しかし、ビデオアクセラレータハードウェアユニット１０１内にスクラッチパッドメモリを置くことにより、メモリアクセスのパフォーマンスの改善が得られる。スクラッチパッドメモリの容量を最小化することにより、フレーム全体のデータブロックを記憶するための大容量のメモリバッファを設けることと比較して、メディアアクセラレーションハードウェアユニットの製造コストを削減することができる。例えば、制御データおよびピクセルデータを含め、部分的に完了したフィルタリング結果を記憶するのに使用されるスクラッチパッドメモリの容量は、以下のように計算することができる。
スクラッチパッドの容量＝（５７６バイト）×（フレーム内の水平方向のマクロブロックの個数）
【００４３】
上記からわかるように、フレームの垂直方向のサイズが大きい場合は、スクラッチパッドの容量は比較的小さくなる。換言すれば、スクラッチパッドの容量は、フレームの水平方向のサイズによって決まる。
【００４４】
フレーム全体が復号化される前に、先頭のマクロブロックに対してフィルタリングが開始される限り、フィルタリング操作の速度を改善するためにフレーム全体を保持するための大容量メモリに関連して、ここに記載した区分的な処理技術が有利に使用できことができることが理解されよう。しかし、区分的な処理により、小容量のオンボードのスクラッチパッドメモリでフィルタリングを実装することができ、フレーム全体を記憶するための大容量のメモリを使用する場合と比較して、コスト面および速度面での利点が得られる。更に、区分的なフィルタリングによって、ハードウェアのフレームベースの実装の場合と比較して、ブロックにアクセスするのにオーバーヘッドが増えることがなく、処理全体の順序が、従来のフレームベースのフィルタリングのように維持される。選択した実施形態では、区分的な処理が、レーテンシを認識できないレベルに抑えるためにパイプライン化されてもよい。パイプライン化によってもフィルタスループットが均等化され、ブロックのフェッチと記憶のバーストが防止される。
【００４５】
本発明は、本開示の教示の利益を得る当業者にとって自明の、異なるが均等の別法によって変更および実施されてもよいため、上記に記載した特定の実施形態は例に過ぎず、本発明の限定事項とみなすべきではない。したがって、上記の説明は、記載した特定の形式に本発明を限定することを意図するものではなく、当業者が、本発明の最も広い形の趣旨および範囲から逸脱することなく、さまざまに変更、置換、変形することができるように、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図していることが理解されるべきである。
【図面の簡単な説明】
【００４６】
【図１】ビデオ情報を伸張するためのシステムのブロック図である。
【図２】本発明に従って構成された例示的なビデオ伸張システムのブロック図である。
【図３】本発明の選択した実施形態による、スクラッチパッドメモリを使用して、ハードウェア内でオーバーラップスムージングおよびインループデブロッキングを効率的に処理するインループフィルタリング処理の模式図である。
【図４】ビデオエンコーダまたはデコーダ内でスムージングおよびデブロッキングフィルタを使用して、復号化されたフレーム中のブロック歪みを低減するための手法の例を示す。
【図５Ａ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｂ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｃ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｄ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｅ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｆ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｇ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｈ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｉ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｊ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図５Ｋ】ｌｕｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ａ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ｂ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ｃ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ｄ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ｅ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図６Ｆ】ｃｈｒｏｍａブロックに対してスムージング手順およびデブロッキング手順を実装するために、区分的な処理を使用可能な方法を示す。
【図１】
0005390773.tif 000002
【図２】
0005390773.tif 000003
【図３】
0005390773.tif 000004
【図４】
0005390773.tif 000005
【図５Ａ】
0005390773.tif 000006
【図５Ｂ】
0005390773.tif 000007
【図５Ｃ】
0005390773.tif 000008
【図５Ｄ】
0005390773.tif 000009
【図５Ｅ】
0005390773.tif 000010
【図５Ｆ】
0005390773.tif 000011
【図５Ｇ】
0005390773.tif 000012
【図５Ｈ】
0005390773.tif 000013
【図５Ｉ】
0005390773.tif 000014
【図５Ｊ】
0005390773.tif 000015
【図５Ｋ】
0005390773.tif 000016
【図６Ａ】
0005390773.tif 000017
【図６Ｂ】
0005390773.tif 000018
【図６Ｃ】
0005390773.tif 000019
【図６Ｄ】
0005390773.tif 000020
【図６Ｅ】
0005390773.tif 000021
【図６Ｆ】
0005390773.tif 000022