JP2008117368A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2008117368A5 JP2008117368A5 JP2007218719A JP2007218719A JP2008117368A5 JP 2008117368 A5 JP2008117368 A5 JP 2008117368A5 JP 2007218719 A JP2007218719 A JP 2007218719A JP 2007218719 A JP2007218719 A JP 2007218719A JP 2008117368 A5 JP2008117368 A5 JP 2008117368A5
- Authority
- JP
- Japan
- Prior art keywords
- row
- zero
- value
- data
- conversion
- 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.)
- Granted
Links
- 238000006243 chemical reaction Methods 0.000 claims description 209
- 230000001131 transforming Effects 0.000 claims description 116
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 claims description 62
- 238000000844 transformation Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 8
- 238000005192 partition Methods 0.000 description 16
- 238000001514 detection method Methods 0.000 description 15
- 238000007781 pre-processing Methods 0.000 description 14
- 241001442055 Vipera berus Species 0.000 description 10
- 238000000034 method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000000875 corresponding Effects 0.000 description 6
- 239000012536 storage buffer Substances 0.000 description 4
- 238000007906 compression Methods 0.000 description 3
- 230000003111 delayed Effects 0.000 description 2
- 230000002104 routine Effects 0.000 description 2
- 230000003213 activating Effects 0.000 description 1
- 230000003190 augmentative Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000004059 degradation Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Description
本発明は、2次元(2D)変換(例えば、逆離散コサイン変換又は逆アダマール変換)をデータ値の2D配列に実行する方法及びシステムに関するものである。典型的な実施形態では、本発明は、各値が相当な確率で零値となる2D配列の画像データ値に対する2D直交変換の逆変換を、零値を変換するためには不要のパワー消費型の演算を回避することによって消費パワーを削減するように、実行する方法及び回路に関するものである。
本開示の全体を通じて、ビデオデータの「ブロック」との用語を使用して、ビデオデータのフレームを構成するデータの部分集合であって、フレームの矩形領域内に空間位置を有する部分集合を表す。ビデオデータのブロックは、圧縮された(又は、さもなければ符号化された)ビデオデータで構成され得るが、ビデオデータで構成されていなくてもよい。ビデオデータのブロックの例は、従来の定義によるMPEG符号化ビデオフレームのマクロブロックである。
多くの従来のアプリケーションにおいて、画像データ(例えば、ビデオデータ)又はその他のデータは2次元(「2D」)変換を受け、変換されたデータは元データを復元するために後に逆変換される。このような変換の例には、2D離散コサイン変換(2次元「DCT」)、2Dアダマール変換、及び、2Dフーリエ変換がある。
本開示の全体を通じて、演算を「回避」する(そうしなければ、演算出力値を生成する)との表現は、実際に演算を実行することなく(演算出力値の代わりに)代替出力値を生成又はアサートすることを表す。乗算回路の入力に零値「z1」及び非零定数「c」をアサートして当該回路にその出力への電流「cz1」をアサートさせ、第2の乗算回路の入力に別の零値「z2」及び異なる非零定数「d」をアサートして当該回路にその回路の出力への電流「dz2」をアサートさせ、電流「「cz1」及び「dz2」」に応答してノード(グラウンド電位上の零ボルトに等しい)に出力電圧「cz1+dz2」をアサートするよう加算回路を動作させるオペレーションを「回避」する例は、乗算回路及び加算回路において実際に乗算ステップ及び加算ステップを実行することなく、ノードを接地する(それによって、ノードを強制的にグラウンド電位にする)ことであろう。
本発明は、2D配列のデータ値(すなわち、データ値の行及び列からなる配列)に2D変換を実行する改良された方法及びシステムに関するものであり、ここで、各値は相当に高い確率で零値となるものである。典型的な実施形態では、本発明は、2D配列のデータ値に2D直交変換の逆変換(例えば、2D逆離散コサイン変換又は逆アダマール変換)を実行する改良された方法及びシステムに関するものであり、ここで、各値は零値となる相当に高い確率を有するものである。あるクラスの好ましい実施形態では、本発明は、DCT係数に2次元IDCT(2D逆離散コサイン変換)を実行する改良された方法及びシステムに関するものである。DCT係数は、ビデオデータ(又はその他の画像データ)の配列に2D離散コサイン変換を実行することにより生成され、その各々は零値となる相当に高い確率を有している。
本開示の全体を通じて、「零値」(又は「零データ値」)という表現は、値零を示すデータを意味する。同様に、「零入力データ値」という表現は、値零を示す入力データを意味する。例えば、零入力値は、値零をもつ入力データ(例えば、DCT係数、又は、ビデオデータのピクセルの色成分)を示す用語である。
本開示の全体を通じて、「疎」データ(例えば、逆変換を受けるデータの疎ブロック)との表現は、零値である可能性が高い値を示すデータを意味する。例えば、比較的多数の零値及び比較的少数の非零値を示す入力データのブロック(例えば、DCT係数のブロック)は、データの疎ブロックである。
逆変換の実施は、通常、ビデオ圧縮及び伸長標準に準拠するシステムの実施の主要部分である。この逆変換は、計算集約的なプロセスであり、処理サイクル及び消費パワー要件に著しく関与する。ビデオ圧縮及び伸長標準を実施するモバイル機器(例えば、携帯型メディアプレーヤー)は、特に厳しい処理サイクル及び消費パワーの要件があり、アプリケーションによって設定された厳しい性能要件を満たし、非常に低いパワーを消費してバッテリー寿命を最大限に延ばす必要があり、変換エンジンは、通常、多数の圧縮標準及びこれらの標準に伴う様々な要件をサポートする必要がある。
データのブロックへの(2D逆変換を含む)2D変換の典型的な従来の実施は、性能を改善し、又は、パワーを削減するために、様々な組み合わせで以下の技術を使用する。
1.(変換エンジンに供給される各入力ブロックが外部手段によって符号化されている又は符号化されていないブロックとして特定される場合に)外部手段によって符号化されていないブロックとして特定されたブロックの変換を回避する。しかし、この技術には不必要な変換演算(例えば、符号化されたブロックであるとして特定されているが、零DC係数だけからなるブロックの変換)の遂行を招くことがあるといった不利な点がある。
2.完全に零値により構成された各入力データブロックの行又は列(「零行」又は「零列」)の全体を特定し、(例えば、零行又は零列毎に、所定の値、通常は「零」を出力することにより)このような行又は列に実行されることになる通常の変換演算を回避する。零行及び零列は、外部機器によって指定されるか、又は、変換エンジンによって内部で特定される。しかし、この従来技術は、行(又は列)が零行(又は零列)ではないが、非常に少数の非零値しか含まない疎行(又は疎列)であるという多数の一般的な状況において、性能を改善しないか、又は、パワーを削減しない。
3.(入力データ行又は列内のデータ値を乗算する際に使用するために事前に決定された)同じ係数が後続の入力データ行又は列内のデータ値を乗算するために使用されるべきであることを示す条件を(入力データから)特定し、さもなければ後続の入力データ行又は列内のデータ値を乗算するために新しい係数を決定するよう実行されることになるこのような係数の更新を回避する。
4.分散算術変換を実施する(ルックアップテーブルに基づく2D変換の実施)。典型的なルックアップテーブルベースの実装は、ブロックを変換するために実行されるべき乗算演算の個数を削減することにより、オーバーヘッドを削減する。しかし、このような実装を設計することは通常、非常に複雑である。その理由は、非常に大規模なROMテーブル及び同様にマルチポート型ROMが通常必要とされ、設計制約によって、通常、達成されるべき消費パワーの改善が制限されるからである。
米国特許出願公開第2005/0033788号及び関連の米国特許第6,799,192号に記載されている別の従来の2D変換では、(IDCTの列変換フェーズを実行するときに)データのブロックの各列内の最後の非零エントリーが決定され、そして、変換システムが、各列を逆変換するためにソフトウェアでIDCT演算を実行する8個の異なる「特殊IDCT」プログラムルーチンの中の適切な一つへ分岐する。明らかに、(より少数の乗算演算及び加算演算を必要とする)より簡単な変換演算が、(最後の非零値がより高い位置にあることによって示されるように)比較的多数の零を有する列を処理するために利用され、(より多数の乗算演算及び加算演算を必要とする)より複雑な変換演算が、(最後の非零値がより低い位置にあることによって示されるように)より少数の零を有する列を処理するために利用される。これら参考文献は、(列変換フェーズ後に)IDCTの行変換フェーズを実行するときに、ブロックの各行内の最後の非零エントリーが決定され、変換システムはその後に、各行を逆変換するためにソフトウェアでIDCT演算を実施する8個の異なる「特殊IDCT」プログラムルーチンのうちの適切な一つへ分岐することも教示している。
米国特許出願公開第2005/0033788号及び米国特許第6,799,192号に記載された技術には、当該技術が、零値と非零値をもつ典型的なパターンを有する多数の列及び行を処理する場合に、性能を改善しないか、又は、消費パワーを削減しないという意味で非効率的であることを含めて、多数の問題及び制限がある。例えば、変換されるべき列又は行が零(特に、多数の零)を含むが、非零である最後のエントリーを有する場合に、この技術は、列又は行を変換するために大量のパワーを消費する複雑な(例えば、最も複雑な)「特殊IDCT」ルーチンを選択する。これに対して、本発明の好適な実施形態は、零値で構成されている列の部分及び行の部分(例えば、零値により構成されている行の半分又は列の半分の各々、若しくは、行の4分の1又は列の4分の1の各々)への変換演算を回避することにより、或いは、電力が削減されるようにこのような変換演算を実行することにより、性能を改善し消費パワーを削減する。本発明の一部の好ましい実施形態は、変換されるべき行又は列内の個々の零値への変換演算を回避することにより(或いは、電力が削減されるように行又は列内の個々の零値への変換演算を実行することにより)性能を改善し消費パワーを削減する。
米国特許出願公開第2005/0033788号又は米国特許第6,799,192号には、これら文献に記載されている技術によって得られる性能改善及び低消費パワー化の利益が、変換される各行又は列の部分集合を独立に処理することによって増大されることについての示唆、並びに、どのようにそれを実行するか、又は、そのようにすることが可能であるか否かに関する示唆はない。これに対して、本発明の好適な実施形態は、変換すべき(例えば、逆変換すべき)各行又は列の異なる部分集合に同じ演算を順次に実行可能であり、ここで、各行又は列の部分集合が行又は列の部分を定めるものであり、このような実施形態によって達成可能な性能改善及び低消費パワー化の利益は、かかる部分を定める部分集合のサイズを減少させることだけによって増大することができる。例えば、本発明の一部の好ましい実施形態は、変換されるべき8Nビットの各行又は各列のうちの2Nビットの部分集合に演算の組(1行又は1列当たり4組の演算の組)を順次に実行して優れた性能改善及び低消費パワー化の利益を達成し、本発明のその他の好ましい実施形態は、変換されるべき8Nビットの行又は列のうちのNビットの部分集合に演算の組(1行又は1列当たりに8組の演算の組)を順次に実行して更に優れた性能改善及び低消費パワー化の利益を達成する。
別の従来の2D変換は、RohiniKrishnanらによる“Desiginof a 2D DCT/IDCT Application Specific VLIW ProcessorSupporting Scaled andSub−sampled Blocks”, 16th InternationalConference on VLSI Design, six pages(2003)という題名の論文に記載されている。この論文は、IDCT回路へのデータブロック全体のスケール縮小版(例えば、8×8形のブロックの偶数行を廃棄することにより生成された8×4形のブロック)をアサートし、さもなければブロック全体を逆変換するために使用されることになるIDCT回路の一部を回避すること等によってスケール縮小されたブロックを逆変換するようIDCT回路を動作させることを教示する。この方法は、最終的に廃棄される出力値の計算を回避できるが、最終結果に決して寄与することがない演算を検出し省略することがない。
別の従来の2D変換は米国特許第5,883,823号に記載されている。この変換は、変換されるべき入力ブロックの領域を特定し、各領域を別々に処理する(例えば、あるIDCTは一部の領域の全要素に実行され、あるIDCTはその他の領域の非零要素だけに実行される)。例えば、US5,883,823は、「局所的」IDCT計算が8×8形のブロックの一つの象限(すなわち、最低周波数領域に対応する4×4形の象限)の(零と非零とを問わずに)全要素に実行され、別のIDCT計算が8×8形のブロックのその他のそれぞれ3つの象限(すなわち、より高い周波数領域に対応する3つの4×4形の象限)の非零要素だけに実行されるIDCT計算を(第10欄第53行から第11欄第26行に)明確に教示している。しかしながら、US5,883,823は、IDCT演算処理が非零要素だけに実行される各領域の非零要素を特定する方式(若しくは、このような非零係数を効率的に特定する方式)、又は、ブロックの領域の非零要素だけにIDCT計算を実行する方式、又は、このようなIDCT計算をこのような非零要素だけに効率的に(しかも、低消費パワー化されるように)実行する方式を教示又は示唆していない。
あるクラスの実施形態では、本発明は、入力データブロックの系列中の各ブロックに2D変換(例えば、逆離散コサイン変換)を実行するように構成されたシステムである。ここで、各ブロックは、入力データ値の行と列とにより構成されており、2D変換は、行変換及び列変換を含むものである。これらの実施形態では、システムは、各ブロックの全ての行に行変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたデータのブロックの各列に列変換を実行することによって、又は、各ブロックの全ての列に列変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたデータのブロックの各行に行変換を実行することによって、2D変換を実行するように構成されている。説明を簡単にするために、このクラスにおける実施形態を、各ブロックの全ての行に行変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたデータのブロックの各列に列変換を実行することにより、2D変換を実行するように構成されたものとして説明する。「行」及び「列」への参照を全て、それぞれ、「列」及び「行」への参照によって置き換えて上記クラスの他の実施形態を説明することができることを理解されたい。
本明細書中、データ値の集合(例えば、行又は列)の「部分集合」との用語を広義に使用しており、当該用語は、データ値の行(又は列)、データ値の行(又は列)の偶数要素、データ値の行(又は列)の奇数要素、データ値の行(又は列)におけるN個毎に一つのデータ値、(FFTバタフライに適している)ビット反転順のデータ値の行又は列の偶数要素、又は、データ値の別の部分集合を表すことができる。
行変換を実施するために、上記のクラスにおけるシステムは、入力データブロックにおける各行の入力データ値に(通常、乗算及び加算を含む)変換演算を実行して部分的に変換されたデータのブロックを生成するように構成された回路を備える。システムは、通常、部分的に変換されたデータが記憶されるバッファを備える。列変換を実施するために、システムは、部分的に変換されたデータのブロックにおける各列のデータ値に(通常、乗算及び加算を含む)変換演算を実行するように構成された回路を備える。上記クラスにおける各実施形態は、以下の様に構成される。即ち、入力データの各行に行変換を実行するときに、その行の第1の区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否か(例えば、零値から成るか否か)を判定し、当該行の第1の区画の第1の部分集合中の異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定し、当該行の第1の区画の少なくとも一つの別の部分集合中の異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定し、少なくとも一つの零入力データ値及び少なくとも一つの非零入力データ値を含む上記行毎に行変換を実行する場合に、少なくとも一つの上記零入力データ値(かつ、好ましくは、上記零入力データ値の各々)に対する少なくとも一つの変換演算を回避させるか、又は、電力が削減されるように実行する(例えば、乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算が回避される)。ここで、かかる変換演算は、零値が非零値であるならば全パワーを消費するように実行されることになるものである。少なくとも一つ零入力データ値及び少なくとも一つの非零入力データ値を含む各行に行変換を実施するときに、零入力値に変換演算を実行する一部のこのような実施形態の回路は、その入力のうちの少なくとも一つを更新することなく作動され、各入力を切り替えるために消費されることになるパワー消費を回避する。
好ましくは、上記クラスにおける実施形態は、以下の様に構成される。即ち、部分的に変換されたデータの各列に列変換を実行するときに、列の第1の区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否か(例えば、零値により構成されているか否か)を判定し、列の第1の区画の第1の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、列の第1の区画の少なくとも一つの別の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、部分的に変換されたデータの少なくとも一つの零値及び部分的に変換されたデータの少なくとも一つの非零値を含む上記列毎に列変換を実行するときに、少なくとも一つの変換演算を回避する(又は、電力が削減されるように実行する)。なお、この変換演算は、値が非零値であるならば、部分的に変換されたデータ値のうちの少なくとも一つの上記零値(かつ、好ましくは、上記零値の各々)に対して全パワーを消費する方式で実行されるものである(例えば、そうでなければ乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算)。例えば、少なくとも一つの零データ値及び少なくとも一つの非零データ値を含む各列に列変換を実行するときに、一つのこのような実施形態は、零値が非零値であるならば実行されることになる列の零値への変換演算を回避するように構成されている(例えば、この実施形態は変換演算を実行する回路を回避する)。
本発明の好ましい実施形態は、変換されるべきデータの各ブロックが完全に零値から成るか否かを判定する。ブロックが完全に零値から成るものと判定されると、ブロックの値に関する変換演算(行変換演算と列変換演算の双方)は、回避されるか、又は、電力が削減されるように実行される。これらの好ましい実施形態は、変換されるべきデータのブロックの各行又は各列中における複数の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを順次に(例えば、反復的に)判定する。このような実施形態の実施例は、値xiから成るデータの行(又は列)(ここで、iは0≦i≦N−1の範囲に入る整数であり、Nが偶数である)と、データ値の第1の部分集合及び第1の部分集合とは別のデータ値の第2の部分集合への行(又は列)の一区画と、データ値の第3の部分集合及び第3の部分集合とは別個の第4の部分集合への第1の部分集合の一区画と、データ値の第5の部分集合及び第5の部分集合とは別個の第6の部分集合への第2の部分集合の一区画とを参照する。例示の実施形態は、第1の部分集合が完全に零値により構成されているか否か、及び、第2の部分集合が完全に零値により構成されているか否かを判定する。通常、行(又は列)が(ビデオデータのフレームにDCTを実行することにより生成された)コサイン変換係数により構成されている場合、第1の部分集合が低周波係数(iが0≦i≦(N/2)−1の範囲に入る整数である場合の値xi)により構成され、第2の部分集合が高周波係数(iがN/2≦i≦N−1の範囲に入る整数である場合の値xi)により構成され、第2の部分集合が零値だけにより構成されている可能性が高い(そして、零値だけにより構成されている可能性は第1の部分集合より遙かに高い)。
例示の実施形態は、第1の部分集合が完全に零値により構成されていることを判定すると、第1の部分集合中の値への変換演算を回避するか、又は、この変換を電力が削減されるように実行する(例えば、これらの演算を実行する回路が回避されるか、又は、回路が更新されていない入力のうちの少なくとも一つを用いて作動され、このような各入力をトグルする((切り替える)ために消費されることになるパワー消費を回避する)。第2の部分集合が完全に零値により構成されていることを判定すると、第2の部分集合中の値への変換演算は回避されるか、又は、電力が削減されるように実行される。
第1の部分集合及び第2の部分集合のそれぞれが少なくとも一つの非零値を含むことを判定すると、例示の実施形態は、第3の部分集合、第4の部分集合、第5の部分集合及び第6の部分集合のそれぞれが完全に零値により構成されているか否かを判定する。第1の部分集合が低周波係数(iが0≦i≦(N/2)−1の範囲に入る整数である場合の値xi)により構成される典型的な実施例では、第2の部分集合が高周波係数(iがN/2≦i≦N−1の範囲に入る整数である場合の値xi)により構成され、第3の部分集合が第1の部分集合中の偶数値(iが0≦i≦(N/2)−1の範囲に入る偶数整数である場合の値xi)により構成され、第4の部分集合が第1の部分集合中の偶数値(iが0≦i≦(N/2)−1の範囲に入る奇数整数である場合の値xi)により構成され、第5の部分集合が第2の部分集合中の偶数値により構成され、第6の部分集合が第2の部分集合中の奇数値により構成される。完全に零値により構成されていることが判定された第3の部分集合、第4の部分集合、第5の部分集合及び第6の部分集合のそれぞれに関して、このような部分集合の値についての変換演算は、回避されるか、又は、電力が削減されるように実行され(例えば、これらの演算を実行する回路は回避されるか、又は、回路は入力のうちの少なくとも一つを更新することなく作動されて、このような各入力をトグルするために消費されることになるパワー消費を回避する)。少なくとも一つの非零値を含むことが判定された第3の部分集合、第4の部分集合、第5の部分集合及び第6の部分集合のそれぞれに関して、変換演算はこのような部分集合の値に全パワーを消費する方式で実行される。
上述した例示の実施形態の変形例(及び本発明のその他の実施形態)では、変換されるべきブロックの各行又は各列(又は、行又は列の部分集合)からなるデータ値は、行又は列(又はこれらの部分集合)の一部分からなる各個別の部分集合が完全に零値により構成されているか(又は零値であるか)否かに関する判定の前又は判定中に、並べ替えられる。例えば、行が値xiにより構成され、ここで、iが0≦i≦N−1の範囲に入る整数であり、Nが偶数整数である場合に、
区画はその行中の別々の第1の部分集合及び第2の部分集合により構成され、
第1の部分集合はその行中の別々の第3の部分集合及び第4の部分集合により構成され、
第2の部分集合はその行中の別々の第5の部分集合及び第6の部分集合により構成され、
第1の部分集合はiが0≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成され、
第2の部分集合はiが高周波係数(N/2≦i≦N−1の範囲に入る整数である場合の値xi)により構成され、
第3の部分集合は、iが0≦i≦(N/4)−1の範囲に入る整数である場合に、並べ替えを行なった第1の部分集合の偶数値である値xiにより構成され、
第4の部分集合は、iがN/4≦i≦(N/2)−1の範囲に入る整数である場合に、並べ替えを行なった第1の部分集合の奇数値である値xiにより構成され、
第5の部分集合は、iがN/2≦i≦(3N/4)−1の範囲に入る整数である場合に、並べ替えを行なった第2の部分集合の偶数値である値xiにより構成され、
第6の部分集合は、iが3N/4≦i≦N−1の範囲に入る整数である場合に、並べ替えを行なった第2の部分集合の奇数値である値xiにより構成される。
区画はその行中の別々の第1の部分集合及び第2の部分集合により構成され、
第1の部分集合はその行中の別々の第3の部分集合及び第4の部分集合により構成され、
第2の部分集合はその行中の別々の第5の部分集合及び第6の部分集合により構成され、
第1の部分集合はiが0≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成され、
第2の部分集合はiが高周波係数(N/2≦i≦N−1の範囲に入る整数である場合の値xi)により構成され、
第3の部分集合は、iが0≦i≦(N/4)−1の範囲に入る整数である場合に、並べ替えを行なった第1の部分集合の偶数値である値xiにより構成され、
第4の部分集合は、iがN/4≦i≦(N/2)−1の範囲に入る整数である場合に、並べ替えを行なった第1の部分集合の奇数値である値xiにより構成され、
第5の部分集合は、iがN/2≦i≦(3N/4)−1の範囲に入る整数である場合に、並べ替えを行なった第2の部分集合の偶数値である値xiにより構成され、
第6の部分集合は、iが3N/4≦i≦N−1の範囲に入る整数である場合に、並べ替えを行なった第2の部分集合の奇数値である値xiにより構成される。
別のクラスの実施形態では、本発明は、入力データブロックの系列に2D変換を実行する方法であり、ここで、各ブロックは入力データ値の行及び列からなり、2D変換は行変換及び列変換を含むものである。このクラスの典型的な実施形態では、各ブロックは、ビデオデータにDCTを実行することにより生成されたDCT係数のブロックであり、2D変換は逆離散コサイン変換である。これらの典型的な実施形態及びこのクラス内のその他の実施形態では、系列中の殆ど又は全部のブロック(例えば、少なくとも実質的に全部のブロック)は疎データのブロックである。2D変換は、各入力データブロックの全行に行変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたブロックの各列に列変換を実行する各ステップ、又は、各入力データブロックの全列に列変換を実行して部分的に変換されたデータのブロックを生し、次いで、部分的に変換されたデータのブロックの各行に行変換を実行する各ステップを含む。説明を簡単にするため、このクラスの実施形態を、2D変換が各入力データブロックの全行に行変換を実行して部分的に変換されたデータのブロックを生成し、部分的に変換されたデータのブロックの各列に列変換を実行する各ステップを含むものとして、説明する。「行」及び「列」への参照を全て、「列」及び「行」それぞれへの参照によって置き換えてクラス内の他の実施形態を説明することができることを理解されたい。
上記のクラス内の一部の実施形態では、本方法は、以下の各ステップを含む。即ち、
(a)入力データブロックのうちの一つのブロックの各行に対する行変換を、各行における入力データ値に対する変換演算を実行することによることを含めて実行し、部分的に変換されたデータブロックを生成する、
(b)部分的に変換されたデータブロックの各列に対する列変換を、各列のデータ値に対する更なる変換演算を実行することによることを含めて、実行する、
各ステップを含む。ここで、ステップ(a)は、以下の各ステップを含む。即ち、
上記各行の第1の区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか(例えば、零値により構成されているか)否かを判定し、第1の区画の第1の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、第1の区画の少なくとも一つのその他の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、
少なくとも一つの零入力値及び少なくとも一つの非零入力値を含む上記各行に行変換を実行するときに、少なくとも一つの上記各零入力値が非零値であるならば、少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に全パワーを消費する形で実行されることになる少なくとも1回の変換演算を回避する(又は、電力が削減されるように実行する)(例えば、行の少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算を回避する)、
各ステップを含む。
(a)入力データブロックのうちの一つのブロックの各行に対する行変換を、各行における入力データ値に対する変換演算を実行することによることを含めて実行し、部分的に変換されたデータブロックを生成する、
(b)部分的に変換されたデータブロックの各列に対する列変換を、各列のデータ値に対する更なる変換演算を実行することによることを含めて、実行する、
各ステップを含む。ここで、ステップ(a)は、以下の各ステップを含む。即ち、
上記各行の第1の区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか(例えば、零値により構成されているか)否かを判定し、第1の区画の第1の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、第1の区画の少なくとも一つのその他の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、
少なくとも一つの零入力値及び少なくとも一つの非零入力値を含む上記各行に行変換を実行するときに、少なくとも一つの上記各零入力値が非零値であるならば、少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に全パワーを消費する形で実行されることになる少なくとも1回の変換演算を回避する(又は、電力が削減されるように実行する)(例えば、行の少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算を回避する)、
各ステップを含む。
例えば、少なくとも一つの零入力データ値及び少なくとも一つの非零入力値を含む各行に行変換を実施するときに、ステップ(a)は、乗算演算(第1の入力にアサートされた零入力値が第2の入力にアサートされた第2の値によって乗算される演算)を実行するために、第2の入力をトグルするために消費されることになるパワー消費を回避するよう第2の入力にアサートされた値を更新することなく、第1の入力及び第2の入力を有する乗算回路を作動するステップを含む。
好ましくは、ステップ(b)は、
上記各列における区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか(零値により構成されているか)否かを判定し、当該区画の第1の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、当該区画の少なくとも一つのその他の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを決定するステップと、
少なくとも一つの零入力データ値及び少なくとも一つの非零入力データ値を含む上記各列に列変換を実行するときに、上記各零入力値が非零値であるならば、少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に全パワーを消費する形で実行されることになる少なくとも1回の付加的な変換演算を回避する(又は、電力が削減されるように実行する)(例えば、列の少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算を回避する)ステップと、
を含む。
上記各列における区画を構成するデータ値の異なる部分集合のそれぞれが少なくとも一つの零値を含むか(零値により構成されているか)否かを判定し、当該区画の第1の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを判定し、当該区画の少なくとも一つのその他の部分集合中の異なる部分集合のそれぞれが少なくとも一つの零値を含むか否かを決定するステップと、
少なくとも一つの零入力データ値及び少なくとも一つの非零入力データ値を含む上記各列に列変換を実行するときに、上記各零入力値が非零値であるならば、少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に全パワーを消費する形で実行されることになる少なくとも1回の付加的な変換演算を回避する(又は、電力が削減されるように実行する)(例えば、列の少なくとも一つの上記零入力データ値(そして、好ましくは、上記零入力データ値毎)に乗算及び加算回路を使用して実行されることになる少なくとも1回の乗算又は加算を回避する)ステップと、
を含む。
本発明の典型的な実施形態により実施される変換回路の利点には、
冗長又は別の不必要な計算又は計算ステップの回避に起因した(低周波数の動作を可能とする)改善された(好ましくは、最適化された)計算効率(例えば、入力データ値のブロックを変換する際の本発明の変換エンジンの典型的な実施形態の性能は、1ブロック当たりの非零入力データ値の個数に直接的に対応する。これは、入力データ値のブロックを変換する際の性能が1ブロック当たりに少なくとも一つの非零値を含む行の行数に対応する従来の変換エンジンより粒度のレベルが細かい)
低減されたスイッチング動作が低消費パワー化すること
(好ましい実施形態における)インテリジェントな中間バッファメモリマネージメントの提供
冗長又は別の不必要な計算又は計算ステップの回避(例えば、不必要な乗算器入力トグリングの回避)による整数変換の高速化性能
が含まれる。
冗長又は別の不必要な計算又は計算ステップの回避に起因した(低周波数の動作を可能とする)改善された(好ましくは、最適化された)計算効率(例えば、入力データ値のブロックを変換する際の本発明の変換エンジンの典型的な実施形態の性能は、1ブロック当たりの非零入力データ値の個数に直接的に対応する。これは、入力データ値のブロックを変換する際の性能が1ブロック当たりに少なくとも一つの非零値を含む行の行数に対応する従来の変換エンジンより粒度のレベルが細かい)
低減されたスイッチング動作が低消費パワー化すること
(好ましい実施形態における)インテリジェントな中間バッファメモリマネージメントの提供
冗長又は別の不必要な計算又は計算ステップの回避(例えば、不必要な乗算器入力トグリングの回避)による整数変換の高速化性能
が含まれる。
一部の実施形態では、本発明のシステムは、本発明によって実施される変換エンジンを含むビデオ処理システム(例えば、パイプライン方式ビデオ復号システム)である。一部のこのような実施形態では、ビデオ処理システムは、携帯型メディアプレーヤーのビデオ処理サブシステムとして動作可能であるように構成される。その他の実施形態では、本発明のシステムは、本発明によって実施される変換エンジンを含むビデオ処理サブシステムを含む携帯型メディアプレーヤーである。
本発明のその他の態様は、本発明のシステムの実施形態で使用される変換エンジン及び変換エンジン回路と、本発明のシステムの実施形態の動作中に実行される方法である。
以下、本発明のシステムの実施形態を、図1、2、3、4、5及び6を参照して説明する。
図1は、パイプライン方式ビデオ復号システムのシステムレベルブロック図であり、当該システムは、ビットストリームエンジン1、(本発明に従って実施される)変換エンジン3、及び、ピクセル再構成エンジン5を備えており、これらは、図示するようにシステムバスに沿って接続されている。ビットストリームエンジン1は、符号化されたビデオデータを受信する。この符号化されたビデオデータは、周波数領域係数の処理済みブロックを含んでおり、当該周波数領域係数は、ビデオピクセルのブロックに2D変換(例えば、2次元DCT)を実行することにより生成されている。ビットストリームエンジン1は、通常、アンパッキング及び逆量子化を実行することによって符号化されたビデオデータを処理し、得られる処理済みの周波数領域の係数のブロックの系列を変換エンジン3へアサートする。変換エンジン3は、系列中の各ブロックに2D逆変換を実行して部分的に復号されたビデオピクセルのブロックを生成し、部分的に復号されたビデオピクセルを更なるビデオ復号のためピクセル再構成エンジン5へアサートする。ピクセル再構成エンジン5は、部分的に復号されたビデオピクセルに応じて完全に復号されたピクセルを生成し、完全に復号されたピクセルをシステムバスへアサートする。
図1のシステムは、ビデオ復号機能を有する携帯型メディアプレーヤー又は別の携帯型データ処理システム(又は、携帯可能であることが目的とされていないデータ処理システム)のサブシステムであってもよく、このようなサブシステムは、本発明による変換エンジン3を実装することにより、本発明に従って実施される。このような処理システムは、図1には示していない更なる要素を備えることがあり、通常は更なる要素を含むものである。
本発明の一部の実施形態は、図1に示す構造を持たないシステムによって、又は、図2に示す構造を持たない処理システムによって実施されることも考えられる。
図2は、図1の変換エンジン3、又は、データ値のブロックに2次元変換(例えば、2D逆変換)を実行する別の装置の典型的な実施例のブロック図である。図2は、図示の通りに接続された行/列変換回路7、記憶バッファ9、及び、列/行変換回路11を備えている。一部の実施例では、図2の回路7は、回路7によって受信された入力データのブロックの系列中の各ブロックの全行に行変換を実行し、得られたデータを記憶バッファ9へアサートするように構成され、回路11は、バッファ9からこのようなデータの列を読み出し、行変換から得られたデータの各ブロックの全列に列変換を実行するように構成されている。その他の実施例では、図2の回路7は、回路7によって受信された入力データのブロックの系列中の各ブロックの全列に列変換を実行し、得られたデータを記憶バッファ9へアサートするように構成され、回路11は、バッファ9からこのようなデータの行を読み出し、列変換から得られたデータの各ブロックの全行に行変換を実行するように構成されている。
図3は、図2の実施例の回路7に入力され得るタイプの入力データブロック(「I」と呼ばれる)と、(例えば、図2のこのような実施例の回路7において)ブロックIに行変換を適用したブロック(「II」と呼ばれる)と、(例えば、図2のこのような実施例の回路7及び回路11において)ブロックIに行変換及び列変換を適用したブロック(「III」と呼ばれる)の図である。図3のブロックIは、4行4列の係数からなる周波数領域の係数の4×4形のブロックであり、零値を有する各係数は「O」で表され、非零値を有する各係数は「X」で表されている。行は参照シンボル「R1」乃至「R4」によって特定され、列は参照シンボル「a」乃至「d」によって特定されている。
典型的な従来の変換エンジンは、完全に零値により構成された(変換されるべき各ブロックの)全行又は全列(すなわち、「零行」又は「零列」)を特定し、特定された各零行又は零列に実行されることになる通常の変換演算を回避するように構成されている。このような従来の変換エンジンは、ブロックIの行R1及びR3を零行として特定し、行R1及びR3に実行することになる変換計算を回避する。
これに対して、本発明の変換エンジンの典型的な実施形態(例えば、本発明を具現化する図2のエンジンの実施例)は、変換されるべき各ブロックの零行及び零列(例えば、ブロックIの行R1及びR3)を特定し、(行を零行として特定しなかった場合に)零行に実行されることになる行変換計算を回避し、(列を零列として特定しなかった場合に)零列に実行されることになる列変換計算を回避するだけでなく、非零行及び非零列への変換演算(例えば、ブロックIの行R2及びR4上の行変換計算)中に付加的なパワーを節約するようにも構成されている。この付加的なパワー節約は、行における完全に零データ値により構成された部分集合(及び列の部分集合)(例えば、列c及びd内の係数により構成されたブロックIの行R2の部分集合、又は、列b及びd内の係数により構成されたブロックIの行R4の部分集合)を特定し、部分集合が完全に零データ値だけにより構成されていないならば、このような各部分集合に実行されることになる変換計算を回避する(又は、電力が削減されるように実行する)ことにより達成される。
本発明の変換エンジンのこのような実施形態が図2に示すような構造を有し、4×4のDCT変換係数をもつブロックの系列中の各ブロックにIDCT(逆DCT)変換を実行するように構成されている場合を考える。このような各ブロックの各行は、2個の低周波係数(例えば、図3における各ブロックの列「a」及び「b」内の低周波係数)と、2個の高周波係数(例えば、図3における各ブロックの列「c」及び「d」内の高周波係数)とにより構成されている。このようなブロックの各列は、2個の低周波係数(例えば、図3における各ブロックの行「R1」及び「R2」内の低周波係数)と、2個の高周波係数(例えば、図3における各ブロックの行「R3」及び「R4」内の高周波係数)とにより構成されている。この場合には、各行及び各列の係数は、周波数が高いほど、低周波係数の場合より零値だけによって構成されている可能性が高くなる。
本発明の変換エンジンのこのような実施形態の回路7は、DCT変換係数の各ブロック中の各行の2個の最低周波係数が完全に零値により構成されているか否かを判定し、このような各行の2個の最高周波係数が完全に零値により構成されているか否かを判定し、完全に零値により構成されているならば、各行の2個の最低周波係数への行変換計算を回避し(このような計算は、完全に零値により構成されていないならば、これらの係数に全パワーを消費するような形で実行されることになる)、又は、このような計算を電力が削減されるように実行し、完全に零値により構成されているならば、各行の2個の最高周波係数への行変換計算を回避し(このような計算は、完全に零値により構成されていないならば、これらの係数に全パワーを消費するような形で実行されることになる)、又は、このような計算を電力が削減されるように実行するように構成されている。例えば、このような実施形態の回路7は、ブロックIの行R1、R2、R3及びR4のそれぞれの2個の最高周波係数への行変換計算を回避するように構成される。
本発明の変換エンジンのこのような実施形態の回路7は、
アサートされたDCT変換係数の各ブロック中の各行の2個の最低周波係数のうちの偶数係数(例えば、図3のブロックIの列「b」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最低周波係数のうちの奇数係数(例えば、図3のブロックIの列「a」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最高周波係数のうちの偶数係数(例えば、図3のブロックIの列「d」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最高周波係数のうちの奇数係数(例えば、図3のブロックIの列「c」内の各係数)が零値であるか否かを判定するようにも構成される。このような実施形態の回路7は、零値であると判定されたこのような各係数に(より多くのパワーを消費する形で)実行されることになる乗算計算を電力が削減されるように実行して行を変換するようにも構成される。通常、このような低パワー化方式の各乗算は、第1の入力及び第2の入力を有する乗算回路を作動させて、
(第1の入力へアサートされた)零値に(第2の入力へアサートされた)第2の値を、当該第2の入力へアサートされた値を更新することなく、乗算することによって実行され、これによって、第1の入力へアサートされた値が非零値である場合に(そして、第2の入力における更新された第2の値がこのような非零値と乗算される必要がある場合に)、第2の入力をトグルするために消費されることになるパワーの消費を回避する。
アサートされたDCT変換係数の各ブロック中の各行の2個の最低周波係数のうちの偶数係数(例えば、図3のブロックIの列「b」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最低周波係数のうちの奇数係数(例えば、図3のブロックIの列「a」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最高周波係数のうちの偶数係数(例えば、図3のブロックIの列「d」内の各係数)が零値であるか否かを判定し、アサートされたDCT変換係数の各ブロック中の各行の2個の最高周波係数のうちの奇数係数(例えば、図3のブロックIの列「c」内の各係数)が零値であるか否かを判定するようにも構成される。このような実施形態の回路7は、零値であると判定されたこのような各係数に(より多くのパワーを消費する形で)実行されることになる乗算計算を電力が削減されるように実行して行を変換するようにも構成される。通常、このような低パワー化方式の各乗算は、第1の入力及び第2の入力を有する乗算回路を作動させて、
(第1の入力へアサートされた)零値に(第2の入力へアサートされた)第2の値を、当該第2の入力へアサートされた値を更新することなく、乗算することによって実行され、これによって、第1の入力へアサートされた値が非零値である場合に(そして、第2の入力における更新された第2の値がこのような非零値と乗算される必要がある場合に)、第2の入力をトグルするために消費されることになるパワーの消費を回避する。
本発明の変換エンジンのこのような実施形態の回路11は、好ましくは、バッファ9から読み出される、部分的に変換された係数の4×4形の各ブロック中の各列における前半分(すなわち、最初の2個のデータ値)が完全に零値により構成されているか否かを判定し、このような各列における後半分(最後の2個のデータ値)が完全に零値により構成されているか否かを判定し、完全に零値により構成されているならば、(完全に零値により構成されていないならば、これらの値に全パワーを消費する形で実行されることになる)各列の前半分への列変換計算を回避するか、又は、このような計算を電力が削減されるように実行し、完全に零値により構成されているならば、(完全に零値により構成されていないならば、これらの値に全パワーで実行されることになる)各列の後半分への列変換計算を回避するか、又は、このような計算を電力が削減されるように実行するようにも構成される。
本発明の変換エンジンのこのような実施形態の回路11は、バッファ9から読み出される、部分的に変換された係数の4×4形の各ブロック中の各列の前半分内の偶数データ値(例えば、図3のブロックII中の行R2内の各値)が零値であるか否かを判定し、このような各列の前半分内の奇数データ値(例えば、図3のブロックII中の行R1内の各係数)が零値であるか否かを判定し、このような各列の後半分内の偶数データ値(例えば、図3のブロックII中の行R4内の各係数)が零値であるか否かを判定し、このような各列の後半分内の奇数データ値(例えば、図3のブロックII中の行R3内の各係数)が零値であるか否かを判定するようにも構成される。このような実施形態の回路11は、零値であると判定された各データ値に(より多くのパワーを消費する形で)実行されることになる乗算計算を電力が削減されるように実行して列を変換するようにも構成される。通常、このような各低パワー化乗算は、第1の入力及び第2の入力を有する乗算回路を作動させて、(第1の入力へアサートされた)零値に(第2の入力へアサートされた)第2の値を、当該第2の入力にアサートされた値を更新することなく、乗算することにより実行され、これによって、第1の入力にアサートされた値が非零値である場合に(そして、第2の入力で更新された第2の値がこのような非零値で乗算される必要がある場合に)、第2の入力をトグルするために消費されることになるパワーの消費を回避する。
各行及び各列が8個のデータ値により構成される上記実施例の変形例では、行(又は列)における前半分(又は後半分)内の奇数(又は偶数)データ値が零値であるか否かを判定する各ステップは、行(又は列)における上記半分のうちの前半分(又は後半分)内のデータ値が完全に零値により構成されているか否かを判定するステップによって置き換えられ、エンジンは、完全に零値により構成される各半行(又は各半列)における半分それぞれの行(又は列)変換計算を回避するか(このような変換計算は、完全に零値により構成されていないならば、これらの値に全パワーを消費する形で実行されることになるものである)、又は、このような計算を電力が削減されるように実行するように構成される。好ましくは、エンジンは、このような各半行(又は半列)中の奇数データ値が零値であるか否かを判定し、このような各半行(又は半列)中の偶数データ値が零値であるか否かを判定し、零値であることが判定された各データ値に(より多くのパワーを消費する形で)実行されることになる乗算計算を電力が削減されるように実行して、関連の行又は列を変換するようにも構成される。
上記の何れかの実施例の変形例では、回路7又は11によって変換されるべきブロックの各行又は各列(又は、行又は列の部分集合)を構成するデータ値は、行又は列(又はこれらの部分集合)における区画を構成する各個別の部分集合が完全に零値により構成されているか(又は零値であるか)否かに関する判定前又は判定中に並べ替えられる。
例えば、行(又は列)が値xiにより構成されており、ここで、iが0≦i≦N−1の範囲に入る整数であり、Nが偶数整数である場合に、
この区画は行(列)中の別個の第1の部分集合及び第2の部分集合により構成され、
第1の部分集合は行(列)中の別個の第3の部分集合及び第4の部分集合により構成され、
第2の部分集合は行(列)中の別個の第5の部分集合及び第6の部分集合により構成され、
第1の部分集合はiが0≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成され、
第2の部分集合はiがN/2≦i≦N−1の範囲に入る整数である場合の値xiにより構成され、
第3の部分集合は、iが0≦i≦(N/4)−1の範囲に入る整数である場合の値xiにより構成されるか、第1の部分集合の偶数値により構成されるか、又は、第1の部分集合を並べ替えた部分集合の偶数値により構成され、
第4の部分集合は、iがN/4≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成されるか、第1の部分集合の奇数値により構成されるか、又は、第1の部分集合を並べ替えた部分集合の奇数値により構成され、
第5の部分集合は、iがN/2≦i≦(3N/4)−1の範囲に入る整数である場合の値xiにより構成されるか、第2の部分集合の偶数値により構成されるか、又は、第2の部分集合を並べ替えた部分集合の偶数値により構成され、
第6の部分集合は、iが3N/4≦i≦N−1の範囲に入る整数である場合に値xiにより構成されるか、第2の部分集合の奇数値により構成されるか、又は、第2の部分集合を並べ替えた部分集合の奇数値により構成される。
例えば、行(又は列)が値xiにより構成されており、ここで、iが0≦i≦N−1の範囲に入る整数であり、Nが偶数整数である場合に、
この区画は行(列)中の別個の第1の部分集合及び第2の部分集合により構成され、
第1の部分集合は行(列)中の別個の第3の部分集合及び第4の部分集合により構成され、
第2の部分集合は行(列)中の別個の第5の部分集合及び第6の部分集合により構成され、
第1の部分集合はiが0≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成され、
第2の部分集合はiがN/2≦i≦N−1の範囲に入る整数である場合の値xiにより構成され、
第3の部分集合は、iが0≦i≦(N/4)−1の範囲に入る整数である場合の値xiにより構成されるか、第1の部分集合の偶数値により構成されるか、又は、第1の部分集合を並べ替えた部分集合の偶数値により構成され、
第4の部分集合は、iがN/4≦i≦(N/2)−1の範囲に入る整数である場合の値xiにより構成されるか、第1の部分集合の奇数値により構成されるか、又は、第1の部分集合を並べ替えた部分集合の奇数値により構成され、
第5の部分集合は、iがN/2≦i≦(3N/4)−1の範囲に入る整数である場合の値xiにより構成されるか、第2の部分集合の偶数値により構成されるか、又は、第2の部分集合を並べ替えた部分集合の偶数値により構成され、
第6の部分集合は、iが3N/4≦i≦N−1の範囲に入る整数である場合に値xiにより構成されるか、第2の部分集合の奇数値により構成されるか、又は、第2の部分集合を並べ替えた部分集合の奇数値により構成される。
図3のブロックIの行R4を再び参照する。このような行R4内の偶数係数は零値であり、このような行内の奇数係数は完全に零値により構成されていない。このような行R4を変換するため、本発明の変換エンジンの一部の実施形態は、行の偶数係数に行変換演算を実行する乗算器への入力がこのような行変換演算の実行中に切り替わることを阻止することにより、消費パワーを削減することになる。これは、変換中に乗算器によって消費されるスイッチングパワーを削減することに(すなわち、動的消費パワーを削減するために)役立つ。
図3を再び参照する。ブロックIの行R4では、行全体中の最初の係数だけが非零(符号化された)係数である。本発明の変換エンジンの好ましい実施形態は、このタイプの行又は列(すなわち、最初のデータ値だけが非零である行又は列)を認識し、完全に非零値により構成されている行又は列を変換するために必要とされるパワーより少ないパワーを消費する形でこのような行又は列を変換するように構成される。例えば、(図2に示す構造を有する本発明の変換エンジンの実施形態の)回路7の好ましい実施例は、最初の値が非零である入力データ行に対する行変換を、行の非零係数だけに応じて、行の全データ値に通常の行変換(全パワーを消費することになる変換)を実行することなく、電力が削減されるように実行し、バッファ9に得られる部分的に変換されたデータ値を記憶するように構成される。
本発明の変換エンジンの好ましい実施形態は、ブロックの個別のデータ値が変換されるべきか否かを検出し(例えば、係数バイアスを用いて係数に逆直接コサイン変換を施すためにDCT係数のブロックの個別の係数に零検出を実行し)、零値であることが判定された全データ値に関して、少なくとも一つの上記零値を変換するために利用されるべき少なくとも一つの乗算器への少なくとも一つ(そして、好ましくは、一つずつ)の入力がその先行値から切り替わらないことを保証することにより消費パワーを削減する。これはエンジン内の動的消費パワーを削減する。
図2に示す構造を有する本発明の変換エンジンの実施形態の好ましい実施例では、回路7は、この回路によって生成される、部分的に変換されたデータ値を内部バッファ9に記憶する。回路11は、バッファ9からこのデータを読み出し、データの各列(又は行)に列(又は行)変換を実行する。通常、回路11は、データの少なくとも一つの列(行)がバッファ9内に存在し、変換のために利用可能になると直ぐに、列(行)変換計算を実行する。よって、好ましい実施形態では、回路7は、この回路7が実行する行(列)変換演算を並び替えて、できる限り迅速に、データの完全な列(行)に列(行)変換を実行するために十分な回路11用の部分的に変換されたデータを生成する(バッファ9内に記憶する)ように構成される。このように並び替える方式(例えば、インターリーブする方式)で、行(列)変換を実行するように回路7を構成することによって、システムによる消費パワーを(例えば、内部バッファ記憶のため消費されるパワーを最小限に抑えることにより)低減することができる。
或いは、対称変換が図2に示す構造を有する本発明の変換エンジンの実施形態に従って実行される場合には、回路7は、変換の対称的な性質を利用する方式で、付加的な行変換計算を実行する前に2列のデータを生成する(そして、バッファ9内に記憶する)ために十分な行変換計算を実行するように、又は、付加的な列変換計算を実行する前に2行のデータを生成する(そして、バッファ9内に記憶する)ために十分な列変換計算を実行するように構成される。回路7のこのような実施形態によって実行される行(又は列)変換は、一時記憶されたデータの更なる完全な列(行)に列(行)変換を実行するために十分な回路11用の部分的に変換されたデータを、できる限り迅速に生成し(そして、バッファ9内に記憶し)続ける。行変換計算を実行するために回路7を、付加的な行変換計算を実行する前に、1列のデータを出力するように実施するか又は2列のデータを出力するように実施するかに関する判定は、性能要件とバッファメモリ要件との間のトレードオフに依存する。バッファ9が1列の部分的に変換されたデータを記憶する容量を保有することだけが必要とされる方式で回路7が行変換を実行するように実施される場合には、バッファ9の要求された容量を最小限に抑える利点は、典型的に、性能低下(例えば、データ値の完全なブロックに逆変換を実行するために本発明の変換エンジンのサイクル数が増加すること)を犠牲にして得られることになることが理解されるべきである。
本発明に従って従来のH264に基づく変換(本当の乗算を用いることなく実行され得る整数変換)を実行するために、本発明の変換演算は乗算器無しで実施することができる。H264に基づく変換は、乗算器ではなくシフト器を使用して実施し得る。本発明による変換回路の回避は、これら実施例であっても、変換計算を高速化する(そして、変換計算によって消費されるエネルギーを低下させる)。
次に、図4のフローチャートを参照して本発明の一つのクラスの実施形態をより詳細に説明する。図4のフローチャートは、入力データブロックの系列中の各ブロックに実行される2D変換(例えば、逆離散コサイン変換)に関するものであり、各ブロックは入力データ値をもつ行及び列を有しており、2D変換は行変換及び列変換を含んでいる。本発明によれば、2D変換は、各ブロックの全行に行変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたデータのブロックの各列に列変換を実行するか、又は、各ブロックの全列に列変換を実行して部分的に変換されたデータのブロックを生成し、次いで、部分的に変換されたデータのブロックの各行に行変換を実行することによって実行される。図4のフローチャートは、データ値の行へのこのような行変換、又は、データ値の列へのこのような列変換について記載している(例えば、本発明を具現化する図2の回路7の実施による周波数係数の行又は列の変換、又は、本発明を具現化する図2の回路11の実施による、バッファ9から読み出された部分的に変換されたデータの行又は列の変換について記載している)。簡単にするために、図4の以下の説明は、データ値の行が変換されることを仮定している。この説明中の「行」への全ての参照を、「列」への参照によって置き換えて、本発明のその他の実施形態を説明することができることを理解されたい。
本発明に従って逆変換されるべき典型的なブロックは、(例えば、逆変換がH264に基づく変換であるならば)1行当たりに4個の係数を有し、又は、(例えば、逆変換が周波数係数の8×8形のブロック上のIDCTであるならば)1行当たりに8個の係数を有する。図4は何れのケースでも適用可能である。
図4に示すステップを実行する前に、本発明の典型的な実施形態の変換エンジンは、変換されるべきデータのブロックが完全に零値により構成されているか否かを判定する。ブロックが完全に零値により構成されていることを判定すると、変換エンジンは、このブロックへの変換演算(行変換演算と列変換演算の双方)を回避させる(例えば、変換エンジンは、ブロックの値に実際の変換演算を実行することなく、ブロックに応答して零を出力する)。変換エンジンは、変換されるべきデータのブロックが少なくとも一つの非零値を含むと判定したならば、行変換を開始する(すなわち、変換エンジンは図4のステップ20を実行する)。
図4のフローチャートに従って実行されるべき行変換の開始後(ステップ20)、変換されるべき第1行のデータ値がバッファメモリから読み出される(ステップ22)。バッファメモリは、(回路7が図4のフローチャートを実施するならば)図2の回路7の入力に接続されているバッファメモリ、又は(回路11が図4のフローチャートを実施するならば)図2のバッファメモリ9である。
ステップ24において、変換エンジンは、現在の行(ステップ22の最新の実行中に読み出された行)が少なくとも一つの非零値を含むか否かを判定する。もし含まないならば、変換エンジンは、(行のデータ値に実際の行変換演算を実行することなく)その行を行変換した結果を示す零を出力し(ステップ25)、バッファメモリから次の行を読み出す(ステップ22の次の実行)。現在の行が少なくとも一つの非零値を含むならば、エンジンは現在の行の前半分(例えば、4個のデータ値により構成される行の最初の2個のデータ値)が少なくとも一つの非零値を含むか否かを判定する(ステップ26)。
現在の行の前半分が少なくとも一つの非零値を含まないならば、エンジンは、(行の前半分のデータ値に実際の行変換演算を実行することなく)その行の前半分を行変換した結果を示す零を出力し(ステップ28)、現在の行の後半分(例えば、4個のデータ値により構成される行の後半の2個のデータ値)が少なくとも一つの非零値を含むか否かを判定する(ステップ40)。
現在の行の前半分が少なくとも一つの非零値を含むならば、エンジンは現在の行の前半分中の前半分が少なくとも一つの非零値を含むか否かを判定し(ステップ30)、現在の行の前半分中の後半分が少なくとも一つの非零値を含むか否かを判定する(ステップ32)。
現在の行の前半分中の前半分が少なくとも一つの非零値を含むならば(例えば、単一の非零値により構成されるか、又は、少なくとも一つの非零値を含む2個の値により構成されるならば)、エンジンは、行の前半分中の前半分のデータ値に行変換演算を実行し(ステップ36)、得られる変換されたデータをバッファメモリに記憶する(ステップ39)。ステップ39を実行するために利用されるバッファメモリは、(回路11が図4のフローチャートを実施するならば)図2の回路11の出力に接続されたバッファメモリであってもよく、(回路7が図4のフローチャートを実施するならば)図2のバッファメモリ9であってもよい。
現在の行の前半分中の前半分が非零値を含まないならば、エンジンはステップ37を実行する。そのステップ37において、エンジンは、
(a)現在の行の前半分中の前半分を行変換した結果を示す一つ以上の零を出力する(現在の行の前半分中の前半分における一つ以上のデータ値に実際の行変換計算を実行することなく)。このような各零値は、その後にバッファメモリに記憶される(ステップ39)。或いは、エンジンは、
(b)現在の行の前半分中の前半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ39)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の前半分中の前半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の前半分中の前半分における各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行なうことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるため消費されることになるパワーを消費することを回避することができる。エンジンがIDCTを実行する場合には、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときに、乗算の結果はコサイン定数の値とは無関係に零になるので、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値とコサイン定数とを乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の前半分中の前半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を出力し(一つ以上のデータ値に実際の行変換計算を実行することなく)、現在の行の前半分中の前半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ39)。
(a)現在の行の前半分中の前半分を行変換した結果を示す一つ以上の零を出力する(現在の行の前半分中の前半分における一つ以上のデータ値に実際の行変換計算を実行することなく)。このような各零値は、その後にバッファメモリに記憶される(ステップ39)。或いは、エンジンは、
(b)現在の行の前半分中の前半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ39)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の前半分中の前半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の前半分中の前半分における各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行なうことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるため消費されることになるパワーを消費することを回避することができる。エンジンがIDCTを実行する場合には、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときに、乗算の結果はコサイン定数の値とは無関係に零になるので、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値とコサイン定数とを乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の前半分中の前半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を出力し(一つ以上のデータ値に実際の行変換計算を実行することなく)、現在の行の前半分中の前半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ39)。
現在の行の前半分中の後半分が少なくとも一つの非零値を含むならば(例えば、単一の非零値により構成されるか、又は、少なくとも一つの非零値を含む2個の値により構成されているならば)、エンジンは、行の前半分中の後半のデータ値に行変換演算を実行し(ステップ34)、得られる変換されたデータをバッファメモリに記憶する(ステップ39)。
現在の行の前半分中の後半分が非零値を含まないならば、エンジンはステップ35を実行する。そのステップ35において、エンジンは、
(a)現在の行の前半分中の後半分を行変換した結果を示す一つ以上の零を出力する(現在の行の前半分中の後半分における一つ以上のデータ値に実際の行変換計算を実行することなく)。このような各零値は、その後にバッファメモリに記憶される(ステップ39)。
或いは、エンジンは、
(b)現在の行の前半分中の後半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ39)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の前半分中の後半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の前半中の後半の各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値とコサイン定数とを乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の前半分中の後半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の前半分中の後半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ39)。
(a)現在の行の前半分中の後半分を行変換した結果を示す一つ以上の零を出力する(現在の行の前半分中の後半分における一つ以上のデータ値に実際の行変換計算を実行することなく)。このような各零値は、その後にバッファメモリに記憶される(ステップ39)。
或いは、エンジンは、
(b)現在の行の前半分中の後半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ39)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の前半分中の後半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の前半中の後半の各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値とコサイン定数とを乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の前半分中の後半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の前半分中の後半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ39)。
ステップ34及び36、ステップ34及び37、ステップ35及び36、又は、ステップ35及び37で生成又はアサートされた全データ値がバッファメモリに記憶された後(ステップ39)、エンジンは、現在の行の後半分が少なくとも一つの非零値を含むか否かを判定する(ステップ40)。現在の行の後半分が少なくとも一つの非零値を含まないならば、変換エンジンは、行の後半分を行変換した結果を示す零を(行の上記後半分のデータ値に実際の行変換演算を実行することなく)出力し(ステップ41)、バッファメモリから変換されるべき次の行を読み出す(ステップ22の別の実行)。
現在の行の後半分が少なくとも一つの非零値を含むならば、エンジンは、現在の行の後半分中の前半分が少なくとも一つの非零値を含むか否かを判定し(ステップ42)、現在の行の後半分中の後半分が少なくとも一つの非零値を含むか否かを判定する(ステップ44)。
現在の行の後半分中の前半分が少なくとも一つの非零値を含むならば(例えば、単一の非零値により構成されるか、又は、少なくとも一つの非零値を含む2個の値により構成されるならば)、エンジンは、行の後半分中の前半分におけるデータ値に行変換演算を実行し(ステップ48)、得られる変換されたデータをバッファメモリに記憶する(ステップ50)。ステップ50を実行するために利用されるバッファメモリは、(回路11が図4のフローチャートを実施するならば)図2の回路11の出力に接続されたバッファメモリであってもよく、(回路7が図4のフローチャートを実施するならば)図2のバッファメモリ9であってもよい。
現在の行の後半分中の前半分が非零値を含まないならば、エンジンはステップ49を実行する。そのステップ49において、エンジンは、
(a)現在の行の後半分中の前半分を行変換した結果を示す一つ以上の零を(現在の行の後半中の前半の一つ以上のデータ値に実際の行変換計算を実行することなく)出力する。このような各零値は、その後にバッファメモリに記憶される(ステップ50)。
或いは、エンジンは、
(b)現在の行の後半分中の前半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ50)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の後半分中の前半分の各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の後半分中の前半分の各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値をコサイン定数で乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の後半分中の前半分の少なくとも一つの値の行変換バージョンを示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の後半分中の前半分の少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ50)。
(a)現在の行の後半分中の前半分を行変換した結果を示す一つ以上の零を(現在の行の後半中の前半の一つ以上のデータ値に実際の行変換計算を実行することなく)出力する。このような各零値は、その後にバッファメモリに記憶される(ステップ50)。
或いは、エンジンは、
(b)現在の行の後半分中の前半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ50)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の後半分中の前半分の各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の後半分中の前半分の各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力の切り替えを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応の入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値をコサイン定数で乗算した結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の後半分中の前半分の少なくとも一つの値の行変換バージョンを示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の後半分中の前半分の少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ50)。
現在の行の後半中の後半が少なくとも一つの非零値を含むならば(例えば、単一の非零値により構成されるか、又は、少なくとも一つの非零値を含む2個の値により構成されているならば)、エンジンは、行の後半中の後半のデータ値に行変換演算を実行し(ステップ46)、結果として得られる変換されたデータをバッファメモリに記憶する(ステップ50)。
現在の行の後半分中の後半分が非零値を含まないならば、エンジンはステップ47を実行する。そのステップ47において、エンジンは、
(a)現在の行の後半分中の後半分を行変換した結果を示す一つ以上の零を(現在の行の後半分中の後半分における一つ以上のデータ値に実際の行変換計算を実行することなく)出力する。このような各零値は、その後にバッファメモリに記憶される(ステップ50)。
或いは、エンジンは、
(b)現在の行の後半分中の後半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ50)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の後半分中の後半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の後半分中の後半分における各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力のトグリングを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応する入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値をコサイン定数で乗算する結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の後半分中の後半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の後半分中の後半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ50)。
(a)現在の行の後半分中の後半分を行変換した結果を示す一つ以上の零を(現在の行の後半分中の後半分における一つ以上のデータ値に実際の行変換計算を実行することなく)出力する。このような各零値は、その後にバッファメモリに記憶される(ステップ50)。
或いは、エンジンは、
(b)現在の行の後半分中の後半分における(複数の)データ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各出力値はその後にバッファメモリに記憶される(ステップ50)。例えば、エンジンは、これを、少なくとも一つの定数がアサートされる(少なくとも一つの入力を備える)第1の入力セットと現在の行の後半分中の後半分における各データ値がアサートされる(少なくとも一つの入力を備える)第2の入力セットとを有する乗算回路を作動させて、少なくとも、現在の行の後半分中の後半分における各データ値に対する乗算演算を、第1の入力セットと第2の入力セットの少なくとも一方にアサートされた値を更新することなく実行することによって行うことができ、さもなければ乗算回路の(複数の)関連の入力を切り替えるために消費されることになるパワーを消費することを回避する。エンジンがIDCTを実行するケースでは、第1の入力セットにアサートされた各定数はコサイン定数であり、一実施例では、第2の入力セットにアサートされたデータ値が零値であるときには、乗算の結果はコサイン定数の値とは無関係に零になるため、エンジンは上記零値で乗算されるべきコサイン定数が更新されること(それ以前の値から変更されること)を阻止する。別の実施例では、エンジンは、(何れかの乗算器入力のトグリングを阻止するために)(零データ値で乗算されるべき)第1の入力セットにアサートされるコサイン定数の更新を阻止し、第2の入力セットの対応する入力にアサートされているデータ値の更新を阻止し、(実際に2個のオペランドを一緒に乗算することなく)零データ値をコサイン定数で乗算する結果を示す零値をアサートする(例えば、零値を処理パイプラインの出力に多重化する)。
或いは、エンジンは、
(c)現在の行の後半分中の後半分における少なくとも一つの値を行変換した結果を示す一つ以上の零を(一つ以上のデータ値に実際の行変換計算を実行することなく)出力し、現在の行の後半分中の後半分における少なくとも一つのその他のデータ値に行変換計算を電力が削減されるように実行することにより生成された少なくとも一つのデータ値を出力する。このような各零値及び出力値はその後にバッファメモリに記憶される(ステップ50)。
ステップ46及び48、ステップ46及び49、ステップ47及び48、又は、ステップ47及び49で生成又はアサートされた全データ値がバッファメモリに記憶された後(ステップ50)、エンジンは、行変換が現在のブロックの全行に実行されたか否かを判定する(ステップ52)。行変換が現在のブロックの全行に実行されているならば、エンジンは、行変換演算を終了する状態に入る(ステップ54)。その後、エンジンは、変換されるべきデータ値をもつ次のブロックの処理を開始するためにステップ20を再び実行可能とする。行変換が現在のブロックの全行に対して実行されていないならば、エンジンはバッファメモリから(変換されるべき現在のブロックの)次の行を読み出す(ステップ22の別の実行)。
図5は、本発明を具現化する図2の回路7(又は回路11)の典型的な実施に利用される変換回路のブロック図である。4×4形のデータのブロックを変換するため設計された回路7(又は11)の実施例は、通常、変換されるべき各行又は各列の4個のデータ値I0、I1、I2及びI3を変換するための図5の回路の一つのユニットを備える。8×8形のデータのブロックを変換するため設計された回路7(又は11)の実施例は、通常、図5の回路の2個のユニットを備えることになり、一方のユニットは変換されるべき各行又は列の前半分の4個のデータ値I0、I1、I2及びI3を変換し、同一のユニットは変換されるべき各行又は列の後半分の4個のデータ値(I4、I5、I6及びI7)を(図5に示す定数C0、C1、C2及びC3の代わりに第2のコサイン定数の集合C4、C5、C6及びC7を使用して)変換する。
図5の乗算ユニットM1、M2、M3及びM4のそれぞれは、(コサイン定数C0、C1、C2及びC3のうちの一つがアサートされる)第1の入力と、(データ値I0、I1、I2及びI3のうちの一つがアサートされる)第2の入力と、2個のオペランドの積を示すデータ値をアサートする出力と、を有する。図5の回路は、(前処理ロジック100と呼ぶ)前処理及び制御ロジック100と、加算回路A1、A2、A3、A4及びA5と、減算回路S1と、(フリップフロップとして実施された)遅延回路A及びBとを更に備えており、これらは図示したように接続されており、それにアサートされた4個の入力値の各組にパイプライン方式行変換又は列変換を実行して、各入力値に応じて出力値Y0(又はY1)を生成するように構成されている。動作中に、遅延回路Aは、通常、加算回路A5、減算回路S1、及び、加算回路A3のうちの(ロジック100によってアサートされた制御信号によって決定されるように)選択された一つずつへの加算回路A3の出力のアサーションを、パイプライン方式変換の1サイクルずつ遅延させる。動作中に、遅延回路Bは、典型的に、加算回路A5、減算回路S1、及び、加算回路A4のうちの(ロジック100によってアサートされた制御信号によって決定されるように)選択された一つずつへの加算回路A4の出力のアサーションをパイプライン方式変換の1サイクルずつ遅延させる。
図5の回路が4×4形のデータのブロックを変換するように設計された回路7(又は11)の実施例に含まれている場合には、前処理ロジック100は、図4の零(非零)値判定演算を実行するように構成される。図5の回路の2個のユニットが8×8形のデータのブロックを変換するように設計された回路7(又は11)の実施例に含まれている場合には、各ユニット100は、変換されるべきデータ値をもつ各行又は列の異なる部分集合(例えば、半分)に図4の零(非零)値判定演算を実行するように構成される。回路7(又は11)の何れの実施例であっても、前処理ロジック100は、変換されるべき入力データ値を関連のバッファメモリ(例えば、図2のバッファ9、又は図2の回路7の入力に接続されたバッファメモリ)から読み出し、図4によって要求されるその他の演算を実施するために必要とされる制御信号を生成する(そして、図5のその他のエレメントのうちの適切なエレメントへアサートする)ように構成される。例えば、ロジック100が(例えば、図4のステップ30中に)係数I0は零値であると判定したならば、ロジック100は、前の動作サイクル中に乗算器M1へアサートされていた係数C0を、乗算器M1が零値係数I0に定数を乗算する後続の各サイクル中に乗算器M1へアサートさせ続けるように制御信号をアサートすることができる。
典型的な実施例では、前処理ロジック100は、(例えば、バッファ9から)変換されるべき4個の新しい入力データ値をもつ各集合を受信し次第、出力値Y0及びY1を零にリセットする。このケースでは、前処理ロジック100が(例えば、図4のステップ25、28、41、35、37、47又は49において)入力値のうちの一つに応じて零値(例えば、零値のY0又はY1)が出力されるべきであると判定したときに、前処理ロジックは、これら回路エレメントM1、M2、M3、M4、A1、A2、A3、A4、A、B、A5及びS1の入力の全ての切り替えを、さもなければ回路要素がこの入力値を変換するために動作することになる(複数の)サイクルにおいて阻止し、代わって、Y0(又はY1)のリセットされた零値を関連のバッファ(例えば、バッファメモリ9、又は回路11の出力に接続されているバッファメモリ)へアサートさせる。
変換されるべきデータ値の並べ替えを必要とする実施形態では、前処理ユニット100が、好ましくは、このような並べ替えを実行するように構成される。例えば、図4を参照して説明した変換に類似しているが、半行又は半列(又は、半行又は半列の半分)の前半分(又は後半分)中のデータ値が少なくとも一つの非零値を含むか否かを判定する各ステップが、半行又は半列(又は、半行又は半列の半分)の偶数(又は奇数)データ値が少なくとも一つの非零値を含むか否かを判定するステップによって置き換えられている変換を実行するために、前処理ユニット100は、必要な判定を実行するために、アサートされるべきデータ値を並べ替え可能である。例えば、ユニット100は、並べ替えられた半行又は並べ替えられた半列(又は、並べ替えられた半行又は並べ替えられた半列の半分)の前半分(又は後半分)中のデータ値が少なくとも一つの非零値を含むか否かを判定し、それによって、並べ替えられていない場合の半行又は半列の(又は、並べ替えられていない場合の半行又は半列の半分)中の偶数(又は奇数)データ値が少なくとも一つの非零値を含むか否かを判定可能である。前処理ユニット100の一部の実施例は、半行(又は部分行の半分)又は半列(又は部分列の半分)ではない行又は列(又は、部分行又は部分列)の部分集合の並べ替えを実行することも考えられる。
図6は、本発明のパイプライン方式ビデオ復号システムの実施形態の要素のブロック図である。図6に示す設計に関する多数の変形が本発明のその他の実施形態での実施用に考えられる(例えば、零検出回路132、134及び135−138が省かれ、その機能は零検出回路130又はその他の零検出回路によって実行される)。図6のシステムは、前処理ユニット120、変換エンジン122、及び、後処理ユニット124を備えており、これらは、図示したように接続されている。
ユニット120はまた、入力データ値(例えば、ビデオピクセルのブロックに2次元DCT又は逆DCT、若しくはその他の2D変換を実行することにより生成された入力周波数領域係数)をもつブロックの系列を受信するよう接続されている。ユニット120は、図6のシステムを通る1回目のパスの後に、後処理ユニット124から出力された(図6において、「第1ステージからの出力」及び「第1ステージ出力」として特定されている)データ値を受信するように接続されてり、その結果、図6の回路を通る2回目のパス中に(オプションとして、ユニット124からの出力後、かつ、ユニット120へのアサーション前にバッファメモリに一時記憶されている)これらのデータ値に第2ステージの処理が施される(例えば、データ値の列が図6の回路を通る1回目のパス中に列変換を施されているときにデータ値の行に行変換を実行するため)。
ユニット120のマルチプレクサ129は、(図6における処理が施されていない)入力データ値、又は、(図6のシステムを通る先行のパスにおいて処理が施されている)後処理ユニット124から出力されたデータ値の何れかを選択し、選択された値を零検出ロジック130へアサートする。選択された値は(オプションとして、ロジック130が選択された値は完全に零値により構成されていると判定したときを除いて)零検出ロジック130を通過する。オプションとして、その後に、ユニット120内のその他の回路は、ロジック130を通された値に予備的な処理演算を実行して、前処理済みのデータ値を生成する(これらの演算は図6のシステムを使用して実施されるべき特有の変換を実施することが要求されているときに実行される)。ユニット120は、(予備的な処理がロジック130の出力に実行されていないならば、ロジック130の出力と同一である)前処理済みのデータ値を変換エンジン122へアサートする。
前処理ユニット120は、通常、アサートされたデータ値の各集合をエンジン122が実施すべき変換を実行するのに適した部分集合に分離するように構成されている。ユニット120が部分集合に分離する方式は、実施されるべき変換(例えば、8×8形DCT、8×8形IDCT、又は、8×8形アマダール)に依存し、外部ユニットからユニット120へアサートされた制御信号によって決定することができ、その結果、部分集合選択は、実施されるべき変換に基づいてカスタマイズすることが可能となる。
変換エンジン122は、ユニット120から受け取るデータ値の各ブロックに2D変換を実行して、変換済みのデータ値をもつブロック(例えば、部分的に復号されたビデオピクセルをもつブロック)を生成し、変換済みのデータ値をオプションとしての更なる処理のための後処理ユニット124へアサートする。より詳細には、変換エンジン122は、ユニット120から変換エンジンへアサートされた4個のデータ値の集合毎にパイプライン方式行変換又は列変換を実行して、4個のデータ値のそれぞれに応じて出力値を生成するように構成されている。このような4個のデータ値からなる各集合は、通常、データ値のブロックの行(又は列)であるか、又は、データ値のブロックの行(又は列)の部分集合である。
後処理ユニット124は、オプションとして(すなわち、図6のシステムによって実行されている特有の変換に適しているときに)、エンジン122から受信された変換済みの値に後処理演算を実行して、出力データ値を生成する。出力データ値は、ユニット124からシステムバスへアサートされ、及び/又は、ユニット120の少なくとも一つの入力へ(又は、ユニット120の少なくとも一つの入力へアサートされる起点となるバッファメモリへ)戻される。通常、ユニット124は、(必要に応じて)丸め、飽和、及び、最終的なパッキングを実行する。ユニット124によって実行される特定の後処理演算は、図6の回路がユニット122への入力に対して第1ステージ処理を実施するか、又は第2ステージの処理を実施するかに依存する。
図6の変換エンジン122は、定数C0、C1、C2及びC3の集合を使用して変換されるべき各行又は列の4個のデータ値(I0、I1、I2及びI3)を変換することを始めとして、4×4形のデータのブロックを変換するように設計されている。本発明の一部のその他の実施形態では、8×8形のデータのブロックを変換する回路は2個の変換エンジン122を含むことになり、一方のエンジンは変換されるべき各行又は列の第1の部分集合(例えば、前半分)の4個のデータ値I0、I1、I2及びI3を変換し、同一のユニットは(図6のブロック122に示す定数C0、C1、C2及びC3の代わりに第2の定数の集合C4、C5、C6及びC7を使用して)変換されるべき各行又は列の第2の部分集合(例えば、後半分)の4個のデータ値(I4、I5、I6及びI7)を変換する。利用されるべき定数(例えば、C0、C1、C2及びC3)は、外部ユニットからエンジン122へアサートされた制御信号によって決定され、その結果、定数の選択は実行されるべき変換に基づいてカスタマイズ可能である。
通常、前処理ユニット120の零検出ロジック130は、変換されるべきデータをもつブロック全体(変換されるべきデータの4×4形のブロックの4行又は4列の全て)が完全に零値により構成されているか否かを判定するように構成されている。例えば、零検出ロジックは、ブロックの第1行(列)を下流の回路へ送る前に、ブロックの全行(又は全列)にこのような判定を実行するのに十分なレイテンシーを提供するシフトレジスタを有する。ブロックが完全に零値により構成されていることを判定すると、ロジック130は、図6のシステムのその他の要素へ適切な制御ビットをアサートし、(例えば、上述したように)エンジン122によってブロックに対して後に実行されることになる変換演算を回避させ、また、通常、エンジン122及びユニット124の一方又は双方によるブロックの値への実際の変換演算を実行することなく、ブロックに応じて所定の値(例えば、零)をユニット124のマルチプレクサ139から出力させる。
前の段落に記載したように、前処理ユニット120の零検出ロジック130がデータのブロック全体が完全に零値により構成されているか否かを判定するように構成されているか否かとは無関係に、ロジック130は、マルチプレクサ129からロジック130へアサートされた個別の行(又は列)のデータ値に零検出を実行して、行(又は列)の全データ値が零値であるか否かを判定するように構成されている(すなわち、ロジック130は図4のステップ24を実行する)。このような各行(又は列)が4個のデータ値により構成されているならば、ロジック130は、行(列)が4個の零ビットにより構成されているか否かを判定する。ロジック130が、行(又は列)は完全に零ビットにより構成されていると判定するならば、ロジック130は、適切な制御ビットをアサートし、当該制御ビットが、行(列)に対してエンジン122によって後に実行されることになる変換演算を回避させ、通常、エンジン122及びユニット124の一方又は双方による行(列)の値への実際の変換演算を実行することなく、行(列)に応じて所定の値(例えば、零)をユニット124のマルチプレクサ139から出力させる。
一部の実施例では、ロジック130は、マルチプレクサ129からロジック130へアサートされたデータ値の個別の行(又は列)の1番目のデータ値が非零値であり、行(又は列)のその他の全値が零値であるか否かを判定する。最初の非零値を除き零値により構成された行(列)の特定に応答して、このようなロジック130の実施例は、適切な制御ビットをアサートし、当該ビットが、行(列)に対してエンジン122によって後で実行されることになる変換演算を回避させ、通常、エンジン122及びユニット124の一方又は双方による行(列)の値への実際の変換演算を実行することなく、行(列)に応じて所定の値(例えば、零)をユニット124のマルチプレクサ139から出力させる。
エンジン122の零検出ロジック132は、ユニット120からエンジン122へアサートされた各行(又は列)の第1の部分集合(例えば、最初の2個のデータ値である前半分)に零検出を実行し、このような第1の部分集合の全データ値が零値であるか否かを判定するように構成されている(例えば、零検出ロジックは図4のステップ26を実行する)。ロジック132が、第1の部分集合(例えば、半行又は半列)は完全に零ビットにより構成されていると判定するならば、ロジック132は、適切な制御ビットをアサートし、当該制御ビットが、第1の部分集合に対してエンジン122によって後に実行されることになる変換演算を回避させ、通常、エンジン122による第1の部分集合中の値への実際の変換演算を実行することなく、第1の部分集合に応じて所定の値(例えば、零)をエンジン122のマルチプレクサ140から出力させる。ロジック132が、現在の行(列)の第1の部分集合(例えば、前半)は少なくとも一つの非零値を含むと判定するならば、零検出ロジックユニット135及び136は、第1の部分集合中の1番目の値及び2番目の値に零検出を実行する。
ロジック135が現在の行(列)の第1の部分集合中の1番目のデータ値は零値であると判定するならば、ロジック135は、(第1の入力に変換定数C0がアサートされ、第2の入力に現在の行又は列の零データ値がアサートされている)乗算回路141に制御ビットをアサートし、回路141に、その第1の入力にアサートされた前の値を更新することなく、その第2の入力にアサートされた値への乗算演算を実行させ、さもなければ第1の入力を更新された定数C0の値に切り替えるために消費されることになるパワー消費を回避する。
同様に、ロジック136が現在の行(列)の第1の部分集合中の2番目のデータ値は零値であると判定するならば、ロジック136は、(第1の入力に変換定数C1がアサートされ、第2の入力に現在の行又は列の零データ値がアサートされている)乗算回路142に制御ビットをアサートし、回路142に、その第1の入力にアサートされた前の値を更新することなく、その第2の入力にアサートされた値への乗算演算を実行させ、さもなければ第1の入力を更新された定数C1の値に切り替えるために消費されることになるパワー消費を回避する。
エンジン122の零検出ロジック134は、ユニット120からエンジン122へアサートされた各行(又は列)の第2の部分集合(例えば、もう一つの2個のデータ値である後半)に対して零検出を実行し、このような第2の部分集合の全データ値が零値であるか否かを判定するように構成されている(例えば、零検出ロジックは図4のステップ40を実行する)。ロジック134が第2の部分集合は完全に零ビットにより構成されていると判定するならば、ロジック134は、適切な制御ビットをアサートし、当該制御ビットが、さもなければエンジン122によって第2の部分集合(例えば、半行又は半列)に対して後に実行されることになる変換演算を回避させ、通常、エンジン122による第2の部分集合中の値への実際の変換演算を実行することなく、第2の部分集合に応じて所定の値(例えば、零)をエンジン122のマルチプレクサ141から出力させる。ロジック134が現在の行(列)の第2の部分集合は少なくとも一つの非零値を含むと判定するならば、零検出ロジックユニット137及び137は、第2の部分集合中の1番目の値及び2番目の値に零検出を実行する。
ロジック137が現在の行(列)の第2の部分集合中の1番目のデータ値は零値であると判定するならば、ロジック137は、(第1の入力に変換定数C2がアサートされ、第2の入力に現在の行又は列の零データ値がアサートされている)乗算回路143に制御ビットをアサートし、回路143に、その第1の入力にアサートされた前の値を更新することなく、その第2の入力にアサートされた値への乗算演算を実行させ、さもなければ第1の入力を更新された定数C2の値に切り替えるために消費されることになるパワー消費を回避する。
同様に、ロジック138が現在の行(列)の第2の部分集合中の2番目のデータ値は零値であると判定するならば、ロジック138は、(第1の入力に変換定数C3がアサートされ、第2の入力に現在の行又は列の零データ値がアサートされている)乗算回路144に制御ビットをアサートし、回路144に、その第1の入力にアサートされた前の値を更新することなく、その第2の入力にアサートされた値への乗算演算を実行させ、さもなければ第1の入力を更新された定数C3の値に切り替えるために消費されることになるパワー消費を回避する。
図6の各マルチプレクサ129、140、141、150、151、152及び153は、図6のシステムのパイプライン方式演算の現在のサイクル中にその入力にアサートされている値のうち一つをその出力へ通過させるよう動作中に制御される。図6の各回路156及び157は、図6のシステムの現在の動作サイクル中にその入力にアサートされている値の和をその出力にアサートするよう動作中に制御される加算回路である。図6の回路154及び155は、図6のシステムによって実行されている特定の変換に適したレイテンシーを有する(フリップフロップとして実施された)遅延回路である。
本発明の幾つかの代替実施形態は、図6のロジック回路132、134、135、136、137及び138が省かれ、省かれた回路の機能が図6のロジック回路130を修正した回路によって実行される点を除いて、図6と同じ回路により構成されるか、又は、図6と同じ回路を備える。具体的には、このようなロジック回路130を修正した回路は、通常、変換されるべきデータをもつブロック全体(すなわち、変換されるべきデータの4×4形のブロックの4行又は4列の全て)が完全に零値により構成されているか否か、変換されるべきブロックのデータの各行(又は列)が完全に零値により構成されているか否か、変換されるべきブロックのデータの各行(又は列)の半分ずつが完全に零値により構成されているか否か、及び、変換されるべきブロックのデータの各半行(又は半列)の各データ値が零値であるか否かを判定するように構成され、このような判定に応じて、図6のロジック回路130、132、134、135、136、137及び138によってアサートされる上記のタイプの制御信号を(システムの他の要素へ)アサートする。
図6のシステムは、携帯型メディアプレーヤー又は別の携帯型データ処理システム(又は、携帯可能であることが目的とされていないデータ処理システム)、例えば、ビデオ復号機能を有するシステムのサブシステムであってもよい。このようなメディアプレーヤー又はその他の処理システムは、図6に示していない付加的な要素を有することがあり、通常、図6に示していない付加的な要素を含むであろう。
多種多様なフォーマットをもつデータのブロックに対して多種多様な2D変換を実行するように本発明の種々の実施形態を実施するために、図4を参照して示し説明した特定のステップ、及び、図5及び6を参照して示し説明した特定の構造に関する変形が実施されるであろうことを理解されたい。
本発明の一部の実施形態を本明細書中に示して説明したが、本発明は、請求項によって定められものであり、説明して示した特定の実施形態に限定されないことも理解されたい。
1…ビットストリームエンジン、3…変換エンジン、5…ピクセル再構成及びデブロッキング、7…行/列変換、9…中間記憶バッファ、11…列/行変換。
Claims (11)
- 入力データ値をもつ行及び列を含む複数の入力データブロックの系列中における各入力データブロックに、行変換及び列変換を含む2D変換を実行するように構成されたシステムであって、
前記入力データブロックの各々に応答して、前記入力データブロックにおける各々の行に前記行変換を実行することにより、部分的に変換されたデータをもつブロックを生成するように構成された行変換回路と、
前記部分的に変換されたデータをもつブロックにおける各々の列に前記列変換を実行するように構成された列変換回路と、
を備え、
前記行変換回路が、各々の前記行に前記行変換を実行するときに、前記行の前記データ値からなる異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定するように構成され、
前記行変換回路が、零値であると判定された前記データ値のうちの少なくとも一つに対して、選択される操作を実行するように構成されている、
システム。 - 前記選択される操作が、零値であると判定された前記データ値のうちの少なくとも一つに対して実行される少なくとも一つの変換演算を回避することを含む、請求項1に記載のシステム。
- 前記選択される操作が、零値であると判定された前記データ値のうちの少なくとも一つに対して実行される少なくとも一つの変換演算を消費電力が削減されるように実行することを含む、請求項1に記載のシステム。
- 前記行変換回路が、入力セットを有する少なくとも一つの回路を備え、
前記行変換回路が、零値であると判定された前記データ値のうちの前記一つに対する前記変換演算中に、前記入力セットの少なくとも一つの入力を更新することなく前記少なくとも一つの回路を作動させることによって、前記少なくとも一つの変換演算を消費電力が削減されるように実行するように構成されている、請求項3に記載のシステム。 - 前記行変換回路及び前記列変換回路に接続されているバッファを更に備え、
前記行変換回路が、前記部分的に変換されたデータをもつブロックを前記バッファに記憶するように構成され、
前記列変換回路が、前記部分的に変換されたデータをもつブロックを前記バッファから取り出すように構成されている、
請求項1に記載のシステム。 - 前記行変換回路が、各々の前記行に対する前記行変換を実行するときに、並べ替え演算を実行するように構成されており、
前記並べ替え演算は、前記行のデータ値を並べ替えることによって、並べ替えられたデータ値を生成し、
前記行変換回路が、前記並べ替えられたデータをもつ第1の部分集合が少なくとも一つの零値を含むか否か、及び、前記並べ替えられたデータをもつ第2の部分集合であって前記第1の部分集合とは別個の該第2の部分集合が少なくとも一つの零値を含むか否かを判定するように構成されている、
請求項1に記載のシステム。 - 入力データ値をもつ行及び列を含む複数の入力データブロックの系列に対して、行変換及び列変換を含む2D変換を、前記行変換を実行するための行変換回路と前記列変換を実行するための列変換回路とを備えるシステムが実行する方法であって、
前記行変換回路が、前記複数の入力データブロックのうちの一つブロックにおける各々の行に対する前記行変換を、各々の前記行の入力データ値に変換演算を実行することを含めて実行し、部分的に変換されたデータをもつブロックを生成するステップと、
前記列変換回路が、前記部分的に変換されたデータブロックにおける各々の列のデータ値に付加的な変換演算を実行することを含めて、各々の前記列に前記列変換を実行するステップと、
を含み、
前記行変換回路が、前記各々の行の前記データ値からなる異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定するステップと、
前記行変換回路が、少なくとも一つの零値と少なくとも一つの非零値を含むものと判定されている前記行の各々に対する前記行変換を実行するときに、零値であると判定されている前記入力データ値のうちの少なくとも一つに対して、選択される操作を実行するステップと、
を含む方法。 - 前記行変換を実行するステップが、第1の入力及び第2の入力を有する乗算回路を作動させて、前記第1の入力にアサートされた第1の値が前記第2の入力にアサートされた第2の値と乗算される乗算演算を実行するステップを含み、
前記選択される操作を実行するステップが、零値であると判定された前記入力データ値のうちの前記少なくとも一つに対する前記乗算演算を、前記第1の入力及び前記第2の入力のうちの少なくとも一方の切り替えを阻止することによって、消費電力が削減されるように実行するステップを含む、
請求項7に記載の方法。 - 前記選択される操作は、零値であると判定された前記入力データ値のうちの前記少なくとも一つに対して実行される少なくとも一つの変換演算を回避する工程及び前記変換演算を消費電力が削減されるように実行する工程からなる群から選択される、請求項7に記載の方法。
- 前記列変換を実行するステップが、
各々の前記列の前記データ値からなる異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定するステップと、
少なくとも一つの零値及び少なくとも一つの非零値を含むと判定された各々の前記列に対して前記列変換を実行するときに、零値であると判定された前記データ値のうち少なくとも一つに対して実行される変換演算のうちの少なくとも一つを回避するステップと、
を含む請求項7に記載の方法。 - 前記列変換を実行するステップが、
各々の前記列の前記データ値からなる異なる部分集合の各々が少なくとも一つの零値を含むか否かを判定するステップと、
少なくとも一つの零値及び少なくとも一つの非零値を含むと判定された各々の前記列に対する前記列変換を実行するときに、零値であることが判定された前記データ値のうちの少なくとも一つに対する変換演算のうちの少なくとも一つを、消費電力が削減されるように実行するステップと、
を含む請求項7に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/510,218 US8660380B2 (en) | 2006-08-25 | 2006-08-25 | Method and system for performing two-dimensional transform on data value array with reduced power consumption |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2008117368A JP2008117368A (ja) | 2008-05-22 |
JP2008117368A5 true JP2008117368A5 (ja) | 2009-03-05 |
JP4491798B2 JP4491798B2 (ja) | 2010-06-30 |
Family
ID=39113514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007218719A Active JP4491798B2 (ja) | 2006-08-25 | 2007-08-24 | 低消費パワーでデータ値配列に2次元変換を実行する方法及びシステム |
Country Status (5)
Country | Link |
---|---|
US (2) | US8660380B2 (ja) |
JP (1) | JP4491798B2 (ja) |
KR (1) | KR100926207B1 (ja) |
CN (1) | CN101131686B (ja) |
TW (1) | TWI392371B (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330060B1 (en) | 2003-04-15 | 2016-05-03 | Nvidia Corporation | Method and device for encoding and decoding video image data |
US20110116539A1 (en) * | 2009-11-13 | 2011-05-19 | Freescale Semiconductor, Inc. | Method and apparatus for video decoding with reduced complexity inverse transform |
WO2012005395A1 (ko) * | 2010-07-09 | 2012-01-12 | 한양대학교 산학협력단 | 이산여현변환/역이산여현변환 방법 및 장치 |
US8966291B2 (en) * | 2010-12-23 | 2015-02-24 | Qualcomm Incorporated | Method and apparatus for reducing dynamic power within system-on-a-chip routing resources |
CN102036075B (zh) * | 2010-12-29 | 2012-11-28 | 东南大学 | 一种图像及数字视频编码及解码方法 |
KR101477409B1 (ko) * | 2012-11-21 | 2014-12-29 | 인제대학교 산학협력단 | 유류분해능을 갖는 신균주 바실러스 퓨밀러스 ij-1 균주 및 이의 용도 |
JP6089878B2 (ja) * | 2013-03-28 | 2017-03-08 | 富士通株式会社 | 直交変換装置、直交変換方法及び直交変換用コンピュータプログラムならびにオーディオ復号装置 |
CN106688238B (zh) * | 2013-10-17 | 2019-12-17 | 华为技术有限公司 | 改进后的深度图帧内编码的参考像素点选择和滤波 |
CN104463220A (zh) * | 2014-12-19 | 2015-03-25 | 深圳市捷顺科技实业股份有限公司 | 一种车牌检测方法和系统 |
US20160188643A1 (en) * | 2014-12-31 | 2016-06-30 | Futurewei Technologies, Inc. | Method and apparatus for scalable sorting of a data set |
US9438612B1 (en) * | 2015-03-23 | 2016-09-06 | Fortinet, Inc. | Calculating consecutive matches using parallel computing |
CN105306956B (zh) * | 2015-11-13 | 2018-03-27 | 浙江工商大学 | 一种提高hevc编码器离散余弦变换处理速度的方法 |
WO2018143687A1 (ko) * | 2017-02-01 | 2018-08-09 | 엘지전자(주) | 행-열 변환을 이용하여 변환을 수행하는 방법 및 장치 |
US11614920B2 (en) * | 2020-05-07 | 2023-03-28 | Meta Platforms, Inc. | Bypassing zero-value multiplications in a hardware multiplier |
CN111953999B (zh) * | 2020-07-31 | 2022-03-04 | 北京奇艺世纪科技有限公司 | 一种反变换方法及装置 |
US11856227B2 (en) | 2022-05-26 | 2023-12-26 | Mediatek Inc. | Transform architecture in video encoding systems |
Family Cites Families (185)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3679821A (en) * | 1970-04-30 | 1972-07-25 | Bell Telephone Labor Inc | Transform coding of image difference signals |
US4177514A (en) * | 1976-11-12 | 1979-12-04 | General Electric Company | Graph architecture information processing system |
US4583164A (en) * | 1981-08-19 | 1986-04-15 | Tolle Donald M | Syntactically self-structuring cellular computer |
JPS5936857A (ja) * | 1982-08-25 | 1984-02-29 | Nec Corp | プロセツサユニツト |
US4644461A (en) * | 1983-04-29 | 1987-02-17 | The Regents Of The University Of California | Dynamic activity-creating data-driven computer architecture |
US4755810A (en) * | 1985-04-05 | 1988-07-05 | Tektronix, Inc. | Frame buffer memory |
US4814978A (en) * | 1986-07-15 | 1989-03-21 | Dataflow Computer Corporation | Dataflow processing element, multiprocessor, and processes |
US5225875A (en) * | 1988-07-21 | 1993-07-06 | Proxima Corporation | High speed color display system and method of using same |
JPH03500461A (ja) * | 1988-07-22 | 1991-01-31 | アメリカ合衆国 | データ駆動式計算用のデータ流れ装置 |
US4992857A (en) * | 1988-09-30 | 1991-02-12 | Ampex Corporation | System for distributing and recovering digitized composite SECAM samples in a two channel digital apparatus |
US5130797A (en) * | 1989-02-27 | 1992-07-14 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processing system for parallel processing of subsampled data |
US5369744A (en) * | 1989-10-16 | 1994-11-29 | Hitachi, Ltd. | Address-translatable graphic processor, data processor and drawing method with employment of the same |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5522083A (en) * | 1989-11-17 | 1996-05-28 | Texas Instruments Incorporated | Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors |
US5267344A (en) * | 1989-12-20 | 1993-11-30 | Dax Industries, Inc. | Direct current power control circuit for use in conjunction with regulated input signal |
US5045940A (en) * | 1989-12-22 | 1991-09-03 | Avid Technology, Inc. | Video/audio transmission systsem and method |
US5233689A (en) * | 1990-03-16 | 1993-08-03 | Hewlett-Packard Company | Methods and apparatus for maximizing column address coherency for serial and random port accesses to a dual port ram array |
US5146324A (en) * | 1990-07-31 | 1992-09-08 | Ampex Corporation | Data compression using a feedforward quantization estimator |
US5212742A (en) * | 1991-05-24 | 1993-05-18 | Apple Computer, Inc. | Method and apparatus for encoding/decoding image data |
AU657510B2 (en) * | 1991-05-24 | 1995-03-16 | Apple Inc. | Improved image encoding/decoding method and apparatus |
US5689719A (en) * | 1991-06-28 | 1997-11-18 | Sanyo Electric O., Ltd. | Parallel computer system including processing elements |
US5706290A (en) * | 1994-12-15 | 1998-01-06 | Shaw; Venson | Method and apparatus including system architecture for multimedia communication |
BE1007330A3 (nl) * | 1993-07-16 | 1995-05-16 | Philips Electronics Nv | Inrichting voor het overdragen van een digitaal beeldsignaal. |
US5598514A (en) * | 1993-08-09 | 1997-01-28 | C-Cube Microsystems | Structure and method for a multistandard video encoder/decoder |
US6073185A (en) * | 1993-08-27 | 2000-06-06 | Teranex, Inc. | Parallel data processor |
US5623311A (en) * | 1994-10-28 | 1997-04-22 | Matsushita Electric Corporation Of America | MPEG video decoder having a high bandwidth memory |
US5596369A (en) * | 1995-01-24 | 1997-01-21 | Lsi Logic Corporation | Statistically derived method and system for decoding MPEG motion compensation and transform coded video data |
US5790881A (en) * | 1995-02-07 | 1998-08-04 | Sigma Designs, Inc. | Computer system including coprocessor devices simulating memory interfaces |
EP0735538B1 (en) * | 1995-03-31 | 2005-11-02 | Sony Service Centre (Europe) N.V. | A storage medium unit and video service system having a staggered recording |
US5608652A (en) * | 1995-05-12 | 1997-03-04 | Intel Corporation | Reducing blocking effects in block transfer encoders |
US5768429A (en) * | 1995-11-27 | 1998-06-16 | Sun Microsystems, Inc. | Apparatus and method for accelerating digital video decompression by performing operations in parallel |
US5809538A (en) * | 1996-02-07 | 1998-09-15 | General Instrument Corporation | DRAM arbiter for video decoder |
EP0793389B1 (en) * | 1996-02-27 | 2001-08-16 | STMicroelectronics S.r.l. | Memory reduction in the MPEG-2 main profile main level decoder |
US5754456A (en) * | 1996-03-05 | 1998-05-19 | Intel Corporation | Computer system performing an inverse cosine transfer function for use with multimedia information |
US5845083A (en) * | 1996-03-07 | 1998-12-01 | Mitsubishi Semiconductor America, Inc. | MPEG encoding and decoding system for multimedia applications |
US5870310A (en) * | 1996-05-03 | 1999-02-09 | Lsi Logic Corporation | Method and apparatus for designing re-usable core interface shells |
EP1835762A3 (en) * | 1996-05-28 | 2007-10-03 | Matsushita Electric Industrial Co., Ltd. | decoding apparatus with intra prediction |
US6101276A (en) * | 1996-06-21 | 2000-08-08 | Compaq Computer Corporation | Method and apparatus for performing two pass quality video compression through pipelining and buffer management |
JPH10108143A (ja) * | 1996-09-27 | 1998-04-24 | Sony Corp | 画像表示制御装置および方法 |
US6311204B1 (en) * | 1996-10-11 | 2001-10-30 | C-Cube Semiconductor Ii Inc. | Processing system with register-based process sharing |
US6088355A (en) * | 1996-10-11 | 2000-07-11 | C-Cube Microsystems, Inc. | Processing system with pointer-based ATM segmentation and reassembly |
US5889949A (en) * | 1996-10-11 | 1999-03-30 | C-Cube Microsystems | Processing system with memory arbitrating between memory access requests in a set top box |
US5821886A (en) * | 1996-10-18 | 1998-10-13 | Samsung Electronics Company, Ltd. | Variable length code detection in a signal processing system |
US5909224A (en) * | 1996-10-18 | 1999-06-01 | Samsung Electronics Company, Ltd. | Apparatus and method for managing a frame buffer for MPEG video decoding in a PC environment |
KR19980044990A (ko) * | 1996-12-09 | 1998-09-15 | 양승택 | 휴대형 멀티미디어 데이터 입출력 처리기의 구조 및 그 구동 방법 |
US6338106B1 (en) * | 1996-12-20 | 2002-01-08 | Pact Gmbh | I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures |
US5883823A (en) * | 1997-01-15 | 1999-03-16 | Sun Microsystems, Inc. | System and method of a fast inverse discrete cosine transform and video compression/decompression systems employing the same |
US6188799B1 (en) * | 1997-02-07 | 2001-02-13 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for removing noise in still and moving pictures |
KR200158088Y1 (ko) * | 1997-03-07 | 1999-10-15 | 윤종용 | 아날로그 및 디지탈 방송시청이 가능한 케이블 티브이(catv) |
US6539120B1 (en) * | 1997-03-12 | 2003-03-25 | Matsushita Electric Industrial Co., Ltd. | MPEG decoder providing multiple standard output signals |
CN1156171C (zh) * | 1997-04-07 | 2004-06-30 | 松下电器产业株式会社 | 提高处理效率的图象声音处理装置 |
US5999220A (en) * | 1997-04-07 | 1999-12-07 | Washino; Kinya | Multi-format audio/video production system with frame-rate conversion |
US5954786A (en) * | 1997-06-23 | 1999-09-21 | Sun Microsystems, Inc. | Method for directing a parallel processing computing device to form an absolute valve of a signed valve |
NL1006469C2 (nl) * | 1997-07-04 | 1999-01-05 | Oce Tech Bv | Printsysteem voor het printen van beelden op vellen overeenkomstig elektrische beeld- en besturingssignalen alsmede besturingsmiddelen geschikt voor toepassing in een dergelijk printsysteem. |
US5969728A (en) * | 1997-07-14 | 1999-10-19 | Cirrus Logic, Inc. | System and method of synchronizing multiple buffers for display |
US6360234B2 (en) * | 1997-08-14 | 2002-03-19 | Virage, Inc. | Video cataloger system with synchronized encoders |
KR100269125B1 (ko) * | 1997-10-25 | 2000-10-16 | 윤덕용 | 양자화효과감소를위한영상데이터후처리방법및장치 |
US6269174B1 (en) * | 1997-10-28 | 2001-07-31 | Ligos Corporation | Apparatus and method for fast motion estimation |
JPH11243551A (ja) | 1997-12-25 | 1999-09-07 | Mitsubishi Electric Corp | 動き補償装置と動画像符号化装置及び方法 |
US6157751A (en) * | 1997-12-30 | 2000-12-05 | Cognex Corporation | Method and apparatus for interleaving a parallel image processing memory |
US6717578B1 (en) * | 1998-02-17 | 2004-04-06 | Sun Microsystems, Inc. | Graphics system with a variable-resolution sample buffer |
DE19807872A1 (de) * | 1998-02-25 | 1999-08-26 | Pact Inf Tech Gmbh | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. |
US6690835B1 (en) * | 1998-03-03 | 2004-02-10 | Interuniversitair Micro-Elektronica Centrum (Imec Vzw) | System and method of encoding video frames |
US6747645B1 (en) * | 1998-03-13 | 2004-06-08 | Hewlett-Packard Development Company, L.P. | Graphics memory system that utilizes detached-Z buffering in conjunction with a batching architecture to reduce paging overhead |
US6195389B1 (en) * | 1998-04-16 | 2001-02-27 | Scientific-Atlanta, Inc. | Motion estimation system and methods |
US6175594B1 (en) * | 1998-05-22 | 2001-01-16 | Ati Technologies, Inc. | Method and apparatus for decoding compressed video |
US6642956B1 (en) * | 1998-05-29 | 2003-11-04 | Agilent Technologies, Inc. | Digital image processor for a digital camera |
JP2002518916A (ja) * | 1998-06-19 | 2002-06-25 | イクエーター テクノロジーズ インコーポレイテッド | 第1の解像度を有する符号化された形式の画像を第2の解像度を有するデコードされた形式の画像に直接にデコードする回路及び方法 |
US20020015513A1 (en) * | 1998-07-15 | 2002-02-07 | Sony Corporation | Motion vector detecting method, record medium on which motion vector calculating program has been recorded, motion detecting apparatus, motion detecting method, picture encoding apparatus, picture encoding method, motion vector calculating method, record medium on which motion vector calculating program has been recorded |
AU717480B2 (en) * | 1998-08-01 | 2000-03-30 | Korea Advanced Institute Of Science And Technology | Loop-filtering method for image data and apparatus therefor |
US6098174A (en) * | 1998-08-03 | 2000-08-01 | Cirrus Logic, Inc. | Power control circuitry for use in a computer system and systems using the same |
US6560629B1 (en) * | 1998-10-30 | 2003-05-06 | Sun Microsystems, Inc. | Multi-thread processing |
US6418166B1 (en) * | 1998-11-30 | 2002-07-09 | Microsoft Corporation | Motion estimation and block matching pattern |
US6222883B1 (en) * | 1999-01-28 | 2001-04-24 | International Business Machines Corporation | Video encoding motion estimation employing partitioned and reassembled search window |
GB2348559B (en) | 1999-03-31 | 2001-06-06 | Samsung Electronics Co Ltd | High speed motion estimating method for real time moving image coding and apparatus therefor |
US7072398B2 (en) * | 2000-12-06 | 2006-07-04 | Kai-Kuang Ma | System and method for motion vector generation and analysis of digital video clips |
JP2001184323A (ja) | 1999-12-27 | 2001-07-06 | Mitsubishi Electric Corp | 符号化装置 |
US6459738B1 (en) * | 2000-01-28 | 2002-10-01 | Njr Corporation | Method and apparatus for bitstream decoding |
JP2001275116A (ja) * | 2000-03-24 | 2001-10-05 | Sharp Corp | 画像処理装置 |
JP3983447B2 (ja) * | 2000-03-24 | 2007-09-26 | シャープ株式会社 | データ駆動型情報処理装置 |
TW459203B (en) * | 2000-04-07 | 2001-10-11 | Welkin Technologies Inc | System and method for clearing buffer in 3D rendering |
TW477930B (en) * | 2000-04-07 | 2002-03-01 | Welkin Technologies Inc | Buffer management method and system |
US6876703B2 (en) * | 2000-05-11 | 2005-04-05 | Ub Video Inc. | Method and apparatus for video coding |
JP3907385B2 (ja) | 2000-05-22 | 2007-04-18 | シャープ株式会社 | データ駆動型情報処理装置およびその実行制御方法 |
US6751721B1 (en) * | 2000-08-31 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Broadcast invalidate scheme |
JP3495011B2 (ja) | 2000-11-21 | 2004-02-09 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理方法及びプログラム実行装置、コンピュータに実行させるための情報処理プログラム及びコンピュータに実行させるための情報処理プログラムを記録した記録媒体 |
US6633612B2 (en) * | 2000-12-13 | 2003-10-14 | Genesis Microchip Inc. | Method and apparatus for detecting motion between odd and even video fields |
US6799192B1 (en) | 2001-01-09 | 2004-09-28 | Apple Computer, Inc. | Method and apparatus for inverse discrete cosine transform |
US20020118743A1 (en) * | 2001-02-28 | 2002-08-29 | Hong Jiang | Method, apparatus and system for multiple-layer scalable video coding |
US6782052B2 (en) * | 2001-03-16 | 2004-08-24 | Sharp Laboratories Of America, Inc. | Reference frame prediction and block mode prediction for fast motion searching in advanced video coding |
US6993191B2 (en) * | 2001-05-04 | 2006-01-31 | Pts Corporation | Methods and apparatus for removing compression artifacts in video sequences |
WO2002098137A1 (en) | 2001-06-01 | 2002-12-05 | Nanyang Technological University | A block motion estimation method |
JP4145586B2 (ja) | 2001-07-24 | 2008-09-03 | セイコーエプソン株式会社 | 画像処理装置及び画像処理プログラム、並びに画像処理方法 |
EP1294194B8 (en) | 2001-09-10 | 2010-08-04 | Texas Instruments Incorporated | Apparatus and method for motion vector estimation |
US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
KR100481067B1 (ko) * | 2001-09-28 | 2005-04-07 | 브이케이 주식회사 | 분산 산술 처리장치 및 그를 이용한 이차원 이산여현변환 처리장치 |
US7403564B2 (en) | 2001-11-21 | 2008-07-22 | Vixs Systems, Inc. | System and method for multiple channel video transcoding |
MXPA04006814A (es) | 2002-01-14 | 2004-12-06 | Nokia Corp | Filtros dinamicos de codificacion. |
EP1833261A1 (en) * | 2002-01-18 | 2007-09-12 | Kabushiki Kaisha Toshiba | Video encoding method and apparatus and video decoding method and apparatus |
JP3902741B2 (ja) * | 2002-01-25 | 2007-04-11 | 株式会社半導体理工学研究センター | 半導体集積回路装置 |
US7548586B1 (en) | 2002-02-04 | 2009-06-16 | Mimar Tibet | Audio and video processing apparatus |
US20030161400A1 (en) * | 2002-02-27 | 2003-08-28 | Dinerstein Jonathan J. | Method and system for improved diamond motion search |
CN1203614C (zh) * | 2002-04-01 | 2005-05-25 | 北京六合万通微电子技术有限公司 | 用素数因子算法的快速离散傅立叶变换和反变换集成电路 |
FI114679B (fi) | 2002-04-29 | 2004-11-30 | Nokia Corp | Satunnaisaloituspisteet videokoodauksessa |
US7289672B2 (en) | 2002-05-28 | 2007-10-30 | Sharp Laboratories Of America, Inc. | Methods and systems for image intra-prediction mode estimation |
US6950473B2 (en) | 2002-06-21 | 2005-09-27 | Seiko Epson Corporation | Hybrid technique for reducing blocking and ringing artifacts in low-bit-rate coding |
US6925123B2 (en) | 2002-08-06 | 2005-08-02 | Motorola, Inc. | Method and apparatus for performing high quality fast predictive motion search |
CN1225126C (zh) | 2002-10-09 | 2005-10-26 | 中国科学院计算技术研究所 | 用于视频编码的新型空间预测方法及其装置 |
US6807317B2 (en) | 2002-10-25 | 2004-10-19 | Motorola, Inc. | Method and decoder system for reducing quantization effects of a decoded image |
US7020201B2 (en) * | 2002-11-20 | 2006-03-28 | National Chiao Tung University | Method and apparatus for motion estimation with all binary representation |
US6996645B1 (en) | 2002-12-27 | 2006-02-07 | Unisys Corporation | Method and apparatus for spawning multiple requests from a single entry of a queue |
US7218417B2 (en) * | 2003-01-30 | 2007-05-15 | Xerox Corporation | Resolution conversion using a morphological partial pixel mapping (MPPM) approach |
US7720151B2 (en) * | 2003-02-11 | 2010-05-18 | Texas Instruments Incorporated | Motion estimation using early decision for goodness of estimation with quick convergence feedback |
JP4509104B2 (ja) | 2003-03-03 | 2010-07-21 | エージェンシー・フォア・サイエンス・テクノロジー・アンド・リサーチ | 高度動画像符号化におけるイントラ予測のための高速モード決定アルゴリズム |
US20040174998A1 (en) * | 2003-03-05 | 2004-09-09 | Xsides Corporation | System and method for data encryption |
US8516026B2 (en) * | 2003-03-10 | 2013-08-20 | Broadcom Corporation | SIMD supporting filtering in a video decoding system |
US20040181811A1 (en) | 2003-03-13 | 2004-09-16 | Rakib Selim Shlomo | Thin DOCSIS in-band management for interactive HFC service delivery |
JP2004287663A (ja) | 2003-03-20 | 2004-10-14 | Fuji Xerox Co Ltd | 画像処理装置およびその方法 |
US7646817B2 (en) | 2003-03-28 | 2010-01-12 | Microsoft Corporation | Accelerating video decoding using a graphics processing unit |
JP2004334843A (ja) | 2003-04-15 | 2004-11-25 | Seiko Epson Corp | 複数の画像から画像を合成する方法 |
US7551671B2 (en) | 2003-04-16 | 2009-06-23 | General Dynamics Decision Systems, Inc. | System and method for transmission of video signals using multiple channels |
KR100750110B1 (ko) | 2003-04-22 | 2007-08-17 | 삼성전자주식회사 | 4×4인트라 휘도 예측 모드 결정방법 및 장치 |
KR100510137B1 (ko) | 2003-04-30 | 2005-08-26 | 삼성전자주식회사 | 고속 움직임 추정을 위한 참조 픽쳐 및 블록 모드 결정방법, 그 장치, 블록 모드 결정 방법 및 그 장치 |
US7362810B2 (en) | 2003-05-13 | 2008-04-22 | Sigmatel, Inc. | Post-filter for deblocking and deringing of video data |
US8660182B2 (en) | 2003-06-09 | 2014-02-25 | Nvidia Corporation | MPEG motion estimation based on dual start points |
US20040257434A1 (en) | 2003-06-23 | 2004-12-23 | Robert Davis | Personal multimedia device video format conversion across multiple video formats |
US20040258147A1 (en) | 2003-06-23 | 2004-12-23 | Tsu-Chang Lee | Memory and array processor structure for multiple-dimensional signal processing |
US7038687B2 (en) | 2003-06-30 | 2006-05-02 | Intel Corporation | System and method for high-speed communications between an application processor and coprocessor |
US7581182B1 (en) | 2003-07-18 | 2009-08-25 | Nvidia Corporation | Apparatus, method, and 3D graphical user interface for media centers |
US20050047502A1 (en) | 2003-08-12 | 2005-03-03 | Mcgowan James William | Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding |
US7418606B2 (en) | 2003-09-18 | 2008-08-26 | Nvidia Corporation | High quality and high performance three-dimensional graphics architecture for portable handheld devices |
US7277101B2 (en) | 2003-09-29 | 2007-10-02 | Vixs Systems Inc | Method and system for scaling images |
US7548596B2 (en) | 2003-10-01 | 2009-06-16 | Realtek Semiconductor Corp. | Ethernet channel estimation device and method |
GB0324369D0 (en) | 2003-10-18 | 2003-11-19 | Koninkl Philips Electronics Nv | Method and apparatus for calculating an inverse DCT |
US7602849B2 (en) | 2003-11-17 | 2009-10-13 | Lsi Corporation | Adaptive reference picture selection based on inter-picture motion measurement |
NO320114B1 (no) | 2003-12-05 | 2005-10-24 | Tandberg Telecom As | Forbedret utregning av interpolerte pixelverdier |
KR100621137B1 (ko) | 2004-02-27 | 2006-09-13 | 세이코 엡슨 가부시키가이샤 | 동화상 부호화 장치 및 동화상 처리장치 |
CN101626475B (zh) | 2004-04-01 | 2011-05-04 | 松下电器产业株式会社 | 影像再现装置、信息记录装置、影像处理设备及摄像装置 |
US20050238102A1 (en) | 2004-04-23 | 2005-10-27 | Samsung Electronics Co., Ltd. | Hierarchical motion estimation apparatus and method |
US7782951B2 (en) | 2004-05-13 | 2010-08-24 | Ittiam Systems (P) Ltd. | Fast motion-estimation scheme |
KR20050112445A (ko) * | 2004-05-25 | 2005-11-30 | 경희대학교 산학협력단 | 예측 부호화/복호화 장치, 예측 부호화/복호화 방법 및 그방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체 |
KR20050114751A (ko) | 2004-06-01 | 2005-12-06 | 경희대학교 산학협력단 | 예측 부호화/복호화 장치 및 예측 부호화/복호화 방법 |
US20050276493A1 (en) | 2004-06-01 | 2005-12-15 | Jun Xin | Selecting macroblock coding modes for video encoding |
US8369402B2 (en) | 2004-06-17 | 2013-02-05 | Canon Kabushiki Kaisha | Apparatus and method for prediction modes selection based on image formation |
US7792188B2 (en) | 2004-06-27 | 2010-09-07 | Apple Inc. | Selecting encoding types and predictive modes for encoding video data |
US7721069B2 (en) | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
US7382392B2 (en) | 2004-07-20 | 2008-06-03 | Samsung Electronics Co., Ltd. | Method and apparatus for compensating for scanning skew |
US7529384B2 (en) | 2004-08-11 | 2009-05-05 | The Trustees Of Stevens Institute Of Technology | Robust hidden data extraction method for scaling attacks |
KR20060016947A (ko) * | 2004-08-19 | 2006-02-23 | 엘지전자 주식회사 | Mpeg 비디오 부호화 시스템 및 부호화 방법 |
US7558428B2 (en) | 2004-09-13 | 2009-07-07 | Microsoft Corporation | Accelerated video encoding using a graphics processing unit |
US7173631B2 (en) | 2004-09-23 | 2007-02-06 | Qualcomm Incorporated | Flexible antialiasing in embedded devices |
US7792192B2 (en) | 2004-11-19 | 2010-09-07 | Analog Devices, Inc. | System and method for sub-pixel interpolation in motion vector estimation |
US7924923B2 (en) | 2004-11-30 | 2011-04-12 | Humax Co., Ltd. | Motion estimation and compensation method and device adaptive to change in illumination |
US7653132B2 (en) | 2004-12-21 | 2010-01-26 | Stmicroelectronics, Inc. | Method and system for fast implementation of subpixel interpolation |
US20060146734A1 (en) | 2005-01-04 | 2006-07-06 | Nokia Corporation | Method and system for low-delay video mixing |
JP2006246431A (ja) | 2005-02-07 | 2006-09-14 | Matsushita Electric Ind Co Ltd | 画像符号化装置および画像符号化方法 |
US7720311B1 (en) | 2005-03-03 | 2010-05-18 | Nvidia Corporation | Memory and compute efficient block-based two-dimensional sample-rate converter for image/video applications |
US7706443B2 (en) | 2005-03-11 | 2010-04-27 | General Instrument Corporation | Method, article of manufacture, and apparatus for high quality, fast intra coding usable for creating digital video content |
JP4889231B2 (ja) | 2005-03-31 | 2012-03-07 | 三洋電機株式会社 | 画像符号化方法および装置、画像復号方法 |
TWI295540B (en) | 2005-06-15 | 2008-04-01 | Novatek Microelectronics Corp | Motion estimation circuit and operating method thereof |
KR100703200B1 (ko) | 2005-06-29 | 2007-04-06 | 한국산업기술대학교산학협력단 | 인트라 부호화 장치 및 방법 |
JP4559935B2 (ja) | 2005-08-25 | 2010-10-13 | 株式会社東芝 | 画像記憶装置及び方法 |
US7747088B2 (en) | 2005-09-28 | 2010-06-29 | Arc International (Uk) Limited | System and methods for performing deblocking in microprocessor-based video codec applications |
US8295351B2 (en) | 2005-11-08 | 2012-10-23 | Panasonic Corporation | Moving picture coding method, moving picture decoding method, and apparatuses of the same |
US20070133689A1 (en) | 2005-12-08 | 2007-06-14 | Park Seong M | Low-cost motion estimation apparatus and method thereof |
JP2009060153A (ja) | 2005-12-21 | 2009-03-19 | Panasonic Corp | 面内予測モード決定方法及び装置及びプログラム |
WO2007075220A1 (en) | 2005-12-22 | 2007-07-05 | Thomson Licensing | Method and apparatus for optimization of frame selection for flexible macroblock ordering (fmo) video encoding |
US7693219B2 (en) | 2006-01-04 | 2010-04-06 | Freescale Semiconductor, Inc. | System and method for fast motion estimation |
US20070171981A1 (en) | 2006-01-25 | 2007-07-26 | Yingyong Qi | Projection based techniques and apparatus that generate motion vectors used for video stabilization and encoding |
KR100809296B1 (ko) | 2006-02-22 | 2008-03-04 | 삼성전자주식회사 | 타입이 일치하지 않는 하위 계층의 정보를 사용하여인터레이스 비디오 신호를 인코딩/디코딩 하는 방법 및장치 |
US8009923B2 (en) * | 2006-03-14 | 2011-08-30 | Celestial Semiconductor, Inc. | Method and system for motion estimation with multiple vector candidates |
US8005140B2 (en) | 2006-03-17 | 2011-08-23 | Research In Motion Limited | Soft decision and iterative video coding for MPEG and H.264 |
US8340179B2 (en) | 2006-03-21 | 2012-12-25 | Canon Kabushiki Kaisha | Methods and devices for coding and decoding moving images, a telecommunication system comprising such a device and a program implementing such a method |
US20070230564A1 (en) | 2006-03-29 | 2007-10-04 | Qualcomm Incorporated | Video processing with scalability |
US7565077B2 (en) | 2006-05-19 | 2009-07-21 | Seiko Epson Corporation | Multiple exposure regions in a single frame using a rolling shutter |
JP4752631B2 (ja) | 2006-06-08 | 2011-08-17 | 株式会社日立製作所 | 画像符号化装置、及び画像符号化方法 |
US8081187B2 (en) | 2006-11-22 | 2011-12-20 | Autodesk, Inc. | Pencil strokes for vector based drawing elements |
US20080137726A1 (en) | 2006-12-12 | 2008-06-12 | General Instrument Corporation | Method and Apparatus for Real-Time Video Encoding |
US8428125B2 (en) | 2006-12-22 | 2013-04-23 | Qualcomm Incorporated | Techniques for content adaptive video frame slicing and non-uniform access unit coding |
CN101222641B (zh) | 2007-01-11 | 2011-08-24 | 华为技术有限公司 | 帧内预测编解码方法及其装置 |
US8391354B2 (en) | 2007-05-14 | 2013-03-05 | Broadcom Corporation | Method and system for transforming uncompressed video traffic to network-aware ethernet traffic with A/V bridging capabilities and A/V bridging extensions |
TW200926011A (en) | 2007-09-04 | 2009-06-16 | Objectvideo Inc | Background modeling with feature blocks |
WO2009037828A1 (ja) | 2007-09-21 | 2009-03-26 | Panasonic Corporation | 画像符号化装置および画像復号化装置 |
US8467451B2 (en) | 2007-11-07 | 2013-06-18 | Industrial Technology Research Institute | Methods for selecting a prediction mode |
KR101540138B1 (ko) | 2007-12-20 | 2015-07-28 | 퀄컴 인코포레이티드 | 적응적 조사영역을 갖는 모션추정 장치 및 방법 |
-
2006
- 2006-08-25 US US11/510,218 patent/US8660380B2/en active Active
-
2007
- 2007-08-01 TW TW096128255A patent/TWI392371B/zh active
- 2007-08-24 CN CN2007101479403A patent/CN101131686B/zh active Active
- 2007-08-24 JP JP2007218719A patent/JP4491798B2/ja active Active
- 2007-08-27 KR KR1020070086206A patent/KR100926207B1/ko active IP Right Grant
-
2009
- 2009-12-30 US US12/650,362 patent/US8666166B2/en active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4491798B2 (ja) | 低消費パワーでデータ値配列に2次元変換を実行する方法及びシステム | |
JP2008117368A5 (ja) | ||
US7127482B2 (en) | Performance optimized approach for efficient downsampling operations | |
US8233545B2 (en) | Run length encoding in VLIW architecture | |
KR100481067B1 (ko) | 분산 산술 처리장치 및 그를 이용한 이차원 이산여현변환 처리장치 | |
US7129862B1 (en) | Decoding bit streams encoded according to variable length codes | |
US9665540B2 (en) | Video decoder with a programmable inverse transform unit | |
US5649077A (en) | Modularized architecture for rendering scaled discrete cosine transform coefficients and inverse thereof for rapid implementation | |
JPH07236143A (ja) | 高速デジタル信号復号化方法 | |
JPH11501420A (ja) | Jpeg画像圧縮標準を実現するvlsi回路構造体 | |
Hsia et al. | Improved low-complexity algorithm for 2-D integer lifting-based discrete wavelet transform using symmetric mask-based scheme | |
US20230276023A1 (en) | Image processing method and device using a line-wise operation | |
JPH04128982A (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
KR20040005962A (ko) | 버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법 | |
US6832232B1 (en) | Dual-block inverse discrete cosine transform method | |
CN108184127B (zh) | 一种可配置的多尺寸dct变换硬件复用架构 | |
US8165198B2 (en) | Apparatus and method for performing video decoding processes in parallel | |
Fan et al. | A parallel-access mapping method for the data exchange buffers around DCT/IDCT in HEVC encoders based on single-port SRAMs | |
US7756351B2 (en) | Low power, high performance transform coprocessor for video compression | |
KR100451731B1 (ko) | 역 이산 코사인 변환 장치 | |
US6742010B1 (en) | Dual-block discrete consine transform method | |
US7724975B2 (en) | Design techniques and their circuit designs for versatile and scalable video coding | |
JP2002159006A (ja) | 演算補助回路 | |
Preethi et al. | Area and Power Efficient Transposition Buffer design for 2D-DCT Architecture in Video Applications | |
Lin et al. | High performance architecture for unified forward and inverse transform of HEVC |