1つ又は複数の添付図面において、同じ参照符号を持つステップ及び/又は機能が参照されている場合、それらのステップ及び/又は機能は、反対の意図が現れない限り、本説明の目的で、同じ機能又は動作を有する。
レート制御されたビデオ符号化器には、ブロックパーティショニングの制約に適した粒度で量子化パラメータを調整する柔軟性が必要である。ブロックパーティショニング制約は、例えば、複数のビデオ符号化器が並行して動作して各フレームを圧縮する場合など、フレームのある部分と別の部分とで異なる場合がある。それに応じて、量子化パラメータの調整が必要なエリアの粒度も異なる。さらに、可能性のある二次変換の適用を含め、適用される変換の選択の制御は、変換される残差が生成された予測信号の範囲内で適用される。特にイントラ予測については、ルマブロックとクロマブロックで異なるイントラ予測モードを使用する可能性があるため、ルマブロックとクロマブロックでそれぞれ別のモードが利用可能である。
ビデオのいくつかのセクションは、レンダリングされたビューポートの忠実度に対する貢献度が他のセクションよりも高いため、より高いビットレートを割り当て、ブロック構造及び量子化パラメータの変動に大きな柔軟性を持たせることができる。レンダリングされたビューポートの忠実度への貢献度が低いセクション、例えばレンダリングされたビューの横や後ろにあるセクションは、符号化の労力を減らすためによりシンプルなブロック構造で、量子化パラメータの制御におけるより低い柔軟性で、圧縮されてもよい。一般的には、より低いビットレートでは、変換係数をより粗く量子化するために、より大きな値が選択される。さらに、変換選択の適用は、ルマチャネルとクロマチャネルの間で独立していてもよく、これは、変換選択のためにルマとクロマを同時に考慮する必要性を回避して、符号化プロセスをさらに単純化するためである。特に、ルマとクロマのイントラ予測モードを別々に検討した後に、二次変換の選択のためにルマとクロマを一緒に検討する必要性を回避することができる。
図1は、ビデオ符号化及び復号システム100の機能モジュールを示す概略ブロック図である。システム100は、フレームのそれぞれの部分で有効になっている可能性のある異なるブロックパーティショニング制約に対応するために、フレームの異なる部分において、量子化パラメータが調整されるエリアを変化させることができる。
システム100は、ソースデバイス110と、デスティネーションデバイス130とを含む。通信チャネル120は、ソースデバイス110からデスティネーションデバイス130に符号化されたビデオ情報を通信するために使用される。いくつかの構成では、ソースデバイス110及びデスティネーションデバイス130のいずれか又は両方が、それぞれの携帯電話ハンドセット又は「スマートフォン」を備えてもよく、その場合、通信チャネル120は、無線チャネルである。他の構成では、ソースデバイス110及びデスティネーションデバイス130は、ビデオ会議装置を備えてもよくその場合、通信チャネル120は、典型的には、インターネット接続などの有線チャネルである。さらに、ソースデバイス110及びデスティネーションデバイス130は、オーバーザエアテレビジョン放送をサポートするデバイス、ケーブルテレビ応用例、インターネットビデオ応用例(ストリーミングを含む)、及び符号化されたビデオデータがファイルサーバ内のハードディスクドライブのような何らかのコンピュータ読み取り可能な記憶媒体に取り込まれる応用例を含む、広範囲のデバイスのいずれかを備えてもよい。
図1に示すように、ソースデバイス110は、ビデオソース112、ビデオ符号化器114、及び送信器116を含む。ビデオソース112は、典型的には、画像キャプチャセンサ、非一時的記録媒体に格納された以前にキャプチャされたビデオシーケンス、又は遠隔の画像キャプチャセンサからのビデオフィードなど、キャプチャされたビデオフレームデータ(113として示される)のソースを備える。また、ビデオソース112は、コンピュータグラフィックスカードの出力であってもよく、例えば、タブレットコンピュータなどのコンピューティングデバイス上で実行されるオペレーティングシステムや様々な応用例のビデオ出力を表示するものである。ビデオソース112としてイメージキャプチャセンサを含んでいてもよいソースデバイス110の例は、スマートフォン、ビデオカムコーダ、プロ用ビデオカメラ、及びネットワークビデオカメラを含む。
ビデオ符号化器114は、図3を参照してさらに説明するように、ビデオソース112からのキャプチャされたフレームデータ(矢印113で示す)をビットストリーム(矢印115で示す)に変換(又は「符号化」)する。ビットストリーム115は、送信器116によって、符号化されたビデオデータ(又は「符号化されたビデオ情報」)として、通信チャネル120を介して送信される。また、ビットストリーム115が、後に通信チャネル120を介して送信されるまで、又は通信チャネル120を介した送信に代えて、「フラッシュ」メモリやハードディスクドライブなどの非一時的記憶デバイス122に記憶されることも可能である。例えば、符号化されたビデオデータは、ビデオストリーミング応用例のために、ワイドエリアネットワーク(WAN)を介して顧客にオンデマンドで提供されることがある。
デスティネーションデバイス130は、受信器132、ビデオ復号器134、ディスプレイデバイス136を含む。受信器132は、通信チャネル120から符号化されたビデオデータを受信し、受信したビデオデータをビットストリーム(矢印133で示す)としてビデオ復号器134に渡す。そして、ビデオ復号器134は、復号されたフレームデータ(矢印で示す135)をディスプレイデバイス136に出力する。復号されたフレームデータ135は、フレームデータ113と同じクロマフォーマットを有している。ディスプレイデバイス136の例は、ブラウン管、又はスマートフォン、タブレットコンピュータ、コンピュータモニタ、若しくはスタンドアロンのテレビにあるような液晶ディスプレイを含む。また、ソースデバイス110及びデスティネーションデバイス130のそれぞれの機能が単一のデバイスで実装されることも可能であり、その例には、携帯電話のハンドセット及びタブレットコンピュータが含まれる。復号されたフレームデータは、ユーザに提示する前にさらに変換されてもよい。例えば、特定の緯度と経度を持つ「ビューポート」が、シーンの360°ビューを表現するために、プロジェクションフォーマットを使用して復号されたフレームデータからレンダリングされてもよい。
上述した例示的なデバイスにかかわらず、ソースデバイス110及びデスティネーションデバイス130のそれぞれは、典型的にはハードウェア及びソフトウェアコンポーネントの組み合わせによって、汎用のコンピューティングシステム内に構成されてもよい。図2Aは、そのようなコンピュータシステム200を示しており、このコンピュータシステム200は、コンピュータモジュール201と、キーボード202、マウスポインタデバイス203、スキャナ226、ビデオソース112として構成されてもよいカメラ227、及びマイクロフォン280などの入力デバイスと、プリンタ215、ディスプレイデバイス136として構成されてもよいディスプレイデバイス214、及びスピーカー217などの出力デバイスとを含む。外部の変復調器(モデム)トランシーバデバイス216が、接続221を介して通信ネットワーク220との間で通信するために、コンピュータモジュール201によって使用されてもよい。通信チャネル120を表すことができる通信ネットワーク220は、インターネット、セルラ通信ネットワーク、又はプライベートWANなどの(WAN)であってもよい。接続が電話回線で221ある場合、モデム216は、従来の「ダイアルアップ」モデムであってもよい。あるいは、接続221が大容量(例えば、ケーブル又は光)接続である場合、モデム216は、ブロードバンドモデムであってもよい。また、通信ネットワーク220への無線接続には、無線モデムを用いてもよい。送受信デバイス216は、送信器116及び受信器132の機能を提供してもよく、通信チャネル120は、接続221において実現されてもよい。
コンピュータモジュール201は、典型的には、少なくとも1つのプロセッサユニット205と、メモリユニット206とを含む。例えば、メモリユニット206は、半導体ランダムアクセスメモリ(RAM)及び半導体リードオンリーメモリ(ROM)を有していてもよい。また、コンピュータモジュール201は、ビデオディスプレイ214、スピーカー217及びマイクロフォン280に結合するオーディオ-ビデオインタフェース207、キーボード202、マウス203、スキャナ226、カメラ227及び任意にジョイスティック又は他のヒューマンインタフェースデバイス(不図示)に結合するI/Oインタフェース213、及び外部モデム216及びプリンタ215用のインタフェース208を含む複数の入出力(I/O)インタフェースを含む。オーディオビデオインタフェース207からコンピュータモニタ214への信号は、一般に、コンピュータグラフィックスカードの出力である。いくつかの実装では、モデム216は、例えばインタフェース208内で、コンピュータモジュール201内に組み込まれてもよい。コンピュータモジュール201はまた、ローカルネットワークインタフェース211を有し、これは、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222への接続223を介したコンピュータシステム200の結合を可能にする。図2Aに示されているように、ローカル通信ネットワーク222は、接続224を介して広域ネットワーク220に結合することもでき、これは、いわゆる「ファイアウォール」デバイス又は同様の機能を有するデバイスを典型的に含むであろう。ローカルネットワークインタフェース211は、イーサネット(登録商標)回路カード、ブルートゥース(登録商標)無線構成、又はIEEE 802.11無線構成を備えていてもよいが、インタフェース211として多くの他のタイプのインタフェースが使用されてよい。また、ローカルネットワークインタフェース211は、送信器116と受信器132の機能を提供してもよく、通信チャネル120もローカル通信ネットワーク222において実現されてもよい。
I/Oインタフェース208及び213は、シリアル接続とパラレル接続のいずれか又は両方を与えてもよく、前者は通常、USB(Universal Serial Bus)規格に従って実装され、対応するUSBコネクタ(不図示)を有する。記憶デバイス209は、典型的にはハードディスクドライブ(HDD)210を含む。また、フロッピーディスクドライブや磁気テープドライブ(不図示)などの他の記憶デバイスも使用することができる。光ディスクドライブ212は、典型的には、データの不揮発性ソースとして機能するために提供される。コンピュータシステム200への適切なデータソースとして、例えば、光ディスク(例えば、CD-ROM、DVD、ブルーレイディスク(登録商標))、USB-RAM、ポータブルな外部ハードドライブ、及びフロッピーディスクなどのポータブルメモリデバイスが使用されてもよい。典型的には、HDD210、光学ドライブ212、ネットワーク220及び222のいずれもが、ビデオソース112として、又はディスプレイ214を介した再生のために保存される復号されたビデオデータの送信先としても動作するように構成されてもよい。システム100のソースデバイス110及びデスティネーションデバイス130は、コンピュータシステム200において実装されてもよい。
コンピュータモジュール201のコンポーネント205~213は、典型的には、相互接続されたバス204を介して、当業者に知られているコンピュータシステム200の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ205は、接続218を用いてシステムバス204に結合される。同様に、メモリ206及び光ディスクドライブ212は、接続219によってシステムバス204に結合されている。説明された構成が実現できるコンピュータの例には、IBM-PC及び互換機、Sun SPARCstations、Apple Mac(登録商標)又は同様のコンピュータシステムが含まれる。
適切な又は所望される場合、ビデオ符号化器114及びビデオ復号器134、並びに以下に説明する方法は、コンピュータシステム200を使用して実装されてもよい。特に、ビデオ符号化器114、ビデオ復号器134、及びこれから説明する方法は、コンピュータシステム200内で実行可能な1つ又は複数のソフトウェアアプリケーションプログラム233として実装されてもよい。特に、ビデオ符号化器114、ビデオ復号器134、及び説明する方法のステップは、コンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって実現される。ソフトウェアの命令231は、それぞれが1つ又は複数の特定のタスクを実行するための1つ又は複数のコードモジュールとして形成されてもよい。また、ソフトウェアは、2つの別々の部分に分割されてもよく、その場合、第1の部分及び対応するコードモジュールは、説明した方法を実行し、第2の部分及び対応するコードモジュールは、第1の部分とユーザとの間のユーザインタフェースを管理する。
ソフトウェアは、例えば、後述の記憶デバイスを含むコンピュータ読み取り可能媒体に格納されてもよい。ソフトウェアは、コンピュータ読み取り可能媒体からコンピュータシステム200にロードされた後、コンピュータシステム200によって実行される。このようなソフトウェア又はコンピュータプログラムが記録されたコンピュータ読み取り可能媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、好ましくは、ビデオ符号化器114、ビデオ復号器134及び説明した方法を実装するための有利な装置をもたらす。
ソフトウェア233は、典型的には、HDD210又はメモリ206に格納されている。ソフトウェアは、コンピュータ読み取り可能な媒体からコンピュータシステム200にロードされ、コンピュータシステム200によって実行される。したがって、例えば、ソフトウェア233は、光ディスクドライブ212によって読み取られる光学的に読み取り可能なディスク記憶媒体(例えば、CD-ROM)225に格納されていてもよい。
いくつかの例では、アプリケーションプログラム233は、1つ又は複数のCD-ROM225に符号化されてユーザに供給され、対応するドライブ212を介して読み取られてもよく、又は代替的に、ネットワーク220又は222からユーザによって読み取られてもよい。さらに、ソフトウェアは、他のコンピュータ読み取り可能媒体からコンピュータシステム200にロードすることもできる。コンピュータ読み取り可能記憶媒体とは、実行及び/又は処理のために、記録された命令及び/又はデータをコンピュータシステム200に提供する任意の非一時的有形記憶媒体を指す。このような記憶媒体の例には、フロッピーディスク、磁気テープ、CD-ROM、DVD、ブルーレイディスク(登録商標)、ハードディスクドライブ、ROM若しくは集積回路、USBメモリ、光磁気ディスク、又はPCMCIAカード等のコンピュータ読み取り可能カードが含まれ、このようなデバイスがコンピュータモジュール201の内部にあるか外部にあるかを問わない。コンピュータモジュール401へのソフトウェア、アプリケーションプログラム、命令及び/又はビデオデータ若しくは符号化されたビデオデータの提供にも参加し得る一時的又は非有形のコンピュータ読み取り可能伝送媒体の例には、無線又は赤外線の伝送路のほか、他のコンピュータ又はネットワークデバイスとのネットワーク接続、及び電子メールの送信やWebサイトなどに記録された情報を含むインターネット又はイントラネットなどを含む。
上述したアプリケーションプログラム233の第2の部分及び対応するコードモジュールは、ディスプレイ214上にレンダリング又はその他の方法で表現される1つ又は複数のグラフィカルユーザインタフェース(GUI)を実装するために実行されてもよい。典型的なキーボード202及びマウス203の操作を通じて、コンピュータシステム200及びアプリケーションのユーザは、GUIに関連するアプリケーションに制御コマンド及び/又は入力を提供するために、機能的に適応可能な方法でインタフェースを操作することができる。また、スピーカー217を介して出力される音声プロンプトや、マイクロフォン280を介して入力されるユーザの音声コマンドを利用したオーディオインタフェースなど、機能的に適応可能なユーザインタフェースの他の形態も実装可能である。
図2Bは、プロセッサ205と「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータモジュール201がアクセス可能な全てのメモリモジュール(HDD209と半導体メモリ206を含む)の論理的な集合を表している。
コンピュータモジュール201の初期電源投入時には、電源投入時自己診断(POST)プログラム250が実行される。POSTプログラム250は、典型的には、図2Aの半導体メモリ206のROM249に格納されている。なお、ROM249のようにソフトウェアを格納しているハードウェアデバイスをファームウェアと呼ぶことがある。POSTプログラム250は、正しい機能を保証するためにコンピュータモジュール201内のハードウェアを検査し、典型的には、プロセッサ205、メモリ234(209、206)、及び同じく典型的にはROM249に格納されている基本入出力システムソフトウェア(BIOS)モジュール251が正しく動作することをチェックする。POSTプログラム250が正常に実行されると、BIOS251は、図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210の起動により、ハードディスクドライブ210に常駐しているブートストラップローダプログラム252がプロセッサ205を介して実行される。これにより、RAMメモリ206にオペレーティングシステム253がロードされ、これによりオペレーティングシステム253の動作が開始される。オペレーティングシステム253は、プロセッサ205によって実行可能なシステムレベルのアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース、汎用ユーザインタフェースなどの様々な高レベルの機能を実現する。
オペレーティングシステム253は、コンピュータモジュール201上で実行される各プロセス又はアプリケーションが、他のプロセスに割り当てられたメモリと衝突することなく実行できる十分なメモリを有することを保証するために、メモリ234(209、206)を管理する。さらに、各プロセスが効果的に実行できるように、図2Aのコンピュータシステム200で利用可能な異なる種類のメモリが適切に使用されなければならない。したがって、集約されたメモリ234は、(特に断らない限り)メモリの特定のセグメントがどのように割り当てられるかを説明することを意図したものではなく、むしろコンピュータシステム200によってアクセス可能なメモリの一般的なビューと、これがどのように使用されるかを提供することを意図したものである。
図2Bに示すように、プロセッサ205は、制御ユニット239、算術論理ユニット(ALU)240、キャッシュメモリと呼ばれることもあるローカル又は内部メモリ248を含む多数の機能モジュールを含む。キャッシュメモリ248は、典型的には、レジスタセクションに多数の記憶レジスタ244~246を含む。1つ又は複数の内部バス241は、これらの機能モジュールを機能的に相互接続する。プロセッサ205はまた、典型的には、接続218を用いて、システムバス204を介して外部デバイスと通信するための1つ以上のインタフェース242を有する。メモリ234は、接続219を用いてバス204に結合されている。
アプリケーションプログラム233は、条件付きの分岐命令やループ命令を含んでもよい一連の命令231を含む。プログラム233はまた、プログラム233の実行時に使用されるデータ232を含んでいてもよい。命令231及びデータ232は、それぞれ、メモリ位置228、229、230及び235、236、237に格納される。命令231及びメモリ位置228~230の相対的なサイズに応じて、メモリ位置230に示された命令によって描かれるように、特定の命令が単一のメモリ位置に格納されてもよい。代わりに、命令は、メモリ位置228及び229に示された命令セグメントによって描かれるように、それぞれが別のメモリ位置に格納されるいくつかの部分にセグメント化されてもよい。
一般的に、プロセッサ205は、そこで実行される命令のセットを与えられる。プロセッサ205は、後続の入力を待ち、それに対してプロセッサ205は、別の命令セットを実行することによって反応する。各入力は、入力デバイス202、203のうちの1つ以上によって生成されたデータ、ネットワーク220、202のうちの1つを介して外部ソースから受信されたデータ、記憶デバイス206、209のうちの1つから取得されたデータ、又は対応するリーダ212に挿入された記憶媒体225から取得されたデータを含む、複数のソースのうちの1つ以上から提供されてもよく、これらは全て図2Aに描かれている。一連の命令の実行は、場合によっては、データの出力を伴うことがある。また、実行は、データ又は変数をメモリ234に格納することを含んでもよい。
ビデオ符号化器114、ビデオ復号器134、及び説明した方法は、対応するメモリ位置255、256、257でメモリ234に格納される254,入力変数を使用してもよい。ビデオ符号化器114、ビデオ復号器134、及び説明した方法は、対応するメモリ位置262、263、264においてメモリ234に格納される出力変数261を生成する。中間変数258が、メモリ位置259、260、266、267に格納されてもよい。
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、算術論理ユニット(ALU)240、及び制御ユニット239は、プログラム233を構成する命令セットの全ての命令について「フェッチ、復号、及び実行」サイクルを実行するために必要なマイクロ演算のシーケンスを実行するために協働する。各フェッチ、復号、及び実行サイクルは、以下のものを含む。
メモリ位置228、229、230から命令231をフェッチ又は読み出すフェッチ動作。
制御ユニット239が、どの命令がフェッチされたかを判断する復号動作。
制御ユニット239及び/又はALU240が命令を実行する実行動作。
その後、次の命令のためのさらなるフェッチ、復号、及び実行サイクルが実行されてもよい。同様に、制御ユニット239がメモリ位置232に値を格納又は書き込む格納サイクルが実行されてもよい。
これから説明する図13~18の方法における各ステップ又はサブプロセスは、プログラム233の1つ又は複数のセグメントに関連付けられており、典型的には、プロセッサ205内のレジスタ部244、245、247、ALU240、及び制御ユニット239が協働して、プログラム233の言及されたセグメントについての命令セット内の全ての命令のフェッチ、復号、及び実行サイクルを実行することにより実行される。
図3は、ビデオ符号化器114の機能モジュールを示す概略ブロック図である。図4は、ビデオ復号器134の機能モジュールを示す概略ブロック図である。一般に、ブロックの固定サイズのサブブロックへの分割のような、サンプル若しくは係数のグループ、又はアレイとして、データはビデオ符号化器114内の機能モジュール及びビデオ復号器134内の機能モジュール間を通過する。ビデオ符号化器114及びビデオ復号器134は、図2A及び図2Bに示すように、汎用コンピュータシステム200を使用して実装されてもよく、ここで、様々な機能モジュールは、コンピュータシステム200内の専用ハードウェアによって、ハードディスクドライブ205に存在しプロセッサ205によってその実行が制御される、ソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールのようなコンピュータシステム200内で実行可能なソフトウェアによって、実装されてもよい。あるいは、ビデオ符号化器114及びビデオ復号器134は、専用のハードウェアと、コンピュータシステム200内で実行可能なソフトウェアとの組み合わせによって実装されてもよい。ビデオ符号化器114、ビデオ復号器134、及び説明した方法は、代替的に、説明した方法の機能又はサブ機能を実行する1つ又は複数の集積回路などの専用ハードウェアに実装されてもよい。そのような専用ハードウェアは、グラフィックプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け標準製品(ASSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は1つ又は複数のマイクロプロセッサ及び関連するメモリを含んでもよい。特に、ビデオ符号化器114はモジュール310~390を備え、ビデオ復号器134はモジュール420~496を備え、それぞれがソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールとして実装されてもよい。
図3のビデオ符号化器114は、多用途ビデオ符号化(VVC)ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理段階を実行するために他のビデオコーデックを使用することもできる。ビデオ符号化器114は、一連のフレームのようなキャプチャされたフレームデータ113を受け取り、各フレームは1つ以上のカラーチャネルを含む。フレームデータ113は、例えば4:0:0、4:2:0、4:2:2、又は4:4:4のクロマフォーマットなど、任意のクロマフォーマットであってよい。ブロックパーティショナー310は、まず、フレームデータ113を、一般的に正方形の形状で、CTUの特定のサイズが使用されるように構成されている、CTUに分割する。CTUのサイズは、例えば、64×64、128×128、又は256×256のルマサンプルであってもよい。ブロックパーティショナー310は、さらに、各CTUを、ルマ符号化ツリー及びクロマ符号化ツリーに従って、1つ又は複数のCBに分割する。ルマチャネルは、プライマリカラーチャネルと呼ばれることもある。また、各クロマチャネルは、セカンダリカラーチャネルと呼ばれることもある。CBは、様々なサイズを有し、正方形及び非正方形のアスペクト比の両方を含んでいてもよい。ブロックパーティショナー310の動作については、図13~15を参照してさらに説明する。しかし、VVC規格では、CB、CU、PU、及びTUは、常に2の累乗である辺の長さを有する。したがって、312として表される現在のCBはブロックパーティショナー310から出力され、これはCTUのルマ符号化ツリー及びクロマ符号化ツリーに従って、CTUの1つ又は複数のブロックに対する繰り返しに従って進行する。CTUをCBに分割するための選択肢(オプション)については、図5及び図6を参照して以下でさらに説明する。動作はおおむねCTUごとに説明されるが、ビデオ符号化器114及びビデオ復号器134は、メモリ消費を減らすために、より小さいサイズの領域で動作することができる。例えば、各CTUは、サイズ64×64の「仮想パイプラインデータユニット」(VPDU)として知られるより小さな領域に分割することができる。VPDUは、完全なCTUに対して動作する場合と比較して、メモリフットプリントの削減によりシリコン面積が減少し、その結果コストが削減されるハードウェアアーキテクチャにおいて、パイプライン処理により適したデータの粒度を形成する。
フレームデータ113の第1の分割から得られるCTUは、ラスタースキャン順にスキャンされてもよく、1つ以上の「スライス」にグループ化されてもよい。スライスは、「イントラ」(又は「I」)スライスであってもよい。イントラスライス(Iスライス)は、そのスライス内の全てのCUがイントラ予測されていることを示す。また、スライスが片方向予測又は双方向予測(それぞれ「P」又は「B」スライス)されていてもよく、これはそのスライスにおいて片方向予測及び双方向予測がそれぞれ追加的に利用可能であることを示す。
Iスライスでは、各CTUの符号化ツリーが、ルマ用とクロマ用の2つの別の符号化ツリーへと、64×64レベルより下で分岐している場合がある。別々のツリーを使用することは、CTUのルマ64×64エリア内で、ルマとクロマとの間で異なるブロック構造が存在することを可能にする。例えば、大きなクロマCBが多数の小さなルマCBとコロケートされていてもよく、その反対であってもよい。P又はBスライスでは、CTUの単一符号化ツリーが、ルマとクロマに共通のブロック構造を定義する。単一のツリーの結果として得られるブロックは、イントラ予測又はインター予測されてもよい。
各CTUについて、ビデオ符号化器114は、2つの段階で動作する。第1の段階(「検索」段階と呼ばれる)では、ブロックパーティショナー310は、符号化ツリーの様々な潜在的な構成をテストする。符号化ツリーの各潜在的な構成は、関連する「候補」CBを有する。第1段階では、相対的に高い圧縮効率を相対的に低い歪みで提供するCBを選択するために、様々な候補CBをテストする。このテストには一般的にラグランジュ最適化が含まれており、それによって候補CBはレート(符号化コスト)と歪み(入力フレームデータ113に対する誤差)の重み付けされた組み合わせに基づいて評価される。「最良」の候補CB(評価されたレート/歪みが最も小さいCB)は、その後のビットストリーム115への符号化のために選択される。候補CBの評価に含まれるのは、所与のエリアに対するCBを使用するか、又は様々な分割オプションに従ってエリアにさらに分割し、小さくなった結果のエリアのそれぞれをさらなるCBで符号化するか、又はエリアをよりさらに分割するか、というオプションである。結果として、符号化ツリーとCBの両方が検索段階で選択されることになる。
ビデオ符号化器114は、各CB、例えばCB312に対して、矢印320で示される予測ブロック(PB)を生成する。PB320は、関連するCB312の内容を予測したものである。減算器モジュール322は、PB320とCB312との間の、324として示される差分(又は、差分が空間ドメインにあることを指して「残差」)を生成する。差分324は、PB320とCB312の対応するサンプル間のブロックサイズでの差分である。差分324は、変換され、量子化され、矢印336で示される変換ブロック(TB)として表される。PB320及び関連するTB336は、典型的には、例えば、評価されたコスト又は歪みに基づいて、多数の可能な候補CBの1つから選択される。
候補符号化ブロック(CB)は、関連するPBについての、ビデオ符号化器114が利用可能な予測モードの1つと、その結果得られる残差により得られるCBである。ビデオ復号器114において予測されたPBと組み合わされるときに、TB336は、ビットストリームにおける追加のシグナリングを費用として、復号されたCBとオリジナルのCB312との間の差を低減する。
各候補符号化ブロック(CB)、つまり予測ブロック(PB)と変換ブロック(TB)の組み合わせは、したがって、関連する符号化コスト(又は「レート」)と関連する差分(又は「歪み」)を有している。CBの歪みは、サンプル値の差、例えば、絶対差の和(SAD)や二乗差の和(SSD)として推定される。予測モード387を決定するために、各候補PBから得られる推定が、モードセレクタ386によって差分324を用いて決定されてもよい。予測モード387は、現在のCBに対して、例えばフレーム内予測やフレーム間予測などの特定の予測モードを使用する決定を示す。各候補予測モード及び対応する残差符号化に関連する符号化コストの推定は、残差のエントロピー符号化よりも著しく低いコストで実行することができる。これにより、リアルタイムビデオ符号化器においても、複数の候補モードを評価して、レート-歪みの観点から最適なモードを決定することができる。
レート-歪みの観点からの最適なモードの決定は、典型的には、ラグランジュ最適化のバリエーションを使用して達成される。
ラグランジュ又は同様の最適化処理は、(ブロックパーティショナー310による)CTUのCBへの最適な分割と、複数の可能性からの最良の予測モードの選択との双方に採用することができる。モードセレクタモジュール386における候補モードのラグランジュ最適化プロセスの適用により、最も低コストの測定値を伴うイントラ予測モードが「最良」のモードとして選択される。最も低コストのモードは、選択された二次変換インデックス388であり、これもまたエントロピー符号化器338によってビットストリーム115に符号化される。
ビデオ符号化器114の動作の第2段階(「符号化」段階と呼ばれる)では、各CTUの決定された符号化ツリーに対する繰り返しが、ビデオ符号化器114において行われる。別々のツリーを使用するCTUの場合、CTUの各64×64のルマ領域に対して、まずルマ符号化ツリーが符号化され、続いてクロマ符号化ツリーが符号化される。ルマ符号化ツリー内では、ルマCBのみが符号化され、クロマ符号化ツリー内では、クロマCBのみが符号化される。共有ツリーを用いたCTUでは、共有ツリーの共通ブロック構造に従って、単一のツリーがCU、すなわちルマCB及びクロマCBを記述される。
エントロピー符号化器338は、シンタックス要素の可変長符号化とシンタックス要素の算術符号化の両方をサポートしている。「パラメータセット」のようなビットストリームの部分、例えばシーケンスパラメータセット(SPS)やピクチャパラメータセット(PPS)は、固定長コードワードと可変長コードワードの組み合わせを使用する。スライス(連続部分とも呼ばれる)は、可変長符号化を使用するスライスヘッダと、それに続く算術符号化を使用するスライスデータとを有する。スライスヘッダには、スライスレベルの量子化パラメータオフセットなど、現在のスライスに固有のパラメータが定義されている。スライスデータには、スライス内の各CTUのシンタックス要素が含まれている。可変長符号化と算術符号化を使用するには、ビットストリームの各部分の中で順次解析を行う必要がある。部分はスタートコードで区切られてもよく、「ネットワーク抽象化層ユニット」又は「NALユニット」を形成することができる。算術符号化は、コンテキスト適応型の二値算術符号化プロセスを使用してサポートされる。算術符号化されたシンタックス要素は、1つ又は複数の「ビン」のシーケンスで構成される。ビンは、ビットと同様に、「0」又は「1」の値を持つ。しかし、ビンは、ビットストリーム115において、離散的なビットとして符号化されない。ビンは、関連する予測された(又は「可能性が高い」又は「最もありそうな」)値と、関連する確率とを有し、これは「コンテキスト」として知られている、。符号化される実際のビンが予測値と一致する場合、「優勢シンボル」(MPS)が符号化される。優勢シンボルの符号化は、ビットストリーム115において消費されるビット点で比較的安価であり、1つの離散ビット未満に相当するコストを含む。符号化される実際のビンが、可能性が高い値とミスマッチする場合、「劣勢シンボル」(LPS)が符号化される。劣勢シンボルの符号化は、消費されるビットの観点では比較的高いコストを有する。ビン符号化技術は、「0」と「1」の確率が偏っているビンの効率的な符号化を可能とする。2つの可能な値を持つシンタックス要素(つまり「フラグ」)の場合、1つのビンで十分である。多くの可能な値を持つシンタックス要素については、ビンのシーケンスが必要である。
また、シーケンス内の後のビンの存在は、シーケンス内の先行するビンの値に基づいて決定されてもよい。さらに、各ビンは複数のコンテキストと関連していてもよい。特定のコンテキストの選択は、シンタックス要素の先行するビン、隣接するシンタックス要素(すなわち、隣接するブロックのもの)のビンの値などに依存することができる。コンテキスト符号化されたビンが符号化されるたびに、そのビンに対して選択されたコンテキスト(もしあれば)は、新しいビンの値を反映した方法で更新される。このように、二値算術符号化方式は適応的であると言われている。
また、ビデオ符号化器114がサポートするのは、コンテキストを持たないビン(「バイパスビン」)である。バイパスビンは、「0」と「1」の間の等しい(equiprobable)分布を仮定して符号化される。したがって、各ビンは、ビットストリーム115の1ビット分の符号化コストを有する。コンテキストがないため、メモリを節約し、複雑さを軽減することができる。したがって、バイパスビンは、特定のビンの値の分布が歪んでいない場合に使用される。コンテキストと適応を採用したエントロピー符号化器の一例は、CABAC(Context Adaptive Binary Arithmetic Coder)として当技術分野で知られており、この符号化器の多くの変形がビデオ符号化に採用されている。
エントロピー符号化器338は、コンテキスト符号化されたビンとバイパス符号化されたビンとの組み合わせを用いて、量子化パラメータ392と、現在のCBに使用されている場合には、LFNSTインデックス388とを符号化する。量子化パラメータ392は、「デルタQP」を用いて符号化される。デルタQPは、「量子化グループ」と呼ばれる各エリアで最大1回だけシグナリングされる。量子化パラメータ392は、ルマCBの残差係数に適用される。調整された量子化パラメータは、コロケートされたクロマCBの残差係数に適用される。調整された量子化パラメータは、マッピングテーブルに従ったルマ量子化パラメータ392からのマッピングと、オフセットのリストから選択されたCUレベルのオフセットとを含んでもよい。二次変換インデックス388は、変換ブロックに関連付けられた残差が、二次変換の適用による一次係数への変換の対象となる係数位置においてのみ有意な残差係数を含む場合に、シグナリングされる。
マルチプレクサモジュール384は、各候補CBのテストされた予測モードから選択された、決定された最良のイントラ予測モードに従って、PB320をイントラフレーム予測モジュール364から出力する。候補予測モードは、ビデオ符号化器114がサポートする考えられる全ての予測モードを含む必要はない。イントラ予測は、3つのタイプに分類される。「DCイントラ予測」は、近くの再構成されたサンプルの平均を表す単一の値でPBを埋めることを伴う。「平面イントラ予測」は、平面に応じたサンプルをPBに配置することを伴い、DCオフセットと垂直及び水平勾配は、近くの再構成された隣接サンプルから得られる。近くの再構成されたサンプルは、典型的には、現在のPBの上にあり、PBの右側にある程度伸びている再構成されたサンプルの行と、現在のPBの左にあり、PBを超えて下にある程度延びている再構成されたサンプルの列と、を含む。「角度イントラ予測」は、フィルタリングされ、特定の方向(又は「角度」)にPBを横切って広がる、再構成された隣接サンプルをPBに配置することを伴う。VVCでは、65個の角度がサポートされており、長方形のブロックは、正方形のブロックでは利用できない追加の角度を利用することができ、合計87個の角度を作り出すことができる。4つ目のイントラ予測は、クロマPBで利用可能である。これは、「クロスコンポーネントリニアモデル」(CCLM)モードに従って、コロケートされたルマの再構成されたサンプルからPBを生成するものである。3つの異なるCCLMモードが利用可能であり、それぞれのモードは、隣接するルマとクロマのサンプルから得られる異なるモデルを使用する。得られたモデルは、コロケートされたルマサンプルからクロマPBのサンプルのブロックを生成するために用いられる。
フレームの端など、以前に再構成されたサンプルが利用できない場合は、サンプルの範囲の半分のハーフトーンのデフォルト値が使用される。例えば、10ビットのビデオの場合、512の値が使用される。フレームの左上に位置するCBについては、以前に利用可能なサンプルがないため、角度イントラ予測モード及び平面イントラ予測モードは、DC予測モードと同じ出力、すなわちハーフトーン値を大きさとするサンプルの平坦な平面を生成する。
フレーム間予測のためには、動き補償モジュール380によって、ビットストリーム内の符号化順序フレームにおいて現在のフレームに先行する1つ又は2つのフレームからのサンプルを用いて予測ブロック382が生成され、マルチプレクサモジュール384によってPB320として出力される。さらに、フレーム間予測のためには、典型的には、単一の符号化ツリーが、ルマチャネルとクロマチャネルの両方に使用される。ビットストリーム内の符号化フレームの順序は、キャプチャ又は表示時のフレームの順序とは異なる場合がある。予測に1つのフレームが使用される場合、そのブロックは「片方向予測される」と呼ばれ、関連する1つの動きベクトルを有する。予測に2つのフレームが使用される場合、そのブロックは「双方向予測される」と呼ばれ、関連する2つの動きベクトルを有する。Pスライスの場合、各CUは、イントラ予測又は片方向予測されるだろう。Bスライスの場合、各CUは、イントラ予測、片方向予測、又は双方向予測されるだろう。フレームは、典型的には、「ピクチャのグループ」構造を用いて符号化され、フレームの時間的な階層化を可能にする。フレームは複数のスライスに分割されてもよく、各スライスはフレームの一部を符号化する。フレームの時間的な階層化により、フレームを表示する順番に、先行する画像と後続する画像を参照することができる。画像は、各フレームを復号するための依存関係が満たされることを保証するために必要な順序で符号化される。
サンプルは、動きベクトル378及び参照ピクチャインデックスに従って選択される。動きベクトル378及び参照ピクチャインデックスは、全てのカラーチャネルに適用され、したがって、インター予測は、PBではなくPUに対する操作の観点から主に記述され、すなわち、各CTUの1つ又は複数のインター予測されたブロックへの分解は、単一の符号化ツリーで記述される。インター予測方式は、動きパラメータの数及びその精度において異なる場合がある。動きパラメータは、通常、参照フレームのリストのうちの参照フレームを使用するかを示す参照フレームインデックスと、各参照フレームの空間変換とを含むが、より多くのフレーム、特別フレーム、又はスケーリング及びローテーションなどの複雑なアフィンパラメータを含んでいてもよい。さらに、参照サンプルブロックに基づいて緻密な動きの推定値を生成するために、事前に決定された動きの精緻化プロセスが適用されてもよい。
PB320を決定及び選択し、減算器322でオリジナルのサンプルブロックからPB320を減算した結果、324で表される符号化コストが最も低い残差が得られ、非可逆圧縮にかけられる。非可逆圧縮処理は、変換、量子化、エントロピー符号化の各ステップからなる。順方向一次変換モジュール326は、差分324に順方向変換を適用して、差分324を空間ドメインから周波数ドメインに変換し、矢印328で表される一次変換係数を生成する。一次元における最大の一次変換サイズは、32ポイントのDCT-2又は64ポイントのDCT-2変換のいずれかである。符号化されるCBが、ブロックサイズとして表されるサポートされる最大の一次変換サイズ、すなわち64×64又は32×32よりも大きい場合、一次変換326は、差分324の全てのサンプルを変換するために、タイル状に適用される。変換326の適用は、CBに対する複数のTBをもたらす。変換の各適用が、32×32よりも大きい、例えば64×64の、差分324のTBに対して行われる場合、結果として生じる、TBの左上32×32のエリアの外側にある全ての一次変換係数328は、ゼロに設定され、すなわち廃棄される。残りの一次変換係数328は、量子化モジュール334に渡される。一次変換係328数は、CBに関連付けられた量子化パラメータ392に従って量子化され、一次変換係数332を生成する。量子化パラメータ392は、ルマCBと各クロマCBとで異なる場合がある。一次変換係数332は、順方向二次変換モジュール330に渡され、非分離二次変換(NSST)演算又は二次変換のバイパスのいずれかを実行することにより、矢印336で表される変換係数を生成する。順方向一次変換は、典型的には分離可能であり、各TBの行のセットを変換し、次に列のセットを変換する。順方向一次変換モジュール326は、幅及び高さが16サンプルを超えないルマTBに対して、水平及び垂直方向にII型離散コサイン変換(DCT-2)を使用するか、水平及び垂直方向に変換をバイパスするか、又は、水平又は垂直方向にVII型離散サイン変換(DST-7)とVIII型離散コサイン変換(DCT-8)の組み合わせを使用する。VVC規格では、DST-7とDCT-8の組み合わせを「マルチトランスフォームセレクションセット」(MTS)と呼んでいる。
モジュール330の順方向二次変換は、一般に非分離変換であり、イントラ予測されたCUの残差に対してのみ適用され、それにもかかわらず、バイパスされることもある。フォワード二次変換は、16サンプル(一次変換係数328の左上の4×4サブブロックとして配置されている)又は48サンプル(一次変換係数328の8×8係数左上における3つの4×4サブブロックとして配置されている)のいずれかに対して行われ、二次変換係数のセットを生成する。二次変換係数のセットは、それらが導出される一次変換係数のセットよりも数が少なくてもよい。互いに隣接し、DC係数を含む係数のセットのみに二次変換を適用するために、二次変換は「低周波数非分離二次変換」(LFNST)と呼ばれる。さらに、LFNSTが適用されると、一次変換ドメインと二次変換ドメインの両方で、TBの残りの全ての係数はゼロでなければならない。
量子化パラメータ392は、所与のTBに対して一定であり、したがって、TBの一次変換ドメインにおける残差係数の生成に対して一様なスケーリングをもたらす。量子化パラメータ392は、シグナリングされた「デルタ量子化パラメータ」で周期的に変化してもよい。デルタ量子化パラメータ(delta QP)は、「量子化グループ」と称される所与のエリア内に含まれるCUに対して一度だけシグナリングされる。1つのCUが量子化グループのサイズよりも大きい場合、デルタQPはCUのTBの1つについて1回シグナリングされる。つまり、デルタQPは、エントロピー符号化器338によって、CUの最初の量子化グループに対して1回だけシグナリングされ、それ以降のCUの量子化グループに対してはシグナリングされない。不均一なスケーリングは、「量子化マトリックス」の適用によっても可能であり、これにより、各残差係数に適用されるスケーリング係数は、量子化パラメータ392とスケーリングマトリックスの対応するエントリとの組み合わせから得られる。スケーリングマトリックスは、TBのサイズよりも小さいサイズを有することができ、TBに適用されるときには、TBのサイズよりも小さいサイズのスケーリングマトリックスから各残差係数のスケーリング値を提供するために、最近傍アプローチが使用される。残差係数336は、ビットストリーム115内で符号化するために、エントロピー符号化器338に供給される。典型的には、TUの少なくとも1つの有意な残差係数を有する各TBの残差係数は、スキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。スキャンパターンは、一般に、4×4の「サブブロック」のシーケンスとしてTBをスキャンし、残差係数の4×4セットの粒度で規則的なスキャン動作を提供し、サブブロックの構成はTBのサイズに依存する。各サブブロック内のスキャンと、あるサブブロックから次のサブブロックへの進行は、典型的には、後方対角線スキャン(backward diagonal scan)パターンに従う。さらに、量子化パラメータ392は、デルタQPシンタックス要素を用いてビットストリーム115に符号化され、二次変換インデックス388は、図13~15を参照して説明する条件でビットストリーム115に符号化される。
上述したように、ビデオ符号化器114は、ビデオ復号器134で見られる復号されたフレーム表現に対応するフレーム表現にアクセスする必要がある。したがって、残差係数336は、二次変換インデックス388に従って動作する逆二次変換モジュール344に渡され、矢印342で表される中間逆変換係数が生成される。中間逆変換係数は、量子化パラメータ392に従って逆量子化モジュール340によって逆量子化され、矢印346で表される逆変換係数を生成する。中間逆変換係数346は、逆一次変換モジュール348に渡され、矢印350で表されるTUの残差サンプルを生成する。逆二次変換モジュール344によって実行される逆変換のタイプは、順二次変換モジュール330によって実行される順変換のタイプに対応する。逆一次変換モジュール348によって実行される逆変換のタイプは、一次変換モジュール326によって実行される一次変換のタイプに対応する。積算モジュール352は、残差サンプル350とPU320とを加算して、CUの再構成されたサンプル(矢印354で示す)を生成する。
再構成されたサンプル354は、参照サンプルキャッシュ356及びインループフィルタモジュール368に渡される。参照サンプルキャッシュ356は、典型的にはASIC上のスタティックRAMを使用して実装され(したがって、コストのかかるオフチップメモリアクセスを回避する)、フレーム内の後続のCUについてのイントラフレームPBを生成するための依存関係を満たすために必要な最小限のサンプルストレージを提供する。最小限の依存性は、典型的には、次の行のCTUで使用するための、CTUの行の下端に沿ったサンプルの「ラインバッファ」、及びCTUの高さによって設定される程度の列バッファを含む。参照サンプルキャッシュ356は、参照サンプル(矢印358で表される)を参照サンプルフィルタ360に供給する。サンプルフィルタは、平滑化操作を適用360して、フィルタリングされた参照サンプル(矢印362で示す)を生成する。フィルタリングされた参照サンプル362は、イントラフレーム予測モジュール364によって使用され、矢印366で表されるイントラ予測されたサンプルのブロックを生成する。各候補イントラ予測モードについて、イントラフレーム予測モジュール364は、サンプルのブロック、つまり366を生成する。サンプルのブロック366は、DCイントラ予測、平面イントラ予測、角度イントラ予測などの技術を用いて、モジュール364によって生成される。
インループフィルタモジュール368は、再構成されたサンプル354にいくつかのフィルタリング段階を適用する。フィルタリング段階は、「デブロッキングフィルタ」(DBF)を含み、これは、不連続性から生じるアーティファクトを低減するために、CU境界に整列した平滑化を適用する。インループフィルタモジュール368に存在する別のフィルタリング段階は、「適応ループフィルタ」(ALF)であり、これは、ウィーナーベースの適応フィルタを適用して歪みをさらに低減する。インループフィルタモジュール368に存在する別のフィルタリング段階は、「サンプル適応オフセット」(SAO)フィルタである。SAOフィルタは、まず、再構成されたサンプルを1つ又は複数のカテゴリに分類し、割り当てられたカテゴリに応じて、サンプルレベルでオフセットを適用することにより動作する。
矢印370で表されるフィルタリングされたサンプルは、インループフィルタモジュール368から出力される。フィルタリングされたサンプル370は、フレームバッファ372に格納される。フレームバッファ372は、典型的には、複数(例えば最大16枚)のピクチャを格納する容量を有しており、そして、メモリ206に格納される。フレームバッファ372は、必要なメモリ消費が大きいため、典型的にはオンチップメモリを使用して格納されない。そのため、フレームバッファ372へのアクセスは、メモリの帯域幅の点でコストがかかる。フレームバッファ372は、動き推定モジュール376及び動き補償モジュール380に参照フレーム(矢印374で表される)を提供する。
動き推定モジュール376は、フレームバッファ372内の参照フレームの1つのブロックを参照して、それぞれが現在のCBの位置からのデカルト空間オフセットである複数の「動きベクトル」(378として示される)を推定する。参照サンプルのフィルタリングされたブロック(382として示される)は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル382は、モードセレクタ386による潜在的な選択のために利用可能な更なる候補モードを形成する。さらに、所与のCUについて、PU320は、1つの参照ブロックを用いて形成されてもよいし(「片方向予測」)、2つの参照ブロックを用いて形成されてもよい(「双方向予測」)。選択された動きベクトルに対して、動き補償モジュール380は、動きベクトルのサブピクセル精度を支えるフィルタリング処理に従って、PB320を生成する。このように、動き推定モジュール376(多くの候補の動きベクトルに対して動作する)は、動き補償モジュール380(選択された候補のみに対して動作する)のフィルタリング処理と比較して簡略化されたフィルタリング処理を実行して、計算複雑性の低減を実現してもよい。ビデオ符号化器114がCUに対してインター予測を選択すると、動きベクトル378がビットストリーム115に符号化される。
図のビデオ符号化器114は、多用途ビデオ符号化(VVC)に関して説明されている3が、他のビデオ符号化規格又は実装も、モジュール310~390の処理段階を採用することができる。また、フレームデータ113(ビットストリーム115)は、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク(登録商標)、又はその他のコンピュータ読み取り可能記憶媒体から読み出されて(又は書き込まれて)もよい。さらに、フレームデータ(113及びビットストリーム115)は、通信ネットワーク220に接続されたサーバ又は無線周波数受信器などの外部ソースから受信されてもよい(又は、外部ソースに送信されてもよい)。通信ネットワーク220は、限られた帯域幅を提供してもよく、フレームデータ113の圧縮が困難な時にネットワークが飽和しないように、ビデオ符号化器114でレート制御を使用する必要が生じる。さらに、ビットストリーム115は、プロセッサ205の制御下で協調的に動作するビデオ符号化器114の1つ又は複数のインスタンスによって生成された、フレームデータ113の空間セクション(CTUの集合)を表す1つ又は複数のスライスから構成されてもよい。本開示のコンテキストでは、スライスは、ビットストリームの「連続部分」とも呼ばれる。スライスは、ビットストリーム内で連続しており、例えば、並列処理が使用されている場合には、別々の部分として符号化又は復号することができる。
ビデオ復号器134は、図4に示されている。図4のビデオ復号器134は、VVC(Various Video Coding)ビデオ復号パイプラインの一例であるが、他のビデオコーデックを使用して、本明細書で説明する処理段階を実行することもできる。図4に示すように、ビデオ復号器134には、ビットストリーム133が入力される。ビットストリーム13は、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク(登録商標)又はその他の非一時的コンピュータ読み取り可能記憶媒体から読み取られて3もよい。あるいは、ビットストリーム133は、通信ネットワーク220に接続されたサーバ又は無線周波数受信器などの外部ソースから受信されてもよい。ビットストリーム133は、復号されるキャプチャされたフレームデータを表す符号化されたシンタックス要素を含んでいる。
このビットストリームは、エントロピー復号器モジュール420に133入力される。エントロピー復号器モジュール420は、「ビン」のシーケンスを復号することにより、ビットストリーム133からシンタックス要素を抽出し、シンタックス要素の値をビデオ復号器134の他のモジュールに渡す。エントロピー復号器モジュール420は、可変長及び固定長復号を使用して、SPS、PPS又はスライスヘッダを復号し、算術復号エンジンを使用して、スライスデータのシンタックス要素を1つ又は複数のビンのシーケンスとして復号する。各ビンは、1つ以上の「コンテキスト」を使用することができ、コンテキストには、そのビンの「1」と「0」の値を符号化するために使用される確率レベルが記述されている。あるビンに対して複数のコンテキストが利用可能な場合、「コンテキストモデリング」又は「コンテキスト選択」ステップが実行され、ビンを復号するために利用可能なコンテキストの1つが選択される。ビンを復号するプロセスは、逐次的なフィードバックループを形成し、したがって、各スライスは、所与のエントロピー復号器420のインスタンスによって全体が復号され得る。単一の(又は少数の)高性能のエントロピー復号器420のインスタンスが、ビットストリーム115からのフレームについての全てのスライスを復号してもよいし、複数の低性能のエントロピー復号器420のインスタンスが、ビットストリーム133からのフレームについてのスライスを同時に復号してもよい。
エントロピー復号器モジュール420は、例えば「CABAC(Context Adaptive Binary Arithmetic Coding)」などの算術符号化アルゴリズムを適用して、ビットストリーム133からシンタックス要素を復号する。復号されたシンタックス要素は、ビデオ復号器134内のパラメータを再構築するために使用される。パラメータには、残差係数(矢印420で表す)、量子化パラメータ474、二次変換インデックス470、及びイントラ予測モードなどのモード選択情報(矢印458で表す)が含まれる。また、モード選択情報には、動きベクトル、及び各CTUを1つ以上のCBにパーティションするような情報も含まれる。パラメータは、典型的には、以前に復号されたCBからのサンプルデータと組み合わせて、PBを生成するために使用される。
残差係数424は、逆二次変換モジュール436に渡され、ここでは、図16~18を参照して説明する方法に従って、二次変換が適用されるか、又は処理が実行されない(バイパス)。逆二次変換モジュール436は、二次変換ドメイン係数から、再構成された変換係数432、すなわち一次変換ドメイン係数を生成する。再構成された変換係数432は、逆量子化モジュール428に入力される。逆量子化モジュール428は、残差係数432に対して、つまり一次変換係数ドメインにおいて、逆量子化(又は「スケーリング」)を行い、量子化パラメータ474に従って、矢印440で表される再構成された中間変換係数を生成する。不均一な逆量子化マトリックスの使用がビットストリーム133に示される場合、ビデオ復号器134は、スケーリング係数のシーケンスとしてビットストリーム133から量子化マトリックスを読み取り、スケーリング係数をマトリックスに構成する。逆スケーリングでは、量子化マトリックスを量子化パラメータと組み合わせて使用し、再構成された中間変換係数440を作成する。
再構成された変換係数440は、逆一次変換モジュール444に渡される。モジュール444は、係数440を周波数ドメインから空間ドメインに戻すように変換する。モジュール444の動作の結果は、矢印448で表される残差サンプルのブロックである。残差サンプルのブロック448は、対応するCBと等しいサイズである。残差サンプル448は、積算モジュール450に供給される。積算モジュール450では、残差サンプル448が復号されたPB(452で表される)に追加されて、矢印456で表される再構成されたサンプルのブロックが生成される。再構成されたサンプル456は、再構成サンプルキャッシュ460及びインループフィルタリングモジュール488に供給される。インループフィルタリングモジュール488は、矢印492で表される、フレームサンプルの再構成されたブロックを生成する。フレームサンプル492は、フレームバッファ496に書き込まれる。
再構成サンプルキャッシュ460は、ビデオ符号化器114の再構成されたサンプルキャッシュ356と同様に動作する。再構成サンプルキャッシュ460は、メモリ206を使用せずに(例えば、典型的なオンチップメモリであるデータ232を代わりに使用することにより)、後続のCBをイントラ予測するために必要な再構成されたサンプルのストレージを提供する。矢印464で表される参照サンプルは、再構成サンプルキャッシュ460から得られ、参照サンプルフィルタ468に供給されて、矢印472で示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル472は、イントラフレーム予測モジュール476に供給される。このモジュール476は、ビットストリーム133にシグナリングされ、エントロピー復号器420によって復号されたイントラ予測モードパラメータに従って、矢印480で示されるイントラ予測されたサンプルのブロックを生成する。サンプルのブロック480は、DCイントラ予測、平面イントラ予測、又は角度イントラ予測などのモードを用いて生成される。
CBの予測モードがビットストリーム133内のイントラ予測を使用するように指示された場合、イントラ予測されたサンプル480は、マルチプレクサモジュール484を介して復号されたPB452を形成する。イントラ予測は、サンプルの予測ブロック(PB)、すなわち、同じ色成分の「隣接サンプル」を用いて導出された1つの色成分のブロックを生成する。隣接サンプルとは、現在のブロックに隣接するサンプルであり、ブロックの復号順序において先行していることから、既に再構成されている。ルマブロックとクロマブロックがコロケートされている場合、ルマブロックとクロマブロックは異なるイントラ予測モードを使用することができる。しかし、2つのクロマCBは同じイントラ予測モードを共有している。
CBの予測モードがビットストリーム133においてインター予測であることが示されている場合、動き補償モジュール434は、フレームバッファ496からのサンプルのブロック498を選択してフィルタリングするために(エントロピー復号器420によってビットストリーム133から復号された)動きベクトルと参照フレームインデックスとを用いて、438として表されるインター予測されたサンプルのブロックを生成する。サンプルのブロック498は、フレームバッファ496に格納された以前に復号されたフレームから得られる。双方向予測のために、サンプルの2つのブロックが生成され、復号されたPB452についてのサンプルを生成するためにブレンドされる。フレームバッファ496には、インループフィルタリングモジュール488からのフィルタリングされたブロックデータ492が配置される。ビデオ符号化器114のインループフィルタリングモジュール368と同様に、インループフィルタリングモジュール488は、DBF、ALF及びSAOフィルタリング演算のいずれかを適用する。ルマチャネル及びクロマチャネルにおけるサブサンプル補間のためのフィルタリング処理は異なるが、一般に、動きベクトルはルマチャネルとクロマチャネルの両方に適用される。
図5は、多用途ビデオ符号化のツリー構造において、1つの領域を1つ以上のサブ領域に分割する利用可能な分割又は分割の集合500を示す概略ブロック図である。集合500に示された分割は、図3を参照して説明したように、ラグランジュ最適化によって決定されたように、符号化ツリーに従って各CTUを1つ以上のCU又はCBに分割するために、符号化器114のブロックパーティショナー310が利用可能である。
集合500は、正方形の領域のみが他の、ことによると非正方形のサブ領域に分割されることを示しているが、集合500は、符号化ツリーの親ノードから符号化ツリーの子ノードへのありうる分割を示しており、親ノードが正方形の領域に対応することを要求していないことを理解すべきである。包含する領域が非正方形である場合、分割の結果得られるブロックの寸法は、含むブロックのアスペクト比に応じてスケーリングされる。ある領域がさらに分割されないとき、つまり符号化ツリーのリーフノードでは、CUがその領域を占有することになる。
領域をサブ領域に細分化(subdivide)するプロセスは、結果として生じるサブ領域が最小のCUサイズ(一般には4×4ルマサンプル)に達したときに終了しなければならない。所定の最小サイズ(例えば16サンプル)よりも小さいブロックエリアを禁止するようにCUを制約することに加えて、CUは幅又は高さの最小値が4であるように制約されている。幅と高さの両方、又は幅若しくは高さについて、他の最小値も可能である。細分化のプロセスは、最も深い分解レベルの前に終了してもよく、その結果、最小のCUサイズよりも大きいCUができる。分割が行われず、1つのCUがCTUの全体を占めることも可能である。CTUの全体を占める単一のCUは、利用可能な最大の符号化ユニットサイズとなる。4:2:0などのサブサンプルされたクロマフォーマットの使用により、ビデオ符号化器114及びビデオ復号器134の構成は、ルマ及びクロマチャネルのブロック構造を定義する共有符号化ツリーの場合を含めて、クロマチャネルにおける領域の分割をルマチャネルよりも早く終了させることができる。ルマ及びクロマに別々の符号化ツリーが使用される場合、利用可能な分割操作に対する制約は、CBがより大きなルマエリア、例えば64のルマサンプルとコロケートされていても、16サンプルの最小のクロマCBエリアを保証する。
符号化ツリーのリーフノードには、それ以上細分化されていないCUが存在する。例えば、リーフノード510は、1つのCUを含む。符号化ツリーの非リーフノードには、2つ以上のさらなるノードへの分割が存在し、その各々は、1つのCUを形成するリーフノード、又は、より小さな領域へのさらなる分割を含む非リーフノードでありうる。符号化ツリーの各リーフノードには、カラーチャネルごとに1つの符号化ブロックが存在する。ルマとクロマの双方で分割が同じ深度で終了することにより、3つのコロケートされたCBが得られる。ルマについてクロマよりも深い深度で分割が終了することにより、複数のルマCBがクロマチャネルのCBとコロケートされることになる。
四分ツリー分割512は、図に示すように、包含する領域を4つの同じサイズの領域に分割する。HEVCと比較して、多用途ビデオ符号化(VVC)は、水平二分割514及び垂直二分割516を含む追加の分割により、さらなる柔軟性を達成する。分割514と516のそれぞれは、包含する領域を2つの等しいサイズの領域に分割する。分割は、含むブロック内の水平境界(514)又は垂直境界(516)に沿って行われる。
多用途ビデオ符号化では、三分割の水平分割518と三分割の垂直分割520を追加することで、さらなる柔軟性が得られる。三分割518及び520は、ブロックを3つの領域に分割し、これらは、包含する領域の幅又は高さの1/4及び3/4に沿って、水平方向(518)又は垂直方向(520)に区切られる。四分ツリー、二分ツリー、及び三分ツリーの組み合わせは、「QTBTTT」と呼ばれる。ツリーのルートには、ゼロ又はそれ以上の四分ツリー分割(ツリーの「QT」セクション)が含まれる。QTセクションが終了すると、ゼロ又はそれ以上の二分割又は三分割が生じてもよく(ツリーの「マルチツリー」又は「MT」セクション)、最終的にツリーのリーフノードにおけるCB又はCUで終了する。ツリーが全てのカラーチャネルを記述している場合、ツリーのリーフノードはCUとなる。ツリーがルマチャネル又はクロマチャネルを記述している場合、ツリーのリーフノードはCBである。
QTBTTTは、四分ツリーしかサポートしておらず、正方形のブロックしかサポートしていないHEVCと比較して、特に二分ツリー及び/又は三分ツリー分割を再帰的に適用する可能性を考慮すると、より大きいCUサイズの可能性につながる。四分ツリー分割のみが利用可能である場合、符号化ツリーの深度が増すことは、CUサイズが親領域の1/4に削減されることに相当する。VVCにおいて、二分割及び三分割が利用可能であることは、符号化ツリーの深度がもはやCUエリアと直接一致しなくなることを意味する。ブロックの幅又は高さが4サンプル未満又は4サンプルの倍数にならない分割を排除するように分割オプションを制限することで、通常とは異なる(正方形ではない)ブロックサイズになる可能性を減らすことができる。一般的に、この制約はルマサンプルを考慮して適用されるだろう。しかし、ここで説明する構成では、クロマチャネルについてのブロックに個別に制約を適用することができる。例えば、フレームデータが4:2:0クロマフォーマット又は4:2:2クロマフォーマットである場合、クロマチャネルの分割オプションに制約を適用すると、ルマとクロマの最小ブロックサイズが異なることになる。各分割により、包含する領域に対して横方向の寸法が変わらないか、半分になるか、4分の1になるか、であるサブ領域が生成される。そして、CTUのサイズは2の累乗であるため、全てのCTUの辺の寸法も2の累乗となる。
図6は、多用途ビデオ符号化で使用されるQTBTTT(又は「符号化ツリー」)構造のデータフロー600を示す概略フロー図である。QTBTTT構造は、CTUの1つ以上のCUへの分割を定義するために各CTUに使用される。各CTUのQTBTTT構造は、ビデオ符号化器114内のブロックパーティショナー310によって決定され、ビデオ復号器134内のエントロピー復号器420によって、ビットストリーム115に符号化されるか、又はビットストリーム133から復号される。データフロー600はさらに、図5に示す分割に従って、CTUを1つ又は複数のCUに分割するためにブロックパーティショナー310が利用できる許容可能な組み合わせを特徴づける。
階層のトップレベルから開始して、すなわちCTUにおいて、ゼロ又はより多い四分ツリー分割がまず行われる。具体的には、ブロックパーティショナー310によって、四分ツリー(QT)分割の判断610が行われる。「1」のシンボルを返す610におけるこの判断は、四分ツリー分割512に従って現在のノードを4つのサブノードに分割する判断を示す。その結果、620におけるように、4つの新しいノードが生成され、それぞれの新しいノードについて、QT分割の判断610に再帰的に戻ることになる。各新しいノードは、ラスタ(又はZ-scan)順に検討される。あるいは、QT分割判断610が、さらなる分割を行わないことを示す(「0」シンボルを返す)場合、四分ツリー分割は中止され、続いてマルチツリー(MT)分割が検討される。
まず、ブロックパーティショナー310によって、MT分割の判断612が行われる。612で、MT分割を行う判断が示される。判断612で「0」記号を返すことは、ノードのサブノードへのさらなる分割を実行しないことを示す。ノードのさらなる分割を行わない場合、そのノードは符号化ツリーのリーフノードであり、CUに対応する。リーフノードは622で出力される。あるいは、MT分割612がMT分割を実行する判断を示す(「1」シンボルを返す)場合、ブロックパーティショナー310は、方向判断614に進む。
方向判断614は、MT分割の方向を、水平(「H」又は「0」)又は垂直(「V」又は「1」)のいずれかとして示す。ブロックパーティショナー310は、判断614が水平方向を示す「0」を返した場合、判断616に進む。ブロックパーティショナー310は、判断614が垂直方向を示す「1」を返した場合、判断618に進む。
判断616、618のそれぞれにおいて、MT分割の分割数は、BT/TT分割において、2つ(二分割又は「BT」ノード)又は3つ(三分割又は「TT」)のいずれかとして示される。すなわち、614からの指示された方向が水平の場合には、ブロックパーティショナー310によってBT/TT分割の判断616がなされ、614からの指示された方向が垂直の場合には、ブロックパーティショナー310によってBT/TT分割の判断618がなされる。
BT/TT分割判定616は、水平方向の分割が二分割514であるか(これは「0」を返すことで示される)、三分割518であるか(これは「1」を返すことで示される)、を示す。BT/TT分割判定616が二分割を示す場合、HBT CTUノード生成ステップ625において、水平二分割514に応じて、ブロックパーティショナー310によって2つのノードが生成される。BT/TT分割616が三分割を示すとき、HTT CTUノード生成ステップ626において、水平三分割518に従って、ブロックパーティショナー310によって3つのノードが生成される。
BT/TT分割判定618は、垂直分割が二分割516であるか(これは「0」を返すことで示される)、三分割520であるか(これは「1」を返すことで示される)、を示す。BT/TT分割618が二分割を示すとき、VBT CTUノード生成ステップ627において、垂直二分割516に従って、ブロックパーティショナー310によって2つのノードが生成される。BT/TT分割618が三分割を示す場合、VTT CTUノード生成ステップ628において、垂直三分割520に従って、ブロックパーティショナー310によって3つのノードが生成される。ステップ625~628から得られる各ノードに対して、方向614に応じて、左から右又は上から下の順序で、データフロー600がMT分割決定612に戻って再帰的に適用される。結果として、二分ツリー及び三分ツリー分割は、様々なサイズを有するCUを生成するために適用され得る。
図7A及び図7Bは、CTU710を複数のCU又はCBに分割する例示的な分割700を与える。例示的なCU712が、図7Aに示されている。図7Aは、CTU710におけるCUの空間的構成を示す。例示的な分割700は、図7Bに符号化ツリー720としても示されている。
図7AのCTU710の各非リーフノード、例えばノード714、716、718では、含まれるノード(さらに分割されていてもよいし、CUであってもよい)が「Z順」にスキャン又はトラバースされて、符号化ツリー720の列として表されるノードのリストが作成される。四分ツリー分割の場合、Z順のスキャンは、左上から右、左下から右の順に行われる。水平及び垂直分割では、Z順のスキャン(トラバーサル)は、それぞれ上から下へのスキャン及び左から右へのスキャンに簡略化される。図7Bの符号化ツリー720は、適用されたスキャン順序に従って、全てのノード及びCUをリストする。各分割は、リーフノード(CU)に到達するまで、ツリーの次のレベにおいて2つ、3つ、又は4つの新しいノードのリストを生成する。
図3を参照して説明したように、画像をCTUに分解し、ブロックパーティショナー310によってさらにCUに分解し、CUを使用して各残差ブロック(324)を生成した後、残差ブロックはビデオ符号化器114による順方向変換及び量子化にかけられる。結果として得られたTB336は、エントロピー符号化モジュール338の動作の一部として、残差係数のシーケンシャルリストを形成するためにスキャンされる。同等のプロセスが、ビットストリーム133からTBを得るためにビデオ復号器134で実行される。
図8A、8B、及び8Cは、符号化ツリーの分割に起因する細分化レベル、及び符号化ツリーユニットの量子化グループへの分割に対する対応する効果を示す。デルタQP(392)は、量子化グループごとに最大1回、TBの残差とともにシグナリングされる。HEVCでは、量子化グループの定義は、定義が固定サイズのエリアにつながるため、符号化ツリーの深度に対応する。VVCにおいては、追加の分割は、符号化ツリーの深度がCTUエリアの適切な代用とはもはやならないことを意味する。VVCでは、「細分化レベル」が定義され、それぞれの増分は含まれるエリアを半減することに相当する。
図8Aは、符号化ツリーの分割の集合800と、それに対応する細分化レベルを示している。符号化ツリーのルートノードでは、細分化レベルはゼロに初期化される。符号化ツリーに四分ツリー分割が含まれている場合(例えば810)、その中に含まれる全てのCUについて、細分化レベルが2つ増加する。符号化ツリーに二分割が含まれる場合(812)、その中に含まれる全てのCUについて、細分化レベルが1つ増加する。符号化ツリーが三分割を含む場合(例えば814)、細分化レベルは、外側の2つのCUについては2つ、三分割により生じる内側のCUについては1つ増加する。各CTUの符号化ツリーがトラバースされると、図6を参照して説明したように、結果として生じる各CUの細分化レベルが集合800に従って決定される。
図8Bは、CUノードの例示的なセット840を示し、分割の効果を説明している。細分化レベルがゼロのセット840の例示的な親ノード820は、図8Bの例では、サイズ64×64のCTUに対応する。親ノード820は、それぞれ16×64、32×64、16×64のサイズを有する3つの子ノード821、822、及び823を生成するように三分割される。子ノード821、822、及び823は、それぞれ2、1、及び2の細分化レベルを有する。
図8Bの例では、量子化グループの閾値が1に設定されており、これは64×64エリアの半分、すなわち2048サンプルのエリアに相当する。フラグは、新しいQGの開始を追跡する。新しいQGを追跡するフラグは、細分化レベルが量子化グループ閾値以下のノードに対してリセットされる。フラグは、ゼロの細分化レベルを有する親ノード820をトラバースするときに設定される。サイズ32×64のセンターCU822は、2048サンプルのエリアを有するが、2つの兄弟CU821及び823は、2の細分化レベル、すなわち1024のエリアを有するため、センターCUをトラバースする際にフラグはリセットされず、量子化グループはセンターCUにおいて開始しない。代わりに、フラグは、最初のフラグリセットと同様に、親ノードにおいて、824で示されるように開始する。事実上、QPは、量子化グループエリアの倍数と整列している境界上でのみ変更される可能性がある。デルタQPは、CBに関連付けられたTBの残差とともにシグナリングされる。有意な係数が存在しない場合は、デルタQPを符号化する機会はない。
図8Cは、細分化レベル、QG、及びデルタQPのシグナリングの関係を説明するための、CTU862の複数のCU及びQGへの分割の例860を示す。垂直二分割により、CTU862は2つに分割され、左半分870は1つのCU CU0を含み、右半分872はいくつかのCU(CU1~CU4)を含む。図8Cの例では、量子化グループの閾値は2に設定されており、その結果、量子化グループは通常、CTUのエリアの1/4に等しいエリアを有する。親ノード、すなわち符号化ツリーのルートノードは、細分化レベルがゼロであるため、QGフラグはリセットされ、新しいQGが、次の符号化されたCU、すなわち矢印868のCUで開始するだろう。CU0(870)は符号化された係数を有するので、CU0の残差とともにデルタQP864が符号化される。右半分872には水平二分割が行われ、右半分872の上部及び下部セクションには更なる分割が行われ、CU1~CU4となる。右半分872の上部(CU1とCU2を含む877)及び下部(CU3とCU4を含む878)セクションに対応する符号化ツリーノードは、細分化レベルが2である。細分化レベルの2は、量子化グループの閾値である2と等しいため、各セクションで新しいQGが開始し、それぞれ874と876と記されている。CU1には符号化された係数を有さず(残差なし)、CU2は「スキップされた」CUであってこれも符号化された係数を有さない。そのため、上部セクションについてはデルタQPが符号化されない。CU3はスキップされたCUであり、CU4は符号化された残差を有するので、CU3とCU4を含むQGについて、CU4の残差とともにデルタQP866が符号化される。
図9A及び図9Bは、4×4変換ブロックのスキャンパターン及び関連する一次及び二次変換係数を示す。一次残差係数に対する二次変換モジュール330の動作を、ビデオ符号化器114について説明する。4×4TB900は、後方対角線スキャンパターン910に従ってスキャンされる。スキャンパターン910は、「最終有意係数(last significant coefficient)」位置からDC(左上)の係数位置に向かって戻るように進む。スキャンされない全ての係数位置、例えば、順方向のスキャンを考慮した場合、最終有意係数位置の後に位置する残差係数は、暗黙的に非有意である。二次変換が使用される場合、全ての残る係数は有意ではない。すなわち、二次変換の対象となっていない全ての二次ドメイン残差係数は有意ではなく、二次変換の適用によって配置されない全ての一次ドメイン残差係数は有意ではないことが要求される。さらに、モジュール330による順方向二次変換の適用後に、二次変換モジュール330によって処理された一次変換された係数の数よりも、少ない数の二次変換された係数が存在してもよい。例えば、図9Bは、ブロックのセット920を示している。図9Bでは、16個の一次係数が1つの4×4サブブロックとして構成されており、これは4×4TB920のうちの924である。一次残差係数は、図9Bの例では、二次変換されたブロック926を生成するために、二次変換を受けてもよい。二次変換されたブロック926は、8つの二次変換された係数928を含む。8つの二次変換された係数928は、スキャンパターン910に従って、DCの係数位置から順に詰めてTBに格納される。エリア930として示される4×4サブブロックの残りの係数位置は、一次変換からの量子化された残差係数を含み、二次変換が適用されるためには、全てが有意ではないことが要求される。したがって、TB920の最初の8つのスキャン位置の1つである係数を指定する4×4TBの最終有意係数位置は、(i)二次変換の適用、又は(ii)量子化後の一次変換の出力がTB920の8番目のスキャン位置を超えて有意な係数を持たないことのいずれかを示す。
TBに対して二次変換を行うことが可能な場合、ありうる二次変換の適用を示すために、二次変換インデックス、すなわち388が符号化される。また、二次変換インデックスは、複数の変換カーネルが利用可能な場合、どのカーネルがモジュール330で二次変換として適用されるかを示すことができる。これに対応して、ビデオ復号器134は、最終有意係数位置が、二次変換された係数を保持するために予約されたスキャン位置のいずれか1つ、例えば928に位置するときに、二次変換インデックス470を復号する。
16個の一次係数を8個の二次係数にマッピングする二次変換カーネルが説明されたが、異なる数の二次変換係数にマッピングするカーネルを含め、異なるカーネルが可能である。二次変換係数の数は、一次変換係数の数と同じであってもよく、例えば16である。幅が4、高さが4より大きいTBの場合、4×4TBのケースに関して説明した動作は、TBの最上位サブブロックに適用される。TBの他のサブブロックは、二次変換が適用されたときに、ゼロ値の残差係数を有する。幅が4より大きく、高さが4に等しいTBの場合、4×4TBのケースに関して説明した動作は、TBの左端のサブブロックに適用され、TBの他のサブブロックは、ゼロ値の残差係数を有し、最終有意係数位置を使用して二次変換インデックスを復号する必要があるかどうかを決定することを可能にする。
図9C及び図9Dは、8×8変換ブロックスキャンパターンと、関連する一次及び二次変換係数の例を示す。図9Cは、8×8TB940に対する4×4サブブロックベースの後方対角線スキャンパターン950を示す。8×8TB940は、4×4サブブロックベースの後方対角線スキャンパターン950でスキャンされる。図9Dは、二次変換の演算の効果を示すセット960を示す。スキャン950は、最終有意係数位置からDC(左上)の係数位置に戻るように進む。940のエリア962として示されている48個の一次係数に対する順方向二次変換カーネルの適用は、964として示される残る16個の一次係数がゼロ値である場合に可能である。このエリア962に二次変換を適用すると、966として示される16個の二次変換された係数が得られる。TBの他の係数位置はゼロ値であり、968として示される。88×TB940の最終有意位置が、二次変換された係数が966内にあることを示す場合、二次変換インデックス388は、モジュール330による特定の変換カーネルの適用(又はカーネルのバイパス)を示すように符号化される。ビデオ復号器134は、TBの最終有意位置を使用して、二次変換インデックス、すなわちインデックス470を復号するかどうかを判定する。幅又は高さが8サンプルを超える変換ブロックについては、図9C及び図9Dのアプローチが、左上の8×8領域に、すなわちTBの左上2×2サブブロックに適用される。
図9A~9Dで説明したように、2つのサイズの二次変換カーネルが利用可能である。1つのサイズの二次変換カーネルは、幅又は高さが4の変換ブロック用で、もう1つのサイズの二次変換は、幅及び高さが4よりも大きい変換ブロック用である。各サイズのカーネルの中で、複数のセット(例えば4つ)の二次変換カーネルが利用可能である。一つのセットは、ブロックのイントラ予測モードに基づいて選択され、これはルマブロックとクロマブロックの間で異なる場合がある。選択されたセット内では、1つ又は2つのカーネルが利用可能である。選択されたセット内の1つのカーネルの使用又は二次変換のバイパスは、符号化ツリーユニットの共有ツリーに属する符号化ユニット内のルマブロック及びクロマブロックについて独立に、二次変換インデックスを介してシグナリングされる。つまり、ルマチャネルに使用されるインデックスと、クロマチャネルに使用されるインデックスは、互いに独立している。
図10は、多用途ビデオ符号化(VVC)規格で利用可能な変換ブロックのセット1000を示す。また、図10は、セット1000の変換ブロックからの残差係数のサブセットへの二次変換の適用を示している。図10は、幅と高さが4から32の範囲のTBを示している。しかし、幅と高さが64のTBも可能であるが、参照を容易にするために示されていない。
16ポイントの二次変換1052(より濃い陰影で示す)は、4×4の係数のセットに適用される。16ポイントの二次変換1052は、幅又は高さが4のTB、例えば、4×4TB1010、8×4TB1012、16×4TB1014、32×4TB1016、4×8TB1020、4×16TB1030、及び4×32TB1040に適用される。64ポイントの一次変換が利用可能な場合、16ポイントの二次変換1052は、サイズ4×64及び64×4のTBに適用される(図10では示されていない)。幅又は高さが4であるが、16以上の一次係数を有するTBについては、16ポイントの二次変換は、TBの左上の4×4サブブロックにのみ適用され、他のサブブロックは、二次変換が適用されるために、ゼロ値の係数を有することが要求される。一般に、16ポイントの二次変換を適用すると、16個の二次変換係数が得られる。これらの二次変換係数は、オリジナルの16個の一次変換係数が得られたサブブロックに符号化するために、TBに詰め込まれる。二次変換カーネルは、例えば、図9Bを参照して説明したように、二次変換が適用された一次変換係数の数よりも少ない数の二次変換係数を生成することがある。
幅及び高さが4よりも大きい変換サイズの場合、図10に示すように、変換ブロックの左上8×8領域の残差係数の3つの4×4サブブロックに適用するための48ポイントの二次変換1050(より薄い陰影で示す)が利用可能である。48ポイントの二次変換1050は、8×8変換ブロック1022、16×8変換ブロック1024、32×8変換ブロック1026、8×16変換ブロック1032、16×16変換ブロック1034、32×16変換ブロック1036、8×32変換ブロック1042、16×32変換ブロック1044、及び32×32変換ブロック1046に対し、それぞれの場合において薄い陰影と破線の輪郭で示された領域において、適用される。64ポイントの一次変換が利用可能な場合、48ポイントの二次変換1050もまた、サイズ8×64、16×64、32×64、64×64、64×32、64×16、64×8(不図示)のTBに適用可能である。48ポイントの二次変換カーネルを適用すると、一般的に、48未満の二次変換係数が生成される。例えば、8個又は16個の二次変換係数が生成されるかもしれない。二次変換係数は、左上の領域の変換ブロックに格納され、例えば、図9Dには、8つの二次変換係数が示されている。二次変換の対象とならない一次変換係数(「一次のみの係数」)、例えばTB1034の係数1066(図9Dの964と同様)は、二次変換が適用されるためにゼロ値であることが要求される。順方向に48ポイントの二次変換1050を適用した後、有意な係数を含む可能性がある領域は、48個の係数から16個の係数に減少し、有意な係数を含む可能性がある係数位置の数をさらに減少させる。例えば、968は有意ではない係数のみを含むだろう。逆二次変換のために、例えばTBの966にのみ存在する、復号された有意な係数が、領域、例えば962、においていずれかが有意であり得る係数を生成するように変換され、これらは次に逆一次変換を受ける。二次変換によって1つ以上のサブブロックが16個の二次変換係数のセットに縮小されるとき、左上の4×4サブブロックのみが有意な係数を含むかもしれない。二次変換係数が格納されてもよい任意の係数位置にある最終有意係数位置は、二次変換の適用か、又は一次変換のみが適用されたかを示す。しかし、量子化された後で、得られた有意な係数は、二次変換カーネルが適用された場合と同じ領域にある。
最終有意係数位置がTB内の二次変換係数位置を示す場合(例えば、922又は962)、二次変換カーネルを適用するか、二次変換をバイパスするかを区別するために、シグナリングされた二次変換インデックスが必要である。図10では様々なサイズのTBへの二次変換の適用をビデオ符号化器114の観点から説明してきたが、ビデオ復号器134では対応する逆のプロセスが実行される。ビデオ復号器134は、まず、最終有意係数位置を復号する。復号された最終有意係数位置が二次変換の適用の可能性を示している場合、すなわち、その位置が8個又は16個の二次変換係数を生成する二次変換カーネルについてそれぞれ928又は966の中にある場合、逆二次変換を適用するかバイパスするかを決定するために、二次変換インデックスが復号される。
図11は、複数のスライスを有するビットストリーム1101のシンタックス構造1100を示す。スライスの各々は、複数の符号化ユニットを含む。ビットストリーム1101は、例えばビットストリーム115として、ビデオ符号化器114によって生成されてもよく、あるいは、例えばビットストリーム133として、ビデオ復号器134によって解析されてもよい。ビットストリーム1101は、例えばNAL(Network Abstraction Layer)ユニットなどの部分に分割され、この区切りは、1108のようなNALユニットヘッダが各NALユニットに先行することにより達成される。シーケンスパラメータセット(SPS)1110は、ビットストリームの符号化及び復号に使用されるプロファイル(ツールのセット)、クロマフォーマット、サンプルビット深度、及びフレーム解像度などのシーケンスレベルのパラメータを定義する。また、各CTUの符号化ツリーにおいて、異なるタイプの分割の適用を制約するパラメータもセット1110に含まれる。分割のタイプを制約するパラメータの符号化は、例えば、ブロックサイズの制約にlog2基底を使用する、及び最小CTUサイズなどの他のパラメータに対して相対的なパラメータを表現するなどの、よりコンパクトな表現に最適化することができる。SPS1110で符号化されるいくつかのパラメータは以下の通りである。
・log2_ctu_size_minus5:CTUサイズを特定し、符号化された値0、1、及び2は、それぞれ32×32、64×64、及び128×128のCTUサイズを特定する。
・partition_constraints_override_enabled_flag:パーティション制約パラメータ1130として総称されるいくつかのパラメータの、スライスレベルでの上書きを適用する能力を有効にする。
・log2_min_luma_coding_block_size_minus2:最小の符号化ブロックサイズ(ルマサンプル)を特定し、値0、1、2、……は、4×4、8×8、16×16、……の最小ルマCBサイズを特定する。符号化された最大値は、特定されたCTUサイズによって、すなわちlog2_min_luma_coding_block_size_minus2≦log2_ctu_size_minus5 + 3となるように、制約される。使用可能なクロマブロックの寸法は、使用中のクロマフォーマットのクロマチャネルサブサンプリングに応じてスケーリングされた使用可能なルマブロックの寸法に対応する。
・sps_max_mtt_hierarchy_depth_inter_slice:インター(P又はB)スライスについて、符号化ツリーの四分ツリーノード(すなわち符号化ツリーにおいて四分ツリーの分割が中止している)に対する、マルチツリータイプの分割(すなわち、二分割及び三分割)についての符号化ツリーにおける符号化ユニットの最大階層深度を特定し、パラメータ1130の1つである。
・sps_max_mtt_hierarchy_depth_intra_slice_luma:イントラ(I)スライスについて、符号化ツリーの四分ツリーノード(すなわち符号化ツリーにおいて四分ツリー分割が中止している)に対するマルチツリータイプの分割(すなわち、二分割及び三分割)についての符号化ツリー内の符号化ユニットの最大階層深度を特定し、パラメータ1130の1つである。
・partition_constraints_override_flag:このパラメータは、SPSのpartition_constraints_override_enabled_flagが1であるときにスライスヘッダにおいてシグナリングされ、SPSでシグナリングされたパーティション制約が対応するスライスについて上書きされることを示す。
ピクチャパラメータセット(PPS)1112は、ゼロ又はより多いフレームに適用可能なパラメータのセットを定義する。PPS1112に含まれるパラメータは、フレームを1つ又は複数の「タイル」及び/又は「ブリック」に分割するパラメータを含む。また、PPS1112のパラメータは、CUクロマQPオフセットのリストを含んでもよく、そのうちの1つは、クロマブロックで使用するための量子化パラメータをコロケートされているルマCBの量子化パラメータから導出するように、CUレベルで適用されてもよい。
1つのピクチャを形成する一連のスライスは、AU 0 1114のように、アクセスユニット(AU)として知られている。AU 0 1114は、スライス0~2のような3つのスライスを含む。スライス1は1116としてマークされている。他のスライスと同様に、スライス1(1116)は、スライスヘッダ1118とスライスデータ1120を含む。
スライスヘッダは、1134としてグループ化されたパラメータを含む。グループ1134は以下のものを含む。
・slice_max_mtt_hierarchy_depth_luma:スライスヘッダのpartition_constraints_override_flagが1であるときにスライスヘッダ1118においてシグナリングされ、SPSから得られた値を上書きする。Iスライスについては、MaxMttDepthを1134で設定するために、sps_max_mtt_hierarchy_depth_intra_slice_lumaを使用する代わりに、slice_max_mtt_hierarchy_depth_lumaが使用される。P又はBスライスについては、sps_max_mtt_hierarchy_depth_inter_sliceを使用する代わりに、slice_max_mtt_hierarchy_depth_lumaが使用される。
変数MinQtLog2SizeIntraY(不図示)は、SPS1110から復号されたシンタックス要素sps_log2_diff_min_qt_min_cb_intra_slice_lumaから導出され、Iスライスについて、ゼロ又はそれより多い四分ツリー分割により生じる(すなわち、符号化ツリー内にそれ以上のMTT分割が発生していない)、最小符号化ブロックサイズを特定する。変数MinQtLog2SizeInterY(不図示)は、SPS1110から復号されたシンタックス要素sps_log2_diff_min_qt_min_cb_inter_sliceから導出される。変数MinQtLog2SizeInterYは、P及びBスライスについて、ゼロ又はそれ以上の四分ツリー分割により生じる(すなわち、符号化ツリー内にそれ以上のMTT分割が発生していない)、最小符号化ブロックサイズを特定する。四分ツリー分割により生じるCUは正方形であるため、変数MinQtLog2SizeIntraY及びMinQtLog2SizeInterYは、それぞれ幅及び高さを(CUの幅/高さのlog2として)を特定する。
パラメータcu_qp_delta_subdivは、スライスヘッダ1118で任意にシグナリングすることができ、共有ツリーについての符号化ツリー又は別のツリースライスのルマブランチにおいてデルタQPがシグナリングされる最大細分化レベルを示す。Iスライスについては、cu_qp_delta_subdivの範囲は、0~2×(log2_ctu_size_minus5 + 5 - MinQtLog2SizeIntraY + MaxMttDepthY 1134である。P又はBスライスについては、cu_qp_delta_subdivの範囲は0~2×(log2_ctu_size_minus5 + 5 - MinQtLog2SizeInterY + MaxMttDepthY 1134である。cu_qp_delta_subdivの範囲は、SPS1110又はスライスヘッダ1118から得られるパーティション制約から導出される値MaxMttDepthY 1134に依存しているため、解析上の問題はない。
パラメータcu_chroma_qp_offset_subdivは、任意的にはスライスヘッダ1118でシグナリングすることができ、共有ツリー又は別のツリースライスのクロマブランチにおいてクロマCU QPオフセットがシグナリングされる最大細分化レベルを示す。I又はP/Bスライスについてのcu_chroma_qp_offset_subdivの範囲制約は、cu_qp_delta_subdivについての対応する範囲制約と同じである。
細分化レベル1136は、スライス1120内のCTUについて導出され、ルマCBについてはcu_qp_delta_subdivと指定され、クロマCBについてはcu_chroma_qp_offset_subdivと指定される。細分化レベルは、図8A~Cを参照して説明したように、CTUデルタQPシンタックス要素が符号化されるポイントを確率するために使用される。クロマCBについては、クロマCUレベルのオフセットの有効化(及び有効化されている場合はインデックス)が、同じく図8A~Cのアプローチを用いてシグナリングされる。
図12は、CTU1210のような符号化ツリーユニットのルマ及びクロマ符号化ブロックのための共有ツリーを有するビットストリーム1101(例えば115又は133)のスライスデータ1120のためのシンタックス構造1200を示す。CTU1210は、1つ又は複数のCUを含み、その例はCU1214として示されている。CU1214は、シグナリングされた予測モード1216aと、それに続く変換ツリー1216bとを含む。CU1214のサイズが最大変換サイズ(32×32又は64×64のいずれか)を超えていない場合、変換ツリー1216bは、TU1218として示される1つの変換ユニットを含む。
予測モード1216aがCU1214のイントラ予測の使用を示す場合、ルマイントラ予測モードとクロマイントラ予測モードが指定される。また、CU1214のルマCBについては、一次変換タイプもまた、(i)水平及び垂直のDCT-2、(ii)水平及び垂直の変換スキップ、又は(iii)水平及び垂直のDST-7とDCT-8との組み合わせ、のいずれかとしてシグナリングされる。シグナリングされたルマ変換タイプが水平及び垂直のDCT-2である場合(選択肢(i))、図9A~Dを参照して説明した条件で、「低周波数非分離変換」(LFNST)インデックスとしても知られる追加のルマ二次変換タイプ1220がビットストリームにおいてシグナリングされる。クロマ二次変換タイプ1221もまたシグナリングされる。クロマ二次変換タイプ1221は、ルマ一次変換タイプがDCT-2であるか否かとは独立してシグナリングされる。
共有符号化ツリーを使用すると、TU1218は、ルマTB Y 1222、第1のクロマTB Cb 1224、及び第2のクロマTB Cr 1226として示される各カラーチャネルのTBを含むことになる。CbチャネルとCrチャネルの両方のクロマ残差を特定するために単一のクロマTBが送信される符号化モードが利用可能であり、これは「ジョイントCbCr」符号化モードとして知られている。ジョイントCbCr符号化モードが有効であるとき、単一のクロマTBが符号化される。
カラーチャネルに関係なく、各TBは、最終位置1228を含む。最終位置1228は、TBの係数の配列を直列化するために使用される対角線スキャンパターンの係数を順方向に(すなわち、DC係数から進むように考慮した場合の、TBの最終有意残差係数位置を示す。TBの最終位置1228が、二次変換ドメインの係数のみが有意であること、すなわち、残りの全ての係数が一次変換のみの対象となるであろうことを示す場合、二次変換を適用するか否かを指定するために、二次変換インデックスがシグナリングされる。
二次変換が適用される場合で、複数の二次変換カーネルが利用可能な場合、二次変換インデックスは、どのカーネルが選択されるかを示す。一般的に、1つのカーネルが利用可能であるか、2つのカーネルが「候補セット」において利用可能である。候補セットは、ブロックのイントラ予測モードから決定される。一般的には、4つの候補セットがあるが、候補セットの数がより少ない場合もある。上述したように、ルマ及びクロマのための二次変換の使用、及びそれに応じて選択されるカーネルは、ルマ及びクロマチャネルそれぞれのイントラ予測モードに依存する。カーネルは、対応するルマ及びクロマのTBのブロックサイズにも依存する。クロマについて選択されるカーネルは、ビットストリームのクロマのサブサンプリング比率にも依存する。カーネルが1つしかない場合、シグナリングは二次変換の適用又は不適用に限定される(インデックスの範囲は0~1)。カーネルが2つ利用可能である場合、インデックスの値は0(適用しない)、1(第1カーネルを適用)、又は2(第2カーネルを適用)である。クロマについては、同じ二次変換カーネルが各クロマチャネルに適用され、したがって、Cbブロック1224及びCrブロック1226の残差は、図9A~Dを参照して説明したように、二次変換の対象となる位置において有意な係数のみを含む必要がある。ジョイントCbCr符号化が使用される場合、二次変換の対象となる位置に有意な係数のみを含むという要件は、結果として得られるCb及びCr残差はジョイント符号化されたTBにおける有意な係数に対応する位置の有意な係数のみを含むため、単一符号化されたクロマTBにのみ適用される。所与の二次インデックスの適用可能なカラーチャネルが単一のTB(単一の最終位置、例えば1228)によって記述される場合、すなわち、ジョイントCbCr符号化が使用される場合にルマが常に1つのTBのみを必要としクロマが1つのTBを必要とする場合、二次変換インデックスは、TUの後ではなく、最終位置を符号化した直後に符号化されてもよく、すなわち、1220(又は1221)の代わりにインデックス1230として符号化されてもよい。ビットストリームにおいて二次変換を早くシグナリングすることにより、ビデオ復号器134は、残差係数1232の各残差係数が復号される際に、二次変換の適用を開始することができ、システム100のレイテンシを低減することができる。
ビデオ符号化器114及びビデオ復号器134の構成では、ジョイントCbCr符号化が使用されない場合、各クロマTB、すなわち1224及び1226に対して別個の二次変換インデックスがシグナリングされ、その結果、各カラーチャネルに対する二次変換の独立した制御が行われる。各TBが独立して制御される場合、各TBの二次変換インデックスは、(ジョイントCbCrモードの適用の有無にかかわらず)ルマ用及びクロマ用の対応するTBの最終位置の直後にシグナリングされてもよい。
図13は、フレームデータ113をビットストリーム115に符号化するための方法1300を示しており、ビットストリーム115は、符号化ツリーユニットのシーケンスとして1つ又は複数のスライスを含む。方法1300は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1300は、プロセッサ205の実行下で、ビデオ符号化器114によって実行されてもよい。フレームを符号化する作業負荷のために、方法1300のステップは、作業負荷を共有するために、例えば、現代のマルチコアプロセッサを使用して、異なるスライスが異なるプロセッサによって符号化されるように、異なるプロセッサで実行されてもよい。さらに、ビットストリーム115の各部分(スライス)を符号化する際に、レート制御の目的で有益と考えられるように、パーティショニング制約及び量子化グループの定義はスライスごとに異なっていてもよい。各符号化ユニットの残差を符号化する際のさらなる柔軟性のために、量子化グループの細分化レベルがスライスごとに変化してもよいだけでなく、二次変換の適用はルマ及びクロマについて独立して制御可能である。このように、方法1300は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1300は、SPS/PPS符号化ステップ1310で始まる。ステップ1310において、ビデオ符号化器114は、SPS1110及びPPS1112を、固定長及び可変長符号化されたパラメータのシーケンスとして、ビットストリーム115に符号化する。partition_constraints_override_enabled_flagがSPS1110の一部として符号化され、それぞれのスライス(1116など)のスライスヘッダ(1118)において、パーティション制約を上書きすることができることを示す。また、デフォルトのパーティション制約は、ビデオ符号化器114によってSPS1110の一部として符号化される。
方法1300は、ステップ1310から、フレームをスライスに分割するステップ1320に続く。ステップ1320の実行において、プロセッサ205は、フレームデータ113を1つ又は複数のスライス又は連続部分に分割する。並列化が望まれる場合には、ビデオ符号化器114の別々のインスタンスが、各スライスを幾分独立して符号化する。単一のビデオ符号化器114が各スライスを順次処理してもよいし、何らかの中間程度の並列性が実装されてもよい。一般に、フレームのスライス(連続部分)への分割は、「サブピクチャ」又はタイルなどとして知られる領域へのフレームの分割の境界に合わせられる。
方法1300は、ステップ1320から、スライスヘッダ符号化ステップ1330に続く。ステップ1330において、エントロピー符号化器338は、スライスヘッダ1118をビットストリーム115に符号化する。以下、図14を参照して、ステップ1330の実装例を提供する。
方法1300は、ステップ1330から、スライスをCTUに分割するステップ1340に続く。ステップ1340の実行において、ビデオ符号化器114は、スライス1116をCTUのシーケンスに分割する。スライスの境界はCTUの境界に整列され、スライス内のCTUは、CTUのスキャン順序、一般的にはラスタースキャン順序に従って順序付けられる。CTUへのスライスの分割は、フレームデータ113のどの部分が、現在のスライスを符号化する際にビデオ符号化器113によって処理されるかを確立する。
方法1300は、ステップ1340から、符号化ツリー決定ステップ1350へと続く。ステップ1350において、ビデオ符号化器114は、スライス内の現在の選択されたCTUに対する符号化ツリーを決定する。方法1300は、ステップ1350の最初の呼び出しにおいて、スライス1116内の第1のCTUから開始し、その後の呼び出しにおいて、スライス1116内の後続のCTUに進行する。CTUの符号化ツリーを決定する際には、四分ツリー、二分ツリー、及び三分ツリーの様々な組み合わせがブロックパーティショナー310によって生成され、テストされる。
方法1300は、ステップ1350から、符号化ユニットを決定するステップ1360へと続く。ステップ1360において、ビデオ符号化器114は、既知の方法を使用して、評価中の様々な符号化ツリーから得られるCUについての「最適な」符号化を決定するように実行する。最適な符号化を決定することは、予測モード(例えば、特定のモードによるイントラ予測又は動きベクトルを用いるインター予測)、変換の選択(一次変換タイプ及び任意選択として二次変換タイプ)を決定することを含む。ルマTBの一次変換タイプがDCT-2と決定された場合、又は順方向二次変換の対象とならない量子化された一次変換係数が有意である場合、ルマTBの二次変換インデックスは、二次変換の適用を示すことができる。そうでなければ、ルマ用の二次変換インデックスは、二次変換のバイパスを示す。ルマチャネルの場合、一次変換タイプは、DCT-2、変換スキップ、又はクロマチャネルについてのMTSオプションのうちの1つに決定され、DCT-2が利用可能な変換タイプとなる。二次変換タイプの決定については、図19A及び図19Bを参照してさらに説明する。符号化の決定は、QPを変更することが可能な場所、すなわち量子化グループの境界において、量子化パラメータを決定することも含むことができる。個々の符号化ユニットを決定する際には、最適な符号化ツリーもまた、共同で決定される。符号化ユニットがイントラ予測を用いて符号化される場合には、ルマイントラ予測モード及びクロマイントラ予測が決定される。
符号化ユニット決定ステップ1360は、DCT-2一次変換の適用から生じる一次ドメイン残差に「AC」(変換ブロックの左上位置以外の場所にある係数)の残差係数が存在しない場合、二次変換の適用をテストすることを禁止してもよい。DC係数のみを含む変換ブロック(最終位置は、変換ブロックの左上の係数のみが有意であることを示す)に対して二次変換の適用がテストされる場合、符号化ゲインが見られる。DC一次係数のみが存在する場合の二次変換テストの禁止は、、単一のインデックスが符号化される場合、二次変換インデックスが適用されるブロック、すなわち共有ツリーについてのY、Cb、及びCr(Cb及びCrブロックが2サンプルの幅又は高さの場合にはYチャネルのみ)に及ぶ。DC係数のみを持つ残差は、少なくとも1つのAC係数を持つ残差に比べて符号化コストが低いにもかかわらず、有意なDC係数のみを持つ残差に対しても二次変換を適用すると、最終的な符号化されたDC係数の大きさがさらに減少する。符号化の前にさらなる量子化及び/又は丸め処理を行った後でも、他の(AC)係数は、二次変換後に十分な大きさを持っておらず、ビットストリーム内における有意な符号化された残差係数につながる。共有ツリー又は別個のツリーの符号化ツリーにおいて、少なくとも1つの有意な一次係数が存在することを条件として、二次変換インデックスの適用範囲内で、それぞれの変換ブロックのDC係数(複数可)のみであっても、ビデオ符号化器114は、ゼロではない二次変換インデックス値の選択について(つまり、二次変換の適用について)テストする。
方法1300は、ステップ1360から符号化ユニット符号化ステップ1370へと続く。ステップ1370において、ビデオ符号化器114は、ステップ1360の決定された符号化ユニットをビットストリーム115に符号化する。符号化ユニットがどのように符号化されるかの一例を、図15を参照してより詳細に説明する。
方法1300は、ステップ1370から最後の符号化ユニットテストステップ1380に続く。ステップ1380において、プロセッサ205は、現在の符号化ユニットがCTUの最後の符号化ユニットであるかどうかをテストする。そうではない場合(ステップ1380で「NO」)、プロセッサ205における制御は、符号化ユニット決定ステップ1360に進む。そうではなく、現在の符号化ユニットが最後の符号化ユニットである場合(ステップ1380で「YES」)、プロセッサ205内の制御は、最後のCTUテストステップ1390に進む。
最後のCTUテストステップ1390において、プロセッサ205は、現在のCTUがスライス1116における最後のCTUであるかどうかをテストする。スライス1116内の最後のCTUでない場合、プロセッサ205内の制御は、符号化ツリーの決定ステップ1350に戻る。そうではなく、現在のCTUが最後のものである場合(ステップ1390で「YES」)、プロセッサ内の制御は、最後のスライステストステップ13100に進む。
最後のスライステストステップ13100で、プロセッサ205は、符号化されている現在のスライスがフレームの最後のスライスであるかどうかをテストする。最後のスライスでなければ(ステップ13100で「NO」)、プロセッサ205内の制御は、スライスヘッダ符号化ステップ1330に進む。そうではなく、現在のスライスが最後であり、全てのスライス(連続部分)が符号化されていれば(ステップ13100で「YES」)、方法1300は終了する。
図14は、ステップ1330で実装される、スライスヘッダ1118をビットストリーム115に符号化するための方法1400を示す。方法1400は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1400は、プロセッサ205の実行下で、ビデオ符号化器114によって実行されてもよい。このように、方法1400は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1400は、パーティション制約上書き有効化テスト(partition constraints override enabled test)ステップ1410で開始する。ステップ1410で、プロセッサ205は、SPS1110において符号化されたパーティション制約上書き有効フラグ(partition constraints override enabled flag)が、パーティション制約がスライスレベルで上書きされてもよいことを示しているかどうかをテストする。パーティション制約がスライスレベルで上書きされてもよい場合(ステップ1410で「YES」)、プロセッサ205における制御は、パーティション制約決定ステップ1420に進む。そうではなく、スライスレベルでパーティション制約を上書きすることができない場合(ステップ1410で「NO」)、プロセッサ205内の制御は、他のパラメータ符号化ステップ1480に進む。
パーティション制約決定ステップ1420において、プロセッサ205は、現在のスライス1116に適したパーティション制約(例えば、最大MTT分割深度)を決定する。一例では、フレームデータ310は、2Dフレームにマッピングされたシーンの360度ビューの投影を含み、いくつかのサブピクチャに分割されている。選択されたビューポートに応じて、特定のスライスはより高い忠実度を必要とし、他のスライスはより低い忠実度を必要とするかもしれない。所与のスライスに対するパーティション制約は、そのスライスによって符号化されたフレームデータ310の部分の忠実度要件に基づいて設定されてもよい(例えば、ステップ1340による)。より低い忠実度が許容されると考えられる場合には、より大きなCUを有するより浅い符号化ツリーが許容され、したがって、最大MTT深度がより低い値に設定されてもよい。フラグcu_qp_delta_subdivでシグナリングされる細分化レベル1136は、それに応じて、少なくとも決定された最大MTT深度1134から生じる範囲内で決定される。また、対応するクロマ細分化レベルも決定され、シグナリングされる。
方法1400は、ステップ1420から、パーティション制約上書きフラグ符号化ステップ1430に続く。ステップ1430において、エントロピー符号化器338は、SPS1110においてシグナリングされたパーティション制約がスライス1116について上書きされるかどうかを示すフラグをビットストリーム115に符号化する。現在のスライスに固有のパーティション制約がステップ1420で導出された場合、フラグの値は、パーティション制約の上書き機能の使用を示すことになる。ステップ1420で決定された制約が、SPS1110において既に符号化されたものと一致する場合、シグナリングされる変更が存在しないため、パーティション制約を上書きする必要はなく、フラグ値はそれに応じて符号化される。
方法1400は、ステップ1430からパーティション制約上書きテスト(partition constraints override test)ステップ1440へと続く。ステップ1440において、プロセッサ205は、ステップ1430で符号化されたフラグ値をテストする。フラグがパーティション制約を上書きすることを示している場合(ステップ1440で「YES」)、プロセッサ205における制御は、スライスパーティション制約符号化ステップ1450に進む。そうではなく、パーティション制約が上書きされない場合(ステップ1440で「NO」)、プロセッサ205内の制御は、他のパラメータ符号化ステップ1480に進む。
方法1400は、ステップ1440から、スライスパーティション制約符号化ステップ1450へと続く。ステップ1450の実行において、エントロピー符号化器338は、スライスについて決定されたパーティション制約をビットストリーム115に符号化する。スライスについてのパーティション制約は「slice_max_mtt_hierarchy_depth_luma」を含み、そこからMaxMttDepthY 1134が導出される。
方法1400は、ステップ1450から、QP細分化レベル符号化ステップ1460へと続く。ステップ1460において、エントロピー符号化器338は、図11を参照して説明したように、「cu_qp_delta_subdiv」シンタックス要素を用いて、ルマCBについての細分化レベルを符号化する。
方法1400は、ステップ1460から、クロマQP細分化レベル符号化ステップ1470へと続く。ステップ1470において、エントロピー符号化器338は、図11を参照して説明したように、「cu_chroma_qp_offset_subdiv」シンタックス要素を用いて、CUクロマQPオフセットのシグナリングのための細分化レベルを符号化する。
ステップ1460及び1470は、フレームのスライス(連続部分)に対する全体的なQP細分化レベルを符号化するように動作する。全体的な細分化レベルは、スライスのルマ符号化ユニットの細分化レベルとクロマ符号化ユニットの細分化レベルの両方を含む。クロマとルマの細分化レベルは、例えばIスライスにおけるルマとクロマに別々の符号化ツリーを使用することにより、異なることがある。
方法1400は、ステップ1470から、他のパラメータ符号化ステップ1480に続く。ステップ1480において、エントロピー符号化器338は、デブロッキング、適応ループフィルタのような特定のツールの制御、(変換ブロックへの量子化パラメータの不均一な適用のための)以前にシグナリングされたものからのスケーリングリストの任意的な選択のために必要なもののような、他のパラメータをスライスヘッダ1118に符号化する。方法1400は、ステップ1480の実行により終了する。
図15は、図13のステップ1370に対応する、ビットストリーム115に符号化ユニットを符号化するための方法1500を示す。方法1500は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1500は、プロセッサ205の実行下でビデオ符号化器114によって実行されてもよい。このように、方法1500は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1500は、予測モード符号化ステップ1510で開始する。ステップ1510において、エントロピー符号化器338は、ステップ1360で決定された、符号化ユニットのための予測モードを、ビットストリーム115に符号化する。「pred_mode」シンタックス要素は、符号化ユニットに対するイントラ予測、インター予測、又は他の予測モードの使用を区別するために符号化される。符号化ユニットにイントラ予測が使用される場合、ルマイントラ予測モードが符号化され、クロマイントラ予測モードが符号化される。符号化ユニットにインター予測が使用される場合、隣接する符号化ユニットからの動きベクトルをこの符号化ユニットで使用するために選択するために、「マージインデックス」が符号化されてもよいし、空間的に隣接するブロックから得られる動きベクトルにオフセットを導入するために、動きベクトルデルタが符号化されてもよい。一次変換タイプは、符号化ユニットのルマTBに対して、水平及び垂直にDCT-2を使用するか、水平及び垂直に変換スキップを使用するか、又は水平及び垂直にDCT-8とDST-7の組み合わせを使用するかを選択するために符号化される。
方法1500は、ステップ1510から符号化残差テストステップ1520へと続く。ステップ1520において、プロセッサ205は、残差が符号化ユニットについて符号化される必要があるかどうかを決定する。符号化ユニットについて符号化される有意な残差係数が存在する場合(ステップ1520で「YES」)、プロセッサ205の制御は、新しいQGテストステップ1530に進む。そうではなく、符号化される有意な残差係数が存在しない場合(ステップ1520で「NO」)、符号化ユニットを復号するために必要な全ての情報がビットストリーム115に存在するため、方法1500は終了する。
新しいQGテストステップ1530において、プロセッサ205は、符号化ユニットが新しい量子化グループに対応するかどうかを決定する。符号化ユニットが新しい量子化グループに対応する場合(ステップ1530で「YES」)、プロセッサ205の制御は、符号化デルタQPステップ1540に進む。そうではなく、符号化ユニットが新しい量子化グループに関係しない場合(ステップ1530で「NO」)、プロセッサ205内の制御は、一次変換実行ステップ1550に進む。各符号化ユニットを符号化する際には、ステップ1530において、CTUの符号化ツリーのノードがトラバースされる。現在のノードの子ノードのいずれかが、現在のスライスについての細分化レベル1136以下の細分化レベルを有すると「cu_qp_delta_subdiv」から決定される場合、そのノードに対応するCTUのエリアで新たな量子化グループが開始し、ステップ1530は「YES」を返す。符号化された残差を含む量子化グループ内の最初のCUは、符号化されたデルタQPも含み、この量子化グループ内の残差係数に適用される量子化パラメータへのあらゆる変更をシグナリングする。
デルタQP符号化ステップ1540において、エントロピー符号化器338は、デルタQPをビットストリーム115に符号化する。デルタQPは、予測されたQPと、現在の量子化グループで使用するように意図されたQPとの間の差分を符号化する。予測されたQPは、隣り合う先行する(上と左の)量子化グループのQPを平均することによって得られる。細分化レベルがより低い場合、量子化グループはより大きくなり、デルタQPの符号化頻度はより低くなる。デルタQPの符号化頻度がより低いと、QPの変化をシグナリングするためのオーバーヘッドがより小さくなるが、レート制御の柔軟性もより低くなる。各量子化グループに対する量子化パラメータの選択は、基礎となるフレームデータ113の統計の変化とは幾分独立して、ビットストリーム115について特定のビットレートを目標とするレート制御アルゴリズムを典型的には実装する、QPコントローラモジュール390によって実行される。方法1500は、ステップ1540から一次変換実行ステップ1550に続く。
一次変換実行ステップ1550において、順方向一次変換モジュール326は、符号化ユニットの一次変換タイプに従って一次変換を実行し、その結果、一次変換係数328が得られる。一次変換は、各カラーチャネルに対して実行され、まず、ルマチャネル(Y)に対して実行され、次に、現在のTUに対する引き続くステップ1550の呼び出し時に、Cb及びCrのTBに対して実行される。ルマチャネルに対しては、一次変換タイプ(DCT-2、変換スキップ、MTSオプション)が実行され、クロマチャネルに対しては、DCT-2が実行される。
方法1500は、ステップ1550から一次変換係数量子化ステップ1560へと続く。ステップ1560において、量子化モジュール334は、量子化パラメータ392に従って一次変換係数328を量子化し、量子化された一次変換係数332を生成する。デルタQPは、存在する場合、変換係数328を符号化するために使用される。
方法1500は、ステップ1560から、二次変換実行ステップ1570に続く。ステップ1570において、二次変換モジュール330は、量子化された一次変換係数332に対して、現在の変換ブロックについての二次変換インデックス388に従って二次変換を実行し、二次変換係数336を生成する。二次変換は、量子化の後に実行されるが、一次変換係数328は、量子化パラメータ392の最終的に意図された量子化ステップサイズと比較して、より高い精度を保持してもよく、例えば、大きさは、量子化パラメータ392の適用から直接得られるであろうものよりも16倍大きくてもよく、すなわち、4つの追加ビット精度が保持されるだろう。量子化された一次変換係数332に追加のビット精度を保持することにより、二次変換モジュール330は、一次係数ドメイン内の係数に対してより高い精度で動作することができる。二次変換の適用後、ステップ1560における最終的なスケーリング(例えば、4ビットの右シフト)により、量子化パラメータ392の意図された量子化ステップサイズへの量子化が行われる。「スケーリングリスト」の適用は、訓練された二次変換カーネルから生じる二次変換係数に対して動作するのではなく、周知の変換基底関数(DCT-2、DCT-8、DST-7)に対応する一次変換係数に対して行われる。変換ブロックについての二次変換インデックス388が二次変換の適用がないことを示す場合(インデックス値がゼロに等しい)、二次変換はバイパスされる。すなわち、一次変換係数332は、変更されずに二次変換モジュール330を介して伝搬され、二次変換係数336となる。ルマ二次変換インデックスは、ルマイントラ予測モードと組み合わせて、ルマTBに適用する二次変換カーネルを選択するために使用される。クロマ二次変換インデックスは、クロマイントラ予測モードと組み合わせて、クロマTBに適用するための二次変換カーネルを選択するために使用される。
方法1500は、ステップ1570から、最終位置符号化ステップ1580に続く。ステップ1580において、エントロピー符号化器338は、現在の変換ブロックについての二次変換係数336における最終有意係数位置をビットストリーム115に符号化する。ステップ1580の最初の呼び出し時にはルマTBが考慮され、その後の呼び出しではCb及び次いでCrのTBが考慮される。
二次変換インデックス388が最終位置の直後に符号化される構成では、方法1500は、LFNSTインデックス符号化ステップ1590に続く。ステップ1590において、エントロピー符号化器338は、ステップ1580で符号化された最終位置に基づいて二次変換インデックスがゼロであると推測されなかった場合、トランケーテッドユナリー(truncated unary)コードワードを使用して、二次変換インデックス338を「lfnst_index」としてビットストリーム115に符号化する。各CUは1つのルマTBを有し、ステップ1590をルマブロックに対して実行することを可能し、クロマについて「ジョイント」符号化モードが使用される場合には、1つのクロマTBが符号化されるので、ステップ1590をクロマに対して実行することができる。各残差係数を復号する前に二次変換インデックスを知ることで、係数が復号される際に、例えば乗算及び積算論理を用いて、二次変換を係数ごとに適用することができる。方法1500は、ステップ1590からサブブロック符号化ステップ15100へと続く。
二次変換インデックス388が最終位置の直後に符号化されない場合、方法1500は、ステップ1580からサブブロック符号化ステップ15100へと続く。サブブロック符号化ステップ15100では、現在の変換ブロック(336)の残差係数が、一連のサブブロックとしてビットストリーム115に符号化される。残差係数は、最終有意係数位置を含むサブブロックから、DC残差係数を含むサブブロックに戻って進行するように符号化される。
方法1500は、ステップ15100から最後のTBテストステップ15110に続く。ステップでは、プロセッサ205は、現在の変換ブロックがカラーチャネル、すなわちY、Cb、及びCrにわたる進行の最後のものであるかどうかをテストする。ちょうど符号化された変換ブロックがCr TBについてのものである場合(ステップ15110で「YES」)、プロセッサ205の制御は、ルマLFNSTインデックス符号化ステップ15120に進む。そうではなく、現在のTBが最後のものではない場合(ステップ15110で「YES」)、プロセッサ205内の制御は、一次変換実行ステップ1550に戻り、次のTB(Cb又はCrが選択される)となる。
ステップ1550~15110は、予測モードがイントラ予測であり、DCT-2を使用する共有符号化ツリー構造の例に関連して説明される。一次変換の実行(1550)、一次変換係数の量子化(1560)、及び最終位置の符号化(1590)などのステップの動作は、既知の方法を使用して、共有符号化ツリー構造以外のインター予測モード又はイントラ予測モードについて実装することができる。ステップ1510~1540は、予測モード又は符号化ツリー構造に関係なく実装することができる。
方法1500は、ステップ15110から、ルマLFNSTインデックス符号化ステップ15120に続く。ステップ15120では、ルマTBに適用される二次変換インデックスは、ゼロ(二次変換が適用されない)であると推測されない場合、エントロピー符号化器338によってビットストリーム115に符号化される。ルマ二次変換インデックスは、ルマTBについての最終有意位置が有意な一次のみの残差係数を示す場合、又はDCT-2以外の一次変換が実行される場合、ゼロであると推測される。さらに、ルマTBに適用される二次変換インデックスは、イントラ予測と共有符号化ツリー構造を使用する符号化ユニットについてのみ、ビットストリームに符号化される。ルマTBに適用される2次変換インデックスは、フラグ1220(ジョイントCbCrモードの場合はフラグ1230)を用いて符号化される。
方法1500は、ステップ15120から、クロマLFNSTインデックス符号化ステップ15130に続く。ステップ1530では、クロマ二次変換インデックスがゼロ(二次変換が適用されない)であると推測されない場合、エントロピー符号化器338によって、クロマTBに適用された二次変換インデックスがビットストリーム115に符号化される。クロマ二次変換インデックスは、いずれかのクロマTBについての最終有意位置が有意な一次のみの残差係数を示す場合、ゼロであると推測される。方法1500は、ステップ15130を実行すると終了し、プロセッサ205における制御は方法1300に戻る。クロマTBに適用される二次変換インデックスは、イントラ予測及び共有符号化ツリー構造を用いる符号化ユニットについてのみ、ビットストリームに符号化される。クロマTBに適用される二次変換インデックスは、フラグ1221(ジョイントCbCrモードの場合は、フラグ1230)を用いて符号化される。
図16は、スライスに構成された符号化ユニットのシーケンスとしてのビットストリームからフレームを復号するための方法1600を示す。方法1600は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1600は、プロセッサ205の実行下で、ビデオ復号器134によって実行されてもよい。このように、方法1600は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1600は、ビットストリーム115の各部分(スライス)を符号化する際に、レート制御の目的で有益と考えられるように、パーティショニング制約及び量子化グループ定義がスライスごとに変化してもよい方法1300を用いて符号化されたビットストリームを復号する。量子化グループの細分化レベルがスライスごとに変化してもよいだけでなく、二次変換の適用は、ルマ及びクロマについて独立して制御可能である。
方法1600は、SPS/PPS復号ステップ1610で始まる。ステップ1610の実行において、ビデオ復号器134は、固定長及び可変長のパラメータのシーケンスとして、ビットストリーム133からSPS1110及びPPS1112を復号する。partition_constraints_override_enabled_flagは、それぞれのスライス(例えば1116)のスライスヘッダ(例えば1118)において、パーティション制約を上書きできるかどうかを示す、SPS1110の一部として復号される。デフォルトの(つまり、SPS1110でシグナリングされ、その後の上書きがない場合にスライスで使用される)パーティション制約パラメータ1130も、ビデオ復号器134によってSPS1110の一部として復号される。
方法1600は、ステップ1610から、スライス境界を決定するステップ1620に続く。ステップ1620の実行において、プロセッサ205は、ビットストリーム133内の現在のアクセスユニットにおけるスライスの位置を決定する。一般に、スライスは、NALユニット境界を(「スタートコード」を検出することによって)決定し、各NALユニットについて、「NALユニットタイプ」を含むNALユニットヘッダを読み取ることによって識別される。特定のNALユニットタイプは、「Iスライス」、「Pスライス」、「Bスライス」などのスライスタイプを識別する。スライス境界を識別すると、アプリケーション233は、方法1600の続くのステップの実行を、異なるプロセッサ上で、例えばマルチプロセッサアーキテクチャにおいて、並列復号のために分散させてもよい。より高い復号スループットのために、マルチプロセッサシステム内の各プロセッサによって異なるスライスが復号されてもよい。
方法1600は、ステップ1610から、スライスヘッダ復号ステップ1630へと続く。ステップ1630において、エントロピー復号器420は、ビットストリーム133からスライスヘッダ1118を復号する。ステップ1630で実装される、ビットストリーム133からスライスヘッダ1118を復号する例示的な方法を、図17を参照して以下に説明する。
方法1600は、ステップ1630から、スライスをCTUに分割するステップ1640に続く。ステップ1640において、ビデオ復号器134は、スライス1116をCTUのシーケンスに分割する。スライスの境界はCTUの境界に整列され、スライス内のCTUはCTUスキャン順に従って順序付けられる。CTUスキャン順序は、一般にラスタースキャン順序である。CTUへのスライスの分割は、現在のスライスを復号する際に、フレームデータ113のどの部分がビデオ復号器134によって処理されるかを確立する。
方法1600は、ステップ1640から、符号化ツリー復号ステップ1650へと続く。ステップ1650の実行において、ビデオ復号器133は、ステップ1650の最初の呼び出しにおいてスライス1116の最初のCTUから開始して、ビットストリーム133からスライス内の現在のCTUについての符号化ツリーを復号する。CTUの符号化ツリーは、図6に従って分割フラグを復号することによって復号される。CTUに対するステップ1650の続く繰り返しにおいて、復号はスライス1116内の後続するCTUに対して実行される。符号化ツリーがイントラ予測モード及び共有符号化ツリー構造を用いて符号化された場合、符号化ユニットは、プライマリカラーチャネル(ルマ又はY)及び少なくとも1つのセカンダリカラーチャネル(クロマ、Cb及びCr又はCbCr)を有する。この場合、符号化ツリーの復号は、符号化ツリーユニットの分割フラグに従って、プライマリカラーチャネルと少なくとも1つのセカンダリカラーチャネルを含む符号化ユニットを復号することに関連する。
方法1600は、ステップ1660から、符号化ユニット復号ステップ1670へと続く。ステップ1670において、ビデオ復号器314は、ビットストリーム133から符号化ユニットを復号する。ステップ1670で実装される、符号化ユニットを復号する方法の例を、図18を参照して以下に説明する。
方法1600は、ステップ1610から最後の符号化ユニットテストステップ1680へと続く。ステップ1680において、プロセッサ205は、現在の符号化ユニットがCTUの最後の符号化ユニットであるかどうかをテストする。最後の符号化ユニットでない場合(ステップ1680で「NO」)、プロセッサ205における制御は、符号化ツリーユニットの次の符号化ユニットを復号するために、符号化ユニット復号ステップ1670に戻る。現在の符号化ユニットが最後の符号化ユニットである場合(ステップ1680で「YES」)、プロセッサ205内の制御は、最後のCTUテストステップ1690に進む。
最後のCTUテストステップ1690において、プロセッサ205は、現在のCTUがスライス1116の最後のCTUであるかどうかをテストする。スライスの最後のCTUでない場合(ステップ1690で「NO」)、プロセッサ205内の制御は、スライス1116の次の符号化ツリーユニットを復号するために、符号化ツリー復号ステップ1650に戻る。現在のCTUがスライス1116の最後のCTUである場合(ステップ1690で「YES」)、プロセッサ205内の制御は、最後のスライステストステップ16100に進む。
最後のスライステストステップ16100で、プロセッサ205は、復号されている現在のスライスがフレームの最後のスライスであるかどうかをテストする。フレーム内の最後のスライスでない場合(ステップ16100で「NO」)、プロセッサ205内の制御は、スライスヘッダ復号ステップ1630に戻り、ステップ1630は、フレーム内の次のスライス(例えば図11の「スライス2」)のスライスヘッダを復号するように動作する。現在のスライスがフレーム内の最後のスライスである場合(ステップ1600で「YES」)、方法1600は終了する。
複数の符号化ユニットに対する方法1600の動作は、図1でデバイス130に関連して説明したように、画像フレームを生成するように動作する。
図17は、ステップ1630で実装される、スライスヘッダをビットストリームに復号するための方法1700を示す。方法1700は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1700は、プロセッサ205の実行下で、ビデオ復号器134によって実行されてもよい。このように、方法1700は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1500と同様に、方法1700は、例えばフレーム1101などのフレーム内の現在のスライス又は連続部分(1116)に対して実行される。方法1700は、パーティション制約上書き有効テストステップ1710で始まる。ステップ1710において、プロセッサ205は、SPS1110から復号されたパーティション制約上書き有効フラグが、パーティション制約がスライスレベルで上書きされてもよいことを示しているかどうかをテストする。パーティション制約がスライスレベルで上書きされてもよい場合(ステップ1710で「YES」)、プロセッサ205における制御は、パーティション制約上書きフラグ復号ステップ1720に進む。そうではなく、パーティション制約上書き有効フラグが、スライスレベルで制約を上書きできないことを示す場合(ステップ1710で「NO」)、プロセッサ205内の制御は、他のパラメータ復号ステップ1770に進む。
パーティション制約上書きフラグ復号ステップ1720において、エントロピー復号器420は、ビットストリーム133からパーティション制約上書きフラグを復号する。復号されたフラグは、SPS1110でシグナリングされたパーティション制約が、現在のスライス1116について上書きされるかどうかを示す。
方法1700は、ステップ1720からパーティション制約上書きテストステップ1730へと続く。ステップ1730の実行において、プロセッサ205は、ステップ1720で復号されたフラグ値をテストする。復号されたフラグがパーティション制約が上書きされることを示している場合(ステップ1730で「YES」)、プロセッサ205における制御は、スライスパーティション制約復号ステップ1740に進む。そうではなく、復号されたフラグがパーティション制約を上書きしないことを示している場合(ステップ1730で「NO」)、プロセッサ205における制御は、他のパラメータ復号ステップ1770に進む。
スライスパーティション制約復号ステップ1740において、エントロピー復号器420は、ビットストリーム133からスライスについて決定されたパーティション制約を復号する。スライスについてのパーティション制約は、「slice_max_mtt_hierarchy_depth_luma」を含み、ここからMaxMttDepthY 1134が導出される。
方法1700は、ステップ1740からQP細分化レベル復号ステップ1750へと続く。ステップ1720で、エントロピー復号器420は、図11を参照して説明したように、「cu_qp_delta_subdiv」シンタックス要素を用いて、ルマCBについての細分化レベルを復号する。
方法1700は、ステップ1750から、クロマQP細分化レベル復号ステップ1760へと続く。ステップ1760で、エントロピー復号器420は、図11を参照して説明したように、「cu_chroma_qp_offset_subdiv」シンタックス要素を用いて、CUクロマQPオフセットのシグナリングのための細分化レベルを復号する。
ステップ1750及び1760は、ビットストリームの特定の連続部分(スライス)についての細分化レベルを決定するように動作する。ステップ1630と16100の間で繰り返される反復は、ビットストリームの各連続部分(スライス)に対する細分化レベルを決定するように動作する。以下で説明するように、各細分化レベルは、対応するスライス(連続部分)の符号化ユニットに適用可能である。
方法1700は、ステップ1760から、他のパラメータ復号ステップ1770へと続く。ステップ1770において、エントロピー復号器420は、例えば、デブロッキング、適応ループフィルタのような特定のツールの制御、(変換ブロックへの量子化パラメータの不均一な適用のための)以前にシグナリングされたものからのスケーリングリストの任意の選択的な選択のために必要なもののような、スライスヘッダ1118からの他のパラメータを復号する。方法1700は、ステップ1770の実行により終了する。
図18は、ビットストリームから符号化ユニットを復号するための方法1800を示す。方法1800は、構成されたFPGA、ASIC、又はASSPのような装置によって実装されてもよい。さらに、方法1800は、プロセッサ205の実行下で、ビデオ復号器134によって実行されてもよい。このように、方法1800は、コンピュータ読み取り可能な記憶媒体及び/又はメモリ206に格納されてもよい。
方法1800は、現在のCTUの現在の符号化ユニット(例えば、スライス1116のCTU0)に対して実装される。方法1800は、予測モード復号ステップ1810で開始する。ステップ1800において、エントロピー復号器420は、図13のステップ1360で決定された、符号化ユニットの予測モードを、ビットストリーム133から復号する。符号化ユニットについてのイントラ予測、インター予測、又は他の予測モードの使用を区別するために、ステップ1810で「pred_mode」シンタックス要素が復号される。
符号化ユニットにイントラ予測が使用されている場合、ステップ1810で、ルマイントラ予測モードとクロマイントラ予測モードも復号される。符号化ユニットにインター予測が使用される場合、この符号化ユニットで使用するために隣接する符号化ユニットからの動きベクトルを決定するためにステップ1810で「マージインデックス」も復号されてもよく、空間的に隣接するブロックから導出される動きベクトルに対するオフセットを導入するために動きベクトルデルタが復号されてもよい。符号化ユニットのルマTBについて、水平及び垂直のDCT-2の使用、水平及び垂直の変換スキップ、又は水平及び垂直のDCT-8とDST-7の組み合わせ、の間で選択するために、一次変換タイプもステップ1810で復号される。
方法1800は、ステップ1810から符号化残差テストステップ1820へと続く。ステップ1820の実行において、プロセッサ205は、エントロピー復号器420を使用して符号化ユニットについての「ルート符号化ブロックフラグ」を復号することによって、符号化ユニットについての残差を復号する必要があるかどうかを決定する。符号化ユニットについて復号される有意な残差係数が存在する場合(ステップ1820で「YES」)、プロセッサ205における制御は、新しいQGテストステップ1830に進む。そうではなく、復号される残差係数が存在しない場合(ステップ1820で「NO」)、符号化ユニットを復号するために必要な全ての情報がビットストリーム115で得られているため、方法1800は終了する。方法1800が終了時すると、PB生成、インループフィルタリングの適用などの後続のステップが実行され、図4を参照して説明したように、復号されたサンプルが生成される。
新しいQGテストステップ1830において、プロセッサ205は、符号化ユニットが新しい量子化グループに対応するかどうかを決定する。符号化ユニットが新しい量子化グループに対応する場合(ステップ1830で「YES」)、プロセッサ205における制御は、デルタQP復号ステップ1840に進む。そうではなく、符号化ユニットが新しい量子化グループに対応していない場合(ステップ1830で「NO」)、プロセッサ205における制御は、最終位置復号ステップ8150に進む。新しい量子化グループは、現在のモード又は符号化ユニットの細分化レベルに関連する。各符号化ユニットを復号する際、CTUの符号化ツリーのノードがトラバースされる。現在のノードの子ノードのいずれかが、すなわち「cu_qp_delta_subdiv」から決定されるような、現在のスライスの細分化レベル1136以下の細分化レベルを有するとき、そのノードに対応するCTUのエリアで新たな量子化グループが開始する。符号化された残差係数を含む量子化グループの最初のCUは、符号化されたデルタQPも含み、この量子化グループの残差係数に適用可能な量子化パラメータへのあらゆる変更をシグナリングするだろう。実際には、各エリア(量子化グループ)について、単一の(多くても1つの)量子化パラメータデルタが復号される。図8A~図8Cに関連して説明したように、各エリア(量子化グループ)は、各スライスの符号化ツリーユニットの分解及び(例えば、ステップ1460及び1470で符号化されたような)対応する細分化レベルに基づいている。言い換えれば、各エリア又は量子化グループは、符号化ユニットに関連する細分化レベルの、対応する連続部分について決定された細分化レベルに対する比較に基づいている。
デルタQP復号ステップ1840において、エントロピー復号器420は、ビットストリーム133からデルタQPを復号する。デルタQPは、予測されたQPと、現在の量子化グループで使用することが意図されたQPとの間の差分を符号化する。予測されたQPは、隣接する(上と左の)量子化グループのQPを平均化することによって得られる。
方法1800は、ステップ1840から、最終位置復号ステップ1850へと続く。ステップ1850の実行において、エントロピー復号器420は、ビットストリーム133から、現在の変換ブロックについての二次変換係数424における最終有意係数位置を復号する。ステップ1850の最初の呼び出しでは、ステップはルマTBについて実行される。現在のCUに対するステップ1850のその後の呼び出しでは、ステップはCb TBについて実行される。最終位置が、ルマブロック又はクロマブロックについての二次変換係数セットの外側(すなわち928又は966の外側)の有意な係数を示す場合、ルマチャネル又はクロマチャネルについてのそれぞれの二次変換インデックスは、ゼロであると推測される。このステップは、Cr TBに対しては、Cbに対するものの後の繰り返しにおいて行われる。
図15のステップ1590に関連して説明したように、いくつかの構成では、二次変換インデックスは、符号化ユニットの最終有意係数位置の直後に符号化される。同じ符号化ユニットを復号する際に、ステップ1840で復号されたTBについての最終位置の位置に基づいて二次変換インデックス470がゼロであると推測されなかった場合、二次変換インデックス470は、符号化ユニットの最終有意残差係数位置を復号した直後に復号される。二次変換インデックス470が符号化ユニットの最終有意係数位置の直後に復号される構成において、方法1800では、ステップ1850からLFNSTインデックス復号ステップ1860に続く。ステップ1860の実行において、エントロピー復号器420は、全ての有意な係数が逆二次変換を受ける場合(例えば928又は966内)、トランケーテッドユナリーコードワードを使用して、ビットストリーム133から二次変換インデックス470を「lfnst_index」として復号する。二次変換インデックス470は、ルマTBについて、又は、単一の変換ブロックを用いたクロマTBについてのジョイント符号化が実行されるときにクロマについて、復号することができる。方法1800は、ステップ1860からサブブロック復号ステップ1870へと続く。
符号化ユニットの最終有意位置の直後に二次変換インデックス470が復号されない場合、方法1800は、ステップ1850からサブブロック復号ステップ187へと続く0。ステップ1870では、現在の変換ブロックの残差係数、すなわち424が、最終有意係数位置を含むサブブロックからDC残差係数を含むサブブロックに戻るように進行する一連のサブブロックとして、ビットストリーム133から復号される。
方法1800は、ステップ1870から最後のTBテストステップ1880に続く。ステップ1880の実行において、プロセッサ205は、現在の変換ブロックがカラーチャネル、すなわちY、Cb、及びCrにわたる進行における最後の変換ブロックであるかどうかをテストする。ちょうど復号された(現在の)変換ブロックがCr TBについてのものである場合、プロセッサ205における制御は、全てのTBが復号され(ステップ1880で「YES」)、方法1800はルマLFNSTインデックス復号ステップ1890に進む。そうではなく、TBが復号されていない場合(ステップ1880で「NO」)、プロセッサ205内の制御は、最終位置復号ステップ1850に戻る。次のTB(Y、Cb、Crの順に続く)が、ステップ1850の繰り返しにおいて復号のために選択される。
方法1800は、ステップ1880から、ルマLFNSTインデックス復号ステップ1890へと続く。ステップ1890の実行において、ルマTBの最終位置が逆二次変換の対象となる係数のセット(例えば928又は966)内にあり、ルマTBが一次変換としてDCT-2を水平及び垂直に使用している場合、ルマTBに適用される二次変換インデックス470は、エントロピー復号器420によってビットストリーム133から復号される。ルマTBの最終有意位置が、逆二次変換の対象となる係数のセットの外側(例えば、928又は966の外側)にある有意な一次係数の存在を示す場合、ルマ二次変換インデックスはゼロ(二次変換が適用されない)であると推測される。ステップ1890で復号された二次変換インデックスは、図12では1220(ジョイントCbCrモードでは1230)と示されている。
方法1800は、ステップ1890からクロマLFNSTインデックス復号ステップ1895へと続く。ステップ1895では、各クロマTBについての最終位置が逆二次変換の対象となる係数のセット(例えば、928又は966)内にある場合、エントロピー復号器420によって、クロマTBに適用される二次変換インデックス470がビットストリーム133から復号される。いずれかのクロマTBの最終有意位置が、逆二次変換の対象となる係数のセットの外側(例えば、928又は966の外側)にある有意な一次係数の存在を示す場合、クロマ二次変換インデックスは、ゼロ(二次変換が適用されない)であると推測される。ステップ1895で復号された二次変換インデックスは、図12では1221(ジョイントCbCrモードでは1230)と示されている。輝度と彩度の別々のインデックスを復号する際には、各切り捨てられたユナリーコードワードのための別々の算術コンテキストが使用されるか、又は、輝度と彩度の切り捨てられたユナリーコードワードのそれぞれのn番目のビンが同じコンテキストを共有するように、コンテキストが共有されてもよい。
実質的に、ステップ1890及び1895は、ルマ(プライマリカラー)チャネルについてのカーネルを選択するための第1のインデックス(1220など)、及び少なくとも1つのクロマ(セカンダリカラー)チャネルについてのカーネルを選択するための第2のインデックス(1221など)を、それぞれ復号することに関連する。
方法1800は、ステップ1895から逆二次変換を行うステップ18100に続く。ステップでは、逆二次変換モジュール436は、二次変換係数432を生成するために、復号された残差変換係数424に対して、現在の変換ブロックについての二次変換インデックス470に従って逆二次変換を実行する。ステップ1890で復号された二次変換インデックスは、ルマTBに適用され、ステップ1895で復号された二次変換インデックスは、クロマTBに適用される。ルマ及びクロマについてのカーネル選択は、ルマイントラ予測モード及びクロマイントラ予測モードのそれぞれ(それぞれ、ステップ1810で復号された)にも依存する。ステップ18100では、ルマ用のLFNSTインデックスに応じたカーネルと、クロマ用のLFNSTインデックスに応じたカーネルを選択する。
方法1800は、ステップ18100から一次変換係数逆量子化ステップ18110へと続く。ステップ18110において、逆量子化モジュール428は、逆量子化された一次変換係数440を生成するために、量子化パラメータ474に従って二次変換係数432を逆量子化する。ステップ1840でデルタQPが復号された場合、エントロピー復号器420は、量子化グループ(エリア)についてのデルタQPと、画像フレームの先行する符号化ユニットの量子化パラメータとに従って、量子化パラメータを決定する。本明細書で前に説明したように、先行する符号化ユニットは、典型的には、隣り合う上-左の符号化ユニットに関する。
方法1800は、ステップ1870から、一次変換実行ステップ18120へと続く。ステップ1820において、逆一次変換モジュール444は、符号化ユニットの一次変換タイプに従って逆一次変換を実行し、その結果、変換係数440は、空間ドメインの残差サンプル448に変換される。逆一次変換は、各カラーチャネルに対して実行され、まず、ルマチャネル(Y)に対して実行され、次に、現在のTUについてのステップ1650のその後の呼び出し時に、Cb及びCr TBに対して実行される。ステップ18100から18120は、ステップ1890でルマについてのLFNSTインデックスに従って選択されたカーネルを、ルマチャネルの復号された残差係数に適用し、ステップ1890でクロマについてのLFNSTインデックスに従って選択されたカーネルを、少なくとも1つのクロマチャネルの復号された残差係数に適用することによって、現在の符号化ユニットを復号するように実質的に動作する。
方法1800は、ステップ18120を実行すると終了し、プロセッサ205における制御は方法1600に戻る。
ステップ1850から18120は、予測モードがイントラ予測であり、変換がDCT-2である共有符号化ツリー構造の例に関連して説明される。例えば、ルマTBに適用される二次変換インデックスは、イントラ予測及び共有符号化ツリー構造を使用する符号化ユニットについてのみ、ビットストリーム(1890)から復号される。同様に、クロマTBに適用される二次変換インデックスは、イントラ予測及び共有符号化ツリー構造を使用する符号化ユニットについてのみ、ビットストリーム(1895)から復号される。サブブロックの復号(1870)、一次変換係数の逆量子化(18110)、及び一次変換の実行などのステップの動作は、既知の方法を用いて、共有符号化ツリー構造以外のインター予測モード又はイントラ予測モードについて実装することができる。ステップ1810から1840は、予測モード又は構造に関係なく、説明した方法で実行される。
方法1800が終了すると、モジュール476によるイントラ予測サンプル480の生成、モジュール450による予測ブロック452と復号された残差サンプル448との合計、及びフィルタリングされたサンプル492を生成するためのインループフィルタモジュール488の適用を含む、符号化ユニットを復号するための後続のステップが実行され、フレームデータ135として出力される。
図19A及び図19Bは、二次変換をルマチャネル及びクロマチャネルに適用し又はバイパスするための規則を示す。図19Aは、共有符号化ツリーから得られるCUにおいて、ルマチャネルとクロマチャネルにおいて二次変換を適用するための条件を例示するテーブル1900を示す。
ルマTBの最終有意係数位置が、順方向二次変換の結果として得られるものではない、したがって逆二次変換の対象ではない復号された有意な係数を示す場合、条件1901が存在する。ルマTBの最終有意係数位置が、順方向二次変換の結果として得られた、したがって逆二次変換の対象となる復号された有意な係数を示す場合、条件1902が存在する。さらに、ルマチャネルについては、条件1902が存在するためには一次変換タイプがDCT-2である必要があり、そうでなければ条件1901が存在する。
1つ又は2つのクロマTBの最終有意係数位置が、順方向の二次変換の結果として得られるものではない、したがって逆二次変換の対象ではない復号された有意な係数を示す場合、条件1910が存在する。また、1つ又は2つのクロマTBの最終有意係数位置が、順方向二次変換の結果として得られた、したがって逆二次変換の対象となる復号された有意な係数を示す場合、条件1911が存在する。さらに、条件1911が存在するためには、クロマブロックの幅及び高さが少なくとも4サンプルである必要がある(例えば、4:2:0又は4:2:2のクロマフォーマットが使用されるときのクロマサブサンプリングによれば幅又は高さが2サンプルになる可能性がある)。
条件1901及び1910が存在する場合、二次変換インデックスは(独立して又は共同で)シグナリングされず、ルマ又はクロマにおいて適用されない、すなわち1920である。条件1901及び1911が存在する場合、1つの二次変換インデックスが、ルマチャネルのみについて選択されたカーネルの適用又はバイパスを示すためにシグナリングされる、すなわち1921である。条件1902及び1910が存在する場合、1つの二次変換インデックスが、選択されたカーネルの適用又はクロマチャネルのみのバイパス処理(すなわち1922)を示すようにシグナリングされる。条件1911及び1902が存在する場合、独立したシグナリングを持つ構成は2つの二次変換インデックスをシグナリングし、1つはルマTBについてのものであり、もう1つはクロマTBについてのものである、すなわち1923である。条件1902及び1911が存在する場合に、単一のシグナリングされた二次変換インデックスを用いる構成は、ルマ及びクロマについての選択を制御するために1つのインデックスを用いるが、選択されるカーネルは、異なるかもしれないルマ及びクロマのイントラ予測モードにも依存する。ルマとクロマのいずれか(すなわち1921と1922)に二次変換を適用する能力は、符号化効率の獲得につながる。
図19Bは、ステップ1360でビデオ符号化器114に利用可能な検索オプションのテーブル1950を示す。ルマ(1952)及びクロマ(1953)についての二次変換インデックスは、それぞれ1952及び1953として示されている。インデックス値0は、二次変換がバイパスされることを示し、インデックス値1及び2は、ルマ又はクロマのイントラ予測モードから得られる候補セットについての2つのカーネルのうちどちらが使用されるかを示す。その結果得られる9つの組み合わせの検索空間が存在し(「0,0」~「2,2」)、これは、図19Aを参照して説明した制約に従って制約されるかもしれない。全ての許容可能な組み合わせを検索することと比較して、3つの組み合わせの簡略化された検索(1951)では、一次のみの係数が存在することを最終有意係数位置が示すチャネルについてインデックスをゼロにすることを条件に、ルマ及びクロマの二次変換インデックスが同じとなる組み合わせだけをテストしてもよい。例えば、条件1921が存在する場合、選択肢「1,1」及び「2,2」はそれぞれ「0,1」及び「0,2」になる(すなわち1954)。条件1922が存在する場合、選択肢「1,1」及び「2,2」はそれぞれ「1,0」及び「2,0」になる(すなわち1955)。条件1920が存在する場合、二次変換インデックスをシグナリングする必要はなく、選択肢「0,0」が使用される。実質的に、条件1921及び1922は、共有ツリーCUにおいて選択肢「0,1」、「0,2」、及び「1,0」、「2,0」を許容し、結果として高い圧縮効率につながる。仮にこれらの選択肢を禁止した場合、条件1901又は1910のいずれかでは、条件1920、つまり選択肢「1,1」及び「2,2」が禁止されることになり、「0,0」が使用されることになる(1956を参照)。
スライスヘッダにおいて量子化グループの細分化レベルをシグナリングすることで、ピクチャレベルの下でのより高い粒度での制御が可能になる。制御の粒度が高いことは、符号化の忠実度の要件が画像の部分ごとに変化するような、及び特にリアルタイムの処理能力を提供するために複数の符号化がある程度独立して動作する必要があるかもしれないような応用例にとって有利である。スライスヘッダにおいて量子化グループの細分化レベルをシグナリングすることは、スライスヘッダでパーティション上書き設定及びスケーリングリスト適用設定をシグナリングすることも整合している。
ビデオ符号化器114及びビデオ復号器134の1つの構成では、クロマイントラ予測ブロックについての二次変換インデックスは常にゼロに設定され、すなわち、クロマイントラ予測ブロックについて二次変換は適用されない。この場合、クロマ二次変換インデックスをシグナリングする必要はなく、したがってステップ15130及び1895を省略してもよく、それに応じてステップ1360、1570、及び18100が簡略化される。
共有ツリーにおける符号化ツリーのノードが64個のルマサンプルのエリアを持っている場合、二分ツリー又は四分ツリー分割でさらに分割すると、4×4ブロックなどのより小さなルマCBが生じるが、より小さなクロマCBは生じないだろう。その代わりに、4×4クロマCBなど、64個のルマサンプルのエリアに対応するサイズの単一のクロマCBが存在する。同様に、128個のルマサンプルのエリアを持つ符号化ツリーノードが三分割を受けると、より小さなルマCBと1つのクロマCBの集合が生じる。各ルマCBは、対応するルマ二次変換インデックスを有し、クロマCBはクロマ二次変換インデックスを有する。
符号化ツリーのノードが64の面積を持ちさらなる分割がシグナリングされた場合、又は128のルマサンプルの面積を持ち三分割がシグナリングされた場合、分割はルマチャネルのみに適用され、結果として得られるCB(複数のルマCB及び各クロマチャネルについて1つのクロマCB)は、全てイントラ予測されるか又は全てインター予測される。CUが4ルマサンプルの幅又は高さを持ち、カラーチャネル(Y、CB、及びCr)のそれぞれについて1つのCBを含む場合、CUのクロマCBは2サンプルの幅又は高さを持つ。幅又は高さが2サンプルのCBは、16ポイント又は48ポイントのLFNSTカーネルでは動作しないため、二次変換を必要としない。幅又は高さが2サンプルのブロックについては、ステップ15130、1895、1360、1570、及び18100を実行する必要はない。
ビデオ符号化器114及びビデオ復号器134の別の構成では、ルマ及びクロマのいずれか又は両方が、一次変換のみの対象となるそれぞれのTBの領域に有意でない残差係数のみを含む場合、単一の二次変換インデックスがシグナリングされる。ルマTBが、復号された残差の非二次変換領域(例えば1066、968)に有意な残差係数を含む場合、又は一次変換としてDCT-2を使用しないことが指示された場合、指示された二次変換カーネル(又は二次変換バイパス)はクロマTBのみに適用される。いずれかのクロマTBが、復号された残差の非二次変換領域に有意な残差係数を含む場合、指示された二次変換カーネル(又は二次変換バイパス)はルマTBのみに適用される。クロマTBについては不可能である場合にも二次変換の適用がルマTBに対しては可能になり、及びこの反対も成り立ち、CUの任意のTBを二次変換の対象とできるようになる前に全てのTBの最終位置が二次係数ドメイン内にあることを要求する場合と比較して、符号化効率の向上が得られる。さらに、共有符号化ツリーのCUについて必要な二次変換インデックスは1つだけである。ルマの一次変換がDCT-2である場合、二次変換はルマと同様にクロマについて無効であると推測されてもよい。
ビデオ符号化器114及びビデオ復号器134の別の構成では、二次変換は、(それぞれモジュール330及び436によって)CUのルマTBのみに適用され、CUのいかなるクロマTBにも適用されない。クロマチャネルについての二次変換論理が存在しないことは、例えば少ない実行時間又はシリコン面積の減少など、複雑さの低減をもたらす。クロマチャネルについての二次変換論理が存在しないことは、1つの二次変換インデックスをシグナリングする必要だけがあるという結果になり、これはルマTBの最終位置の後にシグナリングされてもよい。すなわち、ステップ15120及び1890の代わりに、ステップ1590及び1860がルマTBについて実行される。ステップ15130及び1895は、この場合には省略される。
ビデオ符号化器114及びビデオ復号器134の別の構成では、量子化グループサイズを定義するシンタックス要素(すなわち、cu_chroma_qp_offset_subdiv及びcu_qp_delta_subdiv)は、PPS1112においてシグナリングされる。スライスヘッダ1118においてパーティション制約が上書きされても、SPS1110でシグナリングされたパーティション制約に応じて、細分化レベルの値の範囲が定義される。例えば、cu_qp_delta_subdiv及びcu_chroma_qp_offset_subdivの範囲は、0~2×(log2_ctu_size_minus5 + 5 - (MinQtLog2SizeInterY or MinQtLog2SizeIntraY) + MaxMttDepthY_SPSと定義される。値MaxMttDepthYは、SPS1110から導出される。すなわち、MaxMttDepthYは、現在のスライスがIスライスである場合には、sps_max_mtt_hierarchy_depth_intra_slice_lumaと等しくなるように設定され、現在のスライスがPスライス又はBスライスである場合には、sps_max_mtt_hierarchy_depth_inter_sliceに等しくなるように設定される。SPS1110でシグナリングされた深度よりも浅くなるようにパーティション制約が上書きされたスライスについては、PPS1112から決定された量子化グループ細分化レベルが、スライスヘッダから決定されたより浅い符号化ツリー深度の下で達成可能な最も高い細分化レベルよりも高い(深い)場合、そのスライスについての量子化グループ細分化レベルは、そのスライスについて達成可能な最も高い細分化レベルと等しくなるようにクリップされる。例えば、あるスライスについてのcu_qp_delta_subdiv及びcu_chroma_qp_offset_subdivは、0~2×(log2_ctu_size_minus5 + 5 - (MinQtLog2SizeInterY or MinQtLog2SizeIntraY) + MaxMttDepthY_slice_header)の内に入るようにクリップされ、このクリップされた値がこのスライスに使用される。値MaxMttDepthY_slice_headerは、スライスヘッダ1118から導出され、すなわち、MaxMttDepthY_slice_headerは、slice_max_mtt_hierarchy_depth_lumaと等しくなるように設定される。
ビデオ符号化器114及びビデオ復号器134のさらに別の構成では、ルマ及びクロマの細分化レベルを導出するために、細分化レベルはPPS1112から復号されたcu_chroma_qp_offset_subdiv及びcu_qp_delta_subdivから決定される。スライスヘッダ1118から復号されたパーティション制約が、スライスについての細分化レベルの異なる範囲につながる場合、スライスに適用される細分化レベルは、SPS1110から復号されたパーティション制約に従って、最も深い許容細分化レベルに対して同じオフセットを維持するように調整される。例えば、SPS1110が最大細分化レベル4を示し、PPS1112が細分化レベル3を示し、スライスヘッダ1118が最大値を3に減らす場合、スライス内に適用される細分化レベルは2に設定される(最大許容細分化レベルに対して1のオフセットを維持する。特定のスライスについてのパーティション制約の変化に対応して量子化グループのエリアを調整することは、スライスレベルのパーティション制約の変化に適応した粒度を与えながら、細分化レベルのシグナリングをより少ない頻度(すなわちPPSレベル)で行うことを可能にする。SPS1110から復号されたパーティショニング制約に従って定義された範囲を使用して、スライスヘッダ1118から復号された上書きされたパーティショニング制約に基づいて後で調整することが可能なように、細分化レベルがPPS1112でシグナリングされる構成は、スライスヘッダ1118で確定されたパーティショニング制約に依存するPPSシンタックス要素を持つという解析依存請の問題を回避する。