(57)【要約】  ハードウェア多標準対応ビデオデコーダ装置。命令パーサはビデオストリームにアクセスし、ビデオストリームを符号化するために使用されたビデオ符号化標準を特定する。複数のハードウェア復号化ブロックがビデオストリームの復号化に関連する動作を実行し、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。【選択図】  図１
2009518960.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア多標準対応ビデオデコーダ装置を使用して実行される、復号化のための方法であって、
複数のビデオストリームのうちの１つである第１のビデオストリームにアクセスするステップと、
前記第１のビデオストリームを符号化するために使用された第１のビデオ標準を特定するステップと、
前記第１のビデオストリームを復号化するために使用される前記ハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックの第１のサブセットを決定するステップであり、前記複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である、前記決定するステップと、
ハードウェア復号化ブロックの前記第１のサブセットを使用して前記第１のビデオストリームを復号化するステップと
を含む、方法。
【請求項２】
前記第１のビデオストリームの復号化に関係のないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックの前記サブセットを作動するステップをさらに含む請求項１に記載の方法。
【請求項３】
前記複数のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される請求項１に記載の方法。
【請求項４】
前記多段階マクロブロックレベルパイプラインの１つの段階で前記第１のビデオストリームのデータが受信されない場合に前記段階の中のハードウェア復号化ブロックを停止するステップをさらに含む請求項３に記載の方法。
【請求項５】
前記第１のビデオストリームを復号化する前記ステップの後でメモリユニットにアクセスするステップをさらに含む請求項１に記載の方法。
【請求項６】
前記複数のビデオストリームにアクセスするステップと、
前記複数のビデオストリームのうちのビデオストリームに対して使用された第２のビデオ標準を特定するステップと、
前記複数のビデオストリームの一部をインターリーブするステップと、
前記複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックの複数のサブセットを決定するステップと、
ハードウェア復号化ブロックの前記複数のサブセットを使用して前記複数のビデオストリームを復号化するステップと
をさらに含む請求項１に記載の方法。
【請求項７】
前記複数のビデオストリームは、少なくとも１つのデジタル静止画像ストリーム、及びデジタルムービーストリームを含む請求項６に記載の方法。
【請求項８】
前記複数のビデオストリームの前記一部は、前記デジタル静止画像ストリーム及び前記デジタルムービーストリームのフレームである請求項７に記載の方法。
【請求項９】
前記複数のビデオストリームは、複数のデジタルムービーストリームを含む請求項６に記載の方法。
【請求項１０】
前記複数のビデオストリームの前記一部は、前記複数のデジタルムービーストリームのマクロブロックである請求項９に記載の方法。
【発明の詳細な説明】
【分野】
【０００１】
[001]本明細書で説明される技術分野はビデオ復号化に関する。より具体的には、本明細書は、ハードウェア多標準対応ビデオデコーダ装置に関する。
【背景】
【０００２】
[002]概して、デジタルビデオストリームは、多くの異なる符号化標準のうちの１つを使用して符号化される。例えば、デジタルビデオストリームは、より少ないビットしか必要としないデータ形式への変換のために圧縮されることができる。この圧縮は、元のビデオストリームが復号化のときに再現されることができるように可逆であることができるか、又は元のビデオストリームの正確な複製が再現されることができないが、圧縮データの復号化がより効率的であるように不可逆であることができる。
【０００３】
[003]現在、多くのビデオ符号化標準が存在し、新しい標準が頻繁に登場している。現在のビデオ符号化標準の例は、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）、ＭＰＥＧ−２、ＭＰＥＧ−３、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、並びにＲｅａｌ  Ｖｉｄｅｏ及びＷｉｎｄｏｗｓ  Ｍｅｄｉａなどの独自仕様の標準を含む。デジタルビデオの利益を十分に得るために、ユーザは、全ての一般的な符号化標準を復号化することができるデコーダにアクセスする必要がある。
【０００４】
[004]ビデオをストリーミングするための多くの重要な用途は、リアルタイム通信に関連する。例えば、テレビ電話は、そのテレビ電話が対応する音声信号と同期することができるようにリアルタイムのビデオ復号化を必要とする。したがって、リアルタイム通信に関連するアプリケーションを提供するためにユーザにリアルタイムビデオ復号化を提供することがやはり望ましい。さらに、ユーザが複数のビデオストリームの復号化を要求する状況が生じる。例えば、テレビ電話で現在通話中のユーザが、当該ユーザが話している人から添付画像を受信する。この例において、テレビ電話ストリームのリアルタイムの復号化が、会話に必要な画像が復号されながら維持されなければならない。
【０００５】
[005]現在、ビデオ復号化は、２つの利用可能な方法、すなわち、単一標準対応ハードウェアビデオデコーダと、１つ又は複数のビデオ標準に従ってビデオストリームを復号化することができるソフトウェアベースのプログラム可能なコアとのうちの１つを使用して実行される。単一標準対応ハードウェアビデオデコーダは、リアルタイムの復号化機能を提供することができる。しかし、特定の符号化標準を使用して符号化されたビデオストリームを復号化するために、ユーザは、その特定の標準用のハードウェアビデオデコーダを持っていなければならない。多数の広く使用されているビデオ符号化標準が存在するので、ユーザは、ユーザにかかる金銭的コストが大きい、異なるビデオ符号化標準を使用して符号化されたデジタルビデオにアクセスするための多くの異なる単一標準対応ハードウェアビデオデコーダを必要とする。さらに、典型的なコンピュータシステムは、多くの単一標準対応ハードウェアビデオデコーダを追加することができず、さらには、ユーザがアクセスすることができるビデオストリーム数を制限する。
【０００６】
[006]現在のソフトウェアベースのプログラム可能なコアビデオデコーダは、１つ又は複数のビデオ符号化標準を使用する符号化を提供するために利用できる。プログラム可能なコアビデオデコーダは、復号化機能を高速化するためのハードウェア高速化を含む可能性がある。しかし、プログラム可能なコアは全ての復号化を実行する。概して、プログラム可能なコアビデオデコーダは、大きな処理オーバヘッドを有し、効率が低く、単一標準対応ハードウェアビデオデコーダよりもずっと多くの電力を消費する。さらに、プログラム可能なコアビデオデコーダは、復号化がコンピュータシステム全体の処理要件に影響を受けるので、リアルタイムのビデオ復号化を常に提供し続けることはできない。
【０００７】
[007]したがって、現在利用可能なデジタルビデオデコーダは、多数の広く使用されているビデオ符号化標準のためのリアルタイムのビデオ復号化を提供することができない。加えて、現在利用可能なデジタルビデオデコーダは、多数の広く使用されているビデオ符号化標準を使用して符号化された複数のストリームに対するビデオ復号化を同時に提供することができない。さらに、現在利用可能なデジタルビデオデコーダは、少なくとも１つのビデオストリームがリアルタイムの復号化を必要とする複数のビデオストリームを同時に復号化することができない。したがって、必要とされているのは、従来技術に対する制限を克服する新しいデジタルビデオデコーダである。新しいデジタルビデオデコーダは、複数の異なるビデオ標準のためのリアルタイムのビデオ復号化機能を提供すべきである。また、新しいデジタルビデオデコーダは、複数の異なるビデオ標準を使用して符号化された複数のビデオストリームのためのビデオ復号化機能を同時に提供すべきである。
【概要】
【０００８】
[008]本発明の実施形態は、複数の異なるビデオ符号化標準のためのビデオ復号化機能を提供するためのハードウェア多標準対応ビデオデコーダ装置を提供する。本発明の実施形態は、複数のビデオ符号化標準のそれぞれに対してリアルタイムの復号化を提供することができる。
【０００９】
[009]一実施形態において、本発明は、ハードウェア多標準対応ビデオデコーダ装置を提供する。ハードウェア多標準対応ビデオデコーダ装置の命令パーサは、ビデオストリームにアクセスするように動作可能であり、ビデオストリームの符号化に使用されたビデオ符号化標準を特定するように動作可能である。ハードウェア多標準対応ビデオデコーダ装置は、ビデオストリームの復号化に関連する動作を実行するための複数のハードウェア復号化ブロックも含み、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、プリント回路基板に結合された集積回路内に実装され、プリント回路基板は、当該プリント回路基板をコンピュータシステムに取り外し可能に結合するためのコネクタに結合される。
【００１０】
[010]一実施形態において、命令パーサは、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、ビデオストリームを符号化するために使用された第１の特定されたビデオ符号化標準を復号化するために使用される複数のハードウェア復号化ブロックの第１のサブセットを作動するように動作可能である。一実施形態において、命令パーサは、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、ビデオストリームを符号化するために使用された第２の特定されたビデオ符号化標準を復号化するために使用される複数のハードウェア復号化ブロックの第２のサブセットを作動するように動作可能である。
【００１１】
[011]一実施形態において、複数のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される。一実施形態において、命令パーサは、多段階マクロブロックレベルパイプラインの１つの段階でビデオストリームのデータが受信されない場合にその段階の中のハードウェア復号化ブロックを停止するように動作可能である。一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、ビデオストリームを完全に復号化した後でメモリユニットにアクセスする。
【００１２】
[012]一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロックをさらに含む。一実施形態において、命令パーサは、ハードウェア後処理ブロックが復号化されたビデオストリームに対して後処理動作を実行するように、命令パーサにおいて受信されたビデオストリームが復号化されたビデオストリームである場合に複数のハードウェア復号化ブロックを停止するように動作可能である。一実施形態において、ハードウェア後処理ブロックはフィルタを含む。
【００１３】
[013]別の実施形態において、本発明はビデオストリームを復号化するための方法を提供し、方法はハードウェア多標準対応ビデオデコーダ装置を使用して実行される。ビデオストリームがアクセスされる。ビデオストリームを符号化するために使用されたビデオ標準が特定される。ビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定され、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。
【００１４】
[014]一実施形態において、複数のレジスタが、メモリサーフェスポインタレジスタ及びフレームレベルパラメータレジスタを含む。一実施形態において、ハードウェア多ストリーム多標準対応ビデオデコーダ装置は、少なくとも１つの復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロックをさらに含む。
【００１５】
[015]一実施形態において、複数のビデオストリームは、少なくとも１つのデジタル静止画像ストリーム、及びデジタルムービーストリームを含む。この実施形態において、複数のビデオストリームの一部は、デジタル静止画像ストリーム及びデジタルムービーストリームのマクロブロックである。別の実施形態において、複数のビデオストリームは、複数のデジタルムービーストリームを含む。この実施形態において、複数のビデオストリームの一部は、複数のデジタルムービーストリームのマクロブロックである。
【００１６】
[016]別の実施形態において、本発明は複数のビデオストリームを復号化するための方法を提供し、方法はハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。複数のビデオストリームがアクセスされる。ビデオストリームを符号化するために使用されたビデオ標準が特定される。ビデオストリームを復号化するために使用されるハードウェア多ストリーム多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定され、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。複数のビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。一実施形態において、前記複数のビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックの複数のサブセットが作動される。
【００１７】
概して、本明細書は、ハードウェア多標準対応ビデオデコーダ装置を開示する。命令パーサはビデオストリームにアクセスし、ビデオストリームを符号化するために使用されたビデオ符号化標準を特定する。複数のハードウェア復号化ブロックがビデオストリームの復号化に関連する動作を実行し、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。
【００１８】
[017]本発明が、同様の参照番号が同様の要素を参照する添付の図面の図において限定としてではなく例として示される。
【詳細な説明】
【００１９】
[030]ここで、本発明の好ましい実施形態に対する言及が詳細になされ、それらの実施形態の例が添付の図面に示される。本発明が好ましい実施形態に関連して説明されるが、これらの実施形態は本発明をこれらの実施形態に限定するように意図されていないことが理解されるであろう。むしろ、本発明は、添付の特許請求の範囲によって定義された本発明の精神及び範囲内に含まれ得る変更形態、修正形態、及び均等物を包含するように意図される。さらに、本発明の実施形態の以下の詳細な説明において、本発明の完全な理解を提供するために多くの具体的な詳細が説明される。しかし、本発明がこれらの具体的詳細なしに実施され得ることが当業者によって理解されるであろう。その他の場合、本発明の実施形態の態様を不必要に曖昧にしないように、よく知られている方法、プロシージャ、コンポーネント、及び回路は詳細に説明されていない。
【００２０】
表記及び用語
[031]以下に続く詳細な説明の一部は、プロシージャ、ステップ、論理ブロック、処理、及びコンピュータメモリ内のデータビットに対する操作のその他の記号的表現の観点で示される。これらの記述及び表現は、データ処理技術に精通した者によって、それらの者の業績の内容を当該技術に精通したその他の者に最も効果的に伝えるために使用される手段である。プロシージャ、コンピュータによって実行されるステップ、論理ブロック、プロセスなどは、ここで、及び概して、所望の結果をもたらす自己矛盾のない一連のステップ又は命令であると考えられる。ステップとは、物理量の物理的操作を必要とするステップである。必ずではないが通常は、これらの量は、記憶、転送、組合せ、比較、及びコンピュータシステムにおけるその他の操作を行われることができる電気的又は磁気的信号の形態を取る。これらの信号をビット、値、要素、シンボル、文字、語、数などと呼ぶことが、主に共通使用の理由で便利であることがあることが分かっている。
【００２１】
[032]しかし、これらの及び同様の用語の全ては適切な物理量に関連付けられるべきであり、これらの量に付される便宜的なラベルであるに過ぎないことに留意されたい。以下の検討から明らかなように、別途具体的に示されない限り、本発明の全体を通じて、「特定する」、又は「アクセスする」、又は「実行する」、又は「復号化する」、又は「作動する」、又は「停止する」、又は「決定する」、又は「処理する」、又は「受信する」、又は「バッファリングする」、又は「整列する」、又は「転送する」、又は「パースする」、又は「インターリーブする」、又は「回転する」、又は「再配置する」、又は「記憶する」などの用語を利用する検討は、コンピュータシステムのレジスタ及びメモリ内で物理（電子的）量として表されるデータを操作し、コンピュータシステムのメモリ、又はレジスタ、又はその他のそのような情報記憶、送信、若しくは表示装置内で同様に物理量として表されるその他のデータに変換するハードウェア多標準対応ビデオデコーダ装置（例えば、図３のハードウェア多標準対応ビデオデコーダ装置１５０）、ハードウェア多ストリーム多標準対応ビデオデコーダ装置（例えば、図６のハードウェア多ストリーム多標準対応ビデオデコーダ装置６００）、マイクロコードエンジン（例えば、図２Bのマイクロコードエンジン２６０）、回転エンジン（例えば、図４の回転エンジン４５０）、又は同様の電子的コンピューティングデバイスの動作及びプロセスに言及することが理解される。
【００２２】
コンピュータシステムプラットフォーム
[033]図１は、本発明の実施形態が実施されることができる例示的なコンピュータシステム１００を示す。概して、コンピュータシステム１００は、情報を伝達するためのバス１１０と、情報及び命令を処理するための、バス１１０に結合された処理装置１０１と、処理装置１０１のための情報及び命令を記憶するための、バス１１０に結合された、ランダムアクセスメモリ（ＲＡＭ）とも呼ばれる揮発性メモリ１０２と、処理装置１０１のための静的な情報及び命令を記憶するための、バス１１０に結合された、本明細書においては読み出し専用メモリ（ＲＯＭ）とも呼ばれる不揮発性メモリ１０３とを含む。
【００２３】
[034]一実施形態において、コンピュータシステム１００は、情報及び命令を記憶するための、バス１１０に結合された磁気又は光ディスク及びディスクドライブなどの任意的なデータ記憶装置１０４を含む。一実施形態において、コンピュータシステム１００は、コンピュータユーザに対して情報を表示するための、バス１１０に結合されたディスプレイ装置１０５などの任意的なユーザ出力装置、情報及び命令の選択を処理装置１０１に伝達するための、バス１１０に結合された英数字及びファンクションキーを含む英数字入力装置１０６などの任意的なユーザ入力装置、並びに／又はユーザ入力情報及び命令の選択を処理装置１０１に伝達するための、バス１１０に結合されたカーソル制御装置１０７などの任意的なユーザ入力装置を含む。さらに、任意的な入力／出力（Ｉ／Ｏ）装置１０８が、コンピュータシステム１００を例えばネットワークに結合するために使用される。
【００２４】
[035]一実施形態において、コンピュータシステム１００は、複数のビデオ符号化標準のうちの１つを使用して符号化されたビデオストリームを復号化するための、本明細書においてデコーダ装置１５０とも呼ばれるハードウェア多標準対応ビデオデコーダ装置１５０も含む。デコーダ装置１５０は、複数のビデオ符号化標準によって必要とされる復号化動作を実行するための複数のハードウェア復号化ブロックを含む。デコーダ装置１５０は、デジタル静止画像及びデジタルムービーを含む、ビデオ符号化標準の任意の組合せによるビデオを復号化するように構成されることができることを理解されたい。例えば、デコーダ装置１５０は、ＪＰＥＧ、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、及びＷｉｎｄｏｗｓ  Ｍｅｄｉａ（ＷＭＶ９／ＶＣ−１）形式のうちのいずれかを使用して符号化されたビデオを復号化するように構成されることができる。
【００２５】
[036]デコーダ装置１５０は、別個のコンポーネント、コネクタ（例えば、ＡＧＰスロット、ＰＣＩ−Ｅｘｐｒｅｓｓスロットなど）を介してコンピュータシステム１００に結合するように設計された別個のグラフィックスカード、（例えば、マザーボード上に直接取り付けられた）別個の集積回路ダイとして、又はコンピュータシステムのチップセットコンポーネントの集積回路ダイに含まれる統合されたデコーダ装置として実装されることができることを理解されたい。さらに、ローカルのグラフィックスメモリが、データ記憶のためにデコーダ装置１５０に含まれることができる。
【００２６】
[037]図２Ａは、本発明の一実施形態による、プリント回路基板上に実装された例示的なハードウェアビデオデコーダカード２００の図を示す。ハードウェアビデオデコーダカード２００は、プリント回路基板（ＰＣＢ）２１０、集積回路（ＩＣ）チップ２２０、データ配線２２５、及びコネクタ２３０を含む。ＩＣチップ２２０は、ハードウェア多標準対応ビデオデコーダ装置１５０を含む。コネクタ２３０は、コンピュータシステムのコネクタ（例えば、ＡＧＰスロット、ＰＣＩ−Ｅｘｐｒｅｓｓスロットなど）を介してコンピュータシステム（例えば、図１のコンピュータシステム１００）に結合するように構成される。データ配線２２５は、コンピュータシステムとＩＣチップ２２０の間でデータ（例えば、ビットストリーム）を伝達するためのものである。
【００２７】
[038]図２Ｂは、本発明の一実施形態による、ハードウェア多標準対応ビデオデコーダ装置１５０を含む例示的なアーキテクチャ２５０の図を示す。アーキテクチャ２５０は、マイクロコードエンジン２６０、ハードウェア多標準対応ビデオデコーダ装置１５０、及びメモリ２７０を含む。一実施形態において、マイクロコードエンジン２６０は、ハードウェア多標準対応ビデオデコーダ装置１５０の動作を制御する。マイクロコードエンジン２６０は、ハードウェア多標準対応ビデオデコーダ装置１５０が実行しなければならない動作を含み、機械命令とハードウェア装置デコーダ１５０の間の変換層として働く。一実施形態において、ビットストリームのパース及び可変長復号化（ＶＬＤ）が、マイクロコードエンジン２６０において行われる。メモリ２７０は、受信ビデオストリームに対する復号化及び後処理動作を実行するためにデコーダ装置１５０によって使用される。動作メモリ２７０の一実施形態が、図３のメモリ３３０に示される。
【００２８】
[039]図２Ｂを参照すると、一実施形態において、本発明は、マイクロコードエンジン２６０においてマクロブロックの並べ替えを行う。以下で説明されるように、デコーダ装置１５０は、（例えば、ループ内デブロッキングフィルタ４４０における）ループ内デブロッキング、並びに（例えば、ループ外フィルタ４４２における）ループ外デブロッキング及び／又はデリンギングなどの様々な後処理動作をサポートする。種々の実施形態において、ループ内デブロッキングは、マクロブロックがループ内デブロッキングフィルタにおいてラスタ走査順で受信されることを必要とする。しかし、Ｈ．２６４などの特定のビデオ標準は、非ラスタ走査順のマクロブロックの送信及び受信をサポートする。したがって、本発明は、非ラスタ走査順のマクロブロックの送信及び受信をサポートするビデオ標準のためのループ内デブロッキングをサポートするために、マクロブロックをラスタ走査順に整列することを提供する。
【００２９】
[040]一実施形態において、前処理動作が、マイクロコードエンジン２６０において実行される。一実施形態において、ビットストリームのパース及び可変長復号化（ＶＬＤ）が、マイクロコードエンジン２６０において行われる。マイクロコードエンジン２６０は、マクロブロックをハードウェアデコーダ装置１５０に送信する前にそれらのマクロブロックを整列するように構成される。マイクロコードエンジン２６０は、圧縮データの１フレームをバッファリングする。一実施形態において、マイクロコードエンジン２６０は、ランレングス符号化された圧縮データの１フレームをバッファリングする。一実施形態において、マイクロコードエンジン２６０は、受信ビットストリームをパースし、次にＶＬＤを実行する。マイクロコードエンジン２６０が順番が狂ったマクロブロックを検出する場合、そのマイクロコードエンジン２６０はデータをバッファし、全てのマクロブロックが受信されるのを待つ。次に、マイクロコードエンジン２６０は、マクロブロックをラスタ走査順に整列し、それらのマクロブロックをハードウェアデコーダ装置１５０に送信する。
【００３０】
[041]マクロブロックがマクロブロックをまだ圧縮データである間にバッファリングすることによって、マイクロコードエンジン２６０は、復号化されたビデオデータよりもずっと少ないランレングス符号化圧縮データの最大１フレームをバッファリングすることしか必要としない。さらに、圧縮マクロブロックのバッファリングは、電力も節約する。また、無線で受信されたビデオストリームは、多くのエラーを含みやすい。また、マイクロコードエンジン２６０に対するビットストリームのパースの分割は、エラー回復を改善する利点を有する。
【００３１】
ハードウェア多標準対応ビデオデコーダ装置のアーキテクチャ
[042]図３は、本発明の一実施形態によるハードウェア多標準対応ビデオデコーダ装置１５０の内部コンポーネントを示す図を示す。図３に示されるように、デコーダ装置１５０は、命令パーサ３０５、複数のハードウェア復号化ブロック３１０から３１８、ハードウェア後処理ブロック３２０、及びメモリ３３０を含む。デコーダ装置１５０は、複数のビデオ符号化標準を復号化するように動作可能である。
【００３２】
[043]命令パーサ３０５は、ビデオストリーム３０２（例えば、ビットストリーム）にアクセスするためのものである。ビデオストリーム３０２は、複数のビデオ符号化標準のうちの１つに従って符号化された圧縮ビデオストリームである。ビデオストリーム３０２は、（例えば、ＪＰＥＧで符号化された）デジタル静止画像データ、又は（例えば、ＭＰＥＧ−４）デジタルムービーデータを含む可能性があることを理解されたい。一実施形態において、ビデオストリーム３０２は、マイクロコードエンジン（例えば、図２Ｂのマイクロコードエンジン２６０）から受信される。命令パーサ３０５は、ビデオストリーム３０２を符号化するために使用されたビデオ符号化標準を特定する。一実施形態において、ビットストリームのパース及び可変長復号化（ＶＬＤ）が、命令パーサ３０５がビデオストリーム３０２にアクセスする前に実行される。ビットストリームのパース及びＶＬＤは、ホストＣＰＵ（例えば、図１の処理装置１０１）又はマイクロコードエンジン（例えば、図２Ｂのマイクロコードエンジン２６０）によって実行されることができる。また、命令パーサ３０５は、クロックサイクルを制御することによってデコーダ装置１５０を通じたデータの移動を制御する。
【００３３】
[044]複数のハードウェア復号化ブロック３１０から３１８は、前記ビデオストリームを復号化することに関連する動作を実行するためのものである。ハードウェア復号化ブロック３１０から３１８は、ビデオデコーダ１５０内に実装されたビデオ標準によるビデオストリームを復号化するために必要とされる異なる復号化機能を表すことを理解されたい。ＭＰＥＧ−４などのビデオ符号化標準は、全てのＭＰＥＧ−４デコーダがＭＰＥＧ−４ビデオストリームを復号化することができるように、ビデオストリームを復号化するために特定の動作が実行されることを必要とする。様々な標準に従って復号化を実行するために必要とされる動作は当業者によく知られていることを理解されたい。
【００３４】
[045]一実施形態において、デコーダ装置１５０のハードウェア復号化ブロックは、マクロブロックレベル（例えば、８×８画素マクロブロック）で動作を実行するように構成される。しかし、デコーダ装置１５０は、フレームレベルなどのその他の次元のレベルで動作を実行するハードウェア復号化ブロックを含むことができることを理解されたい。
【００３５】
[046]ハードウェア復号化ブロック３１０から３１８の異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。例えば、第１の例示的なビデオ標準は、ビデオストリームを復号化する際にハードウェア復号化ブロック３１２及び３１６を使用することを必要とする。第２の例示的なビデオ標準は、ビデオストリームを復号化する際にハードウェア復号化ブロック３１０、３１２、３１４、及び３１８を使用することを必要とする。したがって、本発明の種々の実施形態において、ビデオストリームを復号化するために必要とされるハードウェア復号化ブロックだけが、特定されたビデオ標準を使用して符号化されたビデオストリームの復号化に使用される。
【００３６】
[047]一実施形態において、命令パーサ３０５は、受信ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、前記ビデオストリームを復号化するために必要とされるハードウェア復号化ブロックだけを作動するように動作可能である。例えば、ビデオストリームの復号化に関係のないハードウェア復号化ブロック（例えば、ハードウェア復号化ブロック３１０、３１４、及び３１８）が作動されないように、第１の特定されたビデオ符号化標準を復号化するために使用されるハードウェア復号化ブロックの第１のサブセット（例えば、ハードウェア復号化ブロック３１２及び３１６）が作動される。別の例において、前記ビデオストリームの復号化に関係のないハードウェア復号化ブロック（例えば、ハードウェア復号化ブロック３１６）が作動されないように、第２の特定されたビデオ符号化標準を復号化するために使用される復号化ブロックの第２のサブセット（例えば、ハードウェア復号化ブロック３１０、３１２、３１４、及び３１８）が作動される。一実施形態において、命令パーサ３０５は、デコーダ装置１５０の唯一つのアクティブなコンポーネントである。ハードウェア復号化ブロックは、特定されたビデオ標準及びデータフローに従って必要に応じて作動される。
【００３７】
[048]一実施形態において、デコーダ装置１５０のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される。図３に示されるように、デコーダ装置１５０は、ハードウェア復号化ブロック３１０及び３１２を含むパイプラインの段階１と、ハードウェア復号化ブロック３１４、３１６、及び３１８を含むパイプラインの段階２とを含む３段階マクロブロックレベルパイプラインとして実装される。一実施形態において、命令パーサ３０５は、ビデオストリーム３０２のマクロブロックをパイプラインの段階１のハードウェア復号化ブロックに導く。一実施形態において、２つ以上のマクロブロックがパイプラインの段階１に存在する可能性がある一方、パイプラインの段階２及び３は１つのマクロブロックしか存在しないように制限される。一実施形態において、ハードウェア復号化ブロック３１２、３１６、及び３１８は残差データ経路内にあり、ハードウェア復号化ブロック３１０及び３１４は予測データ経路内にある。一実施形態において、残差データ経路は、エラー又は差分データを処理し、予測経路は、前のフレーム又はマクロブロックに関連するデータにアクセスする。
【００３８】
[049]一実施形態において、命令パーサ３０５は、多段階マクロブロックレベルパイプラインの１つの段階で前記ビデオストリームのデータが受信されない場合、その段階の中のハードウェア復号化ブロックを停止するように動作可能である。例えば、ビデオストリーム３０２の復号化において、ビデオストリーム３０２に関する最後のデータがパイプラインの段階１を出て、データがパイプラインの段階１で受信されないとき、パイプラインの段階１の全てのハードウェア復号化ブロックは停止される。したがって、たとえハードウェア復号化ブロックがビデオストリーム３０２に関連するビデオ標準のために必要とされるとしても、パイプラインの段階の全てのハードウェア復号化ブロックを停止することによってさらなる省電力が達成される。
【００３９】
[050]一実施形態において、ビデオストリーム３０２は、そのビデオストリーム３０２が完全に復号化されるまでメモリ３３０を出入りしない。メモリ３３０は、外部メモリユニット（例えば、図１の揮発性メモリ１０２若しくは不揮発性メモリ１０３）、又はデコーダ装置１５０の内蔵メモリユニットであってよいことを理解されたい。ビデオストリーム３０２を完全に復号化するまでメモリ３３０にアクセスしないことによって、デコーダ装置１５０はより少ない電力しか使用しない。
【００４０】
[051]一実施形態において、デコーダ装置１５０は、復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロック３２０をさらに含む。一実施形態において、ハードウェア後処理ブロック３２０はデブロッキングフィルタを含む。デブロッキングフィルタは、ループ内デブロッキングフィルタ、又はループ外デブロッキング及び／若しくはデリンギングフィルタであってよいことを理解されたい。ループ内デブロッキングフィルタは、メモリ３３０にアクセスする前にデブロッキング動作を実行する。ループ外デブロッキング及びデリンギングフィルタは、メモリ３３０からアクセスされるデータに対するデブロッキング及びデリンギング動作を実行する。しかし、ハードウェア後処理ブロック３２０は任意の種類の後処理動作を実行することができることを理解されたい。さらに、複数の後処理動作を実行するために任意の数のハードウェア後処理ブロック３２０が存在することができる。
【００４１】
[052]一実施形態において、命令パーサ３０５は、ハードウェア後処理ブロック３２０が復号化されたビデオストリームに対して後処理動作を実行するように、ビデオストリーム３０２が復号化されたビデオストリームである場合に全てのハードウェア復号化ブロックを停止するように動作可能である。換言すれば、デコーダ装置１５０は、ハードウェア後処理装置としてのみ使用されることもできる。復号化されたビデオストリームがデコーダ装置１５０で受信される場合、全てのハードウェア復号化ブロックが停止され、復号化されたビデオストリームに対する後処理動作。
【００４２】
[053]図４は、本発明の一実施形態による、デコーダ装置４００とも呼ばれる例示的なハードウェア多標準対応ビデオデコーダ装置４００の内部コンポーネントを示す構成図を示す。デコーダ装置４００は、ＪＰＥＧ、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、又はＷＭＶ９／ＶＣ−１デコーダのうちのいずれか１つとして動作するように構成される。したがって、デコーダ装置４００は、ＪＰＥＧ、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、又はＷＭＶ９／ＶＣ−１標準のうちのいずれか１つを使用して符号化されたビデオストリームを復号化するために必要な全ての復号化動作を実行するためのハードウェア復号化ブロックを含む。しかし、本発明はその他のビデオ標準を柔軟にサポートすること、及び本発明は図４に示された実施形態に限定されるように意図されていないことを理解されたい。
【００４３】
[054]図４に示されるように、デコーダ装置４００は、命令パーサ４０２、複数のハードウェア復号化ブロック、複数のハードウェア後処理ブロック、及びメモリ４６０を含む。命令パーサ４０２は、ビデオストリーム４０１（例えば、ビットストリーム）にアクセスするためのものである。ビデオストリーム４０１は、（例えば、ＪＰＥＧで符号化された）デジタル静止画像データ、又は（例えば、ＭＰＥＧ−４）デジタルムービーデータを含む可能性があることを理解されたい。一実施形態において、ビデオストリーム４０１は、マイクロコードエンジン（例えば、図２Ｂのマイクロコードエンジン２６０）から受信される。ビデオストリーム４０１は、複数のビデオ符号化標準のうちの１つに従って符号化された圧縮ビデオストリームである。命令パーサ４０２は、ビデオストリーム４０１を符号化するために使用されたビデオ符号化標準を特定する。一実施形態において、ビットストリームのパース及び可変長復号化（ＶＬＤ）が、命令パーサ４０２がビデオストリーム４０１にアクセスする前に実行される。ビットストリームのパース及びＶＬＤは、ホストＣＰＵ（例えば、図１の処理装置１０１）又はマイクロコードエンジンによって実行されることができる。ビデオストリーム４０１がデコーダ装置４００が復号化するように構成されるビデオ標準とは異なるビデオ標準を使用して符号化される場合、復号化動作は実行されないことに留意されたい。一実施形態において、命令パーサ４０２は、復号化が、サポートされていない標準を使用して符号化されたビデオストリームに対して実行されることができないことを示す指示をコンピュータシステムに送信する。
【００４４】
[055]ビデオストリーム４０１を符号化するために使用されたビデオ標準を特定すると、命令パーサ４０２は、ビデオストリーム４０１のマクロブロックを特定されたビデオ標準に対して適切なハードウェア復号化ブロックに導く。一実施形態において、命令パーサは、特定されたビデオ標準に必要とされないハードウェア復号化ブロックが停止されるように、特定されたビデオ標準に対して適切なハードウェア復号化ブロックを作動する。また、命令パーサ４０２は、クロックサイクルを制御することによってデコーダ装置４００を通じたデータの移動を制御する。一実施形態において、命令パーサ４０２は、デコーダ装置４００の唯一つのアクティブなコンポーネントである。ハードウェア復号化ブロックは、特定されたビデオ標準及びデータフローに従って必要に応じて作動される。
【００４５】
[056]デコーダ装置４００のハードウェア復号化ブロックは、イントラ予測モードエンジン４０４、動きベクトル（ＭＶ）予測エンジン４０６、係数（例えば、ランレングス（ＲＤ）又は逆量子化）エンジン４０８、ＡＣ／ＤＣ（例えば、ＡＣ／ＤＣ予測又は逆量子化）予測エンジン４１０、イントラ予測エンジン４１４、回転エンジン４１５、動き補償エンジン４１６、４×４逆変換エンジン４１８、８×８逆離散コサイン変換（ＩＤＣＴ）エンジン４２０、ＩＤＣＴ形式コンバータエンジン４２２、イントラ予測バッファ４３２、予測サンプル４３４、及び残差ブロック４３６を含む。デコーダ装置４００は、多重化装置４０５、４０９、４１７、４１９、４３９、及び加算器４３５をさらに含む。デコーダ装置４００は、ハードウェア後処理ブロック、すなわち、ループ内デブロッキングフィルタ４４０、ループ外フィルタ４４２、及び回転エンジン４５０も任意的に含む。
【００４６】
[057]デコーダ装置４００は、残差経路及び予測経路を有する３段階マクロブロックレベルパイプライン内に実装される。一実施形態において、２つ以上のマクロブロックがパイプラインの段階１に存在する可能性がある一方、パイプラインの段階２及び３は１つのマクロブロックしか存在しないように制限される。残差経路は、係数エンジン４０８、ＡＣ／ＤＣ予測エンジン４１０、４×４逆変換エンジン４１８、８×８ＩＤＣＴエンジン４２０、ＩＤＣＴ形式コンバータエンジン４２２、及び残差ブロック４３６を含む。予測経路は、イントラ予測モードエンジン４０４、ＭＶ予測エンジン４０６、イントラ予測エンジン４１４、回転エンジン４１５、動き補償エンジン４１６、イントラ予測バッファ４３２、及び予測サンプル４３４を含む。
【００４７】
[058]上述のように、デコーダ装置４００は、ＪＰＥＧ、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、又はＷＭＶ９／ＶＣ−１標準のうちのいずれかによるビデオストリームを復号化するように動作可能である。上述のハードウェア復号化ブロックは、サポートされる標準によって必要とされる全ての復号化動作を実行する。ハードウェア復号化ブロックの具体的動作は標準のそれぞれに記載されているので、それらの動作は当業者によく知られ、理解されている。したがって、ハードウェア復号化ブロックの具体的動作は、本明細書において詳細に説明されない。
【００４８】
[059]一実施形態において、ＭＶパラメータ及びイントラ予測パラメータが、予測経路においてＭＶ予測エンジン４０６及びイントラ予測モードエンジン４０４にそれぞれ渡される。これらのエンジンは、プログラムされたビデオ標準に基づいて実際の動きベクトル又はイントラ予測モードを計算し、それらを動き補償エンジン４１６又はイントラ予測エンジン４１４にそれぞれ渡す。動き補償エンジン４１６又はイントラ予測エンジン４１４は、予測データを計算する。一実施形態において、動き補償エンジン４１６は回転エンジン４１５を含む。回転エンジン４１５は、受信ビデオフレームと位置が合うように参照フレームを回転するためのものである。回転エンジン４１５は、動き補償エンジンがビデオストリームの復号化に使用される度に作動される。一方、エラーデータは、係数エンジン４０８、ＡＣ／ＤＣ予測エンジン４１０、４×４逆変換エンジン４１８、８×８ＩＤＣＴエンジン４２０、及びＩＤＣＴ形式コンバータエンジン４２２の必要なサブセットで処理される。
【００４９】
[060]回復されたエラーデータが予測データに加算され、それから、パイプラインの段階３にさらに渡される。結果として得られたデータは必要に応じてさらに処理され、表示されるためにメモリ４６０に書き込まれる。ループ内デブロッキングフィルタが、Ｈ２６４及びＷＭＶ９／ＶＣ−１モードで使用される。ＷＭＶ９／ＶＣ−１モードにおいて、ループ内デブロッキングフィルタ４４０は、重なり平滑化フィルタを実装するために使用される。ループ外フィルタ４４２が、復号画像の品質を向上するために任意のビデオストリームに対して使用されることができる。一実施形態において、ループ外フィルタ４４２は、デコーダ装置４００の残りの部分と同時に実行される。ループ外フィルタ４４２は、フレームがメモリ４６０に復号化された後で作動されるべきである。復号画像は、パイプラインの段階３においてメモリ４６０に書き込む前に回転エンジン４５０で回転されることもできる。
【００５０】
サポートされるビデオ標準に対するハードウェア多標準対応ビデオデコーダ装置の例示的な動作
[061]以下の実施形態は、サポートされるビデオ標準のそれぞれに対するデコーダ装置４００の動作を説明する。
【００５１】
[062]ＪＰＥＧ：ＪＰＥＧビデオストリームはデジタル静止画像を再現するためのものであるので、ＪＰＥＧ復号化は予測経路のハードウェア復号化ブロックを必要としない。したがって、イントラ予測モードエンジン４０４、ＭＶ予測エンジン４０６、イントラ予測エンジン４１４、回転エンジン４１５、動き補償エンジン４１６、イントラ予測バッファ４３２、及び予測サンプル４３４は、ＪＰＥＧの復号化に関して全て停止される。また、ＪＰＥＧ復号化は４×４逆変換エンジン４１８を必要とせず、したがって、４×４逆変換エンジン４１８は停止される。命令パーサ４０２は、係数エンジン４０８、ＡＣ／ＤＣ予測エンジン４１０、８×８ＩＤＣＴエンジン４２０、デシメーションＩＤＣＴエンジン４３８、ＩＤＣＴ形式コンバータエンジン４２２、及び残差ブロック４３６を作動する。命令パーサ４０２は、ＪＰＥＧで符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム４０１からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はＪＰＥＧ標準によって規定されることを理解されたい。
【００５２】
[063]ＪＰＥＧ復号化は、８×８ＩＤＣＴエンジン４２０及びデシメーションＩＤＣＴエンジン４３８のうちの一方を使用することだけを要求する。一実施形態において、命令パーサ４０２は、８×８ＩＤＣＴエンジン４２０及びデシメーションＩＤＣＴエンジン４３８のうちのいずれがビデオストリームのために作動されるかを特定するように動作可能である。８×８ＩＤＣＴエンジン４２０はビデオストリームを完全に復号化するために作動される一方、デシメーションＩＤＣＴエンジン４３８は、ビデオストリームがデシメーションを指示する場合に作動される。ＩＤＣＴ形式コンバータエンジン４２２は、形式変換を実行するように動作可能である。例えば、ＩＤＣＴ形式コンバータエンジン４２２は、以下のフォーマット、すなわち、ＹＵＶ４：４：４、ＹＵＶ４：２：２、ＹＵＶ４：２：２Ｒ、及びＹＵＶ４：２：０のうちの任意のものの間の形式変換を実行することができる。その他の形式変換が実行されることもできること、及びＩＤＣＴ形式コンバータエンジン４２２は列挙された形式に限定されないことを理解されたい。
【００５３】
[064]復号化されたＪＰＥＧビデオストリームはパイプラインの段階２を出る。一実施形態において、復号化されたＪＰＥＧビデオストリームはメモリ３３０に記憶される。別の実施形態において、メモリ３３０に記憶する前に、復号化されたＪＰＥＧビデオストリームに対して後処理動作が実行される。
【００５４】
[065]ＭＰＥＧ−４／Ｈ．２６３：ＭＰＥＧ−４及びＨ．２６３の復号化は、デコーダ装置４００の目的上、互いによく似ている。具体的には、ＭＰＥＧ−４標準は、ＭＰＥＧ−４デコーダが、Ｈ．２６３で符号化されたビデオストリームを復号化するように動作可能であることを要求する。ＭＰＥＧ−４及びＨ．２６３の復号化は、イントラ予測モードエンジン４０４、イントラ予測エンジン４１４、ＩＤＣＴ形式コンバータエンジン４２２、及び４×４逆変換エンジン４１８を必要とせず、それらは停止される。さらに、ループ内デブロッキングフィルタ４４０は、後処理動作のためにやはり停止される。したがって、命令パーサは、ＭＶ予測エンジン４０６、係数エンジン４０８、ＡＣ／ＤＣ予測エンジン４１０、回転エンジン４１５、動き補償エンジン４１６、８×８ＩＤＣＴエンジン４２０、イントラ予測バッファ４３２、予測サンプル４３４、及び残差ブロック４３６を作動する。命令パーサ４０２は、ＭＰＥＧ−４又はＨ．２６３で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム４０１からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はＭＰＥＧ−４及びＨ．２６３標準によって規定されることを理解されたい。
【００５５】
[066]命令パーサ４０２は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、イントラフレーム（Ｉ−フレーム）は、予測フレーム（Ｐ−フレーム）がパイプラインの段階１内のＭＶ予測エンジン４０６において処理されるのと同時に残差経路の係数エンジン４０８及びＡＣ／ＤＣ予測エンジン４１０において処理されることができる。Ｉ−フレーム及びＰ−フレームは、パイプラインの段階２において同期される。命令パーサ４０２は、８×８ＩＤＣＴエンジン４２０の適切なハードウェア復号化ブロックを作動するようにやはり動作可能である。
【００５６】
[067]復号化されたＭＰＥＧ−４／Ｈ．２６３ビデオストリームはパイプラインの段階２を出る。一実施形態において、復号化されたＭＰＥＧ−４／Ｈ．２６３ビデオストリームはメモリ３３０に記憶される。別の実施形態において、メモリ３３０に記憶する前に、復号化されたＭＰＥＧ−４／Ｈ．２６３ビデオストリームに対して後処理動作が実行される。別の実施形態において、復号化されたＭＰＥＧ−４／Ｈ．２６３ビデオストリームに対してループ外フィルタ４４２で後処理動作が実行される。一実施形態において、ループ外フィルタ４４２はデブロッキングフィルタである。別の実施形態において、ループ外フィルタ４４２はデリンギングフィルタである。別の実施形態において、ループ外フィルタ４４２は、デブロッキングフィルタ及びデリンギングフィルタの両方である。ループ外フィルタ４４２は、任意のデブロッキング及び／又はデリンギングフィルタとして実装されることができることを理解されたい。
【００５７】
[068]Ｈ．２６３＋：Ｈ．２６３＋の復号化は、上述のようなＭＰＥＧ−４／Ｈ．２６３の復号化に似ている。Ｈ．２６３＋は、復号化動作の一部を、命令パーサ４０２がビデオストリーム４０１にアクセスする前に実行されるＶＬＤに移管する。イントラ予測モードエンジン４０４、イントラ予測エンジン４１４、４×４逆変換エンジン４１８、及びループ外フィルタ４４２を必要とせず、したがってイントラ予測モードエンジン４０４、イントラ予測エンジン４１４、４×４逆変換エンジン４１８、及びループ外フィルタ４４２を停止することに加えて、命令パーサ４０２は、係数エンジン４０８及びＡＣ／ＤＣ予測エンジン４１０も停止する。その他の点では、Ｈ．２６３＋の復号化は、上述のようなＭＰＥＧ−４／Ｈ．２６３の復号化に似ている。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はＨ．２６３＋標準によって規定されることを理解されたい。
【００５８】
[069]Ｈ．２６４：Ｈ．２６４復号化は、ＡＣ／ＤＣ予測エンジン４１０、８×８ＩＤＣＴエンジン４２０、及びＩＤＣＴ形式コンバータエンジン４２２を必要とせず、それらは停止される。したがって、命令パーサ４０２は、イントラ予測モードエンジン４０４、ＭＶ予測エンジン４０６、係数エンジン４０８、イントラ予測エンジン４１４、回転エンジン４１５、動き補償エンジン４１６、４×４逆変換エンジン４１８、イントラ予測バッファ４３２、予測サンプル４３４、及び残差ブロック４３６を作動する。イントラ予測バッファ４３２は、マクロブロックの次の行を処理するときにイントラ予測エンジン４１４が前の「平準化」画素にアクセスすることができるように、前のマクロブロックからの画素の先頭行を記憶するように動作可能である。命令パーサ４０２は、Ｈ．２６４で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム４０１からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はＨ．２６４標準によって規定されることを理解されたい。
【００５９】
[070]命令パーサ４０２は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、フレームは、パイプラインの段階１内で、残差経路及び予測経路で同時に処理されることができる。フレームは、パイプラインの段階２において同期される。
【００６０】
[071]復号化されたＨ．２６４ビデオストリームはパイプラインの段階２を出る。一実施形態において、メモリ３３０に記憶する前に、復号化されたＨ．２６４ビデオストリームに対してループ内後処理動作が実行される。別の実施形態において、復号化されたＨ．２６４ビデオストリームに対してループ外フィルタ４４２でループ外後処理動作が実行される。ループ外フィルタ４４２は、任意のデブロッキングフィルタ及び／又はデリンギングフィルタとして実装されることができることを理解されたい。
【００６１】
[072]ＷＭＶ９／ＶＣ−１：ＷＭＶ９／ＶＣ−１の復号化は、イントラ予測モードエンジン４０４及びイントラ予測エンジン４１４を必要とせず、それらは停止される。したがって、命令パーサ４０２は、ＭＶ予測エンジン４０６、係数エンジン４０８、ＡＣ／ＤＣ予測エンジン４１０、回転エンジン４１５、動き補償エンジン４１６、４×４逆変換エンジン４１８、８×８ＩＤＣＴエンジン４２０、イントラ予測バッファ４３２、予測サンプル４３４、及び残差ブロック４３６を作動する。命令パーサ４０２は、ＷＭＶ９／ＶＣ−１で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム４０１からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はＷＭＶ９／ＶＣ−１標準によって規定されることを理解されたい。
【００６２】
[073]命令パーサ４０２は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、フレームは、パイプラインの段階１内で、残差経路及び予測経路で同時に処理されることができる。フレームは、パイプラインの段階２において同期される。
【００６３】
[074]復号化されたＷＭＶ９／ＶＣ−１ビデオストリームはパイプラインの段階２を出る。一実施形態において、メモリ３３０に記憶する前に、復号化されたＷＭＶ９／ＶＣ−１ビデオストリームに対してループ内後処理動作が実行される。一実施形態において、ループ内デブロッキングフィルタ４４０は、重なり平滑化フィルタを実装するために使用される。別の実施形態において、復号化されたＷＭＶ９／ＶＣ−１ビデオストリームに対してループ外フィルタ４４２で後処理動作が実行される。ループ外フィルタ４４２は、任意のデブロッキング及び／又はデリンギングフィルタとして実装されることができることを理解されたい。
【００６４】
後処理動作
[075]デコーダ装置４００のパイプラインの段階３は、３つのハードウェア後処理ブロック、すなわち、ループ内デブロッキングフィルタ４４０、ループ外フィルタ４４２、及び回転エンジン４５０を含む。ループ内デブロッキングフィルタ４４０は、Ｈ．２６４及びＷＭＶ９／ＶＣ−１モードで使用される。一実施形態において、ＷＭＶ９／ＶＣ−１モードで、ループ内デブロッキングフィルタ４４０は、重なり平滑化フィルタを実装するために使用される。
【００６５】
[076]ループ外フィルタ４４２は、復号画像の品質を向上するために任意のビデオストリームに対して使用されることができる。一実施形態において、ループ外フィルタ４４２は、デコーダ装置４００の残りの部分と同時に実行される。ループ外フィルタ４４２は、フレームがメモリ４６０に復号化された後で作動されるべきである。
【００６６】
[077]任意のデブロッキング及び／又はデリンギングフィルタがループ外フィルタ４４２のために使用されることができることを理解されたい。例えば、装置１５０で実装されることができるビデオ標準の多くを管理する組織である国際標準化機構（ＩＳＯ）は、標準化の刊行物にデブロッキングフィルタの提案を含むことが多い。例えば、ループ外フィルタ４４２は、ＩＳＯの刊行物ＩＳＯ／ＩＥＣ１４４９６−２：２００１、セクションＦ．３．１に記載のデブロッキングフィルタを含むことができる。
【００６７】
[078]復号画像は、パイプラインの段階３においてメモリ４６０に書き込む前に回転エンジン４５０で回転されることもできる。回転エンジン４５０は、オンザフライのマクロブロックの回転を提供するように構成され、個々のマクロブロックは、指示された回転の度合いに基づいて回転され、フレームの新しい位置に置かれる。回転エンジン４５０の動作の詳細な検討に関しては、以下の図１０Ａ、１０Ｂ、及び１１の検討を参照されたい。
【００６８】
ハードウェア多標準対応ビデオデコーダ装置を使用してビデオストリームを復号化するための方法
[079]図５は、ビデオストリームを復号化するための方法５００のフローチャートを示し、方法は、本発明の実施形態によるハードウェア多標準対応ビデオデコーダ装置を使用して実行される。具体的なステップが方法５００において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図５に記載のステップの変更形態を実行することによく適する。一実施形態において、方法５００は、図３のデコーダ装置１５０によって実行される。
【００６９】
[080]プロセス５００のステップ５１０において、ビデオストリームがアクセスされる。ステップ５２０において、ビデオストリームを符号化するために使用されたビデオ標準が特定される。ハードウェア多標準対応ビデオデコーダ装置は、複数のビデオ標準によるビデオストリームを復号化するように構成される。
【００７０】
[081]ステップ５３０において、ビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定される。複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。一実施形態において、ステップ５４０に示されるように、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックのサブセットが作動される。
【００７１】
[082]ステップ５５０において、ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。一実施形態において、ステップ５６０に示されるように、多段階マクロブロックレベルパイプラインの１つの段階でビデオストリームのデータが受信されない場合、その段階の中のハードウェア復号化ブロックが停止される。ステップ５４０及び５６０はさらなる省電力を提供し、任意的であることを理解されたい。
【００７２】
[083]ステップ５７０において、メモリユニットは、ビデオストリームを復号化した後でアクセスされる。一実施形態において、復号化されたビデオストリームは、表示のためにメモリに記憶される。一実施形態において、ステップ５８０に示されるように、復号化されたビデオストリームに対する後処理動作。後処理動作は、ステップ５７０が実行される前、又はステップ５７０が実行された後に実行されることができることを理解されたい。一実施形態において、復号化されたビデオストリームは回転される。別の実施形態において、ループ内デブロッキングフィルタが、復号化されたビデオストリームに適用される。回転及びループ内デブロッキングは、メモリユニットがアクセスされる前に実行される。一実施形態において、ループ外デブロッキング及びデリンギングフィルタが、メモリユニットがアクセスされた後に、復号化されたビデオストリームに適用される。
【００７３】
ハードウェア多標準対応ビデオデコーダ装置を使用した、異なるビデオ標準を使用して符号化された複数のストリームの復号化
[084]本発明のハードウェア多標準対応ビデオデコーダ装置の実施形態は、複数のビデオストリームを同時に復号化するようにも動作可能である。マクロブロック又はフレームなどのビデオストリームの一部はインターリーブされる。デコーダ装置は、インターリーブされた部分に順次アクセスする。したがって、デコーダ装置は、インターリーブされた部分に対して復号化動作を実行する。例えば、復号化動作は、２つのビデオストリームのマクロブロックに対して実行されることができる。ビデオストリームは、ビデオストリームのマクロブロックが交互に現れるようにインターリーブされる。各クロックサイクルで、復号化動作が、交互に現れるビデオストリームに対して実行されることができる。
【００７４】
[085]図６は、本発明の一実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置６００の内部コンポーネントを示す図を示す。図６に示されるように、デコーダ装置６００は、ビデオストリームインターリーバ６０５、命令パーサ３０５、複数のハードウェア復号化ブロック３１０から３１８、ハードウェア後処理ブロック３２０、メモリ３３０、レジスタセット６１０、及びレジスタセット６２０を含む。デコーダ装置６００は、複数のビデオ符号化標準を復号化するように動作可能であり、図３のデコーダ装置１５０と多くの点で同様に動作する。デコーダ装置６００は、レジスタセット６１０及び６２０がデコーダ装置６００が複数のビデオストリームを同時に復号化することを可能にするという点でデコーダ装置１５０と異なる。
【００７５】
[086]ビデオストリームインターリーバ６０５は、複数のビデオストリームにアクセスするように、及びビデオストリームの一部をインターリーブするように動作可能である。示されるように、ビデオストリームインターリーバ６０５は、ビデオストリーム６０１及び６０２にアクセスする。しかし、ビデオストリームインターリーバ６０５は、任意の数のビデオストリームを受信するように動作可能であり、図６に示された実施形態に限定されないことを理解されたい。一実施形態において、ビデオストリーム６０１及び６０２は、マイクロコードエンジン（例えば、図２Ｂのマイクロコードエンジン２６０）から受信される。
【００７６】
[087]図７Ａ及び７Ｂは、本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図を示す。図７Ａを参照すると、２つのインターリーブされたビデオストリームが示され、１つのストリームは静止画像ビデオストリーム（例えば、ＪＰＥＧ）であり、もう一方のストリームはデジタルムービーストリーム（例えば、ＭＰＥＧ−４）である。示されるように、ビデオストリームが１つのデジタルムービーストリームしか含まない場合、ビデオストリームはマクロブロックレベルでインターリーブされることができる。具体的には、静止画像マクロブロック７０４及び７０８は、各ビデオストリームからのマクロブロックがインターリーブされたストリーム７００内に交互に現れるようにデジタルムービーのマクロブロック７０２及び７０６とインターリーブされる。ビデオストリームがマクロブロックレベルでインターリーブされる場合、デコーダ装置６００のソフトウェアドライバは、インターリーブされたビデオストリームの復号化を管理するためにマクロブロックデータをシステムメモリ内にバッファリングする。
【００７７】
[088]図７Ｂを参照すると、２つのインターリーブされたビデオストリームが示され、両方のストリームともデジタルムービーストリームである。示されるように、ビデオストリームが複数のデジタルムービーストリームを含む場合、ビデオストリームはフレームレベルでインターリーブされる。具体的には、第１のデジタルムービーのフレーム７５２及び７５６は、各ビデオストリームからのフレームがインターリーブされたストリーム７５０内に交互に現れるように第２のデジタルムービーのフレーム７５４及び７５８とインターリーブされる。ビデオストリームがフレームレベルでインターリーブされる場合、デコーダ装置６００のソフトウェアドライバは、インターリーブされたビデオストリームの復号化を管理するためにフレームデータをシステムメモリ内にバッファリングする。
【００７８】
[089]図６を参照すると、命令パーサ３０５、ハードウェア復号化ブロック３１０から３１８、ハードウェア後処理ブロック３２０、及びメモリ３３０が、図３に示されるように動作する。残差データ及びその他のデコーダパラメータが、命令パーサ３０５を通じてデコーダ装置に渡される。命令パーサ３０５からのデータは、残差経路（ハードウェア復号化ブロック３１２、３１６、及び３１８）、又は予測経路（ハードウェア復号化ブロック３１０及び３１４）のいずれかにルーティングされる。残差経路は、エラー又は差分データを処理する一方、予測経路は、前のフレーム又は前のマクロブロックデータを準備／取得する。
【００７９】
[090]インターリーブされたビデオストリームの復号化を管理するために、２つのレジスタセット６１０及び６２０は、パイプラインの段階１において維持される。一実施形態において、レジスタセット６１０及び６２０は、メモリサーフェスポインタ６１２及び６２２をそれぞれ記憶し、フレームレベルパラメータ６１４及び６２４をそれぞれ記憶する。レジスタセットのそれぞれは、ビデオストリームのうちの１つに関連するパラメータを記憶するために使用される。例えば、レジスタセット６１０は、ビデオストリーム６０１に関連するパラメータを記憶するために使用され、レジスタセット６２０は、ビデオストリーム６０２に関連するパラメータを記憶するために使用される。パイプラインの段階１において１つのビデオストリームの一部のいずれかが処理されると、適切なパラメータが、残差又は予測データと共にダウンストリームパイプラインの段階２及び３にパケットの形態で渡される。復号化されたデータは、マクロブロックが静止画像の形式であるか、それともデジタルムービーの形式であるかに基づいてメモリ内の適切な領域にルーティングされる。デコーダ装置６００は、復号化されるべき各ストリームが関連するレジスタセットを有するように適切な数のレジスタセットを追加することによって任意の数のビデオストリームを復号化するように構成されることができる。
【００８０】
[091]図８は、複数のビデオストリームを復号化するための方法８００のフローチャートを示し、方法は、本発明の実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。具体的なステップが方法８００において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図８に記載のステップの変更形態を実行することによく適する。一実施形態において、方法８００は、図６のデコーダ装置６００によって実行される。
【００８１】
[092]プロセス８００のステップ８１０において、複数のビデオストリームがアクセスされる。ステップ８２０において、ビデオストリームを符号化するために使用されたビデオ標準が特定される。ハードウェア多ストリーム多標準対応ビデオデコーダ装置は、複数のビデオ標準によるビデオストリームを復号化するように構成される。ステップ８３０において、ビデオストリームの一部がインターリーブされる。一実施形態において、ビデオストリームが１つのデジタルムービーストリームしか含まない場合、ビデオストリームのマクロブロックがインターリーブされる。別の実施形態において、ビデオストリームが複数のデジタルムービーストリームを含む場合、ビデオストリームのフレームがインターリーブされる。ステップ８２０及び８３０は任意の順番で実行されることができることを理解されたい。
【００８２】
[093]ステップ８４０において、複数のビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定される。複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。一実施形態において、ステップ８５０に示されるように、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックのサブセットが作動される。
【００８３】
[094]ステップ８６０において、ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。ステップ８７０において、メモリユニットは、ビデオストリームを復号化した後でアクセスされる。一実施形態において、復号化されたビデオストリームは、表示のためにメモリに記憶される。一実施形態において、ステップ８８０に示されるように、少なくとも１つの復号化されたビデオストリームに対する後処理動作。後処理動作は、ステップ８７０が実行される前、又はステップ８７０が実行された後に実行されることができることを理解されたい。一実施形態において、復号化されたビデオストリームは回転される。別の実施形態において、ループ内デブロッキングフィルタが、復号化されたビデオストリームに適用される。回転及びループ内デブロッキングは、メモリユニットがアクセスされる前に実行される。一実施形態において、ループ外デブロッキング及びデリンギングフィルタが、メモリユニットがアクセスされた後に、復号化されたビデオストリームに適用される。
【００８４】
ビデオストリームの順番が狂ったマクロブロックの処理
[095]図２Ｂを参照すると、一実施形態において、本発明は、マイクロコードエンジン２６０においてマクロブロックのバッファリング及び並べ替えを行う。本発明は、非ラスタ走査順のマクロブロックの送信及び受信をサポートするビデオ標準のためのループ内デブロッキングをサポートするために、マクロブロックをラスタ走査順に整列することを提供する。マイクロコードエンジン２６０は、ビデオストリームのフレームのマクロブロックを表す圧縮データを受信するように構成される。一実施形態において、少なくとも１つのマクロブロックが順番が狂って受信される。マイクロコードエンジン２６０は、圧縮データをバッファリングするように構成され、フレームのマクロブロックをラスタ走査順に整列するように構成される。
【００８５】
[096]図９は、本発明の実施形態による、ビデオストリームの順番が狂ったマクロブロックを処理するための方法９００のフローチャートを示す。具体的なステップが方法９００において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図９に記載のステップの変更形態を実行することによく適する。一実施形態において、方法９００は、図２Ｂのマイクロコードエンジン２６０によって実行される。
【００８６】
[097]方法９００のステップ９１０において、ビデオストリームのフレームのマクロブロックを表す圧縮データが受信され、少なくとも１つのマクロブロックが順番が狂って受信される。ステップ９２０において、圧縮データがバッファリングされる。一実施形態において、圧縮データは、マイクロコードエンジン２６０のバッファにバッファリングされる。ステップ９３０において、ビデオストリームがパースされ、ＶＬＤがビデオストリームに対して実行される。ステップ９３０は任意的であること、及びビデオストリームのパース及びＶＬＤはハードウェアデコーダ装置によって実行されることができることを理解されたい。ステップ９３０において、その他の又はさらなる前処理動作がビデオストリームに対して実行されることができることをさらに理解されたい。
【００８７】
[098]ステップ９３５において、ビデオストリームがループ内デブロッキングを必要とするかどうかが判定される。一実施形態において、圧縮データは、ループ内デブロッキングがビデオストリームに対して実行されるべきであるかどうかの指示を含む。ループ内デブロッキングが必要とされる場合、ステップ９４０に示されるように、フレームのマクロブロックがラスタ走査順に整列される。一実施形態において、フレームの全てのマクロブロックは、マクロブロックがラスタ走査順に整列される前にバッファリングされる。次に、方法９００はステップ９５０に進む。或いは、ループ内デブロッキングが必要とされない場合、方法９００はステップ９５０に直接進む。
【００８８】
[099]ステップ９５０において、ビデオストリームが復号化される。一実施形態において、マクロブロックは、ラスタ走査順で復号化される。一実施形態において、ビデオストリームは、ハードウェア多標準対応ビデオデコーダ装置（例えば、図３のデコーダ装置１５０又は図４のデコーダ装置４００）によって復号化される。一実施形態において、ビデオストリームは、図５の方法５００に従って復号化される。
【００８９】
[0100]ステップ９６０において、マクロブロックレベルのループ内デブロッキングが、復号化されたマクロブロックに対して実行される。ステップ９７０において、メモリユニットがアクセスされる。一実施形態において、デブロッキング及び復号化されたビデオストリームが、表示のためにメモリに記憶される。
【００９０】
[0101]ステップ９８０において、フレームレベルのループ外後処理が、復号化されたフレームに対して実行される。一実施形態において、ループ外後処理は、デブロッキング及びデリンギング動作を含む。ステップ９８０は任意的であることを理解されたい。次に、方法９００はステップ９７０に戻り、メモリユニットがアクセスされる。一実施形態において、デブロッキングされ、デリンギングされ、復号化されたビデオストリームが、表示のためにメモリに記憶される。
【００９１】
[0102]マクロブロックがまだ圧縮データである間にマクロブロックをバッファリングすることによって、マイクロコードエンジン２６０は、復号化されたビデオデータよりもずっと少ないランレングス符号化された圧縮データの最大１フレームをバッファリングすることしか必要としない。さらに、圧縮マクロブロックのバッファは、電力も節約する。また、無線で受信されたビデオストリームは、多くのエラーを含みやすい。また、マイクロコードエンジン２６０に対するビットストリームのパースの分割は、エラー回復を改善する利点を有する。
【００９２】
ビデオストリームのマクロブロックのオンザフライでの回転
[0103]本発明の実施形態は、ビデオストリームがメモリに書き込まれる前に、ビデオストリームを「オンザフライで」回転するための回転エンジンを提供する。本発明の実施形態は、ビデオストリームが受信されるときにそれらのビデオストリームのマクロブロックを回転し、回転に基づいてフレーム内でマクロブロックを再配置することによってビデオストリームを回転することができる。本発明の実施形態は、復号化されたマクロブロックをメモリに書き込む前にマクロブロックに対して動作することによって、復号化されたフレームにおいてセカンドパス（ｓｅｃｏｎｄ  ｐａｓｓ）を必要とせずにビデオストリームを回転することができる。
【００９３】
[0104]一実施形態において、本発明は、回転の度合いに従ってビデオストリームのフレームのマクロブロックを回転するように、及びマクロブロックをフレーム内の新しい位置に再配置するように構成された回転エンジンを提供し、新しい位置は回転の度合いに基づく。一実施形態において、ビデオデコーダ装置は、表示のためにマクロブロックを記憶するためのメモリをさらに含む。一実施形態において、回転エンジンは、メモリにアクセスする前に、マクロブロックを回転し、マクロブロックをフレーム内で再配置するように構成される。
【００９４】
[0105]図１０Ａ及び１０Ｂは、本発明の実施形態による、フレームのマクロブロックの例示的な回転の図を示す。図１０Ａ及び１０Ｂは図４の回転エンジン４５０の動作を示すが、示された実施形態は、任意の種類のビデオデコーダ装置内に実装されることができ、図４のハードウェア多標準対応ビデオデコーダ装置４００の使用に限定されないことを理解されたい。例えば、回転エンジンは、単一標準対応ハードウェアデコーダ又はソフトウェアデコーダ内に含まれることができる。
【００９５】
[0106]図１０Ａを参照すると、図１０００が、図４の回転エンジン４５０を使用したフレーム１０１０の回転を示す。フレーム１０１０は、多くのマクロブロックを含む。マクロブロック１０１２が、回転エンジン４５０において受信された第１のマクロブロックとして示される。一実施形態において、マクロブロックは、マクロブロック１０１２が左上のマクロブロックであるようにマクロブロック１０１２が第１の受信マクロブロックであるラスタ走査順に受信される。
【００９６】
[0107]回転エンジン４５０は、マクロブロック１０１２を回転し、マクロブロック１０１２をフレーム１０１０内の新しい位置に再配置するように構成される。回転及び再配置は、ビデオストリームに関連する回転の度合いに基づく。回転の度合いは、ビデオストリームがどのように回転されるべきかを示す。例えば、回転の度合いは、時計回りに９０度、反時計回りに９０度、１８０度、又は任意のその他の回転の度合いであってよい。
【００９７】
[0108]図１０００は、時計回りに９０度の回転の度合いを使用した回転エンジン４５０の動作を示す。マクロブロック１０１２は、時計回りに９０度回転される。回転エンジン４５０は、回転されたフレーム１０２０内のマクロブロック１０２２として示される回転されたマクロブロック１０１２が、フレーム１０２０の全てのその他のマクロブロックに対して相対的に同じ位置にあるようにマクロブロック１０１２をやはり再配置する。
【００９８】
[0109]本発明の実施形態は、マクロブロックが順番が狂って受信されるマクロブロックレベルでのフレームの回転も提供する。図１０Ｂを参照すると、図１０５０が、図４の回転エンジン４５０を使用したフレーム１０６０の回転を示す。マクロブロック１０６２が、回転エンジン４５０において受信された第１のマクロブロックとして示される。この実施形態において、マクロブロックは、マクロブロック１０６２が第１の受信マクロブロックであるが、左上のマクロブロックではないようにラスタ走査順でない順番で受信される。
【００９９】
[0110]回転エンジン４５０は、マクロブロック１０６２を回転し、マクロブロック１０６２をフレーム１０６０内の新しい位置に再配置するように構成される。図１０５０は、時計回りに９０度の回転の度合いを使用した回転エンジン４５０の動作を示す。マクロブロック１０６２は、時計回りに９０度回転される。回転エンジン４５０は、回転されたフレーム１０７０内のマクロブロック１０７２として示される回転されたマクロブロック１０６２が、フレーム１０７０の全てのその他のマクロブロックに対して相対的に同じ位置にあるようにマクロブロック１０６２をやはり再配置する。
【０１００】
[0111]図１１は、本発明の実施形態による、フレームのマクロブロックを回転するための方法１１００のフローチャートを示す。具体的なステップが方法１１００において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図１１に記載のステップの変更形態を実行することによく適する。一実施形態において、方法１１００は、図４のマイクロコードエンジン４５０によって実行される。
【０１０１】
[0112]ステップ１１１０において、ビデオストリームが復号化される。一実施形態において、ビデオストリームは、ハードウェア多標準対応ビデオデコーダ装置（例えば、図３のデコーダ装置１５０又は図４のデコーダ装置４００）によって復号化される。一実施形態において、ビデオストリームは、図５の方法５００に従って復号化される。ステップ１１１０は任意的であること、及びビデオストリームは処理の前に既に復号化されていることを理解されたい。
【０１０２】
[0113]ステップ１１２０において、ビデオストリームに対する回転の度合いがアクセスされる。一実施形態において、回転の度合いは、時計回りに９０度、反時計回りに９０度、及び１８０度のうちの１つである。しかし、任意の回転の度合いが使用されてよいことを理解されたい。ステップ１１３０において、ビデオストリームのマクロブロックがアクセスされる。
【０１０３】
[0114]ステップ１１４０において、マクロブロックは、回転の度合いに従って回転される。ステップ１１５０において、マクロブロックはフレーム内の新しい位置に再配置され、新しい位置は回転の度合いに基づく。マクロブロックは、当該マクロブロックが、いったん回転されたときにフレームの全てのその他のマクロブロックに対して同じ相対的位置にあるように再配置されることを理解されたい。一実施形態において、マクロブロックの回転と、マクロブロックの再配置とは、メモリにアクセスする前に実行される。
【０１０４】
[0115]ステップ１１６０において、マクロブロックは、表示のためにメモリ内に記憶される。一実施形態において、ステップ１１７０に示されるように、デブロッキング動作が、復号化されたマクロブロックに対して実行される。ステップ１１７０は任意的であることを理解されたい。さらに、ステップ１１７０は、ループ内デブロッキング、又はループ外デブロッキング及びデリンギングを実行することを含むことができることを理解されたい。
【０１０５】
[0116]このように、本発明の実施形態は、複数のビデオ標準によるビデオストリームのハードウェアベースの復号化をサポートする新しいハードウェア多標準対応ビデオデコーダ装置のアーキテクチャを提供する。本発明の実施形態は、複数のビデオ符号化標準のそれぞれに対してリアルタイムの復号化を提供することができる。本発明の実施形態は、復号化されたビデオストリームに対する後処理動作を提供する。本発明の一実施形態は、ＪＰＥＧ、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６３＋、Ｈ．２６４、及びＷＭＶ９／ＶＣ−１ビデオ標準のうちのいずれかを使用したビデオストリームに対するビデオ復号化を提供するハードウェアデコーダ装置を提供する。
【０１０６】
[0117]本発明の実施形態は、複数の異なるビデオ符号化標準のためのビデオ復号化機能を同時に提供するためのハードウェア多ストリーム多標準対応ビデオデコーダ装置を提供する。本発明の実施形態は、複数のインターリーブされたビデオストリームを同時に復号化することができる。
【０１０７】
[0118]本発明の実施形態は、マクロブロックをラスタ走査順に整列するための追加的なメモリを要求することなしにビデオストリームのループ内デブロッキングを提供するためのビデオデコーダアーキテクチャを提供する。本発明の実施形態は、マイクロコードエンジンにおいてビデオストリームのマクロブロックを整列することができる。本発明の実施形態は、複数のサポートされるビデオ標準のうちの１つを使用して符号化されたビデオストリームに対する復号化並びにループ外デブロッキング及び／又はデリンギングを提供することができる。
【０１０８】
[0119]本発明の実施形態は、ビデオストリームがメモリに書き込まれる前に、ビデオストリームを「オンザフライで」回転するための回転エンジンを提供する。本発明の実施形態は、ビデオストリームが受信されるときにそれらのビデオストリームのマクロブロックを回転し、回転に基づいてフレーム内でマクロブロックを再配置することによってビデオストリームを回転することができる。本発明の実施形態は、復号化されたマクロブロックをメモリに書き込む前にマクロブロックに対して動作することによって、復号化されたフレームにおいてセカンドパスを必要とせずにビデオストリームを回転することができる。
【０１０９】
[0120]本発明の特定の実施形態の上述の説明は、例示及び説明の目的で示された。それらの実施形態は、網羅的であるように、又は本発明を開示された厳密な形態に限定するように意図されておらず、多くの修正形態及び変形形態が上述の教示を踏まえて可能である。実施形態は、本発明の原理、及びその実際的な応用を最もよく説明して、それによって当業者が本発明及び種々の実施形態を、考えられる特定の用途に適する様々な修正と共に最も上手く利用することを可能にするために選択され、説明された。本発明の範囲は、本明細書に添付された特許請求の範囲と、その特許請求の範囲の均等物とによって規定されることが意図される。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態によるコンピュータシステムの基本コンポーネントの概略図である。
【図２Ａ】本発明の一実施形態による、プリント回路基板上に実装された例示的なハードウェアビデオデコーダカードの図である。
【図２Ｂ】本発明の一実施形態による、ハードウェア多標準対応ビデオデコーダ装置を含む例示的なアーキテクチャの図である。
【図３】本発明の一実施形態によるハードウェア多標準対応ビデオデコーダ装置の内部コンポーネントを示す構成図である。
【図４】本発明の一実施形態による例示的なハードウェア多標準対応ビデオデコーダ装置の内部コンポーネントを示す構成図である。
【図５】ビデオストリームを復号化するための方法のフローチャートであり、方法は、本発明の実施形態によるハードウェア多標準対応ビデオデコーダ装置を使用して実行される。
【図６】本発明の一実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置の内部コンポーネントを示す図である。
【図７Ａ】本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図である。
【図７Ｂ】本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図である。
【図８】複数のビデオストリームを復号化するための方法のフローチャートであり、方法は、本発明の実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。
【図９】本発明の実施形態による、ビデオストリームの順番が狂ったマクロブロックを処理するための方法のフローチャートである。
【図１０Ａ】本発明の実施形態による、フレームのマクロブロックの例示的な回転の図である。
【図１０Ｂ】本発明の実施形態による、フレームのマクロブロックの例示的な回転の図である。
【図１１】本発明の実施形態による、フレームのマクロブロックを回転するための方法のフローチャートである。
【図１】
2009518960.tif 000003
【図２Ａ】
2009518960.tif 000004
【図２Ｂ】
2009518960.tif 000005
【図３】
2009518960.tif 000006
【図４】
2009518960.tif 000007
【図５】
2009518960.tif 000008
【図６】
2009518960.tif 000009
【図７Ａ】
2009518960.tif 000010
【図７Ｂ】
2009518960.tif 000011
【図８】
2009518960.tif 000012
【図９】
2009518960.tif 000013
【図１０Ａ】
2009518960.tif 000014
【図１０Ｂ】
2009518960.tif 000015
【図１１】
2009518960.tif 000016
【国際調査報告】
2009518960.tif 000017