本出願は、いずれもその内容全体が参照により本明細書に組み込まれる、2011年3月10日に出願された米国仮特許出願第61/451,581号、および2011年11月4日に出願された米国仮特許出願第61/555,986号の優先権を主張する。
本開示は、ビデオコーディングに関し、より詳細には、ビデオコーディングにおける変換の使用に関する。
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4,Part10,Advanced Video Coding(AVC)、現在開発中の高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格によって定義された規格、およびそのような規格の拡張に記載されているような、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)が、ツリーブロック、コーディングユニット(CU)および/またはコーディングノードと呼ばれることもあるビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライス中のビデオブロックは、同じピクチャ中の近隣ブロックにおける参照サンプルに関する空間的予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス中のビデオブロックは、同じピクチャ中の近隣ブロックにおける参照サンプルに関する空間的予測、または他の参照ピクチャ中の参照サンプルに関する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックをポイントする動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差変換係数を生じ得、残差変換係数は、次いで量子化され得る。最初に2次元アレイに配置された量子化変換係数は、変換係数の1次元ベクトルを生成するために走査されることができ、エントロピーコーディングが、一層の圧縮を達成するために適用され得る。
本開示の技法は、概して、ビデオコーディングにおいて変換を適用することに関する。たとえば、本開示の技法は、ビデオデータのブロックに関連するルーマ情報とクロマ情報とに別様にサイズ決定された変換を適用することを含む。すなわち、ビデオコーディング中に、ビデオコーダは、階層4分木区分構造に従って、ビデオデータのブロックを分割し得る。さらに、ブロックごとに、ビデオコーダは、符号化されていないピクチャのピクセル間のピクセル差分に対応する残差値と予測ピクセル値とを計算し得る。ビデオコーダは、次いで、残差変換係数を生成するために、残差ビデオデータに変換(たとえば、離散コサイン変換(DCT:discrete cosine transform)、整数変換、ウェーブレット変換、または概念的に同様の変換)を適用し得る。
本開示の技法は、クロマ情報とは異なる4分木深度においてルーマ情報に変換を適用することを含む。たとえば、本開示の態様は、ルーマ情報とクロマ情報とに変換が適用される方法を分離することに関する。したがって、いくつかの事例では、ある特定の変換は、(たとえば、ビデオデータのブロックが分割された回数を表す)第1の4分木深度においてルーマ情報に適用され得るが、別の変換は、ルーマ情報とは異なる第2の4分木深度においてクロマ情報に適用され得る。他の例では、変換は、同じ4分木深度において適用され得る。
一例では、本開示の態様は、ビデオデータをコーディングする方法に関する。該方法は、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定することであって、RQTは、ルーマ情報とクロマ情報とに変換が適用される方法を表す、決定することと、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定することであって、第2のRQT深度が第1のRQT深度とは異なる、決定することと、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングすることとを含む。
別の例では、本開示の態様は、ビデオデータをコーディングするための装置に関する。該装置は、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定することであって、RQTは、ルーマ情報とクロマ情報とに変換が適用される方法を表す、決定することと、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定することであって、第2のRQT深度が第1のRQT深度とは異なる、決定することと、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングすることとを行うように構成された1つまたは複数のプロセッサを含む。
別の例では、本開示の態様は、ビデオデータをコーディングするための装置に関する。本装置は、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定するための手段であって、RQTは、ルーマ情報とクロマ情報とに変換が適用される方法を表す、決定するための手段と、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定するための手段であって、第2のRQT深度が第1のRQT深度とは異なる、決定するための手段と、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングするための手段とを含む。
別の例では、本開示の態様は、実行されたとき、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定することであって、RQTは、ルーマ情報とクロマ情報とに変換が適用される方法を表す、決定することと、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定することであって、第2のRQT深度が第1のRQT深度とは異なる、決定することと、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングすることとを、ビデオデータをコーディングするためのデバイスの1つまたは複数のプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体を備えるコンピュータプログラム製品に関する。
本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
本開示で説明する技法を実装し得る例示的なビデオエンコーダを示すブロック図。
本開示で説明する技法を実装し得る例示的なビデオデコーダを示すブロック図。
ビデオデータのブロックに関連するルーマサンプルとクロマサンプルとを含むビデオデータの例示的なブロックを示す図。
本開示の態様による、例示的な階層4分木構造を示す図。
図5Aに示した階層4分木構造による、変換ユニットの例示的な分割を示す図。
本開示の態様による、残差ルーマおよびクロマ情報に変換を適用する例示的な方法を示す流れ図。
本開示の態様による、変換情報を符号化する例示的な方法を示す流れ図。
本開示の態様による、変換情報を復号する例示的な方法を示す流れ図。
詳細な説明
JCT−VCは、HEVC規格の開発に取り組んでいる。HEVCの規格化の取り組みは、HEVCテストモデル(HM:HEVC Test Model)と呼ばれるビデオコーディングデバイスの進化モデルに基づく。概して、提案されたHEVC規格によれば、ビデオフレームまたはピクチャは、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され得る。たとえば、ツリーブロックは、概して、3つのサンプルアレイを有するピクチャのクロマサンプル(Cb、Cr)の2つの対応するブロックとともに、ルーマサンプル(Y)のN×Nブロックを含む。いくつかの例では、クロマ情報は、ルーマ情報に関してサブサンプリングされ得る。すなわち、ビデオデータの所与のブロックについて、ルーマ成分は、クロマ成分の2倍のレートでサンプリングされ得る。
ビットストリーム内のシンタックスデータは、ピクセルの数に関して最大のコーディングユニットであるLCUのサイズを定義し得る。スライスは、いくつかの連続的なツリーブロックをコーディング順に含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU:coding unit)に分割され得る。たとえば、4分木のルートノード(たとえば、LCU)としてのツリーブロックは、4つの子ノードに分割され得、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割され得る。最終的な、分割されていない子ノードは、4分木のリーフノードとして、コーディングノード、すなわち、コード化ビデオブロックを備える。コード化ビットストリームに関連するシンタックスデータは、(たとえば、最大CU深度と呼ばれることがある)ツリーブロックが分割され得る最大回数を定義し得、コーディングノードの最小サイズをも定義し得る。
4分木データ構造の各ノードは、対応するCUについてのシンタックスデータを与え得る。たとえば、4分木中のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUについてのシンタックス要素は、再帰的に定義され得、そのCUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUをリーフCUとも呼ぶことにする。たとえば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUをリーフCUとも呼ぶことにする。
CUは、CUがサイズの差異を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最終的な、分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、コーディングノードの最小サイズをも定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示では、HEVCのコンテキストではCU、PU、またはTUのいずれか、または他の規格のコンテキストでは同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれらのサブブロック)を指すために、「ブロック」という用語を使用する。
CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、正方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64ピクセルまたはそれ以上のツリーブロックのサイズまで及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかの間で異なり得る。PUは、非正方形に区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、正方形または非正方形(たとえば、矩形)であり得る。
HEVC規格によって、CUごとに異なり得るTUに従う変換が可能になる。TUは、一般に、区分されたLCUに対して定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTは、CUのルーマ成分とクロマ成分の両方に適用され得る。したがって、概して、RQTは、CUをTUに区分することの再帰的表現である。TUは、ルーマサンプルとクロマサンプルとに変換が適用される方法を定義する。すなわち、たとえば、TUに関連するピクセル差分値は変換されて、変換係数を生成し得、それは量子化され得る。
リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間領域を表し、そのPUの参照サンプルを取り出すためのデータを含み得る。さらに、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る、PUについてのデータが残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUの1つまたは複数の動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルがポイントする参照ピクチャ、および/あるいは動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらに、4つのサブTUに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれ得る。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは、同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部分と元のブロックとの間の差として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUはPUよりも大きいことも小さいこともあり得る。イントラコーディングの場合、PUは、同じCUの対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
その上、リーフCUのTUも、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは、概して、リーフCUに対応し、一方、CU4分木のルートノードは、概して、ツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示では、特に明記しない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
コーディング効率は、所与のTUに関連する残差値の大きい変動を回避することによって改善され得る。すなわち、全体的に一様な残差値に変換を適用することにより、比較的少数の変換係数にエネルギーを集中することになり、それにより、(たとえば、図2に関して以下でより詳細に説明するように)エントロピーコーディング効率が改善され得る。所与のフレーム(またはスライス)のルーマサンプルは、一般に、クロマサンプルよりも幅広いおよび/または劇的な変動を受け得る。一方、クロマサンプルは、所与のブロックについて比較的一様であり得る。したがって、大きいルーマ残差変動を回避するために比較的小さい変換サイズが必要とされ得るが、コーディング効率に影響を及ぼすことなしに、クロマ残差について、より大きい変換が使用され得る。
一般に、ビデオコーダは、同じRQT深度においてルーマサンプルとクロマサンプルの両方に変換を適用する。しかしながら、ルーマ情報は、クロマ情報よりも高いレートでサンプリングされ得るので、ルーマサンプルとクロマサンプルとに適用される変換のサイズは異なり得る。説明のための一例では、32×32TUは、RQT構造に従って2回分割され得る。この例では、(ルーマ情報がクロマ情報の2倍のレートでサンプリングされると仮定すると)8×8変換サイズがリーフTUのルーマサンプルに適用され得、一方、4×4変換サイズがリーフTUのクロマサンプルに適用され得る。
本開示の技法は、ブロック残差ビデオデータのルーマサンプルとクロマサンプルとに異なるサイズの変換を適用することに関する。より詳細には、本開示の技法は、TUの(たとえば、RQT構造に従う)異なる深度においてTUに関連するルーマ成分とクロマ成分とに変換を適用することを含む。すなわち、たとえば、TUのリーフノードにおいてTUのルーマサンプルに変換が適用され得、一方、TUのより高い深度においてクロマ成分に変換が適用され得る(ここで、たとえば、「より高い」は、RQT構造においてより浅い位置に関連付けられる)。
説明のための一例では、64×64TU(たとえば、ルーマがクロマの2倍のレートでサンプリングされると仮定すると、64×64残差ルーマサンプルと32×32残差クロマサンプルと)は、RQTに従って3回分割され得る。この例では、TUは、深度3において8×8リーフTUを含む。ビデオコーダは、深度3においてルーマサンプルに(たとえば、リーフTUの8×8ルーマサンプルに)変換を適用し、一方、深度1においてクロマサンプルに(たとえば、16×16クロマサンプルに)変換を適用し得る。
明確にするために、本開示のいくつかの態様は、所与のブロックのルーマサンプルとクロマサンプルとに別様にサイズ決定された変換を適用することだけでなく、RQT構造の異なる深度においてルーマサンプルとクロマサンプルとに変換を適用することにも関する。すなわち、いくつかのビデオコーディングシステムでは、上記のように、クロマ成分よりも高いレートでルーマ成分をサンプリングすることが一般的であり、したがって、概して、(より多数のルーマサンプルゆえに)所与のブロックのクロマサンプルよりもルーマサンプルにより大きい変換が適用されることになる。本開示の態様は、第1の深度においてルーマサンプルに変換が適用され得、一方、ルーマサンプルとは異なる第2の深度においてクロマサンプルに変換が適用され得るように、変換が適用される方法を分離することに関する。
このようにして、ビデオデータの所与のブロックについて、クロマサンプルに、ルーマサンプルよりも相対的に粗いグラニュラリティ(granularity)で変換が適用され得る。このようにして変換を適用することは、コーディング複雑さの低減をもたらし得る。たとえば、本開示の技法によって、より高い特異性(specificity)が必要とされ得るルーマサンプルよりも、より低い特異性が必要とされ得るクロマサンプルのより大きいブロックに変換を適用することが可能になる。
図1は、残差データのブロックのクロマサンプルとは異なるRQT深度においてルーマサンプルに変換を適用するための、本開示で説明する技法を利用し得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき、符号化されたビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンやいわゆる「スマート」パッドもしくはタブレットなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングまたは再生デバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信が可能であり得る。
宛先デバイス14は、リンク16を介して復号されるべき符号化されたビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするために、通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
代替的に、符号化されたデータは、出力インターフェース22からストレージデバイス24に出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイス24からアクセスされ得る。ストレージデバイス24は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散型またはローカルアクセス型データ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス24は、ソースデバイス12によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイス24から記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバには、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブが含まれる。宛先デバイス14は、インターネット接続を含む、任意の標準的データ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス24からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
本開示の技法は、必ずしもワイヤレスアプリケーションまたはセッティングだけに限定されるとは限らない。該技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなど、様々なマルチメディアアプリケーションのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどのアプリケーションをサポートするために、1方向または2方向のビデオ送信をサポートするように構成され得る。
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはコンピュータグラフィックスデータをソースビデオとして生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明する技法は、概して、ビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。
キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して、宛先デバイス14に直接送信され得る。符号化されたビデオデータはまた(または代替的に)、復号および/または再生のために、宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス24上に記憶され得る。
宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を通じて、符号化されたビデオデータを受信する。リンク16を通じて通信される、またはストレージデバイス24に与えられる符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30などのビデオデコーダが使用するためにビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されたか、記憶媒体に記憶されたか、またはファイルサーバに記憶された符号化されたビデオデータとともに含まれ得る。
ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたは宛先デバイス14の外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含むことができ、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、Advanced Video Coding(AVC)とも呼ばれるITU−T H.264規格、またはそのような規格の拡張など、他のプロプライエタリまたは業界標準に従って動作し得る。ただし、本開示の技法は特定のコーディング規格だけに限定されない。ビデオ圧縮規格の他の例には、MPEG−2およびITU−T H.263が含まれる。
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと一体化され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサなどのプロセッサ、デジタル信号プロセッサ(DSP)、専用プロセッサまたは処理回路、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、固定論理回路、個別論理、ソフトウェア、ハードウェア、ファームウェアを含む様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。したがって、ビデオエンコーダ20およびビデオデコーダ30内の様々なユニットは、同様に、様々なそのような構造要素のいずれかまたはそれらの組合せによって実装され得る。本技法が部分的にソフトウェアで実装されるときには、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
本開示では、概して、ビデオエンコーダ20が、ある特定の情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及し得る。ただし、ビデオエンコーダ20は、ある特定のシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、ある特定のシンタックス要素を、ビデオデータの様々な符号化部分のヘッダに記憶することによってデータを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ30によって受信され、復号されるより前に、符号化され、記憶され得る(たとえば、ストレージデバイス24に記憶され得る)。したがって、「シグナリング」という用語は、通信がリアルタイムまたはほぼリアルタイムで行われるか、あるいは、符号化時に媒体にシンタックス要素を記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得るように、ある時間期間にわたって行われるかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
上記のように、JCT−VCは、HEVC規格の開発に取り組んでいる。HEVCの規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの進化モデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の機能を仮定する。本開示では、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用する。特定の場合において、本開示ではまた、コーディングノードとPUとTUとを含むツリーブロック、すなわち、LCUまたはCUを指すために「ビデオブロック」という用語を使用し得る。
ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。グループオブピクチャ(GOP:group of pictures)は、概して、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるピクチャの数を記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
一例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2NまたはN×NのPUサイズでのイントラ予測をサポートし、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」というインジケーションとによって示される。したがって、たとえば「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平方向に区分される2N×2N CUを指す。
本開示では、「N×N」および「NかけるN(N by N)」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、16×16ピクセルまたは16かける16ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、Nは、非負整数値を表す。ブロック中のピクセルは行と列に配置され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックは、N×Mピクセルを備え得、Mは必ずしもNに等しいとは限らない。
CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後、ビデオエンコーダ20は、CUのTUについての残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域においてピクセルデータを備え得、TUは、変換、たとえば、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の残差ビデオデータに対する適用後の、変換領域における係数を備え得る。残差データは、符号化されていない元のピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUについての残差データを含むTUを形成し、次いで、TUを変換して、CUに関する変換係数を生成し得る。
いくつかの例では、TUは、残差4分木(RQT)に従って定義され得る。たとえば、RQTは、ビデオデータのブロックに関連する残差ルーマサンプルと残差クロマサンプルとに変換(たとえば、DCT、整数変換、ウェーブレット変換、または1つまたは複数の他の変換)が適用される方法を表し得る。すなわち、上記のように、CUに対応する残差サンプルは、RQTを使用してより小さいユニットに再分割され得る。概して、RQTは、CUをTUに区分することの再帰的表現である。
ビデオエンコーダ20は、一般に、RQTの同じ深度においてルーマサンプルとクロマサンプルとに変換を適用し得る。たとえば、概して、ビデオエンコーダ20は、相対的に最も低いRQT深度に変換を適用し得、ここで、より低いRQT深度は、より少ない関連する残差データを有するより小さいTU(たとえば、リーフTU)と言い換えられる。しかしながら、いくつかの事例では、ビデオデータの所与のブロックについて、クロマ情報は、ルーマ情報ほど大幅におよび/または劇的に変動しないことがある。むしろ、CUに関連するクロマ情報は、ルーマ情報よりも滑らかであり得る。したがって、できるだけ多くのデータ(「エネルギー」とも呼ばれる)をできるだけ少ない変換係数に圧縮するクロマ変換を達成するために、ルーマ情報と同じRQT深度においてクロマ情報に変換を適用する必要がないことがある。すなわち、(たとえば、より高いRQT深度において)クロマサンプルに相対的に大きい変換を適用することは、依然として、クロマデータを比較的少ない係数へと圧縮し得る。
本開示の態様によれば、ビデオエンコーダ20は、ルーマサンプルとクロマサンプルとに変換が適用される方法を分離し得る。たとえば、ビデオエンコーダ20は、残差ルーマサンプルに変換を適用すべき第1のRQT深度と、残差クロマサンプルに第2の変換を適用すべき第2のRQT深度とを決定し得、第1のRQT深度と第2のRQT深度とは互いに異なり得る。いくつかの事例では、(クロマサンプルに関連する)第2のRQT深度は第1のRQT深度とは異なり得る。ビデオエンコーダ20は、次いで、ルーマ変換係数を生成するために第1のRQT深度において残差ルーマサンプルに第1の変換を適用し、クロマ変換係数を生成するために第2のRQT深度において残差クロマサンプルに第2の変換を適用し得る。
したがって、ビデオエンコーダ20は、ビデオデータの所与のブロックについて、ルーマサンプルよりも相対的に粗いグラニュラリティでクロマサンプルに変換を適用し得る。このようにして、ビデオエンコーダ20は、全体的なコーディング複雑さを低減し得る。たとえば、データの所与のブロックのクロマサンプルに比較的大きい変換が適用され、それによって、複数の、比較的小さい変換をクロマサンプルに適用することに関連する複雑さが低減され得る。
変換係数を生成するために残差データに任意の変換を適用した後、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化して、さらなる圧縮をもたらすプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ここで、nはmよりも大きい。
いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は、適応型走査を実行し得る。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型2値算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間分割エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するために、符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化し得る。現行バージョンのHEVCは、エントロピーコーディングのためにCABACを使用するように設計されている。
CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非ゼロか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、シンボルが送信されるための可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードがより確率の高いシンボルに対応し、一方、より長いコードがより確率の低いシンボルに対応するように構成され得る。このように、VLCを使用すると、たとえば、送信されるべきシンボルごとに等長コードワードを使用する場合よりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられるコンテキストに基づき得る。
ビデオデコーダ30は、ビデオエンコーダ20からコード化されたビデオデータを受信すると、ビデオエンコーダ20に関して説明した符号化パスとは概して反対の復号パスを実行し得る。本開示の態様によれば、たとえば、ビデオデコーダ30は、コード化されたビデオデータを受信し、ビデオデータのブロックに関連する残差ルーマサンプルと残差クロマサンプルとについてのRQTを決定し得る。ビデオデコーダ30はまた、残差ルーマサンプルに逆変換を適用すべき第1のRQT深度と、残差クロマサンプルに第2の逆変換を適用すべき第2のRQT深度とを決定し得る。いくつかの事例では、(クロマサンプルに関連する)第2のRQT深度は第1のRQT深度とは異なり得る。ビデオデコーダ30は、次いで、ルーマ変換係数を生成するために、第1のRQT深度において残差ルーマサンプルに第1の逆変換を適用し、クロマ変換係数を生成するために、第2のRQT深度において残差クロマサンプルに第2の逆変換を適用し得る。
図2は、残差データのブロックのクロマサンプルとは異なるRQT深度においてルーマサンプルに変換を適用するために本開示で説明する技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード(登録商標))は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオデータを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56と、参照ピクチャメモリ64とを含む。モード選択ユニット40は、次に、動き推定ユニット42と、動き補償ユニット44と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2には図示せず)も含まれ得る。望まれる場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタ処理する。デブロッキングフィルタに加えて、追加のループフィルタ(ループ内またはループ後)も使用され得る。そのようなフィルタは、簡潔のために図示していないが、望まれる場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
さらに、区分ユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、LCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUをサブCUに区分することを示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモードのうちの1つ、すなわち、イントラコーディングまたはインターコーディングを選択し得、得られたイントラまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照フレームとして使用するために符号化ブロックを再構成するために加算器62に与える。モード選択ユニット40はまた、エントロピーコーディングユニット56に、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素を与える。
動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することが判明したブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのPUに関する動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、その各々は、参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。現在のビデオブロックのPUに関する動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルがポイントする予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、残差データとも呼ばれるピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42は、ルーマ成分に対する動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のために、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックおよびビデオスライスに関連するシンタックス要素を生成し得る。
イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用すべき適切なイントラ予測モードを選択し得る。
たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビットの数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックにとって最良のレートひずみ値を示すかを決定するために、様々な符号化ブロックに関して、ひずみおよびレートから比を計算し得る。
あるブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット46は、エントロピーコーディングユニット56にブロックのための選択されたイントラ予測モードを示す情報を与え得る。エントロピーコーディングユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信されるビットストリーム中に構成データ(configuration data)を含み得、その構成データは、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに関する符号化コンテキストの定義と、最も可能性の高いイントラ予測モード、イントラ予測モードインデックステーブル、およびコンテキストの各々について使用すべき変更されたイントラ予測モードインデックステーブルのインジケーションとを含み得る。
ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、残差ブロックに、離散コサイン変換(DCT)または概念的に類似の変換などの変換を適用して、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にDCTに類似の他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、残差ブロックに変換を適用して、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
本開示の態様によれば、変換処理ユニット52は、ビデオデータのブロックに関連する残差ルーマサンプルと残差クロマサンプルとに変換(たとえば、DCT、整数変換、ウェーブレット変換、または1つまたは複数の他の変換)が適用される方法を表すRQTを決定し得る。本開示の態様によれば、変換処理ユニット52は、ルーマサンプルとクロマサンプルとに変換が適用される方法を分離し得る。たとえば、変換処理ユニット52はまた、残差ルーマサンプルに変換を適用すべき第1のRQT深度と、残差クロマサンプルに第2の変換を適用すべき第2のRQT深度とを決定し得る。いくつかの事例では、(クロマサンプルに関連する)第2のRQT深度は第1のRQT深度とは異なり得る。変換処理ユニット52は、次いで、ルーマ変換係数を生成するために、第1のRQT深度において残差ルーマサンプルに第1の変換を適用し、クロマ変換係数を生成するために、第2のRQT深度において残差クロマサンプルに第2の変換を適用し得る。
説明のための一例では、32×32ブロックの残差ビデオデータが、(たとえば、4:2:0のサブサンプリング方式で起こるように)32×32ブロックが32×32残差ルーマサンプルと16×16残差クロマサンプルとを含むように、ルーマサンプルに関してサブサンプリングされたクロマサンプルを有すると仮定する。変換処理ユニット52(またはモード選択ユニット40などの別のユニット)は、残差値のブロックに変換を適用すべき方法を決定するためにレートひずみ分析を実行し得る。この例では、変換処理ユニット52が変換の目的で残差値のブロックを2回分割すると考える。すなわち、変換処理ユニット52は、ルーマサンプルの各8×8ブロックに変換を適用する。本開示の態様によれば、(たとえば、同じ深度において)クロマサンプルの対応する4×4ブロックに変換を適用するのではなく、変換処理ユニット52は、クロマサンプルの相対的に大きいブロックに変換を適用し得る。たとえば、変換処理ユニット52は、(たとえば、未分割の)クロマサンプルの16×16ブロックまたはクロマサンプルの8×8ブロックに変換を適用し得る。
変換処理ユニット52は、量子化ユニット54に得られた変換係数を送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
量子化の後、エントロピーコーディングユニット56が量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット56は、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型2値算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間分割エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピーコーディングユニット56によるエントロピーコーディングの後、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信され得るか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
このようにして、ビデオエンコーダ20は、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定することであって、RQTはルーマ情報とクロマ情報とに変換が適用される方法を表す、決定することと、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定することであって、第2のRQT深度が第1のRQT深度とは異なる、決定することと、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングすることとを含む方法を実行し得るビデオエンコーダの一例である。
図3は、残差データのブロックのクロマサンプルとは異なるRQT深度においてルーマサンプルに変換を適用するために本開示で説明する技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測ユニット81と、逆量子化ユニット86と、逆変換ユニット88と、加算器90と、参照ピクチャメモリ92とを含む。予測ユニット81は、動き補償ユニット82と、イントラ予測ユニット84とを含む。
復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数、動きベクトル、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、予測ユニット81に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
たとえば、バックグラウンドとして、ビデオデコーダ30は、ネットワークを通じた送信のためにいわゆる「ネットワークアブストラクションレイヤユニット(network abstraction layer unit)」またはNALユニットへと圧縮された、圧縮ビデオデータを受信し得る。各NALユニットは、NALユニットに記憶されるデータのタイプを識別するヘッダを含み得る。一般にNALユニットに記憶される2つのタイプのデータがある。NALユニットに記憶されるデータの第1のタイプはビデオコーディングレイヤ(VCL:video coding layer)データであり、これは圧縮ビデオデータを含む。NALユニットに記憶されるデータの第2のタイプは非VCLデータと呼ばれ、これは、多数のNALユニットに共通のヘッダデータを定義するパラメータセットなどの追加情報と補足エンハンスメント情報(SEI:supplemental enhancement information)とを含む。たとえば、パラメータセットは、(たとえば、シーケンスパラメータセット(SPS:sequence parameter set)中の)シーケンスレベルヘッダ情報と、(たとえば、ピクチャパラメータセット(PPS)中の)変化頻度の低い(infrequently changing)ピクチャレベルヘッダ情報とを含み得る。パラメータセット中に含まれている、変化頻度の低い情報は、シーケンスまたはピクチャごとに繰り返される必要がなく、それにより、コーディング効率が改善される。さらに、パラメータセットの使用はヘッダ情報の帯域外送信を可能にし、それにより誤り耐性のための冗長送信の必要を回避する。
ビデオスライスがイントラコード化(I)スライスとしてコード化されるときには、予測ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モードと現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコード化されるときには、予測ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ92に記憶された参照ピクチャに基づいてデフォルトの構成技法を使用して、参照フレームリスト、リスト0、およびリスト1を構成し得る。
動き補償ユニット82は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックに関する予測ブロックを生成する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数についての構成情報、スライスのインター符号化ビデオブロックごとの動きベクトル、スライスのインターコード化ビデオブロックごとのインター予測状況、および現在のビデオスライス中のビデオブロックを復号するための他の情報を決定するために、受信したシンタックス要素のうちのいくつかを使用する。
動き補償ユニット82はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して、参照ブロックのサブ整数ピクセルに関する補間値を計算し得る。この場合、動き補償ユニット82は、受信したシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成し得る。
逆量子化ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された、量子化変換係数を、逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。
逆変換ユニット88は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば逆DCT、逆整数変換、または概念的に類似の逆変換プロセスを変換係数に適用する。本開示の態様によれば、逆変換ユニット88は、残差データに変換が適用された方法を決定し得る。すなわち、たとえば、逆変換ユニット88は、受信したビデオデータのブロックに関連する残差ルーマサンプルと残差クロマサンプルとに変換(たとえば、DCT、整数変換、ウェーブレット変換、または1つまたは複数の他の変換)が適用された方法を表すRQTを決定し得る。
本開示の態様によれば、ルーマサンプルとクロマサンプルとに変換が適用される方法は分離され得る。したがって、逆変換ユニット88はまた、残差ルーマサンプルに逆変換を適用すべき第1のRQT深度と、残差クロマサンプルに第2の逆変換を適用すべき第2のRQT深度とを決定し得る。いくつかの事例では、逆変換が適用される(クロマサンプルに関連する)第2のRQT深度は、逆変換が適用される第1のRQT深度とは異なり得る。逆変換ユニット88は、次いで、ルーマ変換係数を生成するために、第1のRQT深度において残差ルーマサンプルに第1の逆変換を適用し、クロマ変換係数を生成するために、第2のRQT深度において残差クロマサンプルに第2の逆変換を適用し得る。
動き補償ユニット82が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。望まれる場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、あるいはビデオ品質を改善するために、(コーディングループ中に、またはコーディングループの後に)他のループフィルタも使用され得る。次いで、所与のフレームまたはピクチャ中の復号されたビデオブロックは、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ92に記憶される。参照ピクチャメモリ92はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で表示するために、復号されたビデオを記憶する。
このようにして、ビデオデコーダ30は、ビデオデータのブロックに関連するルーマ情報に第1の変換を適用すべき第1の残差4分木(RQT)深度を決定することであって、RQTはルーマ情報とクロマ情報とに変換が適用される方法を表す、決定することと、ビデオデータのブロックに関連するクロマ情報に第2の変換を適用すべき第2のRQT深度を決定することであって、第2のRQT深度が第1のRQT深度とは異なる、決定することと、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングすることとを含む方法を実行し得るビデオデコーダの一例である。
図4に、ルーマサンプル106A〜D(ルーマサンプル106)とクロマサンプル108(Cb)および110(Cr)とを含むビデオデータの例示的なブロック100を示す。図4に示す例は、概して、4:2:0のサンプリング方式に従ってサンプリングされたルーマサンプル106とクロマサンプル108、110との公称垂直および水平ロケーションを示している。たとえば、図4に示すように、ルーマサンプル106は、水平方向と垂直方向の両方において、クロマサンプル108、110の2倍のレートでサンプリングされ、クロマサンプル108、110は、同じレートでサンプリングされる。
図4に示す例は、説明のために与えられる1つの可能なサンプリング方式にすぎない。すなわち、他の例では、異なるフォーマットが、ルーマ成分とクロマ成分との間で異なる水平および垂直サンプリングレート比を指定し得る。たとえば、4:2:2のフォーマットをもつビデオデータのブロックの場合、ルーマ成分の幅は、クロマ成分の幅の2倍であり得る。しかしながら、ルーマ成分の高さは、クロマ成分の高さと同じであり得る。4:4:4のフォーマットをもつビデオデータのブロックの場合、ルーマ成分とクロマとは、同じレートでサンプリングされ得る。ルーマアレイおよびクロマアレイに関するシンタックスは、3つの色成分すべてについてのデータが存在するとき、別段に指定されていない限り、ルーマアレイに関するデータが最初のデータであり、その後にCbアレイに関するデータが続き、その後にCrアレイに関するデータが続くように順序付けされ得る。
図4に示す例は、ルーマ成分がクロマ成分よりも高いレートでサンプリングされていることを示している。いくつかの事例では、人間の眼が一般にクロマの変動よりもルーマの変動に感度が高いので、ルーマは、クロマよりも高いレートでサンプリングされ得る。さらに、概して、ルーマサンプルは、クロマサンプルよりも、所与のフレーム内でより幅広い、より劇的な変動を生じ得る。
上記のように、本開示の技法は、ビデオデータのブロックのルーマ成分とクロマ成分とに異なるサイズの変換を適用することを含む。しかしながら、図4の例に示すように、一部のビデオコーディング方式では、ルーマ成分は、クロマ成分よりも高いレートでサンプリングされ得る。そのような場合、概して、(サンプル数がより多いので)図4に示すビデオデータのブロックなどの所与のブロックのクロマサンプルよりもルーマサンプルにより大きな変換が適用される。
したがって、本開示の技法は、ブロックのルーマサンプルとクロマサンプルとに異なるサイズの変換を適用することを含むだけでなく、ルーマ成分とクロマ成分とに変換が適用され得る方法を分離することをも含む。すなわち、変換の目的でビデオデータのブロックが分割される事例では、本開示の技法は、4分木構造の異なる深度においてビデオデータのブロックに関連するルーマ成分とクロマ成分とに変換を適用することを含む。たとえば、現在開発されているHEVC規格に準拠する一例では、TUのリーフノードにおいてTUのルーマ成分に変換が適用され得、一方、TUのより高い深度においてクロマ成分に変換が適用され得る。
図5Aおよび図5Bは、それぞれ、本開示の技法に一致する、例示的な残差4分木(RQT)130(図5A)と、対応する変換ユニット150(図3B)とを示す概念図である。RQT130は、階層的に構成されたノードを含む。各ノードは、子どものないリーフノードであり得るか、または4つの子ノードを有し、したがって「4分木」という名前があり得る。図5Aの例では、残差4分木130はルートノード132を含む。ルートノード132は、リーフノード134Aおよび134B(リーフノード134)とノード136Aおよび136B(ノード136)とを含む、4つの子ノードを有する。ノード136はリーフノードではないので、ノード136は、それぞれ4つの子ノードを含む。すなわち、図5Aに示す例では、ノード136Aは4つの子リーフノード138A〜138Dを有し、一方、ノード136Bは3つのリーフノード140A〜140C(リーフノード140)とノード142とを有する。さらに、ノード142は4つのリーフノード144A〜144D(リーフノード144)を有する。
RQT130は、この例ではTU150など、対応する変換ユニット(TU)の特性を記述するデータを含み得る。たとえば、RQT130は、その構造により、サブTUへの図5BのTU150の分割を記述し得る。TU150が2N×2Nのサイズを有すると仮定する。この例では、TU150は、サイズN×Nの2つのサブTU152Aおよび152B(サブTU152)をもつ、4つのサブTUを有する。TU150の残りの2つのサブTUは、さらに、より小さいサブCUに分割される。すなわち、図5Bに示す例では、TU150のサブTUのうちの一方は、サイズN/2×N/2のサブTU154A〜154Dに分割されるが、TU150の他方のサブTUは、サイズN/2×N/2のサブTU156A〜156C(サブTU156)と、サイズN/4×N/4のサブTU158A〜1588D(サブTU158)として識別される、さらに分割されたサブTUとに分割される。
図5Aおよび図5Bに示す例では、RQT130の構造はTU150の分割に対応する。すなわち、ルートノード132はTU150に対応し、リーフノード134はサブTU152に対応する。さらに、リーフノード138(ノード136Aの子ノードであり、これは一般に、ノード136Aがポインタ参照リーフノード138を含むことを意味する)はサブTU154に対応し、(たとえば、ノード136Bに属する)リーフノード140はサブTU156に対応し、(たとえば、ノード142に属する)リーフノード144はサブTU158に対応する。
RQT130のノードについてのデータは、ノードに対応するTUが分割されるかどうかを記述し得る。TUが分割される場合、RQT130中に4つの追加のノードが存在し得る。いくつかの例では、4分木のノードは以下の擬似コードによって表されるプロセスによって定義され得る。
split_flag値は、現在のノードに対応するTUが分割されるかどうかを表す1ビット値であり得る。TUが分割されない場合、split_flag値は「0」であり得るが、TUが分割される場合、split_flag値は「1」であり得る。残差4分木130の例に関して、分割フラグ値のアレイは10011000001000000であり得、そのアレイは、ルートノード132から最も小さいリーフノード(144A〜144D)までの分割構造を定義する。
ビデオエンコーダ20および/またはビデオデコーダ30などのビデオコーダは、一般に、同じRQT深度においてルーマサンプルとクロマサンプルの両方に変換を適用する。RQT深度は、概して、TUが分割された回数に関係する(たとえば、図5Bに示すように、RQT深度1は、TUの1の分割に対応する)。いくつかの例では、ビデオコーダは、(図5Bに示すリーフTU152、154、156、および158に対応する)図5Aに示したリーフノード134、138、140、および144などのリーフノードのルーマサンプルとクロマサンプルとに変換を適用し得る。
本開示の技法は、異なる深度、たとえば、図5Aに示すRQT130などのRQTの異なる深度においてTUに関連するルーマ成分とクロマ成分とに変換を適用することを含む。すなわち、たとえば、ビデオコーダは、リーフノード134、138、140、および144のルーマ成分に変換を適用し、一方、他の非リーフノードにおいてはクロマ成分に変換を適用し得る。図5Aおよび図5Bのいくつかの態様について、ビデオエンコーダ20(図1および図2)によって行われるものとして以下で説明するが、本技法はまた、ビデオデコーダ30(図1および図3)などの別のビデオコーダによっても行われ得ることを理解されたい。たとえば、ビデオデコーダ30は、本開示の態様によれば、逆変換を決定し、それをコード化ビデオデータに適用し得る。
説明のための一例では、(ルートノード132に対応する)TU150は、64×64TU(たとえば、4:2:0のクロマフォーマットに従ってルーマがクロマのレートの2倍でサンプリングされると仮定すると、64×64ルーマサンプルおよび32×32クロマサンプル)であり得る。ビデオエンコーダ20は、概して、リーフノード134、138、140、および144などのリーフノードのTUに変換を適用し得る。すなわち、ビデオエンコーダ20は、リーフノード134についてはRQT深度1において、リーフノード138および140についてはRQT深度2において、リーフノード144についてはRQT深度3においてルーマサンプルとクロマサンプルとに変換を適用し得る。したがって、この例では、ビデオエンコーダ20は、サブTU152のルーマサンプルには32×32変換を、クロマサンプルには16×16変換を適用し、サブTU154および156のルーマサンプルには16×16変換を、クロマサンプルには8×8変換を適用し、サブTU158のルーマサンプルには8×8変換を、クロマサンプルには4×4変換を適用することができる。
本開示の態様は、4分木構造の異なる深度においてルーマサンプルとクロマサンプルとに変換を適用することに関する。上記の例では、ビデオエンコーダ20は、リーフノード134(RQT深度1)、138(RQT深度2)、140(RQT深度2)、および144(RQT深度3)においてルーマサンプルに変換を適用し、一方、より高いRQT深度においてクロマサンプルに単一の変換を適用し得る。一例では、ビデオエンコーダ20は、RQT深度0においてクロマサンプルに変換を適用し得る。この例では、ビデオエンコーダ20は、TU150のクロマサンプルに32×32変換を適用し、一方、より微細なグラニュラリティを用いてルーマサンプルに変換を適用し得る。
別の例では、ビデオエンコーダ20は、他のRQT深度においてクロマサンプルに変換を適用し得る。たとえば、ビデオエンコーダ20は、リーフノード144においてルーマサンプルに変換を適用し、一方、ノード142においてクロマサンプルに変換を適用し得る。図5Bを参照すると、ビデオエンコーダ20は、サブTU158の各々のルーマサンプルに8×8変換を適用し、一方、すべてのサブTU158のクロマサンプルに8×8変換を適用し得る。このようにして、ビデオエンコーダ20は、ビデオデータの所与のブロックについて、RQTに関してルーマサンプルよりも相対的に粗いグラニュラリティでクロマサンプルに変換を適用し得る。
いくつかの例では、ビデオエンコーダ20は、TUに関連するクロマサンプルを分割する能力を制限し得る。たとえば、ビデオエンコーダ20は、RQT130に従ってTU150のルーマサンプルを分割し得る。しかしながら、ビデオエンコーダ20は、RQT130に従ってTU150のクロマサンプルを分割しないことがある。むしろ、本開示の態様によれば、ビデオエンコーダ20は、RQT深度0において(ルートノード132において)クロマサンプルに変換を適用し得る。ビデオエンコーダ20は、一例では、依然として、RQT130に従ってルーマサンプルを分割し、RQT130のリーフノードに適切な変換を適用し得る。
他の例では、ビデオエンコーダ20は、クロマサンプルに変換が適用されるRQT深度がルーマサンプルに変換が適用されるRQT深度とは異なるかどうかを識別するためのフラグを実装し得る。たとえば、TU4分木のノードが4つのノードに分割されるときには、ビデオエンコーダ20は、ルーマサンプルとクロマサンプルの両方が分割されるかどうかを示すためのフラグを設定し得る。すなわち、ビデオエンコーダ20は、分割することなしにクロマサンプルに変換が適用されるかどうかを示すためのフラグを設定し得る。一例では、ビデオエンコーダ20は、ルーマサンプルとクロマサンプルの両方がRQTに従って分割される場合はフラグ値を「0」に設定し、ルーマサンプルはRQTに従って分割されるがクロマサンプルは分割されない場合はフラグ値を「1」に設定し得る。この例では、ビデオエンコーダ20は、ルーマサンプルに、クロマサンプルとは異なるサイズの変換を適用し得る。すなわち、たとえば、ビデオエンコーダ20は、ルーマサンプルに、クロマサンプルに適用するよりも小さい変換を適用し得る。
説明のための一例では、ビデオエンコーダ20がRQT深度1においてクロマサンプルに変換を適用すると仮定する。この例では、ビデオエンコーダ20は、フラグを使用して、ノード136Aおよび136Bにおいてクロマサンプルが分割されないことをシグナリングし得る。さらに、ビデオエンコーダ20は、ノード134および136に関連するクロマサンプルに変換を適用し、ノード134および136に関連するクロマサンプルをシグナリングし得る。本開示の態様によれば、ビデオエンコーダ20は、ルーマサンプルとクロマサンプルとに変換が適用される方法を分離し、RQT130に従ってルーマサンプルを分割し得る。
いくつかの例では、ビデオエンコーダ20は、TU150のクロマサンプルに関する最小変換サイズまたはRQT深度をシグナリングし得る。たとえば、ビデオエンコーダ20は、TU150のクロマサンプルが分割され得る最小変換サイズをシグナリングし得る。代替的にまたは追加的に、ビデオエンコーダ20は、クロマサンプルが分割され得る最低RQT深度をシグナリングし得る。ビデオエンコーダ20は、そのようなシグナリングを、シーケンスパラメータセット(SPS:sequence parameter set)、ピクチャパラメータセット(PPS:picture parameter set)などのパラメータセット中で、またはスライスヘッダ中で与え得る。この例では、ビデオエンコーダ20は、ルーマサンプルがRQTに従ってさらに分割されるかどうかにかかわらず、最小変換サイズまたは最低RQT深度(以下「クロマ分割フロア(chroma division floor)」と呼ぶ)においてクロマサンプルに変換を適用し得る。
ビデオエンコーダ20がクロマ分割フロアを実装する例では、ビデオエンコーダ20は、様々な方法でクロマ分割フロアをシグナリングし得る。一例では、ビデオエンコーダ20は、ルーマサンプルが分割され得る最小RQT深度とクロマサンプルが分割され得る最小RQT深度との間の差をシグナリングし得る。すなわち、図5Aに示した例では、ルーマサンプルは、RQT深度3に、RQT130に従って分割され得る。ビデオエンコーダ20は、3からクロマ分割フロアを減算し、得られた値をシグナリングすることによって、クロマ分割フロアをシグナリングし得る。
いくつかの例では、クロマ分割フロアをシグナリングするために、シーケンスパラメータセット(SPS)が使用され得る。たとえば、SPSは、以下の表1に従って形成され得る。
表1に示した例では、delta_transform_hierarchy_depth_chroma_interとして識別されるシンタックス要素は、インターピクチャについて、ルーマサンプルの最小変換サイズとクロマサンプルの最小変換サイズとの間の差を示し得る。シンタックス要素は、以下の式に従って形成され得る。
この例では、delta_transform_hierarchy_depth_chroma_interシンタックス要素の値は、正、0、または負であり得る。たとえば、クロマ変換深度がルーマ変換深度(たとえば、変換が適用されるRQT深度)よりも小さいときには、delta_transform_hierarchy_depth_chroma_interシンタックス要素は0よりも小さくなり得る。
さらに、表1に示した例によれば、delta_transform_hierarchy_depth_chroma_intraとして識別されるシンタックス要素は、イントラピクチャについて、ルーマサンプルの最小変換サイズとクロマサンプルの最小変換サイズとの間の差を示し得る。シンタックス要素は、以下の式に従って形成され得る。
上記のように、この例では、delta_transform_hierarchy_depth_chroma_interシンタックス要素の値は、正、0、または負であり得る。たとえば、クロマ変換深度がルーマ変換深度(たとえば、変換が適用されるRQT深度)よりも小さいとき、delta_transform_hierarchy_depth_chroma_interシンタックス要素は0よりも小さくなり得る。
別の例では、ビデオエンコーダ20は、TU150が対応するリーフCUとクロマサンプルが分割され得る最小深度との間の差をシグナリングし得る。たとえば、ビデオエンコーダ20は、TUが対応するリーフCUにサイズが等しい未分割TUに対応する、ルートノード132のRQT深度(RQT深度0)と、TU150のクロマサンプルが分割され得る最小深度との間の差をシグナリングし得る。いくつかの例では、デフォルト値が設定され得る。たとえば、デフォルト値は、クロマサンプルに関する最小変換サイズがCUのサイズに等しくなるように設定され得る。
いくつかの例では、クロマ分割フロアをシグナリングするために、シーケンスパラメータセット(SPS)が使用され得る。たとえば、SPSは、以下の表2に従って形成され得る。
表2に示した例では、chroma_transform_depth_delta_CU_interは、インター予測ピクチャについて、コーディングユニットの深度と最小クロマ変換サイズの深度との間の深度差を示し得る。シンタックス要素は、インター予測ピクチャについて、以下の式に従って形成され得る。この値範囲は、少なくとも1に等しくなり得る。
さらに、表2に示した例によれば、chroma_transform_depth_delta_CU_intraとして識別されるシンタックス要素は、イントラ予測ピクチャについて、コーディングユニットの深度と最小クロマ変換サイズの深度との間の深度差を示し得る。シンタックス要素は、イントラ予測ピクチャについて、以下の式に従って形成され得る。この値範囲は、少なくとも1に等しくなり得る。
別の例では、chroma_transform_depth_delta_CU_interおよびchroma_transform_depth_delta_CU_intraのデフォルト値は、デフォルトで値1に設定され、したがって、シグナリングされる必要がない。
クロマ分割フロアが上記の表2に従ってシグナリングされる事例では、変換ツリーは、以下の表3に従ってシグナリングされ得る。
表3の例では、クロマ成分は、RQT構造を依然として使用し得る。たとえば、firstChromaCbf_flagは、以下の式に従って定義される。
他の例では、クロマ成分は、RQT構造を使用しないことがある。すなわち、たとえば、クロマ成分は、CUレベル(RQTの深度0)においてシグナリングされ得る。そのような例では、変換ツリーシンタックスは、以下の表4に従って生成され得る。
さらに、クロマ成分がRQT構造を使用しないときには、変換係数シンタックスは、以下の表5に従って生成され得る。
表5の例では、cbp_cb[trafoDepth]は、各ビットが細分割レベルtrafoDepthにおける4つのクロマ変換ブロックのうちの1つ(Cb)のcbf_cbに等しい、4ビット値であり得る。アレイインデックスtrafoDepthは、変換コーディングのためにブロックへとコーディングユニットの現在の細分割レベルを指定し得る。さらに、trafoDepthは、コーディングユニットに対応するブロックの場合0に等しくなり得る。本開示の態様によれば、cbp_cb[trafoDepth]が存在しないときには、cbf_cb[trafoDepth]の値は、0に等しくなると推測され得る。
さらに、cbp_cr[trafoDepth]は、各ビットが細分割レベルtrafoDepthにおける4つのクロマ変換ブロックのうちの1つ(Cr)のcbf_crに等しい、4ビット値であり得る。アレイインデックスtrafoDepthは、変換コーディングのためにブロックへとコーディングユニットの現在の細分割レベルを指定し得る。さらに、trafoDepthは、コーディングユニットに対応するブロックの場合0に等しくなり得る。本開示の態様によれば、cbp_cr[trafoDepth]が存在しないときには、cbf_cb[trafoDepth]の値は、0に等しくなると推測され得る。
表5に示す例によれば、else if(cIdx==1&&log2MinTrafoSizeChroma>=log2TrafoSize-1)という条件が満たされないときには、親ノードにおいてクロマサンプルの変換が実行される。同様に、else if(cIdx==2&&log2MinTrafoSizeChroma>=log2TrafoSize-1)という条件が満たされないときには、親ノードにおいてクロマサンプルの変換が実行される。同様に、if(split_transform_flag[x0][y0][trafoDepth]&&(cIdx==0||log2MinTrafoSizeChroma<log2TrafoSize-1))という条件が満たされないときには、親ノードにおいてクロマサンプルの変換が実行される。
さらに、クロマ成分がRQT構造を使用しないときには、変換係数シンタックスは、以下の表6に従って生成され得る。
説明のために、図5Aおよび図5Bのいくつかの態様についてビデオエンコーダ20およびビデオデコーダ30に関して説明したが、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)を含むハードウェアベースのコーディングユニットなど、他のビデオコーディングユニットも、図5Aおよび図5Bに関して説明した例および技法を実行するように構成され得ることを理解されたい。
図6は、本開示に一致する、ビデオデータをコーディングする技法を示す流れ図である。図6に示す例は、概して、ビデオコーダによって実行されるものとして説明する。いくつかの例では、図6の方法は、上記で説明したビデオエンコーダ20(図1および図2)またはビデオデコーダ30(図1および図3)によって行われ得ることを理解されたい。他の例では、図6の方法は、様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどによって実行され得る。
本開示の態様によれば、ビデオコーダは、ビデオデータのブロックに関連するルーマ情報に変換を適用すべき第1のRQT深度を決定し得る(182)。ルーマ情報は、概して、ルーマ情報の特定の領域にかかわらず、ビデオデータのルーマ成分に関連するデータを含み得る。すなわち、ルーマ情報は、残差ルーマサンプル(たとえば、空間/ピクセル領域)を含み得、ビデオエンコーダ(ビデオエンコーダ20)は、変換係数(たとえば、変換領域)を生成するためにそれに変換を適用し得る。反対に、ルーマ情報は、ルーマ変換係数(たとえば、変換領域)を含み得、ビデオデコーダ(デコーダ30)は、残差ルーマサンプル(たとえば、空間/ピクセル領域)を生成するためにそれに逆変換を適用し得る。
さらに、RQT深度に関して、いくつかの例では、ビデオコーダは、LCUのリーフCUごとにRQTを決定し得る。すなわち、所与のCUについて、ビデオコーダは、変換のためにCUを分割する方法(たとえば、RQTに従ってCUを1つまたは複数のTUに分割すること)を決定し得る。ビデオコーダは、決定されたRQTの最低深度(たとえば、RQTのリーフノード)においてルーマ情報に変換を適用し得る。
ビデオコーダはまた、ビデオデータのブロックのクロマ情報に変換を適用すべき第2のRQT深度を決定し得る(184)。ルーマ情報と同様に、クロマ情報は、概して、クロマ情報の特定の領域にかかわらず、(たとえば、Cr成分とCb成分とを含む)ビデオデータのクロマ成分に関連するデータを含み得る。すなわち、クロマ情報は、残差クロマサンプル(たとえば、空間/ピクセル領域)を含み得、ビデオエンコーダ(ビデオエンコーダ20)は、変換係数(たとえば、変換領域)を生成するためにそれに変換を適用し得る。反対に、クロマ情報は、クロマ変換係数(たとえば、変換領域)を含み得、ビデオデコーダ(デコーダ30)は、残差クロマサンプル(たとえば、空間/ピクセル領域)を生成するためにそれに逆変換を適用し得る。
本開示の態様によれば、ビデオコーダは、ルーマ情報に変換を適用すべきRQT深度とは無関係に、クロマ情報に変換を適用すべきRQT深度を決定し得る。いくつかの例では、ビデオコーダは、ルーマサンプルよりも相対的に高いRQT深度においてクロマ情報に変換を適用し得る。たとえば、ビデオコーダは、RQTのリーフノードに関連するクロマ情報に変換を適用しないことがある。むしろ、ビデオコーダは、より高いRQT深度においてクロマ情報に変換を適用し得る(たとえば、それによって、リーフノードにおいて変換を適用することと比較して、より大きい変換を適用し得る)。
ビデオコーダは、次いで、第1のRQT深度においてルーマ情報をコーディングし、第2のRQT深度においてクロマ情報をコーディングし得る(186)。たとえば、ビデオコーダがビデオエンコーダ(たとえば、ビデオエンコーダ20)である例では、ビデオコーダは、残差ルーマサンプルおよび残差クロマサンプルに適切な変換を適用することによって、ルーマ情報とクロマ情報とを符号化し、それによって、変換領域における変換係数を生成し得る。代替的に、ビデオコーダがビデオデコーダ(たとえば、ビデオデコーダ30)である例では、ビデオコーダは、変換係数に適切な逆変換を適用することによって、ルーマ情報とクロマ情報とを復号し、それによって、ピクセル領域における残差ルーマおよびクロマサンプルを生成し得る。
また、図6に関して図示し説明したステップは一例として与えたものにすぎないことを理解されたい。すなわち、図6の方法のステップは必ずしも図6に示す順序で実行される必要はなく、より少数の、追加の、または代替のステップが実行され得る。
図7は、本開示に一致する、ビデオデータを符号化する技法を示す流れ図である。説明のためにビデオエンコーダ20(図1および図2)の構成要素によって実行されるものとして一般的に説明するが、他のビデオコーディングユニット、プロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなども図7の方法を実行するように構成され得ることを理解されたい。
図7に示す例示的な方法によれば、ビデオエンコーダ20は、残差クロマサンプルとは異なるRQT深度において残差ルーマサンプルに変換を適用すべきかどうかを決定する(200)。ビデオエンコーダ20は、たとえば、レートひずみまたは他のコーディング分析に基づいて決定を行い得る。ビデオエンコーダ20が、残差クロマサンプルとは異なるRQT深度において残差ルーマサンプルに変換を適用する場合(ステップ200の「YES」分岐)、ビデオエンコーダ20は、異なるRQT深度において変換が適用されるというインジケーションを生成する(202)。たとえば、ビデオエンコーダ20は、異なるRQT深度において変換が適用されることを示すフラグを設定し得る。
いくつかの例では、ビデオエンコーダ20はまた、RQT深度差のインジケーションを生成する(204)。すなわち、ビデオエンコーダ20は、ルーマサンプルに変換が適用されるRQT深度と、クロマサンプルに変換が適用されるRQT深度との間の差のインジケーションを生成する。他の例では、そのようなインジケーションは必要とされないことがある。たとえば、ビデオエンコーダ20は、クロマサンプルに変換を適用すべきデフォルトRQT深度を実装し得る。そのような例では、ビデオエンコーダ20は、RQT深度差のインジケーションを生成しないことがある。
ビデオエンコーダ20はまた、ルーマサンプルとクロマサンプルとに変換を適用する(206)。したがって、ビデオエンコーダ20は、ビデオデータについてルーマ変換係数とクロマ変換係数とを生成する。ビデオエンコーダ20は、(たとえば、いくつかの例では、量子化の後に)ルーマ変換係数とクロマ変換係数とを含んでいるビットストリームを生成する(208)。ビデオエンコーダ20はまた、異なる深度において変換が適用されるというインジケーションおよび/またはビットストリームにおけるRQT深度差のインジケーションを含み得る。ビデオエンコーダ20は、ルーマ変換係数よりも高いRQT深度においてクロマ変換係数をシグナリングし得るので、いくつかの事例では、ビデオエンコーダ20は、ルーマ係数より前にクロマ変換係数をシグナリングし得る。すなわち、ビデオエンコーダ20は、ビデオエンコーダ20がルーマ変換係数をシグナリングする、リーフノードよりも高い深度において、ノードに関連するクロマ変換係数をシグナリングし得る。
また、図7に関して図示し説明したステップは一例として与えたものにすぎないことを理解されたい。すなわち、図7の方法のステップは必ずしも図7に示す順序で実行される必要はなく、より少数の、追加の、または代替のステップが実行され得る。たとえば、いくつかの事例では、ビデオエンコーダ20は、異なるRQT深度において変換が適用されるというインジケーションを与えないことがあり(202)、および/またはRQT深度差のインジケーションを与えないことがある(204)。
図8は、本開示に一致する、ビデオデータを復号する技法を示す流れ図である。説明のためにビデオデコーダ30(図1および図3)の構成要素によって実行されるものとして一般的に説明するが、他のビデオコーディングユニット、プロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなども図8の方法を実行するように構成され得ることを理解されたい。
ビデオデコーダ30は、符号化されたビットストリームを受信する(220)。ビデオデコーダ30は、次いで、クロマ変換係数とは異なるRQT深度において、受信したルーマ変換係数に逆変換を適用すべきかどうかを決定する(222)。いくつかの事例では、ビデオデコーダ30は、受信したビットストリーム中に含まれるインジケーションに基づいてそのような決定を行い得る。たとえば、図7に関して上記で説明したように、ビデオデコーダ30は、クロマサンプルとは異なる深度においてルーマサンプルに変換が適用されたことを示す、受信したビットストリーム中に含まれるフラグに基づいてそのような決定を行い得る。他の例では、ビデオデコーダ30は、そのようなシグナリングなしに、デフォルトでルーマ係数とクロマ係数とについて異なるRQT深度において逆変換を適用すべきかどうかを決定し得る。
変換が異なる深度において適用される場合(ステップ222の「はい」分岐)、ビデオデコーダ30は、ルーマ変換係数に逆変換を適用すべきRQT深度を決定する(224)。いくつかの例では、ビデオデコーダ30は、RQTのリーフノードにおいてルーマ変換係数に逆変換を適用するようにプリプログラムされ得る。
さらに、ビデオデコーダ30は、クロマ係数に逆変換を適用すべきRQT深度を決定し得る(226)。いくつかの例では、ビデオデコーダ30は、ある特定のデフォルトRQT深度においてクロマ変換係数に逆変換を適用するようにプリプログラムされ得る。たとえば、ビデオデコーダ30は、0のRQT深度または1のRQT深度においてクロマ変換係数に逆変換を適用するようにプリプログラムされ得る。
別の例では、ビデオデコーダ30は、ビットストリーム中で受信したインジケーションに基づいて逆変換を適用すべきRQT深度を決定し得る。たとえば、ビデオデコーダ30は、ルーマ変換係数に逆変換を適用すべきRQT深度とクロマ変換係数に逆変換を適用すべきRQT深度との間の差のインジケーションを受信し得る。他の例では、ビデオデコーダ30は、クロマ変換係数に逆変換を適用すべきRQT深度を表す代替的なインジケーションを受信し得る。たとえば、ビデオデコーダ30は、受信したブロックのサイズまたは他の基準に基づいて逆変換を適用すべきRQT深度を推測し得る。逆変換を適用すべきRQT深度を決定した後に、ビデオデコーダ30は、ルーマ変換係数とクロマ変換係数とに逆変換を適用し得る(228)。いくつかの例では、クロマ変換係数は、ルーマ変換係数より前にビットストリーム中に含まれ得る。したがって、ビデオデコーダ30は、ルーマ係数に逆変換を適用するより前にクロマ変換係数に逆変換を適用し得る。ルーマ変換係数とクロマ変換係数とに逆変換を適用することによって、ビデオデコーダ30は、残差ルーマサンプルおよび残差クロマサンプルを生成し得る。
また、図8に関して図示し説明したステップは一例として与えたものにすぎないことを理解されたい。すなわち、図8の方法のステップは、必ずしも図8に示す順序で実行される必要はなく、より少数の、追加の、または代替のステップが実行され得る。
例に応じて、本明細書で説明する方法のいずれかの特定の行為または事象は、異なる順序で実行され得、追加され得、マージされ得、またはすべてまとめて省略され得る(たとえば、説明した行為または事象の必ずしもすべてが、本方法の実施に必要であるとは限らない)ことを理解されたい。さらに、いくつかの例では、行為または事象は、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。さらに、本開示のいくつかの態様は、明快のために、単一のモジュールまたはユニットによって実行されるものとして説明したが、本開示の技法は、ビデオコーダに関連するユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
また、本開示のいくつかの態様について新生のHEVC規格に関して、たとえば、CU、PU、およびTUに関して説明したが、本開示の技法はこのように限定されないことを理解されたい。すなわち、本開示の技法は、ビデオデータのブロックに関連するルーマサンプルとクロマサンプルとに変換を適用することに広く適用され、いかなる特定のコーディング規格にも限定されない。
1つまたは複数の例では、本開示において説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。
このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)はデータをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に含まれる。