JP2009522650A - ビデオレコーディングにおけるハードウェア動き補償 - Google Patents

ビデオレコーディングにおけるハードウェア動き補償 Download PDF

Info

Publication number
JP2009522650A
JP2009522650A JP2008548587A JP2008548587A JP2009522650A JP 2009522650 A JP2009522650 A JP 2009522650A JP 2008548587 A JP2008548587 A JP 2008548587A JP 2008548587 A JP2008548587 A JP 2008548587A JP 2009522650 A JP2009522650 A JP 2009522650A
Authority
JP
Japan
Prior art keywords
macroblock
hardware
processing unit
graphics processing
instruction
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.)
Pending
Application number
JP2008548587A
Other languages
English (en)
Inventor
ソン,チンジアン
タン,シン
リュウ,ウェンフェン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2009522650A publication Critical patent/JP2009522650A/ja
Pending 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Bus Control (AREA)

Abstract

高性能ハードウェア動き補償のための直接マクロブロックモード方法を説明する。一実施形態にはハードウェア動き補償グラフィックスディスプレイデバイスドライバが含まれる。より具体的には、一実施形態により、マクロブロック命令を直接生成して専用バッファに記憶することにより、ディスプレイデバイスドライバのマクロブロックデータパーシングボトルネックが緩和される。例えば、一実施形態は、他のすべてのハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファとは別に、マクロブロック命令のための独立したダイレクトメモリアクセス命令実行バッファを含む。他の実施形態は説明し請求項に記載した。

Description

