[0027]図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0028]図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0029]図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、時間動きベクトル予測(TMVP)の導出のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表し、宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0030]図1に示されているシステム100は一例にすぎない。概して、いかなるデジタルビデオ符号化および/または復号デバイスも、TMVPのための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実施するデバイスとして参照する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、特に、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス102とビデオデバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
[0031]概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110上に出力し得る。
[0032]ソースデバイス102のメモリ106と、宛先デバイス116のメモリ120とは、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオ、およびビデオデコーダ300からの生の復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200とビデオデコーダ300とによって実行可能なソフトウェア命令を記憶し得る。この例では、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同様のまたは等価な目的で内部メモリをも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力、およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、生の復号および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
[0033]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0034]いくつかの例では、ソースデバイス102は、出力インターフェース108からストレージデバイス112に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介してストレージデバイス112から符号化されたデータにアクセスし得る。ストレージデバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0035]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間ストレージデバイスに符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準のデータ接続を通してファイルサーバ114から符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0036]出力インターフェース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デバイスを含み得る。
[0037]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0038]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、ストレージデバイス112、ファイルサーバ114など)から符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
[0039]図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームをハンドリングするために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0040]ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0041]ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれらの拡張など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは、ジョイント探査テストモデル(JEM)、または汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266など、他のプロプライエタリまたは業界規格に従って動作し得る。VVC規格の最近のドラフトは、Brossら、「Versatile Video Coding (Draft 5)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第14回会合、ジュネーブ、スイス、2019年3月19~27日、JVET-N1001-v9(以下、「VVCドラフト5」)に記載されており、phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v9.zipにおいて入手可能である。VVC規格の前のドラフトは、Brossら、「Versatile Video Coding (Draft 4)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第13回会合、マラケシュ、モロッコ、2019年1月9~18日、JVET-M1001-v7(以下、「VVCドラフト4」)に記載されており、phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_Geneva/wg11/JVET-M1001-v7.zipにおいて入手可能である。他の例では、ビデオエンコーダ200とビデオデコーダ300とは、開発中のMPEG-5/EVC(エッセンシャルビデオコーディング)規格の1つまたは複数のバージョンに従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0042]概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、概して、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理および後処理ユニット(図示せず)が、これらのコンバージョンを実施し得る。
[0043]本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして理解されるべきである。
[0044]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない正方形に区分し、クワッドツリーの各ノードは、0個または4つのいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
[0045]別の例として、ビデオエンコーダ200とビデオデコーダ300とは、EVC、JEM、またはVVCに従って動作するように構成され得る。EVC、JEM、またはVVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、2つのレベル、すなわち、クワッドツリー区分に従って区分される第1のレベルと、バイナリツリー区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードは、CTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
[0046]MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)区分とを使用して区分され得る。トリプルツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であり得る。
[0047]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0048]ビデオエンコーダ200とビデオデコーダ300とは、HEVCに従うクワッドツリー区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0049]ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
[0050]いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
[0051]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
[0052]本開示は、垂直寸法と水平寸法とに関して(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を指すために、「N×N(NxN)」および「N×N(N by N)」、たとえば、16×16サンプル(16x16 samples)または16×16サンプル(16 by 16 samples)を互換的に使用し得る。概して、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、概して、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0053]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0054]CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0055]EVC、JEM、およびVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0056]イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。EVC、JEM、およびVVCのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上、左上、または左にあり得る。
[0057]ビデオエンコーダ200は、現在ブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
[0058]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを作り出すために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を作り出す。
[0059]上述のように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は変換係数の量子化を実施し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に丸めることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位右シフトを実施し得る。
[0060]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、より高いエネルギー(したがって、より低い頻度)の係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、シリアル化されたベクトルを作り出すために、量子化された変換係数を走査するために、あらかじめ定義された走査順序を利用し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
[0061]CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0062]ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0063]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
[0064]概して、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
[0065]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックのための残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
[0066]上記で説明されたように、ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ならびにそのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264、その範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)を含む高効率ビデオコーディング(HEVC)またはITU-T H.265を含み、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のジョイントコラボレーションチームオンビデオコーディング(JCT-VC)ならびにジョイントコラボレーションチームオン3Dビデオコーディング拡張開発(JCT-3V)によって開発された。HEVC規格のドラフトは、itu.int/rec/T-REC-H.265-201802-I/enから取得され得る(以下、「HEVC規格」)。
[0067]ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC1/SC29/WG11)は、(スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングのためのそれの現在の拡張と短期での拡張とを含む)HEVC規格の圧縮能力を著しく超える圧縮能力をもつ将来のビデオコーディング技術の規格化の潜在的ニーズを研究した。そのグループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、ジョイントビデオ探査チーム(JVET:Joint Video Exploration Team)として知られるジョイントコラボレーション作業においてこの探査活動に関して協働している。JVETは、2015年10月19日~21日の間、初めて開かれた。また、参照ソフトウェアの最新バージョン、すなわち、ジョイント探査モデル7(JEM7:Joint Exploration Model 7)は、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-73.0/から取得され得る。
[0068]ITU-T WP3/16およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)が、GRーLjubljana Exhibition and Convention Centre(Dunajska cesta18、1000 リュブリャナ、スロベニア)において、2018年7月10~18日の間、第11回会合を開催した。汎用ビデオコーディング(VVC)という名称が、新しい規格に対する非公式なニックネームとして選定された。参照ソフトウェアVTMおよびBMは、jvet.hhi.fraunhofer.de/svn/svn_VVCSoftware_VTM/およびjvet.hhi.fraunhofer.de/svn/svn_VVCSoftware_BMS/からダウンロードされ得る。上記で説明されたように、VVC規格の現在のドラフトは、本明細書ではVVCドラフト5と呼ばれる。
[0069]以下は、HEVCにおけるCU構造および動きベクトル予測を検討する。HEVCでは、スライス中の最大コーディングユニットは、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)と呼ばれる。CTBはクワッドツリーを含んでおり、そのノードはコーディングユニットである。
[0070](技術的に、8×8のCTBサイズがサポートされ得るが)CTBのサイズは、HEVCメインプロファイルにおいて16×16から64×64に及び得る。コーディングユニット(CU)は、8×8程度の小さいCTBと同じサイズであり得る。各コーディングユニットは、インターコード化またはイントラコード化など、1つのモードを用いてコーディングされる。インターコード化は、インター予測コード化またはインター予測と呼ばれることもある。イントラコード化は、イントラ予測コード化またはイントラ予測と呼ばれることもある。
[0071]CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU)にさらに区分され得るか、または、さらなる区分が適用されないとき、1つのPUになり得る。1つのCU中に2つのPUが存在するとき、それらのPUは、1/2サイズの長方形、あるいはCUの1/4または3/4サイズをもつ2つの長方形サイズであり得る。CUがインターコーディングされるとき、各PUは、インター予測モードを用いて導出される、動き情報の1つのセットを有する。
[0072]以下は、動きベクトル予測を検討する。HEVC規格では、予測ユニット(PU)のために、それぞれ、マージモード(スキップはマージの特別な事例と見なされる)および高度動きベクトル予測(AMVP)モードと称する、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかでは、複数の動きベクトル予測子について(MV候補リストとも呼ばれる)動きベクトル(MV)予測子リストが維持される。動きベクトル予測子リストは、動きベクトル予測子リストと呼ばれることがある。現在のPUの、動きベクトル、ならびにマージモードにおける参照インデックスは、動きベクトル予測子リストから1つの候補をとることによって生成される。動きベクトル予測子リストは、マージモードのために5つまでの候補と、AMVPモードのために2つのみの候補とを含んでいることがある。マージ候補は、動き情報のセット、たとえば、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含んでいることがある。マージ候補がマージインデックスによって識別される場合、現在ブロックの予測のために使用される参照ピクチャ、ならびに関連する動きベクトルが決定される。言い換えれば、マージインデックスによって動きベクトル予測子リスト中で識別された動きベクトルおよび参照ピクチャは、現在ブロックの動きベクトルおよび参照ピクチャに等しく設定される。
[0073]一方、AMVPモードの下では、リスト0またはリスト1のいずれかからの各潜在的予測方向について、AMVP候補が動きベクトルのみを含んでいるので、動きベクトル予測子リストへのMV予測子(MVP:MV predictor)インデックスとともに参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルは、(たとえば、上記で説明された動きベクトル差分(MVD)に基づいて)さらに改良され得る。両方のモードのための候補は、同じ空間および時間隣接ブロックから同様に導出される。
[0074]図2Aおよび図2Bは、HEVCにおける空間隣接候補を示す概念図である。空間MV候補は、特定のPU(PU0)について、図2Aおよび図2Bに示されている隣接ブロックから導出されるが、ブロックから候補を生成する方法は、マージモードおよびAMVPモードについて異なる。
[0075]マージモードでは、最高4つの空間MV候補が、番号とともに図2Aに示されている順序を用いて導出され得、その順序は、図2Aに示されているように、左(0,A1)、上(1,B1)、右上(2,B0)、左下(3,A0)、および左上(4,B2)である。すなわち、図2Aでは、ブロック1000はPU0 1040AとPU1 1040Bとを含む。ビデオコーダが、マージモードを使用してPU0 104Aのための動き情報をコーディングすべきであるとき、ビデオコーダは、空間隣接ブロック1080A、1080B、1080C、1080D、および1080Eからの動き情報を、その順序で候補リストに追加する。ブロック1080A、1080B、1080C、1080D、および1080Eは、それぞれ、HEVCの場合のように、ブロックA1、B1、B0、A0、およびB2と呼ばれることもある。
[0076]AVMPモードでは、いくつかの例では、隣接ブロックは、2つのグループ、すなわち、図2B上に示されているように、ブロック0および1を含む左グループと、ブロック2、3、および4を含む上グループとに分割される。これらのブロックは、それぞれ、図2B中でブロック1100A、1100B、1100C、1100D、および1100Eと標示される。特に、図2Bでは、ブロック1020は、PU0 1060AとPU1 1060Bとを含み、ブロック1100A、1100B、1100C、1100D、および1100Eは、PU0 1060Aに対する空間ネイバーを表す。各グループについて、シグナリングされた参照インデックスによって示された参照ピクチャと同じ参照ピクチャを参照する隣接ブロックの中の潜在的候補が、グループの最終候補を形成するために選定されるべき最高優先度を有する。すべての隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含んでいるとは限らない可能性がある。したがって、そのような候補が見つけられ得ない場合、第1の利用可能な候補は、最終候補を形成するためにスケーリングされることになり、したがって、時間距離差分が補償され得る。
[0077]図3Aおよび図3Bは、HEVCにおける時間動きベクトル予測(TMVP)を示す概念図である。特に、図3Aは、PU0 522AとPU1 522Bとを含む例示的なCU520を示す。PU0 522Aは、PU522Aのための中心ブロック526とPU0 522Aに対する右下ブロック524とを含む。図3Aはまた、以下で説明されるように、動き情報がPU0 522Aの動き情報からそれについて予測され得る外部ブロック528を示す。図3Bは、動き情報がそれについて予測されるべきである現在ブロック538を含む現在ピクチャ530を示す。特に、図3Bは、(現在ブロック538に対するコロケートされたブロック540を含む)現在ピクチャ530に対するコロケートされたピクチャ534と、現在参照ピクチャ532と、コロケートされた参照ピクチャ536とを示す。コロケートされたブロック540は、ブロック538の動き情報のための時間動きベクトル予測子(TMVP)542として使用される、動きベクトル544を使用して予測される。
[0078]ビデオコーダは、TMVPが有効にされ、TMVP候補が利用可能である場合、TMVP候補(たとえば、TMVP候補542)を、任意の空間動きベクトル候補の後にMV候補リストに追加し得る。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方について同じである。しかしながら、マージモードでのTMVP候補のためのターゲット参照インデックスは、HEVCに従って、0に設定される。
[0079]TMVP候補導出のための1次ブロックロケーションは、空間隣接候補を生成するために使用される上および左ブロックへのバイアスを補償するための、PU0 522Aに対するブロック524として図3Aに示されているような、コロケートされたPUの外側の右下ブロックである。しかしながら、ブロック524が現在CTB行の外側に位置するか、または、動き情報がブロック524のために利用可能でない場合、ブロックは、図3Aに示されているようにPUの中心ブロック526と置換される。TMVP候補542のための動きベクトルは、スライスレベル情報に示されているように、コロケートされたピクチャ534のコロケートされたブロック540から導出される。
[0080]AVCにおける時間直接モードと同様に、TMVP候補の動きベクトルは、動きベクトルスケーリングを受けることがあり、動きベクトルスケーリングは、現在ピクチャ530と現在参照ピクチャ532との間の、およびコロケートされたピクチャ534とコロケートされた参照ピクチャ536との間のピクチャ順序カウント(POC)距離差分を補償するために実施される。すなわち、動きベクトル544は、これらのPOC差分に基づいて、TMVP候補542を作り出すためにスケーリングされ得る。
[0081]マージ/スキップモードにおける動きベクトル予測が、次に説明される。スキップモードおよびマージモードでは、マージング候補リスト中のどの候補が使用されるかを示すために、マージインデックスがシグナリングされる。インター予測インジケータ、参照インデックス、またはMVDは送信されない。マージモードでは、2つのタイプのマージング候補、すなわち、空間動きベクトル予測子(SMVP)および時間動きベクトル予測子(TMVP)が考慮され得る。SMVP導出では、図2Aに示されている位置にある候補の中から最大4つのマージ候補が選択される。導出の順序は、A1→B1→B0→A0→(B2)である。位置B2は、位置A1、B1、B0、A0のPUが利用可能でないかまたはイントラコーディングされるとき、あるいは、位置A1、B1、B0、A0からの、プルーニングの後の候補の総数が4よりも小さいときのみ、考慮される。
[0082]TMVPの導出では、シグナリングされた参照ピクチャリスト内の現在ピクチャの参照ピクチャのうちの1つに属するコロケートされたPUに基づいて、スケーリングされた動きベクトルが導出され得る。コロケートされたPUの導出のために使用されるべき参照ピクチャリストは、スライスヘッダ中で明示的にシグナリングされ得る(たとえば、ref_pic_list_idx)。時間マージ候補のためのスケーリングされた動きベクトルは、POC距離、tbおよびtdを使用して、コロケートされたPUのスケーリングされた動きベクトルを用いて取得され、ここで、tbは現在ピクチャの参照ピクチャと現在ピクチャとの間のPOC差分であるように定義され、tdはコロケートされたピクチャの参照ピクチャとコロケートされたピクチャとの間のPOC差分であるように定義される。時間マージ候補の参照ピクチャインデックスは、0に等しく設定される。スケーリングプロセスの実際の実現形態は、HEVC仕様において説明される。Bスライスについて、一方が参照ピクチャリスト0のための動きベクトルであり、他方が参照ピクチャリスト1のための動きベクトルである、2つの動きベクトルが取得され、双予測マージ候補を作るために組み合わせられる。このプロセスは、暗黙的パラメータに基づいてTMVPを導出することと呼ばれることがある。
[0083]図4Aおよび図4Bは、マージ/スキップモードのための空間および時間隣接動きベクトル候補を示す概念図である。図4Bに示されているように、コロケートされたPUの位置は、2つの候補位置、CとHとの間で選択される。位置HにおけるPUが利用可能でないか、またはイントラコーディングされるか、または現在のCTU行の外側にある場合、位置Cが使用される。他の場合、時間マージ候補の導出のために位置Hが使用される。
[0084]SMVPおよびTMVPのほかに、2つの追加のタイプの合成マージ候補、すなわち、組合せ双予測MVPおよび0MVPがあり得る。組合せ双予測MVPは、SMVPおよびTMVPを利用することによって生成される。組合せ双予測マージ候補は、Bスライスのみについて使用される。たとえば、mvL0およびrefIdxL0またはmvL1およびrefIdxL1を有する、元のマージ候補リスト中の2つの候補が、組合せ双予測マージ候補を作成するために使用される。
[0085]候補選択のプロセスにおいて、処理順序で前の候補と同じ動きパラメータを有する複製された候補は、候補リストから除去される。このプロセスは、プルーニングプロセスとして定義される。また、並列マージ処理を助けるために、同じマージ推定領域(MER:merge estimation region)内の候補は考慮されない。仮想2N×2N区分をエミュレートしないために、冗長な区分形状が回避される。
[0086]各生成ステップ間で、候補の数がMaxNumMergeCandに達する場合、導出プロセスが停止される。現在の共通のテスト条件では、MaxNumMergeCandは、5に等しく設定される。候補の数は一定であるので、最良のマージ候補のインデックスは、短縮単項2値化(TU)を使用して符号化される。
[0087]HEVCにおける動き予測のいくつかの態様が以下で説明される。
[0088]動きベクトルスケーリング:動きベクトルの値は提示時間におけるピクチャ間の距離に比例すると仮定される。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含んでいるピクチャ(すなわち、含有ピクチャ(containing picture))とを関連付ける。別の動きベクトルを予測するためにビデオエンコーダ20またはビデオデコーダ30によって動きベクトルが使用されるとき、含有ピクチャと参照ピクチャとの間の距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
[0089]予測されるべき動きベクトルについて、それの関連する含有ピクチャと参照ピクチャとは異なる。すなわち、2つの別個の動きベクトル、すなわち、予測されるべき第1の動きベクトルと、第1の動きベクトルを予測するために使用される第2の動きベクトルとについて、2つのPOC差分値がある。その上、第1のPOC差分は、第1の動きベクトルの現在ピクチャと参照ピクチャとの間の差分であり、第2のPOC差分は、第2の動きベクトルを含んでいているピクチャと第2の動きベクトルが参照する参照ピクチャとの間の差分である。第2の動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされ得る。空間隣接候補では、2つの動きベクトルのための含有ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間および時間隣接候補のためにTMVPとAMVPの両方に適用される。
[0090]擬似動きベクトル候補生成:動きベクトル候補リストが完全でない場合、擬似動きベクトル候補が生成され、リストが所定の数の候補を含むまでリストの最後に挿入され得る。
[0091]マージモードでは、2つのタイプの擬似MV候補、すなわち、Bスライスについてのみ導出された組合せ候補と、第1のタイプが十分な擬似候補を提供しない場合にAMVPのためにのみ使用される0候補とがある。
[0092]すでに候補リスト中にあり、必要な動き情報を有する候補の各ペアについて、双方向組合せ動きベクトル候補が、リスト0中のピクチャを参照する第1の候補の動きベクトルと、リスト1中のピクチャを参照する第2の候補の動きベクトルとの組合せによって導出される。
[0093]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、候補挿入のためのプルーニングプロセスを実施し得る。異なるブロックからの候補は偶然同じであり得、これはマージ/AMVP候補リストの効率を減少させる。この問題を解決するために、プルーニングプロセスが適用され得る。プルーニングプロセスに従って、ビデオコーダは、ある程度まで、同等の候補を挿入することを回避するために、現在候補リスト中のある候補を他の候補と比較する。複雑さを低減するために、各潜在的候補を、すでにリスト中にあるすべての他の既存の候補と比較する代わりに、限られた数のプルーニングプロセスのみが適用される。
[0094]高度時間動きベクトル予測(ATMVP)は、各PUが(動きベクトルと参照フレームとを含む)動き情報の複数のセットを取得することを可能にするために提案された。ATMVPにおける動き情報は、ただし、参照ピクチャからのみ来る。現在PUのATMVPを導出するために、第1のステップは、時間動きベクトルがどこでフェッチされるべきかを決定することである。ビデオコーダは、5つの隣接ブロック中で、順番に、または、左、上、右上、左下、および左上に、第1の利用可能な動きベクトルを見つける。5つの隣接ブロックの定義は、現在PUの空間マージ候補と同じである。隣接ブロックの反復的な走査プロセスを回避するために、ビデオコーダは、時間動きベクトルをどこでフェッチすべきかを決定するために、すでに導出されたマージ候補リスト中の第1のマージ候補の動きベクトルのみを見つけ得る。ビデオコーダは、PUを正方形N×NサブPUにスプリットし得る(たとえば、Nは、4に設定される)。サブPUの動きベクトルは、ラスタ走査順序に従って、再帰的に導出される。
[0095]図5は、参照ピクチャからのサブPU動き予測を示す概念図である。この例では、現在ピクチャ880は、現在PU884(たとえば、PU)を含む。この例では、動きベクトル892は、PU884に対する参照ピクチャ882のPU886を識別する。PU886は、各々がそれぞれの動きベクトル890A~890Dを有する、サブPU888A~888Dに区分される。したがって、現在PU884は、実際は別個のサブPUに区分されないが、この例では、現在PU884は、サブPU888A~888Dからの動き情報を使用して予測され得る。特に、ビデオコーダは、それぞれの動きベクトル890A~890Dを使用して現在PU884のサブPUをコーディングし得る。しかしながら、ビデオコーダは、現在PU884がサブPUにスプリットされることを示すシンタックス要素をコーディングする必要がない。このようにして、現在PU884は、現在PU884を複数のサブPUにスプリットするために使用されるシンタックス要素のシグナリングオーバーヘッドなしに、それぞれのサブPU888A~888Dから継承される、複数の動きベクトル890A~890Dを使用して効果的に予測され得る。
[0096]図6は、(TMVPと同様の)ATMVPにおける関連するピクチャを示す概念図である。特に、図6は、現在ピクチャ904と、動きソースピクチャ906と、参照ピクチャ900、902とを示す。より詳細には、現在ピクチャ904は現在ブロック908を含む。時間動きベクトル912は、現在ブロック908に対する動きソースピクチャ906の対応するブロック910を識別する。対応するブロック910は、今度は、動きベクトル914を含み、これは、参照ピクチャ902を参照し、現在ブロック908の少なくとも一部分、たとえば、現在ブロック908のサブPUのための高度時間動きベクトル予測子として働く。すなわち、動きベクトル914は、現在ブロック908のための候補動きベクトル予測子として追加され得る。選択された場合、現在ブロック908の少なくとも一部分は、参照ピクチャ900を参照する、対応する動きベクトル、すなわち、動きベクトル916を使用して予測され得る。
[0097](たとえば、L.Zhang、K.Zhang、H.Liu、Y.Wang、P.Zhao、およびD.Hong、「CE4-related: History-based Motion Vector Prediction」、JVET-K0104、2018年7月に記載されている)履歴ベース動きベクトル予測(HMVP:history-based motion vector prediction)は、ビデオエンコーダ200とビデオデコーダ300とが、すぐ隣り合う因果的隣接動きフィールドにおけるMVに加えて、過去から復号されたMVのリストから各ブロックのためのMV予測子を決定する、履歴ベースの方法である。HMVPは、HMVP候補として以前に復号された動きベクトルのためのテーブルを保つことを伴う。
[0098]ビデオエンコーダ200とビデオデコーダ300とは、符号化/復号プロセス中に複数のHMVP候補をもつテーブルを維持する。テーブルを維持することは、テーブルにHMVP候補を追加すること、ならびにテーブルからHMVP候補を除去することを含み得る。ビデオエンコーダ200とビデオデコーダ300とは、新しいスライスに遭遇したとき、テーブルを空にする(たとえば、HMVP候補を除去する)ように構成され得る。インターコード化ブロックがあるときはいつでも、ビデオエンコーダ200とビデオデコーダ300とは、関連する動き情報を、先入れ先出し(FIFO)様式で、新しいHMVP候補としてテーブルに挿入するように構成され得る。次いで、ビデオエンコーダ200とビデオデコーダ300とは、制約FIFOルールを適用するように構成され得る。HMVP候補をテーブルに挿入するとき、ビデオエンコーダ200とビデオデコーダ300とは、同等のHMVP候補がテーブル中にあるかどうかを決定するために冗長検査(たとえば、プルーニング)を最初に適用するように構成され得る。見つけた場合、ビデオエンコーダ200とビデオコーダ300とは、テーブルからのその特定のHMVP候補を除去するように構成され得、その候補の後のすべてのHMVP候補が移動される。
[0099]ビデオエンコーダ200とビデオデコーダ300とは、マージ候補リスト構築プロセスにおいてHMVP候補を使用するように構成され得る。たとえば、ビデオエンコーダ200とビデオデコーダ300とは、最後のエントリから最初のエントリまでのすべてのHMVP候補を、TMVP候補の後にテーブルに挿入するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、HMVP候補に対してプルーニングを適用するように構成され得る。利用可能なマージ候補の総数が、許容マージ候補のシグナリングされるまたは所定の最大数に達すると、ビデオエンコーダ200とビデオデコーダ300とは、マージ候補リスト構築プロセスを終了するように構成され得る。
[0100]同様に、ビデオエンコーダ200とビデオデコーダ300とは、AMVP候補リスト構築プロセスにおいてHMVP候補を使用するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、最後のK個のHMVP候補の動きベクトルを、TMVP候補の後にテーブルに挿入するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、AMVP候補リストを構築するために、AMVPターゲット参照ピクチャと同じ参照ピクチャをもつHMVP候補のみを使用するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、HMVP候補に対してプルーニングを適用するように構成され得る。
[0101]非サブPU空間時間動きベクトル予測子(STMVP)予測モードが、ビデオコーディング規格(VVC)の将来世代のために提案される。図7は、非サブPU空間時間動きベクトル予測子の導出を示す概念図である。ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、位置のうちの多くとも2つを、上の位置、すなわち、(PU_width-1,-1)および(PU_width×2,-1))について、ならびに左の位置、すなわち、(-1,PU_height-1)、(-1,PU_height×2))について、検査し得る。ビデオコーダは、2つの空間候補と1つの時間候補とを含む3つの候補を平均化することによって、非サブPU STMVPを生成し得る。候補のうちの2つまたは1つのみが利用可能である場合、ビデオコーダは、2つの利用可能な候補を平均化することによってSTMVPを生成するか、またはただ1つの動きベクトルを使用し得る。
[0102]簡略化されたSTMVP設計が、Y.-H.Chao、Y.Han、D.Rusanovskyy、W.-J.Chien、M.Karczewicz、CE4:STMVP簡略化(テスト4.2.3a)、JVET-M0221(以下、「JVET-M0221」)において提案され、ここで、STMVP導出に対する入力として検査される空間ネイバーの数が、2つに限定され、1つの上空間ネイバーおよび1つの左ネイバーに限定される。検査されるネイバーは、上ネイバーについて、(PU_width-1,-1)または(PU_width×2,-1)であり、左ネイバーについて、(-1,PU_height-1)または(-1、PU_height×2)のみを検査する。
[0103]STMVP出力のための導出プロセスが、以下のように定義される。
[0104]乗数および分母は、両方とも2のべき乗と等価な値のものであり、したがって、ビットシフトによってハードウェアで容易に実装され得る。
[0105]乗数および分母は、両方とも2のべき乗と等価な値のものであり、したがって、ビットシフトによってハードウェアで容易に実装され得る。A0、A1、B1、B0候補位置(それらが利用可能である場合)に続いて、マージ/AMVP候補リスト位置における5番目の潜在的位置にSTMVP候補を配置することが提案された。偶然にも空間候補のいずれも利用可能でない場合、候補リスト中のSTMVPエントリ位置インデックスは5よりも小さくなることに留意されたい。
[0106]VVCドラフト4における提案されたマージリスト構築プロセスの一例が以下で示され、STMVP態様が、アスタリスク(*)シンボルによって挟まれている。
a. ブロックA1、B1、B0およびA0のための空間候補。
b. *STMVP候補MVSTMVP*。
c. 候補の数が4よりも小さい場合、B2を追加する。
d. TMVP候補。
e. HMVP候補。
f. ペアワイズ候補。
g. 0候補。
[0107]STMVP出力MVPおよびSTMVP入力MVPについての冗長検査によって実施されるべきSTMVP候補に対するプルーニングプロセスことも提案された。
[0108]MPEG5エッセンシャルビデオコーディング(EVC)WD1のマージモードにおいて利用されるMVPが、以下の動きベクトル候補、すなわち、a)4つの空間候補A1、B1、B0、A0およびB2、b)TMVP候補、c)HMVP候補、d)合成双候補、ならびにe)0候補を考慮する。いくつかの例では、追加の合成ペアワイズ動きベクトル候補が、追加のコーディング利得を提供することができる。
[0109]本開示は、上述の問題を解決し得るTMVP設計に対するいくつかの改善を提案する。本明細書で説明される改善のいずれも、独立してまたは組合せで使用され得る。
[0110]本開示は、概して、シンタックス要素など、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素についての値をシグナリングし得る。概して、シグナリングは、ビットストリームにおいて値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素をストレージデバイス112に記憶するときに行われ得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0111]第1の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、コロケートされたブロックのMVのスケーリングされたバージョンとして、TMVP候補を導出し得る。スケーリングプロセスの例示的な実装形態が、以下で示される。
[0112]変数refPicListCol[refIdxCol]は、ColPicによって指定されたコロケートされたピクチャ中の予測ブロックcolPbを含んでいるスライスの参照ピクチャリストlistCol中に参照インデックスrefIdxColをもつピクチャになるように設定され、以下が適用される。
[0113]現在ピクチャと、refIdxLXをもつ現在ピクチャの参照ピクチャリストRefPicListX[refIdxLX]との間の(currPocDiffXとして示される)POC距離が0に等しく、以下のように算出される。
[0114]コロケートされたピクチャColPicと、コロケートされたピクチャのリストX参照ピクチャrefPicListCol[refIdxLXCol]との間のPOC距離は、colPocDiffLXとして示され、以下のように算出される。
[0115]有効なrefIdxColLXの場合、変数availableFlagLXColが1に等しく設定され、mvLXColが、動きベクトルmvColLXのスケーリングされたバージョンとして以下のように導出される。
Xは0または1であり、それぞれ、参照リスト0および参照リスト1を指定する。
[0116]第2の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、スケーリングの以下のパラメータ(colPocDiffLX、currPocDiffLX)で、TMVPを導出し得る。導出の例示的な一実装形態が、以下で示される。
[0117]変数mvLXColおよびavailableFlagLXColは、Xが0または1に等しい場合、以下のように導出される。
- colCbがイントラ予測モードでコーディングされる場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
- 他の場合、動きベクトルmvCol、参照インデックスrefIdxColおよび参照リスト識別子listColは以下のように導出される。
○ predFlagL0Col[x][y]が0に等しく、predFlagL1Col[x][y]が1に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]に等しく設定され、およびXをもつLXが1に等しい。
○ predFlagL0Col[x][y]が1に等しく、predFlagL1Col[x][y]が0に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]に等しく設定され、およびXをもつLXが0に等しい。
○ 他の場合(predFlagL0Col[x][y]が1に等しく、predFlagL1Col[x][y]が1に等しい場合)、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]およびLXに等しく設定される。
- また、mvLXColおよびavailableFlagLXColは以下のように導出される。
[0118]第3の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、スケーリングの以下のパラメータ(colPocDiffLX、currPocDiffLX)で、TMVPを導出し得る。スケーリングプロセスの例示的な一実装形態が、以下で示される。
[0119]変数mvLXColおよびavailableFlagLXColは、Xが0または1に等しい場合、以下のように導出される。
- colCbがイントラ予測モードでコーディングされる場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
- 他の場合、動きベクトルmvCol、参照インデックスrefIdxColおよび参照リスト識別子listColは以下のように導出される。
・predFlagLXCol[x][y]が1に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]等しく設定され、およびXをもつLXがcol_source_mvp_list_idxに等しい。
mvLXColおよびavailableFlagLXColは以下のように導出される。
[0120]第3の技法のいくつかの例では、ビデオコーダは、MVCの単予測のMVCから双予測TMVPを作り出し得る。たとえば、ビデオコーダは、現在ピクチャのMVCおよびPOCと、コロケートされたブロックのLIST0からのコロケートされたピクチャdptr[REFP_0]およびdptr_co[REFP_0]のPOCとを導出し、スケーリングされたMVPを導出するためにこれらの値を使用し得る。ビデオコーダは、コロケートされた動きベクトル(mvc)をスケーリングすることによって、TMVP出力のLIST0(mvp[REFP_0])およびLIST1(mvp[REFP_1])におけるMVPを作り出すために、得られたスケーリングされたMVPを使用し、異なる符号を伴ってとり得る。
col_source_mvp_list_idxリストからの、および2つのリストに割り当てられたmvLXCol[xColCb][yColCb]。
[0121]第4の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、TMVP導出のパラメータをシグナリング(たとえば、符号化および復号)し得る。一例として、ビデオコーダは、TMVP導出のパラメータをシグナリングし得る。別の例として、ビデオコーダは、導出フローを制御し得る。たとえば、ビデオコーダは、代替方法によるTMVP導出間で(たとえば、上記で説明された第1、第2、または第3の技法のいずれかの間で)切り替わり得る。
[0122]TMVP導出のパラメータのための例示的なシンタックステーブルが以下で提供される(追加はイタリック体で示されている)。
[0124]上記のシンタックステーブル中のシンタックス要素のための例示的なセマンティクスが以下で提供される。
[0125]temporal_mvp_asigned_flagは、時間動きベクトル予測子導出プロセスがビットストリームにおいてシグナリングされる追加のパラメータでコンフィギュアドされるべきかどうかを指定する。存在しないとき、temporal_mvp_asigned_flagの値は0に等しいと推論される。
[0126]col_pic_list_idxは、時間動きベクトル予測の目的で、コロケートされたピクチャの導出のための参照ピクチャリストを指定する。col_pic_list_idxが存在せず、slice_typeがPに等しいとき、col_pic_list_idxは、0に等しいと推論される。col_pic_list_idxが存在せず、slice_typeがBに等しいとき、col_pic_list_idxは、1に等しいと推論される。
[0127]col_pic_ref_idxは、時間動きベクトル予測のために使用されるコロケートされたピクチャの参照インデックスを指定する。collocated_ref_idxはRefPicList[col_pic_list_idx]におけるピクチャを参照し、collocated_ref_idxの値は、両端値を含む、0~num_ref_idx_active_minus1[col_pic_list_idx]の範囲内にあるものとする。col_pic_ref_idxが存在しないとき、col_pic_ref_idxは、0に等しいと推論される。
[0128]col_source_mvp_list_idxは、時間動きベクトル予測の目的で、動きベクトル候補の導出のための参照ピクチャリストを指定する。col_source_mvp_list_idxが存在しないとき、col_source_mvp_list_idxは、0に等しいと推論される。1に等しいtile_group_deblocking_filter_flagは、デブロッキングフィルタの動作が現在タイルグループのために適用されることを指定する。0に等しいtile_group_deblocking_filter_flagは、デブロッキングフィルタの動作が現在タイルグループのために適用されないことを指定する。
[0129]第4の技法によれば、ビデオデコーダ(たとえば、ビデオデコーダ300)は、どのTMVP導出方法(たとえば、上記で説明された第1、第2、または第3の技法のうちのどれ)が使用されるべきであるかを導出し得る。いくつかの例では、ビデオデコーダは、現在スライスに好適なTMVP方法について選択するための導出プロセスと、ビットストリームのパースプロセスとを採用することができる。そのような導出プロセスの非限定的な例が、以下で提供される。
[0130]どのTMVP導出方法が使用されるかを導出するための第1の例示的なプロセスとして、ビデオデコーダは、参照ピクチャリスト(REFP_0およびREFP_1)の各々におけるTMVPスケーリングのために、現在ピクチャptrとターゲットピクチャとの間のPOC距離を算出し得る。
[0131]どのTMVP導出方法が使用されるかを導出するための第2の例示的なプロセスとして、ビデオデコーダは、MVスケーリングのための両方のターゲットピクチャが同じ予測方向にあるかどうか(たとえば、各ターゲットピクチャのPOCが現在ピクチャのPOCよりも小さいかどうか)を識別し得る。
[0132]代替的に、いくつかの例では、ビデオデコーダは、MVスケーリングのための両方のターゲットピクチャが同じ予測方向にあるかどうか(たとえば、各ターゲットピクチャのPOCが現在ピクチャのPOCよりも小さいのか、両方のPOCが現在ピクチャのPOCそのときより大きいのか)を検査し得る。
[0133]一例では、本開示の技法は、以下のように実装され得る。
[0134]temporal_mvp_asigned_flagは、時間動きベクトル予測子導出プロセスがビットストリームにおいてシグナリングされる追加のパラメータでコンフィギュアドされるべきかどうかを指定する。存在しないとき、temporal_mvp_asigned_flagの値は0に等しいと推論される。
[0135]col_pic_list_idxは、時間動きベクトル予測の目的で、コロケートされたピクチャの導出のための参照ピクチャリストを指定する。col_pic_list_idxが存在せず、slice_typeがPに等しいとき、col_pic_list_idxは、0に等しいと推論される。col_pic_list_idxが存在せず、slice_typeがBに等しいとき、col_pic_list_idxは、1に等しいと推論される。
[0136]col_pic_ref_idxは、時間動きベクトル予測のために使用されるコロケートされたピクチャの参照インデックスを指定する。collocated_ref_idxはRefPicList[col_pic_list_idx]におけるピクチャを参照し、collocated_ref_idxの値は、両端値を含む、0~num_ref_idx_active_minus1[col_pic_list_idx]の範囲内にあるものとする。col_pic_ref_idxが存在しないとき、col_pic_ref_idxは、0に等しいと推論される。
[0137]col_source_mvp_list_idxは、時間動きベクトル予測の目的で、動きベクトル候補の導出のための参照ピクチャリストを指定する。col_source_mvp_list_idxが存在しないとき、col_source_mvp_list_idxは、0に等しいと推論される。
[0138]後方予測フラグおよびコロケートされたピクチャがない場合の復号プロセス
[0139]このプロセスは、各PまたはBスライス(またはタイルグループ)のための復号プロセスの始まりにおいて、スライス(またはタイルグループ)ヘッダの復号ならびに節8.3.3において指定されている参照ピクチャセットのための復号プロセスの呼出し、および節8.3.2において指定されているスライス(またはタイルグループ)のための参照ピクチャリスト構築のための復号プロセスの呼出しの後に、ただし、任意のコーディングユニットの復号より前に、呼び出される。変数ColPicは、RefPicList[col_pic_list_idx][col_pic_ref_idx]に等しく設定される。
[0140]コロケートされた動きベクトルのための導出プロセス
このプロセスへの入力は、以下の通りである。
- 現在コーディングブロックを指定する変数currCb、
- ColPicによって指定されるコロケートされたピクチャ内のコロケートされたコーディングブロックを指定する変数colCb、
- colPicによって指定されるコロケートされたピクチャの左上ルーマサンプルに対してcolCbによって指定されるコロケートされたルーマコーディングブロックの左上サンプルを指定するルーマロケーション(xColCb,yColCb)、
- Xが0または1である、参照インデックスrefIdxLX、
このプロセスの出力は、以下の通りである。
- Xをもつ1/16の分数サンプル精度における動きベクトル予測mvLXColが、0または1に等しい。
- 利用可能性フラグavailableFlagCol(リスト0および1について共同)。
[0141]変数currPicは現在ピクチャを指定する。
[0142]アレイpredFlagL0Col[x][y]、mvL0Col[x][y]およびrefIdxL0Col[x][y]は、ColPicによって指定されたコロケートされたピクチャの、それぞれ、PredFlagL0[x][y]、MvL0[x][y]およびRefIdxL0[x][y]に等しく設定され、アレイpredFlagL1Col[x][y]、mvL1Col[x][y]およびrefIdxL1Col[x][y]は、ColPicによって指定されたコロケートされたピクチャの、それぞれ、PredFlagL1[x][y]、MvL1[x][y]およびRefIdxL1[x][y]に等しく設定される。
[0143]変数mvLXColおよびavailableFlagLXColは、Xが0または1に等しい場合、以下のように導出される。
colCbがイントラ予測モードでコーディングされる場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
他の場合、動きベクトルmvCol、参照インデックスrefIdxColおよび参照リスト識別子listColは以下のように導出される。
- temporal_mvp_asigned_flagが0に等しい場合、以下が適用される。
- predFlagL0Col[x][y]が0に等しく、predFlagL1Col[x][y]が1に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]に等しく設定され、およびXをもつLXが1に等しい。
- predFlagL0Col[x][y]が1に等しく、predFlagL1Col[x][y]が0に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]に等しく設定され、およびXをもつLXが0に等しい。
- 他の場合(predFlagL0Col[x][y]が1に等しく、predFlagL1Col[x][y]が1に等しい場合)、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]およびLXに等しく設定される。
- temporal_mvp_asigned_flagが1に等しい場合、以下が適用される。
- Xがcollocated_mvp_source_list_idxに等しいpredFlagLXCol[x][y]が1に等しい場合、mvCol、refIdxColおよびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]に等しく設定され、および、XをもつLXがcol_source_mvp_list_idxに等しい。
[0144]mvLXColおよびavailableFlagLXColは以下のように導出される。
[0145]変数refPicListCol[refIdxCol]は、ColPicによって指定されたコロケートされたピクチャ中の予測ブロックcolPbを含んでいるスライスの参照ピクチャリストlistCol中に参照インデックスrefIdxColをもつピクチャになるように設定され、以下が適用される。
- 現在ピクチャと、refIdxLXをもつ現在ピクチャの参照ピクチャリストRefPicListX[refIdxLX]との間の(currPocDiffXとして示される)POC距離が0に等しく、以下のように算出される。
- コロケートされたピクチャColPicと、コロケートされたピクチャのリストX参照ピクチャrefPicListCol[refIdxLXCol]との間の(colPocDiffLXとして示される)POC距離は、以下のように算出される。
- 有効なrefIdxColおよびcolPocDiffLXが0に等しくない場合、変数availableFlagLXColが1に等しく設定され、mvLXColが、動きベクトルmvColLXのスケーリングされたバージョンとして以下のように導出される。
- 他の場合(無効なrefIdxColまたはcolPocDiffLXが0に等しい)、変数availableFlagLXColは0に等しく設定され、
であり、Xは0または1であり、それぞれ、参照リスト0および参照リスト1を指定する。
[0146]コロケートされた動きベクトルmvLXColのための変数についてのピクチャ境界ベースのクリッピングプロセスが、節8.5.2.21において指定されているように、入力パラメータとして、mvLXCol、(xCb、yCb)、pic_width_in_luma_samplesおよびpic_height_in_luma_samplesを用いて呼び出される。
[0147]availableFlagColが、以下のように導出される。
- Xが0であるおよび1である場合のavailableFlagLXColが両方とも有効である場合、availableFlagColは3に設定され、
- そうではなく、Xが0に等しい場合のavailableFlagLXColが有効であり、Xが1である場合のavailableFlagLXColが無効である場合、availableFlagColは1に設定され、
- そうではなく、Xが1に等しい場合のavailableFlagLXColが有効であり、Xが0である場合のavailableFlagLXColが無効である場合、availableFlagColは2に設定され、
- 他の場合、availableFlagColは0に設定される。
[0148]タイルグループへの参照はVVCドラフト4への参照であると見なされ得るが、スライスへの参照はVVCドラフト5への参照と見なされ得ることに留意されたい。したがって、タイルグループヘッダ中に含まれるものは、いくつかの例では、スライスヘッダまたは任意の同様の区分のヘッダ中に含まれ得る。
[0149]本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、ビデオデータの現在ピクチャの現在ブロックのために、時間動きベクトル予測(TMVP)候補を導出することと、現在ブロックのために、動きベクトル候補のリストを生成することと、リストが、導出されたTMVP候補を含む、動きベクトル候補のリストに基づいて、現在ブロックを予測することとを行い得る。
[0150]図8Aおよび図8Bは、例示的なクワッドツリーバイナリツリー(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線はクワッドツリースプリッティングを表し、点線はバイナリツリースプリッティングを示す。バイナリツリーの各スプリット(すなわち、非リーフ)ノードでは、どのスプリッティングタイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平スプリッティングを示し、1は垂直スプリッティングを示す。クワッドツリースプリッティングでは、クワッドツリーノードが、ブロックを、等しいサイズをもつ4つのサブブロックに水平および垂直にスプリットするので、スプリッティングタイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(スプリッティング情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(スプリッティング情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0151]概して、図8BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル中のCTU132のサイズを表す)CTUサイズと、最小クワッドツリーサイズ(最小許容クワッドツリーリーフノードサイズを表すMinQTSize)と、最大バイナリツリーサイズ(最大許容バイナリツリールートノードサイズを表すMaxBTSize)と、最大バイナリツリー深度(最大許容バイナリツリー深度を表すMaxBTDepth)と、最小バイナリツリーサイズ(最小許容バイナリツリーリーフノードサイズを表すMinBTSize)とを含み得る。
[0152]CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、それらの各々は、クワッドツリー区分に従って区分され得る。すなわち、第1のレベルのノードは、(子ノードを有しない)リーフノードであるか、または4つの子ノードを有するかのいずれかである。QTBT構造130の例は、分岐のために実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードが最大許容バイナリツリールートノードサイズ(MaxBTSize)よりも大きくない場合、ノードは、それぞれのバイナリツリーによってさらに区分され得る。1つのノードのバイナリツリースプリッティングは、スプリットから生じるノードが最小許容バイナリツリーリーフノードサイズ(MinBTSize)または最大許容バイナリツリー深度(MaxBTDepth)に達するまで反復され得る。QTBT構造130の例は、分岐のために破線を有するようなノードを表す。バイナリツリーリーフノードはコーディングユニット(CU)と呼ばれ、CUは、さらなる区分なしに予測(たとえば、ピクチャ内またはピクチャ間予測)および変換のために使用される。上記で説明されたように、CUは「ビデオブロック」または「ブロック」と呼ばれることもある。
[0153]QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、(幅と高さの両方について)MinBTSizeは4として設定され、MaxBTDepthは4として設定される。クワッドツリー区分は、クワッドツリーリーフノードを生成するために、最初にCTUに適用される。クワッドツリーリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。リーフクワッドツリーノードが128×128である場合、サイズがMaxBTSize(すなわち、この例では64×64)を超えるので、それはバイナリツリーによってさらにスプリットされない。他の場合、リーフクワッドツリーノードは、バイナリツリーによってさらに区分される。したがって、クワッドツリーリーフノードはまた、バイナリツリーのためのルートノードであり、0としてのバイナリツリー深度を有する。バイナリツリー深度がMaxBTDepth(この例では4)に達したとき、さらなるスプリッティングは許可されない。バイナリツリーノードがMinBTSize(この例では4)に等しい幅を有するとき、それは、さらなる水平スプリッティングが許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有するバイナリツリーノードは、さらなる垂直スプリッティングがそのバイナリツリーノードのために許可されないことを暗示する。上述のように、バイナリツリーのリーフノードは、CUと呼ばれ、さらなる区分なしに予測および変換に従ってさらに処理される。
[0154]図9は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図9は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示では、HEVCビデオコーディング規格ならびに開発中のEVCおよびVVCビデオコーディング規格などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、概して、ビデオ符号化および復号に適用可能である。
[0155]図9の例では、ビデオエンコーダ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は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0156]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0157]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのためのビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的なストレージを提供し得る。
[0158]図9の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0159]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し、実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0160]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204とモード選択ユニット202とに提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0161]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0162]モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せについての得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
[0163]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、概して「ビデオブロック」または「ブロック」と呼ばれることもある。
[0164]概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUとTUとの重複する部分)のための予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前にコーディングされたピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0165]動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが部分サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックについての値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてデータを取り出し、たとえば、サンプルごとの平均化または加重平均化を通して、取り出されたデータを組み合わせ得る。
[0166]別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、概して、予測ブロックを作り出すために、隣接サンプルの値を数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートし得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0167]モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の、符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
[0168]モード選択ユニット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サイズの非対称区分をサポートし得る。
[0169]モード選択ユニットがCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0170]いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックのための予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成しないことがあり、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0171]上記で説明されたように、残差生成ユニット204は、現在ブロックのためのビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在ブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0172]変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換などの1次変換および2次変換を実施し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0173]量子化ユニット208は、量子化された変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって作り出された元の変換係数よりも低い精度を有し得る。
[0174]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度のひずみを伴うが)現在ブロックに対応する再構築されたブロックを作り出し得る。たとえば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
[0175]フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
[0176]ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築されたブロックを使用し得る。
[0177]概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0178]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
[0179]上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0180]いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであり得る。
[0181]上記で説明されたように、ビデオエンコーダ200またはビデオデコーダ300などのビデオコーダは動きベクトル候補リストを生成し得、いくつかの例では、リスト中の少なくとも1つの候補が時間動きベクトル予測子(TMVP)候補である。いくつかの例では、ビデオコーダは、ビデオコーダが、コロケートされたピクチャ中のコロケートされたPUからTMVP候補を導出するように、推論されたパラメータを使用してTMVP候補を決定し得る。たとえば、推論されたパラメータを使用してTMVP候補を決定するために、ビデオコーダは、図3Aおよび図3Bを参照しながら上記で説明された技法に従って、TMVP候補を決定し得る。しかしながら、いくつかの例では、推論されたパラメータを使用して導出されたTMVP候補は、最良のTMVP候補でないことがある。たとえば、他のピクチャからの他の動きベクトルが、現在ブロックのサンプルによりぴったり一致するサンプルをもつ参照ブロックを識別し得る。現在ブロックのサンプルによりぴったり一致するサンプルをもつ参照ブロックを有することは、残差データのサイズを低減することによってコーディング効率を改善し得る。
[0182]本開示の1つまたは複数の技法によれば、TMVP候補の導出は、よりフレキシブルに行われ得る。たとえば、TMVP候補導出を制御するパラメータ(TMVPパラメータ)を推論することとは対照的に、ビデオコーダは、TMVP候補導出を制御するパラメータを明示的にシグナリングし得る。シグナリングされ得るいくつかの例示的なパラメータは、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリストと、コロケートされたピクチャの参照インデックスと、TMVP候補の導出のための動きベクトル候補の導出のための参照ピクチャリストとを含む。パラメータを明示的にシグナリングすることによって、ビデオエンコーダは、現在ブロックのサンプルによりぴったり一致するサンプルをもつ参照ブロックを識別するTMVP候補を選択することが可能であり得る。たとえば、ビデオコーダは、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリスト、または推論されたパラメータとともに使用されることになる参照ピクチャリストとは異なる任意の他のパラメータを選択し得る。残差データサイズにおける得られた低減は、TMVPパラメータをシグナリングするために使用されるより多くのそのデータであり得る。このようにして、本開示の技法は、(たとえば、ビデオデータを符号化するために使用されるデータの量を低減することによって)コーディング効率を改善し得る。
[0183]いくつかの例では、ビデオエンコーダ200は、各々がTMVP候補導出プロセスの1つまたは複数のパラメータを指定する複数のシンタックス要素をシグナリングすることによって、パラメータをシグナリングし得る。たとえば、モード選択ユニット202は、エントロピー符号化ユニット220に、コード化ビデオビットストリームにおいて複数のシンタックス要素を符号化させ得る。TMVP候補導出プロセスの1つまたは複数のパラメータを指定する複数のシンタックス要素は、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリストを指定するシンタックス要素(col_pic_list_idx)、コロケートされたピクチャの参照インデックスを指定するシンタックス要素(col_pic_ref_idx)、および/またはTMVP候補の導出のための動きベクトル候補の導出のための参照ピクチャリストを指定するシンタックス要素(col_source_mvp_list_idx)のうちの1つまたは複数を含み得る。
[0184]いくつかの例では、ビデオエンコーダ200は、TMVPパラメータを選択的にシグナリング(たとえば、各々がTMVP候補導出プロセスの1つまたは複数のパラメータを指定する複数のシンタックス要素を選択的にシグナリング)し得る。たとえば、常にTMVPパラメータを推論すること、または常にTMVPパラメータを明示的にシグナリングすることとは対照的に、ビデオコーダは、TMVPパラメータが明示的にシグナリングされるか否かを示すシンタックス要素(たとえば、temporal_mvp_asigned_flag)をシグナリングし得る。シンタックス要素が、TMVPパラメータが明示的にシグナリングされることを示す場合、ビデオコーダは、TMVPパラメータを指定する複数のシンタックス要素をコーディングし得る。他の場合(たとえば、シンタックス要素が、TMVPパラメータが明示的にシグナリングされることを示さない場合)、ビデオコーダはTMVPパラメータを推論(たとえば、明示的シグナリングなしにTMVPパラメータを決定)し得る。いくつかの例では、ビデオエンコーダ200のモード選択ユニット202は、TMVPパラメータを明示的にシグナリングするためのデータの量が、推論されたTMVPパラメータに基づいて導出されたTMVP候補以外のTMVP候補を使用することによって節約されるデータの量よりも大きいことになる場合、TMVPパラメータを推論すること、およびデコーダにTMVPパラメータを推論させることを選択し得る。このようにして、本開示の技法は、(たとえば、ビデオデータを符号化するために使用されるデータの量を低減することによって)コーディング効率を改善し得る。
[0185]以下のシンタックスおよびセマンティクスは、ビデオエンコーダ200が、コード化ビデオビットストリームにおいて複数のシンタックス要素をどのようにシグナリングし得るかの一例である。以下の例では、複数のシンタックス要素は、タイルグループヘッダシンタックスにおいてシグナリングされる。しかしながら、他の例では、複数のシンタックス要素は、スライスヘッダ、ピクチャヘッダ、コーディングユニット、または任意の他のシンタックス構造など、他のシンタックス構造においてシグナリングされ得る。
[0186]temporal_mvp_asigned_flagは、時間動きベクトル予測子導出プロセスがビットストリームにおいてシグナリングされる追加のパラメータでコンフィギュアドされるべきかどうかを指定する。存在しないとき、temporal_mvp_asigned_flagの値は0に等しいと推論される。
[0187]col_pic_list_idxは、時間動きベクトル予測の目的で、コロケートされたピクチャの導出のための参照ピクチャリストを指定する。col_pic_list_idxが存在せず、slice_typeがPに等しいとき、col_pic_list_idxは、0に等しいと推論される。col_pic_list_idxが存在せず、slice_typeがBに等しいとき、col_pic_list_idxは、1に等しいと推論される。
[0188]col_pic_ref_idxは、時間動きベクトル予測のために使用されるコロケートされたピクチャの参照インデックスを指定する。collocated_ref_idxはRefPicList[col_pic_list_idx]におけるピクチャを参照し、collocated_ref_idxの値は、両端値を含む、0~num_ref_idx_active_minus1[col_pic_list_idx]の範囲内にあるものとする。col_pic_ref_idxが存在しないとき、col_pic_ref_idxは、0に等しいと推論される。
[0189]col_source_mvp_list_idxは、時間動きベクトル予測の目的で、動きベクトル候補の導出のための参照ピクチャリストを指定する。col_source_mvp_list_idxが存在しないとき、col_source_mvp_list_idxは、0に等しいと推論される。
[0190]ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表し、1つまたは複数の処理ユニットは、コード化ビデオビットストリームを介して、コード化ビデオビットストリームが、時間動きベクトル予測(TMVP)候補導出プロセスのパラメータを指定する複数のシンタックス要素を含むかどうかを指定するシンタックス要素を符号化することと、シンタックス要素が、コード化ビデオビットストリームが複数のシンタックス要素を含むことを指定する場合、コード化ビデオビットストリームを介して複数のシンタックス要素を符号化することと、ビデオデコーダによって、および複数のシンタックス要素によって指定されたパラメータに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのTMVP候補を導出することと、現在ブロックのために、動きベクトル候補のリストを生成することと、リストが、導出されたTMVP候補を含む、動きベクトル候補のリストに基づいて、現在ブロックを予測することとを行うように構成される。
[0191]図10は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。図10は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、EVC、JEM、VVC、およびHEVCの技法に従って、ビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実施され得る。
[0192]図10の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0193]予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0194]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の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0195]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320とともに上記で説明されたようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0196]図10に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図9と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0197]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0198]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0199]概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
[0200]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
[0201]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
[0202]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図9)に関して説明されたものと実質的に同様である様式で、インター予測プロセスを実施し得る。
[0203]別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図9)に関して説明されたものと実質的に同様である様式で、イントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
[0204]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0205]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、必ずしもすべての例において実施されるとは限らない。
[0206]ビデオデコーダ300は、再構築されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、イントラ予測のための現在ピクチャのサンプル、および後続の動き補償のための以前に復号されたピクチャなど、参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号されたピクチャを、図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、出力し得る。
[0207]本開示の1つまたは複数の技法によれば、ビデオデコーダ300は、ビデオエンコーダ200として、TMVP候補を導出するための相互プロセスを実施し得る。たとえば、エントロピー復号ユニット302は、コード化ビデオビットストリームから、各々がTMVP候補導出プロセスの1つまたは複数のパラメータを指定する複数のシンタックス要素を復号し得る。たとえば、エントロピー復号ユニット302は、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリストを指定するシンタックス要素(col_pic_list_idx)、コロケートされたピクチャの参照インデックスを指定するシンタックス要素(col_pic_ref_idx)、および/またはTMVP候補の導出のための動きベクトル候補の導出のための参照ピクチャリストを指定するシンタックス要素(col_source_mvp_list_idx)のうちの1つまたは複数のための値を復号し、それらの値を予測処理ユニット304に提供し得る。
[0208]予測処理ユニット304は、複数のシンタックス要素によって指定されたパラメータの値に基づいて、ビデオデータの現在ピクチャの現在ブロックのためのTMVP候補を導出し得る。予測処理ユニット304は、導出されたTMVP候補を動きベクトル候補のリストに挿入し、動きベクトル候補のリスト基づいて、ビデオデータの現在ブロックを予測し得る。
[0209]ビデオエンコーダ200と同様に、ビデオデコーダ300は、明示的にシグナリングされたパラメータに基づいてTMVP候補を選択的に導出するか、または推論されたパラメータに基づいてTMVP候補を導出し得る。たとえば、制御シンタックス要素(たとえば、temporal_mvp_asigned_flag)の値に応じて、ビデオデコーダ300は、複数のシンタックス要素を復号し、複数のシンタックス要素によって指定された明示的にシグナリングされたパラメータに基づいて、TMVP候補を導出するか、または複数のシンタックス要素を復号せず、推論された(すなわち、明示的にシグナリングされない)パラメータに基づいて、TMVP候補を導出するかのいずれかであり得る。
[0210]このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装された1つまたは複数の処理ユニットとを含むビデオ復号デバイスの一例を表し、1つまたは複数の処理ユニットは、コード化ビデオビットストリームを介して、コード化ビデオビットストリームが、時間動きベクトル予測(TMVP)候補導出プロセスのパラメータを指定する複数のシンタックス要素を含むかどうかを指定するシンタックス要素を復号することと、シンタックス要素が、コード化ビデオビットストリームが複数のシンタックス要素を含むことを指定する場合、コード化ビデオビットストリームを介して複数のシンタックス要素を復号することと、複数のシンタックス要素によって指定されたパラメータに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのTMVP候補を導出することと、現在ブロックのために、動きベクトル候補のリストを生成することと、リストが、導出されたTMVP候補を含む、動きベクトル候補のリストに基づいて、現在ブロックを予測することとを行うように構成される。
[0211]図11は、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオエンコーダ200(図1および図9)に関して説明されるが、他のデバイスが図11の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0212]この例では、ビデオエンコーダ200は、最初に、現在ブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在ブロックのための予測ブロックを形成し得る。ビデオエンコーダ200は、次いで、現在ブロックのための残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと、現在ブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックの係数を変換し、量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査中に、または走査に続いて、ビデオエンコーダ200は係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。ビデオエンコーダ200は、次いで、ブロックのエントロピーコーディングされたデータを出力し得る(360)。
[0213]図12は、ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオデコーダ300(図1および図10)に関して説明されるが、他のデバイスが図12の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0214]ビデオデコーダ300は、エントロピーコーディングされた予測情報、および現在ブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータなど、現在ブロックについてのエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、現在ブロックのための予測情報を決定し残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在ブロックのための予測ブロックを計算するために、たとえば、現在ブロックのための予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在ブロックを予測し得る(374)。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、残差ブロックを作り出すために、係数を逆量子化し、逆変換し得る(378)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在ブロックを復号し得る(380)。
[0215]図13は、本開示の1つまたは複数の技法による、時間動きベクトル予測子(TMVP)候補を導出するための例示的な方法を示すフローチャートである。ビデオデコーダ300(図10)に関して説明されるが、ビデオエンコーダ200など、他のデバイスが、(たとえば、再構築ループの一部として)図13の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0216]ビデオデコーダ300は、コード化ビデオビットストリームを介して、コード化ビデオビットストリームが、時間動きベクトル予測(TMVP)候補導出プロセスのパラメータを指定する複数のシンタックス要素を含むかどうかを指定するシンタックス要素を復号し得る(1302)。たとえば、ビデオデコーダ300のエントロピー復号ユニット302は、コード化ビデオビットストリームのスライスヘッダシンタックス構造からのtemporal_mvp_asigned_flagを復号し得る。
[0217]ビデオデコーダ300は、推論されたパラメータに基づいて、または複数のシンタックス要素によって指定されたパラメータに基づいて、ビデオデータの現在ブロック(たとえば、現在CU)のためのTMVP候補を選択的に導出し得る。たとえば、シンタックス要素が、コード化ビデオビットストリームが複数のシンタックス要素を含むことを指定しない(たとえば、temporal_mvp_asigned_flagが0の値を有する)場合(1304の「NO」分岐)、ビデオデコーダ300は、推論されたパラメータに基づいて、ビデオデータの現在ブロックのためのTMVP候補を導出し得る(1306)。たとえば、予測処理ユニット304は、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリストと、コロケートされたピクチャの参照インデックスと、TMVP候補の導出のための動きベクトル候補の導出のための参照ピクチャリストとのうちの少なくとも1つを推論し得る。1つの具体的な例として、推論されたパラメータに基づいてTMVP候補を導出するために、予測処理ユニット304は、図3Aおよび3Bを参照しながら上記で説明された技法を利用し得る。このようにして、予測処理ユニット304は、TMVP候補導出プロセスのパラメータを推論し、ビデオコーダによって、および推論されたパラメータに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのTMVP候補を導出し得る。
[0218]代替的に、シンタックス要素が、コード化ビデオビットストリームが複数のシンタックス要素を含むことを指定する(たとえば、temporal_mvp_asigned_flagが1の値を有する)場合(1304の「YES」分岐)、ビデオデコーダ300は、コード化ビデオビットストリームを介して複数のシンタックス要素を復号し得る(1308)。たとえば、エントロピー復号ユニット302は、TMVP候補の導出のためのコロケートされたピクチャの導出のための参照ピクチャリストを指定するシンタックス要素(たとえば、col_pic_list_idx)、コロケートされたピクチャの参照インデックスを指定するシンタックス要素(たとえば、col_pic_ref_idx)、およびTMVP候補の導出のための動きベクトル候補の導出のための参照ピクチャリストを指定するシンタックス要素(たとえば、col_source_mvp_list_idx)のうちの1つまたは複数を含む複数のシンタックス要素を復号し得る。いくつかの例では、エントロピー復号ユニット302は、スライスヘッダシンタックス構造からの複数のシンタックス要素を復号し得る。
[0219]ビデオデコーダ300は、複数のシンタックス要素によって指定されたパラメータに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのTMVP候補を導出し得る(1310)。たとえば、予測処理ユニット304は、指定された参照インデックスを有し、指定されたソース参照ピクチャリストを有するTMVP候補の導出のためのコロケートされたピクチャの導出のための指定された参照ピクチャリスト中のピクチャから動きベクトルを取得し得る。
[0220]暗黙的導出が使用されるのか、明示的導出が使用されるのかにかかわらず、ビデオデコーダ300は、現在ブロックのために、動きベクトル候補のリストを生成し得、リストは、導出されたTMVP候補を含む(1312)。たとえば、予測処理ユニット304は、TMVP候補および1つまたは複数の空間候補、HMVP候補、ペアワイズ候補、および0候補を含むように、動きベクトル候補リストを生成し得る。
[0221]ビデオデコーダ300は、動きベクトル候補のリストに基づいて、現在ブロックを予測し得る(1314)。たとえば、エントロピー復号ユニット302は、動きベクトル候補のリスト中のどのエントリが使用されるべきであるかを指定するシンタックス要素を復号し得る。予測処理ユニット304は、予測ブロックと呼ばれる、シンタックス要素によって指定された動きベクトル候補によって識別されたビデオデータのブロックから、サンプルを取得し得る。予測処理ユニット304は、図12を参照しながら上記で説明されたように、予測ブロックからのサンプルを残差データと組み合わせ得る。
[0222]以下の例は、本開示の1つまたは複数の態様を示し得る。
[0223]例1. ビデオデータをコーディングする方法であって、方法は、ビデオデコーダによって、およびビデオデータの現在ピクチャの現在ブロックのために、時間動きベクトル予測(TMVP)候補を導出することと、現在ブロックのために、動きベクトル候補のリストを生成することと、リストが、導出されたTMVP候補を含む、動きベクトル候補のリストに基づいて、現在ブロックを予測することとを備える、方法。
[0224]例2. TMVP候補を導出することは、現在ピクチャのコロケートされたブロックの動きベクトルを取得することと、コロケートされたブロックが、現在ピクチャのコロケートされた参照ピクチャに位置する、コロケートされたブロックの取得された動きベクトルのスケーリングされたバージョンとして、TMVP候補を導出することとを備える、例1に記載の方法。
[0225]例3. コロケートされたブロックの取得された動きベクトルのスケーリングされたバージョンとして、TMVP候補を導出することが、現在ピクチャとコロケートされた参照ピクチャとの間のピクチャ順序カウント(POC)差分に基づいて、スケーリングファクタを決定することと、スケーリングファクタに基づいて、TMVP候補を取得するためにコロケートされたブロックの取得された動きベクトルをスケーリングすることとを備える、例2に記載の方法。
[0226]例4. スケーリングファクタが第1のスケーリングファクタであり、方法が、コロケートされた参照ピクチャとコロケートされた参照ピクチャの参照ピクチャとの間のPOC差分に基づいて、第2のスケーリングファクタを決定することをさらに備え、TMVP候補を取得するためにコロケートされたブロックの取得された動きベクトルをスケーリングすることが、第1のスケーリングファクタおよび第2のスケーリングファクタに基づいて、TMVP候補を取得するためにコロケートされたブロックの取得された動きベクトルをスケーリングすることを備える、例3に記載の方法。
[0227]例5. コード化ビデオビットストリームを介して、TMVP候補導出プロセスのパラメータを指定する1つまたは複数のシンタックス要素をコーディングすることをさらに備える、例1~4のいずれかに記載の方法。
[0228]例6. 1つまたは複数のシンタックス要素が、temporal_mvp_asigned_flagシンタックス要素、col_pic_list_idxシンタックス要素、col_pic_ref_idxシンタックス要素、および/またはcol_source_mvp_list_idxシンタックス要素のうちの1つまたは複数を含む、例5に記載の方法。
[0229]例7. ビデオコーダがビデオデコーダを備え、方法が、ビデオデコーダによって、TMVP候補導出プロセスのパラメータを導出することをさらに備える、例1~4のいずれかに記載の方法。
[0230]例8. コーディングすることが復号することを備える、例1~7のいずれかに記載の方法。
[0231]例9. コーディングすることが符号化することを備える、例1~8のいずれかに記載の方法。
[0232]例10. ビデオデータをコーディングするためのデバイスであって、デバイスが、例1~9のいずれかに記載の方法を実施するための1つまたは複数の手段を備える、デバイス。
[0233]例11. 1つまたは複数の手段が、回路中に実装された1つまたは複数のプロセッサを備える、例10に記載のデバイス。
[0234]例12. ビデオデータを記憶するためのメモリをさらに備える、例10および11のいずれかに記載のデバイス。
[0235]例13. 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例10~12のいずれかに記載のデバイス。
[0236]例14. デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例10~13のいずれかに記載のデバイス。
[0237]例15. デバイスがビデオデコーダを備える、例10~14のいずれかに記載のデバイス。
[0238]例16. デバイスがビデオエンコーダを備える、例10~15のいずれかに記載のデバイス。
[0239]例17. 実行されたとき、1つまたは複数のプロセッサに、例1~9のいずれかに記載の方法を実施させる命令を記憶したコンピュータ可読記憶媒体。
[0240]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0241]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0242]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0243]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
[0244]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0245]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。