図3は、本開示の一実施形態による通信システム(300)の簡略ブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1の対を含む。図3の例では、第1のペアの端末デバイス(310)および(320)は、データの単方向送信を実行する。例えば、端末デバイス(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は、開示されている主題の用途の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTV、ならびにCD、DVD、およびメモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶などを含む他のビデオ対応用途に等しく適用可能であり得る。
ストリーミングシステムは、ビデオソース(401)、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成する、例えば、デジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。エンコーディングされたビデオデータ(404)(または符号化されたビデオビットストリーム)と比較して高いデータ量を強調するために太線として示されているビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理され得る。ビデオエンコーダ(403)は、ハードウェア、ソフトウェア、またはそれらの組み合わせを含み、以下により詳細に説明されるように、開示された主題の態様を可能にするかまたは実施することができる。エンコーディングされたビデオデータ(404)(またはエンコーディングされたビデオビットストリーム(404))は、ビデオピクチャのストリーム(402)と比較してより少ないデータ量を強調するために細い線として描かれ、将来の使用のためにストリーミングサーバ(405)に格納することができる。図4のクライアントサブシステム(406)および(408)などの1つ以上のストリーミングクライアントサブシステムは、エンコーディングされたビデオデータ(404)のコピー(407)および(409)を検索するためにストリーミングサーバ(405)にアクセスし得る。クライアントサブシステム(406)は、例えば電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコーディングされたビデオデータの入力コピー(407)をデコーディングし、ディスプレイ(412)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオピクチャの出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、エンコーディングされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)を、特定のビデオ符号化/圧縮規格に従ってエンコーディングすることができる。例えば、ITU-T勧告H.265などが挙げられる。一例では、開発
中のビデオ符号化規格は、多用途ビデオ符号化(VVC)として非公式に知られている。開示されている主題は、VVCの文脈で使用され得る。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)はビデオエンコーダ(図示せず)も含むことができる。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用され得る。
受信機(531)は、ビデオデコーダ(510)によってデコーディングされる1つまたは複数の符号化されたビデオシーケンスを受信し得、同じまたは別の実施形態では、一度に1つの符号化されたビデオシーケンスを受信し、各符号化されたビデオシーケンスのデコーディングは、他の符号化されたビデオシーケンスから独立している。符号化されたビデオシーケンスは、チャネル(501)から受信され得、チャネル(501)は、エンコーディングされたビデオデータを格納する記憶デバイスへのハードウェア/ソフトウェアリンクであり得る。受信機(531)は、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、符号化されたオーディオデータおよび/または補助データストリームと共にエンコーディングされたビデオデータを受信し得る。受信機(531)は、符号化されたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)を、受信機(531)とエントロピーデコーダ/パーサ(520)(以下、「パーサ(520)」)との間に結合し得る。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外部にあってもよい(図示せず)。さらに他のものでは、例えばネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があり、さらに例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)があり得る。受信機(531)が十分な帯域幅および制御可能性の格納/転送デバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は必要ないか、または小さくてよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされることがあり、比較的大きくてもよく、好適には適応サイズであってもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装され得る。
ビデオデコーダ(510)は、符号化されたビデオシーケンスからシンボル(521)を再構築するためのパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、場合によっては、図5に示されているように、電子デバイス(530)の不可欠な部分ではないが、電子デバイス(530)に結合され得るレンダデバイス(512)などのレンダリングデバイス(例えば、表示スクリーン)を制御するための情報を含む。レンダリングデバイスの制御情報は、補足拡張情報(SEI(Supplemental Enhancement Information)メッセージ)またはビデオユーザビリティ情報(VUI:Video Usability Information)パラメータセットフラグメント(図示せず)の形式であり得る。パーサ(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:Hypothetical Reference Decoder)の仕様、および符号化されたビデオシーケンスでシグナリングされるHRDバッファ管理のメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコーディングされたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、符号化されたビデオシーケンス(複数可)の一部として含まれることがある。追加のデータは、データを適切にデコーディングするため、および/または元のビデオデータをより正確に再構築するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間、空間、または信号ノイズ比(SNR:signal noise ratio)拡張層、冗長スライス、冗長ピクチャ、および前方誤り訂正コードなどの形式であり得る。
図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)の動作は、図5に関連して上記ですでに詳細に説明された、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図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)は、それぞれの符号化されたピクチャに特定の符号化されたピクチャタイプを割り当てることがあり、これは、それぞれのピクチャに適用され得る符号化技術に影響を及ぼし得る。例えば、ピクチャは、多くの場合、以下のピクチャタイプのうちの1つとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、シーケンス内の他のピクチャを予測のソースとして使用せずに符号化およびデコーディングされ得るものであり得る。一部のビデオコーデックは、例えば独立デコーダリフレッシュ(「IDR:Independent Decoder Refresh」)ピクチャを含む様々なタイプのイントラピクチャに対応する。当業者は、Iピクチャのそれらの変種ならびにそれらのそれぞれの用途および特徴を認識している。
予測ピクチャ(Pピクチャ)は、イントラ予測またはインター予測を用い、各ブロックのサンプル値を予測するのに最大1つの動きベクトルと参照インデックスとを用いて符号化およびデコーディングを行うことができるピクチャであるといえる。
双方向予測ピクチャ(Bピクチャ)は、イントラ予測またはインター予測を用い、各ブロックのサンプル値を予測するのに最大2つの動きベクトルと参照インデックスとを用いて符号化およびデコーディングを行うことができるピクチャであるといえる。同様に、複数の予測ピクチャは、単一のブロックの再構築のために2つより多くの参照ピクチャおよび関連メタデータを使用し得る。
ソースピクチャは、一般的には、複数のサンプルブロック(例えば、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:coding tree unit)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、CTUは、1つの輝度符号化ツリーブロック(CTB)および2つの彩度CTBである3つのCTBを含む。各CTUは、1つまたは複数の符号化ユニット(CU)に再帰的にクワッドツリー分割され得る。例えば、64x64画素のCTUは、64x64画素の1つのCU、または32x32画素の4つのCU、または16x16画素の16個のCUに分割され得る。一例では、各CUは、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために分析される。CUは、時間的および/または空間的な予測可能性に応じて、1つ以上の予測ユニット(PU:prediction unit)に分割される。一般に、各PUは、ルマ予測ブロック(PB:prediction block)と、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サイズは128x128サンプルである。現在のCTBは、再構築中の現在の領域を含む。現在の領域は、64x64サンプルのサイズを有する。参照メモリは、再構築されたサンプルを現在の領域にさらに格納できるので、参照メモリは、参照メモリサイズが、128x128サンプルのCTBサイズと等しいときは、64x64のサンプルをさらに3領域格納することができる。したがって、検索範囲は、以前に再構築されたCTBのいくつかの部分を含むことができ、参照サンプルを格納するための総メモリ要件は変化しない(128x128サンプルの1CTBサイズ、または64x64の合計4つの参照サンプルなど)。一例では、図10に示すように、以前に再構築されたCTBが現在のCTBの左隣にある。
図10は、本開示の実施形態によるイントラブロックコピーの例を示す。現在のピクチャ(1001)は、再構築中の現在のCTB(1015)と、現在のCTB(1015)の左隣にある、以前に再構築されたCTB(1010)とを含む。現在のピクチャ(1001)内のCTBは、128x128サンプルなどの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サイズは128x128サンプルで、領域(1111)~(1114)および(1116)~(1119)はそれぞれ64x64サンプルである。参照メモリサイズはCTBサイズと等しい128x128サンプルであり、したがって検索範囲は、参照メモリサイズによって境界を定められるときは、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サイズは、128x128サンプルである。説明は、他の参照メモリサイズまたは最大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サイズおよび参照メモリサイズは128x128サンプルであり、したがって各領域(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モードの参照領域に揃えることができる。さらに、現在のCTUの再構築された部分とIBCモードの左CTUの一部の領域の組み合わせで適用できる参照サンプル可用性論理は、文字列照合にも同様に適用できる。
いくつかの例では、参照メモリを使用して最近再構築されたサンプルを格納し、参照メモリにアクセスして、IBCモードの現在のブロックまたは文字列照合モードの現在の文字列を再構築できる。次に、文字列ベクトルを参照メモリに基づいて制約し、現在のブロックまたは現在の文字列を再構築するための参照サンプルが参照メモリに格納されていることを確認できる。一例では、参照メモリのサイズは、CTUサイズ(例えば、128×128サンプル)と同じであると仮定される。いくつかの例では、参照メモリは、高速アクセス速度で実施される。
図15に、いくつかの例におけるIBCモードのための参照メモリ更新のプロセスを示し、参照メモリ更新プロセスは、文字列照合モードについても同様に使用することができる。
図15の例では、各CTUは128×128サンプルのサイズを有し、よって、参照メモリは128×128サンプルを格納するためのサイズを有する。図15では、参照メモリは、各々が64×64サンプルのサイズを有する4つのサブ部分に分割されている。現在のCTUを符号化する動作中に、参照メモリは、いくつかの例では、1つのサブ部分ごとに更新される。図15は、現在のCTUの符号化中の参照メモリの状態(参照メモリビュー)、およびCTUに基づく対応するエンコーディング/デコーディングプロセス(CTUビュー)を示している。図15では、符号化された部分は灰色で示されており、符号化されていない部分は白色で示されており、現在の符号化ブロックは縞模様で示されており、現在の符号化ブロックの参照ブロックは破線で示されている。
例えば、最初に、参照メモリは、(1510)で示すように、状態(0)にあり、現在のCTUの左CTUに再構築されたサンプルを格納する。例えば、左CTUは、0、1、2、および3とラベル付けされた4つのサブブロックに分割することができ、参照メモリは、(1510)で示されるように、左CTUのサブブロック0~3の再構築されたサンプルを格納する。現在のCTUは、4、5、6、および7とラベル付けされた4つのサブブロックに分割することができる。
現在のCTU内のサブブロック4をエンコーディング/デコーディングするために、参照メモリは、(1520)で示すように、状態(1)になる。参照メモリは、左CTUのサブブロック1、2、および3の再構築されたサンプルを依然として格納することができる。左CTUのサブブロック0の再構築されたサンプルを格納するために使用された参照メモリのサブ部分は、現在のCTUのサブブロック4の再構築されたサンプルを格納するために使用される。一例では、現在のCTUのサブブロック4を符号化する前に、サブブロック0の再構築されたサンプルを格納するために使用された参照メモリのサブ部分をクリアすることができる。
CTUビューから、(1525)で示すように、左CTUのサブブロック0は参照メモリで利用できず、「×」でマークされている。左CTU内のサブブロック1~3は依然として参照メモリ内にある。
現在のCTU内のサブブロック5をエンコーディング/デコーディングするために、参照メモリは、(1530)で示すように、状態(2)になる。参照メモリは、左CTUのサブブロック2および3、ならびに現在のCTUのサブブロック4の再構築されたサンプルを依然として格納することができる。左CTUのサブブロック1の再構築されたサンプルを格納するために使用された参照メモリのサブ部分は、現在のCTUのサブブロック5の再構築されたサンプルを格納するために使用される。
CTUビューから、(1535)で示すように、左CTUのサブブロック0および1は参照メモリで利用できず、「×」でマークされている。左CTU内のサブブロック2および3は依然として参照メモリ内にある。
現在のCTU内のサブブロック6をエンコーディング/デコーディングするために、参照メモリは、(1540)で示すように、状態(3)になる。参照メモリは、左CTUのサブブロック3、ならびに現在のCTUのサブブロック4および5の再構築されたサンプルを依然として格納することができる。左CTUのサブブロック2の再構築されたサンプルを格納するために使用された参照メモリのサブ部分は、現在のCTUのサブブロック6の再構築されたサンプルを格納するために使用される。
CTUビューから、(1545)で示すように、左CTUのサブブロック0、1および2は参照メモリで利用できず、「×」でマークされている。左CTU内のサブブロック3は依然として参照メモリ内にある。
現在のCTU内のサブブロック7をエンコーディング/デコーディングするために、参照メモリは、(1550)で示すように、状態(4)になる。参照メモリは、現在のCTUのサブブロック4、5、および6の再構築されたサンプルを依然として格納することができる。左CTUのサブブロック3の再構築されたサンプルを格納するために使用された参照メモリのサブ部分は、現在のCTUのサブブロック7の再構築されたサンプルを格納するために使用される。
CTUビューから、(1555)で示すように、左CTUのサブブロック0、1、2および3は参照メモリで利用できず、「×」でマークされている。
図15の例では、各状態において(現在のCTUの各64×64サブブロックの符号化の開始時に)、参照メモリ内で利用可能な対応するサンプルを有する利用可能な参照エリアは、「×」マークなしの灰色で示されている。
本開示のいくつかの態様によれば、文字列照合モードに対して参照サンプルの制約を緩めることができ、したがって、より多くの潜在的な参照サンプルを使用することができ、符号化効率が改善することができる。
一例では、IBCモードには、参照ブロックと現在のブロックとのオーバーラップを必要としない非オーバーラップ制約がある。非オーバーラップ制約は、文字列照合モードでも同様に適用できる。例えば、文字列照合モードの非オーバーラップ制約では、参照文字列のサンプルが現在の文字列内のサンプルとオーバーラップしないようにする必要がある。非オーバーラップ制約は、参照サンプルをコピーして現在の文字列を埋めるときに、参照文字列内のまだ再構築されていないサンプルにアクセスすることを回避するために使用される。関連する一例では、現在の文字列の再構築は、参照文字列に対応する第1のメモリ空間に格納された値を現在の文字列に対応する第2のメモリ空間にコピーするメモリコピー操作によって実行することができる。メモリコピー操作を実行するには、参照文字列のサンプルを再構築して第1のメモリスペースに格納する必要があるため、現在の文字列が参照文字列とオーバーラップしないようにする必要がある。非オーバーラップ制約は、文字列ベクトルを制限し、符号化効率を限定することができる。
以下では、ブロックという用語は、予測ブロック、符号化ブロック、または符号化ユニット、すなわちCUとして解釈され得る。
本開示のいくつかの態様は、現在の文字列と参照文字列との間でオーバーラップするサンプルを用いて文字列照合モードを可能にする技術を提供する。現在の文字列に対する文字列ベクトルは、SV(svx、svy)で表され、svxは水平成分であり、svyは垂直成分である。いくつかの例では、ピクチャの左上隅がピクチャの二次元平面の原点と見なされ、二次元平面の水平値(例えば、x値)は、左から右の方向に増加し、二次元平面の垂直値(例えば、y値)は上から下の方向に増加する。
本開示のいくつかの態様によれば、現在の文字列内のサンプルは、部分ごとのプロセスなどで、部分によって再構築することができる。部分ごとのプロセスでは、現在の文字列の第2の部分を再構築する前に、現在の文字列の第1の部分を再構築する。現在の文字列の第1の部分の再構築後、現在の文字列の第2の部分は、現在の文字列の第1の部分に基づいて再構築できる。いくつかの例では、現在の文字列の再構築は、複数のメモリコピー操作によって実行できる。例えば、現在の文字列の第1の部分の再構築は、現在の文字列の第1の部分に対応する第1のメモリ空間にサンプル値を格納する第1のメモリコピー操作によって実行され、現在の文字列の第2の部分の再構築は、現在の文字列の第2の部分に対応する第2のメモリ空間にサンプル値を格納する第2のメモリコピー操作によって実行される。第2のメモリコピー操作は、第1のメモリ空間に少なくともサンプル値をコピーして、第2のメモリ空間に格納する。
上記の説明において、現在の文字列の部分は、それぞれ、任意の適切な数のサンプルを有することができ、任意の適切な形状を有することができることに留意されたい。一例では、文字列の一部は、文字列内のサンプルの行を含むサンプル行である。別の一例では、文字列の一部は、文字列内のサンプルの列を含むサンプル列である。別の一例では、文字列の一部が文字列内のサンプルである。
説明を簡単にするために、文字列照合モードでの参照位置制約の手法の以下の説明では、水平走査順序が仮定される。垂直走査順序の文字列照合モードでの参照位置制約の対応する手法は、同様の方法で適切に導出できる。
本開示の一態様によれば、現在の文字列が複数のラインを含む場合(例えば、水平方向のサンプル行、垂直方向のサンプル列)、現在の文字列の再構築は、ラインごとの方法(例えば、行ごとの方法、列ごとの方法)で実行できる。
一例では、現在の文字列には、それぞれが水平走査順序で走査できる複数のサンプル行が含まれ、現在の文字列の再構築は行ごとに実行できる。具体的には、現在の文字列の(走査順序に従う)前の行内のサンプルが再構築されたときに、現在の文字列の行内のサンプルの再構築を実行できる。
図16は、いくつかの例による文字列の再構築プロセスの一例を示す。図16は、ブロック(1610)内の現在の文字列(1615)の再構築プロセスを示す。文字列ベクトルSVは、現在の文字列(1615)に対して決定される。文字列ベクトルSVは、現在の文字列(1615)とオーバーラップする参照文字列を指す。図16の例では、現在の文字列(1615)は、水平走査順序に従って走査することができる、第1のサンプル行(1611)、第2のサンプル行(1612)、および第3のサンプル行(1613)などの3つの行のサンプルを含む。
現在の文字列(1615)は、行ごとに再構築される。例えば、第1のステップ(ステップ1)では、現在の文字列(1615)の第1のサンプル行(1611)が、参照文字列の画素(1621)に基づいて再構築される。一例では、メモリコピー操作を実行して、画素(1621)に対応するメモリ空間に格納されたサンプル値を、第1のサンプル行(1611)に対応するメモリ空間にコピーすることができる。
さらに、第2のステップ(ステップ2)では、現在の文字列(1615)の第2のサンプル行(1612)が、参照文字列の画素(1622)に基づいて再構築される。一例では、メモリコピー操作を実行して、画素(1622)に対応するメモリ空間に格納されたサンプル値を、第2のサンプル行(1612)に対応するメモリ空間にコピーすることができる。
さらに、第3のステップ(ステップ3)では、現在の文字列(1615)の第3のサンプル行(1613)が、参照文字列の画素(1623)に基づいて再構築される。一例では、メモリコピー操作を実行して、画素(1623)に対応するメモリ空間に格納されたサンプル値を、第3のサンプル行(1613)に対応するメモリ空間にコピーすることができる。
本開示の一態様によれば、非オーバーラップ制約は、適用することなく緩めることができる。いくつかの例では、文字列ベクトルの垂直成分と水平成分の少なくとも1つが負である場合、文字列ベクトルは、現在の文字列と参照文字列の部分的なオーバーラップを許容する要件を満たし、非オーバーラップ制約は適用されない。
水平走査順序を使用する一例では、文字列ベクトルSVの垂直成分svyが負(svy<0)の場合、参照文字列は現在の文字列の上方にある。次に、文字列ベクトルSVの水平成分svxの値に関係なく、現在の文字列と参照文字列との間のオーバーラップが許容されるため、オーバーラップ制約は適用されない。
ただし、文字列ベクトルSVの垂直成分svyが負でない場合(svy>=0)、参照文字列は現在の文字列と同じ行にあるか、現在の文字列の下方にある。次に、水平成分svxの値に関係なく、オーバーラップ制約を適用する必要がありので、現在の文字列とその参照文字列との間でオーバーラップが許容されなくなる。
上記の例では、参照文字列全体が許容参照領域内部にある必要があることに留意されたい。
一般に、参照メモリは、例えば、複数のページなどの複数の部分によって形成される。いくつかの例では、同じ部分(例えば、同じページ)のメモリ空間へのアクセスは、例えば、大きなオフセット値を計算することなく、容易に実行することができる。いくつかの例では、参照文字列のサンプルは、メモリ空間のページに対応する領域に制約される。
本開示の一態様によれば、参照文字列のサンプルは、2ページのメモリ空間に対応する2つの領域の境界を交差することを許容される。
図17は、領域境界を交差する参照文字列の一例を示す。図17の例では、ブロック(1700)は、CTUなどの128×128(サンプル)ブロックとすることができる。ブロック(1700)は、4つの64×64サブブロックA~Dに分割される。サブブロックA、B、およびCは再構築されており、再構築のための現在の文字列はサブブロックDにある。図17の例では、再構築される現在の文字列(1710)はサブブロックDにあり、参照文字列(1720)はサブブロックAとサブブロックCの境界を交差する。
図18は、領域境界を横切る参照文字列の別の一例を示す。図18の例では、ブロック(1800)は、CTUなどの128×128(サンプル)ブロックとすることができる。ブロック(1800)は、4つの64×64サブブロックA~Dに分割される。サブブロックA、B、およびCは再構築され、再構築のための現在の文字列がサブブロックDにある。図18の例では、再構築される現在の文字列(1810)はサブブロックDにあり、参照文字列(1820)はサブブロックAとサブブロックCの境界を交差する。
いくつかの例では、メモリの再利用のために、参照メモリは同じサイズの複数の領域に分割される。サブブロックのサンプルを格納するために、複数の領域を割り当てることができる。例えば、サブブロックDを再構築するときに、参照メモリの第1の領域は、サブブロックAの再構築されたサンプルを格納することができ、参照メモリの第2の領域は、サブブロックBの再構築されたサンプルを格納することができ、参照メモリの第3の領域は、サブブロックCの再構築されたサンプルを格納することができ、参照メモリの第4の領域は、サブブロックDの再構築されたサンプルを格納するために割り当てることができる。
いくつかの実施形態では、交差境界制約を使用することができる。一実施形態では、参照文字列全体が許容参照領域内部にある間、垂直交差境界制約が適用される。垂直交差境界制約では、現在の文字列の参照文字列が2つのサブブロックの境界を垂直に交差することは許容されないが、参照文字列が2つのサブブロックの境界を水平に交差することは許容される。例えば、参照文字列(1720)は許容され、参照文字列(1820)は許容されない。一例では、参照文字列の開始位置は(px0、py0)である。参照文字列内のサンプル(pxi、pyi)に対して、垂直交差境界制約では、(floor(py0/64))は、(floor(pyi/64))と等しい必要がある。
別の一実施形態では、参照文字列全体が許容参照領域内部にある間、水平方向の交差境界制約が適用される。水平交差境界制約では、現在の文字列の参照文字列が2つのサブブロックの境界を水平方向に交差することを許容しないが、参照文字列が2つのサブブロックの境界を垂直方向に交差することを許容する。例えば、参照文字列(1820)は許容され、参照文字列(1720)は許容されない。一例では、参照文字列の開始位置は(px0、py0)であり、参照文字列の任意のサンプル(pxi、pyi)に対して、水平交差境界制約では、(floor(px0/64))が(floor(pxi/64))と等しい必要がある。
本開示の一態様によれば、参照文字列を現在のCTU内にあるように限定する制約を緩めることができる。例えば、現在のCTUの上方のサンプル行は、参照文字列の参照サンプルとしても使用できる。
図19は、現在のCTUの上方のサンプルを含む参照文字列の一例を示す。図19の例では、現在のCTU(1901)は128×128(サンプル)ブロックである。現在のCTU(1901)は、4つの64×64サブブロックA~Dに分割されている。サブブロックA、B、およびCが再構築され、再構築のための現在の文字列がサブブロックDにある。図19の例では、再構築される現在の文字列(1910)はサブブロックDにあり、参照文字列(1920)は、現在のCTU(1901)の上方のサンプル行(1930)に少なくとも1つのサンプルを有する。現在のCTU(1901)の上方の参照文字列(1920)とサンプル行(1930)との間のオーバーラップは許容される。一例では、デコーダは、現在のCTU(1901)の上方のサンプル行(1930)などのサンプル行にサンプルを格納するための特定のバッファ(一例ではラインバッファと呼ばれる)を含み、特定のバッファは、文字列照合モード中にアクセスされ得る。したがって、参照文字列(1920)にサンプル行(1930)とオーバーラップするサンプルが含まれている場合、特定のバッファにアクセスして、オーバーラップしたサンプルをコピーし、現在の文字列(1910)を再構築できる。
図20は、本開示の一実施形態によるプロセス(2000)の概要を示すフローチャートを示している。プロセス(2000)は、符号化されたビデオシーケンスのピクチャにおけるブロックまたは文字列を再構築するために使用され得る。プロセス(2000)は、再構築中のブロックの予測ブロックを生成するために、ブロックの再構築に使用され得る。本開示におけるブロックという用語は、予測ブロック、CB、CUなどとして解釈され得る。様々な実施形態では、プロセス(2000)は、端末デバイス(310)、(320)、(330)、および(340)の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(2000)はソフトウェア命令内に実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(2000)を実行する。プロセスは(S2001)から始まり、(S2010)に進む。
(S2010)で、CTU内の現在の文字列に対する(潜在的な)文字列ベクトルが決定される。(潜在的な)文字列ベクトルは、現在の文字列の参照文字列を指す。
(S2020)で、(潜在的な)文字列ベクトルは、現在の文字列と参照文字列の部分的なオーバーラップを許容するための要件を満たすように決定される。
いくつかの例では、(潜在的な)文字列ベクトルの垂直成分および水平成分の少なくとも1つが負であることに応答して、(潜在的な)文字列ベクトルは、現在の文字列と参照文字列の部分的なオーバーラップを許容するための要件を満たすように決定される。
一例では、現在の文字列と参照文字列の部分的なオーバーラップを許容するための要件を満たすことに応答して、オーバーラップ制約をスキップすることができる。別の一例では、現在の文字列と参照文字列の部分的なオーバーラップを許容するための要件を満たさないことに応答して、オーバーラップ制約が(潜在的な)文字列ベクトルに適用される。
(S2030)では、現在の文字列が参照文字列に基づいて再構築される。
いくつかの例では、現在の文字列は部分によって再構築される。例えば、現在の文字列の第1の部分は、現在の文字列の第2の部分の再構築の前に再構築される。次に、現在の文字列の第1の部分に基づいて、現在の文字列の第2の部分を再構築できる。
一例では、文字列の水平走査順序が使用される。次に、文字列ベクトルの垂直成分が負であることに応答して、現在の文字列が行ごとに再構築される。例えば、現在の文字列の第1のサンプル行が再構築され、次に現在の文字列の第2のサンプル行が現在の文字列の第1のサンプル行に基づいて再構築される。
別の一例では、文字列の垂直走査順序が使用される。次に、文字列ベクトルの水平成分が負であることに応答して、現在の文字列が列ごとに再構築される。例えば、現在の文字列の第1のサンプル列が再構築され、現在の文字列の第2のサンプル列が現在の文字列の第1のサンプル列に基づいて再構築される。
いくつかの実施形態では、参照文字列は、現在のCTUの上方のサンプル行とオーバーラップし、次に、サンプル行にサンプルを格納するバッファにアクセスして、現在の文字列を再構築することができる。
次いで、プロセスは(S2099)に進み、終了する。
プロセス(2000)は適切に適合させることができる。プロセス(2000)のステップは、修正および/または省略することができる。さらなるステップを追加することができる。任意の適切な実施順序を使用することができる。例えば、現在のベクトル情報が一意であると判定された場合、前述したように、現在のベクトル情報を履歴バッファに格納することができる。いくつかの例では、プルーニングプロセスが使用され、現在のベクトル情報が履歴バッファに格納されるときに履歴バッファ内のベクトル情報の1つが削除される。
上記で説明された技術は、1つ以上のコンピュータ可読媒体に物理的に記憶された、コンピュータ可読命令を使用するコンピュータソフトウェアとして実施され得る。例えば、図21は、開示されている主題の特定の実施形態を実施するのに適したコンピュータシステム(2100)を示す。
コンピュータソフトウェアは、1つ以上のコンピュータ中央処理装置(CPU:central processing unit)およびグラフィック処理装置(GPU:Graphics Processing Unit)などによって直接的に、または解釈およびマイクロコードの実行などを通して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンキング、または同様のメカニズムを受け得る任意の適切な機械コードまたはコンピュータ言語を使用して符号化され得る。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、およびモノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で実行され得る。
コンピュータシステム(2100)に関して図21に示されている構成要素は、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図されていない。また、構成要素の構成は、コンピュータシステム(2100)の例示的な実施形態に示される構成要素のいずれか1つまたは組み合わせに関連する依存性または要件を有すると解釈されるべきではない。
コンピュータシステム(2100)は、特定のヒューマンインタフェース入力デバイスを含み得る。そのようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した、1人または複数の人間のユーザによる入力に応答し得る。ヒューマンインタフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用され得る。
入力ヒューマンインタフェースデバイスは、キーボード(2101)、マウス(2102)、トラックパッド(2103)、タッチスクリーン(2110)、データグローブ(図示せず)、ジョイスティック(2105)、マイクロフォン(2106)、スキャナ(2107)、カメラ(2108)のうちの1つまたは複数(各々のうちのただ1つ)を含んでもよい。
コンピュータシステム(2100)はまた、特定のヒューマンインタフェース出力デバイスを含み得る。そのようなヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激し得る。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2110)、データグローブ(図示せず)、またはジョイスティック(2105)による触覚フィードバックが含まれることがあるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ(2109)、ヘッドホン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2110)などであり、それぞれにタッチスクリーン入力機能が有っても無くてもよく、それぞれに触覚フィードバック機能が有っても無くてもよく、それらの一部は、ステレオグラフィック出力、仮想現実ガラス(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段を通じて2次元視覚出力または3次元以上の出力が可能であり得る)およびプリンタ(図示せず)を含み得る。
コンピュータシステム(2100)はまた、CD/DVDなどの媒体(2121)を有するCD/DVD ROM/RW(2120)を含む光学媒体、サムドライブ(2122)、リムーバブルハードドライブまたはソリッドステートドライブ(2123)、テープおよびフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)など、人間がアクセス可能な記憶デバイスおよびそれらの関連媒体を含むことができる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が伝送媒体、搬送波、または他の一時的信号を包含しないことを理解すべきである。
コンピュータシステム(2100)はまた、1つまたは複数の通信ネットワーク(2155)へのインタフェース(2154)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などであり得る。ネットワークの例には、Ethernetなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルテレビ、衛星テレビおよび地上波テレビを含むテレビの有線または無線広域デジタルネットワーク、CANBusを含む車両用および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(2149)に取り付けられた外部ネットワークインタフェースアダプタ(例えば、コンピュータシステム(2100)のUSBポートなど)を必要とし、他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインタフェースまたはスマートフォンコンピュータシステムへのセルラネットワークインタフェース)によってコンピュータシステム(2100)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(2100)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して、単方向で受信のみ(例えば、放送TV)、単方向で送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上記で説明されたように、それらのネットワークおよびネットワークインタフェースの各々で使用され得る。
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインタフェースを、コンピュータシステム(2100)のコア(2140)に取り付けることができる。
コア(2140)は、1つまたは複数の中央処理装置(CPU)(2141)、グラフィック処理装置(GPU)(2142)、フィールドプログラマブルゲートエリア(FPGA)(2143)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(2144)、グラフィックスアダプタ(2150)などを含むことができる。これらのデバイスは、読み取り専用メモリ(ROM)(2145)、ランダムアクセスメモリ(2146)、ユーザがアクセスすることができない内部ハードドライブ、SSDなどの内部大容量ストレージ(2147)と共に、システムバス(2148)を介して接続されてもよい。一部のコンピュータシステムでは、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形式でシステムバス(2148)にアクセスすることができる。周辺デバイスを、コアのシステムバス(2148)に直接取り付けることも、周辺バス(2149)を介して取り付けることもできる。一例では、スクリーン(2110)をグラフィックスアダプタ(2150)に接続することができる。周辺バスのアーキテクチャは、PCIおよびUSBなどを含む。
CPU(2141)、GPU(2142)、FPGA(2143)、およびアクセラレータ(2144)は、組み合わせて前述のコンピュータコードを構成できる特定の命令を実行できる。そのコンピュータコードは、ROM(2145)またはRAM(2146)に格納され得る。移行データはまた、RAM(2146)に格納され得、一方、永続データは、例えば内部大容量ストレージ(2147)に格納され得る。メモリデバイスのいずれかへの高速記憶および取得は、1つまたは複数のCPU(2141)、GPU(2142)、大容量ストレージ(2147)、ROM(2145)、RAM(2146)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実施動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであり得るし、またはそれらは、コンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであり得る。
一例として、限定するものではないが、アーキテクチャ(2100)、具体的にはコア(2140)を有するコンピュータシステムは、1つまたは複数の有形のコンピュータ可読媒体に組み込まれたソフトウェアを実行するプロセッサ(複数可)(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(2147)またはROM(2145)などの非一時的な性質のコア(2140)の特定のストレージに関連付けられた媒体とすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに格納され、コア(2140)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(2140)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、本明細書に記載の特定プロセスまたは特定プロセスの特定部分を実行させることができ、プロセスには、RAM(2146)に格納されたデータ構造を定義すること、および、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することが含まれる。加えて、または代替として、コンピュータシステムは、ハードワイヤードまたは他の方法で回路(例えば、アクセラレータ(2144))に具現化された論理の結果として、機能を提供することができ、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載の特定プロセスまたは特定プロセスの特定部分を実行することができる。ソフトウェアへの参照は、論理を包含することができ、適切な場合には逆もまた同様である。適切な場合には、コンピュータ可読媒体への言及は、実行のためのソフトウェアを記憶する回路(集積回路(IC:integrated circuit)など)、実行のための論理を具現化する回路、またはこれらの両方を包含し得る。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記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:Position Dependent Prediction Combination
ISP:イントラサブパーティション
SPS:シーケンスパラメータ設定
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内にある修正例、置換例、および様々な代替均等例がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。