添付の図面のいずれか1つ又は複数において、工程及び/又は特徴へと参照が行われ、それらが同じ参照番号を有する場合、これらの工程及び/又は特徴は、その反対の意図が現れない限り、本説明の目的のために、同じ機能又は操作を有する。
レート制御ビデオエンコーダは、ブロック分割制約に適した粒度で量子化パラメータを調整する柔軟性を必要とする。ブロック分割制約は例えば、複数のビデオエンコーダが各フレームを圧縮するために並列に動作する場合、フレームの一部と別の部分とで異なってもよい。量子化パラメータ調整が必要とされるエリアの粒度は、それに応じて異なる。さらに、第2変換の潜在的適用を含む、適用された変換選択の制御が、変換されている残差が生成された予測信号の範囲内で適用される。特に、イントラ予測の場合、異なるイントラ予測モードを使用することができるので、別個のモードが、輝度ブロック及び彩度ブロックのために利用可能である。
ビデオのいくつかのセクションは他のセクションよりもレンダリングされたビューポートの忠実度に大きく寄与し、ブロック構造及び量子化パラメータの分散値において、より大きなビットレート及びより大きな柔軟性を割り当てることができる。レンダリングされたビューポートの忠実度にほとんど寄与しないセクション、例えばレンダリングされたビューの側又は後ろのセクションは、符号化の労力を低減するためより単純なブロック構造で、量子化パラメータの制御における柔軟性をより少なくして圧縮されてもよい。一般に、より低いビットレートに対して変換係数をより粗く量子化するために、より大きな値が選択される。さらに、変換選択の適用は、変換選択のために輝度及び彩度を連帯的に考慮する必要性を回避することによって、符号化処理をさらに単純化するために、輝度チャネルと彩度チャネルとの間で独立であってもよい。特に、輝度と彩度とについてのイントラ予測モードを別々に考慮した後、第2変換選択のための輝度と彩度とを連帯的に考慮する必要性が回避される。
図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は、符号化されたビデオデータ(又は「符号化されたビデオ情報」)として通信チャネル120を介して送信部116によって送信される。ビットストリーム115は、後に通信チャネル120を介して送信されるまで、又は通信チャネル120を介して送信される代わりに、「フラッシュ」メモリやハードディスクドライブなどの一時的でない記憶装置122に記憶されることも可能である。例えば、符号化されたビデオデータは、ビデオストリーミングアプリケーションのためのワイドエリアネットワーク(WAN)を介して顧客に要求に応じて供給され得る。
宛先装置130は、受信部132と、ビデオデコーダ134と、表示装置136とを含む。受信部132は、通信チャネル120から符号化されたビデオデータを受信し、受信されたビデオデータをビットストリームとしてビデオデコーダ134に渡す(矢印133によって示される)。その後、ビデオデコーダ134は、復号したフレームデータ(矢印135で示す)を表示装置136に出力する。復号されたフレームデータ135は、フレームデータ113と同じ彩度フォーマットを有する。表示装置136の例には、陰極線管、スマートフォン、タブレットコンピュータ、コンピュータモニタ、又はスタンドアロンテレビセットなどの液晶ディスプレイが含まれる。また、ソース装置110及び宛先装置130の各々の機能性が単一の装置で実現されることも可能であり、その例は、移動電話ハンドセット及びタブレットコンピュータを含む。復号されたフレームデータは、利用者への提示の前にさらに変換されてもよい。例えば、特定の緯度及び経度を有する「ビューポート」は、投影形式を使用して復号されたフレームデータからレンダリングされ、場面の360°視点を表すことができる。
上記の例示的な装置にもかかわらず、ソース装置110及び宛先装置130のそれぞれは、一般にハードウェア及びソフトウェア構成要素の組合せを介して、汎用コンピューティングシステム内で構成され得る。図2Aは、コンピュータモジュール201と、キーボード202、マウスポインタ装置203、スキャナ226、ビデオソース112として構成することができるカメラ227、及びマイクロフォン280などの入力装置と、プリンタ215、ディスプレイ装置136として構成することができるディスプレイ装置214、及びスピーカ217を含む出力装置とを含む、そのようなコンピュータシステム200を示す。外部変復調器(モデム)トランシーバ装置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は、コンピュータモジュール201内、例えば、インターフェース208内に組み込まれてもよい。コンピュータモジュール201はまた、ローカルネットワークインターフェース211を有し、これは、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222へのコネクション223を介して、コンピュータシステム200の結合を可能にする。図2Aに示すように、ローカル通信ネットワーク222は、典型的には、いわゆる「ファイアウォール」装置又は同様の機能の装置を含むコネクション224を介してワイドネットワーク220に結合することもできる。ローカルネットワークインターフェース211は、イーサネット(登録商標)回路カード、ブルートゥース(登録商標)無線構成、又はIEEE802.11無線構成を備えていてもよいが、しかしながら、インターフェース211のために多数の他のタイプのインターフェースが実行されてもよい。ローカルネットワークインターフェース211はまた、送信部116の機能を提供することができ、受信部132及び通信チャネル120はまた、ローカル通信ネットワーク222に具現化されてもよい。
I/Oインターフェース208及び213は、シリアル及びパラレル接続のいずれか又は両方を提供することができ、前者は、通常は、ユニバーサルシリアルバス(USB)規格に従って実装され、対応するUSBコネクタ(図示せず)を有する。記憶デバイス209が提供され、通常はハードディスクドライブ(HDD)210を含む。フロッピーディスクドライブ及び磁気テープドライブ(図示せず)などのような他の記憶デバイスも使用されることができる。光ディスクドライブ212は、通常は、データの不揮発性ソースとして機能するように提供される。このような光ディスク(例えば、CD-ROM、DVD、ブルーレイディスク(登録商標))、USB-RAM、ポータブル、外部ハードドライブ、及びフロッピーディスクのような携帯型メモリデバイスは、コンピュータシステム200への適切なデータソースとして使用されてもよい。典型的にはHDD210、光ドライブ212、ネットワーク220及び222のいずれかは、ビデオソース112として、又はディスプレイ214を介して再生するために記憶されるべき復号されたビデオデータのための宛先として動作するように構成されてもよい。システム100のソース装置110及び宛先装置130は、コンピュータシステム200において具現化されてもよい。
コンピュータモジュール201の構成要素205~213は、通常は、相互接続されたバス204を介して、当業者に知られているコンピュータシステム200の従来の演算モードをもたらす手法で通信する。例えば、プロセッサ205は、接続218を使用してシステムバス204に結合される。同様に、メモリ206及び光ディスクドライブ212は、接続219によってシステムバス204に結合される。説明された構成が実施されることのできるコンピュータの例は、IBM-PC及び互換機、SunSPARKステーション、Apple Mac(商標)又は同様のコンピュータシステムを含む。
必要に応じて、ビデオエンコーダ114及びビデオデコーダ134、並びに以下に説明する方法は、コンピュータシステム200を使用して実施されてもよい。特に、ビデオエンコーダ114及びビデオデコーダ134、並びに下記に説明される方法は、コンピュータシステム200内で実行可能な1つ以上のソフトウェアアプリケーションプログラム233としてされてもよい。特に、ビデオエンコーダ114及びビデオデコーダ134、並びに説明される方法の工程はコンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって実行される。ソフトウェア命令231は、それぞれが1つ又は複数の特定のタスクを実行するための1つ又は複数のコードモジュールとして形成されてもよい。ソフトウェアはまた、2つの別個の部分に分割されてもよく、そこでは、第一の部分及び対応するコードモジュールは説明された方法を実行し、第二の部分及び対応するコードモジュールは第一の部分とユーザとの間のユーザインターフェースを管理する。
ソフトウェアは例えば、以下に説明する記憶装置を含むコンピュータ可読媒体に記憶することができる。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200に読み込まれ、次いで、コンピュータシステム200によって実行される。そのようなソフトウェア又はコンピュータ可読媒体に記録されたコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、好ましくは、ビデオエンコーダ114、ビデオデコーダ134、及び説明した方法を実施するための有利な装置をもたらす。
ソフトウェア233は、典型的にはHDD210又はメモリ206に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200に読み込まれ、次いで、コンピュータシステム200によって実行される。したがって、例えば、ソフトウェア233は、光ディスクドライブ212によって読み取られる光学的に可読ディスク記憶媒体(例えば、CD-ROM)225に格納されてもよい。
いくつかの場合では、アプリケーションプログラム233は、1つ又は複数のCD-ROM225上で符号化されてユーザに供給され、及び対応するドライブ212を介して読み取られてもよく、又は、ネットワーク220又は222からユーザによって読み取られてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム200に読み込まれることもできる。コンピュータ可読記憶媒体は、実行及び/又は処理のために、記録された指示及び/又はデータをコンピュータシステム200に提供する任意の非一時的有形記憶媒体を指す。そのような記憶媒体の例には、そのようなデバイスがコンピュータモジュール201の内蔵又は外付けであるか否かに関わらず、フロッピーディスク、磁気テープ、CD-ROM、DVD、ブルーレイ(商標)ディスク、ハードディスクドライブ、ROM若しくは集積回路、USBメモリ、光磁気ディスク、又はPCMCIAカードなどのコンピュータ可読カード等が含まれる。ソフトウェア、アプリケーションプログラム、命令、及び/又はビデオデータ若しくは符号化ビデオデータのコンピュータモジュール401への提供にも関与し得る一時的又は非有形のコンピュータ可読伝送媒体の例には、別のコンピュータ又はネットワーク化されたデバイスへのネットワーク接続と同じく無線又は赤外線伝送チャネルを含み、並びに電子メール伝送及びウェブサイト等に記録された情報を含むインターネット又はイントラネットを含む。
アプリケーションプログラム233の第二の部分及び上述の対応するコードモジュールは、表示部214上にレンダリングされるか、又は他の方法で表される1つ又は複数のグラフィカルユーザインターフェース(GUI)を実装するために実行されることができる。通常、キーボード202及びマウス203の操作を通じて、コンピュータシステム200及びアプリケーションのユーザは、GUIに関連付けられたアプリケーションに制御コマンド及び/又は入力を提供するために、機能的に適応可能な手法でインターフェースを操作してもよい。スピーカ217を介して出力されるスピーチプロンプト及びマイクロフォン280を介して入力されるユーザ音声コマンドを利用するオーディオインターフェースなど、機能的に適応可能なユーザインターフェースの他の形態も実装されてもよい。
図2Bは、プロセッサ205及び「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータモジュール201によってアクセスされ得る全てのメモリモジュール(HDD809及び半導体メモリ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を介して実行させる。これにより、オペレーティングシステム253がRAMメモリ206に読み込まれ、そこでオペレーティングシステム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、及び説明した方法は、メモリ234内の対応するメモリ場所255、256、257に格納された入力変数254を使用してもよい。ビデオエンコーダ114、ビデオデコーダ134、及び説明した方法は出力変数261を生成し、これらは、対応するメモリ場所262、263、264内のメモリ234に格納される。中間変数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に示すような、プロセッサ205によってその実行中に制御されるソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールなど、コンピュータシステム200内で実行可能なソフトウェアによって、コンピュータシステム200内の専用ハードウェアによって様々な機能モジュールが実装され得る、汎用コンピュータシステム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にさらに分割する。その輝度チャネルは、第1色チャネルとも呼ばれる。各彩度チャネルは、第2色チャネルとも呼ばれる。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のコーディングツリーが、64×64レベルより下で、1つは輝度のための、もう1つは彩度のための、2つの別個のコーディングツリーに分岐することができる。別々のツリーの使用は、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)、すなわち、変換ブロック(TB)と組み合わせた予測ブロック(PB)は、関連付けられたコーディングコスト(又は「レート」)及び関連付けられた差(又は「歪み」)を有する。このCBの歪みは、典型的には絶対差の和(SAD)又は二乗差の和(SSD)などのサンプル値の差として推定される。各候補PBから得られる推定値は、予測モード387を決定するために差324を使用してモードセレクタ386によって決定されてもよい。予測モード387は、現在のCBについての特定の予測モード、例えば、フレーム内予測又はフレーム間予測を使用する決定を示す。各候補予測モード、及び対応する残差コーディングに関連付けられたコーディングコストの推定は、残差のエントロピーコーディングよりもかなり低いコストで実行できる。従って、リアルタイムビデオエンコーダにおいてさえもレート歪み検知における最適モードを決定するために、多数の候補モードを評価することができる。
レート歪みに関する最適モードを決定することは、典型的にはラグランジュ最適化の変動を使用して達成される。
CTUのCBへの最適分割(ブロックパーティショナー310による)と、複数の可能性からの最良予測モードの選択との両方を選択するために、ラグランジュ又は類似の最適化処理を採用することができる。モード選択モジュール386における候補モードのラグランジュ最適化処理の適用を通して、最低コスト測定を有するイントラ予測モードが「最良」モードとして選択される。この最低コストモードは、選択された第2変換インデックス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つの可能な値(すなわちフラグ)を持つ構文要素に対しては、単一のビンで十分である。可能な値を多く有する構文要素については、ビンのシーケンスが必要である。
シーケンス中の後のビンの存在は、シーケンス中の前のビンの値に基づいて決定されてもよい。さらに、各ビンは、2つ以上のコンテキストに関連付けられてもよい。特定のコンテキストの選択は、構文要素の前のビン、隣接する構文要素のビン値(すなわち、隣接するブロックからのもの)などに依存し得る。コンテキストコーディングビンが符号化されるたびに、そのビンに対して選択されたコンテキストは、(もしあれば)新しいビン値を反映する手法で更新される。このように、バイナリ算術符号化方式は適応型であると言われている。
また、ビデオエンコーダ114によってサポートされるのは、コンテキストを欠くビン(「バイパスビン」)である。バイパスビンは、「0」と「1」との間の等確率分布を仮定してコーディングされる。したがって、各ビンは、ビットストリーム115内の1ビットのコーディングコストを有する。コンテキストがないと、メモリが節約され、複雑さが軽減される。したがって、特定のビンの値の分布が偏っていない場合は、バイパスビンが使用される。コンテキスト及び適応を使用するエントロピーコーダの一例は、CABAC(コンテキスト適応バイナリ算術コーダ)として当技術分野で知られており、このコーダの多くの変形がビデオコーディングに使用されている。
エントロピーエンコーダ338は、コンテキストコーディングビンとバイパスコーディングビンとの組合せを使用して、量子化パラメータ392を符号化し、現在のCBのために使用されている場合には、LFNSTインデックス388を符号化する。量子化パラメータ392は、「デルタQP」を使用して符号化される。このデルタQPは、「量子化グループ」として知られている各エリアにおいて、最大で一度シグナリングされる。量子化パラメータ392は、輝度CBの残差係数に適用される。調整された量子化パラメータが、並置された彩度CBの残差係数に適用される。この調整された量子化パラメータは、マッピングテーブルと、オフセットのリストから選択されたCUレベルオフセットとに従って、輝度量子化パラメータ392からのマッピングを含んでもよい。変換ブロックに関連付けられた残差が、第2変換の適用による第1係数への変換に左右されるそれらの係数位置にのみ有効な残差係数を含むときに、第2変換インデックス388がシグナリングされる。
マルチプレクサモジュール384は、各候補CBのテストされた予測モードから選択された、決定された最良のイントラ予測モードに従って、フレーム内予測モジュール364からPB320を出力する。候補予測モードは、ビデオエンコーダ114によってサポートされるすべての考えられる予測モードを含む必要はない。イントラ予測は、3つのタイプに分類される。「DCイントラ予測」は、近くの再構成されたサンプルの平均を表す単一の値でPBをポピュレートすることを含む。「平面イントラ予測」は、平面に従ってサンプルをPBにポピュレートすることを含み、DCオフセット並びに垂直及び水平勾配が、近傍で再構成された隣接するサンプルから導出される。近傍で再構成されたこのサンプルは、典型的にはある程度までPBの右に延在する、現在のPBの上の再構成サンプルの行と、ある程度までPBを超えて下方に延在する、現在のPBの左の再構成サンプルの列とを含む。「角度イントラ予測」は、フィルタリングされ、PBを横切って特定の方向(又は「角度」)に伝播された、再構成された隣接するサンプルを用いてPBをポピュレートすることを含む。VVC65では、長方形ブロックでは使用できない追加の角度を使用できる長方形ブロックがサポートされ、合計87の角度が生成される。第4のタイプのイントラ予測は彩度PBに利用可能であり、それによって、このPBは、「交差成分線形モデル」(CCLM)モードに従って、並置された輝度再構成サンプルから生成される。3つの異なるCCLMモードが利用可能であり、各モードは、隣接する輝度及び彩度サンプルから導出された異なるモデルを使用する。導出されたそのモデルは、並置された輝度サンプルから彩度PBのサンプルのブロックを生成するために使用される。
以前に再構成されたサンプルが、例えばフレームのエッジで利用できない場合、サンプルの範囲の1/2のデフォルトハーフトーン値が使用される。例えば、10ビットビデオの場合、512の値が使用される。フレームの左上の位置に配置されたCBについて、以前に利用可能なサンプルがないので、角度及び平面内予測モードはDC予測モードと同じ出力、すなわち、大きさとしてハーフトーン値を有するサンプルの平面を生成する。
フレーム間予測の場合、予測ブロック382は、動き補償モジュール380によってビットストリーム内のコーディング順序フレーム内の現在のフレームに先行する1つ又は2つのフレームからのサンプルを使用して生成され、マルチプレクサモジュール384によってPB320として出力される。さらに、フレーム間予測のために、典型的には単一のコーディングツリーが、輝度チャネル及び彩度チャネルの両方のために使用される。ビットストリーム内のコーディングフレームの順序は、キャプチャ又は表示時のフレームの順序とは異なる場合がある。1つのフレームが予測に使用される場合、そのブロックは「片方向予測」されると言われ、1つの関連付けられた動きベクトルを有する。2つのフレームが予測に使用される場合、そのブロックは「双方向予測」されると言われ、2つの関連付けられた動きベクトルを有する。Pスライスの場合、各CUは、イントラ予測又は片方向予測されてもよい。Bスライスの場合、各CUは、イントラ予測、片方向予測、又は双方向予測されてもよい。フレームは、典型的には「ピクチャ群」構造を使用してコーディングされ、フレームの時間的階層を可能にする。フレームは複数のスライスに分割されてもよく、各スライスはフレームの一部を符号化する。フレームの時間的階層は、フレームがフレームを表示する順序で、先行するピクチャ及び後続するピクチャを参照することを可能にする。画像は、各フレームを復号するための依存関係を確実にするために必要な順序でコーディングされる。
サンプルは、動きベクトル378及び参照ピクチャインデックスに従って選択される。動きベクトル378及び参照ピクチャインデックスはすべての色チャネルに適用され、したがって、インター予測は主に、PBではなくPU上での動作に関して説明され、すなわち、各CTUの1つ以上のインター予測ブロックへの分解は、単一のコーディングツリーを用いて説明される。インター予測法は、動きパラメータの個数及びその精度において異なる可能性がある。動きパラメータは、典型的には、参照フレームのリストからのどの参照フレームが使用されるべきかを示す参照フレームインデックスに加えて、その参照フレームの各々のための空間変換を含むが、より多くのフレーム、特別なフレーム、又はスケーリング及び回転などの複雑なアフィンパラメータを含んでもよい。さらに、参照サンプルブロックに基づいて高密度動き推定値を生成するために、所定の動き精緻化処理を適用してもよい。
PB320を決定し、選択し、減算器322で元のサンプルブロックからPB320を減算すると、324で表される、コーディングコストが最も低い残差が得られ、損失のある圧縮を受ける。損失のある圧縮処理は、変換、量子化、及びエントロピー符号化の工程を含む。順方向第1変換モジュール326は、差324に順方向変換を適用し、その差324を空間ドメインから周波数ドメインに変換し、矢印328によって表される第1変換係数を生成する。一次元における最大の第1変換サイズは、32ポイントDCT-2又は64ポイントDCT-2変換のいずれかである。符号化されているCBが、ブロックサイズとして表される最大のサポートされる第1変換サイズ、すなわち64×64又は32×32よりも大きい場合、第1変換326は、差324のすべてのサンプルを変換するためにタイル方式で適用される。変換326の適用は、CBのための複数のTBをもたらす。変換の各適用が、32×32より大きい、例えば64×64の差324のTBに対して動作する場合、TBの左上の32×32エリアの外側の、全ての結果として生じる第1変換係数328はゼロに設定され、すなわち廃棄される。残りの第1変換係数328は、量子化器モジュール334に渡される。この第1変換係数328は、CBに関連付けられた量子化パラメータ392に従って量子化され、第1変換係数332を生成する。量子化パラメータ392は、輝度CB対各彩度CBについて異なってもよい。第1変換係数332は、順方向第2変換モジュール330に渡され、分離不可能な第2変換(NSST)動作を実行することによって、又はその第2変換をバイパスすることによって、矢印336によって表される変換係数を生成する。順方向第1変換は典型的には分離可能であり、各TBの行のセットを変換し、次いで各TBの列のセットを変換する。順方向第1変換モジュール326は、水平方向及び垂直方向のタイプII離散コサイン変換(DCT-2)、若しくは水平方向及び垂直方向の変換のバイパス、又は幅及び高さにおいて16サンプルを超えない輝度TBに対して水平方向若しくは垂直方向いずれかのタイプVII離散サイン変換(DST-7)とタイプVIII離散コサイン変換(DCT-8)との組合せのいずれかを使用する。DST-7とDCT-8との組み合わせの使用は、VVC規格において「マルチ変換選択セット」(MTS)と呼ばれる。
モジュール330の順方向第2変換は、一般的には分離不可能な変換であり、これは、イントラ予測されたCUの残差に対してのみ適用され、それにもかかわらずバイパスされてもよい。順方向第2変換は、一組の第2変換係数を生成するために、16のサンプル(第1変換係数328の左上4×4サブブロックとして配置される)又は48のサンプル(第1変換係数328の左上8×8係数において3つの4×4サブブロックとして配置される)のいずれかで動作する。第2変換係数のセットは、それらが導出される第1変換係数のセットよりも数が少なくてもよい。互いに隣接し、DC係数を含む係数のセットのみへの第2変換の適用、この第2変換は「低周波非分離第2変換(LFNST)」と呼ばれる。さらに、LFNSTが適用されるとき、TB内のすべての残りの係数は、第1変換ドメイン及び第2変換ドメインの両方においてゼロでなければならない。
量子化パラメータ392は所与のTBについて一定であり、したがって、TBについての第1変換ドメインにおける残差係数の生成のための均一なスケーリングをもたらす。量子化パラメータ392は、シグナリングされた「デルタ量子化パラメータ」によって周期的に異なり得る。デルタ量子化パラメータ(デルタQP)は、「量子化グループ」と呼ばれる所定のエリア内に含まれるCUに対して1回シグナリングされる。CUが量子化グループサイズよりも大きい場合、デルタQPは、CUのTBのうちの1つを用いて1回シグナリングされる。すなわち、デルタQPは、CUの第1量子化グループに対してエントロピーエンコーダ338によって1回シグナリングされ、CUの後続の量子化グループに対してはシグナリングされない。「量子化行列」の適用により不均一なスケーリングも可能であり、それによって、各残差係数に適用されるスケーリング係数は、量子化パラメータ392とスケーリング行列内の対応するエントリとの組合せから導出される。スケーリング行列はTBのサイズよりも小さいサイズを有することができ、TBに適用される場合、TBサイズよりもサイズが小さいスケーリング行列から各残差係数のスケーリング値を提供するために、最近傍アプローチが使用される。残差係数336は、ビットストリーム115における符号化のためにエントロピーエンコーダ338に供給される。典型的には、TUの少なくとも1つの有効な残差係数を有する各TBの残差係数が、スキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。このスキャンパターンは一般に、4×4「サブブロック」のシーケンスとしてTBをスキャンし、残差係数の4×4セットの粒度で規則的なスキャン動作を提供し、サブブロックの構成はTBのサイズに依存する。各サブブロック内のスキャン、及びその1つのサブブロックから次のサブブロックへの進行は、典型的には後方対角スキャンパターンに従う。さらに、量子化パラメータ392はデルタQP構文要素を使用してビットストリーム115へと符号化され、第2変換インデックス388は図13~15を参照して説明される条件下で、ビットストリーム115内に符号化される。
上述したように、ビデオエンコーダ114は、ビデオデコーダ134に見られる復号されたフレーム表現に対応するフレーム表現へのアクセスを必要とする。従って、残差係数336は、矢印342によって表される中間逆変換係数を生成するために、第2変換インデックス388に従って動作する逆第2変換モジュール344を通過する。中間逆変換係数は、矢印346によって表される逆変換係数を生成するために、量子化パラメータ392に従って逆量子化モジュール340によって逆量子化される。中間逆変換係数346は、TUの矢印350によって表される残差サンプルを生成するために、逆第1変換モジュール348に渡される。逆第2変換モジュール344によって実行される逆変換のタイプは、順第2変換モジュール330によって実行される順変換のタイプに対応する。逆第1変換モジュール348によって実行される逆変換のタイプは、第1変換モジュール326によって実行される第1変換のタイプに対応する。加算モジュール352は、CUの再構成されたサンプル(矢印354によって示される)を生成するために、残差サンプル350とPU320とを加算する。
再構成されたサンプル354は、参照サンプルキャッシュメモリ356及びインループフィルタモジュール368に渡される。参照サンプルキャッシュメモリ356は、通常ASIC上のスタティックRAMを使用して(したがって、コストのかかるオフチップメモリアクセスを回避して)実装され、フレーム内の後続のCUのためのフレーム内PBを生成するための依存関係を満たすために必要な最小限のサンプル記憶装置を提供する。最小の依存関係は、典型的にはCTUの行の最下部に沿ったサンプルの「ラインバッファ」を含み、CTUの次の行及び列バッファリングによって使用され、その範囲はCTUの高さによって設定される。参照サンプルキャッシュメモリ356は、参照サンプルフィルタ360に参照サンプル(矢印358で示す)を供給する。サンプルフィルタ360は、平滑化演算を適用して、フィルタリングされた参照サンプル(矢印362によって示される)を生成する。フィルタリングされた参照サンプル362は、フレーム内予測モジュール364によって使用され、矢印366によって表されるサンプルのイントラ予測ブロックを生成する。各候補イントラ予測モードについて、フレーム内予測モジュール364は、サンプルのブロック、すなわち366を生成する。サンプル366のブロックは、DC、平面又は角度内予測などの技法を使用して、モジュール364によって生成される。
インループフィルタモジュール368は、再構成されたサンプル354にいくつかのフィルタリング段階を適用する。このフィルタリング段階は不連続性から生じるアーチファクトを低減するために、CU境界に整列された平滑化を適用する「デブロッキングフィルタ」(DBF)を含む。インループフィルタモジュール368に存在する別のフィルタリング段階は「適応ループフィルタ」であり、これは、歪みをさらに低減するためにウィーナーベースの適応フィルタを適用する。インループフィルタモジュール368における更なる利用可能なフィルタリング段階は、「サンプル適応オフセット」(SAO)フィルタである。このSAOフィルタは最初に、再構成されたサンプルを1つ以上のカテゴリに分類し、その割り当てられたカテゴリに従って、サンプルレベルでオフセットを適用することによって動作する。
矢印370で表されるフィルタリングされたサンプルは、インループフィルタモジュール368から出力される。フィルタリングされたサンプル370は、フレームバッファ372に格納される。フレームバッファ372は、典型的にはいくつかの(例えば、16までの)ピクチャを格納する容量を有し、従って、メモリ206に格納される。フレームバッファ372は、その要求される大きなメモリ消費のため、典型的にはオンチップメモリを使用して格納はされない。したがって、フレームバッファ372へのアクセスは、メモリ帯域幅に関してコストがかかる。フレームバッファ372は、参照フレーム(矢印374によって表される)を動き推定モジュール376及び動き補償モジュール380に提供する。
動き推定モジュール376はいくつかの「動きベクトル」(378として示される)を推定し、各ベクトルは現在のCBの場所からのデカルト空間オフセットであり、フレームバッファ372内の参照フレームのうちの1つの内のブロックを参照する。参照サンプルのフィルタリングされたブロック(382として表される)は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル382は、モードセレクタ386による潜在的選択に利用可能なさらなる候補モードを形成する。さらに、所与のCUについて、PU320は、1つの(「片方向予測される」)参照ブロックを使用して形成されてもよく、又は2つの(「双方向予測される」)参照ブロックを使用して形成されてもよい。選択された動きベクトルに対して、動き補償モジュール380は、動きベクトル内のサブピクセル精度をサポートするフィルタリング処理に従って、PB320を生成する。したがって、動き推定モジュール376(多くの候補動きベクトルに対して動作する)は計算の複雑さを低減するために、動き補償モジュール380(選択された候補のみに対して動作する)と比較して、単純化されたフィルタリング処理を実行してもよい。ビデオエンコーダ114がCUのインター予測を選択すると、動きベクトル378がビットストリーム115へと符号化される。
図3のビデオエンコーダ114は汎用ビデオコーディング(VVC)を参照して説明されるが、他のビデオコーディング規格又は実がモジュール310~390の処理段階を使用することもできる。フレームデータ113(及びビットストリーム115)は、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク(登録商標)、又は他のコンピュータ可読記憶媒体から読み取る(又は書き込む)こともできる。さらに、フレームデータ113(及びビットストリーム115)は、通信ネットワーク220又は無線周波数受信部に接続されたサーバなどの外部ソースから受信(又は送信)されてもよい。通信ネットワーク220は制限された帯域幅を提供することができ、フレームデータ113が圧縮困難であるときにネットワークを飽和させることを回避するために、ビデオエンコーダ114におけるレート制御の使用を必要とする。さらに、ビットストリーム115は、ビデオエンコーダ114の1つ以上のインスタンスによって生成され、プロセッサ205の制御下で協調して動作する、フレームデータ113の空間セクション(CTUの集合)を表す1つ以上のスライスから構築されてもよい。本開示のコンテキストでは、スライスはビットストリームの「連続部分」とも呼ばれ得る。スライスはビットストリーム内で連続しており、並列処理が使用されている場合などに、個別の部分として符号化又は復号することができる。
ビデオデコーダ134を図4に示す。図4のビデオデコーダ134は汎用ビデオコーディング(VVC)ビデオ復号パイプラインの一例であるが、本明細書で説明する処理段階を実行するために他のビデオコーデックが使用されてもよい。図4に示すように、ビットストリーム133はビデオデコーダ134に入力される。ビットストリーム133は、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク(登録商標)、又は他の非一時的コンピュータ可読記憶媒体から読み取ることができる。あるいは、ビットストリーム133が通信ネットワーク220に接続されたサーバ又は無線周波数受信部などの外部ソースから受信されてもよい。
ビットストリーム133は、復号されるべきキャプチャフレームデータを表す符号化された構文要素を含む。ビットストリーム133はエントロピーデコーダモジュール420に入力される。エントロピーデコーダモジュール420は、「ビン」のシーケンスを復号することによってビットストリーム133から構文要素を抽出し、その構文要素の値をビデオデコーダ134内の他のモジュールに渡す。エントロピーデコーダモジュール420は、可変長及び固定長復号を使用して、算術復号エンジンのSPS、PPS又はスライスヘッダを復号し、スライスデータの構文要素を1つ以上のビンのシーケンスとして復号する。各ビンはビンの「1」と「0」の値をコーディングするために使用される確率水準を記述するコンテキストと共に、一つ以上の「コンテキスト」を使用することができる。所与のビンに対して複数のコンテキストが利用可能な場合、「コンテキストモデリング」又は「コンテキスト選択」工程が、ビンを復号するために利用可能なコンテキストの1つを選択するために実行される。ビンを復号する処理は順次フィードバックループを形成し、したがって、各スライスは、所与のエントロピーデコーダ420インスタンスによってその全体が復号され得る。単一の(又は少数の)高性能エントロピーデコーダ420インスタンスは、ビットストリーム115からのフレームのためのすべてのスライスを復号することができ、複数の低性能エントロピーデコーダ420インスタンスは、ビットストリーム133からのフレームのためのスライスを同時に復号することができる。
エントロピーデコーダモジュール420は、ビットストリーム133から構文要素を復号するために、算術符号化アルゴリズム、例えば「コンテキスト適応バイナリ算術符号化」(CABAC)を適用する。復号された構文要素は、ビデオデコーダ134内のパラメータを再構成するために使用される。パラメータは、残差係数(矢印424によって表される)、量子化パラメータ474、第2変換インデックス470、及びイントラ予測モード(矢印458によって表される)などのモード選択情報を含む。このモード選択情報は、動きベクトル、及び各CTUの1つ以上のCBへの分割などの情報も含む。パラメータは、典型的には以前に復号されたCBからのサンプルデータと組み合わせて、PBを生成するために使用される。
残差係数424は逆第2変換モジュール436に渡され、そこでは、図16~18を参照して説明する方法に従って、第2変換が適用されるか、又は動作が実行されない(バイパス)。逆第2変換モジュール436は第2変換ドメイン係数から、再構成された変換係数432、すなわち第1変換ドメイン係数を生成する。再構成された変換係数432は、量子化解除器モジュール428に入力される。逆量子化器モジュール428は、量子化パラメータ474に従って、矢印440によって表される再構成された中間変換係数を生成するために、残差係数432に対して、すなわち、第1変換係数領域において、逆量子化(又は「スケーリング」)を実行する。不均一な逆量子化行列の使用がビットストリーム133に示される場合、ビデオデコーダ134はスケーリング係数のシーケンスとしてビットストリーム133から量子化行列を読み出し、スケーリング係数を行列に配置する。逆スケーリングは、量子化パラメータと組み合わせて量子化行列を使用して、再構成された中間変換係数440を生成する。
再構成された変換係数440は、逆第1変換モジュール444に渡される。このモジュール444は、係数440を周波数ドメインから空間ドメインに戻すように変換する。モジュール444の動作の結果は、矢印448によって表される残差サンプルのブロックである。残差サンプル448のブロックは、対応するCBとサイズが等しい。この残差サンプル448は、加算モジュール450に供給される。加算モジュール450において、残差サンプル448は、矢印456によって表される再構成されたサンプルのブロックを生成するために、復号されたPB(452として表される)に加算される。再構成されたサンプル456は、再構成サンプルキャッシュメモリ460及びインループフィルタリングモジュール488に供給される。インループフィルタリングモジュール488は、492として表されるフレームサンプルの再構成されたブロックを生成する。このフレームサンプル492はフレームバッファ496に書き込まれる。
再構成サンプルキャッシュメモリ460は、ビデオエンコーダ114の再構成サンプルキャッシュメモリ356と同様に動作する。再構成されたサンプルキャッシュメモリ460は、(例えば、典型的にはオンチップメモリであるデータ232を代わりに使用することによって)メモリ206を介さずに後続のCBをイントラ予測するために必要な、再構成されたサンプルのための記憶装置を提供する。矢印464によって表される参照サンプルは、再構成サンプルキャッシュメモリ460から得られ、参照サンプルフィルタ468に供給されて、矢印472によって示されるフィルタリングされた参照サンプルを生成する。このフィルタリングされた参照サンプル472は、フレーム内予測モジュール476に供給される。モジュール476は、ビットストリーム133でシグナリングされ、エントロピーデコーダ420によって復号されたイントラ予測モードパラメータ458に従って、矢印480によって表されるイントラ予測サンプルのブロックを生成する。サンプル480のブロックは、DC、平面又は角度内予測などのモードを使用して生成される。
CBの予測モードがビットストリーム133においてイントラ予測を使用するように指示されると、イントラ予測サンプル480は、マルチプレクサモジュール484を介して、復号されたPB452を形成する。イントラ予測は、サンプルの予測ブロック(PB)、すなわち、同じ色成分内の「隣接サンプル」を使用して導出された1つの色成分内のブロックを生成する。この隣接サンプルは現在のブロックに隣接するサンプルであり、ブロック復号順序において先行することにより、既に再構成されている。輝度及び彩度ブロックが並置される場合、その輝度及び彩度ブロックは異なるイントラ予測モードを使用してもよい。しかしながら、この2つの彩度CBは、同じイントラ予測モードを共有する。
CBの予測モードがビットストリーム133におけるインター予測であることが示されると、動き補償モジュール434は、フレームバッファ496からサンプル498のブロックを選択しフィルタリングするために、(エントロピーデコーダ420によってビットストリーム133から復号された)動きベクトル及び参照フレームインデックスを使用して、438として表されるインター予測サンプルのブロックを生成する。サンプル498のブロックは、フレームバッファ496に格納された、以前に復号されたフレームから得られる。双方向予測の場合、復号されたPB452のためのサンプルを生成するために、2つのサンプルブロックが生成され、一緒に混ぜ合わされる。フレームバッファ496には、インループフィルタリングモジュール488からのフィルタリングされたブロックデータ492が入力される。ビデオエンコーダ114のインループフィルタリングモジュール368と同様に、インループフィルタリングモジュール488は、DBF、ALF、及びSAOフィルタリング動作のいずれかを適用する。一般に、動きベクトルは輝度チャネル及び彩度チャネルの両方に適用されるが、輝度チャネル及び彩度チャネルにおけるサブサンプル補間のためのフィルタリング処理は異なる。
図5は、汎用ビデオコーディングのツリー構造内の1つ以上のサブ領域への領域の利用可能な区分又は分割の集合500を示す概略ブロック図である。コレクション500に示される区分は、図3を参照して説明されるように、ラグランジュ最適化によって決定されるよう、コーディングツリーに従って各CTUを1つ以上のCU又はCBに区分するために、エンコーダ114のブロックパーティショナー310に利用可能である。
コレクション500は、正方形領域のみが他の、おそらくは正方形でないサブ領域に分割されていることを示しているが、コレクション500はコーディングツリー内の親ノードの、コーディングツリー内の子ノードへの潜在的な分割を示しており、親ノードが正方形領域に対応することを必要としないことを理解されたい。包含領域が非正方形の場合、分割から生じるブロックの次元は含有ブロックの縦横比に従ってスケールされる。ある領域がそれ以上分割されなくなると、すなわち、コーディングツリーのリーフノードにおいては、CUはその領域を占有する。
領域をサブ領域に細分割する処理は、結果として生じるサブ領域が最小CUサイズ、一般に4×4輝度サンプルに達したときに終了しなければならない。所定の最小サイズ、例えば16サンプルよりも小さいブロック領域を禁止するようにCUを制約することに加えて、CUは、4の最小幅又は高さを有するように制約される。幅及び高さの両方に関して、又は幅又は高さの両方に関して、他の最小値も可能である。細分割の処理は最深レベルの分解の前に終了してもよく、その結果、CUは最小CUサイズよりも大きくなる。分割が起こらず、その結果、単一の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は図5に示すように、包含領域を4つの等しいサイズの領域に分割する。HEVCと比較して、汎用ビデオコーディング(VVC)は、水平バイナリ分割514及び垂直バイナリ分割516を含む追加の分割により追加の柔軟性を達成する。分割514及び516の各々は、包含領域を2つの等しいサイズの領域に分割する。この分割は、含有ブロック内の水平境界(514)又は垂直境界(516)に沿って行われる。
さらなる柔軟性は、水平ターナリ分割518及び垂直ターナリ分割520を加えた多用途ビデオコーディングにおいて達成される。ターナリ分割518及び520は、ブロックを、包含領域の幅又は高さの1/4及び3/4に沿って水平方向(518)又は垂直方向(520)のいずれかに境界付けられた3つの領域に分割する。クアッドツリー、バイナリツリー、及びターナリツリーの組合せは、「QTBTTT」と呼ばれる。ツリーのルートには、ゼロ個以上のクアッドツリー分割(ツリーの「QT」セクション)が含まれる。QTセクションが終了すると、ゼロ個以上のバイナリ又はターナリ分割(ツリーの「マルチツリー」又は「MT」セクション)が発生し、最終的にツリーのリーフノードのCB又はCUで終了する。このツリーがすべての色チャネルを記述する場合、ツリーリーフノードはCUである。ツリーが輝度チャネル又は彩度チャネルを記述する場合、ツリーリーリーリーフノードはCBである。
クアッドツリーのみをサポートし、そのため正方形ブロックのみをサポートするHEVCと比較して、QTBTTTは、特にバイナリツリー及び/又はターナリツリー分割の可能な再帰的適用を考慮すると、より多くの可能なCUサイズをもたらす。クアッドツリー分割のみが利用可能である場合、コーディングツリー深度の各増加は、CUサイズの、親エリアのサイズの4分の1への減少に対応する。VVCでは、バイナリ及びターナリ分割が利用できるということは、そのコーディングツリー深度がもはやCUエリアに直接的に対応しないことを意味する。異常な(正方形でない)ブロックサイズについての可能性は、ブロック幅又は高さが、結果として4サンプル未満であるか、又は4サンプルの倍数ではないかのいずれかとなるであろう分割を排除するように、分割オプションを制約することによって低減することができる。一般に、この制約は、輝度サンプルを考慮する際に適用される。しかしながら、説明した構成では、制約が彩度チャネル用のブロックに別々に適用することができる。彩度チャネルに分割オプションを適用すると、フレームデータが4:2:0彩度形式又は4:2:2彩度形式の場合など、輝度と彩度で最小ブロックサイズが異なる場合がある。各分割では、この領域に関して横次元が変わらない、半分になっている、又は四半期になっているサブ領域が生成される。そして、CTUサイズは2のべき乗であるため、全てのCUの横次元も2のべき乗である。
図6は、汎用ビデオ符号化で使用されるQTBTTT(又は「コーディングツリー」)構造のデータフロー600を示す概略フロー図である。QTBTTT構造はCTUを1つ以上のCUに分割することを定義するために、各CTUに対して使用される。各CTUのQTBTTT構造は、ビデオエンコーダ114内のブロックパーティショナー310によって決定され、ビットストリーム115へと符号化されるか、又はビデオデコーダ134内のエントロピーデコーダ420によってビットストリーム133から復号される。データフロー600はさらに、図5に示される分割に従って、CTUを1つ以上のCUに分割するためにブロックパーティショナー310に利用可能な許容可能な組合せを特徴付ける。
階層の最上位レベル、すなわちCTUから始めて、ゼロ又はそれ以上のクアッドツリー分割が最初に実行される。具体的には、クアッドツリー(QT)分割決定610がブロックパーティショナー310によって行われる。「1」シンボルを返す610での決定は、クアッドツリー分割512に従って現在のノードを4つのサブノードに分割する決定を示す。その結果、620のような4つの新しいノードが生成され、各新しいノードについて、QT分割決定610に戻る。各新しいノードは、ラスタ(又はZスキャン)順序で考慮される。あるいは、QT分割決定610がさらなる分割が実行されるべきでないことを示す(「0」シンボルを返す)場合、クアッドツリー分割は停止し、マルチツリー(MT)分割がその後考慮される。
まず、MT分割決定612がブロックパーティショナー310によって行われる。612において、MT分割を実行する決定が示される。決定612で「0」のシンボルを返すことは、ノードのサブノードへのそれ以上の分割が実行されないことを示す。ノードのそれ以上の分割が実行されない場合、そのノードはコーディングツリーのリーフノードであり、CUに対応する。リーフノードは622で出力される。あるいは、MT分割612がMT分割を実行する決定を示す(「1」シンボルを返す)場合、ブロックパーティショナー310は方向決定614に進む。
方向決定614は、水平(「H」又は「0」)又は垂直(「V」又は「1」)のいずれかとしてMT分割の方向を示す。ブロックパーティショナー310は、決定614が水平方向を示す「0」を返す場合、決定616に進む。ブロックパーティショナー310は、決定614が垂直方向を示す「1」を返す場合、決定618に進む。
決定616及び618のそれぞれにおいて、MT分割のパーティション数は、BT/TT分割で2つ(バイナリ分割又は「BT」ノード)又は3つ(ターナリ分割又は「「TT」)のいずれかとして示される。すなわち、BT/TT分割決定616は614からの指示された方向が水平であるときにブロックパーティショナー310によって行われ、BT/TT分割決定618は614からの指示された方向が垂直であるときにブロックパーティショナー310によって行われる。
BT/TT分割決定616は、水平分割が「0」を返すことによって示されるバイナリ分割514であるか、「1」を返すことによって示されるターナリ分割518であるかを示す。BT/TT分割決定616がバイナリ分割を示すとき、HBT CTUノード生成工程625において、バイナリ水平分割514に従って、2つのノードがブロックパーティショナー310によって生成される。BT/TT分割616がターナリ分割を示すとき、HTT CTUノード生成工程626において、ターナリ水平分割518に従って、ブロックパーティショナー310によって3つのノードが生成される。
BT/TT分割決定618は、垂直分割が「0」を返すことによって示されるバイナリ分割516であるか、「1」を返すことによって示されるターナリ分割520であるかを示す。BT/TT分割618がバイナリ分割を示すとき、生成VBT CTUノード工程627では、垂直バイナリ分割516に従って、ブロックパーティショナー310によって2つのノードが生成される。BT/TT分割618がターナリ分割を示すとき、VTT CTUノード生成工程628において、垂直ターナリ分割520に従って、ブロックパーティショナー310によって3つのノードが生成される。工程625~628から生じる各ノードについて、MT分割決定612に戻るデータフロー600の再帰が、方向614に応じて、左から右へ、又は上から下への順序で適用される。その結果、バイナリツリー及びターナリツリー分割を適用して、様々なサイズを有する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つの新しいノードのリストを生成する。
画像をCTUに分解し、さらにブロックパーティショナー310によってCUに分解し、図3を参照して説明したように各残差ブロック(324)を生成するためにCUを使用すると、残差ブロックはビデオエンコーダ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だけ増加する。図6を参照して説明したように、各CTUのコーディングツリーが横断されると、結果として得られる各CUの細分割レベルが、コレクション800に従って決定される。
図8BはCUノードの例示的なセット840を示し、分割の効果を示す。細分割レベルがゼロであるセット840の例示的な親ノード820は、図8Bの例ではサイズ64×64のCTUに対応する。親ノード820は、それぞれ16×64、32×64、及び16×64のサイズの3つの子ノード821、822、及び823を生成するために3値分割される。子ノード821、822、823は、それぞれ2、1、2の細分化レベルを有する。
図8Bの例では、量子化グループしきい値が64×64エリアの半分、すなわち2048サンプルのエリアに対応して、1に設定される。フラグは、新しい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 CUOを含み、右半分872はいくつかのCU(CU1~CU4)を含む。量子化グループ閾値は、図8Cの例では2に設定され、その結果、CTUの面積の4分の1に等しい面積を通常有する量子化グループが得られる。親ノード、すなわちコーディングツリーのルートノードがゼロの細分割レベルを有すると、QGフラグはリセットされ、新しいQGは次のコーディングされたCU、すなわち矢印868のCUから始まる。CU0(870)はコーディングされた係数を有し、したがって、デルタQP864は、CU0の残差と共にコーディングされる。右半分872は、水平バイナリ分割を受け、右半分872の上部及び下部でさらに分割され、CU1~CU4を生じる。右半分872の上部(CU1及びCU2を含む877)及び下部(CU3及びCU4を含む878)セクションに対応するコーディングツリーノードは、2の細分割レベルを有する。2の細分割レベルは2の量子化グループしきい値に等しく、したがって、新しいQGはそれぞれ874及び876としてマークされた各セクションで開始する。CU1はコーディングされた係数を有さず(残差なし)、CU2は「スキップされた」CUであり、これもコーディングされた係数を有さない。したがって、デルタQPは、上部セクションに対してコーディングされない。CU3はスキップされたCUであり、CU4はコーディングされた残差を有し、したがって、デルタQP866は、CU3及びCU4を含むQGのためのCU4の残差でコーディングされる。
図9A及び図9Bは、4×4変換ブロックスキャンパターン及び関連付けられた第1変換係数及び第2変換係数を示す図である。一次残差係数に対する第2変換モジュール330の動作は、ビデオエンコーダ114に関して説明される。4×4TB900は、後方対角スキャンパターン910に従ってスキャンされる。スキャンパターン910は、「最後の有効係数」位置からDC(左上)係数位置に向かって前進する。例えば、前方方向にスキャンすることを考慮するときに、最後の有効係数位置の後に位置する残差係数は、スキャンされない全ての係数位置が暗に非有効である。第2変換が使用されるとき、残りの係数はすべて非有効である。すなわち、第2変換を受けないすべての第2ドメイン残差係数は非有効であり、第2変換の適用によって入力されないすべての第1ドメイン残差係数は非有効であることが要求される。さらに、モジュール330による順方向第2変換の適用後、第2変換モジュール330によって処理された第1変換係数の個数よりも少ない第2変換係数が存在してもよい。例えば、図9Bは、ブロックのセット920を示す。図9Bでは、16個の一次係数が1つの4×4サブブロックとして配置され、4×4TB920の924である。一次残差係数は図9Bの例において第2変換ブロック926を生成するために、第2変換の対象とすることができる。第2変換ブロック926は、8つの第2変換係数928を含む。8つの第2変換係数928は、DC係数位置から前方にパックされて、スキャンパターン910に従ってTBに記憶される。エリア930として示される4×4サブブロックの残りの係数位置は第1変換からの量子化残差係数を含み、第2変換が適用されるためにはすべて非有効であることが要求される。したがって、TB920の最初の8つのスキャン位置のうちの1つ係数を指定する4×4TBの最後の有効係数位置は(i)第2変換の適用、又は(ii)量子化後の第1変換の出力のいずれかを示し、TB920の8番目のスキャン位置を超える有効係数を有さない。
TB上で第2変換を実行することが可能である場合、第2変換インデックス、すなわち388は、第2変換の可能な適用を示すために符号化される。第2変換インデックスは、モジュール330において、どのカーネルが第2変換として適用されるかを、複数の変換カーネルが利用可能な場所に示すこともできる。これに対応して、ビデオデコーダ134は、最後の有効係数位置が第2変換された係数、例えば928を保持するために確保されたスキャン位置のいずれか1つに位置するとき、第2変換インデックス470を復号する。
16個の一次係数を8個の二次係数にマッピングする第2変換カーネルについて説明したが、異なる数の第2変換係数にマッピングするカーネルを含む、異なるカーネルが可能である。第2変換された係数の個数は、第1変換された係数の個数と同じであってもよく、例えば16である。幅4及び高さ4を超えるTBの場合、4×4TBの場合に関して説明した挙動は、TBの上部サブブロックに適用される。TBの他のサブブロックは第2変換が適用されるとき、ゼロ値の残差係数を有する。幅が4より大きく、高さが4に等しいTBの場合、4×4TBの場合に関して説明した動作は、TBの最も左のサブブロックに適用され、TBの他のサブブロックはゼロ値の残差係数を有し、第2変換インデックスを復号する必要があるかどうかを判定するために最後の有効係数位置を使用することを可能にする。
図9C並びに図9Dは、8×8変換ブロックスキャンパターン、及び関連する第1変換係数及び第2変換係数の例を示す図である。図9Cは、8×8TB940のための4×4サブブロックベースの後方対角スキャンパターン950を示す。8×8TB940は、4×4サブブロックベースの後方対角スキャンパターン950でスキャンされる。図9Dは、第2変換の動作の効果を示すセット960を示す。スキャン950は、最後の有効係数位置からDC(左上)係数位置に戻る。940のエリア962として示される48個の一次係数への順方向第2変換カーネルの適用は、964として示される残りの16個の第1係数がゼロ値であるときに可能である。第2変換をエリア962に適用すると、966として示される16の第2変換係数が得られる。TBの他の係数位置はゼロ値であり、968としてマークされている。8×8TB940の最後の有効位置が第2変換された係数が966以内であることを示す場合、第2変換インデックス388は、モジュール330による特定の変換カーネルの適用(又はカーネルをバイパスすること)を示すように符号化される。ビデオデコーダ134は、TBの最後の有効位置を使用して、第2変換インデックス、すなわちインデックス470を復号するか否かを決定する。幅又は高さが8サンプルを超える変換ブロックの場合、図9C及び9Dのアプローチは、左上の8×8領域、すなわちTBの左上の2×2サブブロックに適用される。
図9A~9Dに記載されているように、2つのサイズの第2変換カーネルが利用可能である。第2変換カーネルの1つのサイズは4の幅又は高さを有する変換ブロックのためのものであり、他のサイズの第2変換は、4より大きい幅及び高さを有する変換ブロックのためのものである。カーネルの各サイズ内で、第2変換カーネルの複数のセット(例えば4つ)が利用可能である。1つのセットはブロックに対するイントラ予測モードに基づいて選択され、これは輝度ブロックと彩度ブロックとの間で異なり得る。選択したセット内で、1つ又は2つのカーネルを使用できる。選択されたセット内の1つのカーネルの使用、又は第2変換のバイパスは、第2変換インデックスを介して、コーディングツリーユニットの共有ツリーに属するコーディングユニット内の輝度ブロック及び彩度ブロックに対して独立してシグナリングされる。言い換えれば、輝度チャネルのために使用されるインデックスと、彩度チャネルのために使用されるインデックスとは、互いに独立している。
図10は、汎用ビデオ符号化(VVC)規格において利用可能な変換ブロックのセット1000を示す。図10はまた、セット1000の変換ブロックからの残差係数のサブセットへの第2変換の適用を示す。図10は、幅及び高さが4~32の範囲のTBを示す。しかしながら、幅及び/又は高さ64のTBが可能であるが、参照を容易にするため示されていない。
16ポイント第2変換1052(より暗いシェーディングで示される)が4×4組の係数に適用される。16ポイント第2変換1052は4の幅又は高さ、例えば、4×4TB1010、8×4TB1012、16×4TB1014、32×4TB1016、4×8TB1020、4×16TB1030、及び4×32TB1040を有するTBに適用される。64ポイント第1変換が利用可能である場合、16ポイント第2変換1052は、サイズ4×64及び64×4のTB(図10には示されていない)に適用される。幅又は高さが4であるが、16を超える第1係数を有するTBの場合、16ポイントの第2変換はTBの左上の4×4サブブロックにのみ適用され、他のサブブロックは第2変換が適用されるためにゼロ値の係数を有することが必要とされる。一般に、16ポイントの第2変換を適用すると、16個の第2変換係数が得られ、これらの第2変換係数は、原稿の16個の第1変換係数が得られたサブブロックに符号化するためにTBにパックされる。第2変換カーネルは例えば図9Bを参照して説明したように、第2変換が適用された第1変換係数の個数よりも少ない第2変換係数の生成をもたらすことができる。
幅と高さとが4より大きい変換サイズの場合、図10に示すように、変換ブロックの左上8×8領域の残差係数の3つの4×4サブブロックに適用するために、48ポイント第2変換1050(より明るいシェーディングで示される)が利用可能である。48ポイント第2変換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点第1変換が利用可能である場合、48点第2変換1050は、サイズ8×64、16×64、32×64、64×64、64×32、64×16、及び64×8のTB(図示せず)にも適用可能である。48ポイントの第2変換カーネルを適用すると、一般に、48より少ない第2変換係数が生成される。例えば、8又は16の第2変換係数を生成することができる。第2変換係数は左上領域の変換ブロックに格納され、例えば、8つの第2変換係数が図9Dに示されている。第2変換を受けない第1変換係数(「第1のみの係数」)、例えば、TB1034の係数1066(図9Dの964と同様)は、第2変換が適用されるためにゼロ値であることが要求される。48ポイント第2変換1050を順方向に適用した後、有効係数を含み得る領域は48係数から16係数に減少し、有効係数を含み得る係数位置の個数をさらに減少させる。例えば、968は、非有効係数のみを含む。逆第2変換の場合、例えばTBの966内にのみ存在する復号された有効係数は例えば962などの領域内で有効であり得る係数を生成するように変換され、その後、これらの係数は第1逆変換を受ける。第2変換が一つ以上のサブブロックを16個の第2変換係数のセットに低減するとき、上左4×4サブブロックのみが有効係数を含むことがある。第2変換係数が格納され得る任意の係数位置に位置する最後の有効係数位置は、第2変換の適用又は第1変換のみが適用されたことを示す。しかしながら、量子化の後、結果として得られる有効係数はあたかも第2変換カーネルが適用されたかのように、同じ領域内にある。
最後の有効係数位置がTB内の第2変換係数位置(例えば、922又は962)を示す場合、第2変換カーネルを適用するか、又は第2変換をバイパスするかを区別するために、シグナリングされた第2変換インデックスが必要とされる。図10ではビデオエンコーダ114の観点から、様々なサイズのTBへの第2変換の適用を説明したが、対応する逆処理がビデオデコーダ134で実行される。ビデオデコーダ134は、まず、最後の有効係数位置を復号する。復号された最後の有効係数位置が第2変換の潜在的な適用を示す場合、すなわち、位置が、それぞれ8又は16の第2変換係数を生成する第2変換カーネルについて928又は966内にある場合、第2変換インデックスが復号されて、逆第2変換を適用するかバイパスするかを決定する。
図11は、複数のスライスを有するビットストリーム1101に対する構文構造1100を示す。各スライスは、複数のコーディングユニットを含む。ビットストリーム1101はビデオエンコーダ114によって、例えば、ビットストリーム115として生成されてもよく、又は、ビデオデコーダ134によって、例えば、ビットストリーム133として構文解析されてもよい。ビットストリーム1101は、例えばネットワーク抽象化レイヤ(NAL)ユニットなどの部分に分割され、各NALユニットに1108などのNALユニットヘッダを先行させることによって描写がなされる。シーケンスパラメータセット1110は、ビットストリーム、彩度フォーマット、サンプルビット深度、及びフレーム解像度の符号化及び復号に使用されるプロファイル(ツールのセット)などのシーケンスレベルパラメータを定義する。パラメータは、各CTUのコーディングツリーにおける異なるタイプの分割の適用を制約するセット1110にも含まれる。分割のタイプを制約するパラメータのコーディングはよりコンパクトな表現のために、例えば、ブロックサイズ制約のためのlog2基底を使用し、最小CTUサイズのような他パラメータに対してパラメータを表現するために最適化されてもよい。SPS1110にコーディングされているいくつかのパラメータは次のとおりである。
・log2_CTU_size_minus5は、CTUサイズを指定する。コーディングされた値0、1、2で、CTUサイズをそれぞれ32×32、64×64、及び128×128に指定する。
・partition_constraints_override_enabled_flagは、パーティション制約パラメータ1130と呼ばれる複数のパラメータのスライスレベル上書きを適用する機能を有効にする。
・Log2_min_luma_coding_block_size_minus2は、最小コーディングブロックサイズ(輝度サンプル単位)を指定する。値は0、1、2…で、最小輝度CBサイズ4×4、8×8、16×16…を指定する。最大コーディング値は指定された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スライスの場合、1134でMaxMttDepthを設定するために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 + MaxMttDepthY1134)である。P又はBスライスの場合、cu_qp_delta_subdivの範囲は0から2×(log2_ctu_size_minus5 + 5 - MinQtLog2SizeInterY + MaxMttDepthY1134)である。cu_qp_delta_subdivの範囲は、SPS1110又はスライスヘッダ1118から取得されたパーティション制約から導出された値MaxMttDepthY1134に依存するため、解析の問題はない。
パラメータ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は、ビットストリーム1101(例えば、115又は133)のスライスデータ1120のための構文構造1200を示し、CTU1210のようなコーディングツリーユニットの輝度及び彩度コーディングブロックのための共有ツリーを有する。CTU1210は1つ以上のCUを含み、その例はCU1214として示される。CU1214は、信号予測モード1216aと、それに続く変換ツリー1216bとを含む。CU1214のサイズが最大変換サイズ(32×32又は64×64のいずれか)を超えない場合、変換ツリー1216bは、TU1218として示される1つの変換ユニットを含む。
予測モード1216aが、CU1214のためのイントラ予測の使用を示す場合、輝度イントラ予測モード及び彩度イントラ予測モードが指定される。CU1214の輝度CBについて、第1変換タイプは(i)水平及び垂直に、DCT-2として、(ii)水平及び垂直に、変換スキップとして、又は(iii)水平及び垂直に、DST-7とDCT-8との組合せとして、のいずれかとしてシグナリングされる。シグナリングされた輝度変換タイプが水平及び垂直にDCT-2である場合(オプション(i))、「低周波非分離変換」(LFNST)インデックスとしても知られる追加の輝度第2変換タイプ1220が、図9A~Dを参照して説明されるような条件下で、ビットストリームにおいてシグナリングされる。彩度第2変換タイプ1221もシグナリングされる。この彩度第2変換タイプ1221は、輝度第1変換タイプがDCT-2であるか否かとは無関係にシグナリングされる。
共有コーディングツリーの使用は、輝度TB Y1222、第1彩度TB Cb1224、及び第2彩度TB Cr1226として示される、各色チャネルのためのTBを含むTU1218をもたらす。CbチャネルとCrチャネルの両方について彩度残差を指定するために単一の彩度TBが送信されるコーディングモードが利用可能であり、「ジョイントCbCr」コーディングモードとして知られている。ジョイントCbCrコーディングモードが有効化されると、単一の彩度TBが符号化される。
色チャネルに関係なく、各TBは最後の位置1228を含む。この最後の位置1228は、TBの係数のアレイを順方向(すなわち、DC係数から順方向)に直列化するために使用される、対角スキャンパターン内の係数を考慮するときの、TB内の最後の有効な残差係数位置を示す。TBの最後の位置1228が第2変換領域内の係数のみが有効であること、すなわち、第1変換のみを受ける残りのすべての係数を示す場合、第2変換インデックスは、第2変換を適用するか否かを指定するようにシグナリングされる。
第2変換が適用され、複数の第2変換カーネルが利用可能な場合、その第2変換インデックスはどのカーネルが選択されているかを示す。一般的には、1つのカーネルが利用可能であるか、あるいは「候補セット」で2つのカーネルが利用可能である。この候補セットは、ブロックのイントラ予測モードから決定される。一般的には、4つの候補セットがあるが、より少ない候補セットがあってもよい。上述したように、輝度及び彩度のための第2変換の使用、従って選択されるカーネルは、輝度及び彩度チャネルのためのイントラ予測モードにそれぞれ依存する。このカーネルは対応する輝度及び彩度TBのブロックサイズにも依存する。彩度について選択されるそのカーネルは、ビットストリームの彩度サブサンプリングにも依存する。利用可能なカーネルが1つだけの場合、シグナリングは制限され、第2変換(インデックス範囲0~1)を適用する、又は適用しない。2つのカーネルが利用可能な場合、インデックス値は0(適用されない)、1(最初のカーネルを適用)、又は2(2番目のカーネルを適用)になる。彩度については、同じ第2変換カーネルが各彩度チャネルに適用され、したがって、Cbブロック1224及びCrブロック1226の残差は、図9A~Dを参照して説明したように、第2変換を受ける位置に有効係数を含めるだけでよい。ジョイントCbCrコーディングが使用される場合、結果として生じるCb及びCr残差はジョイントコーディングTB内の有効係数に対応する位置に有効係数のみを含むので、第2変換を受ける位置に有効係数のみを含むための要件は単一のコーディング彩度TBにのみ適用可能である。所与の第2インデックスの適用可能な色チャネルが単一のTB(単一の最後の位置、例えば1228)によって記述される場合、すなわち、結合CbCrコーディングが使用されているときに、輝度が常に1つのTBのみを必要とし、彩度が1つのTBを必要とする場合、第2変換インデックスは、TUの後の代わりに最後の位置をコーディングした直後に、すなわち、1220(又は1221)の代わりにインデックス1230としてコーディングされ得る。ビットストリーム内でより早く第2変換をシグナリングすることにより、ビデオデコーダ134は残差係数1232の各残差係数が復号されるにつれて第2変換の適用を開始することができ、システム100におけるレイテンシを低減する。
ビデオエンコーダ114及びビデオデコーダ134の構成において、ジョイントCbCrコーディングが使用されないとき、各彩度TB、すなわち1224及び1226に対して別個の第2変換インデックスがシグナリングされ、その結果、各カラーチャネルに対する第2変換の独立した制御が行われる。各TBが独立して制御される場合、各TBのための第2変換インデックスは、(結合CbCrモードの適用にかかわらず)輝度及び彩度のための対応するTBの最後の位置の直後にシグナリングされてもよい。
図13はフレームデータ113をビットストリーム115へと符号化する方法1300を示し、ビットストリーム115は、コーディングツリーユニットのシーケンスとして1つ以上のスライスを含む。方法1300は、構成されたFPGA、ASIC、又はASSPなどの装置によって実装されてもよい。さらに、方法1300は、プロセッサ205の実行下でビデオエンコーダ114によって実行されてもよい。フレームを符号化するワークロードのために、方法1300の工程は例えば、異なるスライスが異なるプロセッサによって符号化されるような、現代のマルチコアプロセッサを使用して、ワークロードを共有するために、異なるプロセッサで実行されてもよい。さらに、分割制約及び量子化グループ定義はビットストリーム115の各部分(スライス)を符号化する際のレート制御の目的に有益であると考えられるように、スライスごとに異なってもよい。各コーディングユニットの残差を符号化する際のさらなる柔軟性のために、量子化グループの細分割レベルがスライスごとに異なり得るだけでなく、第2変換の適用は、輝度及び彩度について独立して制御可能である。そのようなものとして、方法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へと符号化する。工程1330の実施例は、図14を参照して以下に提供される。
方法1300は、工程1330からCTUへのスライス分割工程1340に続く。工程1340の実行において、ビデオエンコーダ114は、スライス1116をCTUのシーケンスに分割する。スライス境界はCTU境界に整列され、スライス内のCTUはCTUスキャン順序、一般的にはラスタスキャン順序に従って順序付けられる。CTUへのスライスの分割は、現在のスライスを符号化する際にフレームデータ113のどの部分がビデオエンコーダ113によって処理されるべきかを確立する。
方法1300は、工程1340からコーディングツリー決定工程1350に続く。工程1350において、ビデオエンコーダ114は、スライス内の現在選択されているCTUのコーディングツリーを決定する。方法1300は工程1350の最初の呼び出し時にスライス1116内の最初のCTUから開始し、後続の呼び出し時にスライス1116内の後続のCTUに進む。CTUのコーディングツリーを決定する際には、ブロックパーティションパーティショナー310によって、クアッドツリー、バイナリ、及びターナリ分割の様々な組み合わせが生成され、テストされる。
方法1300は、工程1350からコーディングユニット決定工程1360に続く。工程1360において、ビデオエンコーダ114は、既知の方法を使用して評価中の様々なコーディングツリーから得られるCUの「最適な」符号化を決定するために実行する。最適な符号化を決定することは、予測モード(例えば、特定のモードによるイントラ予測又は動きベクトルによるインター予測)、変換選択(第1変換タイプ及び任意選択の第2変換タイプ)を決定することを含む。輝度TBのための第1変換タイプがDCT-2であると決定されるか、又は順方向する第2変換を受けない任意の量子化された第1変換係数が有効である場合、輝度TBのための第2変換インデックスは、第2変換の適用を受ける。さもなければ、輝度に対する第2変換インデックスは、第2変換のバイパスを示す。輝度チャネルの場合、第1変換タイプはDCT-2、変換スキップ、又は彩度チャネルのMTSオプションのうちの1つと判定され、DCT-2は利用可能な変換タイプである。第2変換タイプの判定は、図19A及び19Bを参照してさらに説明される。その符号化を決定することは、量子化グループ境界にあるQPを変更することが可能な量子化パラメータを決定することを含むこともできる。個々のコーディングユニットを決定する際に、最適なコーディングツリーも、共同で決定される。コーディングユニットがイントラ予測を用いてコーディングされる場合、輝度イントラ予測モード及び彩度イントラ予測が決定される。
コーディングユニット決定工程1360は、DCT-2第1変換の適用から生じる第1ドメイン残差内に存在する「AC」(変換ブロックの左上位置以外の場所の係数)残差係数がない場合に、第2変換のテストの適用を禁止してもよい。第2変換適用を、DC係数のみを含む変換ブロック上でテストした場合(最後の位置は変換ブロックの左上係数のみが有効であることを示す)、符号化利得が見られる。DC一次係数のみが存在する場合の第2変換のテストの禁止は、単一のインデックスがコーディングされるときに、第2変換インデックスが適用されるブロック、すなわち、(Cb及びCrブロックが2つのサンプルの幅又は高さであるときにのみYチャネルを有する)共有ツリーのためのY、Cb及びCrに及ぶ。DC係数のみを有する残差は少なくとも1つのAC係数を有する残差と比較してコーディングコストが低いにもかかわらず、有効DC係数のみを有する残差にさえも第2変換を適用することは、最終的なコーディングDC係数の大きさのさらなる減少をもたらす。コーディングの前のさらなる量子化及び/又は丸め演算の後でさえ、他の(AC)係数は、第2変換の後、ビットストリーム中の有効なコーディング残差係数(複数可)をもたらすには不十分な大きさを有する。共有又は別個のツリーコーディングツリーでは、それぞれの変換ブロックのDC係数のみが存在する場合であっても、第2変換インデックスの適用範囲内で、少なくとも1つの有効な第1係数が存在する場合、ビデオエンコーダ114は非ゼロの第2変換インデックス値の選択(すなわち、第2変換の適用)をテストする。
方法1300は、工程1360からコーディングユニット符号化工程1370に続く。工程1370において、ビデオエンコーダ114は、工程1360での決定されたコーディングユニットをビットストリーム115へと符号化する。コーディングユニットがどのように符号化されるかの例は、図15を参照してより詳細に説明される。
方法1300は、工程1370から最後のコーディングユニットテスト工程1380に続く。工程1380において、プロセッサ205は、現在のコーディングユニットがCTU内の最後のコーディングユニットであるかどうかをテストする。そうでない場合(工程1380で「NO」)、プロセッサ205の制御はコーディングユニット決定工程1360に進む。そうではなく、現在のコーディングユニットがプロセッサ205内の最後のコーディングユニットである場合(工程1380で「YES」)、制御は最後の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は、パーティション制約上書き有効化テスト工程1410で開始する。工程1410で、プロセッサ205はSPS1110で符号化されたように、パーティション制約が有効フラグを上書きするかどうかをテストし、パーティション制約がスライスレベルで上書きされ得ることを示す。パーティション制約がスライスレベルで上書きされてもよい場合(工程1410で「YES」)、プロセッサ205の制御は、パーティション制約決定工程1420に進む。そうではなく、パーティション制約がスライスレベルで上書きされない可能性がある場合(工程1410で「NO」)、プロセッサ205の制御は、他パラメータ符号化工程1480に進む。
パーティション制約決定工程1420において、プロセッサ205は現在のスライス1116に適したパーティション制約(例えば、最大MTT分割深度)を決定する。一例では、フレームデータ310は、2Dフレームにマッピングされ、いくつかのサブピクチャに分割されたシーンの360度ビューの投射を含む。選択されたビューポートに応じて、あるスライスはより高い忠実度を必要とする場合があり、他のスライスは、より低い忠実度を必要とする場合がある。所与のスライスに対するパーティション制約は(例えば、工程1340に従って)スライスによって符号化されたフレームデータ310のその部分の忠実度要件に基づいて設定されてもよい。より低い忠実度が許容可能であると見なされる場合、より大きなCUを有するより浅いコーディングツリーが許容可能であり、したがって、最大MTT深度は、より低い値に設定され得る。フラグcu_qp_delta_subdivを用いてシグナリングされる細分割レベル1136は、少なくとも、決定された最大MTT深度1134から得られる範囲において、それに応じて決定される。対応する彩度細分割レベルも決定され、シグナリングされる。
方法1400は、工程1420からパーティション制約上書きフラグ符号化工程1430に続く。工程1430において、エントロピーエンコーダ338は、SPS1110においてシグナリングされたパーティション制約がスライス1116に対して上書きされるべきかどうかを示すフラグをビットストリーム115へと符号化する。工程1420において、現在のスライスに特有のパーティション制約が導出された場合、フラグ値は、パーティション制約上書き機能の使用を示す。工程1420で決定された制約が、SPS1110で既に符号化されているものと一致する場合、信号を送るべき変更はなく、フラグ値はそれに応じて符号化されるので、パーティション制約を上書きする必要はない。
方法1400は、工程1430からパーティション制約上書きテスト工程1440に続く。工程1440で、プロセッサ205は、工程1430で符号化されたフラグ値をテストする。フラグがパーティション制約が上書きされることを示す場合(工程1440で「YES」)、プロセッサ205の制御は、スライスパーティション制約符号化工程1450に進む。そうではなく、パーティション制約が上書きされない場合(工程1440で「NO」)、プロセッサ205の制御は、他パラメータ符号化工程1480に進む。
方法1400は、工程1440からスライスパーティション制約符号化工程1450に続く。工程1450の実行において、エントロピーエンコーダ338は、スライスについて決定されたパーティション制約をビットストリーム115へと符号化する。スライスのパーティション制約には「slice_max_mtt_hierarchy_depth_luma」が含まれ、そこからMaxMttDepthY1134が導出される。
方法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」構文要素は、コーディングユニットのためのイントラ予測、インター予測、又は他の予測モードの使用を区別するために符号化される。コーディングユニットにイントラ予測が使用される場合、輝度イントラ予測モードが符号化され、彩度イントラ予測モードが符号化される。コーディングユニットにインター予測が使用される場合、「マージインデックス」はこのコーディングユニットによって使用される隣接するコーディングユニットから動きベクトルを選択するために符号化されてもよく、動きベクトルデルタは空間的に隣接するブロックから導出された動きベクトルにオフセットを導入するために符号化されてもよい。第1変換タイプはDCT-2の使用を水平及び垂直に選択し、変換スキップを水平及び垂直に、又はDCT-8及びDST-7の組合せを水平及び垂直にコーディングユニットの輝度TBのために選択するように符号化される。
方法1500は、工程1510からコーディング残差テスト工程1520に続く。工程1520で、プロセッサ205は、残差がコーディングユニットのためにコーディングされる必要があるかどうかを決定する。コーディングユニットについてコーディングされるべき有効な残差係数がある場合(工程1520で「YES」)、プロセッサ205の制御は、新しいQGテスト工程1530に進む。そうではなく、コーディングについて有効な残差係数がない場合(工程1520で「いいえ」)、コーディングユニットを復号するために必要なすべての情報がビットストリーム115に存在するので、方法1500は終了する。
新しいQGテスト工程1530で、プロセッサ205は、コーディングユニットが新しい量子化グループに対応するかどうかを決定する。コーディングユニットがプロセッサ205内の新しい量子化グループに対応する場合(工程1530で「YES」)、制御は、デルタQP符号化工程1540に進む。そうではなく、コーディングユニットがプロセッサ205内の新しい量子化グループ(工程1530で「NO」)制御に関係しない場合、第1変換工程1550を実行するように進む。各コーディングユニットを符号化する際に、CTUのコーディングツリーのノードが工程1530で横断される。現在のノードの子ノードのいずれかが、「cu_qp_delta_subdiv」から決定されるような、現在のスライスに対する細分割レベル1136以下の細分割レベルを有するとき、新しい量子化グループはノードに対応するCTUの領域で開始し、工程1530は「YES」を返す。コーディングされた残差を含む量子化グループの第1CUはまた、コーディングされたデルタQPを含み、この量子化グループの残差係数に適用可能な量子化パラメータへの任意の変更をシグナリングする。
デルタQP符号化工程1540において、エントロピーエンコーダ338は、デルタQPをビットストリーム115へと符号化する。デルタQPは、予測されたQPと、現在の量子化グループで使用するための意図されたQPとの間の差を符号化する。この予測されたQPは、隣接するより早い(上及び左の)量子化グループのQPを平均することによって導出される。細分割レベルがより低いとき、量子化グループはより大きく、デルタQPはより少ない頻度でコーディングされる。デルタQPのより少ない頻度のコーディングは、QPにおけるシグナリング変更のためのより低いオーバヘッドをもたらすが、レート制御におけるより少ない柔軟性ももたらす。量子化グループごとの量子化パラメータの選択は、QP制御モジュール390によって実行され、QP制御モジュールは基本となるフレームデータ113の統計量の変化に少し独立して、ビットストリーム115のための特定のビットレートを目標とするために、典型的にはレート制御アルゴリズムを実装する。方法1500は、工程1540から第1変換実行工程1550に続く。
第1変換実行工程1550において、順方向第1変換モジュール326はコーディングユニットの第1変換タイプに従って第1変換を実行し、その結果、第1変換係数328が得られる。第1変換は、各色チャネル上で、最初に輝度チャネル(Y)上で実行され、次いで、現在のTUのための工程1550の後続の呼出し時にCb及びCr TB上で実行される。輝度チャネルについては第1変換タイプ(DCT-2、変換スキップ、MTSオプション)が実行され、彩度チャネルについてはDCT-2が実行される。
方法1500は、工程1550から第1変換係数量子化工程1560に続く。工程1560において、量子化モジュール334は量子化パラメータ392に従って第1変換係数328を量子化し、量子化された第1変換係数332を生成する。デルタQPは、変換係数328を符号化するために存在する場合に使用される。
方法1500は工程1560から続き、第2変換工程1570を実行する。工程1570において、第2変換モジュール330は量子化された第1変換係数332に対して、現在の変換ブロックに対する第2変換インデックス388に従って第2変換を実行し、第2変換係数336を生成する。第2変換は量子化の後に実行されるが、第1変換係数328は量子化パラメータ392の最終的な意図された量子化工程サイズと比較して、より高い精度を保持することができ、例えば、量子化パラメータ392の適用から直接得られるであろうものよりも、大きさは16倍大きくすることができ、すなわち、4ビットの追加の精度が保持されるであろう。量子化された第1変換係数332内に追加の精度ビットを保持することにより、第2変換モジュール330は、一次係数ドメイン内の係数に対してより高い精度で動作することができる。第2変換の適用後、工程1560における最終スケーリング(例えば、4ビットによる右シフト)は、量子化パラメータ392の意図された量子化工程サイズへの量子化をもたらす。「スケーリングリスト」の適用は、トレーニングされた第2変換カーネルから生じる第2変換係数で動作するのではなく、周知の変換基底関数(DCT-2、DCT-8、DST-7)に対応する第1変換係数で実行される。変換ブロックに対する第2変換インデックス388が第2変換の適用を示さない場合(ゼロに等しいインデックス値)、第2変換はバイパスされる。すなわち、第1変換係数332は第2変換係数336になるように、変更されずに第2変換モジュール330を通って伝播される。輝度第2変換インデックスは、輝度イントラ予測モードと共に、輝度TBに適用するための第2変換カーネルを選択するために使用される。彩度第2変換インデックスは、彩度イントラ予測モードと共に、彩度TBに適用するための第2変換カーネルを選択するために使用される。
方法1500は、工程1570から最後の位置符号化工程1580に続く。工程1580において、エントロピーエンコーダ338は、現在の変換ブロックのための第2変換係数336内の最後の有効係数の位置をビットストリーム115へと符号化する。工程1580の最初の呼び出し時に、輝度TBが考慮され、その後の呼び出しはCb、次いでCr TBを考慮する。
第2変換インデックス388が最後の位置の直後に符号化される構成では、方法1500がLFNSTインデックス符号化工程1590に進む。工程1590で、エントロピーエンコーダ338は、工程1580で符号化された最後の位置に基づいて第2変換インデックスがゼロであると推測されなかった場合、切り捨てられた単項コードワードを使用して、第2変換インデックス338を「lfnst_index」としてビットストリーム115に符号化する。各CUは1つの輝度TBを有し、輝度ブロックに対して工程1590が実行されることを可能にし、「ジョイント」コーディングモードが彩度に対して使用されるとき、単一の彩度TBがコーディングされ、したがって、工程1590は、彩度に対して実行され得る。各残差係数を復号する前の第2変換インデックスの知識は、係数が復号されるときに、例えば乗算及び累算ロジックを使用して、係数ごとに第2変換を適用することを可能にする。方法1500は、工程1590からサブブロック符号化工程15100に続く。
第2変換インデックス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の制御は第1変換実行工程1550に戻り、次のTB(Cb又はCrが選択される)が選択される。
工程1550~15110は予測モードがイントラ予測であり、DCT-2を使用する共有コーディングツリー構造の例に関連して説明される。第1変換を実行する(1550)、第1変換係数を量子化する(1560)、最後の位置を符号化する(1590)などの工程の動作は既知の方法を使用して、インター予測モードのために、又は共有コーディングツリー構造以外のイントラ予測モードのために実施され得る。工程1510~1540は、予測モード又はコーディングツリー構造にかかわらず実施することができる。
方法1500は、工程15110から、輝度LFNSTインデックスを符号化する工程15120に続く。工程15120において、輝度TBに適用された第2変換インデックスは、ゼロであると推測されない場合(第2変換が適用されない場合)、エントロピーエンコーダ338によってビットストリーム115へと符号化される。輝度第2変換インデックスは、輝度TBの最後の有効位置が有効な第1のみの残差係数を示す場合、又はDCT-2以外の第1変換が実行される場合、ゼロであると推定される。加えて、輝度TBに適用される第2変換インデックスは、イントラ予測及び共有コーディングツリー構造を使用して、コーディングユニットについてのみビットストリームへと符号化される。輝度TBに適用される第2変換インデックスは、フラグ1220(又はジョイントCbCrモードのためのフラグ1230)を使用して符号化される。
方法1500は、工程15120から彩度LFNSTインデックス符号化工程15130に続く。工程1530において、彩度TBに適用される第2変換インデックスは、その彩度第2変換インデックスがゼロであると推測されない場合(第2変換が適用されない場合)、エントロピーエンコーダ338によってビットストリーム115へと符号化される。いずれかの彩度TBの最後の有効位置が有効な第1のみの残差係数を示す場合、彩度第2変換インデックスはゼロであると推測される。方法1500は、工程15130の実行時に終了し、プロセッサ205内の制御は方法1300に戻る。彩度TBに適用される第2変換インデックスは、イントラ予測及び共有コーディングツリー構造を使用して、コーディングユニットについてのみビットストリームへと符号化される。彩度TBに適用される第2変換インデックスは、フラグ1221(又はジョイントCbCrモードのためのフラグ1230)を使用して符号化される。
図16は、スライスに配列されたコーディングユニットのシーケンスとしてビットストリームからフレームを復号するための方法1600を示す。方法1600は、構成されたFPGA、ASIC、又はASSPなどの装置によって実装されてもよい。さらに、方法1600は、プロセッサ205の実行中にビデオデコーダ134によって実行されてもよい。そのようなものとして、方法1600は、コンピュータ可読記憶媒体及び/又はメモリ206に記憶することができる。
方法1600は、分割制約及び量子化グループ定義がビットストリーム115の各部分(スライス)を符号化する際のレート制御の目的に有益であると考えられるように、スライスごとに異なり得る方法1300を使用して、符号化されたビットストリームを復号する。量子化グループの細分割レベルがスライス毎に異なり得るだけでなく、第2変換の適用は、輝度及び彩度について独立して制御可能である。
方法1600は、SPS/PPS復号工程1610で始まる。工程1610の実行において、ビデオデコーダ134は、固定長及び可変長パラメータのシーケンスとして、ビットストリーム133からSPS1110及びPPS1112を復号する。partition_constraints_override_enabled_flagは、SPS1110の一部として復号され、各スライス(1116など)のスライスヘッダ(1118など)でパーティション制約を上書きできるかどうかを示す。デフォルト(すなわち、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のために復号が実行される。コーディングツリーがイントラ予測モードと共有コーディングツリー構造とを使用して符号化された場合、そのコーディングユニットは、第1色チャネル(輝度又はY)並びに少なくとも1つの第2色チャネル(彩度、Cb及びCr又はCbCr)を有する。この場合、コーディングツリーを復号することは、コーディングツリーユニットの分割フラグに従って、第1色チャネル及び少なくとも1つの第2色チャネルを含むコーディングユニットを復号することに関する。
方法1600は、工程1660からコーディングユニット復号工程1670に続く。工程1670において、ビデオデコーダ134は、ビットストリーム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で「いいえ」)、プロセッサ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から復号されたように、パーティション制約が有効フラグを上書きするかどうかをテストし、パーティション制約がスライスレベルで上書きされ得ることを示す。パーティション制約が、プロセッサ205内のスライスレベル制御で上書きされてもよい場合(工程1710で「YES」)、復号パーティション制約上書きフラグ工程1720に進む。そうではなく、パーティション制約上書き有効フラグが、プロセッサ205内のスライスレベル制御で制約が上書きされない可能性があることを示す場合(工程1710で「NO」)、他パラメータ復号工程1770に進む。
パーティション制約上書きフラグ復号工程1720において、エントロピーデコーダ420は、ビットストリーム133からパーティション制約上書きフラグを復号する。復号されたフラグは、現在のスライス1116に対して、SPS1110に示されたパーティション制約を上書きするかどうかを示す。
方法1700は、工程1720からパーティション制約上書きテスト工程1730に続く。工程1730の実行において、プロセッサ205は、工程1720で復号されたフラグ値をテストする。復号されたフラグがパーティション制約を上書きすべきであることを示す場合(工程1730において「YES」)、プロセッサ205における制御は復号スライスパーティション制約工程1740に進む。そうではなく、プロセッサ205におけるパーティション制約を上書きすべきでないことを示す場合(工程1730において「NO」)、復号されたフラグは、他パラメータを復号する工程1770に進む。
復号スライスパーティション制約工程1740において、エントロピーデコーダ420は、ビットストリーム133からのスライスについて決定されたパーティション制約を復号する。スライスのパーティション制約には「slice_max_mtt_hierarchy_depth_luma」が含まれ、そこからMaxMttDepthY1134が導出される。
方法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において、このコーディングユニットによって使用される隣接するコーディングユニットからの動きベクトルを決定するために復号されてもよく、動きベクトルデルタは空間的に隣接するブロックから導出された動きベクトルにオフセットを導入するために復号されてもよい。工程1810において第1変換タイプは、DCT-2の使用を水平及び垂直に選択し、変換スキップを水平及び垂直に選択し、又はDCT-8とDST-7との組合せを水平及び垂直にコーディングユニットの輝度TBのために選択するように復号される。
方法1800は、工程1810から残差テストコーディング工程1820に続く。工程1820の実行において、プロセッサ205は、エントロピーデコーダ420を使用してコーディングユニットの「ルートコーディングブロックフラグ」を復号することによって、残差をコーディングユニットのために復号する必要があるかどうかを決定する。コーディングユニットについて復号されるべき有効な残差係数がある場合(工程1820で「YES」)、プロセッサ205の制御は、新しいQGテスト工程1830に進む。そうではなく、復号すべき残差係数がない場合(工程1820で「いいえ」)、コーディングユニットを復号するのに必要なすべての情報がビットストリーム115で得られたため、方法1800は終了する。方法1800が終了すると、図4を参照して説明したように、PB生成、インループフィルタリングの適用などの後続する工程が実行され、復号サンプルが生成される。
新しいQGテスト工程1830において、プロセッサ205は、コーディングユニットが新しい量子化グループに対応するかどうかを決定する。コーディングユニットが新しい量子化グループに対応する場合(工程1830で「YES」)、プロセッサ205の制御は、復号デルタQP工程1840に進む。そうではなく、コーディングユニットが新しい量子化グループに対応しない場合(工程1830で「いいえ」)、プロセッサ205の制御は、最終位置復号工程1850に進む。新しい量子化グループは、現在のモード又はコーディングユニットの細分割レベルに関連する。各コーディングユニットを復号する際に、CTUのコーディングツリーのノードが横断される。現在のノードの子ノードのいずれかが、現在のスライスの細分割レベル1136以下の細分割レベル、すなわち「cu_qp_delta_subdiv」から決定されるような細分割レベルを持つ場合、新しい量子化グループはノードに対応するCTUの領域で開始される。コーディング残差係数を含む量子化グループの第1CUはまた、コーディングされたデルタQPを含み、この量子化グループの残差係数に適用可能な量子化パラメータへの任意の変更をシグナリングする。実際には、1つの(多くとも1つの)量子化パラメータデルタが各エリア(量子化グループ)に対して復号される。図8A~図8Cに関連して説明したように、各エリア(量子化グループ)は各スライスのコーディングツリーユニットの分解、及び対応する細分割レベル(例えば、工程1460及び1470で符号化される)に基づく。言い換えれば、各エリア又は量子化グループは、コーディングユニットに関連付けられた細分割レベルと、対応する連続部分について決定された細分割レベルとの比較に基づく。
デルタQP復号工程1840において、エントロピーデコーダ420は、デルタQPをビットストリーム133から復号する。デルタQPは、予測されたQPと、現在の量子化グループで使用するための意図されたQPとの間の差を符号化する。この予測されたQPは、隣接する(左上の)量子化グループのQPを平均することによって導出される。
方法1800は、工程1840から最終位置復号工程1850に続く。工程1850の実行において、エントロピーデコーダ420は、現在の変換ブロックのための第2変換係数424内の最後の有効係数の位置をビットストリーム133から復号する。工程1850が最初に呼び出されると、輝度TBに対してこの工程が実行される。現在のCUに対する工程1850の後続の呼出しにおいて、Cb TBに対してこの工程が実行される。最後の位置が輝度ブロック又は彩度ブロックのための第2変換係数セットの外側(すなわち、928又は966の外側)の有効係数を示す場合、輝度チャネル又は彩度チャネルのための第2変換インデックスは、それぞれゼロであると推測される。この工程は、Cbに対する反復の後に、Cr TBに対して実行される。
図15の工程1590に関連して説明したように、いくつかの構成では、第2変換インデックスがコーディングユニットの最後の有効係数位置の直後に符号化される。同じコーディングユニットを復号する際に、工程1840で復号されたTBの最後の位置の場所に基づいて、第2変換インデックス470がゼロであると推定されなかった場合、第2変換インデックス470は、コーディングユニットの最後の有効な残差係数の場所を復号した直後に復号される。第2変換インデックス470がコーディングユニットの最後の有効係数位置の直後に復号される構成では、方法1800が工程1850からLFNSTインデックス復号工程1860に続く。工程1860の実行において、エントロピーデコーダ420は全ての有効係数が二次逆変換(例えば、928又は966内)を受けるときに、切り捨てられた単項コードワードを使用して、ビットストリーム133からの第2変換インデックス470を「lfnst_index」として復号する。第2変換インデックス470は単一の変換ブロックを使用して彩度TBのジョイントコーディングが実行されるときに、輝度TB又は彩度について復号されることができる。方法1800は、工程1860からサブブロック復号工程1870に続く。
第2変換インデックス470がコーディングユニットの最後の有効位置の直後に復号されない場合、方法1800は、工程1850からサブブロック復号工程1870に続く。工程1870で、現在の変換ブロックの残差係数、すなわち424が、ビットストリーム133から一連のサブブロックとして復号され、最後の有効係数位置を含むサブブロックからDC残差係数を含むサブブロックに戻る。
方法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を第1変換として水平及び垂直に使用している場合、輝度TBに適用される第2変換インデックス470は、エントロピーデコーダ420によってビットストリーム133から復号される。輝度TBの最後の有効位置が第2逆変換を受ける係数のセットの外側(例えば、928又は966の外側)に有効な第1係数が存在することを示す場合、輝度第2変換インデックスはゼロであると推測される(第2変換は適用されない)。工程1890で復号された第2変換インデックスは、図12の1220(又はジョイントCbCrモードの1230)として示される。
方法1800は工程1890から、彩度LFNSTインデックス復号工程1895に続く。工程1895において、各彩度TBの最後の位置が第2逆変換(例えば、928又は966)を被写体係数のセット内にある場合、彩度TBに適用される第2変換インデックス470は、エントロピーデコーダ420によってビットストリーム133から復号される。いずれかの彩度TBの最後の有効位置が第2逆変換を受ける係数のセットの外側(例えば、928又は966の外側)に有効な第1係数の存在を示す場合、彩度第2変換インデックスはゼロであると推測される(第2変換は適用されない)。工程1895で復号された第2変換インデックスは、図12の1221(又はジョイントCbCrモードの1230)として示される。輝度と彩度のための別個のインデックスを復号する際には、切り捨てられた各単項コードワードのための別個の算術コンテキストが使用されてもよく、又は輝度及び彩度切り捨てられた単項コードワードのそれぞれのn番目のビンが同じコンテキストを共有するように、そのコンテキストが共有されてもよい。
実質的には、工程1890及び1895が第1インデックス(1220など)を復号して、輝度(原色)チャネルのためのカーネルを選択し、第2インデックス(1221など)を復号して、少なくとも1つの彩度(第2色チャネル)のためのカーネルをそれぞれ選択することに関する。
方法1800は、工程1895から続き、逆第2変換工程18100を実行する。この工程において、逆第2変換モジュール436は第2変換係数432を生成するために、復号された残差変換係数424上の電流変換ブロックに対して、第2変換インデックス470に従って逆第2変換を行う。工程1890で復号された第2変換インデックスは輝度TBに適用され、工程1895で復号された第2変換インデックスは彩度TBに適用される。輝度及び彩度のためのカーネル選択は、輝度イントラ予測モード及び彩度イントラ予測モード(それぞれ、工程1810で復号された)にもそれぞれ依存する。工程18100では、輝度のLFNSTインデックスに従ってカーネルを選択し、彩度のLFNSTインデックスに従ってカーネルを選択する。
方法1800は、工程18100から第1変換係数逆量子化工程18110に続く。工程18110において、逆量子化器モジュール428は、量子化パラメータ474に従って第2変換係数432を逆量子化して、逆量子化された第1変換係数440を生成する。工程1840でデルタQPが復号された場合、エントロピーデコーダ420は、量子化グループ(エリア)のデルタQPと、画像フレームの以前のコーディングユニットの量子化パラメータとに従って、その量子化パラメータを決定する。上述したように、この以前のコーディングユニットは、典型的には隣接する左上のコーディングユニットに関連する。
方法1800は、工程1870から続き、第1変換実行工程18120に進む。工程1820において、逆第1変換モジュール444はコーディングユニットの第1変換タイプに従って逆第1変換を実行し、その結果、変換係数440が空間ドメインの残差サンプル448に変換されている。逆第1変換は、各色チャネル上で、最初に輝度チャネル(Y)上で、次に、現在のTUのための工程1650の後続の呼出し時にCb及びCr TB上で実行される。工程18100~18120は、工程1890において輝度についてLFNSTインデックスに従って選択されたカーネルを輝度チャネルの復号された残差係数に適用することにより、及び工程1890において彩度についてLFNSTインデックスに従って選択されたカーネルを少なくとも1つの彩度チャネルのための復号された残差係数に適用することにより、実質的に現在のコーディングユニットを復号するように動作する。
方法1800は、工程18120の実行時に終了し、プロセッサ205内の制御は方法1600に戻る。
工程1850~18120は、予測モードがイントラ予測であり、その変換がDCT-2である共有コーディングツリー構造の例に関連して説明される。例えば、輝度TBに適用される第2変換インデックスはイントラ予測及び共有コーディングツリー構造を使用するコーディングユニットについてのみ、ビットストリームから復号される(1890)。同様に、彩度TBに適用される第2変換インデックスは、イントラ予測及び共有コーディングツリー構造を使用して、コーディングユニットについてのみビットストリームから復号される(1895)。サブブロックを復号する(1870)、第1変換係数を逆量子化する(18110)、及び第1変換を実行するなどの工程の動作は既知の方法を使用して、インター予測モードのために、又は共有コーディングツリー構造のため以外のイントラ予測モードのために実施され得る。工程1810~1840は、予測モード又は構造にかかわらず、説明した手法で実行される。
方法1800が終了すると、モジュール476によってイントラ予測サンプル480を生成し、モジュール450によって復号された残差サンプル448を予測ブロック452と合計し、インループフィルタモジュール488を適用してフィルタリングされたサンプル492を生成し、フレームデータ135として出力することを含む、コーディングユニットを復号するための後続する工程が実行される。
図19A及び19Bは、輝度及び彩度チャネルへの第2変換の適用又はバイパスのためのルールを示す。図19Aは、共有コーディングツリーから生じるCU内の輝度チャネル及び彩度チャネルにおける第2変換の適用のための条件を例示する表1900を示す。
輝度TBの最後の有効係数位置が順方向第2変換から生じなかった復号有効係数を示し、したがって逆第2変換を受けない場合、条件1901が存在する。輝度TBの最後の有効係数位置が順方向第2変換から生じた復号された有効係数を示し、したがって逆第2変換を受ける場合、条件1902が存在する。さらに、輝度チャネルの場合、条件1902が存在するためには第1変換タイプはDCT-2である必要があり、そうでない場合は条件1901が存在する。
1つ又は2つの彩度TBの最後の有効係数位置が順方向第2変換から生じなかった復号有効係数を示し、したがって逆第2変換を受けない場合、条件1910が存在する。1つ又は2つの彩度TBの最後の有効係数位置が順方向第2変換から生じた復号された有効係数を示し、したがって逆方向第2変換を受ける場合、条件1911が存在する。さらに、彩度ブロックの幅及び高さは、条件1911が存在するために、少なくとも4つのサンプルである必要がある(例えば、4:2:0又は4:2:2の彩度フォーマットが使用される場合の彩度サブサンプリングは2つのサンプルの幅又は高さをもたらすことができる)。
条件1901及び1910が存在する場合、第2変換インデックスは、(独立して、又は一緒に)シグナリングされず、輝度又は彩度において適用されない(すなわち1920)。条件1901と1911が存在する場合、1つの第2変換インデックスがシグナリングされ、選択されたカーネルの適用、又は輝度チャネルのみのバイパス、すなわち1921が示される。条件1902と1910が存在する場合、1つの第2変換インデックスがシグナリングされ、選択されたカーネルの適用、又は彩度チャネルのみのバイパス、すなわち1922が示される。条件1911及び1902が存在する場合、独立したシグナリング信号を有する構成は2つの第2変換インデックス、すなわち、1つは輝度TBのためのものであり、もう1つは彩度TBのためのもの、すなわち、1923のためのものである。単一のシグナリングされた第2変換インデックスを有する構成は、条件1902及び1911が存在するときに、輝度及び彩度の選択を制御するために1つのインデックスを使用するが、この選択されたカーネルは輝度及び彩度イントラ予測モードにも依存し、これが異なっていてもよい。輝度又は彩度(すなわち、1921及び1922)のいずれかに第2変換を適用する能力は、符号化効率利得をもたらす。
図19Bは、工程1360でビデオエンコーダ114が利用可能な探索オプションのテーブル1950を示す。輝度(1952)及び彩度(1953)の第2変換インデックスは、それぞれ1952及び1953として示されている。インデックス値0は第2変換がバイパスされることを示し、インデックス値1及び2は、輝度又は彩度イントラ予測モードから導出された候補セットの2つのカーネルのうちのどちらが使用されるかを示す。9つの組合せの結果として得られる探索空間が存在し(「0,0」から「2,2」)、これは、図19Aを参照して説明した制約に左右されて制約され得る。すべての許容可能な組合せを探索することと比較して、3つの組合せの単純化された探索(1951)は輝度及び彩度の第2変換インデックスが同じである組合せだけをテストすることができ、最後の有効係数位置が一次のみの係数が存在することを示すチャネルのインデックスをゼロにすることを条件とする。例えば、条件1921が存在する場合、オプション「1,1」及び「2,2」はそれぞれ「0,1」及び「0,2」になる(すなわち、1954)。条件1922が存在する場合、オプション「1,1」及び「2,2」はそれぞれ「1,0」及び「2,0」になる(すなわち、1955)。条件1920が存在する場合、第2変換インデックスをシグナリングする必要はなく、オプション「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つの構成では、彩度イントラ予測ブロックの第2変換インデックスは常にゼロに設定され、すなわち、第2変換は彩度イントラ予測ブロックには適用されない。この場合、彩度第2変換インデックスをシグナリングする必要はなく、したがって、工程15130及び1895を省略することができ、したがって、工程1360、1570、並びに18100が簡略化される。
共有ツリー内のコーディングツリー内のノードが64輝度サンプルのエリアを有する場合、バイナリ又はクアッドツリー分割でさらに分割すると、4×4ブロックなどのより小さな輝度CBが得られるが、より小さな彩度CBは得られない。代わりに、4×4彩度CBのような64輝度サンプルのエリアに対応するサイズの単一の彩度CBが存在する。同様に、128輝度サンプルのエリアを有し、ターナリ分割を受けるコーディングツリーノードは、より小さな輝度CBと1つの彩度CBの集合を結果として得る。各輝度CBは対応する輝度第2変換インデックスを有し、彩度CBは彩度第2変換インデックスを有する。
コーディングツリー内のノードが64のエリアを有し、さらなる分割がシグナリングされるか、又は128の輝度サンプルのエリア及びターナリ分割がシグナリングされる場合、その分割は輝度チャネルのみに適用され、結果として生じるCB(各彩度チャネルについていくつかの輝度CB及び1つの彩度CB)は、すべてイントラ予測されるか、又はすべてインター予測される。CUが4つの輝度サンプルの幅又は高さを有し、色チャネル(Y、CB、及びCr)の各々に対して1つのCBを含む場合、そのCUの彩度CBは、2つのサンプルの幅又は高さを有する。2つのサンプルの幅又は高さを有するCBは、16ポイント又は48ポイントのLFNSTカーネルでは動作せず、したがって、第2変換を必要としない。2つのサンプルの幅又は高さを有するブロックについて、工程15130、1895、1360、1570、及び18100は、実行される必要はない。
ビデオエンコーダ114及びビデオデコーダ134の別の構成では、輝度及び彩度の一方又は両方が第1変換のみを受けるそれぞれのTBの領域内に非有効残差係数のみを含む場合に、単一の第2変換インデックスがシグナリングされる。輝度TBが復号された残差の非第2変換領域(例えば、1066、968)に有効な残差係数を含むか、又は第1変換としてDCT-2を使用しないことが示される場合、示された第2変換カーネル(又は第2変換バイパス)は、彩度TBのみに適用される。いずれかの彩度TBが復号された残差の非第2変換領域に有効な残差係数を含む場合、示された第2変換カーネル(又は第2変換バイパス)は、輝度TBのみに適用される。彩度TBに対してその第2変換の適用が可能でない場合であっても、輝度TBに対して可能になり、逆もまた同様であり、CUの任意のTBが第2変換を受けることができる前に、すべてのTBの最後の位置が第2係数ドメイン内にあることを必要とすることと比較して、符号化効率利得を与える。さらに、共有コーディングツリー内のCUに必要な第2変換インデックスは1つだけである。輝度第1変換がDCT-2である場合、第2変換は、輝度だけでなく彩度についても無効であると推論され得る。
ビデオエンコーダ114及びビデオデコーダ134の別の構成では、第2変換が(それぞれモジュール330及び436によって)CUの輝度TBのみに適用され、CUの任意の彩度TBには適用されない。彩度チャネルのための第2変換ロジックの欠如はより少ない複雑さ、例えば、より少ない実行時間又は減少されたシリコン面積をもたらす。彩度チャネルのための第2変換ロジックの不在は、1つの第2変換インデックスをシグナリングする必要のみ結果として生じさせ、これは輝度TBの最後の位置の後にシグナリングされてもよい。すなわち、工程1590及び1860は工程15120及び1890の代わりに、輝度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)として定義される。この値MaxMyyDepthYは、SPS1110から導出される。つまり、MaxMttDepthYは、現在のスライスがIスライスの場合はsps_max_mtt_hierarchy_depth_intra_slice_lumaに等しく、現在のスライスがP又はBスライスの場合はsps_max_mtt_hierarchy_depth_inter_sliceに等しく設定される。SPS1110でシグナリングされる深度より浅くなるように上書きされたパーティション制約を有するスライスについて、PPS1112から決定される量子化グループ細分割レベルがスライスヘッダから決定されるより浅いコーディングツリー深度下で最も高い達成可能な細分割レベルよりも高い(より深い)場合、lpのスライスの量子化グループ細分割レベルは、そのスライスの最も高い達成可能な細分割レベルに等しくなるようにクリップされる。例えば、特定のスライス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レベルとする)ことを可能にする。細分割レベルがPPS1112内でシグナリングされる構成は、SPS1110から復号されたパーティショニング制約に従って定義された範囲を使用し、スライスヘッダ1118から復号された上書きされたパーティション制約に基づいた後の調整が可能であり、スライスヘッダ1118内でファイナライズされたパーティション制約に応じたPPS構文要素を有するという構文解析に依存する問題を回避する。
[産業上の利用可能性]
記載される構成はコンピュータ及びデータ処理産業に、特にビデオ及び画像信号のような信号の復号のためのデジタル信号処理に適用可能であり、高い圧縮効率を達成する。
本明細書で説明される構成は、入力ビデオデータから高度に圧縮されたビットストリームを生成する際にビデオエンコーダに与えられる柔軟性を増大させる。フレーム内の異なる領域又はサブピクチャの量子化は変化する粒度、及び1つの領域から別の領域への異なる粒度で制御することができ、コーディングされた残差データの量を低減する。したがって、必要に応じて、例えば、上述のような360度画像に対して、より高い粒度を実現することができる。
いくつかの構成では、工程15120及び15130(及び対応する工程1890及び1895)に関連して説明したように、第2変換の適用を輝度及び彩度について独立して制御することができ、コーディングされた残差データのさらなる低減を達成する。ビデオデコーダは、そのようなビデオエンコーダによって生成されたビットストリームを復号するために必要な機能を用いて説明される。
上記は本発明のいくつかの実施形態のみを記載し、本発明の範囲及び精神から逸脱することなく、本発明に修正及び/又は変更を加えることができ、実施形態は例示的であり、限定的ではない。