概して、本開示では、ビデオデータのコーディングユニット(CU)の変換ユニット(TU)のためのコード化ブロックフラグ(CBF)および変換分割フラット(TSF)シンタックス要素をコーディングするための技法について説明する。本開示では、「コーディング」は、概して、エンコーダにおいてビデオデータを符号化することと、デコーダにおいてビデオデータを復号することの両方を指す。CUは、概して、CUの予測データをどのように形成すべきかを示す1つまたは複数の予測ユニット(PU:prediction unit)を含む。TUは、残差データ、すなわち、元のビデオデータと予測データとの間のピクセルごとの差分、または、残差データの変換バージョン、すなわち、変換係数を含む。ビデオデータのフレームはいくつかの最大CU(LCU:largest CU)に分割され得、それらのLCUはさらにサブCUに区分され得る。CU4分木は、LCUがどのようにサブCUに区分されるか、および各サブCUがどのようにさらなるサブCUに区分されるかを記述し得る。
区分されないCUはCU4分木のリーフノードに対応する。そのようなCUはリーフノードCUと呼ばれることがある。各リーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含む。CUと同様に、リーフノードCUのTUは、TU4分木に従ってサブTUに区分され得る。TU4分木の各ノードはTSFシンタックス要素を含み得、TSFは、そのノードに対応するTUが、サブTUに「分割」すなわち区分されるかどうかを示す。
概して、ビデオデータは、RGB色空間ではなく、YUV色空間においてコーディングされる。RGB色空間ではピクセルの赤、緑、および青の成分の値を記述するが、YUV色空間では、ピクセルのルミナンス(Y)ならびにクロミナンス(UおよびV)の成分の値を記述し、Uは、一般に、クロミナンスの青色相を表し、Vはクロミナンスの赤色相を表す。YUV色空間はYCbCrとしても記述され、Cbが青色相を指し、Crが赤色相を指す。CUのTUは、一般に、1つまたは複数の成分を含み、成分の各々は、CUのY成分、U成分、またはV成分のうちの1つに対応する。たとえば、TUは、ルミナンスデータを表すためのY成分と、青色相データを表すためのU成分と、赤色相データを表すためのV成分とを含み得る。
TU4分木の各ノードはまた、1つまたは複数のCBFシンタックス要素を含み得、各CBFは、ノードに対応するTUの対応する成分がコーディングされるかどうかを示す。特に、TUの成分は、その成分が少なくとも1つの非0係数を含むときに「コーディングされる」と見なされる。言い換えれば、TUの成分は、その成分が0よりも大きい絶対値を有する少なくとも1つの係数を含むときにコーディングされると見なされる。TUの成分のためのCBFは、その成分がコーディングされるかどうか、すなわち、その成分が少なくとも1つの非0係数、または、言い換えれば、絶対値が0よりも大きい少なくとも1つの係数を含むかどうかを表す値を有する。
本開示の技法は、CUをコーディングするために使用されるビデオデータのCUのTUのためのCBFおよびTSFシンタックス要素をコーディングするときの圧縮効率を改善し得る。このコンテキストでは、ビデオデータのCUのTUのためのCBFまたはTSFは、CBFまたはTSFが符号化または復号されるとき、すなわち、エンコーダまたはデコーダが、ジョイントコーディングされたCBFおよびTSFと、VLCコードワードとの間で値をマッピングするときに「コーディングされる」ことに留意されたい。概して、これらの技法の開発において実行された経験的テストにより、ビデオデータのCUのTUのためのCBFとTSFとの間の相関関係が証明された。たとえば、概して、TUがサブTUに分割されるとき、そのTUの成分がコーディングされることもあり得る。別の例として、TUの成分がコーディングされないとき、TUがサブTUに分割されないことがあり得る。また、同じTUの成分がコーディングされるかされないかの間には相関関係があり得る。たとえば、TUの1つの成分がコーディングされるとき、TUの他の成分もコーディングされることがあり得る。
可変長コーディング(VLC:variable length coding)技法を使用してビデオデータのCUのTUのための相関するシンタックス要素(たとえば、1つまたは複数のCBFと、TSF)をジョイントコーディングすることによって圧縮効率が改善され得る。たとえば、相関のために、シンタックス要素の値のいくつかの組合せは他の組合せよりも可能性が高くなり得る。したがって、VLC技法を使用して相関するシンタックス要素をジョイントコーディングするとき、可能性が高い組合せには、他の可能性が低い組合せよりも短いVLCコードワードが割り当てられ得る。このようにして、可能性が高い組合せに対応するコードワードは、可能性が低い組合せに対応するコードワードよりも少ないビットを備え得る。たとえば、最も可能性が高い組合せに対応するコードワードはシングルビットのみを備え得る。したがって、本開示の技法を適用することにより、たとえば、シンタックス要素ごとにシングルビットフラグを使用して、TUについて個々にシンタックス要素をコーディングすることよりも、可能性が最も高い場合におけるシンタックス要素をより効率的に表すビットストリームがもたらされ得る。
さらに、この場合もVLC技法を使用して、ビデオデータのCUのTUのサブTUのための相関するシンタックス要素(たとえば、TSF)のうちの1つを、サブTUのための他の相関するシンタックス要素(たとえば、CBF)の値に基づいてジョイントコーディングすることによっても圧縮効率が改善され得る。たとえば、上記で説明した相関のために、所与のサブTUについて、相関するシンタックス要素のうちの1つのいくつかの値は、他の相関するシンタックス要素の値に応じて、他の値よりも可能性が高くなり得る。一例として、サブTUのためのTSFのいくつかの値は、サブTUのための所与のCBFの値に応じて、他の値よりも可能性が高くなり得る。したがって、サブTUのためのTSFをジョイントコーディングするとき、TSFの値のいくつかの組合せは、サブTUのためのCBF、たとえば、サブTUのルミナンス(Y)成分のためのCBFの値に応じて、他の組合せよりも可能性が高くなり得る。その結果、TSFをジョイントコーディングするために、CBFの値が与えられたときに、可能性が高いTSFの値の組合せに、他の可能性が低い組合せよりも短いVLCコードワードが割り当てられ得るように、CBFの値に基づいて異なるVLCテーブルが選択され得る。
同様に、サブTUのための所与のCBFのいくつかの値は、サブTUのためのTSFの値に応じて、他の値よりも可能性が高くなり得る。したがって、サブTUの各々の特定の成分、たとえば、ルミナンス(Y)成分に対応する、サブTUのためのCBFをジョイントコーディングするとき、CBFの値のいくつかの組合せは、サブTUのためのTSFの値に応じて、他の組合せよりも可能性が高くなり得る。その結果、CBFをジョイントコーディングするために、TSFの値が与えられたときに、可能性が高いCBFの値の組合せに、他の可能性が低い組合せよりも短いVLCコードワードが割り当てられ得るように、TSFの値に基づいて異なるVLCテーブルが選択され得る。この場合も、本開示の技法を適用することにより、たとえば、シンタックス要素ごとにシングルビットフラグを使用して、サブTUについて個々にシンタックス要素をコーディングすることよりも、可能性が最も高い場合におけるサブTUのためのシンタックス要素をより効率的に表すビットストリームがもたらされ得る。
したがって、本開示の技法は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングすることを含む。いくつかの例では、TUのためのCBFのうちの1つまたは複数の値、あるいはTSFの値が推測され得るとき、これらのCBFまたはTSFは、TUのための残りのCBFおよび/またはTSFとともにジョイントコーディングされる必要はない。
一例として、TUの第1のクロミナンス成分がコーディングされるかどうかと、TUの第2のクロミナンス成分がコーディングされるかどうかとの間に相関関係があり得る。たとえば、TUの第1のクロミナンス成分(たとえば、U)がコーディングされるとき、TUの第2のクロミナンス成分(たとえば、V)もコーディングされることがあり得る。したがって、TUのための1つまたは複数のCBFとTSFとをジョイントコーディングするとき、本開示の技法は、TUの両方のクロミナンス成分を表すCBFをコーディングすることを含み得る。すなわち、本開示の技法は、TUのクロミナンス成分のためのCBFのビット単位での「論理和」をとることを含む。このようにして、本開示の技法は、TUのためのクロミナンスCBF、たとえば、CBFCを与えることを含み、CBFCはCBFU|CBFVを表し、UおよびVはTUのクロミナンス成分を指し、「|」はビット単位での「論理和」演算子を指す。CBFCはさらに、TUのためのTSFとともにジョイントコーディングされ得る。TUのクロミナンス成分のうちの少なくとも1つがコーディングされることをTUのためのCBFCの値が示すとき、TUの各個々のクロミナンス成分がコーディングされるかどうかを示す追加の情報が与えられ得る。いくつかの例では、TUのクロミナンス成分のためのCBFのうちの1つの値が推測され得るとき、追加の情報が与えられる必要はない。
他の例では、前に説明したように、ビデオデータのCUのTUの各サブTUがさらなるサブTUに分割されるかどうかと、各サブTUの1つまたは複数の成分がコーディングされるかどうかとの間にも相関関係があり得る。一例として、各サブTUがさらなるサブTUに分割されるとき、各サブTUの1つまたは複数の成分(たとえば、Y成分)がコーディングされることがあり得る。さらに、各サブTUの1つまたは複数の成分がコーディングされないとき、各サブTUがさらなるサブTUに分割されないことがあり得る。したがって、本開示の技法は、ビデオデータのCUのTUのサブTUのためのTSFをジョイントコーディングすることを含む。たとえば、本開示の技法は、各サブTUのためのCBFのいずれもコーディングされない、すなわち、サブTUのためのCBFの値が推測されるとき、サブTUのためのTSFをジョイントコーディングすることを含み得る。この場合も、サブTUのためのTSFのうちの1つまたは複数の値が推測され得るとき、これらのTSFは、サブTUのための残りのTSFとともにジョイントコーディングされる必要はない。
さらに、本開示の技法は、サブTUの各々の成分のためのCBFをジョイントコーディングすることを含む。たとえば、本技法は、各サブTUのクロミナンス成分のためのCBFのいずれもコーディングされない、すなわち、サブTUのクロミナンス成分のためのCBFの値が推測されるとき、およびサブTUの各々のためのTSFもコーディングされない、すなわち、サブTUのためのTSFの値も推測されるとき、サブTUの各々のY成分のためのCBFをジョイントコーディングすることを含み得る。この場合も、サブTUの各々の成分のためのCBFのうちの1つまたは複数の値が推測され得るとき、これらのCBFは、サブTUのための残りのCBFとともにジョイントコーディングされる必要はない。
図1は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングするための技法を実装し得るビデオ符号化および復号システム10の一例を示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレスハンドセット、いわゆるセルラー無線電話または衛星無線電話などのワイヤレス通信デバイスを備えるか、あるいは、通信チャネル16を介してビデオ情報を通信することができ、その場合、通信チャネル16がワイヤレスである、任意のワイヤレスデバイスを備え得る。
ただし、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングすることに関係する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。たとえば、これらの技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。したがって、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスまたはワイヤード媒体の任意の組合せを備え得る。
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含む。宛先デバイス14は、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20および/または宛先デバイス14のビデオデコーダ30は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
図1の図示のシステム10は一例にすぎない。ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含むことができる。
宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28はその情報を復調する。この場合も、上記で説明したビデオ符号化プロセスは、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングするために本明細書で説明する技法のうちの1つまたは複数を実装し得る。チャネル16を介して通信される情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用され得るシンタックス情報を含み得、たとえば、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうか、すなわち、その成分がコーディングされるかどうか、およびTUがサブTUに分割されるかどうかを記述するシンタックス要素を含み得る。ビデオデコーダ30は、このシンタックス情報、ならびにビットストリーム中の他のデータを使用して、符号化ビットストリームを復号し、復号された情報をディスプレイデバイス32に受け渡す。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格など、ビデオ圧縮規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、MPEG−2、ITU−T H.263、および今度の高効率ビデオコーディング(HEVC)規格がある。概して、本開示の技法について、HEVCに関して説明するが、これらの技法は、同様に他のビデオコーディング規格と併せて使用され得ることを理解されたい。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよびデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。
ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャグループ(GOP)は、概して、一連の1つまたは複数のビデオフレームを備える。GOPは、GOP中に含まれるいくつかのフレームを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つまたは複数のフレームのヘッダ中、または他の場所に含み得る。各フレームは、それぞれのフレームのための符号化モードを記述するフレームシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。各ビデオフレームは、複数のスライス、すなわち、ビデオフレームの部分を含み得る。各スライスは複数のビデオブロック(たとえば、LCU)を含み得、それらのビデオブロックの各々は、サブブロック(たとえば、サブCU)とも呼ばれるより小さいブロックに区分され得る。ITU−T H.264規格によれば、ビデオブロックは、マクロブロックまたはマクロブロックのパーティションに対応し得る。HEVCによれば、ビデオブロックは、CU、またはCUのパーティションに対応し得る。概して、LCUおよびそれのサブCU(すなわち、CU4分木のCU)は「CU」と呼ばれ得る。
指定のコーディング規格に応じて、ビデオブロックは、16×16、8×8、4×4、2×2など、様々な「N×N」サブブロックサイズに区分され得る。ビデオエンコーダ20は、各ブロックを再帰的に区分し得、すなわち、2N×2Nブロックを4つのN×Nブロックに区分し、N×Nブロックのいずれかまたはすべてを4つの(N/2)×(N/2)ブロックに区分し、以下同様に区分し得る。本開示では、「N×(x)N」と「N×(by)N」は、垂直寸法および水平寸法に関するブロックのピクセル寸法、たとえば、16×(x)16ピクセルまたは16×(by)16ピクセルを指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、Nは、非負整数値を表す。ブロック中のピクセルは行と列に構成され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備え得、ただし、Mは必ずしもNに等しいとは限らない。一例として、ITU−T H.264規格では、サイズが16×16ピクセルであるブロックはマクロブロックと呼ばれることがあり、16×16ピクセルよりも小さいブロックは、16×16マクロブロックのパーティションと呼ばれることがある。他の規格では、ブロックは、より一般的にそれらのサイズに関して、たとえば、各々が固定サイズではなく可変サイズを有する、CUおよびそれのパーティションとして定義され得る。
ビデオブロックは、ピクセル領域中のピクセルデータのブロックを備え得、あるいは、たとえば、所与のビデオブロックのための残差データへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得、残差データは、ブロックのビデオデータと、ブロックのために生成される予測データとの間のピクセル差分を表す。場合によっては、ビデオブロックは、変換領域中に量子化変換係数のブロックを備え得、所与のビデオブロックのための残差データへの変換の適用後に、得られた変換係数も量子化される。
概して、ビデオエンコーダ20は、ブロック区分プロセスに従ってブロックをサブブロックに区分する。たとえば、ビデオエンコーダ20は、ブロックが高周波変動または他の高いディテール量を含むとき、そのブロックをサブブロックに区分するように構成され得る。いくつかの例では、ビデオエンコーダ20は、ブロックをサブブロックに区分すべきかどうかを判断するレートひずみ最適化プロセスを実装する。ビデオデータをコーディングするためにより小さいブロックを使用すると、高レベルのディテールを含むブロックのための予測がより良くなり得、したがって、残差データとして表される生じる誤差(すなわち、予測データと元のビデオデータとの間のピクセルごとの差分)が低減し得る。ビデオデータの各ブロックは、ブロックのためのコーディング情報を提供するデータのセットを含む。このデータのセットは、コード化ビデオデータのブロックのためのメタデータとも呼ばれる、ブロックのためのオーバーヘッドと見なされる。したがって、ブロックが小さいほどブロックの残差値は低くなり得るが、場合によっては、小さいブロックを使用する利益よりも、小さいブロックのためのヘッダデータのオーバーヘッドのほうが上回ることがある。したがって、ビデオエンコーダ20は、誤差(残差データまたはひずみ)の低減を、ブロックの各々に関連するオーバーヘッド(ビットレート)と平衡させる最適な(または許容できる)区分方式をビデオエンコーダ20が判断することを試みる、レートひずみ最適化プロセスを実行するように構成され得る。
概して、ビデオブロックは、親ブロックとそれのパーティション(すなわち、サブブロック)の両方を指す。スライスは、概して複数のビデオブロック(たとえば、LCUのセット)を含み、それらのビデオブロックのいずれかまたはすべては、サブブロック(たとえば、サブCU)に区分され得、それらのサブブロックはさらに再帰的に区分され得る。各スライスは、ビデオデータの単独で復号可能なユニットに対応し得る。代替的に、フレーム自体が復号可能なユニットに対応するか、またはフレームの他の部分が復号可能なユニットとして定義され得る。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャのグループ(GOP)など、ビデオデータの単独で復号可能な任意のユニット、または適用可能なコーディング技法に従って定義される他の単独で復号可能なユニットを指すことがある。
高効率ビデオコーディング(HEVC)と現在呼ばれる、新しいビデオコーディング規格を開発するための取り組みが現在進行中である。新生のHEVC規格はH.265と呼ばれることもある。この規格化の取り組みは、HEVCテストモデル(HM:HEVC Test Model)と呼ばれるビデオコーディングデバイスのモデルに基づく。HMは、たとえば、ITU−T H.264/AVCによるデバイスに勝るビデオコーディングデバイスのいくつかの能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを与えるが、HMは、たとえば、イントラ予測コーディングされるブロックのサイズに基づいて、35個ものイントラ予測符号化モードを与える。
HMは、ビデオデータのブロックをCUと称する。CUは、圧縮のために様々なコーディングツールがそれに適用される基本ユニットとして働く2N×2Nピクセルイメージ領域を指し得る。CUはH.264/AVCのマクロブロックと概念的に同様である。ビットストリーム内のシンタックスデータは、特定のユニット(たとえば、スライス、フレーム、GOP、またはLCUを含むビデオデータの他のユニット)のためのピクセルの数に関して最大のCUである、LCUを定義し得る。概して、CUは、CUがサイズの差異を有しないことを除いて、H.264のマクロブロックと同様の目的を有する。したがって、概して、どんなCUもサブCUに区分または分割され得る。特定のCUを生成するためにLCUが区分される回数は、CUのパーティションレベル、分解レベル、または「深度」と呼ばれることがある。場合によっては、シンタックスデータがLCUの最大パーティションレベルを定義し、今度は、その最大パーティションレベルが、LCUについて生じ得る最小サイズのCU(SCU:smallest sized CU)を制限し得る。
概して、本開示におけるCUへの言及は、ビデオデータのLCU、またはLCUのサブCUを指すことがある。LCUはサブCUに分割され得、各サブCUはさらにサブCUに分割され得、以下同様である。上記で説明したように、ビットストリームのシンタックスデータは、最大パーティションレベルと呼ばれることがある、LCUが分割され得る最大回数を定義し得る。上記でも説明したように、ビットストリームはまた、SCUを定義し得る。本開示ではまた、CU、CUの予測ユニット(PU)、またはCUの変換ユニット(TU)のいずれかを指すために「ブロック」という用語を使用する。PUおよびTUについて、以下でより詳細に説明する。
LCUは、LCUがどのように区分されるかを示す4分木データ構造に関連し得る。LCUに関連する4分木データ構造はCU4分木と呼ばれることがある。概して、CU4分木はLCUのCUごとに1つのノードを含み、ルートノードはLCUに対応し、他のノードはLCUのサブCUに対応する。所定のCUが4つのサブCUに分割された場合、分割されたCUに対応する4分木中のノードは4つの子ノードを含み、子ノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックス情報を与え得る。たとえば、4分木中のノードは、CUが4つのサブCUに分割されるかどうかを示す、対応するCUのための分割フラグを含み得る。所与のCUのシンタックス情報は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。
分割されないCU(すなわち、末端に対応するCU、またはそれぞれのCU4分木中の「リーフ」ノード)は、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分を表し、CUの予測を実行するためにそのPUの参照サンプルを取り出すためのデータを含む。たとえば、CUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、CUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルがポイントする参照フレーム、および/または動きベクトルの参照リスト(たとえば、リスト0もしくはリスト1)を記述し得る。CUの1つまたは複数のPUを定義するCUのデータはまた、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかとの間で異なり得る。
リーフノードCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。上記で説明したように、1つまたは複数のPUを使用したCUの予測の後に、ビデオエンコーダ20は、1つまたは複数のPUに対応するCUのそれぞれの部分のために1つまたは複数の残差ブロックを計算し得る。残差ブロックは、CUのビデオデータと、1つまたは複数のPUのための予測データとの間のピクセル差分を表し得る。概して、TUは、CUの残差ブロックの全部または一部分を表し、対応する残差ブロックデータを変換し、量子化するためのデータを含み、残差ブロックは残差データを使用して表される。たとえば、ビデオエンコーダ20が、残差データを変換係数に変換し、次いで量子化し、TUの変換係数を走査して量子化変換係数のセットを形成し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、同じCUの対応するPUよりも大きいことも小さいこともある。いくつかの例では、TUの最大サイズは、対応するCUのサイズに対応し得る。
ビデオデータのCUは、対応するビデオデータのルミナンス成分(Y)と、第1のクロミナンス成分(U)と、第2のクロミナンス成分(V)との各々を含み得る。したがって、PUとTUとに関して上記で説明したCUのための予測および変換は、ビデオデータの所与のCUのY成分とU成分とV成分との各々について実行され得る。いくつかの例では、予測情報(たとえば、予測モード(イントラ予測またはインター予測)およびそれの特性(たとえば、特定のイントラ予測モードまたは動きベクトル))は、ルミナンス(Y)成分に関して判断され、クロミナンス(UおよびV)成分に対して再利用され得る。したがって、CUの所与のTUについて、TUの残差データの係数は、TUのY、U、およびV成分のための残差データの係数として参照され得る。すなわち、判断された予測情報は、成分の各々について残差データの個々のブロックを形成するために、TUの成分の各々に適用され得、残差データのブロックはピクセルごとの差分を表す係数を含む。その後、残差データは変換され、量子化され、TUのY、U、およびV成分の各々のための量子化変換係数のブロックが形成され得る。
リーフノードCUはさらに、CUの1つまたは複数のTUの区分を定義する変換4分木データ構造を含み得る。変換4分木データ構造は、LCUに関して上記で説明したCU4分木と実質的に同様の方法でCUのTUのためのパーティション情報を示し得る。たとえば、変換4分木データ構造は、CUの最大TUがどのようにサブTUに区分されるかを定義し得る。いくつかの例では、変換4分木データ構造は「残差4分木変換」(RQT:residual quadtree transform)と呼ばれることがある。RQTの各ノードは、ノードに対応するTUの成分(たとえば、Y、U、またはV)が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうか、およびTUがサブTUに分割されるかどうかを記述するシンタックス情報を含み得る。このシンタックス情報は、概して、上記で説明したように、TUのためのCBFおよびTSFシンタックス要素に対応する。概して、RQTに従ってサブTUに分割されるTUは、サブTUの親TUと呼ばれることがあり、サブTUはTUの子TUと呼ばれることがある。さらに、サブTUは互いの兄弟TU(sibling TU)と呼ばれることがある。RQTに従ってサブTUに分割されないTUは、RQTのリーフノードTUと呼ばれることがある。
他の例では、本開示の技法によれば、CUのTUは、図5Cに関して以下でより詳細に説明する一様なパーティション構造に従って区分され得る。これらの例では、TUは、CUの最大TUであるか、またはCUの最大TUのサブTUであり得る。CUの最大TUは、RQTと一様なパーティション構造の両方に従ってサブTUに区分され得る。一例として、最大TUは、RQTに従ってサブTUに区分され得、サブTUのうちの1つまたは複数は、一様なパーティション構造に従ってさらなるサブTUに区分され得る。別の例として、最大TUは、一様なパーティション構造に従って完全に区分され得る。この場合も、一様なパーティション構造に従ってサブTUに分割されるTUは、サブTUの親TUと呼ばれることがあり、サブTUは、TUの子TU、および互いの兄弟TUと呼ばれることがある。さらに、サブTUは、さらなるサブTUに分割されないことがあり、したがって、前に説明したように、RQTと一様なパーティション構造とを使用して定義されるか、一様なパーティション構造のみを使用して定義されるかにかかわらず、CUのためのTUパーティション構造のリーフノードTUを表し得る。
RQTに関して上記で説明したのと同様の方法で、一様なパーティション構造に従って区分されるTUの各サブTUは、サブTUの成分(たとえば、Y、U、またはV)が少なくとも1つの非0係数を含むかどうかを記述するシンタックス情報を含み得る。上記で説明したように、このシンタックス情報は、概して、単にTUと呼ばれることがある、サブTUのCBFに対応する。さらに、TUのサブTUについて、TUがどのようにサブTUに分割されるかをまとめて記述するシンタックス情報が存在し得る。言い換えれば、シンタックス情報は、一様なパーティション構造と、各サブTUのサイズとに従ってTUを分割することによっていくつのサブTUが生じるかを示し得る。たとえば、サブTUのこのシンタックス情報はTU中に含まれ得る。
いくつかの例では、ビデオデータのCUのTUのためのCBFおよびTSFシンタックス要素は、前に説明したように、シングルビット値、たとえば、シングルビットフラグを使用してそれぞれ表され得る。上記で説明したRQT区分構造の例を参照すると、いくつかの場合には、TUのY、U、およびV成分に対応するすべての3つのCBFが、TUに関連するRQTの対応するノード中に含まれ得る。他の場合には、たとえば、CBFのうちの1つまたは複数の値が推測され得るとき、CBFのサブセットのみがノード中に含まれ得る。
概して、本開示の技法によれば、TUの成分のためのCBFの値は、親TUの成分がコーディングされない(すなわち、非0係数を含まない)ことをTUの親TUの同じ成分のためのCBFの値が示すときに推測され得る。この場合、親TUの各子TUの同じ成分のためのCBFの値は、それぞれの成分がコーディングされないことを示すように推測され得る。さらに、TUの成分のためのCBFの値はまた、親TUの成分がコーディングされる(すなわち、少なくとも1つの非0係数を含む)ことをTUの親TUの同じ成分のためのCBFの値が示し、それぞれの成分がコーディングされないことを親TUのあらゆる他の子TUの同じ成分のためのCBFの値が示すときに推測され得る。この場合、TUの成分のためのCBFの値は、成分がコーディングされることを示すように推測され得る。
さらに他の場合、たとえば、TUのためのTSFの値が推測され得るとき、TUのためのCBFのみが、RQTの対応するノード中に含まれ得る。概して、本開示の技法によれば、TUのためのTSFの値は、TUが、CUの最大許容サイズ、たとえば、CUのための変換の最大許容サイズよりも大きいサイズを有するときに推測され得る。この場合、TUのためのTSFの値は、TUがサブTUに分割されることを示すように推測され得る。同様に、TUのためのTSFの値はまた、TUが、CUのための最小サイズのTU、たとえば、CUのための変換の最小許容サイズに対応するときに推測され得る。この場合、TUのためのTSFの値は、TUがサブTUに分割されないことを示すように推測され得る。ビデオデータのCUのTUのためのCBFまたはTSFシンタックス要素の値を推測することは、本開示全体にわたってシンタックス要素自体を推測することと呼ぶことがあることに留意されたい。
さらに、場合によっては、CUのTUのY、U、およびV成分は、たとえば、各成分に対応するRQTおよび/または一様なパーティション構造に従って、個々に区分され得る。そのような場合、TSFは、TUのY、U、およびV成分の各々に対応するRQTのノードにおいて与えられ得る。さらに、一様なパーティション構造に従ってTUを分割することによっていくつのサブTUが生じるかを示すシンタックス情報が、Y、U、およびV成分の各々のためのTUについて与えられ得る。
他の例では、CUのTUのY、U、およびV成分は、一緒に、すなわち、共通のRQTおよび/または一様なパーティション構造に従って区分され得る。これらの例では、RQTの対応するノード中のCUの所与のTUについて単一のTSFが含まれ得る。同様に、一様なパーティション構造に従ってTUを分割することによっていくつのサブTUが生じるかを示すシンタックス情報が、Y、U、およびV成分のすべてのためのTUについて含まれ得る。
予測データと残差データとを生成するためのイントラ予測またはインター予測符号化の後に、および変換係数を生成するための(H.264/AVCにおいて使用される変換と同様の4×4または8×8整数変換、あるいは離散コサイン変換DCTなどの)任意の変換の後に、ビデオエンコーダ20は変換係数を量子化し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ただし、nはmよりも大きい。
量子化の後に、たとえば、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディング方法に従って、量子化データのエントロピーコーディングが実行され得る。エントロピーコーディング用に構成された処理ユニット、または別の処理ユニットは、量子化係数のゼロランレングスコーディング、および/またはコード化ブロックパターン(CBP:coded block pattern)値、マクロブロックタイプ、コーディングモード、(フレーム、スライス、マクロブロック、またはシーケンスなどの)コード化ユニットの最大マクロブロックサイズなどのシンタックス情報の生成など、他の処理機能を実行し得る。いくつかのコーディング規格によれば、そのようなシンタックス情報は、前に説明したように、たとえば、RQTを使用して表される、ビデオデータのCUのTUのためのCBFおよびTSFシンタックス要素を含み得る。
最近、ビデオコーディングの焦点が高精細度ビデオと圧縮の改善とのほうへシフトするとともに、より良いコーディング効率を達成するためにより多くのますます高性能な予測モードが導入されるようになり、ビデオデータのコード化CUのためのPUおよびTU区分方式がより精巧になった。本開示は、たとえば、前に説明したように、RQTを使用して示される、TUパーティション情報がシグナリングされる効率を改善するための技法を提供する。
たとえば、CUのTUごとに個々のCBFおよびTSFを与えるのではなく、いくつかの例では、ビデオエンコーダ20は、CUの所与のTUのための1つまたは複数のCBFとTSFとをジョイント符号化し得る。同様に、他の例では、ビデオデコーダ30は、ビデオデコーダ30がそれからTUのための1つまたは複数のCBFとTSFとを判断し得る単一の値を受信するように構成され得る。たとえば、1つまたは複数のCBFとTSFとは、TUに対応するRQTのノード中に含まれ得る。
同様に、いくつかの例では、ビデオエンコーダ20は、CUの所与のTUのサブTUのためのCBFまたはTSFをジョイント符号化し得る。同様に、さらに他の例では、ビデオデコーダ30は、ビデオデコーダ30がそれからサブTUのためのCBFまたはTSFを判断し得る単一の値を受信するように構成され得る。場合によっては、CBFまたはTSFは、サブTUに対応するRQTの複数のノード中に含まれ得る。
いずれの場合も、TUのためのCBFのうちの1つまたは複数とTSFとの値が推測され得るとき、これらのCBFとTSFとは、TUのための残りのCBFおよび/またはTSFとともにジョイントコーディングされる必要はない。同様に、サブTUのためのCBFのうちの1つまたは複数あるいはTSFの値が推測され得るとき、これらのCBFまたはTSFは、サブTUのための残りのCBFまたはTSFとともにジョイントコーディングされる必要はない。このようにして、推測され得ないCBFおよびTSFのみが他のCBFおよび/またはTSFとともにジョイントコーディングされる。
いくつかの例では、ビデオエンコーダ20は、単一のVLCコードワードを使用してTUのための1つまたは複数のCBFとTSFとをジョイント符号化し得る。これらの例では、ビデオデコーダ30が受信するように構成され得る単一の値は、ビデオデコーダ30がTUのための1つまたは複数のCBFとTSFとを判断するために復号し得る、VLCコードワードを備え得る。同様に、他の例では、ビデオエンコーダ20は、同じく単一のVLCコードワードを使用してサブTUのためのCBFまたはTSFをジョイント符号化し得る。一例として、ビデオエンコーダ20は、各サブTUのCBFのいずれもコーディングされない、すなわち、サブTUのCBFの値が推測されるとき、単一のVLCコードワードを使用してサブTUのTSFをジョイント符号化し得る。別の例として、ビデオエンコーダ20は、各サブTUのクロミナンス成分のためのCBFのいずれもコーディングされない、すなわち、サブTUのクロミナンス成分のためのCBFの値が推測されるとき、およびサブTUの各々のためのTSFもコーディングされない、すなわち、サブTUのためのTSFの値も推測されるとき、単一のVLCコードワードを使用して、サブTUの各々のY成分のためのCBFをジョイント符号化し得る。この場合も、これらの例では、ビデオデコーダ30が受信するように構成され得る単一の値は、ビデオデコーダ30がサブTUのためのCBFまたはTSFを判断するために復号し得る、VLCコードワードを備え得る。
前に説明したように、本開示の技法によれば、推測され得ないCBFおよびTSFのみが他のCBFおよび/またはTSFとともにジョイントコーディングされる。さらに、推測され得ないCBFおよびTSFがVLCコードワードを使用してジョイントコーディングされるとき、どのCBFおよびTSFが推測され得るかに応じて異なるVLCテーブルが使用され得る。たとえば、本開示の技法によれば、TUのためのCBFのうちの1つまたは複数とTSFとが推測され得るかどうかに応じて、TUのための1つまたは複数のCBFとTSFとをジョイントコーディングするために異なるVLCテーブルを選択するためのTUの「フラグパターン」が使用され得る。また本開示の技法によれば、サブTUのためのCBFのうちの1つまたは複数あるいはTSFが推測され得るかどうかに応じて、サブTUのためのCBFまたはTSFをジョイントコーディングするために異なるVLCテーブルを選択するための、TUのサブTUの各々のためのフラグパターンが使用され得る。
たとえば、TUのサブTUを含む、TUのフラグパターンが、TUのためのTSF推測可能フラグと、TUの親TUのY、U、およびV成分のためのCBFとを含むように初期に判断され得る。たとえば、TUのためのTSF推測可能フラグは、前に説明した技法を使用してTUのTSFが推測され得るかどうかを示し得る。したがって、フラグパターンは、4つのシングルビット値、たとえば、4つのシングルビットフラグを使用して表され得る。TUのための1つまたは複数のCBFとTSFとをコーディングするための特定のVLCテーブルを選択するために、フラグパターンは、前に説明したように、TUのためのCBFおよびTSFを推測することに適用可能な技法を使用して、1つまたは複数のCBFとTSFとのうちのどれが推測され得、したがって、TUのための残りのCBFおよび/またはTSFとともにジョイントコーディングされないかを示すために使用され得る。同様に、TUのサブTUのためのCBFまたはTSFをコーディングするための特定のVLCテーブルを選択するために、サブTUの各々のためのフラグパターンは、前に説明したように、TUのためのCBFおよびTSFを推測することに適用可能な技法を同じく使用して、サブTUのためのCBFまたはTSFのうちのどれが推測され得、したがって、サブTUのための残りのCBFまたはTSFとともにジョイントコーディングされないかを示すために使用され得る。
たとえば、上記でも説明したように、TUのための所与のCBFが、TUの親TUのための対応するCBFと、場合によっては、TUの兄弟TUのための対応するCBFとに基づいて推測され得る場合、フラグパターン中の対応するビット値は推測を示すように設定され得る(たとえば、「0」)。一方、CBFが推測され得ない場合、対応するビット値はそれに応じて設定され得る(たとえば、「1」)。TUのためのフラグパターン中のTSF推測可能フラグに対応するビット値は同様にして設定され得、たとえば、TUのためのTSFが推測され得る場合、TSF推測可能フラグの対応するビット値は「0」に設定され得、TSFが推測され得ない場合、TSF推測可能フラグの対応するビット値は「1」に設定され得る。したがって、TUのための1つまたは複数のCBFとTSFとをジョイントコーディングする場合、VLCテーブルは、TUのための1つまたは複数のCBFとTSFとのうちのどれが推測され得るか、および1つまたは複数のCBFとTSFとのうちのどれがジョイントコーディングされるかを反映するようにフラグパターンに基づいて選択され得る。同様に、TUのサブTUのためのCBFまたはTSFをジョイントコーディングする場合、VLCテーブルは、サブTUのためのCBFまたはTSFのうちのどれが推測され得るか、およびCBFまたはTSFのうちのどれがジョイントコーディングされるかを反映するようにサブTUの各々のフラグパターンに基づいて選択され得る。
本開示の技法では、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかを示す情報と、TUがサブTUに分割されるかどうかを示す情報との間の、経験的テスト中に発見される相関を利用する。一例として、そのような相関は、ビデオデータのCUのTUのルミナンス成分がコーディングされるかどうかを示す情報と、TUがサブTUに分割されるかどうかを示す情報との間に存在し得る。たとえば、TUがサブTUに分割されるとき、TUのルミナンス成分がコーディングされる可能性があり得る。同様に、TUのルミナンス成分がコーディングされないとき、TUがサブTUに分割されない可能性があり得る。
別の例として、TUの各成分が他の成分とは無関係に区分され(すなわち、各成分が一意のパーティション情報を含み)、成分がコーディングされない場合、TUの成分が、その成分に対応するサブTUに分割されない可能性があり得る。同様に、TUの成分が、その成分に対応するサブTUに分割されるとき、TUの成分がコーディングされる可能性があり得る。
より一般的には、TUのすべての成分が同じ方法で区分され(すなわち、各成分が同じパーティション情報を共有し)、成分がコーディングされない場合、TUがサブTUに分割されない可能性があり得る。同様に、TUがサブTUに分割されるとき、TUの成分の各々がコーディングされる可能性があり得る。
さらに、前に説明したように、ビデオデータのCUの同じTUの成分がコーディングされるかどうかを示す情報の間にも相関関係があり得る。たとえば、TUの1つの成分がコーディングされるとき、TUの他の成分もコーディングされることがあり得る。一例として、そのような相関関係は、ビデオデータのCUのTUのクロミナンス成分がコーディングされるかどうかを示す情報の間に存在し得る。たとえば、TUの第1のクロミナンス成分(たとえば、U)がコーディングされるとき、TUの第2のクロミナンス成分(たとえば、V)がコーディングされる可能性があり得、その逆も同様である。
これらの技法では、シンタックス要素によって表される情報をジョイントコーディングすることによってコード化CBFおよびTSFシンタックス要素に関する圧縮効率を改善するために、この発見された相関を利用し得る。たとえば、上記で説明した相関により、CUのTUのためのCBF値とTSF値のいくつかの組合せは、他の組合せよりも可能性が高くなり得る。単一のVLCコードワードを使用してTUのための1つまたは複数のCBFとTSFとをジョイントコーディングするとき、(たとえば、各々がシングルビットコードワードを備える)個々にコーディングされた1つまたは複数のCBFとTSFとよりも少ないビットを備えるコードワードが、より可能性が高い組合せに割り当てられる場合、圧縮効率は改善され得る。同様に、CUのTUのサブTUのためのCBF値またはTSF値のいくつかの組合せは、他の組合せよりも可能性が高くなり得る。単一のVLCコードワードを使用してサブTUのためのCBFまたはTSFをジョイントコーディングするとき、(たとえば、この場合も、各々がシングルビットコードワードを備える)個々にコーディングされたCBFまたはTSFよりも少ないビットを備えるコードワードが、より可能性が高い組合せに割り当てられる場合、この場合も圧縮効率は改善され得る。
本開示の技法によれば、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとはジョイントコーディングされ得る。一例として、ソースデバイス12のビデオエンコーダ20が、ビデオデータのブロック(たとえば、1つまたは複数のCU)を符号化し得る。ビデオエンコーダ20は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを行うように構成され得る。この例では、ビデオエンコーダ20は、コードワードをビットストリーム中に送るようにさらに構成され得る。
ビデオエンコーダ20はさらに、特定のVLCテーブルを選択するために使用されるTUのための符号化コンテキストを判断するように構成され得る。コンテキストは、TUの様々な特性、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるべきTUの成分の数とのうちの1つまたは複数を含み得る。
ビデオエンコーダ20は、VLCテーブルを選択するための符号化コンテキストを使用し得る。さらに、TUのクロミナンス成分のためのCBFのうちの1つがコーディングされ、別のCBFが推測され、したがって、他のCBFとともにジョイントコーディングされないとき、ビデオエンコーダ20は、どのCBFがコーディングされ、どのCBFが推測されるかにかかわらず、同じVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。また、TUのためのTSFが推測され、したがって、TUのための1つまたは複数のCBFとともにジョイントコーディングされないとき、ビデオエンコーダ20は、TSFが1つまたは複数のCBFとともにコーディングされるときとは異なるVLCテーブルを選択し得る。さらに、ビデオエンコーダ20は、推測されたTSFの値に応じて異なるVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値へのコードワードのマッピングを含み得る。
ビデオエンコーダ20はさらに、VLCテーブルから、TUのための1つまたは複数のCBFとTSFとに対応するコードワードを選択し得る。最後に、ビデオエンコーダ20はTUのためのコードワードを与え得る。この場合も、この例では、ビデオエンコーダ20は、コードワードをビットストリーム中に送るようにさらに構成され得る。
さらに、VLCテーブルについて、ビデオエンコーダ20は、符号化コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてCBF値およびTSF値へのコードワードのマッピングを更新し得る。たとえば、ビデオエンコーダ20は、符号化コンテキストについてCBF値とTSF値との各組合せがどのくらいの頻度で生じるかを追跡し、コードワードが、対応する組合せの可能性に反比例する長さを有するように、各組合せに関連するコードワードを設定し得る。
一例として、ビデオエンコーダ20は、TUのルミナンス成分のためのCBF、たとえば、CBFYと、TUの両方のクロミナンス成分のためのCBF、たとえば、前に説明したCBFCと、TUのためのTSFとをジョイント符号化するように構成され得る。たとえば、成分がTUの第1のクロミナンス成分を備え、TUが第2の異なるクロミナンス成分をさらに備える場合、ビデオエンコーダ20は、第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。この例では、VLCテーブルからコードワードを選択するために、ビデオエンコーダ20は、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかをコードワードが表す、すなわち、TUのCBFCをコードワードが表すという指示をVLCテーブルが与えるようなコードワードを選択するように構成され得る。
クロミナンス成分のうちの少なくとも1つが少なくとも1つの非0係数を含むことをTUのCBFC値が示す場合、ビデオエンコーダ20は、各個々のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示す追加の情報を符号化するようにさらに構成され得る。ただし、いくつかの例では、クロミナンス成分のための2つのCBFのうちの一方の値が推測され得るとき、ビデオエンコーダ20は、追加の情報を符号化しないように構成され得る。
いくつかの例によれば、追加の情報を符号化するために、ビデオエンコーダ20は、個々にTUのクロミナンス成分のためのCBFを符号化するように構成され得る。他の例によれば、ビデオエンコーダ20は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイント符号化することに関して上記で説明したのと同様の方法でTUのクロミナンス成分のためのCBFをジョイント符号化するように構成され得る。たとえば、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含む場合、ビデオエンコーダ20は、第2の異なるVLCテーブルから第2の異なるコードワードを選択するようにさらに構成され得、第2のVLCテーブルは、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを第2のコードワードが表すという指示を与える。ビデオエンコーダ20は、TUのための第2のコードワードを与えるようにさらに構成され得る。この例では、ビデオエンコーダ20は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
この例では、この場合も、ビデオエンコーダ20は、第2のVLCテーブルを選択するために使用されるTUのための第2の異なる符号化コンテキストを判断するように構成され得る。コンテキストは、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数を含み得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法でCBFおよびTSFがそれについて前にジョイント符号化されたCUの他のTUであり得る。いくつかの例では、ビデオエンコーダ20は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じ符号化コンテキストを使用し得、その場合、上記で説明した第1の符号化コンテキストと第2の符号化コンテキストとは同じコンテキストを備え得る。
この場合も、ビデオエンコーダ20は、第2のVLCテーブルを選択するために第2の符号化コンテキストを使用し得る。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。ビデオエンコーダ20はさらに、第2のVLCテーブルから、TUのためのクロミナンスCBF、すなわち、CBFUおよびCBFVに対応する第2のコードワードを選択し得る。最後に、ビデオエンコーダ20は、TUのための第2のコードワードを与え得る。この場合も、この例では、ビデオエンコーダ20は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
さらに、この場合も、第2のVLCテーブルについて、ビデオエンコーダ20は、第2の符号化コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてCBFU値およびCBFV値へのコードワードのマッピングを更新し得る。たとえば、ビデオエンコーダ20は、符号化コンテキストについてCBFU値とCBFV値との各組合せがどのくらいの頻度で生じるかを追跡し、コードワードが、対応する組合せの可能性に反比例する長さを有するように、各組合せに関連するコードワードを設定し得る。
さらに別の例として、TUのサブTUのためのCBFまたはTSFはジョイントコーディングされ得る。たとえば、TUがサブTUに分割される場合、ビデオエンコーダ20は、サブTUがさらなるサブTUに分割されるかどうかを表す第2の異なるコードワードを選択し、サブTUのための第2のコードワードを与えるようにさらに構成され得る。同様に、ビデオエンコーダ20は、TUの成分に対応するサブTUの成分が少なくとも1つの非0係数を含むかどうかを表すような第2のコードワードを選択し、サブTUのための第2のコードワードを与え得る。これらの例では、ビデオエンコーダ20は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
これらの例では、第2のコードワードはまた、VLCコードワードを備え得る。第2のコードワードは、第2の異なる符号化コンテキストを使用して第2の異なるVLCテーブルから選択され得る。たとえば、サブTUのTSFをジョイント符号化するとき、第2の符号化コンテキストはサブTUのCBFの値を含み得る。同様に、サブTUのCBFをジョイント符号化するとき、第2の符号化コンテキストはサブTUのTSFの値を含み得る。
いずれの場合も、ビデオエンコーダ20は、それぞれのVLCコードワードを使用して、TUのためのCBFおよびTSF、および/またはサブTUのためのCBFまたはTSFを含むようにCUを符号化し得る。上記で説明したVLC技法を使用すると、平均な場合、コードワードによって表される個々に符号化されたCBFおよびTSFよりも少ないビットを備えるコードワードが生じ得るので、本開示の技法を使用したとき、コードワードを含むコード化ビットストリームのための相対的なビット節約があり得る。
宛先デバイス14のビデオデコーダ30は、最終的に、ビデオエンコーダ20から、たとえば、モデム28および受信機26を介して符号化ビデオデータ(たとえば、1つまたは複数のCU)を受信し得る。代替的に、ビデオデコーダ30は、CD−ROM、ブルーレイ(登録商標)ディスク、フラッシュドライブ、ハードドライブ、または他の記憶媒体などの記憶媒体から符号化ビデオデータを受信し得る。この場合も、一例として、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとはジョイントコーディングされ得る。本開示の技法によれば、ビデオデコーダ30は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいてTUを復号することとを行うように構成され得る。
いくつかの例では、ビデオデコーダ30は、コードワードを含んでいる特定のVLCテーブルを選択するために、前に説明したように、ビデオエンコーダ20によって使用される方法と実質的に同様の方法でTUのための復号コンテキストを判断するように構成され得る。たとえば、復号コンテキストは、TUの様々な特性、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるTUの成分の数とのうちの1つまたは複数を含み得る。
ビデオデコーダ30は、VLCテーブルを選択するための復号コンテキストを使用し得る。さらに、TUのクロミナンス成分のためのCBFのうちの1つがコーディングされ、別のCBFが推測され、したがって、他のCBFとともにジョイントコーディングされないとき、ビデオデコーダ30は、どのCBFがコーディングされ、どのCBFが推測されるかにかかわらず、同じVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。また、TUのためのTSFが推測され、したがって、TUのための1つまたは複数のCBFとともにジョイントコーディングされないとき、ビデオデコーダ30は、TSFが1つまたは複数のCBFとともにコーディングされるときとは異なるVLCテーブルを選択し得る。さらに、ビデオデコーダ30は、推測されたTSFの値に応じて異なるVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値へのコードワードのマッピングを含み得る。
VLCテーブルを使用して、ビデオデコーダ30は、コードワードに基づいて、TUの1つまたは複数の成分が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうか、およびTUがサブTUに分割されるかどうかを判断し得る。その上、ビデオデコーダ30は、たとえば、VLCテーブル内のマッピングを、TUのための1つまたは複数のCBFとTSFとをジョイント符号化するためにビデオエンコーダ20によって使用される対応するVLCテーブル中のマッピングと合わせるために、復号コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてコードワードとVLCテーブル内のCBF値およびTSF値との間のマッピングを更新し得る。
一例として、ビデオデコーダ30は、ジョイント符号化された、TUのルミナンス成分のためのCBF、たとえば、CBFYと、TUの両方のクロミナンス成分のためのCBF、たとえば、前に説明したCBFCと、TUのためのTSFとを復号するように構成され得る。たとえば、成分がTUの第1のクロミナンス成分を備え、TUが第2の異なるクロミナンス成分をさらに備える場合、ビデオデコーダ30は、コードワードに基づいて、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断する、すなわち、TUのためのCBFCを判断するようにさらに構成され得る。
クロミナンス成分のうちの少なくとも1つが少なくとも1つの非0係数を含むことをTUのCBFC値が示す場合、ビデオデコーダ30は、各個々のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示す追加の情報を復号するようにさらに構成され得る。ただし、いくつかの例では、クロミナンス成分のための2つのCBFのうちの一方の値が推測され得るとき、ビデオデコーダ30は、追加の情報を復号しないように構成され得る。
いくつかの例によれば、追加の情報を復号するために、ビデオデコーダ30は、TUのクロミナンス成分のための個々に符号化されたCBFを復号するように構成され得る。他の例によれば、ビデオデコーダ30は、ビデオデータのCUのTUのためのジョイント符号化された1つまたは複数のCBFとTSFとを復号することに関して上記で説明したのと同様の方法でTUのクロミナンス成分のためのジョイント符号化されたCBFを復号するように構成され得る。
たとえば、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含む場合、コードワードに基づいて、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するために、ビデオデコーダ30は、コードワードに基づいて、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、TUのための第2の異なるコードワードに基づいて、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。ビデオデコーダ30は、第2のコードワードに基づいて、第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。
この例では、この場合も、ビデオデコーダ30は、第2のコードワードを含んでいる第2のVLCテーブルを選択するために、前に説明したように、ビデオエンコーダ20によって使用される方法と実質的に同様の方法でTUのための第2の復号コンテキストを判断するように構成され得る。たとえば、第2の復号コンテキストは、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数を含み得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法で、ジョイント符号化されたCBFおよびTSFがそれについて前に復号されたCUの他のTUであり得る。いくつかの例では、ビデオデコーダ30は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じ復号コンテキストを使用し得、その場合、上記で説明した第1の復号コンテキストと第2の復号コンテキストとは同じコンテキストを備え得る。
ビデオデコーダ30は、第2のVLCテーブルを選択するための第2の復号コンテキストを使用し得る。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。第2のVLCテーブルを使用して、ビデオデコーダ30は、第2のコードワードに基づいて、TUのクロミナンス成分の各々が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかを判断し得る。その上、ビデオデコーダ30は、たとえば、第2のVLCテーブル内のマッピングを、TUのためのCBFUとCBFVとをジョイント符号化するためにビデオエンコーダ20によって使用される対応するVLCテーブル中のマッピングと合わせるために、第2の復号コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてコードワードと第2のVLCテーブル内のCBFU値およびCBFV値との間のマッピングを更新し得る。
さらに別の例として、TUのサブTUのためのCBFまたはTSFはジョイントコーディングされ得る。たとえば、TUがサブTUに分割される場合、ビデオデコーダ30は、サブTUのための第2の異なるコードワードに基づいて、サブTUがさらなるサブTUに分割されるかどうかを判断するように構成され得る。同様に、ビデオデコーダ30は、サブTUのための第2のコードワードに基づいて、TUの成分に対応するサブTUの成分が少なくとも1つの非0係数を含むかどうかを判断するように構成され得る。
これらの例では、第2のコードワードはまた、VLCコードワードを備え得る。第2のコードワードは、第2の異なる復号コンテキストを使用して選択された第2の異なるVLCテーブルを使用してサブTUのCBFまたはTSFを判断するために使用され得る。たとえば、サブTUのためのジョイント符号化されたTSFを復号するとき、第2の復号コンテキストは、サブTUのCBF、たとえば、サブTUのY成分に対応するCBFの値を含み得る。同様に、サブTUのためのジョイント符号化されたCBFを復号するとき、第2の復号コンテキストはサブTUのTSFの値を含み得る。
いずれの場合も、ビデオデコーダ30は、1つまたは複数のコードワードを使用して判断された、TUのためのTSFと1つまたは複数のCBF、および/またはサブTUのためのCBFまたはTSFを使用してCUを復号し得る。この場合も、上記で説明したVLC技法を使用すると、平均な場合、コードワードによって表される個々にコーディングされたCBFおよびTSFよりも少ないビットを備える1つまたは複数のコードワードが生じ得るので、本開示の技法を使用したとき、コードワードを含むコード化ビットストリームのための相対的なビット節約があり得る。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20とビデオデコーダ30の一方または両方と実質的に同様の構成要素は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30と実質的に同様の構成要素を含む装置は、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
このように、ソースデバイス12は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを行うように構成されたビデオエンコーダを含む、ビデオデータを符号化するための装置の一例を表す。
同様に、宛先デバイス14は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいてTUを復号することとを行うように構成されたビデオデコーダを含む、ビデオデータを復号するための装置の一例を表す。
図2は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイント符号化するための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、マクロブロックまたはCU、および/またはパーティションまたはそれのサブパーティションなど、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Intraモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し、単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内のビデオデータの現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、参照フレームストア64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。
符号化プロセス中に、ビデオエンコーダ20はコーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロック(たとえば、LCU)に分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して所与の受信ビデオブロックのインター予測コーディングを実行し得る。イントラ予測ユニット46は、ブロックを符号化するための空間ベースの予測値を与えるために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して所与の受信ビデオブロックのイントラ予測コーディングを実行し得る。
モード選択ユニット40は、たとえば、誤差結果に基づいて、およびコーディングされている所与の受信ブロックを含むフレームまたはスライスのフレームまたはスライスタイプに基づいて、コーディングモード、すなわち、イントラまたはインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照フレームまたは参照スライス中で使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与え得る。概して、イントラ予測は、隣接する、前にコーディングされたブロックに対して現在のブロックを予測することを伴い、一方、インター予測は、現在のブロックを時間的に予測するために、動き推定および動き補償を伴う。
動き推定ユニット42および動き補償ユニット44は、ビデオエンコーダ20のインター予測要素を表す。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する予測参照フレーム(または他のコード化ユニット)内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。概して、動きベクトルは、CUの動きを記述し得るが、場合によっては(たとえば、マージモードを使用してCUがコーディングされるとき)、CUは、別のCUからの動き情報を継承し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。
動き推定ユニット42は、ビデオブロックを参照フレームストア64中の参照フレームのビデオブロックと比較することによってインターコード化フレームのビデオブロックの動きベクトルを計算し得る。動き補償ユニット44はまた、この比較のために、参照フレーム、たとえば、IフレームまたはPフレームのサブ整数ピクセルを補間し得る。一例として、ITU H.264規格には、符号化されている現在のフレームよりも前の表示順序を有する参照フレームを含むリスト0、および符号化されている現在のフレームよりも後の表示順序を有する参照フレームを含むリスト1という2つのリストが記載されている。したがって、参照フレームストア64に記憶されたデータは、これらのリストに従って編成され得る。
動き推定ユニット42は、参照フレームストア64からの1つまたは複数の参照フレームのブロックを現在のフレーム、たとえば、PフレームまたはBフレームの符号化されるべきブロックと比較し得る。参照フレームストア64中の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット42によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット42および/または動き補償ユニット44はまた、サブ整数ピクセル位置の値が参照フレームストア64に記憶されていない場合、参照フレームストア64に記憶された参照フレームのサブ整数ピクセル位置の値を計算するように構成され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送り得る。動きベクトルによって識別される参照フレームブロックは、インター予測ブロック、または、より一般的に、予測ブロックと呼ばれることがある。動き補償ユニット44は、予測ブロックに基づいて予測データを計算し得る。
イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を判断する。イントラ予測ユニット46は、どのイントラ予測モードが現在のブロックにとって最良のレートひずみ値を呈するかを判断するために、様々な符号化されたブロックについてのひずみおよびレートから比を計算し得る。
いくつかの例では、モード選択ユニット40は、変換ユニット52、および/またはビデオエンコーダ20の他のユニットもしくは構成要素とともに、インター予測符号化またはイントラ予測符号化されたCUの1つまたは複数のTUのためのTSFを判断し得る。たとえば、上記で説明したように1つまたは複数のTUのパーティション情報を表すTSFは、CUの1つまたは複数のPUのためのパーティション情報を判断することの一部として判断され得る。したがって、CUのためのTUパーティション情報は、CUのためのPUパーティション情報に依存し得る。たとえば、モード選択ユニット40は、変換ユニット52とともに、CUの予測データを生成することの一部として、CUの1つまたは複数のTUがそれぞれサブTUに分割されるかどうかを判断し得る。さらに、1つまたは複数のTUがそれぞれサブTUに分割されるかどうかはまた、変換ユニット52のプロパティ、たとえば、CUのための最大および最小変換サイズに依存し得る。さらに、エントロピー符号化ユニット56が、1つまたは複数のTUのためのCBFを判断し得る。たとえば、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、1つまたは複数のTUの各々の成分が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかを判断し得る。さらに他の例では、ビデオエンコーダ20の他のユニットまたは構成要素が、CUの1つまたは複数のTUのためのCBFおよびTSFを判断し得る。
いずれの場合も、ビデオエンコーダ20は、レートひずみ最適化プロセスを実行して適切なCU、PU、およびTU区分方式を判断し、判断された区分方式を使用してCUを符号化し得る。ビデオエンコーダ20はまた、いくつかの例では、CUの1つまたは複数のTUのためのCBFおよびTSFの値を判断し得る。モード選択ユニット40は、変換ユニット52とともに、エントロピー符号化ユニット56にTSFを供給し得、エントロピー符号化ユニット56はCBFをも生成し得る。
本開示の技法によれば、以下でより詳細に説明するように、エントロピー符号化ユニット56は、CUのTUのための1つまたは複数のCBFとTSFとをジョイント符号化し得る。また本開示の技法によれば、エントロピー符号化ユニット56は、CUのTUのサブTUのためのCBFまたはTSFをジョイント符号化し得る。
たとえば、イントラ予測またはインター予測を使用して、現在のブロックを予測した後、ビデオエンコーダ20は、コーディングされている元のビデオブロックから、動き補償ユニット44またはイントラ予測ユニット46によって計算された予測データを減算することによって残差ビデオブロックを形成し得る。加算器50は、この減算演算を実行し得る1つまたは複数の構成要素を表す。変換ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成し得る。変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義された変換またはHEVCにおいて使用される変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換、カルーネンレーベ変換(KLT:Karhunen-Loeve Transform)、方向性変換、または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成し得る。変換は、残差情報をピクセル領域から周波数領域などの変換領域に変換し得る。量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化し得る。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。
量子化の後に、エントロピー符号化ユニット56は、量子化変換係数をエントロピーコーディングし得る。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディング技法を実行し得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、符号化されたビデオは、別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。CABACの場合、コンテキストは隣接ブロックおよび/またはブロックサイズに基づき得る。CAVLCの場合、コンテキストは、ビデオデータのコーディングされたブロック、または前にコーディングされた隣接ブロックの様々な特性に基づき得る。
場合によっては、エントロピー符号化ユニット56またはビデオエンコーダ20の別のユニットは、上記で説明したエントロピーコーディングに加えて、他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット56は、ビデオデータのブロックおよびそれのパーティションのCBP値を判断するように構成され得る。また、場合によっては、エントロピー符号化ユニット56はブロック中の係数のランレングスコーディングを実行し得る。特に、エントロピー符号化ユニット56は、ブロック中の変換係数を走査するためにジグザグ走査または他の走査パターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピー符号化ユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。HEVCなど、いくつかのコーディング規格によれば、そのようなシンタックス要素は、前に説明したように、たとえば、RQTを使用して表される、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとを含み得る。
本開示の技法によれば、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとはジョイントコーディングされ得る。一例として、エントロピー符号化ユニット56が、ビデオデータのブロック(たとえば、1つまたは複数のCU)を符号化し得る。エントロピー符号化ユニット56は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを行うように構成され得る。この例では、エントロピー符号化ユニット56は、コードワードをビットストリーム中に送るようにさらに構成され得る。
エントロピー符号化ユニット56はさらに、特定のVLCテーブルを選択するために使用されるTUのための符号化コンテキストを判断するように構成され得る。コンテキストは、TUの様々な特性、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるべきTUの成分の数とのうちの1つまたは複数を含み得る。
エントロピー符号化ユニット56は、VLCテーブルを選択するための符号化コンテキストを使用し得る。さらに、TUのクロミナンス成分のためのCBFのうちの1つがコーディングされ、別のCBFが推測され、したがって、他のCBFとともにジョイントコーディングされないとき、エントロピー符号化ユニット56は、どのCBFがコーディングされ、どのCBFが推測されるかにかかわらず、同じVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。また、TUのためのTSFが推測され、したがって、TUのための1つまたは複数のCBFとともにジョイントコーディングされないとき、エントロピー符号化ユニット56は、TSFが1つまたは複数のCBFとともにコーディングされるときとは異なるVLCテーブルを選択し得る。さらに、エントロピー符号化ユニット56は、推測されたTSFの値に応じて異なるVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値へのコードワードのマッピングを含み得る。
エントロピー符号化ユニット56はさらに、VLCテーブルから、TUのための1つまたは複数のCBFとTSFとに対応するコードワードを選択し得る。最後に、エントロピー符号化ユニット56はTUのためのコードワードを与え得る。この場合も、この例では、エントロピー符号化ユニット56は、コードワードをビットストリーム中に送るようにさらに構成され得る。
さらに、VLCテーブルについて、エントロピー符号化ユニット56は、符号化コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてCBF値およびTSF値へのコードワードのマッピングを更新し得る。たとえば、エントロピー符号化ユニット56は、符号化コンテキストについてCBF値とTSF値との各組合せがどのくらいの頻度で生じるかを追跡し、コードワードが、対応する組合せの可能性に反比例する長さを有するように、各組合せに関連するコードワードを設定し得る。
1つのそのような例として、エントロピー符号化ユニット56は、TUのルミナンス成分のためのCBFと、TUの両方のクロミナンス成分のためのCBF、たとえば、前に説明したCBFCと、TUのためのTSFとをジョイント符号化するように構成され得る。たとえば、成分がTUの第1のクロミナンス成分を備え、TUが第2の異なるクロミナンス成分をさらに備える場合、エントロピー符号化ユニット56は、第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。この例では、VLCテーブルからコードワードを選択するために、エントロピー符号化ユニット56は、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかをコードワードが表す、すなわち、TUのCBFCをコードワードが表すという指示をVLCテーブルが与えるようなコードワードを選択するように構成され得る。
クロミナンス成分のうちの少なくとも1つが少なくとも1つの非0係数を含むことをTUのCBFC値が示す場合、エントロピー符号化ユニット56は、各個々のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示す追加の情報を符号化するようにさらに構成され得る。ただし、いくつかの例では、クロミナンス成分のための2つのCBFのうちの一方の値が推測され得るとき、エントロピー符号化ユニット56は、追加の情報を符号化しないように構成され得る。
いくつかの例によれば、追加の情報をコーディングするために、エントロピー符号化ユニット56は、個々にTUのクロミナンス成分のためのCBFを符号化するように構成され得る。他の例によれば、エントロピー符号化ユニット56は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイント符号化することに関して上記で説明したのと同様の方法でTUのクロミナンス成分のためのCBFをジョイント符号化するように構成され得る。たとえば、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含む場合、エントロピー符号化ユニット56は、第2の異なるVLCテーブルから第2の異なるコードワードを選択するようにさらに構成され得、第2のVLCテーブルは、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを第2のコードワードが表すという指示を与える。エントロピー符号化ユニット56は、TUのための第2のコードワードを与えるようにさらに構成され得る。この例では、エントロピー符号化ユニット56は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
この例では、この場合も、エントロピー符号化ユニット56は、第2のVLCテーブルを選択するために使用されるTUのための第2の異なる符号化コンテキストを判断するように構成され得る。コンテキストは、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数を含み得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法でCBFおよびTSFがそれについて前にジョイント符号化されたCUの他のTUであり得る。いくつかの例では、エントロピー符号化ユニット56は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じ符号化コンテキストを使用し得、その場合、上記で説明した第1の符号化コンテキストと第2の符号化コンテキストとは同じコンテキストを備え得る。
この場合も、エントロピー符号化ユニット56は、第2のVLCテーブルを選択するために第2の符号化コンテキストを使用し得る。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。エントロピー符号化ユニット56はさらに、第2のVLCテーブルから、TUのためのクロミナンスCBF、すなわち、CBFUおよびCBFVに対応する第2のコードワードを選択し得る。最後に、エントロピー符号化ユニット56はTUのための第2のコードワードを与え得る。この場合も、この例では、エントロピー符号化ユニット56は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
さらに、この場合も、第2のVLCテーブルについて、エントロピー符号化ユニット56は、第2の符号化コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてCBFU値およびCBFV値へのコードワードのマッピングを更新し得る。たとえば、エントロピー符号化ユニット56は、符号化コンテキストについてCBFU値とCBFV値との各組合せがどのくらいの頻度で生じるかを追跡し、コードワードが、対応する組合せの可能性に反比例する長さを有するように、各組合せに関連するコードワードを設定し得る。
さらに別の例として、TUのサブTUのためのCBFまたはTSFはジョイントコーディングされ得る。たとえば、TUがサブTUに分割される場合、エントロピー符号化ユニット56は、サブTUがさらなるサブTUに分割されるかどうかを表す第2の異なるコードワードを選択し、サブTUのための第2のコードワードを与えるようにさらに構成され得る。同様に、エントロピー符号化ユニット56は、TUの成分に対応するサブTUの成分が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかを表すような第2のコードワードを選択し、サブTUのための第2のコードワードを与え得る。これらの例では、エントロピー符号化ユニット56は、第2のコードワードをビットストリーム中に送るようにさらに構成され得る。
これらの例では、第2のコードワードはまた、VLCコードワードを備え得る。第2のコードワードは、第2の異なる符号化コンテキストを使用して第2の異なるVLCテーブルから選択され得る。たとえば、サブTUのTSFをジョイント符号化するとき、第2の符号化コンテキストは、サブTUのCBF、たとえば、サブTUのY成分に対応するCBFの値を含み得る。同様に、サブTUのCBFをジョイント符号化するとき、第2の符号化コンテキストはサブTUのTSFの値を含み得る。
表1〜表5に、本開示の技法に従って使用され得るVLCテーブルの例を示す。表1のVLCテーブルは、対応するCBF値およびTSF値を表すために使用される(列「コードワード」に示す)VLCコードワードへの、(列「CUのTUのためのCBFおよびTSF」に示す)ビデオデータのCUのTUのためのCBF値およびTSF値のマッピングを含む。表2のVLCテーブルは、対応するCBFY値、CBFC値、およびTSF値を表すために使用される(列「コードワード」に示す)VLCコードワードへの、(列「CUのTUのためのCBFY、CBFC、およびTSF」に示す)ビデオデータのCUのTUのためのCBFY値、CBFC値、およびTSF値のマッピングを含む。表3のVLCテーブルは、対応するCBFU値およびCBFV値を表すために使用される(列「コードワード」に示す)VLCコードワードへの、(列「CUのTUのためのCBFUおよびCBFV」に示す)ビデオデータのCUのTUのためのCBFU値およびCBFV値のマッピングを含む。最後に、表4および表5のVLCテーブルは、それぞれ、対応するCBF値またはTSF値を表すために同じく使用される(それぞれの列「コードワード」に示す)VLCコードワードへの、(列「CUのTUのサブTUのためのCBF」および列「CUのTUのサブTUのためのTSF」に示す)CUのTUの4つのサブTUのためのCBF値およびTSF値のマッピングを含む。
表1、表2、表4、および表5の各々は、完全なVLCテーブルの抜粋またはサブセットのみを含むことに留意されたい。一例として、表1および表5の各々の完全なVLCテーブルは、通常ならば、TUまたはサブTUのためのすべての可能なCBFおよび/またはTSF値の組合せを表すために、対応する数の、異なるVLCコードワードにマッピングされたCBFおよび/またはTSF値の組合せの最高16個の異なるエントリを含む。別の例として、表2の完全なVLCテーブルは、通常ならば、同じくTUのためのすべての可能なCBF値とTSF値の組合せを表すために、対応する数の、異なるVLCコードワードにマッピングされたCBF値とTSF値の組合せの最高8つの異なるエントリを含む。さらに別の例として、表4の完全なVLCテーブルは、通常ならば、サブTUのためのすべての可能なCBF値の組合せを表すために、対応する数の、異なるVLCコードワードにマッピングされたCBF値の組合せの最高15個の異なるエントリを含む。この例では、0である、たとえば、4つのサブTUの各々の成分のための、すべての4つのCBFに対応するCBF値の組合せは、この組合せがサブTUの親TUの対応する成分のためのCBFによって示され得るので、表4から除外される。
表1の例では、各コードワードが、ビデオデータのCUのTUのための3つのCBFと1つのTSFとを表すと仮定される。他の例では、上記で説明したように、より多いまたはより少ないCBFおよびTSFが表され得る(たとえば、CBF
YとCBF
UとCBF
Vとのサブセット、またはCUのTUのための2つ以上のTSF)。したがって、表1中のコードワードの数は、ジョイント符号化されるCBFとTSFとの数に基づいて変わり得る。このように、表1は、この例で示すエントリよりも多いまたは少ないエントリを有し得る。さらに、表1の例では、列「CUのTUのためのCBFおよびTSF」に関して、「1」のCBF値は、対応する成分が少なくとも1つの非0係数を含む、すなわち、コーディングされることを示し、「0」の値は、成分が非0係数を含まない、すなわち、コーディングされないことを示す。さらに、「1」のTSF値は、TUがサブTUに分割されることを示し、「0」の値は、TUが分割されないことを示す。他の例では、TUの成分がコーディングされるかどうか、およびTUがサブTUに分割されるかどうかを示すために、表1において異なる値が使用され得る。
表1の例を参照すると、ビデオデータのCUのTUについて、TUのすべての成分(すなわち、Y、U、およびV成分)が少なくとも1つの非0係数を含み(したがってコーディングされ)、TUがサブTUに分割されると仮定する。この例では、前に説明したように、少なくとも1つの非0係数を含むCUのTUの成分(すなわち、TUのコード化成分)は「1」のCBF値で示され、サブTUに分割されるTUは「1」のTSF値で示されると仮定すると、モード選択ユニット40は、変換ユニット52とともに、「1」の値を有するTUのためのTSFをエントロピー符号化ユニット56に与え得る。さらに、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、各CBFが同じく「1」の値を有する、TUのためのCBFを判断し得る。表1の例では、TUのすべての成分がコーディングされ(すなわち、少なくとも1つの非0係数を含み)、TUがサブTUに分割される場合は、符号化コンテキスト(すなわち、表1に示すVLCテーブルを選択するために使用されたコンテキスト)が与えられれば、TUのための可能性が最も高い場合であるという仮定をさらに前提とする。したがって、この例では、エントロピー符号化ユニット56は、TUのための1つまたは複数のCBFとTSFとを表すためにコードワード「1」を選択することになる。
表2の例では、各コードワードが、ビデオデータのCUのTUのためのCBF
YとCBF
CとTSFとを表すと仮定する。他の例では、より多いまたはより少ないCBFおよびTSFが表され得る(たとえば、CUのTUのためのCBF
CおよびTSFのみ)。したがって、表2中のコードワードの数は、この場合も、ジョイント符号化されるCBFとTSFとの数に基づいて変わり得、表2は、この例で示すエントリよりも多いまたは少ないエントリを有し得る。この場合も、表2の例では、列「CUのTUのためのCBF
Y、CBF
C、およびTSF」に関して、「1」のCBF値は、対応する成分がコーディングされることを示し、「0」の値は、成分がコーディングされないことを示す。特に、「1」のCBF
C値は、TUのクロミナンス成分のうちの少なくとも1つがコーディングされることを示し、「0」の値は、クロミナンス成分がコーディングされないことを示す。さらに、「1」のTSF値は、TUがサブTUに分割されることを示し、「0」の値は、TUが分割されないことを示す。この場合も、他の例では、TUの成分がコーディングされるかどうか、およびTUがサブTUに分割されるかどうかを示すために、表2において異なる値が使用され得る。
表2の例を参照すると、ビデオデータのCUのTUについて、TUのルミナンス成分(すなわち、Y成分)と、クロミナンス成分(すなわち、UおよびV成分)のうちの少なくとも1つとが少なくとも1つの非0係数を含み、TUがサブTUに分割されると仮定する。この例では、前に説明したように、少なくとも1つの非0係数を含むCUのTUのルミナンス成分と、少なくとも1つの非0係数を含むTUのクロミナンス成分のうちの少なくとも1つは、「1」の対応するCBF値でそれぞれ示され、サブTUに分割されるTUは「1」のTSF値で示されると仮定すると、モード選択ユニット40は、変換ユニット52とともに、「1」の値を有するTUのためのTSFをエントロピー符号化ユニット56に与え得る。さらに、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、各CBFが同じく「1」の値を有する、TUのためのCBFYとCBFCとを判断し得る。表2の例では、TUのルミナンス成分とクロミナンス成分のうちの少なくとも1つとが少なくとも1つの非0係数を含み、TUがサブTUに分割される場合は、「第1の」符号化コンテキスト(すなわち、表2に示すVLCテーブルを選択するために使用された符号化コンテキスト)が与えられれば、TUのための可能性が最も高い場合であるという仮定をさらに前提とする。したがって、この例では、エントロピー符号化ユニット56は、TUのためのCBFYとCBFCとTSFとを表すために、この例では第1のコードワードと呼ばれ得る、コードワード「1」を選択することになる。
表2の例では、クロミナンス成分のうちの少なくとも1つが少なくとも1つの非0係数を含むことをTUのCBFC値が示す場合(たとえば、CBFC=「1」)、エントロピー符号化ユニット56は、以下でさらに詳細に説明する表3の例に示すように、各個々のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示す追加の情報を符号化するようにさらに構成され得る。ただし、いくつかの例では、前に説明したように、クロミナンス成分のための2つのCBFのうちの一方の値が推測され得るとき、エントロピー符号化ユニット56は、追加の情報を符号化しないように構成され得る。
表3の例によれば、追加の情報をコーディングするために、エントロピー符号化ユニット56は、TUのクロミナンス成分のためのCBFをジョイント符号化するように構成され得る。表3の例では、各コードワードが、ビデオデータのCUのTUのためのCBF
UとCBF
Vとを表すと仮定する。この場合も、表3の例では、列「CUのTUのためのCBF
UおよびCBF
V」に関して、「1」のCBF値は、対応する成分が少なくとも1つの非0係数を含むことを示し、「0」の値は、成分が非0係数を含まないことを示す。この場合も、他の例では、TUのクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示すために、表3において異なる値が使用され得る。
表3の例を参照すると、ビデオデータのCUのTUについて、TUのクロミナンス成分の両方(すなわち、U成分とV成分)が少なくとも1つの非0係数を含むと仮定する。この例では、前に説明したように、少なくとも1つの非0係数を含むCUのTUのクロミナンス成分が「1」の対応するCBF値で示されると仮定すると、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、各CBFが「1」の値を有する、TUのためのCBF
UとCBF
Vとを判断し得る。表3の例では、TUの両方のクロミナンス成分が少なくとも1つの非0係数を含む場合は、「第2の」符号化コンテキスト(すなわち、表3に示すVLCテーブルを選択するために使用された符号化コンテキスト)が与えられれば、TUのための可能性が最も高い場合であるという仮定をさらに前提とする。したがって、この例では、エントロピー符号化ユニット56は、TUのためのCBF
UとCBF
Vを表すために、この例では第2のコードワードと呼ばれ得る、コードワード「1」を選択することになる。
最後に、表4および表5の例を参照すると、ビデオデータのCUのTUの4つのサブTUについて、サブTUの各々の成分(たとえば、Y、U、またはV)が少なくとも1つの非0係数を含むか、あるいはサブTUがさらなるサブTUにそれぞれ分割されると仮定する。この例では、この場合も、前に説明したように、少なくとも1つの非0係数を含むCUのTUの成分は「1」のCBF値で示され、サブTUに分割されるTUは「1」のTSF値で示されると仮定すると、モード選択ユニット40は、変換ユニット52とともに、各々が「1」の値を有するサブTUのためのTSFをエントロピー符号化ユニット56に与え得る。代替的に、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、各CBFが同じく「1」の値を有する、成分に対応するサブTUのためのCBFを判断し得る。
サブTUのためのCBFをジョイント符号化する場合、この場合も、CBFに対応するサブTUの各々の特定の成分が少なくとも1つの非0係数を含む場合は、符号化コンテキストが与えられれば、サブTUのための可能性が最も高い場合であると仮定すると、エントロピー符号化ユニット56は、表4から最も短いコードワードを選択し得る。サブTUのためのTSFをジョイント符号化する場合、この場合も、サブTUがさらなるサブTUに分割される場合は、符号化コンテキストが与えられれば、サブTUのための可能性が最も高い場合であると仮定すると、エントロピー符号化ユニット56はまた、表5から最も短いコードワードを選択し得る。いずれの場合も、この例では、エントロピー符号化ユニット56は、サブTUのためのCBFまたはTSFを表すためにコードワード「1」を選択することになる。
以下でさらに詳細に説明する図3のビデオデコーダ30を簡単に参照すると、ビデオデコーダ30は、表1〜表5の例においてビデオエンコーダ20によって選択されたコードワードのうちのいずれか1つに対応するコードワード「1」を最終的に受信し得る。したがって、ビデオデコーダ30は、TUのための1つまたは複数のCBFとTSFとを判断するために、表1または表2、および、場合によっては、表3に示すVLCテーブルと実質的に同様のVLCテーブルを使用してコードワードを復号し得る。同様に、ビデオデコーダ30は、CUのTUのサブTUのためのCBFまたはTSFをそれぞれ判断するために、表4または表5に示すVLCテーブルと実質的に同様のVLCテーブルを使用してコードワードを復号し得る。
一例として、表1を使用して、ビデオデコーダ30は、コードワードに基づいて、TUのすべての成分(すなわち、Y、U、およびV成分)が少なくとも1つの非0係数を含み、TUがサブTUに分割されると判断し得る。同様に、表2または表3を使用して、ビデオデコーダ30は、コードワードに基づいて、それぞれ、TUのルミナンス成分(すなわち、Y成分)とクロミナンス成分(すなわち、U成分およびV成分)のうちの少なくとも1つとが少なくとも1つの非0係数を含み、TUがサブTUに分割されるか、またはクロミナンス成分の両方が少なくとも1つの非0係数を含むと判断し得る。別の例として、表4を使用して、ビデオデコーダ30は、コードワードに基づいて、サブTUの各々の成分(たとえば、Y、U、またはV成分)が少なくとも1つの非0係数を含むと判断し得る。同様に、表5を使用して、ビデオデコーダ30は、コードワードに基づいて、サブTUがそれぞれさらなるサブTUに分割されると判断し得る。これらの例では、ビット節約は、前に説明したように、TUのための1つまたは複数のCBFおよび/またはTSF(たとえば、TUのためのCBFY、CBFU、CBFV、およびTSF、またはCBFUおよびCBFV)、ならびにサブTUのためのCBFまたはTSFを個々に示すために使用される2〜4ビットではなく、シングルビットを備えるコードワードにより達成され得る。
表1〜表5は、CUのTUのためのTSFと1つまたは複数のCBFと、CUのTUのサブTUのためのCBFまたはTSFとを符号化するために使用されるVLCテーブルの例にすぎないことを理解されたい。表1〜表5中のVLCテーブルのマッピングは、本開示の技法に従って使用されるVLCテーブルについて存在し得る多くの可能なマッピングのうちのいくつかの例として与えたものである。
表1のVLCテーブルに示すように、少なくとも1つの非0係数を含むCUのTUのすべての成分と、サブTUに分割されるTUとに対応するCBF値およびTSF値は、VLCテーブル中の最も短いコードワードにマッピングされる。同様に、表2のVLCテーブルに示すように、少なくとも1つの非0係数を含むCUのTUのルミナンス成分とクロミナンス成分のうちの少なくとも1つと、サブTUに分割されるTUとに対応するCBF値およびTSF値は、VLCテーブル中の最も短いコードワードにマッピングされる。さらに、表3のVLCテーブルに示すように、少なくとも1つの非0係数を含むTUの両方のクロミナンス成分に対応するCBF値は、VLCテーブル中の最も短いコードワードにマッピングされる。最後に、表4および表5のVLCテーブルに示すように、少なくとも1つの非0係数を含むCUのTUのすべてのサブTUの成分に対応するCBF値と、さらなるサブTUに分割されるCUのTUのサブTUに対応するTSF値とは、それぞれのVLCテーブル中の最も短いコードワードにマッピングされる。上記の例の各々において、特定のマッピングは、対応するCBFおよび/またはTSF値が、符号化コンテキストのためのVLCテーブルによって定義された候補のうちで可能性が最も高い値であると判断されたことを示す。他の例では、他のCBF値およびTSF値が、可能性が最も高いと判断され得る。たとえば、CUのTUのすべての成分が非0係数を含まないことを示すCBF値と、TUがサブTUに分割されないことを示すTSF値とが、可能性が最も高いと判断され得る。同様に、また、CUのTUのサブTUの各々の成分が非0係数を含まないことを示すCBF値、またはCUのTUのサブTUの各々がさらなるサブTUに分割されないことを示すTSF値が、可能性が最も高いと判断され得る。
その上、異なるVLCテーブルが、TUおよびサブTUのための符号化コンテキストに基づいて、異なるマッピングを与え得る。したがって、選択された異なるVLCテーブルについて、異なるCBFおよび/またはTSF値の相対的可能性を示す対応するマッピングは変化し得、選択された所与のVLCテーブルについて、マッピングは、CUの他のTUと、1つまたは複数の前に符号化されたCUのTUとのためのCBFおよび/またはTSF値に基づいて連続的に更新され得る。
いくつかの例では、上記で説明した、TUまたはサブTUのために判断された複数の符号化コンテキストは、共通のVLCテーブル、たとえば、表1〜表5のいずれか1つに対応し得る。したがって、異なる符号化コンテキストは、それにもかかわらず、TUのための1つまたは複数のCBFおよびTSF、あるいはTUのサブTUのためのCBFまたはTSFをコーディングするために共通のVLCテーブルを使用するという結果になり得、それにより、システムの複雑さとコーディングリソースとが低減され得る。
例として、上記の表1〜表5では、CUのTUのための1つまたは複数のCBFとTSFと、TUのサブTUのためのCBFまたはTSFとを表すために単項(unary)コードワードを利用している。ただし、他の例では、他のタイプの可変長コード、たとえば、指数ゴロム、または他のハフマンコード、または算術コードが使用され得る。いくつかの例では、表1〜表5中のいくつかのコードワードは、たとえば、各コードワードに対応するCBFおよび/またはTSF値の確率がほぼ同じとき、同様のビット長を有し得る。さらに、コードワードの各々が一意に復号可能である(たとえば、コードワードのいずれも、同じテーブル中の別のコードワードのプレフィックスでない)限り、コードワードの任意のセットが表1〜表5のために使用され得る。
ビデオデコーダ20は、1つまたは複数のコードワードを使用して、TUのための1つまたは複数のCBFとTSFと、および/またはサブTUのためのCBFまたはTSFを含むようにCUを符号化し得る。たとえば、エントロピー符号化ユニット56は、上記で説明したように、CUのための符号化されたシンタックス情報の一部として1つまたは複数のコードワードを含み得る。上記で説明したVLCコーディング技法を使用すると、平均な場合、コードワードによって表される個々にコーディングされたCBFおよびTSFよりも少ないビットを備える1つまたは複数のコードワードが生じ得るので、本開示の技法を使用したとき、コードワードを含むコード化ビットストリームのための相対的なビット節約があり得る。
逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームストア64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームストア64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
このように、図2のビデオエンコーダ20は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを行うように構成されたビデオエンコーダを含む、ビデオデータを符号化するための装置の一例を表す。
図3は、ビデオデータのCUのTUのためのジョイント符号化された1つまたは複数のCBFとTSFとを復号するための技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームストア82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得る。イントラ予測ユニット74は、対応するCUについてエントロピー復号ユニット70から受信されたイントラ予測モードに基づいて予測データを生成し得る。
ビデオデコーダ30は、たとえば、ビデオエンコーダ20によって符号化された符号化ビデオデータ(たとえば、1つまたは複数のCU)を受信し得る。代替的に、ビデオデコーダ30は、CD−ROM、ブルーレイディスク、フラッシュドライブ、ハードドライブ、または他の記憶媒体などの記憶媒体から符号化ビデオデータを受信し得る。この場合も、一例として、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとはジョイントコーディングされ得る。本開示の技法によれば、エントロピー復号ユニット70は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいてTUを復号することとを行うように構成され得る。
いくつかの例では、エントロピー復号ユニット70は、コードワードを含んでいる特定のVLCテーブルを選択するために、図2を参照しながら前に説明したように、エントロピー符号化ユニット56によって使用される方法と実質的に同様の方法でTUのための復号コンテキストを判断するように構成され得る。たとえば、復号コンテキストは、TUの様々な特性、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるTUの成分の数とのうちの1つまたは複数を含み得る。
エントロピー復号ユニット70は、VLCテーブルを選択するための復号コンテキストを使用し得る。さらに、TUのクロミナンス成分のためのCBFのうちの1つがコーディングされ、別のCBFが推測され、したがって、他のCBFとともにジョイントコーディングされないとき、エントロピー復号ユニット70は、どのCBFがコーディングされ、どのCBFが推測されるかにかかわらず、同じVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。また、TUのためのTSFが推測され、したがって、TUのための1つまたは複数のCBFとともにジョイントコーディングされないとき、エントロピー復号ユニット70は、TSFが1つまたは複数のCBFとともにコーディングされるときとは異なるVLCテーブルを選択し得る。さらに、エントロピー復号ユニット70は、推測されたTSFの値に応じて異なるVLCテーブルを選択し得る。これらの例では、VLCテーブルは、CBF値へのコードワードのマッピングを含み得る。
VLCテーブルを使用して、エントロピー復号ユニット70は、コードワードに基づいて、TUの1つまたは複数の成分が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうか、およびTUがサブTUに分割されるかどうかを判断し得る。その上、エントロピー復号ユニット70は、たとえば、VLCテーブル内のマッピングを、TUのための1つまたは複数のCBFとTSFとをジョイント符号化するためにビデオエンコーダ20によって使用される対応するVLCテーブル中のマッピングと合わせるために、復号コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてコードワードとVLCテーブル内のCBF値およびTSF値との間のマッピングを更新し得る。
この場合も、一例として、エントロピー復号ユニット70は、ジョイント符号化された、TUのルミナンス成分のためのCBF、たとえば、CBFYと、TUの両方のクロミナンス成分のためのCBF、たとえば、前に説明したCBFCと、TUのためのTSFとを復号するように構成され得る。たとえば、成分がTUの第1のクロミナンス成分を備え、TUが第2の異なるクロミナンス成分をさらに備える場合、エントロピー復号ユニット70は、コードワードに基づいて、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断する、すなわち、TUのためのCBFCを判断するようにさらに構成され得る。
この場合も、クロミナンス成分のうちの少なくとも1つが少なくとも1つの非0係数を含むことをTUのCBFC値が示す場合、エントロピー復号ユニット70は、各個々のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを示す追加の情報を復号するようにさらに構成され得る。ただし、いくつかの例では、クロミナンス成分のための2つのCBFのうちの一方の値が推測され得るとき、エントロピー復号ユニット70は、追加の情報を復号しないように構成され得る。
いくつかの例によれば、追加の情報を復号するために、エントロピー復号ユニット70は、TUのクロミナンス成分のための個々に符号化されたCBFを復号するように構成され得る。他の例によれば、エントロピー復号ユニット70は、ビデオデータのCUのTUのためのジョイント符号化された1つまたは複数のCBFとTSFとを復号することに関して上記で説明したのと同様の方法でTUのクロミナンス成分のためのジョイント符号化されたCBFを復号するように構成され得る。
たとえば、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含む場合、コードワードに基づいて、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するために、エントロピー復号ユニット70は、コードワードに基づいて、第1のクロミナンス成分と第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、TUのための第2の異なるコードワードに基づいて、第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。エントロピー復号ユニット70は、第2のコードワードに基づいて、第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され得る。
この例では、この場合も、エントロピー復号ユニット70は、第2のコードワードを含んでいる第2のVLCテーブルを選択するために、前に説明したように、エントロピー符号化ユニット56によって使用される方法と実質的に同様の方法でTUのための第2の復号コンテキストを判断するように構成され得る。たとえば、第2のコンテキストは、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数を含み得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法で、ジョイント符号化されたCBFおよびTSFがそれについて前に復号されたCUの他のTUであり得る。いくつかの例では、エントロピー復号ユニット70は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じ復号コンテキストを使用し得、その場合、上記で説明した第1の符号化コンテキストと第2の符号化コンテキストとは同じコンテキストを備え得る。
この場合も、エントロピー復号ユニット70は、第2のVLCテーブルを選択するために第2の復号コンテキストを使用し得る。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。第2のVLCテーブルを使用して、エントロピー復号ユニット70は、第2のコードワードに基づいて、TUのクロミナンス成分の各々が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかを判断し得る。その上、エントロピー復号ユニット70は、たとえば、第2のVLCテーブル内のマッピングを、TUのためのCBFUとCBFVとをジョイント符号化するためにエントロピー符号化ユニット56によって使用される対応するVLCテーブル中のマッピングと合わせるために、第2の復号コンテキストに対してどの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてコードワードと第2のVLCテーブル内のCBFU値およびCBFV値との間のマッピングを更新し得る。
この場合も、さらに別の例として、TUのサブTUのためのCBFまたはTSFはジョイントコーディングされ得る。たとえば、TUがサブTUに分割される場合、エントロピー復号ユニット70は、サブTUのための第2の異なるコードワードに基づいて、サブTUがさらなるサブTUに分割されるかどうかを判断するようにさらに構成され得る。同様に、エントロピー復号ユニット70は、サブTUのための第2のコードワードに基づいて、TUの成分に対応するサブTUの成分が少なくとも1つの非0係数を含むかどうかを判断するように構成され得る。
この場合も、これらの例では、第2のコードワードはまた、VLCコードワードを備え得る。第2のコードワードは、第2の異なる復号コンテキストを使用して選択された第2の異なるVLCテーブルを使用してサブTUのCBFまたはTSFを判断するために使用され得る。たとえば、サブTUのためのジョイント符号化されたTSFを復号するとき、第2の復号コンテキストは、サブTUのCBF、たとえば、サブTUのY成分に対応するCBFの値を含み得る。同様に、サブTUのためのジョイント符号化されたCBFを復号するとき、第2の復号コンテキストはサブTUのTSFの値を含み得る。
一例として、図2の表1〜表5のVLCテーブルを再び参照して、エントロピー復号ユニット70によって受信されたビデオデータのCUのTUのコードワードが「1」を備えると仮定する。この例では、エントロピー復号ユニット70は、TUのための1つまたは複数のCBFとTSFとを判断するために、表1、または表2、および、場合によっては、表3に示すコードワードとVLCテーブルとを使用し得る。特に、この例では、表1は、コードワードが、少なくとも1つの非0係数を含むTUのすべての成分(すなわち、Y、U、およびV成分)と、サブTUに分割されるTUとに対応することを示している。したがって、エントロピー復号ユニット70は、表1に対応する復号コンテキストを有するCUのTUについて、および値「1」を有するTUのために受信されたコードワードについて、TUのすべての成分が少なくとも1つの非0係数を含み、TUがサブTUに分割されると判断し得る。
同様に、エントロピー復号ユニット70によって受信されたコードワードがTUのための第1のコードワードを備えると仮定する。この例では、表2は、コードワードが、少なくとも1つの非0係数を含むTUのルミナンス成分(すなわち、Y成分)ならびにクロミナンス成分(すなわち、U成分およびV成分)のうちの少なくとも1つと、サブTUに分割されるTUとに対応することを示している。したがって、エントロピー復号ユニット70は、表2に対応する復号コンテキストを有するCUのTUについて、および値「1」を有するTUのために受信された第1のコードワードについて、TUのルミナンス成分とクロミナンス成分のうちの少なくとも1つとが少なくとも1つの非0係数を含み、TUがサブTUに分割されると判断し得る。
さらに、この例では、エントロピー復号ユニット70によって受信されたTUのための第2のコードワードも「1」を備えると仮定する。表3は、第2のコードワードが、少なくとも1つの非0係数を含むTUの両方のクロミナンス成分(すなわち、U成分とV成分)に対応することを示している。したがって、エントロピー復号ユニット70は、表3に対応する復号コンテキストを有するCUのTUについて、および値「1」を有するTUのために受信された第2のコードワードについて、TUのクロミナンス成分の両方が少なくとも1つの非0係数を含むと判断し得る。
別の例として、エントロピー復号ユニット70によって受信されたビデオデータのCUのTUのサブTUのためのコードワードが「1」を備えると仮定する。この例では、表4は、コードワードが、少なくとも1つの非0係数を含むサブTUの各々の成分(たとえば、Y、U、またはV成分)に対応することを示し、表5は、コードワードが、さらなるサブTUに分割されるサブTUの各々に対応することを示す。したがって、この場合、エントロピー復号ユニット70は、表4または表5に対応する復号コンテキストを有するCUのTUのサブTUについて、および値「1」を有するサブTUのために受信されたコードワードについて、表4の場合、サブTUの各々の成分が少なくとも1つの非0係数を含む、すなわち、コーディングされるか、または、表5の場合、サブTUの各々がさらなるサブTUに分割されると判断し得る。
ビデオデコーダ30は、1つまたは複数のコードワードを使用して判断された、TUのための1つまたは複数のCBFとTSFと、および/またはサブTUのためのCBFまたはTSFを使用してCUを復号し得る。一例として、逆変換ユニット78および/または逆量子化ユニット76は、逆変換および逆量子化を実行するために、判断されたCBFを使用して、CUの1つまたは複数のTUのうちのどのTUが、少なくとも1つの非0係数を含む成分を含んでいるかを判断し、判断されたTSFを使用して、1つまたは複数のTUのためのパーティション情報を生成し得る。この場合も、上記で説明したVLCコーディング技法を使用すると、平均な場合、コードワードによって表される個々にコーディングされたCBFおよびTSFよりも少ないビットを備える1つまたは複数のコードワードが生じ得るので、本開示の技法を使用したとき、コードワードを含むコード化ビットストリームのための相対的なビット節約があり得る。
動き補償ユニット72は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア82中の参照フレーム中の予測ブロックを識別し得る。イントラ予測ユニット74は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。
イントラ予測ユニット74は、たとえば、隣接する、前に復号されたブロックのピクセルを使用して、符号化ブロックをイントラ予測するために符号化ブロックのイントラ予測モードの指示を使用し得る。ブロックがインター予測モード符号化される例では、動き補償ユニット72は、符号化ブロックについての動き補償予測データを取り出すために、動きベクトルを定義する情報を受信し得る。いずれの場合も、動き補償ユニット72またはイントラ予測ユニット74は、予測ブロックを定義する情報を加算器80に与え得る。
逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化ブロック係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、たとえば、H.264復号規格によって定義される、またはHMによって実行されるなど、従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を判断するための、各ブロックについてエンコーダ50によって計算される量子化パラメータQPYの使用を含み得る。
逆変換ユニット78は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。上記で説明したように、本開示の技法に従って、CUの1つまたは複数のTUの変換係数がどのように区分されるかを記述するシンタックス情報は、場合によっては他のシンタックス情報とともに、1つまたは複数のTUについてジョイントコーディングされ、本明細書で説明するように逆変換ユニット78によって使用され得る。
動き補償ユニット72は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
動き補償ユニット72は、符号化ブロックのためのシンタックス情報のいくつかを使用して、符号化ビデオシーケンスの(1つまたは複数の)フレームを符号化するために使用されるブロックのサイズと、符号化ビデオシーケンスのフレームまたはスライスの各ブロックがどのように区分されるかを記述するパーティション情報と、各パーティションがどのように符号化されるかを示すモードと、各インター符号化ブロックまたはパーティションのための1つまたは複数の参照フレーム(および参照フレームリスト)と、符号化ビデオシーケンスを復号するための他の情報とを判断する。
加算器80は、残差ブロックを、動き補償ユニット72またはイントラ予測ユニット74によって生成される対応する予測ブロックと合計して、復号ブロックを形成する。必要に応じて、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理し得る。復号ビデオブロックは、次いで、参照フレームストア82に記憶され、参照フレームストア82は、参照ブロックを後続の動き補償に与え、また、(図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号ビデオを生成する。
このように、図3のビデオデコーダ30は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいてTUを復号することとを行うように構成されたビデオデコーダを含む、ビデオデータを復号するための装置の一例を表す。
図4は、ビデオデータのCUのTUの例を示す概念図である。図4に示すように、ビデオフレーム400の現在のCU402は、現在コーディングされているCUを表し得る。たとえば、現在のCU402は、前に説明したように、LCUに関連するCU4分木中のリーフノードに対応する、ビデオフレーム400のLCUのサブCUを表し得る。現在のCU402は、任意のサイズ、たとえば、8×8、16×16、32×32、または64×64を有し得る。図4に示すように、現在のCU402は現在のTU404を含み得、現在のTU404は、Y成分410と、U成分412と、V成分414との各々を含み得る。たとえば、Y成分410は、現在のTU404のルミナンス成分に対応し得、U成分412およびV成分414は、それぞれ現在のTU404の第1のクロミナンス成分および第2のクロミナンス成分に対応し得る。
この例では、図4に示すように、現在のTU404のサイズは現在のCU402のサイズに対応し得る。さらに、Y成分410とU成分412とV成分414との各々のサイズは、現在のTU404のサイズに対応し得る。言い換えれば、Y成分410とU成分412とV成分414との各々のサイズは、現在のCU402のサイズに対応し得る。他の例によれば、現在のTU404ならびに関連するY成分410、U成分412、およびV成分414は、サブTUならびにそれぞれのY、U、およびVサブ成分に区分され得る。たとえば、現在のTU404は4つのサブTUに区分され得、各サブTUは、現在のTU404のY成分410、U成分412、およびV成分414のサブ成分に対応するそれぞれのY、U、およびV成分を含み得る。
図4はまた、ビデオフレーム400の現在のCU402の隣接CU406を示す。図4に示すように、隣接CU406は、ビデオフレーム400において現在のCU402の左側に配置される。他の例では、隣接CU406、または現在のCU402の他の隣接CUは、ビデオフレーム400において現在のCU402の上方に配置され得る。さらに他の例では、現在のCU402の隣接CUは、現在のCU402に隣接する他のロケーションに配置され得る。また、図4に示すように、現在のTU404に関して上記で説明したのと実質的に同様の方法で、隣接CU406は隣接TU408を含み得、隣接TU408は、Y成分416とU成分418とV成分420とを含み得、隣接TU408ならびに関連するY成分416、U成分418、およびV成分420は、サブTUならびにそれぞれのY、U、およびVサブ成分に区分され得る。
現在のTU404を含む現在のCU402の各TUについて、および隣接TU408を含む隣接CU406の各TUについて、それぞれのTUの1つまたは複数の成分、たとえば、Y、U、またはV成分のうちの1つまたは複数が少なくとも1つの非0係数を含むか、すなわち、コーディングされるかどうかと、TUがサブTUに分割されるかどうかとを記述するシンタックス情報が与えられ得る。このシンタックス情報は、概して、上記で説明したように、TUのための1つまたは複数のCBFとTSFとに対応し得る。たとえば、TUのための1つまたは複数のCBFとTSFとは、それぞれ、シングルビット値、たとえば、シングルビットフラグを使用して表され得る。いくつかの例では、CBFのうちの所与の1つの場合、ビデオエンコーダ20は、CBFに対応するTUの成分が少なくとも1つの非0係数を含むことを示すために、対応するシングルビットフラグを「1」の値に設定し、成分が非0係数を含まないことを示すためにフラグを「0」の値に設定し得る。同様に、TSFの場合、ビデオエンコーダ20は、TUがサブTUに分割されることを示すために、対応するシングルビットフラグを「1」の値に設定し、TUが分割されないことを示すためにフラグを「0」の値に設定し得る。
本開示の技法によれば、一例として、ビデオエンコーダ20は、ビデオデータのCUのTU、たとえば、現在のTU404、隣接TU408、あるいは現在のTU404または隣接TU408のサブTUのための1つまたは複数のCBFとTSFとをジョイント符号化し得る。たとえば、現在のTU404のための1つまたは複数のCBFとTSFとをジョイント符号化するとき、ビデオエンコーダ20は、現在のTU404のためのTSFとともに、Y成分410、U成分412、およびV成分414のうちの1つまたは複数に対応する1つまたは複数のCBFをジョイント符号化し得る。前に説明したように、ビデオエンコーダ20は、単一のVLCコードワードを使用して1つまたは複数のCBFとTSFとをジョイント符号化し得る。したがって、ビデオデコーダ30は、単一のVLCコードワードを受信し、コードワードを復号して、現在のTU404のための1つまたは複数のCBFとTSFとを判断し得る。
前にも説明したように、ビデオエンコーダ20は、同じく単一のVLCコードワード、たとえば、第1のコードワードを使用して、現在のTU404のTSFとともに、現在のTU404のためのY成分410に対応するCBF、すなわち、CBFYと、U成分412とV成分414の両方に対応するCBF、すなわち、CBFCとをジョイント符号化し得る。さらに、場合によっては、ビデオエンコーダ20はさらに、別の単一のVLCコードワード、たとえば、第2のコードワードを使用して、U成分412およびV成分414に対応するCBF、すなわち、CBFUおよびCBFVをジョイント符号化し得る。この場合も、ビデオデコーダ30は、1つまたは複数の単一のVLCコードワードを受信し、コードワードを復号して、現在のTU404のための1つまたは複数のCBFとTSFとを判断し得る。
これらの例では、1つまたは複数の単一のVLCコードワードを使用して1つまたは複数のCBFとTSFとをジョイント符号化するために、ビデオエンコーダ20は、現在のTU404の符号化コンテキストに基づいてそれぞれのコードワードを含むVLCテーブルを選択し得る。たとえば、現在のTU404のための、CBFYとCBFCとTSFとを含む、1つまたは複数のCBFとTSFとをジョイント符号化するとき、符号化コンテキストは、現在のTU404に対応するPUの予測モードと、現在のTU404のパーティションレベルと、単一のVLCコードワードによって表されるべき現在のTU404の成分の数とのうちの1つまたは複数を含み得る。さらに、現在のTU404のためのCBFUとCBFVとをジョイント符号化するとき、符号化コンテキストは、現在のCU402のパーティションレベルと、現在のTU404のパーティションレベルと、現在のTU404の隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数を含み得る。この例では、隣接TUは、本明細書で説明するのと同じ方法でルミナンスCBFとクロミナンスCBFとTSFとがそれについて前にジョイント符号化された現在のCU402の他のTUであり得る。ビデオエンコーダ20は、次いで、コードワードが現在のTU404のための1つまたは複数のCBFとTSFとに、またはクロミナンスCBFに対応するという指示をVLCテーブルが与えるように、VLCテーブルからそれぞれの単一のVLCコードワードを選択し、現在のTU404のためのコードワードを与え得る。
同様に、1つまたは複数の単一のVLCコードワードを復号して現在のTU404のための1つまたは複数のCBFとTSFと、またはクロミナンスCBFを判断するために、ビデオデコーダ30はまた、現在のTU404の復号コンテキストに基づいてそれぞれのコードワードを含むVLCテーブルを選択し得、復号コンテキストは符号化コンテキストと実質的に同じであり得る。したがって、ビデオエンコーダ20とビデオデコーダ30とによって選択されるVLCテーブルは実質的に同じであり得る。ビデオデコーダ30は、次いで、1つまたは複数の単一のVLCコードワードに基づいて現在のTU404のための1つまたは複数のCBFとTSFとを判断し、その判断に基づいて現在のTU404を復号し得る。
別の例として、ビデオエンコーダ20は、この場合も、たとえば、現在のTU404、隣接TU408、あるいは現在のTU404または隣接TU408のサブTUなど、CUのTUのサブTUのためのCBFまたはTSFをジョイント符号化し得る。たとえば、現在のTU404のサブTUのためのCBFをジョイント符号化するとき、ビデオエンコーダ20は、現在のTU404のY成分410のサブ成分に対応する、サブTUのそれぞれのY成分に対応するCBFをジョイント符号化し得る。たとえば、ビデオエンコーダ20は、サブTUのY成分のためのそれぞれのCBFのみがコーディングされる、すなわち、サブTUのための他のCBFおよびTSFが推測されるとき、サブTUのCBFをジョイント符号化し得る。同様に、現在のTU404のサブTUのためのTSFをジョイント符号化するとき、ビデオエンコーダ20は、サブTUのCBFのいずれもコーディングされない、すなわち、サブTUのCBFのすべてが推測されるとき、サブTUのTSFをジョイント符号化し得る。
前にも説明したように、ビデオエンコーダ20は、単一のVLCコードワードを使用してサブTUのためのCBFまたはTSFをジョイント符号化し得る。したがって、ビデオデコーダ30は、単一のVLCコードワードを受信し、コードワードを復号して、サブTUのためのCBFまたはTSFを判断し得る。
この例では、単一のVLCコードワードを使用してCBFまたはTSFをジョイント符号化するために、ビデオエンコーダ20は、この場合も、サブTUの符号化コンテキストに基づいてコードワードを含むVLCテーブルを選択し得る。たとえば、サブTUのCBFをジョイント符号化するとき、符号化コンテキストはサブTUのTSFの値を含み得る。同様に、サブTUのTSFをジョイント符号化するとき、符号化コンテキストは、サブTUのCBF、たとえば、サブTUのY成分のためのCBFの値を含み得る。ビデオエンコーダ20は、次いで、コードワードがサブTUのためのCBFまたはTSFに対応するという指示をVLCテーブルが与えるように、VLCテーブルから単一のVLCコードワードを選択し、サブTUのためのコードワードを与え得る。
同様に、単一のVLCコードワードを復号してサブTUのためのCBFまたはTSFを判断するために、ビデオデコーダ30はまた、サブTUの復号コンテキストに基づいてVLCテーブルを選択し得、復号コンテキストは符号化コンテキストと実質的に同じであり得る。したがって、ビデオエンコーダ20とビデオデコーダ30とによって選択されるVLCテーブルは、この場合も実質的に同じであり得る。ビデオデコーダ30は、次いで、単一のVLCコードワードに基づいてサブTUのためのCBFまたはTSFを判断し、その判断に基づいてサブTUを復号し得る。
このようにして、本開示の技法に従って、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングし得る。さらに、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのCUのTUのサブTUのためのCBFまたはTSFをジョイントコーディングし得る。上記で説明したように、これらの技法により、TUのシンタックス要素を個々にコーディングするときよりも相対的に効率的にビデオデータのCUのTUのためのCBFおよびTSFシンタックス要素をコーディングすることが可能になり得る。
図5Aは、ビデオデータのCUのTUの一例を示す概念図である。図5Aに示すように、リーフノードCUの最大TUを表し得るTU500は、サブTU502、504、506、および508に分割され得る。この例では、TU500が2N×2Nピクセルのサイズを有すると仮定する。したがって、サブTU502、504、506、および508の各々はN×Nピクセルのサイズを有し得る。同様に、サブTU504はサブTU510、512、514、および516に分割され得、サブTU510、512、514、および516の各々はN/2×N/2ピクセルのサイズを有し得る。サブTU510、512、514、および516もTU500のサブTUと見なされる。同様に、サブTU516はサブTU518、520、522、および524に分割され得、サブTU518、520、522、および524の各々はN/4×N/4ピクセルのサイズを有し得、以下同様である。したがって、この例では、TU500はサブTUに分割され得、サブTUのいくつかはさらなるサブTUに分割され得る。言い換えれば、TU500は、再帰的にサブTUに分割され得る。
CUのパーティションレベルに関して上記で説明したのと同様の方法で、CUの最大TUと最大TUのサブTUとを含むCUの各TUは、CUのための「最大」TUとも呼ばれるCUのルートノードTUに対応するレベル0から開始して、特定のパーティションレベル(または「深度」)に関連付けられ得る。図5Aの例では、TU500は、CUの最大TUに対応し得、パーティションレベル0に関連付けられ得る。同様に、TU500のサブTU502、504、506、および508はパーティションレベル1に関連付けられ得、サブTU504のサブTU510、512、514、および516はパーティションレベル2に関連付けられ得、サブTU516のサブTU518、520、522、および524はパーティションレベル3に関連付けられ得る。したがって、ビデオデータのCUの1つまたは複数のTUがパーティションレベルを共有し得る。さらに、以下でより詳細に説明するように、CUの1つまたは複数のTUのためのパーティションレベルを示す情報、ならびに他のシンタックス情報は、RQTまたは一様なパーティション構造などのデータ構造を使用して表され得る。
図5Bは、図5AのTU500のためのパーティション情報を表すRQTの一例を示す概念図である。図5Bに示すように、RQT526は、TU500に対応し、パーティションレベル0に関連付けられたルートノード528を含む。同じく図5Bに示すように、RQT526は、子ノードをもたない末端または「リーフ」ノード530、534、536、538、540、542、546、548、550、および552と、それぞれ4つの子ノードを有する中間ノード532および544とを含む。この例では、ルートノード528は、3つのリーフノード530、534、および536と、1つの中間ノード532とを含む、4つの子ノードを有する。この例では、ノード530、532、534、および536は、それぞれTU500のサブTU502、504、506、および508に対応し、それぞれパーティションレベル1に関連付けられる。
ノード532はリーフノードでないので、ノード532は、3つのリーフノード538、540、および542と、1つの中間ノード544とを含む、4つの子ノードを含む。この例では、ノード538、540、542、および544は、それぞれTU500のサブTU510、512、514、および516に対応し、それぞれパーティションレベル2に関連付けられる。中間ノード544は、それぞれTU500のサブTU518、520、522、および524に対応し、それぞれパーティションレベル3に関連付けられた、4つのリーフノード546、548、550、および552を含む。概して、ビデオデータのCUのTUのためのRQTは、RQT526の例よりも多いまたは少ないノードおよび関連するパーティションレベルを含み得る。
図5Cは、ビデオデータのCUのTUのための一様なパーティション構造の一例を示す概念図である。たとえば、TU556は、リーフノードCUの最大TUを表し得る。他の例では、TU556は、CUの最大TUのサブTUを表し得、最大TUは、前に説明したように、RQTに従って区分される。このようにして、本開示の技法によれば、一様なパーティション構造554は、CUの最大TUのための唯一のパーティション構造として使用されるか、または最大TUに関連する図5Bに示したRQTと併せて使用され得る。一例として、最大TUは、一様なパーティション構造554に基づいてサブTUに分割され得る。別の例として、最大TUは、RQTに基づいてサブTUに分割され得、サブTUのうちの1つまたは複数は、一様なパーティション構造554に基づいてさらなるサブTUに分割され得る。いずれの場合も、サブTU558〜588は、一様なパーティション構造554に従って区分されたTU556のサブTUに対応し得る。
本開示の技法によれば、TU(たとえば、CUの最大TU、または最大TUのサブTU)に関連する一様なパーティション構造は、一様なパーティション構造がTUのために使用されることと、一様なパーティション構造に従ってTUがそれに分割されるサブTUの数(たとえば、4、16、64など)とを示すシンタックス情報を使用してビットストリーム中でシグナリングされ得る。たとえば、一様なパーティション構造に従ってTUがそれに分割されるサブTUの数は、サブTUの各々のサイズを示し得る。さらに、いくつかの例では、一様なパーティション構造に従ってTUがそれに分割されるサブTUの数は、RTQに関して上記で説明したのと同様の方法でサブTUのパーティションレベルに対応し得る。概して、ビデオデータのCUの所与のTUのための一様なパーティション構造は、一様なパーティション構造554の例よりも多いまたは少ないパーティションを含み得る。
再び図5Aおよび図5Bを参照すると、RQT526の各ノードは、対応するTUのための1つまたは複数のCBFとTSFとを含み得る。たとえば、前に説明したように、TUのための1つまたは複数のCBFとTSFとは、それぞれ、シングルビット値、たとえば、シングルビットフラグを使用して表され得る。上記で説明したように、いくつかの例では、CBFのうちの所与の1つの場合、ビデオエンコーダ20は、CBFに対応するTUの成分が少なくとも1つの非0係数を含む、すなわち、コーディングされることを示すために、対応するシングルビットフラグを「1」の値に設定し、成分が非0係数を含まない、すなわち、コーディングされないことを示すためにフラグを「0」の値に設定し得る。同様に、TSFの場合、ビデオエンコーダ20は、TUがサブTUに分割されることを示すために、対応するシングルビットフラグを「1」の値に設定し、TUが分割されないことを示すためにフラグを「0」の値に設定し得る。
本開示の技法によれば、一例として、ビデオエンコーダ20は、CUのTU、たとえば、TU500、またはTU500のサブTUのための1つまたは複数のCBFとTSFとをジョイント符号化し得る。前に説明したように、ビデオエンコーダ20は、単一のVLCコードワードを使用して1つまたは複数のCBFとTSFとをジョイント符号化し得、ビデオデコーダ30は、単一のVLCコードワードを受信し、コードワードを復号して、TUのための1つまたは複数のCBFとTSFとを判断し得る。
別の例として、前にも説明したように、ビデオエンコーダ20は、同じく単一のVLCコードワードを使用して、TUのルミナンス成分に対応するCBF、およびTUのTSFとともに、CUのTU、たとえば、TU500、またはTU500のサブTUの両方のクロミナンス成分に対応するCBF、すなわち、CBFCをジョイント符号化し得る。さらに、前にも説明したように、場合によっては、ビデオエンコーダ20はさらに、別の単一のVLCコードワードを使用して、TUのクロミナンス成分に対応するCBFをジョイント符号化し得る。この場合も、ビデオデコーダ30は、1つまたは複数の単一のVLCコードワードを受信し、コードワードを復号して、TUのための1つまたは複数のCBFとTSFとを判断し得る。
さらに別の例として、前にも説明したように、ビデオエンコーダ20は、CUのTUのサブTUのためのCBFまたはTSF、たとえば、TU500のサブTU510、512、514、および516をジョイント符号化し得る。前にも説明したように、ビデオエンコーダ20は、同じく単一のVLCコードワードを使用してCBFまたはTSFをジョイント符号化し得、ビデオデコーダ30は、単一のVLCコードワードを受信し、コードワードを復号して、サブTUのためのCBFまたはTSFを判断し得る。
ビデオエンコーダ20および/またはビデオデコーダ30が、TU、たとえば、TU500またはTU500のサブTUのための1つまたは複数のCBFとTSFとをジョイントコーディングする場合、TUに対応するRQT526のノードは、TUのための1つまたは複数のCBFとTSFとを表す1つまたは複数の単一の値(たとえば、1つまたは複数の単一のVLCコードワード)を含み得る。言い換えれば、1つまたは複数のCBFとTSFとを表す1つまたは複数の単一の値は、元の1つまたは複数のCBFとTSFと同じノードまたはパーティション中に含まれ得る。
ビデオエンコーダ20および/またはビデオデコーダ30が、たとえば、TU500またはTU500のサブTUなど、TUのサブTUのためのCBFまたはTSFをジョイントコーディングする場合、TUに対応するRQT526のノードは、サブTUのためのCBFまたはTSFを表す単一の値(たとえば、単一のVLCコードワード)を含み得る。このようにして、サブTUのためのCBFまたはTSFを表す単一の値は、サブTUの親TUに対応するノード中に含まれ得る。たとえば、TU500に関して、ビデオエンコーダ20および/またはビデオデコーダ30は、それぞれ、RQT526のノード530、532、534、および536に対応する、TU500のサブTU502、504、506、および508のためのCBFまたはTSFをジョイントコーディングし得る。CBFまたはTSFを表す得られた単一の値は、ノード530、532、534、および536の親ノードである、RQT526のルートノード528中に含まれ得る。
このようにして、本開示の技法に従って、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイントコーディングし得る。さらに、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのCUのTUのサブTUのためのCBFまたはTSFをジョイントコーディングし得る。上記で説明したように、これらの技法により、TUのシンタックス要素を個々にコーディングするときよりも相対的に効率的にビデオデータのCUのTUのためのCBFおよびTSFシンタックス要素をコーディングすることが可能になり得る。
図6は、ビデオデータのCUのTUのための1つまたは複数のCBFとTSFとをジョイント符号化するための例示的な方法を示すフローチャートである。図6の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図6の技法について、ビデオエンコーダ20(図1および図2)に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図6に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
初めに、ビデオエンコーダ20がビデオデータのブロックを受信する(600)。このブロックは、上記で説明したように、LCUに関連するCU4分木中のリーフノードに対応する、LCUのサブCUなどのCUに対応し得る。CUは、たとえば、上記でも説明したように、最大TUに関連するRQTに従ってサブTUに分割され得る、CUの最大TUを含む、1つまたは複数のTUを含み得る。このようにして、図6の方法は、CUの最大TUを含む、CUの任意のTUと、最大TUのサブTUとに再帰的に適用され得る。
ビデオエンコーダ20は、さらに、ブロックまたはCUの所与のTUの1つまたは複数の成分がコーディングされるか、すなわち、少なくとも1つの非0係数を含むかどうかを判断する(602)。たとえば、エントロピー符号化ユニット56が、上記で説明したように、CUを符号化するために使用されるシンタックス情報を生成することの一部としてこの判断を行い得、判断の結果は、TUの1つまたは複数の成分のための1つまたは複数のCBFに対応し得る。ビデオエンコーダ20は、さらに、TUがサブTUに分割されるかどうかを判断する(604)。たとえば、この判断は、上記でも説明したように、たとえば、変換ユニット52および/またはビデオエンコーダ20の他のユニットもしくは構成要素とともに、モード選択ユニット40により、CUの予測データを生成することの一部として、CUを符号化するプロセスにおける初期に行われ得る。この判断の結果はTUのTSFに対応し得る。
例として、ビデオエンコーダ20は、TUの1つまたは複数の成分がコーディングされるかどうか、およびTUがサブTUに分割されるかどうかを判断すると仮定すると、ビデオエンコーダ20は、さらに、対応する1つまたは複数のCBFとTSFとの値を判断し得る。たとえば、「1」のCBF値は、対応する成分がコーディングされることを示し得、「0」のCBF値は、成分がコーディングされないことを示し得る。同様に、「1」のTSF値は、TUがサブTUに分割されることを示し得、「0」のTSF値は、TUが分割されないことを示し得る。
ビデオエンコーダ20は、さらに、TUのための1つまたは複数のCBFとTSFとを符号化し得る。たとえば、モード選択ユニット40および/または変換ユニット52が、TSFの値をエントロピー符号化ユニット56に与え得る。上記で説明したように、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部として、1つまたは複数のCBFの値を判断し得る。
TUのための1つまたは複数のCBFとTSFとを符号化するために、エントロピー符号化ユニット56、またはビデオエンコーダ20の別のユニットは、TUのコンテキストを判断する(606)。TUのコンテキストは、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるべきTUの成分の数のうちの1つまたは複数を含み得る。
一例として、エントロピー符号化ユニット56は、モード選択ユニット40から、TUに対応するPUの予測モードを示す情報を受信し得る。この情報は、CUの予測データを生成することの一部として生成され得る。別の例として、エントロピー符号化ユニット56は、CUの他の前に符号化されたTU(たとえば、対応するRQTにおけるTUの親TU)からTUのパーティションレベルを判断し得る。さらに別の例として、エントロピー符号化ユニット56は、CUの他の前に符号化されたTU(たとえば、対応するRQTにおけるTUの親TUおよび兄弟TU)を使用してTUのためのCBFの値が推測され得るかどうかを判断することにより、コードワードによって表されるべきTUの成分の数を判断し得る。
エントロピー符号化ユニット56は、さらに、コンテキストに基づいてVLCテーブルを選択する(608)。たとえば、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。エントロピー符号化ユニット56は、さらに、VLCテーブルから上記の判断を表すコードワードを選択する(610)。すなわち、エントロピー符号化ユニット56は、ブロックのTUの1つまたは複数の成分がコーディングされるかどうか、ならびにTUがサブTUに分割されるかどうかを表すコードワードを選択し得る。たとえば、上記で説明したように、エントロピー符号化ユニット56は、CBF値とTSF値とがコンテキストについてTUについて可能性が最も高い値であるとき、最も短い(たとえば、シングルビット)コードワードを選択し得る。一方、エントロピー符号化ユニット56は、CBF値とTSF値とが可能性が最も高い値でないとき、最も短いコードワード以外のコードワードを選択し得る。たとえば、コードワードは、CBF値とTSF値との可能性、すなわち、コンテキストについてTUについて、TUの1つまたは複数の成分がコーディングされ、TUがサブTUに分割される可能性に反比例する長さ、たとえば、ビット長を有し得る。
いくつかの例では、エントロピー符号化ユニット56は、さらに、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてVLCテーブルを更新する(612)。たとえば、エントロピー符号化ユニット56は、前に説明したように、コンテキストについてより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いVLCコードワードにマッピングされるように、判断されたCBF値およびTSF値に基づいてVLCテーブル内のCBF値およびTSF値へのコードワードのマッピングを更新し得る。
最後に、エントロピー符号化ユニット56は、コードワードをビットストリームに出力する(614)。たとえば、エントロピー符号化ユニット56は、コードワードがTUのための1つまたは複数のCBFとTSFとを表す単一の値を備えるように、TUに対応するRQTのノード中のコードワードを含み得る。
このように、図6の方法は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを含む、ビデオデータを符号化する方法の一例を表す。
図7は、ビデオデータのCUのTUのためのジョイント符号化された1つまたは複数のCBFとTSFとを復号するための例示的な方法を示すフローチャートである。この場合も、図7の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図7の技法について、ビデオデコーダ30(図1および図3)に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図7に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
初めに、ビデオデコーダ30がビデオデータのブロックのTUのためのコードワードを受信する(700)。ビデオデコーダ30はまた、ブロックの予測モードおよび他のシンタックス情報を示すブロックのビデオデータ、たとえば、量子化変換係数および/またはブロックヘッダデータを受信し得る。図6の例示的な方法に関して上記で説明したように、このブロックは、LCUに関連するCU4分木中のリーフノードに対応する、LCUのサブCUなどのCUに対応し得る。CUは、たとえば、上記でも説明したように、最大TUに関連するRQTに従ってサブTUに分割され得る、CUの最大TUを含む、1つまたは複数のTUを含み得る。このようにして、図7の方法は、CUの最大TUを含む、CUの任意のTUと、最大TUのサブTUとに再帰的に適用され得る。上記でも説明したように、コードワードはVLCコードワードを備え得る。
ビデオデコーダ30はさらに、TUのコンテキストを判断する(702)。たとえば、エントロピー復号ユニット70が、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるTUの成分の数とのうちの1つまたは複数に基づいて、エントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのコンテキストを判断し得る。
一例として、エントロピー復号ユニット70は、CUのヘッダデータ内に含まれている受信シンタックス情報からTUに対応するPUの予測モードを判断し得る。別の例として、エントロピー復号ユニット70は、CUの他のTU(たとえば、対応するRQTにおけるTUの親TU)のための前に受信されたコードワードからTUのパーティションレベルを判断し得る。さらに別の例として、エントロピー復号ユニット70は、CUの他のTU(たとえば、対応するRQTにおけるTUの親TUおよび兄弟TU)のための前に受信されたコードワードを使用してTUのためのCBFの値が推測され得るかどうかを判断することにより、コードワードによって表されるTUの成分の数を判断し得る。
エントロピー復号ユニット70は、さらに、コンテキストに基づいてVLCテーブルを選択する(704)。たとえば、VLCテーブルは、CBF値およびTSF値へのコードワードのマッピングを含み得る。エントロピー復号ユニット70は、次いで、コードワードとVLCテーブルとに基づいて、TUの1つまたは複数の成分がコーディングされるか、すなわち、少なくとも1つの非0係数を含むかどうかを判断し得る。さらに、エントロピー復号ユニット70は、コードワードとVLCテーブルとに基づいて、TUがサブTUに分割されるかどうかを判断し得る。たとえば、エントロピー復号ユニット70は、VLCテーブル内の受信コードワードにマッピングされた上記の判断に対応するCBFおよびTSFシンタックス要素の値を取り出し得る。このようにして、エントロピー復号ユニット70は、ブロックのTUの1つまたは複数の成分がコーディングされることをコードワードが示すかどうか(706)、ならびにTUがサブTUに分割されることをコードワードが示すかどうか(708)を判断する。
ビデオデコーダ30のVLCテーブルは、ビデオエンコーダ20のVLCテーブルと実質的に同様であり得る。前に説明したように、エントロピー復号ユニット70は、エントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのコンテキストを判断し得る。したがって、ビデオデコーダ30がコンテキストを使用してVLCテーブルを選択すると、コードワードを選択するためにビデオエンコーダ20によって使用されるVLCテーブルのマッピングと実質的に同様の、CBF値およびTSF値へのVLCコードワードのマッピングを含むVLCテーブルが得られ得る。マッピング間のこの類似性により、ビデオデコーダ30は、コードワードとVLCテーブルとを使用して上記の判断を行うことが可能になり得る。
上記で説明したように、上記の判断の結果は、TUのための1つまたは複数のCBFとTSFとに対応し得る。たとえば、「1」のCBF値は、TUの対応する成分がコーディングされることを示し得、「0」のCBF値は、成分がコーディングされないことを示し得る。同様に、「1」のTSF値は、TUがサブTUに分割されることを示し得、「0」のTSF値は、TUが分割されないことを示し得る。上記でも説明したように、コードワードは、CBF値とTSF値との可能性、すなわち、コンテキストについてTUについて、TUの1つまたは複数の成分がコーディングされ、TUがサブTUに分割される可能性に反比例する長さを有し得る。
最後に、エントロピー復号ユニット70は、上記の判断に基づいてブロックまたはCUを復号する(710)。さらに、いくつかの例では、エントロピー復号ユニット70は、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいてVLCテーブルを更新する(712)。たとえば、エントロピー復号ユニット70は、前に説明したように、コンテキストについてより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いVLCコードワードにマッピングされるように、判断されたCBF値およびTSF値に基づいてVLCテーブル内のCBF値およびTSF値へのコードワードのマッピングを更新し得る。このようにして、ビデオデコーダ30は、VLCテーブル内のマッピングを、TUのための1つまたは複数のCBFとTSFとをジョイント符号化するためにビデオエンコーダ20によって使用されるVLCテーブル内のマッピングと合わせ得る。
このように、図7の方法は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいてTUを復号することとを含む、ビデオデータを復号する方法の一例を表す。
図8は、ビデオデータのCUのTUのためのルミナンスCBFと、クロミナンスCBFと、TSFとをジョイント符号化するための例示的な方法を示すフローチャートである。この場合も、図8の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図8の技法について、ビデオエンコーダ20(図1および図2)に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図8に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
初めに、ビデオエンコーダ20がビデオデータのブロックを受信する(800)。上記で説明したように、このブロックは、LCUに関連するCU4分木中のリーフノードに対応する、LCUのサブCUなどのCUに対応し得る。上記でも説明したように、CUは、たとえば、最大TUに関連するRQTに従ってサブTUに分割され得る、CUの最大TUを含む、1つまたは複数のTUを含み得る。このようにして、図8の方法は、CUの最大TUを含む、CUの任意のTUと、最大TUのサブTUとに再帰的に適用され得る。
ビデオエンコーダ20は、さらに、ブロックまたはCUの所与のTUの第1のクロミナンス成分または第2のクロミナンス成分がコーディングされるか、すなわち、少なくとも1つの非0係数を含むかどうかを判断する(802)。たとえば、エントロピー符号化ユニット56が、CUを符号化するために使用されるシンタックス情報を生成することの一部として、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるかどうかを判断し得る。
エントロピー符号化ユニット56は、たとえば、CBFUとCBFVとに対応する、TUの第1のクロミナンス成分と第2のクロミナンス成分とのためのCBFの前に判断された値のビット単位での「論理和」をとることによってこの判断を行い得、UおよびVは、それぞれ第1のクロミナンス成分および第2のクロミナンス成分を指す。他の例では、エントロピー符号化ユニット56は、他の技法を使用して、たとえば、この判断を直接行うことによってこの判断を行い得る。いずれの場合も、この判断の結果は、TUのクロミナンスCBF、たとえば、CBFCに対応し得、CBFCは、CBFU|CBFVを表し得、「|」はビット単位での「論理和」演算子を指す。
いくつかの例では、ビデオエンコーダ20は、さらに、TUのルミナンス成分がコーディングされるかどうかを判断する(804)。TUの第1のクロミナンス成分と第2のクロミナンス成分とに関して上記で説明したのと同様の方法で、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部としてこの判断を行い得る。たとえば、この判断の結果は、TUのルミナンスCBF、たとえば、CBFYに対応し得、Yはルミナンス成分を指す。
ビデオエンコーダ20は、さらに、TUがサブTUに分割されるかどうかを判断する(806)。上記で説明したように、この判断は、たとえば、変換ユニット52とともに、モード選択ユニット40により、CUの予測データを生成することの一部として、CUを符号化するプロセスにおける初期に行われ得、判断の結果はTUのTSFに対応し得る。
この場合も、例として、ビデオエンコーダ20は、TUのルミナンス成分がコーディングされるかどうか、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるかどうか、ならびにTUがサブTUに分割されるかどうかを判断すると仮定すると、ビデオエンコーダ20は、対応するCBFY、CBFC、およびTSFの値をさらに判断し得る。たとえば、「1」のCBFY値は、TUのルミナンス成分がコーディングされることを示し得、「0」のCBFY値は、ルミナンス成分がコーディングされないことを示し得る。同様に、「1」のCBFC値は、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされることを示し得、「0」のCBFC値は、第1のクロミナンス成分および第2のクロミナンス成分がコーディングされないことを示し得る。さらに、「1」のTSF値は、TUがサブTUに分割されることを示し得、「0」のTSF値は、TUが分割されないことを示し得る。
ビデオエンコーダ20はさらに、TUのCBFY、CBFC、およびTSFをジョイント符号化し得る。上記で説明したように、たとえば、モード選択ユニット40および/または変換ユニット52が、TSFの値をエントロピー符号化ユニット56に与え得、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部としてCBFYおよびCBFCの値を判断し得る。
TUのCBFY、CBFC、およびTSFをジョイント符号化するために、エントロピー符号化ユニット56、またはビデオエンコーダ20の別のユニットは、TUのための第1のコンテキストを判断する(808)。図6〜図7を参照しながら上記で説明したのと同様の方法で、CUのための第1のコンテキストは、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるべきTUの成分の数のうちの1つまたは複数を含み得る。
この場合も、一例として、エントロピー符号化ユニット56は、モード選択ユニット40から、TUに対応するPUの予測モードを示す情報を受信し得る。この情報は、CUの予測データを生成することの一部として生成され得る。別の例として、エントロピー符号化ユニット56は、CUの他の前に符号化されたTU(たとえば、対応するRQTにおけるTUの親TU)からTUのパーティションレベルを判断し得る。さらに別の例として、エントロピー符号化ユニット56は、CUの他の前に符号化されたTU(たとえば、対応するRQTにおけるTUの親TUおよび兄弟TU)を使用してTUのためのCBFの値が推測され得るかどうかを判断することにより、コードワードによって表されるべきTUの成分の数を判断し得る。
エントロピー符号化ユニット56は、さらに、第1のコンテキストに基づいて第1のVLCテーブルを選択する(810)。たとえば、第1のVLCテーブルは、CBFY、CBFC、およびTSF値へのコードワードのマッピングを含み得る。エントロピー符号化ユニット56は、さらに、第1のVLCテーブルから上記の判断を表す第1のコードワードを選択する(812)。たとえば、上記で説明したように、エントロピー符号化ユニット56は、CBFY値とCBFC値とTSF値とが第1のコンテキストについてTUについて可能性が最も高い値を備えるとき、最も短い(たとえば、シングルビット)コードワードを選択し得る。一方、エントロピー符号化ユニット56は、CBFY値とCBFC値とTSF値とが可能性が最も高い値でないとき、最も短いコードワード以外のコードワードを選択し得る。たとえば、選択されたコードワードは、CBFY値とCBFC値とTSF値との可能性、すなわち、この場合も第1のコンテキストについてTUについて、TUのルミナンス成分がコーディングされ、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされ、TUがサブTUに分割される可能性に反比例する長さ、たとえば、ビット長を有し得る。
上記でも説明したように、いくつかの例では、エントロピー符号化ユニット56は、さらに、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいて第1のVLCテーブルを更新する(814)。たとえば、エントロピー符号化ユニット56は、前に説明したように、第1のコンテキスト内でより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いコードワードにマッピングされるように、判断されたCBFY値とCBFC値とTSF値とに基づいて第1のVLCテーブル内のCBFY値とCBFC値とTSF値とへのコードワードのマッピングを更新し得る。
最後に、エントロピー符号化ユニット56は、第1のコードワードをビットストリームに出力する(816)。たとえば、エントロピー符号化ユニット56は、第1のコードワードがTUのためのCBFYとCBFCとTSFとを表す単一の値を備えるように、CUのためのRQTにおける第1のコードワードを含み得る。
上記で説明したように、ビデオエンコーダ20は、ブロックのTUの第1のクロミナンス成分または第2のクロミナンス成分がコーディングされるかどうかを判断し得る(818)。このようにして、ビデオエンコーダ20は、前に説明したように、ブロックのTUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるかどうかを判断し得る。第1のクロミナンス成分と第2のクロミナンス成分の両方がコーディングされない場合、エントロピー符号化ユニット56は、TUのためのルミナンスCBFとクロミナンスCBFとTSFとをジョイント符号化するのを停止し(820)、他のコーディングタスク、たとえば、CUまたは後続のCUのための他のシンタックス要素の符号化に進む。しかしながら、第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされる場合、ビデオエンコーダ20は、第1のクロミナンス成分および第2のクロミナンス成分のうちのどちらがコーディングされるかを示すことによって符号化プロセスを続け得る。
たとえば、エントロピー符号化ユニット56は、第1のクロミナンス成分がコーディングされるかどうかを判断する(822)。エントロピー符号化ユニット56はさらに、第2のクロミナンス成分がコーディングされるかどうかを判断する(824)。上記で説明したように、エントロピー符号化ユニット56は、CUを符号化するために使用されるシンタックス情報を生成することの一部としてこれらの判断を行い得、これらの判断は、それぞれTUのCBFUおよびCBFVに対応し得る。上記でも説明したように、いくつかの例では、これらの判断は、TUのCBFCを判断するために符号化プロセスにおいて前もって行われ得る。他の例では、これらの判断は、符号化プロセスにおける異なるポイントにおいて、たとえば、第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるときのみ行われ得る。
上記で説明したのと同様の方法で、例として、ビデオエンコーダ20は、TUの第1のクロミナンス成分および第2のクロミナンス成分がコーディングされるかどうかを判断すると仮定すると、ビデオエンコーダ20は、対応するCBFUおよびCBFVの値をさらに判断し得る。この場合も、たとえば、「1」のCBF値は、TUの対応するクロミナンス成分がコーディングされることを示し得、「0」のCBF値は、クロミナンス成分がコーディングされないことを示し得る。
ビデオエンコーダ20は、さらに、TUの第1のクロミナンス成分および第2のクロミナンス成分がコーディングされるかどうかの指示を与え得る。いくつかの例では、ビデオエンコーダ20は、ビットストリーム中でTUのCBFUおよびCBFVを明示的にシグナリングすることによってこの指示を与え得、各CBFは個々にシグナリングされる。他の例では、ビデオエンコーダ20は、TUのCBFYとCBFCとTSFとをジョイント符号化することに関して上記で説明したのと実質的に同様の方法でTUのCBFUおよびCBFVをジョイント符号化することによってこの指示を与え得る。
TUのCBFUおよびCBFVをジョイント符号化するために、エントロピー符号化ユニット56、またはビデオエンコーダ20の別のユニットは、TUのための第2のコンテキストを判断する(826)。たとえば、エントロピー符号化ユニット56は、たとえば、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数に基づいてTUのための第2のコンテキストを判断し得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法でルミナンスCBFとクロミナンスCBFとTSFとがそれについて前にジョイント符号化されたCUの他のTUであり得る。一例として、エントロピー符号化ユニット56は、前に説明したように、たとえば、CUのLCUに関連するCU4分木に対応する、CUを符号化するために使用されるシンタックス情報を生成することの一部としてCUのパーティションレベルを判断し得る。
エントロピー符号化ユニット56は、さらに、第2のコンテキストに基づいて第2のVLCテーブルを選択する(828)。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。いくつかの例では、エントロピーコーディングユニット56は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じコンテキストを使用し得、その場合、上記で説明した第1のコンテキストと第2のコンテキストとは同じコンテキストを備え得る。
エントロピー符号化ユニット56は、さらに、第2のVLCテーブルから、第1のクロミナンス成分および第2のクロミナンス成分についての上記の判断を表す第2のコードワードを選択する(830)。たとえば、上記で説明したように、エントロピー符号化ユニット56は、CBFU値およびCBFV値が第2のコンテキストについてTUについて可能性が最も高い値を備えるとき、最も短い(たとえば、シングルビット)コードワードを選択し得る。一方、エントロピー符号化ユニット56は、CBFU値およびCBFV値が可能性が最も高い値でないとき、最も短いコードワード以外のコードワードを選択し得る。この場合も、たとえば、第2のコードワードは、CBFU値およびCBFV値の可能性、すなわち、この場合も第2のコンテキストについてTUについて、TUの第1のクロミナンス成分および第2のクロミナンス成分がコーディングされる可能性に反比例する長さ、たとえば、ビット長を有し得る。
上記で説明したように、いくつかの例では、エントロピー符号化ユニット56は、さらに、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいて第2のVLCテーブルを更新する(832)。たとえば、エントロピー符号化ユニット56は、前に説明したように、第2のコンテキスト内でより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いコードワードにマッピングされるように、判断されたCBFU値およびCBFV値に基づいて第2のVLCテーブル内のCBFU値およびCBFV値へのコードワードのマッピングを更新し得る。
最後に、エントロピー符号化ユニット56は、第2のコードワードをビットストリームに出力する(834)。たとえば、エントロピー符号化ユニット56は、第2のコードワードがTUのCBFUとCBFVとを表す単一の値を備えるように、第1のコードワードとともに、CUのためのRQTにおける第2のコードワードを含み得る。エントロピー符号化ユニット56は、次いで、TUのためのルミナンスCBFとクロミナンスCBFとTSFとをジョイント符号化するのを停止し(820)、他のコーディングタスク、たとえば、CUまたは後続のCUのための他のシンタックス要素の符号化に進む。
このように、図8の方法は、ビデオデータのCUのTUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、TUがサブTUに分割されるかどうかを判断することと、VLCテーブルからコードワードを選択することであって、VLCテーブルは、コードワードが判断に対応するという指示を与える、選択することと、TUのためのコードワードを与えることとを含む、ビデオデータを符号化する方法の一例を表す。
図9は、ビデオデータのCUのTUのためのジョイント符号化されたルミナンスCBFと、クロミナンスCBFと、TSFとを復号するための例示的な方法を示すフローチャートである。この場合も、図9の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図9の技法について、ビデオデコーダ30(図1および図3)に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図9に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
初めに、ビデオデコーダ30がビデオデータのブロックのTUのための第1のコードワードを受信する(900)。上記で説明したように、ビデオデコーダ30はまた、たとえば、ブロックの予測モードおよび他のシンタックス情報を示す、量子化変換係数および/またはブロックヘッダデータなど、ブロックのビデオデータを受信し得る。上記でも説明したように、このブロックは、LCUに関連するCU4分木中のリーフノードに対応する、LCUのサブCUなどのCUに対応し得る。CUは、たとえば、上記でも説明したように、最大TUに関連するRQTに従ってサブTUに分割され得る、CUの最大TUを含む、1つまたは複数のTUを含み得る。このようにして、図9の方法は、CUの最大TUを含む、CUの任意のTUと、最大TUのサブTUとに再帰的に適用され得る。上記でも説明したように、第1のコードワードはVLCコードワードを備え得る。
ビデオデコーダ30はさらに、TUのための第1のコンテキストを判断する(902)。たとえば、エントロピー復号ユニット70が、たとえば、TUに対応するPUの予測モードと、TUのパーティションレベルと、コードワードによって表されるTUの成分の数とのうちの1つまたは複数に基づいて、図8のエントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのための第1のコンテキストを判断し得る。
一例として、エントロピー復号ユニット70は、CUのヘッダデータ内に含まれている受信シンタックス情報からTUに対応するPUの予測モードを判断し得る。別の例として、エントロピー復号ユニット70は、CUの他のTU(たとえば、対応するRQTにおけるTUの親TU)のための前に受信されたコードワードからTUのパーティションレベルを判断し得る。さらに別の例として、エントロピー復号ユニット70は、CUの他のTU(たとえば、対応するRQTにおけるTUの親TUおよび兄弟TU)のための前に受信されたコードワードを使用して推測を行うことにより、コードワードによって表されるTUの成分の数を判断し得る。
エントロピー復号ユニット70は、さらに、第1のコンテキストに基づいて第1のVLCテーブルを選択する(904)。たとえば、第1のVLCテーブルは、CBFY、CBFC、およびTSF値へのコードワードのマッピングを含み得る。エントロピー復号ユニット70は、さらに、第1のコードワードと第1のVLCテーブルとに基づいて、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるか、すなわち、少なくとも1つの非0係数を含むかどうかを判断し得る。いくつかの例では、エントロピー復号ユニット70は、さらに、第1のコードワードと第1のVLCテーブルとに基づいて、TUのルミナンス成分がコーディングされるかどうかを判断し得る。エントロピー復号ユニット70は、さらに、第1のコードワードと第1のVLCテーブルとに基づいて、TUがサブTUに分割されるかどうかを判断し得る。たとえば、エントロピー復号ユニット70は、第1のVLCテーブル内の受信された第1のコードワードにマッピングされた上記の判断に対応するCBFY、CBFC、およびTSFシンタックス要素の値を取り出し得る。このようにして、エントロピー復号ユニット70は、ブロックのTUの第1のクロミナンス成分または第2のクロミナンス成分がコーディングされることを第1のコードワードが示すかどうか(906)、TUのルミナンス成分がコーディングされることを第1のコードワードが示すかどうか(908)、およびTUがサブTUに分割されることを第1のコードワードが示すかどうか(910)を判断する。
この場合も、ビデオデコーダ30のVLCテーブルは、ビデオエンコーダ20のVLCテーブルと実質的に同様であり得る。前に説明したように、エントロピー復号ユニット70は、図8のエントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのための第1のコンテキストを判断し得る。したがって、ビデオデコーダ30が第1のコンテキストを使用して第1のVLCテーブルを選択すると、第1のコードワードを選択するためにビデオエンコーダ20によって使用されるVLCテーブルのマッピングと実質的に同様の、CBFY値とCBFC値とTSF値とへのVLCコードワードのマッピングを含む第1のVLCテーブルが得られ得る。マッピング間のこの類似性により、ビデオデコーダ30は、第1のコードワードと第1のVLCテーブルとを使用して上記の判断を行うことが可能になり得る。
上記で説明したように、上記の判断の結果は、TUのCBFY、CBFC、およびTSFに対応し得る。たとえば、「1」のCBFY値は、TUのルミナンス成分がコーディングされることを示し得、「0」のCBFY値は、ルミナンス成分がコーディングされないことを示し得る。同様に、「1」のCBFC値は、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされることを示し得、「0」のCBFC値は、第1のクロミナンス成分および第2のクロミナンス成分がコーディングされないことを示し得る。同様に、「1」のTSF値は、TUがサブTUに分割されることを示し得、「0」のTSF値は、TUが分割されないことを示し得る。上記でも説明したように、第1のコードワードは、CBFY値とCBFC値とTSF値との可能性、すなわち、第1のコンテキストについてTUについて、TUのルミナンス成分がコーディングされ、TUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされ、TUがサブTUに分割される可能性に反比例する長さを有し得る。
上記でも説明したように、いくつかの例では、エントロピー復号ユニット70は、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいて第1のVLCテーブルを更新する(912)。たとえば、エントロピー復号ユニット70は、前に説明したように、第1のコンテキスト内でより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いコードワードにマッピングされるように、判断されたCBFY値とCBFC値とTSF値とに基づいて第1のVLCテーブル内のCBFY値とCBFC値とTSF値とへのコードワードのマッピングを更新し得る。
上記で説明したように、ビデオデコーダ30は、ブロックのTUの第1のクロミナンス成分または第2のクロミナンス成分がコーディングされるかどうかを判断する(914)。このようにして、ビデオデコーダ30は、前に説明したように、ブロックのTUの第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされるかどうかを判断し得る。第1のクロミナンス成分と第2のクロミナンス成分の両方がコーディングされない場合、エントロピー復号ユニット70は、TUのためのジョイント符号化されたルミナンスCBFとクロミナンスCBFとTSFとを復号するのを停止し(916)、他のコーディングタスク、たとえば、CUまたは後続のCUのための他のシンタックス要素の復号に進む。しかしながら、第1のクロミナンス成分および第2のクロミナンス成分のうちの少なくとも1つがコーディングされる場合、ビデオデコーダ30は、第1のクロミナンス成分および第2のクロミナンス成分のうちのどちらがコーディングされるかを判断することによって復号プロセスを続け得る。
たとえば、ビデオデコーダ30は、TUの第1のクロミナンス成分および第2のクロミナンス成分がコーディングされるかどうかの指示を受信し得る。いくつかの例では、ビデオデコーダ30は、ビットストリーム中でTUのための明示的にシグナリングされたCBFUおよびCBFVの形態でこの指示を受信し得、各CBFは個々にシグナリングされる。他の例では、ビデオデコーダ30は、TUのためのジョイント符号化されたCBFYとCBFCとTSFとを復号することに関して上記で説明したのと実質的に同様の方法でTUのためのジョイント符号化されたCBFUおよびCBFVの形態でこの指示を受信し得る。
たとえば、エントロピー復号ユニット70は、TUのための第2のコードワードを受信する(918)。第2のコードワードはまた、VLCコードワードを備え得、TUのためのジョイント符号化されたCBFUおよびCBFVに対応し得る。第2のコードワードを復号するために、エントロピー復号ユニット70、またはビデオデコーダ30の別のユニットは、TUのための第2のコンテキストを判断し得る(920)。この場合も、たとえば、エントロピー復号ユニット70は、たとえば、CUのパーティションレベルと、TUのパーティションレベルと、TUに対応するPUの予測モードと、TUの隣接TUの第1のクロミナンス成分および第2のクロミナンス成分に対応するCBF値とのうちの1つまたは複数に基づいて、図8のエントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのための第2のコンテキストを判断し得る。たとえば、隣接TUは、本明細書で説明するのと同じ方法で、ジョイント符号化されたルミナンスCBFとクロミナンスCBFとTSFとがそれについて前に復号されたCUの他のTUであり得る。一例として、エントロピー復号ユニット70は、前に説明したように、たとえば、CUのLCUに関連するCU4分木に対応する、CUのヘッダデータ内に含まれている受信シンタックス情報からCUのパーティションレベルを判断し得る。
エントロピー復号ユニット70は、さらに、第2のコンテキストに基づいて第2のVLCテーブルを選択する(922)。たとえば、第2のVLCテーブルは、CBFU値およびCBFV値へのコードワードのマッピングを含み得る。いくつかの例では、エントロピー復号ユニット70は、第1のVLCテーブルと第2のVLCテーブルの両方を選択するために同じコンテキストを使用し得、その場合、上記で説明した第1のコンテキストと第2のコンテキストとは同じコンテキストを備え得る。
エントロピー復号ユニット70は、次いで、第2のコードワードと第2のVLCテーブルとに基づいて、TUの第1のクロミナンス成分がコーディングされるかどうかを判断し得る。さらに、エントロピー復号ユニット70は、第2のコードワードと第2のVLCテーブルとに基づいて、TUの第2のクロミナンス成分がコーディングされるかどうかを判断し得る。たとえば、エントロピー復号ユニット70は、第2のVLCテーブル内の受信された第2のコードワードにマッピングされた上記の判断に対応するCBFUおよびCBFVシンタックス要素の値を取り出し得る。このようにして、エントロピー復号ユニット70は、TUの第1のクロミナンス成分がコーディングされることを第2のコードワードが示すかどうか(924)、ならびにTUの第2のクロミナンス成分がコーディングされることを第2のコードワードが示すかどうか(926)を判断する。
この場合も、ビデオデコーダ30のVLCテーブルは、ビデオエンコーダ20のVLCテーブルと実質的に同様であり得る。前に説明したように、エントロピー復号ユニット70は、図8のエントロピー符号化ユニット56に関して上記で説明したのと実質的に同様の方法でTUのための第2のコンテキストを判断し得る。したがって、ビデオデコーダ30が第2のコンテキストを使用して第2のVLCテーブルを選択すると、第2のコードワードを選択するためにビデオエンコーダ20によって使用されるVLCテーブルのマッピングと実質的に同様の、CBFU値およびCBFV値へのVLCコードワードのマッピングを含む第2のVLCテーブルが得られ得る。マッピング間のこの類似性により、ビデオデコーダ30は、第2のコードワードと第2のVLCテーブルとを使用して上記の判断を行うことが可能になり得る。
上記で説明したように、上記の判断の結果は、TUのためのCBFUおよびCBFVに対応し得る。たとえば、「1」のCBF値は、TUの対応するクロミナンス成分がコーディングされることを示し得、「0」のCBF値は、クロミナンス成分がコーディングされないことを示し得る。上記でも説明したように、第2のコードワードは、CBFU値およびCBFV値の可能性、すなわち、この場合も第2のコンテキストについてTUについて、TUの第1のクロミナンス成分および第2のクロミナンス成分がコーディングされる可能性に反比例する長さを有し得る。
上記でも説明したように、いくつかの例では、エントロピー復号ユニット70は、さらに、どの判断が行われる可能性が高いかまたは低いかを反映するように、上記の判断に基づいて第2のVLCテーブルを更新し得る(928)。たとえば、エントロピー復号ユニット70は、前に説明したように、第2のコンテキスト内でより頻繁に発生する値が他のあまり頻繁に発生しない値よりも短いコードワードにマッピングされるように、判断されたCBFU値およびCBFV値に基づいて第2のVLCテーブル内のCBFU値およびCBFV値へのコードワードのマッピングを更新し得る。
最後に、ビデオデコーダ30は、TUのためのジョイント符号化されたルミナンスCBFとクロミナンスCBFとTSFとを復号するのを停止し(916)、他のコーディングタスク、たとえば、CUまたは後続のCUのための他のシンタックス要素の復号に進む。
このように、図9の方法は、ビデオデータのCUのTUのコードワードに基づいて、TUの成分が少なくとも1つの非0係数を含むかどうかを判断することと、コードワードに基づいて、TUがサブTUに分割されるかどうかを判断することと、それらの判断に基づいて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つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
ビデオデータを復号する方法であって、前記方法は、
ビデオデータのコーディングユニットの変換ユニットのコードワードに基づいて、前記変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、
前記コードワードに基づいて、前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、
前記判断に基づいて前記変換ユニットを復号することとを備える、方法。
[2]
前記成分が前記変換ユニットの第1の成分を備え、前記方法は、前記コードワードに基づいて、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断することをさらに備える、上記[1]に記載の方法。
[3]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記方法は、前記コードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断することをさらに備える、上記[1]に記載の方法。
[4]
前記コードワードが第1のコードワードを備え、前記第1のコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することは、前記第1のコードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、前記変換ユニットの第2の異なるコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することを備え、前記方法は、
前記第2のコードワードに基づいて、前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することをさらに備える、上記[3]に記載の方法。
[5]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、第2の異なる成分とを含み、前記方法は、
前記親変換ユニットの前記第2の成分が非0係数を含まないとき、前記コードワードと無関係に、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の異なる成分も非0係数を含まないと判断することをさらに備える、上記[1]に記載の方法。
[6]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットの複数のサブ変換ユニットのうちの1つを備え、前記親変換ユニットが、前記複数のサブ変換ユニットのうちの前記1つの前記第1の成分に対応する第1の成分と、第2の異なる成分とを含み、前記方法は、
前記親変換ユニットの前記第2の成分が少なくとも1つの非0係数を含むとき、および前記親変換ユニットの前記第2の成分に対応する前記複数のサブ変換ユニットのうちの前記1つ以外の前記複数のサブ変換ユニットの各々の第2の成分が非0係数を含まないとき、前記コードワードと無関係に、前記親変換ユニットの前記第2の成分に対応する前記複数のサブ変換ユニットのうちの前記1つの第2の異なる成分が少なくとも1つの非0係数を含むと判断することをさらに備える、上記[1]に記載の方法。
[7]
前記変換ユニットのコンテキストに基づいて可変長コードテーブルを選択することであって、前記コンテキストが、前記変換ユニットに対応する予測ユニットの予測モードと、前記変換ユニットのパーティションレベルと、前記コードワードによって表される前記変換ユニットの成分の数とのうちの少なくとも1つを含む、選択することをさらに備え、
前記コードワードに基づいて、前記成分が少なくとも1つの非0係数を含むかどうかを判断することは、前記成分が少なくとも1つの非0係数を含むことを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断することを備え、
前記コードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断することは、前記変換ユニットが前記サブ変換ユニットに分割されることを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断することを備える、上記[1]に記載の方法。
[8]
前記判断に基づいて前記可変長コードテーブルを更新することをさらに備える、上記[7]に記載の方法。
[9]
前記コードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断することは、前記変換ユニットが前記サブ変換ユニットに分割されることを前記コードワードが表すと判断することを備え、前記サブ変換ユニットが前記コーディングユニットのための最小サイズの変換ユニットに対応し、前記方法は、前記サブ変換ユニットのそれぞれのコードワードと無関係に、前記コーディングユニットのための前記最小サイズの変換ユニットに対応する前記サブ変換ユニットに基づいて、前記サブ変換ユニットがさらなるサブ変換ユニットに分割されないと判断することをさらに備える、上記[1]に記載の方法。
[10]
前記変換ユニットが前記コーディングユニットの親変換ユニットの複数のサブ変換ユニットのうちの1つを備え、前記親変換ユニットが前記コーディングユニットの最大許容サイズよりも大きいサイズを有し、前記方法は、前記親変換ユニットのそれぞれのコードワードと無関係に、前記コーディングユニットの前記最大許容サイズよりも大きい前記サイズを有する前記親変換ユニットに基づいて、前記親変換ユニットが前記複数のサブ変換ユニットに分割されると判断することをさらに備える、上記[1]に記載の方法。
[11]
前記コードワードが第1のコードワードを備え、前記第1のコードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断することは、前記変換ユニットが前記サブ変換ユニットに分割されることを前記第1のコードワードが表すと判断することを備え、前記方法は、前記サブ変換ユニットの第2の異なるコードワードに基づいて、前記サブ変換ユニットがさらなるサブ変換ユニットに分割されるかどうかを判断することをさらに備える、上記[1]に記載の方法。
[12]
ビデオデータを復号するための装置であって、前記装置は、ビデオデータのコーディングユニットの変換ユニットのコードワードに基づいて、前記変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、前記コードワードに基づいて、前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、前記判断に基づいて前記変換ユニットを復号することとを行うように構成されたビデオデコーダを備える、装置。
[13]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記ビデオデコーダは、前記コードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成された、上記[12]に記載の装置。
[14]
前記コードワードが第1のコードワードを備え、前記第1のコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するために、前記ビデオデコーダは、前記第1のコードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、前記変換ユニットの第2の異なるコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するように構成され、前記ビデオデコーダは、
前記第2のコードワードに基づいて、前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成された、上記[13]に記載の装置。
[15]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、第2の異なる成分とを含み、前記ビデオデコーダは、前記親変換ユニットの前記第2の成分が非0係数を含まないとき、前記コードワードと無関係に、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の異なる成分も非0係数を含まないと判断するようにさらに構成された、上記[12]に記載の装置。
[16]
前記ビデオデコーダは、前記変換ユニットのコンテキストに基づいて可変長コードテーブルを選択することであって、前記コンテキストが、前記変換ユニットに対応する予測ユニットの予測モードと、前記変換ユニットのパーティションレベルと、前記コードワードによって表される前記変換ユニットの成分の数とのうちの少なくとも1つを含む、選択することを行うようにさらに構成され、前記コードワードに基づいて、前記成分が少なくとも1つの非0係数を含むかどうかを判断するために、前記ビデオデコーダは、前記成分が少なくとも1つの非0係数を含むことを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断するように構成され、前記コードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断するために、前記ビデオデコーダは、前記変換ユニットが前記サブ変換ユニットに分割されることを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断するように構成された、上記[12]に記載の装置。
[17]
前記装置が、
集積回路と、
マイクロプロセッサと、
前記ビデオデコーダを含むワイヤレス通信デバイスとのうちの少なくとも1つを備える、上記[12]に記載の装置。
[18]
ビデオデータを復号するための装置であって、前記装置は、
ビデオデータのコーディングユニットの変換ユニットのコードワードに基づいて、前記変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断するための手段と、
前記コードワードに基づいて、前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断するための手段と、
前記判断に基づいて前記変換ユニットを復号するための手段とを備える、装置。
[19]
前記成分が前記変換ユニットの第1の成分を備え、前記コードワードに基づいて、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断するための手段をさらに備える、上記[18]に記載の装置。
[20]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記コードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断するための手段をさらに備える、上記[18]に記載の装置。
[21]
前記コードワードが第1のコードワードを備え、前記第1のコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するための前記手段は、前記第1のコードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、前記変換ユニットの第2の異なるコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するための手段を備え、
前記第2のコードワードに基づいて、前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するための手段をさらに備える、上記[20]に記載の装置。
[22]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、第2の異なる成分とを含み、
前記親変換ユニットの前記第2の成分が非0係数を含まないとき、前記コードワードと無関係に、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の異なる成分も非0係数を含まないと判断するための手段をさらに備える、上記[18]に記載の装置。
[23]
前記変換ユニットのコンテキストに基づいて可変長コードテーブルを選択するための手段であって、前記コンテキストが、前記変換ユニットに対応する予測ユニットの予測モードと、前記変換ユニットのパーティションレベルと、前記コードワードによって表される前記変換ユニットの成分の数とのうちの少なくとも1つを含む、選択するための手段をさらに備え、
前記コードワードに基づいて、前記成分が少なくとも1つの非0係数を含むかどうかを判断するための前記手段は、前記成分が少なくとも1つの非0係数を含むことを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断するための手段を備え、
前記コードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断するための前記手段は、前記変換ユニットが前記サブ変換ユニットに分割されることを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断するための手段を備える、上記[18]に記載の装置。
[24]
実行されたとき、
ビデオデータのコーディングユニットの変換ユニットのコードワードに基づいて、前記変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、
前記コードワードに基づいて、前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、
前記判断に基づいて前記変換ユニットを復号することとを、ビデオデータを復号するためのデバイスのプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。
[25]
前記成分が前記変換ユニットの第1の成分を備え、前記コードワードに基づいて、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令をさらに備える、上記[24]に記載のコンピュータプログラム製品。
[26]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記コードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令をさらに備える、上記[24]に記載のコンピュータプログラム製品。
[27]
前記コードワードが第1のコードワードを備え、前記第1のコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる前記命令は、前記第1のコードワードに基づいて、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むと判断した後に、前記変換ユニットの前記第2の異なるコードワードに基づいて、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令を備え、前記第2のコードワードに基づいて、前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令をさらに備える、上記[26]に記載のコンピュータプログラム製品。
[28]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、第2の異なる成分とを含み、前記親変換ユニットの前記第2の成分が非0係数を含まないとき、前記コードワードと無関係に、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の異なる成分も非0係数を含まないと判断することを前記プロセッサに行わせる命令をさらに備える、上記[24]に記載のコンピュータプログラム製品。
[29]
前記変換ユニットのコンテキストに基づいて可変長コードテーブルを選択することを前記プロセッサに行わせる命令であって、前記コンテキストが、前記変換ユニットに対応する予測ユニットの予測モードと、前記変換ユニットのパーティションレベルと、前記コードワードによって表される前記変換ユニットの成分の数とのうちの少なくとも1つを含む、命令をさらに備え、
前記コードワードに基づいて、前記成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる前記命令は、前記成分が少なくとも1つの非0係数を含むことを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断することを前記プロセッサに行わせる命令を備え、
前記コードワードに基づいて、前記変換ユニットが前記サブ変換ユニットに分割されるかどうかを判断することを前記プロセッサに行わせる前記命令は、前記変換ユニットが前記サブ変換ユニットに分割されることを前記コードワードが表すことを前記可変長コードテーブルが示すかどうかを判断することを前記プロセッサに行わせる命令を備える、上記[24]に記載のコンピュータプログラム製品。
[30]
ビデオデータを符号化する方法であって、前記方法は、
ビデオデータのコーディングユニットの変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、
前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、
可変長コードテーブルからコードワードを選択することであって、前記可変長コードテーブルは、前記コードワードが前記判断に対応するという指示を与える、選択することと、
前記変換ユニットのための前記コードワードを与えることとを備える、方法。
[31]
前記成分が前記変換ユニットの第1の成分を備え、前記方法は、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断することをさらに備え、前記可変長コードテーブルは、前記コードワードが前記第2の成分についての前記判断に対応することをさらに示す、上記[30]に記載の方法。
[32]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記方法は、
前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することをさらに備え、
前記可変長コードテーブルから前記コードワードを選択することは、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを前記コードワードが表すという指示を前記可変長コードテーブルが与えるように前記コードワードを選択することを備える、上記[30]に記載の方法。
[33]
前記コードワードが第1のコードワードを備え、前記可変長コードテーブルが第1の可変長コードテーブルを備え、前記方法は、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むとき、
第2の異なる可変長コードテーブルから第2の異なるコードワードを選択することであって、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを前記第2のコードワードが表すという指示を前記第2の可変長コードテーブルが与える、選択することと、
前記変換ユニットのための前記第2のコードワードを与えることとをさらに備える、上記[32]に記載の方法。
[34]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、非0係数を含まない第2の異なる成分とを含み、前記可変長コードテーブルが、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の成分の係数の値についての指示を与えない、上記[30]に記載の方法。
[35]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが、前記コーディングユニットの親変換ユニットの複数のサブ変換ユニットのうちの1つを備え、前記親変換ユニットが、前記複数のサブ変換ユニットのうちの前記1つの前記第1の成分に対応する第1の成分と、少なくとも1つの非0係数を含む第2の異なる成分とを含み、前記親変換ユニットの前記第2の成分に対応する前記複数のサブ変換ユニットのうちの前記1つ以外の前記複数のサブ変換ユニットの成分が非0係数を含まず、前記可変長コードテーブルが、前記親変換ユニットの前記第2の成分に対応する前記複数のサブ変換ユニットのうちの前記1つの第2の成分の係数の値についての指示を与えない、上記[30]に記載の方法。
[36]
前記変換ユニットが前記サブ変換ユニットに分割され、前記サブ変換ユニットが前記コーディングユニットのための最小サイズの変換ユニットに対応し、前記方法は、前記それぞれのサブ変換ユニットがさらなるサブ変換ユニットに分割されるかどうかを示さない1つまたは複数の可変長コードテーブルから、前記サブ変換ユニットの1つまたは複数の成分が少なくとも1つの非0係数を含むかどうかを表す1つまたは複数のコードワードを選択することをさらに備える、上記[30]に記載の方法。
[37]
前記変換ユニットが、前記コーディングユニットの親変換ユニットの複数のサブ変換ユニットのうちの1つを備え、前記親変換ユニットが、前記コーディングユニットの最大許容サイズよりも大きいサイズを有し、前記方法は、前記親変換ユニットが前記複数のサブ変換ユニットに分割されるかどうかを示さない1つまたは複数の可変長コードテーブルから、前記親変換ユニットの1つまたは複数の成分が少なくとも1つの非0係数を含むかどうかを表す1つまたは複数のコードワードを選択することをさらに備える、上記[30]に記載の方法。
[38]
前記変換ユニットのコンテキストに基づいて前記可変長コードテーブルを選択することであって、前記コンテキストが、前記変換ユニットに対応する予測ユニットの予測モードと、前記変換ユニットのパーティションレベルと、前記コードワードによって表されるべき前記変換ユニットの成分の数とのうちの少なくとも1つを含む、選択することをさらに備える、上記[30]に記載の方法。
[39]
前記コードワードが第1のコードワードを備え、前記変換ユニットが前記サブ変換ユニットに分割され、前記方法は、
前記サブ変換ユニットがさらなるサブ変換ユニットに分割されるかどうかを表す第2の異なるコードワードを選択することと、
前記サブ変換ユニットのための前記第2のコードワードを与えることとをさらに備える、上記[30]に記載の方法。
[40]
前記判断に基づいて前記可変長コードテーブルを更新することをさらに備える、上記[30]に記載の方法。
[41]
ビデオデータを符号化するための装置であって、前記装置は、
ビデオデータのコーディングユニットの変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、
前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、
可変長コードテーブルからコードワードを選択することであって、前記可変長コードテーブルは、前記コードワードが前記判断に対応するという指示を与える、選択することと、
前記変換ユニットのための前記コードワードを与えることとを行うように構成されたビデオエンコーダを備える、装置。
[42]
前記成分が前記変換ユニットの第1の成分を備え、前記ビデオエンコーダは、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され、前記可変長コードテーブルは、前記コードワードが前記第2の成分についての前記判断に対応することをさらに示す、上記[41]に記載の装置。
[43]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、前記ビデオエンコーダは、前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するようにさらに構成され、前記可変長コードテーブルから前記コードワードを選択するために、前記ビデオエンコーダは、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを前記コードワードが表すという指示を前記可変長コードテーブルが与えるように前記コードワードを選択するように構成された、上記[41]に記載の装置。
[44]
前記コードワードが第1のコードワードを備え、前記可変長コードテーブルが第1の可変長コードテーブルを備え、前記ビデオエンコーダは、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むとき、第2の異なる可変長コードテーブルから第2の異なるコードワードを選択することであって、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを前記第2のコードワードが表すという指示を前記第2の可変長コードテーブルが与える、選択することと、前記変換ユニットのための前記第2のコードワードを与えることとを行うようにさらに構成された、上記[43]に記載の装置。
[45]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、非0係数を含まない第2の異なる成分とを含み、前記可変長コードテーブルが、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の成分の係数の値についての指示を与えない、上記[41]に記載の装置。
[46]
前記装置が、
集積回路と、
マイクロプロセッサと、
前記ビデオエンコーダを含むワイヤレス通信デバイスとのうちの少なくとも1つを備える、上記[41]に記載の装置。
[47]
ビデオデータを符号化するための装置であって、前記装置は、
ビデオデータのコーディングユニットの変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断するための手段と、
前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断するための手段と、
可変長コードテーブルからコードワードを選択するための手段であって、前記可変長コードテーブルは、前記コードワードが前記判断に対応するという指示を与える、選択するための手段と、
前記変換ユニットのための前記コードワードを与えるための手段とを備える、装置。
[48]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断するための手段をさらに備え、前記可変長コードテーブルは、前記コードワードが前記第2の成分についての前記判断に対応することをさらに示す、上記[47]に記載の装置。
[49]
前記成分が前記変換ユニットの第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、
前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断するための手段をさらに備え、
前記可変長コードテーブルから前記コードワードを選択するための前記手段は、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを前記コードワードが表すという指示を前記可変長コードテーブルが与えるように前記コードワードを選択するための手段を備える、上記[47]に記載の装置。
[50]
前記コードワードが第1のコードワードを備え、前記可変長コードテーブルが第1の可変長コードテーブルを備え、
前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むとき、第2の異なる可変長コードテーブルから第2の異なるコードワードを選択するための手段であって、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを前記第2のコードワードが表すという指示を前記第2の可変長コードテーブルが与える、選択するための手段と、
前記変換ユニットのための前記第2のコードワードを与えるための手段とをさらに備える、上記[49]に記載の装置。
[51]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、非0係数を含まない第2の異なる成分とを含み、前記可変長コードテーブルが、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の成分の係数の値についての指示を与えない、上記[47]に記載の装置。
[52]
実行されたとき、
ビデオデータのコーディングユニットの変換ユニットの成分が少なくとも1つの非0係数を含むかどうかを判断することと、
前記変換ユニットがサブ変換ユニットに分割されるかどうかを判断することと、
可変長コードテーブルからコードワードを選択することであって、前記可変長コードテーブルは、前記コードワードが前記判断に対応するという指示を与える、選択することと、
前記変換ユニットのための前記コードワードを与えることとを、ビデオデータを符号化するためのデバイスのプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。
[53]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットの第2の異なる成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令をさらに備え、前記可変長コードテーブルは、前記コードワードが前記第2の成分についての前記判断に対応することをさらに示す、上記[52]に記載のコンピュータプログラム製品。
[54]
前記成分が第1のクロミナンス成分を備え、前記変換ユニットが第2の異なるクロミナンス成分をさらに備え、
前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを判断することを前記プロセッサに行わせる命令をさらに備え、
前記可変長コードテーブルから前記コードワードを選択することを前記プロセッサに行わせる前記命令は、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むかどうかを前記コードワードが表すという指示を前記可変長コードテーブルが与えるように前記コードワードを選択することを前記プロセッサに行わせる命令を備える、上記[52]に記載のコンピュータプログラム製品。
[55]
前記コードワードが第1のコードワードを備え、前記可変長コードテーブルが第1の可変長コードテーブルを備え、前記第1のクロミナンス成分と前記第2のクロミナンス成分とのうちの少なくとも1つが少なくとも1つの非0係数を含むとき、、
第2の異なる可変長コードテーブルから第2の異なるコードワードを選択することであって、前記第1のクロミナンス成分が少なくとも1つの非0係数を含むかどうか、および前記第2のクロミナンス成分が少なくとも1つの非0係数を含むかどうかを前記第2のコードワードが表すという指示を前記第2の可変長コードテーブルが与える、選択することと、
前記変換ユニットのための前記第2のコードワードを与えることとを前記プロセッサに行わせる命令をさらに備える、上記[54]に記載のコンピュータプログラム製品。
[56]
前記成分が前記変換ユニットの第1の成分を備え、前記変換ユニットが前記コーディングユニットの親変換ユニットのサブ変換ユニットを備え、前記親変換ユニットが、前記サブ変換ユニットの前記第1の成分に対応する第1の成分と、非0係数を含まない第2の異なる成分とを含み、前記可変長コードテーブルが、前記親変換ユニットの前記第2の成分に対応する前記サブ変換ユニットの第2の成分の係数の値についての指示を与えない、上記[52]に記載のコンピュータプログラム製品。