図3は、通信システム(300)の例示的なブロック図を示している。通信システム(300)は、例えばネットワーク(350)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。図3の例において、端末デバイス(310)および(320)の第1のペアは、データの単方向送信を実施する。例えば、端末デバイス(310)は、ネットワーク(350)を介して他方の端末デバイス(320)に送信するために、ビデオデータ(例えば、端末デバイス(310)によってキャプチャされたビデオピクチャのストリーム)をコーディングしてもよい。符号化されたビデオデータを、1つまたは複数のコーディングされたビデオビットストリームの形式で送信することができる。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示し得る。単方向データ送信は、メディアサービング用途などでは一般的であり得る。
他の例では、通信システム(300)は、例えばビデオ会議中のコーディングされたビデオデータの双方向送信を実施する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信の場合、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)のうちの他の端末デバイスに送信するためのビデオデータ(例えば、端末デバイスによってキャプチャされたビデオピクチャのストリーム)をコーディングすることができる。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信し、コーディングされたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってアクセス可能な表示デバイスにビデオピクチャを表示し得る。
図3の例において、端末デバイス(310)、(320)、(330)および(340)は、サーバ、パーソナルコンピュータおよびスマートフォンとしてそれぞれ例示されているが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤおよび/または専用ビデオ会議機器とともに適用される。ネットワーク(350)は、例えば有線(配線)および/または無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)および(340)間で、コーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回路交換チャネルおよび/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。本議論の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジーは、以下に本明細書で説明されない限り、本開示の動作にとって重要ではない場合がある。
図4は、開示の主題についての用途の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダを示している。開示の主題は、例えば、ビデオ会議、デジタルテレビ、ストリーミングサービス、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶などを含む他のビデオ対応用途に等しく適用可能であり得る。
ストリーミングシステムは、例えば非圧縮のビデオピクチャのストリーム(402)を作成する、例えばデジタルカメラなどのビデオソース(401)を含むことができるキャプチャサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮られたサンプルを含む。ビデオピクチャのストリーム(402)は、符号化されたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較したときの大きいデータ量を強調するために太線で示され、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理され得る。ビデオエンコーダ(403)は、以下で詳細に記載するように、開示された主題の態様を可能にする、または実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。符号化されたビデオデータ(404)(または符号化されたビデオビットストリーム)は、ビデオピクチャのストリーム(402)と比較したときの少ないデータ量を強調するために細線で示され、将来の使用のためにストリーミングサーバ(405)に記憶され得る。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、符号化されたビデオデータ(404)のコピー(407)および(409)を取り出すために、ストリーミングサーバ(405)にアクセスすることができる。クライアントサブシステム(406)は、例えば電子デバイス(430)内にビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、符号化されたビデオデータの入力コピー(407)を復号し、ディスプレイ(412)(例えば、表示スクリーン)または他のレンダリングデバイス(図示せず)上でレンダリングされ得るビデオピクチャの出力ストリーム(411)を作成する。一部のストリーミングシステムでは、符号化されたビデオデータ(404)、(407)および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従って符号化されることができる。それらの規格の例には、ITU-T勧告H.265が含まれる。一例では、開発中のビデオコーディング規格は、多用途ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVCのコンテキストで使用され得る。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)も、ビデオエンコーダ(図示せず)を含むことができる。
図5は、ビデオデコーダ(510)の例示的なブロック図を示している。ビデオデコーダ(510)は、電子デバイス(530)に含めることができる。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用されることが可能である。
受信機(531)は、ビデオデコーダ(510)によって復号されるべき1つまたは複数のコーディングされたビデオシーケンスを受信し得る。一実施形態では、一度に1つのコーディングされたビデオシーケンスが受信され、各コーディングされたビデオシーケンスの復号は、他のコーディングされたビデオシーケンスの復号から独立している。コーディングされたビデオシーケンスは、チャネル(501)から受信され、チャネル(501)は、符号化されたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであり得る。受信機(531)は、他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームとともに符号化されたビデオデータを受信し、そのデータは、それらそれぞれの使用エンティティ(図示せず)に転送され得る。受信機(531)は、コーディングされたビデオシーケンスをその他のデータから分離し得る。ネットワークジッタに対抗するために、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)との間にバッファメモリ(515)が結合され得る。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の外部にあり得る(図示せず)。さらに他の用途では、例えば、ネットワークジッタに対抗するために、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在し、加えて、例えば、プレイアウトタイミングを処理するために、ビデオデコーダ(510)の内部に他のバッファメモリ(515)が存在してもよい。受信機(531)が十分な帯域幅および可制御性の記憶/転送デバイスから、またはアイソシンクロナスネットワークから、データを受信しているとき、バッファメモリ(515)は、不要な場合がある、または小さくしてもよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされてもよく、比較的大きくてもよく、有利には適応サイズであってもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構築するためにパーサ(520)を含み得る。これらのシンボルのカテゴリは、図5に示されるように、ビデオデコーダ(510)の動作を管理するために使用される情報と、電子デバイス(530)の不可欠な部分ではないが、電子デバイス(530)に結合され得るレンダデバイス(512)(例えば、表示スクリーン)などのレンダリングデバイスを潜在的に制御するための情報とを含む。(1つまたは複数の)レンダリングデバイスのための制御情報は、補足エンハンスメント情報(SEI)メッセージ、またはビデオユーザビリティ情報(VUI)のパラメータセットフラグメント(図示せず)の形式であり得る。パーサ(520)は、受信されたコーディングされたビデオシーケンスを解析/エントロピー復号し得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従うことができ、コンテキスト依存性ありまたはなしの可変長コーディング、ハフマンコーディング、算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つに関するサブグループパラメータのセットを抽出し得る。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトルなどの情報を抽出し得る。
パーサ(520)はバッファメモリ(515)から受けたビデオシーケンスにエントロピー復号/構文解析動作を実行することでシンボル(521)を生成してもよい。
シンボル(521)の再構築は、コーディングされたビデオピクチャまたはその部分のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なるユニットを関与させることができる。どのユニットがどのように関与するかは、パーサ(520)が、コーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、分かりやすくするために描写されていない。
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下で説明するように、一部の機能ユニットに概念的に再分割することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかしながら、開示される主題を説明する目的のために、以下の機能ユニットへの概念的な再分割が適切である。
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化ファクタ、量子化スケーリング行列などを含む制御情報を、パーサ(520)から(1つまたは複数の)シンボル(521)として受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力され得るサンプル値を備えるブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングされたブロックに関係することができる。イントラコーディングされたブロックは、以前に再構築されたピクチャからの予測情報を使用せず、現在のピクチャの以前に再構築された部分からの予測情報を使用することができるブロックである。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供されることができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲のすでに再構築された情報を使用して、再構築中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構築された現在のピクチャおよび/または完全に再構築された現在のピクチャをバッファする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供された出力サンプル情報に追加する。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、潜在的に動き補償されたブロックに関係することができる。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関係するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルを、出力サンプル情報を生成するために、アグリゲータ(555)によって、スケーラ/逆変換ユニット(551)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加することができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスを、例えば、X、Y、および参照ピクチャ成分を有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能な動きベクトルによって、制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされるサンプル値の補間、動きベクトル予測機構などを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術を受けることができる。コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に提供される、インループフィルタ技術を、ビデオ圧縮技術は含むことができる。ビデオ圧縮はまた、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(復号順で)前の部分の復号中に取得されたメタ情報に応答して行うこともでき、以前に再構築およびループフィルタリングされたサンプル値に応答して行うこともできる。
ループフィルタユニット(556)の出力は、レンダデバイス(512)に出力することができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することができるサンプルストリームであり得る。
特定のコーディングされたピクチャは、完全に再構築されると、将来の予測のための参照ピクチャとして使用され得る。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構築され、コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコーディングされたピクチャの再構築を開始する前に、新しい現在のピクチャバッファを再割り当てすることができる。
ビデオデコーダ(510)は、ITU-T勧告H.265などの所定のビデオ圧縮技術または規格に従って復号動作を実施し得る。コーディングされたビデオシーケンスが、ビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されているプロファイルとの両方を順守しているという意味で、コーディングされたビデオシーケンスは、使用されているビデオ圧縮技術または規格によって指定されている構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格において利用可能なすべてのツールの中から、特定のツールを、そのプロファイル下でそれらだけが利用可能なツールとして選択することができる。また、コンプライアンスのために必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、(例えば、毎秒メガサンプル単位で測定された)最大再構築サンプルレート、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様と、コーディングされたビデオシーケンス中でシグナリングされるHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、符号化されたビデオとともに追加の(冗長な)データを受信し得る。追加のデータは、コーディングされたビデオシーケンスの一部として含まれ得る。追加のデータは、ビデオデコーダ(510)によって、データを適切に復号するために、かつ/または元のビデオデータをより正確に再構築するために使用され得る。追加のデータは、例えば、時間、空間、または信号対雑音比(SNR)の拡張層、冗長スライス、冗長ピクチャ、順方向誤り訂正コードなどの形式であり得る。
図6は、ビデオエンコーダ(603)の例示的なブロック図を示している。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用されることが可能である。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべき(1つまたは複数の)ビデオ画像をキャプチャし得る(図6の例では電子デバイス(620)の一部ではない)ビデオソース(601)からビデオサンプルを受信し得る。他の例では、ビデオソース(601)は電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコーディングされるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)であり得、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)および適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタル・ビデオ・サンプル・ストリームの形式で提供し得る。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶するストレージデバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであり得る。ビデオデータは、順番に見たときに動きを伝える複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間配列として編成され得、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングし、圧縮し得る。適切なコーディング速度を実施することが、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。結合は、明確にするために図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、…)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成されることができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化された説明として、一例では、コーディングループは、(例えば、コーディングされるべき入力ピクチャと(1つまたは複数の)参照ピクチャとに基づいて、シンボルストリームなどのシンボルを作成することを担う)ソースコーダ(630)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダも作成することになるのと同様の方式で、シンボルを再構築してサンプルデータを作成する。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号は、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクトな結果をもたらすため、参照ピクチャメモリ(634)の内容も、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」ことになるのと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャ同期性のこの基本原理(および、例えばチャネルエラーのために同期性が維持され得ない場合に生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5と併せて上記で詳細にすでに説明されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルの符号化/復号は可逆であり得るので、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピー復号部分、およびパーサ(520)は、ローカルデコーダ(633)に完全に実装されない場合もある。
一実施形態では、デコーダに存在する構文解析/エントロピー復号を除くデコーダ技術が、対応するエンコーダに、同一または実質的に同一の機能的形態で存在する。したがって、開示された主題は、デコーダの動作に焦点を当てている。エンコーダ技術の説明は、包括的に記載されたデコーダ技術の逆であるため、省略することができる。特定の領域において、より詳細な説明が以下に提供される。
いくつかの例では、動作中、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする、動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択され得る(1つまたは複数の)参照ピクチャのピクセルブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータを復号し得る。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであってもよい。コーディングされたビデオデータが(図6には示されていない)ビデオデコーダで復号され得るとき、再構築されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実施され得る復号プロセスを複製し、再構築された参照ピクチャを参照ピクチャメモリ(634)に記憶させ得る。このようにして、ビデオエンコーダ(603)は、(送信エラーなしで)遠端ビデオデコーダによって取得されることになる再構築された参照ピクチャとして共通のコンテンツを有する再構築された参照ピクチャのコピーをローカルに記憶し得る。
予測子(635)は、コーディングエンジン(632)の予測探索を実施し得る。すなわち、コーディングされる新しいピクチャの場合、予測子(635)は、新しいピクチャのための適切な予測参照として役立つことができる、(候補参照ピクセルブロックとしての)サンプルデータまたは参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を探索し得る。予測子(635)は、適切な予測参照を見つけるために、ピクセルブロックごとにサンプルブロックに対して動作し得る。場合によっては、予測子(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有してもよい。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)内でエントロピーコーディングを受け得る。エントロピーコーダ(645)は、様々な機能ユニットによって生成されたシンボルを、ハフマンコーディング、可変長コーディング、算術コーディングなどといった技術に従ってシンボルに可逆圧縮を適用することによってコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成された(1つまたは複数の)コーディングされたビデオシーケンスをバッファリングして、通信チャネル(660)を介した送信の準備をしてもよく、通信チャネル(660)は、符号化されたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであってもよい。送信機(640)は、ビデオエンコーダ(603)からのコーディングされたビデオデータを、送信される他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(650)はビデオエンコーダ(603)の動作を管理してもよい。コーディング中、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当ててもよく、これは、それぞれのピクチャに適用され得るコーディング技術に影響を及ぼす場合がある。例えば、ピクチャは、以下のピクチャタイプのうちの1つとして割り当てられることが多い。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の任意の他のピクチャを使用することなくコーディングおよび復号され得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者は、Iピクチャのこれらの変形、ならびにそれらのそれぞれの用途および特徴を認識している。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよび復号され得るものであってもよい。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよび復号され得るものであってもよい。同様に、複数の予測ピクチャでは、1つのブロックの再構築のために、3つ以上の参照ピクチャと関連メタデータとを使用することができる。
ソースピクチャは、一般的には、複数のサンプルブロック(例えば、4×4、8×8、4×8、または16×16のサンプルそれぞれのブロック)に空間的に細分され、ブロックごとにコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されたコーディング割り当てによって決定される他の(すでにコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされ得るか、または、同じピクチャのすでにコーディングされたブロックを参照して予測的にコーディングされ得る(空間予測またはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的にコーディングされてもよい。Bピクチャのブロックは、空間予測を介して、または時間予測を介して、以前にコーディングされた1つまたは2つの参照ピクチャを参照して予測的にコーディングされ得る。
ビデオエンコーダ(603)は、ITU-T勧告H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実施し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間および空間の冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実施し得る。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格で指定された構文に準拠する場合がある。
一実施形態では、送信機(640)は、符号化されたビデオとともに追加のデータを送信し得る。ソースコーダ(630)は、そのようなデータをコーディングされたビデオシーケンスの一部として含み得る。追加のデータは、時間/空間/SNR拡張層、冗長ピクチャおよびスライスなどの他の形態の冗長データ、SEIメッセージ、VUIパラメータセット断片などを含み得る。
ビデオは、時系列の複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(しばしば、イントラ予測と省略される)は、所与のピクチャ内の空間相関を使用し、インターピクチャ予測は、ピクチャ間の(時間または他の)相関を使用する。一例では、現在のピクチャと呼ばれる、符号化/復号中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックが、ビデオ内で、以前にコーディングされ、未だバッファされている参照ピクチャ内の参照ブロックに類似しているとき、現在のピクチャ内のブロックを、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測に双予測技術が使用され得る。双予測技術によれば、第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用され、これらは両方ともビデオ内の現在のピクチャの復号順より前にある(しかし、表示順序は、それぞれ過去および未来のものであってもよい)。第1の参照ピクチャ内の第1の参照ブロックを指し示す第1の動きベクトルによって、および第2の参照ピクチャ内の第2の参照ブロックを指し示す第2の動きベクトルによって、現在のピクチャ内のブロックをコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測されることができる。
さらに、コーディング効率を改善するために、インターピクチャ予測にマージモード技術が使用されることができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測やイントラピクチャ予測などの予測は、ブロック単位で実施される。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、16×16ピクセルなどの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、それらは1つの輝度CTBおよび2つの彩度CTBである。各CTUを、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64ピクセルのCTUを、64×64ピクセルの1個のCUに、または32×32ピクセルの4個のCUに、または16×16ピクセルの16個のCUに、分割することができる。一例では、各CUが、インター予測タイプまたはイントラ予測タイプなど、CUの予測タイプを決定するために解析される。CUは、時間的予測可能性および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つの輝度予測ブロック(PB)、および2つの彩度PBを含む。一実施形態では、コーディング(符号化/復号)における予測動作は、予測ブロックの単位で実施される。予測ブロックの例として輝度予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、および16×8ピクセルなどのピクセルの値(例えば、輝度値)の行列を含む。
図7は、ビデオエンコーダ(703)の例示的な図を示している。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受け取り、処理ブロックを、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャに符号化するように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、例えば8×8サンプルの予測ブロックのような処理ブロックのためのサンプル値の行列を受信する。ビデオエンコーダ(703)は、処理ブロックが、例えば、レート歪み最適化を使用して、イントラモード、インターモード、または双予測モードを使用して最適にコーディングされるか否かを決定する。処理ブロックがイントラモードでコーディングされることになるとき、ビデオエンコーダ(703)は、イントラ予測技術を使用して、処理ブロックをコーディングされたピクチャに符号化し、処理ブロックがインターモードまたは双予測モードでコーディングされることになるとき、ビデオエンコーダ(703)は、インター予測技術または双予測技術をそれぞれ使用して、処理ブロックをコーディングされたピクチャに符号化し得る。特定のビデオコーディング技術では、マージモードは、予測子の外側のコーディングされた動きベクトル成分の助けを借りずに、動きベクトルが1つまたは複数の動きベクトル予測子から導出されるインターピクチャ予測サブモードとすることができる。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在してもよい。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示されるように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差計算器(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを参照ピクチャ(例えば、前のピクチャおよび後のピクチャ内のブロック)内の1つまたは複数の参照ブロックと比較し、インター予測情報(例えば、インター符号化技術、動きベクトル、マージモード情報による冗長情報の記述)を生成し、任意の適切な技術を使用してインター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、符号化されたビデオ情報に基づいて復号される復号された参照ピクチャである。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受け取り、場合によっては、ブロックを同じピクチャ内のすでにコーディングされたブロックと比較し、変換後の量子化係数を生成し、場合によっては、イントラ予測情報(例えば、1つまたは複数のイントラ符号化技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)はまた、同じピクチャ内のイントラ予測情報および参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいてスイッチ(726)に制御信号を提供する。例えば、モードがイントラモードであるとき、汎用コントローラ(721)は、残差計算器(723)が使用するイントラモード結果を選択するようにスイッチ(726)を制御し、イントラ予測情報を選択して、イントラ予測情報をビットストリームに含めるようにエントロピーエンコーダ(725)を制御し、モードがインターモードであるとき、汎用コントローラ(721)は、残差計算器(723)が使用するインター予測結果を選択するようにスイッチ(726)を制御し、インター予測情報を選択して、インター予測情報をビットストリームに含めるようにエントロピーエンコーダ(725)を制御する。
残差計算器(723)は、受信されたブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との差分(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データに基づいて、残差データを符号化して変換係数を生成するよう動作するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化変換係数を取得するために量子化プロセスを受ける。様々な実施形態において、ビデオエンコーダ(703)は残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実施し、復号された残差データを生成するように構成される。デコーディングされた残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用され得る。例えば、インターエンコーダ(730)は、復号された残差データおよびインター予測情報に基づいて、復号されたブロックを生成することができ、イントラエンコーダ(722)は、復号された残差データおよびイントラ予測情報に基づいて、復号されたブロックを生成することができる。いくつかの例では、復号されたブロックは、復号されたピクチャを生成するために適切に処理され、復号されたピクチャは、メモリ回路(図示せず)にバッファされ、参照ピクチャとして使用され得る。
エントロピーエンコーダ(725)は、符号化されたブロックを含めるようビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従ってビットストリームに様々な情報を含めるように構成される。一例では、エントロピーエンコーダ(725)は、ビットストリームに、汎用制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報を含めるように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングするとき、残差情報は存在しないことに留意されたい。
図8は、ビデオデコーダ(810)の例示的な図を示している。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受け取り、コーディングされたピクチャを復号して再構築されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示されるように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構築モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャが構成される構文要素を表す特定のシンボルを再構築するように構成されることができる。そのようなシンボルは、例えば、ブロックがコーディングされているモード(例えば、イントラモード、インターモード、双予測モード、マージサブモードまたは他のサブモードのインターモードおよび双予測モードなど)、ならびにイントラデコーダ(872)またはインターデコーダ(880)によって、それぞれ、予測のために使用される特定のサンプルまたはメタデータを識別し得る予測情報(例えば、イントラ予測情報またはインター予測情報など)を含むことができる。シンボルはまた、例えば、量子化変換係数の形態の残差情報なども含むことができる。一例では、予測モードが、インターモードまたは双予測モードであるとき、インター予測情報は、インターデコーダ(880)に提供され、予測タイプが、イントラ予測タイプであるとき、イントラ予測情報は、イントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実施して逆量子化変換係数を抽出し、逆量子化変換係数を処理して、残差情報を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化パラメータ(QP)を含めるために)特定の制御情報を必要とする場合もあり、その情報は、エントロピーデコーダ(871)によって提供され得る(これは、少量の制御情報のみであり得るので、データパスは描かれていない)。
再構築モジュール(874)は、空間領域において、残差デコーダ(873)によって出力される残差情報と(場合によってインター予測モジュールまたはイントラ予測モジュールによって出力される)予測結果とを組み合わせて、再構築されたピクチャの一部になり得る再構築ブロックを形成するように構成され、再構築されたピクチャは再構築されたビデオの一部になり得る。視覚的品質を改善するために、デブロッキング動作などの他の適切な動作が実行されることができることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技術を使用して実装されることができることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装されることができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたはそれ複数のプロセッサを使用して実装されることができる。
本開示は、アフィンコーディングモードに関する実施形態を含む。例えば、アフィンコーディングモードでは、将来の参照フレームおよび過去の参照フレームにおける参照と、将来および過去の参照フレームに適用されるアフィンモデルとの両方が対称であり得る。
ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、2013(バージョン1)、2014(バージョン2)、2015(バージョン3)、および2016(バージョン4)において、H.265/HEVC(High Efficiency Video Coding)規格を公開した。2015年に、両標準化団体は、HEVCを超える次のビデオコーディング標準規格を開発する可能性を探索するために、JVET(Joint Video Exploration Team)を共同で結成した。2017年10月、両標準化団体はJoint Call for Proposals on Video Compression with Capability beyond HEVC(CfP)を発表した。2018年2月15日までに、標準ダイナミックレンジ(SDR)に対して22個のCfP応答、高ダイナミックレンジ(HDR)に対して12個のCfP応答、360ビデオカテゴリで12個のCfP応答がそれぞれ提出された。2018年4月、受け取られたすべてのCfP応答は、122MPEG/10th JVET会議で評価された。この会議の結果、JVETは、HEVCを超える次世代ビデオコーディングの標準化プロセスを正式に立ち上げた。この新たな規格は、多用途ビデオコーディング(VVC)と名付けられ、JVETは、ジョイントビデオエキスパートチームと改称された。2020年に、ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、VVCビデオコーディング規格(バージョン1)を公開した。
インター予測では、インター予測されたコーディングユニット(CU)ごとに、例えばインター予測されたサンプル生成に使用されるVVCの特徴をコーディングするために動きパラメータが必要とされる。動きパラメータは、動きベクトル、参照ピクチャインデックス、参照ピクチャリスト使用インデックス、および/または追加情報を含むことができる。動きパラメータを、明示的または暗黙的な方式でシグナリングすることができる。CUがスキップモードでコーディングされる場合、CUを1つのPUに関連付けることができ、有意残差係数、コーディングされた動きベクトルデルタ、および/または参照ピクチャインデックスは必要とされない場合がある。CUがマージモードでコーディングされる場合、CUの動きパラメータを、近傍のCUから取得することができる。近傍のCUは、空間候補および時間候補、ならびにVVCで導入されたような追加のスケジュール(または追加の候補)を含むことができる。マージモードは、スキップモードに対してだけでなく、任意のインター予測されたCUに適用されることができる。マージモードの代替は、動きパラメータの明示的な送信であり、動きベクトル、各参照ピクチャリストの対応する参照ピクチャインデックス、参照ピクチャリスト使用フラグ、および/または他の必要な情報は、CUごとに明示的にシグナリングされることができる。
VVCでは、VVCテストモデル(VTM)参照ソフトウェアは、以下のうちの1つまたは複数を含むことができる、いくつかの新しい改良されたインター予測コーディングツールを含むことができる。
(1)拡張マージ予測
(2)マージ動きベクトル差(MMVD)
(3)対称MVDシグナリングを用いる高度動きベクトル予測(AMVP)モード
(4)アフィン動き補償予測
(5)サブブロックベースの時間動きベクトル予測(SbTMVP)
(6)適応動きベクトル分解能(AMVR)
(7)動き場記憶:1/16輝度サンプルMV記憶および8×8動き場圧縮
(8)CUレベルの重みによる双予測(BCW)
(9)双方向オプティカルフロー(BDOF)
(10)デコーダ側動きベクトル改良(DMVR)
(11)インター予測とイントラ予測の組み合わせ(CIIP)
(12)幾何学的パーティションモード(GPM)
HEVCでは、並進動きモデルが動き補償予測(MCP)に適用される。現実世界では、ズームイン/アウト、回転、パースペクティブモーション、および他の不規則な動きなど、多くの種類の動きが存在し得る。ブロックベースのアフィン変換動き補償予測を、VTMなどに適用することができる。図9Aは、2つの制御点(4パラメータ)の動き情報によって記述されるブロック(902)のアフィン動き場を示している。図9Bは、3つの制御点動きベクトル(6パラメータ)によって記述されるブロック(904)のアフィン動き場を示している。
図9Aに示すように、4パラメータアフィン動きモデルにおいて、ブロック(902)内のサンプル位置(x,y)における動きベクトルは、以下のように式(1)において導出されることができる。
ここで、mvxは第1の方向(またはX方向)の動きベクトルとすることができ、mvyは第2の方向(またはY方向)の動きベクトルとすることができる。動きベクトルを、式(2)に記述することもできる。
図9Bに示すように、6パラメータアフィン動きモデルにおいて、ブロック(904)内のサンプル位置(x,y)における動きベクトルは、以下のように式(3)において導出されることができる。
6パラメータアフィン動きモデルを、以下のように式(4)において記述することもできる。
式(1)および式(3)に示すように、(mv0x,mv0y)は、左上隅制御点の動きベクトルとすることができる。(mv1x,mv1y)は、右上隅の制御点の動きベクトルとすることができる。(mv2x,mv2y)は、左下隅の制御点の動きベクトルとすることができる。
図10に示すように、動き補償予測を簡略化するために、ブロックベースのアフィン変換予測を適用することができる。各4×4輝度サブブロックの動きベクトルを導出するために、現在のブロック(1000)内の各サブブロック(例えば、(1004))の中心サンプルの動きベクトル(例えば、(1002))を式(1)~(4)に従って計算し、1/16の分数精度に丸めることができる。次いで、動き補償補間フィルタを適用して、導出された動きベクトルを有する各サブブロックの予測を生成することができる。また、彩度成分のサブブロックサイズを4×4となるように設定することもできる。4×4彩度サブブロックのMVを、4つの対応する4×4輝度サブブロックのMVの平均として計算することができる。
アフィンマージ予測では、幅および高さの両方が8以上のCUにアフィンマージ(AF_MERGE)モードを適用することができる。現在のCUのCPMVは、空間的に近傍のCUの動き情報に基づいて生成され得る。最大5つのCPMVP候補をアフィンマージ予測に適用することができ、5つのCPMVP候補のうちのどれを現在のCUに使用することができるかを示すためにインデックスをシグナリングすることができる。アフィンマージ予測では、3つのタイプのCPMV候補:(1)近傍CUのCPMVから外挿された継承されたアフィンマージ候補、(2)近傍CUの並進MV(例えば、マージMVなどの並進ファクタのみを含むMV)を使用して導出されたCPMVPを有する、構築されたアフィンマージ候補、および(3)ゼロMV、を使用してアフィンマージ候補リストを導出することができる。
VTM3では、最大2つの継承されたアフィン候補を適用することができる。2つの継承されたアフィン候補を、近傍ブロックのアフィン動きモデルから導出することができる。例えば、1つの継承されたアフィン候補を左近傍CUから導出することができ、他方の継承されたアフィン候補を上近傍CUから導出することができる。例示的な候補ブロックを図11に示すことができる。図11に示すように、左予測子(または左継承アフィン候補)の場合、走査順序はA0->A1とすることができ、上予測子(または上継承アフィン候補)の場合、走査順序はB0->B1->B2とすることができる。したがって、各側から最初に利用可能な継承候補のみを選択することができる。2つの継承された候補の間でプルーニングチェックは実行されなくてもよい。近傍アフィンCUが識別されると、近傍アフィンCUの制御点動きベクトルを使用して、現在のCUのアフィンマージリスト内のCPMVP候補を導出することができる。図12に示されたように、現在のブロック(1204)の近傍の左下のブロックAがアフィンモードでコーディングされると、ブロックAを含むCU(1202)の左上隅、右上隅、および左下隅の動きベクトルv2、v3、およびv4を達成することができる。ブロックAが4パラメータアフィンモデルでコーディングされる場合、CU(1202)のv2およびv3に従って、現在のCU(1204)の2つのCPMVを計算することができる。ブロックAが6パラメータアフィンモデルでコーディングされる場合、CU(1202)のv2、v3、およびv4に従って、現在のCU(1204)の3つのCPMVを計算することができる。
現在のブロックの構築されたアフィン候補は、現在のブロックの各制御点の近傍並進動き情報を組み合わせることによって構築された候補とすることができる。制御点の動き情報を、図13に示すことができる特定の空間的近傍および時間的近傍から導出することができる。図13に示すように、CPMVk(k=1,2,3,4)は、現在のブロック(1302)のk番目の制御点を表す。CPMV1の場合、B2->B3->A2ブロックをチェックすることができ、第1の利用可能なブロックのMVを使用することができる。CPMV2の場合、B1->B0ブロックをチェックすることができる。CPMV3の場合、A1->A0ブロックをチェックすることができる。CPM4が利用できない場合、TMVPをCPMV4として使用することができる。
4つの制御点のMVが達成された後、4つの制御点の動き情報に基づいて現在のブロック(1302)のアフィンマージ候補を構築することができる。例えば、アフィンマージ候補を、{CPMV1,CPMV2,CPMV3}、{CPMV1,CPMV2,CPMV4}、{CPMV1,CPMV3,CPMV4}、{CPMV2,CPMV3,CPMV4}、{CPMV1,CPMV2}、{CPMV1,CPMV3}の順に、4つの制御点のMVの組み合わせに基づいて構築することができる。
3つのCPMVの組み合わせは6パラメータアフィンマージ候補を構築することができ、2つのCPMVの組み合わせは4パラメータアフィンマージ候補を構築することができる。動きスケーリングプロセスを回避するために、制御点の参照インデックスが異なる場合、制御点MVの関連する組み合わせは破棄されることができる。
1つまたは複数の継承されたアフィンマージ候補および構築されたアフィンマージ候補がチェックされた後、リストがまだ一杯でない場合、リストの最後にゼロMVを挿入することができる。
アフィンAMVP予測では、幅と高さの両方が16以上のCUにアフィンAMVPモードを適用することができる。CUレベルのアフィンフラグは、アフィンAMVPモードが使用されるかどうかを示すためにビットストリーム内でシグナリングされることができ、次いで、4パラメータアフィンまたは6パラメータアフィンが適用されるかどうかを示すために別のフラグをシグナリングすることができる。アフィンAMVP予測では、現在のCUのCPMVと現在のCUのCPMVPの予測子との差をビットストリームでシグナリングすることができる。アフィンAMVP候補リストのサイズは2とすることができ、アフィンAMVP候補リストは、以下の順序で4種類のCPMV候補を使用することによって生成されることができる。
(1)近傍CUのCPMVから外挿された継承されたアフィンAMVP候補、
(2)近傍CUの並進MVを使用して導出されたCPMVPを有する構築されたアフィンAMVP候補、
(3)近傍CUからの並進MV、および
(4)ゼロMV。
継承されたアフィンAMVP候補のチェック順序は、継承されたアフィンマージ候補のチェック順序と同じであり得る。AVMP候補を決定するために、現在のブロックと同じ参照ピクチャを有するアフィンCUのみを考慮することができる。継承されたアフィン動き予測子が候補リストに挿入されるとき、プルーニングプロセスは適用されなくてもよい。
構築されたAMVP候補を、指定された空間近傍から導出することができる。図13に示すように、アフィンマージ候補構築におけるチェック順序として、同じチェック順序を適用することができる。また、近傍ブロックの参照ピクチャインデックスもチェックすることができる。チェック順序の最初のブロックは、インターコーディングされ、現在のCU(1302)と同じ参照ピクチャを有することができる。現在のCU(1302)が4パラメータアフィンモードでコーディングされ、mv0とmv1の両方が利用可能である場合、構築されたAMVP候補を決定することができる。構築されたAMPV候補をアフィンAMVPリストにさらに追加することができる。現在のCU(1302)が6パラメータアフィンモードでコーディングされ、3つのCPMVすべてが利用可能である場合、構築されたAMVP候補をアフィンAMVPリスト内の一候補として追加することができる。そうでなければ、構築されたAMVP候補を利用不可として設定することができる。
継承されたアフィンAMVP候補および構築されたAMVP候補がチェックされた後、アフィンAMVPリスト内の候補が依然として2未満である場合、mv0、mv1およびmv2を順に追加することができる。mv0、mv1およびmv2は、利用可能な場合、現在のCU(例えば、(1302))のすべての制御点MVを予測するための並進MVとして機能することができる。最後に、アフィンAMVPがまだ満たされていない場合、アフィンAMVPリストを満たすためにゼロMVを使用することができる。
サブブロックベースのアフィン動き補償は、予測精度ペナルティを犠牲にして、メモリアクセス帯域幅を節約し、ピクセルベースの動き補償と比較して計算複雑度を低減することができる。動き補償のより細かい粒度を達成するために、オプティカルフロー(PROF)による予測改良を使用して、動き補償のためのメモリアクセス帯域幅を増加させることなく、サブブロックに基づくアフィン動き補償予測を改良することができる。VVCでは、サブブロックベースのアフィン動き補償が行われた後、オプティカルフロー式によって導出された差を加算することによって輝度予測サンプルを改良することができる。PROFを、以下の4つのステップで説明することができる。
ステップ(1):サブブロックベースのアフィン動き補償を実行して、サブブロック予測I(i,j)を生成することができる。
ステップ(2):サブブロック予測の空間勾配gx(i,j)およびgy(i,j)を、3タップフィルタ[-1,0,1]を使用して各サンプル位置で計算することができる。勾配計算は、BDOFにおける勾配計算と同じとすることができる。例えば、空間勾配gx(i,j)およびgy(i,j)を、それぞれ式(5)および式(6)に基づいて計算することができる。
gx(i,j)=(I(i+1,j)≫shift1)-(I(i-1,j)≫shift1) 式(5)
gy(i,j)=(I(i,j+1)≫shift1)-(I(i,j-1)≫shift1) 式(6)
式(5)および式(6)に示すように、shift1は、勾配の精度を制御するために使用されることができる。サブブロック(例えば、4×4)予測は、勾配計算のために各側で1サンプルずつ拡張されることができる。追加のメモリ帯域幅および追加の補間計算を回避するために、拡張境界上の拡張サンプルは、参照ピクチャ内の最も近い整数ピクセル位置からコピーされることができる。
ステップ(3):輝度予測改良を、式(7)に示すようなオプティカルフロー式によって計算することができる。
ΔI(i,j)=gx(i,j)*Δvx(i,j)+gy(i,j)*Δvy(i,j) 式(7)
ここで、Δv(i,j)は、v(i,j)で表されるサンプル位置(i,j)について計算されたサンプルMVと、サンプル(i,j)が属するサブブロックのvSBで表されるサブブロックMVとの差とすることができる。図14は、サンプルMVとサブブロックMVとの差の例示的な図を示している。図14に示すように、現在のブロック(1400)にサブブロック(1402)を含めることができ、サブブロック(1402)にサンプル(1404)を含めることができる。サンプル(1404)は、参照ピクセル(1406)に対応するサンプル動きベクトルv(i,j)を含むことができる。サブブロック(1402)は、サブブロック動きベクトルvSBを含むことができる。サブブロック動きベクトルvSBに基づいて、サンプル(1404)は参照ピクセル(1408)に対応することができる。Δv(i,j)で表されるサンプルMVとサブブロックMVとの差を、参照ピクセル(1406)と参照ピクセル(1408)との差によって示すことができる。Δv(i,j)は、1/32の輝度サンプル精度の単位で量子化されることができる。
アフィンモデルパラメータおよびサブブロック中心に対するサンプル位置は、サブブロックから別のサブブロックに変更され得ないので、Δv(i,j)は、第1のサブブロック(例えば、(1402))について計算され、同じCU(例えば、(1400))内の他のサブブロック(例えば、(1410))について再利用されることができる。dx(i,j)を水平オフセットとし、dy(i,j)をサンプル位置(i,j)からサブブロック(xSB,ySB)の中心までの垂直オフセットとすると、Δv(x,y)は、以下の式(8)および式(9)によって導出されることができる。
精度を維持するために、サブブロックの中心(xSB,ySB)は、((WSB-1)/2,(HSB-1)/2)として計算されることができ、ここで、WSBおよびHSBは、それぞれサブブロックの幅および高さである。
Δv(x,y)が得られると、アフィンモデルのパラメータを得ることができる。例えば、4パラメータアフィンモデルの場合、アフィンモデルのパラメータを、式(10)に示すことができる。
6パラメータアフィンモデルの場合、アフィンモデルのパラメータを、式(11)に示すことができる。
ここで、(v0x,v0y)、(v1x,v1y)、(v2x,v2y)は、それぞれ左上制御点動きベクトル、右上制御点動きベクトル、左下制御点動きベクトルとすることができ、wおよびhはそれぞれCUの幅および高さとすることができる。
ステップ(4):最後に、輝度予測改良ΔI(i,j)をサブブロック予測(i,j)に追加することができる。最終予測I’は、式(12)に示すように生成されることができる。
I’(i,j)=I(i,j)+ΔI(i,j) 式(12)
いくつかの実施形態では、PROFは、アフィンコーディングされたCUに対して、(1)すべての制御点MVが同じであり、これはCUが並進動きのみを有することを示す場合、および(2)サブブロックベースのアフィンMCがCUベースのMCに低下して大きなメモリアクセス帯域幅要件を回避するため、アフィン動きパラメータが指定された制限よりも大きい場合、の2つの場合に適用されない場合がある。
VVC参照ソフトウェアVTMなどのアフィン動き推定(ME)は、単予測と双予測の両方のために動作されることができる。参照リストL0および参照リストL1のいずれか一方に対して単予測を行うことができ、参照リストL0および参照リストL1の両方に対して双予測を行うことができる。
図15は、アフィンME(1500)の概略図を示している。図15に示すように、アフィンME(1500)において、参照リストL0に対してアフィン単予測(S1502)を実行して、参照リストL0内の初期参照ブロックに基づいて現在のブロックの予測P0を取得することができる。参照リストL1に対してアフィン単予測(S1504)を実行して、参照リストL1内の初期参照ブロックに基づいて現在のブロックの予測P1を取得することができる。(S1506)において、アフィン双予測を実行することができる。アフィン双予測(S1506)は、初期予測残差(2I-P0)-P1で開始することができ、Iは現在のブロックの初期値とすることができる。アフィン双予測(S1506)は、最小予測残差(2I-P0)-Pxを有する最良の(または選択された)参照ブロックを見つけるために参照リストL1内の初期参照ブロックの周りの候補を探索することができ、Pxは選択された参照ブロックに基づく現在のブロックの予測である。
参照ピクチャを用いて、現在のコーディングブロックに対して、アフィンMEプロセスはまず、ベースとして制御点動きベクトル(CPMV)のセットを選ぶことができる。反復方法を使用して、CPMVのセットに対応する現在のアフィンモデルの予測出力を生成し、予測サンプルの勾配を計算し、次いで線形方程式を解いてデルタCPMVを決定し、アフィン予測を最適化することができる。すべてのデルタCPMVが0であるか、または最大反復回数に達したときに反復を停止することができる。反復から取得されたCPMVは、参照ピクチャの最終CPMVとすることができる。
参照リストL0およびL1の両方の最良のアフィンCPVMがアフィン単予測のために決定された後、アフィン双予測探索は、最良の単予測CPMVおよび一方の側の参照リストを使用し、アフィン双予測出力を最適化するために他方の参照リストの最良のCPMVを探索することによって実行されることができる。アフィン双予測探索を、最適な結果を得るために2つの参照リストに対して反復的に実行することができる。
図16は、参照ピクチャに関連付けられた最終CPMVを計算することができる例示的なアフィンMEプロセス(1600)を示している。アフィンMEプロセス(1600)は、(S1602)で開始することができる。(S1602)において、現在のブロックのベースCPMVを決定することができる。ベースCPMVは、マージインデックス、高度動きベクトル予測(AMVP)予測子インデックス、アフィンマージインデックスなどのうちの1つに基づいて決定されることができる。
(S1604)において、ベースCPMVに基づいて現在のブロックの初期アフィン予測を取得することができる。例えば、ベースCPMVによれば、6パラメータアフィン動きモデルの4パラメータアフィン動きモデルを適用して、初期アフィン予測を生成することができる。
(S1606)において、初期アフィン予測の勾配を取得することができる。例えば、初期アフィン予測の勾配を、式(5)および式(6)に基づいて取得することができる。
(S1608)において、デルタCPMVを決定することができる。いくつかの実施形態では、デルタCPMVを、初期アフィン予測と、第1のアフィン予測などの後続のアフィン予測との間の変位に関連付けることができる。初期アフィン予測およびデルタCPMVの勾配に基づいて、第1のアフィン予測を取得することができる。第1のアフィン予測は、第1のCPMVに対応することができる。
(S1610)において、デルタCPMVがゼロであるか、または反復回数が閾値以上であるかどうかをチェックするための判定を行うことができる。デルタCPMVがゼロであるか、または反復回数が閾値以上である場合、最終(または選択された)CPMVを(S1612)において決定することができる。最終(または選択された)CPMVは、初期アフィン予測およびデルタCPMVの勾配に基づいて決定される第1のCPMVとすることができる。
さらに(S1610)を参照すると、デルタCPMVがゼロではないか、または反復回数が閾値未満である場合、新しい反復を開始することができる。新しい反復では、更新されたアフィン予測を生成するために、更新されたCPMV(例えば、第1のCPMV)を(S1604)に提供することができる。次いで、アフィンMEプロセス(1600)は、(S1606)に進むことができ、更新されたアフィン予測の勾配を計算することができる。次いで、アフィンMEプロセス(1600)は、(S1608)に進み、新しい反復を継続することができる。
アフィン動きモデルにおいて、4パラメータアフィン動きモデルは、回転およびズームの動きを含む式によってさらに記述されることができる。例えば、4パラメータアフィン動きモデルを、式(13)において以下のように書き換えることができる。
ここで、rおよびθは、それぞれズームファクタおよび回転角度とすることができる。現在のフレームが2つの参照フレームの時間的に中間にあり、動きが一定かつ連続的である場合、ズームファクタは指数関数的であり得るが、回転角度は一定であり得る。したがって、参照リスト0へのアフィン動きのような、ある参照へのアフィン動きを定式化するために、式(13)を適用することができる。参照リスト1などの現在のフレームの時間的に別の側にある別の参照フレームへのアフィン動きは、式(14)で記述されることができる。
式(13)および式(14)は、対称アフィン動きモデルと呼ぶことができる。コーディング効率をさらに改善するために、対称アフィン動きモデルを適用することができる。a、b、r、およびθの間の関係は、式(15)において以下のように記述されることができることに留意されたい。
対称動きベクトル差(MVD)コーディングを、VVCなどにおいて適用することができる。例えば、単方向予測MVDシグナリングおよび双方向予測MVDシグナリングの他に、双方向予測MVDシグナリングのための対称MVD(SMVD)モードを適用することができる。対称MVDモードでは、リスト0とリスト1の両方の参照ピクチャインデックスおよびリスト1のMVDを含む動き情報はシグナリングされずに導出され得る。
対称MVDモードの復号プロセスは、以下のように提供されることができる。
(1)スライスレベルでは、BiDirPredFlag、RefIdxSymL0、およびRefIdxSymL1などの変数は、以下のように導出されることができる。
a)mvd_l1_zero_flagが1である場合、BiDirPredFlagは0に等しく設定される。
b)そうではなく、リスト0内の最も近い参照ピクチャとリスト1内の最も近い参照ピクチャとが参照ピクチャの前方と後方のペアのうちの参照ピクチャの後方と前方のペアを形成する場合には、BiDirPredFlagは1に設定され、リスト0とリスト1両方の参照ピクチャが短期参照ピクチャである。そうでなければ、BiDirPredFlagは0に設定される。
(2)CUレベルでは、CUが双予測コーディングされ、BiDirPredFlagが1に等しい場合、対称モードが使用されるか否かを指示する対称モードフラグが明示的にシグナリングされることができる。
対称モードフラグが真である場合、mvp_l0_flag、mvp_l1_flag、およびMVD0のみが明示的にシグナリングされる。リスト0およびリスト1の参照インデックスは、それぞれ、参照ピクチャのペアに等しく設定されることができる。MVD1は、(-MVD0)に等しくなるように設定されることができる。最終動きベクトルを、以下の式(16)に示すことができる。
ここで、mvx0は、x方向のリスト0内の現在のブロックと参照ブロックとの間の最終動きベクトルとすることができる。mvy0は、y方向のリスト0内の現在のブロックと参照ブロックとの間の最終動きベクトルとすることができる。mvpx0は、x方向のリスト0内の初期参照ブロックに基づく現在のブロックの動きベクトル予測子とすることができる。mvpy0は、y方向のリスト0内の初期参照ブロックに基づく現在のブロックの動きベクトル予測子とすることができる。mvdx0は、最終動きベクトルと、x方向のリスト0に関連付けられた動きベクトル予測子との間の動きベクトル差とすることができる。mvdy0は、最終動きベクトルと、y方向のリスト0に関連付けられた動きベクトル予測子との間の動きベクトル差とすることができる。同様に、mvx1は、x方向のリスト1内の現在のブロックと参照ブロックとの間の最終動きベクトルとすることができる。mvy1は、y方向のリスト1内の現在のブロックと参照ブロックとの間の最終動きベクトルとすることができる。mvpx1は、x方向のリスト1内の初期参照ブロックに基づく現在のブロックの動きベクトル予測子とすることができる。mvpy1は、y方向のリスト1内の初期参照ブロックに基づく現在のブロックの動きベクトル予測子とすることができる。mvdx1は、最終動きベクトルと、x方向のリスト1に関連付けられた動きベクトル予測子との間の動きベクトル差とすることができる。mvdy1は、最終動きベクトルと、y方向のリスト1に関連付けられた動きベクトル予測子との間の動きベクトル差とすることができる。
図17は、対称MVDモードの例示的な図を示している。図17に示すに、現在のブロック(1708)は、現在のピクチャ(1702)に含まれ得る。現在のブロック(1708)は、第1の参照ピクチャ(1704)内に参照ブロック(1710)を有することができる。第1の参照ピクチャ(1704)は、第1の参照リスト(または参照ピクチャリスト)L0に含まれ、参照リストL0に関連付けられた現在のブロックの動きベクトル予測子に対応することができる。現在のブロックは、第2の参照ピクチャ(1706)内に参照ブロック(1716)を有することができる。第2の参照ピクチャ(1706)は、第2の参照リスト(または第2の参照ピクチャリスト)L1に含まれ、参照リストL1に関連付けられた現在のブロック(1708)の動きベクトル予測子に対応することができる。いくつかの実施形態では、第1の参照ピクチャ(1704)内の更新された第1の参照ブロック(1712)を決定することができる。更新された第1の参照ブロック(1712)および第1の参照ブロック(1710)はMVD0に対応することができる。対称MVDモードによれば、第2の参照ピクチャ(1706)内の更新された第2の参照ブロック(1714)を決定することができる。更新された第2の参照ブロック(1714)および第2の参照ブロック(1716)は、MVD1に対応することができる。MVD1は、MVD1=-MVD0となるように、MVD0に対して対称であり得る。
エンコーダでは、対称MVD動き推定(または探索)は、初期MV評価から開始することができる。初期MV候補のセットは、単予測探索から得られたMV、双予測探索から得られたMV、およびAMVPリストからのMVを含むことができる。最も低いレート歪みコストを有するMVは、対称MVD動き探索のための初期MVとして選択されることができる。
双予測アフィンの対称MVDも提供することができる。例えば、双予測アフィンモードの対称MVDは、双予測された並進動きの対称MVDコーディングのプロセスに基づいて提供されることができる。
対称モード(例えば、双予測アフィンの対称MVD)が使用される場合、MVPインデックスフラグ(例えば、mvp_l0_flagおよびmvp_l1_flag)およびリスト0内のMVD(例えば、MVD0)が明示的にシグナリングされ得る。リスト0およびリスト1の参照インデックスを、参照ピクチャのペアに等しく設定することができ、これは対称MVDコーディングと同じ方法で処理されることができる。アフィンモードフラグが真である場合、リスト1における左上制御点のMVDを、リスト0における左上制御点のMVDの負値に等しく設定することができる。リスト1内の他の制御点のMVDを0に設定することができる。最終制御点動きベクトルを、以下のように式(17)および式(18)において導出することができる。
左上制御点の場合:
他の制御点(j=1または2)の場合:
ここで、下付き文字の第1の次元は参照リスト(例えば、リスト0またはリスト1)を示し、下付き文字の第2の次元は制御点インデックスを示す。
アフィン動きモデルのアフィン動きパラメータのシグナリングコストは、並進動きのシグナリングコストよりもはるかに高くなり得る。対称MVDコーディングをアフィン動きに適用することができるが、全体的なコーディング効率は十分ではない場合がある。
本開示では、対称アフィンモードを提供することができる。対称アフィンモードに基づいて、第1の参照リスト(例えば、参照リストL0)のアフィン動き情報をシグナリングすることができる。別の参照リスト(例えば、参照リストL1)のアフィン動き情報を、第1の参照リストのアフィン動き情報に基づいて導出することができる。アフィン動き情報は、アフィンモデルのタイプ(例えば、4パラメータアフィンモデルまたは6パラメータアフィンモデル)、アフィンモデルのアフィン動きパラメータなどを含むことができる。対称アフィンモードによれば、一例では、第1のアフィンパラメータおよび第2のアフィンパラメータは反対の符号を有することができる。一例では、第1のアフィンパラメータおよび第2のアフィンパラメータは逆の値を有することができる。一例では、第1のアフィンパラメータおよび第2のアフィンパラメータは、第1の参照ピクチャと現在のピクチャとの間の第1の時間的距離および第2の参照ピクチャと現在のピクチャとの間の第2の時間的距離に基づく比例関係を有することができる。
一実施形態では、対称アフィンモードは、ビットストリーム内のシグナリング情報によって示されことができる。ビットストリーム内のシグナリング情報は、フラグを含み得る。フラグは、例えば、対称アフィンフラグ(SAFF)とすることができる。一例では、フラグ(例えば、SAFF)を、コンテキスト適応型バイナリ算術コーディング(CABAC)コンテキストでコーディングすることができる。一例では、フラグをバイパスコーディングすることができる。
一実施形態では、対称アフィンモードは、特定のアフィンタイプに対してのみ使用され得る。例えば、対称アフィンモードは、4パラメータアフィンモデルが使用される場合にのみ適用可能であり得る。一例では、対称アフィンフラグ(またはSAFFフラグ)が真としてシグナリングされる場合、アフィンタイプ(例えば、4パラメータアフィンモデルまたは6パラメータアフィンモード)はシグナリングされないが、4パラメータアフィンモデルとして導出され得る。一例では、アフィンタイプが6パラメータアフィンモデルとしてシグナリングされる場合、SAFFフラグはシグナリングされず、偽として導出され得る。
一実施形態では、対称アフィンモードは、MVDに関連する条件が満たされたときに使用されることができる(またはSAFFが真である)。例えば、対称アフィンモードは、対称MVD(SMVD)が満たされるときに使用されることができる。したがって、現在のフレームが将来の参照フレームおよび過去の参照フレームを有する場合、現在のフレームは、さらなる参照フレームおよび過去の参照フレームの時間的に中間位置にあり得る。
一例では、リストL0(または第1の参照リストL0)内の参照ピクチャのピクチャ順序カウント(POC)は、Ref_POC_L0と表すことができる。リストL1(または第2の参照リストL1)における参照ピクチャのPOCは、Ref_POC_L1と表すことができる。現在のピクチャのPOCは、Curr_POCと表すことができる。したがって、対称アフィンモードは、式(19)に示す条件を満たすことなどによって、SMVDが満たされるときに使用されることができる。
Ref_POC_L0-Curr_POC=Curr_POC-Ref_POC_L1 式(19)
ここで、Ref_POC_L0-Curr_POCは、現在のピクチャと第1の参照リスト(例えば、リストL0)内の参照ピクチャとの間の第1の時間的距離を表すことができ、Curr_POC-Ref_POC_L1は、現在のピクチャと第2の参照リスト(例えば、リストL1)内の参照ピクチャとの間の第2の時間的距離を表すことができる。
一実施形態では、SAFFがオンまたは真である場合、参照インデックス情報はシグナリングされなくてもよい。代わりに、参照インデックス情報を導出することができる。一例では、参照インデックス情報を、式(16)に従って対称MVD(SMVD)においてMVDが導出されるのと同じ方法で導出することができる。参照インデックス情報は、参照リスト内のどの参照ピクチャが現在のピクチャの参照ピクチャであるかを示すことができる。例えば、第1の参照リスト内の現在のピクチャの参照ピクチャが決定されると、第1の参照リスト内の現在のピクチャの参照ピクチャに基づいて、第2の参照リスト内の現在のピクチャの第2の参照ピクチャに対する参照インデックス情報を導出することができる。導出された参照インデックス情報は、対称アフィンモードに基づいて、第2の参照リスト内のどの参照ピクチャが現在のピクチャの第2の参照ピクチャであるかを伝えることができる。
一実施形態では、SAFFがオンまたは真であるとき、アフィン動き情報(例えば、アフィン動きパラメータまたはアフィンタイプ)は、リスト(例えば、第1の参照リストL0)に対してのみシグナリングされ得る。アフィン動き情報を、式(17)および式(18)に記載された対称アフィンモードに基づいて別のリスト(例えば、第2の参照リストL1)について導出することができる。対称アフィンモードによれば、回転ファクタ(例えば、θ)、ズームファクタ(例えば、r)、および並進動きベクトル(例えば、cおよびf)などの2つの参照リスト内のアフィン動きパラメータは対称であり得る。一例では、第1の参照リスト内の第1の回転ファクタおよび第2の参照リスト内の第2の回転ファクタなど、2つの参照リスト内の回転ファクタの合計はゼロであり得る。一例では、2つのリストの並進動きベクトル(または並進ファクタ)の合計はゼロであり得る。2つのリストのズームファクタは、逆(すなわち逆数)であり得る。一例では、2つのリストのズームファクタの積は1であり得る。一例では、第1の参照リストに関連付けられたズームファクタはrとすることができ、第2の参照リストに関連付けられたズームファクタは1/rとすることができる。したがって、現在のピクチャ内の現在のブロックおよび第1の参照リスト内の参照ピクチャの参照ブロックに関連付けられたアフィンモデルのアフィン動きパラメータが取得されると、対称アフィンモードに基づいて、現在のピクチャ内の現在のブロックおよび第2の参照リスト内の参照ピクチャの参照ブロックに関連付けられたアフィンモデルのアフィン動きパラメータを導出することができる。
対称アフィンモードに基づくMV導出は、制御点、アフィン動きパラメータ(例えば、a、b、c、およびd)、またはズームファクタおよび回転ファクタの間の変換を用いて実行されることができることに留意されたい。例えば、制御点とアフィン動きパラメータとの間の変換は、式(1)および式(2)に基づいて処理されることができる。アフィン動きパラメータ(例えば、a、b、c、およびd)とズームファクタおよび回転ファクタとの間の変換は、式(13)および式(14)に基づいて処理されることができる。
一実施形態では、SAFFがオンまたは真であるとき、アフィン動き情報(例えば、アフィン動きパラメータまたはアフィンタイプ)は、リスト(例えば、第1の参照リスト)に対してシグナリングされることができる。両方の参照リスト(例えば、第1の参照リストおよび第2の参照リスト)の参照インデックス(例えば、どの参照ピクチャが使用されるかを示すためのインデックス)もシグナリングされることができる。別のリスト(例えば、第2の参照リスト)の制御点動きベクトルは、式(2)に記載された4パラメータアフィンモデルなどのアフィンモデルを使用して、リストL0(または第1の参照リストL0)およびリストL1(または第2の参照リストL1)上の現在のピクチャおよび参照ピクチャのPOC距離(または時間的距離)間の比に基づいて導出されることができる。したがって、回転パラメータは時間的距離に線形に比例してもよく、一方、ズームファクタは時間的距離に指数関数的に比例してもよい。
一例では、現在のピクチャとリストL0内の第1の参照ピクチャとの間の第1の時間的距離dPoc0、および現在のピクチャとリストL1内の第2の参照ピクチャとの間の第2の時間的距離dPoc1は、以下の式(20)および式(21)で記述することができる。
dPoc0=Poc_Cur-RefPoc_L0 式(20)
dPoc1=Poc_Cur-RefPoc_L1 式(21)
一例では、式(22)に示すように、第1の回転ファクタθ0と第2の回転ファクタθ1との比は、第1の参照ピクチャと現在のピクチャとの間の第1の時間的距離dPoc0と、第2の参照ピクチャと現在のピクチャとの間の第2の時間的距離dPoc1との比に線形に比例することができる。
一例では、式(23)に示すように、第1のズームファクタr0と第2のズームファクタr1との比は、第1の時間的距離dPoc0と第2の時間的距離dPoc1との比に指数関数的に比例することができる。
本開示では、対称アフィンモードをエンコーダに適用することができる。対称アフィンモードに基づいて、アフィン動き推定における第1の参照リストの開始点(例えば、ベースCPMVまたは初期CPMV)を最初に決定することができる。第2の参照リストの開始点を、第1の参照リストの開始点に基づいて導出することができる。いくつかの実施形態では、対称アフィンモードは、特定のアフィンモデルが適用されるときに使用されることができる。例えば、対称アフィンモードは、アフィン動き推定において4パラメータアフィンモデルが適用されるときに使用されることができる。
対称アフィンモードでは、反復探索を使用することができる。反復探索を、例えば、図15および図16に従って処理することができる。反復探索では、4パラメータアフィン動きなどのアフィン動き(またはベースCPMV)を最初に第1の参照リストに対して決定することができる。いくつかの実施形態では、アフィン動きを、マージ候補、AMVP候補、およびアフィンマージ候補のうちの1つに基づいて決定することができる。第2の参照リストの開始点(またはベースCPMV)を、対称アフィンモードに基づいて導出することができる。例えば、開始点は、第2の参照リストの開始点のアフィンパラメータが第1の参照リストのアフィン動きのアフィンパラメータに対して対称であり得るように、第1の参照リストのアフィン動きに基づいて決定されることができる。
図16に示すように、第2の参照リストにおける開始点に基づいて反復探索を行うことができる。(S1602)において、反復プロセスの第1の反復において、対称アフィンモードに基づいて第1の参照リストのアフィン動きから第2の参照リストに対する現在のブロックのベースCPMVを決定することができる。ベースCPMVを、第2の参照リストL1内の初期参照ブロックと関連付けることができる。(S1604)において、開始点(または初期予測子)P0,L1(i,j)を、参照リストL1(または第2の参照リストL1)内の初期参照ブロック(またはベースCPMV)に基づいて決定することができる。(S1606)において、式(5)および式(6)に基づいてなど、P0,L1(i,j)の勾配を計算することができる。例えば、gx1,L1(i,j)は、x方向における第1の予測子P1,L1(i,j)の勾配とすることができる。gy1,L1(i,j)は、第1の予測子P1,L1(i,j)のy方向の勾配とすることができる。
(S1608)において、初期参照ブロックおよび参照リストL1内の第1の参照ブロックなどの、参照リストL1内の2つの参照ブロック(またはサブブロック)に関連付けられたデルタCPMVは、式(1)および式(2)に示す4パラメータアフィンモデルなどのアフィンタイプに基づいて計算されることができる。デルタCPMVは、Δvx0,L1(i,j)およびΔvy0,L1(i,j)で表すことができる。Δvx0,L1(i,j)は、x方向に沿った初期参照ブロックおよび参照リストL1内の第1の参照ブロックなどの2つの参照ブロック(またはサブブロック)の差または変位であり得る。Δvy0,L1(i,j)は、y方向に沿った初期参照ブロックおよび参照リストL1内の第1の参照ブロックなどの2つの参照ブロック(またはサブブロック)の差または変位であり得る。
(S1610)において、参照リストL1内の第1の参照ブロックに基づく現在のブロックの第1の予測子P1,L1(i,j)を、式(24)に従って決定することができる。
P1,L1(i,j)=P0,L1(i,j)+gx0,L1(i,j)*Δvx0,L1(i,j)+gy0,L1(i,j)*Δvy0,L1(i,j)式(24)
ここで、(i,j)は、現在のブロック内のピクセル(またはサンプル)の位置とすることができる。
Δvx0,L1(i,j)およびΔvy0,L1(i,j)のうちの少なくとも1つがゼロでないことに応答して、反復探索は、次いで、(S1614)に従って第2の反復に進むことができる。(S1614)において、更新されたCPMV(例えば、P1,L1(i,j)に関連付けられた第1のCPMV)を(S1604)に提供することができ、そこで更新されたCPMV(または更新されたアフィン予測)を生成することができる。次いで、反復探索は(S1606)に進むことができ、ここで更新されたCPMVの勾配を計算することができる。反復探索は、新しい反復(例えば、第2の反復)を継続するために(S1608)に進むことができる。2回目の反復では、参照リストL1内の第2の参照ブロックに基づく現在のブロックの第2の予測子P2,L1(i,j)を、式(25)に従って決定することができる。
P2,L1(i,j)=P1,L1(i,j)+gx1,L1(i,j)*Δvx1,L1(i,j)+gy1,L1(i,j)*Δvy1,L1(i,j)式(25)
式(25)に示すように、gx1,L1(i,j)は、x方向における第1の予測子P1,L1(i,j)の勾配とすることができる。gy1,L1(i,j)は、第1の予測子P1,L1(i,j)のy方向の勾配とすることができる。Δvx1,L1(i,j)は、x方向に沿った参照リストL1内の第1の参照ブロックと第2の参照ブロックとの差分または変位であり得る。Δvy1,L1(i,j)は、y方向に沿った参照リストL1内の第1の参照ブロックと第2の参照ブロックとの差分または変位であり得る。
反復は、反復回数Nが反復プロセスの閾値(または最大反復回数)以上であるか、または参照リストL1内のN番目の参照ブロックと参照リストL1内の(N+1)番目の参照ブロックとの間の変位(例えば、ΔvxN,L1(i,j)、ΔvyN,L1(i,j))がゼロである場合に終了することができる。これにより、図16の(S1612)に示すように、参照リストL1のN番目の参照ブロックに基づいて、最終CPMV(または改良されたCPMV)を決定することができる。
第2の参照リストL1のアフィン動き(またはアフィン動きパラメータ)の改良後に、対称アフィンモードを使用して、第2の参照リストL1の改良されたアフィン動きに基づいて第1の参照リストL0のアフィン動き(またはアフィン動きパラメータ)を導出することができる。例えば、第1の参照リストL0の開始点(またはベースCPMV)を、対称アフィンモードに従って第2の参照リストL1の最終CPMVに基づいて導出することができる。第1の参照リストL0に対するアフィン動き(またはアフィン動きパラメータ)の改良は、再び図16に示す反復探索に従って進めることができる。そのようなプロセスは、1つまたは複数の条件が満たされるまで反復的に実行され得る。例えば、プロセスは、特定の反復回数に達するまで、またはアフィン動きのレート歪みコストが特定の閾値に達するまで反復的に実行され得る。
図18は、本開示のいくつかの実施形態による例示的な復号プロセス(1800)を概説するフローチャートを示している。図19は、本開示のいくつかの実施形態による例示的な符号化プロセス(1900)を概説するフローチャートを示している。図20は、本開示のいくつかの実施形態による例示的な符号化プロセス(2000)を概説するフローチャートを示している。提案されるプロセスは、別々に使用されても、任意の順序で組み合わせられてもよい。さらに、プロセス(または、実施形態)の各々、エンコーダ、およびデコーダは、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
プロセス(例えば、(1800)、(1900)、および(2000))の動作を、必要に応じて、任意の量または順序で組み合わせ、あるいは配置してもよい。実施形態において、プロセス(例えば、(1800)、(1900)、および(2000))の動作のうちの2つ以上が並行して実施されてもよい。
プロセス(例えば、(1800)、(1900)、および(2000))を、ブロックの再構築および/または符号化において、再構築中のブロックのための予測ブロックを生成するために使用することができる。様々な実施形態において、プロセス(例えば、(1800)、(1900)、および(2000))は、端末デバイス(310)、(320)、(330)、および(340)の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態において、プロセス(例えば、(1800)、(1900)、および(2000))はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(例えば、(1800)、(1900)、および(2000))を実行する。
図18に示すように、プロセス(1800)は、(S1801)から始まり、(S1810)に進むことができる。(S1810)において、現在のピクチャ内の現在のブロックのコーディングされた情報を、コーディングされたビデオビットストリームから受信することができる。コーディングされた情報は、対称アフィンモードが現在のブロックに適用されるかどうかを示すフラグを含むことができる。
(S1820)において、対称アフィンモードが現在のブロックに適用されることを示すフラグに応答して、対称アフィンモードの第1のアフィンモデルの第1のアフィンパラメータを、受信したコーディングされた情報から決定することができる。第1のアフィンモデルを、現在のピクチャの第1の参照ピクチャ内の現在のブロックおよび現在のブロックの第1の参照ブロックと関連付けることができる。
(S1830)において、対称アフィンモードの第2のアフィンモデルの第2のアフィンパラメータを、第1のアフィンモデルの第1のアフィンパラメータに基づいて導出することができる。第2のアフィンモデルを、現在のピクチャの第2の参照ピクチャ内の現在のブロックおよび現在のブロックの第2の参照ブロックと関連付けることができる。第1のアフィンパラメータおよび第2のアフィンパラメータは、反対の符号、逆の値、ならびに第1の参照ピクチャと現在のピクチャとの間の第1の時間的距離および第2の参照ピクチャと現在のピクチャとの間の第2の時間的距離に基づく比例関係のうちの1つを有することができる。
(S1840)において、現在のブロックのCPMVを、第1のアフィンモデルおよび第2のアフィンモデルに基づいて決定することができる。
(S1850)において、現在のブロックを、現在のブロックの決定されたCPMVに基づいて再構築することができる。
いくつかの実施形態では、フラグは、CABACコンテキストおよびバイパスコードのうちの1つを介してコーディングされることができる。
いくつかの実施形態では、対称アフィンモードは、対称アフィンモードが現在のブロックに適用されることを示すフラグに応答して、4パラメータアフィンモデルと関連付けられると決定されることができる。
いくつかの実施形態では、フラグは、現在のピクチャと第1の参照ピクチャとの間の第1の時間的距離が現在のピクチャと第2の参照ピクチャとの間の第2の時間的距離に等しいことに基づいて、対称アフィンモードが現在のブロックに適用されることを示すことができる。
対称アフィンモードが現在のブロックに適用されることを示すフラグに応答して、参照インデックス情報を導出することができる。参照インデックス情報は、第1の参照リスト内のどの参照ピクチャが第1の参照ピクチャであり、第2の参照リスト内のどの参照ピクチャが第2の参照ピクチャであるかを示すことができる。
第1のアフィンパラメータは、第1の並進ファクタと、第1のズームファクタまたは第1の回転ファクタの少なくとも一方とを含むことができる。第2のアフィンパラメータは、第2の並進ファクタと、第2のズームファクタまたは第2の回転ファクタの少なくとも一方とを含むことができる。
一例では、第1の回転ファクタと第2の回転ファクタとの和はゼロとすることができる。第1の並進ファクタと第2の並進ファクタとの和はゼロとすることができる。第1のズームファクタと第2のズームファクタとの積は1とすることができる。
一例では、第1の回転ファクタと第2の回転ファクタとの比は、第1の時間的距離と第2の時間的距離との比に線形に比例することができる。第1のズームファクタと第2のズームファクタとの比は、第1の時間的距離と第2の時間的距離との比に指数関数的に比例することができる。
次いで、プロセスは(S1899)に進み、終了する。
プロセス(1800)を、適切に適合させることができる。プロセス(1800)の(1つまたは複数の)ステップを、修正および/または省略することができる。(1つまたは複数の)追加のステップを追加することができる。任意の適切な実装順序を使用することができる。
図19に示すように、プロセス(1900)は、(S1901)から始まり、(S1910)に進むことができる。(S1910)において、現在のピクチャ内の現在のブロックの第1のアフィンモデルの第1のアフィンパラメータを決定することができる。第1のアフィンモデルを、第1の参照ピクチャ内の現在のブロックおよび現在のブロックの第1の参照ブロックと関連付けることができる。
(S1920)において、第2の参照ピクチャに関連付けられた現在のブロックの初期CPMVを、第1のアフィンモデルから導出された第2のアフィンモデルに基づいて決定することができる。第2のアフィンモデルを、第2の参照ピクチャ内の現在のブロックおよび現在のブロックの第2の参照ブロックと関連付けることができる。第2のアフィンモデルの第2のアフィンパラメータは、第1のアフィンモデルの第1のアフィンパラメータに対して対称であってもよい。
(S1930)において、第2の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVを、第2の参照ピクチャに関連付けられた現在のブロックの初期CPMVおよび第1のアフィン動き探索に基づいて決定することができる。
(S1940)において、第1の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVを、第1の参照ピクチャに関連付けられた現在のブロックの初期CPMVおよび第2のアフィン動き探索に基づいて決定することができる。第1の参照ピクチャに関連付けられた現在のブロックの初期CPMVは、第2の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVから導出され、改良されたCPMVに対して対称であってもよい。
(S1950)において、現在のブロックの予測情報を、第1の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVおよび第2の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVに基づいて決定することができる。
第2の参照に関連付けられた現在のブロックの改良されたCPMVを決定するために、現在のブロックの初期予測子は、第2の参照ピクチャに関連付けられた現在のブロックの初期CPMVに基づいて決定されることができる。現在のブロックの第1の予測子は、初期予測子に基づいて決定されることができる。第1の予測子は、(i)現在のブロックの初期予測子と、(ii)初期予測子の勾配値の第1の成分と初期予測子および第1の予測子に関連付けられた動きベクトル差の第1の成分との積と、(iii)初期予測子の勾配値の第2の成分と動きベクトル差の第2の成分との積との和に等しくなり得る。
第2の参照ピクチャに関連付けられた現在のブロックの改良されたCPMVを決定するために、現在のブロックの改良されたCPMVは、(i)Nが第1のアフィン動き探索の上限反復値に等しいこと、および(ii)N番目の予測子および(N+1)番目の予測子に関連付けられた動きベクトル差がゼロであること、のうちの一方に応答して、第2の参照ピクチャに関連付けられたN番目の予測子に基づいて決定されることができる。
いくつかの実施形態では、第1のアフィンパラメータは、第1の並進ファクタと、第1のズームファクタまたは第1の回転ファクタの少なくとも一方とを含むことができる。第2のアフィンパラメータは、第2の並進ファクタと、第2のズームファクタまたは第2の回転ファクタの少なくとも一方とを含むことができる。
一例では、第1の回転ファクタと第2の回転ファクタとの和はゼロとすることができる。第1の並進ファクタと第2の並進ファクタとの和はゼロとすることができる。第1のズームファクタと第2のズームファクタとの積は1とすることができる。
一例では、第1の回転ファクタと第2の回転ファクタとの比は、第1の参照ピクチャと現在のピクチャとの間の第1の時間的距離と、第2の参照ピクチャと現在のピクチャとの間の第2の時間的距離との比に線形に比例することができる。第1のズームファクタと第2のズームファクタとの比は、第1の時間的距離と第2の時間的距離との比に指数関数的に比例することができる。
次いで、プロセスは(S1999)に進み、終了する。
プロセス(1900)は、適切に適合させることができる。プロセス(1900)の(1つまたは複数の)ステップを、修正および/または省略することができる。(1つまたは複数の)追加のステップを追加することができる。任意の適切な実装順序を使用することができる。
図20に示すように、プロセス(2000)は、(S2001)から始まり、(S2010)に進むことができる。(S2010)において、現在のピクチャ内の現在のブロックに適用される対称アフィンモードの第1のアフィンモデルの第1のアフィンパラメータを決定することができる。第1のアフィンモデルを、現在のピクチャの第1の参照ピクチャ内の現在のブロックおよび現在のブロック内の第1の参照ブロックと関連付けることができる。
(S2020)において、対称アフィンモードの第2のアフィンモデルの第2のアフィンパラメータを、第1のアフィンモデルの第1のアフィンパラメータに基づいて決定することができる。第2のアフィンモデルを、第2の参照ピクチャ内の現在のブロックおよび現在のブロックの第2の参照ブロックと関連付けることができる。第1のアフィンパラメータおよび第2のアフィンパラメータは、反対の符号、逆の値、ならびに第1の参照ピクチャと現在のピクチャとの間の第1の時間的距離および第2の参照ピクチャと現在のピクチャとの間の第2の時間的距離に基づく比例関係のうちの1つを有することができる。
(S2030)において、現在のブロックの制御点動きベクトル(CPMV)を、第1のアフィンモデルおよび第2のアフィンモデルに基づいて決定することができる。
(S2040)において、現在のブロックの予測情報を、現在のブロックの決定されたCPMVと、対称アフィンモードが現在のブロックに適用されるかどうかを示すフラグとに基づいて生成することができる。
上述された技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶されることができる。例えば、図21は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(2100)を示す。
コンピュータソフトウェアは、直接または、1つもしくは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによる解釈、マイクロコード実行などを介して実行されることができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンク、または同様のメカニズムの対象となり得る任意の適切な機械語またはコンピュータ言語を使用してコーディングされることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行されることができる。
図21に示されたコンピュータシステム(2100)の構成要素は、本質的に例示であり、本開示の実施形態を実装するためのコンピュータソフトウェアの使用範囲または機能にいかなる制限を加えることを意図するものではない。構成要素の構成は、コンピュータシステム(2100)の例示的な実施形態に示された構成要素のいずれか1つまたは組み合わせに関するいかなる依存性または要件も有すると解釈されるべきでない。
コンピュータシステム(2100)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、(キーストローク、スワイプ、データグローブの動きなどの)触覚入力、(音声、拍手などの)オーディオ入力、(ジェスチャなどの)視覚入力、(描写されていない)嗅覚入力を介して、1人または複数の人間のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用され得る。
入力ヒューマンインターフェースデバイスには、キーボード(2101)、マウス(2102)、トラックパッド(2103)、タッチスクリーン(2110)、データグローブ(図示せず)、ジョイスティック(2105)、マイクロフォン(2106)、スキャナ(2107)、カメラ(2108)のうちの1つまたは複数が含まれてもよい(各々の1つのみが描写されている)。
コンピュータシステム(2100)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および嗅覚/味覚を介して、1人または複数の人間のユーザの感覚を刺激している場合がある。そのようなヒューマンインターフェース出力デバイスには、触覚出力デバイス(例えば、タッチスクリーン(2110)、データグローブ(図示せず)、またはジョイスティック(2105)による触覚フィードバック、しかし入力デバイスとして機能しない触覚フィードバックデバイスが存在する可能性もある)、(スピーカ(2109)、ヘッドフォン(描写せず)などの)オーディオ出力デバイス、(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2110)など、各々タッチスクリーン入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にかかわらず、それらのうちのいくつかは、ステレオグラフィック出力、仮想現実眼鏡(描写せず)、ホログラフィックディスプレイおよびスモークタンク(描写せず)などの手段を介して2次元視覚出力または3次元以上の出力を出力することが可能な場合がある)視覚出力デバイス、ならびにプリンタ(描写せず)が含まれてもよい。
コンピュータシステム(2100)は、CD/DVDまたは同様の媒体(2121)を有するCD/DVD ROM/RW(2120)を含む光学媒体、サムドライブ(2122)、リムーバブルハードドライブまたはソリッドステートドライブ(2123)、テープおよびフロッピーディスクなどのレガシー磁気媒体(描写せず)、セキュリティドングルなどの特殊なROM/ASIC/PLDベースのデバイス(描写せず)などの、人間がアクセス可能なストレージデバイスおよびそれらに関連する媒体を含むこともできる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(2100)は、1つまたは複数の通信ネットワーク(2155)へのインターフェース(2154)を含むこともできる。ネットワークは、例えば、無線、有線、光とすることができる。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両および産業用、リアルタイム、遅延耐性、などとすることができる。ネットワークの例には、イーサネット、ワイヤレスLANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上波ブロードキャストTVを含むTVの有線またはワイヤレスの広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、通常、(例えば、コンピュータシステム(2100)のUSBポートなどの)特定の汎用データポートまたは周辺バス(2149)に取り付けられた外部ネットワークインターフェースアダプタを必要とし、他のネットワークは、通常、以下に記載されるシステムバスに取り付けることによってコンピュータシステム(2100)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(2100)は他のエンティティと通信することができる。そのような通信は、単方向受信のみ(例えば、ブロードキャストTV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または、例えば、ローカルもしくは広域のデジタルネットワークを使用する他のコンピュータシステムとの双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースの各々で使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能なストレージデバイス、およびネットワークインターフェースを、コンピュータシステム(2100)のコア(2140)に取り付けることができる。
コア(2140)は、1つまたは複数の中央処理装置(CPU)(2141)、グラフィックス処理装置(GPU)(2142)、フィールドプログラマブルゲートエリア(FPGA)(2143)、特定のタスク用のハードウェアアクセラレータ(2144)、グラフィックスアダプタ(2150)などの形態の特殊なプログラマブル処理装置を含むことができる。これらのデバイスは、読み出し専用メモリ(ROM)(2145)、ランダムアクセスメモリ(2146)、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量ストレージ(2147)とともに、システムバス(2148)を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(2148)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形式でアクセス可能であり得る。周辺デバイスを、コアのシステムバス(2148)に直接取り付けることも、周辺バス(2149)を介して取り付けることもできる。一例では、スクリーン(2110)を、グラフィックスアダプタ(2150)に接続することができる。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(2141)、GPU(2142)、FPGA(2143)、およびアクセラレータ(2144)は、組み合わせて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードを、ROM(2145)またはRAM(2146)に記憶することができる。移行データをRAM(2146)に記憶することもでき、永続データを、例えば、内部大容量ストレージ(2147)に記憶することができる。メモリデバイスのいずれかに対する高速の記憶および検索は、1つまたは複数のCPU(2141)、GPU(2142)、大容量ストレージ(2147)、ROM(2145)、RAM(2146)などと密接に関連付けることができるキャッシュメモリを使用して可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実施するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
一例として、限定としてではなく、アーキテクチャを有するコンピュータシステム(2100)、具体的にはコア(2140)は、1つまたは複数の有形のコンピュータ可読媒体内に具現化されたソフトウェアを(CPU、GPU、FPGA、アクセラレータなどを含む)(1つまたは複数の)プロセッサが実行する結果として、機能を提供することができる。そのようなコンピュータ可読媒体は、上記で紹介されたユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(2147)またはROM(2145)などの非一時的な性質のコア(2140)の特定のストレージに関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(2140)によって実行することができる。コンピュータ可読媒体は、特定のニーズに応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(2140)、および具体的にはそのうちの(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(2146)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、またはソフトウェアと一緒に動作することができる、回路(例えば、アクセラレータ(2144))内に配線された、またはさもなければ具現化されたロジックの結果として、機能を提供することができる。必要に応じて、ソフトウェアへの参照はロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:補足拡張情報
VUI:ビデオユーザビリティ情報
GOP:ピクチャグループ
TU:変換ユニット
PU:予測ユニット
CTU:コーディングツリーユニット
CTB:コーディングツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号対雑音比
CPU:中央処理装置
GPU:グラフィックス処理装置
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み出し専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブルロジックデバイス
LAN:ローカルエリアネットワーク
GSM:グローバル移動体通信システム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
本開示はいくつかの例示的な実施形態を記載しているが、本開示の範囲内に入る変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。