最初に、1つ以上の実施形態の例示的な実施が以下で提供されるが、開示するシステム及び/又は方法は、現在知られているか又は存在するかを問わず、任意の数の技術を用いて実施され得ることを理解すべきである。本開示は、本明細書で示し且つ説明される例示の設計及び実施を含む、以下に示す例示の形態、図面及び技術に決して限定されす、添付の特許請求の範囲の範囲と共にそれらの均等物の全範囲内で変更され得る。
以下の用語は、本明細書において反義的に文脈で用いられない限り、以下のように定義される。具体的には、以下の定義は本開示をさらに明確にすることを意図している。しかしながら、異なる文脈で用語が異なるように記述され得る。したがって、以下の定義は、補足とみなされるべきであり、本明細書においてそのような用語のために提供される説明の定義を制限するものとみなすべきではない。
ビットストリームは、エンコーダとデコーダとの間で伝送するために圧縮されるビデオデータを含む一連のビットである。エンコーダは、ビデオデータをビットストリームに圧縮するためのエンコーディングプロセスを用いるように構成された装置である。デコーダは、ビットストリームから表示のためにビデオデータを再構成するためにデコーディングプロセスを用いるように構成された装置である。ピクチャは、フレーム又はそのフィールドを生成する一連のルーマサンプル及び/又は一連のクロマサンプルである。エンコード又はデコードされているピクチャは、議論を明確にするために現在のピクチャと呼ぶことができる。参照ピクチャは、他のピクチャをコーディングする場合に、インター予測及び/又はインターレイヤー予測に従って参照により用いることができる参照サンプルを含むピクチャである。参照ピクチャリストは、インター予測及び/又はインターレイヤー予測のために用いられる参照ピクチャのリストである。一部のビデオコーディングシステムは、参照ピクチャリスト1及び参照ピクチャリスト0として示すことができる、2つの参照ピクチャリストを用いる。参照ピクチャリスト構造は、複数の参照ピクチャリストを含むアドレス指定可能な構文構造である。インター予測は、現在のピクチャのサンプルを、現在のピクチャとは異なる参照ピクチャ内の表示されたサンプルを参照することによりコーディングするメカニズムであり、参照ピクチャ及び現在のピクチャは同じ層内にある。参照ピクチャリスト構造エントリは、参照ピクチャリストに関連する参照ピクチャを示す参照ピクチャリスト構造内のアドレス可能な位置である。スライスヘッダはコード化されたスライスの一部であり、スライス内で表されるタイル内の全てのビデオデータに関連するデータ要素を含む。シーケンスパラメータセット(SPS)は、ピクチャのシーケンスに関連するデータを含むパラメータセットである。アクセスユニット(AU)は、(例えば、ユーザに表示するための)デコードピクチャバッファ(DPB)からの出力のために、同じ表示時間(例えば、同じピクチャーオーダーカウント)に関連する1つ以上のコード化されたピクチャのセットである。デコードされたビデオシーケンスは、ユーザへの表示の準備でデコーダによって再構成された一連のピクチャである。
双方向インター予測のための2つの参照ピクチャリストのそれぞれにおいて、現在のピクチャのインター予測のために用いられ得る参照ピクチャは、リストの先頭にある多数のエントリによってのみ参照され得る。これらのエントリはリスト内のアクティブエントリと呼ばれる一方で、他のエントリはリスト内の非アクティブエントリと呼ばれる。リスト内の全エントリの数及びアクティブなエントリの数の両方を得ることができる。参照ピクチャリスト内の非アクティブエントリによって参照されるピクチャは、参照ピクチャリスト内の他のエントリ又は他の参照ピクチャリスト内の任意のエントリによっても参照されることが許可されていない。
本明細書では以下の頭字語を用いる:コード化されたビデオシーケンス(CVS)、デコードピクチャバッファ(DPB)、瞬時デコーディングリフレッシュ(IDR)、イントラランダムアクセスポイント(IRAP)、ジョイントビデオエキスパートチーム(JVET)、最下位ビット(LSB)、最上位ビット(MSB)、ネットワーク抽象レイヤ(NAL)、ピクチャオーダカウント(POC)、ローバイトシーケンスペイロード(RBSP)、リアルタイムトランスポートプロトコル(RTP)、シーケンスパラメタセット(SPS)、汎用ビデオコーディング(VVC)、ワーキングドラフト(WD)、ウェーブレットパラレル処理(WPP)。
図1は、ビデオ信号をコーディングする例示の動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダでエンコードされる。エンコーディングプロセスは、ビデオファイルサイズを低減するために、様々なメカニズムを用いることによりビデオ信号を圧縮する。ファイルサイズがより小さいと、関連する帯域幅オーバーヘッドを低減しながら、圧縮されたビデオファイルをユーザに送信することを可能となる。次いで、デコーダは、圧縮されたビデオファイルをデコードして、エンドユーザに表示するために元のビデオ信号を再構成する。デコーディングプロセスは、一般に、エンコーディングプロセスに酷似し、デコーダがビデオ信号を一貫して再構成できるようにする。
ステップ101では、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号はメモリに記憶された非圧縮ビデオファイルであり得る。別の例として、ビデオファイルは、ビデオカメラ等のビデオキャプチャ装置によってキャプチャされてもよく、ビデオのライブストリーミングをサポートするようにエンコードされ得る。ビデオファイルは、オーディオコンポーネント及びビデオコンポーネントの両方を含み得る。ビデオコンポーネントは、連続で見た場合に、動きの視覚的な印象を与える一連の画像フレームを含む。フレームは、本明細書でルーマ成分(又はルーマサンプル)と呼ばれる光及びクロマ成分(又はカラーサンプル)と呼ばれる色の観点で表されるピクセルを含む。一部の例では、フレームは、三次元表示をサポートするために深度値も含み得る。
ステップ103で、ビデオはブロックに分割される。分割は、圧縮のために各フレーム内のピクセルを正方形及び/又は長方形のブロックにさらに分割することを含む。例えば、ハイエフィシエンシービデオコーディング(HEVC)(H.265及びMPEG-H Part 2としても知られている)では、フレームは先ず所定のサイズ(例えば、64ピクセル×64ピクセル)のブロックである、コーディングツリー単位(CTU)に分割することができる。CTUにはルーマ及びクロマサンプルの両方が含む。コーディングツリーを用いてCTUをブロックに分割し、次いで、さらなるエンコーディングをサポートする構成が得られるまでブロックが再帰的にさらに分割される。例えば、フレームのルーマコンポーネントは、個々のブロックが比較的均一な照明値を含むまでさらに分割され得る。また、フレームのクロマコンポーネントは、個々のブロックが比較的均一な色値を含むまでさらに分割され得る。したがって、分割メカニズムはビデオフレームの内容によって変化する。
ステップ105では、ステップ103で分割された画像ブロックを圧縮するために、様々な圧縮メカニズムが用いられる。例えば、インター予測及び/又はイントラ予測が用いられ得る。イントラ予測は、共通のシーン内のオブジェクトが連続するフレームに現れる傾向があるという事実を利用するように設計されている。したがって、参照フレーム内のオブジェクトを描くブロックを隣接するフレーム内で繰り返し記述する必要あない。具体的には、テーブル等のオブジェクトは、複数のフレームにわたって一定の位置に留まり得る。そのため、テーブルは一度記述され、隣接するフレームは参照フレームに戻って参照できる。複数フレームにわたってオブジェクトをマッチングするためにパターンマッチングメカニズムが用いられ得る。また、移動するオブジェクトは、例えば、オブジェクトの動き又はカメラの動きにより複数のフレームに亘って表現され得る。特定の例として、ビデオは、複数のフレームに亘ってスクリーンを横切って移動する自動車を表示し得る。そのような動きを記述するために動きベクトルを用いることができる。動きベクトルは、フレーム内のオブジェクトの座標から参照フレーム内のオブジェクトの座標へのオフセットを提供する二次元ベクトルである。そのため、インター予測は、参照フレーム内の対応するブロックからのオフセットを示す動き一組の動きベクトルとして、現在のフレーム内の画像ブロックをエンコードすることができる。
イントラ予測は共通フレーム内のブロックをエンコードする。イントラ予測は、ルーマ及びクロマコンポーネントがフレームに集中する傾向があるという事実を利用する。例えば、樹木の一部の緑色の斑点は、同様の緑色の斑点に隣接して位置する傾向がある。イントラ予測は、多方向予測モード(例えば、HEVCにおける33)、平面モード及び直流(DC)モードを用いる。方向モードは、現在のブロックが、対応する方向の隣接ブロックのサンプルと類似/同じであることを示す。平面モードは、行/列に沿った一連のブロック(例えば、平面)が、行の端における隣接ブロックに基づいて補間できることを示す。平面モードは、事実上、値を変化する際に比較的一定の傾斜を用いることによって、行/列に亘る光/色の滑らかな遷移を示す。DCモードは境界平滑化のために用いられ、方向予測モードの角度方向に関連する隣接ブロックの全てのサンプルに関連する平均値とブロックが同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値の代わりに、様々な関係予測モード値として画像ブロックを表すことができる。また、インター予測ブロックは、実際の値の代わりに、動きベクトル値として画像ブロックを表わすことができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを厳密に表さない場合がある。差異は残差ブロックに記憶される。ファイルをさらに圧縮するために残差ブロックに変換が適用され得る。
ステップ107で、様々なフィルタリング技術が適用され得る。HEVCでは、インループフィルタリングスキームに従ってフィルタが適用される。上述のブロックベースの予測は、デコーダにおいてブロック状画像の生成がもたらされ得る。また、ブロックベースの予測スキームはブロックをエンコードし、次いで、エンコードしたブロックを後で参照ブロックとして用いるために再構成し得る。インループフィルタリングスキームは、ノイズ抑制フィルタ、デブロックフィルタ、アダプティブループフィルタ及びサンプルアダプティブオフセット(SAO)フィルタをブロック/フレームに逐次適用する。これらのフィルタは、エンコードされたファイルを正確に再構成することができるように、そのようなブロッキングアーチファクトを軽減する。また、これらのフィルタは、再構成された参照ブロック内のアーチファクトを軽減するため、アーチファクトが、再構成された参照ブロックに基づいてエンコードされる後続ブロック内に追加のアーチファクトを生成する可能性が低い。
ビデオ信号が分割、圧縮及びフィルタリングされると、結果として得られるデータがステップ109でビットストリームにエンコードされる。ビットストリームは、上述したデータに加えて、デコーダでの適切なビデオ信号再構成をサポートするのに望ましい任意の信号データを含む。例えば、そのようなデータは、パーティションデータ、予測データ、残差ブロック及びデコーダにコーディング命令を提供する様々なフラグを含む。ビットストリームは、要求に応じてデコーダに向けて送信するためにメモリに記憶され得る。ビットストリームは、複数のデコーダに向けてブロードキャスト及び/又はマルチキャストされ得る。ビットストリームの生成は反復プロセスである。したがって、ステップ101、103、105、107及び109は、多くのフレーム及びブロックにわたって連続的に及び/又は同時に生じ得る。図1に示す順序は、説明の明確さ及び容易さのために示されており、ビデオコーディングプロセスを特定の順序に限定することを意図していない。
デコーダはビットストリームを受信し、ステップ111でデコーディングプロセスを開始する。具体的には、デコーダは、ビットストリームを対応する構文及びビデオデータに変換するためにエントロピーデコーディングスキームを用いる。デコーダは、ステップ111で、フレームの分割を決定するためにビットストリームからの構文データを用いる。分割は、ステップ103におけるブロック分割の結果と一致するはずである。ステップ111で用いられるエントロピーエンコーディング/デコーディングを今から説明する。エンコーダは、入力画像内の値の空間的位置に基づくいくつかの可能な選択肢からブロック分割スキームを選択する等、圧縮プロセスの間に多くの選択を行う。厳密な選択肢の伝達には、多数のビンが用いられ得る。本明細書で用いるように、ビンは、変数として扱われるバイナリ値である(例えば、コンテキストに応じて変化し得るビット値)である。エントロピーコーディングは、エンコーダが特定の場合にとって明らかに実行可能でない任意のオプションを捨てることを可能にするため、許容可能なオプションのセットが残る。各許容可能なオプションにはコードワードが割り当てられる。コードワードの長さは、許容可能なオプションの数(例えば、2つのオプションに対して1つのビン、3~4つのオプションに対して2つのビン等)に基づく。そして、エンコーダは、選択されたオプションに対してコードワードをエンコードする。このスキームは、コードワードが、全ての可能な選択肢の潜在的に大きなセットからの選択を一意的に示すのとは反対に、許可可能な選択肢の小さなサブセットからの選択を一意的に示すのに望ましい大きさであるため、コードワードのサイズを小さくする。次いで、デコーダは、エンコーダと同様の方法で許容可能な選択肢のセットを決定することにより、選択をデコードする。許容可能な選択肢のセットを決定することにより、デコーダはコードワードを読み取り、エンコーダによってなされる選択を特定できる。
ステップ113で、デコーダはブロックデコーディングを行う。具体的には、デコーダは、残差ブロックを生成するために逆変換を用いる。次いで、デコーダは、残差ブロック及び対応する予測ブロックを用いて、分割に従って画像ブロックを再構成する。予測ブロックは、ステップ105でエンコーダで生成されたイントラ予測ブロック及びインター予測ブロックの両方を含み得る。次いで、再構成された画像ブロックは、ステップ111で決定された分割データに従って、再構成されたビデオ信号のフレーム内に配置される。ステップ113のための構文も、上述したようにエントロピーコーディングを通じてビットストリーム内で伝達され得る。
ステップ115で、エンコーダにおけるステップ107と同様の方法で、再構成されたビデオ信号のフレームに対してフィルタリングが行われる。例えば、ノイズ抑制フィルタ、デブロッキングフィルタ、アダプティブループフィルタ及びSAOフィルタをフレームに適用して、ブロッキングアーチファクトを取り除く。フレームがフィルタリングされると、エンドユーザによる閲覧のために、ステップ117でビデオ信号をディスプレイに出力できる。
図2は、ビデオコーディングのための例示のコーディング及びデコーディング(コーデック)システム200の概略図である。具体的には、コーデックシステム200は、動作方法100の実施をサポートするための機能を提供する。コーデックシステム200は、エンコーダ及びデコーダの両方で用いられるコンポーネントを示すために一般化されている。コーデックシステム200は、動作方法100のステップ101及び103に関して説明したように、ビデオ信号を受信及び分割し、これにより分割されたビデオ信号201が得られる。次に、コーデックシステム200は、エンコーダとしての機能を果たす場合は、方法100のステップ105、107及び109に関して説明したように、分割されたビデオ信号201をコード化されたビットストリームに圧縮する。デコーダとしての機能を果たす場合、コーデックシステム200は、動作方法100におけるステップ111、113、115及び117に関して説明したように、ビットストリームから出力ビデオ信号を生成する。コーデックシステム200は、一般コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、動き推定コンポーネント221、スケーリング及び逆変換コンポーネント229、フィルタ制御分析コンポーネント227、インループフィルタコンポーネント225、デコードピクチャバッファコンポーネント223及びヘッダフォーマット化及びコンテキストアダプティブバイナリ算術コーディング(CABAC)コンポーネント231を含む。そのようなコンポーネントは図示のように連結されている。図2では、黒色の線はエンコード/デコードすべきデータの動きを示すのに対して、破線は他のコンポーネントの動作を制御する制御データの動きを示す。コーデックシステム200のコンポーネントの全てはエンコーダ内に存在し得る。デコーダは、コーデックシステム200のコンポーネントのサブセットを含み得る。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング及び逆変換コンポーネント229、インループフィルタコンポーネント225及びデコードピクチャバッファコンポーネント223を含み得る。これらのコンポーネントを今から説明する。
分割されたビデオ信号201は、コーディングツリーによりピクセルのブロックに分割されているキャプチャされたビデオシーケンスである。コーディングツリーは、ピクセルのブロックをさらに小さいピクセルのブロックにさらに分割するために、様々な分割モードを用いる。そして、これらのブロックは、より小さいブロックにさらに分割することができる。ブロックは、コーディングツリー上のノードと呼ばれ得る。大きな親ノードは、小さな子ノードに分割される。ノードが分割される回数は、ノード/コーディングツリーの深さと呼ばれる。場合によっては、分割されたブロックはコーディングユニット(CU)に含めることができる。例えば、CUは、ルーマブロック、赤色差クロマ(Cr)ブロック及び青色差クロマ(Cb)ブロックと共にCUのための対応する構文命令を含むCTUのサブ部分であり得る。分割モードは、ノードを、用いられる分割モードに応じて異なる形状の2つ、3つ又は4つの子ノードに分割するためにそれぞれ用いられるバイナリツリー(BT)、トリプルツリー(TT)及びクワッドツリー(QT)を含み得る。分割されたビデオ信号201は、圧縮のために、一般コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227及び動き推定コンポーネント221に転送される。
一般コーダ制御コンポーネント211は、アプリケーションの制約に従って、ビデオシーケンスの画像をビットストリームにコーディングすることに関連する決定を行うように構成されている。例えば、一般コーダ制御コンポーネント211は、再構成品質に対するビットレート/ビットストリームサイズの最適化を管理する。そのような決定は、記憶領域/帯域幅の可用性及び画像解像度要求に基づいて行われ得る。一般コーダ制御コンポーネント211は、バッファのアンダーラン及びオーバーランの問題を緩和するために、送信速度に照らしてバッファの利用も管理する。これらの問題を管理するために、一般コーダ制御コンポーネント211は、他のコンポーネントによる分割、予測及びフィルタリングを管理する。例えば、一般コーダ制御コンポーネント211は、解像度を高め且つ帯域幅の使用を増やすために圧縮の複雑さを動的に高め得るか又は解像度及び帯域幅の使用を減らすために圧縮の複雑さを低減し得る。そのため、一般コーダ制御コンポーネント211は、ビットレートの懸念とビデオ信号再構成品質とのバランスを取るために、コーデックシステム200の他のコンポーネントを制御する。一般コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを生成する。制御データも、デコーダでのデコーディングのためにパラメータを伝達するためにビットストリームにエンコードされるようにヘッダフォーマット及びCABACコンポーネント231に転送される。
分割されたビデオ信号201は、インター予測のために、動き推定コンポーネント221及びモ動き補償コンポーネント219にも送信される。分割されたビデオ信号201のフレーム又はスライスは複数のビデオブロックに分割され得る。動き推定コンポーネント221及び動き補償コンポーネント219は、時間的な予測を提供するために、1つ以上の参照フレーム内の1つ以上のブロックに対して、受信したビデオブロックのインター予測コーディングを行う。コーデックシステム200は、例えばビデオデータの各ブロックのための適切なコーディングモードを選択するために、複数のコーディングパスを行い得る。
動き推定コンポーネント221及び動き補償コンポーネント219は高度に統合され得るが、概念的な目的のために別個に図示されている。動き推定コンポーネント221によって行われる動き推定は、ビデオブロックのための動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対するコード化されたオブジェクトの変位を示し得る。予測ブロックは、ピクセル差の観点で、コード化すべきブロックに密接に一致することが見出されるブロックである。予測ブロックは参照ブロックとも呼ばれる。このようなピクセル差は、絶対差の合計(SAD)、二乗差の合計(SSD)又は他の差分メトリックによって求められ得る。HEVCは、CTU、コーディングツリーブロック(CTB)及びCUを含むいくつかのコード化されたオブジェクトを用いる。例えば、CTUはCTBに分割でき、CTBはCUに含めるためにCBに分割される。CUは、予測データを含む予測ユニット(PU)及び/又はCUの変換残差データを含む変換ユニット(TU)としてエンコードできる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み解析を用いることにより、動きベクトル、PU及びTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームのために複数の参照ブロック、複数の動きベクトル等を特定し、レート歪み特性が最良の参照ブロック、動きベクトル等を選択し得る。最良のレート歪み特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失量)とコーディング効率(例えば、最終エンコーディングのサイズ)の両方のバランスを取る。
一部の例では、コーデックシステム200は、デコードピクチャバッファコンポーネント223に記憶された参照ピクチャのサブ整数ピクセル位置の値を算出し得る。例えば、ビデオコーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置又は他の部分的ピクセル位置の値を補間し得る。したがって、動き推定コンポーネント221は、全ピクセル位置及び部分的ピクセル位置に対する動きサーチを行い、部分的ピクセル精度を有する動きベクトルを出力し得る。動き推定コンポーネント221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することにより、インターコード化されたスライス内のビデオブロックのPUのための動きベクトルを計算する。動き推定コンポーネント221は、エンコーディングのためにヘッダフォーマット及びCABACコンポーネント231に計算した動きベクトルを動きデータとして出力し、動きを動き補償コンポーネント219に出力する。
動き補償コンポーネント219によって行われる動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含み得る。再び、一部の例では、動き推定コンポーネント221及び動き補償コンポーネント219は機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが指す予測ブロックを特定し得る。次いで、コード化されている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算することにより、残差ビデオブロックが形成されて、ピクセル差値が形成される。一般に、動き推定コンポーネント221はルーマコンポーネントに対して動き推定を行い、動き補償コンポーネント219は、ルーマコンポーネントに基づいて計算された動きベクトルをクロマコンポーネント及びルーマコンポーネントの両方のために用いる。予測ブロック及び残差ブロックは、変換スケーリング及び量子化コンポーネント213に転送される。
分割されたビデオ信号201も、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217に送信される。動き推定コンポーネント221及び動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は高度に統合され得るが、概念的な目的のために別個に図示されている。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、上述した、動き推定コンポーネント221及び動き補償コンポーネント219によって行われるフレーム間のインター予測に代えて、現在のフレーム内のブロックに対する現在のブロックをイントラ予測する。とりわけ、イントラピクチャ推定コンポーネント215は、現在のブロックをエンコードするために用いるイントラ予測モードを決定する。一部の例では、イントラピクチャ推定コンポーネント215は、複数のテストされたイントラ予測モードから、現在のブロックをエンコードするために、適切なイントラ予測モードを選択する。次いで、選択されたイントラ予測モードが、エンコーディングのためにヘッダフォーマット及びCABACコンポーネント231に転送される。
例えば、イントラピクチャ推定コンポーネント215は、様々なテストされたイントラピクチャ予測モードについて、レート歪み分析を用いてレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み分析は、エンコードされたブロックと、該エンコードされたブロックを生成するためにエンコードされた元のエンコードされていないブロックとの間の歪み(又は誤差)の量及びエンコードされたブロックを生成するために用いられるビットレート(例えば、ビットの数)を概して特定する。イントラピクチャ推定コンポーネント215は、様々なエンコードされたブロックのための歪み及びレートから比率を計算して、ブロックのために最良のレート歪み値を示すイントラ予測モードを特定する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(RDO)に基づく深度モデリングモード(DMM)を用いて深度マップの深度ブロックをコード化するように構成され得る。
イントラピクチャ予測コンポーネント217は、エンコーダで実施された場合にはイントラピクチャ予測コンポーネント215によって特定される選択されたイントラピクチャ予測モードに基づく予測ブロックから残差ブロックを生成し、デコーダで実施される場合にはビットストリームから残差ブロックを読み出し得る。残差ブロックは、行列として表される予測ブロックと元のブロックとの間の値の差を含む。次いで、残差ブロックは、変換スケーリング及び量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、ルーマコンポーネント及びクロマコンポーネントの両方に対して動作し得る。
変換スケーリング及び量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成されている。変換スケーリング及び量子化コンポーネント213は、離散コサイン変換(DCT)、離散正弦変換(DST)又は概念的に同様の変換等の変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換又は他の種類の変換も用いられ得る。変換は、残差情報をピクセル値ドメインから変換ドメイン、例えば周波数ドメインに変換し得る。変換スケーリング及び量子化コンポーネント213は、変換された残差情報を例えば周波数に基づいてスケーリングするようにも構成されている。そのようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように、残差情報に倍率を適用することを含み、これは、再構成されたビデオの最終的な視覚品質に影響を及ぼし得る。変換スケーリング及び量子化コンポーネント213は、ビットレートをさらに低下させるために変換係数を量子化するようにも構成されている。量子化プロセスは、係数の一部又は全てに関するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。一部の例では、変換スケーリング及び量子化コンポーネント213は、次いで、量子化された変換係数を含む行列の走査を行い得る。量子化された変換係数は、ヘッダフォーマット及びCABACコンポーネント231に転送され、ビットストリームにエンコードされる。
スケーリング及び逆変換コンポーネント229は、動き推定をサポートするために変換スケーリング及び量子化コンポーネント213の逆演算を適用する。スケーリング及び逆変換コンポーネント229は、例えば、後に別の現在のブロックの予測ブロックとなり得る参照ブロックとして後で用いるために、逆スケーリング、変換及び/又は量子化を適用して、ピクセルドメイン内の残差ブロックを再構成する。動き推定コンポーネント221及び/又は動き補償コンポーネント219は、後のブロック/フレームの動き推定で用いるために、残差ブロックを対応する予測ブロックに加算することにより参照ブロックを計算し得る。スケーリング、量子化及び変換の間に生成されるアーチファクトを軽減するために、再構成された参照ブロックにフィルタが適用される。そうでなければ、そのようなアーチファクトは、後続のブロックが予測されたときに不正確な予測(及び追加のアーチファクト)をもたらし得る。
フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225は、残差ブロック及び/又は再構成された画像ブロックにフィルタを適用する。例えば、スケーリング及び逆変換コンポーネント229からの変換された残差ブロックが、イントラピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと組み合わせられて、元の画像ブロックが再構成され得る。次いで、再構成された画像ブロックにフィルタが適用され得る。一部の例では、フィルタは、代わりに、残差ブロックに適用され得る。図2の他のコンポーネントと同様に、フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225は高度に統合され、共に実施され得るが、概念的な目的のために別々に示されている。再構成された参照ブロックに適用されるフィルタは特定の空間領域に適用され、そのようなフィルタをどのように適用するかを調整するために複数のパラメータを含む。フィルタ制御解析コンポーネント227は再構成された参照ブロックを解析して、そのようなフィルタを適用すべき場所を決定し、対応するパラメータを設定する。そのようなデータは、エンコーディングのためのフィルタ制御データとしてヘッダフォーマット及びCABACコンポーネント231に転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタはデブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ及びアダプティブループフィルタを含み得る。そのようなフィルタは、例に応じて、空間/ピクセル領域(例えば、再構成されたピクセルブロック)又は周波数領域に適用され得る。
エンコーダとして動作する場合、フィルタリングされ、再構成された画像ブロック、残差ブロック及び/又は予測ブロックは、上述したように、後で動き推定に使用するために、デコードピクチャバッファコンポーネント223に記憶される。デコーダとして動作する場合、デコードピクチャバッファコンポーネント223は再構成されフィルタリングされたブロックを記憶し、出力ビデオ信号の一部としてディスプレイに向けて転送する。デコードピクチャバッファコンポーネント223は、予測ブロック、残差ブロック及び/又は再構成された画像ブロックを記憶可能な任意のメモリ装置であってもよい。
ヘッダフォーマット及びCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受信し、そのようなデータをデコーダに向けて伝送するためにコード化されたビットストリームにエンコードする。具体的には、ヘッダフォーマット及びCABACコンポーネント231は、一般的な制御データ及びフィルタ制御データ等の制御データをエンコードするために様々なヘッダを生成する。また、イントラ予測及び動きデータを含む予測データに加えて、量子化された変換係数データの形態の残差データの全てがビットストリーム内にエンコードされる。最終ビットストリームは、元の分割されたビデオ信号201を再構成するためにデコーダによって望まれる全ての情報を含む。そのような情報は、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックのためのエンコーディングコンテキストの定義、最も可能性の高いイントラ予測モードの表示、分割情報の表示等を含み得る。そのようなデータは、エントロピーコーディングを用いることによりエンコードされ得る。例えば、コンテキストアダプティブ可変長コーディング(CAVLC)、CABAC、構文ベースのコンテキストアダプティブバイナリ演算コーディング(SBAC)、確率間隔分割エントロピー(PIPE)コーディング又は別のエントロピーコーディング技術を用いることによって、情報がエンコードされ得る。エントロピーコーディングに続いて、コード化されたビットストリームは別の装置(例えば、ビデオデコーダ)に送信され得るか又は後での送信又は検索のためにアーカイブされ得る。
図3は、例示のビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコード機能を実施及び/又は動作方法100のステップ101、103、105、107及び/又は109を実施するために用いられ得る。エンコーダ300は、入力ビデオ信号を分割し、その結果として分割されたビデオ信号301が得られる。これは、分割されたビデオ信号201と実質的に同様である。次いで、分割されたビデオ信号301は、エンコーダ300のコンポーネントによって圧縮され、ビットストリームにエンコードされる。
具体的には、分割されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と実質的に同様であり得る。分割されたビデオ信号301は、デコードピクチャバッファコンポーネント323内の参照ブロックに基づくインター予測のために、動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に同様であり得る。イントラピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックは、残差ブロックの変換及び量子化のために変換及び量子化コンポーネント313に転送される。変換及び量子化コンポーネント313は、変換スケーリング及び量子化コンポーネント213と実質的に同様であり得る。変換され且つ量子化された残差ブロック及び対応する予測ブロックは、ビットストリームにコーディングするためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマット及びCABACコンポーネント231と実質的に同様であり得る。
変換され且つ量子化された残差ブロック及び/又は対応する予測ブロックも、動き補償コンポーネント321による使用のための参照ブロックへの再構成のために、変換及び量子化コンポーネント313から逆変換及び量子化コンポーネント329に転送される。逆変換及び量子化コンポーネント329は、スケーリング及び逆変換コンポーネント229と実質的に同様であり得る。インループフィルタコンポーネント325内のインループフィルタも、例に応じて、残差ブロック及び/又は再構成された参照ブロックにも適用される。インループフィルタコンポーネント325は、フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225と実質的に同様であり得る。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して説明したように複数のフィルタを含み得る。次に、フィルタリングされたブロックは、動き補償コンポーネント321により参照ブロックとして用いられるために、デコードピクチャバッファコンポーネント323に記憶される。デコードピクチャバッファコンポーネント323は、デコードピクチャバッファコンポーネント223と実質的に同様であり得る。
図4は、例示のビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコーディング機能を実施するため及び/又は動作方法100のステップ111、113、115及び/又は117を実施するために用いられ得る。デコーダ400は、例えばエンコーダ300からビットストリームを受信し、エンドユーザへの表示のために、ビットストリームに基づいて再構成された出力ビデオ信号を生成する。
ビットストリームはエントロピーデコーディングコンポーネント433によって受信される。エントロピーデコーディングコンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング又は他のエントロピーコーディング技術等のエントロピーコーディングスキームを実施するように構成されている。例えば、エントロピーコーディングコンポーネント433は、ビットストリーム内にコードワードとしてエンコードされた追加のデータを解釈するためのコンテキストを提供するために、ヘッダ情報を用いり得る。デコードされた情報は、一般的な制御データ、フィルタ制御データ、分割情報、動きデータ、予測データ及び残差ブロックからの量子化変換係数等の、ビデオ信号をデコードするための任意の所望の情報を含む。量子化変換係数は、残差ブロックに再構成するために、逆変換及び量子化コンポーネント429に転送される。逆変換及び量子化コンポーネント429は、逆変換及び量子化コンポーネント329と同様であり得る。
再構成された残差ブロック及び/又は予測ブロックは、イントラ予測動作に基づいて画像ブロックに再構成するために、イントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と同様であり得る。具体的には、イントラピクチャ予測コンポーネント417は予測モードを用いてフレーム内の参照ブロックの場所を特定し、残差ブロックを結果に適用してイントラ予測画像ブロックを再構成する。再構成されたイントラ予測画像ブロック及び/又は残差ブロックと、対応するインター予測データとは、デコードピクチャバッファコンポーネント423にインループフィルタコンポーネント425を介して転送され、それらはデコードピクチャバッファコンポーネント223及びインループフィルタコンポーネント225とそれぞれ実質的に同様であり得る。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタリングし、そのような情報はデコードピクチャバッファコンポーネント423に記憶される。デコードピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に同様であり得る。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを用いて予測ブロックを生成し、残差ブロックを結果に適用して画像ブロックを再構成する。結果として得られた再構成されたブロックは、インループフィルタコンポーネント425を介してデコードピクチャバッファコンポーネント423に転送され得る。デコードピクチャバッファコンポーネント423は、分割情報を介してフレームに再構成可能な追加の再構成された画像ブロックの記憶を続ける。このようなフレームはシーケンスに配置され得る。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
上記に留意して、ビデオ圧縮技術は、ビデオシーケンスに固有の冗長性を低減又は取り除くために、空間的(イントラピクチャ)予測及び/又は時間的(インターピクチャ)予測を行う。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオピクチャ又はビデオピクチャの一部)はビデオブロックに分割されてもよく、それはツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)及び/又はコーディングノードとも呼ばれ得る。ピクチャのイントラコード化(I)スライス内のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに関する空間的予測を用いてエンコードされる。ピクチャのインターコード化(P又はB)されたスライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関する空間的予測又は他の参照ピクチャ内の参照サンプルに関する時間的予測を用いり得る。ピクチャはフレームとも呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
空間的又は時間的予測は、コード化すべきブロックのための予測ブロックをもたらす。残差データは、コード化すべき元のブロックと予測ブロックとのピクセル差を表す。インターコード化されたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル及びコード化されたブロックと予測ブロックとの差を示す残差データに従ってエンコードされる。イントラコード化されたブロックは、イントラコーディングモード及び残差データに従ってエンコードされる。さらなる圧縮のために、残差データはピクセルドメインから変換ドメインに変換されてもよく、残差変換係数がもたらされ、それは次に量子化され得る。量子化された変換係数は先ず二次元アレイに配置され、変換係数の一次元ベクトルを生成するために走査され、よりさらなる圧縮を実現するためにエントロピーコーディングが適用され得る。
画像及びビデオ圧縮は急速な成長を経験し、様々なコーディング規格がもたらされた。このようなビデオコーディング規格には、ITU-T H.261、国際標準化機構/国際電気標準会議(ISO/IEC)MPEG-1 Part 2、ITU-T H.262又はISO/IEC MPEG-2 Part 2、ITU-T H.263、ISO/IEC MPEG-4 Part 2、ITU-T H.264又はISO/IEC MPEG-4 Part 10としても知られるアドバンストビデオコーディング(AVC)及びITU-T H.265又はMPEG-H Part 2としても知られるハイエフィシエンシービデオコーディング(HEVC)を含む。AVCは、スケーラブルビデオコーディング(SVC)、マルチビュービデオコーディング(MVC)及びマルチビュービデオコーディング+深度(MVC+D)及び3D AVC(3D-AVC)等の拡張機能を含む。HEVCはスケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)及び3D HEVC(3D-HEVC)等の拡張機能を含む。
ITU-T及びISO/IECのジョイントビデオエキスパートチーム(JVET)によって開発された、多目的ビデオコーディング(VVC)という名の新たなビデオコーディング規格もある。VVC規格にはいくつかの作業草案があるが、VVCの1つの作業草案、とりわけ、B. Bross、J. Chen及びS. Liuの「Versatile Video Coding(Draft 5)」、JVET-N1001-v3、第13回JVET会議、2019年3月27日(VVC草案5)を本明細書で参照する。
本明細書に開示の技術の説明は、ITU-T及びISO/IECのジョイントビデオエキスパートチーム(JVET)による開発中のビデオコーディング規格である多目的ビデオコーディング(VVC)に基づく。しかしながら、この技術は、他のビデオコーデックの仕様にも適用される。
AVC、HEVC及びVVCについて、ビデオコーディングにおける参照ピクチャ管理を説明する。
ビデオコーデックの仕様では、インター予測における参照ピクチャとしての使用、デコードピクチャバッファ(DPB)からのピクチャの出力、動きベクトルのスケーリング、重み付き予測等を含む、複数の目的のためにピクチャが識別される必要がある。
AVC及びHEVCでは、ピクチャオーダカウント(POC)でピクチャを識別できる。
AVC及びHEVCでは、DPB内の画像は「短期参照用」、「長期参照用」又は「参照のために非使用」とマークすることができる。ひとたびピクチャが「参照のために非使用」とマークされると、もはや予測のために用いることができず、出力のためにもはや必要でなくなった場合には、DPBから削除することができる。
AVCでは、短期及び長期の2種類の参照ピクチャがある。参照ピクチャは、予測参照のためにもはや不要となった場合、「参照のために非使用」とマークされ得る。これら3つの状態(短期、長期及び参照のために非使用)間の変換は、デコード参照ピクチャマーキングプロセスによって制御される。暗示的スライディングウインドウプロセス及び明示的メモリ管理制御オペレーション(MMCO)プロセスという2つの代替的なデコード参照画像マーキングメカニズムがある。スライディングウィンドウプロセスは、参照フレームの数が所与の最大数(SPSにおけるmax_num_ref_frames)と等しい場合、短期参照ピクチャを「参照のために非使用」とマークする。短期参照ピクチャは、最新のデコード短期ピクチャがDPBで維持されるように、先入れ先出しで記憶される。
明示的MMCOプロセスは、複数のMMCOコマンドを含み得る。MMCOコマンドは、1つ以上の短期又は長期参照ピクチャを「参照のために非使用」とマークし得るか、全てのピクチャを「参照のために非使用」とマークし得るか又は現在の参照ピクチャ若しくは既存の短期参照ピクチャを長期とマークし、その長期参照ピクチャに長期ピクチャインデックスを割り当て得る。
AVCでは、参照ピクチャマーキング動作に加えてDPBからのピクチャの出力及び除去のプロセスは、画像がデコードされた後に行われる。
HEVCは、参照ピクチャセット(RPS)と呼ばれる参照ピクチャ管理のための異なるアプローチを導入する。AVCのMMCO/スライディングウィンドウと比較した場合、RPSの概念と最も基本的な違いは、各特定のスライスに対して、現在のピクチャ又はそれに続くピクチャによって用いられる参照ピクチャの完全なセットが提供されることである。そのため、現在又は将来のピクチャによって用いるためにDPBで保持すべき全てのピクチャの完全なセットが伝達される。これは、DPBに対する相対的な変化のみが伝達されるAVCスキーのムとは異なる。RPS概念では、DPB内の参照ピクチャの正確な状態を維持するために、デコーディング順序における以前のピクチャからの情報は必要とされない。
RPSの利点を活用し、誤差弾力性を改善するために、HEVCにおけるピクチャのデコーディング及びDPB動作の順序はAVCに比べて変更されている。AVCのピクチャマーキング及びバッファ動作(DPBからのデコードされたピクチャの出力及び除去の両方)では概して、現在のピクチャがデコードされた後に適用される。HEVCでは、RPSは先ず現在のピクチャのスライスヘッダからデコードされ、次いで、現在のピクチャをデコードする前に、ピクチャマーキング及びバッファ動作が概して適用される。
最新のVVCのWDは、参照ピクチャリスト0及び参照ピクチャリスト1という2つの参照ピクチャリストに基づく参照ピクチャ管理のためのアプローチを含む。このアプローチでは、参照ピクチャリスト初期化プロセス及び参照ピクチャリスト変更プロセスを用いることなく、ピクチャのための参照ピクチャリストが直接構築される。さらに、参照ピクチャマーキングは、2つの参照ピクチャリストに直接基づく。
VVCにおける参照ピクチャ管理に関連する構文及びセマンティクスは以下の通りである。
シーケンスパラメータセットRBSPは以下の通りである。
ピクチャパラメータセットRBSPは以下の通りである。
一般的なスライスヘッダの構文は次のとおりである。
参照ピクチャリストの構文は以下の通りである。
シーケンスパラメータセットRBSPの意味は以下の通りである。
log2_max_pic_order_cnt_lsb_minus4は、ピクチャ順序カウントのためのデコーディング処理で用いられる変数MaxPicOrderCntLsbの値を次のように規定する。
MaxPicOrderCntLsb
= 2(log2_max_pic_order_cnt_lsb_minus4 + 4) (7-7)(7-7)
Log2_max_pic_order_cnt_lsb_minus4の値は0~12の範囲とする
。
sps_max_dec_pic_buffering_minus1 plus 1は、CVSのためのデコードされたピクチャバッファの最大必要サイズを、ピクチャ記憶バッファの単位で指定する。sps_max_dec_pic_buffering_minus1の値は0~MaxDpbSize
- 1の範囲とし、MaxDpbSizeが他で指定されている。
long_term_ref_pics_flag equal to 0は、CVSにおけるコード化されたピクチャのインター予測に長期参照ピクチャ(LTRP)が用いられないことを規定する。long_term_ref_pics_flag equal to 1は、CVSにおける1つ以上のコード化されたピクチャのインター予測にLTRPが用いられ得ることを規定する。
sps_idr_rpl_present_flag equal to 1は、参照ピクチャリスト構文要素がIDR画像のスライスヘッダに存在することを規定する。sps_idr_rpl_present_flag equal to 0はIDRピクチャのスライスヘッダに参照ピクチャリスト構文要素が存在しないことを規定する。
rpl1_same_as_rp10_flag equal to 1は、構文構造num_ref_pic_lists_in_sps[1]及びref_pic_list_struct(1, rplsidx)が存在しないことを規定し、次のように適用される。
- num_ref_pic_lists_in_sps[1]の値は、num_ref_pic_lists_in_sps[0]の値と等しいと推定される。
- ref_pic_list_struct(1,
rplsIdx)の各構文要素の値は、0からnum_ref_pic_lists_in_sps[0] - 1の範囲のrplsIdxのref_pic_list_struct(0, rplsIdx)における対応する構文要素の値と等しいと推定される。
num_ref_pic_lists_in_sps[i]は0、SPSに含まれる、listIdxがiに等しいref_pic_list_struct(listIdx, rplsIdx)構文構造体の数を規定する。num_ref_pic_lists_in_sps[i]の値は0~64の範囲とする。
注3-listIdxの各値(0又は1に等しい)について、デコーダは、num_ref_pic_lists_in_sps[i] + 1 ref_pic_list_struct(listIdx,
rplsIdx)構文構造体の総数に対してメモリを割り当てるべきである。何故なら、現在のピクチャのスライスヘッダに直接伝達される1つのref_pic_list_struct(listIdx, rplsIdx)構文構造体があり得るからである。
ピクチャパラメータセットRBSPの意味は以下の通りである。
num_ref_idx_default_active_minus1[i] plus 1は、iが0と等しい場合、num_ref_idx_active_override_flagが0に等しい、P又はBスライスのための変数NumRefIdxActive[0]の推定値を規定し、iが1と等しい場合、num_ref_idx_active_override_flagが0に等しい、Bスライスのための変数NumRefIdxActive[1]の推定値を規定する。num_ref_idx_default_active_minus1[i]の値は0~14の範囲とする。
rpl1_idx_present_flag equal
to 0は、ref_pic_list_sps_flag[1]及びref_pic_list_idx[1]がスライスヘッダにないことを規定する。rpl1_idx_present_flag equal
to 1は、ref_pic_list_sps_flag[1]及びref_pic_list_idx[1]がスライスヘッダに存在し得ることを規定する。
一般的なスライスヘッダの意味は以下の通りである。
slice_pic_order_cnt_lsbは現在のピクチャのためのピクチャオーダカウントモジュロMaxPicOrderCntLsbを規定する。slice_pic_order_cnt_lsb構文要素の長さは、log2_max_pic_order_cnt_lsb_minus4 + 4 ビットである。slice_pic_order_cnt_lsbの値は0~MaxPicOrderCntLsb - 1までの範囲とする。
ref_pic_list_sps_flag[i] equal to 1は、現在のスライスの参照ピクチャリストiが、アクティブSPSにおいてlistIdxがiに等しいref_pic_list_struct(listIdx,
rplsIdx)構文構造の1つに基づいて得られることを規定する。ref_pic_list_sps_flag[i]
equal to 0は、現在のスライスの参照ピクチャリストiが、現在のピクチャのスライスヘッダに直接含まれるlistIdxがiに等しいref_pic_list_struct(listIdx, rplsIdx)構文構造に基づいて得られることを規定する。num_ref_pic_lists_in_sps[i] が0と等しい場合、ref_pic_list_sps_flag[i]の値は0に等しいと推定されるrpl1_idx_present_flagが0と等しい場合、ref_pic_list_sps_flag[1]の値はref_pic_list_sps_flag[0]と等しいと推定される。
ref_pic_list_idx[i]は、現在のピクチャの参照ピクチャリストiを得るのに用いられる、listIdx がiと等しいref_pic_list_struct(listIdx,
rplsIdx) 構文構造のアクティブSPSに含まれる、listIdxがiと等しいref_pic_list_struct(listIdx, rplsIdx) 構文構造のリスト内へのインデックスを規定する。構文要素ref_pic_list_idx[i]は、Ceil(Log2(num_ref_pic_lists_in_sps[i]))ビットで表される。存在しない場合、ref_pic_list_idx[i]の値は0に等しいと推定される。ref_pic_list_idx[i]の値は、0~num_ref_pic_lists_in_sps[i] - 1 の範囲とする。ref_pic_list_sps_flag[i]が1と等しく、num_ref_pic_lists_in_sps[i]が1と等しい場合、ref_pic_list_idx[i]の値は0と推定される。ref_pic_list_sps_flag[i]が1と等しく、rpl1_idx_present_flagが0と等しい場合、ref_pic_list_idx[1]の値はref_pic_list_idx[0]と等しいと推定される。
変数RplsIdx[i]は次のように得られる。
RplsIdx[i]
= ref_pic_list_sps_flag[i] ?ref_pic_list_idx[i] : num_ref_pic_lists_in_sps[i] (7-40)
slice_poc_lsb_lt[i][j]は、i番目の参照ピクチャリストのj番目のLTRPエントリのピクチャオーダカウントモジュロMaxPicOrderCntLsbの値を規定する。slice_poc_lsb_lt[i][j]構文要素の長さは、log2_max_pic_order_cnt_lsb_minus4+4ビットである。
変数PocLsbLt[i][j]は次のように得られる。
PocLsbLt[i][j]
= ltrp_in_slice_header_flag[i][RplsIdx[i]] ? (7-41)
slice_poc_lsb_lt[i][j] : rpls_poc_lsb_lt[listIdx][RplsIdx[i]][j]
delta_poc_msb_present_flag[i][j] equal
to 1は、delta_poc_msb_cycle_lt[i][j]が存在することを規定する。delta_poc_msb_present_flag[i][j] equal to 0は、delta_poc_msb_cycle_lt[i][j]が存在しないことを規定する。
prevTid0Picは、TemporalIdが0と等しく、ランダムアクセススキップリーディング(RASL)又はランダムアクセスデコーダブルリーディング(RADL)ピクチャではないデコーディング順序における先のピクチャとする。setOfPrevPocValsは以下からなるセットとする。
- prevTid0PicのPicOrderCntVal、
- prevTid0PicのRefPicList[0]及びRefPicList[1]のエントリによって参照される各ピクチャのPicOrderCntVal、
- デコーディング順序においてprevTid0Picに後続し、デコーディング順序において現在のピクチャに先行する各ピクチャのPicOrderCntVal
値モジュロMaxPicOrderCntLsbがPocLsbLt[i][j]と等しい値がsetOfPrevPocValsに2つ以上ある場合、delta_poc_msb_present_flag[i][j]の値は1と等しいものとする。
delta_poc_msb_cycle_lt[i][j]は、変数FullPocLt[i][j]の値を次のように規定する。
if(j
= = 0)
deltaMsbCycle[i][j]
= delta_poc_msb_cycle_lt[i][j]
else (7-42)
deltaMsbCycle[i][j]
= delta_poc_msb_cycle_lt[i][j] + deltaMsbCycle[i][j-1]
FullPocLt[i][RplsIdx[i]][j]
= PicOrderCntVal - deltaMsbCycle[i][j] *
MaxPicOrderCntLsb - (PicOrderCntVal &
(MaxPicOrderCntLsb-1)) + PocLsbLt[i][j]
delta_poc_msb_cycle_lt[i][j]の値は、0~2(32 ‐log2_max_pic_order_cnt_lsb_minus4
- 4)の範囲とする。存在しない場合、delta_poc_msb_cycle_lt[i][j]の値は0と等しいと推定される。
num_ref_idx_active_override_flag equal
to 1は、P及びBスライスのために構文要素num_ref_idx_active_minus1[0が存在し、Bスライスのために構文要素num_ref_idx_active_minus1[1]が存在することを規定する。num_ref_idx_active_override_flag
equal to 0は構文要素num_ref_idx_active_minus1[0]及びnum_ref_idx_active_minus1[1]が存在しないことを規定する。存在しない場合、num_ref_idx_active_override_flagの値は1と等しいと推定される。
num_ref_idx_active_minus1[i]は、式7-43で規定する変数NumRefIdxActive[i]を得るために用いられる。num_ref_idx_active_minus1[i]の値は0~14の範囲とする。
iが0又は1と等しい場合について、現在のスライスがBスライスで、num_ref_idx_active_override_flagが1と等しく、num_ref_idx_active_minus1[i]が存在しない場合、num_ref_idx_active_minus1[i]は0と等しいと推定される。
現在のスライスがPスライスであり、num_ref_idx_active_override_flagが1と等しく、num_ref_idx_active_minus1[0]が存在しない場合、num_ref_idx_active_minus1[0]は0と等しいと推定される。
変数NumRefIdxActive[i]は以下のように得られる。
for
(i = 0; i < 2; i++) {
if(slice_type
= = B ||(slice_type = = P && i = = 0)) {
if(num_ref_idx_active_override_flag)
NumRefIdxActive[i] = num_ref_idx_active_minus1[i] + 1 (7-43)
else
{}
if(num_ref_entries[i][RplsIdx[i]] >=
num_ref_idx_default_active_minus1[i] + 1)
NumRefIdxActive[i] =
num_ref_idx_default_active_minus1[i]
+ 1
else
NumRefIdxActive[i] = num_ref_entries[i][RplsIdx[i]]
}
} else // slice_type = = I ||(slice_type = = P && i = = 1)
NumRefIdxActive[i] = 0
}
NumRefIdxActive[i]
- 1の値は、スライスをデコードするために用いられ得る参照ピクチャリストiのための最大参照インデックスを規定する。NumRefIdxActive[i]の値が0と等しい場合、参照ピクチャリストiのために参照インデックスがスライスをデコードするために用いられない。
現在のデコードされたピクチャは現在のスライスの唯一の参照ピクチャであることを規定する変数CurrPicIsOnlyRefは以下のように得られる。
CurrPicIsOnlyRef
= sps_cpr_enabled_flag && (slice_type = = P) && (7-44)
(num_ref_idx_active_minus1[0]
= = 0)
参照ピクチャリスト構造セマンティクスが提供される。
ref_pic_list_struct(listIdx,
rplsIdx)構文構造は、SPS又はスライスヘッダ内に存在し得る。構文構造がスライスヘッダに含まれるのか又は文構造に含まれるのかに応じて、以下が適用される。
- スライスヘッダに存在する場合、ref_pic_list_struct(listIdx, rplsIdx)構文構造は、現在のピクチャ(スライスを含むピクチャ)の参照ピクチャリストリストlistIdxを規定する。
- さもなければ(SPSに存在する場合)、ref_pic_list_struct(listIdx, rplsIdx)構文構造は参照ピクチャリストlistIdxの候補を規定し、この節の残りの部分で規定される意味における「現在のピクチャ」という用語は、1)SPSに含まれるref_pic_list_struct(listIdx, rplsIdx)構文構造のリスト内のインデックスと等しいref_pic_list_idx[listIdx]を含む1つ以上のスライスを有し、2)SPSをアクティブSPSとしてCVS内にある各ピクチャを意味する。
num_ref_entries [listIdx] [rplsIdx]は、ref_pic_list_struct(listIdx, rplsIdx)構文構造のエントリの数を規定する。num_ref_entries[listIdx][rplsidx]の値は0~sps_max_dec_pic_buffering_minus1+14の範囲とする。
ltrp_in_slice_header_flag [listIdx]
[rplsIdx] equal to 0は、ref_pic_list_struct(listIdx,
rplsIdx)構文構造のLTRPエントリのPOC LSBがref_pic_list_struct(listIdx,
rplsIdx)構文構造に存在することを規定する。ltrp_in_slice_header_flag
[listIdx] [rplsIdx] equal to 1は、ref_pic_list_struct(listIdx,
rplsIdx)構文構造のLTRPエントリのPOC LSBがref_pic_list_struct(listIdx,
rplsIdx)構文構造に存在しないことを規定する。
st_ref_pic_flag[listIdx] [rplsIdx] [i] equal
to 1 は、ref_pic_list_struct(listIdx, rplsIdx)構文構造のi番目のエントリが安全なリアルタイムトランスポートプロトコル(STRP)エントリであることを規定する。st_ref_pic_flag[listIdx] [rplsIdx] [i] equal to 0は、ref_pic_list_struct(listIdx, rplsIdx)構文構造のi番目のエントリがLTRPエントリであることを規定する。存在しない場合、st_ref_pic_flag[listIdx][rplsIdx][i]の値は1と等しいと推定される。
変数NumLtrpEntries[listIdx][rplsIdx]は以下のように得られる。
for(i
= 0, NumLtrpEntries[listIdx][rplsIdx] = 0; i < num_ref_entries[listIdx][rplsIdx]; i++)
if(!st_ref_pic_flag[listIdx][rplsIdx][i]) (7-86)
NumLtrpEntries[listIdx][rplsIdx]++
abs_delta_poc_st
[listIdx] [rplsIdx] [i] は、i番目のエントリがref_pic_list_struct(listIdx,
rplsIdx)構文構造の第1のSTRPエントリの場合に、現在のピクチャとi番目のエントリが参照するピクチャとのピクチャオーダカウント値間の絶対差を規定するか又はi番目のエントリがref_pic_list_struct(listIdx, rplsIdx)構文構造内のSTRPエントリであるが、第1のSTRPエントリではない場合に、ref_pic_list_struct(listIdx, rplsIdx)構文構造内のi番目のエントリによって及びそれに先行するSTRPエントリによって参照されるピクチャのピクチャオーダカウント値間の絶対差を規定する。
abs_delta_poc_st
[listIdx][rplsIdx][i]の値は、0~215-1の範囲であるものとする。
strp_entry_entry_sign_flag[listIdx][rplsIdx][i]
equal to 1は、構文構造ref_pic_list_struct(listIdx, rplsIdx)内のi番目のエントリの値が0以上であることを規定する。strp_entry_sign_flag[listIdx] [rplsIdx] equal to 0は、構文構造ref_pic_list_struct(listIdx, rplsIdx)内のi番目のエントリは0未満の値を有することを規定する。存在しない場合、strp_entry_sign_flag[i][j]の値は1と等しいと推定される。
リストDeltaPocSt[listIdx][rplsIdx]は、以下のように得られる。
for(i
= 0; i < num_ref_entries[listIdx][rplsIdx]; i++) {
if(st_ref_pic_flag[listIdx][rplsIdx][i]) { (7-87)
DeltaPocSt[listIdx][rplsIdx][i] =
(strp_entry_sign_flag[listIdx][rplsIdx][i])
?
abs_delta_poc_st[listIdx][rplsIdx][i] : 0 -
abs_delta_poc_st[listIdx][rplsIdx][i]
}
}
rpls_poc_lsb_lt [listIdx] [rplsIdx] [i] は、ref_pic_list_struct(listIdx, rplsIdx)構文構造のi番目のエントリによって参照されるピクチャのピクチャオーダカウントモジュロMaxPicOrderCntLsbの値を規定する。rpls_poc_lsb_lt
[listIdx][rplsIdx][i]構文要素の長さは、log2_max_pic_order_cnt_lsb_minus4+4ビットである。
既存の解決策の問題を説明する。
参照ピクチャリストが許可された参照ピクチャのみを含むことを確実にするために、ビットストリーム適合制約を規定する必要がある。HEVCでは、参照ピクチャセット(RPS)内に存在し得る参照ピクチャの種類について、以下の制約が規定された。
-現在のピクチャがCRAピクチャの場合、出力順序又はデコーディング順序において、デコーディング順序において先行する任意のIRAP画像(もし存在する場合)に先行するピクチャがRPSに含まれないものとする。
-現在のピクチャがトレーリングピクチャの場合、8.3.3節で規定されるように、利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成されたピクチャがRefPicSetStCurrBefore、RefPicSetStCurrAfter又はRefPicSetLtCurr内に存在しないものとする。
-現在のピクチャがトレーリングピクチャの場合、出力順序又はデコーディング順序において関連するIRAPピクチャに先行するピクチャがRPS内に存在しないものとする。
-現在のピクチャがRADLピクチャの場合、RefPicSetStCurrBefore、RefPicSetStCurrAfter又はRefPicSetLtCurrに以下のいずれかのピクチャが含まれないものとする。
-RASL画像
-8.3.3節に規定される利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成されたピクチャ
-デコーディング順序において関連するIRAPピクチャに先行するピクチャ
参照ピクチャリスト(RPL)アプローチの場合、以下の問題が特定される。
1.一般に、参照ピクチャリスト内に存在し得る参照ピクチャの種類に関するビットストリーム適合制約は規定されていない。
2.インターレースコーディングが用いられる場合、IRAPピクチャの2つのフィールドの両方がIRAPピクチャとしてマークされないことがあり、代わり、第1のフィールドのみがIRAPピクチャとしてマークされ、他方のフィールドはトレーリングピクチャとしてマークされる。したがって、これは「現在のピクチャがトレーリングピクチャの場合、出力順序又はデコーディング順序において関連するIRAPピクチャに先行するピクチャがRPS内に存在しないものとする」という上記の同様の制約はこの状況では機能しないことを意味する。制約を変更する必要がある。
本明細書で開示する技術は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。そのため、ビデオコーディングにおけるコーダ/デコーダ(別称「コーデック」)は、現在のコーデックに比べて改善される。実際問題として、改善されたビデオコーディングプロセスは、ビデオが送信、受信及び/又は閲覧される際にユーザにより良好なユーザ体験を提供する。
図5は、デコーディング順序508及び提示順序510(別名、出力順序)におけるリーディングピクチャ504及びトレーリングピクチャ506に対する内部ランダムアクセスポイント(IRAP)ピクチャ502の関係を示すコード化されたビデオシーケンス500である。一実施形態では、IRAPピクチャ502は、クリーンランダムアクセス(CRA)ピクチャ又はランダムアクセスデコーダブル(RADL)ピクチャを有する瞬時デコーダリフレッシュ(IDR)ピクチャと呼ばれる。HEVCでは、IDRピクチャ、CRAピクチャ及びブロークンリンクアクセス(BLA)ピクチャの全てがIRAPピクチャ502とみなされる。VVCについては、2018年10月の第12回JVET会合の間に、IDR画像及びCRA画像の両方をIRAP画像とすることが合意された。一実施形態では、ブロークンリンクアクセス(BLA)及び漸進的デコーダリフレッシュ(GDR)ピクチャもIRAP画像とみなされ得る。コード化されたビデオシーケンスのデコーディングプロセスは常にIRAPピクチャから始まる。
CRAピクチャは、各ビデオコーディングレイヤ(VCL)ネットワーク抽象レイヤ(NAL)ユニットのnal_unit_typeがCRA_NUTと等しいIRAPピクチャである。CRAピクチャは、そのデコーディングプロセスにおけるインター予測のために自身以外のピクチャを参照せず、デコーディング順序におけるビットストリームの第1のピクチャであり得るか又はビットストリームの後半に現れ得る。CRAピクチャは関連するRADL又はランダムアクセススキップリーディング(RASL)ピクチャを有し得る。CRAピクチャのNoOutputBeforeRecoveryFlagが1と等しい場合、関連するRASLピクチャはデコーダによって出力されない。何故なら、それらはビットストリームに存在しないピクチャへの参照を含み得るため、デコードできない可能性があるからである。
図5に示すように、リーディングピクチャ504(例えば、ピクチャ2及び3)は、デコーディング順序508においてIRAPピクチャ502に後続するが、提示順序510においてIRAPピクチャ502に先行する。トレーリングピクチャ506は、デコーディング順序508及び提示順序510の両方において、IRAPピクチャ502に後続する。2つのリーディングピクチャ504及び1つのトレーリングピクチャ506を図5に示しているが、当業者であれば、実際の用途において、より多くの又はより少ない数のリーディングピクチャ504及び/又はトレーリングピクチャ506がデコーディング順序508及び提示順序510に存在し得ることを理解するであろう。
図5のリーディングピクチャ504は、ランダムアクセススキップリーディング及びRADLの2種類に分割されている。IRAPピクチャ502(例えば、ピクチャ1)からデコーディングが開始する場合、RADLピクチャ(例えば、ピクチャ3)を適切にデコードできるが、RASLピクチャ(例えば、ピクチャ2)を適切にデコードすることができない。そのため、RASLピクチャは破棄される。RADLピクチャとRASLピクチャとの区別に照らして、IRAPピクチャ502に関連するリーディングピクチャ504の種類は、効率的且つ適切なコーディングのためにRADL又はRASLのいずれかとして特定されるべきである。HEVCでは、RASL及びRADLピクチャが存在する場合、同じIRAPピクチャ502に関連するRASL及びRADLピクチャについて、提示順序510においてRASLピクチャがRADLピクチャに先行するものと制約される。
IRAP画像502は以下の2つの重要な機能/利点を提供する。第1に、IRAPピクチャ502の存在は、デコーディングプロセスがそのピクチャから開始可能であることを示す。この機能は、IRAPピクチャ502がその位置に存在する限り、デコーディングプロセスが必ずしもビットストリームの最初ではなく、ビットストリームのその位置から開始される、ランダムアクセス機能を可能にする。第2に、IRAPピクチャ502の存在は、RASLピクチャを除くIRAPピクチャ502で始まるコード化されたピクチャが、先行するピクチャを参照することなくコード化されるように、デコーディングプロセスを更新する。その結果、ビットストリーム内に存在するIRAPピクチャ502を有することで、IRAPピクチャ502に先行するコード化されたピクチャのデコーディングの間に発生し得るエラーが、IRAPピクチャ502及びデコーディング順序508においてIRAPピクチャ502に後続するそれらのピクチャに伝搬するのを止め得る。
IRAPピクチャ502は重要な機能を提供するが、圧縮効率に不利益をもたらす。IRAP画像502の存在はビットレートの上昇をもたらす。圧縮効率に対するこの不利益は2つの理由による。第1に、IRAPピクチャ502はイントラ予測ピクチャであるため、インター予測ピクチャである他のピクチャ(例えば、リーディングピクチャ504、トレーリングピクチャ506)に比べて、ピクチャを表すのに比較的多くのビットを必要とし得る。第2に、IRAPピクチャ502の存在は時間的予測を中断するため(これは、デコーダがデコーディングプロセスをリフレッシュするからであり、これのためのデコーディングプロセスの動作の1つは、デコーディングピクチャバッファ(DPB)内の先の参照ピクチャを除去するためのものである)、IRAPピクチャ502は、デコーディング順序508においてIRAPピクチャ502に後続するピクチャのコーディングの効率を低下させる(すなわち、表わすためにより多くのビットを必要とする)。何故なら、それらは、それらのインター予測コーディングのための参照ピクチャが少ないからである。
IRAPピクチャ502と見なされるピクチャの種類のうち、HEVCにおけるIDRピクチャは、他のピクチャの種類と比べた場合に、異なる伝達及び導出を有する。相違点のうちのいくつかは以下の通りである。
IDRピクチャのピクチャオーダカウント(POC)値の伝達及び導出の場合、POCの最上位ビット(MSB)部分は、先のキーピクチャから導出されず、単に0に等しいものとして設定される。
参照ピクチャ管理に必要な伝達情報に関して、IDRピクチャのスライスヘッダは、参照ピクチャ管理を補助するために伝達する必要がある情報を含まない。他のピクチャの種類(すなわち、CRA、トレーリング、時間的サブレイヤアクセス(TSS)等)については、参照ピクチャマーキングプロセス(すなわち、参照のために用いられるか又は参照のために用いられないという、デコードピクチャバッファ(DPB)内の参照ピクチャの状態を特定するプロセス)のために、以下で説明する参照ピクチャセット(RPS)又は他の形態の同様の情報(例えば、参照ピクチャリスト)等の情報を必要とする。しかしながら、IDRピクチャの場合、IDRの存在は、DPB内の全ての参照ピクチャを参照のために用いられないとデコーディングプロセスがマークすべきであることを示すため、そのような情報を伝達する必要がない。
HEVC及びVVCでは、IRAPピクチャ502及びリーディングピクチャ504のスライスのそれぞれは、単一のネットワーク抽象化層(NAL)ユニット内に含まれ得る。NALユニットのセットはアクセスユニットと呼ばれ得る。IRAPピクチャ502及びリーディングピクチャ504は、それらがシステムレベルのアプリケーションによって容易に識別できるように、異なるNALユニットタイプが与えられる。例えば、ビデオスプライサは、コード化されたビットストリーム内の構文要素の詳細を理解しすぎることなしに、コード化されたピクチャの種類を理解する必要があり、とりわけ、非IRAP画像からIRAP画像502を識別し、トレーリングピクチャ506から、RASL及びRADLピクチャの特定を含むリーディングピクチャ504を識別する必要がある。トレーリングピクチャ506は、IRAPピクチャ502に関連し、提示順序510においてIRAPピクチャ502に後続するピクチャである。ピクチャは、デコーディング順序508において特定のIRAPピクチャ502に後続し、デコーディング順序508において他のIRAPピクチャ502に先行し得る。このために、IRAPピクチャ502及びリーディングピクチャ504にそれら自身のNALユニットタイプを与えることが、このようなアプリケーションを助ける。
HEVCの場合、IRAPピクチャのためのNALユニットの種類は以下のものを含む。
リーディングピクチャを有するBLA(BLA_W_LP):デコーディング順序において1つ以上のリーディングピクチャによって後続され得るブロークンリンクアクセス(BLA)ピクチャのNALユニット
RADLを有するBLA(BLA_W_RADL):デコーディング順序においてRASLピクチャがなく、1つ以上のRADLピクチャによって後続され得るBLAピクチャのNALユニット
リーディングピクチャなしのBLA(BLA_N_LP):デコーディング順序においてリーディングピクチャによって後続されないBLAピクチャのNALユニット
RADLを有するIDR(IDR_W_RADL):デコーディング順序においてRASLピクチャがなく、1つ以上のRADLピクチャによって後続され得るIDRピクチャのNALユニット
リーディングピクチャなしのIDR(IDR_N_LP):デコーディング順序においてリーディングピクチャによって後続されないIDRピクチャのNALユニット
CRA:リーディングピクチャ(すなわち、RASLピクチャ又はRADLピクチャのいずれか又はその両方)によって後続され得るクリーンランダムアクセス(CRA)ピクチャのNALユニット
RADL:RADLピクチャのNALユニット
RASL:RASL画像のNALユニット
VVCの場合、IRAPピクチャ502及びリーディングピクチャ504のNALユニットの種類は以下のとおりである。
RADLを有するIDR(IDR_W_RADL):デコーディング順序においてRASLピクチャがなく、1つ以上のRADLピクチャによって後続され得るIDRピクチャのNALユニット
リーディングピクチャなしのIDR(IDR_N_LP):デコーディング順序においてリーディングピクチャによって後続されないIDRピクチャのNALユニット
CRA:リーディングピクチャ(すなわち、RASLピクチャ又はRADLピクチャのいずれか又はその両方)によって後続され得るクリーンランダムアクセス(CRA)ピクチャのNALユニット
RADL:RADLピクチャのNALユニット
RASL:RASL画像のNALユニット
図6は、漸進的デコーディングリフレッシュ(GDR)技術600を実施するように構成されたビデオビットストリーム650を示す。本明細書で用いるように、ビデオビットストリーム650は、コード化されたビデオビットストリーム、ビットストリーム又はそれらのバリュエーションとも呼ばれ得る。図6に示すように、ビットストリーム650は、シーケンスパラメータセット(SPS)652、ピクチャパラメータセット(PPS)654、スライスヘッダ656及び画像データ658を含む。
SPS652は、ピクチャシーケンス(SOP)内の全てのピクチャに共通のデータを含む。これとは対照的に、PPS654はピクチャ全体に共通するデータを含む。スライスヘッダ656は、例えば、スライスの種類、どの参照ピクチャを用いるか等の現在のスライスに関する情報を含む。SPS652及びPPS654は総称的にパラメータセットと呼ばれ得る。SPS652、PPS654及びスライスヘッダ656はネットワーク抽象化層(NAL)ユニットの種類である。NALユニットは、データの種類が後続するための表示(例えば、コード化されたビデオデータ)を含む構文構造です。NALユニットは、ビデオコーディング層(VCL)及び非VCL NALユニットに分類される。VCL NALユニットは、ビデオピクチャ内のサンプルの値を表すデータを含み、非VCL NALユニットは、パラメータセット(多数のVCL NALユニットに適用可能な重要なヘッダデータ)及び補足的な強化情報(デコードされたビデオ信号の有用性を高め得るが、ビデオピクチャ内のサンプルの値をデコードするために必要ではないタイミング情報及び他の補足データ)を含む。当業者であれば、ビットストリーム650は、実際の用途における他のパラメータ及び情報を含み得ることを理解するであろう。
図6の画像データ658は、エンコード又はデコードされた画像又はビデオに関連するデータを含む。画像データ658は、単に、ビットストリーム650内で運ばれるペイロード又はデータと呼ばれ得る。一実施形態では、画像データ658は、GDRピクチャ602、1つ以上のトレーリングピクチャ604及びリカバリポイントピクチャ606を含むCVS608(又はCLVS)を含む。一実施形態では、GDRピクチャ602はCVSスタート(CVSS)ピクチャと呼ばれる。CVS608は、ビデオビットストリーム650内の各コード化されたレイヤービデオシーケンス(CLVS)のためのコード化されたビデオシーケンスである。注目すべきことに、ビデオビットストリーム650が単一層を含む場合、CVS及びCLVSは同じである。CVS及びCLVSは、ビデオビットストリーム650が複数の層を含む場合にのみ異なる。一実施形態では、トレーリングピクチャ604は、それらがGDR期間においてリカバリポイントピクチャ606に先行するため、GDRピクチャの一形態であると考えられ得る。
一実施形態では、GDRピクチャ602、トレーリングピクチャ604及びリカバリポイントピクチャ606は、CVS608内でGDR期間を定義し得る。一実施形態では、デコーディング順序はGDRピクチャ602で始まり、トレーリングピクチャ604に続き、次いでリカバリーピクチャ606に進む。
CVS608は、GDRピクチャ602から始まる一連のピクチャ(又はその一部)であり、次のGDRピクチャまで(但し、これを含まない)又はビットストリームの最後までの全てのピクチャ(又はその一部)を含む。GDR期間はGDRピクチャ602から始まる一連のピクチャであり、リカバリポイントピクチャ606までの及びリカバリポイントピクチャ606を含む全てのピクチャを含む。CVS608のためのデコーディングプロセスは常にGDRピクチャ602で始まる。
図6に示すように、GDR技術600又は原理は、GDRピクチャ602から始まり、リカバリポイントピクチャ606で終わる一連のピクチャに対して機能する。GDRピクチャ602は、イントラ予測を用いて全てがコード化されたブロック(すなわち、イントラ予測ブロック)を含むリフレッシュ/クリーン領域610と、インター予測を用いて全てがコード化されたブロック(すなわち、インター予測ブロック)を含む未リフレッシュ/不潔領域612とを含む。
GDRピクチャ602にすぐ隣接するトレーリングピクチャ604は、イントラ予測を用いてコード化された第1の部分610Aと、インター予測を用いてコード化された第2の部分610Bとを有するリフレッシュ/クリーン領域610を含む。第2の部分610Bは、例えば、CVS608のGDR期間内の先行ピクチャのリフレッシュ/クリーン領域610を参照することによってコード化される。図示のように、トレーリングピクチャ604のリフレッシュ/クリーン領域610は、コーディングプロセスが一貫した方向(例えば、左から右へ)に移動又は進むにつれて拡張し、それに対応して未リフレッシュ/不潔領域612を収縮させる。最終的に、リフレッシュ/クリーン領域610のみを含むリカバリポイントピクチャ606がコーディングプロセスから得られる。注目すべきことに且つ以下でさらに説明するように、インター予測ブロックとしてコード化されたリフレッシュ/クリーン領域610の第2の部分610Bは、参照ピクチャ内のリフレッシュ/クリーン領域610のみを参照し得る。
図6に示すように、CVS608内のGDRピクチャ602、トレーリングピクチャ604及びリカバリポイントピクチャ606のそれぞれは、それら自身のVCL NALユニット630内に含まれる。CVS608内のVCL NALユニット630のセットは、アクセスユニットと呼ばれ得る。
一実施形態では、CVS608内のGDRピクチャ602を含むVCL NALユニット630はGDR NALユニットタイプ(GDR_NUT)を有する。すなわち、一実施形態では、CVS608内のGDRピクチャ602を含むVCL NALユニット630は、トレーリングピクチャ604及びリカバリポイントピクチャ606に対して独自のNALユニットタイプを有する。一実施形態では、GDR_NUTは、ビットストリーム650がIRAPピクチャで開始するのに代えて、ビットストリーム650がGDRピクチャ602で開始することを可能にする。GDRピクチャ602のVCL NALユニット630をGDR_NUTとして指定することは、例えば、CVS608内の初期VCL NALユニット630がGDRピクチャ602を含むことをデコーダに示し得る。一実施形態では、GDRピクチャ602はCVS608内の初期ピクチャである。一実施形態では、GDRピクチャ602はGDR期間の初期ピクチャである。
図7は、GDRをサポートするためにエンコーダ制限を用いた場合の望ましくないモーションサーチ700を示す概略図である。図示のように、モーションサーチ700は現在のピクチャ702及び参照ピクチャ704を示す。現在のピクチャ702及び参照ピクチャ704のそれぞれはイントラ予測でコード化されたリフレッシュ領域706、インター予測でコード化されたリフレッシュ領域708及び未リフレッシュ領域710を含む。リフレッシュ領域706、リフレッシュ領域708及び未リフレッシュ領域710は、図6のリフレッシュ/クリーン領域610の第1の部分610A、リフレッシュ/クリーン領域610の第2の部分610B及び未リフレッシュ/不潔領域612と同様である。
モーションサーチプロセスの間、エンコーダは、リフレッシュ領域706の外に位置する参照ブロック714のサンプルの一部をもたらす動きベクトル712の選択することが制約されるか又は防止される。これは、参照ブロック714が、現在のピクチャ702内の現在のブロック716を予測する際に、最良のレート歪みコスト基準を提供する場合であっても起こる。そのため、図7は、GDRをサポートするためにエンコーダ制限を用いる場合に、モーションサーチ700において最適でない理由を示す。
図8は、クリーンランダムアクセス(CRA)技術800を実施するように構成されたビデオビットストリーム850を示す。本明細書で用いるように、ビデオビットストリーム850は、コード化されたビデオビットストリーム、ビットストリーム又はそのバリエーションとも呼ばれ得る。図8に示すように、ビットストリーム850は、シーケンスパラメータセット(SPS)852、ピクチャパラメータセット(PPS)854、スライスヘッダ856及び画像データ858を含む。図8のビットストリーム850、SPS852、PPS854及びスライスヘッダ856は、図6のビットストリーム650、SPS652、PPS654及びスライスヘッダ656と同様である。したがって、簡潔性のために、これらの要素の説明は繰り返さない。
図8の画像データ858は、エンコード又はデコードされている画像又はビデオに関連するデータを含む。画像データ858は、単に、ビットストリーム850内で運ばれるペイロード又はデータと呼ばれ得る。一実施形態では、画像データ858は、CRAピクチャ802、1つ以上のトレーリングピクチャ804及びシーケンスピクチャピクチャ806の終端を含むCVS808(又はCLVS)を含む。一実施形態では、CRAピクチャ802はCVSSピクチャと呼ばれる。CVS808のためのデコーディングプロセスは常にCRAピクチャ802から始まる。
図8に示すように、CVS808内のCRAピクチャ802、トレーリングピクチャ804及びシーケンスピクチャ806の終端のそれぞれは、それら自身のVCL NALユニット830内に含まれる。CVS808内のVCL NALユニット830のセットはアクセスユニットと呼ばれ得る。
図9は、一方向インター予測900の一例を示す概略図である。一方向インター予測900は、ピクチャを分割する際に生成されるエンコード及び/又はデコードされたブロックの動きベクトルを決定するために用いることができる。
一方向インター予測900は、現在のフレーム910内の現在のブロック911を予測するために参照ブロック931を有する参照フレーム930を用いる。参照フレーム930は、図示のように、現在のフレーム910の後に(例えば、後続の参照フレームとして)時間的に位置し得るが、一部の例では、現在のフレーム910の前に(例えば、先行する参照フレームとして)時間的に位置していてもよい。現在のフレーム910は特定の時間にエンコード/デコードされる例示のフレーム/ピクチャである。現在のフレーム910は、参照フレーム930の参照ブロック931内のオブジェクトと一致する、現在のブロック911内のオブジェクトを含む。参照フレーム930は、現在のフレーム910をエンコードするための参照として用いられるフレームであり、参照ブロック931は、現在のフレーム910の現在のブロック911にも含まれるオブジェクトを含む、参照フレーム930内のブロックである。
現在のブロック911は、コーディングプロセスにおける特定の時点でエンコード/デコードされる任意のコーディングユニットである。現在のブロック911は、分割されたブロックの全体であり得るか又はアフィン相互予測モードを用いた場合のサブブロックであり得る。現在のフレーム910は、ある時間的距離(TD)933によって基準フレーム930から分離されている。TD933は、ビデオシーケンスにおける現在のフレーム910と参照フレーム930との間の時間を示し、フレーム単位で測定され得る。現在のブロック911のための予測情報は、方向及びフレーム間の時間的距離を示す参照インデックスにより参照フレーム930及び/又は参照ブロック931を参照し得る。TD933によって表される期間にわたって、現在のブロック911内のオブジェクトは現在のフレーム910内の位置から参照フレーム930内の別の位置(例えば、参照ブロック931の位置)に移動する。例えば、オブジェクトは、オブジェクトの経時的な移動の方向である動き軌道913に沿って移動し得る。動きベクトル935は、TD933に亘る動き起動913に沿ったオブジェクトの動きの方向及び大きさを記述する。したがって、エンコードされた動きベクトル935、参照ブロック931及び現在のブロック911と参照ブロック931と差を含む残差は、現在のブロック911を再構成し、現在のフレーム910内に現在のブロック911を位置決めするのに十分な情報を提供する。
図10は、双方向インター予測1000の一例を示す概略図である。双方向インター予測1000は、ピクチャを分割する際に生成されるエンコード及び/又はデコードされたブロックのための動きベクトルを決定するために用いることができる。
双方向インター予測1000は一方向インター予測900と同様であるが、現在のフレーム1010内の現在のブロック1011を予測するために一対の参照フレームを用いる。そのため、現在のフレーム1010及び現在のブロック1011は、それぞれ現在のフレーム710及び現在のブロック711と実質的に同様である。現在のフレーム1010は、ビデオシーケンスの現在のフレーム1010の前に現れる先行参照フレーム1020と、ビデオシーケンスの現在のフレーム1010の後に現れる後続参照フレーム1030との間に時間的に位置し得る。先行参照フレーム1020及び後続参照フレーム1030は、他の点では参照フレーム930と実質的に同様である。
現在のブロック1011は、先行参照フレーム1020内の先行参照ブロック1021と及び後続参照フレーム1030内の後続参照ブロック1031とマッチングされる。このような一致は、ビデオシーケンスにわたって、オブジェクトが先行参照ブロック1021における位置から後続参照ブロック1031における位置に、動き軌道1013に沿って且つ現在のブロック1011を介して移動することを示す。現在のフレーム1010は、ある先行する時間的距離(TD0)1023先行参照フレーム1020から分離され、ある後続時間的距離(TD1)1033後続参照フレーム1030から分離されている。TD0 1023は、ビデオシーケンスにおける先行参照フレーム1020と現在のフレーム1010との間の時間をフレーム単位で示す。TD1 1033は、ビデオシーケンスにおける現在のフレーム1010と後続参照フレーム1030との間の時間をフレーム単位で示す。そのため、オブジェクトは、TD0 1023によって示される期間にわたって、動き軌道1013に沿って、先行参照ブロック1021から現在のブロック1011に移動する。また、オブジェクトは、TD1 1033によって示される期間にわたって、動き軌道1013に沿って現在のブロック1011から後続参照ブロック1031に移動する。現在のブロック1011のための予測情報は、方向及びフレーム間の時間的距離を示す一対の参照インデックスにより、先行参照フレーム1020及び/又は先行参照ブロック1021と、後続参照フレーム1030及び/又は後続参照ブロック1031を参照し得る。
先行動きベクトル(MV0)1025は、TD0 1023にわたる(例えば、先行参照フレーム1020と現在のフレーム1010との間)、動き軌道1013に沿ったオブジェクトの移動の方向及び大きさを記述する。後続動きベクトル1035は、TD1 1033にわたる(例えば、現在のフレーム1010と後続参照フレーム1030との間)、動き軌道1013に沿ったオブジェクトの移動の方向及び大きさを記述する。そのため、双方向インター予測1000では、現在のブロック1011は、先行参照ブロック1021及び/又は後続参照ブロック1031、MV0 1025及びMV1 1035を用いることによりコード化及び再構成することができる。
一実施形態では、ブロック毎ではなく、サンプル毎(例えば、ピクセル毎)にインター予測及び/又は双方向インター予測が行われ得る。すなわち、先行参照ブロック1021及び/又は後続参照ブロック1031内の各サンプルを指す動きベクトルは、現在のブロック1011内の各サンプルに対して決定され得る。そのような実施形態では、図10に示す動きベクトル1025及び動きベクトル1035は、現在のブロック1011、先行参照ブロック1021及び後続参照ブロック1031内の複数のサンプルに対応する複数の動きベクトルを表す。
マージモード及びアドバンスト動きベクトル予測(AMVP)モードの両方において、候補リスト決定パターンによって定義された順序で候補動きベクトルを候補リストに追加することによって候補リストが生成される。そのような候補動作ベクトルは、一方向インター予測900、双方向インター予測1000又はそれらの組み合わせに従った動きベクトルを含み得る。具体的には、動きベクトルは、そのようなブロックがエンコードされた場合に、隣接するブロックのために生成される。そのような動きベクトルは、現在のブロックのための候補リストに追加され、現在のブロックのための動きベクトルが候補リストから選択される。次いで、動きベクトルは、候補リスト内の選択された動きベクトルのインデックスとして伝達され得る。デコーダは、エンコーダと同じプロセスを用いて候補リストを構築でき、伝達されたインデックスに基づいて、候補リストから選択された動きベクトルを決定することができる。そのため、候補動きベクトルは、そのような隣接ブロックがエンコードされる場合にどのアプローチが用いられるかに応じて、一方向インター予測900及び/又は双方向インター予測1000に従って生成される動きベクトルを含む。
図11は、例示の参照ピクチャリスト構造1100を示す概略図である。参照ピクチャリスト構造1100は、一方向インター予測900及び/又は双方向インター予測1000で用いられる参照ピクチャ及び/又はインターレイヤー参照ピクチャの表示を記憶するために用いることができる。そのため、参照ピクチャリスト構造1100は、方法100を行う際に、コーデックシステム200、エンコーダ300及び/又はデコーダ400によって用いることができる。
RPL構造としても知られる参照ピクチャリスト構造1100は、RPL 0 1111及びRPL 1 112等の複数の参照ピクチャリストを含むアドレス可能な構文構造である。参照ピクチャリスト構造1100は、例に応じて、SPS、ピクチャヘッダ及び/又はビットストリームのスライスヘッダに記憶され得る。RPL 0 1111及びRPL 1 111等の参照ピクチャリストは、インター予測及び/又はインターレイヤー予測のために用いられる参照ピクチャのリストである。具体的には、一方向インター予測900によって用いられる参照ピクチャはRPL 0 1111に記憶され、双方向インター予測1000によって用いられる参照ピクチャは、RPL 0 1111及びRPL 1 1112の両方に記憶される。例えば、双方向インター予測1000は、RPL 0 1111からの1つの参照ピクチャ及びRPL 1 1112からの1つの参照ピクチャを用いり得る。RPL 0 1111およびRPL 1 1112のそれぞれは複数のエントリ1115を含み得る。参照ピクチャリスト構造エントリ1115は、RPL 0 1111及び/又はRPL 1 1112等の参照ピクチャリストに関連する参照ピクチャを示す、参照ピクチャリスト構造1100内のアドレス指定可能な位置である。
特定の例では、参照ピクチャリスト構造1100はref_pic_list_struct(listIdx、rplsIdx)と表記することができ、listIdx1121は参照ピクチャリストRPL 0 1111及び/又はRPL 1 1112を特定し、rplsIdx1125は参照ピクチャリスト内のエントリ1115を特定する。したがって、ref_pic_list_structは、listIdx1121及びrplsIdx1125に基づいてエントリ1115を返す構文構造である。エンコーダは、ビデオシーケンス内の各非イントラコード化スライスのために参照ピクチャリスト構造1100の一部をエンコードできる。次いで、デコーダは、コード化されたビデオシーケンス内の各非コード化スライスをデコードする前に、参照ピクチャリスト構造1100の対応する部分を解決することができる。一実施形態では、本明細書で説明する参照ピクチャリストは、エンコーダ又はデコーダに記憶される情報を用いて、エンコーダ又はデコーダによってコード化、構築、導出又はさもなければ取得され、ビットストリームから少なくとも部分的に得られる。
図12A~図12Cは、インターレースビデオコーディングの一例を集合的に示す概略図である。インターレースビデオコーディングは、図12A及び図12Bに示す第1のピクチャ1201及び第2のピクチャ1202から、図12Cに示すようにインターレースビデオフレーム1200を生成する。例えば、インターレースビデオコーディングは、インターレースビデオフレーム1200を含むビデオをエンコードする場合に、方法100の一部としてコーデックシステム200及び/又はエンコーダ300等のエンコーダによって用いられ得る。また、コーデックシステム200及び/又はデコーダ400等のデコーダは、インターレースビデオフレーム1200を含むビデオをデコードし得る。加えて、インターレースビデオフレーム1200は、図13に関して以下でより詳細に説明するように、図5のCVS500等のCVSにコーディングされ得る。
インターレースビデオコーディングを行う場合、第1のフィールド1210は、図12Aに示すように第1の時間に取り込まれ、第1のピクチャ1201にエンコードされる。第1のフィールド1210はビデオデータの水平線を含む。具体的には、第1のフィールド1210内のビデオデータの水平線は、第1のピクチャ1201の左側境界から第1のピクチャ1201の右側境界に延びる。しかしながら、第1のフィールド1210はビデオデータの交互の行を省略する。例示の実施では、第1のフィールド1210は、第1の時間にビデオキャプチャ装置によって取り込まれたビデオデータの半分を含む。
図12Bに示すように、第2のフィールド1212は、第2の時間に取り込まれ、第2のピクチャ1202にエンコードされる。例えば、第2の時間は、ビデオのために設定されたフレームレートに基づいて設定された値だけ第1の時間の直後にあり得る。例えば、毎秒15フレーム(FPS)のフレームレートで表示されるよう設定されたビデオでは、第2の時間は、第1の時間の15分の1秒後に起こり得る。図示のように、第2のフィールド1212は、第1のピクチャ1201の第1のフィールド1210の水平線に相補的なビデオデータの水平線を含む。具体的には、第2のフィールド1212内のビデオデータの水平線は、第2のピクチャ1202の左側境界から第2のピクチャ1202の右側境界に延びる。第2のフィールド1212は、第1のフィールド1210によって省略される水平線を含む。加えて、第2のフィールド1212は、第1のフィールド1210に含まれる水平線を省略する。
第1のピクチャ1201の第1のフィールド1210及び第2のピクチャ1202の第2のフィールド1212は、図12Cに示すように、インターレースビデオフレーム1200としてデコーダで表示するために組み合わせることができる。具体的には、インターレースビデオフレーム1200は、第1の時間に取り込まれた第1のピクチャ1201の第1のフィールド1210と、第2の時間に取り込まれた第2のピクチャ1202の第2のフィールド1212とを含む。そのような組み合わせは、強調及び/又は誇張された動きの視覚的効果を有する。ビデオの一部として表示された場合、一連のインターレースビデオフレーム1200は、追加フレームを実際にエンコードする必要なしに、高められたフレームレートでビデオがエンコードされた印象を作り出す。このように、インターレースビデオフレーム1200を用いるインターレースビデオコーディングは、ビデオデータサイズを付随的に増加することなしに、ビデオの有効フレームレートを高めることができる。そのため、インターレースビデオコーディングは、エンコードされたビデオシーケンスのコーディング効率を高め得る。
図13は、例えば、インターレースビデオフレーム1200を生成するために、インターレースビデオコーディングと、リーディングピクチャと両方を用いる例示のCVS1300を示す概略図である。CVS1300はCVS500に実質的に同様であるが、第1のピクチャ1201及び第2のピクチャ1202等のフィールドを有するピクチャをエンコードするように変更されている一方で、リーディングピクチャを保持する。例えば、CVS1300は、方法100に従ってコーデックシステム200及び/又はエンコーダ300等のエンコーダによりエンコードされ得る。また、CVS1300は、コーデックシステム200及び/又はデコーダ400等のデコーダによりデコードされ得る。
CVS1300は、それぞれデコーディング順序508及び提示順序510と実質的に同様の方法で動作する、デコーディング順序1308及び提示順序1310(別名、出力順序)を有する。CVS1300は、IRAPピクチャ1302、リーディングピクチャ1304及びトレーリングピクチャ1306を含み、これらは、IRAPピクチャ502、リーディングピクチャ504及びトレーリングピクチャ506と同様である。相違点は、IRAPピクチャ1302、リーディングピクチャ1304及びトレーリングピクチャ1306の全ては、図12A~図12Cに関して説明した第1のフィールド1210及び第2のフィールド1212と実質的に同様の方法でフィールドを用いることによりコード化されることである。そのため、各フレームは2つのピクチャを含む。したがって、CVS1300はCVS500の2倍のピクチャを含む。しかしながら、CVS1300は、CVS1300のピクチャのそれぞれがフレームの半分を省略しているため、CVS500とほぼ同じ量のデータを含む。
CVS1300の問題は、イントラ予測コード化データの第1のフィールドを含むことによってIRAPピクチャ1302がエンコードされていることである。そして、イントラ予測コード化データの第2のフィールドは非リーディングピクチャ1303に含まれる。デコーダがCVS1300のデコーディングを非リーディングピクチャ1303で開始できないため、非リーディングピクチャ1303はIRAPピクチャ1302ではない。これは、そうすることで、IRAPピクチャ1302に関連するフレームの半分が省略され得るからである。これは、VVCを用いるビデオコーディングシステムは、デコーディング順序1308においてIRAPピクチャ1302の直後にリーディングピクチャ1304を位置決めするように制約され得るため問題を生じる。
一実施形態では、単一の非リーディングピクチャ1303がIRAPピクチャ1302とリーディングピクチャ1304との間に配置されることが許容される場合を示すために、フラグが伝達され得る。ビデオシステムは、非リーディングピクチャ1303及び/又はトレーリングピクチャ1306がリーディングピクチャ1304の間に配置されるのを防止するよう依然として制約され得る。したがって、フラグは、デコーディング順序1308が、IRAPピクチャ1302、単一の非リーディングピクチャ1303、任意のリーディングピクチャ1304(例えば、リーディングピクチャ1304は任意であり、一部の例では省略され得る)、そして1つ以上のトレーリングピクチャ1306を含むことを示し得る。そのため、フラグは、CVS500又はCVS1300のいずれを予期するかをデコーダに示すことができる。
図14は、ピクチャ1410のための分割技術1400を示す。ピクチャ1410は、本明細書で説明した任意のピクチャ(例えば、ピクチャ502~506、602~606、702~704及び802~806)と同様であり得る。図示のように、ピクチャ1410は複数のスライス1412に分割され得る。スライスは、同一フレーム内の任意の他の領域から別々にエンコードされる、フレーム(例えば、ピクチャ)の空間的に区別可能な領域である。3つのスライス1412を図14に示しているが、より多くの又はより少ないスライスが実際の用途で用いられ得る。各スライス1412は複数のブロック1414に分割され得る。図14のブロック1414は、図10の現在のブロック1011、先行参照ブロック1021及び後続参照ブロック1031と同様であり得る。ブロック1414はCUを表し得る。4つのブロック1414を図14に示しているが、より多くの又はより少ないブロックが実際の用途で用いられ得る。
図15はデコーディングの方法1500の一実施形態である。方法1500は、ビデオデコーダ(例えば、デコーダ400)によって用いることができる。方法1500は、ビデオエンコーダ(例えば、ビデオエンコーダ300)からコード化されたビデオビットストリームが直接又は間接的に受信された後で行われ得る。方法1500は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、デコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック1502では、ビデオデコーダは、現在のピクチャを含むコード化されたビデオビットストリームを受信する。ブロック1504では、ビデオデコーダは、現在のピクチャの各スライスのための第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報を用いてデコーダによってコード化、構成又はさもなければ得られる。
ブロック1506では、ビデオデコーダは、現在のピクチャがクリーンランダムアクセス(CRA)ピクチャであることを判定する。CRAピクチャは、出力順序又はデコーディング順序において、該デコーディング順序で先行する任意のイントラランダムアクセスポイント(IRAP)ピクチャに先行する、第1の参照ピクチャリスト又は第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとすることを表す。
一実施形態では、先行するIRAPピクチャは、出力順序又はデコーディング順序においてCRAピクチャに先行する。一実施形態では、先行するIRAPピクチャは、CRAピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。一実施形態では、第1の参照ピクチャリストはRefPicList[0]に指定され、第2の参照ピクチャリストはRefPicList[1]に指定されている。
ブロック1508で、ビデオデコーダは、第1の参照ピクチャリスト及び第2の参照ピクチャリストの一方又は両方に基づいて、CRAピクチャの各スライスをデコードする。一実施形態では、デコーディング順序におけてCRAピクチャに後続する1つ以上のピクチャは、インター予測を用いてデコードされる。一実施形態では、方法1500は、ビデオデコーダのディスプレイ上に、CRAピクチャに基づいて生成された画像を表示することをさらに含む。
図16は、エンコーディングの方法1600の一実施形態である。方法1600は、ビデオエンコーダ(例えば、ビデオエンコーダ300)によって用いることができる。この方法は、(例えば、ビデオからの)ピクチャがビデオビットストリームにエンコードされ、次いでビデオデコーダ(例えば、ビデオデコーダ400)に向けて送信されるときに行われ得る。方法1600は、ビデオエンコーダ(例えば、ビデオエンコーダ300)からコード化されたビデオビットストリームが直接又は間接的に受信された後で行われ得る。方法1500は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、エンコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック1602では、現在のピクチャがクリーンランダムアクセス(CRA)ピクチャを含む場合に、ビデオエンコーダは第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、出力順序又はデコーディング順序において、該デコーディング順序で先行する任意のイントラランダムアクセスポイント(IRAP)ピクチャに先行する、該第1の参照ピクチャリスト又は該第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとする。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
一実施形態では、先行するIRAPピクチャは、出力順序又はデコーディング順序においてCRAピクチャに先行する。一実施形態では、先行するIRAPピクチャは、CRAピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。一実施形態では、第1の参照ピクチャリストはRefPicList[0]に指定され、第2の参照ピクチャリストはRefPicList[1]に指定されている。
ブロック1604では、ビデオエンコーダは、CRAピクチャと、第1の参照ピクチャリスト及び第2の参照ピクチャリストの一方又は両方をビデオビットストリームにエンコードする。
ブロック1606では、ビデオエンコーダは、ビデオデコーダに向けた伝送が保留されているビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオデコーダに向けてビデオビットストリームを送信する。
図17は、デコーディングの方法1700の一実施形態である。方法1700は、ビデオデコーダ(例えば、デコーダ400)によって用いることができる。方法1700は、ビデオエンコーダ(例えば、ビデオエンコーダ300)からコード化されたビデオビットストリームが直接又は間接的に受信された後で行われ得る。方法1700は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、デコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック1702では、ビデオデコーダは、現在のピクチャを含むコード化されたビデオビットストリームを受信する。ブロック1704では、ビデオデコーダは、現在のピクチャの各スライスのための第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
ブロック1706では、ビデオデコーダは、ビデオデコーダは、現在のピクチャが、デコーディング順序及び出力順序の両方において、同じイントラランダムアクセスポイント(IRAP)ピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャであると判定する。トレーリングピクチャは、現在のピクチャに関連するIRAPピクチャのための利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成された第1の参照ピクチャリスト又は第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとすることを表す。一実施形態では、同じIRAPピクチャは、トレーリングピクチャ及び1つ以上のリーディングピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。
場合によっては、ピクチャはDPBを更新することなくランダムアクセスポイントとして用いられる。例えば、GDRピクチャ及びCRAピクチャをランダムアクセスポイントとして用いてもよく、DPBを更新しない場合がある。したがって、GDRピクチャ及び/又はCRAピクチャに関連するGDRピクチャ及びインターコード化されたピクチャは、GDR/CRAピクチャに先行するDPB内の参照ピクチャを参照し得る。GDR/CRAピクチャがランダムアクセスポイントとして用いられる場合、GDR/CRAピクチャはビデオシーケンスを表示するための開始点として用いられるため、デコーダにおけるDPBで空であり得る。そのため、現在のピクチャは、エンコーディングの間にエンコーダで利用可能であるが、参照ピクチャが送信されていないためデコーダでは利用可能でないビデオシーケンス内の先行するピクチャを参照し得る。そのような参照ピクチャは利用不能な参照ピクチャと呼ばれる。そのような場合、利用不能な参照ピクチャを生成するためのプロセスをデコーダで呼び出すことができる。利用不能な参照ピクチャを生成するプロセスは、利用不能な参照ピクチャの大まかな近似値を生成するためにビットストリームパラメータを用いる。生成された利用不能な参照ピクチャの品質は表示には不十分なため、生成された利用不能な参照ピクチャは表示されなくてもよい。しかしながら、生成された利用不能な参照ピクチャは、利用不能な参照ピクチャを参照する現在のピクチャのデコードをサポートするのに十分なデータを提供する。
一実施形態では、利用不能な参照画像を生成するためのデコーディングプロセスは、NoOutPutBeforeRecoveryFlagが1に等しいクリーンランダムアクセス(CRA)ピクチャ又はNoOutPutBeforeRecoveryFlagが1に等しい漸進的デコーディングリフレッシュ(GDR)ピクチャについて、コード化ピクチャ毎に1度呼び出される。
利用不能な参照ピクチャを生成するためのデコーディングプロセスが呼び出された場合、以下が適用される。
-「参照ピクチャなし」に等しい各RefPicList[i][j](iは0~1の範囲であり、jは0~num_ref_entries[i][RplsIdx[i]]-1の範囲である)の場合、VVC規格の第8.3.4.2項「1つの利用不能なピクチャの生成」で規定されているようにピクチャが生成され、以下が適用される。
-生成されたピクチャのnuh_layer_idの値は、現在のピクチャのnuh_layer_idに等しく設定される。
-もし、st_ref_pic_flag[i][RplsIdx[i]][j]が1と等しく、inter_layer_ref_pic_flag[i]
[RplsIdx[i]][j]が0と等しい場合、生成されたピクチャのPicOrderCntValの値はRefPicPocList[i][j]と等しく設定され、生成されたピクチャは「短期の参照のために使用」とマークされる。
-さもなければ、st_ref_pic_flag[i][RplsIdx[i]][j]が0と等しくinter_layer_ref_pic_flag[i][RplsIdx[i]][j]が0と等しい場合、生成されたピクチャのPicOrderCntValの値はRefPicLtPocList[i][j]と等しく設定され、生成されたピクチャのph_pic_order_cnt_lsbの値は(RefPicLtPocList[i][j]
& (MaxPicOrderCntLsb -1))と等しいと推測され、生成されたピクチャは「長期の参照のために使用」とマークされる。
-生成された参照ピクチャのPictureOutputFlagの値は0と等しく設定される。
-RefPicList[i][j]は、生成された参照ピクチャに設定される。
1つの利用不能なピクチャの生成は以下の通りである。
このプロセスが呼び出されると、利用不能なピクチャは以下のように生成される。
ピクチャのサンプルアレイSLの各要素の値は1<<(BitDepth-1)に等しく設定される。
ChromaArrayTypeが0と等しくない場合、ピクチャのサンプルアレイSCb及びSCrの各要素の値は1<<(BitDepth-1)に等しく設定される。
予測モードCuPredMode[0][x][y]はMODE_INTRAに等しく設定され、xは0~pps_pic_width_in_luma_samples-1の範囲であり、yは0~pps_pi_height_in_luma_samples-1の範囲である。
注記-出力順序及びデコーディング順序において、NoOutputBeforeRecoveryFlagが1に等しいGDRピクチャに後続するリカバリポイントピクチャ及びそのリカバリポイントピクチャに後続するピクチャの出力は、SL、SCb、SCr、CuPredMode[0][x][y]の要素に設定された値とは無関係である。
nuh_layer_idは、VCL NALユニットが属する層の識別子又は非VCL NALユニットが適用される層の識別子を規定する。RplsIdxは参照ピクチャリストインデックスである。st_ref_pic_flagは、参照ピクチャリストが短期参照ピクチャエントリであるかどうかを示す、参照ピクチャリスト構文構造におけるフラグである。PicOrderCntValは、ピクチャオーダーカウント(POC)の値を表す。MaxPicOrderCntLsbは、最大ピクチャオーダカウントの最下位ビットを表す。PictureOutputFlagは、ピクチャが出力されるかどうかを示すフラグである。
ブロック1708では、ビデオデコーダは、第1の参照ピクチャリスト及び第2の参照ピクチャリストの一方又は両方に基づいて、トレーリングピクチャの各スライスをデコードする。一実施形態では、同じIRAPピクチャはイントラ予測を用いてデコードされ、トレーリングピクチャ及び1つ以上のリーディングピクチャは、インター予測を用いてデコードされる。一実施形態では、方法1700は、ビデオデコーダのディスプレイ上に、トレーリングピクチャに基づいて生成された画像を表示することをさらに含む。
図18は、エンコーディングの方法1800の一実施形態である。方法1800は、ビデオエンコーダ(例えば、ビデオエンコーダ300)によって用いることができる。この方法は、(例えば、ビデオからの)ピクチャがビデオビットストリームにエンコードされ、次いでビデオデコーダ(例えば、ビデオデコーダ400)に向けて送信されるときに行われ得る。方法1800は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、エンコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック1802では、ビデオエンコーダは、現在のピクチャが、デコーディング順序及び出力順序の両方において、同じイントラランダムアクセスポイント(IRAP)ピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャである場合に、第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、現在のピクチャに関連するIRAPピクチャのための利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成された第1の参照ピクチャリスト又は第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとする。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
一実施形態では、利用不能な参照画像を生成するためのデコーディングプロセスは、NoOutPutBeforeRecoveryFlagが1に等しいクリーンランダムアクセス(CRA)ピクチャ又はNoOutPutBeforeRecoveryFlagが1に等しい漸進的デコーディングリフレッシュ(GDR)ピクチャについて、コード化されたピクチャ毎に1度呼び出される。
一実施形態では、ビデオエンコーダは、NoOutPutBeforeRecoveryFlagが1と等しい度にチェックを行って、参照ピクチャリストが先のCVSからの参照ピクチャを参照しないよう確実にすることができる。CRA又はGDRピクチャがランダムアクセスポイントとして選択された場合に、ビデオデコーダにおいてそのようなピクチャは利用できない場合があるからである。そのような場合、ビデオデコーダもこのチェックを行うため、ビデオエンコーダはこのチェックを行う。
一実施形態では、同じIRAPピクチャは、トレーリングピクチャ及び1つ以上のリーディングピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。一実施形態では、同じIRAPピクチャは、イントラ予測を用いてビデオビットストリームにエンコードされ、トレーリングピクチャ及び1つ以上のリーディングピクチャは、インター予測を用いてエンコードされる。
ブロック1804では、ビデオエンコーダは、トレーリングピクチャ及び第1の参照ピクチャリスト及び第2の参照ピクチャリストの一方又は両方をビデオビットストリームにエンコードする。
ブロック1806では、ビデオエンコーダは、ビデオデコーダに向けた伝送が保留されているビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオデコーダに向けてビデオビットストリームを送信する。
図19は、デコーディングの方法1900の一実施形態である。方法1900は、ビデオデコーダ(例えば、デコーダ400)によって用いることができる。方法1900は、ビデオエンコーダ(例えば、ビデオエンコーダ300)からコード化されたビデオビットストリームが直接又は間接的に受信された後で行われ得る。方法1900は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、デコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック1902では、ビデオデコーダが、現在のピクチャを含むコード化されたビデオビットストリームを受信する。ブロック1904では、ビデオデコーダは、現在のピクチャの各スライスのための第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
ブロック1906では、ビデオデコーダは、現在のピクチャが、デコーディング順序及び出力順序の両方において、同じイントラランダムアクセスポイント(IRAP)ピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャであると判定する。トレーリングピクチャは、出力順序又はデコーディング順序において同じIRAPピクチャに先行する、第1の参照ピクチャリスト又は第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとすることを表す。
一実施形態では、同じIRAPピクチャは、トレーリングピクチャ及び1つ以上のリーディングピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。
ブロック1908では、ビデオデコーダは、第1の参照ピクチャリスト及び第2の参照ピクチャリストの一方又は両方に基づいて、トレーリングピクチャの各スライスをデコードする。一実施形態では、同じIRAPピクチャはイントラ予測を用いてデコードされ、トレーリングピクチャ及び1つ以上のリーディングピクチャは、インター予測を用いてデコードされる。一実施形態では、方法1900は、ビデオデコーダのディスプレイ上に、トレーリングピクチャに基づいて生成された画像を表示することをさらに含む。
図20は、エンコーディングの方法2000の一実施形態である。方法2000は、ビデオエンコーダ(例えば、ビデオエンコーダ300)によって用いることができる。この方法は、(例えば、ビデオからの)ピクチャがビデオビットストリームにエンコードされ、次いでビデオデコーダ(例えば、ビデオデコーダ400)に向けて送信されるときに行われ得る。方法2000は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、エンコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック2002では、現在のピクチャが、デコーディング順序及び出力順序の両方において、同じイントラランダムアクセスポイント(IRAP)ピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャである場合に、ビデオエンコーダは第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、出力順序又はデコーディング順序において同じIRAPピクチャに先行する、第1の参照ピクチャリスト又は第2の参照ピクチャリスト内のエントリによってピクチャが参照されないものとする。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
一実施形態では、同じIRAPピクチャは、トレーリングピクチャ及び1つ以上のリーディングピクチャを含むコード化されたビデオシーケンス(CVS)を開始する。一実施形態では、同じIRAPピクチャは、イントラ予測を用いてビデオビットストリームにエンコードされ、トレーリングピクチャ及び1つ以上のリーディングピクチャは、インター予測を用いてエンコードされている。
ブロック2004では、ビデオエンコーダは、トレーリングピクチャと、第1の参照ピクチャリスト及び第2の参照ピクチャリストのうちの一方又は両方とをビデオビットストリームにエンコードする。
ブロック2006では、ビデオエンコーダは、ビデオデコーダに向けた伝送が保留されているビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオデコーダに向けてビデオビットストリームを送信する。
図21は、デコーディングの方法2100の一実施形態である。方法2100は、ビデオデコーダ(例えば、デコーダ400)によって用いることができる。方法2100は、ビデオエンコーダ(例えば、ビデオエンコーダ300)からコード化されたビデオビットストリームが直接又は間接的に受信された後で行われ得る。方法2100は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、デコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック2102では、ビデオデコーダは、現在のピクチャを含むコード化されたビデオビットストリームを受信する。ブロック2104では、ビデオデコーダは、現在のピクチャの各スライスのための第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
ブロック2106では、ビデオデコーダは、現在のピクチャがランダムアクセスデコーダブルリーディング(RADL)ピクチャであると判定する。RADLピクチャは、ランダムアクセススキップリーディング(RASL)ピクチャ、利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成されるピクチャ及びデコーディング順序において関連するイントラランダムアクセスポイント(IRAP)ピクチャに先行するピクチャ、のうちのいずれかであるアクティブエントリが第1の参照ピクチャリスト又は第2の参照ピクチャリスト内に存在しないものとすることを表す。一実施形態では、以下のいずれかは、以下のいずれか1つを意味し得る。
一実施形態では、利用不能な参照ピクチャを生成するためのデコーディングプロセスは、NoOutPutBeforeRecoveryFlagが1に等しいクリーンランダムアクセス(CRA)ピクチャ又はNoOutPutBeforeRecoveryFlagが1に等しい漸進的デコーディングリフレッシュ(GDR)ピクチャについて、コード化されたピクチャ毎に1度呼び出される。
ブロック2108では、ビデオデコーダは、第1の参照ピクチャリスト及び第2の参照ピクチャリストのうちの一方又は両方に基づいてRADLピクチャの各スライスをデコードする。一実施形態では、方法2100は、ビデオデコーダのディスプレイ上に、RADLピクチャに基づいて生成された画像を表示することをさらに含む。
図22は、エンコーディングの方法2200の一実施形態である。方法2200は、ビデオエンコーダ(例えば、ビデオエンコーダ300)によって用いることができる。この方法は、(例えば、ビデオからの)ピクチャがビデオビットストリームにエンコードされ、次いでビデオデコーダ(例えば、ビデオデコーダ400)に向けて送信されるときに行われ得る。方法2200は、現在のピクチャが特定の種類のピクチャ(例えば、CRAピクチャ、トレーリングピクチャ、デコーディング順序及び出力順序の両方において、同じIRAPピクチャに関連する1つ以上のリーディングピクチャに後続するトレーリングピクチャ及びRADLピクチャ)の場合に、参照ピクチャリストが特定のピクチャを参照するエントリを含むことを制限することにより、エンコーディングプロセスを改善する。このように参照ピクチャリストを制限することにより、コーディングエラー及びコーディングに必要な帯域幅及び/又はネットワークリソースの量が従来のコーディング技術に比べて低減され得る。したがって。実際問題として、コーデックの性能が改善され、より良好なユーザ体験につながる。
ブロック2202では、現在のピクチャがランダムアクセスデコーダブルリーディング(RADL)ピクチャの場合に、ビデオエンコーダは、第1の参照ピクチャリスト及び第2の参照ピクチャリストを得る。ランダムアクセススキップリーディング(RASL)ピクチャ、利用不能な参照ピクチャを生成するためのデコーディングプロセスによって生成されるピクチャ及びデコーディング順序において関連するイントラランダムアクセスポイント(IRAP)ピクチャに先行するピクチャのうちのいずれかであるアクティブエントリが第1の参照ピクチャリスト又は第2の参照ピクチャリスト内に存在しないものとする。一実施形態では、利用不能な参照ピクチャを生成するためのデコーディングプロセスは、NoOutPutBeforeRecoveryFlagが1に等しいクリーンランダムアクセス(CRA)ピクチャ又はNoOutPutBeforeRecoveryFlagが1に等しい漸進的デコーディングリフレッシュ(GDR)ピクチャについて、コード化されたピクチャ毎に1度呼び出される。一実施形態では、参照ピクチャリストは、デコーダに記憶された情報、少なくとも部分的にビットストリームから得られる情報等を用いてデコーダによってコード化、構成又はさもなければ得られる。
ブロック2204では、ビデオエンコーダは、RADLピクチャと、第1の参照ピクチャリスト及び第2の参照ピクチャリストのうちの一方又は両方とをビデオビットストリームにエンコードする。
ブロック2206では、ビデオエンコーダは、ビデオデコーダに向けた伝送が保留されているビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオデコーダに向けてビデオビットストリームを送信する。
図23は、例示のビデオコーディング装置2300の概略図である。ビデオコーディング装置2300は、本明細書で説明した開示の例/実施形態を実施するのに適している。ビデオコーディング装置2300は、下流ポート2310、上流ポート2350及び/又は、ネットワークにわたってデータを上流及び/又は下流に通信するための送信機及び/又は受信機を含むトランシーバユニット(Tx/Rx)2320、2340を含む。ビデオコーディング装置2300は、データを処理するための論理ユニット及び/又は中央処理装置(CPU)を含むプロセッサ2330と、データを記憶するためのメモリ2360とを含む。ビデオコーディング装置2300は、電気、光又は無線通信ネットワークを介してデータを通信するために、上流ポート2350及び/又は下流ポート2310に連結される、光/電気(OE)コンポーネント、電気/光(EO)コンポーネント及び/又は無線通信コンポーネントも含み得る。ビデオコーディング装置2300は、ユーザとの間でデータを通信するための入力及び/又は出力(I/O)装置2380も含み得る。I/O装置2380は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカ等の出力装置を含み得る。I/O装置2380は、キーボード、マウス、トラックボール等の入力装置及び/又はそのような出力装置とやりとりするための対応するインターフェースも含み得る。
プロセッサ2330は、ハードウェア及びソフトウェアによって実施される。プロセッサ2330は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサ)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)及びデジタル信号プロセッサ(DSP)として実施され得る。プロセッサ2330は、下流ポート2310、Tx/Rx2320、2340、上流ポート2350及びメモリ2360と通信する。プロセッサ2330はコーディングモジュール2314を含む。コーディングモジュール2370は、本明細書で説明した開示の実施形態を実施し、本明細書で説明した任意の他の方法/メカニズムも実施し得る。また、コーディングモジュール2370は、コーデックシステム200、エンコーダ300及び/又はデコーダ400を実施し得る。例えば、コーディングモジュール2370は、上述したように、参照ピクチャを管理してインターレイヤー予測をサポートするために、参照ピクチャ構造内のインターレイヤー残差予測(ILRP)フラグ及び/又はILRP層インジケータをコーディングするために用いられ得る。そのため、コーディングモジュール2370は、ビデオデータをコーディングする際に、ビデオコーディング装置2300に付加の機能及び/又はコーディング効率を提供させる。そのため、コーディングモジュール2314は、ビデオコーディング装置2300の機能を改善するとともに、ビデオコーディング技術に特有の問題に対処する。また、コーディングモジュール2370は、ビデオコーディング装置2300の異なる状態への変換を及ぼす。あるいは、コーディングモジュール2370は、メモリ2360に記憶された命令として実施され、プロセッサ2330によって実行され得る(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)。
メモリ2360は、ディスク、テープドライブ、ソリッドステートドライブ、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三値コンテンツアドレス指定可能メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)等の1つ以上のメモリタイプを含む。メモリ2360は、プログラムが実行のために選択された場合にそのようなプログラムを記憶し、プログラム実行の間に読み出された命令及びデータを記憶するためにオーバーフローデータ記憶装置として用いられ得る。
図24は、コーディングのための手段2400の実施形態の概略図である。一実施形態では、コーディングのための手段2400は、ビデオコーディング装置2402(例えば、ビデオエンコーダ300又はビデオデコーダ400)で実施される。ビデオコーディング装置2402は受信手段2401を含む。受信手段2401は、エンコードのために画像を受信するか又はデコードのためにビットストリームを受信するように構成されている。ビデオコーディング装置2402は、受信手段2401に連結された送信手段2407を含む。送信手段2407はデコーダにビットストリームを送信するか又はデコードされた画像を表示手段(例えば、I/O装置2380のうちの1つ)に送信するように構成されている。
ビデオコーディング装置2402は記憶手段2403を含む。記憶手段2403は、受信手段2401又は送信手段2407のうちの少なくとも1つに連結されている。記憶手段2403は命令を記憶するように構成されている。ビデオコーディング装置2402は、処理手段2405も含む。処理手段2405は記憶手段2403に連結されている。処理手段2405は、本明細書に開示の方法を行うために、記憶手段2403に記憶された命令を実行するように構成されている。
本明細書に記載の例示の方法のステップは、必ずしも説明した順序で実施される必要はなく、そのような方法のステップの順序は例示にすぎないと理解すべきである。同様に、追加のステップがそのような方法に含まれてもよく、本開示の様々な実施形態と一致して特定のステップが方法において省略され得るか又は組み合わされ得る。
本開示においていくつかの実施形態を提供してきたが、開示したシステム及び方法は、本開示の精神又は範囲から逸脱することなく、多くの他の特定の形態で実施され得ることを理解されたい。本願の例は例示的なものであり、限定的なものと考えるべきでなく、その意図は、本明細書に与えられた詳細を限定されない。例えば、様々な要素又はコンポーネントを別のシステムに組み合わせ又は統合してもいいし、特定の特徴を省略するか又は実施しなくてもよい。
加えて、様々な実施形態で個別又は別個のものとして説明及び例示した技術、システム、サブシステム及び方法は、本開示の範囲から逸脱することなく、他のシステム、モジュール、技術又は方法と組み合わせてもいいし、統合してもよい。互いに連結されるか又は直接連結されるか又は通信すると図示又は説明した他のアイテムは、電気的、機械的又は他の方法で、いくつかのインターフェース、装置又は中間コンポーネントを介して間接的に連結されるか又は通信され得る。変更、置換及び改変の他の例は当業者によって確認可能であり、本明細書に開示の精神及び範囲から逸脱することなく行うことができる。