図3は、本開示の一実施形態による通信システム(300)の概略ブロック図を示している。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の対の端末装置(310)および(320)を含む。図3の例では、第1の対の端末装置(310)および(320)は、データの単方向送信を実行する。例えば、端末装置(310)は、ネットワーク(350)を介して他方の端末装置(320)へ送信するためにビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオピクチャのストリーム)をコード化し得る。エンコードされたビデオデータは、1つまたは複数のコード化されたビデオビットストリームの形で送信されることができる。端末装置(320)は、ネットワーク(350)からコード化ビデオデータを受信し、コード化ビデオデータをデコードしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。単方向のデータ送信は、メディア供給アプリケーションなどで一般的である。
他の例では、通信システム(300)は、例えば、ビデオ会議中に発生し得るコード化ビデオデータの双方向送信を実行する第2の対の端末装置(330)および(340)を含む。データの双方向送信の場合、一例では、端末装置(330)および(340)のそれぞれは、ネットワーク(350)を介して端末装置(330)および(340)のうちの他方の端末装置へ送信するためにビデオデータ(例えば、端末装置によってキャプチャされたビデオピクチャのストリーム)をコード化し得る。端末装置(330)および(340)のそれぞれは、端末装置(330)および(340)のうちの他方の端末装置で送信されたコード化ビデオデータを受信することができ、コード化ビデオデータをデコードしてビデオピクチャを復元することができ、復元されたビデオデータに従ってビデオピクチャをアクセス可能な表示装置に表示することができる。
図3の例では、端末装置(310)、(320)、(330)および(340)は、サーバ、パーソナルコンピュータおよびスマートフォンとして示され得るが、しかし、本開示の原理はこれに制限されることはない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー、および/または専用のビデオ会議機器における用途を見出す。ネットワーク(350)は、例えば有線および/または無線通信ネットワークを含む、端末装置(310)、(320)、(330)および(340)間でコード化ビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換および/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。本議論の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジーは、以下で説明されない限り、本開示の動作にとって重要でないかもしれない。
図4は、開示された主題の適用の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルTV、および、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
ストリーミングシステムは、例えば非圧縮のビデオピクチャ(402)のストリームを作成するデジタルカメラなどのビデオソース(401)を含むことができるキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャ(402)のストリームは、デジタルカメラによって取得されたサンプルを含む。エンコードされたビデオデータ(404)(又はコード化されたビデオビットストリーム)と比較して高データ量を強調するために太線で示されたビデオピクチャ(402)のストリームは、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理されることができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように、開示された主題の態様を可能にするか或いは実施するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオピクチャ(402)のストリームと比較してより低いデータ量を強調するために細い線で示された、エンコードされたビデオデータ(404)(またはエンコードされたビデオビットストリーム(404))は、将来使うためにストリーミングサーバ(405)に記憶されることができる。図4のクライアントサブシステム(406)および(408)のような1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、エンコードされたビデオデータ(404)のコピー(407)および(409)を検索することができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)におけるビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコードされたビデオデータの入り方向コピー(407)をデコードし、ディスプレイ(412)(例えば、表示画面)または他のレンダリングデバイス(示されていない)でレンダリングできるビデオピクチャ(411)の出方向ストリームを作成する。一部のストリーミングシステムにおいて、エンコードされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコードされることができる。これらの規格の例は、ITU-T勧告H.265を含む。一例では、開発中のビデオコーディング規格は、非公式的に多用途ビデオコーディング(VVC)として知られている。開示された主題は、VVCの文脈に使用され得る。
なお、電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができる。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)は、ビデオエンコーダ(図示せず)を含むこともできる。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれることができる。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例におけるビデオデコーダ(410)の代わりに使用されることができる。
受信機(531)は、ビデオデコーダ(510)によってデコードされる1つまたは複数のコード化ビデオシーケンスを受信することができ、同一または別の実施形態では、一度に1つのコード化ビデオシーケンスを受信してもよく、各コード化ビデオシーケンスのデコードは、他のコード化ビデオシーケンスから独立している。コード化ビデオシーケンスは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得るチャネル(501)から受信されることができる。受信機(531)は、それぞれの使用エンティティ(示されていない)に転送され得る他のデータ、例えば、コード化オーディオデータおよび/または補助データストリームとともに、エンコードされたビデオデータを受信し得る。受信機(531)は、コード化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)の間に結合されてもよい。特定のアプリケーションでは、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合、ビデオデコーダ(510)(示されていない)の外部に存在し得る。さらに他の場合、例えば、ネットワークジッタを防止するためにビデオデコーダ(510)の外部にバッファメモリ(示されていない)が存在し、さらに、例えば、再生タイミングを取り扱うためにビデオデコーダ(510)の内部に別のバッファメモリ(515)が存在し得る。受信機(531)が十分な帯域幅および可制御性を有する記憶/転送装置から、または等同期ネットワークからデータを受信する際に、バッファメモリ(515)は必要とされないことがあり、または小さくされることがある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要になる場合があり、バッファメモリ(515)は、比較的大きいことがあり、有利には適応サイズであることができ、オペレーティングシステムまたはビデオデコーダ(510)の外部の類似の要素(示されていない)に少なくとも部分的に実施され得る。
ビデオデコーダ(510)は、コード化ビデオシーケンスからシンボル(521)を再構築するパーサ(520)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(510)の操作を管理するために使用される情報、および、電子デバイス(530)の不可欠な部分ではないが、図5に示されるように電子デバイス(530)に結合され得るレンダリングデバイス(512)(例えば、表示画面)のようなレンダリングデバイスを制御する潜在的情報を含む。レンダリングデバイスのための制御情報は、補助強化情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(示されていない)の形態であってよい。パーサ(520)は、受信されたコード化ビデオシーケンスを構文解析/エントロピーデコードすることができる。コード化ビデオシーケンスのコーディングは、ビデオコーディング技術または規格に合わせることができ、可変長コーディング、ハフマンコーディング、文脈感受性を有するもしくは有さない算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コード化ビデオシーケンスからビデオデコーダ内の画素の少なくとも1つのサブグループのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャ群(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)は、コード化ビデオシーケンスから変換係数、量子化パラメータ値、動きベクトルなどのような情報をも抽出することができる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピーデコード/構文解析操作を実行することができる。
シンボル(521)の再構築は、コード化ビデオピクチャまたはその一部(例えば、インターおよびイントラピクチャ、インターおよびイントラブロック)のタイプ、および他の要因に応じて、複数の異なるユニットが関与することができる。どのユニットが、どのように関与するかは、パーサ(520)によってコード化ビデオシーケンスから構文解析されたサブグループ制御情報によって制御されることができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
すでに述べた機能ブロックに加え、ビデオデコーダ(510)は、以下で説明されるようにいくつかの機能ユニットに概念的に細分されることができる。商業的な制約の下で実際の実施操作にあたっては、これらのユニットの多くは互いに密接に相互作用し、少なくとも一部は互いに統合することができる。しかしながら、開示された主題の説明の目的で、以下の機能ユニットへの概念的な細分は、適切に行われる。
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報と、量子化された変換係数をシンボル(521)としてパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力可能なサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングブロック、すなわち、予め再構築されたピクチャからの予測情報を使用していないが、現在ピクチャの予め再構築された部分からの予測情報を使用できるブロックに関係することがある。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供されることができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在ピクチャバッファ(558)から取り出された周囲の既に再構築された情報を用いて、再構築中のブロックの同じサイズおよび形状のブロックを生成する。現在ピクチャバッファ(558)は、例えば、一部再構築された現在ピクチャおよび/または完全に再構築された現在ピクチャをバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコード化された、潜在的に動き補償されたブロックに関係することがある。このような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(521)に従って動き補償した後、出力サンプル情報を生成するように、これらのサンプルは、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加されることができる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルを取り出す参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y、および参照ピクチャ成分を有し得るシンボル(521)の形態で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御されることができる。動き補償は、サブサンプル正確な動きベクトルが使用中であるときに参照ピクチャメモリ(557)から取り出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法を受けられる。ビデオ圧縮技術は、コード化ビデオシーケンス(コード化されたビデオビットストリームとも呼ばれる)に含まれる、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能とされたパラメータによって制御されることができ、それに、コード化ピクチャまたはコード化ビデオシーケンスの(デコード順で)前の部分のデコード中に取得されたメタ情報に応じるとともに、予め再構築されループフィルタリングされたサンプル値に応じることもできるループ内フィルタ技術を含むことができる。
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)へ出力されることができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶されることができるサンプルストリームであり得る。
特定のコード化ピクチャは、完全に再構築されると、将来の予測のために参照ピクチャとして使用されることができる。例えば、現在ピクチャに対応するコード化ピクチャが完全に再構築され、コード化ピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在ピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコード化ピクチャの再構築を開始する前に新しい現在ピクチャバッファを再割当てすることができる。
ビデオデコーダ(510)は、ITU-T Rec.H.265のような規格での所定のビデオ圧縮技術に従ってデコード操作を実行することができる。コード化ビデオシーケンスが、ビデオ圧縮技術または規格のシンタックスと、ビデオ圧縮技術または規格で文書化されたプロファイルとの両方に準拠しているという意味で、コード化ビデオシーケンスは、使用されているビデオ圧縮技術または規格によって指定されるシンタックスに準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で使用可能なすべてのツールから、特定のツールをそのプロファイルで使用できる唯一のツールとして選択することができる。コード化ビデオシーケンスの複雑さがビデオ圧縮技術または規格のレベルで定義される範囲内にあることも、コンプライアンスに必要である。場合によっては、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどがレベルによって制限される。レベルによって設定された制限は、場合によっては、コード化ビデオシーケンスでシグナリングされたHRDバッファ管理のための仮想参照デコーダ(HRD)仕様およびメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコードされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コード化ビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードし、および/または、元のビデオデータをより正確に再構築するためにビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態にされることができる。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(603)を使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコード化されるビデオ画像をキャプチャし得るビデオソース(60l)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信することができる。他の例では、ビデオソース(601)は、電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコード化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、・・・)、任意の色空間(例えば、BT.601 Y CrCB、RGB、・・・)および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供し得る。メディア供給システムでは、ビデオソース(601)は、予め準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見られるときに動きが与えられる複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含むことができる。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明ではサンプルを中心に説明する。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムでまたはアプリケーションが要求する任意の他の時間制約の下でソースビデオシーケンスのピクチャをコード化し、コード化ビデオシーケンス(643)に圧縮することができる。適切なコーディング速度を実施することは、コントローラ(650)の機能の1つである。一部の実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。分かりやすくするために、カップリングは示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技法のラムダ値、・・・)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に対して最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成されることができる。
一部の実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コード化対象となる入力ピクチャおよび参照ピクチャに基づくシンボルストリームなどのシンボルの作成を担当する)、およびビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)を含むことができる。デコーダ(633)は、シンボルを再構築して、(リモート)デコーダが作成するのと同様な方法でサンプルデータを作成する(シンボルとコード化されたビデオビットストリーム間の如何なる圧縮は、開示された主題で考慮されるビデオ圧縮技術では可逆であるためである)。再構築されたサンプルストリーム(サンプルデータ)は参照ピクチャメモリ(634)に入力される。シンボルストリームのデコードにより、デコーダの位置(ローカルまたはリモート)に関係なくビット正確な結果が得られるため、参照ピクチャメモリ(634)のコンテンツもローカルエンコーダとリモートエンコーダの間でビット正確である。言い換えれば、エンコーダの予測部分は、参照ピクチャサンプルとして、デコード中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を「見る」。参照ピクチャの同期性の該基本原理(および例えばチャネルエラーに起因して同期性を維持できない場合に生じるドリフト)は、いくつかの関連分野にも使用されている。
「ローカル」デコーダ(633)の動作は、前文で図5に関連して既に詳細に説明された、ビデオデコーダ(510)などの「リモート」デコーダの動作と同様であり得る。しかしながら、図5も簡単に参照すると、シンボルが使用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコード化ビデオシーケンスへのシンボルのエンコード/デコードは可逆であり得るので、バッファメモリ(515)、およびパーサ(520)を含むビデオデコーダ(510)のエントロピーデコード部分は、ローカルデコーダ(633)では完全に実装されない場合がある。
これで分かるように、デコーダに存在する構文解析/エントロピーデコード以外の如何なるデコーダ技術も、対応するエンコーダに実質的に同一の機能的形態で必ず存在する必要がある。このため、開示された主題は、デコーダ操作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
操作中、一部の例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の予めコード化されたピクチャを参照して入力ピクチャを予測的にコード化する動き補償予測コーディングを実行してもよい。このようにして、コーディングエンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの予測基準として選択され得る参照ピクチャの画素ブロックとの差異をコード化する。
ローカルビデオデコーダ(633)は、ソースコーダ(630)で作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコード化ビデオデータをデコードすることができる。コーディングエンジン(632)の操作は、有利にはロッシープロセスであり得る。コード化ビデオデータがビデオデコーダ(図6に示されていない)でデコードされ得るとき、再構築されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(633)は、ビデオデコーダによって参照ピクチャに対して実行され得るデコードプロセスを再現し、再構築された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させることができる。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構築された参照ピクチャと共通するコンテンツ(送信エラー無し)を有する再構築された参照ピクチャのコピーをローカルに記憶し得る。
予測器(635)は、コーディングエンジン(632)の予測検索を実行することができる。つまり、コード化対象となる新しいピクチャについて、予測器(635)は、(候補の参照画素ブロックとしての)サンプルデータ、または、参照ピクチャの動きベクトル、ブロック形状など、新しいピクチャの適切な予測基準として機能し得る特定のメタデータを参照ピクチャメモリ(634)で検索することができる。予測器(635)は、適切な予測基準を見つけるために、サンプルブロック/画素ブロックごとに操作することができる。場合によっては、予測器(635)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング操作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)においてエントロピーコーディングを受けられる。エントロピーコーダ(645)は、例えば、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコード化ビデオシーケンスに変換する。
送信機(640)は、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を介した送信の準備のために、エントロピーコーダ(645)によって作成されたコード化ビデオシーケンスをバッファリングすることができる。送信機(640)は、ビデオコーダ(603)からのコード化ビデオデータを、送信されるべき他のデータ、例えば、コード化オーディオデータおよび/または補助データストリーム(ソースは示されていない)とマージすることができる。
コントローラ(650)は、ビデオエンコーダ(603)の操作を管理し得る。コーディング中、コントローラ(650)は、各コード化ピクチャに特定のコード化ピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼし得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のいかなるピクチャを使用せずにコード化および復号され得るものであり得る。一部のビデオコーデックは、例えば、インディペンデントデコーダリフレッシュ(Independent Decoder Refresh、「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャの変形およびそれらのそれぞれの用途および特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測によりコード化および復号され得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測によりコード化および復号され得るものであり得る。同様に、多重予測ピクチャは、単数のブロックの再構築のために2つを超えた参照ピクチャおよび関連メタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ、4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に細分され、ブロック単位でコード化され得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定された他の(既にコード化された)ブロックを参照して予測的にコード化され得る。例えば、Iピクチャのブロックは、非予測的にコード化されてもよく、或いは、同一のピクチャの既にコード化されたブロック(空間予測またはイントラ予測)を参照して予測的にコード化されてもよい。Pピクチャの画素ブロックは、1つの予めコード化された参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコード化され得る。Bピクチャのブロックは、1つまたは2つの予めコード化された参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコード化され得る。
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの予め設定されたビデオコーディング技術または規格に従って、コーディング操作を実行することができる。操作中、ビデオエンコーダ(603)は、入力ビデオシーケンスの時間的および空間的冗長性を利用する予測コーディング操作を含む、様々な圧縮操作を実行することができる。したがって、コード化ビデオデータは、使用されるビデオコーディング技術または規格によって指定されたシンタックスに準拠する場合がある。
一実施形態では、送信機(640)は、エンコードされたビデオとともに追加のデータを送信することができる。ソースコーダ(630)は、このようなデータをコード化ビデオシーケンスの一部として含み得る。追加のデータは、時間的/空間的/SNRエンハンスメントレイヤ、冗長なピクチャやスライスなどの他の形態での冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(「イントラ予測」と略されることが多い)は、所定のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在ピクチャと呼ばれるエンコード/デコード中の特定のピクチャは、ブロックに分割される。現在ピクチャにおけるブロックが、ビデオにおける予めコード化され、まだバッファリングされている参照ピクチャの参照ブロックに類似している場合、現在ピクチャにおけるブロックは、動きベクトルと呼ばれるベクトルによってコード化されることができる。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3次元を有することができる。
一部の実施形態では、インターピクチャ予測において双予測法を使用することができる。双予測法によれば、ビデオにおける現在ピクチャよりもデコード順序がそれぞれ前である(ただし、表示順序でそれぞれ過去および未来にあり得る)第1の参照ピクチャおよび第2の参照ピクチャのような2つの参照ピクチャを使用する。現在ピクチャにおけるブロックは、第1の参照ピクチャにおける第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャにおける第2の参照ブロックを指す第2の動きベクトルによってコード化されることができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測されることができる。
さらに、マージモード技法をインターピクチャ予測に適用して、コーディング効率を向上させることができる。
本開示の一部の実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、一連のビデオピクチャにおけるピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャにおけるCTUは、64×64画素、32×32画素、または16×16画素など、同一のサイズを有する。一般に、CTUは、1つの輝度CTBと2つの彩度CTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割されることができる。例えば、64×64画素のCTUは、1つの64×64画素のCU、4つの32×32画素のCU、または16つの16×16画素のCUに分割されることができる。一例では、各CUを解析して、インター予測タイプまたはイントラ予測タイプなど、CUの予測タイプを決定する。CUは、時間的および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。通常、各PUは、1つの輝度予測ブロック(PB)と2つの彩度PBを含む。一実施形態では、コーディング(エンコード/デコード)における予測操作は、予測ブロックの単位で実行される。輝度予測ブロックを予測ブロックの例として用いて、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、輝度値)の行列を含む。
図7は、本開示の他の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、一連のビデオピクチャにおける現在ビデオピクチャにおけるサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コード化ビデオシーケンスの一部であるコード化ピクチャにエンコードするように構成される。一例では、図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(703)を使用する。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルのような予測ブロックなどの処理ブロックのサンプル値の行列を受信する。ビデオエンコーダ(703)は、例えばレート歪み最適化を用いて、処理ブロックをイントラモード、インターモード、または双予測モードにより最も良くコード化するか否かを決定する。処理ブロックがイントラモードでコード化されようとする場合、ビデオエンコーダ(703)は、イントラ予測法を用いて処理ブロックをコード化ピクチャにエンコードすることができる。また、処理ブロックがインターモードまたは双予測モードでコード化されようとする場合、ビデオエンコーダ(703)は、それぞれインター予測または双予測法を用いて、処理ブロックをコード化ピクチャにエンコードすることができる。特定のビデオコーディング技術では、マージモードは、予測器外のコード化動きベクトル成分の利便を介することなく、1つまたは複数の動きベクトル予測器から動きベクトルを導出するインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示すように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差算出部(723)、スイッチ(726)、残差エンコーダ(724)、統括制御部(721)およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、該ブロックを参照ピクチャにおける1つまたは複数の参照ブロック(例えば、前のピクチャおよび後のピクチャにおけるブロック)と比較し、インター予測情報(例えば、インターエンコード法による冗長情報の記述、動きベクトル、マージモード情報)を生成し、インター予測情報に基づいて任意の適切な技法を用いてインター予測結果(例えば、予測ブロック)を算出するように構成される。一部の例では、参照ピクチャは、エンコードされたビデオ情報に基づいてデコードされたデコード参照ピクチャである。
イントラエンコーダ(722)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては該ブロックを同一のピクチャで既にコード化されたブロックと比較し、変換後に、量子化された係数を生成し、場合によってはイントラ予測情報(例えば、1つまたは複数のイントラエンコード法によるイントラ予測方向情報)をも生成するように構成される。一例では、イントラエンコーダ(722)は、イントラ予測情報および同一のピクチャにおける参照ブロックに基づいてイントラ予測結果(例えば、予測ブロック)も算出する。
統括制御部(721)は、統括制御データを決定し、統括制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、統括制御部(721)は、ブロックのモードを決定し、モードに基づいて制御信号をスイッチ(726)に提供する。例えば、モードがイントラモードである場合、統括制御部(721)は、残差算出部(723)が使用するためのイントラモード結果を選択するようにスイッチ(726)を制御するとともに、イントラ予測情報を選択してイントラ予測情報をビットストリームに含ませるようにエントロピーエンコーダ(725)を制御する。また、モードがインターモードである場合、統括制御部(721)は、残差算出部(723)が使用するためのインター予測結果を選択するようにスイッチ(726)を制御するとともに、インター予測情報を選択してインター予測情報をビットストリームに含ませるようにエントロピーエンコーダ(725)を制御する。
残差算出部(723)は、受信されたブロックとイントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との差(残差データ)を算出するように構成される。残差エンコーダ(724)は、残差データに基づいて動作し、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域へと変換し、変換係数を生成するように構成される。その後、変換係数は量子化処理を受けて、量子化された変換係数が得られる。様々な実施形態では、ビデオエンコーダ(703)は、残差デコーダ(728)をも含む。残差デコーダ(728)は、逆変換を実行し、デコード残差データを生成するように構成される。デコード残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用されることができる。例えば、インターエンコーダ(730)は、デコード残差データよびインター予測情報に基づいて、デコードブロックを生成することができ、イントラエンコーダ(722)は、デコード残差データおよびイントラ予測情報に基づいて、デコードブロックを生成することができる。一部の例では、デコードブロックは、デコードピクチャを生成するように適切に処理され、デコードピクチャは、メモリ回路(図示せず)にバッファリングされ、参照ピクチャとして使用されることができる。
エントロピーエンコーダ(725)は、ビットストリームをフォーマットしてエンコードブロックを生成するように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従う様々な情報をビットストリームに含ませるように構成される。一例では、エントロピーエンコーダ(725)は、統括制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報をビットストリームに含ませるように構成される。開示された主題によれば、インターモードまたは双予測モードのマージサブモードでブロックをコード化する場合、残差情報はないことに留意されたい。
図8は、本開示の他の実施形態によるビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コード化ビデオシーケンスの一部であるコード化ピクチャを受信し、コード化ピクチャをデコードして、再構築ピクチャを生成するように構成される。一例では、図4の例におけるビデオデコーダ(410)の代わりにビデオデコーダ(810)を使用する。
図8の例では、ビデオデコーダ(810)は、図8に示されるように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構築モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コード化ピクチャから、コード化ピクチャを構成するシンタックス要素を表す特定のシンボルを再構築するように構成されることができる。このようなシンボルは、例えば、ブロックがコード化されるモード(例えば、イントラモード、インターモード、双予測モード、後の2つのマージサブモードまたは他のサブモード)、それぞれイントラデコーダ(872)またはインターデコーダ(880)による予測に使用される特定のサンプルまたはメタデータを識別できる予測情報(例えば、イントラ予測情報またはインター予測情報)、例えば、量子化された変換係数の形態での残差情報などを含むことができる。一例では、予測モードがインターまたは双予測モードであれば、インター予測情報は、インターデコーダ(880)に提供される。また、予測タイプがイントラ予測タイプであれば、イントラ予測情報は、イントラデコーダ(872)に提供される。残差情報は、逆量子化を施されることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実行して、逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)は、(量子化器パラメータ(QP)を含めるように)特定の制御情報をも必要とする場合があり、この情報は、エントロピーデコーダ(871)によって提供されてもよい(データパスは、低ボリューム制御情報のみであり得るため、示されていない)。
再構築モジュール(874)は、空間領域において、残差デコーダ(873)によって出力された残差と、(場合によってはインターまたはイントラ予測モジュールによって出力される)予測結果とを組み合わせて、再構築ビデオの一部となり得る再構築ピクチャの一部であり得る再構築ブロックを形成するように構成される。なお、視覚的品質を改善するために、デブロッキング操作などの他の適切な操作を実行することができる。
なお、ビデオエンコーダ(403)、(603)および(703)とビデオデコーダ(410)、(510)および(810)は、任意の適切な技法を用いて実施されることができる。一実施形態では、ビデオエンコーダ(403)、(603)および(703)とビデオデコーダ(410)、(510)および(810)は、1つまたは複数の集積回路を用いて実施されることができる。他の実施形態では、ビデオエンコーダ(403)、(603)および(703)とビデオデコーダ(410)、(510)および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを用いて実施されることができる。
ブロックベースのフィルタ適応を有する適応ループフィルタ(Adaptive Loop Filter、ALF)は、アーチファクトを減らすためにエンコーダ/デコーダによって適用されることができる。ルマ成分の場合、例えば局所的な勾配の方向および活性度に基づいて、複数のフィルタ(例えば、25個のフィルタ)のうちの1つが4×4のルマブロックに対して選択されることができる。
ALFは、任意の適切な形状およびサイズを持つことができる。図9を参照すると、ALF(910)~(911)は、ALF(910)の場合は5×5の菱形、ALF(911)の場合は7×7の菱形といったように、菱形形状を持っている。ALF(910)では、要素(920)~(932)は、フィルタリングプロセスに使用されて菱形形状を形成することができる。要素(920)~(932)には7つの値(例えば、C0~C6)が使用可能である。ALF(911)では、要素(940)~(964)は、フィルタリングプロセスに使用されて菱形形状を形成することができる。要素(940)~(964)には13個の値(例えば、C0~C12)が使用可能である。
図9を参照すると、いくつかの例では、菱形形状を有する2つのALF(910)~(911)が使用される。5×5の菱形のフィルタ(910)がクロマ成分(例えば、クロマブロック、クロマCB)に適用されることができ、7×7の菱形のフィルタ(911)がルマ成分(例えば、ルマブロック、ルマCB)に適用されることができる。ALFでは、他の適切な形状およびサイズが使用されることができる。例えば、9×9の菱形のフィルタが使用されることができる。
値(例えば、(910)のC0~C6、または(920)のC0~C12)によって示される位置におけるフィルタ係数は、非ゼロであってもよい。さらに、ALFがクリッピング関数を含む場合、その位置におけるクリッピング値は、非ゼロであってもよい。
ルマ成分のブロック分類の場合、4×4ブロック(またはルマブロック、ルマCB)は、複数(例えば、25)のクラスのうちの1つと類別または分類されることができる。また、方向性パラメータDおよび活性度値Aの量子化値
に基づいて、式(1)を用いて分類インデックスCを導出することができる。
方向性パラメータDおよび量子化値
を算出するために、1次元ラプラシアンを用いて、垂直方向、水平方向、2つの対角方向(例えば、d1、d2)の勾配g
v、g
h、g
d1、よびg
d2をそれぞれ以下のように算出することができる。
ここで、インデックスiおよびjは、4×4ブロック内の左上サンプルの座標を指し、R(k,l)は、座標(k,l)における再構築サンプルを示す。方向(例えば、d1およびd2)は、2つの対角方向を指すことができる。
上述したブロック分類の複雑さを低減するために、サブサンプリングされた1次元ラプラシアン計算を適用することができる。図10A~10Dは、垂直方向(図10A)、水平方向(図10B)、および2つの対角方向d1(図10C)、d2(図10D)の勾配gv、gh、gd1、およびgd2をそれぞれ算出するために使用されるサブサンプリング位置の例を示す。同じサブサンプリング位置が、異なる方向の勾配計算に使用されることができる。図10Aでは、ラベル「V」は、垂直勾配gvを算出するためのサブサンプリング位置を示している。図10Bでは、ラベル「H」は、水平勾配ghを算出するためのサブサンプリング位置を示している。図10ACでは、ラベル「D1」は、d1斜め勾配gd1を算出するためのサブサンプリング位置を示している。図10Dでは、ラベル「D2」は、d2斜め勾配gd2
を算出するためのサブサンプリング位置を示している。
水平方向および垂直方向の勾配g
v、g
hの最大値
と最小値
は、以下のように設定されることができる。
2つの対角方向の勾配g
d1、g
d2の最大値
と最小値
は、以下のように設定されることができる。
方向性パラメータDは、上記の値と2つの閾値t1およびt2に基づいて、以下のように導出されることができる。
ステップ1では、
および
が真の場合、Dは0に設定される。
ステップ2では、
の場合、ステップ3に進み、そうでない場合、ステップ4に進む。
ステップ3では、
の場合、Dは2に設定され、そうでない場合、Dは1に設定される。
ステップ4では、
の場合、Dは4に設定され、そうでない場合、Dは3に設定される。
活性度値Aは、次のように算出されることができる。
Aは、さらに、0以上4以下の範囲に量子化されることができ、量子化値は、
で表される。
ピクチャのクロマ成分の場合、ブロック分類が適用されないため、クロマ成分ごとに単一セットのALF係数を適用することができる。
幾何学的変換がフィルタ係数および対応するフィルタクリッピング値(クリッピング値とも呼ばれる)に適用されることができる。ブロック(例えば、4×4ルマブロック)をフィルタリングする前に、例えば、該ブロックに対して算出された勾配値(例えば、gv、gh、gd1、および/または、gd2)に応じて、回転または斜めおよび垂直反転などの幾何学的変換をフィルタ係数f(k,l)および対応するフィルタクリッピング値c(k,l)に適用することができる。フィルタ係数f(k,l)および対応するフィルタクリッピング値c(k,l)に適用される幾何学的変換は、フィルタによってサポートされる領域におけるサンプルに幾何学的変換を適用することと等価であり得る。幾何学的変換は、それぞれの方向性を揃えることで、ALFが適用される異なるブロックをより似たものにすることができる。
斜め反転、垂直反転、および回転を含む3つの幾何学的変換は、それぞれ、式(9)~(11)で説明されるように実行されることができる。
ここで、KはALFまたはフィルタのサイズであり、0≦k,l≦K-1は係数の座標である。例えば、位置(0,0)は、フィルタfまたはクリッピング値行列(またはクリッピング行列)cの左上隅にあり、位置(K-1,K-1)は、フィルタfまたはクリッピング値行列(またはクリッピング行列)cの右下隅にある。ブロックに対して算出された勾配値に応じて、変換をフィルタ係数f(k,l)およびクリッピング値c(k,l)に適用することができる。変換と4つの勾配との間の関係の一例を表1にまとめる。
いくつかの実施形態では、ALFフィルタパラメータは、ピクチャの適応パラメータセット(APS)でシグナリングされる。APSでは、1つまたは複数のセット(例えば、25セットまで)のルマフィルタ係数およびクリッピング値インデックスがシグナリングされ得る。一例では、1つまたは複数のセットのうちの1セットは、ルマフィルタ係数および1つまたは複数のクリッピング値インデックスを含み得る。1つまたは複数のセット(例えば、8セットまで)のクロマフィルタ係数およびクリッピング値インデックスがシグナリングされ得る。シグナリングオーバーヘッドを低減するために、ルマ成分の異なる分類の(例えば、異なる分類インデックスを有する)フィルタ係数をマージすることができる。スライスヘッダでは、現在のスライスに使用されるAPSのインデックスがシグナリングされ得る。
一実施形態では、クリッピング値インデックス(クリッピングインデックスとも呼ばれる)は、APSからデコードされることができる。クリッピング値インデックスは、例えば、クリッピング値インデックスと対応するクリッピング値との間の関係に基づいて、対応するクリッピング値を決定するために使用されることができる。この関係は、事前定義され、デコーダに記憶されることができる。一例では、この関係は、クリッピング値インデックスと対応するクリッピング値のルマテーブル(例えば、ルマCBに使用される)、クリッピング値インデックスと対応するクリッピング値のクロマテーブル(例えば、クロマCBに使用される)などのテーブルによって記述される。クリッピング値は、ビット深度Bに依存することができる。ビット深度Bは、内部ビット深度、フィルタリングされるCB内の再構築サンプルのビット深度などを指すことができる。いくつかの例では、テーブル(例えば、ルマテーブル、クロマテーブル)は、式(12)を用いて得られる。
ここで、AlfClipはクリッピング値、Bはビット深度(例えば、bitDepth)、N(例えば、N=4)は許容されるクリッピング値の数、(n-1)はクリッピング値インデックス(クリッピングインデックスまたはclipIdxとも呼ばれる)である。表2は、N=4の場合の式(12)を用いて得られるテーブルの一例である。クリッピングインデックス(n-1)は、表2では0、1、2、および3であることができ、nはそれぞれ1、2、3、および4であり得る。表2は、ルマブロックまたはクロマブロックに使用されることができる。
現在のスライスのスライスヘッダでは、1つまたは複数のAPSインデックス(例えば、7つのAPSインデックスまで)が、現在のスライスに使用できるルマフィルタセットを指定するためにシグナリングされ得る。フィルタリングプロセスは、ピクチャレベル、スライスレベル、CTBレベルなど、1つまたは複数の適切なレベルで制御され得る。一実施形態では、フィルタリングプロセスは、さらにCTBレベルで制御されることができる。フラグは、ALFがルマCTBに適用されるか否かを示すためにシグナリングされ得る。ルマCTBは、複数の固定フィルタセット(例えば、16個の固定フィルタセット)、およびAPSでシグナリングされたフィルタセット(シグナリングされたフィルタセットとも呼ばれる)の中から、フィルタセットを選択することができる。フィルタセットインデックスは、適用されるフィルタセット(例えば、複数の固定フィルタセットおよびシグナリングされたフィルタセットのうちのフィルタセット)を示すために、ルマCTBに対してシグナリングされることができる。複数の固定フィルタセットは、エンコーダおよびデコーダで事前定義され、ハードコードされることができ、事前定義されたフィルタセットと呼ばれることができる。
クロマ成分の場合、現在のスライスに使用されるクロマフィルタセットを示すために、APSインデックスをスライスヘッダでシグナリングすることができる。CTBレベルでは、APSに1つを超えたクロマフィルタセットがある場合、クロマCTBごとにフィルタセットインデックスをシグナリングすることができる。
フィルタ係数は、128に等しいノルムで量子化されることができる。乗算の複雑さを低減するために、ビットストリーム適合性を適用して、非中央位置の係数値が-2
7
以上2
7
-1以下の範囲になるようにすることができる。一例では、中心位置係数はビットストリームでシグナリングされず、128に等しいと見なすことができる。
いくつかの実施形態では、クリッピングインデックスおよびクリッピング値のシンタックスおよびセマンティクスは、以下のように定義される。
alf_luma_clip_idx[sfIdx][j]は、sfIdxで示されるシグナリングされたルマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定するために使用されることができる。ビットストリーム適合性の要件は、alf_luma_clip_idx[sfIdx][j](sfIdx=0からalf_luma_num_filters_signalled_minus1およびj=0から11)の値が、0以上3以下の範囲内であるべきことを含み得る。
要素AlfClipL[adaptation_parameter_set_id][filtIdx][j](filtIdx=0からNumAlfFilters-1およびj=0から11)を持つルマフィルタクリッピング値AlfClipL[adaptation_parameter_set_id]は、bitDepthがBitDepthYに等しく設定され、clipIdxがalf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx][j]に等しく設定されることに応じて、表2で指定されるように導出されることができる。
alf_chroma_clip_idx[altIdx][j]は、インデックスaltIdxを持つ代替クロマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定するために使用されることができる。ビットストリーム適合性の要件は、alf_chroma_clip_idx[altIdx][j](altIdx=0からalf_chroma_num_alt_filters_minus1、j=0から5)の値が、0以上3以下の範囲内であるべきことを含み得る。
要素AlfClipC[adaptation_parameter_set_id][altIdx][j](altIdx=0からalf_chroma_num_alt_filters_minus1、j=0から5)を持つクロマフィルタクリッピング値AlfClipC[adaptation_parameter_set_id][altIdx]は、bitDepthがBitDepthCに等しく設定され、clipIdxがalf_chroma_clip_idx[altIdx][j]に等しく設定されることに応じて、表2で指定されるように導出されることができる。
一実施形態では、フィルタリングプロセスは以下のように説明されることができる。デコーダ側では、CTBに対してALFが有効である場合、CU(またはCB)内のサンプルR(i,j)がフィルタリングされることができ、その結果、以下で式(13)を用いて示されるように、フィルタリングされたサンプル値R’(i,j)が得られる。一例では、CUの各サンプルがフィルタリングされる。
ここで、f(k,l)はデコードされたフィルタ係数を示し、K(x,y)はクリッピング関数であり、c(k,l)はデコードされたクリッピングパラメータ(またはクリッピング値)を示す。変数kおよびlは、-L/2とL/2の間で変化することができ、ここで、Lはフィルタ長を示す。クリッピング関数K(x,y)=min(y,max(-y,x))は、クリッピング関数Clip3(-y,y,x)に対応する。クリッピング関数K(x,y)を組み込むことで、ループフィルタリング法(例えばALF)は非線形プロセスとなり、非線形ALFと呼ばれることができる。
非線形ALFでは、複数セットのクリッピング値が表3に提供されることができる。一例では、ルマセットは、4つのクリッピング値{1024,181,32,6}を含み、クロマセットは、4つのクリッピング値{1024,161,25,4}を含む。ルマセットの4つのクリッピング値は、ルマブロックのサンプル値(10ビットでコード化されたもの)の全範囲(例えば、1024)を対数領域でほぼ均等に分割することで選択されることができる。クロマセットの場合、その範囲が4~1024となり得る。
選択されたクリッピング値は、次のように「alf_data」シンタックス要素でコード化されることができ、即ち、適切なエンコードスキーム(例えば、Golombエンコードスキーム)を使用して、表3に示すような選択されたクリッピング値に対応するクリッピングインデックスをエンコードすることができる。エンコードスキームは、フィルタセットインデックスをエンコードするために使用されるものと同じエンコードスキームであり得る。
一実施形態では、仮想境界フィルタリングプロセスを使用して、ALFのラインバッファ要件を低減することができる。したがって、修正されたブロック分類およびフィルタリングが、CTU境界(例えば、水平CTU境界)付近のサンプルに対して採用され得る。仮想境界(1130)は、図11Aに示すように、水平CTU境界(1120)を「Nsamples」サンプルだけシフトすることにより、ラインとして定義されることができ、ここで、Nsamplesは正の整数であり得る。一例では、Nsamplesは、ルマ成分の場合は4に等しく、また、Nsamplesは、クロマ成分の場合は2に等しい。
図11Aを参照すると、修正されたブロック分類が、ルマ成分に対して適用され得る。一例では、仮想境界(1130)より上にある4×4ブロック(1110)の1次元ラプラシアン勾配計算のために、仮想境界(1130)より上のサンプルのみが使用される。同様に、図11Bを参照すると、CTU境界(1121)からシフトされた、仮想境界(1131)より下にある4×4ブロック(1111)の1次元ラプラシアン勾配計算のために、仮想境界(1131)より下のサンプルのみが使用される。活性度値Aの量子化は、1次元ラプラシアン勾配計算に使用されるサンプル数の減少を考慮に入れることで、適宜スケーリングされることができる。
フィルタリングプロセスの場合、仮想境界での対称パディング操作を、ルマ成分とクロマ成分の両方に使用することができる。図12A~12Fは、仮想境界におけるルマ成分のこのように修正されたALFフィルタリングの例を示している。フィルタリングされるサンプルが仮想境界より下に位置する場合、仮想境界より上に位置する隣接サンプルをパディングすることができる。フィルタリングされるサンプルが仮想境界より上に位置する場合、仮想境界より下に位置する隣接サンプルをパディングすることができる。図12Aを参照すると、隣接サンプルC0は、仮想境界(1210)より下に位置するサンプルC2でパディングされることができる。図12Bを参照すると、隣接サンプルC0は、仮想境界(1220)より上に位置するサンプルC2でパディングされることができる。図12Cを参照すると、隣接サンプルC1~C3は、それぞれ、仮想境界(1230)より下に位置するサンプルC5~C7でパディングされることができる。図12Dを参照すると、隣接サンプルC1~C3は、それぞれ、仮想境界(1240)より上に位置するサンプルC5~C7でパディングされることができる。図12Eを参照すると、隣接サンプルC4~C8は、それぞれ、仮想境界(1250)より下に位置するサンプルC10、C11、C12、C11、およびC10でパディングされることができる。図12Fを参照すると、隣接サンプルC4~C8は、それぞれ、仮想境界(1260)より上に位置するサンプルC10、C11、C12、C11、およびC10でパディングされることができる。
いくつかの例では、サンプルおよび隣接サンプルが、仮想境界の左側(または右側)および右側(または左側)に位置する場合に、上記の説明を適切に適応させることができる。
ルマ成分またはクロマ成分に適用される式(12)は、式(12’)のように書き換えることができる。
式(12’)から分かるように、ALFにおけるクリッピング値(例えば、AlfClip)は、ビット深度Bに依存する。さらに、クリッピング値は、2B2(B(1-n)/N)に依存している。一実施形態では、Nが指定された場合(例えば、N=4)、2(B(1-n)/N)は、ビット深度Bおよびクリッピングインデックス(n-1)に依存している。したがって、丸め前の2B2(B(1-n)/N)は2Bに比例せず、そして、式(12)または(12’)を使用してクリッピング値を決定することは、いくつかの実施形態では効率的ではない可能性がある。
本開示の態様は、フィルタリング(例えば、非線形ループフィルタリング)で使用されるクリッピング値を導出することを含む。ALFで使用されるクリッピング値(例えば、AlfClip)は、ビット深度Bおよびクリッピングインデックスに基づいて決定されることができる。本開示の態様によれば、クリッピング値のビット深度Bおよびクリッピングインデックスへの依存性は、コーディング効率を向上させるために分離されることができる。
クリッピング値は、クリッピングインデックスと関連付けることができる。クリッピング値は、第1の関数と第2の関数との乗算に基づくことができる。一実施形態では、クリッピング値は、第1の関数と第2の関数との乗算である複合関数によって決定されることができる。第1の関数は、ビット深度Bに依存することができ、クリッピングインデックスから独立しているため、クリッピングインデックスに依存しない。一例では、第1の関数は2Bに比例するため、コーディング効率を向上させる。第2の関数は、クリッピングインデックスに依存し、ビット深度Bから独立することができるため、ビット深度Bに依存しない。
一実施形態では、式(14)を用いて、ルマCBおよびクロマCBのALFで使用されるクリッピング値(例えば、AlfClip)を導出することができる。
ここで、AlfClipはクリッピング値であり、BはALFの内部ビット深度または入力サンプルのビット深度を意味し、定数値αは非線形ALFフィルタの強度を制御する係数を意味し、mはクリッピングインデックスであり、Nは許容されるクリッピング値の数(例えば4)を示す。クリッピングインデックスmは、0、・・・およびN-1であり得る。定数値αは、2.1、2.2、2.3、2.4、2.5、2.6、2.7および2.8を含むことができるが、これらに限定されない。
式(14)に示す一例では、第1の関数は2Bであり、第2の関数は2-α*mである。第1の関数は、ビット深度Bに依存しており、クリッピングインデックスmから独立している。したがって、第1の関数は、クリッピングインデックスmに依存しない。第2の関数は、クリッピングインデックスmに依存しており、ビット深度Bから独立している。したがって、第2の関数は、ビット深度Bに依存しない。値2B-α*mを丸めて(例えば、整数値に切り上げたり切り捨てたりして)、クリッピング値を生成することができる。
ルマ成分(またはCB)とクロマ成分(またはCB)は、式(14)に示すような同じ関係を用いることができる。ルマCBの場合、定数値αは、第1の定数値であり得る。クロマCBの場合、定数値αは、第2の定数値であり得る。いくつかの例では、第1の定数値は、第2の定数値と同一である。いくつかの例では、第1の定数値は、第2の定数値とは異なる。
クリッピング値とクリッピングインデックスとの関係は、上に示した式(14)のような方程式を用いて指定されることができる。また、この関係は、ルックアップテーブル(例えば、図13~14に示されるようなもの)などの他の適切な方法を用いて指定されることもできる。図13は、本開示の一実施形態による、クリッピング値とビット深度Bおよびクリッピングインデックスmとの関係を示す例示的なテーブルである。テーブル中のクリッピング値は、定数値αが2.3、Nが4である場合の式(14)に基づいて決定されることができる。一例では、このテーブルは、ルマCBに適用されることができ、クリッピング値は、ルマクリッピング値(例えば、AlfClipL)と称することができる。
図13を参照すると、クリッピングインデックス(例えば、clipIdx)が0である場合、式(14)を用いて決定されたクリッピング値は、式(13)を用いて決定されたクリッピング値と同一である。クリッピングインデックス(例えば、clipIdx)が1、2、または3である場合、式(14)を用いて決定されたクリッピング値(イタリック体で強調表示されている)は、式(13)を用いて決定されたクリッピング値(クロスアウトされている)とは異なる。例えば、bitDepthが8、clipIdxが1である場合、式(14)を用いて決定されたクリッピング値は52であり、式(13)を用いて決定されたクリッピング値は64である。
図14は、本開示の一実施形態による、クリッピング値とビット深度Bおよびクリッピングインデックスmとの関係を示す例示的なテーブルである。テーブル中のクリッピング値は、定数値αが2.6、Nが4である場合の式(14)に基づいて決定される。一例では、図14のテーブルは、クロマCBに適用されることができ、クリッピング値は、クロマクリッピング値(例えば、AlfClipC)と称することができる。
図14を参照すると、クリッピングインデックス(例えば、clipIdx)が0である場合、式(14)を用いて決定されたクリッピング値は、式(13)を用いて決定されたクリッピング値と同一である。クリッピングインデックス(例えば、clipIdx)が1、2、または3である場合、式(14)を用いて決定されたクリッピング値(イタリック体で強調表示されている)は、式(13)を用いて決定されたクリッピング値(クロスアウトされている)とは異なる。例えば、bitDepthが8、clipIdxが1である場合、式(14)を用いて決定されたクリッピング値は42であり、式(13)を用いて決定されたクリッピング値は64である。
上述したように、ルマ成分(例えば、ルマCB)およびクロマ成分(例えば、クロマCB)は、式(14)によって導出される異なるクリッピング値を使用することができる。例えば、式(14)を用いてクリッピング値を導出する際に、図13に示すルマ成分の場合には定数値αは2.3となり、図14に示すクロマ成分の場合には定数値αは2.6となる。いくつかの例では、定数値αが2.3であると、ルマ成分について最適なコーディング効率が得られ、定数値αが2.6であると、クロマ成分について最適なコーディング効率が得られる。
上述したように、クリッピングインデックスは、例えば、クリッピングインデックスと対応するクリッピング値との関係に基づいて、対応するクリッピング値を決定するために使用されることができる。この関係は、事前定義され、デコーダに記憶されることができる。この関係は、事前定義されてデコーダに記憶され得るテーブル(例えば、図13~14に示されるようなもの)、方程式などによって記述されることができる。いくつかの例では、テーブル、および/または、方程式で使用されるパラメータ(例えば、ビット深度B、定数値α、N)がシグナリングされる。
式(14)を用いたALFクリッピング値の決定は、式(12)を用いた場合とは異なることがある。いくつかの違いを以下に示しており(イタリック体で強調表示されている)、また、取り消し線を付けたテキストが削除されたテキストを示す図13~14に示されたテーブルに示している。
alf_luma_clip_idx[sfIdx][j]は、sfIdxで示されるシグナリングされたルマフィルタのj番目の係数を乗算する前に使用する対応するクリッピング値のクリッピングインデックスを指定することができる。一例では、alf_luma_clip_idx[sfIdx][j](sfIdx=0..alf_luma_num_filters_signalled_minus1およびj=0..11)の値が、0以上3以下の範囲内であることが、ビットストリーム適合性の要件となる。
要素AlfClipL[adaptation_parameter_set_id][filtIdx][j](filtIdx=0..NumAlfFilters-1およびj=0..11)を持つルマフィルタクリッピング値AlfClipL[adaptation_parameter_set_id]は、例えば、bitDepthがBitDepthYに等しく設定され、clipIdxがalf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j]に等しく設定されることに応じて、図13に示されるテーブルで指定されるように導出されることができる。
alf_chroma_num_alt_filters_minus1+1は、クロマ成分の代替フィルタの数を指定することができる。
0に等しいalf_chroma_clip_flag[altIdx]は、インデックスaltIdxを持つクロマフィルタを使用する際に、クロマ成分に線形適応ループフィルタリングを適用することを指定でき、1に等しいalf_chroma_clip_flag[altIdx]は、インデックスaltIdxを持つクロマフィルタを使用する際に、クロマ成分に非線形適応ループフィルタリングを適用することを指定できる。存在しない場合、alf_chroma_clip_flag[altIdx]は0に等しいと推測されることができる。
alf_chroma_coeff_abs[altIdx][j]は、インデックスaltIdxを持つ代替クロマフィルタのj番目のクロマフィルタ係数の絶対値を指定することができる。alf_chroma_coeff_abs[altIdx][j]が存在しない場合、0に等しいと推測されることができる。一例では、alf_chroma_coeff_abs[altIdx][j]の値が、0以上27-1以下の範囲内であることが、ビットストリーム適合性の要件となる。
指数ゴロム二値化uek(v)の次数kは3に等しく設定されることができる。
alf_chroma_coeff_sign[altIdx][j]は、インデックスaltIdxを持つ代替クロマフィルタのj番目のクロマフィルタ係数の符号を以下のように指定することができる。
alf_chroma_coeff_sign[altIdx][j]が0に等しい場合、対応するクロマフィルタ係数は正の値を持つことができる。
それ以外の場合(alf_chroma_coeff_sign[altIdx][j]が1に等しい場合)、対応するクロマフィルタ係数は負の値を持つことができる。
alf_chroma_coeff_sign[altIdx][j]が存在しない場合は、0に等しいと推測されることができる。
要素AlfCoeffC[adaptation_parameter_set_id][altIdx][j](altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5)を持つクロマフィルタ係数AlfCoeffC[adaptation_parameter_set_id][altIdx]は、以下のように導出されることができる。
AlfCoeffC[adaptation_parameter_set_id][altIdx][j]=alf_chroma_coeff_abs[altIdx][j]*(1-2*alf_chroma_coeff_sign[altIdx][j]) 式(15)
一例では、AlfCoeffC[adaptation_parameter_set_id][altIdx][j](altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5)の値が、-27-1以上27-1以下の範囲内であることが、ビットストリーム適合性の要件となる。
alf_chroma_clip_idx[altIdx][j]は、インデックスaltIdxを持つ代替クロマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定することができる。一例では、alf_chroma_clip_idx[altIdx][j](altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5)の値が、0以上3以下の範囲内であることが、ビットストリーム適合性の要件となる。
要素AlfClipC[adaptation_parameter_set_id][altIdx][j](altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5)を持つクロマフィルタのクリッピング値AlfClipC[adaptation_parameter_set_id][altIdx]は、例えば、bitDepthがBitDepthCに等しく設定され、clipIdxがalf_chroma_clip_idx[altIdx][j]に等しく設定されることに応じて、図13に示されるテーブルで指定されるように導出されることができる。
図15は、本開示の一実施形態によるプロセス(1500)を概説するフローチャートである。プロセス(1500)は、コード化ビデオシーケンスのピクチャにおけるCBを再構築するために使用されることができる。様々な実施形態において、プロセス(1500)は、端末装置(310)、(320)、(330)および(340)における処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1500)はソフトウェア命令で実装されるため、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1500)を実行する。このプロセスは、(S1501)で開始し、(S1510)に進む。
(S1510)では、コード化ビデオシーケンスのピクチャにおけるCBのコード化情報をデコードすることができる。該コード化情報は、クリッピングインデックスmを示すことができる。クリッピングインデックスmは、CBに適用されるフィルタのクリッピング値を示すことができる。CB内の再構築サンプルは、フィルタによってフィルタリングされ得る。いくつかの例では、フィルタは、式(13)に対応する非線形ALFである。フィルタは、式(13)を参照して以上で説明したように、フィルタ係数(例えば、f(k,l))および対応するクリッピング値(例えば、c(k,l))によって特徴付けられることができる。例えば、フィルタは、(例えば、式(13)に示すように)クリッピング値に依存しているクリッピング関数(例えば、Clip3(-y,y,x))を含む。CBは、ルマCBまたはクロマCBであり得る。
フィルタリングプロセスは、ピクチャレベル、スライスレベル、CTBレベルなど、1つまたは複数の適切なレベルで制御され得る。いくつかの例では、クリッピングインデックスを示すコード化情報は、ピクチャのAPSにおいてピクチャレベルでシグナリングされる。APSでシグナリングされるコード化情報は、フィルタ係数とクリッピングインデックスとを含む少なくとも1つのシグナリングされたフィルタセットを含むことができる。また、フィルタセットインデックスは、例えば、CBにどのALFを使用するかを示すために、CTBに対してシグナリングされることができる。フィルタセットインデックスは、例えば、デコーダによって受信されることができる。フィルタセットインデックスに基づいて、フィルタは複数のフィルタセットから決定され、その後、CBに適用されることができる。いくつかの実施形態では、複数のフィルタセットは、少なくとも1つのシグナリングされたフィルタセットおよび複数の事前定義されたフィルタセットによって形成され得る。
(S1520)では、クリッピングインデックスに関連付けられたクリッピング値(例えば、AlfClip、AlfClipL、またはAlfClipC)を決定することができる。クリッピング値は、第1の関数と第2の関数との乗算に基づくことができる。第1の関数は、ビット深度Bに依存することができ、クリッピングインデックスmから独立することができ、また、第2の関数は、クリッピングインデックスmに依存することができ、ビット深度Bから独立することができる。第1の関数は、2Bに比例することができるため、コーディング効率を向上させる。一実施形態では、クリッピング値は整数であり、第1の関数は2Bであり、第2の関数は2-αmであり、ここで、αはフィルタの強度に関連付けられる定数値である。一例では、クリッピング値(例えば、整数)は、2B2-αmに基づいて決められる。
上述したように、一例では、クリッピング値は、2B2-αmの値を整数に丸めることに等しい。値2B2-αmを、整数(例えば、最も近い整数)に切り上げたり切り捨てたりして、クリッピング値を生成することができる。一例では、クリッピング値は2B2-αmを最も近い整数に丸めたものである。
ビット深度Bは、内部ビット深度、CB内の再構築サンプルのビット深度などであり得る。また、クリッピングインデックスmは、非負の整数であり得る。一例では、クリッピングインデックスは、0からクリッピングインデックスの許容されるクリッピング値の数N(例えば、4)までの範囲のうちの1つである。クリッピングインデックスは、0、...、(N-1)のうちの1つであり得る。一例では、Nは4であり、従って、クリッピングインデックスは、0、1、2、および3のうちの1つである。ビット深度Bおよび許容されるクリッピング値の数Nは、事前定義され、エンコーダおよび/またはデコーダに記憶されることができる。あるいは、ビット深度Bおよび/またはNは、デコーダにシグナリングされることができる。
定数値αは、CBがルマCBであることに基づく第1の定数値とすることができ、また、定数値αは、CBがクロマCBであることに基づく第2の定数値とすることができる。第1の定数値と第2の定数値は同一であっても異なっていてもよい。コーディング効率を向上させるために、第1の定数値および第2の定数値に最適値を使用することができる。一例では、第1の定数値は、ルマCBについては2.3であり、第2の定数値は、クロマCBについては2.6である。第1の定数値および/または第2の定数値は、事前定義され、エンコーダおよび/またはデコーダに記憶されることができる。あるいは、第1の定数値および/または第2の定数値は、デコーダにシグナリングされることができる。
一実施形態では、クリッピング値は、クリッピング値とクリッピングインデックスとの間の関係に基づいて、クリッピングインデックスから決定されることができる。この関係は、クリッピング値が、第1の関数(例えば、2Bに比例する)と第2の関数との乗算によって決定されることを示すことができる。一例では、クリッピングインデックスmおよびビット深度Bに基づいてクリッピング値を決定するために、ルックアップテーブル(例えば、図13のルマCB用のテーブル、図14のクロマCB用のテーブル)を使用することができる。
(S1530)では、CBにフィルタを適用することにより、フィルタリングされたCBを生成することができる。
プロセス(1500)は、適切に適応されることができる。プロセス(1500)のステップは、変更および/または省略され得る。また、追加のステップを加えることができる。任意の適切な実装の順序を使用することができる。
以上で説明された技法は、コンピュータ読取可能な命令を使用するコンピュータソフトウェアとして実行され、1つまたは複数のコンピュータ読取可能な媒体に物理的に記憶されることができる。例えば、図16は、開示された主題の特定の実施形態を実行することに適したコンピュータシステム(1600)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、またはそのようなメカニズムを施されて、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などによって実行されることができる命令を含むコードを作成する任意の適切な機械コードまたはコンピュータ言語を用いてコード化されることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
コンピュータシステム(1600)について、図16に示される例示的なコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関していかなる限定を示唆することも意図しない。コンポーネントの構成は、コンピュータシステム(1600)の例示的な実施形態で示されるコンポーネントのうちのいずれか1つ又は組み合わせに関する任意の依存性又は必要性を有するとして解釈されるべきではない。
コンピュータシステム(1600)は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(示されていない)によって、1人以上のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、静止画像カメラから取得される写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係しない特定のメディアをキャプチャすることにも使用できる。
入力ヒューマンインターフェースデバイスは、キーボード(1601)、マウス(1602)、トラックパッド(1603)、タッチスクリーン(1610)、データグローブ(図示せず)、ジョイスティック(1605)、マイクフォン(1606)、スキャナ(1607)、カメラ(1608)(それぞれ1つのみ示されている)のうちの1つまたは複数を含み得る。
コンピュータシステム(1600)は、特定のヒューマンインターフェース出力デバイスをも含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音声、光、および嗅覚/味覚を介して1人以上のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1610)、データグローブ(図示せず)、またはジョイスティック(1605)による触覚フィードバックがあるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(スピーカ(1609)、ヘッドホン(示されていない)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1610)(それぞれタッチスクリーン入力能力を有するかもしくは有せず、それぞれ触覚フィードバック能力を有するかもしくは有しない。それらの一部は、ステレオグラフィック出力などの手段を介して、2次元の視覚出力または3次元以上の出力を出力することができる)、仮想現実眼鏡(示されていない)、ホログラフィックディスプレおよびスモークタンク(示されていない)など)、およびプリンタ(示されていない)を含み得る。
コンピュータシステム(1600)は、人間がアクセス可能な記憶装置およびそれらの関連する媒体、例えば、CD/DVDなどの媒体(1621)付きのCD/DVD ROM/RW(1620)を含む光学媒体、サムドライブ(1622)、リムーバブルハードドライブまたはソリッドステートドライブ(1623)、テープやフロッピーディスクなどの従来の磁気媒体(示されていない)、セキュリティドングルなどの専用のROM/ASIC/PLDベースのデバイス(示されていない)などをも含むことができる。
ここで開示された主題に関連して使用される「コンピュータ読取可能な媒体」という用語は、送信媒体、搬送波、または他の一時的な信号を包含しないことをも当業者が理解するべきである。
コンピュータシステム(1600)は、1つまたは複数の通信ネットワーク(1655)へのインターフェース(1654)をさらに含むことができる。ネットワークは、例えば、無線、有線、光学的であり得る。ネットワークは、さらに、ローカル、広域、大都市圏、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例は、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両用や産業用などを含む。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(1649)(例えば、コンピューターシステム(1600)のUSBポートなど)に接続された外部ネットワークインターフェースアダプターを必要とする。他のものは一般に、以下で説明するようにシステムバスに接続することにより、コンピューターシステム(1600)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピューターシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを用いて、コンピュータシステム(1600)は、他のエンティティと通信することができる。このような通信は、単方向、受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向、例えばローカルまたはワイドエリアデジタルネットワークを用いる他のコンピュータシステムへの送信であり得る。特定のプロトコルおよびプロトコルスタックを上述したこれらのネットワークおよびネットワークインターフェースのそれぞれで使用することができる。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータシステム(1600)のコア(1640)に接続されることができる。
コア(1640)は、1つまたは複数の中央処理装置(CPU)(1641)、グラフィックスプロセッシングユニット(GPU)(1642)、フィールドプログラマブルゲートエリア(FPGA)(1643)の形態での専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(1644)、グラフィックアダプタ(1650)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(1645)、ランダムアクセスメモリ(1646)、非ユーザアクセス可能な内部ハードドライブ、SSDなどの内部大容量記憶装置(1647)とともに、システムバス(1648)を介して接続されてもよい。一部のコンピュータシステムでは、システムバス(1648)は、1つまたは複数の物理プラグの形態でアクセスでき、追加のCPU、GPUなどによる拡張を可能にする。周辺機器は、コアのシステムバス(1648)に直接、または周辺バス(1649)を介して接続されることができる。一例では、ディスプレイ(1610)は、グラフィックアダプタ(1650)に接続されることができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(1641)、GPU(1642)、FPGA(1643)、およびアクセラレータ(1644)は、組み合わせて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1645)またはRAM(1646)に記憶されることができる。推移データはRAM(1646)にも記憶できるが、永続データは、例えば、内部大容量ストレージ(1647)に記憶されることができる。1つまたは複数のCPU(1641)、GPU(1642)、大容量ストレージ(1647)、ROM(1645)、RAM(1646)などと密接に関連付けることができるキャッシュメモリを使用することにより、任意のメモリデバイスへの高速保存および検索が可能になる。
コンピュータ読取可能な媒体は、様々なコンピュータ実施操作を実行するためのコンピュータコードを備えることができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであり得るか、もしくは、それらは、コンピュータソフトウェア技術の当業者に周知であって利用可能な種類のものであり得る。
限定ではなく、一例として、アーキテクチャを有するコンピュータシステム(1600)、特にコア(1640)は、1つまたは複数の有形のコンピュータ読取可能な媒体に組み込まれたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果としての機能性を提供することができる。このようなコンピュータ読取可能な媒体は、以上で紹介したようにユーザがアクセス可能な大容量ストレージ、および、コア内部大容量ストレージ(1647)またはROM(1645)などの非一時的な性質を持つコア(1640)の特定のストレージに関連付けられた媒体であり得る。本開示の様々な実施形態を実行するソフトウェアは、このようなデバイスに記憶され、コア(1640)によって実行されることができる。コンピュータ読取可能な媒体は、特定の必要に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1640)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1646)に記憶されたデータ構造を定義すること、および、ソフトウェアで定義されたプロセスに従ってこのようなデータ構造を変更する言を含む、ここで説明する特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または、代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりにまたは一緒に動作することができる回路(例えば、アクセラレータ(1644))に有線接続されたまたは組み込まれたロジックの結果としての機能性を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ読取可能な媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
付録A:頭字語
JEM:Joint Exploration Model(共同探索モデル)
VVC:Versatile Video Coding(多用途ビデオコーディング)
BMS:Benchmark Set(ベンチマークセット)
MV:Motion Vector(動きベクトル)
HEVC:High Efficiency Video Coding(高効率ビデオコーディング)
MPM:most probable mode(最確モード)
WAIP:Wide-Angle Intra Prediction(広角イントラ予測)
SEI:Supplementary Enhancement Information(補助強化情報)
VUI:Video Usability Information(ビデオユーザビリティ情報)
GOP:Groups of Pictures(ピクチャ群)
TU:Transform Units(変換ユニット)
PU:Prediction Units(予測ユニット)
CTU:Coding Tree Units(コーディングツリーユニット)
CTB:Coding Tree Blocks(コーディングツリーブロック)
PB:Prediction Blocks(予測ブロック)
HRD:Hypothetical Reference Decoder(仮想参照デコーダ)
SDR:standard dynamic range(標準ダイナミックレンジ)
SNR:Signal Noise Ratio(信号対雑音比)
CPU:Central Processing Units(中央処理装置)
GPU:Graphics Processing Units(グラフィックスプロセッシングユニット)
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 Areas(フィールドプログラマブルゲートエリア)
SSD:Solid-State Drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
CU:Coding Unit(コーディングユニット)
PDPC:Position Dependent Prediction Combination(位置依存イントラ予測組み合わせ)
ISP:Intra Sub-Partitions(イントラサブパーティション)
SPS:Sequence Parameter Setting(シーケンスパラメータセット)
本開示は一部の例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書では明示的に示されていないか、または記載されていないが、本開示の原理を具現化し、その思想および範囲内に含まれる様々なシステムおよび方法を考案できることが理解されるであろう。