現在の多用途ビデオコーディング(VVC)開発では、高効率ビデオコーディング(HEVC)規格におけるマージモードが拡張されており、いくつかの新しいマージモードが採用されている。新しいマージモードは、動きベクトル差分付きマージモード(MMVD:Merge Mode with Motion Vector Difference)(本明細書ではMMVDマージモードとも呼ばれる)、アフィンマージ予測(AMP:Affine Merge Prediction)、サブブロックベースの時間動きベクトル予測(SbTMVP:Sub-block-based Temporal Motion Vector Prediction)、三角マージ予測(TMP:Triangle Merge Prediction)、および合成インターイントラ予測(CIIP:Combined Inter and Intra Prediction)を含む。
新しいマージモードにより、どのマージモードが使用されているかを示すために、どのようにビデオエンコーダからビデオデコーダに情報を効率的にシグナリングするかに関する技術的問題が生じる。たとえば、追加されたマージモードが多いほど、それらのモードのすべてをシグナリングするためにより多くのビンが使用される必要がある。シグナリングの順序および構造を効率的な方法で調整することによって、本開示は、ビデオエンコーダがより効率的な帯域幅利用および処理電力消費の低減をもたらし得る方法で情報をビデオデコーダにシグナリングするための例示的な技法について説明する。
たとえば、マージモードはタイプによって分類されることがあり、高確率マージモードは2値化ツリーにおいて低確率マージモードよりも上位に配置され得るので、低確率マージモードよりも少ないビンを用いた高確率マージモードのシグナリングが可能になる。いくつかの例では、例示的な技法は、ビデオデータの所与のブロックを符号化するためにビデオエンコーダによって使用されたマージモードタイプをビデオデコーダが比較的迅速に決定することを可能にすることができ、このことは復号レイテンシを低減することができる。このようにして、例示的な技法は、ビデオコーディング技術を改善し得る、技術的問題に対処するための実際的な適用例を提供する。
図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構成された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
図1に示すように、システム100は、この例では、復号され、宛先デバイス116によって表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス102および宛先デバイス116は、ワイヤレス通信用に装備されることがあり、したがって、ワイヤレス通信デバイスと呼ばれることがある。
図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、および出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、およびディスプレイデバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、マージモードを決定するための情報をコーディングするための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表すが、宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
図1に示すようなシステム100は一例にすぎない。一般に、任意のデジタルビデオ符号化および/または復号デバイスは、マージモードを決定する情報をコーディングするための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116に送信するためのコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化および/または復号)を実行するデバイスを「コーディング」デバイスと呼ぶ。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、具体的には、それぞれ、ビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオ符号化および復号構成要素を含むように実質的に対称的な方法で動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス102と宛先デバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
一般に、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためのデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、受信された順序(「表示順序」と呼ばれることがある)からコーディング用のコーディング順序にピクチャを並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。次いで、ソースデバイス102は、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、符号化されたビデオデータを出力インターフェース108を介してコンピュータ可読媒体110上に出力し得る。
ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオ、およびビデオデコーダ300からの生の復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。この例ではビデオエンコーダ200およびビデオデコーダ300とは別々に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に類似するまたは同等の目的で内部メモリも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の一部は、たとえば、生の復号されたおよび/または符号化されたビデオデータを記憶するための、1つまたは複数のビデオバッファとして割り振られ得る。
コンピュータ可読媒体110は、符号化されたビデオデータをソースデバイス102から宛先デバイス116にトランスポートすることが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、ソースデバイス102が符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にする通信媒体を表す。ワイヤレス通信プロトコルなどの通信規格に従って、出力インターフェース108が符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122が受信された送信信号を変調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
いくつかの例では、ソースデバイス102は、符号化されたデータを出力インターフェース108から記憶デバイス112に出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または、符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたはローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。
いくつかの例では、ソースデバイス102は、符号化されたビデオデータを、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワークアタッチトストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはファイルサーバ114上に記憶された符号化されたビデオデータにアクセスするのに適した両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネットカード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108および入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(ロングタームエボリューション)、LTEアドバンスト、5Gなどのセルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(商標))、Bluetooth(商標)規格などの他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に起因する機能を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に起因する機能を実行するためのSoCデバイスを含み得る。
本開示の技法は、オーバージエアテレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、記憶デバイス112、ファイルサーバ114など)から符号化されたビデオビットストリームを受信する。コンピュータ可読媒体110からの符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオエンコーダ200によって定義され、ビデオデコーダ300によっても使用されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを表し得る。
図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと統合されることがあり、共通のデータストリーム中のオーディオとビデオの両方を含む多重化されたストリームを処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよび/もしくはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
ビデオエンコーダ200およびビデオデコーダ300は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な適切なエンコーダおよび/またはデコーダ回路のいずれかとして実装され得る。技法が部分的にソフトウェアにおいて実装されるとき、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されることがある。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、またはマルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのその拡張に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、多用途ビデオコーディング(VVC)とも呼ばれるITU-T H.266などの、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC規格の草案は、Brossらの「Versatile Video Coding (Draft 5)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Video Experts Team(JVET)、第14回会議: ジュネーブ、スイス、2019年3月19~27日、JVET-N1001-v5(以下では「VVC Draft 5」)に記載されている。VVC規格のさらに最近の草案は、Brossらの「Versatile Video Coding (Draft 9)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Video Experts Team(JVET)、第18回会議: 遠隔会議による、2020年4月15~24日、JVET-R2001-v3に記載されている。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される(たとえば、符号化および/または復号プロセスにおいて符号化される、復号される、または他の方法で使用される)べきデータを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのための赤、緑、および青(RGB)データをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分をコーディングし得、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200が、符号化に先立って、受信されたRGBフォーマットされたデータをYUV表現にコンバートし、ビデオデコーダ300が、YUV表現をRGBフォーマットにコンバートする。代替として、前処理ユニットおよび後処理ユニット(図示せず)が、これらのコンバージョンを実行し得る。
本開示は、一般に、ピクチャのデータを符号化または復号するプロセスを含めるように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセスを含めるように、ピクチャのブロックのコーディング、たとえば、予測および/または残差コーディングに言及することがある。符号化されたビデオビットストリームは、一般に、コーディング決定(たとえば、コーディングモード)およびブロックへのピクチャの区分を表すシンタックス要素のための一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、一般に、ピクチャまたはブロックを形成するシンタックス要素のためのコーディング値として理解されるべきである。
HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、4分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4個の等しい重複しない正方形に区分し、4分木の各ノードは、0個または4個のいずれかの子ノードを有する。子ノードがないノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つもしくは複数のPUおよび/または1つもしくは複数のTUを含み得る。ビデオコーダはPUおよびTUをさらに区分し得る。たとえば、HEVCでは、残差4分木(RQT)はTUの区分を表す。HEVCでは、PUはインター予測データを表し、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
別の例として、ビデオエンコーダ200およびビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT)構造などのツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCU、PU、およびTUの間の区別などの、複数の区分タイプの概念を排除する。QTBT構造は、2つのレベル、すなわち、4分木区分に従って区分された第1のレベルおよび2分木区分に従って区分された第2のレベルを含む。QTBT構造のルートノードはCTUに対応する。2分木のリーフノードはコーディングユニット(CU)に対応する。
MTT区分構造では、ブロックは、4分木(QT)区分、2分木(BT)区分、および1つまたは複数のタイプのトリプルツリー(TT)区分を使用して区分され得る。トリプルツリー区分は、ブロックが3個のサブブロックに分割される区分である。いくつかの例では、トリプルツリー区分は、中心を通って元のブロックを分けることなしに、ブロックを3個のサブブロックに分ける。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は対称または非対称であり得る。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分の各々を表すために単一のQTBTまたはMTT構造を使用し得るが、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT/MTT構造および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)などの、2つ以上のQTBTまたはMTT構造を使用し得る。
ビデオエンコーダ200およびビデオデコーダ300は、HEVCごとの4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明のために、本開示の技法の記載はQTBT区分に関して提示される。しかしながら、本開示の技法はまた、4分木区分、または他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることを理解されたい。
本開示は、垂直次元および水平次元に換算して(CUまたは他のビデオブロックなどの)ブロックのサンプル次元を指すために、互換的に「N×N」および「NかけるN(N by N)」、たとえば、16×16サンプルまたは16かける16(16 by 16)サンプルを使用し得る。一般に、16×16 CUは、垂直方向に16個のサンプル(y=16)および水平方向に16個のサンプル(x=16)を有する。同様に、N×N CUは、一般に、垂直方向にN個のサンプルおよび水平方向にN個のサンプルを有し、ここで、Nは負ではない整数値を表す。CU中のサンプルは、行および列に配置され得る。さらに、CUは、必ずしも水平方向に垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備えてもよく、ここで、Mは必ずしもNに等しいとは限らない。
ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためのビデオデータを符号化する。予測情報は、CUのための予測ブロックを形成するためにCUがどのように予測されることになるかを示す。残差情報は、一般に、符号化に先立つCUのサンプルと予測ブロックのサンプルとの間のサンプルごとの差分を表す。
CUを予測するために、ビデオエンコーダ200は、一般に、インター予測またはイントラ予測を通じてCUのための予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、一般に、たとえば、CUと参照ブロックとの間の差分に関してCUと厳密に一致する参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUと厳密に一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在のCUを予測し得る。
VVCのいくつかの例は、インター予測モードと見なされ得るアフィン動き補償モードも提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインもしくはズームアウト、回転、遠近運動、または他の不規則な運動タイプなどの、非並進運動を表す2つ以上の動きベクトルを決定し得る。
イントラ予測を実行するために、ビデオエンコーダ200は、イントラ予測モードを選択して予測ブロックを生成し得る。VVCのいくつかの例は、様々な方向モードを含む67個のイントラ予測モード、ならびに平面モードおよびDCモードを提供する。一般に、ビデオエンコーダ200は、そこから現在のブロックのサンプルを予測するための現在のブロック(たとえば、CUのブロック)に対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、一般に、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUおよびCUをコーディングすると仮定すると、現在のブロックと同じピクチャ中の現在のブロックの上方、上方および左側、または左側にあり得る。
ビデオエンコーダ200は、現在のブロックのための予測モードを表すデータを符号化する。たとえば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードについての動き情報を表すデータを符号化し得る。単方向または双方向インター予測の場合、たとえば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために類似のモードを使用し得る。
ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200はブロックのための残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたそのブロックのための予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域において変換データを生成するために、1つまたは複数の変換を残差ブロックに適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に類似の変換を残差ビデオデータに適用し得る。加えて、ビデオエンコーダ200は、第1の変換に続いて、モード依存型分離不可能二次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)などの二次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて、変換係数を生成する。
上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできる限り低減するために変換係数が量子化され、さらなる圧縮が行われるプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、ビデオエンコーダ200は量子化の間にnビット値をmビット値に丸めてもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行し得る。
量子化に続いて、ビデオエンコーダ200は、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い周波数)変換係数をベクトルの前方に置き、より低いエネルギー(したがって、より高い周波数)変換係数をベクトルの後方に置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、シリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化するために、量子化された変換係数を走査するための事前定義された走査順序を利用し得る。他の例では、ビデオエンコーダ200は、適応走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300によって使用するための符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素のための値をエントロピー符号化し得る。
CABACを実行するために、ビデオエンコーダ200は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値がゼロ値化されているか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
ビデオエンコーダ200は、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、または、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータにおいて、ビデオデコーダ300へのブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータをさらに生成し得る。ビデオデコーダ300は、そのようなシンタックスデータを同様に復号して、対応するビデオデータをどのように復号するかを決定し得る。
このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックについての予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
一般に、ビデオデコーダ300は、ビデオエンコーダ200によって実行されるプロセスとは逆のプロセスを実行して、ビットストリームの符号化されたビデオデータを復号する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスとは逆であるが実質的に同様の方法で、CABACを使用してビットストリームのシンタックス要素のための値を復号し得る。シンタックス要素は、CTUへのピクチャの区分情報、およびQTBT構造などの対応する区分構造に従った各CTUの区分を定義して、CTUのCUを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックのための残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)および関連する予測情報(たとえば、インター予測についての動き情報)を使用する。次いで、ビデオデコーダ300は、元のブロックを再生するために、予測ブロックおよび残差ブロックを(サンプルごとに)合成し得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためのデブロッキングプロセスを実行するなどの、追加の処理を実行し得る。
本開示の技法によれば、ビデオエンコーダ200は、マージモードタイプ(たとえば、通常のマージモード、動きベクトル差分付きマージモード(MMVD)、アフィンマージ予測(AMP)、サブブロックベースの時間動きベクトル予測(SbTMVP)、三角マージ予測(TMP)、または合成インターイントラ予測(CIIP))を決定し得る。ビデオエンコーダ200は、本開示で説明する技法のうちのいずれか1つまたは組合せを使用して、現在のブロックに対するマージモードを示すためにビットストリーム中のシンタックス要素をシグナリングし得る。シンタックス要素およびシンタックス要素がシグナリングされる条件付き順序の例について、以下でより詳細に説明する。
ビデオデコーダ300は、本開示で説明する技法のうちのいずれか1つまたは組合せを使用して、現在のブロックに対するマージモードを決定するためにビットストリーム中のシンタックス要素をパースするように構成され得る。シンタックス要素およびシンタックス要素がパースされる条件付き順序の例について、以下でより詳細に説明する。
本開示は、一般に、シンタックス要素などの特定の情報を「シグナリングすること」に言及する。「シグナリングすること」という用語は、一般に、シンタックス要素および/または符号化されたビデオデータを復号するために使用される他のデータのための値の通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素のための値をシグナリングし得る。一般に、シグナリングすることは、ビットストリーム中で値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムで、または、宛先デバイス116によって後で取り出すためにシンタックス要素を記憶デバイス112に記憶するときに行われ得るなど、リアルタイムではなく、ビットストリームを宛先デバイス116にトランスポートし得る。
図2Aおよび図2Bは、例示的な4分木2分木(QTBT)構造130および対応するコーディングツリーユニット(CTU)132を示す概念図である。実線は4分木分割を表し、点線は2分木分割を示す。2分木の各分割(すなわち、非リーフ)ノードでは、どの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0が水平分割を示し、1が垂直分割を示す。4分木分割の場合、4分木ノードはブロックをサイズが等しい4個のサブブロックに水平および垂直に分割するので、分割タイプを示す必要はない。したがって、ビデオエンコーダ200は、QTBT構造130の領域木レベル(すなわち、実線)のための(分割情報などの)シンタックス要素およびQTBT構造130の予測木レベル(すなわち、破線)のための(分割情報などの)シンタックス要素を符号化し得、ビデオデコーダ300は、それらのシンタックス要素を復号し得る。ビデオエンコーダ200は、QTBT構造130の末端リーフノードによって表されるCUのための、予測データおよび変換データなどのビデオデータを符号化し得、ビデオデコーダ300は、そのビデオデータを復号し得る。
一般に、図2BのCTU132は、第1のレベルおよび第2のレベルでQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、CTUサイズ(サンプル中のCTU132のサイズを表す)、最小4分木サイズ(MinQTSize、最小の許容される4分木リーフノードサイズを表す)、最大2分木サイズ(MaxBTSize、最大の許容される2分木ルートノードサイズを表す)、最大2分木深度(MaxBTDepth、最大の許容される2分木深度を表す)、および最小2分木サイズ(MinBTSize、最小の許容される2分木リーフノードサイズを表す)を含み得る。
CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルで4個の子ノードを有することがあり、子ノードの各々は、4分木区分に従って区分されることがある。すなわち、第1のレベルのノードは、(子ノードを有しない)リーフノードであるか、4個の子ノードを有するかのいずれかである。QTBT構造130の例は、分岐のための実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードが最大の許容される2分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、これらのノードはそれぞれの2分木によってさらに区分され得る。1つのノードの2分木分割は、分割の結果として生じるノードが最小の許容される2分木リーフノードサイズ(MinBTSize)または最大の許容される2分木深度(MaxBTDepth)に達するまで繰り返され得る。QTBT構造130の例は、分岐のための破線を有するようなノードを表す。2分木リーフノードはコーディングユニット(CU)と呼ばれ、コーディングユニット(CU)は、これ以上の区分なしで、予測(たとえば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上記で説明したように、CUは「ビデオブロック」または「ブロック」と呼ばれることもある。
QTBT区分構造の一例では、CTUサイズは128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、(幅と高さの両方についての)MinBTSizeは4として設定され、MaxBTDepthは4として設定される。4分木リーフノードを生成するために、4分木区分がまずCTUに適用される。4分木リーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。リーフ4分木ノードは、128×128である場合、サイズがMaxBTSize(すなわち、この例では64×64)を超えるので、2分木によってさらに分割されない。それ以外の場合、リーフ4分木ノードは2分木によってさらに区分される。したがって、4分木リーフノードは2分木のルートノードでもあり、0としての2分木深度を有する。2分木深度がMaxBTDepth(この例では4)に達するとき、さらなる分割は許可されない。2分木ノードがMinBTSize(この例では4)に等しい幅を有するとき、それはさらなる水平分割が許可されないことを示唆する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してさらなる垂直分割が許可されないことを示唆する。上述のように、2分木のリーフノードはCUと呼ばれ、さらなる区分なしで予測および変換に従ってさらに処理される。
以下は、拡張マージ予測の説明である。VVCテストモデル4(VTM4:VVC Test Model 4)では、マージ候補リストは、以下の5つのタイプの候補、すなわち、1)空間ネイバーCUからの空間マージ候補、2)コロケートされたCUからの時間マージ候補、3)先入れ先出し(FIFO:First In First Out)テーブルからの履歴ベースのマージ候補、4)ペアワイズ平均マージ候補、および5)ゼロMVを順番に含めることによって構築される。
マージ候補リストのサイズはスライスヘッダにおいてシグナリングされ、VTM4におけるマージ候補リストの最大許容サイズは6である。マージモードにおいてコーディングされるCUごとに、マージ候補のインデックスは短縮された単項2値化を使用して符号化される。マージインデックスの最初のビンはコンテキストでコーディングされ、バイパスコーディングはその他のビンに使用される。このマージモードは、本明細書では通常のマージモードと呼ばれる。
以下は、空間マージ候補導出について説明する。図3は、空間マージ候補の例示的な位置を示す概念図である。VVCにおける空間マージ候補の導出は、HEVCにおけるものと同じである。最大で4つのマージ候補は、図3に示した位置にある候補の中から選択される。導出の順序はA0 26、B0 28、B1 30、A1 32およびB2 33である。位置B2 33は、位置A0 26、B0 28、B1 30、およびA1 32のいずれかのCUが(たとえば、別のスライスまたはタイルに属するので)利用可能でないかまたはイントラコーディングされるときにのみ、考慮される。位置A1 32における候補が追加された後、残りの候補の追加は冗長検査の対象となり、冗長検査は、コーディング効率が改善されるように、同じ動き情報を有する候補がリストから除外されることを確実にする。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、候補をマージリストに追加するときに冗長検査を実行し得る。計算複雑性を低減するために、すべての考えられる候補ペアが前述の冗長検査において考慮されるわけではない。図4は、空間マージ候補の冗長検査のために考慮される候補ペアの一例を示す概念図である。図4の矢印、たとえば、矢印29または矢印31でつなげられたペアのみが考慮され、冗長検査に使用される対応する候補が同じ動き情報をもたない場合にのみ、候補がリストに追加される。
以下は、時間マージ候補導出について説明する。図5は、時間マージ候補に対する動きベクトルスケーリングの一例を示す概念図である。一例では、1つのみの時間マージ候補がマージリストに追加される。この時間マージ候補の導出では、コロケートされたCUがコロケートされた参照ピクチャに属することに基づいて、スケーリングされた動きベクトルが導出される。コロケートされたCUの導出に使用されるべき参照ピクチャリスト(たとえば、list0またはlist1)は、スライスヘッダにおいて明示的にシグナリングされる。たとえば、ビデオエンコーダ200は、コロケートされたCUの導出に使用される参照ピクチャリストをビットストリーム中のスライスヘッダにおいてシグナリングすることができ、ビデオデコーダ300は、ビットストリーム中のシグナリングをパースすることによって参照ピクチャリストを決定することができる。
現在のCU42のための時間マージ候補に対するスケーリングされた動きベクトル50は図5の破線によって示されるように取得され、これは、ピクチャ順序カウント(POC)距離であるtb46およびtd48を使用して、コロケートされたCU44の動きベクトル52からスケーリングされ、ここで、tbは現在のピクチャの参照ピクチャ(参照ピクチャ36)と現在のピクチャ(現在のピクチャ38)との間のPOC差であるように定義され、tdはコロケートされたピクチャの参照ピクチャ(参照ピクチャ34)とコロケートされたピクチャ(コロケートされたピクチャ40)との間のPOC差であるように定義される。時間マージ候補の参照ピクチャインデックスは、ゼロに等しくなるように設定される。
図6は、時間マージ候補に対する候補位置の例を示す概念図である。時間マージ候補に対する位置は、図6に示すように、位置C0 54および位置C1 56における候補から選択される。位置C0 54におけるCUが利用可能でないか、イントラコーディングされているか、またはコーディングツリーユニット(CTU)の現在の行の外にある場合、位置C1 56における候補が使用される。そうでない場合、時間マージ候補の導出において位置C0 54が使用される。
以下は、履歴ベースのマージ候補導出について説明する。前にコーディングされたブロックの動き情報は、テーブル(履歴ベースの動きベクトル予測子(HMVP:history-based motion vector predictor)テーブル)に記憶され、現在のCUに対する動きベクトル予測子として使用される。符号化/復号プロセスの間、複数のエントリを有するHMVPテーブルが維持される。新しい動き候補をHMVPテーブルに挿入するとき、ビデオエンコーダ200またはビデオデコーダ300は制約付き先入れ先出し(FIFO)ルールを利用し、ここにおいて、HMVPテーブル内に同一の候補があるかどうかを見つけるために、冗長検査が最初に適用される。見つかった場合、同一の候補はHMVPテーブルから削除され、その後に続くHMVPテーブル内のすべてのその他の候補はHMVPテーブル内で繰り上げられる。
HMVP候補は、空間マージ候補および時間マージ候補の後にマージ候補リストに追加され、ここにおいて、HMVPテーブル内の最新のいくつかのHMVP候補が順番にチェックされ、TMVP候補の後にマージ候補リストに挿入される。マージ候補リストへの挿入前に、いくつかの冗長検査がHMVP候補に適用されることがある。たとえば、ビデオエンコーダ200またはビデオデコーダ30は、HMVP候補をマージ候補リストに挿入する前に、HMVP候補に対して冗長検査を実行することがある。
以下は、ペアワイズ平均マージ候補導出について説明する。ペアワイズ平均候補は、既存のマージ候補リスト内の候補の事前定義されたペアを平均化することによって生成される。平均化された動きベクトルは、参照ピクチャリスト(たとえば、list0およびlist1)ごとに別々に計算される。両方の動きベクトルが1つのリストにおいて利用可能である場合、これらの2つの動きベクトルは、異なる参照ピクチャを指すときでも平均化される。1つのみの動きベクトルが利用可能である場合、その動きベクトルは平均化されずに直接使用される。動きベクトルが利用可能でない場合、リストは無効と見なされ、ペアワイズ平均マージ候補は追加されない。
ペアワイズ平均マージ候補が追加された後でマージリストがいっぱいでないとき、最大のマージ候補数に達するまで、ゼロ動きベクトル予測子が最後に挿入される。
以下は、動きベクトル差分(MVD)付きマージモード(MMVD)について説明する。マージモードに加えて、暗黙的に導出された動き情報が現在のCUの予測サンプルを生成するために直接使用される場合、MMVDがVVCに導入される。MMVDでは、ビデオエンコーダ200はマージ候補を選択し、ビデオエンコーダ200はMVDの情報をシグナリングすることによって候補をさらに精錬する。MVDの情報は、マージ候補フラグ、動きの大きさを指定するインデックス、および動き方向の指示のインデックスを含む。MMVDモードでは、マージリスト内の最初の2つの候補のうちの1つが開始MVとして使用されるために選択される。マージ候補フラグは、最初の2つの候補のうちのどちらが開始MVであるかを指定するためにシグナリングされる。たとえば、ビデオエンコーダ200は、ビデオデコーダ300にどのマージ候補を開始MVとして使用するかを指定するためにマージ候補フラグをシグナリングし得る。
距離インデックスは動きの大きさの情報を指定し、開始MVからの事前定義されたオフセットを示す。図7Aおよび図7Bは、動きベクトル差分付きマージモード(MMVD)の探索点の例を示す概念図である。
図7Aおよび図7Bに示すように、オフセットは開始MVの水平成分または垂直成分のいずれかに追加される。図7Aは複数のL0(list0)参照56のオフセットを示し、図7Bは複数のL1(list1)参照58のオフセットを示す。距離インデックスと事前定義されたオフセットの関係は、Table 1-1(表1)において指定されている。
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、Table 1-2(表2)に示すように、4つの方向のうちの1つを表すことができる。MVD記号の意味は、開始MVに関する情報に従って変化し得る。たとえば、開始MVが、単予測MVまたは両方の参照ピクチャリスト(list0およびlist1)が現在のピクチャの同じ側を指す(すなわち、2つの参照ピクチャのPOCが両方とも現在のピクチャのPOCよりも大きいか、または両方とも現在のピクチャのPOCよりも小さい)双予測MVであるとき、Table 1-2(表2)内の記号は、開始MVに追加されたMVオフセットの記号を指定する。開始MVが、2つのMVが現在のピクチャの異なる側を指す(すなわち、一方の参照ピクチャのPOCが現在のピクチャのPOCよりも大きく、他方の参照ピクチャのPOCが現在のピクチャのPOCよりも小さい)双予測MVであるとき、Table 1-2(表2)内の記号は、開始MVのlist0 MV成分に追加されたMVオフセットの記号を指定し、list1 MV成分の記号は、反対の値を有する。
以下は、アフィン動き補償予測について説明する。HEVCでは、並進運動モデルのみが動き補償予測に適用される。一方、現実の世界では、多くの種類の動き、たとえば、ズームイン/アウト、回転、遠近法の動き、およびその他の不規則な動きがある。VTM4では、ブロックベースのアフィン変換動き補償予測が適用される。図8Aおよび図8Bは、それぞれ、4パラメータアフィンモデルおよび6パラメータアフィンモデルの例を示す概念図である。図8Aおよび図8Bに示すように、ブロックのアフィン動きフィールドは、2つの制御点動きベクトル(CPMV:control point motion vector)(4パラメータ)(図8A)または3つのCPMV(6パラメータ)(図8B)の動き情報によって記述される。図8Aでは、ブロック60のアフィン動きフィールドは2つのCPMV(mv0およびmv1)によって記述されるが、図8Bでは、ブロック62のアフィン動きフィールドは3つのCPMV(mv0、mv1およびmv2)によって記述される。
4パラメータアフィン動きモデルの場合、ブロック内のサンプルロケーション(x, y)における動きベクトルは、
として導出される。ここで、(mv0x, mv0y)は左上隅の制御点の動きベクトルであり、(mv1x, mv1y)は右上隅の制御点の動きベクトルである。
6パラメータアフィン動きモデルの場合、ブロック内のサンプルロケーション(x, y)における動きベクトルは、
として導出される。ここで、(mv0x, mv0y)は左上隅の制御点の動きベクトルであり、(mv1x, mv1y)は右上隅の制御点の動きベクトルであり、(mv2x, mv2y)は左下隅の制御点の動きベクトルである。
動き補償予測を簡略化するために、サブブロックベースのアフィン変換予測が適用される。図9は、サブブロックごとのアフィン動きベクトルフィールドの一例を示す概念図である。いくつかの例では、各4×4ルーマサブブロックの動きベクトルを導出するために、各サブブロックの中央サンプルの動きベクトルは、図9に示すように、上記の式に従って計算され、1/16の整数分の1の精度に丸められる。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、サブブロック64などの各サブブロックの中央サンプルの動きベクトルを計算し得る。次いで、導出された動きベクトルを有する各サブブロックの予測を生成するために、動き補償補間フィルタが適用される。いくつかの例では、クロマ成分のサブブロックサイズも4×4になるように設定される。4×4クロマサブブロックのMVは、4つの対応する4×4ルーマサブブロックのMVの平均として計算される。
以下は、アフィンマージ予測について説明する。アフィンマージモードでは、現在のCUのCPMV(制御点動きベクトル)は、空間隣接CUの動き情報に基づいて生成される。5つまでのCPMV候補が存在することができ、インデックスは現在のCUに対して使用されるべきCPMV候補を示すためにシグナリングされる。たとえば、ビデオエンコーダ200は、現在のCUに対してどのCPMV候補を使用すべきかを示すために、CPMVインデックスをビデオデコーダ300にシグナリングし得る。アフィンマージ候補リストを形成するために、以下の3つのタイプのCPMV候補、すなわち、1)ネイバーCUのCPMVから外挿される継承されたアフィンマージ候補、2)ネイバーCUの並進MVを使用して導出される構築されたアフィンマージ候補CPMVP、および3)ゼロMVが使用される。
以下は、サブブロックベースの時間動きベクトル予測(SbTMVP)について説明する。HEVCにおける時間動きベクトル予測(TMVP)と同様に、サブブロックベースの時間動きベクトル予測(SbTMVP)は、現在のピクチャにおけるCUに対する動きベクトル予測およびマージモードを改善するために、コロケートされたピクチャにおいて動きフィールドを使用する。TMVPによって使用される同じコロケートされたピクチャがSbTMVPに対して使用される。SbTMVPは、以下の2つの主な側面においてTMVPとは異なる。1)TMVPはCUレベルで動きを予測するが、SbTMVPはサブCUレベルで動きを予測する、2)TMVPはコロケートされたピクチャ内のコロケートされたブロックから時間動きベクトルをフェッチする(コロケートされたブロックは現在のCUに対して右下または中央のブロックである)が、SbTMVPはコロケートされたピクチャから時間動き情報をフェッチする前に動きシフトを適用し、ここで、動きシフトは、現在のCUの空間隣接ブロックのうちの1つの動きベクトルから取得される。
SbTMVP候補とアフィンマージ候補の両方を含んでいる合成サブブロックベースのマージリストは、サブブロックベースのマージモードのシグナリングに使用される。合成サブブロックベースのマージリストはビデオデコーダ300によって再構成されてもよく、ビデオエンコーダ200は合成サブブロックベースのマージリストのインデックスをビデオデコーダ300にシグナリングしてもよい。
以下は、幾何学的モード(たとえば、予測に使用される非矩形ブロック)の一例である三角マージ予測(TMP)について説明する。すなわち、TMPは、ブロック以外の幾何学的形状を使用するマージモードの一例である。図10Aおよび図10Bは、三角区分ベースのインター予測の例を示す概念図である。
TMPは、8×8またはそれよりも大きいCUにのみ適用される。このモードが使用されるとき、CUは、図10Aに示す対角分割または図10Bに示す反対角分割のいずれかを使用して、2つの三角形の区分に均等に分割される。TMPは、TMPがブロックではなく三角形形状に基づくという点で、三角形モードである。図10Aの対角分割は、CUを区分1 330および区分2 332に分割する。図10Bの反対角分割は、CUを区分1 334および区分2 336に分割する。CUにおける各三角区分は、それ自体の動き情報(たとえば、動きベクトルおよび参照インデックス)を使用してインター予測される。区分ごとに単予測のみが許可される、すなわち、各区分は1つの動きベクトルおよび1つの参照インデックスを有する。単予測動き制約は、従来の双予測とまったく同様に、CUごとに2つのみの動き補償予測子が必要とされることを確実にするために適用される。
三角区分モードが使用される場合、三角区分の方向(対角または反対角)を示すフラグおよび2つのマージインデックス(区分ごとに1つ)がさらにシグナリングされる。たとえば、ビデオエンコーダ200は、分割の方向を示すフラグおよび2つのマージインデックスをビデオデコーダ300にシグナリングし得る。三角区分の各々を予測した後、対角または反対角の端部に沿ったサンプル値は、適応重みを伴うブレンディング処理を使用して調整される。これはCU全体に対する予測信号であり、変換および量子化プロセスは、他の予測モードの場合と同様にCU全体に適用される。
以下は、合成インターイントラ予測(CIIP)について説明する。合成インター/イントラ予測(CIIP)では、イントラ予測モードおよび通常のマージ候補が最初に導出される。次いで、イントラ予測信号およびインター予測信号が、導出されたイントラモードおよびマージ候補を使用して導出される。インター予測信号Pinterは、通常のマージモードに適用された同じインター予測プロセスを使用して導出され、イントラ予測信号Pintraは、通常のイントラ予測プロセスの後に続くCIIPイントラ予測モードを使用して導出される。次いで、イントラ予測信号およびインター予測信号は、重み付き平均化を使用して次のように合成される。
PCIIP=((8-wt)*Pinter+wt*Pintra+4)≫3 (3)
上述のように、本開示は、異なるマージモード(たとえば、マージモードタイプ)についての情報をシグナリングおよびパースするための例示的な技法について説明する。第1の例示的な方法では、異なるマージモードは3つのグループ、すなわち、1)通常のマージモードとMMVDマージモードとを含み得る標準マージモードグループ、2)SbTMVPモードとアフィンマージモードとを含み得るサブブロックベースのマージモードグループ、および3)TMPモードなどの幾何学的モードまたはブロック以外の幾何学に基づく他のモードと、ブレンディング動作を必要とし、本明細書ではブレンディング付きマージモードと呼ばれることがあるCIIPモードとを含み得るブレンディングマージモードグループに分類される。本開示で説明するように、マージモードをマージモードタイプによって分類し、高確率マージモードを2値化ツリーにおいて上位に配置することによって、マージモードタイプの比較的効率的なシグナリングおよびパースが達成され得る。比較的効率的なシグナリングおよびパースは、より効果的な帯域幅利用と、処理電力消費および復号レイテンシの低減とをもたらし得る。
図11は、マージモード情報をシグナリングするための2値化ツリーの一例を示す概念図である。ビデオエンコーダ200は、図11の例によるマージモード情報をビデオデコーダ300にシグナリングしてもよく、ビデオデコーダ300は、どのマージモードを適用すべきかを決定するためにマージモード情報をパースしてもよい。図11に示すように、第1のフラグ、たとえば、merge_sub-block_flag70は、サブブロックベースのマージモードグループが選択されるかどうかを示すために使用される。1に等しいmerge_sub-block_flag70は、ビデオデータの現在のブロックに対してサブブロックベースのマージモードが選択されることを指定し、この場合、ビデオエンコーダ200およびビデオデコーダ300は、サブブロックベースのマージモードでビデオデータのブロックをコーディングする。図11の例では、サブブロックベースのマージモードは多くのビデオシーケンスに対してより頻繁に利用され得るので、サブブロックベースのマージモードを示すシンタックス要素が最初にシグナリングされ得る。このようにして、サブブロックベースのマージモードの選択は単一のビンにおいてシグナリングされ得る。
merge_sub-block_flag70が存在しない場合、merge_sub-block_flag70は0であると推測される。たとえば、merge_sub-block_flag70が存在しない場合、ビデオデコーダ300はmerge_sub-block_flag70が0であると推測し得る。
したがって、ビデオエンコーダ200およびビデオデコーダ300は、ビデオデータのブロックに対してサブブロックマージモードを使用するかどうかを決定し得る。ビデオエンコーダ200は、ブロックがサブブロックマージモードを使用すべきかどうかを示すmerge_sub-block_flag70をシグナリングし得る。ビデオデコーダ300は、ビットストリームをパースしたことおよびmerge_sub-block_flag70が存在しないと決定したことに基づいてmerge_sub-block_flag70が0であると推測することを含めて、サブブロックマージモードを使用するかどうかを決定するためにmerge_sub-block_flag70をパースし得る。
merge_sub-block_flag70が0に等しい場合、第2のフラグ、たとえば、merge_blend_flag72が、標準マージモードグループが選択されるかまたはブレンディングマージモードグループが選択されるかを示すために使用される。merge_blend_flag72が存在しない場合、merge_blend_flag72は0であると推測される。たとえば、merge_blend_flag72が存在しない場合、ビデオデコーダ300はmerge_blend_flag72が0であると推測し得る。
たとえば、(たとえば、merge_sub-block_flag70が0であるので)ブロックに対してサブブロックマージモードを使用しないとの決定に基づいて、ビデオエンコーダ200およびビデオデコーダ300は、ブロックに対して(たとえば、CIIPまたはTMPのような幾何学的モードなどの)ブレンディング付きマージモードを使用するかどうかを決定し得る。いくつかの例では、ブレンディング付きマージモードを使用するかどうかを決定することは、幾何学的モードもしくはCIIPモードのうちの1つが使用されるべきか、または幾何学的モードもしくはCIIPモードのいずれも使用されるべきではないかを決定することを含む。たとえば、ビデオエンコーダ200は、ブロックがブレンディング付きマージモードを使用するべきかどうかを示すmerge_blend_flag72をシグナリングし得る。ビデオデコーダ300は、ビットストリームをパースしたことおよびmerge_blend_flag72が存在しないと決定したことに基づいてmerge_blend_flag72が0であると推測することを含めて、ブレンディング付きマージモードを使用するかどうかを決定するためにmerge_blend_flag72をパースし得る。
1つまたは複数の例では、ビデオエンコーダ200は、merge_sub-block_flag70をシグナリングした後にのみmerge_blend_flag72をシグナリングしてもよく、ビデオデコーダ300は、merge_sub-block_flag70をパースした後にのみmerge_blend_flag72をパースしてもよい。
merge_blend_flag72が0に等しい場合、第3のフラグ、たとえば、mmvd_merge_flag74が、通常のマージモードが選択されるかまたはMMVDマージモードが選択されるかを示すために使用される。mmvd_merge_flag74が存在しない場合、mmvd_merge_flag74は0であると推測される。たとえば、mmvd_merge_flag74が存在しない場合、ビデオデコーダ300はmmvd_merge_flag74が0であると推測し得る。
たとえば、(たとえば、merge_blend_flag72が0であるので)ブレンディング付きマージモードを使用しないとの決定に基づいて、ビデオエンコーダ200およびビデオデコーダ300は、ブロックに対してMMVDマージモードを使用するかどうかを決定し得る。たとえば、ビデオエンコーダ200は、ブロックに対してMMVDマージモードを使用するかどうかを示すmmvd_merge_flag74をシグナリングし得る。ビデオデコーダ300は、ビットストリームをパースしたことおよびmmvd_merge_flag74が存在しないと決定したことに基づいてmmvd_merge_flag74が0であると推測することを含めて、MMVDマージモードを使用するかどうかを決定するためにmmvd_merge_flag74をパースし得る。
1つまたは複数の例では、ビデオエンコーダ200は、merge_sub-block_flag70およびmerge_blend_flag72をシグナリングした後にのみmmvd_merge_flag74をシグナリングしてもよく、ビデオデコーダ300は、merge_sub-block_flag70およびmerge_blend_flag72をパースした後にのみmmvd_merge_flag74をパースしてもよい。たとえば、mmvd_merge_flag74が1に等しい場合、そのことはMMVDマージモードが選択されることを指定し、その場合、ビデオエンコーダ200およびビデオデコーダ300は、MMVDマージモードでブロックをコーディングする。mmvd_merge_flag74が0に等しい場合、そのことは通常のマージモードが選択されることを指定し、その場合、ビデオエンコーダ200およびビデオデコーダ300は、通常のマージモードでブロックをコーディングする。
merge_blend_flag72が1に等しい場合、第4のフラグ、たとえば、ciip_flag76が、CIIPマージモードが選択されるかまたはTMPモードなどの幾何学的モードが選択されるかを示すために使用される。ciip_flag76が存在しない場合、ciip_flag76は0であると推測される。たとえば、ciip_flag76が存在しない場合、ビデオデコーダ300はciip_flag76が0であると推測し得る。
たとえば、(たとえば、merge_blend_flag72が1であるので)ブレンディング付きマージモードを使用するとの決定に基づいて、ビデオエンコーダ200およびビデオデコーダ300は、ブロックに対してCIIPモードを使用するかまたはTMPなどの幾何学的モードを使用するかを決定し得る。たとえば、ビデオエンコーダ200は、ブロックがブロックに対してCIIPモードを使用するべきかどうかを示すciip_flag76をシグナリングし得る。ビデオデコーダ300は、ビットストリームをパースしたことおよびciip_flag76が存在しないと決定したことに基づいてciip_flag76が0であると推測することを含めて、CIIPモードを使用するかどうかを決定するためにciip_flag76をパースし得る。たとえば、ciip_flag76が1に等しい場合、そのことはCIIPモードが使用されることを意味し、その場合、ビデオエンコーダ200およびビデオデコーダ300は、CIIPモードでブロックをコーディングする。ciip_flag76が0に等しく、merge_blend_flag72が1に等しい場合、そのことは幾何学的モードが使用されることを意味し、ビデオエンコーダ200およびビデオデコーダ300は、TMPなどの幾何学的モードでブロックをコーディングする。
上記で説明したフラグ(たとえば、シンタックス要素)は、対応するマージモードの利用可能性に応じて存在することがある。SbTMVPモードとアフィンマージモードの両方が利用可能でない場合、merge_sub-block_flagは存在しないことがある。CIIPモードとTMPモードの両方が利用可能でない場合、merge_blend_flagは存在しないことがある。CIIPモードまたはTMPモードのいずれかが利用可能でない場合、ciip_flagは存在しないことがある。MMVDマージモードが利用可能でない場合、mmvd_merge_flagは存在しないことがある。それらのマージモードの利用可能性について、(たとえば、ビデオエンコーダ200またはビデオデコーダ300によって)様々な条件検査が適用され得る。
一例では、各マージモードがそれ自体の最大候補数を有する。一例では、すべてのマージモードが同じ最大候補数を共有する。一例では、各異なるマージグループは、それ自体の最大候補数を有するが、同じグループ内のマージモードは、同数のマージ候補を共有する。
図12は、マージモード情報をシグナリングするための2値化ツリーの別の例を示す概念図である。ビデオエンコーダ200は、図12の例によるマージモード情報をビデオデコーダ300にシグナリングしてもよく、ビデオデコーダ300は、どのマージモードを適用すべきかを決定するためにマージモード情報をパースしてもよい。図12の例では、第1のフラグ、たとえば、merge_sub-block_flag80は、サブブロックベースのマージモードが選択されるかどうかを示すために使用される。merge_sub-block_flag80が1に等しいとき、このフラグは、現在のCUに対してサブブロックベースのマージモードが選択されることを指定する。図11の例の場合と同様に、サブブロックベースのマージモードは多くのビデオシーケンスに対してより頻繁に利用され得るので、サブブロックベースのマージモードを示すシンタックス要素が最初にシグナリングされ得る。このようにして、サブブロックベースのマージモードの選択は単一のビンにおいてシグナリングされ得る。merge_sub-block_flagが0に等しい場合、第2のフラグ、たとえば、mmvd_merge_flag82が、MMVDマージモードが選択されるかどうかを示すために使用される。mmvd_merge_flag82が1に等しいとき、このフラグは、MMVDマージモードが選択されることを指定する。mmvd_merge_flagが0に等しい場合、第3のフラグ、たとえば、ciip_flag84が、CIIPモードが選択されるかどうかを示すために使用される。ciip_flag84が1に等しいとき、このフラグは、CIIPモードが選択されることを指定する。ciip_flag84が0に等しい場合、第4のフラグ、たとえば、triangle_merge_flag86が、TMPモードが選択されるかどうかを示すために使用される。triangle_merge_flag86が1に等しいとき、このフラグは、TMPモードが選択されることを指定する。triangle_merge_flag86が0に等しいとき、このフラグは、通常のマージモードが選択されることを指定する。図11の例と同様に、上記で説明したフラグは、対応するマージモードの利用可能性に応じて存在することがある。フラグが存在しないとき、そのフラグは0であると推測される。たとえば、フラグが存在しない場合、ビデオデコーダ300はそのフラグが0であると推測し得る。図12の例では、2値化ツリー上で最後のモードをシグナリングするために、図11の例と比較して追加のビンが必要とされる。
以下は、マージインデックスコーディングについて説明する。マージモードごとに、最良のマージ候補のインデックスは短縮された単項2値化を使用してコーディングされる。マージインデックスの最初のビンはコンテキストでコーディングされ、バイパスコーディングは他のビンに使用される。一例では、各マージモードが最初のビンに対するそれ自体のコンテキストを有する。一例では、サブブロックベースのマージモードはそれ自体のコンテキストを有するが、すべてのその他のマージモードは同じコンテキストを共有する。一例では、サブブロックベースのマージモードはそれ自体のコンテキストを有し、MMVDマージモードもそれ自体のコンテキストを有し、すべてのその他のマージモードは同じコンテキストを共有する。一例では、CIIPモードおよび通常のマージモードは同じコンテキストを共有するが、すべてのその他のマージモードは別個のコンテキストを有する。
以下は、異なるマージモードの利用可能性検査について説明する。一般に、マージモードの利用可能性は、マージモードのオン/オフと、マージモードが適用され得るブロックサイズの制約とを制御する高レベルシンタックスに依存する。VTM4では、異なるサイズの制約は異なるマージモードに適用される。通常のマージモードおよびMMVDマージモードは、すべてのインターブロックに適用され得る。サブブロックベースのマージモードは、8以上である幅と高さの両方を有するインターブロックに適用され得る。CIIPは、以下の条件、すなわち、面積(N×M)が64以上である、幅が最大変換サイズ以下である、高さが最大変換サイズ以下である、を有するインターブロックに適用され得る。TMPは、64以上の面積を有するインターブロックに適用され得る。
一例では、異なるマージモードに対する現在のサイズ制約が適用される。一例では、CIIPモードおよびTMPモードは同じサイズ制約を使用する。一例では、以下の条件、すなわち、面積が64以上である、幅が最大変換サイズ以下である、高さが最大変換サイズ以下である、がCIIPとTMPの両方に適用される。別の例では、CIIPとTMPは両方とも、64以上の面積を有するインターブロックに適用され得る。
一例では、サブブロックベースのマージモードは、64以上の面積を有するインターブロックに適用され得、以下の条件、すなわち、面積が64以上である、幅が最大変換サイズ以下である、高さが最大変換サイズ以下である、がCIIPとTMPの両方に適用される。一例では、サブブロックベースのマージモード、CIIPモードおよびTMPモードは同じサイズ制約を使用する。一例では、以下の条件、すなわち、面積が64以上である、幅が最大変換サイズ以下である、高さが最大変換サイズ以下である、がサブブロックベースのマージモード、CIIPおよびTMPに適用される。一例では、サブブロックベースのマージモード、CIIPおよびTMPは、64以上の面積を有するインターブロックに適用され得る。
上記の「64」という数はしきい値の一例であることを理解されたい。他の値も利用され得る。
図13は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。図13は説明のために提供され、本開示において広く例示および説明するような技法の限定と見なされるべきではない。説明のために、本開示は、HEVCビデオコーディング規格および開発中のH.266ビデオコーディング規格などのビデオコーディング規格の文脈でビデオエンコーダ200について説明する。しかしながら、本開示の技法はこれらのビデオコーディング規格に限定されず、概してビデオ符号化および復号に適用可能である。
図13の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、復号されたピクチャバッファ(DPB)218、およびエントロピー符号化ユニット220を含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、DPB218、およびエントロピー符号化ユニット220のいずれかまたはすべては、1つもしくは複数のプロセッサにおいてまたは処理回路において実装され得る。さらに、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであってもよく、またはそれらの構成要素に対してオフチップであってもよい。
本開示では、ビデオデータメモリ230への言及は、そのようなものとして特に説明されていない限り、ビデオエンコーダ200の内部のメモリ、または、そのようなものとして特に説明されていない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、符号化するためにビデオエンコーダ200が受信するビデオデータ(たとえば、符号化されるべき現在のブロックのためのビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的な記憶を提供し得る。
図13の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解することを助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作に対してプリセットされる。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は(たとえば、パラメータを受信するまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つまたは複数のユニットは集積回路であってもよい。
ビデオエンコーダ200は、算術論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されたプログラマブルコアを含み得る。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)が、ビデオエンコーダ200が受信および実行するソフトウェアのオブジェクトコードを記憶してもよく、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してもよい。
ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204およびモード選択ユニット202に提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべき生のビデオデータであり得る。
モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。いくつかのブロックについて、モード選択ユニット202は、MMVD、AMP、SbTMVPなどのマージモード、TMP、CIIPなどの幾何学的モード、または通常のマージモードを選択し得る。ビデオエンコーダ200は、図11、図12、および図15~図17に関して説明したものなどの本開示の技法に従って、選択されたマージモードをシグナリングし得る。
モード選択ユニット202は、一般に、符号化パラメータの組合せおよびそのような組合せに対する結果として生じるレートひずみ値をテストするために複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、その他のテストされた組合せよりも良いレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内に1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明したHEVCのQTBT構造または4分木構造などのツリー構造に従ってピクチャのCTUを区分し得る。上記で説明したように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に、「ビデオブロック」または「ブロック」と呼ばれることもある。
一般に、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCU、またはHEVCでは、PUおよびTUの重複する部分)のための予測ブロックを生成するために、その構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測の場合、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶された1つまたは複数の以前にコーディングされたピクチャ)中の1つまたは複数の厳密に一致する参照ブロックを識別するために動き探索を実行し得る。具体的には、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、潜在的な参照ブロックが現在のブロックにどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実行し得る。動き推定ユニット222は、現在のブロックに最も厳密に一致する参照ブロックを示す、これらの計算の結果として生じる最も低い値を有する参照ブロックを識別し得る。
動き推定ユニット222は、現在のピクチャ中の現在のブロックの位置に対する参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。次いで、動き推定ユニット222は動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測の場合、動き推定ユニット222は単一の動きベクトルを提供し得るが、双方向インター予測の場合、動き推定ユニット222は2つの動きベクトルを提供し得る。次いで、動き補償ユニット224は、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルがフラクショナルサンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックのための値を補間し得る。さらに、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または重み付けされた平均化によって、取り出されたデータを合成し得る。
別の例として、イントラ予測またはイントラ予測コーディングの場合、イントラ予測ユニット226は、現在のブロックに隣接するサンプルから予測ブロックを生成し得る。たとえば、方向モードの場合、イントラ予測ユニット226は、一般に、隣接サンプルの値を数学的に合成し、これらの計算された値を現在のブロックにわたる定義された方向にポピュレートして、予測ブロックを生成し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの結果として生じる平均を含めるべき予測ブロックを生成し得る。
モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの生の符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を計算する。結果として生じるサンプルごとの差分は、現在のブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
モード選択ユニット202がCUをPUに区分する例では、各PUはルーマ予測ユニットおよび対応するクロマ予測ユニットに関連付けられ得る。ビデオエンコーダ200およびビデオデコーダ300は、様々なサイズを有するPUをサポートし得る。上記で示したように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ユニットのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対して2N×2NまたはN×NのPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似の、対称のPUサイズをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測に対して2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズのための非対称区分をサポートし得る。
モード選択ユニットがCUをPUにさらに区分しない例では、各CUはルーマコーディングブロックおよび対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがある。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
数例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックのための予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は予測ブロックを生成しないことがあり、その代わりに、選択されたパレットに基づいてブロックを再構成する方法を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
上記で説明したように、残差生成ユニット204は、現在のブロックおよび対応する予測ブロックのためのビデオデータを受信する。次いで、残差生成ユニット204は現在のブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は予測ブロックと現在のブロックとの間のサンプルごとの差分を計算する。
変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、1つまたは複数の変換を残差ブロックに適用する。変換処理ユニット206は、変換係数ブロックを形成するために、様々な変換を残差ブロックに適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に類似の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、回転変換などの、一次変換および二次変換を残差ブロックに対して実行し得る。いくつかの例では、変換処理ユニット206は、変換を残差ブロックに適用しない。
量子化ユニット208は、変換係数ブロック中で変換係数を量子化して、量子化された変換係数ブロックを生成し得る。量子化ユニット208は、現在のブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在のブロックに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は変換処理ユニット206によって生成された元の変換係数よりも低い精度を有することがある。
逆量子化ユニット210および逆変換処理ユニット212は、それぞれ、逆量子化および逆変換を量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構成し得る。再構成ユニット214は、再構成された残差ブロックおよびモード選択ユニット202によって生成された予測ブロックに基づいて、(潜在的にある程度のひずみを伴うが)現在のブロックに対応する再構成されたブロックを生成し得る。たとえば、再構成ユニット214は、再構成された残差ブロックのサンプルをモード選択ユニット202によって生成された予測ブロックからの対応するサンプルに加えて、再構成されたブロックを生成し得る。
フィルタユニット216は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット216は、CUの端部に沿ってブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
ビデオエンコーダ200は、再構成されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構成ユニット214は再構成されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216はフィルタリングされた再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構成された(かつ潜在的にフィルタリングされた)ブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャ中の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構成されたブロックを使用し得る。
一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化されたデータを生成し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構成するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。具体的には、エントロピー符号化ユニット220がビットストリームを出力し得る。
上記で説明した動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)および参照ピクチャを識別するための動作は、クロマコーディングブロックのためのMVおよび参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVはクロマコーディングブロックのためのMVを決定するためにスケーリングされてもよく、参照ピクチャは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであってもよい。
ビデオエンコーダ200は、ビデオデータの第1のブロックに対してサブブロックマージモードを使用するかどうかを決定することと、第1のブロックに対してサブブロックマージモードを使用しないとの決定に基づいて、第1のブロックに対してブレンディング付きマージモードを使用するかどうかを決定することと、第1のブロックに対してブレンディング付きマージモードを使用するとの決定に基づいて、ブレンディング付きマージモードで第1のブロックを符号化することとを行うように構成されたデバイスの一例を表す。
図14は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図14は説明のために提供され、本開示において広く例示および説明するような技法を限定するものではない。説明のために、本開示は、VVCおよびHEVCの技法によるビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に従って構成されたビデオコーディングデバイスによって実行され得る。
図14の例では、ビデオデコーダ300は、コーディングされたピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、および復号されたピクチャバッファ(DPB)314を含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、およびDPB314のいずれかまたはすべては、1つもしくは複数のプロセッサにおいてまたは処理回路において実装され得る。さらに、ビデオデコーダ300は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
予測処理ユニット304は、動き補償ユニット316およびイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されたビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時的なデータなどの、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときにビデオデコーダ300が参照ビデオデータとして出力および/または使用し得る、復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであってもよく、またはそれらの構成要素に対してオフチップであってもよい。
追加または代替として、いくつかの例では、ビデオデコーダ300はメモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320に関して上記で説明したようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部がビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されるとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
図14に示す様々なユニットは、ビデオデコーダ300によって実行される動作を理解することを助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図13と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作に対してプリセットされる。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は(たとえば、パラメータを受信するまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つまたは複数のユニットは集積回路であってもよい。
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されたプログラマブルコアを含み得る。ビデオデコーダ300の動作がプログラマブル回路上で実行されるソフトウェアによって実行される例では、オンチップメモリまたはオフチップメモリが、ビデオデコーダ300が受信および実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
一般に、ビデオデコーダ300は、ブロックごとにピクチャを再構成する。ビデオデコーダ300は、各ブロックに対して個々に再構成動作を実行し得る(ここで、現在再構成されている、すなわち、復号されているブロックは「現在のブロック」と呼ばれることがある)。
エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数、ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報を定義するシンタックス要素をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、たとえば、量子化された変換係数を逆量子化するために、ビット単位の左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在のブロックに関連付けられた残差ブロックを生成するために、1つまたは複数の逆変換を変換係数ブロックに適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、そこから参照ブロックを取り出すべきDPB314中の参照ピクチャ、ならびに現在のピクチャ中の現在のブロックの場所に対する参照ピクチャ中の参照ブロックの場所を識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(図13)に関して説明した方法と実質的に同様の方法でインター予測プロセスを実行し得る。
別の例として、現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されたイントラ予測モードに従って予測ブロックを生成し得る。やはり、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(図13)に関して説明した方法と実質的に同様の方法でイントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から現在のブロックに対する隣接サンプルのデータを取り出し得る。
いくつかの例では、予測情報シンタックス要素は、現在のブロックがMMVD、AMP、SbTMVPなどのマージモード、TMP、CIIPなどの幾何学的モード、または通常のマージモードを使用して予測されることを示す。ビデオデコーダ300は、図11、図12、および図15~図17に関して説明したものなどの本開示の技法に従って、選択されたマージモードを決定するために予測情報シンタックス要素をパースし得る。
再構成ユニット310は、予測ブロックおよび残差ブロックを使用して現在のブロックを再構成し得る。たとえば、再構成ユニット310は、残差ブロックのサンプルを予測ブロックの対応するサンプルに加えて、現在のブロックを再構成し得る。
フィルタユニット312は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット312は、再構成されたブロックの端部に沿ってブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット312の動作は、必ずしもすべての例において実行されるとは限らない。
ビデオデコーダ300は、再構成されたブロックをDPB314に記憶し得る。上記で説明したように、DPB314は、イントラ予測のための現在のピクチャおよび後続の動き補償のための以前に復号されたピクチャのサンプルなどの参照情報を予測処理ユニット304に提供し得る。さらに、ビデオデコーダ300は、図1のディスプレイデバイス118などのディスプレイデバイス上で後で提示するための、DPBからの復号されたピクチャを出力し得る。
このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路において実装され、本開示で説明する技法のうちのいずれか1つまたは組合せを使用して、現在のブロックに対するマージモードを決定するためにビットストリーム中のシンタックス要素をパースするように構成された1つまたは複数の処理ユニットとを含むビデオ復号デバイスの一例を表す。
図15は、マージモード選択を示すシンタックス要素をシグナリングまたはパースするための例示的な技法を示すフローチャートである。図15の例では、ビデオエンコーダ200またはビデオデコーダ300は、ビデオデータの第1のブロックに対してサブブロックマージモードを使用するかどうかを決定し得る(322)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第1のブロックに対してサブブロックマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、サブブロックマージモードを使用するかどうかについて示すmerge_sub-block_flag70などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、サブブロックマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。いくつかの例では、サブブロックマージモードはSbTMVPモードまたはアフィンマージモードであり得る。
サブブロックマージモードを使用しないとの決定(たとえば、merge_sub-block_flag70が0に等しい)に基づいて、ビデオエンコーダ200またはビデオデコーダ300は、第1のブロックに対してブレンディング付きマージモードを使用するかどうかを決定し得る(324)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第1のブロックに対してブレンディング付きマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、ブレンディング付きマージモードを使用するかどうかについて示すmerge_blend_flag72などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、ブレンディング付きマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。いくつかの例では、ブレンディング付きマージモードは、TMPモードなどの幾何学的モード、またはブロック以外の幾何学に基づく他のモード、またはCIIPモードであり得る。
第1のブロックに対してブレンディング付きマージモードを使用するとの決定(たとえば、merge_blend_flag72が1に等しい)に基づいて、ビデオエンコーダ200またはビデオデコーダ300は、ブレンディング付きマージモードで第1のブロックをコーディングし得る(326)。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、第1のブロックに対してMMVDマージモードが有効であるかどうかを示す情報をコーディングすることを回避し得る(328)。たとえば、ビデオエンコーダ200は、第1のブロックに対してMMVDマージモードが有効であるかどうかを示すmmvd_merge_flag74などのシンタックス要素をシグナリングしないことがあり、ビデオデコーダ300は、第1のブロックに対してMMVDマージモードが有効であるかどうかを示すシンタックス要素をパースしないことがある。本開示の技法によれば、図11の例示的な2値化ツリーではmerge_blend_flag72はmmvd_merge_flag74の前に現れるので、第1のブロックに対してMMVDマージモードが有効であるかどうかを示すシンタックス要素は不要である。
いくつかの例では、ブレンディング付きマージモードを使用するかどうかの決定は、第1のブロックのサイズに少なくとも部分的に基づいてブレンディング付きマージモードを使用するかどうかを決定することを含む。たとえば、第1のブロックはN×Mのサイズを有し得る。ブレンディング付きマージモードを使用するかどうかの決定は、第1のブロックが64などの所定の数以上であるサイズN×Mを有することに少なくとも部分的に基づき得る。
いくつかの例では、コーディングすることは符号化することを含み、ビデオエンコーダ200は、第1のブロックに対してサブブロックマージモードが使用されるべきではないことを示すビットストリーム中のシンタックス要素をシグナリングした後に、第1のブロックに対してブレンディング付きマージモードを使用することを示すビットストリーム中のシンタックス要素をシグナリングする。いくつかの例では、コーディングすることは復号することを含み、ビデオデコーダ300は、第1のブロックに対してサブブロックマージモードが使用されるべきではないことを示すビットストリーム中のシンタックス要素をパースした後に、第1のブロックに対してブレンディング付きマージモードを使用することを示すビットストリーム中のシンタックス要素をパースする。
図16は、マージモード選択を示すシンタックス要素をシグナリングまたはパースするためのさらなる例示的な技法を示すフローチャートである。図16の例は、図15の例とともに使用され得る。
図16の例では、ビデオエンコーダ200またはビデオデコーダ300は、ビデオデータの第2のブロックに対してサブブロックマージモードを使用するかどうかを決定し得る(330)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第2のブロックに対してサブブロックマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、サブブロックマージモードを使用するかどうかを示すmerge_sub-block_flag70などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、サブブロックマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。いくつかの例では、サブブロックマージモードはSbTMVPモードまたはアフィンマージモードであり得る。第2のブロックに対してサブブロックマージモードを使用するとの決定(たとえば、merge_sub-block_flag70が1に等しい)に基づいて、ビデオエンコーダ200またはビデオデコーダ300は、サブブロックマージモードで第2のブロックをコーディングし得る(332)。
図17は、マージモード選択を示すシンタックス要素をシグナリングまたはパースするためのさらなる例示的な技法を示すフローチャートである。図17の例は、図15の例および/または図16の例とともに使用され得る。
図17の例では、ビデオエンコーダ200またはビデオデコーダ300は、ビデオデータの第3のブロックに対してサブブロックマージモードを使用するかどうかを決定し得る(334)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第3のブロックに対してサブブロックマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、サブブロックマージモードを使用するかどうかを示すmerge_sub-block_flag70などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、サブブロックマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。いくつかの例では、サブブロックマージモードはSbTMVPモードまたはアフィンマージモードであり得る。
サブブロックマージモードを使用しないとの決定(たとえば、merge_sub-block_flag70が0に等しい)に基づいて、ビデオエンコーダ200またはビデオデコーダ300は、第3のブロックに対してブレンディング付きマージモードを使用するかどうかを決定し得る(336)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第3のブロックに対してブレンディング付きマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、ブレンディング付きマージモードを使用するかどうかを示すmerge_blend_flag72などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、ブレンディング付きマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。いくつかの例では、ブレンディング付きマージモードは、TMPモードなどの幾何学的モード、またはブロック以外の幾何学に基づく他のモード、またはCIIPモードであり得る。
第3のブロックに対してブレンディング付きマージモードを使用しないとの決定(たとえば、merge_blend_flag72が0に等しい)に基づいて、ビデオエンコーダ200またはビデオデコーダ300は、第3のブロックに対してMMVDマージモードを使用するかどうかを決定し得る(338)。たとえば、ビデオエンコーダ200のモード選択ユニット202は、第3のブロックに対してMMVDマージモードが他のテストされたモードよりも良いかどうかを決定し得る。ビデオエンコーダ200は、MMVDマージモードを使用するかどうかを示すmmvd_merge_flag74などのシンタックス要素をビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、MMVDマージモードを使用するかどうかを決定するために、シグナリングされたシンタックス要素をパースし得る。ビデオエンコーダ200またはビデオデコーダ300は、第3のブロックに対してMMVDマージモードを使用するかどうかの決定に基づいて、MMVDマージモード(たとえば、mmvd_merge_flag74が1に等しい)または通常のマージモード(たとえば、mmvd_merge_flag74が0に等しい)で第3のブロックをコーディングし得る(340)。
図15~図17の例示的な技法は、より効率的な帯域幅利用および処理電力消費の低減をもたらし得る方法でビデオエンコーダがマージモード情報をビデオデコーダにシグナリングすることを可能にし得る。いくつかの例では、例示的な技法は、ビデオデータの所与のブロックを符号化するためにビデオエンコーダによって使用されたマージモードタイプをビデオデコーダが比較的迅速に決定することを可能にすることができ、このことは復号レイテンシを低減することができる。
図18は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(図1および図13)に関して説明するが、他のデバイスが図18の方法に類似の方法を実行するように構成され得ることを理解されたい。
この例では、ビデオエンコーダ200は最初に、現在のブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在のブロックのための予測ブロックを形成し得る。予測ブロックを形成する際に、ビデオエンコーダは図15~図17の技法のうちのいずれかを利用し得る。たとえば、ビデオエンコーダ200は、ビデオデータの第1のブロックに対してサブブロックマージモードを使用するかどうかを決定し得る。サブブロックマージモードを使用しないとの決定に基づいて、ビデオエンコーダ200は、第1のブロックに対してブレンディング付きマージモードを使用するかどうかを決定し得る。第1のブロックに対してブレンディング付きマージモードを使用するとの決定に基づいて、ビデオエンコーダ200は、ブレンディング付きマージモードで第1のブロックをコーディングし得る。次いで、ビデオエンコーダ200は、現在のブロックのための残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと現在のブロックのための予測ブロックとの間の差分を計算し得る。次いで、ビデオエンコーダ200は、残差ブロックの係数を変換および量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。次いで、ビデオエンコーダ200は、ブロックのエントロピーコーディングされたデータを出力し得る(360)。
図19は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオデコーダ300(図1および図14)に関して説明するが、他のデバイスが図19の方法に類似の方法を実行するように構成され得ることを理解されたい。
ビデオデコーダ300は、エントロピーコーディングされた予測情報および現在のブロックに対応する残差ブロックの係数のためのエントロピーコーディングされたデータなどの、現在のブロックのためのエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、現在のブロックのための予測情報を決定するために、および残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在のブロックに対する予測ブロックを計算するために、たとえば、現在のブロックに対する予測情報によって示されるようなイントラ予測モードまたはインター予測モードを使用して、現在のブロックを予測し得る(374)。現在のブロックを予測するとき、ビデオデコーダ300は図15~図17の技法のうちのいずれかを利用し得る。たとえば、ビデオデコーダ300は、ビデオデータの第1のブロックに対してサブブロックマージモードを使用するかどうかを決定し得る。サブブロックマージモードを使用しないとの決定に基づいて、ビデオデコーダ300は、第1のブロックに対してブレンディング付きマージモードを使用するかどうかを決定し得る。第1のブロックに対してブレンディング付きマージモードを使用するとの決定に基づいて、ビデオデコーダ300は、ブレンディング付きマージモードで第1のブロックをコーディングし得る。次いで、ビデオデコーダ300は、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。次いで、ビデオデコーダ300は、残差ブロックを生成するために、係数を逆量子化および逆変換し得る(378)。ビデオデコーダ300は、予測ブロックおよび残差ブロックを合成することによって、現在のブロックを最終的に復号し得る(380)。
本開示の技法によれば、ビデオエンコーダは、より効率的な帯域幅利用および処理電力消費の低減をもたらし得る方法でマージモード情報をビデオデコーダにシグナリングし得る。たとえば、マージモードはタイプによって分類されることがあり、高確率マージモードは2値化ツリーにおいて低確率マージモードよりも上位に配置され得るので、低確率マージモードよりも少ないビンを用いた高確率マージモードのシグナリングが可能になる。いくつかの例では、例示的な技法は、ビデオデータの所与のブロックを符号化するためにビデオエンコーダによって使用されたマージモードタイプをビデオデコーダが比較的迅速に決定することを可能にすることができ、このことは復号レイテンシを低減することができる。このようにして、例示的な技法は、ビデオコーディング技術を改善し得る、技術的問題に対処するための実際的な適用例を提供する。
本開示は以下の例を含む。
例1. ビデオデータを復号する方法であって、
本開示で説明する技法のうちのいずれか1つまたは組合せを使用して、現在のブロックに対するマージモードを決定するためにビットストリーム中のシンタックス要素をパースするステップを備える方法。
例2. ビデオデータを符号化する方法であって、
本開示で説明する技法のうちのいずれか1つまたは組合せを使用して、現在のブロックに対するマージモードを示すためにビットストリーム中のシンタックス要素をシグナリングするステップを備える方法。
例3. ビデオデータを復号する方法であって、サブブロックベースのマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第1のシンタックス要素をパースするステップと、第1のシンタックス要素の値に基づいて、現在のブロックに対してサブブロックベースのマージモードグループが選択されると決定するステップと、サブブロックベースのマージモードを使用して現在のブロックを復号するステップとを備える方法。
例4. ビデオデータを復号する方法であって、サブブロックベースのマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第1のシンタックス要素をパースするステップと、第1のシンタックス要素の値に基づいて、現在のブロックに対してサブブロックベースのマージモードグループが選択されないと決定するステップと、サブブロックベースのマージモードグループが選択されないことに基づいて、標準マージモードグループまたはブレンディングマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第2のシンタックス要素をパースするステップと、第2のシンタックス要素の値に基づいて、通常のマージモードか動きベクトル差分付きマージモード(MMVD)かを決定するために、ビットストリーム中の第3のシンタックス要素をパースするステップと、第3のシンタックス要素の値に基づいて、MMVDが選択されると決定するステップと、MMVDを使用して現在のブロックを復号するステップとを備える方法。
例5. ビデオデータを復号する方法であって、サブブロックベースのマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第1のシンタックス要素をパースするステップと、第1のシンタックス要素の値に基づいて、現在のブロックに対してサブブロックベースのマージモードグループが選択されないと決定するステップと、サブブロックベースのマージモードグループが選択されないことに基づいて、標準マージモードグループまたはブレンディングマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第2のシンタックス要素をパースするステップと、第2のシンタックス要素の値に基づいて、通常のマージモードか動きベクトル差分付きマージモード(MMVD)かを決定するために、ビットストリーム中の第3のシンタックス要素をパースするステップと、第3のシンタックス要素の値に基づいて、通常のマージモードが選択されると決定するステップと、通常のマージモードを使用して現在のブロックを復号するステップとを備える方法。
例6. ビデオデータを復号する方法であって、サブブロックベースのマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第1のシンタックス要素をパースするステップと、第1のシンタックス要素の値に基づいて、現在のブロックに対してサブブロックベースのマージモードグループが選択されないと決定するステップと、サブブロックベースのマージモードグループが選択されないことに基づいて、標準マージモードグループまたはブレンディングマージモードグループが選択されるかどうかを決定するために、ビットストリーム中の第2のシンタックス要素をパースするステップと、第2のシンタックス要素の値に基づいて、合成インターイントラ予測(CIIP)が選択されるかまたは三角マージ予測(TMP)が選択されるかを決定するために、ビットストリーム中の第4のシンタックス要素をパースするステップと、第4のシンタックス要素の値に基づいて、CIIPまたはTMPのうちの1つを使用して現在のブロックを復号するステップとを備える方法。
例7. ビデオデータを復号する方法であって、
第1のシンタックス要素の値に基づいて、サブブロックベースのマージモードが選択されないと決定するステップと、サブブロックベースのマージモードが選択されないことに基づいて、動きベクトル差分付きマージモード(MMVD)が選択されるかどうかを示す第2のシンタックス要素をパースするステップと、第2のシンタックス要素がMMVDが選択されることを示すことに基づいて、MMVDを使用して現在のブロックを復号するステップとを備える方法。
例8. ビデオデータを復号する方法であって、
第1のシンタックス要素の値に基づいて、サブブロックベースのマージモードが選択されないと決定し、第2のシンタックス要素の値に基づいて、動きベクトル差分付きマージモード(MMVD)が選択されないと決定するステップと、サブブロックベースのマージモードおよびMMVDが選択されないことに基づいて、合成インターイントラ予測(CIIP)が選択されるかどうかを示す第3のシンタックス要素をパースするステップと、第3のシンタックス要素がCIIPが選択されることを示すことに基づいて、CIIPを使用して現在のブロックを復号するステップとを備える方法。
例9. ビデオデータを復号する方法であって、
第1のシンタックス要素の値に基づいて、サブブロックベースのマージモードが選択されないと決定し、第2のシンタックス要素の値に基づいて、動きベクトル差分付きマージモード(MMVD)が選択されないと決定し、第3のシンタックス要素の値に基づいて、合成インターイントラ予測(CIIP)が選択されないと決定するステップと、サブブロックベースのマージモード、MMVD、およびCIIPが選択されないことに基づいて、三角マージ予測が選択されるかどうかを示す第4のシンタックス要素をパースするステップであって、第4のシンタックス要素の第1の値が、三角マージ予測が選択されることを示し、第4のシンタックス要素の第2の値が、通常のマージモードが選択されることを示す、ステップと、第4のシンタックス要素の値が第1の値であるかまたは第2の値であるかに基づいて、三角マージ予測または通常のマージモードを使用して現在のブロックを復号するステップとを備える方法。
例10. ビデオデータを符号化する方法であって、現在のブロックに対するマージモードタイプを決定するステップと、マージモードタイプに基づいて例3~例9のうちのいずれかにおいてシンタックス要素がパースされる様式に従ってシンタックス要素をシグナリングするステップとを備える方法。
例11. ビデオデータを復号するためのデバイスであって、ビデオデータを記憶するためのメモリと、固定機能またはプログラマブル回路のうちの少なくとも1つを備えるビデオデコーダであって、例3~9のうちのいずれかの方法を実行するように構成されるビデオデコーダとを備えるデバイス。
例12. ビデオデータを符号化するためのデバイスであって、ビデオデータを記憶するためのメモリと、固定機能またはプログラマブル回路のうちの少なくとも1つを備えるビデオエンコーダであって、例10の方法を実行するように構成されるビデオエンコーダとを備えるデバイス。
例13. カメラまたはディスプレイのうちの少なくとも1つを備える、例11および12のうちのいずれかのデバイス。
例14. カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数である、例11~13のうちのいずれかのデバイス。
例15. ビデオデータを復号するデバイスであって、例3~9のうちのいずれかの方法を実行するための手段を備えるデバイス。
例16. 実行されると、ビデオデータを復号するためのデバイスの1つまたは複数のプロセッサに例3~9のうちのいずれかの方法を実行させる命令を記憶するコンピュータ可読記憶媒体。
例17. ビデオデータを符号化するデバイスであって、例10の方法を実行するための手段を備えるデバイス。
例18. 実行されると、ビデオデータを符号化するためのデバイスの1つまたは複数のプロセッサに例10の方法を実行させる命令を記憶するコンピュータ可読記憶媒体。
例に応じて、本明細書で説明する技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行される場合があり、追加され、統合され、または完全に除外されてもよい(たとえば、説明したすべての行為またはイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて、同時に実行されてもよい。
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、または他の同等の集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明する技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明する機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内で提供されてもよく、または複合コーデックに組み込まれてもよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示で説明されるが、それらは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされてもよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてもよい。
様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。