図3は、本開示の一実施形態に係る通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の対の端末装置(310)及び(320)を含む。図3の例では、第1の対の端末装置(310)及び(320)は、データの単方向送信を実行する。例えば、端末装置(310)は、ネットワーク(350)を介して他方の端末装置(320)へ送信するためにビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオピクチャのストリーム)をコード化し得る。エンコードされたビデオデータは、1つ以上のコード化されたビデオビットストリームの形態で送信することができる。端末装置(320)は、ネットワーク(350)からコード化ビデオデータを受信し、コード化ビデオデータをデコードしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。一方向のデータ送信は、媒体供給用途などで一般的である可能性がある。
別の例では、通信システム(300)は、例えば、ビデオ会議中に発生し得るコード化ビデオデータの双方向送信を実行する第2の対の端末装置(330)及び(340)を含む。データの双方向送信の場合、一例では、端末装置(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、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
ストリーミングシステムは、例えば非圧縮のビデオピクチャ(402)のストリームを作成するデジタルカメラなどのビデオソース(401)を含み得るキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャ(402)のストリームは、デジタルカメラによって取得されたサンプルを含む。エンコードされたビデオデータ(404)(又はコード化されたビデオビットストリーム)と比較して高データ量を強調するために太線で示されたビデオピクチャ(402)のストリームは、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように、開示する主題の態様を可能にするか或いは実施するためのハードウェア、ソフトウェア、又はそれらの組み合わせを含み得る。ビデオピクチャ(402)のストリームと比較してより低いデータ量を強調するために細い線で示された、エンコードされたビデオデータ(404)(又はエンコードされたビデオビットストリーム(404))は、将来の使用のためにストリーミングサーバ(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)から受信することができる。受信機(531)は、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、コード化オーディオデータ及び/又は補助データストリームとともに、エンコードされたビデオデータを受信し得る。受信機(531)は、コード化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)の間に結合されてもよい。特定のアプリケーションでは、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合、バッファメモリ(515)は、ビデオデコーダ(510)(図示せず)の外部に存在し得る。さらに他の場合、例えば、ネットワークジッタを防止するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在し、さらに、例えば、再生タイミングを取り扱うためにビデオデコーダ(510)の内部に別のバッファメモリ(515)が存在し得る。受信機(531)が十分な帯域幅及び可制御性を有する記憶/転送装置から、又は等同期ネットワークからデータを受信する際に、バッファメモリ(515)は必要とされないことがあり、又は小さくされることがある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要になる場合があり、バッファメモリ(515)は、比較的大きいことがあり、有利には適応サイズであることができ、ビデオデコーダ(510)の外部のオペレーティングシステム又は類似の要素(図示せず)に少なくとも部分的に実施され得る。
ビデオデコーダ(510)は、コード化ビデオシーケンスからシンボル(521)を再構築するパーサ(520)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含んで、及び、電子デバイス(530)の不可欠な部分ではないが、図5に示されるように電子デバイス(530)に結合され得るレンダリングデバイス(512)(例えば、表示画面)のようなレンダリングデバイスを制御する情報を潜在的に含む。レンダリングデバイスのための制御情報は、補助強化情報(SEIメッセージ)又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってよい。パーサ(520)は、受信されたコード化ビデオシーケンスを構文解析/エントロピーデコードすることができる。コード化ビデオシーケンスのコーディングは、ビデオコーディング技術又は規格に合わせることができ、可変長コーディング、ハフマンコーディング、文脈感受性を有するもしくは有さない算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コード化ビデオシーケンスからビデオデコーダ内の画素の少なくとも1つのサブグループのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含み得る。パーサ(520)は、コード化ビデオシーケンスから変換係数、量子化パラメータ値、動きベクトルなどのような情報をも抽出することができる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピーデコード/構文解析動作を実行することができる。
シンボル(521)の再構築は、コード化されたビデオピクチャ又はその一部(例えば、インター及びイントラピクチャ、インター及びイントラブロック)のタイプ及び他の要因に応じて、複数の異なるユニットに関与することができる。どのユニットが、どのように関与するかは、パーサ(520)によってコード化ビデオシーケンスから構文解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
すでに述べた機能ブロックに加え、ビデオデコーダ(510)は、以下で説明されるようにいくつかの機能ユニットに概念的に細分化することができる。商業的制約で動作する実際の実装では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示する主題を説明する目的のために、以下の機能ユニットへの概念的な細分化は適切である。
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報と、量子化された変換係数をシンボル(521)としてパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力可能なサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングブロック、すなわち、予め再構築されたピクチャからの予測情報を使用していないが、現在ピクチャの予め再構築された部分からの予測情報を使用できるブロックに関係することがある。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在ピクチャバッファ(558)から取り出された周囲の既に再構築された情報を用いて、再構築中のブロックと同じサイズ及び形状のブロックを生成する。現在ピクチャバッファ(558)は、例えば、部分的に再構築された現在ピクチャ及び/又は完全に再構築された現在ピクチャをバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコード化された、潜在的に動き補償されたブロックに関係することがある。このような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(521)に従って動き補償した後、出力サンプル情報を生成するように、これらのサンプルは、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加することができる(この場合、残差サンプル又は残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルを取り出す参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y及び参照ピクチャ成分を有し得るシンボル(521)の形態で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償は、サブサンプルの正確な動きベクトルが使用中であるときに参照ピクチャメモリ(557)から取り出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法によって採用されてもよい。ビデオ圧縮技術は、コード化ビデオシーケンス(コード化されたビデオビットストリームとも呼ばれる)に含まれる、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能とされたパラメータによって制御することができ、それに、コード化ピクチャ又はコード化ビデオシーケンスの(デコード順で)前の部分のデコード中に取得されたメタ情報に応じるとともに、予め再構築されループフィルタリングされたサンプル値に応じることもできるループ内フィルタ技術を含み得る。
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)へ出力することができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することができるサンプルストリームであり得る。
特定のコード化ピクチャは、完全に再構築されると、将来の予測のために参照ピクチャとして使用することができる。例えば、現在ピクチャに対応するコード化ピクチャが完全に再構築され、当該コード化ピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在ピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコード化ピクチャの再構築を開始する前に新しい現在ピクチャバッファを再割当てすることができる。
ビデオデコーダ(510)は、ITU-T推奨のH.265のような規格での所定のビデオ圧縮技術に従ってデコード動作を実行することができる。コード化ビデオシーケンスが、ビデオ圧縮技術又は規格の構文と、ビデオ圧縮技術又は規格で文書化されたプロファイルとの両方に準拠しているという意味で、コード化ビデオシーケンスは、使用されているビデオ圧縮技術又は規格によって指定される構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術又は規格で使用可能なすべてのツールから、特定のツールをそのプロファイルで使用できるツールとして選択することができる。コード化ビデオシーケンスの複雑さがビデオ圧縮技術又は規格のレベルで限定される範囲内にあることも、コンプライアンスに対して必要である。場合によっては、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどがレベルによって制限される。レベルによって設定された制限は、いくつかの場合では、仮想参照デコーダ(HRD)の仕様及びコード化ビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコードされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コード化ビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードし、及び/又は、元のビデオデータをより正確に再構築するためにビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的又は信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態であり得る。
図6は、本開示の実施形態に係るビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(603)を使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコード化すべきビデオ画像をキャプチャし得るビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は、電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコード化すべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビットなど)、任意の色空間(例えば、BT.601YCrCB、RGBなど)及び任意の適切なサンプリング構造(例えば、YCrCb4:2:0、YCrCb4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供し得る。メディア供給システムでは、ビデオソース(601)は、予め準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見られるときに動きが与えられる複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて1つ以上のサンプルを含み得る。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明ではサンプルを中心に説明する。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで又はアプリケーションが要求する任意の他の時間制約の下でソースビデオシーケンスのピクチャをコード化し、コード化ビデオシーケンス(643)に圧縮することができる。適切なコーディング速度を実施することは、コントローラ(650)の機能の1つである。一部の実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明瞭にするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技法のラムダ値、・・・)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル検索範囲などを含み得る。コントローラ(650)は、特定のシステム設計に対して最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成することができる。
一部の実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コード化すべき入力ピクチャ及び参照ピクチャに基づくシンボルストリームなどのシンボルの作成を担当する)、及びビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)を含み得る。デコーダ(633)は、シンボルを再構築して、(リモート)デコーダが作成するのと同様な方法でサンプルデータを作成する(シンボルとコード化されたビデオビットストリーム間の如何なる圧縮も、開示する主題で考慮されるビデオ圧縮技術では可逆であるためである)。再構築されたサンプルストリーム(サンプルデータ)は参照ピクチャメモリ(634)に入力される。シンボルストリームのデコードにより、デコーダの位置(ローカル又はリモート)に関係なくビット正確な結果が得られるため、参照ピクチャメモリ(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)は、適切な予測基準を見つけるために、サンプルブロック/画素ブロックごとに動作することができる。場合によっては、予測器(635)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピーコーディングできる。エントロピーコーダ(645)は、例えば、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコード化ビデオシーケンスに変換する。
送信機(640)は、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を介した送信の準備のために、エントロピーコーダ(645)によって作成されたコード化ビデオシーケンスをバッファリングすることができる。送信機(640)は、ビデオコーダ(603)からのコード化ビデオデータを、送信されるべき他のデータ、例えば、コード化オーディオデータ及び/又は補助データストリーム(ソースは示されていない)とマージすることができる。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディング中、コントローラ(650)は、各コード化ピクチャに特定のコード化ピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼし得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のいかなるピクチャも使用せずにコード化及びデコードされ得るものであり得る。一部のビデオコーデックは、例えば、インディペンデントデコーダリフレッシュ(IndependentDecoderRefresh、「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャの変形及びそれらのそれぞれの用途及び特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測によりコード化及びデコードされ得るものであり得るものであってもよい。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測によりコード化及びデコードされ得るものであってもよい。同様に、多重予測ピクチャは、単数のブロックの再構築のために3つ以上の参照ピクチャ及び関連メタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ、4×4、8×8、4×8、又は16×16サンプルのブロック)に空間的に細分化され、ブロックごとにコード化され得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコード化割り当てによって決定された他の(既にコード化された)ブロックを参照して予測的にコード化され得る。例えば、Iピクチャのブロックは、非予測的にコード化されてもよく、或いは、同一のピクチャの既にコード化されたブロック(空間予測又はイントラ予測)を参照して予測的にコード化されてもよい。Pピクチャの画素ブロックは、1つの予めコード化された参照ピクチャを参照して、空間予測を介して又は時間予測を介して予測的にコード化され得る。Bピクチャのブロックは、1つ又は2つの予めコード化された参照ピクチャを参照して、空間予測を介して又は時間予測を介して予測的にコード化され得る。
ビデオエンコーダ(603)は、ITU-T推奨のH.265などの予め設定されたビデオコーディング技術又は規格に従って、コーディング動作を実行することができる。動作中、ビデオエンコーダ(603)は、入力ビデオシーケンスの時間的及び空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行することができる。したがって、コード化ビデオデータは、使用されるビデオコーディング技術又は規格によって指定された構文に従う場合がある。
一実施形態では、送信機(640)は、エンコードされたビデオとともに追加のデータを送信してもよい。ソースコーダ(630)は、このようなデータをコード化ビデオシーケンスの一部として含み得る。追加のデータは、時間的/空間的/SNRエンハンスメントレイヤ、冗長なピクチャやスライスなどの他の形態での冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(「イントラ予測」と略されることが多い)は、所定のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を利用する。一例では、現在ピクチャと呼ばれるエンコード/デコード中の特定のピクチャは、ブロックに分割される。現在ピクチャにおけるブロックが、ビデオにおける予めコード化され、まだバッファリングされている参照ピクチャの参照ブロックに類似している場合、現在ピクチャにおけるブロックは、動きベクトルと呼ばれるベクトルによってコード化することができる。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3次元を有することができる。
一部の実施形態では、インターピクチャ予測において双予測技法を使用することができる。双予測技法によれば、ビデオにおける現在ピクチャよりデコード順序がそれぞれ前である(ただし、表示順序でそれぞれ過去及び未来にあり得る)第1の参照ピクチャ及び第2の参照ピクチャのような2つの参照ピクチャを使用する。現在ピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、及び第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによってコード化することができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測することができる。
さらに、マージモード技法をインターピクチャ予測に適用して、コーディング効率を向上させることができる。
本開示の一部の実施形態によれば、インターピクチャ予測及びイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、一連のビデオピクチャ内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、又は16×16画素など、同一のサイズを有する。一般に、CTUは、1つの輝度(luma)CTBと2つの彩度(chroma)CTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つ以上のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64画素のCTUは、1つの64×64画素のCU、4つの32×32画素のCU、又は16個の16×16画素のCUに分割することができる。一例では、各CUを解析して、インター予測タイプ又はイントラ予測タイプなど、CUの予測タイプを決定する。CUは、時間的及び/又は空間的予測可能性に応じて、1つ以上の予測ユニット(PU)に分割される。通常、各PUは、1つの輝度予測ブロック(PB)と2つの彩度PBを含む。一実施形態では、コード化(エンコード/デコード)における予測動作は、予測ブロックの単位で実行される。輝度予測ブロックを予測ブロックの例として用いて、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、輝度値)の行列を含む。
図7は、本開示の別の実施形態に係るビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、一連のビデオピクチャ内の現在ビデオピクチャにおけるサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コード化ビデオシーケンスの一部であるコード化ピクチャにエンコードするように構成される。一例では、図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(703)を使用する。
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)は、コード化ビデオシーケンスの一部であるコード化ピクチャを受信し、コード化ピクチャをデコードして、再構築ピクチャを生成するように構成される。一例では、図4の例におけるビデオデコーダ(410)の代わりにビデオデコーダ(810)を使用する。
図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は、参照ブロックが利用可能で、既に再構築されていることを確認するためのいくつかの制約を有する。また、一部の例では、並列処理を考慮して、タイル境界、スライス境界及び/又は波面ラダー形状境界などのいくつかの参照領域が除外される。
ブロックベクトルのコーディングは、明示的であっても暗黙的であってもよい。明示的モードでは、ブロックベクトルとその予測子との間のBV差がシグナリングされる。暗黙的モードでは、ブロックベクトルは、マージモードでの動きベクトルと同様に、BV差を使用せずに予測子(ブロックベクトル予測子と呼ばれる)から復元される。明示的モードは、非マージBV予測モードと呼ばれてもよい。暗黙的モードは、マージBV予測モードと呼ばれてもよい。
一部の実施形態では、ブロックベクトルの解像度は、整数位置に制限される。他のシステムでは、ブロックベクトルは、分数位置へ指すことが許容される。
一部の例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグなどのブロックレベルのフラグを使用してシグナリングすることができる。一実施形態では、ブロックレベルのフラグを、現在ブロックが明示的にコード化されるときにシグナリングする。一部の例では、ブロックレベルでのイントラブロックコピーの使用は、参照インデックス手法を使用してシグナリングすることができる。コーディング中の現在ピクチャは、その後、参照ピクチャ又は特別参照ピクチャとして扱われる。一例では、そのような参照ピクチャは、参照ピクチャのリストの最後の位置に配置される。特別参照ピクチャは、デコードピクチャバッファ(DPB)などのバッファで、他の時間参照ピクチャと共に管理される。
IBCモードには変形があり得る。一例では、IBCモードは、イントラ予測モード及びインター予測モードとは異なる第3のモードとして扱われる。したがって、暗黙的モード(又はマージモード)及び明示的モードでのBV予測は、通常のインターモードから分離される。個別のマージ候補リストにおけるエントリがBVであるIBCモードに対して個別のマージ候補リストを定義することができる。同様に、一例では、IBC明示的モードにおけるBV予測候補リストは、BVのみを含む。2つのリストに適用される一般的なルール(即ち、個別のマージ候補リスト及びBV予測候補リスト)として、2つのリストは、候補導出プロセスに関して、通常のマージモードで使用されるマージ候補リスト又は通常のAMVPモードで使用されるAMVP予測子リストと同じ論理に従ってもよい。例えば、5つの空間的に隣接する場所(例えば、図2におけるA0、A1、B0、B1及びB2)である。例えば、IBCモードについて、HEVC又はVVCインターマージモードにアクセスして、IBCモードの個別のマージ候補リストを導出する。
上述したように、ピクチャにおける再構築中の現在ブロックのBVは、特定の制約を有し得るため、現在ブロックの参照ブロックは、検索範囲内にある。検索範囲とは、参照ブロックを選択できるピクチャの一部を指す。例えば、検索範囲は、ピクチャにおける再構築された領域の特定の部分内にあってもよい。検索範囲のサイズ、位置、形状等を制約することができる。或いは、BVを制約することができる。一例では、BVは、x及びy成分を含む2次元ベクトルであり、x及びy成分の少なくとも1つを制約することができる。制約は、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内にあるように制約される。
一実施形態では、イントラブロックコピーで使用されるべき参照サンプルを記憶するための有効なメモリ要求は、1つのCTBサイズである。一例では、CTBサイズは、128×128サンプルである。現在CTBは、再構築中の現在領域を含む。現在領域は、64×64サンプルのサイズを有する。参照メモリは、現在領域に再構築されたサンプルも記憶できるため、参照メモリのサイズが128×128サンプルのCTBサイズに等しい場合、更なる3つの64×64サンプルの領域を記憶することができる。したがって、検索範囲は、予め再構築されたCTBの特定の部分を含み得るが、参照サンプルを記憶するための合計メモリ要求が変更されない(例えば、1つのCTBサイズの128×128サンプル又は合計4つの64×64参照サンプル)。一例では、予め再構築されたCTBは、図10に示されるように、現在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)は、再構築中であり、コーディングブロック(1027)~(1029)及び領域(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(1015)の位置から1つ又は複数のCTB幅だけオフセットされる予め再構築されたCTB内にあるため、同位置領域の位置も、現在領域(1016)の位置から対応する1つ又は複数のCTB幅だけオフセットされる。同位置領域の位置は、現在領域(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)にあり得る。
図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)のそれぞれは、64x64サンプルである。参照メモリのサイズは、CTBサイズに等しく、128×128サンプルであるため、検索範囲は、参照メモリのサイズによって制限される場合、3つの領域と、追加の領域の一部とを含む。
同様に、図10を参照して説明されたように、現在領域(1116)は、同位置領域(即ち、予め再構築されたCTB(1110)における領域(1111))を有する。現在ブロック(1121)の参照ブロックが領域(1111)内にあり得るため、検索範囲は、領域(1111)~(1114)を含み得る。例えば、参照ブロックが領域(1111)内にある場合、参照ブロックの同位置領域は、領域(1116)であり、現在ブロック(1121)の再構築前に、領域(1116)で再構築されたサンプルがない。しかしながら、図10を参照して説明されたように、コーディングブロック(1121)の再構築後、領域(1111)は、コーディングブロック(1122)を再構築するための検索範囲に含めることができなくなる。したがって、参照メモリバッファの厳密な同期及びタイミング制御が使用され、困難な場合がある。
一部の実施形態によれば、現在ブロックが現在CTBの現在領域で最初に再構築される場合、検索範囲は、予め再構築されたCTB内にある現在領域の同位置領域を除外することができ、現在CTBと予め再構築されたCTBは同じ現在ピクチャ内にある。参照ブロックが、予め再構築されたCTB内の同位置領域を除外する検索範囲内にあるようにブロックベクトルを決定することができる。一実施形態では、検索範囲は、デコード順序で、同位置領域の後かつ現在ブロックの前に再構築されるコーディングブロックを含む。
以下の説明では、CTBサイズは、変化することができ、最大CTBサイズは、参照メモリのサイズと同一になるように設定される。一例では、参照メモリのサイズ又は最大CTBサイズは、128×128サンプルである。説明は、他の参照メモリのサイズ又は最大CTBサイズに適切に適合することができる。
一実施形態では、CTBサイズは、参照メモリのサイズに等しい。予め再構築されたCTBは、現在CTBの左隣であり、同位置領域の位置は、現在領域の位置からCTB幅だけオフセットされ、検索範囲内のコーディングブロックは、現在CTBと予め再構築されたCTBとの少なくとも1つにある。
図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)とを含む。参照メモリのサイズ(つまり、1つのCTBサイズ)の制約のため、検索範囲は、領域(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が最後であり得る。
一部の実施形態では、現在ブロック(例えば、コーディングブロック(CB)又は現在CU)用の予めコード化されたブロックの動き情報を履歴ベース動きベクトル予測(HMVP)バッファ(例えば、テーブル)に記憶して、現在ブロック用の動きベクトル予測(MVP)候補(HMVP候補とも呼ばれる)を提供することができる。HMVPバッファは、1つ以上のHMVP候補を含んでもよく、エンコード/デコードプロセス中に維持することができる。一例では、HMVPバッファにおけるHMVP候補は、予めコード化されたブロックの動き情報に対応する。HMVPバッファは、任意の適切なエンコーダ及び/又はデコーダで使用することができる。HMVP候補は、空間MVP及びTMVPの後にマージ候補リストに追加することができる。
HMVPバッファは、新しいCTU(又は新しいCTB)行が検出されるときに、リセットする(例えば、空にする)ことができる。サブブロックなしのインターコード化されたブロックが存在する場合、関連付けられた動き情報は、新しいHMVP候補としてHMVPバッファの最後のエントリに追加することができる。
一例では、例えば、VTM3において、HMVPバッファのバッファサイズ(Sで示される)は、6に設定され、最大6つのHMVP候補がHMVPバッファに追加できることを示す。一部の実施形態では、HMVPバッファは、例えば、HMVPバッファがいっぱいになるとき、HMVPバッファに最初に記憶された動き情報(又はHMVP候補)が最初にHMVPバッファから削除されるように、先入れ先出し(FIFO)ルールで動作してもよい。新しいHMVP候補をHMVPバッファに挿入する場合、冗長検査を最初に適用して、同一又は類似のHMVP候補がHMVPバッファにあるか否かを判断する制約付きFIFOルールを利用することができる。同一又は類似の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バッファは、例えば、HBVPバッファがいっぱいになるとき、HBVPバッファに最初に記憶されたBV情報(又はHBVP候補)が最初にHBVPバッファから削除されるように、FIFOルールで動作してもよい。新しいHBVP候補をHBVPバッファに挿入する場合、冗長検査を最初に適用して、同一又は類似のHBVP候補がHBVPバッファにあるか否かを判断する制約付きFIFOルールを利用することができる。同一又は類似のHBVP候補がHBVPバッファにあると判断される場合、同一又は類似のHBVP候補をHBVPバッファから削除し、残りのHBVP候補をHBVPバッファにおいて前に進めることができる。
HBVP候補は、マージ候補リスト構築プロセス、例えば、マージBV予測モードで使用することができる。HBVPバッファに最後に記憶されたHBVP候補を、順番に検査し、空間候補の後にマージ候補リストに挿入することができる。冗長検査は、マージ候補リストにある空間マージ候補に関してHBVP候補に適用することができる。
一実施形態では、HBVPバッファは、IBCモードでコード化された1つ以上の予めコード化されたブロックの1つ以上のBV情報を記憶するために確立される。1つ以上のBV情報は、IBCモードでコード化された1つ以上の予めコード化されたブロックの1つ以上のBVを含み得る。さらに、1つ以上のBV情報のそれぞれは、IBCモードでコード化されたそれぞれの予めコード化されたブロックのブロックサイズ、ブロック場所などのサイド情報(又は追加情報)を含み得る。
クラスベースの履歴ベースブロックベクトル予測(CBVPとも呼ばれる)では、現在ブロックについて、特定の条件を満たす、HBVPバッファ内の1つ以上のBV情報を、対応するカテゴリ(クラスとも呼ばれる)に分類して、CBVPバッファを形成することができる。一例では、HBVPバッファ内の各BV情報は、例えば、IBCモードでコード化された、それぞれの予めコード化されたブロックに関するものである。予めコード化されたブロックの1つのBV情報は、BV、ブロックサイズ、ブロック位置などを含み得る。予めコード化されたブロックは、ブロック幅、ブロック高さ及びブロック面積を有する。ブロック面積は、ブロック幅とブロック高さとの乗算であり得る。一例では、ブロックサイズは、ブロック面積で表される。予めコード化されたブロックのブロック位置は、予めコード化されたブロックの左上隅(例えば、4×4領域の左上隅)又は左上サンプルで表すことができる。
図13は、本開示の一実施形態に係る現在ブロック(例えば、CB、CU)(1310)のIBC BV予測のための空間クラスの一例を示す。現在ブロック(1310)の左側に左側領域(1302)が位置し得る。左側領域(1302)にそれぞれのブロック位置を有する予めコード化されたブロックのBV情報は、左側候補又は左側BV候補と呼ぶことができる。現在ブロック(1310)の上に上部領域(1303)が位置し得る。上部領域(1303)にそれぞれのブロック位置を有する予めコード化されたブロックのBV情報は、上部候補又は上部BV候補と呼ぶことができる。現在ブロック(1310)の左上に左上領域(1304)が位置し得る。左上領域(1304)にそれぞれのブロック位置を有する予めコード化されたブロックのBV情報は、左上候補又は左上BV候補と呼ぶことができる。現在ブロック(1310)の右上に右上領域(1305)が位置し得る。右上領域(1305)にそれぞれのブロック位置を有する予めコード化されたブロックのBV情報は、右上候補又は右上BV候補と呼ぶことができる。現在ブロック(1310)の左下に左下領域(1306)が位置し得る。左下領域(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を予測することができる。
図14は、本開示の一実施形態に係る文字列コピーモードの一例を示す。文字列コピーモードは、文字列照合モード、イントラ文字列コピーモード又は文字列予測とも呼ぶことができる。現在ピクチャ(1410)は、再構築された領域(灰色の領域)(1420)と、再構築中の領域(1421)とを含む。領域(1421)における現在ブロック(1435)は、再構築中である。現在ブロック(1435)は、CB、CUなどであり得る。現在ブロック(1435)は、複数の文字列(例えば、文字列(1430)及び(1431))を含み得る。一例では、現在ブロック(1435)は、1つの文字列の後にスキャン順序に沿って次の文字列が続く、複数の連続する文字列に分割される。スキャン順序は、ラスタースキャン順序、トラバーススキャン順序又は他の事前定義されたスキャン順序など、任意の適切なスキャン順序であり得る。
再構築された領域(1420)は、文字列(1430)及び(1431)を再構築するために参照領域として使用することができる。
複数の文字列のそれぞれについて、文字列オフセットベクトル(SVと呼ばれる)及び/又は文字列の長さ(文字列長と呼ばれる)をシグナリングするか又は推測することができる。SV(例えば、SV0)は、再構築されるべき文字列(例えば、文字列(1430))と、既に再構築された参照領域(1420)に位置するそれぞれの参照文字列(例えば、参照文字列(1400))との間の変位を示す、変位ベクトルであり得る。参照文字列を使用して、再構築されるべき文字列を再構築することができる。したがって、SVは、対応する参照文字列が参照領域(1420)のどこに位置するかを示すことができる。文字列長も、参照文字列の長さに対応することができる。図14を参照して、現在ブロック(1435)は、64サンプルを含む8x8 CBであり、ラスタースキャン順序を使用して2つの文字列(例えば、文字列(1430)及び(1431))に分割される。文字列(1430)は、現在ブロック(1435)の最初の29サンプルを含み、文字列(1431)は、現在ブロック(1435)の残りの35サンプルを含む。文字列(1430)を再構築するために使用される参照文字列(1400)は、対応する文字列ベクトルSV0によって示すことができ、文字列(1431)を再構築するために使用される参照文字列(1401)は、対応する文字列ベクトルSV1によって示すことができる。
一般的に、文字列サイズ(文字列長とも呼ばれる)は、文字列の長さ又は文字列内のサンプルの数を指すことができる。図14を参照して、文字列(1430)は、29サンプルを含むため、文字列(1430)の文字列サイズ又は文字列長は29である。文字列(1431)は、35サンプルを含むため、文字列(1431)の文字列サイズ又は文字列長は35である。文字列の場所(又は文字列の位置)は、文字列内のサンプル(例えば、デコード順序での第1のサンプル)のサンプル位置で表すことができる。
上記説明は、任意の適切な数の文字列を含む現在ブロックを再構築するために適切に適合することができる。或いは、一例では、現在ブロック内のサンプルが参照領域で一致するサンプルがない場合、エスケープサンプル(又はエスケープピクセル)がシグナリングされ、参照領域で再構築されたサンプルを参照せずに、エスケープサンプルの値を直接コード化することができる。一例では、ブロックは、複数の文字列と、1つ以上のエスケープサンプルとを含み、複数の文字列は、文字列コピーモードを使用して再構築され、1つ以上のエスケープサンプルは、直接的にコード化され、文字列コピーモードを使用して予測されない。1つ以上のエスケープサンプルは、ブロック内の任意の適切な位置に配置することができる。一例では、ブロック内の1つ以上のエスケープサンプルは、複数の文字列の外側に配置される。
一例では、ブロック内の文字列は、文字列内に配置された1つ以上のエスケープサンプルを含む。したがって、文字列内の1つ以上のエスケープサンプルは、直接的にコード化でき、文字列コピーモードを使用して予測されず、文字列内の残りのサンプルは、文字列コピーモードを使用して予測される。1つ以上のエスケープサンプルは、文字列内の任意の適切な位置に配置することができる。
一部の例では、ブロック(例えば、CB)は、1つの文字列及び1つ以上のエスケープサンプルのみを含み、文字列は、文字列コピーモードを使用して再構築され、1つ以上のエスケープサンプルは、直接的にコード化され、文字列コピーモードを使用して予測されない。
一般的に、文字列形状(即ち、文字列の形状)は、例えば、非長方形の形状(例えば、図14における文字列(1430)~(1431)の形状、図15における文字列(1532)~(1533)の形状)、長方形の形状(例えば、図18における文字列(1833))など、任意の適切な形状であり得る。
文字列照合(又は文字列コピーモード)の一部の例では、再構築(又は予測)されるべき現在文字列と対応する参照文字列内のサンプルは、スキャン方向に沿って同じ順序を有する。例えば、図15を参照して、文字列(1532)は、サンプル(1501)~(1506)を含む。サンプル(1501)~(1506)の値は、A、B、C、D、E、Fで順番に表される。文字列コピーモードを適用して文字列(1532)を再構築するために、文字列(1532)に配置されたA、B、C、D、E、Fのパターンとは類似又は同一のパターンを有する参照領域(1540)内の参照文字列が識別される。
一部の例では、文字列(1532)に配置されたA、B、C、D、E、Fのパターンとは類似又は同一のパターンを有する参照文字列は、参照領域(1540)に存在しない。例えば、スキャン方向に沿って同じ順序を有する参照文字列が存在しない場合がある。しかしながら、異なるパターン又はスキャン方向に沿った異なる順序を有するが、それに対して1つ以上の反転操作を実行することにより、現在文字列のパターン又は順序を取得可能な別の参照文字列を識別することができる。
図15を参照して、サンプル(1521)~(1526)を有する参照文字列(1534)を、参照領域(1540)で識別することができる。サンプル(1521)~(1526)の値は、それぞれD′、C′、B′、A′、F′、E′である。一例では、値Aと値A′との間の差が閾値より小さく、値Bと値B′との間の差が閾値より小さく、値Cと値C′との間の差が閾値より小さく、値Dと値D′との差が閾値より小さく、値Eと値E′との間の差が閾値より小さく、値Fと値F′との間の差が閾値より小さい。文字列照合(又は文字列コピーモード)でより柔軟な予測パターン又は順序(例えば、参照文字列のスキャン方向に沿ったD′、C′、B′、A′、F′、E′)を許容すると、効率を向上させることができる。柔軟な予測パターン又は順序は、文字列(1532)のパターン又は順序から反転されたパターン又は順序を含み得る。
本開示の態様によれば、コード化されたビデオビットストリームから、現在ピクチャにおける現在ブロックのコード化情報をデコードすることができる。コード化情報は、現在文字列を含む現在ブロックの文字列コピーモードを示すことができる。
現在文字列を予測するために反転操作を実行するか否かを決定することができる。反転操作は、現在ピクチャにおける元の参照文字列を反転させて、反転された参照文字列を生成することを含む。現在文字列を予測するために反転操作を使用すると決定されたことに基づいて、現在ピクチャにおける元の参照文字列は、現在文字列のSVに基づいて決定することができる。反転された参照文字列は、元の参照文字列を反転させることにより生成することができ、現在文字列は、反転された参照文字列に基づいて再構築することができる。
本開示では、再構築又は予測されるべき現在ブロック内の現在文字列に反転操作を伴う文字列照合モード(又は文字列コピーモード)を適用するための方法が開示される。本開示の態様によれば、反転された参照文字列を使用して、文字列照合予測を実行することができる。元の参照文字列は、文字列コピーモードで予測されるべき現在文字列を予測するための予測子として使用される前に、反転操作を受けることができる。元の参照文字列に対して反転操作を実行して、反転された参照文字列を生成し、その後、反転された参照文字列を予測子として使用して、文字列コピーモードで現在文字列を予測することができる。
反転操作は、単一の反転方向に関連付けられた反転操作を指すことができる。例えば、反転方向が左右反転方向である、図15に示される左右反転操作、反転方向が上下反転方向である、図16に示される上下反転操作である。上下反転操作又は左右反転操作などの一部の例では、反転された参照文字列は、元の参照文字列のミラーコピーである。
反転操作は、左右反転方向及び上下反転方向などの複数の反転方向に関連付けられた組み合わせ反転操作を指すことができる。一例では、組み合わせ反転操作は、図17に示される上下反転操作及び左右反転操作などの複数の反転操作の組み合わせを含む。複数の反転操作の組み合わせは、様々な順序で実行することができる。一例では、組み合わせ反転操作は、単一のステップで実行される。
一部の実施形態では、反転操作は、他の所定の変換パターンに従って実行し、及び/又は元の参照文字列の一部に対して実行することができる。例えば、反転操作は、元の参照文字列の行又は列のサブセットに対して実行することができる。
上記のように、反転操作は、上下反転操作、左右反転操作、組み合わせ反転操作などの任意の適切なタイプ(反転タイプとも呼ばれる)であり得る。予測されるべき現在文字列に対して複数の反転タイプが利用可能である場合、例えば、現在文字列に対して構文要素又はインデックスを割り当てて、現在文字列に使用される反転タイプを示すことができる。反転タイプを示す構文要素又はインデックスは、反転タイプインデックスと呼ぶことができる。反転タイプインデックスは、例えば、ブロック内の文字列について、ブロックレベルなどの任意の適切な構文レベルでシグナリングすることができる。一例では、反転タイプインデックスは、反転方向を示し、反転方向インデックスと呼ばれる。反転タイプインデックスは、予測されるべき現在ブロック内の現在文字列に対してシグナリングすることができる。一例では、予測されるべき現在文字列に対して利用可能な反転タイプが1つだけの場合、反転タイプインデックスがシグナリングされない。反転タイプインデックス及び/又は反転タイプを、利用可能な反転タイプとして推測することができる。
一例では、現在文字列に対して利用可能な反転タイプは、上下反転操作及び左右反転操作などの2つの反転操作を含む。したがって、反転タイプインデックスは、1ビットを有し得る。例えば、反転タイプインデックスは、1ビットを有するフラグである。
一例では、現在文字列に対して利用可能な反転タイプは、上下反転操作、左右反転操作及び組み合わせ反転操作などの3つ以上の反転操作を含む。したがって、反転タイプインデックスは、複数のビット(例えば、2ビット)を有し得る。一例では、同じ反転タイプインデックスを使用して、反転タイプを示すことができる。反転タイプインデックスの異なる値は、左右反転操作、上下反転操作、組み合わせ反転操作などの異なる反転タイプを示すことができる。
可変長コーディングを使用して反転タイプを示すことができる。例えば、第1の値(例えば、「0」)は、左右反転操作を示し、第2の値(例えば、「01」)は、上下反転操作を示し、第3の値(例えば、「10」)は、組み合わせ反転操作を示し、第1の値、第2の値及び第3の値で使用されるビット数が異なり得る。他の実施形態では、様々な操作を異なる値に関連付けることができる。
一実施形態では、複数の反転操作に対して異なるフラグを提供することができる。例えば、2つの異なるフラグ(例えば、2ビット)を使用して、左右反転操作と上下反転操作のそれぞれを実行するか否かを別々に示すことができる。例えば、第1のフラグ(例えば、第1のビット)は、左右反転操作を実行するか否かを示し、第2のフラグ(例えば、第2のビット)は、上下反転操作を実行するか否かを示す。一例では、第1のフラグ及び第2のフラグについての値「1」は、左右反転操作及び上下反転操作をそれぞれ実行することを示し、第1のフラグ及び第2のフラグについての値「0」は、左右反転操作及び上下反転操作をそれぞれ実行しないことを示す。これにより、第1及び第2のフラグについての値「00」、「01」、「10」及び「11」は、それぞれ、現在文字列に対して、(i)反転操作を実行しないこと、(ii)上下反転操作を実行すること、(iii)左右反転操作を実行すること、(iv)組み合わせ反転操作を実行すること、を示す。フラグは、ブロック内の文字列について、ブロックレベルなどの任意の適切な構文レベルでシグナリングすることができる。
上述したように、両方のフラグ(例えば、第1のビット及び第2のビット)が、左右反転操作を実行することと、上下反転操作を実行することとを示す場合、組み合わせ反転操作を実行する。
第1のフラグ(例えば、第1のビット)が上下反転操作を実行するか否かを示し、第2のフラグ(例えば、第2のビット)が左右反転操作を実行するか否かを示す場合、上記説明は、適切に適合することができる。
一実施形態では、異なる反転タイプインデックスを使用して、左右反転操作、上下反転操作、組み合わせ反転操作などの異なる反転タイプを示すことができる。一例では、例えば1ビットを有する第1のインデックスは、反転操作が上下反転操作であるか左右反転操作であるかを示すために使用され、例えば1ビットを有する第2のインデックスは、反転操作が組み合わせ反転操作であるか否かを示すために使用される。異なる反転タイプインデックスは、ブロック内の文字列について、ブロックレベルなどの任意の適切な構文レベルでシグナリングすることができる。
本開示の態様によれば、反転操作は、(i)上下反転操作と、(ii)左右反転操作と、(iii)組み合わせ反転操作とのうちの1つであり得る。上下反転操作である反転操作に基づいて、反転された参照文字列は、元の参照文字列を上下反転させることにより生成することができる。左右反転操作である反転操作に基づいて、反転された参照文字列は、元の参照文字列を左右反転させることにより生成することができる。組み合わせ反転操作である反転操作に基づいて、反転された参照文字列は、元の参照文字列を上下左右反転させることにより生成することができる。例えば、各反転操作は、異なるタイプの反転操作に対応することができる。
一実施形態では、コード化情報は、現在文字列の文字列長の後にシグナリングされた、現在文字列の文字列レベルのフラグを含む。文字列レベルのフラグは、現在文字列を予測するために反転操作を実行するか否かを示すことができる。
本開示の態様によれば、左右反転された(ミラー化された)参照文字列を使用して、文字列コピーモードで文字列照合予測を実行することができる。元の参照文字列は、文字列コピーモードで現在文字列を予測するための予測子として使用される前に、左右反転操作を受けることができる。
図15は、本開示の一実施形態に係る左右反転操作の一例を示す。現在ピクチャ(1550)は、既に再構築された、再構築された領域(灰色の領域)(参照領域とも呼ばれる)(1540)と、再構築中の領域(1541)とを含む。領域(1541)における現在ブロック(1531)は、再構築中である。現在ブロック(1531)は、CB、CU、PB、PUなどであり得る。現在ブロック(1531)は、複数の文字列(例えば、文字列(1532)及び文字列(1533))を含む。再構築された領域(1540)は、文字列(1532)及び(1533)を再構築するための参照領域として使用することができる。
現在文字列(例えば、文字列(1532))を再構築するために、参照領域(1540)内にある参照文字列(1534)(元の参照文字列とも呼ばれる)を、SV(例えば、SV3)に基づいて決定する。SV(例えば、SV3)は、現在文字列(例えば、文字列(1532))と、参照領域(1540)に位置する対応する参照文字列(1534)との間の変位を示す変位ベクトルであり得る。反転操作(例えば、左右反転操作)を元の参照文字列(1534)に対して実行して、反転された参照文字列(左右反転された参照文字列とも呼ばれる)(1535)を生成する。続いて、反転された参照文字列(1535)を予測子として使用して、文字列コピーモードで現在文字列(1532)を予測することができる。
一般的に、予測されるべき現在文字列(例えば、文字列(1532))のSV(例えば、SV3)は、現在文字列(例えば、文字列1532)と元の参照文字列(例えば、文字列(1534))との間の変位ベクトルであり得る。SVは、現在文字列内の事前定義された場所から、元の参照文字列の、エンコーダとデコーダとの両方に既知の事前定義された場所などの任意の適切な場所へ指すことができる。一実施形態では、SVは、現在文字列内のサンプル(例えば、スキャン順序で再構築されるべき第1のサンプル又は開始サンプル)のサンプル場所から、現在文字列内のサンプルを予測するために使用される元の参照文字列内の対応するサンプルのサンプル場所へ指すことができる。図15を参照して、現在文字列は、文字列(1532)であり、文字列(1532)内のサンプルは、値Aを有するサンプル(1501)である。元の参照文字列は、文字列(1534)であり、サンプル(1501)を予測するために使用される元の参照文字列(1534)内の対応するサンプルは、値A′を有するサンプル(1524)である。SV3は、文字列(1532)内のサンプル(1501)のサンプル場所から、元の参照文字列(1534)内のサンプル(1524)のサンプル場所へ指す。
一実施形態では、反転操作は、左右反転操作であり、SVは、予測されるべき現在文字列の最上行における最左側のサンプルから、元の参照文字列の最上行における最右側のサンプルへ指すことができる。図15を参照して、SV3は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1534)の最上行の最右側のサンプルであるサンプル(1524)へ指す。図15に示される例では、反転操作のため、サンプル(1524)は、サンプル(1501)を予測するために使用される。
一般的に、反転操作は、反転された参照文字列を生成するために元の参照文字列に適用する操作を指し、逆反転操作は、元の参照文字列を決定するために、予測されるべき現在文字列に適用する操作を指す。元の参照文字列は、現在文字列に逆反転操作を適用することにより決定することができる。元の参照文字列の形状は、現在文字列の形状に逆反転操作を適用することにより決定することができる。
図15を参照して、元の参照文字列(1534)は、次のように決定することができる。元の参照文字列内の事前定義された場所でのサンプル(例えば、最上行の最右側のサンプル)を、SVと、現在文字列内の事前定義された場所でのサンプル(例えば、最上行の最左側のサンプル)に基づいて決定することができる。例えば、SV3は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1534)の最上行の最右側のサンプルであるサンプル(1524)へ指すため、元の参照文字列(1534)の最上行の最右側のサンプルであるサンプル(1524)を、SV3と、文字列(1532)のサンプル(1501)とに基づいて決定する。続いて、元の参照文字列(1534)(又は元の参照文字列(1534)の形状)を、現在文字列(1532)(又は文字列(1532)の形状)を反転させることにより決定する。
反転された参照文字列(1535)は、元の参照文字列(1534)に左右反転操作を適用することにより生成される。現在文字列(1532)は、反転された参照文字列(1535)を使用して予測することができる。反転された参照文字列(1535)は、文字列(1532)と同じ形状(又はパターン)を有し得る。元の参照文字列(1534)と文字列(1532)は、相互のミラーコピーである。
文字列コピーモードで反転操作(例えば、左右反転操作)を使用する利点を以下に説明する。図15に示される例では、文字列(1532)は、それぞれ対応する値A~Fを有するサンプル(1501)~(1506)を含む。文字列(1532)内の値A~Fは、第1の行(最上行)における左から右への値A~Dと、第2の行における左から右への値E~Fとを含む第1のパターンで配置される。第1のパターンは、文字列(1532)に関連付けられる。一例では、参照領域(1540)では、第1のパターンとは類似又は同一のパターンを識別できないため、文字列コピーモードを適用して文字列(1532)を予測することができず、又は、文字列コピーモードを適用して文字列(1532)を効率的に予測することができない(例えば、参照文字列と文字列(1532)との間の差が比較的大きい)。
一方、元の参照文字列(1534)は、それぞれ対応する値D′、C′、B′、A′、F′、E′を有するサンプル(1521)~(1526)を含み、値A~Fは、それぞれ値A′~F′と類似又は同一である。一実施形態では、値A~Fのうちの1つと、値A~Fのうちの1つを予測するために使用される値A′~F′のうちの、対応する1つとの間の差は、閾値より小さい。例えば、値Aと値A′との間の差は、閾値より小さい。元の参照文字列(1534)内の値A′~F′は、第1の行における左から右への値D′、C′、B′及びA′と、第2の行における左から右への値F′及びE′とを含む第2のパターンで配置される。第2のパターンは、元の参照文字列(1534)に関連付けられる。
第1のパターンと第2のパターンは異なる。例えば、サンプル(1501)を予測するために使用されるサンプル(1524)は、文字列(1534)における最右側のサンプルであるが、サンプル(1501)は、文字列(1532)における最左側のサンプルである。しかしながら、参照領域(1540)における第2のパターンは、第1のパターンの反転コピー(例えば、ミラーコピー)と類似又は同一である。したがって、元の参照文字列(1534)を反転させて、第1のパターンと類似又は同一の第3のパターンに関連付けられた、反転された参照文字列(1535)を生成することができる。第3のパターンは、反転された参照文字列(1535)において、第1の行における左から右への値A′、B′、C′及びD′と、第2の行における左から右への値E′及びF′とを含む。第2のパターンと第3のパターンは、相互の反転コピーである。
したがって、現在文字列のパターン(例えば、第1のパターン)とは類似又は同一のパターンを使用して、文字列コピーモードで現在文字列を予測することに加えて、現在文字列(例えば、文字列(1532))のパターン(例えば、第1のパターン)の反転コピーとは類似又は同一のパターン(例えば、第2のパターン)を文字列コピーモードで使用して、現在文字列を予測することができ、より柔軟で効率的な文字列コピーモードを実現できる。
一部の例では、予測されるべき現在文字列は、1列のみを含む。したがって、1列を有する元の参照文字列に対して左右反転操作を実行することにより生成された、左右反転された参照文字列は、元の参照文字列と同一である。したがって、左右反転操作は、元の参照文字列を変更しない。一部の例では、現在文字列が1列のみを含む場合、左右反転操作が禁止されるか又は無効になる。1列のみを含む文字列は、上下スキャン順序で発生することができる。一例では、1列のみを含む文字列は、上下スキャン順序でのみ発生する。
本開示の態様によれば、上下反転された(ミラー化された)参照文字列を使用して、文字列コピーモードで文字列照合予測を実行することができる。元の参照文字列は、文字列コピーモードで現在文字列を予測するための予測子として使用される前に、上下反転操作を受けることができる。
図16は、本開示の一実施形態に係る上下反転の一例を示す。現在ピクチャ(1550)は、再構築された領域(1540)と、再構築中の領域(1541)とを含む。現在ブロック(1531)は、再構築中である。現在ブロック(1531)は、複数の文字列(例えば、文字列(1532)及び(1533))を含む。再構築された領域(1540)は、文字列(1532)及び(1533)を再構築するための参照領域として使用することができる。
現在文字列(例えば、文字列(1532))を再構築するために、再構築された領域(1540)内にある参照文字列(1536)(元の参照文字列とも呼ばれる)を、SV(例えば、SV4)に基づいて決定する。SV4は、現在文字列(例えば、文字列(1532))と、参照領域(1540)に位置する対応する参照文字列(1536)との間の変位を示す変位ベクトルであり得る。反転操作(例えば、上下反転操作)を元の参照文字列(1536)に対して実行して、反転された参照文字列(上下反転された参照文字列とも呼ばれる)(1537)を生成する。続いて、反転された参照文字列(1537)を予測子として使用して、文字列コピーモードで現在文字列(1532)を予測することができる。
一般的に、SVは、予測されるべき現在文字列内の事前定義された場所から、元の参照文字列の任意の適切な場所へ指すことができる。図16を参照して、現在文字列は、文字列(1532)である。元の参照文字列は、文字列(1536)である。値A′′を有する、元の参照文字列(1536)内の対応するサンプル(1553)は、文字列(1532)内の値Aを有するサンプル(1501)を予測するために使用される。SV4は、文字列(1532)内のサンプル(1501)のサンプル場所から、元の参照文字列(1536)内のサンプル(1553)のサンプル場所へ指す。
一実施形態では、反転操作は、上下反転操作であり、SVは、現在文字列の最上行における最左側のサンプルから、元の参照文字列の最下行における最左側のサンプルへ指すことができる。図16を参照して、SV4は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1536)の最下行における最左側のサンプルであるサンプル(1553)へ指す。図16に示される例では、反転操作のため、サンプル(1553)は、サンプル(1501)を予測するために使用される。
図16を参照して、元の参照文字列(1536)は、次のように決定することができる。SV4は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1536)の最下行における最左側のサンプルであるサンプル(1553)へ指すため、元の参照文字列(1536)の最下行における最左側のサンプルであるサンプル(1553)を、SV4と、文字列(1532)のサンプル(1501)とに基づいて決定する。続いて、元の参照文字列(1536)(又は元の参照文字列(1536)の形状)を、文字列(1532)(又は文字列(1532)の形状)を上下反転させることにより決定する。
反転された参照文字列(1537)は、元の参照文字列(1536)に上下反転操作を適用することにより生成される。現在文字列(1532)は、反転された参照文字列(1537)を使用して予測することができる。反転された参照文字列(1537)は、文字列(1532)と同じ形状(又はパターン)を有し得る。元の参照文字列(1536)と文字列(1532)は、相互のミラーコピーである。
文字列コピーモードで反転操作(例えば、上下反転操作)を使用する利点を以下に説明する。図16に示される例では、文字列(1532)内の値A~Fは、図15を参照して説明されたように、第1のパターンで配置される。上述したように、参照領域(1540)では、第1のパターンとは類似又は同一のパターンを識別できないため、文字列(1532)を予測するために文字列コピーモードを適用できず、又は、文字列(1532)を効率的に予測するために文字列コピーモードを適用できない。
一方、元の参照文字列(1536)は、それぞれ対応する値E′′、F′′、A′′、B′′、C′′、D′′を有するサンプル(1551)~(1556)を含み、値A~Fは、それぞれ値A′′~F′′と類似又は同一である。一実施形態では、値A~Fのうちの1つと、値A~Fのうちの1つを予測するために使用される値A′′~F′′のうちの、対応する1つとの間の差は、閾値より小さい。例えば、値Aと値A′′との間の差は、閾値より小さい。元の参照文字列(1536)内の値A′′~F′′は、第1の行における左から右への値E′′及びF′′と、第2の行における左から右への値A′′、B′′、C′′及びD′′とを含む第4のパターンで配置される。第4のパターンは、元の参照文字列(1536)に関連付けられる。
第1のパターンと第4のパターンは異なる。例えば、サンプル(1501)を予測するために使用されるサンプル(1553)は、文字列(1536)における最下行に位置するが、サンプル(1501)は、文字列(1532)における最上行に位置する。しかしながら、参照領域(1540)における第4のパターンは、第1のパターンの反転コピー(例えば、ミラーコピー)と類似又は同一である。したがって、元の参照文字列(1536)を反転させて、第1のパターンと類似又は同一の第5のパターンに関連付けられた、反転された参照文字列(1537)を生成することができる。第5のパターンは、反転された参照文字列(1537)において、第1の行における左から右への値A′′、B′′、C′′及びD′′と、第2の行における左から右への値E′′及びF′′とを含む。第4のパターンと第5のパターンは、相互の反転コピーである。
したがって、現在文字列(例えば、文字列(1532))のパターン(例えば、第1のパターン)の反転コピーとは類似又は同一のパターン(例えば、第4のパターン)を文字列コピーモードで使用して、現在文字列を予測することができ、より柔軟で効率的な文字列コピーモードを実現できる。
一部の例では、予測されるべき現在文字列は、1行のみを含む。したがって、1行を有する元の参照文字列に対して上下反転操作を実行することにより生成された、上下反転された参照文字列は、元の参照文字列と同一である。したがって、上下反転操作は、元の参照文字列を変更しない。一部の例では、現在文字列が1行のみを含む場合、上下反転操作が禁止されるか又は無効になる。1行のみを含む文字列は、左右スキャン順序で発生することができる。一例では、1行のみを含む文字列は、左右スキャン順序でのみ発生する。
本開示の態様によれば、組み合わせ反転操作を参照文字列に適用して、反転された参照文字列を生成することができ、反転された参照文字列を予測子として使用して、文字列コピーモードで文字列照合予測を実行する。組み合わせ反転操作は、任意の適切な順序で連続して実行される任意の適切な反転操作を含み得る。組み合わせ反転操作は、参照文字列が、反転された参照文字列に直接的に照合される単一のステップで実行することもできる。
一例では、組み合わせ反転操作は、図15を参照して説明されたような左右反転操作と、図16を参照して説明されたような上下反転操作とを含む。左右反転操作と上下反転操作とを組み合わせて、反転された参照文字列を生成することができる。組み合わせた操作を実行する順序は、実施形態に応じて変化することができる。
図17は、本開示の実施形態に係る組み合わせ反転操作の一例を示す。現在ピクチャ(1550)は、再構築された領域(1540)と、再構築中の領域(1541)とを含む。領域(1541)内の現在ブロック(1531)は、再構築中である。現在ブロック(1531)は、複数の文字列(例えば、文字列(1532)及び(1533))を含む。再構築された領域(1540)は、文字列(1532)及び(1533)を再構築するための参照領域として使用することができる。
現在文字列(例えば、文字列(1532))を再構築するために、再構築された領域(1540)内にある参照文字列(1538)(元の参照文字列とも呼ばれる)を、SV(例えば、SV5)に基づいて決定する。SV5は、現在文字列(例えば、文字列(1532))と、参照領域(1540)に位置する対応する参照文字列(1538)との間の変位を示す変位ベクトルであり得る。組み合わせ反転操作を元の参照文字列(1538)に対して実行して、反転された参照文字列(1539)を生成する。続いて、反転された参照文字列(1539)を予測子として使用して、文字列コピーモードで現在文字列(1532)を予測することができる。
上述したように、任意の適切な方法及び/又は順序に従って、組み合わせ反転操作を元の参照文字列(例えば、参照文字列(1538))に対して実行して、反転された参照文字列(例えば、反転された参照文字列(1539))を生成することができる。組み合わせ反転操作を元の参照文字列(例えば、参照文字列(1538))に対して実行して、反転された参照文字列(例えば、反転された参照文字列(1539))を1つ以上のステップで生成することができる。
一実施形態では、組み合わせ反転操作は、2つのステップで実行することができる。一例では、元の参照文字列(1538)を上下反転させて第1の中間文字列を生成し、続いて、第1の中間文字列を左右反転させて反転された参照文字列(1539)を生成する。一例では、元の参照文字列(1538)を左右反転させて第2の中間文字列を生成し、続いて、第2の中間文字列を上下反転させて反転された参照文字列(1539)を生成する。
一実施形態では、組み合わせ反転操作は、単一のステップで実行することができる。例えば、元の参照文字列(1538)を直接反転させて、反転された参照文字列(1539)を生成する。
一般的に、SVは、予測されるべき現在文字列内の事前定義された場所から、元の参照文字列の任意の適切な場所へ指すことができる。図17を参照して、現在文字列は、文字列(1532)である。元の参照文字列は、文字列(1538)である。値A′′′を有する、元の参照文字列(1538)内の対応するサンプル(1706)は、文字列(1532)内の値Aを有するサンプル(1501)を予測するために使用される。SV5は、文字列(1532)内のサンプル(1501)のサンプル場所から、元の参照文字列(1538)内のサンプル(1706)のサンプル場所へ指す。
一実施形態では、反転操作は、左右反転操作と上下反転操作との両方を含む組み合わせ反転操作であり、SVは、現在文字列の最上行における最左側のサンプルから、元の参照文字列の最下行における最右側のサンプルへ指すことができる。図17を参照して、SV5は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1538)の最下行における最右側のサンプルであるサンプル(1706)へ指す。図17に示される例では、組み合わせ反転操作のため、サンプル(1706)は、サンプル(1501)を予測するために使用される。
図17を参照して、元の参照文字列(1538)は、次のように決定することができる。SV5は、文字列(1532)の最上行における最左側のサンプルであるサンプル(1501)から、元の参照文字列(1538)の最下行における最右側のサンプルであるサンプル(1706)へ指すため、元の参照文字列(1538)の最下行における最右側のサンプルであるサンプル(1706)を、SV5と、文字列(1532)のサンプル(1501)とに基づいて決定する。続いて、元の参照文字列(1538)(又は元の参照文字列(1538)の形状)を、組み合わせ反転操作の逆反転操作、例えば、文字列(1532)(又は文字列(1532)の形状)を上下左右反転させることにより決定する。
文字列コピーモードで組み合わせ反転操作を使用する利点を以下に説明する。図17に示される例では、文字列(1532)内の値A~Fは、図15を参照して説明されたように、第1のパターンで配置される。上述したように、参照領域(1540)では、第1のパターンとは類似又は同一のパターンを識別できないため、文字列コピーモードを適用して文字列(1532)を予測することができず、又は、文字列コピーモードを適用して文字列(1532)を効率的に予測することができない。
一方、元の参照文字列(1538)は、それぞれ対応する値F′′′、E′′′、D′′′、C′′′、B′′′、A′′′を有するサンプル(1701)~(1706)を含み、値A~Fは、それぞれ値A′′′~F′′′と類似又は同一である。一実施形態では、値A~Fのうちの1つと、値A~Fのうちの1つを予測するために使用される値A′′′~F′′′のうちの、対応する1つとの間の差は、閾値より小さい。例えば、値Aと値A′′′との間の差は、閾値より小さい。元の参照文字列(1538)内の値A′′′~F′′′は、第1の行における左から右への値F′′′及びE′′′と、第2の行における左から右への値D′′′、C′′′、B′′′及びA′′′とを含む第6のパターンで配置される。第6のパターンは、元の参照文字列(1538)に関連付けられる。
第1のパターンと第6のパターンは異なる。例えば、サンプル(1501)を予測するために使用されるサンプル(1706)は、文字列(1538)における最下行の最右側のサンプルであるが、サンプル(1501)は、文字列(1532)における最上行の最左側のサンプルである。しかしながら、参照領域(1540)における第6のパターンは、左右方向と上下方向の両方で反転された、第1のパターンのコピーと類似又は同一である。したがって、元の参照文字列(1538)を反転させて、第1のパターンとは類似又は同一の第7のパターンに関連付けられた、反転された参照文字列(1539)を生成することができる。第7のパターンは、反転された参照文字列(1539)において、第1の行における左から右への値A′′′、B′′′、C′′′及びD′′′と、第2の行における左から右への値E′′′及びF′′′とを含む。第6のパターンは、左右方向と上下方向の両方で反転された、第7のパターンの反転コピーである。
したがって、現在文字列(例えば、文字列(1532))のパターン(例えば、第1のパターン)の反転コピーとは類似又は同一のパターン(例えば、第6のパターン)を文字列コピーモードで使用して、現在文字列を予測することができ、より柔軟で効率的な文字列コピーモードを実現できる。
一部の例では、予測されるべき現在文字列は、1ライン(例えば、1行又は1列)のサンプルのみを含む。したがって、現在文字列に対応する元の参照文字列を変更できるのは、上下反転操作と左右反転操作のいずれか1つだけである。一部の例では、現在文字列が1ライン(例えば、1行又は1列)のみを含む場合、組み合わせ反転操作が禁止されるか又は無効になる。
一例では、現在文字列は、1行のみを含み、組み合わせ反転操作は、現在文字列に対して禁止される。現在文字列に対して左右反転操作が許容できる。また、上下反転操作は、現在文字列に対して禁止される。
一例では、現在文字列は、1列のみを含み、組み合わせ反転操作は、現在文字列に対して禁止される。現在文字列に対して上下反転操作が許容できる。また、左右反転操作は、現在文字列に対して禁止される。
本開示の態様によれば、構文要素又は反転タイプインデックスなどのインデックスを割り当てて、組み合わせ反転操作を示すことができる。一例では、同じ反転タイプインデックスを使用して、反転タイプを示すことができる。反転タイプインデックスの異なる値は、左右反転操作、上下反転操作、組み合わせ反転操作などの異なる反転タイプを示すことができる。
可変長コーディングを使用して反転タイプを示すことができる。例えば、第1の値(例えば、「0」)は、左右反転操作を示し、第2の値(例えば、「01」)は、上下反転操作を示し、第3の値(例えば、「10」)は、組み合わせ反転操作を示し、第1の値、第2の値及び第3の値で使用されるビット数が異なり得る。
一実施形態では、異なるビットを使用して、左右反転操作と上下反転操作とのそれぞれを実行するか否かを別々に示すことができる。例えば、1つのビット(例えば、第1のビット)は、左右反転操作を実行するか否かを示し、別のビット(例えば、第2のビット)は、上下反転操作を実行するか否かを示す。両方のビット(例えば、第1のビット及び第2のビット)が、左右反転操作を実行することと、上下反転操作を実行することとを示す場合、組み合わせ反転操作を実行する。
一実施形態では、異なる反転タイプインデックスを使用して、左右反転操作、上下反転操作、組み合わせ反転操作などの異なる反転タイプを示すことができる。一例では、第1のインデックスは、反転操作が上下反転操作であるか左右反転操作であるかを示すために使用され、第2のインデックスは、反転操作が組み合わせ反転操作であるか否かを示すために使用される。
本開示の態様によれば、予測されるべき現在ブロック及び/又は現在ブロック内の予測されるべき現在文字列について、1つ以上の方法を使用して文字列コピーモードでの反転操作を示す(例えば、シグナリングする)ことができる。1つ以上の方法を、個別に使用してもよく、適用可能な場合に組み合わせて使用してもよい。1つ以上の方法は、現在ブロック及び/又は現在文字列に対して反転操作を使用するか否かを示す(シグナリングする)ことができる。1つ以上の方法は、文字列コピーモードで現在文字列に使用される反転タイプを示す(例えば、シグナリングする)ことができる。
一実施形態では、現在ブロック全体(例えば、CB全体)は、文字列コピーモードで反転された参照文字列を使用することができる。例えば、現在ブロック(例えば、ブロック(1531))は、少なくとも1つの文字列(例えば、文字列(1532)~(1533))を含む。少なくとも1つの文字列のそれぞれは、対応する反転された参照文字列を使用して予測される。例えば、文字列(1532)は、反転された参照文字列(1535)を使用して予測される。文字列(1533)は、図15~17を参照して説明されたものと同様の、別の反転された参照文字列を使用して予測される。
文字列コピーモードを使用して現在ブロック内の少なくとも1つの文字列(例えば、文字列(1532)~(1533))を予測するために少なくとも1つの反転された参照文字列(例えば、2つの異なる反転された参照文字列)が使用されるか否かを、現在ブロックのブロックレベルのフラグを使用して示すことができる。一部の例では、現在ブロックのブロックレベルのフラグは、文字列コピーモードを使用して現在ブロック(例えば、ブロック1531)内の少なくとも1つの文字列(例えば、文字列(1532)~(1533))を予測するために少なくとも1つの反転された参照文字列が使用されることを示すために使用される。
一例では、現在ブロックのブロックレベルのフラグは、現在ブロック内の少なくとも1つの文字列のそれぞれが、それぞれの反転された参照文字列を使用して予測されるか否かを示す。例えば、現在ブロックのブロックレベルのフラグは、現在ブロック内の少なくとも1つの文字列のそれぞれが、それぞれの反転された参照文字列を使用して予測されることを示す。
本開示の態様によれば、現在文字列は、現在ブロックに含まれる少なくとも1つの文字列のうちの1つである。コード化情報は、現在ブロックのブロックレベルのフラグを含み得る。ブロックレベルのフラグは、現在ブロックを予測するために少なくとも1つの文字列に対して少なくとも1つの反転操作を実行することを示すことができる。ブロックレベルのフラグは、現在ブロックを予測するために少なくとも1つの文字列のそれぞれに対して反転操作を実行することを示すことができる。これにより、現在ブロックを予測するために少なくとも1つの文字列のそれぞれに対して反転操作を実行することを示すブロックレベルのフラグに基づいて、現在ブロックを予測するために少なくとも1つの反転操作を使用すると決定することができ、少なくとも1つの反転操作は、元の参照文字列に対して実行される反転操作を含む。
本開示の態様によれば、現在文字列は、現在ブロックに含まれる複数の文字列のうちの1つである。コード化情報は、現在ブロックのブロックレベルのフラグを含み得る。ブロックレベルのフラグの第1の値は、それぞれの反転操作を使用して複数の文字列のそれぞれを予測することを示すことができ、ブロックレベルのフラグの第2の値は、複数の文字列に対して反転操作を実行しないことを示すことができる。一例では、ブロックレベルのフラグが第1の値を有するため、複数の文字列のそれぞれは、それぞれの反転操作を使用して予測される。これにより、第1の値を有するブロックレベルのフラグに基づいて、現在文字列を予測するために反転操作を実行すると決定する。
本開示の態様によれば、現在文字列は、現在ブロックに含まれる少なくとも1つの文字列のうちの1つである。現在ブロック内の少なくとも1つの文字列の数が第1の閾値(数の閾値とも呼ばれる)より大きいため、現在ブロック内の少なくとも1つの文字列の数が第1の閾値より大きいことに基づいて、現在ブロックに対して、少なくとも1つの文字列に対する少なくとも1つの反転操作を禁止すると決定することができる。少なくとも1つの反転操作は、元の参照文字列に対して実行される反転操作を含み、反転操作は禁止すると決定される。一例では、少なくとも1つの文字列は、複数の文字列に対応し、現在文字列は、現在ブロックに含まれる複数の文字列のうちの1つである。現在ブロック内の複数の文字列の数が第1の閾値より大きいことに基づいて、現在文字列に対して反転操作を禁止すると決定することができる。
現在ブロックに対する反転操作を示すために使用されるフラグ(例えば、ブロックレベルのフラグ)は、現在ブロック内のそれぞれの文字列の文字列長をシグナリングした後にシグナリングすることができる。一部の実施形態では、反転操作の使用は、現在ブロック内の文字列の数に依存することができる。例えば、現在ブロック内の少なくとも1つの文字列(例えば、複数の文字列)の数が第1の閾値(例えば、数の閾値)より大きい場合、現在ブロックに対する反転操作を禁止することができる。一例では、フラグ(例えば、ブロックレベルのフラグ)がシグナリングされない。フラグ(例えば、ブロックレベルのフラグ)を、現在ブロックに対して反転操作を実行しないことを示すものとして推測できる。第1の閾値は、任意の適切な閾値であり得、任意の適切な方法を使用して取得することができる。一例では、第1の閾値は、エンコーダ及び/又はデコーダに既知の事前定義された数の閾値である。一例では、第1の閾値は、例えば、現在ブロックのブロックサイズ(例えば、ブロック幅、ブロック高さ、ブロック面積)に基づいて、エンコーダ及び/又はデコーダにより計算される。第1の閾値は、デコーダにシグナリングされ得る。
一部の例では、現在ブロックは、複数の文字列を含み、現在ブロックのフラグは、複数の文字列における1つ以上の文字列に対して反転操作が許容されるか否かを示すことができる。フラグの第1の値は、複数の文字列における1つ以上の文字列に対して反転操作が許容されることを示すことができる。フラグの第2の値は、複数の文字列に対して反転操作が許容されないことを示すことができる。
上述したように、2つ以上の反転タイプ(例えば、2つ以上の反転方向又は2つ以上の反転操作)が予測されるべき現在文字列に対して利用可能な場合、現在ブロック内の現在文字列に対して反転タイプインデックスを使用できる。反転タイプインデックスはシグナリングできる。一例では、現在ブロック内の文字列は、異なる反転タイプを有し得、それぞれの反転タイプインデックスは、現在ブロック内の文字列のそれぞれに対してシグナリングされる。
図17を参照して、現在ブロック(1531)は、文字列(1532)~(1533)を含む。ブロックレベルのフラグは、現在ブロック(1531)に対して反転操作を使用するか否かを示すために使用される。一例では、ブロックレベルのフラグは、現在ブロックに対して反転操作を使用することを示すため、文字列(1532)~(1533)は、反転操作を使用して予測される。2つの反転タイプがそれぞれ文字列(1532)~(1533)に対して利用可能である。文字列(1532)の第1の反転タイプインデックスは、文字列(1532)の反転タイプを示すために使用される。文字列(1533)の第2の反転タイプインデックスは、文字列(1533)の反転タイプを示すために使用される。
文字列コピーモードを使用して予測された現在ブロック内の現在文字列に対して反転された参照文字列を使用するか否かは、現在ブロック内の現在文字列の文字列レベルのフラグ(又は文字列レベルの表示フラグ)で示すことができる。現在ブロック内の各文字列のそれぞれの文字列レベルのフラグを使用して、文字列に対して反転操作を使用するか否かを示すことができる。
本開示の態様によれば、コード化情報は、現在文字列の文字列レベルのフラグを含み得、文字列レベルのフラグは、現在文字列を予測するために反転操作を使用することを示すことができる。これにより、現在文字列を予測するために反転操作を実行することを示す文字列レベルのフラグに基づいて、現在文字列を予測するために反転操作を使用すると決定することができる。
一実施形態では、反転操作の使用は、例えば、現在文字列内のサンプルの数が第2の閾値(長さの閾値とも呼ばれる)より小さい場合、現在文字列の文字列長に依存することができる。現在文字列の文字列長が第2の閾値より小さいことに基づいて、現在文字列に対して反転操作を禁止すると決定することができる。
また、現在文字列の文字列長が長さの閾値(例えば、事前定義された長さの閾値)より小さい場合、予測されるべき現在文字列に対する反転操作を禁止でき、現在文字列に対する反転操作を示す関連フラグ(例えば、文字列レベルのフラグ、反転タイプインデックス等)は、あるとすれば、シグナリングしなくてもよい。
上述したように、反転操作を使用する現在ブロック内の文字列のうちの1つに対して、2つ以上の反転タイプ(例えば、2つ以上の反転方向又は2つ以上の反転操作)が利用可能である(又は使用できる)場合、現在ブロック内の文字列のうちの1つに反転タイプインデックスを使用できる。反転タイプインデックスはシグナリングできる。一例では、現在ブロック内の文字列は、異なる反転タイプを有し得、それぞれの反転タイプインデックスは、現在ブロック内の文字列のそれぞれに使用(例えば、シグナリング)される。
図17を参照して、現在ブロック(1531)は、文字列(1532)~(1533)を含む。2つの文字列レベルのフラグは、それぞれ文字列(1532)~(1533)に対して反転操作を使用するか否かを示すために使用される。一例では、文字列(1532)の第1の文字列レベルのフラグは、文字列(1532)に対して反転操作を使用することを示し、文字列(1533)の第2の文字列レベルのフラグは、文字列(1533)に対して反転操作を使用しないことを示す。2つ以上の反転タイプは、文字列(1532)に対して利用可能であり、文字列(1532)の反転タイプインデックスは、文字列(1532)の反転タイプを示すために使用される。
一般的に、元の参照文字列を反転させることにより生成された反転された参照文字列が元の参照文字列と異なる場合、反転操作は有効であり得る。反転された参照文字列が元の参照文字列と同一である場合、反転操作は有効でなく、オプションでないとしてもよい。したがって、反転操作を使用しない。特定の条件では、反転操作を、使用しないと推測でき、ブロックレベルのフラグ又は文字列レベルのフラグをシグナリングする必要がない。
予測されるべき現在文字列の開始サンプル(又はスキャンされるべき第1のサンプル)と終了サンプル(又はスキャンされるべき最後のサンプル)が、左右スキャン順序で予測されるべき現在ブロックの2つの異なる行にある場合、反転操作(例えば、左右反転操作、上下反転操作又は組み合わせ反転操作)が有効であり得る。予測されるべき現在文字列の開始サンプル(又はスキャンされるべき第1のサンプル)と終了サンプル(又はスキャンされるべき最後のサンプル)が、上下スキャン順序で予測されるべき現在ブロックの2つの異なる列にある場合、反転操作(例えば、左右反転操作、上下反転操作又は組み合わせ反転操作)が有効であり得る。
一部の例では、予測されるべき現在文字列の文字列長が現在ブロックの1行の長さ(例えば、ブロック幅)又は現在ブロックの1列の長さ(例えば、ブロック高さ)より長い場合、反転操作は有効である。
本開示の態様によれば、特定の反転操作(例えば、左右反転操作又は上下反転操作)の結果、元の参照文字列とは同一の反転された参照文字列が生成される場合、特定の反転操作は、オプションでないとしてもよく、使用されないと推測できる。例えば、特定の反転操作を使用しない。一例では、特定の反転操作をシグナリングしない。一例では、予測されるべき現在文字列が1行のみを含むため、元の参照文字列も1行のみを含む。元の参照文字列を上下反転させると、元の参照文字列とは同一の反転された参照文字列が生成されるため、上下反転操作は、オプションではなく、使用しない。一例では、予測されるべき現在文字列が1列のみを含むため、元の参照文字列も1列のみを含む。元の参照文字列を左右反転させると、元の参照文字列とは同一の反転された参照文字列が生成されるため、左右反転操作は、オプションではなく、使用しない。
一部の例では、反転操作が効率的であるため、有効にされる。予測されるべき現在文字列のフラグ(例えば、文字列レベルのフラグ)は、現在文字列の文字列長をシグナリングした後にシグナリングでき、フラグは、反転操作を現在文字列に適用するか否かを示す。
一例では、左右スキャン順序で、予測されるべき現在文字列の開始サンプル(又はスキャンされるべき第1のサンプル)と終了サンプル(又はスキャンされるべき最後のサンプル)が現在ブロックの同じ行にある場合、現在文字列は、1行のサンプルのみを有し、上下反転操作をオプションにすることができない。上下反転操作は、使用されないと推定される。1行のサンプルのみを有する現在文字列について、例えばデコーダによって上下反転操作のみが考慮される場合、現在文字列に対して反転操作を適用するか否かを示すフラグ(例えば、文字列レベルのフラグ)をシグナリングする必要がない。一例では、フラグ(例えば、文字列レベルのフラグ)を、シグナリングせず、現在文字列に対する反転操作がないことを示す値として推測される。
一方、例えばデコーダによって上下反転操作と別の反転操作(例えば、左右反転操作)の両方を考慮できる場合、1行のサンプルのみを有する現在文字列に対して反転操作を実行することを選択した後、他の反転操作(例えば、左右反転操作)のみが利用可能である。したがって、反転タイプ(例えば、反転方向)を、シグナリングする必要がなく、他の反転タイプ(例えば、左右反転操作)として推測できる。一例では、反転タイプインデックス(例えば、反転方向のインデックス)を、シグナリングせず、他の反転タイプを示す値として推測する。
図18は、本開示の実施形態に係る、長方形の文字列に対する反転操作の一例を示す。現在ピクチャ(1850)は、再構築された領域(参照領域とも呼ばれる)(灰色の領域)(1840)と、再構築中の領域(1841)とを含む。領域(1841)内の現在ブロック(1831)は、再構築中である。現在ブロック(1831)は、CB、CU、PB、PUなどであり得る。現在ブロック(1831)は、複数の文字列(例えば、文字列(1832)及び(1833))と、エスケープサンプル(1807)~(1808)とを含む。文字列(1832)は、サンプル(1801)~(1806)を含み、非長方形の文字列である。文字列(1833)は、サンプル(1809)~(1816)を含み、文字列の形状が長方形の形状である長方形の文字列である。再構築された領域(1840)は、文字列(1832)及び(1833)を再構築するための参照領域として使用することができる。現在文字列(例えば、文字列(1833))は、長方形の文字列である。
本開示の一態様によれば、予測されるべき長方形の文字列(例えば、文字列(1833))に対する反転操作を禁止できる。現在文字列が長方形の形状を有することに基づいて、現在文字列に対して反転操作を禁止できる。一例では、長方形の文字列(1833)は、反転操作なしの文字列コピーモードを使用して予測される。
本開示の一態様によれば、長方形の文字列内の第1のサンプルが対応する元の参照文字列の反転によるものであり、長方形の文字列内の少なくとも1つのサンプルが対応する元の参照文字列の反転によるものでない場合、予測されるべき長方形の文字列に対して反転操作が許容できる。対応する元の参照文字列の反転によるものでない、長方形の文字列内の少なくとも1つのサンプルは、少なくとも1つの非反転サンプルと呼ぶことができる。例えば、長方形の文字列内の少なくとも1つの非反転サンプルは、元の参照文字列を使用せずに予測できるエスケープサンプル(又はエスケープピクセル)を含む。上述したように、エスケープサンプルの値は、参照領域内のそれぞれの再構築されたサンプルを参照せずに直接的にコード化することができる。コード化された少なくとも1つの非反転サンプルは、反転操作付き文字列コピーモードを実行する場合に配置又は再配置することができる。
一実施形態では、現在文字列は、長方形の形状を有し、反転操作を使用して予測されないサンプルを含む。反転操作を使用して予測されないサンプルとは異なる、現在文字列内の複数のサンプル(例えば、第1のサンプル)を予測するために、反転操作を実行すると決定することができる。一例では、現在文字列は、現在ブロックである。
一例では、長方形の文字列(1833)は、反転操作付き文字列コピーモードを使用して予測される。長方形の文字列(1833)は、反転操作(例えば、左右反転操作)で予測される第1のサンプル(例えば、サンプル(1809)~(1812)及び(1816))と、反転操作なしで予測される第2のサンプル(例えば、サンプル(1813)~(1815))とを含む。より具体的には、再構築された領域(1840)内の元の参照文字列(1834)を、SV(例えば、SV6)に基づいて決定する。元の参照文字列(1834)は、サンプル(1821)~(1825)を含む。反転操作(例えば、左右反転操作)を元の参照文字列(1834)に対して実行して、反転された参照文字列(1835)を生成する。続いて、反転された参照文字列(1835)を予測子として使用して、文字列コピーモードで現在文字列(1833)内の第1のサンプルを予測することができる。例えば、反転された参照文字列(1835)内のサンプル(1824)、(1823)、(1822)、(1821)及び(1825)は、それぞれ、第1のサンプル(1809)~(1812)及び(1816)を予測するために使用される。第2のサンプル(1813)~(1815)は、反転操作を使用して予測されず、非反転サンプルと呼ぶことができる。第2のサンプル(1813)~(1815)は、再構築された領域(1840)内の再構築されたサンプルを使用せずに直接的にコード化されるエスケープサンプルであり得る。
一例では、反転された参照文字列(1835)に基づいて第1のサンプルを予測し、第2のサンプル(1813)~(1815)を直接的にコード化した後、コード化された第2のサンプル(1813)~(1815)は、予測された第1のサンプルと共に配置されて、予測された長方形の文字列(1833)を形成する。
一実施形態では、現在ブロックは、長方形の形状を有する現在文字列である。現在文字列内のサンプルのサブセットに対して反転操作を使用すると決定することができる。現在文字列内の少なくとも1つのサンプルは、反転操作を使用して予測されず、サンプルのサブセットは、現在文字列内の少なくとも1つのサンプルと異なる。
一実施形態では、予測されるべき現在ブロックは、1つの文字列のみを含む。一例では、現在ブロックは、文字列であり、文字列は、長方形の形状を有する。長方形の文字列内のサンプルのサブセットに対して、反転操作が許容でき、サンプルのサブセットは、文字列コピーモードを使用して予測される。長方形の文字列内の少なくとも1つのサンプルは、反転操作を使用して予測されず、長方形の文字列内の非反転サンプルと呼ばれる。少なくとも1つのサンプルは、サンプルのサブセットと異なる。非反転サンプルは、反転操作付き文字列コピーモードを実行する場合に配置又は再配置することができる。非反転サンプルは、参照領域内のそれぞれの再構築されたサンプルを参照せずに直接的にコード化されるエスケープサンプルを含み得る。
図19は、本開示の実施形態に係る、現在ブロック(1931)に対して許容される反転操作の一例を示す。現在ピクチャ(1950)は、再構築された領域(参照領域とも呼ばれる)(灰色の領域)(1940)と、再構築中の領域(1941)とを含む。領域(1941)内の現在ブロック(1931)は、再構築中である。現在ブロック(1931)は、CB、CU、PB、PUなどであり得る。現在ブロック(1931)は、サンプル(1901)~(1908)を含む。
一例では、現在ブロック(1931)は、サンプル(1901)~(1908)を含む長方形の文字列(1931)である。長方形の文字列(1931)は、図18における文字列(1833)を参照して説明されたものと同様に再構築又は予測することができる。図19を参照して、左右反転操作は、現在ブロック(又は現在文字列)(1931)内のサンプルのサブセット(例えば、サンプル(1902)~(1908))に対して許容され、サンプルのサブセットは、文字列コピーモードを使用して予測される。サンプル(1901)は、反転操作を使用して予測されず、現在ブロック(1931)内の非反転サンプルと呼ばれる。一例では、サンプル(1901)は、エスケープサンプルである。サンプル(1921)~(1927)を含む元の参照文字列(1934)は、SV(例えば、SV7)に基づいて取得される。元の参照文字列(1934)を左右反転させることにより、反転された参照文字列(1935)を生成する。続いて、反転された参照文字列(1935)に基づいて、現在文字列(1931)内のサンプル(1902)~(1908)を予測する。現在文字列(1931)内の非反転サンプル(1901)は、直接的にコード化し、次に現在文字列(1931)の左上隅として配置することができる。
一例では、現在ブロックは、予測されるべき現在文字列と、現在文字列の外側にある少なくとも1つのサンプルとを含む。現在文字列の外側にある少なくとも1つのサンプルは、現在ブロック内の任意の適切な場所に配置できる。反転操作は、図15~17における文字列(1532)を参照して説明されたように、現在文字列に対して許容し、実行することができる。現在文字列の外側にある少なくとも1つのサンプルは、反転操作を使用して予測されない。現在文字列に対して文字列コピーモードが実行される場合、現在文字列の外側にある少なくとも1つのサンプルを配置できる。一例では、文字列の外側にある少なくとも1つのサンプルは、参照領域内のそれぞれの再構築されたサンプルを参照せずに直接的にコード化されるエスケープサンプルを含む。
一例では、図19を参照して、現在ブロック(1931)は、現在文字列(1932)と、現在文字列(1932)の外側にあるサンプル(1901)とを含む。サンプル(1902)~(1908)を含む現在文字列(1932)に対して、反転操作(例えば、左右反転操作)を許容できる。上述したように、サンプル(1901)は、反転操作を使用して予測されず、現在ブロック(1931)内の非反転サンプルと呼ばれる。元の参照文字列(1934)は、SV7に基づいて取得される。元の参照文字列(1934)を左右反転させることにより、反転された参照文字列(1935)を生成する。続いて、反転された参照文字列(1935)に基づいて、現在文字列(1932)を予測する。非反転サンプル(1901)は、直接的にコード化し、次に現在ブロック(1931)の左上隅として配置することができる。
一部の例では、変換プロセス及び量子化プロセスがスキップされる。したがって、文字列コピーモードを使用して現在ブロックを予測した後、現在ブロックの残差に対して変換及び量子化を実行しない。一部の例では、文字列コピーモードを使用して現在ブロックを予測した後、現在ブロックの残差に対して変換及び量子化を実行する。
一例では、反転操作を使用して予測された現在ブロックの残差が変換され、量子化される。フラグ(例えば、1ビットのフラグ)を使用して、変換プロセスをスキップするか否かを示すことができる。フラグは、ブロックレベルでシグナリングすることができる。
一実施形態では、現在ブロック内の変換係数を逆量子化することができる。現在ブロックの残差は、変換係数を逆変換することにより生成することができる。
図20は、本開示の一実施形態に係る、プロセス(2000)を概説するフローチャートを示す。プロセス(2000)は、CB、PB、PU、CUなどのブロックの再構築に使用することができる。様々な実施形態では、プロセス(2000)は、端末装置(310)、(320)、(330)及び(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路により実行される。一部の実施形態では、プロセス(1900)がソフトウェア命令で実施され、処理回路は、ソフトウェア命令を実行するとき、プロセス(2000)を実行する。プロセスは、(S2001)から開始し、(S2010)に進む。
(S2010)では、コード化されたビデオビットストリームから、現在ピクチャにおける現在ブロックのコード化情報をデコードすることができる。コード化情報は、現在文字列を含む現在ブロックの文字列コピーモードを示すことができる。現在ブロックは、現在文字列を有する少なくとも1つの文字列を含み得る。一例では、少なくとも1つの文字列は、複数の文字列を含む。一例では、少なくとも1つの文字列は、現在文字列である単一の文字列のみを含む。一例では、現在ブロックは、エスケープサンプルを含む。エスケープサンプルは、少なくとも1つの文字列のうちの1つ以上の内側及び/又は外側に位置し得る。現在文字列の形状は、非長方形の形状又は長方形の形状であり得る。
(S2020)では、現在文字列を予測するために反転操作を実行するか否かを決定することができる。反転操作は、現在ピクチャにおける元の参照文字列を反転させて、反転された参照文字列を生成することを含む。
一実施形態では、コード化情報は、現在ブロックのブロックレベルのフラグを含む。現在文字列は、現在ブロックに含まれる複数の文字列のうちの1つであり得る。ブロックレベルのフラグの第1の値は、それぞれの反転操作を使用して複数の文字列のそれぞれを予測することを示すことができ、ブロックレベルのフラグの第2の値は、複数の文字列に対して反転操作を実行しないことを示すことができる。現在文字列を予測するために反転操作を実行するか否かは、ブロックレベルのフラグに基づいて決定することができる。ブロックレベルのフラグが第1の値を有することに基づいて、現在文字列を予測するために反転操作を実行すると決定することができる。
現在ブロック内の複数の文字列の数が第1の閾値より大きいことに基づいて、現在ブロック内の複数の文字列に対して反転操作を禁止すると決定することができる。これにより、現在ブロック内の複数の文字列の数が第1の閾値より大きい場合、現在文字列に対して反転操作を禁止すると決定する。一例では、現在ブロック内の複数の文字列の数が第1の閾値より大きい場合、ブロックレベルのフラグを、シグナリングせず、現在ブロックに対して反転操作を禁止することを示すものとして推測する。
一実施形態では、コード化情報は、現在文字列の文字列レベルのフラグを含む。文字列レベルのフラグは、現在文字列を予測するために反転操作を実行するか否かを示すことができる。現在文字列を予測するために反転操作を実行するか否かは、文字列レベルのフラグに基づいて決定することができる。文字列レベルのフラグが現在文字列を予測するために反転操作を実行することを示す場合、現在文字列を予測するために反転操作を使用すると決定する。コード化情報は、現在文字列の文字列長の後にコード化情報にシグナリングされた、現在文字列の文字列レベルのフラグを含む。
一例では、現在文字列内のサンプルの数を示す、現在文字列の文字列長は、第2の閾値より小さい。したがって、現在文字列に対して反転操作を禁止すると決定する。一例では、現在文字列の文字列長が第2の閾値より小さい場合、文字列レベルのフラグを、シグナリングせず、現在ブロックに対して反転操作を禁止することを示すものとして推測する。
一例では、現在文字列は、長方形の形状を有し、現在文字列に対して反転操作を禁止すると決定する。
一例では、現在文字列は、長方形の形状を有し、反転操作を使用して予測されないサンプル(例えば、エスケープサンプル)を含む。反転操作を使用して予測されないサンプルとは異なる、現在文字列内の複数のサンプルを予測するために、反転操作を実行すると決定することができる。一例では、現在文字列は、現在ブロックである。
一例では、現在ブロックは、長方形の形状を有する現在文字列である。現在文字列内のサンプルのサブセットに対して反転操作を使用すると決定することができる。現在文字列内の少なくとも1つのサンプルは、反転操作を使用して予測されず、サンプルのサブセットは、現在文字列内の少なくとも1つのサンプルと異なる。
一般的に、現在ブロックのブロックレベルのフラグ、現在文字列の文字列レベルのフラグ、現在ブロック内の少なくとも1つの文字列の数、現在文字列の文字列長、現在文字列の形状、現在文字列がエスケープサンプルを含むか否か、及び/又は現在文字列内の行及び/又は列の数のうちの1つ以上などの様々な基準に基づいて、現在文字列を予測するために反転操作を使用するか否かを決定することができる。
現在文字列を予測するために反転操作を使用すると決定する場合、プロセス(2000)は、(S2030)に進む。他に、反転操作が現在文字列を予測するために使用されないと決定される場合、プロセス(2000)は、(S2099)に進んで終了する。
反転操作の反転タイプは、上述したように、(i)上下反転操作、(ii)左右反転操作、又は(iii)組み合わせ反転操作などの任意の適切なタイプであり得る。組み合わせ反転操作は、元の参照文字列の左右反転及び上下反転を含み得る。組み合わせ反転操作は、単一のステップ又は複数のステップで実行することができる。
現在文字列のインデックスは、例えば、現在文字列の文字列長をシグナリングした後、コード化情報にシグナリングすることができる。インデックスは、反転操作の反転タイプを示すことができる。インデックスは、図15~19を参照して説明されたように、反転タイプインデックス(例えば、反転方向のインデックス)を含み得る。
(S2030)では、図15~19を参照して説明されたように、現在文字列を予測するために反転操作を使用すると決定されたことに基づいて、現在ピクチャにおける元の参照文字列を、現在文字列の文字列ベクトル(SV)に基づいて決定することができる。一例では、元の参照文字列(例えば、文字列(1534))内のサンプル(例えば、サンプル(1524))を、SV(例えば、SV3)と、現在文字列(例えば、文字列(1532))内の対応するサンプル(例えば、サンプル(1501))とに基づいて決定する。続いて、(元の参照文字列内の残りのサンプル(例えば、サンプル(1521)~(1523)及び(1525)~(1526))の場所を含む)元の参照文字列の形状を、現在文字列に対する逆反転操作により決定することができる。逆反転操作は、反転操作の逆反転操作である。プロセス(2000)は、(S2040)に進む。
(S2040)では、例えば、インデックス(例えば、反転タイプインデックス)で示される、現在文字列の反転操作又は反転タイプに基づいて、元の参照文字列に対して反転操作を実行することにより、反転された参照文字列を生成することができる。
反転操作又は反転タイプが上下反転操作であることに基づいて、元の参照文字列を上下反転させることにより、反転された参照文字列を生成することができる。反転操作又は反転タイプが左右反転操作であることに基づいて、元の参照文字列を左右反転させることにより、反転された参照文字列を生成することができる。反転操作又は反転タイプが組み合わせ反転操作であることに基づいて、元の参照文字列を上下左右反転させることにより、反転された参照文字列を生成することができる。或いは、反転タイプが組み合わせ反転操作であることに基づいて、反転された参照文字列を元の参照文字列に基づいて単一のステップで生成することができる。プロセス(2000)は、(S2050)に進む。
(S2050)では、図15~19を参照して説明されたように、反転された参照文字列に基づいて、現在文字列を再構築することができる。プロセス(2000)は、(S2099)に進んで終了する。一部の例では、現在文字列は、反転操作を使用して予測されないサンプル(非反転サンプルと呼ばれる)と、反転操作を使用して予測されるサンプルとを含み得る。したがって、非反転サンプルは、反転された参照文字列に基づかずに予測又はコード化される。例えば、非反転サンプルは、図18~19を参照して説明されたように、直接的にコード化されるエスケープサンプルである。図18~19を参照して説明されたように、コード化された非反転サンプルと、反転操作を使用して予測された予測サンプルとを共に組み合わせて、予測された現在文字列を形成することができる。
プロセス(2000)は、適切に適合することができる。プロセス(2000)のステップは、変更及び/又は省略することができる。追加ステップを追加できる。任意の適切な実装順序を使用できる。一例では、反転された参照文字列に基づいて現在文字列を予測した後、現在ブロックの残差を変換係数に変換し、変換係数を量子化する。或いは、変換及び量子化をスキップし、現在ブロックの残差をゼロと見なす。
一例では、(S2020)では、現在文字列を予測するために反転操作を使用しないと決定する場合、プロセス(2000)は、参照文字列を別のSVに基づいて決定し、反転操作なしで現在文字列を予測するために参照文字列を使用するステップを含み得る。
本開示の実施形態は、別々に使用されるか、又は任意の順序で組み合わせられてもよい。さらに、方法(又は実施形態)、エンコーダ及びデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施することができる。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されるプログラムを実行する。本開示の実施形態は、輝度ブロック又は彩度ブロックに適用することができる。
以上で説明された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実行され、1つ以上のコンピュータ可読媒体に物理的に記憶することができる。例えば、図21は、開示する主題の特定の実施形態を実行することに適したコンピュータシステム(2100)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、又はそのようなメカニズムを施されて、1つ以上のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって直接、又は解釈、マイクロコード実行などによって実行することができる命令を含むコードを作成する任意の適切な機械コード又はコンピュータ言語を用いてコード化することができる。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータ又はその構成要素上で実行することができる。
コンピュータシステム(2100)について、図21に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(2100)の例示的な実施形態で示される構成要素のうちのいずれか1つ又は組み合わせに関する任意の依存性又は必要性を有するとして解釈されるべきではない。
コンピュータシステム(2100)は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(図示せず)を通じて、1人以上の人間ユーザによる入力に応答することができる。ヒューマンインタフェースデバイスは、音声(スピーチ、音楽、環境音など)、画像(スキャンされた画像、静止画像カメラから取得した写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接的に関連しない特定の媒体を取り込むために使用することもできる。
入力ヒューマンインタフェースデバイスは、キーボード(2101)、マウス(2102)、トラックパッド(2103)、タッチスクリーン(2110)、データグローブ(図示せず)、ジョイスティック(2105)、マイクフォン(2106)、スキャナ(2107)及びカメラ(2108)(それぞれが1つのみ示されている)のうちの1つ以上を含んでもよい。
コンピュータシステム(2100)はまた、特定のヒューマンインタフェース出力デバイスを含んでもよい。このようなヒューマンインタフェース出力デバイスは、例えば触覚出力、音、光、及び嗅覚/味覚を通じて、1人以上の人間ユーザの感覚を刺激することができる。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2110)、データグローブ(図示せず)、又はジョイスティック(2105)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(スピーカ(2109)、ヘッドホン(図示せず)など)、視覚出力デバイス(それぞれがタッチスクリーン入力能力、触覚フィードバック能力の有無にかかわらず、一部が、ステレオグラフィック出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレ及びスモークタンク(図示せず)などの手段を介して、2次元の視覚出力又は3次元以上の出力を出力できる、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2110)など)、及びプリンタ(図示せず)を含んでもよい。
コンピュータシステム(2100)はまた、ヒューマンアクセス可能な記憶装置と、それらに関連する媒体、例えば、CD/DVDを有するCD/DVDROM/RW(2120)若しくは同様な媒体(2121)、サムドライブ(2122)、及びリムーバブルハードドライブ若しくはソリッドステートドライブ(2123)を含む光媒体、テープやフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなどとを含み得る。
当業者はまた、ここに開示する主題に関連して使用される「コンピュータ可読媒体」という用語が、送信媒体、搬送波、又は他の一時的な信号を含まないことを理解すべきである。
コンピュータシステム(2100)は、1つ以上の通信ネットワーク(2155)へのインタフェース(2154)をさらに含み得る。ネットワークは、例えば、無線、有線、光ネットワークであり得る。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両用及び産業用、リアルタイム、遅延耐性ネットワークなどであり得る。ネットワークの例は、イーサネット及び無線LANなどのローカルエリアネットワークと、GSM、3G、4G、5G、LTEなどを含むセルラーネットワークと、ケーブルTV、衛星TV及び地上波放送TVを含むTV有線又は無線ワイドエリアデジタルネットワークと、CANBusなどを含む車両用及び産業用ネットワークと、を含む。特定のネットワークは、一般的に、特定の汎用データポート又は周辺バス(2149)(例えば、コンピュータシステム(2100)のUSBポートなど)に接続された外部ネットワークインタフェースアダプターを必要とする。他のネットワークは一般的に、以下で説明するようにシステムバスに接続することにより、コンピュータシステム(2100)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(2100)は、他のエンティティと通信することができる。このような通信は、例えば、ローカル又はワイドエリアデジタルネットワークを使用して、他のコンピュータシステムに対して、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、CANbusから特定のCANbusデバイスへ)、又は双方向であってもよい。上記のように、特定のプロトコルとプロトコルスタックをこれらのネットワークとネットワークインタフェースの各々に使用することができる。
前述のヒューマンインタフェースデバイス、人間がアクセス可能な記憶装置、及びネットワークインタフェースは、コンピュータシステム(2100)のコア(2140)に接続することができる。
コア(2140)は、1つ以上の中央処理装置(CPU)(2141)、グラフィック処理装置(GPU)(2142)、フィールドプログラマブルゲートエリア(FPGA)(2143)の形態での専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(2144)、グラフィックアダプタ(2150)などを含み得る。これらのデバイスは、リードオンリメモリ(ROM)(2145)、ランダムアクセスメモリ(2146)、及びユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量ストレージ(2147)と共に、システムバス(2148)を介して接続されてもよい。一部のコンピュータシステムでは、システムバス(2148)は、1つ以上の物理プラグの形態でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺デバイスは、コアのシステムバス(2148)に直接的に接続されてもよく、周辺バス(2149)を介して接続されてもよい。一例では、画面(2110)は、グラフィックアダプタ(2150)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどを含む。
CPU(2141)、GPU(2142)、FPGA(2143)及びアクセラレータ(2144)は、組み合わせて、前述のコンピュータコードを構成できる特定の命令を実行することができる。そのコンピュータコードは、ROM(2145)又はRAM(2146)に記憶することができる。過渡的なデータは、RAM(2146)に記憶することもできるが、恒久的なデータは、例えば内部大容量ストレージ(2147)に記憶することができる。CPU(2141)、GPU(2142)、大容量ストレージ(2147)、ROM(2145)、RAM(2146)などのうちの1つ以上と密接に関連付けることができるキャッシュメモリを使用して、任意のメモリデバイスに対する高速記憶及び検索を可能にすることができる。
コンピュータ可読媒体には、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものであってもよく、コンピュータソフトウェア分野の当業者によく知られている利用可能な種類のものであってもよい。
限定ではなく、あくまでも一例として、アーキテクチャ(2100)、具体的にはコア(2140)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ以上の有形のコンピュータ可読媒体に具体化されたソフトウェアを実行した結果として機能を提供することができる。このようなコンピュータ可読媒体は、以上で紹介したようにユーザがアクセス可能な大容量ストレージと、コア内部大容量ストレージ(2147)又はROM(2145)などの非一時的な性質を有するコア(2140)の特定のストレージとに関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶でき、コア(2140)によって実行することができる。コンピュータ可読媒体は、特定の需要に応じて、1つ以上のメモリデバイス又はチップを含み得る。ソフトウェアは、コア(2140)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(2146)に記憶されたデータ構造を定義するステップと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更するステップとを含む、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。加えて又は代替として、コンピュータシステムは、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行するためにソフトウェアの代わりに又はソフトウェアと共に動作することができる回路(例えば、アクセラレータ(2144))に配線されるか又は他の方法で具体化されたロジックの結果として機能を提供することができる。ソフトウェアへの参照は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ可読媒体への参照は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、又はその両方を含み得る。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
付録A:頭字語
JEM:joint exploration model(共同探索モデル)
VVC:versatile video coding(多用途ビデオコーディング)
BMS:benchmark set(ベンチマークセット)
MV:Motion Vector(動きベクトル)
HEVC:High Efficiency Video Coding(高効率ビデオコーディング)
SEI:Supplementary Enhancement Information(補助強化情報)
VUI:Video Usability Information(ビデオユーザビリティ情報)
GOP:Groups of Pictures(ピクチャ群)
TU:Transform Unit(変換ユニット)
PU:Prediction Unit(予測ユニット)
CTU:Coding Tree Unit(コーディングツリーユニット)
CTB:Coding Tree Block(コーディングツリーブロック)
PB:Prediction Block(予測ブロック)
HRD:Hypothetical Reference Decoder(仮想リファレンスデコーダ)
SNR:Signal Noise Ratio(信号対雑音比)
CPU:Central Processing Unit(中央処理装置)
GPU:Graphics Processing Unit(グラフィック処理装置)
CRT:Cathode Ray Tube(ブラウン管)
LCD:Liquid-Crystal Display(液晶ディスプレイ)
OLED:Organic Light-Emitting Diode(有機発光ダイオード)
CD:Compact Disc(コンパクトディスク)
DVD:Digital Video Disc(デジタルビデオディスク)
ROM:Read-Only Memory(リードオンリメモリ)
RAM:Random Access Memory(ランダムアクセスメモリ)
ASIC:Application-Specific Integrated Circuit(特定用途向け集積回路)
PLD:Programmable Logic Device(プログラマブルロジックデバイス)
LAN:Local Area Network(ローカルエリアネットワーク)
GSM:Global System for Mobile communication(移動通信用グローバルシステム)
LTE:Long-Term Evolution(長期的な進化)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
USB:Universal Serial Bus(ユニバーサルシリアルバス)
PCI:Peripheral Component Interconnect(ペリフェラルコンポーネントインターコネクト)
FPGA:Field Programmable Gate Arrays(フィールド・プログラマブル・ゲート・アレイ)
SSD:Solid-state Drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
CU:Coding Unit(コーディングユニット)
本開示は一部の例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更、置換、及び様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、開示の原理を具体化するため、その精神及び範囲内にある多数のシステム及び方法を考案することができることが理解されたい。