ISO(International Organization for Standardization)とIEC(International Electrotechnical Commission)のモーションピクチャエキスパートグループ(MPEG)は、標準精細度のテレビジョンを約3−15Mbpsのビットレートで符号化し、高精細度のテレビジョンを約15−30Mbpsで符号化できるMPEG−2標準を開発した。さらに、MPEG−2には、先行するMPEG−1の機能強化(enhancement)として、複数チャネルサラウンドサウンドオーディオ符号化が追加されている。
MPEG−2符号化は、テレビジョンの同等技術と比較して、ビデオ/オーディオ信号を送信する前に、エンコーダ側においてビデオ/オーディオ信号から冗長な情報を削除することにより、低いビットレートで動作する。冗長な情報はデコーダ側で再び付加される。MPEG−2のビットレート低減方法は、空間的及び時間的な冗長性と視覚心理的(psychovisual)な冗長性の両方を利用して、視聴者に気づかれずにビデオ/オーディオ信号のビットレートを大幅に低減している。時間的な冗長性とは、画素値が、同じビデオフレーム内で、及び複数のビデオフレームにわたって隣接する画素値と無関係(independent)ではなく、相関していることを指す。視覚心理的な冗長性とは、周辺視野やビデオショットの変化時に詳細が見えないという視聴者の肉眼の制約を指す。
発明の詳細な説明
ハードウェア動き補償(HWMC、hardware motion compensation)用のダイレクトマクロブロックドライバとその方法の実施形態を説明する。例えば、一実施形態は、HWMCグラフィックスディスプレイデバイスドライバとその動作方法を含む。より具体的には、一実施形態により、マクロブロック命令を直接生成して専用バッファに記憶することにより、ディスプレイデバイスドライバのマクロブロックデータパーシングボトルネックが緩和される。例えば、一実施形態は、他のすべてのHWMC命令のためのDMA命令実行バッファとは別に、マクロブロック命令のための独立したDMA命令実行バッファを含む。マクロブロック命令を生成して他のHWMC命令とは別に処理することにより、専用のグラフィックス処理ユニット(GPU、Graphics Processing Unit)を活かして、一般的な中央処理ユニット(CPU)のグラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散(share)する。
図1は、システムの一実施形態を示す図である。図1は、メディア処理システム100のブロック図である。例えば、一実施形態では、メディア処理システム100は複数のノードを含む。1つのノードは、メディア処理システム100において情報を処理及び/または通信する物理的または論理的な構成要素(entity)を含み、設計パラメータや性能的な制約に応じてハードウェア、ソフトウェア、またはその組み合わせとして実施できる。図1にはあるトポロジで一定数のノードを示したが、言うまでもなくメディア処理システム100は実施形態に応じていかなるトポロジでより多い、または少ないノードを含んでいてもよい。実施形態はこれに限定されない。実施形態によっては、ノードは次のものを含んでも、または次のものとして実施されてもよい:コンピュータシステム、コンピュータサブシステム、コンピュータ、アプライアンス(appliance)、端末、サーバ、パーソナルコンピュータ(PC)、ラップトップ、ウルトララップトップ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)、テレビジョン、デジタルテレビジョン、セットトップボックス(STB)、電話、移動電話、携帯電話、ハンドセット、ワイヤレスアクセスポイント、基地局(BS)、加入者局(SS)、移動加入者センタ(MSC)、ラジオネットワークコントローラ(RNC)、マイクロプロセッサ、ASIC等の集積回路、プログラマブルロジックデバイス(PLD)、汎用プロセッサやデジタルシグナルプロセッサ(DSP)やネットワークプロセッサ等のプロセッサ、インタフェース、入出力(I/O)デバイス(例えば、キーボード、マウス、ディスプレイ、プリンタ)、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、回路、論理ゲート、レジスタ、半導体デバイス、チップ、トランジスタ、その他のデバイス、機械、ツール、機器、コンポーネント、またはこれらの組み合わせ。実施形態はこれに限定されない。
様々な実施形態において、ノードは次のものを含む、または次のものとして実施される:ソフトウェア、ソフトウェアモジュール、アプリケーション、プログラム、サブルーチン、命令セット、コンピューティングコード、ワード、値、記号、またはこれらの組み合わせ。ノードは、プロセッサにある機能の実行を命令する所定のコンピュータ言語、方法、またはシンタックスで実施される。コンピュータ言語の例としては、C、C++、Java(登録商標)、BASIC、Perl、Matlab、Pascal、VisualBASIC、アセンブラ言語、機械語、プロセッサのマクロコード等がある。実施形態はこれに限定されない。
様々な実施形態では、メディア処理システム100は、1つ以上のプロトコルに従って情報を通信、管理、または処理する。プロトコルは、ノード間の通信を管理する所定のルールまたは命令の集合である。プロトコルは、ITU(International Telecommunications Union)、ISO(International Organization for Standardization)、IEC(International Electrotechnical Commission)、IEEE(Institute of Electrical and Electronics Engineers)、IETF(Internet Engineering Task Force)、MPEG(Motion Picture Experts Group)等の標準化機関により公表された1つ以上の標準規格により規定され得る。例えば、ここに説明する実施形態は次のメディア処理の標準規格に従って動作するように構成し得る:NTSC(National Television System Committee)、PAL(Phase Alteration by Line)、MPEG−1、MPEG−2、MPEG−4、DVB−T(Digital Video Broadcasting Terrestrial)放送、ITU/IEC H.263、低ビットレート通信用ビデオ符号化、2000年11月に公表されたITU−T H.263v3、ITU/IEC H.264、超低ビットレート通信用ビデオ符号化、2003年5月に公表されたITU−T H.264などである。実施形態はこれに限定されない。
実施形態によっては、メディア処理システム100のノードは、メディア情報や制御情報等の異なるタイプの情報を通信、管理、または処理するように構成されている。メディア情報の例としては、一般的には、ボイス情報、ビデオ情報、オーディオ情報、画像情報、テキスト情報、数値情報、英数字記号、グラフィックス等のユーザに意味のある任意のデータを含む。制御情報は、自動化されたシステム向けのコマンド、命令、制御ワードを表す任意のデータを指す。例えば、制御情報を用いてシステム内でメディア情報をルーティングし、デバイス間を接続し、所定の方法でメディア情報を処理するようにノードに支持する。実施形態はこれに限定されない。
実施形態によっては、メディア処理システム100は有線通信システム、無線通信システム、またはこれらの組み合わせとして実施してもよい。メディア処理システム100は、例として通信メディアを用いて説明したが、言うまでもなく、ここで説明する原理と方法は任意の通信タイプとそれに付随する技術を用いて実施することもできる。実施形態はこれに限定されない。
例えば、有線システムとして実施する場合、メディア処理システム100は、1つ以上の有線通信メディアを介して情報を通信するように構成された1つ以上のノードを含む。有線通信メディアの例としては、ワイヤ、ケーブル、プリント基板(PCB)、バックプレーン、スイッチファブリック(switch fabric)、半導体材料、ツイストペア線、同軸ケーブル、ファイバオプティクスなどがある。有線通信メディアは入出力(I/O)アダプタを用いてノードに接続してもよい。I/Oアダプタは、所望の通信プロトコル、サービス、動作手順(operating procedures)を用いてノード間の情報信号を制御する任意の適切な方法で動作するように構成され得る。I/Oアダプタには、I/Oアダプタを対応する通信メディアと接続する適切な物理的コネクタも含まれる。I/Oアダプタの例には、ネットワークインタフェース、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等がある。実施形態はこれに限定されない。
例えば、無線システムとして実施する場合、メディア処理システム100は、1つ以上のタイプの無線通信メディアを介して情報を通信するように構成された1つ以上の無線ノードを含む。無線通信メディアの例としては、一般的にRFスペクトル、特にUHF(ultra-high frequency)等である無線スペクトルの一部が含まれる。無線ノードには、アンテナ、ワイヤレストランスミッタ/レシーバ(トランシーバ)、アンプ、フィルタ、制御ロジック、アンテナ等である、一定の無線スペクトルを介して情報信号を通信するコンポーネントやインタフェースが含まれる。実施形態はこれに限定されない。
実施形態によっては、メディア処理システム100は1つ以上のメディアソースノード102−1乃至102−nを含む。メディアソースノード102−1乃至102−nは、メディア処理ノード106にメディア情報及び/または制御情報を供給または配信する任意のメディアソースを含む。より具体的には、メディアソースノード102−1乃至102−nは、メディア処理ノード106にデジタルオーディオ及び/またはビデオ(AV)信号を供給または配信する任意のメディアソースを含む。メディアソースノード102−1乃至102−nの例としては、DVD(Digital Versatile Disk)装置、VHS(Video Home System)装置、デジタルVHS装置、パーソナルビデオレコーダ、コンピュータ、ゲーム機、CD(Compact Disc)プレーヤ、コンピュータ読み取り可能または機械読み取り可能メモリ、デジタルカメラ、カムコーダ、ビデオ監視システム、テレビ会議システム、電話システム、医療及び測定機器、スキャナシステム、コピーシステム等が含まれる。メディアソースノード102−1乃至102−nの他の例としては、メディア処理ノード106に放送信号、ストリーミングアナログ信号、デジタルAV信号を供給するメディア配信システムが含まれる。メディア配信システムの例としては、例えば、OTA(Over The Air)放送システム、地上ケーブルシステム(CATV)、衛星放送システム等がある。メディアソースノード102−1乃至102−nは、実施形態に応じて、メディア処理ノード106の内部にあっても外部にあってもよいことに留意せよ。実施形態はこれに限定されない。
実施形態によっては、メディアソースノード102−1乃至102−nから受信した入来ビデオ信号は、ビジュアル解像度フォーマットとも呼ばれる固有のフォーマットを有している。ビジュアル解像度フォーマットの例には、デジタルテレビジョン(DTV)フォーマット、高精細フォーマット(HDTV)、プログレッシブフォーマット、コンピュータディスプレイフォーマットなどがある。例えば、メディア情報は、1フレームあたり480ライン(visible lines)から1080ラインにわたる垂直解像度フォーマットと、1ラインあたり640画素(visible pixels)から1920画素にわたる水平解像度フォーマットで符号化される。例えば、一実施形態では、メディア情報は、1280水平画素と720垂直画素(1280×720)の720プログレッシブ(720p)や、1920水平画素と1080垂直画素の1080インターレース(1080i)の解像度フォーマットを有するHDTVビデオ信号で符号化される。他の実施形態では、メディア情報は、VGA(video graphics array)フォーマット解像度(640×480)、XGA(extended graphics array)フォーマット解像度(1024×768)、SXGA(super XGA)フォーマット解像度(1280×1024)、UXGA(ultra XGA)フォーマット解像度(1600×1200)などの様々なコンピュータディスプレイフォーマットに対応する解像度フォーマット(visual resolution format)を有する。実施形態はこれに限定されない。
実施形態によっては、メディア処理システム100は、メディアソースノード102−1乃至102−nと1つ以上の通信メディア104−1乃至104−mで接続されたメディア処理ノード106を含む。メディア処理ノード106は、上記の通り、メディアソースノード102−1乃至102−nから受信したメディア情報を処理するように構成された任意のノードを含む。実施形態によっては、メディア処理ノード106は、処理システム、処理サブシステム、プロセッサ、コンピュータ、デバイス、エンコーダ、デコーダ、コーダ/デコーダ(CODEC)、フィルタリングデバイス(例えば、グラフィックスケーリングデバイス、デブロッキングフィルタリングデバイス)、変換デバイス、エンターテインメントシステム、ディスプレイ、その他の任意の処理アーキテクチャを有するメディア処理デバイスを含む、またはかかるメディア処理デバイスとして実施される。実施形態はこれに限定されない。
様々な実施形態において、メディア処理ノード106はメディア処理サブシステム108を含む。メディア処理サブシステム108は、メディアソースノード102−1乃至102−nから受信したメディア情報を処理するように構成されたプロセッサ、メモリ、アプリケーションハードウェア及び/またはソフトウェアを含む。例えば、メディア処理サブシステム108は、例えば、MPEG−2圧縮されたオーディオ及び/またはビデオ信号を処理し、以下に詳しく説明するように他のメディア処理動作を実行するように構成されている。メディア処理サブシステム108は処理したメディア情報をディスプレイ110に出力してもよい。実施形態はこれに限定されない。
様々な実施形態において、メディア処理ノード106はディスプレイ110を含む。ディスプレイ110はメディアソースノード102−1乃至102−nから受信したメディア情報を表示できる任意のディスプレイである。ディスプレイ110は与えられたフォーマット解像度でメディア情報を表示する。例えば、ディスプレイ110は、メディア情報を、VGAフォーマット解像度、XGAフォーマット解像度、SXGAフォーマット解像度、UXGAフォーマット解像度等を有するディスプレイに表示する。例えば、他の実施形態では、メディア情報は、1280水平画素と720垂直画素(1280×720)の720プログレッシブ(720p)の解像度フォーマットを有するHDTVビデオ信号で符号化される。さらに他の実施形態では、メディア情報は、1920水平画素と1080垂直画素(1920×1080)の1080インターレース(1080i)の解像度フォーマットを有するHDTVビデオ信号で符号化される。ディスプレイのタイプとフォーマット解像度は設計や性能的な制約に応じて変化し、実施形態は上記の場合に限定はされない。
一般的な動作において、メディア処理ノード106は1つ以上のメディアソースノード102−1乃至102−nからメディア情報を受信する。例えば、メディア処理ノード106は、そのメディア処理ノード106と一体化した、DVDプレーヤとして実施したメディアソースノード102−1からメディア情報を受信する。メディア処理サブシステム108は、DVDプレーヤからメディア情報を読み出し、そのメディア情報をビジュアル解像度フォーマットからディスプレイ110のディスプレイ解像度フォーマットに変換して、ディスプレイ110を用いてメディア情報を再生する。
実施形態によっては、メディア処理ノード106は1つ以上のメディアソースノード102−1乃至102−nから入力画像を受信するように構成されている。入力画像は、ビデオ画像から得られ、またはそれに付随するデータやメディア情報を含む。様々な実施形態において、入力画像は、画像データ、ビデオデータ、ビデオシーケンス、写真のグループ、写真、画像、領域、オブジェクト、フレーム、スライス、マクロブロック、ブロック画素、信号等を含む。画素に割り当てられた値は実数及び/または整数を含む。
様々な実施形態において、メディア処理ノード106は、MPEG−2で圧縮されたオーディオ及び/またはビデオ(AV)信号用のグラフィックスディスプレイデバイスドライバとして動作するように構成されている。より具体的には、一実施形態のメディア処理ノードは、マクロブロック命令を直接生成してそれを専用バッファに格納することにより、ハードウェアベースの動き補償フレーム間予測(HWMC)グラフィックスディスプレイデバイスドライバのマクロブロックデータ解析ボトルネックを緩和する。例えば、一実施形態は、他のすべてのHWMC命令のためのDMA命令実行バッファとは別に、マクロブロック命令のための独立したDMA命令実行バッファを含む。マクロブロック命令を生成して他のHWMC命令とは別に処理することにより、専用のグラフィックス処理ユニット(GPU、Graphics Processing Unit)を活かして、グラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散(share)する。
例えば、一実施形態では、メディア処理ノード106のメディア処理サブシステム108は、他のすべてのHWMC命令のDMA命令実行バッファとは別に、マクロブロック命令のための独立したDMA命令実行バッファを含むように構成される。マクロブロック命令を生成して他のHWMC命令とは別に処理することにより、GPUを多く利用して、グラフィックスディスプレイデバイスドライバのプロセッサワークロードを分散(share)する。メディア処理サブシステム108は、所定の数学的関数を利用して、HWMC命令(例えば、生成、パス、シーケンス、バッファリング等)や出力(例えば、ディスプレイ110)を制御し、メディア処理システム100の性能を向上させる。メディア処理システム100の概略、特にメディア処理サブシステム108を図2を参照してより詳しく説明する。
図2は、メディア処理サブシステム108の一実施形態を示す図である。図2は、図1を参照して説明したメディア処理ノード106との使用に適したメディア処理サブシステム108を示すブロック図である。実施形態は図2に示した実施例には限定されない。
図2に示したように、メディア処理サブシステム108は複数の構成要素を含む。1つ以上の構成要素は、設計や性能上の制約に応じて、回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール、またはこれらの任意の組み合わせを用いて実施できる。図2は例としてあるトポロジで接続された少数の構成要素を示しているが、言うまでもなく、実施形態によっては、メディア処理サブシステム108において任意の適切なトポロジで接続されたより多くまたは少ない構成要素を使用してもよい。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108はプロセッサ202を含む。プロセッサ202は、CISC(complex instruction set computer)マイクロプロセッサ、RISC(reduced instruction set computing)マイクロプロセッサ、VLIW(very long instruction word)マイクロプロセッサ、複数の命令セットを有するプロセッサその他の任意のプロセッサやロジックデバイスを用いて実施される。例えば、一実施形態では、プロセッサ202は、米国カリフォルニア州サンタクララ市のインテル コーポレイションガ生産するプロセッサ等の汎用プロセッサであってもよい。プロセッサ202は、コントローラ、マイクロコントローラ、エンベディッドプロセッサ、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、メディアプロセッサ、入出力(I/O)プロセッサ、メディアアクセスコントロール(MAC)プロセッサ、ラジオベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)等の専用プロセッサとして実施することもできる。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108はプロセッサ202に結合されたメモリ204を含む。実施形態によっては、メモリ204は、通信バス214、またはプロセッサ202とメモリ204の間の専用通信バスを介してプロセッサ202と結合されていてもよい。メモリ204は、揮発性メモリ及び不揮発性メモリの両方を含む、データを格納できる機械読み取り可能またはコンピュータ読み取り可能媒体を用いて実施できる。例えば、メモリ204には、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電ポリマーメモリ等のポリマーメモリ、オボニック(ovonic)メモリ、相変化または強誘電メモリ、SONOS(silicon-oxide-nitride-oxide-silicon)メモリ、磁気または光カード、その他の情報を格納するのに適した他の任意のタイプのメディアを含む。メモリ204の少なくとも一部は、プロセッサ202と同じ集積回路に含まれてもよく、あるいは、メモリ204の少なくとも一部は、プロセッサ202の集積回路とは別の集積回路その他の媒体(例えば、ハードディスクドライブ)に配置してもよい。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108はトランシーバ206を含む。トランシーバ206は、所望の無線プロトコルにより動作するように構成されたラジオトランスミッタ及び/またはレシーバである。無線プロトコルの例としては、IEEE802.11a/b/g/n、IEEE802.16、IEEE802.20等のIEEE802.xxシリーズのプロトコルなどの様々なワイヤレスLANプロトコルが含まれる。無線プロトコルの他の例としては、GPRS(General Packet Radio Service)を有するGSM(Global System for Mobile Communications)携帯電話システムのプロトコル、IxRTTを有するCDMA(Code Division Multiple Access)携帯電話通信システム、EDGE(Enhanced Data Rates for Global Evolution)システムなどのワイヤレスWANプロトコルを含んでもよい。無線プロトコルの他の例としては、赤外線プロトコル、ブルートゥース仕様v1.0、v1.1、v1.2、v2.0、EDR(Enhanced Data Rate)v2.0及びブルートゥースプロファイル(まとめて「ブルートゥース仕様」と呼ぶ)を含むブルートゥースSIG(Special Interest Group)のプロトコル等のワイヤレスPAN(personal area network)が含まれる。他のプロトコルとして、UWB(Ultra Wide Band)、DO(Digital Office)、デジタルホーム、TPM(Trusted Platform Module)、ZigBeeその他のプロトコルが含まれる。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108はモジュールを含む。モジュールは、設計や性能上の制約に応じて、システム、サブシステム、プロセッサ、デバイス、マシン、ツール、コンポーネント、回路、レジスタ、アプリケーション、プログラム、サブルーチンを含む、またはこれらの任意の組み合わせを用いて実施できる。実施形態はこれに限定されない。
例えば、一実施形態では、メディア処理システム108はHWMCモジュール208を含む。HWMCモジュール208は、所定の数学的関数またはアルゴリズムに従って上で説明したように、GPUがMPEG−2圧縮されたAV信号を処理する命令の生成、パス、シーケンス、及び/またはバッファリングを調整するために仕様される。例えば、所定の数学的関数またはアルゴリズムは、メモリ204、大規模記憶装置210、ハードウェア実施のルックアップテーブル(LUT)216等に格納できる。言うまでもなく、HWMC208は、プロセッサ202が実行するソフトウェア、専用ハードウェア、またはこれらの組み合わせにより実施できる。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108は大規模記憶装置210を含む。大規模記憶デバイス210の例としては、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、CD−R、CD−RW、光ディスク、磁気メディア、光磁気メディア、リムーバブルメモリカードまたはディスク、様々なタイプのDVDデバイス、テープデバイス、カセットデバイス等が含まれる。実施形態はこれに限定されない。
様々な実施形態において、メディア処理サブシステム108はI/Oアダプタ212を含む。I/Oアダプタ212の例としては、USB(Universal Serial Bus)ポート/アダプタ、IEEE1394ファイアワイヤポート/アダプタ等がある。実施形態はこれに限定されない。
一般的な動作において、メディア処理サブシステム108は1つ以上のメディアソースノード102−1乃至102−nからメディア情報を受信する。例えば、メディアソースノード102−1は、プロセッサ202に接続されたDVDデバイスを含む。あるいは、メディアソース102−2は、MPEG符号化されたAVファイル等のデジタルAVファイルを格納したメモリ204を含む。HWMCモジュール208は、大規模記憶装置216及び/またはメモリ204からメディア情報を受信し、(例えば、プロセッサ202により)そのメディア情報を処理し、メモリ204、プロセッサ202のキャッシュメモリ、またはこれらの組み合わせにメディア情報を格納またはバッファする。HWMCモジュール208の動作は、図3と図4、及び図5の論理フローに示したHWMCドライバを参照して理解できる。
図3はHWMCドライバ300を示す。一般的に、MPEG−2AV信号の場合、最新の画像(current picture)は、イントラフレームDCT(Discrete Cosine Transform)符号化係数と動き補償フレーム間予測に基づき、前の画像から変換できる。動き補償フレーム間予測は、時間とプロセッサ能力を必要とする画素ごとのレンダリングプロセス(rendering process)である。例えば、動き補償フレーム間予測は、MPEG−2ビデオコーデックプロセスにおける処理負荷全体の約30%である。
HWMCドライバ300はGPU350を含む、またはアクセス可能である。例えば、カリフォルニア州サンタクララ市のインテル コーポレイションが生産するグラフィックスチップセットの一部であるGPUは、ハードウェアベースの動き補償フレーム間予測の能力を有している。HWMCは、GPU350にプロセッサ202の動き予測フレーム間予測の付加を低減させる方法である。このように、HWMC方式は、例えば、プロセッサ202の使用にあたり、1秒当たりのフレーム数を増やすか、1秒あたり所与のフレーム数を処理する場合にプロセッサ202の使用を減らすことにより、プロセッサ202と並行して動作することにより符号化性能を改善する。
HWMCドライバ300への入力はDCT係数データ配列とマクロブロックパラメータデータ配列を含む。マクロブロックパラメータはマクロブロックのタイプ、動きのタイプ、動きベクトルとマクロブロックパラメータにより結合される。これらはすべて画像(target picture)の画素をレンダリングするGPU350に貢献する。HWMCドライバ300は、AVコーデック305がマクロブロックパラメータを1つ1つ書き込むメモリバッファを有する。HWMCドライバ300は、ビデオコーデック305がDCTデータを書き込むDCTローデータバッファ(raw data buffer)も有する。例えば、DCTデータは、ユーザが画像の全体または一部を符号化したいかに応じて、その画像の全体または一部のみを含む。AVコーデック305は、マクロブロックデータとDCTデータのバッファへの格納を完了すると、HWMCプロセスを開始するようGPU350に要求する。例えば、このようにして、プロセッサ202は開放され、次の画像の符号化またはその他のジョブの処理を行う。
HWMCドライバ300の場合、DCTデータとマクロブロックデータの違いに留意することが重要である。例えば、DCTローデータは標準的なものであり、HWMCハードウェアの実装に拘わらずGPU350が直接処理(directly consumed)できる。これとは反対に、マクロブロックデータは動き補償を制御するパラメータをすべて含み、このため、HWMCのハードウェア実装によりその命令は異なる。従って、マクロブロックデータは、HWMCドライバ300により解析され、ハードウェアに依存する動き補償命令、またはGPU350により処理される他の低レベルの命令が生成される。
より具体的には、HWMCドライバ300の場合、AVコーデック305は、マクロブロックとDCTデータを、HWMCドライバ300により提供されるデータバッファに格納する。カーネルスペースのマクロブロックデータバッファ325をユーザスペースのマクロブロックデータバッファ320にマッピングすると、ユーザスペースで実行されているので、AVコーデック305はマクロブロックデータをユーザスペースのマクロブロックデータバッファ320に格納してメモリのコピーを回避することができる。上記の通り、DCTデータとは異なり、マクロブロックデータはプラットフォームに依存しないでHWMCドライバ300により規定される。従って、HWMCドライバ300は、マクロブロックデータバッファ325から各マクロブロックデータを読み出してマクロブロックパラメータを解析し、GPU350のために(例えば、命令ジェネレータ330により)ハードウェアマクロブロック命令335を生成できる。ハードウェアマクロブロック命令335は、例えば、動きベクトル及びその他の動き補償パラメータを含む。命令ジェネレータ330は、さらに、例えばハードウェア設定、HWMC状態管理、フレーム設定、及びバッファ管理に関する命令を含むその他のHWMC命令340を生成する。ハードウェアマクロブロック命令335及びその他のHWMC命令340を、GPU350のGPUダイレクトメモリアクセス(DMA)命令実行バッファに書き込み、読み出して実行する。
例えば、1080iHD画像(インターレースされた1920×1080の解像度フォーマット)の場合、マクロブロックデータのサイズは約200キロバイトである。上記のように、ビデオコーデック305は、マクロブロックデータを、ユーザスペースのマクロブロックデータバッファ320にマッピングされたマクロブロックデータバッファ325に格納する。その後、HWMCドライバ300がマクロブロックデータバッファ325からのマクロブロックデータを解析し、命令ジェネレータ330が命令(例えば、ハードウェアマクロブロック命令335とその他のHWDMC命令340の両方)を生成し、GPU DMA命令実行バッファ345に格納し、GPU350が実行する。命令ジェネレータ330によるハードウェアマクロブロック命令335の生成は、HWMCドライバ300のためのプロセッサ202の使用量の約95%までを占める。このように、ハードウェアマクロブロック命令335の生成は、HWMCドライバ300の性能阻害要因(performance-hindering feature)または「ボトルネック」となり得る。
さらに、HWMCドライバ300の場合、HWMCドライバ300のプロセスは他のグラフィックスオペレーションが解釈できるので、GPU DMA命令実行バッファ345をユーザと直接共有することが不可能である。かかる場合、DMA命令実行バッファ345をロックすれば、他のグラフィックスオペレーションがロックされ、メディア処理システム100またはサブシステムに損害が及ぶ。
図4は一実施形態によるHWMCドライバ400を示す図である。図3を参照して説明したように、命令ジェネレータ330によるハードウェアマクロブロック命令335の生成は、HWMCドライバ300の性能阻害要因(performance-hindering feature)または「ボトルネック」となり得る。HWMCドライバ400は、HWMCドライバ300のマクロブロックデータの解析やマクロブロック命令335の生成のボトルネックを緩和する様々な機能を含む。
例えば、HWMCドライバ400は、GPU DMA命令実行バッファ345とは独立したマクロブロック命令420のスタンドアロンGPU DMA命令バッファを含む。従って、マクロブロック命令420のGPU DMA命令バッファはハードウェアマクロブロック命令335を格納し、GPU DMA命令実行バッファ345はその他のHWMC命令340を格納する。さらに、マクロブロック命令420のGPU DMA命令バッファを、マクロブロックデータバッファ320としてユーザスペースにマッピングする。
一実施形態では、GPU350はハードウェア命令のバッチバッファを実行できる。従って、GPU350は、GPU DMA命令実行バッファ345に格納されたその他のHWMC命令340を実行し、マクロブロック命令420を取得するためGPU DMA命令バッファに格納されたハードウェアマクロブロック命令335にジャンプし、取得したマクロブロック命令420をバッチとして処理し、終わるとその他のHWMC命令340に戻る。
さらに、HWMCドライバ400は、AVコーデック305からHWMCユーザライブラリ315へのアッドマクロブロック410ファンクションコール(add macroblock 410 function call)を含み、HWMCユーザライブラリ315は、AVコーデック305のマクロブロックデータ/パラメータの入力を受ける。一実施形態では、HWMCユーザライブラリ315は、命令ジェネレータ330を使用せずに、ハードウェアマクロブロック命令335を直接生成できる。ハードウェアマクロブロック命令335は、その後、ユーザスペースのマクロブロックデータバッファ320と、マクロブロック命令420のGPU DMA命令実行バッファの間にマッピングされる。このように、HWMCドライバ400は、HWMCドライバ300のボトルネック(例えば、命令ジェネレータ330がハードウェアマクロブロック命令335とその他のHWMC命令340の両方を生成すること)を緩和する。あるいは、HWMCドライバ400は、HWMCユーザライブラリ315でハードウェアマクロブロック命令335を生成し、マクロブロック命令420のGPU DMA命令実行バッファに格納したとき、HWMCドライバ400は、単にGPU350をハードウェアマクロブロック命令335をバッチバッファ命令実行として実行するように設定するだけである。その後、例えば、GPU350は、ファンクションコールと同様に、バッチバッファ命令実行としてハードウェアマクロブロック命令335を実行すると、GPU DMA命令実行バッファ345に格納されたその他のHWMC命令340に戻る。
また、アッドマクロブロック410ファンクションコール(add macroblock 410 function call)によりマクロブロック命令335をユーザスペース(例えばマクロブロックデータバッファ320)にマッピングすることにより、ユーザがマクロブロックデータバッファ325に書くのと比較してインタフェースが便利でユーザフレンドリになる。さらに、一実施形態のHWMCユーザライブラリ315がアプリケーションプログラミングインタフェース(API)を提供するので、AVコーデック305がソフトウェア動き補償からハードウェア動き補償に変更しやすくなる。さらに、ハードウェアマクロブロック命令335は他のHWMC命令340よりもデータ指向である。結果として、ハードウェアマクロブロック命令335を生成するHWMCユーザライブラリ315は、HWMCドライバ300の方式(scheme)よりもデバッグとメンテナンスが容易である。最後に、ハードウェアマクロブロック命令335を生成するHWMCユーザライブラリ315により、望めば、HWMCドライバ400の詳細を開示しなくても、ハードウェアマクロブロック命令335のフォーマットをユーザに開示できる。
一実施形態では、HWMCドライバ400の性能はHWMCドライバ300よりよいことを説明した。例えば、MPEG−2 1080iAVストリームの場合、インテルGMCH82854サンセットバレー開発基板でテストしたHWMCドライバ400では性能が50%改善された。より具体的には、1秒あたり15フレームのHWMCドライバ300と比較して、一実施形態のHWMCドライバ400は、例えばプロセッサ202の付加を増大させずに1秒あたり24フレームを処理できる。
図5は、一実施形態の論理フローを示す図である。例えば、ステップ510において、AVコーデック305がマクロブロックとDCTデータを受信すると、ファンクションコールによりマクロブロックデータをHWMCユーザライブラリ315に追加する。ステップ520において、HWMCユーザライブラリ315はハードウェアマクロブロック命令335を生成し、ステップ530において、ハードウェアマクロブロック命令335をマクロブロックデータバッファ320に格納する。その後、ステップ540において、マクロブロックデータバッファ320に格納されたハードウェアマクロブロック命令335は、マクロブロック命令420のGPU DMA命令実行バッファにマッピングされ、ステップ550において、そのバッファからGPUはハードウェアマクロブロック命令335を実行する。
実施形態をよく理解してもらうため具体的な詳細を説明した。しかし、当業者には言うまでもなく、これらの実施形態はこれらの具体的な詳細がなくても実施することができる。他の場合には、周知の動作、コンポーネント、回路は実施形態を分かりにくくしないように、詳細には説明していない。言うまでもなく、ここに開示した詳細な構造や機能は代表的なものであり、必ずしも実施形態の範囲を限定するものではない。
また、留意すべき点として、「一実施形態」とは、その実施形態に関して説明する具体的な機能、構造、特徴が少なくとも1つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所で「一実施形態とは」と記載するが、必ずしも同じ実施形態を指すものではない。
実施形態は、所望の計算レート、パワーレベル、耐熱、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、その他の性能上の制約などの要因により変わりうる。例えば、一実施形態は汎用プロセッサまたは専用プロセッサにより実行されるソフトウェアを用いて実施できる。他の実施例では、一実施形態は専用ハードウェアとして実施できる。さらに他の実施例では、プログラムされた汎用コンピュータコンポーネントやカスタムハードウェアコンポーネントの任意の組み合わせで実施できる。実施形態はこれに限定されない。
さまざまな実施形態をハードウェア要素を用いて実施できる。一般的に、ハードウェア要素は、ある動作を実行するように構成された任意のハードウェア構成を指す。例えば、一実施形態では、ハードウェア要素には基板上に形成されたアナログまたはデジタルの電気的または電子的要素が含まれる。生産は、CMOS、バイポーラ、バイポーラCMOS(BiCMOS)等のシリコンベースの集積回路(IC)技術を用いて行われる。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路要素(例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど)、集積回路、ASIC、PLD、DSP、FPGA、論理ゲート、レジスタ、半導体装置、チップ、マイクロチップ、チップセット等を含む。実施形態はこれに限定されない。
さまざまな実施形態をソフトウェア要素を用いて実施できる。一般的に、ソフトウェア要素は、ある動作を実行するように構成された任意のソフトウェア構成を指す。例えば、一実施形態では、ソフトウェア要素はプロセッサ等のハードウェア要素が実行するように構成されたプログラム命令及び/またはデータを含む。プログラム命令には、実行された時にプロセッサに対応する一組の動作を実行させる、所定シンタックスで構成されたワード、値、またはシンボルを含む組織だったコマンドのリストが含まれる。ソフトウェアはプログラミング言語を用いて書かれ、またはコード化されていてもよい。コンピュータ言語の例としては、C、C++、BASIC、Perl、Matlab、Pascal、VisualBASIC、Java(登録商標)、ActiveX、アセンブラ言語、及び機械語、プロセッサのマクロコード等がある。ソフトウェアは任意タイプのコンピュータ読み取り可能メディアまたは機械読み取り可能メディアを用いて格納できる。さらに、ソフトウェアは、メディアに、ソースコードとして格納してもオブジェクトコードとして格納してもよい。ソフトウェアは、メディアに、圧縮データとして、及び/または暗号化したデータとして格納してもよい。ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの組み合わせが含まれる。実施形態はこれに限定されない。
一部の実施形態では、「結合された」や「接続された」またはこれらの派生形を用いて説明した。言うまでもなく、これらの用語は互いに同意語として使用したものではない。例えば、一部の実施形態は「接続」という用語を用いて説明し、複数の要素が互いに物理的または電気的に直接的に接触していることを示している。他の例では、一部の実施形態は「結合」という用語を用いて説明し、複数の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合」という用語は、複数の要素が互いに直接接触してないが、互いに協働または相互作用することを示している。実施形態はこれに限定されない。
一部の実施形態は、例えば、機械により実行されると、その機械に実施形態による方法及び/または動作を実行させる命令またはそのセットを格納した、機械読み出し可能メディアまたは製品(article)を用いて実施される。かかる機械には、例えば、好適な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータプロセッサ等を含んでもよいし、好適なハードウェア及び/またはソフトウェアの組み合わせを用いて実施してもよい。機械読み出し可能媒体または製品には、例えば、任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリメディア、記憶デバイス、記憶製品、記憶メディア及び/または記憶ユニット、例えば、メモリ、リムーバブルまたは非リムーバブルメディア、消去可能または非消去可能メディア、書き込み可能または非書き込み可能メディア、デジタルまたはアナログメディア、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、CD−R、CD−RW、光ディスク、磁気メディア、光磁気メディア、リムーバブルメモリカードまたはディスク、様々なタイプのDVD、テープ、カセット等が含まれる。命令には、任意の適切なタイプのコードであるソースコード、コンパイルコード、インタープリタコード、実行可能コード、静的コード、動的コード等が含まれる。命令は任意の適切な高級、低級、オブジェクト指向、ビジュアル、コンパイル及び/またはインタープリタのプログラミング言語である、C、C++、Java(登録商標)、BASIC、Perl、Matlab、Pascal、VisualBASIC、アセンブラ言語、マシンコード等を用いて実施される。実施形態はこれに限定されない。
特に断らなければ、言うまでもなく、「処理」、「算出」、「計算」、「判断」等の用語は、コンピュータ、コンピューティングシステム、類似の電子的計算機器の動作やプロセスであって、コンピューティングシステムのレジスタやメモリ内の物理的(電子的)量として表されたデータを操作し、コンピューティングシステムのメモリやレジスタ、その他の情報記憶装置、伝送機器、表示機器内の物理量として同様に表された他のデータに変換するものを指す。実施形態はこれに限定されない。
実施形態の特徴をここに説明したように例示したが、当業者は多数の修正、置換、変更及び等価物を考えることができるであろう。言うまでもなく、添付した特許請求の範囲は、かかる修正や変更も実施形態の真の精神に含まれるものとしてすべてカバーするものである。
メディア処理システムの一実施形態を示す図である。 メディア処理サブシステムの一実施形態を示す図である。 ハードウェア動き補償ドライバの一実施形態を示す図である。 ハードウェア動き補償ドライバの一実施形態を示す図である。 論理フローの一実施形態を示す図である。

