本発明の構造及び方法の詳細な実施形態が本明細書で開示される。しかしながら、開示の実施形態は様々な形態で実施され得る本発明の構造及び方法の例示に過ぎないことが分かるであろう。しかしながら、これらの構造体及び方法は多くの異なる形態で実施されてもよく、本明細書に記載の例示の実施形態に限定されるものと解釈すべきでない。むしろ、これらの例示の実施形態は、本開示が徹底的及び完全であり、当業者に範囲を完全に伝えるために提供される。説明では、周知の特徴及び技術の詳細は、提示される実施形態を不要に不明瞭にすることを避けるために省略され得る。
前述したように、ビデオエンコーダ及びデコーダは、ほとんどの場合、コード化ビデオシーケンスに対して定義され、一定のままである所与のピクチャサイズで動作する傾向があった。しかしながら、ピクチャを1つ以上のサブピクチャに分割できる。各サブピクチャは、さらに1つ以上のスライスにさらに分割できます。2つ以上の独立的にコード化されたサブピクチャはコード化ピクチャに統合され、デコーダによってデコードされ、単一の出力ピクチャとして表示され得る。コード化ピクチャが2つ以上のコード化サブピクチャで構成される場合、仮想境界が存在し得る。したがって、仮想境界の特別な処理には都合がよい。
本明細書では、様々な実施形態に係る方法、装置(システム)及びコンピュータ読み取り可能媒体のフロー図及び/又はブロック図を参照して態様を説明する。フローチャート図及び/又はブロック図の各ブロック、およびフローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ読み取り可能プログラム命令により実施できることが分かるだろう。
図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)は、サーバ、パーソナルコンピュータ及びスマートフォンとして示され得るが、本開示の原理はそれに限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ及び/又は専用のビデオ会議機器への適用を見出す。ネットワーク(150)は、例えば、有線及び/又は無線通信ネットワークを含む、端末(110~140)間でコード化ビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(150)は、回線交換及び/又はパケット交換チャネル内でデータを交換し得る。代表的なネットワークは、通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットを含む。本説明の目的のために、ネットワーク(150)のアーキテクチャ及びトポロジーは、以下で説明しない限り、本開示の動作にとって重要ではない。
図2は、開示の主題の適用の一例として、ストリーミング環境におけるビデオエンコーダ及びデコーダの配置を示す。開示の主題は、例えば、ビデオ会議、デジタルTV、CD、DVD、メモリスティック等を含むデジタル媒体への圧縮ビデオの記憶等を含む、他のビデオが使用可能な用途にも同様に適用可能である。
ストリーミングシステムは、例えば非圧縮ビデオサンプルストリーム(202)を生成するビデオソース(201)、例えばデジタルカメラを含むことができるキャプチャサブシステム(213)を含み得る。このサンプルストリーム(202)は、エンコードされたビデオビットストリームと比較した場合に、高データボリュームであることが強調するために太い線で描写される、カメラ(201)に連結されるエンコーダ(203)によって処理することができる。エンコーダ(203)は、以下でより詳細に説明するように、開示の主題の態様を有効又は実施するために、ハードウェア、ソフトウェア又はその組み合わせを含むことができる。サンプルストリームと比較した場合に、低データボリュームであることが強調するために細い線で描写されるコード化ビデオビットストリーム1704は、将来の使用のためにストリーミングサーバ(205)に記憶できる。1つ以上のストリーミングクライアント(206、208)は、コード化ビデオビットストリーム(204)のコピー(207、209)を読み出すためにストリーミングサーバ(205)にアクセスできる。クライアント(206)は、コード化ビデオビットストリーム(207)の入力コピーをデコードし、ディスプレイ(212)又は他のレンダリング装置(図示せず)上でレンダリング可能な出力ビデオサンプルストリーム(211)を生成するビデオデコーダ(210)を含むことができる。一部のストリーミングシステムでは、ビデオビットストリーム(204、207、209)は、特定のビデオコーディング/圧縮規格に従ってコード化できる。これらの規格の例としては、ITU-T Recommendation H.265が挙げられる。現在開発中なのはVersatile
Video Coding又はVVCと非公式に知られているビデオコーディング規格である。
図3は、本発明の一実施形態に係るビデオデコーダ(210)の機能ブロック図であり得る。
受信器(310)は、デコーダ(210)によってデコードすべき1つ以上のコーデックビデオシーケンスを受信し、同じ又は別の実施形態では、一度に1つのコード化ビデオシーケンスを受信してもよく、各コード化ビデオシーケンスのデコーディングは、他のコード化ビデオシーケンスから独立している。コード化ビデオシーケンスは、コード化ビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得るチャネル(312)から受信され得る。受信器(310)は、それぞれの使用エンティティ(図示せず)に転送され得る、例えば、コード化オーディオデータ及び/又は補助データストリーム等の他のデータと共にコード化ビデオデータを受信し得る。受信器(310)は、コード化ビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、受信器(315)とエントロピーデコーダ/パーサ(320)(以降「パーサ」)との間にバッファメモリ(315)が連結され得る。受信器(310)が、十分な帯域幅及び制御可能性を有する記憶/転送装置から又はアイソクロナスネットワークからデータを受信する場合、バッファ(315)を必要としないか又は小さいものでよい。インターネット等のベストエフォートパケットネットワークでの使用の場合、バッファ(315)が必要となり、比較的大きく、有利には適応サイズのものであり得る。
ビデオデコーダ(210)は、エントロピーコード化ビデオシーケンスからシンボル(321)を再構成するためにパーサ(320)を含み得る。これらのシンボルのカテゴリは、デコーダ(210)の動作を管理するために使用される情報と、場合によっては、デコーダの不可欠な部分ではないが、それに連結され得るディスプレイ(212)等の図2に示すレンダリング装置を制御する情報とを含む。レンダリング装置の制御情報は、補助的拡張情報(SEIメッセージ)又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形式であり得る。パーサ(320)は、受信したコード化ビデオシーケンスをパース/エントロピーデコーディングし得る。コード化ビデオシーケンスのコーディングは、ビデオコーディング技術又は規格に従うことができ、可変長符号化、ハフマン符号化、文脈依存性を伴う又は伴わない算術符号化等を含む、当業者に周知の原理に従うことができる。パーサ(320)は、コード化ビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのためのサブグループパラメータのセットを、該グループに対応する少なくとも1つのパラメータに基づいて抽出し得る。サブグループはピクチャ群(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含むことができる。エントロピーデコーダ/パーサはコード化ビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトル等の情報も抽出し得る。
パーサ(320)は、シンボル(321)を生成するために、バッファ(315)から受信したビデオシーケンスに対してエントロピーデコーディング/パース動作を行い得る。
シンボル(321)の再構成は、コード化ビデオピクチャ又はその一部の種類(例えば、インター及びイントラピクチャ、インター及びイントラブロック)及び他の要因に応じて、複数の異なるユニットが関与することができる。どのユニットがどのように関与するかは、パーサ(320)によってコード化ビデオシーケンスからパースされたサブグループ制御情報によって制御することができる。パーサ(320)と以下の複数ユニットとの間のこのようなサブグループ制御情報の流れは、明確性のために図示していない。
既に述べた機能ブロックの他に、デコーダ210は、概念的に、以下で説明するいくつかの機能ユニットに細分化することができる。商業的制約の下で動作する実用的な実施では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかしながら、開示の主題を説明するために、以下の機能ユニットへの概念的に細分化が適切である。
第1のユニットは、スケーラ/逆変換ユニット(351)である。スケーラ/逆変換ユニット(351)は、量子化変換係数に加えて、どの変換を用いるか、ブロックサイズ、量子化係数、量子化スケーリング行列等を含む制御情報をパーサ(320)からシンボル(321)として受信する。それは、アグリゲータ(355)に入力可能なサンプル値を含むブロックを出力できる。
一部の場合では、スケーラ/逆変換(351)の出力サンプルはイントラコード化ブロック、すなわち、先に再構成されたピクチャからの予測情報を用いないが、現在のピクチャの先に再構成された部分からの予測情報を用いることができるブロックに関係することができる。そのような予測情報は、イントラピクチャ予測ユニット(352)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(352)は、現在の(部分的に再構成された)ピクチャ(356)から取り出された既に再構成された周囲の情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成する。アグリゲータ(355)は、場合によっては、サンプル毎に、イントラ予測ユニット(352)が生成した予測情報を、スケーラ/逆変換ユニット(351)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(351)の出力サンプルは、インターコード化された潜在的な動き補償ブロックに関連することができる。このような場合、動き補償予測ユニット(353)は、予測のために用いられるサンプルを取得するために参照ピクチャメモリ(357)にアクセスすることができる。取得したサンプルを、ブロックに関連するシンボル(321)に従って動き補償した後に、これらのサンプルは、アグリゲータ(355)により、スケーラ/逆変換ユニットの出力(この場合は、残差サンプル又は残差信号と呼ばれる)に追加されて、出力サンプル情報を生成することができる。動き補償ユニットが予測サンプルを取得する参照ピクチャメモリ形態内のアドレスは、例えばX、Y及び参照ピクチャコンポーネントを有することができるシンボル(321)の形態で動き補償ユニットに利用可能な動きベクトルによって制御することができる。動き補償は、サブサンプルの正確な動きベクトルが用いられている場合に、参照ピクチャメモリから取得されるサンプル値の補間、動きベクトル予測メカニズム等を含むことができる。
アグリゲータ(355)の出力サンプルは、ループフィルタユニット(356)内の様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、コード化ビデオビットストリームに含まれ、パーサ(320)からのシンボル(321)としてループフィルタユニット(356)に利用可能にされるが、コード化ピクチャ又はコード化ビデオシーケンスの(デコーディング順序における)先の部分のデコーディングの間に得られたメタ情報に応答するとともに、先に再構成され、ループフィルタリングされたサンプル値に応答することもできるパラメータによって制御されるインループフィルタ技術を含むことができる。
ループフィルタユニット(356)の出力は、レンダリング装置(212)に出力され、将来のインターピクチャ予測で用いるために参照ピクチャメモリ(356)に記憶することができるサンプルストリームであり得る。
特定のコード化ピクチャは、いったん完全に再構成されると、将来の予測のための参考ピクチャとして用いることができる。コード化ピクチャが完全に再構成され、(例えば、パーサ(320)により)コード化ピクチャが参照ピクチャとして識別されると、現在の参照ピクチャ(356)は、参照ピクチャバッファ(357)の一部となることができ、フレッシュな現在のピクチャメモリが、以下のコード化ピクチャの再構成を開始する前に再度割り当てすることができる。
ビデオデコーダ320は、ITU-T Rec. H. 265等の規格において文書化された得る所定のビデオ圧縮技術に従ってデコーディング動作を行い得る。コード化ビデオシーケンスは、ビデオ圧縮技術文書又は規格、具体的にはその中のプロファイル文書で規定されるビデオ圧縮技術又は規格の構文に従うという意味で、使用中のビデオ圧縮技術又は規格によって規定される構文に適合し得る。コード化ビデオシーケンスの複雑さが、ビデオ圧縮技術又は規格のレベルによって定義される範囲内にあることもコンプライアンスのために必要である。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒メガサンプルで測定される)、最大参照ピクチャサイズ等を制限する。レベルによって設定される制限値は、場合によっては、コード化ビデオシーケンスにおいて伝達されるHRDバッファ管理のためのメタデータ及び仮想参照デコーダ(HRD)を通してさらに制限できる。
一実施形態では、受信器(310)は、コード化ビデオと共に追加(冗長)データを受信し得る。追加データは、コード化ビデオシーケンスの一部として含まれ得る。追加データは、データを適切にデコードするために及び/又は元のビデオデータをより正確に再構成するために、ビデオデコーダ(320)によって用いられ得る。追加データは、例えば、時間的、空間的又はSNR強化層、冗長スライス、冗長ピクチャ、順方向エラー補正コード等の形態であり得る。
図4は、本開示の一実施形態に係るビデオエンコーダ(203)の機能ブロック図であり得る。
エンコーダ(203)は、エンコーダ(203)によりコード化されるビデオ画像を取り込み得る(エンコーダの一部ではない)ビデオソース(201)からビデオサンプルを受信し得る。
ビデオソース(201)は、任意の好適なビット深度(例えば、8ビット、10ビット、12ビット、・・・)、任意の色空間(例えば、BT.601 Y CrCB、RGB、・・・)及び任意の好適なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で、エンコーダ(1703)によってコード化されるソースビデオシーケンスを提供し得る。メディアサービングシステムでは、ビデオソース(201)は、事前に準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(203)は、ビデオシーケンスとしてローカル画像情報を取り込むカメラであり得る。ビデオデータは、連続で見られた場合に動きを伝える複数の個々のピクチャとして提供され得る。ピクチャ自体は、ピクセルの空間アレイとして構成されてもよく、各ピクセルは、使用中のサンプリング構造、色空間等に応じて、1つ以上のサンプルを含み得る。当業者であれば、ピクセルとサンプルとの関係を容易に理解することができる。以下の説明ではサンプルに焦点を当てる。
一実施形態によれば、エンコーダ(203)は、ソースビデオシーケンスのピクチャをリアルタイムに又は用途によって要求される任意の他の時間制約の下でコード化ビデオシーケンス(443)にコード化及び圧縮し得る。適切なコード化速度を実施することは、コントローラ(450)の1つの機能である。コントローラは、以下で説明する他の機能ユニットを制御し、これらのユニットに機能的に連結されている。明確性のために連結は示されていない。コントローラによって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、・・・)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル探索範囲等を含むことができる。当業者であれば、コントローラ(450)の他の機能を、それらが特定のシステム設計のために最適化されたビデオエンコーダ(203)に関連し得るため、容易に特定できる。
一部のビデオエンコーダは、当業者が容易に認識する「コーディングループ」で動作する。過度に単純化した説明として、コーディングループは、エンコーダ(430)(以降「ソースコーダ」)(コード化すべき入力ピクチャ及び参照ピクチャに基づいてシンボルを生成する責任を負う)のエンコーディング部と、エンコーダ(203)に埋め込まれ、(リモート)デコーダも生成し得るサンプルデータを生成するためのシンボルを再構成する(ローカル)デコーダ(433)とで構成される(シンボルとコード化ビデオビットストリームとの間の任意の圧縮は、開示の主題で考慮されるビデオ圧縮技術において可逆であるため)。再構成されたサンプルストリームは参照ピクチャメモリ(434)に入力される。シンボルストリームのデコーディングは、デコーダ位置(ローカル又はリモート)に依存しないビットイグザクト(bit-exact)な結果をもたらすため、参照ピクチャバッファコンテンツもローカルエンコーダとリモートエンコーダの間でビットイグザクトとなる。すなわち、エンコーダの予測部は、デデコーディングの間に予測を用いる場合にデコーダが「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性のこの基本原理(及び、例えば、チャンネルエラーのために同期性を維持できない場合に結果として生じるドリフト)は当業者に周知である。
「ローカル」デコーダ(433)の動作は、「リモート」デコーダ(210)の動作と同じであってもよく、それについては図3に関連して既に上述した。図3も簡潔に参照して、しかしながら、シンボルが利用可能であり、エントロピーコーダ(445)及びパーサ(320)によるコード化ビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であり得るため、チャネル(312)、受信器(315)、バッファ(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)の動作を管理し得る。コーディングの間に、コントローラ1905は、各コード化ピクチャに特定のコード化ピクチャタイプを割り当て得る。これは各ピクチャに適用され得るコード化技術に影響を及ぼし得る。例えば、ピクチャは多くの場合以下のフレームタイプのうちの1つとして割り当てられる。
イントラピクチャ(Iピクチャ)は、シーケンス内の他のフレームを予測のソースとして用いることなくコード化及びデコードされ得るものであり得る。一部のビデオコーデックは、例えば、インデペンデントデコーダリフレッシュピクチャを含む、異なる種類のイントラピクチャを許容する。当業者であれば、Iピクチャのこれらの変形例及びそれらのそれぞれの用途及び特徴が分かる。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大で1つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いてコード化及びデコードされ得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大で2つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いてコード化及びデコードされ得るものであり得る。同様に、マルチ予測ピクチャは、1つのブロックの再構成のために、3つ以上の参照ピクチャ及び関連するメタデータを用いることができる。
ソースピクチャは、通常、空間的に複数のサンプルブロック(例えば、それぞれ4x4、8x8、4x8又は16x16のサンプルのブロック)に分割され、ブロック毎にコード化される。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定される他の(既にコード化された)ブロックを参照して予測的にコード化され得る。例えば、Iピクチャのブロックは非予測的にコード化され得るか又はそれらは同じピクチャの既にコード化されたブロックを参照して予測的に符号化され得る(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは先にコード化された1つの参照ピクチャを参照して、空間的予測を介して又は時間的予測を介して非予測的にコード化され得る。Bピクチャのブロックは、1つ以上の先にコード化された参照ピクチャを参照して、空間的予測を介して又は時間的予測を介して符号化され得る。
ビデオコーダ(203)は、ITU-T Rec. H.265等の所定のビデオコーディング技術又は規格に従ってコーディング動作を行い得る。その動作において、ビデオコーダ(203)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を利用する予測コーディング動作を含む様々な圧縮動作を行い得る。したがって、コード化ビデオデータは、使用されているビデオコーディング技術又は規格によって規定される構文に適合し得る。
一実施形態では、送信器(440)は、コード化ビデオと共に追加データを送信し得る。ソースコーダ(430)は、そのようなデータをコード化ビデオシーケンスの一部として含み得る。追加データは、時間的/空間的/SNR強調層、冗長ピクチャ及びスライス等の他の形式の冗長データ、補助的拡張情報(SEI)メッセージ、視覚的ユーザビリティ情報(VUI)パラメータセットフラグメント等を含み得る。
開示の主題の特定の態様をより詳細に説明する前に、本明細書の残りの部分で参照されるいくつかの用語を紹介する必要がある。
以降、サブピクチャは、場合によっては、サンプル、ブロック、マクロブロック、コーディングユニット又は意味的にグループ化され、変更された解像度で独立してコード化され得る同様のエンティティの矩形の配列を意味する。1つ以上のサブピクチャはピクチャを形成し得る。1つ以上のコード化サブピクチャはコード化ピクチャを形成し得る。1つ以上のサブピクチャは1つのピクチャに組み立てられてもよく、1つ以上のサブピクチャは1つのピクチャから抽出され得る。特定の環境では、1つ以上のコード化サブピクチャは、サンプルレベルをコード化ピクチャにトランスコーディングすることなく、圧縮ドメインで組み立てられてもよく、同じ又は特定の場合では、1つ以上のコード化サブピクチャは、圧縮ドメインのコード化ピクチャから抽出され得る。
以降、適応解像度変更(Adaptive Resolution Control)(ARC)とは、例えば、参照ピクチャ再サンプリングにより、コード化ビデオシーケンス内でピクチャ又はサブピクチャの解像度の変更を可能にするメカニズムを意味する。以降、ARCパラメータとは、適応解像度変更を行うために必要な制御情報を意味し、これには、例えば、フィルタパラメータ、スケーリング係数、出力及び/又は参照ピクチャの解像度、様々な制御フラグ等を含む。
上記の説明は、意味的に独立した単一のコード化ビデオピクチャをコーディング及びデコーディングすることに焦点を当てている。独立したARCパラメータを持つ複数のサブピクチャのコーディング/デコーディングの意味合いと、その含意される追加の複雑さを説明する前に、ARCパラメータを伝達のためのオプションを説明すべきであろう。
図5を参照して、ARCパラメータを伝達するためのいくつかの新規な選択肢を示す。それぞれの選択肢で述べるように、これらは、コーディング効率、複雑性及びアーキテクチャの観点から特定の利点及び特定の欠点を有する。ビデオコーディング規格又は技術は、ARCパラメータを伝達するために、これらの選択肢又は従来技術から知られている選択肢のうちの1つ以上を選択し得る。選択肢は相互排他的ではなく、場合によっては用途の必要性、関与する規格技術又はエンコーダの選択に基づいて交換され得る。
ARCパラメータのクラスは以下を含み得る。
・X及びYの次元で別々の又は組み合わされたアップ/ダウンサンプル係数
・所与の数のピクチャについて一定速度のズームイン/ズームアウトを示す、時間次元が加えられたアップ/ダウンサンプル係数
・上記の2つのいずれかは、係数を含むテーブルを指し得る1つ以上の恐らく短い構文要素のコーディングを伴い得る。
・入力ピクチャ、出力ピクチャ、参照ピクチャ、コード化ピクチャの組み合わせ又は別々の、サンプル、ブロック、マクロブロック、CU又は他の任意の好適な粒度の単位での、X又はY次元における解像度。2つ以上の解像度がある場合(例えば、入力ピクチャのための1つ、参照ピクチャのための1つ)、特定の場合では、1組の値が別の組の値から推測され得る。例えば、フラグを用いることによりそれをゲートできる(gated)。より詳細な例については以下を参照されたい。
・「ワーピング」座標は、H.263 Annex Pで用いられているものと同様に、前述の好適な粒度で用いられる。H.263
Annex Pはこのようなワーピング座標をコード化するための1つの効率的な方法を定義するが、他の、潜在的により効率的な方法も場合によっては考案できる。例えば、Annex Pのワーピング座標の可変長可逆「ハフマン」スタイルコーディングは、好適な長さのバイナリコーディング化で置き換えることができ、バイナリコードワードの長さは、例えば、最大ピクチャサイズ、場合によっては特定の係数を乗じて、特定の値でオフセットしたものから導出することができるため、最大ピクチャサイズの境界外で「ワーピング」を可能にする。
・アップ又はダウンサンプルパラメータ。最も簡単なケースでは、アップ及び/又はダウンサンプリングのための単一のフィルタのみが存在し得る。しかしながら、特定の場合では、フィルタ設計においてより柔軟性を可能にすることが有利であり、フィルタパラメータの伝達を必要し得る。そのようなパラメータは、可能なフィルタ設計のリスト内のインデックスを介して選択されてもよく、フィルタは(例えば、好適なエントロピーコーディング技術を用いて、フィルタ係数のリストを通じて)完全に特定され、フィルタは、上述のメカニズムのいずれかにしたがって伝達されるアップ/ダウンサンプル比を通して暗黙的に選択され得る。
以降、説明は、コードワードを通して示されるアップ/ダウンサンプル係数の有限セット(X及びY次元の両方で用いられるべき同じ係数)のコーディングを仮定する。このコードワードは、例えば、H.264及びH.265等のビデオコーディングの仕様において特定の構文要素に一般的なExt-Golombコードを用いる可変長符号化されていることが有利である。アップ/ダウンサンプル係数への値の適切なマッピングは、例えば以下の表に従うことができる。
用途のニーズ及びビデオ圧縮技術又は規格で利用可能なアップ及びダウンスケールメカニズムの能力に従って、多くの同様のマッピングが考案で得る。表はより多くの値に拡張でき得る。値は、例えば、バイナリコーディングを用いて、Ext-Golombコード以外のエントロピーコーディングメカニズムによって表現されてもよい。これは、再サンプリング係数が、例えばMANEだけビデオ処理エンジン(先ず、エンコーダ及びデコーダ)自体の対象の外のある場合に特定の利点を有し得る。なお、解像度の変更が必要とされない場合の(おそらく)最も一般的なケースでは、短いExt-Golombコードを選択することができ、上記の表では1ビットでしかない。これは、最も一般的な場合にバイナリコードを用いるよりもコーディング効率が優れている。
表の中のエントリの数及びそれらの意味は、完全に又は部分的に設定可能であり得る。例えば、表の基本的な輪郭は、シーケンス又はデコーダパラメータセット等の「高」パラメータセットで伝達され得る。あるいは又はそれに加えて、1つ以上のそのようなテーブルがビデオ符号化技術又は規格で定義されてもよく、例えばデコーダ又はシーケンスパラメータセットを介して選択され得る。
以降、上記のようにコード化されたアップサンプル/ダウンサンプル係数(ARC情報)がどのようにビデオコーディング技術又は規格の構文に含まれ得るかを説明する。同様の考慮は、アップ/ダウンサンプルフィルタを制御する1つの又はいくつかのコードワードにも該当し得る。フィルタ又は他のデータ構造のために比較的大量のデータが必要な場合は以下の説明を参照されたい。
H.263
Annex Pは、具体的にはH.263のPLUSPTYPE(503)ヘッダ拡張における、ピクチャヘッダ501への4つのワーピング座標の形式のARC情報502を含む。これは、a)ピクチャヘッダが利用可能であり、b)ARC情報の頻繁な変更が予想される場合に賢明な設計上の選択肢となり得る。しかしながら、H.263スタイルの伝達を用いる場合、オーバヘッドは非常に高く、ピクチャヘッダは一時的な性質であり得るため、スケーリング係数はピクチャ境界に関係しないことがある。
上記で引用したJVCET-M135-v1は、シーケンスパラメータセット(507)内に位置するターゲット解像度を含むテーブル(506)を索引付けするピクチャパラメータセット(504)内に位置するARC参照情報(505)(インデックス)を含む。シーケンスパラメータセット(507)内の表(506)内に可能な解像度を配置することは、筆者の口頭の記述によれば、能力交換の間の相互運用性折衝点(interoperability negotiating point)としてSPSを用いることにより正当化できる。解像度は、テーブル(506)内の値によって設定された制限内で、適切なピクチャパラメータセット(504)を参照することによりピクチャからピクチャに変化可能である。
図5を依然参照して、ARC情報をビデオビットストリームで伝達するために、以下の追加の選択肢が存在し得る。これらの選択肢のそれぞれは、上述した既存の技術に勝る特定の利点を有する。これらの選択肢は、同じビデオ符号化技術又は規格において同時に存在し得る。
一実施形態では、再サンプリング(ズーム)係数等のARC情報(509)は、スライスヘッダ、GOBヘッダ、タイルヘッダ又はタイル群ヘッダ(以降、タイル群ヘッダ)(508)に存在し得る。これは、例えば、上記に示すように、単一の可変長ue(v)又は数ビットの固定長コードワード等のARC情報が小さい場合に十分であり得る。タイルグループヘッダ内にARC情報を直接有することは、ARC情報が、例えば、全体のピクチャではなくそのタイルグループによって表されるサブピクチャに適用可能であり得るという追加の利点がある。以下も参照されたい。加えて、ビデオ圧縮技術又は規格が(例えば、タイルグループベースの適応解像度変更とは対照的に)ピクチャ全体の適応解像度変更のみを想定しているとしても、ARC情報をタイルグループヘッダに入れることは、H.263スタイルのピクチャヘッダに入れることに対して、エラー耐性の観点から特定の利点がある。
同じ又は別の実施形態では、ARC情報(512)自体は、例えば、ピクチャパラメータセット、ヘッダパラメータセット、タイルパラメータセット、適応パラメータセット等(適応パラメータセットが図示されている)等の適切なパラメータセット(511)内に存在し得る。そのパラメータセットの範囲は、ピクチャ、例えばタイルグループ以下であることが有利である。ARC情報の使用は、関連パラメータセットを有効にすることによって暗黙的に行われる。例えば、ビデオ符号化技術又は規格がピクチャベースのARCのみを意図する場合、ピクチャパラメータセット又は均等物が適切であり得る。
同じ又は別の実施形態では、ARC参照情報(513)がタイルグループヘッダ(514)又は同様のデータ構造内に存在し得る。その参照情報(513)は、単一ピクチャを超える範囲のパラメータセット(516)、例えば、シーケンスパラメータセット又はデコーダパラメータセット内で利用可能なARC情報のサブセット(515)を参照できる。
JVET-M0135-v1で用いられるタイルグループヘッダ、PPS、SPSからのPPSの間接的なインプライドアクティベーション(implied activation)の追加レベルは、(RFC3984等の特定の規格では有する)ピクチャパラメータセットが、シーケンスパラメータセットと同様に、能力折衝又はアナウンスに用いることができるため、必要ではないように思われる。しかしながら、ARC情報が、例えばタイルグループによって表されるサブピクチャにも適用すべきである場合、適応パラメータセット又はヘッダパラメータセット等の有効範囲がタイルグループに限定されたパラメータセットがより良い選択肢であり得る。また、ARC情報が無視できるサイズよりも大きい場合、例えば、多数のフィルタ係数等のフィルタ制御情報を含む場合には、コーディング効率の観点からヘッダ(508)を直接用いるよりもパラメータはより良い選択であり得る。なぜなら、それらの設定は、同じパラメータセットを参照することによって、将来のピクチャ又はサブピクチャによって再利用可能でき得るからである。
シーケンスパラメータセット又は範囲が複数のピクチャにまたがる別のより高位のパラメータセットを用いる場合、特定の考慮事項が該当し得る。
1.ARC情報テーブル(516)を格納するためのパラメータセットは、場合によっては、シーケンスパラメータセットであり得るが、他の場合ではデコーダパラメータセットであることが有利である。デコーダパラメータセットは、複数のCVS、すなわち、コード化ビデオストリーム、すなわち、セッション開始からセッション解除までの全てのコード化ビデオビットの有効範囲を有することができる。可能性のあるARC係数はデコーダの特徴であり、場合によってはハードウェアで実施され、ハードウェアの特徴は、CVS(少なくとも一部のエンターテインメントシステムでは、長さが1秒以下のピクチャ群)で変化しない傾向があるため、そのような範囲がより適切であり得る。とはいえ、テーブルをシーケンスパラメータセットに入れることは、特に以下のポイント2と併せて本明細書で説明する配置オプションに明示的に含まれる。
2.ARC参照情報(513)は、JVCET-M0135-v1のようにピクチャパラメータセットよりも、ピクチャ/スライスタイル/GOB/タイルグループヘッダ(以降、タイルグループヘッダ)(514)に直接配置することが有利であり得る。その理由は、エンコーダが、例えばARC参照情報等のピクチャパラメータセット内の単一の値を変更したい場合、新たなPPSを作成し、その新たなPPSを参照しなければならないからである。ARC参照情報のみが変化するが、例えばPPS内の量子化マトリックス情報等の他の情報は変化しないと仮定する。そのような情報は、かなりのサイズのものである可能性があり、新たなPPSを完全にするために再送される必要があり得る。ARC参照情報は、テーブル(513)内のインデックス等の単一のコードワードであり、そしてそれが変化する唯一の値であり得るため、例えば全ての量子化マトリックス情報を再送することは煩雑であり、無駄である。そこで、JVET-M0135-v1で提案されているように、PPSを介した間接化を回避するために、コーディング効率の観点からかなり優れている。同様に、ARC参照情報をPPSに入れることは、ARC参照情報(513)によって参照されるARC情報は、ピクチャパラメータセットの有効範囲はピクチャであるため、サブピクチャではなくピクチャ全体に必ず適用することが必要であるという付加の欠点がある。
同じ又は別の実施形態では、ARCパラメータの伝達は、図6で概説する詳細な例に従うことができる。図6は、少なくとも1993年以降のビデオコーディング規格で用いられる構文図の表現を示す。このような構文図の表記法はおおむねCスタイルのプログラミングに従う。太線はビットストリーム内に存在する構文要素を示し、太線ではない線は多くの場合制御フロー又は変数の設定を示す。
ピクチャの(おそらく矩形の)部分に適用可能なヘッダの例示の構文構造としてのタイルグループヘッダ(601)は、条件付きで、可変長、Exp-Golombコード化構文要素dec_pic_size_idx(602)(太字で表記)を含むことができる。タイルグループヘッダ内へのこの構文要素の存在は、適応解像度(603)(ここでは、太字で表記されていないフラグの値であり、これは、フラグはビットストリーム内の構文図中で発生する時点に存在することを意味する)の使用によってゲートできる。適応解像度がこのピクチャ又はその一部のために用いられているかどうかは、ビットストリーム内外の任意の高レベル構文構造で伝達できる。図示の例では、以下に概略を示すシーケンスパラメータセットで伝達される。
図6を依然参照して、シーケンスパラメータセット(610)の抜粋も示す。図示の第1の構文要素はadplicative_pic_resolution_change_flag(611)である。真の場合、そのフラグは適応解像度の使用を示すことができ、これは、今度は、特定の制御情報を必要とし得る。この例では、そのような制御情報は、パラメータセット(612)及びタイルグループヘッダ(601)におけるif()文に基づくフラグの値に基づいて条件付きで存在する。
適応解像度が用いられる場合、この例では、出力解像度がサンプル(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)の条件付き存在をゲート制御する(ここでも、参照符号は幅及び高さの両方に係る)。
最後に、可能なデコーディングピクチャの幅及び高さのテーブルを示す。そのようなテーブルは、例えば、テーブル表示(num_dec_pic_size_in_luma_samples_minus1)(616)によって表すことができる。「minus1」は、その構文要素の値の解釈を参照できる。例えば、コード化された値がゼロの場合、1つのテーブルエントリが存在する。値が5の場合、6つのテーブルエントリが存在する。テーブル内の各「行」に対して、デコードされたピクチャの幅及び高さが構文(617)に含まれる。
提示されるテーブルエントリ(617)は、タイルグループヘッダ内の構文要素dec_pic_size_idx (602)を用いて索引付けでき、それによりタイルグループ毎の異なるデコードされたサイズ、実際にはズーム係数を可能にする。
特定のビデオコーディング技術又は規格、例えばVP9は、空間的スケーラビリティを可能にするために、時間的スケーラビリティと共に、特定の形態の参照ピクチャの再サンプリング(開示の主題とかなり異なったかたちで伝達される)を実施することにより空間的スケーラビリティをサポートする。特に、特定の参照ピクチャは、ARCスタイルの技術を用いて、より高い解像度にアップサンプリングされ、空間的強調層のベースを形成し得る。それらのアップサンプリングされたピクチャは、高解像度での通常の予測メカニズムを用いて精緻化することができるので、詳細を加えることができる。
開示の主題はそのような環境で用いることができる。特定の場合では、同じ又は別の実施形態において、NALユニットヘッダ内の値、例えば、Temporal IDフィールドは時間層だけでなく、空間層も示すために用いることができる。そうすることは、特定のシステム設計にある種の利点を有し、例えば、NALユニットヘッダのTemporal ID値に基づいて時間層の選択転送のために作成され最適化された既存のSFU(Selected Forwarding Units)をスケーラブルな環境のために変更することなく用いることができる。これを可能にするために、コード化ピクチャサイズと時間層との間のマッピングがNALユニットヘッダのTemporal IDフィールドによって示されるという要件があり得る。
一部のビデオ符号化技術では、アクセスユニット(AU)は、取り込み及び合成されて、所与の時間インスタンスでそれぞれのピクチャ/スライス/タイル/NALユニットのビットストリームにされたコード化ピクチャ、スライス、タイル、NALユニット等を参照することができる。時間インスタンスは合成時間(composition time)であり得る。
HEVC及び特定の他のビデオコーディング技術では、ピクチャオーダカウント(POC)値は、デコードピクチャバッファ(DPB)に記憶された複数の参照ピクチャの中から選択された参照ピクチャを示すために用いることができる。アクセスユニット(AU)が1つ以上のピクチャ、スライス又はタイルを含む場合、同じAUに属する各ピクチャ、スライス又はタイルは同じPOC値を有していてもよく、それから、それらは同じ合成時間のコンテンツから作成されたものであると導出できる。すなわち、2つのピクチャ/スライス/タイルが同じ所与のPOC値を有するシナリオでは、それは、同じAUに属し、同じ合成時間を有する2つのピクチャ/スライス/タイルを示すことができる。反対に、異なる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_cyle_auの値は、コード化ビデオシーケンス内の空間又はSNR層の数を識別する、例えばビデオパラメータセット(VPS)内に位置する情報から導出され得る。このような可能性のある関係を以下に簡単に説明する。上述したような導出はVPS内で数ビット節約するため、コーディング効率を改善し得るが、poc_cycle_auをビデオパラメータセットの下の階層の適切な高レベル構文構造で明示的にコード化して、ピクチャ等のビットストリームの所与の小さな部分に対してpoc_cycle_auを最小化できるようにすることは有利である。この最適化は、POC値(及び/又はPOCを間接的に参照する構文要素の値)が低レベル構文構造でコード化され得るため、上記の導出プロセスで節約できるよりも多くのビットが節約され得る。
上述の適応解像度パラメータを伝達するための技術は、コンピュータ読み取り可能命令を用い且つ1つ以上のコンピュータ読み取り可能媒体に物理的に記憶されるコンピュータソフトウェアにより実施することができる。例えば、図7は、開示の主題の特定の実施形態を実施するのに好適なコンピュータシステム700を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク又は同様のメカニズムの対象となり得る任意の好適な機械コード又はコンピュータ言語を用いてコード化されて、コンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)等により直接又は解釈、マイクロコード実行等を通して実行可能な命令を含むコードが作成される。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム装置、モノのインターネット装置等を含む、様々な種類のコンピュータ又はそのコンポーネント上で実行できる。
コンピュータシステム700のための図7に示すコンポーネントは本質的に例示であり、本開示のコンピュータソフトウェアを実施する実施形態を使用又は機能の範囲に対する限定を意図するものではない。また、コンポーネントの構成は、コンピュータシステム700の例示の実施形態で示すコンポーネントのうちの1つ又は任意の組み合わせに関するいかなる従属又は要件を有するものと解釈すべきでない。
コンピュータシステム700は、特定のヒューマンインターフェイス入力装置を含み得る。そのようなヒューマンインターフェイス入力装置は、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介して、一人以上の人間ユーザによる入力に応答し得る。ヒューマンインターフェイス装置は、オーディオ(例えば、スピーチ、音楽、周囲音)、画像(例えば、操作画像、スチールカメラから得られる写真画像等)、ビデオ(例えば、2次元ビデオ、立体映像を含む3次元ビデオ)等の、人間による意識的な入力に必ずしも直接関係しない特定の媒体を取り込むためにも用いることができる。
入力ヒューマンインターフェイス装置は、キーボード701、マウス702、トラックパッド703、タッチスクリーン710、データグローブ704、ジョイスティック705、マイクロホン706、スキャナ707、カメラ708のうち(それぞれ1つのみを図示)の1つ以上を含み得る。
コンピュータシステム700は、特定のヒューマンインターフェイス出力装置も含み得る。そのようなヒューマンインターフェイス出力装置は、例えば、触覚出力、音、光及び嗅覚/味覚を通して、1人以上の人間ユーザの感覚を刺激し得る。そのようなヒューマンインターフェイス出力装置は、触覚出力装置(例えば、タッチスクリーン710、データグローブ704又はジョイスティック705による触覚フィードバック(入力装置としての役割を果たさない触覚フィードバック装置もある))、オーディオ出力装置(例えば、スピーカー709、ヘッドフォン(図示せず)等)、視覚出力装置(それぞれがタッチスクリーン入力機能を有するか又は有さず、それぞれが触覚フィードバック能力を有するか又は有さず、これらのうちの一部は二次元視覚出力又は立体画像出力等の手段により三次元以上の視覚出力を出力可能であり得るCRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン710、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず))及びプリンタ(図示せず)を含み得る。
コンピュータシステム700は、CD/DVD又は同様の媒体721を有するCD/DVD ROM/RW720を含む光媒体、サムドライブ722、リムーバブルハードドライブ又はソリッドステートドライブ723、テープ及びフロッピーディスク(図示せず)等のレガシー磁気媒体、セキュリティドングル(図示せず)等の特殊化されたROM/ASIC/PLDベースの装置等の、人間がアクセス可能な記憶装置及びそれらの関連媒体も含むことができる。
当業者は、現在開示の主題に関連して用いられる「コンピュータ読み取り可能媒体」は、伝送媒体、搬送波又は他の一時的信号を包含しないことも理解すべきである。
コンピュータシステム700は、1つ以上の通信ネットワークへのインターフェイスも含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークは、さらにローカル、ワイドエリア、大都市、車両及び産業、リアルタイム、遅延耐性等であり得る。ネットワークの例としては、イーサネット等のローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTE等を含むセルラーネットワーク、ケーブルTV、衛星TV及び地上放送TVを含むTV有線又は無線ネットワーク、CANBusを含む車両及び産業等が挙げられる。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(749)(例えば、コンピュータシステム700のUSBポート等、他のものは以下で説明するようにシステムバスへの取り付けによりコンピュータシステム700のコアに通常一体化される(例えば、PCコンピュータシステムへのイーサネットインターフェイス又はスマートフォンコンピュータシステムへのセルラーネットワークインターフェイス))。これらのネットワークのいずれかを用いて、コンピュータシステム700は他のエンティティと通信できる。このような通信は、単一方向、受信のみ(例えば、放送テレビ)、単一方向送信専用(例えば、CANバスbusから特定のCANbus装置に)又は例えば、ローカル又はワイドエリアデジタルネットワークを用いて他のコンピュータシステムに対して双方向であり得る。特定のプロトコル及びプロトコルスタックは、上述のように、それらのネットワーク及びネットワークインターフェイスのそれぞれで用いることができる。
前述のヒューマンインターフェイス装置、ヒューマンアクセス可能記憶装置及びネットワークインターフェイスは、コンピュータシステム700のコア740に取り付けることができる。
コア740は、1つ以上の中央処理装置(CPU)741、グラフィックス処理装置(GPU)742、フィールドプログラマブルゲートアレイ(FPGA)743の形態の専用のプログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ744等を含むことができる。これらの装置は、読み出し専用メモリ(ROM)745、ランダムアクセスメモリ746、内部非ユーザアクセス可能ハードドライブ、SSD等の内部大容量記憶装置747と共に、システムバス748を介して接続され得る。一部のコンピュータシステムでは、システムバス748は、追加のCPU、GPU等による拡張を可能にするために、1つ以上の物理的プラグの形態でアクセス可能である。周辺装置は、コアのシステムバス748に直接又は周辺バス749を介して取り付けることができる。周辺バスのアーキテクチャはPCI、USB等を含む。
CPU741、GPU742、FPGA743及びアクセラレータ744は、組み合わせで上述のコンピュータコードを構成可能な特定の命令を実行できる。そのコンピュータコードはROM745又はRAM746に記憶できる。移行データはRAM746にも記憶することができるが、永久データは、例えば、内部大容量記憶装置747に記憶することができる。1つ以上のCPU741、GPU742、大容量記憶装置747、ROM745、RAM746等と密接に関連し得るキャッシュメモリの使用を通じてメモリ装置のいずれかへの高速記憶及び読み出しが可能となる。
コンピュータ読み取り可能媒体は、様々なコンピュータ実施動作を行うためにコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものであってもいいし、コンピュータソフトウェア分野に当業者が知っており且つ利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャ700、具体的にはコア740を有するコンピュータシステムは、1つ以上の有形のコンピュータ読み取り可能媒体内で具現化されたソフトウェアを(CPU、GPU、FPGA、アクセラレータ等を含む)プロセッサが実行する結果として機能を提供できる。そのようなコンピュータ読み取り可能媒体は、上記で紹介したユーザアクセス可能な大容量記憶装置に関連する媒体に加えて、コア内部大容量記憶装置747又はROM745等の非一時的な性質のコア740の特定の記憶装置であり得る。本開示の様々な実施形態を実施するソフトウェアは、そのような装置に記憶され、コア740によって実行することができる。コンピュータ読み取り可能媒体は、特定のニーズに応じて、1つ以上のメモリ装置又はチップを含むことができる。ソフトウェアは、コア740、とりわけ、その中の(CPU、GPU、FPGA等を含む)プロセッサに、RAM746に記憶されたデータ構造を定義すること及びソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。加えて又は代替的に、コンピュータシステムは、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに又はソフトウェアと共に動作できる回路(例えば、アクセラレータ744)内に配線されるか又はその他の方法で具現化される論理の結果として機能を提供できる。ソフトウェアへの言及は論理を含み、必要に応じてその逆もある。コンピュータ読み取り可能媒体への言及は、実行のためのソフトウェアを記憶する回路(例えば集積回路(IC))、実行のためのロジックを具現化する回路又は必要に応じてその両方を含むことができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
図8は、適応解像度変化を伴うtemporal_id、layer_id、POC及びAUC値の組み合わせを有するビデオシーケンス構造の例を示す。この例では、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増加する。
上記の実施形態では、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つの独立サブピクチャ層は、コード化サブピクチャのために存在し得る。独立サブピクチャ層は、NALユニットヘッダ又は他の高レベル構文構造に存在し得る0に等しい層識別子(layer_id)の値を有し得る。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層で構成され得る。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内のデコードされたピクセルが再サンプリングされて、参照のために用いられる。再サンプリングプロセスはアップサンプリングフィルタリング又はダウンサンプリングフィルタリングを必要とし得る。
同じ又は別の実施形態において、図9は、コード化ビデオシーケンス内の全てのピクチャ/スライスに用いられるpoc_cycle_auを示すVPS(又はSPS)内のvps_poc_cycle_auの構文要素及びスライスヘッダ内の現在のスライスのpoc_cycle_auを示すslice_poc_cycle_auの構文要素を伝達する構文テーブルの一例を示す。POC値がAU毎に一様に増加する場合、VPS内のvps_contant_poc_cycle_per_auは1に設定され、vps_poc_cycle_auがVPS内で伝達される。この場合、slice_poc_cycle_auは明示的に伝達されず、各AUのAUCの値は、POCの値をvps_poc_cycle_auで除して計算される。POC値がAU毎に一様に増加しない場合、VPS内のvps_contant_poc_cycle_per_auは0に設定される。この場合、vps_access_unit_cntは伝達されないのに対して、slice_access_unit_cntは各スライス又はピクチャのためにスライスヘッダで伝達される。各スライス又はピクチャは、slice_access_unit_cntの値が異なり得る。各AUのためのAUCの値は、POCの値をslice_poc_cycle_auで除して計算される。図10は、関連ワークフローを示すブロック図を示す。
同じ又は別の実施形態では、ピクチャ、スライス又はタイルのPOCの値が異なり得るが、同じAUC値を有するAUに対応するピクチャ、スライス又はタイルは、同じデコーディング又は出力時間インスタンスに関連し得る。そのため、同じAU内のピクチャ、スライス又はタイルに亘ってパース/デコーディングの相互依存性なしに、同じAUに関連するピクチャ、スライス又はタイルの全て又はサブセットが並列にデコードしされ、同じ時間インスタンスで出力され得る。
同じ又は別の実施形態では、ピクチャ、スライス又はタイルのPOCの値が異なり得るが、同じAUC値を有するAUに対応するピクチャ、スライス又はタイルは、同じ合成/表示時間インスタンスに関連し得る。コンテナ形式で合成時間が含まれている場合、ピクチャが異なるAUに対応していても、ピクチャが同じ合成時間を有していれば、ピクチャは同じ時間インスタンスで表示できる。
同じ又は別の実施形態では、各ピクチャ、スライス又はタイルは、同じAU内で同じ時間的識別子(temporal_id)を有し得る。時間インスタンスに対応するピクチャ、スライス又はタイルの全て又はサブセットは同じ時間的サブレイヤに関連し得る。同じ又は別の実施形態では、各ピクチャ、スライス又はタイルは同じAU内で同じ又は異なる空間層id(layer_id)を有し得る。時間インスタンスに対応するピクチャ、スライス又はタイルの全て又はサブセットは、同じ又は異なる空間層に関連し得る。
図11は、layer_idが0に等しいバックグラウンドビデオCSPSと、複数のフォアグラウンドCSPS層を含む例示のビデオストリームの例を示す。コード化サブピクチャは1つ以上のCSPS層で構成され得るが、いかなるフォアグラウンドCSPS層にも属さないバックグラウンド領域はベース層で構成され得る。ベース層はバックグラウンド領域及びフォアグラウンド領域を含み得るのに対して、強化CSPS層はフォアグラウンド領域を含む。強化CSPS層は、同じ領域でベース層よりも良好な視覚品質を有し得る。強化CSPS層は、同じ領域に対応するベース層の再構成されたピクセル及び動きベクトルを参照し得る。
同じ又は別の実施形態では、ベース層に対応するビデオビットストリームはトラックに含まれるのに対して、各サブピクチャに対応するCSPS層はビデオファイル内の別個のトラックに含まれる。
同じ又は別の実施形態では、ベース層に対応するビデオビットストリームはトラックに含まれるのに対して、同じlayer_idのCSPS層は別個のトラックに含まれる。この例では、層kに対応するトラックは、層kに対応するCSPS層のみを含む。
同じ又は別の実施形態では、各サブピクチャの各CSPS層は別個のトラックに記憶される。各トラクトは、1つ以上の他のトラックからの任意のパース又はデコーディング依存関係を有しても、有しなくてもよい。
同じ又は別の実施形態では、各トラックは、サブピクチャの全て又はサブセットのCSPS層の層iから層jに対応するビットストリームを含んでもよく、0<i=<j=<kであり、kはCSPSの最上位層である。
同じ又は別の実施形態では、画像は、奥行きマップ、アルファマップ、3D幾何学データ、占有率マップ等を含む1つ以上の関連媒体データで構成される。そのような関連タイミング媒体データは、それぞれが1つのサブピクチャに対応する1つ以上のデータサブストリームに分割できる。
同じ又は別の実施形態において、図12は多層サブピクチャ法に基づくビデオ会議の一例を示す。ビデオストリームでは、バックグラウンドピクチャに対応する1つのベース層ビデオビットストリームと、フォアグラウンドサブピクチャに対応する1つ以上の強化層ビデオビットストリームとが含まれる。各強化層ビデオビットストリームはCSPS層に対応する。ディスプレイでは、ベース層に対応するピクチャがデフォルトで表示される。それは、1つのユーザのピクチャインピクチャ(PIP)を含む。クライアントの制御によって特定のユーザが選択されると、選択されたユーザに対応する強化CSPS層がデコードされ、強化された品質又は空間解像度で表示される。図13は動作のための図を示す。
同じ又は別の実施形態では、ネットワーク中間ボックス(例えば、ルータ)は、その帯域幅に応じて、ユーザに送信する層のサブセットを選択し得る。ピクチャ/サブピクチャの構成は帯域幅適応のために用いられ得る。例えば、ユーザが帯域幅を有していない場合、ルータは、層をストリップするか又はいくつかのサブピクチャをそれらの重要性又は使用される設定に基づいて選択し、これは帯域幅に適用するために動的に行うことができる。
図14は、360ビデオの使用ケースを示す。球面360ピクチャが平面ピクチャ上に投影される場合、投影360ピクチャはベース層として複数のサブピクチャに分割され得る。特定のサブピクチャの強化層はコード化され、クライアントに送信され得る。デコーダは、全てのサブピクチャを含むベース層及び選択されたサブピクチャの強化層の両方をデコードすることができ得る。現在の視点が選択されたサブピクチャと同一である場合、表示されたピクチャは、強化層を有するデコードされたサブピクチャより高い品質を有し得る。さもなければ、ベース層を有するデコードされたピクチャを低品質で表示できる。
同じ又は別の実施形態では、表示のための任意のレイアウト情報が、補足情報(SEIメッセージ又はメタデータ等)としてファイル内に存在し得る。伝達されるレイアウト情報に応じて、1つ以上のデコードされたサブピクチャが再配置され、表示され得る。レイアウト情報はストリーミングサーバ又はブロードキャスタによって伝達されていいし、ネットワークエンティティ又はクラウドサーバによって再生成されていいし、ユーザのカスタム設定によって決定されてもよい。
一実施形態では、入力ピクチャが1つ以上の(矩形の)サブ領域に分割される場合、各サブ領域は独立層としてコード化され得る。ローカル領域に対応する各独立層は固有のlayer_id値を有し得る。各独立層に対して、サブピクチャサイズ及び位置情報が伝達され得る。たとえば、ピクチャサイズ(幅、高さ)、左上隅のオフセット情報(x_offset、y_offset)。図15は、分割されたサブピクチャのレイアウト、サブピクチャサイズ、位置情報及びその対応するピクチャ予測構造の一例を示す図である。サブピクチャサイズ及びサブピクチャ位置を含むレイアウト情報は、パラメータセット、スライス若しくはタイルグループのヘッダ又はSEIメッセージ等の高レベル構文構造で伝達され得る。
同じ実施形態では、独立層に対応する各サブピクチャは、AU内にその固有のPOC値を有し得る。DPBに記憶されたピクチャのうちのの参照ピクチャが、RPS又はRPL構造の構文要素を用いて示される場合、層に対応する各サブピクチャのPOC値が用いられ得る。
同じ又は別の実施形態では、(インターレイヤ)予測構造を示すために、layer_idが用いられず、POC(デルタ)値が用いられ得る。
同じ実施形態では、層(又はローカル領域)に対応するNと等しいPOC値を有するサブピクチャは、動き補償予測のために、同じ層(又は同じローカル領域)に対応するN+Kと等しいPOC値を有するサブピクチャの参照ピクチャとして用いられても、用いられなくてもよい。ほとんどの場合、数Kの値は、サブ領域の数と同一であり得る(独立)層の最大数と等しくてもよい。
同じ又は別の実施形態において、図16は図15の拡張ケースを示す。入力ピクチャが複数の(例えば、4つの)サブ領域に分割される場合、各ローカル領域は1つ以上の層でコード化され得る。この場合、独立層の数はサブ領域の数と等しくてもよく、1つ以上の層は、サブ領域に対応してもよい。そのため、各サブ領域は1つ以上の独立層及びゼロ以上の従属層でコード化され得る。
同じ実施形態では、図16において、入力ピクチャは4つのサブ領域に分割され得る。右上のサブ領域は、層1及び層4である2つの層としてコード化され得るのに対して、右下のサブ領域は、層3及び層5である2つの層としてコード化され得る。この場合、層4は動き補償予測のために層1を参照するのに対して、層5は動き補償のために層3を参照し得る。
同じ又は別の実施形態では、層境界にわたるインループフィルタリング(例えば、デブロッキングフィルタリング、アダプティブインループフィルタリング、再形成、バイラテラルフィルタリング、又は任意の深層学習に基づくフィルタリング)が(任意で)無効にされ得る。
同じ又は別の実施形態では、層境界にわたる動き補償予測又はイントラブロックコピーは(任意で)無効にされ得る。
同じ又は別の実施形態では、サブピクチャの境界での動き補償予測又はインループフィルタリングのための境界パディングは任意に処理され得る。境界パディングが処理されるかどうかを示すフラグは、パラメータセット(VPS、SPS、PPS、APS)、スライス又はタイルグループヘッダ又はSEIメッセージ等の高レベル構文構造で伝達され得る。
同じ又は別の実施形態では、サブ領域(又はサブピクチャ)のレイアウト情報は、VPS又はSPSで伝達され得る。図17は、VPS及びSPSにおける構文要素の例を示す。この例では、vps_sub_picture_dividing_flagがVPSで伝達される。フラグは、入力ピクチャが複数のサブ領域に分割されているかどうかを示し得る。vps_sub_picture_dividing_flagの値が0と等しい場合、現在のVPSに対応するコード化ビデオシーケンス内の入力ピクチャは複数のサブ領域に分割されない可能性がある。この場合、入力ピクチャサイズは、SPSで伝達されるコード化ピクチャサイズ(pic_width_in_luma_samples、pic_height_in_luma_samples)と等しくてもよい。vps_sub_picture_dividing_flagの値が1と等しい場合、入力ピクチャは複数のサブ領域に分割されている可能性がある。この場合、構文要素vps_full_pic_width_in_luma_samples及びvps_full_pic_height_in_luma_samplesはVPSで伝達される。vps_full_pic_width_in_luma_samples及びvps_full_pic_height_in_luma_samplesの値は、それぞれ入力ピクチャの幅及び高さと等しくてもよい。
同じ実施形態では、vps_full_pic_width_in_luma_samples及びvps_full_pic_height_in_luma_samplesの値はデコーディングに用いられないが、合成及び表示のために用いられ得る。
同じ実施形態では、vps_sub_pichipi_dividing_flagの値が1と等しい場合、構文要素pic_offset_x及びpic_offset_yは、(a)特定層に対応するSPSで伝達され得る。この場合、SPSで伝達されるコード化ピクチャサイズ(pic_width_in_luma_samples、pic_height_in_luma_samples)は特定の層に対応するサブ領域の幅及び高さと等しくてもよい。また、サブ領域の左上隅の位置(pic_offset_x, pic_offset_y)はSPSで伝達され得る。
同じ実施形態では、サブ領域の左上隅の位置情報(pic_offset_x,
pic_offset_y)はデコーディングに用いられないが、合成及び表示のために用いられ得る。
同又は別の実施形態では、入力ピクチャのサブ領域の全て又はサブセットのレイアウト情報(サイズ及び位置)、層間の依存関係情報がパラメータセット又はSEIメッセージで伝達され得る。図18は、サブ領域のレイアウトの情報、層間の依存性及びサブ領域と1つ以上の層との関係を示す構文要素の例を示す。この例では、構文要素num_sub_regionは、現在のコード化ビデオシーケンス内の(矩形の)サブ領域の数を示す。構文要素num_layersは現在のコード化ビデオシーケンスの層の数を示す。num_layersの値はnum_sub_regionの値以上であり得る。任意のサブ領域が単一の層としてコード化されている時、num_layersの値はnum_sub_regionの値と等しくてもよい。1つ以上のサブ領域が複数の層としてコード化されている場合、num_layersの値はnum_sub_regionの値よりも大きくてもよい。構文要素direct_dependency_flag[i] [j]は、j番目の層からi番目の層への依存性を示す。num_layers_for_region[i]は、i番目のサブ領域に関連する層の数を示す。sub_region_layer_id[i][j]は、i番目のサブ領域に関連するj番目の層のlayer_idを示す。sub_region_offset_x[i]及びsub_region_offset_y[i]は、それぞれi番目のサブ領域の左上隅の水平及び垂直位置を示す。sub_region_width[i]及びsub_region_height[i]は、それぞれi番目のサブ領域の幅及び高さを示す。
一実施形態では、プロファイル階層レベル情報と共に又はなしで出力されるべき1つ以上の層を示すための出力層セットを指定する1つ以上の構文要素は高レベル構文構造、例えば、VPS、DSP、SPS、PPS、APS又はSEIメッセージで伝達され得る。図19を参照して、VPSを参照するコード化ビデオシーケンス内の出力層セット(OLS)の数を示す構文要素num_output_layer_setsはVPSで伝達され得る。各出力レイヤセットに対して、output_layer_flagは出力層の数だけ伝達され得る。
同じ実施形態では、1と等しいoutput_layer_flag[i]は、i番目の層が出力されることを指定する。0と等しいvps_output_layer_flag[i]は、i番目の層が出力されないことを指定する。
同じ又は別の実施形態では、各出力層セットのプロファイル階層レベル情報を指定する1つ以上の構文要素は、高レベル構文構造、例えばVPS、DSP、SPS、PPS、APS又はSEIメッセージで伝達され得る。図19を依然参照して、VPSを参照するコード化ビデオシーケンス内のOLS毎のプロファイル階層レベル情報の数を示す構文要素num_profile_tile_levelはVPSで伝達され得る。各出力層セットについて、プロファイル階層レベル情報のための構文要素のセット又はプロファイル階層レベル情報内のエントリのうちの特定のプロファイル階層レベル情報を示すインデックスが出力層の数だけ伝達され得る。
同じ実施形態では、profile_tier_level_idx[i][j]は、VPS内のprofile_tier_level()構文構造のリスト内へのi番目のOLSのj番目の層に適用されるprofile_tier_level()構文構造のインデックスを指定する。
同じ又は別の実施形態において、図20を参照して、最大層の数が1(vps_max_layers_minus1 > 0)よりも大きい場合に、構文要素num_profile_tile_level及び/又はnum_output_layer_setsが伝達され得る。
同じ又は別の実施形態において、図20を参照して、i番目の出力層セットのために伝達される出力層のモードを示す構文要素vps_output_layers_mode[i]がVPSに存在し得る。
同じ実施形態では、0と等しいvps_output_layers_mode[i]は、最上位層のみがi番目の出力層セットと共に出力されることを指定する。1と等しいvps_output_layer_mode[i]は、全ての層がi番目の出力レイヤセットと共に出力されることを指定する。2と等しいvps_output_layer_mode[i]は、出力される層は、vps_output_layer_flag[i][j]が1と等しく、i番目の出力層セットを有する層であることを指定する。より多くの値が確保され得る。
同じ実施形態では、i番目の出力層セットのためのvps_output_layers_mode[i]の値に依存して、output_layer_flag[i][j]が伝達されてもされなくてもよい。
同じ又は別の実施形態において、図20を参照して、フラグvps_ptl_signal_flag[i]がi番目の出力層セットのために存在し得る。vps_ptl_signal_flag[i]の値に依存して、i番目の出力層セットのプロファイル階層レベル情報が伝達されてもされなくてもよい。
同じ又は別の実施形態において、図21を参照して、現在のCVS内のサブピクチャの数であるmax_subpics_minus1が、高レベル構文構造、例えばVPS、DSP、SPS、PPS、APS、APS又はSEIメッセージで伝達され得る。
同じ実施形態において、図21を参照して、サブピクチャの数が1より大きい場合(max_subpics_minus1>0)場合、i番目のサブピクチャのためのサブピクチャ識別子sub_pic_id[i]が伝達され得る。
同じ又は別の実施形態では、各出力層セットの各層に属するサブピクチャ識別子を示す1つ以上の構文要素がVPSで伝達され得る。図22を参照して、sub_pic_id_layer[i][j][k]は、i番目の出力層セットのj番目の層に存在するk番目のサブピクチャを示す。これらの情報を用いて、デコーダは、特定の出力層セットの各レイヤについて、どのサブピクチャをデコードし、出力され得るかを認識し得る。
一実施形態では、ピクチャヘッダ(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)は、それが1つ以上のPPSによって参照される前にデコーディングプロセスで利用可能であり、SPSを参照する1つ以上のPPSを含むCVS内のSPS NALユニットを参照するPPS NALユニットの最も小さいnuh_layer_id値とnuh_layer_idが等しい少なくとも1つのPUに含まれるか又は外部手段を介して提供される。
一実施形態では、SPS(RBSP)は、それが1つ以上のPPSによって参照される前にデコーディングプロセスで利用可能であり、TemporalIdが0と等しく、SPS NALユニットを参照するPPS NALユニットの最も小さいnuh_layer_id値とnuh_layer_idが等しい少なくとも1つのPUに含まれるか又は外部手段を介して提供される。
一実施形態では、SPS(RBSP)は、それが1つ以上のPPSによって参照される前にデコーディングプロセスで利用可能であり、TemporalIdが0と等しく、SPSを参照する1つ以上のPPSを含むCVS内のSPS NALユニットを参照するPPS NALユニットの最も小さいnuh_layer_id値と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と等しい層は、nuh_layer_idが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を参照する1つ以上のPH(又はコード化スライスNALユニット)を含むCVS内のPPS NALユニットを参照するコード化スライスNALユニットの最も小さいnuh_layer_idと等しいnuh_layer_idと、PPS NALユニットのTemporalIdと等しいTemporalIdを有する少なくとも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と等しい層は、nuh_layer_idが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を参照する1つ以上のPH(又はコード化スライスNALユニット)を含むCVS内のPPS NALユニットを参照するコード化スライスNALユニットの最も小さいnuh_layer_id値と等しいnuh_layer_idと、PPS NALユニットのTemporalIdと等しいTemporalIdを有する少なくとも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と等しい層は、nuh_layer_idがnと等しい層又はnuh_layer_idがmと等しい層の(直接又は間接的な)参照層と同じであり得る。
一実施形態では、図22に示すように、ピクチャパラメータセット内のpps_subpic_id[i]はi番目のサブピクチャのサブピクチャIDを指定する。pps_subpic_id[i]の構文要素の長さは、pps_subpic_id_len_minus1+1ビットである。
範囲が0~sps_num_subpics_minus1のiの各値のための変数SubpicIdVal[i]は以下のように導出される:
for(i = 0;i
<= sps_num_subpics_minus1;i++)
if(subpic_id_mapping_explicitly_signalled_flag)
SubpicIdVal[i]
= subpic_id_mapping_in_pps_flag ?pps_subpic_id[i] : sps_subpic_id[i]
else
SubpicIdVal[i]
= i
同じ又は別の実施形態では、範囲が0~sps_num_subpics_minus1のi及びjの任意の2つの異なる値について、SubpicIdVal[i]はSubpicIdVal[j]と等しくなくてもよい。
同じ又は別の実施形態では、現在のピクチャがCLVSの第1のピクチャではない場合、範囲が0~sps_num_subpics_minus1のiの各値について、SubpicIdVal[i]の値が同じ層内のデコーディング順序で先のピクチャのSubpicIdVal[i]の値と等しくない場合、subpicture indexがiの現在のピクチャ内のサブピクチャの全てのコード化スライスNALユニットのためのnal_unit_typeは、IDR_W_RADL~CRA_NUTの範囲の特定の値と等しくてもよい。
同じ又は別の実施形態では、現在のピクチャがCLVSの第1のピクチャでない場合、範囲が0~sps_num_subpics_minus1のiの各値について、SubpicIdVal[i]の値が同じ層内のデコーディング順序で先のピクチャのSubpicIdVal[i]の値と等しくない場合、sps_independent_subpics_flagは1と等しくてもよい。
同じ又は別の実施形態では、現在のピクチャがCLVSの第1のピクチャでない場合、範囲が0~sps_num_subpics_minus1のiの各値について、SubpicIdVal[i]の値が同じ層内のデコーディング順序で先のピクチャのSubpicIdVal[i]の値と等しくない場合、subpic_treated_as_pic_flag[i]及びloop_filter_across_subpic_enabled_flag[i]は1と等しくてもよい。
同じ又は別の実施形態では、現在のピクチャがCLVSの第1のピクチャでない場合、範囲が0~sps_num_subpics_minus1のiの各値について、SubpicIdVal[i]の値が同じ層内のデコーディング順序で先のピクチャのSubpicIdVal[i]の値と等しくない場合、sps_independent_subpics_flagは1と等しいか又はsubpic_treated_as_pic_flag[i]及びloop_filter_across_subpic_enabled_flag[i]は1と等しいものとする。
同じ又は別の実施形態では、サブピクチャが別のサブピクチャを参照することなく独立してコード化される場合、領域のサブピクチャ識別子の値はコード化ビデオシーケンス内で変更され得る。
サンプルはCTB単位で処理される。幅及び高さ両方の各ルーマCTBのアレイサイズは、サンプル単位でCtdSizeYである。各クロマCTBのアレイの幅及び高さは、サンプル単位でそれぞれCtbWidthC及びCtbHeightCである。各CTBには、イントラ又はインター予測のための及び変換コーディングのためのブロックサイズを識別するために分割伝達が割り当てられる。分割は再帰的な四分木分割である。四分木のルートはCTBと関連する。四分木はリーフに到達するまで分割され、これを四分木リーフと呼ぶ。構成要素の幅がCTBサイズの整数でない場合、右側の構成要素境界におけるCTBは不完全である。構成要素の高さがCTBサイズの整数倍でない場合、底部の構成要素の境界におけるCTBは不完全である。
各サブピクチャの幅及び高さの情報は、CtdSizeYの単位でSPSで伝達され得る。図23では、例えば、subpic_width_minus1[i]plus 1は、i番目のサブピクチャの幅をCtdSizeYの単位で指定する。構文要素の長さはCeil(Log2((pic_width_max_in_luma_samples
+ CtbSizeY - 1) >> CtbLog2SizeY))ビットである。存在しない場合、subpic_width_minus1[i]の値は((pic_width_max_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY)
- subpic_ctu_top_left_x[i] - 1と等しいと推測される。subpic_height_minus1[i] plus 1は、CtdSizeYの単位でi番目のサブピクチャの高さを指定する。構文要素の長さはCeil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1) >>
CtbLog2SizeY))ビットである。存在しない場合、subpic_height_minus1[i]の値は((pic_height_max_in_luma_samples + CtbSizeY- 1) >> CtbLog2SizeY)
- subpic_ctu_top_left_y [i] - 1と等しい。
各サブピクチャの幅は、ピクチャの幅がCtdSizeY以上の場合、CtdSizeY以上であり得る。各サブピクチャの高さは、ピクチャ高さがCtdSizeY以上の場合に、CtdSizeY以上であり得る。
ピクチャの幅がCtbSizeY以下であり、ピクチャの高さがCtbSizeY以下の場合、ピクチャは2つ以上のサブピクチャに分割されなくてもよい。その場合、サブピクチャの数は1と等しくてもよい。
pic_width_max_in_luma_samplesがCtbSizeY以下であり、pic_height_max_in_luma_samplesがCtbSizeY以下の場合、subpic_info_present_flagの値は0と等しいものとする。subpic_info_present_flagが0と等しい時、サブピクチャ分割情報について明示的な伝達は存在せず、ピクチャ内のサブピクチャの数は1と等しい。
同じ又は別の実施形態では、sps_subpic_id_len_minus1
plus 1は、構文要素sps_subpic_id[i]、(存在する場合には)構文要素pps_subpic_id[i]及び(存在する場合には)構文要素slice_subpic_idを表すために用いられるビットの数を指定する。sps_subpic_id_len_minus1の値は0~15の範囲であり得る。1<<
(sps_subpic_id_len_minus1)の値はsps_num_subpics_minus1 + 1以上であり得る。
同じ又は別の実施形態では、サブピクチャの数が1と等しい場合、subpic_info_present_flagは0と等しくてもよく、サブピクチャ分割情報は明示的に伝達されなくてもよい。何故なら、その場合、サブピクチャの幅及び高さの情報はピクチャの幅及び高さの情報と等しく、サブピクチャの左上の位置はピクチャの左上の位置と等しいからである。
例えば、subpic_ctu_top_left_x[i]は、CtbSizeYの単位でi番目のサブピクチャの左上のCTUの水平位置を指定する。構文要素の長さはCeil(Log2((pic_width_max_in_luma_samples + CtbSizeY - 1) >>
CtbLog2SizeY))ビットである。存在しない場合、subpic_ctu_top_left_x[i]の値は0と等しいと推定される。subpic_ctu_top_left_y[i]は、CtbSizeYの単位でi番目のサブピクチャの左上のCTUの垂直位置を指定する。構文要素の長さはCeil(Log2((pic_height_max_in_luma_samples
+ CtbSizeY - 1) >> CtbLog2SizeY))ビットである。存在しない場合、subpic_ctu_top_left_y[i]の値は0と等しいと推定される。subpic_width_minus1[i] plus 1は、CtbSizeYの単位でi番目のサブピクチャの幅を指定する。構文要素の長さはCeil(Log2((pic_width_max_in_luma_samples
+ CtbSizeY - 1) >> CtbLog2SizeY))ビットである。存在しない場合、subpic_width_minus1[i]の値は((pic_width_max_in_luma_samples +
CtbSizeY-1) >> CtbLog2SizeY) - subpic_ctu_top_left_x[i] - 1と等しいと推定される。 subpic_height_minus1[i] plus 1は、CtbSizeYの単位でi番目のサブピクチャの高さを指定する。構文要素の長さはCeil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1) >>
CtbLog2SizeY))ビットである。存在しない場合、subpic_height_minus1[i]の値は((pic_height_max_in_luma_samples +
CtbSizeY- 1) >> CtbLog2SizeY) - subpic_ctu_top_left_y [i] - 1と等しいと推定される。
同じ又は別の実施形態では、サブピクチャの数が1より大きい場合、subpic_info_present_flagは1と等しくてもよく、サブピクチャ分割情報は、図23に示すように、パラメータセットで明示的に伝達され得る。
例えば、図23では、sps_num_subpics_minus2
plus 2は、CLVS内の各ピクチャ内のサブピクチャの数を指定する。sps_num_subpics_minus2の値は、0~Ceil(pic_width_max_in_luma_samples
÷ CtbSizeY) * Ceil(pic_height_max_in_luma_samples ÷ CtbSizeY) - 2の範囲である。存在しない場合、sps_num_subpics_minus2の値は0と等しいと推定される。
同じ実施形態では、タイル行列内のi番目のサブピクチャの幅及び高さをそれぞれ指定する、リストSubpicWidthInTiles[i]及びSubpicHeightInTiles[i](iの範囲は0~sps_num_subpics_minus1)と、i番目のサブピクチャの高さが1つのタイル行未満かどうかを指定するリストSubpicHeightLessThanOneTileFlag[i](iの範囲は0~sps_num_subpics_minus1)とは以下のように導出される。
for(i = 0;
i <= sps_num_subpics_minus2 + 1; i++) {
leftX
= subpic_ctu_top_left_x[i]
rightX
= leftX + subpic_width_minus1[i]
SubpicWidthInTiles[i]
= ctbToTileColIdx[rightX] + 1 - ctbToTileColIdx[leftX]
topY
= subpic_ctu_top_left_y[i]
bottomY
= topY + subpic_height_minus1[i]
SubpicHeightInTiles[i]
= ctbToTileRowIdx[bottomY] + 1 - ctbToTileRowIdx[topY]
if(SubpicHeightInTiles[i]
= = 1
&&
subpic_height_minus1[i]
+ 1 < RowHeight[ctbToTileRowIdx[topY]])
subpicHeightLessThanOneTileFlag[i]
= 1
else
subpicHeightLessThanOneTileFlag[i]
= 0
}
rect_slice_flagが1と等しい場合、i番目のスライスにおけるCTUの数を指定するリストNumCtusInSlice[i](iの範囲は0~num_slices_in_pic_minus1)、スライス内の第1のCTUを含むタイルのタイルインデックスを指定するリストSliceTopLeftTileIdx[i](iの範囲は0~num_slices_in_pic_minus1)、i番目のスライス内のj番目のCTBのピクチャラスタスキャンアドレスを指定する行列CtbAddrInSlice[i][j](iの範囲は0~num_slices_in_pic_minus1であり、jの範囲は0~NumCtusInSlice[i]
-1)及びi番目のスライスを含むタイル内のスライスの数を指定する変数NumSlicesInTile[i]は以下のように導出される。
if(single_slice_per_subpic_flag)
{
for(i
= 0; i <= sps_num_subpics_minus2 + 1; i++) {
NumCtusInSlice[i]
= 0
if
(subpicHeightLessThanOneTileFlag [i]) /* The slice consists of a number of CTU
rows in a tile. */
AddCtbsToSlice(i,
subpic_ctu_top_left_x[i],
subpic_ctu_top_left_x[i]
+ subpic_width_minus1[i] + 1, subpic_ctu_top_left_y[i],
subpic_ctu_top_left_y[i]
+ subpic_height_minus1[i] + 1)
else
{/* The slice consists of a number of complete tiles covering a rectangular
region. */
tileX
= CtbToTileColBd[subpic_ctu_top_left_x[i]]
tileY
= CtbToTileRowBd[subpic_ctu_top_left_y[i]]
for(j
= 0; j < SubpicHeightInTiles[i]; j++)
for(k
= 0; k < SubpicWidthInTiles[i]; k++)
AddCtbsToSlice(i,
tileColBd[tileX + k], tileColBd[tileX + k + 1], tileRowBd[tileY + j],
tileRowBd[tileY
+ j + 1])
}
}
} else {
tileIdx
= 0
for(i
= 0; i <= num_slices_in_pic_minus1; i++)
NumCtusInSlice[i]
= 0
for(i
= 0; i <= num_slices_in_pic_minus1; i++) {
SliceTopLeftTileIdx[i]
= tileIdx
tileX
= tileIdx % NumTileColumns
tileY
= tileIdx / NumTileColumns
if(i
< num_slices_in_pic_minus1) {
sliceWidthInTiles[i]
= slice_width_in_tiles_minus1[i] + 1
sliceHeightInTiles[i]
= slice_height_in_tiles_minus1[i] + 1
}
else {
sliceWidthInTiles[i]
= NumTileColumns - tileX
sliceHeightInTiles[i]
= NumTileRows -
tileY
NumSlicesInTile[i]
= 1
}
if(slicWidthInTiles[i]
= = 1
&& sliceHeightInTiles[i] = = 1) {
if(num_exp_slices_in_tile[i]
= = 0) {
NumSlicesInTile[i]
= 1
sliceHeightInCtus[i]
= RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]
}
else {
remainingHeightInCtbsY
= RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]
for(j
= 0; j < num_exp_slices_in_tile[i] -
1; j++) {
sliceHeightInCtus[i
+ j] = exp_slice_height_in_ctus_minus1[i][j] + 1
remainingHeightInCtbsY
-= sliceHeightInCtus[i + j]
}
uniformSliceHeight
= exp_slice_height_in_ctus_minus1[i][j] + 1
while(remainingHeightInCtbsY
>= uniform SliceHeight) {
sliceHeightInCtus[i
+ j] = uniformSliceHeight
remainingHeightInCtbsY
-= uniform SliceHeight
j++
}
if(remainingHeightInCtbsY
> 0){
sliceHeightInCtus[i
+ j] = remainingHeightInCtusY
j++
}
NumSlicesInTile[i]
= j
}
ctbY
= tileRowBd[tileY]
for(j
= 0; j < NumSlicesInTile[i]; j++) {
AddCtbsToSlice(i
+ j, tileColBd[tileX], tileColBd[tileX + 1],
ctbY,
ctbY + sliceHeightInCtus[i + j])
ctbY
+= sliceHeightInCtus[i + j]
}
i
+= NumSlicesInTile[i] - 1
}
else
for(j
= 0; j < sliceHeightInTiles[i]; j++)
for(k
= 0; k < sliceWidthInTiles[i]; k++)
AddCtbsToSlice(i,
tileColBd[tileX + k], tileColBd[tileX + k + 1],
tileRowBd[tileY
+ j], tileRowBd[tileY + j + 1])
if(i
< num_slices_in_pic_minus1) {
if(tile_idx_delta_present_flag)
tileIdx
+= tile_idx_delta[i]
else
{
tileIdx
+= sliceWidthInTiles[i]
if(tileIdx
% NumTileColumns = = 0)
tileIdx
+= (sliceHeightInTiles[i] - 1) * NumTileColumns
}
}
}
}
2つ以上の独立してコード化されたサブピクチャはコード化ピクチャにマージされ得るため、コード化ピクチャはデコードされ、単一のピクチャとして出力され得る。
2つ以上の独立してコード化されたサブピクチャがコード化ピクチャにマージされる場合、コード化ピクチャは2つ以上の異なるNALユニットタイプを持つVCL NALユニットで構成され得る。
図23では、1と等しいsps_independent_subpics_flagは、CLVS内の全てのサブピクチャ境界がピクチャ境界として扱われ、サブピクチャ境界にわたるループフィルタリングがないことを指定する。0と等しいsps_independent_subpics_flagはこのような制約を課さない。存在しない場合、sps_independent_subpics_flagの値は0に等しいと推定される。
図23では、1と等しいsubpic_treated_as_pic_flag[i]は、CLVS内の各コード化ピクチャのi番目のサブピクチャは、インループフィルタリング動作を除くデコーディングプロセスでピクチャとして扱われることを指定する。0と等しいsubpic_treated_as_pic_flag[i]は、CLVS内の各コード化ピクチャのi番目のサブピクチャは、インループフィルタリング動作を除くデコーディングプロセスでピクチャとして扱われないことを指定する。存在しない場合、subpic_treated_as_pic_flag[i]の値はsps_independent_subpics_flagと等しいと推定される。subpic_treated_as_pic_flag[i]が1と等しい場合、各出力層と、その、i番目のサブピクチャを含む層を出力層として含むOLS内の参照層について以下の条件の全てが該当することがビットストリーム適合の要件である。
・出力層及びその参照層の全てのピクチャは、同じ値のpic_width_in_luma_samples及び同じ値のpic_height_in_luma_samplesを有するものとする。
・出力層及びその参照層によって参照される全てのSPSは同じ値のsps_num_subpics_minus1を有するものとし、同じ値のsubpic_ctu_top_left_y[j]、subpic_ctu_top_left_y[j]、subpic_width_minus1[j]、subpic_height_minus1[j]及びloop_filter_across_subpic_enabled_flag[j](jの各値の範囲は0~sps_num_subpics_minus1)を有するものとする。
・出力層及びその参照層内の各アクセスユニット内の全てのピクチャは同じ値のSubpicIdVal[j](jの各値の範囲は0~sps_num_subpics_minus1)を有するものとする。
図23では、1と等しいloop_filter_across_subpic_enabled_flag[i]は、CLVS内の各コード化ピクチャ内のi番目のサブピクチャの境界にわたってインループフィルタリング動作が行われ得ることを指定する。0と等しいloop_filter_across_subpic_enabled_flag[i]は、CLVS内の各コード化ピクチャ内のi番目のサブピクチャの境界にわたってインループフィルタリング動作が行われないことを指定する。存在しない場合、loop_filter_across_subpic_enabled_pic_flag[i]の値は1 - sps_independent_subpics_flagと等しいと推定される。
仮想境界情報は、パラメータセット(例えば、SPS、PPS)又はピクチャヘッダ又はスライスヘッダで伝達され得る。仮想境界が存在する場合、仮想境界にわたるいかなるインループフィルタリングプロセスも許可されない。
一実施形態では、図24で、仮想境界情報はSPSで伝達される。1と等しいsps_virtual_boundies_enabled_flagは、仮想境界にわたるインループフィルタリングの無効が、CLVS内のコード化ピクチャに適用され得ることを指定する。0と等しいsps_virtual_boundies_enabled_flagは、仮想境界にわたるインループフィルタリングの無効が、CLVS内のコード化ピクチャに適用されないことを指定する。インループフィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ及び適応ループフィルタ動作を含む。
1と等しいsps_virtual_boundaries_present_flagは、仮想境界の情報がSPSで伝達されることを指定する。0と等しいsps_virtual_boundaries_present_flagは、仮想境界の情報がSPSで伝達されないことを指定する。1つ以上の仮想境界がSPSで伝達される場合、SPSを参照するピクチャ内の仮想境界にわたるインループフィルタリング動作は無効にされる。インループフィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ及び適応ループフィルタ動作を含む。res_change_in_clvs_allowed_flagの値と1に等しい場合、sps_virtual_boundries_present_flagの値は0と等しいものとすることがビットストリーム適合の要件である。sps_num_ver_virtual_boundriesは、SPS内に存在するsps_virtual_boundies_pos_x[i]構文要素の数を指定する。sps_num_ver_virtual_boundariesが存在しない場合、0と等しいと推定される。 sps_virtual_boundaries_pos_x[i]は、8で割った、i番目の垂直仮想境界の位置をルーマサンプルの単位で指定する。sps_virtual_boundaries_pos_x[i]の値の範囲は1~Ceil(pic_width_max_in_luma_samples
÷8)~1とする。sps_num_hor_virtual_boundariesは、SPS内に存在するsps_virtual_boundaries_pos_y[i]構文要素の数を指定する。sps_num_hor_virtual_boundariesが存在しない場合、0に等しいと推定される。
sps_virtual_boundies_enabled_flagが1と等しく、sps_virtual_boundies_present_flagが1と等しい場合、sps_num_ver_virtual_boundiesとsps_num_hor_virtual_boundiesの合計は0より大きいものとする。
sps_virtual_boundaries_pos_y[i]は、8で割った、i番目の水平仮想境界の位置をルーマサンプル単位で指定する。sps_virtual_boundies_pos_y[i]の値の範囲は1~Ceil(pic_height_max_in_luma_samples÷8)-1とする。
一実施形態において、図25では、1と等しいph_virtual_boundies_present_flagは、仮想境界の情報がPHで伝達されることを指定する。0と等しいph_virtual_boundies_present_flagは、仮想境界の情報がPHで伝達されないことを指定する。1つ以上の仮想境界がPHで伝達される場合、ピクチャ内の仮想境界にわたってインループフィルタリング動作が無効になる。インループフィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ及び適応ループフィルタ動作を含む。存在しない場合、ph_virtual_boundies_present_flagの値は0と等しいと推定される。subpic_info_present_flagが1と等しい場合、ph_virtual_boundies_present_flagの値は0に等しいものとすることがビットストリーム適合の要件である。
変数VirtualBoundariesPresentFlagは以下のように導出される。
VirtualBoundariesPresentFlag
= 0
if(sps_virtual_boundaries_enabled_flag)
VirtualBoundariesPresentFlag
= sps_virtual_boundaries_present_flag ||
ph_virtual_boundaries_present_flag
ph_num_ver_virtual_boundariesは、PHに存在するph_virtual_boundaries_pos_x[i]構文要素の数を指定する。ph_num_ver_virtual_boundariesが存在しない場合、0に等しいと推定される。
変数NumVerVirtualBoundariesは以下のように導出される。
NumVerVirtualBoundaries
= 0
if(sps_virtual_boundaries_enabled_flag)
NumVerVirtualBoundaries
= sps_virtual_boundaries_present_flag ?
sps_num_ver_virtual_boundaries
: ph_num_ver_virtual_boundaries
ph_virtual_boundies_pos_x[i]は、8で割った、i番目の垂直仮想境界の位置をルーマサンプル単位で指定する。ph_virtual_boundaries_pos_x[i]の値は1~Ceil(pic_width_in_luma_samples
÷8) - 1の範囲とする。
垂直仮想境界の位置を指定する、ルーマサンプル単位のリストVirtualBoundariesPosX
[i](iの範囲は0~NumVerVirtualBoundaries
- 1)は以下のように導出される。
for(i = 0;
i < NumVerVirtualBoundaries; i++)
VirtualBoundariesPosX[i]
= (sps_virtual_boundaries_present_flag ?
sps_virtual_boundaries_pos_x[i]
: ph_virtual_boundaries_pos_x[i]) * 8
2つの垂直仮想境界の間の距離は、CtbSizeYルーマスサンプル以上とする。
ph_num_hor_virtual_boundariesは、PH内に存在するph_virtual_boundaries_pos_y[i]構文要素の数を指定する。ph_num_hor_virtual_boundariesが存在しない場合、0に等しいと推定される。
パラメータNumHorVirtualBoundariesは以下のように導出される。
NumHorVirtualBoundaries
= 0
if(sps_virtual_boundaries_enabled_flag)
NumHorVirtualBoundaries
= sps_virtual_boundaries_present_flag ?
sps_num_hor_virtual_boundaries
: ph_num_hor_virtual_boundaries
sps_virtual_boundies_enabled_flagが1と等しく、ph_virtual_boundies_present_flagが1と等しい場合、ph_num_ver_virtual_boundiesとph_num_hor_virtual_boundiesとの合計は0より大きいものとする。
NALユニットタイプが異なるVCL NALユニットでピクチャが構成され得る場合、仮想境界情報はSPSで伝達され得る。その場合、仮想境界情報はピクチャヘッダで伝達されなくてもよい。
2つ以上のコード化サブピクチャがコード化ピクチャにマージされる場合、仮想境界情報が書き換えられ得る。仮想境界情報がピクチャヘッダ又はスライスヘッダで伝達される場合、マージ処理を複雑にする。
一実施形態では、mixed_nalu_types_in_pic_flagが1と等しい場合、ph_virtual_boundires_present_flagの値は0とする。
一実施形態では、仮想境界情報がSPSで伝達されない場合、仮想境界情報はPPSで伝達される。
同じ実施形態では、例えば、図26で、1と等しいpps_virtual_boundies_present_flagは、仮想境界の情報がPPSで伝達されることを指定する。0と等しいpps_virtual_boundaries_present_flagは、仮想境界の情報がPPSで伝達されないことを指定する。1つ以上の仮想境界がPPSで伝達される場合、インループフィルタリング動作は、ピクチャ内の仮想境界にわたって無効にされる。インループフィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ及び適応ループフィルタ動作を含む。存在しない場合、pps_virtual_boundies_present_flagの値は0に等しいと推定される。
sps_virtual_boundies_present_flagが1の場合、pps_virtual_boundies_present_flagは0となる。
subpic_info_present_flagが1と等しい場合、pps_virtual_boundies_present_flagの値は0と等しいものとすることがビットストリーム適合の要件である。
変数VirtualBoundariesPresentFlagは以下のように導出される。
VirtualBoundariesPresentFlag
= 0
if(sps_virtual_boundaries_enabled_flag)
VirtualBoundariesPresentFlag
= sps_virtual_boundaries_present_flag ||
pps_virtual_boundaries_present_flag
pps_num_ver_virtual_boundariesは、PH内に存在するpps_virtual_boundaries_pos_x[i]構文要素の数を指定する。pps_num_ver_virtual_boundariesが存在しない場合、それは0に等しいと推定される。
変数NumVerVirtualBoundariesは以下のように導出される。
NumVerVirtualBoundaries
= 0
if(sps_virtual_boundaries_enabled_flag)
NumVerVirtualBoundaries
= sps_virtual_boundaries_present_flag ?
sps_num_ver_virtual_boundaries
: pps_num_ver_virtual_boundaries
pps_virtual_boundies_pos_x[i]は、8で割った、ルーマサンプル単位でi番目の垂直仮想境界の位置を指定する。pps_virtual_boundies_pos_x[i]の値の範囲は1~Ceil(pic_width_in_luma_samples
÷8) - 1とする。
垂直仮想境界の位置を規定する、ルーマサンプルの単位のリストVirtualBoundariesPosX [i](iの範囲は0~NumVerVirtualBoundaries - 1)は以下のように導出される。
for( i =
0; i < NumVerVirtualBoundaries; i++)
VirtualBoundariesPosX[
i ] = ( sps_virtual_boundaries_present_flag ?
sps_virtual_boundaries_pos_x[
i ] : pps_virtual_boundaries_pos_x[ i ] ) * 8
2つの垂直仮想境界の間の距離は、CtdSizeYルーマサンプル以上とする。
本開示はいくつかの例示の実施形態を説明してきたが、本開示の範囲内にある変更、置換及び様々な代替的な均等物がある。そのため、当業者であれば、本明細書に明示的に図示又は説明されていないが、本開示の原理を具体化し、故に本開示の精神及び範囲内にある多くのシステム及び方法を考案できることが理解されるであろう。