図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示している。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末装置(310)および(320)の第1の対を含む。図3の例では、端末装置(310)および(320)の第1の対は、データの一方向の送信を実行する。例えば、端末装置(310)は、ネットワーク(350)を介して他の端末装置(320)に送信するためにビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオ画像のストリーム)を符号化し得る。符号化されたビデオデータは、1つまたは複数の符号化されたビデオビットストリームの形態で送信することができる。端末装置(320)は、ネットワーク(350)から符号化されたビデオデータを受信し、符号化されたビデオデータを復号してビデオ画像を復元し、復元されたビデオデータに従ってビデオ画像を表示することができる。一方向データ送信は、メディアサービング用途などで一般的であることがある。
別の例では、通信システム(300)は、例えばビデオ会議中に発生することがある符号化されたビデオデータの双方向送信を実行する端末装置(330)および(340)の第2の対を含む。データの双方向送信のために、一例では、端末装置(330)および(340)の各端末装置は、ネットワーク(350)を介して端末装置(330)および(340)の他方の端末装置に送信するためのビデオデータ(例えば、端末装置によってキャプチャされたビデオ画像のストリーム)を符号化し得る。端末装置(330)および(340)の各端末装置はまた、端末装置(330)および(340)の他方の端末装置によって送信された符号化されたビデオデータを受信し得、符号化されたビデオデータを復号してビデオ画像を復元し得、復元されたビデオデータに従ってアクセス可能な表示装置にビデオ画像を表示し得る。
図3の例では、端末装置(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示され得るが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用のビデオ会議機器を用いた用途を見出す。ネットワーク(350)は、例えば、有線および/または無線通信ネットワークを含む、端末装置(310)、(320)、(330)および(340)間で符号化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換および/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本議論の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではないことがある。
図4は、開示された主題の用途の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルテレビ、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの保存を含む、他のビデオ対応用途に等しく適用することができる。
ストリーミングシステムは、ビデオソース(401)、例えば、圧縮されていないビデオ画像のストリーム(402)を作成する、例えば、デジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一例では、ビデオ画像のストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。符号化されたビデオデータ(404)(または符号化されたビデオビットストリーム)と比較して高いデータ量を強調するために太線として示されているビデオ画像のストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子装置(420)によって処理することができる。ビデオエンコーダ(403)は、ハードウェア、ソフトウェア、またはそれらの組み合わせを含み得、以下により詳細に説明されるように、開示された主題の態様を可能にするかまたは実施する。符号化されたビデオデータ(404)(または符号化されたビデオビットストリーム(404))は、ビデオ画像のストリーム(402)と比較してより少ないデータ量を強調するために細い線として描かれ、将来の使用のためにストリーミングサーバ(405)に格納することができる。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、符号化されたビデオデータ(404)の複製(407)および(409)を取得することができる。クライアントサブシステム(406)は、例えば電子装置(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、符号化されたビデオデータの入力複製(407)を復号し、ディスプレイ(412)(例えば、表示画面)または他のレンダリング装置(図示せず)上にレンダリングすることができるビデオ画像の出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、符号化されたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)を、特定のビデオ符号化/圧縮標準に従って符号化できる。例えば、ITU-T勧告H.265などが挙げられる。一例では、開発中のビデオ符号化標準は、多用途ビデオ符号化(VVC)として非公式に知られている。開示された主題は、VVCの文脈で使用され得る。
電子装置(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子装置(420)はビデオデコーダ(図示せず)を含むことができ、電子装置(430)はビデオエンコーダ(図示せず)も含むことができる。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子装置(530)に含まれ得る。電子装置(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用することができる。
受信機(531)は、ビデオデコーダ(510)によって復号される1つまたは複数の符号化されたビデオシーケンスを受信し得、同じまたは別の実施形態では、一度に1つの符号化されたビデオシーケンスを受信し、各符号化されたビデオシーケンスの復号は、他の符号化されたビデオシーケンスから独立している。符号化されたビデオシーケンスは、チャネル(501)から受信し得、チャネル(501)は、符号化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクであり得る。受信機(531)は、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、符号化されたオーディオデータおよび/または補助データストリームと共に符号化されたビデオデータを受信し得る。受信機(531)は、符号化されたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)を、受信機(531)とエントロピーデコーダ/パーサ(520)(以下、「パーサ(520)」)との間に結合し得る。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外部にあってもよい(図示せず)。さらに他のものでは、例えばネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があり、さらに例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)があり得る。受信機(531)が十分な帯域幅および制御可能性の格納/転送装置から、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は必要ないか、または小さくてよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされることがあり、比較的大きくてもよく、有利には適応サイズであってもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装され得る。
ビデオデコーダ(510)は、符号化されたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示すように、電子装置(530)の不可欠な部分ではないが電子装置(530)に結合することができるレンダ装置(512)(例えば、表示画面)などのレンダリング装置を制御するための情報を含む。レンダリング装置(複数可)の制御情報は、Supplemental Enhancement Information(SEIメッセージ)またはVideo Usability Information(VUI)パラメータセットフラグメント(図示せず)の形式であることがある。パーサ(520)は、受信した符号化されたビデオシーケンスを解析/エントロピー復号し得る。符号化されたビデオシーケンスの符号化は、ビデオ符号化技術または標準に従うことができ、可変長符号化、ハフマン符号化、文脈依存の有無にかかわらず算術符号化などを含む様々な原則に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、符号化されたビデオシーケンスから、ビデオデコーダ内の画素のサブグループの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループには、画像グループ(GOP)、画像、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含めることができる。パーサ(520)はまた、変換係数、量子化器パラメータ値、動きベクトルなどの符号化されたビデオシーケンス情報から抽出し得る。
パーサ(520)は、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピー復号/構文解析動作を実行して、シンボル(521)を作成し得る。
シンボル(521)の再構成は、符号化されたビデオ画像またはその一部(画像間およびイントラ画像、ブロック間およびイントラブロックなど)のタイプ、および他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように関与するかは、パーサ(520)によって符号化されたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、分かりやすくするために描かれていない。
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下に説明するように、概念的にいくつかの機能ユニットに細分することができる。商業的制約の下で動作する実際の実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示された主題を説明するために、以下の機能ユニットへの概念的な細分化が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、ならびに使用する変換、ブロックサイズ、量子化因子、量子化スケーリングマトリクスなどを含む制御情報を、パーサ(520)からシンボル(複数可)(521)として受け取る。スケーラ/逆変換ユニット(551)は、集約装置(555)に入力され得るサンプル値を備えるブロックを出力し得る。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラ符号化されたブロックに関係することができ、つまり、以前に再構成された画像からの予測情報を使用していないが、現在の画像の以前に再構成された部分からの予測情報を使用できるブロックである。そのような予測情報は、イントラ画像予測ユニット(552)によって提供することができる。場合によっては、イントラ画像予測ユニット(552)は、現在の画像バッファ(558)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在の画像バッファ(558)は、例えば、部分的に再構成された現在の画像および/または完全に再構成された現在の画像をバッファに入れる。集約装置(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコードされ、潜在的に動き補償されたブロックに関係し得る。このような場合、動き補償予測ユニット(553)は、参照画像メモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、集約装置(555)によってスケーラ/逆変換ユニット(551)の出力に追加できる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照画像メモリ(557)内のアドレスは、動きベクトルによって制御することができ、例えば、X、Y、および参照画像コンポーネントを有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能である。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照画像メモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測機構などを含むことができる。
集約装置(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術の対象となり得る。ビデオ圧縮技術は、符号化されたビデオシーケンス(符号化されたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能になるインループフィルタ技術を含むことができるが、符号化された画像または符号化されたビデオシーケンスの前の(復号順で)部分の復号中に取得されたメタ情報に応答することができ、以前に再構成およびループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダ装置(512)に出力され得るだけでなく、将来の画像間予測で使用するために参照画像メモリ(557)に格納され得るサンプルストリームであり得る。
特定の符号化された画像は、完全に再構成されると、将来の予測のための参照画像として使用できる。例えば、現在の画像に対応する符号化された画像が完全に再構成され、(例えば、パーサ(520)によって)符号化された画像が参照画像として識別されると、現在の画像バッファ(558)は、参照画像メモリ(557)の一部になることができ、次の符号化された画像の再構成を開始する前に、新しい現在の画像バッファを再割り当てすることができる。
ビデオデコーダ(510)は、例えばITU-T Rec.H.265などの、標準の所定のビデオ圧縮技術に従って復号動作を実行し得る。符号化されたビデオシーケンスは、符号化されたビデオシーケンスがビデオ圧縮技術または標準の構文と、ビデオ圧縮技術または標準に文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または標準によって指定された構文に準拠することがある。具体的には、プロファイルは、ビデオ圧縮技術または標準で利用可能なすべてのツールから、そのプロファイルの下で使用可能な唯一のツールとして特定のツールを選択することができる。また、コンプライアンスのために必要なのは、符号化されたビデオシーケンスの複雑さが、ビデオ圧縮技術または標準のレベルによって定義された範囲内にあることである。場合によっては、レベルによって、最大画像サイズ、最大フレームレート、最大再構成サンプルレート(例えば、1秒当たりのメガサンプル数で測定)、最大参照画像サイズなどが制限される。レベルによって設定される制限は、場合によっては、ハイポセティカルリファレンスデコーダ(HRD)仕様と、符号化されたビデオシーケンスにおいて伝えられるHRDバッファ管理のメタデータによってさらに制限されることがある。
一実施形態では、受信機(531)は、符号化されたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、符号化されたビデオシーケンス(複数可)の一部として含まれることがある。追加のデータは、データを適切に復号するため、および/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)強化層、冗長スライス、冗長画像、順方向エラー訂正コードなどの形式をとることができる。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子装置(620)に含まれる。電子装置(620)は、送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によって符号化されるビデオ画像(複数可)をキャプチャし得るビデオソース(601)(図6の例では電子装置(620)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は電子装置(620)の一部である。
ビデオソース(601)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形式で、ビデオエンコーダ(603)によって符号化されるソースビデオシーケンスを提供し得る。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見たときに動きを与える複数の個別の画像として提供し得る。画像自体は、画素の空間配列として編成することができ、各画素は、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含むことができる。当業者は、画素とサンプルとの間の関係を容易に理解することができる。以下の説明はサンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって要求される他の任意の時間制約の下で、ソースビデオシーケンスの画像を符号化されたビデオシーケンス(643)に符号化および圧縮し得る。適切な符号化速度を強制することは、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。分かりやすくするために、結合は描かれていない。コントローラ(650)によって設定されるパラメータには、レート制御関連のパラメータ(画像スキップ、量子化器、レート歪み最適化手法のラムダ値など)、画像サイズ、画像グループ(GOP)レイアウト、最大動きベクトル検索範囲などが含まれ得る。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、符号化ループで動作するように構成される。過度に簡略化された説明として、一例では、符号化ループは、ソースコーダ(630)(例えば、符号化される入力画像と、参照画像(複数可)とに基づいて、シンボルストリームのようなシンボルを生成することを担当する)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダも作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する(開示された主題で考慮されるビデオ圧縮技術では、シンボルと符号化されたビデオビットストリームとの間の任意の圧縮が可逆的であるため)。その再構成されたサンプルストリーム(サンプルデータ)は、参照画像メモリ(634)に入力される。シンボルストリームの復号により、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクト(bit-exact)結果が得られるため、参照画像メモリ(634)内の内容もまたローカルエンコーダとリモートエンコーダとの間でビットイグザクトになる。言い換えると、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照画像サンプルとして「見る」。参照画像の同期性(および、例えばチャネルエラーのために同期性を維持できない場合に生じるドリフト)のこの基本原理は、いくつかの関連する技術においても使用される。
「ローカル」デコーダ(633)の動作は、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得、これは、図5に関連して上記で詳細に説明されている。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)による符号化されたビデオシーケンスへのシンボルの符号化/復号は可逆であり得、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、ローカルデコーダ(633)に完全に実装されていないことがある。
この時点で行うことができる観察は、デコーダに存在する解析/エントロピー復号以外のデコーダ技術も、対応するエンコーダにおいて、実質的に同一の機能形式で必ず存在する必要があるということである。このため、開示された主題はデコーダ動作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
動作中、いくつかの例では、ソースコーダ(630)は、動き補償予測符号化を実行することがあり、これは、「参照画像」として指定されたビデオシーケンスからの1つまたは複数の以前に符号化された画像を参照して入力画像を予測的に符号化する。このようにして、符号化エンジン(632)は、入力画像の画素ブロックと、入力画像への予測参照(複数可)として選択され得る参照画像(複数可)の画素ブロックとの間の差異を符号化する。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照画像として指定され得る画像の符号化されたビデオデータを復号し得る。符号化エンジン(632)の動作は、有利には、非可逆プロセスであり得る。符号化されたビデオデータがビデオデコーダ(図6には示されていない)で復号され得る場合、再構成されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照画像上でビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照画像を参照画像キャッシュ(634)に格納させ得る。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構成された参照画像として共通の内容を有する再構成された参照画像の複製をローカルに格納し得る(送信エラーがない)。
予測子(635)は、符号化エンジン(632)の予測検索を実行し得る。すなわち、符号化される新しい画像に対して、予測子(635)は、サンプルデータ(候補参照画素ブロックとして)または新しい画像の適切な予測参照として役立ち得る参照画像動きベクトル、ブロック形状などの特定のメタデータについて、参照画像メモリ(634)を検索し得る。予測子(635)は、適切な予測参照を見つけるために、画素ブロックごとに1つのサンプルブロックで動作し得る。場合によっては、予測子(635)によって取得された検索結果によって決定されるように、入力画像は、参照画像メモリ(634)に格納された複数の参照画像から引き出された予測参照を有し得る。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)の符号化動作を管理し得る。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピー符号化を受けることがある。エントロピーコーダ(645)は、ハフマン符号化、可変長符号化、算術符号化などの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成された符号化されたビデオシーケンス(複数可)をバッファに入れて、通信チャネル(660)を介した送信のために準備し得、通信チャネル(660)は、符号化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクであり得る。送信機(640)は、ビデオコーダ(603)からの符号化されたビデオデータを、送信される他のデータ、例えば、符号化されたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。符号化中に、コントローラ(650)は、それぞれの符号化された画像に特定の符号化された画像タイプを割り当てることがあり、これは、それぞれの画像に適用され得る符号化技術に影響を及ぼし得る。例えば、画像は多くの場合、次の画像タイプのいずれかとして割り当てられ得る。
イントラ画像(I画像)は、予測のソースとしてシーケンス内の他の画像を使用せずに符号化および復号され得るものであり得る。一部のビデオコーデックでは、例えばIndependent Decoder Refresh(「IDR」)Pictureなど、様々なタイプのイントラ画像を使用できる。当業者は、I画像のこれらの変形およびそれらのそれぞれの用途および特徴を知っている。
予測画像(P画像)は、各ブロックのサンプル値を予測するために最大1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して符号化および復号され得るものであり得る。
双方向予測画像(B画像)は、各ブロックのサンプル値を予測するために最大2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して符号化および復号され得るものであり得る。同様に、複数の予測画像は、単一ブロックの再構成のために3つ以上の参照画像および関連するメタデータを使用できる。
ソース画像は、一般に、空間的に複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、または16×16サンプルのブロック)に細分され、ブロックごとに符号化され得る。ブロックは、ブロックのそれぞれの画像に適用される符号化割り当てによって決定されるように、他の(すでに符号化された)ブロックを参照して予測的に符号化し得る。例えば、I画像のブロックは、非予測的に符号化され得るか、または同じ画像のすでに符号化されたブロックを参照して予測的に符号化され得る(空間予測またはイントラ予測)。P画像の画素ブロックは、空間予測を介して、または以前に符号化された1つの参照画像を参照する時間予測を介して、予測的に符号化され得る。B画像のブロックは、空間予測を介して、または以前に符号化された1つまたは2つの参照画像を参照する時間予測を介して、予測的に符号化され得る。
ビデオエンコーダ(603)は、例えばITU-T Rec.H.265などの所定のビデオ符号化技術または標準に従って符号化動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測符号化動作を含む、様々な圧縮動作を実行し得る。従って、符号化されたビデオデータは、使用されているビデオ符号化技術または標準によって指定された構文に準拠していることがある。
一実施形態では、送信機(640)は、符号化されたビデオと共に追加のデータを送信し得る。ソースコーダ(630)は、符号化されたビデオシーケンスの一部としてそのようなデータを含み得る。追加データは、時間的/空間的/SNR強化層、冗長な画像およびスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、複数のソース画像(ビデオ画像)として時系列に撮像されてもよい。イントラ画像予測(しばしばイントラ予測と略される)は、所与の画像における空間相関を利用し、画像間予測は、画像間の(時間的または他の)相関を利用する。一例では、現在の画像と呼ばれる、符号化/復号中の特定の画像がブロックに分割される。現在の画像内のブロックがビデオ内の以前に符号化されてまだバッファされている参照画像内の参照ブロックに類似しているとき、現在の画像内のブロックは、動きベクトルと呼ばれるベクトルによって符号化することができる。動きベクトルは、参照画像内の参照ブロックを指し、複数の参照画像が使用されている場合、参照画像を識別する第3の次元を有することができる。
いくつかの実施形態では、画像間予測に双予測技術を使用することができる。双予測技術によれば、第1の参照画像および第2の参照画像などの2つの参照画像が使用され、これらは両方ともビデオ内の現在の画像の復号順より前にある(しかし、表示順序は、それぞれ過去および未来のものであってもよい。)。現在の画像内のブロックは、第1の参照画像内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照画像内の第2の参照ブロックを指す第2の動きベクトルによって符号化することができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測することができる。
さらに、符号化効率を改善するために、画像間予測にマージモード技術を使用することができる。
本開示のいくつかの実施形態によれば、画像間予測およびイントラ画像予測などの予測は、ブロック単位で実行される。例えば、HEVC標準によれば、ビデオ画像のシーケンス内の画像は、圧縮のために符号化ツリーユニット(CTU)に分割され、画像内のCTUは、64 x 64ピクセル、32 x 32ピクセル、または16 x 16ピクセルなどの同じサイズを有する。一般に、CTUは、1つのルマCTBおよび2つのクロマCTBである3つの符号化ツリーブロック(CTB)を含む。各CTUは、1つまたは複数の符号化ユニット(CU)に再帰的にクワッドツリー分割することができる。例えば、64x64ピクセルのCTUは、64x64ピクセルの1つのCU、または32x32ピクセルの4つのCU、または16x16ピクセルの16個のCUに分割することができる。一例では、各CUは、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために分析される。CUは、時間的および/または空間的な予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、ルマ予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態では、符号化(符号化/復号)における予測演算は、予測ブロックの単位で実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、ルマ値)の行列を含む。
図7は、本開示の別の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオ画像のシーケンス内の現在のビデオ画像内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、符号化されたビデオシーケンスの一部である符号化された画像に符号化するように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックのサンプル値の行列を受信する。ビデオエンコーダ(703)は、処理ブロックが、例えばレート歪み最適化を使用して、イントラモード、インターモード、または双予測モードを使用して最良に符号化されるかどうかを決定する。処理ブロックがイントラモードで符号化される場合、ビデオエンコーダ(703)は、処理ブロックを符号化された画像へ符号化するために、イントラ予測技術を使用し得、処理ブロックがインターモードまたは双予測モードで符号化されるとき、ビデオエンコーダ(703)は、処理ブロックを符号化された画像に符号化するために、それぞれインター予測技術または双予測技術を使用し得る。特定のビデオ符号化技術では、マージモードは、予測子の外側の符号化された動きベクトル成分の恩恵を受けずに動きベクトルが1つまたは複数の動きベクトル予測子から導出される画像間予測サブモードであり得る。特定の他のビデオ符号化技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示すように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差算出部(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを参照画像(例えば、前の画像および後の画像内のブロック)内の1つまたは複数の参照ブロックと比較し、インター予測情報(例えば、インター符号化技術、動きベクトル、マージモード情報による冗長情報の記述)を生成し、任意の適切な技術を使用してインター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照画像は、符号化されたビデオ情報に基づいて復号される復号参照画像である。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、ブロックを同じ画像内ですでに符号化されているブロックと比較し、変換後に量子化係数を生成し、場合によってはイントラ予測情報(例えば、1つまたは複数のイントラ符号化技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)は、イントラ予測情報と、同一画像内の参照ブロックとに基づいて、イントラ予測結果(例えば、予測ブロック)も算出する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいてスイッチ(726)に制御信号を提供する。例えば、汎用コントローラ(721)は、モードがイントラモードである場合、スイッチ(726)を制御して、残差算出部(723)が用いるイントラモード結果を選択させ、エントロピーエンコーダ(725)を制御して、イントラ予測情報を選択してビットストリームに含めさせ、モードがインターモードである場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差算出部(723)が用いるインター予測結果を選択させると共に、エントロピーエンコーダ(725)を制御して、インター予測情報を選択してビットストリームに含めさせる。
残差算出部(723)は、受信されたブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との差分(残差データ)を算出する。残差エンコーダ(724)は、残差データに基づいて動作して、変換係数を生成するために残差データを符号化するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。変換係数はその後、量子化された変換係数を得るために量子化処理を受ける。様々な実施形態において、ビデオエンコーダ(703)はまた、残差デコーダ(728)を含む。残差デコーダ(728)は、逆変換を実行し、復号された残差データを生成するように構成される。復号された残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって好適に用い得る。例えば、インターエンコーダ(730)は、復号された残差データとインター予測情報とに基づいて復号されたブロックを生成することができ、イントラエンコーダ(722)は、復号残差データとイントラ予測情報とに基づいて復号されたブロックを生成することができる。いくつかの例では、復号されたブロックは、復号された画像を生成するために適切に処理され、復号された画像は、メモリ回路(図示せず)にバッファされ、参照画像として使用され得る。
エントロピーエンコーダ(725)は、符号化されたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC標準などの適切な標準に従って様々な情報を含むように構成される。一例では、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報をビットストリームに含めるように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックを符号化するとき、残差情報は存在しないことに留意されたい。
図8は、本開示の別の実施形態によるビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、符号化されたビデオシーケンスの一部である符号化された画像を受信し、符号化された画像を復号して再構成された画像を生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示すように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、符号化された画像から、符号化された画像を構成する構文要素を表す特定のシンボルを再構成するように構成され得る。そのようなシンボルは、例えば、ブロックが符号化されるモード(例えば、イントラモード、インターモード、双方向予測モード、後者の2つは、マージサブモードまたは別のサブモード)、イントラデコーダ(872)またはインターデコーダ(880)によってそれぞれ予測に使用される特定のサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報やインター予測情報など)、例えば量子化変換係数の形態の残差情報などを含むことができる。一例では、予測モードがインター予測モードまたは双方向予測モードである場合、インター予測情報はインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実行して逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含むために)特定の制御情報を必要とする場合があり、その情報はエントロピーデコーダ(871)によって提供される場合がある(これとして示されていないデータ経路は、低量制御情報のみであり得る)。
再構成モジュール(874)は、空間領域において、残差デコーダ(873)による出力としての残差と、(場合によってはインターまたはイントラ予測モジュールによる出力としての)予測結果とを組み合わせて、再構成画像の一部であり得る再構成ブロックを形成するように構成され、再構成ブロックは再構成ビデオの一部であり得る。視覚的品質を改善するために、非ブロック化動作などの他の適切な動作を実行することができることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技術を使用して実施することができることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実施することができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実施することができる。
本開示の態様は、符号化されたビデオストリームにおける制約フラグを用いた符号化ツール(複数可)および機能の制御を含む。
ビデオエンコーダおよびデコーダは、符号化されたビデオシーケンス(CVS)、画像グループ(GOP)、または同様のマルチ画像タイムフレームに対して定義され一定のままである所与の画像サイズで動作し得る。MPEG-2などの例では、システム設計は、シーンのアクティビティなどの要因に応じて水平解像度(したがって、画像サイズ)を変更することが知られているが、I画像においてのみであり、したがって通常はGOPの場合である。CVS内の異なる解像度を使用するための参照画像の再サンプリングは、例えばITU-T Rec.H.263 Annex Pから知られている。しかしながら、画像サイズは変化せず、参照 画像のみが再サンプリングされ、(例えばダウンサンプリングにおいて)画像キャンバスの一部のみが使用される、または(例えばアップサンプリングにおいて)シーンの一部のみがキャプチャされる可能性がある。H.263 Annex Qなどのいくつかの例では、各次元(例えば、上方または下方)で個々のマクロブロックを2倍だけ再サンプリングすることが許容される。画像サイズは同じままであり得る。マクロブロックのサイズは、例えばH.263では固定されることができ、通知される必要はない。
予測画像の画像サイズは変更可能である。VP9などの例では、参照画像の再サンプリングおよび画像全体の解像度の変更が許容される。一例(例えば、その全体が本明細書に組み込まれる、Hendryら、「On adaptive resolution change(ARC)for VVC」、Joint Video Team document JVET-M0l35-vl,Jan 9-l9,20l9を含む)では、異なる解像度(例えば、より高い解像度またはより低い解像度)への参照画像全体の再サンプリングが許容される。異なる候補解像度は、シーケンスパラメータセット(SPS)内で符号化されることが可能であり、画像パラメータセット(PPS)内で画像ごとの構文要素によって参照されることが可能である。
ビデオビットストリームにおける適応画像サイズの通知の技術が本開示に開示される。
画像が異なる品質を有する1つまたは複数の層を含むビットストリームに符号化される場合、ビットストリームは、デコーダ側でどの層(複数可)(または層のセット)を出力できるかを指定する構文要素を有することができる。出力される層のセットは、出力層セットとして定義することができる。複数の層およびスケーラビリティをサポートする例示的なビデオコーデックでは、1つまたは複数の出力層セットをビデオパラメータセット(VPS)で通知することができる。ビットストリーム全体または1つまたは複数の出力層セットのプロファイルティアレベル(PTL)を指定する構文要素は、VPS、デコーダ機能情報(DCI)と同一のDPS、SPS、PPS、SEIメッセージなどで通知することができる。PTL情報には、符号化ツールや機能の制約を指定可能な汎用制約情報が存在し得る。様々な符号化ツールおよび機能の制約情報を効率的に表し、通知することが望ましい。
サブ画像は、例えば、意味的にグループ化され、変更された解像度で独立して符号化され得るサンプル、ブロック、マクロブロック、符号化ユニット、または同様のエンティティの矩形配置を指すことができる。1つまたは複数のサブ画像が画像を形成することができる。1つまたは複数の符号化されたサブ画像は、符号化された画像を形成することができる。1つまたは複数のサブ画像を画像に組み立てることができ、1つまたは複数のサブ画像を画像から抽出することができる。いくつかの例では、1つまたは複数の符号化されたサブ画像は、サンプルレベルまで符号化された画像にトランスコードすることなく、圧縮された領域に組み立てることができる。いくつかの例では、1つまたは複数の符号化されたサブ画像を、圧縮された領域内の符号化された画像から抽出することができる。
適応解像度変更(ARC)は、例えば、参照画像再サンプリングによって、CVS内の画像またはサブ画像の解像度の変更を可能にするメカニズムを称し得る。ARCパラメータは、適応解像度変更を実行するために使用される制御情報を参照することができる。ARCパラメータは、フィルタパラメータ、スケーリング係数、出力および/または参照画像の解像度、様々な制御フラグ等を含み得る。
上記の説明は、単一の意味的に独立した符号化されたビデオ画像の符号化および復号に適用することができる。独立したARCパラメータおよびその暗示される追加の複雑さを有する複数のサブ画像の符号化/復号を説明する前に、ARCパラメータを通知することが記載される。
図9は、本開示の実施形態によるARCパラメータを通知するための例(例えば、オプション)を示す。符号化効率、複雑さ、およびアーキテクチャは、例によって異なり得る。ビデオ符号化標準または技術は、ARCパラメータを通知するために、例または他の変形例のうちの1つまたは複数を選択することができる。これらの例は、相互に排他的でなくてもよく、用途のニーズ、標準技術、エンコーダの選択、および/またはこれらに類似するものに基づいて交換されてもよい。
ARCパラメータのクラスは、以下を含み得る。
・アップサンプル係数および/またはダウンサンプル係数は、X次元およびY次元で分離または結合され、アップサンプル係数および/またはダウンサンプル係数を含むテーブルを指し示すことができる1つまたは複数の短い構文要素を符号化することができる。
・時間次元を追加したアップサンプルおよび/またはダウンサンプル係数は、所与の数の画像の一定速度のズームインおよび/またはズームアウトを示し、時間次元を追加したアップサンプルおよび/またはダウンサンプル係数を含むテーブルを指し示すことができる1つまたは複数の短い構文要素を符号化することができる。
・入力画像、出力画像、参照画像、符号化画像の、組み合わされた、または別々の、サンプル、ブロック、マクロブロック、CU、または任意の他の適切な粒度の単位でのX次元またはY次元の解像度。2つ以上の解像度がある場合(例えば、入力画像のための1つの解像度、参照画像のための別の解像度)、値のセットは、別の値のセットから推測することができ、これは、例えば、以下に説明するように、フラグの使用によってゲートすることができる。
・上述したように適切な粒度で、H.263 Annex Pで使用されるものと同様のワーピング座標。H.263 Annex Pは、ワーピング座標を符号化する効率的な方法を定義する。他の効率的な方法を考案することができる。例えば、Annex Pのワーピング座標の可変長可逆的なハフマンスタイルの符号化は、適切な長さのバイナリコードに置き換えることができ、バイナリ符号語の長さは、係数を乗算し、最大画像サイズの境界の外側のワーピングを可能にする値だけオフセットされた最大画像サイズから導出することができる。
・アップサンプルおよび/またはダウンサンプルフィルタパラメータ。一例では、アップサンプリングおよび/またはダウンサンプリングのための単一のフィルタのみが存在する。一例では、フィルタ設計においてより多くの柔軟性を可能にすることが有利である。一例では、フィルタパラメータが通知される。フィルタパラメータは、可能なフィルタ設計のリスト内のインデックスを使用して選択することができる。フィルタは完全に指定されてもよく(例えば、適切なエントロピー符号化技術を使用して、フィルタ係数のリストを指定することによって)、フィルタは、上記の機構のいずれかに従って通知されるアップサンプルまたはダウンサンプル比などによって暗黙的に選択されてもよい。
この説明は、符号語によって示される、アップサンプル係数またはダウンサンプル係数の有限のセット(X次元およびY次元の両方で使用される同じ係数)の符号化に適用可能であり得る。符号語は、有利には、例えば、ビデオ符号化仕様(例えば、H.264およびH.265)における特定の構文要素に対してExt-Golomb符号を使用して可変長符号化されることができる。アップサンプルまたはダウンサンプル係数に対する値の適切なマッピングは、例えば、表1に基づくことができる。
ビデオ圧縮技術または標準で利用可能なアップスケールおよびダウンスケールメカニズムの用途および能力に従って、同様のマッピングを考案することができる。表1は、追加の値に適切に拡張することができる。値は、例えばバイナリ符号化を使用することによって、Ext-Golomb符号以外のエントロピー符号化機構によって表され得る。一例では、Ext-Golomb符号以外のエントロピー符号化メカニズムは、例えばメディアアウェアネットワーク要素(MANE)によって、再サンプリング係数がビデオ処理エンジン(例えば、エンコーダおよびデコーダ)の外部で関心がある場合、特定の利点を有することができる。解像度の変更が必要とされない場合(例えば、オリジナル/ターゲット解像度は表1の1である)、短いExt-Golomb符号(例えば、表1に示す1ビットのみ)を選択することができ、これは、例えば、最も一般的な場合にバイナリコードを使用するよりも符号化効率の利点を有することができる。
表1のいくつかのエントリおよび対応するセマンティクスは、完全にまたは部分的に構成可能であり得る。例えば、表1の基本的な概要は、SPSまたはDPSなどの高レベルパラメータセットで伝達される。代替的または追加的に、表1と同様の1つまたは複数の表は、ビデオ符号化技術または標準で定義されてもよく、例えばSPSまたはDPSを介して選択されてもよい。
上記のように符号化されたアップサンプルまたはダウンサンプル係数(ARC情報)がビデオ符号化技術または標準構文にどのように含まれ得るかは、上記で説明されている。アップサンプルまたはダウンサンプルフィルタを制御する1つまたは少数の符号語にも同様の考慮事項が適用され得る。以下、フィルタまたは他のデータ構造に比較的多くのデータが必要な場合について説明する。
図9を参照すると、H.263 Annex Pなどの例では、4つのワーピング座標の形態のARC情報(902)が画像ヘッダ(901)、具体的にはH.263 PLUSPTYPE(903)ヘッダ拡張に含まれる。ARC情報(902)とH.263 PLUSPTYPE(903)ヘッダ拡張を含む画像ヘッダ(901)は、i)画像ヘッダが利用可能であり、ii)ARC情報の頻繁な変更が予想される場合に適用することができる。しかしながら、H.263スタイルの通知を使用するときのオーバーヘッドは高くなる可能性があり、画像ヘッダは過渡的な性質であり得るため、スケーリング係数は画像境界間で適用できない可能性がある。
図9を参照すると、JVCET-M 135-v1などの例では、PPS(904)内に位置するARC参照情報(905)(例えば、インデックス)は、テーブル(906)がSPS(907)内に位置するターゲット解像度(例えば、解像度1~3)を含むテーブル(またはターゲット解像度テーブル)(906)を指すことができる。テーブル(906)内のターゲット解像度をSPS(907)に配置することは、機能交換中の相互運用性ネゴシエーションポイントとしてSPSを使用することによって正当化され得る。解像度は、適切なPPS(904)を参照することで、ある画像から別の画像へ、テーブル(906)内の値(例えば、解像度1~3)で設定される制限内で変化し得る。
図9に戻って参照すると、追加のオプションまたは例を使用して、ビデオビットストリームでARC情報を伝達することができる。複数のオプションは、同じビデオ符号化技術または標準で同時に存在してもよい。
一実施形態では、再サンプリング係数(またはズーム係数)などのARC情報(909)は、スライスヘッダ、GOBヘッダ、タイルヘッダ、タイルグループヘッダなどのヘッダ内に存在することができる。タイルグループヘッダ(908)が、例えば図9に示されている。この実施形態は、上述したように、単一の可変長ue(v)または数ビットの固定長符号語など、ARC情報(909)のためのメモリ空間が小さい場合に適切であり得る。
ヘッダ(例えば、図9のタイルグループヘッダ(908)、スライスヘッダ、またはタイルヘッダ)内にARC情報(909)を直接有することは、ARC情報(909)が、画像全体ではなく、例えば、対応するタイルグループ(またはスライス、タイル)によって表されるサブ画像に適用可能であり得るという点で、さらなる利点を有し得る。さらに、例では、ビデオ圧縮技術または標準が、全画像適応解像度変更(例えば、タイルグループベースの適応解像度の変化とは対照的に)のみを想定している場合であっても、ARC情報(909)をH.263スタイルの画像ヘッダに入れることに対して、ARC情報(909)をタイルグループヘッダ(908)に入れることは、エラー回復力の観点から、特定の利点を有し得る。
図9を参照すると、ARC情報(912)は、PPS、ヘッダパラメータセット、タイルパラメータセット、適応パラメータセット(APS)などのパラメータセット(911)に存在し得る。APS(911)は、例えば図9に示されている。パラメータセット(911)の範囲は、有利には、画像、例えばタイルグループ以下とすることができる。ARC情報(例えば、ARC情報(912))の使用は、関連するパラメータセット(例えば、APS(911))のアクティブ化によって暗黙的に行われ得る。例えば、ビデオ符号化技術または標準が画像ベースのARCのみを企図する場合、PPSまたは同等物が適切であり得る。
いくつかの実施形態では、ARC参照情報(913)は、上述したように、タイルグループヘッダ(914)または類似のデータ構造(例えば、画像ヘッダ、スライスヘッダ、タイルヘッダ、またはGOPヘッダ)に存在し得る。タイルグループヘッダ(914)は、例えば図9に示されている。ARC参照情報(913)は、例えば、SPS、DPSなどの単一の画像を超える範囲を有するパラメータセット(916)で利用可能なARC情報(915)のサブセットを参照することができる。SPS(916)は、例えば図9に示されている。
図10は、本開示の実施形態によるARCパラメータ通知の例を示す図である。図10は、ビデオ符号化標準で使用される構文図の例を示す図である。一例では、構文図の表記は、おおよそC型プログラミングに従う。太字の線は、ビットストリームに存在する構文要素を示すことができ、太字のない線は、制御フロー(複数可)または変数の設定を示すことができる。
図10を参照すると、画像の一部(例えば、矩形部分)に適用可能なヘッダの例示的な構文構造としてのタイルグループヘッダ(1001)は、条件付きで、可変長のExp-Golomb符号化構文要素dec_pic_size_idx(1002)(太字で描かれている)を含むことができる。タイルグループヘッダ(1001)内の構文要素(例えば、dec_pic_size_idx(1002))の存在は、例えばフラグ(例えば、adaptive_pic_resolution_change_flag)(1003)によって表される適応解像度に基づいてゲートすることができる。フラグ(例えば、adaptive_pic_resolution_change_flag)(1003)の値は太字では示されておらず、したがって、フラグは、構文図においてフラグが発生する点においてビットストリーム内に存在する。適応解像度が画像または画像の一部に使用されているかどうかは、ビットストリームの内部または外部の高レベル構文構造(例えば、以下に記載されるようなSPS(1010))で通知することができる。
図10を参照すると、SPS(1010)の抜粋が示されている。示されている第1の構文要素はフラグ(例えば、adaptive_pic_resolution_change_flag)(1011)である。フラグが真である場合、フラグは、特定の制御情報を必要とし得る適応解像度の使用を示すことができる。一例では、特定の制御情報は、SPS(1010)およびタイルグループヘッダ(1001)内のif()文(1012)によって示されるように、フラグ(1011)の値に基づいて条件付きで存在する。
図10の例に示すように、適応解像度が使用されている場合、サンプル単位の出力解像度(または出力画像の解像度)(1013)を符号化することができる。出力解像度(1013)は、幅解像度(例えば、output_pic_width_in_luma_samples)と高さ解像度(例えば、output_pic_height_in_luma_samples)の両方を指すことができる。幅解像度および高さ解像度は、出力解像度(1013)を定義することができる。ビデオ符号化技術または標準では、出力解像度(1013)の値(複数可)に対する特定の制限を定義することができる。例えば、レベル定義は、総出力サンプル数(例えば、output_pic_width_in_luma_samplesとoutput_pic_height_in_luma_samplesの積)を制限することができる。ビデオ符号化技術もしくは標準、または外部技術もしくは標準(例えば、システム標準)は、範囲(例えば、幅解像度および/または高さ解像度は、2の累乗で割り切れる)、アスペクト比(例えば、高さ解像度に対する幅解像度の比は4:3または16:9である)などを制限することができる。一例では、ハードウェア実装を容易にするために上記の制限を導入することができる。
特定の用途では、エンコーダは、サイズが出力画像サイズであると暗黙的に仮定するのではなく、特定の参照画像サイズを使用するようにデコーダに指示することができる。例えば、構文要素(例えば、reference_pic_size_present_flag)(1014)は、参照画像寸法(1015)の条件付き存在をゲートする。参照画像寸法(1015)は、幅(例えば、reference_pic_width_in_luma_samples)と高さ(例えば、reference_pic_height_in_luma_samples)の両方を指すことができる。
図10は、適用可能な復号画像の幅および高さのテーブルを示す。テーブルは、テーブル表示(例えば、構文要素num_dec_pic_size_in_luma_samples_minus1)(1016)で表すことができる。「minus1」は、構文要素(1016)の値の解釈を指すことができる。例えば、符号化された値が0である場合、1つのテーブルエントリが存在する。符号化された値が5である場合、6つのテーブルエントリが存在する。表の各行について、復号された画像の幅および高さは構文要素(1017)に含まれる。
構文要素(1017)によって表されるテーブルエントリは、タイルグループヘッダ(1001)内の構文要素dec_pic_size_idx(1002)を使用して索引付けすることができ、したがって、タイルグループごとに異なる復号サイズおよびズーム率を可能にする。
特定のビデオ符号化技術または標準(例えばVP9)は、時間スケーラビリティと併せて特定の形式の参照画像再サンプリングを実装することによって空間スケーラビリティをサポートすることができ、したがって空間スケーラビリティを可能にすることができる。一実施形態では、参照画像は、ARCスタイル技術を使用してより高い解像度にアップサンプリングされ、空間強化層のベースを形成する。アップサンプリングされた画像は、例えば詳細を追加するために、高解像度で通常の予測メカニズム(例えば、参照画像からのインター予測のための動き補償予測)を使用して改良され得る。
本開示は、このような環境で使用することができる。いくつかの例では、ネットワーク抽象化層(NAL)ユニットヘッダ内の値、例えばTemporal IDフィールドは、時間層および空間層を示すために使用される。利点には、既存の選択された転送ユニット(SFU)をスケーラブルな環境に変更せずに使用できることが含まれる。SFUは、NALユニットヘッダTemporal ID値に基づいて、時間層で選択された転送用に作成および最適化することができる。これを可能にするために、NALユニットヘッダ内の時間IDフィールドによって示されるように、符号化された画像サイズと時間層との間でマッピングを実行することができる。
画像が異なる品質を有する1つまたは複数の層を含むビットストリームに符号化される場合、ビットストリームは、デコーダ側でどの層(複数可)を出力できるかを指定する構文要素を有することがある。出力される層の集合を出力層セットと定義することができる。複数の層およびスケーラビリティをサポートするビデオコーデックでは、1つまたは複数の出力層セットを1つまたは複数のVPSで通知することができる。ビットストリーム全体、CVS、各出力層セットなどのPTL情報を指定する1つまたは複数の構文要素は、VPS、DPS、DCI、SPS、PPS、APS、GOP、シーケンス、ヘッダ、SEIメッセージなどの高レベルの構文構造で通知することができる。
ブロックレベルの符号化ツールを使用して、画像内のピクセルまたはサンプルを復号して画像を再構築することができる。ブロックレベルの符号化ツールは、インター予測のための符号化ツール(またはインター符号化ツール)、イントラ予測のための符号化ツール(またはイントラ符号化ツール)、適応ループフィルタ(ALF)、デブロッキングフィルタ(DBF)、エントロピー符号化、変換など、符号化ブロックの再構成に使用される任意の適切な符号化ツール(複数可)を含むことができる。
高レベル構文(HLS)は、機能、システムインタフェース、ツールの画像レベルの制御およびバッファ制御などに関する情報を指定することができる。例えば、HLSは、パーティション(例えば、タイル、スライス、サブ画像)、バッファ管理、ランダムアクセス(例えば、IDR、クリーンランダムアクセス(CRA))、パラメータセット(複数可)(例えば、VPS、SPS、PPS、APS)、参照画像再サンプリング(RPR)、スケーラビリティ等を指定し得る。高レベル構文は、ブロックレベルより上にすることができる。
制御情報は、SPSレベルツール制御情報、PPSレベルツール制御情報、シーケンスレベル制御情報、ビットストリームレベル制御情報などを含むことができる。
制約フラグは、HLS構造の一部とすることができる。
一例では、制約フラグはツールの制御を示す。制約フラグは、シーケンスレベル制御情報およびビットストリームレベル制御情報のうちの1つにおいて提供され得る。一例では、特定のツールが制約フラグによって無効にされる場合、制御情報はHLSに存在せず、ツールは、例えば、HLSに対応する範囲内のブロックを符号化するために使用されない。
制約フラグは、プロファイル構文構造で通知することができる。
制約情報は、特定のツール、機能、または構文要素が、対応するビデオストリームまたは符号化されたビデオビットストリームに存在するか、または使用されているかどうかを示すことができる。例えば、制約フラグは、符号化されたビデオビットストリーム内に、インター符号化ツール、イントラ符号化ツール、DBF、エントロピー符号化、変換、分割(例えば、タイル、スライス)、バッファ管理、ランダムアクセス(例えば、IDR)、パラメータセット(例えば、SPS、PPS)などが存在するか、または使用されるかを示すことができる。制約情報は、パラメータセット(例えば、SPS、VPS、またはDCI)で通知することができる。制約フラグは、高レベルの構文構造(例えば、SPS、VPS、DCI)で通知することができる。
図11は、本開示の一実施形態によるPTL構文要素のセットの一例を示す。PTL構文要素のセットは、general_profile_idc、general_tier_flag、general_level_idc、num_sub_profiles、general_sub_profile_idc、sublayer_level_present_flag、ptl_alignment_0_bit、sublayer_level_idc、および汎用制約情報を含むことができる。
汎用制約情報は、ビデオソースタイプ、符号化ツール、機能などに関する制約情報を含むことができる。図12は、本開示の一実施形態による汎用制約情報の一例を示す。汎用制約情報は、図12に示すように、複数の制約フラグを含むことができる。図12を参照すると、1に等しい制約フラグ(例えば、intra_only_constraint_flag)(1205)は、sh_slice_typeがIであることを示す(すなわち、スライスはイントラスライスである)。0に等しい制約フラグ(例えば、intra_only_constraint_flag)(1205)は、他の情報(例えば、profile_idc)が非イントラスライスを許容し得るPTL情報の範囲内のすべての符号化された画像に対して制約(例えば、sh_slice_typeはIであり、)を課さない。一例では、1に等しい制約フラグ(例えば、no_alf_constraint_flag)(1206)は、PTL情報の範囲内のすべてのCVSについてsps_alf_enabled_flagが0に等しいことを示すことができ、したがって、例えばprofile_idcに基づいて適応ループフィルタリングが許可されても、適応ループフィルタリングは使用されない。0に等しい制約フラグ(例えば、no_alf_constraint_flag)(1206)は、上記の制約を課さない。
図12に示すように、制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1201)は、汎用制約情報で通知することができる。1である制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1201)は、その制約フラグ(1201)を含むPTL情報の範囲内で、可逆符号化に関する符号化ツールを使用できないことを示すことができる。0に等しい制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1201)は、上記の制約を課さない。
図12に示すように、制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1202)は、汎用制約情報で通知することができる。1である制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1202)は、その制約フラグ(1202)を含むPTL情報の範囲内で、非可逆符号化に関する符号化ツールを使用できないことを示すことができる。0に等しい制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1202)は、上記の制約を課さない。
一実施形態では、制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1202)が1に等しい場合、制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1201)は1に等しくないことがある。あるいは、制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1201)が1に等しい場合、制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1202)は1に等しくないことがある。
汎用制約情報内の複数の制約フラグは、一定の順序でソートすることができる。順序は、例えば、PTLの範囲で使用されていないそれぞれのメカニズムおよび/またはツールの可能性に基づいて設定できる。この順序は、優先順位と呼ぶことができる。汎用制約情報構文構造において、高い優先度から低い優先度までの順序を提示することができ、高い優先度は、ツール(または機構)の不使用の可能性が高いことを示し、低い優先度は、ツール(または機構)の不使用の可能性が低いことを示す。順序に影響を与える追加の要因は、特定のユースケース(例えば、サブ画像、スケーラビリティ、および/またはインタレースのサポートのためのツール)にのみ使用される可能性が高いツール、エンコーダ/デコーダ/実装の複雑さに対するツールの影響などを含むことができる。
図13A~図13Bは、本開示の一実施形態による(例えば、PTL構文要素のセットを含む)PTL情報の例を示す。このPTL情報において、制約フラグの数(例えば、num_available_constraint_flags)(1301)を示す構文要素を通知することができる。例えば、制約フラグ数は、図13 Aに示すように、汎用制約情報ブラケットの外側で通知することができる。あるいは、制約フラグの数を示す構文要素は、汎用制約情報構文構造の先頭で通知することができる。構文要素(例えば、num_available_constraint_flags)が存在し、構文要素(例えば、num_available_constraint_flags)の値がNに等しいとき、第1のN個の制約フラグは汎用制約情報構文構造内に存在し得る。さらに、他の制約フラグが存在しなくてもよく、特定の値に等しいと推測することができる。Nは負でない整数であり得る。
一実施形態では、値N(例えば、num_available_constraint_flags)は、0から制約フラグの最大数(例えば、MaxNumConstraintFlags)までの範囲にある。制約フラグの最大数は、任意の正の整数とすることができる。制約フラグの最大数(例えば、MaxNumConstraintFlags)の値は、16、32、64,128などであるように事前定義することができる。値N(例えば、num_available_constraint_flags)が0に等しいとき、汎用制約情報構文構造には制約フラグは存在しない。値N(例えば、num_available_constraint_flags)の符号化は、バイトアライメントを保証するために、値Nと制約フラグに対応するエントロピー符号化表現を合計して8で割り切れる数になるように選択することができる。
本開示の態様によれば、制約フラグは、1つまたは複数の制約情報グループに分類することができる。各制約情報グループは、1つまたは複数の制約フラグを含むことができ、対応するゲートフラグを有することができる。対応する制約情報グループのゲートフラグは、対応する制約情報グループ内の制約フラグ(複数可)が存在し得るかどうかを示すことができる。一例では、ゲートフラグは、制約グループ存在フラグと称され得る。一般に、ゲートフラグは、対応する制約情報グループに対応付けられており、対応する制約情報グループ内の制約フラグ(複数可)に対応付けられている。一実施形態では、ゲートフラグは、対応する制約情報グループ内の制約フラグ(複数可)が制約情報内に存在する(または通知される)かどうかをゲートする。例えば、対応する制約情報グループのゲートフラグが1であれば、制約情報グループに対応する制約フラグ(複数可)が例えば制約情報内に存在し得る。例えば、対応する制約情報グループのゲートフラグが0であれば、制約情報グループに対応する制約フラグ(複数可)が例えば制約情報内に存在しないことがある。一例では、すべてのゲートフラグが0に等しい場合、制約フラグは存在しない。
制約フラグは異なる範囲を有することができる。例えば、DCI内の制約フラグの範囲は、符号化されたビデオビットストリームとすることができる。VPSにおける制約フラグの範囲は、複数の層を有するCLVSとすることができる。SPS内の制約フラグの範囲は、単一のCLVSとすることができる。
フラグ(例えば、gate_flag_all)は、ゲートフラグ(複数可)が存在するかどうかを示すことができる。例では、フラグはfalseであり、ゲートフラグ(複数可)が存在しないことを示す。一例では、ゲートフラグ(複数可)が存在しない場合、制約情報内に制約フラグは存在しない。一例では、フラグは真であり、1つまたは複数のゲートフラグ(複数可)が存在することを示す。
本開示の態様によれば、符号化されたビデオビットストリームにおいて通知された制約情報内の少なくとも1つの制約情報グループの各々についてのゲートフラグを取得することができる。各ゲートフラグは、それぞれのゲートフラグに対応する少なくとも1つの制約情報グループの制約情報グループが、制約情報内に存在するかどうかを示すことができる。制約情報は、符号化されたビデオビットストリーム内の符号化ブロックのサブセットに関するものであり得る。ゲートフラグの制約情報グループが制約情報内に存在するかどうかは、少なくとも1つの制約情報グループのうちの制約情報グループのゲートフラグに基づいて決定することができる。ゲートフラグの制約情報グループは、符号化ブロックのサブセットのための少なくとも1つの制約フラグを含むことができる。符号化ブロックのサブセットの予測情報は、ゲートフラグの制約情報グループが制約情報内に存在するかどうかに基づいて決定することができる。符号化ブロックのサブセットは、予測情報に基づいて再構成することができる。
一実施形態では、ゲートフラグの制約情報グループは、制約情報内に存在すると決定される。符号化ブロックのサブセットの予測情報は、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグに基づいて決定することができる。一実施形態では、ゲートフラグの制約情報グループは、制約情報内に存在しないと決定される。
一実施形態では、各ゲートフラグは、それぞれのゲートフラグに対応する制約情報グループが制約情報内に存在せず、制約情報に制約フラグが存在しないことを示す。
一実施形態では、制約情報は、少なくとも1つの画像のための高レベル構文に存在し、符号化ブロックのサブセットは、少なくとも1つの画像内の符号化ブロックを含む。高レベル構文は、VPS、DPS、DCI、SPS、PPS、APS、GOP、シーケンスなどとすることができる。一例では、高レベル構文はDCIまたはDPSであり、制約情報の範囲は符号化されたビデオビットストリームを含み、したがって符号化されたビデオビットストリーム内の符号化ブロックを含む。一例では、高レベル構文はVPSであり、制約情報の範囲は複数の層を有するCLVSを含み、したがってCLVS内の符号化ブロックを含む。一例では、高レベル構文はSPSであり、制約情報の範囲は単一のCLVSを含み、したがって単一のCLVS内の符号化ブロックを含む。
一実施形態では、制約情報内に存在し得る(または通知され得る)各制約フラグは、1つまたは複数の制約情報グループに分類され、したがって、それぞれのゲートフラグによってゲートされ得る。一例では、1つまたは複数の制約情報グループは、第1の制約情報グループと第2の制約情報グループとを含む。制約フラグは、少なくとも1つの第1の制約フラグおよび少なくとも1つの第2の制約フラグを含む。少なくとも1つの第1の制約フラグは、第1の制約情報グループに分類され、少なくとも1つの第2の制約フラグは、第2の制約情報グループに分類される。第1の制約情報グループの第1のゲートフラグは、制約情報に少なくとも1つの第1の制約フラグ(または第1の制約情報グループ)が存在する(例えば、通知される)かどうかを示すことができる。第2の制約情報グループの第2のゲートフラグは、制約情報に少なくとも1つの第2の制約フラグ(または第2の制約情報グループ)が存在する(例えば、通知される)かどうかを示すことができる。したがって、この例では、制約情報は、少なくとも1つの第1の制約フラグおよび少なくとも1つの第2の制約フラグへの追加の制約フラグ(複数可)を含まない。
一実施形態では、制約フラグの第1のサブセットは、1つまたは複数の制約情報グループに分類され、したがって、それぞれのゲートフラグによってゲートすることができる。さらに、制約フラグの第2のサブセットは、1つまたは複数の制約情報グループの外側にあり、したがってゲートフラグ(複数可)によってゲートされない。一例では、1つまたは複数の制約情報グループは、第3の制約情報グループと第4の制約情報グループとを含む。制約フラグの第1のサブセットは、少なくとも1つの第3の制約フラグおよび少なくとも1つの第4の制約フラグを含む。少なくとも1つの第3の制約フラグは、第3の制約情報グループに分類され、少なくとも1つの第4の制約フラグは、第4の制約情報グループに分類される。第3の制約情報グループの第3のゲートフラグは、制約情報に少なくとも1つの第3の制約フラグ(または第3の制約情報グループ)が存在する(例えば、通知される)かどうかを示すことができる。第4の制約情報グループの第4のゲートフラグは、制約情報に少なくとも1つの第4の制約フラグ(または第4の制約情報グループ)が存在する(例えば、通知される)かどうかを示すことができる。さらに、制約情報は、制約フラグの第2のサブセットを含むことができる。一例では、第3のゲートフラグおよび第4のゲートフラグは、第3の制約情報グループおよび第4の制約情報グループが制約情報内で通知されないことを示し、したがって、制約情報は制約フラグの第2のサブセットを含み、少なくとも1つの第3の制約フラグおよび少なくとも1つの第4の制約フラグを含まない。一例では、第3のゲートフラグおよび第4のゲートフラグは、第3の制約情報グループおよび第4の制約情報グループが制約情報内で通知されることを示し、したがって、制約情報は、制約フラグの第2のサブセット、少なくとも1つの第3の制約フラグ、および少なくとも1つの第4の制約フラグを含む。
図14A~図14Bは、本開示の一実施形態による例示的な汎用制約情報構文構造(1400)を示す。汎用制約情報構文構造(1400)は、制約情報(例えば、汎用制約情報と呼ばれる)を表すことができる。汎用制約情報(または汎用制約情報構文構造(1400))は、図14Aのゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1401)、ゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1402)、ゲートフラグ(例えば、scalability_constraint_group_flag)(1403)、ゲートフラグ(例えば、partitioning_constraint_group_flag)(1404)、ゲートフラグ(例えば、intra_coding_tool_constraint_group_flag)(1405)、ゲートフラグ(例えば、inter_coding_tool_constraint_group_flag)(1406)、ゲートフラグ(例えば、transfom_contrain_group_flag)(1407)、ゲートフラグ(例えば、inloop_filtering_constraint_group_flag)(1408)などの1つまたは複数のゲートフラグを含むことができる。図14Aに示すように、1つまたは複数のゲートフラグ(例えば、ゲートフラグ(1401)~(1408))は、汎用制約情報構文構造(1400)の先頭に存在することができる。
ゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1401)は、制約情報グループ(1410)に対応付けられており、制約情報グループ(1410)内の制約フラグ(1411)~(1414)に対応付けられている。ゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1401)が1であることにより、制約情報グループ(1410)内に制約フラグ(1411)~(1414)が存在し得ることを指定することができる。
制約情報グループ(1410)(または制約フラグ(1411)~(1414))は、入力ソースおよびフレームパッキング(例えば、パックドフレームまたはプロジェクテッドフレーム)に対応付けられ得る。図14Aを参照すると、制約フラグ(1411)~(1414)は、general_non_packed_constraint_flag(1411)、general_frame_only_constraint_flag(1412)、general_non_projected_constraint_flag(1413)、およびgeneral_one_picture_only_constraint_flag(1414)に対応する。そうでなければ、ゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1401)が0に等しいことは、制約情報グループ(1410)内にある制約フラグ(1411)~(1414)が存在しない可能性があることを指定し得る。
図14Bを参照すると、1に等しいゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1402)は、制約情報グループ(1420)内にある高レベル機能(例えば、参照画像再サンプリング)に関連する制約フラグが存在し得ることを指定することができる。そうでなければ、ゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1402)が0に等しいことは、制約情報グループ(1420)内にある制約フラグが存在しない可能性があることを指定することができる。
再び図14Aを参照すると、1に等しいゲートフラグ(例えば、scalability_constraint_group_flag)(1403)は、スケーラビリティ(例えば、層間予測)に関する制約フラグ(複数可)が存在し得ることを指定することができる。そうでなければ、スケーラビリティに関する制約フラグ(複数可)が存在しないことがある。
ゲートフラグ(例えば、partitioning_constraint_group_flag)(1404)が1に等しいことは、高レベル分割(例えば、サブ画像またはタイル)に関連する制約フラグ(複数可)が存在し得ることを指定することができる。そうでなければ、高レベル分割に関連する制約フラグは存在しないことがある。
ゲートフラグ(例えば、intra_coding_tool_constraint_group_flag)(1405)が1であることにより、イントラ符号化(例えば、イントラ予測)に関する制約フラグ(複数可)が存在し得ることを特定することができる。そうでなければ、イントラ符号化に関する制約フラグ(複数可)が存在しないことがある。
ゲートフラグ(例えば、inter_coding_tool_constraint_group_flag)(1406)が1であることにより、インター符号化(例えば、画像間予測のための動き補償)に関する制約フラグ(複数可)が存在し得ることを指定することができる。そうでなければ、インター符号化に関する制約フラグが存在しないことがある。
ゲートフラグ(例えば、transfom_contrain_group_flag)(1407)が1に等しいことは、変換符号化(例えば、複数の変換行列)に関連する制約フラグ(複数可)が存在し得ることを指定することができる。そうでなければ、変換符号化に関連する制約フラグは存在しないことがある。
一実施形態では、すべてのゲートフラグ(例えば、図14Aのゲートフラグ(1401)~(1408))が0に等しい場合、制約情報構文構造(例えば、汎用制約情報構文構造(1400))には制約フラグは存在しない。
本開示の態様によれば、構文は、ゲートフラグ(例えば、ゲートフラグ(1401)~(1408))、関連する制約フラグ(例えば、制約フラグ(1411)~(1412))および制約情報グループ(1420)内の制約フラグ)、追加の制御情報などは、バイトアライメントするように制御情報を設計することができ、例えば、いくつかのフラグは、バイトアライメントを維持するために8で割り切れる。一例では、制約情報(例えば、汎用制約情報構文構造(1400))内のゲートフラグおよび制約フラグの数は8で割り切れる。バイトアライメント機構を使用して、制御情報のバイトアライメントを達成することができる。図14Bを参照すると、構文(例えば、whileループ)(1430)をバイトアライメントに使用することができる。
一実施形態では、オフセット(例えば、構文要素constraint_info_offset []))などのオフセット情報と、長さ(例えば、構文要素constraint_info_length [])などの長さ情報とが制約情報(例えば、汎用制約情報構文構造の最初)内に存在し、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグが制約情報内に存在することを示す。一実施形態では、少なくとも1つの制約情報グループのうちの1つまたは複数が、符号化されたビデオビットストリームに存在する。オフセットおよび長さが制約情報内に存在して、少なくとも1つの制約情報グループのうちの1つまたは複数の制約情報グループのそれぞれにおける少なくとも1つの制約フラグが制約情報に存在することを示すことができる。いくつかのオフセットは、符号化されたビデオビットストリームにおいて通知され得る。
一実施形態では、0以上のオフセット(または制約情報オフセット)(例えば、構文要素constraint_info_offset [])および対応する0以上の長さ(または制約情報長さ)(例えば、構文要素constraint_info_length []によって示される)が、汎用制約情報構文構造の先頭などの制約情報内に存在することができる。0以上の制約情報オフセットの数および0以上の制約情報長の数は、構文要素(複数可)によって明示的に示すことができる。
一例では、0以上の制約情報オフセットの数と0以上の制約情報長の数とは同一であり、0以上の制約情報オフセットの数(Mで表される)は、構文要素(例えば、num_constraint_info_set)によって明示的に示される(または通知される)。Mは、0以上の整数であり得る。Mが0であることは、制約情報内に制約情報オフセットおよび制約情報長が存在しないことを示すことができる。
一実施形態では、制約情報オフセット(例えば、構文要素constraint_info_offset [i])および制約情報長(例えば、構文要素constraint_info_length [i])は、制約情報(例えば、汎用制約情報構文構造)内に存在する利用可能な制約フラグを指定することができる。一例では、制約情報オフセット(例えば、構文要素constraint_info_offset [i])の値が5であり、制約情報長(例えば、構文要素constraint_info_length [i])の値が3である場合、制約情報(例えば、汎用制約情報構文構造)には、第5、第6、第7の制約フラグが存在する。
一例では、Mが0に等しい場合、制約情報(例えば、汎用制約情報構文構造)には制約フラグは存在しない。
一例では、ランレングス符号化を使用して、所定の順序(または所与の順序)で指定される制約フラグを符号化することができる。
一実施形態では、制約フラグが所定の順序(または所与の順序)で指定される場合にラン符号化を使用することができる。制約フラグを直接符号化する代わりに、「スキップ」値の適切に符号化されたリストは、0に等しい制約フラグを示すことができ、以下の制約フラグは1に等しいと暗示される。上記のラン符号化は、(i)制約フラグの数が多く、(ii)制約フラグのわずかな割合が1に等しい場合に特に効率的であり得る。
一実施形態では、少なくとも1つの制約情報グループのうちの1つまたは複数が、符号化されたビデオビットストリームに存在する。少なくとも1つの制約情報グループのうちの1つまたは複数における複数の制約フラグは、所定の順序に従って通知される。これにより、複数の制約フラグをラン符号化(例えば、ラン符号化またはラン復号)することができる。さらに、符号化ブロックのサブセットの予測情報は、複数の制約フラグに基づいて決定することができる。
一実施形態では、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグは、所定の順序に従って通知される複数の制約フラグを含む。これにより、複数の制約フラグをラン符号化(例えば、ラン符号化またはラン復号)することができる。
一実施形態では、制約フラグの完全なリストは、ビデオ符号化標準(例えば、VVC仕様)、外部テーブルなどで指定することができる。一例では、制約フラグのうちの利用可能な制約フラグのみが、例えば、以下の1つまたは複数によって示され、利用可能な制約フラグの数(例えば、num_available_constraint_flags)、ゲートフラグ(または制約グループ存在フラグ)、制約情報オフセット情報および制約情報長情報などが符号化されたビデオストリーム内に存在する。
一例では、制約フラグの完全なリストが指定され、エンコーダおよびデコーダで利用可能である。制約フラグの完全なリストは、デコーダに保存することができる。制約フラグの完全なリストは、100個の制約フラグを含むことができる。100個の制約フラグのうちの10個は、CLVSの制約情報内に存在し、したがって、CLVS内の符号化ブロックのサブセットで利用可能である。100個の制約フラグのうちの10個を10個の使用可能な制約フラグと呼ぶ。一例では、利用可能な制約フラグ(例えば、10)の数が通知される。一例では、10個の利用可能な制約フラグは、2つの制約情報グループ内にあり、第1のゲートフラグおよび第2のゲートフラグによってゲートされる。したがって、第1のゲートフラグおよび第2のゲートフラグは、10個の利用可能な制約フラグを示すように通知されることができる。
一例では、第1の制約情報オフセット(例えば、構文要素constraint_info_offset [0])および第1の制約情報長(例えば、構文要素constraint_info_length [0])が通知される。第2の制約情報オフセット(例えば、構文要素constraint_info_offset [1])および第2の制約情報長(例えば、構文要素constraint_info_length [1])が通知される。例えば、構文要素constraint_info_offset [0]は15であり、構文要素constraint_info_length [0]は3であり、構文要素constraint_info_offset [1]は82であり、構文要素constraint_info_length [1]は7であり、したがって、全リスト(例えば、100個の制約フラグ)の15番目から17番目の制約フラグおよび82番目から88番目の制約フラグが利用可能であるか、または制約情報内に存在することを示す。
一実施形態では、適切な制御情報を使用して、制約フラグを効率的に符号化するための様々な技法(または方法、実施形態、実施例)のいずれかを組み合わせることができる。組み合わせは、そのような技術の2つ以上の適切な組み合わせであり得る。あるいは、様々な技術(または方法、実施形態、実施例)のうちの1つを独立して使用することができる。制約フラグはグループ化することができる。特定のグループ(複数可)では、ラン符号化を使用することができるが、他のグループ(複数可)は、単純なバイナリ符号化を使用することができる。
制約フラグの最大数(例えば、MaxNumConstraintFlags)の値は、16、32、64,128などであるように事前定義することができる。
制約フラグ(例えば、MaxNumConstraintFlags)の最大数の値は、general_profile_idcやgeneral_sub_profile_idcなどのプロファイル情報、あるいはコーデックバージョン情報によって決定することができるので、プロファイル情報やバージョン情報によって制約フラグ(例えば、num_available_constraint_flags(1301))の数の範囲を制限することができる。例えば、メインプロファイル(例えば、ここでMaxNumConstraintFlags=64である)内の制約フラグ(例えば、num_available_constraint_flags(1301))の数の値は0から64の範囲内とすることができ、一方、アドバンストプロファイル(例えば、ここでMaxNumConstraintFlags=128である)内の制約フラグ(例えば、num_available_constraint_flags(1301))の数の値は0から128の範囲内とすることができる。
一実施形態では、制約フラグ(例えば、num_available_constraint_flags)の数の値は、general_profile_idcもしくはgeneral_sub_profile_idc、またはコーデックバージョン情報などのプロファイル情報によって事前定義された値に等しいと推測することができ、その結果、num_available_constraint_flagsの値は、明示的に通知することなく決定することができる。
一実施形態では、図12において、予約バイト情報は、汎用制約情報構文構造に存在することができる。例えば、フラグgci_num_reserved_bytes(1203)およびgci_reserved_bytes [](1204)は、汎用制約情報構文構造を拡張するための汎用制約情報構文構造に存在することができる。フラグgci_num_reserved_bytesは、予約された制約バイト数を指定することができる。一例では、予約された制約バイトは、追加のフラグ(例えば、追加の制約フラグ)を通知するためのものである。フラグgci_reserved_byte []は、任意の適切な値を有することができる。
一実施形態では、gci_num_reserved_bytesの値は、general_profile_idcもしくはgeneral_sub_profile_idcなどのプロファイル情報、またはコーデックバージョン情報によって制限または決定され得る。基本プロファイル(またはメインプロファイル)では、フラグgci_num_reserved_bytesの値は0とすることができる。拡張プロファイル(または高度プロファイル)では、gci_num_reserved_bytesの値は0より大きくすることができる。
フィールドシーケンスフラグは、符号化されたビデオビットストリームで通知することができる。フィールドシーケンスフラグは、出力層内の画像がフィールド符号化で符号化されているかどうかを示すことができる。フィールドシーケンスフラグは、SPSにおいてsps_field_seq_flagとして通知することができる。一実施形態では、フラグsps_field_seq_flagは、SPSに存在してもよい。フラグsps_field_seq_flagが1に等しいことは、CLVSがフィールドを表す画像を搬送することを示すことができる。フラグsps_field_seq_flagが0に等しいことは、CLVSがフレームを表す画像を搬送することを示すことができる。
図12の汎用制約情報構文構造では、フラグgeneral_frame_only_constraint_flagが存在し得る。フラグgeneral_frame_only_constraint_flagが1であることにより、出力層セット(例えば、OlsInScope)の範囲がフレームを表す画像を搬送することを指定することができる。フラグgeneral_frame_only_constraint_flagが0に等しいことは、出力層セット(例えば、OlsInScope)のスコープがフレームを表す場合と表さない場合がある画像を搬送することを指定する。一実施形態では、フラグgeneral_frame_only_constraint_flagは、出力層セット内の画像がフィールド符号化で符号化されているかどうかを示す。出力層セットは、符号化ブロックのサブセットを含むことができる。フラグsps_field_seq_flagは、画像のサブセットがフィールド符号化で符号化されていないことを示すフラグgeneral_frame_only_constraint_flag(例えば、1である)に基づいて偽とすることができる。画像のサブセットは、出力層セットの1つの層内にあり得る。
フラグgeneral_frame_only_constraint_flagが1に等しいとき、フラグsps_field_seq_flagの値は0に等しくてもよい。
一実施形態では、フラグpps_mixed_nalu_types_in_pic_flagは、PPS内に存在してもよい。1に等しいフラグpps_mixed_nalu_types_in_pic_flagは、PPSを参照する各画像が2つ以上のVCL NALユニットを有し、VCL NALユニットが同じ値のnal_unit_typeを有していないことを指定することができる。フラグpps_mixed_nalu_types_in_pic_flagが0に等しい場合、PPSを参照する各画像が1つまたは複数のVCL NALユニットを有し、PPSを参照する各画像のVCL NALユニットが同じ値のnal_unit_typeを有することを指定することができる。図12の汎用制約情報構文構造では、フラグno_mixed_nalu_types_in_pic_constraint_flagが存在してもよい。フラグno_mixed_nalu_types_in_pic_constraint_flagが1に等しいことは、pps_mixed_nalu_types_in_pic_flagの値が0に等しいことを指定することができる。フラグno_mixed_nalu_types_in_pic_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグgeneral_one_picture_only_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。general_one_picture_only_constraint_flagが1に等しい場合、ビットストリーム内に符号化された画像が1つしかないことを指定することができる。フラグgeneral_one_picture_only_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグsingle_layer_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグsingle_layer_constraint_flagが1に等しいことは、sps_video_parameter_set_idが0に等しいことを指定することができる。フラグsingle_layer_constraint_flagが0に等しい場合、このような制約は課されない。フラグgeneral_one_picture_only_constraint_flagが1であるとき、フラグsingle_layer_constraint_flagの値は1であってもよい。
一実施形態では、フラグall_layers_independent_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグall_layers_independent_constraint_flagが1に等しいことは、フラグvps_all_independent_layers_flagが1に等しくてもよいことを指定することができる。フラグall_layers_independent_constraint_flagが0に等しい場合、そのような制約を課さない。フラグsingle_layer_constraint_flagが1に等しい場合、フラグall_layers_independent_constraint_flagの値は1に等しくてもよい。
一実施形態では、フラグno_res_change_in_clvs_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_res_change_in_clvs_constraint_flagが1に等しいことは、フラグsps_res_change_in_clvs_allowed_flagが0に等しいことを指定することができる。フラグno_res_change_in_clvs_constraint_flagが0に等しい場合、このような制約を課さない。フラグno_ref_pic_resampling_constraint_flagが1である場合、フラグno_res_change_in_clvs_constraint_flagの値は1に等しくてもよい。
一実施形態では、フラグno_mixed_nalu_types_in_pic_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_mixed_nalu_types_in_pic_constraint_flagが1であることは、フラグpps_mixed_nalu_types_in_pic_flagの値が0であり得ることを指定する。フラグno_mixed_nalu_types_in_pic_constraint_flagが0に等しい場合、このような制約を課さない。フラグone_subpic_per_pic_constraint_flagが1である場合、フラグno_mixed_nalu_types_in_pic_constraint_flagの値は1であってもよい。
一実施形態では、フラグno_trail_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_trail_constraint_flagが1であることは、OlsInScopeに存在するTRAIL_NUTと等しいnuh_unit_typeを有するNALユニットが存在しない可能性があることを指定することができる。フラグno_trail_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_trail_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_stsa_constraint_flagは、図12の汎用制約情報構文構造に存在してもよい。フラグno_stsa_constraint_flagが1であることにより、OlsInScopeに存在する、nuh_unit_typeがSTSA_NUTであるNALユニットが存在しない可能性があることを指定することができる。フラグno_stsa_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しい場合、フラグno_stsa_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_trail_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_trail_constraint_flagが1であることは、OlsInScopeに存在するTRAIL_NUTと等しいnuh_unit_typeを有するNALユニットが存在しない可能性があることを指定することができる。フラグno_trail_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_trail_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_stsa_constraint_flagは、図12の汎用制約情報構文構造に存在してもよい。フラグno_stsa_constraint_flagが1であることにより、OlsInScopeに存在する、nuh_unit_typeがSTSA_NUTであるNALユニットが存在しない可能性があることを指定することができる。フラグno_stsa_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しい場合、フラグno_stsa_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_idr_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。no_idr_constraint_flagが1に等しいことは、nuh_unit_typeがIDR_W_RADLまたはIDR_N_LPに等しいNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_idr_constraint_flagが0に等しい場合、このような制約は課されない。
一実施形態では、フラグno_cra_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_cra_constraint_flagが1であることにより、OlsInScopeに存在するCRA_NUTと等しいnuh_unit_typeを持つNALユニットが存在しないことを指定することができる。フラグno_cra_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグno_rasl_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_rasl_constraint_flagが1であることにより、nuh_unit_typeがRASL_NUTと等しいNALユニットがOlsInScopeに存在しないことを指定することができる。フラグno_rasl_constraint_flagが0に等しい場合、そのような制約を課さない。フラグno_cra_constraint_flagが1に等しいとき、フラグno_rasl_constraint_flagの値は1に等しくてもよい。
一実施形態では、フラグno_radl_constraint_flagは、図12の汎用制約情報構文構造に存在し得る。フラグno_radl_constraint_flagが1であることにより、OlsInScopeに存在する、nuh_unit_typeがRADL_NUTであるNALユニットが存在しないことを指定することができる。フラグno_radl_constraint_flagが0に等しい場合、このような制約を課さない。フラグno_idr_constraint_flagが1に等しく、フラグno_cra_constraint_flagが1に等しい場合、フラグno_rasl_constraint_flagの値は1に等しくてもよい。
図15A~図15Dは、本開示の一実施形態による例示的な汎用制約情報構文構造(1500)を示す。汎用制約情報構文構造(1500)は、制約情報(例えば、汎用制約情報と呼ばれる)を表すことができる。汎用制約情報(または汎用制約情報構文構造(1500))は、汎用制約情報構文構造(1500)に制約フラグが存在するかどうかを示すフラグ(例えば、gci_present_flag)を含むことができる。一例では、フラグ(例えば、gci_present_flag)が真である場合、制約フラグのうちの1つまたは複数は、汎用制約情報構文構造(1500)内に存在することができる。フラグ(例えば、gci_present_flag)が偽である場合、制約フラグは汎用制約情報構文構造(1500)に存在することができない。
図14A~図14Bを参照して上述したように、図15A~図15Dの制約フラグは、グループ(例えば、制約情報グループ)に分類することができる。制約情報グループにおける制約フラグが汎用制約情報構文構造(1500)に存在し得るかどうかは、例えば、制約情報グループに対する対応するゲートフラグによって制御することができる。
汎用制約情報構文構造(1500)は、任意の適切な数の制約情報グループを含むことができる。一例では、汎用制約情報構文構造(1500)は、制約情報グループに含まれない制約フラグをさらに含むことができ、したがって、制約フラグは制約情報グループの外部にある。
図15A~図15Dに示す例では、汎用制約情報構文構造(1500)は、9つの制約情報グループ(1510)~(1518)を含む。制約情報グループ(1510)は、汎用制約情報に関するものであり、3つの制約フラグ(例えば、gci_intra_only_constraint_flag、gci_all_layers_indepedent_constraint_flag、gci_one_au_only_constraint_flagである)を含む。一例では、ゲートフラグは、制約情報グループ(1510)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1511)と対応する制約フラグは、画像フォーマット制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1511)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1512)と対応する制約フラグは、NALユニットタイプ制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1512)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1513)および対応する制約フラグは、タイル、スライス、またはサブ画像分割制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1513)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1514)および対応する制約フラグは、CTUおよびブロック分割制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1514)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1515)と対応する制約フラグは、イントラ符号化の制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1515)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1516)と対応する制約フラグは、インター符号化の制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1516)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1517)および対応する制約フラグは、変換、量子化、および残差制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1517)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
制約情報グループ(1518)および対応する制約フラグは、ループフィルタ制約情報に関する。一例では、ゲートフラグは、制約情報グループ(1518)が汎用制約情報構文構造(1500)に存在するかどうかをゲートまたは制御することができる。
一実施形態では、図15Dにおいて、構文要素gci_num_reserved_bitsおよびgci_reserved_0_bit []は、汎用制約情報構文構造の拡張のために汎用制約情報構文構造(1500)内に存在することができる。構文要素gci_num_reserved_bitsは、予約された制約ビットの数を指定することができる。構文要素gci_reserved_zero_bit []は、任意の適切な値を有することができる。一例では、構文要素gci_reserved_zero_bit []の存在およびgci_reserved_zero_bit []の値は、特定のビデオ符号化標準(例えば、VVC仕様)で指定された復号プロセスに影響を与えない。構文要素gci_reserved_zero_bit []およびgci_reserved_zero_bit []の値の存在は、いくつかのビデオ符号化標準に使用され得る。
図16は、本開示の一実施形態による、PTL構文構造におけるPTL構文要素のセットの一例を示す。PTL構文要素のセットは、general_profile_idc、general_tier_flag、general_level_idc、ptl_frame_only_constraint_flag、ptl_multilayer_enabled_flag、plt_sublayer_level_present_flag []、ptl_reserved_zero_bit、sublayer_level_idc []、ptl_num_sub_profiles、general_sub_profile_idc、および/または汎用制約情報を含むことができる。PTL構文要素のセットのいくつか(例えば、general_profile_idc、general_tier_flag、汎用制約情報、ptl_num_sub_profiles)が存在し得るかどうかは、フラグ(例えば、profileTierPresentFlag)の値に基づくことができる。
1つまたは複数の層を有するビデオシーケンスは、2つ以上の連続するフィールド画像がフルフレーム画像を含み得るフィールド符号化構造として符号化され得る。フィールド符号化情報は、パラメータセットまたはSEIメッセージなどの高レベルの構文構造で通知され得る。
一実施形態では、各インタレースされたビデオフレームは、各フレームに対して2つのフィールドを有する。いくつかの例では、スリーツープルダウン(3:2プルダウン)を使用して、毎秒24フレームを毎秒29.97または30フレームに変換することができる。3:2プルダウンは、近似的に4つのフレームを5つのフレームに変換し、さらに速度をわずかに遅くすることができる。
一実施形態では、フラグ(例えば、sps_field_seq_flag)は、図17に示すように、フィールド符号化が使用されるかどうかを示すためにSPSで通知され得る。フラグ(例えば、sps_field_seq_flag)が1に等しいことは、CLVSがフィールドを表す画像を搬送することを示すことができる。フラグ(例えば、sps_field_seq_flag)が0に等しいことは、CLVSがフレームを表す画像を搬送することを示すことができる。フラグ(例えば、general_frame_only_constraint_flag)が1に等しい場合、フラグ(例えば、sps_field_seq_flag)の値は0に等しくてもよい。一例では、フラグ(例えば、general_frame_only_constraint_flag)が1と等しいことは、フラグ(例えば、sps_field_seq_flag)の値が0であることを示す。
一実施形態では、フラグ(例えば、sps_field_seq_flag)が1に等しいとき、フレームフィールド情報SEIメッセージが、CLVS内のすべての符号化された画像について存在し得る。ビデオ符号化標準または技術は、このような存在を必要とし得る。
一実施形態では、復号プロセスは、フィールドまたはフレームを表す画像を他の画像とは異なるように扱わない場合がある。フィールドを表す画像のシーケンスは、個々のフィールドの画像次元で符号化することができる。例えば、1080 i個のフィールドを表す画像は、1920×540のクロップされた出力次元を有することができるが、シーケンス画像レートは、ソースフレームレート(例えば、典型的には25から30 Hzの間)の代わりに、ソースフィールドのレート(例えば、典型的には50から60 Hzの間)を表すことができる。
一実施形態では、フラグ(例えば、sps_field_seq_flag)の値は、層間で同じであってもよい。一例では、フラグ(例えば、sps_field_seq_flag)の値は、例えば、すべての層が同じフィールド構造または同じフレーム構造を有することができるため、CVS内のCLVSによって参照されるすべてのSPSで同じであり得る。
一実施形態では、層Aのフラグ(例えば、sps_field_seq_flag)の値は、出力層セット内の層Aの従属層のフラグ(例えば、sps_field_seq_flag)の値に等しい。
一実施形態では、フラグ(例えば、sps_field_seq_flag)が1に等しいとき、同じフレームを含むすべてのフィールドは同じPPSを参照し、その結果、同じフレームのすべてのフィールドが同じ画像サイズ、適合ウィンドウ、およびタイル分割を有することができる。
一実施形態では、フレームの2つのフィールドは、同じタイル構文要素または同じサブ画像構文要素を有する同じ分割構造を有することができる。
一実施形態では、フレームの2つのフィールドは、同じ数の層およびサブ層を有する同一の層構造を有することができる。
一実施形態では、図18に示すように、VPSを参照する層がフィールドまたはフレームとして符号化されているかどうかを示すために、フラグ(例えば、vps_field_seq_flag)がVPSで通知され得る。フラグ(例えば、vps_field_seq_flag)が1に等しいことは、VPSを参照するCVSがフィールドを表す画像を搬送することを示すことができる。フラグ(例えば、vps_field_seq_flag)が0に等しいことは、VPSを参照するCVSがフレームを表す画像を搬送することを示すことができる。フラグ(例えば、general_frame_only_constraint_flag)が1に等しいとき、フラグ(例えば、sps_field_seq_flag)の値は0に等しいものとする。
フラグ(例えば、vps_field_seq_flag)がVPS内に存在する場合、VPSを参照するSPS内のフラグ(例えば、sps_field_seq_flag)の値は、フラグ(例えば、vps_field_seq_flag)の値と等しくてもよい。
SPSにおける高レベル構文クリーンアップ
以下の高レベル構文(HLS)クリーンアップは、本開示の実施形態に従ってシーケンスパラメータセット(SPS)において実行されてもよい:(1)通知sps_picture_header_in_slice_header_flag、(2)subpic_treated_as_pic_flag値の層間のアライメント、(3)小画像のサブ画像数の制約、(4)sps_subpic_id_len_minus1の値の範囲の補正。
1.picture_header_in_slice_headerフラグを通知する
画像ヘッダがスライスヘッダに含まれる場合、シーケンスパラメータセット(SPS)を参照するCLVSでは、サブ画像情報は使用されず、画像ごとに1つのスライスしか存在しないものとする。この仮定は仮説的に合意されたが、明確には記載されなかった。HTTPライブストリーミングのクリーンアップを行うために、新しいフラグsps_picture_header_in_slice_header_flagを定義してSPSで使用することができる。1に等しいsps_picture_header_in_slice_header_flagは、画像ヘッダ(PH)構文構造がスライスヘッダに存在し、CLVSの画像ごとに1つのスライスのみが存在することを指定する。また、sps_picture_header_in_slice_header_flagが1であるとき、サブ画像情報は存在しない。
以下は、新しいフラグsps_picture_header_in_slice_header_flagの例示的なセマンティックおよび構文定義である。
seq_parameter_set_rbsp(){ Descriptor
…
sps_picture_header_in_slice_header_flag u(1)
if(!sps_picture_header_in_slice_header_flag)
subpic_info_present_flag u(1)
if(subpic_info_present_flag){
…
}
…
}
1に等しいsps_picture_header_in_slice_header_flagは、スライスヘッダ内にPH構文構造が存在し、CLVS内の画像ごとにただ1つのスライスしか存在しないことを指定する。0に等しいsps_picture_header_in_slice_header_flagは、CLVS内のスライスヘッダ内にPH構文構造が存在しないことを指定する。
1に等しいsubpic_info_present_flagは、CLVSにサブ画像情報が存在し、CLVSの各画像に1つまたは複数のサブ画像が存在し得ることを指定する。0に等しいsubpic_info_present_flagは、CLVSにサブ画像情報が存在せず、CLVSの各画像に1つのサブ画像のみが存在することを指定する。存在しない場合、subpic_info_present_flagの値は0に等しいと推測される。
res_change_in_clvs_allowed_flagが1に等しいとき、subpic_info_present_flagの値は0に等しいものとする。
一実施形態では、画像ヘッダにおいてpicture_header_in_slice_header_flagが通知される。
1に等しいpicture_header_in_slice_header_flagは、スライスヘッダ内にPH構文構造が存在することを指定する。0と等しいpicture_header_in_slice_header_flagは、スライスヘッダにPH構文構造が存在しないことを指定する。
picture_header_in_slice_header_flagの値は、sps_picture_header_in_slice_header_flagと等しいものとする。
符号化スライスについてpicture_header_in_slice_header_flagが1に等しいとき、PH_NUTに等しいnal_unit_typeを有するVCL NALユニットがCLVSに存在しないことがビットストリーム適合性の要件である。
picture_header_in_slice_header_flagが0に等しいとき、現在の画像内のすべての符号化されたスライスは、picture_header_in_slice_header_flagが0に等しいことを有し、現在のPUは、PH NALユニットを有するものとする。
また、制約フラグpic_header_in_slice_header_constraint_flagがgeneral_constraint_info()に、付加されてもよい。pic_header_in_slice_header_constraint_flagが1に等しいとき、PHにおけるpicture_header_in_slice_header_flagの値は1に等しいものとする。
1に等しいpic_header_in_slice_header_constraint_flagは、PH構文構造がスライスヘッダ内に存在することを指定する。0に等しいpic_header_in_slice_header_constraint_flagは、そのような制約を課さない。pic_header_in_slice_header_constraint_flagが1に等しい場合、picture_header_in_slice_header_flagの値は1に等しいものとする。
pic_header_in_slice_header_constraint_flagが1に等しいとき、rpl_info_in_ph_flag、dbf_info_in_ph_flag、sao_info_in_ph_flag、wp_info_in_ph_flag、qp_delta_info_in_ph_flagは0に等しいものとする。
pic_header_in_slice_header_constraint_flagが1に等しいとき、rect_slice_flagは1に等しいものとする。
pic_header_in_slice_header_constraint_flagが1に等しいとき、subpic_info_present_flagは0に等しいものとする。
pic_header_in_slice_header_constraint_flagが1に等しいとき、separate_colour_plane_flagは0に等しいものとする。
以下は、新しい制約フラグの構文定義の例である。
以下は、新しい制約フラグのセマンティクス定義の例である。
1に等しいseparate_colour_plane_flagは、4:4:4のクロマフォーマットの3つの色成分が別々に符号化されることを指定する。0に等しいseparate_colour_plane_flagは、色成分が別々に符号化されないことを指定する。separate_colour_plane_flagが存在しない場合、0に等しいと推測される。separate_colour_plane_flagが1に等しいとき、符号化された画像は3つの別々の成分からなり、その各々は1つの色平面(Y、CbまたはCr)の符号化されたサンプルからなり、モノクロ符号化構文を使用する。この場合、各色平面は特定のcolour_plane_id値に関連付けられている。
注記-異なるcolour_plane_id値を有する色平面間の復号プロセスに依存性はない。例えば、1つの値のcolour_plane_idを有するモノクロ画像の復号処理は、異なる値のcolour_plane_idを有するモノクロ画像からのデータをインター予測に使用しない。
separate_colour_plane_flagの値に応じて、変数ChromaArrayTypeの値は以下のように割り当てられる。
-separate_colour_plane_flagが0に等しい場合、ChromaArrayTypeはchroma_format_idcに等しく設定される。
-そうでない場合(separate_colour_plane_flagが1に等しい)、ChromaArrayTypeは0に等しく設定される。
pic_header_in_slice_header_constraint_flagが1に等しいとき、separate_colour_plane_flagは0に等しいものとする。
1に等しいsubpic_info_present_flagは、CLVSにサブ画像情報が存在し、CLVSの各画像に1つまたは複数のサブ画像が存在し得ることを指定する。0に等しいsubpic_info_present_flagは、CLVSにサブ画像情報が存在せず、CLVSの各画像に1つのサブ画像のみが存在することを指定する。
res_change_in_clvs_allowed_flagが1に等しいとき、subpic_info_present_flagの値は0に等しいものとする。
注記-ビットストリームがサブビットストリーム抽出プロセスの結果であり、サブビットストリーム抽出プロセスへの入力ビットストリームのサブ画像のサブセットのみを含む場合、SPSのRBSPにおいてsubpic_info_present_flagの値を1に等しく設定する必要がある場合がある。
pic_header_in_slice_header_constraint_flagが1に等しいとき、subpic_info_present_flagは0に等しいものとする。
0に等しいrect_slice_flagは、各スライス内のタイルがラスタ走査順にあり、スライス情報がPPで通知されないことを指定する。1に等しいrect_slice_flagは、各スライス内のタイルが画像の矩形領域をカバーし、スライス情報がPPSで通知されることを指定する。存在しない場合、rect_slice_flagは1に等しいと推測される。subpic_info_present_flagが1に等しいとき、rect_slice_flagの値は1に等しいものとする。
pic_header_in_slice_header_constraint_flagが1に等しいとき、rect_slice_flagは1に等しいものとする。
1に等しいqp_delta_info_in_ph_flagは、QPデルタ情報がPH構文構造内に存在し、PH構文構造を含まないPPSを参照するスライスヘッダ内に存在しないことを指定する。0に等しいqp_delta_info_in_ph_flagは、QPデルタ情報がPH構文構造に存在せず、PH構文構造を含まないPPSを参照するスライスヘッダ内に存在し得ることを指定する。
pic_header_in_slice_header_constraint_flagが1に等しいとき、rpl_info_in_ph_flag、dbf_info_in_ph_flag、sao_info_in_ph_flag、wp_info_in_ph_flag、qp_delta_info_in_ph_flagは0に等しいものとする。
1に等しいone_subpic_per_pic_constraint_flagは、各画像がただ1つのサブ画像を含むべきであることを指定する。0に等しいone_subpic_per_pic_constraint_flagは、そのような制約を課さない。one_slice_per_pic_constraint_flagが1に等しいとき、one_subpic_per_pic_constraint_flagの値は1に等しいものとする。
1に等しいpic_header_in_slice_header_constraint_flagは、PH構文構造がスライスヘッダ内に存在することを指定する。0に等しいpic_header_in_slice_header_constraint_flagは、そのような制約を課さない。pic_header_in_slice_header_constraint_flagが1に等しい場合、picture_header_in_slice_header_flagの値は1に等しいものとする。
2.層間のsubpic_treated_as_pic_flag値のアライメント
多層ビットストリームからのサブ画像抽出の場合、subpic_treated_as_pic_flag [i]が1に等しいとき、OLS内の各出力層およびその参照層について、出力層およびその参照層内のすべての画像は、0~sps_num_subpics_minus1の範囲内の各j値について1に等しいsubpic_treated_as_pic_flag [j]の値を有するものとする。したがって、本開示の実施形態によれば、以下の制約が追加される。
subpic_treated_as_pic_flag [i]が1であることは、CLVSにおける各符号化画像の第iのサブ画像を、インループフィルタ処理を除いた復号処理において画像として扱うことを指定する。subpic_treated_as_pic_flag [i]が0であることは、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は、0~sps_num_subpics_minus1(両端を含む)の範囲内のjの各値に対して、同じ値のsps_num_subpics_minus1を有するものとし、同じ値のsubpic_ctu_top_left_x [j]、subpic_ctu_top_left_y [j]、subpic_width_minus1 [j]、subpic_height_minus1 [j]、およびloop_filter_across_subpic_enabled_flag [j]をそれぞれ有するものとする。
-出力層およびその参照層内の各アクセスユニット内のすべての画像は、0からsps_num_subpics_minus1(両端を含む)までの範囲内のjの各値について、SubpicIdVal [j]の同じ値を有するものとする。
-出力層およびその参照層内のすべての画像は、0からsps_num_subpics_minus1(両端を含む)までの範囲内のjの各値について、1に等しいsubpic_treated_as_pic_flag [j]の値を有するものとする。
3.小画像のサブ画像数の制約
一実施形態では、画像サイズがCtbSizeY以下である場合、サブ画像の数が1に等しくなるように追加の制約を課すことができる。
以下は、追加の制約の構文および/またはセマンティック定義の例である。
pic_width_max_in_luma_samplesがCtbSizeY以下であり、pic_height_max_in_luma_samplesがCtbSizeY以下である場合、sps_num_subpics_minus1の値は0に等しいものとする。
4.sps_subpic_id_len_minus1の値の範囲の補正
一実施形態では、sps_subpic_id_len_minus1のセマンティクスは、構文要素がより正確な値の範囲を有することができるように、以下のように修正することができる。
sps_subpic_id_len_minus1+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つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実装され得る。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
図19は、本開示の一実施形態によるプロセス(1900)の概要を示すフローチャートを示す。プロセス(1900)は、再構成中のブロックの予測ブロックを生成するために、ブロックの再構成に使用することができる。本開示におけるブロックという用語は、予測ブロック、CB、CUなどとして解釈され得る。様々な実施形態では、プロセス(1900)は、端末装置(310)、(320)、(330)、および(340)の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行することができる。いくつかの実施形態では、プロセス(1900)はソフトウェア命令で実施され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1900)を実行する。(S1901)から処理が開始され、(S1910)に進む。
(S1910)において、符号化されたビデオビットストリームにおいて通知された制約情報内の少なくとも1つの制約情報グループの各々についてゲートフラグを取得することができる。各ゲートフラグは、それぞれのゲートフラグに対応する少なくとも1つの制約情報グループの制約情報グループが、制約情報内に存在するかどうかを示すことができる。制約情報は、符号化されたビデオビットストリーム内の符号化ブロックのサブセットに関するものであり得る。
制約情報は、少なくとも1つの画像のための高レベル構文(例えば、SPS、VPS、DCI、DPS)に存在することができ、符号化ブロックのサブセットは、少なくとも1つの画像内の符号化ブロックを含むことができる。
一例では、各ゲートフラグは、それぞれのゲートフラグに対応する制約情報グループが制約情報内に存在せず、制約情報に制約フラグが存在しないことを示す。
(S1920)において、ゲートフラグの制約情報グループが制約情報内に存在するかどうかは、少なくとも1つの制約情報グループのうちの制約情報グループのゲートフラグに基づいて決定することができる。ゲートフラグの制約情報グループは、符号化ブロックのサブセットのための少なくとも1つの制約フラグを含むことができる。
(S1930)において、符号化ブロックのサブセットの予測情報は、ゲートフラグの制約情報グループが制約情報内に存在するかどうかに基づいて決定することができる。
一例では、ゲートフラグの制約情報グループが制約情報内に存在すると決定される。符号化ブロックのサブセットの予測情報は、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグに基づいて決定することができる。
一例では、ゲートフラグの制約情報グループが制約情報内に存在しないと決定される。符号化ブロックのサブセットの予測情報は、ゲートフラグの制約情報グループから独立して決定することができる。
(S1940)において、符号化ブロックのサブセットは、予測情報に基づいて再構成することができる。
プロセス(1900)は、適切に適合させることができる。プロセス(1900)のステップは、修正および/または省略することができる。追加のステップを追加することができる。任意の適切な実施順序を使用することができる。例えば、少なくとも1つの制約情報グループのうちの1つまたは複数は、符号化されたビデオビットストリーム内に存在する。少なくとも1つの制約情報グループのうちの1つまたは複数における複数の制約フラグは、所定の順序に従って通知することができる。複数の制約フラグをラン復号することができ、したがって、複数の制約フラグに基づいて符号化ブロックのサブセットの予測情報を決定することができる。
一例では、ゲートフラグの制約情報グループにおける少なくとも1つの制約フラグは、所定の順序に従って通知される複数の制約フラグを含み、ゲートフラグの制約情報グループにおける複数の制約フラグはラン復号可能である。
一例では、オフセットおよび長さは制約情報内に存在し、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグが制約情報内に存在することを示す。
一例では、少なくとも1つの制約情報グループのうちの1つまたは複数が符号化されたビデオビットストリーム内に存在する。オフセットおよび長さが制約情報内に存在して、少なくとも1つの制約情報グループのうちの1つまたは複数の制約情報グループのそれぞれにおける少なくとも1つの制約フラグが制約情報に存在することを示す。いくつかのオフセットは、符号化されたビデオビットストリームにおいて通知され得る。
一例では、少なくとも1つの制約情報グループのうちの1つまたは複数が符号化されたビデオビットストリーム内に存在する。制約情報内の1つまたは複数の構文要素はバイトアライメントされ得る。1つまたは複数の構文要素は、少なくとも制約情報グループの各々のゲートフラグと、少なくとも1つの制約情報グループのうちの1つまたは複数の制約情報グループにおける複数の制約フラグとを含むことができる。
一例では、少なくとも1つのゲートフラグは、出力層セット内の画像がフィールド符号化で符号化されているかどうかを示すフレームのみの制約フラグ(例えば、general_frame_only_constraint_flag)を含む。出力層セットは、符号化ブロックのサブセットを含むことができる。フィールドシーケンスフラグ(例えば、sps_field_seq_flag)は、画像のサブセットがフィールド符号化で符号化されておらず、画像のサブセットが出力層セットの1つの層にあることを示すフレームのみの制約フラグに基づいて偽である。
一例では、フィールドシーケンスフラグは符号化されたビデオビットストリームで通知され、フィールドシーケンスフラグは出力層内の画像がフィールド符号化で符号化されているかどうかを示す。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダのそれぞれは、処理回路(例えば、1つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実装され得る。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
本開示の態様は、例えば複数の層を有する、符号化されたビデオストリームにおける通知フィールド符号化情報に関する。
画像が、異なる品質を有する複数の層を含むビットストリームに符号化される場合、ビットストリームは、デコーダ側でどの層が出力され得るかを指定する構文要素を有し得る。複数の層およびスケーラビリティをサポートする特定のビデオコーデックでは、1つまたは複数の出力層セットをVPSで通知することができる。出力層セットおよびそれらの依存関係、プロファイル/階層/レベル、および仮想デコーダ参照モデルパラメータを指定する構文要素は、パラメータセットで効率的に通知されるべきである。2つ以上のフィールド画像が1つのフレーム画像を含むフィールド構造として多層ビデオシーケンスが符号化されるとき、フィールド符号化情報は、SPS、VPS、またはSEIメッセージなどの高レベル構文構造で通知され得る。
いくつかのビデオ符号化技術では、アクセスユニット(AU)は、所与の時間におけるインスタンスにおいて、それぞれの画像/スライス/タイル/NALユニットビットストリームへ取り込まれ、構成される、符号化された画像、スライス、タイル、NALユニット等を参照し得る。時間における所与のインスタンスは、合成時間とすることができる。
HEVCおよび特定の他のビデオ符号化技術などのいくつかの例では、画像順序カウント(POC)値を使用して、復号画像バッファ(DPB)に格納された複数の参照画像の中から選択された参照画像を示すことができる。AUが1つまたは複数の画像、スライス、またはタイルを含む場合、同じAUに属する各画像、スライス、またはタイルは同じPOC値を有することができ、そこから1つまたは複数の画像、スライス、またはタイルが同じ合成時間のコンテンツから作成されることを導出することができる。したがって、同じ所与のPOC値を有する2つの画像/スライス/タイルは、2つの画像/スライス/タイルが同じAUに属し、同じ合成時間を有することを示すことができる。逆に、異なるPOC値を有する2つの画像/タイル/スライスは、異なるAUに属し、異なる合成時間を有する2つの画像/スライス/タイルを示すことができる。
一実施形態では、AUが異なるPOC値を有する画像、スライス、またはタイルを含むことができる上述の剛性関係を緩和することができる。AU内で異なるPOC値を許容することにより、POC値を使用して、同一の提示時間を有する、潜在的に独立して復号可能な画像/スライス/タイルを識別することができる。したがって、以下により詳細に記載されるように、参照画像選択通知(例えば、参照画像セット通知または参照画像リスト通知)を変更することなく、複数のスケーラブル層をサポートすることができる。
いくつかの例では、異なるPOC値を有する他の画像/スライス/タイルに対して、POC値のみから、画像/スライス/タイルが属するAUを識別することが望ましい。これは、以下のようにして達成することができる。
一実施形態では、アクセスユニットカウント(AUC)は、NALユニットヘッダ、スライスヘッダ、タイルグループヘッダ、SEIメッセージ、パラメータセット、またはAUデリミタなどの高レベル構文構造で通知されてもよい。AUCの値(またはAUC値)は、どのNALユニット、画像、スライス、またはタイルが所与のAUに属するかを識別するために使用され得る。AUCの値は、別個の合成時間インスタンスに対応し得る。AUC値は、POC値の倍数に等しくてもよい。POC値を整数値で割ることにより、AUC値を算出することができる。いくつかの例では、分割演算は、デコーダの実装に特定の負担をかける可能性がある。したがって、AUC値の番号付けスペースの小さな制限は、シフト演算による分割演算の置換を可能にすることができる。例えば、AUC値は、POC値範囲の最上位ビット(MSB)値に等しくてもよい。
一実施形態では、AUごとのPOCサイクルの値(例えば、poc_cycle_au)は、NALユニットヘッダ、スライスヘッダ、タイルグループヘッダ、SEIメッセージ、パラメータセット、またはAUデリミタなどの高レベル構文構造で通知され得る。AUごとのPOCサイクルの値(例えば、poc_cycle_au)は、異なる連続するPOC値を同じAUに関連付けることができる数を示すことができる。例えば、AU(例えば、poc_cycle_au)あたりのPOCサイクルの値が4に等しい場合、0以上3以下のPOC値を有する画像、スライスまたはタイルは、AUC値が0に等しいAUに関連付けられ、4以上7以下のPOC値を有する画像、スライスまたはタイルは、AUC値が1に等しいAUに関連付けられる。したがって、AUごとのPOCサイクルの値(例えば、poc_cycle_au)の値でPOC値を除算することにより、AUCの値を推測することができる。
一実施形態では、AUごとのPOCサイクルの値(例えば、poc_cyle_au)は、符号化されたビデオシーケンス内の空間層またはSNR層の数を識別する、例えばVPS内に位置する情報から導出され得る。上述したような導出は、VPS内の数ビットを節約することができ、したがって符号化効率を改善することができるが、ビットストリームの所与の小さな部分(例えば、画像)についてAU(例えば、poc_cycle_au)あたりのPOCサイクルの値を最小化するために、VPSの下の階層的な適切な高レベル構文構造においてAU(例えば、poc_cycle_au)あたりのPOCサイクルの値を明示的に符号化することが有利であり得る。POC値(および/またはPOCを間接的に参照する構文要素の値)が低レベルの構文構造で符号化され得るので、最適化は、上記の導出プロセスを通して節約することができるよりも多くのビットを節約することができる。
一実施形態では、図20は、符号化ビデオシーケンス内のすべての画像/スライスに使用される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は明示的に通知されず、POCの値を構文要素vps_poc_cycle_auで除算することによって、AUごとのAUCの値を計算することができる。
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で除算することにより算出することができる。
図21は、上述の関連するワークフローを示すブロック図を示す。ワークフローは、(S2101)から開始され、(S2110)に進む。
(S2110)において、VPSまたはSPSを解析することができ、AUあたりのPOCサイクルが一定であるかどうかを識別することができる。
(S2120)において、AUごとのPOCサイクルが符号化ビデオシーケンス内で一定であるかどうかを決定することができる。AUごとのPOC周期が符号化映像シーケンス内で一定であると決定された場合、ワークフローは(S2130)に進む。そうでない場合、ワークフローは(S2140)に進む。
(S2130)において、アクセスユニットカウントの値は、シーケンスレベルpoc_cycle_au値およびPOC値から計算することができる。そして、ワークフローは(S2150)に進む。
(S2140)において、アクセスユニットカウントの値は、画像レベルpoc_cycle_au値とPOC値から算出することができる。そして、ワークフローは(S2150)に進む。
(S2150)において、VPSまたはSPSを解析することができ、AUあたりのPOCサイクルが一定であるかどうかを識別することができる。
一実施形態では、画像、スライス、またはタイルのPOCの値が異なっていても、同じAUC値を有するAUに対応する画像、スライス、またはタイルは、同じ復号または出力時間インスタンスに関連付けられ得る。したがって、同じAU内の画像、スライス、またはタイルにわたる解析/復号間の依存関係なしに、同じAUに関連付けられた画像、スライス、またはタイルのすべてまたはサブセットを並列に復号することができ、同時に出力することができる。
一実施形態では、画像、スライス、またはタイルのPOCの値が異なっていても、同じAUC値を有するAUに対応する画像、スライス、またはタイルは、同じ合成/表示時間インスタンスに関連付けられ得る。合成時間がコンテナ形式に含まれている場合、画像が異なるAUに対応していても、画像が同じ合成時間を有する場合、それらの画像は同じ時間インスタンスで表示され得る。
一実施形態では、各画像、スライス、またはタイルは、同じAU内で同じ時間識別子(例えば、temporal_id)を有することができる。時間インスタンスに対応する画像、スライス、またはタイルのすべてまたはサブセットは、同じ時間サブ層に関連付けられ得る。一実施形態では、各画像、スライス、またはタイルは、同じAU内の同じまたは異なる空間層識別情報(例えば、layer_id)を有することができる。時間インスタンスに対応する画像、スライス、またはタイルのすべてまたはサブセットは、同じまたは異なる空間層に関連付けられ得る。
図22は、適応解像度変更を伴うtemporal_id、layer_id、POC、およびAUC値の組み合わせを有するビデオシーケンス構造の一例を示す。図22に示される例では、AUC=0を有する第1のAU内の画像、スライス、またはタイルは、temporal_id=0およびlayer_id=0または1を有することができ、AUC=1を有する第2のAU内の画像、スライス、またはタイルは、それぞれtemporal_id=1およびlayer_id=0または1を有することができる。temporal_idおよびlayer_idの値にかかわらず、POCの値は画像毎に1ずつ増加する。図22を参照すると、poc_cycle_auの値は2に等しくなり得る。一例では、poc_cycle_auの値は、(空間スケーラビリティ)層の数と等しく設定されることが好ましい。この例では、POCの値は2だけ増加し、AUCの値は1だけ増加する。
上記の実施形態では、HEVCまたは参照画像リスト(RPL)通知などのビデオ標準における参照画像セット(RPS)通知を使用することによって、画像間または層間予測構造および参照画像指示のすべてまたはサブセットをサポートすることができる。RPSまたはRPLでは、現在の画像と選択された参照画像との間のPOCの値またはPOCのデルタ値を通知することによって、選択された参照画像を示すことができる。様々な例において、RPSおよびRPLは、通知を変更することなく、かつ以下の制限を伴って、画像間または層間予測構造を示すために使用され得る。参照画像のtemporal_idの値が現在の画像のtemporal_idの値より大きい場合、現在の画像は、動き補償または他の予測のために参照画像を使用しない場合がある。参照画像のlayer_idの値が現在の画像のlayer_idの値より大きい場合、現在の画像は、動き補償または他の予測のために参照画像を使用しない場合がある。
一実施形態では、時間的動きベクトル予測のためのPOC差に基づく動きベクトルのスケーリングは、AU内の複数の画像にわたって無効にすることができる。したがって、各画像はAU内で異なるPOC値を有し得るが、同じAU内で異なるPOCを有する参照画像は同じ時間インスタンスを有する参照画像と見なされるため、動きベクトルはスケーリングされず、AU内の時間動きベクトル予測に使用されない。したがって、動きベクトルスケーリング関数は、参照画像が現在の画像に関連付けられた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)を有するサブ画像が符号化され、層0に対応する符号化ビットストリームに含まれ得る。Wはサブ画像の幅を示し、Hはサブ画像の高さを示す。アップサンプリングされた(またはダウンサンプリングされた)サブ画像は、元の空間解像度を有するサブ画像からアップサンプリング(またはダウンサンプリング)され得る。アップサンプリングされた(またはダウンサンプリングされた)サブ画像は、空間解像度(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つの独立したサブ画像層が存在してもよい。独立したサブ画像層は、0に等しい、NALユニットヘッダまたは別の高レベル構文構造に存在し得る層識別子(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内の復号画素は再サンプリングされ、参照に使用される。再サンプリング処理は、アップサンプリングフィルタリングまたはダウンサンプリングフィルタリングを必要とする場合がある。
図23は、0に等しいlayer_idを有する背景ビデオ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の最上位層である。
一実施形態では、画像は、深度マップ、アルファマップ、30ジオメトリデータ、占有マップなどを含む1つまたは複数の関連するメディアデータを含む。そのような関連付けられた時限メディアデータは、各々が1つのサブ画像に対応する1つまたは複数のデータサブストリームに分割することができる。
一実施形態では、図24は、多層サブ画像方法に基づくテレビ会議の一例を示す。ビデオストリームには、背景画像に対応する1つのベース層ビデオビットストリームと、前景サブ画像に対応する1つまたは複数の拡張層ビデオビットストリームとが含まれる。各強化層ビデオビットストリームは、CSPS層に対応する。ディスプレイでは、ベース層に対応する画像がデフォルトで表示される。tは、画像(PIP)内の1つまたは複数のユーザの画像を含む。クライアントの制御によって特定のユーザが選択されると、選択されたユーザに対応する拡張CSPS層が復号され、拡張された品質または空間解像度で表示される。
図25は、上述の動作のための図を示す。(S2501)から動作を開始し、(S2510)に進む。
(S2510)において、多層を有するビデオビットストリームを復号することができる。
(S2520)において、背景領域および1つまたは複数の前景サブ画像を識別することができる。
(S2530)において、特定のサブ画像領域が選択されているかどうかを決定することができる。特定のサブ画像領域が選択されたと決定された場合、処理は(S2540)に進む。そうでない場合は(S2550)に進む。
(S2540)において、拡張サブ画像を復号して表示することができる。そして、(S2599)に進み、動作を終了する。
(S2550)において、背景領域を復号して表示することができる。そして、(S2599)に進み、動作を終了する。
一実施形態では、ネットワークミドルボックス(ルータなど)は、その帯域幅に応じて、ユーザに送信する層のサブセットを選択することができる。画像/サブ画像編成は、帯域幅適応のために使用され得る。例えば、ユーザが帯域幅を持っていない場合、ルータは、それらの重要性に起因して、または使用される設定に基づいて、削除を削除またはいくつかのサブ画像を選択し、動作は、帯域幅に適応するために動的に行われ得る。
図26は、360ビデオのユースケースを示している。球面360画像が平面画像上に投影される場合、投影360画像は、ベース層として複数のサブ画像に分割され得る。特定のサブ画像の強化層は、符号化され、クライアントに送信され得る。デコーダは、すべてのサブ画像を含むベース層と選択されたサブ画像の拡張層の両方を復号することができる。現在のビューポートが選択されたサブ画像と同一である場合、表示された画像は、拡張層を有する復号されたサブ画像でより高い品質を有することができる。そうでなければ、ベース層を有する復号画像を低品質で表示することができる。
一実施形態では、表示のための任意の適切なレイアウト情報は、補助情報(SEIメッセージまたはメタデータなど)としてファイルに存在することができる。1つまたは複数の復号されたサブ画像は、通知されたレイアウト情報に応じて再配置および表示され得る。レイアウト情報は、ストリーミングサーバまたは放送局によって通知されてもよいし、ネットワークエンティティまたはクラウドサーバによって再生成されてもよいし、ユーザのカスタマイズされた設定によって決定されてもよい。
一実施形態では、入力画像が1つまたは複数のサブ領域(例えば、矩形サブ領域)に分割される場合、各サブ領域は独立した層として符号化され得る。ローカル領域に対応する各独立層は、一意のlayer_id値を有することができる。各独立した層について、サブ画像サイズおよび位置情報が通知され得る。例えば、画像サイズ(例えば、写真の幅および/または高さ)、左上隅のオフセット情報(例えば、x_offset、y_offset)である。図27は、分割されたサブ画像のレイアウト、サブ画像サイズ、位置情報、および対応する画像予測構造の一例を示す。サブ画像サイズ(複数可)およびサブ画像位置(複数可)を含むレイアウト情報は、パラメータセット(複数可)、スライスもしくはタイルグループのヘッダ、またはSEIメッセージなどの高レベル構文構造で通知され得る。
一実施形態では、独立した層に対応する各サブ画像は、AU内で一意のPOC値を有することができる。DPBに保存された画像のうちの参照画像が、RPSまたはRPL構造の構文要素を使用して示される場合、層に対応する各サブ画像のPOC値が使用され得る。
一実施形態では、予測構造(例えば、層間予測構造)を示すために、layer_idは使用されなくてもよく、POC値(例えば、POCデルタ値)が使用されてもよい。
一実施形態では、層(またはローカル領域)に対応するNに等しいPOC値を有するサブ画像は、動き補償予測のための同じ層(または同じローカル領域)に対応する、N+Kに等しいPOC値を有するサブ画像の参照画像として使用されてもされなくてもよい。様々な例において、数Kの値は、最大層数(例えば、独立した層)に等しくてもよく、これはいくつかのサブ領域と同一であってもよい。
一実施形態では、図28は、図27の拡張ケースを示す。入力画像が複数の(例えば4)サブ領域に分割される場合、各ローカル領域は1つまたは複数の層で符号化され得る。図28を参照すると、独立した層の数はサブ領域の数に等しくてもよく、1つまたは複数の層はサブ領域に対応してもよい。したがって、各サブ領域は、1つまたは複数の独立した層および0または複数の従属層で符号化することができる。
一実施形態では、図28において、入力画像は4つのサブ領域に分割され得る。右上サブ領域は2つの層(例えば、層1および層4)として符号化されてもよく、右下サブ領域は2つの層(例えば、層3および層5)として符号化されてもよい。図28では、層4は、動き補償予測のために層1を参照することができ、層5は、動き補償のために層3を参照することができる。
一実施形態では、層境界にわたるループ内フィルタリング(例えば、デブロッキングフィルタ、適応インループフィルタ処理、リシェーパ、バイラテラルフィルタ、または任意のディープラーニングベースのフィルタリング)を(任意選択的に)無効にすることができる。
一実施形態では、層境界にわたる動き補償予測またはブロック内コピーは、(任意選択的に)無効にされ得る。
一実施形態では、サブ画像の境界における動き補償予測またはインループフィルタ処理のための境界パディングは、任意選択的に処理されてもよい。境界パディングが処理されるかどうかを示すフラグは、パラメータセット(VPS、SPS、PPS、またはAPS)、スライスもしくはタイルグループヘッダ、またはSEIメッセージなどの高レベル構文構造で通知され得る。
一実施形態では、サブ領域(またはサブ画像)のレイアウト情報は、VPSまたはSPSで通知され得る。図29A~図29Bは、VPSおよびSPS内の構文要素の例を示す。図29Aを参照すると、フラグ(例えば、vps_sub_picture_dividing_flag)がVPSで通知される。フラグ(例えば、vps_sub_picture_dividing_flag)は、入力画像が複数のサブ領域に分割されているかどうかを示すことができる。フラグ(例えば、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_picture_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メッセージで通知され得る。図30は、サブ領域のレイアウト、層間の依存関係、およびサブ領域と1つまたは複数の層との間の関係の情報を示す構文要素の一例を示す。図30を参照すると、構文要素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のサブ領域の幅および高さを示すことができる。
一実施形態では、PTL情報の有無にかかわらず出力される複数の層のうちの1つを示すように設定された出力層セットを指定する1つまたは複数の構文要素は、高レベルの構文構造、例えば、VPS、DPS、SPS、PPS、APSまたはSEIメッセージで通知され得る。
図31を参照すると、VPSを参照する符号化ビデオシーケンスにおける出力層セット(OLS)の数を示す構文要素num_output_layer_setsが、VPSにおいて通知され得る。出力層セットごとに、出力層ごとにフラグ(例えば、output_layer_flag)が通知され得る。
一実施形態では、output_layer_flag [i]が1に等しいことは、第iの層が出力であることを指定することができる。vps_output_layer_flag [i]が0であることにより、第iの層が出力ではないことを特定することができる。
一実施形態では、各出力層セットのPTL情報を指定する1つまたは複数の構文要素は、高レベルの構文構造、例えば、VPS、DPS、SPS、PPS、APSまたはSEIメッセージで通知され得る。図31を参照すると、VPSを参照する符号化されたビデオシーケンス内のOLSごとのプロファイルティアレベル情報の数を示す構文要素num_profile_tile_levelは、VPS内で通知され得る。出力層セットごとに、PTL情報の構文要素の集合、またはPTL情報内のエントリのうち特定のPTL情報を示すインデックスが、出力層ごとに通知されてもよい。
一実施形態では、profile_tier_level_idx [i] [j]は、VPS内のprofile_tier_level()構文構造のリスト内の、第iのOLSの第jの層に適用されるprofile_tier_level()構文構造のインデックスを指定する。
一実施形態では、図32を参照すると、最大層の数が1より大きい場合(vps_max_layers_minus1>0)、構文要素num_profile_tile_levelおよび/またはnum_output_layer_setsが通知され得る。
一実施形態では、図32を参照すると、第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]は、出力である層が、第iの出力層が設定された1に等しいvps_output_layer_flag [i] [j]を有する層であることを指定する。他の値が保留され得る。
一実施形態では、output_layer_flag [i] [j]は、第iの出力層セットのvps_output_layers_mode [i]の値に応じて通知されてもされなくてもよい。
一実施形態では、図32を参照すると、第iの出力層セットについてフラグvps_ptl_signal_flag [i]が存在してもよい。vps_ptl_signal_flag [i]の値によっては、第iの出力層セットのPTL情報は通知されてもされなくてもよい。
一実施形態では、図33を参照すると、現在のCVS内のいくつかのサブ画像(例えば、max_subpics_minus1)は、例えばVPS、DPS、SPS、PPS、APSまたはSEIメッセージなどの高レベル構文構造で通知され得る。
一実施形態では、図33を参照すると、サブ画像の数が1より大きい場合(max_subpics_minus1>0)、第iのサブ画像のサブ画像識別子(例えば、sub_pic_id [i])が通知され得る。
一実施形態では、各出力層セットの各層に属するサブ画像識別子を示す1つまたは複数の構文要素は、VPSで通知され得る。図34を参照すると、sub_pic_id_layer [i] [j] [k]は、第iの出力層セットの第jの層に存在する第kのサブ画像を示す。以上の情報により、デコーダは、特定の出力層セットの層ごとに、どのサブ画像を復号して出力してよいかを認識することができる。
一実施形態では、画像ヘッダ(PH)は、符号化された画像のすべてのスライスに適用される構文要素を含む構文構造である。スライスヘッダは、スライスに表されたタイル内のすべてのタイルまたはCTU行に関係するデータ要素を含む符号化スライスの一部とすることができる。画像ユニット(PU)は、指定された分類規則に従って互いに関連付けられ、復号順に連続し、例えば正確に1つの符号化された画像を含むNALユニットのセットである。PUは、画像ヘッダ(PH)と、符号化された画像を構成する1つまたは複数のVCL NALユニットとを含み得る。
一実施形態では、SPS(RBSP)は、SPSが参照される前の復号プロセスに利用可能であり、0に等しいTemporalIdを有する少なくとも1つのAUに含まれるか、または外部手段を介して提供され得る。
一実施形態では、SPS(RBSP)は、SPSを参照する1つまたは複数のPPSを含む、または外部手段を介して提供され得る、CVS内のTemporalIdが0に等しい少なくとも1つのAUに含まれる、SPSが参照される前に復号プロセスに利用可能であり得る。
一実施形態では、SPS(RBSP)は、SPSを参照する1つまたは複数のPPSを含む、または外部手段を介して提供される、CVS内のSPS NALユニットを参照するPPS NALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれる、1つまたは複数のPPSによってSPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、SPS(RBSP)は、0に等しいTemporalIdおよびSPS NALユニットを参照するPPS NALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれる、または外部手段を介して提供される、1つまたは複数のPPSによってSPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、SPS(RBSP)は、SPSを参照する1つまたは複数のPPSを含む、または外部手段を介して提供される、CVS内のSPS NALユニットを参照するPPS NALユニットのTemporalIdが0に等しく、nuh_layer_idが最も低いnuh_layer_id値に等しい少なくとも1つのPUに含まれる、SPSが1つまたは複数のPPSによって参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、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値に等しくてもよい。
一実施形態では、mに等しいnuh_layer_idを有するSPSが、nに等しいnuh_layer_idを有する1つまたは複数のPPSによって参照されるとき、nuh_layer_idがmに等しい層は、nuh_layer_idがnに等しい層またはnuh_layer_idがmに等しい層の(直接的または間接的な)参照層と同じであってもよい。
一実施形態では、PPS(RBSP)は、PPS NALユニットのTemporalIdと等しいTemporalIdを有する少なくとも1つのAUに含まれるか、または外部手段を介して提供される、PPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、PPS(RBSP)は、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、CVS内のPPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれる、PPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、CVS内のPPS NALユニットを参照する符号化スライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれる、1つまたは複数のPH(または符号化スライスNALユニット)によってPPSが参照される前に、PPS(RBSP)が復号プロセスに利用可能であり得る。
一実施形態では、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、PPS NALユニットのTemporalIdに等しいTemporalIdと、CVS内のPPS NALユニットを参照する符号化スライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idとを有する少なくとも1つのPUに含まれる、1つまたは複数のPH(または符号化スライスNALユニット)によってPPSが参照される前に、PPS(RBSP)が復号プロセスに利用可能であり得る。
一実施形態では、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値は、NALユニットを参照する符号化スライスNALユニットの最も低いnuh_layer_id値に等しくてもよい。NALユニットは、PPS NALユニットを指す。
一実施形態では、mに等しいnuh_layer_idを有するPPSが、nに等しいnuh_layer_idを有する1つまたは複数の符号化スライスNALユニットによって参照されるとき、mに等しいnuh_layer_idを有する層は、nに等しいnuh_layer_idを有する層またはmに等しいnuh_layer_idを有する層の(直接または間接)参照層と同じであってもよい。
一実施形態では、PPS(RBSP)は、PPS NALユニットのTemporalIdと等しいTemporalIdを有する少なくとも1つのAUに含まれるか、または外部手段を介して提供される、PPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、PPS(RBSP)は、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、CVS内のPPS NALユニットのTemporalIdに等しいTemporalIdを有する少なくとも1つのAUに含まれる、PPSが参照される前に、復号プロセスに利用可能であり得る。
一実施形態では、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、CVS内のPPS NALユニットを参照する符号化スライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idを有する少なくとも1つのPUに含まれる、1つまたは複数のPH(または符号化スライスNALユニット)によってPPSが参照される前に、PPS(RBSP)が復号プロセスに利用可能であり得る。
一実施形態では、PPSを参照する1つまたは複数のPH(または符号化スライスNALユニット)を含む、または外部手段を介して提供される、PPS NALユニットのTemporalIdに等しいTemporalIdと、CVS内のPPS NALユニットを参照する符号化スライスNALユニットの最も低いnuh_layer_id値に等しいnuh_layer_idとを有する少なくとも1つのPUに含まれる、1つまたは複数のPH(または符号化スライスNALユニット)によってPPSが参照される前に、PPS(RBSP)が復号プロセスに利用可能であり得る。
一実施形態では、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値に等しくてもよい。
一実施形態では、mに等しいnuh_layer_idを有するPPSが、nに等しいnuh_layer_idを有する1つまたは複数の符号化スライスNALユニットによって参照されるとき、mに等しいnuh_layer_idを有する層は、nに等しいnuh_layer_idを有する層またはmに等しいnuh_layer_idを有する層の(直接または間接)参照層と同じであってもよい。
出力層は、出力である出力層セットの層を示す。出力層セット(OLS)は、指定された層のセットを含む層のセットを示し、層のセット内の1つまたは複数の層が出力層であるように指定される。OLS層インデックスは、OLSにおける層のインデックスである。OLS層インデックスは、OLSにおける層のリストを指し示すことができる。
サブ層は、TemporalId変数の特定の値を有するVCL NALユニットおよび関連する非VCL NALユニットを含む時間スケーラブルなビットストリームの時間スケーラブルな層を示す。サブ層表現は、特定のサブ層および下位のサブ層のNALユニットを含むビットストリームのサブセットを示す。
VPS RBSPは、0に等しいTemporalIdを有する少なくとも1つのAUに含まれるか、または外部手段を介して提供される、VPS RBSPが参照される前に復号プロセスに利用可能であり得る。CVS内のvps_video_parameter_set_idの特定の値を有するすべてのVPS NALユニットは、同じコンテンツを有することができる。
vps_video_parameter_set_idは、他の構文要素による参照のためのVPSの識別子を提供する。vps_video_parameter_set_idの値は0より大きくてもよい。
vps_max_layers_minus+1は、VPSを参照する各CVS内の最大許容層数を指定する。
vps_max_sublayers_minus+1は、VPSを参照する各CVS内の層に存在し得る一時サブ層の最大数を指定する。vps_max_sublayers_minus1の値は、0以上6以下の範囲であってもよい。
一例では、1に等しいフラグ(例えば、vps_all_layers_same_num_sublayers_flag)は、一時サブ層の数がVPSを参照する各CVS内のすべての層について同じであることを指定する。フラグ(例えば、vps_all_layers_same_num_sublayers_flag)が0に等しい場合、VPSを参照する各CVS内の層が同じ数の一時サブ層を有しても有さなくてもよいことを指定する。存在しない場合、フラグ(例えば、vps_all_layers_same_num_sublayers_flag)の値は1に等しいと推測される。
フラグ(例えば、vps_all_independent_layers_flag)が1に等しい場合、CVS内のすべての層が層間予測を使用せずに独立して符号化されることを指定する。フラグ(例えば、vps_all_independent_layers_flag)が0に等しい場合、CVS内の1つまたは複数の層が層間予測を使用することができることを指定する。存在しない場合、フラグ(例えば、vps_all_independent_layers_flag)の値は1に等しいと推測される。
vps_layer_id [i]は、第iの層のnuh_layer_idの値を指定することができる。mおよびnの任意の2つの負でない整数値について、mがn未満であるとき、vps_layer_id [m]の値はvps_layer_id [n]未満であり得る。
1に等しいvps_independent_layer_flag [i]は、インデックスiを有する層が層間予測を使用しないことを指定することができる。0に等しいvps_independent_layer_flag [i]は、インデックスiを有する層が層間予測を使用し得ることを指定することができ、0以上i-1以下の範囲内のjの構文要素vps_direct_ref_layer_flag [i] [j]がVPSに存在する。存在しない場合、vps_independent_layer_flag [i]の値は1に等しいと推測される。
0に等しいvps_direct_ref_layer_flag [i] [j]は、インデックスjを有する層がインデックスiを有する層に対する直接的な参照層ではないことを指定することができる。1に等しいvps_direct_ref_layer_flag [i] [j]は、インデックスjを有する層がインデックスiを有する層に対する直接参照層であることを指定することができる。0以上、vps_max_layers_minus1以下の範囲のiおよびjについて、vps_direct_ref_layer_flag [i] [j]が存在しない場合、0と等しいと推測される。vps_independent_layer_flag [i]が0に等しいとき、vps_direct_ref_layer_flag [i] [j]の値が1に等しくなるように、0以上i-1以下の範囲内に少なくとも1つのjの値があってもよい。
変数NumDirectRefLayers [i]、DirectRefLayerldx [i] [d]、NumRefLayers [i]、RefLayerldx [i] [r]、およびLay erUsedAsRefLayerFlag [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]){
DirectRefLayerldx[ i ][ d++]=j
LayerUsedAsRefLayerFlag[ j ]=1
}
if(dependencyFlag[ i ][ j ])
RefLayerldx[ i ][ r++]=j
}
NumDirectRefLayers[ i ]=d
NumRefLayers[ i ]=r
}
vps_layer_id [i]に等しいnuh_layer_idを有する層の層インデックスを指定する変数GeneralLayerldx [i]は、以下のように導出することができる。
for(i=0;i <=vps_max_layers_minus1;i++)
GeneralLayerldx[ vps_layer_id[ i ] ]=i
一例では、iおよびjのいずれか2つの異なる値について、フラグ(例えば、dependencyFlag [i] [j])が1に等しい場合、両方とも0からvps_max_layers_minus1までの範囲内である。ビットストリーム適合性の要件は、第iの層に適用されるchroma_format_idcおよびbit_depth_minus 8の値が、第jの層に適用されるchroma_format_idcおよびbit_depth_minus 8の値にそれぞれ等しくなり得ることであり得る。
1に等しいmax_tid_ref_present_flag [i]は、構文要素max_tid_il_ref_pics_plus1[i]が存在することを指定することができる。0に等しいmax_tid_ref_present_flag [i]は、構文要素max_tid_il_ref_pics_plus1[i]が存在しないことを指定することができる。
0に等しいmax_tid_il_ref_pics_plusl[i]は、第iの層の非IRAP画像では層間予測を用いないことを指定できる。0より大きいmax_tid_il_ref_pics_plus1 [i]は、第iの層の画像を復号するために、max_tid_il_ref_pics_plus 1 [i]-1より大きいTemporalIdを有する画像がILRPとして使用されないことを指定することができる。存在しない場合、max_tid_il_ref_pics_plus1 [i]の値は7に等しいと推測される。
1に等しいeach_layer_is_an_ols_flagは、各OLSが1つの層のみを含み、VPSを参照するCVS内の各層自体がOLSであり、含まれる単一の層が唯一の出力層であることを指定することができる。0に等しいeach_layer_is_an_ols_flagは、OLSが2つ以上の層を含み得ることを指定し得る。vps_max_layers_minus1が0に等しい場合、each_layer_is_an_ols_flagの値は1に等しいと推測される。そうでない場合、vps_all_independent_layers_flagが0に等しいとき、each_layer_is_an_ols_flagの値は0に等しいと推測される。
ols_mode_idcが0に等しいことは、VPSによって指定されたOLSの総数がvps_max_layers_minus1+1に等しいことを指定することができ、第iのOLSは0以上i以下の層インデックスを有する層を含み、各OLSについて、OLSの最上位層のみが出力される。
ols_mode_idcが1に等しいことは、VPSによって指定されたOLSの総数がvps_max_layers_minus1+1に等しいことを指定することができ、第iのOLSは0以上i以下の層インデックスを有する層を含む。各OLSについて、OLS内のすべての層が出力である。
2に等しいols_mode_idcは、VPSによって指定されたOLSの総数が明示的に通知され、各OLSについて、出力層が明示的に通知され、他の層がOLSの出力層の直接または間接参照層である層であることを指定することができる。
ols_mode_idcの値は、0以上2以下の範囲であってもよい。ols_mode_idcの値3は、例えばITU-TまたはISO/IECによって、特定のビデオ符号化技術または標準のために予約することができる。
フラグ(例えば、vps_all_independent_layers_flag)が1に等しく、フラグ(例えば、each_layer_is_an_ols_flag)が0に等しい場合、ols_mode_idcの値は2に等しいと推測される。
num_output_layer_sets_minusl+1は、ols_mode_idcが2に等しいときにVPSによって指定されるOLSの総数を指定することができる。
VPSによって指定されたOLSの総数を指定する変数TotalNumOlssは、以下のように導出することができる。
if(vps_max_layers_minus1==0)
TotalNumOlss=1
else if(each_layer_is_an_ols_flag 1 1 ols_mode_idc==0 1 1 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]が1である場合、nuh_layer_idがvps_layer_id [j]に等しい層は、ols_mode_idcが2に等しいときに第iのOLSの出力層であることを指定することができ、ols_output_layer_flag [i] [j]が0に等しい場合、nuh_layer_idがvps_layer_id [j]に等しい層は、ols_mode_idcが2に等しいときに第iのOLSの出力層ではないことを指定する。
第iのOLSにおける出力層の数を指定する変数NumOutputLayerslnOls [i]、第iのOLSにおける第jの層におけるサブ層の数を指定する変数NumSubLayerslnLayerlnOLS [i] [j]、第iのOLSにおける第jの出力層のnuh_layer_id値を指定する変数OutputLayerldlnOls [i] [j]、第kの層が少なくとも1つのOLSにおける出力層として使用されるかどうかを指定する変数LayerUsedAsOutputLayerFlag [k]は、以下のように導出することができる:
NumOutputLayerslnOls[ 0 ]=1
OutputLayerldlnOls[ 0 ][ 0 ]=vps_layer_id[ 0 ]
NumSubLayerslnLayerlnOLS[ 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 1 1 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 1 1 ols_mode_idc==0)
{NumOutputLayerslnOls [i]=1
OutputLayerldlnOls [i] [0]=vps_layer_id [i]
for(j=0;j < i&&(ols_mode_idc==0);j++)
NumSubLayerslnLayerlnOLS[ i ][ j ]=max_tid_il_ref_pics_plus1[ i ]
NumSubLayerslnLayerlnOLS[ i ][ i ]=vps_max_sub_layers_minus1+1
}else if(ols_mode_idc==1){
NumOutputLayerslnOls[ i ]=i+1
for(j=0;j < NumOutputLayerslnOls[ i ];j++)
{ OutputLayerldlnOls[ i ][ j ]=vps_layer_id[ j ]
NumSubLayerslnLayerlnOLS[ i ][ j ]=vps_max_sub_layers_minus1+1
}
}else if(ols_mode_idc==2){
for(j=0;j <=vps_max_layers_minus1;j++)
{ layerlncludedlnOlsFlag[ i ][ j ]=0
NumSubLayerslnLayerlnOLS[ i ][ j ]=0
}
for(k=0,j=0;k <=vps_max_layers_minus1;k++)
if(ols_output_layer_flag[ i ][ k ]){
layerlncludedlnOlsFlag[ i ][ k ]=1
LayerUsedAsOutputLayerFlag[ k ]=1
OutputLayerldx[ i ][ j ]=k
OutputLayerldlnOls[ i ][ j++]=vps_layer_id[ k ]
NumSubLayerslnLayerlnOLS[ i ][ j ]=vps_max_sub_layers_minus1+1
}
NumOutputLayerslnOls[ i ]=j
for(j=0;j < NumOutputLayerslnOls[ i ];j++)
{ idx=OutputLayerldx[ i ][ j ]
for(k=0;k < NumRefLayers[ idx ];k++)
{ layerlncludedlnOlsFlag[ i ][ RefLayerldx[ idx ][ k ] ]=1
if(NumSubLayerslnLayerlnOLS[ i ][ RefLayerldx[ idx ][ k ] ] <
max_tid_il_ref_pics_plus1[ OutputLayerldlnOls[ i ][ j ] ])
NumSubLayerslnLayerlnOLS[ i ][ RefLayerldx[ idx ][ k ] ]=
max_tid_il_ref_pics_plus1[ OutputLayerldlnOls[ i ][ j ] ]
}
}
}
0以上、vps_max_layers_minus1以下の範囲のiの各値について、L a y erUsedAsRefLayerFlag [i]およびL a y erUsedAsOutputLayerFlag [i]の値は、いずれも0に等しくなくてもよい。したがって、少なくとも1つのOLSの出力層でも他の層の直接参照層でもない層は存在しない場合がある。
各OLSについて、出力層である少なくとも1つの層が存在し得る。したがって、0以上TotalNumOlss-1以下の範囲内のiの任意の値について、NumOutputLayerslnOls [i]の値は1以上であってもよい。
第iのOLSの層数を指定する変数NumLayerslnOls [i]と、第iのOLSの第jの層のnuh_layer_id値を指定する変数LayerldlnOls [i] [j]とは、以下のように導出される:
NumLayerslnOls[ 0 ]=1
LayerldlnOls[ 0 ][ 0 ]=vps_layer_id[ 0 ]
for(i=1;i < TotalNumOlss;i++){
if(each_layer_is_an_ols_flag)
{ NumLayerslnOls[ i ]=1
LayerldlnOls[ i ][ 0 ]=vps_layer_id[ i ]
} else if(ols_mode_idc==0 1 1 ols_mode_idc==1){
NumLayerslnOls[ i ]=i+1
for(j=0;j < NumLayerslnOls[ i ];j++)
LayerldlnOls[ i ][ j ]=vps_layer_id[ j ]
}else if(ols_mode_idc==2){
for(k=0,j=0;k <=vps_max_layers_minus1;k++)
if(layerlncludedlnOlsFlag[ i ][ k ])
LayerldlnOls[ i ][ j++]=vps_layer_id[ k ]
NumLayerslnOls[ i ]=j
}
}
nuh_layer_idがLayerldlnOls [i] [j]に等しい層のOLS層インデックスを指定する変数OlsLayerldx [i] [j]は、以下のように導出できる:
for(i=0;i < TotalNumOlss;i++)
for j=0;j < NumLayerslnOls[i];j++)
OlsLayerldx[ i ][ LayerldlnOls[i][j]]=j
各OLSにおける最下層は、独立した層であってもよい。したがって、0以上TotalNumOlss-1以下の範囲の各iについて、vps_independent_layer_flag [GeneralLayerldx [LayerldlnOls [i] [0] ] ]の値は1に等しくてもよい。
各層は、VPSによって指定される少なくとも1つのOLSに含まれてもよい。したがって、0以上、vps_max_layers_minus1以下の範囲内のkについてのvps_layer_id [k]のうちの1つに等しいnuh_layer_id nuhLayerldの特定の値を有する各層について、LayerldlnOls [i] [j]の値がnuhLayerldに等しくなるように、iとjの値の少なくとも1つのペアが存在してもよく、iは0以上、TotalNumOlss-1以下の範囲内にあり、jはNumLayerslnOls [i]-1以下の範囲内にある。
一実施形態では、復号プロセスは、現在の画像CurrPicについて以下のように動作する。
-PictureOutputFlagは以下のように設定される:
-以下の条件のうちの1つが真である場合、PictureOutputFlagは0に等しく設定される:
-現在の画像はRASL画像であり、関連するlRAP画像のNoOutputBeforeRecoveryFlagは1に等しい。
-gdr_enabled_flagは1に等しく、現在の画像は、1に等しいNoOutputBeforeRecoveryFlagを有するGDR画像である。
-gdr_enabled_flagが1に等しく、現在の画像が、NoOutputBeforeRecoveryFlagが1に等しいGDR画像と関連付けられ、現在の画像のPicOrderCntValが、関連付けられたGDR画像のRpPicOrderCntValよりも小さい。
-sps_video_parameter_set_idが0より大きく、ols_mode_idcが0に等しく、現在のAUが以下の条件のすべてを満たす画像picAを含む:
-PicAのPictureOutputFlagが1である。
-PicAは、現在の画像よりも大きなnuh_layer_id nuhLidを有する。
-PicAは、OLS(すなわち、OutputLayerldlnOls [TargetOlsldx] [0]はnuhLidに等しい)の出力層に属する。
-sps_video_parameter_set_idが0より大きく、ols_mode_idcが2に等しく、
ols_output_layer_flag [TargetOlsldx] [GeneralLayerldx [nuh_layer_id] ]は0に等しい。
-そうでない場合、PictureOutputFlagはpic_output_flagと等しく設定される。
現在の画像のすべてのスライスが復号された後、現在の復号された画像は「短期参照に使用」としてマークされ、RefPicList [0]またはRefPicList [1]内の各ILRPエントリは「短期参照に使用」としてマークされる。
一実施形態では、各層が出力層セットである場合、ols_mode_idcの値にかかわらず、PictureOutputFlagはpic_output_flagと等しく設定される。
一実施形態において、PictureOutputFlagは、sps_video_parameter_set_idが0より大きく、each_layer_is_an_ols_flagが0に等しく、ols_mode_idcが0に等しく、現在のAUが以下の条件:PicAが1に等しいPictureOutputFlagを有し、PicAが現在の画像のものよりも大きいnuh_layer_id nuhLidを有し、PicAがOLSの出力層に属する(すなわち、OutputLayerldlnOls [TargetOlsldx] [0]はnuhLidに等しい)、のすべてを満たす画像picAを含む場合に0に等しく設定される。
一実施形態では、PictureOutputFlagは、sps_video_parameter_set_idが0よりも大きく、each_layer_is_an_ols_flagが0に等しく、ols_mode_idcが2に等しく、ols_output_layer_flag [TargetOlsldx] [GeneralLayerldx [nuh_layer_id] ]が0に等しい場合に、0に等しく設定される。
図35は、VPS RBSPの構文構造の一例を示す。図35に示す構文構造は、図34に示す構文構造と同様であり、したがって、簡潔にするために詳細な説明は省略する。
上述した技術(例えば、制約フラグ、適応解像度パラメータ、および/またはこれらに類似するものを通知するための技術)は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実施することができる。例えば、図36は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(3600)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって、直接実行することができるか、または解釈、マイクロコード実行などを介して実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどのメカニズムを受けることができる任意の適切な機械コードまたはコンピュータ言語を使用して符号化することができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々な種類のコンピュータまたはそのコンポーネント上で実行することができる。
コンピュータシステム(3600)について図36に示すコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する制限を示唆することを意図していない。コンポーネントの構成は、コンピュータシステム(3600)の例示的な実施形態に示されているコンポーネントのいずれかまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(3600)は、特定のヒューマンインタフェース入力デバイスを含むことができる。そのようなヒューマンインタフェース入力デバイスは、例えば、触知入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した1つまたは複数の人間のユーザによる入力に応答することができる。ヒューマンインタフェースデバイスは、オーディオ(例えば、音声、音楽、周囲音)、画像(例えば、走査画像、静止画像カメラから取得した写真画像)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定のメディアを取り込むために使用することもできる。
入力ヒューマンインタフェースデバイスには、キーボード(3601)、マウス(3602)、トラックパッド(3603)、タッチスクリーン(3610)、データグローブ(図示せず)、ジョイスティック(3605)、マイク(3606)、スキャナ(3607)、カメラ(3608)のうちの1つまたは複数(それぞれ1つのみが描かれる)が含まれることがある。
コンピュータシステム(3600)はまた、特定のヒューマンインタフェース出力デバイスを含んでもよい。そのようなヒューマンインタフェース出力デバイスは、例えば、触知出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激することができる。そのようなヒューマンインタフェース出力デバイスは、触知出力デバイス(例えば、タッチスクリーン(3610)、データグローブ(図示せず)、またはジョイスティック(3605)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)、オーディオ出力デバイス(例えば、スピーカ(3609)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(3610)などであって、それぞれがタッチスクリーン入力機能を有するかまたは有さず、それぞれが触知フィードバック機能を有するかまたは有さず、その一部は、ステレオ出力などの手段を介して2次元視覚出力または3次元を超える出力を出力することができてもよいスクリーン、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ、および発煙剤タンク(図示せず))、およびプリンタ(図示せず)を含むことができる。
コンピュータシステム(3600)はまた、人がアクセス可能なストレージデバイスおよびそれらの関連メディア、例えば、CD/DVDなどのメディア(3621)を有するCD/DVD ROM/RW(3620)を含む光学メディア、サムドライブ(3622)、リムーバブル・ハード・ドライブまたはソリッド・ステート・ドライブ(3623)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気メディア、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなどを含むことができる。
当業者はまた、本開示の主題に関連して使用される 「コンピュータ可読メディア」 という用語が、伝送メディア、搬送波、または他の一時的信号を包含しないことを理解すべきである。
コンピュータシステム(3600)はまた、1つまたは複数の通信ネットワーク(3655)へのインタフェース(3654)を含むことができる。ネットワークは、例えば、無線、有線、光であることができる。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などにすることができる。ネットワークの例は、イーサネット、ワイヤレスLANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルテレビ、衛星テレビ、および地上放送テレビを含むテレビ有線または無線広域デジタルネットワーク、CANBusを含む車両および産業などを含む。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(3649)に取り付けられた外部ネットワーク・インタフェース・アダプタ(例えば、コンピュータシステム(3600)のUSBポートなど)を必要とし、他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインタフェースまたはスマートフォン・コンピュータ・システムへのセルラ・ネットワーク・インタフェース)によってコンピュータシステム(3600)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(3600)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたは広域デジタルネットワークを使用して、他のコンピュータシステムに対して、単方向、受信のみ(例えば、放送TV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインタフェースのそれぞれで使用することができる。
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能なストレージデバイス、およびネットワークインタフェースは、コンピュータシステム(3600)のコア(3640)に取り付けることができる。
コア(3640)は、1つまたは複数の中央処理装置(CPU)(3641)、グラフィック処理装置(GPU)(3642)、フィールド・プログラマブル・ゲート・エリア(FPGA)(3643)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(3644)、グラフィックアダプタ(~50)などを含むことができる。これらの装置は、読み取り専用メモリ(ROM)(3645)、ランダムアクセスメモリ(3646)、ユーザがアクセスできない内蔵ハードドライブなどの内部大容量記憶装置、SSDなど(3647)と共にシステムバス(3648)を介して接続し得る。いくつかのコンピュータシステムでは、システムバス(3648)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺デバイスは、コアのシステムバス(3648)に直接取り付けることも、周辺バス(3649)を介して取り付けることもできる。一例では、画面(3610)をグラフィックスアダプタ(3650)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
CPU(3641)、GPU(3642)、FPGA(3643)、およびアクセラレータ(3644)は、組み合わせて上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(3645)またはRAM(3646)に記憶することができる。一時的データはまた、RAM(3646)に記憶することができ、一方、永続データは、例えば内部大容量ストレージ(3647)に記憶することができる。メモリデバイスのいずれかへの高速記憶および取得は、1つまたは複数のCPU(3641)、GPU(3642)、大容量ストレージ(3647)、ROM(3645)、RAM(3646)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読メディアは、様々なコンピュータ実施動作を実行するためのコンピュータコードを有することができる。メディアおよびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
限定ではなく、例として、アーキテクチャ、特にコア(3640)を有するコンピュータシステム(3600)は、1つまたは複数の有形のコンピュータ可読メディアで具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読メディアは、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(3647)またはROM(3645)などの非一時的な性質のコア(3640)の特定のストレージに関連付けられたメディアとすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(3640)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(3640)、具体的にはその中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(3646)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ハードワイヤードまたは他の方法で回路(例えば、アクセラレータ(3644))に具現化された論理の結果として機能を提供することができ、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行することができる。ソフトウェアへの参照は、論理を包含することができ、適切な場合には逆もまた同様である。コンピュータ可読メディアへの言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:joint exploration model ジョイント探索モデル
VVC:versatile video coding 多用途ビデオ符号化
BMS:benchmark set ベンチマークセット
MV:Motion Vector 動きベクトル
HEVC:High Efficiency Video Coding 高効率ビデオ符号化
SEI:Supplementary Enhancement Information 補足強化情報
VUI:Video Usability Information ビデオのユーザビリティ情報
GOP:Groups of Pictures 画像グループ
TU:Transform Units 変換ユニット
PU:Prediction Units 予測ユニット
CTU:Coding Tree Units 符号化ツリーユニット
CTB:Coding Tree Blocks 符号化ツリーブロック
PB:Prediction Blocks 予測ブロック
HRD:Hypothetical Reference Decoder 仮想参照デコーダ
SNR:Signal Noise Ratio 信号ノイズ比
CPU:Central Processing Units 中央処理装置
GPU:Graphics Processing Units グラフィックス処理装置
CRT:Cathode Ray Tube ブラウン管
LCD:Liquid-Crystal Display 液晶ディスプレイ
OLED:Organic Light-Emitting Diode 有機発光ダイオード
CD:Compact Disc コンパクトディスク
DVD:Digital Video Disc デジタルビデオディスク
ROM:Read-Only Memory 読み取り専用メモリ
RAM:Random Access Memory ランダムアクセスメモリ
ASIC:Application-Specific Integrated Circuit 特定用途向け集積回路
PLD:Programmable Logic Device プログラマブルロジックデバイス
LAN:Local Area Network ローカルエリアネットワーク
GSM:Global System for Mobile communications グローバル移動体通信システム
LTE:Long-Term Evolution ロングタームエボリューション
CANBus:Controller Area Network Bus コントローラエリアネットワークバス
USB:Universal Serial Bus ユニバーサルシリアルバス
PCI:Peripheral Component Interconnect 周辺構成要素相互接続
FPGA:Field Programmable Gate Areas フィールドプログラマブルゲートエリア
SSD:solid-state drive ソリッドステートドライブ
IC:Integrated Circuit 集積回路
CU:Coding Unit 符号化ユニット
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る変更、置換、および様々な代替の等価物がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。