関連出願の相互参照
[0001]本願は、2020年4月2日に出願された米国特許出願第16/838,553号、2019年4月5日に出願された米国仮特許出願第62/830,125号、および2019年5月31日に出願された米国仮特許出願第62/855,398号の利益を主張し、これら各々の内容全体が、参照により本明細書に組み込まれている。
[0002]本開示は、ビデオ符号化およびビデオ復号を含む、ビデオコーディングに関する。
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、アドバンストビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)規格、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびこのような規格の拡張に記載されているものなどの、ビデオコーディング技法をインプリメントする。ビデオデバイスは、このようなビデオコーディング技法をインプリメントすることによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオピクチャまたはビデオピクチャの一部分)が、ビデオブロックに区分され得、これは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノードとも呼ばれ得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対して空間的予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対して空間的予測を使用し得、または他の参照ピクチャ内の参照サンプルに対して時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
[0005]一般に、本開示は、ビデオコーディングにおける変換コーディングに関する技法を説明する。変換コーディングは、現代のビデオ圧縮規格の重要な要素である。本開示は、汎用のビデオコーディング(VVC:Versatile Video Coding)/ITU-T H.266のものなど、他のMTSツールを拡張するマルチプル変換選択(MTS:multiple transform selection)設計を説明する。本開示で説明される設計は、エンコーダがより多くの変換候補から変換を選ぶことを可能にするので、これらの技法は、コーディング効率を改善し得る。本開示はまた、コーディング効率の著しい低下なしにエンコーダおよびデコーダの複雑さを低減し得る低周波数非分離可能変換(LFNST:Low-Frequency Non-separable Transformation)の様々な簡略化されたバージョンを説明する。したがって、これらの技法は、アドバンストビデオコーデック、およびVVCなどの次世代ビデオコーディング規格において使用され得る。
[0006]一例では、ビデオデータをコーディング(符号化または復号)する方法が、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの1つの選択された変換方式を表す第1のコードワードをコーディングすることと、該選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの1つの2次変換であり、利用可能な2次変換の該セットからの該2次変換を表す第2のコードワードをコーディングすることと、該現在のブロックのための残差データのコーディング中に、該1次変換および該2次変換を適用することと、を含む。
[0007]別の例では、ビデオデータをコーディングするためのデバイスが、ビデオデータを記憶するように構成されたメモリと、回路中にインプリメントされる1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、該選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換の該セットからの該2次変換を表す第2のコードワードをコーディングすることと、該現在のブロックのための残差データのコーディング中に、該1次変換および該2次変換を適用することと、を行うように構成される。
[0008]別の例では、ビデオデータをコーディングするためのデバイスが、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングするための手段と、該選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換の該セットからの該2次変換を表す第2のコードワードをコーディングするための手段と、該現在のブロックのための残差データのコーディング中に、該1次変換および該2次変換を適用するための手段と、を含む。
[0009]別の例では、コンピュータ可読記憶媒体が、実行されると、プロセッサに、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、該選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換の該セットからの該2次変換を表す第2のコードワードをコーディングすることと、該現在のブロックのための残差データのコーディング中に、該1次変換および該2次変換を適用することと、を行わせる命令を記憶している。
[0010]1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点が、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
[0011]図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システムを示すブロック図である。
[0012]図2Aは、例示的な4分木2分木(QTBT)構造を示す概念図である。
図2Bは、対応するコーディングツリーユニット(CTU)を示す概念図である。
[0013]図3Aは、高効率ビデオコーディング(HEVC)の残差4分木に基づく例示的な変換方式を示す概念図である。
図3Bは、高効率ビデオコーディング(HEVC)の残差4分木に基づく例示的な変換方式を示す概念図である。
[0014]図4は、適応型変換選択を用いた(with)ハイブリッドビデオ符号化のための例示的なシステムを示すブロック図である。
[0015]図5Aは、別個の変換インプリメンテーションとして水平変換を示す概念図である。
図5Bは、別個の変換インプリメンテーションとして垂直変換を示す概念図である。
[0016]図6は、2つの変換を識別するために使用されるマルチプル変換選択(MTS)シグナリングの一例を表す概念図である。
[0017]図7は、例示的な変換割当ておよび対応するユーナリー(unary)コードワードを示す概念図である。
[0018]図8は、2次変換をサポートする例示的なMTS設計を示す概念図である。
[0019]図9は、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)が適用し得る低周波数非分離可能変換(LFNST)の例を示す概念図である。
[0020]図10は、H×Wブロックの(左上の部分における)係数のサブセットに適用されるLFNSTの一例を示す概念図である。
[0021]図11Aは、例示的な2ステップLFNSTプロセスのインプリメンテーションを示す概念図である。
図11Bは、例示的な2ステップLFNSTプロセスのインプリメンテーションを示す概念図である。
[0022]図12は、本開示の技法を実行し得る例示的なビデオエンコーダを示すブロック図である。
[0023]図13は、本開示の技法を実行し得る例示的なビデオデコーダを示すブロック図である。
[0024]図14は、本開示の技法による、現在のブロックを符号化するための例示的な方法を示すフローチャートである。
[0025]図15は、本開示の技法による、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。
[0026]図16は、本開示の技法による、例示的なビデオ符号化方法を示すフローチャートである。
[0027]図17は、本開示の技法による、例示的なビデオ復号方法を示すフローチャートである。
詳細な説明
[0028]本開示は、変換コーディングに関する技法を説明し、これは、例えば、M. Wien, High Efficiency Video Coding: Coding Tools and Specification, Springer- Verlag, Berlin, 2015に説明されているように、現代のビデオ圧縮規格の重要な要素である。本開示は、拡張されたマルチプル変換選択(MTS)技法を説明する。
[0029]一般に、ビデオデータは、連続した一連のピクチャとして表される。ビデオコーダは、ピクチャをブロックに区分し、ブロックの各々をコーディングする。コーディングは、一般に、予測コーディングと残差コーディングとを含む。予測中、ビデオコーダは、イントラ予測(予測ブロックが、同じピクチャの、隣接する以前にコーディングされたブロックから形成される)またはインター予測(予測ブロックが、以前にコーディングされたピクチャの、以前にコーディングされたブロックから形成される)を使用して、予測ブロックを形成し得る。残差ブロックは、予測ブロックと、元のコーディングされていないブロックとの間のピクセルごとの差分を表す。ビデオエンコーダは、変換係数を含む変換ブロックを生成するために、残差ブロックに変換を適用し得、一方、ビデオデコーダは、残差ブロックの1つのバージョンを再生するために、変換ブロックに逆変換を適用し得る。
[0030]入力N点ベクトルが、x=[x0,x1,...,xN-1]Tとして示されると仮定すると、それは、行列を乗じることによって、y=[y0,y1,...,yN-1]Tとして示される別のN点変換係数ベクトルに変換され、このプロセスは、以下の変換公式化のうちの1つに従ってさらに示され得、ここにおいて、kは、両端値を含む0~N-1である:
[0031]変換タイプは、変換基底関数の数学的公式化によって指定される。例えば、4点DST-VIIおよび8点DST-VIIは、Nの値にかかわらず、同じ変換タイプを有する。
[0032]一般性を失うことなく、上記の変換タイプは全て、以下の一般的公式化を使用して表され得る:
ここで、Tは、1つのある特定の変換の定義によって指定される変換行列、例えば、DCTタイプI~DCTタイプVIII、またはDSTタイプI~DSTタイプVIIIであり、Tの行ベクトル、例えば、[Ti,0,Ti,1,Ti,2,...,Ti,N-1]は、i番目の変換基底ベクトルである。N点入力ベクトルに適用される変換は、N点変換と呼ばれる。
[0033]また、1次元(1-D)入力データxに適用される上記の変換公式化が、以下のような行列乗算形式で表され得ることに留意されたく、
ここで、Tは、変換行列を示し、xは、入力データベクトルを示し、yは、出力変換係数ベクトルを示す。
[0034]上述された変換は、1-D入力データに適用され、変換はまた、2次元(2-D)入力データソースにも拡張され得る。Xが、入力M×Nデータ配列であると仮定する。2-D入力データに変換を適用する典型的な方法は、分離可能2-D変換および非分離可能2-D変換を含む。
[0035]分離可能2-D変換は、Xの水平ベクトルおよび垂直ベクトルに対する1-D変換を連続的に適用し、以下のように公式化される:
Y=C・X・RT
ここで、CおよびRは、それぞれ、所与のM×MおよびN×Nの変換行列を示す。公式化から、Cが、Xの列ベクトルに対して1-D変換を適用し、一方、Rが、Xの行ベクトルに対して1-D変換を適用することがわかる。本開示の後の部分では、簡潔さのために、CおよびRは、左(垂直)変換および右(水平)変換を示し得、変換ペアを形成すると見なされ得る。CがRに等しく、直交行列であるケースが存在する。このようなケースでは、分離可能2-D変換は、たった1つの変換行列によって決定される。
[0036]非分離可能2-D変換は、最初に、例として以下の数学的マッピングを行うことによって、Xの全ての要素を単一のベクトル、すなわち、X’に再編成している:
X’(i・N+j)=Xi,j
[0037]次いで、1-D変換T’が、下記のように、X’に対して適用される:
Y=T’・X’
ここで、T’は、(M*N)×(M*N)変換行列である。
[0038]ビデオコーディングでは、分離可能2-D変換が一般的に適用され、これは、分離可能2-D変換が、典型的に、1-D変換と比較してより少ない演算(加算および乗算)数を必要とするからである。
[0039]H.264/AVCなどの従来のビデオコーデックでは、4点および8点離散コサイン変換(DCT)タイプIIの整数近似(integer approximation)が、常にイントラ予測残差とインター予測残差との両方に対して適用される。残差サンプルの様々な統計値により良く適合するために、DCTタイプII以外のより柔軟なタイプの変換が、新世代のビデオコーデックにおいて利用される。例えば、HEVCでは、4点タイプVII離散サイン変換(DST)の整数近似が、イントラ予測残差のために利用され、これは、DSTタイプVIIが、イントラ予測方向に沿って生成される残差ベクトルについてDCTタイプIIよりも効率的であることが、(J.Han,A.Saxena and K. Rose,“Towards jointly optimal spatial prediction and adaptive transform in video/image coding, ”IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP),March 2010,pp.726-729において)理論的に証明されていると共に、実験的に実証されている。
例えば、DSTタイプVIIは、水平イントラ予測方向によって生成された行残差ベクトルについてDCTタイプIIよりも効率的である。HEVCでは、4点DSTタイプVIIの整数近似は、4×4ルーマイントラ予測残差ブロックにのみ適用される。HEVCで使用される4点DST-VIIを以下に示す:
[0040]HEVCでは、4×4ルーマイントラ予測残差ブロックでない残差ブロックについては、以下に示すように、4点、8点、16点および32点DCTタイプIIの整数近似も適用され得る:
[0041]図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生のコーディングされていないビデオ、符号化されたビデオ、復号された(例えば、再構成された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0042]図1に示されるように、システム100は、この例では、宛先デバイス116によって復号および表示されることになる符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して、宛先デバイス116にビデオデータを提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス102および宛先デバイス116は、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれ得る。
[0043]図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、および出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、およびディスプレイデバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、MTSデータをコーディングするための技法を適用するように構成され得る。したがって、ソースデバイス102は、ビデオ符号化デバイスの一例を表し、一方、宛先デバイス116は、ビデオ復号デバイスの一例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体化されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0044]図1に示されるようなシステム100は、単なる一例に過ぎない。一般に、任意のデジタルビデオ符号化および/または復号デバイスが、MTSデータをコーディングするための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためのコーディングされたビデオデータを生成するような、コーディングデバイスの単なる例に過ぎない。本開示は、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実行するデバイスとして参照する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例を表し、特に、それぞれビデオエンコーダおよびビデオデコーダを表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化および復号構成要素を含むように、実質的に対称的な方法で動作し得る。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ビデオデバイス102、116間の一方向または双方向のビデオ送信をサポートし得る。
[0045]一般に、ビデオソース104は、ビデオデータ(すなわち、生のコーディングされていないビデオデータ)のソースを表し、ビデオデータの連続する一連のピクチャ(「フレーム」とも呼ばれる)を、ピクチャのためのデータを符号化するビデオエンコーダ200に提供する。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからのビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを生成し得る。各ケースにおいて、ビデオエンコーダ200は、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、受信された順序(「表示順序」と呼ばれることもある)から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。次いで、ソースデバイス102は、例えば、宛先デバイス116の入力インターフェース122による、受信および/または取り出しのために、符号化されたビデオデータを、出力インターフェース108を介してコンピュータ可読媒体110上に出力し得る。
[0046]ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生のビデオおよびビデオデコーダ300からの生の復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、例えば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。この例では、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に類似したまたは同等の目的のために内部メモリを含み得ることが理解されるべきである。さらに、メモリ106、120は、符号化されたビデオデータ、例えば、ビデオエンコーダ200からの出力およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の一部は、例えば、生の復号されたおよび/または符号化されたビデオデータを記憶するための、1つまたは複数のビデオバッファとして割り振られ得る。
[0047]コンピュータ可読媒体110は、符号化されたビデオデータをソースデバイス102から宛先デバイス116にトランスポートすることが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータをリアルタイムで宛先デバイス116に直接送信することを可能にする通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするのに有用であり得るその他任意の機器を含み得る。
[0048]いくつかの例では、ソースデバイス102は、符号化されたデータを出力インターフェース108から記憶デバイス112に出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス116は、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。
[0049]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに、符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114上に記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、等)、または両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはこれらの組合せに従って動作するように構成され得る。
[0050]出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(例えば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のうちの任意のものに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108および入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、または同様のものなどのセルラ通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(登録商標))、Bluetooth(登録商標)規格、または同様のものなどの他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。例えば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に帰属する(attributed to)機能を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実行するためのSoCデバイスを含み得る。
[0051]本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを介した動的適応型ストリーミング(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。
[0052]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(例えば、記憶デバイス112、ファイルサーバ114、または同様のもの)から符号化されたビデオビットストリームを受信する。コンピュータ可読媒体110の符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、または同様のもの)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオエンコーダ200によって定義されるシグナリング情報を含み得、これはまた、ビデオデコーダ300によっても使用される。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちの任意のものを表し得る。
[0053]図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、オーディオエンコーダおよび/またはオーディオデコーダとそれぞれ一体化され得、共通のデータストリーム中にオーディオとビデオとの両方を含む多重化ストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0054]ビデオエンコーダ200およびビデオデコーダ300は、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダおよび/またはデコーダ回路のうちの任意のものとしてそれぞれインプリメントされ得る。本技法が部分的にソフトウェアにおいてインプリメントされるとき、デバイスは、好適な非一時的なコンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、これらのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(CODEC)の一部として一体化され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラ電話などのワイヤレス通信デバイスを備え得る。
[0055]ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれる、ITU-T H.265などのビデオコーディング規格、またはマルチビューおよび/またはスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、ITU-T H.266になることが計画されている最新の汎用のビデオコーディング(VVC)規格などの、他のプロプライエタリ規格または業界標準規格に従って動作し得る。VVCのワーキングドラフトが、Bross他、“Versatile Video Coding (Draft 5)” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting, Geneva, CH, 19-27 Mar. 2019, document JVET-N1001-v5である。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0056]一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される(例えば、符号化される、復号される、あるいは、符号化および/または復号プロセスにおいて別様に使用される)べきデータを含む構造を指す。例えば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルについての赤、緑、および青(RGB)データをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分をコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオエンコーダ200は、受信されたRGBフォーマットされたデータを、符号化する前にYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニットおよび後処理ユニット(図示せず)が、これらの変換を実行し得る。
[0057]本開示は、一般に、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(例えば、符号化および復号)を参照し得る。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングを参照し得る。符号化されたビデオビットストリームは、一般に、コーディング決定(例えば、コーディングモード)と、ピクチャのブロックへの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの参照は、一般に、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして、理解されるべきである。
[0058]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、4分木構造に従って、コーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい重複しない正方形に区分し、4分木の各ノードは、ゼロか4つのいずれかの子ノードを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのCUは、1つまたは複数のPU、および/または、1つまたは複数のTUを含み得る。ビデオコーダは、PUおよびTUをさらに区分し得る。例えば、HEVCでは、残差4分木(RQT)は、TUの区分を表す。HEVCでは、PUは、インター予測データを表し、一方、TUは、残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
[0059]別の例として、ビデオエンコーダ200およびビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造などのツリー構造に従ってCTUを区分し得る。VVCのQTBT構造は、HEVCのCU、PU、およびTU間の分離などの、複数の区分タイプの概念を除去する。VVCのQTBT構造は、4分木区分に従って区分された第1のレベルと、2分木区分に従って区分された第2のレベルとの2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
[0060]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分の各々を表すために、単一のQTBT構造を使用し得、一方、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT構造および両方のクロミナンス成分のための別のQTBT構造(または、それぞれのクロミナンス成分のための2つのQTBT構造)などの、2つ以上のQTBT構造を使用し得る。
[0061]ビデオエンコーダ200およびビデオデコーダ300は、HEVCによる4分木区分、VVCによるQTBT区分、または他の区分構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、QTBT区分に関して提示される。しかしながら、本開示の技法はまた、4分木区分、または他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることが理解されるべきである。
[0062]本開示は、「N×N」および「N掛けるN(N by N)」を交換可能に使用して、垂直寸法および水平寸法に関するブロック(CUまたは他のビデオブロックなど)のサンプル寸法、例えば、16×16サンプルまたは16掛ける16(16 by 16)サンプルを参照し得る。一般に、16×16のCUは、垂直方向に16個のサンプル(y=16)と、水平方向に16個のサンプル(x=16)とを有することになる。同様に、N×NのCUは、一般に、垂直方向にN個のサンプルと、水平方向にN個のサンプルとを有し、ここで、Nは、非負整数値を表す。CU中のサンプルは、行および列に配置され得る。さらに、CUは、水平方向に、垂直方向と同じ数のサンプルを必ずしも有する必要はない。例えば、CUは、N×M個のサンプルを備え得、ここで、Mは、必ずしもNに等しいとは限らない。
[0063]ビデオエンコーダ200は、予測情報および/または残差情報、ならびに他の情報を表す、CUについてのビデオデータを符号化する。予測情報は、CUのための予測ブロックを形成するために、どのようにCUが予測されるべきかを示す。残差情報は、一般に、予測ブロックおよび符号化する前のCUのサンプル間のサンプルごとの差分を表す。
[0064]CUを予測するために、ビデオエンコーダ200は、一般に、インター予測またはイントラ予測を通じて、CUのための予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、一般に、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に(closely)マッチする参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUに密接にマッチするかどうかを決定するために、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of squared differences)、平均絶対差分(MAD:mean absolute difference)、平均2乗差分(MSD:mean squared differences)、または他のそのような差分算出を使用して、差分メトリックを算出し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して、現在のCUを予測し得る。
[0065]VVCはまた、アフィン動き補償モードを提供し、これは、インター予測モードと見なされ得る。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、遠近動き(perspective motion)、または他の不規則な動きタイプなどの、非並進動きを表す2つ以上の動きベクトルを決定し得る。
[0066]イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためのイントラ予測モードを選択し得る。VVCは、様々な方向性モード、ならびにプレーナモード(planar mode)およびDCモードを含む、67個のイントラ予測モードを提供する。一般に、ビデオエンコーダ200は、現在のブロック(例えば、CUのブロック)のサンプルをそこから予測するための、現在のブロックに隣接するサンプルを記述する(describes)イントラ予測モードを選択する。このようなサンプルは、一般に、ビデオエンコーダ200がラスタ走査順序(左から右、上から下)でCTUおよびCUをコーディングすると仮定すると、現在のブロックと同じピクチャ内の、現在のブロックの上、左上、または左にあり得る。
[0067]ビデオエンコーダ200は、現在のブロックのための予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるかを表すデータ、ならびに対応するモードについての動き情報を符号化し得る。単方向または双方向インター予測の場合、例えば、ビデオエンコーダ200は、アドバンスト動きベクトル予測(AMVP:advanced motion vector prediction)またはマージモードを使用して、動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
[0068]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについての残差データを算出し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックのための予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダ200は、変換されたデータを、サンプルドメインの代わりに変換ドメインにおいて生成するために、残差ブロックに1つまたは複数の変換を適用し得る。例えば、ビデオエンコーダ200は、残差ビデオデータに、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を適用し得る。加えて、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、または同様のものなどの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて、変換係数を生成する。
[0069]本開示の技法によれば、ビデオエンコーダ200は、現在のブロックのための残差ブロックに適用すべき特定の変換のタイプ(a particular type of transform)(または複数の変換)を決定し得る。決定された変換のタイプは、1次変換を含み得、これは、水平変換および垂直変換を含む分離可能変換であり得る。いくつかの例では、決定された変換のタイプは、2次変換(例えば、非分離可能変換)をさらに含み得る。ビデオエンコーダ200は、選択された変換のタイプを表す第1のコードワードを符号化し得、これは、1次変換と、選択された変換のタイプが2次変換を含むか否かを表す。選択された変換のタイプが2次変換を含むことを第1のコードワードが示すケースでは、ビデオエンコーダ200は、利用可能な2次変換のセットのうちの選択された2次変換を表す第2のコードワードをさらに符号化し得る。さらに、ビデオエンコーダ200は、1次変換と2次変換との両方を適用し得る。コードワードのこのような組合せの例については、表1~表12および図6~図8に関して以下でより詳細に説明される。
[0070]上述されたように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、一般に、変換係数が量子化されて、係数を表すために使用されるデータ量をできる限り(possibly)低減し、さらなる圧縮を提供するプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。例えば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に切り捨て得、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行し得る。
[0071]量子化に続いて、ビデオエンコーダ200は、変換係数を走査し得、量子化された変換係数を含む2次元行列から1次元ベクトルを生成する。走査は、ベクトルの前方により高いエネルギー(したがって、より低い周波数)係数を置き、ベクトルの後方により低いエネルギー(したがって、より高い周波数)変換係数を置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、直列化されたベクトルを生成するために、量子化された変換係数を走査するための予め定義された走査順序を利用し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は、適応走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオエンコーダ200は、例えば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300による使用のための、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
[0072]CABACを実行するために、ビデオエンコーダ200は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値がゼロ値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0073]ビデオエンコーダ200は、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータの中で、ビデオデコーダ300へのブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどの、シンタックスデータをさらに生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、このようなシンタックスデータを同様に復号し得る。
[0074]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、例えば、ピクチャのブロック(例えば、CU)への区分と、ブロックについての予測情報および/または残差情報と、を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
[0075]一般に、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実行されたものとは逆のプロセスを実行する。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、実質的に同様の方法でCABACを使用して、ビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUへのピクチャの区分情報と、CTUのCUを定義するための、QTBT構造などの対応する区分構造に従う各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)についての予測情報および残差情報をさらに定義し得る。
[0076]残差情報は、例えば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックについての残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化および逆変換し得る。
[0077]本開示の技法によれば、ビデオデコーダ300は、ビデオデータの現在のブロックのための復号された変換係数に適用されるべき変換のタイプを表す第1のコードワードを復号し得る。上記で説明されたように、変換のタイプは、1次変換を表し得、これは、水平変換および垂直変換を含む分離可能変換であり得る。変換のタイプは、2次変換をさらに含み得る。変換のタイプが2次変換を含む場合、ビデオデコーダ300は、利用可能な2次変換のセットに含まれ得る2次変換を表す第2のコードワードを復号し得る。次いで、ビデオデコーダ300は、変換係数の中間セットを生成するために、復号された変換係数に2次変換を適用し、次いで、現在のブロックのための残差ブロックを再生するために、変換係数の中間セットに1次変換を適用し得る。
[0078]ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)および関連する予測情報(例えば、インター予測のための動き情報)を使用する。次いで、ビデオデコーダ300は、元のブロックを再生するために、(サンプルごとの単位で)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿った視覚的アーティファクトを低減するために、デブロッキングプロセスを実行することなど、追加の処理を実行し得る。
[0079]上述されたように、ビデオエンコーダ200およびビデオデコーダ300は、シンタックス要素の値にCABAC符号化および復号を適用し得る。シンタックス要素にCABAC符号化を適用するために、ビデオエンコーダ200は、シンタックス要素の値を2値化して、「ビン」と呼ばれる一連の1つまたは複数のビットを形成し得る。加えて、ビデオエンコーダ200は、コーディングコンテキストを識別し得る。コーディングコンテキストは、特定の値を有するビンの確率を識別し得る。例えば、コーディングコンテキストは、0値ビンをコーディングする0.7の確率と、1値ビンをコーディングする0.3の確率とを示し得る。コーディングコンテキストを識別した後、ビデオエンコーダ200は、区間(interval)を下側サブ区間と上側サブ区間とに分割し得る。一方のサブ区間は、値0に関連付けられ得、他方のサブ区間は、値1に関連付けられ得る。
[0080]サブ区間の幅は、識別されたコーディングコンテキストによって関連する値について示された確率に比例し得る。シンタックス要素のビンが下側サブ区間に関連付けられた値を有する場合、符号化された値は、下側サブ区間の下側境界に等しくなり得る。シンタックス要素の同じビンが上側サブ区間に関連付けられた値を有する場合、符号化された値は、上側サブ区間の下側境界に等しくなり得る。シンタックス要素の次のビンを符号化するために、ビデオエンコーダ200は、符号化されたビットの値に関連付けられたサブ区間である区間で(with)、これらのステップを繰り返し得る。ビデオエンコーダ200が次のビンについてこれらのステップを繰り返すとき、ビデオエンコーダ200は、符号化されるビンの実際の値および識別されたコーディングコンテキストによって示される確率に基づいて、修正された確率を使用し得る。
[0081]ビデオデコーダ300がシンタックス要素の値に対してCABAC復号を実行するとき、ビデオデコーダ300は、コーディングコンテキストを識別し得る。次いで、ビデオデコーダ300は、区間を下側サブ区間と上側サブ区間とに分割し得る。一方のサブ区間は、値0に関連付けられ得、他方のサブ区間は、値1に関連付けられ得る。サブ区間の幅は、識別されたコーディングコンテキストによって関連する値について示された確率に比例し得る。符号化された値が下側サブ区間内にある場合、ビデオデコーダ300は、下側サブ区間に関連付けられた値を有するビンを復号し得る。符号化された値が上側サブ区間内にある場合、ビデオデコーダ300は、上側サブ区間に関連付けられた値を有するビンを復号し得る。シンタックス要素の次のビンを復号するために、ビデオデコーダ300は、符号化された値を含むサブ区間である区間で、これらのステップを繰り返し得る。ビデオデコーダ300が次のビンについてこれらのステップを繰り返すとき、ビデオデコーダ300は、復号されたビンおよび識別されたコーディングコンテキストによって示される確率に基づいて、修正された確率を使用し得る。次いで、ビデオデコーダ300は、シンタックス要素の値を復元するために、ビンを逆2値化し得る。
[0082]HEVCより前のビデオコーディング規格では、DCT-2が垂直方向と水平方向との両方に使用される、固定された分離可能変換のみが使用される。HEVCでは、DCT-2に加えて、DST-7もまた、固定された分離可能変換として4×4ブロックのために用いられる。
[0083]米国特許第10,306,229号、米国特許出願公開第2018/0020218号、および米国仮特許出願第62/679,570号は、マルチプル変換選択(MTS)技法を説明している。MTSは、以前は適応型マルチプル変換(AMT:Adaptive Multiple Transforms)と呼ばれていた。米国仮特許出願第62/679,570号におけるMTSの一例が、JVET(Joint Video Experts Team)のJEM(Joint Experimental Model)において採用されており(JEM-7.0)、後に、MTSの簡略化バージョンがVVCにおいて採用されている。
[0084]本開示は、一般に、シンタックス要素などの、ある特定の情報の「シグナリング」に言及し得る。「シグナリング」という用語は、一般に、符号化されたビデオデータを復号するために使用されるシンタックス要素の値および/または他のデータの通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中で値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために記憶デバイス112にシンタックス要素を記憶するときに起こり得るなど、リアルタイムではなく、宛先デバイス116にビットストリームをトランスポートし得る。
[0085]図2Aおよび図2Bは、例示的な4分木2分木(QTBT)構造130、および対応するコーディングツリーユニット(CTU)132を示す概念図である。実線は、4分木分割を表し、点線は、2分木分割を示す。2分木の各分割(すなわち、非リーフ)ノードでは、1つのフラグが、どの分割タイプ(すなわち、水平または垂直)が使用されているかを示すためにシグナリングされ、ここで、この例では、0は、水平分割を示し、1は、垂直分割を示す。4分木分割の場合、4分木ノードが、ブロックを等しいサイズを有する4つのサブブロックへと水平および垂直に分割するので、分割タイプを示す必要はない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(分割情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(分割情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の終端リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0086]一般に、図2BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、CTUサイズ(サンプル中のCTU132のサイズを表す)、最小4分木サイズ(MinQTSize、最小許容4分木リーフノードサイズを表す)、最大2分木サイズ(MaxBTSize、最大許容2分木ルートノードサイズを表す)、最大2分木深度(MaxBTDepth、最大許容2分木深度を表す)、および最小2分木サイズ(MinBTSize、最小許容2分木リーフノードサイズを表す)を含み得る。
[0087]CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、その各々は、4分木区分に従って区分され得る。すなわち、第1のレベルのノードは、リーフノード(子ノードを有さない)であるか、または4つの子ノードを有するかのいずれかである。QTBT構造130の例は、そのようなノードを、分岐について実線を有する親ノードおよび子ノードを含むものとして表す。最大許容2分木ルートノードサイズ(MaxBTSize)よりも大きくない第1のレベルのノードは、それぞれの2分木によってさらに区分され得る。1つのノードの2分木分割は、分割の結果として生じるノードが、最小許容2分木リーフノードサイズ(MinBTSize)または最大許容2分木深度(MaxBTDepth)に達するまで、繰り返され得る。QTBT構造130の例は、そのようなノードを、分岐について破線を有するものとして表す。2分木リーフノードは、コーディングユニット(CU)と呼ばれ、これは、それ以上の区分なしに(without any further partitioning)、予測(例えば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上記で説明されたように、CUは、「ビデオブロック」または「ブロック」とも呼ばれ得る。
[0088]QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは、16×16として設定され、MaxBTSizeは、64×64として設定され、MinBTSizeは(幅と高さの両方について)、4として設定され、MaxBTDepthは、4として設定される。4分木リーフノードを生成するために、最初に4分木区分がCTUに適用される。4分木リーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。リーフ4分木ノードが128×128である場合、サイズがMaxBTSize(すなわち、この例では、64×64)を超えるので、それは、2分木によってそれ以上分割されないことになる。そうでない場合、リーフ4分木ノードは、2分木によってさらに区分されることになる。したがって、4分木リーフノードはまた、2分木のためのルートノードであり、0の2分木深度を有する。2分木深度がMaxBTDepth(この例では、4)に達したとき、それ以上の分割は許可されない。2分木ノードがMinBTSize(この例では、4)に等しい幅を有するとき、それは、それ以上の垂直分割が許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してそれ以上の水平分割が許可されないことを暗示する。上述されたように、2分木のリーフノードは、CUと呼ばれ、それ以上の区分なしに、予測および変換に従ってさらに処理される。
[0089]図3Aおよび図3Bは、HEVCの残差4分木に基づく例示的な変換方式を示す概念図である。HEVCでは、残差4分木(RQT)を使用する変換コーディング構造が、残差ブロックの様々な特性を適応させるために適用され、これは、www.hhi.fraunhofer.de/fields-of-competence/image-processing/research-groups/image-video-coding/hevc-high-efficiency-video-coding/transform-coding-using-the-residual-quadtree-rqt.htmlを出典とし、以下で簡単に説明される。
[0090]HEVCでは、各ピクチャは、コーディングツリーユニット(CTU)に分割され、これは、特定のタイルまたはスライスについてラスタ走査順序でコーディングされる。CTUは、正方形ブロックであり、4分木、すなわち、コーディングツリーのルートを表す。CTUサイズは、8×8から64×64ルーマサンプルまでの範囲にあり得るが、典型的に64×64が使用される。各CTUは、コーディングユニット(CU)と呼ばれるより小さい正方形ブロックにさらに分割され得る。
[0091]CTUがCUに再帰的に分割された後、各CUは、予測ユニット(PU)および変換ユニット(TU)にさらに分割される。CUのTUへの区分は、4分木手法に基づいて再帰的に実行され、したがって、各CUの残差信号は、ツリー構造、すなわち、残差4分木(RQT)によってコーディングされる。RQTは、4×4から32×32ルーマサンプルまでのTUサイズを可能にする。
[0092]図3Aは、CUが、文字a~jでラベル付けされた10個のTUを含む一例と、対応するブロック区分とを図示する。図3Bに示されるRQTの各ノードは、実際には、図3Aに対応する変換ユニット(TU)である。個々のTUは、図3Aにアルファベット順として示される深さ優先ツリートラバーサル順序(depth-first tree traversal order)で処理され、これは、深さ優先トラバーサルによる再帰的Z走査に従う。4分木手法は、残差信号の変動する空間周波数特性(the varying space-frequency characteristics)に対する変換の適応を可能にする。
[0093]典型的に、より大きい空間サポートを有するより大きい変換ブロックサイズは、より良い周波数分解能を提供する。しかしながら、より小さい空間サポートを有するより小さい変換ブロックサイズは、より良い空間分解能を提供する。空間分解能と周波数分解能との2つの間のトレードオフは、例えば、レート歪み最適化技法(rate-distortion optimization technique)に基づいて、エンコーダモード決定によって選ばれる。レート歪み最適化技法は、各コーディングモード(例えば、特定のRQT分割構造)について、コーディングビットと再構成歪みとの加重和、すなわち、レート歪みコストを算出し、最小のレート歪みコストを有するコーディングモードを最良のモードとして選択する。
[0094]3つのパラメータがHEVCによるRQTにおいて定義されており、すなわち、ツリーの最大深度、最小許容変換サイズ、および最大許容変換サイズである。最小および最大変換サイズは、4×4から32×32サンプルまでの範囲内で変動し得、これは、前の段落で述べたサポートされるブロック変換に対応する。RQTの最大許容深度は、TUの数を制限する。ゼロに等しい最大深度は、各含まれたTBが最大許容変換サイズ、例えば、32×32に達した場合、CBがこれ以上分割され得ないことを意味する。
[0095]これらのパラメータは全て、相互作用し、HEVCにおけるRQT構造に影響を及ぼす。ルートCBサイズが64×64であり、最大深度がゼロに等しく、最大変換サイズが32×32に等しいケースを考慮する。このケースでは、CBは、少なくとも1回区分される必要があり、これは、そうでない場合、64×64のTBをもたらすことになり、これは許容されないからである。RQTパラメータ、すなわち、最大RQT深度、最小および最大変換サイズは、HEVCによる、シーケンスパラメータセットレベルにおいて、ビットストリーム中で送信される。RQT深度に関しては、異なる値が、イントラコーディングされたCUとインターコーディングされたCUとについて指定されおよびシグナリングされ得る。
[0096]4分木変換は、HEVCではイントラ残差ブロックおよびインター残差ブロックの両方に適用される。典型的に、現在の残差4分木区分と同じサイズのDCT-II変換が、残差ブロックに対して適用される。しかしながら、現在の残差4分木ブロックが4×4であり、かつイントラ予測によって生成される場合、上記の4×4DST-VII変換が適用される。
[0097]HEVCでは、より大きいサイズの変換、例えば、64×64変換は、主に、比較的より小さい解像度のビデオに対する比較的高い複雑さを考慮して、それらの限られた利益により採用されない。
[0098]図4は、適応型変換選択を用いたハイブリッドビデオ符号化のための例示的なシステム140を示すブロック図である。本開示の技法は、このようなシステム、または対応する復号システムによって実行され得る。一般に、本開示の技法は、適応型変換コーディング方式に適用可能であり、ここで、予測残差の各ブロックについて、異なる変換が、ビデオエンコーダによって選択され、サイド情報としてシグナリングされ、サイド情報を使用してビデオデコーダによって決定され得る。
[0099]図4のシステム140は、ブロック分離ユニット142、ブロック予測ユニット144、残差生成ユニット146、ブロック変換ユニット148、変換バンク150、量子化ユニット152、エントロピー符号化ユニット154、逆量子化ユニット156、逆ブロック変換ユニット158、ブロック再構成ユニット160、およびフレームバッファ162を含む。ブロック分離ユニット142は、一般に、生のコーディングされていないビデオデータを受信し、ビデオデータのピクチャをブロックに区分する。ブロック予測ユニット144は、符号化されるべきビデオデータの現在のブロックについての予測ブロックを生成する。ブロック分離ユニット142は、現在のブロックを残差生成ユニット146に提供し、ブロック予測ユニット144は、予測ブロックを残差生成ユニット146に提供する。残差生成ユニット146は、残差ブロック(r)を生成し、残差ブロックをブロック変換ユニット148に提供する。
[0100]ブロック変換ユニット148は、変換バンク150から1つまたは複数の変換を選択する。例えば、本開示の技法によれば、変換バンク150は、1つまたは複数の1次変換(例えば、分離可能変換)と、1つまたは複数の2次変換(例えば、非分離可能変換)とを含み得る。次いで、ブロック変換ユニット148は、変換係数を生成するために、1次変換と、適用可能な場合、2次変換とを適用し得る。さらに、ブロック変換ユニット148は、(1つまたは複数の)変換のインジケーション(t)をエントロピー符号化ユニット154に送り得る。ブロック変換ユニット148は、変換係数(T(t)r)を量子化ユニット152に提供する。
[0101]量子化ユニット152は、例えば、現在のブロックのための量子化パラメータ(QP)に従って、変換係数のビット深度を低減することによって、変換係数を量子化する。量子化ユニット152は、量子化された変換係数を、エントロピー符号化ユニット154および逆量子化ユニット156に提供する。
[0102]エントロピー符号化ユニット154は、量子化された変換係数および変換(t)のインジケーションを含む、シンタックス要素の値のエントロピー符号化を実行する。本開示の技法によれば、エントロピー符号化ユニット154は、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードを符号化し得る。選択された変換方式は、1次変換と、いくつかの例では、1次変換に加えて適用されるべき2次変換とを含み得る。選択された変換方式が2次変換を含むケースでは、エントロピー符号化ユニット154は、利用可能な2次変換のセットにおける2次変換を表す第2のコードワードを符号化し得る。エントロピー符号化ユニット154は、符号化されたビデオビットストリーム中にエントロピー符号化されたデータ(例えば、第1および/または第2のコードワードと、量子化された変換係数についてのエントロピー符号化されたシンタックス要素)を含め得る。
[0103]逆量子化ユニット156は、量子化された変換係数を逆量子化し、結果として得られた変換係数を逆ブロック変換ユニット158に渡し得る。逆ブロック変換ユニット158は、残差ブロックを再生するために、1次変換と、適用可能な場合、2次変換とを変換係数に適用し得る。逆ブロック変換ユニット158は、残差ブロックをブロック再構成ユニット160に提供し得、これは、再構成されたブロックを生成するために、残差ブロックを予測ブロックと組み合わせ、再構成されたブロックをフレームバッファ162に記憶し得る。フレームバッファ162は、復号ピクチャバッファ(DPB)とも呼ばれ得る。
[0104]図4の様々な構成要素の各々は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せでインプリメントされ得る。ソフトウェアまたはファームウェアでインプリメントされるとき、様々な動作のための命令は、メモリに記憶され、1つまたは複数の処理ユニットによって実行され得る。処理ユニットおよびメモリは、回路においてインプリメントされ得る。処理ユニットは、例えば、任意の組合せにおいて、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積されたまたはディスクリートロジック回路を含み得る。
[0105]このようにして、図4のシステム140は、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされ、かつビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を行うように構成された1つまたは複数のプロセッサと、を含むビデオエンコーダの一例を表す。
[0106]図5Aおよび図5Bは、別個の変換インプリメンテーションとして水平変換および垂直変換を示す概念図である。特に、残差値の水平ラインおよび垂直ライン(horizontal and vertical lines)は、水平変換および垂直変換を使用して独立に変換され得る(例えば、計算複雑さを低減するために、ブロック変換は、分離可能な方法で計算され得る)。
[0107]HEVCより前のビデオコーディング規格では、DCT-2が垂直方向と水平方向との両方に使用される、固定された分離可能変換のみが使用される。HEVCでは、DCT-2に加えて、DST-7もまた、固定された分離可能変換として4×4ブロックのために用いられる。米国特許出願第15/005,736号および第15/649,612号は、それらの固定された変換の適応型拡張を説明しており、2016年1月25日に出願された米国特許出願第15/005,736号、2017年7月13日に出願された米国特許出願第15/649,612号、および2018年6月1日に出願された第62/679,570号に説明されているMTS(適応型マルチプル変換(AMT)とも呼ばれる)の一例が、JVET(Joint Video Experts Team)のJEM(Joint Experimental Model)において採用されている(Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JEM Software、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0で入手可能)。
[0108]図6は、2つの変換を識別するために使用されるMTSシグナリングの一例を表す概念図である。VTMの現在のバージョン(Versatile Video Coding (Draft 4), Joint Video Experts Team (JVET), ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting: Marrakech, MA, 9-18 Jan. 2019, Document JVET-M1001、phenix.it-sudparis.eu/jvet/doc_end_user/documents/13_Marrakech/wg11/JVET-M1001-v7.zipで入手可能)では、複数の変換候補が、トランケーテッドユーナリー2値化(truncated unary binarization)に基づいてシグナリングされ、これは、図6および図7における2分木を連結することによって示され得る。次いで、変換候補は、連結によって取得されるコードワードに関連付けられる。
[0109]図7は、例示的な変換割当ておよび対応するユーナリーコードワードを示す概念図である。VVCの現在のバージョンにおけるMTSシグナリングは、図6の2分木を連結することによって取得されるコードワードに変換を割り当てることを含み、ここで、「H:DCT-8,V:DST-7」は、分離可能変換のために、DCT-8が水平に適用され、DST-7が垂直に適用されることを意味し、IDTは、1-D恒等変換(1-D identity transform)(スケーリングを実行すること)を示す。
[0110]VVCのMTS(マルチプル-変換-選択)設計は、(図7に示すように)6つの変換候補を使用し、それは、単一のタイプの変換を水平方向と垂直方向との両方において使用する以外の、DST-7およびDCT-8との組合せをサポートする(すなわち、IDT、DCT-2、およびDST-7を水平および垂直に適用する)。実際には、より良好なコーディング効率が、より多くの数の変換候補を許容することによって達成され得る。本開示は、コーディング効率を改善し得る現在のMTS設計の様々な拡張を説明する。
[0111]MTS方式は、指定されたシグナリング方法のコードワードに変換を割り当てることによって定義され得る。ビデオエンコーダ200および/またはビデオデコーダ300は、上記で説明され、および以下でより詳細に説明されるように、本開示の技法に従って構成され得る。特に、本開示によるMTS方式は、指定されたシグナリング方法のコードワードに変換を割り当てることによって定義され得る。したがって、MTS方式は、(i)変換の単一のセットまたは複数のセット(すなわち、変換候補)、および(ii)関連するシグナリング方法、を指定することによって完全に定義され得る。したがって、ビデオエンコーダ200およびビデオデコーダ300は、本開示の技法のうちの任意のものを単独でまたは任意の組合せで使用して、MTS方式のインジケーションをコーディングするように構成され得る。
[0112]MTS方式のインジケーションは、コードワードであり得る。いくつかの例では、MTS方式は、分離可能変換(例えば、水平変換および垂直変換)などの1次変換と、2次変換との両方を含み得る。このような例では、ビデオエンコーダ200およびビデオデコーダ300は、2次変換を表す第2のコードワードをコーディングし得、ここで、第2のコードワードは、利用可能な2次変換のセット中の2次変換を識別し得る。
[0113]VVCにおけるMTS設計は、下記表1に示されるような6つの分離可能変換候補を含む、単一の変換のセットを使用する:
[0114]上記の例示的な6つの変換候補は、図7(右)に示されるように、2分木(図6)を連結することによって生成されるコードワードを使用してシグナリングされ得る。各コードワードについて、図7(左)に示されるように、変換候補が割り当てられ得る。
[0115]代替のMTS設計が、以下の技法の、1つまたは複数の組合せに基づいて定義され得る。すなわち、ビデオエンコーダ200およびビデオデコーダ300は、単独でまたは任意の組合せで、以下で説明される技法のうちの任意のものを実行し得る。
1.MTS設計は、表1に示されるような、VVCにおける現在の候補のセットのうちのいくつかを置き換えて、または置き換えずに、新しい変換候補を含むことによって拡張され得る。
2.DCT-2およびDST-7の組合せが、追加の変換候補として含まれ得る。
a.一例では、現在のVVCに加えて、さらに2つの変換候補が追加され得、その結果、表2に示されるように、合計8つの分離可能変換候補が許容される:
b.別の例では、さらに2つの変換候補が、「H:DCT-8,V:DCT-8」の組合せを削除することによって追加され得、その結果、表3に示されるように、合計7つの分離可能変換候補が許容される:
3.IDTおよびDST-7の組合せが、追加の変換候補として含まれ得る。
a.例えば、表4に示されるように、以下の7つの変換候補が、MTSにおいて使用され得る。
b.別の例では、以下の10個の変換候補が、DCT-2およびDST-7の組合せ、ならびにIDTおよびDST-7の組合せを追加することによって、MTSにおいて使用され得る。
c.別の例では、以下の9つの変換スキップ(これは、恒等候補(identity candidates)を適用することと同等である)が、上記リストからのDCT-8およびDCT-8の組合せを以下のように置き換えることによって、MTSにおいて使用され得る:
4.これら候補およびそれらの関連する2値化(すなわち、コードワード)は、異なる順序付け(ordering)を有し得る。
a.順序付けは、予め定義され得、各変換候補の統計値/頻度(frequency)に基づく固定された設計であり得る。
b.例えば、順序付けは、使用される各変換候補の頻度をランク付けすることによって行われ得る。
c.例えば、それは、変換候補をシグナリングするために使用される平均コードワード長を低減するように設計され得る(例えば、使用される各候補の確率に基づいて生成されるハフマンコード)。
d.例えば、実用的なコーデックでは、H:DST-7,V:DST-7およびH:DCT-2,V:DCT-2の組合せが頻繁に使用される。したがって、シグナリングオーバーヘッドを低減するために、表1のMTS設計は、表7の以下の例のように順序付けられ得る:
5.予測モードおよび/またはブロックサイズに依存して、異なるMTS設計が、ブロックをコーディングするために使用され得、ここで、ブロックは、変換ユニット(TU)またはコーディングユニット(CU)であり得る。
a.異なるMTS設計は、以下を含み得る:
i.変換候補の異なるセット、
ii.異なるシグナリングおよび2値化(すなわち、各候補について使用されるコードワード)、
iii.上記i)およびii)の両方。
b.複数のMTS設計が、イントラおよび/またはインター予測モードに依存して、変換の選択肢(transform choices)を決定するために使用され得る:
i.異なるタイプの予測方法(例えば、イントラ予測およびインター予測)は、異なるMTS設計を使用し得る。例えば、インター予測されたブロックをコーディングする場合、表1に定義されたMTSが使用され得、一方、イントラ予測されたブロックの場合、表5に定義されたMTSが変換を決定するために使用され得る。
ii.イントラ予測モードの異なるサブセットは、異なるMTS設計を使用し得る。モードの異なるサブセットは、プレーナモード、DCモードおよび角度モードのサブセットの相互に排他的で集合的に網羅的な選択(mutually exclusive and collectively exhaustive selection)によって定義され得る。例えば、プレーナモード(0)、DCモード(1)および対角モード(34)については、3つの候補を有する表8のMTS設計が使用され得る。(2)から(33)までの角度モードについては、表9が使用され得る。(35)から(66)までの残りの角度モードについては、表10が使用され得る。
c.複数のMTS設計が、ブロック形状およびブロックサイズに依存して、変換の選択肢を決定するために使用され得る。
i.異なるMTS設計が、異なるサイズおよび/または形状のブロックに対して使用され得る。
ii.例えば、小さいブロックをコーディングする場合は、より少ない候補を有するMTS設計が使用され得、一方、より大きいブロックの場合は、より多くの変換候補を有する別のMTS設計が使用され得る。したがって、小さいブロックのための変換シグナリングオーバーヘッドが、低減され得る。
iii.小さいブロックは、その幅および/または高さに基づいて定義され得る。例えば、8より小さい幅または高さを有するブロックは、小さいブロックと見なされ得、一方、残りのブロックは、大きいブロックと見なされ得る(例えば、ブロックの幅と高さの最小値が16より小さい場合には、ブロックは、小さいとして分類され得る)。
iv.ブロックはまた、正方形/長方形の形状に基づいて分類され得、ここで、幅と高さとの間の比が、異なる形状を有するブロックを分類するために使用され得る(例えば、4×8および8×4ブロックは、1つのクラスに属し得、サイズ4×16および16×4のブロックは、別のクラスに属し得る)。
d.単一の(統合された)MTS設計がまた、シグナリングのために使用され得る。
6.変換候補をシグナリングするためのコンテキスト導出がまた、以下のうちの1つまたは組合せに依存して行われ得る:
a.ブロックサイズ、
b.ブロック形状、
c.イントラモード、
d.インターモード。
-別個のコンテキストが、イントラ予測およびインター予測されたCU/TUのために定義され得る。
-別個のコンテキストは、ブロックの幅および高さの最小値に基づいて定義され得る。
7.分離可能変換に加えて、MTS設計は、変換候補として非分離可能変換も含み得る。一例が、表11に示される。
[0116]さらに、2次変換が、分離可能変換に加えてMTS設計に含まれ得る。表12は、H:DCT-8,V:DCT-8の組合せが、2次変換のセットによって置き換えられる、MTSの一例を提示する。
[0117]2次変換は、2016年9月20日に出願された米国特許出願第15/270,455号および2019年3月25日に出願された米国特許出願第16/364,007号に記載されている態様を含み得る。具体的には、エンコーダ側において、2次変換が、(例えば、2-D DCT-2から得られた)1次変換係数のサブセットに適用され得、ここで、この順序は、デコーダにおいて逆にされる(最初に逆2次変換が適用され、次いで1次変換が適用される)。
[0118]2次変換は、図8に示され、以下でより詳細に説明されるように、複数の2次変換の中から選択される変換を決定するために、追加のシグナリングを必要とし得る。単一の2次変換候補のみが存在する(すなわち、セットが単一の2次変換のみであり得る)場合、表12におけるMTSシグナリングに加えて追加のシグナリングは必要とされないことに留意されたい。
[0119]2次変換の場合、変換候補はまた、予測モード、ブロックサイズおよびブロック形状のうちの1つまたは組合せに依存し得る。
8.MTS設計における分離可能変換は、IDT、DST-7、DCT-8、およびDCT-2に加えて、他のタイプのDSTおよびDCTの組合せ(例えば、DST-4およびDCT-4)を使用して構築され得る。
9.上記の方法のうちの1つまたは組合せは、イントラ予測されたCUのために使用され得る。
10.上記の方法のうちの1つまたは組合せは、インター予測されたCUのために使用され得る。
11.上記の方法のうちの1つまたは組合せは、イントラ予測されたCUとインター予測されたCUとの両方のために使用され得る。
12.上記の方法のうちの1つまたは組合せが、ルーマチャネルもしくはクロマチャネルまたは両方のために使用され得る。
[0120]図8は、2次変換をサポートする例示的なMTS設計を示す概念図である。2次変換がシグナリングされた/選ばれた場合、追加のシグナリングが、N個の可能な2次変換の中から2次変換を示すために使用され得る。すなわち、ビデオエンコーダ200は、1次変換と、1次変換に加えて2次変換が適用されるべきであることとを示す第1のコードワードを符号化し、変換のセットのうちの2次変換(例えば、図8に図示されるN個の利用可能な変換のうちの1つ)を示す第2のコードワードをさらに符号化し得る。同様に、ビデオデコーダ300は、第1のコードワードを復号し、第1のコードワードが、1次変換と、2次変換が適用されるべきであることと示すことを決定し得る。したがって、ビデオデコーダ300は、第1のコードワードに応答して第2のコードワードをさらに復号し、2次変換を決定するために、第2のコードワードを使用し得る。ビデオエンコーダ200およびビデオデコーダ300は、1次変換と2次変換との両方をさらに適用し得る。
[0121]いくつかの例では、以下でより詳細に説明されるように、2次変換は、低周波数非分離可能変換(LFNST:Low-Frequency Non-separable Transformation)であり得る。したがって、第1のコードワードは、MSTシンタックス要素と呼ばれ得、第2のコードワードは、LFNSTシンタックス要素と呼ばれ得る。
[0122]図9および図10は、低周波数非分離可能変換(LFNST)の使用を示す概念図である。LFNSTは、MTSのコーディング効率をさらに改善するために、JEM-7.0において使用され、ここで、LFNSTのインプリメンテーションは、ハイパーキューブギブンス変換(HyGT:Hypercube-Givens Transform)に基づき、これは、米国特許出願公開第2017/0238013号、米国特許出願公開第2017/0094313号、第2017/0238014号、米国特許出願第16/364,007号、ならびに米国仮特許出願第62/668,105号および第62/849,689号(代替の設計およびさらなる詳細を説明している)に記載されている。LFNSTは、以前は非分離可能2次変換(NSST)または2次変換と呼ばれていたが、LFNST、NSST、および2次変換は、一般に同じ技法を指し得る。最近では、Koo他、“CE6: Reduced Secondary Transform (RST) (CE6-3.1),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting, Geneva, CH, 19-27 Mar. 2019, document JVET-N0193に記載されているように、LFNSTがドラフトVVC規格へと採用された。
[0123]図9は、ビデオエンコーダ200およびビデオデコーダ300によって適用されるLFNST変換を示す概念図である。LFNSTは、コーデックにおいて、分離可能変換と量子化との間に新たな段階を導入している。図10は、H×Wブロックの(左上の部分における)係数のサブセットに適用されるLFNSTを示す概念図である。
[0124]VVCドラフト5は、有意なコーディング利益なしに、いくらかのエンコーダ/デコーダの複雑さを導入する以下の仕様を含む:
1)LFNSTは、変換スキップ(TS)モードを除く、任意のMTS変換と共に使用され得る、
2)LFNSTインデックスをシグナリングするために使用されるコンテキストモデルは、MTSインデックスに依存する。例えば、ビデオコーダは、MTSインデックスに基づいて、LFNSTインデックスをCABACコーディングする(または他のコーディング技法の)際に使用されるコンテキストモデルを選択し得る。コンテキストモデルは、LFNSTインデックスの第1のビットが特定の値を有する確率を示し得る。
3)LFNSTは、クロマチャネルをコーディングする際に使用され得るが、MTSは、クロマに対して規範的に(normatively)無効にされる、
4)4×4および8×8ブロックに適用されるLFNSTは、単一の段階を使用して(すなわち、単一の非分離可能変換を使用して)インプリメントされ得るが、現在のインプリメンテーションは、2段階プロセスに基づく。
[0125]本開示は、上記の問題に対処することによって、LFNST設計を簡略化し得る技法を説明する。本開示で説明されるLFNST設計は、個別に、または任意の組合せで使用され得る。
[0126]VVCドラフト5では、LFNSTは、3つのモードを含み、これらは、LFNSTインデックス値0、1および2を使用してシグナリングされ、ここで:
・LFNSTインデックス0は、LFNSTプロセスをスキップすることに対応する(例えば、MTSのみが使用される)、
・LFNSTインデックス1および2は、ブロック(例えば、CU、TUなど)のモードおよびサイズに依存して選ばれる2つの変換のセットから非分離可能変換を決定するために使用される。
[0127]この設計に基づいて、LFNSTは、ある特定の条件下で使用されるように制限され得る:
・LFNSTは、変換の予め定義されたセット(すなわち、ある特定のMTS候補)と共に適用され得る。したがって、LFNSTインデックスは、予め定義されたセットからの変換が選択された場合にシグナリングされ得、このセットは、ブロック寸法(幅および高さ)に依存し得る。そうでない場合、すなわち、予め定義されたセット外の(out of)変換が選ばれた場合、LFNSTインデックスは、ゼロであると推定(inferred)され得、その結果、LFNSTは、スキップされる(すなわち、適用されない)。
○LFNSTの使用は、変換タイプおよび/またはMTSインデックス/フラグおよび/またはブロック寸法に基づいて制限され得る。
□LFNSTは、予め定義された変換タイプおよび/またはMTSインデックス/フラグが使用されるときに有効にされ得る。
・LFNSTは、分離可能2-D DCT-2が使用される場合(すなわち、DCT-2が水平および垂直に適用される場合)、有効にされ得る
○VVCにおいて、これは、MTSインデックス/フラグがゼロである(すなわち、2-D DCT-2が使用される)場合に、LFNSTインデックスをシグナリングすることに対応し、MTSインデックス/フラグが0とは異なる場合、LFNSTインデックス/フラグは、シグナリングされず、ビデオデコーダ300によって、ゼロと推定される。
○このケースでは、LFNSTインデックス/フラグをコーディングするためのコンテキストモデルは、MTSインデックスに依存しない。
□LFNSTは、変換スキップモードに対して無効にされ得る。
・変換スキップが有効にされたとき、LFNSTプロセスはスキップされ、LFNSTインデックス/フラグは、0と推定される。
○LFNSTインデックスのシグナリングをコーディングするためのコンテキストモデルは、MTSインデックスに依存し得る。各MTSインデックスについて、別個のコンテキストが、LFNSTインデックスをコーディングするために定義され得る。
・LFNSTは、ルーマブロックのために使用され得、クロマチャネルに対して無効にされ得る。したがって、LFNSTインデックスは、シグナリングされず、クロマチャネルについて0と推定される。
[0128]したがって、本開示の1つまたは複数の技法による一例では、ビデオエンコーダ200は、LFNSTインデックスのシグナリングに対する1つまたは複数の制限が現在のブロックには適用されない場合、ビデオデータの符号化された表現を備えるビットストリームに、ビデオデータの現在のブロックのためのLFNSTインデックスを追加し得る。加えて、この例では、ビデオエンコーダ200は、現在のブロックのための中間データを生成するために、生成すべき現在のブロックのための残差データに変換を適用し得る。この例では、LFNSTインデックスの値に基づいて、ビデオエンコーダ200は、現在のブロックのための変換係数を生成するために、中間データにLFNSTを適用し得る。ビデオエンコーダ200は、ビットストリーム中に現在のブロックのための変換係数を表すデータを含め得る。
[0129]本開示の1つまたは複数の技法による一例では、ビデオデコーダ300は、LFNSTインデックスのシグナリングに対する1つまたは複数の制限が現在のブロックには適用されない場合、ビデオデータの符号化された表現を含むビットストリームから、ビデオデータの現在のブロックのためのLFNSTインデックスを取得し得る。この例では、ビデオデコーダ300は、ビットストリーム中のデータに基づいて、変換係数のブロックを決定し得る。LFNSTインデックスの値に基づいて、ビデオデコーダ300は、現在のブロックのための中間データを生成するために、変換係数のブロックに逆LFNSTを適用し得る。ビデオデコーダ300は、現在のブロックのための残差データを生成するために、現在のブロックのための中間データに変換の逆を適用し得る。この例では、ビデオデコーダ300は、現在のブロックのための残差データに基づいて、現在のブロックのサンプルを再構成し得る。
[0130]図11Aおよび図11Bは、2019年5月30日のVVCテストモデル(VTM)による、例示的な2ステップLFNSTプロセスのインプリメンテーションを示す概念図である。この例では、LFNSTは、左上領域におけるより濃い網掛けのサブブロック内で、分離可能変換係数(例えば、MTS係数)のサブセットに加えて(on top of a subset of separable transform coefficients)適用される。この2ステップ手順は、図11Aのブロック形状/サイズでは回避できない場合がある。しかしながら、図11Bに示されるような、4×4および8×8ブロックの場合、LFNST変換サイズと分離可能変換サイズとが揃っている(すなわち、LFNST変換および分離可能変換のサポートは、濃い網掛けのブロック内の同じ係数ロケーション/位置を含み得る)。このケースでは、この変換プロセスは、以下のように単一の段階の非分離可能変換に低減され得る:
-2段階でLFNSTを適用する代わりに(例えば、分離可能変換と共にLFNSTを適用する代わりに)、ビデオエンコーダ200およびビデオデコーダ300は、1段階で非分離可能変換から係数を直接取得し得る。例えば:
○4×4のケースについては、16長の非分離可能変換が使用され、これは、行列-ベクトル乗算としてインプリメントされ得る。
○8×8のケースについては、64長の非分離可能変換が使用され、これもまた、行列-ベクトル乗算としてインプリメントされ得る。
-さらに、ゼロアウト方式(zero-out scheme)(例えば、米国仮特許出願第62/849,689号に記載されている)が、行列ベースのインプリメンテーションに必要とされる乗算の数を低減するために使用され得る。
○ゼロアウト方式では、最初のK個の最も低い周波数係数(the first K lowest-frequency coefficients)が計算される必要があり得、残りの変換係数は、規範的にゼロアウトされ得る(すなわち、ビデオエンコーダ200とビデオデコーダ300との両方において、ゼロであると仮定される)。
□Kの値は、ブロックサイズに依存し得る。例えば:
・4×4ブロックの場合、Kは8であり得、したがって、残りの8個の係数は、規範的にゼロアウトされる。
・8×8ブロックの場合、Kは8であり得、したがって、残りの56個の係数は、規範的にゼロアウトされる。
・8×8ブロックの場合、Kは16であり得、したがって、残りの48個の係数は、規範的にゼロアウトされる。
-LFNSTは、4×4および8×8の場合、単一の段階の非分離可能変換としてインプリメントされ得、他のケースでは、LFNSTは、米国仮特許出願第62/337,736号に記載されているような2ステッププロセスとしてインプリメントされ得る。
[0131]本開示の技法による一例では、ビデオエンコーダ200は、ビデオデータの第1のブロックのための残差データを決定し得る。加えて、ビデオエンコーダ200は、ビデオデータの第2のブロックのための残差データを決定し得る。第1のブロックの幅が第1のブロックの高さに等しいことに基づいて、ビデオエンコーダ200は、第1のブロックのための変換係数を生成するために、第1のブロックのための残差データに非分離可能変換を適用し、ビデオデータの符号化された表現を含むビットストリーム中に、第1のブロックのための変換係数を表すデータを含め得る。この例では、第2のブロックの幅が第2のブロックの高さに等しくないことに基づいて、ビデオエンコーダ200は、第2のブロックのための中間データを生成するために、第2のブロックのための残差データに変換を適用し、第2のブロックのための変換係数を生成するために、第2のブロックのための中間データにLFNSTを適用し、ビットストリーム中に、第2のブロックのための変換係数を表すデータを含め得る。
[0132]本開示の技法による別の例では、ビデオデコーダ300は、ビデオデータの符号化された表現を含むビットストリーム中の第1のデータに基づいて、ビデオの第1のブロックのための変換係数を決定し得る。さらに、ビデオデコーダ300は、ビットストリーム中の第2のデータに基づいて、ビデオデータの第2のブロックのための変換係数を決定し得る。第1のブロックの幅が第1のブロックの高さに等しいことに基づいて、ビデオデコーダ300は、第1のブロックのための残差データを生成するために、第1のブロックのための変換係数に非分離可能変換の逆を適用し、第1のブロックのための残差データに基づいて、第1のブロックのサンプルを再構成し得る。この例では、第2のブロックの幅が第2のブロックの高さに等しくないことに基づいて、ビデオデコーダ300は、第2のブロックのための中間データを生成するために、第2のブロックのための変換係数に逆変換を適用し、第2のブロックのための残差データを生成するために、第2のブロックのための中間データにLFNSTの逆を適用し、第2のブロックのための残差データに基づいて、第2のブロックのサンプルを再構成し得る。
[0133]図12は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。図12は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものとみなされるべきではない。説明を目的として、本開示は、HEVCビデオコーディング規格および開発中のH.266/VVCビデオコーディング規格などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般にビデオ符号化および復号に適用可能である。
[0134]図12の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、復号ピクチャバッファ(DPB)218、およびエントロピー符号化ユニット220を含む。図12は、上記の図4に示されるように、本開示の技法に従って、変換処理ユニット206および逆変換処理ユニット212がそこから変換を選択する変換バンクをさらに含み得る。同様に、図4に示されるように、変換処理ユニット206は、選択された変換のインジケーションをエントロピー符号化ユニット220に提供し得、これは、本開示の技法に従って、MTS方式のための様々な変換のうちのどれがビデオデータの現在のブロックのために選択されるかを表すデータを符号化し得る。
[0135]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、例えば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして機能し得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、例示されるように、ビデオエンコーダ200の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
[0136]本開示では、ビデオデータメモリ230への参照は、そのように明記されていない限り、ビデオエンコーダ200の内部にあるメモリに、またはそのように明記されていない限り、ビデオエンコーダ200の外部にあるメモリに、限定されると解釈されるべきではない。むしろ、ビデオデータメモリ230への参照は、ビデオエンコーダ200が符号化のために受信するビデオデータ(例えば、符号化されるべき現在のブロックについてのビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時記憶(temporary storage)を提供し得る。
[0137]図12の様々なユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に変更不可能である。いくつかの例では、これらユニットのうちの1つまたは複数は、個別の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0138]ビデオエンコーダ200は、プログラマブル回路から形成された、演算論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)が、ビデオエンコーダ200が受信および実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0139]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204およびモード選択ユニット202に提供し得る。ビデオデータメモリ230内のビデオデータは、符号化されるべき生のビデオデータであり得る。
[0140]モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、イントラブロックコピーユニット(これは、動き推定ユニット222および/または動き補償ユニット224の一部であり得る)、アフィンユニット、線形モデル(LM)ユニット、または同様のものを含み得る。
[0141]モード選択ユニット202は、一般に、複数の符号化パスを調整して、符号化パラメータの組合せと、そのような組合せについての結果として得られるレート歪み値とをテストする。符号化パラメータは、CTUのCUへの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好なレート歪み値を有する符号化パラメータの組合せを選択し得る。
[0142]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内に1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCの4分木構造またはQTBT構造などのツリー構造に従って、ピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。このようなCUは、一般に「ビデオブロック」または「ブロック」とも呼ばれ得る。
[0143]一般に、モード選択ユニット202はまた、現在のブロック(例えば、現在のCU、またはHEVCでは、PUとTUとの重複部分)についての予測ブロックを生成するように、その構成要素(例えば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(例えば、DPB218に記憶された1つまたは複数の以前にコーディングされたピクチャ)内の、1つまたは複数の密接にマッチする参照ブロックを識別するために、動き探索を実行し得る。特に、動き推定ユニット222は、例えば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差分(MAD)、平均2乗差分(MSD)、または同様のものに従って、潜在的な参照ブロックが現在のブロックにどれだけ類似しているかを表す値を算出し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用して、これらの算出を実行し得る。動き推定ユニット222は、現在のブロックに最も密接にマッチする参照ブロックを示す、これらの算出の結果として生じる最低値を有する参照ブロックを識別し得る。
[0144]動き推定ユニット222は、現在のピクチャ内の現在のブロックの位置に対する参照ピクチャ内の参照ブロックの位置を定義する、1つまたは複数の動きベクトル(MV)を形成し得る。次いで、動き推定ユニット222は、動きベクトルを動き補償ユニット224に提供し得る。例えば、単方向インター予測の場合、動き推定ユニット222は、単一の動きベクトルを提供し得る一方で、双方向インター予測の場合、動き推定ユニット222は、2つの動きベクトルを提供し得る。次いで、動き補償ユニット224は、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度(fractional sample precision)を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って、予測ブロックの値を補間し得る。さらに、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてのデータを取り出し、例えば、サンプルごとの平均化または重み付け平均化を通じて、取り出されたデータを組み合わせ得る。
[0145]別の例として、イントラ予測、またはイントラ予測コーディングの場合、イントラ予測ユニット226は、現在のブロックに隣接するサンプルから予測ブロックを生成し得る。例えば、方向性モードの場合、イントラ予測ユニット226は、一般に、隣接サンプルの値を数学的に組み合わせ、これらの算出された値を現在のブロックにわたって定義された方向にポピュレートして(populate)、予測ブロックを生成し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を算出し、予測ブロックの各サンプルについてのこの結果として得られる平均を含むように予測ブロックを生成し得る。
[0146]モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの生のコーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を算出する。結果として得られるサンプルごとの差分は、現在のブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
[0147]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関連付けられ得る。ビデオエンコーダ200およびビデオデコーダ300は、様々なサイズを有するPUをサポートし得る。上記で示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ユニットのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測の場合、2N×2NまたはN×NのPUサイズ、およびインター予測の場合、2N×2N、2N×N、N×2N、N×N、または同様の対称PUサイズをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測の場合、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについての非対称区分をサポートし得る。
[0148]モード選択ユニットがCUをPUにそれ以上区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0149]ほんの一例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、これらコーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックのための予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構成する方法を示すシンタックス要素を生成し得る。このようなモードでは、モード選択ユニット202は、これらのシンタックス要素をエントロピー符号化ユニット220に提供して、符号化されるようにし得る。
[0150]上記で説明されたように、残差生成ユニット204は、現在のブロックについてのビデオデータと、対応する予測ブロックとを受信する。次いで、残差生成ユニット204は、現在のブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を算出する。
[0151]変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。例えば、変換処理ユニット206は、残差ブロックに、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、例えば、回転変換などの1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0152]本開示の技法によれば、変換処理ユニット206は、1次変換と2次変換との両方を含む変換方式(例えば、MTS方式)を選択し得る。1次変換は、様々なDCTおよび/またはDSTのうちの1つなどの、水平変換および垂直変換を含む分離可能変換であり得る。2次変換は、LFNSTであり得る。変換処理ユニット206は、追加として、選択された変換方式のインジケーションと、選択された変換方式が2次変換を含む場合は、選択された2次変換のインジケーションとをエントロピー符号化ユニット220に提供し得る。エントロピー符号化ユニット220は、順に、選択された変換方式を表す第1のコードワードを符号化し得る(これはまた、選択された変換方式が2次変換を含むかどうかを示し得る)。選択された変換方式がLFNSTなどの2次変換を含む場合、エントロピー符号化ユニット220は、選択された2次変換を表す第2のコードワードをさらに符号化し得る。ビデオエンコーダ200は、例えば、上記で説明されたように、1次変換がDCT-2水平変換とDCT-2垂直変換とを含む場合、選択された変換方式が2次変換を含むと決定し得る。さらに、変換処理ユニット206は、残差ブロックに1次変換を適用し得る。選択された変換方式が2次変換を含む場合、変換処理ユニット206はまた、1次変換に続いて2次変換を適用し得る。
[0153]量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロックにおける変換係数を量子化し得る。量子化ユニット208は、現在のブロックに関連付けられた量子化パラメータ(QP)値に従って、変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在のブロックに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0154]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構成するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。本開示の技法によれば、逆変換処理ユニット212は、変換係数に対して、逆2次変換を適用し、次いで、逆1次変換を適用し得る。再構成ユニット214は、再構成された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度の歪みを伴ってではあるが)現在のブロックに対応する再構成されたブロックを生成し得る。例えば、再構成ユニット214は、再構成されたブロックを生成するために、再構成された残差ブロックのサンプルを、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに加算し得る。
[0155]フィルタユニット216は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行し得る。いくつかの例では、フィルタユニット216の動作は、スキップされ得る。
[0156]ビデオエンコーダ200は、再構成されたブロックをDPB218に記憶する。例えば、フィルタユニット216の動作が必要とされない例では、再構成ユニット214が、再構成されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216が、フィルタリングされた再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、その後に符号化されるピクチャ(subsequently encoded pictures)のブロックをインター予測するために、再構成された(および潜在的にフィルタリングされた)ブロックから形成された参照ピクチャを、DPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャ内の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構成されたブロックを使用し得る。
[0157]一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能的構成要素から受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化オペレーションを実行し得る。例えば、エントロピー符号化ユニット220は、データに対して、コンテキスト適応型可変長コーディング(CAVLC)演算(operation)、CABAC演算、V2V(variable-to-variable)長コーディング演算、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)演算、確率間隔区分エントロピー(PIPE)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算を実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0158]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構成するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220が、ビットストリームを出力し得る。
[0159]上記で説明された動作は、ブロックに関して説明されたものである。このような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であると理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0160]いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)および参照ピクチャを識別するための動作は、クロマブロックのためのMVおよび参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは、同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとで同じであり得る。
[0161]ビデオエンコーダ200は、ビデオデータを符号化するように構成されたデバイスの一例を表し、このデバイスは、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされる1つまたは複数の処理ユニットとを含み、1つまたは複数の処理ユニットは、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を行うように構成される。
[0162]図13は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図13は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものではない。説明を目的として、本開示は、VVCおよびHEVCの技法に従って説明されるビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に合わせて構成されたビデオコーディングデバイスによっても実行され得る。
[0163]図13の例では、ビデオデコーダ300は、コーディングされたピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、および復号ピクチャバッファ(DPB)314を含む。図13は、上記の図4に示されるように、本開示の技法に従って、逆変換処理ユニット308がそこから変換を選択する変換バンクをさらに含み得る。同様に、図4に示された技法とは逆に、エントロピー復号ユニット302は、本開示の技法に従って、MTS方式のための様々な変換のうちのどれがビデオデータの現在のブロックのために選択されるかを表すデータを復号し、変換のインジケーションを逆変換処理ユニット308に提供し得る。
[0164]予測処理ユニット304は、動き補償ユニット316およびイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、イントラブロックコピーユニット(これは、動き補償ユニット316の一部を形成し得る)、アフィンユニット、線形モデル(LM)ユニット、または同様のものを含み得る。他の例では、ビデオデコーダ300は、より多い数の、より少ない数の、または異なる機能的構成要素を含み得る。
[0165]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されることになる、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、例えば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、ビデオデコーダ300が、出力し得、および/または符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに、参照ビデオデータとして使用し得る、復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
[0166]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320について上記で説明されたようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能のうちのいくつかまたは全てが、ビデオデコーダ300の処理回路によって実行されるソフトウェアにおいてインプリメントされるとき、ビデオデコーダ300によって実行されることになる命令を記憶し得る。
[0167]図13に示される様々なユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。図12と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に変更不可能である。いくつかの例では、これらユニットのうちの1つまたは複数は、個別の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0168]ビデオデコーダ300は、プログラマブル回路から形成される、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ300の動作がプログラマブル回路で実行中のソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受信および実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶し得る。
[0169]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0170]本開示の技法によれば、エントロピー復号ユニット302は、ビデオデータの現在のブロックのための復号された変換係数に適用されるべき変換方式を表す第1のコードワードを復号し得る。エントロピー復号ユニット302は、選択された変換方式が、1次変換に加えて適用されるべき2次変換(例えば、LFNST)を含むかどうかをさらに決定し得る。例えば、1次変換がDCT-2水平変換とDCT-2垂直変換とを含む場合、エントロピー復号ユニット302は、2次変換も適用されるべきであると決定し得る。さらに、2次変換が適用されるべきであると決定することに応答して、エントロピー復号ユニット302はまた、利用可能な2次変換のセットのうちの2次変換を表す第2のコードワードを復号し得る。
[0171]一般に、ビデオデコーダ300は、ブロックごとの単位でピクチャを再構成する。ビデオデコーダ300は、各ブロックに対して個々に再構成動作を実行し得る(ここで、現在再構成されている、すなわち、復号されているブロックは、「現在のブロック」と呼ばれ得る)。
[0172]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または(1つまたは複数の)変換モードインジケーションなどの、変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度、また同様に、逆量子化ユニット306が適用すべき逆量子化の程度(degree)を決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、例えば、量子化された変換係数を逆量子化するために、ビット単位の左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
[0173]逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在のブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット308は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を適用し得る。変換方式が2次変換を含む場合、逆量子化ユニット306は、1次変換を適用するより前に2次変換を適用し得る。
[0174]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って、予測ブロックを生成する。例えば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316が、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックをそこから取り出すDPB314中の参照ピクチャ、ならびに、現在のピクチャ内の現在のブロックのロケーションに対する参照ピクチャ内の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(図12)に関して説明されたのと実質的に同様の方法で、インター予測プロセスを実行し得る。
[0175]別の例として、現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って、予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(図12)に関して説明されたのと実質的に同様の方法で、イントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに隣接するサンプルのデータを取り出し得る。
[0176]再構成ユニット310は、予測ブロックおよび残差ブロックを使用して、現在のブロックを再構成し得る。例えば、再構成ユニット310は、現在のブロックを再構成するために、残差ブロックのサンプルを予測ブロックの対応するサンプルに加算し得る。
[0177]フィルタユニット312は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット312は、再構成されたブロックのエッジに沿ったブロッキネスアーティファクトを低減させるために、デブロッキング動作を実行し得る。フィルタユニット312の動作は、必ずしも全ての例において実行される訳ではない。
[0178]ビデオデコーダ300は、再構成されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、予測処理ユニット304に、後続の動き補償のための以前に復号されたピクチャおよびイントラ予測のための現在のピクチャのサンプルなどの、参照情報を提供し得る。さらに、ビデオデコーダ300は、図1のディスプレイデバイス118などの、ディスプレイデバイス上での後続の表示のために、復号されたピクチャをDPBから出力し得る。
[0179]ビデオデコーダ300は、ビデオ復号デバイスの一例を表し、ビデオ復号デバイスは、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされる1つまたは複数の処理ユニットとを含み、1つまたは複数の処理ユニットは、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を行うように構成される。
[0180]図14は、本開示の技法による、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオエンコーダ200(図1および図12)に関して説明されるが、他のデバイスが図14と同様の方法を実行するように構成され得ることが理解されるべきである。
[0181]この例では、ビデオエンコーダ200は、最初に現在のブロックを予測する(350)。例えば、ビデオエンコーダ200は、現在のブロックのための予測ブロックを形成し得る。次いで、ビデオエンコーダ200は、現在のブロックのための残差ブロックを算出し得る(352)。残差ブロックを算出するために、ビデオエンコーダ200は、元のコーディングされていないブロックと、現在のブロックのための予測ブロックとの間の差分を算出し得る。次いで、ビデオエンコーダ200は、変換を選択し、選択された変換を使用し、残差ブロックの係数を量子化し得る(354)。選択された変換は、1次変換および/またはLFNSTなどの2次変換を含み得る。ビデオエンコーダ200は、選択された変換に従って、1次変換および/または2次変換のいずれかまたは両方を適用し得る。
[0182]次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査中、または走査に続いて、ビデオエンコーダ200は、係数、ならびに選択された変換を表すデータをエントロピー符号化し得る(358)。例えば、ビデオエンコーダ200は、上記で説明されたような本開示の様々な技法のうちの任意のものを使用して、変換を表すデータをエントロピー符号化し得る。ビデオエンコーダ200は、CAVLCまたはCABACを使用して、係数を符号化し得る。特に、ビデオエンコーダ200は、本開示の技法に従って変換方式を選択し、本開示の技法のうちの任意のものに従って、選択された変換を表すコードワードをエントロピー符号化し得る。選択された変換方式が2次変換を含む場合、ビデオエンコーダ200は、例えば、図8に関して上記で説明されたように、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをさらに符号化し得る。次いで、ビデオエンコーダ200は、ブロックの(1つまたは複数の)変換および係数を表すエントロピー符号化されたデータを出力し得る(360)。
[0183]このようにして、図14の方法は、ビデオデータを符号化する方法の一例を表し、この方法は、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を含む。
[0184]図15は、本開示の技法による、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオデコーダ300(図1および図13)に関して説明されるが、他のデバイスが図15のものと同様の方法を実行するように構成され得ることが理解されるべきである。
[0185]ビデオデコーダ300は、現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータおよびエントロピーコーディングされた予測情報などの、現在のブロックについてのエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、現在のブロックについての予測情報、現在のブロックのための変換を決定し、残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、本開示の様々な技法のうちの任意のものに従って、変換情報をエントロピー復号し得る。ビデオデコーダ300は、現在のブロックのための予測ブロックを算出するために、例えば、現在のブロックについての予測情報によって示されるようなイントラ予測モードまたはインター予測モードを使用して、現在のブロックを予測し得る(374)。次いで、ビデオデコーダ300は、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。次いで、ビデオデコーダ300は、残差ブロックを生成するために、示された変換を使用して、係数を逆量子化および逆変換し得る(378)。例えば、ビデオデコーダ300は、本開示の技法のうちの任意のものに従って適用されるべき変換を表すコードワードを復号し得る。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせること(380)によって、現在のブロックを復号し得る。
[0186]このようにして、図15の方法は、ビデオデータを復号する方法の一例を表し、この方法は、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を含む。
[0187]図16は、本開示の技法による、例示的なビデオ符号化方法を示すフローチャートである。例を目的として、図16の方法は、図1および図12のビデオエンコーダ200に関して説明されるが、他のビデオエンコーダがこの方法または同様の方法を実行するように構成され得ることが理解されるべきである。
[0188]最初に、ビデオエンコーダ200は、1次変換と2次変換とを含む変換方式を選択し得る(400)。モード選択ユニット202はまた、利用可能な2次変換のセットから2次変換を選択し得る(402)。例えば、モード選択ユニット202は、ビデオエンコーダ200の様々な構成要素に、様々な変換方式をテストすることを含む、様々な符号化パスを実行させ得る。モード選択ユニット202は、レート歪みメトリックを算出し、1次変換と選択された2次変換とを含む選択された変換方式が、最良のテストされたレート歪み特性をもたらすと決定し得る。
[0189]次いで、ビデオエンコーダ200は、選択された変換方式を表す第1のコードワードを符号化し得る(404)。加えて、ビデオエンコーダ200は、選択された2次変換方式を表す第2のコードワードを符号化し得る(406)。特に、エントロピー符号化ユニット220は、第1のコードワードと第2のコードワードとをエントロピー符号化し得る。
[0190]次いで、ビデオエンコーダ200は、残差ブロックに1次変換を適用し得る(408)。特に、変換処理ユニット206は、残差ブロックに1次変換を適用し得、変換係数の変換ブロックを生成する。ビデオエンコーダ200(特に、変換処理ユニット206)はまた、変換ブロックに2次変換を適用し得る(410)。
[0191]このようにして、図16の方法は、ビデオデータを符号化する方法の一例を表し、この方法は、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を含む。
[0192]図17は、本開示の技法による、例示的なビデオ復号方法を示すフローチャートである。例を目的として、図17の方法は、図1および図13のビデオデコーダ300に関して説明されるが、他のビデオエンコーダがこの方法または同様の方法を実行するように構成され得ることが理解されるべきである。
[0193]ビデオデコーダ300は、最初に、1次変換と2次変換との両方を含む変換方式を表す第1のコードワードを復号し得る(420)。特に、エントロピー復号ユニット302は、第1のコードワードをエントロピー復号し得る。ビデオデコーダ300のエントロピー復号ユニット302はまた、利用可能な2次変換のセットにおける2次変換を表す第2のコードワードをエントロピー復号し得る(422)。例えば、第2のコードワードは、利用可能な2次変換のセットへのインデックスとして機能し得る。
[0194]次いで、ビデオデコーダ300は、中間変換ブロックを生成するために、変換ブロックの復号された変換係数に2次変換を適用し得る(424)。ビデオデコーダ300はまた、残差ブロックを再生するために、中間変換ブロックに1次変換を適用し得る(426)。特に、逆変換処理ユニット308は、2次変換および1次変換を適用し得る。
[0195]このようにして、図17の方法は、ビデオデータを復号する方法の一例を表し、この方法は、ビデオデータの現在のブロックのためのマルチプル変換選択(MTS)方式の変換候補のセットのうちの選択された変換方式を表す第1のコードワードをコーディングすることと、選択された変換方式は、1次変換に加えて適用されるべき利用可能な2次変換のセットのうちの2次変換であり、利用可能な2次変換のセットからの2次変換を表す第2のコードワードをコーディングすることと、現在のブロックのための残差データのコーディング中に、1次変換および2次変換を適用することと、を含む。
[0196]例に依存して、本明細書で説明された技法のうちの任意のもののある特定の動作(act)またはイベントは、異なる順序で実行され得、追加、併合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが本技法の実施に必ずしも必要ではない)ことを認識されたい。さらに、ある特定の例では、動作またはイベントは、シーケンシャル順にではなく、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通じて、同時並行(concurrently)に実行され得る。
[0197]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、例えば、通信プロトコルに従って、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0198]限定ではなく例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形で所望のプログラムコードを記憶するために使用され得、かつコンピュータによってアクセスされ得る、その他任意の媒体を備え得る。また、任意の接続が、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに、非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイ(登録商標)ディスクを含み、ここでディスク(disks)は、通常磁気的にデータを再生し、一方、ディスク(discs)は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0199]命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積されたまたはディスクリートロジック回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される場合、「プロセッサ」という用語は、前述の構造の任意のものまたは本明細書で説明された技法のインプリメンテーションに好適なその他任意の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得、または、複合コーデックに組み込まれ得る。また、これら技法は、1つまたは複数の回路または論理要素において完全にインプリメントされ得る。
[0200]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とする訳ではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされ得るか、または、好適なソフトウェアおよび/またはファームウェアと併せて、上記で説明されたような1つまたは複数のプロセッサを含む、相互運用のハードウェアユニット(interoperative hardware units)の集合によって提供され得る。
[0201]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。