説明

グラフィックス処理ユニットを使用してビデオ復号化を加速すること

加速されたビデオ復号化システムが、中央処理装置を利用して他の復号化プロセスを実行しつつ、グラフィックス処理ユニットを利用して、動き補償プロセス、イメージ再構成プロセス、および色空間変換プロセスを実行する。


【発明の詳細な説明】
【技術分野】
【0001】
本発明はビデオ復号化に関し、詳細には、グラフィックス処理ユニットを使用してビデオ復号化を加速することに関する。
【背景技術】
【0002】
マルチメディアは、デジタルエンターテイメントの中核であり、通常、特にリアルタイムアプリケーションに関して、非常に高い処理能力を要求する。リアルタイムマルチメディアアプリケーションが、汎用コンピュータを使用して実施される場合、コンピュータの中央処理装置(CPU)には、通常、重い負荷がかかり、多くの場合、CPUは、リアルタイムマルチメディアアプリケーションをサポートすることができない。例えば、ほとんどの標準の家庭用パーソナルコンピュータに見られるCPUは、高精細度ビデオをリアルタイムで復号化するだけ十分に高性能ではない。
【0003】
シリコン技術およびコンピュータグラフィックス技術の進歩とともに、ますます高価ではあるが、高性能のグラフィックス処理ユニット(GPU)が、主流のパーソナルコンピュータおよびゲームコンソールに見られる。GPUは、2次元グラフィックス演算(operation)および3次元グラフィックス演算を実行するように設計された専用プロセッサである。コンピュータが、非グラフィックス指向の演算(operation)(例えば、符号化されたビデオビットストリームを復号化すること)を実行している場合、CPUに重い負荷がかかっている可能性がある一方で、GPUは、アイドルである。
【発明の開示】
【発明が解決しようとする課題】
【0004】
したがって、非グラフィックスアプリケーションで使用するためにGPUの能力を活用する必要性が存在する。
【課題を解決するための手段】
【0005】
グラフィックス処理ユニットを利用してビデオビットストリームの復号化を加速することを説明する。加速されたビデオ復号化システムが、符号化されたビデオストリームを受け取り、中央処理装置を使用して復号化処理の諸部分を実行し、グラフィックス処理ユニットを使用して復号化処理の別の諸部分を実行する。具体的には、グラフィックス処理ユニットを使用して、動き補償処理、イメージ再構成、および色空間変換が実行される。
【発明を実施するための最良の形態】
【0006】
すべての図面で、同一の符号は、同様の特徴、および同様のコンポーネントを指すのに使用される。
【0007】
以下の説明は、非グラフィックス演算を支援するグラフィックス処理ユニット(GPU)の使用を対象とする。具体的には、GPUを使用して、ビデオビットストリームの復号化が加速される典型的な実施形態を説明する。GPUは、頂点ごと(per-vertex basis)(例えば、ポリゴン(polygon)ベースのレンダリング)、および/またはピクセルごとのグラフィックス演算を実行するように特化された処理装置である。説明するインプリメンテーションでは、計算リソースを多く使い(computationally intensive)、通常、中央処理装置(CPU)によって実行されるビデオ復号化演算、すなわち、動き補償、イメージ再構成、および色空間変換がGPUによって実行されてCPUにかかる負荷が軽減され、ビデオビットストリーム復号化プロセスが加速される。
【0008】
加速されたビデオ復号化は、Windows(登録商標)Media Videoフォーマットに準拠して符号化されたビデオビットストリームに適用されるものとして本明細書で説明するが、説明するプロセスは、MPEGおよびH.26xを含む、他のフォーマットに準拠して符号化されたビデオビットストリームに適用することも可能である。
【0009】
ストリーミングビデオは、イントラ符号化(intra-coded)フレーム(Iフレーム)、予測(predicted)フレーム(Pフレーム)、および双方向予測(bi-directional predicted)フレーム(Bフレーム)の任意の組み合わせを含むことが可能な、フレームシーケンスとして符号化される。それぞれの符号化されたIフレームは、完全なイメージを生成し、レンダリングするのに必要なデータのすべてを含む。符号化されたPフレーム内のデータからイメージを生成することは、そのPフレームからのデータ、および基準フレームと呼ばれる、先行するIフレームまたはPフレームからのデータを要する。符号化されたBフレーム内のデータからイメージを生成することは、そのBフレームからのデータだけでなく、先行する基準Iフレームまたは基準Pフレームと、将来の基準Iフレームまたは基準Pフレームの両方からのデータも要する。
【0010】
それぞれの符号化されたフレーム(Iフレーム、Pフレーム、またはBフレーム)は、マクロブロックに分割される。通常のマクロブロックは、16×16ピクセルのサイズの領域である。イメージのサイズに依存して、各フレームは、多くのマクロブロックを含む可能性がある。Iフレームは、完全なイメージを表示するのに必要なデータのすべてを含むため、Iフレームの各マクロブロックは、そのマクロブロック(すなわち、イメージの16×16ピクセル部分)によって表されるイメージの部分を表示するのに必要なデータのすべてを含むことになる。前述した通り、Pフレームは、先行するIフレームまたはPフレームから予測される。これは、Pフレームのマクロブロックの少なくとも1つが、先行するIフレームまたはPフレームの対応するマクロブロック内のデータに依拠することを意味する。PフレームまたはBフレームの個々のマクロブロックは、インタ符号化(inter-coded)されていること、またはイントラ符号化されていることが可能である。インタ符号化されたマクロブロックは、基準マクロブロックに依拠し、他方、イントラ符号化されたマクロブロックは、基準マクロブロックに依拠しない。イントラ符号化されたマクロブロックは、予測フレームに関連するイメージのマクロブロックサイズの部分を生成するのに必要なデータのすべてを含む。したがって、Iフレームに関連するマクロブロックのすべては、イントラ符号化されたマクロブロックである。インタ符号化されたマクロブロックは、予測フレームに関連するイメージの一部分と、基準フレームに関連するイメージの対応する一部分の間の差分を記述するデータを含む。
【0011】
インタ符号化されたマクロブロックに関連するデータは、通常、動きベクトルと差分データを含む。動きベクトルは、基準マクロブロックを予測マクロブロックと整列させるように基準マクロブロックに適用されるべき2次元変換を記述し、他方、差分データは、基準マクロブロックと予測マクロブロックの間で異なる特定のピクセルを明らかにする。
【0012】
(典型的なビデオ復号化プロセス)
図1−先行技術は、典型的なビデオ復号化プロセス100を示す。通常のビデオ復号器は、符号化されたビットストリームを受け取り、可変長復号化102、逆量子化(dequantization)104、逆離散コサイン変換106、動き補償108、イメージ再構成110、および色空間変換112を実行することにより、受け取られたビットストリームを処理する。
【0013】
可変長符号化、離散コサイン変換、および量子化は、ビデオビットストリームが伝送される前に、ビデオビットストリームを圧縮するのに使用される、周知のビデオ符号化技術である。可変長復号化102、逆量子化104、および逆離散コサイン変換106は、受け取られた、符号化されたビデオビットストリームに適用されて、ビデオデータを伸張する、周知の復号化技術である。ビデオは、可変長符号化、離散コサイン変換、量子化、および/またはその他の符号化技術の任意の組み合わせに従って符号化すること(および、後に復号化すること)ができる。
【0014】
説明するインプリメンテーションでは、システムパフォーマンスを向上させるため、ビデオビットストリームは復号化された後、バッファ114で示す通りバッファリングされる。
【0015】
動き補償108は、2次元平行移動を記述する動きベクトルが、基準フレームのマクロブロックに適用されるプロセスである。動きベクトルは、符号化されたビデオビットストリームの一部であり、基準フレームのマクロブロック内のデータと、予測フレームの対応するマクロブロック内のデータの間の2次元位置差(locaton difference)を記述する。説明するインプリメンテーションでは、予測フレームの各マクロブロックは、関連する動きベクトルを有する。
【0016】
説明するインプリメンテーションでは、マクロブロックは、16×16ピクセルブロックのサイズである。別の実施形態では、各マクロブロックは、4つの8×8ブロックとして記述することができ、したがって、各8×8ブロックに動きベクトルが割り当てられる。そのようなインプリメンテーションでは、マクロブロックの各8×8ブロックは、別々に、ただし、本明細書で説明するマクロブロック処理と同一の形で処理されることが可能である。したがって、以下の説明は、マクロブロックレベルで実行される処理を説明する。ただし、他のサイズのデータブロックに対しても同一の処理を実行することができることが認識されよう。
【0017】
図1に示す通り、動き補償108が、バッファ116で示す通り、前にバッファリングされた基準データに対して実行され、バッファ116は、後に受け取られる予測フレームデータに対する基準として使用されるべき、前に復号化され、再構成されたフレームデータを格納するのに使用される。基準フレームが、誤った形で復号化された、または受け取られなかった場合、ドリフトする(drifting)エラーが、誤った(または欠落した)基準フレームから予測される、後続のPフレームおよびBフレームに伝播する。したがって、動き補償処理108が正確に実行されることが重要である。
【0018】
再構成110は、動き補償された基準フレームデータが、受け取られた差分データ(PフレームまたはBフレームに関連する)に加えられて、予測フレームに関連する再構築されたイメージが形成されるプロセスである。図1に示す通り、再構成されたデータは、基準データとして後に使用するために、バッファリングされる(バッファ116で示す通り)ことが可能である。
【0019】
表示118に先立って、再構成されたデータに対して、色空間変換112が実行される。色空間変換処理112は、ビデオデータが作成された色空間から、そのビデオデータが表示されるディスプレイデバイスに関連する色空間に、ビデオデータを変換するように実行される。例えば、通常の色空間変換は、YUVフォーマットからRGBフォーマットであることが可能である。
【0020】
(典型的なシステムアーキテクチャおよび方法)
図2は、加速されたビデオ復号化システム202の典型的なアーキテクチャを示す。加速されたビデオ復号化システム202は、符号化されたビデオビットストリームを受け取り、受け取られたデータを復号化し、符号化されたデータをディスプレイデバイス204に伝送する。ディスプレイデバイス204は、テレビ、コンピュータモニタ、または他のそのようなディスプレイデバイスを表す。物理的に別個のデバイスとして示しているが、ディスプレイデバイス204は、加速されたビデオ復号化システム202の組み込まれたコンポーネントとして実装してもよい。
【0021】
加速されたビデオ復号化システム202は、パーソナルコンピュータ、ビデオゲームコンソール、またはビデオデータを受け取り、復号化し、レンダリングするように構成された他のそのようなデバイスを表す。典型的な加速されたビデオ復号化システム202は、中央処理装置(CPU)206、グラフィックス処理ユニット(GPU)208、およびメモリ210を含む。典型的なGPU208は、頂点ごとのグラフィックス演算を実行するためのプログラマブル頂点シェーダ(vertex shader)212、およびピクセルごとのグラフィックス演算を実行するためのプログラマブルピクセルシェーダ214を含む。
【0022】
メモリ210が、ビデオ復号化アプリケーション216を格納するのに使用され、他のアプリケーション群218も格納することができる。また、メモリ210は、CPU206によるアクセスが可能なCPUバッファ220、GPU208によるアクセスが可能なGPUバッファ222、およびディスプレイデバイス204によるアクセスが可能なディスプレイバッファ224などの、1つまたは複数のバッファも含むことが可能である。他のアプリケーション群218は、CPU206上、またはGPU208上で実行されるように実施されることが可能である。ビデオ復号化アプリケーション216が、可変長復号化102、逆量子化104、および逆離散コサイン変換106を実行するよう、CPU206を導くように実施される。ビデオ復号化アプリケーション216は、動き補償108、イメージ再構成110、および色空間変換112を実行するよう、GPU208を導くようにさらに実施される。GPU208を利用して、符号化されたビデオビットストリームの復号化を加速するための方法を、図3を参照して、以下により詳細に説明する。
【0023】
(ビデオ復号化を加速するための典型的な方法)
加速されたビデオ復号化は、コンピュータによって実行される、アプリケーションモジュール群などの、コンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、アプリケーションモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。ビデオ復号化アプリケーション216は、任意の数のプログラミング技術を使用して実施することができ、ローカルコンピューティング環境で実施しても、任意の数の通信プロトコルに基づく様々な通信ネットワークを介してリンクされたリモート処理デバイス群によってタスクが実行される、分散コンピューティング環境で実施してもよい。そのような分散コンピューティング環境では、アプリケーションモジュール群は、メモリ記憶装置を含む、ローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体の両方の中に配置することができる。
【0024】
図3は、グラフィックス処理ユニットを使用してビデオ復号化を加速するための典型的な方法300を示す。ブロック302〜310はCPU206によって実行される処理を表し、他方、ブロック312〜328はGPU208によって実行される処理を表す。
【0025】
ブロック302で、ビデオ復号化システム202は、符号化されたビデオビットストリームを受け取る。前述した通り、説明するインプリメンテーションは、Windows(登録商標)Media Videoフォーマットに準拠して符号化されたビデオビットストリームに適用される。別の実施形態は、MPEGやH.26xなどの他のフォーマットに準拠して符号化されたビデオビットストリームを復号化するように構成されてもよい。
【0026】
ブロック304で、ビデオ復号化アプリケーション216が、受け取られた、符号化されたビデオビットストリーム内の符号化されたフレームを識別するよう、CPU206を導く。識別されたフレームはIフレーム、PフレームまたはBフレームとすることができる
ブロック306で、ビデオ復号化アプリケーション216は、識別されたフレームの各マクロブロックに対して可変長復号化、逆量子化、および/または逆離散変換を実行することにより、識別されたフレームを復号化するよう、CPU206を導く。Iフレームに関して、復号化されたデータは、実際のイメージデータから成り、他方、PフレームまたはBフレームに関して、復号化されたデータは、1つまたは複数の基準フレームイメージと、現行のPフレームまたはBフレームによって表されるイメージの間の差分を表す。各マクロブロックに関連する、復号化されたデータは、通常、動きベクトル、並びに動き補償された基準イメージと予測イメージの間で異なるピクセルを記述するデータを含む。
【0027】
ブロック308で、ビデオ復号化アプリケーション216は、復号化されたデータをバッファリングするよう、CPU206を導く。説明するインプリメンテーションでは、復号化されたフレームデータは、CPUバッファ220の中に格納される。復号化されたデータをバッファリングした後、CPU206は、ブロック304〜308に関連して前述した通り、さらなるフレームを復号化することを続ける。復号化されたデータをバッファリングすることにより、CPU206は、GPU208が、前に復号化されたデータを処理している間に、さらなるデータを復号化することを続けることができ、CPUとGPUの両方を同時に利用することにより、システムパフォーマンスが向上させられる。
【0028】
ブロック310で、ビデオ復号化アプリケーション216は、CPUバッファ220からGPU208にデータを転送する。1つのインプリメンテーションでは、利用可能な帯域幅を活用するため、差分データの2つ以上のマクロブロックが、CPU206からGPU208に伝送するために、一緒にパックされる。1つのインプリメンテーションでは、動きベクトルデータは、差分データとは別個に、CPU206からGPU208に転送される。
【0029】
ブロック312で、GPU208が、CPUバッファ220から受け取られたデータが、Iフレームに関連しているかどうかを判定する。データが、Iフレームに関連している場合、動き補償またはイメージ再構成の処理は全く必要とされず、処理は、ブロック320に進み(ブロック312から「はい」の分岐)、復号化されたデータが、後続の予測フレームに対する基準データとして使用されるように、GPUバッファ222の中に格納される。
【0030】
受け取られたデータが、PフレームまたはBフレームに関連している場合(ブロック312から「いいえ」の分岐)、ブロック314で、ビデオ復号化アプリケーション216は、動き補償処理を実行するよう、GPU208を導く。GPU208は、受け取られたフレームデータのマクロブロックに関連する動きベクトルを、前にバッファリングされた基準データの対応するマクロブロックに適用する。説明するインプリメンテーションでは、受け取られたマクロブロックがインタ符号化されているか、またはイントラ符号化されているかに依存して異なり、関連する動きベクトルの値に基づいて異なる、相異なる動き補償モードがサポートされる。また、整数ペル(pel)精度、1/2ペル精度、および1/4ペル精度を含む、様々な動き補償精度もサポートされる。典型的な動き補償処理を、図4を参照して、以下により詳細に説明する。
【0031】
ブロック316で、ビデオ復号化アプリケーション216は、現行のフレームに関連するマクロブロックのすべてが、GPU208に伝送済みであるか否かを判定する。現在、処理されている予測フレームに関連する、さらなる差分データが存在する(すなわち、フレームに関するマクロブロックのすべてが、GPU208に転送済みであるのではない)場合、処理は、前述した通り、ブロック310に進む。反対に、現在、処理されている予測フレームに関する差分データのすべてが、GPU208に転送済みである場合、以下に説明する通り、ブロック320で、イメージ再構成処理が実行される。前述した通り、CPU206とGPU208の間の利用可能な帯域幅に依存して、CPU208に送る際、複数のマクロブロックを一緒にパックしてもよい。CPU206が、ビデオデータを十分に高速で復号化し、CPU206とGPU208の間のメモリ帯域幅が、十分に大きいインプリメンテーションでは、フレームに関連するマクロブロック群は、単一のバッチで伝送して、ブロック316からブロック312までのループで図3に示す、反復する処理の必要性を無くしてもよい。
【0032】
ブロック318で、ビデオ復号化アプリケーション216は、受け取られた予測フレームデータに関連するイメージを再構成するよう、GPU208を導く。イメージ再構成は、動き補償された基準データを、フレームの各マクロブロックに関する、受け取られた差分データに加えることによって実行される。典型的なイメージ再構成方法を、図5を参照して、以下にさらに詳細に説明する。
【0033】
ブロック320で、ビデオ復号化アプリケーション216は、再構成されたイメージデータ(またはIフレームの場合、受け取られたイメージデータ)をGPUバッファ222にコピーするよう、GPU208を導く。バッファリングされたイメージデータは、次に、後続で受け取られた予測フレームデータに対する基準データとして使用することができる。説明するインプリメンテーションでは、Bフレームデータは、後続のフレームに対する基準データとして使用されず、したがって、ブロック320でバッファリングされない。
【0034】
ブロック322で、ビデオ復号化アプリケーション216が、再構成されたイメージに対して色空間変換処理を実行するよう、GPU208のピクセルシェーダコンポーネント214を導く。色空間変換処理は、ピクセルごとに実行されて、イメージが作成された色空間(例えば、YUV)から、ディスプレイデバイス204によってサポートされる色空間(例えば、RGB)に、イメージが変換される。色空間変換は、イメージ内の各ピクセルに適用されるため、色空間処理が、GPU208のプログラマブルピクセルシェーダコンポーネント214を使用して実行されるのは適切である。
【0035】
ブロック324で、イメージデータが、ディスプレイバッファ224にコピーされる。ブロック324で、フレームデータの表示順序も調整されることが可能である。例えば、Bフレームは、先行するフレームと将来のフレームの両方からのデータに依存するため、フレームは、フレームが表示される順序とは異なる順序で受け取られ、処理される可能性がある。ブロック324で、表示順序は、正しい時間的順序を復元するように調整される。このブロックは、IフレームおよびPフレームだけに適用され、シーケンスがBフレームを含む場合だけに必要である。このステップが必要なのは、Bフレームが、時間的に、Bフレームに先行する基準、およびBフレームの後に続く基準という、2つの基準に依存するためである。復号化されたフレームデータは、そのフレームに関連するスケジュールされた表示時刻に達するまで、ディスプレイバッファ224の中に留まる。バッファリングされるデータの量は、処理速度が、表示速度と同等であった(compared)かどうかに依存する。また、復号化されたデータをバッファリングすることにより、表示ジッタも減少し、CPUおよびGPUが、前に処理されたフレームがディスプレイバッファ224の中に格納される間に、さらなるフレームを処理することを続けることが可能になる。
【0036】
ブロック326で、ビデオ復号化アプリケーション216は、オプションとして、再構成されたイメージに対して特殊効果処理を実行するよう、GPU208を導くように構成されてもよい。例えば、GPU208は、逆インターレース(de-interlacing)、逆テレシネ(inverse telecine)、スケーリング(scaling)、フェードインまたはフェードアウト、イメージシャープニング(sharpening)またはイメージぼかし(blurring)などの、頂点ベース、またはピクセルベースの特殊効果を実行するように誘導されることが可能である。
【0037】
ブロック328で、復号化されたフレームイメージが、ディスプレイデバイス204に伝送される。
【0038】
(典型的な動き補償処理方法)
図4は、GPU208によって実行される典型的な動き補償処理方法を示す。図示した方法は、図3のブロック314に関連して説明した通り、GPUによって実行されることが可能である。
【0039】
前述した通り、典型的な実施形態では、16×16のマクロブロックが、1つの動きベクトルを有することが可能であり(すなわち、1MVマクロブロック)、あるいはマクロブロックは、動きベクトルをそれぞれが有する、4つの8×8ブロックに分割されてもよい(すなわち、4MVマクロブロック)。説明するインプリメンテーションでは、4MVマクロブロックの各8×8ブロックが、別々に、1MVマクロブロックが処理されるのと同一の形で処理される。方法314は、1MVマクロブロックに関連して説明するが、4MVマクロブロックのそれぞれのより小さいブロックに関して実行してもよい。
【0040】
ブロック402で、GPU208が、PフレームまたはBフレームなどの予測フレームのマクロブロックに関連する動きベクトルデータを初期設定する。ビデオ復号化アプリケーション216は、受け取られた動きベクトルデータに対して初期処理を実行して、頂点データを生成するよう、GPU208のプログラマブル頂点シェーダコンポーネント212を導く。目標マクロブロック(すなわち、再構成されるべきマクロブロック)に関して、各頂点(すなわち、4つのコーナ(corner)ピクセルのそれぞれ)に関する目標位置およびテクスチャアドレスが算出される。目標位置は、目標位置は、再構成されるべきマクロブロックの目標テクスチャの中の位置を指定し、トライアングルセットアップ(triangle setup)のために使用される。テクスチャアドレスは、基準フレーム内の対応するマクロブロックの頂点の位置を指定する。1つのインプリメンテーションでは、CPU206は、目標ブロック位置に動きベクトルを適用することによって、テクスチャアドレスを計算し、テクスチャアドレスをGPU208に送る。別の実施形態では、CPU206は、動きベクトルをGPU208に送り、頂点シェーダ212が、テクスチャアドレスを計算するように構成される。
【0041】
ブロック404で、GPU208は、処理されるべきマクロブロックが、イントラ符号化されたマクロブロックであるか否かを判定する。処理されるべきマクロブロックが、イントラ符号化されたマクロブロックである場合(ブロック404から「はい」の分岐)、受け取られたマクロブロックデータは、ゼロ値(zero-valued)テクスチャとアルファブレンド(alpha blend)される(ブロック406)。イントラ符号化されたマクロブロックは、イメージの完全な16×16ピクセル領域を生成するのに必要なデータをすべて含むため、受け取られたデータをゼロ値テクスチャとブレンドすることにより、受け取られたマクロブロックに対応するイメージの完全な16×16ピクセル領域を含む、目標テクスチャがもたらされる。
【0042】
別の実施形態では、イントラ符号化されたマクロブロックは、ゼロの動きベクトルを有するインタ符号化されたマクロブロックが処理されるのと同一の形(ブロック410に関連して以下に説明する)で処理される。そのようなインプリメンテーションでは、前に生成された基準イメージの諸部分をゼロ設定(sero out)する計算コストが高い(computationally expensive)ため、ピクチャの外の前に消去された(すなわち、基準ピクセル値がゼロに設定されている)領域を、イントラ符号化されたマクロブロックに対する、対応する基準マクロブロックとして使用する。
【0043】
別のインプリメンテーションでは、イントラ符号化されたマクロブロックに関する動き補償処理は、他のいずれのマクロブロックを処理するよりも前に、目標テクスチャをまず消去すること(すなわち、各ピクセル値をゼロに設定すること)によって実行される。
【0044】
処理されるべきマクロブロックがインタ符号化されたマクロブロックである場合(ブロック404から「いいえ」の分岐)、次にブロック408で、GPU208は、マクロブロックに関連する動きベクトルがゼロに等しいか否かを判定する。動きベクトルがゼロの値を有する場合(ブロック408から「はい」の分岐)、次にブロック410で、バッファリングされた基準データの中の対応するマクロブロックが目標テクスチャにコピーされる。
【0045】
別の実施形態では、ゼロ値の動きベクトルを有するマクロブロックに関する動き補償処理は、非ゼロの動きベクトルを有するマクロブロックに関して動き補償処理が実行されるのと、同一の形で実行されることが可能である。しかし、説明するインプリメンテーションでは、処理を単純化するため、ゼロの動きベクトルを有するマクロブロックは、非ゼロの動きベクトルを有するマクロブロックと異なる形で処理される。
【0046】
処理されるべきマクロブロックが、非ゼロの動きベクトルを有するインタ符号化されたマクロブロックである場合(ブロック408から「いいえ」の分岐)、次にブロック412で、GPU208は、動きベクトルが、ピクチャ領域の外をポイントするか否かを判定する。動きベクトルが、ピクチャ領域の外をポイントする場合(ブロック412から「はい」の分岐)、次にブロック414で、GPU208が、黙示の埋め込み(implicit padding)を実行する。
【0047】
ブロック414で、GPU208が、ピクチャ領域の外をポイントする動きベクトルを扱う埋め込みプロセスを実行する。例えば、目標位置(0,0)におけるマクロブロックに関連する動きベクトルが、(−3,−4)であった場合、基準マクロブロックは、ピクチャ領域の外である位置(−3,−4)にある。対応する基準データが、ピクチャ領域内に存在することを確実にするため、通常、幅16ピクセルの埋め込みバンドが、基準イメージの各側に加えられる。説明するインプリメンテーションでは、埋め込みは、GPUにおいてテクスチャのレンダ(render)状態およびテクスチャアドレスモードを構成して、DirectXが、埋め込みを自動的に実行するようにすることにより、黙示的に実行される(ブロック414で)。
【0048】
別の実施形態では、埋め込みは、レンダリングパス(rendering pass)をベクトルデータ初期設定(ブロック402)の一環として使用して、明示的に実行される。つまり、基準フレームの4つの境界が、動き補償処理が実行される前に、レンダリングパスを使用して、明示的に埋め込まれる。頂点シェーダ212が、追加された境界ピクセルに同一のテクスチャアドレスを割り当てるようにプログラミングされる。頂点のテクスチャアドレスは、ピクセルシェーダによって、ピクセル値をサンプリングするのに使用されるため、同一のテクスチャアドレスにより、対応する基準ピクセル値が、所望の境界ピクセル値に正しく設定される。
【0049】
動き補償が実行されるべき精度に依存して、基準データを、ブロック420で、バイリニア(bi-linear)フィルタを使用して内挿(interpolate)して1/2ペルの精度を提供すること、またはブロック422で、バイキュービック(bi-cubic)フィルタを使用して内挿して1/4ペルの精度を提供することができる。1ペルより下の(sub-pel)動き補償精度を実現することについて、以下にさらに詳細に説明する。整数ペル精度は、図4に、ブロック414からブロック420までの矢印で表す、追加のフィルタリングを要さない。
【0050】
ブロック420で、処理されるべきマクロブロックに関連する動きベクトルが、バッファリングされた基準データの中の対応するマクロブロックに適用され、動き補償された基準データが、目標テクスチャに書き込まれる。
【0051】
典型的な実施形態では、条件付き演算は、GPU208において計算コストが高いため、マクロブロックは、動き補償モードおよび動き補償精度に基づき、パックされ、バッチでGPU208に送られる。例えば、イントラ符号化されたマクロブロック群が一緒にパックされる場合、それらのマクロブロックに関してGPU208によって実行される動き補償処理は、図4のブロック402およびブロック406に関連して、以上の通り説明することができる。ゼロの動きベクトルを有するインタ符号化されたマクロブロック群が一緒にパックされる場合、それらのマクロブロックに関してGPU208によって実行される動き補償処理は、図4のブロック402およびブロック410に関連して、以上の通り説明することができる。非ゼロの動きベクトルおよび整数ペル精度を有するインタ符号化されたマクロブロック群が一緒にパックされる場合、それらのマクロブロックに関してGPU208によって実行される動き補償処理は、ブロック402、412、414、および420に関連して、以上の通り説明することができる。ブロック416は、1/2ペル精度の動き補償のために実行される、さらなる処理を表し、ブロック418は、1/4ペル精度の動き補償のために実行される、さらなる処理を表す。
【0052】
(1ペルより下の動き補償精度を実現すること)
前述した通り、動き補償処理は、整数ペル、1/2ペル、および1/4ペルなどの、様々な精度に関して異なる。動き補償精度は、動きベクトルの精度を基準とする。例えば、動きベクトルは、マクロブロックの動きを最も近いピクセルまで(すなわち、整数ペル精度)最も近い1/2ピクセルまで(すなわち、1/2ペル精度)、または最も近い1/4ピクセルまで(すなわち、1/4ペル精度)記述することができる。動き補償処理計算の複雑度は、精度に応じて変わり、整数ペルが、複雑度の最も低い計算を要し、1/4ペル精度が、複雑度の最も高い計算を要する。典型的な実施形態では、グラフィックス処理ユニットのピクセルシェーダコンポーネント(通常、レンダリングパス当り8つのコードラインに制限される)の処理限度に起因して、動き補償処理は、動き補償精度に応じてバッチ処理される(batched)。
【0053】
1つのインプリメンテーションでは、1ペルより下の精度は、近隣のピクセル値を合計し、次に、その結果を適切な数で割ることによって達せられる。例えば、4つのピクセル値を合計し、次に、4で割って(例えば、バイリニア内挿フィルタを使用して)、1/2ペル精度をもたらすことができる。説明するインプリメンテーションでは、ピクセルシェーダ214は、赤、緑、青、およびアルファに対応する4つの独立した8ビットチャネルを提供する。各チャネルは、8ビットに制限されるため、0から255までの範囲を表すことが可能である。説明する実施例では、4つのピクセル値の合計は、255より大きい可能性が高く、オーバーフローがもたらされる。そのようなことが生じるのを防止するため、近隣のピクセル値をまず、例えば、各値を4で割ることにより、商と残余(residual)に分解する。次に、商および残余をそれぞれ合計し、割る。次に、結果の商に、その商を割った数(この場合、4)を掛けて、結果の残余の値に加算する。動き補償精度および内挿フィルタに依存して、オーバーフローが無いことを補償するため、16、32、または64で割ることが適切である可能性がある。例えば、バイキュービック内挿フィルタを使用する1/4ペルの動き補償の場合、基準ピクセル値は、16で分解される。
【0054】
別の実施形態では、1ペルより下の精度は、近隣のピクセルにそれぞれの重みを掛けて、次に、結果の値を合計することによって獲得される。例えば、4つのピクセル値にそれぞれ、.25を掛けて、次に、結果の値を合計し、1/2ペル精度がもたらされる。前述した通り、ピクセルシェーダの内部精度は、最大で8ビットに制限され、中間結果が丸められ、丸めの誤差が導入される。しかし、誤差は、将来のフレームに伝播されるため、そのような誤差は、許容できない。正確な結果を確実にするため、説明するインプリメンテーションでは、丸めの誤差は、マージされる。具体的には、商の計算中に導入された丸めの誤差が計算され、残余の計算に伝播される。例えば、基準ピクセル値が、16に関して分解されるものと想定されたい。最終の値を計算するため、商および残余が計算され、合計される。商に関する丸めの誤差に16を掛け、残余に関する丸めの誤差に加算する。商に関する丸めの誤差を残余に関する計算にマージすることにより、中間計算からの丸めの誤差が導入されないことが確実になる。
【0055】
さらに別の実施形態では、予め計算された中間結果を格納するルックアップテーブルが生成される。内挿係数(interpolation coefficients)は、バイキュービックフィルタの内挿係数のように、非常に不規則である可能性がある。そのような不規則な内挿係数により、GPU208によって複雑な演算が実行されることになる。ルックアップテーブルの使用は、特に内挿係数が不規則である場合、事前計算、並びに少なくとも一部の中間結果の格納を可能にすることにより、システム効率を高めることができる。ルックアップテーブルにGPU208がアクセスできることを確実にするため、ルックアップテーブルは、2の累乗に等しいサイズ(size equal to a power of two)の攪拌された(swizzled)テクスチャとして実装することができる。
【0056】
(典型的なイメージ再構成)
図5は、GPU208によって実行されることが可能な典型的なイメージ再構成方法318を示す。
【0057】
ブロック502で、GPU208が、PフレームまたはBフレームなどの予測フレームに関連する差分データを受け取る。前述した通り、典型的な実施形態では、利用可能な帯域幅を活用するため、差分データの2つ以上のマクロブロックが、CPU206からGPU208に伝送するために一緒にパックされる。
【0058】
ブロック504で、GPU208は、差分データの受け取られたマクロブロック群をアンパックする。マクロブロック群は、パックされたマクロブロック群の元の順序を保つような形でアンパックされる。
【0059】
ブロック506で、復号化されたフレームデータが、対応する動き補償された基準データに加えられて、フレームに関連する再構成されたイメージが生成される。
【0060】
説明するインプリメンテーションでは、イメージの各ピクセルは、8ビットの符号なしの数で表されることが可能であり、したがって、0から255までの値を有する。差分データは、−255から255までの範囲を有する。したがって、差分データを表すのに9ビットが必要とされる。受け取られた差分データを対応する基準データに加えるイメージ再構成処理が実行されて、0から255までの値を有するピクセル群を有する予測イメージがもたらされる。
【0061】
説明するインプリメンテーションでは、ピクセルシェーダ214が、赤、緑、青、およびアルファに対応する、4つの独立した8ビットチャネルを提供する。各チャネルは、8ビットに制限されるため、各チャネルは、0から255までの範囲を表すことが可能である。ピクセルシェーダは、いずれのレンダリングパスにおいても、4つまでのテクスチャしかサポートすることができず、算術命令数は、8つを超えることができない。前述したピクセルシェーダの限界からして、予測イメージ再構成は、簡単ではない。
【0062】
説明するインプリメンテーションでは、9ビットの符号付き差分データは、2つの8ビットチャネルを使用して格納することができる。1つのチャネル(例えば、アルファチャネル)は、差分データに関連する符号を保持するのに使用され、別のチャネルは、差分データ値を保持するのに使用される。各ピクセルに関して、値は、基準データに足されることと、基準データから引かれることの両方が行われ、次に、条件付き演算が実行されて、アルファチャネルの中に格納された符号を調べることにより、適切な結果が選択される。
【0063】
(典型的なGPU最適化)
ビデオビットストリームの復号化を加速するようにGPU208によって実行される処理は、多くの形で最適化することができる。データマージ、意図的な(deliberate)UVデータ配置、およびデータパーティション分割が、実施することができる処理最適化の3つの例である。
【0064】
データマージを使用して、頂点シェーダ212にかかる負荷を軽減することができる。ピクセルシェーダ214は、データをピクセルごとに処理するため、特定のフレームに関してピクセルシェーダ214にかかる負荷は、レンダリングされるべきイメージのサイズによって算出することができる。これに対して、頂点シェーダ212は、データを頂点ごとに処理する。したがって、特定のフレームに関して頂点シェーダ212にかかる負荷は、その所与のフレームに関して処理されるべきデータブロックの数に正比例する。例えば、20のマクロブロックを有するフレームに関して頂点シェーダ212にかかる負荷は、10のマクロブロックを有するフレームに関する場合の負荷の2倍である。
【0065】
1つのインプリメンテーションでは、頂点シェーダ処理負荷を軽減するため、等しい動きベクトルを有する近隣のマクロブロック群を一緒にマージして、処理されるべき、より大きいデータブロックが形成される。同様に、近隣のイントラ符号化されたマクロブロック(動きベクトルを全く有さない)も一緒にマージして、1つのデータブロックとして処理することができる。
【0066】
意図的なUV配置は、イメージに関連するデータを格納するのに要求されるメモリを最小限に抑えるように実施することができる。多くのパーソナルコンピュータディスプレイカードは、テクスチャサイズが、2の累乗に等しいことを要求する。例えば、320×240のイメージは、512×512のテクスチャを要求する。テクスチャ上にYイメージ成分、Uイメージ成分、およびVイメージ成分を配置する際に、テクスチャサイズ制約を考慮することにより、必要とされる最小のテクスチャを使用することができ、イメージに関するメモリフットプリント(footprint)が縮小される可能性がある。
【0067】
図6は、要求されるメモリを最小限に抑えるように、目標テクスチャ上にYイメージ成分、Uイメージ成分、およびVイメージ成分を配置することを示す。典型的な320×240のイメージは、320×240のY成分602、160×120のU成分604、および160×120のV成分606から成る。各イメージ成分に埋め込みが行われた場合(図4のブロック414に関連して前述した)、埋め込み済みのY成分608は、384×304であり、埋め込み済みのU成分610は、192×152であり、埋め込み済みのV成分612は、192×152である。
【0068】
U成分およびV成分が、目標テクスチャ614上でY成分608の横に配置される場合、目標テクスチャ614は、少なくとも1024×512であることが要求される。しかし、U成分およびV成分が、目標テクスチャ614上でY成分608の下に配置される場合、目標テクスチャ614は、少なくとも512×512であることしか要求されず、イメージを格納するのに要求されるメモリの大幅な縮小がもたらされる。したがって、好ましいインプリメンテーションでは、Uイメージ成分およびVイメージ成分が、目標テクスチャ上に配置される際、イメージを格納するのに要求されるメモリの量を最小限に抑えるように、目標サイズ制約が考慮される。
【0069】
データパーティション分割は、GPU208のパフォーマンスを向上させるのに使用することができる別の最適化である。グラフィックスプロセッサを含む多くのシステムでは、GPUが直接にアクセスすることができるビデオメモリは、通常、限られる。したがって、大きいイメージに関連するデータのサイズが、利用可能なビデオメモリストレージを超える可能性があることは予見できる。また、アクセラレーテッドグラフィックスポート(accelerated graphics port)(AGP)メモリ帯域幅と通常、呼ばれるGPU208に関連するメモリ帯域幅も、GPUが処理することができるデータの量を制限する可能性がある。GPU208が、AGPメモリ帯域幅を超えるデータの読み取り、または書き込みを行おうと試みた場合、読み込まれる、または書き込まれるデータが大き過ぎるために、GPU処理は、ストールする。典型的な実施形態では、大きいイメージに関連するデータは、GPU208によってそれぞれが別々に処理されることが可能な、より小さいデータセットにパーティション分割されることが可能である。
【0070】
図7は、4つのより小さい、重なり合うデータセット702(1)、702(2)、702(3)、および702(4)にパーティション分割された、典型的な大きいイメージ702を示す。図示した実施例では、大きいイメージ702は、元のイメージのサイズの1/4に、各サブピクチャに関連する動きベクトルが、ピクチャ領域の外をポイントしないことを確実にするガードバンド(guard band)を加えたサイズにそれぞれが等しいサイズの、4つのサブピクチャに分割される。例えば、サブピクチャ702(1)は、サブピクチャ702(2)およびサブピクチャ702(3)と重なり合う。イメージデータをより小さいサブセットにパーティション分割することにより、GPU208を使用して、GPUがアクセスできるビデオメモリが限られている場合でも、ビデオ復号化プロセスを加速することができる。
【0071】
(結論)
本システムおよび本方法を、構造上の特徴および/または方法上のステップに特有の言い回しで説明してきたが、添付の特許請求の範囲で定義する本発明は、説明した特定の特徴またはステップに必ずしも限定されないことを理解されたい。むしろ、特定の特徴およびステップは、請求する発明を実施する好ましい形態として開示している。
【図面の簡単な説明】
【0072】
【図1】−先行技術 典型的なビデオ復号化プロセスを示す流れ図である。
【図2】加速されたビデオ復号化システムの典型的なアーキテクチャを示す図である。
【図3】グラフィックス処理ユニットを利用して、ビデオ復号化を加速するための典型的な方法を示す図である。
【図4】グラフィックス処理ユニットによって実行される典型的な動き補償処理を示す図である。
【図5】グラフィックス処理ユニットによって実行される典型的なイメージ再構成方法を示す図である。
【図6】イメージメモリフットプリントを最小限に抑える典型的なUVコンポーネント配置を示す図である。
【図7】限られたメモリリソース、および限られたメモリ帯域幅を有するGPUを使用して、ビデオ復号化加速を可能にする典型的なデータパーティション分割を示す図である。

【特許請求の範囲】
【請求項1】
イントラ符号化されたフレームデータとインタ符号化されたフレームデータを含む符号化されたビデオビットストリームを受け取ること、
中央処理装置を使用して前記イントラ符号化されたフレームデータを復号化すること、
前記イントラ符号化されたフレームデータをグラフィックス処理ユニットに転送すること、
該ユニットを使用して、前記インタ符号化されたフレームデータに対する基準フレームデータとして使用される前記イントラ符号化されたフレームデータのコピーをバッファリングし、該フレームデータを表示されるようにディスプレイデバイスに伝送すること、
前記インタ符号化されたフレームデータを前記中央処理装置を使用して復号化すること、
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに転送すること、および、
該ユニットを使用して、前記インタ符号化されたフレームデータに関連する動きベクトルを前記基準フレームデータに適用して動き補償された基準フレームデータを生成し、前記インタ符号化されたフレームデータを前記動き補償された基準フレームデータに加えることで前記インタ符号化されたフレームデータに関連するイメージデータを再構成すること
を含むことを特徴とする方法。
【請求項2】
前記イントラ符号化されたフレームデータを前記復号化することは可変長復号化プロセスを実行することを含むことを特徴とする請求項1の方法。
【請求項3】
前記イントラ符号化されたフレームデータを前記復号化することは逆量子化プロセスを実行することを含むことを特徴とする請求項1の方法。
【請求項4】
前記イントラ符号化されたフレームデータを前記復号化することは逆離散コサイン変換を適用することを含むことを特徴とする請求項1の方法。
【請求項5】
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに前記転送することは、
前記インタ符号化されたフレームデータの2つ以上のマクロブロックを識別すること、
該マクロブロックを一緒にパックしてデータパケットにすること、および、
前記データパケットを前記グラフィックス処理ユニットに転送すること
を含むことを特徴とする請求項1の方法。
【請求項6】
前記インタ符号化されたフレームデータは、対応する基準マクロブロックからのデータに依存しない複数のイントラ符号化されたマクロブロックと、対応する基準マクロブロックからのデータに依存する複数のインタ符号化されたマクロブロックを含み、並びに、
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに前記転送することは、
前記インタ符号化されたフレームデータの2つ以上のインタ符号化されたマクロブロックを識別すること、
前記2つ以上のインタ符号化されたマクロブロックを一緒にパックしてインタ符号化されたマクロブロックだけを含むデータパケットにすること、および、
前記データパケットを前記グラフィックス処理ユニットに転送すること
を含むことを特徴とする請求項1の方法。
【請求項7】
前記インタ符号化されたフレームデータは、対応する基準マクロブロックからのデータに依存しない複数のイントラ符号化されたマクロブロックと、対応する基準マクロブロックからのデータに依存する複数のインタ符号化されたマクロブロックを含み、並びに、
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに前記転送することは、
前記インタ符号化されたフレームデータの2つ以上のイントラ符号化されたマクロブロックを識別すること、
該マクロブロックを一緒にパックしてイントラ符号化されたマクロブロックだけを含むデータパケットにすること、および、
前記データパケットを前記グラフィックス処理ユニットに転送すること
を含むことを特徴とする請求項1の方法。
【請求項8】
前記インタ符号化されたフレームデータは関連する動きベクトルをそれぞれが有する複数のマクロブロックを含み、並びに、
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに前記転送することは、
ゼロに等しい関連する動きベクトルをそれぞれが有する2つ以上のマクロブロックを識別すること、
該マクロブロックを一緒にパックしてゼロの動きベクトルを有するマクロブロックだけを含むデータパケットにすること、および、
前記データパケットを前記グラフィックス処理ユニットに転送すること
を含むことを特徴とする請求項1の方法。
【請求項9】
前記インタ符号化されたフレームデータは関連する動き補償精度をそれぞれが有する複数のマクロブロックを含み、並びに、
前記インタ符号化されたフレームデータを前記グラフィックス処理ユニットに前記転送することは、
同一の動き補償精度をそれぞれが有する2つ以上のマクロブロックを識別すること、
該マクロブロックを一緒にパックして同一の動き補償精度を有するマクロブロックだけを含むデータパケットにすること、および、
前記データパケットを前記グラフィックス処理ユニットに転送すること
を含むことを特徴とする請求項1の方法。
【請求項10】
前記動き補償精度は最も近いピクセルまでであることを特徴とする請求項9の方法。
【請求項11】
前記動き補償精度は最も近い1/2ピクセルまでであることを特徴とする請求項9の方法。
【請求項12】
前記動き補償精度は最も近い1/4ピクセルまでであることを特徴とする請求項9の方法。
【請求項13】
前記グラフィックス処理ユニットを使用して、後続のインタ符号化されたフレームデータに対する基準データとして使用される再構成された前記イメージデータのコピーをバッファリングすることをさらに含むことを特徴とする請求項1の方法。
【請求項14】
前記グラフィックス処理ユニットを使用して、第1の色空間から前記ディスプレイデバイスによってサポートされる色空間である第2の色空間に、前記イントラ符号化されたフレームデータを変換することをさらに含むことを特徴とする請求項1の方法。
【請求項15】
前記グラフィックス処理ユニットを使用して、第1の色空間から前記ディスプレイデバイスによってサポートされる色空間である第2の色空間に、再構成された前記イメージデータを変換することをさらに含むことを特徴とする請求項1の方法。
【請求項16】
符号化されたビデオデータを受け取ること、
第1の処理装置を使用して、前記符号化されたビデオデータを伸張すること、および、
第2の処理装置を使用して、前記ビデオデータに関連して動き補償処理を実行することを含むことを特徴とする方法。
【請求項17】
前記第1の処理装置は中央処理装置として実装されることを特徴とする請求項16の方法。
【請求項18】
前記第1の処理装置はグラフィックス処理ユニットとして実装されることを特徴とする請求項16の方法。
【請求項19】
前記第2の処理装置は、ベクトルベースのグラフィックス処理演算を実行するように構成されたグラフィックス処理ユニットとして実装されることを特徴とする請求項16の方法。
【請求項20】
前記第2の処理装置は、ピクセルベースのグラフィックス処理演算を実行するように構成されたグラフィックス処理ユニットとして実装されることを特徴とする請求項16の方法。
【請求項21】
前記第2の処理装置を使用して、前記ビデオデータに関連して予測イメージ再構成を実行することをさらに含むことを特徴とする請求項16の方法。
【請求項22】
前記第2の処理装置を使用して、前記ビデオデータに関連して色空間変換を実行することをさらに含むことを特徴とする請求項16の方法。
【請求項23】
ビデオビットストリームを復号化することに関連して第1の演算を実行するように構成された中央処理装置と、
前記ビデオビットストリームを復号化することに関連して第2の演算を実行するように構成されたグラフィックス処理ユニットと
を備えることを特徴とするシステム。
【請求項24】
前記グラフィックス処理ユニットは、
ピクセルベースのグラフィックス処理演算を実行するように構成されたプログラマブルピクセルシェーダコンポーネントと、
頂点ベースのグラフィックス処理演算を実行するように構成されたプログラマブル頂点シェーダコンポーネントと
を備えることを特徴とする請求項23のシステム。
【請求項25】
前記第1の演算はビデオ伸張演算を含むことを特徴とする請求項23のシステム。
【請求項26】
前記第1の演算は、逆離散コサイン変換、逆量子化、および可変長復号化の少なくとも1つを含むことを特徴とする請求項23のシステム。
【請求項27】
前記第2の演算は色空間変換演算を含むことを特徴とする請求項23のシステム。
【請求項28】
前記第2の演算はイメージ再構成演算を含むことを特徴とする請求項23のシステム。
【請求項29】
前記第2の演算は動き補償演算を含むことを特徴とする請求項23のシステム。
【請求項30】
復号化されたビデオビットストリームデータを格納するためのバッファをさらに備えることを特徴とする請求項23のシステム。
【請求項31】
前記ビデオビットストリームを表示するように構成されたディスプレイデバイスをさらに備えることを特徴とする請求項23のシステム。
【請求項32】
符号化されたビデオビットストリームを復号化するための中央処理装置と、
前記ビデオビットストリームに関連して動き補償処理を実行するためのプログラマブル頂点シェーダと、
前記ビデオビットストリームに関連してイメージ再構成を実行するためのプログラマブルピクセルシェーダと
を備えることを特徴とするシステム。
【請求項33】
中央処理装置と、
グラフィックス処理ユニットと、
符号化されたビデオビットストリームを復号化することに関連して第1の演算を実行するよう前記中央処理装置を誘導し、前記符号化されたビデオビットストリームを復号化することに関連して第2の演算を実行するよう前記グラフィックス処理ユニットを導くように構成されたビデオ復号化アプリケーションと
を備えることを特徴とするシステム。
【請求項34】
前記第1の演算は、前記符号化されたビデオビットストリームのフレームを伸張することを含むことを特徴とする請求項33のシステム。
【請求項35】
前記第2の演算は、前記符号化されたビデオビットストリームのフレームに関連する動きベクトルを基準フレームデータに適用することを含むことを特徴とする請求項33のシステム。
【請求項36】
中央処理装置を利用してビデオ復号化プロセスの第1の部分を実行するための手段と、
グラフィックス処理ユニットを利用して前記ビデオ復号化プロセスの第2の部分を実行するための手段と
を備えることを特徴とするシステム。
【請求項37】
実行されると、中央処理装置を使用して、受け取られたビデオビットストリームを伸張し、グラフィックス処理ユニットを使用して、前記ビデオビットストリームに対して動き補償処理を実行するよう、コンピューティングシステムを導くコンピュータ実行可能命令を含むことを特徴とする1つまたは複数のコンピュータ可読媒体。
【請求項38】
実行されると、前記ビデオビットストリームの特定のフレームが、前記グラフィックス処理ユニットによって処理されることが可能な最大データサイズより大きい場合、前記フレームに関連するデータをパーティション分割して、前記最大データサイズよりそれぞれが小さい、重なり合うサブピクチャにするように前記中央処理装置を導くよう、コンピューティングシステムを導くコンピュータ実行可能命令をさらに含むことを特徴とする請求項37のコンピュータ可読媒体。
【請求項39】
実行されると、前記グラフィックス処理ユニットを使用してバイリニアフィルタを適用して、前記動き補償処理に関連して1/2ピクセル精度を実現するよう、コンピューティングシステムを導くコンピュータ実行可能命令をさらに含むことを特徴とする請求項37のコンピュータ可読媒体。
【請求項40】
実行されると、前記グラフィックス処理ユニットを使用してバイキュービックフィルタを適用して、前記動き補償処理に関連して1/4ピクセル精度を実現するよう、コンピューティングシステムを導くコンピュータ実行可能命令をさらに含むことを特徴とする請求項37のコンピュータ可読媒体。
【請求項41】
実行されると、前記グラフィックス処理ユニットを使用して、イメージ再構成を実行するよう、コンピューティングシステムを導くコンピュータ実行可能命令をさらに含むことを特徴とする請求項37のコンピュータ可読媒体。
【請求項42】
実行されると、Y成分、U成分、およびV成分を含むイメージを再構成して、前記Y成分、前記U成分、および前記V成分が、コンピュータシステムによってサポートされており、前記イメージの前記Y成分、前記U成分、および前記V成分を保持するだけ十分に大きい、最小の目標テクスチャ上に配置されるようにするよう、該コンピューティングシステムを導くコンピュータ実行可能命令をさらに含むことを特徴とする請求項41のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2007−525049(P2007−525049A)
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−508709(P2006−508709)
【出願日】平成16年2月9日(2004.2.9)
【国際出願番号】PCT/US2004/003811
【国際公開番号】WO2004/095708
【国際公開日】平成16年11月4日(2004.11.4)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】