図1は、本開示の一実施形態による通信システム(100)の簡略化されたブロック図である。システム(100)は、ネットワーク(150)を介して相互接続された少なくとも2つの端末(110,120)を含み得る。データの一方向伝送のために、第1の端末(110)は、ローカル位置でビデオデータを符号化し、ネットワーク(150)を介して他の端末(120)に伝送することができる。第2の端末(120)は、他の端末の符号化されたビデオデータをネットワーク(150)から受信し、符号化されたデータを復号化し、復元されたビデオデータを表示することができる。一方向のデータ伝送は、メディアサービスアプリケーションなどで一般的である。
図1は、例えば、ビデオ会議中に発生し得る符号化されたビデオの双方向伝送をサポートするために提供される第2の対の端末(130,140)を示す。データの双方向伝送のために、各端末(130,140)は、ローカル位置でキャプチャされたビデオデータを符号化し、ネットワーク(150)を介して他の端末に伝送することができる。また、各端末(130,140)は、他の端末によって伝送された符号化されたビデオデータを受信することができ、符号化されたデータを復号化することができ、かつローカル表示デバイスで復元されたビデオデータを表示することができる。
図1において、端末(110~140)はサーバ、パーソナルコンピュータやスマートフォン、および/または任意の他のタイプの端末として図示されている。例えば、端末(110~140)は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレイヤ、および/またはビデオ会議専用機器であってもよい。ネットワーク(150)は、例えば有線および/または無線通信ネットワークを含む、端末(110~140)の間で符号化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(150)は、回路交換および/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークとしては、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが挙げられる。本出願で検討される目的のためには、ネットワーク(150)のアーキテクチャおよびトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない可能性がある。
図2は、開示された主題の適用例として、ストリーミング環境におけるビデオ符号器および復号器の配置を示す。開示された主題は、例えば、ビデオ会議、デジタルテレビ、CD、DVD、メモリースティックなどを含むデジタル記憶媒体上の圧縮されたビデオの記憶などを含む、他のビデオ対応アプリケーションに等価的に適用可能であり得る。
図2に示されるように、ストリーミングシステム(200)は、ビデオソース(201)および符号器(203)を含むことができるキャプチャサブシステム(213)を含み得る。ビデオソース(201)は、例えば、デジタルカメラであってもよく、非圧縮ビデオサンプルストリーム(202)を生成するように構成され得る。非圧縮ビデオサンプルストリーム(202)は、符号化されたビデオビットストリームと比較して大きいデータ量を提供する可能性があり、カメラ(201)に結合された符号器(203)によって処理され得る。符号器(203)はハードウェア、ソフトウェアまたはそれらの組み合わせを含み、以下で詳しく記載される開示された主題の態様を実現または実装することができる。符号化されたビデオビットストリーム(204)は、サンプルストリームと比較して、小さいデータ量を含む可能性があり、将来の使用のためにストリーミングサーバ(205)に記憶され得る。1つまたは複数のストリーミングクライアント(206)は、ストリーミングサーバ(205)にアクセスして、符号化されたビデオビットストリーム(204)のコピーであり得るビデオビットストリーム(209)を取得することができる。
実施形態において、ストリーミングサーバ(205)は、Media-Aware Network Element(MANE)としても機能することができる。例えば、ストリーミングサーバ(205)は、潜在的に異なるビットストリームをストリーミングクライアント(206)の1つまたは複数に適合させるために、符号化されたビデオビットストリーム(204)をプルーニングするように構成され得る。実施形態において、MANEは、ストリーミングシステム(200)において、ストリーミングサーバ(205)とは個別に提供され得る。
ストリーミングクライアント(206)は、ビデオ復号器(210)およびディスプレイ(212)を含み得る。ビデオ復号器(210)は、例えば、符号化されたビデオビットストリーム(204)の受信コピーであるビデオビットストリーム(209)を復号化し、ディスプレイ(212)または別のレンダリングデバイス(図示せず)上でレンダリングすることができる送信ビデオサンプルストリーム(211)を生成することができる。一部のストリーミングシステムでは、ビデオビットストリーム(204,209)は、特定のビデオ符号化/圧縮規格にしたがって符号化され得る。そのような規格の例としては、ITU-T勧告H.265が挙げられるが、これに限定されない。開発中のビデオ符号化規格は、非公式にVersatile Video Coding(VVC)として知られている。本開示の実施形態は、VVCのコンテキストで使用することができる。
図3は、本開示の一実施形態による、ディスプレイ(212)に取り付けられるビデオ復号器(210)の例示的な機能ブロック図である。
ビデオ復号器(210)は、チャネル(312)、受信器(310)、バッファメモリ(315)、エントロピー復号器/パーサ(320)、スケーラ/逆変換ユニット(351)、イントラ予測ユニット(352)、動き補償予測ユニット(353)、アグリゲータ(355)、ループフィルタユニット(356)、参照ピクチャメモリ(357)、および現在のピクチャメモリ(358)を含むことができる。少なくとも1つの実施形態では、ビデオ復号器(210)は、集積回路、一連の集積回路、および/または他の電子回路を含み得る。また、ビデオ復号器(210)は、部分的または全体的に、関連するメモリを有する1つまたは複数のCPU上で動作するソフトウェアで具現化され得る。
この実施形態、および他の実施形態において、受信器(310)は、復号器(210)によって復号される1つまたは複数の符号化されたビデオシーケンスを一度に1つずつ受信することができ、ここで、各符号化されたビデオシーケンスの復号化は、他の符号化されたビデオシーケンスから独立している。符号化されたビデオシーケンスは、チャネル(312)から受信することができ、チャネル(312)は、符号化されたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであり得る。受信器(310)は、符号化されたビデオデータを、他のデータ、例えば、それぞれの使用エンティティ(図示せず)に転送され得る、符号化されたオーディオデータおよび/または補助的なデータストリームとともに受信することができる。受信器(310)は、符号化されたビデオシーケンスを、他のデータから分割することができる。ネットワークジッタを防止するために、バッファメモリ(315)は、受信器(310)とエントロピー復号器/パーサ(320)(以降、「パーサ」)との間に結合され得る。受信器(310)が、十分な帯域幅と制御可能性を有する記憶/転送デバイス、またはアイソクロナスネットワークからデータを受信する場合、バッファ(315)は使用されないか、または小さくてもよい。インターネットのようなベストエフォート型パケットネットワークで使用する場合、バッファ(315)は必要とされることがあり、比較的大きくなる可能性があり、また適応的なサイズになり得る。
ビデオ復号器(210)はパーサ(320)を含み、エントロピー符号化されたビデオシーケンスに基づき、シンボル(321)を再構成することができる。それらのシンボルのカテゴリは、例えば、復号器(210)の動作を管理するために使用される情報、および、図2に示されるように、復号器に結合され得るディスプレイ(212)などのレンダリングデバイスを制御するための潜在的な情報を含む。レンダリングデバイスの制御情報は、例えば、補充強化情報(SEI)メッセージ、またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってもよい。パーサ(320)は、受信した符号化されたビデオシーケンスを解析/エントロピー復号化することができる。符号化されたビデオシーケンスの符号化は、ビデオ符号化技術または規格にしたがうことができ、可変長符号化、ハフマン符号化、コンテキスト感度を伴うまたは伴わない算術符号化などを含む、当業者にとって公知である原理にしたがうことができる。パーサ(320)はグループに対応する少なくとも1つのパラメータに基づき、符号化されたビデオシーケンスから、ビデオ復号器における画素のサブグループのうちの少なくとも1つのサブグループのためのサブグループパラメータセットを抽出することができる。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含み得る。パーサ(320)は、また、符号化されたビデオシーケンス情報から、変換係数、量子化器パラメータ値、動きベクトルなどを抽出することができる。
パーサ(320)は、バッファ(315)から受信したビデオシーケンスに対してエントロピー復号化/解析動作を実行し、シンボル(321)を生成することができる。
シンボル(321)の再構成は、符号化されたビデオピクチャまたはその一部のタイプ(例えば、インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロック)および他のファクタに基づいて、複数の異なるユニットに関わる可能性がある。どのユニットがどのように関わるかは、パーサ(320)によって符号化されたビデオシーケンスから解析された、サブグループ制御情報によって制御することができる。簡潔のために、パーサ(320)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れについては図示されていない。
既に言及された機能ブロック以外に、復号器(210)は概念的には、以下に説明する複数の機能ユニットに細分することができる。商業的な制約の下で実行する実際の実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかし、開示された主題を説明する目的のために、概念的に、以下の機能ユニットに細分することが適切である。
1つのユニットは、スケーラ/逆変換ユニット(351)であり得る。スケーラ/逆変換ユニット(351)は、量子化された変換係数だけでなく、どの変換を使用するか、ブロックサイズ、量子化ファクタ、量子化スケーリングマトリクスなどの制御情報を、パーサ(320)からシンボル(321)として受信することができる。スケーラ/逆変換ユニット(351)は、アグリゲータ(355)に入力され得るサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(351)の出力サンプルは、イントラ符号化ブロック、すなわち、以前に再構成されたピクチャからの予測情報を使用しないが、以前に再構成された現在のピクチャ部分からの予測情報を使用できるブロックに属してもよい。このような予測情報は、イントラピクチャ予測ユニット(352)によって提供され得る。場合によっては、イントラピクチャ予測ユニット(352)は、現在のピクチャメモリ(358)から現在の(部分的に再構成された)ピクチャからフェッチされた周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。場合によっては、アグリゲータ(355)は、各サンプルに基づいて、イントラ予測ユニット(352)によって生成される予測情報を、スケーラ/逆変換ユニット(351)によって提供される出力サンプル情報に追加する。
他のケースでは、スケーラ/逆変換ユニット(351)の出力サンプルは、インター符号化、および潜在的に動き補償されたブロックに属し得る。このような場合、動き補償予測ユニット(353)は、参照ピクチャメモリ(357)にアクセスし、予測のためのサンプルをフェッチすることができる。ブロックに属するシンボル(321)にしたがって、フェッチされたサンプルを動き補償した後、これらのサンプルは、アグリゲータ(355)によって、スケーラ/逆変換ユニット(351)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加され、出力サンプル情報を生成することができる。動き補償予測ユニット(353)が予測サンプルをフェッチする参照ピクチャメモリ(357)内のアドレスは、動きベクトルによって制御され得る。動きベクトルは、例えば、X、Y、および参照ピクチャ成分を有し得るシンボル(321)の形態で、動き補償予測ユニット(353)に利用可能であり得る。動き補償は、サブサンプルの正確な動きベクトルが使用されているときに、参照ピクチャメモリ(357)からフェッチされたサンプル値の補間、動きベクトル予測メカニズムなども含むことができる。
アグリゲータ(355)の出力サンプルは、ループフィルタユニット(356)で、様々なループフィルタリング技術で処理され得る。ビデオ圧縮技術は、ループ内フィルタ技術を含むことができ、当該ループ内フィルタ技術は、符号化されたビデオビットストリームに含まれるパラメータによって制御され、パーサ(320)からシンボル(321)としてループフィルタユニット(356)に利用可能にされるが、符号化されたピクチャまたは符号化されたビデオシーケンスの前の(復号順の)部分の復号化中に得られるメタ情報に応答することもでき、また、以前に再構成され、ループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(356)の出力は、ディスプレイ(212)などのレンダリングデバイスに出力し得るサンプルストリームであり、将来のピクチャ間予測に使用するために参照ピクチャメモリ(357)に記憶することができる。
特定の符号化されたピクチャは、完全に再構成されると、参照ピクチャとして将来の予測に使用することができる。符号化されたピクチャが完全に再構成され、符号化されたピクチャが(例えばパーサ(320)によって)参照ピクチャとして識別されると、現在の参照ピクチャは参照ピクチャメモリ(357)の一部となり、次の符号化されたピクチャの再構成を開始する前に、新たな現在のピクチャメモリを再割り当てすることができる。
ビデオ復号器(210)は、ITU-T Rec. H.265などの規格における所定のビデオ圧縮技術にしたがって、復号化動作を実行することができる。符号化されたビデオシーケンスは、ビデオ圧縮技術の文書または規格、具体的にはそのうちのプロファイル文書で指定されているような、ビデオ圧縮技術または規格のシンタックスにしたがうという意味で、符号化されたビデオシーケンスは、使用されているビデオ圧縮技術または基準により指定されるシンタックスに準拠し得る。また、一部のビデオ圧縮技術または規格に準拠するために、符号化されたビデオシーケンスの複雑さは、ビデオ圧縮技術または規格のレベルによって定義される範囲内であり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。場合によっては、レベルによって設定される制限は、仮想参照復号器(HRD)の仕様および符号化されたビデオシーケンスにおける信号で示されたHRDバッファの管理するメタデータを介してさらに制限され得る。
一実施形態において、受信器(310)は、符号化されたビデオとともに追加(冗長)データを受信することができる。追加データは、符号化されたビデオシーケンスの一部として含まれ得る。追加データは、ビデオ復号器(210)によって利用され、データを適切に復号化し、および/またはオリジナルビデオデータを、より正確に再構成することができる。追加データは、例えば、時間的、空間的、またはSNRエンハンスメントレイヤ、冗長スライス、冗長ピクチャ、順方向エラー訂正コードなどの形態であり得る。
図4は、本開示の一実施形態による、ビデオソース(201)に関連するビデオ符号器(203)の例示的な機能ブロック図である。
ビデオ符号器(203)は、例えば、ソース符号化器(430)である符号器、符号化エンジン(432)、(ローカル)復号器(433)、参照ピクチャメモリ(434)、予測器(435)、伝送器(440)、エントロピー符号器(445)、コントローラ(450)、およびチャネル(460)を含むことができる。
符号器(203)は、ビデオソース(201)(符号器の一部ではない)からビデオサンプルを受信することができ、当該ビデオソースは符号器(203)によって符号化されるビデオ画像をキャプチャできる。
ビデオソース(201)は、符号器(203)によって符号化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供できる。メディアサービスシステムでは、ビデオソース(201)は、以前に準備されたビデオを記憶するストレージデバイスであり得る。ビデオ会議システムでは、ビデオソース(203)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見る際に動きが付与される複数の個別のピクチャとして提供され得る。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに基づいて、1つまたは複数のサンプルを含むことができる。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明では、サンプルに着目する。
一実施形態によると、符号器(203)は、リアルタイムまたはアプリケーションで必要な任意の他の時間の制約で、ソースビデオシーケンスのピクチャを、符号化されたビデオシーケンス(443)として符号化して圧縮することができる。適切な符号化速度で実行することは、コントローラ(450)の1つの機能である。また、コントローラ(450)は、以下に説明するような他の機能ユニットを制御することができ、これらのユニットに機能的に結合され得る。簡潔のために、結合は図示されていない。コントローラ(450)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、…)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含み得る。当業者であれば、特定のシステム設計に最適化されたビデオ符号器(203)に関係し得るコントローラ(450)の他の機能を容易に識別することができる。
一部のビデオ符号器は、当業者が「符号化ループ」として容易に認識するもので動作する。非常に簡略化した説明として、符号化ループは、ソース符号化器(430)の符号化部分(符号化される入力ピクチャおよび参照ピクチャに基づいてシンボルを生成する責任がある)と、シンボルを再構成して、特定のビデオ圧縮技術においてシンボルと符号化されたビデオビットストリームとの間の圧縮が可逆圧縮である場合に(リモート)復号器も生成するであろうサンプルデータを生成する符号器(203)に組み込まれた(ローカル)復号器(433)と、から構成され得る。その再構成されたサンプルストリームは、参照ピクチャメモリ(434)に入力され得る。シンボルストリームの復号化が、復号器の位置(ローカルまたはリモート)に依存しないビットが正確な結果をもたらすので、参照ピクチャメモリのコンテンツも、ローカル符号器とリモート符号器との間でビットが正確である。換言すれば、符号器の予測部分が「見る」参照ピクチャサンプルと、復号器が復号化中に予測を使用するときに「見る」サンプル値とは全く同じである。この参照ピクチャの同期性の基本原理(および、例えばチャネルエラーのために同期性が維持できない場合に、結果として生じるドリフト)は、当業者に知られている。
「ローカル」復号器(433)の動作は、図3に関連して上で既に詳細に説明した「リモート」復号器(210)の動作と同じであり得る。しかし、シンボルが利用可能であり、エントロピー符号器(445)およびパーサ(320)による符号化されたビデオシーケンスへのシンボルの符号化/復号化は可逆圧縮であり得るので、チャネル(312)、受信器(310)、バッファ(315)、およびパーサ(320)を含む復号器(210)のエントロピー復号化部分は、ローカル復号器(433)に完全には実装されない可能性がある。
この時点で、復号器に存在する解析/エントロピー復号化以外の任意の復号化技術は、対応する符号器に実質的に同一の機能形態で、存在する必要があり得ることが観察され得る。そのため、開示された主題は、復号器の動作に着目する。符号技術の記述は、包括的に説明された復号技術の逆であり得るため、符号技術の記述を簡略化することができる。より詳しい説明は、特定の領域のみで必要であり、以下で提供される。
その動作の一部として、ソース符号化器(430)は動き補償された予測符号化を実行することができ、ビデオシーケンスからの1つまたは複数の以前に符号化されたフレーム(「参照フレーム」として指定される)を参照し、予測的に入力フレームを符号化する。このようにして、符号化エンジン(432)は、入力フレームの画素ブロックと、入力フレームの予測参照として選択され得る参照フレームの画素ブロックとの差を符号化する。
ローカルビデオ復号器(433)は、ソース符号化器(430)によって生成されたシンボルに基づき、参照フレームとして指定できるフレームの符号化されたビデオデータを復号化することができる。符号化エンジン(432)の動作は有利には非可逆プロセスであり得る。符号化されたビデオデータがビデオ復号器(図4に図示せず)で復号化され得るとき、再構成されたビデオシーケンスは、典型的には、多少のエラーを伴うソースビデオシーケンスの複製であり得る。ローカルビデオ復号器(433)は、ビデオ復号器によって参照フレームに対して実行し得る復号化プロセスを複製し、再構成された参照フレームを参照ピクチャメモリ(434)に記憶させることができる。このようにして、符号器(203)は、遠端のビデオ復号器によって得られる(伝送エラーがない)再構成された参照フレームと共通のコンテンツを有する再構成された参照フレームのコピーをローカルに記憶することができる。
予測器(435)は、符号化エンジン(432)に対して予測検索を実行することができる。すなわち、符号化される新しいフレームのために、予測器(435)は、新しいピクチャのための適切な予測参照として機能し得る、サンプルデータ(候補参照画素ブロックとして)、または参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータについて、参照ピクチャメモリ(434)を検索することができる。予測器(435)は、サンプルブロックに基づき、画素ブロックごとに動作して、適切な予測参照を見つけることができる。場合によっては、予測器(435)によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(434)に記憶された複数の参照ピクチャから引き出された予測参照を有し得る。
コントローラ(450)は、例えば、ビデオデータの符号化に用いられるパラメータやサブグループパラメータの設定を含む、ビデオ符号器(430)の符号化動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピー符号器(445)でエントロピー符号化され得る。エントロピー符号器は、例えばハフマン符号化、可変長符号化、算術符号化などとして当業者に知られている技術にしたがってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
伝送器(440)は、エントロピー符号器(445)によって生成された符号化されたビデオシーケンスをバッファリングして、通信チャネル(460)を介した伝送の準備をすることができ、当該通信チャネルは、符号化されたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであり得る。伝送器(440)は、ビデオ符号器(430)からの符号化されたビデオデータを、例えば、符号化されたオーディオデータおよび/または補助的なデータストリーム(ソースは図示せず)など、伝送される他のデータとマージすることができる。
コントローラ(450)は、符号器(203)の動作を管理することができる。符号化中、コントローラ(450)は、各符号化されたピクチャに特定の符号化されたピクチャタイプを割り当ててもよく、これは、それぞれのピクチャに適用され得る符号化技術に影響を与え得る。例えば、ピクチャは多くの場合、イントラピクチャ(Iピクチャ)、予測ピクチャ(Pピクチャ)、または双方向予測ピクチャ(Bピクチャ)として割り当てられ得る。
イントラピクチャ(Iピクチャ)は、シーケンス内の任意の他のフレームを予測ソースとして使用することなく、符号化および復号化され得るピクチャであり得る。一部のビデオコーデックは、例えば、独立復号器リフレッシュ(Independent Decoder Refresh、IDR)ピクチャを含む異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのそれらの変形および対応するアプリケーションと特徴を知っている。
予測ピクチャ(Pピクチャ)は、多くとも1つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するイントラ予測、またはインター予測を使用して符号化および復号化されるピクチャであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、多くても2つの動きベクトルと参照インデックスとを使用して、イントラ予測またはインター予測を用いて符号化および復号化され得るものであり得る。同様に、複数の予測ピクチャは、単一ブロックの再構成に2つを超える参照ピクチャと関連するメタデータを使用することができる。
ソースピクチャは、一般的に、複数のサンプルブロック(例えば、それぞれ4x4、8x8、4x8、および/または16x16のサンプルブロック)に空間的に細分化され、ブロックごとに符号化され得る。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当によって決定されるように、他の(既に符号化された)ブロックを参照して予測的に符号化され得る。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、または同じピクチャの既に符号化されたブロックを参照して予測的に符号化(空間的予測またはイントラ予測)され得る。Pピクチャの画素ブロックは、以前に符号化された1つの参照ピクチャを参照して、非予測的に、空間的予測または時間的予測によって符号化され得る。Bピクチャのブロックは、1つまたは2つの以前に符号化された参照ピクチャを参照して、空間予測によって、または時間的予測によって、非予測的に符号化され得る。
ビデオ符号器(203)は、例えばITU-T Rec. H.265などの所定のビデオ符号化技術または規格にしたがって符号化動作を実行することができる。その動作中、ビデオ符号器(203)は、入力ビデオシーケンスで時間的および空間的冗長性を利用した予測符号化動作を含む様々な圧縮動作を実行することができる。したがって、符号化されたビデオデータは、使用されているビデオ符号化技術または規格によって指定されたシンタックスに準拠し得る。
一実施形態において、伝送器(440)は、符号化されたビデオとともに、追加データを伝送してもよい。ビデオ符号器(430)は、符号化されたビデオシーケンスの一部として、このようなデータを含み得る。追加データは、時間的、空間的、および/またはSNRエンハンスメントレイヤ、冗長ピクチャならびにスライスなどの他の形態の冗長データ、補充強化情報(SEI)メッセージ、ビジュアルユーザビリティ情報(Visual Usability Information、VUI)パラメータセットフラグメントなどを含み得る。
本開示の実施形態の特定の態様をより詳細に説明する前に、本説明の残りの部分で参照されるいくつかの用語を以下に紹介する。
「サブピクチャ」は、以降、場合によっては、意味的にグループ化され、変更された解像度で独立して符号化され得るサンプル、ブロック、マクロブロック、符号化ユニット、または同様のエンティティの矩形の配置を指す。1つまたは複数のサブピクチャがピクチャを形成することができる。符号化された1つまたは複数のサブピクチャが、符号化されたピクチャを形成することができる。1つまたは複数のサブピクチャを1つのピクチャに組み立てることができ、1つまたは複数のサブピクチャを1つのピクチャから抽出することができる。特定の環境では、1つまたは複数の符号化されたサブピクチャは、サンプルレベルに変換することなく、圧縮ドメインで符号化されたピクチャに組み立てられてもよく、同じまたは特定の他の場合では、1つまたは複数の符号化されたサブピクチャが、圧縮ドメインで符号化されたピクチャから抽出されてもよい。
「適応解像度変更(Adaptive Resolution Change)」(ARC)とは、以降、例えば参照ピクチャのリサンプリングによって、符号化されたビデオシーケンス内のピクチャまたはサブピクチャの解像度の変更を可能にするメカニズムを指す。「ARCパラメータ」とは、以降、適応解像度変更を実行するために必要な制御情報を指し、例えば、フィルタパラメータ、スケーリングファクタ、出力および/または参照ピクチャの解像度、様々な制御フラグなどを含むことができる。
上述の説明は、単一の意味的に独立した符号化されたビデオピクチャの符号化および復号化に着目している。独立したARCパラメータを有する複数のサブピクチャの符号化/復号化の意味およびその意味する追加の複雑さを説明する前に、ARCパラメータをシグナリングするための実施形態を説明する。
図6A~図6Cを参照すると、ARCパラメータをシグナリングするためのいくつかの新規の例示的な実施形態が示されている。各実施形態で述べたように、それらは、符号化効率、複雑さ、およびアーキテクチャの観点から特定の利点を有する。ビデオ符号化規格または技術は、ARCパラメータをシグナリングするために、これらの実施形態の1つまたは複数を実装してもよく、また、比較技術から知られている実施形態を含んでもよい。比較技術の実施形態は、図5A~図5Bに示された例を含む。新規の実施形態は、相互に排他的ではなく、アプリケーションのニーズ、関係する標準技術、または符号器の選択に基づいていずれかを使用できるように、比較技術の実施形態も含む規格または技術に含まれ得ると考えられる。
ARCパラメータのクラスは、以下を含むことができる。(1)アップサンプルおよび/またはダウンサンプルファクタを、XおよびY次元で分割または組み合わせたもの、または(2)アップサンプルおよび/またはダウンサンプルファクタに時間的次元を加えたもので、所定のピクチャ数に対して一定速度のズームイン/アウトを示すもの。上述の2つのうちのいずれかは、ファクタを含むテーブルを指す1つまたは複数のシンタックス要素の符号化または復号化に関係し得る。そのようなシンタックス要素は、実施形態においては長さが短くてもよい。
「解像度」は、入力ピクチャ、出力ピクチャ、参照ピクチャ、符号化されたピクチャの、結合された、または個別に、サンプル、ブロック、マクロブロック、CU、または他の任意の適切な粒度の単位での、XまたはY次元の解像度を指すことができる。複数の解像度がある場合(例えば、入力ピクチャに1つ、参照ピクチャに1つなど)、特定の場合では、1つの値のセットを別の値のセットから推測され得る。解像度は、例えば、フラグを使用することでゲート(gate)され得る。解像度のより詳細な例は、以下でさらに提供される。
H.263 Annex Pで使用されているような「ワーピング」座標は、上述のような適切な粒度であり得る。H.263 Annex Pは、そのようなワーピング座標をコード化する1つの効率的な手段を定義しているが、他の潜在的により効率的な手段を使用することも考えられる。例えば、Annex Pのワーピング座標の可変長の可逆的な「ハフマン」スタイルの符号化は、適切な長さのバイナリ符号化に置き換えることができ、バイナリ符号化されたワードの長さは、例えば、最大ピクチャサイズから導出され、場合によっては、最大ピクチャサイズの境界の外側の「ワーピング」を可能にするために、特定のファクタを乗じ、特定の値でオフセットすることができる。
アップサンプルおよび/またはダウンサンプルのフィルタパラメータを参照すると、最も簡単なケースでは、アップサンプリングおよび/またはダウンサンプリングのための単一のフィルタのみが存在する場合がある。しかし、特定の場合は、フィルタ設計においてより柔軟性を持たせることが有利であり得、これはフィルタパラメータのシグナリングによって実装され得る。そのようなパラメータは、可能なフィルタ設計のリストのインデックスを介して選択することができ、フィルタは完全に指定されてもよく(例えば、適切なエントロピー符号化技術を用いたフィルタ係数のリストを介して)、および/またはフィルタは任意の上述したメカニズムのいずれかなどにしたがってシグナリングされるアップサンプルおよび/またはダウンサンプルの比を介して暗黙的に選択され得る。
以降、本説明では、コードワードを介して示されるアップサンプルおよび/またはダウンサンプルファクタ(XおよびY次元の両方で使用される同じファクタ)の有限集合の符号化が行われる例を想定している。そのコードワードは、例えば、H.264およびH.265などのビデオ符号化仕様の特定のシンタックス要素に共通するExt-Golombコードを使用することで、有利に可変長符号化することができる。アップサンプルおよび/またはダウンサンプルファクタに対する値の1つの適切なマッピングは、例えば、以下の表1にしたがうことができる。
多くの同様のマッピングは、アプリケーションのニーズと、ビデオ圧縮技術または規格で利用可能なアップおよびダウンスケールメカニズムの能力とにしたがって考案することができる。この表は、より多くの値に拡張できる。値はまた、Ext-Golombコード以外のエントロピー符号化メカニズム(例えば、バイナリ符号化を使用する)によって表現されてもよく、これは、リサンプリングファクタが、例えばMANEによるビデオプロセスエンジン(符号器および復号器の先頭)自体の外側で関心を持つ場合に、特定の利点を有する可能性がある。解像度の変更が必要とされない(おそらく)最も一般的な場合に対して、バイナリ符号化を使用するよりも符号化効率の利点を有することができる短い(例えば、表1の2行目に示されるような単一ビットのみ)Ext-Golombコードを選択することができることに留意されたい。
テーブルのエントリ数、およびそのセマンティクスは、完全にまたは部分的に設定可能である。例えば、テーブルの基本的アウトラインは、シーケンスまたは復号器パラメータセットなどの「高」パラメータセットで伝達され得る。代替的または追加的に、1つまたは複数のそのようなテーブルは、ビデオ符号化技術または規格で定義されてもよく、例えば、復号器またはシーケンスパラメータセットを介して選択されてもよい。
以下に、上述のように符号化されたアップサンプルおよび/またはダウンサンプルファクタ(ARC情報)が、ビデオ符号化技術または規格シンタックスにどのように含まれ得るかについて説明する。同様の考察が、アップサンプルおよび/またはダウンサンプルフィルタを制御する1つまたは少数のコードワードに適用され得る。以下に、フィルタまたは他のデータ構造のために比較的大きなデータ量が必要になるときに関する説明も提供される。
図5Aを参照すると、H.263 Annex Pは、ピクチャヘッダ(501)内に、具体的にはH.263 PLUSPTYPE(503)ヘッダエクステンション内に、4つのワーピング座標の形態でARC情報(502)を含む。このような設計は、(a)利用可能なピクチャヘッダがあり、かつ(b)ARC情報の頻繁な変更が予想される場合には賢明であり得る。しかし、H.263スタイルのシグナリングを使用するときのオーバーヘッドは非常に高くなる可能性があり、また、ピクチャヘッダは一時的性質を持つ可能性があるため、スケーリングファクタはピクチャ境界には関係ない可能性がある。
図5Bを参照すると、JVCET-M135-v1は、ピクチャパラメータセット(504)内に位置するARC参照情報(505)(インデックス)を含み、当該ARC参照情報は、シーケンスパラメータセット(507)内に位置するターゲット解像度を含むテーブル(506)をインデックスする。シーケンスパラメータセット(507)のテーブル(506)に可能な解像度を配置することは、能力交換中に相互運用折衝ポイントとしてSPS(507)を使用することによって正当化され得る。解像度は、適切なピクチャパラメータセット(504)を参照することによって、ピクチャからピクチャへと、テーブル(506)の値によって設定された制限内で変更することができる。
図6A~図6Cを参照すると、本開示の以下の実施形態によって、ビデオビットストリーム内のARC情報を、例えば、本開示の復号器に伝達することができる。それらの実施形態の各々は、上述の比較技術に対して特定の利点を有する。当該実施形態は、同じビデオ符号化技術または規格に同時に存在し得る。
図6Aを参照する一実施形態において、リサンプリング(ズーム)ファクタなどのARC情報(509)は、例えば、スライスヘッダ、GOBヘッダ、タイルヘッダ、またはタイルグループヘッダなどのヘッダ(508)に存在し得る。一例として、図6Aでは、ヘッダ(508)をタイルグループヘッダとして図示している。このような構成は、ARC情報が、例えば表1に示されるような単一の可変長ue(v)または数ビットの固定長コードワードのように小さい場合には妥当であり得る。また、ARC情報をタイルグループヘッダに直接持たせることは、ARC情報をピクチャ全体ではなく、例えば、タイルグループヘッダに対応するタイルグループで表現されるサブピクチャに適用可能であるという付加的な利点を有し得る。加えて、ビデオ圧縮技術または規格が、ピクチャ全体の適応解像度変更(例えば、タイルグループに基づく適応解像度変更とは対照的に)のみを使用する場合でも、ARC情報をタイルグループヘッダ(例えば、H.263スタイルのピクチャヘッダに)に入れることは、エラー耐性の観点から特定の利点がある。上述の説明では、ARC情報(509)がタイルグループヘッダに存在することを説明したが、上述の説明は、ARC情報(509)が、例えば、スライスヘッダ、GOBヘッダ、またはタイルヘッダに存在する場合にも同様に適用できることが理解されるであろう。
図6Bを参照した同一または別の実施形態において、ARC情報(512)自体は、例えば、ピクチャパラメータセット、ヘッダパラメータセット、タイルパラメータセット、適応パラメータセットなどの適切なパラメータセット(511)に存在してもよい。一例として、図6Bは、パラメータセット(511)を適応パラメータセット(APS)として示す。そのパラメータセットの範囲は、有利には、ピクチャよりも大きくならないようにすることができる。例えば、パラメータセットの範囲は、タイルグループであり得る。ARC情報(512)の使用は、関連パラメータセットの有効化によって暗黙的に行われ得る。例えば、ビデオ符号化技術または規格がピクチャベースのARCのみを考慮する場合、ピクチャパラメータセットまたは同等のものが関連パラメータセットとして適切であり得る。
図6Cを参照した同一または別の実施形態において、ARC参照情報(513)は、タイルグループヘッダ(514)または同様のデータ構造に存在し得る。ARC参照情報(513)は、パラメータセット(516)で利用可能なARC情報(515)のサブセットを、単一ピクチャを超える範囲で参照することができる。例えば、パラメータセット(516)は、シーケンスパラメータセット(SPS)または復号パラメータセット(DPS)であり得る。
JVET-M0135-v1で使用されているタイルグループヘッダ、PPS、またはSPSからのPPSの有効化を意味する間接的な追加レベルは、シーケンスパラメータセットと同時に、ピクチャパラメータセットが能力折衝またはアナウンスのために使用され得るので不要であり得る。しかし、ARC情報が、例えばタイルグループでも表現されるサブピクチャに適用可能であるべき場合には、タイルグループに制限された有効化範囲を有するパラメータセット(例えば、適応パラメータセットまたはヘッダパラメータセット)が、良好な選択であり得る。また、ARC情報が無視できないサイズである場合(例えば、多数のフィルタ係数などのフィルタ制御情報を含む場合)、パラメータは、それらの設定は、同じパラメータセットを参照することで将来のピクチャまたはサブピクチャで再利用可能であるため、符号化効率の観点から、ヘッダを直接使用するよりも良好な選択である可能性がある。
複数のピクチャにまたがる範囲でシーケンスパラメータセットまたは他の上位パラメータセットを使用する場合は、特定の考察が適用され得る。
(1)ARC情報(515)をテーブルに記憶するためのパラメータセット(516)は、場合によってはシーケンスパラメータセットとすることができるが、他の場合には有利には復号器パラメータセットとすることができる。復号器パラメータセットは、複数のCVS、すなわち、符号化されたビデオストリーム、つまりセッション開始からセッションティアダウンまでのすべての符号化されたビデオビットの有効化範囲を有することができる。このような範囲は、可能なARCファクタが、場合によってはハードウェアに実装された復号器機能である可能性があり、ハードウェア機能は、任意のCVS(少なくとも一部のエンターテイメントシステムでは、長さが1秒以下のグループオブピクチャである)で変更されない傾向があるので、より適切であり得る。それにもかかわらず、いくつかの実施形態では、特に以下の点(2)に関連して、本明細書に記載されているように、シーケンスパラメータセットにARC情報テーブルを含めることができる。
(2)ARC参照情報(513)は、有利には、JVCET-M0135-v1のようにピクチャパラメータセットの中ではなく、ヘッダ(514)(例えば、ピクチャ/スライスタイル/GOB/タイルグループヘッダ、以降、タイルグループヘッダ)の中に直接配置することができる。その理由は、符号器が、例えばARC参照情報のようなピクチャパラメータセットの単一の値を変更したい場合、符号器が新しいPPSを生成し、その新しいPPSを参照しなければならない可能性があるからである。ARC参照情報のみが変更され、PPS内の量子化マトリクス情報などの他の情報が変更されない場合、そのような情報はかなり大きくなる可能性があり、新しいPPSを完成するために再送する必要がある。ARC参照情報は、ARC情報テーブルへのインデックスのような、変更される唯一の値である単一のコードワードであり得るので、例えば、すべての量子化マトリクス情報を再送することは厄介かつ無駄である。したがって、ARC参照情報を直接ヘッダ(例えば、ヘッダ(514))に配置することは、JVET-M0135-v1で提案されているようなPPSを介した間接を回避することができるため、符号化効率の観点からかなり良好であり得る。また、ARC参照情報をPPSに入れると、ピクチャパラメータセット有効化の範囲がピクチャであるため、ARC参照情報で参照されるARC情報は、必然的にサブピクチャではなくピクチャ全体に適用する必要があるという付加的な欠点もある。
同一または別の実施形態において、ARCパラメータのシグナリングは、図7A~図7Bに概説されているような詳細な例にしたがうことができる。図7A~図7Bはシンタックス図を示す。このようなシンタックス図の表記は、Cスタイルのプログラミングにほぼしたがっている。太字の行は、ビットストリームに存在するシンタックス要素を示し、太字でない行は、多くの場合、制御フローまたは変数の設定を示す。
ピクチャの(おそらく矩形の)部分に適用可能なヘッダのシンタックス構造の一例として、タイルグルーパヘッダ(600)は、可変長でExp-Golomb符号化されたシンタックス要素dec_pic_size_idx(602)(太字で示す)を条件付きで含むことができる。タイルグループヘッダ(600)におけるこのシンタックス要素の存在は、適応解像度(603)の使用によってゲートされ得る。ここで、適応解像度フラグの値は太字で示されていないが、これはフラグがシンタックス図で発生した時点でビットストリームに存在することを意味する。このピクチャまたはその一部に適応解像度が使用されるかどうかは、ビットストリームの内側または外側の任意の高レベルなシンタックス構造でシグナリングされ得る。図7A~図7Bに示される例では、適応解像度は、以下に概説されるように、シーケンスパラメータセット(610)でシグナリングされる。
図7Bは、シーケンスパラメータセット(610)の抜粋を示す。最初に示すシンタックス要素は、adaptive_pic_resolution_change_flag(611)である。真である場合、そのようなフラグは、特定の制御情報を必要とする可能性がある適応解像度の使用を示し得る。本実施例では、そのような制御情報は、シーケンスパラメータセット(610)およびタイルグループヘッダ(600)内のif()ステートメント(612)に基づくフラグの値に基づいて、条件付きで存在する。
適応解像度が使用される場合、この例では、サンプル単位で出力解像度(613)が符号化される。この例示的な実施形態での出力解像度(613)は、シンタックス要素output_pic_width_in_luma_samplesおよびoutput_pic_height_in_luma_samplesの両方を参照し、これらは一緒になって出力ピクチャの解像度を定義することができる。ビデオ符号化技術または規格では、いずれかの値に特定の制限を定義することができる。例えば、レベル定義によって、上述の2つのシンタックス要素の値の積であり得る合計出力サンプル数を制限することができる。また、特定のビデオ符号化技術もしくは規格、またはシステム規格などの外部技術もしくは規格は、数値の範囲(例えば、一方または両方の次元が2の累乗の数値で割り切れること)、またはアスペクト比(例えば、幅および高さが4:3または16:9などの比率であること)が制限されることがある。このような制限は、ハードウェアの実装を容易にするため、またはその他の理由で導入され得る。
特定のアプリケーションでは、符号器が復号器に対して、出力ピクチャサイズを暗黙的に想定するのではなく、特定の参照ピクチャサイズを使用するように指示することが望ましい場合がある。この例では、シンタックス要素reference_pic_size_present_flag(614)は、参照ピクチャ次元(615)の条件付き存在をゲートする(ここでも、数字は例示的な実施形態の幅および高さの両方を参照する)。
図7Bは、さらに、可能な復号化ピクチャの幅および高さのテーブルを示す。このようなテーブルは、例えば、テーブル表示(616)(例えば、シンタックス要素num_dec_pic_size_in_luma_samples_minus1)によって表現することができる。シンタックス要素の「minus1」は、そのシンタックス要素の値の解釈を参照することができる。例えば、シンタックス要素の符号化値が0の場合、1つのテーブルエントリが存在する。コード値が5であれば、6つのテーブルエントリが存在する。テーブル内の各「ライン」について、復号化されたピクチャの幅および高さは、次にテーブルエントリ(617)としてシンタックスに含まれる。
提示されたテーブルエントリ(617)は、タイルグループヘッダ(600)のシンタックス要素dec_pic_size_idx(602)を使用してインデックス化することができ、それによって、タイルグループごとに異なる復号化サイズ(実質的にはズームファクタ)を可能にする。
例えばVP9などのビデオ符号化技術または規格は、空間スケーラビリティを可能にするために、時間的スケーラビリティに関連して、特定の形態の参照ピクチャのリサンプリング(本開示の実施形態とは全く異なってシグナリングされ得る)を実装することによって、空間スケーラビリティをサポートする。特に、特定の参照ピクチャは、空間エンハンスメントレイヤのベースを形成するために、ARCスタイルの技術を使用して、より高い解像度にアップサンプリングされ得る。このようなアップサンプリングされたピクチャは、詳細を追加するために、高解像度で通常の予測メカニズムを使用して精緻化することができる。
本開示の実施形態は、そのような環境で使用することができる。特定の場合では、同一または別の実施形態において、NALユニットヘッダ内の値、例えばTemporal IDフィールドは、一時的レイヤだけでなく空間レイヤも示すために使用することができる。このようにすることは、特定のシステム設計に対して特定の利点があり、例えば、NALユニットヘッダのTemporal ID値に基づいて一時的レイヤ選択転送のために生成および最適化された既存のSelected Forwarding Unit(SFU)は、スケーラブルな環境に変更なしで使用できる。それを可能にするために、本開示の実施形態は、符号化されたピクチャサイズと、NALユニットヘッダのTemporal IDフィールドによって示される一時的レイヤとの間のマッピングを含み得る。
一部のビデオ符号化技術では、アクセスユニット(AU)は、時間内の所定のインスタンスでそれぞれのピクチャ/スライス/タイル/NALユニットビットストリームにキャプチャされて構成された、符号化されたピクチャ、スライス、タイル、NALユニットなどを参照することができる。そのような時間内のインスタンスは、構成時間であり得る。
HEVCおよび他の特定のビデオ符号化技術では、復号ピクチャバッファ(DPB)に記憶された複数の参照ピクチャのうち、選択された参照ピクチャを示すために、ピクチャオーダーカウント(POC)値を使用することができる。アクセスユニット(AU)が1つまたは複数のピクチャ、スライス、またはタイルを含む場合、同じAUに属する各ピクチャ、スライス、またはタイルは、同じPOC値を保持することができ、このことから、それらが同じ構成時間のコンテンツから生成されたことを導出することができる。換言すれば、2つのピクチャ/スライス/タイルが所定の同じPOC値を保持するシナリオでは、2つのピクチャ/スライス/タイルが同じAUに属し、同じ構成時間を有すると判断することができる。逆に、異なるPOC値を有する2つのピクチャ/スライス/タイルは、それらのピクチャ/スライス/タイルが異なるAUに属し、異なる構成時間を有することを示すことができる。
本開示の一実施形態において、アクセスユニットが異なるPOC値を有するピクチャ、スライス、またはタイルを含み得るという点で、前述の厳格な関係を緩和することができる。AU内で異なるPOC値を許容することにより、POC値を使用して、同一のプレゼンテーション時間を有する潜在的に独立して復号化可能なピクチャ/スライス/タイルを識別することが可能になる。したがって、本開示の実施形態は、以下で詳しく記載されるように、参照ピクチャ選択シグナリング(例えば、参照ピクチャセットシグナリングまたは参照ピクチャリストシグナリング)を変更することなく、複数のスケーラブルなレイヤのサポートを可能にすることができる。
一実施形態において、POC値のみから、異なるPOC値を有する他のピクチャ/スライス/タイルに関して、ピクチャ/スライス/タイルが属するAUを識別できることが依然として望ましい。これは、以下に説明するような実施形態において達成され得る。
同一または他の実施形態において、アクセスユニットカウント(AUC)は、NALユニットヘッダ、スライスヘッダ、タイルグループヘッダ、SEIメッセージ、パラメータセットまたはAUデリミタなどの高レベルシンタックス構造でシグナリングされ得る。AUCの値は、どのNALユニット、ピクチャ、スライス、またはタイルが所定のAUに属しているかを識別するために使用され得る。AUCの値は、個別の構成時間インスタンスに対応し得る。AUC値は、POC値の倍数に等しくてもよい。POC値を整数値で除算することにより、AUC値を算出することができる。特定の場合では、除算演算は、復号器の実装に特定の負担をかけることがある。そのような場合、AUC値のナンバリング空間における小さな制限は、本開示の実施形態によって実行されるシフト演算によって除算演算の代替を可能にし得る。例えば、AUC値は、POC値範囲の最上位ビット(MSB)値に等しい可能性がある。
同一の実施形態において、AUあたりのPOCサイクルの値(例えば、シンタックス要素poc_cycle_au)は、NALユニットユニットヘッダ、スライスヘッダ、タイルグループヘッダ、SEIメッセージ、パラメータセットまたはAUデリミタなどの高レベルシンタックス構造でシグナリングされ得る。poc_cycle_auシンタックス要素は、いくつの異なる連続したPOC値を同じAUに関連付けることができるかを示し得る。例えば、poc_cycle_auの値が4に等しい場合、POC値が0~3(両端を含む)に等しいピクチャ、スライスまたはタイルは、AUC値が0に等しいAUに関連付けられ、POC値が4~7(両端を含む)に等しいピクチャ、スライスまたはタイルは、AUC値が1に等しいAUに関連付けられる。したがって、AUCの値は、POC値をpoc_cycle_auの値で除算することによって、本開示の実施形態によって推測され得る。
同一または別の実施形態において、poc_cycle_auの値は、例えばビデオパラメータセット(VPS)に位置する、符号化されたビデオシーケンスにおける空間またはSNRレイヤの数を識別する情報から導出することができる。そのような可能性のある関係について、簡単に以下に説明する。上述のような導出は、VPSの数ビットを節約することができ、したがって符号化効率を向上させる可能性があるが、ピクチャなどのビットストリームの所定の小部分についてpoc_cycle_auを最小化できるように、ビデオパラメータセットの下の階層的に適切な高レベルのシンタックス構造でpoc_cycle_auを明示的に符号化することが有利であり得る。この最適化は、POC値(および/またはPOCを間接的に参照するシンタックス要素の値)が低レベルシンタックス構造で符号化され得るため、上述の導出プロセスによって節約できるよりも多くのビットを節約できる可能性がある。
同一または別の実施形態において、図9Aは、VPS(630)またはSPSにおけるvps_poc_cycle_au(632)のシンタックス要素をシグナリングするためのシンタックステーブルの一例を示し、当該シンタックステーブルは、符号化されたビデオシーケンスにおけるすべてのピクチャ/スライスに使用されるpoc_cycle_auを示し、図9Bは、スライスヘッダ(640)における現在のスライスのpoc_cycle_auを示すslice_poc_cycle_au(642)のシンタックス要素をシグナリングするシンタックステーブルの一例を示す。POC値がAUごとに一様に増加する場合、VPS(630)のvps_contant_poc_cycle_per_au(634)が1に等しく設定され、VPS(630)においてvps_poc_cycle_au(632)がシグナリングされる。この場合、slice_poc_cycle_au(642)は明示的にはシグナリングされず、各AUのAUCの値は、POCの値をvps_poc_cycle_au(632)で除算して算出される。POC値がAUごとに一様に増加しない場合、VPS(630)のvps_contant_poc_cycle_per_au(634)は0に等しく設定される。この場合、vps_access_unit_cntはシグナリングされず、slice_access_unit_cntは各スライスまたはピクチャのスライスヘッダでシグナリングされる。slice_access_unit_cntの値は、スライスまたはピクチャごとに異なる可能性がある。各AUのAUCの値は、POCの値をslice_poc_cycle_au(642)で除算することによって算出される。
図10は、本実施形態の関連するワークフローを説明するためのブロック図である。例えば、復号器(または符号器)は、VPS/SPSを解析して、AUあたりのPOCサイクルが一定であるか否かを識別する(652)。その後、復号器(または符号器)は、符号化されたビデオシーケンス内で、AUあたりのPOCサイクルが一定であるか否かに基づいて、判断を行う(654)。すなわち、AUあたりのPOCサイクルが一定であれば、復号器(または符号器)は、シーケンスレベルのpoc_cycle_au値とPOC値からアクセスユニットカウントの値を算出する(656)。代替的に、AUあたりのPOCサイクルが一定でない場合、復号器(または符号器)は、ピクチャレベルのpoc_cycle_au値とPOC値から、アクセスユニットカウントの値を算出する(658)。いずれの場合も、その後、復号器(または符号器)は、例えば、VPS/SPSを解析し、AUあたりのPOCサイクルが一定であるか否かを識別することにより、処理を繰り返すことができる(662)。
同一または他の実施形態において、ピクチャ、スライス、またはタイルのPOCの値が異なっていても、同じAUC値を有するAUに対応するピクチャ、スライス、またはタイルは、同じ復号化または出力時間インスタンスに関連付けられてもよい。したがって、同じAU内のピクチャ、スライス、またはタイル間のインターパーシング/復号化の依存関係なしに、同じAUに関連付けられたピクチャ、スライス、またはタイルのすべてまたはサブセットは、並列に復号化することができ、同じ時間インスタンスで出力することができる。
同一または他の実施形態において、ピクチャ、スライス、またはタイルのPOCの値が異なっていても、同じAUC値を有するAUに対応するピクチャ、スライス、またはタイルは、同じ構成/表示時間インスタンスに関連付けられ得る。構成時間がコンテナフォーマットに含まれている場合、ピクチャが異なるAUに対応していても、ピクチャが同じ構成時間を有していれば、ピクチャを同じ時間インスタンスで表示することができる。
同一または他の実施形態において、各ピクチャ、スライス、またはタイルは、同じAUにおいて同じ一時的識別子(例えば、シンタックス要素temporal_id)を有してもよい。時間インスタンスに対応するピクチャ、スライス、もしくはタイルのすべてまたはサブセットは、同じ一時的サブレイヤに関連付けられてもよい。同一または他の実施形態において、各ピクチャ、スライス、またはタイルは、同じAUにおいて、同じまたは異なる空間レイヤid(例えば、シンタックス要素layer_id)を有してもよい。時間インスタンスに対応するピクチャ、スライス、もしくはタイルのすべてまたはサブセットは、同じまたは異なる空間レイヤに関連付けられてもよい。
図8は、temporal_id、layer_id、および適応解像度変更を伴うPOCおよびAUC値の組み合わせを有するビデオシーケンス構造(680)の一例を示す。この例では、それぞれ、AUC=0の第1のAUのピクチャ、スライス、またはタイルは、temporal_id=0およびlayer_id=0または1、を有することができ、AUC=1の第2のAUのピクチャ、スライス、またはタイルは、temporal_id=1およびlayer_id=0または1、を有することができる。POCの値は、temporal_idおよびlayer_idの値に関わらず、ピクチャごとに1ずつ増加する。この例では、poc_cycle_auの値は、2に等しくてもよい。一実施形態において、poc_cycle_auの値は、(空間スケーラビリティ)レイヤの数に等しく設定され得る。この例では、POCの値は2ずつ増加し、AUCの値は1ずつ増加する。一例として、図8は、第1のAU(AUC=0)内に、POC0、TID0、およびLID0を有するIスライス(681)と、POC1、TID0、およびLID1を有するBスライス(682)とを示す。第2のAU(AUC=1)内において、図8は、POC2、TID1、およびLID0を有するBスライス(683)と、POC3、TID1、およびLID1を有するBスライス(684)とを示す。第3のAU(AUC=3)内では、図8は、POC4、TID0、およびLID0を有するBスライス(685)と、POC5、TID0、およびLID1を有するBスライス(686)とを示す。
上述の実施形態において、ピクチャ間またはレイヤ間予測構造および参照ピクチャ表示のすべてまたはサブセットは、HEVCにおける既存の参照ピクチャセット(RPS)シグナリングまたは参照ピクチャリスト(RPL)シグナリングを使用することによってサポートされ得る。RPSまたはRPLでは、選択された参照ピクチャは、現在のピクチャと選択された参照ピクチャとの間のPOCの値またはPOCのデルタ値をシグナリングすることによって示される。本開示の実施形態において、RPSおよびRPLは、シグナリングを変更することなく、ピクチャ間またはレイヤ間予測構造を示すために使用することができるが、以下の制限がある。参照ピクチャのtemporal_idの値が、現在のピクチャのtemporal_idの値よりも大きい場合、現在のピクチャは、動き補償またはその他の予測のために参照ピクチャを使用することができない。参照ピクチャのlayer_idの値が、現在のピクチャのlayer_idの値よりも大きい場合、現在のピクチャは、動き補償またはその他の予測のために参照ピクチャを使用することができない。
同一および他の実施形態において、時間的動きベクトル予測のためのPOC差に基づく動きベクトルスケーリングは、アクセスユニット内の複数のピクチャにわたって無効化され得る。したがって、各ピクチャはアクセスユニット内で異なるPOC値を有することができるが、同じAU内の異なるPOCを有する参照ピクチャは、同じ時間インスタンスを有する参照ピクチャとみなされ得るため、アクセスユニット内で、動きベクトルがスケーリングされず、時間的動きベクトル予測に使用され得ない。したがって、本実施形態では、動きベクトルスケーリング機能は、参照ピクチャが現在のピクチャに関連するAUに属する場合に1を返し得る。
同一および他の実施形態において、時間的動きベクトル予測のためのPOC差に基づく動きベクトルスケーリングは、参照ピクチャの空間解像度が現在のピクチャの空間解像度と異なる場合、複数のピクチャにわたって任意に無効化され得る。動きベクトルのスケーリングが許容される場合、動きベクトルは、POC差と、現在のピクチャおよび参照ピクチャ間の空間解像度比との両方に基づいてスケーリングされ得る。
同一または別の実施形態において、特にpoc_cycle_auが不均一な値を有する場合(vps_contant_poc_cycle_per_au==0の場合)、時間的動きベクトル予測のために、POC差の代わりにAUC差に基づいて動きベクトルがスケーリングされ得る。それ以外の場合(vps_contant_poc_cycle_per_au==1の場合)は、AUC差に基づく動きベクトルのスケーリングは、POC差に基づく動きベクトルのスケーリングと同一であり得る。
同一または別の実施形態において、動きベクトルがAUC差に基づいてスケーリングされる場合、現在のピクチャと同じAUの(同じAUC値を有する)参照動きベクトルは、AUC差に基づいてスケーリングされず、現在のピクチャと参照ピクチャとの間の空間解像度比に基づいて、スケーリングなし、またはスケーリングありで動きベクトル予測に使用される。
同一および他の実施形態において、AUC値は、AUの境界を識別するために使用され、AU粒度を有する入力および出力タイミングを必要とする仮想参照復号器(HRD)動作のために使用される。ほとんどの場合、AUの最上位レイヤの復号化ピクチャが、表示のために出力され得る。出力ピクチャの識別には、AUC値とlayer_id値とを使用することができる。
一実施形態において、ピクチャは、1つまたは複数のサブピクチャを含むことができる。各サブピクチャは、ピクチャのローカル領域または全領域をカバーすることができる。サブピクチャによってサポートされる領域は、別のサブピクチャによってサポートされる領域と重なっていても、重なっていなくてもよい。1つまたは複数のサブピクチャによって構成される領域は、ピクチャの全領域をカバーしても、カバーしていなくてもよい。ピクチャがサブピクチャから構成されている場合、サブピクチャによってサポートされる領域は、ピクチャによってサポートされる領域と同一であってもよい。
同一の実施形態において、サブピクチャは、符号化されたピクチャに用いられる符号化方法と同様の符号化方法によって符号化されてもよい。サブピクチャは、独立して符号化されてもよいし、別のサブピクチャまたは符号化されたピクチャに依存して符号化されてもよい。サブピクチャは、別のサブピクチャまたは符号化されたピクチャから任意の解析依存関係を有していても、有していなくてもよい。
同一の実施形態において、符号化されたサブピクチャは、1つまたは複数のレイヤに含まれていてもよい。レイヤ内の符号化されたサブピクチャは、異なる空間解像度を有してもよい。オリジナルのサブピクチャは、空間的に再サンプリング(アップサンプリングまたはダウンサンプリング)され、異なる空間解像度パラメータで符号化され、レイヤに対応するビットストリームに含まれてもよい。
同一または別の実施形態において、Wがサブピクチャの幅を示し、Hがサブピクチャの高さをそれぞれ示す(W、H)を有するサブピクチャは、符号化されて、レイヤ0に対応する符号化ビットストリームに含まれてもよい。一方、オリジナルの空間解像度を有するサブピクチャから、(W*Sw,k、H*Sh,k)でアップサンプリングされた(またはダウンサンプリングされた)サブピクチャは、符号化され、レイヤkに対応する符号化ビットストリームに含まれてもよく、ここで、Sw,k、Sh,kは、水平方向および垂直方向のリサンプリング比を示す。Sw,k、Sh,kの値が1よりも大きい場合、リサンプリングはアップサンプリングに等しい。一方、Sw,k、Sh,kの値が1よりも小さい場合、リサンプリングはダウンサンプリングに等しい。
同一または別の実施形態において、レイヤの符号化されたサブピクチャは、同じサブピクチャまたは異なるサブピクチャの別のレイヤの符号化されたサブピクチャと異なる視覚品質を有し得る。例えば、レイヤ、nにおけるサブピクチャiは、量子化パラメータQi,nで符号化され、一方、レイヤmにおけるサブピクチャjは、量子化パラメータQj,mで符号化される。
同一または別の実施形態において、レイヤの符号化されたサブピクチャは、同じローカル領域の別のレイヤの符号化されたサブピクチャから、任意の解析または復号化の依存関係がなく、独立して復号化可能であり得る。同じローカル領域の別のサブピクチャレイヤを参照することなく、独立して復号化可能であり得るサブピクチャレイヤは、独立したサブピクチャレイヤである。独立したサブピクチャレイヤの符号化されたサブピクチャは、同じサブピクチャレイヤの以前に符号化されたサブピクチャからの復号化または解析依存関係を有していても、有していなくてもよいが、符号化されたサブピクチャは、別のサブピクチャレイヤの符号化されたピクチャからの依存関係を有していなくてもよい。
同一または別の実施形態において、レイヤの符号化されたサブピクチャは、同じローカル領域の別のレイヤの符号化されたサブピクチャから、任意の解析または復号化の依存関係を伴い、従属的に復号化可能であり得る。同じローカル領域の別のサブピクチャレイヤを参照して、従属的に復号化可能であり得るサブピクチャレイヤは、従属したサブピクチャレイヤである。従属したサブピクチャ内の符号化されたサブピクチャは、同じサブピクチャに属する符号化されたサブピクチャ、同じサブピクチャレイヤの以前に符号化されたサブピクチャ、または両方の参照サブピクチャを参照することができる。
同一または別の実施形態において、符号化されたサブピクチャは、1つまたは複数の独立したサブピクチャレイヤと、1つまたは複数の従属したサブピクチャレイヤとを含む。しかし、符号化されたサブピクチャには、少なくとも1つの独立したサブピクチャレイヤが存在してもよい。独立したサブピクチャレイヤは、レイヤ識別子(例えばシンタックス要素layer_id)の値を有することができ、このレイヤ識別子は、NALユニットヘッダまたは別の高レベルのシンタックス構造に存在する可能性があり、0に等しい。layer_idが0に等しいサブピクチャレイヤは、ベースサブピクチャレイヤであり得る。
同一または別の実施形態において、ピクチャは、1つまたは複数の前景サブピクチャと、1つの背景サブピクチャとを含み得る。背景サブピクチャによってサポートされる領域は、ピクチャの領域と等しくてもよい。前景サブピクチャによってサポートされる領域は、背景サブピクチャによってサポートされる領域と重なってもよい。背景サブピクチャはベースサブピクチャレイヤであり得、前景サブピクチャは非ベース(エンハンスメント)サブピクチャレイヤであり得る。1つまたは複数の非ベースサブピクチャレイヤは、復号化のために同じベースレイヤを参照することができる。layer_idがaに等しい各非ベースサブピクチャレイヤは、layer_idがbに等しい非ベースサブピクチャレイヤを参照することができ、ここでaはbよりも大きい。
同一または別の実施形態において、ピクチャは、背景サブピクチャを伴うか、または伴わない1つまたは複数の前景サブピクチャを含むことができる。各サブピクチャは、それ自体のベースサブピクチャレイヤと、1つまたは複数の非ベース(エンハンスメント)レイヤとを有することができる。各ベースサブピクチャレイヤは、1つまたは複数の非ベースサブピクチャレイヤによって参照され得る。layer_idがaに等しい各非ベースサブピクチャレイヤは、layer_idがbに等しい非ベースサブピクチャレイヤを参照することができ、ここでaはbよりも大きい。
同一または別の実施形態において、ピクチャは、背景サブピクチャを伴うか、または伴わない1つまたは複数の前景サブピクチャを含むことができる。(ベースまたは非ベース)サブピクチャレイヤの各符号化されたサブピクチャは、同じサブピクチャに属する1つまたは複数の非ベースレイヤサブピクチャと、同じサブピクチャに属さない1つまたは複数の非ベースレイヤのサブピクチャとによって参照され得る。
同一または別の実施形態において、ピクチャは、背景サブピクチャを伴うか、または伴わない1つまたは複数の前景サブピクチャを含むことができる。レイヤaのサブピクチャは、同じレイヤの複数のサブピクチャにさらに分割され得る。レイヤbの1つまたは複数の符号化されたサブピクチャは、レイヤaの分割されたサブピクチャを参照することができる。
同一または別の実施形態において、符号化されたビデオシーケンス(CVS)は、符号化されたピクチャのグループであり得る。CVSは、1つまたは複数の符号化されたサブピクチャシーケンス(CSPS)を含むことができ、ここでCSPSは、ピクチャの同じローカル領域をカバーする符号化されたサブピクチャのグループであり得る。CSPSは、符号化されたビデオシーケンスの時間的解像度と同じまたは異なる時間的解像度を有することができる。
同一または別の実施形態において、CSPSは、符号化され、1つまたは複数のレイヤに含まれてもよい。CSPSは、1つまたは複数のCSPSレイヤを含んでもよく、または1つまたは複数のCSPSレイヤから構成されてもよい。CSPSに対応する1つまたは複数のCSPSレイヤを復号化することで、同じローカル領域に対応するサブピクチャのシーケンスを再構成することができる。
同一または別の実施形態において、CSPSに対応するCSPSレイヤの数は、別のCSPSに対応するCSPSレイヤの数と同一であっても異なっていてもよい。
同一または別の実施形態において、CSPSレイヤは、別のCSPSレイヤと異なる時間的解像度(例えば、フレームレート)を有してもよい。オリジナルの(非圧縮の)サブピクチャシーケンスは、時間的に再サンプリング(アップサンプリングまたはダウンサンプリング)され、異なる時間的解像度パラメータで符号化され、レイヤに対応するビットストリームに含まれてもよい。
同一または別の実施形態において、フレームレートFを有するサブピクチャシーケンスは符号化されて、レイヤ0に対応する符号化ビットストリームに含まれてもよく、一方、オリジナルのサブピクチャシーケンスから、F*St,kで時間的にアップサンプリングされた(またはダウンサンプリングされた)サブピクチャシーケンスは、符号化され、レイヤkに対応する符号化ビットストリームに含まれてもよく、ここでSt,kは、レイヤkの時間的サンプリング比を示す。St,kの値が1よりも大きい場合、時間的リサンプリングプロセスは、フレームレートのアップコンバージョンと等しい。一方、St,kの値が1よりも小さい場合、時間的リサンプリングプロセスは、フレームレートのダウンコンバージョンと等しい。
同一または別の実施形態において、動き補償または任意のレイヤ間予測のために、CSPSレイヤaを有するサブピクチャがCSPSレイヤbを有するサブピクチャによって参照される場合、CSPSレイヤaの空間解像度がCSPSレイヤbの空間解像度と異なる場合、CSPSレイヤaの復号化された画素がリサンプリングされ参照に使用される。リサンプリングプロセスは、アップサンプリングフィルタリング、またはダウンサンプリングフィルタリングを必要とし得る。
図11は、layer_idが0に等しい背景ビデオCSPSと、複数の前景CSPSレイヤとを含むビデオストリームの例を示す。符号化されたサブピクチャは、1つまたは複数のエンハンスメントCSPSレイヤ(704)含むことができるが、いずれの前景CSPSレイヤにも属さない背景領域は、ベースレイヤ(702)を含むことができる。ベースレイヤ(702)は、背景領域と前景領域とを含み、エンハンスメントCSPSレイヤ(704)は、前景領域を含むことができる。エンハンスメントCSPSレイヤ(704)は、同じ領域において、ベースレイヤ(702)よりも良好な視覚的品質を有することができる。エンハンスメントCSPSレイヤ(704)は、同じ領域に対応する、ベースレイヤ(702)の再構成された画素および動きベクトルを参照することができる。
同一または別の実施形態において、ベースレイヤ(702)に対応するビデオビットストリームは、トラックに含まれ、各サブピクチャに対応するCSPSレイヤ(704)は、ビデオファイルの分割されたトラックに含まれる。
同一または別の実施形態において、ベースレイヤ(702)に対応するビデオビットストリームはトラックに含まれ、同じlayer_idを有するCSPSレイヤ(704)は分割されたトラックに含まれる。この例では、レイヤkに対応するトラックは、レイヤkに対応するCSPSレイヤ(704)のみを含む。
同一または別の実施形態において、各サブピクチャの各CSPSレイヤ(704)は、分割されたトラックに記憶される。各トラックは、1つまたは複数の他のトラックからの解析または復号化の依存関係を有していても、有していなくてもよい。
同一または別の実施形態において、各トラックは、すべてのサブピクチャまたはサブピクチャのサブセットのCSPSレイヤ(704)のレイヤiからレイヤjに対応するビットストリームを含んでもよく、ここで、0<i=<j=<kであり、kはCSPSの最上位レイヤである。
同一または別の実施形態において、ピクチャは、深度マップ、アルファマップ、3Dジオメトリデータ、占有マップなどを含む1つまたは複数の関連メディアデータを含むか、またはそれらから構成される。そのような関連する時限メディアデータは、それぞれが1つのサブピクチャに対応する1つまたは複数のデータサブストリームに分割することができる。
同一または別の実施形態において、図12は、マルチレイヤサブピクチャ法に基づくビデオ会議の例を示す。ビデオストリームには、背景ピクチャに対応する1つのベースレイヤビデオビットストリームと、前景サブピクチャに対応する1つまたは複数のエンハンスメントレイヤビデオビットストリームとが含まれる。各エンハンスメントレイヤのビデオビットストリームは、CSPSレイヤに対応することができる。ディスプレイには、ベースレイヤ(712)に対応するピクチャがデフォルトで表示される。ベースレイヤ(712)は、1つまたは複数のユーザのピクチャインピクチャ(PIP)を含むことができる。クライアントの制御によって特定のユーザが選択されると、選択されたユーザに対応するエンハンスメントCSPSレイヤ(714)が復号化され、強化された品質または空間解像度で表示される。
図13は、実施形態の動作を示す図である。実施形態では、復号器は、例えば、1つのベースレイヤおよび1つまたは複数のエンハンスメントCSPSレイヤ(722)などの複数のレイヤを含むビデオビットストリームを復号化することができる。続いて、復号器は、背景領域および1つまたは複数の前景サブピクチャを識別し(724)、特定のサブピクチャ領域が選択されるかどうかを決定することができる(726)。例えば、ユーザのPIPに対応する特定のサブピクチャ領域が選択された場合(YES)、復号器は、選択されたユーザに対応する強化されたサブピクチャを復号化して表示することができる(728)。例えば、復号器は、エンハンスメントCSPSレイヤ(714)に対応する画像を復号化して表示することができる。特定のサブピクチャ領域が選択されていない場合(NO)、復号器は、背景領域を復号化して表示することができる(730)。例えば、復号器は、ベースレイヤ(712)に対応する画像を復号化して表示してもよい。
同一または別の実施形態において、ネットワークミドルボックス(ルータなど)は、その帯域幅に基づいてユーザに送信するレイヤのサブセットを選択することができる。ピクチャ/サブピクチャ編成は、帯域幅適応のために使用することができる。例えば、ユーザが帯域幅を有さない場合、ルータはレイヤをストリップするか、重要性または使用された設定に基づいて一部のサブピクチャを選択する。一実施形態において、このようなプロセスは、帯域幅に適応するために動的に行われてもよい。
図14は、360ビデオの使用例を示す。球状の360ピクチャ(742)が平面ピクチャに投影されるとき、投影される球状の360ピクチャ(742)は、ベースレイヤ(744)として複数のサブピクチャ(745)に分割され得る。サブピクチャ(745)のうちの特定の1つのエンハンスメントレイヤ(746)を符号化して、クライアントに伝送することができる。復号器は、すべてのサブピクチャ(745)を含むベースレイヤ(744)と、サブピクチャ(745)のうちの選択された1つのエンハンスメントレイヤ(746)との両方を復号化することができる。現在のビューポートが、サブピクチャ(745)のうちの選択された1つのピクチャと同一である場合、表示されるピクチャは、エンハンスメントレイヤ(746)を有する復号化されたサブピクチャ(745)を用いて、より高い品質を有することができる。それ以外の場合、ベースレイヤ(744)を有する復号化されたピクチャは、より低い品質で表示され得る。
同一または別の実施形態において、表示のための任意のレイアウト情報は、補助情報(SEIメッセージまたはメタデータなど)としてファイルに存在してもよい。シグナリングされたレイアウト情報に基づいて、1つまたは複数の復号化されたサブピクチャが再配置されて表示され得る。レイアウト情報は、ストリーミングサーバまたは放送局によってシグナリングされてもよく、ネットワークエンティティまたはクラウドサーバによって再生されてもよく、ユーザのカスタマイズされた設定によって決定されてもよい。
一実施形態において、入力ピクチャが1つまたは複数の(矩形の)サブ領域に分割される場合、各サブ領域は独立レイヤとして符号化されてもよい。ローカル領域に対応する各独立レイヤは、固有のlayer_id値を有することができる。各独立レイヤに対しては、サブピクチャサイズと位置情報とがシグナリングされ得る。例えば、ピクチャサイズ(幅、高さ)と、左上隅のオフセット情報(x_offset、y_offset)とがシグナリングされ得る。図15Aは、分割されたサブピクチャ(752)のレイアウトの一例を示す図であり、図15Bは、サブピクチャ(752)のうちの対応する1つのサブピクチャサイズおよび位置情報の一例を示す図であり、図16は、対応するピクチャ予測構造を示す図である。サブピクチャサイズとサブピクチャ位置とを含むレイアウト情報は、パラメータセット、スライスもしくはタイルグループのヘッダ、またはSEIメッセージなどの高レベルシンタックス構造でシグナリングされ得る。
同一の実施形態において、独立レイヤに対応する各サブピクチャは、AU内で固有のPOC値を有してもよい。DPBに記憶されたピクチャの中の参照ピクチャを、RPSまたはRPL構造のシンタックス要素を用いることによって示す場合、レイヤに対応する各サブピクチャのPOC値を使用することができる。
同一または別の実施形態において、(レイヤ間)予測構造を示すために、layer_idを使用せず、POC(デルタ)値を使用することができる。
同一の実施形態において、レイヤ(またはローカル領域)に対応するPOC値がNに等しいサブピクチャは、動き補償予測のために、同じレイヤ(または同じローカル領域)に対応するPOC値がK+Nに等しいサブピクチャの参照ピクチャとして使用しても、使用しなくてもよい。ほとんどの場合、数Kの値は、(独立した)レイヤの最大数に等しくてもよく、これは、サブ領域の数と同一であってもよい。
同一または別の実施形態において、図17~図18は、図15A~図15Bおよび図16の拡張ケースを示す。入力ピクチャが複数(例えば4つ)のサブ領域に分割される場合、各ローカル領域は1つまたは複数のレイヤで符号化され得る。この場合、独立レイヤの数は、サブ領域の数と等しくてもよく、1つまたは複数のレイヤがサブ領域に対応していてもよい。したがって、各サブ領域は、1つまたは複数の独立レイヤおよび0以上の従属レイヤで符号化されてもよい。
同一の実施形態において、図17を参照すると、入力ピクチャは、左上サブ領域(762)、右上サブ領域(763)、左下サブ領域(764)、および右下サブ領域(765)を含む、4つのサブ領域に分割することができる。右上サブ領域(763)は、レイヤ1とレイヤ4との2つのレイヤとして符号化されてもよく、右下サブ領域(765)は、レイヤ3とレイヤ5との2つのレイヤとして符号化されてもよい。この場合、レイヤ4は、動き補償予測のためにレイヤ1を参照し、レイヤ5は、動き補償のためにレイヤ3を参照することができる。
同一または別の実施形態において、レイヤの境界にわたるループ内フィルタリング(非ブロック化フィルタリング、適応ループ内フィルタリング、リシェイパ(reshaper)、バイラテラルフィルタリング(bilateral filtering)、または任意の深層学習に基づくフィルタリングなど)は、(任意に)無効化することができる。
同一または別の実施形態において、レイヤの境界にわたる動き補償予測またはブロック内コピーは、(任意に)無効化することができる。
同一または別の実施形態において、サブピクチャの境界での動き補償予測またはループ内フィルタリングのための境界パディングは、任意に処理することができる。境界パディングが処理されるか否かを示すフラグは、パラメータセット(VPS、SPS、PPS、またはAPS)、スライスもしくはタイルグループヘッダ、またはSEIメッセージなどの高レベルシンタックス構造でシグナリングされ得る。
同一または別の実施形態において、サブ領域(またはサブピクチャ)のレイアウト情報は、VPSまたはSPSでシグナリングされ得る。図19Aは、VPS(770)のシンタックス要素の一例を示し、図19Bは、SPS(780)のシンタックス要素の一例を示す。この例では、VPS(770)において、vps_sub_picture_dividing_flag(772)がシグナリングされる。フラグは、入力ピクチャが複数のサブ領域に分割されているか否かを示すことができる。vps_sub_picture_dividing_flag(772)の値が0に等しいとき、現在のVPSに対応する符号化されたビデオシーケンスの入力ピクチャは、複数のサブ領域に分割されない可能性がある。この場合、入力ピクチャサイズは、SPS(680)でシグナリングされる符号化されたピクチャサイズ(pic_width_in_luma_samples(786)、pic_height_in_luma_samples(788))と等しくてもよい。vps_sub_picture_dividing_flag(772)の値が1に等しい場合には、入力ピクチャは複数のサブ領域に分割され得る。この場合、VPS(770)において、シンタックス要素vps_full_pic_width_in_luma_samples(774)およびvps_full_pic_height_in_luma_samples(776)がシグナリングされる。vps_full_pic_width_in_luma_samples(774)およびvps_full_pic_height_in_luma_samples(776)の値は、それぞれ入力ピクチャの幅および高さに等しい可能性がある。
同一の実施形態において、vps_full_pic_width_in_luma_samples(774)およびvps_full_pic_height_in_luma_samples(776)の値は、復号化には使用されず、構成および表示に使用され得る。
同一の実施形態において、vps_sub_picture_dividing_flag(772)の値が1に等しいとき、シンタックス要素pic_offset_x(782)およびpic_offset_y(784))は、特定のレイヤに対応するSPS(780)でシグナリングされ得る。この場合、SPS(780)でシグナリングされる符号化されたピクチャサイズ(pic_width_in_luma_samples(786)、pic_height_in_luma_samples(788))は、特定のレイヤに対応するサブ領域の幅および高さと等しくてもよい。また、サブ領域の左上隅の位置(pic_offset_x(782)、pic_offset_y(784))がSPS(780)でシグナリングされ得る。
同一の実施形態において、サブ領域の左上隅の位置情報(pic_offset_x(782)、pic_offset_y(784))は、復号化には使用されず、構成および表示に使用され得る。
同一または別の実施形態において、入力ピクチャのすべてまたはサブセットのサブ領域のレイアウト情報(サイズおよび位置)、およびレイヤ間の依存関係情報は、パラメータセットまたはSEIメッセージでシグナリングされ得る。図20は、サブ領域のレイアウト、レイヤ間の依存関係、およびサブ領域と1つまたは複数のレイヤとの関係の情報を示すシンタックス要素の一例を示す図である。この例では、シンタックス要素num_sub_region(791)は、現在の符号化されたビデオシーケンスの(矩形の)サブ領域の数を示す。シンタックス要素num_layers(792)は、現在の符号化されたビデオシーケンスでのレイヤの数を示す。num_layers(792)の値は、num_sub_region(791)の値以上の可能性がある。任意のサブ領域が単一のレイヤとして符号化される場合、num_layers(792)の値は、num_sub_region(791)の値と等しい可能性がある。1つまたは複数のサブ領域が複数のレイヤとして符号化される場合、num_layers(792)の値はnum_sub_region(791)の値よりも大きい可能性がある。シンタックス要素direct_dependency_flag[i][j](793)は、j番目のレイヤからi番目のレイヤへの依存関係を示す。シンタックス要素num_layers_for_region[i](794)は、i番目のサブ領域に関連するレイヤの数を示す。シンタックス要素sub_region_layer_id[i][j](795)は、i番目のサブ領域に関連付けられたj番目のレイヤのlayer_idを示す。シンタックス要素sub_region_offset_x[i](796)およびsub_region_offset_y[i](797)は、i番目のサブ領域の左上隅の水平方向および垂直方向の位置をそれぞれ示す。シンタックス要素sub_region_width[i](798)およびsub_region_height[i](799)は、それぞれi番目のサブ領域の幅および高さを示す。
一実施形態において、プロファイル階層レベル情報の有無に関わらず、出力される1つまたは複数のレイヤを示す出力レイヤセットを指定する1つまたは複数のシンタックス要素は、高レベルシンタックス構造(例えば、VPS、DPS、SPS、PPS、APS、またはSEIメッセージ)でシグナリングされ得る。図21を参照すると、VPSを参照する符号化されたビデオシーケンスでの出力レイヤセット(OLS)の数を示すシンタックス要素num_output_layer_sets(804)は、VPSでシグナリングされ得る。各出力レイヤセットに対して、出力レイヤの数だけシンタックス要素output_layer_flag(810)がシグナリングされ得る。
同一の実施形態において、1に等しいシンタックス要素output_layer_flag(810)は、i番目のレイヤが出力されることを指定する。シンタックス要素output_layer_flag(810)が0に等しい場合、i番目のレイヤが出力されないことを指定する。
同一または別の実施形態において、各出力レイヤセットのプロファイル階層レベル情報を指定する1つまたは複数のシンタックス要素が、高レベルのシンタックス構造(例えば、VPS、DPS、SPS、PPS、APS、またはSEIメッセージ)でシグナリングされ得る。さらに図21を参照すると、VPSを参照する符号化されたビデオシーケンスのOLSごとのプロファイル階層レベル情報の数を示すシンタックス要素num_profile_tier_level(806)が、VPSでシグナリングされ得る。各出力レイヤセットに対して、プロファイル階層レベル情報のシンタックス要素のセット、またはプロファイル階層レベル情報のエントリのうち特定のプロファイル階層レベル情報を示すインデックスが、出力レイヤの数だけシグナリングされ得る。
同一の実施形態において、シンタックス要素profile_tier_level_idx[i][j](812)は、i番目のOLSのj番目のレイヤに適用されるprofile_tier_level()(808)シンタックス構造におけるVPSのprofile_tier_level()(808)シンタックス構造のリストへのインデックスを指定する。
プロファイル、階層、およびレベル(およびそれに対応する情報)は、ビットストリームの制限、したがって、ビットストリームの復号化に必要な能力の制限を指定することができる。プロファイル、階層、およびレベル(およびそれに対応する情報)を使用して、個々の復号器実装間の相互運用ポイントを示すこともできる。プロファイルは、例えば、規格のビットストリームシンタックス全体のサブセットであり得る。各プロファイル(およびそれに対応する情報)は、そのプロファイルに準拠するすべての復号器によってサポートされ得るアルゴリズム機能および制限のサブセットを指定することができる。各プロファイル内には階層とレベルが指定されてもよく、階層レベルは、ビットストリームのシンタックス要素の値に課される制約の指定されたセットであり得る。各階層レベル(およびそれに対応する情報)は、本開示のシンタックス要素によって取得され得る、値の制限および/または値の算術的組み合わせの制限のセットを指定することができる。同じ階層およびレベルの定義のセットを、すべてのプロファイルで使用することができるが、個々の実装では、サポートされているプロファイルごとに、異なる階層と、階層内の異なるレベルとをサポートすることができる。任意の所定のプロファイルについて、階層レベルによって、特定の復号器の処理負荷とメモリ能力とに対応することができる。下位の階層に指定されたレベルは、上位の階層に指定されたレベルよりも制約される可能性がある。
同一または別の実施形態において、図22を参照すると、シンタックス要素num_profile_tier_level(806)および/またはnum_output_layer_sets(804)は、最大レイヤ数が1よりも大きい(vps_max_layers_minus1>0)場合にシグナリングされ得る。
同一または別の実施形態において、図22を参照すると、i番目の出力レイヤセットに対する出力レイヤシグナリングのモードを示すシンタックス要素vps_output_layers_mode[i](822)はVPSに存在し得る。
同一の実施形態において、シンタックス要素vps_output_layers_mode[i](822)が0に等しい場合、最上位のみがi番目の出力レイヤセットで出力されることを指定する。シンタックス要素vps_output_layers_mode[i](822)が1に等しい場合、すべてのレイヤがi番目の出力レイヤセットで出力されることを指定する。シンタックス要素vps_output_layers_mode[i](822)が2に等しい場合、出力されるレイヤが、i番目の出力レイヤセットでvps_output_layer_flag[i][j]が1に等しいレイヤであることを指定する。さらに多くの値の予約が可能である。
同一の実施形態において、シンタックス要素output_layer_flag[i][j](810)は、i番目の出力レイヤセットのシンタックス要素vps_output_layers_mode[i](822)の値に基づいて、シグナリングされてもよく、またはシグナリングされなくてもよい。
同一または別の実施形態において、図22を参照すると、フラグvps_ptl_signal_flag[i](824)がi番目の出力レイヤセットに対して存在し得る。vps_ptl_signal_flag[i](824)の値に基づいて、i番目の出力レイヤセットのプロファイル階層レベル情報がシグナリングされてもよく、またはシグナリングされなくてもよい。
同一または別の実施形態において、図23を参照すると、現在のCVSのサブピクチャの数max_subpics_minus1は、高レベルシンタックス構造(例えば、VPS、DPS、SPS、PPS、APS、またはSEIメッセージ)でシグナリングされ得る。
同一の実施形態において、図23を参照すると、サブピクチャの数が1よりも大きい場合(max_subpics_minus1>0)、i番目のサブピクチャのサブピクチャ識別子sub_pic_id[i](821)がシグナリングされ得る。
同一または別の実施形態において、各出力レイヤセットの各レイヤに属するサブピクチャ識別子を示す1つまたは複数のシンタックス要素は、VPSでシグナリングされ得る。図23を参照すると、識別子sub_pic_id_layer[i][j][k](826)は、i番目の出力レイヤセットのj番目のレイヤに存在するk番目のサブピクチャを示す。識別子sub_pic_id_layer[i][j][k](826)の情報を用いて、復号器は、特定の出力レイヤセットの各レイヤに対して、どのサブピクチャを復号化して出力するかを認識することができる。
一実施形態において、ピクチャヘッダ(PH)は、符号化されたピクチャのすべてのスライスに適用されるシンタックス要素を含むシンタックス構造である。ピクチャユニット(PU)は、指定された分類規則にしたがって互いに関連付けられ、復号化順序で連続し、正確に1つの符号化されたピクチャを含むNALユニットのセットである。PUは、ピクチャヘッダ(PH)と、符号化されたピクチャを含む1つまたは複数のVCL NALユニットを含むことができる。
一実施形態において、SPS(RBSP)は、TemporalIdが0に等しい少なくとも1つのAUに含まれるか、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、SPS(RBSP)は、SPSを参照する1つまたは複数のPPSを含むCVSでTemporalIdが0に等しい少なくとも1つのAUに含まれるか、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、SPS(RBSP)は、SPSを参照する1つまたは複数のPPSを含むCVSでSPS NALユニットを参照するPPS NALユニットのうち最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、1つまたは複数のPPSによって参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、SPS(RBSP)は、TemporalIdが0に等しく、nuh_layer_idがSPS NALユニットを参照するPPS NALユニットのうち最も低いnuh_layer_id値に等しい少なくとも1つのPUに含まれるか、または外部手段によって提供されることによって、1つまたは複数のPPSによって参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、SPS(RBSP)は、1つまたは複数のPPSによって参照される前に、TemporalIdが0に等しく、かつnuh_layer_idが、SPSを参照する1つまたは複数のPPSを含むCVSのSPS NALユニットを参照するPPS NALユニットの最も低いnuh_layer_id値に等しい、少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、復号化プロセスで利用可能であり得る。
同一または別の実施形態において、識別子pps_seq_parameter_set_idは、参照されるSPSの識別子sps_seq_parameter_set_idの値を指定する。識別子pps_seq_parameter_set_idの値は、CLVSで符号化されたピクチャによって参照されるすべてのPPSで同じであり得る。
同一または別の実施形態において、CVSの識別子sps_seq_parameter_set_idの特定の値を有するすべてのSPS NALユニットは、同じコンテンツを有することができる。
同一または別の実施形態において、nuh_layer_idの値に関わらず、SPS NALユニットは、識別子sps_seq_parameter_set_idの同じ値の空間を共有し得る。
同一または別の実施形態において、SPS NALユニットのnuh_layer_id値は、SPS NALユニットを参照するPPS NALユニットの最も低いnuh_layer_id値と等しくてもよい。
一実施形態において、nuh_layer_idがmに等しいSPSが、nuh_layer_idがnに等しい1つまたは複数のPPSによって参照される場合、nuh_layer_idがmに等しいレイヤは、nに等しいレイヤと同じであってもよいし、nuh_layer_idがmに等しいレイヤの(直接または間接)参照レイヤであってもよい。
一実施形態において、PPS(RBSP)は、PPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれることによって、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、PPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含む、CVSのPPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれることによって、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、1つまたは複数のPH(または符号化されたスライスNALユニット)によって参照される前に、PPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含むCVS内のPPS NALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、1つまたは複数のPH(または符号化されたスライスNALユニット)によって、それが参照される前に、PPS NALユニットのTemporalIdに等しいTemporalId、およびPPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含むCVS内のPPS NALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、復号化プロセスで利用可能であり得る。
同一または別の実施形態において、PHの識別子ph_pic_parameter_set_idは、使用中の参照されるPPSの識別子pps_pic_parameter_set_idの値を指定する。pps_seq_parameter_set_idの値は、CLVSにおいて符号化されたピクチャによって参照されるすべてのPPSにおいて同じであり得る。
同一または別の実施形態において、PU内の識別子pps_pic_parameter_set_idの特定の値を有するすべてのPPS NALユニットは、同じコンテンツを有することができる。
同一または別の実施形態において、nuh_layer_idの値に関わらず、PPS NALユニットは、識別子pps_pic_parameter_set_idの同じ値の空間を共有し得る。
同一または別の実施形態において、PPS NALユニットのnuh_layer_id値は、PPS NALユニットを参照するNALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値と等しくもよい。
一実施形態において、nuh_layer_idがmに等しいPPSが、nuh_layer_idがnに等しい1つまたは複数の符号化されたスライスNALユニットによって参照される場合、nuh_layer_idがmに等しいレイヤは、nに等しいレイヤと同じであってもよいし、nuh_layer_idがmに等しいレイヤの(直接または間接)参照レイヤであってもよい。
一実施形態において、PPS(RBSP)は、PPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれることによって、または外部手段によって提供されることによって、それが参照される前に、復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、PPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含む、CVSのPPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれることによって、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、1つまたは複数のPH(または符号化されたスライスNALユニット)によって参照される前に、PPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含むCVS内のPPS NALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、復号化プロセスで利用可能であり得る。
一実施形態において、PPS(RBSP)は、1つまたは複数のPH(または符号化されたスライスNALユニット)によって参照される前に、PPS NALユニットのTemporalIdに等しいTemporalId、およびPPSを参照する1つまたは複数のPH(または符号化されたスライスNALユニット)を含むCVS内のPPS NALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれることによって、または外部手段によって提供されることによって、復号化プロセスで利用可能であり得る。
同一または別の実施形態において、PHの識別子ph_pic_parameter_set_idは、使用中の参照されるPPSの識別子pps_pic_parameter_set_idの値を指定する。識別子pps_seq_parameter_set_idの値は、CLVSで符号化されたピクチャによって参照されるすべてのPPSで同じであり得る。
同一または別の実施形態において、PU内のpps_pic_parameter_set_idの特定の値を有するすべてのPPS NALユニットは、同じコンテンツを有することができる。
同一または別の実施形態において、nuh_layer_idの値に関わらず、PPS NALユニットは、識別子pps_pic_parameter_set_idの同じ値の空間を共有し得る。
同一または別の実施形態において、PPS NALユニットのnuh_layer_id値は、PPS NALユニットを参照するNALユニットを参照する符号化されたスライスNALユニットの最も低いnuh_layer_id値と等しくてもよい。
一実施形態において、nuh_layer_idがmに等しいPPSが、nuh_layer_idがnに等しい1つまたは複数の符号化されたスライスNALユニットによって参照される場合、nuh_layer_idがmに等しいレイヤは、nに等しいレイヤと同じであってもよいし、nuh_layer_idがmに等しいレイヤの(直接または間接)参照レイヤであってもよい。
出力レイヤは、出力される出力レイヤセットのレイヤであり得る。出力レイヤセット(OLS)は、指定されたレイヤのセットであり得、レイヤのセット内の1つまたは複数のレイヤは出力レイヤであると指定される。出力レイヤセット(OLS)のレイヤインデックスは、OLS内のレイヤの、OLS内のレイヤのリストへのインデックスである。
サブレイヤは、TemporalId変数の特定の値を有するVCL NALユニットおよび関連する非VCL NALユニットを含むサブレイヤの時間的スケーラブルなビットストリームの時間的スケーラブルなレイヤであり得る。サブレイヤ表現は、特定のサブレイヤおよび下位のサブレイヤのNALユニットを含む、ビットストリームのサブセットであり得る。
VPS RBSPは、TemporalIdが0に等しい少なくとも1つのAUに含まれるか、または外部手段によって提供されることによって、参照される前に復号化プロセスで利用可能であり得る。CVS内のvps_video_parameter_set_idの特定の値を有するすべてのVPS NALユニットは、同じコンテンツを有することができる。
図24~図25を参照して、例示的なVPS RBSPのシンタックス要素を以下に説明する。
シンタックス要素vps_video_parameter_set_id(842)は、他のシンタックス要素による参照のために、VPSの識別子を提供する。シンタックス要素vps_video_parameter_set_id(842)の値は、0よりも大きくてもよい。
シンタックス要素vps_max_layers_minus1(802)に1を加えたものは、VPSを参照する各CVSの最大許容レイヤ数を指定する。
シンタックス要素vps_max_sublayers_minus1(846)に1を加えたものは、VPSを参照する各CVSのレイヤに存在し得る一時的サブレイヤの最大数を指定する。シンタックス要素vps_max_sublayers_minus1(846)の値は、0~6(両端を含む)の範囲であり得る。
シンタックス要素vps_all_layers_same_num_sublayers_flag(848)が1に等しい場合、VPSを参照する各CVSのすべてのレイヤに対して、一時的サブレイヤの数が同じであることを指定する。シンタックス要素vps_all_layers_same_num_sublayers_flag(848)が0に等しい場合、VPSを参照する各CVSのレイヤが同じ数の一時的サブレイヤを有し得るか、有し得ないかを指定する。存在しない場合、vps_all_layers_same_num_sublayers_flag(848)の値は、1に等しいと推測され得る。
シンタックス要素vps_all_independent_layers_flag(850)が1に等しい場合、CVSのすべてのレイヤがレイヤ間予測を使用せずに独立して符号化されることを指定する。シンタックス要素vps_all_independent_layers_flag(850)が0に等しい場合、CVSの1つまたは複数のレイヤがレイヤ間予測を使用し得ることを指定する。存在しない場合、vps_all_independent_layers_flag(850)の値は、1に等しいと推測され得る。
シンタックス要素vps_layer_id[i](852)は、i番目のレイヤのnuh_layer_id値を指定する。任意の2つの負でない整数値mおよびnについて、mがnよりも小さい場合、vps_layer_id[m]の値は、vps_layer_id[n]未満であり得る。
シンタックス要素vps_independent_layer_flag[i](854)が1に等しい場合、インデックスiのレイヤがレイヤ間予測を使用しないことを指定する。シンタックス要素vps_independent_layer_flag[i](854)が0に等しい場合、インデックスiのレイヤがレイヤ間予測を使用し得ることを指定し、0からi-1の範囲(両端を含む)のjに対するシンタックス要素vps_direct_ref_layer_flag[i][j]がVPSに存在することを指定する。存在しない場合、シンタックス要素vps_independent_layer_flag[i](854)の値は、1に等しいと推測され得る。
シンタックス要素vps_direct_ref_layer_flag[i][j](856)が0に等しい場合、インデックスjのレイヤがインデックスiのレイヤの直接参照レイヤではないことを指定する。シンタックス要素vps_direct_ref_layer_flag[i][j](856)が1に等しい場合、インデックスjのレイヤがインデックスiのレイヤの直接参照レイヤであることを指定する。シンタックス要素vps_direct_ref_layer_flag[i][j](856)が、0からvps_max_layers_minus1の範囲(両端を含む)で、iおよびjに対して存在しない場合、シンタックス要素は0に等しいと推測され得る。シンタックス要素vps_independent_layer_flag[i](854)が0に等しい場合、シンタックス要素vps_direct_ref_layer_flag[i][j](856)の値が1に等しいように、0からi-1の範囲(両端を含む)に少なくとも1つのjの値が存在し得る。
変数NumDirectRefLayers[i]、DirectRefLayerIdx[i][d]、NumRefLayers[i]、RefLayerIdx[i][r]、およびLayerUsedAsRefLayerFlag[j]は、以下のように導出することができる。
for( i = 0; i <= vps_max_layers_minus1; i++ ) {
for( j = 0; j <= vps_max_layers_minus1; j++ ) {
dependencyFlag[i][j] = vps_direct_ref_layer_flag[i][j]
for( k = 0; k < i; k++ )
if( vps_direct_ref_layer_flag[i][k] && dependencyFlag[k][j] )
dependencyFlag[i][j] = 1
}
LayerUsedAsRefLayerFlag[i] = 0
}
for( i = 0; i <= vps_max_layers_minus1; i++ ) {
for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) {
if( vps_direct_ref_layer_flag[i][j] ) {
DirectRefLayerIdx[i][d++] = j
LayerUsedAsRefLayerFlag[j] = 1
}
if( dependencyFlag[i][j] )
RefLayerIdx[i][r++] = j
}
NumDirectRefLayers[i] = d
NumRefLayers[i] = r
}
nuh_layer_idがvps_layer_id[i]と等しいレイヤのレイヤインデックスを指定する変数GeneralLayerIdx[i](852)は、以下のように導出することができる。
for( i = 0; i <= vps_max_layers_minus1; i++ )
GeneralLayerIdx[vps_layer_id[i]] = i
0からvps_max_layers_minus1(846)の範囲(両端を含む)にある、任意の2つの異なるiおよびjの値について、dependencyFlag[i][j]が1に等しいとき、i番目のレイヤに適用されるchroma_format_idcおよびbit_depth_minus8の値が、j番目のレイヤに適用されるchroma_format_idcおよびbit_depth_minus8の値とそれぞれ等しい可能性があることが、ビットストリーム準拠の要件であり得る。
シンタックス要素max_tid_ref_present_flag[i](858)が1に等しい場合、シンタックス要素max_tid_il_ref_pics_plus1[i](860)が存在することを指定する。シンタックス要素max_tid_ref_present_flag[i](858)が0に等しい場合、シンタックス要素max_tid_il_ref_pics_plus1[i](860)が存在しないことを指定する。
シンタックス要素max_tid_il_ref_pics_plus1[i](860)が0に等しい場合、i番目のレイヤの非IRAPピクチャによってレイヤ間予測が使用されないことを指定する。シンタックス要素max_tid_il_ref_pics_plus1[i](860)が0よりも大きい場合、i番目のレイヤのピクチャを復号化するために、max_tid_il_ref_pics_plus1[i]-1よりも大きいTemporalIdを有するピクチャはILRPとして使用されないことを指定する。存在しない場合、シンタックス要素max_tid_il_ref_pics_plus1[i](860)の値は、7に等しいと推測され得る。
シンタックス要素each_layer_is_an_ols_flag(862)が1に等しい場合、各OLSが1つのレイヤのみを含み、VPSを参照するCVSの各レイヤ自体が、単一の含まれるレイヤを唯一の出力レイヤとするOLSであることを指定する。シンタックス要素each_layer_is_an_ols_flag(862)が0に等しい場合、OLSが1つ以上のレイヤを含み得ることを指定する。シンタックス要素vps_max_layers_minus1が0に等しい場合、シンタックス要素each_layer_is_an_ols_flag(862)の値は、1に等しいと推測され得る。それ以外の場合、シンタックス要素vps_all_independent_layers_flag(854)が0に等しいとき、シンタックス要素each_layer_is_an_ols_flag(862)の値は、0に等しいと推測され得る。
シンタックス要素ols_mode_idc(864)が0に等しい場合、VPSによって指定されたOLSの総数がvps_max_layers_minus1+1に等しく、i番目のOLSは、レイヤインデックスが0からi(両端を含む)のレイヤを含み、各OLSについて、OLSの最上位レイヤのみが出力されることを指定する。
シンタックス要素ols_mode_idc(864)が1に等しい場合、VPSによって指定されたOLSの総数がvps_max_layers_minus1+1に等しく、i番目のOLSは、レイヤインデックスが0からi(両端を含む)のレイヤを含み、各OLSについて、OLSのすべてのレイヤが出力されることを指定する。
シンタックス要素ols_mode_idc(864)が2に等しい場合、VPSによって指定されたOLSの総数が明示的にシグナリングされ、各OLSに対する出力レイヤが明示的にシグナリングされ、その他のレイヤは、OLSの出力レイヤの直接的または間接的な参照レイヤであることを指定する。
シンタックス要素ols_mode_idc(864)の値は、0~2の範囲(両端を含む)であり得る。シンタックス要素ols_mode_idc(864)の値3は、将来の使用のためにITU-T|ISO/IECによって予約されている可能性がある。
シンタックス要素vps_all_independent_layers_flag(850)が1に等しく、each_layer_is_an_ols_flag(862)が0に等しいとき、シンタックス要素ols_mode_idc(864)の値は、2に等しいと推測され得る。
シンタックス要素num_output_layer_sets_minus1(866)に1を加えたものは、シンタックス要素ols_mode_idc(864)が2に等しい場合に、VPSによって指定されるOLSの総数を指定する。
VPSによって指定されるOLSの総数を指定する変数TotalNumOlssは、以下のように導出することができる。
if( vps_max_layers_minus1 == 0 )
TotalNumOlss = 1
else if( each_layer_is_an_ols_flag || ols_mode_idc == 0 || ols_mode_idc == 1 )
TotalNumOlss = vps_max_layers_minus1 + 1
else if( ols_mode_idc == 2 )
TotalNumOlss = num_output_layer_sets_minus1 + 1
シンタックス要素ols_output_layer_flag[i][j](868)が1に等しい場合、nuh_layer_idがvps_layer_id[j]に等しいレイヤが、ols_mode_idc(864)が2に等しいときに、i番目のOLSの出力レイヤであることを指定する。シンタックス要素ols_output_layer_flag[i][j](868)が0に等しい場合、nuh_layer_idがvps_layer_id[j]に等しいレイヤが、シンタックス要素ols_mode_idc(864)が2に等しいときに、i番目のOLSの出力レイヤでないことを指定する。
i番目のOLSの出力レイヤの数を指定する変数NumOutputLayersInOls[i]、i番目のOLSのj番目のレイヤのサブレイヤの数を指定する変数NumSubLayersInLayerInOLS[i][j]、i番目のOLSのj番目の出力レイヤのnuh_layer_id値を指定する変数OutputLayerIdInOls[i][j]、およびk番目のレイヤが少なくとも1つのOLSで出力レイヤとして使用されるかどうかを指定する変数LayerUsedAsOutputLayerFlag[k]は、以下のように導出することができる。
NumOutputLayersInOls[0] = 1
OutputLayerIdInOls[0][0] = vps_layer_id[0]
NumSubLayersInLayerInOLS[0][0] = vps_max_sub_layers_minus1 + 1
LayerUsedAsOutputLayerFlag[0] = 1
for( i = 1, i <= vps_max_layers_minus1; i++ ) {
if( each_layer_is_an_ols_flag || ols_mode_idc < 2 )
LayerUsedAsOutputLayerFlag[i] = 1
else /*( !each_layer_is_an_ols_flag && ols_mode_idc == 2 ) */
LayerUsedAsOutputLayerFlag[i] = 0
}
for( i = 1; i < TotalNumOlss; i++ )
if( each_layer_is_an_ols_flag || ols_mode_idc == 0 ) {
NumOutputLayersInOls[i] = 1
OutputLayerIdInOls[i][0] = vps_layer_id[i]
for( j = 0; j < i && ( ols_mode_idc == 0 ); j++ )
NumSubLayersInLayerInOLS[i][j] = max_tid_il_ref_pics_plus1[i]
NumSubLayersInLayerInOLS[i][i] = vps_max_sub_layers_minus1 + 1
} else if( ols_mode_idc == 1 ) {
NumOutputLayersInOls[i] = i + 1
for( j = 0; j < NumOutputLayersInOls[i]; j++ ) {
OutputLayerIdInOls[i][j] = vps_layer_id[j]
NumSubLayersInLayerInOLS[i][j] = vps_max_sub_layers_minus1 + 1
}
} else if( ols_mode_idc == 2 ) {
for( j = 0; j <= vps_max_layers_minus1; j++ ) {
layerIncludedInOlsFlag[i][j] = 0
NumSubLayersInLayerInOLS[i][j] = 0
}
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( ols_output_layer_flag[i][k] ) {
layerIncludedInOlsFlag[i][k] = 1
LayerUsedAsOutputLayerFlag[k] = 1
OutputLayerIdx[i][j] = k
OutputLayerIdInOls[i][j++] = vps_layer_id[k]
NumSubLayersInLayerInOLS[i][j] = vps_max_sub_layers_minus1 + 1
}
NumOutputLayersInOls[i] = j
for( j = 0; j < NumOutputLayersInOls[i]; j++ ) {
idx = OutputLayerIdx[i][j]
for( k = 0; k < NumRefLayers[idx]; k++ ) {
layerIncludedInOlsFlag[i][RefLayerIdx[idx][k]] = 1
if( NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]] < max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]] )
NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]] = max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]]
}
}
}
0~vps_max_layers_minus1の範囲(両端を含む)の各iの値に対して、LayerUsedAsRefLayerFlag[i]およびLayerUsedAsOutputLayerFlag[i]の値は、両方とも0に等しくない可能性がある。換言すれば、少なくとも1つのOLSの出力レイヤでもなく、任意の他のレイヤの直接参照レイヤでもないレイヤは存在し得ない。
各OLSには、出力レイヤである少なくとも1つのレイヤが存在し得る。換言すれば、0~TotalNumOlss-1の範囲(両端を含む)の任意のiの値に対して、NumOutputLayersInOls[i]の値は、1以上であり得る。
i番目のOLSのレイヤの数を指定する変数NumLayersInOls[i]、およびi番目のOLSのj番目のレイヤのnuh_layer_id値を指定する変数LayerIdInOls[i][j]は、以下のように導出することができる。
NumLayersInOls[0] = 1
LayerIdInOls[0][0] = vps_layer_id[0]
for( i = 1; i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[i] = 1
LayerIdInOls[i][0] = vps_layer_id[i]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[i] = i + 1
for( j = 0; j < NumLayersInOls[i]; j++ )
LayerIdInOls[i][j] = vps_layer_id[j]
} else if( ols_mode_idc == 2 ) {
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( layerIncludedInOlsFlag[i][k] )
LayerIdInOls[i][j++] = vps_layer_id[k]
NumLayersInOls[i] = j
}
}
nuh_layer_idがLayerIdInOls[i][j]と等しいレイヤのOLSレイヤインデックスを指定する変数OlsLayerIdx[i][j]は、以下のように導出される。
for( i = 0; i < TotalNumOlss; i++ )
for j = 0; j < NumLayersInOls[i]; j++ )
OlsLayerIdx[i][LayerIdInOls[i][j]] = j
各OLSにおける最下位レイヤは、独立レイヤであり得る。換言すれば、0~TotalNumOlss-1の範囲(両端を含む)の各iについて、vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]の値は1に等しい可能性がある。
各レイヤは、VPSによって指定される少なくとも1つのOLSに含まれ得る。換言すれば、nuh_layer_idの特定の値、nuhLayerIdが、0~vps_max_layers_minus1の範囲(両端を含む)のkに対するvps_layer_id[k]の1つに等しい各レイヤについて、iおよびjの値の少なくとも1つの対が存在する可能性があり、ここで、iは0~TotalNumOlss-1の範囲(両端を含む)であり、jはNumLayersInOls[i]~1の範囲(両端を含む)であり、LayerIdInOls[i][j]の値はnuhLayerIdに等しい。
一実施形態において、復号化プロセスは、現在のピクチャ(例えば、シンタックス要素CurrPic)に対して以下のように動作して、シンタックス要素PictureOutputFlagを設定することができる。
PictureOutputFlagは、次の条件のいずれかが真である場合に、0に等しく設定される。
(1)現在のピクチャがRASLピクチャであり、関連するIRAPピクチャのNoOutputBeforeRecoveryFlagが1に等しい。
(2)gdr_enabled_flagが1に等しく、現在のピクチャは、NoOutputBeforeRecoveryFlagが1に等しいGDRピクチャである。
(3)gdr_enabled_flagが1に等しく、現在のピクチャがNoOutputBeforeRecoveryFlagが1に等しいGDRピクチャに関連付けられており、現在のピクチャのPicOrderCntValが、関連付けられたGDRピクチャのRpPicOrderCntValよりも小さい。
(4)sps_video_parameter_set_idが0よりも大きく、ols_mode_idcが0に等しく、現在のAUが次の条件のすべてを満たすピクチャ(例えば、シンタックス要素picA)を含む。(a)PictureOutputFlagが1に等しい、(b)PicAが、現在のピクチャのより大きいnuh_layer_id nuhLidを有する、(c)PicAがOLS(つまり、OutputLayerIdInOls[TargetOlsIdx][0]はnuhLidと等しい)の出力レイヤに属している。
(5)sps_video_parameter_set_idが0よりも大きく、ols_mode_idcが2に等しく、ols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]]が0に等しい。
上述の条件がいずれも真でない場合、シンタックス要素PictureOutputFlagは、シンタックス要素pic_output_flagと等しく設定され得る。
現在のピクチャのすべてのスライスが復号化された後、現在の復号化されたピクチャは、「短期参照用に使用」としてマークされてもよく、RefPicList[0]またはRefPicList[1]の各ILRPエントリは、「短期参照用に使用」としてマークされてもよい。
同一または別の実施形態において、各レイヤが出力レイヤセットである場合、シンタックス要素ols_mode_idc(864)の値に関わらず、シンタックス要素PictureOutputFlagはpic_output_flagに等しく設定される。
同一または別の実施形態において、シンタックス要素PictureOutputFlagは、sps_video_parameter_set_idが0よりも大きく、each_layer_is_an_ols_flag(862)が0に等しく、ols_mode_idc(864)が0に等しく、現在のAUが、次の条件をすべて満たすピクチャPicAが含まれている場合に、0に等しく設定される:PictureOutputFlagが1に等しい、PicAが現在のピクチャのより大きいnuh_layer_id nuhLidを有する、PicAがOLS(つまり、OutputLayerIdInOls[TargetOlsIdx][0]はnuhLidと等しい)の出力レイヤに属している。
同一または別の実施形態において、シンタックス要素PictureOutputFlagは、sps_video_parameter_set_idが0よりも大きく、each_layer_is_an_ols_flagが0に等しく、ols_mode_idcが2に等しく、ols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]]が0に等しい場合に、0に設定される。
一実施形態において、符号化されたビデオシーケンスの最大レイヤ数が2よりも大きくない場合、各出力レイヤセットの0以上の出力レイヤは、VPSまたは他のパラメータセットにおいて明示的にシグナリングされなくてもよい。シンタックス要素ols_output_layer_flag[i][j](868)をシグナリングすることなく、シンタックス要素ols_output_layer_flag[i][j](868)の値は、シンタックス要素ols_mode_idc(864)の値から推測され得る。
同一または別の実施形態において、シンタックス要素vps_max_layers_minus1(802)が1よりも大きくなく、シンタックス要素each_layer_is_an_ols_flag(862)が1に等しくない場合、シンタックス要素ols_mode_idc(864)の値は、0または1に等しくてもよい。
同一または別の実施形態において、シンタックス要素vps_max_layers_minus1(802)が1よりも大きくない場合、図25を参照すると、シンタックス要素num_output_layer_sets_minus1(866)およびシンタックス要素ols_output_layer_flag[i][j](868)は、明示的にシグナリングされず、他のシンタックス値から推測され得る。
同一または別の実施形態において、シンタックス要素vps_all_independent_layers_flag(855)が1に等しく、シンタックス要素each_layer_is_an_ols_flag(862)が0に等しい場合、シンタックス要素ols_mode_idc(864)の値は、2に等しいと推測され得る。
同一または別の実施形態において、符号化されたビデオシーケンスのレイヤ数が1または2である場合、0または1に等しいシンタックス要素ols_mode_idc(864)の値は、出力レイヤセット表現のすべての可能なケースを表現し得るので、シンタックス要素ols_mode_idc(864)の値は、2に等しくなくてもよい。レイヤ数が1または2の場合、2に等しいシンタックス要素ols_mode_idc(864)は使用され得ない。
1つまたは複数の実施形態によれば、パラメータセットおよびその中のシンタックス要素(上述のものなど)は、受信したビデオデータを復号化するために本開示の復号器によって受信され得る。本開示の復号器は、パラメータセットに基づいて、1つまたは複数の出力レイヤセットに対応する符号化されたビデオストリームのビデオデータの一部を復号化し得る。例えば、図26を参照すると、復号器(880)は、復号器(880)の少なくとも1つのプロセッサに、パラメータセットに基づいてビデオデータの一部分を復号化させるように構成された復号化コード(885)を含み得る。
上述の技術は、コンピュータ可読命令を使用した、1つまたは複数のコンピュータ可読記憶媒体に物理的に記憶されるコンピュータソフトウェアとして実装することができる。例えば、図27は、開示された主題の実施形態を実装するのに適したコンピュータシステム(900)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンクなどのメカニズムで処理される、任意の適切な機械コードまたはコンピュータ言語を使用して符号化することができ、それらは、直接、または解釈、マイクロコードの実行などを介して、コンピュータの中央処理装置(CPU)、グラフィックス処理ユニット(GPU)などによって、実行可能な命令を含むコードを生成する。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネット機器などを含む様々なタイプのコンピュータまたはそのコンポーネントで実行され得る。
図27に示されるコンピュータシステム(900)のコンポーネントは、本質的に例示であり、本開示の実施形態を実装するためのコンピュータソフトウェアの使用範囲または機能にいかなる制限を加えることを意図するものではない。コンポーネントの構成は、コンピュータシステム(900)の例示的な実施形態に示されるコンポーネントのいずれか、またはそれらの組み合わせに関連する依存関係または要件を有するものとして解釈されるべきではない。
コンピュータシステム(900)は、特定のヒューマンインタフェース入力デバイスを含むことができる。このようなヒューマンインタフェース入力デバイスは、例えば触覚入力(例えば、キーストローク、スワイプ、データグローブ移動)、オーディオ入力(例えば、音声、拍手)、視覚入力(例えば、姿勢)、嗅覚入力(図示せず)による1つまたは複数の人間のユーザによる入力に応答することができる。ヒューマンインタフェースデバイスはさらに、例えば、オーディオ(例えば、音声、音楽、環境音)、画像(例えば、スキャンした画像、静止画像カメラから得られた写真画像)、ビデオ(例えば、2次元ビデオ、ステレオビデオを含む3次元ビデオ)などの、人間による意識的な入力に必ずしも直接関連しない特定のメディアをキャプチャするために使用され得る。
入力ヒューマンインタフェースデバイスは、キーボード(901)、マウス(902)、トラックパッド(903)、タッチスクリーン(910)、データグローブ、ジョイスティック(905)、マイクロフォン(906)、スキャナ(907)、およびカメラ(908)のうちの1つまたは複数(それぞれ1つのみ示されている)を含むことができる。
コンピュータシステム(900)はまた、特定のヒューマンインタフェース出力デバイスを含み得る。そのようなヒューマンインタフェース出力デバイスは、例えば触覚出力、音声、光および匂い/味によって1つまたは複数の人間のユーザの感覚を刺激することができる。そのようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(910)、データグローブ、またはジョイスティック(905)による触覚フィードバックがあるが、入力デバイスとして機能しない触覚フィードバックデバイスもある)を含み得る。例えば、そのようなデバイスは、オーディオ出力デバイス(スピーカー(909)、ヘッドフォン(図示せず)など)、視覚出力装置(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(910)などであって、それぞれタッチスクリーン入力能力を有するもの、有さないもの、それぞれ触覚フィードバック機能を有するもの、有さないもの、そのうちのいくつかは、2次元視覚出力、または立体写真出力などの手段による3次元を越える出力を出力することができるもの、バーチャルリアリティグラス(図示せず)、ホログラフィックディスプレイ、スモークタンク(図示せず)など)、およびプリンタ(図示せず)であり得る。
コンピュータシステム(900)はまた、CD/DVDなどの記憶媒体(921)を有するCD/DVD ROM/RW(920)などの光学記憶媒体、サムドライブ(922)、取り外し可能ハードドライブまたはソリッドステートドライブ(923)、テープやフロッピー(登録商標)ディスクなどの従来の磁気記憶媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず))などの、人間がアクセス可能なストレージデバイスおよびその関連する記憶媒体などを含み得る。
また、当業者は、現在開示された主題に関連して使用される「コンピュータ可読記憶媒体」という用語には、伝送媒体、搬送波または他の一時的な信号が包含されていないことを理解するべきである。
コンピュータシステム(900)はまた、1つまたは複数の通信ネットワークへのインタフェースを含み得る。ネットワークは、例えば無線、有線、光学的ネットワークであり得る。ネットワークはさらに、ローカル、広域、都市用、車両用、工業用、リアルタイム、遅延耐性ネットワークなどであり得る。ネットワークの例は、例えば、イーサネット(登録商標)などのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、有線テレビ、衛星テレビおよび地上波テレビを含むテレビ有線または無線ワイドエリアデジタルネットワークテレビ、CANBusを含む車載および工業用ネットワークなどを含む。特定のネットワークは一般的に、特定の汎用データポートまたは周辺バス(949)(例えば、コンピュータシステム(900)のUSBポート)に接続される外部ネットワークインタフェースアダプタを必要とし、他のネットワークは一般的に、以下に説明するようなシステムバス(例えば、PCコンピュータシステムへのイーサネット(登録商標)インタフェース、またはスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)に接続されることによって、コンピュータシステム(900)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(900)は、他のエンティティと通信することができる。このような通信は、一方向受信のみ(例えば、放送テレビ)、一方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向(例えば、ローカルエリアまたはワイドエリアデジタルネットワークを使用して他のコンピュータシステムに達する)であり得る。このような通信は、クラウドコンピューティング環境(955)への通信を含み得る。上述のようなこれらのネットワークおよびネットワークインタフェースのそれぞれに、特定のプロトコルおよびプロトコルスタックを使用することができる。
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能なストレージデバイス、およびネットワークインタフェース(954)は、コンピュータシステム(900)のコア(940)に取り付けられ得る。
コア(940)は1つまたは複数の中央処理ユニット(CPU)(941)、グラフィックス処理ユニット(GPU)(942)、フィールドプログラム可能ゲートアレイ(FPGA)(943)の形態の専用プログラム可能処理ユニット、特定のタスクのためのハードウェアアクセラレータ(944)などを含み得る。これらのデバイスは、読み出し専用メモリ(ROM)(945)、ランダムアクセスメモリ(946)、ユーザがアクセスできない内部ハードドライブなどの内部大容量記憶装置、SSDなど(947)とともに、システムバス(948)を介して接続することができる。一部のコンピュータシステムでは、システムバス(948)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能である。周辺デバイスは、直接的または周辺バス(949)を介してコアのシステムバス(948)に接続することができる。周辺バスのアーキテクチャはPCI、USBなどを含む。グラフィックスアダプタ950は、コア940に含まれていてもよい。
CPU(941)、GPU(942)、FPGA(943)およびアクセラレータ(944)は、特定の命令を実行することができ、これらの命令は、組み合わせて前述コンピュータコードを構成することができる。そのコンピュータコードは、ROM(945)またはRAM(946)に記憶され得る。一時的なデータはRAM(946)に記憶され、永続的なデータは、例えば内部大容量記憶装置(947)に記憶され得る。キャッシュメモリを使用することによって、任意の記憶デバイスへの高速ストレージおよび検索を可能にし、当該キャッシュメモリは1つまたは複数のCPU(941)、GPU(942)、大容量記憶装置(947)、ROM(945)、RAM(946)などに密接に関連することができる。
コンピュータ可読記憶媒体は、コンピュータによって実装され得る様々な動作を実行するためのコンピュータコードを有することができる。記憶媒体とコンピュータコードとは、本開示の目的のために、特別に設計および構築されたものあってもよく、または、コンピュータソフトウェアの当業者にとって公知であり、利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャ(900)を有するコンピュータシステム、具体的にはコア(940)は、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が、1つまたは複数の有形コンピュータ可読記憶媒体に具現化されたソフトウェアを実行した結果として機能を提供することができる。このようなコンピュータ可読記憶媒体は、上述のような、ユーザがアクセス可能な大容量記憶装置に関連する記憶媒体、および例えばコア内部大容量記憶装置(947)またはROM(945)などの非一時的な性質のコア(940)の特定の記憶装置であってもよい。本開示の様々な実施形態を実装するソフトウェアは、このようなデバイスに記憶され、コア(940)によって実行され得る。特定のニーズにしたがって、コンピュータ可読記憶媒体には1つまたは複数のメモリデバイスまたはチップが含まれてもよい。ソフトウェアは、コア(940)および具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(946)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスにしたがってそのようなデータ構造を修正することを含む本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。追加、または代替として、コンピュータシステムは、回路(例えば、アクセラレータ(944))にハード的配線または他の手段で具現化されたロジックによって機能を提供することができ、当該機能は、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するための、ソフトウェアの代わりに、またはソフトウェアと一緒に動作することができる。必要に応じて、ソフトウェアに対する言及は、ロジックを包含し、逆に、ロジックに対する言及はソフトウェアを包含し得る。必要に応じて、コンピュータ可読記憶媒体に対する言及は、実行のためのソフトウェアが記憶される回路(例えば、集積回路(IC))、実行のためのロジックを具現化する回路、またはその両方を包含し得る。本開示は、ハードウェアとソフトウェアとの任意の適切な組み合わせを包含する。
本開示では、いくつかの非限定的な例示的実施形態を説明してきたが、本開示の範囲内に含まれる変更、置き換えおよび様々な代替の均等物が存在する。したがって、当業者は、本明細書では明示的に示されていないか、または説明されていないが、本開示の原理を具現化したのでその趣旨および範囲内にある多数のシステムおよび方法を考案できることを理解されたい。