以下に説明する本発明の実施形態は、画像(またはピクチャ)の符号化および復号を改善することに関する。
本明細書では、「シグナリング」は、1つまたは複数のパラメータまたはシンタックス要素に関する情報、例えば、サブピクチャの識別子、サブピクチャのサイズ/幅/高さ、単一の画像部分(例えば、スライス)のみがサブピクチャに含まれるかどうか、スライスが矩形スライスであるかどうか、および/またはサブピクチャに含まれるスライスの数、のうちの任意の1つまたは複数を決定するための情報を、ビットストリームに挿入すること(提供すること/含むこと/符号化すること)、またはビットストリームから抽出すること/取得すること(復号すること)を指すことができる。本明細書では、「処理」は、データに対して実行される任意の種類の動作、例えば、1つまたは複数の画像/ピクチャの画像データを符号化または復号することを指すことができる。
本明細書では、「スライス」という用語が画像部分の例として使用される(そのような画像部分の他の例が1つまたは複数のコーディングツリーユニットを含む画像部分である)。本発明の実施形態は、スライスの代わりに画像部分、および画像部分のためのヘッダ(スライスヘッダまたはスライスセグメントヘッダの代わりに)などの適切に修正されたパラメータ/値/シンタックスに基づいて実装されてもよいことが理解される。スライスヘッダ、スライスセグメントヘッダ、シーケンスパラメータセット(SPS)、またはピクチャパラメータセット(PPS)内でシグナリングされるものとして本明細書に記載される様々な情報は、それらがそれらの媒体内でシグナリングすることによって提供されるのと同じ機能性を提供することができる限り、他の場所でシグナリングされてもよいことも理解されたい。スライス、タイルグループ、タイル、コーディングツリーユニット(CTU)/最大コーディングユニット(LCU)、コーディングツリーブロック(CTB)、コーディングユニット(CU)、予測ユニット(PU)、変換ユニット(TU)、またはピクセル/サンプルのブロック、のいずれかを画像部分と呼ぶことができることも理解される。
コンポーネントまたはツールが「アクティブ」と記述されている場合、コンポーネント/ツールは「使用可能」または「使用のために利用可能」または「使用中」であり、「非アクティブ」と記述されている場合、コンポーネント/ツールは「使用不可」または「使用のために利用不可」または「使用されていない」であり、「推論可能」とは、ビットストリーム内で明示的にシグナリングすることなく、関連する値またはパラメータを他の情報から決定/取得できることを指す。さらに、フラグが「アクティブ」として記述される場合、それは、フラグが関連するコンポーネント/ツールが「アクティブ」(すなわち、「有効」)であることを示すことを意味することも理解される。
本明細書において、以下の用語は特に断らない限り、VVC7において定義されているものと同じ、または機能的に等価な定義のために使用される。VVC7で使用される定義を以下に示す。
スライス:1つのNALユニットに排他的に含まれる、ピクチャのタイル内の整数個の連続した完全なCTU行、または整数個の完全なタイル。
スライスヘッダ:スライス内に表されるタイル内のすべてのタイルまたはCTU行に関係するデータ要素を含む、符号化されたスライスの部分。
タイル:ピクチャ内の特定のタイル列および特定のタイル行内のCTUの矩形領域。
サブピクチャ:ピクチャ内の1つまたは複数のスライスの矩形領域。
ピクチャ(または画像):単色フォーマットのルマサンプルのアレイ、またはルマサンプルのアレイ、および4:2:0、4:2:2、および4:4:4カラーフォーマットのクロマサンプルの2つの対応するアレイ。
符号化ピクチャ:AU内のnuh_layer_idの特定の値を有するVCL NALユニットを含み、ピクチャのすべてのCTUを含むピクチャの符号化表現。
符号化表現:符号化された形式で表現されるデータ要素。
ラスタスキャン:1次元パターンの第1のエントリが、左から右にスキャンされた2次元パターンの第1の最上行からであり、同様に、左から右にそれぞれスキャンされたパターンの第2、第3などの行(下に行く)が続くような、1次元パターンへの矩形2次元パターンのマッピング。
ブロック:サンプルのMxN(M列×N行)アレイ(配列)、または変換係数のMxNアレイ。
符号化ブロック:CTBをコーディングブロックに分割することがパーティショニング(partitioning)であるような、MおよびNのある値に対するサンプルのMxNブロック。
コーディングツリーブロック(CTB):構成要素のCTBへの分割がパーティショニング(partitioning)であるような、Nのある値に対するサンプルのN×Nブロック。
コーディングツリーユニット(CTU):ルマサンプルのCTB、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、またはモノクロピクチャのサンプルのCTB、またはサンプルを符号化するために使用される3つの別個のカラープレーンおよびシンタックス構造を使用して符号化されるピクチャ。
コーディングユニット(CU):ルマサンプルのコーディングブロック、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するコーディングブロック、またはモノクロピクチャのサンプルのコーディングブロック、またはサンプルを符号化するために使用される3つの別個のカラープレーンおよびシンタックス構造を使用して符号化されるピクチャ。
構成要素:4:2:0、4:2:2、または4:4:4のカラーフォーマットでピクチャを構成する3つのアレイ(ルマおよび2つのクロマ)のうちの1つからのアレイまたは単一のサンプル、またはモノクロフォーマットでピクチャを構成するアレイのアレイまたは単一のサンプル。
ピクチャパラメータセット(PPS):各スライスヘッダにあるシンタックス要素によって決定される、ゼロ個以上の符号化ピクチャ全体に適用されるシンタックス要素を含むシンタックス構造。
シーケンスパラメータセット(SPS):各スライスヘッダにあるシンタックス要素によって参照されるPPSにあるシンタックス要素の内容によって決定される、0個以上のCVS全体に適用されるシンタックス要素を含むシンタックス構造。
本明細書において、以下の用語はまた、別段の記載がない限り、以下に定義されるように、同じ、または機能的に等価な定義のために使用される。
タイルグループ:単一のNALユニットに排他的に含まれるピクチャの整数個の完全な(すなわち、全体の)タイル。
「タイルフラクション」、「部分タイル」、「タイルの部分」、又は「タイルのフラクション」:完全(即ち、全体の)タイルを形成しないピクチャのタイル内の整数個の連続した完全CTU行。
スライスセグメント:1つのNALユニットに排他的に含まれるピクチャのタイル内の整数個の連続した完全CTU行、または整数個の完全タイル。
スライスセグメントヘッダ:スライスセグメント内に表されるタイル内のすべてのタイルまたはCTU行に関係するデータ要素を含む符号化スライスセグメントの部分。
スライスセグメントが存在するときのスライス:整数個の完全タイルまたはピクチャのタイルを集合的に表す1つまたは複数のスライスセグメントのセット。
本発明の実施形態
ピクチャ/画像とビットストリームのパーティショニング
3.1 ピクチャのタイルおよびスライスへのパーティショニング
ビデオの圧縮は、HEVC又は出現しつつあるVVC標準のようなほとんどの符号化システムにおけるブロックベースのビデオ符号化に依存する。これらの符号化システムでは、ビデオが異なる時点で(例えば、ビデオ内の異なる時間的位置で)表示され得るフレーム又はピクチャ又は画像又はサンプルのシーケンスから構成される。多層ビデオ(例えば、スケーラブル、ステレオ、または3Dビデオ)の場合、特定の時点で表示される最終/結果画像を形成することができるように、いくつかのピクチャを復号する必要がある場合がある。ピクチャは2つ以上の画像構成要素から構成することもできる(すなわち、ピクチャの画像データは2つ以上の画像構成要素を含む)。そのような画像構成要素の一例は、輝度、色差または深度情報を符号化するための構成要素であろう。
ビデオシーケンスの圧縮は、各ピクチャのためのいくつかの異なるパーティショニング技法(すなわち、ピクチャをパーティショニング(partitioning)/分割(diving)するための異なる方式/フレームワーク/アレンジメント/メカニズム)と、これらのパーティショニング技法が圧縮処理中にどのように実施されるかと、を使用する。
図1は、VVC7と互換性のある、本発明の一実施形態による、ピクチャのタイルおよびスライスへのパーティショニングを示す。ピクチャ101,102は、点線で示すコーディングツリーユニット(CTU)に分割されている。CTUは、VVC7の符号化および復号の基本単位である。例えば、VVC7では、CTUが128×128画素の領域を符号化することができる。
コーディングツリーユニット(CTU)はまた、(ピクセルまたは構成要素サンプル(値)の)ブロック、マクロブロック、またはコーディングブロックとも呼ばれ得る。これはピクチャの異なる画像構成要素を同時に符号化/復号するために使用することができ、あるいはピクチャの異なる画像構成要素を別々に/個別に符号化/復号することができるように、1つの画像構成要素のみに限定することができる。画像のデータが構成要素ごとに別々のデータを含む場合、CTUは複数のコーディングツリーブロック(CTB)をグループ化し、各構成要素に対して1つのCTBをグループ化する。
図1に示すように、ピクチャは細い実線で表されるタイルの格子に従って(すなわち、タイルの1つまたは複数の格子に)区分することもできる。タイルは、CTUパーティショニングとは独立に定義可能な長方形領域(ピクセル/構成要素サンプルの)であるピクチャ部分(ピクチャのパーツ/部分)である。タイルはまた、図1に示された例のように、例えばVVC7におけるCTUのシーケンスに対応することができ、パーティショニング技術(partitioning technique)は、CTUの境界と一致/整列するようにタイルの境界を制限することができる。
タイルは、タイル境界が符号化/復号処理の空間依存性を破るように定義される(すなわち、所与のピクチャにおいて、タイルは、同じピクチャの別の空間的に「隣接する」タイルから独立して符号化/復号され得るように定義/指定される)。これは、タイル内のCTUの符号化/復号が同じピクチャ内の別のタイルからのピクセル/サンプルまたは参照データに基づいていないことを意味する。
いくつかの符号化/復号システム、例えば、本発明の実施形態またはVVC7のためのシステムは、スライスの概念を提供する(すなわち、1つまたは複数のスライスに基づくパーティショニング技法も使用する)。このメカニズムは、ピクチャをタイルの1つ又は幾つかのグループに区分することを可能にし、タイルのグループは、集合的にスライスと呼ばれる。各スライスは、1つまたは複数のタイルまたは部分タイルから構成される。2つの異なる種類のスライスが、ピクチャ101および102によって示されるように提供される。第1の種類のスライスは、ピクチャ101内の太い実線で表されるように、ピクチャ内に矩形の領域(area)/領域(region)を形成するスライスに制限される。ピクチャ101は、6つの異なる矩形スライス(0)~(5)へのピクチャのパーティショニングを示す。第2の種類のスライスは、ピクチャ102内の太い実線で表されるように、ラスタスキャン順序で連続するタイルに制限される(その結果、スライスはタイルのシーケンスを形成する)。ピクチャ102は、ピクチャを、ラスタスキャン順序で連続するタイルから構成される3つの異なるスライス(0)~(2)に区分することを示す。多くの場合、矩形スライスは、ビデオ内の注目領域(RoI)を処理するための選択の構造/アレンジメント/構成である。スライスは、1つまたは複数のネットワーク抽象化レイヤ(NAL)ユニットとしてビットストリームに符号化(またはビットストリームから復号)できる。NALユニットは、符号化/復号ビットストリーム内のデータのカプセル化のためのデータの論理ユニットである(例えば、整数バイト数を含むパケットであり、複数のパケットがまとめて符号化ビデオデータを形成する)。VVC7の符号化/復号システムでは、スライスが通常、単一のNALユニットとして符号化される。スライスがビットストリーム内でいくつかのNALユニットとして符号化される場合、スライスのための各NALユニットは、スライスセグメントと呼ばれる。スライスセグメントは、そのスライスセグメントの符号化パラメータを含むスライスセグメントヘッダを含む。変形例によれば、スライスの第1のスライスセグメントNALユニットのヘッダは、スライスのための全ての符号化パラメータを含む。スライスの後続のNALユニットのスライスセグメントヘッダは、第1のNALユニットよりも少ないパラメータを含むことができる。そのような場合、第1のスライスセグメントは独立したスライスセグメントであり、後続のセグメントは従属スライスセグメントである(それらは第1のスライスセグメントのNALユニットからの符号化パラメータに依存するので)。
3.2 サブピクチャへのパーティショニング
図2は、本発明の一実施形態によるピクチャの、すなわちピクチャの1つまたは複数のサブピクチャへのサブピクチャパーティショニングを示す。サブピクチャは、ピクチャの矩形領域をカバーするピクチャ部分(ピクチャの一部または部分)を表す。各サブピクチャは、別のサブピクチャとは異なるサイズおよび符号化パラメータを有することができる。サブピクチャレイアウト、すなわちピクチャ内のサブピクチャのジオメトリ(例えば、サブピクチャの位置および寸法/幅/高さを使用して定義されるよう)は、ピクチャのスライスのセットをグループ化することを可能にし、2つのピクチャ間の時間的動き予測を制約する(すなわち、制約を課す)ことができる。
図2において、ピクチャ201のタイルパーティショニングは、4×5タイルグリッドである。スライスパーティショニングは、各タイルが2つのスライスに分割される(すなわち、スライスが部分タイルを含む)右側の最後のタイル列を除いて、1つのタイル当たり1つのスライスからなる24個のスライスを定義する。ピクチャ201はまた、2つのサブピクチャ202および203に分割される。サブピクチャは、矩形領域を形成する1つまたは複数のスライスとして定義される。サブピクチャ202(点線領域として示されている)は、最初の3つのタイル列(左から始まる)のスライスと、残りのスライス(右側の最後の2つのタイル列)のサブピクチャ203(それらに対角線が付いたハッチング領域として示されている)とを含む。図2に示されるように、VVC7および本発明の実施形態はピクチャレベルで(例えば、PPSで提供されるシンタックス要素を使用してピクチャごとに)単一スライスパーティショニングおよび単一タイルパーティショニングを定義することを可能にするパーティショニングスキームを提供する。サブピクチャパーティショニングは、タイル及びスライスパーティショニングの上に適用される。サブピクチャの別の態様は、各サブピクチャがフラグのセットに関連付けられることである。これは、時間的予測が同じサブピクチャの部分である参照フレームからのデータを使用するように制約される(例えば、サブピクチャの予測子が別のサブピクチャからの参照データを使用できないように時間的予測が制約される)ことを示すことを可能にする(フラグのセットのうちの1つまたは複数を使用する)。例えば、図2を参照すると、CTB204はサブピクチャ202に属する。時間的予測がサブピクチャ202に対して制約されていることが示されると、サブピクチャ202に対する時間的予測は、サブピクチャ203から来る参照ブロック(または参照データ)を使用することができない。その結果、サブピクチャ202のスライスは、サブピクチャ203のスライスとは独立に符号可能/復号可能である。この特性/属性/特性/能力は、全方向性ビデオシーケンスを空間部分にセグメント化することを含むビューポート依存ストリーミングにおいて有用であり、各空間部分は、360(度)コンテンツの特定のビューイング方向を表す。次いで、視聴者は所望の/関連する視聴方向に対応するセグメントを選択することができ、サブピクチャのこの特性を使用して、360コンテンツの残りの部分からのデータにアクセスすることなく、セグメントを符号化/復号することができる。
サブピクチャの別の使用法は、注目領域を有するストリームを生成することである。サブピクチャは、独立して符号化/復号することができる、これらの注目領域のための空間表現を提供する。サブピクチャは、これらの領域に対応する符号化データへの容易なアクセスを可能にする/可能にするように設計される。その結果、サブピクチャに対応する符号化データを抽出し、単一のサブピクチャのみのデータ、または1つまたは複数の他のサブピクチャとのサブピクチャの組合せ/合成を含む新しいビットストリームを生成することが可能であり、すなわち、サブピクチャベースのビットストリーム生成を使用して柔軟性およびスケーラビリティを改善することができる。
3.3 ビットストリーム
図3は、VVC7の符号化システムの要件に適合する本発明の一実施形態によるビットストリームの構成(すなわち、構造、構成、またはアレンジメント)を示す。ビットストリーム300は、シンタックス要素の順序付けられたシーケンスと符号化(画像)データとを表す/示すデータから構成される。シンタックス要素および符号化(画像)データは、NALユニット301~308に配置(すなわち、パッケージ化/グループ化)される。異なるNALユニットタイプがある。ネットワーク抽象化レイヤ(NAL)は、リアルタイムプロトコル/インターネットプロトコル(RTP/IP)、ISOベースメディアファイルフォーマットなど、のようなさまざまなプロトコルのパケットにビットストリームをカプセル化する機能/機能を提供する。ネットワーク抽象化レイヤは、パケット損失回復力のためのフレームワークも提供する。
NALユニットは、VCL NALユニットと非VCL NALユニットに分割され、VCLはビデオ符号化層を表す。VCL NALユニットは、実際の符号化されたビデオデータを含む。非VCL NALユニットは追加情報を含む。この追加情報は、符号化されたビデオデータの復号に必要なパラメータ、または復号されたビデオデータの使い勝手を向上させることができる補足データである。図3のNALユニット306はスライスに対応し(すなわち、スライスの実際の符号化ビデオデータを含む)、ビットストリームのVCL NALユニットを構成する。
異なるNALユニット301~305は、異なるパラメータセットに対応し、これらのNALユニットは非VCL NALユニットである。DPS NALユニット301は、デコーディングパラメータセットNALユニットを表し、所与の復号処理に対して一定であるパラメータを含む。VPS NALユニット302、VPSはビデオパラメータセットNALユニットを表し、ビデオ全体について定義されたパラメータを含み(例えば、ビデオ全体は、ピクチャ/画像の1つまたは複数のシーケンスを含む)、したがって、ビットストリーム全体の符号化されたビデオデータを復号するときに適用可能である。DPS NALユニットはVPS NALユニット内のパラメータよりも静的な(それらが安定しており、復号処理中にそれほど変化しないという意味で)パラメータを定義することができる。換言すれば、DPS NALユニットのパラメータは、VPS NALユニットのパラメータよりも頻繁には変化しない。SPS NALユニット303、SPSはシーケンスパラメータセットを意味し、ビデオシーケンス(すなわち、ピクチャまたは画像のシーケンス)に対して定義されたパラメータを含む。特に、SPS NALユニットは、ビデオシーケンスの関連するパラメータおよびサブピクチャレイアウトを定義することができる。各サブピクチャに関連するパラメータは、サブピクチャに適用される符号化制約を指定する。変形例によれば、それはサブピクチャ間の時間的予測が制限されていることを示すフラグを含み、その結果、同じサブピクチャから来るデータは時間的予測処理中に使用するために利用可能である。別のフラグはサブピクチャ境界を横切るループフィルタ(すなわち、ポストフィルタリング)をイネーブルまたはディスエーブルすることができる。
PPS NALユニット304、PPSはピクチャパラメータセットを表し、ピクチャまたはピクチャのグループに対して定義されたパラメータを含む。APS NALユニット305、APSは適応パラメータセットを表し、ループフィルタ、典型的には、適応ループフィルタ(ALF)または再成形モデル(またはクロマスケーリングモデルによるルママッピング)またはスライスレベルで使用されるスケーリング行列、のためのパラメータを含む。ビットストリームはまた、SEI NALユニット(図3には示されていない)を含むことができ、これは、補足拡張情報(Supplemental Enhancement Information)NALユニットを表している。ビットストリームにおけるこれらのパラメータセット(またはNALユニット)の発生の周期性(または包含の頻度)は可変である。ビットストリーム全体に対して定義されるVPSは、ビットストリーム内で1回のみ発生する可能性がある。対照的に、スライスに対して定義されるAPSは、各ピクチャ内の各スライスに対して1回発生することができる。実際には、異なるスライスが同じAPSに依存する(例えば、参照する)ことができ、したがって、一般に、ピクチャのためのビットストリーム内のスライスよりも少ないAPS NALユニットが存在する。
AUD NALユニット307は、2つのアクセスユニットを分離するアクセスユニットデリミタNALユニットである。アクセスユニットは同じ復号タイムスタンプを有する1つまたは複数の符号化ピクチャを備えることができるNALユニットのセット(すなわち、同じタイムスタンプを有する1つまたは複数の符号化ピクチャに関連するNALユニットのグループ)である。
PH NALユニット308は、単一の符号化ピクチャのスライスのセットに共通のパラメータをグループ化するピクチャヘッダNALユニットである。ピクチャは、AFLパラメータ、再形成モデル、およびピクチャのスライスによって使用されるスケーリング行列を示すために、1つ以上のAPSを参照することがある。
VCL NALユニット306の各々は、スライスのためのビデオ/画像データを含む。スライスは、ピクチャ全体またはサブピクチャ、単一のタイル、または複数のタイル、またはタイルのフラクション(部分タイル)に対応することができる。例えば、図3のスライスは、幾つかのタイル320を含む。スライスは、スライスヘッダ310と、符号化ブロック340として符号化された符号化画素/構成要素サンプルデータを含む生バイトシーケンスペイロード(RBSP)311とから構成される。
VVC7のようなPPSのシンタックスは、ルマサンプルのピクチャのサイズを指定するシンタックス要素を含み、タイルおよびスライスの各ピクチャのパーティショニングを指定するシンタックス要素をも含む。
PPSは、ピクチャ/フレーム内のスライス位置を決定することを可能にする(すなわち、決定することができる)シンタックス要素を含む。サブピクチャはピクチャ/フレームにおいて矩形領域を形成するので、パラメータセットNALユニット(すなわち、DPS、VPS、SPS、PPS、及びAPS NALユニットのうちの1つまたは複数)から、サブピクチャに属するスライスのセット、タイルの部分、又はタイルを決定することが可能である。
符号化および復号処理
3.4 符号化処理
図4は、本発明の一実施形態による、ビデオのピクチャをビットストリームに符号化するための符号化方法を示す。
最初のステップ401において、ピクチャはサブピクチャに分割される。各サブピクチャについて、サブピクチャのサイズはアプリケーションによって必要とされる空間アクセス粒度の関数として決定される(例えば、サブピクチャサイズはアプリケーション/使用シナリオが必要とするピクチャ内の領域/空間部分/エリアのサイズ/スケール/粒度レベルの関数として表すことができ、サブピクチャサイズは、単一の領域/空間部分/エリアを含むのに十分に小さくすることができる)。通常、ビューポート依存ストリーミング手法では、サブピクチャサイズが視野の所定の範囲(例えば、60°水平視野の範囲)をカバーするように設定される。注目領域の適応ストリーミングのために、各サブピクチャの幅及び高さは、入力ビデオシーケンスに存在する注目領域に依存するようになされる。典型的には、各サブピクチャのサイズは、1つの注目領域を含むようになされる。サブピクチャのサイズは、ルマサンプルユニットで、またはCTBのサイズの倍数で決定される。さらに、ステップ401において、符号化ピクチャ内の各サブピクチャの位置が決定される。サブピクチャの位置およびサイズは、通常、パラメータセットNALユニットなどの非VCL NALユニットでシグナリングされるサブピクチャレイアウト情報を形成する。例えば、サブピクチャレイアウト情報は、ステップ402でSPS NALユニットに符号化される。
このようなSPS NALユニットのSPSシンタックスには、通常、次のシンタックス要素が含まれる。
ディスクリプタ列はシンタックス要素を符号化するために使用される符号化方式を与え、例えば、u(n)、ここでnは整数値である、は、シンタックス要素がnビットを使用して符号化されることを意味し、ue(v)はシンタックス要素が可変長符号化である左ビットが最初である符号なし整数0次Exp-Golomb符号化シンタックス要素を使用して符号化されることを意味する。se(v)はue(v)と同等であるが、符号整数である。u(v)は、シンタックス要素が他のパラメータから決定されるビット単位の特定の長さをもつ固定長符号化を使用して符号化されることを意味する。
ピクチャについてビットストリームにシグナリングするサブピクチャの存在は、フラグsubpics_present_flagの値に応じている。このフラグが0の場合、ビットストリームには、ピクチャを1つまたは複数のサブピクチャにパーティショニングすることに関連する情報が含まれていないことを示す。このような場合、ピクチャ全体をカバーする単一のサブピクチャがあると推測される。このフラグが1に等しいとき、シンタックス要素のセットはフレーム内のサブピクチャのレイアウト(すなわち、ピクチャ)を指定する:シグナリングは、ループ(すなわち、特定の条件が満たされるまで、命令のシーケンスを繰り返すためのプログラミング構造)を用いて、ピクチャのサブピクチャを決定/定義/指定することを含み(ピクチャ内のサブピクチャの数は、sps_num_subpics_minus1シンタックス要素で符号化される)、これは各サブピクチャの位置とサイズを定義することを含む。この「for loop」のインデックスは、サブピクチャインデックスである。シンタックス要素subpic_ctu_top_left_x[i]とsubpic_ctu_top_left_y[i]は、i番目のサブピクチャの最初のCTUの列インデックスと行インデックスにそれぞれ対応する。subpic_width_minus1[i]およびsubpic_height_minus[i]シンタックス要素は、CTU単位でi番目のサブピクチャの幅と高さをシグナリングする。
サブピクチャレイアウトに加えて、SPSはサブピクチャ境界に対する制約を規定する:例えば、1に等しいsubpic_treated_as_pic_flag[i]は、i番目のサブピクチャの境界が時間的予測のためのピクチャ境界として扱われることを示す。これは、i番目のサブピクチャの符号化されたブロックが同じサブピクチャに属する参照ピクチャのデータから予測されることを保証する。0に等しい場合、このフラグは、時間的予測が制約されても制約されなくてもよいことを示す。2番目のフラグ(loop_filter_across_subpic_enabled_flag[i])は、ループフィルタリング処理が別のサブピクチャからのデータ(通常はピクセル値)を使用できるかどうかを指定する。これらの2つのフラグは、サブピクチャが他のサブピクチャから独立して符号化されるか否かを示すことを可能にする。この情報は、サブピクチャが他のサブピクチャから抽出され、導出され、または他のサブピクチャとマージされ得るかどうかを決定する際に有用である。
ステップ403において、エンコーダは、ビデオシーケンスのピクチャにおけるタイル及びスライスにおけるパーティションを決定し、PPSなどの1つの非VCL NALユニットにおけるこれらのパーティショニングを記述する。このステップは、図6を参照してさらに後述する。スライス及びタイルパーティショニングのシグナリングは、各サブピクチャが少なくとも1つのスライス及びタイルの一部(即ち、部分タイル)又は1つまたは複数のタイルを含むように、サブピクチャによって制約される。
ステップ404において、サブピクチャを形成する少なくとも1つのスライスがビットストリームに符号化される。
3.5 復号処理
図5は、本発明の一実施形態によるスライスの一般的な復号処理を示す。各VCL NALユニットについて、デコーダは、現在のスライスに適用されるPPSおよびSPSを決定する。通常、現在のピクチャに使用されているPPSとSPSの識別子を決定する。例えば、スライスのピクチャヘッダは、使用中のPPSの識別子をシグナリングする。このPPS識別子に関連付けられたPPSは、別の識別子(SPSの識別子)を使用してSPSも参照する。
ステップ501において、デコーダはサブピクチャパーティションを決定し、例えば、サブピクチャレイアウトを記述/指示するパラメータセットを構文解析することによって、ピクチャ/フレームのサブピクチャのサイズ、典型的にはその幅と高さを決定する。VVC7およびVVC7のこの部分に準拠する実施形態では、このサブピクチャパーティションを決定するための情報を含むパラメータセットはSPSである。第2のステップ502において、デコーダは、ピクチャのタイルへのパーティショニングに関連する1つのパラメータセットNALユニット(又は非VCL NALユニット)のシンタックス要素を解析する。例えば、VVC7準拠ストリームの場合、タイルパーティショニングシグナリングは、PPS NALユニット内にある。この決定ステップの間、デコーダは、各サブピクチャに存在するタイルの特性を記述/定義する変数のセットを初期化する。例えば、i番目のサブピクチャについて以下の情報を決定することができる(図6のステップ601参照)。
・ サブピクチャがタイルのフラクション、すなわち部分タイルを含むかどうかを示すフラグ(図6のステップ603参照)
・ サブピクチャ内のタイルの数を示す整数値(図6のステップ602)
・ サブピクチャの幅をタイル単位で指定する整数値(図6のステップ604)
・ サブピクチャの高さをタイル単位で指定する整数値(図6のステップ604)
・ ラスタスキャン順序でサブピクチャ内に存在するタイルインデックスのリスト(図6のステップ605)
この図6は、本発明の一実施形態によるスライスパーティショニングのシグナリングを示しており、これは、符号化処理および復号処理の両方で使用することができる判定ステップを含む。
ステップ503において、デコーダは各サブピクチャのスライスパーティショニングを推論(すなわち、導出または決定)するために、スライスパーティションのシグナリング(1つの非VCL NALユニット内、例えば、典型的にはVVC7のためのPPS内)および以前に決定された情報に依存する。具体的には、デコーダは、スライスの数、スライスのうちの1つまたは複数の高さおよび幅を推論(すなわち、導出または決定)することができる。デコーダは、スライスヘッダ内に存在する情報を取得して、スライスデータ内に存在するCTBの復号位置を決定することもできる。
最後のステップ504では、デコーダがステップ503で決定された位置でピクチャを形成するサブピクチャのスライスを復号する。
パーティショニングのシグナリング
3.6 スライスパーティショニングのシグナリング
本発明の一実施形態によれば、スライスはピクチャのタイル内の整数個の完全および連続的なCTU行又は列、または整数個の完全タイル、から構成することが可能である(後者の可能性が部分タイルが連続的なCTU行又は列を含む限り、スライスが部分タイルを含むことが可能であることを意味する)。
使用のために、スライスの2つのモード、すなわちラスタースキャンスライスモードおよび矩形スライスモードをサポート/提供することもできる。ラスタスキャンスライスモードでは、スライスがピクチャのタイルラスタスキャン順序の完全タイルのシーケンスを含む。矩形スライスモードでは、スライスがピクチャの矩形領域を集合的に形成する複数の完全タイル、又はピクチャの矩形領域を集合的に形成する1つのタイルの複数の連続した完全CTU行(又は列)のいずれかを含む。矩形スライス内のタイルは、そのスライスに対応する矩形領域内でタイルラスタスキャン順序でスキャンされる。
スライス構造(レイアウトおよび/またはパーティショニング)を指定するためのVVC7のシンタックスは、サブピクチャに対するVVC7のシンタックスとは無関係である。例えば、スライスパーティショニング(すなわち、ピクチャのスライスへのパーティショニング)は、サブピクチャを参照することなく(すなわち、サブピクチャを形成するために使用されるシンタックス要素を参照することなく)、タイル構造/パーティショニングの上に(すなわち、それに基づいて、またはそれを参照して)行われる。一方、VVC7はサブピクチャにいくつかの制約(すなわち制約)を課し、例えば、サブピクチャは、1つまたは複数のスライスを含まなければならず、スライスヘッダは、そのサブピクチャに関するスライスのインデックスであるslice_addressシンタックス要素(すなわち、サブピクチャ内のスライスのうちのスライスのインデックスなどの関連するサブピクチャについて定義されたインデックス)を含む。VVC7はまた、矩形スライスモードにおいて部分タイルを含むスライスを許容するだけであり、ラスタスキャンスライスモードは部分タイルを含むそのようなスライスを規定しない。VVC7で使用される現在のシンタックスシステムは、設計によってこれらの制約のすべてを実施するわけではなく、したがって、このシンタックスシステムの実装はVVC7明細書/要件に準拠しないビットストリームを生成する傾向があるシステムにつながる。
したがって、本発明の実施形態はサブピクチャレイアウト定義からの情報を使用して、スライスパーティションを指定し、サブピクチャ、タイル、およびスライスシグナリングのためのより良好な符号化効率を提供しようとする。
タイル内に複数のスライス(「タイルフラクション」スライスまたは部分タイルを含むスライスとも呼ばれる)を定義する能力を有するための要件は、全方向ストリーミング要件に由来する。OMAFストリームのBEAMER(Bitstream Extraction And MERging)動作のためにタイル内にスライスを定義する必要があることが確認された。これは「タイルフラクション」スライスが異なるサブピクチャに存在してBEAMER動作を可能にすることができることを意味し、このことは複数のスライスを有する1つの完全なタイルを含むサブピクチャを有することがほとんど意味をなさないことを意味する。
本発明の最初の3つの実施形態(実施形態1、実施形態2および実施形態3)に続いて、サブピクチャに基づくスライスパーティション決定およびシグナリングを定義する。最初の実施形態1は、サブピクチャが複数の「タイルフラクション」スライスを含むことを禁止/禁止/禁止するシンタックスシステムを含むが、2番目の実施例2はサブピクチャが最大1つのタイルを含む場合(すなわち、サブピクチャが複数のタイルを含む場合、そのすべてのスライスは整数個の完全タイルを含む)にのみ許可/許可するシンタックスシステムを含む。実施形態3は、「タイルフラクション」スライスの使用の明示的なシグナリングを提供する。「タイルフラクション」スライスが使用されないとき、それはそのようなスライスに関連するシンタックス要素をシグナリングすることを回避し、それはスライスパーティションのシグナリングの符号化効率を改善することができる。実施形態1~3は、矩形スライスモードにおいてのみタイルフラクションスライスの使用を許可/許可する。
4番目の実施形態4は、最初の3つの実施形態の代替であり、統一シンタックスシステムを使用して、ラスタスキャンおよび矩形スライスモードの両方でタイルフラクションスライスの使用を許可/許可する。5番目の実施形態5は、他の実施形態の代替であり、サブピクチャレイアウト及びスライスパーティショニングは、ビットストリームにおいてシグナリングされず、タイルシグナリングから推論される(すなわち、決定又は導出される)。
実施形態1
最初の実施形態、第1の実施形態では、VVC7のスライスパーティションのためのシンタックスが、正しく実施することが困難な多数の制約を指定することを回避するために、また、スライスパーティショニングのためのパラメータ、例えばスライスのサイズを推論/導出するためにサブピクチャレイアウトに依存するために、修正される。サブピクチャは完全なスライスのセット/グループによって表される(すなわちから構成される)ので、サブピクチャが単一のスライスを含むときに、スライスのサイズを推論することが可能である。同様に、サブピクチャ内のスライスの数およびサブピクチャ内の以前に処理/遭遇したスライスのサイズから、最後のスライスのサイズを推論/導出/決定することができる。
実施形態1では、スライスが全部/全体サブピクチャをカバーする(言い換えれば、サブピクチャ内に単一のスライスがある)場合にのみ、スライスがタイルのフラクション/部分(すなわち、部分タイル)を含むことが許される。スライスサイズのシグナリングは、サブピクチャ内に2つ以上のスライスがある場合に必要である。一方、スライスサイズは、サブピクチャ内に1つのスライスが存在する場合のサブピクチャサイズと同じである。その結果、スライスがタイルのフラクションを含む場合、スライスサイズは、(サブピクチャサイズと同じであるため)パラメータセットNALユニットにおいてシグナリングされない。そのため、スライス幅および高さがスライスサイズのシグナリングシナリオの場合のみタイル単位になるように制約することが可能である。
この実施形態のためのPPSのシンタックスは、各サブピクチャに含まれるスライスの数を指定することを含む。スライスの数が1より大きい場合、スライスのサイズ(幅及び高さ)はタイル単位で表される。最後のスライスのサイズは上述のように、サブピクチャレイアウトからシグナリングされず、推論/導出/決定されない。
本実施形態の変形例によれば、PPSシンタックスは以下のセマンティクス(すなわち、定義または関数)をもつ以下のシンタックス要素を含む。
PPSシンタックス
PPSセマンティクス
スライスは、サブピクチャ毎に定義される。”for loop”は、num_slices_in_subpic_minus1シンタックス要素と共に使用され、その特定のサブピクチャ内の正しい数のスライスを形成/処理する。シンタックス要素num_slices_in_subpic_minus1[i]は、スライスの数(iと等しいサブピクチャインデックスを持つサブピクチャ内)から1を引いた数を示し、つまり、シンタックス要素は、サブピクチャ内のスライスの数より1少ない値を示す。0に等しいとき、それは、サブピクチャがサブピクチャサイズに等しいサイズの単一のスライスを含むことを示す。スライスの数が1より大きい場合、スライスのサイズは、整数個のタイルの単位で表される。最後のスライスのサイズは、サブピクチャサイズ(及びサブピクチャ内の他のタイルのサイズ)から推論される。このアプローチでは、シンタックス要素に対して以下のセマンティクスを持つ完全サブピクチャをカバーする場合に、”タイルフラクション”スライスを定義することができる。
pps_num_subpics_minus1プラス1は、PPSを参照する符号化ピクチャ内のサブピクチャの数を指定する。pps_num_subpic_minus1の値がsps_num_subpics_minus1(SPSレベルで定義されるサブピクチャの数)に等しいことは、ビットストリーム適合性の要件である。
1に等しいsingle_slice_per_subpic_flagは、各サブピクチャが1つおよび1つのみの矩形スライスで構成されることを指定する。0に等しいsingle_slice_per_subpic_flagは、各サブピクチャが1つまたは複数の矩形スライスで構成されることを指定する。subpics_present_flagが0に等しいとき、single_slice_per_subpic_flagは0に等しい。single_slice_per_subpic_flagが1に等しい場合、num_slices_in_pic_minus1はsps_num_subpics_minus1(SPSレベルで定義されるサブピクチャの数)と等しいと推測される。
num_slices_in_subpic_minus1[i]プラス1は、i番目のサブピクチャ内の矩形スライスの数を指定する。num_slices_in_subpic_minus1の値は、包括的な、0からMaxSlicesPerPicture-1までの範囲内でなければならず、ここで、MaxSlicesPerPictureはAnnex Aで指定されている。no_pic_partition_flagが1に等しい場合、num_slices_in_subpic_minus1[0]の値は0に等しいと推測される。
このシンタックス要素は、Ceil(log2(num_slices_in_subpic_minus1[SubPicIdx]+1))ビットであるスライスヘッダのslice_addressの長さを決定する(ここで、SubPicIdxはスライスのサブピクチャのインデックスである)。slice_addressの値は、包括的な、0からnum_slices_in_subpic_minus1[SubPicIdx]までの範囲内である。
0に等しいtile_idx_delta_present_flagは、tile_idx_delta値がPPSに存在せず、PPSを参照するピクチャのすべてのサブピクチャ内のすべての矩形スライスがラスタ順序で指定されることを指定する。1に等しいtile_idx_delta_present_flagは、tile_idx_delta値がPPSに存在する可能性があり、PPSを参照するピクチャのすべてのサブピクチャ内のすべての矩形スライスがtile_idx_deltaの値によって示される順序で指定されることを指定する。
slice_width_in_tiles_minus1[i][j]プラス1は、i番目のサブピクチャにおけるタイル列単位のj番目の矩形スライスの幅を指定する。slice_width_in_tiles_minus1[i][j]の値は、包括的な、0からNumTileColumns-1(ここで、NumTileColumnsはタイルグリッド内のタイル列の数)の範囲内にある必要がある。存在しない場合、slice_width_in_tiles_minus1[i][j]の値は、サブピクチャサイズの関数として推論される。
slice_height_in_tiles_minus1[i][j]プラス1は、i番目のサブピクチャにおけるタイル行単位でj番目の矩形スライスの高さを指定する。slice_height_in_tiles_minus1[i][j]の値は、包括的な、0からNumTileRows-1(ここで、NumTileRowsはタイルグリッド内のタイル行の数)までの範囲内である。存在しない場合、slice_height_in_tiles_minus1[i][j]の値は、i番目のサブピクチャサイズの関数として推論される。
tile_idx_delta[i][j]は、i番目のサブピクチャのj番目の矩形スライスと(j+1)番目の矩形スライスとの間のタイルインデックスの差を指定する。tile_idx_delta[i][j]の値は、包括的な、-NumTilesInPic[i]+1~NumTilesInPic[i]-1の範囲内でなければならない(ここで、NumTilesInPic[i]はピクチャ内のタイルの数である。存在しない場合、tile_idx_delta[i][j]の値は0に等しいと推論される。他のすべての場合、tile_idx_delta[i][j]の値は0に等しくない。
したがって、この変形例によれば、
・ サブピクチャは、ピクチャ内の1つまたは複数のスライスの矩形領域である。スライスのアドレスは、サブピクチャに関連して定義される。サブピクチャとそのスライスとの間のこの関連/関係は、各サブピクチャに適用される「for loop」内のスライスを定義するシンタックスシステムに反映される。
・ 設計により、同じサブピクチャ内の2つの異なるタイルから2つ以上のタイルフラクションスライスを有することにつながり得る望ましくないパーティショニングを回避する。
・ タイルおよびサブピクチャパーティショニングの両方からスライスパーティショニングを推論することが可能であり、これはシグナリングの符号化効率を改善する。
・ この変形例のさらなる変形例によれば、スライスパーティショニングのこの推論/導出は、以下の処理を使用して実行される。矩形スライスの場合、包括的な、0からnum_slices_in_pic_minus1までの範囲のiのリストNumCtuInSlice[i]は、i番目のスライスのCTUの数を指定し、包括的な、0からnum_slices_in_pic_minus1までの範囲のiおよび包括的な、0からNumCtuInSlice[i]-1までの範囲のjの行列CtbAddrInSlice[i][j]は、i番目のスライス内のj番目のCTBのピクチャラスタスキャンアドレスを指定し、single_slice_per_subpic_flagが0に等しい場合、次のように導出される。
ここで、関数AddCtbsToSlice(sliceIdx、startX、stopX、startY、stopY)は、スライスのCtbAddrInSliceアレイをSliceIdxに等しいインデックスで満たす。CTB行の垂直アドレスがstartYとstopYとの間にあり、CTB列の水平アドレスがstartXとstopXとの間にある状態で、CTBのラスタスキャン順序でアレイをCTBアドレスで満たす。
この処理は、各サブピクチャに処理ループを適用することを含む。サブピクチャごとに、サブピクチャ内の第1のタイルのタイルインデックスは、サブピクチャの第1のタイルの水平アドレスおよび垂直アドレス(すなわち、subpicTileTopLeftX[i]およびsubpicTileTopLeftX[i]変数)と、タイルパーティション情報によって指定されるタイル列の数とから決定される。この値は、サブピクチャの第1のスライスにおける第1のタイルのインデックスを推論/示す/表す。各サブピクチャに対して、第2の処理ループがサブピクチャの各スライスに適用される。スライスの数は、1にnum_slices_in_subpics_minus1[i][j]変数を加えたものに等しく、PPSにおいて符号化されるか、ビットストリームに含まれる他の情報から推論/導出/決定される。スライスがサブピクチャの最後のものである場合、タイル内のスライスの幅は、タイル内のサブピクチャ幅からスライスの第1のタイルの列の水平アドレスを引いたものにサブピクチャの第1のタイルの列の水平アドレスを加えたものに等しいと推論/推論/導出/決定される。同様に、タイル内のスライスの高さは、タイル内のサブピクチャ高さから、スライスの第1のタイルの行の垂直アドレスを引いたものにサブピクチャの第1のタイルの行の垂直アドレスを加えたものに等しいと推論/推論/導出/決定される。前のスライスの第1のタイルのインデックスは、スライスパーティショニング情報において(例えば、前のスライスの第1のタイルのタイルインデックスとの差として)符号化されるか、又はサブピクチャにおけるタイルのラスタスキャン順序における次のタイルに等しいと推定/推定/導出/決定される。
サブピクチャがタイルのフラクション(すなわち、部分タイル)を含む場合、スライスのCTUにおける幅及び高さは、CTU単位でのサブピクチャの幅及び高さに等しいと推定/推定/導出/決定される。CtbAddrInSlice[sliceIdx]アレイは、ラスタスキャン順序でサブピクチャのCTUで満たされる。そわない場合、サブピクチャは1つまたは複数のタイルを含み、CtbAddrInSlice[sliceIdx]アレイは、スライスに含まれるタイルのCTUで満たされる。サブピクチャのスライスに含まれるタイルは、タイル列の垂直アドレス、[tileX、tileX + slice_width_in_tiles_minus1[i][j]]の範囲から定義される垂直アドレス、およびタイル列の水平アドレス、[tileY、tileY + slice_height_in_tiles_minus1[i][j]]の範囲から定義される水平アドレス、を有するタイルであり、ここでtileXは、スライスの第1のタイルのタイル列の垂直アドレスであり、tileYは、スライスの第1のタイルのタイル行の水平アドレスであり、サブピクチャ内のスライスのjインデックスおよびiサブピクチャインデックス。
最後に、スライスに対する処理ループは、サブピクチャの次のスライスにおける第1のタイルを決定する決定ステップを含む。タイルインデックスオフセット(tile_idx_delat[i][j])が符号化されると(tile_idx_delta_present_flag[i]は1に等しい)、次のスライスのタイルインデックスは、現在のスライスの第1のタイルのインデックスにタイルインデックスオフセット値の値を加えたものに等しく設定される。そわない場合(すなわち、タイルインデックスオフセットが符号化されていない場合)、tileIdxはサブピクチャの第1のタイルのタイルインデックスに、ピクチャ内のタイル列の数とタイル単位の高さとの積を加えたものから、現在のスライスの1を引いたものに等しく設定される。
さらなる変形例によれば、サブピクチャが部分タイルを含む場合、PPS内のサブピクチャに含まれるスライスの数をシグナリングする代わりに、サブピクチャは、この部分タイルからなると推論/推論/導出/決定される。例えば、これを行うために、以下の代替PPSシンタックスが代わりに使用される可能性がある。
代替のPPSシンタックス
さらなる変形例では、サブピクチャがタイルのフラクションを表す(すなわち、サブピクチャが部分タイルを含む)場合、サブピクチャ内のスライスの数は1に等しいと推論される。シンタックス要素の符号化データサイズは、タイルフラクションを表すサブピクチャの数(すなわち、部分タイルを含むサブピクチャの数)が増加することにつれて、さらに低減され、ストリームの圧縮を改善する。PPSのシンタックスは、たとえば次のようになる。
num_slices_in_subpic_minus1[i]の新しいセマンティック/定義は次のとおりである。
num_slices_in_subpic_minus1[i]プラス1は、i番目のサブピクチャ内の矩形スライスの数を指定する。num_slices_in_subpic_minus1の値は、包括的な、0からMaxSlicesPerPicture-1までの範囲内であり、ここで、MaxSlicesPerPictureはAnnex Aで指定されている。存在しない場合、num_slices_in_subpic_minus1[i]の値は、包括的な、0からpps_num_subpic_minus1までの範囲内のiに対して0に等しいと推測される。
tileFractionSubpicture[i]変数は、i番目のサブピクチャがタイルのフラクション(部分タイル)をカバーするかどうか、すなわち、サブピクチャのサイズがサブピクチャの最初のCTUが属するタイルよりも厳密に小さい(すなわち、小さい)かどうかを指定する。
デコーダは、サブピクチャレイアウト及びタイルグリッド情報からこの変数を次のように決定する:サブピクチャの上部及び下部水平境界の両方がタイル境界である場合、tileFractionSubpicture[i]は0に等しく設定される。対照的に、上部または下部水平サブピクチャ境界の少なくとも1つがタイル境界でない場合、tileFractionSubpicture[i]は1に等しく設定される。
さらに別の変形例では、slice_width_in_tiles_minus1[i][j]およびslice_height_in_tiles_minus1[i][j]の存在、またはその欠如は、タイル単位でのサブピクチャの幅と高さから推測される。例えば、変数subPictureWidthInTiles[i]およびsubPictureHeightInTiles[i]は、タイル単位でi番目のサブピクチャの幅および高さをそれぞれ定義する。サブピクチャがタイルのフラクションである場合、サブピクチャの幅は1に設定され(タイルのフラクションはタイルの幅に等しい幅を有するので)、高さは、サブピクチャの高さが1つの完全なタイルよりも低いことを示すために、慣例によって0に設定される。任意の他のプリセット/所定の値を使用することができ、主な制約は、2つの値がタイル内の可能なサブピクチャサイズを表さないように設定/決定されることであることを理解されたい。例えば、値は、ピクチャ内のタイルの最大数に1を加えたものに等しく設定されてもよい。その場合、タイルの最大数よりも大きいサブピクチャの幅または高さは可能ではないため、サブピクチャはタイルのフラクションであると推論することができる。
これらの変数は、タイルパーティショニングが決定されると初期化される(通常、num_exp_tile_columns_minus1、num_exp_tile_rows_minus1、tile_column_width_minus1[i]、およびtile_row_height_minus1[i]シンタックス要素に基づいている)。処理は、各サブピクチャに対して処理ループを実行することを含むことができる。すなわち、各サブピクチャについて、サブピクチャがタイルのフラクションをカバーする場合、サブピクチャのタイル単位の幅および高さは、それぞれ1および0に設定される。そわなければ、サブピクチャのタイルにおける幅の決定は、次のように決定される:サブピクチャの最初のCTUのCTU列の水平アドレス(i番目のサブピクチャに対するサブピクチャレイアウトシンタックス要素subpic_ctu_top_left_x[i]から決定される)が、サブピクチャにおける最初のタイルのタイル列の水平アドレスを決定するために使用される。
次に、タイルグリッドの各タイル列について、タイル列の最右CTU列および最左の水平アドレスが決定される。サブピクチャの第1のCTUのCTU列の水平アドレスがこれら2つのアドレスの間にある場合、水平アドレスは、サブピクチャ内の第1のタイルのタイル列の水平アドレスを示す。同じ処理が、サブピクチャの最右のCTU列を含むタイル列の水平アドレスを決定するために適用される。右端のCTU列は、サブピクチャの最初のCTUのCTU列の水平アドレスと、CTU単位でのサブピクチャの幅(subpic_width_minus1[i]+1)と、の和に等しいCTU列の水平アドレスを有する。タイル内のサブピクチャの幅は、最後のCTU列のタイル列の水平アドレスとサブピクチャの最初のCTUの水平アドレスとの差に等しい。同じ原理が、タイル単位でサブピクチャの高さを決定するときに適用される。処理は、サブピクチャの最初のCTUのタイル行とサブピクチャの最後のCTU行との垂直アドレスの差として、タイル内のサブピクチャ高さを決定する。
1つのさらなる変形例では、サブピクチャ内のタイルの数がサブピクチャ内のスライスの数と等しい場合、slice_width_in_tiles_minus1[i][j]およびslice_height_in_tiles_minus1[i][j]は存在せず、0に等しいと推測される。実際に、等価の場合、サブピクチャ及びスライス制約は、各スライスが正確に1つのタイルを含むことを課す。サブピクチャ内のタイルの数は、サブピクチャがタイルフラクションである場合に1に等しい(tileFractionSubpicture[i]は1に等しい)。そわなければ、subPictureHeightInTiles[i]とsubPictureWidthInTiles[i]の積に等しい。
別のさらなる変形例では、タイル単位におけるサブピクチャの幅が1に等しい場合、slice_width_in_tiles_minus1[i][j]は存在せず、0に等しいと推論される。
別のさらなる変形例では、タイル単位のサブピクチャの高さが1に等しい場合、slice_height_in_tiles_minus1[i][j]は存在せず、0に等しいと推測される。
さらに別の変形例では、3つの先行するさらなる変形例の任意の組合せが使用される。
以前の変形例のいくつかでは、シンタックス要素の存在がサブピクチャパーティション情報から推測される。サブピクチャパーティショニングが異なるパラメータセットNALユニットで定義される場合、スライスパーティショニングの構文解析は他のパラメータセットNALユニットからの情報に依存する。この依存性により、特定のアプリケーションでの変形例の使用が制限される可能性があり、これは、スライスパーティショニングを含むパラメータセットの構文解析が別のパラメータセットからの情報を格納することなく実行できないためである。パラメータの復号、即ち、シンタックス要素によって符号化された値の決定に関して、この依存性は、デコーダがピクセルサンプルを任意の方法で復号するために使用される全てのパラメータセットを必要とするので、制限ではない(しかし、全ての関連パラメータセットが復号されるのを待たなければならないことから、ある程度のレイテンシがあるかもしれない)。その結果、更なる変形例では、シンタックス要素の存在の推論がサブピクチャ、タイル、及びスライスパーティショニングが同じパラメータセットNALユニット内でシグナリングされるときにのみイネーブルされる。たとえば、タイル単位でi番目のサブピクチャの幅を指定する変数subPictureWidthInTiles[i]、タイル単位でi番目のサブピクチャの高さを指定するsubPictureHeightInTiles[i]、i番目のサブピクチャの最初のタイルの列の水平アドレスを指定するsubpicTileTopLeftX[i]、およびi番目のサブピクチャの最初のタイルの行の垂直アドレスを指定するsubpicTileTopLeftY[i]、は、包括的な、0からpps_num_subpicture_minus1の範囲内のiについて、以下のように決定される。
サブピクチャがタイルのフラクションを含むかどうかを指定するtileFractionSubpicture[i]変数は、次のように導出される。
i番目のサブピクチャにおける矩形スライスの数と、i番目のサブピクチャにおけるk番目のスライスのピクチャレベルスライスインデックスと、を指定するリストSliceSubpicToPicIdx[i][k]は、以下のように導出される。
ここで、
・ CtbToTileRowBd[ctbAddrY]は、垂直CTBアドレス(ctbAddrY)をCTB単位の先頭タイル列境界に変換する
・ CtbToTileColBd[ctbAddrX]は、水平CTBアドレス(ctbAddrX)をCTB単位の左タイル列境界に変換する
・ ColWidth[i]は、CTBにおけるi番目のタイル列の幅である
・ RowHeight[i]は、CTBにおけるi番目のタイル行の高さである
・ tileColBd[i]は、CTBにおけるi番目のタイル列境界の位置である
・ tileRowBd[i]は、CTBにおけるi番目のタイル行境界の位置である
・ NumTileColumnsはタイル列の数である
・ NumTileRowsはタイル行の数である
図7は、上述の実施形態/変形例/さらなる変形例のシグナリングを使用するサブピクチャおよびスライスパーティショニングの例を示す。この例では、ピクチャ700が(1)~(9)とラベル付けされた9つのサブピクチャと、4×5タイルグリッド(太い実線で示されたタイル境界)とに分割される。スライスパーティショニング(各スライスに含まれる領域は、スライス境界の直内側の細い実線で示される)は、サブピクチャ毎に次のようになる:
・ サブピクチャ(1):それぞれ1タイル、2タイル及び3タイルを含む3つのスライス。スライスの高さは1タイルに等しく、その幅はタイル単位でそれぞれ1、2および3である(すなわち、3つのスライスは水平方向に配列されたタイルの列からなる)
・ サブピクチャ(2):等しいサイズの2つのスライスであり、サイズは幅が1タイル、高さが1タイルである(すなわち、2つのスライスの各々は単一のタイルからなる)
・ サブピクチャ(3)~(6):1つの「タイルフラクション」スライス、すなわち、単一の部分タイルからなるスライス
・ サブピクチャ(7):2つのタイルの列のサイズを有する2つのスライス(すなわち、2つのスライスの各々は、垂直方向に配列された2つのタイルの列からなる)
・ サブピクチャ(8):3タイルの行の1スライス
・ サブピクチャ(9):1タイルの行と2タイルの行のサイズを有する2つのスライス
サブピクチャ(1)の場合、2つの最初のスライスの幅および高さが符号化され、最後のスライスのサイズが推定される。
サブピクチャ(2)では、サブピクチャ内に2つのタイルに対して2つのスライスがあるので、2つの最初のスライスの幅及び高さが推論される。
サブピクチャ(3)~(6)については、各サブピクチャ内のスライスの数は1に等しく、各サブピクチャはタイルのフラクションであるので、スライスの幅および高さはサブピクチャサイズに等しいと推測される。
サブピクチャ(7)については、最初のスライスの幅および高さ、ならびに最後のスライスの幅および高さが、サブピクチャサイズから推論される。
サブピクチャ(8)では、サブピクチャ内に単一のスライスがあるので、スライスの幅および高さはサブピクチャサイズに等しいと推測される。
サブピクチャ(9)では、スライスの高さは1に等しいと推定され(タイル内のサブピクチャの高さは1に等しいため)、第1のスライスの幅が符号化され、一方、最後のスライスの幅はサブピクチャの幅から第1のスライスの幅を引いたものに等しい。
実施形態2
2番目の実施形態、実施形態2では、「タイルフラクション」スライス(すなわち、部分タイルであるスライス)がサブピクチャ全体をカバーするという制約/制約が緩和/除去される。その結果、サブピクチャは1つまたは複数のスライスを含むことができ、各スライスは1つまたは複数のタイルを含むが、1つまたは複数の「タイルフラクション」スライスを含むこともできる。
この実施形態では、サブピクチャパーティショニングがスライス位置およびサイズの予測/導出/決定を可能にする/可能にする。
この実施形態の変形例によれば、以下のPPSシンタックスを使用してこれを行うことができる。
PPSシンタックス
たとえば、PPSシンタックスは次のようになる。
シンタックス要素single_slice_per_subpic_flag、tile_idx_delta_present_flag、num_slices_in_subpic_minus1[i]およびtile_idx_delta[i][j]のセマンティクスは、前の実施形態と同じである。
slice_width_minus1およびslice_height_minus1シンタックス要素(パラメータ)は、サブピクチャパーティショニングに応じて、スライスサイズをタイル単位またはCTU単位で指定する。
変数newTileIdxDeltaRequiredは、スライスの最後のCTUがタイルの最後のCTUである場合に1に等しく設定される。スライスが「タイルフラクション」スライスでない場合、newTileIdxDeltaRequiredは、1に等しい。スライスが「タイルフラクション」スライスである場合、スライスがスライス内のタイルの最後のものでない場合、newTileIdxDeltaRequiredは0に設定される。それ以外の場合はタイルの最後になり、newTileIdxDeltaRequiredは1に設定される。
第1の更なる変形例では、サブピクチャが単一のタイルのフラクションタイルスライスを含むように制約/制限される。この場合、サブピクチャが2つ以上のタイルを含む場合、サイズはタイル単位である。そわない場合、サブピクチャは、単一のタイル又はタイルの一部を含む(部分タイル_及びスライス高さはCTU単位で定義される。スライスの幅は必然的にサブピクチャ幅に等しく、したがって、推論することができ、PPSで符号化する必要はない。
slice_width_minus1[i][j]プラス1は、j番目の矩形スライスの幅を指定する。slice_width_in_tiles_minus1[i][j]の値は、包括的な、0からNumTileColumns-1(ここで、NumTileColumnsはタイルグリッド内のタイル列の数である)の範囲内にある必要がある。存在しない場合(すなわち、subPictureWidthInTiles[i]*subPictureHeightInTiles[i]==1またはsubPictureWidthInTiles[i]が1に等しい場合)、slice_width_in_tiles_minus1[i][j]の値は0に等しいと推測される。
slice_height_in_tiles_minus1[i][j]プラス1は、i番目のサブピクチャにおけるj番目の矩形スライスの高さを指定する。slice_height_in_tiles_minus1[i][j]の値は、包括的な、0からNumTileRows-1(ここで、NumTileRowsはタイルグリッド内のタイル行の数である)の範囲内である。存在しない場合(すなわち、subPictureHeightInTiles[i]が1に等しい、およびnum_slices_in_subpic_minus1[i]==0の場合)、slice_height_in_tiles_minus1[i][j]の値は0に等しいと推測される。
0~pps_num_subpic_minus1の範囲内のi、および0~num_slices_in_subpic_minus1[i]の範囲内のjについて、i番目のサブピクチャのj番目の矩形スライスのタイル単位の幅を指定する変数SliceWidthInTiles[i][j]、i番目のサブピクチャのj番目の矩形スライスのタイル単位の高さを指定するSliceHeightInTiles[i][j]、i番目のサブピクチャのj番目の矩形スライスのCTB単位の高さを指定するSliceHeightInCTU[i][j]、は以下のように導出される。
このアルゴリズムでは、SliceHeightInCTU[i][j]は、sliceHeightInTiles[i][j]が0に等しい場合にのみ有効である。
代替の更なる変形例では、サブピクチャは、全てのサブピクチャのスライスがタイルフラクションスライスでなければならないという制限/制約/条件を伴って、幾つかのタイルからのタイルフラクションスライス(すなわち、2つ以上のタイルからの部分タイルを含むスライス)を含むことができる。したがって、第1のタイルの部分タイルを含む第1のタイルフラクションスライスと、第1のタイルとは異なる第2のタイルの部分タイルを含む第2のタイルフラクションスライスとを含み、別のスライスが第3の(異なる)タイル全体をカバーする(すなわち、第3のタイルが完全/全体タイルである)サブピクチャを定義することは不可能である。この場合、サブピクチャがサブピクチャのタイルよりも多くのスライスを含む場合、slice_height_minus1[i][j]シンタックス要素はCTU単位であり、slice_width_minus1[i][j]はCTU単位のサブピクチャ幅と等しいと推測される。そわない場合、スライスのサイズはタイル単位である。
さらなる変形例では、スライスPPSシンタックスは以下の通りである。
このさらなる変形例では、スライスがCTU単位で定義されるかどうかに応じて、別個のシンタックス要素がタイル単位でスライス幅および高さを、またはCTU単位でスライス高さを定義することを除いて、同じ原理が適用される。スライスの幅および高さは、スライスがタイル単位でシグナリングされる場合には、slice_width_in_tiles_minus1[i][j]とslice_height_in_tiles_minus1[i][j]で定義され、幅がCTU単位である場合には、slice_width_in_ctu_minus1[i][j]が使用される。1に等しい変数sliceInCtuFlag[i]は、i番目のサブピクチャがタイルフラクションスライスのみを含む(すなわち、サブピクチャ内に全部の/完全なタイルスライスがない)ことを示す。0に等しいことは、i番目のサブピクチャが1つまたは複数タイルを含むスライスを含むことを示す。
変数sliceInCtuFlag[i]は、0からpps_num_subpic_minus1の範囲内のiについて、次のように導出される。
sliceInCtuFlag[i]変数の決定は、スライスとサブピクチャパーティショニング情報の間の構文解析依存性を導入する。その結果、変形例では、スライス、タイル、及びサブピクチャパーティショニングが異なるパラメータセットNALユニットでシグナリングされる場合に、sliceInCtuFlag[i]がシグナリングされ、推論されない。
さらなる変形例では、サブピクチャは特定の制約/限定なしに、いくつかのタイルからのタイルフラクションスライスを含むことができる。したがって、第1のタイルの部分タイルを含む第1のタイルフラクションスライスと、第1のタイルとは異なる第2のタイルの部分タイルを含む第2のタイルフラクションスライスとを含み、別のスライスが第3の(異なる)タイル全体をカバーする(すなわち、第3のタイルが完全/全体タイルである)サブピクチャを定義することが可能である。この場合、サブピクチャ内のタイル数が1より大きい場合、フラグは、スライスサイズがCTU単位で指定されているかタイル単位で指定されているかを示す。例えば、PPSの以下のシンタックスは、i番目のサブピクチャのスライスサイズがCTU単位またはタイル単位で表されているか否か、を示すslice_in_ctu_flag[i]シンタックス要素をシグナリングする。0に等しいslice_in_ctu_flag[i]は、slice_width_in_tiles_minus1[i][j]およびslice_height_in_tiles_minus1[i][j]シンタックス要素が存在し、slice_height_in_ctu_minus1[i][j]が存在しないことを示し、すなわち、スライスサイズはタイル単位で表される。1に等しいslice_in_ctu_flag[i]は、slice_height_in_ctu_minus1[i][j]は存在し、slice_width_in_tiles_minus1[i][j]およびslice_height_in_tiles_minus1[i][j]シンタックス要素は存在しない、ことを示し、すなわち、スライスサイズはCTU単位で表される。
図8は、上述の実施形態/変形例/さらなる、のシグナリングを使用するサブピクチャおよびスライスパーティショニングの例を示す。この例では、ピクチャ800は(1)~(6)とラベル付けされた6つのサブピクチャと、4×5タイルグリッド(太い実線で示されたタイル境界)とに分割される。スライスパーティショニング(各スライスに含まれる領域を、スライス境界の直内側の細い実線で示す)は、サブピクチャ毎に次のようになる:
・ サブピクチャ(1):1タイル、2タイル及び3タイルの行のサイズを有する3つのスライス(即ち、水平方向に配列されたタイルの行からなる3つのスライス)
・ サブピクチャ(2):等しいサイズの2つのスライスであり、サイズは1タイルである(すなわち、2つのスライスの各々は単一のタイルからなる)
・ サブピクチャ(3):4つの「タイルフラクション」スライス、すなわち、各々が単一の部分タイルからなる4つのスライス
・ サブピクチャ(4):2つのタイルの列のサイズを有する2つのスライス(すなわち、2つのスライスの各々は、垂直方向に配列された2つのタイルの列からなる)
・ サブピクチャ(5):3タイルの行の1スライス
・ サブピクチャ(6):1タイルの行と2タイルの行のサイズを有する2つのスライス
サブピクチャ(3)の場合、サブピクチャ内のスライスの数は4に等しく、サブピクチャは2つのタイルのみを含む。スライスの幅はサブピクチャ幅に等しいと推定され、スライスの高さはCTU単位で指定される。
サブピクチャ(1)、(2)、(4)、および(5)の場合、スライスの数はサブピクチャ内のタイルよりも少なく、したがって、幅および高さは、必要な場合、すなわち、他の情報から推論/導出/決定することができない場合、タイル単位で指定される。
サブピクチャ(1)の場合、2つの最初のスライスの幅および高さが符号化され、最後のスライスのサイズが推定される。
サブピクチャ(2)では、サブピクチャ内に2つのタイルに対して2つのスライスがあるので、2つの最初のスライスの幅及び高さが推論される。
サブピクチャ(4)の場合、最初のスライスの幅および高さ、ならびに最後のスライスのサイズは、サブピクチャサイズから推論される。
サブピクチャ(5)では、サブピクチャ内に単一のスライスがあるので、幅および高さはサブピクチャサイズに等しいと推測される。
サブピクチャ(5)の場合、スライスの高さは1に等しいと推定され(タイル単位のサブピクチャ高さは1に等しいため)、第1のスライスの幅が符号化され、一方、最後のスライスの幅はサブピクチャの幅から第1のスライスのサイズを引いたものに等しいと推定される。
実施形態3
この3番目の実施形態、実施形態3では、ビットストリームにおいて、タイルフラクションスライスがイネーブルされているか若しくはディスエーブルされているか、を指定する。原理はパラメータセットNALユニット(または非VCL NALユニット)のうちの1つに、「タイルフラクション」スライスの使用が許可されるか否かを示すシンタックス要素を含めることである。
変形例によれば、SPSは「タイルフラクション」スライスが許可されるか否かを示すフラグを含み、したがって、「タイルフラクション」シグナリングは、このフラグが「タイルフラクション」スライスが許可されないことを示す場合にスキップされ得る。例えば、フラグが0に等しい場合、「タイルフラクション」スライスが許可されないことを示す。フラグが1に等しい場合、「タイルフラクション」スライスが許可される。NALユニットは、「タイルフラクション」スライスの位置を示すシンタックス要素を含むことができる。例えば、以下のSPSシンタックス要素およびそのセマンティクスを使用して、これを行うことができる。
SPSシンタックス:タイルフラクションスライスをイネーブル/ディスエーブルする
SPSセマンティクス
sps_tile_fraction_slices_enabled_flagは、符号化されたビデオシーケンスで「タイルフラクション」スライスをイネーブルにするかどうかを指定する。0に等しいsps_tile_fraction_slices_enabled_flagは、スライスは整数個のタイルを含むことを示す。1に等しいsps_tile_fraction_slices_enabled_flagは、スライスが整数個のタイルまたは1つのタイルからの整数個のCTU行を含むことができることを示す。
さらなる変形例では、sps_tile_fraction_slices_enabled_flagがPPSレベルで指定され、「タイルフラクション」スライスの存在を適応的に適用/定義するためのより細分性を提供する。さらに別の変形例では、フラグがピクチャヘッダNALユニット内に配置されて、ピクチャベースでの「タイルフラクション」スライスの存在の適応を可能にする/可能にすることができる。フラグは、より高いレベルのパラメータセットの中で定義される構成を無効にすることを可能にするために、異なる値をもつ複数のNALユニットの中に存在することがある。たとえば、ピクチャヘッダのフラグの値は、SPSの値をオーバーライドする、PPSの値をオーバーライドする。
代替の変形例では、sps_tile_fraction_slices_enabled_flagの値が他のシンタックス要素から制約または推論される可能性がある。たとえば、sps_tile_fraction_slices_enabled_flagは、サブピクチャがビデオシーケンスで使用されていない場合(すなわち、subpics_present_flagが0に等しい)、0に等しいと推論される。
実施形態1および実施形態2の変形例は、同様の方法でシグナリングするタイルフラクションスライスの有無を推論するためにsps_tile_fraction_slices_enabled_flagの値を考慮することができる。例えば、上記のPPSは、以下のように修正することができる。
スライス高さのシグナリングは、sps_tile_fraction_slices_enabled_flagが0に等しい場合にタイル単位で推論される。
実施形態4
VVC7では、タイルフラクションスライスは矩形スライスモードでのみ有効になる。以下に説明する実施形態4は、ラスタスキャンスライスモードにおいてもタイルフラクションスライスの使用を可能にするという利点を有している。これは、スライス境界がVVC7のようにタイル境界に整列するように制約されていないので、符号化されたスライスのビット長をより正確に調整することができる可能性を提供する。
この原理は、スライスパーティショニングを2つの場所で定義する(または関連情報を提供する)ことを含む。パラメータセットは、スライスをタイル単位で定義する。タイルフラクションスライスは、スライスヘッダにおいてシグナリングされる。変形例では、sps_tile_fraction_slices_enabled_flagは1に等しいと事前に決定され、スライスヘッダでシグナリングする「タイルフラクション」が常に存在する。
これを達成するために、実際には、スライスのセマンティクスがVVC7及び前述の実施形態/変形例/更なる変形例のセマンティクスから修正される:スライスは、ピクチャのタイル又は整数個の完全タイルを集合的に表す1つまたは複数のスライスセグメントのセットである。スライスセグメントは、単一のNALユニットに排他的に含まれるピクチャのタイル内の整数個の完全タイル又は整数個の連続する完全CTU行(即ち、「タイルフラクション」)、即ち、1つまたは複数のタイル又は「タイルフラクション」を表す。「タイルフラクション」スライスは、1つのタイルの連続するCTU行のセットである。スライスセグメントは、タイルの全てのCTU行を含むことが可能である。このような場合、スライスセグメントは単一のスライスセグメントを含む。
変形例によれば、任意の以前の実施形態のPPSシンタックスは、タイルフラクション特有のシグナリングを含むように修正される。このようなPPSシンタックス変更の例を以下に示す。
PPSシンタックス
任意の先の実施形態のPPSシンタックスは、タイルフラクション特有のシグナリングを除去するように修正される。たとえば、PPSシンタックスは次のようになる。
シンタックス要素と同じセマンティクスを使用する。
スライスセグメントシンタックス
スライスセグメントNALユニットは、スライスセグメントヘッダおよびスライスセグメントデータからなり、これは、スライスのVVC7NALユニット構造と同様である。以前の実施形態からのスライスヘッダは、スライスヘッダと同じシンタックス要素を有するスライスセグメントヘッダになるが、スライスセグメントヘッダとして、スライス内のスライスセグメントを配置/識別するための追加のシンタックス要素を含む(例えば、PPSに記載/定義される)。
スライスセグメントヘッダは、どのCTU行でスライスセグメントがスライス内で開始するかを指定するためのシグナリングを含む。slice_ctu_row_offsetは、スライス内の最初のCTUのCTUラインオフセットを指定する。
rect_slice_flagが0に等しい場合(つまり、スライスモードがラスタースキャンスライスモード)、CTUラインオフセットは、slice_addressに等しいインデックスを持つタイルの最初の行に対して相対的である。rect_slice_flagが1に等しい場合(つまり、矩形スライスモード)、CTUラインオフセットは、slice_subpic_idで識別されるサブピクチャのslice_addressに等しいインデックスを持つスライスの最初のCTUに対して相対的である。CTUラインオフセットは、可変または固定長符号化を使用して符号化される。固定長の場合、スライス内のCTU行の数はPPSから決定され、シンタックス要素のビット長は、CTU行の数から1を引いたもののlog2に等しい。
スライスセグメントのエンドを示すには2つの方法がある。
第1の方法では、スライスセグメントがスライスセグメント内のCTU行の数(-1)を示す。CTU行の数は、可変長符号化または固定長符号化を使用して符号化される。固定長符号化の場合、スライス内のCTU行の数は、PPSから決定される。シンタックス要素のビット長は、スライス内のCTU行の数の差からCTU行オフセットを引いたもののlog2から1を引いたものに等しい。
スライスヘッダのシンタックスは、たとえば次のようになる。
num_ctu_rows_in_slice_minus1プラス1は、スライスセグメントNALユニットのCTU行の数を指定する。num_ctu_rows_in_slice_minus1の範囲は、0から、スライスに含まれるタイルのCTU行の数から2を引いたもの、までである。
sps_tile_fraction_slices_enabled_flagが1に等しく、num_tiles_in_slice_segment_minus1が0に等しい場合、現在のスライスのCTUの数を指定する変数NumCtuInCurrSliceは、CTU行の数にCTU単位のスライスに存在するタイルの幅を乗算したものに等しい。
第2の方法では、スライスセグメントデータは、各CTU行の終わりに、スライスセグメントが終了するかどうかを指定するためのシグナリングを含む。この第2の方法の利点は、エンコーダが所与のスライスセグメント内のCTUの数を事前に決定する必要がないことである。これは、リアルタイムでスライスヘッダを出力することができるエンコーダのレイテンシを低減し、一方、第1の方法ではスライスヘッダをバッファリングして、スライスセグメントの符号化のエンド時にスライスセグメント内のCTU行の数を示す必要がある。
実施形態5
実施形態5は、サブピクチャレイアウトのシグナリングに対する修正であり、これは、特定の状況における改善につながり得る。実際に、ビデオシーケンスにおけるサブピクチャ又はスライス又はタイルの数を増加させることは、時間的及びイントラ予測メカニズムの有効性/効率を制限/制限する。その結果、ビデオシーケンスの圧縮効率を低下させることができる。この理由のために、サブピクチャレイアウトがアプリケーション要件(例えば、ROIのサイズ)の関数として予め決定/決定/予測/推定され得る確率が高い。符号化処理では、サブピクチャレイアウトに最適なタイルパーティショニングが生成される。最良の場合のシナリオでは、各サブピクチャが正確に1つのタイルを含む。圧縮効率への影響を制限するために、エンコーダはサブピクチャごとに単一スライスを使用することにより、サブピクチャあたりのスライスの数を最小化しようとする。その結果、エンコーダの最良のオプションは、サブピクチャ毎に1つのスライス及び1つのタイルを定義することである。
このような場合、サブピクチャレイアウトとスライスレイアウトは同じである。この実施形態は、そのような特定のケース/シナリオ/状況を示すためにSPSにフラグを追加する。このフラグが1に等しい場合、サブピクチャレイアウトは存在せず、スライスパーティションと同じであると推論/導出/決定することができる。そわなければ、フラグが0に等しい場合、サブピクチャレイアウトは、前の実施形態/変形例/さらなる変形例に関して上述したことに従って、ビットストリームにおいて明示的にシグナリングされる。
変形例によれば、SPSは、この目的のためにsps_single_slice_per_subpictureフラグを含む。
1に等しいsps_single_slice_per_subpictureは、各サブピクチャが単一のスライスを含み、包括的な、0からsps_num_subpics_minus1までの範囲内のiに対してsubpic_ctu_top_left_x[i]、subpic_ctu_top_left_y[i]、subpic_width_minus1[i]およびsubpic_height_minus1[i]はないことを示す。0に等しいsps_single_slice_per_subpictureは、サブピクチャが単一のスライスを含む場合または含まない場合があり、かつ包括的な、0からsps_num_subpics_minus1までの範囲内のiに対してsubpic_ctu_top_left_x[i]、subpic_ctu_top_left_y[i]、subpic_width_minus1[i]、およびsubpic_height_minus1[i]が存在することを示す。
さらに別の変形例によれば、PPSシンタックスは、サブピクチャレイアウトがスライスレイアウトから推論可能であることを示すために、以下のシンタックス要素を含む。
pps_single_slice_per_subpic_flagまたはsps_single_slice_per_subpic_flagのいずれかが1に等しい場合、サブピクチャごとに単一のスライスがある。sps_single_slice_per_subpic_flagが1に等しい場合、スライスレイアウトはSPSになく、pps_single_slice_per_subpic_flagは0に等しくなければならない。次に、PPSは、スライスパーティションを指定する。i番目のサブピクチャはi番目のスライスに対応するサイズおよび位置を有する(すなわち、i番目のサブピクチャおよびi番目のスライスは、同じサイズおよび位置を有する)。
sps_single_slice_per_subpic_flagが0に等しい場合、スライスレイアウトはSPSに存在し、pps_single_slice_per_subpic_flagは1または0に等しい場合がある。sps_single_slice_per_subpic_flagが1に等しい場合、SPSはサブピクチャパーティションを指定する。i番目のスライスは、i番目のサブピクチャに対応するサイズおよび位置を有する(すなわち、i番目のスライスおよびi番目のサブピクチャは、同じサイズおよび位置を有する)。
符号化されたビデオシーケンスに対して同じサブピクチャレイアウトを維持するために、エンコーダは、1に等しいsps_single_slice_per_subpic_flagのSPSを参照するすべてのPPSを、同一のスライスパーティショニングを記述/定義/課すように制約することがある。
変形例では、PPSにタイルごとに1つのスライスがあることを示す別のフラグ(pps_single_slice_per_tile)が提供される。このフラグが1に等しい場合、スライスパーティショニングはタイルパーティショニングと等しい(つまり同じ)と推論される。このような場合、sps_ single_slice_per_subpic_flagが1に等しい場合、サブピクチャおよびスライスパーティショニングはタイルパーティショニングと同じであると推測される。
本発明の実施形態の実施
前述の実施形態/変形例のうちの1つまたは複数は、1つまたは複数の前述の実施形態/変形例の方法ステップを実行するエンコーダまたはデコーダの形態で実装され得る。以下の実施形態は、そのような実装を例示する。
図9aは、本発明の実施形態/変形例による符号化方法のステップを示すフローチャートであり、図9bは、本発明の実施形態/変形例による復号方法のステップを示すフローチャートである。
図9aの符号化方法によれば、9911でサブピクチャパーティション情報が取得され、9912でスライスパーティション情報が取得される。9915で、この取得された情報を使用して、サブピクチャ内のスライスの数、単一のスライスのみがサブピクチャに含まれるかどうか、および/またはスライスがタイルフラクションを含むことができるかどうか、のうちの1つまたは複数を決定するための情報が決定される。この決定された情報を得るためのデータは次に、例えばビットストリームでデータを提供することによって、9919で符号化される。
図9bの復号方法によれば、9961において、データは、サブピクチャ内のスライスの数、単一スライスのみがサブピクチャ内に含まれるかどうか、および/またはスライスがタイルフラクションを含むことができるかどうか、を決定するための情報を取得するために、(例えば、ビットストリームから)復号される。9964において、この取得された情報は、:サブピクチャ内のスライスの数、単一スライスのみがサブピクチャ内に含まれるかどうか、および/またはスライスがタイルフラクションを含むことができるかどうか、のうちの1つまたは複数を決定するために使用される。次に、9967において、この決定およびその結果に基づいて、サブピクチャパーティション情報および/またはスライスパーティション情報が決定される。
前述の実施形態/変形例のいずれも、図10のエンコーダ(例えば、ブロック9402への分割、エントロピー符号化9409、および/またはビットストリーム生成9410を実行するとき)または図11のデコーダ(例えば、ビットストリーム処理9561、エントロピー復号9562、および/またはビデオ信号生成9569を実行するとき)によって使用され得ることが理解される。
図10は、本発明の一実施形態によるエンコーダのブロック図を示す。エンコーダは、接続されたモジュールによって表され、各モジュールは例えば、デバイスの中央処理装置(CPU)によって実行されるべきプログラム命令の形態で、本発明の1つまたは複数の実施形態/変形例による画像のシーケンスの画像を符号化する少なくとも1つの実施形態を実施する方法の少なくとも1つの対応するステップを実施するように適合される。
デジタル画像i0~in9401のオリジナルシーケンスは、エンコーダ9400によって入力として受信される。各デジタル画像は、時には画素(以下、画素と呼ぶ)とも呼ばれるサンプルのセットによって表される。ビットストリーム9410は、符号化処理の実施後にエンコーダ9400によって出力される。ビットストリーム9410は、複数の、スライスなどの画像部分または符号化ユニットのデータを含み、各スライスは、スライスを符号化するために使用される符号化パラメータの符号化値を送信するためのスライスヘッダと、符号化されたビデオデータを含むスライスボディーとを含む。入力デジタル画像i0~in9401は、モジュール9402によってピクセルのブロックに分割される。ブロックは、画像部分に対応し(以下、画像部分はタイル、スライス、スライスセグメント、又はサブピクチャなどの画像の一部の任意のタイプを表す)、可変サイズ(例えば、4×4、8×8、16×16、32×32、64×64、128×128ピクセル、及び幾つかの矩形ブロックサイズも考慮することができる)であってもよい。符号化モードは、各入力ブロックに対して選択される。
空間的予測符号化(イントラ予測)に基づく符号化モードと、時間的予測(例えば、インター符号化、MERGE、SKIP)に基づく符号化モードと、の2つのファミリの符号化モードが提供される。可能な符号化モードがテストされる。モジュール9403は、符号化されるべき所与のブロックが符号化されるべき前記ブロックの近傍の画素から計算された予測子によって予測されるイントラ予測処理を実施する。選択されたイントラ予測子の指示、および所与のブロックとその予測子との間の差は、イントラ符号化が選択された場合に残差を提供するために符号化される。時間的予測は、動き推定モジュール9404および動き補償モジュール9405によって実装される。最初に、参照画像9416のセットの中から参照画像が選択され、符号化されるべき所与のブロックに最も近い領域(画素値類似性に関して最も近い)である、参照領域または画像部分とも呼ばれる参照画像の部分が、動き推定モジュール9404によって選択される。次に、動き補償モジュール9405は、選択された領域を使用して、符号化されるブロックを予測する。選択された参照領域と、残差ブロック/データとも呼ばれる所与のブロックとの間の差は、動き補償モジュール9405によって計算される。選択された参照領域は、動き情報(例えば、動きベクトル)を用いて示される。したがって、両方の場合(空間的予測および時間的予測)において、残差は、元のブロックがスキップモードにない場合に、元のブロックから予測子を減算することによって計算される。モジュール9403によって実施されるイントラ予測では、予測方向が符号化される。モジュール9404、9405、9416、9418、9417によって実施されるインター予測では、そのような動きベクトルを識別するための少なくとも1つの動きベクトルまたは情報(データ)が、時間的予測のために符号化される。インター予測が選択された場合、動きベクトルおよび残差ブロックに関連する情報が符号化される。ビットレートをさらに低減するために、動きが均一であると仮定すると、動きベクトルは、動きベクトル予測子に対する差によって符号化される。動き情報予測子候補のセットからの動きベクトル予測子は、動きベクトル予測符号化モジュール9417によって動きベクトルフィールド9418から得られる。エンコーダ9400はさらに、レート歪み基準などの符号化コスト基準を適用することによって、符号化モードを選択するための選択モジュール9406を含む。冗長性をさらに低減するために、変換モジュール9407によって変換(DCTなど)が残差ブロックに適用され、得られた変換データは、次いで、量子化モジュール9408によって量子化され、エントロピー符号化モジュール9409によってエントロピー符号化される。最後に、符号化されている現在のブロックの符号化された残差ブロックは、それがスキップモードにない場合にビットストリーム9410に挿入され、選択された符号化モードは残差ブロックの符号化を必要とする。
また、エンコーダ9400は、後続の画像の動き推定のための参照画像(例えば、参照画像/ピクチャ9416内のもの)を生成するために、符号化画像の復号を実行する。これは、ビットストリームを受信するエンコーダ及びデコーダが同じ参照フレームを有することを可能にする(例えば、再構成された画像又は再構成された画像部分が使用される)。逆量子化(「逆量子化」)モジュール9411は、量子化されたデータの逆量子化(「逆量子化」)を実行し、その後、逆変換モジュール9412によって実行される逆変換が続く。イントラ予測モジュール9413は予測情報を使用して、所与のブロックにどの予測子を使用すべきかを決定し、動き補償モジュール9414は、モジュール9412によって得られた残差を、参照画像9416のセットから得られた参照領域に実際に加算する。その後、モジュール9415によってポストフィルタリングが適用され、画素の再構成フレーム(画像または画像部分)をフィルタリングして、参照画像9416のセットに対する別の参照画像を得る。
図11は、本発明の一実施形態による、エンコーダからデータを受信するために使用され得るデコーダ9560のブロック図を示す。デコーダは、接続されたモジュールによって表され、各モジュールは例えば、デバイスのCPUによって実行されるプログラム命令の形態で、デコーダ9560によって実施される方法の対応するステップを実施するように適合される。
デコーダ9560は、符号化ユニット(例えば、画像部分、ブロックまたは符号化ユニットに対応するデータ)を含むビットストリーム9561を受信し、各符号化ユニットは、符号化パラメータに関する情報を含むヘッダと、符号化されたビデオデータを含むボディーと、から構成される。図10に関して説明したように、符号化されたビデオデータはエントロピー符号化され、動き情報(例えば、動きベクトル予測子のインデックス)は所与の画像部分(例えば、ブロックまたはCU)について、所定のビット数で符号化される。受信された符号化ビデオデータは、モジュール9562によってエントロピー復号される。次いで、残差データは、モジュール9563によって逆量子化され、次いで、逆変換がモジュール9564によって適用され、ピクセル値を得る。
符号化モードを示すモードデータもエントロピー復号され、このモードに基づいて、画像データの符号化ブロック(ユニット/セット/グループ)に対してイントラタイプ復号またはインタータイプ復号が行われる。イントラモードの場合、イントラ予測子はビットストリームにおいて指定されたイントラ予測モードに基づいてイントラ予測モジュール9565によって決定される(例えば、イントラ予測モードは、ビットストリームにおいて提供されるデータを使用して決定可能である)。モードがインターモードである場合、エンコーダによって使用される参照領域を見つける(識別する)ために、動き予測情報がビットストリームから抽出/取得される。動き予測情報は例えば、参照フレームインデックスと、動きベクトル残差と、を含む。動きベクトル予測子は動きベクトルを得るために、動きベクトル復号モジュール9570によって動きベクトル残差に加算される。動きベクトル復号モジュール9570は、動き予測によって符号化された各画像部分(例えば、現在のブロックまたはCU)に対して動きベクトル復号を適用する。現在のブロックの動きベクトル予測子のインデックスが得られると、画像部分(例えば、現在のブロックまたはCU)に関連する動きベクトルの実際の値を復号し、モジュール9566によって動き補償を適用するために使用することができる。復号された動きベクトルによって示される参照画像部分は、モジュール9566が動き補償を実行することができるように、参照画像9568のセットから抽出/取得される。動きベクトルフィールドデータ9571は後に復号される動きベクトルの予測に使用されるために、復号された動きベクトルで更新される。最後に、復号されたブロックが得られる。適切な場合、ポストフィルタリングは、ポストフィルタリングモジュール9567によって適用される。復号されたビデオ信号9569が最終的に得られ、デコーダ9560によって提供される。
図12は、本発明の1つまたは複数の実施形態を実施することができるデータ通信システムを示す。データ通信システムは、データ通信ネットワーク9200を介して、データストリーム9204のデータパケットを受信装置、この場合はクライアント端末9202に送信するように動作可能な送信装置、この場合はサーバ9201を含む。データ通信ネットワーク9200は、ワイドエリアネットワーク(WAN)またはローカルエリアネットワーク(LAN)であってもよい。このようなネットワークは例えば、無線ネットワーク(Wifi /802.11aまたはbまたはg)、イーサネットネットワーク、インターネットネットワーク、または幾つかの異なるネットワークから構成される混合ネットワークであってもよい。本発明の特定の実施形態では、データ通信システムがサーバ9201が同じデータコンテンツを複数のクライアントに送信するデジタルテレビ放送システムであってもよい。サーバ9201によって提供されるデータストリーム9204は、ビデオおよびオーディオデータを表すマルチメディアデータから構成されてもよい。オーディオおよびビデオデータストリームは、本発明のいくつかの実施形態では、それぞれマイクロフォンおよびカメラを使用してサーバ9201によってキャプチャされ得る。いくつかの実施形態において、データストリームはサーバ9201上に格納されてもよく、あるいは別のデータプロバイダからサーバ9201によって受信されてもよく、あるいはサーバ9201で生成されてもよい。サーバ9201は特に、エンコーダへの入力として提示されるデータのよりコンパクトな表現である送信のための圧縮ビットストリームを提供するために、ビデオおよびオーディオストリームを符号化するためのエンコーダを備える。伝送されるデータの品質対伝送されるデータの量のより良好な比を得るために、ビデオデータの圧縮は例えば、高効率ビデオ符号化(HEVC)フォーマット、またはH.264/AVC(Advanced video Coding)フォーマット、またはVVC(Versatile video Coding)フォーマットに従ってもよい。クライアント9202は、送信されたビットストリームを受信し、再構成されたビットストリームを復号して、表示装置上でビデオ画像を再生し、スピーカによってオーディオデータを再生する。この実施形態ではストリーミングシナリオが考慮されるが、本発明のいくつかの実施形態では、エンコーダとデコーダとの間のデータ通信が例えば、光ディスクなどの媒体記憶デバイスを使用して実行され得ることが理解されるのであろう。本発明の1つまたは複数の実施形態では、ビデオ画像が画像の再構成されたピクセルに適用して最終画像内にフィルタリングされたピクセルを提供するために、補償オフセットを表すデータと共に送信され得る。
図13は、本発明の少なくとも1つの実施形態/変形例を実施するように構成された処理デバイス9300を概略的に示す。処理装置9300は、マイクロコンピュータ、ワークステーション、ユーザ端末、またはライトポータブルデバイスなどのデバイスとすることができる。デバイス/装置9300は:-CPUで示されるマイクロプロセッサなどの中央処理装置9311;-デバイス9300を動作させるおよび/または本発明を実施するためのコンピュータプログラム/命令を格納するためのROMで示される読み出し専用メモリ9307;-本発明の実施形態/変形例の方法の実行可能コード、ならびに本発明の実施形態/変形例に従ったデジタル画像のシーケンスを符号化する方法および/またはビットストリームを復号する方法を実施するために必要な変数およびパラメータを記録するために適合されたレジスタを格納するための、RAMで示されるランダムアクセスメモリ9312;および処理されるデジタルデータが送受信される通信ネットワーク9303に接続された通信インターフェース9302、に接続された通信バス9313を備える。
任意選択で、装置9300は以下の構成要素:本発明の1つまたは複数の実施形態/変形例の方法を実施するためのコンピュータプログラム、および本発明の1つまたは複数の実施形態/変形例の実施中に使用または生成されるデータ、を格納するための、ハードディスクなどのデータ格納手段9304;ディスク9306(例えば、記憶媒体)のためのディスクドライブ9305、ディスク9306からデータを読み取るか、または前記ディスク9306にデータを書き込むように適合されたディスクドライブ9305;またはキーボード9310、タッチスクリーン、または任意の他の指示/入力手段によって、データを表示し、かつ/またはユーザとのグラフィカルインターフェースとして働くスクリーン9309、も含むことができる。装置9300は例えば、ディジタルカメラ9320またはマイクロフォン9308などの様々な周辺機器に接続することができ、各周辺機器は、マルチメディアデータを装置9300に供給するように入力/出力カード(図示せず)に接続される。通信バス9313は、装置9300に含まれる、またはそれに接続された様々な要素間の通信および相互運用性を提供する。バスの表現は限定されず、特に、中央処理装置9311は、装置9300の任意の要素に直接または装置9300の別の要素によって命令を通信するように動作可能である。ディスク9306は例えばコンパクトディスク(CD-ROM)、書き換え可能またはそわない、ZIPディスクまたはメモリカードなどの任意の情報媒体に置き換えることができ、一般的に言えば、マイクロコンピュータまたはプロセッサによって読み取ることができる情報格納手段によって、装置に統合または非統合され、可能であればリムーバブルであり、実行がデジタル画像のシーケンスを符号化する方法および/または実施される本発明によるビットストリームを復号する方法を可能にする1つまたは複数のプログラムを格納するように構成される。実行可能コードは、読み出し専用メモリ9307、ハードディスク9304、または先に説明したような例えばディスク9306などのリムーバブルデジタル媒体のいずれかに格納することができる。変形例によれば、プログラムの実行可能コードは、例えばハードディスク9304内で実行される前に装置9300の格納手段の1つに格納されるために、インターフェース9302を介して、通信ネットワーク9303によって受信することができる。中央処理装置9311は、前述の格納手段の1つに格納された命令で、本発明によるプログラムまたはプログラムのソフトウェアコードの命令または部分の実行を制御し、指示するように構成されている。電源を入れると、例えばハードディスク9304、ディスク9306、または読み出し専用メモリ9307上の不揮発性メモリに格納されているプログラムまたはプログラムが、ランダムアクセスメモリ9312に転送され、その後、プログラムまたはプログラムの実行可能コード、ならびに本発明を実施するために必要な変数およびパラメータを格納するためのレジスタを含む。この実施形態では、装置が本発明を実施するためにソフトウェアを使用するプログラマブル装置である。しかしながら、代替的に、本発明はハードウェア(例えば、特定用途向け集積回路またはASICの形態)で実施されてもよい。
本発明の実施形態の実施
本発明の他の実施形態によれば、前述の実施形態/変形例によるデコーダがコンピュータ、携帯電話(携帯電話)、タブレット、またはコンテンツをユーザに提供/表示することができる任意の他のタイプのデバイス(例えば、ディスプレイ装置)などのユーザ端末に提供されることも理解される。さらに別の実施形態によれば、前述の実施形態/変形例によるエンコーダが、エンコーダが符号化するためのコンテンツをキャプチャして提供するカメラ、ビデオカメラ、またはネットワークカメラ(例えば、閉回路テレビまたはビデオ監視カメラ)も備える画像キャプチャ装置に提供される。2つのこのような実施形態が、図14および15を参照して以下に提供される。
図14は、ネットワークカメラ9452およびクライアント装置9454を備えるネットワークカメラシステム9450を図示する図である。ネットワークカメラ9452は、撮像ユニット9456、符号化ユニット9458、通信ユニット9460、および制御ユニット9462を含む。ネットワークカメラ9452とクライアント装置9454とは、ネットワーク9200を介して相互に通信可能に相互に接続されている。撮像ユニット9456は、レンズおよびイメージセンサ(例えば、電荷結合デバイス(CCD)または相補型金属酸化膜半導体(CMOS))を含み、物体の画像を撮像し、その画像に基づいて画像データを生成する。この画像は静止画像であってもよいし、ビデオ画像であってもよい。撮像ユニットはまた、ズーム手段および/またはパン手段を備えてもよく、これらは、(光学的またはデジタル的に)それぞれズームまたはパンするように適合されている。符号化ユニット9458は、前述の実施形態/変形例のうちの1つまたは複数で説明された前記符号化方法を使用することによって、画像データを符号化する。符号化ユニット9458は、上記の実施形態/変形例で説明した符号化方法の少なくとも1つを用いる。別の例として、符号化ユニット9458は、前述の実施形態/変形例で説明した符号化方法の組合せを使用することができる。ネットワークカメラ9452の通信ユニット9460は、符号化ユニット9458により符号化された符号化画像データをクライアント装置9454に送信する。さらに、通信ユニット9460は、クライアント装置9454からのコマンドを受信してもよい。コマンドは、符号化ユニット9458による符号化のためのパラメータを設定するコマンドを含む。制御ユニット9462は、通信ユニット9460が受信したコマンドやユーザ入力に応じて、ネットワークカメラ9452内の他のユニットを制御する。クライアント装置9454は、通信ユニット9464と、復号ユニット9466と、制御ユニット9468とを備える。クライアント装置9454の通信ユニット9464は、ネットワークカメラ9452にコマンドを送信してもよい。さらに、クライアント装置9454の通信ユニット9464は、ネットワークカメラ9452から符号化画像データを受信する。復号ユニット9466は、前述の実施形態/変形例のうちの1つまたは複数で説明された前記復号方法を使用することによって、符号化画像データを復号する。別の例として、復号ユニット9466は、前述の実施形態/変形例で説明した復号方法の組合せを使用することができる。クライアント装置9454の制御ユニット9468は、通信ユニット9464が受信したユーザ操作やコマンドに従って、クライアント装置9454内の他のユニットを制御する。また、クライアント装置9454の制御ユニット9468は、復号ユニット9466により復号された画像を表示するように、表示装置9470を制御してもよい。また、クライアント装置9454の制御ユニット9468は、ネットワークカメラ9452のパラメータの値、例えば、符号化ユニット9458による符号化のためのパラメータの値を指定するGUI(Graphical User Interface)を表示するように、表示装置9470を制御してもよい。また、クライアント装置9454の制御ユニット9468は、表示装置9470によって表示されるGUIに対するユーザの操作入力に応じて、クライアント装置9454内の他のユニットを制御してもよい。また、クライアント装置9454の制御ユニット9468は、表示装置9470によって表示されるGUIに対するユーザ操作入力に応じて、ネットワークカメラ9452のパラメータの値を指定するコマンドをネットワークカメラ9452に送信するように、クライアント装置9454の通信ユニット9464を制御してもよい。
図15は、スマートフォン9500を示す図である。スマートフォン9500は、通信ユニット9502と、復号/符号化ユニット9504と、制御ユニット9506と、表示ユニット9508と、を備える。通信ユニット9502は、ネットワーク9200を介して符号化画像データを受信する。復号/符号化ユニット9504は、通信ユニット9502が受信した符号化画像データを復号する。復号/符号化ユニット9504は、前述の実施形態/変形例のうちの1つまたは複数で説明された前記復号方法を使用することによって、符号化画像データを復号する。復号/符号化ユニット9504は、前述の実施形態/変形例で説明した符号化方法または復号方法のうちの少なくとも1つを使用することもできる。別の例では、復号/符号化ユニット9504は、前述の実施形態/変形例で説明した復号方法または符号化方法の組合せを使用することができる。制御ユニット9506は、通信ユニット9502が受信したユーザ操作やコマンドに応じて、スマートフォン9500内の他のユニットを制御する。例えば、制御ユニット9506は復号/符号化ユニット9504によって復号された画像を表示するように、表示ユニット9508を制御する。スマートフォンは、画像またはビデオを記録するための画像記録デバイス9510(例えば、デジタルカメラおよび関連する回路)をさらに備えることができる。このような記録された画像やビデオは、制御ユニット9506の指示の下、復号/符号化ユニット9504によって符号化されてもよい。スマートフォンは、モバイルデバイスの向きを感知するように構成されたセンサ9512をさらに備えてもよい。このようなセンサは、加速度計、ジャイロスコープ、コンパス、全地球測位(GPS)ユニット又は同様の位置センサを含むことができる。そのようなセンサ9512は、スマートフォンが向きを変更するかどうかを判定することができ、そのような情報は、ビデオストリームを符号化するときに使用され得る。
本発明は、実施形態およびその変形例を参照して説明されてきたが、本発明は開示された実施形態/変形例に限定されないことを理解されたい。添付の特許請求の範囲に定義されるように、本発明の範囲から逸脱することなく、様々な変更および修正を行うことができることは、当業者には理解されよう。本明細書(任意の添付の特許請求の範囲、要約書、および図面を含む)に開示された特徴のすべて、および/またはそのように開示された任意の方法またはプロセスのステップのすべては、そのような特徴および/またはステップの少なくともいくつかが相互に排他的である組合せを除いて、任意の組合せで組み合わせることができる。本明細書(任意の添付の特許請求の範囲、要約書、および図面を含む)に開示される各特徴は、特に断らない限り、同じ、同等の、または同様の目的を果たす代替の特徴によって置き換えることができる。したがって、特に断らない限り、開示される各特徴は、同等または同様の特徴の一般的なシリーズの一例にすぎない。
また、上述の比較、決定、推論、評価、選択、実行、実行、または考慮の任意の結果、例えば、符号化、処理、または分割処理中に行われる選択は、ビットストリーム内のデータ、例えば、結果を示すフラグまたは情報に示されるか、またはそれらから決定可能/推論可能であってもよく、その結果、示されるか、または決定された/推論された結果は例えば、復号または分割処理中に、比較、決定、評価、選択、実行、実行、または考慮を実際に実行する代わりに、処理において使用され得ることが理解される。「テーブル」または「ルックアップテーブル」が使用される場合、アレイなどの他のデータ型も、そのデータ型が同じ機能(例えば、異なる要素間の関係/マッピングを表す)を実行できる限り、同じ機能を実行するために使用されてもよいことが理解される。
特許請求の範囲において、単語「有する」は、他の要素又はステップを排除するものではなく、不定冠詞「a」又は「an」は複数を排除するものではない。異なる特徴が相互に異なる従属請求項に記載されているという単なる事実は、これらの特徴の組合せが有利に使用されることができないことを示すものではない。特許請求の範囲に記載されている参照番号は、例示のみを目的としたものであり、クレームの範囲に限定的な影響を及ぼさない。
前述の実施形態/変形例では、説明された機能がハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実施される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶され、またはそれを介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。
コンピュータ可読媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、または例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載される技術の実施のための命令、コードおよび/またはデータ構造を検索するために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセス可能な任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく、一例として、このようなコンピュータ可読記憶媒体はRAM、ROM、EEPROM、CD-ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置、又は他の磁気記憶装置、フラッシュメモリ、又は所望のプログラムコードを命令又はデータ構造の形式で記憶するために使用することができ、コンピュータによってアクセスすることができる他の任意の媒体を含むことができる。また、任意のコネクションは、コンピュータ可読媒体と適切に呼ばれる。例えば、命令が同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、代わりに非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスクおよびディスクはコンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク(登録商標)、およびブルーレイディスクを含み、ここで、ディスクは通常、磁気的にデータを再生し、ディスクは、レーザで光学的にデータを再生する。上記の組合せは、コンピュータ読み取り可能な媒体の範囲内にも含まれるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲート/論理アレイ(FPGA)、または他の同等の集積またはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または本明細書で説明される技術の実装に適した他の任意の構造を指すことがある。さらに、いくつかの態様では、本明細書に記載する機能性が、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供されてもよく、あるいは結合されたコーデックに組み込まれてもよい。また、本技術は、1つまたは複数の回路または論理素子で完全に実装することができる。