Claims (20)

  1. マクロブロック命令のためのダイレクトメモリアクセス命令実行バッファと、その他のハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファを、グラフィックス処理ユニットのために生成するメディア処理ノードを有する装置。
  2. 前記メディア処理ノードは、ハードウェア動き補償ユーザライブラリにマクロブロック命令を追加し、前記ハードウェア動き補償ユーザライブラリにより前記グラフィックス処理ユニットのハードウェアマクロブロック命令を生成するハードウェア動き補償モジュールを含む、請求項1に記載の装置。
  3. 前記ハードウェア動き補償モジュールは、さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納し、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファにマッピングする、請求項2に記載の装置。
  4. 前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する、請求項3に記載の装置。
  5. 前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットの他のハードウェア動き補償命令の前記ダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行する、請求項4に記載の装置。
  6. 通信メディアと、
    マクロブロック命令のためのダイレクトメモリアクセス命令実行バッファと、その他のハードウェア動き補償命令のためのダイレクトメモリアクセス命令実行バッファを、グラフィックス処理ユニットのために生成するメディア処理ノードとを有するシステム。
  7. 前記メディア処理ノードは、ハードウェア動き補償ユーザライブラリにマクロブロック命令を追加し、前記ハードウェア動き補償ユーザライブラリにより前記グラフィックス処理ユニットのハードウェアマクロブロック命令を生成するハードウェア動き補償モジュールを含む、請求項6に記載のシステム。
  8. 前記ハードウェア動き補償モジュールは、さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納し、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファにマッピングする、請求項7に記載のシステム。
  9. 前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットのマクロブロック命令の前記ダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する、請求項8に記載のシステム。
  10. 前記ハードウェア動き補償モジュールは、さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットの他のハードウェア動き補償命令の前記ダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行する、請求項9に記載のシステム。
  11. マクロブロックデータをハードウェア動き補償ユーザライブラリに追加する段階と、
    前記ハードウェア動き補償ユーザライブラリにより、グラフィックス処理ユニットのハードウェアマクロブロック命令を生成する段階とを有する方法。
  12. さらに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納する段階を有する、請求項11に記載の方法。
  13. さらに、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファにマッピングする段階を有する、請求項12に記載の方法。
  14. さらに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行する段階を有する、請求項13に記載の方法。
  15. さらに、前記グラフィックス処理ユニットにより、他のグラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き予測命令を実行する段階を有する、請求項14に記載の方法。
  16. 実行されたとき、システムに、ハードウェア動き補償ユーザライブラリにマクロブロックデータを追加し、前記ハードウェア動き補償ユーザライブラリにより、グラフィックス処理ユニットのハードウェアマクロブロック命令を生成させる命令を格納した機械読み取り可能媒体を含む製品。
  17. さらに、実行されたとき、前記システムに、マクロブロックデータバッファに前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を格納させる命令を含む、請求項16に記載の製品。
  18. さらに、実行されたとき、前記システムに、前記マクロブロックデータバッファ中の前記グラフィックス処理ユニットの前記ハードウェアマクロブロック命令を、グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファにマッピングさせる命令を含む、請求項17に記載の製品。
  19. さらに、実行されたとき、前記システムに、前記グラフィックス処理ユニットにより、前記グラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの前記ハードウェアマクロブロック命令を実行させる命令を含む、請求項18に記載の製品。
  20. さらに、実行されたとき、前記システムに、前記グラフィックス処理ユニットにより、他のグラフィックス処理ユニットダイレクトメモリアクセス命令実行バッファからの他のハードウェア動き補償命令を実行させる命令を含む、請求項19に記載の製品。
