JP2003330911A - 映像データ処理用の単一命令マルチプルデータ(simd)に基づくアルゴリズム - Google Patents

映像データ処理用の単一命令マルチプルデータ(simd)に基づくアルゴリズム

Info

Publication number
JP2003330911A
JP2003330911A JP2003097311A JP2003097311A JP2003330911A JP 2003330911 A JP2003330911 A JP 2003330911A JP 2003097311 A JP2003097311 A JP 2003097311A JP 2003097311 A JP2003097311 A JP 2003097311A JP 2003330911 A JP2003330911 A JP 2003330911A
Authority
JP
Japan
Prior art keywords
register
dct
coefficients
value
stored
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.)
Withdrawn
Application number
JP2003097311A
Other languages
English (en)
Inventor
Wanrong Lin
ワンロン リン
Anton Margoline
マーゴリン アントン
Dennis Bushmitch
ブッシュミッチ デニス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of JP2003330911A publication Critical patent/JP2003330911A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 映像エンコーダ/デコーダにおいて、係数の
離散コサイン変換(DCT)ブロックを処理する方法を
開示する。 【解決手段】 この方法は、係数のDCTブロックを受
け取り、係数のDCTブロックを、連続的に配列された
DCT係数の一次元アレイに線形化する。この方法は、
DCT係数の一次元アレイの一部分をレジスタに格納
し、部分は、少なくとも2つの連続的に配置されたDC
T係数を含む。係数のレジスタに格納された部分が処理
される。これは、DCTブロック全体が処理されるまで
繰り返される。処理は、ランレングス値の計算、クラス
番号を見出すこと、またはDCTブロックの逆量子化さ
れた係数の判定を含み得る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して、映像デー
タを処理する方法、より具体的には、SIMDに基づく
アルゴリズムを用いるマルチプル離散コサイン変換(D
CT)係数を同時に処理する方法に関する。
【0002】
【従来の技術】MPEG−2(動画エキスパートグルー
プ−2)およびDV(デジタル映像)は、放送産業にお
いて用いられている、デジタル映像再生用の2つの一般
的なフォーマットである。両方のフォーマットにおい
て、変換、例えば、二次元離散コサイン変換(DCT)
は、イメージデータのブロック(例えば、1つのマクロ
ブロックにつき4個の8×8ブロック)(ピクセル自体
またはこれらのピクセルに対応するインターフレームピ
クセル差異のいずれか)に適用される。得られる変換係
数は、係数の多くが典型的にはゼロの値で量子化され
る、選択された量子化レベルで、量子化される。量子化
された係数は、ランレングス符号化されて、圧縮された
映像ビットストリームの一部を生成する。概して、より
高い量子化レベルは、より多くのDCT係数がゼロに量
子化され、ランレングス符号化を行った後、画像データ
を表すために必要とされるビットはより少ない。
【0003】DCTは、イメージデータのブロック(例
えば、図1に示すように、8×8ピクセルのブロック)
を、変換係数の新たなブロック(例えば、図2に示すよ
うに、8×8DCT係数のブロック)に変換する。変換
は、イメージ全体が変換されるまで、各ブロックに適用
される。デコーダにおいて、逆変換は、下のイメージを
復元するために適用される。
【0004】典型的なイメージについて、信号エネルギ
ーの大部分が、小数の変換係数に圧縮される。例えば、
図2における第1の係数は、残りの係数の大きさより大
きい。第1の係数は、DCエネルギーを表し、他の係数
は異なる空間周波数帯のACエネルギーを表すので、典
型的には、他の係数よりもずっと大きい。残りの係数
は、左から右に増大する水平な周波数、上から下に増大
する垂直周波数における、エネルギーレベルを表す。右
下の隅の係数は、対角周波数におけるエネルギーレベル
を表す。概して、これらの係数は、イメージが大量の対
角情報をめったに含まないので、小さい傾向がある。
【0005】典型的な符号化方式において、より重要な
領域のイメージデータのブロックに対応する変換係数
は、より重要度が低い領域に対応する係数よりは、きび
しく量子化されない。このようにして、比較的多くのデ
ータ(すなわち、情報)は、より重要度が低い領域より
も、より重要な領域について保護される。これは、固定
数のビットに、DCT係数を限定することによって行わ
れる。係数の限定は、係数を左から右にシフトし、最小
位ビットをレジスタの末尾から落とすことによって、行
われる。このようにして、係数の振幅も低減される。残
りのビット数は、DCTブロックにおける8×8係数の
各々について、個別に、予め割り当てられる。ビット数
は、一定のビットレートを維持するため、必要に応じ
て、さらに低減されるか、増大される。
【0006】イメージについての量子化の効果は、図3
に示す量子化された係数のブロックにおいて見受けられ
る。これらの量子化された係数は、図2のDCT係数
を、最も近い整数に量子化した結果である。係数の多く
は、ゼロの値まで量子化された。係数のうちのいくつか
は、+1または−1の値まで量子化された。
【0007】変換係数を量子化する場合、様々な係数の
人間の知覚における異なる重要度は、異なる係数につい
ての量子化器の相対的なステップサイズを変動させるこ
とによって、利用され得る。知覚的に重要な係数は、他
の係数よりも細かいステップサイズで、量子化され得
る。例えば、低い空間的周波数は、細かく量子化され
得、より重要度が低い高周波数係数は、より粗く量子化
され得る。異なるステップサイズを得るための簡略的な
方法は、視覚的な重要度に基づいて、各係数を正規化ま
たは重み付けすることである。正規化された係数は、同
じ様態、例えば、最も近い整数への丸め(均一量子化)
で、量子化され得る。正規化または重み付けは、量子化
器を、ある係数から他の係数に、効率的に縮尺変更す
る。
【0008】図3に示すように、変換係数の多くは、し
ばしば、ゼロに量子化される。非ゼロの低周波数係数が
いくつかあり得、非0高周波数係数がまばらに分散して
いるが、係数の大部分は、ゼロに量子化され得る。この
現象を利用するため、変換係数の二次元アレイが、図4
に示すように、ジグザグスキャン処理によって、再フォ
ーマットされ、一次元シーケンスに優先順位付けされ
る。図5に、別のスキャン処理を示す。
【0009】ジグザグまたは別のスキャン順序付けによ
って、シーケンスにおいて最も早くに互いにグループ分
けされている、(エネルギーおよび視覚の面において)
重要な非ゼロ係数の殆どが得られる。これらの後に、典
型的には、ゼロに量子化された係数のロングランが続
く。これらのゼロの値にされた係数は、ランレングス符
号化によって効率的に表される。ランレングス符号化に
おいて、非ゼロ係数の前の連続的なゼロ係数の数(RU
N)は、符号化され、非ゼロ計数値が続く。
【0010】8×8DCT係数の処理は、計算を集中さ
せ、望ましくは、素早く、かつ効率的に行われる。本発
明は、このような需要に対処する。
【0011】
【発明が解決しようとする課題】しかし、従来のデータ
を処理する方法では、SIMDに基づくアルゴリズムを
用いるマルチプル離散コサイン変換(DCT)係数を同
時に処理することができない。
【0012】
【課題を解決するための手段】この需要および他の需要
を満たすため、その目的を考慮して、本発明は、係数の
離散コサイン変換(DCT)ブロックを処理する方法を
提供する。この方法は、係数のDCTブロックを受け取
り、係数のDCTブロックを、連続的に配列されたDC
T係数の一次元アレイに線形化する。この方法は、DC
T係数の一次元アレイの一部分をレジスタに格納し、部
分は、少なくとも2つの連続的に配置されたDCT係数
を含む。係数のレジスタに格納された部分が処理され
る。これは、DCTブロック全体が処理されるまで繰り
返される。処理は、ランレングス値の計算、クラス番号
を見出すこと、またはDCTブロックの逆量子化された
係数の判定を含み得る。
【0013】上記の概略的な説明および以下の詳細な説
明の両方が、例示に過ぎず、本発明を限定するものでは
ないことが理解されるべきである。
【0014】本発明による方法は、係数の離散コサイン
変換(DCT)ブロックを処理する方法であって、
(a)係数のDCTブロックを受け取る工程と、(b)
係数のDCTブロックを、連続的に配列されたDCT係
数の一次元アレイに線形化する工程と、(c)該DCT
係数の一次元アレイの一部分を第1のレジスタに同時に
格納し、該部分は、少なくとも2つの連続的に配置され
たDCT係数を含む、工程と、(d)該DCT係数の第
1のレジスタに格納された部分を同時に処理する工程で
あって、該処理する工程は、該DCT係数の第1のレジ
スタに格納された部分と、該DCT係数の第2のレジス
タに格納された部分とを比較する工程を含む、工程と、
(e)一次元アレイにおけるDCT係数の次の部分につ
いて、工程(c)および(d)を繰り返して、該係数の
DCTブロックの処理を完了する工程と、(f)該処理
の結果を映像エンコーダ/デコーダに提供する工程とを
含む、方法である。これにより、上記目的を達成するこ
とができる。
【0015】前記工程(d)が、前記第1のレジスタに
格納されたゼロ値を有する、複数の連続的に配置された
DCT係数を決定する工程を含んでよい。
【0016】前記工程(d)が、前記第1のレジスタに
格納された前記DCT係数を、前記第2のレジスタに格
納された1セットのゼロ値と同時に比較する工程を含ん
でよい。
【0017】前記工程(d)が、前記第1のレジスタに
格納された前記DCT係数を、前記第2のレジスタに格
納された1セットのゼロ値と同時に比較して、該比較の
結果を格納する工程を含み、マスキング演算を比較の結
果を適用して、HASH KEYを入手し、HASH
KEYを第3のレジスタに格納する工程と、HASHK
EYを用いて、ランレングステーブルにインデックスを
付けて、該第1のレジスタに格納された、ゼロ値を有す
る連続的に配置されたDCT係数の数を決定する工程
と、を含んでよい。
【0018】前記工程(d)が、Intel Pent
ium(登録商標)4プロセッサ用の単一命令マルチプ
ルデータエクステンション2(SSE2)を用いて、前
記DCT係数の前記格納された部分を処理する工程を含
んでよい。
【0019】前記工程(a)が、64個の係数のDCT
ブロックを受け取る工程を含み、前記工程(c)が、8
個のDCT係数を前記第1のレジスタに格納する工程を
含んでよい。
【0020】本発明による方法は、係数の離散コサイン
変換(DCT)ブロックを処理する方法であって、
(a)係数のDCTブロックを受け取る工程と、(b)
係数のDCTブロックを、連続的に配列されたDCT係
数の一次元アレイに線形化する工程と、(c)該DCT
係数の一次元アレイの一部分を第1のレジスタに同時に
格納し、該部分は、少なくとも2つの連続的に配置され
たDCT係数を含む、工程と、(d)重み付け要素を第
2のレジスタに格納する工程であって、重み付け要素の
各々は、該第1のレジスタに格納されたそれぞれのDC
T係数に対応する、工程と、(e)該第2のレジスタに
格納された重み付け要素の各々を、該第1のレジスタに
格納されたそれぞれのDCT係数と同時に乗算する工程
とを含む。これにより、上記目的を達成することができ
る。
【0021】前記重み付け要素と前記DCT係数との乗
算の対応する積が、高次ビットおよび低次ビットを含む
方法であって、前記工程(e)が、対応する積の高次ビ
ットを放棄し、該対応する積の低次ビットを第3のレジ
スタに格納する工程と、対応する積の低次ビットを放棄
し、該対応する積の高次ビットを第4のレジスタに格納
する工程と、該第3のレジスタに格納されたビットを所
定のビット数分右にシフトして、該第4のレジスタに格
納されたビットを他の所定のビット数分左にシフトす
る、工程と、ビットごとのOR演算によって、該第3の
レジスタ内の残りのビットを、対応する、該第4のレジ
スタ内の残りのビットと結合する工程とをさらに含んで
よい。
【0022】前記工程(e)が、(i)前記重み付け要
素の各々と前記対応するDCT係数との積を、第3のレ
ジスタに格納する工程と、(ii)該第3のレジスタに
格納された積が、−1の値を含むか否かを判定する工程
と、(iii)該第3のレジスタに格納された積が、+
1の値を含むか否かを判定する工程と、(iv)該第3
のレジスタにおいて、工程(ii)において判定された
該−1の値と、工程(iii)において判定された該+
1の値とを、それぞれ、ゼロの値と置き換える工程とを
含んでよい。
【0023】前記工程(e)が、前記重み付けされた要
素の各々と、前記対応するDCT係数との積を、第3の
レジスタに格納する工程と、前記第3のレジスタに格納
された積が、255より大きい値を含むか否かを判定す
る工程とを含んでよい。
【0024】前記工程(e)が、(i)前記重み付け要
素の各々と、前記対応するDCT係数との積を、第3の
レジスタに格納する工程と、(ii)該第3のレジスタ
に格納された積を、第4のレジスタにコピーする工程
と、(iii)所定数のビット分、該第4のレジスタに
コピーされた積をシフトする工程と、(iv)該第3の
レジスタに格納されている積と、該第4のレジスタにコ
ピーされた積のシフトされたビットとを加算する工程と
を含んでよい。
【0025】本発明による方法は、映像エンコーダ/デ
コーダ内の係数のDCTブロックのランレングス値を入
手する方法であって、(a)係数のDCTブロックを受
け取る工程と、(b)係数のDCTブロックを、連続的
に配列されたDCT係数の一次元アレイに線形化する工
程と、(c)該DCT係数の一次元アレイの一部分をレ
ジスタに格納し、該部分は、少なくとも2つの連続的に
配置されたDCT係数を含む、工程と、(d)該DCT
係数の一次元アレイの一部分を、他のレジスタに格納さ
れた1セットのゼロ値と同時に比較する工程と、(e)
該DCT係数のランレングス値を、該工程(d)の該比
較に応じて、決定する工程とを含む。これにより、上記
目的を達成することができる。
【0026】(f)前記工程(c)〜(e)を、一次ア
レイにおけるDCT係数の次の部分について繰り返す工
程と、(g)該工程(f)を完了した後、ランレングス
値を更新する工程とをさらに含んでよい。
【0027】前記工程(d)が、マスク関数を、前記比
較の結果に適用して、HASH KEYを入手する工程
を含み、前記工程(e)が、HASH KEYを用い
て、テーブルにインデックスを付ける工程を含んでよ
い。
【0028】前記工程(a)が、64個の係数のDCT
ブロックを受け取る工程を含み、前記工程(c)が、8
個のDCT係数を該第1のレジスタに格納する工程を含
んでよい。
【0029】前記レジスタが128ビットレジスタであ
り、前記工程(c)が8個の連続的に配置されたDCT
係数を格納する工程を含み、それぞれのDCT係数が、
16ビット値を有してよい。
【0030】前記工程(d)が、前記比較工程の前に、
前記レジスタに格納されたDCT係数が、−1の値を含
むか否かを判定する工程と、該レジスタに格納されたD
CT係数が、+1の値を含むか否かを判定する工程と、
該レジスタにおいて、該判定された−1の値と、該判定
された+1の値とを、それぞれ、対応するゼロの値と置
き換える工程とを含んでよい。
【0031】本発明による方法は、映像エンコーダ/デ
コーダ内の係数のDCTブロックのクラス番号を入手す
る方法であって、(a)係数のDCTブロックを受け取
る工程と、(b)係数のDCTブロックを、連続的に配
列されたDCT係数の一次元アレイに線形化する工程
と、(c)該DCT係数の一次元アレイの一部分をレジ
スタに格納し、該部分は、少なくとも2つの連続的に配
置されたDCT係数を含む、工程と、(d)該レジスタ
内に格納されたDCT係数の各々を重み付けする工程
と、(e)該重み付けされたDCT係数の各々の絶対値
を入手する工程と、(f)該重み付けされたDCT係数
の各々の絶対値を比較する工程と、(g)該工程(f)
において、比較されたDCT係数のうち、所定の値より
大きいDCT係数がある場合、該DCTブロックを、第
1の所定のクラス番号で分類する工程とを含む。これに
より上記目的を達成することができる。
【0032】前記工程(a)は、64個の係数のDCT
ブロックを受け取る工程を含み、前記工程(c)は、8
個のDCT係数を第1のレジスタに格納する工程を含ん
でよい。
【0033】前記レジスタが、128ビットレジスタで
あり、前記工程(c)が8個の連続的に配置されたDC
T係数を格納する工程を含み、それぞれのDCT係数
が、16ビット値を有してよい。
【0034】(h)前記工程(d)において前記DCT
係数の各々を重み付けした後、前記DCT係数につい
て、ACエネルギー値を計算する工程と、(i)第2の
所定のクラス番号で、前記工程(h)において計算され
る該ACエネルギー値に基づいて、分類する工程とをさ
らに含んでよい。
【0035】本発明による方法は、映像デコーダ内のD
CTブロックを逆量子化する方法であって、(a)該D
CTブロックの一部を格納する工程であって、該部分
は、少なくとも2つのDCT係数を含む、工程と、
(b)重み付けの値を第2のレジスタに格納する工程
と、(c)第1のレジスタに格納された各DCT係数
を、該第2のレジスタ内の対応する重み付けされた値を
乗算して、係数の逆量子化されたDCTブロックを入手
する工程とを含む。これにより、上記目的を達成するこ
とができる。
【0036】前記DCTブロックは、64個の係数を含
み、前記工程(a)は、8個のDCT係数を第1のレジ
スタに格納する工程を含んでよい。
【0037】前記第1のレジスタが、128ビットレジ
スタであり、前記工程(a)が8個の連続的に配置され
たDCT係数を該第1のレジスタに格納する工程を含
み、それぞれのDCT係数が、16ビット値を有してよ
い。
【0038】
【発明の実施の形態】添付の図面を参照しながら、以下
の詳細な説明を考慮することにより、本発明がより良く
理解される。
【0039】本発明は、次に、図面を参照しながら説明
される。本発明は、図において図示するために選択され
た、例示的な実施形態に限定されないことが理解される
べきである。例示的な実施形態に対する変形および改変
は、本発明の精神または範囲から逸脱することなく為さ
れ得ることが、理解されるべきである。
【0040】概して、本発明は、SIMDに基づくアル
ゴリズムを用いて、マルチプルDCT係数を同時に処理
する方法に関する。この方法は、概して、10という参
照符号で示され、図6に示される。図示するように、方
法は、工程12において、64−DCT(または、8×
8DCT)マトリクスを受信する。マトリクスは、工程
14において、例えば、DCT係数用のジグザグスキャ
ン順序(図4)またはDCT係数用の別のスキャン順序
(図5)を用いて、線形化される。各DCT係数は、2
バイト(16ビット)の整数として、線形化されたスキ
ャン順序(ジグザグまたは他の順序)で、メモリ内に格
納される。
【0041】線形化されたDCT係数は、1度にいくつ
か、単一のレジスタにロードされる。例えば、工程16
は、8個のDCT係数を128ビットのレジスタにロー
ドする。8個のDCT係数は、並行してロードされ、レ
ジスタ内に128ビットのワードが生成される。この方
法は、128ビットのワードについて、アルゴリズムを
実行する(工程18)。以下に説明するように、アルゴ
リズムは、ランレングス計算、DCTデータ分類化、逆
量子化計算、または、いくつかのDCT係数が並行して
ロードされるレジスタを用いる他のアルゴリズムを含み
得る。
【0042】方法は、決定ボックス20へと進み、アル
ゴリズムがDCTマトリクス全体の処理を完了したか否
かが決定される。DCTマトリクス全体の処理が完了し
てない場合、方法は、工程16へと進み、DCT係数の
次のセットを128ビットのレジスタにロードする。そ
の後、アルゴリズムが、DCT係数の次のセットについ
て実行される。この処理は、DCTマトリクス全体が処
理されたと決定ボックス20が決定するまで継続され
る。この方法は、工程22において終了する。
【0043】(A.ランレングス計算)図7を参照する
と、概して、参照符号30で示す、ランレングス計算を
行う方法が示されている。この方法は、DCTマトリク
スのランレングス(Runlen.run)および振幅
(Runlen.amp)を見出す。この方法は、表1
に挙げられた命令を含むアルゴリズム(GetNext
RunLen)を用い、以下に説明される。
【0044】(表1.GetNextRunLenアル
ゴリズム)
【0045】
【表1】 アルゴリズムは、マトリクスの終わりに達するので、ラ
ンレングスおよび振幅が見出される場合に真の値を返し
(図7に示す工程50)、ランレングスおよび振幅が見
出されなかった場合に偽の値を返す(工程48)ブーリ
アン関数で、インプリメントされる。ランレングスが、
DCTマトリクスにおける2つの非ゼロ値の間のゼロ値
の数であることが理解されるべきである。振幅は、DC
Tマトリクスにおける次の非ゼロ値の値である。
【0046】図7の実施形態および表1のプロセッサ命
令は、例えば、Pentium(登録商標) NetB
urst技術(Intel Pentium(登録商
標)4)を用いて、SSE2(ストリーミングSIMD
拡張機能2)命令において、インプリメントされる。特
定のセットの命令は、8個のプロセッサを用いて実行さ
れ、8個のプロセッサは、128ビットレジスタ(XM
M0−XMM7)を、SSE2命令と並行して、データ
(packed char、short、int、in
t、floatおよび他のデータ)を処理する。
【0047】この方法は、工程31から開始し、工程3
2において、レジスタのステータスを復元する。レジス
タは、それぞれ、ゼロの値に初期化される。決定ボック
ス34は、残りのビット(以下に説明する)が、128
ビットのXMMレジスタにあるか否かを決定する。残り
のビットがない(XMMレジスタにおける8個のDCT
計数が処理されたことが示される)場合、方法は、決定
ボックス36へと進む。決定は、64個のDCTマトリ
クスが処理されたか否かについて行われる。マトリクス
が完全に処理された場合、方法は、工程48に進み、偽
(非ゼロ値が後に続くそれ以上のゼロのRUNをブロッ
クが含まないことを示すブーリアン関数)を返す。他
方、マトリクスが完全に処理されていない場合、この方
法は、工程38に進み、「データロード」演算、「0と
の比較」演算および「マスキング」演算を行う。これら
は、それぞれ、以下に説明する。
【0048】「データロード」演算は、概して、参照符
号80で示され、図8に模式的に示される。図に示すよ
うに、8個の要素(または、8個のDCT係数)が、並
行して、レジスタ82にロードされる。各要素は、メモ
リ(図示せず)から抽出され、レジスタ82にロードさ
れた16ビットのワード(2バイト)である。8個の要
素を並行してロードした後、レジスタ82には、128
ビットがパックされる。例示的な実施形態において、レ
ジスタ82は、XMMレジスタであり得、SSE2命令
セットが用いられ得る。
【0049】「0との比較」演算は、概して、参照符号
90で示され、図9に模式的に示される。図示するよう
に、「0との比較」演算は、レジスタ82内に格納され
るワードの値を、レジスタ83に格納されているゼロの
値のワード(0がパックされた128ビットのレジス
タ)と比較する。説明のため、レジスタ82にロードさ
れたデータは、8個のDCT計数であり、係数のうち7
個全てがゼロの値を有し、係数のうちの1つが非ゼロ値
を有する。
【0050】「0との比較」演算は、等しいワード(1
6ビット、2バイト)について、2つのXMMレジスタ
を比較し、第1および第2のレジスタの対応するワード
において数が等しい場合、第1のオペランドを、「1」
と置き換え、等しくない場合、「0」と置き換える、S
SE2命令、すなわち、PCMEQWを用いてもよい。
図9に示すように、レジスタ82内の値は、対応する等
しい値について、「1」(hexにおけるFFFF)と
置き換えられ、対応する等しくない値について、「0」
と置き換えられる。
【0051】「0との比較」演算を行った後、この方法
は、概して、図10に、参照符号100で示す「マスキ
ング」演算を行う。マスキング演算は、各バイトの最初
のビットをレジスタ82から抽出し、レジスタ102の
最後の16ビットに格納する。例えば、レジスタ102
は、32ビットのEAXレジスタであってもよい。マス
キング演算の結果として、レジスタ82内の各ワード
(16ビット)は、レジスタ102内の2つのマスキン
グされたビットによって表される。
【0052】マスキング演算の他の例を、図11に示
す。図示するように、レジスタ82は、「X」が非ゼロ
値を表す、他のセットの8個のDCT係数を含む。「0
との比較」演算を行った後、マスキング演算は、レジス
タ82からの比較結果のうちの2バイトの各々につい
て、2ビットを抽出して、レジスタ102に入れる。図
示するように、2つの「1」は、ゼロの値を有する各D
CT係数を表し、2つの「0」は、非ゼロ値を有する各
DCT係数を表す。マスキング演算は、XMMレジスタ
からの各バイトの最初のビットを、汎用EAXレジスタ
の後半に格納するバイトマスク命令である、SSE2命
令、すなわち、PMOVMSKBを用いてもよい。
【0053】図7に戻ると、工程38(データロード、
0との比較、およびマスキング)を完了した後、方法
は、工程40に進み、「Hash Keyをゲット」お
よび「Runをゲット」演算を行う。これらの各々を以
下に説明する。
【0054】「Hash Keyをゲット」演算は、概
して、参照符号120で示され、図12に模式的に示さ
れる。図示するように、レジスタ102(32ビットの
レジスタ)は、8個の高ビットがAで表され、8個の低
ビットがBで表される、16ビットのマスク値を含む。
一意的な8ビットHash Keyの値は、8個の高ビ
ットを、1ビット分右にシフトし、シフトされた8個の
高ビット(122)と8個の低ビット(124)とを比
較する排他的論理和(XOR)命令を行うことによっ
て、16ビットのマスク値から生成される。XOR命令
から生成される、一意的な8ビットのHash Key
値は、参照符号126で示される。
【0055】その後、一意的な8ビットのHash K
ey値は、図13において、概して、参照符号130と
して示される「Runをゲット」演算において用いられ
る。「Runをゲット」演算は、ルックアップテーブル
132において、HashKey値を探し、一時的ラン
レングス値を入手する。テーブル132は、256個の
エントリを含む。
【0056】図7の例示的な方法において、16ビット
の値は、ワードがパックされたSSE2比較結果のバイ
トマスキング(SSE2には、ワードマスキング命令が
ない)によって得ることができる。任意のゼロDCT係
数が、2ビットの「1」にマッピングされ、および任意
の非0係数は、2ビットの「0」にマッピングされ得
る。結果として、1セットの8DCT係数(それぞれ
は、2バイト)は、1セットの16ビットにマッピング
され得る。このマッピングは、例えば、図11に示され
る。
【0057】概して、8個のDCT係数のセットは、C
で示され、16ビットのマスク値は、MまたはM(C)
で示され、CのRUNの値(左から右に数えて、Cにお
ける連続的な0の数)は、ルックアップテーブルにおい
て見受けられ得る。Cにおいてゼロおよび非ゼロのDC
T係数の256個の可能な組合せがあるので、この方法
は、各組合せについて、256エントリのテーブルを用
いて、RUNの値を見出す。テーブルインデックス(0
〜255)が、各組合せについて含まれる。Mが16ビ
ットの長さなので、直接テーブルインデックスとして用
いられ得ないが、ハッシュ値(Hash Key)は、
Mから得られる。
【0058】Hash Keyは、概して、以下のよう
に計算される。
【0059】(1)Mは、2つの部分、より高い8ビッ
ト(MH)およびより低い8ビット(ML)に分割され
る。
【0060】(2)Hash KeyH(M)=(MH
>>1)xorML、但し、「>>1」は、1ビット分
の右へのロジックシフトであり、「xor」は、ビット
ごとの排他的論理和演算である。
【0061】テーブルインデックスであるHについて
は、望ましくは、各Mに対して一意的である。すなわ
ち、異なるMは、異なるHを生成する必要がある。これ
は、以下のように証明され得る。
【0062】(1)4ビットの変数Aは、(a3,a
2,a1,a0)で示される4ビットを有し、a3=a
2、a1=a0であるとする。Aが2つの部分、AH=
(a3,a2)およびAL=(a1,a0)に分割され
H(A)=(AH>>1)xorALである場合、H
は、各Aについて一意的である。
【0063】
【数1】 (2)次に、Aは8ビット変数(a7,a6,...,
a0)であり、a7=a6、a5=a4,...,a1
=a0である。上記と同様に、Aは、2つの部分AH=
(a7,a6,a5,a4)およびAL=(a3,a
2,a1,a0)に分割され得、H(A)=(AH>>
1)xorALである。ここで、また、Hが、Aに対し
て一意的であることを検証するため、変数Aの2つの例
は、H(J)=H(K)のように、JおよびKとして示
され得る。すなわち、
【0064】
【数2】 (1)に基づいて、(u3,u2)=(v3,v2)を
得るため、(j7,j6,j3,j2)=(k7,k
6,k3,k2)が必要である。j6=k6であるの
で、u1=v1を得るため、j1=k1、すなわち、j
0=k0が必要である(j1=j0、k1=k0である
こと思い出されたい)。j0=k0なので、u0=v0
を得るため、j5=k5、すなわち、j4=k4が必要
である。以上のことをまとめると、H(J)=H(K)
にするため、(j7,j6,j3,j2,j1,j0,
j5,j4)=(k7,k6,k3,k2,k1,k
0,k5,k4)、すなわち、J=Kが必要である。従
って、Hは、各Aに対して一意的である。
【0065】(3)上記の(1)および(2)において
用いられるアプローチは、Aが16、32、6
4、...ビット変数である場合にも適用される。
【0066】Hが一意性を満たす場合、この方法は、ラ
ンレングステーブルR〔256〕を用い得る。ここで、
R[i]=(H(M(C))=iになるようなCのRU
N)である。ルックアッププロセスにおいて、RUN
は、R[H(M(C))]である。
【0067】図7を参照すると、「Runをゲット」演
算(40)は、ルックアッププロセスについての一時的
なランレングス値を入手する。ランレングス値は、処理
される全ての要素が、ゼロであり、次のロードもゼロを
含むことが可能であるので、一時的である。また、ラン
レングス値は、非ゼロ要素とレジスタの末尾との間のゼ
ロの数も示す。連続的には、工程40は、一時的ランレ
ングス値の和(すなわち、8個の係数および現在の一時
的なRUNの以前のグループからの残りのRUNの和)
である、最終的なランレングス値を計算する。係数のう
ち少なくとも1つが非ゼロであったとすると、最終的な
ランレングス値は、DCTマトリクスにおける、2個の
非ゼロ係数間のゼロの実際の数である。
【0068】決定ボックス42は、XMMレジスタにロ
ードされる8個の係数全てが処理されたか否かを決定す
る。8個の係数全てが処理されていない場合、方法は、
工程44に進み、残りのマスク値を更新する(以下に説
明する)。この方法は、工程46(セーブステータス)
において、16ビットのマスクの残りの値を格納する。
8個の係数全てが処理されている場合、この方法は、新
たなセットの8個のDCT係数をレジスタにロードし続
ける。残りのビットがある場合、決定ボックス34は、
工程40に進み、次の一時的ランレングス値を計算する
(Runをゲット)。
【0069】「残りのマスクの更新」演算は、概して、
参照符号140で示され、図14において模式的に示さ
れる。第1の一時的ランレングス値(Runをゲット)
を見出して、マスキングレジスタ142における非ゼロ
ビットまで、この方法は、レジスタ142において、ビ
ットを右へと、非ゼロビットの後の値まで、シフトす
る。レジスタ142における残りの値は、処理されなか
ったDCT係数に対応する。すなわち、残りの値は、以
前のRUNの後にロードされた8個の要素の残りのマス
クビットである。各RUNにおいて、残りの値は、8個
の要素のロードにおける未処理要素の数に対応するよう
に低減する。
【0070】図11に示す実施例において、第1のラン
レングス値が2になるように決定された(ビットは右か
ら左に計算される)後、レジスタ102内の16ビット
のマスク値は、6ビット分右にシフトされる(非ゼロ値
の後の値までシフトされる)。その後、次のランレング
ス値は、再度、Hash Keyおよびランレングステ
ーブルを用いることによって、3になるように計算され
る。
【0071】図7の例示的な実施形態において、方法
は、Intel Pentium(登録商標)4用のS
SE2命令を用いる。Pentium(登録商標)4の
レジスタ構造は、表2に挙げられる。GetNextR
unLenアルゴリズム用の様々なプログラムパラメー
タの定義は、表3に提供される。
【0072】(表2.一般的なレジスタ構造(ハイおよ
びロー))
【0073】
【表2】 (表3.GetNextRunLenアルゴリズムにつ
いてのプログラムレファレンス)
【0074】
【表3】 (B.DCTデータ分類)図15を参照すると、デジタ
ル映像(DV)符号化用のDCTブロックを分類する方
法が示されている。この方法は、参照符号150で示さ
れ、工程151で開始し、概して、DCTブロックの分
類番号(CN)を決定する。CNが様々な設計規格に基
づき得ることが理解され得る。例えば、CNは、0〜3
の間の整数値を有し得、表4に示すように、DCTマト
リクスのAC係数の量子化ノイズおよび最大絶対値に依
存し得る。
【0075】(表4.クラス番号および量子化ノイズ)
【0076】
【表4】 方法の工程152は、並行して、(例えば)、8個のD
CT係数を、128ビットレジスタにロードする。レジ
スタは、XMMレジスタであり得る(図8)。それぞれ
が16ビットの8個の係数を並行してロードすることに
よって、それぞれが、16ビットを有し、レジスタに
は、128ビットがパックされる。同様に、工程152
は、並行して、8個の重み付け要素を他の128ビット
のレジスタにロードする。それぞれが16ビットの8個
の重み付け要素を並行してロードすることによって、こ
のレジスタにも、128ビットがパックされる。
【0077】8個の重み付け要素が、DCT係数が縮小
するために用いられ得る、重み付けマトリクス(64個
の重み付け要素)の一部を形成することが理解される。
重み付けマトリクスは、設計規格によって選択され得
る。各DCT係数は、重み付けマトリクスからの対応す
る重み付け要素で乗算され得る。
【0078】工程153は、DCT係数を、対応する重
み付け要素で乗算する(表7に示すpDCT×pW)。
乗算は、図16および17に示すように、模式的に行わ
れ得る。8個のDCT係数(それぞれが16ビット)
は、レジスタ166にロードされ、8個の重み付け要素
(それぞれが16ビット)は、レジスタ167にロード
される。対応するワード(それぞれが16ビット)が乗
算され、積の高次の16ビットは、放棄される。これ
は、「ローを乗算する」と呼ばれ、図16において参照
符号165で示される。図に示すように、高次のビット
は、放棄され、さらなる他の128ビットのレジスタ
(レジスタ168)に、低次ビットが格納され得る。概
して、16ビットに16ビットを乗算する場合、積は、
32ビットである。ローの乗算は、低次ビットが保存さ
れることを可能にする。
【0079】同様にして、工程153は、レジスタ16
6および167内の対応するワード(それぞれ16ビッ
ト)を乗算して、レジスタ172内の積が得られ、積の
低次の16ビットが放棄される。これは、「ハイを乗算
する」と呼ばれ、図17において参照符号170で示さ
れる。ハイおよびローを乗算することによって、工程1
53は、全てのデータ(積の高い16ビットか、または
積の低い16ビットのいずれか)が保存されることを可
能にする。
【0080】ハイおよびローを乗算した後、工程153
は、レジスタ168内の得られるデータを、レジスタ1
72内の得られるデータと結合する。データを結合させ
ることは、(a)レジスタ168内の積を10ビット分
右にシフトすることによって、(b)レジスタ172内
の積を6ビット分左にシフトすることによって、また
は、(c)ビットごとのOR演算を行ってレジスタ内の
データを結合させることによって、行われ得る。レジス
タ168内のビットは、整数を用いる、浮動小数点乗算
の近似に起因して、10ビット分右にシフトされる。レ
ジスタ172内のビットは、6ビット分左にシフトし、
そのことにより、レジスタ168および172がビット
ごとのOR演算によって結合され、値は互いに対応す
る。
【0081】図15に戻ると、重み付け工程を完了した
後、方法は、工程154において、ノイズ低減を行う。
ノイズ低減は、+1または−1の値を有するDCT係数
を消去する。ノイズ低減は、図18において、模式的に
示され、概して、参照符号180で示される。例示のた
め、8個のDCT係数は、レジスタ181に並行してロ
ードされ、レジスタ182に並行してロードされる
「1」のアレイと比較される。比較の結果は、レジスタ
183に示すように、同じ対応するワード要素について
は、「FFFF」(10進法では−1)であり、同じで
ない対応するワード要素については、「0」である。
【0082】この比較は、等しいワード(16ビット、
2バイト)について、2つのXMMレジスタを比較し、
第1のオペランドを、第1および第2のレジスタの対応
するワードにおいて数が等しい場合に「1」と置き換
え、等しくない場合に「0」と置き換えるSSE2命
令、すなわち、PCMPEQWによって、行われ得るこ
とが理解される。
【0083】比較を完了した後、ノイズ低減工程は、レ
ジスタ183内の結果をレジスタ181内のDCT係数
に追加して、レジスタ184に示す得られるワードを生
成する(工程2)。図示するように、レジスタ181内
の「−1」の値のDCT係数は、ここでは、「0」にな
っている。このようにして、ノイズ低減工程は、+1の
値を有するDCT係数を見つけ出し、消去する。
【0084】同様に、ノイズ低減工程は、「−1」の値
を有するDCT係数を見つけだし、消去し得る。図18
の右側を見ると、例示のため、レジスタ185(8ワー
ド要素、それぞれが16ビット)にロードされている、
オリジナルの8個のDCT係数のコピーが示されてい
る。8個のDCT係数は、レジスタ187にロードされ
る「FFFF」(10進法では−1)のアレイと比較さ
れる。レジスタ188に示すように、同じ対応するワー
ド要素についての比較の結果は、「FFFF」であり、
同じでない対応するワード要素についての比較の結果
は、「0」である。
【0085】比較が完了した後、ノイズ低減工程は、S
SE2命令、PCMPEQWを用いて、レジスタ188
における結果をレジスタ185におけるDCT係数から
減算する。これは、レジスタ189内に示す結果のワー
ドを生成する。レジスタ185における「−1」の値を
有するDCT係数は、ここで、「0」になる。このよう
にして、「−1」値が消去され得る。
【0086】図示されていないが、図7に示すランレン
グス値の決定の前に、工程154におけるノイズ低減が
行われ得ることが考えられ、ランレングス値は、「+
1」および「−1」の値を有する係数を消去することに
よって、増加し得る。
【0087】図15に戻ると、この方法は、工程155
に進み、DCT係数を格納する。その後、この方法は、
工程156に進み、格納されたDCT係数の各々の絶対
値を計算する。絶対値は、インテルソフトウェアマニュ
アルからのアルゴリズムを用いて計算され得る。その
後、この方法は、工程157に進み、以下に説明するよ
うに、「255との比較」演算および「マスキング」演
算を行う。
【0088】「255との比較」演算は、図19に模式
的に示され、参照符号190で示される。「255との
比較」演算は、DCT係数が、255より大きい絶対値
を見出したか否かを見出す。DV規格に従って、DCT
係数が、DCTブロック(8×8マトリクス)内に25
5より大きい絶対値を有する場合、CNは、3に設定さ
れ得ることが理解される。
【0089】「255との比較」演算は、各々が255
の値を有する、8個のワードの例を用いて、8個の対応
する16ビットワード(重み付けされ、ノイズ低減され
た絶対値)を比較する、より大きい命令(PCMPGT
W)についての比較を用い得る。例示のため、8個のD
CT係数が、レジスタ191にロードされている状態で
示されている。レジスタ191は、128ビットのXM
Mレジスタであり得る。レジスタ191内の8個のDC
T係数は、レジスタ192内の「255」のアレイと比
較される。比較の結果は、レジスタ193に示される。
レジスタ191内の右から4番目のDCT係数が255
より大きいので、レジスタ193内の対応するワードに
「1」(FFFF)が入れられる。レジスタ193内の
残りのワードは、「0」になる。
【0090】工程157は、「255との比較」演算の
後に、「マスキング」演算を行う。図20に模式的に示
し、上述したように、マスキング演算200は、レジス
タ193内の各バイトの第1のビットを取り出し、レジ
スタ201の最後の16ビットに格納する。レジスタ2
01は、32ビットレジスタ、例えば、EAXレジスタ
であり得る。従って、レジスタ193内の「FFFF」
ワード(2バイト)は、レジスタ201において示され
るように配置された「11」になる。
【0091】図21に示す次の工程は、概して参照符号
210で示されるビットごとのAND演算であり、CN
を非ゼロに設定する条件付き分岐の一部として行われ得
る。ビットごとのAND演算は、32ビットレジスタと
それ自体とを比較する(2つのレジスタ211および2
12として模式的に示される)。レジスタ内の全てのデ
ータがゼロである場合、FLAGレジスタ213は
「0」に設定され得るが、全てのデータがゼロでない場
合、FLAGは、「1」に設定され得る。FLAGが
「1」である場合、CNは、3に設定され得る。
【0092】決定ボックス159は、(上述したよう
に)任意のDCT係数が255より大きいか否かを決定
するために入れられる。ブロック内の任意のDCT係数
が255より大きい場合、この方法は、CNを3に設定
する。8個のDCT係数の(以下に説明する)総AC値
は、工程160において更新される。この方法は、工程
152に戻り、ブロックから、次の8個のDCT係数を
ロードする。この方法は、重み付け、ノイズ低減、絶対
値計算、255との比較、マスキング、および総AC値
更新のプロセスを繰り返す。このプロセスは、全ての6
4個のDCT係数が処理されるまで、8回繰り返され
る。DCTブロックについての総AC値は、工程161
において計算される。また、DCTブロックの水平SI
DEおよび垂直SIDEのAC値も、工程161におい
て計算される(以下に説明する)。
【0093】次に、総AC値について説明する。総AC
値は、DC係数をのぞく、重み付けされたDCTブロッ
ク係数の絶対値の和である。8個のDCT係数の総AC
値が計算され得る様式は、図22〜24に模式的に示さ
れ、概して、参照符号220で示される。一例として、
レジスタ221(128ビットレジスタ)が、8個の係
数がロードされた状態で示されている。パックされた乗
算加算命令(PMADDWD)は、8個の係数(各々が
16ビット)を、4つのダブルワード(各々が32ビッ
ト)アンパックするために用いられ得る。レジスタ22
2内の「1」のアレイが用いられるので、DCT係数値
は、乗算プロセスにおいて変化しない。乗算および加算
の結果は、レジスタ223において示される。ここで、
レジスタ223は、第1の係数と第2の係数とを加えた
値、第3の係数と第4の係数とを加えた値、第5の係数
と第6の係数とを加えた値、第7の係数と第8の係数と
を加えた値を有する、4つのダブルワードを含む。
【0094】レジスタ223において、4つのダブルワ
ードを2つのクワドワードに結合するため、この方法
は、図23のレジスタ224に示すように、データのコ
ピーを作る。コピーされたデータは、8バイト(2つの
ダブルワード)分シフトされ、図示するように、上の2
つのダブルワードが、下の2つのダブルワードの位置に
なる。シフトは、XMMレジスタの各ワード(16ビッ
ト、2バイト)を算数的に右にシフトするPSRAW命
令によって行われ得る。レジスタ223内の2つのダブ
ルワードが、図示されるように、レジスタ224内の2
つのシフトされたダブルワードに加えられる。加えられ
た結果を、図24のレジスタ225に示す。レジスタ2
25は、ここでは、第1のダブルワードと第3のダブル
ワードとを加えた値、および第2のダブルワードと第4
のダブルワードとを加えた値を、レジスタの最後の2つ
のセルに含む。
【0095】この方法は、2つのクワドワードをシング
ルワードに結合するために、上記のプロセスを繰り返
す。図24に示す例において、この方法は、レジスタ2
25内のデータをレジスタ226にコピーする。レジス
タ226内のコピーされたデータは、PSRLDQ命令
を用いて、6ワード(12バイト)分右にシフトされ得
る。PSRLDQは、XMMレジスタ内の128ビット
のデータを第2のオペランドにおいて提示されるバイト
数へとシフトするパックされたシフト右論理二重クワド
命令である。2つのクワドワードは、(2+X)+(2
56+X)の8個の係数の総AC値を入手するために追
加される。
【0096】図15に戻ると、工程161は、水平SI
DE値および垂直SIDE値を計算する。図26に示す
ように、水平SIDE値は、DCTブロックの第1のロ
ウにおける7個のDCT係数のAC値(重み付け済)で
ある。第1のロウは、参照符号262で示され、DC係
数261を除外する。垂直SIDE値は、DCTブロッ
クの第1のカラムにおけるDCT係数のAC値(重み付
け済)である。図に示すように、第1のカラムは、参照
符号263で示され、DC係数261を除外する。
【0097】この方法は、上記の総AC計算の一部とし
て水平SIDE値を計算する。しかし、垂直SIDE値
は、図25に示すように、パックされた総ACの第1の
ワードから抽出され得る。(例えば)レジスタ251内
の第1のワードは、XMMレジスタからワード(16ビ
ット)を抽出して、32ビットレジスタに入れる、PE
XTRW命令を用いて、抽出され得る。レジスタ252
が汎用32ビットレジスタであり得ることが理解され
る。PEXTRW命令は、キー(hex numbe
r)を、そのキーの値に対応する、XMMレジスタから
16ビットワードを抽出して、32ビットレジスタに入
れる、第3のオペランドとして用いる。
【0098】総AC値、水平SIDE値、および垂直S
IDE値が、DCTブロックについて決定された後、こ
の方法は、工程161において、SIDE値を計算す
る。SIDE値は、DC係数値を除く、水平SIDE値
および垂直SIDE値の和である。その後、この方法
は、工程162において、これらの値を用いて、クラス
番号(CN)を決定する。この方法は、工程163にお
いて終了する。
【0099】CN値は、以下の通りに計算され得る。
【0100】CN=Class Table[Chro
ma,i1,i2] 但し、Class Tableは、表5に示す3×3×
4整数アレイである。
【0101】
【表5】 Chromaは、符号化されているDCTブロックが、
輝度(Y)成分ブロックであるか、あるいは、Uまたは
Vクロミナンス成分ブロックであるかを示す変数であ
る。すなわち、Yについては、Chroma=0であ
り、Uについては、Chroma=1であり、Vについ
ては、Chroma=2である。i1およびi2は、そ
れぞれ、表6に示す、アルゴリズムを用いて計算された
整数である。
【0102】
【表6】 但し、エッジおよびセンターは、それぞれ、整数であ
り、DCは、第1のロウおよび第1のカラム内のDCT
係数であり、「SIDE」は、DC成分を除く、第1の
ロウおよび第1のカラム内のDCT係数の和であり、
「Total_AC」は、DC成分を除く、DCT係数
の和である。
【0103】Intel Pentium(登録商標)
4プロセッサにおいて実行される場合、DCTデータ分
類150についてのSSE2アルゴリズムは、表7に列
挙される。DCT分類についての各種のプログラムパラ
メータは、表8において提供される。
【0104】(表7.DCTデータ分類アルゴリズム)
【0105】
【表7】 (表8.DCTデータ分類についてのプログラムレファ
レンス)
【0106】
【表8】 (C.逆量子化計算)図27を参照すると、逆量子化計
算の方法が示されている。この方法は、概して参照符号
270で示され、工程271において開始し、可変長デ
コーダによって復号された生DCT係数を逆量子化す
る。この方法は、3つのマトリクス、すなわち、量子化
されたDCTマトリクス、逆量子化係数マトリクス、目
盛係数マトリクスの対応する値を乗算する。目盛係数マ
トリクスは、全ての要素が単一の値に設定されているマ
トリクスである。
【0107】工程272において、この方法は、データ
を3つのレジスタにロードする。各レジスタは、例え
ば、並行して128ビットを格納するXMMレジスタで
あり得る。例示的な実施形態において、XMMレジスタ
のそれぞれに、並行して、8個のショート整数(すなわ
ち、各16ビット値)、すなわち、量子化されたDCT
マトリクスの8個のショート整数、逆量子化されたDC
Tマトリクスの8個のショート整数、目盛係数マトリク
スの8個のショート整数がロードされる。
【0108】工程273において、この方法は、量子化
されたDCTマトリクス(pOriginで指し示され
る)の8個のショート整数を、対応する、逆量子化され
たDCTマトリクスの8個のショート整数で乗算し、そ
の後、目盛係数マトリクス(pScaleで指し示され
る)の8個のショート整数で乗算する。逆量子化係数マ
トリクスは、分類計算アルゴリズムにおいて記述された
重み付けマトリクスに類似し得ることが理解される。目
盛係数は、プログラムにおけるより早い段階で、決定さ
れ得る。
【0109】3つのレジスタ内の要素は、分類計算アル
ゴリズムにおいて説明するように、乗算されたローであ
る。対応する要素(16ビット)が乗算され、積の高次
16ビットが放棄される。これは、2回行われるので、
例示的な実施形態において、各要素は、以下の通りにな
る。
【0110】pOrigin[i]= pOrigin
[i]*pQuan_step[i]*pScale
[i] この方法は、工程274において、pOrigin要素
を4ビット分右にシフトする。4ビット分のシフトは、
16の因数で除算することに等しく、逆量子化ルールを
実現する。右へのシフトは、図28に模式的に示され、
概して参照符号280で示される。図示されるように、
レジスタ281内のビットは、右にシフトされ、(例え
ば)レジスタ282に示すようなシフトされたデータを
生成する。この方法は、XMMレジスタ内の各ワード
(16ビット、2バイト)を右に算術的にシフトするP
SRAW命令を用い得る。各要素の空の高次ビットは、
データ要素のサインビットの初期値で埋められる。カウ
ントオペランドによって特定される値は、15より大き
く、それぞれの宛先データ要素は、要素のサインビット
の初期値で埋められる。
【0111】Intel Pentium(登録商標)
4プロセッサにおいて実行される場合の逆量子化計算に
ついてのSSE2アルゴリズムは、表9に列挙される。
逆量子化計算についての各種のプログラムパラメータの
定義は、表10に示す。
【0112】(表9.逆量子化計算アルゴリズム)
【0113】
【表9】 (表10.逆量子化についてのプログラムレファレン
ス)
【0114】
【表10】 ある特定の実施形態を参照しながら、本明細書中で例示
され、説明されてきたが、本発明は、示されている細部
に限定されるものではない。むしろ、各種の改変が、本
発明の精神から逸脱することなく、特許請求の範囲の均
等物の範囲および領域内の細部に対して為され得る。例
えば、本発明は、1セットの8個のDCT係数、または
変数を1度ロードすることのみに限定されるのではな
く、係数または変数の他のセットをレジスタにロードす
ることにも適用され得る。例えば、1セットの4個のD
CT係数または12個のDCT係数は、レジスタにロー
ドされ得る。さらに、Intel Pentium(登
録商標)4プロセッサ以外のレジスタも本発明によって
用いられ得る。
【0115】映像エンコーダ/デコーダにおいて、方法
は、係数の離散コサイン変換(DCT)ブロックを処理
する。この方法は、係数のDCTブロックを受け取り、
係数のDCTブロックを、連続的に配列されたDCT係
数の一次元アレイに線形化する。この方法は、DCT係
数の一次元アレイの一部分をレジスタに格納し、部分
は、少なくとも2つの連続的に配置されたDCT係数を
含む。係数のレジスタに格納された部分が処理される。
これは、DCTブロック全体が処理されるまで繰り返さ
れる。処理は、ランレングス値の計算、クラス番号を見
出すこと、またはDCTブロックの逆量子化された係数
の判定を含み得る。
【0116】
【発明の効果】このように、本発明の方法によれば、映
像データを処理すること、より具体的には、SIMDに
基づくアルゴリズムを用いるマルチプル離散コサイン変
換(DCT)係数を同時に処理することができる。
【図面の簡単な説明】
【図1】図1は、8×8ピクセルのイメージデータブロ
ックの一例を示す図である。
【図2】図2は、8×8DCT係数のブロックの一例を
示す図である。
【図3】図3は、図2の8×8DCT係数の量子化され
たブロックの図である。
【図4】図4は、係数のジグザグスキャン順序付けを示
す図である。
【図5】図5は、係数の別のスキャン順序付けを示す図
である。
【図6】図6は、本発明のある実施形態に従って、SI
MDを用いるアルゴリズムを用いて、DCTブロックを
処理する方法に含まれる工程を示すフローチャートであ
る。
【図7】図7は、本発明の実施形態による、DCTマト
リクスにおける2つの非ゼロ値の間のゼロ値のランレン
グスを入手する、DCTブロックの係数を処理する方法
に含まれる工程を示すフローチャートである。
【図8】図8は、本発明の実施形態による、128ビッ
トレジスタに並行してロードされる、8個のDCT係数
(各々が16ビット)の模式的な図である。
【図9】図9は、本発明の実施形態による、レジスタに
ロードされるDCT係数と、他のレジスタにロードされ
るゼロ値と間の比較(0との比較)の模式的な図であ
る。
【図10】図10は、本発明の実施形態による、1つの
レジスタからビットを抽出することと、抽出されたビッ
トを他のレジスタに格納することとを含む、マスキング
工程の模式的な図である。
【図11】図11は、本発明の実施形態による、1つの
レジスタからの8個のDCT係数が、他のレジスタ内の
16ビットのマスク値に変換される、マスキングの他の
模式的な図である。
【図12】図12は、本発明の実施形態による、レジス
タ内のビットを乗算することによって、HASH KE
Y値を入手する工程の模式的な図である。
【図13】図13は、本発明の実施形態による、ルック
アップテーブルにおいて、図12のHASH KEY値
の位置を特定することによって、ランレングスを入手す
る工程の模式的な図である。
【図14】図14は、本発明の実施形態による、レジス
タ内のビットを操作することによって、残りマスク値を
更新する工程の模式的な図である。
【図15】図15は、本発明の実施形態による、係数の
DCTブロックを処理して、DCTブロックの分類番号
を入手する方法に含まれる工程を示すフローチャートで
ある。
【図16】図16は、本発明の実施形態による、1レジ
スタ内のワードを、他のレジスタ内の対応するワードと
乗算する工程の模式的な図である。
【図17】図17は、本発明の実施形態による、1レジ
スタ内のワードを、他のレジスタ内の対応するワードと
乗算する工程の模式的な図である。
【図18】図18は、+1値または−1値を有するレジ
スタ内に格納されたDCT係数が位置している、ノイズ
低減の模式的な図である。
【図19】図19は、本発明の実施形態による、レジス
タ内に格納されているDCT係数を、他のレジスタに格
納されている255の値と比較する工程と、比較の結果
をマスキングする工程と、DCTブロックのクラス番号
を設定する、ビットごとのAND演算を行う工程との模
式的な図である。
【図20】図20は、本発明の実施形態による、レジス
タ内に格納されているDCT係数を、他のレジスタに格
納されている255の値と比較する工程と、比較の結果
をマスキングする工程と、DCTブロックのクラス番号
を設定する、ビットごとのAND演算を行う工程との模
式的な図である。
【図21】図21は、本発明の実施形態による、レジス
タ内に格納されているDCT係数を、他のレジスタに格
納されている255の値と比較する工程と、比較の結果
をマスキングする工程と、DCTブロックのクラス番号
を設定する、ビットごとのAND演算を行う工程との模
式的な図である。
【図22】図22は、本発明の実施形態による、格納さ
れた値を第2のレジスタにコピーし、コピーされた値を
第2のレジスタにシフトし、第1のレジスタ内の値に第
2のレジスタにおいてシフトされた値を加算することに
よって、第1のレジスタに格納される、8個のDCT係
数のTotal AC値を入手する工程の模式的な図で
ある。
【図23】図23は、本発明の実施形態による、格納さ
れた値を第2のレジスタにコピーし、コピーされた値を
第2のレジスタにシフトし、第1のレジスタ内の値に第
2のレジスタにおいてシフトされた値を加算することに
よって、第1のレジスタに格納される、8個のDCT係
数のTotal AC値を入手する工程の模式的な図で
ある。
【図24】図24は、本発明の実施形態による、格納さ
れた値を第2のレジスタにコピーし、コピーされた値を
第2のレジスタにシフトし、第1のレジスタ内の値に第
2のレジスタにおいてシフトされた値を加算することに
よって、第1のレジスタに格納される、8個のDCT係
数のTotal AC値を入手する工程の模式的な図で
ある。
【図25】図25は、本発明の実施形態による、128
ビットレジスタにおいて、第1のワード(16ビット)
を抽出し、抽出されたビットを他のレジスタに格納する
工程の模式的な図である。
【図26】図26は、ブロックの第1のロウおよびブロ
ックの第1のカラムを強調している、係数のDCTブロ
ックの模式的な図である。
【図27】図27は、本発明の実施形態による、係数の
逆量子化されたブロックを入手する係数のDCTブロッ
クを処理する方法に含まれる工程を示すフローチャート
である。
【図28】図28は、本発明の実施形態による、16の
因数での除算演算を行う、レジスタ内の値を、4ビット
分右にシフトする工程の模式的な図である。
【符号の説明】
80 データロード 90 0との比較 100 マスキング 120 HASH KEY ゲット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アントン マーゴリン アメリカ合衆国 ニューヨーク 11235, ブルックリン 4シー, オーシャン ドライブ ウエスト 130 (72)発明者 デニス ブッシュミッチ アメリカ合衆国 ニュージャージー 08873, ソマーセット, マトルック プレイス 183 Fターム(参考) 5B056 BB11 FF00 HH03 5C059 KK13 MA23 MC11 UA02 UA05 UA25 5J064 AA02 BA08 BA16 BB05 BC04 BC09 BC16 BD01

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 係数の離散コサイン変換(DCT)ブロ
    ックを処理する方法であって、 (a)係数のDCTブロックを受け取る工程と、 (b)係数のDCTブロックを、連続的に配列されたD
    CT係数の一次元アレイに線形化する工程と、 (c)該DCT係数の一次元アレイの一部分を第1のレ
    ジスタに同時に格納し、該部分は、少なくとも2つの連
    続的に配置されたDCT係数を含む、工程と、 (d)該DCT係数の第1のレジスタに格納された部分
    を同時に処理する工程であって、該処理する工程は、該
    DCT係数の第1のレジスタに格納された部分と、該D
    CT係数の第2のレジスタに格納された部分とを比較す
    る工程を含む、工程と、 (e)一次元アレイにおけるDCT係数の次の部分につ
    いて、工程(c)および(d)を繰り返して、該係数の
    DCTブロックの処理を完了する工程と、 (f)該処理の結果を映像エンコーダ/デコーダに提供
    する工程とを含む、方法。
  2. 【請求項2】 前記工程(d)が、前記第1のレジスタ
    に格納されたゼロ値を有する、複数の連続的に配置され
    たDCT係数を決定する工程を含む、請求項1に記載の
    方法。
  3. 【請求項3】 前記工程(d)が、前記第1のレジスタ
    に格納された前記DCT係数を、前記第2のレジスタに
    格納された1セットのゼロ値と同時に比較する工程を含
    む、請求項2に記載の方法。
  4. 【請求項4】 前記工程(d)が、前記第1のレジスタ
    に格納された前記DCT係数を、前記第2のレジスタに
    格納された1セットのゼロ値と同時に比較して、該比較
    の結果を格納する工程を含み、 マスキング演算を比較の結果を適用して、HASH K
    EYを入手し、HASH KEYを第3のレジスタに格
    納する工程と、 HASH KEYを用いて、ランレングステーブルにイ
    ンデックスを付けて、該第1のレジスタに格納された、
    ゼロ値を有する連続的に配置されたDCT係数の数を決
    定する工程と、 を含む、請求項2に記載の方法。
  5. 【請求項5】 前記工程(d)が、Intel Pen
    tium(登録商標)4プロセッサ用の単一命令マルチ
    プルデータエクステンション2(SSE2)を用いて、
    前記DCT係数の前記格納された部分を処理する工程を
    含む、請求項4に記載の方法。
  6. 【請求項6】 前記工程(a)が、64個の係数のDC
    Tブロックを受け取る工程を含み、 前記工程(c)が、8個のDCT係数を前記第1のレジ
    スタに格納する工程を含む、請求項1に記載の方法。
  7. 【請求項7】 係数の離散コサイン変換(DCT)ブロ
    ックを処理する方法であって、 (a)係数のDCTブロックを受け取る工程と、 (b)係数のDCTブロックを、連続的に配列されたD
    CT係数の一次元アレイに線形化する工程と、 (c)該DCT係数の一次元アレイの一部分を第1のレ
    ジスタに同時に格納し、該部分は、少なくとも2つの連
    続的に配置されたDCT係数を含む、工程と、 (d)重み付け要素を第2のレジスタに格納する工程で
    あって、重み付け要素の各々は、該第1のレジスタに格
    納されたそれぞれのDCT係数に対応する、工程と、 (e)該第2のレジスタに格納された重み付け要素の各
    々を、該第1のレジスタに格納されたそれぞれのDCT
    係数と同時に乗算する工程とを含む、方法。
  8. 【請求項8】 前記重み付け要素と前記DCT係数との
    乗算の対応する積が、高次ビットおよび低次ビットを含
    む方法であって、前記工程(e)が、 対応する積の高次ビットを放棄し、該対応する積の低次
    ビットを第3のレジスタに格納する工程と、 対応する積の低次ビットを放棄し、該対応する積の高次
    ビットを第4のレジスタに格納する工程と、 該第3のレジスタに格納されたビットを所定のビット数
    分右にシフトして、該第4のレジスタに格納されたビッ
    トを他の所定のビット数分左にシフトする、工程と、 ビットごとのOR演算によって、該第3のレジスタ内の
    残りのビットを、対応する、該第4のレジスタ内の残り
    のビットと結合する工程とをさらに含む、請求項7に記
    載の方法。
  9. 【請求項9】 前記工程(e)が、 (i)前記重み付け要素の各々と前記対応するDCT係
    数との積を、第3のレジスタに格納する工程と、 (ii)該第3のレジスタに格納された積が、−1の値
    を含むか否かを判定する工程と、 (iii)該第3のレジスタに格納された積が、+1の
    値を含むか否かを判定する工程と、 (iv)該第3のレジスタにおいて、工程(ii)にお
    いて判定された該−1の値と、工程(iii)において
    判定された該+1の値とを、それぞれ、ゼロの値と置き
    換える工程とを含む、請求項7に記載の方法。
  10. 【請求項10】 前記工程(e)が、 前記重み付けされた要素の各々と、前記対応するDCT
    係数との積を、第3のレジスタに格納する工程と、 前記第3のレジスタに格納された積が、255より大き
    い値を含むか否かを判定する工程とを含む、請求項7に
    記載の方法。
  11. 【請求項11】 前記工程(e)が、 (i)前記重み付け要素の各々と、前記対応するDCT
    係数との積を、第3のレジスタに格納する工程と、 (ii)該第3のレジスタに格納された積を、第4のレ
    ジスタにコピーする工程と、 (iii)所定数のビット分、該第4のレジスタにコピ
    ーされた積をシフトする工程と、 (iv)該第3のレジスタに格納されている積と、該第
    4のレジスタにコピーされた積のシフトされたビットと
    を加算する工程とを含む、請求項7に記載の方法。
  12. 【請求項12】 映像エンコーダ/デコーダ内の係数の
    DCTブロックのランレングス値を入手する方法であっ
    て、 (a)係数のDCTブロックを受け取る工程と、 (b)係数のDCTブロックを、連続的に配列されたD
    CT係数の一次元アレイに線形化する工程と、 (c)該DCT係数の一次元アレイの一部分をレジスタ
    に格納し、該部分は、少なくとも2つの連続的に配置さ
    れたDCT係数を含む、工程と、 (d)該DCT係数の一次元アレイの一部分を、他のレ
    ジスタに格納された1セットのゼロ値と同時に比較する
    工程と、 (e)該DCT係数のランレングス値を、該工程(d)
    の該比較に応じて、決定する工程とを含む、方法。
  13. 【請求項13】 (f)前記工程(c)〜(e)を、一
    次アレイにおけるDCT係数の次の部分について繰り返
    す工程と、 (g)該工程(f)を完了した後、ランレングス値を更
    新する工程とをさらに含む、請求項12に記載の方法。
  14. 【請求項14】 前記工程(d)が、マスク関数を、前
    記比較の結果に適用して、HASH KEYを入手する
    工程を含み、 前記工程(e)が、HASH KEYを用いて、テーブ
    ルにインデックスを付ける工程を含む、請求項12に記
    載の方法。
  15. 【請求項15】 前記工程(a)が、64個の係数のD
    CTブロックを受け取る工程を含み、 前記工程(c)が、8個のDCT係数を該第1のレジス
    タに格納する工程を含む、請求項12に記載の方法。
  16. 【請求項16】 前記レジスタが128ビットレジスタ
    であり、 前記工程(c)が8個の連続的に配置されたDCT係数
    を格納する工程を含み、それぞれのDCT係数が、16
    ビット値を有する、請求項15に記載の方法。
  17. 【請求項17】 前記工程(d)が、前記比較工程の前
    に、 前記レジスタに格納されたDCT係数が、−1の値を含
    むか否かを判定する工程と、 該レジスタに格納されたDCT係数が、+1の値を含む
    か否かを判定する工程と、 該レジスタにおいて、該判定された−1の値と、該判定
    された+1の値とを、それぞれ、対応するゼロの値と置
    き換える工程とを含む、請求項12に記載の方法。
  18. 【請求項18】 映像エンコーダ/デコーダ内の係数の
    DCTブロックのクラス番号を入手する方法であって、 (a)係数のDCTブロックを受け取る工程と、 (b)係数のDCTブロックを、連続的に配列されたD
    CT係数の一次元アレイに線形化する工程と、 (c)該DCT係数の一次元アレイの一部分をレジスタ
    に格納し、該部分は、少なくとも2つの連続的に配置さ
    れたDCT係数を含む、工程と、 (d)該レジスタ内に格納されたDCT係数の各々を重
    み付けする工程と、 (e)該重み付けされたDCT係数の各々の絶対値を入
    手する工程と、 (f)該重み付けされたDCT係数の各々の絶対値を比
    較する工程と、 (g)該工程(f)において、比較されたDCT係数の
    うち、所定の値より大きいDCT係数がある場合、該D
    CTブロックを、第1の所定のクラス番号で分類する工
    程とを含む、方法。
  19. 【請求項19】 前記工程(a)は、64個の係数のD
    CTブロックを受け取る工程を含み、 前記工程(c)は、8個のDCT係数を第1のレジスタ
    に格納する工程を含む、請求項18に記載の方法。
  20. 【請求項20】 前記レジスタが、128ビットレジス
    タであり、 前記工程(c)が8個の連続的に配置されたDCT係数
    を格納する工程を含み、それぞれのDCT係数が、16
    ビット値を有する、請求項19に記載の方法。
  21. 【請求項21】 (h)前記工程(d)において前記D
    CT係数の各々を重み付けした後、前記DCT係数につ
    いて、ACエネルギー値を計算する工程と、 (i)第2の所定のクラス番号で、前記工程(h)にお
    いて計算される該ACエネルギー値に基づいて、分類す
    る工程とをさらに含む、請求項18に記載の方法。
  22. 【請求項22】 映像デコーダ内のDCTブロックを逆
    量子化する方法であって、 (a)該DCTブロックの一部を格納する工程であっ
    て、該部分は、少なくとも2つのDCT係数を含む、工
    程と、 (b)重み付けの値を第2のレジスタに格納する工程
    と、 (c)第1のレジスタに格納された各DCT係数を、該
    第2のレジスタ内の対応する重み付けされた値を乗算し
    て、係数の逆量子化されたDCTブロックを入手する工
    程とを含む、方法。
  23. 【請求項23】 前記DCTブロックは、64個の係数
    を含み、 前記工程(a)は、8個のDCT係数を第1のレジスタ
    に格納する工程を含む、請求項22に記載の方法。
  24. 【請求項24】 前記第1のレジスタが、128ビット
    レジスタであり、 前記工程(a)が8個の連続的に配置されたDCT係数
    を該第1のレジスタに格納する工程を含み、それぞれの
    DCT係数が、16ビット値を有する、請求項23に記
    載の方法。
JP2003097311A 2002-03-29 2003-03-31 映像データ処理用の単一命令マルチプルデータ(simd)に基づくアルゴリズム Withdrawn JP2003330911A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/112,568 US7174047B2 (en) 2002-03-29 2002-03-29 Single-instruction multiple-data (SIMD)-based algorithms for processing video data
US10/112,568 2002-03-29

Publications (1)

Publication Number Publication Date
JP2003330911A true JP2003330911A (ja) 2003-11-21

Family

ID=28673644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003097311A Withdrawn JP2003330911A (ja) 2002-03-29 2003-03-31 映像データ処理用の単一命令マルチプルデータ(simd)に基づくアルゴリズム

Country Status (2)

Country Link
US (1) US7174047B2 (ja)
JP (1) JP2003330911A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7893851B2 (en) 2006-11-28 2011-02-22 Nec Corporation Encoding apparatus, method, and processor
KR101169826B1 (ko) 2004-11-17 2012-08-03 톰슨 라이센싱 사전계산된 변환 계수들에 기초한 비트-어큐리트 필름그레인 시뮬레이션 방법

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206448B2 (en) * 2002-02-28 2007-04-17 At&T Corp. System and method for using pattern vectors for video and image coding and decoding
JP3679083B2 (ja) * 2002-10-08 2005-08-03 株式会社エヌ・ティ・ティ・ドコモ 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム
US20040249782A1 (en) * 2003-06-04 2004-12-09 International Business Machines Corporation Method and system for highly efficient database bitmap index processing
US8223844B2 (en) * 2003-11-14 2012-07-17 Intel Corporation High frequency emphasis in decoding of encoded signals
US7646923B2 (en) * 2005-01-28 2010-01-12 Sony Computer Entertainment Inc. Method and apparatus for compressing a stream of video data
US8233545B2 (en) * 2006-08-21 2012-07-31 Texas Instruments Incorporated Run length encoding in VLIW architecture
US8041927B2 (en) * 2008-04-16 2011-10-18 Nec Corporation Processor apparatus and method of processing multiple data by single instructions
US8194977B2 (en) * 2008-12-09 2012-06-05 Microsoft Corporation Remote desktop protocol compression acceleration using single instruction, multiple dispatch instructions
US20100166076A1 (en) * 2008-12-30 2010-07-01 Tandberg Telecom As Method, apparatus, and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture
JP5004986B2 (ja) * 2009-03-19 2012-08-22 キヤノン株式会社 スキャン変換装置及び画像符号化装置、並びにそれらの制御方法
US20120027081A1 (en) * 2010-07-30 2012-02-02 Cisco Technology Inc. Method, system, and computer readable medium for implementing run-level coding
NO336215B1 (no) * 2012-12-27 2015-06-15 Pexip AS Simultan og sløyfefri vektorberegning av alle run-level par i videokomprimering.
US9674313B2 (en) 2015-08-06 2017-06-06 International Business Machines Corporation Adaptive payload management
CN108353175B (zh) * 2015-09-21 2021-03-12 Lg 电子株式会社 使用系数引起的预测处理视频信号的方法和装置
US11157532B2 (en) 2015-10-05 2021-10-26 International Business Machines Corporation Hierarchical target centric pattern generation
US11095895B2 (en) * 2018-02-01 2021-08-17 Intel Corporation Human visual system optimized transform coefficient shaping for video encoding
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
JP7346837B2 (ja) * 2019-02-06 2023-09-20 株式会社リコー 符号化装置、復号化装置、符号化方法、復号化方法、符号化プログラム及び復号化プログラム
US11211944B2 (en) 2019-04-17 2021-12-28 Samsung Electronics Co., Ltd. Mixed-precision compression with random access
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479527A (en) * 1993-12-08 1995-12-26 Industrial Technology Research Inst. Variable length coding system
US5461422A (en) * 1994-05-23 1995-10-24 Industrial Technology Research Institute Quantizer with automatic pre-threshold
JP3743837B2 (ja) * 1996-06-14 2006-02-08 株式会社大宇エレクトロニクス ランレングス符号器
US5991865A (en) * 1996-12-31 1999-11-23 Compaq Computer Corporation MPEG motion compensation using operand routing and performing add and divide in a single instruction
GB2343969A (en) * 1998-11-20 2000-05-24 Advanced Risc Mach Ltd A data processing apparatus and method for performing an arithemtic operation on a plurality of signed data values

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101169826B1 (ko) 2004-11-17 2012-08-03 톰슨 라이센싱 사전계산된 변환 계수들에 기초한 비트-어큐리트 필름그레인 시뮬레이션 방법
US7893851B2 (en) 2006-11-28 2011-02-22 Nec Corporation Encoding apparatus, method, and processor

