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

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

Info

Publication number
JP4554600B2
JP4554600B2 JP2006508709A JP2006508709A JP4554600B2 JP 4554600 B2 JP4554600 B2 JP 4554600B2 JP 2006508709 A JP2006508709 A JP 2006508709A JP 2006508709 A JP2006508709 A JP 2006508709A JP 4554600 B2 JP4554600 B2 JP 4554600B2
Authority
JP
Japan
Prior art keywords
frame data
data
inter
processing unit
coded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006508709A
Other languages
English (en)
Other versions
JP2007525049A (ja
Inventor
グビン シェン
リファー チュ
リー シペン
ヤ−チン チャン
エフ.ラシッド リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007525049A publication Critical patent/JP2007525049A/ja
Application granted granted Critical
Publication of JP4554600B2 publication Critical patent/JP4554600B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Description

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

Claims (28)

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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,882 US7646817B2 (en) 2003-03-28 2003-03-28 Accelerating video decoding using a graphics processing unit
PCT/US2004/003811 WO2004095708A2 (en) 2003-03-28 2004-02-09 Accelerating video decoding using a graphics processing unit

Publications (2)

Publication Number Publication Date
JP2007525049A JP2007525049A (ja) 2007-08-30
JP4554600B2 true JP4554600B2 (ja) 2010-09-29

Family

ID=32989832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006508709A Expired - Fee Related JP4554600B2 (ja) 2003-03-28 2004-02-09 グラフィックス処理ユニットを使用してビデオ復号化を加速すること

Country Status (7)

Country Link
US (1) US7646817B2 (ja)
EP (1) EP1609244B1 (ja)
JP (1) JP4554600B2 (ja)
KR (1) KR100995171B1 (ja)
CN (1) CN100563327C (ja)
TW (1) TW200505236A (ja)
WO (1) WO2004095708A2 (ja)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792194B2 (en) * 2003-04-10 2010-09-07 Lefan Zhong MPEG artifacts post-processed filtering architecture
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US8660182B2 (en) * 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
GB0319697D0 (en) 2003-08-21 2003-09-24 Falanx Microsystems As Method of and apparatus for differential encoding and decoding
JP2005077501A (ja) * 2003-08-28 2005-03-24 Toshiba Corp 情報処理装置、表示制御用半導体装置およびビデオストリームデータの表示制御方法
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7593021B1 (en) * 2004-09-13 2009-09-22 Nvidia Corp. Optional color space conversion
US7446773B1 (en) 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US7466316B1 (en) 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7898545B1 (en) * 2004-12-14 2011-03-01 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors
TW200642450A (en) * 2005-01-13 2006-12-01 Silicon Optix Inc Method and system for rapid and smooth selection of digitally compressed video programs
US7312800B1 (en) * 2005-04-25 2007-12-25 Apple Inc. Color correction of digital video images using a programmable graphics processing unit
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
JP4779434B2 (ja) * 2005-05-17 2011-09-28 ソニー株式会社 動画像変換装置、動画像復元装置、および方法、並びにコンピュータ・プログラム
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
US8249140B2 (en) * 2005-12-30 2012-08-21 Intel Corporation Direct macroblock mode techniques for high performance hardware motion compensation
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
WO2007148355A1 (en) * 2006-06-22 2007-12-27 Stmicroelectronics S.R.L. A method and system for video decoding by means of a graphic pipeline, computer program product therefor
US7659897B1 (en) * 2006-06-30 2010-02-09 Nvidia Corporation System, method, and computer program product for video benchmarking
US8660380B2 (en) 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US7605825B1 (en) * 2006-10-24 2009-10-20 Adobe Systems, Incorporated Fast zoom-adaptable anti-aliasing of lines using a graphics processing unit
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
JP4691062B2 (ja) * 2007-03-30 2011-06-01 株式会社東芝 情報処理装置
US8756482B2 (en) 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US9118927B2 (en) 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8873625B2 (en) 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
US7843462B2 (en) * 2007-09-07 2010-11-30 Seiko Epson Corporation System and method for displaying a digital video sequence modified to compensate for perceived blur
US8121189B2 (en) * 2007-09-20 2012-02-21 Microsoft Corporation Video decoding using created reference pictures
US9177368B2 (en) * 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US9848209B2 (en) * 2008-04-02 2017-12-19 Microsoft Technology Licensing, Llc Adaptive error detection for MPEG-2 error concealment
TW200950527A (en) * 2008-05-16 2009-12-01 Asustek Comp Inc Method for processing video data stream
US8570441B2 (en) * 2008-06-11 2013-10-29 Microsoft Corporation One pass video processing and composition for high-definition video
US9788018B2 (en) * 2008-06-30 2017-10-10 Microsoft Technology Licensing, Llc Error concealment techniques in video decoding
US9924184B2 (en) * 2008-06-30 2018-03-20 Microsoft Technology Licensing, Llc Error detection, protection and recovery for video decoding
US20100065343A1 (en) * 2008-09-18 2010-03-18 Chien-Liang Liu Fingertip Touch Pen
US8225074B2 (en) * 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
US9131241B2 (en) * 2008-11-25 2015-09-08 Microsoft Technology Licensing, Llc Adjusting hardware acceleration for video playback based on error detection
EP2192780A1 (en) * 2008-11-28 2010-06-02 Thomson Licensing Method for video decoding supported by Graphics Processing Unit
US8666181B2 (en) 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
EP2359590A4 (en) 2008-12-15 2014-09-17 Ericsson Telefon Ab L M METHOD AND APPARATUS FOR AVOIDING QUALITY DETERIORATION OF TRANSMITTED MULTIMEDIA CONTENT
US8340510B2 (en) 2009-07-17 2012-12-25 Microsoft Corporation Implementing channel start and file seek for decoder
JP5139399B2 (ja) * 2009-10-21 2013-02-06 株式会社東芝 再生装置および再生装置の制御方法
US8984167B1 (en) * 2009-12-10 2015-03-17 Nvidia Corporation Real-time frame streaming from remote graphics processing unit
CN102164284A (zh) * 2010-02-24 2011-08-24 富士通株式会社 视频解码方法和系统
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
CN102625090B (zh) 2011-01-26 2015-08-05 鸿富锦精密工业(深圳)有限公司 影像译码方法与使用该方法的图形处理设备
US20120218292A1 (en) * 2011-02-10 2012-08-30 Ncomputing Inc. System and method for multistage optimized jpeg output
CA2840427C (en) 2011-06-30 2018-03-06 Microsoft Corporation Reducing latency in video encoding and decoding
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
CN102404576A (zh) * 2011-11-30 2012-04-04 国云科技股份有限公司 云终端解码器及其负载均衡算法和gpu的解码算法
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
US8934726B2 (en) 2011-12-19 2015-01-13 Dolby Laboratories Licensing Corporation Video codecs with integrated gamut management
US9661325B1 (en) * 2012-02-17 2017-05-23 Polycom, Inc. Lossy channel video blur avoidance
TW201346839A (zh) * 2012-05-04 2013-11-16 Chang Jung Christian University 基於動態補償之去移動模糊之方法
TWI482494B (zh) * 2012-07-09 2015-04-21 Wistron Corp 頻道資訊提示方法及系統以及電腦可讀取儲存媒體
TWI508041B (zh) * 2013-01-18 2015-11-11 Novatek Microelectronics Corp 時序控制電路、影像驅動裝置、影像顯示系統及顯示驅動方法
US20140320592A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Virtual Video Camera
US10440359B2 (en) * 2013-05-08 2019-10-08 Advanced Micro Devices, Inc. Hybrid video encoder apparatus and methods
EP3033876A4 (en) * 2013-08-12 2017-07-12 Intel Corporation Techniques for low power image compression and display
US9946331B2 (en) 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
CN104065997A (zh) * 2014-07-07 2014-09-24 四川金网通电子科技有限公司 机顶盒滚动字幕显示的方法及其系统
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
US10606651B2 (en) 2015-04-17 2020-03-31 Microsoft Technology Licensing, Llc Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10452995B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Machine learning classification on hardware accelerators with stacked memory
CN105516726B (zh) * 2015-11-27 2019-04-09 传线网络科技(上海)有限公司 视频编码的运动补偿匹配方法和系统
US10147226B1 (en) * 2016-03-08 2018-12-04 Pixelworks, Inc. 2D motion vectors from 3D model data
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
CN106210883A (zh) * 2016-08-11 2016-12-07 浙江大华技术股份有限公司 一种视频渲染的方法、设备
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
IT201700108177A1 (it) * 2017-09-27 2019-03-27 St Microelectronics Srl Procedimento e sistema di sicurezza funzionale, prodotto informatico corrispondente
IT201700108150A1 (it) 2017-09-27 2019-03-27 St Microelectronics Srl Procedimento e sistema di sicurezza funzionale, prodotto informatico corrispondente
EP3474548A1 (en) * 2017-10-18 2019-04-24 Axis AB Method and encoder for encoding a video stream in a video coding format supporting auxiliary frames
CN108366288A (zh) * 2018-03-01 2018-08-03 厦门普杰信息科技有限公司 一种用于高清视频的高效解码和播放方法及系统
US11301776B2 (en) * 2018-04-14 2022-04-12 International Business Machines Corporation Memory-based data selection scheme for machine learning training on limited memory resources
WO2019205172A1 (zh) * 2018-04-28 2019-10-31 华为技术有限公司 一种图像处理器的功率分配的方法、装置及系统
CN108881916A (zh) * 2018-06-21 2018-11-23 深圳市斯迈龙科技有限公司 远程桌面的视频优化处理方法及装置
CN109005160A (zh) * 2018-07-10 2018-12-14 广州虎牙信息科技有限公司 视频解码方法、装置及计算机可读存储介质、终端
US11423588B2 (en) 2019-11-05 2022-08-23 Adobe Inc. Color transforms using static shaders compiled at initialization
CN111179149B (zh) * 2019-12-17 2022-03-08 Tcl华星光电技术有限公司 图像处理方法、装置、电子设备和计算机可读存储介质
CN111899148B (zh) * 2020-07-03 2023-11-28 Tcl华星光电技术有限公司 帧数据的处理方法及系统、存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10506492A (ja) * 1995-07-21 1998-06-23 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 高性能密度を有するマルチメディアプロセッサアーキテクチャ
US6226695B1 (en) * 1995-09-29 2001-05-01 International Business Machines Corporation Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors
US5818532A (en) 1996-05-03 1998-10-06 Lsi Logic Corporation Micro architecture of video core for MPEG-2 decoder
US6058142A (en) 1996-11-29 2000-05-02 Sony Corporation Image processing apparatus
CN1156171C (zh) * 1997-04-07 2004-06-30 松下电器产业株式会社 提高处理效率的图象声音处理装置
CN1206164A (zh) 1997-07-22 1999-01-27 北京算通科技发展有限公司 基于计算机显示卡的数字视频解码系统专用加速芯片
US6208350B1 (en) * 1997-11-04 2001-03-27 Philips Electronics North America Corporation Methods and apparatus for processing DVD video
US6411651B1 (en) 1998-06-26 2002-06-25 Compaq Information Technologies Group, L.P. Method and system for distributed video compression in personal computer architecture
US6275239B1 (en) * 1998-08-20 2001-08-14 Silicon Graphics, Inc. Media coprocessor with graphics video and audio tasks partitioned by time division multiplexing
GB2343579A (en) * 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6384833B1 (en) * 1999-08-10 2002-05-07 International Business Machines Corporation Method and parallelizing geometric processing in a graphics rendering pipeline
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6937245B1 (en) * 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7885336B2 (en) * 2001-02-05 2011-02-08 Ati Technologies Ulc Programmable shader-based motion compensation apparatus and method
US7219352B2 (en) * 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
US7184057B2 (en) * 2002-06-24 2007-02-27 Microsoft Corpoartion Systems and methods for providing color management
US7352359B2 (en) * 2002-07-27 2008-04-01 Sony Computer Entertainment America Inc. Method and system for applying gearing effects to inertial tracking
US7634668B2 (en) * 2002-08-22 2009-12-15 Nvidia Corporation Method and apparatus for adaptive power consumption
US6952211B1 (en) * 2002-11-08 2005-10-04 Matrox Graphics Inc. Motion compensation using shared resources of a graphics processor unit

Also Published As

Publication number Publication date
JP2007525049A (ja) 2007-08-30
EP1609244A4 (en) 2011-04-13
WO2004095708A2 (en) 2004-11-04
TW200505236A (en) 2005-02-01
KR100995171B1 (ko) 2010-11-17
EP1609244B1 (en) 2012-10-10
KR20050107522A (ko) 2005-11-11
CN100563327C (zh) 2009-11-25
US20040190617A1 (en) 2004-09-30
EP1609244A2 (en) 2005-12-28
CN1868211A (zh) 2006-11-22
WO2004095708A3 (en) 2006-06-01
US7646817B2 (en) 2010-01-12

Similar Documents

Publication Publication Date Title
JP4554600B2 (ja) グラフィックス処理ユニットを使用してビデオ復号化を加速すること
Shen et al. Accelerate video decoding with generic GPU
RU2251820C2 (ru) Экстраполяция вектора движения для перекодировки видеопоследовательности
US20180192074A1 (en) Video processing method for processing projection-based frame with 360-degree content represented by projection faces packed in 360-degree virtual reality projection layout
US11381835B2 (en) Systems and methods for game-generated motion vectors
US8275049B2 (en) Systems and methods of improved motion estimation using a graphics processing unit
US20140328400A1 (en) Content adaptive super resolution prediction generation for next generation video coding
US9319708B2 (en) Systems and methods of improved motion estimation using a graphics processing unit
WO2002085028A2 (en) Interpolation for motion compensation
US20200128271A1 (en) Method and system of multiple channel video coding with frame rate variation and cross-channel referencing
CA2192532C (en) Hybrid software/hardware video decoder for personal computer
JP2004336529A (ja) 動画データ処理装置及び方法並びにプログラム
US6539058B1 (en) Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
EP1147671B1 (en) Method and apparatus for performing motion compensation in a texture mapping engine
Shen et al. Accelerating video decoding using GPU
US9094686B2 (en) Systems and methods for faster throughput for compressed video data decoding

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100709

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100714

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees