(57)【要約】【課題】  ＣＰＵの速度を上げることなく、ビデオ符号化を加速させる。【解決手段】  ビデオ信号の現在フレームを決定し、現在フレームに関連付けられた動き推定データを、処理装置を使用して決定する。次にビデオ信号をデジタルビデオデータに、処理装置を使用して符号化する。現在フレームはデジタルビデオデータに、少なくとも部分的には、動き推定データに基づいて符号化される。【選択図】  図２
2006094494.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ信号を処理するための方法であって、
前記ビデオ信号の現在フレームを決定するステップと、
前記現在フレームに関連付けられた動き推定データを、第１の処理装置を使用して決定するステップと、
前記ビデオ信号をデジタルビデオデータに、第２の処理装置を使用して符号化するステップとを備え、前記現在フレームは前記デジタルビデオデータに、少なくとも部分的には、前記動き推定データに基づいて符号化されることを特徴とする方法。
【請求項２】
前記第１の処理装置はグラフィックス処理装置であることを特徴とする請求項１に記載の方法。
【請求項３】
前記動き推定データは、動きベクトルまたは差分値のうち少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記現在フレームに関連付けられた参照フレームを決定するステップと、
前記現在および参照フレームをブロックに区分化するステップと、
シード位置を識別するステップとをさらに備え、
前記第１の処理装置を使用して、
前記現在および参照フレーム内の対応するブロックを識別するステップと、
前記現在フレーム内のブロックのための差分値を、少なくとも部分的には、前記シード位置に基づいて決定するステップと、
前記ブロックのための動きベクトルを、少なくとも部分的には、前記差分値に基づいて生成するステップとを実行するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
各ブロックは、１６ピクセル×１６ピクセル、８ピクセル×８ピクセル、または４ピクセル×４ピクセルのうち少なくとも１つであることを特徴とする請求項４に記載の方法。
【請求項６】
特定のブロックのための差分値が所定のしきい値に基づいて十分である場合、前記ブロックを、深度バッファを使用して識別するステップをさらに備えることを特徴とする請求項４に記載の方法。
【請求項７】
前記ブロックについての情報を頂点データとして表現するステップと、
前記頂点データを、前記第１の処理装置の頂点シェーダーを使用して処理するステップとをさらに備えることを特徴とする請求項４に記載の方法。
【請求項８】
前記差分値は、絶対差分の和（ＳＡＤ）の値、平均二乗誤差（ＭＳＥ）の値、またはＲ−Ｄベースのメトリック値のうち少なくとも１つを含むことを特徴とする請求項４に記載の方法。
【請求項９】
前記第１の処理装置を使用して、前記動きベクトルを、１／２ピクセル動き推定を使用して生成するステップをさらに備えることを特徴とする請求項４に記載の方法。
【請求項１０】
前記第１の処理装置を使用して、前記動きベクトルを、１／４ピクセル動き推定を使用して生成するステップをさらに備えることを特徴とする請求項４に記載の方法。
【請求項１１】
前記現在フレームに関連付けられた前記動き推定データを保存するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
次のフレームのための動き推定データを、前記現在フレームに関連付けられた前記動き推定データを使用して、決定するステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
請求項１に記載の方法を実行するためのコンピュータ実行可能命令により符号化されることを特徴とするコンピュータ可読媒体。
【請求項１４】
ビデオ信号を処理するための装置であって、
前記ビデオ信号内の現在フレームを決定するように構成された中央処理装置であって、前記現在フレームに関連付けられた動き推定データを受信するように、および、前記動き推定データを使用して、前記現在フレームをデジタルビデオデータに符号化するように、さらに構成された中央処理装置と、
前記現在フレームに関連付けられた参照フレームを決定するように、および、前記現在フレームのための前記動き推定データを、少なくとも部分的には、前記現在フレームおよび前記参照フレームを比較することに基づいて生成するように構成されたグラフィックス処理装置とを備えることを特徴とする装置。
【請求項１５】
グラフィックス処理装置は、前記現在フレームおよび前記参照フレームをマクロブロックとして表現するように、および、前記マクロブロックについての情報を頂点データとして構成するように、さらに構成されることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記グラフィックス処理装置は、前記頂点データを処理するように構成された頂点シェーダーを含むことを特徴とする請求項１５に記載の装置。
【請求項１７】
前記頂点シェーダーは、前記現在および参照フレームのマクロブロックに関連付けられた差分値を計算するように、および、動きベクトルを、少なくとも部分的には前記差分値に基づいて生成するように、さらに構成されることを特徴とする請求項１６に記載の装置。
【請求項１８】
前記グラフィックス処理装置は深度バッファをさらに含み、特定のマクロブロックのための前記差分値が所定のしきい値に基づいて十分である場合、前記マクロブロックを、前記深度バッファを使用して識別することを特徴とする請求項１７に記載の装置。
【請求項１９】
前記グラフィックス処理装置は、整数ピクセル動き推定、１／２ピクセル動き推定、または１／４ピクセル動き推定のうち少なくとも１つを実行することによって、前記差分値を計算することを特徴とする請求項１７に記載の装置。
【請求項２０】
前記グラフィックス処理装置はピクセルシェーダーをさらに含み、前記ピクセルシェーダーは、前記整数ピクセル動き推定、前記１／２ピクセル動き推定、または前記１／４ピクセル動き推定のうち少なくとも１つを実行するように構成されることを特徴とする請求項１９に記載の装置。
【請求項２１】
前記ピクセルシェーダーは、前記現在フレームを水平および垂直バンドにより埋め込むようにさらに構成されることを特徴とする請求項２０に記載の装置。
【請求項２２】
前記グラフィックス処理装置は、前記現在フレームに関連付けられた次のフレームを処理するために、前記動き推定データをバッファ内に保存するようにさらに構成されることを特徴とする請求項１４に記載の装置。
【請求項２３】
前記中央処理装置は、動き補償予測、離散コサイン変換、量子化、可変長符号化、逆量子化、または逆離散コサイン変換のうち少なくとも１つを実行することによって、前記デジタルビデオデータを符号化するようにさらに構成されることを特徴とする請求項１４に記載の装置。
【請求項２４】
前記中央処理装置は、イントラフレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または双方向予測フレーム（Ｂフレーム）のうち少なくとも１つを、前記デジタルビデオデータに符号化するようにさらに構成されることを特徴とする請求項１４に記載の装置。
【請求項２５】
前記中央処理装置によって使用されたデータを格納するように構成されたメモリモジュールをさらに備え、前記メモリモジュールは、前記中央処理装置および前記グラフィックス処理装置によって共有されることを特徴とする請求項１４に記載の装置。
【請求項２６】
グラフィックス処理装置に関連付けられたデータにより符号化されたコンピュータ可読媒体であって、
ビデオ信号内の現在フレームを表現する第１のデータフィールドと、
前記ビデオ信号内の参照フレームを表現する第２のデータフィールドと、
前記現在フレームに関連付けられた動き推定データを含む第３のデータフィールドとを備え、前記動き推定データは前記グラフィックス処理装置によって、前記第１および第２のデータフィールド内のデータに基づいて計算されることを特徴とするコンピュータ可読媒体。
【請求項２７】
前記第１および第２のデータフィールド内のデータはピクセルブロックとして構成され、各ピクセルブロックは前記現在および参照フレームの一部を表現することを特徴とする請求項２６に記載のコンピュータ可読媒体。
【請求項２８】
前記ピクセルブロックは、前記グラフィックス処理装置内の頂点シェーダーによって処理することができる頂点によって表現されることを特徴とする請求項２７に記載のコンピュータ可読媒体。
【請求項２９】
前記第３のデータフィールド内の前記動き推定データは差分値を含み、各差分値は、前記第１のデータフィールド内のピクセルブロック、および、前記第２のデータフィールド内の対応するピクセルブロックに関連付けられることを特徴とする請求項２７に記載のコンピュータ可読媒体。
【請求項３０】
各ピクセルブロックに関連付けられた深度データを含む第４のデータフィールドをさらに備え、特定のピクセルブロックに関連付けられた前記深度データは、前記特定のピクセルブロックのための前記差分値が所定のしきい値に基づいて十分である場合に前記ピクセルブロックがバイパスされるべきであることを指示する、フラグを含むことを特徴とする請求項２９に記載のコンピュータ可読媒体。
【請求項３１】
前記動き推定データは、動きベクトル、絶対差分の和（ＳＡＤ）の値、平均二乗誤差（ＭＳＥ）の値、またはＲ−Ｄベースのメトリック値のうち少なくとも１つを含むことを特徴とする請求項２６に記載のコンピュータ可読媒体。
【請求項３２】
前記現在フレームは、イントラフレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または双方向予測フレーム（Ｂフレーム）のうち少なくとも１つを含むことを特徴とする請求項２６に記載のコンピュータ可読媒体。
【請求項３３】
装置であって、
ビデオ信号を受信する手段と、
前記ビデオ信号に関連付けられた動き推定データを、グラフィックス処理装置を使用して決定する手段と、
前記動き推定データを中央処理装置へ通信する手段と、
前記中央処理装置が前記ビデオ信号をデジタルビデオデータに、前記動き推定データを使用して符号化する手段とを備えることを特徴とする装置。
【請求項３４】
前記グラフィックス処理装置が複数のフレームのための前記動き推定データを、前記中央処理装置が前記フレームのいずれかを前記デジタルビデオデータに符号化する前に、決定する手段をさらに備えることを特徴とする請求項３３に記載の装置。
【請求項３５】
前記グラフィックス処理装置が前記フレームをマクロブロックとして表現する手段と、
前記グラフィックス処理装置が前記マクロブロックを、頂点シェーダーによって処理することができるデータとして表現する手段とをさらに備えることを特徴とする請求項３３に記載の装置。
【請求項３６】
前記グラフィックス処理装置内の深度バッファを使用して、特定のマクロブロックに関連付けられた差分値が所定のしきい値に基づいて十分である場合に前記特定のマクロブロックがバイパスされるべきであることを指示する手段を、さらに備えることを特徴とする請求項３３に記載の装置。
【請求項３７】
前記グラフィックス処理装置が、前記ビデオ信号内のフレームに関連付けられた動き推定データを決定する手段をさらに備え、前記動き推定データは、動きベクトル、絶対差分の和（ＳＡＤ）の値、平均二乗誤差（ＭＳＥ）の値、またはＲ−Ｄベースのメトリック値のうち少なくとも１つを含むことを特徴とする請求項３３に記載の装置。
【請求項３８】
前記グラフィックス処理装置が、前記フレームに関連付けられた前記動き推定データをバッファする手段と、
前記バッファされた動き推定データを使用して、前記ビデオ信号内の次のフレームを処理する手段とをさらに備えることを特徴とする請求項３３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で論じるシステムおよび方法はビデオ処理に関し、より詳細には加速ビデオ符号化に関する。
【背景技術】
【０００２】
デジタルマルチメディアコンテンツの符号化には通常、特にリアルタイムアプリケーションでは、かなりの量の処理能力が必要である。特に、ビデオ符号化は計算的に集中しており、通常はコンピュータが高速中央処理装置（ＣＰＵ）を有することが必要となる。ビデオ符号化では、動き推定はしばしばもっとも複雑なプロセスである。動き推定は、以前に符号化された参照フレームから、現在フレーム内のブロックのための最良の予測を発見するプロセスを指す。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
動き推定は一般に、探索を介して行われる。よりよい予測および視覚的品質のために実際の動きを取り込むために、探索範囲をごく小さくすることはできない。したがって、動き推定の計算上の複雑性が高いので、動き推定は、全体の符号化プロセスのために必要とされる処理能力およびリソースのかなりの部分を占有し、通常はボトルネックである。
【０００４】
このように、コンピュータが動き推定をより効率的に実行し、単にＣＰＵの速度を上げることなく、ビデオ符号化を加速させることができるようにする必要性がある。
【課題を解決するための手段】
【０００５】
本明細書で説明するシステムおよび方法は、グラフィックス処理装置を使用した加速ビデオ符号化を対象とする。
【０００６】
一態様では、ビデオ符号化システムは、中央処理装置（ＣＰＵ）およびグラフィックス処理装置（ＧＰＵ）を使用して、ビデオ符号化を実行する。このシステムは、ＧＰＵが動き推定をビデオ符号化のために実行することを可能にする技術を実施する。この技術により、ＧＰＵは動き推定プロセスを、ＣＰＵによって実行されるビデオ符号化プロセスと並列に実行することができる。このようなシステムを使用したビデオ符号化の実行は、ＣＰＵのみを使用した符号化と比較して、大幅に加速される。
【０００７】
もう１つの態様では、動き推定に関連したデータが、ＧＰＵの機能を利用する方法で構成され、ＧＰＵに提供される。ビデオフレームについてのデータをコロケートして、ＧＰＵの複数のチャネルが複数のタスクを並列に処理することを可能にすることができる。ＧＰＵの深度バッファを使用して、動き推定プロセス中に繰り返される計算および探索タスクを統合することができる。フレームコロケーションおよび深度バッファの使用により、ＧＰＵがよりよく利用されること、およびビデオ符号化をさらに加速させることが可能となる。
【発明を実施するための最良の形態】
【０００８】
グラフィックス処理装置（ＧＰＵ）の処理能力は、中央処理装置（ＣＰＵ）の処理能力よりもはるかに高速に増大しつつある。コンピュータはますます高性能のＧＰＵを装備している。説明するシステムおよび方法は、ＧＰＵの処理能力を利用して動き推定を処理する。ＧＰＵを使用してビデオ符号化を加速させるために、ＣＰＵおよびＧＰＵを並列に動作することができるように、異なるビデオ符号化アーキテクチャが必要とされる。このようなアーキテクチャの一実施例を以下で説明する。
【０００９】
図１は、説明するシステムおよび方法を完全または部分的に実施することができる、加速ビデオ符号化システム１００を例示する。加速ビデオ符号化システムはコンピューティングシステムの一実施例でしかなく、本発明の使用または機能性の範囲についてのいかなる限定をも示唆するように意図されない。
【００１０】
加速ビデオ符号化システム１００は、様々なソースからのビデオ信号を受信するように構成される。加速ビデオ符号化システム１００はまた、ビデオ信号を、ビデオビットストリームなどのデジタルビデオデータに符号化するようにも構成される。加速ビデオ符号化システム１００はデジタルビデオデータを様々な方法で処理することができ、これらの方法は、データを格納すること、データを表示デバイスに表示すること、データを他のデバイスへ、ネットワークを通じて提供することなどである。
【００１１】
加速ビデオ符号化システム１００のコンポーネントには、中央処理装置（ＣＰＵ）１０２、グラフィックス処理装置（ＧＰＵ）１２１およびメモリ１０４が含まれる場合がある。ＣＰＵ１０２を、様々な種類の処理タスクを実行するように構成することができる。ビデオ処理では、ＣＰＵ１０２を、ビデオ信号からフレームを識別するように、および、これらのフレームをデジタルビデオデータに符号化するように、構成することができる。ＣＰＵ１０２をまた、ＧＰＵ１２１と対話するように、および、動き推定に関連付けられたタスクなど、デジタルビデオデータを符号化することに関連付けられたタスクのいくつかをＧＰＵ１２１が実行することを可能にするように、構成することもできる。
【００１２】
ＧＰＵ１２１は主にグラフィックスを処理およびレンダリングするように構成される。ＧＰＵ１２１には通常、テクスチャに関連付けられたユニットであるテクセルを処理するための複数のチャネルが含まれる。図１のように、ＧＰＵ１２１にはシェーダー１２３が含まれる場合があり、シェーダー１２３は、テクスチャに関連したデータなど、グラフィカルデータを処理するように構成されたプログラマブルなコンポーネントである。シェーダー１２３には、頂点シェーダー、ピクセルシェーダー、または他のいかなる適切なコンポーネントが含まれる場合もある。頂点シェーダーは、グラフィックスオペレーションを頂点毎に実行するように構成され、ピクセルシェーダーは、グラフィックスオペレーションをピクセル毎に実行するように構成される。
【００１３】
適切な命令およびデータにより、ＧＰＵ１２１を、動き推定など、ビデオ符号化タスクを実行するように構成することができる。加速ビデオ符号化システム１００はＧＰＵ１２１を使用して、動き推定データをＣＰＵ１０２に提供することができ、ＣＰＵ１０２はこの動き推定データを使用して、デジタルビデオデータを符号化する。ビデオ符号化プロセスをさらに加速させるために、情報がＧＰＵ１２１に、ＧＰＵ１２１がその複数のチャネルを使用して動き推定データを決定することを可能にする方法で、提供される。
【００１４】
通常の動き推定プロセスは、ビデオフレームを長方形のブロックに分割することを伴い、ブロックのための動きベクトルを計算する。動きベクトル（ＭＶ）は、参照イメージに対するブロックの変位（ｘ−ｙピクセルプレーンにおける）を表現する。ブロック毎に、いくつかの動きベクトル候補が検査される。いくつかの動きベクトル候補を、静的（完全探索、３ステップ探索など）または動的（ＭＶＦａｓｔ、ＰＭＶＦａｓｔ、ダイヤモンド探索など）にすることができる。動きベクトル候補毎に、現在フレーム内で評価されたブロックが、動きベクトルによって変位される、参照イメージからの対応するブロックと比較される。すべての候補をテストした後、最適なマッチを有する１つが選択される。このマッチを、現在ブロックと変位された参照ブロックの間の、絶対ピクセル差分の和（ＳＡＤ）または平均二乗誤差（ＭＳＥ）を比較することによって、発見することができる。マッチを比較する場合により複雑な基準を採用する、より高度な動き推定技術を使用することもできる。例えば、Ｒ−Ｄベースのメトリック値は、ＳＡＤまたはＭＳＥの考慮を行うだけでなく、結果として生じる動きベクトルの符号化におけるコストも同時に考慮し、Ｈ．２６４およびＷＭＶ９によって採用され、これもまた使用することができる。
【００１５】
ＧＰＵ１２１は様々な方法で構成することができる。一実施形態では、ＧＰＵ１２１はＭＩＣＲＯＳＯＦＴ（登録商標）ＤＩＲＥＣＴＸ（登録商標）９（ＤＸ９）と互換性がある。ＤＸ９は８つの並列ピクセルエンジンを有し、このことは、８ピクセルを同時に処理することができることを意味する。ＤＸ９はまた頂点シェーダー、ピクセルシェーダー、マルチエレメントテクスチャ、マルチレンダリングターゲット、深度バッファなどもサポートする。マルチレンダリングターゲットの使用により、複数の計算タスクを１つのシェーダー実行において完了させることが可能となる。頂点シェーダーは静的なフローコントロール、拡張命令セット、および複数の命令スロットおよび新しいレジスタをサポートする。ピクセルシェーダーバージョンは、拡張命令セット、増加された入力および一時レジスタ、マルチテクスチャ、複数の算術命令スロット、ソースレジスタスウィズリング、ソースレジスタ修飾子、および宛先レジスタ記述マスクをサポートする。頂点シェーダーおよびピクセルシェーダーは、ＩＥＥＥ１３９４  ３２ビット浮動小数点の精度をサポートする。
【００１６】
ＧＰＵ１２１にはまた深度バッファ１２５が含まれる場合もあり、深度バッファ１２５はまたＺバッファまたはＷバッファと呼ばれる場合もある。深度バッファ１２５は、ＭＩＣＲＯＳＯＦＴ（登録商標）ＤＩＲＥＣＴ３Ｄ（登録商標）など、グラフィックスレンダリングコンポーネントによって使用される深度データを格納するように構成された、ＧＰＵ１２１のコンポーネントである。深度バッファ１２５を使用して、オクルージョンの問題を解決することができる。例えば、３Ｄシーンをターゲットサーフェスにレンダリングすることにおいて、ＧＰＵ１２１は、関連付けられた深度バッファサーフェス内のメモリをワークスペースとして使用して、ラスタライズされたポリゴンのピクセルが互いにどのように遮蔽するかを決定することができる。オフスクリーンサーフェスを、最終カラー値が書き込まれるターゲットとして使用することができる。レンダーターゲットサーフェスに関連付けられた深度バッファサーフェスが使用されて、各可視ベクトルがシーン内でどの程度の深度であるかに関する深度情報が格納される。
【００１７】
加速ビデオ符号化システム１００は深度バッファ１２５を使用して、ＧＰＵ１２１の、動き推定データを決定するための機能を拡張することができる。例えば、深度バッファ１２５を使用して、動き推定プロセス中にフラグなどのデータを格納し、冗長プロセスが繰り返されないようにすることができる。
【００１８】
メモリ１０４は、加速ビデオ符号化システム１００のコンポーネントによって、データを格納するために使用される。例えば、メモリ１０４を使用してビデオデータ１１４を格納することができ、ビデオデータ１１４にはＣＰＵ１０２によってアクセスすることができる。実施例の構成では、メモリ１０４はＣＰＵ１０２およびＧＰＵ１２１によって共有される。メモリ１０４の共有により、データをＣＰＵ１０２とＧＰＵ１２１の間で効率的および効果的に通信することが可能となる。図１のように、メモリ１０４にはまた、ビデオ符号化アプリケーション１１６など、コンピュータプログラム１１２が含まれる場合もある。ビデオ符号化アプリケーション１１６は、ビデオ信号をデジタルビデオデータに、ＣＰＵ１０２およびＧＰＵ１２１の両方を使用して符号化するように構成される。ビデオ符号化アプリケーション１１６は、ビデオ信号を、イントラフレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または双方向予測フレーム（Ｂフレーム）など、ビデオフレームとして処理するように構成される。具体的には、ビデオ符号化アプリケーション１１６は、動きベクトルおよび差分値など、動き推定データを決定するために、ＧＰＵ１２１を利用するための命令を提供するように構成される。差分値には、絶対差分の和（ＳＡＤ）の値、平均二乗誤差（ＭＳＥ）の値、またはＲ−Ｄベースのメトリック値が含まれる場合がある。
【００１９】
加速ビデオ符号化システム１００を、多数の他の汎用または専用コンピューティングシステム環境または構成により実施することができる。使用するために適切である可能性のある、周知のコンピューティングシステム、環境および／または構成の例には、それだけに限定されないが、パーソナルコンピュータ、サーバーコンピュータ、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ゲームコンソール、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００２０】
加速ビデオ符号化システム１００には通常、様々なコンピュータ可読媒体が含まれる。このようなメディアは、加速ビデオ符号化システム１００によってアクセス可能であるいかなる使用可能なメディアにすることもでき、揮発性および不揮発性のメディア、リムーバブルおよび非リムーバブルのメディアが含まれる。メモリ１０４にはコンピュータ可読媒体が、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／または、読み取り専用メモリ（ＲＯＭ）などの不揮発性メモリの形態において含まれる。基本入出力システム（ＢＩＯＳ）は、起動中など、加速ビデオ符号化システム１００内の複数の要素の間で情報を転送する助けとなる基本ルーチンを含み、メモリ１０４に格納される。メモリ１０４は通常、ＣＰＵ１０２およびＧＰＵ１２１によって即時アクセス可能および／または現在操作されるデータおよび／またはプログラムモジュールを含む。
【００２１】
メモリ１０４にはまた、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータストレージメディアが含まれる可能性もある。例として、ハードディスクドライブを、非リムーバブル、不揮発性の磁気メディアに対する読み書きを行うために含めることができ、磁気ディスクドライブを、リムーバブル、不揮発性の磁気ディスク（例えば「フロッピー（登録商標）ディスク」）に対する読み書きを行うために含めることができ、光ディスクドライブを、ＣＤ−ＲＯＭ、ＤＶＤ、または他のいずれかのタイプの光メディアなど、リムーバブル、不揮発性の光ディスクに対する読み取りおよび／または書き込みを行うために含めることができる。
【００２２】
これらのディスクドライブおよびそれらの関連付けられたコンピュータストレージメディアは、加速ビデオ符号化システム１００用のコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。加速ビデオ符号化システム１００によってアクセス可能であるデータを格納することができる、他のタイプのコンピュータ可読媒体もまた、加速ビデオ符号化システム１００を実施するために利用することができ、これらのメディアは、磁気カセットまたは他の磁気ストレージデバイス、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）などであることを理解されたい。
【００２３】
加速ビデオ符号化システム１００には、通信メディアとして識別された様々なコンピュータ可読媒体が含まれる可能性がある。通信メディアは通常、搬送波などの変調データ信号もしくは他の移送メカニズムにおける、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを実施し、いかなる情報配信メディアをも含む。「変調データ信号」という用語は、信号における情報を符号化するような方法でその特性の１つまたは複数が設定または変更されている信号を指す。例として、限定ではなく、通信メディアには、有線ネットワークまたは直接有線接続などの有線メディア、ならびに、音響、ＲＦ、赤外線および他の無線メディアなどの無線メディアが含まれる。上記のいずれの組合せもまた、コンピュータ可読媒体の範囲内に含まれる。
【００２４】
ユーザーはコマンドおよび情報を加速ビデオ符号化システム１００へ、キーボードおよびポインティングデバイス（例えば「マウス」）などの入力デバイス１０６を介して入力することができる。他の入力デバイス１０６には、マイクロフォン、ジョイスティック、ゲームパッド、コントローラ、衛星放送受信アンテナ、シリアルポート、スキャナ、タッチスクリーン、タッチパッド、キーパッドおよび／または同種の物が含まれる場合がある。出力デバイス１０８には、ＣＲＴモニタ、ＬＣＤスクリーン、スピーカ、プリンタなどが含まれる場合がある。加速ビデオ符号化システム１００には、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）など、コンピュータネットワークに接続するためのネットワークデバイス１１０が含まれる場合がある。
【００２５】
図２は、ビデオ信号をデジタルビデオデータに符号化するための一実施例のプロセス２００を例示する。プロセス２００を、中央処理装置およびグラフィックス処理装置によって並列に使用することができる。例えば、図１のＣＰＵ１０２およびＧＰＵ１２１はプロセス２００を使用して、デジタルビデオデータの符号化を加速させることができる。
【００２６】
プロセス２００は、ビデオ信号が受信されている場合、開始する。ブロック２０２で、ビデオ信号の特定のビデオフレーム（すなわち、ビデオフレームｎ）がＣＰＵ１０２によって識別される。ＣＰＵ１０２はビデオフレームｎをＧＰＵ１２１に、処理のために提供することができる。代替として、ＧＰＵ１２１は独立してビデオフレームｎへのアクセスを有することができる。ブロック２２２で、ＧＰＵ１２１はブレームｎのために動き推定を実行する。動き推定のための一実施例のプロセスを、図８と共に論じる。簡潔に述べると、ＧＰＵ１２１は、ビデオフレームｎに関連付けられた動きベクトルを、そのフレームに関連付けられた動き推定データを決定および解析することによって決定する。ＧＰＵ１２１はシード位置を、動きベクトルを探索するための開始点として使用するために受信することができる。
【００２７】
ブロック２０４で、ＣＰＵ１０２は、動き補償予測を、ＧＰＵ１２１によって提供された動きベクトルを使用して実行する。ブロック２０６で、離散コサイン変換（ＤＣＴ）および量子化がビデオフレームｎにおいて実行される。ブロック２０８で、ＣＰＵ１０２は可変長符号化を実行する。次いで、ビデオフレームｎをデジタルビデオデータに符号化することができる。
【００２８】
ビデオフレームｎを、後続のＢフレームまたはＰフレームのための参照フレームとして使用することができる。ブロック２１０で、逆量子化および逆ＤＣＴが、処理されたビデオフレームｎにおいて実行される。
【００２９】
ブロック２１２で、ビデオ信号の別のビデオフレーム（すなわち、ビデオフレームｎ＋１）がＣＰＵ１０２によって識別される。ブロック２２４で、ＧＰＵ１２１は、フレームｎ＋１のための動き推定を実行し続け、ブロック２１４で、ＣＰＵ１０２は、このフレームのためのデジタルビデオデータを符号化し続ける。
【００３０】
ＧＰＵ１２１が動き推定を、ＣＰＵ１０２によって実行されたビデオ符号化プロセスと並列に実行することができることは、理解されよう。具体的には、ＧＰＵはビデオ信号内のフレームのための動き推定を、そのオペレーションをＣＰＵ１０２と同期させる必要なしに、実行することができる。この並列ビデオ符号化プロセスの実行は、ＣＰＵ１０２のみを使用したビデオ符号化の実行に勝る、著しい向上である。
【００３１】
図３は、グラフィックス処理装置による処理のためにフレームがどのように準備されるかのグラフィカル表現を示す。フレーム３０２はビデオ信号内のフレームであり、ＧＰＵによって処理のために保持される。境界でのピクセルのための動きベクトルを計算するため、フレーム３０２はピクセルの水平バンドおよび垂直バンドにより埋め込まれる。結果として生じる、埋め込まれたフレーム３０４はそれらのバンドでのピクセルを含み、これらのピクセルを、フレーム３０２のエッジでのピクセルのための無制限動きベクトル（ＵＭＶ）を計算する目的で、隣接ピクセルとして使用することができる。
【００３２】
ＵＭＶはビデオ符号化規格のための一般的な標準技術である。埋め込みプロセスを、暗示的方法および明示的方法など、多数の異なる方法で達成することができる。暗示的方法は、レンダー状態およびテクスチャアドレスモードを選択的に設定することによって、埋め込み効果を達成する。しかし、暗示的方法は、下にあるＧＰＵの機能（例えば、ＧＰＵのドライバ）に依存する。例えば、ドライバは、リニアアドレスモードをサポートする必要がある場合があり、このモードでは、テクスチャサイズをピクチャサイズと同じにすることができる。このような機能は通常、メインストリームＧＰＵによってサポートされる。いくつかのドライバでは、テクスチャサイズが２の整数のべき乗になるように制限される。明示的埋め込みプロセスを、単純なシェーダープログラミングによって達成することができる。フレームが埋め込まれるために、頂点シェーダーはテクスチャアドレスをセットアップして、境界ピクセルをポイントすることができる。ピクセルシェーダーは、境界ピクセル値を、埋め込まれたエリアにレンダリングすることができる。
【００３３】
図３のように、埋め込まれたフレーム３０４をコロケートして、複数のコロケートされたフレーム３０６を作成することができる。コロケートされたフレーム３０６を作成する目的は、テクセルの４つのチャネルがピクセルに対応するように、フレーム３０２を操作することである。このように、ＧＰＵの４つの並列チャネルは完全に利用されるようになる。フレームのコロケートは、ＧＰＵが適切に４つのピクセルを処理のために選択し、これらのピクセルをテクセルの４つのチャネルにマップする場合、計算効率を４倍向上させることができる。
【００３４】
動き推定は、ある参照ブロックから別の参照ブロックへと、絶対差分の和（ＳＡＤ）などの差分値を評価することによって実行される。これらの参照ブロックは通常、予測された位置（すなわち、シード）の周囲のあるウィンドウの内側である。これらの参照ブロックの間のオフセットは、探索アルゴリズムに従って所定である。テクセルの４つのチャネルが、所定の値（例えば、探索アルゴリズムによる）に従ってオフセットされるピクセルを含む場合、１つのテクセル探索点のＳＡＤの評価は、４つの候補探索点のＳＡＤの評価と同等になる。テクセルアドレスは、頂点の位置から線形補間される場合がある。ある特定のテクセルのアドレスは、２つの頂点の間の他のテクセルから区別可能でない場合があるので、それについてＳＡＤが計算されるべき、結果として生じるテクセルを、好ましくは一定間隔にすることができる。この技術を使用して、ピクセルシェーダーは同じオペレーションを、２つの頂点の間の中間テクセル上で実行するようになる。
【００３５】
図４は、コロケーションまたはピクセルシフトなしの一実施例のマクロブロック４００を例示する。図４のように、マクロブロック４００は１６×１６ピクセルを含む。しかし、マクロブロック４００は、８×８ピクセル、４×４ピクセルなど、他のピクセル構成を含む場合がある。最初の行のピクセルは、考察のために０〜１５のラベルが付けられる。
【００３６】
図５は、１ピクセルオフセットを有する、コロケートされたフレームのマクロブロック５００の実施例を例示する。図６は、４ピクセルオフセットを有する、コロケートされたフレームのマクロブロック６００の実施例を例示する。これらの図では、マクロブロック５００の各々の１行のみにラベルが付けられる。マクロブロックの他の行は同様に操作され、２つの隣接する行の間の距離は、テクスチャのピッチに等しい。
【００３７】
図５に示すマクロブロック５００では、位置（ｘ，ｙ）の１つの参照テクセルマクロブロックの絶対差分の和（ＳＡＤ）などの差分値が計算される場合、位置（ｘ，ｙ）、（ｘ＋１，ｙ）、（ｘ＋２，ｙ）および（ｘ＋３，ｙ）の４つの参照ピクセルマクロブロックの値は、４つの対応するテクセルチャネルからの値を抽出することによって、同時に知られる。図６に示すマクロブロック６００では、位置（ｘ，ｙ）、（ｘ＋４，ｙ）、（ｘ＋８，ｙ）および（ｘ＋１２，ｙ）の差分値は、マッピングが使用される場合、知られる。
【００３８】
４倍の加速を達成することができることは理解されよう。細かい線によって示されたピクセルによって図示するように、元の１６×１６ピクセルブロックもまた概念的には、４×１６テクセルブロックに押し込むことができる。
【００３９】
図７Ａは、特定のビデオフレームのための一実施例のマクロブロック７０２を示す。ビデオフレームを、ビデオビットストリームなどのデジタルビデオデータに符号化するため、ビデオフレームは通常、マクロブロック７０２など、複数のマクロブロックに分割される。グラフィックス処理装置は通常、データをどのように入力することができるかについての、命令スロット制約を有する。例えば、グラフィックス処理装置のピクセルシェーダーは、一度にある数のテクセルしか処理することができない場合がある。一実施例のグラフィックス処理装置では、一度に３２テクセルのみを、４つの別々のチャネルによって処理することができる。この実施例では、マクロブロック７０２を、４つの中間テクセルブロックの８つのグループに分割することができ、各グループは８つのピクセルを含む。中間テクセルブロックは様々な次元にすることができ、マクロブロック内のピクセルシフトの量によって決まる。図７Ａのように、中間テクセルブロック７０４は、１ピクセルシフトに対応する４×２次元を有する。中間テクセルブロック７０６は、４ピクセルシフトに対応する２×４次元を有する。各テクセルブロックは、グラフィックス処理装置の１つのチャネルによって処理される。
【００４０】
図７Ｂは、隣接したマクロブロックの一実施例を示す。動きベクトルのよい初期予測は、様々な高速探索方法にとって重要である。新しい動きベクトル予測方法が、ＧＰＵベースの動き探索のために開発される。既存の動きベクトル予測方法は通常、隣接したマクロブロックの動きベクトルを使用して、現在のマクロブロックの動きベクトルを予測する。予測を繰り返すために、左、上および左上の動きベクトルが使用されて、予測が原因を示すことが保証される。この技術を、ＣＰＵベースの動きベクトル探索によって実施することができ、これは、ＣＰＵベースの動きベクトル探索が動きベクトルを、マクロブロック毎を基本として発見するからである。このように、左、上および左上の動きベクトルのための動きベクトルは、予測のために使用可能である。しかし、ＧＰＵベースの動き探索は、すべてのマクロブロックを共に処理しなければならない場合がある。結果として、マクロブロックのための動きベクトルを、その隣接したマクロブロックの動きベクトルを使用して予測することが可能でない場合があり、これは、動きベクトルが隣接マクロブロックについて使用可能でない場合があるからである。
【００４１】
一実施態様では、以前のフレームの動きベクトルが使用されて、現在フレームの動きベクトルが予測される。以前のフレームの隣接した動きベクトルが使用可能であるので、より多くの隣接した動きベクトルを利用することができる。このＧＰＵベースの動き探索のための予測技術は、適応一時動きベクトルフィールド予測と呼ばれる場合がある。この方法には、ローカル動きアクティビティ検出および動きシード選択が含まれる場合がある。
【００４２】
適応一時動きベクトルフィールド予測には、いくつかのステップが含まれる場合がある。予測された動きベクトルを必要とする現在のマクロブロックに対応する、以前のフレーム内のコロケートされたマクロブロックが発見される。図７Ｂでは、現在のマクロブロックがＭＢ０として例示され、隣接するマクロブロックはＭＢ１〜ＭＢ８として例示される。Ｖ＝｛Ｖ０，Ｖ１，．．．，Ｖ８｝であるとし、ただし、ＶｉはＭＢｉの動きベクトルである。Ｖｉ＝（ｘｉ，ｙｉ）のシティブロック長は、ｌｖｉ＝｜ｘｉ｜＋｜ｙｉ｜として定義される。すべてのＶｉについてＬ＝ＭＡＸ｛ｌｖｉ｝であるとする。ＭＢ０の位置の動きアクティビティは、以下のように定義される。 
Ｌ≦Ｌ１の場合、動きアクティビティ＝低
Ｌ１＜Ｌ＜Ｌ２の場合、動きアクティビティ＝中
Ｌ≧Ｌ２の場合、動きアクティビティ＝高
ただし、Ｌ１およびＬ２は所定のしきい値である。
【００４３】
動きシードの選択は、ＭＢ０位置でのローカル動きアクティビティによって決まる。動きアクティビティが低または中である場合、探索の中心（すなわち、シード）は（０，０）である。探索の中心は（０，０）であるが、探索パターンは異なる場合がある。動きアクティビティが高である場合、以下の手順を適用することができる。
【００４４】
１）予測された動きベクトルの符号は、Ｖ０からＶ８のこれらの中の過半数になるように設定される。
【００４５】
２）予測された動きベクトルの値は、Ｖ０からＶ８の平均（または中央）値になるように設定される。この手順は、ｘおよびｙ方向に別々に適用される。
【００４６】
動き推定プロセスでは、頂点ストリームを前もって準備する必要のある場合がある。ＣＰＵ時間が、頂点ストリームをセットアップするために必要とされる場合がある。しかし、よい予測は、高速動きベクトル探索アルゴリズムにとって有益である場合がある。したがって、動き推定プロセスの速度は、動きベクトル予測が行われた後で頂点ストリームを準備するようにＣＰＵが構成される場合、悪影響を受ける場合がある。ＣＰＵをこのように使用するにはまた、頂点バッファが動的であることが必要である場合もあり、このことによっても速度に不利な条件がもたらされる。
【００４７】
上述のシステムおよび方法を、予測された動きベクトルをテクスチャとして格納するように、および、この動きベクトルテクスチャをＧＰＵに転送するように構成することができる。参照テクスチャをサンプリングする場合、ＧＰＵのピクセルシェーダーは、動きベクトルテクスチャをサンプラーステージにおいて考慮に入れることができる。結果として、動きベクトル予測は、動きベクトル探索プロセスにおいて反映される。この場合、頂点ストリームは静的（特定のＭＶ探索アルゴリズムによって決定的）となり、最速である静的バッファに置くことができる。
【００４８】
図８は、動き推定をビデオ信号のフレームにおいて実行するための一実施例のプロセス８００を示す。プロセス８００をグラフィックス処理装置によって実施して、動き推定データを決定することができる。ブロック８０２で、現在フレームおよび参照が識別される。グラフィックス処理装置はこれらのフレームを、中央処理装置など、別の処理コンポーネントによって提供されたデータから識別することができる。グラフィックス処理装置はまたこれらのフレームを、メモリまたはＩ／Ｏコンポーネントから直接識別することもできる。
【００４９】
ブロック８０４で、これらのフレームが動き推定処理のための準備においてレプリケートされる。一実施例のフレームレプリケーションプロセスを、図９と共に論じる。簡潔に述べると、これらのフレームは、グラフィックス処理装置によって容易に処理することができるように、埋め込みおよびコロケートされる。
【００５０】
ブロック８０６で、動き推定データが決定される。動き推定データには、動きベクトルが含まれる場合がある。動きベクトルは、現在フレームのブロックを参照フレームのブロックと比較することによって、決定される。動き推定データを決定するための一実施例のプロセスを、図１０と共に論じる。ブロック８０８で、現在フレームのための動き推定データが出力される。この動き推定データを、グラフィックス処理装置によって中央処理装置に提供することができる。中央処理装置はこの動き推定データを使用して、現在フレームをデジタルビデオデータストリームに符号化することができる。
【００５１】
図９は、フレームをレプリケートするための一実施例のプロセス９００を示す。プロセス９００をグラフィックス処理装置によって使用して、動き推定のためにフレームを準備することができる。ブロック９０２で、ビデオ信号のフレームが識別される。ブロック９０４で、このフレームが、水平および垂直ピクセルバンドにより埋め込まれる。フレームの埋め込みにより、フレームのエッジでのピクセルが、これらのエッジピクセルに隣接ピクセルを提供することによって適切に処理されることが可能となる。
【００５２】
ブロック９０６で、埋め込まれたフレームがコロケートされる。フレームのコロケートは、グラフィックス処理装置の各チャネルがフレームを並列に処理することができるように、フレームのコピーを作成することを伴う。判断ブロック９０８で、処理されているフレームが、別のフレームを処理するための参照フレームとして使用されるようになるかどうかの判定が行われる。フレームが参照フレームとして使用されるようにならない場合、プロセス９００はブロック９１２に移動する。
【００５３】
判断ブロック９０８に戻ると、フレームが参照フレームとして使用されるようになる場合、プロセス９００はブロック９１０に進み、ここでフレームがバッファ内に保存される。フレームのバッファリングにより、グラフィックス処理装置が、すでに処理されているフレームを検索する必要なしに、続いて起こるフレームの処理を継続することが可能となる。ブロック９１２で、プロセス９００は動き推定プロセスに戻る。
【００５４】
図１０は、コロケートされたフレームを使用して動きベクトルを決定するための一実施例のプロセス１０００を示す。プロセス１０００をグラフィックス処理装置によって実施して、フレームのための動き推定を実行することができる。ブロック１００２で、現在フレームおよび参照フレームに関連付けられた、コロケートされたフレームが決定される。ブロック１００４で、各コロケートされたフレームがマクロブロックに分割される。マクロブロックは、１６×１６ピクセルなど、いかなる次元を有してもよい。ブロック１００６で、ピクセルオフセットが、コロケートされたフレームのマクロブロック上で実行される。コロケートされたフレームのマクロブロック内のピクセルをオフセットすることにより、現在フレームの異なるセクションが、グラフィックス処理装置の異なるチャネルによって並列に処理されることが可能となる。異なるコロケートされたフレームのマクロブロックのピクセルを、連続して固定量によりオフセットすることができる。プロセス１０００はいかなるピクセルオフセットを使用することもできる。１から４ピクセルのオフセットを使用して、よい結果を出すことができる。
【００５５】
ブロック１００８で、マクロブロックが中間ブロックに分割される。中間ブロックにより、グラフィックス処理装置のシェーダーはフレームを容易に処理することができる。シェーダーは、テクスチャのテクセルを処理するように構成され、一度に各チャネルで制限数のテクセルしか処理することができない場合がある。一実施態様では、各コロケートされたフレームからの８ピクセルの中間ブロックが使用されて、データがグラフィックス処理装置の４つのチャネルに提供される。
【００５６】
ブロック１０１０で、コロケートされた中間ブロックを使用して、動きベクトルが決定される。グラフィックス処理装置はシーディング情報を受信して、動きベクトルを探索することができる。ブロック１０１２で、プロセス１０００は動き推定プロセスに戻る。
【００５７】
図１１は、深度バッファを使用して動き推定手順を加速させるための一実施例のプロセス１１００を示す。プロセス１１００をグラフィックス処理装置によって実施して、フレームを符号化するための動きベクトルを決定および提供することができる。ブロック１１０２で、動きベクトル探索を開始するためのシード位置が決定される。シード位置を、中央処理装置など、別の処理コンポーネントによって提供することができる。各シード位置は探索ウィンドウを作成し、探索ウィンドウにより、グラフィックス処理装置がフレーム全体を探索することなく、動きベクトルを決定することが可能となる。
【００５８】
ブロック１１０４で、シード位置のための差分値が計算される。差分値には、絶対差分の和（ＳＡＤ）の値など、差分を表すいかなる値が含まれる場合もある。ブロック１１０６で、差分値が決定された後、深度バッファが更新される。深度バッファを使用して、所定のしきい値を超える差分値を有するマクロブロックを指示し、またはこのマクロブロックにフラグを立てることができる。深度バッファをこのように使用することによって、動き推定プロセスは、すでに十分である差分値を有するマクロブロックを、繰り返して探索する必要はない。
【００５９】
一実施態様では、探索プロセスが開始する前に、深度バッファが特定の値に初期化され、レンダリングされるブロックが深度テストをパスするようにされる。このように、すべてのシード点が探索されるようになる。いくつかの高速アルゴリズムでは、結果として生じるＳＡＤが、いくつかのしきい値によって決定されるように十分である限り、マクロブロックのための動きベクトル探索を停止することができる。これらの高速探索アルゴリズムでは、しきい値を使用して、深度バッファを更新する方法をコントロールすることができる。例えば、十分な探索点に対して、対応する深度バッファをある値に設定し、関連付けられたブロックが深度テストをパスしないようにすることができる。結果として、これらのマクロブロックは、探索プロセスの残りの間に再度探索されないようになる。
【００６０】
Ｄ３ＤＣＭＰ＿ＬＥＳＳテスト条件を、一実施例として使用することができる。深度範囲が［０．０，１．０］であると仮定する。頂点シェーダーによって得られた現在ブロックの深度値は、０．５である。最初に、レンダーサーフェスの深度バッファは１．０に設定される。結果として、すべてのシード点は深度テストをパスするようになり、それらのＳＡＤが計算されるようになる。シード位置を探索した後、いくつかのブロックのＳＡＤが十分であると見なされる場合、対応するブロックの深度バッファ値は１．０から０．０に更新されるようになる。結果として、これらのブロックは、残りの探索パスにおいてレンダリングされないようになる。同じ深度バッファ更新オペレーションを、整数ピクセルおよび１／２ピクセル動きベクトル探索の後、実行することができる。これらの２つのオペレーションでは、深度バッファが使用されて、マクロブロックが動き探索プロセスを受けるようになるかどうかがコントロールされる。例えば、現在の深度が０．５であり、レンダーサーフェス内の対応するブロックが０．０の深度を有する場合、このマクロブロックは現在の反復において探索されないようになる。
【００６１】
ブロック１１０８で、整数ピクセル動き推定が実行される。整数ピクセル動き推定を実行するための一実施例のプロセスを、図１２と共に論じる。ブロック１１１２で、深度バッファが動きベクトル探索プロセス中に更新されて、特定のマクロブロックがこのプロセスを受けるようになるかどうかがコントロールされる。
【００６２】
判断ブロック１１１４で、１／２ピクセル動き推定を実行するかどうかの判定が行われる。そうでない場合、プロセス１１００はブロック１１２４に進み、ここで、決定された動きベクトルが出力される。１／２ピクセル動き推定が実行されるべきである場合、プロセスはブロック１１１６に移動し、ここで１／２ピクセル動き推定が実行される。１／２ピクセル動き推定を実行するための一実施例のプロセスを、図１３と共に論じる。ブロック１１１８で、深度バッファが動きベクトル探索プロセス中に更新される。
【００６３】
判断ブロック１１２０で、１／４ピクセル動き推定を実行するかどうかの判定が行われる。１／４ピクセル動き推定が実行されるべきである場合、プロセスはブロック１１２２に移動し、ここで１／４ピクセル動き推定が実行される。１／４ピクセル動き推定を実行するための一実施例のプロセスを、図１４と共に論じる。１／４ピクセル動き推定が実行されない場合、プロセス１１００はブロック１１２４に進み、ここで、決定された動きベクトルが出力される。
【００６４】
図１２は、整数ピクセル動き推定を実行するための一実施例のプロセスを示す。プロセス１２００をグラフィックス処理装置によって実施することができる。ブロック１２０２で、頂点がセットアップされる。例えば、グラフィックス処理装置の頂点シェーダーは、頂点ストリーム入力に従って、動きベクトルを必要とするマクロブロックおよび参照マクロブロックのための頂点を計算することができる。頂点ストリームを、ＣＰＵによって準備することができる。異なる動き推定アルゴリズムは、異なる頂点ストリームおよび異なる頂点セットアップの結果となる場合がある。
【００６５】
ブロック１２０４で、差分値が計算される。差分値計算を、フレーム全体のマクロブロックに対して実行することができる。このオペレーションを、動き推定アルゴリズムによって決定されたすべての探索点がチェックされるまで、繰り返すことができる。整数ピクセル動き推定からの動きベクトルを、１／２ピクセル探索など、より精密な技術のためのシードとして使用することができる。
【００６６】
判断ブロック１２０６で、すべての位置が探索されているかどうかの判定が行われる。そうでない場合、プロセス１２００はブロック１２０２に戻る。すべての位置が探索されている場合、プロセスはブロック１２０８に進み、ここで、決定された動きベクトルおよび差分値が出力される。
【００６７】
図１３は、１／２ピクセル動き推定を実行するための一実施例のプロセスを示す。ブロック１３０２で、頂点がセットアップされる。整数ピクセル動き推定プロセスからの最良の動きベクトルをシードとして、頂点シェーダーは、シード位置の周囲で参照フレーム内のマクロブロックの頂点をセットアップすることができる。ブロック１３０４で、１／２ピクセル補間およびピクセルコロケーションが実行される。１／２ピクセル補間をピクセルシェーダーによって実行することができる。任意の補間フィルダをサポートすることができる。補間ファイルを双１次フィルタにすることができる。ブロック１３０６で、差分値が計算される。
【００６８】
判断ブロック１３０８で、すべての点（すなわち、ピクセル候補）が探索されているかどうかの判定が行われる。そうでない場合、プロセス１３００はブロック１３０２に戻る。すべての点が探索されている場合、プロセスはブロック１３１０に進み、ここで、決定された動きベクトルおよび差分値が出力される。
【００６９】
図１４は、１／４ピクセル動き推定を実行するための一実施例のプロセスを示す。ブロック１４０２で、１／２ピクセル動き推定プロセスからの最良の動きベクトルをシードとして、頂点がセットアップされる。頂点シェーダーは、シード位置の周囲で参照フレーム内のマクロブロックの頂点をセットアップすることができる。ブロック１４０４で、１／４ピクセル補間およびピクセルコロケーションブロックの頂点が実行される。双３次フィルタを使用することができる。ブロック１４０６で、差分値が計算される。
【００７０】
判断ブロック１４０８で、すべての点（すなわち、ピクセル候補）が探索されているかどうかの判定が行われる。そうでない場合、プロセス１４００はブロック１４０２に戻る。すべての点が探索されている場合、プロセスはブロック１４１０に進み、ここで、決定された動きベクトルが出力される。すべてのマクロブロックの動きベクトルをＣＰＵへ、さらなる処理のために転送することができる。
【００７１】
本発明を構造的特徴および／または方法論的ステップに特有の言語において説明したが、付属の特許請求の範囲で定義された本発明は、説明した特定の特徴またはステップに必ずしも限定されないことを理解されたい。むしろ、特定の特徴およびステップは、特許請求の範囲に記載された本発明を実施する好ましい形態として開示される。
【図面の簡単な説明】
【００７２】
【図１】説明するシステムおよび方法を完全または部分的に実施することができる、加速ビデオ符号化システムを例示する図である。
【図２】ビデオ信号をデジタルビデオデータに符号化するための一実施例のプロセスを例示する図である。
【図３】グラフィックス処理装置による処理のためにフレームがどのように準備されるかのグラフィカル表現を示す図である。
【図４】コロケーションまたはピクセルシフトなしの一実施例のマクロブロックを例示する図である。
【図５】１ピクセルオフセットを有する、コロケートされたフレームのマクロブロックの実施例を例示する図である。
【図６】４ピクセルオフセットを有する、コロケートされたフレームのマクロブロックの実施例を例示する図である。
【図７Ａ】特定のビデオフレームのための一実施例のマクロブロックを示す図である。
【図７Ｂ】隣接したマクロブロックの一実施例を示す図である。
【図８】動き推定をビデオ信号のフレームにおいて実行する、一実施例のプロセスを示す図である。
【図９】フレームをレプリケートするための一実施例のプロセスを示す図である。
【図１０】コロケートされたフレームを使用して動きベクトルを決定するための一実施例のプロセスを示す図である。
【図１１】深度バッファを使用して動き推定手順を加速するための一実施例のプロセスを示す図である。
【図１２】整数ピクセル動き推定を実行するための一実施例のプロセスを示す図である。
【図１３】１／２ピクセル動き推定を実行するための一実施例のプロセスを示す図である。
【図１４】１／４ピクセル動き推定を実行するための一実施例のプロセスを示す図である。
【符号の説明】
【００７３】
１００  加速ビデオ符号化システム
１０４  メモリ
１０６  入力デバイス
１０８  出力デバイス
１１０  ネットワークデバイス
１１２  プログラム
１１４  ビデオデータ
１１６  ビデオ符号化アプリケーション
１１８  オペレーティングシステム
１２３  シェーダー
１２５  深度バッファ
【図１】
2006094494.tif 000003
【図２】
2006094494.tif 000004
【図３】
2006094494.tif 000005
【図４】
2006094494.tif 000006
【図５】
2006094494.tif 000007
【図６】
2006094494.tif 000008
【図７Ａ】
2006094494.tif 000009
【図７Ｂ】
2006094494.tif 000010
【図８】
2006094494.tif 000011
【図９】
2006094494.tif 000012
【図１０】
2006094494.tif 000013
【図１１】
2006094494.tif 000014
【図１２】
2006094494.tif 000015
【図１３】
2006094494.tif 000016
【図１４】
2006094494.tif 000017