Also Published As

Publication number Publication date
US7174047B2 (en) 2007-02-06
US20030190085A1 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
JP2003330911A (ja) 映像データ処理用の単一命令マルチプルデータ(simd)に基づくアルゴリズム
US11309907B2 (en) Guaranteed data compression
JP3830009B2 (ja) データ処理システム及び色変換方法
US11258457B2 (en) Guaranteed data compression
JP5507077B2 (ja) バタフライプロセッサを使用して離散コサイン変換をエンコードしそして計算するための装置及び方法
EP0721623B1 (en) Method for performing fast discrete cosine transforms and fast inverse discrete cosine tranforms using look-up tables
DE10215350A1 (de) Videobild-Komprimierungs/Dekomprimierungs-Hard ware System
EP3588961B1 (en) Guaranteed data compression
EP3588931B1 (en) Guaranteed data compression
US7649939B2 (en) Apparatus and method for decoding and computing a discrete cosine transform using a butterfly processor
US6996595B2 (en) Apparatus and method for consolidating output data from a plurality of processors
JPH10116267A (ja) 演算装置及び情報処理装置
JPH03181229A (ja) 画像処理方法および装置
JP2004178482A (ja) 画像・オーディオデータ処理装置
JPH03181287A (ja) 画像処理方式

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060606