JP2014241585A - ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 - Google Patents

ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 Download PDF

Info

Publication number
JP2014241585A
JP2014241585A JP2014094764A JP2014094764A JP2014241585A JP 2014241585 A JP2014241585 A JP 2014241585A JP 2014094764 A JP2014094764 A JP 2014094764A JP 2014094764 A JP2014094764 A JP 2014094764A JP 2014241585 A JP2014241585 A JP 2014241585A
Authority
JP
Japan
Prior art keywords
circuit
input values
values
data processing
internal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014094764A
Other languages
English (en)
Other versions
JP6357345B2 (ja
Inventor
ヒューゴ サイムズ ドミニク
Dominic Hugo Symes
ヒューゴ サイムズ ドミニク
エドセ トマス
Edsoe Tomas
エドセ トマス
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2014241585A publication Critical patent/JP2014241585A/ja
Application granted granted Critical
Publication of JP6357345B2 publication Critical patent/JP6357345B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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]

Landscapes

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

Abstract

【課題】ビデオデータに適用されるフォワード変換演算および逆変換演算を実行する間に要求される乗算の個数を減少化させる新たなデータ処理装置および方法を提供する。【解決手段】変換回路がN個の入力値を受け取り、その入力値の空間領域と周波数領域との間の変換を表すN個の出力値を生成するための一連の演算を実行する。ベース回路は変換回路により生成された4以上のM個の内部入力値を受け取り、ハンケル行列によるM個の内部入力値の行列積に等価であるベース演算を実行するよう構成される。この配列のそれぞれの要素は係数を指定し、ベース演算の実行は、変換回路に戻すためのM個の内部出力値を生成する。変換回路は、一連の演算を実行する間、N個の入力値から複数セットのM個の内部入力値を生成することと、複数セットのM個の内部出力値を生成するために各セットのM個の内部入力値をベース回路に提供することと、複数セットのM個の内部出力値からN個の出力値を導出する。【選択図】図4

Description

本発明はビデオデータ処理時に空間領域と周波数領域との間の変換を実行するための技術に関する。係る変換は通常、ビデオエンコーダおよびビデオデコーダの両方により実行される。ここで、ビデオエンコーダは、ビデオ信号を空間領域から周波数領域に変換するために、フォワード変換を実行し、ビデオデコーダは、エンコードされた信号を周波数領域から空間領域に戻すよう変換するために、対応する逆変換を実行する。
信号を空間領域と周波数領域との間で変換するために様々な変換が知られている。一般的に用いられる変換は離散コサイン変換である。現代のビデオエンコーダおよびビデオデコーダは、多数のビデオ規格(例えばMPEG2、MPEG4、H.263、H.264ハイプロファイル、VP8、VC−1など)に準拠してビデオのエンコード演算およびデコード演算を実行することが要求され得る。ビデオのエンコード処理およびデコード処理のうちで特に計算が集約される部分が変換演算の実行であることは知られている。
ビデオのエンコードおよびデコードは通常、8×8ブロックのピクセルデータをもとにして行われてきた。ここで、4つの8×8ブロックのルマ(Y)データおよび2つの8×8ブロックのクロマ(CbおよびCr)データは所与のマクロブロックのビデオデータを表す。変換演算はそれぞれのマクロブロックに対する6つの8×8ブロックの全部について実行され、その結果、6つの変換された出力8×8ブロックが生成される。
近年に至るまでは、比較的小さい変換演算(例えば上述の例における8×8変換など)だけが必要とされてきた。しかし高精細ビデオの導入とともに、より新しいビデオ規格(例えばHEVC規格など)が登場し、そのために変換演算はより大きい配列上(例えば16×16および32×32など)で行われることが要求されるようになった。サイズがより小さい変換を効果的に実行するために開発された多くの技術が係るより大きい変換に拡張可能ではないことはすでに知られている。
離散コサイン変換(DCT)の例について特に考えると、様々な論文においてより大きいDCTについて研究がなされ、反復的な乗算が許可される(すなわち、1つの乗算の結果が追加的な乗算への入力として供給される)場合、係る大きいDCTが高速フーリエ変換(FFT)スタイルの方法により効率的に実装されることを可能にする技術が開発されてきた。例えば、FeigおよびWinogradによる、“On the Multiplicative Complexity of Discrete Cosine Transforms”, IEEE Trans Information Theory, Volume 38, No. 4, 1992年7月、および“Fast Algorithms for the Discrete Cosine Transform”, IEEE Trans Signal Processing, Volume 40, No. 9, 1992年9月をタイトルとする2つの論文では、必要とされる乗法演算の回数を減少させるDCTを最適化するための可能なアルゴリズムが論じられている。しかし、全般的に、これらの技術は、特により大きい変換サイズに対しては、前述の反復的な乗算を要求する。
しかし、ビデオ処理では特定画像の内容が以前の画像から予測されるため、ビデオ規格では、少なくともデコード演算の出力がビットイグザクトであることが多くの場合要求される。HEVC規格の具体例を取ると、デコードの間に実行される逆変換演算は、整数乗算を用いる基準固定点バージョンの変換の出力に正確に合致するよう実装されなければならない。結果として、反復的乗算を(通常、シフト演算と組み合わせて)使用する既知の最適化技術は、丸め誤差が導入されるために、用いることはできない。
係る反復的な乗算に対する必要性を回避し、それによりビットイグザクトな結果が要求される場合に使用可能である既知の技術においては、要求される乗算演算の回数を減少させるために反復的(A+B,A−B)バタフライが使用される。32×32変換の例について考えると、最適化をまったく行わない場合、係る変換は各1次元の変換に対して32×32個、すなわち1024個の乗算を要求するであろう。係る既知のバタフライ技術を使用すると、その特定のシナリオに対する乗算の個数は342に減少される。
それにも関わらず、依然として相当な個数の乗算が実行され、この個数の乗算が各1次元の変換毎に反復されなければならない。例えば、ビデオのエンコードおよびデコードでは通常、2次元DCTが使用され、したがってHEVC規格を使用する事例では、処理される各ブロックのビデオデータは32×32個のデータ値の配列からなり得る。通常、2次元離散コサイン変換は、配列の各行および各列に対して適用される一連の1次元変換を実行することにより実装される。したがって上述の事例は、配列の各行をカバーするための32個の1次元変換の実行と、引き続き列のそれぞれをカバーするための32個の1次元変換の実行と、を含むであろう。したがって、前述した特定のバタフライ技術によれば、64個の1次元変換が各ブロックのビデオデータに対して要求され、各1次元変換は342個の乗算演算を要求するであろう。
より高い性能およびより低いエリアコストのビデオエンコーダおよびデコーダを提供することが継続的に望まれている。したがって、ビデオデータに適用されるフォワード変換演算および逆変換演算を実行する間に要求される乗算の個数を減少化させることが望まれるであろう。この望みは、より新しいビデオ規格(例えばHEVC規格など)によりサポートされる変換のサイズが増大化されるにつれて、より切実なものとなりつつある。
第1の態様の観点からは、本発明は、ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置を提供し、このデータ処理装置は、N個の入力値を受け取り、前記N個の入力値の空間領域と周波数領域との間の変換を表すN個の出力値を生成するための一連の演算を実行するよう構成された変換回路と、変換回路に戻すためのM個の内部出力値を生成するために、変換回路により生成されたM個(ただしMは4以上である)の内部入力値を受け取り、係数cの配列を含み且つ
…cM−1
…c
… cM+1

M−1M+1 … c2M−2
の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するよう構成されたベース回路と、を備え、変換回路は、前記一連の演算を実行する間、N個の入力値から複数セットの前記M個の内部入力値を生成することと、複数セットの前記M個の内部出力値を生成するために各セットのM個の内部入力値を前記ベース回路に提供することと、前記複数セットのM個の内部出力値からN個の出力値を導出することと、を行うよう構成される。
本発明によれば、データ処理装置はベース回路を反復的に使用するよう構成される。なおベース回路は、係数cの配列を含み且つ
…cM−1
…c
… cM+1

M−1M+1 … c2M−2
の形を有する行列によるM個の内部入力値の行列積に等価であるベース演算を実行するよう構成される。
Mは4以上であり、1つの実施例においてMは4に等しい。変換回路は、複数セットのM個の内部入力値を生成するために、最初に提供されたM個の入力値に操作を加える。なおここで、各セットのM個の内部入力値はベース回路に通される。したがって、ベース回路は変換回路により生成された各セットのM個の内部入力値に対して反復的に使用される。次に変換回路はN個の出力値を、ベース回路により生成された複数セットのM個の内部出力値から導出する。
本発明の上述の技術はしばしば、2次元変換を実装するために、一連の1次元変換に対して反復的に用いられるであろう。それぞれの1次元変換に対して、1セットのN個の入力値がデータ処理装置の変換回路に入力されるであろう。本発明によれば、各セットのM個の内部入力値は、特定の提供されたセットのN個の入力値に対して1回だけベース回路に通され、ベース回路により生成された内部出力値のいずれもが、ベース回路により実行される乗算の後続の反復に対する入力として用いられることはない。したがって、本発明に係る装置を用いるならば反復的な乗算は実行されず、したがってこのことにより、本装置はHEVCビデオ規格などの現代の規格に要求されるビットイグザクトな結果を生成することが可能である。
ベース回路内で用いられる特定の形の行列は、通常の対角線に対して斜交する対角線上の要素(すなわち正に傾斜する対角線上の要素)がすべて等しくなっている正方行列であり、ハンケル行列としても知られる。本発明の発明者らは、現代のビデオ処理基準により要求されるより大きい変換に対してさえも、空間領域と周波数領域との間の要求される変換が、ハンケル行列を用いて、より小さいサイズの反復的な行列積を可能にする様式で因数分解されることを見出した。
ベース回路により実行されるベース演算は、上述した形のハンケル行列のいかなる特定の事例も処理することができ、したがって係数c〜c2M−2に割り当てられた値に関わらずハンケル行列によるM個の内部入力値の行列積に等価である演算を実行することができる。したがって、例えば、ベース回路は、たとえ係数c〜c2M−2の全部が異なる値を有したとしても、および/またはこれらの係数の全部がベース回路に提供されるM個の内部入力値の各セットに対して異なったとしても、要求される演算を実行することができる。
さらに、本発明の技術はエンコードおよびデコードの両方に対して用いられ得、異なるサイズのNに対して容易に拡張される。
上述の構成により、空間領域と周波数領域との間でN個の入力値を変換するために要求される乗算の個数における顕著な減少化が可能であることが見出された。例えば、新しいHEVCビデオ規格により要求される前述の32点の変換について考えると、本発明の技術によれば、HEVC標準ソフトウェアにより用いられる部分的バタフライ手法と比較して約1/3の乗算の個数が要求されることが見出された。HEVC標準ソフトウェア(http://r2d2n3po.tistory.com/61においてHM−8.0としても知られる)は論文標準(paper Standard)に対する標準的実装として用いられる標準Cコード実装である。
空間領域と周波数領域との間で実行される変換は様々な形を取り得るが、しかし1つの実施形態では、離散コサイン変換である。
変換回路が、ベース回路に提供される各セットのM個の内部入力値が生成されるよう構成されることができる方法は多数存在する。一方、1つの実施形態において変換回路は並べ替え回路を備え、並べ替え回路は、K個のグループの入力値を生成するために、受け取られたN個の入力値を並べ替えるよう構成される。なお、K=N/Mであり、したがって各グループはM個のメンバーを有し、各メンバーは前記受け取られたN個の入力値のうちの1つである。次に加算器回路は、各セットの前記M個の内部入力値を生成するために、選択されたグループからの対応するメンバーに対して加算演算および減算演算のうちの少なくとも1つを実行するよう構成される。
並べ替え回路により実行される実際の並べ替えは、装置が空間領域から周波数領域へのフォワード変換を実行するために、または周波数領域から空間領域への逆変換を実行するために用いられているかに依存するであろう。同様に、加算器回路により実行される加算演算および減算演算は、フォワード変換が実行されているかまたは逆変換が実行されているかに応じて異なるであろう。
変換回路がN個の出力値を複数セットのM個の内部出力値から導出するよう構成される様式は、実施形態に応じて変動し得る。一方、1つの実施形態において、変換回路は、N個の中間出力値を生成するためにベース回路により生成された複数セットの前記M個の内部出力値に対して加算演算および減算演算のうちの少なくとも1つを実行するよう構成された、追加的加算器回路をさらに備える。加算器回路および追加的加算器回路により実行される加算/減算は、装置がフォワード変換を実行するために、または逆変換を実行するために用いられているかに依存するであろう。
1つの実施形態において、変換回路は、シフトされた中間出力値を生成するためにN個の中間出力値に対してシフト演算を実行するよう構成されたシフト回路をさらに備える。シフト演算は、様々なセットのM個の内部入力値に対してベース回路の反復的演算が実行された後、N個の中間出力値が生成された後に、1回だけ実行されることに注意すべきである。このことは、結果が正確であること保証するように作用する。1回シフトされた値は出力され、循環されない(他の関連する1次元変換のために入力値を形成するかもしれない場合を除く)。
1つの実施形態において、シフト演算は飽和演算を含む。再び、シフト演算の場合と同様に、飽和演算も1回だけ実行される。
1つの実施形態において、変換回路は、前記N個の出力値を生成するためにN個のシフトされた中間出力値を並べ替えるよう構成された追加的並べ替え回路をさらに備える。追加的並べ替え回路により実行される並べ替えは、N個の入力値に対して並べ替え回路により実行された並べ替えに依存するであろう。
1つの実施形態において、この装置は、各セットのM個の内部入力値に対して、ベース演算を実行するときにベース回路により用いられる対応するセットの係数値を生成するよう構成された係数生成回路をさらに備える。したがって、このセットの係数値は、ベース回路の各反復に対して設定されることができる。
前述のようにこの装置は、空間領域から周波数領域へのフォワード変換または周波数領域から空間領域への逆変換を実行するために用いられることができる。1つの実施形態において、この装置は、フォワード変換の実行または逆変換の実行の間で切り替えが可能となるよう構成可能である。
1つの特定の実施形態において、各セットのM個の内部入力値に対して係数生成回路により生成された対応するセットの係数値は、データ処理装置がフォワード変換を実行するよう構成されているかまたは逆変換を実行するよう構成されているかに関わらず、同一である。したがって、並べ替え回路、加算器回路、追加的加算器回路、および追加的並べ替え回路の動作は、この装置がフォワード変換を実行しているかまた逆変換を実行しているかに応じて変更されるであろうが、ベース回路の基本的演算は不変であり、この装置が同一のビデオ規格に準拠して動作すると仮定すると、正確に同一の係数が係数生成回路により生成される。
様々な実施形態に係る装置が前述のベース演算の複数反復を実行する一方で、通常は、小さい変換、特にM×Mの変換を実行することが依然として必要とされるであろう。したがって、1つの実施形態において、変換回路は、ベース回路に提供するための追加的セットのM個の内部入力値を生成するようさらに構成され、ベース回路は、離散コサイン変換行列による前記追加的セットのM個の内部入力値の行列積に等価である離散コサイン変換演算を実行することにより、前記追加的セットのM個の内部入力値に対して離散コサイン変換を実行するよう構成される。
1つの特定の実施形態において、データ処理装置は、ビデオデータのエンコードを実行する間にフォワード離散コサイン変換を実行するよう構成され、ベース回路は、前記複数セットのM個の内部入力値に対するベース演算の実行の後にフォワード離散変換演算を離散コサイン変換演算として実行するよう構成される。
それとは対比的に、データ処理装置がビデオデータのデコードを実行する間に逆離散コサイン変換を実行するよう構成されている場合、ベース回路は、前記複数セットのM個の内部入力値に対してベース演算を実行する前に逆離散変換演算を離散コサイン変換演算として実行するよう構成される。
Nの値は実施形態に応じて変動し得る。1つの実施形態においてNはMの倍数である。1つの特定の実施形態においてNは2の累乗に制約される。
前述のように、Mは4以上であり得、1つの実施形態においてMは4に等しく設定される。したがって、係る実施形態において、実行される全部の乗算は、Nのサイズに関わりなく4×4行列に対するものである。
加算器回路は様々な方法で構成されることができるが、しかし1つの実施形態において加算器回路は、各セットの前記M個の内部入力値を生成するために前記加算演算および減算演算のうちの少なくとも1つを並列的に実行するためのM個のレーンの並列処理を提供するSIMD回路として構成される。
同様に、1つの実施形態において、追加的加算器回路は、ベース回路により生成された各セットの前記M個の内部出力値に対して前記加算演算および減算演算のうちの少なくとも1つを並列的に実行するためのM個のレーンの並列処理を提供するSIMD回路として構成され得る。
上述のように、空間領域と周波数領域との間でN個の入力値を変換するために要求される乗算の個数は、上述の実施形態に係る技術を用いると、顕著に減少化される。1つの特定の実施形態において、データ処理装置は、空間領域と周波数領域との間の前記変換をN個のデータ値の各行および各行に対して別個に実行することにより、N×N配列のデータ値を含むビデオデータブロックに対して動作するよう構成され、各前記行および各前記列に対して前記ベース回路により実行される乗算の総数は3n−1+3n−2+…+9+Zである(ただしZは≦9であり、N=2である)。Zの値は単一のM×M離散コサイン変換を実行するために要求される乗算の個数に依存し、32×32配列(すなわちN=32)上で動作するよう構成され且つM=4である1つの特定的な実装において、6つの乗算が単一の4×4離散コサイン変換に対して要求される(すなわちZ=6)ことが見出された。上記の式から、これにより123個の乗算が要求されることとなる。これは、前述の部分的バタフライ手法により要求されるであろう乗算の個数の約1/3である。
上述の実施形態に係る装置は顕著な柔軟性を提供することが見出されている。同一の装置がフォワード変換および逆変換の両方を実行するよう構成されることが可能であるばかりか、それに加えてこの装置は異なるビデオ規格をサポートするよう構成され得る。特に、1つの実施形態において、この装置は、現在選択されたビデオ規格に応じて各セットのM個の内部入力値に対してベース回路に供給される対応するセットの係数を設定することを係数生成回路に行わせることにより、異なるビデオ規格をサポートするよう構成可能である。
第2の態様の観点からは、本発明は、ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するための方法を提供し、この方法は、N個の入力値を受け取り、前記N個の入力値の空間領域と周波数領域との間の変換を表すN個の出力値を生成するための一連の演算を実行するために変換回路を用いることと、変換回路により生成されたM個(ただしMは4以上である)の内部入力値を受け取り、変換回路に戻すためのM個の内部出力値を生成するために、係数cの配列を含み且つ
…cM−1
…c
… cM+1

M−1M+1 … c2M−2
の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するためにベース回路を用いることと、を含み、変換回路による前記一連の演算の実行は、N個の入力値から複数セットの前記M個の内部入力値を生成することと、複数セットの前記M個の内部出力値を生成するためにベース回路に各セットのM個の内部入力値を提供することと、前記複数セットのM個の内部出力値からN個の出力値を導出することと、を含む。
第3の態様の観点からは、本発明は、ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置を提供し、このデータ処理装置は、N個の入力値を受け取り、前記N個の入力値の空間領域と周波数領域との間の変換を表すN個の出力値を生成するための一連の演算を実行するための変換手段と、変換手段に戻すためのM個の内部出力値を生成するために、変換手段により生成されたM個(ただしMは4以上である)の内部入力値を受け取り、係数cの配列を含み且つ
…cM−1
…c
… cM+1

M−1M+1 … c2M−2
の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するためのベース回路手段と、を備え、変換手段は、前記一連の演算を実行する間、N個の入力値から複数セットの前記M個の内部入力値を生成し、複数セットの前記M個の内部出力値を生成するために各セットのM個の内部入力値をベース回路手段に提供し、前記複数セットのM個の内部出力値からN個の出力値を導出する。
本発明について、以下の添付の図面において示される本発明の実施形態を参照しつつ、単なる例として、さらに詳細に説明する。
いかにしてビデオデータのフレームが既知の技術にしたがってブロック毎の様式で処理されるかを示す概略図である。 既知の手法に係る1次元DCT変換演算を示す図である。 N×N行列を、一連のより小さい線形相関行列と単一のより小さい逆DCT行列とにより、これらの行列に対する入力および出力に様々な加算演算および減算演算が実行される状態で、実装するために、いかにしてN×N逆DCT変換行列が1つの実施形態にしたがって因数分解されるかを示す図である。 N×N行列を、一連のより小さい線形相関行列と単一のフォワードDCT行列とにより、これらの行列に対する入力および出力に様々な加算演算および減算演算が実行される状態で、実装するために、いかにしてN×NフォワードDCT変換行列が1つの実施形態にしたがって因数分解されるかを示す図である。 受け取られたN個の入力値に対して空間領域と周波数領域との間の変換を実行するための1つの実施形態に係るデータ処理装置内に提供される構成要素を概略的に示すブロック図である。 1つの実施形態に係る図4の加算器回路および追加的加算器回路内に提供される構成要素の概略図である。 1つの実施形態にしたがって1セットのN個の入力値を処理するために図4の回路により実行されるステップを示すフローチャートである。 1つの実施形態にしたがって1セットのN個の入力値を処理するために図4の回路により実行されるステップを示すフローチャートである。
図1はビデオデータのフレーム10を示す。なおこのフレームはブロック15の配列であり、各ブロックはデータ値20のN×N配列を含む。それぞれのデータ値は通常、複数ビット(例えば16ビット)のデータを含むであろう。入力ビデオデータに対してエンコード演算が実行されるときは、そのデータを空間領域から周波数領域に変換するために、それぞれの係るブロック15に2次元変換演算が実行されるであろう。通常、フォワード離散コサイン変換(FDCT)演算が係るエンコードを実行するために実行されるであろう。同様に、ビデオデータのエンコードされたフレームをデコードするときは、受け取られたエンコードされた信号を周波数領域から空間領域に変換するために、それぞれのブロックに2次元逆離散コサイン変換(IDCT)演算が実行されるであろう。
実際、2次元DCT演算は一連の1次元DCT演算により実行される。例えば、通常は、1次元DCT演算が行のそれぞれに対して実行され、それによりいくつかの中間結果が生成され、引き続き、対応する一連の1次元DCT演算がこれらの中間結果のそれぞれの列に対して実行される。したがって、N×Nブロックに対して、要求される2次元DCT演算を実装するために2N個の1次元DCT演算が実行される必要があることとなる。
図2は、入力値x〜xN−150の行または列に対して実行される標準的な1次元DCT演算を概略的に示す。これらのN個の入力値50に、N×N行列の係数値を含むN×N行列60が掛けられる。図2に概略的に示すように、それぞれの行における係数に対して対応する入力値が掛けられ、それらの乗算結果が合計されて、関連する出力値が作られる。このようにしてN個の出力値X〜XN−170が生成されるであろう。
それぞれの1次元変換演算に対して多量の乗算が実行されなければならないことが、図2から理解されるであろう。例えば、Nが32である場合を考えると、それぞれの1次元変換演算は32×32個の乗算、すなわち1024個の乗算を要求するであろう。前述のように、既知のバタフライ技術は乗算の個数を減少させるために用いられることができる。特にNが32である場合を再び考えると、既知のバタフライ技術を用いると乗算の個数を342に減少させることができる。しかし、ビットイグザクトな結果を達成しつつ、それぞれの1次元変換演算を実行するために要求される乗算の個数をさらに減少化させることが望まれるであろう。
図3Aは、N×NのIDCT行列を一連のより小さい行列に細分化することを可能にするために、逆変換演算に対して説明される実施形態にしたがって採用される因数分解手法を概略的に示す。特に、説明される実施形態によればN×NのIDCT行列100は効果的に行列110により置き換えられる。なお行列110は行列100よりも大きい(すなわち対角線がより長い)が、非ゼロ要素をより少なく含み、通常、行列110におけるより多くの係数値は実際にゼロである。行列110を通る対角線経路に沿って、いくつかのより小さいM×M行列が定義される。この具体例では、Mは4に等しいと仮定され、図示のように一連のL4行列120が提供され、各L4行列は前述の形のハンケル行列(すなわち通常の対角線に対して斜交する対角線上の要素がすべて等しくなっている線形相関行列)である。L4行列120の1例における係数の実際値は通常、L4行列の他の例における値とは異なるであろう。
図示のように、最初のIDCT(T4)行列130が提供され、この行列130は4×4のサイズのIDCT行列である。説明される実施形態に係る装置内に提供されるベース回路は、行列110の上部左側における行列から始まるこれらの定義された4×4行列の例130および120を用いて行列積を反復的に実行するために用いられることができる。しかしベース回路に提供されるM個の内部入力値は、供給されるN個の入力値に基づいてそれぞれの反復に対して別個に導出されなければならない。図4を参照して後に検討するように、これは、K個のグループの入力値を生成するために受け取られたN個の入力値を並べ替える並べ替え回路を用いることにより達成される。なおここでK=N/Mであり、したがって各グループはM個のメンバーを有し、各メンバーは受け取られたN個の入力値のうちの1つである。さらに、次に加算器回路は、各セットのM個の内部入力値を生成するために、選択されたグループからの対応するメンバーに対して一連の加算演算および減算演算を実行するために用いられる。実行されなければならない要求される加算演算および減算演算は、図3Aに示す0および+/−1の行列105内で定義される。同様に、ベース回路により生成される内部出力値は、N個の入力値のIDCTに対応するN個の出力値を生成するために用いられる前に、操作を必要とする。特に、図4を参照して後に検討するように、追加的加算器回路はベース回路により生成された複数セットのM個の内部出力値に対して一連の加算演算および減算演算を実行するために用いられる。なおここで、0および+/−1の値の行列115が、要求される加算演算および減算演算を指定する。
図3Bは、いかにして同一の基本的な因数分解手法がフォワードDCT演算を実行するために用いられることができるかを示す。特に、N×NのFDCT行列140は、同様の構成のより小さいM×M(この場合4×4)の行列を含む行列150に効果的に細分化される。特に、一連のL4行列120が再び提供されるが、この事例では、FDCT4×4(F4)行列160が図3AのIDCT4×4(T4)行列130に代わって提供される。加えて、図3Aの例ではT4行列の積がベース回路による最初の反復として実行される一方で、ベース回路はF4行列の積160を最終反復として実行する。再び、0および+/−1の値の行列145が、それぞれの反復に対してベース回路に提供される内部入力値を生成するときに加算器回路により実行される加算演算および減算演算を定義するために用いられ、同様に、0および+/−1の行列155がベース回路により生成される内部出力値を処理するために用いられる追加的加算器回路により要求される加算演算および減算演算を指定するために用いられる。
図3Aおよび図3Bに示す様々な行列の相対的サイズを考え、次に元の行列100および140がN×Nであると仮定し、さらにN=2=4×2n−2であるならば、行列110または150の幅は4×(3n−3+3n−4+…+3+1+1)である。N=32である具体例を考えると、n=5となり、したがって行列110または150の幅は4×(9+3+1+1)すなわち56となる。したがって、行列110および150のそれぞれは56×56の行列となるであろう。その事例では、行列105および145は32(横)×56(縦)となり、行列115および155は56(横)×32(縦)となるであろう。
図4は1つの実施形態に係るデータ処理装置内に提供される構成要素を示すブロック図である。並べ替え回路200は、各セットのN個の入力値を受け取るよう構成され、内部格納器205内に格納されるK個のグループの入力値を作るために、これらのN個の入力値に対して並べ替えを実行するよう構成される。KはN/Mに等しく、したがってそれぞれのグループはM個のメンバーを有する。ここで各メンバーは受け取られたN個の入力値のうちの1つである。したがって例えばNが32でありMが4である場合、格納器205内に8個のグループが存在することであろう。
次に加算器回路210が、ベース回路215(本明細書ではL回路とも呼称される)に提供される各セットのM個の内部入力値を生成するために用いられる。加算器回路は、選択されたグループからの対応するメンバーに対して演算を行うよう構成され、したがって1つの反復において、選択されたいくつかのグループからのメンバー0に対して演算を実行し得、他の反復ではいくつかのグループからのメンバー1に対して演算を実行し得る。図3Aおよび図3Bを参照して前述したように、行列105および125は、任意の特定の反復に対して要求される加算演算および減算演算を判定するために、加算器回路により参照される。
逆変換が実行される図3Aの事例を考えると、第1反復の間、加算器回路は、M×MのIDCT行列を形成するTM行列を用いて行列積が実行されるM個の内部入力値を生成することが理解されるであろう。図3Aの具体例に対して、Mは4であると仮定され、したがって第1反復の間に加算器回路210により生成されるM個の内部入力値に対して、ベース回路215を用いてT4行列130による行列積が行われるであろう。係数生成回路220はT4行列130内に含まれる係数の値を生成する。次にベース回路215はM個の内部出力値を生成するために要求される行列積演算を実行し、このM個の内部出力値は追加的加算器回路225に導かれるであろう。次に、追加的加算器回路は、格納器230内に格納される中間出力値を生成するために行列115により定義される加算演算および減算演算を実行する。これらの中間出力値は、K個のグループの中間出力値を形成すると考えられ得る。ここで再び、各グループはM個のメンバーを有し、各メンバーは中間出力値のうちの1つである。格納器230は、全部の反復が実行されるときまでに格納器230がN個の中間出力値の全部によりポピュレートされるよう、ポピュレートされる。
図3Aの例に戻ると、小さい4×4のIDCT変換が実行される第1反復の後、次に一連の行列積が、生成されたセットのM個の内部入力値を、様々な線形相関行列120により乗算するために、複数の反復にわたって実行されるであろう。図3Aにおいて、これらの線形相関行列のそれぞれは4×4のハンケル行列の形を取る。それぞれの反復に対して、加算器回路210は、各セットの内部入力値を生成するときに実行される適切な加算演算および減算演算を判定するために、行列105を参照するであろう。係数生成回路220はそれぞれの反復に対して適切な係数値を生成するであろう。同様に、追加的加算器回路225は、各反復の間にベース回路により生成される内部出力値に対して実行される適切な加算演算および減算演算を判定するために、行列115を参照するであろう。
要求される反復の全部が実行されたときには、格納器230はすでにN個の内部出力値によりポピュレートされていて、これらの内部出力値はシフトおよび飽和回路235に通され、その回路において、シフトおよび飽和演算が、シフトおよび飽和された中間出力値を生成するために、実行される。シフトおよび飽和演算はN個の中間出力値の全部が生成された後に1回だけ実行され、これは結果がビットイグザクトであることを保証するように作用し、特に処理を実行する間に複数段階でシフトおよび飽和演算を反復的に実行することにより導入されるであろう丸め誤差が回避されることに注意すべきである。
次にシフトおよび飽和された中間出力値は追加的並べ替え回路240に通され、追加的並べ替え回路240は、要求されるN個の出力値を生成するために、N個のシフトおよび飽和された中間出力値を並べ替えるよう構成される。追加的並べ替え回路240により実行される並べ替えは、入力値に対して並べ替え回路200により実行された並べ替えに依存する。
図4の回路は、ビデオデータをエンコードする間は空間領域から周波数領域にそのデータを変換するためのフォワード変換を実行するか、またはデータをデコードする間は周波数領域から空間領域にそのデータを変換するための逆変換を実行するよう、構成され得る。並べ替え回路200および追加的並べ替え回路240により実行される並べ替えは、装置がフォワード変換または逆変換を実行するために用いられているかに依存するであろう。同様に、加算器回路210および追加的加算器回路225により実行される加算演算および減算演算は、フォワード変換が実行されているかまたは逆変換が実行されているかに応じて異なるであろう。
係数生成回路220は、逆変換演算を実行するときにはT4行列130に対する係数を生成する必要があり、またはフォワード変換を実行するときにはF4行列140に対する係数を生成する必要があるであろう。しかしL4行列120のそれぞれの例に対して生成される係数は、いくつかの場合(例えば、より大きいHEVC行列に対して。そこでは、フォワード行列は逆行列の入れ換えである)において、装置をフォワード変換と逆変換との実行の間で再構成するとき、不変である。したがって、複数反復のL4行列積を実行すると、ベース回路の実行はこれらの場合において不変であり、正確に同一の係数が係数生成回路220により生成される。
この装置は様々なビデオ規格を実装するためにも用いられることができる。一方、係数生成回路220により生成される係数は異なるビデオ規格の間で変動するであろう。それとは対比的に、並べ替え回路200、加算器回路210、追加的加算器回路225、および追加的並べ替え回路240の基本的演算は通常、ビデオ規格が変わっても影響されることはない。
図5は1つの実施形態に係る加算器回路210および追加的加算器回路225内に提供される構成要素を示す。この事例ではMは4に等しいものと仮定される。したがって、K個のグループのM個の入力値が図4の格納器205内に格納されたときには、各グループは4つのメンバーを有することが理解されるであろう。この事例において、格納器205は、加算器回路210の一部を形成すると考えられ、4つのレジスタバンクVB0 300、VB1 305、VB2 310、およびVB3 315を備え、各レジスタバンクは、グループのそれぞれからの対応するメンバーを格納するための十分なレジスタを有する。したがって、Nが32である例を考えると、8つのグループが存在し、各グループは4つのメンバーを有する。レジスタバンク300、305、310、315のそれぞれは、8つのグループのそれぞれからの対応するメンバーが格納されることができるよう、8つのレジスタを提供するであろう。
並べ替え回路200により生成された並べ替えられた入力値は通常、RAM内にバッファされ、次に連続的にin0およびin1入力を介して(サイクル毎に2つのデータ値)並べ替えられた順序で関連するレジスタバンク300、305、310、315にロードされる。
対応する2入力加算器320、325、330、335はレジスタバンク300、305、310、315のそれぞれに関連付けられた状態で提供され、図示の実施形態では、各クロックサイクルの間に、これらの加算器のうちの2つはL4回路340に提供するための内部入力値を生成するために用いられ、その一方で他の2の加算器は所望により、関連付けられたレジスタバンク内に戻るよう供給されて格納される中間値を生成するために用いられ得る。L4回路340により実行される各行列積に対して、4つの内部入力値が要求され、したがって、L4回路340により実行される各行列積に対して要求される入力を生成するために2つのクロックサイクルが費やされる。
1つの実施形態において、様々な加算器回路320、325、330、335は、L4回路340により処理される4点の変換へと32点の変換を細分化するためにバタフライ演算およびカラツバ再帰を実行する。
加算器回路210により実行される演算は、この実施形態では、次にL4回路340の演算が4つのパイプラインステージP1からP4を占有する状態で、第1パイプラインステージP0内で実行される。次に、追加的加算器回路225は第6パイプラインステージP5を占有する。図示のように、L4回路340の最終ステージはサイクル毎に2つの内部出力値を生成し、これらの内部出力値はレジスタ345および350内に一時的に格納される。次に、レジスタ345内に格納されたそれぞれの値は適切な方法で加算器回路375または加算器回路380に提供されるであろう。同様に、レジスタ350内に格納されたそれぞれの値は適切な方法で加算器回路385または加算器回路390に提供されるであろう。最初、加算器回路375、380、385、390はこれらの値を、関連付けられたレジスタバンクWB0 355、WB1 360、WB2 365、およびWB3 370に戻すであろう。次に、加算器回路375、380、385、390は、4点L4変換出力から32点変換出力を再構築するためにバタフライ演算およびカラツバ再帰を使用し、処理の後のステージにおいて、このことの結果として、2つのレジスタバンク392および394はN個の中間出力値でポピュレートされることとなるであろう。
全部の積がL4回路により実行されると、レジスタ392および394の内容はN個の中間出力値を表すであろう。次に、これらの値は、シフトおよび飽和された中間出力値を生成するためのシフトおよび飽和回路396および398を通るよう導かれ、次に、このシフトおよび飽和された中間出力値は、N個の出力値に対して要求される最終的な順序に戻るようこれらの値を並べ替えるための追加的並べ替え回路240に導かれることができる。
図5の回路は、4の倍数である入力値の個数をサポートするために用いられることができ、1つの特定の実施形態において、入力値の個数は、N個の入力値が4つの入力値、8個の入力値、16個の入力値、32個の入力値、その他となるよう、2の累乗に限定される。Nが実際に4に設定される場合は、図5に示すように、バイパス経路が、加算器回路320、325、330、335および追加的加算器回路375、380、385、390の周りに提供され得る。したがってこの最適化は、NがMに設定されたとき回路を通る低レイテンシ経路を可能にする。しかし、パイプライン経路P6のシフトおよび飽和ステージは全部の変換サイズに対して依然として用いられるであろう。
複数の加算器回路320、325、330、335は、4セットの加算/減算を実行するために並列的に動作するよう、SIMDの様式で配列され得る。しかし、1つの実施形態において、加算器回路D0 320およびD2 330の動作は、第1サイクルでは、加算器回路320および330だけが用いられてL4回路に提供するための2つの内部入力値を生成し、一方、次のサイクルでは加算器回路325および335がL4回路に提供するための2つの追加的内部入力値を生成するために用いられるよう、加算器回路325および335の動作に対して交互配列される。その第2サイクルの間、加算器320および330が再び用いられるが、第2サイクルでは、それぞれのレジスタバンク300および310に戻るよう導かれるための中間値を生成するであろう。次のサイクルにおいて、加算器320および330がL4回路に内部入力値を提供し、加算器325および335がそれぞれのレジスタバンク305および315に戻るよう導かれるための中間値を生成する状態で、4つの加算器の全部が再び用いられ得る。これは、サイクル毎に2つの内部入力値をL4回路340に提供する一方で並列的に中間的な加算および減算が実行されることを可能にするための、効果的な機構を提供する。出力加算器回路375、380、385、390は、SIMD加算演算および減算演算を実行するために同様の様式で構成され得る。
1つの実施形態において、それぞれの提供される入力値は16ビットのサイズであり、レジスタバンク300、305、310、315は、加算器回路320、325、330、335により実行される加算により生成され得るより大きいサイズのオペランドを収容するために、18ビットの入力および出力を有する。したがって加算器回路320、325、330、335も18ビットの入力および出力を有する。追加的加算器回路225内で、レジスタバンク355、360、365、370および加算器回路375、380、385、390のそれぞれは、1つの実施形態において、L4回路340内で実行される乗算の結果として生成され得るサイズの内部出力値を収容するために、32ビットの入力および出力の幅を有する。シフトおよび飽和回路396および398の動作は、レジスタバンク392および394から受け取られた関連する32ビットの入力を取り、16ビットの出力(すなわち、入力値と同一サイズの出力値)を作る。
図6Aおよび図6Bは1つの実施形態に係る図4の回路の動作を示すフローチャートを提供する。ステップ400において、N個の入力値が並べ替え回路200に提供され、引き続きステップ405において、K個のグループのM個の値を作るために並べ替えが実行される(並べ替えは、装置がFDCTまたはIDCTを実行するよう構成されるかどうかに依存する)。ステップ410において、装置がIDCTを実行するよう構成されているかどうかが判定される。IDCTを実行するよう構成されている場合、処理はステップ415に進行し、ステップ415において、加算器回路210が、IDCT演算が実行されるM個の内部入力値を生成するために用いられる。ステップ420において、これらのM個の内部入力値は、適切な係数値が係数生成回路220により提供されたM×MのIDCT行列を用いて行列積を実行するためにベース回路215に通される。
次に処理はステップ425に進行し、ステップ425において、加算器回路210は、ハンケル行列による乗算が行われる複数セットのM個の内部入力値を生成するために、格納器205内の選択されたグループからの対応するメンバーに対して加算演算および減算演算を実行するために用いられる。次にステップ430において、各セットの内部入力値は、複数反復の行列積をハンケル行列(LM線形相関行列とも呼称される)を用いて実行するために、連続的にベース回路215に通される。前述のように、係数生成回路220は通常、それぞれの反復に対して別個のセットの係数値を生成するであろう。
次に処理はステップ435に進行し、ステップ435においてFDCTが実行されているかが判定される。FDCTが実行されていない場合、次に処理は直接にステップ450に進行する。逆にFDCTが実行されている場合には、図6Aに示すようにステップ415および420はバイパスされ、それに代わってステップ425および430の実行に引き続きステップ440および445が次に実行されるであろう。特にステップ440において、加算器回路210が、M×MのFDCT行列を用いてFDCT行列積が実行されるM個の内部入力値を生成するために用いられる。その後、ステップ445において、これらのM個の内部入力値はベース回路215に通され、次にベース回路215は要求される行列積を、FDCT行列を用いて実行する。再び、係数生成回路220はM×MのFDCT行列のための適切な係数値を生成する。
ステップ445に引き続き、またはIDCTが実行されている場合には直接的にステップ435の後に、処理はステップ450に進行し、ステップ450において、追加的加算器回路が、N個の中間出力値を作るために、ベース回路215により生成された複数セットのM個の内部出力値に対して加算演算および/または減算演算を実行するために用いられる。図6Bでは、ステップ450はベース回路により実行されるベース演算の全部の反復が実行された後に実行されるものとして示されるが、代替的な実施形態では、追加的加算器回路は、各セットのM個の内部出力値に対して、それらの値がベース回路により生成される都度、動作し得ることが理解されるであろう。
ステップ450が実行されたならば、格納器230はN個の中間出力値を含むであろう。ステップ455において、シフトおよび飽和回路235は、シフトおよび飽和された中間出力値を生成するためにシフトおよび飽和演算を中間出力値に適用する。次に、追加的並べ替え回路240はN個の出力値を生成するために、シフトおよび飽和回路235により提供された出力値を並べ替えるための追加的並べ替え演算を実行する。この時点で、N個の出力値はN個の入力値のビットイグザクトな変換を表すであろう。追加的並べ替え回路240により実行される実際の並べ替えは、FDCTが実行されているかまたはIDCTが実行されているかに依存するであろう。
上述の実施形態の機構を用いることにより、現代のビデオ規格(例えばHEVC規格など)により要求されるビットイグザクトな結果を保持しつつ、それぞれの1次元変換に対して要求される乗算の個数の顕著な減少化が可能であることが見出された。この技術はエンコードおよびデコードのために用いられ得、Nの異なるサイズに拡張可能である。1つの実施形態において、それぞれの1次元変換に対してベース回路215により実行される乗算の合計数は3n−1+3n−2+…+9+Zである。ただしZは≦9であり、N=2である。Zの値は単一のM×M離散コサイン変換を実行するために要求される乗算の個数に依存し、32×32配列(すなわちN=32)上で動作するよう構成され且つM=4である1つの特定的な実装において、6つの乗算が単一の4×4離散コサイン変換に対して要求される(すなわちZ=6)ことが見出された。上記の式から、123個の乗算が要求されることとなる。これは、既知の部分的バタフライ手法により要求されるであろう乗算の個数の約1/3である。
要求されるLM行列の反復回数は上述の式から直接的に導かれ得る。特に、Mが4に等しく、したがって複数反復のL4行列積がベース回路により実行される事例に対して、9個の乗算がそれぞれのL4行列積を実装するために要求される。Nが32である場合、上述のように123個の乗算が要求されるとき、これは単一の4×4の離散コサイン変換を実行するために要求される6つの乗算を含む。したがって、117個の乗算がL4行列積の乗算を実装するために要求され、特に、13反復のL4行列が存在し、それぞれが9個の乗算を要求するであろう。
特定の実施形態に関する以下の追加情報が提供される。
逆変換アルゴリズムの説明
このセクションでは、N点の逆離散コサイン変換演算に対して要求される演算をいかにして計算するかについて説明する。なお点の個数は2の累乗である。まず予測が以下の式


のように定義される。
次に、N点の逆離散コサイン変換T(c,…,cN−1)は、

により与えられる行i、列jにおける要素を有する行列により定義され得る。実際には、係数cはc(k)=cos(kπ/2N)の概算された整数または小数の推定値であるが、特定の値を有する係数には依存せず、単に行列が上記の形を有するのみである。以下の行列

は、小さいNに対するTを示す。入力ベクトルxおよび出力ベクトルyは式y=Txにより関連付けられる。
次に、以下の式
(k)=p2N(3) これは1と2N−1との間の奇数である。 (式1)
(k)=s2N(3) (式2)
のように、さらに定義される。2つの並べ替え、PおよびQは次の式


のように定義される。
並べ替えPは線形ベクトルに対する符号付き並べ替えである(パターンをより明らかにするために、説明は複数の行にわたり分割される)。並べ替えQは符号を変化させることなく値の順序を変更することである。
入力出力および係数値を並べ替えること、すなわち

により、

となるような新しい並べ替えられた変換

が与えられる。ハンケル行列がさらに、次の式

のように定義されるならば、第1の関係(R1)は、次の式

のようになり、第2の関係(R2)は、次の式

のようになる。関係(R1)は



およびLN/2に減少させ、引き続きN個の加算および減算が行われる。
関係(R2)はLをN/2個の加算に減少させ、引き続きLN/2による3つの乗算の後、引き続きN個の加算が行われる。これは係数の減算を含まないが、係数は一定であると仮定され、減算された係数値は予め計算され得る。
N=2≧8に対して、関係(R1)および(R2)を反復することは、再帰的に

を加算に減少させ、引き続き

による1つの乗算とLの形の行列による(3n−3+…+1)個の乗算とが行われ、引き続き加算および減算が行われる。
逆変換例
このセクションは、いかにして前のセクションの理論をN=16の実際的なケースに適用するかについて説明する。
次の入力ベクトルから始めると、次の式

は、次の式

のように並べ替えられる。並べ替えられたベクトルは、次の式

のように、それぞれ4つの要素の4つのグループまたはベクトルに分割される。同様に、これらの係数は次の式

のように並べ替えおよびグループ化がなされる。出力ベクトルは次の4つの並べ替えられたグループ、すなわち

に分割される。関係R1を適用することにより、次の式

が与えられる。関係R1およびR2を適用することにより次の式

が与えられる。これは、並べ替えを1つの

および4つのLの演算に減少させる。
フォワード変換アルゴリズムの説明
次に、N点の逆離散コサイン変換T(c,…,cN−1)=NT −1は、次の式

により与えられる行i、列jにおける要素を有する行列により定義され得る。

と定義し、入力並べ替えおよび出力並べ替えを交換し、関係(R1)を反転させると、関係(R3)が次の式

のように得られる。N=2≧8に対して、関係(R3)および(R2)を反復することは、再帰的に

を加算および減算に減少させ、引き続き

による1つの乗算とLの形の行列による(3n−3+…+1)個の乗算とが行われ、引き続き加算が行われる。この関係は同様に逆変換の例にも適用され得る。
実装例
以下のCコード例は、逆変換Tおよびフォワード変換Fを、それぞれ関数fact_idct_1d_i16()および関数fact_fdct_1d_i16()において実装する。
/* 予測p()を計算する

* p(2×k×n+r)=r 0<=r<nである場合
* 2×n−r n<=r<2×nである場合
*/

static unsigned int p_n(unsigned int k, unsigned int n)

k=k%(2×n);
if (k>=n)

k=2×n−k;

return k;

/* 符号s()を計算する

* s(4×k×n+r)=+1 0≦r<nまたは3×n<r<4×nである場合
* 0 r==nまたはr==3×nである場合
* −1 n<r<2×nである場合
*/

static int s_n(unsigned int k, unsigned int n)

int s=+1;
k=k%(4×n);
if (k==n || k==3×n)

s=0;

else if (k>=n && k<3×n)

s=−1;

return s;


/* 線形相関

* y[i]=x[0]×c[i]+…+x[n−1]×c[i+n−1]

* n×nの相関は再帰により4×4の演算に細分化される。
*/

static void L_n(
int32_t *y, //出力(n個の要素)
const int32_t *x, //入力(n個の要素)
const int32_t *c, //係数(2×n−1個の要素)
unsigned int n //サイズ


assert(n>=4);
if (n==4)

/* L4を9個の乗算で実装する
* 係数は事前計算され得る
*/
int32_t v0=(x[0]+x[1])×(c[1]−c[3]);
int32_t v1=(x[2]+x[3])×(c[5]−c[3]);
int32_t v2=(x[0]+x[1]+x[2]+x[3])×c[3];
int32_t w0=v0+v2;
int32_t w1=v1+v2;
v0=x[0]×((c[0]−c[2])−(c[1]−c[3]));
v1=x[2]×((c[4]−c[2])−(c[5]−c[3]));
v2=(x[0]+x[2])×(c[2]−c[3]);
y[0]=w0+v0+v2;
y[2]=w1+v1+v2;
v0=x[1]×((c[2]−c[4])−(c[1]−c[3]));
v1=x[3]×((c[6]−c[4])−(c[5]−c[3]));
v2=(x[1]+x[3])×(c[4]−c[3]);
y[1]=w0+v0+v2;
y[3]=w1+v1+v2;

else /* n>4 */

int32_t x2[MAX_ITRANS_SIZE/4];
int32_t c0[MAX_ITRANS_SIZE/2];
int32_t c1[MAX_ITRANS_SIZE/2];
int32_t y2[MAX_ITRANS_SIZE/4];
unsigned int i;
unsigned int n2=n>>1;

/* 再帰の前に加算減算 */
for (i=0; i<n2; i++)

x2[i]=x[i]+x[n2+i];


/* 係数は事前計算され得る */
for (i=0; i<n−1; i++)

c0[i]=c[i]−c[n2+i];
c1[i]=c[n+i]−c[n2+i];


/* 再帰 */
L_n(y2,x2,c+n2,n2); // x[i]+x[(n/2)+i]に対してL4
L_n(y,x,c0,n2); // x[i]に対してL4
L_n(y+n2,x+n2,c1,n2);// x[(n/2)+i]に対してL4

/* 再帰後に追加的な加算/減算 */
for (i=0; i<n2; i++)

y[i]=y[i]+y2[i];
y[n2+i]=y[n2+i]+y2[i];




/* 行列T〜_n(c)を並べ替えられた入力および出力を用いて計算する */

static void TT_n(
int32_t *y, // 出力
const int32_t *x, // 入力
const int32_t *c, // 係数
unsigned int n //サイズ


/* 因数分解されたバージョン */
assert(n>=4);
if (n==4)

/* 6つの乗算における4点IDCT */
int32_t v0,v1,v2;
assert(c[0]==c[1]);
v0=x[2]×c[2];
v1=x[3]×c[3];
v2=(x[0]+x[1])×c[0];
y[0]=v2+v0+v1;
y[2]=v2−v0−v1;
v0=x[2]×c[3];
v1=x[3]×c[2];
v2=(x[0]−x[1])×c[0];
y[1]=v2+v0−v1;
y[3]=v2−v0+v1;

else /* n>4 */

int32_t c1[MAX_ITRANS_SIZE]; //拡張された相関
unsigned int i;
unsigned int n2 = n>>1;

/* 係数は事前計算され得る */
for (i=0; i<n2; i++)

c1[i]=c[n2+i];
c1[n2+i]=−c1[i];


/* 再帰 */
TT_n(y,x,c,n2);
L_n(y+n2,x+n2,c1,n2);

/* 再帰後に追加的な加算/減算 */
for (i=0; i<n2; i++)

int32_t y0=y[i];
int32_t y1=y[i+n2];
y[i]=y0+y1;
y[i+n2]=y0−y1;




/* 行列F〜_n(c)を並べ替えられた入力および出力を用いて計算する */

static void FF_n(
int32_t *y, //出力
int32_t *x, //入力(バタフライにより変更)
const int32_t *c, //係数
unsigned int n //サイズ


/* 因数分解されたバージョン */
assert(n>=4);
if (n==4)

/* 6つの乗算における4点FDCT */
int32_t v0,v1,v2;
assert(c[0]==c[1]);
v0=(x[0]−x[2])×c[2];
v1=(x[1]−x[3])×c[3];
v2=(x[0]+x[1]+x[2]+x[3])×c[0];
y[0]=v2;
y[2]=v0+v1;
v0=(x[0]−x[2])×c[3];
v1=(x[1]−x[3])×c[2];
v2=(x[0]−x[1]+x[2]−x[3])×c[0];
y[1]=v2;
y[3]=v0−v1;

else /* n>4 */

int32_t c1[MAX_ITRANS_SIZE]; //拡張された相関
unsigned int i;
unsigned int n2 = n>>1;

/* 係数は事前計算され得る */
for (i=0; i<n2; i++)

c1[i]=c[n2+i];
c1[n2+i]=−c1[i];


/* 再帰の前に加算減算 */
for (i=0; i<n2; i++)

int32_t x0=x[i];
int32_t x1=x[i+n2];
x[i]=x0+x1;
x[i+n2]=x0−x1;


/* 再帰 */
FF_n(y,x,c,n2);
L_n(y+n2,x+n2,c1,n2);



/* 因数分解された1次元線形整数IDCT */

void fact_idct_1d_i16

int16_t *y, //出力
const int16_t *x, //入力
const int16_t *c, //係数
unsigned int n //サイズ
unsigned int shift, //右シフト
int32_t R //丸め


int32_t Y[MAX_ITRANS_SIZE];
int32_t X[MAX_ITRANS_SIZE];
int32_t C[MAX_ITRANS_SIZE];
unsigned int i;
unsigned int k;
unsigned int m;
unsigned int q;
unsigned int p;
int s;

/* 入力に符号付き並べ替えを適用する */
X[0]=x[0];
C[0]=c[0];
m=n/2;
for (k=1;k<n;k=k<<1,m=m>>1)

q=1;
for (i=0;i<k;i++)

p=m×p_n(q,2×k);
s=s_n(q,2×k);
X[k+i]=(s>0)?x[p]:−x[p];
C[k+i]=(s>0)?c[p]:−c[p];
q=(q×3)%(8×n);



/* 並べ替えられた変換T〜_nを計算する */
TT_n(Y,X,C,n); // XおよびYが変更されたことに注意

/* 出力に(符号なし)並べ替えを適用する */
q=1;
for (i=0;i<n;i++)

p=p_n(q, 2×n)>>1;
y[p]=(Y[i]+R)>>shift;
q=(q×3)%(8×n);



/* 因数分解された1次元線形整数FDCT */

void fact_fdct_1d_i16

int16_t *y, //出力
const int16_t *x, //入力
const int16_t *c, //係数
unsigned int n //サイズ
unsigned int shift,//右シフト
int32_t R //丸め


int32_t Y[MAX_ITRANS_SIZE];
int32_t X[MAX_ITRANS_SIZE];
int32_t C[MAX_ITRANS_SIZE];
unsigned int i;
unsigned int k;
unsigned int m;
unsigned int q;
unsigned int p;
int s;

/* 入力に(符号なし)並べ替えを適用する */
q=1;
for (i=0;i<n;i++)

p=p_n(q, 2×n)>>1;
X[i]=x[p];
q=(q×3)%(8×n);


/* 係数に符号付き並べ替えを適用する */
C[0]=c[0];
m=n/2;
for (k=1;k<n;k=k<<1,m=m>>1)

q=1;
for (i=0;i<k;i++)

p=m×p_n(q,2×k);
s=s_n(q,2×k);
C[k+i]=(s>0)?c[p]:−c[p];
q=(q×3)%(8×n);



/* 並べ替えられた変換F〜_nを計算する */
FF_n(Y,X,C,n);

/* 出力に符号付き並べ替えを適用する */
y[0]=(Y[0]+R)>>shift;
m=n/2;
for (k=1;k<n;k=k<<1,m=m>>1)

q=1;
for (i=0;i<k;i++)

p=m×p_n(q,2×k);
s=s_n(q,2×k);
int32_t yy=(s>0)?Y[k+i]:−Y[k+i];
y[p]=(yy+R)>>shift;
q=(q×3)%(8×n);


上述の実施形態から、係る実施形態は、異なるサイズのNに対してフォワード変換および逆変換の両方を実行するための拡大可能な機構を提供し、それにより変換を実行するために要求される乗算の個数に顕著な減少化がもたらされることと、係る実施形態はビットイグザクトな結果を作ることと、が理解されるであろう。
本発明の特定の実施形態について本明細書で説明してきたが、本発明がそれらの特定の実施形態に限定されないこと、および多数の改変例が本発明の範囲から逸脱することなく可能であることは明白であろう。例えば、以下の従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴と組み合わせることが可能である。

Claims (23)

  1. ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置であって、
    N個の入力値を受け取り、前記N個の入力値の前記空間領域と前記周波数領域との間の前記変換を表すN個の出力値を生成するための一連の演算を実行するよう構成された変換回路と、
    前記変換回路により生成されたM個(ただしMは4以上)の内部入力値を受け取り、前記変換回路に戻すためのM個の内部出力値を生成するために、係数cの配列を含み且つ
    …cM−1
    …c
    … cM+1

    M−1M+1 … c2M−2
    の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するためのベース回路と
    を備え、
    前記変換回路は、前記一連の演算を実行する間、前記N個の入力値から複数セットの前記M個の内部入力値を生成することと、複数セットの前記M個の内部出力値を生成するために各セットのM個の内部入力値を前記ベース回路に提供することと、前記複数セットのM個の内部出力値からN個の出力値を導出することと、を行うよう構成される、
    データ処理装置。
  2. 係数cの配列を含む前記行列はハンケル行列であり、
    前記ベース回路は、前記係数cからc2M−2に割り当てられた前記値に関わらず、前記ハンケル行列による前記M個の内部入力値の行列積に等価である前記ベース演算を実行するよう構成される、
    請求項1に記載のデータ処理装置。
  3. 空間領域と周波数領域との間で実行される前記変換は離散コサイン変換である、請求項1に記載のデータ処理装置。
  4. 前記変換回路が、
    K個のグループの入力値を生成するために、前記受け取られたN個の入力値を並べ替えるよう構成された並べ替え回路であって、K=N/Mであり、したがって各グループはM個のメンバーを有し、各メンバーは前記受け取られたN個の入力値のうちの1つである、並べ替え回路と、
    各セットの前記M個の内部入力値を生成するために、選択されたグループからの対応するメンバーに対して加算演算および減算演算のうちの少なくとも1つを実行するよう構成された加算器回路と
    を備える、請求項1〜請求項3のいずれか1項に記載のデータ処理装置。
  5. 前記変換回路が、
    N個の中間出力値を生成するために、前記ベース回路により生成された前記複数セットの前記M個の内部出力値に対して加算演算および減算演算のうちの少なくとも1つを実行するよう構成された、追加的加算器回路
    をさらに備える、請求項4に記載のデータ処理装置。
  6. 前記変換回路が、
    シフトされた中間出力値を生成するために、前記N個の中間出力値に対してシフト演算を実行するよう構成されたシフト回路
    をさらに備える、請求項5に記載のデータ処理装置。
  7. 前記シフト演算が飽和演算を含む、請求項6に記載のデータ処理装置。
  8. 前記変換回路が、
    前記N個の出力値を生成するために、前記N個のシフトされた中間出力値を並べ替えるよう構成された、追加的並べ替え回路
    をさらに備える、請求項6または請求項7に記載のデータ処理装置。
  9. 各セットのM個の内部入力値に対して、前記ベース演算の実行時に前記ベース回路により用いられる対応するセットの係数値を生成するよう構成された係数生成回路をさらに備える、請求項1〜請求項8のいずれか1項に記載のデータ処理装置。
  10. 前記空間領域から前記周波数領域へのフォワード変換および前記周波数領域から前記空間領域への逆変換のうちの1つを実行するよう構成された、請求項1〜請求項9のいずれか1項に記載のデータ処理装置。
  11. 各セットのM個の内部入力値に対して前記係数生成回路により生成された前記対応するセットの係数値が、データ処理装置がフォワード変換を実行するよう構成されているかまたは逆変換を実行するよう構成されているかに関わらず、同一である、請求項9に従属する場合の請求項10に記載のデータ処理装置。
  12. 前記変換回路が前記ベース回路に提供するための追加的セットのM個の内部入力値を生成するようさらに構成され、前記ベース回路が、離散コサイン変換行列による前記追加的セットのM個の内部入力値の行列積に等価である離散コサイン変換演算を実行することにより、前記追加的セットのM個の内部入力値に対して離散コサイン変換を実行するよう構成された、請求項3に従属する場合の請求項1〜請求項11のいずれか1項に記載のデータ処理装置。
  13. 前記ビデオデータのエンコードを実行する間はフォワード離散コサイン変換を実行するよう構成され、前記ベース回路が、前記複数セットのM個の内部入力値に対する前記ベース演算の実行の後にフォワード離散変換演算を前記離散コサイン変換演算として実行するよう構成された、請求項12に記載のデータ処理装置。
  14. 前記ビデオデータのデコードを実行する間は逆離散コサイン変換を実行するよう構成され、前記ベース回路が、前記複数セットのM個の内部入力値に対する前記ベース演算の実行の前に逆離散変換演算を前記離散コサイン変換演算として実行するよう構成された、請求項12に記載のデータ処理装置。
  15. NはMの倍数である、請求項1〜請求項14のいずれか1項に記載のデータ処理装置。
  16. Nは2の累乗である、請求項15に記載のデータ処理装置。
  17. M=4である、請求項1〜請求項16のいずれか1項に記載のデータ処理装置。
  18. 前記加算器回路が、各セットの前記M個の内部入力値を生成するために、前記加算演算および減算演算のうちの少なくとも1つを並列的に実行するためのM個のレーンの並列処理を提供するSIMD回路として構成される、請求項4に従属する場合の請求項1〜請求項17のいずれか1項に記載のデータ処理装置。
  19. 前記追加的加算器回路が、前記ベース回路により生成された各セットの前記M個の内部出力値に対して加算演算および減算演算のうちの前記少なくとも1つを並列的に実行するためのM個のレーンの並列処理を提供するSIMD回路として構成される、請求項5に従属する場合の請求項1〜請求項18のいずれか1項に記載のデータ処理装置。
  20. N個のデータ値のそれぞれの行およびそれぞれの列に対して前記空間領域と前記周波数領域との間の前記変換を別個に実行することにより、N×Nの配列のデータ値を含むビデオデータブロックに対する演算を実行するよう構成され、
    前記行および前記列のそれぞれに対して前記ベース回路により実行される乗算の合計数が、
    n−1+3n−2+…+9+Z(ただしZは≦9であり、N=2である)である、
    請求項1〜請求項19のいずれか1項に記載のデータ処理装置。
  21. 現在選択されたビデオ規格に応じて各セットのM個の内部入力値に対して前記ベース回路に供給される前記対応するセットの前記係数を設定することを前記係数生成回路に対して行わせることにより、異なるビデオ規格をサポートするよう構成可能である、請求項9に従属する場合の請求項1〜請求項20のいずれか1項に記載のデータ処理装置。
  22. ビデオデータ処理時に空間領域と周波数領域との間の変換を実行する方法であって、
    N個の入力値を受け取り、前記N個の入力値の前記空間領域と前記周波数領域との間の前記変換を表すN個の出力値を生成するための一連の演算を実行するために、変換回路を用いることと、
    前記変換回路により生成されたM個(ただしMは4以上)の内部入力値を受け取り、前記変換回路に戻すためのM個の内部出力値を生成するために、係数cの配列を含み且つ
    …cM−1
    …c
    … cM+1

    M−1M+1 … c2M−2
    の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するために、ベース回路を用いることと
    を含み、
    前記変換回路による前記一連の演算が、
    前記N個の入力値から複数セットの前記M個の内部入力値を生成することと、
    複数セットの前記M個の内部出力値を生成するために、各セットのM個の内部入力値を前記ベース回路に提供することと、
    前記複数セットのM個の内部出力値から前記N個の出力値を導出することと
    を含む、
    方法。
  23. ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置であって、
    N個の入力値を受け取り、前記N個の入力値の前記空間領域と前記周波数領域との間の前記変換を表すN個の出力値を生成するための一連の演算を実行するための変換手段と、
    前記変換手段により生成されたM個(ただしMは4以上)の内部入力値を受け取り、前記変換手段に戻すためのM個の内部出力値を生成するために、係数cの配列を含み且つ
    …cM−1
    …c
    … cM+1

    M−1M+1 … c2M−2
    の形を有する行列による前記M個の内部入力値の行列積に等価であるベース演算を実行するためのベース回路手段と
    を備え、
    前記変換手段が、前記一連の演算を実行する間、前記N個の入力値から複数セットの前記M個の内部入力値を生成し、複数セットの前記M個の内部出力値を生成するために各セットのM個の内部入力値を前記ベース回路手段に提供し、前記複数セットのM個の内部出力値から前記N個の出力値を導出する、
    データ処理装置。
JP2014094764A 2013-05-07 2014-05-01 ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 Active JP6357345B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1308186.4A GB2514099B (en) 2013-05-07 2013-05-07 A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data
GB1308186.4 2013-05-07

Publications (2)

Publication Number Publication Date
JP2014241585A true JP2014241585A (ja) 2014-12-25
JP6357345B2 JP6357345B2 (ja) 2018-07-11

Family

ID=48627390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014094764A Active JP6357345B2 (ja) 2013-05-07 2014-05-01 ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法

Country Status (4)

Country Link
US (1) US9378186B2 (ja)
JP (1) JP6357345B2 (ja)
CN (1) CN104144346B (ja)
GB (1) GB2514099B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111260020A (zh) * 2018-11-30 2020-06-09 深圳市海思半导体有限公司 卷积神经网络计算的方法和装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2514099B (en) * 2013-05-07 2020-09-09 Advanced Risc Mach Ltd A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data
GB2539241B (en) * 2015-06-11 2019-10-23 Advanced Risc Mach Ltd Video processing system
US11647227B2 (en) * 2021-08-16 2023-05-09 Nvidia Corporation Efficient transforms and transposes for rate-distortion optimization and reconstruction in video encoders
CN114531600B (zh) * 2022-02-18 2023-10-03 阿里巴巴(中国)有限公司 变换单元、现场可编程门阵列、芯片、电子设备、片上系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6246370A (ja) * 1985-08-23 1987-02-28 Toshiba Corp 線形変換装置
US5394349A (en) * 1992-07-10 1995-02-28 Xing Technology Corporation Fast inverse discrete transform using subwords for decompression of information
JP2002510418A (ja) * 1998-03-18 2002-04-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2007079972A (ja) * 2005-09-14 2007-03-29 Mitsubishi Electric Corp 逆変換回路
JP2013513866A (ja) * 2009-12-09 2013-04-22 日本テキサス・インスツルメンツ株式会社 共用フローグラフに基づく離散コサイン変換のための回路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452466A (en) * 1993-05-11 1995-09-19 Teknekron Communications Systems, Inc. Method and apparatus for preforming DCT and IDCT transforms on data signals with a preprocessor, a post-processor, and a controllable shuffle-exchange unit connected between the pre-processor and post-processor
CN1198177C (zh) * 2000-12-25 2005-04-20 蒋宏 对比空间频率实现成像光学系统自动对焦的方法
US7730116B2 (en) * 2004-12-14 2010-06-01 Stmicroelectronics, Inc. Method and system for fast implementation of an approximation of a discrete cosine transform
US8326068B1 (en) * 2006-08-30 2012-12-04 Maxim Integrated Products, Inc. Method and apparatus for modeling quantization matrices for image/video encoding
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
GB2514099B (en) * 2013-05-07 2020-09-09 Advanced Risc Mach Ltd A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6246370A (ja) * 1985-08-23 1987-02-28 Toshiba Corp 線形変換装置
US5394349A (en) * 1992-07-10 1995-02-28 Xing Technology Corporation Fast inverse discrete transform using subwords for decompression of information
JP2002510418A (ja) * 1998-03-18 2002-04-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2007079972A (ja) * 2005-09-14 2007-03-29 Mitsubishi Electric Corp 逆変換回路
JP2013513866A (ja) * 2009-12-09 2013-04-22 日本テキサス・インスツルメンツ株式会社 共用フローグラフに基づく離散コサイン変換のための回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VENKATRAM MUDDHASANI AND MEGHANAD D. WAGH: "Bilinear algorithm for discrete cosine transforms of prime length", SIGNAL PROCESSING, vol. Vol.86, Issue 9, JPN6018003490, 2006, pages 2393 - 2406, ISSN: 0003733950 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111260020A (zh) * 2018-11-30 2020-06-09 深圳市海思半导体有限公司 卷积神经网络计算的方法和装置
CN111260020B (zh) * 2018-11-30 2024-04-16 深圳市海思半导体有限公司 卷积神经网络计算的方法和装置

Also Published As

Publication number Publication date
GB201308186D0 (en) 2013-06-12
CN104144346B (zh) 2019-01-04
CN104144346A (zh) 2014-11-12
US20140337396A1 (en) 2014-11-13
GB2514099A (en) 2014-11-19
GB2514099B (en) 2020-09-09
JP6357345B2 (ja) 2018-07-11
US9378186B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
US7127482B2 (en) Performance optimized approach for efficient downsampling operations
KR101131757B1 (ko) 스케일링 인터페이스 및 넌-스케일링 인터페이스를 갖는 변환 디자인
JP6357345B2 (ja) ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法
US9665540B2 (en) Video decoder with a programmable inverse transform unit
US7117236B2 (en) Parallel adder-based DCT/IDCT design using cyclic convolution
US6574648B1 (en) Dct arithmetic device
US7020671B1 (en) Implementation of an inverse discrete cosine transform using single instruction multiple data instructions
Kammoun et al. Hardware acceleration of approximate transform module for the versatile video coding standard
US6907438B1 (en) Two-dimensional inverse discrete cosine transform using SIMD instructions
EP1018082A1 (en) Variable block size 2-dimensional inverse discrete cosine transform engine
US20030133507A1 (en) Adaptive inverse transformation device
KR101412964B1 (ko) Hevc를 위한 저면적 고성능 다중모드 1d 변환블록 및 이를 이용한 데이터 처리방법
CN108184127A (zh) 一种可配置的多尺寸dct变换硬件复用架构
JP3971135B2 (ja) Dct行列分解方法及びdct装置
KR101395143B1 (ko) 영상처리의 정수변환 방법 및 정수변환 장치
Vayalil et al. An efficient ASIC design of variable-length discrete cosine transform for HEVC
KR20150100348A (ko) 동영상 코덱의 역변환 방법 및 그 장치
KR100575285B1 (ko) 고속의 저전력 이산 코사인 변환 장치 및 방법
KR20130137951A (ko) 초고해상도 영상 코덱을 위한 역변환 방법
JP3575991B2 (ja) 直交変換回路
KR0152802B1 (ko) 영상 압축장치의 역이산 코사인 변환방법 및 장치
JP2007079972A (ja) 逆変換回路
Sihvo et al. Row-column decomposition based 2D transform optimization on subword parallel processors
Chatterjee et al. Constant throughput HEVC core transform design
KR100465156B1 (ko) 분산산술처리방식의 dct/idct 연산기에 있어서연산오차 및 연산시간 감소방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180514

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: 20180524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180618

R150 Certificate of patent or registration of utility model

Ref document number: 6357345

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250