(57)【要約】  ビデオデータを復号するための例示的なデバイスは、ビデオデータを記憶するように構成されたメモリと、回路の中に実装された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号することと、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化することと、決定された2次変換を使用してブロックの変換係数を逆変換することとを行うように構成される。
2019515561.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定するステップと、
前記ブロック用の2次変換を表す2値化値を形成するために、前記ブロックの前記2次変換シンタックス要素に対する値をエントロピー復号するステップと、
前記ブロック用の前記2次変換を決定するために、前記最大可能値にかかわらず共通の逆2値化方式を使用して、前記2次変換シンタックス要素に対する前記値を逆2値化するステップと、
前記決定された2次変換を使用して前記ブロックの変換係数を逆変換するステップと
を備える方法。
【請求項２】
前記決定された最大可能値に基づいて、前記2次変換シンタックス要素に対する前記値をエントロピー復号するために使用されるべきコンテキストモデルを決定するステップをさらに備え、前記値をエントロピー復号するステップが、前記決定されたコンテキストモデルを使用して前記値をエントロピー復号するステップを備える、請求項1に記載の方法。
【請求項３】
エントロピー復号するステップが、前記2次変換シンタックス要素に対する前記値の所定数のビットを、前記決定されたコンテキストモデルを使用してコンテキストベースエントロピー復号し、前記2次変換シンタックス要素に対する前記値の残りのビットを、バイパスモードを使用してエントロピー復号するステップを備える、請求項2に記載の方法。
【請求項４】
エントロピー復号するステップが、コンテキストモデリングなしに前記所定数のビット以外のビットをエントロピー復号するステップを備える、請求項3に記載の方法。
【請求項５】
前記コンテキストモデルを決定するステップが、前記ブロックがルミナンスブロックであるのかまたはクロミナンスブロックであるのかに基づいて前記コンテキストモデルを決定するステップを備える、請求項3に記載の方法。
【請求項６】
前記コンテキストモデルを決定するステップが、
前記ブロックが前記ルミナンスブロックであるのかまたは前記クロミナンスブロックであるのかにかかわらず、前記所定数のビットのうちの、順序が1番目のビットのための第1のコンテキストモデルを決定するステップを備え、
前記ブロックが前記ルミナンスブロックであるとき、前記方法が、前記順序が1番目のビットに後続する前記所定数のビットのうちの残りのビットを、コンテキストの第1のセットを使用してコンテキストベースエントロピー復号するステップを備え、
前記ブロックが前記クロミナンスブロックであるとき、前記方法が、前記所定数のビットのうちの前記残りのビットを、コンテキストの前記第1のセットとは異なるコンテキストの第2のセットを使用してコンテキストベースエントロピー復号するステップを備える、
請求項5に記載の方法。
【請求項７】
前記2次変換シンタックス要素をエントロピー復号するステップが、位置依存イントラ予測合成(PDPC)シンタックス要素の値に少なくとも部分的に基づいて、前記2次変換シンタックス要素のビットをエントロピー復号するための1つまたは複数のコンテキストを決定するステップを備える、請求項2に記載の方法。
【請求項８】
前記コンテキストを決定するステップが、前記ブロック用の予測モードまたは前記ブロックのサイズのうちの1つまたは複数に基づいて前記コンテキストを決定するステップをさらに備える、請求項7に記載の方法。
【請求項９】
前記2次変換シンタックス要素が、非分離可能2次変換(NSST)インデックスシンタックス要素または回転変換(ROT)インデックスシンタックス要素を備える、請求項1に記載の方法。
【請求項１０】
逆2値化するステップが、前記決定された最大可能値にかかわらず、前記2次変換シンタックス要素に対する前記値を逆短縮単項2値化するステップを備える、請求項1に記載の方法。
【請求項１１】
前記最大可能値を決定するステップが、前記ブロック用の予測モードから前記最大可能値を決定するステップを備える、請求項1に記載の方法。
【請求項１２】
前記最大可能値を決定するステップは、前記ブロック用の前記予測モードが、平面イントラ予測モード、DCイントラ予測モード、またはLMモードのうちの1つを備える、角度なしイントラ予測モードであるとき、前記最大可能値が3に等しいと決定するステップを備える、請求項11に記載の方法。
【請求項１３】
前記最大可能値を決定するステップは、前記ブロック用の前記予測モードが角度つきインター予測モードであるとき、前記最大可能値が4に等しいと決定するステップを備える、請求項11に記載の方法。
【請求項１４】
前記2次変換シンタックス要素が、非分離可能2次変換(NSST)インデックスシンタックス要素を備え、前記方法は、前記NSSTインデックスシンタックス要素に対する前記値が0に等しくないとき、ビデオデータの前記ブロックが位置依存イントラ予測合成(PDPC)シンタックス要素を含まないと決定するステップをさらに備える、請求項1に記載の方法。
【請求項１５】
前記ブロックのための位置依存イントラ予測合成(PDPC)シンタックス要素の値をコンテキストベースエントロピー復号するステップであって、前記2次変換シンタックス要素の値に少なくとも部分的に基づいて、前記PDPCシンタックス要素の前記値のための1つまたは複数のコンテキストを決定するステップを備える、ステップをさらに備える請求項1に記載の方法。
【請求項１６】
前記ブロックが、コーディングユニットの第1の成分を備え、前記コーディングユニットが、1つまたは複数の追加の成分を備え、前記方法が、前記2次変換シンタックス要素の前記値を、前記コーディングユニットの前記1つまたは複数の追加の成分のうちの少なくとも1つに適用するステップをさらに備える、請求項1に記載の方法。
【請求項１７】
前記第1の成分が、第1のクロミナンス成分を備え、前記1つまたは複数の追加の成分が、第2のクロミナンス成分を備え、前記2次変換シンタックス要素の前記値を適用するステップが、前記2次変換シンタックス要素の前記値を前記第2のクロミナンス成分に適用するステップを備える、請求項16に記載の方法。
【請求項１８】
前記1つまたは複数の追加の成分が、ルミナンス成分を備え、前記2次変換シンタックス要素の前記値を適用するステップが、前記2次変換シンタックス要素の前記値を前記ルミナンス成分に適用するステップを備える、請求項17に記載の方法。
【請求項１９】
前記ブロックの非ゼロ係数の個数、前記非ゼロ係数に対する絶対値の和、または前記ブロック用の予測モードのうちの1つまたは複数に基づいて、前記2次変換シンタックス要素が所定のデフォルト値を有すると決定するステップをさらに備える請求項16に記載の方法。
【請求項２０】
前記ブロックが、シグナリングユニットの第1のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記方法が、前記2次変換シンタックス要素の前記値を前記シグナリングユニットの第2のブロックに適用するステップをさらに備え、前記第2のブロックが前記第1のブロックに隣接する、請求項1に記載の方法。
【請求項２１】
前記第1のブロックが、第1のコーディングツリーブロック(CTB)の少なくとも一部分を備え、前記第2のブロックが、前記第1のCTBとは異なる第2のCTBの少なくとも一部分を備える、請求項20に記載の方法。
【請求項２２】
前記第1のブロックおよび前記第2のブロックの復号中に適用されるべきコーディングツールを表す、前記シグナリングユニットの第2のシンタックス要素をエントロピー復号するステップをさらに備え、前記方法が、
前記コーディングツールを使用して前記第1のブロックを復号するステップと、
前記コーディングツールを使用して前記第2のブロックを復号するステップとをさらに備える、
請求項20に記載の方法。
【請求項２３】
前記第1のブロックおよび前記第2のブロックの復号中に適用されるべきそれぞれのコーディングツールを表す、前記シグナリングユニットの複数のシンタックス要素をエントロピー復号するステップをさらに備え、前記方法が、
前記コーディングツールの各々を使用して前記第1のブロックを復号するステップと、
前記コーディングツールの各々を使用して前記第2のブロックを復号するステップとをさらに備える、
請求項20に記載の方法。
【請求項２４】
前記ブロックが、シグナリングユニットの第1のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記方法が、前記シグナリングユニットの複数のシンタックス要素をエントロピー復号するステップをさらに備え、前記複数のシンタックス要素が、前記2次変換シンタックス要素、および拡張多重変換(EMT)フラグまたはEMTインデックスのうちの1つまたは複数を含み、前記2次変換シンタックス要素が、非分離可能2次変換(NSST)インデックスまたはNSSTフラグのうちの少なくとも1つを備える、請求項20に記載の方法。
【請求項２５】
前記第1のブロックおよび前記第2のブロックの各々の中の非ゼロ変換係数の個数、前記第1のブロックおよび前記第2のブロックの中の前記非ゼロ変換係数の絶対和、または前記第1のブロックおよび前記第2のブロックの変換ユニットの中での前記非ゼロ変換係数の位置のうちの少なくとも1つに従って決定されたそれぞれのコンテキストを使用して、前記複数のシンタックス要素をエントロピー復号するステップをさらに備える請求項24に記載の方法。
【請求項２６】
前記第1および第2のブロックの非ゼロ係数の個数が、可能な非ゼロ係数の範囲内にあると決定するステップであって、前記範囲が、コンテキストに対応するサブグループに関連する、ステップと、
前記コンテキストを使用して前記複数のシンタックス要素をエントロピー復号するステップと
をさらに備える請求項24に記載の方法。
【請求項２７】
前記第1のブロックおよび前記第2のブロックの中での最後の非ゼロ係数の位置、前記最後の非ゼロ係数の値、または前記最後の非ゼロ係数に対する符号値のうちの少なくとも1つに従って決定されたそれぞれのコンテキストを使用して、前記複数のシンタックス要素をエントロピー復号するステップをさらに備える請求項24に記載の方法。
【請求項２８】
前記ブロックが、シグナリングユニットの後続のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記シグナリングユニットが、前記後続のブロックとは別個の、走査順序において前記後続のブロックに先行する1つまたは複数のブロックをさらに備え、前記方法が、
前記シグナリングユニットのシンタックス要素に対する値を復号するステップをさらに備え、前記シンタックス要素の前記値が、復号順序において前記シンタックス要素に後続するブロックに適用されるべきコーディングツールを表し、前記シンタックス要素に対する前記値を復号するステップが、前記1つまたは複数のブロックのデータを復号した後、かつ前記後続のブロックのデータを復号する前に、前記シンタックス要素に対する前記値を復号するステップを備え、前記後続のブロックを復号するステップが、前記コーディングツールを前記後続のブロックに適用するステップを備える、
請求項1に記載の方法。
【請求項２９】
前記シンタックス要素が、前記2次変換シンタックス要素または拡張多重変換(EMT)シンタックス要素のうちの少なくとも1つを備える、請求項28に記載の方法。
【請求項３０】
ビデオデータを復号するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
回路の中に実装された1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、
前記ブロック用の2次変換を表す2値化値を形成するために、前記ブロックの前記2次変換シンタックス要素に対する値をエントロピー復号することと、
前記ブロック用の前記2次変換を決定するために、前記最大可能値にかかわらず共通の2値化方式を使用して、前記2次変換シンタックス要素に対する前記値を逆2値化することと、
前記決定された2次変換を使用して前記ブロックの変換係数を逆変換することとを行うように構成される、
デバイス。
【請求項３１】
前記1つまたは複数のプロセッサが、前記決定された最大可能値に基づいて、前記2次変換シンタックス要素に対する前記値をエントロピー復号するために使用されるべきコンテキストモデルを決定し、前記決定されたコンテキストモデルを使用して前記値をエントロピー復号するようにさらに構成される、請求項30に記載のデバイス。
【請求項３２】
前記共通の逆2値化方式が、逆短縮単項2値化を備え、前記1つまたは複数のプロセッサが、前記決定された最大可能値にかかわらず前記2次変換シンタックス要素に対する前記値を逆短縮単項2値化するように構成される、請求項30に記載のデバイス。
【請求項３３】
前記1つまたは複数のプロセッサが、前記ブロック用の予測モードから前記最大可能値を決定するように構成される、請求項30に記載のデバイス。
【請求項３４】
前記ブロックが、コーディングユニットの第1の成分を備え、前記コーディングユニットが、1つまたは複数の追加の成分を備え、前記1つまたは複数のプロセッサが、前記2次変換シンタックス要素の前記値を、前記コーディングユニットの前記1つまたは複数の追加の成分のうちの少なくとも1つに適用するようにさらに構成される、請求項30に記載のデバイス。
【請求項３５】
前記ブロックが、シグナリングユニットの第1のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記1つまたは複数の処理ユニットが、前記2次変換シンタックス要素の前記値を前記シグナリングユニットの第2のブロックに適用するように構成され、前記第2のブロックが前記第1のブロックに隣接する、請求項30に記載のデバイス。
【請求項３６】
前記ブロックが、シグナリングユニットの第1のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記1つまたは複数のプロセッサが、前記シグナリングユニットの複数のシンタックス要素をエントロピー復号するようにさらに構成され、前記複数のシンタックス要素が、前記2次変換シンタックス要素、および拡張多重変換(EMT)フラグまたはEMTインデックスのうちの1つまたは複数を含み、前記2次変換シンタックス要素が、非分離可能2次変換(NSST)インデックスまたはNSSTフラグのうちの少なくとも1つを備える、請求項30に記載のデバイス。
【請求項３７】
前記ブロックが、シグナリングユニットの後続のブロックを備え、前記2次変換シンタックス要素が、前記シグナリングユニットのシンタックス要素を備え、前記シグナリングユニットが、前記後続のブロックとは別個の、走査順序において前記後続のブロックに先行する1つまたは複数のブロックをさらに備え、前記1つまたは複数のプロセッサが、
前記シグナリングユニットのシンタックス要素に対する値を復号するようにさらに構成され、前記シンタックス要素の前記値が、復号順序において前記シンタックス要素に後続するブロックに適用されるべきコーディングツールを表し、前記シンタックス要素に対する前記値を復号するために、前記1つまたは複数のプロセッサが、前記1つまたは複数のブロックのデータを復号した後、かつ前記後続のブロックのデータを復号する前に、前記シンタックス要素に対する前記値を復号し、
前記コーディングツールを前記後続のブロックに適用するように構成される、
請求項30に記載のデバイス。
【請求項３８】
前記ビデオデータをキャプチャするように構成されたカメラをさらに備える請求項30に記載のデバイス。
【請求項３９】
カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える請求項30に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、
2016年5月3日に出願された米国仮出願第62/331,290号と、
2016年5月5日に出願された米国仮出願第62/332,425号と、
2016年5月16日に出願された米国仮出願第62/337,310号と、
2016年5月24日に出願された米国仮出願第62/340,949号と、
2016年7月22日に出願された米国仮出願第62/365,853号と
の各々の利益を主張し、それらの各々の内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、ビデオコーディングに関する。
【背景技術】
【０００３】
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、幅広いデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンストビデオコーディング(AVC:Advanced Video Coding)、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法などのビデオコーディング技法を実施する。ビデオデバイスは、そのようなビデオコーディング技法を実施することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【０００４】
ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(たとえば、ビデオピクチャ、またはビデオピクチャの一部分)は、ビデオブロックに区分されてよく、ビデオブロックは、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)、および/またはコーディングノードと呼ばれることもある。ピクチャのイントラコード化(I)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルに対する空間予測、または他の参照ピクチャの中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測は、コーディングされるべきブロックに対する予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差変換係数をもたらしてよく、残差変換係数は、次いで、量子化され得る。最初に2次元アレイに配置された量子化変換係数は、変換係数の1次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【課題を解決するための手段】
【０００６】
概して、本開示は、ビデオデータのブロックの2次変換シンタックス要素をエントロピーコーディング(符号化または復号)することに関係する技法を説明する。2次変換シンタックス要素は、たとえば、非分離可能2次変換(NSST:non-separable secondary transform)シンタックス要素、回転変換シンタックス要素などを含み得る。概して、これらのシンタックス要素のエントロピーコーディングは、2値化または逆2値化を含み得る。2値化方式または逆2値化方式は、2次変換シンタックス要素にとっての最大可能値にかかわらず同じ2値化方式または逆2値化方式が適用されるように統一され得る。本開示の技法は、シグナリングユニットシンタックス要素をコーディング(符号化または復号)することをさらに含み得、ここで、シグナリングユニットは、2つ以上の隣接ブロックを含み得る。シグナリングユニットシンタックス要素は、ブロックの各々に先行し得るか、またはシグナリングユニットシンタックス要素が適用されるブロックの(コーディング順序において)直前に配置され得る。
【０００７】
一例では、ビデオデータを復号する方法は、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号することと、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の逆2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化することと、決定された2次変換を使用してブロックの変換係数を逆変換することとを含む。
【０００８】
別の例では、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、回路の中に実装された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号することと、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化することと、決定された2次変換を使用してブロックの変換係数を逆変換することとを行うように構成される。
【０００９】
別の例では、ビデオデータを復号するためのデバイスは、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定するための手段と、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号するための手段と、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の逆2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化するための手段と、決定された2次変換を使用してブロックの変換係数を逆変換するための手段とを含む。
【００１０】
別の例では、コンピュータ可読記憶媒体(たとえば、非一時的コンピュータ可読記憶媒体)は、その上に記憶された命令を有し、命令は、実行されたとき、1つまたは複数のプロセッサに、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定させ、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号させ、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の逆2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化させ、決定された2次変換を使用してブロックの変換係数を逆変換させる。
【００１１】
別の例では、ビデオデータを符号化する方法は、2次変換を使用してビデオデータのブロックの中間変換係数を変換することと、ブロック用の2次変換シンタックス要素にとっての最大可能値を決定することであって、2次変換シンタックス要素の値が2次変換を表すことと、最大可能値にかかわらず共通の2値化方式を使用して、2次変換シンタックス要素に対する値を2値化することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する2値化値をエントロピー符号化することとを含む。
【００１２】
別の例では、ビデオデータを符号化するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、回路の中に実装された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、2次変換を使用してビデオデータのブロックの中間変換係数を変換することと、ブロック用の2次変換シンタックス要素にとっての最大可能値を決定することであって、2次変換シンタックス要素の値が2次変換を表すことと、最大可能値にかかわらず共通の2値化方式を使用して、2次変換シンタックス要素に対する値を2値化することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する2値化値をエントロピー符号化することとを行うように構成される。
【００１３】
1つまたは複数の例の詳細が、添付の図面および以下の説明において説明される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】2次変換インデックスを2値化するための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】2次変換インデックスを2値化するための技法を実施し得るビデオエンコーダの一例を示すブロック図である。
【図３】本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー符号化ユニットのブロック図である。
【図４】2次変換インデックスを2値化するための技法を実施し得るビデオデコーダの一例を示すブロック図である。
【図５】本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー復号ユニットのブロック図である。
【図６】本開示の技法による、ビデオデータを符号化する例示的な方法を示すフローチャートである。
【図７】本開示の技法による、ビデオデータを復号する方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
ビデオコーディング規格は、スケーラブルビデオコーディング(SVC:Scalable Video Coding)、マルチビュービデオコーディング(MVC:Multi-view Video Coding)、およびスクリーンコンテンツコーディング(SCC:Screen content coding)などの拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVC(アドバンストビデオコーディング)とも呼ばれる)、ITU-T H.265(HEVCすなわち「高効率ビデオコーディング」とも呼ばれる)を含む。本開示の技法は、HEVCよりも後の開発活動を受けている共同ビデオ探求チーム(JVET:Joint Video Exploration Team)テストモデル(共同探求モデル- JEMと呼ばれることもある)などの、これらまたは将来のビデオコーディング規格において適用され得る。ビデオコーディング規格はまた、Google VP8、VP9、VP10などのプロプライエタリなビデオコーデック、および他の組織、たとえば、アライアンスフォーオープンメディア(Alliance for Open Media)によって開発されたビデオコーデックを含む。
【００１６】
JVETテストモデルにおいて、位置依存イントラ予測合成(PDPC:position dependent intra prediction combination)と呼ばれるイントラ予測方法がある。JVETテストモデルはまた、非分離可能2次変換(NSST)ツールを含む。PDPCツールとNSSTツールの両方は、対応するツールが適用されるかどうか、およびどの変形が使用されるのかを示すためのシンタックス要素(たとえば、インデックス)を使用する。たとえば、インデックス0は、ツールが使用されないことを意味し得る。
【００１７】
ビデオデータのブロックのNSSTインデックスの最大数は、イントラ予測モード、またはブロックの区分サイズに依存し得る。一例では、イントラ予測モードが平面モードまたはDCモードであり、かつ区分サイズが2N×2Nである場合、NSSTインデックスの最大数は3であり、そうでない場合、NSSTインデックスの最大数は4である。JVETテストモデルの下では、NSSTインデックスを表すために2つのタイプの2値化が使用される。JVETテストモデルでは、最大値が3である場合、短縮単項2値化が使用され、そうでない場合、固定バイナリ2値化が適用される。JVETテストモデルでは、PDPCインデックスが0に等しくない場合、NSSTが適用されずNSSTインデックスがシグナリングされない。
【００１８】
本開示は、たとえば、NSSTインデックスおよび/またはNSSTフラグなどのNSSTシンタックス要素のコーディングを改善するために、単独または任意の組合せで適用され得る様々な技法を説明する。たとえば、これらの技法は、ビデオエンコーダ/ビデオデコーダの働きを改善し得、それによって、これらの技法が現在のJVETテストモデルに比べてビットストリームのビットレートを低減し得るという点で、ビットストリーム効率を改善し得る。
【００１９】
図1は、2次変換インデックスを2値化するための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを提供するソースデバイス12を含む。詳細には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、幅広いデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信用に装備されてよい。
【００２０】
宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12がリアルタイムで符号化ビデオデータを宛先デバイス14へ直接送信することを可能にする通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調されてよく、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【００２１】
いくつかの例では、符号化データは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化データは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに相当し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶するとともにその符号化ビデオデータを宛先デバイス14へ送信することが可能な、任意のタイプのサーバであってよい。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであってよい。
【００２２】
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されているデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２３】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、2次変換インデックスを2値化するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースしてよい。
【００２４】
図1の図示したシステム10は一例にすぎない。2次変換インデックスを2値化するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスによって実行されるが、技法はまた、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行されてもよい。その上、本開示の技法はまた、ビデオプロセッサによって実行されてもよい。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14への送信用のコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化および復号構成要素を含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオ放送、またはビデオ電話のための、ビデオデバイス12、14の間の一方向または双方向のビデオ送信をサポートし得る。
【００２５】
ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き携帯電話またはビデオ付き携帯電話を形成し得る。しかしながら、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/または有線の適用例に適用され得る。各場合において、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によって、コンピュータ可読媒体16に出力され得る。
【００２６】
コンピュータ可読媒体16は、ワイヤレス放送もしくは有線ネットワーク送信などの一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-ray(登録商標)ディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)が、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し得、符号化ビデオデータを宛先デバイス14に提供し得る。同様に、ディスクスタンピング設備などの媒体製造設備のコンピューティングデバイスが、ソースデバイス12から符号化ビデオデータを受信し得、符号化ビデオデータを含むディスクを製造し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むものと理解されてよい。
【００２７】
宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコード化ユニットの特性および/または処理を記述するシンタックス要素を含むとともにビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
【００２８】
ビデオエンコーダ20およびビデオデコーダ30は、ITU-T H.265とも呼ばれる高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作し得る。代替として、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part 10、アドバンストビデオコーディング(AVC)と呼ばれるITU-T H.264規格、またはそのような規格の拡張などの、他のプロプライエタリな規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2およびITU-T H.263を含む。図1に示さないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体化されてよく、共通のデータストリームまたは別個のデータストリームにおけるオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニットまたは他のハードウェアおよびソフトウェアを含んでよい。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【００２９】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適なエンコーダ回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体の中にソフトウェア用の命令を記憶してよく、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行してよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれも、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
【００３０】
概して、ITU-T H.265によれば、ビデオピクチャは、ルーマサンプルとクロマサンプルの両方を含み得るコーディングツリーユニット(CTU)(または、最大コーディングユニット(LCU:largest coding unit))のシーケンスに分割され得る。代替として、CTUは、モノクロデータを(すなわち、ルーマサンプルのみを)含んでよい。ビットストリーム内のシンタックスデータは、ピクセル数に換算して最大コーディングユニットであるCTUに対するサイズを定義し得る。スライスは、コーディング順序において連続するいくつかのCTUを含む。ビデオピクチャは、1つまたは複数のスライスに区分され得る。各CTUは、4分木に従ってコーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードがCTUに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
【００３１】
4分木データ構造の各ノードは、対応するCUのためのシンタックスデータを提供し得る。たとえば、4分木の中のノードは、ノードに対応するCUがサブCUに分割されているかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義されてよく、CUがサブCUに分割されているかどうかに依存し得る。CUがこれ以上分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、リーフCUの4つのサブCUはまた、元のリーフCUの明示的な分割がなくてもリーフCUと呼ばれる。たとえば、16×16サイズにおけるCUがこれ以上分割されない場合、16×16CUはまったく分割されなかったが、4つの8×8サブCUもリーフCUと呼ばれる。
【００３２】
CUがサイズの区別を有しないことを除いて、CUはH.264規格のマクロブロックと類似の目的を有する。たとえば、CTUは4つの子ノード(サブCUとも呼ばれる)に分割されてよく、各子ノードは、次には親ノードであってよく別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最終の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、CTUが分割され得る最大回数を規定し得、コーディングノードの最小サイズも規定し得る。したがって、ビットストリームはまた、最小コーディングユニット(SCU:smallest coding unit)を規定し得る。本開示は、HEVCのコンテキストにおけるCU、予測ユニット(PU:prediction unit)、もしくは変換ユニット(TU:transform unit)のいずれか、または他の規格のコンテキストにおける類似のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそのサブブロック)を指すために、「ブロック」という用語を使用する。
【００３３】
CUは、コーディングノード、ならびにコーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)を含む。CUのサイズはコーディングノードのサイズに対応し、一般に、形状が正方形である。CUのサイズは、8×8ピクセルから最大サイズ、たとえば64×64ピクセル以上を有するCTUのサイズまでにわたり得る。各CUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。CUに関連するシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがスキップモード符号化または直接モード符号化されているのか、イントラ予測モード符号化されているのか、またはインター予測モード符号化されているのかの間で異なり得る。PUは、形状が非正方形であるように区分されてよい。CUに関連するシンタックスデータはまた、たとえば、4分木による1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、長方形)であり得る。
【００３４】
HEVC規格はTUによる変換を可能にし、TUは異なるCUに対して異なってよい。TUは、通常、区分されたCTUに対して規定された所与のCU内のPUのサイズに基づいてサイズ決定されるが、このことは常にそうであるとは限らないことがある。TUは、通常、PUと同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)と呼ばれる4分木構造を使用して、もっと小さいユニットに再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、量子化され得る変換係数を生成するために変換されてよい。
【００３５】
リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、PUに対する参照サンプルを取り出しかつ/または生成するためのデータを含み得る。その上、PUは予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUに対するデータは、PUに対応するTU用のイントラ予測モードを記述するデータを含み得る残差4分木(RQT)に含まれてよい。RQTは、変換木と呼ばれることもある。いくつかの例では、イントラ予測モードは、RQTではなくリーフCUのシンタックスの中でシグナリングされ得る。別の例として、PUがインターモード符号化されるとき、PUは、PU用の1つまたは複数の動きベクトルなどの動き情報を規定するデータを含み得る。PU用の動きベクトルを規定するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトル用の参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
【００３６】
1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明したように、RQT(TU4分木構造とも呼ばれる)を使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されているかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらに分割され得る。TUは、これ以上分割されないとき、リーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、概してリーフCUのすべてのTUに対する予測値を計算するために適用される。イントラコーディングの場合、ビデオエンコーダは、リーフTUごとの残差値を、TUに対応するCUの部分と元のブロックとの間の差分としてイントラ予測モードを使用して計算し得る。TUは、必ずしもPUのサイズに限定されるとは限らない。したがって、TUは、PUよりも大きくてもまたは小さくてもよい。イントラコーディングの場合、PUは、同じCUに対して対応するリーフTUとコロケートされてよい。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに相当し得る。
【００３７】
その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれるそれぞれの4分木データ構造に関連し得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されているのかを示す4分木を含み得る。TUの4分木のルートノードは、概してリーフCUに対応し、CUの4分木のルートノードは、概してCTU(または、LCU)に対応する。分割されていないRQTのTUは、リーフTUと呼ばれる。概して、本開示は、別段に記載されていない限り、それぞれ、リーフCUおよびリーフTUを指すためにCUおよびTUという用語を使用する。
【００３８】
ビデオシーケンスは、通常、ランダムアクセスポイント(RAP)ピクチャから始めて一連のビデオフレームまたはピクチャを含む。ビデオシーケンスは、ビデオシーケンスを特徴づけるシーケンスパラメータセット(SPS)の中にシンタックスデータを含み得る。ピクチャの各スライスは、それぞれのスライス用の符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロック上で動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは固定サイズまたは可変サイズを有してよく、指定されたコーディング規格に従ってサイズが異なってもよい。
【００３９】
一例として、予測は、様々なサイズのPUに対して実行され得る。特定のCUのサイズが2N×2Nであると想定すると、イントラ予測は、2N×2NまたはN×NというPUサイズに対して実行され得、インター予測は、2N×2N、2N×N、N×2N、またはN×Nという対称のPUサイズに対して実行され得る。インター予測用の非対称区分も、2N×nU、2N×nD、nL×2N、およびnR×2NというPUサイズに対して実行され得る。非対称区分では、CUの一方の方向は区分されないが、他方の方向は25%および75%に区分される。25%区分に対応するCUの部分は、「n」とそれに続く「上」、「下」、「左」、または「右」という表示によって示される。したがって、たとえば、「2N×nU」とは、上に2N×0.5NのPUおよび下に2N×1.5NのPUで水平方向に区分されている、2N×2NのCUを指す。
【００４０】
本開示では、「N×N」および「N対N」は、垂直方向および水平方向の寸法に換算したビデオブロックのピクセル寸法、たとえば、16×16ピクセルまたは16対16ピクセルを指すために、互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセル(y=16)および水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、概して、垂直方向にNピクセルおよび水平方向にNピクセルを有し、ただし、Nは負ではない整数値を表す。ブロック中のピクセルは、行および列をなして配置され得る。その上、ブロックは、必ずしも垂直方向と同じ数のピクセルを水平方向に有する必要があるとは限らない。たとえば、ブロックは、N×Mピクセルを備えてよく、ここで、Mは必ずしもNと等しいとは限らない。
【００４１】
CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUに対する残差データを計算し得る。PUは、空間領域(ピクセル領域とも呼ばれる)における予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備えてよく、TUは、変換、たとえば、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に類似の変換を残差ビデオデータに適用することに続いて、変換領域における係数を備えてもよい。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に相当し得る。ビデオエンコーダ20は、CUに対する残差データを表す量子化変換係数を含めるようにTUを形成し得る。すなわち、ビデオエンコーダ20は、(残差ブロックの形式で)残差データを計算し得、残差ブロックを変換して変換係数のブロックを生成し得、次いで、変換係数を量子化して量子化変換係数を形成し得る。ビデオエンコーダ20は、量子化変換係数を含むTU、ならびに他のシンタックス情報(たとえば、TUのための分割情報)を形成し得る。
【００４２】
上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化とは、概して、係数を表すために使用されるデータの量をできる限り低減するように変換係数が量子化されてさらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に丸められてよく、ただし、nはmよりも大きい。
【００４３】
量子化に続いて、ビデオエンコーダは変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より大きいエネルギー(したがって、より低い周波数)の係数をアレイの前方に置き、より小さいエネルギー(したがって、より高い周波数)の係数をアレイの後方に置くように設計されてよい。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するための既定の走査順序を利用してよい。他の例では、ビデオエンコーダ20は、適応走査を実行してもよい。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ20は、たとえば、コンテキスト適応可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するために、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化してよい。
【００４４】
CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非ゼロであるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボル用の可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが可能性のより高いシンボルに対応し、より長いコードが可能性のより低いシンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべきシンボルごとに等長コードワードを使用して、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【００４５】
概して、ビデオデコーダ30は、ビデオエンコーダ20によって実行されるプロセスとは逆であるが実質的に類似のプロセスを実行して、符号化データを復号する。たとえば、ビデオデコーダ30は、受信されたTUの係数を逆量子化および逆変換して残差ブロックを再生する。ビデオデコーダ30は、シグナリングされた予測モード(イントラ予測またはインター予測)を使用して予測ブロックを形成する。次いで、ビデオデコーダ30は、予測ブロックと残差ブロックとを(ピクセルごとに)合成して元のブロックを再生する。ブロック境界に沿った視覚的アーティファクトを低減するためのデブロッキングプロセスを実行するなどの、追加の処理が実行されてよい。さらに、ビデオデコーダ30は、ビデオエンコーダ20のCABAC符号化プロセスとは逆であるが実質的に類似の方法で、CABACを使用してシンタックス要素を復号し得る。
【００４６】
本開示の技法によれば、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダは、NSSTシンタックス要素の2値化を統一し得る。たとえば、ビデオコーダは、1つの2値化(たとえば、短縮2値化または短縮単項2値化)のみを使用するように構成され得る。NSSTシンタックス要素にとっての最大値は、NSSTシンタックス要素がコーディングされるべきブロックに対して、イントラモード、および随意にブロックサイズ条件に従って規定(したがって、ビデオコーダによって決定)され得る。たとえば、ビデオコーダは、NSSTインデックスのために短縮単項2値化を適用し得、ここで、現在のイントラモードが角度なし(たとえば、クロマ成分に対する平面モードもしくはDCモード、または随意にLMモード)である場合、最大値は3に等しく、そうでない場合、最大値は4に等しい。追加として、ビデオコーダは、ブロックサイズ条件を適用し得る。たとえば、ビデオコーダは、現在ブロックが正方形であるか、または幅*高さがいくつかのしきい値、たとえば、64よりも小さい場合、最大値が3に等しいと決定してよい。
【００４７】
一例では、ビデオコーダは、2値化コードワードからのすべてのビンまたはいくつかの所定のビンのみ(たとえば、順序が1番目のビン)を、コンテキストエントロピーコーディングし得る。ビデオコーダは、所定のビン以外のビンを、コンテキストモデリングなしに(たとえば、バイパスモードで)エントロピーコーディングし得る。ルーマおよびクロマに対してNSSTが別個に適用される場合、コンテキストモデリングはルーマおよびクロマに対して別個であってよい。代替として、2値化コードワードからのビンは、ルーマおよびクロマのためのコンテキストを共有することができ、たとえば、NSSTインデックスが0(NSSTが適用されないことを意味する)であるかどうかを示す、第1のビンのためのコンテキストは、ルーマ成分とクロマ成分との間で共有されてよく、他のビンは、ルーマおよびクロマに対して別個のコンテキストを有してよい。
【００４８】
別の例では、NSSTインデックスに対するコンテキストモデリングは、NSSTインデックスが有することができる最大値に依存することができる。たとえば、最大値が3または4であり得る場合、最大値3に対するNSSTインデックスをシグナリングするために1つのコンテキストセットが使用されてよく、最大値4に対するNSSTインデックスをシグナリングするために別のコンテキストセットが使用される。NSSTインデックスが有することができる他の最大値に対して類似のコンテキストセットが規定されてよく、3つ以上の最大値が使用され得る。
【００４９】
随意に、NSSTインデックスが0に等しいか否かを示す、第1のビンに対するコンテキストは、すべてのコンテキストセットにわたって共有され得るか、あるいはルーマ成分、クロマ成分、もしくは両方のクロマ成分、またはすべての色成分に対するような、同じ色成分に対応するコンテキストセットにわたって共有され得る。
【００５０】
現在のJVETテストモデルでは、PDPCインデックスが0に等しくない場合、NSSTは適用されずNSSTインデックスがシグナリングされない。NSSTを回避しNSSTインデックスをシグナリングしないこのプロセスは、コーディング複雑度を下げ得る。しかしながら、本開示は、現在JVETテストモデルにおいて実施されるプロセスが、必ずしも最良のコーディング結果を達成するとは限らず、コーダ複雑度とビットレートとの間の所望のトレードオフを達成し得ないことを認識する。
【００５１】
本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ブロックのNSSTインデックスが非ゼロ値を有するとき、すなわち、言い換えれば、NSST方法が現在ブロックに適用されるとき、ブロックのための位置依存イントラ予測合成(PDPC)シンタックス要素を適用および/またはコーディング(たとえば、シグナリング)する必要がない。このことは、類似のコーダ複雑度をもたらすことがあるが、NSST方法は、通常、PDPCと比較して良好な効率を有するので、得られる圧縮効率はもっと高くなり得る。この場合、PDPCインデックスは、NSSTインデックスの後のロケーションにおいてビットストリームの中でシグナリングされ得る。
【００５２】
追加または代替として、NSSTインデックスコンテキストは、PDPCインデックスに基づき得る。たとえば、PDPCインデックスが0である場合、NSSTインデックスをエントロピーコーディングするために1つのコンテキストが使用されてよく、PDPCインデックスが0でない場合、NSSTインデックスをエントロピーコーディングするために別のコンテキストが使用されてよい。別の例では、各PDPCインデックスは、NSSTインデックスをエントロピーコーディングするために使用されるべき、それ自体のコンテキストを有してよい。追加または代替として、NSSTインデックスのコンテキストは、PDPCインデックス、および予測モード、ブロックサイズなどの現在ブロックの他の要素に一緒に依存することができる。同様に、PDPCインデックスのコンテキストは、NSSTインデックス、および予測モード、ブロックサイズなどの現在ブロックの他の要素に一緒に依存することができる。
【００５３】
代替として、NSSTインデックスがビットストリームの中でPDPCインデックスの前にコーディングされる場合、同じ方法が適用され得る。この場合、上記の方法では、NSSTおよびPDPCが説明において交換される。たとえば、NSSTインデックスが0である場合、PDPCインデックスをエントロピーコーディングするために1つのコンテキストが使用されてよく、NSSTインデックスが0でない場合、PDPCインデックスをエントロピーコーディングするために別のコンテキストが使用されてよい。別の例では、各NSSTインデックスは、PDPCインデックスをエントロピーコーディングするために使用されるべき、それ自体のコンテキストを有してよい。追加または代替として、PDPCインデックスのコンテキストは、NSSTインデックス、および予測モード、ブロックサイズなどの現在ブロックの他の要素に一緒に依存することができる。同様に、NSSTインデックスのコンテキストは、PDPCインデックス、および予測モード、ブロックサイズなどの現在ブロックの他の要素に一緒に依存することができる。
【００５４】
ここで言及するPDPC技法は、イントラ/インター予測技法に関係する任意の他の技法に拡張され得、かつ/またはここで言及するNSST技法は、変換技法に関係する任意の技法に拡張され得る。予測技法のシンタックス要素(インデックス/フラグ/モード)シグナリングは、変換技法のシンタックス要素(インデックス/フラグ/モード)シグナリングと相互作用し得る。相互作用とは、限定はしないが、予測技法シンタックスのコンテキストが変換技法シンタックスのコンテキストに依存すること、またはその逆であり得る。
【００５５】
加えて、ビデオコーダは、限定はしないが、PDPCまたは動きパラメータ継承(MPI:motion parameter inheritance)モードを含む他のコーディングモードに、上記で説明した技法を適用するように構成され得る。
【００５６】
NSSTインデックスは、複数の成分に対してシグナリングおよび共有されてよい。たとえば、1つのNSSTインデックスが、ルミナンス(Y)成分、青色の色相クロミナンス(Cb)成分、および赤色の色相クロミナンス(Cr)成分に対してシグナリングおよび共有されてよい。代替として、1つのNSSTインデックスが、Cb成分およびCr成分に対してシグナリングおよび共有されてよい(Y成分に対しては別個のNSSTインデックスがシグナリングされ得る)。いくつかの例では、複数の成分に対して1つのNSSTインデックスが共有されるとき、NSSTインデックスシグナリングはいくつかの条件に依存し、含まれる成分の各々に対してこれらの条件が満たされるとき、または含まれる成分のうちのいくつか(すべてではない)に対してこれらの条件が満たされるか、もしくは含まれる任意の成分に対してこれらの条件が満たされるとき、NSSTインデックスはシグナリングされないが、デフォルト値、たとえば、0として導出される。
【００５７】
これらの条件は、限定はしないが、ブロックがいくつかのコーディングモードによってコーディングされないときの非ゼロ係数の個数(または、非ゼロ係数の絶対値の和)を含んでよく、これらのいくつかのコーディングモードは、限定はしないが、変換スキップモードおよび/またはLMモードおよび/または成分間予測モードを含む。
【００５８】
上記の例におけるブロックは、独立に考慮される成分ごとのブロックであり得るか、またはいくつかの色成分の関連するブロック、たとえば、CbおよびCrの関連するブロックであり得るか、またはすべての利用可能な成分のブロック、たとえば、Y、Cb、およびCrのブロックであり得る。条件は、一例では、それらのブロックに対して共通して一緒に適用され得る。
【００５９】
たとえば、条件が複数の成分、たとえば、CbおよびCrに適用されるとき、条件は、限定はしないが、ブロックがいくつかのコーディングモードによってコーディングされないときに含まれる各成分の非ゼロ係数の個数の和(または、非ゼロ係数の絶対値の和)を含み得、これらのいくつかのコーディングモードは、限定はしないが、変換スキップモードおよび/またはLMモードおよび/または成分間予測モードなどを含む。
【００６０】
いくつかの例では、複数のNSSTインデックスがシグナリングされ、かつ各NSSTインデックスが1つまたは複数の成分に対してシグナリングされるとき、複数のNSSTインデックスが1つのシンタックス要素として一緒に2値化されてよく、一緒にコーディングされたこの1つのシンタックス要素に対して、1つの2値化および/またはコンテキストモデリングが適用されてよい。たとえば、少なくとも1つの非ゼロNSSTインデックスがあるかどうか(少なくとも1つの成分に対してNSSTが適用されることを意味する)を示すためのフラグが最初にコーディングされてよい。そのフラグの後、複数のNSSTインデックスが、1つのシンタックス要素として2値化され、コーディングされる。この例では、シグナリングにおけるいくらかの冗長性が除去され得る。たとえば、少なくとも1つの非ゼロNSSTインデックスがあることをフラグが示す場合、最後にシグナリングされるNSSTインデックスは、先行するすべてのインデックスが0に等しい値を有する場合に非ゼロであると推定され得る。
【００６１】
上記の例では、ブロックのグループに対してNSSTインデックスをシグナリングするために、同時NSSTインデックスシグナリング(joint NSST index signaling)技法が適用され得る。非ゼロNSSTインデックスを使用する少なくとも1つのブロックがあるのか(この場合、フラグは1に等しい)、またはすべてのブロックがゼロNSSTインデックスを有するのか(この場合、フラグは0に等しい)を示すために、グループに対してフラグがシグナリングされ得る。シグナリングにおける冗長性は、最後のNSSTインデックスが0に等しくなり得ないことを考慮に入れると、グループの中の最後のNSSTインデックスに対して同様に除去され得る。別の例では、2つのNSSTインデックス(0または1)しか可能でない場合、先行するすべてのインデックスが0に等しい場合に最後のインデックスはシグナリングされなくてよく、最後のNSSTインデックスは1に等しいと推定され得る。別の例では、3つ以上のNSSTインデックス値が可能である場合、先行するすべてのインデックスが0に等しい場合に最後のインデックスは1だけ減じられてよい。
【００６２】
上記で説明した技法は、任意の組合せで使用され得る。
【００６３】
NSSTインデックスが一例として使用された。任意の変換または2次変換のインデックス、フラグ、またはシンタックス要素のシグナリングに、同じ技法が適用され得る。たとえば、これらの技法は、回転変換(ROT)インデックスをシグナリングするために適用され得る。
【００６４】
同様に、PDPCインデックスも一例として使用された。任意のイントラ予測またはインター予測のインデックス、フラグ、またはシンタックス要素のシグナリングに、同じ技法が適用され得る。たとえば、これらの技法は、動きパラメータ継承(MPI)インデックスをシグナリングするために適用され得る。
【００６５】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、シグナリングユニット(SU:signaling unit)と呼ばれることがある特別な構造ユニットにおいて、変換関連のシンタックスコーディング(たとえば、符号化/シグナリングまたは復号/解釈)を実行し得る。一般に、シグナリングユニットは複数のブロックを含む。たとえば、シグナリングユニットは、QTBTフレームワークの単一の4分木2分木(QTBT:quadtree-binary tree)に対応し得る。代替として、シグナリングユニットは、ブロックのグループに対応してよく、ブロックの各々がそれぞれの異なるQTBTに対応する。
【００６６】
QTBTフレームワークでは、シグナリングユニットは、(各ノードが0個または4個の子ノードに区分される)4分木に従って区分される最初の部分を含むマルチタイプツリーに従って区分されてよく、それらの各リーフノードは、(各ノードが0個または2個の子ノードに区分される)2分木区分を使用してさらに区分されてよい。0個の子ノードに区分される各ノードは、対応する木のリーフノードと見なされる。
【００６７】
上記で説明したように、(NSSTインデックス、PDPCインデックス、予測モード、ブロックサイズなどの)様々なシンタックス要素は、ブロックのグループに対して一緒にシグナリングされてよい。そのような同時シグナリングは、概して、「シグナリングユニットレベルにおいてデータをシグナリングすること」として説明されてよく、ここで、シグナリングユニットは、シグナリングユニットレベルにおいてデータがそこへシグナリングされる複数のブロックを含み、そのようなデータは、シグナリングユニットの中に含まれる各ブロックに適用される。
【００６８】
シグナリングユニットがPスライスまたはBスライスなどの非Iスライスの部分を形成するときに問題が起こり得る。これらまたは他の非Iスライスでは、スライスは、イントラモードを使用して予測されたいくつかのブロック、およびインターモードを使用して予測された他のブロックを含み得る。しかしながら、いくつかのツールは、イントラモードまたはインターモードのうちの一方のみに適用され得るが両方には適用されないことがある。したがって、特にいくつかの予測モードに対してツールが適用されないとき、混合ブロック(イントラおよびインター)に対してシグナリングユニットレベルにおいていくつかのシンタックスをシグナリングすることは非効率であり得る。
【００６９】
したがって、本開示はまた、単独で、または互いにおよび/もしくは上記で説明した技法と組み合わせて使用され得る、様々な技法を説明する。本開示のいくつかの技法は、非Iスライスにおけるインター予測ブロックとイントラ予測ブロックとの混合を解決するために適用されてよく、それでもなおシグナリングユニットブロックのためのシグナリングを有し得る。ビデオコーダは、シグナリングユニットレベルにおいて実行されるシグナリングによって影響を受けるブロックしかシグナリングユニットが含まない方法でシグナリングユニットの中に配置されたブロックを使用し得る。
【００７０】
たとえば、変換は、2つのタイプ、すなわち、第1の(または、1次)変換および2次変換であり得る。第1の変換は、JVETモデルによれば、離散コサイン変換(DCT)または拡張多重変換(EMT:enhanced multiple transform)であり得、2次変換は、たとえば、NSSTおよびROTであり得る。DCT、EMT、NSST、およびROTが例にすぎず本開示の技法がこれらの変換に限定されないこと、ただし他の変換が同様に(追加または代替として)使用され得ることを理解されたい。
【００７１】
例として、EMTフラグまたはEMTインデックスがシグナリングユニットレベルにおいてシグナリングされることを想定すると、それらのシンタックス要素は、シグナリングユニットの中に含まれるブロックに対してどの特定の変換が使用されるのかを識別する値を有する。ブロックは、イントラ予測、インター予測、またはスキップモード予測され得る。シグナリングされるEMTフラグまたはEMTインデックスは、イントラ予測ブロックにとって効率的であり得るが、インター予測ブロックにとってさほど効率的でないかまたは非効率な場合がある。この場合、シグナリングユニットは、以下のタイプのブロック、すなわち、1)イントラ予測ブロックおよびスキップ予測ブロック、ならびに/または2)インター予測ブロックおよびスキップ予測ブロックのうちの、いずれかまたは両方をさらに含み得る。
【００７２】
この例によれば、シグナリングユニットレベルにおいてシグナリングされる変換関連のシンタックスは、イントラコード化ブロックにとって効率的であることになるが、スキップモードは、残差が0であり変換が必要とされないという想定に基づいており、そのため、シグナリングされる変換はスキップ予測ブロックに影響を及ぼさないことになり、このシグナリングユニットブロックの中に存在するインターコード化ブロックがないことになる。同様に、インター予測ブロックに対してシグナリングユニットレベルにおいてシグナリングされる変換関連のシンタックスは、インター予測ブロックにとって効率的であるが、スキップモードには影響を及ぼさず、シグナリングユニット構造によれば、このシグナリングユニットブロックの中に存在するイントラコード化ブロックがないことになる。
【００７３】
本開示の技法に従ってシグナリングユニットを配置することによって、いくつかのシンタックス要素が冗長になり得る。上記の例では、シグナリングユニットレベルにおいて変換シンタックス要素に加えてシグナリングユニットタイプ(#1または#2)がシグナリングされる場合、予測モードが必要とされないことが明白である。この場合、予測モードはシグナリングユニットの中に含まれるブロックごとにシグナリングされる必要がなく、予測モードはシグナリングユニットタイプに従って推定され得る。一例では、シグナリングユニットタイプは、そのシンタックス要素に固有のコンテキストを有する別個のシンタックス要素としてシグナリングされ得るか、またはシグナリングユニットタイプを示すために予測モードシンタックス要素が再使用およびシグナリングされ得る。
【００７４】
別の例として、シグナリングユニットは、以下の配置、すなわち、1)イントラ予測ブロック、スキップ予測ブロック、および残差が0に等しいインター予測ブロック(ゼロブロック)、ならびに/または2)インター予測ブロック、スキップ予測ブロック、およびゼロ残差を有するイントラ予測ブロックのうちの、いずれかまたは両方に従って配置されたブロックを含み得る。
【００７５】
上記で説明した第1の例では、ゼロブロックしか可能でないので、コード化ブロックフラグ(CBF:coded block flag)シンタックス要素(ブロックがゼロ残差を含むかどうか、すなわち、ブロックが1つまたは複数の非ゼロの残差値を含むかどうか、すなわち、ブロックが「コーディングされている」かどうかを示す)は、シグナリングユニットタイプ1にとってインター予測ブロックごとにシグナリングされる必要がなく、シグナリングユニットタイプ2にとってイントラ予測ブロックに対してシグナリングされる必要がない。
【００７６】
また別の例では、シグナリングユニットは、次のように、すなわち、(1)イントラ予測ブロック、スキップ予測ブロック、および残差が0に等しいインターコード化ブロック(ゼロブロック)、および変換スキップを用いてコーディングされたブロック、ならびに/または(2)インター予測ブロック、スキップ予測ブロック、およびゼロ残差を有するイントラ予測ブロック、および変換スキップを用いてコーディングされたブロック、のように構成され得る。
【００７７】
同様に、上記の例におけるように、CBFシンタックス要素は、シグナリングユニットの中に含まれるブロックごとにシグナリングされる必要がない。
【００７８】
上記の例では、シグナリングユニットブロックは、2つのタイプ、「イントラ関連」タイプおよび「インター関連」タイプに分類された。しかしながら、やはりイントラブロックとインターブロックとの混合が類似のツール決定を共有し得ることが可能な場合があり、たとえば、変換タイプが両方のタイプの予測ブロックに対して同一な場合がある。次いで、シグナリングユニットタイプは次の3つ、すなわち、(1)イントラ予測ブロック、およびゼロ残差を有するインター予測ブロック(スキップブロック、ゼロ残差を有するインターブロックまたは変換スキップされたインターブロック)、(2)インター予測ブロック、およびゼロ残差を有するイントラブロックまたは変換スキップされたイントラブロック、ならびに(3)インターとイントラとの混合が制約なしに許容されること、にさらに拡張され得る。
【００７９】
この例では、予測モードまたはCBFシンタックスなどの、いくつかの冗長なシンタックス要素は、シグナリングユニットタイプ1および2にとってブロックごとに(すなわち、シグナリングユニットの中に含まれる各ブロック内で)シグナリングされる必要がない場合がある。代わりに、それらのシンタックス要素をシグナリングユニットレベルにおいて1回、ビデオエンコーダ20が符号化し得るとともにビデオデコーダ30が復号し得、コーディングされた値はシグナリングユニットの中に含まれる各ブロックに適用され得る。
【００８０】
上記の例では、EMTまたは第1の変換が一例として使用された。同様にして、NSSTまたはROTなどの2次変換がシグナリングユニットレベルにおいてシグナリングされてよく、予測モードまたはCBFシンタックスなどの冗長なシンタックス要素がシグナリングユニットレベルにおいてシグナリングされてよく、ブロックレベルにおいてそれらの要素はシグナリングされる必要がない。
【００８１】
ビデオエンコーダ20およびビデオデコーダ30は、変換決定関連のシンタックス要素を(たとえば、CABACを使用して)コンテキストコーディングするために、コンテキストモデリングを使用し得る。変換セットからのフラグまたはインデックスなどの変換関連のシンタックス要素、たとえば、限定はしないが、EMTフラグ、NSSTフラグ、EMTインデックス、NSSTインデックスなどは、コンテキストコーディングされ得る。コンテキストは、(たとえば、1つの非ゼロのDC係数しか存在しないかどうかにかかわらず)ブロックの中の非ゼロ変換係数の個数、非ゼロ変換係数の絶対和、および/またはTU内部の非ゼロ変換係数の位置に従って規定され得る。
【００８２】
追加として、非ゼロ係数の個数は、いくつかのサブグループに分類され得、たとえば、いくつかの範囲内の非ゼロ係数の個数が1つのサブグループであり、値の別の範囲が別のサブグループであり、以下同様である。コンテキストはサブグループごとに規定され得る。
【００８３】
加えて、コンテキストは、ブロックの中での最後の非ゼロ係数の位置に基づいて規定され得、コンテキストはまた、ブロックの中の最初の非ゼロ係数に基づいて規定され得、および/あるいはコンテキストは、ブロックの中の最後および/もしくは最初の係数の値または追加としてそれらの符号(負または正)に基づいて規定され得る。
【００８４】
以下は、非ゼロ係数の個数のシグナリングを説明する。現在、HEVCまたはJVETでは、最後の非ゼロ係数までのどの係数が非ゼロであるのかを示すために、最後の非ゼロ係数の位置および有意性マップ(たとえば、0-  係数がゼロである、1-  係数が非ゼロである、またはその逆)が変換係数に対してシグナリングされる。
【００８５】
しかしながら、ブロックがほんの数個の係数しか有しない場合、JVETおよびHEVCの現在のシグナリングは効率的でない場合がある。たとえば、変換ブロックが1つの非ゼロ係数しか有さず、その係数がブロックの冒頭にない場合、最後の位置はその係数の位置をすでに示すが、すべて0を含む有意性マップがやはりシグナリングされる。
【００８６】
本開示はまた、変換ブロックの中の非ゼロ係数の個数を示す値を有する追加のシンタックス要素をシグナリングすることに関係する技法を説明する。ビデオエンコーダ20は、このシンタックス要素に対する値をシグナリングしてよく、ビデオデコーダ30は、このシンタックス要素に対する値を復号して変換ブロックの中の非ゼロ変換係数の個数を決定し得る。このシンタックス要素値は、単項、短縮単項、ゴロム、指数ゴロム、ライス、固定長バイナリ、短縮バイナリコードなどの、任意の2値化を使用してシグナリングされ得る。短縮2値化の場合、最大要素は、最後の位置の係数までの可能な係数の個数であり得る。
【００８７】
一例では、この新たなシンタックス要素は、変換ブロックに対する最後の非ゼロ係数位置の後にシグナリングされ得る。別の例では、この新たなシンタックス要素は、最後の非ゼロ係数の前にシグナリングされ得る。後者の場合、フラグは、ブロックが1つのDC係数しか有しないかどうかを示すことができる。
【００８８】
最後の非ゼロ係数、および非ゼロ係数の個数がシグナリングされるので、本開示の技法は、ビットストリームの一部を形成するコード化有意性マップのサイズの低減をもたらし得る。たとえば、有意性マップをシグナリングする間、すでにシグナリングされた非ゼロ係数の個数が計数され得、非ゼロ係数のシグナリングされた個数-1に等しい個数の非ゼロ係数がすでにシグナリングされているとき、可能な次の非ゼロ係数のみがブロックの中の最後の係数であるので、ブロックに対して有意性マップをシグナリングし続ける必要がない。
【００８９】
一例では、上述のシンタックス要素は、変換ブロックが1つの非ゼロ係数しか有しないかどうかを示すフラグ(1係数フラグ)であり得る。このフラグは、最後の非ゼロ係数の位置の後にシグナリングされ得、またそのことを条件とし得る。たとえば、最後の非ゼロ係数がブロックの中の最初の係数(DC)である場合、1つの係数だけが可能であることがすでに知られており、1係数フラグは必要とされない。同様に、フラグは、最後の非ゼロ係数の位置がいくつかのしきい値よりも大きい場合に対してのみシグナリングされ得る。たとえば、最後の非ゼロ係数位置がブロックの冒頭からいくらかの距離にある場合、1係数フラグがシグナリングされる。
【００９０】
1係数フラグに対するコンテキストモデル選択は、ブロックの中での最後の非ゼロ係数の位置、その最後の位置のブロックの冒頭からの距離、最後の非ゼロ係数値、および/またはその値の符号に、単独または任意の組合せで依存し得る。
【００９１】
1係数フラグは、最後の非ゼロ係数の位置の後に、別の代替では、最後の非ゼロ係数の位置およびその値の後に、また別の代替では、最後の非ゼロ係数の位置、その値および符号の後にシグナリングされ得る。このことは、どのコンテキストモデリングが適用されるのかに依存し得る(上記を参照)。
【００９２】
また別の例では、1係数フラグは、最後の非ゼロ係数位置の前にシグナリングされてよく、ブロックが1つのDC係数(第1の変換係数)しか有しないかどうかを示し得る。そのような例では、最後の非ゼロ係数位置は、そのフラグを条件とすることができ、2つ以上の非ゼロ係数があるかまたは1つの係数がDC係数でないことを意味する「使用不可(disabled)」を表す値をフラグが有するときに、シグナリングされ得る。さらに、1係数フラグが使用不可である場合にはDC係数に等しい最後の位置がシグナリングされ得ず、そうでない場合にはそのフラグが使用可能であることになるので、最後の位置のシグナリングは、位置座標から1を減じることによって修正され得る。
【００９３】
そのような1係数フラグがシグナリングされ「使用可能(enabled)」を表す値を有するとき(すなわち、ブロックが1つの非ゼロ係数しか有しない)、有意性マップは必要とされなくてよく、最後の係数の位置、および符号を伴うその値だけがシグナリングされてよい。したがって、ビデオエンコーダ20は、最後の係数の位置のみをシグナリングしてよく、ビデオデコーダ30は、最後の係数の位置を表すデータのみを受信し得、ビットストリームの後続のデータがシンタックス要素の(たとえば、同じブロックの、ただし変換係数データ、または後続のブロックのシンタックス要素と関連しない)異なるセットに適用されると決定し得る。
【００９４】
1係数フラグは、どの変換タイプ、たとえば、DCTまたはEMTが使用されるのかを条件としてシグナリングされてよく、EMTフラグまたはEMTインデックスに依存してよい。追加として、1係数フラグシグナリングは、NSSTまたはROTなどの2次変換がブロックの中で使用されるかどうか、NSSTフラグ、NSSTインデックス、ROTフラグ、またはROTインデックスなどの2次変換シンタックスに依存し得る。たとえば、2次変換が使用される場合、フラグはシグナリングされなくてよい。
【００９５】
1つの非ゼロ係数フラグについて説明したより詳細な例は、2つ以上の非ゼロ係数値がブロックの中でシグナリングされる場合に対して適用され得る。
【００９６】
ビデオエンコーダ20およびビデオデコーダ30は、非ゼロ係数に基づいて異なる変換タイプの間で切り替わってよい。2つの異なるタイプの変換が使用されてよく、たとえば、一方は分離可能変換であり、他方は非分離可能変換である。各タイプの変換の使用について、変換ユニット内部のいくつかの位置に対してのみ非ゼロ係数が存在することができるという、いくつかの制約が追加され得る。このようにして、選択されたタイプの変換はシグナリングされないが、ビデオデコーダ30は、係数を復号した後、変換ユニット内部の非ゼロ係数の位置に従って、選択されたタイプの変換を導出することができる。明示的なシグナリングを受信するのではなく変換タイプを導出することによって、符号化ビデオビットストリームサイズが低減され得、それによって、過剰な複雑度をビデオデコーダ30に持ち込むことなく、また得られた復号ビデオデータにおける品質の損失なしに、ビットストリーム効率を改善し得る。さらに、このようにして複数のタイプの変換を行うことは、得られた変換タイプが平均して残差データをより良好に圧縮し得るという点で、ビットストリーム効率のなお一層の改善をもたらし得る。
【００９７】
一例では、走査順序においてN番目の係数の後に少なくとも1つの非ゼロ係数が存在する場合(ただし、Nは事前定義され得るか、またはいくつかの条件に基づいて導出され得る)、分離可能変換が適用され、そうでない(すべての非ゼロ係数が走査順序において最初のN個の係数のみに存在する)場合、非分離可能変換が適用される。
【００９８】
別の例では、変換のタイプは、やはりフラグ/インデックスによってシグナリングされるが、異なる位置における係数をエントロピーコーディング(エントロピー符号化またはエントロピー復号)するためのコンテキストモデルは、シグナリングされるフラグ/インデックスの値に依存し得る。
【００９９】
別の例では、上述の変換選択を示すためのフラグまたはインデックスは、N番目の係数またはすべての係数の後にシグナリングされる。フラグまたはインデックスはコンテキストコーディングされ得、ここで、コンテキストは、最後の非ゼロ係数の位置に依存する。たとえば、コンテキストは、最後の非ゼロ係数がN番目の係数の前に出現するのか、またはその後に出現するのかに依存し得る。最後の非ゼロ係数がN番目の係数自体において止まる場合、コンテキストモデルは、前に言及したN番目の係数の前もしくは後のいずれかのグループに関連付けられてよく、または別個のコンテキストが割り当てられる場合がある。
【０１００】
ビデオエンコーダ20は、シグナリングユニットに対するシンタックス要素を符号化/シグナリングし得、ビデオデコーダ30は、シグナリングユニットのシンタックス要素に対する値を復号および解釈し得る。前に説明したように、シンタックス要素はシグナリングユニットレベルにおいてシグナリングされ得る。しかしながら、いくつかのシンタックス要素は、シグナリングユニットの中に含められるすべてのブロックに適用可能とは限らないことがある。
【０１０１】
たとえば、NSSTなどの2次変換は、非ゼロ係数を有するイントラ予測ブロックのみに適用されることがある。2次変換が適用されるべきブロックがシグナリングユニットの中にない場合があり得る。そのような場合にとって、NSST情報、たとえば、そのようなシグナリングユニットに対するNSSTインデックスまたはNSSTフラグをシグナリングすることは必要とされず、単にビットを浪費し得る。別の例では、EMTなどの第1の変換が、非ゼロの残差ブロックに適用される。シグナリングユニットの中に含まれるすべてのブロックがゼロ残差を有し、EMT情報、たとえば、EMTフラグまたはEMTインデックスをシグナリングすることはそのようなシグナリングユニットにとって必要とされず、単にビットを浪費し得る場合もあり得る。
【０１０２】
いくつかの例では、ビデオエンコーダ20は、シグナリングユニットシンタックスシグナリングを、そのようなシグナリングが適用可能でありシグナリングユニットの中に含まれる最初のブロックまで延期してよい。言い換えれば、そのようなシグナリングが適用可能でない、走査順序においてシグナリングユニットの冒頭にあるブロックに対して、シグナリングユニットシンタックスはシグナリングされない。同様に、ビデオデコーダ30は、シグナリングユニットシンタックス要素の値を、シグナリングユニットの中でシグナリングユニットシンタックス要素に後続するブロックのみに適用することになる。
【０１０３】
たとえば、ビデオエンコーダ20は、シグナリングユニット内のすべてのブロックに適用可能ないくつかのタイプの情報を、その情報が適用可能であるブロックがシグナリングユニットの中にあって初めてシグナリングしてよい。同様に、ビデオデコーダ30は、シグナリングユニット内のすべてのブロックに適用可能ないくつかのタイプの情報を、その情報が適用されるブロックがシグナリングユニットの中にあって初めて構文解析してよい。情報は、特定のコーディングツール、シンタックス要素などを識別する情報であってよい。
【０１０４】
一例として、シグナリングユニットの中の、非ゼロの残差を有する最初のイントラブロックの中でNSST情報(インデックス、フラグなど)を、ビデオエンコーダ20がシグナリングし得るとともにビデオデコーダ30が受信し得る。別の例では、シグナリングユニットの中の最初の非ゼロブロックにおいてEMT情報(インデックス、フラグなど)を、ビデオエンコーダ20がシグナリングし得るとともにビデオデコーダ30が受信し得る。これらのブロックは、必ずしも対応するシグナリングユニットの冒頭にあるとは限らないことがある。いくつかの例では、シンタックス要素を使用する最初のブロックに対してシンタックス要素(たとえば、コーディングツールまたは他のタイプのシンタックス要素のための情報)がシグナリングされると、その情報は、シンタックス要素を使用するとともにブロック走査順序においてその最初のブロックに後続する、すべてのブロックにとって同一であり得る。しかしながら、このことは、すべての場合における要件と見なされるべきでない。
【０１０５】
そのようなシンタックス要素が適用可能であることになる任意のブロックをシグナリングユニットが含むかどうかにかかわらず、シンタックス要素が常にシグナリングユニットレベルにおいてシグナリングされるシグナリング技法および受信技法と比較して、シグナリングユニットシンタックス要素のシグナリングを延期することによって、そのようなシンタックス要素を必要とするブロックがシグナリングユニットの中にないか、またはそのようなシグナリングが適用され得るブロックがシグナリングユニットの中にない場合、シンタックス要素に関連するビットが節約され得る。
【０１０６】
ビデオエンコーダ20は、そのような情報が適用可能である、シグナリングされる情報およびシグナリングユニットの中に含まれるブロックタイプに応じて、シグナリングユニットレベルにおける(必ずしも変換関連とは限らない)他のシンタックス要素のシグナリングを延期するために、類似の技法を利用し得る。シグナリングユニットの情報のシグナリングおよび構文解析を延期する上記の例は、限定的と見なされるべきでない。
【０１０７】
様々なシンタックス要素が、シグナリングユニットに固有であると見なされてよい。いくつかのシンタックス要素は、シグナリングユニットのためだけに導入され得、他のブロックのために存在しなくてもよい。たとえば、そのようなシンタックス要素は、制御フラグおよびコーディングモード関連パラメータであり得る。一例では、シグナリングユニットシンタックス要素は、前に述べたように第1の変換(たとえば、EMT)および/または2次変換シンタックス要素(たとえば、NSSTまたはROTフラグおよび/またはインデックス)のいずれかまたはすべてを含み、そのようなシンタックス要素は、シグナリングユニットよりも大きいかまたはシグナリングユニットの中に含まれないブロックのために存在する必要がない。
【０１０８】
代替または追加として、シグナリングユニットに対してシグナリングされるブロックの既存のシンタックス要素は、シグナリングユニットよりも大きいかまたはシグナリングユニットの中に含まれないブロックに対してシグナリングされる同じシンタックス要素とは異なる範囲値または異なるセマンティクス/解釈を有してよい。一例では、第1の変換および2次変換シンタックス要素をいつシグナリングすべきかを識別する非ゼロ係数しきい値は、他のブロックに対するよりもシグナリングユニットに対して異なってよい。そのようなしきい値は、他のブロックに対する対応するしきい値よりも大きくてもまたは小さくてもよい。
【０１０９】
たとえば、(NSSTまたはROTなどの)2次変換インデックスおよび/またはフラグは、シグナリングユニットの中の、少なくとも1つの非ゼロ変換係数を有するブロックに対してシグナリングされ得、ブロックが少なくとも2つの非ゼロ係数を有する場合、2次変換インデックスは、シグナリングユニットよりも大きいかまたはシグナリングユニットの中に含まれないブロックに対してシグナリングされ得る。2次変換インデックスがシグナリングされないとき、ビデオデコーダ30は、たとえば、0などのデフォルト値に等しいものとして2次変換インデックスの値を推測する。第1の変換または任意の他の変換に同じ技法が適用され得る。
【０１１０】
そのようなシグナリングユニット固有のパラメータはまた、シグナリングユニットが属するスライスタイプおよび/またはタイルに従って異なってよい。たとえば、Iスライス、Pスライス、およびBスライスは、異なるシグナリングユニットパラメータ、異なる範囲値、または異なるセマンティクス/解釈を有してよい。
【０１１１】
上記で説明したシグナリングユニットパラメータは変換に限定されず、任意のコーディングモードとともに使用され得、または任意のモードに導入され得る。
【０１１２】
ビデオエンコーダ20は、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダの中でブロックベースシンタックスデータ、ピクチャベースシンタックスデータ、およびシーケンスベースシンタックスデータなどのシンタックスデータをビデオデコーダ30へ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータをさらに送り得る。
【０１１３】
ビデオエンコーダ20およびビデオデコーダ30は各々、適用可能な場合、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適なエンコーダ回路またはデコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれも、複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合されてよい。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備えてよい。
【０１１４】
図2は、2次変換インデックスを2値化するための技法を実施し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオにおける時間冗長性を低減または除去するために時間予測に依存する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースコーディングモードのいずれかを指すことがある。
【０１１５】
図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40、参照ピクチャメモリ64(復号ピクチャバッファ(DPB)と呼ばれることもある)、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。モード選択ユニット40は、次いで動き補償ユニット44、動き推定ユニット42、イントラ予測ユニット46、および区分ユニット48を含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58、逆変換ユニット60、および加算器62を含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するために、デブロッキングフィルタ(図2に示さず)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタ処理することになる。追加のフィルタ(ループ内またはループ後)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示さないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
【０１１６】
符号化プロセス中、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間予測を行うために、1つまたは複数の参照フレームの中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測符号化を実行する。イントラ予測ユニット46は、代替として、空間予測を行うために、コーディングされるべきブロックと同じフレームまたはスライスの中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測符号化を実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【０１１７】
その上、区分ユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスをCTUに区分し得、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてCTUの各々をサブCUに区分し得る。モード選択ユニット40は、CTUをサブCUに区分することを示す4分木データ構造をさらに生成し得る。4分木のリーフノードCUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。
【０１１８】
モード選択ユニット40は、たとえば、誤差結果に基づいて、予測モードのうちの一方、すなわち、イントラ予測またはインター予測を選択し得、得られた予測ブロックを、残差データを生成するために加算器50に、また参照フレームとして使用するために符号化ブロックを再構成するために加算器62に提供する。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素を、エントロピー符号化ユニット56に提供する。
【０１１９】
動き推定ユニット42および動き補償ユニット44は、高集積されてよいが、概念的な目的のために別個に図示される。動き推定ユニット42によって実行される動き推定は、ビデオブロックに対する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム(または、他のコード化ユニット)内でコーディングされている現在ブロックに対して、参照フレーム(または、他のコード化ユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックとは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックと密に一致すると見出されるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64の中に記憶された参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対する動き探索を実行し得、分数ピクセル精度で動きベクトルを出力し得る。
【０１２０】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスの中のビデオブロックのPU用の動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されてよく、それらの各々が、参照ピクチャメモリ64の中に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44へ送る。
【０１２１】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在ビデオブロックのPU用の動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つの中で指す予測ブロックを位置特定し得る。加算器50は、以下で説明するように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、ルーマ成分に基づいて計算された動きベクトルをクロマ成分とルーマ成分の両方に対して使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30によって使用するために、ビデオブロックおよびビデオスライスに関連するシンタックス要素を生成し得る。
【０１２２】
イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。詳細には、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードの中から使用するのに適切なイントラ予測モードを選択し得る。
【０１２３】
たとえば、イントラ予測ユニット46は、テストされた様々なイントラ予測モードに対してレートひずみ分析を使用してレートひずみ値を計算し得、テストされたモードの間でレートひずみ特性が最良のイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または、誤差)の量、ならびに、符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックにとって最良のレートひずみ値を呈するのかを決定するために、様々な符号化ブロックに対してひずみおよびレートから比を計算し得る。
【０１２４】
ブロック用のイントラ予測モードを選択した後、イントラ予測ユニット46は、ブロック用の選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化してよい。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正済みイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)を含み得る、送信されるビットストリーム構成データの中に、様々なブロックのための符号化コンテキストの定義、ならびにコンテキストの各々に対して使用すべき、可能性の最も高いイントラ予測モードの表示、イントラ予測モードインデックステーブル、および修正済みイントラ予測モードインデックステーブルを含めてよい。
【０１２５】
ビデオエンコーダ20は、モード選択ユニット40からの予測データをコーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似の変換などの変換を残差ブロックに適用して、変換係数値を備えるビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換(DST)、または他のタイプの変換が、DCTの代わりに使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用して、変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域などの変換領域に変換し得る。
【０１２６】
加えて、いくつかの例では、たとえば、ブロックがイントラ予測されるとき、変換処理ユニット52は、第1の変換から得られた変換係数に非分離可能2次変換(NSST)などの2次変換を適用し得る。変換処理ユニット52はまた、エントロピー符号化されるべき、ブロックのための2次変換シンタックス要素に対する1つまたは複数の値を、エントロピー符号化ユニット56に渡してよい。エントロピー符号化ユニット56は、本開示の技法に従って、図3に関して以下でより詳細に説明するように、これらおよび/または他のシンタックス要素(たとえば、2次変換シンタックス要素または他のシグナリングユニットシンタックス要素)をエントロピー符号化し得る。
【０１２７】
変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送り得る。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。
【０１２８】
量子化に続いて、エントロピー符号化ユニット56は、量子化変換係数(および、2次変換シンタックス要素、シグナリングユニットシンタックス要素、コーディングツールシンタックス要素、拡張多重変換(EMT)シンタックス要素などの、関連するシンタックス要素に対する任意の対応する値)をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率区間区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合には、コンテキストは隣接ブロックに基づいてよい。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)へ送信され得るか、または後で送信もしくは取出しができるようにアーカイブされ得る。
【０１２９】
本開示の技法によれば、ビデオエンコーダ20は、いくつかのシンタックス要素をシグナリングユニットレベルにおいて符号化し得る。シグナリングユニットは、概して、ビデオデータの2つ以上のブロック(たとえば、コーディングツリーブロック(CTB)またはコーディングユニット(CU))に関するシンタックス要素を含む。たとえば、ブロックは、共通のQTBT構造の様々なブランチ/ノードまたは異なるQTBT構造に対応し得る。
【０１３０】
上記で説明したように、一例では、ビデオエンコーダ20は、シグナリングユニットのシンタックス要素をシグナリングすることを、ビデオエンコーダ20がそれらのシグナリングユニットシンタックス要素が関係するブロックに遭遇するまで延期し得る。このようにして、シグナリングユニットが、シグナリングユニットシンタックス要素が関係するいかなるブロックも最終的に含まない場合、ビデオエンコーダ20は、シグナリングユニットシンタックス要素を符号化することを完全に回避し得る。シグナリングユニットが、シグナリングユニットシンタックス要素が関係するブロックを含む場合、ビデオエンコーダ20は、これらのシンタックス要素を符号化して、符号化/復号順序においてシグナリングユニットシンタックス要素が関係しないブロックに後続するとともにシグナリングユニットシンタックス要素が関係するブロックに先行するビットストリームの部分を形成し得る。シグナリングユニットシンタックス要素は、NSST情報(NSSTフラグおよび/またはインデックス)、EMT情報(EMTフラグおよび/またはインデックス)などのいずれかまたはすべてを含み得る。
【０１３１】
たとえば、モード選択ユニット40は、イントラ予測ブロックが(加算器50によって計算されるような)ゼロまたは非ゼロの残差を生じるかどうかを決定し得る。モード選択ユニット40は、非ゼロの残差を有するイントラ予測ブロックが符号化される(すなわち、残差ブロックが少なくとも1つの非ゼロ係数を有する)まで、シグナリングユニットのためのシグナリングユニットシンタックス要素の決定を待ってよい。イントラ予測ブロックが非ゼロの残差を有することを識別した後、モード選択ユニット40は、イントラ予測ブロックを含むシグナリングユニットのために符号化されるべき1つまたは複数のシグナリングユニットシンタックス要素を決定し得、その上、エントロピー符号化ユニット56は、符号化/復号順序においてシグナリングユニットの他のブロックに後続するがシグナリングユニットのイントラ予測ブロックに先行する位置において、シグナリングユニットシンタックス要素に対する値をエントロピー符号化し得る。
【０１３２】
逆量子化ユニット58および逆変換ユニット60は、それぞれ、逆量子化および逆変換を適用して、ピクセル領域における残差ブロックを再構成する。詳細には、加算器62は、参照ピクチャメモリ64の中に記憶するために再構成ビデオブロックを生成するために、動き補償ユニット44またはイントラ予測ユニット46によって前に生成された動き補償された予測ブロックに、再構成残差ブロックを加える。再構成ビデオブロックは、後続のビデオフレームの中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【０１３３】
図2のビデオエンコーダ20は、ビデオデータのブロックのための2次変換(たとえば、非分離可能2次変換(NSST))シンタックス要素にとっての最大値を決定し、決定された最大値に基づいて2次変換(たとえば、NSST)シンタックス要素に対する値を2値化するように構成され得る、ビデオエンコーダの一例を表す。ビデオエンコーダ20は、2次変換(たとえば、NSST)シンタックス要素に対する値をさらにエントロピー符号化してよい。
【０１３４】
図3は、本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー符号化ユニット56のブロック図である。エントロピー符号化ユニット56は、最初にシンタックス要素118を受信する。シンタックス要素118がすでに2進値シンタックス要素である場合、2値化のステップはスキップされてよい。シンタックス要素118が非2進値シンタックス要素である場合、バイナライザ120がシンタックス要素を2値化する。
【０１３５】
バイナライザ120は、バイナリ決定のシーケンスへの非2進値のマッピングを実行する。これらのバイナリ決定は、「ビン」と呼ばれることがある。たとえば、変換係数レベルに対して、レベルの値は連続するビンに分解されてよく、各ビンは係数レベルの絶対値がいくつかの値よりも大きいか否かを示す。たとえば、変換係数に対して、ビン0(有意性フラグと呼ばれることがある)は変換係数レベルの絶対値が0よりも大きいか否かを示し、ビン1は変換係数レベルの絶対値が1よりも大きいか否かを示し、以下同様である。非2進値シンタックス要素ごとに、固有のマッピングが策定されてよい。
【０１３６】
バイナライザ120は、エントロピー符号化ユニット56のバイナリ算術符号化側に各ビンを渡す。すなわち、非2進値シンタックス要素の所定のセットに対して、各ビンタイプ(たとえば、ビン0)は、次のビンタイプ(たとえば、ビン1)の前に符号化される。本開示の技法によれば、イントラ予測されたビデオデータのブロックの(非分離可能2次変換(NSST)シンタックス要素などの)2次変換シンタックス要素の値を2値化するとき、バイナライザ120は、たとえば、ブロックを予測するために使用されるイントラ予測モード、および/またはブロックのサイズなどの他のパラメータに基づいて、ブロックのための2次変換(たとえば、NSST)シンタックス要素の最大可能値(maximum possible value)を決定し得る。
【０１３７】
一例では、バイナライザ120は、ブロック用のイントラ予測モードがクロマ成分に対するDCモード、平面モード、またはLMモードであった場合、NSSTインデックスにとっての最大可能値が3に等しいと決定し、そうでない場合、NSSTインデックスにとっての最大可能値が4に等しいと決定する。バイナライザ120は、次いで、決定された最大可能値にかかわらず共通の2値化技法を使用して(たとえば、NSSTインデックスにとっての決定された最大可能値が3であるのかまたは4であるのかにかかわらず短縮単項2値化を使用して)、決定された最大可能値に基づいてNSSTインデックスに対する実際の値を2値化する。
【０１３８】
エントロピー符号化は、通常モードまたはバイパスモードのいずれかで実行され得る。バイパスモードでは、バイパス符号化エンジン126が、固定確率モデルを使用して、たとえば、ゴロムライス符号化または指数ゴロム符号化を使用して、算術符号化を実行する。バイパスモードは、概して、より予測可能なシンタックス要素に対して使用される。
【０１３９】
通常モードCABACでのエントロピー符号化は、コンテキストベースバイナリ算術符号化を実行することを伴う。通常モードCABACは、通常、前にコーディングされたビンの値が与えられるとビンの値の確率がそれに対して予測可能である、ビン値を符号化するために実行される。コンテキストモデラ122は、ビンが最低の可能性のシンボル(LPS:least probable symbol)である確率を決定する。コンテキストモデラ122は、ビン値およびコンテキストモデル(たとえば、確率状態σ)を通常符号化エンジン124に出力する。コンテキストモデルは、一連のビンのための初期コンテキストモデルであってよく、またはコンテキストモデラ122は、前に符号化されたビンのコーディングされた値に基づいてコンテキストモデルを決定してよい。コンテキストモデラ122は、前にコーディングされたビンがMPSまたはLPSであったか否かに基づいてコンテキスト状態を更新し得る。
【０１４０】
本開示の技法によれば、コンテキストモデラ122は、上記で説明した2次変換シンタックス要素にとっての決定された最大可能値に基づいて、(NSSTシンタックス要素などの)2次変換シンタックス要素をエントロピー符号化するためのコンテキストモデルを決定するように構成され得る。
【０１４１】
コンテキストモデラ122がコンテキストモデルおよび確率状態σを決定した後、通常符号化エンジン124は、コンテキストモデルを使用してビン値に対してBACを実行する。代替として、バイパスモードでは、バイパス符号化エンジン126は、バイナライザ120からのビン値をバイパス符号化する。いずれの場合も、エントロピー符号化ユニット56は、エントロピー符号化データを含むエントロピー符号化ビットストリームを出力する。
【０１４２】
このようにして、図1および図2のビデオエンコーダ20(および、図3に関して説明したそれらのエントロピー符号化ユニット56)は、ビデオデータを記憶するように構成されたメモリと、回路の中に実装された1つまたは複数のプロセッサとを含む、ビデオエンコーダの一例を表し、1つまたは複数のプロセッサは、2次変換を使用してビデオデータのブロックの中間変換係数を変換することと、ブロック用の2次変換シンタックス要素にとっての最大可能値を決定することであって、2次変換シンタックス要素の値が2次変換を表すことと、最大可能値にかかわらず共通の2値化方式を使用して、2次変換シンタックス要素に対する値を2値化することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する2値化値をエントロピー符号化することとを行うように構成される。
【０１４３】
図4は、2次変換インデックスを2値化するための技法を実施し得るビデオデコーダ30の一例を示すブロック図である。図4の例では、ビデオデコーダ30は、エントロピー復号ユニット70、動き補償ユニット72、イントラ予測ユニット74、逆量子化ユニット76、逆変換ユニット78、参照ピクチャメモリ82、および加算器80を含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。
【０１４４】
いくつかの例では、エントロピー復号ユニット70は、シグナリングユニットのいくつかのシンタックス要素を復号する。たとえば、ビデオデコーダ30は、ビデオデータの2つ以上のブロックが共通のシグナリングユニットに対応すると決定し得る。エントロピー復号ユニット70は、本開示の技法に従って、シグナリングユニットのためのシンタックス要素をエントロピー復号し得る。たとえば、エントロピー復号ユニット70は、(非分離可能2次変換(NSST)インデックスおよび/またはフラグなどの)2次変換シンタックス要素、拡張多重変換(EMT)シンタックス要素(たとえば、EMTインデックスおよび/またはフラグ)などをエントロピー復号し得る。エントロピー復号ユニット70は、シグナリングユニットの1つまたは複数のブロックに後続するがシグナリングユニットの1つまたは複数の他のブロックに先行するシグナリングユニットシンタックス要素をエントロピー復号し得、復号順序においてそのシンタックス要素に後続するブロックのみにシグナリングユニットシンタックス要素の値を適用し得る。
【０１４５】
その上、ビデオデコーダ30は、シンタックス要素が存在すること、たとえば、これらのシグナリングユニットシンタックス要素の直後のブロックがインター予測されるとともに非ゼロの残差を有することから、いくつかのデータを推測し得る。したがって、ビデオデコーダは、(たとえば、ブロックがイントラ予測されていること、およびブロックがコーディングされていること、すなわち、非ゼロの残差値を有することを示す)関連するブロックレベルシンタックス要素がビットストリームの中に存在しないと決定し得、それによって、ビットストリームの後続のデータが他のシンタックス要素に適用されると決定し得る。
【０１４６】
さらに、エントロピー復号ユニット70は、図5に関して以下でより詳細に説明するように、データをエントロピー復号し得る。たとえば、本開示の技法によれば、エントロピー復号ユニット70は、2次変換シンタックス要素値にとっての最大可能値にかかわらず、共通の2値化方式(たとえば、短縮単項2値化)を使用して2次変換シンタックス要素値を逆2値化し得る。
【０１４７】
動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得るが、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【０１４８】
復号プロセス中、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化ビデオビットストリームをビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルおよび他のシンタックス要素を動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
【０１４９】
ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モード、および現在フレームまたは現在ピクチャの、前に復号されたブロックからのデータに基づいて、現在ビデオスライスのビデオブロックに対する予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされるとき、動き補償ユニット72は、(ビデオブロックがインター予測されていると想定して)エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在ビデオスライスのビデオブロックに対する予測ブロックを生成する。インター予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82の中に記憶されている参照ピクチャに基づいて、デフォルトの構成技法を使用して参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。PスライスおよびBスライスのブロックもイントラ予測されてよい。
【０１５０】
動き補償ユニット72は、動きベクトルおよび他のシンタックス要素を構文解析することによって、現在ビデオスライスのビデオブロックのための予測情報を決定し、復号中の現在ビデオブロックに対する予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)、スライス用の参照ピクチャリストのうちの1つまたは複数のための構成情報、スライスのインター符号化ビデオブロックごとの動きベクトル、スライスのインターコード化ビデオブロックごとのインター予測ステータス、および現在ビデオスライスの中のビデオブロックを復号するための他の情報を決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【０１５１】
動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用されるような補間フィルタを使用して、参照ブロックのサブ整数ピクセルに対する補間値を計算し得る。この場合、動き補償ユニット72は、ビデオエンコーダ20によって使用された補間フィルタを、受信されたシンタックス要素から決定し得、その補間フィルタを使用して予測ブロックを生成し得る。
【０１５２】
逆量子化ユニット76は、ビットストリームの中で提供されエントロピー復号ユニット70によって復号された量子化変換係数を、逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中のビデオブロックごとにビデオデコーダ30によって計算された量子化パラメータQPYを使用することを含み得る。
【０１５３】
逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に類似の逆変換プロセスを変換係数に適用する。
【０１５４】
動き補償ユニット72が動きベクトルおよび他のシンタックス要素に基づいて現在ビデオブロックに対する予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために復号ブロックをフィルタ処理するために、デブロッキングフィルタも適用され得る。ピクセル遷移を平滑化し、またはビデオ品質を別の方法で改善するために、(コーディングループの中またはコーディングループの後のいずれかの)他のループフィルタも使用され得る。所与のフレームまたはピクチャの中の復号ビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82の中に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示できるように、復号ビデオを記憶する。
【０１５５】
図4のビデオデコーダ30は、ビデオデータのブロックのための2次変換(たとえば、非分離可能2次変換(NSST))シンタックス要素にとっての最大値を決定し、決定された最大値に基づいてNSSTシンタックス要素に対する値を2値化するように構成され得る、ビデオデコーダの一例を表す。ビデオデコーダ30は、NSSTシンタックス要素に対する値をさらにエントロピー復号し得る。
【０１５６】
図5は、本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー復号ユニット70のブロック図である。図5のエントロピー復号ユニット70は、図3で説明したエントロピー符号化ユニット56の方法とは逆の方法でCABACを実行する。エントロピー復号ユニット70は、ビットストリーム218からエントロピー符号化ビットを受信する。エントロピー復号ユニット70は、エントロピー符号化ビットがバイパスモードまたは通常モードを使用してエントロピー符号化されたか否かに基づいて、コンテキストモデラ220またはバイパス復号エンジン222のいずれかにエントロピー符号化ビットを提供する。エントロピー符号化ビットがバイパスモードでエントロピー符号化された場合、バイパス復号エンジン222は、たとえば、エントロピー符号化ビットをエントロピー復号するために、ゴロムライス復号または指数ゴロム復号などのバイパス復号を使用する。
【０１５７】
エントロピー符号化ビットが通常モードでエントロピー符号化された場合、コンテキストモデラ220は、エントロピー符号化ビットのための確率モデルを決定してよく、通常復号エンジン224は、エントロピー符号化ビットをエントロピー復号して、非2進値シンタックス要素(または、2進値の場合はシンタックス要素自体)のビンを生成し得る。
【０１５８】
コンテキストモデラ220は、本開示の技法を使用して、2次変換シンタックス要素および/または拡張多重変換(EMT)シンタックス要素などのいくつかのシンタックス要素(たとえば、NSSTインデックス、NSSTフラグ、EMTインデックス、EMTフラグなど)に対するコンテキストモデルおよび確率状態を決定し得る。たとえば、コンテキストモデラ220は、NSSTシンタックス要素の決定された最大可能値に基づいてコンテキストモデルを決定し得る。エントロピー復号ユニット70は、たとえば、NSSTシンタックス要素が対応するブロック用のイントラ予測モード、および/またはブロックのサイズに基づいて、NSSTシンタックス要素の最大可能値を決定し得る。
【０１５９】
コンテキストモデラ220がコンテキストモデルおよび確率状態σを決定した後、通常復号エンジン224は、決定されたコンテキストモデルに基づいて、ビン値に対してバイナリ算術復号を実行する。
【０１６０】
通常復号エンジン224またはバイパス復号エンジン222がビンをエントロピー復号した後、逆バイナライザ230は、ビンを非2進値シンタックス要素の値に戻して変換するために逆マッピングを実行し得る。本開示の技法によれば、逆バイナライザ230は、2次変換シンタックス要素値にとっての最大可能値にかかわらず、共通の2値化方式(たとえば、短縮単項2値化)を使用して(NSST、ROT、および/またはEMT値などの)2次変換シンタックス要素値を逆2値化し得る。
【０１６１】
たとえば、イントラ予測されたビデオデータのブロックの(非分離可能2次変換(NSST)シンタックス要素などの)2次変換シンタックス要素の値を逆2値化するとき、逆バイナライザ230は、たとえば、ブロックを予測するために使用されるイントラ予測モード、および/またはブロックのサイズなどの他のパラメータに基づいて、ブロックのための2次変換(たとえば、NSST)シンタックス要素の最大可能値を決定し得る。
【０１６２】
一例では、逆バイナライザ230は、ブロック用のイントラ予測モードがクロマ成分に対するDCモード、平面モード、またはLMモードであった場合、NSSTインデックスにとっての最大可能値が3に等しいと決定し、そうでない場合、NSSTインデックスにとっての最大可能値が4に等しいと決定する。逆バイナライザ230は、次いで、決定された最大可能値にかかわらず共通の2値化技法を使用して(たとえば、NSSTインデックスにとっての決定された最大可能値が3であるのかまたは4であるのかにかかわらず短縮単項逆2値化を使用して)、決定された最大可能値に基づいて、エントロピー復号されたビンストリングからのNSSTインデックスに対する実際の値を逆2値化する。
【０１６３】
このようにして、図1および図4のビデオデコーダ30(図5に関して説明したエントロピー復号ユニット70を含む)は、ビデオデータを記憶するように構成されたメモリと、回路の中に実装された1つまたは複数のプロセッサとを含む、ビデオデコーダの一例を表し、1つまたは複数のプロセッサは、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号することと、ブロック用の2次変換を決定するために、最大可能値にかかわらず共通の2値化方式を使用して2次変換シンタックス要素に対する値を逆2値化することと、決定された2次変換を使用してブロックの変換係数を逆変換することとを行うように構成される。
【０１６４】
図6は、本開示の技法による、ビデオデータを符号化する例示的な方法を示すフローチャートである。図6の方法は、例および説明のために、上記の図1、図2、および図3に関して説明したようなビデオエンコーダ20およびそれらの構成要素に関して説明される。しかしながら、他の例では、他のビデオ符号化デバイスがこの方法または本開示の技法に一致する類似の方法を実行し得ることを理解されたい。
【０１６５】
最初に、ビデオエンコーダ20は、符号化されるべきブロックを受信する(250)。この例では、ビデオエンコーダ20のモード選択ユニット40がブロックをイントラ予測すべきと決定することが想定される(252)。図6に示さないが、この決定は、イントラ予測モードまたはインター予測モードを含む様々な予測モードを使用してブロックを予測することと、ブロックが特定のイントラ予測モード(たとえば、角度つきモード、またはDCモード、平面モード、もしくはLMモードなどの角度なしモード)を使用してイントラ予測されるべきであると最終的に決定することとを含んでよい。ビデオエンコーダ20のイントラ予測ユニット46は、次いで、イントラ予測モードを使用してブロックをイントラ予測して、予測ブロックを生成する。
【０１６６】
加算器50は、次いで、残差ブロックを計算する(254)。詳細には、加算器50は、残差ブロックを計算するために、元のブロックと予測ブロックとの間のピクセルごとの差分を計算し、ここで、残差ブロックの各値(サンプル)は対応するピクセル差分を表す。
【０１６７】
変換処理ユニット52は、次いで、中間変換係数を生成するために、DCTまたはEMTなどの第1の変換を使用して残差ブロックを変換する(256)。変換処理ユニット52はまた、この例では、NSSTまたはROTなどの2次変換を、第1の変換から得られた中間変換係数に適用する(258)。いくつかの例では、変換処理ユニット52は、複数の利用可能な2次変換の中から2次変換を選択し得る。したがって、変換処理ユニット52は、1つまたは複数の2次変換シンタックス要素、たとえば、NSSTフラグ、NSSTインデックス、ROTフラグ、ROTインデックス、EMTフラグ、および/またはEMTインデックスに対する値を生成し得、これらのシンタックス要素値をエントロピー符号化ユニット56に提供し得る。
【０１６８】
量子化ユニット54は、2次(または、任意の後続の)変換によって生成された最終的な変換係数を量子化し、エントロピー符号化ユニット56は、量子化変換係数、ならびにブロックの他のシンタックス要素(たとえば、予測モードを表すシンタックス要素、ブロックのサイズを表す区分シンタックス要素など)をエントロピー符号化する(260)。いくつかの例では、エントロピー符号化ユニット56はまた、ブロックを含むシグナリングユニットのシグナリングユニットシンタックス要素をエントロピー符号化する。ブロックが、そのようなシグナリングユニットシンタックス要素が適用される最初のブロックである場合、エントロピー符号化ユニット56は、上記で説明したように、シグナリングユニットシンタックス要素を符号化してよく、ブロックのための他のブロックベースシンタックス要素を出力する前にエントロピー符号化シグナリングユニットシンタックス要素を出力し得る。
【０１６９】
エントロピー符号化ユニット56はまた、上記で説明したように2次変換シンタックスをエントロピー符号化する。詳細には、バイナライザ120が、本開示の技法に従って2次変換シンタックス要素を2値化する(264)。たとえば、バイナライザ120は、2次変換シンタックス要素の最大可能値にかかわらず、短縮単項2値化などの特定の2値化方式を実行し得る。
【０１７０】
バイナライザ120は、上記で説明したように、たとえば、ブロックをイントラ予測するために使用されるイントラ予測モードに基づいて、2次変換シンタックス要素の最大可能値を決定し得る。たとえば、イントラ予測モードが角度なしモードである場合、バイナライザ120は2次変換シンタックス要素の最大可能値が3であると決定してよいが、イントラ予測モードが角度つきモードである場合、バイナライザ120は2次変換シンタックス要素の最大可能値が4であると決定してよい。この決定は2値化中に使用され得るが、いくつかの例では、この決定は、2次変換シンタックス要素値を2値化するためにバイナライザ120が実行する実際の2値化方式(たとえば、短縮単項2値化)に影響を及ぼさない。
【０１７１】
2値化の後、コンテキストモデラ122は、2次変換シンタックス要素をエントロピー符号化するために使用されるべきコンテキストを決定し得る(266)。いくつかの例では、コンテキストモデラ122は、上記で説明したように決定された2次変換シンタックス要素の最大可能値に基づいて、コンテキストを選択する。通常符号化エンジン124は、次いで、決定されたコンテキストを使用して2次変換シンタックス要素の2値化値をエントロピー符号化し得る(268)。
【０１７２】
このようにして、図6の方法は、2次変換を使用してビデオデータのブロックの中間変換係数を変換することと、ブロック用の2次変換シンタックス要素にとっての最大可能値を決定することであって、2次変換シンタックス要素の値が2次変換を表すことと、最大可能値にかかわらず共通の2値化方式を使用して、2次変換シンタックス要素に対する値を2値化することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する2値化値をエントロピー符号化することとを含む、ビデオデータを符号化する方法の一例を表す。
【０１７３】
図7は、本開示の技法による、ビデオデータを復号する方法の一例を示すフローチャートである。図7の方法は、例および説明のために、上記の図1、図4、および図5に関して説明したようなビデオデコーダ30およびそれらの構成要素に関して説明される。しかしながら、他の例では、他のビデオ符号化デバイスがこの方法または本開示の技法に一致する類似の方法を実行し得ることを理解されたい。
【０１７４】
最初に、エントロピー復号ユニット70は、ビデオデータのブロックの予測情報および量子化変換係数をエントロピー復号する(280)。本開示の技法によれば、エントロピー復号ユニット70はまた、ブロックのための2次変換シンタックス要素をエントロピー復号する。詳細には、コンテキストモデラ220が、2次変換シンタックス要素をエントロピー復号するために使用されるべきコンテキストを決定する(282)。コンテキストモデラ220は、2次変換シンタックス要素の最大可能値に基づいてコンテキストを決定し得る。たとえば、イントラ予測モードがDCモード、平面モード、またはLMモードなどの角度なしモードである場合、コンテキストモデラ220は2次変換シンタックス要素にとっての最大可能値が3であると決定してよいが、そうではなく、イントラ予測モードが角度つきモードである場合、コンテキストモデラ220は最大可能値が4であると決定してよい。コンテキストモデラ220は、次いで、2次変換シンタックス要素の最大可能値からコンテキストを決定し得る。通常復号エンジン224は、次いで、決定されたコンテキストを使用して2次変換シンタックス要素に対するデータをエントロピー復号し得る(284)。
【０１７５】
逆バイナライザ230は、次いで、2次変換シンタックス要素に対する値を生成するために、2次変換シンタックス要素に対するエントロピー復号されたデータを逆2値化し得る(286)。この値は、たとえば、2次変換が適用されるべきであるかどうか(たとえば、NSSTフラグまたはROTフラグ)、またそうである場合、複数の2次変換のうちのどれが適用されるべきであるのか(たとえば、NSSTインデックスまたはROTインデックス)を表し得る。
【０１７６】
逆量子化ユニット76は、次いで、ブロックに対するエントロピー復号された係数を逆量子化し得る(288)。逆変換ユニット78は、2次変換を実行すべきかどうか、またそうである場合、複数の2次変換のうちのどれを適用すべきであるのかを決定するために、2次変換シンタックス要素に対する値を使用し得る。2次変換が適用されることが図7において想定される。したがって、逆変換ユニット78は、最初に、中間変換係数を生成するために2次変換を使用して変換係数を逆変換し(290)、次いで、ブロックに対する残差ブロックを再生するために(DCTまたはEMTなどの)第1の変換を使用して中間変換係数を逆変換する(292)。
【０１７７】
イントラ予測ユニット74はまた、ブロックに対する予測ブロックを生成するために、示されたイントラ予測モードを使用してブロックをイントラ予測する(294)。加算器80は、次いで、復号ブロックを生成するために、ピクセルごとに予測ブロックと残差ブロックとを合成する(296)。最終的に、ビデオデコーダ30は、復号ブロックを出力する。ビデオデコーダ30はまた、たとえば、後で復号ブロックをイントラ予測またはインター予測する際に使用するために、復号ブロックを参照ピクチャメモリ82の中に記憶してよい。
【０１７８】
このようにして、図7の方法は、ビデオデータのブロック用の2次変換シンタックス要素にとっての最大可能値を決定することと、ブロック用の2次変換を表す2値化値を形成するために、ブロックの2次変換シンタックス要素に対する値をエントロピー復号することと、ブロック用の2次変換を決定するために、決定された最大可能値に基づいて2次変換シンタックス要素に対する値を逆2値化することと、決定された2次変換を使用してブロックの変換係数を逆変換することとを含む、方法の一例を表す。
【０１７９】
例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行されてよく、追加、統合、または完全に除外されてよい(たとえば、説明したすべての行為またはイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて並行して実行されてよい。
【０１８０】
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に相当するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であってよい。コンピュータプログラム製品がコンピュータ可読媒体を含んでよい。
【０１８１】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得るとともにコンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１８２】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積論理回路もしくは個別論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、または本明細書で説明した技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび/もしくはソフトウェアモジュール内に設けられてよく、または複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素で全体的に実装され得る。
【０１８３】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装されてよい。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示で説明されるが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられてよく、または好適なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【０１８４】
様々な例が説明されている。これらおよび他の例が、以下の特許請求の範囲内に入る。
【符号の説明】
【０１８５】
10  ビデオ符号化および復号システム
12  ソースデバイス
14  宛先デバイス
16  コンピュータ可読媒体
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
40  モード選択ユニット
42  動き推定ユニット
44  動き補償ユニット
46  イントラ予測ユニット
48  区分ユニット
50  加算器
52  変換処理ユニット
54  量子化ユニット
56  エントロピー符号化ユニット
58  逆量子化ユニット
60  逆変換ユニット
62  加算器
64  参照ピクチャメモリ
70  エントロピー復号ユニット
72  動き補償ユニット
74  イントラ予測ユニット
76  逆量子化ユニット
78  逆変換ユニット
80  加算器
82  参照ピクチャメモリ
118  シンタックス要素
120  バイナライザ
122  コンテキストモデラ
124  通常符号化エンジン
126  バイパス符号化エンジン
218  ビットストリーム
220  コンテキストモデラ
222  バイパス復号エンジン
224  通常復号エンジン
230  逆バイナライザ
【図１】
2019515561.tif 000003
【図２】
2019515561.tif 000004
【図３】
2019515561.tif 000005
【図４】
2019515561.tif 000006
【図５】
2019515561.tif 000007
【図６】
2019515561.tif 000008
【図７】
2019515561.tif 000009
【国際調査報告】
2019515561.tif 000010
2019515561.tif 000011
2019515561.tif 000012
2019515561.tif 000013
2019515561.tif 000014
2019515561.tif 000015
2019515561.tif 000016