(57)【要約】【課題】解凍されたビデオデータをフィルタ処理するためのグラフィックスコントローラの後処理装置を提供する。【解決手段】本装置の実施形態は、バッファとデリンギングフィルタを含む。バッファは、メモリからビデオデータのピクセル線を読み込むように構成される。ピクセル線は、ビデオデータの隣接マクロブロックからのピクセルを含む。デリンギングフィルタはバッファに結合される。デリンギングフィルタは、ピクセル線内のピクセルの隣接対の間の最大ピクセルジャンプを特定し、ピクセルがエッジピクセルではないという判断に応答して、ピクセル線のピクセルサブセット内のピクセルにデリンギングフィルタを適用するように構成される。ピクセルがエッジピクセルではないという判断は、特定された最大ピクセルジャンプに基づく。【選択図】図１
2009278189.tif 000002
【特許請求の範囲】
【請求項１】
解凍ビデオデータをフィルタ処理するグラフィックスコントローラの後処理装置であって、
ビデオデータのピクセル線であって、前記ビデオデータの隣接するマクロブロックからのピクセルを含む前記ピクセル線をメモリから読み込むように構成されるバッファと、
前記バッファと連通するように構成され、前記ピクセル線における隣接するピクセル対の間の最大ピクセルジャンプを特定し、前記特定された最大ピクセルジャンプに基づく、ピクセルはエッジピクセルではないという判断に応答して、前記ピクセル線のピクセルサブセット内の前記ピクセルにデリンギングフィルタを適用するように構成されるデリンギングフィルタと、を備える後処理装置。
【請求項２】
前記デリンギングフィルタは、前記ピクセルと、隣接するピクセルの間の差を、エッジ閾値と比較するように更に構成され、前記エッジ閾値は、前記特定された最大ピクセルジャンプとエッジ重み付けファクタに依存する請求項１に記載の後処理装置。
【請求項３】
前記デリンギングフィルタは、下記の式を比較するように更に構成され、
｜Ｐｉ−Ｐｉ−１｜＜Ｐｍａｘ×ｗｅと、｜Ｐｉ−Ｐｉ＋１｜＜Ｐｍａｘ×ｗｅ
これらの式において、Ｐｉは前記ピクセルの現在値を表わし、Ｐｉ−１は、第１隣接ピクセルの値を表わし、Ｐｉ＋１は、第２隣接ピクセルの値を表わし、Ｐｍａｘは、前記特定された最大ピクセルジャンプを表わし、ｗｅは前記エッジ重み付けファクタを表わす請求項１に記載の後処理装置。
【請求項４】
前記デリンギングフィルタは、前記ピクセルに対して、新しい値を計算するように更に構成され、前記ピクセルに対する前記新しい値は、前記ピクセルの現在値と、前記ピクセル線における隣接ピクセルの現在値に依存する請求項１に記載の後処理装置。
【請求項５】
前記デリンギングフィルタは、前記ピクセルに対する前記新しい値を、下記の式に従って計算するように更に構成され、
【数１】
2009278189.tif 000005
この式においてＰｎｅｗは前記ピクセルの前記新しい値を表わし、ｗｐはピクセル重み付けファクタを表わし、Ｐｉは前記ピクセルの前記現在値を表わし、Ｐｉ−１は、第１隣接ピクセルの値を表わし、Ｐｉ＋１は第２隣接ピクセルの値を表わし、Ｐｂｉａｓは予め定義されたバイアスファクタを表わす請求項４に記載の後処理装置。
【請求項６】
前記デリンギングフィルタは、前記新しいピクセル値を、クランプ範囲内にクランプするように更に構成され、前記クランプ範囲は、下記の式に従って計算され、
Ｐｃｌａｍｐ＝（Ｐｉ＋Ｑｐ，Ｐｉ−Ｑｐ）
この式において、Ｐｃｌａｍｐはクランプ範囲を表わし、Ｑｐは量子化スケール値を表わす請求項５に記載の後処理装置。
【請求項７】
前記バッファと前記デリンギングフィルタに結合され、前記隣接マクロブロックからブロッキングアーティファクトを除去するように構成されるデブロッキングフィルタを更に備える請求項１に記載の後処理装置。
【請求項８】
請求項１に記載の前記後処理装置を備えるシステムであって、前記システムは、前記後処理装置に結合されたビデオデコーダを備え、前記ビデオデコーダは、前記隣接マクロブロックの現在のマクロブロックに対する量子化スケール値を生成し、前記デリンギングフィルタは、前記量子化スケール値を、デリンギング閾値と比較して、前記デリンギングフィルタが動作可能かを判断するように更に構成されるシステム。
【請求項９】
前記デリンギングフィルタは、下記の式に従って、前記量子化スケール値を調整するように更に構成され、
Ｑｐ’＝Ｑｐ×Ｍ×ｗｄ
この式において、Ｑｐ’は新しい量子化スケール値を表わし、Ｑｐは元々の量子化スケール値を表わし、Ｍは後デリンギングファクタを表わし、ｗｄは後デリンギング重み付けファクタを表わす請求項８に記載のシステム。
【請求項１０】
解凍ビデオをフィルタ処理して、リンギングアーティファクトを補償する方法であって
ビデオデータのピクセル線であって、前記ビデオデータの隣接マクロブロックからのピクセルを備える前記ピクセル線を読み込む工程と、
前記ピクセル線における隣接ピクセル対間の最大ピクセルジャンプを特定する工程と、
前記特定された最大ピクセルジャンプに基づく、ピクセルはエッジピクセルではないという判断に応答して、前記ピクセル線のピクセルサブセット内の前記ピクセルに対してデリンギングフィルタを適用する工程と、を備える方法。
【請求項１１】
前記ピクセルはエッジピクセルではないと判断することは、前記ピクセルと、隣接ピクセルの間の差をエッジ閾値と比較することを含み、前記エッジ閾値は、前記特定された最大ピクセルジャンプとエッジ重み付けファクタに依存する請求項１０に記載の方法。
【請求項１２】
前記ピクセルと、前記隣接ピクセルの間の前記差をエッジ閾値と比較することは、下記の式に従って比較を行うことを更に含み、
｜Ｐｉ−Ｐｉ−１｜＜Ｐｍａｘ×ｗｅと、｜Ｐｉ−Ｐｉ＋１｜＜Ｐｍａｘ×ｗｅ
この式において、Ｐｉは前記ピクセルの現在値を表わし、Ｐｉ−１は第１隣接ピクセルの値を表わし、Ｐｉ＋１は第２隣接ピクセルの値を表わし、Ｐｍａｘは前記特定された最大ピクセルジャンプを表わし、ｗｅは前記エッジ重み付けファクタを表わす請求項１１に記載の方法。
【請求項１３】
前記ピクセル線は、第１ピクセルマクロブロックから８個のピクセルと、第２ピクセルマクロブロックから８個のピクセルを備え、前記ピクセルサブセットは、前記第１および第２マクロブロックからそれぞれ４個の合計８個のピクセルを備える請求項１１に記載の方法。
【請求項１４】
前記デリンギングフィルタを前記ピクセルに適用する工程は、前記ピクセルに対する新しい値を計算する工程を備え、前記ピクセルに対する前記新しい値は、前記ピクセルの現在値と、前記ピクセル線内の隣接ピクセルの現在値に依存する請求項１０に記載の方法。
【請求項１５】
下記の式に従って前記ピクセルに対する前記新しい値を計算する工程を更に備え、
【数２】
2009278189.tif 000006
この式で、Ｐｎｅｗは前記ピクセルの前記新しい値を表わし、ｗｐはピクセル重み付けファクタを表わし、Ｐｉは前記ピクセルの前記現在値を表わし、Ｐｉ−１は第１隣接ピクセルの値を表わし、Ｐｉ＋１は第２隣接ピクセルの値を表わし、Ｐｂｉａｓは予め定義されたバイアスファクタを表わす請求項１４に記載の方法。
【請求項１６】
前記ピクセルに対する前記新しい値を計算する工程は、クランプ範囲内に前記新しいピクセル値をクランプする工程を更に備え、前記クランプ範囲は、下記の式に従って計算され、
Ｐｃｌａｍｐ＝（Ｐｉ＋Ｑｐ，Ｐｉ−Ｑｐ）
この式において、Ｐｃｌａｍｐは前記クランプ範囲を表わし、Ｑｐは量子化スケール値を表わす請求項１５に記載の方法。
【請求項１７】
デブロッキングフィルタから、前記ピクセル線の前記ピクセルの少なくともいくつかを受け取る工程を更に備える請求項１０に記載の方法。
【請求項１８】
前記隣接マクロブロックの現在のマクロブロックに対する量子化スケール値を、デリンギング閾値と比較して、前記デリンギングフィルタが動作可能かを判断する工程を更に備える請求項１０に記載の方法。
【請求項１９】
前記量子化スケール値を、下記の式に従って調整する工程を更に備え、
Ｑｐ’＝Ｑｐ×Ｍ×ｗｄ
この式において、Ｑｐ’は新しい量子化スケール値を表わし、Ｑｐは元々の量子化スケール値を表わし、Ｍは後デリンギングファクタを表わし、ｗｄは後デリンギング重み付けファクタを表わす請求項１８に記載の方法。
【請求項２０】
デジタルプロセッサにより実行可能な、マシン可読命令のプログラムを具現化して、エッジのデリンギングを容易にする工程を行うコンピュータ可読格納媒体であって、前記工程は、
ビデオデータのピクセル線であって、前記ビデオデータの隣接マクロブロックからのピクセルを備える前記ピクセル線を読み込む工程と、
前記ピクセル線における隣接ピクセル対間の最大ピクセルジャンプを特定する工程と、
前記特定された最大ピクセルジャンプに基づく、ピクセルはエッジピクセルではないという判断に応答して、前記ピクセル線のピクセルサブセット内の前記ピクセルに対してデリンギングフィルタを適用する工程と、を備える方法。
【請求項２１】
前記工程は、前記ピクセルと隣接ピクセルの間の差を、エッジ閾値と比較する工程を更に備え、前記エッジ閾値は、前記特定された最大ピクセルジャンプとエッジ重み付けファクタに依存する請求項２０に記載のコンピュータ可読格納媒体。
【請求項２２】
前記工程は、前記ピクセルに対する新しい値を計算する工程を更に備え、前記ピクセルに対する前記新しい値は、前記ピクセルの現在値と、前記ピクセル線における隣接ピクセルの現在値に依存する請求項２０に記載のコンピュータ可読格納媒体。
【請求項２３】
前記工程は、前記隣接マクロブロックの現在のマクロブロックに対する量子化スケール値の、デリンギング閾値との比較に応答して、前記デリンギングフィルタを動作可能にする工程を更に備える請求項２０に記載のコンピュータ可読格納媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオ圧縮は、長編ムービーのようなビデオデータファイルを、格納（例えば、光学格納媒体へ）、処理、および伝送のために比較的管理し易くするために使用される。一般的には、ビデオ圧縮は、冗長および重要でない情報を削除することにより達成される。ビデオ画像は通常は画面全体に対して滑らかな色領域から構成されているので、ビデオ情報は通常は時間および空間にわたりそれほど大きくは変化しない。そのため、画像におけるビデオ情報のかなりの部分は予測可能で、そのため冗長性がある。従って、ビデオ圧縮を使用して、冗長な情報を除去し、予測できない情報のみを残す。
【０００２】
重要でないビデオ画像情報は、ある合理的な視聴条件においては人間の目では見ることができない情報である。例えば、人間の目は、高い空間周波数のノイズ（低空間周波数のノイズと比較して）、または場面変化の直前および直後の詳細の消失を容易には感知できない。従って、ビデオ圧縮は、重要でない情報を除去するためにも使用される。冗長な情報の除去と、重要でない情報の除去の組合せにより、ビデオデータファイルに対して、比較的高い圧縮比を容易にする。
【０００３】
動画像圧縮伸張標準方式（ＭＰＥＧ）は、デジタル圧縮フォーマットにおける視聴覚情報に対する一群の標準である。ＭＰＥＧは、国際標準化機構（ＩＳＯ）により認定された標準である。ＭＰＥＧ圧縮は、種々の従来技術を組み込んで、冗長および重要でない情報をビデオデータファイルから除去するビデオ圧縮の１つのタイプである。これらの従来技術のいくつかには、動き補償予測（motion-compensated prediction）、離散コサイン変換（ＤＣＴ）、量子化、および可変長符号化（ＶＬＣ）が含まれる。ＤＣＴは、ピクセルデータを、関連付けられた係数を有する空間周波数のセットに変換するアルゴリズムである。ＤＣＴ係数の非均一分布（画像の非ゼロＤＣＴ係数のほとんどは、一般的な領域に位置する傾向がある）により、この分布特性を利用して、非ゼロＤＣＴ係数とゼロＤＣＴ係数を区別するためにＶＬＣが通常は使用される。そうすることにより、冗長／予測可能情報は除去できる。更に、ＤＣＴにより、ビデオ画像を空間周波数に分解したことは、それらの関連するＤＣＴ係数を介して、より高い周波数が、それらの関連するＤＣＴ係数を介する、より低い周波数よりも低い精度でコード化できることを意味している。これにより、重要でない情報は除去されることになる。従って、量子化は、人間の目がそれぞれの空間周波数において許容できるノイズ量に基づいてＤＣＴ係数を重み付けし、係数の減少されたセットが生成できる演算として一般化できる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、高圧縮されたビデオデータが解凍されるときは、ノイズアーティファクトを伴う画像の劣化が解凍ビデオ画像に起こり得る。一般的には、２つのタイプの劣化ノイズアーティファクトがある。それはブロッキングアーティファクトとリンギングアーティファクトである。ブロッキングアーティファクトは、典型的には、隣接ビデオ・ピクセル・データ・ブロック間の不連続性として現れる。ブロッキングアーティファクトは、ビデオピクセルブロックのＤＣＴ係数が、隣接ブロック間のピクセル相関を考慮しないで独立して量子化され処理されるときに作成される。リンギングアーティファクトは、典型的には、エッジ近傍のローカルフリッカリングとして現れる。リンギングアーティファクトは、高周波数ＤＣＴ係数が粗い量子化の結果として切り捨てられるときに作成される。
【０００５】
従来のデリンギングフィルタ技術は、ＭＰＥＧ標準でも参照される。しかし、従来のデリンギングフィルタ技術は、比較的複雑な、二次元（２Ｄ）非線形フィルタを実践する。更に、従来の２Ｄ非線形フィルタは、実践するために３回の走査を行う。
【課題を解決するための手段】
【０００６】
装置の実施形態を説明する。１つの実施形態において、装置は、解凍ビデオデータをフィルタ処理するためのグラフィックスコントローラの後処理装置である。後処理装置の実施形態は、バッファとデリンギングフィルタを含む。バッファは、メモリから、ビデオデータのピクセル線を読み込むように構成される。ピクセル線は、ビデオデータの隣接マクロブロックからのピクセルを含む。デリンギングフィルタは、バッファに結合される。デリンギングフィルタは、ピクセル線における隣接ピクセル対の間の最大ピクセルジャンプを特定し、ピクセルがエッジピクセルでないという判断に応答して、ピクセル線のピクセルサブセット内のピクセルにデリンギングフィルタを適用するように構成される。ピクセルがエッジピクセルではないという判断は、特定された最大ピクセルジャンプに基づいている。装置の他の実施の形態も説明する。
【０００７】
方法の実施形態もまた説明する。１つの実施形態において、本方法は、解凍ビデオをフィルタ処理して、リンギングアーティファクトを補償する方法である。本方法は、ビデオデータのピクセル線を読み込む工程を含む。ピクセル線は、ビデオデータの隣接マクロブロックからのピクセルを含む。本方法はまた、ピクセル線における隣接ピクセル対の間の最大ピクセルジャンプを特定する工程も含む。本方法はまた、ピクセルがエッジピクセルでないという判断に応答して、ピクセル線のピクセルサブセット内のピクセルにデリンギングフィルタを適用する工程も含む。ピクセルがエッジピクセルでないという判断は、特定された最大ピクセルジャンプに基づいている。本方法の他の実施形態もまた説明する。
【０００８】
ここで使用されるように、結合された構成要素またはエンティティは、物理的に接続された構成要素を広く含むように意図されており、物理的に接続されていないが、通信可能、または種々の手段により信号または情報を送信できるエンティティもまた含む。本発明の実施形態の、他の形態および利点は、本発明の原理の例により示された、付随する図面と連係する下記の詳細な説明により明白になるであろう。
【発明を実施するための最良の形態】
【０００９】
下記の詳細な説明においては、いくつもの具体的な詳細が、本発明の実施形態の完全な理解のために記述される。しかし、当業者には、本発明はこれらの具体的な詳細がなくても実行できるということは明白であろう。他の例においては、よく知られた方法、手順、構成要素、および回路は、簡潔および明確性のために詳細には記述されていないが、これは、記述される実施形態の形態を不必要に不明瞭にしないためである。更に、下記の詳細な記述は、ビデオ画像データを圧縮するＭＰＥＧ標準を参照するが、いくつかの実施形態はまた、他のビデオ圧縮方式にも適用できる。
【００１０】
図１は、後処理アーキテクチャ１００の１つの実施形態の模式ブロック図を示している。１つの実施形態において、後処理アーキテクチャ１００は、「パイプライン」フィルタ処理を実践する。図示されている後処理アーキテクチャ１００は、メモリ装置１０２と、フィルタバッファ１０４と、デブロッキングフィルタ１０６と、デリンギングフィルタ１０８を含む。後処理アーキテクチャ１００の物理的実装は変わるが、示されているメモリ装置１０２と、フィルタバッファ１０４と、デブロッキングフィルタ１０６と、デリンギングフィルタ１０８は結合されて、メモリ１０２とバッファ１０４の間、バッファ１０４とデブロッキングフィルタ１０６の間、バッファ１０４とデリンギングフィルタ１０８の間、そしてデブロッキングフィルタ１０６とデリンギングフィルタ１０８の間のデータ転送を可能にする。そのようなデータ転送は、種々の構成要素部品間で直接または間接的に達成される。更に、データ転送は、1つまたは複数のデータ転送プロトコルを使用してシリアルまたはパラレル通信チャネルにおいて実践できる。１つの実施形態において、後処理アーキテクチャ１００の構成要素部品はお互いにシリアルに接続されて、追加的にメモリにアクセスする必要がなく、解凍ビデオ画像を、まずデブロッキングフィルタ１０６へブロッキングアーティファクトを除去するために提供し、そして、デリンギングフィルタ１０８へリンギングアーティファクトを除去するために提供することを可能にする。他の実施形態は他のシリアルまたはパラレル構成を実践できる。
【００１１】
１つの実施形態において、メモリ１０２は解凍（つまり、処理済）ビデオ画像データを格納する。デブロッキングフィルタ１０６とデリンギングフィルタ１０８は、バッファ１０４からの解凍ビデオ画像データにアクセスする。または、デリンギングフィルタ１０８はデブロッキングフィルタ１０６からの解凍ビデオ画像データに直接アクセスできる。１つの実施形態において、デブロッキングフィルタ１０６とデリンギングフィルタ１０８は一次元（１Ｄ）フィルタである。代替実施形態においては、二次元（２Ｄ）フィルタまたは１Ｄおよび２Ｄフィルタの組合せを実践できる。デブロッキングフィルタ１０６とデリンギングフィルタ１０８の詳細をさらに下記に示す。
【００１２】
図２は、ピクセル１１６の、水平方向に隣接するマクロブロック１１２と１１４の対１１０の１つの実施形態の模式図を示している。示されているマクロブロック１１２と１１４のそれぞれは、ピクセル１１６の１６×１６アレイ、つまり合計２５６個のピクセル１１６のアレイを含む。類似のマクロブロックの命名法は、表示装置上のピクセル１１６のすべてをグループ化するために使用できる。この命名法により、種々のピクセル１１６に対応するビデオデータの処理を容易にする。このようにして、ビデオデータを、マクロブロック１１２と１１４のようなブロックにおいて処理できる。描かれたマクロブロック１１２と１１４はピクセル１１６の１６×１６アレイとして示されているが、マクロブロック１１２と１１４の他の実装は、より少ない、またはより多いピクセル１１６を含むことができる。例えば、マクロブロックはピクセル１１６の８×８アレイを有するように実装できる。
【００１３】
説明を容易にするために、左側のマクロブロック１１２を強調表示して（つまり、外形を目立たせて）、左側のマクロブロック１１２が、特定の処理または表示工程の対象である現在のマクロブロック、または現在のビデオデータのブロックとして指定されていることを示す。１つの実施形態において、表示装置上のマクロブロック１１２と１１４のそれぞれは、特定の処理工程の対象の現在のブロックとして個々に指定できる。これにより、ビデオデータをブロックで処理することが可能になり、従って、処理および表示工程を簡単にできる。
【００１４】
更に、隣接するマクロブロック１１２と１１４内のピクセル１１６はピクセル線１１８として指定できる。水平方向に隣接するマクロブロック１１２と１１４の場合は、ピクセル線１１８はまたピクセル行とも称することができる。マクロブロック１１２と１１４のそれぞれは各行に１６個のピクセル１１６を有しているので、ピクセル線１１８は３２個のピクセル１１６を含むことになる。または、ピクセル線１１８はピクセル行におけるピクセル１１６のすべてよりも少ないピクセル１１６を含むことができる。例えば、１つの実施形態において、ピクセル線１１８はマクロブロック１１２と１１４のそれぞれから、１６個のピクセル１１６すべてではなく中間の８個のピクセル１１６を含むことができる。ピクセル線１１８は下記に記載するように使用される。
【００１５】
図３は、ピクセル１１６の垂直方向に隣接するマクロブロック１２２と１２４の対１２０の１つの実施形態の模式図を示している。１つの実施形態において、上側マクロブロック１２２は現在のマクロブロックとして指定される。垂直方向に隣接するマクロブロック１２２と１２４は、図２に示されている水平方向に隣接するマクロブロック１１２と１１４と実質的に類似している。マクロブロック１２２と１２４のそれぞれはピクセル１１６の１６×１６アレイを含む。更に、マクロブロック１２２と１２４はピクセル線１２８を含むことができる。ピクセル線１２８は垂直方向に向いているので（マクロブロック１２２と１２４の空間的関係のため）、ピクセル線１２８はまたピクセル列とも称される。多くの形態において、ピクセル線１１８とピクセル線１２８は、その向きを除いて実質的に類似している。
【００１６】
図４は、デブロッキングアーキテクチャ１３０の１つの実施形態の模式ブロック図を示している。一般的に、図示されているデブロッキングアーキテクチャ１３０は、マクロブロック１１２と１１４、およびマクロブロック１２２と１２４のような隣接するマクロブロックの境界を滑らかにすることを容易にする。１つの実施形態において、デブロッキングアーキテクチャ１３０の出力は表示の目的で使用されるが、基準フレームとしては使用されない。更に１つの実施形態において、デブロッキングアーキテクチャ１３０は完全なフレームがデコードされた後に使用される。
【００１７】
図示されているデブロッキングアーキテクチャ１３０は、入力ピクセル線１３２の１０個のピクセル１１６（例えば、典型的なピクセル線１１８における３２個のピクセル１１６のうちの１０個）を示している。ピクセル１１６はＰ０〜Ｐ４およびＱ０〜Ｑ４として指定されている。１つの実施形態において、ピクセルＰ０〜Ｐ４は１つのマクロブロック１１２に属し、ピクセルＱ０〜Ｑ４は別の隣接するマクロブロック１１４に属する。ピクセルＰ０とＱ０間の境界は、２つの隣接するマクロブロック１１２と１１４の間の境界を表わしている。添字の数が増大すると（０から４へ）、対応するピクセル１１６は、隣接するマクロブロック１１２と１１４の間の境界から遠くなる。
【００１８】
１つの実施形態において、入力ピクセル線１３２の１０個のピクセル１１６はデブロッキングフィルタ１０６に入力される。デブロッキングフィルタは入力ピクセル線１３２に対して、２つのマクロブロック１１２と１１４の間の境界を滑らかにするデブロッキング処理を実践する。その結果、デブロッキングフィルタ１０６は、例えば、出力ピクセル線１３４の８個の新しい値Ｐ０’〜Ｐ３’とＱ０’〜Ｑ３’を出力して、入力ピクセル線１３２のピクセル１１６の対応する元々の入力値Ｐ０〜Ｐ３とＱ０〜Ｑ３と置き換える。１つの実施形態において、出力ピクセル線１３４のピクセル１１６のグレースケールまたはカラースケール値は、入力ピクセル線１３２のピクセル１１６の値とは異なり、それにより、マクロブロック１１２と１１４の間のブロッキングアーティファクトが削減される。
【００１９】
図５は、デリンギングアーキテクチャ１４０の１つの実施形態の模式ブロック図を示している。一般的に、図示されているデリンギングアーキテクチャ１４０は、マクロブロック１１２と１１４、およびマクロブロック１２２と１２４のような隣接するマクロブロックの境界近くのエッジに対するリンギングアーティファクトの除去を容易にする。１つの実施形態において、デリンギングアーキテクチャ１４０は低ビットレートビデオに対しては特に有効である。
【００２０】
図示されているデリンギングアーキテクチャ１４０は、入力ピクセル線１４２の１６個のピクセル１１６（例えば、典型的なピクセル線１１８における３２個のピクセル１１６のうちの１６個）を示している。ピクセル１１６は、Ｐ０’〜Ｐ３’、Ｐ４〜Ｐ７、Ｑ０’〜Ｑ３’、およびＱ４〜Ｑ７として指定されている。１つの実施形態において、ピクセルＰ０’〜Ｐ３’とピクセルＱ０’〜Ｑ３’は、上記のデブロッキングアーキテクチャ１３０からの出力ピクセル線１３４のピクセル１１６と同じである。言い換えれば、デリンギングアーキテクチャ１４０は、デブロッキングアーキテクチャ１３０の出力ピクセル線１３４をデリンギングアーキテクチャ１４０の入力ピクセル線１４２の一部として使用して、隣接するマクロブロックからのリンギングアーティファクトを除去できる。
【００２１】
１つの実施形態において、入力ピクセル線１４２の１６個のピクセル１１６は、デリンギングフィルタ１０８に入力される。デリンギングフィルタ１０８はデリンギング処理を実践して、入力ピクセル線１４２に対する２つのマクロブロック１１２と１１４からのリンギングアーティファクトを除去する。その結果、デリンギングフィルタ１０８は、例えば、出力ピクセル線１４４の８個の新しい値Ｐ０”〜Ｐ３”とＱ０”〜Ｑ３”を出力して、入力ピクセル線１４２のピクセル１１６の対応する元々の入力値Ｐ０’〜Ｐ３’とＱ０’〜Ｑ３’と置き換える。１つの実施形態において、出力ピクセル線１４４のピクセル１１６の新しいグレースケールまたはカラースケール値は、入力ピクセル線１４２のピクセル１１６の値とは異なっており、それにより、マクロブロック１１２と１１４のリンギングアーティファクトが削減される。
【００２２】
１つの実施形態において、デリンギングフィルタ１０８は、リンギングアーティファクトの除去を容易にする種々のアルゴリズム、関数、および演算を実践できる。デリンギングフィルタ１０８の少なくとも１つの実践はデリンギングフィルタの従来の実践よりも遥かに簡単である。下記の説明は、一次元（１Ｄ）デリンギングフィルタの例としての関数的実施形態を示すが、他の実施形態は類似の設計基準および考察を使用して他のデリンギングフィルタを実践できる。
【００２３】
更に、下記の説明は、量子化スケールと、1つまたは複数の量子化ファクタまたは量子化スケール値に言及する。量子化スケールの使用は、この技術においてはよく知られており、ＭＰＥＧ規格においてかなり詳細に記述されている。従って、ここでは量子化のより詳細な説明はしない。いくつかの実施形態においては、使用される量子化スケール値は特定のマクロブロック１１２または１１４に対応する。量子化スケール値が、異なるマクロブロック１１２と１１４からのピクセル１１６を伴う計算に使用される他の実施形態においては、量子化スケール値は個々のマクロブロック１１２と１１４に対する量子化スケール値の組合せ（例えば、平均）である。他の実施形態は、1つまたは複数のマクロブロックに対する量子化スケール値の他の導出値も使用できる。
【００２４】
図６は、解凍ビデオデータをフィルタ処理する後処理方法１５０の１つの実施形態の模式フローチャート図を示している。後処理方法１５０のいくつかの実施形態は、図１の後処理アーキテクチャ１００により実践できる。後処理方法１５０の他の実施形態は、他の後処理アーキテクチャにより実践できる。
【００２５】
１つの実施形態において、デリンギングフィルタ１０８は、デリンギングフィルタ処理が動作可能かを判断する。この判断を行うために、デリンギングフィルタ１０８は量子化スケール値をフィルタ閾値と比較する（１５２）。量子化スケール値は、マクロブロック１１２と１１４の対１１０のマクロブロック１１２のような現在のマクロブロックに対応する。デリンギングフィルタ１０８は特に、量子化スケール値がフィルタ閾値を超えるかを判断する（１５４）。量子化スケール値がフィルタ閾値を超えていない場合は、デリンギングフィルタ１０８は動作可能ではなく、デリンギングフィルタ処理を解凍ビデオデータに対して行わない（１５６）。しかし、量子化スケール値が、フィルタ閾値を超えている場合は、デリンギングフィルタ１０８は動作可能である。
【００２６】
デリンギングフィルタ１０８が動作可能になると、デリンギングフィルタ１０８は量子化スケール値を調整できる（１５８）。量子化スケール値を調整すると画像品質に柔軟性がもたらされる。例えば、量子化スケール値を増大すると、画像からより多くのノイズが除去され、結果としての画像はよりソフトになる。または、量子化スケール値を減少すると、画像からはより少ないノイズしか除去されず、画像はより高い周波数を有するようになる。１つの実施形態において量子化スケール値は、下記の、
Ｑｐ’＝Ｑｐ×Ｍ×ｗｄ
ここにおいて、Ｑｐ’は新しい量子化スケール値を、Ｑｐは元々の量子化スケール値を、Ｍは後デリンギングファクタを、そしてｗｄは後デリンギング重み付けファクタを示している式に従って調整される。いくつかの実施形態においては、デリンギング重み付けファクタは３である。別の実施形態においては、後デリンギング重み付けファクタは１／１６（これは、浮動小数点乗算ではなく整数除算を使用して実践できる）であり、後デリンギングファクタは、約３と６４の間である。
【００２７】
代替の実施形態において、上記に示した方程式は、後デリンギング重み付けファクタｗｄを含まないように変形できる。しかし、後デリンギング重み付けファクタを使用すると、浮動小数点計算を回避するためのハードウェア実装を容易にする。後デリンギング重み付けファクタが含まれない場合は、デリンギング重み付けファクタは約０.２５と４の間、または他の値であってよい。他の実施形態においては、量子化スケール値調整の他の変形例が実践できる。
【００２８】
量子化スケール値の調整後、デリンギングフィルタ１０８は、デリンギングフィルタ１０８に入力された入力ピクセル線１４２に対する最大隣接ピクセルジャンプを求める（１６０）。言い換えれば、デリンギングフィルタ１０８は、ピクセル１１６と隣接ピクセル１１６の間のグレースケールまたはカラースケール値の最大の差を求める。１つの実施形態において、最大隣接ピクセルジャンプは、入力ピクセル線１４２内の隣接するピクセル１１６の各対間の差を求めることにより求まる。例としては、デリンギングフィルタ１０８は、Ｐ０とＰ１、Ｐ１とＰ２、Ｐ３とＰ４、Ｐ４とＰ５、Ｐ５とＰ６、およびＰ６とＰ７の間の差の絶対値を決定できる。デリンギングフィルタ１０８はまた、Ｑ０とＱ１、Ｑ１とＱ２、Ｑ２とＱ３、Ｑ３とＱ４、Ｑ４とＱ５、Ｑ５とＱ６、およびＱ６とＱ７の間の差の絶対値も決定できる。更にデリンギングフィルタ１０８は、Ｐ０とＱ０の間の差の絶対値を決定できる。そして、デリンギングフィルタ１０８は、隣接ピクセル間の差のすべてからその最大の差を求めることができる。最大の差は、入力ピクセル線１４２に対する最大隣接ピクセルジャンプとして指定される。これはまた、下記の、
【数３】
2009278189.tif 000003
ここにおいて、Ｐｉは第１マクロブロック１１２内のピクセル１１６の値を表わし、Ｐｉ＋１は同じマクロブロック１１２内の隣接するピクセル１１６の値を表わし、Ｑｉは隣接マクロブロック１１４内のピクセル１１６の値を表わし、Ｑｉ＋１は隣接マクロブロック１１４内の隣接ピクセル１１６の値を表わしている式のように書くことができる。ピクセルジャンプ工程１６０のさらなる詳細は図７を参照して説明する。
【００２９】
デリンギングフィルタ１０８が入力ピクセル線１４２の最大隣接ピクセルジャンプを求めた後、デリンギングフィルタ１０８はピクセル値を変更して（１６２）、出力ピクセル線１４４内のピクセル値のいくつかまたはすべてを出力する（１６４）。１つの実施形態において、デリンギングフィルタ１０８は変更されていてもいなくてもすべてのピクセル値を出力する。別の実施形態においては、デリンギングフィルタ１０８は変更されたピクセル値は出力するが、変更されていないピクセル値は出力しない。いくつかの実施形態ではピクセル値のいくつかを変更できるが、他の実施形態はピクセル値をできてもほんの少ししか変更できない。１つの実施形態において、ピクセル値が変更されるかどうかは、少なくとも部分的には対応するピクセルがエッジピクセルであると判断されるかどうかに依存する。ピクセル変更工程１６２のさらなる詳細は、図８を参照して説明する。
【００３０】
図７は、図６の後処理方法１５０のピクセルジャンプ工程１６０のより詳細な実施形態の模式フローチャート図を示している。ピクセルジャンプ工程１６０に関連していくつかの工程が記述されているが、デリンギングフィルタ１０８のいくつかの実施形態はピクセルジャンプ工程１６０を実践するために、より少ないまたはより多い工程を使用することができる。
【００３１】
ピクセルジャンプ工程１６０を実践するために、デリンギングフィルタ１０８は入力ピクセル線１４２の隣接ピクセル１１６のピクセル対を選択する（１７２）。例えば、デリンギングフィルタ１０８は、ピクセルＰ０とＰ１を選択できる。そして、デリンギングフィルタ１０８は、選択されたピクセル１１６の対に対してピクセルジャンプを決定する（１７４）。例えば、デリンギングフィルタ１０８は、ピクセルＰ０とＰ１の間のグレースケールまたはカラースケールの差を決定する。そして、デリンギングフィルタ１０８は、選択されたピクセル対に対するピクセルジャンプを格納する（１７６）。デリンギングフィルタ１０８は更にピクセル対があるかどうかを判断し（１７８）、もしあれば入力ピクセル線１４２内のピクセル対のそれぞれに対して同じ工程を繰り返す。デリンギングフィルタ１０８が、入力ピクセル線１４２内のピクセル対のすべてに対してピクセルジャンプを決定した後、ピクセルジャンプ工程１６０は終了する。別の実施形態においては、デリンギングフィルタ１０８は入力ピクセル線１４２内のピクセル対のサブセットに対してピクセルジャンプを決定できる。
【００３２】
図８は、図６の後処理方法１５０のピクセル変更工程１６２のより詳細な実施形態の模式フローチャート図を示している。ピクセル変更工程１６２に関連していくつかの工程が記述されているが、デリンギングフィルタ１０８のいくつかの実施形態は、ピクセル変更工程１６２を実践するために、より少ないまたはより多い工程を使用できる。
【００３３】
ピクセル変更工程１６２を実践するために、デリンギングフィルタ１０８は入力ピクセル線１４２のピクセル１１６を選択する（１８２）。１つの実施形態において、デリンギングフィルタ１０８は入力ピクセル線１４２内の中間の８個のピクセル１１６（例えば、ピクセルＰ０〜Ｐ３およびＱ０〜Ｑ３）のようなピクセルのサブセットから、ピクセル１１６を選択するのみである。そして、デリンギングフィルタ１０８は、選択されたピクセル１１６が、エッジピクセルであるかどうかを判断する（１８４）。１つの実施形態において、デリンギングフィルタ１０８は選択されたピクセル１１６がエッジピクセルであるかどうかを、下記の、
｜Ｐｉ−Ｐｉ−１｜＜Ｐｍａｘ×ｗｅと、｜Ｐｉ−Ｐｉ＋１｜＜Ｐｍａｘ×ｗｅ
ここにおいて、Ｐｉは選択されたピクセル１１６の現在の値を表わし、Ｐｉ−１は第１隣接ピクセル１１６の値を表わし、Ｐｉ＋１は第２隣接ピクセル１１６の値を表わし、Ｐｍａｘは特定された最大ピクセルジャンプを表わし、ｗｅはエッジ重み付けファクタを表わしている式に従って決定する。言い換えれば、デリンギングフィルタ１０８は、現在のピクセルから、隣接するピクセルのそれぞれへのピクセルジャンプが、エッジ重み付けファクタと、ピクセル１１６の２つの対に対する最大隣接ピクセルジャンプに依存する閾値未満であるかどうかを判断する。１つの実施形態において、エッジ重み付けファクタは約０.７５である。または、エッジ重み付けファクタは０.６５から０.８５の範囲内であってよい。別の実施形態においては、エッジ重み付けファクタは０.５から０.９５の範囲内であってよい。
【００３４】
値が閾値以上である場合は、選択されたピクセル１１６はエッジピクセルとして指定される。選択されたピクセル１１６がエッジピクセルの場合（つまり、選択されたピクセル１１６に対する値が閾値以上である場合）は、デリンギングフィルタ１０８は選択されたピクセル１１６に適用されない（１８６）。これ以外で、値が閾値未満の場合は、選択されたピクセル１１６はエッジピクセルではない。選択されたピクセル１１６がエッジピクセルでない場合は、デリンギングフィルタ１０８は、選択されたピクセル１１６に対して新しいピクセル値を計算する（１８８）。１つの実施形態において、選択されたピクセル１１６に対する新しい値は、下記の、
【数４】
2009278189.tif 000004
ここにおいて、Ｐｎｅｗは選択されたピクセル１１６の新しい値を表わし、ｗｐはピクセル重み付けファクタを表わし、Ｐｉは選択されたピクセル１１６の現在の値を表わし、Ｐｉ−１は第１隣接ピクセルの値を表わし、Ｐｉ＋１は第２隣接ピクセルの値を表わし、Ｐｂｉａｓは前もって定義されたバイアスファクタを表わしている式に従って計算される。１つの実施形態において、ピクセル重み付け値は約２.０であり、バイアスファクタは約２.０である。しかし、いくつかの実施形態では、ピクセル重み付けファクタとバイアスファクタに対して異なる値を使用できる。
【００３５】
更に、選択されたピクセル１１６の新しい値を計算することにより、新しいピクセル値を、下記の、
Ｐｃｌａｍｐ＝（Ｐｉ＋Ｑｐ，Ｐｉ−Ｑｐ）
ここにおいて、Ｐｃｌａｍｐはクランプ範囲を表わし、Ｐｉは現在のピクセル値を表わし、Ｑｐは量子化スケール値を表わしている式に従ってクランプ範囲内にクランプできる。１つの実施形態において、元々の量子化スケール値Ｑｐを使用することができる。または、変更された量子化スケール値Ｑｐ’を使用できる。
【００３６】
デリンギングフィルタ１０８は、選択されたピクセル１１６に対して新しいピクセル値を計算した後、入力ピクセル線１４２に更にピクセル１１６（またはピクセル１１６の指定されたサブセットに）があるかを判断する。更にピクセル１１６がある場合は、デリンギングフィルタ１０８は選択された他のピクセル１１６に引き続き同じ工程を行う。選択されたピクセル１１６のすべてが処理された後、示されているピクセル変更工程１６２は終了する。
【００３７】
図９は、隣接するマクロブロック１１２と１１４にわたり延伸しているピクセル線１１８のピクセル１１６に対するピクセルマップ２００の１つの実施形態の模式図を示している。ピクセルマップ２００の横軸はピクセルの記号表示を示しており、ピクセルマップ２００の縦軸は各ピクセル１１６に対する近似のグレースケールまたはカラースケール値を示している。
【００３８】
示されているピクセルマップ２００は、隣接するピクセルＰ２とＰ３間の最大ピクセルジャンプを示している。１つの実施形態において、最大隣接ピクセルジャンプは上記の工程により求まる。ピクセルＰ２とＰ３間のピクセルジャンプは最大ピクセルジャンプであり、Ｐ１とＰ２間のピクセルジャンプは最大ピクセルジャンプよりも少し小さいので、ピクセルＰ２は、エッジ重み付けファクタの値に従ってエッジピクセルであると指定される。同様に、ピクセルＱ０とＰ０の間とＱ０とＱ１の間のピクセルジャンプは、最大隣接ピクセルジャンプに比較的に近いので、ピクセルＱ０はエッジピクセルとして指定できる。そのため、上記の後処理方法１６０を使用すると、Ｐ２とＱ０がエッジピクセルとして指定されているので、新しいピクセル値はそれらに対しては計算されない可能性がある。言い換えると、デリンギングフィルタ１０８はピクセルＰ２とＱ０には適用されない。しかし、デリンギングフィルタ１０８はＰ３、Ｐ１、Ｐ０、およびＱ１〜Ｑ３がエッジピクセルではないので、それらに対しては適用される可能性がある。従って、デリンギングフィルタ１０８は入力ピクセル線１４２の８個の中間ピクセル１１６のうちの６個に適用される。
【００３９】
隣接マクロブロック１１２と１１４の対１１０におけるピクセル線１１８のそれぞれに対する処理の順番は変更できるということに留意されたい。例えば、ピクセル線１１８は、左から右へ、右から左へ、上から下へ、または下から上への順番で処理できる。または、ピクセル線１１８は別の順序で処理できる。更に、ビデオデータのフレームに対するマクロブロックの組合せは任意の順序で処理できる。１つの実施形態において、マクロブロックの組合せは、右側にマクロブロックがある場合は現在のマクロブロックを指定し、次に右側に隣接するマクロブロックがある現在のマクロブロックを処理することにより処理される。これに続いて、現在のマクロブロックの上側にマクロブロックがある場合は、現在のマクロブロックは現在のマクロブロックの上側の隣接マクロブロックと共に処理される。このようにして、すべてのマクロブロックは、最上左端のマクロブロックから開始して右側に移動して処理できる。そして、下側の次の行のマクロブロックが左から右へ処理される。この処理は最下位の最右端のマクロブロックが処理されるまで続けられる。後処理アーキテクチャ１００の他の実施形態は、デブロッキングフィルタ１０６とデリンギングフィルタ１０８を適用するために他の処理順序を実践できる。
【００４０】
図１０は、図１の後処理アーキテクチャ１００を実装するコンピュータシステム２１０の１つの実施形態の模式ブロック図を示している。図１０に示されるように、コンピュータシステム２１０は、集積プロセッサ回路２１２と、メモリ２１４と、表示モニタ２１６を含む高度集積システムである。１つの実施形態において、メモリ２１４はリードオンリメモリ（ＲＯＭ）とランダムアクセスメモリ（ＲＡＭ）を含む。高度集積アーキテクチャにより電力が節約される。他の実施形態は、周辺コントローラのような他の構成要素を含むことができる。
【００４１】
示されている集積プロセッサ回路２１２は、メモリ管理ユニット（ＭＭＵ）２２０と1つまたは複数の命令および／またはデータキャッシュ２２２を含む処理ユニット（ＣＰＵ）２１８を含む。集積プロセッサ回路２１２はまた、メモリ２１４とのインタフェースを取るメモリインタフェース２２４も含む。集積プロセッサ回路２１２はまた、バス２２８を介して処理ユニット２１８とメモリインタフェース２２４に結合されるグラフィックスコントローラ２２６も含む。
【００４２】
直接メモリアクセス（ＤＭＡ）コントローラ２３０はまた、バス２２８に結合される。ＤＭＡコントローラ２３０はバス２２８をインタフェース（Ｉ／Ｆ）バス２３２に結合し、Ｉ／Ｆバス２３２には、エンコーダ／デコーダ（ＣＯＤＥＣ）インタフェース、パラレルインタフェース、シリアルインタフェース、および入力装置インタフェースのような、他のコア論理関数構成要素（図示せず）を結合できる。１つの実施形態において、ＤＭＡコントローラ２３０は、メモリインタフェース２２４を介してメモリ２１４に格納されているデータにアクセスし、Ｉ／Ｆバス２３２に接続された周辺装置にデータを提供する。ＤＭＡコントローラ２３０はまたメモリインタフェース２２４を介してデータを周辺装置からメモリに送る。
【００４３】
１つの実施形態において、グラフィックスコントローラ２２６は、メモリインタフェース２２４を介してメモリ２１４からのビデオ／グラフィックスデータを要求しアクセスする。そして、グラフィックスコントローラ２２６は、データを処理し、処理データをフォーマットし、フォーマットされたデータを表示装置２１６に送る。いくつかの実施形態においては、表示装置２１６は、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）、またはテレビ（ＴＶ）モニタであってよい。
【００４４】
図１１は、図１０のコンピュータシステム２１０のグラフィックスコントローラ２２６の１つの実施形態の模式ブロック図を示している。後処理アーキテクチャ１００のいくつかの実施形態はグラフィックスコントローラ２２６の一部として実装される。一般的には、グラフィックスコントローラ２２６は、グラフィックスコントローラ２２６のメメインバス２４４を上記の集積プロセッサ回路２１２のメインバス２２８に結合するＣＰＵインタフェース２４２を含む。グラフィックスコントローラ２２６はまた、静的ランダムアクセスメモリ（ＳＲＡＭ）２４６（または別のメモリ装置）と、ビデオデコーダ２４８と、グラフィックスエンジン２５０と、後処理装置２５２と、メモリインタフェースユニット２５４と、ピクセル処理ロジック２５６と、デジタルインタフェース２５８と、アナログインタフェース２６０とを含む。デジタルインタフェース２５８はデジタル信号をデジタルディスプレイ２６２に供給する。同様に、アナログインタフェース２６０はアナログ信号をアナログディスプレイ２６４に供給する。１つの実施形態において、アナログインタフェース２６０はデジタル／アナログ変換器（ＤＡＣ）を含む。
【００４５】
ＣＰＵインタフェース２４２はＣＰＵ２１８とＤＭＡコントローラ２３０へのインタフェースを提供する。従って、ＣＰＵインタフェース２４２は、ＣＰＵ２１８から受信した要求とビデオ／画像データを適切な目的地に送る。特に、ＣＰＵインタフェース２４２は、ホストＣＰＵ２１８とＤＭＡコントローラ２３０からのレジスタリード／ライト要求と、メモリリード／ライト要求を、グラフィックスコントローラ２２６内の適切なモジュールに送る。例えば、メモリリード／ライト要求はメモリインタフェースユニット２５４に送られ、その結果メモリインタフェースユニット２５４はデータをＳＲＡＭ２４６内のフレームバッファから読み込みまたはそこに書き込む。ＣＰＵインタフェース２４２はまたＤＭＡコントローラ２３０との連絡部としても機能し、システムメモリ２１４からデータをフェッチしそのデータをグラフィックスエンジン２５０とメモリインタフェースユニット２５４に提供する。更なる実施形態においては、ＣＰＵインタフェース２４２はＣＰＵ２１８によりプログラムされ後処理工程を制御する多数の制御レジスタを含む。例えば、制御レジスタのいくつかの内容はビデオデコーダ２４８を構成するために使用できる。１つの実施形態において、ビデオデコーダ２４８はＭＰＥＧ−４デコーダである。ＣＰＵインタフェース２４２はまた、圧縮ビデオ／画像ビットストリームをビデオデコーダ２４８に渡し画像構築および／または解凍を実行する。
【００４６】
ＳＲＡＭ２４６内のフレームバッファは、表示装置２１６上に表示される画像のピクスマップ（つまり、フレームバッファにマッピングされたピクセルパタ−ン）を格納するために使用され、種々の目的のための一時的バッファとして作動できる。更に、ＳＲＡＭ２４６は、ビデオバッファとトランザクションレジスタ用のメモリ空間を割り当てることができる。トランザクションレジスタは、ビデオ画像ピクセルデータの各ブロックに対する量子化ファクタ、または量子化スケール値を格納するために使用できる。グラフィックスコントローラ２２６が図示されているようにビデオデコーダ２４８を含む場合は、トランザクションレジスタは、代替としてビデオデコーダ２４８内で実践でき、量子化ファクタ、または量子化スケール値は、ビデオデコーダ２４８に格納できる。
【００４７】
１つの実施形態において、グラフィックスエンジン２５０は、グラフィック／ビデオ画像データを処理し、そしてそれは、ホストＣＰＵ２１８により発行されるコマンドに基づいて、ＳＲＡＭ２４６内のバッファに格納される。グラフィックスエンジン２５０はまた、グラフィックス演算（例えば、ＢｉｔＢＬＴおよびＲＯＰ、領域塗りつぶし、直線描画）も実行し、クリッピング、透明、回転、およびカラー拡張のためのハードウェアサポートを提供する。いくつかの実施形態においては、グラフィックスエンジン２５０はまた、ビデオ画像拡張、順次走査変換、ＹｃｂＣｒ（Ｙｕｖ）から赤、緑、および青（ＲＧＢ）カラー空間への変換、および、内蔵のStretch Block Transfer (ＳＴＲＢＬＴ)関数を介して他の類似関数も実行する。一般的には、グラフィックスエンジン２５０は、ＣＰＵ２１８をビデオ／画像表示描画関数の多くまたはすべてから開放する。これによりＣＰＵ２１８がタイムクリティカルな、またはリアルタイムな演算を行うことができる。
【００４８】
１つの実施形態において、メモリインタフェースユニット２５４は、ＳＲＡＭ２４６におけるフレームバッファ、ビデオバッファ、およびトランザクションレジスタからの、およびそこへの読み込み及び書き込みトランザクションのすべてを制御する。そのようなリード／ライト要求は、ＣＰＵインタフェース２４２を介してホストＣＰＵ２１８から、グラフィックスエンジン２５０から、ピクセル処理ロジック２５６から、デジタルインタフェース２５８などから、来る可能性がある。更に、メモリインタフェースユニット２５４は、メモリアドレス指定、メモリタイミングコントロールに関連するタスク、および他の関連タスクを実行する。
【００４９】
１つの実施形態において、後処理装置２５２は、解凍ビデオ画像データからブロッキングおよびリンギングアーティファクトを除去して解凍ビデオデータの品質を向上する。解凍ＭＰＥＧビデオ画像データを、例えば、シリアルインタフェースを介して光学媒体プレーヤから、またはビデオデコーダ２４８から受信できる。そして、フィルタ処理されたビデオ画像データはＳＲＡＭ２４６に送られる。
【００５０】
１つの実施形態において、ピクセル処理ロジック２５６は、メモリインタフェースユニット２５４を介して、ＳＲＡＭ２４６におけるバッファからビデオおよび画像データを取り出す。そしてピクセル処理ロジック２５６は、画像データを順番に並べてピクセル１１６にして、ピクセル１１６を、デジタルインタフェース２５８および／またはアナログインタフェース２６０に出力する前に、所定のフォーマットにフォーマットする。従って、ピクセル処理ロジック２５６は、水平および垂直表示タイミング信号と、メモリアドレスと、リード要求と、ＳＲＡＭ２４６内に格納された画像データにアクセスするための制御信号を生成する。デジタル表示装置２６２が、例えば、ＬＣＤの場合は、ピクセル処理ロジック２５６からのピクセルデータは、ＬＣＤ上に渡される前にデジタルインタフェース２５８に送られる。１つの実施形態において、デジタルインタフェース２５８は、表示に異なる色相またはグレーシェイドを加えることによりデータを更に処理する。更に、薄膜トランジスタ（ＴＦＴ）ＬＣＤ（アクティブマトリックスＬＣＤとしても知られている）、またはスーパーツイステッドネマチック（ＳＴＮ）ＬＣＤ（パッシブマトリックスＬＣＤとしても知られている）が使用されているかに従って、デジタルインタフェース２５８は、データを表示タイプに適合するようにフォーマットできる。更に、デジタルインタフェース２５８は、カラーデータがモノクロＬＣＤで使用されるときはモノクロに変換できる。更に、アナログ表示装置２６４が陰極線管（ＣＲＴ）の場合は、ピクセルデータはＣＲＴに送られる前にアナログインタフェース２６０に提供される。１つの実施形態において、アナログインタフェース２６０は、ピクセル処理ロジック２５６からのデジタルピクセルデータをＣＲＴモニタ上に表示されるＲＧＢ信号のようなアナログ信号に変換する。
【００５１】
図１２は、図１１のグラフィックスコントローラ２２６の後処理装置２５２の１つの実施形態の模式ブロック図を示している。示されている後処理装置２５２は、後処理コントローラ２７０と、バッファ１０４（ＳＲＡＭ２４６内のバッファと同じまたは類似の機能を実行する）と、デブロッキングフィルタ１０６と、デリンギングフィルタ１０８を含む。１つの実施形態において、後処理装置２５２は、メモリインタフェースユニット２５４と、ＳＲＡＭ２４６と、グラフィックスエンジン２５０と、およびＣＰＵインタフェース２４２に外部的に接続される。
【００５２】
いくつかの実施形態においては、デブロッキングフィルタ１０６とデリンギングフィルタ１０８は、一次元（１Ｄ）フィルタである。しかし、他の実施形態は、二次元（２Ｄ）フィルタ、または１Ｄと２Ｄフィルタの組合せを使用できる。更に、デブロッキングフィルタ１０６がグラフィックスパイプラインにおいてデリンギングフィルタ１０８に先行して使用されるいくつかの実施形態を記述したが、他の実施形態は最初にデブロッキングフィルタ１０６を使用せずにデリンギングフィルタ１０８を使用できる。
【００５３】
ビデオ画像ファイルの後処理の間、後処理コントローラ２７０は、ＣＰＵインタフェース２４２のレジスタにおいてプログラムされた指令を読み込み、ＳＲＡＭ２４６のバッファに格納されているビデオ画像ファイルからの解凍ビデオフレームの後処理を開始する。１つの実施形態において、ビデオ画像ファイルはＹｕｖ４：２：０のカラー空間フォーマットを有する。上記に説明したように、ビデオフレームは、１６×１６または８×８マクロブロック、またはピクセルブロックに分割され、各マクロブロックはＹ（輝度）、ｕ、およびｖ成分データのためのより小さなセクションに更に再分割される。他の実施形態は、他のカラー空間フォーマットを使用できる。
【００５４】
１つの実施形態において、ＣＰＵインタフェース２４２内のレジスタはまた後処理コントローラ２７０に制御情報を提供する。制御情報は、例えば、デブロッキングフィルタ１０６、デリンギングフィルタ１０８、または両者がグラフィックスパイプラインで使用されているかを示す。制御情報はまた、１Ｄか２Ｄのどちらのフィルタが使用されているか、水平か垂直方向のどちらのアーティファクトが最初に除去されるか、デブロッキング処理がデリンギング処理の前に行われるか、入力データと出力データのメモリアドレスを示す。プログラムされた命令に応答して、後処理コントローラ２７０はメモリインタフェースユニット２５４と通信して、ＳＲＡＭ２４６から対応する量子化ファクタまたは量子化スケール値と共にビデオデータのセットを取り出す。または、対応する量子化ファクタまたは量子化スケール値は、ビデオデコーダ２４８内のトランザクションレジスタから取り出すことができる。後処理コントローラ２７０からの要求に応答して、メモリインタフェースユニット２５４はＳＲＡＭ２４６に指令して、ビデオデータのセット（例えば、各セットは１０ピクセルのデータを含んでよい）をバッファに送らせ、対応する量子化ファクタまたは量子化スケール値を、それらがＳＲＡＭ２４６に格納されていればそれらもまたバッファに送らせる。量子化ファクタまたは量子化スケール値がビデオデコーダ２４８に格納されていれば、後処理コントローラ２７０はビデオデコーダ２４８に要求を出す。後処理コントローラ２７０はまたその情報をＣＰＵインタフェース２４２内のプログラムされたレジスタからバッファへ転送する。
【００５５】
そして、後処理コントローラ２７０は、上記のようにデブロッキングおよびデリンギング処理を開始する。デブロッキングおよびデリンギング処理が実行されたあと、後処理コントローラ２７０は処理されたデータをＳＲＡＭ２４６内のバッファに格納されたメモリアドレスにおける場所に送る。１つの実施形態において、後処理コントローラ２７０は、ビデオフレーム内の残りのビデオデータを監視して上記の処理を実行する。ビデオデータ後処理の監視を支援するために、ビデオデータセットに関する情報（例えば、ビデオデータフレームにおけるビデオデータセットの位置を特定する情報、フレーム内に残るビデオデータセットの順番に対しての、ビデオデータセットの順番を指定する情報など）は、ビデオデータセットが上記の後処理パイプラインに沿って移動するときに、例えば、そのヘッダ情報の一部として、ビデオデータセットと共に送られる。
【００５６】
後処理方法１５０と後処理アーキテクチャ１００の実施形態は、ソフトウェア、ファームウェア、ハードウェア、またはその何らかの組合せにおいて実装されることに留意されたい。更に、後処理方法１５０と後処理アーキテクチャ１００のいくつかの実施形態は、上記の演算および機能に関連する1つまたは複数のアルゴリズムのハードウェアまたはソフトウェア表現を使用して実装できる。
【００５７】
本発明の実施形態はまた、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、またはマイクロプロセッサのような、コンピュータプロセッサにより実行される多数の機能も含むことができる。マイクロプロセッサは、特定のタスクを定義するマシン可読ソフトウェアコードを実行することにより、特定のタスクを実行するように構成された、特殊または専用マイクロプロセッサであってよい。マイクロプロセッサはまた、直接メモリアクセスモジュール、メモリ格納装置、インターネット関連ハードウェア、およびデータ送信に関連する他の装置のような、他の装置を作動およびそれらと通信するようにも構成できる。ソフトウェアコードは、Ｊａｖａ（登録商標）、Ｃ＋＋、ＸＭＬ（拡張マークアップ言語）、および、ここで記載されたことに関連する関数演算を実行することを要求される装置の演算に関連する機能を定義するために使用できる他の言語のような、ソフトウェアのフォーマットを使用して構成できる。コードは、異なる形式およびスタイルで書くことができ、その多くは、当業者には知られている。異なるコードフォーマット、コード構成、ソフトウェアプログラムのスタイルおよび形式、およびコードを構成して、マイクロプロセッサの演算を定義する他の手段を実装できる。
【００５８】
本発明を利用する、コンピュータサーバーのような、異なるタイプのコンピュータにおいては、ここで記載した機能のいくつか、またはすべてを実行する間に、情報を格納および取り出す、異なるタイプのメモリ装置が存在する。いくつかの実施形態においては、データが格納されるメモリ／格納装置は、プロセッサの外側にある別個の装置であってもよく、または、単一の基板上に接続された構成要素のように、メモリまたは格納装置が、同じ集積回路上に位置する、モノリシックな装置に構成されてもよい。キャッシュメモリ装置は、頻繁に格納および取り出される情報に対する便利な格納位置としてＣＰＵまたはＧＰＵによる使用のために、コンピュータに含まれることもよくある。同様に、永続的メモリもまた、中央処理ユニットにより頻繁に取り出される情報を維持するために、そのようなコンピュータでよく使用されるが、キャッシュメモリとは異なり、永続的メモリ内では、情報はあまり変更されない。メインメモリもまた、中央処理ユニットにより実行される、ある機能を実行するように構成されたデータおよびソフトウェアアプリケーションのような、より大きな量の情報を格納および取り出すために普通は含まれる。これらのメモリ装置は、ランダムアクセスメモリ（ＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、および中央処理ユニットが情報を格納および取り出すためにアクセスできる他のメモリ格納装置として構成できる。実施形態は、普通に使用される、これらのメモリ装置それぞれに情報を格納、またはそれぞれから情報を取り出すためのプロトコルと同様に、種々のメモリおよび格納装置により実践できる。
【００５９】
ここでの方法の工程は、特定の順序で示され、説明されたが、各方法の工程の順序は変更することができ、それにより、ある工程は、逆の順序で実行でき、または、ある工程は、少なくとも部分的には、他の工程と同時に実行できる。別の実施形態において、指令または個々の工程のサブ工程は、間欠的および／または交互の方法で実践できる。
【００６０】
本発明の具体的な実施形態が説明され、示されてきたが、本発明は、この説明され、示された部分の特定の形式または装置に制限されない。本発明の範囲は、ここに付随する請求項と、その等価物により定義される。
【００６１】
説明を通して、類似の参照番号が、類似の要素を特定するために使用されている。
【図面の簡単な説明】
【００６２】
【図１】後処理アーキテクチャの１つの実施形態の模式ブロック図を示している。
【図２】水平方向に隣接するピクセルマクロブロック対の１つの実施形態の模式図を示している。
【図３】垂直方向に隣接するピクセルマクロブロック対の１つの実施形態の模式図を示している。
【図４】デブロッキングアーキテクチャの１つの実施形態の模式ブロック図を示している。
【図５】デリンギングアーキテクチャの１つの実施形態の模式ブロック図を示している。
【図６】解凍ビデオデータをフィルタ処理する後処理方法の１つの実施形態の模式フローチャート図を示している。
【図７】図６の後処理方法のピクセルジャンプ工程の、より詳細な実施形態の模式フローチャート図を示している。
【図８】図６の後処理方法のピクセル変更工程の、より詳細な実施形態の模式フローチャート図を示している。
【図９】隣接ピクセルマクロブロックにわたり延伸するピクセル線に対するピクセルマップの１つの実施形態の模式図を示している。
【図１０】図１の後処理アーキテクチャを実践するためのコンピュータシステムの１つの実施形態の模式ブロック図を示している。
【図１１】図１０コンピュータシステムのグラフィックスコントローラの１つの実施形態の模式ブロック図を示している。
【図１２】図１１のグラフィックスコントローラの後処理装置の１つの実施形態の模式ブロック図を示している。
【符号の説明】
【００６３】
１０２  メモリ
１０４  バッファ
１０６  デブロッキングフィルタ
１０８  デリンギングフィルタ
２１２  プロセッサ回路
２１４  メモリ
２１６  表示モニタ
２２２  キャッシュ
２２４  メモリインタフェース
２２６  グラフィックスコントローラ
２２８  バス
２３０  ＤＭＡコントローラ
２４２  ＣＰＵインタフェース
２４４  バス
２４８  ビデオデコーダ
２５０  グラフィックスエンジン
２５２  後処理装置
２５４  メモリインタフェースユニット
２５６  ピクセル処理ユニット
２５８  デジタルインタフェース
２６０  アナログインタフェース（ＤＡＣ）
２６２  デジタルディスプレイ
２６４  アナログディスプレイ
２７０  後処理コントローラ
【図１】
2009278189.tif 000007
【図２】
2009278189.tif 000008
【図３】
2009278189.tif 000009
【図４】
2009278189.tif 000010
【図５】
2009278189.tif 000011
【図６】
2009278189.tif 000012
【図７】
2009278189.tif 000013
【図８】
2009278189.tif 000014
【図９】
2009278189.tif 000015
【図１０】
2009278189.tif 000016
【図１１】
2009278189.tif 000017
【図１２】
2009278189.tif 000018
【外国語明細書】
2009278189.tif 000019
2009278189.tif 000020
2009278189.tif 000021
2009278189.tif 000022
2009278189.tif 000023
2009278189.tif 000024
2009278189.tif 000025
2009278189.tif 000026
2009278189.tif 000027
2009278189.tif 000028
2009278189.tif 000029
2009278189.tif 000030
2009278189.tif 000031
2009278189.tif 000032
2009278189.tif 000033
2009278189.tif 000034
2009278189.tif 000035
2009278189.tif 000036
2009278189.tif 000037
2009278189.tif 000038
2009278189.tif 000039
2009278189.tif 000040
2009278189.tif 000041
2009278189.tif 000042
2009278189.tif 000043
2009278189.tif 000044
2009278189.tif 000045
2009278189.tif 000046
2009278189.tif 000047
2009278189.tif 000048
2009278189.tif 000049
2009278189.tif 000050
2009278189.tif 000051
2009278189.tif 000052
2009278189.tif 000053
2009278189.tif 000054
2009278189.tif 000055
2009278189.tif 000056