ビデオ・エンコーダおよびデコーダ
図2は、本開示のある実施形態による通信システム(200)の簡略化されたブロック図を示す。通信システム(200)は、たとえばネットワーク(250)を介して互いに通信することができる複数の端末装置を含む。たとえば、通信システム(200)は、ネットワーク(250)を介して相互接続された第1の対の端末装置(210)および(220)を含む。図2の例では、第1の対の端末装置(210)および(220)は、データの一方向伝送を実行する。たとえば、端末装置(210)は、ネットワーク(250)を介した他方の端末装置(220)への伝送のために、ビデオ・データ(たとえば、端末装置(210)によって捕捉されたビデオ・ピクチャーのストリーム)を符号化してもよい。エンコードされたビデオ・データは、一つまたは複数の符号化ビデオ・ビットストリームの形で伝送されることができる。端末装置(220)は、ネットワーク(250)から、符号化ビデオ・データを受信し、符号化ビデオ・データをデコードしてビデオ・ピクチャーを復元し、復元されたビデオ・データに従ってビデオ・ピクチャーを表示してもよい。一方向データ伝送は、メディア・サービス・アプリケーション等において一般的でありうる。
別の例では、通信システム(200)は、たとえばビデオ会議中に発生しうる符号化されたビデオ・データの双方向伝送を実行する第2の対の端末装置(230)および(240)を含む。データの双方向伝送のために、一例では、端末装置(230)および(240)の各端末装置は、ネットワーク(250)を介した、端末装置(230)および(240)のうちの他方の端末装置への伝送のために、ビデオ・データ(たとえば、端末装置によって捕捉されたビデオ・ピクチャーのストリーム)を符号化してもよい。端末装置(230)および(240)の各端末装置は、端末装置(230)および(240)のうちの他方の端末装置によって送信された符号化されたビデオ・データを受信してもよく、符号化されたビデオ・データをデコードして、ビデオ・ピクチャーを復元し、復元されたビデオ・データに従って、アクセス可能な表示装置においてビデオ・ピクチャーを表示してもよい。
図2の例では、端末装置(210)、(220)、(230)および(240)は、サーバー、パーソナルコンピュータおよびスマートフォンとして示されてもよいが、本開示の原理は、それに限定されなくてもよい。本開示の実施形態は、ラップトップ・コンピュータ、タブレット・コンピュータ、メディア・プレーヤー、および/または専用のビデオ会議設備での応用を見出す。ネットワーク(250)は、たとえば有線(ワイヤード)および/または無線〔ワイヤレス〕通信ネットワークを含む、端末装置(210)、(220)、(230)および(240)の間で符号化されたビデオ・データを伝達する任意の数のネットワークを表わす。通信ネットワーク(250)は、回線交換および/またはパケット交換チャネルにおいてデータを交換してもよい。代表的なネットワークは、遠隔通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。今の議論の目的のために、ネットワーク(250)のアーキテクチャーおよびトポロジーは、以下に説明しない限り、本開示の動作には重要ではないことがある。
図3は、開示される主題のためのアプリケーションの例として、ストリーミング環境におけるビデオ・エンコーダおよびビデオ・デコーダの配置を示す。開示される主題は、たとえば、ビデオ会議、デジタルTV、CD、DVD、メモリースティックなどを含むデジタル媒体上の圧縮ビデオの記憶などを含む、他のビデオ対応アプリケーションにも等しく適用可能でありうる。
ストリーミング・システムは、ビデオ源(301)、たとえばデジタル・カメラを含むことができ、たとえば非圧縮のビデオ・ピクチャーのストリーム(302)を生成する捕捉サブシステム(313)を含んでいてもよい。一例では、ビデオ・ピクチャーのストリーム(302)は、デジタル・カメラによって取り込まれたサンプルを含む。エンコードされたビデオ・データ(304)(または符号化されたビデオ・ビットストリーム)と比較した場合の高いデータ・ボリュームを強調するために太線として描かれているビデオ・ピクチャーのストリーム(302)は、ビデオ源(301)に結合されたビデオ・エンコーダ(303)を含む電子装置(320)によって処理されることができる。ビデオ・エンコーダ(303)は、以下により詳細に説明されるように、開示される主題の諸側面を可能にし、または実現するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオ・ピクチャーのストリーム(302)と比較した場合の、より低いデータ・ボリュームを強調するために細い線として描かれている、エンコードされたビデオ・データ(304)(またはエンコードされたビデオ・ビットストリーム(304))は、将来の使用のためにストリーミング・サーバー(305)に記憶されることができる。図3のクライアント・サブシステム(306)および(308)のような一つまたは複数のストリーミング・クライアント・サブシステムは、ストリーミング・サーバー(305)にアクセスして、エンコードされたビデオ・データ(304)のコピー(307)および(309)を取り出すことができる。クライアント・サブシステム(306)は、たとえば電子装置(330)内にビデオ・デコーダ(310)を含むことができる。ビデオ・デコーダ(310)は、エンコードされたビデオ・データの入来コピー(307)をデコードし、ディスプレイ(312)(たとえば表示画面)または他のレンダリング装置(図示せず)上にレンダリングできるビデオ・ピクチャーの出ていくストリーム(311)を生成する。いくつかのストリーミング・システムでは、エンコードされたビデオ・データ(304)、(307)、および(309)(たとえば、ビデオ・ビットストリーム)は、ある種のビデオ符号化/圧縮標準に従ってエンコードされることができる。これらの標準の例は、ITU-T勧告H.265を含む。一例では、開発中のビデオ符号化規格は、非公式に多用途ビデオ符号化(VVC)として知られている。開示される主題は、VVCの文脈で使用されてもよい。
電子装置(320)および(330)は、他の構成要素(図示せず)を含むことができることを注意しておく。たとえば、電子装置(320)は、ビデオ・デコーダ(図示せず)を含むことができ、電子装置(330)は、ビデオ・エンコーダ(図示せず)も含むことができる。
図4は、本開示のある実施形態によるビデオ・デコーダ(410)のブロック図を示す。ビデオ・デコーダ(410)は、電子装置(430)に含まれることができる。電子装置(430)は、受領器(431)(たとえば、受領回路)を含むことができる。ビデオ・デコーダ(410)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用できる。
受領器(431)は、ビデオ・デコーダ(410)によってデコードされるべき一つまたは複数の符号化ビデオ・シーケンスを受領してもよい;同じまたは別の実施形態において、一度に1つの符号化ビデオ・シーケンスであり、各符号化ビデオ・シーケンスのデコードは、他の符号化ビデオ・シーケンスから独立である。符号化ビデオ・シーケンスは、チャネル(401)から受信されてもよく、該チャネルは、エンコードされたビデオ・データを記憶する記憶装置へのハードウェア/ソフトウェア・リンクであってもよい。受領器(431)は、エンコードされたビデオ・データを、他のデータ、たとえば符号化されたオーディオ・データおよび/または補助データ・ストリームと一緒に受領してもよく、これらのデータは、それぞれの使用エンティティ(図示せず)を転送されてもよい。受領器(431)は、符号化ビデオ・シーケンスを他のデータから分離することができる。ネットワーク・ジッタ対策として、バッファメモリ(415)が、受領器(431)とエントロピー・デコーダ/パーサー(420)(以下「パーサー」)との間に結合されてもよい。ある種のアプリケーションでは、バッファメモリ(415)はビデオ・デコーダ(410)の一部である。他のアプリケーションでは、ビデオ・デコーダ(410)の外部にあることができる(図示せず)。さらに他のアプリケーションでは、たとえばネットワーク・ジッタに対抗するために、ビデオ・デコーダ(410)の外部にバッファメモリ(図示せず)があってもよく、さらに、たとえば再生タイミングを扱うために、ビデオ・デコーダ(410)の内部に別のバッファメモリ(415)があってもよい。受領器(431)が、十分な帯域幅および制御可能性の記憶/転送装置から、またはアイソクロナス・ネットワークからデータを受領している場合は、バッファメモリ(415)は、必要とされなくてもよく、または小さくてもよい。インターネットのようなベストエフォート型のパケット・ネットワークでの使用のためには、バッファメモリ(415)が要求されることがあり、比較的大きいことがあり、有利には適応サイズであることができ、少なくとも部分的に、ビデオ・デコーダ(410)の外部でオペレーティング・システムまたは同様の要素(図示せず)において実装されてもよい。
ビデオ・デコーダ(410)は、符号化ビデオ・シーケンスからシンボル(421)を再構成するためのパーサー(420)を含んでいてもよい。これらのシンボルのカテゴリーは、ビデオ・デコーダ(410)の動作を管理するために使用される情報と、潜在的には、レンダー装置(412)(たとえば表示画面)のようなレンダリング装置を制御するための情報とを含む。レンダー装置は、図4に示されたように、電子装置(430)の一体的な部分ではなく、電子装置(430)に結合されることができる。レンダリング装置(単数または複数)のための制御情報は、補足向上情報(Supplementary Enhancement Information)(SEIメッセージ)またはビデオユーザビリティ情報(Video Usability Information、VUI)パラメータ・セット・フラグメント(図示せず)の形であってもよい。パーサー(420)は、受領された符号化ビデオ・シーケンスをパースする/エントロピー復号することができる。符号化ビデオ・シーケンスの符号化は、ビデオ符号化技術または標準に従うことができ、可変長符号化、ハフマン符号化、コンテキスト感受性ありまたはなしの算術符号化などを含む、さまざまな原理に従うことができる。パーサー(420)は、符号化ビデオ・シーケンスから、ビデオ・デコーダ内のピクセルのサブグループのうちの少なくとも1つについてのサブグループ・パラメータのセットを、グループに対応する少なくとも1つのパラメータに基づいて、抽出することができる。サブグループは、ピクチャーグループ(Group of Pictures、GOP)、ピクチャー、タイル、スライス、マクロブロック、符号化単位(Coding Unit、CU)、ブロック、変換単位(Transform Unit、TU)、予測単位(Prediction Unit、PU)などを含むことができる。パーサー(420)はまた、符号化ビデオ・シーケンスから、変換係数、量子化器パラメータ値、動きベクトル等の情報を抽出することができる。
パーサー(420)は、バッファメモリ(415)から受領されたビデオ・シーケンスに対してエントロピー復号/パース動作を実行し、それによりシンボル(421)を生成することができる。
シンボル(421)の再構成は、符号化されたビデオ・ピクチャーまたはその諸部分のタイプ(たとえば、インターおよびイントラ・ピクチャー、インターおよびイントラ・ブロック)および他の要因に依存して、複数の異なるユニットに関わることができる。どのユニットがどのように関わるかは、符号化ビデオ・シーケンスからパーサー(420)によってパースされたサブグループ制御情報によって制御されることができる。パーサー(420)と下記の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確のため、描かれていない。
すでに述べた機能ブロックのほかに、ビデオ・デコーダ(410)は、以下に説明するように、概念的に、いくつかの機能ユニットに分割できる。商業的制約の下で機能する実際的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることができる。しかしながら、開示される主題を記述する目的のためには、下記の機能単位への概念的な細分が適切である。
第1のユニットは、スケーラー/逆変換ユニット(451)である。スケーラー/逆変換ユニット(451)は、パーサー(420)から、量子化された変換係数および制御情報をシンボル(単数または複数)(421)として受領する。制御情報は、どの変換を使用するか、ブロック・サイズ、量子化因子、量子化スケーリング行列などを含む。スケーラー/逆変換ユニット(451)は、集計器(455)に入力できるサンプル値を含むブロックを出力することができる。
場合によっては、スケーラー/逆変換(451)の出力サンプルは、イントラ符号化されたブロック、すなわち、以前に再構成されたピクチャーからの予測情報を使用していないが、現在ピクチャーの、以前に再構成された部分からの予測情報を使用することができるブロックに関することができる。そのような予測情報は、イントラ・ピクチャー予測ユニット(452)によって提供されることができる。場合によっては、イントラ・ピクチャー予測ユニット(452)は、現在ピクチャー・バッファ(458)から取ってきた、周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在ピクチャー・バッファ(458)は、たとえば、部分的に再構成された現在ピクチャーおよび/または完全に再構成された現在ピクチャーをバッファリングする。集計器(455)は、場合によっては、サンプル毎に、イントラ予測ユニット(452)が生成した予測情報を、スケーラー/逆変換ユニット(451)によって提供される出力サンプル情報に加算する。
他の場合には、スケーラー/逆変換ユニット(451)の出力サンプルは、インター符号化され、潜在的には動き補償されたブロックに関することができる。そのような場合、動き補償予測ユニット(453)は、予測のために使用されるサンプルを取ってくるために参照ピクチャー・メモリ(457)にアクセスすることができる。取ってきたサンプルを、ブロックに関するシンボル(421)に従って動き補償した後、これらのサンプルは、集計器(455)によってスケーラー/逆変換ユニットの出力(この場合、残差サンプルまたは残差信号と呼ばれる)に加算されて、それにより出力サンプル情報を生成することができる。動き補償ユニット(453)が予測サンプルを取ってくる参照ピクチャー・メモリ(457)内のアドレスは、シンボル(421)の形で動き補償ユニット(453)に利用可能な動きベクトルによって制御できる。該シンボルは、たとえばX、Y、および参照ピクチャー成分を有することができる。動き補償は、サンプル以下の正確な動きベクトルが使用されるときの参照ピクチャー・メモリ(457)から取ってこられるサンプル値の補間、動きベクトル予測機構などを含むことができる。
集計器(455)の出力サンプルは、ループ・フィルタ・ユニット(456)内でさまざまなループ・フィルタリング技法にかけられることができる。ビデオ圧縮技術は、ループ内フィルタ技術を含むことができる。ループ内フィルタ技術は、符号化ビデオ・シーケンス(符号化されたビデオ・ビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサー(420)からのシンボル(421)としてループ・フィルタ・ユニット(456)に利用可能にされるが、符号化されたピクチャーまたは符号化されたビデオ・シーケンスの(デコード順で)前の部分のデコード中に得られたメタ情報に応答するとともに、以前に再構成されループ・フィルタリングされたサンプル値に応答することもできる。
ループ・フィルタ・ユニット(456)の出力はサンプル・ストリームであることができ、これは、レンダー装置(412)に出力されることができ、また将来のインターピクチャー予測において使用するために参照ピクチャー・メモリ(457)に記憶されることができる。
符号化された画像は、いったん完全に再構成されると、将来の予測のための参照ピクチャーとして使用できる。たとえば、現在ピクチャーに対応する符号化されたピクチャーが完全に再構成され、該符号化されたピクチャーが(たとえば、パーサー(420)によって)参照ピクチャーとして同定されると、現在ピクチャー・バッファ(458)は参照ピクチャーメモリ(457)の一部となることができ、後続の符号化されたピクチャーの再構成を開始する前に、新鮮な現在ピクチャー・バッファが再割当てされることができる。
ビデオ・デコーダ(410)は、ITU-T勧告H.265のような標準における所定のビデオ圧縮技術に従ってデコード動作を実行することができる。符号化ビデオ・シーケンスはビデオ圧縮技術または標準のシンタックスおよびビデオ圧縮技術または標準において文書化されているプロファイルに従うという意味で、符号化されたビデオ・シーケンスは、使用されているビデオ圧縮技術または標準によって規定されたシンタックスに準拠することができる。具体的には、プロファイルはビデオ圧縮技術または標準において利用可能なすべてのツールから、そのプロファイルのもとでの使用のためにそれだけが利用可能なツールとして、ある種のツールを選択することができる。準拠のためにはまた、符号化ビデオ・シーケンスの複雑さが、ビデオ圧縮技術または標準のレベルによって定義される範囲内にあることも必要であることがある。いくつかの場合には、レベルは、最大ピクチャー・サイズ、最大フレーム・レート、最大再構成サンプル・レート(たとえば、毎秒メガサンプルの単位で測られる)、最大参照ピクチャー・サイズなどを制約する。レベルによって設定された限界は、場合によっては、符号化ビデオ・シーケンスにおいて信号伝達される、HRDバッファ管理のための仮設参照デコーダ(Hypothetical Reference Decoder、HRD)仕様およびメタデータを通じてさらに制約されることができる。
ある実施形態において、受領器(431)は、エンコードされたビデオとともに追加の(冗長な)データを受領してもよい。追加データは、符号化されたビデオ・シーケンス(単数または複数)の一部として含まれていてもよい。追加データは、データを適正にデコードするため、および/またはもとのビデオ・データをより正確に再構成するために、ビデオ・デコーダ(410)によって使用されてもよい。追加データは、たとえば、時間的、空間的、または信号対雑音比(SNR)の向上層、冗長スライス、冗長ピクチャー、前方誤り訂正符号などの形でありうる。
図5は、本開示のある実施形態によるビデオ・エンコーダ(503)のブロック図を示している。ビデオ・エンコーダ(503)は、電子装置(520)に含まれる。電子装置(520)は、送信器(540)(たとえば、送信回路)を含む。ビデオ・エンコーダ(503)は、図3の例におけるビデオ・エンコーダ(303)の代わりに使用できる。
ビデオ・エンコーダ(503)は、ビデオ・エンコーダ(503)によって符号化されるべきビデオ画像を捕捉することができるビデオ源(501)(これは図5の例では電子装置(520)の一部ではない)からビデオ・サンプルを受領することができる。別の例では、ビデオ源(501)は、電子装置(520)の一部である。
ビデオ源(501)は、任意の好適なビット深さ(たとえば、8ビット、10ビット、12ビット、…)、任意の色空間(たとえば、BT.601 YCrCB、RGB、…)および任意の好適なサンプリング構造(たとえば、YCrCb 4:2:0、YCrCb 4:4:4)でありうるデジタル・ビデオ・サンプル・ストリームの形で、ビデオ・エンコーダ(503)によって符号化されるべき源ビデオ・シーケンスを提供することができる。メディア・サービス・システムにおいては、ビデオ源(501)は、事前に準備されたビデオを記憶している記憶装置であってもよい。ビデオ会議システムにおいては、ビデオ源(501)は、ローカルでの画像情報をビデオ・シーケンスとして捕捉するカメラであってもよい。ビデオ・データは、シーケンスで見たときに動きを付与する複数の個々のピクチャーとして提供されてもよい。ピクチャー自体は、ピクセルの空間的アレイとして編成されてもよく、各ピクセルは、使用中のサンプリング構造、色空間などに依存して、一つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。下記の説明は、サンプルに焦点を当てる。
ある実施形態によれば、ビデオ・エンコーダ(503)は、源ビデオ・シーケンスのピクチャーを、リアルタイムで、またはアプリケーションによって要求される任意の他の時間的制約の下で、符号化および圧縮して、符号化ビデオ・シーケンス(543)にすることができる。適切な符号化速度を施行することは、コントローラ(550)の一つの機能である。いくつかの実施形態では、コントローラ(550)は、以下に記載されるような他の機能ユニットを制御し、該他の機能ユニットに機能的に結合される。かかる結合は、明確のために描かれていない。コントローラ(550)によって設定されるパラメータは、レート制御に関連するパラメータ(ピクチャー・スキップ、量子化器、レート‐歪み最適化技法のラムダ値、…)、ピクチャー・サイズ、ピクチャーグループ(GOP)レイアウト、最大動きベクトル許容参照領域などを含むことができる。コントローラ(550)は、ある種のシステム設計のために最適化されたビデオ・エンコーダ(503)に関する他の好適な機能を有するように構成できる。
いくつかの実施形態では、ビデオ・エンコーダ(503)は、符号化ループにおいて動作するように構成される。思い切って単純化した説明として、一例では、符号化ループは、源符号化器(530)(たとえば、符号化されるべき入力ピクチャーと参照ピクチャー(算数または複数)に基づいてシンボル・ストリームのようなシンボルを生成することを受け持つ)と、ビデオ・エンコーダ(503)に埋め込まれた(ローカル)デコーダ(533)とを含むことができる。デコーダ(533)は、(リモートの)デコーダも生成するであろうのと同様の仕方でサンプル・データを生成するよう前記シンボルを再構成する(開示される主題において考慮されるビデオ圧縮技術では、シンボルと符号化ビデオ・ビットストリームとの間のどの圧縮も無損失である)。再構成されたサンプル・ストリーム(サンプル・データ)は、参照ピクチャー・メモリ(534)に入力される。シンボル・ストリームのデコードは、デコーダ位置(ローカルかリモートか)によらずビット正確な結果をもたらすので、参照ピクチャー・メモリ(534)の内容もローカル・エンコーダとリモート・エンコーダの間でビット正確である。言い換えると、エンコーダの予測部は、デコーダがデコード中に予測を使用するときに「見る」のとまったく同じサンプル値を参照ピクチャー・サンプルとして「見る」。参照ピクチャー同期性のこの基本原理(および、たとえば、チャネルエラーのために同期性が維持できない場合の結果として生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(533)の動作は、図4との関連ですでに上記で詳細に述べた「リモート」デコーダ、たとえばビデオ・デコーダ(410)の動作と同じであってよい。しかしながら、暫時図4も参照すると、シンボルが利用可能であり、エントロピー符号化器(545)およびパーサー(420)による、シンボルの符号化ビデオ・シーケンスへのエンコード/デコードが可逆でありうるので、バッファメモリ(415)およびパーサー(420)を含むビデオ・デコーダ(410)のエントロピー復号部は、ローカル・デコーダ(533)においては完全には実装されなくてもよい。
この時点で行なうことができる観察は、デコーダ内に存在するパース/エントロピー復号を除くどのデコーダ技術も、対応するエンコーダ内で実質的に同一の機能的形態で存在する必要があることである。このため、開示される主題はデコーダ動作に焦点を当てる。エンコーダ技術の記述は、包括的に記述されるデコーダ技術の逆であるため、短縮することができる。ある種の領域においてのみ、より詳細な説明が必要であり、以下に提供される。
動作中、いくつかの例では、源符号化器(530)は、「参照ピクチャー」として指定された、ビデオ・シーケンスからの一つまたは複数の以前に符号化されたピクチャーを参照して、入力ピクチャーを予測的に符号化する、動き補償された予測符号化を実行することができる。このようにして、符号化エンジン(532)は、入力ピクチャーのピクセル・ブロックと、入力ピクチャーに対する予測参照として選択されうる参照ピクチャー(単数または複数)のピクセル・ブロックとの間の差分を符号化する。
ローカル・ビデオ・デコーダ(533)は、源符号化器(530)によって生成されたシンボルに基づいて、参照ピクチャーとして指定されうるピクチャーの符号化されたビデオ・データをデコードすることができる。符号化エンジン(532)の動作は、有利には、損失のあるプロセスでありうる。符号化されたビデオ・データがビデオ・デコーダ(図5には示さず)でデコードされうるとき、再構成されたビデオ・シーケンスは、典型的には、いくつかのエラーを伴う源ビデオ・シーケンスの複製でありうる。ローカル・ビデオ・デコーダ(533)は、ビデオ・デコーダによって参照ピクチャーに対して実行されうるデコード・プロセスを複製し、再構成された参照ピクチャーを参照ピクチャー・キャッシュ(534)に格納させることができる。このようにして、ビデオ・エンコーダ(503)は、遠端のビデオ・デコーダによって得られるであろう再構成された参照ピクチャーとしての共通の内容を(伝送エラーがなければ)有する再構成された参照ピクチャーのコピーを、ローカルに記憶することができる。
予測器(535)は、符号化エンジン(532)について予測探索を実行することができる。すなわち、符号化されるべき新しいピクチャーについて、予測器(535)は、新しいピクチャーのための適切な予測参照のはたらきをしうるサンプル・データ(候補参照ピクセル・ブロックとして)またはある種のメタデータ、たとえば参照ピクチャー動きベクトル、ブロック形状などを求めて、参照ピクチャー・メモリ(534)を探索することができる。予測器(535)は、適切な予測参照を見出すために、サンプル・ブロック/ピクセル・ブロック毎に(on a sample block-by-pixel block basis)動作しうる。場合によっては、予測器(535)によって得られた検索結果によって決定されるところにより、入力ピクチャーは、参照ピクチャー・メモリ(534)に記憶された複数の参照ピクチャーから引き出された予測参照を有することができる。
コントローラ(550)は、たとえば、ビデオ・データをエンコードするために使用されるパラメータおよびサブグループ・パラメータの設定を含め、源符号化器(530)の符号化動作を管理してもよい。
上記の機能ユニットすべての出力は、エントロピー符号化器(545)におけるエントロピー符号化を受けることができる。エントロピー符号化器(545)は、ハフマン符号化、可変長符号化、算術符号化などといった技術に従ってシンボルを無損失圧縮することによって、さまざまな機能ユニットによって生成されたシンボルを符号化ビデオ・シーケンスに変換する。
送信器(540)は、エントロピー符号化器(545)によって生成される符号化ビデオ・シーケンスをバッファに入れて、通信チャネル(560)を介した送信のために準備することができる。通信チャネル(560)は、エンコードされたビデオ・データを記憶する記憶装置へのハードウェア/ソフトウェア・リンクであってもよい。送信器(540)は、ビデオ符号化器(530)からの符号化されたビデオ・データを、送信されるべき他のデータ、たとえば符号化されたオーディオ・データおよび/または補助データ・ストリーム(源は図示せず)とマージすることができる。
コントローラ(550)は、ビデオ・エンコーダ(503)の動作を管理してもよい。符号化の間、コントローラ(550)は、それぞれの符号化されたピクチャーに、ある符号化ピクチャー・タイプを割り当てることができる。符号化ピクチャー・タイプは、それぞれのピクチャーに適用されうる符号化技術に影響しうる。たとえば、ピクチャーはしばしば、以下のピクチャー・タイプのうちの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つの以前に符号化された参照ピクチャーを参照して、空間的予測を介して、または時間的予測を介して予測的に符号化されてもよい。
ビデオ・エンコーダ(503)は、ITU-T勧告H.265などの所定のビデオ符号化技術または標準に従って符号化動作を実行することができる。その動作において、ビデオ・エンコーダ(503)は、入力ビデオ・シーケンスにおける時間的および空間的冗長性を活用する予測符号化動作を含む、さまざまな圧縮動作を実行することができる。よって、符号化されたビデオ・データは、使用されるビデオ符号化技術または標準によって指定されるシンタックスに準拠しうる。
ある実施形態において、送信器(540)は、エンコードされたビデオと一緒に追加データを送信してもよい。源符号化器(530)は、符号化ビデオ・シーケンスの一部としてそのようなデータを含めてもよい。追加データは、時間的/空間的/SNR向上層、冗長ピクチャーおよびスライスのような他の形の冗長データ、SEIメッセージ、VUIパラメータ・セット・フラグメントなどを含んでいてもよい。
ビデオは、時間的シーケンスにおいて複数の源ピクチャー(ビデオ・ピクチャー)として捕捉されてもよい。ピクチャー内予測(しばしば、イントラ予測と略される)は、所与のピクチャーにおける空間的相関を利用し、ピクチャー間予測は、ピクチャー間の(時間的または他の)相関を利用する。一例では、現在ピクチャーと呼ばれるエンコード/デコード対象の特定のピクチャーは、ブロックに分割される。現在ピクチャー内のブロックが、ビデオにおける、前に符号化され、かつ、まだバッファに入れられている参照ピクチャー内の参照ブロックに類似する場合、現在ピクチャー内のそのブロックは、動きベクトルと呼ばれるベクトルによって符号化できる。動きベクトルは、参照ピクチャー内の参照ブロックをポイントし、複数の参照ピクチャーが使用される場合には、参照ピクチャーを同定する第3の次元を有することができる。
いくつかの実施形態において、ピクチャー間予測において双予測技術が使用できる。双予測技術によれば、いずれもビデオにおいて現在ピクチャーよりデコード順で先行する(ただし、表示順では、それぞれ過去および将来であってもよい)第1の参照ピクチャーおよび第2の参照ピクチャーのような2つの参照ピクチャーが使用される。現在ピクチャー内のブロックは、第1の参照ピクチャー内の第1の参照ブロックをポイントする第1動きベクトルと、第2の参照ピクチャー内の第2の参照ブロックをポイントする第2動きベクトルとによって符号化できる。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測できる。
さらに、符号化効率を改善するために、ピクチャー間予測においてマージモード技法が使用できる。
本開示のいくつかの実施形態によれば、ピクチャー間予測およびピクチャー内予測などの予測は、ブロックの単位で実行される。たとえば、HEVC規格によれば、ビデオ・ピクチャーのシーケンスにおけるピクチャーは、圧縮のために符号化ツリー単位(CTU)に分割され、ピクチャーにおけるそれらのCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは、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ピクセルなど、ピクセルについての値(たとえば、ルーマ値)の行列を含む。
図6は、本開示の別の実施形態によるビデオ・エンコーダ(603)の図を示す。ビデオ・エンコーダ(603)は、ビデオ・ピクチャーのシーケンス内の現在ビデオ・ピクチャー内のサンプル値の処理ブロック(たとえば、予測ブロック)を受領し、処理ブロックを、符号化ビデオ・シーケンスの一部である符号化されたピクチャーにエンコードするように構成される。一例では、ビデオ・エンコーダ(603)は、図3の例におけるビデオ・エンコーダ(303)の代わりに使用される。
HEVCの例では、ビデオ・エンコーダ(603)は、8×8サンプルなどの予測ブロックのような処理ブロックについてサンプル値の行列を受領する。ビデオ・エンコーダ(603)は、処理ブロックが、イントラモード、インターモード、または双予測モードのどれを使用して、最もよく符号化されるかを、たとえばレート‐歪み最適化を使用して、判別する。処理ブロックがイントラモードで符号化される場合、ビデオ・エンコーダ(603)は、処理ブロックを符号化されたピクチャーにエンコードするためにイントラ予測技法を使用してもよく;処理ブロックがインターモードまたは双予測モードで符号化される場合、ビデオ・エンコーダ(603)は、処理ブロックを符号化されたピクチャーにエンコードするために、それぞれ、インター予測技法または双予測技法を使用してもよい。ある種のビデオ符号化技術では、マージモード(merge mode)は、動きベクトルが一つまたは複数の動きベクトル予測子から導出されるが前記予測子の外の符号化された動きベクトル成分の利益のない、ピクチャー間予測サブモードでありうる。ある種の他のビデオ符号化技術では、対象ブロックに適用可能な動きベクトル成分が存在してもよい。一例では、ビデオ・エンコーダ(603)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他のコンポーネントを含む。
図6の例では、ビデオ・エンコーダ(603)は、インター・エンコーダ(630)、イントラ・エンコーダ(622)、残差計算器(623)、スイッチ(626)、残差エンコーダ(624)、全般コントローラ(621)、およびエントロピー符号化器(625)を、図6に示されるように一緒に結合されて含む。
インター・エンコーダ(630)は、現在ブロック(たとえば、処理ブロック)のサンプルを受領し、該ブロックを参照ピクチャー内の一つまたは複数の参照ブロック(たとえば、以前のピクチャーおよび後のピクチャー内のブロック)と比較し、インター予測情報(たとえば、インター・エンコード技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、該インター予測情報に基づいて、任意の好適な技法を使用してインター予測結果(たとえば、予測されたブロック)を計算するように構成される。いくつかの例では、前記参照ピクチャーは、エンコードされたビデオ情報に基づいてデコードされた、デコードされた参照ピクチャーである。
イントラ・エンコーダ(622)は、現在ブロック(たとえば、処理ブロック)のサンプルを受領し、場合によっては、該ブロックを、同じピクチャー内ですでに符号化されているブロックと比較し、変換後に量子化された係数を生成し、場合によっては、イントラ予測情報(たとえば、一つまたは複数のイントラ・エンコード技法によるイントラ予測方向情報)も生成するように構成される。一例では、イントラ・エンコーダ(622)はまた、該イントラ予測情報および同じピクチャー内の参照ブロックに基づいて、イントラ予測結果(たとえば、予測されたブロック)を計算する。
全般コントローラ(621)は、全般制御データを決定し、全般制御データに基づいてビデオ・エンコーダ(603)の他のコンポーネントを制御するように構成される。一例では、全般コントローラ(621)は、ブロックのモードを決定し、そのモードに基づいて制御信号をスイッチ(626)に提供する。たとえば、モードがイントラモードである場合、全般コントローラ(621)は、残差計算器(623)による使用のためにイントラモードの結果を選択するようスイッチ(626)を制御し、イントラ予測情報を選択し、イントラ予測情報をビットストリームに含めるようエントロピー・エンコーダ(625)を制御する;モードがインターモードである場合、全般コントローラ(621)は、残差計算器(623)による使用のためにインター予測の結果を選択するようスイッチ(626)を制御し、インター予測情報を選択し、インター予測情報をビットストリームに含めるようエントロピー・エンコーダ(625)を制御する。
残差計算器(623)は、受領されたブロックと、イントラ・エンコーダ(622)またはインター・エンコーダ(630)から選択された予測結果との差(残差データ)を計算するように構成される。残差エンコーダ(624)は、残差データに基づいて、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(624)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化処理にかけられ、量子化された変換係数を得る。さまざまな実施形態において、ビデオ・エンコーダ(603)は、残差デコーダ(628)をも含む。残差デコーダ(628)は、逆変換を実行して、デコードされた残差データを生成するように構成される。デコードされた残差データは、イントラ・エンコーダ(622)およびインター・エンコーダ(630)によって好適に使用されることができる。たとえば、インター・エンコーダ(630)は、デコードされた残差データおよびインター予測情報に基づいて、デコードされたブロックを生成することができ、イントラ・エンコーダ(622)は、デコードされた残差データおよびイントラ予測情報に基づいて、デコードされたブロックを生成することができる。デコードされたブロックは、デコードされたピクチャーを生成するために好適に処理され、デコードされたピクチャーは、メモリ回路(図示せず)内でバッファリングされ、いくつかの例では参照ピクチャーとして使用されることができる。
エントロピー・エンコーダ(625)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピー・エンコーダ(625)は、HEVC標準のような好適な標準に従ってさまざまな情報を含めるように構成される。一例では、エントロピー・エンコーダ(625)は、全般制御データ、選択された予測情報(たとえば、イントラ予測情報またはインター予測情報)、残差情報、および他の好適な情報をビットストリーム内に含めるように構成される。開示される主題によれば、インターモードまたは双予測モードのいずれかのマージ・サブモードにおいてブロックを符号化する場合は、残差情報は存在しないことを注意しておく。
図7は、本開示の別の実施形態によるビデオ・デコーダ(710)の図を示す。ビデオ・デコーダ(710)は、符号化されたビデオ・シーケンスの一部である符号化されたピクチャーを受領し、符号化されたピクチャーをデコードして、再構成されたピクチャーを生成するように構成される。一例では、ビデオ・デコーダ(710)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用される。
図7の例では、ビデオ・デコーダ(710)は、エントロピー・デコーダ(771)、インター・デコーダ(780)、残差デコーダ(773)、再構成モジュール(774)、およびイントラ・デコーダ(772)が図7に示されるように一緒に結合されたものを含む。
エントロピー・デコーダ(771)は、符号化されたピクチャーから、その符号化されたピクチャーが構成されるシンタックス要素を表わすある種のシンボルを再構成するように構成されることができる。そのようなシンボルは、たとえば、ブロックが符号化されるモード(たとえば、イントラモード、インターモード、双予測モード、マージ・サブモードまたは別のサブモードにおける後者の2つ)、イントラ・デコーダ(772)またはインター・デコーダ(780)によってそれぞれ予測のために使用されるある種のサンプルまたはメタデータを同定することができる予測情報(たとえば、イントラ予測情報またはインター予測情報など)、たとえば量子化された変換係数の形の残差情報などを含むことができる。一例では、予測モードがインターまたは双予測モードである場合、インター予測情報がインター・デコーダ(780)に提供され;予測タイプがイントラ予測タイプである場合には、イントラ予測情報がイントラ・デコーダ(772)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(773)に提供される。
インター・デコーダ(780)は、インター予測情報を受領し、該インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラ・デコーダ(772)は、イントラ予測情報を受領し、該イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(773)は、逆量子化を実行して量子化解除された変換係数を抽出し、量子化解除された変換係数を処理して、残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(773)はまた、ある種の制御情報(量子化器パラメータ(QP)を含む)をも必要とすることがあり、その情報は、エントロピー・デコーダ(771)によって提供されてもよい(これは、低ボリュームの制御情報のみであるため、データ経路は描かれていない)。
再構成モジュール(774)は、空間領域において、残差デコーダ(773)によって出力される残差と、予測結果(場合に応じてイントラまたはインター予測モジュールによって出力される)とを組み合わせて、再構成されたブロックを形成するように構成され、該再構成されたブロックは再構成されたピクチャーの一部であってもよく、該再構成されたピクチャーは再構成されたビデオの一部であってもよい。視覚的品質を改善するためにブロッキング解除動作などの他の好適な動作が実行されることができることを注意しておく。
なお、ビデオ・エンコーダ(303)、(503)、(603)、およびビデオ・デコーダ(310)、(410)、(710)は、任意の好適な技法を用いて実装できる。ある実施形態では、ビデオ・エンコーダ(303)、(503)、(603)およびビデオ・デコーダ(310)、(410)、(710)は、一つまたは複数の集積回路を使用して実装できる。別の実施形態では、ビデオ・エンコーダ(303)、(503)、(603)、およびビデオ・デコーダ(310)、(410)、(710)は、ソフトウェア命令を実行する一つまたは複数のプロセッサを使用して実装できる。
VVCにおけるイントラ予測
図8Aは、いくつかの例(たとえば、VVC)における例示的なイントラ予測方向および対応するイントラ予測モードの説明図を示す。図8Aでは、合計95個のイントラ予測モード(モード-14~80)があり、このうちモード0は平面モード(INTRA_PLANARと称される)であり、モード1はDCモード(INTRA_DCと称される)であり、他のモード(モード-14~-1およびモード2~80)は角度(または方向性)モード(INTRA_ANGULARとも称される)である。角度(または方向性)モードのうち、モード18(INTRA_ANGULAR18と称される)は水平モード、モード50(INTRA_ANGULAR50と称される)は垂直モード、モード2(INTRA_ANGULAR2と称される)は左下方向を指す対角モード、モード34(INTRA_ANGULAR34と称される)は左上方向を指す対角モード、モード66(INTRA_ANGULAR66と称される)は右上方向を指す対角モードである。モード-14~-1およびモード67~80は、広角イントラ予測(wide-angle intra prediction、WAIP)モードと称される。例示的な角度イントラ予測モードおよびそれらの対応するイントラ予測角度は、図8Bで表にされている。
位置依存予測組み合わせ(PDPC)フィルタリング・プロセス
本開示の諸側面によれば、位置依存予測組み合わせ(position dependent prediction combination、PDPC)は、信号伝達なしで以下のイントラモードに適用され得る:平面、DC、WAIPモード、水平、垂直、左下の角度モード(モード2)およびその8つの隣接する角度モード(モード3~10)、ならびに右上の角度モード(モード66)およびその8つの隣接する角度モード(モード58~65)。
ある実施形態では、現在ブロック内の位置(x,y)に位置する予測サンプルpred'[x][y]は、イントラ予測モード(たとえば、DC、平面、または角度モード)および式(1)による参照サンプルの線形結合を使用して予測される。
ここで、pred[x][y]はイントラ予測モードから帰結するイントラ予測値であり、R(x,-1)は現在サンプル(x,y)の最上部の基準線に位置し、現在サンプル(x,y)と同じ水平座標を有する(フィルタリングされていない)参照サンプルを表わし、R(-1,y)は現在サンプル(x,y)の左の基準線に位置し、現在サンプル(x,y)と同じ垂直座標を有する(フィルタリングされていない)参照サンプルを表わし、R(-1,-1)は現在ブロックの左上隅に位置する参照サンプルを表わし、wT、wLおよびwTLは重み因子を示す。
ある実施形態では、イントラ予測モードがDCモードである場合、重み因子は、式(2)~(5)によって計算されてもよい。
ここで、wTは参照サンプル(x,-1)の重み付け因子を表わし、wLは参照サンプル(-1,y)の重み付け因子を表わし、wTLは左上の参照サンプル(-1,-1)の重み付け因子を表わし、nScale(重み付け因子減衰率と称される)は、これらの重み付け因子が軸に沿ってどのくらい速く減少するか(wLはたとえば、x軸に沿って左から右に減少する、またはwTはy軸に沿って上から下に減少する)を指定する。式(2)および式(3)の定数32は、近傍サンプル(たとえば、上の近傍サンプル、左の近傍サンプル、または左上の近傍サンプル)の初期重み付け因子を示す。初期重み付け因子は、現在ブロックの左上のサンプルにも割り当てられる。PDPCフィルタリング・プロセスにおける近傍サンプルの重み付け因子は、初期重み付け因子以下である。
ある実施形態では、イントラ予測モードが平面モードである場合、wTLは0に設定され、イントラ予測モードが水平モードである場合、wTLはwTに等しく設定され、イントラ予測モードが垂直モードである場合、wTLはwLに等しく設定される。PDPC重み付け因子は、加算演算およびシフト演算で計算できる。pred'[x][y]の値は、式(1)を使って単一ステップで計算できる。
図9Aは、DCモードにおける(0,0)における予測サンプルのための例示的な重み付け因子を示す。図9Aの例では、現在ブロックは4×4ブロック(幅=高さ=4)であり、よってnScaleは0である。次いで、wTは32、wLは32、wTLは4である。
図9Bは、DCモードにおける(1,0)における予測サンプルのための例示的な重み付け因子を示す。図9Bの例では、現在ブロックは4×4ブロック(幅=高さ=4)であり、よってnScaleは0である。次いで、wTは32、wLは8、wTLは2である。
いくつかの実施形態では、PDPCフィルタリング・プロセスがDC、平面、水平、および垂直イントラモードに適用される場合、HEVC DCモード境界フィルタまたは水平/垂直モード・エッジ・フィルタなどの追加的な境界フィルタは必要とされない。
例示的なPDPCフィルタリング・プロセス
いくつかの例では、PDPCフィルタリング・プロセスの入力は、以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(6)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(7)~(8)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。修正された予測されたサンプルは、式(9)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(10)~式(14)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(15)~式(19)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR2(たとえば、2、またはモード2)またはINTRA_ANGULAR66(たとえば、66、またはモード66)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(20)~式(24)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]に基づいて決定できる。
変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、式(25)~(28)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(29)~(33)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]に基づいて決定されうる。
変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、式(34)~(37)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(38)~(42)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(43)に従って導出されうる。
いくつかの例(たとえば、VVCにおける)では、nCbW×nCbHの現在ブロック内のnTbW×nTbHの変換ブロックについて、PDPCを用いたイントラ予測を実行するとき、現在ブロックがイントラサブパーティション(ISP)モードで符号化されていない場合(すなわち、VVCドラフトv5に示されるように、IntraSubPartitionsSplitTypeがISP_NO_SPLITと等しい場合)、上の利用可能な参照サンプルの範囲(refW)は2×nTbWとして設定され、左の利用可能な参照サンプルの範囲(refH)は2×nTbHとして設定される。そうではなく、ISPが現在ブロックについて適用される場合(すなわち、VVCドラフトv5に示されるように、IntraSubPartitionsSplitTypeがISP_NO_SPLITと等しくない場合)、上の利用可能な参照サンプルの範囲(refW)は2×nCbWとして設定され、左の利用可能な参照サンプルの範囲(refH)は2×nCbHとして設定される。
PDPCのための改善技法
上記のセクション「例示的なPDPCフィルタリング・プロセス」またはいくつかの関連する例(たとえばVTM5.0におけるもの)では、異なるPDPCプロセスが、対角イントラ予測モードおよび対角イントラ予測モードに隣接する諸モードを有するイントラ符号化ブロックに適用されてもよい。たとえば、異なるPDPCプロセスがモード2およびその隣接モード(たとえば、モード・インデックスが10以下)に適用されてもよい。別の例では、異なるPDPCプロセスが、モード66およびその隣接するモード(たとえば、モード・インデックスが58以上)に適用される。しかしながら、対角予測モードとそれらの隣接モードの予測プロセスは類似しており、これらのモードに対して異なるPDPCプロセスを維持する明確な利点はない。よって、本開示の諸側面は、PDPCプロセスのための改善技法を提供する。
本願の技法または方法は、別々に、または任意の順序で組み合わせて使用されうる。以下のセクションでは、位置依存の重み付けを用いて予測サンプルと近傍の再構成されたサンプルの線形結合を適用する、予測サンプルのための位置依存境界フィルタリング・プロセスのための一般的な用語として、PDPCが使用されることがあり、その結果がもとの予測サンプルを置き換えるために使用されうることを注意しておく。よって、PDPCプロセスは、上記のセクション「例示的なPDPCフィルタリング・プロセス」に記載されたプロセスに限定されない。
さらに、以下の説明では、対角イントラ予測モードは、図8Aにおけるモード2およびモード66であってもよく、モード2に隣接する諸モードは、水平モードよりも小さいモード・インデックスをもつ(たとえば、イントラモード・インデックスが18未満)ものであってもよく、モード66に隣接する諸モードは、垂直モードよりも大きいモード・インデックスをもつ(たとえば、イントラモード・インデックスが50を超える)ものであってもよい。
本開示の諸側面によれば、同じPDPCプロセス(たとえば、同じ範囲の利用可能な参照サンプル、各位置について適用される同じ重み付け因子)が、対角イントラ予測モードおよび対角イントラ予測モードに隣接する諸モードに適用される。
ある実施形態では、対角イントラ予測モードは、図8Aにおけるモード2およびモード66であってもよく、対角イントラ予測モードに隣接する諸モードは、図8Aにおけるモード-1~-14、モード3~10、モード58~65、およびモード67~80でありうる。
ある実施形態では、対角予測モードを使用するブロックについては、利用可能な近傍参照サンプルのサブセットのみがPDPCプロセスによって使用されることができるが、対角予測モードに隣接する諸モードを用いるブロックについては、利用可能な近傍参照サンプル全部がPDPCプロセスによって使用されることができる。たとえば、対角イントラ予測モード(たとえば、VVCドラフトv5におけるモード2およびモード66)を使用して予測されたブロックについてのPDPCプロセスにおいては、refW-K個の上の近傍参照サンプルおよびrefH-K個の左の近傍参照サンプルのみが使用され、ここで、refWおよびrefHはそれぞれ、利用可能な上および左の参照サンプルの総数を示し(VVCドラフトv5の「一般的なイントラサンプル予測」の節で規定され、上記のセクション「例示的なPDPCフィルタリング・プロセス」にも記載されている)、Kは正の整数である(たとえば、1、2、3または4)。
ある実施形態では、対角モード(たとえば、VVCドラフトv5におけるモード2およびモード66)については、右端のサンプルおよび下端のサンプルを除き、すべての上および左の利用可能な参照サンプルがPDPCのために使用できる。
PDPCプロセスの例示的な修正
いくつかの実施形態(たとえば、以下の実施形態A~E)において、PDPCプロセスは、以下のように修正することができる。
実施形態A
PDPCフィルタリング・プロセスの例示的な入力は以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(44)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(45)~(46)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。いくつかの例では、修正された予測されたサンプルは、式(47)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(48)~式(52)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(53)~式(57)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]に基づいて決定されうる。
たとえば、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、式(58)~(61)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(62)~(66)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]に基づいて決定されうる。
たとえば、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、式(67)~(70)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(71)~(75)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(76)に従って導出されうる。
実施形態Aと上記のセクション「例示的なPDPCフィルタリング・プロセス」との間の違いは、実施形態Aでは、対角イントラ予測モードおよび対角イントラ予測モードに隣接する諸モードに同じPDPCプロセスが適用されることである。一例では、モード2およびモード2に隣接するモード(たとえば、モード・インデックスが10以下)に同じPDPCプロセスが適用される。別の例では、同じPDPCプロセスがモード66およびモード66に隣接するモード(たとえば、モード・インデックスが58以上)に適用される。
実施形態B
PDPCフィルタリング・プロセスの例示的な入力は、以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(77)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(78)~(79)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。いくつかの例では、修正された予測されたサンプルは、式(80)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(81)~式(85)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(86)~式(90)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXPos[y]、dXInt[y]、およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXPos[y]、dXInt[y]、およびdX[x][y]に基づいて決定できる。
変数dXPos[y]、dXInt[y]、およびdX[x][y]は、式(91)~(93)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(94)~(98)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYPos[x]、dYInt[x]、およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYPos[x]、dYInt[x]、およびdY[x][y]に基づいて決定されうる。
たとえば、変数dYPos[x]、dYInt[x]、およびdY[x][y]は、式(99)~(101)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(102)~(106)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(107)に従って導出されうる。
実施形態Aと実施形態Bとの間の違いは、実施形態Bでは、イントラ予測モードpreModeIntraがINTRA_ANGULAR10以下である場合に、dXFrac[y](式(59))が計算されず、dXInt[y]が異なる仕方で計算されてもよく(すなわち、式(60)対式(92))、よってrefT[x][y]およびwT[y]が実施形態Aとは異なる仕方で計算される(すなわち、式(63)対式(95)、式(64)対式(96))ということである。同様に、イントラ予測モードpreModeIntraがINTRA_ANGULAR58以上である場合、実施形態Bでは、dYFrac[x](式(68))が計算されず、dYInt[x]が異なる仕方で計算されてもよく(すなわち、式(69)対式(100))、よってrefL[x][y]およびwL[y]が実施形態Aとは異なる仕方で計算される(すなわち、式(71)対式(102)、式(74)対式(105))ということである。
実施形態C
PDPCフィルタリング・プロセスの例示的な入力は、以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(108)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(109)~(110)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。いくつかの例では、修正された予測されたサンプルは、式(111)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(112)~式(116)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(117)~式(121)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXInt[y]およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXInt[y]およびdX[x][y]に基づいて決定できる。
変数dXInt[y]およびdX[x][y]は、式(122)~(123)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(124)~(128)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYInt[x]およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYInt[x]およびdY[x][y]に基づいて決定されうる。
たとえば、変数dYInt[x]、およびdY[x][y]は、式(129)~(130)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(131)~(135)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(136)に従って導出されうる。
実施形態Bと実施形態Cとの間の違いは、実施形態Cでは、イントラ予測モードがINTRA_ANGULAR10以下である場合に、dXPos[y](式(91))が計算されず、dXInt[y]が異なる仕方で計算されてもよい(すなわち、式(92)対式(122))ということである。同様に、イントラ予測モードpreModeIntraがINTRA_ANGULAR58以上である場合、実施形態Cでは、dYPos[x](式(99))が計算されず、dYInt[x]が異なる仕方で計算されてもよい(すなわち、式(100)対式(129))。
実施形態D
PDPCフィルタリング・プロセスの例示的な入力は以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(137)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(138)~(139)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。修正された予測されたサンプルは、式(140)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(141)~式(145)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(146)~式(150)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR2(たとえば、2またはモード2)に等しい場合、各位置(x,y)について、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]に基づいて決定できる。
変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、式(151)~(154)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(155)~(159)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]に基づいて決定できる。
変数dXPos[y]、dXFrac[y]、dXInt[y]、およびdX[x][y]は、式(160)~(163)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(164)~(168)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR66(たとえば、66、またはモード66)に等しい場合、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]に基づいて決定されうる。
変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、式(169)~(172)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(173)~(177)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]に基づいて決定されうる。
たとえば、変数dYPos[x]、dYFrac[x]、dYInt[x]、およびdY[x][y]は、式(178)~(181)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(182)~(186)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(187)に従って導出されうる。
実施形態Dは実施形態Aと似ているが、モード2およびモード66について異なる修正されたPDPCプロセスを記載している。
実施形態E
PDPCフィルタリング・プロセスの例示的な入力は、以下を含む:
・preModeIntraによって表わされるイントラ予測モード;
・nTbWと表わされる現在ブロックの幅;
・nTbHによって表わされる現在ブロックの高さ;
・refWによって表わされる参照サンプルの幅;
・refHによって表わされる参照サンプルの高さ;
・predSamples[x][y]によって表わされる予測されたサンプル、ここでx=0…nTbW-1、y=0…nTbH-1;
・p[x][y]によって表わされるフィルタリングされていない参照(近傍とも称される)サンプル、ここでx=-1、y=-1…refH-1およびx=0…refW-1、y=-1;
・cIdxによって表わされる現在ブロックの色成分。
cIdxの値に依存して、関数clip1Cmpは次のように設定される:
・cIdxが0に等しい場合、clip1CmpはClip1Yに等しいと設定される;
・それ以外の場合は、clip1CmpはClip1Cに等しいと設定される。
さらに、PDPCフィルタリング・プロセスの出力は、修正された予測されたサンプルpredSamples'[x][y]であり、x=0…nTbW-1、y=0…nTbH-1である。
次いで、スケーリング因子nScaleは式(188)によって計算されうる。
さらに、参照サンプル・アレイmainRef[x]、x=0…refWは、現在ブロックの上方にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよく、別の参照サンプル・アレイsideRef[y]、y=0…refHは、現在ブロックの左にあるフィルタリングされていない参照サンプルのアレイとして定義されてもよい。参照サンプル・アレイmainRef[x]およびsideRef[y]は、それぞれ式(189)~(190)に従って、フィルタリングされていない参照サンプルから導出されてもよい。
現在ブロック内の各位置(x,y)について、PDPC計算は、refT[x][y]と記される上部にある参照サンプル、refL[x][y]と記される左にある参照サンプル、隅における参照サンプルp[-1,-1]を使用することができる。いくつかの例では、修正された予測されたサンプルは、式(191)によって計算されてもよく、結果は、色成分を示す変数cIdxに従って好適にクリップされる。
参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、イントラ予測モードpreModeIntraに基づいて決定できる。
イントラ予測モードpreModeIntraがINTRA_PLANAR(たとえば、0、平面モード、またはモード0)またはINTRA_DC(たとえば、1、DCモード、またはモード1)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(192)~式(196)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR18(たとえば、18、水平モード、またはモード18)またはINTRA_ANGULAR50(たとえば、50、垂直モード、またはモード50)に等しい場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(197)~式(201)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR10(たとえば、10またはモード10)以下である場合、各位置(x,y)について、変数dXInt[y]およびdX[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されてもよい。invAngleは、各イントラ予測モードに対して対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dXInt[y]およびdX[x][y]に基づいて決定されうる。
たとえば、変数dXInt[y]およびdX[x][y]は、式(202)~(203)に従って決定されうる。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(204)~(208)に従って決定されうる。
そうではなく、イントラ予測モードpreModeIntraがINTRA_ANGULAR58(たとえば、58、またはモード58)以上である場合、変数dYInt[x]およびdY[x][y]は、イントラ予測モードpreModeIntraの関数である変数invAngleに基づいて導出されうる。invAngleは、各イントラ予測モードについて対応するinvAngle値を格納するルックアップテーブルに基づいて決定でき、次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLが、変数dYInt[x]およびdY[x][y]に基づいて決定されうる。
たとえば、変数dYInt[x]、およびdY[x][y]は、式(209)~(210)に従って決定されてもよい。
次いで、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLは、式(211)~(215)に従って決定されうる。
そうではなく、変数preModeIntraがモード11~57の間であり、モード18およびモード50のいずれでもない場合、参照サンプルrefT[x][y]、refL[x][y]、および重み付け因子wL、wTおよびwTLはみな0に等しく設定される。
最後に、フィルタリングされたサンプルの値filtSamples[x][y]、x=0…nTbW-1、y=0…nTbH-1は、式(216)に従って導出されうる。
実施形態Cと実施形態Eとの間の違いは、実施形態Eでは、イントラ予測モードがINTRA_ANGULAR10以下である場合に、refT[x][y]が異なる仕方で計算されてもよい(すなわち、式(125)対式(205))ということである。同様に、イントラ予測モードpreModeIntraがINTRA_ANGULAR58以上である場合、refL[x][y]が異なる仕方で計算されてもよい(すなわち、式(131)対式(211))。
PDPCプロセスの早期終了(early termination)
本開示の実施形態によれば、図8Aにおけるモード-1~-14、モード3~10、モード58~65、およびモード67~80のような対角イントラ予測モードに隣接するイントラ予測モードについては、PDPCプロセスは、早期終了を有することができ、早期終了は、PDPCプロセスで使用される側方参照サンプル上でイントラ予測方向が指している端数位置に依存する。
ある実施形態では、PDPCプロセスで使用される参照サンプル値の割り当ては、次のように修正される。
モード2に隣接するイントラ予測モードについては、式(30)は式(217)として修正される。
モード66に隣接するイントラ予測モードについては、式(38)は式(218)として修正される。
参照サンプル検査
いくつかの関連する実施形態(たとえば、VVCにおけるもの)では、PDPCプロセスにおける現在サンプルについて、現在サンプルの参照サンプルが指定された範囲内にあるかどうかを判定するために、サンプル毎の検査が必要とされる。参照サンプルが指定された範囲内にない場合、PDPC重み付け因子は、たとえば式(30)、式(31)、式(38)、および式(41)に記述されるように、現在サンプルについて0に設定される。しかしながら、このサンプル毎の検査は、特に単一命令複数データ(SIMD)技法を使用するソフトウェア最適化のためには望ましくないことがありうる。
いくつかの実施形態によれば、参照サンプルが利用可能な参照サンプルの範囲内にあるかどうかを判定するために使用されるPDPCプロセスにおけるサンプルごとの検査は、行ごとまたは列ごとのチェックに置き換えられる。ある実施形態では、検査条件は、利用可能な左参照サンプルの数、予測ブロック高さ、およびPDPCプロセスによってフィルタリングされるべき現在サンプルの水平座標値にのみ依存する。別の実施形態では、検査条件は、利用可能な上の参照サンプルの数、予測ブロック幅、およびPDPCプロセスによってフィルタリングされるべき現在サンプルの垂直座標値にのみ依存する。
ある実施形態では、垂直様のイントラ予測(すなわち、予測方向が水平予測方向よりも垂直イントラ予測方向に近い)の場合、検査は、列ごと実行され、検査条件は、利用可能な左参照サンプルの数、予測ブロック高さ、およびPDPCプロセスによってフィルタリングされる現在サンプルの水平座標値のうちの少なくとも1つにのみ依存する。
ある実施形態では、水平様のイントラ予測(すなわち、予測方向が垂直予測方向よりも水平イントラ予測方向に近い)の場合、検査は行ごとに実行され、検査条件は、利用可能な上の参照サンプル数、予測ブロック幅、およびPDPCプロセスによってフィルタリングされる現在サンプルの垂直座標値のうちの少なくとも1つにのみ依存する。
いくつかの実施形態によれば、PDPCプロセスは、イントラ予測モードのイントラ予測角度が、2k/32のような事前設定値以上である場合に、イントラ予測モードに適用される。ここで、kは3または4のような負でない整数である。
ある実施形態では、垂直様のイントラ予測(すなわち、予測方向が水平予測方向よりも垂直イントラ予測方向に近い)の場合、現在ブロックの最初の(width〔幅〕/(25-k))(またはmin(width〔幅〕,height〔高さ〕)/(25-k))列のみがPDPCプロセスによって処理される。
ある実施形態では、水平様のイントラ予測(すなわち、予測方向が垂直予測方向よりも水平イントラ予測方向に近い)については、現在ブロックの最初の(height/(25-k))(またはmin(width〔幅〕,height〔高さ〕)/(25-k))行のみがPDPCプロセスによって処理される。
図10は、本開示のある実施形態による、例示的なプロセス(1000)の概略を示すフローチャートを示す。さまざまな実施形態において、プロセス(1000)は、端末装置(210)、(220)、(230)および(240)内の処理回路、ビデオ・エンコーダ(303)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、イントラ予測モジュール(452)の機能を実行する処理回路、ビデオ・エンコーダ(503)の機能を実行する処理回路、予測器(535)の機能を実行する処理回路、イントラエンコーダ(622)の機能を実行する処理回路、イントラデコーダ(772)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1000)はソフトウェア命令で実装され、よって、処理回路がソフトウェア命令を実行するとき、処理回路は、プロセス(1000)を実行する。
プロセス(1000)は、一般に、ステップ(S1010)で開始されてもよく、ここで、プロセス(1000)は、符号化ビデオ・シーケンスの一部である現在ピクチャー内の現在ブロックについての予測情報をデコードする。予測情報は、(i)対角イントラ予測方向、または(ii)対角イントラ予測方向に隣接する近傍イントラ予測方向の一方である、現在ブロックについてのイントラ予測方向を示す。次いで、プロセス(1000)は、ステップ(S1020)に進む。
ステップ(S1020)では、プロセス(1000)は、現在ブロックのイントラ予測方向に応じて、位置依存予測組み合わせ(PDPC)プロセスの使用法を決定する。同じPDPCプロセスが対角イントラ予測方向および近傍イントラ予測方向の両方に適用される。次いで、プロセス(1000)は、ステップ(S1030)に進む。
ステップ(S1030)では、プロセス(1000)は、現在ブロックに対するPDPCプロセスの使用に基づいて現在ブロックを再構成する。
現在ブロックを再構成した後、プロセス(1000)は終了する。
いくつかの実施形態では、対角イントラ予測方向は、左下予測方向および右上予測方向のうちの一方である。ある実施形態では、対角イントラ予測方向が左下イントラ予測方向である場合、近傍イントラ予測方向のモード・インデックスは、水平イントラ予測方向のモード・インデックスより下である。ある実施形態では、対角イントラ予測方向が右上のイントラ予測方向である場合、近傍イントラ予測方向のモード・インデックスは、垂直イントラ予測方向のモード・インデックスよりも上である。
ある実施形態では、イントラ予測方向が近傍イントラ予測方向である場合、プロセス(1000)は、イントラ予測方向が端数位置を指すかどうかを判定する。イントラ予測が端数位置を指すという判定に応答して、プロセス(1000)はPDPCプロセスの早期終了を決定する。
いくつかの実施形態では、現在ブロック内の現在サンプルがPDPCプロセスによってフィルタリングされる場合、プロセス(1000)は、現在サンプルの参照サンプルが事前設定された範囲内に位置するかどうかを、行ごとの検査または列ごとの検査に従って判定する。ある実施形態では、列ごとの検査は、(i)現在ブロックの左に位置する利用可能な参照サンプルの総数、(ii)現在ブロックのブロック高さ、および(iii)現在サンプルの水平座標値のうちの少なくとも1つに依存する。ある実施形態では、行ごとの検査は、(i)現在ブロックの上方に位置する利用可能な参照サンプルの総数、(ii)現在ブロックのブロック幅、(iii)現在サンプルの垂直座標値のうちの少なくとも1つに依存する。
いくつかの実施形態では、イントラ予測方向の角度は、事前設定値以上である。ある実施形態では、イントラ予測方向が水平イントラ予測方向よりも垂直イントラ予測方向に近い場合、プロセス(1000)は、現在ブロック内のサンプルの第1の数の列に対してPDPCプロセスを実行し、第1の数は、前記事前設定値および現在ブロックのブロック・サイズに応じて決定される。ある実施形態では、イントラ予測方向が垂直イントラ予測方向よりも水平イントラ予測方向に近い場合、プロセス(1000)は現在ブロック内のサンプルの第2の数の行に対してPDPCプロセスを実行し、第2の数は前記事前設定値および現在ブロックのブロック・サイズに応じて決定される。
上述の技法は、コンピュータ読み取り可能な命令を用いてコンピュータ・ソフトウェアとして実装することができ、一つまたは複数のコンピュータ読み取り可能な媒体に物理的に記憶されることができる。たとえば、図11は、開示された主題のある種の実施形態を実施するのに好適なコンピュータ・システム(1100)を示す。
コンピュータ・ソフトウェアは、任意の好適な機械コードまたはコンピュータ言語を用いてコーディングされることができ、アセンブリ、コンパイル、リンク、または同様の機構の対象とされて、一つまたは複数のコンピュータ中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)などによって、直接的に、またはインタープリット、マイクロコード実行などを通じて実行可能な命令を含むコードを作成することができる。
命令は、たとえば、パーソナルコンピュータ、タブレット・コンピュータ、サーバー、スマートフォン、ゲーム装置、モノのインターネット装置等を含むさまざまなタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
コンピュータ・システム(1100)について図11に示されるコンポーネントは、例としての性質であり、本開示の実施形態を実装するコンピュータ・ソフトウェアの使用または機能の範囲に関する制限を示唆することを意図したものではない。コンポーネントの構成も、コンピュータ・システム(1100)の例示的実施形態において示されているコンポーネントの任意の1つまたは組み合わせに関する何らかの依存性または要件を有するものとして解釈されるべきではない。
コンピュータ・システム(1100)は、ある種のヒューマン・インターフェース入力装置を含むことができる。そのようなヒューマン・インターフェース入力装置は、たとえば、触覚入力(たとえば、キーストローク、スワイプ、データグローブの動き)、音声入力(たとえば、声、拍手)、視覚入力(たとえば、ジェスチャー)、嗅覚入力(図示せず)を通じた一または複数の人間ユーザーによる入力に応答することができる。また、ヒューマン・インターフェース装置は、音声(たとえば、発話、音楽、周囲の音)、画像(たとえば、スキャンされた画像、スチール画像カメラから得られる写真画像)、ビデオ(たとえば、2次元ビデオ、立体視ビデオを含む3次元ビデオ)のような、人間による意識的入力に必ずしも直接関係しないある種のメディアを捕捉するために使用できる。
入力ヒューマン・インターフェース装置は、キーボード(1101)、マウス(1102)、トラックパッド(1103)、タッチスクリーン(1110)、データグローブ(図示せず)、ジョイスティック(1105)、マイクロフォン(1106)、スキャナ(1107)、カメラ(1108)の一つまたは複数(それぞれの一つしか図示していない)を含んでいてもよい。
コンピュータ・システム(1100)はまた、ある種のヒューマン・インターフェース出力装置を含んでいてもよい。そのようなヒューマン・インターフェース出力装置は、たとえば、触覚出力、音、光、および臭い/味を通じて、一または複数の人間ユーザーの感覚を刺激するものであってもよい。そのようなヒューマン・インターフェース出力装置は、触覚出力装置(たとえば、タッチスクリーン(1110)、データグローブ(図示せず)、またはジョイスティック(1105)による触覚フィードバック;ただし、入力装置のはたらきをしない触覚フィードバック装置もありうる)、音声出力装置(たとえば、スピーカー(1109)、ヘッドフォン(図示せず))、視覚出力装置(たとえば、CRT画面、LCD画面、プラズマスクリーン、OLED画面を含む画面(1110);それぞれはタッチスクリーン入力機能があってもなくてもよく、それぞれは触覚フィードバック機能があってもなくてもよく、そのうちのいくつかは、2次元の視覚出力または立体視出力のような手段を通じた3次元より高い出力を出力することができる;仮想現実感眼鏡(図示せず)、ホログラフィーディスプレイおよび煙タンク(図示せず))、およびプリンタ(図示せず)を含んでいてもよい。これらの出力装置(画面(1110)など)は、グラフィック・アダプター(1150)を通じてシステム・バス(1148)に接続されることができる。
コンピュータ・システム(1100)はまた、人間がアクセス可能な記憶装置および関連する媒体、たとえば、CD/DVDまたは類似の媒体(1121)とともにCD/DVD ROM/RW(1120)を含む光学式媒体、サムドライブ(1122)、取り外し可能なハードドライブまたはソリッドステートドライブ(1123)、テープおよびフロッピーディスクといったレガシー磁気媒体(図示せず)、セキュリティ・ドングルのような特化したROM/ASIC/PLDベースの装置(図示せず)などを含むことができる。
当業者はまた、現在開示されている主題に関連して使用される用語「コンピュータ読み取り可能な媒体」は、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
コンピュータ・システム(1100)はまた、一つまたは複数の通信ネットワーク(1155)へのネットワーク・インターフェース(1154)を含むことができる。該一つまたは複数の通信ネットワーク(1155)は、たとえば、無線、有線、光学式でありうる。該一つまたは複数の通信ネットワーク(1155)は、さらに、ローカル、広域、都市圏、車載および工業用、リアルタイム、遅延耐性などでありうる。該一つまたは複数の通信ネットワーク(1155)の例は、イーサネット〔登録商標〕、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラー・ネットワーク、ケーブルテレビ、衛星テレビ、地上放送テレビを含むTV有線または無線の広域デジタルネットワーク、CANBusを含む車載および工業用などを含む。ある種のネットワークは、普通、ある種の汎用データ・ポートまたは周辺バス(1149)(たとえば、コンピュータ・システム(1100)のUSBポートなど)に取り付けられる外部ネットワーク・インターフェース・アダプターを必要とする。他は、普通、後述するようなシステム・バスへの取り付けによって、コンピュータ・システム(1100)のコアに統合される(たとえば、PCコンピュータ・システムへのイーサネット・インターフェースまたはスマートフォン・コンピュータ・システムへのセルラー・ネットワーク・インターフェース)。これらのネットワークのいずれかを使用して、コンピュータ・システム(1100)は、他のエンティティと通信することができる。そのような通信は、一方向性、受信のみ(たとえば、放送テレビ)、一方向性送信専用(たとえば、ある種のCANbus装置へのCANbus)、または、たとえば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータ・システムへの双方向性であってもよい。上述のようなそれらのネットワークおよびネットワークインターフェースのそれぞれで、ある種のプロトコルおよびプロトコルスタックが使用できる。
前述のヒューマン・インターフェース装置、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータ・システム(1100)のコア(1140)に取り付けることができる。
コア(1140)は、一つまたは複数の中央処理装置(CPU)(1141)、グラフィックス処理装置(GPU)(1142)、フィールドプログラマブルゲートアレイ(FPGA)(1143)の形の特化したプログラマブル処理装置、ある種のタスクのためのハードウェアアクセラレータ(1144)などを含むことができる。これらの装置は、読み出し専用メモリ(ROM)(1145)、ランダムアクセスメモリ(1146)、内部のユーザー・アクセス可能でないハードドライブ、ソリッドステートドライブ(SSD)などの内部大容量記憶装置(1147)とともに、システム・バス(1148)を通じて接続されうる。いくつかのコンピュータ・システムでは、追加のCPU、GPUなどによる拡張を可能にするために、システム・バス(1148)は、一つまたは複数の物理プラグの形でアクセス可能であってもよい。周辺装置は、コアのシステム・バス(1148)に直接取り付けられることも、周辺バス(1149)を通じて取り付けられることもできる。周辺バスのためのアーキテクチャーは、PCI、USBなどを含む。
CPU(1141)、GPU(1142)、FPGA(1143)、およびアクセラレータ(1144)は、組み合わせて上述のコンピュータコードを構成することができるある種の命令を、実行することができる。そのコンピュータコードは、ROM(1145)またはRAM(1146)に記憶できる。一時的データも、RAM(1146)に記憶されることができ、一方、持続的データは、たとえば、内部大容量記憶装置(1147)に記憶されることができる。一つまたは複数のCPU(1141)、GPU(1142)、大容量記憶装置(1147)、ROM(1145)、RAM(1146)などと密接に関連付けることができるキャッシュメモリを使用することを通じて、メモリデバイスのいずれかへの高速な記憶および取り出しを可能にすることができる。
コンピュータ読み取り可能な媒体は、さまざまなコンピュータ実装された動作を実行するためのコンピュータコードをその上に有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、または、コンピュータ・ソフトウェア分野の技術を有する者に周知であり利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャー(1100)、具体的にはコア(1140)を有するコンピュータ・システムは、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)が一つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行することの結果として、機能性を提供することができる。そのようなコンピュータ読み取り可能媒体は、上記で紹介したようなユーザー・アクセス可能な大容量記憶ならびにコア内部の大容量記憶装置(1147)またはROM(1145)のような非一時的な性質のコア(1140)のある種の記憶に関連する媒体であることができる。本開示のさまざまな実施形態を実装するソフトウェアは、そのような装置に記憶され、コア(1140)によって実行されることができる。コンピュータ読み取り可能媒体は、特定のニーズに応じて、一つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、RAM(1146)に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定の特定部分を、コア(1140)および具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に実行させることができる。追加的または代替的に、コンピュータ・システムは、回路(たとえば、アクセラレータ(1144))内に配線された、または他の仕方で具現された論理の結果として機能性を提供することができ、これは、本明細書に記載される特定のプロセスまたは特定のプロセスの特定部分を実行するためのソフトウェアの代わりに、またはそれと一緒に動作することができる。ソフトウェアへの言及は、論理を含み、適宜その逆も可能である。コンピュータ読み取り可能媒体への言及は、適宜、実行のためのソフトウェアを記憶する回路(たとえば集積回路(IC))、実行のための論理を具現する回路、またはその両方を包含することができる。本開示は、ハードウェアおよびソフトウェアの任意の好適な組み合わせを包含する。
本開示は、いくつかの例示的実施形態を記載してきたが、変更、置換、およびさまざまな代替等価物があり、それらは本開示の範囲内にはいる。よって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現し、よって、本開示の精神および範囲内にある多くのシステムおよび方法を考案することができることが理解されるであろう。
付録A:頭字語
AMVP:Advanced Motion Vector Prediction(先進動きベクトル予測)
ASIC:Application-Specific Integrated Circuit(特定用途向け集積回路)
ATMVP:Alternative/Advanced Temporal Motion Vector Prediction(代替/先進時間的動きベクトル予測)
BDOF:Bi-directional Optical Flow(双方向オプティカルフロー)
BIO:Bi-directional Optical Flow(双方向オプティカルフロー)
BMS:Benchmark Set(ベンチマークセット)
BV:Block Vector(ブロックベクトル)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
CB:Coding Block(符号化ブロック)
CBF:Coded Block Flag(符号化ブロックフラグ)
CCLM:Cross-Component Linear Mode/Model(成分横断線形モード/モデル)
CD:Compact Disc(コンパクトディスク)
CPR:Current Picture Referencing(現在ピクチャー参照)
CPU:Central Processing Unit(中央処理装置)
CRT:Cathode Ray Tube(陰極線管)
CTB:Coding Tree Block(符号化ツリーブロック)
CTU:Coding Tree Units(符号化ツリー単位)
CU:Coding Unit(符号化単位)
DPB:Decoder Picture Buffer(デコーダ・ピクチャー・バッファ)
DVD:Digital Video Disc(デジタルビデオディスク)
FPGA:Field Programmable Gate Area(フィールド・プログラマブル・ゲートエリア)
GOP:Group of Pictures(ピクチャーグループ)
GPU:Graphics Processing Unit(グラフィックス処理ユニット)
GSM:Global System for Mobile communications(グローバル移動通信システム)
HDR:High Dynamic Range(高ダイナミックレンジ)
HEVC:High Efficiency Video Coding(高効率ビデオ符号化)
HRD:Hypothetical Reference Decoder(仮説参照デコーダ)
IBC:Intra Block Copy(イントラブロックコピー)
IC:Integrated Circuit(集積回路)
ISP:Intra Sub-Partitions(イントラサブパーティション)
JEM:Joint Exploration Model(共同探査モデル)
JVET:Joint Video Exploration Team(共同ビデオ探査チーム)
LAN:Local Area Network(ローカルエリアネットワーク)
LCD:Liquid-Crystal Display(液晶ディスプレイ)
LTE:Long-Term Evolution(ロングタームエボリューション)
MPM:Most Probable Mode(最確モード)
MTS:Multiple Transform Selection(複数変換選択)
MV:Motion Vector(動きベクトル)
OLED:Organic Light-Emitting Diode(有機発光ダイオード)
PB:Prediction Blocks(予測ブロック)
PCI:Peripheral Component Interconnect(周辺コンポーネント相互接続)
PDPC:Position Dependent Prediction Combination(位置依存予測組み合わせ)
PLD:Programmable Logic Device(プログラマブルロジックデバイス)
PU:Prediction Unit(予測単位)
RAM:Random Access Memory(ランダムアクセスメモリ)
ROM:Read-Only Memory(読み出し専用メモリ)
SBT:Sub-block Transform(サブブロック変換)
SCC:Screen Content Coding(スクリーンコンテンツ符号化)
SDR:Standard Dynamic Range(標準ダイナミックレンジ)
SEI:Supplementary Enhancement Information(補足向上情報)
SNR:Signal Noise Ratio(信号対雑音比)
SSD:Solid-state Drive(ソリッドステートドライブ)
TU:Transform Unit(変換単位)
USB:Universal Serial Bus(ユニバーサルシリアルバス)
VPDU:Visual Process Data Unit(ビジュアルプロセスデータユニット)
VUI:Video Usability Information(ビデオユーザビリティ情報)
VVC:Versatile Video Coding(多用途ビデオ符号化)
WAIP:Wide-Angle Intra Prediction(広角イントラ予測)