(57)【要約】固定小数点計算を使用して、逆離散コサイン変換の計算を近似する技術が説明されている。これらの技術によれば、スケーリングされた係数のマトリクスに、スケールファクタを乗算することによって生成される。次に、バイアスをかけられた係数のマトリクスは、スケーリングされた係数のマトリクスのＤＣ係数に、中間バイアス値を加算することによって生成される。固定小数点算術演算は、そのあとで、バイアスをかけられた係数のマトリクスに対して変換を適用するために使用される。結果として生じるマトリクスにおける値は、そのあと、ピクセルコンポーネント値のマトリクスを導き出すために右シフトされる。ピクセルコンポーネント値のマトリクスは、そのあとで、ピクセルのマトリクスを作るために結合される。これらの技術によって生成されたピクセルのマトリクスは、理想的な逆離散コサイン変換（“ＩＤＣＴ”）を使用して、伸張されたピクセルのマトリクスに、非常に近似している。
2010505287.tif 000002
【特許請求の範囲】
【請求項１】
スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、前記符号化された係数の８×８マトリクスにおける各係数をスケーリングすることと、
なおＡ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である；
前記スケーリングされた係数のマトリクスを、変換された係数のマトリクスへと変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用することと；
調節された係数のマトリクスを作るために、前記変換された係数のマトリクスにおける変換された係数を右シフトすることと、
なお、前記調節された係数のマトリクスにおける各調節された係数は、理想的な二次元逆離散コサイン変換（「ＩＤＣＴ」）を前記の符号化された係数のマトリクスに対して適用することによって作られるであろう値のマトリクスにおける対応する値を、近似する；
８×８のピクセルのブロックを表示することと、なお、前記８×８のピクセルのブロックにおける各ピクセルは、前記調節された係数のマトリクスにおける１つの調節された係数に基づいたピクセルコンポーネント値を含んでいる；
を備える方法。
【請求項２】
前記固定小数点スケーリングされた一次元変換を繰り返して適用することは、
中間係数のマトリクスを作るために、前記スケーリングされた係数のマトリクスの各行ベクトルに対して前記固定小数点スケーリングされた一次元変換を適用することと、
変換された係数のマトリクスを作るために、前記中間係数のマトリクスの各列ベクトルに対して前記固定小数点スケーリングされた一次元変換を適用することと、
を備える、
請求項１に記載の方法。
【請求項３】
前記８×８のピクセルのブロックを表示することは、ビデオシーケンスにおけるビデオフレームの一部として、前記８×８のピクセルのブロックを表示することを備える、請求項１に記載の方法。
【請求項４】
前記８×８のピクセルのブロックを表示することは、静止画像の一部として、前記８×８のピクセルのブロックを表示することを備える、請求項１に記載の方法。
【請求項５】
前記の係数のマトリクスにおける係数をスケーリングすることは、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，０］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，１］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，２］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，３］で係数をスケーリングすることと、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，４］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，５］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，６］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，７］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，０］で係数をスケーリングすることと、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，１］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，２］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，３］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，４］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，５］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，６］で係数をスケーリングすることと、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，７］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，０］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，１］で係数をスケーリングすることと、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，２］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，３］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，４］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，５］で係数をスケーリングすることと、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，６］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，７］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，０］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，１］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，２］で係数をスケーリングすることと、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，３］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，４］で係数をスケーリングすることと、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，５］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，６］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，７］で係数をスケーリングすることと、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，０］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，１］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，２］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，３］で係数をスケーリングすることと、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，４］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，５］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，６］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，７］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，０］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，１］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，２］で係数をスケーリングすることと、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，３］で係数をスケーリングすることと、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，４］で係数をスケーリングすることと、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，５］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，６］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，７］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，０］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，１］で係数をスケーリングすることと、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，２］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，３］で係数をスケーリングすることと、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，４］で係数をスケーリングすることと、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，５］で係数をスケーリングすることと、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，６］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，７］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，０］で係数をスケーリングすることと、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，１］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，２］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，３］で係数をスケーリングすることと、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，４］で係数をスケーリングすることと、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，５］で係数をスケーリングすることと、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，６］で係数をスケーリングすることと、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，７］で係数をスケーリングすることと、
を備える、
請求項１に記載の方法。
【請求項６】
前記変換を行ベクトルあるいは列ベクトルのいずれかに対して適用することは、
ｘ０とｘ４を加算することによって、値ｘ０’を計算することと；
ｘ０と−ｘ４を加算することによって、値ｘ４’を計算することと；
ｘ２に値αを乗算することによって、値（ｘ２＊α）を計算することと；
ｘ６に値βを乗算することによって、値（ｘ６＊β）を計算することと；
ｘ２に前記値βを乗算することによって、値（ｘ２＊β）を計算することと；
ｘ６に値αを乗算することによって、値（ｘ６＊α）を計算することと；
（ｘ２＊α）と−（ｘ６＊β）を加算することによって、値ｘ２’を計算することと；
（ｘ６＊α）と（ｘ２＊β）を加算することによって、値ｘ６’を計算することと；
ｘ０’とｘ６’を加算することによって、値ｘ０’’を計算することと；
ｘ４’とｘ２’を加算することによって、値ｘ４’’計算することと；
ｘ４’と−ｘ２’を加算することによって、値ｘ２’’を計算することと；
ｘ０’と−ｘ６’を加算することによって、値ｘ６’’を計算することと；
ｘ１と−ｘ７を加算することによって、値ｘ７’を計算することと；
ｘ１とｘ７を加算することによって、値ｘ１’を計算することと；
ｘ３と２の平方根を乗算することによって、値ｘ３’を計算することと；
ｘ５と２の平方根を乗算することによって、値ｘ５’を計算することと；
ｘ７’とｘ５’を加算することによって、値ｘ７’’を計算することと；
ｘ１’と−ｘ３’を加算することによって、値ｘ３’’を計算することと；
ｘ７と−ｘ５’を加算することによって、値ｘ５’’を計算することと；
ｘ３’とｘ１’を加算することによって、値ｘ１’’を計算することと；
ｘ７’’に値εを乗算することによって、値（ｘ７’’＊ε）を計算することと；
ｘ７’’に値ζを乗算することによって、値（ｘ７’’＊ζ）を計算することと；
ｘ３’’に値γを乗算することによって、値（ｘ３’’＊γ）を計算することと；
ｘ３’’に値δを乗算することによって、値（ｘ３’’＊δ）を計算することと；
ｘ５’’に前記値δを乗算することによって、値（ｘ５’’＊δ）を計算することと；
ｘ５’’に前記値γを乗算することによって、値（ｘ５’’＊γ）を計算することと；
ｘ１’’に前記値ζを乗算することによって、値（ｘ１’’＊ζ）を計算することと；
ｘ１’’に前記値εを乗算することによって、値（ｘ１’’＊ε）を計算することと；
（ｘ７’’＊ε）と−（ｘ１’’＊ζ）を加算することによって、値ｘ７’’’を計算することと；
（ｘ３’’＊γ）と−（ｘ５’’＊δ）を加算することによって、値ｘ３’’’を計算することと；
（ｘ５’’＊γ）と（ｘ３’’＊δ）を加算することによって、値ｘ５’’’を計算することと；
（ｘ１’’＊ε）と（ｘ７’’＊ζ）を加算することによって、値ｘ１’’’を計算することと；
ｘ７’’’とｘ０’’を加算することによって、値Ｘ０を計算することと；
ｘ４’’とｘ５’’’を加算することによって、値Ｘ１を計算すること；
ｘ２’’とｘ３’’’を加算することによって、値Ｘ２を計算することと；
ｘ６’’とｘ７’’’を加算することによって、値Ｘ３を計算することと；
ｘ６’’と−ｘ１’’’を加算することによって、値Ｘ４を計算することと；
ｘ２’’と−ｘ３’’’を加算することによって、値Ｘ５を計算することと；
ｘ４’’と−ｘ５’’’を加算することによって、値Ｘ６を計算することと；
ｘ０’’と−ｘ１’’’を加算することによって、値Ｘ７を計算することと；
を備え、
ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７は、行ベクトルあるいは列ベクトルにおいて係数であり、
Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５、Ｘ６およびＸ７は、前記変換の出力値であり、
α＝４１／１２８、β＝９９／１２８、γ＝１１３／１２８、δ＝７１９／４０９６、ε＝１５３３／２０４８、そしてζ＝１／２である、
請求項５に記載の方法。
【請求項７】
前記固定小数点スケーリングされた一次元変換の繰り返し適用を使用することは、乗算あるいは除算の演算を使用することなく、前記行ベクトルのうちの１つあるいは前記列ベクトルのうちの１つにおける係数に対して前記変換を適用すること、を備える、請求項６に記載の方法。
【請求項８】
ｘ１と前記値εを乗算することによる値（ｘ１＊ε）を計算することと、ｘ１と前記値ζによる前記値（ｘ１＊ζ）を計算することは、次のシーケンスの算術演算、すなわち、
値ｙ１を計算することと、ただし、ｙ１＝（ｘ１＞＞９）−ｘ１）；
１つの位置だけｘ３を右シフトすることによって、前記値（ｘ１＊ζ）を計算することと；
（ｙ１＞＞２）からｙ１を差し引くことによって前記値（ｘ１＊ε）を計算することと；
を実行することを備え、
ｘ７と前記値εを乗算することによる値（ｘ７＊ε）を計算することと、ｘ７と前記値ζによる前記値（ｘ７＊ζ）を計算することは、次のシーケンスの算術演算、すなわち、
値ｙ１’を計算することと、ただし、ｙ１’＝（ｘ７＞＞９）−ｘ７；
１つの位置だけｘ７を右シフトすることによって前記値（ｘ７＊ζ）を計算することと；
（ｙ１’＞＞２）からｙ１’を差し引くことによって前記値（ｘ７＊ε）を計算することと；
を実行することを備え、
ｘ１’’と前記値εを乗算することによる値（ｘ１’’＊ε）を計算することと、ｘ１’’と前記値ζによる前記値（ｘ１’’＊ζ）を計算することは、次のシーケンスの算術演算、すなわち、
値ｙ１’’を計算することと、ただし、ｙ１’’＝（ｘ１’’＞＞９）−ｘ１’’）；
１つの位置だけｘ１’’を右シフトすることによって、前記値（ｘ１’’＊ζ）を計算することと；
（ｙ１’’＞＞２）からｙ１’’を差し引くことによって前記値（ｘ１’’＊ε）を計算することと；
を実行することを備え、
ｘ７’’と前記値εを乗算することによる値（ｘ７’’＊ε）を計算することと、ｘ７’’と前記値ζによる前記値（ｘ７’’＊ζ）を計算することは、次のシーケンスの算術演算、すなわち、
値ｙ１’’’を計算することと、ただし、ｙ１’’’＝（ｘ７’’＞＞９）−ｘ７’’；
１つの位置だけｘ７’’を右シフトすることによって前記値（ｘ７’’＊ζ）を計算することと；
（ｙ１’’’＞＞２）からｙ１’’’を差し引くことによって前記値（ｘ７’’＊ε）を計算することと；
を実行することを備える、
請求項７に記載の方法。
【請求項９】
ｘ３と値γを乗算することによる値（ｘ３＊γ）を計算することと、ｘ３と値δを乗算することによる値（ｘ３＊δ）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ２を計算することと、ただし、ｙ２＝（ｘ３＞＞３）−（ｘ３＞＞７）；
値ｙ３を計算することと、ただし、ｙ３＝ｙ２−（ｘ３＞＞１１）；
前記値（ｘ３＊δ）＝ｙ２＋（ｙ３＞＞１）を計算することと；
ｘ３からｙ２を差し引くことによって、前記値（ｘ３＊γ）を計算することと；
を実行することを備えており、
ｘ５と前記値δを乗算することによる値（ｘ５＊δ）を計算することと、ｘ５と前記値γを乗算することによる値（ｘ５＊γ）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ２’を計算することと、ただし、ｙ２’＝（ｘ５＞＞３）−（ｘ５＞＞７）；
値ｙ３’を計算することと、ただし、ｙ３’＝ｙ２’−（ｘ５＞＞１１）；
ｙ２’と（ｙ３’＞＞１）を加算することによって、前記値（ｘ５＊δ）を計算することと；
ｘ５からｙ２’を差し引くことによって、前記値（ｘ５＊γ）を計算することと；
を実行することを備えており、
ｘ３’’と値γを乗算することによる値（ｘ３’’＊γ）を計算することと、ｘ３’’と値δを乗算することによる値（ｘ３’’＊δ）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ２’’を計算することと、ただし、ｙ２’’＝（ｘ３’’＞＞３）−（ｘ３’’＞＞７）；
値ｙ３’’を計算することと、ただし、ｙ３’’＝ｙ２’’−（ｘ３’’＞＞１１）；
前記値（ｘ３’’＊δ）＝ｙ２’’＋（ｙ３’’＞＞１）を計算することと；
ｘ３’’からｙ２’’を差し引くことによって、前記値（ｘ３’’＊γ）を計算することと；
を実行することを備えており、
ｘ５’’と前記値δを乗算することによる値（ｘ５’’＊δ）を計算することと、ｘ５’’と前記値γを乗算することによる値（ｘ５’’＊γ）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ２’’’を計算することと、ただし、ｙ２’’’＝（ｘ５’’＞＞３）−（ｘ５’’＞＞７）；
値ｙ３’’’を計算することと、ただし、ｙ３’’’＝ｙ２’’’−（ｘ５’’＞＞１１）；
ｙ２’’’と（ｙ３’’’＞＞１）を加算することによって前記値（ｘ５’’＊δ）を計算することと；
ｘ５’’からｙ２’’’を差し引くことによって、前記値（ｘ５’’＊γ）を計算することと；
を実行することを備える、
請求項７に記載の方法。
【請求項１０】
ｘ２に値αを乗算することによる値（ｘ２＊α）を計算することと、ｘ２に値βを乗算することによる値（ｘ２＊β）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ１を計算することと、ただし、ｙ１＝ｘ２＋（ｘ２＞＞５）；
値ｙ２を計算することと、ただし、ｙ２＝ｙ１＞＞２；
ｙ２と（ｘ２＞＞４）を加算することによって、前記値（ｘ２＊α）を計算することと；
ｙ１からｙ２を差し引くことによって、前記値（ｘ２＊β）を計算することと；
を実行することを備えており、
ｘ６に値αを乗算することによる値（ｘ６＊α）を計算することと、ｘ６に値βを乗算することによる値（ｘ６＊β）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ１’を計算することと、ただし、ｙ１’＝ｘ２＋（ｘ６＞＞５）；
値ｙ２’を計算することと、ただし、ｙ２’＝ｙ１’＞＞２；
ｙ２’と（ｘ６＞＞４）を加算することによって、前記値（ｘ６＊α）を計算することと；
ｙ１’からｙ２’を差し引くことによって、前記値（ｘ６＊β）を計算することと；
を実行することを備えており、
ｘ２’’に値αを乗算することによる値（ｘ２’’＊α）を計算することと、ｘ２’’に値βを乗算することによる値（ｘ２’’＊β）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ１’’を計算することと、ただし、ｙ１’’＝ｘ２’’＋（ｘ２’’＞＞５）；
値ｙ２’’を計算することと、ただし、ｙ２’’＝ｙ１’’＞＞２；
ｙ２’’と（ｘ２’’＞＞４）を加算することによって、前記値（ｘ２’’＊α）を計算することと；
ｙ１’’からｙ２’’を差し引くことによって、前記値（ｘ２’’＊β）を計算することと；
を実行することを備えており、
ｘ６’’に値αを乗算することによる値（ｘ６’’＊α）を計算することと、ｘ６’’に値βを乗算することによる値（ｘ６’’＊β）を計算することとは、次のシーケンスの演算、すなわち、
値ｙ１’’’を計算することと、ただし、ｙ１’’’＝ｘ２＋（ｘ６’’＞＞５）；
値ｙ２’’’を計算することと、ただし、ｙ２’’’＝ｙ１’’’＞＞２；
ｙ２’’’と（ｘ６’’＞＞４）を加算することによって、前記値（ｘ６’’＊α）を計算することと；
ｙ１’’’からｙ２’’’を差し引くことによって、前記値（ｘ６’’＊β）を計算することと；
を実行することを備える、
請求項７に記載の方法。
【請求項１１】
前記値ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｘ５’、ｘ６’、ｘ７’、ｘ０’’、ｘ１’’、ｘ２’’、ｘ３’’、ｘ４’’、ｘ５’’、ｘ６’’、ｘ７’’、ｘ１’’’、ｘ３’’’、ｘ５’’’、ｘ７’’’、（ｘ２＊α）、（ｘ６＊β）、（ｘ２＊β）、（ｘ６＊α）、（ｘ７’’＊ε）、（ｘ７’’＊ζ）、（ｘ３’’＊γ）、（ｘ３’’＊δ）、（ｘ５’’＊δ）、（ｘ５’’＊γ）、（ｘ１’’＊ζ）、そして、（ｘ１’’＊ε）は、前記固定小数点数の仮数部分においてＰビットを含む前記固定小数点数を使用して、表される、請求項６に記載の方法。
【請求項１２】
Ｐは１０に等しい、請求項１１に記載の方法。
【請求項１３】
前記方法は、前記係数のマトリクスを含むビットストリームを受け取ること、をさらに備える、請求項１に記載の方法。
【請求項１４】
前記方法は、中間バイアス項を前記マトリクスのＤＣ係数に加算すること、をさらに備えており、また前記中間バイアス値項は、２の１２乗に等しい、請求項１に記載の方法。
【請求項１５】
前記方法は、
ピクセルコンポーネント値のマトリクスを生成するために、１３個の位置だけ前記変換された係数のマトリクスにおける各係数を右シフトすることと、そして、
前記ピクセルのブロックにおけるピクセルに、前記ピクセルコンポーネント値のマトリクスにおけるピクセルコンポーネント値を組み込むことによって前記ピクセルのブロックを構成することと、
をさらに備える、
請求項１に記載の方法。
【請求項１６】
前記８×８マトリクスの符号化された係数における各係数をスケーリングすることは、乗算あるいは除算の演算を使用することなく、前記符号化された係数のマトリクスにおける前記係数をスケーリングすること、を備える、請求項１に記載の方法。
【請求項１７】
スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、前記符号化された係数の８×８マトリクスにおける各係数をスケーリングするスケーリングモジュールと、
なお、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である；
前記スケーリングされた係数のマトリクスを変換された係数のマトリクスに変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用する逆変換モジュールと；
調節された係数のマトリクスを作るために、前記変換された係数のマトリクスにおける変換された係数を右シフトする右シフトモジュールと、
なお、前記調節された係数のマトリクスにおける各調節された係数は、前記符号化された係数のマトリクスに対して理想的な二次元逆離散コサイン変換（「ＩＤＣＴ」）を適用することによって作られるであろう値のマトリクスにおいて対応する値を近似する；
８×８のピクセルのブロックを出力する出力モジュールと、なお、前記ピクセルのブロックにおける各ピクセルは、前記調節された係数のマトリクスにおける調節された係数に基づいてピクセルコンポーネント値を含む；
を備えるデバイス。
【請求項１８】
前記逆変換モジュールは、中間係数のマトリクスを作るために、前記固定小数点スケーリングされた一次元変換を、前記スケーリングされた係数のマトリクスの各行ベクトルに対して適用し、変換された係数のマトリクスを作るために、前記固定小数点スケーリングされた一次元変換を、前記中間係数のマトリクスの各列ベクトルに対して適用する、請求項１７に記載のデバイス。
【請求項１９】
前記出力モジュールは、前記８×８のピクセルのブロックを、ビデオシーケンスにおけるビデオの一部として、表示している、請求項１７に記載の装置。
【請求項２０】
前記出力モジュールは、前記８×８のピクセルのブロックを、静止画像の一部として表示している、請求項１９に記載の装置。
【請求項２１】
前記スケーリングモジュールは、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，０］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，１］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，２］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，３］で係数をスケーリングし、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，４］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，５］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，６］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，７］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，０］で係数をスケーリングし、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，１］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，２］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，３］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，４］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，５］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，６］で係数をスケーリングし、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，７］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，０］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，１］で係数をスケーリングし、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，２］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，３］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，４］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，５］で係数をスケーリングし、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，６］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，７］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，０］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，１］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，２］で係数をスケーリングし、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，３］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，４］で係数をスケーリングし、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，５］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，６］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，７］で係数をスケーリングし、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，０］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，１］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，２］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，３］で係数をスケーリングし、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，４］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，５］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，６］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，７］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，０］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，１］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，２］で係数をスケーリングし、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，３］で係数をスケーリングし、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，４］で係数をスケーリングし、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，５］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，６］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，７］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，０］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，１］で係数をスケーリングし、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，２］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，３］で係数をスケーリングし、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，４］で係数をスケーリングし、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，５］で係数をスケーリングし、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，６］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，７］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，０］で係数をスケーリングし、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，１］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，２］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，３］で係数をスケーリングし、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，４］で係数をスケーリングし、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，５］で係数をスケーリングし、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，６］で係数をスケーリングし、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，７］で係数をスケーリングする、
請求項１７に記載のデバイス。
【請求項２２】
前記逆変換モジュールは、
ｘ０とｘ４を加算することによって、値ｘ０’を計算することと；
ｘ０と−ｘ４を加算することによって、値ｘ４’を計算することと；
ｘ２に値αを乗算することによって、値（ｘ２＊α）を計算することと；
ｘ６に値βを乗算することによって、値（ｘ６＊β）を計算することと；
ｘ２に前記値βを乗算することによって、値（ｘ２＊β）を計算することと；
ｘ６に値αを乗算することによって、値（ｘ６＊α）を計算することと；
（ｘ２＊α）と−（ｘ６＊β）を加算することによって、値ｘ２’を計算することと；
（ｘ６＊α）と（ｘ２＊β）を加算することによって、値ｘ６’を計算することと；
ｘ０’とｘ６’を加算することによって、値ｘ０’’を計算することと；
ｘ４’とｘ２’を加算することによって、値ｘ４’’計算することと；
ｘ４’と−ｘ２’を加算することによって、値ｘ２’’を計算することと；
ｘ０’と−ｘ６’を加算することによって、値ｘ６’’を計算することと；
ｘ１および−ｘ７を加算することによって、値ｘ７’を計算することと；
ｘ１とｘ７を加算することによって、値ｘ１’を計算することと；
ｘ３と２の平方根を乗算するとによって、値ｘ３’を計算することと；
ｘ５と２の平方根を乗算するとによって、値ｘ５’を計算することと；
ｘ７’とｘ５’を加算することによって、値ｘ７’’を計算することと；
ｘ１’と−ｘ３’を加算することによって、値ｘ３’’を計算することと；
ｘ７’と−ｘ５’を加算することによって、値ｘ５’’を計算することと；
ｘ３’とｘ１’を加算することによって、値ｘ１’’を計算することと；
ｘ７’’と値εを乗算することによって、値（ｘ７’’＊ε）を計算することと；
ｘ７’’と値ζを乗算することによって、値（ｘ７’’＊ζ）を計算することと；
ｘ３’’と値γを乗算することによって、値（ｘ３’’＊γ）を計算することと；
ｘ３’’と値δを乗算することによって、値（ｘ３’’＊δ）を計算することと；
ｘ５’’と前記値δを乗算することによって、値（ｘ５’’＊δ）を計算することと；
ｘ５’’と前記値γを乗算することによって、値（ｘ５’’＊γ）を計算することと；
ｘ１’’と前記値ζを乗算することによって、値（ｘ１’’＊ζ）を計算することと；
ｘ１’’と前記値εを乗算することによって、値（ｘ１’’＊ε）を計算することと；
（ｘ７’’＊ε）と−（ｘ１’’＊ζ）を加算することによって、値ｘ７’’’を計算することと；
（ｘ３’’＊γ）と−（ｘ５’’＊δ）を加算することによって、値ｘ３’’’を計算することと；
（ｘ５’’＊γ）と（ｘ３’’＊δ）を加算することによって、値ｘ５’’’を計算することと；
（ｘ１’’＊ε）と（ｘ７’’＊ζ）を加算することによって、値ｘ１’’’を計算することと；
ｘ７’’’とｘ０を加算することによって、値Ｘ０を計算することと；
ｘ４’’とｘ５’’’を加算することによって、値Ｘ１を計算すること；
ｘ２’’とｘ３’’’を加算することによって、値Ｘ２を計算することと；
ｘ６’’とｘ７’’’を加算することによって、値Ｘ３を計算することと；
ｘ６’’と−ｘ１’’’を加算することによって、値Ｘ４を計算することと；
ｘ２’’と−ｘ３’’’を加算することによって、値Ｘ５を計算することと；
ｘ４’’と−ｘ５’’’を加算することによって、値Ｘ６を計算することと；
ｘ０’’と−ｘ１’’’を加算することによって、値Ｘ７を計算することと；
によって、行ベクトルあるいは列ベクトルに対して前記変換を適用し、
ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７は、行ベクトルおよび列ベクトルにおける係数であり、
Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５、Ｘ６およびＸ７は、前記変換の出力値であり、
α＝４１／１２８、β＝９９／１２８、γ＝１１３／１２８、δ＝７１９／４０９６、ε＝１５３３／２０４８、そしてζ＝１／２である、
請求項１７に記載のデバイス。
【請求項２３】
前記逆変換モジュールは、乗算あるいは除算演算を使用することなく、前記変換を前記係数のマトリクスに対して適用する、請求項２２に記載のデバイス。
【請求項２４】
前記逆変換モジュールは、次のシーケンスの算術演算、すなわち、
値ｙ１を計算することと、ただし、ｙ１＝（ｘ１＞＞９）−ｘ１；
１つの位置だけｘ３を右シフトすることによって、前記値（ｘ１＊ζ）を計算することと；
（ｙ１＞＞２）からｙ１を差し引くことによって、値（ｘ１＊ε）を計算することと；
を実行することによって、ｘ１と前記値ζによる前記値（ｘ１＊ζ）を計算し、ｘ１と前記値εを乗算することによる前記値（ｘ１＊ε）を計算する、
また、前記逆変換モジュールは、次のシーケンスの算術演算、すなわち、
値ｙ１’を計算することと、ただし、ｙ１’＝（ｘ７＞＞９）−ｘ７；
１つの位置だけｘ７を右シフトすることによって、前記値（ｘ７＊ζ）を計算することと；
（ｙ１’＞＞２）からｙ１’を差し引くことによって、値（ｘ７＊ε）を計算することと；
を実行することによって、ｘ７と前記値ζによる前記値（ｘ７＊ζ）を計算し、ｘ７と前記値εを乗算することによる前記値（ｘ７＊ε）を計算する、
また、前記逆変換モジュールは、次のシーケンスの算術演算、すなわち、
値ｙ１’’を計算することと、ただし、ｙ１’’＝（ｘ１’’＞＞９）−ｘ１’’；
１つの位置だけｘ１’’を右シフトすることによって、前記値（ｘ１’’＊ζ）を計算することと；
（ｙ１’’＞＞２）からｙ１’’を差し引くことによって、値（ｘ１’’＊ε）を計算することと；
を実行することによって、ｘ１’’と前記値ζによる前記値（ｘ１’’＊ζ）を計算し、ｘ１’’と前記値εを乗算することによる前記値（ｘ１’’＊ε）を計算する、
また、前記逆変換モジュールは、次のシーケンスの算術演算、すなわち、
値ｙ１’’’を計算することと、ただし、ｙ１’’’＝（ｘ７’’＞＞９）−ｘ７’’；
１つの位置だけｘ７’’を右シフトすることによって、前記値（ｘ７’’＊ζ）を計算することと；
（ｙ１’’’＞＞２）からｙ１’’’を差し引くことによって、値（ｘ７’’＊ε）を計算することと；
を実行することによって、ｘ７’’と前記値ζによる前記値（ｘ７’’＊ζ）を計算する、ｘ７’’と前記値εを乗算することによる前記値（ｘ７’’＊ε）を計算する、
請求項２３に記載のデバイス。
【請求項２５】
前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ２を計算することと、ただし、ｙ２＝（ｘ３＞＞３）−（ｘ３＞＞７）；
値ｙ３を計算することと、ただし、ｙ３＝ｙ２−（ｘ３＞＞１１）；
値（ｘ３＊δ）＝ｙ２＋（ｙ３＞＞１）を計算することと；
ｘ３からｙ２を差し引くことによって、値（ｘ３＊γ）を計算することと；
を実行することによって、ｘ３と値δを乗算することによる前記値（ｘ３＊δ）を計算し、ｘ３と値γを乗算することによる前記値（ｘ３＊γ）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ２’を計算することと、ただし、ｙ２’＝（ｘ５＞＞３）−（ｘ５＞＞７）；
値ｙ３’を計算することと、ただし、ｙ３’＝ｙ２’−（ｘ５＞＞１１）；
ｙ２’と（ｙ３’＞＞１）を加算することによって、値（ｘ５＊δ）を計算することと；
ｘ５からｙ２’を差し引くことによって、値（ｘ５＊γ）を計算することと；
を実行することによって、ｘ５と前記値γを乗算することによる前記値（ｘ５＊γ）を計算し、ｘ５と前記値δを乗算することによる前記値（ｘ５＊δ）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ２’’を計算することと、ただし、ｙ２’’＝（ｘ３’’＞＞３）−（ｘ３’’＞＞７）；
値ｙ３’’を計算することと、ただし、ｙ３’’＝ｙ２’’−（ｘ３’’＞＞１１）；
値（ｘ３’’＊δ）＝ｙ２’’＋（ｙ３’’＞＞１）を計算することと；
ｘ３’’からｙ２’’を差し引くことによって、値（ｘ３’’＊γ）を計算することと；
を実行することによって、ｘ３’’と値δを乗算することによる前記値（ｘ３’’＊δ）を計算し、ｘ３’’と値γを乗算することによる前記値（ｘ３’’＊γ）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ２’’’を計算することと、ただし、ｙ２’’’＝（ｘ５’’＞＞３）−（ｘ５’’＞＞７）；
値ｙ３’’’を計算することと、ただし、ｙ３’’’＝ｙ２’−（ｘ５’’＞＞１１）；
ｙ２’’’と（ｙ３’’’＞＞１）を加算することによって値（ｘ５’’＊δ）を計算することと；
ｘ５’’からｙ２’’’を差し引くことによって、値（ｘ５’’＊γ）を計算することと；
を実行することによって、ｘ５’’と前記値γを乗算することによる前記値（ｘ５’’＊γ）を計算し、ｘ５’’と前記値δを乗算することによる前記値（ｘ５’’＊δ）を計算する、
請求項２３に記載のデバイス。
【請求項２６】
前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ１を計算することと、ただし、ｙ１＝ｘ２＋（ｘ２＞＞５）；
値ｙ２を計算することと、ただし、ｙ２＝ｙ１＞＞２；
ｙ２と（ｘ２＞＞４）を加算することによって、前記値（ｘ２＊α）を計算することと；
ｙ１からｙ２を差し引くことによって、前記値（ｘ２＊β）を計算することと；
を実行することによって、ｘ２に前記値βを乗算することによる前記値（ｘ２＊β）を計算し、ｘ２に値αを乗算することによる前記値（ｘ２＊α）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ１’を計算することと、ただし、ｙ１’＝ｘ６＋（ｘ６＞＞５）；
値ｙ２’を計算することと、ただし、ｙ２’＝ｙ１’＞＞２；
ｙ２’と（ｘ６＞＞４）を加算することによって、前記値（ｘ６＊α）を計算することと；
ｙ１’からｙ２’を差し引くことによって、前記値（ｘ６＊β）を計算することと；
を実行することによって、ｘ６に前記値βを乗算することによる前記値（ｘ６＊β）を計算し、ｘ６に値αを乗算することによる前記値（ｘ６＊α）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ１’’を計算することと、ただし、ｙ１’’＝ｘ２’’＋（ｘ２’’＞＞５）；
値ｙ２’’を計算することと、ただし、ｙ２’’＝ｙ１’’＞＞２；
ｙ２’’と（ｘ２’’＞＞４）を加算することによって、値（ｘ２’’＊α）を計算することと；
ｙ１’’からｙ２’’を差し引くことによって、値（ｘ２’’＊β）を計算することと；
を実行することによって、ｘ２’’に値βを乗算することによる前記値（ｘ２’’＊β）を計算し、ｘ２’’に値αを乗算することによる前記値（ｘ２’’＊α）を計算する、
また、前記逆変換モジュールは、次のシーケンスの演算、すなわち、
値ｙ１’’’を計算することと、ただし、ｙ１’’’＝ｘ２＋（ｘ６’’＞＞５）；
値ｙ２’’’を計算することと、ただし、ｙ２’’’＝ｙ１’’’＞＞２；
ｙ２’’’と（ｘ６’’＞＞４）を加算することによって、値（ｘ６’’＊α）を計算することと；
ｙ１’’’からｙ２’’’を差し引くことによって、値（ｘ６’’＊β）を計算することと；
を実行することによって、ｘ６’’と値βを乗算することによる前記値（ｘ６’’＊β）を計算し、ｘ６’’と値αを乗算することによる前記値（ｘ６’’＊α）を計算する、
請求項２３に記載のデバイス。
【請求項２７】
前記値ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｘ５’、ｘ６’、ｘ７’、ｘ０’’、ｘ１’’、ｘ２’’、ｘ３’’、ｘ４’’、ｘ５’’、ｘ６’’、ｘ７’’、ｘ１’’’、ｘ３’’’、ｘ５’’’、ｘ７’’’、（ｘ２＊α）、（ｘ６＊β）、（ｘ２＊β）、（ｘ６＊α）、（ｘ７’’＊ε）、（ｘ７’’＊ζ）、（ｘ３’’＊γ）、（ｘ３’’＊δ）、（ｘ５’’＊δ）、（ｘ５’’＊γ）、（ｘ１’’＊ζ）、そして、（ｘ１’’＊ε）は、前記固定小数点数の前記仮数部分においてＰビットを含む固定小数点数を使用して、表される、請求項２２に記載のデバイス。
【請求項２８】
Ｐは１０に等しい、請求項２７に記載のデバイス。
【請求項２９】
前記デバイスは、前記符号化された係数のマトリクスが導き出されるデータを受け取る、ネットワークインタフェースを備える、請求項１７に記載のデバイス。
【請求項３０】
前記デバイスは、ＤＣ係数に対して中間バイアス項を加算する係数バイアシングモジュールを備えており、前記中間バイアス項が２の１２乗に等しい、請求項１７に記載のデバイス。
【請求項３１】
前記デバイスは、
ピクセルコンポーネント値のマトリクスを生成するために、１３個の位置だけ、前記変換された係数のマトリクスにおける各係数を右シフトする右シフトモジュールと、
前記ピクセルのブロックにおけるピクセルへと、前記ピクセルコンポーネント値のマトリクスにおけるピクセルコンポーネント値を組み込むことによって、前記ピクセルのブロックを構成するピクセル再構成モジュールと、
をさらに備える、
請求項３０に記載のデバイス。
【請求項３２】
前記デバイスは、前記ピクセルのブロックを表示するメディアプレゼンテーションユニット、をさらに備える、請求項１７に記載の装置。
【請求項３３】
前記スケーリングモジュールは、乗算あるいは除算の演算を使用することなく、前記係数をスケーリングする、請求項１７に記載のデバイス。
【請求項３４】
スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、符号化された係数の８×８マトリクスにおける各係数をスケーリングするための手段と、
なお、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である；
前記スケーリングされた係数のマトリクスを変換された係数のマトリクスへと変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用するための手段と；
調節された係数のマトリクスを作るために、前記変換された係数のマトリクスにおける変換された係数を右シフトするための手段と、
なお、前記調節された係数のマトリクスにおける各調節された係数は、前記符号化された係数のマトリクスに対して理想的な二次元逆離散コサイン変換（「ＩＤＣＴ」）を適用することによって作られるであろう値のマトリクスにおいて対応する値を近似する；
８×８のピクセルのブロックを表示するための手段と、なお、前記のピクセルのブロックにおける各ピクセルは、調節された係数の前記マトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含んでいる；
を備えるデバイス。
【請求項３５】
前記固定小数点スケーリングされた一次元変換を繰り返して適用するための前記手段は、
中間係数のマトリクスを作るために、前記固定小数点スケーリングされた一次元変換をスケーリングされた係数の前記マトリクスの各行ベクトルに対して適用することと、
変換された係数のマトリクスを作るために、前記固定小数点スケーリングされた一次元変換をスケーリングされた係数の前記マトリクスの各列ベクトルに対して適用することと、
を備える、
請求項３４に記載のデバイス。
【請求項３６】
前記８×８のピクセルのブロックを出力するための前記手段は、前記８×８のピクセルのブロックを、ビデオシーケンスにおけるビデオフレームの一部として、表示すること、を備える、請求項３４に記載のデバイス。
【請求項３７】
前記８×８のピクセルのブロックを出力するための前記手段は、前記８×８のピクセルのブロックを、静止画像の一部として、表示する、請求項３４に記載のデバイス。
【請求項３８】
係数をスケーリングするための前記手段は、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，０］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，１］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，２］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，３］で係数をスケーリングするための手段と、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，４］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，５］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，６］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，７］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，０］で係数をスケーリングするための手段と、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，１］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，２］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，３］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，４］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，５］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，６］で係数をスケーリングするための手段と、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，７］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，０］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，１］で係数をスケーリングするための手段と、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，２］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，３］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，４］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，５］で係数をスケーリングするための手段と、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，６］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，７］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，０］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，１］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，２］で係数をスケーリングするための手段と、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，３］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，４］で係数をスケーリングするための手段と、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，５］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，６］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，７］で係数をスケーリングするための手段と、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，０］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，１］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，２］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，３］で係数をスケーリングするための手段と、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，４］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，５］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，６］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，７］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，０］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，１］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，２］で係数をスケーリングするための手段と、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，３］で係数をスケーリングするための手段と、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，４］で係数をスケーリングするための手段と、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，５］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，６］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，７］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，０］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，１］で係数をスケーリングするための手段と、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，２］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，３］で係数をスケーリングするための手段と、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，４］で係数をスケーリングするための手段と、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，５］で係数をスケーリングするための手段と、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，６］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，７］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，０］で係数をスケーリングするための手段と、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，１］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，２］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，３］で係数をスケーリングするための手段と、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，４］で係数をスケーリングするための手段と、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，５］で係数をスケーリングするための手段と、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，６］で係数をスケーリングするための手段と、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，７］で係数をスケーリングするための手段と、
を備える、
請求項３４に記載のデバイス。
【請求項３９】
前記変換を適用するための前記手段は、
ｘ０とｘ４を加算することによって、値ｘ０’を計算するための手段と；
ｘ０と−ｘ４を加算することによって、値ｘ４’を計算するための手段と；
ｘ２に値αを乗算することによって、値（ｘ２＊α）を計算するための手段と；
ｘ６に値βを乗算することによって、値（ｘ６＊β）を計算するための手段と；
ｘ２に前記値βを乗算することによって、値（ｘ２＊β）を計算するための手段と；
ｘ６に値αを乗算することによって、値（ｘ６＊α）を計算するための手段と；
（ｘ２＊α）と−（ｘ６＊β）を加算することによって、値ｘ２’を計算するための手段と；
（ｘ６＊α）と（ｘ２＊β）を加算することによって、値ｘ６’を計算するための手段と；
ｘ０’とｘ６’を加算することによって、値ｘ０’’を計算するための手段と；
ｘ４’とｘ２’を加算することによって、値ｘ４’’計算するための手段と；
ｘ４’と−ｘ２’を加算することによって、値ｘ２’’を計算するための手段と；
ｘ０’と−ｘ６’を加算することによって、値ｘ６’’を計算するための手段と；
ｘ１および−ｘ７を加算することによって、値ｘ７’を計算するための手段と；
ｘ１とｘ７を加算することによって、値ｘ１’を計算するための手段と；
ｘ３と２の平方根を乗算するとによって、値ｘ３’を計算するための手段と；
ｘ５と２の平方根を乗算するとによって、値ｘ５’を計算するための手段と；
ｘ７’とｘ５’を加算することによって、値ｘ７’’を計算するための手段と；
ｘ１’と−ｘ３’を加算することによって、値ｘ３’’を計算するための手段と；
ｘ７’と−ｘ５’を加算することによって、値ｘ５’’を計算するための手段と；
ｘ３’とｘ１’を加算することによって、値ｘ１’’を計算するための手段と；
ｘ７’’と値εを乗算することによって、値（ｘ７’’＊ε）を計算するための手段と；
ｘ７’’と値ζを乗算することによって、値（ｘ７’’＊ζ）を計算するための手段と；
ｘ３’’と値γを乗算することによって、値（ｘ３’’＊γ）を計算するための手段と；
ｘ３’’と値δを乗算することによって、値（ｘ３’’＊δ）を計算するための手段と；
ｘ５’’と前記値δを乗算することによって、値（ｘ５’’＊δ）を計算するための手段と；
ｘ５’’と前記値γを乗算することによって、値（ｘ５’’＊γ）を計算するための手段と；
ｘ１’’と前記値ζを乗算することによって、値（ｘ１’’＊ζ）を計算するための手段と；
ｘ１’’と前記値εを乗算することによって、値（ｘ１’’＊ε）を計算するための手段と；
（ｘ７’’＊ε）と―（ｘ１’’＊ζ）を加算することによって、値ｘ７’’’を計算するための手段と；
（ｘ３’’＊γ）と―（ｘ５’’＊δ）を加算することによって、値ｘ３’’’を計算するための手段と；
（ｘ５’’＊γ）と（ｘ３’’＊δ）を加算することによって、値ｘ５’’’を計算するための手段と；
（ｘ１’’＊ε）と（ｘ７’’＊ζ）を加算することによって、値ｘ１’’’を計算するための手段と；
ｘ７’’’とｘ０’’を加算することによって、値Ｘ０を計算するための手段と；
ｘ４’’とｘ５’’’を加算することによって、値Ｘ１を計算するための手段と；
ｘ２’’とｘ３’’’を加算することによって、値Ｘ２を計算するための手段と；
ｘ６’’とｘ７’’’を加算することによって、値Ｘ３を計算するための手段と；
ｘ６’’と−ｘ１’’’を加算することによって、値Ｘ４を計算するための手段と；
ｘ２’’と−ｘ３’’’を加算することによって、値Ｘ５を計算するための手段と；
ｘ４’’と−ｘ５’’’を加算することによって、値Ｘ６を計算するための手段と；
ｘ０’’と−ｘ１’’’を加算することによって、値Ｘ７を計算するための手段と；
を備え、
ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７は、行ベクトルおよび列ベクトルにおいて係数であり、
Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，およびＸ７は、前記変換の出力値であり、
α＝４１／１２８、β＝９９／１２８、γ＝１１３／１２８、δ＝７１９／４０９６、ε＝１５３３／２０４８、そしてζ＝１／２である、
請求項３８に記載のデバイス。
【請求項４０】
前記変換の繰り返し適用を使用するための前記手段は、乗算あるいは除算の演算を使用することなく、前記係数のマトリクスへと前記変換を適用する、請求項３９に記載のデバイス。
【請求項４１】
ｘ１と前記値εを乗算することによる値（ｘ１＊ε）を計算するための前記手段と、ｘ１と前記値ζによる前記値（ｘ１＊ζ）を計算するための前記手段は、
値ｙ１を計算するための手段と、ただし、ｙ１＝（ｘ１＞＞９）−ｘ１）；
１つの位置だけｘ３を右シフトすることによって、前記値（ｘ１＊ζ）を計算するための手段と；
（ｙ１＞＞２）からｙ１を差し引くことによって前記値（ｘ１＊ε）を計算するための手段と；
を備え、
ｘ７と前記値εを乗算することによる値（ｘ７＊ε）を計算するための前記手段と、ｘ７と前記値ζによる前記（ｘ７＊ζ）を計算するための前記手段は、
値ｙ１’を計算するための手段と、ただし、ｙ１’＝（ｘ７＞＞９）−ｘ７；
１つの位置だけｘ７を右シフトすることによって前記値（ｘ７＊ζ）を計算するための手段と；
（ｙ１’＞＞２）からｙ１’を差し引くことによって前記値（ｘ７＊ε）を計算するための手段と；
を備え、
ｘ１’’と前記値εを乗算することによる値（ｘ１’’＊ε）を計算するための前記手段と、ｘ１’’と前記値ζによる前記値（ｘ１’’＊ζ）を計算するための前記手段は、
値ｙ１’’を計算するための手段と、ただし、ｙ１’’＝（ｘ１’’＞＞９）−ｘ１’’）；
１つの位置だけｘ１’’を右シフトすることによって、前記値（ｘ１’’＊ζ）を計算するための手段と；
（ｙ１’’＞＞２）からｙ１’’を差し引くことによって前記値（ｘ１’’＊ε）を計算するための手段と；
を備え、
ｘ７’’と前記値εを乗算することによる値（ｘ７’’＊ε）を計算するための前記手段と、ｘ７’’と前記値ζによる前記値（ｘ７’’＊ζ）を計算するための前記手段は、
値ｙ１’’’を計算するための手段と、ただし、ｙ１’’’＝（ｘ７’’＞＞９）−ｘ７’’；
１つの位置だけｘ７’’を右シフトすることによって前記値（ｘ７’’＊ζ）を計算するための手段と；
（ｙ１’’’＞＞２）からｙ１’’’を差し引くことによって前記値（ｘ７’’＊ε）を計算するための手段と；
を備える、
請求項４０に記載のデバイス。
【請求項４２】
ｘ３と値γを乗算することによる値（ｘ３＊γ）を計算するための前記手段と、ｘ３と値δを乗算することによる値（ｘ３＊δ）を計算するための前記手段は、
値ｙ２を計算するための手段と、ただし、ｙ２＝（ｘ３＞＞３）−（ｘ３＞＞７）；
値ｙ３を計算するための手段と、ただし、ｙ３＝ｙ２−（ｘ３＞＞１１）；
前記値（ｘ３＊δ）＝ｙ２＋（ｙ３＞＞１）を計算するための手段と；
ｘ１からｙ２を差し引くことによって、前記値（ｘ３＊γ）を計算するための手段と；
を備え、
ｘ５と前記値δを乗算することによる値（ｘ５＊δ）を計算するための前記手段と、ｘ５と前記値γを乗算することによる値（ｘ５＊γ）を計算するための前記手段は、
値ｙ２’を計算するための手段と、ただし、ｙ２’＝（ｘ５＞＞３）−（ｘ５＞＞７）；
値ｙ３’を計算するための手段と、ただし、ｙ３’＝ｙ２’−（ｘ５＞＞１１）；
ｙ２’と（ｙ３’＞＞１）を加算することによって、前記値（ｘ５＊δ）を計算するための手段と；
ｘ７からｙ２’を差し引くことによって、前記値（ｘ５＊γ）を計算するための手段と；
を備え、
ｘ３’’と値γを乗算することによる値（ｘ３’’＊γ）を計算するための前記手段と、ｘ３’’と値δを乗算することによる値（ｘ３’’＊δ）を計算するための前記手段は、
値ｙ２’’を計算するための手段と、ただし、ｙ２’’＝（ｘ１’’＞＞３）−（ｘ１’’＞＞７）；
値ｙ３’’を計算するための手段と、ただし、ｙ３’’＝ｙ２’’−（ｘ１’’＞＞１１）；
前記値（ｘ１’’＊δ）＝ｙ２’’＋（ｙ３’’＞＞１）を計算するための手段と；
ｘ１’’からｙ２’’を差し引くことによって、前記値（ｘ１’’＊γ）を計算するための手段と；
を備え、
ｘ５’’と前記値δを乗算することによる値（ｘ５’’＊δ）を計算するための前記手段と、ｘ５’’と前記値γを乗算することによる値（ｘ５’’＊γ）をするための前記手段は、
値ｙ２’’’を計算するための手段と、ただし、ｙ２’’’＝（ｘ５’’＞＞３）−（ｘ５’’＞＞７）；
値ｙ３’’’を計算するための手段と、ただし、ｙ３’’’＝ｙ２’’’−（ｘ５’’＞＞１１）；
ｙ２’’’と（ｙ３’’’＞＞１）を加算することによって前記値（ｘ５’’＊δ）を計算するための手段と；
ｘ５’’からｙ２’’’を差し引くことによって、前記値（ｘ５’’＊γ）を計算するための手段と；
を備える、
請求項４０に記載のデバイス。
【請求項４３】
ｘ２に値αを乗算することによる前記値（ｘ２＊α）を計算するための前記手段と、ｘ２に前記値βを乗算することによる前記値（ｘ２＊β）を計算するための前記手段は、
値ｙ１を計算するための手段と、ただし、ｙ１’＝ｘ２＋（ｘ２＞＞５）；
値ｙ２を計算するための手段と、ただし、ｙ２＝ｙ１＞＞２；
ｙ２と（ｘ２＞＞４）を加算することによって、前記値（ｘ２＊α）を計算するための手段と；
ｙ１からｙ２を差し引くことによって、前記値（ｘ２＊β）を計算するための手段と；
を備え、
ｘ６に値αを乗算することによる前記値（ｘ６＊α）を計算するための前記手段と、ｘ６に前記値βを乗算することによる前記値（ｘ６＊β）を計算するための前記手段は、
値ｙ１’を計算するための手段と、ただし、ｙ１’＝ｘ６＋（ｘ６＞＞５）；
値ｙ２’を計算するための手段と、ただし、ｙ２’＝ｙ１’＞＞２；
ｙ２’と（ｘ６＞＞４）を加算することによって、前記値（ｘ２＊α）を計算するための手段と；
ｙ１’からｙ２’を差し引くことによって、前記値（ｘ２＊β）を計算するための手段と；
を備え、
ｘ２’’に値αを乗算することによる値（ｘ２’’＊α）を計算するための前記手段と、ｘ２’’に値βを乗算することによる値（ｘ２’’＊β）を計算するための前記手段は、
値ｙ１’’を計算するための手段と、ただし、ｙ１’’＝ｘ２’’＋（ｘ２’’＞＞５）；
値ｙ２’’を計算するための手段と、ただし、ｙ２’’＝ｙ１’’＞＞２；
ｙ２’’と（ｘ２’’＞＞４）を加算することによって、前記値（ｘ２’’＊α）を計算するための手段と；
ｙ１’’からｙ２’’を差し引くことによって、前記値（ｘ２’’＊β）を計算するための手段と；
を備え、
ｘ６’’と値αを乗算することによる値（ｘ６’’＊α）を計算するための前記手段と、ｘ６’’と値βを乗算することによる値（ｘ６’’＊β）を計算するための前記手段は、
値ｙ１’’’を計算するための手段と、ただし、ｙ１’’’＝ｘ２＋（ｘ６’’＞＞５）；
値ｙ２’’’を計算するための手段と、ただし、ｙ２’’’＝ｙ１’’’＞＞２；
ｙ２’’’と（ｘ６’’＞＞４）を加算することによって、前記値（ｘ６’’＊α）を計算するための手段と；
ｙ１’’’からｙ２’’’を差し引くことによって、前記値（ｘ６’’＊β）を計算するための手段と；
を備える、
請求項４０に記載のデバイス。
【請求項４４】
前記値ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｘ５’、ｘ６’、ｘ７’、ｘ０’’、ｘ１’’、ｘ２’’、ｘ３’’、ｘ４’’、ｘ５’’、ｘ６’’、ｘ７’’、ｘ１’’’、ｘ３’’’、ｘ５’’’、ｘ７’’’、（ｘ２＊α）、（ｘ６＊β）、（ｘ２＊β）、（ｘ６＊α）、（ｘ７’’＊ε）、（ｘ７’’＊ζ）、（ｘ３’’＊γ）、（ｘ３’’＊δ）、（ｘ５’’＊δ）、（ｘ５’’＊γ）、（ｘ１’’＊ζ）、そして、（ｘ１’’＊ε）は、前記固定小数点数の前記仮数部分においてＰビットを含む固定小数点数を使用して、表される、請求項３９に記載のデバイス。
【請求項４５】
Ｐは１０に等しい、請求項４４に記載のデバイス
【請求項４６】
前記デバイスは、前記符号化された係数のマトリクスが導き出される、メディアファイルを受け取るための手段、を備える、請求項３４に記載のデバイス。
【請求項４７】
前記デバイスは、中間バイアス項をＤＣ係数に加算するための手段、をさらに備えており、また、前記中間バイアス値項は、２の１２乗に等しい、請求項３４に記載のデバイス。
【請求項４８】
前記デバイスは、
ピクセルコンポーネントのマトリクスを生成するために、１３個の位置だけ、前記変換された係数のマトリクスにおける各係数を右シフトするための手段と、
前記ピクセルのブロックにおけるピクセルに、前記ピクセルコンポーネント値のマトリクスにおけるピクセルコンポーネント値を組み込むことによって前記ピクセルのブロックを構成するための手段と、
をさらに備える、
請求項３４に記載のデバイス。
【請求項４９】
前記デバイスは、前記ピクセルのブロックを表示するための手段、をさらに備える、請求項３４に記載のデバイス。
【請求項５０】
前記係数をスケーリングするための前記手段は、乗算あるいは除算の演算を使用することなく、スケーリングする、請求項３４に記載のデバイス。
【請求項５１】
インストラクションを備えるコンピュータ可読メディアであって、実施されるとき、前記インストラクションは、プログラマブルプロセッサに、
符号化された係数の８×８マトリクスを受信させ；
スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、前記符号化された係数の８×８マトリクスにおける各係数をスケーリングさせ、
なお、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である；
前記スケーリングされた係数のマトリクスを変換された係数のマトリクスへと変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用させ；
調節された係数のマトリクスを作るために、前記変換された係数のマトリクスにおける変換された係数を右シフトさせ、
なお、前記調節された係数のマトリクスにおける各調節された係数は、前記符号化された係数のマトリクスに理想的な二次元逆離散コサイン変換（「ＩＤＣＴ」）を適用することによって作られるであろう値のマトリクスにおいて対応する値を近似する；
ディスプレイユニットが８×８のピクセルのブロックを表示させる信号を出力させる、なお、前記ピクセルのブロックにおける各ピクセルは、前記調節された係数のマトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含んでいる；
コンピュータ可読メディア。
【請求項５２】
プログラマブルプロセッサに前記固定小数点スケーリングされた一次元変換の繰り返し適用を使用させる、前記インストラクションは、プログラマブルプロセッサに、
中間係数のマトリクスを作るために、前記スケーリングされた係数のマトリクスの各行ベクトルに対して前記変換を適用させ、
変換された係数のマトリクスを作るために、前記中間係数のマトリクスの各列ベクトルに対して前記変換を適用させる、
請求項５１に記載のコンピュータ可読メディア。
【請求項５３】
前記プログラマブルプロセッサに、前記ディスプレイユニットに前記８×８のピクセルのブロックを表示させる信号を、出力させる前記インストラクションは、前記プログラマブルプロセッサに、前記ディスプレイユニットにビデオシーケンスにおけるビデオフレームの一部として前記８×８のピクセルのブロックを表示させる信号を、出力させる、請求項５１に記載のコンピュータ可読メディア。
【請求項５４】
前記プログラマブルプロセッサが、前記ディスプレイユニットに前記８×８のピクセルのブロックを表示させる信号を、出力させる前記インストラクションは、前記プログラマブルプロセッサに、前記ディスプレイユニットに静止画像の一部として前記８×８のピクセルのブロックを表示させる信号を、出力させる、請求項５１に記載のコンピュータ可読メディア。
【請求項５５】
前記プロセッサに前記係数のマトリクスにおける前記係数をスケーリングさせる前記インストラクションは、前記プロセッサに、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，０］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，１］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，２］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，３］で係数をスケーリングさせ、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［０，４］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［０，５］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［０，６］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［０，７］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，０］で係数をスケーリングさせ、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，１］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，２］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，３］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［１，４］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［１，５］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［１，６］で係数をスケーリングさせ、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［１，７］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，０］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，１］で係数をスケーリングさせ、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，２］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，３］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［２，４］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［２，５］で係数をスケーリングさせ、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［２，６］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［２，７］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，０］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，１］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，２］で係数をスケーリングさせ、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，３］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［３，４］で係数をスケーリングさせ、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［３，５］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［３，６］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［３，７］で係数をスケーリングさせ、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，０］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，１］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，２］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，３］で係数をスケーリングさせ、
前記ファクタＡによって前記の符号化された係数のマトリクスの位置［４，４］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［４，５］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［４，６］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［４，７］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，０］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，１］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，２］で係数をスケーリングさせ、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，３］で係数をスケーリングさせ、
前記ファクタＤによって前記の符号化された係数のマトリクスの位置［５，４］で係数をスケーリングさせ、
前記ファクタＪによって前記の符号化された係数のマトリクスの位置［５，５］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［５，６］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［５，７］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，０］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，１］で係数をスケーリングさせ、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，２］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，３］で係数をスケーリングさせ、
前記ファクタＣによって前記の符号化された係数のマトリクスの位置［６，４］で係数をスケーリングさせ、
前記ファクタＩによって前記の符号化された係数のマトリクスの位置［６，５］で係数をスケーリングさせ、
前記ファクタＨによって前記の符号化された係数のマトリクスの位置［６，６］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［６，７］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，０］で係数をスケーリングさせ、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，１］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，２］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，３］で係数をスケーリングさせ、
前記ファクタＢによって前記の符号化された係数のマトリクスの位置［７，４］で係数をスケーリングさせ、
前記ファクタＧによって前記の符号化された係数のマトリクスの位置［７，５］で係数をスケーリングさせ、
前記ファクタＦによって前記の符号化された係数のマトリクスの位置［７，６］で係数をスケーリングさせ、
前記ファクタＥによって前記の符号化された係数のマトリクスの位置［７，７］で係数をスケーリングさせる、
請求項５１に記載のコンピュータ可読メディア。
【請求項５６】
前記プロセッサに行ベクトルあるいは列ベクトルのいずれかに前記変換を適用させる前記インストラクションは、前記プロセッサに、
ｘ０とｘ４を加算することによって、値ｘ０’を計算させ；
ｘ０と−ｘ４を加算することによって、値ｘ４’を計算させ；
ｘ２に値αを乗算することによって、値（ｘ２＊α）を計算させ；
ｘ６に値βを乗算することによって、値（ｘ６＊β）を計算させ；
ｘ２に前記値βを乗算することによって、値（ｘ２＊β）を計算させ；
ｘ６に値αを乗算することによって、値（ｘ６＊α）を計算させ；
（ｘ２＊α）と−（ｘ６＊β）を加算することによって、値ｘ２’を計算させ；
（ｘ６＊α）と（ｘ２＊β）を加算することによって、値ｘ６’を計算させ；
ｘ０’とｘ６’を加算することによって、値ｘ０’’を計算させ；
ｘ４’とｘ２’を加算することによって、値ｘ４’’計算させ；
ｘ４’と−ｘ２’を加算することによって、値ｘ２’’を計算させ；
ｘ０’と−ｘ６’を加算することによって、値ｘ６’’を計算させ；
ｘ１と−ｘ７を加算することによって、値ｘ７’を計算させ；
ｘ１とｘ７を加算することによって、値ｘ１’を計算させ；
ｘ３と２の平方根を乗算するとによって、値ｘ３’を計算させ；
ｘ５と２の平方根を乗算するとによって、値ｘ５’を計算させ；
ｘ７’とｘ５’を加算することによって、値ｘ７’’を計算させ；
ｘ１’と−ｘ３’を加算することによって、値ｘ３’’を計算させ；
ｘ７’と−ｘ５’を加算することによって、値ｘ５’’を計算させ；
ｘ３’とｘ１’を加算することによって、値ｘ１’’を計算させ；
ｘ７’’と値εを乗算することによって、値（ｘ７’’＊ε）を計算させ；
ｘ７’’と値ζを乗算することによって、値（ｘ７’’＊ζ）を計算させ；
ｘ３’’と値γを乗算することによって、値（ｘ３’’＊γ）を計算させ；
ｘ３’’と値δを乗算することによって、値（ｘ３’’＊δ）を計算させ；
ｘ５’’と前記値δを乗算することによって、値（ｘ５’’＊δ）を計算させ；
ｘ５’’と前記値γを乗算することによって、値（ｘ５’’＊γ）を計算させ；
ｘ１’’と前記値ζを乗算することによって、値（ｘ１’’＊ζ）を計算させ；
ｘ１’’と前記値εを乗算することによって、値（ｘ１’’＊ε）を計算させ；
（ｘ７’’＊ε）と−（ｘ１’’＊ζ）を加算することによって、値ｘ７’’’を計算させ；
（ｘ３’’＊γ）と−（ｘ５’’＊δ）を加算することによって、値ｘ３’’’を計算させ；
（ｘ５’’＊γ）と（ｘ３’’＊δ）を加算することによって、値ｘ５’’’を計算させ；
（ｘ１’’＊ε）と（ｘ７’’＊ζ）を加算することによって、値ｘ１’’’を計算させ；
ｘ７’’’とｘ０’’を加算することによって、値Ｘ０を計算させ；
ｘ４’’とｘ５’’’を加算することによって、値Ｘ１を計算させ；
ｘ２’’とｘ３’’’を加算することによって、値Ｘ２を計算させ；
ｘ６’’とｘ７’’’を加算することによって、値Ｘ３を計算させ；
ｘ６’’と−ｘ１’’’を加算することによって、値Ｘ４を計算させ；
ｘ２’’と−ｘ３’’’を加算することによって、値Ｘ５を計算させ；
ｘ４’’と−ｘ５’’’を加算することによって、値Ｘ６を計算させ；
ｘ０’’と−ｘ１’’’を加算することによって、値Ｘ７を計算させる；
ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７は、行ベクトルおよび列ベクトルにおいて係数であり
Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５、Ｘ６およびＸ７は、前記変換の出力値であり、
α＝４１／１２８、β＝９９／１２８、γ＝１１３／１２８、δ＝７１９／４０９６、ε＝１５３３／２０４８、そしてζ＝１／２である、
請求項５５に記載のコンピュータ可読メディア。
【請求項５７】
前記インストラクションは、乗算あるいは除算の演算を使用しないで、前記プロセッサに前記行ベクトルのうちの１つあるいは前記列ベクトルのうちの１つにおける係数に対して前記変換を適用させることによって、前記プロセッサに前記変換を適用させる、請求項５６に記載のコンピュータ可読メディア。
【請求項５８】
前記プログラマブルプロセッサに、
値ｙ１を計算させ、ただし、ｙ１＝（ｘ１＞＞９）−ｘ１）；
１つの位置だけｘ３を右シフトすることによって、前記値（ｘ１＊ζ）を計算させ；
（ｙ１＞＞２）からｙ１を差し引くことによって値（ｘ１＊ε）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ１と前記値ζによる前記値（ｘ１＊ζ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ１と前記値εを乗算することによる前記値（ｘ１＊ε）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ１’を計算させ、ただし、ｙ１’＝（ｘ７＞＞９）−ｘ７；
１つの位置だけｘ７を右シフトすることによって前記値（ｘ７＊ζ）を計算させ；
（ｙ１’＞＞２）からｙ１’を差し引くことによって値（ｘ７＊ε）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ７と前記値ζによる前記値（ｘ７＊ζ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ７と前記値εを乗算することによる前記値（ｘ７＊ε）を計算させる、
また、前記インストラクションは、前記プログラマブルプロセッサに、
値ｙ１’’を計算させ、ただし、ｙ１’’＝（ｘ１’’＞＞９）−ｘ１’’）；
１つの位置だけｘ１’’を右シフトすることによって、前記値（ｘ１’’＊ζ）を計算させ；
（ｙ１’’＞＞２）からｙ１’’を差し引くことによって値（ｘ１’’＊ε）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ１’’と前記値ζによる前記値（ｘ１’’＊ζ）を計算させ、前記プログラマブルプロセッサに、ｘ１’’と値εを乗算することによる前記値（ｘ１’’＊ε）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ１’’’を計算させ、ただし、ｙ１’’’＝（ｘ７’’＞＞９）−ｘ７’’；
１つの位置だけｘ７’’を右シフトすることによって前記値（ｘ７’’＊ζ）を計算させ；
（ｙ１’’’＞＞２）からｙ１’’’を差し引くことによって値（ｘ７’’＊ε）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ７’’と前記値ζによる前記値（ｘ７’’＊ζ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ７’’と前記値εを乗算することによる前記値（ｘ７’’＊ε）を計算させる、
請求項５７に記載のコンピュータ可読メディア。
【請求項５９】
前記プログラマブルプロセッサに、
値ｙ２を計算させ、ただし、ｙ２＝（ｘ３＞＞３）−（ｘ３＞＞７）；
値ｙ３を計算させ、ただし、ｙ３＝ｙ２−（ｘ３＞＞１１）；
値（ｘ３＊δ）＝ｙ２＋（ｙ３＞＞１）を計算させ；
ｘ３からｙ２を差し引くことによって、値（ｘ３＊γ）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ３と値δを乗算することによる前記値（ｘ３＊δ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ３と値γを乗算することによる前記値（ｘ３＊γ）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ２’を計算させ、ただし、ｙ２’＝（ｘ５＞＞３）−（ｘ５＞＞７）；
値ｙ３’を計算させ、ただし、ｙ３’＝ｙ２’−（ｘ５＞＞１１）；
ｙ２’と（ｙ３’＞＞１）を加算することによって、値（ｘ５＊δ）を計算させ；
ｘ５からｙ２’を差し引くことによって、値（ｘ５＊γ）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ５と前記値γを乗算することによる前記値（ｘ５＊γ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ５と前記値δを乗算することによる前記値（ｘ５＊δ）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ２’’を計算させ、ただし、ｙ２’’＝（ｘ３’’＞＞３）−（ｘ３’’＞＞７）；
値ｙ３’’を計算させ、ただし、ｙ３’’＝ｙ２’’−（ｘ３’’＞＞１１）；
値（ｘ３’’＊δ）＝ｙ２’’＋（ｙ３’’＞＞１）を計算させ；
ｘ３’’からｙ２’’を差し引くことによって、値（ｘ３’’＊γ）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ３’’と値δを乗算することによる前記値（ｘ３’’＊δ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ３’’と値γを乗算することによる前記値（ｘ３’’＊γ）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ２’’’を計算させ、ただし、ｙ２’’’＝（ｘ５’’＞＞３）−（ｘ５’’＞＞７）；
値ｙ３’’’を計算させ、ただし、ｙ３’’’＝ｙ２’’’−（ｘ５’’＞＞１１）；
ｙ２’’’と（ｙ３’’’＞＞１）を加算することによって値（ｘ５’’＊δ）を計算させ；
ｘ５’’からｙ２’’’を差し引くことによって、値（ｘ５’’＊γ）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ５’’と前記値γを乗算することによる前記値（ｘ５’’＊γ）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ５’’と前記値δを乗算することによる前記値（ｘ５’’＊δ）を計算させる、
請求項５８に記載のコンピュータ可読メディア。
【請求項６０】
前記プログラマブルプロセッサに、
値ｙ１を計算させ、ただし、ｙ１＝ｘ２＋（ｘ２＞＞５）；
値ｙ２を計算させ、ただし、ｙ２＝ｙ１＞＞２；
ｙ２と（ｘ２＞＞４）を加算することによって、値（ｘ２＊α）を計算させ；
ｙ１からｙ２を差し引くことによって、値（ｘ２＊β）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ２に値βを乗算することによる前記値（ｘ２＊β）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ２に値αを乗算することによる前記値（ｘ２＊α）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ１’を計算させ、ただし、ｙ１’＝ｘ２＋（ｘ６＞＞５）；
値ｙ２’を計算させ、ただし、ｙ２’＝ｙ１’＞＞２；
ｙ２’と（ｘ６＞＞４）を加算することによって、前記値（ｘ６＊α）を計算させ；
ｙ１’からｙ２’を差し引くことによって、値（ｘ６＊β）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ６に値βを乗算することによる前記値（ｘ６＊β）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ６に値αを乗算することによる値（ｘ６＊α）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ１’’を計算させ、ただし、ｙ１’’＝ｘ２’’＋（ｘ２’’＞＞５）；
値ｙ２’’を計算させ、ただし、ｙ２’’＝ｙ１’’＞＞２；
ｙ２’’と（ｘ２’’＞＞４）を加算することによって、値（ｘ２’’＊α）を計算させ；
ｙ１’’からｙ２’’を差し引くことによって、値（ｘ２’’＊β）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ２’’に値βを乗算することによる前記値（ｘ２’’＊β）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ２’’に値αを乗算することによる前記値（ｘ２’’＊α）を計算させる、
また、前記プログラマブルプロセッサに、
値ｙ１’’’を計算させ、ただし、ｙ１’’’＝ｘ６’’＋（ｘ６’’＞＞５）；
値ｙ２’’’を計算させ、ただし、ｙ２’’’＝ｙ１’’’＞＞２；
ｙ２’’’と（ｘ６’’＞＞４）を加算することによって、値（ｘ６’’＊α）を計算させ；
ｙ１’’’からｙ２’’’を差し引くことによって、値（ｘ６’’＊β）を計算させる；
ことによって、前記インストラクションは、前記プログラマブルプロセッサに、ｘ６’’と値βを乗算することによる前記値（ｘ６’’＊β）を計算させ、前記インストラクションは、前記プログラマブルプロセッサに、ｘ６’’と値αを乗算することによる前記値（ｘ６’’＊α）を計算させる、
請求項５８に記載のコンピュータ可読メディア。
【請求項６１】
前記値ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｘ５’、ｘ６’、ｘ７’、ｘ０’’、ｘ１’’、ｘ２’’、ｘ３’’、ｘ４’’、ｘ５’’、ｘ６’’、ｘ７’’、ｘ１’’’、ｘ３’’’、ｘ５’’’、ｘ７’’’、（ｘ２＊α）、（ｘ６＊β）、（ｘ２＊β）、（ｘ６＊α）、（ｘ７’’＊ε）、（ｘ７’’＊ζ）、（ｘ３’’＊γ）、（ｘ３’’＊δ）、（ｘ５’’＊δ）、（ｘ５’’＊γ）、（ｘ１’’＊ζ）、そして、（ｘ１’’＊ε）は、前記固定小数点数の前記仮数部分においてＰビットを含む固定小数点数を使用して、表される、請求項５６に記載のコンピュータ可読メディア。
【請求項６２】
Ｐは１０に等しい、請求項６１に記載の方法。
【請求項６３】
前記インストラクションは、さらに、前記プロセッサに、符号化された係数の前記マトリクスを含むメディアファイルを受信させる、請求項５１に記載のコンピュータ可読メディア。
【請求項６４】
前記インストラクションは、さらに、前記プロセッサに、前記マトリクスのＤＣ係数に中間バイアス項を加えさせ、前記中間バイアス値項は、２の１２乗と等しい、請求項５１に記載のコンピュータ可読メディア。
【請求項６５】
前記インストラクションは、前記プロセッサに、
ピクセルコンポーネントのマトリクスを生成するために、１３個の位置だけ、前記変換された係数のマトリクスにおける各係数を右シフトさせ、そして
前記ピクセルのブロックにおけるピクセルに、前記ピクセルコンポーネント値のマトリクスにおけるピクセルコンポーネント値を組み込むことによって前記ピクセルのブロックを構成させる、請求項５１に記載のコンピュータ可読メディア。
【請求項６６】
乗算あるいは除算の演算を使用することなく、前記プロセッサに、前記符号化された係数のマトリクスにおける前記係数をスケーリングさせることによって、前記インストラクションは、前記プロセッサに、前記符号化された係数をスケーリングさせる、請求項５１に記載のコンピュータ可読メディア。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本願は、２００６年６月２６日に出願された米国仮出願第６０／８１６，６９７号、２００６年８月３０日に出願された米国仮出願第６０／８４１，３６２号、２００６年９月２５日に出願された米国仮出願第６０／８４７，１９４号、２００６年１０月１６日に出願された米国仮出願第６０／８２９，６６９号、２００６年１２月１１日に出願された米国仮出願第６０／８６９，５３０号、２００７年１月８日に出願された米国仮出願第６０／８８３，９３２号、２００７年３月２３日に出願された米国仮出願第６０／８９６，７７８号、および２００７年３月３０日に出願された米国仮出願第６０／９０９，３３５号の利益を主張し、それらの全体の内容は参照によりここに組み込まれる。
【技術分野】
【０００２】
本開示は、コンピュータグラフィックスおよびマルチメディアに関し、特に、グラフィックス、画像、およびビデオ情報の圧縮(compression)に関する。
【背景】
【０００３】
多くの既存の画像およびビデオ符号化標準規格(coding standards)は、高解像度画像およびビデオが比較的コンパクトなファイルあるいはデータストリームとして、保存されることあるいは送信されることを可能にするために、圧縮技術を使用している。そのような符号化基準は、ジョイントフォトグラフィックエキスパートグループ(Joint Photographic Experts Group)（ＪＰＥＧ）、ムービングピクチャエキスパートグループ(Moving Pictures Experts Group)（ＭＰＥＧ）−１、ＭＰＥＧ−２、ＭＰＥＧ−４パート２、Ｈ．２６１、Ｈ．２６３、そして他の画像あるいはビデオ符号化標準規格を含んでいる。
【０００４】
これらの標準規格の多くにしたがって、ビデオフレームは、「空間(spatial)」符号化を使用して、圧縮される。これらのフレームは、オリジナルのフレーム(original frames)（すなわち、ｉ−フレーム）であってもよく、あるいは、動き補償(motion compensation)を使用する時間符号化プロセス(temporal encoding process)によって生成される残留フレーム(residual frames)であってもよい。空間符号化の間に(during)、フレームは、等しいサイズの、ピクセルのブロックへと分解される(broken into)。例えば、非圧縮されたフレームは、１セットの８×８のピクセルのブロックへと分解されることができる。ピクセルの各ブロックについて、ピクセルコンポーネントは、ピクセルコンポーネント値のマトリクスへと分離される(separated)。例えば、ピクセルの各ブロックは、Ｙピクセルコンポーネント値のマトリクス、Ｕピクセルコンポーネント値のマトリクス、そして、Ｖピクセルコンポーネント値のマトリクス、に分割されることができる。この例においては、Ｙピクセルコンポーネント値は、輝度値(luminance values)を示し、ＵおよびＶピクセルコンポーネント値は、クロミナンス値(chrominance values)を表す。
【０００５】
さらに、空間符号化の間に、順方向離散コサイン変換(forward discrete cosine transform)（ＦＤＣＴ）は、符号化されているフレームにおいてピクセルコンポーネント値の各マトリクスに適用される。理想的な一次元ＦＤＣＴは、次のように定義される：
【数１】
2010505287.tif 000003
【０００６】
ここで、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そして係数ｃは、１≦ｋ≦Ｎ−１の場合、次のように与えられる。
【数２】
2010505287.tif 000004
【０００７】
理想的な二次元ＦＤＣＴは、式で次のように定義される：
【数３】
2010505287.tif 000005
【０００８】
ここでは、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そしてｃ（ｉ，ｊ）は、ｃ（ｉ，ｊ）＝ｃ（ｉ）ｃ（ｊ）によって与えられ、そしてｃ（ｋ）は、一次元の場合におけるように定義される。
【０００９】
係数のマトリクスは、ピクセルコンポーネント値のブロックがＦＤＣＴを使用して変換されるとき、生成される。この係数のマトリクスは、そのあと、例えば、ハフマンあるいは算術符号(Huffman or arithmetic codes)を使用して、量子化され、符号化されることができる。ビデオビットストリーム(video bitstream)は、非圧縮された一連のビデオフレーム(an uncompressed series of video frames)における一連のビデオフレーム(a series of video frames)においてカラーコンポーネント値のすべてのブロックに関して、このプロセスを実行することの組み合わされた結果を表している。
【００１０】
非圧縮されたビデオフレームは、このプロセスを逆にすること(reversing)によって、ビデオビットストリームから導き出されることができる。具体的に、ビットストリームにおける係数の各マトリクスへと伸張され(decompressed)、それらの伸張された値は、変換された係数のマトリクスを導き出すために逆量子化される(de-quantized)。逆離散コサイン変換(inverse discrete cosine transform)（「ＩＤＣＴ」）が、そのあと、ピクセルコンポーネント値のマトリクスを導き出すために、変換された係数の各マトリクスに対して適用される。理想的な一次元ＩＤＣＴは、次のように定義される：
【数４】
2010505287.tif 000006
【００１１】
ここで、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そして係数ｃは、１≦ｋ≦Ｎ−１の場合に、次のように与えられる、
【数５】
2010505287.tif 000007
【００１２】
理想的な二次元ＩＤＣＴは、式で次のように定義される：
【数６】
2010505287.tif 000008
【００１３】
ピクセルコンポーネント値の結果として生じるマトリクス(resulting matrixes)は、そのあと、ピクセルのブロックに再アセンブルされ(reassembled)、これらのピクセルのブロックは、復号されたフレーム(decoded frame)を形成するために再びアセンブルされるであろう。復号されたフレームがｉフレームである場合、そのフレームは、今や完全に復号される。しかしながら、もし非圧縮フレームが予測(predictive)あるいは双予測(bi-predictive)フレームである場合には、復号されたフレームは、単に復号された残留フレーム(decoded residual frame)であるにすぎない。完了されたフレーム(completed frame)は、復号されたフレームに関連づけられた動きベクトル(motion vector)を使用して再構成されたフレーム(reconstructed frame)を構成することによって、そして、そのあと、再構成されたフレームを復号された残留フレームに加えることによって、生成される。
【００１４】
理想的な状況下では、どんな情報も、符号化するＦＤＣＴ、あるいは、ピクセルコンポーネント値のブロックを復号するＩＤＣＴを使用することにより、失われない。その結果として、これらの理想的な状況下では、ビデオフレームの復号されたバージョン(decoded version)は、ビデオフレームのオリジナルバージョン(original version)と同一である。しかしながら、ＦＤＣＴあるいはＩＤＣＴを計算することは、ＦＤＣＴｓおよびＩＤＣＴｓの計算が乗算演算の有効数字(significant numbers)および実数の使用を含むので、計算上難しい可能性がある。この理由から、ＦＤＣＴｓおよびＩＤＣＴｓにおいて使用された実数は、限定された精度数(limited precision numbers)を使用して、しばしば近似される。丸め誤差(rounding error)は、実数値を表すために、限定された精度数を使用することから生じる。さらに、量子化(quantization)および逆量子化(dequantization)が、追加の誤差の原因となりうる。
【００１５】
圧縮および伸張プロセスにおける誤差は、オリジナルの非圧縮されたフレーム(original uncompressed frame)と最終の非圧縮されたフレーム(final uncompressed frame)との間で、かなりの差(significant difference)を結果としてもたらす可能性がある。例えば、最終の非圧縮されたフレームにおけるカラーは、オリジナルの非圧縮されたフレームにおけるカラーと異なる可能性がある。さらに、ＩＤＣＴｓのエンコーダのインプリメンテーションと、ＩＤＣＴのデコーダのインプリメンテーションとの間のミスマッチ(mismatch)によって生じた誤差は、予測フレームのシーケンスの符号化および復号の間に、累積する可能性がある。これらの累積された誤差は、一般に、「ＩＤＣＴドリフト(“IDCT drift”)」と呼ばれる。
【発明の概要】
【００１６】
固定小数点計算(fixed-point calculation)を使用して、逆離散コサイン変換の計算を近似する技術が、説明されている。これらの技術にしたがって、スケーリングされた係数のマトリクスは、符号化された係数のマトリクスにおける係数に、スケールファクタ(scale factors)を乗算することによって、生成される。次に、バイアスをかけられた係数のマトリクス(matrixes of biased coefficients)は、スケーリングされた係数のマトリクスのＤＣ係数に、中間バイアス値(midpoint bias value)を加算することによって、生成される。固定小数点算術演算(arithmetic)は、そのあと、バイアスをかけられた係数のマトリクスに対して変換を適用するために、使用される。結果として生じるマトリクスにおける値は、そのあと、ピクセルコンポーネント値のマトリクスを導き出すために、右シフトされる。ピクセルコンポーネント値のマトリクスは、そのあと、ピクセルのマトリクスを作るために、組み合わせられる。これらの技術によって生成されたピクセルのマトリクスは、理想的な逆離散コサイン変換（「ＩＤＣＴ」）を使用して伸張されたピクセルのマトリクスに非常に近似している。
【００１７】
１つの態様においては、方法は、スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、符号化された係数の８×８マトリクスにおける各係数をスケーリングすることを備えている。この方法においては、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である。方法は、スケーリングされた係数のマトリクスを、変換された係数のマトリクスに変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用(repeated applications of a fixed-point scaled one-dimensional transform)を使用すること、をさらに備えている。加えて、方法は、調節された係数のマトリクスを作るために、変換された係数のマトリクスにおける変換された係数を右シフトすること、を備えている。調節された係数(adjusted coefficients)のマトリクスにおける各調節された係数は、符号化された係数のマトリクスに対して理想的な二次元ＩＤＣＴを適用することによって作られるであろう、値のマトリクスにおいて、対応する値を近似する。さらに、方法は、８×８のピクセルのブロックを表示すること、を備えている。８×８のピクセルのブロックにおける各ピクセルは、調節された係数のマトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含む。
【００１８】
別の態様においては、デバイスは、スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、符号化された係数の８×８マトリクスにおける各係数をスケーリングする、スケーリングモジュールを備えており、なお、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である。デバイスは、スケーリングされた係数のマトリクスを、変換された係数のマトリクスに変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用する、逆ベクトル変換モジュール(inverse vector transform module)をさらに備えている。さらに、デバイスは、調節された係数のマトリクスを作るために、変換された係数のマトリクスにおける変換された係数を右シフトする右シフトモジュールを備えている。調節された係数のマトリクスにおける各調節された係数は、符号化された係数のマトリクスに、理想的な二次元ＩＤＣＴを適用することにより作られるであろう、値のマトリクスにおいて対応する値を近似する。デバイスは、８×８のピクセルのブロックを出力する、出力モジュールをさらに備えている。ピクセルのブロックにおける各ピクセルは、調節された係数のマトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含む。
【００１９】
別の態様において、デバイスは、スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、符号化された係数の８×８マトリクスにおける係数をスケーリングするための手段を備えており、なお、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８である。加えて、デバイスは、スケーリングされた係数のマトリクスを、変換された係数のマトリクスに変換する、固定小数スケーリングされた一次元変換の繰り返し適用を使用するための手段、を備えている。さらに、デバイスは、調節された係数のマトリクスを作るために、変換された係数のマトリクスにおける変換された係数を右シフトするための手段、を備えている。調節された係数のマトリクスにおける各調節された係数は、符号化された係数のマトリクスに、理想的な二次元ＩＤＣＴを適用することによって作られるであろう、値のマトリクスにおいて、対応する値を近似する。追加的に、デバイスは、８×８のピクセルのブロックを出力するための手段、を備えている。ピクセルのブロックにおける各ピクセルは、調節された係数のマトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含む。
【００２０】
別の態様においては、本発明は、インストラクションを含んでいるコンピュータ可読メディアに向けられる(directed)。インストラクションは、スケーリングされた係数のマトリクスを作るために、ファクタＡ、ファクタＢ、ファクタＣ、ファクタＤ、ファクタＥ、ファクタＦ、ファクタＧ、ファクタＨ、ファクタＩ、あるいはファクタＪのうちの１つによって、符号化された係数の８×８マトリクスにおける各係数をプログラマブルプロセッサにスケーリングさせ、なお、Ａ＝２０４８、Ｂ＝１７０３、Ｃ＝２６７６、Ｄ＝２４０８、Ｅ＝１４１６、Ｆ＝２２２５、Ｇ＝２００３、Ｈ＝３４９６、Ｉ＝３１４７、そしてＪ＝２８３２である。インストラクションは、さらに、プログラマブルプロセッサが、変換された係数のマトリクスへとスケーリングされた係数のマトリクスを変換するために、固定小数点スケーリングされた一次元変換の繰り返し適用を使用するようにさせる。加えて、インストラクションは、プログラマブルプロセッサが、調節された係数のマトリクスを作るために、変換された係数のマトリクスにおける変換された係数を右シフトするようにさせる。調節された係数のマトリクスにおける各調節された係数は、符号化された係数のマトリクスに、理想的な二次元ＩＤＣＴを適用することによって作られるであろう、値のマトリクスにおいて対応する値を近似する。インストラクションはさらに、プログラマブルプロセッサに、ディスプレイユニットに８×８のピクセルのブロックを表示させる信号を、出力させる。ピクセルのブロックにおける各ピクセルは、調節された係数のマトリクスにおける調節された係数に基づいて、ピクセルコンポーネント値を含んでいる。
【００２１】
いくつかのケースにおいては、コンピュータ可読メディアは、コンピュータプログラムプロダクト(computer program product)の一部分を形成することができ、それは、製造業者(manufacturers)に対して販売され、かつ／または、ビデオ符号化デバイスにおいて使用されていてもよい。コンピュータプログラムプロダクトは、コンピュータ可読メディアを含んでもよく、また、いくつかのケースにおいては、パッケージング材料(packaging materials)をさらに含んでいてもよい。
【００２２】
１つまたは複数の例の詳細が、添付の図面および以下の説明において記述されている。本発明の他の特徴、目的、および利点は、説明および図面から、そして特許請求の範囲から、明らかであろう。
【図面の簡単な説明】
【００２３】
【図１】図１は、メディアファイルを符号化し復号する、例示的なデバイスを図示するブロック図である。
【図２】図２は、符号化モジュールの例示的な詳細を図示するブロック図である。
【図３】図３は、復号モジュールの例示的な詳細を図示するブロック図である。
【図４】図４は、符号化モジュールの例示的な演算を図示するフローチャートである。
【図５】図５は、復号モジュールの例示的な演算を図示するフローチャートである。
【図６】図６は、逆離散コサイン変換（「ＩＤＣＴ」）モジュールの例示的な詳細を図示するブロック図である。
【図７】図７は、逆変換モジュールの例示的な演算を図示するフローチャートである。
【図８】図８は、順方向離散コサイン変換（「ＦＤＣＴ」）モジュールの例示的な詳細を図示するブロック図である。
【図９】図９は、順方向ベクトル変換モジュールの例示的な演算を図示するフローチャートである。
【図１０Ａ】図１０Ａは、例示的な一次元変換を図示するフロー図である。
【図１０Ｂ】図１０Ｂは、例示的なスケーリングされた一次元変換を図示するフロー図である。
【図１１】図１１は、逆変換モジュールによって使用される、例示的なスケーリングされた一次元変換を図示するフロー図である。
【詳細な説明】
【００２４】
図１は、メディアファイルを符号化し復号する例示的なデバイス２、を図示するブロック図である。デバイス２は、パーソナルコンピュータ、モバイル無線電話、サーバ、ネットワーク装置(network appliance)、乗り物と一体化されたコンピュータ(computer integrated into a vehicle)、ビデオゲーミングプラットフォーム(video gaming platform)、ポータブルビデオゲームデバイス(portable video game device)、コンピュータワークステーション(computer workstation)、コンピュータキオスク(computer kiosk)、デジタル標識(digital signage)、メインフレームコンピュータ(mainframe computer)、テレビセットトップボックス(television set-top box)、ネットワーク電話、携帯情報端末(personal digital assistant)、ビデオゲームプラットフォーム、モバイルメディアプレーヤ(mobile media player)、ホームメディアプレーヤ、デジタルビデオプロジェクタ、パーソナルメディアプレーヤ（例えば、ｉＰｏｄ）、あるいは、別のタイプの電子デバイスを備えていてもよい。
【００２５】
デバイス２は、メディアデータを生成するために、メディアソース４を含むことができる。メディアソース４は、画像データを取り込むために、デジタルビデオ、あるいは、スチルフォトカメラ(still photo camera)を備えることができる。メディアソース４は、デバイス２内に構築されてもよいし(may be built into)、あるいは、周辺デバイス(peripheral device)として、デバイス２に取り付けられてもよい。メディアソース４は、音声データを記録するために、マイクロホンをさらに備えてもよい。メディアソース４は、プロセッサ６に対してメディアデータを供給することができる。プロセッサ６は、デジタル信号プロセッサ(digital signal processor)（「ＤＳＰ」）、マイクロプロセッサ、あるいは、何らかの他のタイプの集積回路、を備えることができる。
【００２６】
プロセッサ６がメディアソース４からメディアデータを受け取るとき、符号化モジュール８は、メディアデータを符号化することができる。符号化モジュール８は、プロセッサ６によって実施されるソフトウェアを備えることができる。代替的に、符号化モジュール８は、メディアデータを符号化するプロセッサ６内に専用ハードウェア(specialized hardware)を備えることができる。さらに別の代替で、符号化モジュール８は、メディアデータを符号化するハードウェアおよびソフトウェアのいずれの組み合わせを備えることができる。
【００２７】
符号化モジュール８は、メディアレポジトリ１０において、符号化されたメディアデータを記憶することができる。メディアレポジトリ１０は、フラッシュメモリ、ランダムアクセスメモリ、ハードディスクドライブ、あるいは、何らかの他のタイプの揮発性あるいは不揮発性データストレージユニットを備えることができる。
【００２８】
復号モジュール１２は、メディアレポジトリ１０から符号化されたメディアデータを取り出す(retrieve)ことができる。復号モジュール１２は、プロセッサ６によって実施されたソフトウェアを備えることができる。代替的に、復号モジュール１２は、符号化されたメディアデータを復号するプロセッサ６内に、専用ハードウェアを備えることができる。さらに別の代替で、復号モジュール１２は、符号化されたメディアデータを復号するように協力する(collaborate)ソフトウェアおよびハードウェアの組み合わせを備えることができる。
【００２９】
デバイス２におけるメディアプレゼンテーションユニット１４は、復号モジュール１２によって復号されたメディアデータを表すことができる。例えば、メディアプレゼンテーションユニット１４は、画像、あるいは、ビデオメディアデータを表すコンピュータモニタ、を備えることができる。別の例においては、メディアプレゼンテーションユニット１４は、オーディオメディアデータを表す、オーディオ出力デバイス（例えばスピーカ）を備えることができる。メディアプレゼンテーションユニット１４は、デバイス２へと一体化されてもよいし、あるいは、周辺デバイスとして、デバイス２に対してワイヤードリンク(wired link)またはワイヤレスリンク(wireless link)を介して、接続されてもよい。
【００３０】
デバイス２は、さらにネットワークインタフェース１６を備えることができる。ネットワークインタフェース１６は、ワイヤードリンクあるいはワイヤレスリンクを介して、デバイス２とコンピュータネットワークとの間の通信を容易にすることができる。例えば、ネットワークインタフェース１６は、デバイス２とモバイル電話ネットワークとの間の通信を容易にすることができる。デバイス２は、ネットワークインタフェース１６を介してメディアファイルを受け取ることができる。例えば、デバイス２は、ネットワークインタフェース１６を通して、写真、ビデオクリップ、ストリーミングビデオ（例えば、テレビ、テレビ会議、映画）、オーディオクリップ（例えば、リングトーン(ringtone)、歌、ＭＰ３ファイル）、ストリーミングオーディオ（例えば、デジタルラジオ局、音声呼び出し、など）を受け取ることができる。ネットワークインタフェース１６は、メディアファイルあるいはビデオビットストリームを受け取るとき、ネットワークインタフェース１６は、メディアレポジトリ１０においてメディアファイルあるいはビデオストリームを保存することができる。
【００３１】
ビデオ信号は、ピクチャのシーケンスという点において、説明されることができ、それは、フレーム（全体のピクチャ）あるいは、フィールド（例えば、フレームの奇数あるいは偶数の線のいずれかを備えているピクチャ）を含んでいる。さらに、各フレームあるいはフィールドは、フレームあるいはフィールドの副次的部分(sub-portions)、あるいは、２つ以上のスライス、を含むことができる。ここにおいて使用されているように、単独で、あるいは他の単語との組み合わせのいずれかにおいて、用語「フレーム(frame)」は、ピクチャ、フレーム、フィールドあるいはそれらのスライスを意味することができる。
【００３２】
符号化モジュール８が一連のビデオフレームを符号化するとき、符号化モジュール８は、「ｉフレーム」になるようにビデオフレームのうちのもの(ones)を選択することによって、開始することができる。例えば、符号化モジュール８は、ｉフレームとして、８番目ごとのフレームを選択することができる。ｉフレームは、他のフレームを参照しない(do not reference)フレームである。ｉフレームを選択した後で、符号化モジュール８は、ｉフレームを符号化するために、「空間符号化(spatial encoding)」を使用する。さらに、符号化モジュール８は、残りのフレーム(remaining frames)を符号化するために、「時間符号化(temporal encoding)」を使用することができる。
【００３３】
フレームを符号化する空間符号化を使用するために、符号化モジュール８は、ピクセルのブロックへとフレームデータを分解することができる。例えば、符号化モジュール８は、８ピクセルの幅と、８ピクセルの高さである、ピクセルのブロックへとフレームデータを分解することができる（すなわち、ピクセルの各ブロックは、６４個のピクセルを含む）。符号化モジュール８は、そのあと、ピクセルの各ブロックにおけるピクセルのピクセルコンポーネント値をピクセルコンポーネント値の別個のマトリクスへと分離することができる。ピクセルのピクセルコンポーネント値は、ピクセルの外観(appearance)を特徴づける値である。例えば、各ピクセルは、Ｙピクセルコンポーネント値、Ｃｒピクセルコンポーネント値およびＣｂピクセルコンポーネント値を指定することができる。Ｙピクセルコンポーネント値は、ピクセルの輝度を示し、Ｃｒピクセルコンポーネント値は、ピクセルの赤色クロミナンスを示し、そして、Ｃｂピクセルコンポーネント値は、ピクセルの青色クロミナンスを示す。この例においては、符号化モジュール８がピクセルのブロックのピクセルコンポーネント値を分離するとき、符号化モジュール８は、Ｙピクセルコンポーネント値のマトリクス、Ｃｒピクセルコンポーネント値のマトリクス、そして、Ｃｂピクセルコンポーネント値のマトリクスを得ることができる。
【００３４】
ピクセルコンポーネント値をピクセルコンポーネント値のマトリクスへと分離した後で、符号化モジュール８は、ピクセルコンポーネント値のマトリクスにおけるピクセルコンポーネント値を左シフトすることによって調節された係数のマトリクスを生成する。調節された係数の各マトリクスについては、符号化モジュール８は、調節された係数のマトリクスに一次元変換を繰り返して適用するために、固定小数点算術演算を使用し、それによって、変換された係数のマトリクスを生成する。次に、符号化モジュール８は、１セットのスケールファクタで、変換された係数のマトリクスをスケーリングすることによって、スケーリングされた係数のマトリクスを生成する。スケールファクタの各々は、整数値である。スケールファクタは、一次元変換内のファクタが単純な有理数(rational numbers)を使用して近似されることができる方法で、選択されている。
【００３５】
スケーリングされた係数のマトリクスにおける各スケーリングされた係数は、カラーコンポーネント値の対応するマトリクスに対して、理想的な二次元順方向離散コサイン変換（「ＦＤＣＴ」）を適用することにより作られるであろう、値のマトリクスにおいて、対応する値を近似する。理想的な一次元ＦＤＣＴは、次のように定義される：
【数７】
2010505287.tif 000009
【００３６】
ここで、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そして係数ｃは、１≦ｋ≦Ｎ−１の場合に
【数８】
2010505287.tif 000010
【００３７】
によって与えられる。理想的な二次元ＦＤＣＴは式で次のように定義される：
【数９】
2010505287.tif 000011
【００３８】
ここで、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そしてｃ（ｉ，ｊ）は、ｃ（ｉ，ｊ）＝ｃ（ｉ）ｃ（ｊ）によって与えられ、そしてｃ（ｋ）は、一次元の場合におけるように定義される。
【００３９】
スケーリングされた係数のマトリクスを導き出した後で、符号化モジュール８は、スケーリングされた係数のマトリクスにおける係数を量子化することによって、量子化された係数のマトリクスを生成する。スケーリングされた係数を量子化することは、スケーリングされた係数のマトリクスにおける高頻度係数(high-frequency coefficients)に関連づけられた情報の量を減らすことができる。量子化された係数のマトリクスを生成した後で、符号化モジュール８は、量子化された係数のマトリクスに対して、エントロピ符号化スキーム(entropy encoding scheme)を適用することができる。例えば、符号化モジュール８は、係数のマトリクスにおける量子化された係数に対して、ハフマン符号化スキーム(Huffman encoding scheme)を適用することができる。符号化モジュール８は、量子化された係数のマトリクスのそれぞれに対して、エントロピ符号化スキームを適用するとき、符号化モジュール８は、ビデオビットストリームの一部分として符号化されたマトリクスを出力することができる。
【００４０】
フレームを符号化する時間符号化を使用するために、符号化モジュール８は、フレームを「マクロブロック(macroblocks)」に分割することができる。使用される符号化標準規格によって、これらのマクロブロックは、固定のあるいは可変のサイズであってもよいし、また、オーバーラッピングあるいは非オーバーラッピング(overlapping or non-overlapping)していてもよい。例えば、各マクロブロックは、１６ｘ１６ピクセルのブロックであってもよい。フレームにおける各マクロブロックについては、符号化モジュール８は、１つまたは複数の基準フレーム(reference frame)におけるソースマクロブロック(source macroblock)を識別するように試みることができる。符号化標準規格によって、基準フレームは、ｉフレーム、予測フレーム、あるいは双予測フレーム、であってもよい。符号化モジュール８が基準フレームにおけるソースマクロブロックを識別することができる場合、符号化モジュール８は、マクロブロックについての動きベクトルを記録する。動きベクトルは、識別されたソースマクロブロックに関する、マクロブロックの水平変位(horizontal displacement)を示すｘ値と、識別されたソースマクロブロックに関する、マクロブロックの垂直変位(vertical displacement)を示すｙ値と、を含む。符号化モジュール８は、マクロブロックについてのソースマクロブロックを識別することができない場合、符号化モジュール８は、マクロブロックについての動きベクトルを記録することを必要とされなくてもよい。次に、符号化モジュール８は、「再構成された(reconstructed)」フレームを生成する。再構成されたフレームは、現在のフレーム(current frame)について記録された動きベクトルにしたがって基準フレームからマクロブロックを移動することから生じるであろう、フレームを含む。再構成されたフレームを生成した後で、符号化モジュール８は、現在のフレームの対応するピクセルにおける対応するピクセルコンポーネント値から、再構成されたフレームの各ピクセルにおけるピクセルコンポーネント値を差し引き、「残留(residual)」フレームが結果として生じる。符号化モジュール８は、そのあとで、現在のフレームのマクロブロックについて動きベクトルを圧縮するために、エントロピ符号化スキームを使用することができる。加えて、符号化モジュール８は、残留フレームを圧縮するために上記に説明された空間符号化技術を使用する。
【００４１】
復号モジュール１２は、符号化モジュール８と同様のプロセスを、ただし逆に、実行することができる。例えば、空間復号プロセスを実行するために、復号モジュール１２は、符号化されたビデオビットストリームにおける、量子化された係数の各符号化されたマトリクスに対してエントロピ復号スキームを適用することができる。復号モジュール１２は、そのあと、量子化された係数の各マトリクスにおける係数を逆量子化することができ、それによって、量子化された係数の各マトリクスについて逆量子化された係数のマトリクスを生成する。量子化された係数の各マトリクスについては、復号モジュール１２は、１セットのスケールファクタを使用して、量子化された係数のマトリクスをスケーリングすることによって、スケーリングされた係数のマトリクスを生成する。これらのスケールファクタは、上記に説明された空間符号化プロセスにおいて使用されるのと同様のスケールファクタであってもよい。スケーリングされた係数のマトリクスを生成したあとで、復号モジュール１２は、量子化された係数のマトリクスに対して一次元変換を繰り返して適用するために、固定小数点算術演算を使用し、それによって、変換された係数のマトリクスを生成する。例えば、復号モジュール１２は、スケーリングされた係数のマトリクスにおける各行ベクトルに対して一次元変換を適用することによって、中間係数のマトリクスを生成することができる。この例においては、復号モジュール１２は、そのあと、中間係数のマトリクスにおける各列ベクトルに対して一次元変換を適用することによって、変換された係数のマトリクスを生成することができる。変換された係数のマトリクスを生成した後で、復号モジュール１２は、変換された係数のマトリクスにおける変換された係数を右シフトすることによって、調節された係数のマトリクスを生成する。
【００４２】
調節された係数のマトリクスにおける調節された係数は、逆量子化された係数のマトリクスに対して、理想的な二次元逆離散コサイン変換（「ＩＤＣＴ」）を適用することによって、作られるであろう、値を近似する。理想的な一次元ＩＤＣＴは式で定義される：
【数１０】
2010505287.tif 000012
【００４３】
ここで、ｓは、Ｎ個のオリジナルの値のアレイであり、ｔは、Ｎ個の変換された値のアレイであり、そして係数ｃは、１≦ｋ≦Ｎ−１の場合に、次のように与えられている：
【数１１】
2010505287.tif 000013
【００４４】
理想二次元ＩＤＣＴは式で次のように定義される：
【数１２】
2010505287.tif 000014
【００４５】
これらのピクセルコンポーネント値のブロックは、そのあとで、ピクセルのブロックに再アセンブルされてもよく、これらのピクセルのブロックは、非圧縮されたビデオフレームを形成するために再アセンブルされてもよい。
【００４６】
調節された係数のマトリクスを生成した後で、復号モジュール１２は、そのあとで、調節された係数がピクセルコンポーネント値についての許可された範囲(permitted range)内にあるということを確実にするために、調節された係数のマトリクスにおける調節された係数をクリッピングする(clip)することができる。復号モジュール１２は、そのあとで、ピクセルのブロックに、クリッピングされた係数のマトリクスを再アセンブルされることができる。ピクセルのブロックに、ピクセルコンポーネント値のブロックを再アセンブルされた後で、復号モジュール１２は、ピクセルのブロックを再アセンブルすることによって画像を生成することができる。
【００４７】
予測フレームを復号するために、復号モジュール１２は、予測フレームについての残留イメージにおける量子化された係数のマトリクスを復号するために、上記に説明された空間復号技術を使用することができる。さらに、復号モジュール１２は、予測フレームの動きベクトルを復号するためにエントロピ復号スキームを使用することができる。次に、復号モジュール１２は、動きベクトルにしたがって予測フレームの基準フレームのマクロブロックを「移動させること(moving)」によって、再構成されたフレームを生成することができる。再構成されたフレームを生成した後で、復号モジュール１２は、再構成されたフレームの対応するピクセルにおける対応するピクセルコンポーネント値に、復号された残留フレームの各ピクセルにおけるピクセルコンポーネント値を加える。この追加の結果は、再構成された予測フレームである。
【００４８】
この開示において記述された技術は、いくつかの利点を提供することができる。例えば、これらの技術は固定小数点算術演算を適用するので、これらの技術は、モバイル電話、携帯情報端末、パーソナルメディアプレーヤのような、より小さい、より複雑でないデバイスにおいて、適用されることができる。さらに、これらの技術は、国際電気通信連合電気通信標準化部門(International Telecommunication Union Standardization Sector)（ＩＴＵ−Ｔ）推奨Ｈ．２６１、Ｈ．２６３、Ｈ．２６４、Ｔ．８１（ＪＰＥＧ）を含むフォーマットに対して、国際標準化機構（ＩＳＯ）／ＭＥＣムービングピクチャエキスパートグループ（ＭＰＥＧ）−１、ＭＰＥＧ−２およびＭＰＥＧ−４パート２メディアフォーマット同様、適用されることができる。
【００４９】
図２は符号化モジュール８の詳細の例を図示するブロック図である。符号化モジュール８は、１セットの「モジュール(modules)」を備えることができる。これらのモジュールは、符号化モジュール８のサブセットのソフトウェアインストラクションを備えることができる。代替的に、これらのモジュールは、１つまたは複数の専用ハードウェア(special-purpose hardware)のような、ファームウェアハードウェアを備えることができる。さらに代替的に、これらのモジュールは、ソフトウェアインストラクションと、専用ハードウェアあるいはファームウェアと、を備えることができる。
【００５０】
図２の例で示されているように、符号化モジュール８は、符号化モジュール８がｉフレーム、予測フレームあるいは双予測フレームとしてビデオフレームを処理するかどうかを制御する、フレーム制御モジュール(frame control module)を含む。例えば、符号化モジュール８がビデオフレームを受け取るとき、フレーム制御モジュール２０は、フレームがｉフレーム、予測フレーム、あるいは双予測フレームであるということをビデオフレームに関連づけられたビットストリームフラグが示すかどうかを、決定することができる。フレーム制御モジュール２０が、フレームがｉフレームであるということをビットストリームフラグが示すこと、を決定する場合、フレーム制御モジュール２０は、ビデオフレームがビデオフレーム上で空間符号化をすぐに実行する１セットのモジュールによって処理されるようにすることができる。他方で、もしフレーム制御モジュール２０が、フレームが予測フレームあるいは双予測フレームであるということを決定する場合、フレーム制御モジュール２０は、ビデオフレームが、時間符号化を実行する１セットのモジュールによって処理されるようにする。
【００５１】
符号化モジュール８は、ビデオフレームに対して空間符号化を適用する、一連のモジュールを含んでいる。これらのモジュールは、ブロックスプリッタモジュール(block splitter module)２２、コンポーネント抽出モジュール(component extraction module)２４、順方向変換モジュール２６、量子化モジュール２８、そして、エントロピ符号化モジュール３０、を含んでいる。ブロックスプリッタモジュール２２は、メディアソース４、ネットワークインタフェース１６、あるいは、別のソースから、符号化されていないビデオフレーム(unencoded video frames)を受け取ることができる。ブロックスプリッタモジュール２２が符号化されていないビデオフレームを受け取るとき、ブロックスプリッタモジュール２２は、そのフレームをピクセルのブロックへと分離することができる。ブロックスプリッタモジュール２２は、コンポーネント抽出モジュール２４に対して、ピクセルのブロックを供給することができる。
【００５２】
コンポーネント抽出モジュール２４がピクセルのブロックを受け取るとき、コンポーネント抽出モジュール２４は、各ピクセルのピクセルコンポーネント値を異なるカラーフォーマットへと変換することができる。例えば、コンポーネント抽出モジュール２４は、赤−緑−青(Red-Green-Blue)（ＲＧＢ）カラーフォーマットからＹＣｒＣｂカラーフォーマットへと各ピクセルを変換することができる。ブロックにおけるピクセルを異なるカラーフォーマットへと変換した後で、コンポーネント抽出モジュール２４は、ブロックにおけるピクセルのピクセルコンポーネント値をピクセルコンポーネント値のマトリクスへと分離することができる。例えば、コンポーネント抽出モジュール２４は、１つのブロックのピクセルからＹ値のマトリクス、Ｃｒ値のマトリクス、そしてＣｂ値のマトリクスを抽出することができる。Ｙ値は、ピクセルの輝度(brightness)を指定し、Ｃｒ値は、ピクセルの赤色クロミナンスを指定し、また、Ｃｂ値は、ピクセルの青色クロミナンスを指定する。コンポーネント抽出モジュール２４がピクセルコンポーネント値のマトリクスを抽出するとき、コンポーネント抽出モジュール２４は、離散コサイン変換（ＤＣＴ）モジュール２６にマトリクスのそれぞれを別々に供給することができる。
【００５３】
順方向変換モジュール２６がピクセルコンポーネント値のマトリクスを受け取るとき、順方向変換モジュール２６は、スケーリングされた係数のマトリクスを生成する。このスケーリングされた係数のマトリクスにおける各係数は、ピクセルコンポーネント値のマトリクスを変換する、理想的な順方向離散コサイン変換を使用することによって作られるであろう、係数を近似する。
【００５４】
順方向変換モジュール２６は、ピクセルコンポーネント値のマトリクスに対して一次元変換を適用するために、固定小数点算術演算を使用する。固定小数点算術演算を使用することは、いくつかの状況において有利でありうる。例えば、モバイル電話のような、より小型のデバイスは、浮動小数点算術演算を実行するのに必要とされる浮動小数点ユニット(floating point unit)を含まないかもしれない。順方向変換モジュール２６は、ピクセルコンポーネント値のそれぞれを左シフトすることによって、スケーリングされた係数のマトリクスを生成するプロセスを始めることができる。例えば、順方向変換モジュール２６は、順方向変換モジュール２６が、一次元変換を適用するときに使用する数の固定小数点表現の精度のビットの数（すなわち、仮数ビットの数）と、その変換を適用することから生じる変換された係数をスケーリングすることにより取り除かれる精度のビットの数と、を加えたものだけピクセルコンポーネント値のそれぞれを左シフトすることにより調整された係数のマトリクスを生成することができる。ピクセルコンポーネント値のそれぞれを左シフトした後で、順方向変換モジュール２６は、調節された係数のマトリクスの行ベクトルのそれぞれに関して、変換を実行することができる。調節された係数のマトリクスの行ベクトルのそれぞれに関して離散コサイン変換を実行することは、中間係数のマトリクスを生成する。次に、順方向変換モジュール２６は、中間係数のマトリクスの列ベクトルのそれぞれに関して変換を実行することができる。中間係数のマトリクスの列ベクトルのそれぞれに関して変換を実行することは、変換された係数のマトリクスを結果としてもたらす。
【００５５】
変換された係数のマトリクスを生成した後で、順方向変換モジュール２６は、異なるスケールファクタによって、変換された係数のマトリクスにおいて異なる位置で変換された係数をスケーリングする。下記に説明されるとおり、復号モジュール１２は、逆変換の適用において、これらのスケールファクタの逆数(reciprocals)を使用することができる。順方向変換モジュール２６が、スケールファクタによって、変換された係数をスケーリングすることを終了しているとき、順方向変換モジュール２６は、量子化モジュール２８に対して、スケーリングされた係数の結果として生じるマトリクスを、出力することができる。
【００５６】
量子化モジュール２８が順方向変換モジュール２６から係数のマトリクスを受け取るとき、量子化モジュール２８は、スケーリングされた係数を量子化することができる。量子化モジュール２８は、使用されている符号化基準規格によって様々な方法で、スケーリングされた係数を量子化することができる。例えば、ＭＰＥＧ−４パート２基準規格にしたがって、量子化モジュール２８は、ｉフレームについてのスケーリングされた係数のマトリクスにおける係数を量子化するために、以下の量子化マトリクスを使用することができる：
【表１】
2010505287.tif 000015
【００５７】
さらに、この例においては、量子化モジュール２８は、予測あるいは双予測フレームについてスケーリングされた係数のマトリクスにおける係数を量子化するために、以下の量子化マトリクスを使用することができる。
【表２】
2010505287.tif 000016
【００５８】
量子化モジュール２８が量子化された係数のマトリクスを生成した後で、エントロピ符号化モジュール３０は、エントロピ符号化スキームを使用して、量子化された係数のマトリクスを圧縮することができる。エントロピ符号化スキームを使用して量子化された係数のマトリクスを圧縮するために、エントロピ符号化モジュール３０は、係数のジグザグのパターン(zigzag pattern)をとることによって量子化された係数をベクトルへと構成する(organize)ことができる。言いかえれば、エントロピ符号化モジュール３０は、予測可能値(a predictable)において量子化された係数の一次元ベクトルへと、量子化された係数の二次元マトリクスにおける量子化された係数のすべてを配列する(arrange)ことができる。エントロピ符号化モジュール３０は、そのあとで、量子化された係数のベクトルに対して、ハフマン符号化あるいは算術符号化のような、エントロピ符号化スキームを適用することができる。
【００５９】
符号化モジュール８は、さらにビデオフレームの時間符号化を実行するために、１つまたは複数のモジュールを含んでいる。図２の例で図示されるように、符号化モジュール８は、動き推定モジュール(motion estimation module)３２、再構成されたフレーム生成モジュール(reconstructed frame generation module)３４、そして、残留フレーム生成モジュール３６、を含む。動き推定モジュール３２は、現在のビデオフレームにおける各マクロブロックについて基準画像(reference image)におけるソースマクロブロックを識別することを試みる。動き推定モジュール３２は、マクロブロックと同様なピクセルを含む基準画像におけるマクロブロックをサーチする(search)ことによって、現在のフレームにおけるマクロブロックについてのソースマクロブロックを識別することを試みることができる。動き推定モジュール３２は、現在のフレームにおけるマクロブロックについてソースマクロブロックを識別するために、異なる符号化基準規格にしたがって異なるサイズのエリアをサーチすることができる。例えば、動き推定モジュール３２は、サーチエリアの中心に現在のマクロブックを備える、３２ピクセル幅×３２ピクセル高さのエリアピクセル内でソースマクロブロックについてサーチすることができる。動き推定モジュール３２が現在のフレームにおけるマクロブロックについてのソースマクロブロックを識別するとき、動き推定モジュール３２は、現在のフレームにおけるマクロブロックについての動きベクトルを計算する。現在のフレームにおけるマクロブロックについての動きベクトルは、識別されたソースマクロブロックと現在のフレームのマクロブロックとの間で、水平位置において差を示すｘ値を指定する。動き推定モジュール３２が動きベクトルを計算しているか、あるいは、現在フレームにおける各マクロブロックについてソースマクロブロックを識別することができなくなっているかのいずれかの後で、動き推定モジュール３２は、再構成されたフレーム生成モジュール３４に対して、現在のフレームについての計算された動きベクトルを提供することができる。
【００６０】
再構成されたフレーム生成モジュール３４は、再構成されたフレームを生成するために、動きベクトルと基準フレームを使用することができる。再構成されたフレーム生成モジュール３４は、基準フレームにおけるソースマクロブロックに対して、現在のフレームにおける各マクロブロックについての動きベクトルを適用することによって、再構成されたフレームを生成することができる。実際上、再構成されたフレーム生成モジュール３４は、基準フレームのマクロブロックが、現在のフレームの対応する動きベクトルによって示された位置に「移動」させられているフレームを作る。
【００６１】
残留フレーム生成モジュール３６は、現在のフレームにおける対応するピクセルコンポーネント値から、再構成されたフレームにおけるピクセルコンポーネント値を差し引くことによって、残留フレームを生成することができる。一般に、残留フレームは、再構成されたフレームあるいは現在のフレームのいずれかよりもより少ない情報を含んでいる。残留フレーム生成モジュール３６が残留フレームを生成した後で、残留フレーム生成モジュール３６は、残留フレームを空間的に符号化する(spatially encoding)プロセスを始めるために、ブロックスプリッタモジュール２２に対して残留フレームを提供する。さらに、動き推定モジュール３２は、動きベクトルを圧縮するために、エントロピ符号化モジュール３０に対して、現在のフレームについての動きベクトルを提供することができる。残留フレームが空間的に符号化され、エントロピ符号化モジュール３０が動きベクトルを符号化した後で、ストリーム出力モジュール３８は、ビデオビットストリームの一部として、空間的に符号化された残留フレームと、符号化された動きベクトルと、をフォーマット化することができる。
【００６２】
図３は、復号モジュール１２の例示的な詳細を図示するブロック図である。復号モジュール１２は、エントロピ復号モジュール４４、逆量子化モジュール４６、逆変換モジュール４８、ピクセル再構成モジュール５０、フレームバッファ５１、ブロックコンバイナモジュール５２、フレーム制御モジュール５３、基準フレームストレージモジュール５４、再構成されたフレーム生成モジュール５６、そして、予測フレーム生成モジュール５８を備えることができる。これらのモジュールのいくつかあるいはすべては、復号モジュール１２のサブセットのソフトウェアインストラクションを備えることができる。代替的に、これらのモジュールのいくつかあるいはすべては、専用のハードウェアあるいはファームウェアを備えることができる。さらに代替的に、これらのモジュールは、ソフトウェアインストラクションと、専用ハードウェアあるいはファームウェアと、を備えることができる。
【００６３】
復号モジュール１２がビデオフレームを含んでいるビットストリームを受け取るとき、エントロピ復号モジュール４４は、ビデオフレームにおいて量子化された係数のマトリクスに対して、エントロピ復号スキームを適用することができる。そのビットストリームは、どのエントロピ復号スキームをビットストリームにおける量子化された係数の行列に適用すべきかをエントロピ復号モジュール４４に対して示す値を含むことができる。さらに、エントロピ復号モジュール４４は、ビデオフレームの動きベクトルを復号するために、同じ、あるいは、異なるエントロピ復号スキームを適用することができる。
【００６４】
エントロピ復号モジュール４４がビデオファイルにおける量子化された係数のマトリクスに対してエントロピ復号スキームを適用した後で、逆量子化モジュール４６は、量子化された係数のマトリクスのそれぞれにおける係数を逆量子化することができる。符号化基準によって、逆量子化モジュール４６は、様々な方法で係数を逆量子化することができる。例えば、ＭＰＥＧ−４パート２基準規格にしたがって、逆量子化モジュール４６は、２つの異なる方法で上記にリストアップされた２つの量子化マトリクス(quantization matrix)を使用することができる。第１に、逆量子化モジュール４６は、Ｈ．２６３スタイル逆量子化を実行するために、これらの量子化マトリクスを使用することができる。Ｈ．２６３スタイル逆量子化において、逆量子化モジュール４６は、以下のように、量子化された値ＱＦ［ｖ］［ｕ］から、再構成された係数Ｆ’’［ｖ］［ｕ］を得ることができる：
【数１３】
2010505287.tif 000017
【００６５】
それは、ｑｕａｎｔｉｓｅｒ＿ｓｃａｌｅによるただ１つの乗算を含む。
【００６６】
第２に、逆量子化モジュール４６は、ＭＰＥＧ-１／２スタイル逆量子化を実行するために、これらの量子化マトリクスを使用することができる。ＭＰＥＧ-１／２スタイルの逆量子化においては、逆量子化モジュール４６は、追加の重みマトリクスＷ［ｗ］［ｖ］［ｕ］を使用しており、ここでｗは、どの重みマトリクス(weighting matrix)が使用されているかを示す：
【数１４】
2010505287.tif 000018
【００６７】
下記に詳細に説明されるように、逆変換モジュール４８は、特定のスケールファクタによって逆量子化された係数のそれぞれをスケーリングし、そして、スケーリングされた係数の結果として生じるマトリクスのＤＣ係数に、中間バイアス項を加える。ＤＣ係数は、スケーリングされた係数のマトリクスの位置（０，０）における係数である。次に、逆変換モジュール４８は、変換された係数のマトリクスへとスケーリングされた係数のマトリクスを変換する固定小数点一次元変換の繰り返し適用(repeated applications a fixed-point one-dimensional transform)を使用する。変換された係数のマトリクスへとスケーリングされた係数のマトリクスを変換した後で、逆変換モジュール４８は、調節された係数のマトリクスを作るために、変換された係数のマトリクスにおける各変換された係数を右シフトする。調節された係数のマトリクスにおける各調節された係数は、符号化された係数のマトリクスに対して理想的な二次元ＩＤＣＴを適用することによって作られるであろう値のマトリクスにおいて対応する値を近似する。さらに、逆変換モジュール４８は、クリッピングされた係数のマトリクスを作るために、調節された係数のマトリクスにおける調節された係数のそれぞれをクリッピングすることができる。クリッピングされた係数は、結果として生じるピクセルコンポーネント値フォーマットに適切な範囲内にある、値を有する。例えば、クリッピングされた係数は、[-２５６，２５５]の範囲内に入る値を有することができる。逆変換モジュール４８が調節された係数をクリッピングした後で、結果として生じるクリッピングされた値は、ピクセルコンポーネント値である。
【００６８】
逆変換モジュール４８がピクセルコンポーネント値のマトリクスを出力した後で、ピクセル再構成モジュール５０は、ビデオフレーム内の等価な位置(equivalent position)に関連づけられたピクセルコンポーネント値のマトリクスとピクセルコンポーネント値のマトリクスを組み合わせることによって、ピクセルのマトリクスを生成することができる。例えば、ピクセル再構成モジュール５０は、Ｙピクセルコンポーネント値のマトリクス、Ｃｂピクセルコンポーネント値のマトリクス、そしてＣｒピクセルコンポーネント値のマトリクスを、逆変換モジュール４８から受け取ることができる。これらの３つのマトリクスのそれぞれは、単一の８×８のピクセルのブロックについてのピクセルコンポーネントを含むことができる。ピクセルのそれぞれは、Ｙピクセルコンポーネント値、Ｃｂピクセルコンポーネント値、そしてＣｒピクセルコンポーネント値を含むことができる。ピクセルのマトリクスを生成した後で、ピクセル再構成モジュール５０は、ブロックコンバイナモジュール５２に対して、ピクセルのブロックを提供することができる。
【００６９】
ブロックコンバイナモジュール５２がピクセルのブロックを受け取るとき、ブロックコンバイナモジュール５２がビデオフレームにおけるピクセルのブロックのうちのいくつかあるいはすべてを受け取るまで、ブロックコンバイナモジュール５２は、ピクセルのブロックをバッファリングする(buffer)ことができる。ピクセルのブロックのうちの１つまたは複数を受け取った後で、ブロックコンバイナモジュール５２は、ビデオフレームへとピクセルのブロックを組み合わせすることができ、そして、フレームバッファ５１に対してビデオフレームを出力することができる。ビデオフレームは、それがメディアプレゼンテーションユニット(media presentation unit)５１によって表示されるまで、フレームバッファ５１において保存されることができる。さらに、ブロックコンバイナモジュール５２は、フレームストレージモジュール５４に対して、ビデオフレームを出力することができる。フレームストレージモジュール５４におけるビデオフレームは、予測および双予測フレームの再構成についての基準フレームとして使用されることができる。さらに、フレームストレージモジュール５４におけるビデオフレームは、予測および双予測フレームの再構成において使用される、残留フレームであってもよい。
【００７０】
予測あるいは双予測フレームを再構成するために、復号モジュール１２は、再構成されたフレーム生成モジュール５６を含む。再構成されたフレーム生成モジュール５６は、復号された動きベクトルを、エントロピ復号モジュール４４から受け取る。さらに、再構成されたフレーム生成モジュール５６は、フレームストレージモジュール５４から現在のフレームの基準フレームを取り出す。再構成されたフレーム生成モジュール５６は、そのあと、基準フレームにおける位置から動きベクトルによって示された位置へと、マクロブロックを「移動させる(moves)」。再構成されたフレームは、この方法でマクロブロックを移動させることから生じる。再構成されたフレーム生成モジュール５６が再構成されたフレームを生成した後で、再構成されたフレーム生成モジュール５６は、予測フレーム生成モジュール５８に、再構成されたフレームを提供する。
【００７１】
予測フレーム生成モジュール５８が一時的フレームを受け取るとき、予測フレーム生成モジュール５８は、現在のフレームについての残留フレームを、フレームストレージモジュール５４から取りだすことができる。残留フレームを取り出した後で、予測フレーム生成モジュール５８は、再構成されたフレームと残留フレームの各ピクセルにおいて対応するカラーコンポーネント値を加えることができる。再構成されたビデオフレームは、この付け加えから生じる。次に、予測フレーム生成モジュール５８は、メディアプレゼンテーションユニット１４上で最後の表示(eventual display)についてフレームバッファ５１に対してこの再構成されたフレームを出力することができる。
【００７２】
図４は、符号化モジュール８の演算の一例を図示しているフローチャートである。図４で説明される演算は逐次的なやり方で説明されているけれども、演算は、パイプライン化された方法で実行されることができるということは注目されるべきである。
【００７３】
最初に、符号化モジュール８は、符号化されていないビデオフレームのシーケンスを受け取る（６０）。例えば、符号化モジュール８は、メディアソース４から複数セットのピクセルの形態で符号化されていないフレームのシーケンスを受け取ることができる。符号化モジュール８は、符号化されていないフレームのシーケンスを受け取るとき、符号化モジュール８におけるフレーム制御モジュール２０は、符号化されていないフレームのシーケンスにおける現在のフレームがｉフレームとして、あるいは、予測あるいは双予測フレームとして、符号化されるべきかを決定することができる（６２）。
【００７４】
フレーム制御モジュール２０が、現在のフレームがｉフレームとして符号化されるべきであるということを決定する場合、符号化モジュール８におけるブロックスプリッタモジュール２２は、現在のフレームをピクセルのブロックへと分割する(split)ことができる（６４）。例えば、符号化モジュール８は、２ｘ２、４ｘ４あるいは８ｘ８ピクセルのブロックへと、現在のフレームを分割することができる。
【００７５】
現在のフレームをピクセルのブロックへと分割した後で、コンポーネント抽出モジュール２４は、ピクセルコンポーネント値を、ピクセルのブロックのそれぞれへと分割することができる（６６）。結果として、ピクセルの各ブロックについてのピクセルコンポーネント値の３つのブロック：ピクセルの輝度を表すＹ値のブロック、ピクセルの青色クロミナンスを表すＣｂ値のブロック、そして、ピクセルの赤色クロミナンスを表すＣｒ値のブロック、があってもよい。
【００７６】
符号化モジュール８における順方向変換モジュール２６は、そのあと、ピクセルコンポーネント値のマトリクスのそれぞれについてスケーリングされた係数のマトリクスを生成することができる（６８）。スケーリングされた係数のこれらのマトリクスにおける係数は、ピクセルコンポーネントのマトリクスのそれぞれのものに関し理想的な二次元順方向離散コサイン変換を使用することによって作られるであろう値の近似値(approximation of values)である。
【００７７】
順方向変換モジュール２６がピクセルコンポーネントのマトリクスのそれぞれについてスケーリングされた係数のマトリクスを生成した後で、符号化モジュール８における量子化モジュール２８は、スケーリングされた係数のマトリクスのそれぞれにおける係数を量子化することができる（７０）。いったん量子化モジュール２８がスケーリングされた係数の各マトリクスにおける係数を量子化すると、エントロピ符号化モジュール３０は、量子化された係数のマトリクスのそれぞれに関してエントロピ符号化プロセスを実行することができる（７２）。例えば、符号化モジュール８は、ハフマン符号化スキームあるいは算術符号化スキームを、量子化された係数の各マトリクスに対して適用することができる。エントロピ符号化プロセスは、さらにデータを圧縮した。しかしながら、エントロピ符号化プロセスは、情報の喪失をもたらしはしない。量子化された係数の各マトリクスに関してエントロピ符号化プロセスを実行した後で、符号化モジュール８におけるストリーム出力モジュール３８は、ビデオフレームのシーケンスについてビットストリームに対して、量子化された係数の符号化されたマトリクスを加えることができる（７４）。ストリーム出力３８がビットストリームに対して符号化されたマトリクスを加えた後で、フレーム制御モジュール２０は、現在のフレームがフレームのシーケンスの最後のビデオフレームだったかどうかを決定することができる（７６）。現在のフレームがフレームのシーケンスの最後のフレームである場合（７６の「はい」）、符号化モジュール８は、フレームのシーケンスの符号化を完了する（７８）。一方で、現在のフレームがフレームのシーケンスの最後のフレームではない場合（７６の「いいえ」）、符号化モジュール８は、ループバックし、新しい現在のフレームがｉフレームとして符号化されるべきかどうかを決定することができる（６２）。
【００７８】
現在のフレームがｉフレームとして符号化されるべきではない場合（６２の「いいえ」）、符号化モジュール８における動き推定モジュール３２は、現在のフレームを、１セットのマクロブロックへと分割することができる（８０）。次に、動き推定モジュール３２は、現在のフレームにおけるマクロブロックのそれぞれについて１以上の基準フレームにおいて、ソースマクロブロックを識別することを試みることができる（８２）。動き推定モジュール３２は、そのあと、動き推定モジュール３２がソースマクロブロックを識別することが可能であった現在のフレームにおけるマクロブロックのそれぞれについて、動きベクトルを計算することができる（８４）。動き推定モジュール３２が動きベクトルを計算した後で、再構成されたフレーム生成モジュール３４は、基準フレームにおける識別されたマクロブロックを動きベクトルによって示された位置へと「移動させること」によって、再構成されたフレームを生成するために、動きベクトルを使用する（８６）。残留フレーム生成モジュール３６は、そのあとで、現在のフレームにおける対応するピクセルコンポーネント値から、再構成されたフレームにおけるピクセルコンポーネント値を差し引くことによって、現在のフレームについての残留フレームを生成することができる（８８）。残留フレーム生成モジュール３６が残留フレームを生成した後で、エントロピ符号化モジュール３０は、現在のフレームについて動きベクトルを符号化するために、エントロピ符号化スキームを使用することができる（９０）。さらに、空間符号化は、ステップ（６６）から（７４）を残留フレームに対して適用することにより、残留フレームに対して適用されることができる。
【００７９】
図５は、復号モジュール１２の例示的な演算を図示するフローチャートである。図５で説明された演算は、逐次的なやり方で説明されているけれども、演算がパイプライン化された方法で実行されることができるということは注目されるべきである。
【００８０】
初めに、復号モジュール１２は、符号化されたビデオフレームを受け取る（１００）。符号化されたビデオフレームを受け取った後で、復号モジュール１２におけるエントロピ復号モジュール４４は、符号化されたフレーム内でデータのブロックに関してエントロピ復号プロセスを実行することができる（１０２）。エントロピ復号モジュール４４は、フレームを符号化するために使用されたエントロピ符号化プロセスと等価(equivalent)である、エントロピ復号プロセスを実行することができる。例えば、符号化モジュール８がフレームを符号化するためにハフマン符号化(Huffman encoding)を使用する場合には、エントロピ復号モジュール４４は、フレームを復号するためにハフマン復号(Huffman decoding)を使用する。フレームにおいてデータの各ブロックに対して、エントロピ復号プロセスを適用する結果として、エントロピ復号モジュール４４は、量子化された係数の１セットのマトリクスを作る。
【００８１】
次に、復号モジュール１２における逆量子化モジュール４６は、量子化された係数のマトリクスのそれぞれにおける係数を逆量子化することができる（１０４）。量子化された係数のマトリクスにおける各係数を逆量子化した後で、復号モジュール１２における逆変換モジュール４８は、ピクセルコンポーネント値のマトリクスを生成する（１０６）。ピクセルコンポーネント値のマトリクスのうちの１つにおけるピクセルコンポーネント値は、理想的な二次元逆離散コサイン変換を使用して量子化された係数のマトリクスのうちの１つを変換することによって作られるであろう、対応する値の近似値である。
【００８２】
逆変換モジュール４８が係数のマトリクスのそれぞれについてピクセルコンポーネント値のマトリクスを計算するとき、復号モジュール１２におけるピクセル再構成モジュール５０は、ピクセルのブロックを作るために、ピクセルコンポーネント値の適切なマトリクスを組み合わせることができる（１０８）。例えば、復号モジュール１２は、ＹＣｒＣｂブロックのピクセルを作るために、関連づけられたＣｒ値のブロックと、関連づけられたＣｂ値のブロックと、Ｙ値のブロックを組み合わせることができる。ピクセル再構成モジュール５０がピクセルのブロックを作った後で、ブロックコンバイナモジュール５２は、ピクセルのブロックを、ビデオフレームへと再結合することができる（１１０）。
【００８３】
次に、復号モジュール１２におけるフレーム制御モジュール５３は、現在のフレームがｉフレームかどうかを決定することができる（１１４）。現在のフレームがｉフレームである場合（１１４の「はい」）、ブロックコンバイナモジュール５２は、フレームバッファ５１にビデオフレームを出力することができる（１１４）。一方で、現在のフレームがｉフレームでない（すなわち、現在のフレームは予測あるいは双予測フレームである）場合（１１４の「いいえ」）、エントロピ復号モジュール４４は、現在のフレームの動きベクトルを復号するために、エントロピ復号スキームを使用する（１１６）。次に、再構成されたフレーム生成モジュール５６は、再構成されたフレームを生成するために、フレームストレージモジュール５４における１つまたは複数の基準フレームと、復号された動きベクトルを使用する（１１８）。予測フレーム生成モジュール５８は、そのあとで、再構成されたフレームを生成するために、ブロックコンバイナモジュール５２によって生成されたフレームと、再構成されたフレームと、を使用することができる（１２０）。
【００８４】
図６は、逆変換モジュール４８の例示的な詳細を図示するブロック図である。図６の例で図示されるように、逆変換モジュール４８は、入力モジュール１４０を備えることができる。入力モジュール１４０は、逆量子化モジュール４６から係数のマトリクスを受け取ることができる。例えば、入力モジュール１４０は、係数のマトリクスを保存するデバイス２のメモリモジュールにおいてロケーション(location)を示すポインタ(pointer)を受け取ることができる。代替的に、入力モジュール１４０は、係数のマトリクスを保存する、内部データストラクチャ(internal data structures)を含むことができる。
【００８５】
入力モジュール１４０が係数のマトリクスを受け取るとき、入力モジュール１４０は、逆変換モジュール４８におけるスケーリングモジュール１４２に対して係数のマトリクスを供給することができる。スケーリングモジュール１４２は、スケールファクタのマトリクスにおいて等価の位置(equivalent positions)にある、スケールファクタによって、係数のマトリクスにおけるスケーリング係数を近似する値を生成する演算を実行することができる。例えば、スケーリングモジュール１４２は、スケールファクタのマトリクスにおいて等価の位置にあるスケールファクタによって、係数のマトリクスにおけるスケーリング係数を近似する値を生成するために、乗算演算を実行することができる。別の例においては、スケーリングモジュール１４２は、１以上の付け加えおよびシフト演算を実行することができる。これらのスケールファクタのそれぞれは、８ビット整数値であってもよい。スケールファクタのそれぞれが８ビット整数であるとき、変換が減らされている間に、作られた値のダイナミックな範囲(dynamic range)が減らされる。
【００８６】
スケーリングモジュール１４２がスケーリングされた係数のマトリクスを生成した後で、係数バイアシングモジュール(coefficient biasing module)１４４は、スケーリングされた係数のマトリクスのＤＣ係数に対して、中間バイアス値(midpoint bias value)を加えることによって、バイアスにかけられた係数のマトリクスを生成することができる。上記に説明されるように、マトリクスのＤＣ係数は、典型的に、マトリクスの左上の位置にある係数である。一般に、ＤＣ係数は、マトリクスにおける他の係数の平均値(mean value)を表わしている。
【００８７】
１６ビットプロセッサにおけるＤＣ係数に対して、符号適応バイアス値(sign-adaptive bias value)を加えるために、係数バイアシングモジュール１４４は、以下の式を使用することができる：
ＤＣ＿ｃｏｅｆｆｉｃｉｅｎｔ＝ＤＣ＿ｃｏｅｆｆｉｃｉｅｎｔ＋（１＜＜（Ｐ＋２））
この式で、項（１＜＜（Ｐ＋２））は、中間バイアスを提供するために加えられている。
【００８８】
Ｐは、逆ベクトル変換モジュール１４６によって適用された変換において使用された、固定小数点の仮数ビット（すなわち、小数点の右側に位置するビット(bits to the right of the radix point)）の数を指す、定数である。数２は、右シフトモジュール１４８が、すべての係数を（Ｐ＋３）だけ右シフトすることができるので、Ｐに対して加えられ、ここで、数「３」は、変換を実行することによって精度のビットから生じる。この点を詳細に述べると、もし数ｘが１を（Ｐ＋２）だけ左シフトすることによって生成され、数ｚがｘを（Ｐ＋３）だけ右シフトすることによって生成される場合、ｚ＝１／２である（あるいは２Ｐ＋２／２Ｐ＋３＝２０／２１＝１／２と示される）。したがって、ＤＣ係数に対して（１＜＜（Ｐ＋２））を加えることは、ＤＣ係数に対して（１＜＜（Ｐ＋３））／２を加えることと、同等である。
【００８９】
係数バイアシングモジュール１４４がバイアスをかけられた係数のマトリクスを生成した後で、逆ベクトル変換モジュール１４６は、バイアスをかけられた係数のマトリクスの各行ベクトルに対して固定小数点スケーリングされた一次元変換を適用することによって、中間値のマトリクスを生成することができる。次に、逆ベクトル変換モジュール１４６は、中間値のマトリクスの各列ベクトルに対して固定小数点スケーリングされた一次元変換を適用することによって、変換された係数のマトリクスをコンピュートすることができる。スケーリングされた係数のベクトルに対して固定小数点スケール一次元変換(fixed-point scale one dimensional transform)を適用する例示的な演算は、下の図１０Ｂで示されている。
【００９０】
逆ベクトル変換モジュール１４６が変換された係数のマトリクスを生成した後で、右シフトモジュール１４８は、変換の適用の間に、および、スケーリングの間に、加えられたビットの数に等しい位置の数だけ、変換された係数のマトリクスにおける係数のそれぞれを右シフトすることで、調節された係数のマトリクスを生成することができる。例えば、変換を適用することが追加の３ビットを結果としてもたらし、そして係数をスケーリングすることが追加の１０ビットを加える場合、右シフトモジュール１０８は、係数のそれぞれを１３個（３＋１０）の位置だけ右シフトすることができる。
【００９１】
右シフトモジュール１４８が調節された係数のマトリクスを生成した後で、クリッピングモジュール１５０は、ピクセルコンポーネント値の最大許可範囲(maximum allowable range)に、係数を制限する(restrict)ために、調節された係数のマトリクスにおける係数を「クリッピングすること」によってクリッピングされた係数のマトリクスを生成することができる。例えば、典型的なピクセルコンポーネント値は、−２５６から２５５まで変動することができる。調節された係数のマトリクスが２７０に等しい係数を含んだとする場合には、クリッピングモジュール１５０は、係数を２５５に減らすことによって、最大許可範囲にこの係数を制限するであろう。クリッピングモジュール１５０が係数をクリッピングし終えた後で、これらの係数は、ピクセルコンポーネント値を表すことができる。クリッピングモジュール１５０が、マトリクスにおける係数をクリッピングしたことを終了するとき、クリッピングモジュール１５０は、クリッピングされた係数のマトリクスを出力モジュール１５２に対して提供することができる。
【００９２】
出力モジュール１５２がクリッピングされた係数（今ではピクセルコンポーネント値である）のマトリクスを受け取るとき、出力モジュール１５２は、ピクセルコンポーネント値のマトリクスをピクセル再構成モジュール５０に対して出力することができる。
【００９３】
図７は、逆変換モジュール３４の例示的な演算を図示するフローチャートである。最初に、入力モジュール１４０は、係数のマトリクスを受け取る（１７０）。入力モジュール１４０が係数のマトリクスを受け取るとき、スケーリングモジュール１４２は、係数のマトリクスにおける各値をスケーリングすることができる（１７２）。例えば、スケーリングモジュール１４２は、係数のマトリクスにおける各係数に、スケールファクタのマトリクスにおける均等に位置づけられた値(equivalently positioned values)を乗算する、演算を実行することができる。
【００９４】
係数のマトリクスにおける各係数をスケーリングした後で、係数バイアシングモジュール１４４は、係数のマトリクスのＤＣ係数に対して、中間バイアス値を加えることができる（１７４）。係数バイアシングモジュール１４４がマトリクスのＤＣ係数に対してバイアス値を加えた後で、逆ベクトル変換モジュール１４６は、行カウンタが最大行カウンタよりも少ないかどうかを決定することができる（１７６）。最初に、行カウンタは、ゼロにセットされることができる。最大行カウンタは、係数のマトリクスにおける行の数に等しい静的な値(static value)であってもよい。例えば、係数のマトリクスが８つの行を含む場合、最大行カウンタは８に等しい。
【００９５】
行カウンタが最大行カウンタよりも少ない場合（１７６の「はい」）、逆ベクトル変換モジュール１４６は、行カウンタによって示された係数のマトリクスの行ベクトルに関して、固定小数点スケーリングされた一次元変換をコンピュートすることができる（１７８）。逆ベクトル変換モジュール１４６が係数のマトリクスの行ベクトルに関して変換をコンピュートするとき、逆ベクトル変換モジュール１４６は、中間係数のベクトルで、係数の行ベクトルにおけるオリジナルの係数を置き換えることができる。逆ベクトル変換モジュール１４６が係数のマトリクスの行ベクトルに関して変換をコンピュートした後で、逆ベクトル変換モジュール１４６は、行カウンタを増分する(increment)ことができる（１８０）。逆ベクトル変換モジュール１４６は、そのあと、ループバックし、行カウンタが最大行カウンタよりも少ないかどうかをふたたび決定することができる（１７６）。
【００９６】
行カウンタが最大行カウンタよりも少なくない（すなわち、それより大きいあるいは等しい）場合（１７６の「いいえ」）、逆ベクトル変換モジュール１４６は、列カウンタが最大列カウンタよりも少ないかどうかを決定することができる（１８２）。最初に、列カウンタはゼロにセットされることができる。最大列カウンタは、係数のマトリクスにおいて列の数に等しい静的な値とすることができる。例えば、係数のマトリクスが８つの列を含む場合、最大列カウンタは、８に等しい。
【００９７】
列カウンタが最大列カウンタよりも少ない場合（１８２の「はい」）、逆ベクトル変換モジュール１４６は、列カウンタによって示された中間係数のマトリクスの列ベクトルに関して一次元変換を計算することができる（１８４）。逆変換モジュール３４が中間係数の列ベクトルに関して変換を計算するとき、逆変換モジュール３４は、変換された係数のベクトルで列ベクトルにおいて中間係数を置き換える。
【００９８】
逆ベクトル変換モジュール１４６が係数のマトリクスの列ベクトルに関して変換を計算した後で、逆ベクトル変換モジュール１４６は、列カウンタを増分することができる（１８６）。逆ベクトル変換モジュール１４６は、そのあとで、ループバックし、列カウンタが最大列カウンタよりも少ないかどうかをふたたび決定することができる（１８２）。
【００９９】
列カウンタが最大列カウンタよりも少なくない（すなわち、それより大きいあるいは等しい）場合（１８２の「いいえ」）、右シフトモジュール１４８は、マトリクスにおける変換された係数のそれぞれを右シフトすることができる（１８８）。右シフトモジュール１４８が係数を右シフトするとき、右シフトモジュール１４８は、ある数の位置(a certain number of positions)だけ右に係数をシフトすることができる。マトリクスにおける第２の中間係数のそれぞれを右シフトした結果は、調節された値のマトリクスである。右シフトモジュール１４８が変換された係数のそれぞれを右シフトした後で、クリッピングモジュール１５０は、調節された係数がピクセルコンポーネント値について適切な範囲内にあるということを確実にするために、調節された係数をクリッピングすることができる（１９０）。例えば、クリッピングモジュール１５０は、調節された係数が範囲−２５６から２５５内にあるということを確実にするために、調節された係数をクリッピングすることができる。クリッピングモジュール１５０が調節された係数をクリッピングすることを終了するとき、出力モジュール１５２は、ピクセルコンポーネント値の結果として生じるマトリクスを出力することができる（１９２）。
【０１００】
図８は、順方向変換モジュール２６の例示的な詳細を図示するブロック図である。図８の例で図示されるように、順方向変換モジュール２６は、コンポーネント抽出モジュール２４からピクセルコンポーネント値のマトリクスを受け取る、入力モジュール２１０を備える。入力モジュール２１０がピクセルコンポーネント値のマトリクスを受け取るとき、入力モジュール２１０は、左シフトモジュール２１２に、ピクセルコンポーネント値のマトリクスを提供することができる。左シフトモジュール２１２は、順方向変換を実行することによって取り除かれた仮数ビットの数を差し引いた(minus)順方向変換を実行する間に、順方向ベクトル変換モジュール２１４が使用する値において使用された仮数ビットの数だけ、左にピクセルコンポーネント値のマトリクスにおいてピクセルコンポーネント値のすべてをシフトすることができる。例えば、順方向変換を実行している間に１０個の仮数ビットが値において使用され、順方向離散コサイン変換を実行することによって３つの仮数ビットが取り除かれる場合、左シフトモジュール２１２は、７個の位置だけ、左にピクセルコンポーネント値をシフトすることができる。別の例において、順方向変換を実行している間に３つの仮数ビットが値において使用され、順方向変換を実行することによって３つの仮数ビットが取り除かれる場合、左シフトモジュール２１２は、０個の位置だけ、左にピクセルコンポーネント値をシフトすることができる。
【０１０１】
左シフトモジュール２１２がピクセルコンポーネント値をシフトした後で、順方向ベクトル変換モジュール２１４は、中間値のマトリクスを作るために、ピクセルコンポーネント値のマトリクスにおける各列ベクトルに対して順方向変換を適用することができる。次に、順方向ベクトル変換モジュール２１４は、変換された係数のマトリクスを作るために、中間値のマトリクスにおける各行ベクトルに対して順方向変換を適用することができる。順方向ベクトル変換モジュール２１４がベクトルに順方向変換を適用するとき、順方向ベクトル変換モジュール２１４は、以下で図１１において説明される順方向変換を適用することができる。以下で図１１において説明される変換は、図１０Ａで説明される変換の逆であるということを注目してください。
【０１０２】
順方向ベクトル変換モジュール２１４が変換された係数のマトリクスを作った後で、スケーリングモジュール２１６は、変換された係数のマトリクスにおける各変換された係数に対して、スケーリングファクタを適用することができる。スケーリングモジュール２１６は、逆変換モジュール４８におけるスケーリングモジュール１４２によって使用されたスケーリングファクタの逆数を適用することができる。例えば、もしスケーリングモジュール１４２が３個の位置だけ左に係数をシフトすることによって、係数をスケーリングする場合、スケーリングモジュール２１６は、３個の位置だけ右に変換された値をシフトすることによって変換値をスケーリングすることができる。別の例において、もしスケーリングモジュール１４２が、係数にスケールファクタのマトリクスにおける個別のスケールファクタを乗算することによって、係数をスケーリングする場合、スケーリングモジュール２１６は、変換された値にスケールファクタのマトリクスにおけるスケールファクタを乗算することによって、そしてそのあとで、マグニチュードだけ、右に結果として生じる値をシフトすることによって、変換された値をスケーリングすることができる。丸め誤差を減らすために、スケーリングモジュール２１６は、変換された値にスケールファクタを乗算した後で、変換された値のそれぞれに対して中間バイアス値を加えることができる。例えば、スケーリングモジュール２１６は、スケーリングされた係数のマトリクスを生成するために、以下の式を使用することができる：
Ｆ［ｖ］［ｕ］＝（Ｆ’［ｖ］［ｕ］＊Ｓ［ｖ］［ｕ］＋（１＜＜１９）−（（Ｆ’［ｖ］［ｕ］＞＝０）？０：１））＞＞２０
ここでは、ｖ＝０．．７、ｕ＝０．．７であり、また、Ｓ［ｖ］［ｕ］は、スケールファクタのマトリクスにおけるエントリ(entry)であり、Ｆは、スケーリングされた係数のマトリクスであり、そしてＦ’は、変換された係数のマトリクスである。
【０１０３】
スケーリングモジュール２１６がスケーリングされた係数のマトリクスを生成した後で、出力モジュール２１８は、量子化モジュール２８に対して、係数のマトリクスを出力することができる。
【０１０４】
図９は、順方向変換モジュール２６の例示的な演算を図示するフローチャートである。初めに、入力モジュール２１０は、ピクセルコンポーネント値のマトリクスを受け取る（２３０）。入力モジュール１４０がピクセルコンポーネント値のマトリクスを受け取るとき、左シフトモジュール２１２は、ピクセルコンポーネント値のマトリクスにおける各値をアップシフトすること(upshifting)によって、調節された係数のマトリクスを生成することができる（２３２）。例えば、左シフトモジュール２１２は、１０個の位置だけ、左に係数のすべてをシフトすることができる。この例において、順方向ベクトル変換モジュール２１４が、小数部分において１０ビットを使用して、数(numbers)が符号化される固定小数点算術演算を使用することができるので、左シフトモジュール２１２は、１０個の位置だけ、右に係数のすべてをシフトすることができる。したがって、１０個の位置だけ左に係数をシフトすることによって、左シフトモジュール２１２は、１０の仮数ビットを備えた固定小数点数に、ピクセルコンポーネント値を効率的に変換する。
【０１０５】
調節された値のマトリクスにおいて各ピクセルコンポーネント値を左シフトした後で、順方向ベクトル変換モジュール２１４は、列カウンタが最大行カウンタよりも少ないかどうかを決定することができる（２３４）。初めに、列カウンタはゼロにセットされることができる。最大列カウンタは、調節された係数のマトリクスにおける列の数に等しい静的な値であってもよい。例えば、もし調節された係数のマトリクスが８つの列を含む場合、最大列カウンタは８に等しい。
【０１０６】
列カウンタが最大列カウンタよりも少ない場合（２３４の「はい」）、順方向ベクトル変換モジュール２１４は、列カウンタによって示された列ベクトルに関して一次元順方向変換をコンピュートすることができる（２３６）。順方向ベクトル変換モジュール２１４が調節された係数のマトリクスの列ベクトルに関して順方向変換をコンピュートするとき、順方向ベクトル変換モジュール２１４は、中間係数で、列ベクトルにおけるオリジナルの調節された係数を置換える。順方向ベクトル変換モジュール２１４が調節された係数のマトリクスの列ベクトルに関して順方向変換をコンピュートした後で、順方向ベクトル変換モジュール２１４は、列カウンタを増分することができる（２３８）。順方向ベクトル変換モジュール２１４は、そのあと、ループバックし、そして、列カウンタが最大列カウンタよりも少ないかどうかをふたたび決定することができる（２３４）。
【０１０７】
列カウンタが最大列カウンタよりも少なくない（すなわち、それより大きいあるいは等しい）場合（２３４の「いいえ」）、順方向ベクトル変換モジュール２１４は、行カウンタが最大行カウンタよりも少ないかどうかを決定することができる（２４０）。初めに、行カウンタはゼロにセットされることができる。最大行カウンタは、係数のマトリクスにおける行の数に等しい静的な値であってもよい。例えば、係数のマトリクスが８つの行を含む場合、最大行カウンタは８に等しい。
【０１０８】
行カウンタが最大行カウンタよりも少ない場合（２４０の「はい」）、順方向ベクトル変換モジュール２１４は、行カウンタによって示された行ベクトルに関して一次元離散コサイン変換を計算することができる（２４２）。順方向ベクトル変換モジュール２１４がマトリクスの行ベクトルに関して順方向変換をすでにコンピュートしたので、係数のマトリクスは、中間係数を含む(contains)。順方向ベクトル変換モジュール２１４が中間係数の行ベクトルに関して順方向変換をコンピュートするとき、順方向ベクトル変換モジュール２１４は、変換された係数で、列ベクトルにおいて中間係数を置き換える。
【０１０９】
順方向ベクトル変換モジュール２１４が係数のマトリクスの行ベクトルに関して離散コサイン変換をコンピュートした後で、順方向ベクトル変換モジュール２１４は、行カウンタを増分することができる（２４４）。順方向ベクトル変換モジュール２１４は、そのあと、ループバックし、そして、行カウンタが最大行カウンタよりも少ないかどうかを決定することができる（２４０）。
【０１１０】
行カウンタが最大行カウンタよりも少なくない（すなわち、それより大きいあるいは等しい）場合（２４０の「いいえ」）、スケーリングモジュール２１６は、変換された係数のマトリクスにおける各変換された係数をスケーリングすることができる（２４６）。スケーリングモジュール２１６が係数をスケーリングするとき、スケーリングモジュール２１６は、ある数の位置だけ右に係数をシフトすることができる。スケーリングモジュール２１６が変換された係数のそれぞれをスケーリングした後で、出力モジュール２１８は、スケーリングされた係数の結果として生じるマトリクスを出力することができる（２４８）。
【０１１１】
図１０Ａは、例示的な一次元変換２６０を図示するフロー図である。図１０Ａにおいて、値Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，およびＸ７は、入力係数を表し、ｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，およびｘ７は、変換２６０の出力値を表す。「＋」の記号を含む丸の後の直線に関連づけられた値は、丸を指す矢印に関連づけられた値を加えた結果である。「ｘ」記号を含む丸の後の直線に関連づけられた値は、丸の隣に位置づけられた係数と、丸を通過する直線に関連づけられた値とを乗算した結果である。矢印の隣の記号「−」は、矢印に関連づけられた値の否定(negation)を表す。例えば、値「１０」が「−」記号の前に矢印に関連づけられる場合、値「−１０」は、「−」記号の後で矢印に関連づけられる。
【０１１２】
変換２６０は、７つの一意的な無理因数(unique irrational factors)による１４の乗算を使用する。便宜上、この開示は、α、β、γ、δ、ε、ζおよびηとして、これらの唯一の無理因数を意味する。変換２６０において、
【数１５】
2010505287.tif 000019
【０１１３】
ある。α、β、γ、δ、ε、ζおよびηがすべて無理数の数であることに注意してください。α、β、γ、δ、ε、ζおよびηが無理数であるので、α、β、γ、δ、ε、ζおよびηのかなり正確な表示(tolerably accurate representations)は、比較的大きいビットの数を必要とする可能性がある。結果的に、典型的な符号化基準規格の要件でコンプライアンス(compliance)は、変換２６０をコンピュートするために仮数ビットの比較的小さい数で固定小数点数(fixed-point numbers)を使用するときに、可能でないかもしれない。さらに、α、β、γ、δ、ε、ζおよびηが、無理数であるので、シフト演算、加算演算、そして、あるいは、引き算演算のシーケンスに対して、α、β、γ、δ、ε、ζおよびηによる乗算を減らすことは可能でないかもしれない。
【０１１４】
図１０Ｂは、例示的な一次元スケーリングされた変換２７０を図示するフロー図である。変換２７０は、変換２６０のスケーリングされたバージョンである。変換２７０において、値ηは、変換２６０から取り除かれ、値（１／ψ）は、変換２６０の値γ、δ、εおよびζから取り除かれ、値（１／φ）は、変換２６０の値αおよびβから取り除かれる。（１／ψ）および（１／φ）が、これらの係数から取り除かれるとき、次のベクトルは、変換２７０の前にＸ０−Ｘ７が乗算される、値を表わしている：
【数１６】
2010505287.tif 000020
【０１１５】
（１／ψ）および（１／φ）がα、β、γ、δ、εおよびζから取り除かれるとき、α、β、γ、δ、ε、ζおよびηの値は変更することができる。便宜上、（１／ψ）および（１／φ）の後の値α、β、γ、δ、εおよびζは、取り除かれ、α’、β’、γ’、δ’、ε’およびζ’と呼ばれる。
【数１７】
2010505287.tif 000021
【０１１６】
対応するファクタψあるいはφによって、α,β,γ,δ,ε,およびζの積を近似するように、値α’、β’、γ’、δ’、ε’およびζ’は、様々な方法で選択されることができる。一般に、ファクタψおよびφの値と、値α’、β’、γ’、δ’、ε’、ζ’は、変換２７０の全体的な設計を変更することなく、選択されることができる。これらのファクタのよい値を見つけることは、異なる複雑さ／精度トレードオフでマルチプルのソリューション(multiple solutions)を生み出す可能性のある複合最適化問題(complex optimization problem)を表わすことができる。例えば、α’、β’、γ’、δ’、ε’およびζ’のいくつかの値による乗算は、他よりも計算するのにより便利であることができる。さらに、それらはスケールファクタについての基礎(basis)として役立つのでψとφの値は重要である可能性があり、そして、いくつかのスケールファクタは、他よりも計算するのにより便利であることができる。例えば、α’，β’，γ’，δ’，ε’，およびζ’についての第１セットの値による乗算は、一連の加算演算、より短い一連の加算演算であるシフト演算、および、α’，β’，γ’，δ’，ε’およびζ’についての異なるセットの値についてのシフト演算、によって近似されることができる。例えば、ψ＝１．３５２７０８０５８且つφ＝０．９５９７０００９１であるとき、γ’は、６７９／５１２として近似されることができる。３つのシフト演算および３つの加算演算は、６７９／５１２による乗算を近似するのに必要とされてもよい。さらに、ψ＝１．１８１０８４２且つφ＝０．８０１２５１９５３のとき、γ’は１８９８１／１６３８４として近似されることができる。４つのシフト演算および４つの加算演算は、１８９８１／１６３８４による乗算を近似するのに必要とされることができる。
【０１１７】
スケールファクタのマトリクスは、同じベクトルによって、ベクトルの転置行列
【数１８】
2010505287.tif 000022
【０１１８】
を乗算することによってコンピュートされることができる。このことは、８ｘ８マトリクスの値を結果としてもたらす：
【表３】
2010505287.tif 000023
【０１１９】
このスケーリングファクタのマトリクスにおいて、
【数１９】
2010505287.tif 000024
【０１２０】
スケールファクタが、変換の適用の前に係数で乗算されるので、スケールファクタＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、およびＪは、Ｐの位置だけ左シフトされることができて、ここでは、Ｐは、変換において使用された固定小数点の仮数ビット（すなわち、小数点の右側に位置するビット）の数を指す定数である。これは、オリジナルの係数を、Ｐ仮数ビットを有する固定小数点数へと効率的に変換する。言い換えると、マトリクスにおける係数のそれぞれは、２Ｐで、乗算される。結果として生じる値は、その後で、整数値によって近似されることができる。したがって、上のマトリクスにおけるＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、およびＪは、
【数２０】
2010505287.tif 000025
【０１２１】
例えば、ψ＝１．３５２７０８０５８と仮定し、φ＝０．９５９７０００９１と仮定し、Ｐ＝１０と仮定する。
【０１２２】
これらのψ、φおよびＰの値が与えられると、スケールファクタＡ’＝１０２４、Ｂ’＝７５７、Ｃ’＝１０６７、Ｄ’＝１０７１、Ｅ’＝５６０、Ｆ’＝７８９、Ｇ’＝７９２、Ｈ’＝１１１２、Ｉ’＝１１１６、またＪ’＝１１２０が選択されることができる。したがって、以下のスケールファクタのマトリクスが結果として生じうる：
【表４】
2010505287.tif 000026
【０１２３】
次の表は、変換２７０で使用されることができる、α’、β’、γ’、δ’、ε’およびζ’の例示的なスケールファクタおよび値を要約している。
【表５】
2010505287.tif 000027
【表６】
2010505287.tif 000028
【表７】
2010505287.tif 000029
【０１２４】
ＩＤＣＴモジュール４８がどのように上の表で提供されたアルゴリズム、一定値(constant values)、およびスケールファクタを使用することができるかを図示するために、上の表３を考慮に入れる。表３の値を使用して逆離散コサイン変換を適用するために、ＩＤＣＴモジュール４８における入力モジュール１４０は、係数の８×８マトリクスを受け取ることができる。次に、スケーリングモジュール１４２は、ファクタＡによってマトリクスの位置［０，０］で係数をスケーリングし、ファクタＢによってマトリクスの位置［０，１］で係数をスケーリングし、ファクタＣによってマトリクスの位置［０，２］で係数をスケーリングし、ファクタＤによってマトリクスの位置［０，３］で係数をスケーリングし、ファクタＡによってマトリクスの位置［０，４］で係数をスケーリングし、ファクタＤによってマトリクスの位置［０，５］で係数をスケーリングし、ファクタＣによってマトリクスの位置［０，６］で係数をスケーリングし、ファクタＢによってマトリクスの位置［０，７］で係数をスケーリングし、ファクタＢによってマトリクスの位置［１，０］で係数をスケーリングし、ファクタＥによってマトリクスの位置［１，１］で係数をスケーリングし、ファクタＦによってマトリクスの位置［１，２］で係数をスケーリングし、ファクタＧによってマトリクスの位置［１，３］で係数をスケーリングし、ファクタＢによってマトリクスの位置［１，４］で係数をスケーリングし、ファクタＧによってマトリクスの位置［１，５］で係数をスケーリングし、ファクタＦによってマトリクスの位置［１，６］で係数をスケーリングし、ファクタＥによってマトリクスの位置［１，７］で係数をスケーリングし、ファクタＣによってマトリクスの位置［２，０］で係数をスケーリングし、ファクタＦによってマトリクスの位置［２，１］で係数をスケーリングし、ファクタＨによってマトリクスの位置［２，２］で係数をスケーリングし、ファクタＩによってマトリクスの位置［２，３］で係数をスケーリングし、ファクタＣによってマトリクスの位置［２，４］で係数をスケーリングし、ファクタＩによってマトリクスの位置［２，５］で係数をスケーリングし、ファクタＨによってマトリクスの位置［２，６］で係数をスケーリングし、ファクタＦによってマトリクスの位置［２，７］で係数をスケーリングし、ファクタＤによってマトリクスの位置［３，０］で係数をスケーリングし、ファクタＧによってマトリクスの位置［３，１］で係数をスケーリングし、ファクタＩによってマトリクスの位置［３，２］で係数をスケーリングし、ファクタＪによってマトリクスの位置［３，３］で係数をスケーリングし、ファクタＤによってマトリクスの位置［３，４］で係数をスケーリングし、ファクタＪによってマトリクスの位置［３，５］で係数をスケーリングし、ファクタＩによってマトリクスの位置［３，６］で係数をスケーリングし、ファクタＧによってマトリクスの位置［３，７］で係数をスケーリングし、ファクタＡによってマトリクスの位置［４，０］で係数をスケーリングし、ファクタＢによってマトリクスの位置［４，１］で係数をスケーリングし、ファクタＣによってマトリクスの位置［４，２］で係数を��ケーリングし、ファクタＤによってマトリクスの位置［４，３］で係数をスケーリングし、ファクタＡによってマトリクスの位置［４，４］で係数をスケーリングし、ファクタＤによってマトリクスの位置［４，５］で係数をスケーリングし、ファクタＣによってマトリクスの位置［４，６］で係数をスケーリングし、ファクタＢによってマトリクスの位置［４，７］で係数をスケーリングし、ファクタＤによってマトリクスの位置［５，０］で係数をスケーリングし、ファクタＧによってマトリクスの位置［５，１］で係数をスケーリングし、ファクタＩによってマトリクスの位置［５，２］で係数をスケーリングし、ファクタＪによってマトリクスの位置［５，３］で係数をスケーリングし、ファクタＤによってマトリクスの位置［５，４］で係数をスケーリングし、ファクタＪによってマトリクスの位置［５，５］で係数をスケーリングし、ファクタＩによってマトリクスの位置［５，６］で係数をスケーリングし、ファクタＧによってマトリクスの位置［５，７］で係数をスケーリングし、ファクタＣによってマトリクスの位置［６，０］で係数をスケーリングし、ファクタＦによってマトリクスの位置［６，１］で係数をスケーリングし、ファクタＨによってマトリクスの位置［６，２］で係数をスケーリングし、ファクタＩによってマトリクスの位置［６，３］で係数をスケーリングし、ファクタＣによってマトリクスの位置［６，４］で係数をスケーリングし、ファクタＩによってマトリクスの位置［６，５］で係数をスケーリングし、ファクタＨによってマトリクスの位置［６，６］で係数をスケーリングし、ファクタＦによってマトリクスの位置［６，７］で係数をスケーリングし、ファクタＢによってマトリクスの位置［７，０］で係数をスケーリングし、ファクタＥによってマトリクスの位置［７，１］で係数をスケーリングし、ファクタＦによってマトリクスの位置［７，２］で係数をスケーリングし、ファクタＧによってマトリクスの位置［７，３］で係数をスケーリングし、ファクタＢによってマトリクスの位置［７，４］で係数をスケーリングし、ファクタＧによってマトリクスの位置［７，５］で係数をスケーリングし、ファクタＦによってマトリクスの位置［７，６］で係数をスケーリングし、ファクタＥによってマトリクスの位置［７，７］で係数をスケーリングする。スケーリングモジュール１４２がこれらの係数をスケーリングするとき、スケーリングモジュールは、表６において規定されるように、値、Ａ＝１０２４、Ｂ＝１１３８、Ｃ＝１７３０、Ｄ＝１６０９、Ｅ＝１２６４、Ｆ＝１９２２、Ｇ＝１７８８、Ｈ＝２９２３、Ｉ＝２７１８、そしてＪ＝２５２８を使用することができる。これらのスケーリングされた係数は、スケーリングされた係数のマトリクスを構成する。
【０１２５】
スケーリングモジュール１４２が係数をスケーリングした後で、逆ベクトル変換モジュール１４６は、中間係数のマトリクスを作るためにスケーリングされた係数のマトリクスの各行ベクトルに対して変換を適用することができ、そして、変換された係数のマトリクスを作るために中間係数のマトリクスの各列ベクトルに対して変換を適用する。逆ベクトル変換モジュール１４６は、ｘ０とｘ４を加算することによって値ｘ０’を計算し、ｘ０と−ｘ４を加算することによって値ｘ４’を計算し、ｘ２に値αを乗算することによって値（ｘ２＊α）を計算し、ｘ６に値βを乗算することによって値（ｘ６＊β）を計算し、ｘ２に値βを乗算することによって値（ｘ２＊β）を計算し、ｘ６に値αを乗算することによって値（ｘ６＊α）を計算し、（ｘ２＊α）と―（ｘ６＊β）を加算することによって値ｘ２’を計算し、（ｘ６＊α）と（ｘ２＊β）を加算することによって値ｘ６’を計算し、ｘ０’とｘ６’を加算することによって値ｘ０’’を計算し、ｘ４’とｘ２’を加算することによって値ｘ４’’を計算し、ｘ４’と−ｘ２’を加算することによって値ｘ２’’を計算し、ｘ０’と−ｘ６’を加算することによって値ｘ６’’を計算し、ｘ１および−ｘ７を加算することによって値ｘ７’を計算し、ｘ１とｘ７を加算することによって値ｘ１’を計算し、ｘ３と２の平方根を乗算するとによって値ｘ３’を計算し、ｘ５と２の平方根を乗算するとによって値ｘ５’を計算し、ｘ７’とｘ５’を加算することによって値ｘ７’’を計算し、ｘ１’と−ｘ３’を加算することによって値ｘ３’’を計算し、ｘ７’と−ｘ５’を加算することによって値ｘ５’’を計算し、ｘ３’とｘ１’を加算することによって値ｘ１’’を計算し、ｘ７’’と値εを乗算することによって値（ｘ７’’＊ε）を計算し、ｘ７’’と値ζを乗算することによって値（ｘ７’’＊ζ）を計算し、ｘ３’’と値γを乗算することによって値（ｘ３’’＊γ）を計算し、ｘ３’’と値δを乗算することによって値（ｘ３’’＊δ）を計算し、ｘ５’’と値δを乗算することによって値（ｘ５’’＊δ）を計算し、ｘ５’’と値γを乗算することによって値（ｘ５’’＊γ）を計算し、ｘ１’’と値ζを乗算することによって値（ｘ１’’＊ζ）を計算し、ｘ１’’と値εを乗算することによって値（ｘ１’’＊ε）を計算し、（ｘ７’’＊ε）と−（ｘ１’’＊ζ）を加算することによって値ｘ７’’’を計算し、（ｘ３’’＊γ）と−（ｘ５’’＊δ）を加算することによって値ｘ３’’’を計算し、（ｘ５’’＊γ）と（ｘ３’’＊δ）を加算することによって値ｘ５’’’を計算し、（ｘ１’’＊ε）と（ｘ７’’＊ζ）を加算することによって値ｘ１’’’を計算し、ｘ７’’’とｘ０’’を加算することによって値Ｘ０を計算し、ｘ４’’とｘ５’’’を加算することによって値Ｘ１を計算し、ｘ２’’とｘ３’’’を加算することによって値Ｘ２を計算し、ｘ６’’とｘ７’’’を加算することによって値Ｘ３を計算し、ｘ６’’と−ｘ１’’’を加算することによって値Ｘ４を計算し、ｘ２’’と−ｘ３’’’を加算することによって値Ｘ５を計算し、ｘ４’’と−ｘ５’’’を加算することによって値Ｘ６を計算し、ｘ０’’と−ｘ１’’’を加算することによって値Ｘ７を計算することで、行ベクトルに対してあるいは列ベクトルに対して変換を適用することができ、なお、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６およびｘ７は、行ベクトルおよび列ベクトルにおける係数であり、Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５、Ｘ６およびＸ７は、変換の出力値である。これらの計算を実行するとき、逆ベクトル変換モジュール１４６は、小数値α＝４１／１２８、β＝９９／１２８、γ＝１５３３／２０４８、δ＝１／２、ε＝１１３／１２８、そしてζ＝７１９／４０９６、表３で規定されるように乗算無しアルゴリズムによって計算される積、を使用する。
【０１２６】
以下の符号は、変換２７０の例示的なＣ言語インプリメンテーションを含んでいる：
【数２１−１】
2010505287.tif 000030
【数２１−２】
2010505287.tif 000031
【数２１−３】
2010505287.tif 000032
【数２１−４】
2010505287.tif 000033
【０１２７】
図１１は、順変換モジュール２１４によって使用された例示的なスケーリングされた変換２８０を図示するフロー図である。図１１においては、値Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，およびＸ７は、出力係数を表しており、値ｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，およびｘ７は、入力値を表している。「プラス」の記号を含む丸の後の直線に関連づけられた値は、円を指す矢印に関連づけられた値を加えた結果である。「ｘ」記号を含む丸の後の直線に関連づけられた値は、丸の隣に位置づけられた係数と、丸を通過する直線に関連付けられた値を乗算した結果である。矢印の隣にある記号「−」は、矢印に関連づけられた値の否定を示す。例えば、もし値「１０」が「−」シンボルの前に矢印に関連づけられる場合、値「−１０」は、「−」記号の後で矢印に関連づけられることができる。さらに、マイナスの係数(negatived coefficients)および引き算を使用して丸め誤差を減らすために、上記に説明された技術は、アルゴリズム１９０で使用されることができる、ということは注目されるべきである。
【０１２８】
変換２８０において、出力値Ｘ０からＸ７は、それぞれ、ファクタ
【数２２】
2010505287.tif 000034
【０１２９】
で、乗算される。これらのファクタが変換２７０において、α’、β’、γ’、δ’、ε’およびζ’から取り除かれた(factored out)値の逆数であることに注目してください。
【０１３０】
ここに説明された技術は、ハードウェア、ソフトウェア、ファームウェアあるいはそれらのいずれの組み合わせにおいて、インプリメントされることができる。モジュールあるいはコンポーネントとして説明されるいずれの特徴(features)も、集積化された論理デバイスにおいて一緒に、あるいは、相互運用が可能なロジックデバイスだけれども、ディスクリート(discrete)として別々に、インプリメントされることができる。ソフトウェアにおいてインプリメントされる場合、技術は、実行されるとき、ここに説明される方法の１つ以上を実行するインストラクションを備えているコンピュータ可読メディアによって少なくとも部分的に実現されることができる。コンピュータ可読メディアは、パッケージング材料を含むことができる、コンピュータプログラムプロダクトの一部を形づくることができる。コンピュータ可読メディアは、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電子的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気あるいは光学データストレージメディア、そして同様の物、のようなランダムアクセスメモリ（ＲＡＭ）を備えることができる。技術は、追加的にあるいは代替的に、データストラクチャあるいはインストラクションの形態において符号を搬送する、あるいは、通信する、また、コンピュータによってアクセスされ、読み取られ、および／または実行されることができる、コンピュータ可読通信メディアによって少なくとも部分的に実現されることができる。
【０１３１】
符号は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰｓ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣｓ）、フィールドプログラマブル論理アレイ（ＦＰＧＡｓ）、あるいは他の同等な集積化された(integrated)あるいはディスクリートの論理回路素子のような、１つまたは複数のプロセッサによって実行されることができる。したがって、ここで使用される用語「プロセッサ」は、ここに説明される技術のインプリメンテーションに適した、前述のストラクチャのうちのいずれか、あるいはどんな他のストラクチャを意味することができる。さらに、いくつかの態様において、ここに説明される機能性は、組み合わせされたビデオ エンコーダ−デコーダ(a combined video encoder-decoder)（ＣＯＤＥＣ）に組み込まれた、あるいは、符号化および復号のためにコンフィギュアされた、専用のソフトモジュールあるいはハードウェアモジュール内で提供されることができる。
【０１３２】
本発明の様々な実施形態が説明された。これらおよび他の実施形態は、添付の特許請求の範囲の範囲内にある。
【図１】
2010505287.tif 000035
【図２】
2010505287.tif 000036
【図３】
2010505287.tif 000037
【図４】
2010505287.tif 000038
【図５】
2010505287.tif 000039
【図６】
2010505287.tif 000040
【図７】
2010505287.tif 000041
【図８】
2010505287.tif 000042
【図９】
2010505287.tif 000043
【図１０Ａ】
2010505287.tif 000044
【図１０Ｂ】
2010505287.tif 000045
【図１１】
2010505287.tif 000046