図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示している。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。図3の例では、端末デバイス(310)および(320)の第1のペアは、データの一方向送信を実行する。例えば、端末デバイス(310)は、ネットワーク(350)を介して他の端末デバイス(320)に送信するためのビデオデータ(例えば、端末デバイス(310)によってキャプチャされたビデオピクチャのストリーム)を符号化し得る。エンコードされたビデオデータは、1つまたは複数の符号化されたビデオビットストリームの形態で送信され得る。端末デバイス(320)は、ネットワーク(350)から符号化されたビデオデータを受信し、符号化されたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。一方向データ送信は、メディアサービング用途などで一般的であり得る。
別の例では、通信システム(300)は、例えばビデオ会議中に発生することがある符号化されたビデオデータの双方向送信を実行する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信のために、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)の他方の端末デバイスに送信するためのビデオデータ(例えば、端末デバイスによってキャプチャされたビデオピクチャのストリーム)を符号化し得る。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)の他方の端末デバイスによって送信された符号化されたビデオデータを受信し得、符号化されたビデオデータを復号してビデオピクチャを復元し得、復元されたビデオデータに従ってアクセス可能な表示デバイスにビデオピクチャを表示し得る。
図3の例では、端末デバイス(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示され得るが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用のビデオ会議機器を用いた用途を見出す。ネットワーク(350)は、例えば、有線および/または無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)および(340)の間で符号化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換および/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本議論の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではないことがある。
図4は、開示された主題の用途の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルテレビ、CD、DVD、メモリスティックなどを含むデジタル媒体への圧縮ビデオの保存を含む、他のビデオ対応用途に等しく適用することができる。
ストリーミングシステムは、ビデオソース(401)、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成する、例えば、デジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。エンコードされたビデオデータ(404)(または符号化されたビデオビットストリーム)と比較して高いデータ量を強調するために太線として示されているビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理され得る。ビデオエンコーダ(403)は、ハードウェア、ソフトウェア、またはそれらの組み合わせを含み、以下により詳細に説明されるように、開示された主題の態様を可能にするかまたは実施することができる。エンコードされたビデオデータ(404)(またはエンコードされたビデオビットストリーム(404))は、ビデオピクチャのストリーム(402)と比較してより少ないデータ量を強調するために細い線として描かれ、将来の使用のためにストリーミングサーバ(405)に記憶することができる。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、エンコードされたビデオデータ(404)のコピー(407)および(409)を取得することができる。クライアントサブシステム(406)は、例えば電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコードされたビデオデータの入力コピー(407)を復号し、ディスプレイ(412)(例えば、表示画面)または他の描画デバイス(図示せず)上に描画することができるビデオピクチャの出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、エンコードされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)を、特定のビデオ符号化/圧縮規格に従って符号化することができる。例えば、ITU-T勧告H.265などが挙げられる。一例では、開発中のビデオ符号化規格は、多用途ビデオ符号化(VVC)として非
公式に知られている。開示された主題は、VVCの文脈で使用され得る。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)はビデオエンコーダ(図示せず)も含むことができる。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示している。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用され得る。
受信機(531)は、ビデオデコーダ(510)によって復号される1つまたは複数の符号化されたビデオシーケンスを受信し得、同じまたは別の実施形態では、一度に1つの符号化されたビデオシーケンスを受信し、各符号化されたビデオシーケンスの復号は、他の符号化されたビデオシーケンスから独立している。符号化されたビデオシーケンスは、チャネル(501)から受信され得、チャネル(501)は、エンコードされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであり得る。受信機(531)は、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、符号化されたオーディオデータおよび/または補助データストリームと共にエンコードされたビデオデータを受信し得る。受信機(531)は、符号化されたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)を、受信機(531)とエントロピーデコーダ/パーサ(520)(以下、「パーサ(520)」)との間に結合し得る。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外部にあってもよい(図示せず)。さらに他のものでは、例えばネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があり、さらに例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)があり得る。受信機(531)が十分な帯域幅および制御可能性の記憶/転送デバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は必要ないか、または小さくてよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされることがあり、比較的大きくてもよく、好適には適応サイズであってもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装され得る。
ビデオデコーダ(510)は、符号化されたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示したように、電子デバイス(530)の不可欠な部分ではないが電子デバイス(530)に結合することができる描画デバイス(512)(例えば、表示画面)などの描画デバイスを制御するための情報を含む。描画デバイスの制御情報は、Supplemental Enhancement Information(SEIメッセージ)またはVideo Usability Information(VUI)パラメータセットフラグメント(図示せず)の形式であってもよい。パーサ(520)は、受信した符号化されたビデオシーケンスを解析/エントロピー復号し得る。符号化されたビデオシーケンスの符号化は、ビデオ符号化技術または規格に従うことができ、可変長符号化、ハフマン符号化、文脈依存の有無にかかわらず算術符号化などを含む様々な原則に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、符号化されたビデオシーケンスから、ビデオデコーダ内の画素のサブグループの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループには、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含めることができる。パーサ(520)はまた、変換係数、量子化器パラメータ値、動きベクトルなどの符号化されたビデオシーケンス情報から抽出し得る。
パーサ(520)は、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピー復号/解析動作を実行して、シンボル(521)を作成し得る。
シンボル(521)の再構成は、符号化されたビデオピクチャまたはその一部(ピクチャ間およびイントラピクチャ、ブロック間およびイントラブロックなど)のタイプ、および他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように関与するかは、パーサ(520)によって符号化されたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、分かりやすくするために描かれていない。
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下に説明するように、いくつかの機能ユニットに概念的に細分され得る。商業的制約の下で動作する実際の実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示された主題を説明するために、以下の機能ユニットへの概念的な細分化が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、ならびに使用する変換、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)からシンボル(521)として受け取る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力され得るサンプル値を備えるブロックを出力することができる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラ符号化されたブロックに関係することができ、つまり、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用できるブロックである。そのような予測情報を、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファに入れる。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インター符号化され、潜在的に動き補償されたブロックに関係し得る。このような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加できる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、動きベクトルによって制御され得、例えば、X、Y、および参照ピクチャコンポーネントを有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能である。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測機構などを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術の対象となり得る。ビデオ圧縮技術は、符号化されたビデオシーケンス(符号化されたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能になるインループフィルタ技術を含むことができるが、符号化されたピクチャまたは符号化されたビデオシーケンスの前の(復号順序で)部分の復号中に取得されたメタ情報に応答することができ、以前に再構成およびループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、描画デバイス(512)に出力され得るだけでなく、将来のピクチャ間予測で使用するために参照ピクチャメモリ(557)に記憶され得るサンプルストリームであり得る。
特定の符号化されたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用できる。例えば、現在のピクチャに対応する符号化されたピクチャが完全に再構成され、符号化されたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次の符号化されたピクチャの再構成を開始する前に、新しい現在のピクチャバッファを再割り当てすることができる。
ビデオデコーダ(510)は、ITU-T Rec.H.265などの規格の所定のビデオ圧縮技術に従って復号動作を実行し得る。符号化されたビデオシーケンスは、符号化されたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定された構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールから、そのプロファイルの下で利用可能な唯一のツールとして、特定のツールを選択し得る。また、コンプライアンスのために必要なのは、符号化されたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義される境界内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒当たりのメガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様と、符号化されたビデオシーケンスにおいてシグナリングされたHRDバッファ管理のメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコードされたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、符号化されたビデオシーケンスの一部として含まれることがある。追加のデータは、データを適切に復号するため、および/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)強化層、冗長スライス、冗長ピクチャ、順方向エラー訂正コードなどの形式をとることができる。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示している。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)を、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によって符号化されるビデオ画像をキャプチャし得るビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によって符号化されるべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)のものとすることができるデジタルビデオサンプルストリームの形態で提供し得る。メディアサービングシステムにおいて、ビデオソース(601)は、予め用意されたビデオを記憶する記憶デバイスであってもよい。ビデオ会議システムにおいて、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであってもよい。ビデオデータは、連続して見たときに動きを与える、複数の個々のピクチャとして提供されてよい。ピクチャ自体は、画素の空間アレイとして編成することができ、各画素は、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含むことができる。当業者であれば、画素とサンプルとの関係を容易に理解することができる。以下の説明はサンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって要求される他の任意の時間制約の下で、ソースビデオシーケンスのピクチャを符号化されたビデオシーケンス(643)に符号化および圧縮し得る。適切な符号化速度を強制することは、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。分かりやすくするために、結合は描かれていない。コントローラ(650)によって設定されるパラメータには、レート制御関連のパラメータ(ピクチャスキップ、量子化器、レート歪み最適化手法のラムダ値など)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などが含まれ得る。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成され得る。
いくつかの実施形態では、ビデオエンコーダ(603)は、符号化ループで動作するように構成される。過度に簡略化された説明として、一例では、符号化ループは、ソースコーダ(630)(例えば、符号化される入力ピクチャと、参照ピクチャとに基づいて、シンボルストリームのようなシンボルを生成することを担当する)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダも作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する(開示された主題で考慮されるビデオ圧縮技術では、シンボルと符号化されたビデオビットストリームとの間の任意の圧縮が可逆的であるため)。その再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号により、デコーダ位置(ローカルまたはリモート)に関係なくビットイグザクト(bit-exact)な結果が得られるため、参照ピクチャメモリ(634)内のコンテンツもまたローカルエンコーダとリモートエンコーダとの間でビットイグザクトになる。言い換えると、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネルエラーのために同期性を維持できない場合に生じるドリフト)のこの基本原理は、いくつかの関連する技術においても使用される。
「ローカル」デコーダ(633)の動作は、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得、これは、図5に関連して上記で詳細に説明されている。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)による符号化されたビデオシーケンスへのシンボルのエンコーディング/復号は可逆であり得、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、ローカルデコーダ(633)に完全に実装されていないことがある。
この時点で行うことができる観察は、デコーダに存在する解析/エントロピー復号以外のデコーダ技術も、対応するエンコーダにおいて、実質的に同一の機能形式で必ず存在する必要があるということである。このため、開示内容は、デコーダ動作に焦点を合わせている。エンコーダ技術の説明は、それらが包括的に説明されたデコーダ技術の逆であるので、省略ができる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
動作中、いくつかの例では、ソースコーダ(630)は、動き補償予測符号化を実行することがあり、これは、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前に符号化されたピクチャを参照して入力ピクチャを予測的に符号化する。このようにして、符号化エンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの予測参照として選択され得る参照ピクチャの画素ブロックとの間の差異を符号化する。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャの符号化されたビデオデータを復号し得る。符号化エンジン(632)の動作は、好適には、非可逆プロセスであり得る。符号化されたビデオデータがビデオデコーダ(図6には示されていない)で復号され得る場合、再構成されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(633)は、参照ピクチャ上でビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させ得る。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構成された参照ピクチャとして共通のコンテンツを有する再構成された参照ピクチャのコピーをローカルに記憶し得る(送信エラーがない)。
予測器(635)は、符号化エンジン(632)の予測探索を実行し得る。すなわち、符号化される新しいピクチャに対して、予測器(635)は、サンプルデータ(候補参照画素ブロックとして)または新しいピクチャの適切な予測参照として役立ち得る参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータについて、参照ピクチャメモリ(634)を探索し得る。予測器(635)は、適切な予測参照を見つけるために、画素ブロックごとに1つのサンプルブロックで動作し得る。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有し得る。
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)の符号化動作を管理し得る。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピー符号化を受けることがある。エントロピーコーダ(645)は、ハフマン符号化、可変長符号化、算術符号化などの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成された符号化されたビデオシーケンスをバッファに入れて、通信チャネル(660)を介した送信のために準備し得、通信チャネル(660)は、エンコードされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであり得る。送信機(640)は、ビデオコーダ(603)からの符号化されたビデオデータを、送信される他のデータ、例えば、符号化されたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。符号化中に、コントローラ(650)は、それぞれの符号化されたピクチャに特定の符号化されたピクチャタイプを割り当てることがあり、これは、それぞれのピクチャに適用され得る符号化技術に影響を及ぼし得る。例えば、ピクチャは多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
なお、イントラピクチャ(Iピクチャ)は、シーケンス内の任意の他のピクチャを予測元とせずに符号化および復号可能なピクチャであり得る。いくつかのビデオコーデックは、例えば、独立したデコーダリフレッシュ(「IDR」)ピクチャを含む異なるタイプのイントラピクチャを可能にする。当業者は、Iピクチャの変形、ならびに、それらのそれぞれの用途および機能を認識している。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、符号化および復号され得るピクチャであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、符号化および復号され得るピクチャであり得る。同様に、複数予測ピクチャは、単一ブロックの再構成のために3つ以上の参照ピクチャおよび関連するメタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、各々、4×4、8×8、4×8、または16×16のブロック)に空間的に細分され、ブロックごとに符号化され得る。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割当によって決定されるように、他の(すでに符号化された)ブロックを参照して、予測的に符号化され得る。例えば、Iピクチャのブロックは、非予測的に符号化され得る、または、同じピクチャの以前に符号化されたブロックを参照して、予測的に符号化され得る(空間予測またはイントラ予測)。Pピクチャの画素ブロックは、以前に符号化された1つの参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的に符号化され得る。Bピクチャのブロックは、1つまたは2つの以前に符号化された参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的に符号化され得る。
ビデオエンコーダ(603)は、例えばITU-T Rec.H.265などの所定のビデオ符号化技術または規格に従って符号化動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測符号化動作を含む、様々な圧縮動作を実行し得る。したがって、符号化されたビデオデータは、使用されているビデオ符号化技術または規格によって指定された構文に準拠し得る。
一実施形態では、送信機(640)は、エンコードされたビデオと共に追加のデータを送信し得る。ソースコーダ(630)は、符号化されたビデオシーケンスの一部としてそのようなデータを含み得る。追加データは、時間的/空間的/SNR強化層、冗長なピクチャおよびスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、複数のソースピクチャ(ビデオピクチャ)として時系列にキャプチャされてもよい。ピクチャ内予測(イントラ予測と略されることが多い)は、所与のピクチャにおける空間相関を利用し、ピクチャ間予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在のピクチャと呼ばれる、エンコーディング/復号中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックがビデオ内の以前に符号化されてまだバッファされている参照ピクチャ内の参照ブロックに類似している場合、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによって符号化され得る。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、ピクチャ間予測に双予測技術が使用され得る。双予測技術によれば、第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用され、これらは両方ともビデオ内の現在のピクチャの復号順序より前にある(しかし、表示順序は、それぞれ過去および未来のものであってもよい)。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによって符号化され得る。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測され得る。
さらに、符号化効率を改善するために、ピクチャ間予測にマージモード技術が使用され得る。
本開示のいくつかの実施形態によれば、ピクチャ間予測およびピクチャ内予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のために符号化ツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、CTUは、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画素などの画素の値の行列(例えば、輝度値)を含む。
図7は、本開示の別の実施形態によるビデオエンコーダ(703)の図を示している。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、符号化されたビデオシーケンスの一部である符号化されたピクチャに符号化するように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックのサンプル値の行列を受信する。ビデオエンコーダ(703)は、処理ブロックが、例えばレート歪み最適化を使用して、イントラモード、インターモード、または双予測モードを使用して最良に符号化されるかどうかを決定する。処理ブロックがイントラモードで符号化されるとき、ビデオエンコーダ(703)は、処理ブロックを符号化されたピクチャへ符号化するために、イントラ予測技術を使用し得、処理ブロックがインターモードまたは双予測モードで符号化されるとき、ビデオエンコーダ(703)は、処理ブロックを符号化されたピクチャに符号化するために、それぞれインター予測技術または双予測技術を使用し得る。特定のビデオ符号化技術では、マージモードは、予測子の外側の符号化された動きベクトル成分の恩恵を受けずに動きベクトルが1つまたは複数の動きベクトル予測子から導出されるピクチャ間予測サブモードであり得る。特定の他のビデオ符号化技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示すように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差算出部(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを参照ピクチャ(例えば、前のピクチャおよび後のピクチャ内のブロック)内の1つまたは複数の参照ブロックと比較し、インター予測情報(例えば、インターエンコーディング技術、動きベクトル、マージモード情報による冗長情報の記述)を生成し、任意の適切な技術を使用してインター予測情報に基づいてインター予測結果(例えば、予測ブロック)を算出するように構成される。いくつかの例では、参照ピクチャは、エンコードされたビデオ情報に基づいて復号される復号参照ピクチャである。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、ブロックを同じピクチャ内ですでに符号化されているブロックと比較し、変換後に量子化係数を生成し、場合によってはイントラ予測情報(例えば、1つまたは複数のイントラエンコーディング技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)は、イントラ予測情報と、同一ピクチャ内の参照ブロックとに基づいて、イントラ予測結果(例えば、予測ブロック)も算出する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいてスイッチ(726)に制御信号を提供する。例えば、モードがイントラモードである場合、汎用コントローラ(721)は、残差算出部(723)が用いるイントラモード結果を選択するためにスイッチ(726)を制御し、イントラ予測情報を選択してビットストリームに含めるためにエントロピーエンコーダ(725)を制御し、モードがインターモードである場合、汎用コントローラ(721)は、残差算出部(723)が用いるインター予測結果を選択するためにスイッチ(726)を制御し、インター予測情報を選択してビットストリームに含めるためにエントロピーエンコーダ(725)を制御する。
残差算出部(723)は、受信されたブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との差分(残差データ)を算出するように構成される。残差エンコーダ(724)は、残差データに基づいて動作して、変換係数を生成するために残差データをエンコードするように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。変換係数はその後、量子化された変換係数を得るために量子化処理を受ける。様々な実施形態において、ビデオエンコーダ(703)はまた、残差デコーダ(728)を含む。残差デコーダ(728)は、逆変換を実行し、復号された残差データを生成するように構成される。復号された残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって好適に使用され得る。例えば、インターエンコーダ(730)は、復号された残差データとインター予測情報とに基づいて復号されたブロックを生成することができ、イントラエンコーダ(722)は、復号残差データとイントラ予測情報とに基づいて復号されたブロックを生成することができる。いくつかの例では、復号されたブロックは、復号されたピクチャを生成するために適切に処理され、復号されたピクチャは、メモリ回路(図示せず)にバッファされ、参照ピクチャとして使用され得る。
エントロピーエンコーダ(725)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含むように構成される。一例では、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報をビットストリームに含めるように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックを符号化するとき、残差情報は存在しないことに留意されたい。
図8は、本開示の別の実施形態によるビデオデコーダ(810)の図を示している。ビデオデコーダ(810)は、符号化されたビデオシーケンスの一部である符号化されたピクチャを受信し、符号化されたピクチャを復号して再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示すように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、符号化されたピクチャから、符号化されたピクチャを構成する構文要素を表す特定のシンボルを再構成するように構成され得る。そのようなシンボルは、例えば、ブロックが符号化されるモード(例えば、イントラモード、インターモード、双方向予測モード、後者の2つは、マージサブモードまたは別のサブモード)、イントラデコーダ(872)またはインターデコーダ(880)によってそれぞれ予測に使用される特定のサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報やインター予測情報など)、例えば量子化変換係数の形態の残差情報などを含むことができる。一例では、予測モードがインター予測モードまたは双方向予測モードである場合、インター予測情報はインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実行して逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含むために)特定の制御情報を必要とする場合があり、その情報はエントロピーデコーダ(871)によって提供される場合がある(これとして示されていないデータ経路は、低量制御情報のみであり得る)。
再構成モジュール(874)は、空間領域において、残差デコーダ(873)による出力としての残差と、(場合によってはインターまたはイントラ予測モジュールによる出力としての)予測結果とを組み合わせて、再構成されたピクチャの一部であり得る再構成されたブロックを形成するように構成され、再構成されたブロックは再構成されたビデオの一部であり得る。視覚的品質を改善するために、非ブロック化動作などの他の適切な動作を実行することができることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技術を使用して実施され得ることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実施され得る。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実施され得る。
ブロックベースの補償は、インター予測およびイントラ予測に使用できる。インター予測の場合、異なるピクチャからのブロックに基づく補償は、動き補償として知られている。ブロックに基づく補償は、イントラ予測など、同じピクチャ内の以前に再構成された領域からも行うことができる。同じピクチャ内の再構成された領域からのブロックに基づく補償は、イントラピクチャブロック補償、現在のピクチャ参照(CPR)、またはイントラブロックコピー(IBC)と呼ばれる。現在のブロックと、同じピクチャ内の参照ブロック(予測ブロックとも呼ばれる)との間のオフセットを示す変位ベクトルはブロックベクトル(BV)と呼ばれ、現在のブロックは、参照ブロックに基づいて符号化/復号され得る。任意の値(正または負、x方向でもy方向でも)をとることができる動き補償の動きベクトルとは異なり、BVには、参照ブロックが利用可能ですでに再構成されていることを保証するためのいくつかの制約がある。また、いくつかの例では、並列処理を考慮するために、タイル境界、スライス境界、またはウェーブフロントラダー(wavefront ladder)形状の境界である、いくつかの参照領域が除外される。
ブロックベクトルの符号化は、明示的または暗黙的に行われる場合がある。明示的モードでは、ブロックベクトルとその予測子との間のBV差がシグナリングされる。暗黙的モードでは、ブロックベクトルは、マージモードの動きベクトルと同様の方法で、BV差を使用せずに予測子(ブロックベクトル予測子と呼ばれる)から回復される。明示的モードを、非マージBV予測モードと呼ぶことができる。暗黙的モードを、マージBV予測モードと呼ぶことができる。
ブロックベクトルの分解能は、いくつかの実施では、整数位置に限定される。他のシステムでは、ブロックベクトルは分数位置を指すことができる。
いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグなどのブロックレベルフラグを使用してシグナリングされ得る。一実施形態では、現在のブロックが明示的に符号化されるとき、ブロックレベルフラグがシグナリングされる。いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、参照インデックスの手法を使用してシグナリングされ得る。復号中の現在のピクチャは、その後、参照ピクチャまたは特殊な参照ピクチャとして扱われる。一例では、このような参照ピクチャは、参照ピクチャのリストの最後の位置に置かれる。特殊な参照ピクチャは、他の時間的な参照ピクチャと一緒に、復号ピクチャバッファ(DPB)などのバッファで管理される。
IBCモードにはバリエーションがあり得る。一例では、IBCモードは、イントラ予測モードおよびインター予測モードとは異なる第3のモードとして扱われる。したがって、暗黙的モード(またはマージモード)および明示的モードのBV予測は、通常のインターモードから分離される。IBCモードには別個のマージ候補リストを定義することができ、別個のマージ候補リスト内のエントリはBVである。同様に、一例では、IBC明示的モードのBV予測候補リストはBVのみを含む。これら2つのリスト(すなわち、別個のマージ候補リストおよびBV予測候補リスト)に適用される一般的な規則は、これら2つのリストが、候補導出プロセスに関して、通常のマージモードで使用されるマージ候補リストまたは通常のAMVPモードで使用されるAMVP予測子リストと同じ論理に従い得るということである。例えば、IBCモードの別個のマージ候補リストを導出するために、5つの空間的に隣接する位置(例えば、図2のA0、A1、およびB0、B1、B2)、例えば、HEVCまたはVVC相互マージモードがIBCモードのためにアクセスされる。
前述したように、ピクチャ内で再構成中の現在のブロックのBVは、いくつかの制約がある可能性があり、したがって、現在のブロックの参照ブロックは探索範囲内にある。探索範囲とは、参照ブロックを選択できるピクチャの一部のことを指す。例えば、探索範囲は、ピクチャ内の再構成された領域のいくつかの部分の中にあってもよい。探索範囲のサイズ、位置、形状などを制約することができる。あるいは、BVを制約することができる。一例では、BVはxおよびy成分を含む二次元ベクトルであり、xおよびy成分の少なくとも一方を制約することができる。制約は、BV、探索範囲、またはBVと探索範囲との組み合わせに対して指定することができる。様々な例において、BVに対していくつかの制約が指定されると、これに従って探索範囲が制約される。同様に、探索範囲に対していくつかの制約が指定されると、これに従ってBVが制約される。
図9は、本開示の一実施形態によるイントラブロックコピーの一例を示している。現在のピクチャ(900)は、復号中に再構成される。現在のピクチャ(900)は、再構成された領域(910)(灰色の領域)と、復号対象領域(920)(白色の領域)とを含む。現在のブロック(930)は、デコーダによって再構成中である。現在のブロック(930)は、再構成された領域(910)にある参照ブロック(940)から再構成され得る。参照ブロック(940)と現在のブロック(930)との間の位置オフセットは、ブロックベクトル(950)(またはBV(950))と呼ばれる。図9の例では、探索範囲(960)は、再構成された領域(910)内にあり、参照ブロック(940)は、探索範囲(960)内にあり、ブロックベクトル(950)は、探索範囲(960)内にある参照ブロック(940)を指すように制約される。
BVおよび/または探索範囲には、様々な制約を適用することができる。一実施形態では、現在のCTBにおける再構成中の現在のブロックに対する探索範囲は、現在のCTB内になるように制約される。
一実施形態において、イントラブロックコピーに使用される参照サンプルを記憶するのに効率的なメモリ要件は、1CTBサイズである。一例では、CTBサイズは128×128サンプルである。現在のCTBは、再構成中の現在の領域を含む。現在の領域は、64×64サンプルのサイズを有する。参照メモリは、再構成されたサンプルを現在の領域にさらに記憶できるので、参照メモリは、参照メモリサイズが、128×128サンプルのCTBサイズと等しいときは、64×64のサンプルのさらに3領域を記憶することができる。したがって、探索範囲は、以前に再構成されたCTBのいくつかの部分を含むことができ、参照サンプルを記憶するための総メモリ要件は変化しない(128×128サンプルの1CTBサイズ、または64×64の合計4つの参照サンプルなど)。一例では、図10に示すように、以前に再構成されたCTBが現在のCTBの左隣にある。
図10は、本開示の実施形態による、イントラブロックコピーの例を示している。現在のピクチャ(1001)は、再構成中の現在のCTB(1015)と、現在のCTB(1015)の左隣にある、以前に再構成されたCTB(1010)とを含む。現在のピクチャ(1001)内のCTBは、128×128サンプルなどのCTBサイズ、および128サンプルなどのCTB幅を有する。現在のCTB(1015)は、4つの領域(1016)~(1019)を含み、現在の領域(1016)は再構成中である。現在の領域(1016)は、複数の符号化ブロック(1021)~(1029)を含む。同様に、以前に再構成されたCTB(1010)も4つの領域(1011)~(1014)を含む。符号化ブロック(1021)~(1025)は再構成されており、現在のブロック(1026)は再構成中であり、符号化ブロック(1026)~(1027)、および領域(1017)~(1019)はこれから再構成される。
現在の領域(1016)は、並置領域(すなわち以前に再構成されたCTB(1010)内の領域(1011))を有する。以前に再構成されたCTB(1010)に対する並置領域(1011)の相対位置は、現在のCTB(1015)に対する現在の領域(1016)の相対位置と同一であってもよい。図10に示す例では、現在の領域(1016)は、現在のCTB(1015)の左上領域であり、したがって並置領域(1011)もまた、以前に再構成されたCTB(1010)の左上領域である。以前に再構成されたCTB(1010)の位置は、現在のCTB(1015)の位置からCTB幅だけオフセットされているので、並置領域(1011)の位置は、現在の領域(1016)の位置からCTB幅だけオフセットされる。
一実施形態では、現在の領域(1016)の並置領域は、以前に再構成されたCTBにあり、以前に再構成されたCTBの位置は、現在のCTB(1015)の位置からCTB幅1つ分、または倍数分オフセットされており、したがって、並置領域の位置もまた、現在の領域(1016)の位置から対応するCTB幅1つ分、または倍数分オフセットされている。並置領域の位置は、現在の領域(1016)から、左シフトさせたり、上シフトさせたりすることができる。
前述したように、現在のブロック(1026)に対する探索範囲のサイズは、CTBサイズによって制約される。図10の例では、探索範囲は、以前に再構成されたCTB(1010)内の領域(1012)~(1014)、および符号化ブロック(1021)~(1025)などの、すでに再構成された現在の領域(1016)の一部を含むことができる。探索範囲から並置領域(1011)をさらに除外するので、探索範囲のサイズはCTBサイズ内に収まる。図10を参照すると、参照ブロック(1091)は、以前に再構成されたCTB(1010)の領域(1014)に配置される。ブロックベクトル(1020)は、現在のブロック(1026)と、それぞれの参照ブロック(1091)との間のオフセットを示す。参照ブロック(1091)は探索範囲内にある。
図10に示す例は、現在の領域が現在のCTB(1015)内の別の位置に置かれる、他の状況に適切に合わせることができる。一例では、現在のブロックが領域(1017)にあるとき、現在のブロックの並置領域は領域(1012)である。したがって、探索範囲は領域(1013)~(1014)、領域(1016)、およびすでに再構成された領域(1017)の一部を含むことができる。探索範囲から領域(1011)および並置領域(1012)をさらに除外するので、探索範囲のサイズはCTBサイズ内に収まる。一例では、現在のブロックが領域(1018)にあるとき、現在のブロックの並置領域は領域(1013)である。したがって、探索範囲は領域(1014)、領域(1016)~(1017)、およびすでに再構成された領域(1018)の一部を含むことができる。探索範囲から領域(1011)~(1012)および並置領域(1013)をさらに除外するので、探索範囲のサイズはCTBサイズ内に収まる。一例では、現在のブロックが領域(1019)にあるとき、現在のブロックの並置領域は領域(1014)である。したがって、探索範囲は領域(1016)~(1018)、およびすでに再構成された領域(1019)の一部を含むことができる。探索範囲から以前に再構成されたCTB(1010)をさらに除外するので、探索範囲のサイズはCTBサイズ内に収まる。
前述の説明では、参照ブロックは、以前に再構成されたCTB(1010)または現在のCTB(1015)にあってもよい。
一実施形態では、探索範囲は以下の通りに指定され得る。一例では、現在のピクチャは輝度ピクチャであり、かつ現在のCTBは複数の輝度サンプルを含む輝度CTBであり、BV(mvL)は、以下のビットストリーム適合性の制約を満たす。一例では、BV(mvL)は、分数解像度(例えば、1/16pelの解像度)を有する。
制約は、現在のブロックの参照ブロックがすでに再構成されているという第1の条件を含む。参照ブロックの形状が長方形の場合、隣接ブロック可用性確認プロセス(または参照ブロック可用性確認プロセス)を実施して、参照ブロックの左上サンプルと右下サンプルとが再構成されているかどうかを確認することができる。参照ブロックの左上のサンプルと右下のサンプルとが両方とも再構成されていれば、参照ブロックは再構成されていると判定される。
例えば、参照ブロック可用性の導出プロセスが、入力として(xCb,yCb)に設定された現在のブロックの左上サンプルの位置(xCurr,yCurr)、および参照ブロックの左上サンプルの位置(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4))によって呼び出される場合、参照ブロックの左上サンプルが再構成されており、ブロックベクトルmvLがx成分mvL[0]とy成分mvL[1]を有する二次元ベクトルであるときの出力はTRUEになる。BV(mvL)が1/16pel解像度などの分数解像度を有する場合、x成分mvL[0]およびy成分mvL[1]は、それぞれ、mvL[0]>>4およびmvL[1]>>4によって示されるように、整数解像度を有するようにシフトされる。
同様に、ブロック可用性の導出プロセスが、入力として(xCb,yCb)に設定された現在のブロックの左上サンプルの位置(xCurr,yCurr)、および参照ブロックの右下サンプルの位置(xCb+(mvL[0]>>4+cbWidth-1,yCb+(mvL[1]>>4+cbHeight-1)によって呼び出される場合、参照ブロックの右下サンプルが再構成されているときの出力はTRUEになる。パラメータcbWidthおよびcbHeightは、参照ブロックの幅および高さを表す。
制約はまた、以下の第2の条件の少なくとも1つを含むことができる。1)値(mvL[0]>>4)+cbWidthが0以下であり、これは、参照ブロックが現在のブロックの左にあって現在のブロックと重ならないことを示す、2)値(mvL[1]>>4+cbHeightが0以下であり、これは、参照ブロックが現在のブロックの上方にあって、現在のブロックと重ならないことを示す。
制約はまた、以下の第3の条件がブロックベクトルmvLによって満たされることを含むことができる。
(yCb+(mvL[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY (1)
(yCb+(mvL[1]>>4+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2Size (2)
(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1 (3)
(xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY) (4)
式中、パラメータCtbLog2SizeYは、log2形式のCTB幅を表す。例えば、CTB幅が128サンプルのときは、CtbLog2SizeYは7である。式(1)~(2)は、参照ブロックを含むCTBが現在のCTBと同じCTB行にあることを示す(例えば、参照ブロックが以前に再構成されたCTB(1010)にあるとき、以前に再構成されたCTB(1010)が、現在のCTB(1015)と同じ行にある)。式(3)~(4)は、参照ブロックを含むCTBが現在のCTBの左CTB列、または現在のCTBと同じCTB列のいずれかにあることを示す。式(1)~(4)によって記述される第3の条件は、図10を参照して説明したのと同様に、参照ブロックを含むCTBが、現在のCTB(1015)などの現在のCTB、または以前に再構成されたCTB(1010)などの、現在のCTBの左隣のどちらかであることを示す。
制約は、第4の条件をさらに含むことができ、参照ブロックが現在のCTBの左隣にあるときは、参照ブロックの並置領域は再構成されていない(すなわち、並置領域内に再構成されたサンプルがない)。また、参照ブロックの並置領域は、現在のCTB内にある。図10の例では、参照ブロック(1091)の並置領域は、参照ブロック(1091)が位置する領域(1014)からCTB幅だけオフセットされた領域(1019)であり、領域(1019)は再構成されていない。したがって、ブロックベクトル(1020)および参照ブロック(1091)は、前述した第4の条件を満たす。
一例では、第4の条件を以下のように指定できる:(xCb+(mvL[0]>>4))>>CtbLog2SizeYが(xCb>>CtbLog2SizeY)-1と等しいとき、参照ブロック可用性の導出プロセスは、入力として(xCb,yCb)に設定された現在のブロックの位置(xCurr,yCurr)、および位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))で呼び出され、図10に示すように、出力は、並置領域が再構成されていないことを示すFALSEになる。
探索範囲および/またはブロックベクトルに対する制約は、前述した第1、第2、第3、および第4の条件の適切な組み合わせを含むことができる。一例では、制約は、図10に示すような第1、第2、第3、および第4の条件を含む。一例では、第1、第2、第3、および/または第4の条件は変更でき、制約は変更された第1、第2、第3、および/または第4の条件を含む。
第4の条件によれば、符号化ブロック(1022)~(1029)のうちの1つが現在のブロックのときは、参照ブロックが領域(1011)になることはなく、したがって符号化ブロック(1022)~(1029)のうちの1つに対する探索範囲から領域(1011)は除外される。領域(1011)が除外される理由は以下のように特定され、参照ブロックが領域(1011)にあるとすれば、参照ブロックに対する並置領域は領域(1016)になるが、少なくとも符号化ブロック(1021)内のサンプルは再構成されており、したがって第4の条件に反する。その一方で、図11の領域(1116)内の符号化ブロック(1121)のように、現在の領域で最初に再構成される符号化ブロックについては、第4の条件は、参照ブロックに対する並置領域(1116)がまだ再構成されていないために、参照ブロックが領域(1111)に置かれることの妨げにはならない。
図11は、本開示の実施形態による、イントラブロックコピーの例を示している。現在のピクチャ(1101)は、再構成中の現在のCTB(1115)と、現在のCTB(1115)の左隣にある、以前に再構成されたCTB(1110)とを含む。現在のピクチャ(1101)内のCTBは、CTBサイズおよびCTB幅を有する。現在のCTB(1115)は4つの領域(1116)~(1119)を含み、現在の領域(1116)は再構成中である。現在の領域(1116)は、複数の符号化ブロック(1121)~(1129)を含む。同様に、以前に再構成されたCTB(1110)も4つの領域(1111)~(1114)を含む。再構成中の現在のブロック(1121)は、現在の領域(1116)で最初に再構成され、それから符号化ブロック(1122)~(1129)が再構成される。一例では、CTBサイズは128×128サンプルで、領域(1111)~(1114)および(1116)~(1119)はそれぞれ64×64サンプルである。参照メモリサイズはCTBサイズと等しい128×128サンプルであり、したがって探索範囲は、参照メモリサイズによって境界を定められるときは、3つの領域と、追加領域の一部とを含む。
同様に、図10を参照して説明したように、現在の領域(1116)は、並置領域(すなわち以前に再構成されたCTB(1110)内の領域(1111))を有する。前述した第4の条件によれば、現在のブロックの参照ブロック(1121)は領域(1111)にあってもよく、したがって探索範囲は領域(1111)~(1114)を含んでもよい。例えば、参照ブロックが領域(1111)にあるときは、参照ブロックの並置領域は領域(1116)であり、領域(1116)内に、現在のブロック(1121)が再構成される前に再構成されているサンプルはない。しかしながら、図10および第4の条件を参照して説明したように、例えば、符号化ブロック(1121)が再構成された後は、符号化ブロック(1122)を再構成するために領域(1111)を探索範囲に含めることができなくなる。したがって、参照メモリバッファの厳密な同期およびタイミング制御が使用され、これは困難な場合がある。
いくつかの実施形態によれば、現在のブロックが、現在のCTBの現在の領域で最初に再構成されるときは、以前に再構成されたCTB内にある現在の領域の並置領域を探索範囲から除外でき、現在のCTBおよび以前に再構成されたCTBは、同じ現在のピクチャ内にある。ブロックベクトルは、参照ブロックが、以前に再構成されたCTB内の並置領域を除外した探索範囲内にあるように決定され得る。一実施形態では、探索範囲は、並置領域の後、かつ現在のブロックの前に復号順序で再構成された符号化ブロックを含む。
以下の説明では、CTBサイズは変更でき、最大CTBサイズは参照メモリサイズと同一に設定される。一例では、参照メモリサイズまたは最大CTBサイズは、128×128サンプルである。説明は、他の参照メモリサイズまたは最大CTBサイズに適切に合わせることができる。
一実施形態では、CTBサイズは参照メモリサイズと等しい。以前に再構成されたCTBは現在のCTBの左隣にあり、並置領域の位置は現在の領域の位置からCTB幅だけオフセットされ、探索範囲内の符号化ブロックは、現在のCTBおよび以前に再構成されたCTBのうちの少なくとも一方にある。
図12A~図12Dは、本開示の実施形態によるイントラブロックコピーの例を示している。図12A~図12Dを参照すると、現在のピクチャ(1201)は、再構成中の現在のCTB(1215)と、現在のCTB(1215)の左隣にある、以前に再構成されたCTB(1210)とを含む。現在のピクチャ(1201)内のCTBは、CTBサイズおよびCTB幅を有する。現在のCTB(1215)は、4つの領域(1216)~(1219)を含む。同様に、以前に再構成されたCTB(1210)も4つの領域(1211)~(1214)を含む。一実施形態では、CTBサイズは最大CTBサイズであり、参照メモリサイズと等しい。一例では、CTBサイズおよび参照メモリサイズは128×128サンプルであり、したがって各領域(1211)~(1214)および(1216)~(1219)は、64×64サンプルのサイズを有する。
図12A~図12Dに示す例では、現在のCTB(1215)は、領域(1216)~(1219)にそれぞれ対応する、左上領域と、右上領域と、左下領域と、右下領域とを含む。以前に再構成されたCTB(1210)は、領域(1211)~(1214)にそれぞれ対応する、左上領域と、右上領域と、左下領域と、右下領域とを含む。
図12Aを参照すると、現在の領域(1216)が再構成中である。現在の領域(1216)は、複数の符号化ブロック(1221)~(1229)を含むことができる。現在の領域(1216)は、並置領域、すなわち以前に再構成されたCTB(1210)内の領域(1211)を有する。再構成されるべき符号化ブロック(1221)~(1229)のうちの1つの探索範囲から、並置領域(1211)を除外することができる。探索範囲は、並置領域(1211)の後、かつ現在の領域(1216)の前に復号順序で再構成された、以前に再構成されたCTB(1210)の領域(1212)~(1214)を含むことができる。
図12Aを参照すると、並置領域(1211)の位置は、現在の領域(1216)の位置から、128サンプルなどCTB幅だけオフセットされている。例えば、並置領域(1211)の位置は、現在の領域(1216)の位置から128サンプル分左シフトされる。
図12Aを再度参照すると、現在の領域(1216)が現在のCTB(1215)の左上領域にあるとき、並置領域(1211)は、以前に再構成されたCTB(1210)の左上領域にあり、探索領域は、以前に再構成されたCTBの左上領域を除外する。
図12Bを参照すると、現在の領域(1217)が再構成中である。現在の領域(1217)は、複数の符号化ブロック(1241)~(1249)を含むことができる。現在の領域(1217)は、並置領域(すなわち以前に再構成されたCTB(1210)内の領域(1212))を有する。複数の符号化ブロック(1241)~(1249)のうちの1つの探索範囲から、並置領域(1212)を除外することができる。探索範囲は、以前に再構成されたCTB(1210)の領域(1213)~(1214)と、並置領域(1212)の後、かつ現在の領域(1217)の前に再構成された、現在のCTB(1215)内の領域(1216)とを含む。参照メモリサイズ(すなわち1CTBサイズ)の制約により、探索範囲から領域(1211)をさらに除外する。同様に、並置領域(1212)の位置は、現在の領域(1217)の位置から、128サンプルなどCTB幅だけオフセットされている。
図12Bの例では、現在の領域(1217)が現在のCTB(1215)の右上領域にあり、並置領域(1212)もまた、以前に再構成されたCTB(1210)の右上領域にあり、探索領域から、以前に再構成されたCTB(1210)の右上領域を除外する。
図12Cを参照すると、現在の領域(1218)が再構成中である。現在の領域(1218)は、複数の符号化ブロック(1261)~(1269)を含むことができる。現在の領域(1218)は、以前に再構成されたCTB(1210)内の並置領域(すなわち、領域(1213))を有する。複数の符号化ブロック(1261)~(1269)のうちの1つの探索範囲から、並置領域(1213)を除外することができる。探索範囲は、以前に再構成されたCTB(1210)の領域(1214)と、並置領域(1213)の後、かつ現在の領域(1218)の前に再構成された、現在のCTB(1215)内の領域(1216)~(1217)とを含む。同様に、参照メモリサイズの制約により、探索範囲から領域(1211)~(1212)をさらに除外する。並置領域(1213)の位置は、現在の領域(1218)の位置から、128サンプルなどCTB幅だけオフセットされている。図12Cの例では、現在の領域(1218)が現在のCTB(1215)の左下領域にあるときは、並置領域(1213)もまた、以前に再構成されたCTB(1210)の左下領域にあり、探索領域は、以前に再構成されたCTB(1210)の左下領域を除外する。
図12Dを参照すると、現在の領域(1219)が再構成中である。現在の領域(1219)は、複数の符号化ブロック(1281)~(1289)を含むことができる。現在の領域(1219)は、以前に再構成されたCTB(1210)内の並置領域(すなわち、領域(1214))を有する。複数の符号化ブロック(1281)~(1289)のうちの1つの探索範囲から、並置領域(1214)を除外することができる。探索範囲は、復号順序で並置領域(1214)の後、かつ現在の領域(1219)の前に再構成された、現在のCTB(1215)内の領域(1216)~(1218)を含む。参照メモリサイズの制約により、探索範囲から領域(1211)~(1213)を除外し、したがって探索範囲から、以前に再構成されたCTB(1210)を除外する。同様に、並置領域(1214)の位置は、現在の領域(1219)の位置から、128サンプルなどCTB幅だけオフセットされている。図12Dの例では、現在の領域(1219)が現在のCTB(1215)の右下領域にあるときは、並置領域(1214)もまた、以前に再構成されたCTB(1210)の右下領域にあり、探索領域は、以前に再構成されたCTB(1210)の右下領域を除外する。
図2に戻って参照すると、A0、A1、およびB0、B1、B2(それぞれ202~206)で表された5つの周囲サンプル(または位置)と関連付けられたMVを、空間マージ候補と呼ぶことができる。空間マージ候補に基づいて候補リスト(例えば、マージ候補リスト)を形成することができる。任意の適切な順序を使用して、位置から候補リストを形成することができる。一例では、この順序はA0、B0、B1、A1、B2とすることができ、A0が最初であり、B2が最後である。一例では、この順序はA1、B1、B0、A0、B2とすることができ、A1が最初であり、B2が最後である。
いくつかの実施形態によれば、現在のブロックの動きベクトル予測(MVP)候補(HMVP候補とも呼ばれる)を提供するために、現在のブロックの以前に符号化されたブロック(例えば、符号化ブロック(CB)または現在のCU)の動き情報を履歴ベース動きベクトル予測(HMVP)バッファ(例えば、テーブル)に記憶することができる。HMVPバッファは、1つまたは複数のHMVP候補を含んでいてもよく、エンコーディング/復号プロセス中に維持することができる。一例では、HMVPバッファ内のHMVP候補は、以前に符号化されたブロックの動き情報に対応する。HMVPバッファは、任意の適切なエンコーダおよび/またはデコーダで使用され得る。HMVP候補を、空間MVPおよびTMVPの後にマージ候補リストに追加することができる。
HMVPバッファを、新しいCTU(または新しいCTB)行が発生したときにリセットする(例えば、空にする)ことができる。非サブブロックのインター符号化されたブロックが存在するとき、関連付けられた動き情報を、新しいHMVP候補としてHMVPバッファの最後のエントリに追加することができる。
VTM3などの一例では、HMVPバッファのバッファサイズ(Sで表す)は6に設定され、これは最大6つのHMVP候補がHMVPバッファに追加され得ることを示す。いくつかの実施形態では、HMVPバッファは先入れ先出し(FIFO)規則で動作することができ、よって、HMVPバッファに最初に記憶される動き情報(またはHMVP候補)は、例えば、HMVPバッファが一杯になったときに、HMVPバッファから最初に削除されるものである。HMVPバッファに新しいHMVP候補を挿入するとき、制約付きFIFO規則を利用することができ、同一または類似のHMVP候補がHMVPバッファ内にあるかどうかを判定するために冗長検査がまず適用される。同一または類似のHMVP候補がHMVPバッファ内にあると判定された場合、同一または類似のHMVP候補をHMVPバッファから削除することができ、残りのHMVP候補をHMVPバッファ内で前進させることができる。
HMVP候補は、マージ候補リスト構成プロセスで、例えば、マージモードで使用され得る。HMVPバッファ内の最後に記憶されたHMVP候補を順番に検査し、TMVP候補の後にマージ候補リストに挿入することができる。冗長検査は、マージ候補リスト内にある空間マージ候補または時間マージ候補に関してHMVP候補に適用され得る。説明は、AMVP候補リストを構成するためにAMVPモードに適切に合わせることができる。
冗長検査動作の数を減らすために、以下の簡略化を使用することができる。
(i)マージ候補リストの生成に使用されるHMVP候補の数は、(N<=4)?M:(8-N)として設定され得る。Nは、マージ候補リスト内の既存の候補の数を示し、Mは、HMVPバッファ内の利用可能なHMVP候補の数を示す。マージ候補リスト内の既存の候補の数(N)が4以下である場合、マージ候補リストの生成に使用されるHMVP候補の数はMに等しい。そうでない場合、マージ候補リストの生成に使用されるHMVP候補の数は(8-N)に等しい。
(ii)利用可能なマージ候補の総数が最大許容マージ候補から1を引いた数に達すると、HMVPバッファからのマージ候補リスト構成プロセスは終了する。
IBCモードがインター予測モードとは別のモードとして動作する場合、IBCモードのための簡略化されたBV導出プロセスを使用することができる。履歴ベースのブロックベクトル予測バッファ(HBVPバッファと呼ばれる)を使用して、BV予測を実行することができる。HBVPバッファは、現在のピクチャ内の現在のブロック(例えば、CBまたはCU)の以前に符号化されたブロックのBV情報(例えば、BV)を記憶するために使用され得る。一例では、HBVPバッファは、HMVPバッファなどの他のバッファとは別個の履歴バッファである。HBVPバッファは、テーブルであり得る。
HBVPバッファは、現在のブロックのBV予測子(BVP)候補(HBVP候補とも呼ばれる)を提供することができる。HBVPバッファ(例えばテーブル)は、1つまたは複数のHBVP候補を含んでいてもよく、エンコーディング/復号プロセス中に維持され得る。一例では、HBVPバッファ内のHBVP候補は、現在のピクチャ内の以前に符号化されたブロックのBV情報に対応する。HBVPバッファは、任意の適切なエンコーダおよび/またはデコーダで使用され得る。HBVP候補を、現在のブロックの空間的に隣接するブロックのBV後のBV予測のために構成されたマージ候補リストに追加することができる。BV予測のために構成されたマージ候補リストは、マージBV予測モードおよび/または非マージBV予測モードに使用され得る。
HBVPバッファを、新しいCTU(または新しいCTB)行が発生したときにリセットする(例えば、空にする)ことができる。
VVCなどの一例では、HBVPバッファのバッファサイズは6に設定され、これは、最大6つのHBVP候補がHBVPバッファに追加され得ることを示す。いくつかの実施形態では、HBVPバッファはFIFO規則で動作することができ、よって、HBVPバッファに最初に記憶されるBV情報(またはHBVP候補)は、例えば、HBVPバッファが一杯になったときに、HBVPバッファから最初に削除されるものである。HBVPバッファに新しいHBVP候補を挿入するとき、制約付きFIFO規則を利用することができ、同一または類似のHBVP候補がHBVPバッファ内にあるかどうかを判定するために冗長検査がまず適用される。同一または類似のHBVP候補がHBVPバッファ内にあると判定された場合、同一または類似のHBVP候補をHBVPバッファから削除することができ、残りのHBVP候補をHBVPバッファ内で前進させることができる。
HBVP候補は、マージ候補リスト構成プロセスで、例えば、マージBV予測モードで使用され得る。HBVPバッファ内の最後に記憶されたHBVP候補を順番に検査し、空間候補の後にマージ候補リストに挿入することができる。冗長検査は、マージ候補リスト内にある空間マージ候補に関してHBVP候補に適用され得る。
一実施形態では、IBCモードで符号化された1つまたは複数の以前に符号化されたブロックの1つまたは複数のBV情報を記憶するために、HBVPバッファが確立される。1つまたは複数のBV情報は、IBCモードで符号化された1つまたは複数の以前に符号化されたブロックの1つまたは複数のBVを含むことができる。さらに、1つまたは複数のBV情報の各々は、IBCモードで符号化されたそれぞれの以前に符号化されたブロックのブロックサイズ、ブロック位置などのサイド情報(または追加情報)を含むことができる。
クラスベースの履歴ベースのブロックベクトル予測(CBVPとも呼ばれる)では、現在のブロックについて、特定の条件を満たすHBVPバッファ内の1つまたは複数のBV情報を対応するカテゴリ(クラスとも呼ばれる)に分類することができ、よって、CBVPバッファを形成することができる。一例では、HBVPバッファ内の各BV情報は、例えば、IBCモードで符号化された、それぞれの以前に符号化されたブロックについてのものである。以前に符号化されたブロックのBV情報は、BV、ブロックサイズ、ブロック位置などを含むことができる。以前に符号化されたブロックは、ブロック幅、ブロック高さ、およびブロック面積を有する。ブロック面積は、ブロック幅とブロック高さとの乗算とすることができる。一例では、ブロックサイズはブロック面積で表される。以前に符号化されたブロックのブロック位置は、以前に符号化されたブロックの左上隅(例えば、4×4領域の左上隅)または左上サンプルによって表すことができる。
図13は、本開示の一実施形態による、現在のブロック(例えば、CB、CU)(1310)のIBC BV予測のための空間クラスの一例を示している。左領域(1302)は、現在のブロック(1310)の左にあり得る。左領域(1302)内のそれぞれのブロック位置を有する以前に符号化されたブロックのBV情報を、左候補または左BV候補と呼ぶことができる。上領域(1303)は、現在のブロック(1310)の上にあり得る。上領域(1303)内のそれぞれのブロック位置を有する以前に符号化されたブロックのBV情報を、上候補または上BV候補と呼ぶことができる。左上領域(1304)は、現在のブロック(1310)の左上にあり得る。左上領域(1304)内のそれぞれのブロック位置を有する以前に符号化されたブロックのBV情報を、左上候補または左上BV候補と呼ぶことができる。右上領域(1305)は、現在のブロック(1310)の右上にあり得る。右上領域(1305)内のそれぞれのブロック位置を有する以前に符号化されたブロックのBV情報を、右上候補または右上BV候補と呼ぶことができる。左下領域(1306)は、現在のブロック(1310)の左下にあり得る。左下領域(1306)内のそれぞれのブロック位置を有する以前に符号化されたブロックのBV情報を、左下候補または左下BV候補と呼ぶことができる。他の種類の空間クラスも定義し、CBVPバッファで使用することができる。
以前に符号化されたブロックのBV情報が以下の条件を満たす場合、BV情報を対応するカテゴリ(またはクラス)に分類することができる。
(i)クラス0:ブロックサイズ(例えば、ブロック面積)が閾値(例えば、64画素)以上である。
(ii)クラス1:BVの発生(または頻度)が2以上である。BVの発生は、BVが以前に符号化されたブロックを予測するために使用される回数を指すことができる。CBVPバッファを形成するためにプルーニングプロセスが使用される場合、BVが以前に符号化されたブロックを予測する際に複数回使用されるとき、BVを(同じBVを有する複数のエントリにではなく)1つのエントリに記憶することができる。BVの発生を記録することができる。
(iii)クラス2:ブロック位置は左領域(1302)内にあり、以前に符号化されたブロックの一部(例えば、4×4領域の左上隅)が現在のブロック(1310)の左にある。以前に符号化されたブロックは、左領域(1302)内にあり得る。あるいは、以前に符号化されたブロックは左領域(1302)を含む複数の領域にまたがることができ、ブロック位置は左領域(1302)内にある。
(iv)クラス3:ブロック位置は上領域(1303)内にあり、以前に符号化されたブロックの一部(例えば、4×4領域の左上隅)が現在のブロック(1310)の上にある。以前に符号化されたブロックは、上領域(1303)内にあり得る。あるいは、以前に符号化されたブロックは上領域(1303)を含む複数の領域にまたがることができ、ブロック位置は上領域(1303)内にある。
(v)クラス4:ブロック位置は左上領域(1304)内にあり、以前に符号化されたブロックの一部(例えば、4×4領域の左上隅)が現在のブロック(1310)の左上側にある。以前に符号化されたブロックは、左上領域(1304)内にあり得る。あるいは、以前に符号化されたブロックは左上領域(1304)を含む複数の領域にまたがることができ、ブロック位置は左上領域(1304)内にある。
(vi)クラス5:ブロック位置は右上領域(1305)内にあり、以前に符号化されたブロックの一部(例えば、4×4領域の左上隅)が現在のブロック(1310)の右上側にある。以前に符号化されたブロックは、右上領域(1305)内にあり得る。あるいは、以前に符号化されたブロックは右上領域(1305)を含む複数の領域にまたがることができ、ブロック位置は右上領域(1305)内にある。
(vii)クラス6:ブロック位置は左下領域(1306)内にあり、符号化されたブロックの一部(例えば、4×4領域の左上隅)が現在のブロック(1310)の左下側にある。以前に符号化されたブロックは、左下領域(1306)内にあり得る。あるいは、以前に符号化されたブロックは左下領域(1306)を含む複数の領域にまたがることができ、ブロック位置は左下領域(1306)内にある。
カテゴリ(またはクラス)ごとに、最後に符号化されたブロックのBVをBVP候補として導出することができる。CBVPバッファは、クラス0からクラス6の順に各カテゴリのBV予測子を付加することによって構成され得る。CBVPについての前述の説明は、上記で説明されていないより少ないクラスまたは追加のクラスを含むように適切に合わせることができる。クラス0~6のうちの1つまたは複数を変更することができる。一例では、HBVPバッファ内の各エントリは、7つのクラス0~6のうちの1つに分類される。クラス0~6のうちのどれが選択されるかを示すためにインデックスをシグナリングすることができる。デコーダ側では、選択されたクラスの最初のエントリを使用して、現在のブロックのBVを予測することができる。
本開示の態様は、イントラピクチャブロックおよび系列コピーモードのための空間変位ベクトル予測のための技術を提供する。系列コピーモードは、系列照合または系列予測とも呼ばれる。系列照合は、イントラブロックコピー(IBC)と同様であり、同じピクチャ内の再構成された領域に基づいてサンプルの系列を再構成することができる。さらに、系列照合は、サンプルの系列の形状に関してより多くの柔軟性を提供する。例えば、ブロックは長方形の形状を有し、系列は非長方形の形状を形成することができる。
図14は、本開示の一実施形態による系列コピーモードの一例を示している。現在のピクチャ(1410)は、再構成された領域(灰色の領域)(1420)と、再構成中の領域(1421)とを含む。領域(1421)内の現在のブロック(1435)が再構成中である。現在のブロック(1435)は、CB、CUなどであり得る。現在のブロック(1435)は、図14の例の系列(1430)や系列(1431)などの複数の系列を含むことができる。一例では、現在のブロック(1435)は複数の連続した系列に分割され、走査順序に沿ってある系列の後に次の系列が続く。走査順序は、ラスタ走査順序、トラバース走査順序などの任意の適切な走査順序とすることができる。
再構成された領域(1420)を、系列(1430)および系列(1431)を再構成するための参照領域として使用することができる。
複数の系列の各々について、系列オフセットベクトル(系列ベクトル(SV)とも呼ばれる)および系列の長さ(系列長とも呼ばれる)をシグナリングすることができる。SVは、再構成されるべき系列と、参照領域(1420)内に位置する、再構成された参照系列との間の変位オフセットを示す変位ベクトルとすることができる。参照系列は、再構成されるべき系列を再構成するために使用され得る。例えば、SV0は、系列(1430)と参照系列(1400)との間の変位オフセットを示す変位ベクトルであり、SV1は、系列(1431)と参照系列(1401)との間の変位オフセットを示す変位ベクトルである。よって、SVは、対応する参照系列が参照領域(1420)内のどこに位置するかを示すことができる。系列の系列長は、系列内のサンプル数を示す。一般に、再構成される系列は、参照系列と同じ長さを有する。
図14を参照すると、現在のブロック(1435)は、64個のサンプルを含む8×8CBである。現在のブロック(1435)は、ラスタ走査順序を使用して系列(1430)と系列(1431)とに分割されている。系列(1430)は現在のブロック(1435)の最初の29個のサンプルを含み、系列(1431)は現在のブロック(1435)の残りの35個のサンプルを含む。系列(1430)を再構成するために使用される参照系列(1400)を、対応する系列オフセットベクトルSV0によって示すことができ、系列(1431)を再構成するために使用される参照系列(1401)を、対応する系列オフセットベクトルSV1によって示すことができる。
一般に、系列サイズは、系列の長さまたは系列内のサンプル数を指すことができる。図14を参照すると、系列(1430)は29個のサンプルを含み、よって系列(1430)の系列サイズは29である。系列(1431)は35個のサンプルを含み、よって系列(1431)の系列サイズは35である。系列位置(string location)(または系列位置(string position))を、列内のサンプル(例えば、復号順序で最初のサンプル)のサンプル位置によって表すことができる。
前述の説明は、任意の適切な数の系列を含む現在のブロックを再構成するように適切に合わせることができる。あるいは、一例では、現在のブロック内のサンプルが参照領域内に一致するサンプルを有していない場合、エスケープサンプルがシグナリングされ、参照領域内の再構成されたサンプルを参照せずにエスケープサンプルの値を直接符号化することができる。
本開示の態様は、IBCモードのためのブロックベクトル予測および系列照合モードのための系列オフセットベクトル予測の両方の変位ベクトル予測技術を提供する。変位ベクトル予測技術を、スキップモード、直接/マージモードで使用することができ、または差分符号化によるベクトル予測で使用することができる。様々な変位ベクトル予測技術は、別々に使用されてもよいし、任意の順序で組み合わされてもよい。以下の説明では、ブロックという用語は、予測ブロック、符号化ブロック、または符号化ユニット、すなわちCUとして解釈され得る。
また、以下の説明では、空間的に隣接するブロックおよび空間的に隣接しないブロックという用語を用いる。空間的に隣接するブロックは、現在のブロックの次の(すぐ隣の)すでに符号化されたブロックを指し、空間的に隣接するブロックは、現在のブロックと同じ境界線または同じコーナー点を共有することができる。逆に、空間的に隣接しないブロックは、空間的に隣接するブロックではない以前に符号化されたブロックを指し、空間的に隣接しないブロックは、現在のブロックと同じ境界線または同じコーナー点を有さない。
図15は、本開示のいくつかの実施形態による、符号化プロセス中のピクチャ(1500)の図を示している。図15は、現在のブロック(1510)、およびA0~E0によって示されるような空間的に隣接するブロックのいくつかの例を示している。空間的に隣接するブロックA0は、現在のブロック(1510)との境界線((1521)で示す)の一部を共有する。空間的に隣接するブロックB0は、現在のブロック(1510)との境界線((1522)で示す)の一部を共有する。空間的に隣接するブロックC0は、現在のブロック(1510)とのコーナー点((1523)で示す)を共有する。空間的に隣接するブロックD0は、現在のブロック(1510)とのコーナー点((1524)で示す)を共有する。空間的に隣接するブロックE0は、現在のブロック(1510)とのコーナー点((1525)で示す)を共有する。E0とB0との間の現在のブロック(1510)の上の行に沿って配置されたブロック、またはA0とE0との間の現在のブロック(1510)の左の列に沿って配置されたブロックなどの他のブロックも、空間的に隣接する位置とみなすことができることに留意されたい。
さらに、図15はまた、現在のブロック(1510)といかなる境界部分またはコーナー点も共有しない、A1~E1、A2~E2、A3~E3などによって示されるような空間的に隣接しないブロックを示している。
いくつかの例では、空間的に隣接するブロックは、図15に示すA0~B0、A1~B1、A2~B2、およびA3~B3よりも大きいブロックであり得る。例えば、A0を含むブロック(1530)は変位ベクトルに基づいて符号化され、ブロック(1530)は現在のブロック(1510)に関して空間的に隣接するブロックである。別の例では、E1を含むブロック(1540)は変位ベクトルに基づいて符号化され、ブロック(1540)は現在のブロック(1510)と共有境界部分またはコーナーを有さない。ブロック(1540)は、現在のブロック(1510)に関して空間的に隣接しないブロックである。
本開示の態様によれば、現在のブロックがIBCモードで符号化されるとき、空間的に隣接するブロックまたは空間的に隣接しないブロックに関連付けられたブロックベクトルまたは系列オフセットベクトルが、現在のブロックを予測するために使用され得る。
一実施形態では、現在のブロックがIBCモードで符号化されるとき、IBCモードまたは系列照合モードのいずれかで符号化された空間的に隣接しないブロックは、現在のブロックのブロックベクトルを予測するための候補とみなされ得る。一例では、現在のブロックがIBCモードで符号化され、空間的に隣接しないブロックがIBCモードで符号化されるとき、空間的に隣接しないブロックのブロックベクトルを、現在のブロックのブロックベクトルを予測するための候補リストに入れることができる。一例では、現在のブロックがIBCモードで符号化され、空間的に隣接しないブロックが系列照合モードで符号化されるとき、空間的に隣接しないブロック内の系列の系列オフセットベクトルを、現在のブロックのブロックベクトルを予測するための候補リストに入れることができる。
別の実施形態では、現在のブロックがIBCモードで符号化されるとき、IBCモードで符号化された空間的に隣接しないブロックは、符号化された現在のブロックのブロックベクトルを予測するための候補とみなされ得る。系列照合モードで符号化された空間的に隣接するブロックおよび空間的に隣接しないブロックの両方が、IBCモードで符号化された現在のブロックのブロックベクトルを予測するための候補としてみなされる。一例では、現在のブロックがIBCモードで符号化され、空間的に隣接しないブロックがIBCモードで符号化されるとき、空間的に隣接しないブロックのブロックベクトルを、現在のブロックのブロックベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックがIBCモードで符号化され、空間的に隣接するブロックが系列照合モードで符号化されるとき、空間的に隣接するブロック内の系列の系列オフセットベクトルを、現在のブロックのブロックベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックがIBCモードで符号化され、空間的に隣接しないブロックが系列照合モードで符号化されるとき、空間的に隣接しないブロック内の系列の系列オフセットベクトルを、現在のブロックのブロックベクトルを予測するための候補リストに入れることができる。
いくつかの実施形態では、現在のブロックがIBCモードで符号化されるとき、系列の系列オフセットベクトルを使用して現在のブロックのブロックベクトルを予測するために、系列は特定の要件を満たす必要がある。一実施形態では、系列は、系列を含むブロック(空間的に隣接するブロックまたは空間的に隣接しないブロック)内の最後の系列である必要がある。例えば、ブロックは走査順序に従う複数の系列を含み、走査順序に従う複数の系列のうちの最後の系列は要件を満たすことができ、系列の系列オフセットベクトルを使用して(例えば、候補リストに入れる)現在のブロックのブロックベクトルを予測することができる。
別の実施形態では、特定の要件を満たすために系列の長さが必要とされる。一例では、現在のブロックがIBCモードで符号化され、ブロック内の系列がブロックの幅の倍数ではない長さを有する場合(水平走査順序が使用される)、系列の系列オフセットベクトルを使用して(例えば、候補リストに入れる)現在のブロックのブロックベクトルを予測することができる。別の例では、現在のブロックがIBCモードで符号化され、ブロック内の系列がブロックの高さの倍数ではない長さを有する場合(垂直走査順序が使用される)、系列の系列オフセットベクトルを使用して(例えば、候補リストに入れる)現在のブロックのブロックベクトルを予測することができる。
別の実施形態では、系列の形状は、特定の要件を満たす必要がある。一例では、現在のブロックがIBCモードで符号化され、ブロック(例えば、空間的に隣接するブロック、空間的に隣接しないブロック)内の系列がブロック内で長方形の形状を形成しない場合、系列の系列オフセットベクトルを使用して(例えば、候補リストに入れる)現在のブロックのブロックベクトルを予測することができる。
いくつかの実施形態では、現在のブロックがIBCモードで符号化されるとき、系列照合モードで符号化されたブロックは、ブロック内の系列の系列オフセットベクトルを使用して現在のブロックのブロックベクトルを予測するために特定の要件を満たす必要がある。一実施形態では、系列照合モードで符号化されたブロックは、2つ以上の系列オフセットベクトル(例えば、異なる系列オフセットベクトルを有する少なくとも2つの系列を有する)を有する必要があり、その場合、系列オフセットベクトルのうちの1つを使用して、現在のブロックのブロックベクトルを予測することができる。
いくつかの実施形態では、現在のブロックがIBCモードで符号化されるとき、系列の系列オフセットベクトルを使用して現在のブロックのブロックベクトルを予測するために、系列内のサンプルの座標が特定の要件を満たす必要がある。例えば、(x1,y1)は、走査順序に従う系列内の最初のサンプルの座標を示し、(x2,y2)は、走査順序に従う系列内の最後のサンプルの座標を示す。例えば、第1の要件は、x1がx2に等しくないことを必要とし(例えば、最初のサンプルと最後のサンプルは水平方向に整列していない)、第2の要件は、y1がy2に等しくないことを必要とし(例えば、最初のサンプルと最後のサンプルは垂直方向に整列していない)、第3の要件は、x1がx2に等しくなく、y1がy2に等しくないことを必要とし、第4の要件は、x1がx2に等しくないか、またはy1がy2に等しくないことを必要とする。一例では、系列の系列オフセットベクトルを使用して現在のブロックのブロックベクトルを予測できるようにするために、系列内の最初のサンプルおよび最後のサンプルの座標を制約するために、4つの要件のうちの1つが選択される。一例では、選択された要件が満たされない場合、系列の系列オフセットベクトルは、現在のブロックのブロックベクトルを予測するための候補とみなされず、現在のブロックのブロックベクトルを予測するための候補リストに入れることができない。
本開示の別の態様によれば、現在のブロックが系列照合モードで符号化されるとき、空間的に隣接するブロックまたは空間的に隣接しないブロックと関連付けられたブロックベクトルまたは系列オフセットベクトルを使用して、系列照合モードで符号化された現在のブロックを予測することができる。
一実施形態では、現在のブロックが系列照合モードで符号化されるとき、IBCモードまたは系列照合モードのいずれかで符号化された空間的に隣接しないブロックは、系列照合モードで符号化された現在のブロック内の系列の系列オフセットベクトルを予測するための候補とみなされ得る。一例では、現在のブロックが系列照合モードで符号化され、空間的に隣接しないブロックがIBCモードで符号化されるとき、空間的に隣接しないブロックのブロックベクトルを、現在のブロックの系列オフセットベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックが系列照合モードで符号化され、空間的に隣接しないブロックが系列照合モードで符号化されるとき、空間的に隣接しないブロック内の系列の系列オフセットベクトルを、現在のブロックの系列オフセットベクトルを予測するための候補リストに入れることができる。
別の実施形態では、現在のブロックが系列照合モードで符号化されるとき、IBCモードまたは系列照合モードのいずれかで符号化された空間的に隣接するブロックは、現在のブロック内の系列の系列オフセットベクトルを予測するための候補とみなされる。一例では、現在のブロックが系列照合モードで符号化され、空間的に隣接するブロックがIBCモードで符号化されるとき、空間的に隣接するブロックのブロックベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックが系列照合モードで符号化され、空間的に隣接するブロックが系列照合モードで符号化されるとき、空間的に隣接するブロック内の系列の系列オフセットベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。
別の実施形態では、現在のブロックが系列照合モードで符号化されるとき、IBCモードまたは系列照合モードのいずれかで符号化された空間的に隣接するブロックおよび空間的に隣接しないブロックに関連付けられたブロックベクトルおよび系列オフセットベクトルの両方は、現在のブロック内の系列の系列オフセットベクトルを予測するための候補とみなされ得る。一例では、現在のブロックが系列照合モードで符号化され、空間的に隣接するブロックがIBCモードで符号化されるとき、空間的に隣接するブロックのブロックベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックが系列照合モードで符号化され、空間的に隣接するブロックが系列照合モードで符号化されるとき、空間的に隣接するブロック内の系列の系列オフセットベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックが系列照合モードで符号化され、空間的に隣接しないブロックがIBCモードで符号化されるとき、空間的に隣接しないブロックのブロックベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。別の例では、現在のブロックが系列照合モードで符号化され、空間的に隣接しないブロックが系列照合モードで符号化されるとき、空間的に隣接しないブロック内の系列の系列オフセットベクトルを、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができる。
別の実施形態では、ブロックベクトルを使用して現在のブロック内の系列の系列ベクトルを予測するとき、現在のブロックは、現在のブロックが2つ以上の系列オフセットベクトル(例えば、異なる値の複数の系列オフセットベクトル)を有するという要件を満たす必要がある。そうでなければ、ブロックベクトルを、現在のブロック内の系列の系列ベクトルを予測するための候補とみなすことができない。
別の実施形態では、現在のブロックが系列照合モードで符号化され、1つの系列オフセットベクトルのみを有するとき、符号化されたBVは空間的に隣接しないブロックからのものでなければならないという制約が課され得る。一例では、現在のブロックは系列照合モードで符号化され、1つの系列オフセットベクトルのみを有し、ブロックベクトルが空間的に隣接しないブロックに関連付けられている場合、ブロックベクトルを、系列オフセットベクトルを予測するための候補リストに入れることができる。
別の実施形態では、現在のブロックは系列照合モードで符号化される。ブロックのブロックベクトル(例えば、空間的に隣接するブロック、空間的に隣接しないブロック)を使用して現在のブロック内の系列の系列オフセットベクトルを予測するとき、系列が水平走査順序に従うときに系列の長さが現在のブロックの幅の倍数ではないように制約が課される。系列が垂直走査順序に従うとき、同様に、系列の長さが現在のブロックの高さの倍数ではないように制約を課すことができる。一例では、現在のブロックが系列照合モードで符号化され、現在のブロック内の系列が現在のブロックの幅の倍数ではない長さを有する(水平走査順序が使用される)とき、ブロック(例えば、空間的に隣接するブロック、または空間的に隣接しないブロック)のブロックベクトルを使用して(例えば、候補リストに入れる)現在のブロック内の系列の系列オフセットベクトルを予測することができる。別の例では、現在のブロックが系列照合モードで符号化され、現在のブロック内の系列が現在のブロックの高さの倍数ではない長さを有する(垂直走査順序が使用される)とき、ブロック(例えば、空間的に隣接するブロック、または空間的に隣接しないブロック)のブロックベクトルを使用して(例えば、候補リストに入れる)現在のブロック内の系列の系列オフセットベクトルを予測することができる。
別の実施形態では、現在のブロックは系列照合モードで符号化され、ブロック(例えば、空間的に隣接するブロック、空間的に隣接しないブロック)のブロックベクトルを使用して現在のブロック内の系列の系列オフセットベクトルを予測するとき、系列内のサンプルの座標に制約が課される。例えば、(x1,y1)は走査順序に従う系列内の最初のサンプルの座標を示し、(x2,y2)は走査順序に従う系列内の最後のサンプルの座標を示し、ブロックベクトルを使用して系列の系列オフセットベクトルを予測するために、最初のサンプルおよび最後のサンプルの座標は特定の要件を満たす必要がある。例えば、第1の要件は、x1がx2に等しくないことを必要とし(例えば、最初のサンプルと最後のサンプルは水平方向に整列していない)、第2の要件は、y1がy2に等しくないことを必要とし(例えば、最初のサンプルと最後のサンプルは垂直方向に整列していない)、第3の要件は、x1がx2に等しくなく、y1がy2に等しくないことを必要とし、第4の要件は、x1がx2に等しくないか、またはy1がy2に等しくないことを必要とする。一例では、ブロックベクトルを使用して現在のブロック内の系列の系列オフセットベクトルを予測できるようにするために、系列内の最初のサンプルおよび最後のサンプルの座標を制約するために、4つの要件のうちの1つが選択される。一例では、選択された要件が満たされない場合、ブロックのブロックベクトルは、現在のブロック内の系列の系列オフセットベクトルを予測するための候補とみなされず、現在のブロック内の系列の系列オフセットベクトルを予測するための候補リストに入れることができない。
別の実施形態では、系列の形状は、特定の要件を満たす必要がある。一例では、現在のブロックは系列照合モードで符号化され、IBCモードの空間的に隣接するブロックのブロックベクトルは、現在のブロック内の系列の系列オフセットベクトルを予測するために使用され、系列は、現在のブロック内で長方形を形成しないように制約される(例えば、系列は、現在のブロックにおいて長方形の形状を形成しないことが必要である)。
本開示の別の態様によれば、空間的に隣接するブロックまたは空間的に隣接しないブロックからのブロックベクトルまたは系列オフセットベクトルは、候補リスト内の履歴ベースのブロックベクトルまたは履歴ベースの系列オフセットベクトルと組み合わせることができる。いくつかの実施形態では、空間候補(例えば、空間的に隣接するブロックまたは空間的に隣接しないブロックからのブロックベクトル、空間的に隣接するブロックまたは空間的に隣接しないブロックからの系列オフセットベクトル)を、ブロックベクトルまたは系列オフセットベクトルを予測するための候補リスト内の履歴ベースの候補(例えば、履歴ベースのブロックベクトル、履歴ベースの系列オフセットベクトル)の前に入れることができる。いくつかの実施形態では、空間候補(例えば、空間的に隣接するブロックまたは空間的に隣接しないブロックからのブロックベクトル、空間的に隣接するブロックまたは空間的に隣接しないブロックからの系列オフセットベクトル)を、ブロックベクトルまたは系列オフセットベクトルを予測するための候補リスト内の履歴ベースの候補(例えば、履歴ベースのブロックベクトル、履歴ベースの系列オフセットベクトル)の後に入れることができる。
いくつかの実施形態では、クラスベースの予測を、例えば、クラスベースの履歴ベースのブロックベクトル予測(CBVPとも呼ばれる)で使用されるのと同様の方法で、系列ベクトル予測に使用することができる。いくつかの例では、新しい空間候補に関連付けられた位置情報およびサイズ情報などの追加情報を、ベクトル情報(ブロックベクトルまたは系列オフセットベクトル)と共に候補リストに記憶することができる。新しい空間候補は、空間的に隣接するブロックからのブロックベクトル、空間的に隣接しないブロックからのブロックベクトル、空間的に隣接するブロックからの系列オフセットベクトル、空間的に隣接しないブロックからの系列オフセットベクトルとすることができる。位置情報およびサイズ情報により、新しい空間候補を、予測子の正しいクラスに分類することができる。
本開示の別の態様によれば、いくつかの空間候補を候補リストに入れるために、空間位置は、空間候補を決定するための所定の順序などの特定の順序に従ってアクセスされる。例えば、空間的に隣接しないブロックを用いて系列照合モードで系列オフセットベクトルを予測することが考えられる。一例では、位置A1~E1における空間的に隣接しないブロックは、A1、B1、C1、D1、E1の順序に従ってアクセスされ得る。一例では、現在のブロックは系列照合モードで符号化される。位置がアクセスされると、その位置を含むブロックがIBCまたは系列照合モードのいずれかで符号化される場合、そのブロックに関連付けられた変位ベクトル(ブロックベクトルまたは系列オフセットベクトルのいずれか)を使用して、現在のブロック内の系列オフセットベクトルを予測することができ、系列照合モードで符号化された現在のブロック内の系列を予測するための候補リストに入れることができる。
別の例では、現在のブロックはIBCモードで符号化される。位置がアクセスされると、その位置を含むブロックがIBCまたは系列照合モードのいずれかで符号化される場合、そのブロックに関連付けられた変位ベクトル(ブロックベクトルまたは系列オフセットベクトルのいずれか)を使用して、現在のブロックのブロックベクトルを予測することができ、IBCモードで符号化された現在のブロックを予測するための候補リストに入れることができる。
図16は、本開示の一実施形態によるプロセス(1600)の概要を示すフローチャートを示している。プロセス(1600)は、符号化されたビデオシーケンスのピクチャにおけるブロックまたは系列を再構成するために使用され得る。プロセス(1600)は、再構成中のブロックの予測ブロックを生成するために、ブロックの再構成に使用され得る。本開示におけるブロックという用語は、予測ブロック、CB、CUなどとして解釈され得る。様々な実施形態では、プロセス(1600)は、端末デバイス(310)、(320)、(330)、および(340)の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1600)はソフトウェア命令で実現され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1600)を実行する。(S1601)からプロセスが開始され、(S1610)に進む。
(S1610)において、現在のブロックの予測情報が符号化されたビデオビットストリームから復号される。予測情報は、現在のブロックと同じピクチャ内の再構成されたサンプルに基づいて現在のブロックを符号化する符号化モードを示す。
符号化モードは、イントラブロックコピー(IBC)モードであってもよく、または系列照合モードであってもよいことに留意されたい。
(S1620)において、現在のブロックに対する所定の空間的関係を有するブロックの少なくとも一部を再構成するために使用される候補ベクトルが決定される。
所定の空間的関係は、現在のブロックに空間的に隣接するブロックおよび/または現在のブロックに空間的に隣接しないブロックを含むことができることに留意されたい。ブロックはIBCモードまたは系列照合モードで符号化され得ることにも留意されたい。
いくつかの実施形態では、予測情報は、現在のブロックを符号化するためのイントラブロックコピー(IBC)モードを示し、ブロックは、系列照合モードで符号化された空間的に隣接するブロックおよび空間的に隣接しないブロックのうちの1つである。
いくつかの実施形態では、予測情報は、現在のブロックを符号化するためのイントラブロックコピー(IBC)モードを示し、ブロックは、IBCモードおよび系列照合モードのうちの1つで符号化された空間的に隣接しないブロックである。
いくつかの実施形態では、予測情報は、現在のブロックを符号化するための系列照合モードを示し、ブロックは、系列照合モードおよびイントラブロックコピー(IBC)モードのうちの1つで符号化された空間的に隣接するブロックおよび空間的に隣接しないブロックのうちの1つである。
いくつかの実施形態では、予測情報はイントラブロックコピー(IBC)モードを示し、ブロックは系列照合モードで符号化され、候補ベクトルは、走査順序に従うブロック内の最後の系列の系列オフセットベクトルであるという要件を満たす。
いくつかの実施形態では、予測情報は、現在のブロックを符号化するためのイントラブロックコピー(IBC)モードを示し、ブロックは系列照合モードで符号化され、候補ベクトルは、ブロック内の非矩形部分の再構成に関連付けられるという要件を満たす。
いくつかの実施形態では、現在のブロックはイントラブロックコピー(IBC)モードで符号化され、ブロックは系列照合モードで符号化され、そして、ブロック内の系列の系列オフセットベクトルは、ブロックが異なる値の複数の系列オフセットベクトルを有する、系列の長さがブロックの幅の倍数ではない、系列の長さがブロックの高さの倍数ではない、系列の最初のサンプルと最後のサンプルとが水平方向に整列していない、系列の最初のサンプルと最後のサンプルとが垂直方向に整列していない、系列の最初のサンプルと最後のサンプルとが水平方向または垂直方向に整列していない、および、系列の最初のサンプルと最後のサンプルとが水平方向および垂直方向に整列していない、のうちの少なくとも1つの要件の充足に応答して候補ベクトルとして決定される。
(S1630)において、候補ベクトルを含む候補リストから、現在のブロックの少なくとも一部を再構成するための変位ベクトルが決定される。
変位ベクトルは、ブロックベクトルまたは系列オフセットベクトルとすることができる。
いくつかの実施形態では、予測情報は、現在のブロックを符号化するための系列照合モードを示し、ブロックはイントラブロックコピー(IBC)モードで符号化され、変位ベクトルは、現在のブロック内の非矩形部分の再構成に関連付けられるという要件を満たす。
いくつかの実施形態では、現在のブロックは系列照合モードで符号化され、ブロックはイントラブロックコピー(IBC)モードで符号化され、次に、現在のブロック内の系列の系列オフセットベクトルは、現在のブロックが異なる値の複数の系列オフセットベクトルを有する、系列の長さが現在のブロックの幅の倍数ではない、系列の長さが現在のブロックの高さの倍数ではない、系列の最初のサンプルと最後のサンプルとが水平方向に整列していない、系列の最初のサンプルと最後のサンプルとが垂直方向に整列していない、系列の最初のサンプルと最後のサンプルとが水平方向または垂直方向に整列していない、および、系列の最初のサンプルと最後のサンプルとが水平方向および垂直方向に整列していない、のうちの少なくとも1つの要件の充足に応答して候補ベクトルに基づいて決定される。
(S1640)において、現在のブロックの一部が変位ベクトルに基づいて再構成される。
その後、プロセスは(S1699)に進み、終了する。
プロセス(1600)は、適切に合わせることができる。プロセス(1600)のステップを、修正および/または省略することができる。追加のステップを追加することができる。任意の適切な実施順序を使用することができる。例えば、現在のベクトル情報が一意であると判定された場合、前述したように、現在のベクトル情報を履歴バッファに記憶することができる。いくつかの例では、プルーニングプロセスが使用され、現在のベクトル情報が履歴バッファに記憶されるときに履歴バッファ内のベクトル情報の1つが削除される。
上述した技術は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装され得る。例えば、図17は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(1700)を示している。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンクなどの機構に従うことができる任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行することができる命令を含むコードを作成することができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々な種類のコンピュータまたはその構成要素において実行され得る。
コンピュータシステム(1700)について図17に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する制限を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(1700)の例示的な実施形態に示されている構成要素のいずれかまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(1700)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した、1人または複数の人間ユーザによる入力に応答し得る。ヒューマンインターフェースデバイスを使用して、音声(発話、音楽、周囲音など)、画像(走査画像、静止画像カメラで取得される写真画像など)、ビデオ(二次元ビデオ、立体ビデオを含む三次元ビデオなど)などの人による意識的な入力に必ずしも直接関与しない、特定の媒体をキャプチャすることもできる。
入力ヒューマンインターフェースデバイスは、キーボード(1701)、マウス(1702)、トラックパッド(1703)、タッチ画面(1710)、データグローブ(図示せず)、ジョイスティック(1705)、マイクロフォン(1706)、スキャナ(1707)、カメラ(1708)のうちの1つまたは複数(各々のうちのただ1つ)を含んでもよい。
コンピュータシステム(1700)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間ユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチ画面(1710)、データグローブ(図示せず)、またはジョイスティック(1705)による触覚フィードバックが含まれることがあるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ(1709)、ヘッドホン(図示せず)など)、視覚出力デバイス(それぞれがタッチ画面入力機能の有無にかかわらず、それぞれが触覚フィードバック機能の有無にかかわらず、CRT画面、LCD画面、プラズマ画面、OLED画面を含む画面(1710)などであり、それらの一部は、ステレオグラフィック出力、仮想現実ガラス(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段を介して二次元視覚出力または三次元以上の出力が可能であり得る)、およびプリンタ(図示せず)を含んでもよい。
コンピュータシステム(1700)は、CD/DVDなどの媒体(1721)を伴うCD/DVD ROM/RW(1720)を含む光媒体、サムドライブ(1722)、リムーバブルハードドライブまたはソリッドステートドライブ(1723)、テープやフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用のROM/ASIC/PLDベースのデバイスなど、人間がアクセス可能な記憶デバイスおよびその関連媒体を含むこともできる。
当業者はまた、本開示内容に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことを理解すべきである。
コンピュータシステム(1700)はまた、1つまたは複数の通信ネットワーク(1755)へのインターフェース(1754)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、Ethernetなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルテレビ、衛星テレビおよび地上波テレビを含むテレビの有線または無線広域デジタルネットワーク、CANBusを含む車両用および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(1749)(例えば、コンピュータシステム(1700)のUSBポートなど)に接続された外部ネットワークインターフェースアダプタを必要とし、他のものは一般に、以下に記載されるようにシステムバスへの接続によってコンピュータシステム(1700)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1700)は、他のエンティティと通信することができる。このような通信は、単方向、受信のみ(例えば、放送TV)、単方向送信のみ(例えば、CANbusから特定のCANbusデバイスへ)、または双方向、例えば、ローカルエリアデジタルネットワークまたはワイドエリアデジタルネットワークを用いる他のコンピュータシステムとの通信であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースを、コンピュータシステム(1700)のコア(1740)に取り付けることができる。
コア(1740)は、1つまたは複数の中央処理装置(CPU)(1741)、グラフィックス処理装置(GPU)(1742)、フィールドプログラマブルゲートエリア(FPGA)(1743)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(1744)、グラフィックスアダプタ(1750)などを含むことができる。これらのデバイスは、読み取り専用メモリ(ROM)(1745)、ランダムアクセスメモリ(1746)、ユーザがアクセスすることができない内部ハードドライブ、SSDsなどの内部大容量記憶装置(1747)と共に、システムバス(1748)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(1748)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺デバイスは、コアのシステムバス(1748)に直接取り付けることも、周辺バス(1749)を介して取り付けることもできる。一例では、画面(1710)をグラフィックスアダプタ(1750)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
CPU(1741)、GPU(1742)、FPGA(1743)、およびアクセラレータ(1744)は、組み合わさって上記のコンピュータコードを形成することができるいくつかの命令を実行することができる。そのコンピュータコードを、ROM(1745)またはRAM(1746)に記憶することができる。移行データもまたRAM(1746)に記憶することができるが、永続データを、例えば内部大容量記憶装置(1747)に記憶することができる。1つまたは複数のCPU(1741)、GPU(1742)、大容量記憶装置(1747)、ROM(1745)、RAM(1746)などと密接に関連付けることができるキャッシュメモリの使用によって、メモリデバイスのいずれかへの高速記憶および取得を可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよく、またはコンピュータソフトウェア技術の当業者に、良く知られた利用可能な種類のものであってもよい。
限定ではなく、例として、アーキテクチャ(1700)、特にコア(1740)を有するコンピュータシステムは、1つまたは複数の有形のコンピュータ可読媒体で具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上記で紹介したようにユーザがアクセス可能な大容量記憶装置のほか、コア内部大容量記憶装置(1747)またはROM(1745)などの非一時的性質のコア(1740)の特定の記憶装置にも関連する媒体であり得る。本開示の様々な実施形態を実施するソフトウェアをこのようなデバイスに記憶して、コア(1740)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアによって、コア(1740)、特にコア(1740)内のプロセッサ(CPU、GPU、FPGAなどを含む)に、本明細書に記載の、RAM(1746)に記憶されるデータ構造を決めることと、ソフトウェアによって定められたプロセスに従ってこのようなデータ構造を修正することとを含む、特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりにまたはそれと一緒に動作することができる回路(例えば、アクセラレータ(1744))に配線されたまたはそうでなければ具体化された論理の結果として機能を提供することができる。ソフトウェアへの参照は、適切な場合には、論理を包含することができ、逆もまた同様である。コンピュータ可読媒体への参照は、適切な場合には、実行のためにソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理回路を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探査モデル
VVC:多用途ビデオ符号化
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオ符号化
MPM:最確モード
WAIP:広角イントラ予測
SEI:補足エンハンスメント情報
VUI:ビデオユーザビリティ情報
GOP:グループオブピクチャ
TU:変換ユニット
PU:予測ユニット
CTU:符号化ツリーユニット
CTB:符号化ツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SDR:スタンダートダイナミックレンジ
SNR:信号雑音比
CPU:中央処理装置
GPU:グラフィックス処理装置
CRT:ブラウン管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み出し専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブル論理デバイス
LAN:ローカルエリアネットワーク
GSM:グローバル移動体通信システム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:符号化ユニット
PDPC:位置依存予測組み合わせ
ISP:イントラサブパーティション
SPS:シーケンスパラメータ設定
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る修正、置換、および様々な代替等価物がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。