JP5529257B2 - 偶数サイズ離散コサイン変換の計算 - Google Patents

偶数サイズ離散コサイン変換の計算 Download PDF

Info

Publication number
JP5529257B2
JP5529257B2 JP2012505944A JP2012505944A JP5529257B2 JP 5529257 B2 JP5529257 B2 JP 5529257B2 JP 2012505944 A JP2012505944 A JP 2012505944A JP 2012505944 A JP2012505944 A JP 2012505944A JP 5529257 B2 JP5529257 B2 JP 5529257B2
Authority
JP
Japan
Prior art keywords
dct
subset
inputs
sub
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012505944A
Other languages
English (en)
Other versions
JP2012524330A (ja
Inventor
レズニク、ユリー
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012524330A publication Critical patent/JP2012524330A/ja
Application granted granted Critical
Publication of JP5529257B2 publication Critical patent/JP5529257B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability

Landscapes

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

Description

本出願は、その内容全体が参照により本明細書に組み込まれる、2009年4月15日に出願された米国仮出願第61/169,418号の利益を主張する。
本開示は、データ圧縮に関し、より詳細には、変換を含むデータ圧縮に関する。
データ圧縮は、データ記憶空間、伝送帯域幅、またはその両方の消費を低減するために、様々な適用例において広く使用されている。データ圧縮の例示的な適用例には、デジタルビデオ、画像、音声、およびオーディオコーディングなど、可視または可聴メディアデータコーディングがある。たとえば、デジタルビデオコーディングは、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレス通信デバイス、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスで使用されている。デジタルビデオデバイスは、デジタルビデオをより効率的に送信および受信するために、MPEG−2、MPEG−4、またはH.264/MPEG−4 Advanced Video Coding(AVC)など、ビデオ圧縮技法を実装する。
一般に、ビデオ圧縮技法では、ビデオデータに固有の冗長性を低減または除去するために空間的予測、動き推定および動き補償を実行する。特に、イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。インターコーディングの場合、ビデオエンコーダは、2つ以上の隣接フレーム間でビデオブロックを一致させる動作を追跡するために動き推定を実行する。動き推定は、1つまたは複数の参照フレーム中の対応するビデオブロックに対するビデオブロックの変位を示す動きベクトルを発生する。動き補償は、その動きベクトルを使用して、参照フレームから予測ビデオブロックを発生する。動き補償の後、元のビデオブロックから予測ビデオブロックを減算することによって残差ビデオブロックが形成される。
ビデオエンコーダは、ビデオコーディングプロセスによって生成された残差ブロックのビットレートをさらに低減するために、変換を適用し、その後、量子化およびロスレス統計的コーディングプロセスを適用する。場合によっては、適用された変換は離散コサイン変換(DCT)を備える。一般に、DCTは、ブロックのサイズが2のべき乗であるダイアディックサイズのビデオブロックに適用される。したがって、DCT係数のダイアディックサイズの行列を生成するために、これらのDCTがダイアディックサイズのビデオブロックに適用されるという点で、これらのDCTはダイアディックサイズDCTと呼ばれることがある。ダイアディックサイズDCTの例には、4×4、8×8および16×16DCTがある。ダイアディックサイズDCTを残差ブロックに適用することから生成されたDCT係数のダイアディックサイズの行列は、次いで、量子化および(一般に「エントロピーコーディング」プロセスとして知られる)ロスレス統計的コーディングプロセスを受けて、ビットストリームを発生する。統計的コーディングプロセスの例には、コンテキスト適応型可変長コーディング(CAVLC)またはコンテキスト適応型2値算術コーディング(CABAC)がある。ビデオデコーダは、符号化されたビットストリームを受信し、ブロックの各々について残差情報を復元するためにロスレス復号を実行する。残差情報と動き情報とを使用して、ビデオデコーダは、符号化されたビデオを再構成する。
概して、本開示は、1つまたは複数の非ダイアディック偶数サイズ離散コサイン変換(DCT)を使用して、メディアデータなどのデータをコーディングするための技法を対象とする。非ダイアディック偶数サイズDCTは、2の倍数であるが2のべき乗ではないサイズを有するビデオブロックなどのメディアデータをコーディングするために、メディアコーダにおいて適用されるDCTを備え得る。たとえば、非ダイアディック偶数サイズDCTは、6×6、10×10、12×12、または2の倍数であるが2のべき乗ではない同様のサイズのDCTを備え得る。本開示の技法に従って実装されたDCTは、圧縮効率と実装複雑さとの観点から効率的であり得る。圧縮効率は、後続の量子化およびロスレス統計的コーディングプロセスの適用中に達成され得るデータ圧縮の量または割合を指す。実装複雑さは、所与の非ダイアディックサイズDCTを実装するために、メディアコーダにおいて必要であり得る数学演算の数およびタイプを指す。場合によっては、本開示の技法に従って実装された非ダイアディック偶数サイズDCTは、圧縮効率と実装複雑さの両方の観点からダイアディックサイズDCTよりも効率的に機能し得る。
一態様では、タイプIIのスケーリングされた離散コサイン変換(DCT−II)を実行する方法は、装置を用いて、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断することと、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であると判断したことに応答して、上記装置を用いて、スケーリングされたDCT−IIを実行することとを備える。スケーリングされたDCT−IIを実行することは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することとを含む。スケーリングされたDCT−IIを実行することはまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、DCT−IIのスケーリングされた出力値を発生するために、それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えることとを含む。
別の態様では、メディアコーディングデバイスは、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であると判断したことに応答して、スケーリングされたDCT−IIを実行する、スケーリングされたDCT−IIユニットを備える。スケーリングされたDCT−IIユニットは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、バタフライユニットが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させる順序逆転ユニットと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットとを含む。スケーリングされたDCT−IIユニットはまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算する、スケーリングされたサブDCT−IIユニットと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットとを含む。スケーリングされたDCT−IIユニットは、次いで、DCT−IIのスケーリングされた出力値を発生するために、それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替える。
別の態様では、非一時的コンピュータ可読媒体は、プロセッサに、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断することと、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であると判断したことに応答して、スケーリングされたDCT−IIを実行することとを行わせるための命令を備える。プロセッサにスケーリングされたサブDCT−IIを実行させる命令は、プロセッサに、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、DCT−IIのスケーリングされた出力値を発生するために、それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えることとを行わせる命令を含む。
別の態様では、装置は、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であると判断したことに応答して、スケーリングされたDCT−IIを実行するための手段とを備える。スケーリングされたDCT−IIを実行するための手段は、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算するための手段と、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させるための手段と、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算するための手段とを含む。スケーリングされたDCT−IIを実行するための手段はまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算するための手段と、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、DCT−IIのスケーリングされた出力値を発生するために、それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えるための手段とを含む。
別の態様では、タイプIIの完全離散コサイン変換(DCT−II)を実行する方法は、装置を用いて、実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、実行すべき完全DCT−IIのサイズが2の倍数であると判断したことに応答して、上記装置を用いて、完全DCT−IIを実行することとを備える。完全DCT−IIを実行することは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することとを含む。完全DCT−IIを実行することはまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、出力の第1の完全セットを発生するために、出力の第1のセットに1つまたは複数のスケールファクタを乗算することと、DCT−IIの出力値を発生するために、出力の第1の完全セットと出力の第2のセットとを並べ替えることとを含む。
別の態様では、メディアコーディングデバイスは、実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべき完全DCT−IIのサイズが2の倍数であると判断したことに応答して、完全DCT−IIを実行する、完全DCT−IIユニットを備える。完全DCT−IIは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、バタフライユニットが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させる順序逆転ユニットと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットとを含む。完全DCT−IIはまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算する、完全サブDCT−IIユニットと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットと、出力の第1の完全セットを発生するために、サブDCT−IIIの出力に1つまたは複数のスケールファクタを乗算するスケーリングユニットとを含む。完全DCT−IIユニットは、次いで、DCT−IIの出力値を発生するために、出力の第1の完全セットと出力の第2のセットとを並べ替える。
別の態様では、非一時的コンピュータ可読媒体は、プロセッサに、実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、実行すべき完全DCT−IIのサイズが2の倍数であると判断したことに応答して、完全DCT−IIを実行することとを行わせるための命令を備える。プロセッサに完全DCT−IIを実行させる命令は、プロセッサに、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する完全サブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、出力の第1の完全セットを発生するために、出力の第1のセットに1つまたは複数のスケールファクタを乗算することと、DCT−IIの出力値を発生するために、出力の第1の完全セットおよび出力の第2のセットを並べ替えることとを行わせる命令を含む。
別の態様では、装置は、実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、実行すべき完全DCT−IIのサイズが2の倍数であると判断したことに応答して、完全DCT−IIを実行するための手段とを備える。完全DCT−IIを実行するための手段は、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算するための手段と、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させるための手段と、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算するための手段とを含む。完全DCT−IIを実行するための手段はまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算するための手段と、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、出力の第1の完全セットを発生するために、出力の第1のセットに1つまたは複数のスケールファクタを乗算するための手段と、DCT−IIの出力値を発生するために、出力の第1の完全セットと出力の第2のセットとを並べ替えるための手段とを含む。
別の態様では、タイプIIIの完全離散コサイン変換(DCT−III)を実行する方法は、装置を用いて、実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断することと、実行すべきDCT−IIIのサイズが2の倍数であると判断したことに応答して、上記装置を用いて、DCT−IIIを実行することとを備える。DCT−IIIを実行することは、タイプIIのDCT(DCT−II)の逆元を実行することを含み、DCT−IIを実行することは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することとを含む。DCT−IIを実行することはまた、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、DCT−IIの出力値を発生するために、それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えることとを含む。
別の態様では、メディアコーディングデバイスは、実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断し、実行すべきDCT−IIIのサイズが2の倍数であると判断したことに応答して、DCT−IIIを実行する、DCT−IIIユニットを備える。DCT−IIIユニットは、DCT−IIユニットによって実行されるタイプIIのDCT(DCT−II)の逆元を実行する。DCT−IIを実行するために、DCT−IIユニットは、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、バタフライユニットが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させる順序逆転ユニットと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットと、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算する、サブDCT−IIユニットと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算するサブDCT−IIIユニットとを含む。DCT−IIユニットは、DCT−IIのスケーリングされた出力値を発生するために、それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替える。
別の態様では、非一時的コンピュータ可読媒体は、プロセッサに、実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断することと、実行すべきDCT−IIIのサイズが2の倍数であると判断したことに応答して、DCT−IIIを実行することとを行わせるための命令を備える。命令は、プロセッサに、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、DCT−IIの出力値を発生するために、それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えることとによって実行されたタイプIIのDCT(DCT−II)の逆元を実行することによって、DCT−IIIを実行させる。
別の態様では、装置は、実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断するための手段と、実行すべきスケーリングされたDCT−IIのサイズが2の倍数であると判断したことに応答して、DCT−IIIを実行するための手段とを備える。DCT−IIIを実行するための手段は、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、バタフライが、入力の第1のサブセットを相互加算する第1の部分と、入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させることと、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、入力の第1のサブセットを受信し、入力の第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、入力の再帰的に減算された第2のサブセットを受信し、入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、DCT−IIの出力値を発生するために、それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替えることとによって実行されたDCT−IIの逆元を実行するための手段を含む。
本技法の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本技法の他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
ビデオ符号化および復号システムを示すブロック図。 図1に示すビデオエンコーダの一例を示すブロック図。 図1のビデオデコーダの一例を示すブロック図。 本開示で説明する技法に従って実装された非ダイアディックサイズDCT−IIユニットによって実行される例示的な再帰的反復を示すフローチャート。 サイズnの偶数サイズ完全DCT−IIを実行するための、本開示で説明する再帰的技法の反復を示すブロック図。 サイズnの偶数サイズ完全DCT−IIを実行するための、本開示で説明する再帰的技法の反復を示すブロック図。 ダイアディックサイズDCT−IIと非ダイアディックサイズDCT−IIの両方の効率的な実装についての、実装複雑さに対するコーディング利得のグラフを示す図。 本開示で説明する技法に従って実装されたスケーリングされた非ダイアディックサイズDCT−IIユニットによって実行される例示的な再帰的反復を示すフローチャート。 サイズnの偶数サイズのスケーリングされたDCT−IIを実行するための、本開示で説明する再帰的技法の反復を示すブロック図。
概して、本開示は、1つまたは複数の非ダイアディック偶数サイズ離散コサイン変換(DCT)を使用してデータをコーディングするための技法を対象とする。本技法は、デジタルビデオ、画像、音声、および/またはオーディオデータなど、可視または可聴メディアデータを含む様々なデータを圧縮し、それによって、そのようなデータを表すそのような電気信号を、それらの電気信号のより効率的な処理、送信またはアーカイブのために圧縮信号に変換するために適用され得る。非ダイアディック偶数サイズDCTは、2の倍数であるが2のべき乗ではないサイズを有するビデオブロックに適用されるDCTを備える。たとえば、非ダイアディックサイズDCTは、6×6、6×10、10×6、10×10、10×12、12×10、12×12、および2の倍数であるが2のべき乗ではない寸法を有する他の同様のサイズのDCTを備え得る。以下でより詳細に説明するように、これらの非ダイアディック偶数サイズDCTは、旧来、オーディオ、音声、画像およびビデオデータの圧縮のために使用される従来の4×4、8×8および16×16サイズのDCTなど、ダイアディックサイズDCTと比較して、実装複雑さと得られるデータ圧縮との観点から、より効率的であり得る。
上記で示したサイズは、ダイアディックか非ダイアディックかにかかわらず、個別のデータユニットに関して表される。例示のために、ビデオデータについては、しばしば、特にビデオ圧縮に関して、ビデオブロックとして説明する。ビデオブロックは、一般に、ビデオフレームの任意のサイズの部分を指し、ビデオフレームは、一連のピクチャまたは画像中のピクチャまたは画像を指す。各ビデオブロックは、一般に、色成分、たとえば、赤、青および緑(いわゆる「色度」または「クロマ」成分)または光度成分(いわゆる「ルーマ」成分)のいずれかを示す複数の個別のピクセルデータを備える。ピクセルデータの各セットは、ビデオブロック中に単一の1×1ポイントを備え、ビデオブロックに関する個別のデータユニットと考えられ得る。したがって、非ダイアディックサイズの6×6ビデオブロックは、たとえば、ピクセルデータの6つの列を備え、各列中にピクセルデータの6つの個別のセットがある。
DCTについては、通常、オーディオ、音声、画像またはビデオデータであるかどうかにかかわらず、DCTが処理することが可能であるデータブロックのサイズに関して説明する。たとえば、DCTが非ダイアディックの偶数サイズの6×6データブロックを処理することができる場合、DCTは6×6DCTと呼ばれることがある。その上、DCTは特定のタイプとして示され得る。8つの異なるタイプのDCTのうちの最も一般的に採用されるタイプのDCTは、「DCT−II」と示され得るタイプIIのDCTである。しばしば、概括的にDCTに言及するとき、そのような言及は、タイプIIのDCTまたはDCT−IIを指す。DCT−IIの逆元(inverse)は、同様に「DCT−III」と示され得るタイプIIIのDCTと呼ばれるか、または、DCTがDCT−IIを指すという共通の理解があれば、「IDCT」と呼ばれ、「IDCT」中の「I」は逆元を示す。以下のDCTへの言及はこの表記法に準拠し、DCTへの概括的言及は、別段に規定されていない限りDCT−IIを指す。しかしながら、混乱を回避するために、DCT−IIを含むDCTは、以下で、ほとんどの場合、対応するタイプ(II、IIIなど)を示した状態で言及される。
本開示で説明する技法は、データの圧縮および/または復元を可能にするために、これらの非ダイアディックサイズDCT−IIの効率的な実装を採用するエンコーダおよび/またはデコーダの両方を含む。この場合も、そのようなアルゴリズムを使用して達成される圧縮および復元は、物理的コンピューティングハードウェア、物理的伝送媒体(たとえば、銅、光ファイバ、ワイヤレス、または他のメディア)、および/またはストレージハードウェア(たとえば、磁気または光ディスクまたはテープ、あるいは様々なソリッドステートメディアのいずれか)を使用して、データを表す電気信号がより効率的に処理され、送信され、および/または記憶され得るように、それらの信号の物理的変換を可能にする。非ダイアディック偶数サイズDCTの実装は、圧縮効率と実装複雑さとの観点から効率的であり、潜在的に最適である。圧縮効率は、後続の量子化およびロスレス統計的コーディングプロセスの適用中に達成され得るデータ圧縮の量または割合を指す。実装複雑さは、所与の非ダイアディックサイズDCTを達成するために、メディアコーダ内に実装する必要があり得る数学演算の数およびタイプを指す。ビデオエンコーダおよび/またはデコーダに関して以下で説明するが、本技法は、他のメディアコーダに適用され得、オーディオ、音声または画像データなど、DCT−IIを使用する圧縮に好適な任意の形態のデータに適用され得る。
非ダイアディック偶数サイズDCT−IIの実装は、概して再帰的プロセスを含む。本開示において使用する「再帰」という用語は、コンピュータサイエンスの文脈で知られている再帰を指す。この文脈における「再帰」という用語は、問題へのソリューションが、同じ問題のより小さいインスタンスへのソリューションに依存することを示唆する。たいていのコンピュータプログラミング言語は、機能がそれ自体を呼び出すかまたは起動することを可能にすることによって再帰を可能にする。本開示の技法に従って実装されたDCT−IIは、ある時点においてより小さいサイズのDCT−IIが解決され得るまで、より大きいサイズのDCT−IIをますますより小さいサイズのDCT−IIに再帰的に分割するために再帰を採用し得る。例示のために、12×12データブロックに対して12×12DCT−IIを実行するために、本開示の技法に従って実装されたDCT−IIは、12×12DCT−IIを、タイプIIが1つおよびタイプIIIが1つの、2つの6×6DCTに分割し得る。実装は、次いで、6×6DCT−IIに対して実装自体を呼び出し、その後、実装は6×6DCT−IIを2つの3×3DCT−IIに分割する。実装は、次いで、12×12データブロックの1つの部分について6×6DCT−IIIを計算し、12×12データブロックの別の部分について第1の3×3DCT−IIを計算し、12×12データブロックのさらに別の部分について第2の3×3DCT−IIを計算する。この再帰的プロセスによって、DCT−II実装は、この実装が非ダイアディックの偶数サイズのデータブロックについてDCT−IIを計算することができるという点で、可変サイズのDCT−II実装と考えられ得る。
いくつかの態様では、本開示の技法に従って実装されたDCT−IIはスケーリングされ得、それは、いくつかのファクタを組み込まない実装を指す。これらのファクタが除去されると考えると、入力データを正確に表さないDCT係数はスケーリングされるので、スケーリングされたDCT−II実装は、これらのDCTを出力する。スケーリングされた実装は、除去されたファクタを適用することができる、量子化などの後続のプロセスを含むコーディングアプリケーションにおいて、しばしば好適である。量子化は、一般に多くの乗算と加算とを含むので、これらのファクタを量子化に組み込むことは、概して実装複雑さを実質的に増加させない。したがって、スケーリングされたDCT−II実装は、実装複雑さを低減するとともに、対応する完全またはスケーリングされていないDCT−II実装と同じコーディング利得を与えるので、これらの実装は一般に好適である。スケーリングされた実装に関して以下で概して説明するが、本開示の技法に従って完全DCT−IIを実装し得る。
図1は、ビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオを受信ハードウェアデバイス14に送信するソースハードウェアデバイス12を含む。ソースデバイス12は、ビデオソース18とビデオエンコーダ20と送信機22とを含み得る。宛先デバイス14は、受信機24と、ビデオデコーダ26と、ビデオディスプレイデバイス28とを含み得る。
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルまたは1つまたは複数の物理的伝送線路など、ワイヤレスまたはワイヤードの任意の通信媒体、あるいはワイヤレスおよびワイヤードの媒体の任意の組合せを備え得る。チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル16は、一般に、ビデオデータをソースデバイス12から受信デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。
ソースデバイス12は、宛先デバイス14に送信するためのビデオを発生する。ただし、場合によっては、デバイス12、14は、実質的に対称に動作し得る。たとえば、デバイス12、14の各々は、ビデオ符号化および復号構成要素を含み得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオブロードキャスト、またはビデオ電話のためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。他のデータ圧縮およびコーディング適用例の場合、デバイス12、14は、画像、音声またはオーディオデータ、あるいはビデオ、画像、音声およびオーディオデータのうちの2つ以上の組合せなど、他のタイプのデータを送信および受信、または交換するように構成され得る。したがって、ビデオ適用例の説明は例示のために与えたものであり、本明細書で広く説明する本開示の様々な態様を限定するものと見なすべきではない。
ビデオソース18は、1つまたは複数のビデオカメラ、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのライブビデオフィードなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18はソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオとコンピュータ発生ビデオとの組合せを発生し得る。場合によっては、ビデオソース18がカメラである場合、ソースデバイス12および受信デバイス14は、いわゆるカメラ付き携帯電話またはビデオ電話を形成し得る。したがって、いくつかの態様では、ソースデバイス12、受信デバイス14またはその両方は、モバイル電話など、ワイヤレス通信デバイスハンドセットを形成し得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ発生ビデオは、送信機22とチャネル16と受信機24とを介してビデオソースデバイス12からビデオ受信デバイス14のビデオデコーダ26に送信するために、ビデオエンコーダ20によって符号化され得る。ディスプレイデバイス28は、液晶ディスプレイ(LCD)、プラズマディスプレイまたは有機発光ダイオード(OLED)ディスプレイなどの様々なディスプレイデバイスのいずれかを含み得る。
ビデオエンコーダ20およびビデオデコーダ26は、空間、時間および/または信号対雑音比(SNR)スケーラビリティのためのスケーラブルビデオコーディングをサポートするように構成され得る。いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ22は、ファイングラニュラリティSNRスケーラビリティ(FGS)コーディングをサポートするように構成され得る。エンコーダ20およびデコーダ26は、ベースレイヤおよび1つまたは複数のスケーラブルエンハンスメントレイヤの符号化、送信および復号をサポートすることによって様々な程度のスケーラビリティをサポートし得る。スケーラブルビデオコーディングの場合、ベースレイヤは最小品質レベルでビデオデータを搬送する。1つまたは複数のエンハンスメントレイヤは追加のビットストリームを搬送して、より高い空間的レベル、時間的レベルおよび/またはSNRレベルをサポートする。
ビデオエンコーダ20およびビデオデコーダ26は、MPEG−2、MPEG−4、ITU−T H.263、またはITU−T H.264/MPEG−4 Advanced Video Coding(AVC)などのビデオ圧縮規格に従って動作し得る。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ26は、それぞれオーディオエンコーダおよびデコーダと統合され、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
いくつかの態様では、ビデオブロードキャストに関して、本開示で説明する技法は、たとえば、ワイヤレスビデオブロードキャストサーバまたはワイヤレス通信デバイスハンドセットを介して、Forward Link Only(FLO) Air Interface Specification、すなわちTechnical Standard TIA−1099(「FLO Specification」)として発表された「Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast」を使用して、terrestrial mobile multimedia multicast(TM3)システムでリアルタイムビデオサービスを配信するためのH.264ビデオコーディングを拡張するために適用され得る。FLO Specificationは、ビットストリームシンタックスおよびセマンティックス、ならびにFLO Air Interfaceに適した復号プロセスを定義する例を含む。代替的に、ビデオは、DVB−H(digital video broadcast−handheld)、ISDB−T(integrated services digital broadcast−terrestrial)、またはDMB(digital media broadcast)などの他の規格に従ってブロードキャストされ得る。したがって、ソースデバイス12は、モバイルワイヤレス端末、ビデオストリーミングサーバ、またはビデオブロードキャストサーバであり得る。ただし、本開示で説明する技法は、特定のタイプのブロードキャスト、マルチキャスト、またはポイントツーポイントシステムに限定されない。ブロードキャストの場合、ソースデバイス12は、ビデオデータのいくつかのチャネルを、その各々が図1の受信デバイス14と同様であり得る複数の受信デバイスにブロードキャストし得る。
ビデオエンコーダ20およびビデオデコーダ26はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装され得る。したがって、ビデオエンコーダ20およびビデオデコーダ26の各々は、集積回路(IC)チップまたはデバイスとして少なくとも部分的に実装され、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれかは、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合され得る。さらに、ソースデバイス12および受信デバイス14はそれぞれ、符号化ビデオの送信および受信のために適切な変調、復調、周波数変換、フィルタ処理、および増幅器構成要素を含み、適用可能な場合、ワイヤレス通信をサポートするために十分な無線周波(RF)ワイヤレス構成要素およびアンテナを含み得る。ただし、説明しやすいように、そのような構成要素は図1に示していない。
ビデオシーケンスは一連のビデオフレームを含む。ビデオエンコーダ20は、ビデオデータを符号化するために個々のビデオフレーム内のピクセルのブロックに作用する。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは一連のスライスを含む。各スライスは一連のマクロブロックを含み得、それらはサブブロック中に配置され得る。一例として、ITU−T H.264規格は、ルーマ成分では16×16、8×8、4×4、およびクロマ成分では8×8など、様々なダイアディックブロックサイズのイントラ予測、ならびにルーマ成分では16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分では対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。
より小さいビデオブロックは、概して、より良好な解像度を与えることができ、より高い詳細レベルを含むビデオフレームのロケーションに対して使用され得る。一般に、マクロブロック(MB)および様々なサブブロックは、概してビデオブロックを表すと考えられ得る。さらに、スライスは、MBおよび/またはサブブロックなど一連のビデオブロックを表すと考えられ得る。各スライスは単独で復号可能なユニットであり得る。予測の後に、ダイアディックまたは非ダイアディックサイズの残差ブロックに対して変換が実行され得、イントラ16×16予測モードが使用される場合は、クロマ成分またはルーマ成分用の4×4ブロックのDCT係数に追加の変換が適用され得る。
図1のシステム10のビデオエンコーダ20および/またはビデオデコーダ26は、それぞれ非ダイアディックサイズDCT−IIの実装とその逆元(たとえば、非ダイアディックサイズDCT−III)とを含むように構成され得、非ダイアディックサイズDCT−IIは、本開示で説明する技法に従って実装される。ITU−T H.264規格は、ルーマ成分では16×16、8×8、4×4、およびクロマ成分では8×8など、様々なダイアディックブロックサイズのイントラ予測をサポートするが、コーディング効率を改善するためのこの規格の改訂が現在進行中である。1つの改訂された規格は、ITU−T H.265または単にH.265と呼ばれることがある(時々、次世代ビデオコーディングまたはNGVCと呼ばれることがある)。図6に関して以下で説明するように、タイプIIの非ダイアディックサイズDCT(「DCT−II」)は、コーディング効率を改善するとともに、同様のダイアディックサイズDCT−IIよりも複雑さが少ない非ダイアディックサイズDCT−IIのスケーリングされた実装も促進し得る。したがって、ITU−T H.265および他の発展的規格または仕様は、コーディング効率を改善するために非ダイアディックサイズDCT−IIの実装を検討し得る。
本開示で説明する技法によれば、非ダイアディックサイズDCT−IIのスケーリングされた実装と完全実装の両方は、偶数サイズDCT−IIを実行するために再帰的プロセスを採用し得る。本開示において使用する「再帰」という用語は、コンピュータサイエンスの文脈で知られている再帰を指す。この文脈における「再帰」という用語は、問題へのソリューションが、同じ問題のより小さいインスタンスへのソリューションに依存することを示唆する。たいていのコンピュータプログラミング言語は、機能がそれ自体を呼び出すかまたは起動することを可能にすることによって再帰を可能にする。本開示の技法に関して、再帰的プロセスは、偶数サイズDCT−IIを、最適でないとしても効率的に計算するために、偶数サイズDCT−IIの再帰的分割を含む。
本開示の技法に従って実装されたDCT−IIは、ある時点においてより小さいサイズのDCT−IIが解決され得るまで、より大きいサイズのDCT−IIをますますより小さいサイズのDCT−IIに再帰的に分割するために再帰を採用し得る。例示のために、12×12データブロックに対して12×12DCT−IIを実行するために、本開示の技法に従って実装されたDCT−IIは、12×12DCT−IIを、タイプIIが1つおよびタイプIIIが1つの、2つの6×6DCTに分割し得る。実装は、次いで、6×6DCT−IIを計算するために再帰し、その後、実装は6×6DCT−IIを2つの3×3DCT−IIに分割する。実装は、次いで、12×12データブロックの1つの部分について6×6DCT−IIIを計算し、12×12データブロックの別の部分について第1の3×3DCT−IIを計算し、12×12データブロックのさらに別の部分について第2の3×3DCT−IIを計算する。この再帰的プロセスによって、DCT−II実装は、この実装が非ダイアディックの偶数サイズのデータブロックについてDCT−IIを計算することができるという点で、可変サイズのDCT−II実装と考えられ得る。
いくつかの態様では、本開示の技法に従って実装されたDCT−IIはスケーリングされ得、それは、いくつかのファクタを組み込まない実装を指す。これらのファクタが除去されると考えると、入力データを正確に表さないDCT係数はスケーリングされるので、スケーリングされたDCT−II実装は、これらのDCTを出力する。スケーリングされた実装は、除去されたファクタを適用することができる、量子化などの後続のプロセスを含むコーディングアプリケーションにおいて、しばしば好適である。量子化は、一般に多くの乗算と加算とを含むので、これらのファクタを量子化に組み込むことは、概して実装複雑さを実質的に増加させない。したがって、スケーリングされたDCT−II実装は、実装複雑さを低減するとともに、対応する完全またはスケーリングされていないDCT−II実装と同じコーディング利得を与えるので、これらの実装は一般に好適である。スケーリングされた実装に関して以下で概して説明するが、本開示の技法に従って完全DCT−IIを実装し得る。
概して、本開示の技法に従って実装されたDCT−IIによって実行される演算は、最初に、実行すべきDCT−IIが2の倍数のサイズであるかどうかを判断することを含む。言い換えれば、本開示で説明するDCT−II実装は、実行すべきDCT−IIが2の倍数でないときを識別することによって再帰的反復からの出口を与える。実行すべきDCT−IIが2の倍数でない場合、再帰的反復は終了し、2のべき乗でない、実行すべきDCT−IIが計算される。実行すべきDCT−IIが2の倍数のサイズであるという判断に応答して、DCT−II実装は、最初に、DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算する。バタフライは、DCT−II実装への入力の第1のサブセットを相互加算する第1の部分と、DCT−II実装への入力の第2のサブセットを相互減算する第2の部分とを含む。
バタフライを計算した後、DCT−II実装は、入力の逆順の第2のサブセットを発生するために、相互減算された入力の第2のサブセットの順序を逆転させる。DCT−II実装は、次いで、入力の再帰的に減算された第2のサブセットを発生するために、入力の逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する。計算された後、DCT−II実装は、次いで、入力の第1のサブセットを受信し、その入力の第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算する。このサブDCT−IIを計算するために、DCT−II実装は再帰し得、その後、DCT−II実装は、サブDCT−IIを計算するために、上記で説明したステップを実行する。
再び例示するために、DCT−II実装は、残差ビデオデータを表す12×12データブロックを受信し得る。残差ビデオデータの12×12ブロックに対して12×12DCT−IIを実行するために、DCT−II実装は、上記で言及したサブDCT−IIの一例である6×6DCT−IIを計算し得る。この6×6DCT−IIを計算するために、DCT−II実装は、最初に、このサブDCT−IIが2の倍数のサイズであるかどうかを判断し得る。6×6DCT−IIが2の倍数のサイズであるとすれば、DCT−II実装は、6×6DCT−IIのサブDCT−IIであるサイズ3×3の別のサブDCT−IIを計算することを含む、上記の計算と、逆転と、他の演算とのすべてを実行し得る。再び、DCT−II実装は、この場合、3×3サブDCT−IIが2の倍数のサイズではないと判断することを除いて、3×3サブDCT−IIを計算するために再帰し得る。この判断の結果として、DCT−II実装は、3×3DCT−IIの行列係数を記憶するライブラリまたは他のデータストアを参照することによって、3×3DCT−IIを直接計算する。DCT−II実装は、次いで、前の再帰的反復に戻り、6×6サブDCT−IIを計算するために3×3DCT−IIIを計算する。再びこの3×3DCT−IIIを計算するために、DCT−II実装は、3×3DCT−IIIの行列係数を記憶するライブラリまたはデータストアにアクセスする。
DCT−II実装は、次いで、以下でより詳細に説明するように、3×3DCT−IIと3×3DCT−IIIの両方を計算することによって6×6DCT−IIを解決し、前の再帰的反復に戻る。戻った後、DCT−II実装は、入力の再帰的に減算された第2のサブセットを受信し、その入力の再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サイズ6×6の完全サブDCT−IIIを計算する。再び、DCT−II実装は、6×6DCT−IIIの行列係数を記憶するライブラリまたは他のデータストアにアクセスすることによって、この6×6DCT−IIIを解決し得る。DCT−II実装は、次いで、DCT−IIのスケーリングされた出力値を発生するために、それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の第1および第2のセットを並べ替える。
特定の形態の変換、たとえば、DCTに関して本開示で説明するが、本技法は、空間領域から周波数領域にデータを変換することが可能である、他の偶数サイズの変換の実装を生成するために適用され得る。ただし、場合によっては、本技法は、ロケーションを考慮に入れない変換にのみ適用され得る。すなわち、本技法は、ウェーブレット変換など、空間的に局在化された変換には適用することができない。その上、非ダイアディックサイズDCT−IIに関して説明するが、本開示の技法に従って実装されたDCT−IIは、ダイアディックサイズ変換と非ダイアディックサイズ変換の両方が上記の再帰的プロセスを可能にするように偶数サイズであるとすれば、これらの変換にも適用され得る。
図2は、図1に示すビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、少なくとも部分的に、まとめて集積回路デバイスと呼ばれることがある1つまたは複数の集積回路デバイスとして形成され得る。いくつかの態様では、ビデオエンコーダ20は、ワイヤレス通信デバイスハンドセットまたはブロードキャストサーバの一部を形成し得る。ビデオエンコーダ20は、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。インターコーディングの場合、ビデオエンコーダ20は、隣接フレーム間でビデオブロックを一致させる動作を追跡するために動き推定を実行する。
図2に示すように、ビデオエンコーダ20は、符号化すべきビデオフレーム内の現在ビデオブロック30を受信する。図2の例では、ビデオエンコーダ20は、動き推定ユニット32と、参照フレームストア34と、動き補償ユニット36と、ブロック変換ユニット38と、量子化ユニット40と、逆量子化ユニット42と、逆変換ユニット44と、エントロピーコーディングユニット46とを含む。ブロッキングアーティファクトを除去するために、ループ内またはポストループデブロッキングフィルタ(図示せず)がフィルタブロックに適用され得る。ビデオエンコーダ20はまた、加算器48と加算器50とを含む。図2は、ビデオブロックのインターコーディングのためのビデオエンコーダ20の時間的予測構成要素を示す。説明しやすいように図2には示されていないが、ビデオエンコーダ20は、いくつかのビデオブロックのイントラコーディングのための空間的予測構成要素をも含み得る。
動き推定ユニット32は、1つまたは複数の動きベクトルを発生するためにビデオブロック30を1つまたは複数の隣接ビデオフレーム中のブロックと比較する。以前に符号化されたブロックから再構成されたビデオブロックを記憶するために任意のタイプのメモリまたはデータ記憶デバイスを備え得る参照フレームストア34から、1つまたは複数の隣接フレームが検索され得る。動き推定は、可変サイズ、たとえば、16×16、16×8、8×16、8×8、またはより小さいブロックサイズ、ならびに6×6、10×10、12×12など、非ダイアディックサイズのブロックに対して実行され得る。動き推定ユニット32は、たとえば、レートひずみモデルに基づいて現在ビデオブロック30に最もぴったり一致する隣接フレーム中の1つまたは複数のブロックを識別し、隣接フレーム中のブロックと現在ビデオブロックとの間の変位を判断する。これに基づいて、動き推定ユニット32は、現在ビデオブロック30と、現在ビデオブロック30をコーディングするために使用される参照フレームからの1つまたは複数の一致するブロックとの間の変位の大きさおよび軌道を示す、1つまたは複数の動きベクトル(MV)を生成する。一致する1つまたは複数のブロックは、コーディングすべきブロックのインターコーディングのための予測(predictive)(または予測(prediction))ブロックとして働くことになる。
動きベクトルは、ハーフもしくはクォータピクセル精度、またはさらにより微細な精度を有し得、それによりビデオエンコーダ20は、整数ピクセルロケーションよりも高い精度で動きを追跡し、より良い予測ブロックを取得することが可能になる。端数のピクセル値をもつ動きベクトルを使用するとき、動き補償ユニット36中で補間演算が実行される。動き推定ユニット32は、レートひずみモデルなど、いくつかの基準を使用して、ビデオブロックについての最良のブロック区分および1つまたは複数の動きベクトルを識別する。たとえば、双方向予測の場合、複数の動きベクトルがあり得る。得られたブロック区分および動きベクトルを使用して、動き補償ユニット36は予測ビデオブロックを形成する。
ビデオエンコーダ20は、加算器48において、元の現在ビデオブロック30から、動き補償ユニット36によって生成された予測ビデオブロックを減算することによって残差ビデオブロックを形成する。ブロック変換ユニット38は、残差変換ブロック係数を生成する変換を適用する。図2に示すように、ブロック変換ユニット38は、本開示で説明する技法に従って発生された少なくとも1つの非ダイアディックサイズDCT−IIユニット52を含む。非ダイアディックサイズDCT−IIユニット52は、以下に示すスケーリングされたDCTまたは完全DCTのいずれかを表し得る。DCT−IIユニット52は、本開示で説明する技法を実装するハードウェアモジュール、または(ソフトウェアコードまたは命令を実行するデジタル信号プロセッサまたはDSPなど)ハードウェアおよびソフトウェア組合せモジュールを表す。ブロック変換ユニット38は、非ダイアディックサイズDCT−IIユニット52を残差ブロックに適用して、残差変換係数の非ダイアディックサイズのブロックを生成する。DCT−IIユニット52は、概して、残差ピクセルデータとして表される空間領域から、DCT係数として表される周波数領域に残差ブロックを変換する。変換係数は、少なくとも1つのDC係数と1つまたは複数のAC係数とを含むDCT係数を備え得る。
DCT−IIユニット52は、本開示の技法を実行して、残差データのダイアディックサイズのブロックと非ダイアディックサイズのブロックの両方を含む、残差データの偶数サイズのブロックを処理する。以下でより詳細に説明するように、DCT−IIユニット52は、DCT−IIを計算するために再帰的プロセスを実装し得、それにより、残差データの20×20ブロックなど、大きい残差データのブロックのためのDCT−IIは、20×20データブロックを操作して、10×10DCT−IIと10×10DCT−IIIとを使用して処理され得る2つの10×10データブロックを生成することによって計算され得る。DCT−IIユニット52は、次いで、20×20DCT−IIを解決するのと同じ方式で10×10DCT−IIを計算する。すなわち、DCT−IIユニット52は、10×10データブロックを操作して、5×5DCT−IIと5×5DCT−IIIとを使用して処理され得る2つの5×5データブロックを生成する。奇数サイズDCT−IIは、それ以上分割することができないので、DCT−IIユニット52は、それ以上再帰することなしに、5×5データブロックについて5×5DCT−IIを直接計算する。DCT−IIユニット52は、5×5DCT−IIの直接計算された結果とともにこの再帰的反復から戻り、他の5×5データブロックに適用されるときに、5×5DCT−IIIの結果を直接計算する。DCT−IIユニット52は、DCT−IIIによって判断された結果を並べ替え、次いで、この再帰的反復から戻る。前の反復に戻った後、DCT−IIユニット52は、残差データの他の10×10ブロックについて10×10DCT−IIIを直接計算し、10×10DCT−IIIを計算した結果を並べ替える。DCT−IIユニット52は、次いで、10×10DCT−IIを計算することからの結果と、10×10DCT−IIIを計算することの並べ替えられた結果とをDCT係数の20×20ブロックとして出力する。
量子化ユニット40は、ビットレートをさらに低減するために残差変換ブロック係数を量子化する(たとえば、丸める)。上述のように、量子化ユニット40は、場合によっては、スケーリングされたDCT−IIユニット52によるDCT−IIの実装において考慮されないファクタを組み込むことによって、スケーリングされた偶数サイズDCT−IIユニット52のスケーリングされた性質を考慮する。量子化は一般に乗算を含むので、これらのファクタを量子化ユニット40に組み込むことが量子化ユニット40の実装複雑さを増加させることはない。この点において、スケーリングされた非ダイアディック偶数サイズDCT−IIユニット52は、量子化ユニット40の実装複雑さを増加させることなしにDCT−IIユニット52の実装複雑さを減少させ、その結果、ビデオエンコーダ20に関する実装複雑さが純減する。
エントロピーコーディングユニット46は、量子化係数をエントロピーコーディングして、ビットレートをなお一層低減する。エントロピーコーディングユニット46は、場合によってはエントロピーコーディングと呼ばれる統計的ロスレスコーディングを実行する。エントロピーコーディングユニット46は、量子化DCT係数の確率分布をモデル化し、モデル化された確率分布に基づいてコードブック(たとえば、CAVLCまたはCABAC)を選択する。このコードブックを使用して、エントロピーコーディングユニット46は、量子化DCT係数を圧縮する方式で、各量子化DCT係数のためのコードを選択する。例示のために、エントロピーコーディングユニット46は、頻繁に発生する量子化DCT係数のための(ビット換算で)短いコードワードと、より少ない頻度で発生する量子化DCT係数のための(ビット換算で)より長いコードワードを選択し得る。短いコードワードが量子化DCT係数よりも少ないビットを使用する限り、概して、エントロピーコーディングユニット46は量子化DCT係数を圧縮する。エントロピーコーディングユニット46は、ビデオデコーダ26に送られるビットストリームとしてエントロピーコード化係数を出力する。一般に、ビデオデコーダ26は、図3の例に関して説明するように、ビットストリームからの符号化ビデオを復号および再構成するために逆演算を実行する。
再構成ユニット42および逆変換ユニット44は、それぞれ量子化係数を再構成し、逆変換を適用して、残差ブロックを再構成する。逆変換ユニット44は、本開示で説明する技法に従って(DCT−IIIとも呼ばれる)逆DCT−IIを実装する非ダイアディックDCT−IIユニット52の逆バージョンを含む。この逆バージョンは、図1の例に非ダイアディックサイズDCT−IIIユニット45として示されており、非ダイアディックサイズDCT−IIIユニット45は、図3に関して以下で説明する非ダイアディックサイズDCT−IIIユニット68に実質的に同様であり得る。合計ユニット50は、再構成された残差ブロックを、動き補償ユニット36によって生成された動き補償予測ブロックに加算して、参照フレームストア34に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックを符号化するために動き推定ユニット32および動き補償ユニット36によって使用される。
図3は、図1のビデオデコーダ26の一例を示すブロック図である。ビデオデコーダ26は、少なくとも部分的に、まとめて集積回路デバイスと呼ばれることがある1つまたは複数の集積回路デバイスとして形成され得る。いくつかの態様では、ビデオデコーダ26は、ワイヤレス通信デバイスハンドセットの一部を形成し得る。ビデオデコーダ26はビデオフレーム内のブロックのイントラ復号およびインター復号を実行し得る。図3に示すように、ビデオデコーダ26は、ビデオエンコーダ20によって符号化された符号化ビデオビットストリームを受信する。図3の例では、ビデオデコーダ26は、エントロピー復号ユニット54と、動き補償ユニット56と、再構成ユニット58と、逆変換ユニット60と、参照フレームストア62とを含む。エントロピー復号ユニット64は、コーディングするのに有用なデータを取得するために、メモリ64に記憶された1つまたは複数のデータ構造にアクセスし得る。ビデオデコーダ26は、加算器66の出力をフィルタ処理するループ内デブロッキングフィルタ(図示せず)をも含み得る。ビデオデコーダ26は加算器66をも含む。図3は、ビデオブロックのインター復号のためのビデオデコーダ26の時間的予測構成要素を示す。図3には示されていないが、ビデオデコーダ26は、いくつかのビデオブロックのイントラ復号のための空間的予測構成要素をも含み得る。
エントロピー復号ユニット54は、符号化ビデオビットストリームを受信し、そのビットストリームから、量子化残差係数および量子化パラメータ、ならびに、マクロブロックコーディングモード、および動きベクトルとブロック区分とを含み得る動き情報など、他の情報を復号する。動き補償ユニット56は、動きベクトルと、ブロック区分と、参照フレームストア62からの1つまたは複数の再構成された参照フレームとを受信して、予測ビデオブロックを生成する。
再構成ユニット58は、量子化されたブロック係数を逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)する。逆変換ユニット60は、逆変換、たとえば、逆DCTを係数に適用して残差ブロックを生成する。より詳細には、逆変換ユニット60は、逆変換ユニット60が残差ブロックを生成するために係数に適用する非ダイアディックサイズDCT−IIIユニット68を含む。非ダイアディックサイズDCT−III68は、スケーリングされたDCT−III実装または完全DCT−III実装のいずれかを表す。図2に示す非ダイアディックサイズDCT−IIユニット52の逆元である非ダイアディックサイズDCT−IIIユニット68は、周波数領域から空間領域に係数を変換して、残差ブロックを生成し得る。上記の量子化ユニット40と同様に、再構成ユニット58は、場合によっては、ほとんど実装複雑さの増加なしにファクタを再構成プロセスに組み込むことによって、DCT−IIIユニット68のスケーリングされた性質を考慮する。これらのファクタを含まないように、スケーリングされた非ダイアディックサイズDCT−IIIを計算することにより、実装複雑さが低減し、その結果、ビデオデコーダ26に関する複雑さが純減し得る。
次いで、予測ビデオブロックは、加算器66によって残差ブロックと加算されて、復号ブロックを形成する。復号されたブロックをフィルタ処理してブロッキングアーティファクトを除去するために、デブロッキングフィルタ(図示せず)が適用され得る。フィルタ処理されたブロックは次いで参照フレームストア62に入れられ、参照フレームストア62は、後続のビデオフレームの復号のために参照フレームを与え、また、ディスプレイデバイス28(図1)を駆動するために復号ビデオを生成する。
図4は、本開示で説明する技法に従って実装された、図2の例に示されている非ダイアディックサイズDCT−IIユニット52などの非ダイアディックサイズDCT−IIユニットによって実行される例示的な再帰的反復を示すフローチャートである。再帰的アルゴリズムまたはプロセスは、本開示で説明するアルゴリズムをプロセッサに実行させるコンピュータ可読記憶媒体に記憶された、コンピュータプログラムなど、複数の命令として実装され得る。代替的に、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または他のタイプの同様のハードウェアなど、専用ハードウェアは、図4の例に関して説明する再帰的反復を使用して所与の非ダイアディックまたは偶数サイズのDCT−IIを実行するように本開示の技法を実装し得る。本技法は、再帰的アルゴリズムの特定の実装に限定されるべきではない。
初めに、DCT−IIユニット52は、実行すべき非ダイアディックDCT−IIのサイズを判断する(70)。通常、DCT−IIユニット52は、DCT−IIユニット52が受信した残差データのブロックのサイズに基づいてこの判断を行う。残差データブロックのサイズが2の倍数であると判断された場合(「YES」72)、DCT−IIユニット52は、DCT−IIユニット52への入力値の相互加算と相互減算とを含むバタフライを計算し(74)、入力値は、ビデオエンコーダの例では残差ブロック値を含み得る。バタフライは、概して、偶数入力と呼ばれることがある入力の第1のサブセットを相互減算および/または相互加算する偶数部分と、奇数入力と呼ばれることがある入力の第2のサブセットを相互減算および/または相互加算する奇数部分とを含む。DCT−IIユニット52は、次いで、以下の図5Bの例に示すように、非ダイアディックサイズDCT−IIの奇数部分についての奇数入力の順序を逆転させる(76)。DCT−IIユニット52は、また本開示の再帰的技法に従って、同じく図5Bの例に関して以下で示す、実装の奇数部分についての一連の再帰的減算を計算する(78)。DCT−IIユニット52は、次いで、再帰的減算の結果を入力として使用して、実行すべきDCT−IIのサイズの1/2のサイズのサブDCT−IIIを直接計算する(80)。DCT−IIユニット52は、次いで、サブDCT−IIIを計算した結果にスケールファクタを適用する(81)。
一方、奇数部分の順序を逆転させること、再帰的減算を計算すること、およびサブDCT−IIIを計算することの前、後、またはそれらと同時に、DCT−IIユニット52は、バタフライ出力の偶数部分について、実行すべきDCT−IIの判断されたサイズの1/2のサイズの完全サブDCT−IIを計算する(82)。バタフライ出力の偶数部分についてこのサブDCT−IIを計算するために、DCT−IIユニット52は、概して、別の再帰的反復を実行し、それにより、実行すべきDCT−IIの判断されたサイズの1/2のサイズのサブDCT−IIは、上記で説明したステップ70〜82を受ける。この再帰的反復は、サブDCT−IIのうちの1つが奇数サイズになるまで繰り返し、その後、DCT−IIユニット52は、このサブDCT−IIのサイズが2の倍数でないことを判断し(「NO」72)、奇数サイズのサブDCT−IIを直接計算する(84)。本明細書で使用する「直接計算する」という用語は、特定のサイズのDCT−IIまたはDCT−IIIを判断するために使用される行列係数を記憶するライブラリまたはデータストアにアクセスするプロセスを指す。DCT−IIユニット52は、サブDCT−IIとサブDCT−IIIとを計算した後に、偶数部分(サブDCT−II)からの結果と奇数部分(サブDCT−III)からの結果とを合成する(85)。
いずれの場合も、偶数サイズまたは奇数サイズの完全サブDCT−IIを計算した後、あるいはサブDCT−IIIを計算した後に、再帰的反復は、結果をDCT係数として出力することによって終了する(86)。単一の再帰的反復から戻ることは前の再帰的反復に戻ることになり得ると考えると、出力結果は記憶され得、その後、その再帰的反復が完了すると、より多くの結果が出力され、結果のすべてがDCT係数として出力されるまで、以下同様である。この点において、本技法は、特に、従来のダイアディックサイズのDCT−IIと比較して、非ダイアディックサイズのDCT−IIについて考えるとき、任意のサイズの入力データブロックに対してDCT−IIを実行することが可能であるDCT−II実装を提供するとともに、実装複雑さの減少とコーディング効率の増加とをも促進し得る。
図5A〜図5Bは、サイズnの偶数サイズ完全DCT−II90を実行するための、本開示で説明する再帰的技法の反復を示すブロック図である。図5Aは、サイズnのDCT−II90を示すブロック図であり、nは2の倍数であると仮定される。図5Aの例に示すように、偶数サイズ完全DCT−II90は、x(0)、...、x(n−1)と示されたn個の入力を受信し、CII(0)、...、CII(n−1)と示されたn個のDCT−II係数を判断する。上記で説明したように、DCT−IIユニット52によって実装される本開示の再帰的技法は、初めに、実行すべきDCT−II90のサイズを判断する。偶数サイズDCT−II90の例に関して、DCT−IIユニット52は、残差データのn×nブロックを受信し、偶数サイズDCT−II90によって表されるnサイズのDCT−IIを実行する必要があると判断する。
図5Bは、本開示で説明する再帰的技法の第1の反復に従ってDCT−II90を実行するためのDCT−IIユニット52による演算を示すブロック図である。DCT−IIユニット52は、nが2の倍数であると判断した後、上記で説明した方式でバタフライ92を計算する。DCT−IIユニット52はまた、同じく上記で説明した方式で、サブDCT−II94とサブDCT−III100とを計算する。DCT−IIユニット52は、バタフライ92によって出力された値の第1のセットをサブDCT−II94に向け、バタフライ92によって出力された値の第2のセットをサブDCT−III100に向ける。値の第1のセットは、偶数バタフライ相互加算および/または相互減算入力値x(0)、x(2)、...、x(n−2)を表し得、値の第2のセットは、奇数バタフライ相互加算および/また相互減算入力値x(1)、x(3)、...、x(n−1)を表し得る。DCT−IIユニット52は、次いで、これらの奇数入力値の順序が逆転されるように順序逆転を判断する。順序逆転は、順序逆転ユニット102として示されている。DCT−IIユニット52は、次に、奇数順序逆転入力値に対して再帰的減算を実行する再帰的減算ユニット106によって、説明した方式で再帰的減算を計算する。DCT−IIユニット52は、次いで、上記で説明した方式で、図5Bの例ではサブDCT−III108によって表されるn/2ポイントのサブDCT−IIIを計算する。サブDCT−III108は、ファクタ104を乗算された奇数出力値を出力する。
DCT−IIユニット92は、サブDCT−II94のサイズすなわちn/2が2の倍数であると仮定すると、別の再帰的反復によってn/2ポイントのサブDCT−II94を計算する。2の倍数であると判断された場合、DCT−IIユニット52は、図5Bの例では非ダイアディックサイズDCT−II90の代わりにサブDCT−IIを使用し、その後、DCT−IIユニット52は、サブDCT−II94を計算するために、非ダイアディックサイズDCT−II90に関して上記で示したステップを繰り返す。これらの再帰的反復は、上記で説明したように、DCT−IIユニット92が、後続のサブDCT−IIのうちの1つが2の倍数のサイズでないと判断するまで続く。
所与の偶数サイズのDCT−IIを実行するためのこのアルゴリズムがどのように数学的に導出され得るかを説明するために、以下の式について考える。最初に、タイプIIのDCTおよび逆DCT−IIは、それぞれ以下の式(1)によって定義され得る。
Figure 0005529257
ここで、k=0場合は正規化ファクタ
Figure 0005529257
であり、他の場合はλ(k)=1である。
また、タイプIVのDCTおよびその逆元は、それぞれ以下の式(2)によって数学的に定義され得る。
Figure 0005529257
サブDCT−IIおよびサブDCT−IVへのDCT−IIのデシメーションは、(省略された正規化ファクタをもつ)偶数サイズDCT−II行列が、サブDCT−II行列とサブDCT−IV行列との直和(direct sum)を含んでいる積に因数分解可能であることを示す以下の式(3)に基づく。
Figure 0005529257
上式で、PNは、以下の並べ替えを生成する置換行列である。
Figure 0005529257
特に、IN/2およびJN/2は、相応してN/2×N/2恒等行列および順序逆転行列を示す。
実行すべき偶数サイズのDCT−IIの分割は、式(3)に従って進み、分割から生じたサブDCT−IIは上記の式(1)によって表され得、分割から生じたサブDCT−IVは上記の式(2)によって表され得る。次に、等しいサブDCT−IIIでのサブDCT−IVの置換が実行され得、置換は、これらの様々なタイプのDCTの特定の性質に基づく。タイプIIIの第1のDCTについて考えると、これらのDCT−IIIは、DCT−IIの逆元(または転置)であるという性質を有し、これは以下の式(4)によって数学的に示される。
Figure 0005529257
次に、タイプIVのDCTについて考えると、DCT−IVは、インボリュート(または自己逆元/自己転置)であるという性質を有し、これは以下の式(5)によって数学的に示される。
Figure 0005529257
その上、DCT−IVは、以下の式(6)によって示される簡約を使用してDCT−IIに簡約化され得る。
Figure 0005529257
式(6)のRNは、以下の式(7)によって表される再帰的減算の行列であり、
Figure 0005529257
Nは、以下の式(8)によって表されるファクタの対角行列である。
Figure 0005529257
式(6)に従ってサブDCT−IVを実装することにより、式(8)に示されているファクタがサブDCT−IVへの入力に適用され、これにより因数分解が不可能になる。
サブDCT−IVを因数分解することの問題を克服し、それによって実装複雑さを低減するために、式(6)のDCT−II
Figure 0005529257
は、式(4)によって表されるDCT−IIIの性質を使用してDCT−IIIで置換され得る。この置換は、以下の式(9)によって数学的に表され得る。
Figure 0005529257
式(9)において、DNとRNとの順序は、DCT−IIIでDCT−IIを置換することによって、式(6)中のこれらの同じマトリックスの順序に関して交換または逆転されている。この逆転により、式(8)のファクタは、現在、DCT−IIIの出力に適用され、これにより、以下の図8に関して示すように、DCT−IVの実装の因数分解が可能になる。
図6は、ダイアディックサイズDCT−IIと非ダイアディックサイズDCT−IIの両方の効率的な実装についての、実装複雑さに対するコーディング利得のグラフ110を示す図である。ダイアディックサイズDCT−IIと非ダイアディックサイズDCT−IIの両方の効率的な実装は、本開示で示す再帰的アルゴリズムを使用して導出される。グラフ110のy軸は、コーディング利得をデシベル(dB)で示す。グラフ110のx軸は、ポイントごとの演算に関する実装複雑さを示し、ポイントは、対応するダイアディックサイズまたは非ダイアディックサイズのデータサンプルを示す。
コーディング利得は、以下の数式(9.5)に関して定義され得る。
Figure 0005529257
上式で、
Figure 0005529257
は、i番目の変換係数(すなわち、行列中のi番目の対角要素)の分散を示し、||fi||2は、変換行列のi番目の基底関数のL2ノルムを示す(L2ノルムは、正規直交基底を用いた変換の場合、1になる)。本質的に、このコーディング利得メトリックは、十分に高いレートの下での変換コーディングによる平均2乗誤差(MSE)の低減になるであろうものを与える。
いずれの場合も、コーディング利得および実装複雑さは、様々な理由、たとえば、入力データタイプおよび/または乗算の実装のために変動し得るので、コーディング利得および複雑さは様々な仮定の下で計算される。第1に、複雑さ計算は、加算と減算とシフト演算とが、実装複雑さに関してそれぞれ等しいと仮定する。第2に、ただし、各乗算は、複雑さ計算によって、等しく複雑な加算、減算およびシフト演算の3倍の演算を含むと仮定される。コーディング利得計算に関して、入力は、0.95に等しい相関係数ρ(ロー)をもつ定常マルコフ1過程(stationary Markov-1 process)であると仮定される。
数学的に、複雑さ計算は以下の式に従って導出され得る。以下の式(10)は、因数分解後のサイズNのスケーリングされたDCT−II変換を示す。
Figure 0005529257
上式で、
Figure 0005529257
は、係数の並べ替えを定義する行列を示し、ΔNは、スケールファクタの対角行列を示し、
Figure 0005529257
は、残りのスケーリングされた変換の行列を示す。これらの表記法について考えると、式(10)の
Figure 0005529257
は、式(3)において
Figure 0005529257
と置き換えられて、以下の式(11)を生じ得る。
Figure 0005529257
すると、アルゴリズムは、以下の式(12)および式(13)に従って表され得る。
Figure 0005529257
以下の式(14)および式(15)は、NサイズのDCT−IIの完全実装とスケーリングされた実装との概略的な複雑さ推定値を表す。
Figure 0005529257
上式で、「m」は、実装における乗算の数を示し、「a」は、実装における加算の数を示し、「s」は、実装におけるシフトの数を示す。「α」および「δ」変数は、上記の仮定の下では3に等しい乗算演算の複雑さの大きさを増加または減少させるための制御可能なファクタである。「β」および「ε」は、上記の仮定の下では1に等しい加算演算の複雑さの大きさを増加または減少させるための制御可能なファクタである。「γ」および「ζ」は、上記の仮定の下では1に等しいシフト演算の複雑さの大きさを増加または減少させるための制御可能なファクタである。これらの式から、式(13)から判断されたアルゴリズム出力を仮定すれば、式(14)および式(15)から複雑さ計算が導出され、この複雑さ計算は以下の式(16)によって表される。
Figure 0005529257
図6に示すように、グラフ110は、それぞれが、いくつかの例では異なるタイプのシェーディングをもつ様々な形状として示されているポイントのセットを含む。ダイアディックサイズDCT−IIの場合、サイズ2(または2×2もしくは2ポイント)のDCT−IIは塗りつぶしなしの正方形によって表され、サイズ4(または4×4もしくは4ポイント)のDCT−IIは塗りつぶしなしの三角形によって表され、サイズ8のDCT−IIは塗りつぶしなしの円によって表される。非ダイアディックサイズDCT−IIの場合、サイズ3(または3×3もしくは3ポイント)のDCT−IIは塗りつぶされた円によって表され、サイズ6(または6×6もしくは6ポイント)のDCT−IIは「X」によって表され、サイズ12(または12×12もしくは12ポイント)のDCT−IIは「X」で埋められた正方形によって表される。
上記の仮定の下で、上記のキーが与えられれば、グラフ110は、ダイアディックのサイズ2のDCT−IIの実装が、最も低いコーディング利得と最も低い実装複雑さとを与えることを示す。非ダイアディックのサイズ3のDCT−IIを実行することは、同様のサイズのサイズ2のDCT−IIよりもほぼ2dB高いコーディング利得を与え、サイズ2(または2×2)のDCT−IIの実装と比較して、複雑さの増加が極最小である。ダイアディックのサイズ4(または4×4)のDCT−IIの実装は、同様のサイズのサイズ3のDCT−II実行することよりも約1dB未満高いコーディング利得を与え、(サイズ2の実装からサイズ3の実装への複雑さの増加と比較して)複雑さの増加が大きい。
本開示の技法によって定義された実装を用いて非ダイアディックのサイズ6のDCT−IIを実行することは、同様のサイズのサイズ4のDCT−IIよりも約1dB高いコーディング利得を与え、(同じく、サイズ3の実装からサイズ4の実装への複雑さの増加と比較して)複雑さの増加が小さい。ダイアディックのサイズ8のDCT−IIの実装は、本開示の技法によって定義された実装を用いて、同様のサイズのサイズ6のDCT−IIを実行することよりも約1/2dB高いコーディング利得を与えるが、(サイズ4からサイズ6への増加と比較して)複雑さの増加が大きいという欠点がある。本開示の技法に従って定義された実装を用いて非ダイアディックのサイズ12のDCT−IIを実行することは、同様のサイズのサイズ8のDCT−IIよりも約1/3高いコーディング利得を与え、実装複雑さの増加が極小さい。
この点において、本開示の技法に従って定義された実装を用いて非ダイアディックサイズDCT−IIを実行することは、コーディング利得と実装複雑さとの比の観点から、また本開示の技法に従って実行され得る、同様のサイズのダイアディックサイズDCT−IIよりも効率的であり得る。上記で詳細には示していないが、スケーリングされた実装は、本開示で説明する理由のために、スケーリングされていない実装よりも概して効率的であるので、ダイアディックおよび非ダイアディックサイズDCT−IIの各々を、スケーリングされていない実装または完全実装ではなく、スケーリングされた実装によって実行した。一般に、スケーリングされていないダイアディックDCT−IIよりも良好なコーディング利得と複雑さとの比を与えるスケーリングされた実装に関して説明したが、スケーリングされていない非ダイアディックDCT−IIに対して同じ利益が生じ得る。この点において、アルゴリズムの因数分解態様は、除去され得るが、スケーリングされていないダイアディックDCT−IIと比較したとき、非ダイアディックDCT−IIのより効率的なスケーリングされていない実装または完全実装を依然として生じ得る。
図7は、本開示で説明する技法に従って実装された、図2の例に示されている非ダイアディックサイズDCT−IIユニット52などのスケーリングされた非ダイアディックサイズDCT−IIユニットによって実行される例示的な再帰的反復を示すフローチャートである。この場合も、再帰的アルゴリズムまたはプロセスは、本開示で説明するアルゴリズムをプロセッサに実行させるコンピュータ可読記憶媒体に記憶された、コンピュータプログラムなど、複数の命令として実装され得る。代替的に、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または他のタイプの同様のハードウェアなど、専用ハードウェアは、図4の例に関して説明する再帰的反復を使用して所与の非ダイアディックまたは偶数サイズのDCT−IIを実行するように本開示の技法を実装し得る。本技法は、再帰的アルゴリズムの特定の実装に限定されるべきではない。
図7の例は、図4、図5A〜図5Bの例に関して前に説明した技法の適応を表す。図7の例に示す適応は、完全サブDCT−IIと完全サブDCT−IIIとを計算するのではなく、スケーリングされたサブDCT−IIと完全またはスケーリングされていないサブDCT−IIIとを計算することによってスケーリングされたDCT−II実装を生成する、異なるアルゴリズムを含む。この適応されたアルゴリズムは、図5Bの例示的な実装形態に関して示したファクタ106を含まない、DCT−IIのスケーリングされた実装を生じる。
初めに、DCT−IIユニット52は、実行すべき非ダイアディックDCT−IIのサイズを判断する(120)。通常、DCT−IIユニット52は、DCT−IIユニット52が受信した残差データのブロックのサイズに基づいてこの判断を行う。残差データブロックのサイズが2の倍数であると判断された場合(「YES」122)、DCT−IIユニット52は、DCT−IIユニット52への入力値の相互加算と相互減算とを含むバタフライを計算し(124)、入力値は、ビデオエンコーダの例では残差ブロック値を含み得る。バタフライは、概して、偶数入力と呼ばれることがある入力の第1のサブセットを相互減算および/または相互加算する偶数部分と、奇数入力と呼ばれることがある入力の第2のサブセットを相互減算および/または相互加算する奇数部分とを含む。DCT−IIユニット52は、次いで、以下の図8の例に示すように、非ダイアディックサイズDCT−IIの奇数部分についての奇数入力の順序を逆転させる(126)。DCT−IIユニット52は、また本開示の再帰的技法に従って、同じく図9の例に関して以下で示される、実装の奇数部分についての一連の再帰的減算を計算する(128)。DCT−IIユニット52は、次いで、再帰的減算の結果を入力として使用して、実行すべきDCT−IIのサイズの1/2のサイズのサブDCT−IIIを直接計算する(130)。
一方、奇数部分の順序を逆転させること、再帰的減算を計算すること、およびサブDCT−IIIを計算することの前、後、またはそれらと同時に、DCT−IIユニット52は、バタフライ出力の偶数部分について、実行すべきDCT−IIの判断されたサイズの1/2のサイズのスケーリングされたサブDCT−IIを計算する(132)。バタフライ出力の偶数部分についてこのサブDCT−IIを計算するために、DCT−IIユニット52は、概して、別の再帰的反復を実行し、それにより、実行すべきDCT−IIの判断されたサイズの1/2のサイズのサブDCT−IIは、上記で説明したステップ120〜132を受ける。この再帰的反復は、スケーリングされたサブDCT−IIのうちの1つが奇数サイズになるまで繰り返し、その後、DCT−IIユニット52は、このスケーリングされたサブDCT−IIのサイズが2の倍数でないことを判断し(「NO」122)、奇数サイズのサブDCT−IIを直接計算する(134)。本明細書で使用する「直接計算する」という用語は、この場合も、特定のサイズのDCT−IIまたはDCT−IIIを判断するために使用される行列係数を記憶するライブラリまたはデータストアにアクセスするプロセスを指す。DCT−IIユニット52は、サブDCT−IIとサブDCT−IIIとを計算した後に、偶数部分(サブDCT−II)からの結果と奇数部分(サブDCT−III)からの結果とを合成する(133)。
いずれの場合も、偶数サイズまたは奇数サイズのスケーリングされたサブDCT−IIを計算した後、あるいはサブDCT−IIIを計算した後に、再帰的反復は、結果をDCT係数として出力することによって終了する(136)。単一の再帰的反復から戻ることは前の再帰的反復に戻ることになり得ると考えると、出力結果は記憶され得、その後、その再帰的反復が完了すると、より多くの結果が出力され、結果のすべてがDCT係数として出力されるまで、以下同様である。この点において、本技法は、特に、従来のダイアディックサイズのDCT−IIと比較して、スケーリングされた非ダイアディックサイズのDCT−IIについて考えるとき、任意のサイズの入力データブロックに対してDCT−IIを実行することが可能であるスケーリングされたDCT−II実装を提供するとともに、実装複雑さの減少とコーディング効率の増加とをも促進し得る。
図8は、サイズnの偶数サイズのスケーリングされたDCT−II160を実行するための、本開示で説明する再帰的技法の反復を示すブロック図である。DCT−III160は、サブDCT−II94がスケーリングされたサブDCT−II162と置き換えられ、ファクタ104が除去されていることを除いて、図5Bの例に示した非ダイアディックサイズDCT−II実装90と同様である。すなわち、順序逆転ユニット102と、再帰的減算106と、サブDCT−III実装108とを含むスケーリングされたDCT−II実装160の奇数部分は、図5Aの例に示した偶数サイズDCT−II90などの偶数サイズDCT−IIから直接計算され得る。この計算は、奇数部分がこれらのファクタを含まないような方式で奇数部分を直接計算することによって、ファクタの除去を本質的に含み得る。この意味で、ファクタ104は、上記の式中で言及したサブDCT−IVの実装から除去されている。上記で説明したように、量子化ファクタは、ファクタ104を考慮するために更新済みであり得る。これにより、ビデオエンコーダ20およびビデオデコーダ26など、ビデオエンコーダおよびデコーダの全体的な実装複雑さが低減する。
非ダイアディックサイズDCTに関して本開示で説明したが、本技法は、ダイアディックサイズDCTの、最適でないとしても効率的な実装を判断するために、これらのダイアディックサイズDCTに適用し得る。しかしながら、以下の図6に示すように、非ダイアディックサイズDCTは、ダイアディックサイズDCTよりも良好な、コーディング効率と実装複雑さとの比を与え得、実装複雑さを過度に増加させることなしにコーディングを改善し得る。
本開示の技法は、モバイルフォンなどのワイヤレス通信デバイスハンドセット、集積回路(IC)またはICのセット(すなわち、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。本明細書で説明した技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せでも実装され得る。モジュール、ユニット、または構成要素として説明した特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。場合によっては、様々な特徴は、集積回路チップまたはチップセットなどの集積回路デバイスとして実装され得る。
ソフトウェアで実装する場合、これらの技法は、プロセッサで実行されると、上記で説明した方法の1つまたは複数を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現され得る。コンピュータ可読媒体は、物理的構造物であるコンピュータ可読記憶媒体を備え得、パッケージング材料を含むことがあるコンピュータプログラム製品の一部をなし得る。この意味で、コンピュータ可読媒体は非一時的であり得る。コンピュータ可読記憶媒体は、同期ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などを備え得る。
コードまたは命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、または複合ビデオコーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
本開示はまた、本開示で説明した技法の1つまたは複数を実装する回路を含む様々な集積回路デバイスのいずれかを企図する。そのような回路は、単一の集積回路チップ、またはいわゆるチップセット中の複数の相互運用可能な集積回路チップで提供され得る。そのような集積回路デバイスは様々な適用例において使用され得、適用例のいくつかは携帯電話ハンドセットなどのワイヤレス通信デバイスでの使用を含み得る。
本開示の様々な技法について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
タイプIIのスケーリングされた離散コサイン変換(DCT−II)を実行する方法であって、前記方法が、
装置を用いて、実行すべき前記スケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記スケーリングされたDCT−IIを実行することと
を備え、
前記スケーリングされたDCT−IIを実行することが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
を含む、方法。
[C2]
前記バタフライを計算することと、前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記スケーリングされたサブDCT−IIを計算することと、前記完全DCT−IIを計算することとは、前記再帰によって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで前記サブDCT−IIに関して再帰的に行われる、C1に記載の方法。
[C3]
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるかどうかを判断することと、
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記スケーリングされたサブDCT−IIを実行することと
をさらに備え、
前記スケーリングされたサブDCT−IIを実行することが、
前記スケーリングされたサブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算することであって、前記別のバタフライが、前記スケーリングされたサブDCT−IIへの前記入力の第1のサブセットを発生する第1の部分と、前記スケーリングされたサブDCT−IIへの前記入力の第2のサブセットを発生する第2の部分とを含む、別のバタフライを計算することと、
前記スケーリングされたサブDCT−IIへの前記入力の逆順の第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記スケーリングされたサブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記サブDCT−IIへの前記入力の前記第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、追加のスケーリングされたサブDCT−IIを計算することと、
前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算することと、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれの追加のスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
を含む、C1に記載の方法。
[C4]
量子化行列の実装複雑さを増加させることなしに前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する、前記量子化行列の量子化係数を構成することをさらに備える、C1に記載の方法。
[C5]
前記スケーリングされたサブDCT−IIを計算することが、前記スケーリングされたDCT−IIユニットの実装複雑さを低減するようにファクタを本質的に除去する方式で、前記スケーリングされたサブDCT−IIを計算することを備える、C1に記載の方法。
[C6]
前記装置がビデオコーダを備え、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断することが、
残差ビデオデータのブロックを受信することと、
残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断することと、
残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断することと
を備え、
前記スケーリングされた出力値がDCT係数を備え、
前記方法が、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する量子化係数に従って前記DCT係数を量子化するために、前記ビデオコーダの量子化ユニットを用いて量子化を実行することをさらに備える、C1に記載の方法。
[C7]
前記装置が、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、C1に記載の方法。
[C8]
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加の出力を発生するために前記スケーリングされたDCT−IIを直接計算することと、相互減算された入力の前記第2のサブセットの前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記スケーリングされたサブDCT−IIを計算することと、前記完全サブDCT−IIIを計算することと、出力の前記第1および第2のセットを並べ替えることとをさらに備える、C1に記載の方法。
[C9]
実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記スケーリングされたDCT−IIを実行する、スケーリングされたDCT−IIユニット
を備え、
前記スケーリングされたDCT−IIユニットが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させる順序逆転ユニットと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算する、スケーリングされたサブDCT−IIユニットと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットと
を含み、
前記スケーリングされたDCT−IIユニットが、前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替える、メディアコーディングデバイス。
[C10]
前記スケーリングされたDCT−IIユニットは、前記再帰によって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで、前記サブDCT−IIに関して、前記バタフライを計算し、前記順序を逆転させ、前記一連の再帰的減算を計算し、前記スケーリングされたサブDCT−IIを計算し、前記完全DCT−IIを再帰的に計算する、C9に記載のメディアコーディングデバイス。
[C11]
前記スケーリングされたサブDCT−IIユニットが、前記スケーリングされたサブDCT−IIのサイズが2の倍数であるかどうかを判断し、前記スケーリングされたサブDCT−IIのサイズが2の倍数であると判断したことに応答して、前記スケーリングされたサブDCT−IIを実行し、
前記スケーリングされたサブDCT−IIユニットが、
前記スケーリングされたサブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算する追加のバタフライユニットであって、前記別のバタフライが、前記スケーリングされたサブDCT−IIへの前記入力の第1のサブセットを発生する第1の部分と、前記スケーリングされたサブDCT−IIへの前記入力の第2のサブセットを発生する第2の部分とを含む、追加のバタフライユニットと、
前記スケーリングされたサブDCT−IIへの前記入力の逆順の第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させる、追加の順序逆転ユニットと、
前記スケーリングされたサブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する、追加の再帰的減算ユニットと、
前記サブDCT−IIへの前記入力の前記第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、追加のスケーリングされたサブDCT−IIを計算する、追加のスケーリングされたサブDCT−IIユニットと、
前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算する、追加の完全サブDCT−IIユニットと
を含み、
前記サブDCT−IIユニットが、前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれの追加のスケーリングされたサブDCT−IIユニットと完全サブDCT−IIIユニットとによって生成された出力の第1および第2のセットを並べ替える、C9に記載のメディアコーディングデバイス。
[C12]
量子化行列の実装複雑さを増加させることなしに前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する、前記量子化行列を含む量子化ユニットをさらに備える、C9に記載のメディアコーディングデバイス。
[C13]
前記スケーリングされたサブDCT−IIユニットが、前記スケーリングされたDCT−IIユニットの実装複雑さを低減するようにファクタを本質的に除去する方式で、前記スケーリングされたサブDCT−IIを計算する、C9に記載のメディアコーディングデバイス。
[C14]
前記メディアコーディングデバイスがビデオコーダを備え、
前記スケーリングされたDCT−IIユニットが、残差ビデオデータのブロックを受信し、残差ビデオデータの前記ブロックのサイズが2の倍数であるかどうかを判断し、残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断し、
前記スケーリングされた出力値がDCT係数を備え、
前記メディアコーディングデバイスが、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する量子化係数に従って前記DCT係数を量子化する量子化ユニットをさらに備える、C9に記載のメディアコーディングデバイス。
[C15]
前記メディアコーディングデバイスが、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、C9に記載のメディアコーディングデバイス。
[C16]
前記スケーリングされたDCT−IIユニットが、実行すべき前記スケーリングされたDCT−IIのサイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加の出力を発生するために前記スケーリングされたDCT−IIを直接計算し、相互減算された入力の前記第2のサブセットの順序を逆転させ、前記一連の再帰的減算を計算し、前記スケーリングされたサブDCT−IIを計算し、前記完全サブDCT−IIIを計算し、出力の前記第1および第2のセットを並べ替える、C9に記載のメディアコーディングデバイス。
[C17]
プロセッサに、
実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記スケーリングされたDCT−IIを実行することと
を行わせるための命令を備える非一時的コンピュータ可読媒体であって、
前記プロセッサに前記スケーリングされたDCT−IIを実行させる前記命令が、前記プロセッサに、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
を行わせる命令を含む、非一時的コンピュータ可読媒体。
[C18]
前記命令が、前記プロセッサに、再帰的な方式で生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで、前記サブDCT−IIに関して、前記バタフライを計算することと、前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記スケーリングされたサブDCT−IIを計算することと、前記完全DCT−IIを前記再帰的な方式で計算することとを行わせる、C17に記載の非一時的コンピュータ可読媒体。
[C19]
前記命令が、前記プロセッサに、
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるかどうかを判断することと、
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記スケーリングされたサブDCT−IIを実行することと
を行わせ、
前記プロセッサに前記スケーリングされたサブDCT−IIを実行させる前記命令が、前記プロセッサに、
前記スケーリングされたサブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算することであって、前記別のバタフライが、前記スケーリングされたサブDCT−IIへの前記入力の第1のサブセットを発生する第1の部分と、前記スケーリングされたサブDCT−IIへの前記入力の第2のサブセットを発生する第2の部分とを含む、別のバタフライを計算することと、
前記スケーリングされたサブDCT−IIへの前記入力の逆順の第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記スケーリングされたサブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記スケーリングされたサブDCT−IIへの前記入力の前記第1のサブセットを受信し、前記スケーリングされたサブDCT−IIへの前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、追加のスケーリングされたサブDCT−IIを計算することと、
前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算することと、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれの追加のスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
を行わせる命令を含む、C17に記載の非一時的コンピュータ可読媒体。
[C20]
前記命令がさらに、前記プロセッサに、前記スケーリングされたDCT−IIユニットの実装複雑さを低減するようにファクタを本質的に除去する方式で、前記スケーリングされたサブDCT−IIを計算させる、C17に記載の非一時的コンピュータ可読媒体。
[C21]
前記命令がさらに、前記プロセッサに、
残差ビデオデータのブロックを受信することと、
残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断することと、
残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断することと
を行わせ、
前記スケーリングされた出力値がDCT係数を備え、
前記命令がさらに、前記プロセッサに、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する量子化係数に従って前記DCT係数を量子化させる、C17に記載の非一時的コンピュータ可読媒体。
[C22]
前記命令がさらに、前記プロセッサに、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加の出力を発生するために前記スケーリングされたDCT−IIを直接計算することと、相互減算された入力の前記第2のサブセットの前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記スケーリングされたサブDCT−IIを計算することと、前記完全サブDCT−IIIを計算することと、出力の前記第1および第2のセットを並べ替えることとを行わせる、C17に記載の非一時的コンピュータ可読媒体。
[C23]
実行すべきスケーリングされたDCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記スケーリングされたDCT−IIを実行するための手段と
を備える装置であって、
前記スケーリングされたDCT−IIを実行するための前記手段が、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算するための手段と、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させるための手段と、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算するための手段と、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、スケーリングされたサブDCT−IIを計算するための手段と、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えるための手段と
を含む、装置。
[C24]
前記スケーリングされたDCT−IIを実行するための前記手段が、前記再帰によって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで前記サブDCT−IIに関してスケーリングされたDCT−IIを再帰的に実行する、C23に記載の装置。
[C25]
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
前記スケーリングされたサブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記スケーリングされたサブDCT−IIを実行するための手段と
をさらに備え、
前記スケーリングされたサブDCT−IIを実行するための前記手段が、
前記スケーリングされたサブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算するための手段であって、前記別のバタフライが、前記スケーリングされたサブDCT−IIへの前記入力の第1のサブセットを発生する第1の部分と、前記スケーリングされたサブDCT−IIへの前記入力の第2のサブセットを発生する第2の部分とを含む、別のバタフライを計算するための手段と、
前記スケーリングされたサブDCT−IIへの前記入力の逆順の第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させるための手段と、
前記スケーリングされたサブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生するために、前記スケーリングされたサブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算するための手段と、
前記サブDCT−IIへの前記入力の前記第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、追加のスケーリングされたサブDCT−IIを計算するための手段と、
前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算するための手段と、
前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれの追加のスケーリングされたサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えるための手段と
を含む、C23に記載の装置。
[C26]
量子化行列の実装複雑さを増加させることなしに前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する、前記量子化行列の量子化係数を構成するための手段をさらに備える、C23に記載の装置。
[C27]
前記スケーリングされたサブDCT−IIを計算するための前記手段が、前記スケーリングされたDCT−IIユニットの実装複雑さを低減するようにファクタを本質的に除去する方式で、前記スケーリングされたサブDCT−IIを計算するための手段を備える、C23に記載の装置。
[C28]
前記装置がビデオコーダを備え、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断するための前記手段が、
残差ビデオデータのブロックを受信するための手段と、
残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断するための手段と、
残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であるかどうかを判断するための手段と
を備え、
前記スケーリングされた出力値がDCT係数を備え、
前記装置が、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記スケーリングされたDCT−IIを計算するときに本質的に除去されるファクタを考慮する量子化係数に従って前記DCT係数を量子化するための手段を備える、C23に記載の装置。
[C29]
前記装置が、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、C23に記載の装置。
[C30]
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加の出力を発生するために前記スケーリングされたDCT−IIを直接計算し、相互減算された入力の前記第2のサブセットの前記順序を逆転させ、前記一連の再帰的減算を計算し、前記スケーリングされたサブDCT−IIを計算し、前記完全サブDCT−IIIを計算し、出力の前記第1および第2のセットを並べ替えるための手段をさらに備える、C23に記載の装置。
[C31]
タイプIIの完全離散コサイン変換(DCT−II)を実行する方法であって、前記方法が、
装置を用いて、実行すべき前記完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記完全DCT−IIを実行することと
を備え、
前記完全DCT−IIを実行することが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算することと、
前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットと出力の前記第2のセットとを並べ替えることと
を含む、方法。
[C32]
実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行する、完全DCT−IIユニット
を備え、
前記完全DCT−IIが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させる順序逆転ユニットと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算する、完全サブDCT−IIユニットと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットと、
出力の第1の完全セットを発生するために、サブDCT−IIIの出力に1つまたは複数のスケールファクタを乗算するスケーリングユニットと
を含み、
前記完全DCT−IIユニットが、前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットと出力の前記第2のセットとを並べ替える、メディアコーディングデバイス。
[C33]
プロセッサに、
実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行することと
行わせるための命令を備える非一時的コンピュータ可読媒体であって、
前記プロセッサに前記完全DCT−IIを実行させる前記命令が、前記プロセッサに、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算することと、
前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットおよび出力の前記第2のセットを並べ替えることと
を行わせる命令を含む、非一時的コンピュータ可読媒体。
[C34]
実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行するための手段と
を備える装置であって、
前記完全DCT−IIを実行するための前記手段が、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算するための手段と、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させるための手段と、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算するための手段と、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算するための手段と、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、
出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算するための手段と、
前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットおよび出力の前記第2のセットを並べ替えるための手段と
を含む、装置。
[C35]
タイプIIIの離散コサイン変換(DCT−III)を実行する方法であって、前記方法が、
装置を用いて、実行すべき前記DCT−IIIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記DCT−IIIを実行することと
を備え、
前記DCT−IIIを実行することが、タイプIIのDCT(DCT−II)の逆元を実行することを含み、
前記DCT−IIを実行することが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
を含む、方法。
[C36]
実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断し、実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行する、DCT−IIIユニット
を備え、
前記DCT−IIIユニットが、DCT−IIユニットによって実行されるタイプIIのDCT(DCT−II)の逆元を実行し、
前記DCT−IIを実行するために、前記DCT−IIユニットが、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライユニットと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させる順序逆転ユニットと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算する再帰的減算ユニットと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算する、サブDCT−IIユニットと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算するサブDCT−IIIユニットと
を含み、
前記DCT−IIユニットが、前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替える、メディアコーディングデバイス。
[C37]
プロセッサに、
実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断することと、
実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行することと
を行わせるための命令を備える非一時的コンピュータ可読媒体であって、
前記命令が、前記プロセッサに、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
によって実行されたタイプIIのDCT(DCT−II)の逆元を実行することによって、前記DCT−IIIを実行させる、非一時的コンピュータ可読媒体。
[C38]
実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断するための手段と、
実行すべき前記スケーリングされたDCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行するための手段と
を備える装置であって、
前記DCT−IIIを実行するための前記手段が、
前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセットを相互加算する第1の部分と、前記入力の第2のサブセットを相互減算する第2の部分とを含む、バタフライを計算することと、
前記入力の逆順の第2のサブセットを発生するために、相互減算された入力の前記第2のサブセットの順序を逆転させることと、
前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算することと、
前記入力の前記第1のサブセットを受信し、前記入力の前記第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
によって実行されたDCT−IIの逆元を実行するための手段を含む、装置。

Claims (46)

  1. タイプIIの離散コサイン変換(DCT−II)を実行する方法であって、前記方法が、
    装置を用いて、実行すべき前記DCT−IIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記DCT−IIを実行することと
    を備え、
    前記DCT−IIを実行することが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    を含む、方法。
  2. 前記バタフライを計算することと、前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記サブDCT−IIを計算することと、前記完全サブDCT−IIを計算することとは、前記一連の再帰的減算を計算することによって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで前記サブDCT−IIに関して再帰的に行われる、請求項1に記載の方法。
  3. 前記サブDCT−IIのサイズが2の倍数であるかどうかを判断することと、
    前記サブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記サブDCT−IIを実行することと
    をさらに備え、
    前記サブDCT−IIを実行することが、
    前記サブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算することであって、前記別のバタフライが、前記サブDCT−IIへの前記入力の第1のサブセットを相互加算する第1の部分と、前記サブDCT−IIへの前記入力の第2のサブセットを相互減算する第2の部分とを含む、別のバタフライを計算することと、
    前記サブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させ、前記サブDCT−IIへの前記入力の逆順の第2のサブセットを発生することと、
    前記サブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記サブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生することと、
    前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、追加のサブDCT−IIを計算することと、
    前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれの追加のサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    を含む、請求項1に記載の方法。
  4. 量子化行列の実装複雑さを増加させることなしに前記DCT−IIを計算するときに除去されるファクタを適用する、前記量子化行列の量子化係数を構成することをさらに備える、請求項1に記載の方法。
  5. 前記サブDCT−IIを計算することが、DCT−IIユニットの実装複雑さを低減するようにファクタを除去するように、前記サブDCT−IIを計算することを備える、請求項1に記載の方法。
  6. 前記装置がビデオコーダを備え、
    実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断することが、
    残差ビデオデータのブロックを受信することと、
    残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断することと、
    残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断することと
    を備え、
    前記出力値がDCT係数を備え、
    前記方法が、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記DCT−IIを計算するときに除去されるファクタを適用する量子化係数に従って前記DCT係数を量子化するために、前記ビデオコーダの量子化ユニットを用いて量子化を実行することをさらに備える、請求項1に記載の方法。
  7. 前記装置が、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、請求項1に記載の方法。
  8. 実行すべき前記DCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加のサブDCT−IIを発生するために前記DCT−IIを直接計算することと、相互減算された入力の前記第2のサブセットの前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記サブDCT−IIを計算することと、前記完全サブDCT−IIIを計算することと、出力の前記第1および第2のセットを並べ替えることとをさらに備える、請求項1に記載の方法。
  9. 実行すべきDCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべき前記DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIを実行する、DCT−IIユニット
    を備え、
    記DCT−IIユニットが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライユニットと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生する順序逆転ユニットと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生する再帰的減算ユニットと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算する、サブDCT−IIユニットと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットと
    を含み、
    前記DCT−IIユニットが、前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替える、メディアコーディングデバイス。
  10. 前記DCT−IIユニットは、前記一連の再帰的減算の計算によって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで、前記サブDCT−IIに関して、前記バタフライを計算し、前記順序を逆転させ、前記一連の再帰的減算を計算し、前記サブDCT−IIを計算し、前記完全サブDCT−IIを再帰的に計算する、請求項9に記載のメディアコーディングデバイス。
  11. 前記サブDCT−IIユニットが、前記サブDCT−IIのサイズが2の倍数であるかどうかを判断し、前記サブDCT−IIのサイズが2の倍数であると判断したことに応答して、前記サブDCT−IIを実行し、
    前記サブDCT−IIユニットが、
    前記サブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算する追加のバタフライユニットであって、前記別のバタフライが、前記サブDCT−IIへの前記入力の第1のサブセットを相互加算する第1の部分と、前記サブDCT−IIへの前記入力の第2のサブセットを相互減算する第2の部分とを含む、追加のバタフライユニットと、
    前記サブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させ、前記サブDCT−IIへの前記入力の逆順の第2のサブセットを発生する、追加の順序逆転ユニットと、
    前記サブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記サブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生する、追加の再帰的減算ユニットと、
    前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、追加のサブDCT−IIを計算する、追加のサブDCT−IIユニットと、
    前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算する、追加の完全サブDCT−IIユニットと
    を含み、
    前記サブDCT−IIユニットが、前記DCT−IIの出力値を発生するために、前記それぞれの追加のサブDCT−IIユニットと完全サブDCT−IIIユニットとによって生成された出力の第1および第2のセットを並べ替える、請求項9に記載のメディアコーディングデバイス。
  12. 量子化行列の実装複雑さを増加させることなしに前記DCT−IIを計算するときに除去されるファクタを適用する、前記量子化行列を含む量子化ユニットをさらに備える、請求項9に記載のメディアコーディングデバイス。
  13. 前記サブDCT−IIユニットが、前記DCT−IIユニットの実装複雑さを低減するようにファクタを除去するように、前記サブDCT−IIを計算する、請求項9に記載のメディアコーディングデバイス。
  14. 前記メディアコーディングデバイスがビデオコーダを備え、
    前記DCT−IIユニットが、残差ビデオデータのブロックを受信し、残差ビデオデータの前記ブロックのサイズが2の倍数であるかどうかを判断し、残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断し、
    前記出力値がDCT係数を備え、
    前記メディアコーディングデバイスが、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記DCT−IIを計算するときに除去されるファクタを適用する量子化係数に従って前記DCT係数を量子化する量子化ユニットをさらに備える、請求項9に記載のメディアコーディングデバイス。
  15. 前記メディアコーディングデバイスが、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、請求項9に記載のメディアコーディングデバイス。
  16. 前記DCT−IIユニットが、実行すべき前記DCT−IIのサイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加のサブDCT−IIを発生するために前記DCT−IIを直接計算し、相互減算された入力の前記第2のサブセットの順序を逆転させ、前記一連の再帰的減算を計算し、前記サブDCT−IIを計算し、前記完全サブDCT−IIIを計算し、出力の前記第1および第2のセットを並べ替える、請求項9に記載のメディアコーディングデバイス。
  17. プロセッサに、
    実行すべきDCT−IIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIを実行することと
    を行わせるための命令を備える非一時的コンピュータ可読媒体であって、
    前記プロセッサに前記DCT−IIを実行させる前記命令が、前記プロセッサに、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力のバタフライ演算された第1のサブセットを受信し、前記入力のバタフライ演算された前記第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    を行わせる命令を含む、非一時的コンピュータ可読媒体。
  18. 前記命令が、前記プロセッサに、前記一連の再帰的減算を計算することによって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで、前記サブDCT−IIに関して、前記バタフライを計算することと、前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記サブDCT−IIを計算することと、前記完全サブDCT−IIを前記再帰的な方式で計算することとを行わせる、請求項17に記載の非一時的コンピュータ可読媒体。
  19. 前記命令が、前記プロセッサに、
    前記サブDCT−IIのサイズが2の倍数であるかどうかを判断することと、
    前記サブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記サブDCT−IIを実行することと
    を行わせ、
    前記プロセッサに前記サブDCT−IIを実行させる前記命令が、前記プロセッサに、
    記サブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算することであって、前記別のバタフライが、前記サブDCT−IIへの前記入力の第1のサブセットを相互加算する第1の部分と、前記サブDCT−IIへの前記入力の第2のサブセットを相互減算する第2の部分とを含む、別のバタフライを計算することと、
    記サブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させ、前記サブDCT−IIへの前記入力の逆順の第2のサブセットを発生することと、
    前記サブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記サブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生することと、
    前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、追加のサブDCT−IIを計算することと、
    前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれの追加のサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    を行わせる命令を含む、請求項17に記載の非一時的コンピュータ可読媒体。
  20. 前記命令がさらに、前記プロセッサに、DCT−IIユニットの実装複雑さを低減するようにファクタを除去するように、前記サブDCT−IIを計算させる、請求項17に記載の非一時的コンピュータ可読媒体。
  21. 前記命令がさらに、前記プロセッサに、
    残差ビデオデータのブロックを受信することと、
    残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断することと、
    残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断することと
    を行わせ、
    前記出力値がDCT係数を備え、
    前記命令がさらに、前記プロセッサに、ビデオコーダの実装複雑さを増加させることなしに実行すべき前記DCT−IIを計算するときに除去されるファクタを適用する量子化係数に従って前記DCT係数を量子化させる、請求項17に記載の非一時的コンピュータ可読媒体。
  22. 前記命令がさらに、前記プロセッサに、実行すべき前記DCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加のサブDCT−IIを発生するために前記DCT−IIを直接計算することと、相互減算された入力の前記第2のサブセットの前記順序を逆転させることと、前記一連の再帰的減算を計算することと、前記サブDCT−IIを計算することと、前記完全サブDCT−IIIを計算することと、出力の前記第1および第2のセットを並べ替えることとを行わせる、請求項17に記載の非一時的コンピュータ可読媒体。
  23. 実行すべきDCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
    実行すべき前記DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIを実行するための手段と
    を備える装置であって、
    前記DCT−IIを実行するための前記手段が、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算するための手段と、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生するための手段と、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生するための手段と、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算するための手段と、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えるための手段と
    を含む、装置。
  24. 前記DCT−IIを実行するための前記手段が、前記再帰によって生成された追加のサブDCT−IIのサイズが2の倍数でなくなるまで前記サブDCT−IIに関してDCT−IIを再帰的に実行する、請求項23に記載の装置。
  25. 前記サブDCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
    前記サブDCT−IIのサイズが2の倍数であるという前記判断に応答して、前記サブDCT−IIを実行するための手段と
    をさらに備え、
    前記サブDCT−IIを実行するための前記手段が、
    前記サブDCT−IIへの入力の相互加算と相互減算とを含む別のバタフライを計算するための手段であって、前記別のバタフライが、前記サブDCT−IIへの前記入力の第1のサブセットを発生する第1の部分と、前記サブDCT−IIへの前記入力の第2のサブセットを発生する第2の部分とを含む、別のバタフライを計算するための手段と、
    前記サブDCT−IIへの相互減算された入力の前記第2のサブセットの順序を逆転させ、前記サブDCT−IIへの前記入力の逆順の第2のサブセットを発生するための手段と、
    前記サブDCT−IIへの前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記サブDCT−IIへの前記入力の再帰的に減算された第2のサブセットを発生するための手段と、
    前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットを受信し、前記サブDCT−IIへの前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、追加のサブDCT−IIを計算するための手段と、
    前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットを受信し、前記サブDCT−IIへの前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、追加の完全サブDCT−IIIを計算するための手段と、
    前記DCT−IIの出力値を発生するために、前記それぞれの追加のサブDCT−IIと完全サブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えるための手段と
    を含む、請求項23に記載の装置。
  26. 量子化行列の実装複雑さを増加させることなしに前記DCT−IIを計算するときに除去されるファクタを適用する、前記量子化行列の量子化係数を構成するための手段をさらに備える、請求項23に記載の装置。
  27. 前記サブDCT−IIを計算するための前記手段が、DCT−IIユニットの実装複雑さを低減するようにファクタを除去するように、前記サブDCT−IIを計算するための手段を備える、請求項23に記載の装置。
  28. 前記装置がビデオコーダを備え、
    実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断するための前記手段が、
    残差ビデオデータのブロックを受信するための手段と、
    残差ビデオデータの前記ブロックの前記サイズが2の倍数であるかどうかを判断するための手段と、
    残差ビデオデータの前記ブロックの前記サイズに基づいて、実行すべき前記DCT−IIの前記サイズが2の倍数であるかどうかを判断するための手段と
    を備え、
    前記出力値がDCT係数を備え、
    前記装置が、前記ビデオコーダの実装複雑さを増加させることなしに実行すべき前記DCT−IIを計算するときに除去されるファクタを適用する量子化係数に従って前記DCT係数を量子化するための手段を備える、請求項23に記載の装置。
  29. 前記装置が、ビデオエンコーダ、ビデオデコーダ、オーディオエンコーダ、オーディオデコーダ、画像エンコーダおよび画像デコーダのうちの1つまたは複数を備える、請求項23に記載の装置。
  30. 実行すべき前記DCT−IIの前記サイズが2の倍数でないと判断したことに応答して、バタフライを計算することなしに追加のサブDCT−IIを発生するために前記DCT−IIを直接計算し、相互減算された入力の前記第2のサブセットの前記順序を逆転させ、前記一連の再帰的減算を計算し、前記サブDCT−IIを計算し、前記完全サブDCT−IIIを計算し、出力の前記第1および第2のセットを並べ替えるための手段をさらに備える、請求項23に記載の装置。
  31. タイプIIの完全離散コサイン変換(DCT−II)を実行する方法であって、前記方法が、
    装置を用いて、実行すべき前記完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記完全DCT−IIを実行することと
    を備え、
    前記完全DCT−IIを実行することが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
    出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算することと、
    前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットと出力の前記第2のセットとを並べ替えることと
    を含む、方法。
  32. 実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断し、実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行する、完全DCT−IIユニット
    を備え、
    前記完全DCT−IIが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライユニットと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生する順序逆転ユニットと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生する再帰的減算ユニットと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算する、完全サブDCT−IIユニットと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算する完全サブDCT−IIIユニットと、
    出力の第1の完全セットを発生するために、サブDCT−IIIの出力に1つまたは複数のスケールファクタを乗算するスケーリングユニットと
    を含み、
    前記完全DCT−IIユニットが、前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットと出力の前記第2のセットとを並べ替える、メディアコーディングデバイス。
  33. プロセッサに、
    実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行することと
    行わせるための命令を備える非一時的コンピュータ可読媒体であって、
    前記プロセッサに前記完全DCT−IIを実行させる前記命令が、前記プロセッサに、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算することと、
    出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算することと、
    前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットおよび出力の前記第2のセットを並べ替えることと
    を行わせる命令を含む、非一時的コンピュータ可読媒体。
  34. 実行すべき完全DCT−IIのサイズが2の倍数であるかどうかを判断するための手段と、
    実行すべき前記完全DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記完全DCT−IIを実行するための手段と
    を備える装置であって、
    前記完全DCT−IIを実行するための前記手段が、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するための手段であって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算するための手段と、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生するための手段と、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生するための手段と、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、完全サブDCT−IIを計算するための手段と、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、完全サブDCT−IIIを計算するための手段と、
    出力の第1の完全セットを発生するために、出力の前記第1のセットに1つまたは複数のスケールファクタを乗算するための手段と、
    前記DCT−IIの出力値を発生するために、出力の前記第1の完全セットおよび出力の前記第2のセットを並べ替えるための手段と
    を含む、装置。
  35. タイプIIIの離散コサイン変換(DCT−III)を実行する方法であって、前記方法が、
    装置を用いて、実行すべき前記DCT−IIIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記装置を用いて、前記DCT−IIIを実行することと
    を備え、
    前記DCT−IIIを実行することが、タイプIIのDCT(DCT−II)の逆元を実行することを含み、
    前記DCT−IIを実行することが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    を含む、方法。
  36. 実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断し、実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行する、DCT−IIIユニット
    を備え、
    前記DCT−IIIユニットが、DCT−IIユニットによって実行されるタイプIIのDCT(DCT−II)の逆元を実行し、
    前記DCT−IIを実行するために、前記DCT−IIユニットが、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算するバタフライユニットであって、前記バタフライユニットが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライユニットと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生する順序逆転ユニットと、
    前記入力の再帰的に減算された第2のサブセットを発生するために、前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生する再帰的減算ユニットと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算する、サブDCT−IIユニットと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算するサブDCT−IIIユニットと
    を含み、
    前記DCT−IIユニットが、前記DCT−IIのスケーリングされた出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替える、メディアコーディングデバイス。
  37. プロセッサに、
    実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断することと、
    実行すべき前記DCT−IIIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行することと
    を行わせるための命令を備える非一時的コンピュータ可読媒体であって、
    前記命令が、前記プロセッサに、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    によって実行されたタイプIIのDCT(DCT−II)の逆元を実行することによって、前記DCT−IIIを実行させる、非一時的コンピュータ可読媒体。
  38. 実行すべきDCT−IIIのサイズが2の倍数であるかどうかを判断するための手段と、
    実行すべき前記DCT−IIの前記サイズが2の倍数であると判断したことに応答して、前記DCT−IIIを実行するための手段と
    を備える装置であって、
    前記DCT−IIIを実行するための前記手段が、
    前記DCT−IIへの入力の相互加算と相互減算とを含むバタフライを計算することであって、前記バタフライが、前記入力の第1のサブセット同士を相互加算する第1の部分と、前記入力の第2のサブセット同士を相互減算する第2の部分とを含む、バタフライを計算することと、
    相互減算された入力の前記第2のサブセットの順序を逆転させ、前記入力の逆順の第2のサブセットを発生することと、
    前記入力の前記逆順の第2のサブセットをそれぞれ再帰的に減算する一連の再帰的減算を計算し、前記入力の再帰的に減算された第2のサブセットを発生することと、ここにおいて、前記再帰的に減算することは、ある時点においてより小さいサイズの前記DCT−IIが解決され得るまで、より大きいサイズのDCT−IIをより小さいサイズのDCT−IIに再帰的に分割するために前記逆順の第2のサブセットをそれぞれ減算することを含む、
    前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて出力の第1のセットを発生する、サブDCT−IIを計算することと、
    前記入力の前記再帰的に減算された第2のサブセットを受信し、前記入力の前記再帰的に減算された第2のサブセットに基づいて出力の第2のセットを発生する、サブDCT−IIIを計算することと、
    前記DCT−IIの出力値を発生するために、前記それぞれのサブDCT−IIとサブDCT−IIIとによって生成された出力の前記第1および第2のセットを並べ替えることと
    によって実行されたDCT−IIの逆元を実行するための手段を含む、装置。
  39. 前記実行すべきDCT−IIは、実行すべきスケーリングされたDCT−IIを具備し、
    前記サブDCT−IIを計算することは前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成するスケーリングされたサブDCT−IIを計算することを具備し、
    前記出力の第1のセットは、出力の第1のスケーリングされたセットを具備する、請求項1の方法。
  40. 前記実行すべきDCT−IIは、実行すべき完全DCT−IIを具備し、
    前記サブDCT−IIを計算することは、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成する完全サブDCT−IIを計算することを具備し、
    前記DCT−IIを実行することは、前記出力の第1のセットを生成するために、前記出力の第1のセットに1つまたは複数のスケールファクタを除算することをさらに具備し、
    前記出力の第1のセットは、出力の第1の完全セットを具備する、請求項1の方法。
  41. 前記DCT−IIユニットは、スケーリングされたDCT−IIを実行するためのスケーリングされたDCT−IIユニットを具備し、
    前記サブDCT−IIユニットは、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成するスケーリングされたサブDCT−IIを計算するスケーリングされたサブDCT−IIユニットを具備し、
    前記出力の第1のセットは、出力の第1のスケーリングされたセットを具備する、請求項9のメディアコーディングデバイス
  42. 前記DCT−IIユニットは、完全DCT−IIを実行するための完全DCT−IIユニットを具備し、
    前記サブDCT−IIユニットは、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成する完全サブDCT−IIを計算する完全サブDCT−IIユニットを具備し、
    前記DCT−IIユニットはさらに前記出力の第1のセットを1つまたは複数のスケールファクタと乗算して前記出力の第1のセットを生成し、
    前記出力の第1のセットは出力の第1の完全セットを具備する、請求項9のメディアコーディングデバイス
  43. 前記実行すべきDCT−IIは、実行すべきスケーリングされたDCT−IIを具備し、
    前記命令は、さらに前記1つまたは複数のプロセッサに、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成するスケーリングされたサブDCT−IIを計算させる命令を具備し、
    前記出力の第1のセットは出力の第1のスケーリングされたセットを具備する、請求項17の非一時的コンピュータ可読媒体。
  44. 前記実行すべきDCT−IIは、実行すべき完全DCT−IIを具備し、
    前記命令はさらに、前記プロセッサに、
    前記入力の前記バタフライ演算された第1のサブセットを受信させ、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成させ、
    前記出力の第1のセットを1つまたは複数のスケールファクタと乗算させて前記出力の第1のセットを生成させ、
    前記出力の第1のセットは出力の第1の完全セットを具備する、
    請求項17の非一時的コンピュータ可読媒体。
  45. 前記DCT−IIを実行する手段は、スケーリングされたDCT−IIを実行する手段を具備し、
    前記サブDCT−IIを計算する手段は、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成するスケーリングされたサブDCT−IIを計算する手段を具備し、
    前記出力の第1のセットは、出力の第1のスケーリングされたセットを具備する、請求項23の装置。
  46. 前記DCT−IIを実行する手段は、完全DCT−IIを実行する手段を具備し、
    前記サブDCT−IIを計算することは、前記入力の前記バタフライ演算された第1のサブセットを受信し、前記入力の前記バタフライ演算された第1のサブセットに基づいて前記出力の第1のセットを生成する完全サブDCT−IIを計算することを具備し、
    前記完全DCT−IIを実行する手段は、前記出力の第1のセットを1つまたは複数のスケールファクタと乗算し、前記出力の第1のセットを生成する手段をさらに具備し、
    前記出力の第1のセットは出力の第1の完全セットを具備する、請求項23の装置。
JP2012505944A 2009-04-15 2010-04-15 偶数サイズ離散コサイン変換の計算 Expired - Fee Related JP5529257B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16941809P 2009-04-15 2009-04-15
US61/169,418 2009-04-15
US12/758,959 2010-04-13
US12/758,959 US9110849B2 (en) 2009-04-15 2010-04-13 Computing even-sized discrete cosine transforms
PCT/US2010/031314 WO2010121077A2 (en) 2009-04-15 2010-04-15 Computing even-sized discrete cosine transforms

Publications (2)

Publication Number Publication Date
JP2012524330A JP2012524330A (ja) 2012-10-11
JP5529257B2 true JP5529257B2 (ja) 2014-06-25

Family

ID=42980952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012505944A Expired - Fee Related JP5529257B2 (ja) 2009-04-15 2010-04-15 偶数サイズ離散コサイン変換の計算

Country Status (6)

Country Link
US (1) US9110849B2 (ja)
EP (1) EP2419838A2 (ja)
JP (1) JP5529257B2 (ja)
CN (1) CN102460425B (ja)
TW (1) TWI418996B (ja)
WO (1) WO2010121077A2 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009100021A2 (en) * 2008-02-01 2009-08-13 Lehigh University Bilinear algorithms and vlsi implementations of forward and inverse mdct with applications to mp3 audio
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8451904B2 (en) * 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
KR101081971B1 (ko) * 2009-11-05 2011-11-09 (주)실리콘화일 스케일링 기능을 포함하는 jpeg 디코더 및 그의 스케일링 방법
US8995532B2 (en) 2010-09-30 2015-03-31 Texas Instruments Incorporated Low complexity large transform
US9824066B2 (en) 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
US9503750B2 (en) * 2011-11-04 2016-11-22 Futurewei Technologies, Inc. Binarization of prediction residuals for lossless video coding
US9781447B1 (en) 2012-06-21 2017-10-03 Google Inc. Correlation based inter-plane prediction encoding and decoding
US9185414B1 (en) * 2012-06-29 2015-11-10 Google Inc. Video encoding using variance
US9167268B1 (en) 2012-08-09 2015-10-20 Google Inc. Second-order orthogonal spatial intra prediction
US9344742B2 (en) * 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
EP2909738A4 (en) * 2012-10-18 2016-06-08 Nokia Technologies Oy IMAGE PROCESSING, DEVICES AND SYSTEM
US9628790B1 (en) 2013-01-03 2017-04-18 Google Inc. Adaptive composite intra prediction for image and video compression
WO2014120367A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive parametric transforms for coding for next generation video
US10015506B2 (en) * 2013-05-20 2018-07-03 Cinova Media Frequency reduction and restoration system and method in video and image compression
US9609343B1 (en) 2013-12-20 2017-03-28 Google Inc. Video coding using compound prediction
WO2015130470A1 (en) * 2014-02-26 2015-09-03 Vor Data Systems, Inc. System and method for digital signal compression
US10460700B1 (en) 2015-10-12 2019-10-29 Cinova Media Method and apparatus for improving quality of experience and bandwidth in virtual reality streaming systems
US10264196B2 (en) 2016-02-12 2019-04-16 Contrast, Inc. Systems and methods for HDR video capture with a mobile device
US10257393B2 (en) 2016-02-12 2019-04-09 Contrast, Inc. Devices and methods for high dynamic range video
EP3497925B1 (en) 2016-08-09 2022-11-23 Contrast, Inc. Real-time hdr video for vehicle control
EP3306937A1 (en) * 2016-10-05 2018-04-11 Thomson Licensing Method and apparatus for encoding and decoding a video
US10848788B2 (en) * 2017-01-06 2020-11-24 Qualcomm Incorporated Multi-type-tree framework for video coding
CN107027039B (zh) * 2017-04-14 2019-08-27 西安电子科技大学 基于高效视频编码标准的离散余弦变换实现方法
US10944971B1 (en) 2017-05-22 2021-03-09 Cinova Media Method and apparatus for frame accurate field of view switching for virtual reality
US10904573B2 (en) * 2017-11-30 2021-01-26 Embry-Riddle Aeronautical University, Inc. Reduced multiplicative complexity discrete cosine transform (DCT) circuitry
US10951888B2 (en) 2018-06-04 2021-03-16 Contrast, Inc. Compressed high dynamic range video
WO2020036955A1 (en) * 2018-08-14 2020-02-20 Contrast, Inc. Image processing noise reduction
EP3837635A4 (en) 2018-08-14 2022-04-27 Contrast, Inc. IMAGE COMPRESSION
WO2022174762A1 (en) * 2021-02-20 2022-08-25 Beijing Bytedance Network Technology Co., Ltd. Transforms on non-dyadic blocks

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2581463B1 (fr) 1985-05-03 1989-09-08 Thomson Csf Dispositifs de calcul de transformees cosinus, dispositif de codage et dispositif de decodage d'images comportant de tels dispositifs de calcul
US5253055A (en) * 1992-07-02 1993-10-12 At&T Bell Laboratories Efficient frequency scalable video encoding with coefficient selection
US5408425A (en) * 1993-05-25 1995-04-18 The Aerospace Corporation Split-radix discrete cosine transform
US5508949A (en) * 1993-12-29 1996-04-16 Hewlett-Packard Company Fast subband filtering in digital signal coding
US5649077A (en) * 1994-03-30 1997-07-15 Institute Of Microelectronics, National University Of Singapore Modularized architecture for rendering scaled discrete cosine transform coefficients and inverse thereof for rapid implementation
TW284869B (ja) * 1994-05-27 1996-09-01 Hitachi Ltd
JP3115199B2 (ja) * 1994-12-16 2000-12-04 松下電器産業株式会社 画像圧縮符号化装置
US5737450A (en) * 1995-05-15 1998-04-07 Polaroid Corporation Method and apparatus for fast two-dimensional cosine transform filtering
JP2778622B2 (ja) * 1995-06-06 1998-07-23 日本電気株式会社 2次元dct回路
JPH09212484A (ja) 1996-01-30 1997-08-15 Texas Instr Inc <Ti> 離散コサイン変換方法
AU9030298A (en) 1997-08-25 1999-03-16 Qualcomm Incorporated Variable block size 2-dimensional inverse discrete cosine transform engine
CN1213612C (zh) 1997-11-17 2005-08-03 索尼电子有限公司 用于采用离散变换进行数字视频数据去压缩的方法和系统
US6252994B1 (en) 1998-01-26 2001-06-26 Xerox Corporation Adaptive quantization compatible with the JPEG baseline sequential mode
US6222944B1 (en) 1998-05-07 2001-04-24 Sarnoff Corporation Down-sampling MPEG image decoder
JP2001346213A (ja) * 2000-06-02 2001-12-14 Nec Corp 離散コサイン変換装置及びその離散コサイン変換方法
AU2001234971A1 (en) * 2000-02-09 2001-08-20 T. C. Cheng Fast method for the forward and inverse mdct in audio coding
KR100545445B1 (ko) 2000-10-23 2006-01-24 인터내셔널 비지네스 머신즈 코포레이션 스케일링 항, 초기 중지 및 정밀도 세분을 이용한 고속 이산 변환 방법
US7929610B2 (en) * 2001-03-26 2011-04-19 Sharp Kabushiki Kaisha Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US7366236B1 (en) * 2001-06-04 2008-04-29 Cisco Sytems Canada Co. Source adaptive system and method for 2D iDCT
US7185037B2 (en) * 2001-08-23 2007-02-27 Texas Instruments Incorporated Video block transform
PL366550A1 (en) 2001-08-24 2005-02-07 Koninklijke Philips Electronics N.V. Adding fields of a video frame
US7082450B2 (en) 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6882685B2 (en) 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
KR100481067B1 (ko) * 2001-09-28 2005-04-07 브이케이 주식회사 분산 산술 처리장치 및 그를 이용한 이차원 이산여현변환 처리장치
US7088791B2 (en) 2001-10-19 2006-08-08 Texas Instruments Incorporated Systems and methods for improving FFT signal-to-noise ratio by identifying stage without bit growth
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
FR2834362A1 (fr) 2001-12-28 2003-07-04 Koninkl Philips Electronics Nv Dispositif de transformation inverse adaptatif
JP2003223433A (ja) 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd 直交変換方法、直交変換装置、符号化方法、符号化装置、逆直交変換方法、逆直交変換装置、復号化方法、及び、復号化装置
US7007055B2 (en) * 2002-03-12 2006-02-28 Intel Corporation Method of performing NxM Discrete Cosine Transform
US7242713B2 (en) 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7437394B2 (en) * 2002-06-19 2008-10-14 The Aerospace Corporation Merge and split discrete cosine block transform method
US20040136602A1 (en) * 2003-01-10 2004-07-15 Nithin Nagaraj Method and apparatus for performing non-dyadic wavelet transforms
US7412100B2 (en) * 2003-09-04 2008-08-12 Qualcomm Incorporated Apparatus and method for sub-sampling images in a transform domain
US7379500B2 (en) * 2003-09-30 2008-05-27 Microsoft Corporation Low-complexity 2-power transform for image/video compression
TWI241074B (en) 2003-11-05 2005-10-01 Bing-Fei Wu Image compression system using two-dimensional discrete wavelet transformation
TWI227840B (en) 2003-12-03 2005-02-11 Via Tech Inc Method and apparatus for multiplying based on Booth's algorithm
US20050213835A1 (en) * 2004-03-18 2005-09-29 Huazhong University Of Science & Technology And Samsung Electronics Co., Ltd. Integer transform matrix selection method in video coding and related integer transform method
US8861600B2 (en) * 2004-06-18 2014-10-14 Broadcom Corporation Method and system for dynamically configurable DCT/IDCT module in a wireless handset
US7587093B2 (en) 2004-07-07 2009-09-08 Mediatek Inc. Method and apparatus for implementing DCT/IDCT based video/image processing
US7560788B2 (en) * 2004-09-20 2009-07-14 General Electric Company Microelectromechanical system pressure sensor and method for making and using
US7471850B2 (en) 2004-12-17 2008-12-30 Microsoft Corporation Reversible transform for lossy and lossless 2-D data compression
US7792385B2 (en) * 2005-01-25 2010-09-07 Globalfoundries Inc. Scratch pad for storing intermediate loop filter data
TW200643848A (en) 2005-06-01 2006-12-16 Wintek Corp Method and apparatus for four-color data conversion
US20070025441A1 (en) * 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
TWI280804B (en) 2005-09-26 2007-05-01 Yuh-Jue Chuang Method for splitting 8x8 DCT into four 4x4 modified DCTS used in AVC/H. 264
US7725516B2 (en) * 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
US20070200738A1 (en) * 2005-10-12 2007-08-30 Yuriy Reznik Efficient multiplication-free computation for signal and data processing
TWI311856B (en) 2006-01-04 2009-07-01 Quanta Comp Inc Synthesis subband filtering method and apparatus
US8595281B2 (en) * 2006-01-11 2013-11-26 Qualcomm Incorporated Transforms with common factors
CN100562111C (zh) 2006-03-28 2009-11-18 华为技术有限公司 离散余弦逆变换方法及其装置
US8849884B2 (en) * 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
EP1850597A1 (en) 2006-04-24 2007-10-31 Universität Dortmund Method and circuit for performing a cordic based Loeffler discrete cosine transformation (DCT), particularly for signal processing
US8699810B2 (en) * 2006-06-26 2014-04-15 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8582663B2 (en) * 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
US8548815B2 (en) 2007-09-19 2013-10-01 Qualcomm Incorporated Efficient design of MDCT / IMDCT filterbanks for speech and audio coding applications
US8654833B2 (en) * 2007-09-26 2014-02-18 Qualcomm Incorporated Efficient transformation techniques for video coding
US9445110B2 (en) * 2007-09-28 2016-09-13 Dolby Laboratories Licensing Corporation Video compression and transmission techniques
US20090141808A1 (en) 2007-11-30 2009-06-04 Yiufai Wong System and methods for improved video decoding
US8631060B2 (en) * 2007-12-13 2014-01-14 Qualcomm Incorporated Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures
KR20090078494A (ko) * 2008-01-15 2009-07-20 삼성전자주식회사 영상 데이터의 디블록킹 필터링 방법 및 디블록킹 필터
CN101330616B (zh) 2008-07-31 2011-04-13 上海交通大学 视频解码过程中反离散余弦变换的硬件实现装置及方法
US20100172409A1 (en) * 2009-01-06 2010-07-08 Qualcom Incorporated Low-complexity transforms for data compression and decompression
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8451904B2 (en) * 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
US9118898B2 (en) * 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
CN101989253B (zh) 2009-07-31 2012-08-29 鸿富锦精密工业(深圳)有限公司 离散余弦转换电路及使用其的影像处理装置
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding

Also Published As

Publication number Publication date
TWI418996B (zh) 2013-12-11
WO2010121077A2 (en) 2010-10-21
EP2419838A2 (en) 2012-02-22
TW201104456A (en) 2011-02-01
CN102460425A (zh) 2012-05-16
CN102460425B (zh) 2014-12-10
US20100266008A1 (en) 2010-10-21
US9110849B2 (en) 2015-08-18
JP2012524330A (ja) 2012-10-11
WO2010121077A3 (en) 2011-11-17

Similar Documents

Publication Publication Date Title
JP5529257B2 (ja) 偶数サイズ離散コサイン変換の計算
JP5497164B2 (ja) メディアコード化のための4×4変換
KR101315629B1 (ko) 미디어 데이터 코딩을 위한 16-포인트 변환
JP5497163B2 (ja) メディアコード化のための4×4変換
KR101315565B1 (ko) 미디어 데이터 코딩을 위한 16-포인트 변환
JP5259828B2 (ja) 4×4および8×8よりも大きい変換を使用するビデオ符号化
JP2012531670A (ja) メディアデータ符号化用8点変換
JP2013502624A (ja) メディアデータ符号化用8点変換
WO2010080662A2 (en) Low-complexity transforms for data compression and decompression
KR20110063865A (ko) 벡터화된 엔트로피 코딩에 기초한 가중 예측

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130712

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140225

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140416

R150 Certificate of patent or registration of utility model

Ref document number: 5529257

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees