I. ビデオ・コーディング・エンコーダ及びデコーダ
図2は、本開示の一実施形態による通信システム(200)の簡略化されたブロック図を示す。通信システム(200)は、例えばネットワーク(250)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(200)は、ネットワーク(250)を介して相互接続された第1ペアの端末デバイス(210)及び(220)を含む。図2の例では、第1ペアの端末デバイス(210)及び(220)は、データの一方向送信を行う。例えば、端末デバイス(210)は、ネットワーク(250)を介する他の端末デバイス(220)への伝送のために、ビデオ・データ(例えば、端末デバイス(210)によって捕捉されたビデオ・ピクチャのストリーム)をコーディングすることができる。符号化されたビデオ・データは、1つ以上のコーディングされたビデオ・ビットストリームの形態で送信することができる。端末デバイス(220)は、コーディングされたビデオ・データをネットワーク(250)から受信し、コーディングされたビデオ・データを復号化して、ビデオ・ピクチャを復元し、復元されたビデオ・データに従ってビデオ・ピクチャを表示することができる。一方向性データ伝送は、媒体サービング・アプリケーション等において一般的なものであってもよい。
別の例では、通信システム(200)は、例えば、ビデオ・カンファレンス中に発生する可能性があるコーディングされたビデオ・データの双方向伝送を行う第2ペアの端末デバイス(230)及び(240)を含む。データの双方向伝送に関し、例えば、端末デバイス(230)及び(240)の各端末デバイスは、ネットワーク(250)を介して端末デバイス(230)及び(240)の他方の端末デバイスへ伝送するために、ビデオ・データ(例えば、端末デバイスによって捕捉されるビデオ・ピクチャのストリーム)をコーディングすることができる。端末デバイス(230)及び(240)の各端末デバイスもまた、端末デバイス(230)及び(240)の他方の端末デバイスによって送信されたコーディングされたビデオ・データを受信することが可能であり、コーディングされたビデオ・データを復号化してビデオ・ピクチャを復元することが可能であり、復元されたビデオ・データに従って、アクセス可能なディスプレイ・デバイスでビデオ・ピクチャを表示することが可能である。
図2の例では、端末デバイス(210)、(220)、(230)、(240)は、サーバー、パーソナル・コンピュータ、スマートフォンとして示されているが、本開示の原理はそのように限定されない。本開示の実施形態は、ラップトップ・コンピュータ、タブレット・コンピュータ、メディア・プレーヤ、及び/又は専用のビデオ・カンファレンス装置のアプリケーションを見出している。ネットワーク(250)は、例えば有線(配線された)及び/又は無線通信ネットワークを含む、コーディングされたビデオ・データを端末デバイス(210)、(220)、(230)、及び(240)の間で運ぶネットワークを幾つでも表現してよい。通信ネットワーク(250)は、回線交換及び/又はパケット交換型のチャネルでデータを交換することができる。代表的なネットワークは、テレコミュニケーション・ネットワーク、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、及び/又はインターネットを含む。本開示の目的に関し、ネットワーク(250)のアーキテクチャ及びトポロジーは、以下において説明されない限り、本開示の動作にとって重要ではない可能性がある。
図3は、開示される対象事項の適用例として、ストリーミング環境におけるビデオ・エンコーダ及びビデオ・デコーダの配置を示す。開示される対象事項は、例えば、ビデオ・カンファレンス、デジタルTV、圧縮されたビデオのデジタル・メディア(CD、DVD、メモリ・スティック等を含む)への記憶などを含む、他のビデオの利用が可能なアプリケーションにも等しく適用することが可能である。
ストリーミング・システムは、ビデオ・ソース(301)、例えばデジタル・カメラを含むことが可能であり、例えば非圧縮のビデオ・ピクチャ(302)のストリームを生成することが可能なキャプチャ・サブシステム(313)を含んでもよい。一例では、ビデオ・ピクチャのストリーム(302)は、デジタル・カメラによって撮影されるサンプルを含む。符号化されたビデオ・データ(304)(又はコーディングされたビデオ・ビットストリーム)と比較して、より多くのデータ量を強調するために太い線として描かれているビデオ・ピクチャのストリーム(302)は、ビデオ・ソース(301)に結合されたビデオ・エンコーダ(303)を含む電子デバイス(320)によって処理されることが可能である。ビデオ・エンコーダ(303)は、ハードウェア、ソフトウェア、又はそれらの組み合わせを含み、以下で詳細に説明されるような開示される対象事項の態様を動作可能にする又は実現することが可能である。ビデオ・ピクチャ(302)のストリームと比較して、より少ないデータ量を強調するために細い線として描かれている符号化されたビデオ・データ(304)(又は符号化されたビデオ・ビットストリーム(304))は、将来の使用のためにストリーミング・サーバー(305)に記憶されることが可能である。図3のクライアント・サブシステム(306)及び(308)のような1つ以上のストリーミング・クライアント・サブシステムは、ストリーミング・サーバー(305)にアクセスして、符号化されたビデオ・データ(304)のコピー(307)及び(309)を取り出すことができる。クライアント・サブシステム(306)は、例えば電子デバイス(330)内にビデオ・デコーダ(310)を含むことができる。ビデオ・デコーダ(310)は、符号化されたビデオ・データの到来するコピー(307)を復号化し、ディスプレイ(312)(例えばディスプレイ・スクリーン)又は他のレンダリング・デバイス(不図示)でレンダリングすることができるビデオ・ピクチャの出力ストリーム(311)を生成する。幾つかのストリーミング・システムでは、符号化されたビデオ・データ(304)、(307)、及び(309)(例えば、ビデオ・ビットストリーム)は、特定のビデオ・コーディング/圧縮規格に従って符号化することができる。これらの規格の例は、ITU-T勧告H.265を含む。一例において、開発中のビデオ・コーディング規格は、多用途ビデオ・コーディング(VVC)として非公式に知られている。開示される対象事項はVVCの状況で使用されてもよい。
電子デバイス(320)及び(330)は、他のコンポーネント(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(320)は、ビデオ・デコーダ(不図示)を含むことが可能であり、電子デバイス(330)は、ビデオ・エンコーダ(不図示)も含むことも可能である。
図4は本開示の一実施形態によるビデオ・デコーダ(410)のブロック図を示す。ビデオ・デコーダ(410)は、電子デバイス(430)に含まれることが可能である。電子デバイス(430)は、受信機(431)(例えば、受信回路)を含むことが可能である。ビデオ・デコーダ(410)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用することができる。
受信機(431)は、ビデオ・デコーダ(410)によって復号化されるべき1つ以上のコーディングされたビデオ・シーケンスを受信することが可能であり;同じ又は別の実施形態において、各々のコーディングされたビデオ・シーケンスの復号化が、他のコーディングされたビデオ・シーケンスから独立している場合には、一度に1つのコーディングされたビデオ・シーケンスを受信することが可能である。コーディングされたビデオ・シーケンスは、チャネル(401)から受信することが可能であり、このチャネルは、符号化されたビデオ・データを記憶するストレージ・デバイスへのハードウェア/ソフトウェア・リンクであってもよい。受信機(431)は、符号化されたビデオ・データを、他のデータ、例えばコーディングされたオーディオ・データ及び/又は補助的なデータ・ストリームとともに受信することが可能であり、これらのデータは、それぞれのエンティティ(不図示)を使用して転送されることが可能である。受信機(431)は、コーディングされたビデオ・シーケンスを他のデータから分離することができる。ネットワーク・ジッタに対処するために、バッファ・メモリ(415)は、受信機(431)とエントロピー・デコーダ/パーサー(420)(以後「パーサー(420)」と言及する)との間に結合されてもよい。特定のアプリケーションでは、バッファ・メモリ(415)はビデオ・デコーダ(410)の一部である。他の場合において、それはビデオ・デコーダ(410)の外側にある可能性がある(不図示)。更に別の例では、例えばネットワーク・ジッタに対処するために、ビデオ・デコーダ(410)の外側にバッファ・メモリ(不図示)が、更には、例えば再生タイミングを取り扱うためにビデオ・デコーダ(410)の内側に別のバッファ・メモリ(415)が、存在することが可能である。受信機(431)が、十分な帯域幅及び制御可能性を有するストア/フォワード・デバイスから、又は同期ネットワークから、データを受信している場合、バッファ・メモリ(415)は不要である可能性があるか、又は小さくすることが可能である。インターネットのようなベスト・エフォート・パケット・ネットワークでの使用のために、バッファ・メモリ(415)が必要とされるかもしれず、それは比較的大きい可能性があり、有利なことに適応的なサイズであるとすることが可能であり、ビデオ・デコーダ(410)の外側のオペレーティング・システム又は類似の要素(不図示)において少なくとも部分的に実装されてもよい。
ビデオ・デコーダ(410)は、コーディングされたビデオ・シーケンスからシンボル(421)を再構成するためにパーサー(420)を含むことができる。これらのシンボルのカテゴリは、ビデオ・デコーダ(410)の動作を管理するために使用される情報、及び潜在的には、図4に示されているように、電子デバイス(430)の不可欠な部分ではないが電子デバイス(430)に結合されることが可能なレンダリング・デバイス(412)(例えば、ディスプレイ・スクリーン)のようなレンダリング・デバイスを制御するための情報を含む。レンダリング・デバイスの制御情報は、サプルメンタル・エンハンスメント情報(SEIメッセージ)又はビデオ・ユーザビリティ情報(VUI)パラメータ・セット・フラグメント(不図示)の形態におけるものであってもよい。パーサー(420)は、受信されるコーディングされたビデオ・シーケンスを解析/エントロピー復号化することができる。コーディングされるビデオ・シーケンスのコーディングは、ビデオ・コーディング技術又は規格に従うことが可能であり、可変長コーディング、ハフマン・コーディング、コンテキストの影響を伴う又は伴わない算術コーディング等を含む種々の原理に従うことが可能である。パーサー(420)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオ・デコーダ内のピクセルのサブグループの少なくとも1つに対するサブグループ・パラメータのセットを、コーディングされたビデオ・シーケンスから抽出することができる。サブグループは、グループ・オブ・ピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディング・ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含むことが可能である。パーサー(420)はまた、変換係数、量子化パラメータ値、動きベクトル等のコーディングされたビデオ・シーケンス情報から抽出することも可能である。
パーサー(420)は、シンボル(421)を生成するために、バッファ・メモリ(415)から受信したビデオ・シーケンスに対してエントロピー復号化/解析処理を実行することが可能である。
シンボル(421)の再構成は、コーディングされたビデオ・ピクチャ又はその部分のタイプ(インター及びイントラ・ピクチャ、インター及びイントラ・ブロック)及び他の要因に応じて、複数の異なるユニットを含むことが可能である。どのユニットがどのように包含されるかは、コーディングされたビデオ・シーケンスからパーサー(420)によって解析されたサブグループ制御情報によって制御されることが可能である。パーサー(420)と以下の複数ユニットとの間のこのようなサブグループ制御情報の流れは、明確性のために描かれていない。
ビデオ・デコーダ(410)は、既に述べた機能ブロックを超えて更に、以下に説明するような複数の機能ユニットに概念的に細分されることが可能である。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることが可能である。しかしながら、開示される対象事項を説明する目的に関し、以下の機能ユニットへの概念的な細分は適切なことである。
第1ユニットは、スケーラ/逆変換ユニット(451)である。スケーラ/逆変換ユニット(451)は、量子化された変換係数だけでなく制御情報(使用する変換、ブロック・サイズ、量子化因子、量子化スケーリング行列などを含む)も、パーサー(420)からシンボル(421)として受信する。スケーラ/逆変換ユニット(451)は、アグリゲータ(455)に入力されることが可能なサンプル値を含むブロックを出力することが可能である。
場合によっては、スケーラ/逆変換(451)の出力サンプルは、イントラ・コーディングされたブロック:即ち、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロックに関連する可能性がある。このような予測情報は、イントラ・ピクチャ予測ユニット(452)によって提供することが可能である。場合によっては、イントラ・ピクチャ予測ユニット(452)は、現在のピクチャバッファ(458)から取り出された既に再構成された周囲の情報を使用して、再構成中のブロックの同じサイズ及び形状のブロックを生成する。現在のピクチャ・バッファ(458)は、例えば、部分的に再構成された現在のピクチャ及び/又は完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(455)は、場合によっては、サンプル毎に、イントラ予測ユニット(452)が生成した予測情報を、スケーラ/逆変換ユニット(451)によって提供されるような出力サンプル情報に加える。
それ以外の場合には、スケーラ/逆変換ユニット(451)の出力サンプルは、インター・コーディングされた動き補償される可能性のあるブロックに関連する可能性がある。このような場合において、動き補償予測ユニット(453)は、予測に使用されるサンプルを取り出すために、参照ピクチャ・メモリ(457)にアクセスすることが可能である。ブロックに関連するシンボル(421)に従って、取り出されたサンプルを動き補償した後に、これらのサンプルは、アグリゲータ(455)によって、スケーラ/逆変換ユニット(451)の出力に加えられ(この場合は、残差サンプル又は残差信号と呼ばれる)、出力サンプル情報を生成する。動き補償予測ユニット(453)が予測サンプルをフェッチする元である参照ピクチャ・メモリ(457)内のアドレスは、例えばX、Y、及び参照ピクチャ成分を有することが可能であるシンボル(421)の形態で、動き補償予測ユニット(453)にとって利用可能な動きベクトルによって制御されることが可能である。また、動き補償は、サブ・サンプルの正確な動きベクトルが使用される場合に、参照ピクチャ・メモリ(457)から取り出されるようなサンプル値の補間、動きベクトル予測メカニズム等を含むことが可能である。
アグリゲータ(455)の出力サンプルは、ループ・フィルタ・ユニット(456)内の様々なループ・フィルタリング技術の影響を受けることが可能である。ビデオ圧縮技術は、コーディングされたビデオ・シーケンス(コーディングされたビデオ・ビットストリームとも呼ばれる)に含まれ、且つパーサー(420)からのシンボル(421)としてループ・フィルタ・ユニット(456)にとって利用可能にされるパラメータによって制御されるが、コーディングされたピクチャ又はコーディングされたビデオ・シーケンスの(復号化の順番で)以前の部分の復号化の間に取得されたメタ情報に応答することが可能であるとともに、以前に再構成されたループ・フィルタリングされたサンプル値にも応答することが可能である、ループ内フィルタ技術を含むことが可能である。
ループ・フィルタ・ユニット(456)の出力は、レンダリング・デバイス(412)に出力できるだけでなく、将来のインター・ピクチャ予測に使用するために参照ピクチャ・メモリ(457)に格納することも可能なサンプル・ストリームであるとすることが可能である。
所定のコーディングされたピクチャは、いったん完全に再構成されると、将来の予測のための参照ピクチャとして使用することが可能である。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサー(420)によって)参照ピクチャとして識別されると、現在のピクチャ・バッファ(458)は参照ピクチャ・メモリ(457)の一部となることが可能であり、新しい現在のピクチャ・バッファは、以後のコーディングされたピクチャの再構成を開始する前に、再割り当てされることが可能である。
ビデオ・デコーダ(410)は、ITU-T Rec.H.265のような規格における所定のビデオ圧縮技術に従って復号化動作を実行することが可能である。コーディングされたビデオ・シーケンスは、コーディングされたビデオ・シーケンスが、ビデオ圧縮技術又は規格のシンタックス、及びビデオ圧縮技術又は規格で文書化されているようなプロファイルの両方に従うという意味で、使用されているビデオ圧縮技術又は規格によって指定されたシンタックスに準拠することが可能である。具体的には、プロファイルは、特定のツールを、そのプロファイルの下で使用できる唯一のツールとして、ビデオ圧縮技術又は規格で使用可能なすべてのツールから選択することが可能である。また、コンプライアンスのために必要なことは、コーディングされたビデオ・シーケンスの複雑さが、ビデオ圧縮技術又は規格のレベルによって定義される範囲内にあることである。場合によっては、そのレベルは、最大ピクチャ・サイズ、最大フレーム・レート、最大再構成サンプル・レート(例えば、毎秒当たりのメガサンプルで測定される)、最大参照ピクチャ・サイズ等を制限する。レベルによって設定される限界は、場合によっては、コーディングされたビデオ・シーケンスでシグナリングされるHRDバッファ管理のための仮想リファレンス・デコーダ(HRD)仕様及びメタデータによって更に制限される可能性がある。
一実施形態では、受信機(431)は、符号化されたビデオとともに追加的(冗長的)なデータを受信する可能性がある。追加的なデータは、コーディングされたビデオ・シーケンスの一部として含まれる可能性がある。追加的なデータは、データを適切に復号化するため、及び/又は元のビデオ・データをより正確に再構成するために、ビデオ・デコーダ(410)によって使用されてもよい。追加的なデータは、例えば、時間、空間、又は信号雑音比(SNR)エンハンスメント・レイヤ、冗長スライス、冗長ピクチャ、前方誤り訂正コード等の形態におけるものとすることが可能であるい。
図5は、本開示の一実施形態によるビデオ・エンコーダ(503)のブロック図を示す。ビデオ・エンコーダ(503)は、電子デバイス(520)に含まれる。電子デバイス(520)は、送信機(540)(例えば、送信回路)を含む。ビデオ・エンコーダ(503)は、図3の例におけるビデオ・エンコーダ(303)の代わりに使用することが可能である。
ビデオ・エンコーダ(503)は、ビデオ・エンコーダ(503)によってコーディングされるべきビデオ画像を捕捉することが可能なビデオ・ソース(501)(図5の例では電子デバイス(520)の一部ではない)から、ビデオ・サンプルを受信することが可能である。別の例では、ビデオ・ソース(501)は、電子デバイス(520)の一部である。
ビデオ・ソース(501)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 YCrCB、RGB、...)、及び任意の適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)であるとすることが可能なデジタル・ビデオ・サンプル・ストリームの形態で、ビデオ・エンコーダ(503)によってコーディングされるソース・ビデオ・シーケンスを提供することが可能である。メディア・サービング・システムにおいて、ビデオ・ソース(501)は、事前に準備されたビデオを記憶するストレージ・デバイスであってもよい。ビデオ・カンファレンス・システムでは、ビデオ・ソース(501)は、ローカルな画像情報をビデオ・シーケンスとして捕捉するカメラであってもよい。ビデオ・データは、シーケンスで見た場合に動きを伝える複数の個々のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間アレイとして組織されることが可能であり、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことが可能である。当業者は、ピクセルとサンプルとの間の関係を容易に理解することが可能である。以下の説明は、サンプルに焦点を当てている。
一実施形態によれば、ビデオ・エンコーダ(503)は、リアルタイムに、又はアプリケーションによって要求される他の任意の時間制約の下で、ソース・ビデオ・シーケンスのピクチャを、コーディングされたビデオ・シーケンス(543)にコーディングして圧縮することが可能である。適切なコーディング速度を強制することは、コントローラ(550)の1つの機能である。幾つかの実施形態において、コントローラ(550)は、以下で説明されるように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。その結合は明確性のために描かれていない。コントローラ(550)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャ・スキップ、量子化器、レート歪最適化技術のラムダ値、...)、ピクチャ・サイズ、グループ・オブ・ピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことが可能である。コントローラ(550)は、特定のシステム設計のために最適化されたビデオ・エンコーダ(503)に関連する他の適切な機能を有するように構成することが可能である。
一部の実施形態では、ビデオ・エンコーダ(503)は、コーディング・ループで動作するように構成される。極端に単純化された説明として、一例において、コーディング・ループは、ソース・コーダ(530)(例えば、コーディングされるべき入力ピクチャ及び参照ピクチャに基づいて、シンボル・ストリームのようなシンボルを生成する責任がある)と、ビデオ・エンコーダ(503)に組み込まれた(ローカル)デコーダ(533)とを含むことが可能である。デコーダ(533)は、(リモート)デコーダが生成するのと同様な方法で、サンプル・データを生成するためにシンボルを再構成する(シンボルとコーディングされたビデオ・ビットストリームとの間の任意の圧縮は、開示される対象事項で考慮されるビデオ圧縮技術ではロスレスであるからである)。再構成されたサンプル・ストリーム(サンプル・データ)は、参照ピクチャ・メモリ(534)に入力される。シンボル・ストリームの復号化は、デコーダの位置(ローカル又はリモート)に依存しないビット・イグザクト(bit-exact)な結果をもたらすので、参照ピクチャ・メモリ(534)中の内容もまた、ローカル・エンコーダとリモート・エンコーダとの間でビット・イグザクトである。言い換えると、エンコーダの予測部は、デコーダが復号化中に予測を使用する場合に「見る(see)」ものと厳密に同じサンプル値を、参照ピクチャ・サンプルとして「見る」。参照ピクチャ同期のこの基本原理(及び、例えばチャネル・エラーに起因して同期性が維持できない場合には、結果としてドリフトが生じる)は、幾つかの関連技術においても同様に使用される。
「ローカル」デコーダ(533)の動作は、図4に関連して上記で詳細に既に説明されているビデオ・デコーダ(410)のような「リモート」デコーダのものと同じであるとすることが可能である。しかしながら、図4も簡単に参照すると、シンボルが利用可能であり、且つエントロピー・コーダー(545)及びパーサー(420)によるシンボルのコーディングされたビデオ・シーケンスへの符号化/復号化はロスレスであるとすることが可能であるので、バッファ・メモリ(415)及びパーサー(420)を含むビデオ・デコーダ(410)のエントロピー復号化部は、ローカル・デコーダ(533)では完全には実現されない可能性がある。
この時点で行うことが可能な観察は、デコーダに存在する解析/エントロピー復号化以外のデコーダ技術は、必然的に、実質的に同一の機能形態で、対応するエンコーダにも存在する必要があるということである。この理由のために、開示される対象事項はデコーダの動作に焦点を当てている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるので、省略することが可能である。特定のエリアにおいてのみ、より詳細な説明が必要であり、以下で与えられる。
動作中に、ソース・コーダ(530)は、幾つかの例において、「参照ピクチャ」として指定されたビデオ・シーケンスからの1つ以上の以前にコーディングされたピクチャを参照して、入力ピクチャを予測的に符号化する、動き補償された予測符号化を実行することが可能である。このようにして、コーディング・エンジン(532)は、入力ピクチャのピクセル・ブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセル・ブロックとの間の差分をコーディングする。
ローカル・ビデオ・デコーダ(533)は、ソース・コーダー(530)によって生成されたシンボルに基づいて、参照ピクチャとして指定されることが可能なピクチャのコーディングされたビデオ・データを復号化することが可能である。コーディング・エンジン(532)の動作は、有利なことに、非ロスレス・プロセスであってもよい。コーディングされたビデオ・データがビデオ・デコーダ(図5には示されていない)で復号化される場合、再構成されたビデオ・シーケンスは、典型的には、幾らかのエラーを伴うソース・ビデオ・シーケンスのレプリカである可能性がある。ローカル・ビデオ・デコーダ(533)は、リファレンス・ピクチャにおいてビデオ・デコーダによって実行されることが可能な復号化プロセスを繰り返し、再構成された参照ピクチャが、参照ピクチャ・キャッシュ(534)に記憶されることを引き起こすことが可能である。このように、ビデオ・エンコーダ(503)は、遠方端のビデオ・デコーダによって得られる再構成された参照ピクチャとして、共通の内容を有する再構成された参照ピクチャのコピーを、局所的に記憶することが可能である(伝送エラーはないものとする)。
予測器(535)は、コーディング・エンジン(532)のために予測検索を行うことができる。即ち、コーディングされるべき新しいピクチャについて、予測器(535)は、サンプル・データ(候補の参照ピクセル・ブロックとして)又は所定のメタデータ(参照ピクチャ動きベクトル、ブロック形状など)について、参照ピクチャ・メモリ(534)を検索することができ、これらは、新しいピクチャについての適切な予測参照として役立つ可能性がある。予測器(535)は、適切な予測参照を見出すために、サンプル・ブロック-ピクセル・ブロック・ベースで動作することが可能である。場合によっては、予測器(535)によって得られた探索結果によって決定されるように、入力ピクチャは、参照ピクチャ・メモリ(534)に記憶された複数の参照ピクチャから引き出される予測参照を有する可能性がある。
コントローラ(550)は、例えば、ビデオ・データを符号化するために使用されるパラメータ及びサブグループ・パラメータの設定を含む、ソース・コーダ(530)のコーディング動作を管理することが可能である。
前述の機能ユニットのすべての出力は、エントロピー・コーダー(545)におけるエントロピー符号化を受けることが可能である。エントロピー・コーダー(545)は、ハフマン・コーディング、可変長コーディング、算術コーディング等の技術に従って、シンボルをロスレス圧縮することによって、種々の機能ユニットによって生成されたシンボルを、コーディングされたビデオ・シーケンスに変換する。
送信機(540)は、エントロピー・コーダー(545)によって作成されるようなコーディングされたビデオ・シーケンスをバッファリングして、通信チャネル(560)を介する送信の準備を行うことが可能であり、通信チャネル(560)は、符号化されたビデオ・データを記憶する記憶デバイスへのハードウェア/ソフトウェア・リンクであってもよい。送信機(540)は、ビデオ・コーダ(503)からのコーディングされたビデオ・データを、例えばコーディングされたオーディオ・データ及び/又は補助的なデータ・ストリーム(ソースは不図示)のような送信されるべき他のデータとマージすることが可能である。
コントローラ(550)は、ビデオ・エンコーダ(503)の動作を管理することができる。コーディングの間に、コントローラ(550)は、コーディングされたピクチャの各々に、特定のコーディングされたピクチャ・タイプを割り当てることが可能であり、これは、各ピクチャに適用されることが可能なコーディング技術に影響を及ぼす可能性がある。例えば、ピクチャは、しばしば、次のピクチャ・タイプの1つとして割り当てられてもよい。
イントラ・ピクチャ(Iピクチャ)は、シーケンス内の如何なる他のピクチャも予測のソースとして使用せずに、符号化及び復号化されることが可能なものである。幾つかのビデオ・コーデックは、例えば、独立デコーダ・リフレッシュ(“IDR”)ピクチャを含む異なるタイプのイントラ・ピクチャを許容する。当業者は、Iピクチャのこれらの変形例、並びにそれら各自の用途及び特徴を認識している。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、高々1つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いて符号化及び復号化されることが可能なものである。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、高々2つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いて符号化及び復号化されることが可能なものである。同様に、複数の予測ピクチャは、1つのブロックの再構成のために、2つより多い参照ピクチャ及び関連するメタデータを使用することが可能である。
ソース・ピクチャは、通常、複数のサンプル・ブロック(例えば、4×4、8×8、4×8、又は16×16サンプルのブロック)に空間的に細分され、ブロック毎にコーディングされることが可能である。ブロックは、ブロックそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされることが可能である。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよいし、又は、それらは同じピクチャの既にコーディングされたブロックを参照して予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャのピクセル・ブロックは、以前にコーディングされた1つの参照ピクチャを参照して、空間的な予測又は時間的な予測により予測的に符号化されてもよい。Bピクチャのブロックは、1つ又は2つの以前にコーディングされた参照ピクチャを参照して、空間的な予測又は時間的な予測により予測的に符号化されてもよい。
ビデオ・エンコーダ(503)は、ITU-T Rec.H.265のような所定のビデオ・コーディング技術又は規格に従ってコーディング動作を行うことが可能である。この動作において、ビデオ・エンコーダ(503)は、入力ビデオ・シーケンスにおける時間的及び空間的な冗長性を活用する予測コーディング動作を含む種々の圧縮動作を実行することが可能である。コーディングされたビデオ・データは、従って、使用されているビデオ・コーディング技術又は規格によって指定されたシンタックスに準拠することが可能である。
一実施形態では、送信機(540)は、符号化されたビデオとともに追加データを送信することが可能である。ソース・コーダ(530)は、そのようなデータを、コーディングされたビデオ・シーケンスの一部として含むことが可能である。追加データは、時間的/空間的/SNR強調レイヤ、他の形式の冗長データ(冗長ピクチャ及びスライス、SEIメッセージ、VUIパラメータ・セット・フラグメント等)を含む可能性がある。
ビデオは、時間シーケンスにおける複数のソース・ピクチャ(ビデオ・ピクチャ)として捕捉することが可能である。イントラ・ピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャにおける空間相関を利用しており、インター・ピクチャ予測は、ピクチャ間の(時間的又は他の)相関を利用する。一例では、現在のピクチャと呼ばれる符号化/復号化の下にある特定のピクチャは、ブロックに分割される。現在のピクチャ内のブロックが、ビデオにおいて以前にコーディングされ且つ依然としてバッファリングされている参照ピクチャの中の参照ブロックに類似する場合、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることが可能である。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することが可能である。
一部の実施形態では、インター・ピクチャ予測に双-予測技術を用いることが可能である。双-予測技術によれば、ビデオ内で現在のピクチャに対して復号化順序で両方とも先行している(ただし、表示順序ではそれぞれ過去及び将来におけるものである可能性がある)第1参照ピクチャ及び第2参照ピクチャのような2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1参照ピクチャ内の第1参照ブロックを指す第1動きベクトルと、第2参照ピクチャ内の第2参照ブロックを指す第2動きベクトルとによってコーディングされることが可能である。ブロックは、第1参照ブロックと第2参照ブロックとの組み合わせによって予測されることが可能である。
更に、コーディング効率を改善するために、インター・ピクチャ予測にマージ・モード技術を用いることが可能である。
本開示の幾つかの実施形態によれば、インター・ピクチャ予測及びイントラ・ピクチャ予測のような予測は、ブロックの単位で実行される。例えば、HEVC規格によれば、ビデオ・ピクチャのシーケンス中のピクチャは、圧縮のためにコーディング・ツリー・ユニットにパーティショニングされ、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセルのような同じサイズを有する。一般に、CTUは、1つのルマCTBと2つのクロマCTBである3つのコーディング・ツリー・ブロック(CTB)を含む。各CTUは、1つ又は複数のコーディング・ユニット(CU)に再帰的に4分木分割されることが可能である。例えば、64×64ピクセルのCTUは、64×64ピクセルの1個のCU、32×32ピクセルの4個のCU、又は16×16ピクセルの16個のCUに分割されることが可能である。一例では、各CUは、インター予測タイプ又はイントラ予測タイプのような、CUの予測タイプを決定するために分析される。CUは、時間的及び/又は空間的な予測可能性に依存して1つ以上の予測ユニット(PU)に分割される。一般に、各PUはルマ予測ブロック(PB)と2つのクロマPBを含む。一実施形態では、コーディング(符号化/復号化)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例としてルマ予測ブロックを用いると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセル等のような、ピクセルに対する値(例えば、ルマ値)のマトリクスを含む。
図6は本開示の別の実施形態によるビデオ・エンコーダ(603)の図を示す。ビデオ・エンコーダ(603)は、ビデオ・ピクチャのシーケンス内の現在のビデオ・ピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コーディングされたビデオ・シーケンスの一部であるコーディングされたピクチャに符号化するように構成される。一例では、ビデオ・エンコーダ(603)は、図3の例のビデオ・エンコーダ(303)の代わりに使用される。
HEVCの例では、ビデオ・エンコーダ(603)は、8×8サンプルの予測ブロック等のような処理ブロックのサンプル値のマトリクスを受信する。ビデオ・エンコーダ(603)は、イントラ・モード、インター・モード、又は双-予測モードを使用して、例えばレート歪最適化を使用して、処理ブロックが最良にコーディングされるかどうかを決定する。処理ブロックがイントラ・モードでコーディングされるべき場合、ビデオ・エンコーダ(603)は、処理ブロックを、コーディングされたピクチャに符号化するためにイントラ予測技術を使用することが可能であり;処理ブロックがインター・モード又は双-予測モードで符号化されるべき場合、ビデオ・エンコーダ(603)は、処理ブロックを、コーディングされたピクチャに符号化するために、それぞれインター予測技術又は双-予測技術を使用することが可能である。特定のビデオ・コーディング技術では、マージ・モードがインター予測ピクチャ・サブモードである可能性があり、その場合、動きベクトルは、予測器外部のコーディングされた動きベクトル成分の恩恵なしに、1つ以上の動きベクトル予測子から導出される。特定の他のビデオ・コーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在する可能性がある。一例では、ビデオ・エンコーダ(603)は、処理ブロックのモードを決定するためにモード決定モジュール(不図示)のような他のコンポーネントを含む。
図6の例では、ビデオ・エンコーダ(603)は、インター・エンコーダ(630)、イントラ・エンコーダ(622)、残差計算器(623)、スイッチ(626)、残差エンコーダ(624)、汎用コントローラ(621)、及びエントロピー・エンコーダ(625)を、図6に示されるように共に結合して含んでいる。
インター・エンコーダ(630)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを、参照ピクチャ内の1つ以上の参照ブロック(例えば、以前のピクチャのブロック及び以後のピクチャ内のブロック)と比較し、インター予測情報(例えば、符号化技術による冗長情報の記述、動きベクトル、マージ・モード情報)を生成し、任意の適切な技術を用いてインター予測情報に基づいて、インター予測結果(例えば、予測ブロック)を計算するように構成される。幾つかの例では、参照ピクチャは、符号化されたビデオ情報に基づいて復号化された復号化済み参照ピクチャである。
イントラ・エンコーダ(622)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によってはブロックを、同じピクチャ内で既にコーディングされたブロックと比較し、変換後に量子化された係数を生成し、場合によってはイントラ予測情報(例えば、1つ以上のイントラ符号化技術に従ったイントラ予測方向情報)も生成するように構成される。一例では、イントラ・エンコーダ(622)はまた、同じピクチャ内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
ジェネラル・コントローラ(621)は、一般的な制御データを決定し、一般的な制御データに基づいてビデオ・エンコーダ(603)の他のコンポーネントを制御するように構成される。一例では、ジェネラル・コントローラ(621)は、ブロックのモードを決定し、そのモードに基づいてスイッチ(626)に制御信号を提供する。例えば、モードがイントラ・モードである場合、ジェネラル・コントローラ(621)は、スイッチ(626)を制御して、残差計算器(623)による使用のためにイントラ・モード結果を選択し、且つエントロピー・エンコーダ(625)を制御して、イントラ予測情報を選択し、イントラ予測情報をビットストリームに含める;モードがインター・モードである場合、ジェネラル・コントローラ(621)は、スイッチ(626)を制御して、残差計算器(623)による使用のためにインター予測結果を選択し、且つエントロピー・エンコーダ(625)を制御して、インター予測情報を選択し、インター予測情報をビットストリームに含める。
残差計算器(623)は、受信ブロックと、イントラ・エンコーダ(622)又はインター・エンコーダ(630)から選択された予測結果との間の差分(残差データ)を計算するように構成される。残差エンコーダ(624)は、残差データを符号化して変換係数を生成するために、残差データに基づいて動作するように構成される。一例では、残差エンコーダ(624)は、残差データを空間ドメインから周波数ドメインへ変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化された変換係数を得るために量子化処理にかけられる。様々な実施形態では、ビデオ・エンコーダ(603)はまた、残差デコーダ(628)も含む。残差デコーダ(628)は、逆変換を実行し、復号化された残差データを生成するように構成される。復号化された残差データは、イントラ・エンコーダ(622)及びインター・エンコーダ(630)によって適切に使用することが可能である。例えば、インター・エンコーダ(630)は、復号化された残差データ及びインター予測情報に基づいて、復号化されたブロックを生成することが可能であり、イントラ・エンコーダ(622)は、復号化された残差データ及びイントラ予測情報に基づいて、復号化されたブロックを生成することが可能である。復号化されたブロックは、復号化されたピクチャを生成するために適切に処理され、復号化されたピクチャは、メモリ回路(不図示)内でバッファリングされ、幾つかの例では参照ピクチャとして使用することが可能である。
エントロピー・エンコーダ(625)は、符号化されたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピー・エンコーダ(625)は、HEVC規格のような適切な規格に従って種々の情報を含むように構成される。一例では、エントロピー・エンコーダ(625)は、一般的な制御データ、選択された予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報、及びその他の適切な情報をビットストリームに含めるように構成される。開示される対象事項に従って、インター・モード又は双-予測モードの何れかのマージ・サブモードにおけるブロックをコーディングする場合に、残差情報は存在しないことに留意されたい。
図7は、本開示の別の実施形態によるビデオ・デコーダ(710)の図を示す。ビデオ・デコーダ(710)は、コーディングされたビデオ・シーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャを復号化して、再構成されたピクチャを生成するように構成される。一実施形態では、ビデオ・デコーダ(710)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用される。
図7の例では、ビデオ・デコーダ(710)は、エントロピー・デコーダ(771)、インター・デコーダ(780)、残差デコーダ(773)、再構成モジュール(774)、及びイントラ・デコーダ(772)を、図7に示されるように共に結合して含んでいる。
エントロピー・デコーダ(771)は、コーディングされたピクチャを作り上げるシンタックス要素を表す特定のシンボルを、コーディングされたピクチャから再構成するように構成されることが可能である。このようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラ・モード、インター・モード、双-予測モード、マージ・サブモード又は別のサブモードにおける後者の2つ)、イントラ・デコーダ(772)又はインター・デコーダ(780)それぞれによって予測のために使用される特定のサンプル又はメタデータを識別することが可能な予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報(例えば、量子化された変換係数の形式におけるもの)等を含むことが可能である。一例において、予測モードがインター又は双-予測モードである場合には、インター予測情報がインター・デコーダ(780)に提供され;予測タイプがイントラ予測タイプである場合には、イントラ予測情報がイントラ・デコーダ(772)に提供される。残差情報は、逆量子化を施されることが可能であり、残差デコーダ(773)に提供される。
インター・デコーダ(780)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラ・デコーダ(772)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(773)は、逆量子化を実行して非-量子化変換係数を抽出し、非-量子化変換係数を処理して残差を周波数ドメインから空間ドメインへ変換するように構成される。残差デコーダ(773)はまた、特定の制御情報(量子化パラメータ(QP)を含む)を必要とする可能性があり、その情報は、エントロピー・デコーダ(771)によって提供されてもよい(これは、僅かな量の制御情報でしかない可能性があるので、データ経路は描かれていない)。
再構成モジュール(774)は、空間ドメインにおいて、残差デコーダ(773)による出力としての残差と、予測結果(場合によっては、インター又はイントラ予測モジュールによって出力されるもの)とを組み合わせて、再構成されたブロックを形成するように構成されており、再構成されたブロックは再構成されたピクチャの一部であり、再構成されたピクチャは再構成されたビデオの一部である可能性がある。デブロッキング処理などのような他の適切な処理が、視覚的な品質を改善するために実行される可能性があることに留意されたい。
なお、ビデオ・エンコーダ(303)、(503)、及び(603)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、任意の適切な技術を用いて実現することが可能である。一実施形態では、ビデオ・エンコーダ(303)、(503)、及び(603)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、1つ以上の集積回路を使用して実現することが可能である。別の実施形態では、ビデオ・エンコーダ(303)、(503)、及び(503)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実現することが可能である。
II. インター・ピクチャ予測モード
様々な実施形態において、例えばツリー構造に基づくパーティション方式を使用して、ピクチャはブロックにパーティショニングされることが可能である。次いで、結果のブロックは、イントラ予測モード、インター予測モード(例えば、マージ・モード、スキップ・モード、アドバンスト動きベクトル予測モード)等の様々な処理モードに従って処理されることが可能である。イントラ・コーディングされたブロックは、イントラ予測モードでコーディングされたブロックであるとすることが可能である。これに対して、インター・コーディングされたブロックは、インター予測モードで処理されたブロックであるとすることが可能である。
1.レギュラー・マージ・モード
現在処理されているブロック(現在のブロックと呼ばれる)がマージ・モードに従って処理される場合、現在のブロックのマージ候補リストは、空間的及び/又は一時的に隣接するブロックのセットに従って構成されることが可能である。マージ候補リスト内の動き情報候補の1つは、現在のブロックの動き情報を決定又は導出するために選択されることが可能である。どの候補が選択されるかを示すマージ・インデックスは、エンコーダからデコーダへシグナリングされることが可能である。
図8は、一実施形態によるマージ・モードによる現在のブロック及び対応するマージ候補の概略図である。この例では、マージ候補リストは、マージ・モードに従って処理されるべき現在のブロック(810)に対して構成されるべきである。A1、B1、B0、A0、B2、C0、C1と表記される隣接するブロックのセットが、マージ・モード処理のために定められる。マージ候補リストを構成するための空間候補は、現在のブロック(810)と同じピクチャ内にある空間的に隣接するブロックA1、B1、B0、A0、及びB2に従って決定することが可能である。また、マージ候補リストを構成するための時間候補は、時間的に隣接するブロックC0及びC1に従って決定することが可能であり、これらは、別のコーディングされたピクチャ内にあるブロックに対応する、現在のブロック(810)の同等位置にあるブロック(co-located block)と隣接又は重複する。一例において、時間的に隣接するブロックC1は、現在のブロック(810)の中心に近い(例えば、隣接する)位置に対応する位置に配置されることが可能である。
一部の例では、マージ候補リストは、所定の最大数のマージ候補(Cmとして表現される)を有することが可能である。マージ候補は、特定の順序に従ってマージ候補リスト内でリスト化されることが可能である。一例において、所定の順序に従って、第1数のマージ候補Caは、{A1,B1,B0,A0,B2}の順序に従って空間的に隣接するブロックから導出されることが可能であり、第2数のマージ候補Cb=Cm-Caは、{C0,C1}の順序に従って時間的に隣接するブロックから導出されることが可能である。
幾つかのシナリオでは、特定の隣接するブロックからの候補の動作情報は、利用不可能である場合がある。例えば、隣接するブロックは、現在のブロック(810)を含むスライス又はタイルの外側にあるか、又は現在のブロック(810)と同じコーディング・ツリー・ブロック(CTB)の行にない状態で、イントラ予測されることが可能である。幾つかのシナリオでは、種々の隣接ブロックからの候補の動き情報は冗長である可能性がある。幾つかの例では、冗長なマージ候補は、(例えば、プルーニング・プロセスを実行することによって)マージ候補リストから除外されることが可能である。マージ候補リスト内で利用可能なマージ候補の総数(冗長な候補は削除される)が、マージ候補の最大数Cmよりも小さい場合、1つ以上の追加的なマージ候補が追加されて(例えば、事前に設定されたルールに従って)、マージ候補リストを埋めることができる。例えば、追加的なマージ候補は、コンバインされた双-予測候補及び/又はゼロ動きベクトル候補を含むことが可能である。
マージ候補リストが構成された後に、エンコーダで評価処理が実行され、マージ候補リストからマージ候補を選択することができる。例えば、各マージ候補に対応するレート歪(RD)パフォーマンスを計算することが可能であり、最良のRDパフォーマンスを有するものを選択することが可能である。従って、選択されたマージ候補に関連するマージ・インデックスは、現在のブロック(810)について決定され、デコーダにシグナリングされることが可能である。
デコーダでは、現在のブロック(810)のマージ・インデックスを受信することができる。上述したのと同様なマージ候補リスト構築プロセスを実行して、エンコーダ側で生成されたマージ候補リストと同じマージ候補リストを生成することが可能である。マージ候補リストが構成された後に、マージ候補は、幾つかの例では更なる如何なる評価も実行せずに、受信したマージ・インデックスに基づいてマージ候補リストから選択されることが可能である。選択されたマージ候補の動き情報は、現在のブロック(810)の後続の動き補償予測に使用することが可能である。
幾つかの例では、スキップ・モードも導入される。例えば、スキップ・モードでは、現在のブロックが上述したようなマージ・モードを用いて予測され、残差情報を導入せずに、動き情報のセットを決定することが可能である。スキップ・フラグが現在のブロックに関連付けられことが可能である。現在のブロックの関連する動作情報を示すスキップ・フラグ及びマージ・インデックスは、ビデオ・デコーダにシグナリングされることが可能である。例えば、インター・ピクチャ予測スライスの中のCUの開始時に、スキップ・フラグは:CUは1つのPU(2N×2N)のみを含んでいること;マージ・モードは動き情報を導出するために使用すること;及び残差情報はビットストリーム中に存在しないこと、を意味するシグナリングを行うことが可能である。デコーダ側では、スキップ・フラグに基づいて、予測ブロックは、残差情報を追加せずに、それぞれの現在のブロックを復号化するためのマージ・インデックスに基づいて決定されることが可能である。従って、本願で開示されるマージ・モードによるビデオ・コーディングのための種々の方法は、スキップ・モードと組み合わせて利用することが可能である。
一部の実施形態では、ビットストリームでシグナリングされるマージ・フラグ又はスキップ・フラグは、現在のブロック(810)がマージ・モードに従ってコーディングされるべきかどうかを示すことが可能である。マージ・フラグがTRUEに設定されている場合、マージ・インデックスは、マージ候補リスト内のどの候補が現在のブロックの動き情報を提供するために使用されるのかを示すために、シグナリングされることが可能である。幾つかの実施形態では、最大4つの空間マージ候補(4つの空間的に隣接するブロックからのもの)及び最大1つの時間マージ候補(1つの時間的に隣接するブロックからのもの)が、マージ候補リストに追加されることが可能である。シンタックスMaxMergeCandsNumは、マージ候補リストのサイズを示すために定められることが可能である。シンタックスMaxMergeVandsNumは、ビットストリームでシグナリングされることが可能である。
2.アフィン・マージ・モード
図9は、一実施形態による現在のブロック(又はコーディング・ユニット(CU)と呼ばれる)(901)の空間的に隣接するブロック及び時間的に隣接するブロックの概略図である。図示されるように、空間的に隣接するブロックは、A0,A1,A2,B0,B1,B2,及びB3(それぞれは、902,903,907,904,905,906,及び908である)により示され、時間的に隣接するブロックは、C0(912)で示される。幾つかの例では、空間的に隣接するブロックA0,A1,A2,B0,B1,B2,及びB3と現在のブロック(901)は、同じピクチャ内にある。幾つかの例では、時間的に隣接するブロックC0は、参照ピクチャ内にあり、現在のブロック(901)の外側の位置に対応し、且つ現在のブロック(901)の右下コーナーに隣接する。
幾つかの例において、現在ブロック(901)及び/又は現在ブロックのサブ・ブロックの動きベクトルは、アフィン・モデル(例えば、6パラメータ・アフィン・モデル又は4パラメータ・アフィン・モデル)を用いて導出することが可能である。幾つかの例では、アフィン・モデルは、ブロック又はサブ・ブロックの動きベクトルを説明するための6つのパラメータ(例えば、6パラメータ・アフィン・モデル)を有する。一例では、アフィン・コーディング済みブロックの6つのパラメータは、ブロックの3つの異なる位置(例えば、図9の左上、右上、及び左下コーナーにおけるコントロール・ポイントCP0、CP1、及びCP2)における3つの動きベクトル(3つのコントロール・ポイント動きベクトル(CPMV)とも呼ばれる)によって表すことが可能である。別の例において、単純化されたアフィン・モデルは、アフィン・コーディング済みブロックの動き情報を記述するために4つのパラメータを使用し、これは、ブロックの2つの異なる位置(例えば、図9の左上及び右上コーナーのコントロール・ポイントCP0及びCP1)における2つの動きベクトル(2つのCPMVとも呼ばれる)によって表すことが可能である。
動き情報候補のリスト(アフィン・マージ候補リストとも呼ばれる)は、空間的に隣接するブロック及び/又は時間的に隣接するブロックのうちの1つ以上の動き情報に基づくアフィン・マージ・モードを用いて構成されることが可能である。幾つかの例では、アフィン・マージ・モードは、現在のブロック(901)が8サンプル以上の幅及び高さを有する場合に適用されることが可能である。アフィン・マージ・モードに従って、現在のブロック(901)のCPMVは、リストにおける動き情報候補に基づいて決定されることが可能である。幾つかの例において、動き情報候補のリストは、最大5つのCPMV候補を含むことができ、インデックスは、どのCPMV候補が現在のブロックに使用されるべきかを示すためにシグナリングされることが可能である。幾つかの実施形態では、CPMV候補は、アフィン・モデルに対するすべてのCPMVを含む。
一部の実施形態では、アフィン・マージ候補リストは、継承されたアフィン候補、構築されたアフィン候補、及びゼロMVを含む3種類のCPVM候補を有することが可能である。継承されたアフィン候補は隣接するブロックのCPMVから外挿することによって導出されることが可能である。構築されたアフィン候補は、隣接するブロックの並進MVを用いて導出することが可能である。
一例では、左隣接ブロック(A0及びA1)からの1ブロックと、上隣接ブロック(B0、B1、B2)からの1ブロックとを含む隣接するブロックの対応するアフィン動きモデルから導出される、最大2つの継承されたアフィン候補が存在する化の性がある。左からの候補については、隣接するブロックA0及びA1が順にチェックされることが可能であり、隣接するブロックA0及びA1からの最初の利用可能な継承されたアフィン候補が、左からの継承されたアフィン候補として使用される。上からの候補については、隣接するブロックB0、B1、及びB2が順にチェックされることが可能であり、隣接するブロックB0、B1、及びB2からの最初の利用可能な継承されたアフィン候補が、上からの継承されたアフィン候補として使用される。幾つかの例では、2つの継承されたアフィン候補の間でプルーニング・チェックは実行されない。
隣接するアフィン・ブロックが識別された場合、現在のブロック(901)のアフィン・マージ・リストに追加されるべき対応する継承されたアフィン候補は、隣接するアフィン・ブロックのコントロール・ポイント動きベクトルから導出されることが可能である。図9の例では、隣接するブロックA1がアフィン・モードでコーディングされている場合に、ブロックA1の左上コーナー(コントロール・ポイントCP0A1)、右上コーナー(コントロール・ポイントCP1A1)、及び左下コーナー(コントロール・ポイントCP2A1)の動きベクトルを取得することが可能である。ブロックA1が4パラメータ・アフィン・モデルを用いてコーディングされる場合、現在のブロック(901)の継承されたアフィン候補としての2つのCPMVは、コントロール・ポイントCP0A1及びコントロール・ポイントCP1A1の動きベクトルに従って計算することが可能である。ブロックA1が6パラメータ・アフィン・モデルを用いてコーディングされる場合、現在のブロック(901)の継承されたアフィン候補としての3つのCPMVは、コントロール・ポイントCP0A1、コントロール・ポイントCP1A1、及びコントロール・ポイントCP2A1の動きベクトルに従って計算することが可能である。
更に、構成されたアフィン候補は、各コントロール・ポイントの隣接する並進動き情報をコンバインすることにより導出することが可能である。コントロール・ポイントCP0,CP1,及びCP2の動き情報は、指定された空間隣接ブロックA0,A1,A2,B0,B1,B2,及びB3から導出される。
例えば、CPMVk(k=1,2,3,4)は、k番目のコントロール・ポイントの動きベクトルを表し、CPMV1はコントロール・ポイントCP0に対応し、CPMV2はコントロール・ポイントCP1に対応し、CPMV3はコントロール・ポイントCP2に対応し、CPMV4は時間隣接ブロックC0に基づく時間コントロール・ポイントに相当する。CPMV1については、隣接するブロックB2,B3,及びA2が順にチェックされることが可能であり、隣接するブロックB2,B3,及びA2からの第1の利用可能な動きベクトルがCPMV1として使用される。CPMV2については、隣接するブロックB1及びB0が順にチェックされることが可能であり、隣接するブロックB1及びB0からの第1の利用可能な動きベクトルがCPMV2として使用される。CPMV3については、隣接するブロックA1及びA0が順にチェックされることが可能であり、隣接するブロックA1及びA0からの第1の利用可能な動きベクトルがCPMV3として使用される。更に、利用可能であれば、時間的な隣接するブロックC0の動きベクトルが、CPMV4として使用することが可能である。
4つのコントロール・ポイント:CP0,CP1,CP2,及び時間的なコントロール・ポイントのCPMV1,CPMV2,CPMV3,及びCPMV4が得られた後に、アフィン・マージ候補モードは、次の順序で構成されるアフィン・マージ候補を含むように構成されることが可能である:{CPMV1,CPMV2,CPMV3},{CPMV1,CPMV2,CPMV4},{CPMV1,CPMV3,CPMV4},{CPMV2,CPMV3,CPMV4},{CPMV1,CPMV2},及び{CPMV1,CPMV3}。3つのCPMVの任意の組み合わせは、6パラメータ・アフィン・マージ候補を形成することが可能であり、2つのCPMVの任意の組み合わせは、4パラメータ・アフィン・マージ候補を形成することが可能である。幾つかの例では、動きスケーリング・プロセスを避けるために、コントロール・ポイントのグループの参照インデックスが異なる場合には、CPMVの対応する組み合わせを破棄することが可能である。
3.サブ・ブロック・ベースの時間的動きベクトル予測(SbTMVP)モード
図10Aは、一実施形態によるサブ・ブロック・ベースの時間的動きベクトル予測(SbTMVP)方法を用いて、現在のブロック(1011)の予測される動き情報を決定するために使用することが可能な空間的に隣接するブロックの概略図である。図10Aは、現在ブロック(1011)と、A0,A1,B0,及びB1(それぞれ1012,1013,1014,及び1015である)と示されるその空間的に隣接するブロックとを示す。幾つかの例において、空間的に隣接するブロックA0,A1,B0,及びB1と現在のブロック(1011)とは、同じピクチャ内にある。
図10Bは、一実施形態による非限定的な例におけるブロックA1のような選択された空間的に隣接するブロックに基づいて、SbTMVP法を使用して現在のブロック(1011)のサブ・ブロックの動き情報を決定するための概略図である。この例では、現在のブロック(1011)は現在のピクチャ(1010)内にあり、参照ブロック(1061)は、参照ピクチャ(1060)内にあり、現在のブロック(1011)と、動きベクトル(1022)によって示される参照ブロック(1061)との間の動きシフト(又は変位)に基づいて識別される。
一部の実施形態では、HEVCにおける時間的な動きベクトル予測(TMVP)と同様に、SbTMVPは、現在のピクチャ内の現在のブロックに対する参照ピクチャ内の様々な参照サブ・ブロックの動き情報を使用する。幾つかの実施態様において、TMVPによって使用される同一の参照ピクチャが、SbTVMPに対して使用することが可能である。幾つかの実施形態では、TMVPはCUレベルで動き情報を予測するが、SbTMVPはサブCUレベルで動き情報を予測する。幾つかの実施態様において、TMVPは、現在のブロックの右下コーナー又は中心に隣接する対応する位置を有する、参照ピクチャ内の同等位置のブロックからの時間的動きベクトルを使用し、SbTMVPは、現在のブロックの空間的に隣接するブロックの1つからの動きベクトルに基づいて、動きシフトを実行することによって同定することが可能な、参照ブロックからの時間的な動きベクトルを使用する。
例えば、図10Aに示すように、隣接するブロックA1,B1,B0,A0は、SbTVMPプロセスで順にチェックすることが可能である。参照ピクチャ(1060)を参照ピクチャとして使用する動きベクトルを有する第1の空間的に隣接するブロック、例えば参照ピクチャ(1060)内の参照ブロックAR1を指し示す動きベクトル(1022)を有するブロックA1が識別されると、直ちに、この動きベクトル(1022)は、動きシフトを実行するために使用することが可能である。そのような動きベクトルが、空間的に隣接するブロックA1,B1,B0,A0から利用可能でない場合、動きシフトは(0,0)に設定される。
動きシフトを決定した後、参照ブロック(1061)が、現在のブロック(1011)の位置と決定された動きシフトとに基づいて識別されることが可能である。図10Bにおいて、参照ブロック(1061)は、参照動き情報MRaないしMRpとともに16個のサブ・ブロックに更に分割されることが可能である。幾つかの例では、参照ブロック(1061)内の各サブ・ブロックに対する参照動き情報は、それぞれのサブ・ブロックの中心サンプルをカバーする最小の動きグリッドに基づいて決定されることが可能である。動き情報は、動きベクトル及び対応する参照インデックスを含むことが可能である。現在のブロック(1011)は、16個のサブ・ブロックに更に分割することが可能であり、現在のブロック(1011)内のサブ・ブロックに対する動き情報MVaないしMVpは、幾つかの例ではTMVPプロセスと同様な方法で、時間スケーリングとともに、参照動き情報MRaないしMRpから導出されることが可能である。
SbTMVPプロセスで使用されるサブ・ブロック・サイズは、固定される(又は予め決められる)又はシグナリングされることが可能である。幾つかの例において、SbTMVPプロセスで使用されるサブ・ブロック・サイズは、8×8サンプルであるとすることが可能である。幾つかの例では、SbTMVPプロセスは、固定された又はシグナリングされたサイズ、例えば8ピクセル、に等しい又はそれより大きい幅及び高さを有するブロックにのみ適用可能である。
一例では、SbTVMP候補とアフィン・マージ候補とを含むコンバインされたサブ・ブロック・ベースのマージ・リストが、サブ・ブロック・ベースのマージ・モードのシグナリングのために使用される。SbTVMPモードは、シーケンス・パラメータ・セット(SPS)フラグによってイネーブル又はディセーブルにされることが可能である。幾つかの例では、SbTMVPモードがイネーブルにされる場合に、SbTMVP候補は、サブ・ブロック・ベースのマージ候補のリストの最初のエントリとして追加され、アフィン・マージ候補が後に続く。幾つかの実施態様において、サブ・ブロック・ベースのマージ・リストの最大許容サイズは、5に設定される。しかしながら、他の実施形態では他のサイズが使用されてもよい。
幾つかの実施態様において、追加のSbTMVPマージ候補の符号化ロジックは、他のマージ候補に対するものと同じである。即ち、P又はBスライス内の各ブロックに対して、追加のレート歪チェックを行い、SbTMVP候補を使用するかどうかを決定することが可能である。
4.履歴ベースの動きベクトル予測(HMVP)モード
図11Aは、一実施形態による履歴ベースMV予測(HMVP)法を用いて動き情報候補のリストを構成及び更新するプロセス(1100)を概説するフローチャートである。
幾つかの実施形態では、HMVP法を使用した動き情報候補のリストは、符号化及び復号化プロセスの間に構成及び更新されることが可能である。リストは、履歴リストとして言及されることが可能である。履歴リストは、HMVPテーブル又はHMVPバッファの形式で保存することが可能である。履歴リストは、新しいスライスのような新しいコーディング・パーティションが始まった場合に空にされることが可能である。幾つかの実施形態では、符号化又は復号化されたばかりのインター・コーディング済み非アフィン・ブロックが存在する場合はいつでも、関連する動き情報は、新しいHMVP候補としてヒストリ・リストの最後のエントリに追加されることが可能である。従って、現在のブロックを処理(符号化又は復号化)する前に、HMVP候補とともに履歴リストをロードすることが可能である(S1112)。現在のブロックは、履歴リスト内のHMVP候補を使用して符号化又は復号化することが可能である(S1114)。その後、現在のブロックを符号化又は復号化するための動き情報を使用して、履歴リストを更新することが可能である(S1116)。
図11Bは、一実施形態による履歴ベースのMV予測方法を使用して動き情報候補のリストを更新する概略図である。図11Bは、Lであるサイズを有する履歴リストを示し、リスト中の各候補は、0からL-1の範囲に及ぶインデックスで識別することが可能である。Lは0以上の整数である。現在のブロックを符号化又は復号化する前に、履歴リスト(1120)は、L個の候補HMVP0,HMVP1,HMVP2,...,HMVPm,...,HMVPL-2,及びHMVPL-1を含み、mは0からL-1に及ぶ範囲内の整数である。現在のブロックを符号化又は復号化した後に、新しいエントリHMVPCが履歴リストに追加される。
一例では、履歴リストのサイズは6に設定することが可能であり、それは高々6つのHMVP候補を履歴リストに追加することができることを示す。新しい動き候補(例えば、HMVPC)を履歴リストに挿入する場合、制約された先入れ先出し(FIFO)ルールを利用することが可能であり、ここで、冗長性チェックが最初に適用されて、履歴リストに冗長なHMVP候補があるかどうかを見出す。冗長なHMVP候補が見つからない場合、最初のHMVP候補(図11Bの例では、index=0のHMVP1)がリストから削除され、その後、他のすべてのHMVP候補が、例えばインデックスを1だけ減らして、前方に移動させられる。例えば、HMVPm+1はindex=mに関連付けられるように上に移動させられる。新しいHMVPC候補は、結果のリスト(1130)に示されるように、リストの最後のエントリに(例えば、図11Bにおいてindex=L-1で)追加されることが可能である。一方、(例えば、図11Bの例におけるHMVP2のように)冗長なHMVP候補が見つかった場合、履歴リスト中の冗長なHMVP候補はリストから除外され、例えばインデックスを1減らして以後のすべてのHMVP候補が前方に移動させられる。新しいHMVPC候補は、結果のリスト(1140)に示されるように、リストの最後のエントリに(例えば、図11Bにおいてindex=L-1で)追加されることが可能である。
幾つかの例では、HMVP候補は、マージ候補リスト構築プロセスで使用することが可能である。例えば、リスト内の最新のHMVP候補が順番にチェックされ、TMVP候補の後に候補リストに挿入されることが可能である。プルーニングは、空間的又は時間的なマージ候補に対してHMVP候補に適用されることが可能であるが、幾つかの実施形態では、サブ・ブロック動き候補(例えば、SbTMVP候補)には適用できない。
幾つかの実施形態では、プルーニング処理の回数を減らすために、以下の規則のうちの1つ以上に従うことが可能である:
(a)Mで示されるチェックされるべきHMPV候補の数は、次のように設定される:
M = (N<=4) ? L :(8-N)
ここで、Nは利用可能な非サブ・ブロック・マージ候補の数を示し、Lは履歴リストにおける利用可能なHMVP候補の数を示す。
(b) 更に、利用可能なマージ候補の総数が、シグナリングされたマージ候補の最大数よりも1つだけ少なくなると、HMVPリストからのマージ候補リスト構築プロセスを終了することが可能である。
(c)更に、コンバインされた双-予測マージ候補導出のためのペアの数は、12から6に削減することができる。
幾つかの実施形態では、AMVP候補リスト構築プロセスにおいて、HMVP候補を使用することが可能である。履歴リストの最後のK個のHMVP候補の動きベクトルは、TMVP候補の後にAMVP候補リストに追加することが可能である。幾つかの例では、AMVPターゲット参照ピクチャと同じ参照ピクチャを有するHMVP候補だけが、AMVP候補リストに追加される。HMVP候補に対してプルーニングを適用することが可能である。幾つかの例では、Kは4に設定される一方、AMVPリスト・サイズは変更されずに、例えば2に等しく維持される。
5.ペアワイズ平均動きベクトル候補
一部の実施形態では、現在のマージ候補リスト内の候補の所定のペアを平均化することにより、ペアワイズ平均候補を生成することが可能である。例えば、一実施形態では、所定のペアは、{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}として定められ、数字はマージ候補リストに対するマージ・インデックスを示す。例えば、平均化された動きベクトルは、各々の参照ピクチャ・リストに対して別々に計算される。平均化されるべき両方の動きベクトルが1つのリスト内で利用可能である場合、これらの2つの動きベクトルは、それらが異なる参照ピクチャを指している場合でさえ、平均化される。唯1つの動きベクトルが利用可能である場合、利用可能なその1つは直接的に利用されることが可能である。動きベクトルが利用可能でない場合、一例では、個々のペアはスキップされる。幾つかの実施形態では、マージ候補リストを構築する際に、ペアワイズ平均候補は、コンバインされた候補に取って代わる。
6.マージ・ウィズ動きベクトル差分(MMVD)モード
幾つかの実施形態では、マージ・ウィズ動きベクトル差分(MMVD)モードが、現在のブロックの動きベクトル予測子を決定するために使用される。MMVDモードは、スキップ・モード又はマージ・モードがイネーブルにされる場合に使用することができる。MMVDモードは、スキップ・モード又はマージ・モードのマージ候補リストにおいてマージ候補を再利用する。例えば、マージ候補リストから選択されたマージ候補は、参照ピクチャの開始点を提供するために使用することが可能である。現在のブロックの動きベクトルは、開始点と、開始点に対する動きの大きさ及び方向を含む動きオフセットとで表現されることが可能である。エンコーダ側において、マージ候補の選択、及び動きオフセットの決定は、探索プロセス(評価プロセス)に基づくことが可能である。デコーダ側において、選択されたマージ候補及び動きオフセットは、エンコーダ側からのシグナリングに基づいて決定さることが可能である。
MMVDモードは、本願で説明される様々なインター予測モードで構築されたマージ候補リストを再利用することが可能である。幾つかの例では、マージ候補リストにおけるデフォルトのマージ・タイプ(例えば、MRG_TYPE_DEFAULT_N)の候補のみが、MMVDモードに対して考慮される。デフォルトのマージ・タイプのマージ候補の例は、(i)マージ・モードで使用されるマージ候補、(ii)HMVPモードにおける履歴バッファからのマージ候補、及び(iii)本願で説明されるようなペアワイズ平均動きベクトル候補を含むことが可能である。幾つかの例では、アフィン・モード又はSbTMVPモードにおけるマージ候補は、MMVDモードにおける拡張には使用されない。
基本候補インデックス(IDX)は、開始点を定めるために使用することが可能である。例えば、0から3までのインデックスに関連付けられるマージ候補(動きベクトル予測子(MVP))のリストを表1に示す。基本候補インデックスのインデックスを有するマージ候補は、リストから決定され、出発点を提供するために使用することが可能である。
表1. 基本候補IDX
距離インデックスは、動きの大きさ情報を提供するために使用することが可能である。例えば、複数の所定のピクセル距離が表2に示されており、それぞれ0から7までのインデックスに関連付けられている。距離インデックスのうちのインデックスを有するピクセル距離は、複数のピクセル距離から決定され、動きの大きさを提供するために使用することが可能である。
表2.距離IDX
方向インデックスは、動きの方向情報を提供するために使用することが可能である。例えば、00から11(バイナリ)までのインデックスを有する4つの方向が、表3に示されている。方向インデックスのインデックスを有する方向は、4つの方向から決定され、開始点に対する動きオフセットの方向を提供するために使用することが可能である。
表3.方向 IDX
MMVDモードにおける基本候補インデックス、方向インデックス、及び距離IDXを含むMMVDインデックスのセットをシグナリングするために、MMVDシンタックス要素をビットストリームで送信することが可能である。
幾つかの実施形態では、現在のブロックをコーディングするためにスキップ及びマージ・フラグを送信した後に、MMVDイネーブル・フラグがシグナリングされる。例えば、スキップ及びマージ・フラグがtrueである場合、MMVDフラグが解析される。MMVDフラグが1に等しい場合、例では、MMVDシンタックス要素(MMVDインデックスのセット)が解析される。一例では、MMVDフラグが1でない場合、AFFINEフラグのような別のモードに関連するフラグが解析される。AFFINEフラグが1に等しい場合、現在のブロックを処理するためにAFFINEモードが使用される。AFFINEフラグが1でない場合、一例では、スキップ/マージ・インデックスが、現在のブロックをスキップ/マージ・モードで処理するために解析される。
図12-13は、本開示の実施形態によるMMVDモードにおける探索プロセス及び探索点の例を示す。探索プロセスを実行することによって、基本候補インデックス、方向インデックス、及び距離インデックスを含むMMVDインデックスのセットが、現在のピクチャ(又は現在のフレーム1210と呼ばれる)内の現在のブロック(1212)に対して決定されることが可能である。
図12-13に示すように、第1マージ候補で指定された第1動きベクトル(1222)及び第2動きベクトル(1224)が示されている。第1マージ候補は、現在のブロック(1212)に対して構築されたマージ候補リストにおけるマージ候補である可能性がある。第1及び第2動きベクトル(1222)及び(1224)はそれぞれ、参照ピクチャ・リストL0及びL1における2つの参照ピクチャ(1240)及び(1260)と関連付けられることが可能である。従って、図13において、2つの開始点(1241)及び(1261)が参照ピクチャ(1240)及び(1260)において決定されることが可能である。
一例では、開始点(1241)及び(1261)に基づいて、参照ピクチャ(1240)及び(1260)において開始点(1241)及び(1261)から垂直方向(+Y又は-Yで示される)又は水平方向(+X又は-Xで示される)に延在する複数の所定の点を、評価することが可能である。一例では、点のペア(1322)及び(1324)、又は点のペア(1241)及び(1261)のような、それぞれの開始点に関して互いにミラーリングした点のペア(1312)又は(1314)を使用して、現在のブロック(1212)に対する動きベクトル予測子候補を形成することが可能な動きベクトルのペアを決定することが可能である。開始点(1241)又は(1261)を囲む所定の点に基づいて決定されるこれらの動きベクトル予測子候補を、評価することが可能である。
現在のブロック(1212)のマージ候補リストの中の、第1マージ候補に加えて、他の利用可能な又は有効なマージ候補も同様に評価されることが可能である。一例では、片-予測マージ候補については、2つの参照ピクチャ・リストの1つに関連付けられた1つの予測方向のみが評価される。
評価に基づいて、動きベクトル予測子候補を決定することが可能である。従って、動きベクトル予測子候補に対応して、マージ候補をマージ・リストから選択することが可能であり、動き方向及び動き距離を決定することも可能である。例えば、選択されたマージ候補及び表1に基づいて、基本候補インデックスを決定することが可能である。所定の点(1314)(又は(1322))に対応するもののような、選択された動きベクトル予測子に基づいて、開始点(1241)に対する点(1314)の方向及び距離を決定することが可能である。従って、表2及び表3によれば、方向インデックス及び距離インデックスを相応に決定することが可能である。
上記の例は単に説明のためのものであることに留意されたい。代替例では、MMVDモードで提供される動きベクトル表現方法に基づいて、動き距離と動き方向は別様に定められてもよい。更に、評価プロセス(探索プロセス)は、別様に実行されてもよい。例えば、双-予測マージ候補については、3つのタイプの予測方向(例えば、L0、L1、及びL0とL1)が、動きベクトル予測子を選択するために、所定の距離及び方向のセットに基づいて評価されることが可能である。別の例では、片-予測マージ候補は、双-予測マージ候補に対するミラーリング又はスケーリングによって変換され、その後に評価されることが可能である。上記の例では、評価プロセスから生じる予測方向(例えば、L0、L1、又はL0とL1)を示す追加的なシンタックスが、シグナリングされてもよい。
上述したように、マージ候補リストにおけるマージ候補は、エンコーダにおけるMMVDモードにおけるベース候補を決定するために評価される。デコーダでは、入力として基本候補インデックスを用いて、マージ候補リストから動きベクトル予測子を選択することが可能である。従って、マージ候補の記憶のために、ライン・バッファに加えて、MMVDモードのための追加のライン・バッファは必要とされない。
7.共有マージ・リストを伴うマージ・シェアリング領域
幾つかの実施形態では、現在のブロックのサイズ及び/又は現在のブロック内のサブ・ブロックのサイズが特定の条件を満たす場合に、共有マージ・リストを伴うマージ・シェアリング領域が使用される。例えば、CU分割ツリー内の特定のノード(例えば、先祖ノード)のリーフCUは、マージ候補リストを共有することが可能である。このようにして、リーフCUの各々のためのマージ候補リストの別々の構築を、回避することが可能であり、これは、マージ・シェアリング領域内の小さなマージ/スキップ符号化CUの並列処理を可能にする。特定のノードは、マージ共有領域に対応するマージ共有ノードと呼ぶことが可能である。あたかもマージ・シェアリング・ノードがリーフCUであるかのように、共有されるマージ候補リストが、マージ・シェアリング・ノードに対して生成される。
分割ツリー・ノードをマージ・シェアリング・ノードとして取り扱うことができるかどうかは、復号化の解析の段階でCTU内の各ノードについて決定されることが可能である。一例では、リーフCUの先祖ノードは、先祖ノードが以下の基準を満たす場合に、マージ・シェアリング・ノードであると決定することが可能である:
(a)先祖ノードのブロック・サイズが、サイズ閾値(例えば、32ピクセル、64ピクセル等)以上であること;及び
(b)先祖ノード内において、チャイルドCUの1つが、サイズ閾値より小さなサイズを有すること。
図14Aは、64ピクセルのサイズ閾値に基づいて定められたマージ・シェアリング領域(1410),(1420),(1430),及び(1440)の例を示す。マージ・シェアリング領域(1410)-(1440)の各々は、サイズ閾値に等しい64ピクセルのブロック・サイズを有する。マージ・シェアリング領域(1410)-(1440)の各々は、サイズ閾値より小さなサイズを有する少なくとも1つのリーフCUを含む。
図14Bは、64ピクセルのサイズ閾値に基づいて定められるマージ・シェアリング領域(1450)の別の例を示す。マージ・シェアリング領域(1450)は、32,64,及び32ピクセルのサイズをそれぞれ有する3つのサブ・ブロック(1452),(1454),及び(1456)を含む。マージ・シェアリング領域(1450)は、サイズ閾値より大きな128ピクセルのサイズを有し、サイズ閾値より小さなサイズを有する2つのサブ・ブロック(1452)及び(1456)を含む。
他の例では、マージ・シェアリング領域の決定は、異なる定義に基づくことが可能である。例えば、閾値より小さなブロック・サイズを有するリーフCUの先祖ノードは、マージ・シェアリング領域であると決定することが可能である。図14Bを例として使用すると、64ピクセルの閾値が使用される場合、ブロック(1452)-(1456)の何れかは、別個のマージ・シェアリング領域であると決定されることが可能である。
64ピクセルの閾値は、非限定的な例として単に紹介されているに過ぎない。他の実施形態において、閾値は、32ピクセル又は他の適切な値に設定することが可能である。
更に、幾つかの例では、マージ・シェアリング・ノードのサンプルは、ピクチャ境界の外にない。解析の段階で、先祖ノードがマージ・シェアリング領域の定義を満たしているが、ピクチャ境界の外に幾らかのサンプルを有する場合、この先祖ノードは、マージ・シェアリング・ノードとして取り扱われないであろう。このノード内のチャイルドCUは、マージ・シェアリング領域を決定するために次に評価される可能性がある。
共有マージ候補リスト・アルゴリズムは、レギュラー・マージ・モード、イントラ・ブロック・コピー・モード(又はIBCモード)、三角パーティション・モード、SbTMVPモード、MMVDモード等の変換マージ/スキップ・モードをサポートすることが可能である。幾つかの例では、アフィン・マージ・モードは、マージ・シェアリング領域内のブロックを符号化するために除外される。これらのマージ/スキップ・モードは、マージ・シェアリング領域内で使用される場合に、HMVPテーブルと組み合わせることが可能である。これらのマージ/スキップ・モードの場合、共有マージ候補リスト・アルゴリズムの動作は、レギュラー・マージ候補リストに基づくものと同様である。一態様では、共有マージ候補リスト・アルゴリズムは、あたかもマージ・シェアリング・ノードがリーフCUであるかのように、マージ・シェアリング・ノードのための候補を生成することに対応する。
一部の実施形態では、マージ・シェアリング領域内のリーフCUは、マージ/スキップ・モード以外のコーディング・モードを使用してコーディングされてもよい。例えば、マージ・シェアリング・ノード内のCUは、イントラ・モード、又はマージ/スキップ・モード以外のインター・モード(例えば、AMVPモード)でコーディングされてもよい。
8.三角予測
幾つかの実施例では、インター予測のために三角予測モード(TPM)を用いることが可能である。実施形態では、TPMは、8×8サンプル以上のサイズであるCUに適用され、スキップ又はマージ・モードでコーディングされる。一実施形態では、これらの条件を満たすCUに対して(8×8サンプル以上のサイズであり、且つスキップ又はマージ・モードでコーディングされること)、TPMが適用されるか否かを示すために、CUレベルのフラグがシグナリングされる。
図15Aは、一実施形態による三角予測モードに従って現在ブロックに対する2つの分割例の概略図である。TPMが使用される場合、幾つかの実施形態において、CUは、図15Aに示されるように、左上コーナーから右下コーナーへの対角線に沿って(例えば、対角線分割)、又は右上コーナーから左下コーナーへの対角線に沿って(例えば、逆対角線分割)、2つの三角形パーティションに均等に分割される。図15Aでは、現在のブロック(又はCUとも呼ばれる)(1510A)は、左上コーナーから右下コーナーに分割されることが可能であり、2つの三角予測ユニット(1512)及び(1514)を生じている。CU(1510B)はまた、右上コーナーから左下コーナーに分割されることが可能であり、2つの三角予測ユニット(1516)及び(1518)を生じている。2つの例(1510A)及び(1510B)における各々の三角予測ユニット(1512),(1514),(1516),及び(1518)は、それ自身の動き情報を用いてインター予測されることが可能である。
幾つかの実施形態では、各々の三角予測ユニットに対して、片-予測のみが許容される。従って、各々の三角予測ユニットは、1つの動きベクトルと1つの参照ピクチャ・インデックスとを有する。従来の双-予測法と同様に、2つより多い動き補償された予測が各CUに対して実行されないことを保証するために、片-予測動き制約を適用することが可能である。このようにして、処理の複雑さを減らすことが可能である。各々の三角予測ユニットに対する片-予測動き情報は、片-予測マージ候補リストから導出されることが可能である。幾つかの他の実施形態では、各々の三角予測ユニットに対して、双-予測が許容される。従って、各々の三角予測ユニットに対する双-予測動き情報は、双-予測マージ候補リストから導出することが可能である。
一部の実施形態では、現在のCUがTPMを使用してコーディングされていることを、CUレベルのフラグが示す場合に、三角パーティション・インデックスと呼ばれるインデックスが更にシグナリングされる。例えば、三角パーティション・インデックスは、[0,39]の範囲内の値を有することが可能である。この三角パーティション・インデックスを用いて、三角パーティションの方向(対角線又は逆対角線)、及び各パーティションの動き情報(例えば、それぞれの片-予測候補リストに対するマージ・インデックス(又はTPMインデックスと呼ばれる))が、デコーダ側においてルックアップ・テーブルにより取得されることが可能である。
得られた動き情報に基づいて三角予測ユニットの各々を予測した後に、一実施形態では、現在のCUの対角線又は逆対角線のエッジに沿うサンプル値は、適応的なウェイトを使う混合プロセスを実行することにより調整される。混合プロセスの結果として、CU全体の予測信号を取得することができる。次いで、変換及び量子化プロセスが、他の予測モードと同様な方法で、CU全体に適用されることが可能である。最終的に、三角パーティション・モードを使用して予測されるCUの動きフィールドを、例えば、CUからパーティショニングされた4×4ユニットのセットに動き情報を格納することによって、作成することが可能である。動きフィールドは、例えば、後続の動きベクトル予測プロセスにおいて、マージ候補リストを構築するために使用することが可能である。
8.1 片-予測候補リスト構築
幾つかの実施形態では、TPMで処理されたコーディング・ブロックの2つの三角予測ユニットの予測のためのマージ候補リストは、コーディング・ブロックの空間的及び時間的な隣接するブロックのセットに基づいて構築されることが可能である。このようなマージ候補リストは、本願に掲載されるTPM候補を有するTPM候補リストと称することが可能である。一実施形態では、マージ候補リストは、片-予測候補リストである。
図15Bは、実施形態による三角予測モードのための片-予測候補リストを構築するために使用される空間的及び時間的な隣接するブロックの例を示す。幾つかの実施形態では、片-予測候補リストは、実施形態において5つの片-予測動きベクトル候補を含む。例えば、5つの片-予測動きベクトル候補は、5つの空間的に隣接するブロック(図15BではS1からS5で示される)と2つの時間的に隣接するブロック(図15BではT6及びT7で示される)とを含む7つの隣接するブロックから導出される。
一例では、7つの隣接するブロックの動きベクトルが収集され、次の順序に従って片-予測候補リスト内に置かれる:先ず、片-予測隣接ブロックの動きベクトル;(b)次いで、双-予測隣接ブロックに関し、L0動きベクトル(双-予測MVのL0動きベクトル部分)、L1動きベクトル(双-予測MVのL1動きベクトル部分)、及び双-予測MVのL0,L1動きベクトルの平均化された動きベクトルである。一例では、候補の数が5未満である場合に、ゼロ動きベクトルがリストの最後に追加される。幾つかの他の実施形態において、マージ候補リストは、図15Bに示されるものと同じ又は異なる候補位置から選択される5つより少ない又は5つより多い片-予測又は双-予測マージ候補を含んでもよい。
8.2 ルックアップ・テーブル及びテーブル・インデックス
実施形態では、CUは、5つのTPM候補を含むTPM(又はマージ)候補リストを用いる三角パーティション・モードでコーディングされる。従って、各々の三角PUに対して5つのマージ候補が使用される場合、CUを予測するために40通りの可能な方法がある。言い換えれば、分割方向とマージ(又はTPM)インデックスの40個の異なる組み合わせが存在する可能性がある:2(可能な分割方向)×(5(第1三角予測ユニットに対して可能なマージ・インデックス)×5(第2三角予測ユニットに対して可能なマージ・インデックス)-5(第1お及び第2予測ユニットのペアが同じマージ・インデックスを共有する可能性のある個数))。例えば、2つの三角予測ユニットに対して同じマージ・インデックスが決定された場合、CUは、三角予測モードの代わりに、レギュラー・マージ・モードを使用して処理されることが可能である。
従って、実施形態においては、以下の表4に示すようにルックアップ・テーブルに基づいて、[0,39]の範囲内の三角パーティション・インデックスが、40個の組み合わせのうちのどの1つが使用されるのかを表すために使用されることが可能である。
表4.三角インデックスに基づいて三角の方向及びパーティションの動きを導出するために使用されるルックアップ・テーブル
表4の第1の行(triangle_idx)は、0から39までの範囲内の三角パーティション・インデックスを示す。表4の第2の行(triangle dir)は、0又は1で表される可能な分割方向を示す。第3の行(Part 1 cand)は、第1三角予測ユニットに対応する0から4までの範囲内の可能な第1マージ・インデックスを含む。第4の行(Part 2 cand)は、第2三角予測ユニットに対応する0から4までの範囲内の可能な第2マージ・インデックスを含む。
例えば、1の値を有する三角パーティション・インデックスがデコーダで受信されると、triangle_idx=1に対応するルックアップ・テーブルの列に基づいて、分割方向は1の値で表されるパーティション方向(例えば、逆対角線分割)であること、第1及び第2マージ・インデックスはそれぞれ0及び1であることを、決定することが可能である。三角パーティション・インデックスはルックアップ・テーブルと関連付けられるので、三角パーティション・インデックスはまた、本開示においてテーブル・インデックスとも呼ばれる。
8.3 三角パーティション・エッジに沿った適応混合
実施形態では、各々の三角予測ユニットをそれぞれの動き情報を用いて予測した後に、混合プロセスが、2つの三角予測ユニットの2つの予測信号に適用されて、対角線又は逆対角線のエッジ付近のサンプルを導出する。混合プロセスは、2つの三角予測ユニット間の動きベクトル差分に依存して、重み付け係数の2つのグループ間で適応的に選択を行う。実施形態において、2つの重み付け係数グループは以下の通りである:
(1)第1重み付け係数グループ:ルマ成分のサンプルについては{7/8,6/8,4/8,2/8,1/8}であり、クロマ成分については{7/8,4/8,1/8}である。
(2)第2重み付け係数グループ:ルマ成分のサンプルについては{7/8,6/8,5/8,4/8,3/8,2/8,1/8}であり、クロマ成分については{6/8,4/8,2/8}である。
第2重み付け係数グループは、より多くのルマ重み付け係数を有し、パーティション・エッジに沿って、より多くのルマ・サンプルを混合する。
実施形態では、2つの重み付け係数グループの1つを選択するために、以下の条件が使用される。2つの三角パーティションの参照ピクチャが互いに異なる場合、又は2つの三角パーティションの間の動きベクトル差分が閾値(例えば、16ルマ・サンプル)より大きい場合には、第2重み付け係数グループを選択することが可能である。そうでない場合には、第1重み付け係数グループを選択することが可能である。
図16Aは、一実施形態による適応混合プロセスにおける第1セットの重み付け係数を適用するコーディング・ユニットの例を示す。図16Aにおいて、第1コーディング・ブロック(1610)はCUのルマ・サンプルを含み、第2コーディング・ブロック(1620)は同じCUのクロマ・サンプルを含む。各々のブロックは、2つの三角パーティションP1,P2,P1’及びP2’に分割される。コーディング・ブロック(1610)又は(1620)の対角線エッジに沿うピクセルのセットは、パーティションP1又はパーティションP1’それぞれに対する重み付け係数1/8,2/8,4/8,6/8,及び7/8;並びにパーティションP2又はパーティションP2’それぞれに対する重み付け係数7/8,6/8,4/8,2/8,及び1/8に対応して番号1,2,4,6,及び7でラベル付けされている。例えば、2という数でラベル付けされたピクセルについては、混合処理の後のピクセルのサンプル値は、次のようにして得ることが可能である:
混合サンプル値=2/8 x S1 + 6/8 x S2
ここで、S1及びS2は個々のピクセルにおけるサンプル値であるが、それぞれ第1三角予測ユニットP1及び第2三角予測ユニットP1の予測に帰属する。
更に、如何なる重み付けも伴わないブランクの領域は、三角パーティションP1(又はP1’)に従う予測されたサンプルが、マージを行わずに採用されることを表す。同様に、如何なる重み付けも伴わない影付き領域は、三角パーティションP2に従う予測されたサンプルが、マージを行わずに採用されることを表す。
図16Bは、一実施形態による適応混合プロセスにおける第2セットの重み付け係数を適用するコーディング・ユニットの例を示す。図16Bにおいて、第3コーディング・ブロック(1630)はCUのルマ・サンプルを含み、第4コーディング・ブロック(1640)は同じCUのクロマ・サンプルを含む。各々のブロックは、2つの三角パーティションP1,P2,P1’及びP2’に分割される。コーディング・ブロック(1630)又は(1640)の対角線エッジに沿うピクセルのセットは、パーティションP1又はパーティションP1’それぞれに対する重み付け係数1/8,2/8,3/8,4/8,5/8,6/8,及び7/8並びにパーティションP2又はパーティションP2’それぞれに対する重み付け係数7/8,6/8,5/8,4/8,3/8,2/8,及び1/8に対応して番号1,2,3,4,5,6,及び7でラベル付けされている。また、如何なる重み付けも伴わないブランクの領域は、三角パーティションP1(又はP1’)に従う予測されたサンプルが、マージを行わずに採用されることを表す。同様に、如何なる重み付けも伴わない影付き領域は、三角パーティションP2に従う予測されたサンプルが、マージを行わずに採用されることを表す。
III. サブ・ブロック動き情報を使用したHMVPバッファの更新
幾つかの実施形態では、レギュラー・インター予測モードに従ってコーディングされたCUに加えて、種々のサブ・ブロック・ベースのモード、例えば上述したようなインター予測モード、に従ってコーディングされたCUもまた、HMVPバッファを更新するために使用することが可能である。適用可能なサブ・ブロック・ベースのインター予測モードは、サブ・ブロック・ベースのTMVPモード、アフィン・インター・モード、三角インター予測モード、又は任意の他の適切なサブ・ブロック・ベースのインター予測モードを含むことが可能である。
幾つかの実施形態では、現在のブロックを、複数のサブ・ブロックに分割することが可能である。複数のサブ・ブロックに対する複数のサブ・ブロック動き情報を導出することが可能である。サブ・ブロックに対する予測されたサブ・ブロック・サンプルは、サブ・ブロック動き情報に従って生成することが可能である。現在のブロックに対する予測されたブロックは、予測されたサブ・ブロック・サンプルの組み合わせに従って生成することが可能である。更に、(複数の)サブ・ブロック動き情報からのサブ・ブロック動き情報は、現在のブロックに対する代表的な動き情報として選択することが可能であり、代表的な動き情報は、図10Bを参照して説明したように、HMVPバッファに記憶することが可能である。
幾つかの実施形態では、選択されたサブ・ブロック動き情報は、複数のサブ・ブロックのうちで、現在のブロック内の特定の位置にあるサブ・ブロックに対するものであるとすることが可能である。一例では、図17Aに示すように、サブ・ブロック(1714)に対するサブ・ブロック動き情報を使用するコーディング・ユニット(1710)は、現在のブロックの右下の位置におけるものである。別の例では、図17Bに示すように、サブ・ブロック(1724)に対するサブ・ブロック動き情報を使用するコーディング・ユニット(1720)は、現在のブロックの中心位置におけるものである。幾つかの実施形態では、中心位置におけるブロックは、中心位置に隣接するブロック、例えば現在のブロックの中心位置(1722)と左上コーナーが隣接するブロックとして定められる。
幾つかの実施形態では、現在のブロックは、アフィン・インター予測に従ってコーディングされる。一例では、(図17Aに示されるように)現在のブロックの右下位置に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。一例では、(図17Bに示されるように)現在のブロックの中心位置に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。更に別の例では、現在のブロック内の別の所定の場所に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。
幾つかの実施形態では、現在のブロックは、サブ・ブロック・ベースTMVP(SbTMVP)モードに従ってコーディングされる。一例では、(図17Aに示されるように)現在のブロックの右下位置に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。一例では、(図17Bに示されるように)現在のブロックの中心位置に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。更に別の例では、現在のブロック内の別の所定の場所に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。
幾つかの実施形態では、現在のブロックは、三角予測モードに従ってコーディングされる。一例では、(図17Aに示されるように)現在のブロックの右下位置に位置するサブ・ブロックに対応する領域の動き情報が、HMVPバッファを更新するために使用されることが可能である。一例では、(図17Bに示されるように)現在のブロックの中心位置に位置するサブ・ブロックの動き情報が、HMVPバッファを更新するために使用されることが可能である。更に別の例では、現在のブロック内の別の所定の場所に位置するサブ・ブロックに対応する領域の動き情報が、HMVPバッファを更新するために使用されることが可能である。
幾つかの実施形態では、特定の位置は、例えば、シーケンス・パラメータ・セット(SPS)、ピクチャ・パラメータ・セット(PPS)、スライス・ヘッダ、タイル・グループ・ヘッダ、又はタイル・ヘッダで伝送される制御情報に従って、決定又はシグナリングされることが可能である。
図18は、本開示の幾つかの実施形態によるプロセス(1800)を概説するフローチャートを示す。プロセス(1800)は、現在のピクチャの現在のブロックを符号化又は復号化する際に使用することが可能であり、現在のブロックがサブ・ブロック・ベースのインター予測モードに従ってコーディングされる場合に、現在のブロックをコーディングするための動き情報に従ってHMVPバッファを更新することを含む。幾つかの実施形態において、1つ以上の処理は、プロセス(1800)の前又は後に実行され、図18に示される幾つかの処理は、順序変更されてもよいし、又は省略されてもよい。
様々な実施形態において、プロセス(1800)は、端末デバイス(210),(220),(230)及び(240)の処理回路、ビデオ・デコーダ(310)の機能を実行する処理回路、ビデオ・デコーダ(410)の機能を実行する処理回路などの処理回路によって実行される。幾つかの実施形態では、プロセス(1800)は、ソフトウェア命令で実現され、従って処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1800)を実行する。プロセスは(S1801)から始まり、(S1810)に進む。
(S1810)では、現在のブロックは複数のサブ・ブロックに分割される。現在のブロックは、サブ・ブロック・ベースのTMVPモード、アフィン・インター・モード、三角インター予測モード等のサブ・ブロック・ベースのインター予測モードに従ってコーディングされることが可能である。幾つかの実施形態では、各サブ・ブロックは、4×4ピクセル又は8×8ピクセルのサイズを有することが可能である。幾つかの実施形態において、サブ・ブロックは、正方形の形状、長方形の形状、又は任意の適切な形状を有することが可能である。
(S1820)では、例えば図9、図10、図15A-図16Bを参照して説明したように、適用可能なサブ・ブロック・ベースのインター予測モードに従って、複数のサブ・ブロックに対する複数のサブ・ブロック動き情報を、導出することが可能である。
(S1830)では、サブ・ブロック動き情報に応じて、サブ・ブロックに対する予測されたサブ・ブロック・サンプルが生成される。
(S1840)では、S1830からの予測されたサブ・ブロック・サンプルの組み合わせに従って、現在のブロックの予測されたブロックが生成される。
(S1850)では、複数のサブ・ブロック動き情報から、サブ・ブロック動き情報が、現在のブロックの代表的な動き情報として選択される。幾つかの実施形態では、選択されたサブ・ブロック動き情報は、複数のサブ・ブロックのうちの、現在のブロック内の特定の位置にあるサブ・ブロックに対するものである。一例では、特定のサブ・ブロックは、現在のブロックの右下の位置におけるものである。別の例では、特定のサブ・ブロックは、現在のブロックの中心位置に隣接している。少なくとも1つの例において、特定のサブ・ブロックの左上コーナーは、現在のブロックの中心位置におけるものである。
幾つかの実施形態では、特定の位置は、シーケンス・パラメータ・セット(SPS)、ピクチャ・パラメータ・セット(PPS)、スライス・ヘッダ、タイル・グループ・ヘッダ、又はタイル・ヘッダで伝送される制御情報に従って、決定又はシグナリングされることが可能である。
(S1860)では、代表的な動き情報がHMVPバッファに格納される。幾つかの実施形態において、代表的な動き情報は、図11Bを参照して説明したプロセスに従って、HMVPバッファに記憶されることが可能である。
代表的な動き情報がHMVPバッファに格納された後、プロセス1800は(S1899)に進み、終了することが可能である。
本願で説明される実施形態は、別々に又は任意の順序で組み合わせて使用することが可能である。更に、実施形態、エンコーダ、及びデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサ、又は1つ以上の集積回路)によって実現されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能な媒体に格納されたプログラムを実行する。
IV. コンピュータ・システム
上述した技術は、コンピュータ読み取り可能な命令を用いてコンピュータ・ソフトウェアとして実装することが可能であり、1つ以上のコンピュータ読み取り可能な媒体に物理的に記憶することが可能である。例えば、図19は、開示される対象事項の特定の実施形態を実現するのに適したコンピュータ・システム(1900)を示す。
コンピュータ・ソフトウェアは、アセンブリ、コンパイル、リンク、又は類似のメカニズムの対象となり得る任意の適切なマシン・コード又はコンピュータ言語を使用してコーディングされて、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)等によって、直接的に実行されることが可能な命令、又は解釈やマイクロコード実行などを経由する命令、を含むコードを作成することが可能である。
命令は、例えば、パーソナル・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン、ゲーム・デバイス、モノのインターネット・デバイス等を含む、種々のタイプのコンピュータ又はそのコンポーネント上で実行されることが可能である。
コンピュータ・システム(1900)について図19に示されるコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実現するコンピュータ・ソフトウェアの使用範囲又は機能性に関する如何なる制限も示唆するようには意図されていない。また、コンポーネントの構成は、コンピュータ・システム(1900)の例示的な実施形態に示されたコンポーネントの任意の1つ又は組み合わせに関する何らかの従属性や要件を有するものとして解釈されてはならない。
コンピュータ・システム(1900)は、特定のヒューマン・インターフェース入力デバイスを含むことが可能である。このようなヒューマン・インターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データ・グローブの動き)、聴覚的な入力(例えば、声、拍手)、視覚的な入力(例えば、ジェスチャ)、嗅覚的な入力(図示されていない)を介して、1人以上の人間ユーザーによる入力に応答することが可能である。また、ヒューマン・インターフェース・デバイスは、オーディオ(例えば、会話、音楽、周囲音)、画像(例えば、スキャンされた画像、静止画像カメラから得られる写真画像)、ビデオ(例えば、2次元ビデオ、立体ピクチャを含む3次元ビデオ)のような、人間による意識的な入力に必ずしも直接的に関係しない特定のメディアを捕捉するために使用することが可能である。
入力ヒューマン・インターフェース・デバイスは、キーボード(1901)、マウス(1902)、トラックパッド(1903)、タッチ・スクリーン(1910)、データ・グローブ(不図示)、ジョイスティック(1905)、マイクロホン(1906)、スキャナ(1907)、カメラ(1908)のうちの(描かれているものはそれぞれ唯1つであるが)1つ以上を含んでもよい。
コンピュータ・システム(1900)は、特定のヒューマン・インターフェース出力デバイスを含むことも可能である。このようなヒューマン・インターフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通じて、1人以上の人間ユーザーの感覚を刺激することが可能である。このようなヒューマン・インターフェース出力デバイスは、触覚出力デバイス(例えば、タッチ・スクリーン(1910)、データ・グローブ(不図示)、ジョイスティック(1905)による触覚フィードバックであるが、入力として役立たない触覚フィードバック・デバイスが存在する可能性もある)、聴覚的な出力デバイス(例えば、スピーカー(1909)、ヘッドフォン(不図示せず))、視覚的な出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマ・スクリーン、OLEDスクリーンを含むスクリーン(1910)であり、各々はタッチ・スクリーン入力機能を備えるか又は備えておらず、各々は触覚フィードバック機能を備えるか又は備えておらず、それらのうちの幾つかは、二次元的な視覚的な出力、立体出力のような手段による三次元以上の出力を出力することが可能であってもよい;仮想現実メガネ(図示せず)、ホログラフィック・ディスプレイ、及びスモーク・タンク(図示せず))、及びプリンタ(図示せず)を含むことが可能である。
コンピュータ・システム(1900)はまた、CD/DVD等の媒体(1921)を使うCD/DVD ROM/RW(1920)を含む光媒体(1921)、サム・ドライブ(1922)、リムーバブル・ハード・ドライブ又はソリッド・ステート・ドライブ(1923)、テープ及びフロッピー・ディスク(図示せず)等のレガシー磁気媒体(不図示)、セキュリティ・ドングル(不図示)等の特殊化されたROM/ASIC/PLDベースのデバイスのような、人間がアクセス可能な記憶デバイス及びそれらに関連する媒体を含むことも可能である。
当業者は、ここで開示される対象事項に関連して使用される用語「コンピュータ読み取り可能な媒体」は、伝送媒体、搬送波、又はその他の過渡的な信号を包含しないことも理解するはずである。
コンピュータ・システム(1900)は、1つ以上の通信ネットワークへのインターフェースも含むことが可能である。ネットワークは、例えば、無線、有線、光であるとすることが可能である。ネットワークは、更に、ローカル、ワイド・エリア、メトロポリタン、車両及び工業、リアルタイム、遅延耐性などに関するものであるとすることが可能である。ネットワークの例は、イーサーネット、無線LAN、セルラー・ネットワーク(GSM、3G、4G、5G、LTE等を含む)、TVの有線又は無線ワイド・エリア・デジタル・ネットワーク(ケーブルTV、衛星TV、及び地上放送TVを含む)、CANBusを含む車両及び産業などを含む。特定のネットワークは、一般に、特定の汎用データ・ポート又は周辺バス(1949)に取り付けられる外部ネットワーク・インターフェース・アダプタを必要とする(例えば、コンピュータ・システム(1900)のUSBポート);その他は、一般に、以下に説明するようなシステム・バスに取り付けることによって、コンピュータ・システム(1900)のコアに統合される(例えば、イーサーネット・インターフェースはPCコンピュータ・システム内に、セルラー・ネットワーク・インターフェースはスマートフォン・コンピュータ・システム内に統合される)。これらのうちの任意のネットワークを使用して、コンピュータ・システム(1900)は、他のエンティティと通信することが可能である。このような通信は、片方向受信専用(例えば、放送テレビ)、片方向送信専用(例えば、特定のCANbusデバイスに対するCANbus)、又は双方向、例えばローカル又はワイド・エリア・デジタル・ネットワークを使用する他のコンピュータ・システムに対するものであるとすることが可能である。特定のプロトコル及びプロトコル・スタックは、上述のように、それらのネットワーク及びネットワーク・インターフェースの各々で使用されることが可能である。
前述のヒューマン・インターフェース・デバイス、ヒューマン・アクセシブル・ストレージ・デバイス、及びネットワーク・インターフェースは、コンピュータ・システム(1900)のコア(1940)に取り付けられることが可能である。
コア(1940)は、1つ以上の中央処理ユニット(CPU)(1941)、グラフィックス処理デバイス(GPU)(1942)、フィールド・プログラマブル・ゲート・エリア(FPGA)(1943)の形式における特殊プログラマブル処理デバイス、特定のタスク用のハードウェア・アクセラレータ(1944)等を含むことが可能である。これらのデバイスは、リード・オンリ・メモリ(ROM)(1945)、ランダム・アクセス・メモリ(1946)、内部大容量ストレージ・デバイス(例えば、内的な非ユーザー・アクセシブル・ハード・ドライブ、SSD等)(1947)と共に、システム・バス(1948)を介して接続されることが可能である。幾つかのコンピュータ・システムでは、システム・バス(1948)は、追加のCPU、GPU等による拡張を可能にするために、1つ以上の物理的プラグの形態でアクセス可能である可能性がある。周辺デバイスは、コアのシステム・バス(1948)に直接取り付けられるか、又は周辺バス(1949)を介して取り付けられることが可能である。周辺バスのアーキテクチャは、PCI、USB等を含む。
CPU(1941)、GPU(1942)、FPGA(1943)、及びアクセラレータ(1944)は、組み合わされて、前述のコンピュータ・コードを構成することが可能な特定の命令を実行することが可能である。コンピュータ・コードは、ROM(1945)又はRAM(1946)に格納されることが可能である。一時的なデータはRAM(1946)に格納されることが可能である一方、永続的なデータは例えば内的な大容量ストレージ(1947)に格納されることが可能である。任意のメモリ・デバイスに対する高速な記憶及び検索は、キャッシュ・メモリを利用することで可能になる可能性があり、キャッシュ・メモリは、1つ以上のCPU(1941)、GPU(1942)、大容量ストレージ(1947)、ROM(1945)、RAM(1946)等と密接に関連付けることが可能である。
コンピュータ読み取り可能な媒体は、様々なコンピュータ実装済み動作を実行するためのコンピュータ・コードをその上に有することが可能である。媒体及びコンピュータ・コードは、本開示の目的のために特別に設計及び構築されたものであるとすることが可能であり、又はそれらは、コンピュータ・ソフトウェアの分野における当業者にとって周知であり且つ入手可能な種類のものであるとすることが可能である。
例示として、限定ではなく、アーキテクチャ(1900)、具体的にはコア(1940)を有するコンピュータ・システムは、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として、1つ以上の有形のコンピュータ読み取り可能な媒体に具現化されたソフトウェアを実行する機能を提供することが可能である。そのようなコンピュータ読み取り可能な媒体は、コア内部の大容量ストレージ(1947)又はROM(1945)のような非一時的な性質のコア(1940)の特定のストレージと同様に、上述したようなユーザー・アクセシブル大容量ストレージに関連するメディアであるとすることが可能である。本開示の様々な実施形態を実現するソフトウェアは、そのようなデバイスに記憶され、コア(1940)によって実行されることが可能である。コンピュータ読み取り可能な媒体は、特定のニーズに応じて、1つ以上のメモリ・デバイス又はチップを含むことが可能である。ソフトウェアは、RAM(1946)に記憶されたデータ構造を定めること、及びソフトウェアによって定められたプロセスに従ってそのようなデータ構造を修正することを含む、本願で説明された特定のプロセス又は特定のプロセスの特定の部分を、コア(1940)及び特にその中のプロセッサ(CPU、GPU、FPGA等を含む)に実行させることが可能である。更に又は代替として、コンピュータ・システムは、回路(例えば、アクセラレータ(1944))内に配線された又は他の方法で具現化されたロジックの結果として機能を提供することが可能であり、その回路は、本願で説明された特定のプロセス又は特定のプロセスの特定の部分を実行することを、ソフトウェアの代わりに又はそれと共に実行することが可能である。ソフトウェアに対する言及はロジックを含み、必要に応じて、その逆も可能である。コンピュータ読み取り可能な媒体に対する言及は、実行のためのソフトウェアを記憶する(集積回路(IC)のような)回路、実行のためのロジックを具体化する回路、又は適切な場合にはその両方を包含することが可能である。本開示はハードウェア及びソフトウェアの適切な任意の組み合わせを包含する。
本開示は、幾つかの例示的な実施形態を説明してきたが、本開示の範囲内に該当する、変更、置換、及び種々の代替的な均等物が存在する。従って、当業者は、本願で明示的には図示も説明もされていないが、本開示の原理を具体化し、従ってその精神及び範囲内にある多くのシステム及び方法を考え出すことが可能であることは理解されるであろう。
付録A:頭字語
AMVP:Advanced Motion Vector Prediction (アドバンスト動きベクトル予測)
ASIC:Application-Specific Integrated Circuit (特定用途向け集積回路)
BMS:Benchmark Set (ベンチマーク・セット)
CANBus:Controller Area Network Bus (コントローラ・エリア・ネットワーク・バス)
CD:Compact Disc (コンパクト・ディスク)
CPMV:Control Point Motion Vector (コントロール・ポイント動きベクトル)
CPUs:Central Processing Units (中央処理ユニット)
CRT:Cathode Ray Tube (陰極線管)
CTUs:Coding Tree Units (コーディング・ツリー・ユニット)
CU:Coding Unit (コーディング・ユニット)
DVD:Digital Video Disc (デジタル・ビデオ・ディスク)
FPGA:Field Programmable Gate Areas (フィールド・プログラマブル・ゲート・エリア)
FIFO:First In First Out (先入れ先出し)
GBi:Generalized Bi-prediction (一般化双予測)
GOPs:Groups of Pictures (グループ・オブ・ピクチャ)
GPUs:Graphics Processing Units (グラフィックス処理ユニット)
GSM:Global System for Mobile communications (移動通信用グローバル・システム)
HDR:High Dynamic Range (ハイ・ダイナミック・レンジ)
HEVC:High Efficiency Video Coding (高効率ビデオ・コーディング)
HMVP:History-based Motion Vector Prediction (ヒストリ・ベース動きベクトル予測)
HRD:Hypothetical Reference Decoder (仮想参照デコーダ)
IC:Integrated Circuit (集積回路)
JEM:Joint Exploration Model (ジョイント探索モデル)
JVET:Joint Video Exploration Team (ジョイント・ビデオ探索チーム)
LAN:Local Area Network (ローカル・エリア・ネットワーク)
LCD:Liquid-Crystal Display (液晶ディスプレイ)
LTE:Long-Term Evolution (ロング・ターム・エボリューション)
MMVD:Merge with MVD (マージ・ウィズMVD)
MV:Motion Vector (動きベクトル)
MVD:Motion Vector Difference (動きベクトル差分)
MVP:Motion Vector Predictor (動きベクトル予測子)
OLED:Organic Light-Emitting Diode (有機発光ダイオード)
PBs:Prediction Blocks (予測ブロック)
PCI:Peripheral Component Interconnect (周辺コンポーネント相互接続)
PLD:Programmable Logic Device (プログラマブル・ロジック・デバイス)
PPS:Picture Parameter Set (ピクチャ・パラメータ・セット)
PUs:Prediction Units (予測ユニット)
RAM:Random Access Memory (ランダム・アクセス・メモリ)
RD:Rate Distortion (レート歪)
ROM:Read-Only Memory (リード・オンリ・メモリ)
SDR:Standard Dynamic Range (スタンダード・ダイナミック・レンジ)
SEI:Supplementary Enhancement Information (補助強化情報)
SNR:Signal Noise Ratio (信号雑音比)
SSD:Solid-State Drive (ソリッド・ステート・ドライブ)
SPS:Sequence Parameter Set (シーケンス・パラメータ・セット)
SbTMVP:Subblock-based Temporal Motion Vector Prediction (サブ・ブロック・ベース時間動きベクトル予測)
TMVP:Temporal Motion Vector Prediction (時間動きベクトル予測)
TUs:Transform Units (変換ユニット)
USB:Universal Serial Bus (ユニバーサル・シリアル・バス)
VTM:Versatile Test Model (多用途テスト・モデル)
VUI:Video Usability Information (ビデオ用途情報)
VVC:Versatile Video Coding (多用途ビデオ・コーディング)