図4は、本開示のある実施形態による通信システム(400)の簡略化されたブロック図を示す。通信システム(400)は、たとえばネットワーク(450)を介して互いに通信することができる複数の端末装置を含む。たとえば、通信システム(400)は、ネットワーク(450)を介して相互接続された第1の対の端末装置(410)および(420)を含む。図4の例では、第1の対の端末装置(410)および(420)は、データの一方向伝送を実行する。たとえば、端末装置(410)は、ネットワーク(450)を介した他方の端末装置(420)への伝送のために、ビデオ・データ(たとえば、端末装置(410)によって捕捉されたビデオ・ピクチャーのストリーム)を符号化してもよい。エンコードされたビデオ・データは、一つまたは複数の符号化ビデオ・ビットストリームの形で伝送されることができる。端末装置(420)は、ネットワーク(450)から、符号化ビデオ・データを受信し、符号化ビデオ・データをデコードしてビデオ・ピクチャーを復元し、復元されたビデオ・データに従ってビデオ・ピクチャーを表示してもよい。一方向データ伝送は、メディア・サービス・アプリケーション等において一般的でありうる。
別の例では、通信システム(400)は、たとえばビデオ会議中に発生しうる符号化されたビデオ・データの双方向伝送を実行する第2の対の端末装置(430)および(440)を含む。データの双方向伝送のために、一例では、端末装置(430)および(440)の各端末装置は、ネットワーク(450)を介した、端末装置(430)および(440)のうちの他方の端末装置への伝送のために、ビデオ・データ(たとえば、端末装置によって捕捉されたビデオ・ピクチャーのストリーム)を符号化してもよい。端末装置(430)および(440)の各端末装置は、端末装置(430)および(440)のうちの他方の端末装置によって送信された符号化されたビデオ・データを受信してもよく、符号化されたビデオ・データをデコードして、ビデオ・ピクチャーを復元し、復元されたビデオ・データに従って、アクセス可能な表示装置においてビデオ・ピクチャーを表示してもよい。
図4の例では、端末装置(410)、(420)、(430)および(440)は、サーバー、パーソナルコンピュータおよびスマートフォンとして示されてもよいが、本開示の原理は、それに限定されなくてもよい。本開示の実施形態は、ラップトップ・コンピュータ、タブレット・コンピュータ、メディア・プレーヤー、および/または専用のビデオ会議設備での応用を見出す。ネットワーク(450)は、たとえば有線(ワイヤード)および/または無線〔ワイヤレス〕通信ネットワークを含む、端末装置(410)、(420)、(430)および(440)の間で符号化されたビデオ・データを伝達する任意の数のネットワークを表わす。通信ネットワーク(450)は、回線交換および/またはパケット交換チャネルにおいてデータを交換してもよい。代表的なネットワークは、遠隔通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。今の議論の目的のために、ネットワーク(450)のアーキテクチャーおよびトポロジーは、以下に説明しない限り、本開示の動作には重要ではないことがある。
図5は、開示される主題のためのアプリケーションの例として、ストリーミング環境におけるビデオ・エンコーダおよびビデオ・デコーダの配置を示す。開示される主題は、たとえば、ビデオ会議、デジタルTV、CD、DVD、メモリースティックなどを含むデジタル媒体上の圧縮ビデオの記憶などを含む、他のビデオ対応アプリケーションにも等しく適用可能でありうる。
ストリーミング・システムは、ビデオ源(501)、たとえばデジタル・カメラを含むことができ、たとえば非圧縮のビデオ・ピクチャーのストリーム(502)を生成する捕捉サブシステム(513)を含んでいてもよい。一例では、ビデオ・ピクチャーのストリーム(502)は、デジタル・カメラによって取り込まれたサンプルを含む。エンコードされたビデオ・データ(504)(または符号化されたビデオ・ビットストリーム)と比較した場合の高いデータ・ボリュームを強調するために太線として描かれているビデオ・ピクチャーのストリーム(502)は、ビデオ源(501)に結合されたビデオ・エンコーダ(503)を含む電子装置(520)によって処理されることができる。ビデオ・エンコーダ(503)は、以下により詳細に説明されるように、開示される主題の諸側面を可能にし、または実現するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオ・ピクチャーのストリーム(502)と比較した場合の、より低いデータ・ボリュームを強調するために細い線として描かれている、エンコードされたビデオ・データ(504)(またはエンコードされたビデオ・ビットストリーム(504))は、将来の使用のためにストリーミング・サーバー(505)に記憶されることができる。図5のクライアント・サブシステム(506)および(508)のような一つまたは複数のストリーミング・クライアント・サブシステムは、ストリーミング・サーバー(505)にアクセスして、エンコードされたビデオ・データ(504)のコピー(507)および(509)を取り出すことができる。クライアント・サブシステム(506)は、たとえば電子装置(530)内にビデオ・デコーダ(510)を含むことができる。ビデオ・デコーダ(510)は、エンコードされたビデオ・データの入来コピー(507)をデコードし、ディスプレイ(512)(たとえば表示画面)または他のレンダリング装置(図示せず)上にレンダリングできるビデオ・ピクチャーの出ていくストリーム(511)を生成する。いくつかのストリーミング・システムでは、エンコードされたビデオ・データ(504)、(507)、および(509)(たとえば、ビデオ・ビットストリーム)は、ある種のビデオ符号化/圧縮標準に従ってエンコードされることができる。これらの標準の例は、ITU-T勧告H.265を含む。一例では、開発中のビデオ符号化規格は、非公式に多用途ビデオ符号化(VVC)として知られている。開示される主題は、VVCの文脈で使用されてもよい。
電子装置(520)および(530)は、他の構成要素(図示せず)を含むことができることを注意しておく。たとえば、電子装置(520)は、ビデオ・デコーダ(図示せず)を含むことができ、電子装置(530)は、ビデオ・エンコーダ(図示せず)も含むことができる。
図6は、本開示のある実施形態によるビデオ・デコーダ(610)のブロック図を示す。ビデオ・デコーダ(610)は、電子装置(630)に含まれることができる。電子装置(630)は、受領器(631)(たとえば、受領回路)を含むことができる。ビデオ・デコーダ(610)は、図5の例におけるビデオ・デコーダ(510)の代わりに使用できる。
受領器(631)は、ビデオ・デコーダ(610)によってデコードされるべき一つまたは複数の符号化ビデオ・シーケンスを受領してもよい;同じまたは別の実施形態において、一度に1つの符号化ビデオ・シーケンスであり、各符号化ビデオ・シーケンスのデコードは、他の符号化ビデオ・シーケンスから独立である。符号化ビデオ・シーケンスは、チャネル(601)から受信されてもよく、該チャネルは、エンコードされたビデオ・データを記憶する記憶装置へのハードウェア/ソフトウェア・リンクであってもよい。受領器(631)は、エンコードされたビデオ・データを、他のデータ、たとえば符号化されたオーディオ・データおよび/または補助データ・ストリームと一緒に受領してもよく、これらのデータは、それぞれの使用エンティティ(図示せず)を転送されてもよい。受領器(631)は、符号化ビデオ・シーケンスを他のデータから分離することができる。ネットワーク・ジッタ対策として、バッファメモリ(615)が、受領器(631)とエントロピー・デコーダ/パーサー(620)(以下「パーサー」)との間に結合されてもよい。ある種のアプリケーションでは、バッファメモリ(615)はビデオ・デコーダ(610)の一部である。他のアプリケーションでは、ビデオ・デコーダ(610)の外部にあることができる(図示せず)。さらに他のアプリケーションでは、たとえばネットワーク・ジッタに対抗するために、ビデオ・デコーダ(610)の外部にバッファメモリ(図示せず)があってもよく、さらに、たとえば再生タイミングを扱うために、ビデオ・デコーダ(610)の内部に別のバッファメモリ(615)があってもよい。受領器(631)が、十分な帯域幅および制御可能性の記憶/転送装置から、またはアイソクロナス・ネットワークからデータを受領している場合は、バッファメモリ(615)は、必要とされなくてもよく、または小さくてもよい。インターネットのようなベストエフォート型のパケット・ネットワークでの使用のためには、バッファメモリ(615)が要求されることがあり、比較的大きいことがあり、有利には適応サイズであることができ、少なくとも部分的に、ビデオ・デコーダ(610)の外部でオペレーティング・システムまたは同様の要素(図示せず)において実装されてもよい。
ビデオ・デコーダ(610)は、符号化ビデオ・シーケンスからシンボル(621)を再構成するためのパーサー(620)を含んでいてもよい。これらのシンボルのカテゴリーは、ビデオ・デコーダ(610)の動作を管理するために使用される情報と、潜在的には、レンダー装置(612)(たとえば表示画面)のようなレンダリング装置を制御するための情報とを含む。レンダー装置は、図4に示されたように、電子装置(630)の一体的な部分ではなく、電子装置(630)に結合されることができる。レンダリング装置(単数または複数)のための制御情報は、補足向上情報(Supplementary Enhancement Information)(SEIメッセージ)またはビデオユーザビリティ情報(Video Usability Information、VUI)パラメータ・セット・フラグメント(図示せず)の形であってもよい。パーサー(620)は、受領された符号化ビデオ・シーケンスをパースする/エントロピー復号することができる。符号化ビデオ・シーケンスの符号化は、ビデオ符号化技術または標準に従うことができ、可変長符号化、ハフマン符号化、コンテキスト感受性ありまたはなしの算術符号化などを含む、さまざまな原理に従うことができる。パーサー(620)は、符号化ビデオ・シーケンスから、ビデオ・デコーダ内のピクセルのサブグループのうちの少なくとも1つについてのサブグループ・パラメータのセットを、グループに対応する少なくとも1つのパラメータに基づいて、抽出することができる。サブグループは、ピクチャーグループ(Group of Pictures、GOP)、ピクチャー、タイル、スライス、マクロブロック、符号化単位(Coding Unit、CU)、ブロック、変換単位(Transform Unit、TU)、予測単位(Prediction Unit、PU)などを含むことができる。パーサー(620)はまた、符号化ビデオ・シーケンスから、変換係数、量子化器パラメータ値、動きベクトル等の情報を抽出することができる。
パーサー(620)は、バッファメモリ(615)から受領されたビデオ・シーケンスに対してエントロピー復号/パース動作を実行し、それによりシンボル(621)を生成することができる。
シンボル(621)の再構成は、符号化されたビデオ・ピクチャーまたはその諸部分のタイプ(たとえば、インターおよびイントラ・ピクチャー、インターおよびイントラ・ブロック)および他の要因に依存して、複数の異なるユニットに関わることができる。どのユニットがどのように関わるかは、符号化ビデオ・シーケンスからパーサー(620)によってパースされたサブグループ制御情報によって制御されることができる。パーサー(620)と下記の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確のため、描かれていない。
すでに述べた機能ブロックのほかに、ビデオ・デコーダ(610)は、以下に説明するように、概念的に、いくつかの機能ユニットに分割できる。商業的制約の下で機能する実際的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることができる。しかしながら、開示される主題を記述する目的のためには、下記の機能単位への概念的な細分が適切である。
第1のユニットは、スケーラー/逆変換ユニット(651)である。スケーラー/逆変換ユニット(651)は、パーサー(620)から、量子化された変換係数および制御情報をシンボル(単数または複数)(621)として受領する。制御情報は、どの変換を使用するか、ブロック・サイズ、量子化因子、量子化スケーリング行列などを含む。スケーラー/逆変換ユニット(651)は、集計器(655)に入力できるサンプル値を含むブロックを出力することができる。
場合によっては、スケーラー/逆変換(651)の出力サンプルは、イントラ符号化されたブロック、すなわち、以前に再構成されたピクチャーからの予測情報を使用していないが、現在ピクチャーの、以前に再構成された部分からの予測情報を使用することができるブロックに関することができる。そのような予測情報は、イントラ・ピクチャー予測ユニット(652)によって提供されることができる。場合によっては、イントラ・ピクチャー予測ユニット(652)は、現在ピクチャー・バッファ(658)から取ってきた、周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在ピクチャー・バッファ(658)は、たとえば、部分的に再構成された現在ピクチャーおよび/または完全に再構成された現在ピクチャーをバッファリングする。集計器(655)は、場合によっては、サンプル毎に、イントラ予測ユニット(652)が生成した予測情報を、スケーラー/逆変換ユニット(651)によって提供される出力サンプル情報に加算する。
他の場合には、スケーラー/逆変換ユニット(651)の出力サンプルは、インター符号化され、潜在的には動き補償されたブロックに関することができる。そのような場合、動き補償予測ユニット(653)は、予測のために使用されるサンプルを取ってくるために参照ピクチャー・メモリ(657)にアクセスすることができる。取ってきたサンプルを、ブロックに関するシンボル(621)に従って動き補償した後、これらのサンプルは、集計器(655)によってスケーラー/逆変換ユニットの出力(この場合、残差サンプルまたは残差信号と呼ばれる)に加算されて、それにより出力サンプル情報を生成することができる。動き補償ユニット(653)が予測サンプルを取ってくる参照ピクチャー・メモリ(657)内のアドレスは、シンボル(621)の形で動き補償ユニット(653)に利用可能な動きベクトルによって制御できる。該シンボルは、たとえばX、Y、および参照ピクチャー成分を有することができる。動き補償は、サンプル以下の正確な動きベクトルが使用されるときの参照ピクチャー・メモリ(657)から取ってこられるサンプル値の補間、動きベクトル予測機構などを含むことができる。
集計器(655)の出力サンプルは、ループ・フィルタ・ユニット(656)内でさまざまなループ・フィルタリング技法にかけられることができる。ビデオ圧縮技術は、ループ内フィルタ技術を含むことができる。ループ内フィルタ技術は、符号化ビデオ・シーケンス(符号化されたビデオ・ビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサー(620)からのシンボル(621)としてループ・フィルタ・ユニット(656)に利用可能にされるが、符号化されたピクチャーまたは符号化されたビデオ・シーケンスの(デコード順で)前の部分のデコード中に得られたメタ情報に応答するとともに、以前に再構成されループ・フィルタリングされたサンプル値に応答することもできる。
ループ・フィルタ・ユニット(656)の出力はサンプル・ストリームであることができ、これは、レンダー装置(612)に出力されることができ、また将来のインターピクチャー予測において使用するために参照ピクチャー・メモリ(657)に記憶されることができる。
符号化された画像は、いったん完全に再構成されると、将来の予測のための参照ピクチャーとして使用できる。たとえば、現在ピクチャーに対応する符号化されたピクチャーが完全に再構成され、該符号化されたピクチャーが(たとえば、パーサー(620)によって)参照ピクチャーとして同定されると、現在ピクチャー・バッファ(658)は参照ピクチャーメモリ(657)の一部となることができ、後続の符号化されたピクチャーの再構成を開始する前に、新鮮な現在ピクチャー・バッファが再割当てされることができる。
ビデオ・デコーダ(610)は、ITU-T勧告H.265のような標準における所定のビデオ圧縮技術に従ってデコード動作を実行することができる。符号化ビデオ・シーケンスはビデオ圧縮技術または標準のシンタックスおよびビデオ圧縮技術または標準において文書化されているプロファイルに従うという意味で、符号化されたビデオ・シーケンスは、使用されているビデオ圧縮技術または標準によって規定されたシンタックスに準拠することができる。具体的には、プロファイルはビデオ圧縮技術または標準において利用可能なすべてのツールから、そのプロファイルのもとでの使用のためにそれだけが利用可能なツールとして、ある種のツールを選択することができる。準拠のためにはまた、符号化ビデオ・シーケンスの複雑さが、ビデオ圧縮技術または標準のレベルによって定義される範囲内にあることも必要であることがある。いくつかの場合には、レベルは、最大ピクチャー・サイズ、最大フレーム・レート、最大再構成サンプル・レート(たとえば、毎秒メガサンプルの単位で測られる)、最大参照ピクチャー・サイズなどを制約する。レベルによって設定された限界は、場合によっては、符号化ビデオ・シーケンスにおいて信号伝達される、HRDバッファ管理のための仮設参照デコーダ(Hypothetical Reference Decoder、HRD)仕様およびメタデータを通じてさらに制約されることができる。
ある実施形態において、受領器(631)は、エンコードされたビデオとともに追加の(冗長な)データを受領してもよい。追加データは、符号化されたビデオ・シーケンス(単数または複数)の一部として含まれていてもよい。追加データは、データを適正にデコードするため、および/またはもとのビデオ・データをより正確に再構成するために、ビデオ・デコーダ(610)によって使用されてもよい。追加データは、たとえば、時間的、空間的、または信号対雑音比(SNR)の向上層、冗長スライス、冗長ピクチャー、前方誤り訂正符号などの形でありうる。
図7は、本開示のある実施形態によるビデオ・エンコーダ(703)のブロック図を示している。ビデオ・エンコーダ(703)は、電子装置(720)に含まれる。電子装置(720)は、送信器(740)(たとえば、送信回路)を含む。ビデオ・エンコーダ(703)は、図5の例におけるビデオ・エンコーダ(503)の代わりに使用できる。
ビデオ・エンコーダ(703)は、ビデオ・エンコーダ(703)によって符号化されるべきビデオ画像を捕捉することができるビデオ源(701)(これは図7の例では電子装置(720)の一部ではない)からビデオ・サンプルを受領することができる。別の例では、ビデオ源(701)は、電子装置(720)の一部である。
ビデオ源(701)は、任意の好適なビット深さ(たとえば、8ビット、10ビット、12ビット、…)、任意の色空間(たとえば、BT.601 YCrCB、RGB、…)および任意の好適なサンプリング構造(たとえば、YCrCb 4:2:0、YCrCb 4:4:4)でありうるデジタル・ビデオ・サンプル・ストリームの形で、ビデオ・エンコーダ(703)によって符号化されるべき源ビデオ・シーケンスを提供することができる。メディア・サービス・システムにおいては、ビデオ源(701)は、事前に準備されたビデオを記憶している記憶装置であってもよい。ビデオ会議システムにおいては、ビデオ源(701)は、ローカルでの画像情報をビデオ・シーケンスとして捕捉するカメラであってもよい。ビデオ・データは、シーケンスで見たときに動きを付与する複数の個々のピクチャーとして提供されてもよい。ピクチャー自体は、ピクセルの空間的アレイとして編成されてもよく、各ピクセルは、使用中のサンプリング構造、色空間などに依存して、一つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。下記の説明は、サンプルに焦点を当てる。
ある実施形態によれば、ビデオ・エンコーダ(703)は、源ビデオ・シーケンスのピクチャーを、リアルタイムで、またはアプリケーションによって要求される任意の他の時間的制約の下で、符号化および圧縮して、符号化ビデオ・シーケンス(743)にすることができる。適切な符号化速度を施行することは、コントローラ(750)の一つの機能である。いくつかの実施形態では、コントローラ(750)は、以下に記載されるような他の機能ユニットを制御し、該他の機能ユニットに機能的に結合される。かかる結合は、明確のために描かれていない。コントローラ(750)によって設定されるパラメータは、レート制御に関連するパラメータ(ピクチャー・スキップ、量子化器、レート‐歪み最適化技法のラムダ値、…)、ピクチャー・サイズ、ピクチャーグループ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(750)は、ある種のシステム設計のために最適化されたビデオ・エンコーダ(703)に関する他の好適な機能を有するように構成できる。
いくつかの実施形態では、ビデオ・エンコーダ(703)は、符号化ループにおいて動作するように構成される。思い切って単純化した説明として、一例では、符号化ループは、源符号化器(730)(たとえば、符号化されるべき入力ピクチャーと参照ピクチャー(算数または複数)に基づいてシンボル・ストリームのようなシンボルを生成することを受け持つ)と、ビデオ・エンコーダ(703)に埋め込まれた(ローカル)デコーダ(733)とを含むことができる。デコーダ(733)は、(リモートの)デコーダも生成するであろうのと同様の仕方でサンプル・データを生成するよう前記シンボルを再構成する(開示される主題において考慮されるビデオ圧縮技術では、シンボルと符号化ビデオ・ビットストリームとの間のどの圧縮も無損失である)。再構成されたサンプル・ストリーム(サンプル・データ)は、参照ピクチャー・メモリ(734)に入力される。シンボル・ストリームのデコードは、デコーダ位置(ローカルかリモートか)によらずビット正確な結果をもたらすので、参照ピクチャー・メモリ(734)の内容もローカル・エンコーダとリモート・エンコーダの間でビット正確である。言い換えると、エンコーダの予測部は、デコーダがデコード中に予測を使用するときに「見る」のとまったく同じサンプル値を参照ピクチャー・サンプルとして「見る」。参照ピクチャー同期性のこの基本原理(および、たとえば、チャネルエラーのために同期性が維持できない場合の結果として生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(733)の動作は、図6との関連ですでに上記で詳細に述べた「リモート」デコーダ、たとえばビデオ・デコーダ(610)の動作と同じであってよい。しかしながら、暫時図6も参照すると、シンボルが利用可能であり、エントロピー符号化器(745)およびパーサー(620)による、シンボルの符号化ビデオ・シーケンスへのエンコード/デコードが可逆でありうるので、バッファメモリ(615)およびパーサー(620)を含むビデオ・デコーダ(410)のエントロピー復号部は、ローカル・デコーダ(733)においては完全には実装されなくてもよい。
この時点で行なうことができる観察は、デコーダ内に存在するパース/エントロピー復号を除くどのデコーダ技術も、対応するエンコーダ内で実質的に同一の機能的形態で存在する必要があることである。このため、開示される主題はデコーダ動作に焦点を当てる。エンコーダ技術の記述は、包括的に記述されるデコーダ技術の逆であるため、短縮することができる。ある種の領域においてのみ、より詳細な説明が必要であり、以下に提供される。
動作中、いくつかの例では、源符号化器(730)は、「参照ピクチャー」として指定された、ビデオ・シーケンスからの一つまたは複数の以前に符号化されたピクチャーを参照して、入力ピクチャーを予測的に符号化する、動き補償された予測符号化を実行することができる。このようにして、符号化エンジン(732)は、入力ピクチャーのピクセル・ブロックと、入力ピクチャーに対する予測参照として選択されうる参照ピクチャー(単数または複数)のピクセル・ブロックとの間の差分を符号化する。
ローカル・ビデオ・デコーダ(733)は、源符号化器(730)によって生成されたシンボルに基づいて、参照ピクチャーとして指定されうるピクチャーの符号化されたビデオ・データをデコードすることができる。符号化エンジン(732)の動作は、有利には、損失のあるプロセスでありうる。符号化されたビデオ・データがビデオ・デコーダ(図7には示さず)でデコードされうるとき、再構成されたビデオ・シーケンスは、典型的には、いくつかのエラーを伴う源ビデオ・シーケンスの複製でありうる。ローカル・ビデオ・デコーダ(733)は、ビデオ・デコーダによって参照ピクチャーに対して実行されうるデコード・プロセスを複製し、再構成された参照ピクチャーを参照ピクチャー・キャッシュ(734)に格納させることができる。このようにして、ビデオ・エンコーダ(703)は、遠端のビデオ・デコーダによって得られるであろう再構成された参照ピクチャーとしての共通の内容を(伝送エラーがなければ)有する再構成された参照ピクチャーのコピーを、ローカルに記憶することができる。
予測器(735)は、符号化エンジン(732)について予測探索を実行することができる。すなわち、符号化されるべき新しいピクチャーについて、予測器(735)は、新しいピクチャーのための適切な予測参照のはたらきをしうるサンプル・データ(候補参照ピクセル・ブロックとして)またはある種のメタデータ、たとえば参照ピクチャー動きベクトル、ブロック形状などを求めて、参照ピクチャー・メモリ(734)を探索することができる。予測器(735)は、適切な予測参照を見出すために、サンプル・ブロック/ピクセル・ブロック毎に(on a sample block-by-pixel block basis)動作しうる。場合によっては、予測器(735)によって得られた検索結果によって決定されるところにより、入力ピクチャーは、参照ピクチャー・メモリ(734)に記憶された複数の参照ピクチャーから引き出された予測参照を有することができる。
コントローラ(750)は、たとえば、ビデオ・データをエンコードするために使用されるパラメータおよびサブグループ・パラメータの設定を含め、源符号化器(730)の符号化動作を管理してもよい。
上記の機能ユニットすべての出力は、エントロピー符号化器(745)におけるエントロピー符号化を受けることができる。エントロピー符号化器(745)は、ハフマン符号化、可変長符号化、算術符号化などといった技術に従ってシンボルを無損失圧縮することによって、さまざまな機能ユニットによって生成されたシンボルを符号化ビデオ・シーケンスに変換する。
送信器(740)は、エントロピー符号化器(745)によって生成される符号化ビデオ・シーケンスをバッファに入れて、通信チャネル(760)を介した送信のために準備することができる。通信チャネル(760)は、エンコードされたビデオ・データを記憶する記憶装置へのハードウェア/ソフトウェア・リンクであってもよい。送信器(740)は、ビデオ符号化器(730)からの符号化されたビデオ・データを、送信されるべき他のデータ、たとえば符号化されたオーディオ・データおよび/または補助データ・ストリーム(源は図示せず)とマージすることができる。
コントローラ(750)は、ビデオ・エンコーダ(703)の動作を管理してもよい。符号化の間、コントローラ(750)は、それぞれの符号化されたピクチャーに、ある符号化ピクチャー・タイプを割り当てることができる。符号化ピクチャー・タイプは、それぞれのピクチャーに適用されうる符号化技術に影響しうる。たとえば、ピクチャーはしばしば、以下のピクチャー・タイプのうちの1つとして割り当てられることがある。
イントラピクチャー(Iピクチャー)は、予測の源としてシーケンス内の他のピクチャーを使用せずに、符号化され、デコードされうるものでありうる。いくつかのビデオ・コーデックは、たとえば、独立デコーダ・リフレッシュ(Independent Decoder Refresh、「IDR」)・ピクチャーを含む、異なるタイプのイントラ・ピクチャーを許容する。当業者は、Iピクチャーのこれらの変形、ならびにそれらのそれぞれの用途および特徴を認識する。
予測ピクチャー(Pピクチャー)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを用いるイントラ予測またはインター予測を用いて符号化およびデコードされうるものでありうる。
双方向予測ピクチャー(Bピクチャー)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを用いるイントラ予測またはインター予測を用いて符号化およびデコードされうるものでありうる。同様に、マルチ予測ピクチャーは、単一のブロックの再構成のために、3つ以上の参照ピクチャーおよび関連するメタデータを使用することができる。
源ピクチャーは、普通、空間的に複数のサンプル・ブロック(たとえば、それぞれ4×4、8×8、4×8、または16×16サンプルのブロック)に分割され、ブロック毎に符号化されうる。ブロックは、ブロックのそれぞれのピクチャーに適用される符号化割り当てによって決定されるところにより、他の(すでに符号化された)ブロックを参照して予測的に符号化されうる。たとえば、Iピクチャーのブロックは、非予測的に符号化されてもよく、または、同じピクチャーのすでに符号化されたブロックを参照して予測的に符号化されてもよい(空間的予測またはイントラ予測)。Pピクチャーのピクセル・ブロックは、以前に符号化された一つの参照ピクチャーを参照して、空間的予測を介してまたは時間的予測を介して予測的に符号化されてもよい。Bピクチャーのブロックは、1つまたは2つの以前に符号化された参照ピクチャーを参照して、空間的予測を介して、または時間的予測を介して予測的に符号化されてもよい。
ビデオ・エンコーダ(703)は、ITU-T勧告H.265などの所定のビデオ符号化技術または標準に従って符号化動作を実行することができる。その動作において、ビデオ・エンコーダ(703)は、入力ビデオ・シーケンスにおける時間的および空間的冗長性を活用する予測符号化動作を含む、さまざまな圧縮動作を実行することができる。よって、符号化されたビデオ・データは、使用されるビデオ符号化技術または標準によって指定されるシンタックスに準拠しうる。
ある実施形態において、送信器(740)は、エンコードされたビデオと一緒に追加データを送信してもよい。源符号化器(730)は、符号化ビデオ・シーケンスの一部としてそのようなデータを含めてもよい。追加データは、時間的/空間的/SNR向上層、冗長ピクチャーおよびスライスのような他の形の冗長データ、SEIメッセージ、VUIパラメータ・セット・フラグメントなどを含んでいてもよい。
ビデオは、時間的シーケンスにおいて複数の源ピクチャー(ビデオ・ピクチャー)として捕捉されてもよい。ピクチャー内予測(しばしば、イントラ予測と略される)は、所与のピクチャーにおける空間的相関を利用し、ピクチャー間予測は、ピクチャー間の(時間的または他の)相関を利用する。一例では、現在ピクチャーと呼ばれるエンコード/デコード対象の特定のピクチャーは、ブロックに分割される。現在ピクチャー内のブロックが、ビデオにおける、前に符号化され、かつ、まだバッファに入れられている参照ピクチャー内の参照ブロックに類似する場合、現在ピクチャー内のそのブロックは、動きベクトルと呼ばれるベクトルによって符号化できる。動きベクトルは、参照ピクチャー内の参照ブロックをポイントし、複数の参照ピクチャーが使用される場合には、参照ピクチャーを同定する第3の次元を有することができる。
いくつかの実施形態において、ピクチャー間予測において双予測技術が使用できる。双予測技術によれば、いずれもビデオにおいて現在ピクチャーよりデコード順で先行する(ただし、表示順では、それぞれ過去および将来であってもよい)第1の参照ピクチャーおよび第2の参照ピクチャーのような2つの参照ピクチャーが使用される。現在ピクチャー内のブロックは、第1の参照ピクチャー内の第1の参照ブロックをポイントする第1動きベクトルと、第2の参照ピクチャー内の第2の参照ブロックをポイントする第2動きベクトルとによって符号化できる。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測できる。
さらに、符号化効率を改善するために、ピクチャー間予測においてマージモード技法が使用できる。
本開示のいくつかの実施形態によれば、ピクチャー間予測およびピクチャー内予測などの予測は、ブロックの単位で実行される。たとえば、HEVC規格によれば、ビデオ・ピクチャーのシーケンスにおけるピクチャーは、圧縮のために符号化ツリー単位(CTU)に分割され、ピクチャーにおけるそれらのCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは、1つのルーマCTBおよび2つのクロマCTBである3つの符号化ツリーブロック(CTB)を含む。各CTUは、再帰的に、一つまたは複数の符号化単位(CU)に四分木分割されていくことができる。たとえば、64×64ピクセルのCTUは、64×64ピクセルの1つのCU、または32×32ピクセルの4つのCU、または16×16ピクセルの16個のCUに分割されることができる。一例では、各CUは、インター予測タイプまたはイントラ予測タイプのような、そのCUについての予測タイプを決定するために解析される。CUは時間的および/または空間的予測可能性に依存して、一つまたは複数の予測単位(PU)に分割される。一般に、各PUはルーマ予測ブロック(PB)および2つのクロマPBを含む。ある実施形態では、符号化(エンコード/デコード)における予測動作は、予測ブロックの単位で実行される。予測ブロックの例としてルーマ予測ブロックを用いると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなど、ピクセルについての値(たとえば、ルーマ値)の行列を含む。
図8は、本開示の別の実施形態によるビデオ・エンコーダ(803)の図を示す。ビデオ・エンコーダ(803)は、ビデオ・ピクチャーのシーケンス内の現在ビデオ・ピクチャー内のサンプル値の処理ブロック(たとえば、予測ブロック)を受領し、処理ブロックを、符号化ビデオ・シーケンスの一部である符号化されたピクチャーにエンコードするように構成される。一例では、ビデオ・エンコーダ(803)は、図5の例におけるビデオ・エンコーダ(503)の代わりに使用される。
HEVCの例では、ビデオ・エンコーダ(803)は、8×8サンプルなどの予測ブロックのような処理ブロックについてサンプル値の行列を受領する。ビデオ・エンコーダ(803)は、処理ブロックが、イントラモード、インターモード、または双予測モードのどれを使用して、最もよく符号化されるかを、たとえばレート‐歪み最適化を使用して、判別する。処理ブロックがイントラモードで符号化される場合、ビデオ・エンコーダ(803)は、処理ブロックを符号化されたピクチャーにエンコードするためにイントラ予測技法を使用してもよく;処理ブロックがインターモードまたは双予測モードで符号化される場合、ビデオ・エンコーダ(803)は、処理ブロックを符号化されたピクチャーにエンコードするために、それぞれ、インター予測技法または双予測技法を使用してもよい。ある種のビデオ符号化技術では、マージモード(merge mode)は、動きベクトルが一つまたは複数の動きベクトル予測子から導出されるが前記予測子の外の符号化された動きベクトル成分の利益のない、ピクチャー間予測サブモードでありうる。ある種の他のビデオ符号化技術では、対象ブロックに適用可能な動きベクトル成分が存在してもよい。一例では、ビデオ・エンコーダ(803)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他のコンポーネントを含む。
図8の例では、ビデオ・エンコーダ(803)は、インター・エンコーダ(830)、イントラ・エンコーダ(822)、残差計算器(823)、スイッチ(826)、残差エンコーダ(824)、全般コントローラ(821)、およびエントロピー符号化器(825)を、図8に示されるように一緒に結合されて含む。
インター・エンコーダ(830)は、現在ブロック(たとえば、処理ブロック)のサンプルを受領し、該ブロックを参照ピクチャー内の一つまたは複数の参照ブロック(たとえば、以前のピクチャーおよび後のピクチャー内のブロック)と比較し、インター予測情報(たとえば、インター・エンコード技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、該インター予測情報に基づいて、任意の好適な技法を使用してインター予測結果(たとえば、予測されたブロック)を計算するように構成される。いくつかの例では、前記参照ピクチャーは、エンコードされたビデオ情報に基づいてデコードされた、デコードされた参照ピクチャーである。
イントラ・エンコーダ(822)は、現在ブロック(たとえば、処理ブロック)のサンプルを受領し、場合によっては、該ブロックを、同じピクチャー内ですでに符号化されているブロックと比較し、変換後に量子化された係数を生成し、場合によっては、イントラ予測情報(たとえば、一つまたは複数のイントラ・エンコード技法によるイントラ予測方向情報)も生成するように構成される。一例では、イントラ・エンコーダ(822)はまた、該イントラ予測情報および同じピクチャー内の参照ブロックに基づいて、イントラ予測結果(たとえば、予測されたブロック)を計算する。
全般コントローラ(821)は、全般制御データを決定し、全般制御データに基づいてビデオ・エンコーダ(803)の他のコンポーネントを制御するように構成される。一例では、全般コントローラ(821)は、ブロックのモードを決定し、そのモードに基づいて制御信号をスイッチ(826)に提供する。たとえば、モードがイントラモードである場合、全般コントローラ(821)は、残差計算器(823)による使用のためにイントラモードの結果を選択するようスイッチ(826)を制御し、イントラ予測情報を選択し、イントラ予測情報をビットストリームに含めるようエントロピー・エンコーダ(825)を制御する;モードがインターモードである場合、全般コントローラ(821)は、残差計算器(823)による使用のためにインター予測の結果を選択するようスイッチ(826)を制御し、インター予測情報を選択し、インター予測情報をビットストリームに含めるようエントロピー・エンコーダ(825)を制御する。
残差計算器(823)は、受領されたブロックと、イントラ・エンコーダ(822)またはインター・エンコーダ(830)から選択された予測結果との差(残差データ)を計算するように構成される。残差エンコーダ(824)は、残差データに基づいて、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(824)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化処理にかけられ、量子化された変換係数を得る。さまざまな実施形態において、ビデオ・エンコーダ(803)は、残差デコーダ(828)をも含む。残差デコーダ(828)は、逆変換を実行して、デコードされた残差データを生成するように構成される。デコードされた残差データは、イントラ・エンコーダ(822)およびインター・エンコーダ(830)によって好適に使用されることができる。たとえば、インター・エンコーダ(830)は、デコードされた残差データおよびインター予測情報に基づいて、デコードされたブロックを生成することができ、イントラ・エンコーダ(822)は、デコードされた残差データおよびイントラ予測情報に基づいて、デコードされたブロックを生成することができる。デコードされたブロックは、デコードされたピクチャーを生成するために好適に処理され、デコードされたピクチャーは、メモリ回路(図示せず)内でバッファリングされ、いくつかの例では参照ピクチャーとして使用されることができる。
エントロピー・エンコーダ(825)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピー・エンコーダ(825)は、HEVC標準のような好適な標準に従ってさまざまな情報を含めるように構成される。一例では、エントロピー・エンコーダ(825)は、全般制御データ、選択された予測情報(たとえば、イントラ予測情報またはインター予測情報)、残差情報、および他の好適な情報をビットストリーム内に含めるように構成される。開示される主題によれば、インターモードまたは双予測モードのいずれかのマージ・サブモードにおいてブロックを符号化する場合は、残差情報は存在しないことを注意しておく。
図9は、本開示の別の実施形態によるビデオ・デコーダ(910)の図を示す。ビデオ・デコーダ(910)は、符号化されたビデオ・シーケンスの一部である符号化されたピクチャーを受領し、符号化されたピクチャーをデコードして、再構成されたピクチャーを生成するように構成される。一例では、ビデオ・デコーダ(910)は、図5の例におけるビデオ・デコーダ(510)の代わりに使用される。
図9の例では、ビデオ・デコーダ(910)は、エントロピー・デコーダ(971)、インター・デコーダ(980)、残差デコーダ(973)、再構成モジュール(974)、およびイントラ・デコーダ(972)が図9に示されるように一緒に結合されたものを含む。
エントロピー・デコーダ(971)は、符号化されたピクチャーから、その符号化されたピクチャーが構成されるシンタックス要素を表わすある種のシンボルを再構成するように構成されることができる。そのようなシンボルは、たとえば、ブロックが符号化されるモード(たとえば、イントラモード、インターモード、双予測モード、マージ・サブモードまたは別のサブモードにおける後者の2つ)、イントラ・デコーダ(972)またはインター・デコーダ(980)によってそれぞれ予測のために使用されるある種のサンプルまたはメタデータを同定することができる予測情報(たとえば、イントラ予測情報またはインター予測情報など)、たとえば量子化された変換係数の形の残差情報などを含むことができる。一例では、予測モードがインターまたは双予測モードである場合、インター予測情報がインター・デコーダ(980)に提供され;予測タイプがイントラ予測タイプである場合には、イントラ予測情報がイントラ・デコーダ(972)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(973)に提供される。
インター・デコーダ(980)は、インター予測情報を受領し、該インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラ・デコーダ(972)は、イントラ予測情報を受領し、該イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(973)は、逆量子化を実行して量子化解除された変換係数を抽出し、量子化解除された変換係数を処理して、残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(973)はまた、ある種の制御情報(量子化器パラメータ(QP)を含む)をも必要とすることがあり、その情報は、エントロピー・デコーダ(971)によって提供されてもよい(これは、低ボリュームの制御情報のみであるため、データ経路は描かれていない)。
再構成モジュール(974)は、空間領域において、残差デコーダ(973)によって出力される残差と、予測結果(場合に応じてイントラまたはインター予測モジュールによって出力される)とを組み合わせて、再構成されたブロックを形成するように構成され、該再構成されたブロックは再構成されたピクチャーの一部であってもよく、該再構成されたピクチャーは再構成されたビデオの一部であってもよい。視覚的品質を改善するためにブロッキング解除動作などの他の好適な動作が実行されることができることを注意しておく。
なお、ビデオ・エンコーダ(503)、(703)、(803)、およびビデオ・デコーダ(510)、(610)、(810)は、任意の好適な技法を用いて実装できる。ある実施形態では、ビデオ・エンコーダ(503)、(703)、(803)およびビデオ・デコーダ(510)、(610)、(910)は、一つまたは複数の集積回路を使用して実装できる。別の実施形態では、ビデオ・エンコーダ(503)、(703)、(803)、およびビデオ・デコーダ(510)、(610)、(910)は、ソフトウェア命令を実行する一つまたは複数のプロセッサを使用して実装できる。
本開示の諸側面は、イントラピクチャーブロック補償のためのエンコード/デコード技術、特に、柔軟な符号化順によるイントラピクチャーブロック補償のための参照探索範囲利用可能性を決定するための技術を提供する。
ブロックベースの補償は、インター予測およびイントラ予測のために使用できる。インター予測については、異なるピクチャーからのブロックベースの補償は、動き補償として知られている。イントラ予測についても、ブロックベースの補償は、同じピクチャー内の以前に再構成された領域から行うことができる。同じピクチャー内の再構成された領域からのブロックベースの補償は、イントラピクチャーブロック補償、現在ピクチャー参照(current picture referencing、CPR)、またはイントラブロックコピー(intra block copy、IBC)と呼ばれる。同じピクチャー内の現在ブロックと参照ブロックとの間のオフセットを示す変位ベクトルをブロック・ベクトル(または略してBV)と呼ぶ。任意の値(xまたはy方向どちらも正または負)でありうる動き補償における動きベクトルとは異なり、ブロック・ベクトルは、参照ブロックが利用可能であり、かつすでに再構成されていることを保証するために、いくつかの制約条件を有する。また、いくつかの例では、並列処理のための配慮で、タイル境界または波面はしご形境界である何らかの参照領域は除外される。
ブロック・ベクトルの符号化は、明示的であっても暗黙的であってもよい。明示的モード(またはインター符号化では先進動きベクトル予測(advanced motion vector prediction、AMVP)モードと呼ばれる)では、ブロック・ベクトルとその予測子との間の差分が信号伝達され、暗黙的モードでは、ブロック・ベクトルは、マージモードでの動きベクトルと同様に、予測子(ブロック・ベクトル予測子と呼ばれる)から復元される。ブロック・ベクトルの分解能は、いくつかの実装では整数位置に制約される。他のシステムではブロック・ベクトルが端数位置を指すことが許容される。
いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグと呼ばれるブロックレベルフラグを使用して信号伝達されることができる。ある実施形態では、IBCフラグは、現在ブロックがマージモードで符号化されていない場合に信号伝達される。他の例では、ブロックレベルでのイントラブロックコピーの使用は、参照インデックス・アプローチによって信号伝達される。デコード中の現在ピクチャーは、参照ピクチャーとして扱われる。一例では、そのような参照ピクチャーは参照ピクチャーのリストの最後の位置に置かれる。この特別な参照ピクチャーは、デコードピクチャーバッファ(decoded picture buffer、DPB)のようなバッファ内の他の時間的な参照ピクチャーとも一緒に管理される。
また、イントラブロックコピーには、反転イントラブロックコピー(参照ブロックが、現在ブロックを予測するために使用される前に、水平または垂直方向に反転される)や、ラインベースのイントラブロックコピー(M×N符号化ブロック内の各補償単位が、M×1または1×Nラインである)など、いくつかの変形がある。
図10は、本開示のある実施形態によるイントラブロックコピーの例を示す。現在ピクチャー(1000)がデコード中である。現在ピクチャー(1000)は、再構成された領域(1010)(網点付きの領域)およびデコードされるべき領域(1020)(白の領域)を含む。現在ブロック(1030)が、デコーダによって再構成されているところである。現在ブロック(1030)は、再構成された領域(1010)内にある参照ブロック(1040)から再構成されることができる。参照ブロック(1040)と現在ブロック(1030)との間の位置オフセットは、ブロック・ベクトル(1050)(またはBV(1050))と呼ばれる。
いくつかの例(たとえば、VVC)では、イントラブロックコピー・モードの探索範囲は、現在のCTU内にあるように制約される。すると、イントラブロックコピー・モードのための参照サンプルを格納するためのメモリ所要量は、1つの(最大の)CTUサイズぶんのサンプルである。一例では、(最大の)CTUのサイズは128×128サンプルである。CTUは、いくつかの例では、それぞれ64×64サンプルのサイズを有する4つのブロック領域に分割される。よって、いくつかの実施形態では、全メモリ(たとえば、主記憶よりも速いアクセス速度をもつキャッシュメモリ)は、128×128のサイズのサンプルを記憶することができ、全メモリは、64×64領域のような、現在ブロックにおける再構成されたサンプルを記憶するための既存の参照サンプル・メモリ部分と、64×64のサイズの他の3つの領域のサンプルを記憶するための追加メモリ部分とを含む。このように、いくつかの例では、イントラブロックコピー・モードの有効探索範囲は、参照ピクセルを記憶するための総メモリ所用量が不変に保たれるまま(たとえば、1 CTUサイズ、つまり全部で64×64の参照サンプル・メモリの4倍)、左側CTUの一部に拡張される。
いくつかの実施形態では、左側CTUからの記憶されている参照サンプルを、現在のCTUからの再構成されたサンプルに更新する更新プロセスが実行される。具体的には、いくつかの例では、更新プロセスは64×64ルーマ・サンプル・ベースで行われる。ある実施形態では、CTUサイズ・メモリ内の4つの64×64ブロック領域のそれぞれについて、左側CTUからの領域内の参照サンプルが、CPRモードで現在のCTU内の符号化ブロックを予測するために使用できる。これは、現在CTUの同じ領域内のブロックのいずれかが符号化中になるか、または符号化され終わるまで続く。
図11A~11Dは、本開示のある実施形態による、イントラブロックコピー・モードについての有効探索範囲の例を示す。いくつかの例では、エンコーダ/デコーダは、128×128サンプルのような1つのCTUのサンプルを格納することができ、参照サンプル・メモリと称することができるキャッシュメモリを含む。いくつかの実施形態では、参照サンプル・メモリは、ブロック領域の単位に基づいて更新される。CTUは、複数のブロック領域を含むことができる。ブロック領域の再構成の前に、ブロック領域の再構成されたサンプルを格納するために、参照サンプル・メモリ内のメモリ空間が割り当てられ、リセットされる。図11A~11Dの例では、予測のためのブロック領域は、64×64サンプルのサイズを有する。これらの例は、他の好適なサイズのブロック領域のために好適に修正されることができることに留意されたい。
図11A~11Dのそれぞれは、現在のCTU(1120)および現在のCTU(1110)のすぐ左側のCTU(以下、「左側CTU」)を示している。左側CTU(1110)は、4つのブロック領域(1111)~(1114)を含み、各ブロック領域は、64×64サンプルのサンプルサイズを有する。現在のCTU(1120)は、4つのブロック領域(1121)~(1124)を含み、各ブロック領域は、64×64サンプルのサンプルサイズを有する。現在のCTU(1120)は、再構成中の現在ブロック領域(縦縞パターンで示される)を含むCTUである。左側CTU(1110)は、現在のCTU(1120)の左側にすぐ隣接する。図11A~11Dにおいて、灰色のブロックはすでに再構成されているブロック領域であり、白色のブロックは再構成されるべきブロック領域であることが留意される。
図11Aでは、再構成中の現在ブロック領域は、ブロック領域(1121)である。キャッシュメモリは、ブロック領域(1112)、(1113)および(1114)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在のブロック領域(1121)の再構成されたサンプルを格納するために使用されることになる。図11Aの例では、現在のブロック領域(1121)についての有効探索範囲は、再構成されたサンプルがキャッシュメモリに記憶されている左側CTU(1110)内のブロック領域(1112)、(1113)および(1114)を含む。ある実施形態では、ブロック領域(1111)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅い主記憶に格納されている(たとえば、ブロック領域(1121)の再構成前に、キャッシュメモリから主記憶にコピーされる)ことに留意されたい。
図11Bでは、再構成中の現在ブロック領域は、ブロック領域(1122)である。キャッシュメモリは、ブロック領域(1113)、(1114)および(1121)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1122)の再構成されたサンプルを格納するために使用されることになる。図11Bの例では、現在ブロック領域(1122)についての有効な探索範囲は、再構成されたサンプルがキャッシュメモリに記憶されている左側CTU(1110)内のブロック領域(1113)および(1114)ならびに現在のCTU(1020)内のブロック領域(1121)を含む。ある実施形態では、ブロック領域(1112)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅い主記憶に格納されている(たとえば、ブロック領域(1122)の再構成前に、キャッシュメモリから主記憶にコピーされる)ことに留意されたい。
図11Cでは、再構成中の現在ブロック領域は、ブロック領域(1123)である。キャッシュメモリは、ブロック領域(1114)、(1121)および(1122)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1123)の再構成されたサンプルを記憶するために使用されることになる。図11Cの例では、現在ブロック(1123)の有効探索範囲は、再構成されたサンプルがキャッシュメモリに記憶されている左側CTU(1110)のブロック領域(1114)および現在のCTU(1120)のブロック領域(1121)および(1122)を含む。ある実施形態では、ブロック領域(1113)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅い主記憶に格納されている(たとえば、ブロック領域(1023)の再構成前に、キャッシュメモリから主記憶にコピーされる)ことに留意されたい。
図11Dでは、再構成中の現在ブロック領域は、ブロック領域(1124)である。キャッシュメモリは、ブロック領域(1121)、(1122)および(1123)に再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1124)の再構成されたサンプルを記憶するために使用されることになる。図11Dの例では、現在ブロック領域(1124)についての有効な探索範囲は、再構成されたサンプルがキャッシュメモリに格納されている現在のCTU(1120)内のブロック(1121)、(1122)および(1123)を含む。ある実施形態では、ブロック領域(1114)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅い主記憶に格納されている(たとえば、ブロック領域(1124)の再構成前に、キャッシュメモリから主記憶にコピーされる)ことに留意されたい。
いくつかの実施形態では、将来のイントラブロックコピー参照のために、以前に符号化されたCUの参照サンプルを格納するための指定されたメモリは、参照サンプル・メモリと呼ばれる。VVC標準のような例では、参照サンプルの1 CTUサイズが、指定されたメモリ・サイズとみなされる。いくつかの例では、キャッシュメモリは、1つの(最大)CTUサイズのための全メモリスペースを有する。これらの例は、他の好適なCTUサイズのために好適に調整されることができる。将来のイントラブロックコピー参照のために、以前に符号化されたCUの参照サンプルを格納するように指定されたキャッシュメモリは、いくつかの例では参照サンプル・メモリと呼ばれることに留意されたい。
本開示のある側面によれば、本開示の共位置のブロックは、同じサイズを有する一対のブロックを指し、共位置のブロックの一方は、前に符号化されたCTU内にあり、共位置のブロックの他方は、現在のCTU内にあり、対の一方のブロックは、対の他方のブロックの共位置のブロックと呼ばれる。さらに、メモリバッファサイズが最大サイズ(たとえば、128×128)のCTUを格納するように設計されている場合、前のCTUは、一例では、現在のCTUの左側に1 CTUの幅のルーマ・サンプル・オフセットをもつCTUをいう。さらに、これら2つの共位置のブロックは、それぞれ自身のCTUの左上隅に対して同じ位置オフセット値をもつ。あるいは言い換えれば、共位置のブロックは、いくつかの例では、ピクチャーの左上隅に対して同じy座標をもつが、x座標では互いにCTU幅の差がある2つのブロックである。
図12は、本開示のいくつかの実施形態による、共位置のブロックの例を示す。図12の例では、デコード中の現在のCTUおよび左側CTUが示されている。再構成されている領域は灰色で、再構成されるべき領域は白色で示されている。図12は、デコード中のイントラブロックコピー・モードでの、現在ブロックのための左側CTU内の参照ブロックの3つの例を示している。3つの例は、参照ブロック1、参照ブロック2、参照ブロック3として示される。図12はまた、参照ブロック1についての共位置のブロック1、参照ブロック2についての共位置のブロック2、および参照ブロック3についての共位置のブロック3を示している。図12の例では、参照サンプル・メモリ・サイズはCTUサイズである。現在のCTUと左側CTUの再構成されたサンプルは、相補的な仕方で参照サンプル・メモリに格納される。現在のCTUの再構成されたサンプルが参照サンプル・メモリに書き込まれるとき、該再構成されたサンプルは、左側CTUにおける共位置のサンプルの位置に書き込まれる。一例では、参照ブロック3について、現在のCTUにおける共位置のブロック3がまだ再構成されていないため、参照ブロック3は参照サンプル・メモリから見つけることができる。参照サンプル・メモリは、依然として左側CTUからの参照ブロック3のサンプルを格納しており、参照ブロック3のサンプルを取り出すために高速でアクセスすることができ、一例では、参照ブロック3は、現在ブロックをイントラブロックコピー・モードで再構成するために使用することができる。
別の例では、参照ブロック1については、現在のCTU内の共位置のブロック1は再構成完了しており、よって、参照サンプル・メモリは、共位置のブロック1のサンプルを記憶しており、参照ブロック1のサンプルは、たとえば、参照サンプル・メモリと比較して相対的に高い遅延を有するオフチップ記憶に記憶されている。よって、一例では、参照ブロック1は参照サンプル・メモリにおいては見つからず、参照ブロック1は、一例では、イントラブロックコピー・モードで現在ブロックを再構成するために使用することができない。
同様に、別の例では、参照ブロック2について、現在のCTUにおける共位置のブロック2がまだ再構成されていなくても、あるメモリ更新例においては共位置のブロック2を含む64×64ブロック領域が全体として考慮されるため、参照ブロック2は、イントラブロックコピー・モードで現在ブロックを再構成するための有効な参照ブロックではない。
一般に、イントラブロックコピー・モードでは、先にデコードされたCTU内の参照ブロックについては、現在のCTU内の共位置のブロックがまだ再構成されていない場合、該参照ブロックのサンプルが参照サンプル・メモリ内で利用可能であり、参照サンプル・メモリにアクセスして、参照ブロックのサンプルを取り出して、イントラブロックコピー・モードでの再構成のための参照として使用することができる。
上記の諸例では、参照ブロックの左上隅の共位置のサンプルとも呼ばれる、現在のCTU内の共位置のブロックの左上隅のサンプルがチェックされることに留意されたい。現在のCTU内の共位置のサンプルがまだ再構成されていない場合、参照ブロックのための残りのサンプルはすべて、イントラブロックコピーでの参照として使用するために利用可能である。
いくつかの実施形態では、CTUは、ブロック領域に分割されて、有効な参照ブロック領域を決定してもよい。たとえば、128×128のCTUは4つの64×64ブロック領域に分割される。一例では、参照ブロック2について、現在のCTUにおける共位置のブロック2がまだ再構成されていなくても、共位置のブロック2の64×64ブロック領域(1201)全体が全体として考慮される場合には、参照ブロック2は有効な参照ブロックとならない可能性がある。たとえば、共位置のブロック2が属する64×64ブロック領域(1201)(現在のCTUの右上64×64領域)の左上隅(1202)をチェックすることにより、その左上隅(1202)が再構築されているところであると考えられ、よって、参照ブロック2が属する64×64ブロック領域(1203)の全体を参照ブロック領域として使用することはできない。
参照サンプル・メモリ・サイズがCTUサイズより大きい場合は、イントラブロックコピー用の参照サンプルを格納するために、2つ以上の左側のCTUが使用されてもよい。たとえば、CTUサイズが64×64であり参照メモリ・サイズが128×128である場合、現在のCTUに加えて、3つの左側CTUがイントラブロックコピーのための有効な参照領域とみなされてもよい。
また、上記の諸例では、参照サンプル・メモリのメモリ・サイズは、1つのCTUのサイズであり、そのため、前にデコードされたCTUは、現在のCTUのすぐ左側にあるCTUを意味することにも留意されたい。
本開示のある側面によれば、参照サンプル・メモリのメモリ・サイズは、1つのCTUのサイズよりも大きくすることができる。
本開示のいくつかの側面によれば、有効な探索範囲について、ビットストリーム適合性は、ルーマ・ブロック・ベクトルmvLがある種の制約条件に従うことを要求する。一例では、現在のCTBは、複数のルーマ・サンプルを含むルーマCTBであり、ブロック・ベクトルmvLは、ビットストリーム適合性のために以下の制約条件を満たす。
いくつかの例では、まず、諸制約条件を使用して、現在ブロックのための参照ブロックが再構成されていなければならないことを確認する。参照ブロックが長方形形状を有する場合、参照ブロックの左上サンプルおよび右下サンプルが再構成されているかどうかをチェックするために、参照ブロック利用可能性チェック・プロセスが実装できる。参照ブロックの左上サンプルと右下サンプルの両方が再構成されている場合、参照ブロックは再構成され終わっていると判定される。
たとえば、参照ブロックの再構成された左上サンプルが利用可能であるべきである。いくつかの例では、ブロック利用可能性のための導出プロセスを呼び出すことができ、導出プロセスは、入力として現在のルーマ位置と近傍ルーマ位置とを受け取り、近傍ルーマ位置におけるサンプルが再構成されているかどうかを示す出力を生成することができる。たとえば、出力がTRUEである場合、入力位置におけるサンプルは再構成されており、出力がFALSEの場合、入力位置におけるサンプルはまだ再構成されていない。
一般に、現在のルーマ位置は現在ブロックの左上サンプルの位置である(xCb,yCb)に設定される。さらに、mvLはブロック・ベクトルを表し、mvL[0]はx成分を表し、mvL[1]はブロック・ベクトルのy成分を表す。いくつかの例では、x成分およびy成分は、1/16のサンプル間精度で格納されるので、x成分およびy成分は、ピクセルの端数部分のために4ビットを有することができる。すると、整数部分を取得するために、x成分およびy成分は4つだけ右シフトさせることができる。現在のルーマ位置(xCurr,yCurr)は、現在ブロックの左上のサンプル(xCb,yCb)に設定され、近傍ルーマ位置は、参照ブロックの左上サンプルの位置である(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4))によって表現できる。一例では、参照ブロック利用可能性のための導出プロセスが呼び出され、参照ブロックの左上サンプルの位置が入力として使用され、出力がTRUEに等しい場合、参照ブロックの左上サンプルは再構成されている。参照ブロックの左上サンプルの利用可能性チェックは、チェックAと称される。
同様に、参照ブロックの再構成された右下サンプルも利用可能であるべきである。いくつかの例では、ブロック利用可能性のための導出プロセスが呼び出されることができ、導出プロセスへの入力は、参照ブロックの右下サンプルの位置を含む。たとえば、現在のルーマ位置が(xCb,yCb)に設定され、現在ブロックおよび参照ブロックの幅がcbWidthで表され、現在ブロックおよび参照ブロックの高さがcbHeightによって表される。すると、参照ブロックの右下サンプルの位置は(xCb+(mvL[0]>>4)+cbWidth-1,yCb+(mvL[1]>>4)+cbHeight-1)である。ブロック利用可能性についての導出プロセスに右下サンプルの位置が入力され、出力がTRUEである場合、参照ブロックの右下サンプルが再構成される。右下サンプルの利用可能性チェックは、チェックBと称される。
いくつかの例では、第2の制約条件は、参照ブロックが現在ブロックの左および/または上にあり、現在ブロックと重ならないことを保証する。第2の制約条件は、次の2つの条件のうちの少なくとも1つをも含むことができる:1)(mvL[0]>>4)+cbWidthの値が0以下であること;これは参照ブロックが現在ブロックの左側にあり、現在ブロックと重複しないことを示す;2)(mvL[1]>>4)+cbHeightの値が0以下であること;これは参照ブロックが現在ブロックの上にあり、現在ブロックと重複しないことを示す。一例では、第2の制約条件に従ってチェックが実行され、チェックCと称される。
第3の制約条件は、参照ブロックが適切な探索範囲内にあることを保証する。いくつかの例では、第3の制約条件は、次の条件がブロック・ベクトルmvLによって満たされることを含むことができる:
(yCb+(mvL[1]>>4))>>CtbLog2SizeY = yCb>>CtbLog2SizeY (式1)
(yCb+(mvL[1]>>4+cbHeight-1)>>CtbLog2SizeY = yCb>>CtbLog2SizeY (式2)
(xCb+(mvL[0]>>4))>>CtbLog2SizeY >= (xCb>>CtbLog2SizeY)-(1<<((7-CtbLog2SizeY)<<1)))+Min(1,7-CtbLog2SizeY) (式3)
(xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY <= (xCb>>CtbLog2SizeY) (式4)
ここで、パラメータCtbLog2SizeYは、CTBサイズ(たとえば、高さまたは幅)をlog2形式で表す。たとえば、CTB高さが128サンプルである場合、CtbLog2SizeYは7である。(式1)および(式2)は、参照ブロックを含むCTBが現在のCTBと同じCTB行にあること(すなわち、参照ブロックが前に再構成されたCTB内にある場合、前に再構成されたCTBが現在のCTBと同じ行にあること)を指定し、(式3)および(式4)は、参照ブロックを含むCTBが現在のCTBの左のCTB列または現在のCTBと同じCTB列にあることを指定する。(式1)(式4)によって記述される条件は、参照ブロックを含むCTBが、現在のCTB、または、現在のCTBの左の近傍、たとえば以前に再構成されたCTBであることを指定する。
一例では、(式1)に従って実行されるチェックがチェックDと称され、(式2)に従って実行されるチェックがチェックEと称され、(式3)に従って実行されるチェックがチェックFと称され、(式4)に従って実行されるチェックがチェックGと称される。
第4の制約条件は、参照ブロックが参照サンプル・メモリに格納されていることを保証する。換言すれば、参照ブロックの共位置のブロックは再構成されていない。いくつかの例では、第4の制約条件は、次の条件を含むことができる:参照ブロックが現在のCTBの左近傍にある場合、参照ブロックについての共位置の領域は再構成されていない(すなわち、共位置の領域内のどのサンプルも再構成されていない)。さらに、参照ブロックについての共位置の領域は、現在のCTB内にある。
一例では、上記の条件は次のように指定できる:(xCb+(mvL[0]>>4))>>CtbLog2SizeYが(xCb>>CtbLog2SizeY)-1に等しく、CtbLog2SizeYが7である場合、参照ブロック利用可能性についての導出プロセスが呼び出される。ルーマ位置(xCurr,yCurr)についての入力が(xCb,yCb)に設定され、近傍ルーマ位置についての入力は(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))である。導出プロセスの出力がFALSEである場合、共位置の領域はまだ再構成されていない。一例では、共位置の領域のチェックは、チェックHと称される。
また、ルーマ位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))が(xCb,yCb)に等しいことは許されない。一例では、この不等性チェックはチェックIと称される。
本開示のいくつかの側面によれば、いくつかの符号化技術において柔軟な符号化順序が使用できる。いくつかの実施形態では、CTUは、四分木構造、二分木構造または三分木構造によって再帰的に分割される。分割プロセスにおける、2つ、3つ、または4つの単位にさらに分割される単位は、分割単位(split unit、SU)と称される。通例、分割単位の符号化順序は、四分木構造のz走査順序とピクチャーにおけるCTUのラスタスキャンのため、左から右、そして上から下である。しかしながら、通常の左から右への符号化順序は、右傾斜フィーチャーよりも左傾斜フィーチャーにとって有益である。イントラ予測に限定されず、インター予測でも、右傾斜フィーチャーをもつブロックは、左上の近傍から同様の動き情報を見つけることができない。
いくつかの例では、分割単位符号化順序(split unit coding order、SUCO)として参照される技術を使用することができる。SUCOは、左から右(L2R)および右から左(R2L)のようなより柔軟な符号化順序を可能にし、右の参照ピクセルからのイントラ予測および右の動きベクトル予測子を用いたインター予測を許容する。いくつかの例では、分割単位(SU)が垂直に分割される場合、L2RまたはR2L符号化順序を示すためにフラグが信号伝達される。さらに、SUが四分木構造によって分割される場合、上の2つの単位と下の2つの単位についてフラグが共有される。SUの符号化順序についてフラグが信号伝達されない場合は、そのSUの後続の符号化順序は、前のレベルSUから暗黙的に継承される。
図13は、分割および符号化順序の例を示す。たとえば、分割単位1310は、二分木(BT)構造、三分木(TT)構造、および四分木(QT)構造に従って分割でき、左から右(L2R)の順序または右から左(R2L)の順序で好適に符号化できる。
たとえば、分割単位1310は、BT構造に従って、単位1321および1322に垂直に分割される。単位1321および1322は、L2R順またはR2L順で符号化できる。分割単位1310は、BT構造に従って、単位1331および1332に水平に分割される。単位1331および1332は、概して、上から下の順で符号化される。
別の例では、分割単位1310は、TT構造に従って、単位1341~1343に垂直に分割される。単位1341~1343は、L2R順またはR2L順で符号化できる。分割単位1310は、単位1351~1353に水平に分割される。単位1351~1353は、概して上から下の順序で符号化される。
別の例では、分割単位1310は、QT構造に従って単位1361~1364に分割される。L2R順では、単位1361~1364は1361、1362、1363、1364に従って符号化できる。R2L順の場合、単位1361~1364は、1362、1361、1364、1363に従って符号化できる。
図14は、CTUにおけるSUCOの例を示す。図14の諸例では、CTU 1410は、ツリー構造1450に従って分割される。CTU 1410は、単位S1とも呼ばれる。単位S1は、QT構造に従って単位S21~S24に分割され、R2L順に符号化される。単位S21は、BT構造に従って単位S31~S32に水平に分割される。単位S31は、TT構造に従って単位S41~S43に垂直に分割され、R2L順に符号化される。単位S32は、BT構造に従って単位S44~S45に垂直に分割され、L2R順に符号化される。単位S45は、BT構造に従って単位S51~S52に水平に分割される。単位S52は、BT構造に従って単位S61~S62に垂直に分割され、L2R順に符号化される。図14の例では、単位がさらに分割される場合、その単位を分割単位(SU)と呼ぶことができる。単位がそれ以上分割されない場合、その単位は、リーフCUと呼ぶことができる。
図14の例では、SUレベルにおける柔軟な符号化順序のために、リーフCUの近傍利用可能性は、HEVCにおける一般的な左および上の近傍よりも多様になる。たとえば、左隣接ブロックと右隣接ブロックのみを考慮する場合には、4つの利用可能性ケースがある。具体的には、LR_10と呼ばれる第1の場合は、左隣接ブロックは利用可能であり、右隣接ブロックは利用可能でない;LR_01と呼ばれる第2の場合は、左隣接ブロックは利用可能でなく、右隣接ブロックは利用可能であるl;LR_11と呼ばれる第3の場合は、左隣接ブロックと右隣接ブロックの両方が利用可能である;LR_00と呼ばれる第4の場合は、左隣接ブロックと右隣接ブロックの両方が利用可能でない。上のブロックは、現在のCUがスライスの上の境界にあるのでない限り、常に利用可能である。左上隅または右上隅のブロックの利用可能性は、対応する左または右の近傍の利用可能性に依存する。
通例、ブロック符号化順序が左から右、上から下の場合、現在の符号化ブロックの上および左の領域が、イントラピクチャーブロック補償のためのすでに再構成されたサンプルをもつ基準領域であることができる。SUCOを使用すると、符号化順序および近傍参照サンプル利用可能性がより複雑になる。本開示の諸側面は、イントラブロックコピーについて利用可能な探索範囲を指定するための技術を提供する。
提案される諸方法は、別々に使用されてもよく、または任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダのそれぞれは、処理回路(たとえば、一つまたは複数のプロセッサ、または一つまたは複数の集積回路)によって実装されてもよい。一例では、前記一つまたは複数のプロセッサは、一時的でないコンピュータ読み取り可能媒体に格納されたプログラムを実行する。以下の説明では、ブロックという用語は、予測ブロック、符号化ブロック、または符号化単位、すなわち、CUとして解釈されうる。
ブロック符号化順序が左から右、上から下である例においては、参照ブロックの左上隅と右下隅がイントラブロックコピーのために有効である場合(つまり、これらの2つの位置におけるサンプルが再構成されており、たとえば現在の符号化ブロックの同じタイル/スライス内など、イントラブロックコピーのための制約に適合する場合)、参照ブロックのすべてのサンプルは再構成されており、イントラブロックコピーのための制約(たとえば、現在の符号化ブロックの同じタイル/スライス内)に適合し、参照ブロックはイントラブロックコピーのための有効なブロックである。
しかしながら、SUCOを使用する場合は、潜在的な参照ブロックの左上隅および右下隅のみのチェックでは十分ではなく、潜在的な参照ブロックのサンプル利用可能性を決定するために、より有効なチェックポイントが使用される。
以下の説明では、現在の符号化ブロックのいくつかの位置が参照され、(潜在的な)参照ブロックのいくつかの位置が参照される。たとえば、現在の符号化ブロックの左上隅は(Cur_TL_x,Cur_TL_y)と称され、現在の符号化ブロックの右上隅は(Cur_TR_x,Cur_TR_y)と称され、現在の符号化ブロックの左下隅は(Cur_BL_x,Cur_BL_y)と称され、現在の符号化ブロックの右下隅は(Cur_BR_x,Cur_BR_y)と称される。現在の符号化ブロックの幅はcbWidthと称され、現在の符号化ブロックの高さはcbHeightと称される。参照ブロックの左上隅は(Ref_TL_x,Ref_TL_y)と称され、参照ブロックの右上隅は(Ref_TR_x,Ref_TR_y)と称され、参照ブロックの左下隅は(Ref_BL_x,Ref_BL_y)と称され、参照ブロックの右下隅は(Ref_BR_x,Ref_BR_y)と称される。
本開示のある側面によれば、SUCOが使用される場合、現在の符号化ブロックについて、右の近傍ブロックが、左の近傍ブロックより前に符号化されることがある。よって、いくつかの例では、参照ブロックの左上隅と右下隅の両方が有効であっても、ブロック全体は依然としてイントラブロックコピーのための無効な参照ブロックであることがある。
図15は、本開示のいくつかの実施形態による、追加的なチェック位置が必要とされることを例解する例を示す。図15の例では、CTU(1500)は、符号化ブロック(1510)、(1520)、(1530)、(1540)、(1550)および(1560)に分割される。SUCOを使用する場合、符号化ブロックは、例では(1510)、(1530)、(1560)、(1550)、(1540)、(1520)の順に符号化されることができる。一例では、符号化ブロック(1560)をデコード(またはエンコード)するとき、符号化ブロック(1560)は現在の符号化ブロック(縦縞で示される)であり、符号化ブロック(1510)および(1530)は再構成されており(灰色で示される)、符号化ブロック(1550)、(1540)および(1520)はまだ再構成されていない。
図15の例では、現在の符号化ブロック(1560)を符号化する時に、ブロック・ベクトルが(潜在的な)参照ブロック(1590)を指す。次いで、参照ブロック(1590)がチェックされる。参照ブロック(1590)の左上隅および右下隅は再構成されている。よって、左上隅および右下隅のみがチェックされる場合、参照ブロック(1590)が現在の符号化ブロック(1560)のための参照ブロックとして有効であるという誤った判断がなされることがありうる。しかしながら、図15に示されるように、参照ブロック(1590)のいくつかの部分は再構成されておらず、参照ブロック(1590)は実際には無効である。
無効な参照ブロックを使用することを避けるために、または換言すれば、ブロック・ベクトルによって選択された参照ブロックが有効であることを確認するために、参照ブロックの左上隅および右下隅の利用可能性チェックに加えて、(Ref_BL_x,Ref_BL_y)と称される参照ブロックの左下隅もチェックされ、その隅におけるサンプルがイントラブロックコピー参照のために有効であることを確認する(たとえば、現在ブロックの同じタイル/スライス内で、再構成されるべきであったサンプルなど)。図15の例では、左下隅がチェックされるとき、参照ブロック(1590)は無効な参照ブロックであると判定できる。
本開示の別の側面によれば、SUCOが使用される場合、参照ブロックの4つのコーナーのすべてが現在の符号化ブロックの前に再構成された場合でさえ、いくつかの例では、参照ブロックは無効であることがある。
図16A~16Cは、本開示のいくつかの実施形態による、追加的なチェック位置が必要とされることを例解する例を示している。図16A~16Cの例では、CTU(1600)は、符号化ブロック(1610)、(1620)、(1630)、(1640)、(1650)および(1660)に分割される。SUCOを使用する場合、符号化ブロックは、一例では、(1610)、(1620)、(1630)、(1670)、(1650)、(1660)、(1640)の順序で符号化することができる。一例では、符号化ブロック(1660)をデコード(またはエンコード)するときに、符号化ブロック(1660)は現在の符号化ブロック(縦縞で示される)であり、符号化ブロック(1610)、(1620)、(1630)、(1670)および(1650)は再構成されており(灰色で示される)されており、符号化ブロック(1640)は再構成されていない。
図16Aの例では、現在の符号化ブロック(1660)を符号化するとき、ブロック・ベクトルが(潜在的な)参照ブロック(1690A)を指す。次いで、参照ブロック(1690A)がチェックされる。参照ブロック(1690A)の左上隅および右下隅は再構成されている。よって、左上隅および右下隅のみがチェックされる場合、参照ブロック(1690A)が現在の符号化ブロック(1660)の参照ブロックとして有効であるという誤った判断がなされうる。しかしながら、図16Aに示されるように、参照ブロック(1690A)のいくつかの部分は再構成されておらず、参照ブロック(1690A)は、実際には無効である。
同様に、図16Bの例では、現在の符号化ブロック(1660)を符号化するときに、ブロック・ベクトルは(潜在的な)参照ブロック(1690B)を指す。次いで、参照ブロック(1690B)がチェックされる。参照ブロック(1690B)の左上隅および右下隅は再構成されている。よって、左上隅および右下隅のみがチェックされる場合、参照ブロック(1690B)が現在の符号化ブロック(1660)のための参照ブロックとして有効であるという誤った判断がなされうる。しかしながら、図16Bに示されるように、参照ブロック(1690B)のいくつかの部分は、再構成されておらず、参照ブロック(1690B)は、実際には無効である。
また、図16Cの例では、現在の符号化ブロック(1660)を符号化するときに、ブロック・ベクトルが(潜在的な)参照ブロック(1690C)を指す。次いで、参照ブロック(1690C)がチェックされる。参照ブロック(1690C)の左上隅および右下隅は再構成されている。よって、左上隅および右下隅のみがチェックされる場合、参照ブロック(1690C)が現在の符号化ブロック(1660)のための参照ブロックとして有効であるという誤った判断がなされうる。しかしながら、図16Cに示されるように、参照ブロック(1690C)の一部は再構成されておらず、参照ブロック(1690C)は実際には無効である。
無効な参照ブロックを使用することを避ける、あるいは換言すれば、ブロック・ベクトルによって選択された参照ブロックが有効であることを確認するために、左上隅および右下隅の利用可能性チェックに加えて、参照ブロックの中心線上の点がチェックされることができる。図16A~16Cの例では、いくつかの実施形態によれば、参照ブロックのほぼ垂直中心線(1680)(たとえば、x=Ref_BL_x+cbWidth/2)に位置する諸サンプルがチェックされることができる。一例では、(Ref_BL_x+cbWidth/2,Ref_BL_y)と称されうる参照ブロックの底辺中心が追加的にチェックされ、その位置のサンプルがイントラブロックコピー参照のために有効であることを確認することができる(たとえば、現在ブロックの同じタイル/スライス内で、その位置のサンプルが再構成されているべきである、など)。
本開示のある側面によれば、利用可能性条件チェックのための(左上隅および右下隅以外の)追加的な点(単数または複数)のチェックは、条件付きで使用されてもよい。よって、いくつかの例では、ある種の状況のもとでのみ、たとえば、図16A~16Cに示されている無効な参照ブロックが可能であり、よって、追加的な点がチェックされる必要がある場合がある。
ある実施形態では、追加的な点の利用可能性チェックを有効にする条件は:参照ブロックが完全に現在の符号化ブロックの上にあり、参照ブロックの右エッジのx成分が、現在の符号化ブロックの左エッジのx成分以上である、というものであることができる。
別の実施形態では、現在の符号化ブロックは、水平BT分割からの下側の子区画である。現在ブロックと、(同じ親ノードに属する)前記水平BTの上側の子区画との組み合わせは、垂直三分TT分割の中央区画である。TT分割のための符号化順序は右から左である。図16A~16Cは、現在の符号化ブロックについてのそのような状況の例を示している。別の実施形態では、参照ブロックの利用可能性チェックの追加的なチェック点は、(Ref_BL_x+cbWidth/2,Ref_BL_y)から別の位置(Cur_TL_x-cbWidth/2,Ref_BR_y)に変更されることができる。この別の位置は、現在の符号化ブロックの左エッジの約半ブロック幅左に位置し、図16Aにおいて(1681)によって示される。
本開示のいくつかの側面によれば、SUCOが使用される場合、ある有効な探索範囲について、ビットストリーム適合性は、ルーマ・ブロック・ベクトルmvLがある種の制約条件に従うことを要求する。一例では、現在のCTBは複数のルーマ・サンプルを含むルーマCTBであり、ブロック・ベクトルmvLは、SUCOが使用される場合、ビットストリーム適合性のために以下の制約条件を満たし、mvLは1/16の分解能でのブロック・ベクトルを表す。
いくつかの例では、第1制約条件は、現在ブロックのための参照ブロックが再構成されていることを確認するために使用される。参照ブロックが長方形形状を有する場合、参照ブロックの左上サンプル、右下サンプル、およびSUCOが使用される場合は追加的な点(単数または複数)が再構成されているかどうかをチェックするために、参照ブロック利用可能性チェック・プロセスが実装されることができる。SUCOが使用されない場合は、参照ブロックの左上サンプルおよび右下サンプルが再構成されていれば、参照ブロックは再構成されていると判断される。SUCOが使用される場合は、参照ブロックの左上サンプル、右下サンプル、および追加的な点(単数または複数)が再構成されている場合に、参照ブロックは再構成されていると判断される。
いくつかの実装例では、チェックAおよびチェックBは、それぞれ、参照ブロックの左上サンプルおよび右下サンプルをチェックするために実行される。
さらに、ある実施形態では、SUCOが使用される場合、図15に示されるような無効な参照ブロックを回避するために、参照ブロックの再構成された左下サンプルが利用可能であるべきである。いくつかの例では、ブロック利用可能性のための導出プロセスを呼び出すことができ、導出プロセスへの入力は、参照ブロックの左下サンプルの位置を含む。たとえば、現在のルーマ位置が(xCb,yCb)に設定され、現在ブロックおよび参照ブロックの幅がcbWidthによって表され、現在ブロックおよび参照ブロックの高さがcbHeightによって表される。すると、参照ブロックの左下サンプルの位置は(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)+cbHeight-1)である。左下サンプルの位置がブロック利用可能性のための導出プロセスに入力され、出力がTRUEの場合、参照ブロックの右下サンプルは再構成されている。
別の実施形態では、SUCOが使用される場合、図16A~16Cに示されるような無効な参照ブロックを回避するためには、参照ブロックの再構成された垂直の中央サンプル(単数または複数)が利用可能であるべきである。いくつかの例では、ブロック利用可能性のための導出プロセスを呼び出すことができ、導出プロセスへの入力は、参照ブロックの左下サンプルの位置を含む。たとえば、現在のルーマ位置が(xCb,yCb)に設定され、現在ブロックおよび参照ブロックの幅がcbWidthによって表され、現在ブロックおよび参照ブロックの高さがcbHeightによって表される。すると、参照ブロックの下部中心サンプルの位置は(xCb+(mvL[0]>>4+cbWidth/2),yCb+(mvL[1]>>4)+cbHeight-1)となる。ブロック利用可能性のための導出プロセスに下部中心サンプルの位置が入力され、出力がTRUEの場合、参照ブロックの右下サンプルは再構成されている。
いくつかの例では、チェックCは、参照ブロックが現在ブロックの左および/または上にある、および/または、現在ブロックの右にあることを保証するように修正される。チェックCのための制約条件は、次の三つの条件のうちの少なくとも一つを含むこともできる:1)(mvL[0]>>4)+cbWidthの値が0以下であること;これは、参照ブロックが現在ブロックの左側にあり、現在ブロックと重ならないことを示す;2)(mvL[1]>>4)+cbHeightの値が0以下であること;これは、参照ブロックが現在ブロックより上にあり、現在ブロックと重ならないことを示す;3)(mvL[0]>>4)の値がcbWidth以上であること;これは、参照ブロックが現在ブロックの右側にあり、現在ブロックと重ならないことを示す。
さらに、チェックD、チェックE、チェックF、チェックG、チェックH、チェックIは、記載されているように同様に実施することができる。
図17は、本開示のある実施形態によるプロセス(1700)を概説するフローチャートを示す。プロセス(1700)は、ブロックの再構成において、再構成中のブロックについての予測ブロックを生成するために使用されることができる。さまざまな実施形態において、プロセス(1700)は、端末装置(410)、(420)、(430)、(440)内の処理回路、ビデオエンコーダ(503)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオデコーダ(610)の機能を実行する処理回路、ビデオエンコーダ(703)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1700)は、ソフトウェア命令で実装され、よって、処理回路がソフトウェア命令を実行すると、処理回路がプロセス(1700)を実行する。プロセスは(S1701)で始まり、(S1710)に進む。
(S1710)では、現在ブロックの予測情報は、符号化されたビデオ・ビットストリームからデコードされる。予測情報は、イントラブロックコピー・モードを示す。現在ブロックは、CTB内の複数の符号化ブロックのうちの1つであり、CTB内では右から左の符号化順序が許容される。たとえば、CTBにおける柔軟な符号化順序を可能にするためにSUCOが使用される。
(S1720)では、ブロック・ベクトルが決定される。ブロック・ベクトルは、現在ブロックと同じピクチャーにおける参照ブロックを指す。
(S1730)では、参照ブロックの2つのコーナー・サンプルが利用可能であるかチェックされる。たとえば、チェックAは左上隅のサンプルが再構成されていることを確認するために実行され、チェックBは右下隅のサンプルが再構築されていることを確認するために実行される。
(S1740)では、2つのコーナー・サンプルに加えて、あるサンプルに対して、該サンプルが再構成されていることを確認するための追加的なチェックが実行される。一例では、追加的なチェックのサンプルは、左下隅のサンプルのようなコーナー・サンプル〔隅のサンプル〕である。いくつかの例では、追加的なチェックのサンプルは非コーナー・サンプル〔隅でないサンプル〕である。一例では、追加的なチェックのサンプルは、参照ブロックの下部中央サンプルのような、参照ブロックの垂直中心のあたりに位置する。
(S1750)では、現在ブロックの諸サンプルが、参照ブロックの再構成された諸サンプルに基づいて再構成される。その後、プロセスは(S1799)に進み、終了する。
参照ブロックが有効なブロックであることを保証するために、チェックC、チェックD、チェックE、チェックF、チェックG、チェックH、チェックIなどの追加的なチェックが実行されることに留意されたい。
上述の技法は、コンピュータ読み取り可能な命令を用いてコンピュータ・ソフトウェアとして実装することができ、一つまたは複数のコンピュータ読み取り可能な媒体に物理的に記憶されることができる。たとえば、図18は、開示された主題のある種の実施形態を実施するのに好適なコンピュータ・システム(1800)を示す。
コンピュータ・ソフトウェアは、任意の好適な機械コードまたはコンピュータ言語を用いてコーディングされることができ、アセンブリ、コンパイル、リンク、または同様の機構の対象とされて、一つまたは複数のコンピュータ中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)などによって、直接的に、またはインタープリット、マイクロコード実行などを通じて実行可能な命令を含むコードを作成することができる。
命令は、たとえば、パーソナルコンピュータ、タブレット・コンピュータ、サーバー、スマートフォン、ゲーム装置、モノのインターネット装置等を含むさまざまなタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
コンピュータ・システム(1800)について図18に示されるコンポーネントは、例としての性質であり、本開示の実施形態を実装するコンピュータ・ソフトウェアの使用または機能の範囲に関する制限を示唆することを意図したものではない。コンポーネントの構成も、コンピュータ・システム(1800)の例示的実施形態において示されているコンポーネントの任意の1つまたは組み合わせに関する何らかの依存性または要件を有するものとして解釈されるべきではない。
コンピュータ・システム(1800)は、ある種のヒューマン・インターフェース入力装置を含むことができる。そのようなヒューマン・インターフェース入力装置は、たとえば、触覚入力(たとえば、キーストローク、スワイプ、データグローブの動き)、音声入力(たとえば、声、拍手)、視覚入力(たとえば、ジェスチャー)、嗅覚入力(図示せず)を通じた一または複数の人間ユーザーによる入力に応答することができる。また、ヒューマン・インターフェース装置は、音声(たとえば、発話、音楽、周囲の音)、画像(たとえば、スキャンされた画像、スチール画像カメラから得られる写真画像)、ビデオ(たとえば、2次元ビデオ、立体視ビデオを含む3次元ビデオ)のような、人間による意識的入力に必ずしも直接関係しないある種のメディアを捕捉するために使用できる。
入力ヒューマン・インターフェース装置は、キーボード(1801)、マウス(1802)、トラックパッド(1803)、タッチスクリーン(1810)、データグローブ(図示せず)、ジョイスティック(1805)、マイクロフォン(1806)、スキャナ(1807)、カメラ(1808)の一つまたは複数(それぞれの一つしか図示していない)を含んでいてもよい。
コンピュータ・システム(1800)はまた、ある種のヒューマン・インターフェース出力装置を含んでいてもよい。そのようなヒューマン・インターフェース出力装置は、たとえば、触覚出力、音、光、および臭い/味を通じて、一または複数の人間ユーザーの感覚を刺激するものであってもよい。そのようなヒューマン・インターフェース出力装置は、触覚出力装置(たとえば、タッチスクリーン(1810)、データグローブ(図示せず)、またはジョイスティック(1805)による触覚フィードバック;ただし、入力装置のはたらきをしない触覚フィードバック装置もありうる)、音声出力装置(たとえば、スピーカー(1809)、ヘッドフォン(図示せず))、視覚出力装置(たとえば、CRT画面、LCD画面、プラズマスクリーン、OLED画面を含む画面(1810);それぞれはタッチスクリーン入力機能があってもなくてもよく、それぞれは触覚フィードバック機能があってもなくてもよく、そのうちのいくつかは、2次元の視覚出力または立体視出力のような手段を通じた3次元より高い出力を出力することができる;仮想現実感眼鏡(図示せず)、ホログラフィーディスプレイおよび煙タンク(図示せず))、およびプリンタ(図示せず)を含んでいてもよい。
コンピュータ・システム(1800)はまた、人間がアクセス可能な記憶装置および関連する媒体、たとえば、CD/DVDまたは類似の媒体(1821)とともにCD/DVD ROM/RW(1820)を含む光学式媒体、サムドライブ(1822)、取り外し可能なハードドライブまたはソリッドステートドライブ(1823)、テープおよびフロッピーディスクといったレガシー磁気媒体(図示せず)、セキュリティ・ドングルのような特化したROM/ASIC/PLDベースの装置(図示せず)などを含むことができる。
当業者はまた、現在開示されている主題に関連して使用される用語「コンピュータ読み取り可能な媒体」は、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
コンピュータ・システム(1800)はまた、一つまたは複数の通信ネットワークへのインターフェースを含むことができる。ネットワークは、たとえば、無線、有線、光学式でありうる。ネットワークは、さらに、ローカル、広域、都市圏、車載および工業用、リアルタイム、遅延耐性などでありうる。ネットワークの例は、イーサネット〔登録商標〕、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラー・ネットワーク、ケーブルテレビ、衛星テレビ、地上放送テレビを含むTV有線または無線の広域デジタルネットワーク、CANBusを含む車載および工業用などを含む。ある種のネットワークは、普通、ある種の汎用データ・ポートまたは周辺バス(1849)(たとえば、コンピュータ・システム(1800)のUSBポートなど)に取り付けられる外部ネットワーク・インターフェース・アダプターを必要とする。他は、普通、後述するようなシステム・バスへの取り付けによって、コンピュータ・システム(1800)のコアに統合される(たとえば、PCコンピュータ・システムへのイーサネット・インターフェースまたはスマートフォン・コンピュータ・システムへのセルラー・ネットワーク・インターフェース)。これらのネットワークのいずれかを使用して、コンピュータ・システム(1800)は、他のエンティティと通信することができる。そのような通信は、一方向性、受信のみ(たとえば、放送テレビ)、一方向性送信専用(たとえば、ある種のCANbus装置へのCANbus)、または、たとえば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータ・システムへの双方向性であってもよい。上述のようなそれらのネットワークおよびネットワークインターフェースのそれぞれで、ある種のプロトコルおよびプロトコルスタックが使用できる。
前述のヒューマン・インターフェース装置、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータ・システム(1800)のコア(1840)に取り付けることができる。
コア(1840)は、一つまたは複数の中央処理装置(CPU)(1841)、グラフィックス処理装置(GPU)(1842)、フィールドプログラマブルゲートアレイ(FPGA)(1843)の形の特化したプログラマブル処理装置、ある種のタスクのためのハードウェアアクセラレータ(1844)などを含むことができる。これらの装置は、読み出し専用メモリ(ROM)(1845)、ランダムアクセスメモリ(1846)、内部のユーザー・アクセス可能でないハードドライブ、ソリッドステートドライブ(SSD)などの内部大容量記憶装置(1847)とともに、システム・バス(1848)を通じて接続されうる。いくつかのコンピュータ・システムでは、追加のCPU、GPUなどによる拡張を可能にするために、システム・バス(1848)は、一つまたは複数の物理プラグの形でアクセス可能であってもよい。周辺装置は、コアのシステム・バス(1848)に直接取り付けられることも、周辺バス(1849)を通じて取り付けられることもできる。周辺バスのためのアーキテクチャーは、PCI、USBなどを含む。
CPU(1841)、GPU(1842)、FPGA(1843)、およびアクセラレータ(1844)は、組み合わせて上述のコンピュータコードを構成することができるある種の命令を、実行することができる。そのコンピュータコードは、ROM(1845)またはRAM(1846)に記憶できる。一時的データも、RAM(1846)に記憶されることができ、一方、持続的データは、たとえば、内部大容量記憶装置(1847)に記憶されることができる。一つまたは複数のCPU(1841)、GPU(1842)、大容量記憶装置(1847)、ROM(1845)、RAM(1846)などと密接に関連付けることができるキャッシュメモリを使用することを通じて、メモリデバイスのいずれかへの高速な記憶および取り出しを可能にすることができる。
コンピュータ読み取り可能な媒体は、さまざまなコンピュータ実装された動作を実行するためのコンピュータコードをその上に有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、または、コンピュータ・ソフトウェア分野の技術を有する者に周知であり利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャー(1800)、具体的にはコア(1840)を有するコンピュータ・システムは、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)が一つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行することの結果として、機能性を提供することができる。そのようなコンピュータ読み取り可能媒体は、上記で紹介したようなユーザー・アクセス可能な大容量記憶ならびにコア内部の大容量記憶装置(1847)またはROM(1845)のような非一時的な性質のコア(1840)のある種の記憶に関連する媒体であることができる。本開示のさまざまな実施形態を実装するソフトウェアは、そのような装置に記憶され、コア(1840)によって実行されることができる。コンピュータ読み取り可能媒体は、特定のニーズに応じて、一つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、RAM(1846)に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定の特定部分を、コア(1840)および具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に実行させることができる。追加的または代替的に、コンピュータ・システムは、回路(たとえば、アクセラレータ(1844))内に配線された、または他の仕方で具現された論理の結果として機能性を提供することができ、これは、本明細書に記載される特定のプロセスまたは特定のプロセスの特定部分を実行するためのソフトウェアの代わりに、またはそれと一緒に動作することができる。ソフトウェアへの言及は、論理を含み、適宜その逆も可能である。コンピュータ読み取り可能媒体への言及は、適宜、実行のためのソフトウェアを記憶する回路(たとえば集積回路(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:Group of Pictures(ピクチャーグループ)
TU:Transform Unit(変換単位)
PU:Prediction Unit(予測単位)
CTU:Coding Tree Units(符号化ツリー単位)
CTB:Coding Tree Block(符号化ツリーブロック)
PB:Prediction Blocks(予測ブロック)
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 communications(グローバル移動通信システム)
LTE:Long-Term Evolution(ロングタームエボリューション)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
USB:Universal Serial Bus(ユニバーサルシリアルバス)
PCI:Peripheral Component Interconnect(周辺コンポーネント相互接続)
FPGA:Field Programmable Gate Area(フィールド・プログラマブル・ゲートエリア)
SSD:Solid-state Drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
CU:Coding Unit(符号化単位)
本開示は、いくつかの例示的実施形態を記載してきたが、変更、置換、およびさまざまな代替等価物があり、それらは本開示の範囲内にはいる。よって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現し、よって、本開示の精神および範囲内にある多くのシステムおよび方法を考案することができることが理解されるであろう。