(57)【要約】高性能ハードウェア動き補償のための直接マクロブロックモード方法を説明する。一実施形態にはハードウェア動き補償グラフィックスディスプレイデバイスドライバが含まれる。より具体的には、一実施形態により、マクロブロック命令を直接生成して専用バッファに記憶することにより、ディスプレイデバイスドライバのマクロブロックデータパーシングボトルネックが緩和される。例えば、一実施形態は、他のすべてのハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファとは別に、マクロブロック命令のための独立したダイレクトメモリアクセス命令実行バッファを含む。他の実施形態は説明し請求項に記載した。
2009522650.tif 000002
【特許請求の範囲】
【請求項１】
マクロブロック命令のためのダイレクトメモリアクセス命令実行バッファと、その他のハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファを、グラフィックス処理ユニットのために生成するメディア処理ノードを有する装置。
【請求項２】
前記メディア処理ノードは、ハードウェア動き補償ユーザライブラリにマクロブロック命令を追加し、前記ハードウェア動き補償ユーザライブラリにより前記グラフィックス処理ユニットのハードウェアマクロブロック命令を生成するハードウェア動き補償モジュールを含む、請求項１に記載の装置。
【請求項３】
前記ハードウェア動き補償モジュールは、さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納し、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファにマッピングする、請求項２に記載の装置。
【請求項４】
前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する、請求項３に記載の装置。
【請求項５】
前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットの他のハードウェア動き補償命令の前記ダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行する、請求項４に記載の装置。
【請求項６】
通信メディアと、
マクロブロック命令のためのダイレクトメモリアクセス命令実行バッファと、その他のハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファを、グラフィックス処理ユニットのために生成するメディア処理ノードとを有するシステム。
【請求項７】
前記メディア処理ノードは、ハードウェア動き補償ユーザライブラリにマクロブロック命令を追加し、前記ハードウェア動き補償ユーザライブラリにより前記グラフィックス処理ユニットのハードウェアマクロブロック命令を生成するハードウェア動き補償モジュールを含む、請求項６に記載のシステム。
【請求項８】
前記ハードウェア動き補償モジュールは、さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納し、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファにマッピングする、請求項７に記載のシステム。
【請求項９】
前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する、請求項８に記載のシステム。
【請求項１０】
前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットの他のハードウェア動き補償命令の前記ダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行する、請求項９に記載のシステム。
【請求項１１】
マクロブロックデータをハードウェア動き補償ユーザライブラリに追加する段階と、
前記ハードウェア動き補償ユーザライブラリにより、グラフィックス処理ユニットのハードウェアマクロブロック命令を生成する段階とを有する方法。
【請求項１２】
さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納する段階を有する、請求項１１に記載の方法。
【請求項１３】
さらに、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファにマッピングする段階を有する、請求項１２に記載の方法。
【請求項１４】
さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する段階を有する、請求項１３に記載の方法。
【請求項１５】
さらに、前記グラフィックス処理ユニットにより、他のグラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き予測命令を実行する段階を有する、請求項１４に記載の方法。
【請求項１６】
実行されたとき、システムに、ハードウェア動き補償ユーザライブラリにマクロブロックデータを追加し、前記ハードウェア動き補償ユーザライブラリにより、グラフィックス処理ユニットのハードウェアマクロブロック命令を生成させる命令を格納した機械読み取り可能媒体を含む製品。
【請求項１７】
さらに、実行されたとき、前記システムに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納させる命令を含む、請求項１６に記載の製品。
【請求項１８】
さらに、実行されたとき、前記システムに、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファにマッピングさせる命令を含む、請求項１７に記載の製品。
【請求項１９】
さらに、実行されたとき、前記システムに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行させる命令を含む、請求項１８に記載の製品。
【請求項２０】
さらに、実行されたとき、前記システムに、前記グラフィックス処理ユニットにより、他のグラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行させる命令を含む、請求項１９に記載の製品。
【発明の詳細な説明】
【背景技術】
【０００１】
ＩＳＯ（International  Organization  for  Standardization）とＩＥＣ（International  Electrotechnical  Commission）のモーションピクチャエキスパートグループ（ＭＰＥＧ）は、標準精細度のテレビジョンを約３−１５Ｍｂｐｓのビットレートで符号化し、高精細度のテレビジョンを約１５−３０Ｍｂｐｓで符号化できるＭＰＥＧ−２標準を開発した。さらに、ＭＰＥＧ−２には、先行するＭＰＥＧ−１の機能強化（enhancement）として、複数チャネルサラウンドサウンドオーディオ符号化が追加されている。
【０００２】
ＭＰＥＧ−２符号化は、テレビジョンの同等技術と比較して、ビデオ／オーディオ信号を送信する前に、エンコーダ側においてビデオ／オーディオ信号から冗長な情報を削除することにより、低いビットレートで動作する。冗長な情報はデコーダ側で再び付加される。ＭＰＥＧ−２のビットレート低減方法は、空間的及び時間的な冗長性と視覚心理的（psychovisual）な冗長性の両方を利用して、視聴者に気づかれずにビデオ／オーディオ信号のビットレートを大幅に低減している。時間的な冗長性とは、画素値が、同じビデオフレーム内で、及び複数のビデオフレームにわたって隣接する画素値と無関係（independent）ではなく、相関していることを指す。視覚心理的な冗長性とは、周辺視野やビデオショットの変化時に詳細が見えないという視聴者の肉眼の制約を指す。
【発明の詳細な説明】
【０００３】
ハードウェア動き補償（ＨＷＭＣ、hardware  motion  compensation）用のダイレクトマクロブロックドライバとその方法の実施形態を説明する。例えば、一実施形態は、ＨＷＭＣグラフィックスディスプレイデバイスドライバとその動作方法を含む。より具体的には、一実施形態により、マクロブロック命令を直接生成して専用バッファに記憶することにより、ディスプレイデバイスドライバのマクロブロックデータパーシングボトルネックが緩和される。例えば、一実施形態は、他のすべてのＨＷＭＣ命令のためのＤＭＡ命令実行バッファとは別に、マクロブロック命令のための独立したＤＭＡ命令実行バッファを含む。マクロブロック命令を生成して他のＨＷＭＣ命令とは別に処理することにより、専用のグラフィックス処理ユニット（ＧＰＵ、Graphics  Processing  Unit）を活かして、一般的な中央処理ユニット（ＣＰＵ）のグラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散（share）する。
【０００４】
図１は、システムの一実施形態を示す図である。図１は、メディア処理システム１００のブロック図である。例えば、一実施形態では、メディア処理システム１００は複数のノードを含む。１つのノードは、メディア処理システム１００において情報を処理及び／または通信する物理的または論理的な構成要素（entity）を含み、設計パラメータや性能的な制約に応じてハードウェア、ソフトウェア、またはその組み合わせとして実施できる。図１にはあるトポロジで一定数のノードを示したが、言うまでもなくメディア処理システム１００は実施形態に応じていかなるトポロジでより多い、または少ないノードを含んでいてもよい。実施形態はこれに限定されない。実施形態によっては、ノードは次のものを含んでも、または次のものとして実施されてもよい：コンピュータシステム、コンピュータサブシステム、コンピュータ、アプライアンス（appliance）、端末、サーバ、パーソナルコンピュータ（ＰＣ）、ラップトップ、ウルトララップトップ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、テレビジョン、デジタルテレビジョン、セットトップボックス（ＳＴＢ）、電話、移動電話、携帯電話、ハンドセット、ワイヤレスアクセスポイント、基地局（ＢＳ）、加入者局（ＳＳ）、移動加入者センタ（ＭＳＣ）、ラジオネットワークコントローラ（ＲＮＣ）、マイクロプロセッサ、ＡＳＩＣ等の集積回路、プログラマブルロジックデバイス（ＰＬＤ）、汎用プロセッサやデジタルシグナルプロセッサ（ＤＳＰ）やネットワークプロセッサ等のプロセッサ、インタフェース、入出力（Ｉ／Ｏ）デバイス（例えば、キーボード、マウス、ディスプレイ、プリンタ）、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、回路、論理ゲート、レジスタ、半導体デバイス、チップ、トランジスタ、その他のデバイス、機械、ツール、機器、コンポーネント、またはこれらの組み合わせ。実施形態はこれに限定されない。
【０００５】
様々な実施形態において、ノードは次のものを含む、または次のものとして実施される：ソフトウェア、ソフトウェアモジュール、アプリケーション、プログラム、サブルーチン、命令セット、コンピューティングコード、ワード、値、記号、またはこれらの組み合わせ。ノードは、プロセッサにある機能の実行を命令する所定のコンピュータ言語、方法、またはシンタックスで実施される。コンピュータ言語の例としては、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＢＡＳＩＣ、Ｐｅｒｌ、Ｍａｔｌａｂ、Ｐａｓｃａｌ、ＶｉｓｕａｌＢＡＳＩＣ、アセンブラ言語、機械語、プロセッサのマクロコード等がある。実施形態はこれに限定されない。
【０００６】
様々な実施形態では、メディア処理システム１００は、１つ以上のプロトコルに従って情報を通信、管理、または処理する。プロトコルは、ノード間の通信を管理する所定のルールまたは命令の集合である。プロトコルは、ＩＴＵ（International  Telecommunications  Union）、ＩＳＯ（International  Organization  for  Standardization）、ＩＥＣ（International  Electrotechnical  Commission）、ＩＥＥＥ（Institute  of  Electrical  and  Electronics  Engineers）、ＩＥＴＦ（Internet  Engineering  Task  Force）、ＭＰＥＧ（Motion  Picture  Experts  Group）等の標準化機関により公表された１つ以上の標準規格により規定され得る。例えば、ここに説明する実施形態は次のメディア処理の標準規格に従って動作するように構成し得る：ＮＴＳＣ（National  Television  System  Committee）、ＰＡＬ（Phase  Alteration  by  Line）、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、ＤＶＢ−Ｔ（Digital  Video  Broadcasting  Terrestrial）放送、ＩＴＵ／ＩＥＣ  Ｈ．２６３、低ビットレート通信用ビデオ符号化、２０００年１１月に公表されたＩＴＵ−Ｔ  Ｈ．２６３ｖ３、ＩＴＵ／ＩＥＣ  Ｈ．２６４、超低ビットレート通信用ビデオ符号化、２００３年５月に公表されたＩＴＵ−Ｔ  Ｈ．２６４などである。実施形態はこれに限定されない。
【０００７】
実施形態によっては、メディア処理システム１００のノードは、メディア情報や制御情報等の異なるタイプの情報を通信、管理、または処理するように構成されている。メディア情報の例としては、一般的には、ボイス情報、ビデオ情報、オーディオ情報、画像情報、テキスト情報、数値情報、英数字記号、グラフィックス等のユーザに意味のある任意のデータを含む。制御情報は、自動化されたシステム向けのコマンド、命令、制御ワードを表す任意のデータを指す。例えば、制御情報を用いてシステム内でメディア情報をルーティングし、デバイス間を接続し、所定の方法でメディア情報を処理するようにノードに支持する。実施形態はこれに限定されない。
【０００８】
実施形態によっては、メディア処理システム１００は有線通信システム、無線通信システム、またはこれらの組み合わせとして実施してもよい。メディア処理システム１００は、例として通信メディアを用いて説明したが、言うまでもなく、ここで説明する原理と方法は任意の通信タイプとそれに付随する技術を用いて実施することもできる。実施形態はこれに限定されない。
【０００９】
例えば、有線システムとして実施する場合、メディア処理システム１００は、１つ以上の有線通信メディアを介して情報を通信するように構成された１つ以上のノードを含む。有線通信メディアの例としては、ワイヤ、ケーブル、プリント基板（ＰＣＢ）、バックプレーン、スイッチファブリック（switch  fabric）、半導体材料、ツイストペア線、同軸ケーブル、ファイバオプティクスなどがある。有線通信メディアは入出力（Ｉ／Ｏ）アダプタを用いてノードに接続してもよい。Ｉ／Ｏアダプタは、所望の通信プロトコル、サービス、動作手順（operating  procedures）を用いてノード間の情報信号を制御する任意の適切な方法で動作するように構成され得る。Ｉ／Ｏアダプタには、Ｉ／Ｏアダプタを対応する通信メディアと接続する適切な物理的コネクタも含まれる。Ｉ／Ｏアダプタの例には、ネットワークインタフェース、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等がある。実施形態はこれに限定されない。
【００１０】
例えば、無線システムとして実施する場合、メディア処理システム１００は、１つ以上のタイプの無線通信メディアを介して情報を通信するように構成された１つ以上の無線ノードを含む。無線通信メディアの例としては、一般的にＲＦスペクトル、特にＵＨＦ（ultra-high  frequency）等である無線スペクトルの一部が含まれる。無線ノードには、アンテナ、ワイヤレストランスミッタ／レシーバ（トランシーバ）、アンプ、フィルタ、制御ロジック、アンテナ等である、一定の無線スペクトルを介して情報信号を通信するコンポーネントやインタフェースが含まれる。実施形態はこれに限定されない。
【００１１】
実施形態によっては、メディア処理システム１００は１つ以上のメディアソースノード１０２−１乃至１０２−ｎを含む。メディアソースノード１０２−１乃至１０２−ｎは、メディア処理ノード１０６にメディア情報及び／または制御情報を供給または配信する任意のメディアソースを含む。より具体的には、メディアソースノード１０２−１乃至１０２−ｎは、メディア処理ノード１０６にデジタルオーディオ及び／またはビデオ（ＡＶ）信号を供給または配信する任意のメディアソースを含む。メディアソースノード１０２−１乃至１０２−ｎの例としては、ＤＶＤ（Digital  Versatile  Disk）装置、ＶＨＳ（Video  Home  System）装置、デジタルＶＨＳ装置、パーソナルビデオレコーダ、コンピュータ、ゲーム機、ＣＤ（Compact  Disc）プレーヤ、コンピュータ読み取り可能または機械読み取り可能メモリ、デジタルカメラ、カムコーダ、ビデオ監視システム、テレビ会議システム、電話システム、医療及び測定機器、スキャナシステム、コピーシステム等が含まれる。メディアソースノード１０２−１乃至１０２−ｎの他の例としては、メディア処理ノード１０６に放送信号、ストリーミングアナログ信号、デジタルＡＶ信号を供給するメディア配信システムが含まれる。メディア配信システムの例としては、例えば、ＯＴＡ（Over  The  Air）放送システム、地上ケーブルシステム（ＣＡＴＶ）、衛星放送システム等がある。メディアソースノード１０２−１乃至１０２−ｎは、実施形態に応じて、メディア処理ノード１０６の内部にあっても外部にあってもよいことに留意せよ。実施形態はこれに限定されない。
【００１２】
実施形態によっては、メディアソースノード１０２−１乃至１０２−ｎから受信した入来ビデオ信号は、ビジュアル解像度フォーマットとも呼ばれる固有のフォーマットを有している。ビジュアル解像度フォーマットの例には、デジタルテレビジョン（ＤＴＶ）フォーマット、高精細フォーマット（ＨＤＴＶ）、プログレッシブフォーマット、コンピュータディスプレイフォーマットなどがある。例えば、メディア情報は、１フレームあたり４８０ライン（visible  lines）から１０８０ラインにわたる垂直解像度フォーマットと、１ラインあたり６４０画素（visible  pixels）から１９２０画素にわたる水平解像度フォーマットで符号化される。例えば、一実施形態では、メディア情報は、１２８０水平画素と７２０垂直画素（１２８０×７２０）の７２０プログレッシブ（７２０ｐ）や、１９２０水平画素と１０８０垂直画素の１０８０インターレース（１０８０ｉ）の解像度フォーマットを有するＨＤＴＶビデオ信号で符号化される。他の実施形態では、メディア情報は、ＶＧＡ（video  graphics  array）フォーマット解像度（６４０×４８０）、ＸＧＡ（extended  graphics  array）フォーマット解像度（１０２４×７６８）、ＳＸＧＡ（super  XGA）フォーマット解像度（１２８０×１０２４）、ＵＸＧＡ（ultra  XGA）フォーマット解像度（１６００×１２００）などの様々なコンピュータディスプレイフォーマットに対応する解像度フォーマット（visual  resolution  format）を有する。実施形態はこれに限定されない。
【００１３】
実施形態によっては、メディア処理システム１００は、メディアソースノード１０２−１乃至１０２−ｎと１つ以上の通信メディア１０４−１乃至１０４−ｍで接続されたメディア処理ノード１０６を含む。メディア処理ノード１０６は、上記の通り、メディアソースノード１０２−１乃至１０２−ｎから受信したメディア情報を処理するように構成された任意のノードを含む。実施形態によっては、メディア処理ノード１０６は、処理システム、処理サブシステム、プロセッサ、コンピュータ、デバイス、エンコーダ、デコーダ、コーダ／デコーダ（ＣＯＤＥＣ）、フィルタリングデバイス（例えば、グラフィックスケーリングデバイス、デブロッキングフィルタリングデバイス）、変換デバイス、エンターテインメントシステム、ディスプレイ、その他の任意の処理アーキテクチャを有するメディア処理デバイスを含む、またはかかるメディア処理デバイスとして実施される。実施形態はこれに限定されない。
【００１４】
様々な実施形態において、メディア処理ノード１０６はメディア処理サブシステム１０８を含む。メディア処理サブシステム１０８は、メディアソースノード１０２−１乃至１０２−ｎから受信したメディア情報を処理するように構成されたプロセッサ、メモリ、アプリケーションハードウェア及び／またはソフトウェアを含む。例えば、メディア処理サブシステム１０８は、例えば、ＭＰＥＧ−２圧縮されたオーディオ及び／またはビデオ信号を処理し、以下に詳しく説明するように他のメディア処理動作を実行するように構成されている。メディア処理サブシステム１０８は処理したメディア情報をディスプレイ１１０に出力してもよい。実施形態はこれに限定されない。
【００１５】
様々な実施形態において、メディア処理ノード１０６はディスプレイ１１０を含む。ディスプレイ１１０はメディアソースノード１０２−１乃至１０２−ｎから受信したメディア情報を表示できる任意のディスプレイである。ディスプレイ１１０は与えられたフォーマット解像度でメディア情報を表示する。例えば、ディスプレイ１１０は、メディア情報を、ＶＧＡフォーマット解像度、ＸＧＡフォーマット解像度、ＳＸＧＡフォーマット解像度、ＵＸＧＡフォーマット解像度等を有するディスプレイに表示する。例えば、他の実施形態では、メディア情報は、１２８０水平画素と７２０垂直画素（１２８０×７２０）の７２０プログレッシブ（７２０ｐ）の解像度フォーマットを有するＨＤＴＶビデオ信号で符号化される。さらに他の実施形態では、メディア情報は、１９２０水平画素と１０８０垂直画素（１９２０×１０８０）の１０８０インターレース（１０８０ｉ）の解像度フォーマットを有するＨＤＴＶビデオ信号で符号化される。ディスプレイのタイプとフォーマット解像度は設計や性能的な制約に応じて変化し、実施形態は上記の場合に限定はされない。
【００１６】
一般的な動作において、メディア処理ノード１０６は１つ以上のメディアソースノード１０２−１乃至１０２−ｎからメディア情報を受信する。例えば、メディア処理ノード１０６は、そのメディア処理ノード１０６と一体化した、ＤＶＤプレーヤとして実施したメディアソースノード１０２−１からメディア情報を受信する。メディア処理サブシステム１０８は、ＤＶＤプレーヤからメディア情報を読み出し、そのメディア情報をビジュアル解像度フォーマットからディスプレイ１１０のディスプレイ解像度フォーマットに変換して、ディスプレイ１１０を用いてメディア情報を再生する。
【００１７】
実施形態によっては、メディア処理ノード１０６は１つ以上のメディアソースノード１０２−１乃至１０２−ｎから入力画像を受信するように構成されている。入力画像は、ビデオ画像から得られ、またはそれに付随するデータやメディア情報を含む。様々な実施形態において、入力画像は、画像データ、ビデオデータ、ビデオシーケンス、写真のグループ、写真、画像、領域、オブジェクト、フレーム、スライス、マクロブロック、ブロック画素、信号等を含む。画素に割り当てられた値は実数及び／または整数を含む。
【００１８】
様々な実施形態において、メディア処理ノード１０６は、ＭＰＥＧ−２で圧縮されたオーディオ及び／またはビデオ（ＡＶ）信号用のグラフィックスディスプレイデバイスドライバとして動作するように構成されている。より具体的には、一実施形態のメディア処理ノードは、マクロブロック命令を直接生成してそれを専用バッファに格納することにより、ハードウェアベースの動き補償フレーム間予測（ＨＷＭＣ）グラフィックスディスプレイデバイスドライバのマクロブロックデータ解析ボトルネックを緩和する。例えば、一実施形態は、他のすべてのＨＷＭＣ命令のためのＤＭＡ命令実行バッファとは別に、マクロブロック命令のための独立したＤＭＡ命令実行バッファを含む。マクロブロック命令を生成して他のＨＷＭＣ命令とは別に処理することにより、専用のグラフィックス処理ユニット（ＧＰＵ、Graphics  Processing  Unit）を活かして、グラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散（share）する。
【００１９】
例えば、一実施形態では、メディア処理ノード１０６のメディア処理サブシステム１０８は、他のすべてのＨＷＭＣ命令のＤＭＡ命令実行バッファとは別に、マクロブロック命令のための独立したＤＭＡ命令実行バッファを含むように構成される。マクロブロック命令を生成して他のＨＷＭＣ命令とは別に処理することにより、ＧＰＵを多く利用して、グラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散（share）する。メディア処理サブシステム１０８は、所定の数学的関数を利用して、ＨＷＭＣ命令（例えば、生成、パス、シーケンス、バッファリング等）や出力（例えば、ディスプレイ１１０）を制御し、メディア処理システム１００の性能を向上させる。メディア処理システム１００の概略、特にメディア処理サブシステム１０８を図２を参照してより詳しく説明する。
【００２０】
図２は、メディア処理サブシステム１０８の一実施形態を示す図である。図２は、図１を参照して説明したメディア処理ノード１０６との使用に適したメディア処理サブシステム１０８を示すブロック図である。実施形態は図２に示した実施例には限定されない。
【００２１】
図２に示したように、メディア処理サブシステム１０８は複数の構成要素を含む。１つ以上の構成要素は、設計や性能上の制約に応じて、回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール、またはこれらの任意の組み合わせを用いて実施できる。図２は例としてあるトポロジで接続された少数の構成要素を示しているが、言うまでもなく、実施形態によっては、メディア処理サブシステム１０８において任意の適切なトポロジで接続されたより多くまたは少ない構成要素を使用してもよい。実施形態はこれに限定されない。
【００２２】
様々な実施形態において、メディア処理サブシステム１０８はプロセッサ２０２を含む。プロセッサ２０２は、ＣＩＳＣ（complex  instruction  set  computer）マイクロプロセッサ、ＲＩＳＣ（reduced  instruction  set  computing）マイクロプロセッサ、ＶＬＩＷ（very  long  instruction  word）マイクロプロセッサ、複数の命令セットを有するプロセッサその他の任意のプロセッサやロジックデバイスを用いて実施される。例えば、一実施形態では、プロセッサ２０２は、米国カリフォルニア州サンタクララ市のインテル  コーポレイションガ生産するプロセッサ等の汎用プロセッサであってもよい。プロセッサ２０２は、コントローラ、マイクロコントローラ、エンベディッドプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、ネットワークプロセッサ、メディアプロセッサ、入出力（Ｉ／Ｏ）プロセッサ、メディアアクセスコントロール（ＭＡＣ）プロセッサ、ラジオベースバンドプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）等の専用プロセッサとして実施することもできる。実施形態はこれに限定されない。
【００２３】
様々な実施形態において、メディア処理サブシステム１０８はプロセッサ２０２に結合されたメモリ２０４を含む。実施形態によっては、メモリ２０４は、通信バス２１４、またはプロセッサ２０２とメモリ２０４の間の専用通信バスを介してプロセッサ２０２と結合されていてもよい。メモリ２０４は、揮発性メモリ及び不揮発性メモリの両方を含む、データを格納できる機械読み取り可能またはコンピュータ読み取り可能媒体を用いて実施できる。例えば、メモリ２０４には、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電ポリマーメモリ等のポリマーメモリ、オボニック（ovonic）メモリ、相変化または強誘電メモリ、ＳＯＮＯＳ（silicon-oxide-nitride-oxide-silicon）メモリ、磁気または光カード、その他の情報を格納するのに適した他の任意のタイプのメディアを含む。メモリ２０４の少なくとも一部は、プロセッサ２０２と同じ集積回路に含まれてもよく、あるいは、メモリ２０４の少なくとも一部は、プロセッサ２０２の集積回路とは別の集積回路その他の媒体（例えば、ハードディスクドライブ）に配置してもよい。実施形態はこれに限定されない。
【００２４】
様々な実施形態において、メディア処理サブシステム１０８はトランシーバ２０６を含む。トランシーバ２０６は、所望の無線プロトコルにより動作するように構成されたラジオトランスミッタ及び／またはレシーバである。無線プロトコルの例としては、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ、ＩＥＥＥ８０２．１６、ＩＥＥＥ８０２．２０等のＩＥＥＥ８０２．ｘｘシリーズのプロトコルなどの様々なワイヤレスＬＡＮプロトコルが含まれる。無線プロトコルの他の例としては、ＧＰＲＳ（General  Packet  Radio  Service）を有するＧＳＭ（Global  System  for  Mobile  Communications）携帯電話システムのプロトコル、ＩｘＲＴＴを有するＣＤＭＡ（Code  Division  Multiple  Access）携帯電話通信システム、ＥＤＧＥ（Enhanced  Data  Rates  for  Global  Evolution）システムなどのワイヤレスＷＡＮプロトコルを含んでもよい。無線プロトコルの他の例としては、赤外線プロトコル、ブルートゥース仕様ｖ１．０、ｖ１．１、ｖ１．２、ｖ２．０、ＥＤＲ（Enhanced  Data  Rate）ｖ２．０及びブルートゥースプロファイル（まとめて「ブルートゥース仕様」と呼ぶ）を含むブルートゥースＳＩＧ（Special  Interest  Group）のプロトコル等のワイヤレスＰＡＮ（personal  area  network）が含まれる。他のプロトコルとして、ＵＷＢ（Ultra  Wide  Band）、ＤＯ（Digital  Office）、デジタルホーム、ＴＰＭ（Trusted  Platform  Module）、ＺｉｇＢｅｅその他のプロトコルが含まれる。実施形態はこれに限定されない。
【００２５】
様々な実施形態において、メディア処理サブシステム１０８はモジュールを含む。モジュールは、設計や性能上の制約に応じて、システム、サブシステム、プロセッサ、デバイス、マシン、ツール、コンポーネント、回路、レジスタ、アプリケーション、プログラム、サブルーチンを含む、またはこれらの任意の組み合わせを用いて実施できる。実施形態はこれに限定されない。
【００２６】
例えば、一実施形態では、メディア処理システム１０８はＨＷＭＣモジュール２０８を含む。ＨＷＭＣモジュール２０８は、所定の数学的関数またはアルゴリズムに従って上で説明したように、ＧＰＵがＭＰＥＧ−２圧縮されたＡＶ信号を処理する命令の生成、パス、シーケンス、及び／またはバッファリングを調整するために仕様される。例えば、所定の数学的関数またはアルゴリズムは、メモリ２０４、大規模記憶装置２１０、ハードウェア実施のルックアップテーブル（ＬＵＴ）２１６等に格納できる。言うまでもなく、ＨＷＭＣ２０８は、プロセッサ２０２が実行するソフトウェア、専用ハードウェア、またはこれらの組み合わせにより実施できる。実施形態はこれに限定されない。
【００２７】
様々な実施形態において、メディア処理サブシステム１０８は大規模記憶装置２１０を含む。大規模記憶デバイス２１０の例としては、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、光ディスク、磁気メディア、光磁気メディア、リムーバブルメモリカードまたはディスク、様々なタイプのＤＶＤデバイス、テープデバイス、カセットデバイス等が含まれる。実施形態はこれに限定されない。
【００２８】
様々な実施形態において、メディア処理サブシステム１０８はＩ／Ｏアダプタ２１２を含む。Ｉ／Ｏアダプタ２１２の例としては、ＵＳＢ（Universal  Serial  Bus）ポート／アダプタ、ＩＥＥＥ１３９４ファイアワイヤポート／アダプタ等がある。実施形態はこれに限定されない。
【００２９】
一般的な動作において、メディア処理サブシステム１０８は１つ以上のメディアソースノード１０２−１乃至１０２−ｎからメディア情報を受信する。例えば、メディアソースノード１０２−１は、プロセッサ２０２に接続されたＤＶＤデバイスを含む。あるいは、メディアソース１０２−２は、ＭＰＥＧ符号化されたＡＶファイル等のデジタルＡＶファイルを格納したメモリ２０４を含む。ＨＷＭＣモジュール２０８は、大規模記憶装置２１６及び／またはメモリ２０４からメディア情報を受信し、（例えば、プロセッサ２０２により）そのメディア情報を処理し、メモリ２０４、プロセッサ２０２のキャッシュメモリ、またはこれらの組み合わせにメディア情報を格納またはバッファする。ＨＷＭＣモジュール２０８の動作は、図３と図４、及び図５の論理フローに示したＨＷＭＣドライバを参照して理解できる。
【００３０】
図３はＨＷＭＣドライバ３００を示す。一般的に、ＭＰＥＧ−２ＡＶ信号の場合、最新の画像（current  picture）は、イントラフレームＤＣＴ（Discrete  Cosine  Transform）符号化係数と動き補償フレーム間予測に基づき、前の画像から変換できる。動き補償フレーム間予測は、時間とプロセッサ能力を必要とする画素ごとのレンダリングプロセス（rendering  process）である。例えば、動き補償フレーム間予測は、ＭＰＥＧ−２ビデオコーデックプロセスにおける処理負荷全体の約３０％である。
【００３１】
ＨＷＭＣドライバ３００はＧＰＵ３５０を含む、またはアクセス可能である。例えば、カリフォルニア州サンタクララ市のインテル  コーポレイションが生産するグラフィックスチップセットの一部であるＧＰＵは、ハードウェアベースの動き補償フレーム間予測の能力を有している。ＨＷＭＣは、ＧＰＵ３５０にプロセッサ２０２の動き予測フレーム間予測の付加を低減させる方法である。このように、ＨＷＭＣ方式は、例えば、プロセッサ２０２の使用にあたり、１秒当たりのフレーム数を増やすか、１秒あたり所与のフレーム数を処理する場合にプロセッサ２０２の使用を減らすことにより、プロセッサ２０２と並行して動作することにより符号化性能を改善する。
【００３２】
ＨＷＭＣドライバ３００への入力はＤＣＴ係数データ配列とマクロブロックパラメータデータ配列を含む。マクロブロックパラメータはマクロブロックのタイプ、動きのタイプ、動きベクトルとマクロブロックパラメータにより結合される。これらはすべて画像（target  picture）の画素をレンダリングするＧＰＵ３５０に貢献する。ＨＷＭＣドライバ３００は、ＡＶコーデック３０５がマクロブロックパラメータを１つ１つ書き込むメモリバッファを有する。ＨＷＭＣドライバ３００は、ビデオコーデック３０５がＤＣＴデータを書き込むＤＣＴローデータバッファ（raw  data  buffer）も有する。例えば、ＤＣＴデータは、ユーザが画像の全体または一部を符号化したいかに応じて、その画像の全体または一部のみを含む。ＡＶコーデック３０５は、マクロブロックデータとＤＣＴデータのバッファへの格納を完了すると、ＨＷＭＣプロセスを開始するようＧＰＵ３５０に要求する。例えば、このようにして、プロセッサ２０２は開放され、次の画像の符号化またはその他のジョブの処理を行う。
【００３３】
ＨＷＭＣドライバ３００の場合、ＤＣＴデータとマクロブロックデータの違いに留意することが重要である。例えば、ＤＣＴローデータは標準的なものであり、ＨＷＭＣハードウェアの実装に拘わらずＧＰＵ３５０が直接処理（directly  consumed）できる。これとは反対に、マクロブロックデータは動き補償を制御するパラメータをすべて含み、このため、ＨＷＭＣのハードウェア実装によりその命令は異なる。従って、マクロブロックデータは、ＨＷＭＣドライバ３００により解析され、ハードウェアに依存する動き補償命令、またはＧＰＵ３５０により処理される他の低レベルの命令が生成される。
【００３４】
より具体的には、ＨＷＭＣドライバ３００の場合、ＡＶコーデック３０５は、マクロブロックとＤＣＴデータを、ＨＷＭＣドライバ３００により提供されるデータバッファに格納する。カーネルスペースのマクロブロックデータバッファ３２５をユーザスペースのマクロブロックデータバッファ３２０にマッピングすると、ユーザスペースで実行されているので、ＡＶコーデック３０５はマクロブロックデータをユーザスペースのマクロブロックデータバッファ３２０に格納してメモリのコピーを回避することができる。上記の通り、ＤＣＴデータとは異なり、マクロブロックデータはプラットフォームに依存しないでＨＷＭＣドライバ３００により規定される。従って、ＨＷＭＣドライバ３００は、マクロブロックデータバッファ３２５から各マクロブロックデータを読み出してマクロブロックパラメータを解析し、ＧＰＵ３５０のために（例えば、命令ジェネレータ３３０により）ハードウェアマクロブロック命令３３５を生成できる。ハードウェアマクロブロック命令３３５は、例えば、動きベクトル及びその他の動き補償パラメータを含む。命令ジェネレータ３３０は、さらに、例えばハードウェア設定、ＨＷＭＣ状態管理、フレーム設定、及びバッファ管理に関する命令を含むその他のＨＷＭＣ命令３４０を生成する。ハードウェアマクロブロック命令３３５及びその他のＨＷＭＣ命令３４０を、ＧＰＵ３５０のＧＰＵダイレクトメモリアクセス（ＤＭＡ）命令実行バッファに書き込み、読み出して実行する。
【００３５】
例えば、１０８０ｉＨＤ画像（インターレースされた１９２０×１０８０の解像度フォーマット）の場合、マクロブロックデータのサイズは約２００キロバイトである。上記のように、ビデオコーデック３０５は、マクロブロックデータを、ユーザスペースのマクロブロックデータバッファ３２０にマッピングされたマクロブロックデータバッファ３２５に格納する。その後、ＨＷＭＣドライバ３００がマクロブロックデータバッファ３２５からのマクロブロックデータを解析し、命令ジェネレータ３３０が命令（例えば、ハードウェアマクロブロック命令３３５とその他のＨＷＤＭＣ命令３４０の両方）を生成し、ＧＰＵ  ＤＭＡ命令実行バッファ３４５に格納し、ＧＰＵ３５０が実行する。命令ジェネレータ３３０によるハードウェアマクロブロック命令３３５の生成は、ＨＷＭＣドライバ３００のためのプロセッサ２０２の使用量の約９５％までを占める。このように、ハードウェアマクロブロック命令３３５の生成は、ＨＷＭＣドライバ３００の性能阻害要因（performance-hindering  feature）または「ボトルネック」となり得る。
【００３６】
さらに、ＨＷＭＣドライバ３００の場合、ＨＷＭＣドライバ３００のプロセスは他のグラフィックスオペレーションが解釈できるので、ＧＰＵ  ＤＭＡ命令実行バッファ３４５をユーザと直接共有することが不可能である。かかる場合、ＤＭＡ命令実行バッファ３４５をロックすれば、他のグラフィックスオペレーションがロックされ、メディア処理システム１００またはサブシステムに損害が及ぶ。
【００３７】
図４は一実施形態によるＨＷＭＣドライバ４００を示す図である。図３を参照して説明したように、命令ジェネレータ３３０によるハードウェアマクロブロック命令３３５の生成は、ＨＷＭＣドライバ３００の性能阻害要因（performance-hindering  feature）または「ボトルネック」となり得る。ＨＷＭＣドライバ４００は、ＨＷＭＣドライバ３００のマクロブロックデータの解析やマクロブロック命令３３５の生成のボトルネックを緩和する様々な機能を含む。
【００３８】
例えば、ＨＷＭＣドライバ４００は、ＧＰＵ  ＤＭＡ命令実行バッファ３４５とは独立したマクロブロック命令４２０のスタンドアロンＧＰＵ  ＤＭＡ命令バッファを含む。従って、マクロブロック命令４２０のＧＰＵ  ＤＭＡ命令バッファはハードウェアマクロブロック命令３３５を格納し、ＧＰＵ  ＤＭＡ命令実行バッファ３４５はその他のＨＷＭＣ命令３４０を格納する。さらに、マクロブロック命令４２０のＧＰＵ  ＤＭＡ命令バッファを、マクロブロックデータバッファ３２０としてユーザスペースにマッピングする。
【００３９】
一実施形態では、ＧＰＵ３５０はハードウェア命令のバッチバッファを実行できる。従って、ＧＰＵ３５０は、ＧＰＵ  ＤＭＡ命令実行バッファ３４５に格納されたその他のＨＷＭＣ命令３４０を実行し、マクロブロック命令４２０を取得するためＧＰＵ  ＤＭＡ命令バッファに格納されたハードウェアマクロブロック命令３３５にジャンプし、取得したマクロブロック命令４２０をバッチとして処理し、終わるとその他のＨＷＭＣ命令３４０に戻る。
【００４０】
さらに、ＨＷＭＣドライバ４００は、ＡＶコーデック３０５からＨＷＭＣユーザライブラリ３１５へのアッドマクロブロック４１０ファンクションコール（add  macroblock  ４１０  function  call）を含み、ＨＷＭＣユーザライブラリ３１５は、ＡＶコーデック３０５のマクロブロックデータ／パラメータの入力を受ける。一実施形態では、ＨＷＭＣユーザライブラリ３１５は、命令ジェネレータ３３０を使用せずに、ハードウェアマクロブロック命令３３５を直接生成できる。ハードウェアマクロブロック命令３３５は、その後、ユーザスペースのマクロブロックデータバッファ３２０と、マクロブロック命令４２０のＧＰＵ  ＤＭＡ命令実行バッファの間にマッピングされる。このように、ＨＷＭＣドライバ４００は、ＨＷＭＣドライバ３００のボトルネック（例えば、命令ジェネレータ３３０がハードウェアマクロブロック命令３３５とその他のＨＷＭＣ命令３４０の両方を生成すること）を緩和する。あるいは、ＨＷＭＣドライバ４００は、ＨＷＭＣユーザライブラリ３１５でハードウェアマクロブロック命令３３５を生成し、マクロブロック命令４２０のＧＰＵ  ＤＭＡ命令実行バッファに格納したとき、ＨＷＭＣドライバ４００は、単にＧＰＵ３５０をハードウェアマクロブロック命令３３５をバッチバッファ命令実行として実行するように設定するだけである。その後、例えば、ＧＰＵ３５０は、ファンクションコールと同様に、バッチバッファ命令実行としてハードウェアマクロブロック命令３３５を実行すると、ＧＰＵ  ＤＭＡ命令実行バッファ３４５に格納されたその他のＨＷＭＣ命令３４０に戻る。
【００４１】
また、アッドマクロブロック４１０ファンクションコール（add  macroblock  ４１０  function  call）によりマクロブロック命令３３５をユーザスペース（例えばマクロブロックデータバッファ３２０）にマッピングすることにより、ユーザがマクロブロックデータバッファ３２５に書くのと比較してインタフェースが便利でユーザフレンドリになる。さらに、一実施形態のＨＷＭＣユーザライブラリ３１５がアプリケーションプログラミングインタフェース（ＡＰＩ）を提供するので、ＡＶコーデック３０５がソフトウェア動き補償からハードウェア動き補償に変更しやすくなる。さらに、ハードウェアマクロブロック命令３３５は他のＨＷＭＣ命令３４０よりもデータ指向である。結果として、ハードウェアマクロブロック命令３３５を生成するＨＷＭＣユーザライブラリ３１５は、ＨＷＭＣドライバ３００の方式（scheme）よりもデバッグとメンテナンスが容易である。最後に、ハードウェアマクロブロック命令３３５を生成するＨＷＭＣユーザライブラリ３１５により、望めば、ＨＷＭＣドライバ４００の詳細を開示しなくても、ハードウェアマクロブロック命令３３５のフォーマットをユーザに開示できる。
【００４２】
一実施形態では、ＨＷＭＣドライバ４００の性能はＨＷＭＣドライバ３００よりよいことを説明した。例えば、ＭＰＥＧ−２  １０８０ｉＡＶストリームの場合、インテルＧＭＣＨ８２８５４サンセットバレー開発基板でテストしたＨＷＭＣドライバ４００では性能が５０％改善された。より具体的には、１秒あたり１５フレームのＨＷＭＣドライバ３００と比較して、一実施形態のＨＷＭＣドライバ４００は、例えばプロセッサ２０２の付加を増大させずに１秒あたり２４フレームを処理できる。
【００４３】
図５は、一実施形態の論理フローを示す図である。例えば、ステップ５１０において、ＡＶコーデック３０５がマクロブロックとＤＣＴデータを受信すると、ファンクションコールによりマクロブロックデータをＨＷＭＣユーザライブラリ３１５に追加する。ステップ５２０において、ＨＷＭＣユーザライブラリ３１５はハードウェアマクロブロック命令３３５を生成し、ステップ５３０において、ハードウェアマクロブロック命令３３５をマクロブロックデータバッファ３２０に格納する。その後、ステップ５４０において、マクロブロックデータバッファ３２０に格納されたハードウェアマクロブロック命令３３５は、マクロブロック命令４２０のＧＰＵ  ＤＭＡ命令実行バッファにマッピングされ、ステップ５５０において、そのバッファからＧＰＵはハードウェアマクロブロック命令３３５を実行する。
【００４４】
実施形態をよく理解してもらうため具体的な詳細を説明した。しかし、当業者には言うまでもなく、これらの実施形態はこれらの具体的な詳細がなくても実施することができる。他の場合には、周知の動作、コンポーネント、回路は実施形態を分かりにくくしないように、詳細には説明していない。言うまでもなく、ここに開示した詳細な構造や機能は代表的なものであり、必ずしも実施形態の範囲を限定するものではない。
【００４５】
また、留意すべき点として、「一実施形態」とは、その実施形態に関して説明する具体的な機能、構造、特徴が少なくとも１つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所で「一実施形態とは」と記載するが、必ずしも同じ実施形態を指すものではない。
【００４６】
実施形態は、所望の計算レート、パワーレベル、耐熱、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、その他の性能上の制約などの要因により変わりうる。例えば、一実施形態は汎用プロセッサまたは専用プロセッサにより実行されるソフトウェアを用いて実施できる。他の実施例では、一実施形態は専用ハードウェアとして実施できる。さらに他の実施例では、プログラムされた汎用コンピュータコンポーネントやカスタムハードウェアコンポーネントの任意の組み合わせで実施できる。実施形態はこれに限定されない。
【００４７】
さまざまな実施形態をハードウェア要素を用いて実施できる。一般的に、ハードウェア要素は、ある動作を実行するように構成された任意のハードウェア構成を指す。例えば、一実施形態では、ハードウェア要素には基板上に形成されたアナログまたはデジタルの電気的または電子的要素が含まれる。生産は、ＣＭＯＳ、バイポーラ、バイポーラＣＭＯＳ（ＢｉＣＭＯＳ）等のシリコンベースの集積回路（ＩＣ）技術を用いて行われる。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路要素（例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど）、集積回路、ＡＳＩＣ、ＰＬＤ、ＤＳＰ、ＦＰＧＡ、論理ゲート、レジスタ、半導体装置、チップ、マイクロチップ、チップセット等を含む。実施形態はこれに限定されない。
【００４８】
さまざまな実施形態をソフトウェア要素を用いて実施できる。一般的に、ソフトウェア要素は、ある動作を実行するように構成された任意のソフトウェア構成を指す。例えば、一実施形態では、ソフトウェア要素はプロセッサ等のハードウェア要素が実行するように構成されたプログラム命令及び／またはデータを含む。プログラム命令には、実行された時にプロセッサに対応する一組の動作を実行させる、所定シンタックスで構成されたワード、値、またはシンボルを含む組織だったコマンドのリストが含まれる。ソフトウェアはプログラミング言語を用いて書かれ、またはコード化されていてもよい。コンピュータ言語の例としては、Ｃ、Ｃ＋＋、ＢＡＳＩＣ、Ｐｅｒｌ、Ｍａｔｌａｂ、Ｐａｓｃａｌ、ＶｉｓｕａｌＢＡＳＩＣ、Ｊａｖａ（登録商標）、ＡｃｔｉｖｅＸ、アセンブラ言語、及び機械語、プロセッサのマクロコード等がある。ソフトウェアは任意タイプのコンピュータ読み取り可能メディアまたは機械読み取り可能メディアを用いて格納できる。さらに、ソフトウェアは、メディアに、ソースコードとして格納してもオブジェクトコードとして格納してもよい。ソフトウェアは、メディアに、圧縮データとして、及び／または暗号化したデータとして格納してもよい。ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの組み合わせが含まれる。実施形態はこれに限定されない。
【００４９】
一部の実施形態では、「結合された」や「接続された」またはこれらの派生形を用いて説明した。言うまでもなく、これらの用語は互いに同意語として使用したものではない。例えば、一部の実施形態は「接続」という用語を用いて説明し、複数の要素が互いに物理的または電気的に直接的に接触していることを示している。他の例では、一部の実施形態は「結合」という用語を用いて説明し、複数の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合」という用語は、複数の要素が互いに直接接触してないが、互いに協働または相互作用することを示している。実施形態はこれに限定されない。
【００５０】
一部の実施形態は、例えば、機械により実行されると、その機械に実施形態による方法及び／または動作を実行させる命令またはそのセットを格納した、機械読み出し可能メディアまたは製品（article）を用いて実施される。かかる機械には、例えば、好適な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータプロセッサ等を含んでもよいし、好適なハードウェア及び／またはソフトウェアの組み合わせを用いて実施してもよい。機械読み出し可能媒体または製品には、例えば、任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリメディア、記憶デバイス、記憶製品、記憶メディア及び／または記憶ユニット、例えば、メモリ、リムーバブルまたは非リムーバブルメディア、消去可能または非消去可能メディア、書き込み可能または非書き込み可能メディア、デジタルまたはアナログメディア、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、光ディスク、磁気メディア、光磁気メディア、リムーバブルメモリカードまたはディスク、様々なタイプのＤＶＤ、テープ、カセット等が含まれる。命令には、任意の適切なタイプのコードであるソースコード、コンパイルコード、インタープリタコード、実行可能コード、静的コード、動的コード等が含まれる。命令は任意の適切な高級、低級、オブジェクト指向、ビジュアル、コンパイル及び／またはインタープリタのプログラミング言語である、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＢＡＳＩＣ、Ｐｅｒｌ、Ｍａｔｌａｂ、Ｐａｓｃａｌ、ＶｉｓｕａｌＢＡＳＩＣ、アセンブラ言語、マシンコード等を用いて実施される。実施形態はこれに限定されない。
【００５１】
特に断らなければ、言うまでもなく、「処理」、「算出」、「計算」、「判断」等の用語は、コンピュータ、コンピューティングシステム、類似の電子的計算機器の動作やプロセスであって、コンピューティングシステムのレジスタやメモリ内の物理的（電子的）量として表されたデータを操作し、コンピューティングシステムのメモリやレジスタ、その他の情報記憶装置、伝送機器、表示機器内の物理量として同様に表された他のデータに変換するものを指す。実施形態はこれに限定されない。
【００５２】
実施形態の特徴をここに説明したように例示したが、当業者は多数の修正、置換、変更及び等価物を考えることができるであろう。言うまでもなく、添付した特許請求の範囲は、かかる修正や変更も実施形態の真の精神に含まれるものとしてすべてカバーするものである。
【図面の簡単な説明】
【００５３】
【図１】メディア処理システムの一実施形態を示す図である。
【図２】メディア処理サブシステムの一実施形態を示す図である。
【図３】ハードウェア動き補償ドライバの一実施形態を示す図である。
【図４】ハードウェア動き補償ドライバの一実施形態を示す図である。
【図５】論理フローの一実施形態を示す図である。
【図１】
2009522650.tif 000003
【図２】
2009522650.tif 000004
【図３】
2009522650.tif 000005
【図４】
2009522650.tif 000006
【図５】
2009522650.tif 000007
【国際調査報告】
2009522650.tif 000008
2009522650.tif 000009
2009522650.tif 000010