JP2008548587A 2005-12-30 2006-12-14 ビデオレコーディングにおけるハードウェア動き補償 Pending JP2009522650A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/323,173 US8249140B2 (en) 2005-12-30 2005-12-30 Direct macroblock mode techniques for high performance hardware motion compensation
PCT/US2006/048046 WO2007078888A1 (en) 2005-12-30 2006-12-14 Hardware motion compensation for video decoding

Publications (1)

Publication Number Publication Date
JP2009522650A true JP2009522650A (ja) 2009-06-11

Family

ID=37964117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008548587A Pending JP2009522650A (ja) 2005-12-30 2006-12-14 ビデオレコーディングにおけるハードウェア動き補償

Country Status (6)

Country Link
US (1) US8249140B2 (ja)
EP (1) EP1967009A1 (ja)
JP (1) JP2009522650A (ja)
CN (1) CN101310538B (ja)
TW (1) TWI353184B (ja)
WO (1) WO2007078888A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160087730A (ko) * 2015-01-14 2016-07-22 한화테크윈 주식회사 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8249140B2 (en) 2005-12-30 2012-08-21 Intel Corporation Direct macroblock mode techniques for high performance hardware motion compensation
JP4691062B2 (ja) * 2007-03-30 2011-06-01 株式会社東芝 情報処理装置
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
EP2822262B1 (en) * 2011-08-17 2019-04-03 Telefonaktiebolaget LM Ericsson (publ) Mechanism of dynamic signaling of encoder capabilities
US8570318B2 (en) 2011-08-25 2013-10-29 Intel Corporation Collaborative graphics rendering using mobile devices to support remote display
CN102404576A (zh) * 2011-11-30 2012-04-04 国云科技股份有限公司 云终端解码器及其负载均衡算法和gpu的解码算法
TWI554093B (zh) * 2013-09-12 2016-10-11 鴻海精密工業股份有限公司 電子裝置
US12058309B2 (en) 2018-07-08 2024-08-06 Mellanox Technologies, Ltd. Application accelerator
US20230107012A1 (en) * 2021-10-05 2023-04-06 Mellanox Technologies, Ltd. Hardware accelerated video encoding

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421151A (ja) * 1990-05-16 1992-01-24 Fujitsu Ltd 画面入出力処理方式
JPH06131194A (ja) * 1992-10-22 1994-05-13 Hitachi Ltd 計算機システムおよび計算機ネットワークシステム
JPH10260832A (ja) * 1997-03-18 1998-09-29 Hitachi Ltd 情報処理装置
JPH11298857A (ja) * 1998-02-13 1999-10-29 Matsushita Electric Ind Co Ltd 記憶装置において多くの領域を占めているフレ―ム領域に他の用途を与えるよう画像復号を行う画像復号装置及び画像復号プログラムを記録したコンピュ―タ読取可能な記録媒体
EP1009170A2 (en) * 1998-12-08 2000-06-14 STMicroelectronics, Inc. System, method and apparatus for a variable output video decoder
JP2001084215A (ja) * 1999-07-12 2001-03-30 Matsushita Electric Ind Co Ltd データ処理装置
JP2002027483A (ja) * 2000-07-11 2002-01-25 Hitachi Ltd 画像符号化装置、画像復号化装置および記憶媒体
US20030005262A1 (en) * 2001-06-28 2003-01-02 Sailesh Kottapalli Mechanism for providing high instruction fetch bandwidth in a multi-threaded processor
WO2003043345A1 (en) * 2001-11-16 2003-05-22 Ntt Docomo, Inc. Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system
JP2003284024A (ja) * 2001-12-04 2003-10-03 Microsoft Corp セキュアコンテンツを暗号的に保護する方法およびシステム
JP2004056806A (ja) * 2003-07-24 2004-02-19 Oki Electric Ind Co Ltd 動画像符号化方法及び動画像復号方法
WO2004095708A2 (en) * 2003-03-28 2004-11-04 Microsoft Corporation Accelerating video decoding using a graphics processing unit

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH061441B2 (ja) 1983-09-12 1994-01-05 モトロ−ラ・インコ−ポレ−テツド 先取り確認装置
US5774206A (en) * 1995-05-10 1998-06-30 Cagent Technologies, Inc. Process for controlling an MPEG decoder
JP3938605B2 (ja) * 1996-03-22 2007-06-27 パイオニア株式会社 情報記録装置及び方法、情報再生装置及び方法並びに情報処理装置及び方法
US5920353A (en) * 1996-12-03 1999-07-06 St Microelectronics, Inc. Multi-standard decompression and/or compression device
US7885336B2 (en) * 2001-02-05 2011-02-08 Ati Technologies Ulc Programmable shader-based motion compensation apparatus and method
US8249140B2 (en) 2005-12-30 2012-08-21 Intel Corporation Direct macroblock mode techniques for high performance hardware motion compensation

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421151A (ja) * 1990-05-16 1992-01-24 Fujitsu Ltd 画面入出力処理方式
JPH06131194A (ja) * 1992-10-22 1994-05-13 Hitachi Ltd 計算機システムおよび計算機ネットワークシステム
JPH10260832A (ja) * 1997-03-18 1998-09-29 Hitachi Ltd 情報処理装置
JPH11298857A (ja) * 1998-02-13 1999-10-29 Matsushita Electric Ind Co Ltd 記憶装置において多くの領域を占めているフレ―ム領域に他の用途を与えるよう画像復号を行う画像復号装置及び画像復号プログラムを記録したコンピュ―タ読取可能な記録媒体
EP1009170A2 (en) * 1998-12-08 2000-06-14 STMicroelectronics, Inc. System, method and apparatus for a variable output video decoder
JP2001084215A (ja) * 1999-07-12 2001-03-30 Matsushita Electric Ind Co Ltd データ処理装置
JP2002027483A (ja) * 2000-07-11 2002-01-25 Hitachi Ltd 画像符号化装置、画像復号化装置および記憶媒体
US20030005262A1 (en) * 2001-06-28 2003-01-02 Sailesh Kottapalli Mechanism for providing high instruction fetch bandwidth in a multi-threaded processor
WO2003043345A1 (en) * 2001-11-16 2003-05-22 Ntt Docomo, Inc. Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system
JP2003284024A (ja) * 2001-12-04 2003-10-03 Microsoft Corp セキュアコンテンツを暗号的に保護する方法およびシステム
WO2004095708A2 (en) * 2003-03-28 2004-11-04 Microsoft Corporation Accelerating video decoding using a graphics processing unit
JP2007525049A (ja) * 2003-03-28 2007-08-30 マイクロソフト コーポレーション グラフィックス処理ユニットを使用してビデオ復号化を加速すること
JP2004056806A (ja) * 2003-07-24 2004-02-19 Oki Electric Ind Co Ltd 動画像符号化方法及び動画像復号方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160087730A (ko) * 2015-01-14 2016-07-22 한화테크윈 주식회사 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치
KR102366519B1 (ko) 2015-01-14 2022-02-23 한화테크윈 주식회사 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치

Also Published As

Publication number Publication date
US8249140B2 (en) 2012-08-21
TW200746841A (en) 2007-12-16
US20070153008A1 (en) 2007-07-05
CN101310538B (zh) 2013-07-10
CN101310538A (zh) 2008-11-19
TWI353184B (en) 2011-11-21
WO2007078888A1 (en) 2007-07-12
EP1967009A1 (en) 2008-09-10

Similar Documents

Publication Publication Date Title
JP2009522650A (ja) ビデオレコーディングにおけるハードウェア動き補償
US8897365B2 (en) Video rate control processor for a video encoding process
US8787465B2 (en) Method for neighboring block data management of advanced video decoder
US10397574B2 (en) Video coding quantization parameter determination suitable for video conferencing
US20170264904A1 (en) Intra-prediction complexity reduction using limited angular modes and refinement
EP4218240A1 (en) Template matching prediction for versatile video coding
US20120082209A1 (en) Method and apparatus for dynamically adjusting video quality
CN107113435B (zh) 分区模式和变换尺寸确定方法、装置、系统及介质
US20230386087A1 (en) A method and an apparatus for encoding/decoding at least one attribute of an animated 3d object
US20240214553A1 (en) Spatial local illumination compensation
EP3706421A1 (en) Method and apparatus for video encoding and decoding based on affine motion compensation
EP3854098A1 (en) Method and device for picture encoding and decoding
TWI414185B (zh) 用以執行用於視訊處理之動作檢測的裝置、方法、系統及電腦可讀儲存媒體
US20210321093A1 (en) Method and system of video coding with efficient intra block copying
CN109922348B (zh) 图像编解码方法和装置
US20070127578A1 (en) Low delay and small memory footprint picture buffering
EP3957073A1 (en) Method and apparatus for video encoding and decoding with optical flow based on boundary smoothed motion compensation
TWI325280B (en) Interleaved video frame buffer structure
US20220109889A1 (en) Apparatus, articles of manufacture, and methods for improved adaptive loop filtering in video encoding
US20240031607A1 (en) Scaling list control in video coding
WO2020135371A1 (zh) 一种标志位的上下文建模方法及装置
WO2024012810A1 (en) Film grain synthesis using encoding information
CA3232995A1 (en) Improving the angle discretization in decoder side intra mode derivation
CN113489997A (zh) 一种运动矢量预测方法、装置、存储介质及终端

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110307

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110426