図2は、本開示の一実施形態による、通信システム(200)の簡略化されたブロック図を示す。通信システム(200)は、たとえば、ネットワーク(250)を介して互いに通信することができる複数の端末デバイスを含む。たとえば、通信システム(200)は、ネットワーク(250)を介して相互接続された端末デバイス(210)および(220)の第1のペアを含む。図2の例では、端末デバイス(210)および(220)の第1のペアは、データの単方向送信を実行する。たとえば、端末デバイス(210)は、ネットワーク(250)を介して他の端末デバイス(220)に送信するためのビデオデータ(たとえば、端末デバイス(210)によってキャプチャされたビデオピクチャのストリーム)をコード化することができる。符号化ビデオデータは、1つまたは複数のコード化ビデオビットストリームの形態で送信することができる。端末デバイス(220)は、ネットワーク(250)からコード化ビデオデータを受信し、コード化ビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。単方向データ送信は、メディアサービングアプリケーションなどで一般的であり得る。
別の例では、通信システム(200)は、たとえばビデオ会議中に発生する可能性があるコード化ビデオデータの双方向送信を実行する端末デバイス(230)および(240)の第2のペアを含む。データの双方向送信の場合、一例では、端末デバイス(230)および(240)のうちの各端末デバイスは、ネットワーク(250)を介して端末デバイス(230)および(240)のうちの他の端末デバイスに送信するためのビデオデータ(たとえば、端末デバイスによってキャプチャされたビデオピクチャのストリーム)をコード化することができる。端末デバイス(230)および(240)のうちの各端末デバイスはまた、端末デバイス(230)および(240)のうちの他の端末デバイスによって送信されたコード化ビデオデータを受信することができ、コード化ビデオデータを復号してビデオピクチャを復元することができ、復元されたビデオデータに従ってアクセス可能なディスプレイデバイスにビデオピクチャを表示することができる。
図2の例では、端末デバイス(210)、(220)、(230)、および(240)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示される場合があるが、本開示の原理はそのように限定されなくてよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用のビデオ会議機器を用いるアプリケーションを見出す。ネットワーク(250)は、たとえば、電線(有線)および/またはワイヤレスの通信ネットワークを含む、端末デバイス(210)、(220)、(230)、および(240)の間でコード化ビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(250)は、回線交換チャネルおよび/またはパケット交換チャネルにおいてデータを交換することができる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本説明の目的のために、ネットワーク(250)のアーキテクチャおよびトポロジーは、本明細書において以下に説明されない限り、本開示の動作にとって重要でない可能性がある。
図3は、開示された主題についてのアプリケーション用の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示された主題は、たとえば、ビデオ会議、デジタルテレビ、CD、DVD、メモリスティックなどを含むデジタル媒体への圧縮ビデオの保存などを含む、他のビデオ対応アプリケーションに等しく適用可能であり得る。
ストリーミングシステムは、たとえば、圧縮されていないビデオピクチャのストリーム(302)を作成するビデオソース(301)、たとえば、デジタルカメラを含むことができるキャプチャサブシステム(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)から受信されてよく、チャネル(401)は、符号化ビデオデータを格納する記憶デバイスへのハードウェア/ソフトウェアリンクであってよい。受信機(431)は、それらのそれぞれの使用エンティティ(描写せず)に転送され得る他のデータ、たとえば、コード化オーディオデータおよび/または補助データストリームとともに符号化ビデオデータを受信することができる。受信機(431)は、コード化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対抗するために、バッファメモリ(415)は、受信機(431)とエントロピーデコーダ/パーサー(420)(以下、「パーサー(420)」)との間に結合されてよい。特定のアプリケーションでは、バッファメモリ(415)はビデオデコーダ(410)の一部である。他のアプリケーションでは、それはビデオデコーダ(410)の外側にあり得る(描写せず)。さらに他のアプリケーションでは、たとえば、ネットワークジッタに対抗するために、ビデオデコーダ(410)の外側にバッファメモリ(描写せず)が存在することができ、加えて、たとえば、プレイアウトタイミングを処理するために、ビデオデコーダ(410)の内側に別のバッファメモリ(415)が存在することができる。受信機(431)が十分な帯域幅および制御可能性のストア/フォワードデバイスから、または等同期ネットワークからデータを受信しているとき、バッファメモリ(415)は必要とされなくてよいか、または小さい可能性がある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(415)が必要とされる場合があり、比較的大きい可能性があり、有利なことに適応サイズであり得、オペレーティングシステムまたはビデオデコーダ(410)の外側の同様の要素(描写せず)に少なくとも部分的に実装されてよい。
ビデオデコーダ(410)は、コード化ビデオシーケンスからシンボル(421)を復元するためにパーサー(420)を含んでよい。これらのシンボルのカテゴリには、ビデオデコーダ(410)の動作を管理するために使用される情報、および潜在的に、電子デバイス(430)の不可欠な部分ではないが、図4に示されたように、電子デバイス(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などの規格における所定のビデオ圧縮技術に従って復号動作を実行することができる。コード化ビデオシーケンスがビデオ圧縮技術または規格の構文とビデオ圧縮技術において文書化されたプロファイルの両方を順守するという意味で、コード化ビデオシーケンスは、使用されているビデオ圧縮技術または規格によって指定された構文に準拠することができる。具体的には、プロファイルは、ビデオ圧縮技術または規格で使用可能なすべてのツールから、そのプロファイル下で使用するために利用可能な唯一のツールとしていくつかのツールを選択することができる。また、準拠するために必要なことは、コード化ビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることである。場合によっては、レベルにより、最大ピクチャサイズ、最大フレームレート、(たとえば、1秒あたりのメガサンプル単位で測定された)最大復元サンプルレート、最大参照ピクチャサイズなどが制限される。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)の仕様、およびコード化ビデオシーケンス内で通知されるHRDバッファ管理用のメタデータによってさらに制限され得る。
一実施形態では、受信機(431)は、符号化ビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コード化ビデオシーケンスの一部として含まれてよい。追加のデータは、データを適切に復号するために、かつ/または元のビデオデータをより正確に復元するために、ビデオデコーダ(410)によって使用されてよい。追加のデータは、たとえば、時間、空間、または信号ノイズ比(SNR)の拡張層、冗長スライス、冗長ピクチャ、順方向誤り訂正コードなどの形式であり得る。
図5は、本開示の一実施形態による、ビデオエンコーダ(503)のブロック図を示す。ビデオエンコーダ(503)は電子デバイス(520)に含まれる。電子デバイス(520)は送信機(540)(たとえば、送信回路)を含む。ビデオエンコーダ(503)は、図3の例のビデオエンコーダ(303)の代わりに使用することができる。
ビデオエンコーダ(503)は、ビデオエンコーダ(503)によってコード化されるビデオ画像をキャプチャすることができる(図5の例では電子デバイス(520)の一部ではない)ビデオソース(501)からビデオサンプルを受信することができる。別の例では、ビデオソース(501)は電子デバイス(520)の一部である。
ビデオソース(501)は、任意の適切なビット深度(たとえば、8ビット、10ビット、12ビット、…)、任意の色空間(たとえば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(たとえば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で、ビデオエンコーダ(503)によってコード化されるソースビデオシーケンスを提供することができる。メディアサービングシステムでは、ビデオソース(501)は、以前に準備されたビデオを格納する記憶デバイスであってよい。ビデオ会議システムでは、ビデオソース(501)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであってよい。ビデオデータは、順番に見たときに動きを伝える複数の個別のピクチャとして提供されてよい。ピクチャ自体は、ピクセルの空間配列として編成されてよく、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明はサンプルに焦点を当てる。
一実施形態によれば、ビデオエンコーダ(503)は、リアルタイムで、またはアプリケーションによって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコード化ビデオシーケンス(543)にコード化し圧縮することができる。適切なコーディング速度を強制することは、コントローラ(550)の1つの機能である。いくつかの実施形態では、コントローラ(550)は、以下に記載される他の機能ユニットを制御し、他の機能ユニットに機能的に結合されている。分かりやすくするために、結合は描写されていない。コントローラ(550)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値、…)、ピクチャサイズ、ピクチャグループ(GOP)のレイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(550)は、特定のシステム設計のために最適化されたビデオエンコーダ(503)に関連する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(503)は、コーディングループで動作するように構成される。単純化し過ぎた説明として、一例では、コーディングループは、(たとえば、コード化される入力ピクチャ、および参照ピクチャに基づいて、シンボルストリームなどのシンボルを作成することに関与する)ソースコーダ(530)、ならびにビデオエンコーダ(503)に組み込まれた(ローカル)デコーダ(533)を含むことができる。デコーダ(533)は、(シンボルとコード化ビデオビットストリームとの間のいかなる圧縮も、開示された主題で考慮されるビデオ圧縮技術において可逆であるため)(リモート)デコーダも作成するのと同様の方式で、シンボルを復元してサンプルデータを作成する。復元されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(534)に入力される。シンボルストリームの復号は、デコーダの場所(ローカルまたはリモート)に関係なくビット正確な結果につながるので、参照ピクチャメモリ(534)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えれば、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、たとえば、チャネルエラーのために同期性が維持できない場合に結果として生じるドリフト)のこの基本原理は、いくつかの関連技術でも使用される。
「ローカル」デコーダ(533)の動作は、図4とともに上記で詳細にすでに記載されている、ビデオデコーダ(410)などの「リモート」デコーダの動作と同じであり得る。しかしながら、また図4を簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(545)およびパーサー(420)によるコード化ビデオシーケンスへのシンボルの符号化/復号は可逆であり得るので、バッファメモリ(415)を含むビデオデコーダ(410)のエントロピー復号部分、およびパーサー(420)は、ローカルデコーダ(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つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、コード化および復号され得るピクチャであり得る。同様に、複数の予測ピクチャは、単一ブロックの復元のために3つ以上の参照ピクチャおよび関連するメタデータを使用することができる。
ソースピクチャは、通常、複数のサンプルブロック(たとえば、各々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)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは3つのコーディングツリーブロック(CTB)を含み、それらは1つのルーマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。たとえば、64×64ピクセルのCTUは、1つの64×64ピクセルのCU、または4つの32×32ピクセルのCU、または16個の16×16ピクセルのCUに分割することができる。一例では、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために、各CUが分析される。CUは、時間および/または空間の予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルーマ予測ブロック(PB)および2つのクロマPBを含む。一実施形態では、コーディング(符号化/復号)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例としてルーマ予測ブロックを使用すると、予測ブロックは、8x8ピクセル、16x16ピクセル、8x16ピクセル、16x8ピクセルなどのピクセルの値(たとえば、ルーマ値)の行列を含む。
図6は、本開示の別の実施形態による、ビデオエンコーダ(603)の図を示す。ビデオエンコーダ(603)は、ビデオピクチャのシーケンス内の現在ビデオピクチャ内のサンプル値の処理ブロック(たとえば、予測ブロック)を受信し、処理ブロックをコード化ビデオシーケンスの一部であるコード化ピクチャに符号化するように構成される。一例では、ビデオエンコーダ(603)は、図3の例のビデオエンコーダ(303)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(603)は、8×8サンプルの予測ブロックなどの処理ブロック用のサンプル値の行列を受信する。ビデオエンコーダ(603)は、処理ブロックが、たとえば、レート歪み最適化を使用して、イントラモード、インターモード、またはバイ予測モードを使用して最適にコード化されるかどうかを判定する。処理ブロックがイントラモードでコード化されるとき、ビデオエンコーダ(603)は、イントラ予測技法を使用して、処理ブロックをコード化ピクチャに符号化することができ、処理ブロックがインターモードまたはバイ予測モードでコード化されるとき、ビデオエンコーダ(603)は、それぞれ、インター予測技法またはバイ予測技法を使用して、処理ブロックをコード化ピクチャに符号化することができる。特定のビデオコーディング技術では、マージモードは、予測器の外側のコード化された動きベクトル成分の利点がない、動きベクトルが1つまたは複数の動きベクトル予測器から導出されるインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在してよい。一例では、ビデオエンコーダ(603)は、処理ブロックのモードを決定するためにモード決定モジュール(図示せず)などの他の構成要素を含む。
図6の例では、ビデオエンコーダ(603)は、図6に示されたように一緒に結合されたインターエンコーダ(630)、イントラエンコーダ(622)、残差計算機(623)、スイッチ(626)、残差エンコーダ(624)、汎用コントローラ(621)、およびエントロピーエンコーダ(625)を含む。
インターエンコーダ(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)は、図7に示されたように一緒に結合されたエントロピーデコーダ(771)、インターデコーダ(780)、残差デコーダ(773)、復元モジュール(774)、およびイントラデコーダ(772)を含む。
エントロピーデコーダ(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つまたは複数のプロセッサを使用して実装することができる。
本開示の態様は、たとえば、HEVCを超えてVVCで使用される三角区分モード(TPM)または幾何マージモード(GEO)のための三角マージ候補の最大数のシグナリングなどのビデオコーディング技術に関する。
インター予測のための三角区分は後述することができる。TPMは、インター予測のために、たとえばVVCにおいてサポートすることができる。一例では、TPMは、8×8以上のCUにのみ適用される。TPMは、通常マージモード、動きベクトル差を伴うマージモード(MMVD)モード、結合されたインター予測およびイントラ予測(CIIP)モード、サブブロックマージモードなどを含む他のマージモードとともに、一種のマージモードとしてCUレベルフラグを使用してシグナリングすることができる。
図8A~図8Bは、本開示の一実施形態による、三角区分ベースのインター予測の例を示す図である。TPMが使用されるとき、CU(800)は、対角分割または反対角分割のいずれかを使用して、2つの(三角区分または区分とも呼ばれる)三角形区分(たとえば、図8Aの区分1(811)および区分2(812)ならびに図8Bの区分1(821)および区分2(822))に均等に分割することができる。区分(811)~(812)は、ライン(810)によって分割される。区分(821)~(822)は、ライン(820)によって分割される。CU(800)内の各三角区分は、それぞれの三角区分の動き情報を使用してインター予測される。一例では、各三角区分に対して単予測のみが許可され、したがって、各三角区分は1つのMVおよび1つの参照インデックスを有する。単予測動き制約は、CUに適用される双予測と同じである2つの動き補償予測のみが各CUに使用されることを保証するために適用することができる。
現在CUにTPMが使用される場合、三角区分の方向(たとえば、対角分割または反対角分割)を示すフラグおよび2つのマージインデックス(区分ごとに1つ)は、さらにシグナリングすることができる。TPMマージ候補の最大数を示すパラメータは、ピクチャパラメータセット(PPS)レベル、ピクチャヘッダ(PH)レベルなどで明示的にシグナリングすることができる。三角区分(たとえば、図8Aの区分(811)~(812)または図8Bの区分(821)~(822))の各々の中のサンプルを予測した後、対角エッジまたは反対角エッジに沿ったサンプルの値は、適応重みを有するブレンド処理を使用して調整することができる。CU(800)用の予測信号を導出した後、他の予測モードにおけるように、CU(800)に変換プロセスおよび量子化プロセスをさらに適用することができる。
(幾何分割モードとも呼ばれる)幾何マージモードは、複数の異なる分割方式をサポートすることができる。図9は、例示的な幾何マージモードを示す図である。幾何マージモードでは、CU(900)は、ラインまたはエッジ(910)によって分割された2つの区分、区分1~2に区分化することができる。2つの区分の各々は、三角形、台形、五角形などの任意の適切な形状を有することができる。
ライン(910)がライン(810)またはライン(820)であるとき、幾何マージモードはTPMである。一例では、TPMは幾何マージモードの一例であり、幾何マージモードはTPMを含む。本開示におけるTPMについての説明(実施形態、例など)は、たとえば、TPMを幾何マージモードと置き換えることにより、幾何マージモードに適切に適合させることができる。本開示における幾何マージモードについての説明(実施形態、例など)は、たとえば、幾何マージモードをTPMと置き換えることにより、TPMに適切に適合させることができる。
TPMは、高いレベルで制御することができる。高いレベルは、ピクチャヘッダ(PH)、PPS、シーケンスパラメータセット(SPS)、またはビデオパラメータセット(VPS)に関連付けられたピクチャレベル、PPSレベル、シーケンスレベル、またはビデオレベルを指すことができる。一例では、高いレベルはサブピクチャレベル(たとえば、スライスレベル)を指さない。
TPMは、SPS構文要素を使用してシーケンスレベルで制御(たとえば、有効化または無効化)することができる。図10は、TPMの例示的なシーケンスレベル制御を示す。シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)は、三角形ベースの動き補償がインター予測に使用され得るかどうかを指定することができる。0に等しいシーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)は、三角形ベースの動き補償がコード化レイヤビデオシーケンス(CLVS)で使用されず、TPMに関連するパラメータまたは構文要素(たとえば、merge_triangle_split_dir、merge_triangle_idx0、およびmerge_triangle_idx1)がCLVSのコード化ユニット構文に存在しないように構文が制約されることを指定することができる。1に等しいシーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)は、三角形ベースの動き補償がCLVSで使用され得ることを指定することができる。
TPMマージ候補の最大数を示すパラメータは、上位レベル(たとえば、PPSにおけるPPSレベル、PHにおけるピクチャレベル、または別の高いレベル)で明示的にシグナリングすることができる。図11は、TPMマージ候補の最大数がPPS内でシグナリングされ得る例示的なPPS生バイトシーケンスペイロード(RBSP)を示す。一例では、TPMマージ候補の最大数を示すために、PPSレベルパラメータまたはPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)がPPS内で明示的にシグナリングされる。図12は、TPMマージ候補の最大数がピクチャヘッダ内でシグナリングされ得る例示的なピクチャヘッダRBSPを示す。一例では、TPMマージ候補の最大数を示すために、ピクチャヘッダレベルパラメータまたはピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)がピクチャヘッダ内で明示的にシグナリングされる。
0に等しいPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が、PPSを参照するスライスのPH内に存在する(たとえば、シグナリングされる)ことを指定することができる。0より大きいPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が、PPSを参照するPH内に存在しない(たとえば、シグナリングされない)ことを指定することができる。PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)の値は、0~MaxNumMergeCand-1の範囲内であり得、MaxNumMergeCandは通常のマージモード用のマージ候補リスト内のマージ候補の最大数である。PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)が存在しないとき、PPSレベルパラメータは0であると推測することができる。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、マージ候補の最大数(MaxNumMergeCand)から減算された、ピクチャヘッダに関連付けられたスライス内でサポートされる三角マージモード候補の最大数(MaxNumTriangleMergeCand)を指定することができる。
一例では、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず(たとえば、シグナリングされず)、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1に等しく、MaxNumMergeCandが2以上であるとき、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、(pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1-1)に等しいと推測される。
三角マージモード候補の最大数(MaxNumTriangleMergeCand)は、MaxNumMergeCandおよびピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)に基づいて決定することができる。一例では、MaxNumTriangleMergeCandは、式1を使用して決定される。
MaxNumTriangleMergeCand=MaxNumMergeCand-pic_max_num_merge_cand_minus_max_num_triangle_cand(式1)
一例では、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在するとき、MaxNumTriangleMergeCandの値は、2以上MaxNumMergeCand以下の範囲内である。たとえば、MaxNumMergeCandが4である場合、範囲は[2,3,4]であり、MaxNumTriangleMergeCandは2、3、および4のうちの1つである。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず、2つの条件のうちの1つが真であるとき、MaxNumTriangleMergeCandは0に等しく設定される。2つの条件は、(i)シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が0に等しいこと、および(ii)MaxNumMergeCandが2未満であることを含む。
一例では、MaxNumTriangleMergeCandが0に等しいとき、TPMはPHに関連付けられたスライスに対して許可されない。
PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)、およびMaxNumMergeCandは、MaxNumTriangleMergeCandを決定するために使用することができる。MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値を超えないように指定することができる。MaxNumTriangleMergeCandの値は、たとえば、特定の用途に応じて変化することができる。PPSシグナリングは、MaxNumTriangleMergeCandの値が頻繁に変化しないときに有効であり得、したがって、ピクチャごとにシグナリングされる必要はない。一方、ピクチャヘッダシグナリングは、MaxNumTriangleMergeCandがより頻繁に、たとえば、あるピクチャから別のピクチャに変化するときに有効であり得る。
PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)、MaxNumMergeCandの値、およびシーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)は、MaxNumTriangleMergeCandの値を決定するために使用することができる。PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)の値は、0~(MaxNumMergeCandの値-1)の範囲内であり得る。
一例では、PPSレベルパラメータは構文解析されるかまたは0であると推測され、シーケンスレベル三角フラグはTPMが無効にであることを示す0であり、ピクチャレベルパラメータは存在せず、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値にかかわらず0である。
一例では、PPSレベルパラメータは構文解析されるかまたは0であると推測され、シーケンスレベル三角フラグはTPMが有効であることを示す1であり、ピクチャレベルパラメータは存在せず、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値が2未満であるとき0である。
一例では、PPSレベルパラメータは構文解析されるかまたは0であると推測され、シーケンスレベル三角フラグはTPMが有効であることを示す1であり、ピクチャレベルパラメータは存在し構文解析され、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値が2以上であるとき、(MaxNumMergeCand-ピクチャレベルパラメータの値)(たとえば、MaxNumMergeCand-pic_max_num_merge_cand_minus_max_num_triangle_cand)である。MaxNumTriangleMergeCandの値は、2以上MaxNumMergeCand以下の範囲であり得る。
一例では、PPSレベルパラメータは構文解析され、0ではなく、シーケンスレベル三角フラグはTPMが無効であることを示す0であり、ピクチャレベルパラメータは存在せず、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値にかかわらず0である。
一例では、PPSレベルパラメータは構文解析され、0ではなく、シーケンスレベル三角フラグはTPMが有効であることを示す1であり、ピクチャレベルパラメータは存在せず、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値が2未満であるとき0である。
一例では、PPSレベルパラメータは構文解析され、0ではなく、シーケンスレベル三角フラグはTPMが有効であることを示す1であり、ピクチャレベルパラメータは存在せず、(PPSレベルパラメータの値-1)(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1-1)であると推測され、MaxNumTriangleMergeCandの値は、MaxNumMergeCandの値が2以上であるとき、(MaxNumMergeCand-(PPSレベルパラメータの値-1))(たとえば、MaxNumMergeCand-(pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1-1))である。
三角マージ候補の最大数をシグナリングする設計は困難であり得る。MaxNumMergeCandの値が2であり、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1であり、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)が0であるとき、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、ピクチャヘッダ内でシグナリングすることができ(図12を参照)、その後構文解析することができる。しかしながら、上述されたように、pic_max_num_merge_cand_minus_max_num_triangle_candが存在するとき、MaxNumTriangleMergeCandの値は、2以上MaxNumMergeCand以下の範囲内である。したがって、MaxNumMergeCandの値も2であるので、MaxNumTriangleMergeCandは2であると推測することができる。したがって、pic_max_num_merge_cand_minus_max_num_triangle_candの構文解析は冗長であり得る。
本開示の態様によれば、図13に示されたように、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、ピクチャヘッダ内でシグナルされ、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1であり、MaxNumMergeCandが2より大きく、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)が0であるときにのみ復号される。あるいは、図14に示されたように、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、ピクチャヘッダ内でシグナルされ、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1であり、MaxNumMergeCandが3以上であり、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)が0であるときにのみ復号される。
図13は、TPMマージ候補の最大数が、ピクチャヘッダレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)を使用してピクチャヘッダ内でシグナリングされる例示的なピクチャヘッダ構文を示す。図13のボックス(1310)は、図12に示された構文(たとえば、MaxNumMergeCandが2以上である)と図13に示された構文(たとえば、MaxNumMergeCandが2より大きい)との間の違いを示す。
ピクチャヘッダレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、マージ候補の最大数(MaxNumMergeCand)から減算された、ピクチャヘッダに関連付けられたスライス内でサポートされる三角マージモード候補の最大数(MaxNumTriangleMergeCand)を指定することができる。
一例では、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず(たとえば、シグナリングされず)、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1に等しく、MaxNumMergeCandが2以上であるとき、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、(pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1-1)に等しいと推測される。
三角マージモード候補の最大数(MaxNumTriangleMergeCand)は、MaxNumMergeCandおよびピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)に基づいて決定することができる。一例では、MaxNumTriangleMergeCandは、式1を使用して決定される。
一例では、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在するとき、MaxNumTriangleMergeCandの値は、2以上MaxNumMergeCand以下の範囲内である。本開示の態様によれば、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず、MaxNumMergeCandが2であるとき、MaxNumTriangleMergeCandは2である。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず、2つの条件のうちの1つが真であるとき、MaxNumTriangleMergeCandは0に等しく設定される。上述されたように、2つの条件は、(i)シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が0に等しいこと、および(ii)MaxNumMergeCandが2未満であることを含む。
一例では、MaxNumTriangleMergeCandが0に等しいとき、TPMはピクチャヘッダに関連付けられたスライスに対して許可されない。
図14は、TPMマージ候補の最大数が、たとえば、ピクチャヘッダレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)を使用してピクチャヘッダ内でシグナリングされる例示的なピクチャヘッダ構文を示す。図14のボックス(1410)は、図12に示された構文(たとえば、MaxNumMergeCandが2以上である)と図14に示された構文(たとえば、MaxNumMergeCandが3以上である)との間の違いを示す。
一般に、現在のピクチャのためのコーディング情報は、コード化ビデオビットストリームから復号することができる。コーディング情報は、幾何マージモードがシーケンスレベルで有効にされ、幾何マージモードマージ候補の最大数を示すPPS内のPPSレベルパラメータが0であることを示すことができる。一例では、幾何マージモードはTPMである。さらに、コーディング情報はマージ候補の最大数を示すことができる。マージ候補の最大数が条件を満たすとき、コード化ビデオビットストリーム内の現在のピクチャについてシグナリングされたピクチャレベルパラメータは復号することができる。ピクチャレベルパラメータは、幾何マージモードマージ候補の最大数を示すことができる。一例では、幾何マージモードマージ候補の最大数は、TPMマージ候補の最大数である。
一例では、マージ候補の最大数が条件を満たさないとき、コード化ビデオビットストリーム内でシグナリングされないピクチャレベルパラメータは復号されない。一例では、ピクチャレベルパラメータはコード化ビデオビットストリーム内でシグナリングされず、マージ候補の最大数は2であり、条件を満たさないので、TPMマージ候補の最大数は2であると決定される。
一例では、条件は、(i)マージ候補の最大数が2より大きいこと、および(ii)マージ候補の最大数が3以上であること、のうちの1つである。
いくつかの例では、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1であり、MaxNumMergeCandが2以上であるとき、TPMはいくつかのピクチャに対して無効にすることができない。したがって、たとえば、TPM制御(たとえば、いくつかのピクチャに対してTPMを無効にすること)では、ピクチャレベルは柔軟性を欠く。
一実施形態では、TPMがシーケンスレベルで無効であるとき、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、シグナリングオーバーヘッドを低減するために復号されるべきでない。いくつかの例(たとえば、図11)では、TPMのシーケンスレベル制御にかかわらず、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、フラグ(たとえば、constant_slice_header_params_enabled_flag)が1に等しいときに復号され、したがって、たとえば、シーケンスレベルでのシグナリング効率は比較的低くなり得る。
本開示の態様によれば、現在のピクチャのためのコーディング情報は、コード化ビデオビットストリームから復号することができる。コーディング情報は、現在のピクチャのピクチャレベルより高いコーディングレベルに対して幾何マージモードが有効にされ、(たとえば、通常マージモードの場合の)マージ候補の最大数が条件を満たすことを示すことができる。ピクチャレベルより高いコーディングレベルはシーケンスレベルであり得る。条件は、マージ候補の最大数が2以上であることを含むことができる。
幾何マージモードマージ候補の最大数(たとえば、MaxNumTriangleMergeCand)を示すピクチャレベルパラメータが、コード化ビデオビットストリーム内の現在のピクチャについてシグナリングされるとき、現在のピクチャのための幾何マージモードマージ候補の最大数は、ピクチャレベルパラメータおよびマージ候補の最大数(MaxNumMergeCand)に基づいて決定することができる。本開示の態様によれば、幾何マージモードマージ候補の最大数は、0および2以上マージ候補の最大数以下の部分範囲を含む範囲内であり得る。一例では、MaxNumMergeCandが4である場合、部分範囲は2~4である。範囲は、0および2~4すなわち[0,2,3,4]を含む。あるいは、幾何マージモードマージ候補の最大数は、(i)0、または(ii)2からマージ候補の最大数までのうちの1つ、であり得る。一例では、MaxNumMergeCandが4である場合、幾何マージモードマージ候補の最大数は0、2、3、または4であり得る。
一例では、幾何マージモードはTPMであり、幾何マージモードマージ候補の最大数は、TPMマージ候補の最大数である。ピクチャレベルパラメータは、pic_max_num_merge_cand_minus_max_num_triangle_candであり得る。
幾何マージモードマージ候補の最大数(たとえば、TPMマージ候補の最大数)が0であるとき、幾何マージモード(たとえば、TPM)は現在のピクチャに対して無効にされる。幾何マージモードマージ候補の最大数(たとえば、TPMマージ候補の最大数)が0でない(たとえば、0より大きい)とき、幾何マージモード(たとえば、TPM)は現在のピクチャに対して有効にされる。
TPMマージ候補の最大数は、たとえば、式(1)を使用して、マージ候補の最大数からピクチャレベルパラメータを減算することによって決定することができる。
上記の説明は、TPMがシーケンスレベルで有効にされ、MaxNumMergeCandが2以上であるとき、いくつかのピクチャに対してTPMを無効にする機能をサポートすることができる。したがって、ピクチャレベルの柔軟性がサポートされる。
一実施形態では、pic_max_num_merge_cand_minus_max_num_triangle_candが存在する(たとえば、シグナリングされる)とき、MaxNumTriangleMergeCandの値は、0、2以上MaxNumMergeCand以下の範囲内であり得る。
したがって、pic_max_num_merge_cand_minus_max_num_triangle_candが存在するとき、pic_max_num_merge_cand_minus_max_num_triangle_candの値は、MaxNumMergeCandの値と等しくなり得る。したがって、MaxNumTriangleMergeCandの値は0であり得、それはピクチャレベルでTPMを無効にするピクチャレベル制御である。
TPMマージ候補の最大数を示すPPSレベルパラメータまたはPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、現在のピクチャに関連付けられたPPSのためのコード化ビデオビットストリーム内でシグナリングすることができる。PPSレベルパラメータは、(i)0から(マージ候補の最大数-1)までのうちの1つ、または(ii)(マージ候補の最大数+1)であり得る。たとえば、MaxNumMergeCandが4であるとき、PPSレベルパラメータは0、1、2、3、または5であり得る。
PPSレベルパラメータは、0以上(マージ候補の最大数-1)以下の部分範囲、および(マージ候補の最大数+1)を含む範囲内であり得る。一例では、図11の構文要素を参照すると、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、0以上(MaxNumMergeCand-1)以下、および(MaxNumMergeCand+1)の範囲内であるべきである。たとえば、MaxNumMergeCandが4であるとき、PPSレベルパラメータ用の部分範囲は0~3であり、PPSレベルパラメータ用の範囲は0~3、および5である。あるいは、PPSレベルパラメータ用の範囲は[0,1,2,3,5]を含む。
一実施形態では、(たとえば、現在のピクチャに関連付けられたPPSのための)TPMマージ候補の最大数を示すPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、コード化ビデオビットストリーム内でシグナリングされない。たとえば、図15を参照すると、ボックス(1510)は、TPMがピクチャレベルで無効にされるべきときにTPMの単純な制御を有するために、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1が図11のPPS RBSPから除去されることを示す。
図16Aを参照すると、コード化ビデオビットストリームは、現在のピクチャのためのピクチャヘッダを含むことができる。ピクチャレベルパラメータは、TPMがシーケンスレベルに対して有効にされ(たとえば、sps_triangle_enabled_flagなどのシーケンスレベル三角フラグが1であり)、マージ候補の最大数が2以上であるときに、ピクチャヘッダ内でシグナリングすることができる。ピクチャレベルパラメータのシグナリングは、PPSレベルパラメータから独立することができる。
ボックス(1610)は、ピクチャレベルパラメータのシグナリングがPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)から独立できることを示す。さらに、図16Bのボックス(1620)によって示されたように、以下の説明:「ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず(たとえば、シグナリングされず)、シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が1に等しく、MaxNumMergeCandが2以上であるとき、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、(pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1-1)に等しいと推測される」は、ピクチャレベルパラメータのシグナリングがPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)から独立しているときには適用されない。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、マージ候補の最大数(MaxNumMergeCand)から減算された、ピクチャヘッダに関連付けられたスライス内でサポートされる三角マージモード候補の最大数(MaxNumTriangleMergeCand)を指定することができる。
三角マージモード候補の最大数(MaxNumTriangleMergeCand)は、たとえば、式1を使用して、MaxNumMergeCandおよびピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)に基づいて決定することができる。
一例では、ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在するとき、MaxNumTriangleMergeCandの値は、2以上MaxNumMergeCand以下の範囲内である。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在せず、2つの条件のうちの1つが真であるとき、MaxNumTriangleMergeCandは0に等しく設定される。2つの条件は、(i)シーケンスレベル三角フラグ(たとえば、sps_triangle_enabled_flag)が0に等しいこと、および(ii)MaxNumMergeCandが2未満であることを含む。
一例では、MaxNumTriangleMergeCandが0に等しいとき、TPMはPHに関連付けられたスライスに対して許可されない。
コード化ビデオビットストリームは、現在のピクチャに関連付けられたPPSを含むことができる。TPMマージ候補の最大数を示すPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、少なくともPPSレベルパラメータがシグナリングされるべきことを示すPPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)に基づいて、PPS(たとえば、図17のPPS RBSP)内でシグナリングすることができる。図17を参照すると、ボックス(1610)は、PPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)がPPS RBSP内でシグナリングされることを示す。ボックス(1620)によって示されたように、PPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)が真である(たとえば、1の値を有する)とき、PPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)は、PPS RBSP内でシグナリングすることができる。図17を参照すると、一例では、PPSレベルパラメータは、PPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)が真であり、フラグ(たとえば、constant_slice_header_params_enabled_flag)が真であるときにシグナリングされる。
PPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)は、ビットストリーム(たとえば、コード化ビデオビットストリーム)内の構文要素(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand)の存在を指定することができる。pps_max_num_triangle_merge_cand_present_flagが1に等しいとき、pps_max_num_merge_cand_minus_max_num_triangle_candは存在することができる。pps_max_num_triangle_merge_cand_present_flagが0に等しいとき、pps_max_num_merge_cand_minus_max_num_triangle_candは存在しない。pps_max_num_triangle_merge_cand_present_flagが存在しないとき、pps_max_num_triangle_merge_cand_present_flagは0であると推測することができる。sps_triangle_enabled_flagの値が0であるとき、pps_max_num_triangle_merge_cand_present_flagの値が0に等しいことがビットストリーム適合性の要件である。
pps_max_num_merge_cand_minus_max_num_triangle_candは、PPS内で参照されるピクチャにおいてサポートされるTPMマージ候補の最大数を指定することができる。たとえば、TPMマージ候補の最大数は式1を使用して取得される。
pps_max_num_merge_cand_minus_max_num_triangle_candが存在しないとき、pps_max_num_merge_cand_minus_max_num_triangle_candは0に等しいと推測することができる。
図18を参照すると、コード化ビデオビットストリームは、現在のピクチャのためのピクチャヘッダを含むことができる。ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、(シーケンスレベル三角フラグ、たとえば、sps_triangle_enabled_flagが1に等しい)シーケンスレベルに対してTPMが有効にされ、マージ候補の最大数が2以上(MaxNumMergeCand≧2)であり、PPSレベルフラグ(たとえば、pps_max_num_triangle_merge_cand_present_flag)が、ボックス(1810)によって示されたように、PPSレベルパラメータがシグナリングされないことを示す(たとえば、pps_max_num_triangle_merge_cand_present_flagが0である)とき、ピクチャヘッダ(たとえば、図18のピクチャヘッダRBSP)内でシグナリングすることができる。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)は、PHに関連付けられたスライスにおいてサポートされるTPMマージ候補の最大数を指定することができる。一例では、TPMマージ候補の最大数は式1を使用して取得される。
ピクチャレベルパラメータ(たとえば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在しないとき、ピクチャレベルパラメータは、PPSパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand)の値に等しいと推測することができる。
TPMマージ候補の最大数(MaxNumTriangleMergeCand)は以下のように導出することができる:(i)sps_triangle_enabled_flagが1に等しく、MaxNumMergeCandが2以上である場合、MaxNumTriangleMergeCandは式1を使用して決定することができ、(ii)そうでない場合、MaxNumTriangleMergeCandは0に設定することができる。
MaxNumTriangleMergeCandが0に等しいとき、TPMはPHに関連付けられたスライスに対して許可されない。
図19を参照すると、コード化ビデオビットストリームは、現在のピクチャに関連付けられたPPSを含むことができる。TPMマージ候補の最大数を示すPPSレベルパラメータ(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand)は、TPMがシーケンスレベルに対して有効にされることに少なくとも基づいて、PPS(たとえば、図19のPPS RBSP)内でシグナリングすることができる。
ボックス(1910)は、構文要素(たとえば、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1)を復号するかどうかを決定するために、シーケンスレベルTPM有効化/無効化フラグが使用され得ることを示す。シーケンスレベルTPM有効化/無効化フラグは、sps_triangle_enabled_flagであり得る。
図20は、本開示の一実施形態による、プロセス(2000)を概説するフローチャートである。プロセス(2000)は、幾何マージモード用の幾何マージモードマージ候補の最大数を示すパラメータをシグナリングする際に使用することができる。様々な実施形態では、プロセス(2000)は、端末デバイス(210)、(220)、(230)、および(240)内の処理回路、ビデオエンコーダ(303)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオエンコーダ(503)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(2000)はソフトウェア命令内に実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(2000)を実行する。プロセスは(S2001)から始まり、(S2010)に進む。
(S2010)において、コード化ビデオビットストリームから現在のピクチャのためのコーディング情報を復号することができる。コーディング情報は、幾何マージモードが現在のピクチャのピクチャレベルより高いコーディングレベルに対して有効にされ、マージ候補の最大数が条件を満たすことを示すことができる。
(S2020)において、ピクチャレベルパラメータがコード化ビデオビットストリーム内の現在のピクチャについてシグナリングされるとき、ピクチャレベルパラメータおよびマージ候補の最大数に基づいて、幾何マージモードマージ候補の最大数を決定することができる。幾何マージモードマージ候補の最大数は、(i)0、または(ii)2からマージ候補の最大数までのうちの1つ、であり得る。一例では、幾何マージモードはTPMであり、幾何マージモードマージ候補の最大数は、TPMマージ候補の最大数である。ピクチャレベルパラメータは、幾何マージモードマージ候補の最大数を示すことができる。幾何マージモードは、幾何マージモードマージ候補の最大数が0であることに基づいて、現在のピクチャに対して無効にすることができる。幾何マージモードは、幾何マージモードマージ候補の最大数が0でないことに基づいて、現在のピクチャに対して有効にすることができる。
一例では、(S2030)において、幾何マージモードマージ候補の最大数が0であるかどうかを判定することができる。幾何マージモードマージ候補の最大数が0であると判定された場合、プロセス(2000)は(S2040)に進む。そうでない場合、プロセス(2000)は(S2050)に進む。
(S2040)において、現在のピクチャに対して幾何マージモードを無効にすることができる。プロセス(2000)は(S2099)に進み、終了する。
(S2050)において、現在のピクチャに対して幾何マージモードを有効にすることができる。プロセス(2000)は(S2099)に進み、終了する。
プロセス(2000)は適切に適合させることができる。プロセス(2000)のステップは、修正および/または省略することができる。さらなるステップを追加することができる。任意の適切な実施順序を使用することができる。
図21は、本開示の一実施形態による、プロセス(2100)を概説するフローチャートである。プロセス(2100)は、幾何マージモード用の幾何マージモードマージ候補の最大数を示すパラメータをシグナリングする際に使用することができる。様々な実施形態では、プロセス(2100)は、端末デバイス(210)、(220)、(230)、および(240)内の処理回路、ビデオエンコーダ(303)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオエンコーダ(503)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(2100)はソフトウェア命令内に実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(2100)を実行する。プロセスは(S2101)から始まり、(S2110)に進む。
(S2110)において、コード化ビデオビットストリームから現在のピクチャのためのコーディング情報を復号することができる。コーディング情報は、幾何マージモードがシーケンスレベルで有効にされること、ピクチャパラメータセット(PPS)内のPPSレベルパラメータが0であること、およびマージ候補の最大数を示すことができる。PPSレベルパラメータは、幾何マージモードマージ候補の最大数を示すことができる。一例では、幾何マージモードはTPMであり、幾何マージモードマージ候補の最大数は、TPMマージ候補の最大数である。
(S2120)において、コード化ビデオビットストリーム内の現在のピクチャについてシグナリングされたピクチャレベルパラメータは、マージ候補の最大数が条件を満たすときに復号することができる。ピクチャレベルパラメータは、幾何マージモードマージ候補の最大数を示すことができる。幾何マージモードは三角区分モード(TPM)であり得、幾何マージモードマージ候補の最大数はTPMマージ候補の最大数である。条件は、(i)マージ候補の最大数が2より大きいこと、および(ii)マージ候補の最大数が3以上であること、のうちの1つであり得る。プロセス(2100)は(S2199)に進み、終了する。
プロセス(2100)は適切に適合させることができる。プロセス(2100)のステップは、修正および/または省略することができる。さらなるステップを追加することができる。任意の適切な実施順序を使用することができる。たとえば、マージ候補の最大数が条件を満たさないとき、ピクチャレベルパラメータは復号されない。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)の各々、エンコーダ、およびデコーダは、処理回路(たとえば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。たとえば、図22は、開示された主題のいくつかの実施形態を実装するのに適したコンピュータシステム(2200)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによる、直接、または解釈、マイクロコード実行などを介して実行することができる命令を含むコードを作成するために、アセンブル、コンパイル、リンク、または同様のメカニズムを受けることができる任意の適切な機械語またはコンピュータ言語を使用してコーディングすることができる。
命令は、たとえば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはその構成要素上で実行することができる。
コンピュータシステム(2200)について図22に示された構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲または機能に関するいかなる制限も示唆するものではない。構成要素の構成は、コンピュータシステム(2200)の例示的な実施形態に示された構成要素のいずれか1つまたは組み合わせに関するいかなる依存性または要件も有すると解釈されるべきでない。
コンピュータシステム(2200)は、特定のヒューマンインターフェース入力デバイスを含んでよい。そのようなヒューマンインターフェース入力デバイスは、たとえば、(キーストローク、スワイプ、データグローブの動きなどの)触覚入力、(音声、拍手などの)オーディオ入力、(ジェスチャなどの)視覚入力、(描写されていない)嗅覚入力を介して、1人または複数の人間のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、(音声、音楽、周囲の音などの)オーディオ、(スキャン画像、静止画カメラから取得された写真画像などの)画像、(2次元ビデオ、立体ビデオを含む3次元ビデオなどの)ビデオなどの、人間による意識的な入力に必ずしも直接関連しない特定の媒体をキャプチャするために使用することもできる。
入力ヒューマンインターフェースデバイスには、キーボード(2201)、マウス(2202)、トラックパッド(2203)、タッチスクリーン(2210)、データグローブ(図示せず)、ジョイスティック(2205)、マイクロフォン(2206)、スキャナ(2207)、カメラ(2208)のうちの1つまたは複数が含まれてよい(各々の1つのみが描写されている)。
コンピュータシステム(2200)は、特定のヒューマンインターフェース出力デバイスも含んでよい。そのようなヒューマンインターフェース出力デバイスは、たとえば、触覚出力、音、光、および嗅覚/味覚を介して、1人または複数の人間のユーザの感覚を刺激している場合がある。そのようなヒューマンインターフェース出力デバイスには、触覚出力デバイス(たとえば、タッチスクリーン(2210)、データグローブ(図示せず)、またはジョイスティック(2205)による触覚フィードバック、しかし入力デバイスとして機能しない触覚フィードバックデバイスが存在する可能性もある)、(スピーカ(2209)、ヘッドフォン(描写せず)などの)オーディオ出力デバイス、(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2210)など、各々タッチスクリーン入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にかかわらず、それらのうちのいくつかは、ステレオグラフィック出力、仮想現実眼鏡(描写せず)、ホログラフィックディスプレイおよびスモークタンク(描写せず)などの手段を介して2次元視覚出力または3次元以上の出力を出力することが可能な場合がある)視覚出力デバイス、ならびにプリンタ(描写せず)が含まれてよい。
コンピュータシステム(2200)は、CD/DVDまたは同様の媒体(2221)を有するCD/DVD ROM/RW(2220)を含む光学媒体、サムドライブ(2222)、リムーバブルハードドライブまたはソリッドステートドライブ(2223)、テープおよびフロッピーディスクなどのレガシー磁気媒体(描写せず)、セキュリティドングルなどの特殊なROM/ASIC/PLDベースのデバイス(描写せず)などの、人間がアクセス可能な記憶デバイスおよびそれらに関連する媒体を含むこともできる。
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(2200)は、1つまたは複数の通信ネットワークへのインターフェースを含むこともできる。ネットワークは、たとえば、ワイヤレス、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネット、ワイヤレスLANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上波ブロードキャストTVを含むTVの有線またはワイヤレスの広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、通常、(たとえば、コンピュータシステム(2200)のUSBポートなどの)特定の汎用データポートまたは周辺バス(2249)に取り付けられた外部ネットワークインターフェースアダプタを必要とし、他のネットワークは、通常、以下に記載されるシステムバスに取り付けることによってコンピュータシステム(2200)のコアに統合される(たとえば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(2200)は他のエンティティと通信することができる。そのような通信は、単方向受信のみ(たとえば、ブロードキャストTV)、単方向送信のみ(たとえば、特定のCANbusデバイスへのCANbus)、または、たとえば、ローカルもしくは広域のデジタルネットワークを使用する他のコンピュータシステムとの双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述されたこれらのネットワークおよびネットワークインターフェースの各々で使用することができる。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(2200)のコア(2240)に取り付けることができる。
コア(2240)は、1つまたは複数の中央処理装置(CPU)(2241)、グラフィックス処理装置(GPU)(2242)、フィールドプログラマブルゲートエリア(FPGA)(2243)、特定のタスク用のハードウェアアクセラレータ(2244)などの形態の特殊なプログラマブル処理装置を含むことができる。これらのデバイスは、リードオンリメモリ(ROM)(2245)、ランダムアクセスメモリ(2246)、内部のユーザがアクセスできないハードドライブ、SSDなどの内部大容量記憶(2247)とともに、システムバス(2248)を介して接続されてよい。いくつかのコンピュータシステムでは、システムバス(2248)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺機器は、コアのシステムバス(2248)に直接取り付けることも、周辺バス(2249)を介して取り付けることもできる。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(2241)、GPU(2242)、FPGA(2243)、およびアクセラレータ(2244)は、組み合わせて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(2245)またはRAM(2246)に記憶することができる。移行データもRAM(2246)に記憶することができるが、永続データは、たとえば、内部大容量記憶(2247)に記憶することができる。メモリデバイスのいずれかに対する高速の記憶および検索は、1つまたは複数のCPU(2241)、GPU(2242)、大容量記憶(2247)、ROM(2245)、RAM(2246)などと密接に関連付けることができるキャッシュメモリを使用して可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードをそこに有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであり得るか、またはそれらは、コンピュータソフトウェア技術のスキルを有する人々に周知かつ利用可能な種類であり得る。
一例として、限定としてではなく、アーキテクチャを有するコンピュータシステム(2200)、具体的にはコア(2240)は、1つまたは複数の有形のコンピュータ可読媒体内に具現化されたソフトウェアを(CPU、GPU、FPGA、アクセラレータなどを含む)プロセッサが実行する結果として、機能を提供することができる。そのようなコンピュータ可読媒体は、上記で紹介されたユーザアクセス可能大容量記憶、ならびにコア内部大容量記憶(2247)またはROM(2245)などの非一時的な性質のコア(2240)の特定の記憶装置に関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(2240)によって実行することができる。コンピュータ可読媒体は、特定のニーズに応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(2240)、および具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(2246)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、またはソフトウェアと一緒に動作することができる、回路(たとえば、アクセラレータ(2244))内に配線された、またはさもなければ具現化されたロジックの結果として、機能を提供することができる 必要に応じて、ソフトウェアへの参照はロジックを包含することができ、その逆も同様である。必要に応じて、コンピュータ可読媒体への参照は、実行のためのソフトウェアを記憶する(集積回路(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:コーディングユニット
本開示は、いくつかの例示的な実施形態を記載しているが、本開示の範囲内にある変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に図示または記載されていないが、本開示の原理を具現化し、したがって、その趣旨および範囲内にある多数のシステムおよび方法を考案できることが諒解されよう。