JP4920034B2 - マルチスレッドsimd処理を利用したメディア符号化の並列実行 - Google Patents

マルチスレッドsimd処理を利用したメディア符号化の並列実行 Download PDF

Info

Publication number
JP4920034B2
JP4920034B2 JP2008512323A JP2008512323A JP4920034B2 JP 4920034 B2 JP4920034 B2 JP 4920034B2 JP 2008512323 A JP2008512323 A JP 2008512323A JP 2008512323 A JP2008512323 A JP 2008512323A JP 4920034 B2 JP4920034 B2 JP 4920034B2
Authority
JP
Japan
Prior art keywords
blocks
flag
coefficients
simd
macroblock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008512323A
Other languages
English (en)
Other versions
JP2008541663A (ja
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 JP2008541663A publication Critical patent/JP2008541663A/ja
Application granted granted Critical
Publication of JP4920034B2 publication Critical patent/JP4920034B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Description

発明の詳細な説明
[背景]
メディアデータを符号化するための各種技術が、MPEG(Moving Picture Expert Group)、ITU(International Telecommunications Union)、ISO(International Organization for Standardization)、IEC(International Electrotechnical Commission)などの組織によって公表された規格に記載されている。例えば、MPEG−1、MPEG−2及びMPEG−4ビデオ圧縮規格は、ピクチャがスライス、マクロブロック及びブロックに分割されるブロック符号化技術について記載している。時間動き予測及び/又は空間予測を実行した後、ブロック内の残差値がエントロピー符号化される。エントロピー符号化の一般的な例は、データシンボルを可変長符号に変換することに関する可変長符号化(VLC)である。より複雑なエントロピー符号化の具体例として、コンテクストベースアダプティブ可変長符号化(CAVLC)やコンテクストベースアダプティブバイナリ算術符号化(CABAC)があげられ、これらは、MPEG−4 Part 10やITU−T Recommendation H.264のITU/IEC H.264ビデオ圧縮規格“Video Coding for Very Low Bit Rate Communication”(2003年5月)に規定されている。
ビデオエンコーダは、典型的には、固定ファンクションロジック又はスからプロセッサによって実現される単一ユニットによるシーケンシャルな符号化を実行する。エントロピー符号化に用いられるコンプレクシティの増大によって、シーケンシャルなビデオ符号化はMulti−GHzマシーンによってさえ大量のプロセッサ時間を消費する。
[詳細な説明]
図1は、ノードの一実施例を示す。図1は、メディア処理ノード100のブロック図を示す。ノードは、一般にシステム100において情報を通信するための任意の物理的又は論理的エンティティを有し、所与の設計パラメータセット又はパフォーマンス制約に対して所望されるようなハードウェア、ソフトウェア又はそれらの何れかの組み合わせとして実現可能である。
各種実施例では、ノードは、コンピュータシステム、コンピュータサブシステム、コンピュータ、家電機器、ワークステーション、ターミナル、サーバ、パーソナルコンピュータ(PC)、ラップトップ、ウルトララップトップ、携帯コンピュータ、携帯情報端末(PDA)、セットトップボックス(STB)、電話、携帯電話、ハンドセット、無線アクセスポイント、基地局、無線ネットワークコントローラ(RNC)、移動加入者センター(MSC)、マイクロプロセッサ、特定用途向け集積回路(ASIC)などの集積回路、プログラマブルロジックデバイス(PLD)、汎用プロセッサ、デジタル信号プロセッサ(DSP)及び/若しくはネットワークプロセッサなどのプロセッサ、インタフェース、入出力(I/O)デバイス(キーボード、マウス、ディスプレイ、プリンタなど)、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、回路、ロジックゲート、レジスタ、半導体デバイス、チップ、トランジスタ、若しくは他の何れかのデバイス、マシーン、ツール、装置、コンポーネント又はそれらの組み合わせから構成又は実現されてもよい。
各種実施例では、ノードは、ソフトウェア、ソフトウェアモジュール、アプリケーション、サブルーチン、命令セット、計算コード、ワード、値、シンボル又はこれらの組み合わせから構成又は実現されてもよい。ノードは、プロセッサに特定のファンクションを実行するよう維持するための所定のコンピュータ言語、方法又はシンタックスに従って実現されてもよい。コンピュータ言語の具体例として、C、C++、Java(登録商標)、BASIC、Perl、Matlab、Pascal、Visual BASIC、アセンブリ言語、マシーンコード、ネットワークプロセッサ用のマイクロコードなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、メディア処理ノード100は、処理システム、処理サブシステム、プロセッサ、コンピュータ、デバイス、エンコーダ、デコーダ、コーダ/デコーダ(CODEC)、圧縮装置、解凍装置、フィルタリング装置(グラフィックスケーリング装置、デブロッキングフィルタリング装置など)、変換装置、エンターテイメントシステム、ディスプレイ又は他の何れかの処理アーキテクチャから構成又は実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、メディア処理ノード100は、1以上の処理演算を実行するよう構成されてもよい。処理演算は、一般に情報の生成、管理、通信、送信、受信、格納、転送、アクセス、読み込み、書き込み、操作、符号化、復号化、圧縮、解凍、再構成、暗号化、フィルタリング、ストリーミング又は他の処理などの1以上の演算を表すかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、メディア処理ノード100は、ビデオ情報などの1以上のタイプの情報を処理するよう構成されるかもしれない。ビデオ情報は、一般に1以上のビデオ画像から導出される又は関連付けされる任意のデータを表すかもしれない。一実施例では、例えば、ビデオ情報は、ビデオデータ、ビデオシーケンス、ピクチャグループ、ピクチャ、オブジェクト、フレーム、スライス、マクロブロック、ブロック、ピクセルなどの1以上から構成されるかもしれない。ピクセルに割り当てられる値は、実数及び/又は整数から構成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、例えば、メディア処理ノード100は、格納又はストリーミング可能なファイルへのビデオデータの符号化及び/又は圧縮、格納されているファイル若しくはメディアストリームからのビデオデータの復号化及び/又は解凍、フィルタリング(グラフィックスケーリング、デブロッキングフィルタリングなど)、ビデオ再生、インターネットベースビデオアプリケーション、テレビ会議アプリケーション、ストリーミングビデオアプリケーションなどのメディア処理演算を実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、メディア処理ノード100は、1以上のプロトコルに従って情報を通信、管理又は処理するかもしれない。プロトコルは、ノード間の通信を管理するための所定のルール又は命令セットから構成されるかもしれない。プロトコルは、ITU、ISO、IEC、MPEG、IETF(Internet Engineering Task Force)、IEEE(Institute of Electrical and Electronics Engineers)などの標準化組織によって公表されるような1以上の規格によって定義されるかもしれない。例えば、記載される実施例は、MPEG−1、MPEG−2、MPEG−4及びH.264規格などのビデオ処理のための規格に従って動作するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、メディア処理ノード100は複数のモジュールから構成されるかもしれない。これらのモジュールは、所与の設計又はパフォーマンス制約セットについて所望されるような1以上のシステム、サブシステム、プロセッサ、デバイス、マシーン、ツール、コンポーネント、回路、レジスタ、アプリケーション、プログラム、サブルーチン又はこれらの何れかの組み合わせから構成又は実現されてもよい。各種実施例では、これらのモジュールは、1以上の通信メディアにより接続されるかもしれない。通信メディアは、一般に情報信号を搬送可能な任意の媒体から構成されるかもしれない。例えば、通信メディアは、所与の実現形態について所望されるような有線通信メディア、無線通信メディア又はこれらの組み合わせから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、動き推定モジュール102を有するかもしれない。各種実施例では、動き推定モジュール102は、入力ビデオデータを受信するよう構成される。各種実現形態では、入力ビデオデータのフレームは1以上のスライス、マクロブロック及びブロックから構成されるかもしれない。スライスは、例えば、Iスライス、Pスライス又はBスライスから構成され、複数のマクロブロックを有するかもしれない。各マクロブロックは、ルミナスブロック及び/又はクロミナスブロックなどの複数のブロックを有するかもしれない。一実施例では、マクロブロックは16×16ピクセルのエリアから構成され、ブロックは8×8ピクセルのエリアから構成されるかもしれない。他の実施例では、マクロブロックは、16×16、16×8、8×16、8×8、8×4、4×8及び4×4などの各種ブロックサイズに分割されるかもしれない。マクロブロック及びブロックについて参照するが、記載される実施例及び実現形態はビデオデータの他の分割に適用可能である。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、動き推定モジュール102は、1以上のマクロブロックに対して動き推定を実行するよう構成されるかもしれない。動き推定モジュール102は、1以上のリファレンスフレームに基づき、マクロブロック内の現在のブロックのコンテンツを推定するかもしれない。各種実現形態では、動き推定モジュール102は、一致するエリアを決定するため、現在フレームの1以上のマクロブロックとリファレンスフレームの周囲のエリアとを比較する。一部の実施例では、動き推定モジュール102は、動き推定を実行するため、複数のリファレンスフレーム(以前の、前の、以降のなど)を利用するかもしれない。一部の実現形態では、動き推定モジュール102は、例えば、動きベクトルを用いて現在フレームに対する1以上のリファレンスフレームの間の一致するエリアの動きを推定するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、モード決定モジュール104を有するかもしれない。各種実施例では、モード決定モジュール104は、1以上のマクロブロックに対する符号化モードを決定するよう構成されるかもしれない。符号化モードは、イントラ符号予測及び/又はインター符号予測などの予測符号化モードから構成されるかもしれない。イントラフレームブロック予測は、以前に復号化したピクセルを使用して、同一フレームからピクセル値を推定することに関するものである。インターフレームブロック予測は、シーケンスの連続するフレームからピクセル値を推定することに関するものである。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、動き予測モジュール106を有するかもしれない。各種実施例では、動き予測モジュール106は、ブロックのコンテンツを予測するため、時間動き予測及び/又は空間予測を実行するよう構成されるかもしれない。動き予測モジュール106は、イントラフレーム予測及びインターフレーム予測などの予測技術を使用するよう構成されるかもしれない。各種実現形態では、動き予測モジュール106は、双方向予測をサポートするかもしれない。一部の実施例では、動き予測モジュール106は、周囲のブロックの動きベクトルに基づき、動きベクトル予測を実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、動き予測モジュールは、現在フレームと1以上のリファレンスフレームとの間の差分に基づき、残差を提供するよう構成されるかもしれない。残差は、例えば、ブロックの予測されたコンテンツと実際のコンテンツ(ピクセル、動きベクトルなど)との間の差分から構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、FDCT(Forward Discrete Cosine Transform)などの変換モジュール108から構成されるかもしれない。各種実施例では、変換モジュール108は、残差の周波数記述を提供するよう構成されるかもしれない。各種実現形態では、変換モジュール108は、残差を周波数ドメインに変換し、周波数係数のマトリックスを生成するかもしれない。例えば、16×16のマクロブロックは、16×16の周波数係数マトリックスに変換され、8×8のブロックは、8×8の周波数係数マトリックスに変換されるかもしれない。一部の実施例では、変換モジュール108は、8×8ピクセルベース変換及び/又は4×4ピクセルベース変換を利用するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、量子化モジュール110を有するかもしれない。各種実施例では、量子化モジュール110は、変換された係数及び出力残差係数を量子化するよう構成される。各種実現形態では、量子化モジュール110は、相対的に少ない非ゼロ値係数を有する残差係数を出力するかもしれない。量子化モジュール110は、変換された周波数係数の多くをゼロにすることによって符号化を容易にするかもしれない。例えば、量子化モジュール110は、小さな係数(高周波数係数など)をゼロにする量子化係数又は量子化マトリックによって周波数係数を除するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、逆量子化モジュール112と逆変換モジュール114を有するかもしれない。各種実施例では、逆量子化モジュール112は、量子化した変換された係数を受け取り、DCT係数などの変換された係数を生成するため、逆量子化を実行するよう構成されるかもしれない。逆変換モジュール114は、DCT係数などの変換された係数を受け取り、ピクセル値を生成するため逆変換を実行するよう構成されてもよい。各種実現形態では、逆量子化及び逆変換は、量子化中に生じたロスを予測するのに利用可能である。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、動き補償モジュール116を有するかもしれない。各種実施例では、動き補償モジュール116は、逆変換モジュール114の出力を受け取り、1以上のマクロブロックに対して動き補償を実行するかもしれない。各種実現形態では、動き補償モジュール116は、現在フレームと1以上のリファレンスフレームとの間の一致するエリアの動きを補償するよう構成される。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード110は、スキャニングモジュール118を有するかもしれない。各種実施例では、スキャニングモジュール118は、量子化モジュール110から変換された量子化した残差係数を受け取り、スキャニング処理を実行するよう構成されるかもしれない。各種実現形態では、スキャニングモジュール118は、変換された量子化した残差係数のシーケンスを生成するため、ジグザグスキャニング順序などのあるスキャニング順序に従って残差係数をスキャンするかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、VLCモジュールなどのエントロピー符号化モジュール120を有するかもしれない。各種実施例では、エントロピー符号化モジュール120は、VLC(ランレベルVLCなど)、CAVLC、CABACなどのエントロピー符号化を実行するよう構成されるかもしれない。一般に、CAVLC及びCABACはVLCより複雑である。例えば、CAVLCは、整数ビットを用いて値を符号化し、CABACは、算術符号化を利用し、分数ビットを用いて値を符号化するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、エントロピー符号化モジュール120は、ハフマンテーブルを用いたランレベルVLCなどのVLC演算を実行するよう構成されるかもしれない。このような実施例では、スキャンされた変換及び量子化した係数のシーケンスは、ランレベルシンボルのシーケンスとして表されるかもしれない。各ランレベルシンボルは、レベルが非ゼロ値の係数の値であり、ランが非ゼロ値係数に先行するゼロ値係数の個数であるランレベルペアから構成されるかもしれない。例えば、もとのシーケンスX,X,X,0,0,0,0,0,Xの一部は、ランレベルシンボル(0,X)(0,X)(0,X)(5,X)として表されるかもしれない。各種実現形態では、エントロピー符号化モジュール120は、所定のハフマンテーブルセットに従って、各ランレベルシンボルを異なる長さのビットシーケンスに変換するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理ノード100は、ビットストリームパッキングモジュール122を有するかもしれない。各種実施例では、ビットストリームパッキングモジュール122は、ブロックのVLCシーケンスを構成するため、あるスキャニング順序に従ってブロックのエントロピー符号化されたビットシーケンスをパッキングするよう構成される。ビットストリームパッキングモジュール122は、マクロブロックのコードシーケンスを構成するため、あるブロック順序に従って複数のブロックのビットシーケンスをパッキングしてもよい。各種実現形態では、シンボルのビットシーケンスは、パッキング処理の逆転がブロック及びマクロブロックの一意的な復号化を可能にするのに利用可能となるように、一意的に決定されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、メディア処理ノード100は、マルチステージファンクションパイプを実現するようにしてもよい。図1に示されるように、例えば、メディア処理ノード100は、ステージAにおいて動き推定処理に、ステージBにおいて符号化処理に、及びステージCにおいてビットストリームパッキング処理に分割されたファンクションパイプを実現してもよい。一部の実現形態では、ステージBの符号化処理はさらに分割されてもよい。各種実施例では、メディア処理ノード100は、マルチスレッドコンピュータアーキテクチャについて利用可能な並列化を実行するため、ファンクション及びデータドメインベース分割を実現してもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、個別のスレッドは、動き推定ステージ、符号化ステージ及びパックビットストリームステージを実行してもよい。各スレッドは、他のスレッドから独立して及びパラレルに実行可能なコンピュータプログラムの一部を有するかもしれない。各種実施例では、スレッド同期は相互排除オブジェクト(mutex)及び/又はセマフォを用いて実現されるかもしれない。スレッド通信は、メモリ及び/又はダイレクトレジスタアクセスによって実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、メディア処理ノード100は、パラレルマルチスレッド演算を実行するかもしれない。例えば、3つの個別のスレッドは、ステージAにおける推定処理、ステージBにおける符号化処理及びステージCにおけるビットストリームパッキング処理をパラレルに実行するかもしれない。各種実現形態では、複数のスレッドが、ステージCで実行される複数のスレッドとパラレルに、ステージBで実行される複数のスレッドとパラレルにステージAにおいて実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、ファンクションパイプは、ステージCのビットストリームパッキング処理が、ステージAの動き推定処理及びステージBの符号化処理から分離されるように分割されてもよい。ファンクションパイプの分割は、スレッドレベル並列化を実現するため、ファンクション及びデータドメインベースであってもよい。例えば、動き推定ステージA及び符号化ステージBは、マクロブロックにデータドメイン分割され、ビットストリームパッキングステージCは、他のステージの計算とのさらなる並列化を可能にする各行に分割されてもよい。各種実施例では、マクロブロック又はブロックの最終的なビットシーケンスパッキングは、各マクロブロック及び各ブロックに対するエントロピー符号化(VLCなど)演算が各スレッドによってパラレルに実行可能となるように、マクロブロック又はブロック内のランレベルシンボルについてビットシーケンスパッキングから分離されてもよい。マクロブロックベース符号化処理の外部にパッキングビットストリームの最終的なシーケンシャル処理を移すことによって、シーケンシャル従属性が低減され、並列化が向上するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
図2は、一実施例のメディア処理を示す。図2は、メディア処理ノード100などのメディア処理ノードによって実行可能なパラレルマルチスレッド処理の一実施例を示す。各種実施例では、パラレルマルチスレッド処理がマクロブロック、ブロック及び行に対して実行されるかもしれない。図2に示された例では、例えば、各マクロブロック(m,n)は16×16のマクロブロックから構成される。720ピクセル×480ラインを有する標準解像度(SD)フレームについては、M=45及びN=30となる。これらの実施例は上記コンテクストに限定されるものでない。
一実施例では、ステージBにおけるマクロブロック(10)、(11)、(12)及び(13)の1以上に対する符号化処理が、ステージCのRow−00に対して実行されるビットストリームパッキング処理とパラレルに実行されてもよい。各種実現形態では、ブロックレベル処理がマクロブロックレベル処理とパラレルに実行されてもよい。ステージB内では、例えば、ブロックレベル符号化処理が、マクロブロック(00)、(01)、(02)及び(03)に対して実行されるマクロブロックレベル符号化処理とパラレルに、マクロブロック(10)内で実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、パラレルなマルチスレッド処理はイントラレイヤ及び/又はインターレイヤデータ従属性を受けるかもしれない。図2に示される例では、イントラレイヤデータ従属性は実線の矢印により示され、インターレイヤデータ従属性は破線の矢印により示される。本例では、ステージAの動き推定処理を実行するとき、マクロブロック(12)、(13)及び(21)の間にイントラレイヤデータ従属性があるかもしれない。また、ステージAとステージBとの間にはマクロブロック(11)のインターレイヤ従属性が存在するかもしれない。この結果、ステージBにおけるマクロブロック(11)に対して実行される符号化処理は、ステージAにおけるマクロブロック(11)に対して実行される動き推定処理が完了するまでスタートしないようにしてもよい。また、ステージBとステージCとの間にはマクロブロック(00)、(01)、(02)及び(03)に対するインターレイヤ従属性が存在するかもしれない。この結果、ステージCにおけるRow−00に対するビットストリームパッキング処理は、マクロブロック(00)、(01)、(02)及び(03)に対する処理が完了するまでスタートしないようにしてもよい。これらの実施例は上記コンテクストに限定されるものでない。
図3は、システムの一実施例を示す。図3は、SIMD(Single Instruction Multiple Data)処理システム300のブロック図を示す。各種実現形態では、SIMD処理システム300は、VLC処理などのメディア符号化処理のマルチスレッド並列実行を含む各種メディア処理演算を実行するよう構成されるかもしれない。各種実施例では、メディア処理ノード100は、SIMD処理を実現することによって、メディア符号化のマルチスレッド並列実行を行うようにしてもよい。図示されたSIMD処理システム300は一実施例であり、理解を容易にし、簡単化するため省略されるかもしれない追加的なコンポーネントを有するかもしれない。
メディア処理システム300は、メディア処理装置302を有するかもしれない。各種実施例では、メディア処理装置302は、各種機能ユニット及びリソースとアクセス可能なSIMDプロセッサ304を有するかもしれない。SIMDプロセッサ304は、例えば、汎用プロセッサ、専用プロセッサ、DSP、メディアプロセッサ、グラフィックスプロセッサ、通信プロセッサなどから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、SIMDプロセッサ304は、例えば、マイクロエンジンやコアなどのいくつかの処理エンジンから構成されるかもしれない。各処理エンジンは、複数の(4又は8など)実行スレッドについてマクロエンジンのスレッド上で実行されるマイクロブロックなどのプログラミングロジックを実行するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、SIMDプロセッサ304は、例えば、1つの命令期間においてデータのnオペランドのSIMD命令を同時に実行するため、nオペランドSIMD実行エンジンなどのSIMD実行エンジンを有するかもしれない。例えば、8チャネルSIMD実行エンジンは、8つの32ビットデータオペランドに対してSIMD命令を同時に実行してもよい。各オペランドは、SIMD実行エンジンの個別の計算チャネルにマッピングされるかもしれない。各種実現形態では、SIMD実行エンジンは、SIMD実行エンジンの対応するチャネルに対する処理のため、nコンポーネントのデータベクトルと共にSIMD命令を受け取るかもしれない。SIMDエンジンは、ベクトルのすべてのコンポーネントに対してSIMD命令を同時実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、SIMD命令は条件付きなものであってもよい。例えば、SIMD命令又はSIMD命令セットは、1以上の所定の条件を充足すると実行されるかもしれない。各種実施例では、ある処理演算のパラレルなループオーバーが、SIMD条件ブランチ及びループ機構を用いて可能とされるかもしれない。これらの条件は、1以上のマクロブロック及び/又はブロックに基づくものであってもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、SIMDプロセッサ304はリージョンベースレジスタアクセスを実現するかもしれない。SIMDプロセッサ304は、例えば、情報を格納するためのレジスタファイルにあるリージョンを記述した値を格納するためのレジスタファイル及びインデックスファイルを有するようにしてもよい。いくつかのケースでは、当該リージョンはダイナミックとされてもよい。インデックス付けされたレジスタは複数の独立したインデックスを有するかもしれない。各種実現形態では、インデックスレジスタの値はレジスタファイルのリージョンの1以上のソースを規定するかもしれない。当該値は、例えば、レジスタ内のデータ要素の位置を示すレジスタ識別子及び/又はサブレジスタ識別子を表すものであってもよい。レジスタリージョンの記述(レジスタ番号、サブレジスタ番号など)は、各オペランドについて命令ワードに符号化されてもよい。インデックスレジスタは、レジスタリージョンの幅、水平方向のストライド又はデータタイプなどのレジスタリージョンを記述するための他の値を含むものであってもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、SIMDプロセッサ304はフラグ構成を有するかもしれない。SIMDプロセッサ304は、例えば、フラグワード又はフラグを格納するための1以上のフラグレジスタを有するかもしれない。フラグワードは、処理演算によって生成される1以上の結果に関連付けされるかもしれない。これらの結果は、例えば、ゼロ、非ゼロ、等しい、等しくない、より大きい、以上、より小さい、以下及び/又はオーバーフロー条件に関連付けされてもよい。フラグレジスタ及び/又はフラグワードの構成はフレキシブルであるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、フラグレジスタはnチャネルSIMD実行エンジンのnビットフラグレジスタから構成されるかもしれない。フラグレジスタの各ビットはチャネルに関連付けされ、フラグレジスタはSIMD実行ユニットから情報を受け取り、格納するようにしてもよい。各種実現形態では、SIMDプロセッサ304は、1以上のフラグレジスタの水平方向及び/又は垂直方向評価ユニットを有するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
SIMDプロセッサ304は、バス306により1以上の機能ユニットに接続されるかもしれない。各種実現形態では、バス306は、メディア処理装置302の各種機能ユニットを相互接続する1以上のオンチップバス群から構成されてもよい。バス306は理解を容易にするため1つのバスとして示されているが、バス306が任意のバスアーキテクチャを有し、任意数のバス及びそれらの組み合わせを含むものであってもよいということは理解されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
SIMDプロセッサ304は、命令メモリユニット308及びデータメモリユニット310に接続されてもよい。各種実施例では、命令メモリ308はSIMD命令を格納するよう構成され、データメモリユニット310は、2次元イメージ、3次元イメージ及び/又は動画に係るスカラー及びベクトルなどのデータを格納するよう構成されてもよい。各種実現形態では、命令メモリユニット308及び/又はデータメモリユニット310は、個別の命令及びデータキャッシュ、共有された命令及びデータキャッシュ、共通の共有キャッシュによってバックされた個別の命令及びデータキャッシュ又は他の何れかのキャッシュ階層に関連付けされてもよい。これらの実施例は上記コンテクストに限定されるものでない。
命令メモリユニット308及びデータメモリユニット310は、揮発性及び不揮発性メモリの双方を含むデータを格納可能な任意のコンピュータ可読記憶媒体から構成又は実現されてもよい。記憶媒体の具体例として、RAM(Random Access Memory)、DRAM(Dynamic RAM)、DDRAM(Double−Data−Rate DRAM)、SDRAM(Synchronous DRAM)、フラッシュメモリ、ROM、PROM(Programmable ROM)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、フラッシュメモリ、CAM(Content Addressable Memory)、ポリマーメモリ(強誘電性ポリマーメモリ、オボニック(ovonic)メモリ、相変化又は強誘電性メモリなど)、SONOS(Silicon−Oxide−Nitride−Oxide−Silicon)メモリ、ディスクメモリ(フロッピー(登録商標)ディスク、ハードドライブ、光ディスク、磁気ディスクなど)、カード(磁気カード、光カードなど)又は他の何れかのタイプの情報を格納するのに適した媒体があげられる。記憶媒体は、コンピュータプログラム、命令及びデータを格納するための各種コントローラ及び/又はマシーン可読記憶装置の各種組み合わせを含むかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
メディア処理装置302は、通信インタフェース312を有するかもしれない。通信インタフェース312は、メディア処理装置302を1以上のネットワーク及び/又はネットワーク装置に接続可能な何れか適切なハードウェア、ソフトウェア又はハードウェアとソフトウェアの組み合わせから構成されてもよい。各種実施例では、通信インタフェース312は、例えば、送信インタフェース、受信インタフェース、MSF(Media and Switch Fabric)インタフェース、SPI(System Packet Interface)、CSI(Common Switch Interface)、PCI(Peripheral Component Interface)、SCSI(Small Computer System Interface)、IE(Internet Exchange)インタフェース、FIC(Fabric Interface Chip)、ラインカード、ポート又は他の何れか適切なインタフェースなどの1以上のインタフェースから構成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、通信インタフェース312は、メディア処理装置302を1以上の物理レイヤ装置及び/又はスイッチファブリック314に接続するよう構成されるかもしれない。メディア処理装置302は、ネットワークとスイッチファブリックの間のインタフェースを提供するかもしれない。メディア処理装置302は、スイッチファブリック314を介した送信のため、データに対して各種メディア処理を実行するようにしてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、SIMD処理システム300は、1以上のインデックス付けされたレジスタ、リージョンベースレジスタ及び/又はフラグレジスタへのフレキシブルなアクセス及びSIMD命令機能を利用することによって、データレベル並列化を実現するかもしれない。各種実現形態では、例えば、SIMDプロセッサシステム300は、データの複数のブロック及び/又はマクロブロックを受け取り、SIMD方式によりブロックレベル及びマクロブロックレベル処理を実行するようにしてもよい。処理演算(比較演算など)の結果は、フレキシブルなフラグ構造を用いてフラグワードにパッキングされてもよい。SIMD処理は、SIMDレジスタにパッキングされる各ブロックのフラグワードに対してパラレルに実行されるかもしれない。例えば、フラグワードに対するLZD(Leading−Zero−Detection)演算などの命令を用いて、非ゼロ値係数の先行するゼロ値係数の個数が決定されてもよい。複数のブロックのフラグワードは、リージョンベースレジスタアクセス機能を用いてSIMDレジスタにパッキングされてもよい。複数のブロックの非ゼロ値の係数値のパラレルな移動は、複数のソース及び/又は複数のデスティネーションノードのリージョンベースレジスタアクセス及びマルチインデックスSIMD移動命令を用いてパラレルに実行されるかもしれない。テーブル(ハフマンテーブルなど)ルックアップなどのパラレルなメモリアクセスは、データポートスキャッタギャザリング(scatter−gathering)機能を用いて実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例の処理が、以下の図及び関連する具体例を参照してさらに説明される。図のいくつかは、ロジックフローを含むかもしれない。ロジックフローは記載された機能の実現方法の一例を単に提供するに過ぎないということが理解できる。さらに、与えられたロジックフローは、特段の記載がない場合、与えられた順序により必ずしも実行される必要はない。さらに、ロジックフローは、ハードウェア要素、プロセッサにより実行されるソフトウェア要素、又はこれらの何れかの組み合わせによって実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
図4は、ロジックフロー400の一実施例を示す。図4は、メディア処理を実行するロジックフロー400を示す。各種実施例では、ロジックフロー400は、メディア処理ノードなどのメディア処理ノード及び/又はエントロピー符号化モジュール120などの符号化モジュールによって実行されるかもしれない。ロジックフロー400は、マクロブロックのSIMDベース符号化から構成されるかもしれない。SIMDベース符号化は、例えば、VLC(ランレベルVLCなど)、CAVLC、CABACなどのエントロピー符号化から構成されてもよい。各種実現形態では、エントロピー符号化はランレベルシンボルのシーケンスとしてスキャンされた係数(変換された量子化及びスキャンした係数など)のシーケンスを表すかもしれない。各ランレベルシンボルは、レベルが非ゼロ値係数の値であり、ランが非ゼロ値係数に先行するゼロ値係数の個数であるランレベルペアから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、マクロブロックデータを入力すること(402)を有する。各種実施例では、マクロブロックは、N個のブロックを有し(例えば、YUV420は6つのブロック、YUC444は12のブロックなど)、マクロブロックデータは、マクロブロックの各ブロックのスキャンされた係数(DCT変換された量子化及びスキャンした係数など)のシーケンスを有するかもしれない。例えば、マクロブロックは6つのデータブロックを有し、各ブロックは、8×8の係数マトリックスから構成されるかもしれない。この場合、マクロブロックデータは、マクロブロックの各ブロックについて64個の係数のシーケンスを有するかもしれない。各種実現形態では、マクロブロックデータは、SIMD方式によりパラレルに処理されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、マクロブロックデータからフラグワードを生成すること(404)を有する。各種実施例では、ゼロとの比較がマクロブロックデータに対して実行され、この比較結果に基づきフラグワードが生成されるかもしれない。例えば、ゼロとの比較が、マクロブロックの各ブロックのスキャンされた係数のシーケンスに対して実行されるかもしれない。各フラグは、比較結果に基づき係数毎に1ビットを有するかもしれない。例えば、比較結果に基づく1と0とを有する64ビットフラグワードが、8×8のブロックの64個の係数から生成されるかもしれない。各種実現形態では、複数のフラグワードが、複数のブロックの比較結果をSIMDフレキシブルフラグレジスタにパッキングすることによって、SIMD方式によりパラレルに生成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、フラグワードを格納すること(406)を有する。各種実施例では、複数のブロックのフラグワードがパラレルに実行されるかもしれない。例えば、マクロブロックの6つのブロックに対応する6つの64ビットフラグワードが、パラレルに格納されてもよい。各種実現形態では、複数のブロックのフラグワードが、リージョンベースレジスタアクセス機能を有するSIMDレジスタにフラグワードをパッキングすることによって、SIMD方式によりパラレルに格納されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、すべてのフラグワードがゼロであるか判断すること(408)を有する。各種実施例では、フラグワードがゼロ値係数しか含まないか判断するため、各フラグワードに対して比較が行われるかもしれない。フラグワードがゼロ値を含むとき、EOB(End Of Block)がブロックに対して到達したか判断されるかもしれない。各種実現形態では、複数のフラグワードに対して、複数の判定がパラレルに実行されるかもしれない。例えば、これらの判定は、6つの64ビットフラグワードに対してパラレルに実行されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、すべてのフラグワードが必ずしもゼロでない場合、フラグワードからラン値を決定すること(410)を有する。各種実施例では、LZD演算がフラグワードに実行されるかもしれない。LZD演算は、SIMD命令などを用いてSIMD方式により実行されてもよい。LZD演算の結果は、フラグワードの非ゼロ値係数に先行するゼロ値係数の個数から構成されるかもしれない。ラン値は、run=LZD(フラグ)などのLZD演算の結果に基づき設定されるかもしれない。ラン値は、フラグワードに係るブロックのスキャンされた係数のシーケンスにおける非ゼロ値係数に先行するゼロ値係数の個数に対応するかもしれない。この結果、決定されたラン値は、フラグに係るブロックのランレベルシンボルに対して使用されるかもしれない。各種実現形態では、SIMD LZD演算は、SIMDレジスタにパッキングされる複数のブロックの複数のフラグワードに対してパラレルに実行されるかもしれない。例えば、SIMD LZD演算は、6つの64ビットフラグワードについてパラレルに実行されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、ラン値に基づき係数のインデックス移動を実行すること(412)を有する。各種実施例では、インデックス移動は、SIMD命令などを用いてSIMD方式により実行されるかもしれない。これらの係数は、ブロックのスキャンされた係数のシーケンスの非ゼロ値係数から構成されるかもしれない。ラン値は、ブロックのスキャンされた係数のシーケンスの非ゼロ値係数に先行するゼロ値係数の個数に対応するかもしれない。インデックス移動は、非ゼロ値係数を記憶場所(レジスタ)から出力に移すかもしれない。各種実施例では、非ゼロ値係数は、ブロックのランレベルシンボルのレベル値から構成されるかもしれない。各種実現形態では、インデックス移動処理は、複数のブロックに対してパラレルに実行されるかもしれない。インデックス移動は、例えば、複数のソース及び/又は複数のデスティネーションインデックスに対するリージョンベースレジスタアクセス及びマルチインデックスSIMD移動命令を用いて実行されてもよい。マルチインデックスSIMD移動命令は、条件付きで実行されてもよい。この条件は、ブロックのEOBに到達したか否かにより判定されるかもしれない。EOBに到達した場合、当該ブロックに対して移動は実行されない。他方、ブロックのEOBに到達していない場合、当該ブロックに対して移動が実行される。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、インクリメントランのインデックスの格納を実行すること(414)を有する。各種実施例では、インデックス格納は、SIMD命令などを用いてSIMD方式により実行されるかもしれない。インクリメントランは、スキャンされた係数のシーケンスの次の非ゼロ値係数を特定するため使用されるかもしれない。例えば、インクリメントランは、ブロックのスキャンされた係数のシーケンスからの非ゼロ値係数のインデックス移動を実行するとき利用されるかもしれない。各種実現形態では、インデックス格納処理が、複数のブロックに対してパラレルに実行されるかもしれない。マルチインデックスSIMD格納命令は、条件付きにより実行されてもよい。この条件は、ブロックについてEOBに到達したかによって判断されるものであるかもしれない。ブロックのEOBに到達した場合、当該ブロックについて格納は実行されない。他方、ブロックのEOBに到達していない場合、当該ブロックについて格納が実行される。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、フラグワードの左シフトを実行すること(416)を有する。各種実施例では、ブロックのフラグワードから非ゼロ値係数を取り除くため、フラグに対して左シフトが実行されるかもしれない。左シフトは、SIMD命令などを用いてSIMD方式により実行されるかもしれない。各種実現形態では、左シフト演算は、複数のブロックの複数のフラグワードに対してパラレルに実行されるかもしれない。SIMD左シフト命令は、条件付きにより実行されるかもしれない。この条件は、ブロックのEOBに到達したか否かによって判断されるものであるかもしれない。ブロックのEOBに到達した場合、ブロックのフラグワードに対して左シフトが実行される。他方、ブロックのEOBに到達していない場合、ブロックのフラグに対して左シフトが実行される。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、マクロブロックのブロックのすべてのランレベルシンボルを決定するため、1以上のパラレルループを実行することを有する。各種実施例では、パラレルループが、SIMDループ機構を用いてSIMD方式により実行されるかもしれない。各種実現形態では、条件ブランチが、SIMD条件ブランチ機構を用いてSIMD方式により実行されるかもしれない。条件ブランチは、ブロックの処理が完了したとき、ループを終了及び/又はバイパスするのに利用されるかもしれない。この条件は、1つ、いくつか又はすべてのブロックに基づくものであるかもしれない。例えば、あるブロックに係るフラグワードがゼロ値係数しか有しないとき、条件ブランチは、他のブロックについて処理を継続することを可能にしながら、当該ブロックに関してさらなる処理の継続を停止するかもしれない。この処理は、以下に限定するものでないが、ラン値の決定、係数のインデックス移動及びインクリメントランのインデックス格納を含むかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
ロジックフロー400は、すべてのフラグワードがゼロであるとき、VLCコードのアレイを出力すること(418)を有する。各種実施例では、ランレベルシンボルは、所定のハフマンテーブルに従ってVLCコードに変換されてもよい。各種実現形態では、パラレルなハフマンテーブルのルックアップが、例えば、データポートのスキャッタギャザリング機能を用いてSIMD方式により実行されてもよい。VLCコードのアレイは、マクロブロックのコードシーケンスを構成するため、ビットストリームパッキングモジュール122などのパッキングモジュールに出力されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、記載された実施例はSIMD処理を用いてメディア符号化(VLCなど)のパラレルな実行を行うかもしれない。記載された実施例は、各種プロセッサアーキテクチャ(マルチスレッド及び/又はマルチコアアーキテクチャなど)及び/又は各種SIMD機能(SIMD命令セット、リージョンベースレジスタ、複数の独立したインデックスによるインデックスレジスタ、及び/又はフレキシブルフラグレジスタなど)から構成又は実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、記載された実施例はメディア符号化のためのスレッドレベル及び/又はデータレベルの並列化を実現し、これにより、処理パフォーマンスが向上する。例えば、マルチスレッドアプローチの実現形態は、処理コアの個数及び/又はハードウェアスレッドの個数に対してほぼリニアにマルチスレッド処理スピードを向上させる(例えば、16コアプロセッサについては約16×のスピードアップなど)。フラグワード及びLZD命令を用いたLZD検出の実現形態は、スカラーループ実現形態(約4〜10×のスピードアップなど)に対して処理スピードを向上させるかもしれない。SIMD LZD演算及びブランチ/ループ機構を用いた複数のブロック(6ブロックなど)のパラレル処理は、ブロックシーケンシャルアルゴリズムに対して処理スピードを向上させるかもしれない(6×のスピードアップなど)。これらの実施例は上記コンテクストに限定されるものでない。
本発明の完全なる理解を提供するため、多数の具体的詳細が提供された。しかしながら、これらの実施例が上記具体的詳細なしに実現可能であるということは当業者により理解されるであろう。他の例では、実施例を不明りょうにしないため、周知の処理、コンポーネント及び回路は詳細には記載しなかった。ここに開示された特定の構成上及び機能上の詳細は典型的なものであって、実施例の範囲を必ずしも限定するものでないことは理解することができる。
各種実現形態では、記載された実施例は、有線通信システム、無線通信システム又はこれらの組み合わせの一部を構成するかもしれない。特定の実施例は特定の通信メディアを用いて示されたが、ここに記載された原理及び技術は各種通信メディアと関連する技術を用いて実現されてもよいということは理解されるであろう。
各種実現形態では、記載された実施例は、WAN(Wide Area Network)、LAN(Local Area Network)、MAN(Metropolitan Area Network)、インターネット、ワールド・ワイド・ウェブ、電話ネットワーク、ラジオネットワーク、テレビネットワーク、ケーブルネットワーク、衛星ネットワーク、WPAN(Wireless Personal Area Network)、WWAN(Wireless WAN)、WLAN(Wireless LAN)、WMAN(Wireless MAN)、CDMA(Code Division Multiple Access)セルラー無線電話通信ネットワーク、WCDMA(Wideband CDMA)などの第3世代(3G)ネットワーク、第4世代(4G)ネットワーク、TDMA(Time Division Multiple Access)ネットワーク、E−TDMA(Extended−TDMA)セルラー無線電話ネットワーク、GSM(Global System for Mobile Communication)セルラー無線電話ネットワーク、NADC(NorthAmerican Digital Cellular)セルラー無線電話ネットワーク、UMTS(Universal Mobile Telephone System)ネットワーク及び/又は他の何れかのデータを搬送するよう構成される有線若しくは無線通信ネットワークなどのネットワークの一部を構成するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、記載された実施例は、1以上の有線通信メディアを介し情報を通信するよう構成されるかもしれない。有線通信メディアの具体例として、ワイヤ、ケーブル、プリント回路ボード(PCB)、バックプレイン、スイッチファブリック、半導体物質、ツイストペアワイヤ、同軸ケーブル、光ファイバなどがあげられる。
各種実現形態では、記載された実施例は、1以上のタイプの無線通信メディアを介し情報を通信するよう構成されるかもしれない。無線通信メディアの一例は、無線周波数(RF)スペクトルなどの無線スペクトルの一部を含むかもしれない。このような実現形態では、記載された実施例は、1以上のアンテナ、無線送信機/受信機(送受信機)、アンプ、フィルタ、制御ロジックなどの指定された無線スペクトルを介し情報信号を通信するのに適したコンポーネント及びインタフェースを含むかもしれない。ここで使用される“送受信機”という用語は、送信機、受信機又はそれらの組み合わせを含むよう大変一般的な意味により使用され、アンテナ、アンプなどの各種コンポーネントを含むかもしれない。アンテナの具体例として、内部アンテナ、無指向性アンテナ、モノポールアンテナ、ダイポールアンテナ、終端給電アンテナ、円偏波アンテナ、マイクロストリップアンテナ、ダイバーシチアンテナ、デュアルアンテナ、アンテナアレイなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
各種実施例では、通信メディアは、入出力(I/O)アダプタを用いてノードに接続されるかもしれない。I/Oアダプタは、所望される通信プロトコル、サービス若しくは動作手順群を用いて、ノード間における情報信号を制御するのに適した何れかの技術によって動作するよう構成されるかもしれない。I/Oアダプタはまた、I/Oアダプタを対応する通信メディアに接続するための適切な物理コネクタを含むかもしれない。I/Oアダプタの具体例として、ネットワークインタフェース、NIC(Network Interface Card)、ラインカード、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、記載された実施例は、メディア情報や制御情報などの1以上のタイプの情報を通信するよう構成されるかもしれない。メディア情報は、一般にイメージ情報、ビデオ情報、グラフィック情報、オーディオ情報、ボイス情報、テキスト情報、数値情報、英数字シンボル、キャラクタシンボルなどのユーザ向けのコンテンツを表す任意のデータを表すかもしれない。制御情報は、一般に自動化されたシステムのためのコマンド、命令又は制御ワードを表す任意のデータを表すかもしれない。例えば、制御情報は、システムを介しメディア情報をルーティングし、又はノードに特定の方法によりメディア情報を処理するよう指示するのに使用されるかもしれない。メディア及び制御情報は、いくつかの異なるデバイス又はネットワークの間で通信されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
いくつかの実現形態では、情報は、WLANのためのIEEE802.11x(802.11a,b,g/h,j,n)及び/又はWMAのための802.16規格を含む1以上のIEEE802規格に従って通信されるかもしれない。情報は、DVB−T(Digital Video Broadcasting Terrestrial)は威信規格及びHiperLAN(High performance radi Local Area Network)規格の1以上に従って通信されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
各種実現形態では、記載された実施例は、1以上のIEEE802規格などによって規定されるような1以上のパケットプロトコルに従って、情報を通信するパケットネットワークの一部を構成するかもしれない。各種実施例では、パケットはATM(Asynchronous Transfer Mode)プロトコル、PLCP(Physical Layer Convergence Protocol)、フレームリレイ、SNA(Systems Network Architecture)などを用いて通信されるかもしれない。いくつかの実現形態では、パケットは、TCP(Transport Control Protocol)及びIP(Internet Protocol)、TCP/IP、X.25、HTTP(Hypertext Transfer Protocol)、UDP(User Datagram Protocol)などのインターネットプロトコルに従って通信可能である。これらの実施例は上記コンテクストに限定されるものでない。
いくつかの実施例は、例えば、マシーンにより実行される場合、マシーンに実施例による方法及び/又は処理を実行させる命令又は命令セットを格納可能なマシーン可読媒体又はものを用いて実現されてもよい。このようなマシーンは、例えば、何れか適切な処理プラットフォーム、計算プラットフォーム、計算装置、処理装置、計算システム、処理システム、コンピュータ、プロセッサなどを含むものであってもよく、ハードウェア及び/又はソフトウェアの何れか適切な組み合わせを用いて実現されてもよい。マシーン可読媒体又は物は、何れか適切なタイプのメモリユニット、記憶装置、記憶物、記憶媒体、ストレージ装置、ストレージもの、ストレージ媒体及び/又はストレージユニット、メモリ、着脱可能若しくは着脱不可な媒体、消去可能又は消去不可な媒体、書き込み可能若しくは書き換え可能な媒体、デジタル若しくはアナログ媒体、ハードディスク、フロッピー(登録商標)、CD−ROM(Compact Disk ROM)、CD−R(Compact Disk Recordable)、CD−RW(Compact Disk Rewritable)、光ディスク、磁気媒体、光磁気媒体、着脱可能なメモリカード若しくはディスク、各種タイプのDVD(Digital Versatile Disk)、テープ、カセットなどを含むかもしれない。命令は、何れか適切なハイレベル、ローレベル、オブジェクト指向、ビジュアル、コンパイル及び/又はインタープリットされたプログラミング言語を用いて実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
一部の実施例は、所望の計算レート、パワーレベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード及び他のパフォーマンス制約などの任意数のファクタに従って可変的なアーキテクチャを用いて実現されてもよい。他の例では、ある実施例は、汎用又は特定用途向けプロセッサによって実行されるソフトウェアを利用して実現されるかもしれない。他の例では、回路、ASIC、PLD、DSPなどの専用ハードウェアとして実施例が実現されるかもしれない。さらなる他の例では、プログラムされた汎用コンピュータコンポーネント及びカスタムハードウェアコンポーネントの何れかの組み合わせによって実施例が実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
特に記載されない場合、“処理”、“計算”、“決定”などの用語は、計算システムのレジスタ及び/又はメモリ内の物理量(電子)として表されるデータを操作し、計算システムのメモリ、レジスタ又は他の同様の情報ストレージ、伝送又は表示デバイス内の物理量として同様に表される他のデータに変換するコンピュータ、計算システム又は同様の電子計算システムのアクション及び/又は処理を表すことは理解されるであろう。これらの実施例は上記コンテクストに限定されるものでない。
“一実施例”又は“ある実施例”という表現は、当該実施例に関して説明された特定の特徴又は構成が少なくとも1つの実施例に含まれていることを意味することに留意されたい。明細書の各箇所における“一実施例では”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
実施例の特定の特徴が記載されたが、多くの改良、置換、変更及び均等が当業者に想到するであろう。従って、添付した請求項は実施例の真の趣旨に属するすべての改良及び変更をカバーすることが理解されるべきである。
図1は、ノードの一実施例を示す。 図2は、メディア処理の一実施例を示す。 図3は、システムの一実施例を示す。 図4は、ロジックフローの一実施例を示す。

Claims (32)

  1. マクロブロックの複数のブロックの係数を有するマクロブロックデータのSIMD(Single Instruction Multple Data)処理を実行するメディア処理ノードを有する装置であって、
    前記メディア処理ノードは、前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記複数のフラグワードに対してパラレルにLZD(Leading Zero Detection)演算を実行することによって前記複数のフラグワードからパラレルに複数のブロックのラン値を決定する符号化モジュールを有し、
    前記複数のフラグワードのそれぞれは、前記複数のブロックにおける対応するブロックに関連し、前記対応するブロックにおいて各係数について1ビットを有する装置。
  2. 前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項1記載の装置。
  3. 前記符号化モジュールは、フラグワードをフラグレジスタに格納する、請求項1記載の装置。
  4. 前記符号化モジュールは、LZD(Leading Zero Detection)を実行することによってラン値を決定する、請求項1記載の装置。
  5. 前記符号化モジュールは、前記ラン値に基づき複数のブロックの非ゼロ値係数のパラレルな移動を実行する、請求項1記載の装置。
  6. 前記非ゼロ値係数は、複数のブロックのレベル値に対応する、請求項5記載の装置。
  7. 前記符号化モジュールは、前記マクロブロックのコードシーケンスを構成するため、パッキングモジュールにコードアレイを出力する、請求項1記載の装置。
  8. 前記パッキングモジュールは、前記符号化モジュールから分割され、
    前記符号化モジュールは、複数のマクロブロックのマルチスレッド処理を実行する、請求項7記載の装置。
  9. 通信媒体と、
    前記通信媒体に接続されるSIMD(Single Instruction Multple Data)処理装置と、
    を有するシステムであって、
    前記SIMD処理装置は、マクロブロックの複数のブロックの係数を有するマクロブロックデータを処理するメディア処理ノードを有し、
    前記メディア処理ノードは、前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記複数のフラグワードに対してパラレルにLZD(Leading Zero Detection)演算を実行することによって前記複数のフラグワードからパラレルに複数のブロックのラン値を決定する符号化モジュールを有し、
    前記複数のフラグワードのそれぞれは、前記複数のブロックにおける対応するブロックに関連し、前記対応するブロックにおいて各係数について1ビットを有するシステム。
  10. 前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項9記載のシステム。
  11. 前記符号化モジュールは、フラグワードをフラグレジスタに格納する、請求項9記載のシステム。
  12. 前記符号化モジュールは、LZD(Leading Zero Detection)を実行することによってラン値を決定する、請求項9記載のシステム。
  13. 前記符号化モジュールは、前記ラン値に基づき複数のブロックの非ゼロ値係数のパラレルな移動を実行する、請求項9記載のシステム。
  14. 前記非ゼロ値係数は、複数のブロックのレベル値に対応する、請求項13記載のシステム。
  15. 前記符号化モジュールは、前記マクロブロックのコードシーケンスを構成するため、パッキングモジュールにコードアレイを出力する、請求項9記載のシステム。
  16. 前記パッキングモジュールは、前記符号化モジュールから分割され、
    前記符号化モジュールは、複数のマクロブロックのマルチスレッド処理を実行する、請求項15記載のシステム。
  17. マクロブロックの複数のブロックの係数を有するマクロブロックデータを受信するステップと、
    前記マクロブロックデータのSIMD(Single Instruction Multple Data)処理を実行するステップと、
    を有する方法であって、
    前記SIMD処理は、
    前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、
    前記複数のフラグワードに対してパラレルにLZD(Leading Zero Detection)演算を実行することによって前記複数のフラグワードからパラレルに複数のブロックのラン値を決定することからなり、
    前記複数のフラグワードのそれぞれは、前記複数のブロックにおける対応するブロックに関連し、前記対応するブロックにおいて各係数について1ビットを有する方法。
  18. 前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項17記載の方法。
  19. フラグワードをフラグレジスタに格納するステップをさらに有する、請求項17記載の方法。
  20. LZD(Leading Zero Detection)を実行することによってラン値を決定するステップをさらに有する、請求項17記載の方法。
  21. 前記ラン値に基づき、複数のブロックの非ゼロ値係数のパラレル移動を実行するステップをさらに有する、請求項17記載の方法。
  22. 前記非ゼロ値係数に基づき、複数のブロックのレベル値を決定するステップをさらに有する、請求項21記載の方法。
  23. 前記マクロブロックのコードシーケンスを構成するため、コードアレイを出力するステップをさらに有する、請求項17記載の方法。
  24. 複数のマクロブロックのマルチスレッド処理を実行するステップをさらに有する、請求項23記載の方法。
  25. 実行される場合、システムが、
    マクロブロックの複数のブロックの係数を有するマクロブロックデータを受信するステップと、
    前記マクロブロックデータのSIMD(Single Instruction Multple Data)処理を実行するステップと、
    を実行することを可能にする命令を含むマシーン可読記憶媒体であって、
    前記SIMD処理は、
    前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、
    前記複数のフラグワードに対してパラレルにLZD(Leading Zero Detection)演算を実行することによって前記複数のフラグワードからパラレルに複数のブロックのラン値を決定することからなり、
    前記複数のフラグワードのそれぞれは、前記複数のブロックにおける対応するブロックに関連し、前記対応するブロックにおいて各係数について1ビットを有するマシーン可読記憶媒体。
  26. 前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項25記載のマシーン可読記憶媒体。
  27. 実行される場合、システムがフラグワードをフラグレジスタに格納するステップをさらに実行することを可能にする命令を有する、請求項25記載のマシーン可読記憶媒体。
  28. 実行される場合、システムがLZD(Leading Zero Detection)を実行することによってラン値を決定するステップをさらに実行することを可能にする命令を有する、請求項25記載のマシーン可読記憶媒体。
  29. 実行される場合、システムが前記ラン値に基づき、複数のブロックの非ゼロ値係数のパラレル移動を実行するステップをさらに実行することを可能にする命令を有する、請求項25記載のマシーン可読記憶媒体。
  30. 実行される場合、システムが前記非ゼロ値係数に基づき、複数のブロックのレベル値を決定するステップをさらに実行することを可能にする命令を有する、請求項29記載のマシーン可読記憶媒体。
  31. 実行される場合、システムが前記マクロブロックのコードシーケンスを構成するため、コードアレイを出力するステップをさらに実行することを可能にする命令をさらに有する、請求項25記載のマシーン可読記憶媒体。
  32. 実行される場合、システム複数のマクロブロックのマルチスレッド処理を実行するステップをさらに実行することを可能にする命令をさらに有する、請求項25記載のマシーン可読記憶媒体。
JP2008512323A 2005-05-16 2006-05-02 マルチスレッドsimd処理を利用したメディア符号化の並列実行 Expired - Fee Related JP4920034B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/131,158 US20060256854A1 (en) 2005-05-16 2005-05-16 Parallel execution of media encoding using multi-threaded single instruction multiple data processing
US11/131,158 2005-05-16
PCT/US2006/017047 WO2006124299A2 (en) 2005-05-16 2006-05-02 Parallel execution of media encoding using multi-threaded single instruction multiple data processing

Publications (2)

Publication Number Publication Date
JP2008541663A JP2008541663A (ja) 2008-11-20
JP4920034B2 true JP4920034B2 (ja) 2012-04-18

Family

ID=37112137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008512323A Expired - Fee Related JP4920034B2 (ja) 2005-05-16 2006-05-02 マルチスレッドsimd処理を利用したメディア符号化の並列実行

Country Status (7)

Country Link
US (1) US20060256854A1 (ja)
EP (1) EP1883885A2 (ja)
JP (1) JP4920034B2 (ja)
KR (1) KR101220724B1 (ja)
CN (1) CN101176089B (ja)
TW (1) TWI365668B (ja)
WO (1) WO2006124299A2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070086528A1 (en) * 2005-10-18 2007-04-19 Mauchly J W Video encoder with multiple processors
US7778822B2 (en) * 2006-05-19 2010-08-17 Sony Ericsson Mobile Communications Ab Allocating audio processing among a plurality of processing units with a global synchronization pulse
US20080031333A1 (en) * 2006-08-02 2008-02-07 Xinghai Billy Li Motion compensation module and methods for use therewith
US9094686B2 (en) * 2006-09-06 2015-07-28 Broadcom Corporation Systems and methods for faster throughput for compressed video data decoding
US8213509B2 (en) * 2006-10-06 2012-07-03 Calos Fund Limited Liability Company Video coding on parallel processing systems
WO2008079041A1 (en) * 2006-12-27 2008-07-03 Intel Corporation Methods and apparatus to decode and encode video information
KR20080086766A (ko) * 2007-03-23 2008-09-26 삼성전자주식회사 픽셀 단위의 컨텍스트 모델을 이용한 영상의 부호화,복호화 방법 및 장치
US8213511B2 (en) * 2007-04-30 2012-07-03 Texas Instruments Incorporated Video encoder software architecture for VLIW cores incorporating inter prediction and intra prediction
US8305387B2 (en) * 2007-09-07 2012-11-06 Texas Instruments Incorporated Adaptive pulse-width modulated sequences for sequential color display systems
WO2009142021A1 (ja) * 2008-05-23 2009-11-26 パナソニック株式会社 画像復号化装置、画像復号化方法、画像符号化装置、及び画像符号化方法
CN101593095B (zh) 2008-05-28 2013-03-13 国际商业机器公司 基于流水级的数据处理方法和系统
US8933953B2 (en) * 2008-06-30 2015-01-13 Intel Corporation Managing active thread dependencies in graphics processing
CN102217309B (zh) * 2008-11-13 2014-04-09 汤姆逊许可证公司 使用hrd信息共享和比特分配等待的多线程视频编码
US20100226441A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Frame Capture, Encoding, and Transmission Management
US20100225655A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Concurrent Encoding/Decoding of Tiled Data
US8638337B2 (en) 2009-03-16 2014-01-28 Microsoft Corporation Image frame buffer management
WO2010143226A1 (en) * 2009-06-09 2010-12-16 Thomson Licensing Decoding apparatus, decoding method, and editing apparatus
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
US8327119B2 (en) * 2009-07-15 2012-12-04 Via Technologies, Inc. Apparatus and method for executing fast bit scan forward/reverse (BSR/BSF) instructions
EP2534643A4 (en) * 2010-02-11 2016-01-06 Nokia Technologies Oy METHOD AND APPARATUS FOR PROVIDING MULTIFIL VIDEO DECODING
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US9049444B2 (en) 2010-12-22 2015-06-02 Qualcomm Incorporated Mode dependent scanning of coefficients of a block of video data
KR101531455B1 (ko) * 2010-12-25 2015-06-25 인텔 코포레이션 하드웨어 및 소프트웨어 시스템이 자동으로 프로그램을 복수의 병렬 스레드들로 분해하는 시스템들, 장치들, 및 방법들
US20120236940A1 (en) * 2011-03-16 2012-09-20 Texas Instruments Incorporated Method for Efficient Parallel Processing for Real-Time Video Coding
US9014111B2 (en) * 2011-08-10 2015-04-21 Industrial Technology Research Institute Multi-block radio access method and transmitter module and receiver module using the same
EP2761870A4 (en) * 2011-09-30 2016-03-16 Intel Corp SYSTEMS, METHODS AND COMPUTER PROGRAM PRODUCTS FOR VIDEO ENCODING DEVICE
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
KR101886333B1 (ko) * 2012-06-15 2018-08-09 삼성전자 주식회사 멀티 코어를 이용한 영역 성장 장치 및 방법
US9374592B2 (en) * 2012-09-08 2016-06-21 Texas Instruments Incorporated Mode estimation in pipelined architectures
US20140072027A1 (en) * 2012-09-12 2014-03-13 Ati Technologies Ulc System for video compression
CN102917216A (zh) * 2012-10-16 2013-02-06 深圳市融创天下科技股份有限公司 一种运动搜索的方法、系统和终端设备
KR101978178B1 (ko) * 2013-05-24 2019-05-15 삼성전자주식회사 초음파 데이터를 처리하는 데이터 처리 장치 및 방법
CN104795073A (zh) * 2015-03-26 2015-07-22 无锡天脉聚源传媒科技有限公司 一种音频数据的处理方法及装置
CN104869398B (zh) * 2015-05-21 2017-08-22 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN107547896B (zh) * 2016-06-27 2020-10-09 杭州当虹科技股份有限公司 一种基于CUDA的Prores VLC编码方法
CN106791861B (zh) * 2016-12-20 2020-04-07 杭州当虹科技股份有限公司 一种基于CUDA架构的DNxHD VLC编码方法
US12041252B2 (en) * 2021-06-07 2024-07-16 Sony Interactive Entertainment Inc. Multi-threaded CABAC decoding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1056641A (ja) * 1996-08-09 1998-02-24 Sharp Corp Mpegデコーダ
JP2002159007A (ja) * 2000-11-17 2002-05-31 Fujitsu Ltd Mpeg復号装置
JP2003023635A (ja) * 2001-05-07 2003-01-24 Hynix Semiconductor Inc ビデオフレームの圧縮及び伸張ハードウェアシステム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289577A (en) * 1992-06-04 1994-02-22 International Business Machines Incorporated Process-pipeline architecture for image/video processing
US5715009A (en) * 1994-03-29 1998-02-03 Sony Corporation Picture signal transmitting method and apparatus
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US6061711A (en) * 1996-08-19 2000-05-09 Samsung Electronics, Inc. Efficient context saving and restoring in a multi-tasking computing system environment
KR100262453B1 (ko) * 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
US6192073B1 (en) * 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
JP3555729B2 (ja) * 1997-04-22 2004-08-18 日本ビクター株式会社 可変長符号化データの処理方法及び装置
US6304197B1 (en) * 2000-03-14 2001-10-16 Robert Allen Freking Concurrent method for parallel Huffman compression coding and other variable length encoding and decoding
US6757439B2 (en) * 2000-12-15 2004-06-29 International Business Machines Corporation JPEG packed block structure
US20110087859A1 (en) * 2002-02-04 2011-04-14 Mimar Tibet System cycle loading and storing of misaligned vector elements in a simd processor
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
KR100585710B1 (ko) * 2002-08-24 2006-06-02 엘지전자 주식회사 가변길이 동영상 부호화 방법
JP3688255B2 (ja) * 2002-09-20 2005-08-24 株式会社日立製作所 車載用電波レーダ装置及びその信号処理方法
US6931061B2 (en) * 2002-11-13 2005-08-16 Sony Corporation Method of real time MPEG-4 texture decoding for a multiprocessor environment
JP4101034B2 (ja) * 2002-11-14 2008-06-11 松下電器産業株式会社 符号化装置及び方法
US7126991B1 (en) * 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US7254272B2 (en) * 2003-08-21 2007-08-07 International Business Machines Corporation Browsing JPEG images using MPEG hardware chips
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US8082419B2 (en) * 2004-03-30 2011-12-20 Intel Corporation Residual addition for video software techniques
US20050289329A1 (en) * 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
US7653132B2 (en) * 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation
US20060209965A1 (en) * 2005-03-17 2006-09-21 Hsien-Chih Tseng Method and system for fast run-level encoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1056641A (ja) * 1996-08-09 1998-02-24 Sharp Corp Mpegデコーダ
JP2002159007A (ja) * 2000-11-17 2002-05-31 Fujitsu Ltd Mpeg復号装置
JP2003023635A (ja) * 2001-05-07 2003-01-24 Hynix Semiconductor Inc ビデオフレームの圧縮及び伸張ハードウェアシステム

Also Published As

Publication number Publication date
JP2008541663A (ja) 2008-11-20
EP1883885A2 (en) 2008-02-06
WO2006124299A3 (en) 2007-06-28
KR101220724B1 (ko) 2013-01-09
US20060256854A1 (en) 2006-11-16
CN101176089B (zh) 2011-03-02
KR20080011193A (ko) 2008-01-31
TWI365668B (en) 2012-06-01
TW200708115A (en) 2007-02-16
CN101176089A (zh) 2008-05-07
WO2006124299A2 (en) 2006-11-23

Similar Documents

Publication Publication Date Title
JP4920034B2 (ja) マルチスレッドsimd処理を利用したメディア符号化の並列実行
JP4699685B2 (ja) 信号処理装置及びそれを用いた電子機器
US7932843B2 (en) Parallel CABAC decoding for video decompression
CA3014052C (en) Low-complexity intra prediction for video coding
US8213511B2 (en) Video encoder software architecture for VLIW cores incorporating inter prediction and intra prediction
US10462472B2 (en) Motion vector dependent spatial transformation in video coding
CN102804171B (zh) 用于媒体数据译码的16点变换
CN102804172A (zh) 用于媒体数据译码的16点变换
US8879629B2 (en) Method and system for intra-mode selection without using reconstructed data
US11790485B2 (en) Apparatus and method for efficient motion estimation
TW201724852A (zh) 平行算術寫碼技術
JP7279084B2 (ja) イントラ予測のための方法及び装置
JP2022511827A (ja) フレーム間予測方法及び関連する装置
JP4779977B2 (ja) 画像符号化・復号化装置
KR100345450B1 (ko) 인트라 블록 예측 부호화 및 복호화 장치 및 그 방법
Wei et al. H. 264-based multiple description video coder and its DSP implementation
Golston et al. C64x VelociTI. 2 extensions support media-rich broadband infrastructure and image analysis systems
JP5655100B2 (ja) 画像音声信号処理装置及びそれを用いた電子機器
KR20050039068A (ko) 알아이에스시와 디에스피의 듀얼 프로세서를 갖는 비디오신호처리시스템
Mohammadnia et al. Implementation and optimization of real-time h. 264/avc main profile encoder on dm648 dsp
Lakshmish et al. Efficient Implementation of VC-1 Decoder on Texas Instrument's OMAP2420-IVA
JP2010055629A (ja) 画像音声信号処理装置及びそれを用いた電子機器
Pastuszak Video Compression from the Hardware Perspective
Tripathi et al. DESIGNING AND OPTIMIZATION OF CODEC H-263 FOR MOBILE APPLICATIONS

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111213

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120117

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120131

R150 Certificate of patent or registration of utility model

Ref document number: 4920034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees