(57)【要約】変換モジュールは、ビデオコーダに実装され得、第１の変換段と、転置バッファと、第２の変換段とを備え得る。第１の変換段（例えば行変換処理モジュール）は、構造が類似し得、入力バッファから受けた入力値（例えば周波数ドメインにおける画素値又は変換係数）のＮ×Ｎブロックに対して一斉に動作し得る複数の処理エンジンを備え得る。転置バッファは、入力ブロックのサイズよりも小さいサイズを有し得る。転置バッファは、ピンポンバッファとして実装され、それによって、第２の変換段が転置バッファから読み取っている間に、第１の変換段が転置バッファに書き込むことを可能にし得る。転置バッファは、第１の変換段から受けた中間値を転置し、第２の変換段（例えば列変換処理モジュール）に移動させ得る。【選択図】  図５
2017537491.tif 000002
【特許請求の範囲】
【請求項１】
入力値を備える入力ブロックに画像変換を適用するためのプロセッサであって、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、プロセッサ。
【請求項２】
前記転置バッファはピンポンバッファであり、前記第２の変換段が前記転置バッファから読み取っている間に、前記第１の変換段が前記転置バッファに書き込むように動作可能である、請求項１に記載のプロセッサ。
【請求項３】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２に記載のプロセッサ。
【請求項４】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１に記載のプロセッサ。
【請求項５】
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック中の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能であり、請求項４に記載のプロセッサ。
【請求項６】
前記第１の変換段及び前記第２の変換段は、離散コサイン変換（ＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項７】
前記第１の変換段及び前記第２の変換段は、逆離散コサイン変換（ＩＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項８】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１に記載のプロセッサ。
【請求項９】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１に記載のプロセッサ。
【請求項１０】
入力値を備える入力ブロックに画像変換を適用する方法であって、
入力バッファが、前記入力ブロックの前記入力値を格納することと、
第１の変換段が、前記入力値を受けることと、
前記第１の変換段が、反復技法を使用して前記入力値を中間値へと変換することと、
転置バッファが、前記中間値を受けることと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
第２の変換段が、前記中間値を受けることと、
前記第２の変換段が、反復技法を使用して、前記中間値を出力値へと変換することと
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、方法。
【請求項１１】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１０に記載の方法。
【請求項１２】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１１に記載の方法。
【請求項１３】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１０に記載の方法。
【請求項１４】
前記行変換処理モジュールが前記入力ブロック中の前記入力値の全ての行を変換し終える前に、前記列変換処理モジュールが、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行すること
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１０に記載の方法。
【請求項１６】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１０に記載の方法。
【請求項１７】
ビデオデータストリームを符号化するためのビデオエンコーダであって、
入力値を備える入力ブロックに画像変換を適用するための変換モジュールと、前記変換モジュールは、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備える、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、
前記出力値を量子化値へと量子化するように動作可能である量子化モジュールと、
前記ビデオデータストリーム上で出力される符号化値へと前記量子化値をエントロピー符号化するように動作可能であるエントロピー符号化モジュールと
を備えるビデオエンコーダ。
【請求項１８】
前記ビデオデータストリームは、ビデオデコーダ、ファイルサーバ及び記憶媒体のうちの少なくとも１つに送られる、請求項１７に記載のビデオエンコーダ。
【請求項１９】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１７に記載のビデオエンコーダ。
【請求項２０】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１９に記載のビデオエンコーダ。
【請求項２１】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１７に記載のビデオエンコーダ。
【請求項２２】
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック中の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能である、請求項２１に記載のビデオエンコーダ。
【請求項２３】
前記変換モジュールは、離散コサイン変換（ＤＣＴ）を実現する、請求項１７に記載のビデオエンコーダ。
【請求項２４】
ビデオデータストリームを復号するためのビデオデコーダであって、
前記ビデオデータストリームから受けた値を復号値へとエントロピー復号するように動作可能であるエントロピー復号モジュールと、
前記復号値を逆量子化するように動作可能である逆量子化モジュールと、これは、後続の段のための入力値を備える入力ブロックの形成を可能にする、
前記入力値を備える前記入力ブロックに画像変換を適用するための逆変換モジュールと
を備え、ここで、前記逆変換モジュールは、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、ここで、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、ビデオデコーダ。
【請求項２５】
前記出力値は、再構築ブロックを形成ために、動き補償モジュール又はイントラ予測モジュールからの出力に足される残差ブロックを形成する、請求項２４に記載のビデオデコーダ。
【請求項２６】
前記再構築ブロックは、参照フレームの一部として参照フレームバッファに格納される、請求項２５に記載のビデオデコーダ。
【請求項２７】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項２４に記載のビデオデコーダ。
【請求項２８】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２７に記載のビデオデコーダ。
【請求項２９】
前記逆変換モジュールは、逆離散コサイン変換（ＩＤＣＴ）を実現する、請求項２４に記載のビデオデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本願は一般に、ビデオコード化に関し、より具体的には、画像変換のハードウェア実現に関する。
【背景技術】
【０００２】
[0002]画像変換は、画像及びビデオデータを符号化及び復号するために慣用的に使用される。高効率ビデオコード化（ＨＥＶＣ）において使用されるもののようなビデオコーデックは、変換の優れたエネルギコンパクション性能により、離散コサイン変換（ＤＣＴ）及び逆離散コサイン変換（ＩＤＣＴ）を使用する。これらのコーデックは、モバイルデバイス、スマートＴＶ及び多くの他のビデオアプリケーションにより実現され得る。特にモバイルアプリケーションの場合、ＤＣＴのハードウェア実現のダイサイズ及び効率が特に重要である。
【０００３】
[0003]典型的に、所与の画像又はビデオフレームは、変換モジュールが動作し得る対象のマクロブロック又は変換単位（ＴＵ）へとセグメント化される。変換モジュールは、行及び列の処理のために別個の段を含み得る。転置バッファは典型的に、第１の段の出力を収集及び格納し、適切な時間に第２の段にこの出力を移動させるために行変換段と列変換段との間に位置する。
【発明の概要】
【０００４】
[0004]開示されるものは、最適なチップ面積に高性能を提供することを目的とした改善された変換モジュール及び改善された変換モジュールを組み込んだシステムを実装するための技法である。例えば、提案される変換モジュールは、ビデオコーダ（例えばビデオエンコーダ及び／又はビデオデコーダ）に実装され得る。変換モジュールは、様々な解像度及び１秒あたりのフレーム数（ＦＰＳ）要件に対してスケーラブルであり得る。変換モジュールは更に、メモリ（例えば入力バッファ）の読取帯域幅問題に対処するために実装され得る。一般に、限られた読取帯域幅と処理サイクルバジェットとを考慮に入れることで、提案されるシステム及び技法は、様々なシステム要件を満たすのに十分なスループットを維持しつつ、変換モジュールによって必要とされるダイ面積を最小化し得る。
【０００５】
[0005]幾つかの実施形態では、変換モジュールは、第１の変換段、転置バッファ及び第２の変換段を備え得る。第１の変換段（例えば行変換処理モジュール）は、構造が類似し得、入力バッファから受けた入力値（例えば周波数ドメインにおける画素値又は変換係数）のＮ×Ｎブロックに対して一斉に動作し得る複数の処理エンジンを備え得る。Ｎ／Ｋサイクルの期間にわたって中間値を生成するために、入力値に変換依存型係数が乗じられ、蓄積され得、ここで、Ｋは、入力バッファの読取帯域幅を表す。Ｎ／Ｋサイクルの後、蓄積された値は、第１の変換段から転置バッファに送られ得る。
【０００６】
[0006]転置バッファは、入力ブロックのサイズ（例えば３２×３２）よりも小さいサイズ（例えば２×８×４）を有し得る。実際、転置バッファのサイズは、ブロックのサイズから独立して選択され得る。また、転置バッファのサイズは、性能要件（例えば１秒あたりのフレーム数要件）から独立し得る。転置バッファは、ピンポンバッファとして実装され、それによって、第２の変換段が転置バッファから読み取っている間に、第１の変換段が転置バッファに書き込むことを可能にし得る。転置バッファは、第１の変換段から受けた中間値を転置し、第２の変換段（例えば列変換処理モジュール）に移動させ得る。中間値は、平均でより短い時間の間転置バッファに格納され得、これは、第２の変換段が、一斉に及び従来の方法によって可能であり得るものより早く、第１の変換段と同じブロックに対して作用し始めることを可能にする。
【０００７】
[0007]本開示の特徴、態様及び実施形態が、添付の図面に関連して説明される。
【図面の簡単な説明】
【０００８】
【図１】[0008]図１は、本開示の原理に係る、効率的な画像変換のために技法を利用するように構成され得るビデオ符号化及び復号システムの例を例示するブロック図を示す。
【図２】[0009]図２は、開示される原理に従って実装され得るビデオエンコーダの例を例示するブロック図を示す。
【図３】[0010]図３は、開示される原理に従って実装され得るビデオデコーダの例を例示するブロック図を示す。
【図４】[0011]図４は、変換モジュールアーキテクチャを例示するブロック図を示す。
【図５】[0012]図５は、開示される原理に係る、変換モジュールアーキテクチャを例示するより詳細なブロック図を示す。
【図６】[0013]図６は、処理エンジンの動作を例示するブロック図を示す。
【図７】[0014]図７は、開示される原理に係る、変換され得る入力ブロックを例示する概略図を示す。
【図８】[0015]図８は、入力ブロックの連続したブロックセグメントを生成するときの２つの変換段のアクティビティを例示するタイミング図を示す。
【発明の詳細な説明】
【０００９】
[0016]これらの例示的な図及び実施形態は、本願に由来する任意の請求項によって示される主題の記載される詳細な説明を提供するためのものである。これらの例示的な図及び実施形態は、任意のそのような請求項の範囲を制限するために使用されるべきではない。
【００１０】
[0017]更に、便宜上同様の参照番号が同様の構造を指して使用され得るが、様々な例となる実施形態の各々は、異なる変形例であるとみなされ得る。
【００１１】
[0018]図１は、本開示の原理に係る、効率的な画像変換のために技法を利用するように構成され得るビデオ符号化及び復号システム１０の例を例示するブロック図を示す。図１に示さるように、システム１０は、通信チャネル１６を介して宛先デバイス１４に符号化ビデオを送信する発信源デバイス１２を含む。符号化ビデオはまた、記憶媒体３４又はファイルサーバ３６に格納され得、要望に応じて宛先デバイス１４によってアクセスされ得る。発信源デバイス１２及び宛先デバイス１４は、デスクトップコンピュータ、ノートブック（例えばラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット（例えばスマートフォン又は他のパーソナル通信デバイス）、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、モバイルデバイス、等を含む、幅広い種類のデバイスの何れかを備え得る。多くのケースでは、そのようなデバイスは、ワイヤレス通信、ワイヤード通信又は両方に対応し得る。従って、通信チャネル１６は、ワイヤレスチャネル（例えばＷｉ−Ｆｉ接続）、ワイヤードチャネル（例えばＤＳＬ、ケーブルモデム、イーサネット（登録商標）、ＵＳＢ）又は符号化ビデオデータの送信に適したワイヤレス及びワイヤードチャネルの組み合わせ、を備え得る。
【００１２】
[0019]本開示の原理は、無線経由テレビブロードキャスト、ケーブルテレビ送信、衛星テレビ送信、（例えばインターネット）を介したストリーミングビデオ送信、データ記憶媒体への格納のためのデジタルビデオの符号化、データ記憶媒体に格納されたデジタルビデオの復号のような様々なマルチメディアアプリケーション又は他のアプリケーションの何れかをサポートして、ビデオコード化に適用され得る。
【００１３】
[0020]幾つかの実施形態では、デバイス１２、１４は、デバイス１２、１４の各々がビデオ符号化及び復号構成要素を含むように、実質的に対称的な方法で動作し得る。従って、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト及びビデオ電話のようなアプリケーションをサポートするために単方向及び双方向の両方のビデオ送信をサポートするように構成され得る。
【００１４】
[0021]図１に示される実施形態では、発信源デバイス１２は、ビデオ発信源（video source）１８、ビデオエンコーダ２０、変調器／復調器（モデム）２２及び送信機２４を含む。ビデオ発信源１８は、撮像デバイス（例えばビデオカメラ）、前に撮られたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するように動作可能であるビデオフィードインタフェース、発信源ビデオ（source video）としてコンピュータグラフィックデータを生成するためのコンピュータグラフィックシステムの任意の組み合わせ又は個々の例を備え得る。幾つかの実施形態では、ビデオ発信源１８は、ビデオカメラであり得、発信源デバイス１２及び宛先デバイス１４は、カメラ電話又はビデオ電話を形成し得る。しかしながら、本開示で説明される技法は、一般に、ビデオコード化に適用可能であり、ワイヤレス及び／又はワイヤードアプリケーションに適用され得る。
【００１５】
[0022]撮られた、前に撮られた又はコンピュータにより生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオ情報は、ワイヤレス通信プロトコルのような通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、様々なミキサ、フィルタ、増幅器及び信号変調のために設計された他の構成要素を含み得る。送信機２４は、増幅器、フィルタ及び１つ又は複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００１６】
[0023]ビデオエンコーダ２０によって符号化される、撮られた、前に撮られた又はコンピュータによって生成されたビデオはまた、後の消費のために記憶媒体３４又はファイルサーバ３６上に格納され得る。記憶媒体３４は、ブルーレイディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ又は符号化ビデオを格納するための任意の他の適切なデジタル記憶媒体を含み得る。次に、記憶媒体３４に格納された符号化ビデオは、復号及び再生のために宛先デバイス１４によってアクセスされ得る。
【００１７】
[0024]ファイルサーバ３６は、符号化ビデオを格納すること及び宛先デバイス１４に符号化ビデオを送信することができる任意のタイプのサーバであり得る。例となるファイルサーバは、（例えばウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、ローカルディスクドライブ又は符号化ビデオデータを格納することと、それを宛先デバイスに送信することとができる任意の他のタイプのデバイスを含む。ファイルサーバ３６からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信又はその両方の組み合わせであり得る。ファイルサーバ３６は、インターネット接続を含む、何らかの標準のデータ接続を通して宛先デバイス１４によってアクセスされ得る。これは、ファイルサーバに格納されている符号化ビデオデータにアクセスするのに適している、ワイヤレスチャネル（例えばＷｉ−Ｆｉ接続）、ワイヤード接続（例えばＤＳＬ、ケーブルモデム、イーサネット、ＵＳＢ）又は両方の組み合わせを含み得る。
【００１８】
[0025]図１の例では、宛先デバイス１４は、受信機２６、モデム２８、ビデオデコーダ３０及びディスプレイデバイス３２を含む。受信機２６は、チャネル１６を通して情報を受信し、モデム２８は、その情報を復調して、ビデオデコーダ３０のために復調ビットストリームを生成する。チャネル１６を通して通信される情報は、ビデオデータを復号する際にビデオデコーダ３０によって使用されるための、ビデオエンコーダ２０によって生成される様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体３４又はファイルサーバ３６に格納された符号化ビデオデータと共に含まれ得る。ビデオエンコーダ２０及びビデオデコーダ３０の各々は、ビデオデータを符号化又は復号することができるそれぞれのエンコーダ―デコーダ（ＣＯＤＥＣ）の一部を形成し得る。
【００１９】
[0026]ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか又は宛先デバイス１４の外部にあり得る。幾つかの例では、宛先デバイス１４は、一体化されたディスプレイデバイスを含み得、また外部のディスプレイデバイスとインターフェース接続するように構成され得る。他の例では、宛先デバイス１４は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス３２は、復号ビデオデータをユーザに表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイのような様々なディスプレイデバイス又は別のタイプのディスプレイデバイスの何れかを備え得る。
【００２０】
[0027]図１に示される実施形態では、通信チャネル１６は、無線周波数（ＲＦ）スペクトル又は１つ又は複数の物理送信ラインのような任意のワイヤレス又はワイヤード通信媒体又はワイヤレス及びワイヤード媒体の任意の組み合わせを備え得る。通信チャネル１６は、ローカルエリアネットワーク、広域ネットワーク又はグローバルネットワーク（例えばインターネット）のようなパケットベースのネットワークの一部を形成し得る。通信チャネル１６は一般に、発信源デバイス１２から宛先デバイス１４に又は発信源デバイス１２と宛先デバイス１４との間で双方向にビデオデータを送信するための、任意の適切な通信媒体又は異なる通信媒体の集合体を表す。通信チャネル１６は、ルータ、スイッチ、基地局又は発信源デバイス１２と宛先デバイス１４との間の通信を容易にするのに有益であり得る任意の他の機器を含み得る。
【００２１】
[0028]高効率ビデオコード化（ＨＥＶＣ）規格は、ＩＴＵ−Ｔビデオコード化エキスパートグループ（ＶＣＥＧ）及びＩＳＯ／ＩＥＣムービングピクチャエキスパートグループ（ＭＰＥＧ）のＪＣＴ−ＶＣ（Joint Collaboration Team on Video Coding）によって開発されている。ＨＥＶＣ規格の最新のドラフトは、「HEVC Working Draft 7」と呼ばれ、２０１２年６月７日付けでhttp://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v3からダウンロード可能である。HEVC Working Draft 7の全文は、文書ＪＣＴＶＣ−１１００３，Ｂｒｏｓｓ等、「High Efficiency Video Coding (HEVC) Text Specification Draft 7」、ＩＴＵ−Ｔ ＳＧ１６ ＷＰ３及びＩＳＯ／ＩＥＣ ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＣＴ−ＶＣ，第９回ミーティング：ジュネーブ、スイス、２０１２年４月２７日−２０１２年５月７日、である。ＨＥＶＣ規格の追加の最近のドラフトは、「HEVC Working Draft (WD) 8」と呼ばれ、http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zipから入手可能である。承認されたＨＥＶＣ規格は、２０１３年４月付けで、http://www.itu.int/rec/T-REC-H.265-201304-I, as of April 2013にある。本段落において示された参考文献の各々は、その全体が参照によって本明細書に組み込まれる。
【００２２】
[0029]ビデオエンコーダ２０及びビデオデコーダ３０は、ＨＥＶＣ規格又はＨＥＶＣ規格への拡張のようなビデオ圧縮規格に従って動作し得る。代替的に又は追加的に、ビデオエンコーダ２０及びビデオデコーダ３０は、別名ＭＰＥＧ―４，Ｐａｒｔ１０，アドバンスドビデオコード化（ＡＶＣ）とも呼ばれる国際電気通信連合電気通信標準化部門（ＩＴＵ−Ｔ）Ｈ．２６４規格又はそのような規格の拡張のような、他の独占的な又は業界の規格に従って動作し得る。他の例には、ＶＰ９、ＭＰＥＧ−２及びＩＴＵ−Ｔ Ｈ．２６３が含まれ得る。しかしながら、本開示の技法は、任意の特定のコード化規格又は技法に制限されない。
【００２３】
[0030]図１では示されないが、幾つかの態様では、ビデオエンコーダ２０及びビデオデコーダ３０は各々、オーディオエンコーダ及びデコーダと統合され得、共通のデータストリーム又は別個のデータストリームにおけるオーディオ及びビデオの両方の符号化を処理するために、適切な多重化及び逆多重化モジュール又は他のハードウェア及び／又はソフトウェアを含み得る。適用可能な場合、幾つかの実施形態では、多重化及び逆多重化モジュールは、ＩＴＵ Ｈ．２２３マルチプレクサプロトコル又はユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルに準拠し得る。
【００２４】
[0031]ビデオコーダは、本開示で説明される場合、ビデオエンコーダ、ビデオデコーダ又は両方を指し得る。ビデオエンコーダ２０及びビデオデコーダ３０は各々、１つ又は複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア又はそれらの任意の組み合わせのような、様々な適切なコーダ回路の何れかとして実装され得る。本技法がソフトウェアにより少なくとも部分的に実現される場合、デバイスは、このソフトウェアのための命令を、適切且つ非一時的なコンピュータ可読媒体に格納し、本開示の技法を実行するために１つ又は複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ２０及びビデオデコーダ３０の各々は、１つ又は複数のエンコーダ又はデコーダに含まれ得、それらは何れも、それぞれのデバイスにおいて、複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として統合され得る。ビデオエンコーダ２０及びビデオデコーダ３０の一方又は両方は、画像変換の効率を高めるために、本開示において説明される技法のうちの何れか又は全てを実現し得る。
【００２５】
[0032]図２は、開示される原理に従って実装され得るビデオエンコーダ２０の例を例示するブロック図を示す。ビデオエンコーダ２０は、本開示で説明された効率的な画像変換のための技法のうちの何れか又は全てを実行するように構成され得る。ビデオエンコーダ２０は、画像変換を実現し得る他のコード化規格又は方法に関して本開示を制限するのではなく例示するために、ＨＥＶＣのコンテキストで説明されるであろう。ビデオエンコーダ２０は、ビデオフレーム内のコード化単位（ＣＵ）のイントラ及びインターコード化を実行し得る。イントラコード化は、空間予測に依存して、所与のビデオフレーム内のビデオにおける空間冗長性を低減又は除去する。インターコード化は、時間予測に依存して、ビデオシーケンスの現在のフレームと前にコード化されたフレームとの間の時間冗長性を低減又は除去する。前にコード化されたフレームは、（例えばピクチャのグループ（ＧＯＰ）内の）ビデオシーケンスにおいて現在のフレームの前及び／又は後であり得る。イントラモード（Ｉモード）は、幾つかの空間ベースのビデオ圧縮モードの何れかを指し得る。単方向予測モード（Ｐモード）又は双方向予測モード（Ｂモード）のようなインターモードは、幾つかの時間ベースのビデオ圧縮モードの何れかを指し得る。
【００２６】
[0033]図２に示されるように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受ける。図２の例では、ビデオエンコーダ２０は、動き補償モジュール４４、動き推定モジュール４２、イントラ予測モジュール４６、参照フレームバッファ６４、加算器５０、変換モジュール５２、量子化モジュール５４及びエントロピー符号化モジュール５６を含む。変換モジュール５２は、１つ又は複数の変換単位（ＴＵ）を含む残差データのブロックに変換（例えば離散コサイン変換（ＤＣＴ））を適用する。ビデオブロック再構築のために、ビデオエンコーダ２０は、逆量子化モジュール５８、逆変換モジュール６０及び加算器６２も含む。デブロッキングフィルタ（図示されない）がまた、ブロック境界をフィルタ処理して、再構築ビデオからブロック歪み（blockiness artifact）を除去するために含まれ得る。必要に応じて、デブロッキングフィルタは典型的に、加算器６２の出力をフィルタ処理するであろう。追加の（インループ又はポストループ）フィルタもまた、デブロッキングフィルタに加えて使用され得る。追加のフィルタは簡潔さのために示されないが、それらは、ビデオエンコーダ２０内の様々なロケーションに、例えば、インループフィルタ処理のために加算器５０の出力に、含まれ得る。
【００２７】
[0034]例示を容易にするために別個の機能モジュールとして示されるが、ビデオエンコーダ２０内の構成要素の何れかの構造及び機能性が、互いに高度に統合され得る。例えば、幾つかの実施形態では、動き推定モジュール４２は、動き補償モジュール４４と高度に統合され得る。
【００２８】
[0035]符号化プロセス中、ビデオエンコーダ２０は、コード化されるべきビデオフレーム又はスライスを受ける。フレーム又はスライスは、例えば、最大コード化単位（ＬＣＵ）のような複数のビデオブロックへと分割され得る。動き推定モジュール４２及び動き補償モジュール４４は、時間圧縮を提供するために、参照フレームバッファ６４内に格納されている１つ又は複数の参照フレーム中の１つ又は複数のブロックに対して、受けたビデオブロックのインター予測コード化を実行する。イントラ予測モジュール４６は、空間的圧縮を提供するために、コード化されるべきブロックと同じフレーム又はスライス内の１つ又は複数の隣接ブロックに対して、受けたビデオブロックのイントラ予測コード化を実行し得る。
【００２９】
[0036]モード選択モジュール４０は、各モードについてのレート歪み分析に基づいて、（例えばイントラ又はインター）コード化モードのうちの１つを選択し得る。この選択に基づいて、結果として生じるイントラ又はインターコード化ブロックが、残差ブロックを表す残差データを生成するために加算器５０に及び参照フレームにおいて使用するための符号化ブロックを再構築するために加算器６２に提供され得る。モード選択モジュール４０はまた、イントラ予測モードインジケータ、動きベクトル、区分情報及び他のそのようなシンタックス情報といったシンタックス要素を、エントロピー符号化モジュール５６に提供し得る。幾つかのビデオフレームは、Ｉフレームと指定され得、ここで、Ｉフレーム内の全てのブロックは、イントラ予測モードで符号化される。幾つかのケースでは、イントラ予測モジュール４６はまた、Ｐ又はＢフレーム中のブロックのイントラ予測符号化を、例えば、動き推定モジュール４２によって実行される動き探索がこのブロックの満足のいく予測に帰着しないときに、実行し得る。
【００３０】
[0037]上述したように、動き推定モジュール４２及び動き補償モジュール４４は、高度に統合され得るが、概念上の目的で別個に示されている。動き推定は、ビデオブロックについての動きを推定する、動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレーム中の参照サンプルに対する、現在のフレーム内の予測単位（ＰＵ）の変位を示し得る。参照サンプルは、画素差分メトリックの観点から、コード化されているＰＵを含むＣＵの一部と厳密に一致すると認められたブロックであり得る。画素差分メトリックは、差分絶対値和（ＳＡＤ）、差分二乗和（ＳＳＤ）又は他の差分メトリックを伴い得る。
【００３１】
[0038]動き推定モジュール４２は、参照フレームバッファ６４に格納されている参照フレームの参照サンプルとＰＵを比較することによって、インターコード化されたフレームのＰＵについての動きベクトルを算出する。幾つかの例では、ビデオエンコーダ２０は、参照フレームバッファ６４に格納されている参照フレームのサブ整数画素位置についての値を算出し得る。例えば、ビデオエンコーダ２０は、参照フレームの４分の１画素位置、８分の１画素位置又は他の分数画素位置の値を算出し得る。従って、動き推定モジュール４２は、全画素位置及び分数画素位置の両方に対して動き探索を実行し、分数画素精度で動きベクトルを出力し得る。動き推定モジュール４２は、エントロピー符号化モジュール５６及び動き補償モジュール４４に算出された動きベクトルを送り得る。
【００３２】
[0039]動き補償モジュール４４によって実行される動き補償は、動き推定モジュール４２によって決定され得る動きベクトルに基づいてＰＵについての値を取込む又は生成することを伴い得る。現在のビデオブロックのＰＵについての動きベクトルを受けると、動き補償モジュール４４は、参照フレームのうちの１つにおいて、動きベクトルが指す対応するブロックを位置特定し得る。加算器５０は、以下で説明するように、コード化されている現在のビデオブロックの画素値を減算し、画素差分値を形成することで、残差ブロックを表す残差データを形成する。一般に、動き推定モジュール４２は、動きベクトルを算出するためにルーマ成分に対して動き補償を実行し、動き補償モジュール４４は、クロマ成分及びルーマ成分の両方に対して動きベクトルを使用する。
【００３３】
[0040]イントラ予測モジュール４６は、動き推定モジュール４２及び動き補償モジュール４４によって実行されるインター予測の代わりとして、受けたブロックをイントラ予測的に符号化することができる。イントラ予測モジュール４６は、ブロックについて左から右、上から下への符号化順序を前提として、例えば、現在のブロックの上、右上、左上又は左のブロックのような、隣接する、前にコード化されたブロックに対して、受けたブロックを符号化し得る。イントラ予測モジュール４６は、様々な異なるイントラ予測モードで構成され得る。例えば、イントラ予測モジュール４６は、符号化されているＣＵのサイズに基づいて、例えば、３３個の指向性予測モードのようなある特定数の指向性予測モードでも構成され得る。イントラ予測モジュール４６はまた、例えば、平面予測モード及びＤＣ予測モードといった他のタイプの予測モードで構成され得る。
【００３４】
[0041]イントラ予測モジュール４６は、例えば、様々なイントラ予測モードについての誤差値を算出することと、別のメトリックによって最も低い誤差値又は最も高いスコアをもたらすモードを選択することとによってイントラ予測モードを選択し得る。指向性予測モードは、空間的に隣接した画素の値を組み合わせ、組み合わせられた値を、関連するＰＵ内の１つ又は複数の画素位置に適用するための関数を含み得る。ＰＵにおける全ての画素位置についての値が計算されると、イントラ予測モジュール４６は、符号化されるべき受けたブロックと関連するＰＵとの間の画素の差分に基づいて、予測モードについての誤差値を算出し得る。幾つかの実施形態では、イントラ予測モジュールは、どのモードが別のメトリック（例えばレート−歪み）によって最も低い誤差値又は最も高いレーティングをもたらすかを決定するために、全てのイントラ予測モードをテストし得る。幾つかの実施形態では、イントラ予測モジュール４６は、別のメトリックによって許容可能な誤差値又は十分なレーティングをもたらすイントラ予測モードが決定されるまでイントラ予測モードをテストし続け得る。利用可能なイントラ予測モードのサブセットをテストすることは、必要とされる処理待ち時間及び処理帯域幅を減らし得る。
【００３５】
[0042]ビデオエンコーダ２０は、コード化されている元のビデオブロックから、動き補償モジュール４４又はイントラ予測モジュール４６によって計算される予測データを減算することによって残差ブロックを表す残差データを決定する。加算器５０は、この減算演算を実行する１つ又は複数の構成要素を表す。残差ブロックは、画素差分値の二次元行列に対応し得、ここで、残差ブロック内の値の数は、この残差ブロックに対応するＰＵ内の画素数と同じである。残差ブロック内の値は、ＰＵ及びコード化されるべき元のブロック内の同一の場所に位置付けられた画素の値の間の差分（例えば誤差）に対応し得る。この差分は、コード化されるブロックのタイプに依存して、クロマ又はルーマ差分であり得る。
【００３６】
[0043]変換モジュール５２は、残差ブロックから１つ又は複数のＴＵを形成し得る。変換モジュール５２は、離散コサイン変換（ＤＣＴ）、離散サイン変換（ＤＳＴ）、離散フーリエ変換（ＤＦＴ）、アダマール変換、ウェーブレット変換、整数変換、サブ帯域変換又は別のタイプの変換のような画像変換（例えば二次元変換）をＴＵに適用して、変換係数を備えるビデオブロックを生成する。変換モジュール５２は、本開示で更に説明されるように、画像変換を効率的に実行するために最適化され得る。
【００３７】
[0044]変換モジュール５２は、結果として生じる変換係数を量子化モジュール５４に送り得、次に、これは、この変換係数を量子化し得る。量子化は一般に、変換係数が離散値の縮小セットに変換されるプロセスを指し、これは、精度を犠牲にして、増加した効率（例えばより高い圧縮）に帰着する。量子化のレベルは、より高いエネルギの係数がより低いエネルギの係数よりも量子化されないように適応的に決定され得る。更に、より低いエネルギの係数のうちの幾つかは、量子化モジュール５４によって量子化された後、値「０」に設定され得る。これは、以下で説明されるように、エントロピー符号化からの改善された圧縮を可能にし得る。
【００３８】
[0045]量子化に続いて、ビデオエンコーダ２０は、変換係数をスキャンし得、量子化された変換係数を有する二次元行列から一次元ベクトルを生成する。スキャンは、比較的より高いエネルギを有する場合が多いより低い周波数の係数を、アレイの前方近くに置くように及びより高い周波数の係数を、アレイの後方近くに置くように設計され得る。幾つかの例では、ビデオエンコーダ２０は、変換係数をスキャンするために、既定のスキャン順序（例えばジグザグスキャンパターン）を使用し得る。他の例では、ビデオエンコーダ２０は、適応型スキャンを実行し得、選択されたスキャン順序は、データストリームへと符号化され得る。スキャンすることは、例えば、エントロピー符号化モジュール５６によって実行され得る。
【００３９】
[0046]変換係数がスキャンされると、エントロピー符号化モジュール５６は、コンテキスト適応型可変長コード化（ＣＡＶＬＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コード化又はコンテキストベースの適応型バイナリ算術コード化（ＣＡＢＡＣ）のようなエントロピーコード化をこれらの係数に適用し得る。加えて、エントロピー符号化モジュール５６は、動きベクトル（ＭＶ）情報及びビデオデコーダにおいてビデオデータを復号する際に有益な様々なシンタックス要素の何れかを符号化し得る。これらのシンタックス要素は、符号化ビデオデータを再構築するときに、ビデオデコーダによって使用され得る。エントロピー符号化モジュール５６によるエントロピーコード化に続いて、結果として生じる符号化ビデオは、ビデオデコーダのような別のデバイスに送信されるか又は後の送信又は取り出しのために保管され得る。
【００４０】
[0047]逆量子化モジュール５８及び逆変換モジュール６０は、例えば、参照フレームバッファ６４に格納されている参照フレームについての参照ブロックを作成するための、画素ドメインにおいて残差ブロックを再構築するために、それぞれ逆量子化及び逆変換を適用する。モジュール５８、６０は、ビデオデコーダの一部をシミュレートするために使用され得、それに応じて、ビデオデコーダ中にある対応するモジュールに実質的に類似し得る。逆変換モジュール６０は、変換モジュール５２と同様のアーキテクチャを使用して実装され得、従って、開示される技法から利益を享受し得る。
【００４１】
[0084]動き補償モジュール４４は、加算器６２と併せて、参照フレームバッファ６４のフレームのうちの１つの予測ブロックに残差ブロックを足すことで、参照ブロックを算出し得る。動き補償モジュール４４はまた、再構築残差ブロックに１つ又は複数の補間フィルタを適用して、動き推定において使用するためのサブ整数画素値を算出し得る。加算器６２は、動き補償モジュール４４によって生成された動き補償済み予測ブロックに再構築残差ブロックを足し得、参照フレームバッファ６４に格納するための再構築ビデオブロックを生成し得る。参照フレームバッファ６４は、デコーダにおいて受けたものと実質的に同じビデオ情報を保持し得、これは、ビデオエンコーダ２０が、イントラ予測モード及び動きベクトルを、これらのイントラ予測モード及び動きベクトルが適用されている間、デコーダによってみられるこの共通の「状態」情報に基づいて、正確に符号化することを可能にし得る。
【００４２】
[0049]参照フレームバッファ６４に格納されている再構築ビデオブロックは、別のビデオフレーム中のブロックをインターコード化するために、参照ブロックとして、動き推定モジュール４２及び動き補償モジュール４４によって使用され得る。追加的に又は代替的に、再構築ビデオブロックは、同じビデオフレーム中のブロックをイントラコード化するために、イントラ予測モジュール４６によって使用され得る。幾つかのシナリオでは、特定の参照ブロックは、イントラ予測又はインター予測の何れにも使用されず、それは、単に、他の有益な参照ブロックを有する参照フレームの一部であり得る。
【００４３】
[0050]図３は、開示される原理に従って実装され得るビデオデコーダ３０の例を例示するブロック図を示す。ビデオデコーダ３０は、本開示の技法のうちの何れか又は全てを実行するように構成され得る。
【００４４】
[0051]図３の例では、ビデオデコーダ３０は、エントロピー復号モジュール７０、動き補償モジュール７２、イントラ予測モジュール７４、逆量子化モジュール７６、逆変換モジュール７８、参照フレームバッファ８２及び加算器８０を含む。ビデオデコーダ３０は、幾つかの実施形態では、図２で説明されたビデオエンコーダ２０に関連して説明された符号化パスに対して概して相反した復号パスを実行し得る。
【００４５】
[0052]例示を容易にするために別個の機能モジュールとして示されるが、ビデオデコーダ３０内の構成要素の何れかの構造及び機能性が、互いに高度に統合され得る。例えば、幾つかの実施形態では、エントロピー復号モジュール７０は、逆量子化モジュール７６と高度に統合され得る。
【００４６】
[0053]復号プロセス中、ビデオデコーダ３０は、ビデオエンコーダによって生成されるような、関連シンタックス要素及び符号化ビデオスライスのビデオブロックを表す符号化ビデオビットストリームを受ける。ビットストリームは、図１に示されるように、ファイルサーバから、記憶媒体から及びモデムを介してビデオエンコーダからを含む様々な発信源から受けられ得る。
【００４７】
[0054]エントロピー復号モジュール７０は、ビットストリームを生成したビデオエンコーダのエントロピー符号化モジュールによって使用されたスキャン順序（例えば逆ジグザグスキャンパターン）をミラーリングするスキャンを使用して、受けた値をスキャンし得る。追加的又は代替的に、スキャン順序は、予測モード、ブロックサイズ、変換又は他の特性のようなコード化ビデオの特性に基づいて、ビデオデコーダ３０によって推測され得る。スキャン順序がどのように決定されようとも、エントロピー復号モジュール７０は、このスキャン順序の逆を使用して、受けた一次元ベクトルを二次元ベクトルアレイへとスキャンし得る。次に、エントロピー復号モジュール７０は、図２のエントロピー符号化モジュール５６によって使用されたものの逆であるプロセスを伴い得る符号化ビデオをエントロピー復号し得る。
【００４８】
[0055]ビデオデコーダ３０は、ビデオスライスレベル及び／又はビデオブロックレベルにおいて関連シンタックス要素を受け得る。エントロピー復号モジュール７０は、量子化係数、動きベクトル、イントラ予測モードインジケータ及び他のシンタックス要素を抽出するためにビットストリームを更に分析し得る。動きベクトルは、動き補償モジュール７２が受け得、イントラ予測モードインジケータは、イントラ予測モジュール７４が受け得る。
【００４９】
[0056]スライスがイントラコード化（Ｉ）スライスとしてコード化される場合、イントラ予測モジュール７４は、現在のフレーム又はピクチャの前に復号されたブロックからのイントラ予測モードインジケータ及びデータに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。
【００５０】
[0057]ビデオフレームがインターコード化（例えばＢ、Ｐ又はＧＰＢ）スライスとしてコード化される場合、動き補償モジュール７２は、動きベクトル及び他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックについてのＰＵを生成し得る。ＰＵは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、参照フレームバッファ８２に格納されている参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト（例えばＨＥＶＣ規格によって定義されるリスト０及びリスト１）を構築し得る。動き補償モジュール７２は、動きベクトル及び他のシンタックス情報を解析することで、ビデオブロックについての予測情報を決定し得る。この予測情報は、復号されている現在のビデオブロックについてのＰＵを生成するために使用され得る。例えば、動き補償モジュール７２は、（例えばイントラ又はインター）予測モード、インター予測スライスタイプ（例えばＢスライス、Ｐスライス又はＧＰＢスライス）、スライスについての１つ又は複数の参照ピクチャリストに関する構築情報、スライスの各インター符号化ビデオブロックについての動きベクトル、スライスの各インターコード化ビデオブロックについてのインター予測ステータス及び現在のビデオスライス内のビデオブロックを復号するための他の情報を決定し得る。
【００５１】
[0058]動き補償モジュール７２はまた、補間フィルタに基づいて補間を実行し得る。動き補償モジュール７２は、参照ブロックのサブ整数画素についての補間値を算出するために、ビデオブロックを符号化したビデオエンコーダによって使用されたものに類似した補間フィルタを使用し得る。幾つかの実施形態では、動き補償モジュール７２は、受けたシンタックス要素からビットストリームを生成したビデオエンコーダ２０によって使用された補間フィルタを決定し、この補間フィルタを使用して予測ブロックを生成し得る。
【００５２】
[0059]逆量子化モジュール７６は、ビットストリームにおいて提供され且つエントロピー復号モジュール７０によって復号された量子化変換係数を逆量子化（inverse quantize）（例えば逆量子化（de-quantize））する。逆量子化プロセスは、何らかの量子化誤差が存在し得るが、元の変換係数を決定するために適用され得る量子化の程度、また同様に、逆量子化の程度を決定するために、ビデオスライス内の各ビデオブロックについてビデオデコーダ３０によって算出される量子化パラメータＱＰＹの使用を含み得る。
【００５３】
[0060]逆変換モジュール７８は、画素又は画素差分ドメインにおいて残差ブロックを記述する残差データを形成するために逆変換（例えば逆ＤＣＴ）を適用し得る。逆変換は、図２の変換モジュール５２によって使用されたものの逆であり得る。逆変換モジュール７８はまた、改善された画像変換についての開示される技法から利益を享受し得る。
【００５４】
[0061]動き補償モジュール７２及び／又はイントラ予測モジュール７４が、現在のビデオブロックについてのＰＵを生成した後、ビデオデコーダ３０は、逆変換モジュール７８からの残差ブロックに、動き補償モジュール７２及び／又はイントラ予測モジュール７４によって生成された対応するＰＵを加算することで、復号ビデオブロックを形成する。加算器８０は、この加算演算を実行する１つ又は複数の構成要素を表す。必要に応じて、復号ブロックをフィルタ処理してブロック歪みを除去するために、デブロッキングフィルタも適用され得る。（例えばコード化ループ中の又はコード化ループの後の）他のループフィルタはまた、画素遷移をスムーズにするために使用されるか又は別の方法でビデオ品質を改善し得る。次に、所与のフレーム又はピクチャ中の復号ビデオブロックは、参照フレームバッファ８２に格納される。参照フレームバッファ８２は、後続の動き補償及び／又はイントラ予測に使用され得るこの又は他の参照フレーム又はピクチャを格納し得る。参照フレームバッファ８２はまた、ディスプレイデバイス上への提示のための復号ビデオを格納し得る。
【００５５】
[0062]図４は、変換モジュールアーキテクチャ４００を例示するブロック図を示す。変換モジュールアーキテクチャ４００は、（例えば図２の変換モジュール５２のように）エンコーダにおいて変換を実行するために及び／又は（例えば図２の逆変換モジュール６０及び／又は図３の逆変換モジュール７８のように）エンコーダ及び／又はデコーダにおいて逆変換を実行するために使用され得る。変換モジュールアーキテクチャ４００は、入力バッファ４０２から入力を受け得、アーキテクチャ４００は、第１のバス４０４、行変換処理モジュール４０６、第２のバス４０８、転置バッファ４１０、第３のバス４１２、列変換処理モジュール４１４及び出力バス４１６を含み得る。
【００５６】
[0063]一般に、画像変換（例えばＤＣＴ及びＤＳＴ）は、二次元で動作し、行変換及び列変換が別個の段において適用され得るように一次元行変換及び一次元列変換へと分解され得る。このタイプの分解は、変換処理がパイプライン化されることを可能にし、画像変換のソフトウェア及びハードウェアの両方の実現を簡略化することができる。例えば、行変換が、最初にＮｂｙＮ入力値の行列（例えばＮ×Ｎのサイズを有するＴＵ）に適用され得、これは次に、中間値のＮｂｙＮ行列を作成し得る。列変換が、中間値のＮｂｙＮ行列に適用されて、出力値のＮｂｙＮ行列が作成され得、これは、変換（又は逆変換）されたデータを表し得る。代替的に、本明細書及び本開示全体の両方において、列変換は、行変換の前に発生し得る。これらの技法は一般に、以下で説明されるように、変換モジュールアーキテクチャ４００によって利用される。
【００５７】
[0064]本開示では、「Ｎ×Ｎ」及び「Ｎ掛ｂｙＮ」は、それぞれ水平寸法及び垂直寸法の観点からのビデオブロックの画素寸法（例えば１６×１６画素又は１６×１６画素）を指して交換可能に使用され得る。一般に、１６×１６ブロックは、水平方向に１６個の画素（ｘ＝１６）及び垂直方向に１６個の画素（ｙ＝１６）を有することになる。同様に、Ｎ×Ｎブロックは一般に、水平方向にＮ個の画素及び垂直方向にＮ個の画素を有し、ここで、Ｎは自然数を表す。ブロック中の画素は、行及び列に配置され得る。ブロックについての共通のサイズ（例えばＨＥＶＣにおけるＴＵ）は、４×４、８×８、１６×１６及び３２×３２を含み得る。しかしながら、ブロックは、必ずしも、垂直方向と同じ画素数を水平方向に有する必要はない。例えば、ブロックは、Ｎ×Ｍ画素を備え得る、ここで、Ｍは必ずしもＮに等しいとは限らない。
【００５８】
[0065]入力バッファ４０２は、変換されるべき入力値のＮ×Ｎ入力ブロックを格納し得る。変換モジュールアーキテクチャ４００が変換モジュールを実装するために使用される場合、入力バッファ４０２は、残差ブロックの残差画素値を格納し得る。変換モジュールアーキテクチャ４００が逆変換モジュールを実装するために使用される場合、入力バッファ４０２は、変換ブロックの（例えば周波数ドメインにおける）変換係数を格納し得る。入力バッファ４０２は、様々なバッファの何れかとして（例えば逆ジグザグバッファとして）実装され得る。
【００５９】
[0066]入力バッファ４０２内の入力値は、バス４０４を介して行変換処理モジュール４０６に送られ得る。第１の変換段において、行変換処理モジュール４０６は、Ｎ×１入力値の各行を、Ｎ×１中間値の対応する行へと変換するために、Ｎ点行変換を実行し得る。
【００６０】
[0067]行変換は、当技術分野で知られている様々な技法の何れかを使用して実現され得る。例えば、ＨＥＶＣ規格は、４点、８点、１６点及び３２点ＤＣＴに加え、４点ＤＳＴを定義する。この変換の定義は、Ｎの異なる値（例えば４、８、１６及び３２）について、Ｎ点行変換（及びＮ点列変換）を実現するための係数の行列を伴い得る。これらの変換依存型係数の行列（例えばカーネル行列）が固定であり且つ事前に知られているため、それらは、計算のオーバヘッドを低減するためにメモリに格納され得る。例えば、３２点ＤＣＴのための変換依存型係数の行列は、ルックアップテーブルに及び／又は容易にアクセス可能なメモリレジスタのセットに格納され得る。変換依存型係数は、Ｎ×１中間値を生成するために、Ｎ×１入力値が乗じられ得る。これらの変換依存型係数が、変換モジュールによって出力された又は逆変換モジュールによって受けられた変換係数とは異なること及び実際それらを算出するために使用され得ることは留意されるべきである。
【００６１】
[0068]別の変換が選択される場合、そのような離散フーリエ変換（ＤＦＴ）、アダマール変換、ウェーブレット変換、整数変換、サブ帯域変換又は対応する逆変換の何れか、変換依存型係数の異なるセットが選択され得る。
【００６２】
[0069]Ｎ点行変換は、Ｎ×Ｎ入力ブロックから合計でＮ×Ｎ中間値を生成するために、Ｎ個の行の各々について行変換処理モジュール４０６によって繰り返され得る。中間値は、バス４０８を介して転置バッファ４１０に送られ得る。
【００６３】
[0070]転置バッファ４１０は、バス４１２を介して列変換処理モジュール４１４に中間値を移動させ得る。第２の変換段において、列変換処理モジュール４１４は、Ｎ点列変換をＮ個の列の各々に適用し得る。Ｎ点列変換は、行変換処理モジュール４０６によって適用されるＮ点行変換に類似し得る。
【００６４】
[0071]Ｎ個の列に対してＮ点列変換を反復的に実現することで、列変換処理モジュール４１４は、出力値（例えば変換された値又は逆変換された値）のＮ×Ｎブロックを決定し得る。出力値のＮ×Ｎブロックは、出力バス４１６を介して後続の処理段及び／又はメモリに送られ得る。変換モジュールアーキテクチャ４００が変換モジュールを実装するために使用される場合、出力バス４１６は、（例えば周波数ドメインにおいて）変換係数を出力し得、これは、量子化モジュール（例えば図２の量子化モジュール５４）によって受けられ得る。変換モジュールアーキテクチャ４００が逆変換モジュールを実装するために使用される場合、出力バス４１６は、残差データを表す画素値を出力し得る。この残差データは、フレームバッファ（例えば図２における参照フレームバッファ６４及び／又は図３における参照フレームバッファ８２）に格納するためのビデオフレームを再現するために、イントラ予測又はインター予測値に足され得る。
【００６５】
[0072]図５は、開示される原理に係る、変換モジュールアーキテクチャ５００を例示するより詳細なブロック図を示す。変換モジュールアーキテクチャ５００は、入力バッファ５０２から入力を受け得、アーキテクチャ５００は、入力バッファ５０２、第１のバス５０４、行変換処理モジュール５０６、第２のバス５０８、転置バッファ５１０、第３のバス５１２、列変換処理モジュール５１４及び出力バス５１６を含み得る。
【００６６】
[0073]入力バッファ５０２は、変換されるべき入力値のＮ×Ｎアレイを格納し得る。入力バッファ５０２は、バス５０４を介して行変換処理モジュール５０６に送られ得る１サイクルあたりの値の最大数を表す読取帯域幅Ｋを更に有し得る。本開示内では、サイクルは、１つ又は複数の処理サイクル又は任意の他の論理的な時間間隔を表し得る。以下に示されるように、改善された変換モジュールアーキテクチャ５００は、高レベルの面積効率及び電力効率を達成するために、読取帯域幅Ｋで最適にスケーリングするように設計され得る。
【００６７】
[0074]第１の変換段において、行変換処理モジュール５０６は、複数の処理エンジン５０７を備え得る。図５に示される実施形態では、４つの処理エンジン５０７−０〜５０７−３（ＰＥ０〜ＰＥ３）は各々、バス５０４を介して入力バッファ５０２から各サイクルで受けたＫ×１個の入力の共通のセットに対して動作し得る。各処理エンジン５０７は、共通の同時に受けた入力のセットを使用して、異なる中間値を計算するタスクが課せられ得る。換言すると、複数の中間値が並列して計算され得る。例えば、同じ入力を使用するとき、処理エンジン５０７−０は、ある行において第１の中間値を生成し得、処理エンジン５０７−１は、その行において第２の中間値を同時に生成し得、処理エンジン５０７−２は、その行において第３の中間値を同時に生成し得、処理エンジン５０７−３は、その行において第４の中間値を同時に生成し得る。これらの中間値は各々、異なる列に関連付けられ得、これらの列のサブセットが、中間値によって表され得る。次に、行変換処理モジュール５０６は、４つの中間値（各処理エンジン５０７から１つずつ）のセットを、バス５０８を介して転置バッファ５１０に出力し得る。
【００６８】
[0075]各中間値がＮ×Ｎアレイの行中のＮ個の入力値の各々に依存し得るため、ＫがＮよりも小さい場合、中間値を生成するために、１つよりも多くのサイクル、そして入力バッファ５０２からの１つよりも多くの読取動作、が必要とされ得る。Ｎ／Ｋ個の読取動作のセットは、一度にＫ個の値、行中のＮ個の値の各々を読み取るために使用され得る。このプロセスは、図６に関連して更に説明される。
【００６９】
[0076]上述したように、図５の実施形態では、入力バッファ５０２からの読取動作の１つのセットは、４つの中間値の生成に帰着し得る。変換を３２×３２のＴＵに適用する例では、ＴＵ内の各画素（例えば入力値）は、４つの処理エンジンの同時使用により、３２回ではなく８回アクセスされるだろう。従って、必要とされるメモリ読取帯域幅は、一度に１つの中間値を算出するシステムと比べて４分の１に低減され得る。これは、限られたメモリ読取帯域幅でシステムの性能を大幅に改善し得る。入力バッファ５０２の設計に対して制約がないとき、開示される原理は、更に、入力バッファ５０２の、必要とされるメモリ読取帯域幅の低減を可能にし得、これは、ダイ面積、電力消費及び設計複雑性を減らし得る。例えば、３２点変換は、３２ではなく８のバス幅及び入力バッファ幅（例えばＲＡＭ幅）を使用して実現され得る。入力バッファ５０２の幅を減らすことは、合計のダイ面積を決定する際にメモリ幅が重要な役割を担い得るため、重要な利益を提供し得る。
【００７０】
[0077]転置バッファ５１０は、ピンポンバッファとして動作し得る。これは、列変換処理モジュール５１４が転置バッファ５１０から読み取っている間に、行変換モジュール５０６が転置バッファ５１０に値を書き込むことを可能にする。行変換処理モジュール５０６が所定のサイズのフルブロック（full block）（例えば８×４中間値のブロック）を転置バッファ５１０に書き込む時、このブロックは、それが列変換処理モジュール５１４によって読み取られ得るバッファ６１０の反対側に移動し得る。
【００７１】
[0078]従来の転置バッファは一般に、入力バッファと同じサイズである。結果として、従来の転置バッファは、大量のダイ面積を占め得、中間値は、第２の変換段によって読み取られる前に比較的長い持続時間の間このバッファ内に格納され得る。例えば、Ｎ×Ｎ入力ブロックの場合、転置バッファの先の実現は、全ての入力値を一斉に保持することをサポートするためにＮ×Ｎのサイズを有し得る。更に、先の実現の第２の変換段は、それらが入力に対して動作し始め得る前に、フルの転置バッファ又は少なくともフル行又はフル列の間待つだろう。中間値を保持するのに必要される時間及び転置バッファのサイズの両方は、本明細書で開示される技法によって低減され得る。
【００７２】
[0079]サイズに関して、転置バッファ５１０は、幾つかの実施形態では、２×８×４（ここで、「２」はバッファのピンポン性質を表す）のサイズを有し得、これは、入力ブロックのサイズ（例えば３２×３２）よりも小さいだろう。
【００７３】
[0080]時間について、上述したように、行変換処理モジュール５０６は、４つを１セットとしてバッファ５１０に書き込み得る。４つの中間値の８セット全てが転置バッファ５１０に書き込まれた後、中間値は、８×４のブロックを形成し、これは、この転置バッファの反対側に移動され得、これにより、このブロックを、列変換処理モジュール５１４にアクセス可能にする。列変換処理モジュール５１４は、行変換処理モジュール５０６が同じ入力ブロック内で別の８×４ブロックを処理している間、このブロックにおいて中間値を処理することをすぐに開始し得る。中間値の保持時間を減らすことは、モジュールの利用を増加させ得、これは、例えば、ダイ面積あたりのスループットのメトリック（throughput per die area metric）によって測定されるような、性能を増加させ得る。
【００７４】
[0081]他の実施形態では、転置バッファは、サイズに幅が有り得、サイズは、より一般に、２×Ａ×Ｂと表され得、ここで、Ａ及びＢは、Ｎ以下の自然数である。
【００７５】
[0082]第２の変換段において、列変換処理モジュール５１４は、バス５１２を介して転置バッファ５１０から中間値を読み取り得る。列変換処理モジュール５１４は一般に、行変換処理モジュール５０６に類似して動作し得る。例えば、列変換処理モジュール５１４はまた、複数の処理エンジン５１５−０〜５１５−３（ＰＥ０〜ＰＥ３）を備え得る。列変換処理モジュール５１４は、中間値の８×４ブロックを、これらのブロックが行変換処理モジュール５０６によって転置バッファ５１０に格納された後に処理し得る。
【００７６】
[0083]４つの行処理エンジン５０７が行変換処理モジュール５０６内に示されているが、幾つかの実施形態では、より少ない数又はより多い数の処理エンジン５０７が利用され得る。更に、４つの列処理エンジン５１５が列変換処理エンジン５０７内に示されているが、幾つかの実施形態では、より少ない数又はより多い数の処理エンジン５１５が利用され得る。幾つかの実施形態では、行変換処理モジュール５０６は、列変換処理モジュール５１４とは異なる数の処理エンジンを有し得る。
【００７７】
[0084]図６は、処理エンジン５０７の動作を例示するブロック図を示す。処理エンジン５０７は、図５の行変換処理モジュール５０６内に実装され得る。処理エンジン５０７はまた、以下に説明するように何らかの修正を伴って、図５の列変換処理モジュール５１４内の処理エンジン５１５として機能するように適合され得る。
【００７８】
[0085]処理エンジン５０７は、バス５０４を介して入力バッファ５０２からＫ個の入力値を受け得る。上述したように、Ｋは、入力バッファ５０２に関連付けられた読取帯域幅を表し得る。処理エンジン５０７が行変換を実行するために実装される場合、入力値は、共通の行内にあり得る。処理エンジン５０７はまた、バス６０２からＫ個の変換依存型係数を受け得る。行変換処理モジュール内の各処理エンジン５０７は、Ｋ個の変換依存型係数の異なるセットを受け得る。上述したように、これらの係数は、コード化規格（例えばＨＥＶＣ）によって定められ得る。これらの係数は、例えば、１６ビットの値であり得る。バス６０２は、ルックアップテーブル及び／又は容易にアクセス可能なメモリレジスタのセットから変換依存型係数を受け得る。
【００７９】
[0086]処理エンジン５０７内で、Ｋ個の入力値の各々は、Ｋ個の乗算器６０４のうちの１つを使用してバス６０２からのＫ個の変換依存型係数のうちの１つが乗じられ得る。乗算器の数が読取帯域幅Ｋの関数として変化するため、処理エンジン５０７（及び全体としての変換モジュールアーキテクチャ）は、メモリ帯域幅に伴ってスケーリングする。更に、アーキテクチャが広範囲の性能、電力及び面積制約に容易に適応可能であるため、設計時間及びコストは、１つの実現が完了した後、大幅に低減され得る。表１に関連して、例示的な構成が以下で説明される。
【００８０】
[0087]Ｋ個の乗算器の出力が加算器６０６によって加算され、部分和が生成され得る。部分和は、蓄積レジスタ６０８に格納され得る。
【００８１】
[0088]入力バッファ５０２が、単一のサイクルで行全体が読み取られるのに十分な帯域幅（例えばＫ＝Ｎ）を有する場合、部分和は、中間値を表す完全和（complete sum）であり得る。この中間値は、蓄積レジスタ６０８に格納され、その後、バス５０８を介して転置バッファ５１０に送られ得る。代替的に、蓄積レジスタ６０８は、バイパス（又は完全に除去）され得、加算器６０６の出力は、バス５０８を介して転置バッファ５１０に直接格納され得る。
【００８２】
[0089]しかしながら、入力バッファ５０２が、行全体が単一のサイクルで読み取られることができないような限られた帯域幅を有する場合（例えばＫ＜Ｎ）、蓄積レジスタ６０８が使用され得る。各サイクルでは、蓄積レジスタ６０８は、Ｋ個の変換依存型係数を有するＫ個の入力値のＫ個の乗算器からの値を格納及び蓄積し得る。蓄積動作は、加算器６０６が、Ｋ＋１個の入力（例えばＫ個の乗算器６０４の及び蓄積レジスタ６０８の出力）の加算を実行するように、加算器６０６によって実行され得る。行中のＮ個全ての値は、Ｎ／Ｋサイクルの後に読み取られ得る。Ｋ個の入力値の最後のセットに、Ｋ個の変換依存型係数が乗じられ、蓄積レジスタの定数と加算されると、中間値を表す完全和が決定され得る。この中間値は、蓄積レジスタ６０８に格納され、その後、バス５０８を介して転置バッファ５１０に送られ得る。代替的に、加算器６０６の出力は、中間値がバス５０８を介して転置バッファ５１０に直接格納され得るように、この最後のサイクル中、蓄積レジスタ６０８をバイパスし得る。蓄積レジスタ６０８は、処理エンジン５０７による次の中間値の計算が開始する前に、０の値を保持するためにリセットされ得る。
【００８３】
[0090]幾つかの実施形態では、乗算器６０４は、バス６０２から受けた１６ビットの係数を、入力バッファ５０２から受けた８ビットの入力値に乗じ得る。蓄積レジスタは、処理エンジン５０７が一段目の行変換処理モジュールで使用されるケースにおいて、２５ビットを保持する能力があり得る。
【００８４】
[0091]処理エンジン５０７は、二段目の列変換処理モジュールでの使用のために適合され得る。図５に示されるように、列変換処理モジュール５１４内の処理エンジン５１５は、バス５１２を介して転置バッファ５１０から入力を受け得る。これらの処理エンジン５１５は、バス５１６を介して後続の段に送られる出力値を更に決定し得る。
【００８５】
[0092]図６に戻り、処理エンジン５０７が二段目の列変換処理モジュールで使用されるとき、蓄積レジスタ６０８は、サイズが（例えば２８ビットに）増加し得る。これは、最終値を決定するために実行される算出の総回数が、中間値を決定するために実行される場合よりも多いためである。従って、アンダーフロー又はオーバーフローの発生を回避するために、より高い精度レベル（例えばより多いビット）がこの後続の段において有益であり得る。蓄積レジスタ６０８に格納されるビットの数も、コード化規格によって定められ得る。
【００８６】
[0093]図７は、開示される原理に係る、変換され得る入力ブロック７００を例示する概略図を示す。入力ブロック７００は、例えば、３２×３２のサイズを有するＴＵであり得、これは、１サイクルあたり８つの入力値という読取帯域幅Ｋを有する入力バッファに格納され得る。例示的な目的で且つ以下の説明を簡潔にするために、これらのブロックサイズ及びメモリ読取帯域幅は選択される。しかしながら、開示された原理の範囲内でありつつ、他のメモリ読取帯域幅及び他のブロックサイズが選択され得る。
【００８７】
[0094]また、以下の開示を簡潔にするために、図７で説明される実施形態は、４つの処理エンジンを有する行変換処理モジュールと、２×８×４のサイズを有する転置バッファとを含む。しかしながら、上述したように、行変換処理モジュールは、より多くの数又はより少ない数の処理エンジンを有し得る。更に、転置バッファは、サイズに幅があり得、このサイズは、より一般には２×Ａ×Ｂと表され得、ここで、Ａ及びＢは、３２×３２入力ブロックよりも小さい中間値のＡ×Ｂブロックを定める自然数である。
【００８８】
[0095]図７に示される区分化は、行変換処理モジュールが受けた入力セット７０２（例えば８つの入力値のグループ化）を表す。従って、入力セット７０２は、８×１のサイズの入力値を有する縦方向のブロックとして表される。より具体的には、入力セット７０２は、Ｋ×１ブロックであり得る。
【００８９】
[0096]第１の変換段において、行変換処理モジュールは、４つの入力セット７０２−０、７０２−１、７０２−２及び７０２−３を備え得る第１の行（行０）からブロック７００を処理し始め得る。第１のサイクル中に、入力セット７０２−０は、行変換処理モジュールの処理エンジンの各々が受け得る。各処理エンジン内では、図６に説明されたように、同じ８つの入力値は、（処理エンジン毎に異なり得る）８つの変換依存型係数のセットが乗じられ、加算され、対応する処理エンジンの蓄積レジスタに格納され得る。このプロセスは、入力セット７０２−１、７０２−２及び７０２−３について繰り返され得、これらは、各々、変換依存型係数の異なるセットが乗じられ得る。行変換処理モジュールが入力セット７０２−３を処理した後、第１の行（行０）は、（例えば８回のうちの第１の回の間に）完全に通過(traverse)されることとなり、中間値の第１のセットが決定され得る。
【００９０】
[0097]行変換処理モジュールが４つの処理エンジンを有する場合、４つの中間値が生成され、転置バッファに送られ得る。例えば、これら４つの中間値は、第１の行（行０）と最初の４つの列（列０−４）とが交差する場所にあり得、各中間値は、これら４つの列に関連付けられた出力値を決定するのを助けるために後に使用され得る。
【００９１】
[0098]行変換処理モジュールは、第２の行（行１）について上述したプロセスを繰り返し得、これは、入力セット７０２−４、７０２−５、７０２−６及び７０２−７を含み得る。処理エンジンの各々における入力セット７０２−０に対して使用された変換依存型係数のセットと同じセットが、入力セット７０２−４に対して使用され得る。同様に、変換依存型係数は、入力セット７０２−１と７０２−５、入力セット７０２−２と７０２−６及び入力セット７０２−３と７０２−７との間で同じであり得る。共通の変換依存型係数のこの選択は、結果として生じる中間値が同じく列０−３を表し得ることを可能にする。結果として、行変換処理モジュールは、第２の行（行１）と最初の４つの列（列０−３）とが交差し得る場所に更に４つの中間値を同様に生成し得る。この反復プロセスは、第８の行（明示的には図示されないが、行７）が行変換処理モジュールによって処理されるまで、後続の各列について繰り返し得る。第８の行が行変換処理モジュールによって完了されると、８×４中間値のフルブロックが決定され得る。これらの中間値は、２×８×４転置バッファの片側を満たし得、これは、第２の変換段における後続の処理のために、列変換処理モジュールへの中間値の８×４ブロックのアクセスを可能にするよう転置バッファをトリガし得る。
【００９２】
[0099]上から明らかなように、列変換処理モジュールは、行変換処理モジュールが入力ブロック７００を処理し始めたすぐ後に（例えばブロックの１／３２が中間値へと処理された後に）入力ブロック７００に関連付けられた中間値を処理し得る。このように、第１及び第２の変換段は両方とも、入力ブロック（例えばＴＵ）に対して同時に動作し得る。その結果として、転置バッファは、従来の転置バッファよりも小さく、転置バッファはまた、比較的少ないサイクルの間、中間値も保持し得る。中間値は、この例では３２サイクルである８×Ｎ／Ｋサイクルの間転置バッファに格納され得る。３２サイクルの後、第２の転置段は、転置バッファからの中間値にアクセスし得、その時点で、転置バッファ内の対応するメモリロケーションは、自由に上書きされることができる。
【００９３】
[00100]行変換処理モジュールは、それが、入力セット７０２−１２４、７０２−１２５、７０２−１２６及び７０２−１２７を有する入力ブロック７００内の最後の行（例えば行３１）を完了するまで、入力セット７０２を処理し続け得る。最後の行が行変換処理モジュールによって処理された後、合計で３２×４個の中間値が決定され得、第４の８×４ブロックが、列変換処理モジュールに送られ得る。この段において、中間値の合計で４つのフル列が、列変換処理モジュールによって処理され得る（又は処理する準備がされ得る）。各列変換は中間値のフル列が完了することを必要とするため、これは、列変換処理モジュールが、最初の４つの行について最後の出力値を（完全に）算出することを可能にし、これは、出力バス上で後続の処理段及び／又はメモリに送られ得る出力値の３２×４ブロックを形成する。
【００９４】
[00101]第１の行（行０）は、行変換処理モジュールによってもう一度アクセスされ得るが、変換依存型係数の新しいセットは、処理エンジンごとに選択され得る。変換依存型係数のこれら新しいセットは、行変換処理モジュールが次の４つの列（例えば列４−７）についての中間値を生成し得るように、選択され得る。これら次の４つの列が列変換処理モジュールによって処理されると、最終値の第２の３２×４ブロックが、出力バス上で送られ得る。このプロセスは、最終値の８つの３２×４ブロックが出力バス上で送られるまで繰り返され得、その時点で新しいブロック（例えばＴＵ）の変換が開始され得る。
【００９５】
[00102]図７の説明は、行変換が列変換よりも前に発生する実施形態を説明しているが、幾つかの実施形態では、列変換が最初に発生し得る。これらの実施形態では、入力セット７０２は、１×Ｋブロック（例えば１×８ブロック）であり得、列変換処理モジュールへと送られる入力値を表す。当業者によって理解されるように、出力値を生成するために、厳密に類似したプロシージャが続く。
【００９６】
[00103]更に、スキャン順序の方向は、図７に示される順序とは異なり得る。例えば、行変換処理モジュールは、所与の行において左から右又は右から左の何れかから入力セットを受け得る。更に、行は、上から下に又は下から上に反復され得る。変換依存型係数は、列が左から右に又は右から左に反復されるように選択され得る。ジグザグ、交互又は他のスキャンパターンもまた使用され得る。
【００９７】
[00104]図８は、入力ブロックの２つの連続した３２×４ブロックセグメントを生成するときの２つの変換段のアクティビティを例示するタイミング図を示す。タイミング図は、図７に関連付けられた実施形態に類似した変換モジュールの実施形態に関連付けられる。図８によって表される実施形態では、入力ブロックは、３２×３２のサイズを有し得、行変換処理モジュール及び列変換処理モジュールは、各々４つの処理エンジンを有し得、行変換処理モジュールは、列変換処理モジュールの前に動作し得る。更に、入力バッファは、読み取られ得る１サイクルあたりの値の最大数を表す読取帯域幅Ｋを有し得る。
【００９８】
[00105]追加的に、タイミング図は、左から右に進む（例えば最も左の列０−３から開始して最も右の列２８−３１で終える）中間及び出力値の決定を例示する。しかしながら、出力値を決定することの相対的な順序は変動し得る（例えば最も右の列についての出力値を最初に決定する）。
【００９９】
[00106]タイミング図の第１のタイムライン８０２は、第１の変換段において行変換処理モジュールによって処理されるブロックのタイミングを表す。タイミング図の第２のタイムライン８０４は、第２の変換段において列変換処理モジュールによって同時に処理されるブロックのタイミングを表す。
【０１００】
[00107]タイムライン８０２に示されるように、行変換処理モジュールは、各時間期間８１０にわったって１つの行を処理し得る。３２×３２ブロック内の各行が、３２個の入力値を含み得、入力バッファが読取帯域幅Ｋを有し得るため、各時間期間８１０は、３２／２Ｋサイクルかかり得る。しかしながら、サイクルの正確な数は、処理及び他の要因による遅延に依存して依然として変動し得る。３２個の行の各々は、時間期間８２０−１にわたって処理され得、それによって、３２×４個の中間値に同等のものを生成する。時間期間８２０−１が、時間期間８１０のうちの３２を含むため、時間期間８２０−１の持続時間は、３２×３２／Ｋであり得る。時間期間８２０−１の終わりに、行変換処理モジュールは、最初の４つの列（列０−３を表す）３２×４個の中間値を生成し終え得る。
【０１０１】
[00108]これらの中間値は、時間期間８２２−１の初めから開始して、最初の４つの列（列０−３）についての最終値を生成するために列変換処理モジュールによって使用され得る。列変換処理モジュールが依然としてこれらの最終値を生成している間に、行変換処理エンジンは、同じく３２×３２／Ｋサイクル持続し得る時間期間８２０−２にわたって次の４つの列（列４−７）についての中間値を決定し得る。この場合も同様に、持続時間及び相対的なタイミングは単なる例であり、他の持続時間及び相対的なタイミングが使用され得る。
【０１０２】
[00109]行変換処理モジュールは、３２個全ての列についての中間値が生成されるまで、入力ブロックに対して動作し続け得、その時点で、行変換処理モジュールは、別のブロックについての入力値を処理し始め得る。
【０１０３】
[00110]転置バッファが３２×４よりも小さいことから、各時間期間８２０にわたって生成される中間値がどの時点においても３２×４ブロックとして実際アセンブルされない可能性があることは留意され得る。代わりに、中間値は、各時間期間８２０の終わりに４つの８×４ブロックで列変換処理モジュールに送られ得る。
【０１０４】
[00111]列変換処理モジュールは、転置バッファの中に中間値の８×４ブロックを満たすこと（filling up）に関連付けられた遅延８３０の後に入力ブロックに対して動作し始め得る。各行を読み取るのに３２／Ｋサイクルかかり得、中間値の８×４ブロックを生成するために８つの行が読み取られ得ることから、遅延８３０は、８×３２／Ｋサイクル持続し得、その時点の後に、列変換処理モジュールは、中間値に対して動作し始め得る。列変換処理モジュールは、入力ブロック全体が変換されるのを待つ必要がないため、遅延８３０は、従来の変換モジュールアーキテクチャに関連付けられたものよりもかなり少ないだろう。
【０１０５】
[00112]遅延８３０の後、列変換処理モジュールは、時間期間８２０−１と同じ持続時間を有し得る時間期間８２２−１にわたって最初の４つの列（列０−３）について最終値の３２×４ブロックを生成し得、この時間の間に、行変換処理モジュールは、対応する中間値を生成する。
【０１０６】
[00113]完了に伴い、列生成処理モジュールは、時間期間８２２−２にわたって次の４つの列（列４−７）についての３２×４ブロックを処理し始める。タイムライン８０４によって示されるように、時間期間８２２−２は、時間期間８２２−１の後すぐに開始し得る。第１の３２×４ブロックを処理することと第２の３２×４ブロックを処理することとの間のこの遅延の欠如は、同時動作の行変換処理モジュールと、ピンポンバッファとしての転置バッファ実装の効率とに起因し得る。このプロセスは、３２×３２ブロック全体を表す最終値が出力バス上に出力されるまで継続し得、その時点で、列変換処理モジュールは、別のブロックの中間値を処理し始め得る。
【０１０７】
[00114]幾つかの実施形態では、列変換処理モジュール及び行変換処理モジュールは、時間期間８２０が時間期間８２２とは異なるように、異なるレートで動作する。これらの実施形態では、行変換処理モジュール又は列変換処理モジュールの何れかは、どちらのモジュールがより迅速であるかに依存して利用されない時間を有し得る。
【０１０８】
[00115]上述したように、変換モジュールアーキテクチャは、広範囲の性能、電力及び面積制約に対して容易に適応可能である。以下の表１は、開示される原理に係る、様々な構成を示す。これらのアーキテクチャの全てにおいて、処理エンジンの数は（例えば行変換処理モジュール及び列変換処理モジュールの各々において４つのＰＥに）固定され得、転置バッファのサイズもまた（例えば２×８×４に）固定され得る。しかしながら、他の実施形態では、転置バッファのサイズ及び／又はＰＥの数は変動し得る。
【０１０９】
【表１】
2017537491.tif 000003
【０１１０】
[00116]表１に示される値は、２８ｎｍの技術ノードを使用して４００ＭＨｚで動作するハードウェア設計に関して測定又は他の方法で決定されたものである。技術ノード及び動作周波数は単に例であり、他の技術ノード及び／又は動作周波数が使用され得る。
【０１１１】
[00117]表１に示される構成は、広範囲の性能要件を表す。例えば、構成１は、例えば、超高密度（ＵＨＤ）解像度（３８４０×２１６０画素以上）を有するビデオを符号化及び／又は復号するように設計された高性能コード化デバイスについて選択され得る。構成２及び３は、中間レベルのデバイス（例えば１０８０ｐ）向けであり得、構成４は、低性能デバイス（例えば７２０ｐ）向けであり得る。
【０１１２】
[00118]これらの実施形態の各々では、所与のブロック（例えば１６×１６ＴＵ）に許可されている時間量は変動し得る。より低い性能が必要とされるとき、サイクルカウントバジェットは減少され得る。それに応じて、アーキテクチャは、入力バッファの読取帯域幅Ｋ及び各ＰＥの乗算器の数を低減することでスケーリングし得る。この低減が実行されると、関連するダイ面積は低減され得る。スケーラビリティは、異なる性能要件のためにアーキテクチャを再設計する要件を低減又は除去し得る。従って、時間及びコストの両方が、開示された原理に係るスケーラブルなアーキテクチャを通して節約され得る。
【０１１３】
[00119]開示された原理に係る様々な実施形態が上述したが、これらが限定ではなく例としてのみ提示されていることは理解されるべきである。故に、本開示の幅及び範囲は、上述した例示的な実施形態の何れによっても制限されるべきではなく、本開示に由来する請求項及びそれらの等価物に従ってのみ定義されるべきである。更に、上の利点及び特徴は、説明された実施形態で提供されるが、そのような由来の請求項の適用を、上記利点のうちの何れか又は全てを達成するプロセス及び構造に制限しないものとする。
【０１１４】
[00120]本開示は主に二次元変換について説明しているが、本明細書で説明された原理は、ＨＥＶＣへの三次元拡張において使用されるもののような、より高次の変換に対して等しく適用可能であり得る。しかしながら、多次元のケースでは、後続の各段にバッファを提供するために追加の転置バッファが必要であり得る。
【０１１５】
[00121]本開示で使用された様々な用語は、現在の技術分野内で特別な意味を有する。特定の用語は、その用語が使用されるコンテキストに依存して「専門用語」として解釈されるべきである。「〜に接続された」、「〜と通信状態にある」、「〜に関連付けられた」又は他の同様の用語は一般に、通信及び接続が被参照要素間でダイレクトである場合又はこれらの被参照要素間で１つ又は複数の中間物を介する場合の両方の状況を含むように広く解釈されるべきである。これらの用語及び他の用語は、本開示でそれらが使用されるコンテキストを踏まえて、および、当業者が開示されたコンテキストにおけるそれらの用語を理解するように、解釈されるべきである。上の定義は、開示されたコンテキストに基づいてこれらの用語に与えられ得る他の意味を除くものではない。
【０１１６】
[00122]「その時点で」、「等価的な」、「〜中」、「完全の」、「同一の」、等の比較、測定及びタイミングの用語は、「略その時点で」、「略等価的な」、「略〜中」、「略完全の」、「略同一の」、等を意味すると理解されるべきであり、ここで、「略」は、そのような比較、測定及びタイミングが、暗示的又は明示的に示された所望の結果を達成するのに実施可能であることを意味する。
【０１１７】
[00123]「ブロック」という用語が使用される場合、これは、ＨＥＶＣのコンテキストではコード化単位（ＣＵ）、予測単位（ＰＵ）又は変換単位（ＴＵ）の何れかを、他のコード化規格のコンテキストでは同様のデータ構造（例えばＨ．２６４／ＡＶＣにおけるマクロブロック及びそれのサブブロック）を指し得る。
【０１１８】
[00124]次元（例えば２×８×４）が与えられている場合、これらの単位は、コンテキストに依存して、画素値、中間値、変換係数又は任意の他のデータ単位を指し得る。更に、これらの次元は、情報の概念的な分類を反映し得、これは、例えば、メモリ内に、その通りに物理的に配列される必要はない。
【０１１９】
[00125]追加的に、本明細書におけるセクションの見出しは、米国特許法施行規則第１．７７条に基づく示唆又は編成上の目印（organizational cue）を提供するための他のものとの一貫性のために提供される。これらの見出しは、本開示に由来する任意の請求項において示される主題を制限又は特徴付けるものではない。具体的には且つ例として、見出しが「技術分野」を指していても、そのような請求項は、いわゆる技術分野を説明するために、この見出しに基づいて選ばれた言語によって制限されるべきではない。更に、「背景技術」における技術の説明は、技術が本開示の任意の主題に対する従来技術であると認めるものと解釈されるべきではない。何れもが、本願の請求項において示される主題の特徴付けとして考慮されるべき「要約」ではない。更に、単数形の「発明」への本開示における任意の参照は、本開示に一点の新規性しか存在しないことを主張するために使用されるべきではない。本開示からの複数の請求項の制限に従って複数の発明が示され得、それに応じて、そのような請求項は、それによって保護される発明とそれらの等価物とを定義する。全ての事例において、そのような請求項の範囲は、本開示を踏まえて真価によって考慮されるものとし、本明細書に示された見出しによって制約されるべきではない。
【図１】
2017537491.tif 000004
【図２】
2017537491.tif 000005
【図３】
2017537491.tif 000006
【図４】
2017537491.tif 000007
【図５】
2017537491.tif 000008
【図６】
2017537491.tif 000009
【図７】
2017537491.tif 000010
【図８】
2017537491.tif 000011
【手続補正書】
【提出日】平成29年6月9日(2017.6.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力値を備える入力ブロックに画像変換を適用するためのプロセッサであって、
前記入力ブロック内の入力値の第１のセットと、前記入力ブロック内の入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、プロセッサ。
【請求項２】
前記転置バッファはピンポンバッファであり、前記第２の変換段が前記転置バッファから読み取っている間に、前記第１の変換段が前記転置バッファに書き込むように動作可能である、請求項１に記載のプロセッサ。
【請求項３】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２に記載のプロセッサ。
【請求項４】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１に記載のプロセッサ。
【請求項５】
前記行変換処理モジュールは、前記列変換処理モジュールが、前記中間値の第１のセットに対して列変換を実行し終える前に、前記入力値の第２のセットに関連付けられた前記入力ブロックの全ての行を処理し始めるように動作可能であり、請求項４に記載のプロセッサ。
【請求項６】
前記第１の変換段及び前記第２の変換段は、離散コサイン変換（ＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項７】
前記第１の変換段及び前記第２の変換段は、逆離散コサイン変換（ＩＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項８】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１に記載のプロセッサ。
【請求項９】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１に記載のプロセッサ。
【請求項１０】
入力値を備える入力ブロックに画像変換を適用する方法であって、
入力バッファが、前記入力ブロック内の入力値の第１のセットと、前記入力ブロック内の入力値の第２のセットとを格納することと、
第１の変換段が、前記入力値の第１のセットを受けることと、
前記第１の変換段が、反復技法を使用して、前記入力値の第１のセットを中間値の第１のセットへと変換することと、
転置バッファが、前記中間値の第１のセットを受けることと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
第２の変換段が、前記中間値の第１のセットを受けることと、
前記第２の変換段が、反復技法を使用して、前記中間値の第１のセットのうちの少なくとも幾つかを変換することと、
前記第１の変換段が、前記入力値の第２のセットを受けることと、
前記第１の変換段が、前記中間値の第１のセットの全てが前記第２の変換段によって変換される前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換することと
を備える、方法。
【請求項１１】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１０に記載の方法。
【請求項１２】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１１に記載の方法。
【請求項１３】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１０に記載の方法。
【請求項１４】
前記列変換処理モジュールが、前記中間値の第１のセットに対して列変換を実行し終える前に、前記行変換処理モジュールが、前記入力値の第２のセットのうちの少なくとも幾つかに対して行変換を実行すること
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１０に記載の方法。
【請求項１６】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１０に記載の方法。
【請求項１７】
ビデオデータストリームを符号化するためのビデオエンコーダであって、
入力値を備える入力ブロックに画像変換を適用するための変換モジュールと、前記変換モジュールは、
前記入力ブロック内の入力値の第１のセットと、前記入力ブロック内の入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、
前記出力値の第１のセット及び前記出力値の第２のセットを量子化値へと量子化するように動作可能である量子化モジュールと、
前記ビデオデータストリーム上で供給される符号化値へと前記量子化値をエントロピー符号化するように動作可能であるエントロピー符号化モジュールと
を備えるビデオエンコーダ。
【請求項１８】
前記ビデオデータストリームは、ビデオデコーダ、ファイルサーバ及び記憶媒体のうちの少なくとも１つに送られる、請求項１７に記載のビデオエンコーダ。
【請求項１９】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１７に記載のビデオエンコーダ。
【請求項２０】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１９に記載のビデオエンコーダ。
【請求項２１】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１７に記載のビデオエンコーダ。
【請求項２２】
前記行変換処理モジュールは、前記列変換処理モジュールが、前記中間値の第１のセットに対して列変換を実行し終える前に、前記入力値の第２のセットに関連付けられた前記入力ブロックの全ての行を処理し始めるように動作可能である、請求項２１に記載のビデオエンコーダ。
【請求項２３】
前記変換モジュールは、離散コサイン変換（ＤＣＴ）を実現する、請求項１７に記載のビデオエンコーダ。
【請求項２４】
ビデオデータストリームを復号するためのビデオデコーダであって、
前記ビデオデータストリームから受けた値を復号値へとエントロピー復号するように動作可能であるエントロピー復号モジュールと、
前記復号値を逆量子化するように動作可能である逆量子化モジュールと、これは、後続の段のための入力値を備える入力ブロックの形成を可能にする、
前記入力値を備える前記入力ブロックに画像変換を適用するための逆変換モジュールと
を備え、ここで、前記逆変換モジュールは、
前記入力ブロック内の入力値の第１のセットと、前記入力ブロック内の入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能である転置バッファと、ここで、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、ビデオデコーダ。
【請求項２５】
前記出力値は、再構築ブロックを形成ために、動き補償モジュール又はイントラ予測モジュールからの出力に足される残差ブロックを形成する、請求項２４に記載のビデオデコーダ。
【請求項２６】
前記再構築ブロックは、参照フレームの一部として参照フレームバッファに格納される、請求項２５に記載のビデオデコーダ。
【請求項２７】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項２４に記載のビデオデコーダ。
【請求項２８】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２７に記載のビデオデコーダ。
【請求項２９】
前記逆変換モジュールは、逆離散コサイン変換（ＩＤＣＴ）を実現する、請求項２４に記載のビデオデコーダ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１９
【補正方法】変更
【補正の内容】
【０１１９】
[00125]追加的に、本明細書におけるセクションの見出しは、米国特許法施行規則第１．７７条に基づく示唆又は編成上の目印（organizational cue）を提供するための他のものとの一貫性のために提供される。これらの見出しは、本開示に由来する任意の請求項において示される主題を制限又は特徴付けるものではない。具体的には且つ例として、見出しが「技術分野」を指していても、そのような請求項は、いわゆる技術分野を説明するために、この見出しに基づいて選ばれた言語によって制限されるべきではない。更に、「背景技術」における技術の説明は、技術が本開示の任意の主題に対する従来技術であると認めるものと解釈されるべきではない。何れもが、本願の請求項において示される主題の特徴付けとして考慮されるべき「要約」ではない。更に、単数形の「発明」への本開示における任意の参照は、本開示に一点の新規性しか存在しないことを主張するために使用されるべきではない。本開示からの複数の請求項の制限に従って複数の発明が示され得、それに応じて、そのような請求項は、それによって保護される発明とそれらの等価物とを定義する。全ての事例において、そのような請求項の範囲は、本開示を踏まえて真価によって考慮されるものとし、本明細書に示された見出しによって制約されるべきではない。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
入力値を備える入力ブロックに画像変換を適用するためのプロセッサであって、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、プロセッサ。
［Ｃ２］
前記転置バッファはピンポンバッファであり、前記第２の変換段が前記転置バッファから読み取っている間に、前記第１の変換段が前記転置バッファに書き込むように動作可能である、Ｃ１に記載のプロセッサ。
［Ｃ３］
前記転置バッファは、２×８×４中間値のサイズを有する、Ｃ２に記載のプロセッサ。
［Ｃ４］
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、Ｃ１に記載のプロセッサ。
［Ｃ５］
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック中の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能であり、Ｃ４に記載のプロセッサ。
［Ｃ６］
前記第１の変換段及び前記第２の変換段は、離散コサイン変換（ＤＣＴ）を少なくとも部分的に実現する、Ｃ１に記載のプロセッサ。
［Ｃ７］
前記第１の変換段及び前記第２の変換段は、逆離散コサイン変換（ＩＤＣＴ）を少なくとも部分的に実現する、Ｃ１に記載のプロセッサ。
［Ｃ８］
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、Ｃ１に記載のプロセッサ。
［Ｃ９］
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、Ｃ１に記載のプロセッサ。
［Ｃ１０］
入力値を備える入力ブロックに画像変換を適用する方法であって、
入力バッファが、前記入力ブロックの前記入力値を格納することと、
第１の変換段が、前記入力値を受けることと、
前記第１の変換段が、反復技法を使用して前記入力値を中間値へと変換することと、
転置バッファが、前記中間値を受けることと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
第２の変換段が、前記中間値を受けることと、
前記第２の変換段が、反復技法を使用して、前記中間値を出力値へと変換することと
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、方法。
［Ｃ１１］
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、Ｃ１０に記載の方法。
［Ｃ１２］
前記転置バッファは、２×８×４中間値のサイズを有する、Ｃ１１に記載の方法。
［Ｃ１３］
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、Ｃ１０に記載の方法。
［Ｃ１４］
前記行変換処理モジュールが前記入力ブロック中の前記入力値の全ての行を変換し終える前に、前記列変換処理モジュールが、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行すること
を更に備える、Ｃ１３に記載の方法。
［Ｃ１５］
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、Ｃ１０に記載の方法。
［Ｃ１６］
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、Ｃ１０に記載の方法。
［Ｃ１７］
ビデオデータストリームを符号化するためのビデオエンコーダであって、
入力値を備える入力ブロックに画像変換を適用するための変換モジュールと、前記変換モジュールは、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備える、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、
前記出力値を量子化値へと量子化するように動作可能である量子化モジュールと、
前記ビデオデータストリーム上で出力される符号化値へと前記量子化値をエントロピー符号化するように動作可能であるエントロピー符号化モジュールと
を備えるビデオエンコーダ。
［Ｃ１８］
前記ビデオデータストリームは、ビデオデコーダ、ファイルサーバ及び記憶媒体のうちの少なくとも１つに送られる、Ｃ１７に記載のビデオエンコーダ。
［Ｃ１９］
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、Ｃ１７に記載のビデオエンコーダ。
［Ｃ２０］
前記転置バッファは、２×８×４中間値のサイズを有する、Ｃ１９に記載のビデオエンコーダ。
［Ｃ２１］
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、Ｃ１７に記載のビデオエンコーダ。
［Ｃ２２］
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック中の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能である、Ｃ２１に記載のビデオエンコーダ。
［Ｃ２３］
前記変換モジュールは、離散コサイン変換（ＤＣＴ）を実現する、Ｃ１７に記載のビデオエンコーダ。
［Ｃ２４］
ビデオデータストリームを復号するためのビデオデコーダであって、
前記ビデオデータストリームから受けた値を復号値へとエントロピー復号するように動作可能であるエントロピー復号モジュールと、
前記復号値を逆量子化するように動作可能である逆量子化モジュールと、これは、後続の段のための入力値を備える入力ブロックの形成を可能にする、
前記入力値を備える前記入力ブロックに画像変換を適用するための逆変換モジュールと
を備え、ここで、前記逆変換モジュールは、
前記入力値を受けるように動作可能であり、前記入力値を前記入力ブロックに関連付けられた中間値へと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、ここで、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値を出力値へと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能である、ビデオデコーダ。
［Ｃ２５］
前記出力値は、再構築ブロックを形成ために、動き補償モジュール又はイントラ予測モジュールからの出力に足される残差ブロックを形成する、Ｃ２４に記載のビデオデコーダ。
［Ｃ２６］
前記再構築ブロックは、参照フレームの一部として参照フレームバッファに格納される、Ｃ２５に記載のビデオデコーダ。
［Ｃ２７］
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、Ｃ２４に記載のビデオデコーダ。
［Ｃ２８］
前記転置バッファは、２×８×４中間値のサイズを有する、Ｃ２７に記載のビデオデコーダ。
［Ｃ２９］
前記逆変換モジュールは、逆離散コサイン変換（ＩＤＣＴ）を実現する、Ｃ２４に記載のビデオデコーダ。
【手続補正書】
【提出日】平成29年6月12日(2017.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力値を備える入力ブロックに画像変換を適用するためのプロセッサであって、
入力値の第１のセットと、入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを前記入力ブロックに関連付けられた中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、プロセッサ。
【請求項２】
前記転置バッファはピンポンバッファであり、前記第２の変換段が前記転置バッファから読み取っている間に、前記第１の変換段が前記転置バッファに書き込むように動作可能である、請求項１に記載のプロセッサ。
【請求項３】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２に記載のプロセッサ。
【請求項４】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１に記載のプロセッサ。
【請求項５】
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック内の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能であり、請求項４に記載のプロセッサ。
【請求項６】
前記第１の変換段及び前記第２の変換段は、離散コサイン変換（ＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項７】
前記第１の変換段及び前記第２の変換段は、逆離散コサイン変換（ＩＤＣＴ）を少なくとも部分的に実現する、請求項１に記載のプロセッサ。
【請求項８】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１に記載のプロセッサ。
【請求項９】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１に記載のプロセッサ。
【請求項１０】
入力値を備える入力ブロックに画像変換を適用する方法であって、
入力バッファが、前記入力ブロックの前記入力値を格納することと、
第１の変換段が、前記入力値を受けることと、
前記第１の変換段が、反復技法を使用して、入力値の第１のセットを中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと変換することと、
転置バッファが、前記中間値を受けることと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
第２の変換段が、前記中間値を受けることと、
前記第２の変換段が、反復技法を使用して、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと変換することと、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、
を備える、方法。
【請求項１１】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１０に記載の方法。
【請求項１２】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１１に記載の方法。
【請求項１３】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１０に記載の方法。
【請求項１４】
前記行変換処理モジュールが、前記入力ブロック内の前記入力値の全ての行を変換し終える前に、前記列変換処理モジュールが、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行すること
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記入力ブロックは、残差ブロックを備え、前記入力値の各々は、残差画素値を備える、請求項１０に記載の方法。
【請求項１６】
前記入力ブロックは、変換ブロックを備え、前記入力値の各々は、変換係数を備える、請求項１０に記載の方法。
【請求項１７】
ビデオデータストリームを符号化するためのビデオエンコーダであって、
入力値を備える入力ブロックに画像変換を適用するための変換モジュールと、前記変換モジュールは、
入力値の第１のセットと、入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを前記入力ブロックに関連付けられた中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能である転置バッファと、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値を受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、
前記出力値を量子化値へと量子化するように動作可能である量子化モジュールと、
前記ビデオデータストリーム上で出力される符号化値へと前記量子化値をエントロピー符号化するように動作可能であるエントロピー符号化モジュールと
を備えるビデオエンコーダ。
【請求項１８】
前記ビデオデータストリームは、ビデオデコーダ、ファイルサーバ及び記憶媒体のうちの少なくとも１つに送られる、請求項１７に記載のビデオエンコーダ。
【請求項１９】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項１７に記載のビデオエンコーダ。
【請求項２０】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項１９に記載のビデオエンコーダ。
【請求項２１】
前記第１の変換段は、行変換処理モジュールであり、前記第２の変換段は、列変換処理モジュールである、請求項１７に記載のビデオエンコーダ。
【請求項２２】
前記列変換処理モジュールは、前記行変換処理モジュールが、前記入力ブロック内の前記入力値の全ての行を処理し終える前に、前記入力ブロックに関連付けられた前記中間値に対して列変換を実行し始めるように動作可能である、請求項２１に記載のビデオエンコーダ。
【請求項２３】
前記変換モジュールは、離散コサイン変換（ＤＣＴ）を実現する、請求項１７に記載のビデオエンコーダ。
【請求項２４】
ビデオデータストリームを復号するためのビデオデコーダであって、
前記ビデオデータストリームから受けた値を復号値へとエントロピー復号するように動作可能であるエントロピー復号モジュールと、
前記復号値を逆量子化するように動作可能である逆量子化モジュールと、これは、後続の段のための入力値を備える入力ブロックの形成を可能にする、
前記入力値を備える前記入力ブロックに画像変換を適用するための逆変換モジュールと
を備え、ここで、前記逆変換モジュールは、
入力値の第１のセットと、入力値の第２のセットとを受けるように動作可能であり、前記入力値の第１のセットを前記入力ブロックに関連付けられた中間値の第１のセットへと、前記入力値の第２のセットを中間値の第２のセットへと反復的に変換するように更に動作可能である第１の変換段と、
前記中間値を受けるように動作可能である転置バッファと、ここで、前記転置バッファは、前記入力ブロックのサイズよりも小さいサイズを有する、
前記中間値の第１のセットと前記中間値の第２のセットとを受けるように動作可能であり、前記中間値の第１のセットを出力値の第１のセットへと、中間値の第２のセットを出力値の第２のセットへと反復的に変換するように更に動作可能である第２の変換段と
を備え、
ここにおいて、前記第２の変換段は、前記第１の変換段が、前記入力ブロックの前記入力値の全てを変換し終える前に、前記入力ブロックに関連付けられた前記中間値のうちの少なくとも幾つかを変換し始めるように動作可能であり、前記第１の変換段は、前記第２の変換段が、前記中間値の第１のセットの全てを変換し終える前に、前記入力値の第２のセットのうちの少なくとも幾つかを変換し始めるように動作可能である、ビデオデコーダ。
【請求項２５】
前記出力値は、再構築ブロックを形成ために、動き補償モジュール又はイントラ予測モジュールからの出力に足される残差ブロックを形成する、請求項２４に記載のビデオデコーダ。
【請求項２６】
前記再構築ブロックは、参照フレームの一部として参照フレームバッファに格納される、請求項２５に記載のビデオデコーダ。
【請求項２７】
前記転置バッファはピンポンバッファであり、前記第１の変換段は、前記第２の変換段が前記転置バッファから読み取っている間に、前記転置バッファに書き込むように動作可能である、請求項２４に記載のビデオデコーダ。
【請求項２８】
前記転置バッファは、２×８×４中間値のサイズを有する、請求項２７に記載のビデオデコーダ。
【請求項２９】
前記逆変換モジュールは、逆離散コサイン変換（ＩＤＣＴ）を実現する、請求項２４に記載のビデオデコーダ。
【国際調査報告】
2017537491.tif 000012
2017537491.tif 000013
2017537491.tif 000014