図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、メモリスティックなどを含むデジタル媒体への圧縮ビデオの記憶などを含む他のビデオ対応用途に等しく適用可能であり得る。
ストリーミングシステムは、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成するビデオソース(401)、例えば、デジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮られたサンプルを含む。ビデオピクチャのストリーム(402)は、エンコーディングされたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較した場合の高データ量を強調するために太線で示されており、ビデオソース(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)は、コーディングされたビデオシーケンスをその他のデータから分離し得る。ネットワークジッタに対抗するために、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)との間にバッファメモリ(515)が結合され得る。特定の用途では、バッファメモリ(515)はビデオデコーダ(510)の一部である。他の用途では、バッファメモリ(515)はビデオデコーダ(510)の外部にあり得る(図示せず)。さらに他の用途では、例えば、ネットワークジッタに対抗するために、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在し、加えて、例えば、プレイアウトタイミングを処理するために、ビデオデコーダ(510)の内部に他のバッファメモリ(515)が存在し得る。受信機(531)が十分な帯域幅および可制御性の記憶/転送デバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は不要な場合があり、または小さくすることができる。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされてもよく、比較的大きくてもよく、有利には適応サイズであってもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構築するためにパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示したように、電子デバイス(530)の不可欠な部分ではないが電子デバイス(530)に結合することができるレンダデバイス(512)(例えば、表示画面)などのレンダリングデバイスを制御するための情報を含む。(1つまたは複数の)レンダリングデバイスのための制御情報は補足拡張情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)のパラメータセットフラグメント(図示せず)の形式であり得る。パーサ(520)は、受信されたコーディングされたビデオシーケンスを構文解析/エントロピーデコーディングし得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従うことができ、コンテキスト依存性ありまたはなしの可変長コーディング、ハフマンコーディング、算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループは、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトルなどの情報も抽出し得る。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受け取られたビデオシーケンスに対してエントロピーデコーディング/構文解析動作を実行し得る。
シンボル(521)の再構築は、コーディングされたビデオピクチャまたはその部分のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なるユニットを関与させることができる。どのユニットがどのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスから構文解析されたサブグループ制御情報によって制御されることが可能である。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために描かれていない。
すでに言及された機能ブロック以外に、ビデオデコーダ(510)を、以下で説明されるようないくつかの機能ユニットに概念的に細分することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的に互いに統合されることが可能である。しかしながら、開示される主題を説明する目的のために、以下の機能ユニットに概念的に細分するのが適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数と、使用する変換、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報とをパーサ(520)から(1つまたは複数の)シンボル(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などの規格の所定のビデオ圧縮技術に従ってデコーディング動作を実行し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスが、ビデオ圧縮技術または規格の構文とビデオ圧縮技術または規格に文書化されているプロファイルの両方を順守しているという意味で、使用されているビデオ圧縮技術または規格によって指定されている構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格において利用可能なすべてのツールの中から、特定のツールを、そのプロファイル下でそれらだけが利用可能なツールとして選択することができる。また、コンプライアンスのために必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、(例えば、毎秒メガサンプル単位で測定された)最大再構築サンプルレート、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様およびコーディングされたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコーディングされたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、(1つまたは複数の)コーディングされたビデオシーケンスの一部として含まれ得る。追加のデータは、ビデオデコーダ(510)によって、データを適切にデコーディングするために、かつ/または元のビデオデータをより正確に再構築するために使用され得る。追加のデータは、例えば、時間、空間、または信号対雑音比(SNR)強化レイヤ、冗長スライス、冗長ピクチャ、前方誤り訂正コードなどの形式であり得る。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示している。ビデオエンコーダ(603)は電子デバイス(620)に含まれる。電子デバイス(620)は送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用されることが可能である。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべき(1つまたは複数の)ビデオ画像をキャプチャし得る(図6の例では電子デバイス(620)の一部ではない)ビデオソース(601)からビデオサンプルを受信し得る。他の例では、ビデオソース(601)は電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb4:4:4)のものとすることができるデジタルビデオサンプルストリームの形式で提供し得る。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶する記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであり得る。ビデオデータは、順番に見たときに動きを与える複数の個別のピクチャとして提供され得る。ピクチャ自体は、ピクセルの空間配列として編成されてもよく、各ピクセルは、使用中のサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングし、圧縮し得る。適切なコーディング速度を実施することが、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、それらの他の機能ユニットに機能的に結合されている。この結合は明確にするために描かれていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、…)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関係する他の適切な機能を有するように構成され得る。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされるべき入力ピクチャと、(1つまたは複数の)参照ピクチャとに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。(開示の主題で考慮されるビデオ圧縮技術においてはシンボルとコーディングされたビデオビットストリームとの間のいかなる圧縮も可逆であるため)デコーダ(633)は、(リモート)デコーダも作成することになるのと同様のやり方で、シンボルを再構築してサンプルデータを作成する。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダの場所(ローカルかリモートか)に関係なくビットイグザクトな結果につながるので、参照ピクチャメモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」ことになるのと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネルエラーのために同期性を維持できない場合に生じるドリフト)のこの基本原理は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5と併せて上記で詳細にすでに説明されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じとすることができる。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であり得るので、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピーデコーディング部分、およびパーサ(520)は、ローカルデコーダ(633)に完全に実装されない場合もある。
この時点で行われ得る観察は、デコーダに存在する構文解析/エントロピーデコーディング以外の任意のデコーダ技術もまた、実質的に同一の機能形態で、対応するエンコーダ内に必ず存在する必要があるということである。このため、開示の主題は、デコーダの動作に焦点を当てている。エンコーダ技術の説明は、エンコーダ技術が包括的に記載されるデコーダ技術の逆であるため、省略することができる。特定の領域においてのみ、より詳細な説明が必要とされ、以下に提供される。
いくつかの例では、動作中、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする、動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択され得る(1つまたは複数の)参照ピクチャのピクセルブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングし得る。コーディングエンジン(632)の動作は、好適には、非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(図6には示されていない)でデコーディングされ得るとき、再構築されたビデオシーケンスは、通常、多少のエラーを伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得るデコーディングプロセスを複製し、再構築された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させてもよい。このようにして、ビデオエンコーダ(603)は、(送信エラーなしで)遠端ビデオデコーダによって取得されることになる再構築された参照ピクチャとして共通のコンテンツを有する再構築された参照ピクチャのコピーをローカルに記憶し得る。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行し得る。すなわち、コーディングされるべき新しいピクチャについて、予測器(635)は、(候補参照ピクセルブロックとしての)サンプルデータ、または新しいピクチャのための適切な予測参照として機能し得る、参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を探索し得る。予測器(635)は、適切な予測参照を見つけるために、ピクセルブロックごとにサンプルブロックに対して動作し得る。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有し得る。
コントローラ(650)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)においてエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成された(1つまたは複数の)コーディングされたビデオシーケンスを、エンコーディングされたビデオデータを記憶することになる記憶デバイスへのハードウェア/ソフトウェアリンクであり得る、通信チャネル(660)を介した送信に備えてバッファし得る。送信機(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信されるべき他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディング中に、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当ててもよく、これは、それぞれのピクチャに適用され得るコーディング技術に影響を及ぼし得る。例えば、ピクチャは多くの場合、以下のピクチャタイプのうちの1つとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、シーケンス内の任意の他のピクチャを予測ソースとして使用せずに、コーディングおよびデコーディングされ得るピクチャであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者は、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×64ピクセル、32×32ピクセル、16×16ピクセルなどの同じサイズを有する。一般に、CTUは3つのコーディングツリーブロック(CTB)を含み、それらは1つのルマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割されることが可能である。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCUに、または32×32ピクセルの4つのCUに、または16×16ピクセルの16個のCUに分割されることが可能である。一例では、各CUが、インター予測タイプやイントラ予測タイプなどのCUの予測タイプを決定するために解析される。CUは、時間的予測可能性および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)および2つのクロマPBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例としてルマ予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値(例えば、ルマ値)の行列を含む。
図7は、本開示の他の実施形態によるビデオエンコーダ(703)の図を示している。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受け取り、処理ブロックを、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャにエンコーディングするように構成される。一例では、ビデオエンコーダ(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)は、残差計算器(723)が使用するためのイントラモード結果を選択するようスイッチ(726)を制御し、イントラ予測情報を選択してイントラ予測情報をビットストリームに含めるようエントロピーエンコーダ(725)を制御し、モードがインターモードである場合、汎用コントローラ(721)は、残差計算器(723)が使用するためのインター予測結果を選択するようスイッチ(726)を制御し、インター予測情報を選択してインター予測情報をビットストリームに含めるようエントロピーエンコーダ(725)を制御する。
残差計算器(723)は、受け取られたブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との間の差分(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データに基づいて、残差データをエンコーディングして変換係数を生成するよう動作するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化変換係数を取得するために量子化処理を受ける。様々な実施形態において、ビデオエンコーダ(703)は残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、デコーディングされた残差データを生成するように構成される。デコーディングされた残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用されることが可能である。例えば、インターエンコーダ(730)は、デコーディングされた残差データおよびインター予測情報に基づいてデコーディングされたブロックを生成することができ、イントラエンコーダ(722)は、デコーディングされた残差データおよびイントラ予測情報に基づいてデコーディングされたブロックを生成することができる。デコーディングされたブロックは、デコーディングされたピクチャを生成するために適切に処理され、デコーディングされたピクチャは、メモリ回路(図示せず)にバッファされ、いくつかの例では参照ピクチャとして使用されることが可能である。
エントロピーエンコーダ(725)は、エンコーディングされたブロックを含めるようビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含めるように構成される。一例では、エントロピーエンコーダ(725)は、ビットストリームに、汎用制御データ、選択された予測情報(例えば、イントラ予測情報やインター予測情報)、残差情報、および他の適切な情報を含めるように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングするとき、残差情報は存在しないことに留意されたい。
図8は、本開示の他の実施形態によるビデオデコーダ(810)の図を示している。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受け取り、コーディングされたピクチャをデコーディングして再構築されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示されるように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構築モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャが構成されている構文要素を表す特定のシンボルを再構築するように構成され得る。そのようなシンボルは、例えば、ブロックがコーディングされているモード(例えば、イントラモード、インターモード、双予測モード、マージサブモードまたは他のサブモードのインターモードおよび双予測モードなど)、イントラデコーダ(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つまたは複数のプロセッサを使用して実装され得る。
本開示の態様は、コーディングされたビデオストリームにおける制約フラグを用いた(1つまたは複数の)コーディングツールおよび機能の制御技術を提供する。
本開示の態様によれば、ビットストリームにおけるピクチャサイズは、同じままであり得るか、または、変化し得る。いくつかの関連する例では、ビデオエンコーダおよびデコーダは、コーディングされたビデオシーケンス(CVS)、グループオブピクチャ(GOP)、または同様のマルチピクチャタイムフレームに対して定義され一定のままである所与のピクチャサイズで動作し得る。MPEG-2などの例では、システム設計は、シーンのアクティビティなどの要因に応じて水平解像度(したがって、ピクチャサイズ)を変更することが知られているが、Iピクチャにおいてのみであり、したがってピクチャサイズが定義され、通常はGOPに対して一定のままである。CVS内の異なる解像度を使用するための参照ピクチャの再サンプリングは、例えばITU-T Rec.H.263 Annex Pから知られている。しかしながら、CVS内のピクチャサイズは変化せず、参照ピクチャのみが再サンプリングされ、その結果、(例えば、ダウンサンプリングの場合)ピクチャキャンバスの一部のみが使用される、または(例えば、アップサンプリングの場合)シーンの一部のみがキャプチャされる可能性がある。H.263 Annex Qなどのいくつかの例では、各次元(例えば、上方または下方)で個々のマクロブロックを2倍だけ再サンプリングすることが許容される。ただし、ピクチャサイズは同じままである。マクロブロックのサイズを固定できる場合、例えばH.263では、マクロブロックのサイズをシグナリングする必要がない。
いくつかの関連する例では、予測ピクチャのピクチャサイズを変更することができる。VP9などの例では、参照ピクチャの再サンプリングおよびピクチャ全体の解像度の変更が許容される。いくつかの例(例えば、その全体が本明細書に組み込まれる、Hendryらの「On adaptive resolution change(ARC)for VVC」,Joint Video Team document JVET-M0135-vl,Jan 9-19,2019)では、異なる解像度(例えば、より高い解像度またはより低い解像度)への参照ピクチャ全体の再サンプリングが許容される。異なる候補解像度は、シーケンスパラメータセット(SPS)においてコーディングされることが可能であり、ピクチャパラメータセット(PPS)においてピクチャごとの構文要素によって参照されることが可能である。
本開示の一態様によれば、ソースビデオは、ピクチャを、異なる解像度などの異なる品質を有する1つまたは複数のレイヤを含むビットストリームにエンコーディングすることができるレイヤ化コーディングによって圧縮され得る。ビットストリームは、デコーダ側でどのレイヤ(またはレイヤのセット)を出力できるかを指定する構文要素を有することができる。出力されるレイヤのセットを、出力レイヤセットとして定義することができる。例えば、複数のレイヤおよびスケーラビリティをサポートするビデオコーデックでは、1つまたは複数の出力レイヤセットをビデオパラメータセット(VPS)でシグナリングすることができる。ビットストリーム全体または1つもしくは複数の出力レイヤセットのプロファイル階層レベル(PTL)を指定する構文要素は、VPS、いくつかの例ではデコーダ機能情報(DCI)と呼ばれる場合があるデコーダパラメータセット(DPS)、SPS、PPS、SEIメッセージなどでシグナリングされることができる。PTL情報には、コーディングツールや機能の制約を指定することができる汎用制約情報が存在することができる。様々なコーディングツールおよび機能の制約情報を効率的に表し、シグナリングすることが望ましい。
いくつかの例では、「サブピクチャ」という用語を使用して、例えば、意味的にグループ化され、変更された解像度で独立してコーディングされ得るサンプル、ブロック、マクロブロック、コーディングユニット、または同様のエンティティの矩形配置を指すことができる。1つまたは複数のサブピクチャがピクチャを形成することができる。1つまたは複数のコーディングされたサブピクチャは、コーディングされたピクチャを形成することができる。1つまたは複数のサブピクチャをピクチャに組み立てることができ、1つまたは複数のサブピクチャをピクチャから抽出することができる。いくつかの例では、1つまたは複数のコーディングされたサブピクチャは、サンプルレベルまでコーディングされたピクチャにトランスコーディングすることなく、圧縮された領域に組み立てられ得る。いくつかの例では、1つまたは複数のコーディングされたサブピクチャを、圧縮された領域内のコーディングされたピクチャから抽出することができる。
いくつかの例では、例えば、参照ピクチャの再サンプリングによってCVS内のピクチャまたはサブピクチャの解像度の変更を可能にする機構を、適応解像度変更(ARC)と呼ぶことができる。適応解像度変更を実行するために使用される制御情報を、ARCパラメータと呼ぶことができる。ARCパラメータは、フィルタパラメータ、スケーリング係数、出力および/または参照ピクチャの解像度、様々な制御フラグなどを含むことができる。
いくつかの例では、ARCのエンコーディング/デコーディングはピクチャ単位であり、したがって、制御情報(ARCパラメータ)のセットが、単一の意味的に独立したコーディングされたビデオピクチャをエンコーディング/デコーディングするために使用される。いくつかの例では、ARCのエンコーディング/デコーディングはサブピクチャ単位であるため、ピクチャ内の複数のサブピクチャを独立したARCパラメータでエンコーディング/デコーディングすることができる。様々な技術を使用してARCパラメータをシグナリングすることができることに留意されたい。
図9は、本開示のいくつかの実施形態によるARCパラメータをシグナリングするための技術の例(例えば、オプション)を示している。コーディング効率、複雑さ、およびアーキテクチャは、例によって異なり得る。ビデオコーディング規格または技術は、ARCパラメータをシグナリングするために、例または他の変形例のうちの1つまたは複数を選択し得る。これらの例は、相互に排他的でなくてもよく、用途のニーズ、標準技術、エンコーダの選択などに基づいて交換されてもよい。
本開示の一態様によれば、ARCパラメータは、様々な様式でARCパラメータのクラスとして提供され得る。いくつかの例では、ARCパラメータのクラスは、X次元およびY次元において分離または組み合わされたアップサンプルおよび/またはダウンサンプル係数を含む。一例では、アップサンプルおよび/またはダウンサンプル係数を含むテーブルを指し示すことができる1つまたは複数の短い構文要素をコーディングすることができる。
いくつかの例では、ARCパラメータのクラスは、所与の数のピクチャに対する一定速度のズームインおよび/またはアウトを示す、時間次元を追加したアップサンプルおよび/またはダウンサンプル係数を含む。一例では、時間次元を追加したアップサンプルおよび/またはダウンサンプル係数を含むテーブルを指し示すことができる1つまたは複数の短い構文要素をコーディングすることができる。
いくつかの例では、ARCパラメータのクラスは、入力ピクチャ、出力ピクチャ、参照ピクチャ、コーディングされたピクチャの、組み合わされた、または別々の、サンプル、ブロック、マクロブロック、CU、または任意の他の適切な粒度の単位でのX次元またはY次元の解像度を含む。いくつかの例では、ビデオコーディング(例えば、入力ピクチャのための1つの解像度、参照ピクチャのための別の解像度)で使用される解像度が複数あり、(解像度のうちの1つに対応する)値のセットは、(解像度のうちの別のものに対応する)値の別のセットから推測され得る。値の決定は、例えば、フラグの使用に基づいてゲート開閉され得る。ゲート開閉のためのフラグの使用は、さらなる説明で詳細に説明される。
いくつかの例では、ARCパラメータのクラスは、上述したように適切な粒度で、H.263 Annex Pで使用されるものと同様のワーピング座標を含む。H.263 Annex Pは、ワーピング座標をコーディングする効率的な方法を定義する。他の効率的な方法を考案することができる。例えば、Annex Pのワーピング座標の可変長可逆的なハフマンスタイルのコーディングを、適切な長さのバイナリコーディングに置き換えることができ、バイナリコードワードの長さは、係数を乗算し、最大ピクチャサイズの境界の外側のワーピングを可能にする値だけオフセットされた最大ピクチャサイズから導出されることができる。
いくつかの例では、ARCパラメータのクラスは、アップサンプルおよび/またはダウンサンプルフィルタパラメータを含む。一例では、アップサンプリングおよび/またはダウンサンプリングのための単一のフィルタのみが存在する。別の例では、複数のフィルタを使用することができる。いくつかの例では、フィルタパラメータは、フィルタ設計のより高い柔軟性を可能にするためにシグナリングされてもよい。可能なフィルタ設計のリスト内のインデックスを使用して、フィルタパラメータを選択することができる。フィルタは完全に指定されてもよく(例えば、適切なエントロピーコーディング技術を使用して、フィルタ係数のリストを指定することによって)、フィルタは、上記の機構のいずれかに従ってシグナリングされるアップサンプルまたはダウンサンプル比などによって暗黙的に選択されてもよい。
以下の説明では、コードワードによるARCパラメータのシグナリングを説明するために、アップサンプル係数またはダウンサンプル係数の有限のセット(X次元およびY次元の両方で使用される同じ係数)が使用される。いくつかの例では、コードワードは、例えば、ビデオコーディング仕様(例えば、H.264およびH.265)における特定の構文要素に対してExt-Golomb符号を使用して可変長コーディングされ得る。
図10は、アップサンプルまたはダウンサンプル係数、コードワード、およびExt-Golomb符号のマッピングのためのテーブル(1000)の一例を示している。
ビデオ圧縮技術または規格で利用可能なアップスケールおよびダウンスケール機構の用途および能力に従って、他の同様のマッピングを考案できることに留意されたい。いくつかの例では、テーブル1を、追加の値に適切に拡張することができる。値は、例えばバイナリコーディングを使用することによって、Ext-Golomb符号以外のエントロピーコーディング機構によって表されてもよい。一例では、Ext-Golomb符号以外のエントロピーコーディング機構は、例えばメディアアウェアネットワーク要素(MANE)によって、再サンプリング係数がビデオ処理エンジン(例えば、エンコーダおよびデコーダ)の外部で関心がある場合、特定の利点を有し得る。いくつかの例では、解像度の変更が必要とされない場合(例えば、オリジナル/ターゲット解像度はテーブル1において1である)、短いExt-Golomb符号(例えば、テーブル1に示す1ビットのみ)を選択することができ、これは、例えば、最も一般的な場合にバイナリコードを使用するよりもコーディング効率の利点を有することができる。
本開示の一態様によれば、テーブル1などのマッピングテーブルは構成可能であり得る。例えば、テーブル1のいくつかのエントリおよび対応するセマンティクスは、完全にまたは部分的に構成可能であり得る。いくつかの例では、マッピングテーブルの基本的な概要は、SPSまたはDPSなどの高レベルパラメータセットで伝達される。代替的または追加的に、いくつかの例では、テーブル1と同様の1つまたは複数のテーブルが、ビデオコーディング技術または規格で定義されてもよく、テーブルのうちの1つは、例えばSPSまたはDPSを介して選択されてもよい。
上述のようにコーディングされたアップサンプルまたはダウンサンプル係数などのARC情報は、ビデオコーディング技術または規格の構文に含まれ得る。1つまたは複数のコードワードを使用して、アップサンプルまたはダウンサンプルフィルタなどの他のクラスのARC情報を制御できることに留意されたい。いくつかの例では、フィルタまたは他のデータ構造に比較的大量のデータが必要とされる。
図9を参照すると、H.263 Annex Pなどの例(910)では、4つのワーピング座標の形式のARC情報(912)がピクチャヘッダ(911)、例えばH.263 PLUSPTYPE(913)ヘッダ拡張に含まれる。例(910)は、i)ピクチャヘッダが利用可能であり、ii)ARC情報の頻繁な変更が予想される場合に適用され得る。しかしながら、例(910)に示されているように、H.263スタイルのシグナリングを使用するときのオーバーヘッドは高くなる可能性があり、ピクチャヘッダは過渡的な性質であり得るため、スケーリング係数はピクチャ境界間で適用できない可能性がある。
図9を参照すると、JVCET-M135-v1などの例(920)では、ARC参照情報(925)(例えば、インデックス)はPPS(924)内に配置されることができ、ターゲット解像度(例えば、解像度1~3)を含むテーブル(またはターゲット解像度テーブル)(926)を指し示すことができる。一例では、テーブル(926)はSPS(927)の内部に位置する。テーブル(926)内のターゲット解像度をSPS(927)に配置することは、機能交換中の相互運用性ネゴシエーションポイントとしてSPSを使用することによって正当化され得る。解像度は、適切なPPS(924)内の参照(例えば、ARC参照情報(925))によって、あるピクチャから別のピクチャへ、テーブル(926)内の値(例えば、解像度1~3)の限定されたセットの中で変化することができる。
図9はまた、例(930)、(940)および(950)などの追加の技術を示しており、これらは、ビデオビットストリームにおいてARC情報を伝達するために使用され得る。これらの技術は、個別に使用されてもよく、または同じビデオコーディング技術または規格で適切な組み合わせで使用されることができる。
図9を参照すると、例(930)において、再サンプリング係数(またはズーム係数)などのARC情報(939)は、スライスヘッダ、GOBヘッダ、タイルヘッダ、タイルグループヘッダなどのヘッダ内に存在してもよい。タイルグループヘッダ(938)が、例えば図9に示されている。例(930)によって示されている技術は、単一の可変長ue(v)または数ビットの固定長コードワードなどの少数のビットでARC情報(939)をコーディングできる場合に使用されることができる。
本開示の態様によれば、ヘッダ(例えば、図9のタイルグループヘッダ(938)、スライスヘッダ、またはタイルヘッダ)内にARC情報(939)を直接有することは、ARC情報(939)が、ピクチャ全体ではなく、例えば、対応するタイルグループ(またはスライス、タイル)によって表されるサブピクチャに適用可能であり得るという点で、さらなる利点を有することができる。さらに、一例では、ビデオ圧縮技術または規格が(例えば、タイルグループベースの適応解像度変更とは対照的に)全ピクチャ適応解像度変更のみを想定している場合でも、例(930)は、エラー回復力の観点から例(910)を超える特定の利点を有することができる。
図9を参照すると、例(940)において、ARC情報(942)は、PPS、ヘッダパラメータセット、タイルパラメータセット、適応パラメータセット(APS)などのパラメータセット(941)に存在してもよい。APS(941)は、例えば図9に示されている。いくつかの例では、パラメータセット(941)のスコープは、ピクチャ以下とすることができ、例えば、ピクチャ、タイルグループなどとすることができる。ARC情報(例えば、ARC情報(942))の使用は、関連するパラメータセット(例えば、APS(941))のアクティブ化によって暗黙的に行われ得る。例えば、ビデオコーディング技術または規格がピクチャベースのARCのみを意図する場合、PPSまたは同等物が適切であり得る。
図9を参照すると、例(950)において、ARC参照情報(953)は、上述したように、タイルグループヘッダ(954)または類似のデータ構造(例えば、ピクチャヘッダ、スライスヘッダ、タイルヘッダ、またはGOPヘッダ)に存在してもよい。タイルグループヘッダ(954)は、一例として図9に示されている。ARC参照情報(953)は、単一ピクチャを超えるスコープ、例えばSPS、DPSなどを有するパラメータセット(956)において利用可能なARC情報(955)のサブセットを指すことができる。SPS(956)は、一例として図9に示されている。
図11は、本開示のいくつかの実施形態によるARCパラメータシグナリングのいくつかの例を示している。図11は、ビデオコーディング規格で使用される構文図の例を示している。一例では、構文図の表記は、おおよそC型プログラミングに従う。太字の線は、ビットストリームに存在する構文要素を示すことができ、太字のない線は、制御フローまたは変数の設定を示すことができる。
図11を参照すると、タイルグループヘッダ(1101)は、ピクチャの一部(例えば、矩形部分)に適用可能なヘッダの構文構造を含む。一例では、タイルグループヘッダ(1101)は、条件付きで、可変長の指数ゴロムコーディングされた構文要素dec_pic_size_idx(1102)(太字で示されている)を含むことができる。タイルグループヘッダ(1101)内の構文要素(例えば、dec_pic_size_idx(1102))の存在は、例えばフラグ(例えば、adaptive_pic_resolution_change_flag)(1103)によって表される適応解像度に基づいてゲート開閉され得る。フラグ(例えば、adaptive_pic_resolution_change_flag)(1103)の値は太字では示されておらず、したがって、フラグは、構文図においてフラグが発生する点においてビットストリーム内に存在する。適応解像度がピクチャまたはピクチャの一部に使用されているかどうかを、ビットストリームの内部または外部の高レベル構文構造(例えば、図11のSPS(1110))でシグナリングすることができる。
図11を参照すると、SPS(1110)の抜粋が示されている。SPS(1110)は、フラグ(1111)(例えば、adaptive_pic_resolution_change_flag)である第1の構文要素(1111)を含む。フラグ(1111)が真であるとき、フラグ(1111)は、特定の制御情報を必要とし得る適応解像度の使用を示すことができる。一例では、特定の制御情報は、SPS(1110)およびタイルグループヘッダ(1101)内のif( )文(1112)によって示されるように、フラグ(1111)の値に基づいて条件付きで存在する。
図11の例に示すように、適応解像度が使用されている場合、サンプル単位の出力解像度(または出力ピクチャの解像度)(1113)をコーディングすることができる。一例では、出力解像度(1113)は、幅解像度(例えば、output_pic_width_in_luma_samples)および高さ解像度(例えば、output_pic_height_in_luma_samples)に基づいてコーディングされる。ビデオコーディング技術または規格では、出力解像度(1113)の値に対する特定の制限を定義することができる。例えば、レベル定義は、総出力サンプル数(例えば、output_pic_width_in_luma_samplesとoutput_pic_height_in_luma_samplesの積)を制限することができる。いくつかの例では、ビデオコーディング技術もしくは規格、または外部技術もしくは規格(例えば、システム規格)は、幅解像度および/または高さ解像度(例えば、幅解像度および/または高さ解像度は2の累乗で割り切れる)、高さ解像度に対する幅解像度のアスペクト比(例えば、高さ解像度に対する幅解像度の比は4:3または16:9である)などの番号付け範囲を制限することができる。一例では、ハードウェア実装を容易にするために上記の制限が導入され得る。
特定の用途では、エンコーダは、サイズが出力ピクチャサイズであると暗黙的に仮定するのではなく、特定の参照ピクチャサイズを使用するようにデコーダに指示することができる。例えば、構文要素(例えば、reference_pic_size_present_flag)(1114)は、参照ピクチャ寸法(1115)の条件付き存在をゲート開閉する。参照ピクチャ寸法(1115)は、一例では、幅(例えば、reference_pic_width_in_luma_samples)と高さ(例えば、reference_pic_height_in_luma_samples)の両方を含むことができる。
図11においても、適用可能なデコーディングピクチャの幅と高さのテーブルが示されている。一例では、テーブル内のエントリの数を、テーブル表示(例えば、構文要素num_dec_pic_size_in_luma_samples_minus1)(1116)で表すことができる。「minus1」は、構文要素(1116)の値の解釈を指すことができる。例えば、コーディングされた値が0である場合、1つのテーブルエントリが存在する。コーディングされた値が5である場合、6つのテーブルエントリが存在する。テーブル内の各エントリについて、デコーディングされたピクチャの幅および高さは構文要素(1117)として含まれる。
構文要素(1117)によって表されるテーブルエントリは、タイルグループヘッダ(1101)内の構文要素dec_pic_size_idx(1102)を使用してインデックス付けされることができ、したがって、タイルグループごとに異なるデコーディングされたサイズおよびズーム率を可能にする。
本開示の態様によれば、特定のビデオコーディング技術または規格(例えば、VP9)は、時間スケーラビリティと併せて、ある形式の参照ピクチャ再サンプリングを実施することによって、空間スケーラビリティを可能にすることができる。一実施形態では、参照ピクチャは、ARCスタイル技術を使用してより高い解像度にアップサンプリングされ、空間強化レイヤのベースを形成する。アップサンプリングされたピクチャは、例えば詳細を追加するために、高解像度で通常の予測機構(例えば、参照ピクチャからのインター予測のための動き補償予測)を使用して改良され得る。
いくつかの例では、ネットワーク抽象化レイヤ(NAL)ユニットヘッダ内の値、例えばtemporal IDフィールドは、時間レイヤ情報および空間レイヤ情報も示すために使用される。時間レイヤ情報と空間レイヤ情報の両方を示すためにNALユニットヘッダ内の値を使用することにより、修正なしにスケーラブル環境のための既存の選択された転送ユニット(SFU)の使用を可能にすることができる。例えば、既存のSFUを、NALユニットヘッダのtemporal ID値に基づいて、時間レイヤ選択転送のために作成および最適化することができる。次いで、いくつかの例では、既存のSFUを、修正なしで空間スケーラビリティ(例えば、空間レイヤの選択)に使用することができる。いくつかの例では、コーディングされたピクチャサイズと、NALユニットヘッダ内のtemporal IDフィールドによって示される時間レイヤとの間にマッピングを提供することができる。
本開示の態様によれば、コーディングされたビットストリームのいくつかの特徴は、プロファイル、階層、レベル、および汎用制約情報を含むプロファイル、階層、およびレベルの組み合わせ(PTL)情報を使用して指定され得る。いくつかの例では、プロファイルは、色再現、解像度、追加のビデオ圧縮などのビットストリームの特徴のサブセットを定義する。ビデオコーデックは、ベースラインプロファイル(例えば、圧縮比が低い単純なプロファイル)、高プロファイル(圧縮比が高い複雑なプロファイル)、メインプロファイル(例えば、ベースラインプロファイルと高プロファイルとの間の中程度の圧縮比を有するプロファイルをデフォルトプロファイル設定とすることができる)などの様々なプロファイルを定義することができる。
さらに、階層およびレベルを使用して、最大ビットレート、最大ルマサンプルレート、最大ルマピクチャサイズ、最小圧縮比、許容されるスライスの最大数、許容されるタイルの最大数などに関してビットストリームを定義する特定の制約を指定することができる。下位階層は上位階層よりも制約され、下位レベルは上位レベルよりも制約される。一例では、規格は、MainおよびHighの2つの階層を定義することができる。Main階層は、High階層よりも下位の階層である。階層は、最大ビットレートの点で異なる用途に対処するために作成される。一例では、Main階層はほとんどの用途のために設計されており、High階層は非常に要求の厳しい用途のために設計されている。規格は複数のレベルを定義することができる。レベルは、ビットストリームの制約のセットである。一例では、レベル4を下回るレベルの場合、Main階層のみが許容される。いくつかの例では、所与の階層/レベルに準拠するデコーダは、その階層/レベルおよびすべての下位の階層/レベルについてエンコーディングされたすべてのビットストリームをデコーディングできる必要がある。
汎用制約情報は、ビデオソースタイプ、コーディングツール、および機能に関する制約情報を含み得る。例えば、制約フラグは、コーディングされたビデオビットストリーム内に、インターコーディングツール、イントラコーディングツール、DBF、エントロピーコーディング、変換、分割(例えば、タイル、スライス)、バッファ管理、ランダムアクセス(例えば、IDR)、パラメータセット(例えば、SPS、PPS)などが存在するか、または使用されるかを示すことができる。制約情報を、パラメータセット(例えば、SPS、VPS、またはDCI)でシグナリングすることができる。制約フラグを、高レベルの構文構造(例えば、SPS、VPS、DCI)でシグナリングすることができる。
本開示のいくつかの態様によれば、PTL情報を、スコープ(例えば、ビットストリーム内のコーディングされたビデオデータの一部)と関連付けることができる。いくつかの例では、PTL情報を、例えば、ビットストリーム全体、ビットストリームのCVS、ビットストリームの各出力レイヤセット(OLS)などに対して指定することができ、VPS、DPS、DCI、SPS、PPS、APS、GOP、シーケンス、ヘッダ、SEIメッセージなどの高レベル構文(HLS)構造でシグナリングすることができる。
いくつかの例では、高レベル構文(HLS)はブロックレベルに関して定義される。ブロックレベルのコーディングツールを使用して、ピクチャ内のピクセルまたはサンプルをデコーディングしてピクチャを再構築することができる。ブロックレベルのコーディングツールは、インター予測のためのコーディングツール(またはインターコーディングツール)、イントラ予測のためのコーディングツール(またはイントラコーディングツール)、適応ループフィルタ(ALF)、デブロッキングフィルタ(DBF)、エントロピーコーディング、変換など、コーディングブロックの再構築に使用される任意の適切なコーディングツールを含むことができる。
高レベル構文(HLS)は、機能、システムインターフェース、ツールのピクチャレベルの制御およびバッファ制御などに関する情報を指定することができる。例えば、HLSは、パーティション(例えば、タイル、スライス、サブピクチャ)、バッファ管理、ランダムアクセス(例えば、IDR、クリーンランダムアクセス(CRA))、パラメータセット(例えば、VPS、SPS、PPS、APS)、参照ピクチャ再サンプリング(RPR)、スケーラビリティなどを指定することができる。高レベル構文は、ブロックレベルより上にすることができる。
制御情報は、SPSレベルツール制御情報、PPSレベルツール制御情報、シーケンスレベル制御情報、ビットストリームレベル制御情報などの適切なレベルを有することができる。いくつかの例では、PTL情報は制御情報の一部であり、HLS構造の中の制約フラグとしてシグナリングされることができ、HLS構造に対応するスコープ内のツールの制御または制約を示すことができる。例えば、PTL情報のための制約フラグは、シーケンスレベル制御情報およびビットストリームレベル制御情報のうちの1つにおいて提供され得る。一例では、特定のツールがHLS構造の中の制約フラグによって無効にされる場合、例えばHLSに対応するスコープ内のブロックをコーディングするためにツールが使用されない。
図12および図13は、本開示のいくつかの実施形態による、PTL情報の例を示している。図12は、PTL構文要素のセットの構文構造例(1200)を示し、図13は、汎用制約情報の構文構造例(1300)を示している。
図12において、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を含むことができる。
図13において、汎用制約情報は、複数の制約フラグを含むことができる。一例では、1に等しい制約フラグ(例えば、intra_only_constraint_flag)(1305)は、パラメータsh_slice_typeがIである(すなわち、スライスはイントラスライスである)べきであることを示すことができる。パラメータsh_slice_typeは、タイプI、P、およびBの間のスライスのコーディングタイプを指定するスライスヘッダ内のパラメータである。0に等しい制約フラグ(例えば、intra_only_constraint_flag)(1305)は、他の情報(例えば、profile_idc)が非イントラスライスを可能にすることができるPTL情報のスコープ内のすべてのコーディングされたピクチャに対して制約(例えば、sh_slice_typeはIであるべきである)を課さない。別の例では、1に等しい制約フラグ(例えば、no_alf_constraint_flag)(1306)は、PTL情報のスコープ内のすべてのCVSについてsps_alf_enabled_flagが0に等しいことを示すことができ、したがって、例えばprofile_idcに基づいて適応ループフィルタリングが許可されても、適応ループフィルタリングは使用されない。0に等しい制約フラグ(例えば、no_alf_constraint_flag)(1306)は、上記の制約を課さない。
別の例では、図13に示すように、汎用制約情報の中で制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1301)をシグナリングすることができる。1に等しい制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1301)は、その制約フラグ(1301)を含むPTL情報のスコープ内で、可逆コーディングに関するコーディングツールを使用できないことを示すことができる。0に等しい制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1301)は、上記の制約を課さない。
別の例では、図13に示すように、汎用制約情報の中で制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1302)をシグナリングすることができる。1に等しい制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1302)は、その制約フラグ(1302)を含むPTL情報のスコープ内で、非可逆コーディングに関するコーディングツールを使用できないことを示すことができる。0に等しい制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1302)は、上記の制約を課さない。
一実施形態では、制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1302)が1に等しいとき、制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1301)は1に等しくないことがある。あるいは、制約フラグ(例えば、no_lossless_coding_tool_constraint_flag)(1301)が1に等しいとき、制約フラグ(例えば、no_lossy_coding_tool_constraint_flag)(1302)は1に等しくないことがある。
汎用制約情報の中の複数の制約フラグを、一定の順序でソートすることができる。順序を、例えば、PTLのスコープで使用されていないそれぞれの機構および/またはツールの可能性に基づいて設定できる。この順序を、優先順位と呼ぶことができる。汎用制約情報構文構造において、高い優先度から低い優先度までの順序を提示することができ、高い優先度は、ツール(または機構)の不使用の可能性が高いことを示し、低い優先度は、ツール(または機構)の不使用の可能性が低いことを示す。順序に影響を与える追加の要因は、特定のユースケース(例えば、サブピクチャ、スケーラビリティ、および/またはインタレースのサポートのためのツール)にのみ使用される可能性が高いツール、エンコーダ/デコーダ/実装の複雑さに対するツールの影響などを含むことができる。
図14Aおよび図14Bは、本開示のいくつかの実施形態による、(PTLブラケットとも呼ばれる)PTL構文構造の構文構造例(1410)および(汎用制約情報ブラケットとも呼ばれる)汎用制約情報構文構造の構文例(1420)を含むPTL情報の例を示している。いくつかの例では、制約フラグの数(例えば、num_available_constraint_flags)を示す構文要素をシグナリングすることができる。一例では、制約フラグの数を示す構文要素は、汎用制約情報ブラケットの構文例(1420)の外側にあり得る図14Aに示すような構文例(1410)の(1401)で示すように、PTL構文構造でシグナリングされることができる。あるいは、制約フラグの数を示す構文要素は、構文例(1420)の先頭などの汎用制約情報ブラケットの先頭でシグナリングされることができる。構文要素(例えば、num_available_constraint_flags)が存在し、構文要素(例えば、num_available_constraint_flags)の値がNに等しいとき、最初の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とすることができる。
図15Aおよび図15Bは、本開示の一実施形態による汎用制約情報構文構造(1500)の例を示している。汎用制約情報構文構造(1500)は、汎用制約情報を表すフラグを含む。具体的には、汎用制約情報構文構造(1500)は、図15Aのゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1501)、ゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1502)、ゲートフラグ(例えば、scalability_constraint_group_flag)(1503)、ゲートフラグ(例えば、partitioning_constraint_group_flag)(1504)、ゲートフラグ(例えば、intra_coding_tool_constraint_group_flag)(1505)、ゲートフラグ(例えば、inter_coding_tool_constraint_group_flag)(1506)、ゲートフラグ(例えば、transfom_contraint_group_flag)(1507)、ゲートフラグ(例えば、inloop_filtering_constraint_group_flag)(1508)などの1つまたは複数のゲートフラグを含む。図15Aに示すように、1つまたは複数のゲートフラグ(例えば、ゲートフラグ(1501)~(1508))は、汎用制約情報構文構造(1500)の先頭に存在することができる。
ゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1501)は、制約情報グループ(1510)に関連付けられており、制約情報グループ(1510)内の制約フラグ(1511)~(1514)に関連付けられている。1に等しいゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1501)は、制約情報グループ(1510)内に制約フラグ(1511)~(1514)が存在し得ることを指定することができる。
制約情報グループ(1510)(または制約フラグ(1511)~(1514))は、入力ソースおよびフレームパッキング(例えば、パックドフレームまたはプロジェクテッドフレーム)に関連することができる。図15Aを参照すると、制約フラグ(1511)~(1514)は、general_non_packed_constraint_flag(1511)、general_frame_only_constraint_flag(1512)、general_non_projected_constraint_flag(1513)、およびgeneral_one_picture_only_constraint_flag(1514)に対応する。そうでなければ、0に等しいゲートフラグ(例えば、general_frame_structure_constraint_group_flag)(1501)は、制約情報グループ(1510)内にある制約フラグ(1511)~(1514)が汎用制約情報構文構造(1500)内に存在しない可能性があることを指定することができる。
さらに、いくつかの例では、1に等しいゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1502)は、図15Bに示すように、制約情報グループ(1520)内にある高レベル機能(例えば、参照ピクチャ再サンプリング)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、0に等しいゲートフラグ(例えば、high_level_functionality_constraint_group_flag)(1502)は、制約情報グループ(1520)内にある制約フラグが汎用制約情報構文構造(1500)内に存在しない可能性があることを指定することができる。
再び図15Aを参照すると、1に等しいゲートフラグ(例えば、scalability_constraint_group_flag)(1503)は、スケーラビリティ(例えば、レイヤ間予測)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、スケーラビリティに関する制約フラグが汎用制約情報構文構造(1500)に存在しなくてもよい。
1に等しいゲートフラグ(例えば、partitioning_constraint_group_flag)(1504)は、高レベル分割(例えば、サブ画像またはタイル)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、高レベル分割に関する制約フラグが汎用制約情報構文構造(1500)に存在しなくてもよい。
1に等しいゲートフラグ(例えば、intra_coding_tool_constraint_group_flag)(1505)は、イントラコーディング(例えば、イントラ予測)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、イントラコーディングに関する制約フラグが汎用制約情報構文構造(1500)に存在しなくてもよい。
1に等しいゲートフラグ(例えば、inter_coding_tool_constraint_group_flag)(1506)は、インターコーディング(例えば、インターピクチャ予測のための動き補償)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、インターコーディングに関する制約フラグが汎用制約情報構文構造(1500)に存在しなくてもよい。
1に等しいゲートフラグ(例えば、transfom_contraint_group_flag)(1507)は、変換コーディング(例えば、複数の変換行列)に関する制約フラグが存在し得ることを指定することができる。そうでなければ、変換コーディングに関する制約フラグが汎用制約情報構文構造(1500)に存在しなくてもよい。
一実施形態では、すべてのゲートフラグ(例えば、図15Aのゲートフラグ(1501)~(1508))が0に等しいとき、汎用制約情報構文構造(例えば、汎用制約情報構文構造(1500))には制約フラグは存在しない。
本開示の態様によれば、ゲートフラグ(例えば、ゲートフラグ(1501)~(1508))、関連する制約フラグ(例えば、制約フラグ(1511)~(1512)および制約情報グループ(1520)内の制約フラグ)、追加の制御情報などを含む制御情報がバイトアラインされ得るように構文を設計することができ、例えば、バイト整列を維持するために、フラグの数が8で割り切れる。一例では、制約情報(例えば、汎用制約情報構文構造(1500))内のゲートフラグおよび制約フラグの数は8で割り切れる。バイト整列機構を使用して、制御情報のバイト整列を達成することができる。図15Bを参照すると、構文(例えば、whileループ)(1530)をバイト整列に使用することができる。
いくつかの実施形態では、制約情報の中のゲートフラグに関連付けられたそれぞれの制約情報グループ内の制約フラグの提示を支援するために、オフセット(例えば、構文要素constraint_info_offset[ ]を使用する)などのオフセット情報 および長さ(例えば、構文要素constraint_info_length[ ]を使用する)などの長さ情報が制約情報に存在する(例えば、汎用制約情報構文構造の最初)。一実施形態では、少なくとも1つの制約情報グループのうちの1つまたは複数が、コーディングされたビデオビットストリームに存在する。制約情報グループについては、その制約情報グループについての制約情報にオフセットおよび長さが存在することができる。オフセットは、制約情報グループ内の第1の制約フラグに対するオフセットを示すことができ、長さは、制約情報グループ内の制約フラグの数を示すことができる。いくつかの例では、制約情報グループの数を、例えば、構文要素num_constraint_info_setによって明示的に示すことができる。num_constaint_info_setの値は、0以上の整数とすることができる。num_constraint_info_setの値が0であるとき、constraint_info_offset[ ]、constraint_info_length[ ]、および制約フラグは汎用制約情報構文構造に存在しない。
一実施形態では、制約情報オフセット(例えば、構文要素constraint_info_offset[i])および制約情報長(例えば、構文要素constraint_info_length[i])は、制約情報(例えば、汎用制約情報構文構造)内の制約情報グループi(iは正の整数である)についての制約フラグの提示を支援することができる。一例では、制約情報オフセット(例えば、構文要素constraint_info_offset[i])の値が5であり、制約情報長(例えば、構文要素constraint_info_length[i])の値が3であるとき、第5、第6、第7の制約フラグが、制約情報グループiに関連付けられて、制約情報(例えば、汎用制約情報構文構造)に存在する。
一例では、ランレングスコーディングを使用して、所定の順序(または所与の順序)で指定される制約フラグをコーディングすることができる。
一実施形態では、制約フラグが所定の順序(または所与の順序)で指定される場合にランコーディングを使用することができる。制約フラグを直接コーディングする代わりに、「スキップ」値の適切にコーディングされたリストは、0に等しい制約フラグを示すことができ、以下の制約フラグは1に等しいと暗示される。上記のランコーディングは、(i)制約フラグの数が多く、(ii)制約フラグのわずかな割合が1に等しい場合に特に効率的であり得る。
一実施形態では、少なくとも1つの制約情報グループのうちの1つまたは複数が、コーディングされたビデオビットストリームに存在する。少なくとも1つの制約情報グループのうちの1つまたは複数における複数の制約フラグは、所定の順序に従ってシグナリングされる。これにより、複数の制約フラグをランコーディング(例えば、ランエンコーディングまたはランデコーディング)することができる。さらに、コーディングブロックのサブセットの予測情報を、複数の制約フラグに基づいて決定することができる。
一実施形態では、ゲートフラグの制約情報グループ内の少なくとも1つの制約フラグは、所定の順序に従ってシグナリングされる複数の制約フラグを含む。これにより、複数の制約フラグをランコーディング(例えば、ランエンコーディングまたはランデコーディング)することができる。
一実施形態では、制約フラグの完全なリストを、ビデオコーディング規格(例えば、VVC仕様)、外部テーブルなどで指定することができる。一例では、制約フラグのうちの利用可能な制約フラグのみが、例えば、利用可能な制約フラグの数(例えば、num_available_constraint_flags)、ゲートフラグ(または制約グループ存在フラグ)、制約情報オフセット情報および制約情報長情報などのうちの1つまたは複数によって示され、コーディングされたビデオストリーム内に存在する。
一例では、制約フラグの完全なリストが指定され、エンコーダおよびデコーダで利用可能である。制約フラグの完全なリストを、デコーダに記憶することができる。制約フラグの完全なリストは、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(1401))の数の範囲を制限することができる。例えば、メインプロファイル(例えば、ここでMaxNumConstraintFlags=64である)内の制約フラグ(例えば、num_available_constraint_flags(1401))の数の値は0から64の範囲内とすることができ、一方、高度プロファイル(例えば、ここでMaxNumConstraintFlags=128である)内の制約フラグ(例えば、num_available_constraint_flags(1401))の数の値は0から128の範囲内とすることができる。
一実施形態では、制約フラグ(例えば、num_available_constraint_flags)の数の値は、general_profile_idcもしくはgeneral_sub_profile_idc、またはコーデックバージョン情報などのプロファイル情報によって事前定義された値に等しいと推測されることができ、その結果、num_available_constraint_flagsの値は、明示的にシグナリングすることなく決定されることができる。
いくつかの実施形態では、予約バイト情報は、汎用制約情報構文構造に存在することができる。例えば、図13に示すように、フラグgci_num_reserved_bytes(1303)およびgci_reserved_bytes[ ](1304)は、汎用制約情報構文構造を拡張するための汎用制約情報構文構造に存在することができる。フラグ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_field_seq_flagを使用してSPSでシグナリングすることができる。一実施形態では、フラグsps_field_seq_flagは、SPSに存在してもよい。1に等しいフラグsps_field_seq_flagは、CLVSがフィールドを表すピクチャを搬送することを示すことができる。0に等しいフラグsps_field_seq_flagは、CLVSがフレームを表すピクチャを搬送することを示すことができる。
図13の汎用制約情報構文構造では、フラグgeneral_frame_only_constraint_flagが存在してもよい。1に等しいフラグgeneral_frame_only_constraint_flagは、出力レイヤセット(例えば、OlsInScope)のスコープがフレームを表すピクチャを搬送することを指定することができる。0に等しいフラグgeneral_frame_only_constraint_flagは、出力レイヤセット(例えば、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を有していないことを指定することができる。0に等しいフラグpps_mixed_nalu_types_in_pic_flagは、PPSを参照する各ピクチャが1つまたは複数のVCL NALユニットを有し、PPSを参照する各ピクチャのVCL NALユニットが同じ値のnal_unit_typeを有することを指定することができる。図13の汎用制約情報構文構造では、フラグno_mixed_nalu_types_in_pic_constraint_flagが存在してもよい。1に等しいフラグno_mixed_nalu_types_in_pic_constraint_flagは、pps_mixed_nalu_types_in_pic_flagの値が0に等しいことを指定することができる。フラグno_mixed_nalu_types_in_pic_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグgeneral_one_picture_only_constraint_flagは、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいgeneral_one_picture_only_constraint_flagは、ビットストリーム内にコーディングされたピクチャが1つしかないことを指定することができる。フラグgeneral_one_picture_only_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグsingle_layer_constraint_flagは、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいフラグsingle_layer_constraint_flagは、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は、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいフラグall_layers_independent_constraint_flagは、フラグ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は、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいフラグno_res_change_in_clvs_constraint_flagは、フラグ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は、図13の汎用制約情報構文構造に存在してもよい。1に等しいフラグno_mixed_nalu_types_in_pic_constraint_flagは、フラグ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は、図13の汎用制約情報構文構造に存在してもよい。1に等しいフラグno_trail_constraint_flagは、TRAIL_NUTと等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる(OlsInScopeは、DPSを参照するビットストリーム全体のすべてのレイヤを含む出力レイヤセットである)。フラグno_trail_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_trail_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_stsa_constraint_flagは、図13の汎用制約情報構文構造に存在してもよい。1に等しいフラグno_stsa_constraint_flagは、STSA_NUTと等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_stsa_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_stsa_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_trail_constraint_flagは、図13の汎用制約情報構文構造に存在してもよい。1に等しいフラグno_trail_constraint_flagは、TRAIL_NUTと等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_trail_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_trail_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_stsa_constraint_flagは、図13の汎用制約情報構文構造に存在してもよい。1に等しいフラグno_stsa_constraint_flagは、STSA_NUTと等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_stsa_constraint_flagが0に等しい場合、このような制約を課さない。フラグgeneral_one_picture_only_constraint_flagが1に等しいとき、フラグno_stsa_constraint_flagは1に等しくてもよい。
一実施形態では、フラグno_idr_constraint_flagは、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいno_idr_constraint_flagは、IDR_W_RADLまたはIDR_N_LPに等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_idr_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグno_cra_constraint_flagは、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいフラグno_cra_constraint_flagは、CRA_NUTと等しいnuh_unit_typeを有するNALユニットがOlsInScopeに存在しない可能性があることを指定することができる。フラグno_cra_constraint_flagが0に等しい場合、このような制約を課さない。
一実施形態では、フラグno_rasl_constraint_flagは、図13の汎用制約情報構文構造に存在してもよい(フラグno_rasl_constraint_flagは示されていない)。1に等しいフラグno_rasl_constraint_flagは、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は、図13に示すように、汎用制約情報構文構造に存在してもよい。1に等しいフラグno_radl_constraint_flagは、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に等しくてもよい。
本開示のいくつかの態様は、拡張精度を有するレンジ拡張などのレンジ拡張のための制約フラグシグナリングのための技術を提供する。
本開示の一態様によれば、特定のクロマフォーマットおよび特定のビット深度(サンプルあたりのビット数)を有する特定の用途のために、いくつかの規格は、元々、開発されていることがある。例えば、HEVCは、元々、サンプルあたり8~10ビットで4:2:0のクロマフォーマットを有する用途を対象としている。特定のクロマフォーマットおよび特定のビット深度以外の他のフォーマットおよびビット深度に規格を適用可能にするために、他のクロマフォーマットおよび/またはより高いビット深度を使用する用途をサポートするためにレンジ拡張が開発される。
特徴セットを特定の用途グループに必要なものに制限するために、ビデオコーディング規格はプロファイルを定義し、プロファイルは、これらの特徴を使用するエンコーダとの相互運用性のためにサポートされる定義されたデコーダ特徴セットを含むことができる。例えば、プロファイルは、適合するビットストリームを生成する際に使用することができるコーディングツールまたはアルゴリズムのセットを定義することができる。プロファイルに加えて、いくつかの規格(例えば、VVC、HEVCなど)はレベルおよび階層も定義する。レベルは、デコーダの処理負荷およびメモリ能力に対応し得る空間解像度、ピクセルレート、ビットレート値および変動に関する制限をビットストリームに課す。レベル制限は、最大サンプルレート、最大ピクチャサイズ、最大ビットレート、最小圧縮比、コーディングされたピクチャバッファの容量などに関して表されることが可能である。レベルのより高い値は、より高い複雑さの制限に対応することができる。階層は、各レベルのビットレート値および変動制限を修正する。例えば、Main階層はほとんどの用途を対象としているが、High階層は、ビデオ配信用途よりも著しく高いビットレート値を有するなど、より要求の厳しいビデオ貢献用途に対処するように設計されている。プロファイル、階層、およびレベルの各々は、実装およびデコーディングの複雑さに影響を及ぼし、3つの組み合わせは、ビットストリームおよびデコーダの相互運用点を指定する。
いくつかの例では、特定の階層およびレベルに準拠するデコーダは、同じ階層またはそのレベルの下位階層またはその下位の任意のレベルに準拠するすべてのビットストリームをデコーディングできる必要があり、特定のプロファイルに準拠するデコーダは、そのプロファイル内のすべての特徴をサポートすることができる。いくつかの例では、エンコーダは、プロファイルでサポートされている特徴の特定のセットを利用する必要はないが、適合するビットストリーム、すなわち、適合するデコーダによるデコーディングを可能にする指定された制約に従うビットストリームを生成する必要がある。
PTL情報に加えて、PTL構文構造はまた、ビットストリームの特定の制約特性を示す制約フラグおよび非フラグ構文要素のリストを含む汎用制約情報(GCI)構文構造を含み得る。
一例では、HEVCは、Mainプロファイル、Main 10プロファイル、Main Still Pictureプロファイルと呼ばれる3つのプロファイルを元々含む。3つのプロファイルには、4:2:0のクロマサンプリングのみをサポートするなど、いくつかの制限がある。MainおよびMain Still Pictureプロファイルでは、サンプルあたり8ビットのビデオ精度のみがサポートされ、Main 10プロファイルはサンプルあたり最大10ビットをサポートする。Main Still Pictureプロファイルにおいて、ビットストリーム全体には、1つのコーディングされたピクチャのみが含まれる。
いくつかの例では、レンジ拡張を有するHEVCは、追加のプロファイルをサポートすることができる。一例では、以下のプロファイルがレンジ拡張プロファイルと総称される:Monochromeプロファイル、Monochrome 10プロファイル、Monochrome 12プロファイル、Monochrome 16プロファイル、Main 12プロファイル、Main 4:2:2 10プロファイル、Main 4:2:2 12プロファイル、Main 4:4:4プロファイル、Main 4:4:4 10プロファイル、Main 4:4:4 12プロファイル、Main Intraプロファイル、Main 10 Intraプロファイル、Main 12 Intraプロファイル、Main 4:2:2 10 Intraプロファイル、Main 4:2:2 12 Intraプロファイル、Main 4:4:4 Intraプロファイル、Main 4:4:4 10 Intraプロファイル、Main 4:4:4 12 Intraプロファイル、Main 4:4:4 16 Intraプロファイル、Main 4:4:4 Still Pictureプロファイル、Main 4:4:4 16 Still Pictureプロファイル。
レンジ拡張プロファイルのいくつかは、より高いビット深度をサポートすることができ、高ビット深度を有する動作レンジ拡張のためのプロファイルと呼ぶことができる。いくつかの例では、高ビット深度を有する動作レンジ拡張のプロファイルは、Main 12プロファイル、Main 12 4:4:4プロファイル、Main 16 4:4:4プロファイル、Main 12 Intraプロファイル、Main 12 4:4:4 Intraプロファイル、Main 16 4:4:4 Intraプロファイル、Main 12 Still Pictureプロファイル、Main 12 4:4:4 Still Pictureプロファイル、Main 16 4:4:4 Still Pictureプロファイルなど、サンプル当たり10ビットを超えるビットをサポートするプロファイルを含む。
具体的には、Main 12プロファイルは、イントラ予測モードとインター予測モードの両方の4:0:0および4:2:0のクロマサンプリングをサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。いくつかの例では、Main 12プロファイルに準拠するデコーダは、Monochrome、Monochrome 12、Main、Main 10、およびMain 12の各プロファイルで作られたビットストリームをデコーディングすることができる。
Main 12 4:4:4プロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリング、ならびにイントラ予測モードとインター予測モードの両方をサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。いくつかの例では、Main 12 4:4:4プロファイルに準拠するデコーダは、Monochrome、Main、Main 10、Main 12、Main 10 4:2:2、Main 12 4:2:2、Main 4:4:4、Main 10 4:4:4、Main 12 4:4:4、およびMonochrome 12の各プロファイルで作られたビットストリームをデコーディングすることができる。
Main 16 4:4:4プロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリング、ならびにイントラ予測モードとインター予測モードの両方をサポートして、サンプルあたり8ビット~16ビットのビット深度を可能にする。
Main 12 Intraプロファイルは、4:0:0および4:2:0のクロマサンプリング、およびイントラ予測モードをサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。
Main 12 4:4:4 Intraプロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリング、およびイントラ予測モードをサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。
Main 16 4:4:4 Intraプロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリング、およびイントラ予測モードをサポートして、サンプルあたり8ビット~16ビットのビット深度を可能にする。
Main 12 Still Pictureプロファイルは、4:0:0および4:2:0のクロマサンプリングをサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。Main 12 Still Pictureプロファイルにおいて、ビットストリーム全体には、1つのコーディングされたピクチャのみが含まれる。
Main 12 4:4:4 Still Pictureプロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリングをサポートして、サンプルあたり8ビット~12ビットのビット深度を可能にする。Main 12 4:4:4 Still Pictureプロファイルにおいて、ビットストリーム全体には、1つのコーディングされたピクチャのみが含まれる。
Main 16 4:4:4 Still Pictureプロファイルは、4:0:0、4:2:0、4:2:2、および4:4:4のクロマサンプリングをサポートして、サンプルあたり8ビット~16ビットのビット深度を可能にする。Main 16 4:4:4 Still Pictureプロファイルにおいて、ビットストリーム全体には、1つのコーディングされたピクチャのみが含まれる。
本開示のいくつかの態様によれば、コーディングツール制御は、ビットストリームのスコープ、コーディングレイヤビデオシーケンス(CLVS)のスコープ、ピクチャ、ピクチャのスライスなどの様々なスコープ(例えば、コーディングツール制御のための構文要素のインスタンスの持続性を有してコーディングされているコーディングされたビデオデータの一部)で実行され得る。いくつかの例では、コーディングツール制御を、一般にビットストリームの制約情報を含む汎用制約情報(GCI)構文構造に提供することができる。いくつかの例では、コーディングツール制御を、CLVSに関連付けられたシーケンスパラメータセット(SPS)に提供することができ、SPSは、一般に、CLVSの情報を含む。いくつかの例では、コーディングツール制御を、スライスのスライスヘッダに提供することができ、スライスヘッダは一般にスライスの情報を含む。
本開示の一態様によれば、レンジ拡張におけるコーディングツールの制御情報を様々なスコープで提供することができる。いくつかの例では、より大きなスコープの構文要素を使用すると、コーディング効率を向上させることができる。例えば、0より大きいGCI構文要素値は、ビットストリームが特定の方法で制約されることを示し、典型的には、特定のコーディングツールがビットストリームで使用されないことを示す。さらに、値0に等しいGCI構文要素値は、関連するコーディングツールが(その使用が示されたプロファイルでサポートされている場合)ビットストリーム内で使用されることを許可される(ただし、必要ではない)ように、関連する制約が適用されない可能性があることをシグナリングする。
本開示の別の態様によれば、コーディングツールがビットストリーム内のビデオデータのコーディングに使用されず、例えば、PTL情報および/または汎用制約情報においてコーディングツールの使用がないことを示すとき、コーディングツールのサポートを受けていないビデオデコーダは、PTL情報および/または汎用制約情報におけるシグナリングに基づいてビデオデコーダがビットストリームをデコーディングすることができると決定し得、ビデオデコーダの機能を拡張することができる。
いくつかの実施形態では、エンコーダは、レンジ拡張を有するビデオ規格に準拠するビットストリームを生成することができるが、レンジ拡張でサポートされる1つまたは複数の特徴を利用しない。いくつかの例では、レンジ拡張における1つまたは複数の特徴を使用しないという知識を用いて、ビデオ規格に準拠しているがレンジ拡張における1つまたは複数の特徴をサポートしていないデコーダは、デコーダがビットストリームをデコーディングすることができると決定してもよく、ビットストリームを拒否する代わりにデコーディングのためにビットストリームを受け入れてもよい。
図16は、本開示のいくつかの実施形態による汎用制約情報の構文構造(1600)を示している。いくつかの例では、構文構造(1600)は、デコーダに設定された出力レイヤを含むビットストリームなどのビットストリームに適用される制約を含む。図16の例では、構文構造(1600)内のgci_num_additional_bitsによって示される構文要素は、汎用制約情報構文構造(1600)内の整列0ビット構文要素(存在する場合)以外のいくつかの追加汎用制約情報(GCI)ビットを指定するために使用される。いくつかの規格では、gci_num_additional_bitsの値は0または1に等しい必要がある。いくつかの規格では、デコーダは、1より大きいgci_num_additional_bitsの値が構文構造に現れることを可能にし得る。
図16の例では、構文構造(1600)は、general_no_extended_precision_constraint_flag、general_no_ts_residual_coding_rice_present_in_sh_constraint_flag、general_no_rrc_rice_extension_constraint_flag、general_no_persistent_rice_adaptation_constraint_flag、およびgeneral_no_reverse_last_sig_coeff_constraint_flagで示される5つの追加GCIビット(構文要素)(1601)~(1605)を含む。5つの追加のGCIビット(1601)~(1605)は、いくつかの例では出力レイヤセットのビットストリームのスコープ内のコーディングツールのコーディング制御情報をそれぞれ提供する。
図17は、本開示のいくつかの実施形態によるシーケンスパラメータセット(SPS)レンジ拡張の構文構造(1700)例を示している。構文構造(1700)は、CLVS用のレンジ拡張のコーディングツールの制御を提供するために、CLVS用のSPSに追加されることができる。構文構造(1700)は、sps_extended_precision_flag、sps_ts_residual_coding_rice_present_in_sh_flag、sps_rrc_rice_extension_flag、sps_persistent_rice_adaptation_enabled_flag、およびsps_reverse_last_sig_coeff_enabled_flagで示される5つの構文要素(1701)~(1705)を含む。5つの構文要素(1701)~(1705)は、いくつかの例では、CLVSのスコープ内のコーディングツールのコーディング制御情報を提供する。
具体的には、一実施形態では、GCIビット(1601)および構文要素(1701)は、異なるスコープで、スケーリングおよび変換プロセスにおける変換係数、ならびにabs_remainder[ ]およびdec_abs_level[ ]などのいくつかの構文要素の2値化のための拡張ダイナミックレンジのコーディングツールの制御など、拡張精度を使用する制御を提供するために使用される。
1に等しい構文要素(1701)は、拡張ダイナミックレンジがスケーリングおよび変換プロセスにおける変換係数、ならびにabs_remainder[ ]およびdec_abs_level[ ]などのいくつかの構文要素の2値化に使用されることを指定する。構文要素abs_remainder[scanning position n]は、スキャン位置nにおいてGolomb-Rice符号でコーディングされた変換係数レベルの残りの絶対値である。abs_remainder[ ]が存在しない場合、0に等しいと推測される。構文要素dec_abs_level[scanning position n]は、スキャン位置nにおいてGolomb-Rice符号でコーディングされ、スキャン位置nにおける変換係数のレベルを決定するために使用される中間値に対応することができる。0に等しい構文要素(1701)は、拡張ダイナミックレンジがスケーリングおよび変換プロセスで使用されず、例えば構文要素abs_remainder[ ]およびdec_abs_level[ ]などの2値化に使用されないことを指定する。存在しない場合、構文要素(1701)の値は0に等しいと推測される。
一例では、Log2TransformRangeによって示される変数を使用して、スケーリングおよび変換プロセスにおける変換係数、ならびに特定の構文要素の2値化のためのダイナミックレンジが決定される。例えば、変数Log2TransformRangeは、スケーリングおよび変換プロセスにおける変換係数を表す、特定の構文要素の2値化のためのビット数とすることができる。ダイナミックレンジは、ビット数を用いて表される最大数と最小数との差とすることができる。一例では、変数Log2TransformRangeは、式(1)を使用するなど、構文要素(1701)sps_extended_precision_flagに従って導出される:
Log2TransformRange=sps_extended_precision_flag?Max(15,Min(20,BitDepth+6)):15 式(1)
スケーリングおよび変換プロセスにおける変換係数、ならびに特定の構文要素の2値化のためのダイナミックレンジは、変数Log2TransformRangeに基づいて決定され得る。いくつかの例では、フラグsps_extended_precision_flagの値が0であるとき、拡張ダイナミックレンジ特徴(例えば、拡張ダイナミックレンジのコーディングツール)は使用されず、変換係数のダイナミックレンジは15ビットなどの固定ビット数に基づく。フラグsps_extended_precision_flagの値が1であるとき、拡張ダイナミックレンジ特徴が有効とされ、スケーリングおよび変換処理において変換係数を表すビット数は、式(1)の例のビット深度BitDepthに基づいて、15ビット、16ビット、17ビット、18ビット、19ビット、20ビットのいずれかとすることができる。変換係数のダイナミックレンジは、ビット数に基づいて決定され得る。
本開示の一態様によれば、構文要素(例えば、sps_bitdepth_minus8で示される)を使用して、ルマおよびクロマアレイ(例えば、BitDepthで示される)のサンプルのビット深度、ならびにルマおよびクロマ量子化パラメータ範囲オフセット(例えば、QpBdOffsetで示される)の値をシグナリングすることができる。一例では、ビット深度BitDepthを式(2)に従って計算することができ、QP範囲オフセットQpBdOffsetを式(3)に従って計算することができる。
BitDepth=8+sps_bitdepth_minus8 式(2)
QpBdOffset=6×sps_bitdepth_minus8 式(3)
いくつかの例では、1に等しいGCIビット(1601)は、出力レイヤセット(OlsInScope)のスコープ内のすべてのピクチャの構文要素(1701)が0に等しくなり得ることを指定する。0に等しいGCIビット(1601)は、このような制約を課さない。したがって、1に等しいGCIビット(1601)は、ビットストリームのコーディングにおいて拡張ダイナミックレンジコーディングツールを使用しないことを指定することができる。
いくつかの実施形態において、GCIビット(1602)および構文要素(1702)は、異なるスコープにおいて、変換スキップモードにおける残差コーディングのためのスライスベースのライスパラメータ(Rice parameter)選択などの、変換スキップモードにおける残差コーディングのためのスライスベースのライスコーディング(Rice coding)のコーディングツールの制御を提供するために使用される。
本開示の一態様によれば、変換スキップ残差コーディングのためのスライスベースのライスパラメータ選択は、ビデオ規格のレンジ拡張に含まれ得る。いくつかの例では、図17に示すように、変換スキップスライスのためのライスパラメータのシグナリングが有効または無効にされたことを示すために、変換スキップモードが有効である(例えば、構文要素sps_tranform_skip_enabled_flagは真である)とき、シーケンスパラメータセット(SPS)で1つの制御フラグ(例えば、sps_ts_residual_coding_rice_present_in_sh_flagで示される、構文要素(1702))がシグナリングされる。
制御フラグが有効(例えば、「1」に等しい)としてシグナリングされるとき、その変換スキップスライスのライスパラメータの選択を示すために、例えばスライスヘッダにおいて、各変換スキップスライスについて1つの構文要素(例えば、sh_ts_residual_coding_rice_idx_minus1で示される)がさらにシグナリングされる。制御フラグが無効(例えば、「0」に等しい)としてシグナリングされるとき、変換スキップスライスのためのライスパラメータ選択を示すためにスライスレベル(例えば、スライスヘッダ)でさらなる構文要素はシグナリングされず、デフォルトのライスパラメータは、一例ではSPSを参照するコーディングされたビデオデータ内のすべての変換スキップスライスに使用され得る。
例えば、SPS内の1に等しい構文要素(1702)は、sh_ts_residual_coding_rice_idx_minus1で示されるスライスヘッダフラグが、SPSを参照するスライスのスライスヘッダ(例えば、slice_header( ))構文構造の中に存在し得ることを指定する。SPS内の0に等しい構文要素(1702)は、SPSを参照するスライスのslice_header( )構文構造に、スライスヘッダフラグsh_ts_residual_coding_rice_idx_minus1が存在しないことを指定する。存在しない場合、sps_ts_residual_coding_rice_present_in_sh_flagの値は、いくつかの例では0に等しいと推測される。
いくつかの例では、出力レイヤセットのスコープ内で、変換スキップモードにおける残差コーディングのためのスライスベースのライスコーディングのコーディングツールの使用を制御するために、構文要素を汎用制約情報に含めることができる。例えば、1に等しい構文要素(1602)は、出力レイヤセット(OlsInScope)のスコープ内のすべてのピクチャの構文要素(1702)が0に等しくなり得ることを指定する。0に等しい構文要素(1602)は、このような制約を課さない。したがって、いくつかの例では、ビットストリーム内の1に等しいGCIビット(1602)は、ビットストリームをコーディングするための変換スキップ残差コーディングのためのスライスベースのライスパラメータ選択を使用しないことを指定することができる。
いくつかの実施形態では、GCIビット(1603)および構文要素(1703)は、異なるスコープで、通常残差コーディング(RRC)におけるabs_remainder[ ]およびdec_abs_level[ ]などのいくつかの構文要素の2値化のためのライスパラメータ導出のための1つまたは複数のコーディングツールの制御を提供するために使用される。いくつかの例では、通常残差コーディング(RRC)は、変換および量子化によって取得されたブロックをコーディングするためのいくつかの技術を指す。いくつかの例では、量子化のみによって得られたブロックに対してRRCを修正することができる。いくつかの例では、変換スキップ残差コーディング(TSRC)は、変換をバイパスして取得されたブロックをコーディングするための専用のいくつかの技術を指す(変換スキップとも呼ばれる)。
いくつかの例では、ビデオコーディング規格は、abs_remainder[ ]およびdec_abs_level[ ]などのいくつかの構文要素の2値化のためのライスパラメータ導出のための1つまたは複数のコーディングツールを含み得、ビデオコーディング規格のレンジ拡張は、abs_remainder[ ]およびdec_abs_level[ ]などのいくつかの構文要素の2値化のためのライスパラメータ導出のための1つまたは複数の代替コーディングツールを含むことができる。
いくつかの例では、ビデオ規格は、ライスパラメータ導出のためにローカルテンプレートベースの技術を使用する。例えば、ライスパラメータ導出には、1つまたは複数(例えば、例では5つ)の隣接係数レベルを含むテンプレートが使用される。例えば、テンプレート内の絶対係数値の合計を計算することができ、次いで、その合計に基づいてライスパラメータが決定される。一例では、ルックアップテーブルを使用して、合計に基づいてライスパラメータを決定することができる。
ライスパラメータは、他の適切なコーディングツールによって決定され得ることに留意されたい。一例では、式を使用して、合計に基づいてライスパラメータを決定することができる。別の例では、コンテキストモデリングが、隣接する係数レベルの統計に基づいてライスパラメータを決定するために使用され得る。いくつかの例では、ビデオ規格のレンジ拡張は、ライスパラメータ導出のための1つまたは複数の代替コーディングツールを指定することができる。
いくつかの例では、ビデオ規格のレンジ拡張は、他のシナリオで使用するためのRRCへの修正を含むことができる。一例では、レンジ拡張は、変換スキップモードにおける残差コーディングのための異なるコンテキストモデリングツールおよび残差信号回転ツールを含むことができる。
いくつかの例では、1に等しいSPS内の構文要素(1703)は、abs_remainder[ ]およびdec_abs_level[ ]の2値化のための代替ライスパラメータ導出(例えば、レンジ拡張におけるライスパラメータ導出のための代替コーディングツール)がSPSを参照するCLVSをコーディングするために使用されることを指定する。0に等しい構文要素(1703)は、abs_remainder[ ]およびdec_abs_level[ ]の2値化のための代替ライスパラメータ導出がSPSを参照するCLVSをコーディングするために使用されないことを指定する。存在しない場合、構文要素(1703)の値は0に等しいと推測される。
いくつかの例では、1に等しい構文要素(1603)は、出力レイヤセット(OlsInScope)のスコープ内のすべてのピクチャの構文要素(1703)が0に等しくなり得ることを指定する。0に等しい構文要素(1603)は、このような制約を課さない。したがって、いくつかの例では、1に等しいGCIビット(1603)は、ビットストリームをコーディングするためのabs_remainder[ ]およびdec_abs_level[ ]の2値化のための代替ライスパラメータ導出(例えば、指定されたレンジ拡張で指定されたライスパラメータ導出のための代替コーディングツール)を使用しないことを指定することができる。
いくつかの実施形態において、GCIビット(1604)および構文要素(1704)は、異なるスコープにおいて、abs_remainder[ ]およびdec_abs_level[ ]の2値化のための統計ベースのライスパラメータ導出の制御を提供するために使用される。
本開示の一態様によれば、abs_remainder[ ]およびdec_abs_level[ ]の2値化のためのライスパラメータ導出は、前のTUから蓄積された統計を使用して各変換ユニット(TU)の開始時に初期化されることができる。いくつかの例では、統計ベースのライスパラメータ導出は、ビデオ規格のレンジ拡張に含まれ得る。
いくつかの例では、SPS内のsps_persistent_rice_adaptation_enabled_flagによって示される制御フラグ、例えば構文要素(1704)が、統計ベースのライスパラメータ導出を制御するために使用される。例えば、SPS内の1に等しい構文要素(1704)は、abs_remainder[ ]およびdec_abs_level[ ]の2値化のためのライスパラメータ導出が、前のTUから蓄積された統計を使用して各TUの開始時に初期化されることを指定する。0に等しい構文要素(1704)は、現在のTUのライスパラメータ導出で前のTU状態が使用されないことを指定する。存在しない場合、構文(1704)の値は0に等しいと推測される。
さらに、一実施形態では、1に等しい構文要素(1604)は、出力レイヤセット(OlsInScope)のスコープ内のすべてのピクチャの構文要素(1704)が0に等しくなり得ることを指定する。0に等しい構文要素(1604)は、このような制約を課さない。したがって、いくつかの例では、1に等しいGCIビット(1604)は、ビットストリームをコーディングするために統計ベースのライスパラメータ導出を使用しないことを指定することができる。
いくつかの実施形態では、GCIビット(1605)および構文要素(1705)は、異なるスコープで、変換係数のエントロピーコーディング中に最後の有意係数の位置をコーディングするために使用されるコーディングツールの制御を提供するために使用される。一例では、最後の有意係数の位置を、異なるコーディングツールによってコーディングすることができる。例えば、ビデオ規格は、LastSignificantCoeffXおよびLastSignificantCoeffY変数によって示される位置の2つの座標をコーディングすることによって最後の有意係数の位置を決定することができる第1のコーディングツールを指定してもよく、ビデオ規格のレンジ拡張は、一例ではゼロアウト変換ブロックの右下隅を参照して最後の有意係数の相対座標をコーディングすることによって最後の有意係数の位置を決定することができる第2のコーディングツールなどの代替のコーディングツールを指定することができる。
いくつかの例では、SPS内の1に等しい構文要素(1705)は、sh_reverse_last_sig_coeff_flagによって示されるスライスヘッダフラグ(スライススコープ)が、SPSを参照するスライスヘッダ構文構造(例えば、いくつかの例ではslice_header( ))に存在することを指定する。SPS内の0に等しい構文要素(1705)は、SPSを参照するスライスヘッダ構文構造にスライスヘッダフラグsh_reverse_last_sig_coeff_flagが存在しないことを指定し、スライスヘッダフラグsh_reverse_last_sig_coeff_flagは0であると推論され得る。存在しない場合、構文要素(1705)の値は0に等しいと推測される。
いくつかの例では、スライスのスライスヘッダフラグsh_reverse_last_sig_coeff_flagの値は、スライスのコーディングにおけるスケーリングおよび変換プロセスにおける変換係数の最後の有意係数の位置導出を決定するために使用される。一例では、sh_reverse_last_sig_coeff_flagが1に等しいとき、最後の有意係数位置は、第2のコーディングツールなどのビデオ規格のレンジ拡張における代替のコーディングツールによってコーディングされ、そうでない場合、最後の有意係数位置の現在の座標は、第1のコーディングツールによってコーディングされる。
いくつかの例では、1に等しいGCIビット(1605)は、出力レイヤセット(OlsInScope)のスコープ内のすべてのピクチャの構文要素(1705)が0に等しくなり得ることを指定する。0に等しいGCIビット(1605)は、このような制約を課さない。したがって、1に等しいGCIビット(1605)は、ビットストリームのスコープに対する最後の有意係数の位置導出において第2のコーディングツールを使用しないことを指定することができる。
図18は、本開示の一実施形態によるプロセス(1800)の概要を示すフローチャートを示している。プロセス(1800)を、ビデオデコーダで使用することができる。様々な実施形態では、プロセス(1800)は、端末デバイス(310)、(320)、(330)、および(340)の処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1800)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1800)を実行する。プロセスは(S1801)から始まり、(S1810)に進む。
(S1810)において、ビットストリーム内のコーディングされたビデオデータ(例えば、出力レイヤセット)の第1のスコープ内のコーディング制御のための第1の構文要素(例えば、general_no_extended_precision_constraint_flag)の値が決定される。第1の構文要素は、所定のダイナミックレンジから拡張されたダイナミックレンジを有する変換係数を処理するためのコーディングツールに関連付けられる。
一例では、第1の構文要素は、構文構造の中の汎用制約情報のための追加のビットを示す構文構造の中の構文要素(例えば、gci_num_additional_bits)に応答して、汎用制約情報のための構文構造からデコーディングされる。
(S1820)において、第1の構文要素の値が第1の値である場合、プロセスは(1830)に進み、そうでない場合、プロセスは(S1840)に進む。第1の値は、コーディングされたビデオデータの1つまたは複数の第2のスコープ(例えば、出力レイヤセットの中の1つまたは複数のCLVS)を含むビットストリーム内のコーディングされたビデオデータの第1のスコープのコーディングにおいてコーディングツールを使用しない(例えば、無効化する)ことを示す。
いくつかの例では、第1の構文要素は、デコーダで出力された出力レイヤセットの中のピクチャのコーディング制御のための汎用制約情報の中にある。一例では、第1の構文要素の第1の値は、出力レイヤセットの中の各コーディングレイヤビデオシーケンス(CLVS)においてコーディングツールを無効化することを示す。
(S1830)において、第1の構文要素が第1の値であることに応答して、コーディングツールを呼び出すことなくビットストリームにおけるコーディングされたビデオデータの第1のスコープがデコーディングされる。
いくつかの例では、ビットストリーム内のコーディングレイヤビデオシーケンス(CLVS)のコーディング制御のための第2の構文要素(例えば、sps_extended_precision_flag)は、CLVSをデコーディングするためにコーディングツールを呼び出さないことを示す値を有するように制約される。
(S1840)において、第1の構文要素が第2の値であることに応答して、ビットストリーム内のコーディングレイヤビデオシーケンス(CLVS)などのコーディングされたビデオデータの第2のスコープのコーディング制御のための第2の構文要素(例えば、sps_extended_precision_flag)の値が、第2のスコープ内のコーディングされたビデオデータのデコーディングのために決定される。第2の構文要素は、CLVSにおけるコーディングツールの有効化/無効化を示す。一例では、第2の構文要素は、CLVSのためのシーケンスパラメータセット(SPS)において提示されず、CLVSにおけるコーディングツールの無効化を示すための第2の構文要素の値が推論される。
次いで、コーディングされたビデオデータの第2のスコープは、第2の構文要素の値に従って(例えば、コーディングツールの呼び出しありまたは呼び出しなしで)デコーディングされる。一例では、ダイナミックレンジ(例えば、変換係数を表すためのビット数)は、CLVSにおけるコーディングツールの有効化を示す第2の構文要素の値に応答して(例えば、式(1)を使用して)ビット深度に基づいて決定される。別の例では、CLVSにおけるコーディングツールの無効化を示す第2の構文要素の値に応答して、ダイナミックレンジ(例えば、変換係数を表すためのビット数)が所定のダイナミックレンジであると決定される。
プロセス(1800)は、適切に適応され得る。プロセス(1800)の(1つまたは複数の)ステップは、修正および/または省略され得る。(1つまたは複数の)追加のステップが追加され得る。任意の適切な実施順序が使用され得る。
図19は、本開示の一実施形態によるプロセス(1900)を概説するフローチャートを示している。プロセス(1900)を、ビデオエンコーダで使用することができる。様々な実施形態において、プロセス(1900)は、端末デバイス(310)、(320)、(330)、および(340)の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路、ビデオエンコーダ(703)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1900)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1900)を実行する。プロセスは(S1901)から開始し、(S1910)に進む。
(S1910)において、処理回路は、ビットストリーム内のコーディングされたビデオデータの第1のスコープ(例えば、出力レイヤセット)のエンコーディング中にコーディングツールが使用されるかどうかを決定する。コーディングツールは、所定のダイナミックレンジから拡張されたダイナミックレンジを有する変換係数を処理するためのものである。コーディングされたビデオデータの第1のスコープは、コーディングされたビデオデータの1つまたは複数の第2のスコープ(例えば、CLVS)を含む。
いくつかの例では、処理回路は、コーディングツールがビットストリーム内のコーディングレイヤビデオシーケンス(CLVS)のコーディング制御のために第2の構文要素(例えば、sps_extended_precision_flag)に基づいて使用されるかどうかを決定することができる。
(S1920)において、コーディングされたビデオデータの第1のスコープのコーディングにコーディングツールが使用されていない場合、プロセスは(S1930)に進み、そうでない場合、プロセスは(S1940)に進む。
(S1930)において、第1の値を有する第1の構文要素(例えば、general_no_extended_precision_constraint_flag)がビットストリーム内でエンコーディングされる。第1の構文要素は、ビットストリーム内のコーディングされたビデオデータ(例えば、出力レイヤセット)の第1のスコープ内のコーディング制御のためのものである。第1の構文要素は、拡張ダイナミックレンジを有する変換係数を処理するためのコーディングツールに関連付けられる。第1の値は、コーディングされたビデオデータの第1のスコープのコーディングにおいてコーディングツールを使用しない(例えば、無効化する)ことを示す。
一例では、第1の構文要素は、汎用制約情報のための構文構造でエンコーディングされ、構文構造の中の構文要素(例えば、gci_num_additional_bits)は、構文構造の中の汎用制約情報のための追加のビットを示すように調整される。
(S1940)において、第2の値を有する第1の構文要素がビットストリーム内でエンコーディングされる。いくつかの例では、第1の構文要素はビットストリーム内でエンコーディングされず、例えば、第2の値が第1の構文要素のデフォルト値であり、したがって第1の構文要素が提示されていない場合に推測することができ、次に(S1940)をスキップすることができる。
プロセス(1900)は、適切に適応され得る。プロセス(1900)の(1つまたは複数の)ステップは、修正および/または省略され得る。(1つまたは複数の)追加のステップが追加され得る。任意の適切な実施順序が使用され得る。
上述した技術(例えば、制約フラグ、適応解像度パラメータなどをシグナリングするための技術)は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装されることが可能である。例えば、図20は、開示の主題の特定の実施形態を実装するのに適したコンピュータシステム(2000)を示している。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)およびグラフィックス処理装置(GPU)などによって直接的に、または解釈、マイクロコードの実行などを介して実行されることが可能である命令を含むコードを作成するために、アセンブリ、コンパイル、リンク、または同様の機構を受け得る、任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされることが可能である。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行されることが可能である。
コンピュータシステム(2000)について図20に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(2000)の例示的な実施形態に示されている構成要素のいずれか1つまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(2000)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した、1人または複数の人間のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスは、オーディオ(発話、音楽、周囲音など)、画像(スキャン画像、静止画像カメラから得られた写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関連しない特定の媒体を取り込むために使用されることもできる。
入力ヒューマンインターフェースデバイスは、キーボード(2001)、マウス(2002)、トラックパッド(2003)、タッチスクリーン(2010)、データグローブ(図示せず)、ジョイスティック(2005)、マイクロフォン(2006)、スキャナ(2007)、カメラ(2008)のうちの1つまたは複数(図示された各々のうちの1つのみ)を含み得る。
コンピュータシステム(2000)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間ユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2010)、データグローブ(図示せず)、またはジョイスティック(2005)による触覚フィードバック、ただし、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(例えば、スピーカ(2009)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、各々タッチスクリーン入力機能ありまたはなしの、各々触覚フィードバック機能ありまたはなしの、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2010)など、それらの一部は、二次元視覚出力、または立体画像出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段による四次元以上の出力が可能であり得る)、ならびにプリンタ(図示せず)を含み得る。
コンピュータシステム(2000)はまた、人間がアクセス可能な記憶デバイスおよびそれらの関連媒体、例えば、CD/DVDなどの媒体(2021)を有するCD/DVD ROM/RW(2020)を含む光学媒体、サムドライブ(2022)、リムーバブルハードドライブまたはソリッドステートドライブ(2023)、テープやフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)なども含むことができる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、送信媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(2000)はまた、1つまたは複数の通信ネットワーク(2055)へのインターフェース(2054)を含むことができる。ネットワークは、例えば、無線、有線、光とすることができる。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業用、リアルタイム、遅延耐性、などとすることができる。ネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上波放送テレビを含むテレビ有線または無線広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(2049)(例えば、コンピュータシステム(2000)のUSBポートなど)に取り付けられた外部ネットワークインターフェースアダプタを必要とする。他のネットワークは、一般に、後述するようなシステムバスへの取り付けによってコンピュータシステム(2000)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースやスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(2000)は他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して、一方向の受信のみ(例えば、地上波放送テレビ)、一方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向とすることができる。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースを、コンピュータシステム(2000)のコア(2040)に取り付けることができる。
コア(2040)は、1つまたは複数の中央処理装置(CPU)(2041)、グラフィックス処理装置(GPU)(2042)、フィールドプログラマブルゲートエリア(FPGA)(2043)の形の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(2044)、グラフィックスアダプタ(2050)などを含むことができる。これらのデバイスは、読み出し専用メモリ(ROM)(2045)、ランダムアクセスメモリ(2046)、内部ユーザアクセス可能でないハードドライブ、SSDなどの内部大容量ストレージ(2047)と共に、システムバス(2048)を介して接続され得る。一部のコンピュータシステムでは、システムバス(2048)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形でアクセス可能とすることができる。周辺機器を、コアのシステムバス(2048)に直接、または周辺バス(2049)を介して取り付けることができる。一例では、スクリーン(2010)をグラフィックスアダプタ(2050)に接続することができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(2041)、GPU(2042)、FPGA(2043)、およびアクセラレータ(2044)は、組み合わさって前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードを、ROM(2045)またはRAM(2046)に記憶することができる。また移行データをRAM(2046)に記憶することもでき、永続データは、例えば内部大容量ストレージ(2047)に記憶することができる。メモリデバイスのいずれかへの高速記憶および検索を、1つまたは複数のCPU(2041)、GPU(2042)、大容量ストレージ(2047)、ROM(2045)、RAM(2046)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的ために特別に設計および構成されたものとすることができる、あるいは、コンピュータソフトウェア技術の当業者によく知られ、当業者が入手可能な種類のものとすることができる。
限定ではなく例として、アーキテクチャを有するコンピュータシステム(2000)、特にコア(2040)は、(CPU、GPU、FPGA、アクセラレータなどを含む)(1つまたは複数の)プロセッサが、1つまたは複数の有形のコンピュータ可読媒体において具現化されたソフトウェアを実行した結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(2047)やROM(2045)などの非一時的な性質のものであるコア(2040)の特定のストレージと関連付けられた媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアを、そのようなデバイスに記憶し、コア(2040)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(2040)、具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(2046)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行することができる、回路(例えば、アクセラレータ(2044))における結線接続された、または他の方法で具現化されたロジックの結果として機能を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはこれらの両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:補足拡張情報
VUI:ビデオユーザビリティ情報
GOP:グループオブピクチャ
TU:変換ユニット
PU:予測ユニット
CTU:コーディングツリーユニット
CTB:コーディングツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号対雑音比
CPU:中央処理装置
GPU:グラフィックス処理装置
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み出し専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブル論理デバイス
LAN:ローカルエリアネットワーク
GSM:グローバル移動体通信システム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
本開示はいくつかの例示的な実施形態を記載しているが、変更、置換、および様々な代替の均等物が存在し、それらは本開示の範囲内にある。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。