以下、あるビデオコーディング構成の状況において、複数の実施形態を説明する。ただし、本発明は、この特定の構成に限定されないことに留意するものとする。たとえば、本発明は、ストリーミングシステム、DVD(デジタル多用途ディスク)プレーヤ、デジタルテレビ受像機、個人用ビデオレコーダ、パソコン上のシステムおよびコンピュータプログラム、携帯用コンピュータおよび通信機器等のビデオコーディングシステムのほか、トランスコーダおよびビデオデータが取り扱われるクラウドコンピューティング構成等のネットワーク要素に適用可能と考えられる。
以下、(デ)コーディングに言及する慣例によって複数の実施形態を説明するが、これは、実施形態がデコーディングおよび/またはエンコーディングに当てはまり得ることを示す。
Advanced Video Coding規格(AVCまたはH.264/AVCと略記可能)は、国際電気通信連合(ITU-T)の電気通信標準化部門のビデオコーディング専門家グループ(VCEG)および国際標準化機構(ISO)/国際電気標準会議(IEC)の動画専門家グループ(MPEG)の合同ビデオチーム(JVT)により策定されたものである。H.264/AVC規格は、両所属標準化機関により発行されており、ITU-T勧告H.264およびISO/IEC国際規格14496-10と称されし、MPEG-4 Part 10 Advanced Video Coding(AVC)としても知られる。H.264/AVC規格には複数のバージョンがあり、それぞれが新しい拡張や機能を仕様に組み込んでいる。これらの拡張には、SVC(Scalable Video Coding)およびMVC(Multiview Video Coding)を含む。
High Efficiency Video Coding規格(HEVCまたはH.265/HEVCと略記可能)は、VCEGおよびMPEGの合同・共同ビデオコーディングチーム(JCT-VC)により策定されたものである。この規格は、両所属標準化機関により発行されており、ITU-T勧告H.265およびISO/IEC国際規格23008-2と称され、MPEG-H Part 2 High Efficiency Video Coding(HEVC)としても知られる。H.265/HEVCの拡張としては、スケーラブル、マルチビュー、3次元、および忠実度範囲の拡張があり、それぞれSHVC、MV-HEVC、3D-HEVC、およびREXTと称し得る。本明細書において、これらの規格仕様の定義、構造、または概念の理解を目的とするH.265/HEVC、SHVC、MV-HEVC、3D-HEVC、およびREXTの参照は、別段の指定のない限り、本願の日付以前に入手可能であったこれら規格の最新版の参照であることが了解されるものとする。
Versatile Video Coding規格(VVC、H.266、またはH.266/VVC)は現在、ISO/IEC MPEGおよびITU-T VCEGの共同である合同ビデオ専門家チーム(JVET)が策定中である。
本項では、実施形態を実現可能なビデオエンコーダ、デコーダ、エンコーディング方法、デコーディング方法、およびビットストリーム構造の例として、H.264/AVC、HEVC、およびそれらの拡張のうちの一部に関するいくつかの主要な定義、ビットストリームおよびコーディング構造、ならびに概念を説明する。H.264/AVCの主要な定義、ビットストリームおよびコーディング構造、ならびに概念の一部は、HEVC規格と同じであるため、以下では一体的に説明する。種々実施形態の態様は、H.264/AVCにもHEVCにも、それらの拡張にも限定されず、説明はむしろ、これらの実施形態の一部または全部を実現可能な1つの考え得る基礎に関して与える。
ビデオコーデックは、入力ビデオを格納/伝送に適した圧縮表現へと変換するエンコーダと、圧縮されたビデオ表現を解凍して可視形態に戻すことができるデコーダとを備え得る。圧縮表現は、ビットストリームまたはビデオビットストリームと称し得る。また、ビデオエンコーダおよび/またはビデオデコーダは、互いに別個であってもよい。すなわち。コーデックを構成する必要はない。エンコーダは、ビデオをよりコンパクトな形態(すなわち、低ビットレート)で表現するため、元のビデオシーケンスに含まれる一部の情報を破棄する場合がある。
ハイブリッドビデオコーデック、たとえば、ITU-T H.264は、2段階でビデオ情報をエンコーディング可能である。まず、たとえば動き補償手段(コード化対象のブロックに密に対応するコード化ビデオフレームのうちの1つにおけるエリアを見つけて示す)または空間手段(特定の様態でコード化されるブロックの周りのピクセル値を使用する)によって、特定の画像エリア(または「ブロック」)のピクセル値が予測される。その後、予測誤差すなわちピクセルの予測ブロックとピクセルの元ブロックとの差がコード化される。これは、ピクセル値の差を特定の変換(たとえば、離散コサイン変換(DCT)またはその変形)により変換し、係数を量子化し、量子化した係数をエントロピコーディングすることによって行われ得る。量子化プロセスの忠実度を変えることによって、エンコーダは、ピクセル表現の精度(画質)と結果としてのコード化ビデオ表現のサイズ(ファイルサイズまたは伝送ビットレート)とのバランスを制御することができる。
時間予測において、予測元は、デコード画像(基準画像としても知られる)である。ブロック内コピー(intra block,IBC、ブロック内コピー予測または現画像参照としても知られる)においては、時間予測と同様に予測が適用されるものの、基準画像は現在の画像であり、予測プロセスではデコードサンプルのみ参照可能である。レイヤ間またはビュー間予測は時間予測と同様に適用され得るが、基準画像はそれぞれ、別のスケーラブルレイヤまたは別のビューからのデコード画像である。相互予測は、ある場合には時間予測のみを表す一方、他の場合には、時間予測ならびに時間予測と同一または同様のプロセスで実行されることを前提としたブロック内コピー、レイヤ間予測、およびビュー間予測のいずれかをまとめて表し得る。相互予測または時間予測は、動き補償または動き補償予測と称する場合がある。
内部予測(intra prediction)では、同じ画像内の隣り合うピクセルが相関する可能性が高い、という事実を利用する。内部予測は、空間または変換領域で実行可能である。すなわち、サンプル値または変換係数を予測可能である。内部予測は通常、相互予測(inter prediction)が適用されない内部コーディング(intra coding)において利用される。
コーディング手順の結果として、動きベクトルおよび量子化された変換係数等の一組のコーディングパラメータがある。多くのパラメータは、空間的または時間的に隣接するパラメータから初めて予測された場合、より効率的にエントロピコーディング可能である。たとえば、動きベクトルが空間的に隣り合う動きベクトルから予測されてもよく、動きベクトル予測子(motion vector predictor)に対する差異のみがコード化されるようになっていてもよい。コーディングパラメータの予測および内部予測は、画像内予測と総称し得る。
エントロピコーディング/デコーディングは、多くの方法で実行可能である。たとえば、コンテキストベースのコーディング/デコーディングが適用されるようになっていてもよく、エンコーダおよびデコーダの両者において、コード化/デコードのコーディングパラメータに基づいてコーディングパラメータのコンテキスト状態を修正する。コンテキストベースのコーディングは、たとえばコンテキスト適応二項演算コーディング(context adaptive binary arithmetic coding,CABAC)であってもよいし、コンテキストベースの可変長コーディング(context-based variable length coding,CAVLC)であってもよいし、同様の如何なるエントロピコーディングであってもよい。この代替または追加として、エントロピコーディング/デコーディングは、ハフマンコーディング/デコーディングまたは指数ゴロム(Exp-Golomb)コーディング/デコーディング等の可変長コーディング方式を用いて実行されるようになっていてもよい。エントロピコード化ビットストリームまたはコードワードからのコーディングパラメータのデコーディングは、パーシングと称し得る。
ビデオコーディング規格は、ビットストリームのシンタックスおよびセマンティクスのほか、エラーなしビットストリームのデコーディングプロセスを規定し得るが、エンコーディングプロセスは規定されない可能性もある。ただし、エンコーダは、適合するビットストリームを生成しさえすればよい。ビットストリームおよびデコーダの適合は、仮想基準デコーダ(Hypothetical Reference Decoder,HRD)により確認可能である。これらの規格には、伝送エラーおよび損失に対処するためのコーディングツールを含んでいてもよいが、エンコーディングにおけるツールの使用は任意であり得、エラーありビットストリームに対するデコーディングプロセスは規定されていない可能性もある。
シンタックス要素(syntax element)は、ビットストリームにおいて表されるデータの要素として定義可能である。シンタックス構造(syntax structure)は、ビットストリームにおいて規定の順序で一体的に存在する0個以上のシンタックス要素として定義可能である。
エンコーダの入力およびデコーダの出力それぞれの基本単位は通常、画像である。また、エンコーダの入力として与えられた画像はソース画像と称し、デコーダによりデコーディングされた画像はデコード画像または再構成画像と称し得る。
ソース画像およびデコード画像はそれぞれ、以下の複数組のサンプルアレイのうちの1つ等、1つまたは複数のサンプルアレイで構成される。
輝度(luma,Y)のみ(白黒)
輝度および2つの彩度(YCbCrまたはYCgCo)
緑、青、および赤(GBR、RGBとしても知られる)
規定されていない他の白黒または三刺激色サンプリングを表すアレイ(たとえば、YZX、XYZとしても知られる)
以下では、これらのアレイを輝度(または、LもしくはY)および彩度と称し得るが、2つの彩度アレイは、使用する実際の色表現方法に関わらず、CbおよびCrと称し得る。使用する実際の色表現方法は、たとえばHEVCまたは同等のもののビデオユーザビリティ情報(VUI)シンタックスを使用して、たとえばコード化ビットストリームにおいて示すことができる。コンポーネント(component)は、3つのサンプルアレイ(輝度および2つの彩度)のうちの1つまたは白黒フォーマットの画像を構成するアレイまたはアレイの単一のサンプルとして定義可能である。
画像(picture)は、フレームまたはフィールドとして定義可能である。フレームは、輝度サンプルおよび場合により対応する彩度サンプルから成る行列を含む。フィールドは、フレームの一組の交互サンプル行であり、ソース信号がインターレースされる場合に、エンコーダ入力として使用可能である。輝度サンプルアレイと比較して、彩度サンプルアレイは存在していなくてもよいし(これにより、白黒サンプリングが使用されてもよい)、サブサンプリングされるようになっていてもよい。
一部の彩度フォーマットは、以下のようにまとめることができる。
白黒サンプリングにおいては、名目上輝度アレイと考えられ得るサンプルアレイが1つだけ存在する。
4:2:0サンプリングにおいては、2つの彩度アレイがそれぞれ、輝度アレイの半分の高さおよび半分の幅を有する。
4:2:2サンプリングにおいては、2つの彩度アレイがそれぞれ、輝度アレイと同じ高さおよび半分の幅を有する。
別個の色平面が使用されない場合の4:4:4サンプリングにおいては、2つの彩度アレイがそれぞれ、輝度アレイと同じ高さおよび幅を有する。
コーディングフォーマットまたは規格によれば、ビットストリームにおいて、サンプルアレイを別個の色平面としてコーディング可能であるとともに、ビットストリームからコード化色平面をそれぞれ別々にデコーディング可能となり得る。別個の色平面が使用される場合は、白黒サンプリングの画像として、(エンコーダおよび/またはデコーダにより)それぞれが別々に処理される。
彩度サブサンプリングが使用される場合(たとえば、4:2:0または4:2:2彩度サンプリング)、輝度サンプルに対する彩度サンプルの場所は、エンコーダ側で(たとえば、前処理ステップまたはエンコーディングの一部として)決定され得る。輝度サンプル位置に対する彩度サンプル位置は、たとえばH.264/AVCまたはHEVC等のコーディング規格で予め規定されていてもよいし、たとえばH.264/AVCまたはHEVCのVUIの一部としてビットストリームに示されていてもよい。
一般的に、エンコーディングの入力として与えられるソースビデオシーケンスは、インターレースソースコンテンツまたはプログレッシブソースコンテンツを表し得る。インターレースソースコンテンツでは、逆パリティのフィールドが異なるタイミングで取り込まれている。プログレッシブソースコンテンツには、取り込まれたフレームを含む。エンコーダは、インターレースソースコンテンツのフィールドを以下2つの方法でエンコーディング可能である。すなわち、一対のインターレースフィールドがコード化フレームへとコーディングされるようになっていてもよいし、フィールドがコード化フィールドとしてコーディングされるようになっていてもよい。同様に、エンコーダは、プログレッシブソースコンテンツのフレームを以下2つの方法でエンコーディング可能である。すなわち、プログレッシブソースコンテンツのフレームがコード化フレームまたは一対のコード化フィールドへとコーディングされるようになっていてもよい。フィールド対または相補フィールド対は、デコーディングおよび/または出力の順序で互いに隣り合い、逆パリティを有し(すなわち、一方がトップフィールドでもう一方ボトムフィールド)、いずれも他の相補フィールド対に属さない2つのフィールドとして規定されていてもよい。一部のビデオコーディング規格または方式によれば、同じコード化ビデオシーケンスにおいて、コード化フレームおよびコード化フィールドを混合可能となる。さらに、コード化フレーム中のフィールドからコード化フィールドを予測すること、および/または、(フィールドとしてコーディングされた)相補フィールド対に対してコード化フレームを予測することがエンコーディングおよび/またはデコーディングにおいて有効となり得る。
分離(partitioning)は、集合を部分集合に分割して、集合の各要素が厳密に部分集合のうちの1つにあるようにすることと定義可能である。ビデオコーディングにおいては、画像または画像の小領域の各要素が厳密に部分集合のうちの1つにあるように、画像または画像の小領域の部分集合への分割として分離が規定され得る。たとえば、HEVCエンコーディングおよび/もしくはデコーディングならびに/またはVVCエンコーディングおよび/もしくはデコーディングに関する分離においては、以下の用語を使用可能である。コーディングブロック(coding block)は、コーディングツリーブロックのコーディングブロックへの分割が分離となるように、ある値Nについて、N×Nブロックのサンプルとして定義可能である。コーディングツリーブロック(coding tree block(CTB))は、コンポーネントのコーディングツリーブロックへの分割が分離となるように、ある値Nについて、N×Nブロックのサンプルとして定義可能である。コーディングツリー単位(coding tree unit(CTU))は、輝度サンプルのコーディングツリーブロック、3つのサンプルアレイを有する画像の彩度サンプルの対応する2つのコーディングツリーブロック、または白黒画像もしくはサンプルのコーディングに用いられる3つの別個の色平面およびシンタックス構造を用いてコーディングされた画像のサンプルのコーディングツリーブロックとして定義可能である。コーディング単位(coding unit(CU))は、輝度サンプルのコーディングブロック、3つのサンプルアレイを有する画像の彩度サンプルの対応する2つのコーディングブロック、または白黒画像もしくはサンプルのコーディングに用いられる3つの別個の色平面およびシンタックス構造を用いてコーディングされた画像のサンプルのコーディングブロックとして定義可能である。許容サイズが最大のCUは、LCU(最大コーディング単位)またはコーディングツリー単位(CTU)と称することができ、ビデオ画像は、重なり合わないLCUに分割される。
HEVCにおいて、CUは、CU内のサンプルの予測プロセスを規定する1つまたは複数の予測単位(PU)と、前記CU内のサンプルの予測誤差コーディングプロセスを規定する1つまたは複数の変換単位(TU)と、から成る。通常、CUは、所定の一組の考え得るCUサイズから選択可能なサイズのサンプルの正方形ブロックから成る。各PUおよびTUは、それぞれ予測プロセスおよび予測誤差コーディングプロセスの粒度を上げるため、より小さなPUおよびTUへとさらに分割可能である。各PUには、当該PU内のピクセルに対して適用すべき予測の種類を規定する予測情報(たとえば、相互予測PUの場合の動きベクトル情報および内部予測PUの場合の内部予測方向性情報)が関連付けられている。
各TUは、当該TU内のサンプルに対する予測誤差デコーディングプロセスを記述した情報(たとえば、DCT係数情報を含む)と関連付け可能である。各CUに対して予測誤差コーディングが適用されるか否かについては通常、CUレベルで示される。予測誤差の残差がCUと関連付けられていない場合は、前記CUに対するTUが存在しないと考えられる。イメージのCUへの分割ならびにCUのPUおよびTUへの分割は通常、ビットストリームで示されるため、デコーダは、これらの単位の意図する構造を再現可能となる。
H.266/VVCのドラフト版では、以下のような分離が適用される。なお、規格が完成するまでのH.266/VVCの後続のドラフト版において、本明細書に記載の内容が進展する可能性もある。画像はHEVCと同様にCTUへと分離されるが、CTUの最大サイズは、128×128に拡大されている。コーティングツリー単位(CTU)はまず、四分木(quaternary tree(quadtreeとしても知られる))構造により分離される。その後、四分木リーフノードは、多分木構造(multi-type tree structure)によってさらに分離可能である。多分木構造には、垂直二項分割、水平二項分割、垂直三項分割、および水平三項分割の4つの分割タイプがある。多分木リーフノードは、コーディング単位(CU)と称する。CU、PU、およびTUは、CUが最大変換長に対して大き過ぎなければ、同じブロックサイズを有する。CTUのセグメント化構造は、二項および三項分割を用いた入れ子の多分木を伴う四分木である。すなわち、最大変換長に対してサイズが大き過ぎるCUに必要な場合を除き、CU、PU、およびTU別個の概念は使用されない。CUは、正方形状または長方形状を有し得る。
VVC等の一部のコーディングフォーマットのエンコーダの出力およびVVC等の一部のコーディングフォーマットのデコーダの入力の基本単位は、ネットワーク抽象化レイヤ(NAL)単位である。パケット指向ネットワーク上の転送または構造化ファイルへの格納の場合、NAL単位は、パケットまたは類似の構造にカプセル化されるようになっていてもよい。
フレーム構造を提供しない伝送または格納環境のNAL単位のストリームに対して、バイトストリームフォーマットが規定可能である。バイトストリームフォーマットでは、各NAL単位の前に始端コードを付加することによって、NAL単位を互いに分離する。NAL単位境界の誤検出を防ぐため、エンコーダは、バイト指向の始端コードエミュレーション防止アルゴリズムを動作させる。これは、始端コードが発生すると考えられる場合に、エミュレーション防止バイトをNAL単位ペイロードに追加する。パケット指向システムとストリーム指向システムとの間の容易なゲートウェイ動作を可能とするため、バイトストリームフォーマットが使用されるか否かに関わらず、始端コードエミュレーション防止が常に実行されるようになっていてもよい。
NAL単位(NAL unit)は、後続のデータの種類の指標と、必要に応じてエミュレーション防止バイトを挟んだRBSPの形態の当該データを含むバイトと、を含むシンタックス構造として定義可能である。未加工バイトシーケンスペイロード(raw byte sequence payload(RBSP))は、NAL単位でカプセル化された整数個のバイトを含むシンタックス構造として定義可能である。RBSPは、空であるか、または、シンタックス要素を含むデータビットにRBSP停止ビットと、0に等しい0個以上の後続ビットとが続く文字列の形態を有する。
NAL単位は、ヘッダおよびペイロードから成る。NAL単位のヘッダは、特にNAL単位の種類を示す。
NAL単位は、ビデオコーディングレイヤ(VCL)NAL単位および非VCL NAL単位に分類可能である。VCL NAL単位は通常、コード化スライスNAL単位である。
非VCL NAL単位は、たとえばシーケンスパラメータ集合、画像パラメータ集合、補完拡張情報(SEI)NAL単位、アクセス単位デリミタ、シーケンスNAL単位の終端、ビットストリームNAL単位の終端、またはフィラーデータNAL単位といった種類のうちの1つであってよい。パラメータ集合がデコード画像の再構成に必要となる場合がある一方、その他の非VCL NAL単位の多くは、デコードサンプル値の再構成に必要ない。
一部のコーディングフォーマットでは、デコーディングまたはデコード画像の再構成に必要なパラメータ値を有し得るパラメータ集合を規定する。パラメータ(parameter)は、パラメータ集合のシンタックス要素として定義可能である。パラメータ集合(parameter set)は、パラメータを含み、たとえば識別子の使用による別のシンタックス構造からの参照または別のシンタックス構造によるアクティブ化が可能なシンタックス構造として定義可能である。
以下、いくつかの種類のパラメータ集合を簡単に説明するが、他の種類のパラメータ集合が存在していてもよく、また、説明する種類のパラメータ集合に実施形態が適用され得るものの、これらには限定されないことが了解される必要がある。コード化ビデオシーケンスによって変化しないパラメータは、シーケンスパラメータ集合(SPS)に含まれていてもよい。デコーディングプロセスに必要となり得るパラメータのほか、シーケンスパラメータ集合には任意選択として、バッファリング、画像出力タイミング、レンダリング、およびリソース予約に重要となり得るパラメータを含むビデオユーザビリティ情報(VUI)を含んでいてもよい。画像パラメータ集合(PPS)には、複数のコード化画像において不変となる可能性が高いそのようなパラメータを含む。画像パラメータ集合には、1つまたは複数のコード化画像のコード化イメージセグメントが参照し得るパラメータを含んでいてもよい。ヘッダパラメータ集合(HPS)は、画像に基づいて変化し得るそのようなパラメータを含むように提案されている。
ビットストリーム(bitstream)は、一連のビットとして定義可能であり、一部のコーディングフォーマットまたは規格においては、NAL単位ストリームまたはバイトストリームの形態であってもよく、1つまたは複数のコード化ビデオシーケンスを構成するコード化画像および関連するデータの表現を構成する。同じファイルや通信プロトコルの同じ接続等、同じ論理チャネル内で第1のビットストリームに第2のビットストリームが続いていてもよい。(ビデオコーディングの状況における)基本ストリーム(elementary stream)は、一連の1つまたは複数のビットストリームとして定義可能である。一部のコーディングフォーマットまたは規格において、最初のビットストリームの終端は、特定のNAL単位により示されていてもよく、これは、ビットストリーム終端(EOB)NAL単位と称し得るものであり、ビットストリームの最後のNAL単位である。
部分ビットストリーム(bitstream portion)は、ビットストリームの連続部分集合として定義可能である。ある状況では、部分ビットストリームが1つまたは複数のシンタックス構造全体からなり、不完全なシンタックス構造を含まないことが必要となり得る。他の状況では、部分ビットストリームがビットストリームの如何なる連続部分を含んでいてもよく、また、不完全なシンタックス構造を含んでいてもよい。
ビットストリームに伴う(たとえば、ビットストリームに伴って示す)表現またはビットストリームのコーディング単位に伴う(たとえば、コード化タイルに伴って示す)表現は、「帯域外」データがビットストリームまたはコード化単位とそれぞれ関連付けられる一方でこれらには含まれない様態での伝送、シグナリング、または格納を表すように、特許請求の範囲および記載の実施形態において使用され得る。ビットストリームまたはビットストリームのコード化単位等に伴うデコーディングという表現は、ビットストリームまたはコード化単位とそれぞれ関連付けられた参照帯域外データ(帯域外伝送、シグナリング、または格納から得られ得る)のデコーディングを表し得る。たとえば、ビットストリームがISOベースメディアファイルフォーマット(ISO Base Media File Format)に準拠したファイル等のコンテナファイルに含まれ、ビットストリームを含むトラックのサンプルエントリのボックス、ビットストリームを含むトラックのサンプル群、またはビットストリームを含むトラックと関連付けられた時限メタデータトラック等のメタデータをビットストリームに関連付ける様態で特定のファイルメタデータがファイルに格納されている場合に、ビットストリームに伴う表現を使用可能である。
コード化ビデオシーケンス(coded video sequence(CVS))は、独立デコーディング可能かつ別のコード化ビデオシーケンスまたはビットストリームの終端が後続するデコーディング順序の一連のコード化画像として定義可能である。この追加または代替として、コード化ビデオシーケンスは、シーケンス終端(EOS)NAL単位と称し得る特定のNAL単位がビットストリームに現れた場合に終端するように規定可能である。
イメージは、独立コーディングおよびデコーディング可能なイメージセグメント(たとえば、スライス、タイル、および/またはタイル群)に分割可能である。このようなイメージセグメントは、並列処理を可能にし得る。本明細書において、「スライス」は、デフォルトのコーディングまたはデコーディング順序で処理される特定個数の基本コーディング単位で構成されたイメージセグメントを表し得る。一方、「タイル」は、タイルグリッドに沿った長方形のイメージ領域として規定されたイメージセグメントを表し得る。タイル群(tile group)は、一群の1つまたは複数のタイルとして定義可能である。イメージセグメントは、H.264/AVC、HEVC、およびVVCにおけるVCL NAL単位等、ビットストリームにおける別個の単位としてコーディングされ得る。コード化イメージセグメントは、ヘッダおよびペイロードを含み得るが、このヘッダは、ペイロードのデコーディングに必要なパラメータ値を含む。スライスのペイロードは、スライスデータと称し得る。
HEVCにおいては、長方形かつ整数個のLCUを含むタイルへと画像を分離可能である。HEVCにおいては、タイルへの分離によって規則的なグリッドが形成されるが、タイルの高さおよび幅は、最大で1LCUだけ互いに異なる。HEVCにおいては、1つの独立スライスセグメントと、同じアクセス単位内で次の独立スライスセグメント(存在する場合)に先行するすべての後続従属スライスセグメント(存在する場合)と、に含まれる整数個のコーディングツリー単位としてスライスが定義される。HEVCにおいては、タイルスキャンにおいて連続的に並べられ、単一のNAL単位に含まれる整数個のコーティングツリー単位として、スライスセグメントが定義される。各画像のスライスセグメントへの分割は、分離である。HEVCにおいては、スライスセグメントヘッダのシンタックス要素の値が先行スライスセグメントの値から推測されないスライスセグメントとして、独立スライスセグメントが定義され、スライスセグメントヘッダの一部のシンタックス要素の値がデコーディング順序の先行独立スライスセグメントの値から推測されるスライスセグメントとして、従属スライスセグメントが定義される。HEVCにおいては、現在のスライスセグメントである独立スライスセグメントまたは現在の従属スライスセグメントに先行する独立スライスセグメントのスライスセグメントヘッダとして、スライスヘッダが定義され、スライスセグメントで表される最初またはすべてのコーディングツリー単位に関するデータ要素を含むコード化スライスセグメントの一部として、スライスセグメントヘッダが定義される。CUは、タイル内または画像内(タイルが使用されない場合)のLCUのラスタースキャンの順序でスキャンされる。CUは、LCU内において特定のスキャン順序を有する。
以上から、ビデオコーディングの規格および仕様によれば、エンコーダは、コード化画像をコード化スライスまたは同等のものに分割可能となり得る。画像内予測は通常、スライス境界を跨ぐと無効になる。このため、スライスは、コード化画像を独立デコーディング可能な要素に分割する方法と見なすことができる。H.264/AVCおよびHEVCにおいて、画像内予測は、スライス境界を跨ぐと無効になる場合がある。これにより、スライスは、コード化画像を独立デコーディング可能な要素に分割する方法と見なすことができるため、伝送用の基本単位と見なされることが多い。多くの場合、エンコーダは、ビットストリームにおいて、スライス境界を跨いでオフとなる画像内予測の種類を示すことができ、デコーダの動作では、たとえば利用可能な予測元を決定する場合にこの情報を考慮する。たとえば、隣接CUが異なるスライスに存在する場合は、隣接CUからのサンプルを内部予測に利用できないものと見なされる場合がある。
VVCの最新のドラフト版すなわちVVC Draft 5においては、画像のスライス、タイル、およびブリックへの分離が以下のように定義されている。
画像は、1つもしくは複数のタイル行ならびに1つもしくは複数のタイル列へと分割される。画像のタイルへの分離によって、(CTUにおける)タイル列幅のリストおよび(CTUにおける)タイル行高さのリストを特徴とし得るタイルグリッドが形成される。
タイルは、タイルグリッドの1つの「セル」すなわち画像の長方形領域を網羅する一連のコーディングツリー単位(CTU)である。タイルは1つまたは複数のブリックに分割されるが、各ブリックは、タイル内の多数のCTU行から成る。複数のブリックに分離されていないタイルについてもブリックと称する。ただし、タイルの真の部分集合であるブリックについては、タイルと称しない。
スライスには、画像の多くのタイルまたはタイルの多くのブリックを含む。スライスは、VCL NAL単位であって、スライスヘッダおよびスライスデータを含む。
スライスの2つのモードすなわちラスタースキャンスライスモードおよび長方形スライスモードがサポートされている。ラスタースキャンスライスモードにおいて、スライスは、画像のタイルラスタースキャンに一連のタイルを含む。長方形スライスモードにおいて、スライスは、画像の長方形領域を全体として構成する画像の多くのブリックを含む。長方形スライス内のブリックは、スライスのブリックラスタースキャンの順序である。
ブリックスキャン(brick scan)は、CTUがブリックのCTUラスタースキャンにおいて連続的に並べられ、タイル内のブリックがタイルのブリックのラスタースキャンにおいて連続的に並べられ、画像のタイルが画像のタイルのラスタースキャンにおいて連続的に並べられた当該画像を分離するCTUの特定の連続した順序として定義可能である。たとえば、コーディング規格においては、コード化スライスNAL単位がそれぞれの最初のCTUについて、ブリックスキャン順序でCTUアドレスが増加する順序となるようにすることが必要となる場合があり、このCTUアドレス(CTU address)は、画像内のCTUラスタースキャンにおいて増加するものと定義可能である。ラスタースキャン(raster scan)は、長方形の2次元パターンを1次元パターンにマッピングするもので、1次元パターンの最初のエントリが2次元パターンの最上行を左から右へスキャンし、その後同様にパターンの2行目、3行目、・・・をそれぞれ左から右へ(下方に)スキャンするものとして定義可能である。
VVC Draft 5において、スライスヘッダは、slice_addressシンタックス要素を含むが、これは、スライスのスライスアドレスを直接的または間接的に示すものであり、スライスアドレスは、画像内の空間的な場所または位置と見なすことができる。ラスタースキャン順序のスライスが使用される場合、slice_addressシンタックス要素は、画像ラスタースキャン順序のタイルインデックスを示す。長方形スライスが使用され、PPSにおいて明示的なslice_address順序が指示されない場合、slice_addressは、スライスの最初のブリックのスキャン順序におけるブリックインデックスを示す。長方形スライスが使用され、PPSにおいて明示的なslice_address順序が示される場合は、PPSにおいて、画像内のslice_address値のスライスの空間的な位置を示す所定のスキャン順序でslice_address値(スライスID値としても知られる)のリストが提供される。
図13aは、画像のラスタースキャンスライス分離の一例を示しており、この画像は、12個のタイルおよび3つのラスタースキャンスライスに分割される。図13bは、画像(18×12個のCTU)の長方形スライス分離の一例を示しており、この画像は、24個のタイル(6つのタイル列および4つのタイル行)および9つの長方形スライスに分割される。図13cは、タイル、ブリック、および長方形スライスに分離された画像の一例を示しており、この画像は、4つのタイル(2つのタイル列および2つのタイル行)、11個のブリック(左上タイルが1つのブリックを含み、右上タイルが5つのブリックを含み、左下タイルが2つのブリックを含み、右下タイルが3つのブリックを含む)、および4つの長方形スライスに分割される。
VVC Draft 5においては、タイル、ブリック、および長方形スライスへの分離が画像パラメータ集合(PPS)に規定されている。以下のシンタックスおよびセマンティクスは、さまざまな実施形態で使用可能なシンタックス要素の例を与える。一実施形態において、エンコーダは、タイル、ブリック、および長方形スライスへの分離を(たとえば、SPSにおける)シーケンスレベルまたは(たとえば、PPSにおける)画像レベルで含むことを決定するとともに、分離を含むシンタックス構造を(たとえば、SPSにおける)シーケンスレベルで示す。一実施形態において、デコーダは、(たとえば、SPSからの)シーケンスレベルのシンタックス構造から、タイル、ブリック、および長方形スライスへの分離を含むシンタックス構造の指定をデコーディングし、それに応じて、指定されたシーケンスレベル(たとえば、SPS)または画像レベル(たとえば、PPS)のシンタックス構造から、タイル、ブリック、および長方形スライスへの分離をデコーディングする。この指定は、たとえば後述のsps_tile_brick_rect_slice_present_flagと同様であってもよい。一実施形態において、エンコーダは、以下のシンタックスおよびセマンティクスに従って、PPSまたはその一部を生成し、および/またはデコーダは、以下のシンタックスおよびセマンティクスに従って、PPSまたはその一部をデコーディングするが、このPPSは、タイル、ブリック、および長方形スライスへの分離を含む。一実施形態において、エンコーダは、以下のシンタックスおよびセマンティクスに従って、SPSまたはその一部を生成し、および/またはデコーダは、以下のシンタックスおよびセマンティクスに従って、SPSまたはその一部をデコーディングするが、このSPSは、タイル、ブリック、および長方形スライスへの分離を含む。
sps_tile_brick_rect_slice_present_flag=0は、このSPSを参照するPPSにtile_brick_rect_slice()が存在することを規定する。sps_tile_brick_rect_slice_present_flag=1は、SPS RBSPシンタックスにtile_brick_rect_slice()が存在することを規定する。
single_tile_in_pic_flag=1は、PPSを参照する各画像にタイルが1つだけ存在することを規定する。single_tile_in_pic_flag=0は、PPSを参照する各画像にタイルが2つ以上存在することを規定する。なお、タイル内でブリックがそれ以上分割されない場合は、タイル全体をブリックと称する。ブリックがそれ以上分割されないタイルを1つだけ含む画像は、単一ブリックと称する。ビットストリームの適合要件として、single_tile_in_pic_flagの値は、CVS内でアクティブ化されたすべてのPPSについて同じであるものとする。
uniform_tile_spacing_flag=1は、タイル列境界および同様にタイル行境界が画像全体で均一に分布し、シンタックス要素tile_cols_width_minus1およびtile_rows_height_minus1によって示されることを規定する。uniform_tile_spacing_flag=0は、タイル列境界および同様にタイル行境界が画像全体で均一に分布していても分布していなくてもよく、シンタックス要素num_tile_columns_minus1およびnum_tile_rows_minus1ならびにシンタックス要素対のリストtile_column_width_minus1[i]およびtile_row_height_minus1[i]によって示されることを規定する。存在しない場合、uniform_tile_spacing_flagの値は、1に等しいものと推測される。
tile_cols_width_minus1+1は、uniform_tile_spacing_flag=1の場合の画像の右端のタイル列を除くタイル列の幅をCTBの単位で規定する。tile_cols_width_minus1の値は、0~PicWidthInCtbsY-1の範囲であるものとする。存在しない場合、tile_cols_width_minus1の値は、PicWidthInCtbsY-1に等しいものと推測される。
tile_rows_height_minus1+1は、uniform_tile_spacing_flag=1の場合の画像の下端のタイル行を除くタイル行の高さをCTBの単位で規定する。tile_rows_height_minus1の値は、0~PicHeightInCtbsY-1の範囲であるものとする。存在しない場合、tile_rows_height_minus1の値は、PicHeightInCtbsY-1に等しいものと推測される。
num_tile_columns_minus1+1は、uniform_tile_spacing_flag=0の場合の画像を分離するタイル列の数を規定する。num_tile_columns_minus1の値は、0~PicWidthInCtbsY-1の範囲であるものとする。single_tile_in_pic_flag=1の場合、num_tile_columns_minus1の値は、0に等しいものと推測される。一方、uniform_tile_spacing_flag=1の場合、num_tile_columns_minus1の値は、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスにおける規定の通りに推測される。
num_tile_rows_minus1+1は、uniform_tile_spacing_flag=0の場合の画像を分離するタイル行の数を規定する。num_tile_rows_minus1の値は、0~PicHeightInCtbsY-1の範囲であるものとする。single_tile_in_pic_flag=1の場合、num_tile_rows_minus1の値は、0に等しいものと推測される。一方、uniform_tile_spacing_flag=1の場合、num_tile_rows_minus1の値は、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスにおける規定の通りに推測される。変数NumTilesInPicは、(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)に等しく設定される。single_tile_in_pic_flag=0の場合、NumTilesInPicは、1より大きいものとする。
tile_column_width_minus1[i]+1は、i番目のタイル列の幅をCTBの単位で規定する。
tile_row_height_minus1[i]+1は、i番目のタイル行の高さをCTBの単位で規定する。
brick_splitting_present_flag=1は、PPSを参照する画像の1つまたは複数のタイルが2つ以上のブリックに分割され得ることを規定する。brick_splitting_present_flag=0は、PPSを参照する画像のタイルが2つ以上のブリックに分割されないことを規定する。
brick_split_flag[i]=1は、i番目のタイルが2つ以上のブリックに分割されることを規定する。brick_split_flag[i]=0は、i番目のタイルが2つ以上のブリックに分割されないことを規定する。存在しない場合、brick_split_flag[i]の値は、0に等しいものと推測される。
uniform_brick_spacing_flag[i]=1は、水平ブリック境界がi番目のタイル全体で均一に分布し、シンタックス要素brick_height_minus1[i]によって示されることを規定する。uniform_brick_spacing_flag[i]=0は、水平ブリック境界がi番目のタイル全体で均一に分布していても分布していなくてもよく、シンタックス要素num_brick_rows_minus1[i]およびシンタックス要素のリストbrick_row_height_minus1[i][j]によって示されることを規定する。存在しない場合、uniform_brick_spacing_flag[i]の値は、1に等しいものと推測される。
brick_height_minus1[i]+1は、uniform_brick_spacing_flag[i]=1の場合のi番目のタイルの下端のブリックを除くブリック行の高さをCTBの単位で規定する。存在する場合、brick_height_minus1の値は、0~RowHeight[i]-2の範囲であるものとする。存在しない場合、brick_height_minus1[i]の値は、RowHeight[i]-1に等しいものと推測される。
num_brick_rows_minus1[i]+1は、uniform_brick_spacing_flag[i]=0の場合のi番目のタイルを分離するブリックの数を規定する。存在する場合、num_brick_rows_minus1[i]の値は、1~RowHeight[i]-1の範囲であるものとする。brick_split_flag[i]=0の場合、num_brick_rows_minus1[i]の値は、0に等しいものと推測される。一方、uniform_brick_spacing_flag[i]=1の場合、num_brick_rows_minus1[i]の値は、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスにおける規定の通りに推測される。
brick_row_height_minus1[i][j]+1は、uniform_tile_spacing_flag=0の場合のi番目のタイルのj番目のブリックの高さをCTBの単位で規定する。
以下の変数が導出され、uniform_tile_spacing_flag=1の場合は、num_tile_columns_minus1およびnum_tile_rows_minus1の値が推測され、0~NumTilesInPic-1の範囲の各iについて、uniform_brick_spacing_flag[i]=1の場合は、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスの呼び出しによって、num_brick_rows_minus1[i]の値が推測される。
リストRowHeight[j]は、0~num_tile_rows_minus1の範囲のjについて、j番目のタイル行の高さをCTBの単位で規定する。
リストCtbAddrRsToBs[ctbAddrRs]は、0~PicSizeInCtbsY-1の範囲のctbAddrRsについて、画像のCTBラスタースキャンにおけるCTBアドレスからブリックスキャンにおけるCTBアドレスへの変換を規定する。
リストCtbAddrBsToRs[ctbAddrBs]は、0~PicSizeInCtbsY-1の範囲のctbAddrBsについて、ブリックスキャンにおけるCTBアドレスから画像のCTBラスタースキャンにおけるCTBアドレスへの変換を規定する。
リストBrickID[ctbAddrBs]は、0~PicSizeInCtbsY-1の範囲のctbAddrBsについて、ブリックスキャンにおけるCTBアドレスからブリックIDへの変換を規定する。
リストNumCtusInBrick[brickIdx]は、0~NumBricksInPic-1の範囲のbrickIdxについて、ブリックインデックスからブリック中のCTU数への変換を規定する。
リストFirstCtbAddrBs[brickIdx]は、0~NumBricksInPic-1の範囲のbrickIdxについて、ブリックIDからブリック中の最初のCTBのブリックスキャンにけるCTBアドレスへの変換を規定する。
single_brick_per_slice_flag=1は、このPPSを参照する各スライスが1つのブリックを含むことを規定する。single_brick_per_slice_flag=0は、このPPSを参照するスライスが2つ以上のブリックを含み得ることを規定する。存在しない場合、single_brick_per_slice_flagの値は、1に等しいものと推測される。
rect_slice_flag=0は、各スライス内のブリックがラスタースキャンの順序であり、スライス情報がPPSにおいて示されないことを規定する。rect_slice_flag=1は、各スライス内のブリックが画像の長方形領域を網羅し、スライス情報がPPSにおいて示されることを規定する。single_brick_per_slice_flag=1の場合、rect_slice_flagは、1に等しいものと推測される。
num_slices_in_pic_minus1+1は、PPSを参照する各画像のスライス数を規定する。num_slices_in_pic_minus1の値は、0~NumBricksInPic-1の範囲であるものとする。存在せず、single_brick_per_slice_flag=1の場合、num_slices_in_pic_minus1の値は、NumBricksInPic-1に等しいものと推測される。
top_left_brick_idx[i]は、i番目のスライスの左上隅に配置されたブリックのブリックインデックスを規定する。top_left_brick_idx[i]の値は、jに等しくない如何なるiについても、top_left_brick_idx[j]の値に等しくないものとする。存在しない場合、top_left_brick_idx[i]の値は、iに等しいものと推測される。top_left_brick_idx[i]シンタックス要素の長さは、Ceil(Log2(NumBricksInPic))ビットである。
bottom_right_brick_idx_delta[i]は、i番目のスライスの右下隅に配置されたブリックのブリックインデックスとtop_left_brick_idx[i]との差を規定する。single_brick_per_slice_flag=1の場合、bottom_right_brick_idx_delta[i]の値は、0に等しいものと推測される。bottom_right_brick_idx_delta[i]シンタックス要素の長さは、Ceil(Log2(NumBricksInPic-top_left_brick_idx[i]))ビットである。
ビットストリームの適合要件として、スライスには、多くの完全タイルまたは1つのタイルの一連の完全ブリックのみを含むものとする。i番目のスライスのブリック数およびブリックのスライスへのマッピングを規定する変数NumBricksInSlice[i]およびBricksToSliceMap[j]は、以下のように導出される。
NumBricksInSlice[i]=0
botRightBkIdx=top_left_brick_idx[i]+bottom_right_brick_idx_delta[i]
for(j=0;j<NumBricksInPic;j++){
if(BrickColBd[j]>=BrickColBd[top_left_brick_idx[i]]&&
BrickColBd[j]<=BrickColBd[botRightBkIdx]&&
BrickRowBd[j]>=BrickRowBd[top_left_brick_idx[i]]&&
BrickRowBd[j]<=BrickColBd[botRightBkIdx]){
NumBricksInSlice[i]++
BricksToSliceMap[j]=i
}
}
デコーダは、エンコーダと同様の予測手段を適用することにより、(エンコーダにより生成されて圧縮表現に格納された動きまたは空間情報を使用して)ピクセルブロックの予測表現を構成するとともに、(予測誤差コーディングの逆動作であり、空間ピクセル領域において量子化予測誤差信号を復元する)予測誤差デコーディングによって出力ビデオを再構成する。予測および予測誤差デコーディング手段を適用した後、デコーダは、予測および予測誤差信号(ピクセル値)を合計して、出力ビデオフレームを構成する。また、デコーダ(および、エンコーダ)は、付加的なフィルタリング手段の適用によって、表示用の受け渡しおよび/またはビデオシーケンスの後続フレームの予測基準としての格納前の出力ビデオの品質を向上させることも可能である。
フィルタリングには、たとえばデブロッキング、サンプル適応オフセット(SAO)、および/または適応ループフィルタリング(ALF)のうちの1つまたは複数を含んでいてもよい。
デブロッキングループフィルタには、量子化パラメータ値等の境界に隣り合うブロックの特徴および/またはエンコーダによってビットストリームに含められるシグナリングに基づいて適応的に選択可能な複数のフィルタリングモードまたは強度を含んでいてもよい。たとえば、デブロッキングループフィルタは、通常のフィルタリングモードおよび強いフィルタリングモードを含んでいてもよく、これらは、フィルタタップの数(すなわち、境界の両側でフィルタリングされるサンプルの数)および/またはフィルタタップ値に関して異なり得る。たとえば、境界の両側に沿った2つのサンプルのフィルタリングは、クリッピング操作の潜在的な影響を省略する場合、(3 7 9 -3)/16のインパルス応答を有するフィルタにより実行されるようになっていてもよい。
動き情報は、ビデオコーデックにおける各動き補償イメージブロックと関連付けられた動きベクトルによって示し得る。これらの動きベクトルはそれぞれ、(エンコーダ側の)コード化対象画像もしくは(デコーダ側の)デコード対象画像中のイメージブロックならびにコード化もしくはデコード画像のうちの1つにおける予測元ブロックの変位を表す。これらは、動きベクトルを効率的に表すため、ブロック固有の予測動きベクトルに関して、異なるコーディングがなされていてもよい。予測動きベクトルは、たとえば隣り合うブロックのエンコードまたはデコード動きベクトルの中央値の計算等、所定の方法で生成されるようになっていてもよい。動きベクトル予測を生成する別の方法では、時間基準画像中の隣り合うブロックおよび/または同位置のブロックから予測候補のリストを生成し、選定した候補を動きベクトル予測子として示す。動きベクトル値の予測のほか、コード化/デコード画像の基準インデックスを予測可能である。基準インデックスは、時間基準画像中の隣り合うブロックおよび/または同位置のブロックから予測されるようになっていてもよい。さらに、高効率ビデオコーデックでは、付加的な動き情報コーディング/デコーディングメカニズム、マージング/マージモードと称することが多い、を採用するようにしてもよく、この場合は、一切の修正/補正なく、利用可能な基準画像リストごとの動きベクトルおよび対応する基準画像インデックスを含むすべての動きフィールド情報が予測・使用される。同様に、動きフィールドの予測は、時間基準画像中の隣り合うブロックおよび/または同位置のブロックの動きフィールド情報を用いて実行され、使用される動きフィールド情報は、利用可能な隣り合うブロック/同位置のブロックの動きフィールド情報で満たされた動きフィールド候補リストのリストから示される。
ビデオコーデックは、1つのソースイメージからの動き補償予測(一重予測)および2つのソースからの動き補償予測(二重予測)をサポートしていてもよい。一重予測の場合は単一の動きベクトルが適用される一方、二重予測の場合は2つの動きベクトルが示され、2つのソースからの動き補償予測が平均化されて最終的なサンプル予測が生成される。重み付け予測の場合は、2つの予測の相対的な重みを調整することも可能であるし、シグナリングオフセットを予測信号に追加することも可能である。
相互画像予測に対する動き補償の適用のほか、類似の手法を内部画像予測に適用可能である。この場合、変位ベクトルは、同じ画像からサンプルブロックをコピーしてコーディングまたはデコーディング対象のブロックの予測を構成可能な場所を示す。この種の内部ブロックコピー法によれば、テキストまたは他のグラフィックス等、フレーム内の繰り返し構造の存在下で実質的に、コーディング効率を向上可能となる。
動き補償または内部予測後の予測残差は、最初に変換カーネル(DCT等)で変換された後、コーディングされるようになっていてもよい。その理由として、残差の間には何らかの相関が依然として存在することが多く、変換は多くの場合、この相関を低下させ、より効率的なコーディングを提供するのに役立ち得る。
ビデオエンコーダは、ラグランジュコスト関数を利用して、最適なコーディングモード、たとえば、所望のマクロブロックモードおよび関連する動きベクトルを見つけることができる。この種のコスト関数では、非可逆コーディング法による(正確または推定)イメージ歪みとイメージエリアのピクセル値の表現に必要な(正確または推定)情報量とを結びつける重み付け係数λを使用する。
C=D+λR (式1)
ここで、Cは最小化すべきラグランジュコスト、Dはモードおよび動きベクトルを考慮したイメージ歪み(たとえば、平均二乗誤差)、Rはデコーダにおけるイメージブロックの再構成に要するデータを表すのに必要なビット数(候補動きベクトルを表すためのデータ量を含む)である。
一部のコーデックでは、画像順序カウント(POC)の概念を使用する。POCの値が画像ごとに導出されるが、これは、出力順序で画像位置が上昇しても低下しない。したがって、POCは、画像の出力順序を示す。POCは、たとえば動きベクトルの暗示的なスケーリングおよび基準画像リストの初期化のため、デコーディングプロセスに用いられるようになっていてもよい。さらに、POCは、出力順序の適合確認に用いられるようになっていてもよい。
ビデオコーディング規格においては、エンコーダの出力に概念的に接続可能で、少なくともプリデコーダバッファ、デコーダ、および出力/表示ユニットから成る仮想の基準デコーダによって、準拠するビットストリームがデコーディング可能となる必要がある。この仮想デコーダは、仮想基準デコーダ(HRD)またはビデオバッファリング確認器(VBV)として知られている場合もある。ストリームは、バッファのオーバフロー、場合により、アンダーフローなしにHRDによってデコーディング可能な場合に準拠する。バッファのオーバフローは、満杯のバッファにさらにビットを配置しようとする場合に発生する。バッファのアンダーフローは、デコーディング/再生のためにバッファから取り出そうとするビットがバッファに存在しない場合に発生する。HRDの目的として、実用的なデコーダ実装を取り扱えないほど大量のリソースを消費する、いわゆる有害なビットストリームを回避することが挙げられる。
HRDモデルには通常、瞬時デコーディングを含むが、HRDのコード化画像バッファ(CPB)への入力ビットレートは、エンコーダおよびビットストリームにとってはコード化データのデコーディングレートに関する制約、デコーダにとっては処理レートに関する要求と見なすことができる。エンコーダは、バッファリング制約がエンコーディングにおいて順守されることを確認・制御するため、HRDに規定のようなCPBを含んでいてもよい。また、デコーダの実施態様には、必ずしもその必要はないが、HRDに規定されたCPBと同様または同一に動作し得るCPBを有していてもよい。
エンコーダおよび/またはデコーダにおいては、デコード画像バッファ(DPB)が用いられるようになっていてもよい。デコード画像のバッファリングには、相互予測における参照およびデコード画像の出力順序への並べ替えという2つの理由が考えられ得る。HEVC等の一部のコーディングフォーマットでは、基準画像のマーキングおよび出力の並べ替えの両者に大きな柔軟性があり、基準画像のバッファリングおよび出力画像のバッファリングに別個のバッファを使用すると、メモリリソースを浪費する可能性がある。そこで、DPBには、基準画像および出力並べ替え用の統合デコード画像バッファリングプロセスを含んでいてもよい。デコード画像は、もはや基準として使用されず、出力に不要となった場合、DPBから除去されるようになっていてもよい。また、HRDがDPBを具備していてもよい。HRDのDPBおよびデコーダ実施態様は、同じ動作であってもよいが、必ずしもその必要はない。
出力順序(output order)は、(デコード画像バッファからデコード画像が出力される場合の)デコード画像バッファからデコード画像が出力される順序として定義可能である。
デコーダおよび/またはHRDには、画像出力プロセスを含んでいてもよい。出力プロセスは、デコーダがデコーディングプロセスの出力としてデコードおよびクロッピング画像を提供するプロセスと考えられる。出力プロセスは通常、仮想基準デコーダ仕様の一部としてのビデオコーディング規格の一部である。出力クロッピングにおいては、クロッピング長方形に従って、サンプルの線および/または列をデコード画像から除去することにより、出力画像を構成可能である。クロッピングされたデコード画像(cropped decoded picture)は、たとえば対応するコード化画像が参照するシーケンスパラメータ集合で規定された適合クロッピングウィンドウに基づいてデコード画像をクロッピングした結果として定義可能である。
ビデオコーディングシステムには、(デコード)基準画像マーキングのための1つまたは複数のシンタックス構造が存在していてもよい。エンコーダは、たとえば各コード化画像においてシンタックス構造のインスタンスを生成し、デコーダは、たとえば各コード化画像からシンタックス構造のインスタンスをデコーディングする。たとえば、シンタックス構造のデコーディングによって、画像に「参照使用」または「参照不使用」と適応マーキング可能となる。
HEVCの基準画像集合(RPS)シンタックス構造が基準画像マーキング用シンタックス構造の一例である。ある画像に対して有効またはアクティブな基準画像集合には、当該画像の参照として使用され得るすべての基準画像と、デコーディング順序の後続の任意の画像に対して「参照使用」とマーキングされ続けているすべての基準画像と、を含む。デコーディング順序の後続の任意の画像に対して「参照使用」とマーキングされ続けているものの、現在の画像またはイメージセグメントの基準画像として使用されていない基準画像は、非アクティブと考えられ得る。たとえば、これらは、最初の基準画像リストに含まれていない可能性もある。
一部のコーディングフォーマットおよびコーデックにおいては、いわゆる短期基準画像と長期基準画像とが区別されている。この区別は、動きベクトルスケーリング等の一部のデコーディングプロセスに影響を及ぼす可能性がある。基準画像をマーキングするシンタックス構造は、「長期参照使用」または「短期参照使用」としての画像のマーキングを示していてもよい。
一部のコーディングフォーマットにおいては、基準画像リストへのインデックスによって、相互予測の基準画像が示されるようになっていてもよい。一部のコーデックにおいては、二重予測(bi-predictive)(B)スライスごとに2つの基準画像リスト(基準画像リスト0および基準画像リスト1)が生成され、相互コード化(inter-coded)(P)スライスごとに1つの基準画像リスト(基準画像リスト0)が形成される。
基準画像リスト0および基準画像リスト1等の基準画像リストが2ステップで構成されるようになっていてもよく、まず、最初の基準画像リストが生成される。最初の基準画像リストは、規格において予め規定されたアルゴリズムを用いて生成されるようになっていてもよい。このようなアルゴリズムでは、基準として、たとえばPOCおよび/または時間的サブレイヤを使用するようにしてもよい。このアルゴリズムでは、「参照使用」等の特定のマーキングのある基準画像を処理し、他の基準画像を省略するようにしてもよい。すなわち、他の基準画像を最初の基準画像リストに挿入しないようにしてもよい。このような他の基準画像の一例として、「参照不使用」とマーキングされる一方、デコーダからの出力を待つデコード画像バッファに依然として存在する基準画像がある。第二に、最初の基準画像リストは、H.264/AVCの基準画像リスト並べ替え(RPLR)コマンドまたはHEVCの基準画像リスト修正シンタックス構造または任意の同等のもの、特定のシンタックス構造により並べ替えられるようになっていてもよい。さらに、アクティブな基準画像の数がリストごとに示されていてもよく、また、リスト中のアクティブ画像を超える相互予測の基準としての画像の使用は無効化される。基準画像リストの初期化および基準画像リストの修正の一方または両方では、「参照使用」または同等のマーキングが施された基準画像のうち、アクティブな基準画像のみを処理するようにしてもよい。
スケーラブルビデオコーディングは、1つのビットストリームが異なるビットレート、解像度、またはフレームレートのコンテンツの複数の表現を含み得るコーディング構造を表す。これらの場合、受信側は、その特性(たとえば、表示装置に最適な解像度)に応じて所望の表現を抽出可能である。あるいは、サーバまたはネットワーク要素は、たとえば受信側のネットワーク特性または処理機能に応じて、受信側に伝送されるビットストリームの一部を抽出可能である。スケーラブルビットストリームは、利用可能な最低品質のビデオを提供する「基本レイヤ」と、受信および下位レイヤと併せたデコーディングに際してビデオ品質を向上させる1つまたは複数の拡張レイヤと、を含んでいてもよい。拡張レイヤのコーディング効率を向上させるため、当該レイヤのコード化表現は、下位レイヤに依存していてもよい。たとえば、拡張レイヤの動き情報およびモード情報は、下位レイヤから予測可能である。同様に、下位レイヤのピクセルデータの使用により、拡張レイヤの予測を生成可能である。
品質スケーラビリティ(信号対雑音またはSNRとしても知られる)および/または空間スケーラビリティのためのスケーラブルビデオコーデックが以下のように実装されていてもよい。基本レイヤに対しては、従来の非スケーラブルビデオエンコーダおよびデコーダが使用される。基本レイヤの再構成/デコード画像は、拡張レイヤの基準画像バッファに含まれる。H.264/AVC、HEVC、および相互予測のための基準画像リストを使用する類似のコーデックにおいては、拡張レイヤのデコーディング基準画像と同様に、拡張レイヤの画像のコーディング/デコーディングのための基準画像リストに基本レイヤデコード画像が挿入されるようになっていてもよい。その結果、エンコーダは、基本レイヤ基準画像を相互予測基準として選定し、たとえばコード化ビットストリームの基準画像インデックスによって、その使用を示すようにしてもよい。デコーダは、ビットストリームから、たとえば、基準画像インデックスから、基本レイヤ画像が拡張レイヤの相互予測基準として使用されることをデコーディングする。デコーディングされた基本レイヤ画像は、拡張レイヤの予測基準として使用される場合、レイヤ間基準画像と称する。
スケーラビリティモードまたはスケーラビリティ次元としては、以下が挙げられるが、これらに限定されない。
品質スケーラビリティ:基本レイヤ画像は、拡張レイヤ画像よりも低い品質でコーディングされるが、これは、たとえば拡張レイヤよりも基本レイヤにおいて、より大きな量子化パラメータ値(すなわち、変換係数量子化のためのより大きな量子化ステップサイズ)を使用することにより実現可能と考えられる。
空間スケーラビリティ:基本レイヤ画像は、拡張レイヤ画像よりも低い解像度でコーティングされる(すなわち、サンプル数が少ない)。空間スケーラビリティおよび品質スケーラビリティは、同じ種類のスケーラビリティと考えられる場合がある。
ビット深度スケーラビリティ:基本レイヤ画像は、拡張レイヤ画像(たとえば、10または12ビット)よりも低いビット深度(たとえば、8ビット)でコーティングされる。
ダイナミックレンジスケーラビリティ:スケーラブルレイヤは、異なるダイナミックレンジ、異なるトーンマッピング関数を用いて得られたイメージ、および/または異なる光学的伝達関数を表す。
彩度フォーマットスケーラビリティ:基本レイヤ画像は、拡張レイヤ画像(たとえば、4:4:4フォーマット)よりも彩度サンプルアレイ(たとえば、4:2:0彩度フォーマットデコーディング)において、より低い空間解像度を提供する。
色域スケーラビリティ:拡張レイヤ画像は、基本レイヤ画像よりも豊富/広範な色表現範囲を有する。たとえば、拡張レイヤがUHDTV(ITU-R BT.2020)の色域を有し、基本レイヤがITU-R BT.709の色域を有していてもよい。
関心領域(ROI)スケーラビリティ:拡張レイヤは、基本レイヤの空間的部分集合を表す。拡張レイヤが空間的部分集合に対してより高い主観的品質を提供するように、他種のスケーラビリティたとえば、品質または空間スケーラビリティと併せてROIスケーラビリティが用いられるようになっていてもよい。
ビュースケーラビリティ:マルチビューコーディングとも称し得る。基本レイヤが第1のビューを表す一方、拡張レイヤが第2のビューを表す。
深度スケーラビリティ:深度拡張コーディングとも称し得る。ビットストリームの1つまたは複数のレイヤがテクスチャビューを表す一方、他の1つまたは複数のレイヤが深度ビューを表していてもよい。
スケーラビリティに関する上記すべての場合において、基本レイヤ情報の使用により、付加的なビットレートオーバヘッドを最小にするように拡張レイヤをコーディングすることも可能である。
スケーラビリティは、2つの基本的な方法により有効化可能である。スケーラブル表現の下位レイヤからピクセル値またはシンタックスの予測を行う新たなコーディングモードを導入するか、または、下位レイヤの画像を上位レイヤの基準画像バッファ(デコード画像バッファ、DPB)に配置する。第1の手法は、より柔軟であるため、ほとんどの場合により優れたコーディング効率を提供可能である。ただし、第2の基準フレームに基づくスケーラビリティ手法は、単一レイヤコーデックに対する最小限の変更で非常に効率良く実現可能でありつつ、可能なコーディング効率化の大部分を実現可能である。本質的に、基準フレームに基づくスケーラビリティコーデックは、すべてのレイヤに同じハードウェアまたはソフトウェア実装を利用し、DPB管理のみを外部手段で行うことにより実現可能である。
送信側、ゲートウェイまたは同等のものがスケーラブルビデオビットストリームの伝送レイヤおよび/またはサブレイヤを選択するようにしてもよいし、同様に、受信側、クライアント、プレーヤまたは同等のものがスケーラブルビデオビットストリームの選択レイヤおよび/またはサブレイヤの伝送を要求するようにしてもよい。レイヤ抽出(layer extraction)、レイヤの抽出(extraction of layers)、またはレイヤダウンスイッチング(layer down-switching)という用語は、ビットストリームで利用可能な数よりも少なくレイヤの伝送を表す。レイヤアップスイッチングは、レイヤアップスイッチングに先立って伝送されたものに対する付加的なレイヤの伝送、すなわち、レイヤダウンスイッチングの初期に伝送が中断された1つまたは複数のレイヤの伝送の再開を表し得る。レイヤダウンスイッチングおよび/またはアップスイッチングと同様に、時間的サブレイヤのダウンスイッチングおよび/またはアップスイッチングが実行されるようになっていてもよい。レイヤおよびサブレイヤダウンスイッチングおよび/またはアップスイッチングはいずれも、同様に実行されるようになっていてもよい。レイヤおよびサブレイヤダウンスイッチングおよび/またはアップスイッチングは、同じアクセス単位または同等のものにおいて(すなわち、仮想的に同時に)実行されるようになっていてもよいし、異なるアクセス単位または同等のものにおいて(すなわち、仮想的に異なるタイミングで)実行されるようになっていてもよい。レイヤアップスイッチングは、ランダムアクセス画像(たとえば、HEVCのIRAP画像)において生じ得る。サブレイヤアップスイッチングは、特定種類の画像(たとえば、HEVCのSTSAまたはTSA画像)において生じ得る。
HEVC等の一部のコーディングフォーマットのエンコーダの出力およびHEVC等の一部のコーディングフォーマットのデコーダの入力の基本単位は、ネットワーク抽象化レイヤ(NAL)単位である。パケット指向ネットワーク上の転送または構造化ファイルへの格納の場合、NAL単位は、パケットまたは類似の構造にカプセル化されるようになっていてもよい。
フレーム構造を提供しない伝送または格納環境のNAL単位のストリームに対して、バイトストリームフォーマットを規定可能である。バイトストリームフォーマットでは、各NAL単位の前に始端コードを付加することによって、NAL単位を互いに分離する。NAL単位境界の誤検出を防ぐため、エンコーダは、バイト指向の始端コードエミュレーション防止アルゴリズムを動作させる。これは、始端コードが発生すると考えられる場合に、エミュレーション防止バイトをNAL単位ペイロードに追加する。パケット指向システムとストリーム指向システムとの間の容易なゲートウェイ動作を可能とするため、バイトストリームフォーマットが使用されるか否かに関わらず、始端コードエミュレーション防止が常に実行されるようになっていてもよい。
NAL単位(NAL unit)は、後続のデータの種類の指標と、必要に応じてエミュレーション防止バイトを挟んだ未加工バイトシーケンスペイロード(RBSP)の形態の当該データを含むバイトと、を含むシンタックス構造として定義可能である。RBSP(raw byte sequence payload)は、NAL単位でカプセル化された整数個のバイトを含むシンタックス構造として定義可能である。RBSPは、空であるか、または、シンタックス要素を含むデータビットにRBSP停止ビットと、0に等しい0個以上の後続ビットとが続く文字列の形態を有する。
NAL単位は、ヘッダおよびペイロードから成る。HEVCにおいては、規定されたすべてのNAL単位タイプに対して2バイトのNAL単位ヘッダが使用される一方、他のコーデックにおいては、NAL単位ヘッダがHEVCと類似していてもよい。
HEVCにおいて、NAL単位ヘッダは、1つの予約ビット、6ビットのNAL単位タイプ指標、時間的レベルまたはサブレイヤのための3ビットのtemporal_id_plus1指標(1以上が必要な場合もある)、6ビットのnuh_layer_idシンタックス要素を含む。temporal_id_plus1シンタックス要素は、NAL単位の時間的識別子と見なすことができ、ゼロベースのTemporalId変数は、TemporalId=temporal_id_plus1-1のように導出可能である。略語TIDをTemporalId変数と同じ意味で使用する場合がある。TemporalId=0は、最低の時間的レベルに対応する。temporal_id_plus1の値は、2つのNAL単位ヘッダバイトに関わる始端コードエミュレーションを回避するため、非ゼロとする必要がある。選択値以上のTemporalIdを有するすべてのVCL NAL単位を除外し、他のすべてのVCL NAL単位を含むことにより生成されたビットストリームは、適合性を維持する。その結果、TemporalIdがtid_valueと等しい画像は、tid_valueより大きなTemporalIdを有する画像を相互予測基準として一切使用しない。サブレイヤ(sub-layer)または時間的サブレイヤ(temporal sub-layer)は、時間的スケーラブルビットストリームの時間的スケーラブルレイヤ(または、時間的レイヤTL)として定義可能である。このような時間的スケーラブルレイヤは、TemporalId変数の特定の値を有するVCL NAL単位および関連する非VCL NAL単位を含んでいてもよい。nuh_layer_idは、スケーラビリティレイヤ識別子として理解可能である。
NAL単位は、ビデオコーディングレイヤ(VCL)NAL単位および非VCL NAL単位に分類可能である。VCL NAL単位は通常、コード化スライスNAL単位である。HEVCにおいて、VCL NAL単位は、1つまたは複数のCUを表すシンタックス要素を含む。HEVCにおいて、特定の範囲内のNAL単位タイプは、VCL NAL単位を示し、VCL NAL単位タイプは、画像タイプを示す。
イメージは、独立コーディングおよびデコーディング可能なイメージセグメント(たとえば、スライス、タイル、またはタイル群)に分割可能である。このようなイメージセグメントは、並列処理を可能にし得る。本明細書において、「スライス」は、デフォルトのコーディングまたはデコーディング順序で処理される特定個数の基本コーディング単位で構成されたイメージセグメントを表し得る。一方、「タイル」は、長方形のイメージ領域として規定されたイメージセグメントを表し得る。タイル群(tile group)は、一群の1つまたは複数のタイルとして定義可能である。イメージセグメントは、H.264/AVCおよびHEVCにおけるVCL NAL単位等、ビットストリームにおける別個の単位としてコーディングされ得る。コード化イメージセグメントは、ヘッダおよびペイロードを含み得るが、このヘッダは、ペイロードのデコーディングに必要なパラメータ値を含む。
独立コード化画像領域(independently coded picture region)は、独立コード化画像領域のデコーディングが、独立コード化画像領域外のサンプル値にも、同じコード化画像の他のコード化画像領域から導出された変数にも依存しないような画像領域として定義可能である。独立コード化画像領域は、基準画像中の他のコード化画像領域からではなく、基準画像中の各独立コード化画像領域から予測され得る。
独立コード化画像領域シーケンス(independently coded picture region sequence)は、一連の各独立コード化画像領域として定義可能である。各独立コード化画像領域は、たとえばサブ画像シーケンス識別子または同等のものを用いて示されるものであってもよいし、たとえば画像シーケンス中の同位置のイメージシーケンスとして推測されるものであってもよい。
一部の状況において、独立コード化画像領域(independently coded picture region)という用語は、独立コード化画像領域シーケンスの一部である場合にのみ使用される。たとえば、ある長方形スライスを同じ画像の他の長方形スライスから独立してデコーディング可能であってもよいが、その長方形スライスは、基準画像中の対応する長方形スライス外のエリアのサンプル値を使用する場合、独立コード化画像領域と見なされない場合もある。
構成ビットストリーム(constituent bitstream)という用語は、独立コード化画像領域シーケンスに対して使用可能である。ただし、構成ビットストリームは、他の目的でも使用可能であり、たとえば、同じビットストリームに(たとえば、別個の独立レイヤとして)多重化されたテクスチャビデオビットストリームおよびデプスビデオビットストリームは、構成ビットストリームと見なすことができる。
独立デコーディング可能な画像領域(independently decodable picture region)および独立コード化画像領域(independently coded picture region)という用語は、同じ意味で使用する場合がある。エンコーディングおよび/もしくはデコーディングにおいて独立コード化画像領域および/または独立コード化画像領域シーケンスを実現する方法は多数存在する可能性があるため、実施形態は単一の方法に限定されず、如何なる方法にも適用可能であることが了解される必要がある。以下の段落において、独立コード化画像領域および独立コード化画像領域シーケンスのいくつかの例を説明する。
動き制約タイル集合(MCTS)は、独立コード化画像領域の実現例であり、同様に、MCTSシーケンスは、独立コード化画像領域シーケンスの一例である。動き制約タイル集合(MCTS)は、動き制約タイル集合外のサンプル値も、動き制約タイル集合外の1つまたは複数のサンプル値を用いて導出された部分サンプル位置におけるサンプル値も、動き制約タイル集合内の如何なるサンプルの相互予測にも使用されないように、エンコーディングにおいて相互予測プロセスが制約されているようになっている。また、MCTSのエンコーディングは、MCTS外のブロックに由来する変数も如何なるデコーディング結果も、MCTS内の如何なるデコーディング処理にも使用されないように制約されている。たとえば、MCTSのエンコーディングは、MCTS外のブロックから動きベクトル候補が導出されないように制約されている。これは、HEVCの時間的動きベクトル予測をオフにするか、または、MCTSの右下にある最後のタイル境界を除いて、MCTSの右下タイル境界の真左に配置されたPUのマージまたはAMVP候補リストにおいてTMVP候補またはTMVP候補に続く任意の動きベクトル予測候補をエンコーダが使用できないようにすることによって強制され得る。一般的に、MCTSは、MCTS外にあるサンプル値および動きベクトル等のコード化データから独立したタイル集合として定義可能である。MCTSシーケンス(MCTS sequence)は、1つまたは複数のコード化ビデオシーケンスまたは同等のものにおける一連の各MCTSとして定義可能である。場合によっては、長方形エリアの構成にMCTSが必要となり得る。状況により、MCTSは、画像内のタイル集合または一連の画像中の各タイル集合を表し得ることが了解されるものとする。各タイル集合は、一連の画像において同位置であってもよいが、一般的には必ずしもその必要はない。動き制約タイル集合は、その他のタイル集合なしでデコーディング可能であることから、独立コード化タイル集合と見なすことができる。
当然のことながら、相互予測に使用されるサンプルの場所は、それ以外では画像外になる位置が飽和して画像の対応する境界サンプルを指すように、飽和していてもよい。そこで、いくつかの使用事例において、タイル境界が画像境界でもある場合、動きベクトルは、その境界を効果的に横切ることができ、また、サンプルの場所が境界上で飽和するため、その境界外の場所を参照する部分サンプル補間を効果的に生じ得る。他の使用事例において具体的に、画像境界に隣り合う位置にあるビットストリームから画像境界に隣り合わない位置にある別のビットストリームへとコード化タイルが抽出され得る場合、エンコーダは、任意のMCTS境界と同様に、画像境界上の動きベクトルを制約することができる。
画像境界のように境界が処理される長方形スライスが独立コード化画像領域の別の実現例である。画像境界のようなスライス境界の処理には、以下のうちの1つまたは複数を含んでいてもよいが、これらに限定されない。
時間的輝度動きベクトル予測の導出プロセスにおいては、基準画像のスライス境界外の動きベクトルが利用できないものと考えられる。これは、たとえばプロセスに用いられる右側および下側の画像境界位置をそれぞれ、輝度サンプルの単位で、スライスの右側および下側の境界位置により置き換えることによって実現され得る。
輝度および彩度サンプル補間プロセスにおいては、従来スライス境界外のサンプル場所にあったサンプル値がスライス境界上のサンプル場所のサンプル値により置き換えられる。これは、たとえばプロセスに用いられる左側、右側、上側、および下側の画像境界位置をそれぞれ、スライスの左側、右側、上側、および下側の境界位置により置き換えることによって実現され得る。
本明細書において後述するサブ画像が独立コード化画像領域の別の実現例であり、それぞれ、サブ画像シーケンスは、独立コード化画像領域シーケンスの一例と見なすことができる。
MCTS等の特定の用語を参照して例および実施形態を説明可能であるが、これらは、如何なる種類の独立コード化画像領域にも同様に当てはまることが了解される必要がある。
HEVCの時間的動き制約タイル集合SEI(補完拡張情報)メッセージは、ビットストリーム中の動き制約タイル集合の有無を示すのに使用可能である。
非VCL NAL単位は、たとえばシーケンスパラメータ集合、画像パラメータ集合、補完拡張情報(SEI)NAL単位、アクセス単位デリミタ、シーケンスNAL単位の終端、ビットストリームNAL単位の終端、またはフィラーデータNAL単位といった種類のうちの1つであってよい。パラメータ集合がデコード画像の再構成に必要となる場合がある一方、その他の非VCL NAL単位の多くは、デコードサンプル値の再構成に必要ない。
一部のコーディングフォーマットでは、デコーディングまたはデコード画像の再構成に必要なパラメータ値を有し得るパラメータ集合を規定する。コード化ビデオシーケンスによって変化しないパラメータは、シーケンスパラメータ集合(SPS)に含まれていてもよい。デコーディングプロセスに必要となり得るパラメータのほか、シーケンスパラメータ集合には任意選択として、バッファリング、画像出力タイミング、レンダリング、およびリソース予約に重要となり得るパラメータを含むビデオユーザビリティ情報(VUI)を含んでいてもよい。画像パラメータ集合(PPS)には、複数のコード化画像において不変となる可能性が高いパラメータを含む。画像パラメータ集合には、1つまたは複数のコード化画像のコード化イメージセグメントが参照し得るパラメータを含んでいてもよい。ヘッダパラメータ集合(HPS)は、画像に基づいて変化し得るパラメータを含むように提案されている。
ビデオパラメータセット(video parameter set(VPS))は、0個以上のコード化ビデオシーケンス全体に適用されるシンタックス要素を含むシンタックス構造として定義可能である。VPSは、ビットストリーム中のレイヤの依存関係に関する情報のほか、コード化ビデオシーケンス全体のすべてのレイヤにわたるすべてのスライスに適用可能な他の多くの情報を提供し得る。HEVCにおいて、VPSは、基本VPSおよび拡張VPSの2つの部分を含むと考えられ、拡張VPSは、任意選択として存在していてもよい。ビデオパラメータ集合RBSPは、1つまたは複数のシーケンスパラメータ集合RBSPが参照し得るパラメータを含んでいてもよい。
パラメータ集合は、たとえばその識別子を通じて参照された場合にアクティブ化されるようになっていてもよい。たとえば、スライスヘッダ等のイメージセグメントのヘッダには、そのイメージセグメントを含むコード化画像のデコーディングのためにアクティブ化されるPPSの識別子を含んでいてもよい。PPSには、当該PPSのアクティブ化に際してアクティブ化されるSPSの識別子を含んでいてもよい。特定種類のパラメータ集合のアクティブ化によって、同じ種類のアクティブ化済みのパラメータ集合が非アクティブ化され得る。
VPS、SPS、およびPPS間の関係および階層は、以下のように説明可能である。VPSは、パラメータ集合階層においてSPSの1レベル上に存在する。VPSは、コード化ビデオシーケンス全体のすべてのレイヤにわたるすべてのイメージセグメントに共通するパラメータを含んでいてもよい。SPSは、コード化ビデオシーケンス全体の特定のレイヤのすべてのイメージセグメントに共通で、複数のレイヤにより共有され得るパラメータを含む。PPSは、コード化画像のすべてのイメージセグメントに共通で、複数のコード化画像のすべてのイメージセグメントにより共通される可能性が高いパラメータを含む。
異なる階層レベル(たとえば、シーケンスおよび画像)のパラメータ集合の代替または追加として、ビデオコーディングフォーマットには、シーケンスヘッダまたは画像ヘッダ等のヘッダシンタックス構造を含んでいてもよい。シーケンスヘッダは、ビットストリーム順序のコード化ビデオシーケンスの他の如何なるデータにも先行し得る。画像ヘッダは、ビットストリーム順序の画像の如何なるコード化ビデオデータにも先行し得る。
ビットストリームに伴う(たとえば、ビットストリームに伴って示す)表現またはビットストリームのコード化単位に伴う(たとえば、コード化タイルに伴って示す)表現は、「帯域外」データがビットストリームまたはコード化単位とそれぞれ関連付けられる一方でこれらには含まれない様態での伝送、シグナリング、または格納を表すように、特許請求の範囲および記載の実施形態において使用され得る。ビットストリームまたはビットストリームのコード化単位または同等のものに伴うデコーディングという表現は、ビットストリームまたはコード化単位とそれぞれ関連付けられた参照帯域外データ(帯域外伝送、シグナリング、または格納から得られ得る)のデコーディングを表し得る。たとえば、ビットストリームがISOベースメディアファイルフォーマットに準拠したファイル等のコンテナファイルに含まれ、ビットストリームを含むトラックのサンプルエントリのボックス、ビットストリームを含むトラックのサンプル群、またはビットストリームを含むトラックと関連付けられた時限メタデータトラック等のメタデータをビットストリームに関連付ける様態で特定のファイルメタデータがファイルに格納されている場合に、ビットストリームに伴う表現を使用可能である。
コード化画像は、画像のコード化表現である。
内部ランダムアクセスポイント(intra random access point,IRAP)画像とも称し得るランダムアクセスポイント(RAP)画像は、内部コード化イメージセグメントのみを含んでいてもよい。さらに、RAP画像は、デコーディング順序のRAP画像に先行する任意の画像のデコーディングプロセスの実行なく正確にデコーディング可能となるように、出力順序の後続画像を制約するようにしてもよい。
アクセス単位には、単一の時間インスタンスのコード化ビデオデータおよび関連する他のデータを含んでいてもよい。HEVCにおいて、アクセス単位(access unit(AU))は、規定の分類規則に従って互いに関連付けられ、デコーディング順序が連続し、nuh_layer_idの任意特定の値を有する最大1つの画像を含む一組のNAL単位として定義可能である。コード化画像のVCL NAL単位を含むほか、アクセス単位には、非VCL NAL単位も含み得る。前記特定の分類規則では、たとえば出力タイミングまたは画像出力カウント値が同じ画像を同じアクセス単位に関連付けるようにしてもよい。
アクセス単位内で、コード化画像が特定の順序で出現する必要があり得る。たとえば、nuh_layer_idがnuhLayerIdAに等しいコード化画像は、デコーディング順序にて、同じアクセス単位でnuh_layer_idがnuhLayerIdAより大きなすべてのコード化画像に先行することが要求となり得る。
ビットストリーム(bitstream)は、一連のビットとして定義可能であり、いくつかのコーディングフォーマットまたは規格においては、NAL単位ストリームまたはバイトストリームの形態であってもよく、1つまたは複数のコード化ビデオシーケンスを構成するコード化画像および関連するデータの表現を構成する。同じファイルや通信プロトコルの同じ接続等、同じ論理チャネル内で第1のビットストリームに第2のビットストリームが続いていてもよい。(ビデオコーディングの状況における)基本ストリーム(elementary stream)は、一連の1つまたは複数のビットストリームとして定義可能である。いくつかのコーディングフォーマットまたは規格において、最初のビットストリームの終端は、特定のNAL単位により示されていてもよく、これは、ビットストリーム終端(EOB)NAL単位と称し得るものであり、ビットストリームの最後のNAL単位である。
コード化ビデオシーケンス(coded video sequence(CVS))は、独立デコーディング可能かつ別のコード化ビデオシーケンスまたはビットストリームの終端が後続するデコーディング順序の一連のコード化画像として定義可能である。この追加または代替として、コード化ビデオシーケンスは、シーケンス終端(EOS)NAL単位と称し得る特定のNAL単位がビットストリームに現れた場合に終端するように規定可能である。HEVCにおいて、nuh_layer_idが0に等しいEOS NAL単位は、コード化ビデオシーケンスを終端させる。
ビットストリームまたはコード化ビデオシーケンスは、以下のような時間的スケーラブルとなるようにエンコーディング可能である。各画像は、特定の時間的サブレイヤに割り当てられていてもよい。時間的サブレイヤは、たとえば0から数え上げることができる。最低の時間的サブレイヤであるサブレイヤ0は、独立してデコーディングされるようになっていてもよい。時間的サブレイヤ1における画像は、時間的サブレイヤ0および1における再構成画像から予測されるようになっていてもよい。時間的サブレイヤ2における画像は、時間的サブレイヤ0、1および2における再構成画像から予測されるようになっていてもよく、以下同様である。言い換えると、時間的サブレイヤNにおける画像は、相互予測の基準として、Nより大きな時間的サブレイヤにおける如何なる画像も使用しない。選択サブレイヤ値以上のすべての画像を除外し、画像を含むことにより生成されたビットストリームは、適合性を維持する。
サブレイヤアクセス画像(sub-layer access picture)は、サブレイヤのデコーディングを正しく開始可能な画像、すなわち、サブレイヤのすべての画像を正しくデコーディング可能な画像として定義可能である。HEVCにおいては、時間的サブレイヤの切り替えポイントを示すのに使用可能な2つの画像タイプ、すなわち、時間的サブレイヤアクセス(TSA)およびステップ単位時間的サブレイヤアクセス(STSA)の画像タイプが存在する。TSAもしくはSTSA画像(除外)ならびにTSAもしくはSTSA画像のTemporalIdがN+1に等しくなるまでにTemporalIdが最大Nの時間的サブレイヤがデコードされていた場合、TSAまたはSTSA画像は、TemporalIdがN+1に等しくなった以降のすべての画像(デコーディング順序)のデコーディングを可能にする。TSA画像タイプは、TSA画像自体およびデコーディング順序のTSA画像に後続する同じサブレイヤ中のすべての画像に制約を課すようにしてもよい。これらの画像はいずれも、デコーディング順序のTSA画像に先行する同じサブレイヤ中の任意の画像からの相互予測を使用できない。TSAの定義では、デコーディング順序のTSA画像に後続する上位サブレイヤ中の画像に対して、制約をさらに課すようにしてもよい。これらの画像はいずれも、デコーディング順序のTSA画像に先行する画像がTSA画像と同じサブレイヤまたは上位のサブレイヤに属する場合、当該画像を参照できない。TSA画像のTemporalIdは、0より大きい。STSAはTSA画像に類似するものの、デコーディング順序のSTSA画像に後続する上位サブレイヤ中の画像には制約を課さないため、STSA画像が存在するサブレイヤにのみアップスイッチングを可能とする。
シンタックス要素のパーシングプロセスの規定には、以下が用いられるようになっていてもよい。
u(n):n個のビットを使用する符号なし整数。シンタックステーブルにおいてnが「v」の場合、ビット数は、他のシンタックス要素の値に応じて変化する。この記述子のパーシングプロセスは、符号なし整数のバイナリ表現として解釈されるビットストリームの次のnビットにより規定され、最上位ビットが最初に書き込まれる。
ue(v):符号なし整数の指数ゴロムコーディング(exp-ゴロムコーディングとしても知られる)シンタックス要素であって、左側のビットが最初に書き込まれる。
指数ゴロムビット列は、たとえば以下の表によって、コード番号(codeNum)に変換され得る。
利用可能なメディアファイルフォーマット規格としては、ISOベースメディアファイルフォーマット(ISO/IEC14496-12、ISOBMFFと略記可能)、MPEG-4ファイルフォーマット(ISO/IEC14496-14、MP4フォーマットとしても知られる)、NAL単位構造化ビデオ用ファイルフォーマット(ISO/IEC14496-15)、および3GPPファイルフォーマット(3GPP TS 26.244、3GPフォーマットとしても知られる)が挙げられる。ISOファイルフォーマットは、前述のすべてのファイルフォーマットの導出基準である(ISOファイルフォーマット自体を除く)。これらのファイルフォーマット(ISOファイルフォーマット自体を含む)は一般的に、ファイルフォーマットのISOファミリと称する。
以下、実施形態が実現され得る基礎となるコンテナファイルフォーマットの一例として、ISOBMFFのいくつかの概念、構造、および仕様を説明する。本発明の態様は、ISOBMFFに限定されず、説明はむしろ、本発明の一部または全部を実現可能な1つの考え得る基礎に関して与える。
ISOベースメディアファイルフォーマットにおける基本的な構成ブロックをボックスと称する。各ボックスは、ヘッダおよびペイロードを有する。ボックスヘッダは、ボックスの種類と、バイト単位のボックスのサイズと、を示す。ボックスは他のボックスを包含していてもよく、ISOファイルフォーマットでは、特定タイプのボックスに許容されるボックスの種類を規定する。さらに、各ファイルにおいては、いくつかのボックスの存在が必須であり、他のボックスの存在は任意であってもよい。また、一部のボックスタイプについて、ファイルに2つ以上のボックスが存在することも許容され得る。このため、ISOベースメディアファイルフォーマットは、ボックスの階層構造を規定するものと考えられる。
ファイルフォーマットのISOファミリによれば、ファイルには、ボックスとしてカプセル化されたメディアデータおよびメタデータを含む。各ボックスは、4文字コード(4CC)により識別され、ボックスの種類およびサイズを知らせるヘッダから始まる。
ISOベースメディアファイルフォーマットに準拠したファイルにおいては、メディアデータがメディアデータ「mdat」ボックスで提供されてもよく、ムービー「moov」ボックスがメタデータの包含に使用されていてもよい。場合によっては、ファイルを操作可能となるように、「mdat」および「moov」の両ボックスの存在が必要となり得る。ムービー「moov」ボックスには1つまたは複数のトラックを含んでいてもよく、各トラックは、1つの対応するTrackBox(「trak」)に存在していてもよい。トラックは、メディア圧縮フォーマット(および、ISOベースメディアファイルフォーマットへのカプセル化)に従ってフォーマットされたサンプルを表すメディアトラック等、多くの種類のうちの1つであってもよい。トラックは、論理チャネルと見なすことができる。
ムービー断片は、たとえばISOファイルにコンテンツを記録する際、記録アプリケーションがクラッシュしたり、メモリ空間が不足したり、他の何らかの出来事が発生したりした場合にデータを失わないようにするために使用可能である。ムービー断片がなければ、ファイルフォーマットとして、すべてのメタデータ、たとえば、ムービーボックスをファイルの連続した1つのエリアに書き込むことが必要となり得るため、データ損失の発生の可能性がある。さらに、ファイルを記録する際、利用可能なストレージのサイズに対してムービーボックスをバッファリングするのに十分な量のメモリ空間(たとえば、ランダムアクセスメモリRAM)が存在しない場合もあり、ムービーを閉じる際のムービーボックスのコンテンツの再計算があまりにも遅くなる可能性がある。さらに、ムービー断片によれば、通常のISOファイルパーサーを用いたファイルの同時記録・再生が可能となり得る。さらには、プログレッシブダウンロード、たとえば、ムービー断片が使用され、ムービー断片を使用しない構造の同じメディアコンテンツを含むファイルと比較して初期ムービーボックスが小さい場合のファイルの同時受信・再生のため、初期バッファリングの継続時間をより短くすることが必要となり得る。
ムービー断片機能によって、ムービーボックス中に存在し得るメタデータを複数に分割可能となり得る。各メタデータは、トラックの特定の期間に対応していてもよい。言い換えると、ムービー断片機能によって、ファイルメタデータおよびメディアデータの交互配置が可能となり得る。その結果、ムービーボックスのサイズが制限され、前述の使用事例が実現され得る。
いくつかの例において、ムービー断片のメディアサンプルは、moovボックスと同じファイルである場合、mdatボックスに存在していてもよい。ただし、ムービー断片のメタデータについては、moofボックスが提供されるようになっていてもよい。moofボックスには、moovボックスに存在していた特定の再生継続時間の情報を含んでいてもよい。moovボックスは依然として、それ自体で有効なムービーを表し得るが、その追加として、ムービー断片が同じファイルで続くことを示すmvexボックスを含んでいてもよい。ムービー断片は、moovボックスに関連付けられたプレゼンテーションを時間的に延長するようにしてもよい。
ムービー断片内には、どこでも1トラック当たり0~複数個の一組のトラック断片が存在していてもよい。このトラック断片には、どこでも0~複数個のトラックラン(トラック断片ランとしても知られる)を含んでいてもよく、それぞれ、当該トラックのサンプルの連続したランである。これらの構造内においては、多くのフィールドが任意選択であり、デフォルトに設定可能である。moofボックスに含まれ得るメタデータは、moovボックスに含まれ得るメタデータの部分集合に限定されてもよく、場合によっては異なるコーディングがなされる可能性もある。moofボックスに含まれ得るボックスに関する詳細は、ISOベースメディアファイルフォーマット仕様に記載されている。自己完結型のムービー断片は、ファイル順序で連続するmoofボックスおよびmdatボックスから成るように規定可能であり、mdatボックスには、(moofボックスがメタデータを提供する)ムービー断片のサンプルを含む一方、その他任意のムービー断片(すなわち、その他任意のmoofボックス)のサンプルは含まない。
トラック基準メカニズムの使用により、トラックを互いに関連付けることができる。TrackReferenceBoxには、それぞれが包含トラックから一組の他のトラックに基準を与えるボックスを含む。これらの基準は、包含ボックスのボックスタイプ(すなわち、ボックスの4文字コード)によってラベリングされている。
TrackBoxに含まれるTrackGroupBoxによれば、各群が特定の特性を共有していたり、群内のトラックが特定の関係を有していたりするトラック群を示すことができる。ボックスには0個以上のボックスを含み、特定の特性または関係は、包含ボックスのボックスタイプによって示される。包含ボックスは、同じトラック群に属するトラックの決定に使用可能な識別子を含む。TrackGroupBox内に同じ種類の包含ボックスを含み、これら包含ボックス内で同じ識別子番号を有するトラックは、同じトラック群に属する。
統一リソース識別子(uniform resource identifier(URI))は、リソースの名称の識別に用いられる文字列として定義可能である。このような識別によれば、特定のプロトコルを用いることにより、ネットワークを介したリソースの表現との相互作用が可能となる。URIは、当該URIの具象シンタックスおよび関連するプロトコルを規定する方式によって定義される。統一リソース位置指定子(URL)および統一リソース名(URN)は、URIの形態である。URLは、ウェブリソースを識別するとともに、リソースの表現に対する作用または表現の取得を行う手段を指定するURIとして定義可能であり、その主要なアクセスメカニズムおよびネットワークの場所の両方を指定する。URNは、特定の名称空間においてリソースを名称により識別するURIとして定義可能である。URNは、その場所もアクセス方法も暗示することなく、リソースの識別に用いられるようになっていてもよい。
近年、動画ストリーミングアプリケーション等、インターネット上でリアルタイムにマルチメディアコンテンツを配信するため、ハイパーテキスト転送プロトコル(HTTP)が広く使用されている。ユーザデータグラムプロトコル(UDP)上のリアルタイム転送プロトコル(RTP)の使用と異なり、HTTPは、設定が簡単で、通常はファイアウォールおよびネットワークアドレス変換器(NAT)を通過することが認められており、マルチメディアストリーミングアプリケーションにとって魅力的なものとなっている。
Microsoft(登録商標)Smooth Streaming、Apple(登録商標)Adaptive HTTP Live Streaming、およびAdobe(登録商標)Dynamic Streaming等、HTTP上の適応ストリーミングの商用ソリューションがいくつか発表されているほか、標準化プロジェクトも進められている。適応HTTPストリーミング(AHS)は、第3世代パートナーシッププロジェクト(3GPP)のパケットスイッチングストリーミング(PSS)サービスのRelease 9(3GPP TS 26.234 Release 9:"Transparent end-to-end packet-switched streaming service (PSS); protocol and codec")で初めて標準化されたものである。MPEGは、MPEG DASH規格(ISO/IEC 23009-1:"Dynamic adaptive streaming over HTTP (DASH)-Part 1: Media presentation description and segment formats", International Standard, 2nd Edition, , 2014)の起点として、3GPP AHS Release 9を採用している。3GPPは、MPEGとの通信において適応HTTPストリーミングを研究し続け、3GP-DASH(Dynamic Adaptive Streaming over HTTP;3GPP TS 26.247:"Transparent end-to-end packet-switched streaming Service (PSS; Progressive download and dynamic adaptive Streaming over HTTP (3GP-DASH))")を発表した。MPEG DASHおよび3GP-DASHは技術的に近いため、DASHと総称し得る。以下、実施形態を実現可能なビデオストリーミングシステムの一例として、DASHのいくつかの概念、フォーマット、および動作を説明する。本発明の態様は、DASHに限定されず、説明はむしろ、本発明の一部または全部を実現可能な1つの考え得る基礎に関して与える。
DASHにおいては、マルチメディアコンテンツがHTTPサーバに格納されてもよく、HTTPにより配信され得る。コンテンツは、メディアプレゼンテーション記述(MPD)(利用可能なコンテンツのマニフェスト、そのさまざまな選択肢、それらのURLアドレス、および他の特性を記述)およびセグメント(実際のマルチメディアビットストリームをチャンクの形態で単一のファイルまたは複数のファイルに含む)、という2つの部分に分けてサーバに格納可能である。MDPは、クライアントがHTTP上で動的適応ストリーミングを構築する際に必要な情報を提供する。MPDは、各SegmentのHTTP統一リソース位置指定子(URL)等のメディアプレゼンテーションを記述した情報を含むことにより、GET Segmentリクエストを行う。コンテンツを再生するため、DASHクライアントは、たとえばHTTP、電子メール、サムドライブ、ブロードキャスト、または他の転送方法を使用して、MPDを取得するようにしてもよい。MPDのパーシングによって、DASHクライアントは、プログラムのタイミング、メディアコンテンツの可用性、メディアの種類、解像度、最小および最大帯域幅、マルチメディアコンポーネントのさまざまなエンコーディング選択肢の存在、アクセシビリティ特性および必要なデジタル権利管理(DRM)、ネットワーク上のメディアコンテンツの場所、ならびに他のコンテンツ特性を認識することができる。この情報を用いることにより、DASHクライアントは、適当なエンコーディング選択肢を選択し、たとえばHTTP GETリクエストを使用してセグメントを取り出すことによりコンテンツのストリーミングを開始することができる。ネットワークのスループット変化を可能にする適当なバッファリングの後、クライアントは、後続のセグメントの取り出しを継続するとともに、ネットワーク帯域幅の変動を監視することもできる。クライアントは、適切なバッファを維持するため、さまざまな選択肢のセグメントを(低ビットレートまたは高ビットレートで)取り出すことにより、利用可能な帯域幅への適用方法を決定するようにしてもよい。
DASHにおいては、階層データモデルの使用によって、以下のようにメディアプレゼンテーションを構造化する。メディアプレゼンテーションは、一連の1つまたは複数のPeriodから成り、各Periodは、1つまたは複数のGroupを含み、各Groupは、1つまたは複数のAdaptation Setを含み、各Adaptation Setは、1つまたは複数のRepresentationを含み、各Representationは、1つまたは複数のSegmentから成る。Representationは、メディアコンテンツの選定のうちの1つまたはその部分集合であり、通常、たとえばビットレート、解像度、言語、コーデック等、エンコーディングの選定によって異なる。Segmentは、特定の持続時間のメディアデータと、包含メディアコンテンツをデコーディングして表示するメタデータと、を含む。Segmentは、URIにより識別され、通常はHTTP GETリクエストにより要求可能である。Segmentは、MPDにより規定されたHTTP-URLおよび任意選択としてのバイト範囲と関連付けられたデータの単位として定義可能である。
DASH MPDは、拡張マークアップ言語(XML)に準拠するため、XMLに規定の要素および属性によって規定される。
DASHにおいては、すべての記述子要素が同じ方法で構造化されている。すなわち、スキームを識別するURIを提供する@schemeIdUri属性と、任意選択的な属性@valueおよび任意選択的な属性@idと、を含む。要素のセマンティクスは、採用する方式に固有である。方式を識別するURIは、URNであってもよいし、URLであってもよい。
DASHにおいて、Independent Representationは、その他任意の表現から独立して処理し得る表現として定義可能である。Independent Representationは、独立したビットストリームまたはビットストリームの独立したレイヤを含むものと理解され得る。Dependent Representationは、そのComplementary RepresentationからのSegmentが包含メディアコンテンツコンポーネントのプレゼンテーションおよび/またはデコーディングに必要となる表現として定義可能である。Dependent Representationは、たとえばスケーラブルビットストリームの予測レイヤを含むものと理解され得る。Complementary Representationは、少なくとも1つのDependent Representationを補完する表現として定義可能である。Complementary Representationは、Independent Representationであってもよいし、Dependent Representationであってもよい。Dependent Representationは、@dependencyId属性を含むRepresentation要素により記述可能である。Dependent Representationは、デコーディングおよび/またはプレゼンテーションのために一組のComplementary Representationに依存することを除けば、通常のRepresentationと見なすことができる。@dependencyIdは、すべてのComplementary RepresentationすなわちこのDependent Representationに含まれるメディアコンテンツコンポーネントのプレゼンテーションおよび/またはデコーディングに必要なRepresentationの@id属性の値を含む。
ISOBMFFのトラック基準は、@associationIdに1対1で与えられたRepresentation@id値のリストにマッピングされたDASH MPDの@associationType属性における4文字コードのリストにおいて反映され得る。これらの属性は、メディアRepresentationのメタデータRepresentationとのリンクに用いられるようになっていてもよい。
DASHサービスは、オンデマンドサービスまたはライブサービスとして提供されるようになっていてもよい。前者においては、MPDが静的で、コンテンツ提供者がMPDを発行した時点でメディアプレゼンテーションのすべてのSegmentが既に利用可能である。ただし、後者においては、MPDが採用するSegment URL構成方法に応じて、MPDが静的であってもよいし、動的であってもよく、コンテンツ提供者によってコンテンツが生成され、DASHクライアントに対して発行される際に、Segmentが連続的に生成される。Segment URL構成方法は、テンプレートベースのSegment URL構成方法であってもよいし、Segmentリスト生成方法であってもよい。前者においては、Segmentを要求する前にMPDを更新することなく、DASHクライアントがSegment URLを構成可能である。後者においては、DASHクライアントが更新されたMPDを定期的にダウンロードして、Segment URLを取得する必要がある。このため、ライブサービスの場合は、テンプレートベースのSegment URL構成方法がSegmentリスト生成方法よりも優れている。
Initialization Segmentは、Media Segmentにカプセル化されたメディアストリームのプレゼンテーションに必要なメタデータを含むSegmentとして定義可能である。ISOBMFFベースのセグメントフォーマットにおいて、Initialization Segmentは、MovieBox(「moov」)を含むが、これは、サンプルのメタデータを一切含まない場合もある。すなわち、サンプルの如何なるメタデータも、「moof」ボックスにおいて提供される。
Media Segmentは、通常の速度で再生するための特定の持続時間のメディアデータを含むが、このような持続時間をMedia Segment持続時間またはSegment持続時間と称する。コンテンツ製作者またはサービス提供者は、サービスの所望の特性に応じて、Segment持続時間を選択するようにしてもよい。たとえば、ライブサービスにおいては、比較的短いSegment持続時間の使用により、エンドツーエンドのレイテンシを短縮することを実現するようにしてもよい。その理由として、SegmentがDASHのメディアデータを生成する個別の単位であるため、Segment持続時間は通常、DASHクライアントが知覚するエンドツーエンドのレイテンシの下限となる。コンテンツの生成は通常、メディアデータのSegment全体をサーバで利用可能にするような方法で行われる。さらに、多くのクライアント実装では、GETリクエストの単位としてSegmentを使用する。したがって、ライブサービスの典型的な構成では、Media Segmentの持続時間全体が利用可能であるほか、Segmentにエンコーディングおよびカプセル化されている場合のみ、DASHクライアントがSegmentを要求可能である。オンデマンドサービスの場合は、Segment持続時間を選択する異なる方法が用いられるようになっていてもよい。
Segmentは、たとえば複数の部分でセグメントをダウンロードできるように、Subsegmentへとさらに分離されるようになっていてもよい。Subsegmentは、完全なアクセス単位を含むことが必要となる場合もある。Subsegmentは、各Subsegmentのプレゼンテーション時間範囲およびバイト範囲をマッピングするための情報を含むSegment Indexボックス(SegmentIndexBoxとしても知られる)によってインデックス化されていてもよい。また、Segment Indexボックスは、持続時間およびバイトオフセットを示すことにより、セグメント中のサブセグメントおよびストリームアクセスポイントを記述するようにしてもよい。DASHクライアントは、Segment Indexボックスから得られた情報を使用することにより、バイト範囲HTTPリクエストを用いて特定のSubsegmentに対するHTTP GETリクエストを行うようにしてもよい。比較的長いSegment持続時間が用いられる場合は、Subsegmentの使用により、ビットレート適応に対してHTTP応答のサイズを合理的かつ柔軟に保つようにしてもよい。セグメントのインデックス化情報は、当該セグメントの先頭にある単一のボックスに挿入されていてもよいし、セグメント中の多くのインデックス化ボックスに拡散していてもよい。階層、デイジーチェーン、ハイブリッド等のさまざまな拡散方法が可能である。この技術では、セグメントの先頭に大きなボックスを追加することを避け得る結果、初期ダウンロード遅延の可能性を抑えられ得る。
(Sub)segmentという表記は、SegmentまたはSubsegmentを表す。Segment Indexボックスが存在しない場合、(Sub)segmentという表記は、Segmentを表す。Segment Indexボックスが存在する場合、(Sub)segmentという表記は、たとえばクライアントがSegmentに基づいてリクエストを発行するかSubsegmentに基づいてリクエストを発行するかに応じて、SegmentまたはSubsegmentを表し得る。
MPEG-DASHは、ISOベースメディアファイルフォーマットおよびMPEG-2 Transport Streamの両者のセグメントコンテナフォーマットを定義する。他の仕様が他のコンテナフォーマットに基づいてセグメントフォーマットを規定していてもよい。たとえば、Matroskaコンテナファイルフォーマットに基づくセグメントフォーマットが提案されている。
DASHは、変化するネットワーク帯域幅に合わせて、Adaptation Set内の異なるRepresentationから動的にMedia Segmentを要求することによって、レート適応をサポートする。DASHクライアントがRepresentationを切り替えた場合は、Representation内のコーディング依存性を考慮する必要がある。Representation切り替えは、H.264/AVC等のビデオコーディング技術で一般的に使用されるランダムアクセスポイント(RAP)で発生する場合がある。DASHにおいては、Stream Access Point(SAP)と称するより一般的な概念の導入によって、RepresentationへのアクセスおよびRepresentation間の切り替えのためのコーデックに依存しないソリューションを提供する。DASHにおいては、SAPがRepresentation中の位置として規定され、その位置から始まるRepresentationデータに含まれる情報のみを用いてメディアストリームの再生を開始することができる(Initialization Segment中のデータ(存在する場合)に先立って行われる)。このため、Representationの切り替えは、SAPにおいて実行可能である。
DASHにおいては、幅および高さ(@widthおよび@height)、フレームレート(@frameRate)、ビットレート(@bandwidth)、Representation間の指示された品質順序(@qualityRanking)に基づいて、同じAdaptation Set中のRepresentation間の自動選択が実行されている。@qualityRankingのセマンティクスは、同じAdaptation Set中の他のRepresentationに対するRepresentationの品質ランキングを指定するように規定されている。低い値がより高品質のコンテンツを表す。存在しない場合は、ランキングが規定されない。
以下のような複数種類のSAPが規定されている。SAPタイプ1は、いくつかのコーディング方式で「Closed GOPランダムアクセスポイント」として知られるものに対応し(デコーディング順序のすべての画像を正しくデコーディング可能であり、ギャップなく正しくデコーディングされた画像の連続した時間シーケンスとなる)、さらに、デコーディング順序の最初の画像は、プレゼンテーション順序の最初の画像でもある。SAPタイプ2は、いくつかのコーディング方式で「Closed GOPランダムアクセスポイント」として知られるものに対応し(デコーディング順序のすべての画像を正しくデコーディング可能であり、ギャップなく正しくデコーディングされた画像の連続した時間シーケンスとなる)、デコーディング順序の最初の画像は、プレゼンテーション順序の最初の画像ではない場合がある。SAPタイプ3は、いくつかのコーディング方式で「Open GOPランダムアクセスポイント」として知られているものに対応し、デコーディング順序の画像の一部は、正しくデコーディングできず、SAPと関連付けられた内部コード化画像よりもプレゼンテーション時間が短い場合もある。
MPEG-2等の一部のビデオコーディング規格において、各内部画像は、コード化シーケンスにおけるランダムアクセスポイントである。H.264/AVCおよびH.265/HEVC等の一部ビデオコーディング規格においては、相互予測のために複数の基準画像を柔軟に使用する機能の結果として、内部画像ではランダムアクセスに不十分な場合がある。したがって、コーディングタイプからそのような機能を推測するのではなく、ランダムアクセスポイントの機能に関して画像がマーキングされ得る。たとえば、H.264/AVC規格において規定されるIDR画像をランダムアクセスポイントとして使用可能である。Closed GOPは、すべての画像を正しくデコーディング可能な画像群である。たとえば、H.264/AVCにおいては、Closed GOPがIDRアクセス単位を起点としていてもよい。
Open GOPは、出力順序の最初の内部画像に先行する画像を正しくデコーディングできない可能性があるものの、出力順順序の最初の内部画像に後続する画像は正しくデコーディング可能である画像群である。このような最初の内部画像は、たとえばHEVCのCRA NAL単位型を使用することにより、ビットストリームにおける指定および/またはビットストリームからの指定による決定がなされていてもよい。Open GOPを開始する最初の内部画像に出力順序で先行し、最初の内部画像にデコーディング順序で後続する画像は、先行画像と称し得る。先行画像には、デコーディング可能およびデコーディング不可能の2種類が存在する。HEVCのRADL画像のようにデコーディング可能な先行画像は、Open GOPを開始する最初の内部画像をデコーディングの起点とする場合に正しくデコーディング可能なものである。言い換えると、デコーディング可能な先行画像は、相互予測における基準として、デコーディング順序の最初の内部画像またはその後続の画像のみを使用する。HEVCのRASL画像のようにデコーディング不可能な先行画像は、Open GOPを開始する最初の内部画像をデコーディングの起点とする場合に正しくデコーディングできないものである。
DASH Preselectionは、単一のデコーダインスタンスによる一体的な消費が予想されるMPDのメディアコンポーネントの部分集合を規定するが、この消費には、デコーディングおよびレンダリングを含んでいてもよい。Preselectionの主要なメディアコンポーネントを含むAdaptation Setは、主Adaptation Setと称する。また、各Preselectionは、1つまたは複数の部分的Adaptation Setを含んでいてもよい。部分的Adaptation Setは、主Adaptation Setと組み合わせて処理することが必要となり得る。主Adaptation Setおよび部分的Adaptation Setは、Preselection記述子およびPreselection要素という2つの手段のうちの1つによって示され得る。
仮想現実は、急速に発展している技術分野であって、ユーザヘッドセット(ヘッドマウントディスプレイとしても知られる)等のユーザ機器にイメージまたはビデオコンテンツ(オーディオを伴う場合もある)が提供される。周知のように、ユーザ機器には、コンテンツ元からのライブまたは格納フィードが提供され、そのフィードは、ユーザ機器を通じた没入型出力のための仮想空間を表す。現在、多くの仮想現実用ユーザ機器では、いわゆる3自由度(3DoF)を採用しており、これは、ヨー軸、ピッチ軸、およびロール軸における頭部の動きの測定によって、ユーザが見るものすなわち表示域を決定することを意味する。ユーザ機器の位置および位置の変化を考慮したレンダリングによって、没入感を高め得ることが知られている。そこで、3DoFをさらに増強したものが6自由度(6DoF)仮想現実システムであって、ユーザは、ユークリッド空間を自由に移動できるほか、頭部をヨー軸、ピッチ軸、およびロール軸に回転可能である。6自由度仮想現実システムによれば、ボリュメトリックコンテンツの提供および消費が可能となる。ボリュメトリックコンテンツは、あらゆる角度から空間および/または物体を3次元表現したデータを含むため、ユーザは、空間および/または物体の周りを自由に移動して、あらゆる角度からそれらを視認可能となる。このようなコンテンツは、幾何学(たとえば、形状、サイズ、3次元空間における位置)を記述するデータならびに色、不透明度、および反射率等の属性によって規定され得る。また、データは、2次元ビデオのフレームと同様に、所与の時間インスタンスにおける形状および属性の時間的変化を規定することも可能である。
360°ビデオ(360-degree video)または仮想現実(VR)ビデオ(virtual reality (VR) video)という用語は、同じ意味で使用する場合がある。これらは一般的に、表示構成における単一の時点にビデオの一部のみが表示されるような大きな視野(FOV)を提供するビデオコンテンツを表し得る。たとえば、VRビデオは、たとえばおよそ100°の視野を表示可能なヘッドマウントディスプレイ(HMD)上に表示され得る。表示されるVRビデオコンテンツの空間的部分集合は、HMDの方向に基づいて選択され得る。別の例においては、フラットパネル表示環境が想定されるが、この場合は、たとえば最大40°の視野が表示され得る。このようなディスプレイで広視野コンテンツ(たとえば、魚眼)を表示する場合は、画像全体ではなく、空間的部分集合を表示するのが好ましいとされてもよい。
MPEG Omnidirectional Media Format(ISO/IEC 23090-2)は、仮想現実(VR)システムの規格である。OMAFは、メディアフォーマット(ISOBMFFから派生したファイルフォーマットならびにDASHおよびMPEG Media Transportのストリーミングフォーマットの両者を含む)を規定する。OMAFバージョン1は、360°のビデオ、イメージ、オーディオ、および関連する時限テキストをサポートし、3自由度(3DoF)のコンテンツ消費を容易化する。つまり、全方位コンテンツが網羅する任意の方位および仰角範囲ならびに傾斜角度で表示域を選択可能であるものの、コンテンツは視認位置の如何なる並進変化にも適応されない。以下に詳述する表示域に応じたストリーミングシナリオについても、3DoFに合わせて設計されているが、潜在的には異なる自由度数への適応も可能である。
図1を参照しつつ、OMAFについて論じる。現実世界の視聴シーン(A)は、オーディオセンサのほか、一組のカメラまたは複数のレンズおよびセンサを備えたカメラ機器によって取り込まれ得る(220)。取得の結果として、一組のデジタルイメージ/ビデオ(Bi)およびオーディオ(Ba)信号が得られる。カメラ/レンズは、カメラ集合またはカメラ機器の中心点周りの全方向を網羅し得るため、360°ビデオと称する。
多くのさまざまなマイク構成によってオーディオを取り込み、チャネルベースの信号、静的もしくは動的(すなわち、3Dシーンの移動)物体信号、ならびにシーンベースの信号(たとえば、高次アンビソニックス)といった複数の異なるコンテンツフォーマットとして格納することができる。チャネルベースの信号は、CICP(Coding-Independent Code-Point)で定義されたスピーカレイアウトのうちの1つに準拠し得る。全方位メディアアプリケーションにおいては、ヘッドフォンを介したプレゼンテーション用として、レンダリングされた没入型オーディオプログラムのスピーカレイアウト信号がバイナリ化されていてもよい。
同じ時間インスタンスのイメージ(Bi)がパッキング画像(D)に対してステッチング、投影、およびマッピングされる(221)。
単眼360°ビデオの場合は、ある時間インスタンスの入力イメージのステッチングによって、あるビューを表す投影画像を生成するようにしてもよい。単眼コンテンツのイメージステッチング、投影、および領域単位のパッキングプロセスの一例を図3に示す。入力イメージ(Bi)がステッチングされ、3次元投影構造(たとえば、単位球であってもよい)上に投影される(202)。投影構造は、平面またはその一部等、1つまたは複数の表面を含むと考えられ得る。投影構造(projection structure)は、取り込まれたVRイメージ/ビデオコンテンツが投影され、各投影画像が形成され得る1つまたは複数の表面から成る3次元構造として定義可能である。投影構造上のイメージデータが2次元投影画像(左目用のCL、右目用のCR)上にさらに配置される(203)。投影(projection)という用語は、一組の入力イメージを投影画像に投影するプロセスとして定義可能である。たとえば、正距円筒投影(ERP)フォーマットおよびキューブマップ投影(CMP)フォーマット等、投影画像の所定の一組の表現フォーマットが存在し得る。投影画像は、球全体を網羅するものと考えられ得る。
その後、任意選択として、領域単位のパッキング(204)の適用により、投影画像203(C)がパッキング画像205(D)上にマッピングされる。領域単位のパッキングが適用されない場合は、パッキング画像が投影画像と同一であり、この画像が入力としてイメージ/ビデオエンコーディング206に与えられる。それ以外の場合は、パッキング画像(D)における各領域の場所、形状、およびサイズを示すことにより、投影画像(C)の領域がパッキング画像上にマッピングされ、このパッキング画像(D)が入力としてイメージ/ビデオデコーディングに与えられる。領域単位のパッキング(region-wise packing)という用語は、投影画像がパッキング画像にマッピングされるプロセスとして定義可能である。パッキング画像(packed picture)という用語は、投影画像の領域単位のパッキングにより得られる画像として定義可能である。
立体視360°ビデオの場合は、ある時間インスタンスの入力イメージのステッチングによって、それぞれの目に1つずつ、2つのビュー(CL、CR)を表す投影画像を生成する。両ビュー(CL、CR)は、同じパッキング画像(D)にマッピングし、従来の2Dビデオエンコーダによりエンコーディングすることができる。あるいは、投影画像の各ビューは、それ自体のパッキング画像にマッピングすることも可能であり、その場合は、図2に示すように、画像のステッチング、投影、および領域単位のパッキングが実行される。左右いずれかのビューの一連のパッキング画像は、独立してコーディングすることも可能であるし、マルチビュービデオエンコーダを使用する場合は、その他のビューから予測することも可能である。
イメージのステッチング、投影、および領域単位のパッキングプロセスは、同じソースイメージに対して複数回実行することにより、たとえば投影構造の異なる方向に対して、同じコンテンツの異なるバージョンを生成可能である。同様に、領域単位のパッキングプロセスは、同じ投影画像から複数回実行することにより、エンコーディング対象の二組以上のパッキング画像を生成可能である。
360°パノラマコンテンツ(すなわち、イメージおよびビデオ)は、撮像機器の取り込み位置周りの全360°視野を水平方向に網羅する。垂直視野は異なっていてもよく、たとえば180°が可能である。水平方向360°および垂直方向180°の視野を網羅するパノラマイメージは、正距円筒投影(ERP)によって2次元像面にマッピングされた球により表され得る。この場合は、水平座標が経度に相当し、垂直座標が緯度に相当すると考えられ得るが、変換やスケーリングは適用されない。単眼正距円筒パノラマ画像を構成するプロセスを図4に示す。カメラアレイまたは複数のレンズおよびセンサを備えたカメラ機器の魚眼画像等の一組の入力イメージ211が球状イメージ213にステッチングされる(212)。球状イメージが円筒215(上下面なし)に対してさらに投影される(214)。円筒の展開(216)によって、2次元投影画像217を構成する。実際には、提示のステップのうちの1つまたは複数が統合されるようになっていてもよい。たとえば、入力イメージは、中間の球面への投影なく、円筒に直接投影されるようになっていてもよい。正距円筒パノラマの投影構造は、単一の表面を含む円筒になると考えられ得る。
一般的には、多面体(すなわち、平らな多角形の面、直線状の縁部、ならびに鋭い角部もしくは頂点を含む3次元立体物、たとえば、立方体または錐体)、円筒(正距円筒投影に関して上述した通り、球状イメージを円筒に投影)、円筒(最初の球面への投影なく直接)、円錐等の異なる種類の立体幾何学構造に360°コンテンツをマッピングした後、2次元像面に展開することができる。
場合により、水平方向360°および垂直方向180°未満の視野のパノラマコンテンツは、球の極域が2次元像面にマッピングされていない正距円筒投影の特殊ケースと考えられ得る。場合により、パノラマイメージは、水平方向視野が360°未満、垂直方向視野が最大180°であってもよく、それ以外の場合は、正距円筒投影フォーマットの特性を有する。
領域単位のパッキング情報は、ビットストリーム中またはビットストリームとともに、メタデータとしてエンコーディングされるようになっていてもよい。たとえば、パッキング情報には、上述の通り、所定または指定のソースフォーマットからパッキング画像フォーマットへの、たとえば、投影画像からパッキング画像への領域単位のマッピングを含んでいてもよい。
長方形領域単位のパッキングメタデータは、以下のように記述され得る。
メタデータは、各領域について、投影画像中の長方形、パッキング画像中の各長方形、ならびに90°、180°、もしくは270°の回転、水平方向ミラーリング、および/もしくは垂直方向ミラーリングの任意選択的な変換を規定する。長方形は、たとえば左上角部および右下角部の場所により示されていてもよい。マッピングには、再サンプリングを含んでいてもよい。投影画像とパッキング画像とでそれぞれの長方形のサイズが異なり得るため、このメカニズムによって、領域単位の再サンプリングが推測される。
特に、領域単位のパッキングは、以下のような使用シナリオのシグナリングを提供する。
1)表示域から独立した投影の追加圧縮は、異なる領域のサンプリングを高密度化して球全体でより均一性を高めることで実現される。たとえば、ERPの上部および下部がオーバサンプリングされ、領域単位のパッキングの適用によって、水平方向のダウンサンプリングが可能となる。
2)キューブマップ投影等の平面ベースの投影フォーマットの面を適応的に配置する。
3)表示域から独立した投影フォーマットを使用する表示域従属ビットストリームを生成する。たとえば、ERPの領域またはCMPの面は、サンプリング密度が異なり得るため、その基礎となる投影構造の方向も異なり得る。
4)抽出器トラックにより表されるパッキング画像の領域を示す。これは、抽出器トラックが異なる解像度のビットストリームからタイルを収集する場合に必要となる。
ガードバンド(guard band)は、パッキング画像中の非レンダリングエリアとして定義可能であるが、パッキング画像のレンダリング部を改良して継ぎ目等の視覚的アーチファクトを回避または軽減するのに使用可能である。
図1を再び参照して、OMAFによれば、イメージのステッチング、投影、および領域単位のパッキングを省略して、イメージ/ビデオデータをそれぞれの取り込みフォーマットにてエンコーディングすることができる。この場合、イメージ(D)は、イメージ(Bi)と同じものと考えられ、時間インスタンス当たりにエンコーディングされる魚眼イメージの数は限られる。
オーディオの場合は、取り込まれる信号が本質的に没入型かつ全方位であることから、ステッチングプロセスは不要である。
ステッチイメージ(D)は、コード化イメージ(Ei)またはコード化ビデオビットストリーム(Ev)としてエンコーディングされる(206)。取り込まれたオーディオ(Ba)は、オーディオビットストリーム(Ea)としてエンコーディングされる(222)。コード化イメージ、ビデオ、および/またはオーディオはその後、特定のメディアコンテナファイルフォーマットに従って、ファイル再生(F)用のメディアファイルまたはストリーミング(Fs)用の一連の初期化セグメントおよびメディアセグメントとして合成される(224)。本明細書において、メディアコンテナファイルフォーマットは、ISOベースメディアファイルフォーマットである。また、ファイルカプセル化器224は、デコーディングされたパッキング画像のレンダリングを補助する投影および領域単位のパッキング情報等のメタデータをファイルまたはセグメントに含める。
ファイル中のメタデータには、以下を含んでいてもよい。
投影画像の投影フォーマット
魚眼ビデオパラメータ
パッキング画像が網羅する球面の面積
投影画像に対応する投影構造のグローバル座標軸に対する方向
領域単位のパッキング情報
領域単位の品質ランキング(任意)
領域単位のパッキング情報は、ビットストリーム中またはビットストリームとともに、たとえば領域単位のパッキングSEIメッセージおよび/またはビットストリームを含むファイル中の領域単位のパッキングボックス等のメタデータとしてエンコーディングされるようになっていてもよい。たとえば、パッキング情報には、上述の通り、所定または指定のソースフォーマットからパッキング画像フォーマットへの、たとえば、投影画像からパッキング画像への領域単位のマッピングを含んでいてもよい。領域単位のマッピング情報には、たとえば各マッピング領域について、投影画像における開始長方形(投影領域としても知られる)およびパッキング画像における最終長方形(パッキング領域としても知られる)を含んでいてもよく、開始長方形内のサンプルは最終長方形にマッピングされ、長方形は、たとえば左上角部および右下角部の場所により示されていてもよい。マッピングには、再サンプリングを含んでいてもよい。この追加または代替として、パッキング情報には、座標系に対する3次元投影構造の方向、使用される投影フォーマットの表示、領域間ならびに/または第1および第2の空間領域シーケンス間の画質ランキングを示す領域単位の品質ランキング、90、180、もしくは270°の回転、水平方向ミラーリング、ならびに垂直方向ミラーリング等の1つまたは複数の変換操作のうちの1つまたは複数を含んでいてもよい。パッキング情報のセマンティクスは、パッキング領域内の各サンプルの場所について、それぞれの球座標の場所であるデコード画像を示すように規定されていてもよい。
セマンティクス(Fs)は、配信メカニズムによってプレーヤに配信され得る(225)。
ファイルカプセル化器が出力するファイル(F)は、ファイル脱カプセル化器が入力するファイル(F’)と同一である。ファイル脱カプセル化器226は、ファイル(F’)または受信セグメント(F’s)を処理して、コード化ビットストリーム(E’a、E’v、および/またはE’i)を抽出するとともに、メタデータをパーシングする。その後、オーディオ、ビデオ、および/またはイメージがデコード信号(オーディオの場合のB’aおよびイメージ/ビデオの場合のD’)としてデコーディングされる(228)。デコーディングされたパッキング画像(D’)は、現在の視認方向もしくは表示域ならびにファイルからパーシングされた投影、球面網羅、投影構造の方向、および領域単位のパッキングメタデータに基づいて、ヘッドマウントディスプレイまたはその他任意の表示装置230の画面上に投影される(229)。同様に、デコードオーディオ(B’a)は、現在の視認方向に応じて、たとえばヘッドフォン231を通じてレンダリングされる(229)。現在の視認方向は、頭部追跡および場合により視線追跡の機能227によって決定される。デコードビデオおよびオーディオ信号の適当な部分のレンダリングのためにレンダラ229が使用するほか、現在の視認方向は、ビデオ・オーディオデコーダ228によるデコーディング最適化のために用いられるようになっていてもよい。
上述のプロセスは、ライブおよびオンデマンドの両使用事例に適用可能である。
アプリケーションによってHMDまたは別の表示装置にレンダリングされたビデオは、いずれの時点においても、360°ビデオの一部をレンダリングする。この部分は、表示域として規定され得る。表示域は、レンダリング表示により表示された全方位ビデオにおいて表される360°世界上の窓として理解され得る。別の定義によれば、表示域は、現在表示されている球状ビデオの一部として規定され得る。表示域は、水平方向および垂直方向視野(FOVまたはFoV)を特徴としていてもよい。
視点は、点または空間として規定され、ユーザはそこからシーンを見ることができ、通例はカメラ位置に対応する。頭部のわずかな動きは、異なる視点を暗示しない。視認位置(viewing position)は、ユーザがシーンを見る際の起点となる視認空間内の位置として定義可能である。視認空間(viewing space)は、イメージおよびビデオのレンダリングが可能で、VR体験が有効な視認位置の3D空間として定義可能である。
ボリュメトリックコンテンツの一般的な表現フォーマットとして、三角形メッシュ、点群(point cloud)、およびボクセルが挙げられる。コンテンツに関する時間的情報としては、個々の取り込みインスタンス、すなわち、フレームまたは時間の関数としての物体の位置が挙げられ得る。
演算リソースおよび3次元取得機器の進歩により、高精細なボリュメトリック表現の再構成が可能である。このようなコンテンツを構成可能な方法の例として、赤外線、レーザ、飛行時間、および構造化光技術がある。ボリュメトリックコンテンツの表現は、データの使用方法によって決まり得る。たとえば、ボリュメトリック医療イメージの表現には、高密度のボクセルアレイが用いられるようになっていてもよい。3次元グラフィックスにおいては、ポリゴンメッシュが多用される。一方、トポロジが必ずしも2次元表面でも多様体でもない現実世界のシーンの取り込み等の用途には、点群が最適である。別の方法では、一組のテクスチャおよび深度マップとして、3次元データをコーディングする。これと密接に関係しているのが標高地図や多層地形図の使用である。当然のことながら、本明細書の実施形態は、上記技術のいずれにも適用可能である。
3次元世界の「ボクセル」は、2次元世界のピクセルに対応する。ボクセルは、3次元グリッドレイアウトにて存在する。八分木は、3次元空間の分離に用いられるツリーデータ構造である。八分木は、四分木の3次元類似物である。スパースボクセル八分木(SVO)は、さまざまなサイズの一組のソリッドボクセルを含む空間のボリュームを記述する。ボリューム内の空のエリアは、ツリーに存在しないため、「スパース」と称する。
シーンの3次元ボリュメトリック表現は、少なくとも1つのマルチカメラ機器の入力ストリームに基づいて、複数のボクセルとして決定され得る。このため、少なくとも1つ、好ましくは複数(すなわち、2、3、4、5つ以上)のマルチカメラ機器の使用により、シーンの3Dビデオ表現を取り込むことができる。マルチカメラ機器は、シーンに対して異なる場所に分布しているため、それぞれがシーンの異なる3Dビデオ表現を取り込む。各マルチカメラ機器により取り込まれた3Dビデオ表現は、シーンの3Dボリュメトリック表現を生成するための入力ストリームとして使用されるようになっていてもよく、前記3Dボリュメトリック表現は、複数のボクセルを含む。たとえば選択3D点について、ボクセル中の最大3D点数を超えることなく、当該選択3D点から所定の閾値内のすべての隣接3D点がボクセルに統合されるように、複数の3D点を含むボクセルへと3D点を統合することによって、取り込まれた3D点からボクセルが形成されるようになっていてもよい。
また、ボクセルは、スパースボクセル八分木の構成により形成されていてもよい。このようなツリーの各リーフは、世界空間におけるソリッドボクセルを表し、ツリーのルートノードは、世界の境界を表す。スパースボクセル八分木の構成は、1)各入力深度マップを世界空間点群にマッピングするステップ(深度マップの各ピクセルが1つまたは複数の3D点にマッピングされる)と、2)カメライメージおよび深度マップにおけるソースピクセルの近傍を調べることによって、色および表面法線ベクトル等のボクセル属性を決定するステップと、3)深度マップからの深度値と深度マップの解像度に基づいて、ボクセルのサイズを決定するステップと、4)世界境界に対するサイズの関数として、ソリッドボクセルのSVOレベルを決定するステップと、5)世界境界に対する当該レベル上のボクセル座標を決定するステップと、6)決定したボクセル座標に到着するまで、新たなSVOノードの生成および/または既存のSVOノードのトラバースを行うステップと、7)ツリーのリーフとしてソリッドボクセルを挿入し、場合により上記座標に存在していたボクセルからの属性の置き換えまたは統合を行うステップと、を有していてもよい。それにも関わらず、シーンの3Dボリュメトリック表現内のボクセルのサイズは、互いに異なる場合がある。このため、3Dボリュメトリック表現のボクセルは、シーン内の空間的な場所を表す。
ボリュメトリックビデオフレームは、ビデオシーケンス中の特定時点における世界をモデル化した完全なスパースボクセル八分木と見なすことができる。ボクセルの属性には、色、不透明度、表面法線ベクトル、および表面材料特性等の情報を含む。これらは、スパースボクセル八分木において参照されるが(たとえば、ソリッドボクセルの色)、別個に格納することも可能である。
点群は通常、ボリュメトリックコンテンツを格納するデータ構造として使用される。点群と比較して、スパースボクセル八分木は、さまざまなサイズのソリッドボクセルによる有限体積の再帰的細分を表す一方、点群は、使用する座標値の精度によってのみ制限される組織化されていない一組の別個の点を表す。
高密度点群およびボクセルアレイ等の技術においては、数千万個あるいは数億個もの点が存在し得る。このようなコンテンツをIPネットワーク上のサーバおよびクライアント等のエンティティ間で格納・転送するには通例、圧縮が必要である。
ユーザの位置は、たとえばユーザが所与の仮想現実空間内で個々の物体または物体群の周りを自由に移動でき、現実世界におけるユーザの頭部の動き(たとえば、回転および場所)に応じて異なる角度から物体を見られるように、ボリュメトリック仮想現実コンテンツ内で提供されるコンテンツに対して検出可能である。また、いくつかの例において、ユーザは、複数の異なる仮想現実空間を見て探索し、ある仮想現実空間から別の仮想現実空間へと移動するようにしてもよい。
ヘッドマウントディスプレイ等のレンダリング配置によって観察可能または聴取可能な環境の角度的範囲は、視野(FOV)と称し得る。ユーザが実際に観察または聴取するFOVは、瞳孔間距離および仮想現実ヘッドセットのレンズとユーザの目との間の距離に依存するが、仮想現実ヘッドセットをユーザが装着している場合は、所与の表示装置のすべてのユーザに対して略同じであると考えることができる。
ボリュメトリックコンテンツを単一の視認位置から見る場合、コンテンツの一部(半分であることが多い)は、ユーザの反対側を向くため見えない。この部分は、「後向きコンテンツ」と称する場合がある。
ボリュメトリックイメージ/ビデオ配信システムは、ボリュメトリックシーンの一部を表す複数のパッチを提供するとともに、各パッチについて、パッチの前方表面が見える一組の方向を示すパッチ視認性情報を提供するようにしてもよい。ボリュメトリックイメージ/ビデオ配信システムはさらに、クライアント機器と関連付けられた1つまたは複数の視認位置を提供するとともに、1つまたは複数のパッチの前方表面が1つまたは複数の視認位置から見えることをパッチ視認性情報が示すかに応じて、パッチのうちの1つまたは複数を処理するようにしてもよい。
パッチ視認性情報は、ボリュメトリック空間においてパッチの前方表面が見られる場所を示すデータである。たとえば、パッチ視認性情報には視認性円錐を含んでいてもよく、これは、視認性円錐方向ベクトル(X,Y,Z)および開口角(A)を含んでいてもよい。開口角(A)は、パッチの前方表面が見られる一組の空間角度を規定する。別の例において、パッチ視認性メタデータには、全方位メディアフォーマット(OMAF)規格(ISO/IEC 23090-2)により規定されたものと同一または同様の境界球面および球領域メタデータの定義を含んでいてもよい。境界球面は、たとえば球の中心の3次元位置および球の半径によって規定され得る。視認位置が境界球面と同位置である場合、パッチは、指定の球領域内において視認可能と考えられ得る。一般的に、境界面の形状は、円筒、立方体、または直方体等、球以外の形状であってもよい。境界面の中心の3次元位置が同じである一方、半径(または、3次元位置からの境界面の距離を示す情報)が異なる複数組のパッチ視認性メタデータが規定されていてもよい。オクルージョンの取り扱いのため、パッチ視認性メタデータを複数示すことが有効な場合もある。
ボリュメトリックイメージ/ビデオ配信システムは、1つまたは複数のパッチ選択モジュールを備えていてもよい。あるパッチ選択モジュールは、ユーザ機器、たとえば、ヘッドセットのレンダリングモジュールに伝送されるパッチを決定するように構成されていてもよい。別のパッチ選択モジュールは、デコーディングされるパッチを決定するように構成されていてもよい。第3のパッチ選択モジュールは、レンダリングされるデコーディングパッチを決定するように構成されていてもよい。ボリュメトリックイメージ/ビデオ配信または再生システムにおいては、パッチ選択モジュールの如何なる組み合わせが存在していてもよいし、アクティブであってもよい。パッチ選択では、パッチのパッチ視認性情報、現在の視認位置、現在の視認方向、予想される将来の視認位置、および/または予想される将来の視認方向を利用するようにしてもよい。
場合により、各ボリュメトリックパッチは、2次元の色(または、他の形態のテクスチャ)イメージおよび対応する深度イメージ(深度マップとしても知られる)に投影され得る。この変換によれば、両イメージを用いることにより、ヘッドセットのクライアントレンダリングモジュールにおいて、各パッチを変換してボリュメトリック形態に戻すことが可能となる。
場合によっては、点群フレーム等のボリュメトリックイメージのソースボリュームが1つまたは複数の投影面に投影されるようになっていてもよい。投影面上のパッチが決定されてもよく、1つまたは複数の2次元フレーム上に配置されるようになっていてもよい。上記の通り、テクスチャおよび深度パッチが同様に形成されていてもよく、ソースボリュームの投影面への投影およびスパース投影の修復を示す。言い換えると、メッシュ要素、点、および/またはボクセル等の幾何学的プリミティブを含む3次元(3D)シーンモデルが1つまたは複数の投影面に投影される。これらの投影面形状は、2D平面(通常、投影されたソースボリュームごとに2つの平面(一方がテクスチャ用、もう一方が深度用))に「展開」され得る。「展開」には、パッチの決定を含んでいてもよい。その後、2D平面は、標準的な2Dイメージまたはビデオ圧縮技術を用いてエンコーディングされるようになっていてもよい。関連する投影形状情報がエンコードビデオファイルと併せてデコーダに伝送されるようになっていてもよい。その後、デコーダは、コード化イメージ/ビデオシーケンスをデコーディングし、逆投影を実行して、任意所望の表現フォーマット、たとえば、元のメッシュモデルデータからの点群の再構成等、開始フォーマットと異なっていてもよいで3Dシーンモデル物体を再生成するようにしてもよい。
場合によっては、ボリュメトリックビデオまたはイメージの複数の点(たとえば、点群)が同じピクセル位置に投影される。このような場合は、2つ以上の「レイヤ」を生成することにより取り扱い可能である。点群圧縮等のボリュメトリックビデオにおけるレイヤの概念は、スケーラブルビデオコーディングにおけるレイヤの概念と異なる場合があることに留意する。したがって、PCCレイヤ(PCCレイヤ)またはボリュメトリックビデオレイヤ(volumetric video layer)等の用語は、スケーラブルビデオコーディングのレイヤと区別するために使用可能である。各ボリュメトリック(3D)パッチは、2つ以上の2Dパッチに投影され、同じ2D位置に投影された点等の視覚データの異なるレイヤを表し得る。パッチは、たとえば投影面までの距離の昇順に基づいて組織化されていてもよい。より正確に、以下の例示的なプロセスは、2つのレイヤの生成に使用可能であるが、他の数のレイヤにも一般化可能である。H(u,v)を同じピクセル(u,v)に投影される現在のパッチの一組の点とする。近傍レイヤとも称する第1の層は、最小深度D0でH(u,v)の点を格納する。遠方レイヤと称する第2のレイヤは、区間[D0,D0+d]内で最も深いH(u,v)の点を取り込む。ここで、dは、表面厚さを表すユーザ定義パラメータである。
ボリュメトリックイメージ/ビデオは、テクスチャおよび深度の追加または代替として、反射率、不透明度もしくは透明度(たとえば、アルファチャネルパッチ)、表面法線、アルベド、ならびに/または他の材料もしくは表面属性パッチ等、他の種類のパッチを含み得ることが了解されるものとする。
2次元形態のパッチが1つまたは複数のアトラスとしてパッキングされるようになっていてもよい。テクスチャアトラスは当技術分野において周知であり、サブイメージから成るイメージを含むが、このイメージは、グラフィックスハードウェアにより1つの単位として処理され、単一のイメージとして圧縮・伝送されることにより、後で識別・解凍可能である。形状アトラスは、テクスチャアトラスと同様に構成され得る。テクスチャおよび形状アトラスは、別個の画像として(かつ、ボリュメトリックビデオの場合は別個の画像シーケンスとして)処理されるようになっていてもよいし、たとえばフレームパッキングが従来から行われている方式と同様に、同じフレーム上にパッキングされるようになっていてもよい。アトラスは、イメージまたはビデオエンコーダによりフレームとしてエンコーディングされるようになっていてもよい。
また、アトラスにおけるサブイメージのレイアウトは、他の時空間単位とは独立してデコーディング可能な時空間単位として、類似の視認性情報を有するパッチまたは一組のパッチをエンコーディングできるように組織化されていてもよい。たとえば、High Efficiency Video Coding(HEVC)の背景において理解されるように、タイルグリッドがエンコーディングのために選択されてもよく、類似の視認性情報を有するパッチまたはパッチ群が動き制約タイル集合(MCTS)としてエンコーディングされ得るように、アトラスが組織化されていてもよい。
場合によっては、ISOベースメディアファイルフォーマットの背景において理解されるか、または、任意の類似コンテナファイルフォーマット構造と同様に、1つまたは複数の(一式ではない)時空間単位がトラックとして提供・格納されるようになっていてもよい。このようなトラックは、パッチトラックと称し得る。パッチトラックは、たとえばOMAFの背景において理解されるようなサブ画像トラックであってもよいし、ISO/IEC 14496-15の背景において理解されるようなタイルトラックであってもよい。
場合によっては、1つまたは複数のアトラスの複数のバージョンがエンコーディングされる。異なるバージョンとしては、同じ解像度での1つもしくは複数のアトラスの異なるビットレートバージョン、アトラスの異なる空間解像度、ならびに異なるランダムアクセス区間用の異なるバージョンのうちの1つまたは複数が挙げられるが、これらに限定されない。これらには、1つまたは複数の内部コード化アトラスを含んでいてもよい(すべての画像にランダムアクセス可能である)。
場合によっては、OMAFおよび/またはISO/IEC 14496-15の背景において理解されるように、抽出器トラック等のメタデータとして、テクスチャアトラスの異なるバージョンからのパッチの組み合わせが規定され、記述されるようになっていてもよい。
テクスチャアトラスならびに場合によっては各形状画像および/もしくは他の補助画像(存在する場合)の総サンプル数が、ビデオコーデックのレベル限界等の限界を超えた場合は、その制限に従うように規定が生成されるようになっていてもよい。たとえば、主観的な重要度に応じて、低解像度のテクスチャアトラスからパッチが選択されるようになっていてもよい。この選択は、視認位置に関係なく実行されるようになっていてもよい。上記規定には、従う制限を特徴付けるメタデータ、たとえば、従うコーデックレベルを伴っていてもよい。
規定は、視認性円錐(または、一般的に特定の視認性)に固有とされ、当該視認性円錐内で見えないパッチは除外していてもよい。規定が生成される視認性円錐の選択は、ある規定から別の規定への切り替えが頻繁に発生しないと予想されるように、合理的な回数に制限されていてもよい。規定の視認性円錐は、2つの規定間の交互の切り替えを回避するため、重なり合っていてもよい。この規定には、視認性円錐(または、一般的に視認性情報)を示すメタデータを伴っていてもよい。
規定では、独立した時空間単位の特定のグリッドまたはパターンを使用することができる。たとえば、規定では、特定のタイルグリッドを使用可能であるが、タイル境界はMCTS境界でもある。この規定には、時空間的単位として好適な潜在的ソースを示すメタデータ(たとえば、トラック群、トラック、または表現)を伴っていてもよい。
場合によっては、パッチトラックがDASHの背景におけるRepresentationを構成する。その結果、DASH MPDのRepresentation要素は、パッチ視認性メタデータ等、パッチトラックと関連したパッチに関するメタデータを提供し得る。クライアントは、パッチ視認性メタデータに基づいて、パッチRepresentationを選択するとともに、選択したRepresentationから(Sub)segmentを要求するようにしてもよい。
収集器トラック(collector track)は、MCTSまたはサブ画像のコード化ビデオデータ等を他のトラックから暗示的または明示的にコード化ビデオデータを抽出するトラックとして定義可能である。ファイルリーダまたは同等のものによって分解されると、収集器トラックは、ビデオコーディング規格またはフォーマットに準拠したビットストリームになると考えられ得る。収集器トラックは、たとえばMCTSまたはサブ画像の抽出によって、MCTSまたはサブ画像がグリッドに配置されたコード化画像シーケンスを構成するようにしてもよい。たとえば、収集器トラックが2つのMCTSまたはサブ画像を抽出した場合は、これらがMCTSまたはサブ画像の2×1グリッドとして配置されるようになっていてもよい。後述の通り、他のトラックからMCTSまたはサブ画像を抽出する抽出器トラックを収集器トラックと見なすことができる。後述するようなタイルベーストラックが収集器トラックの別の例である。収集器トラックは、収集トラックとも称し得る。収集器トラックに対する抽出の元となるトラックは、収集項目トラックと称し得る。
H.264/AVCおよびHEVCに関してISO/IEC 14496-15に規定された抽出器によれば、NAL単位データを参照により抽出するトラックのコンパクトな構成が可能である。抽出器は、NAL単位様構造である。NAL単位様構造は、他のNAL単位のように、NAL単位ヘッダおよびNAL単位ペイロードを含むように規定されていてもよいが、NAL単位様構造においては、(NAL単位に必要な)始端コードエミュレーションの防止が守られていない可能性もある。HEVCに関して、抽出器は、1つまたは複数の構成器を含む。サンプル構成器は、参照により、別のトラックのサンプルからNAL単位データを抽出する。インライン構成器は、NAL単位データを含む。インライン(in-line)という用語は、たとえばデータ単位との関連において、包含するシンタックス構造が(参照またはデータポインタによってデータ単位を含むのとは対照的に)データ単位を包含または保有することを示すように定義可能である。抽出器は、必要なファイルリーダによって処理される場合、包含構成器を出現順序で分解した結果のバイトで論理的に置き換えられる。入れ子の抽出は不可能であって、たとえばサンプル構成器が参照するバイトが抽出器を含まないものとする。抽出器は、直接的にも間接的にも、別の抽出器を参照しないものとする。抽出器は、現在のトラックまたは「scal」タイプのトラック基準によって抽出器が存在するトラックにリンクされた別のトラックからデータを抽出する1つまたは複数の構成器を含んでいてもよい。分解された抽出器のバイトは、1つまたは複数のNAL単位全体を表していてもよい。分解された抽出器は、有効な長さフィールドおよびNAL単位ヘッダから始まる。サンプル構成器のバイトは、指定の「scal」トラック基準を通じて参照されるトラックにおける単一の識別サンプルからのみコピーされる。位置合わせは、デコーディング時間に合わせて、すなわち、時間対サンプルテーブルのみを使用した後、サンプル番号のオフセットをカウントする。抽出器は、メディアレベルの概念であるため、任意の編集リストを考慮する前の最終トラックに当てはまる(ただし、通常は、2つのトラックの編集リストが同一になるものと予想される)。
表示域に応じたストリーミング(表示域適応ストリーミング(VAS)または表示域固有ストリーミングとも称し得る)において、表示域(すなわち、現在の視認方向)を網羅する360°ビデオコンテンツの部分集合は、360°ビデオのその他の部分の品質および/または解像度よりも良い品質および/または高い解像度で伝送される。表示域に応じた全方位ビデオストリーミングの実現には、複数の選択肢がある。タイルベースの表示域に応じたストリーミングでは、動き制約タイル集合(MCTS)または同等のものとしてコーディングされたタイルへと投影画像が分離される。同じMCTS分離を用いることにより、複数のバージョンのコンテンツが異なるビットレートまたは品質でエンコーディングされる。各MCTSシーケンスは、DASH Representation等と同様に、ストリーミングに利用可能となる。プレーヤは、MCTSに基づいて、受信するビットレートまたは品質を選択する。
H.264/AVCには、タイルの概念を含まないが、領域をスライスとして垂直に配置し、MCTSのエンコーディングと同様にエンコーディングを制限することによって、MCTSのような動作を実現可能である。簡素化のため、本明細書においては、タイルおよびMCTSという用語を使用するが、これらは、H.264/AVCにも限定的に当てはまることが了解されるものとする。一般的に、タイルおよびMCTSという用語は、任意のコーディングフォーマットまたは仕様における類似の概念に当てはまることが了解されるものとする。
タイルベースの表示域に応じたストリーミング方式の考え得る細分として、以下が挙げられる。
領域単位の混合品質(RWMQ)360°ビデオ:同じ解像度、同じタイルグリッド、および異なるビットレート/画質で複数のバージョンのコンテンツがコーディングされる。プレーヤは、表示域に対して高品質MCTSを選定する。
表示域+360°ビデオ:低解像度/低品質の全方位ビデオ全体の1つまたは複数のビットレートおよび/または解像度バージョンがエンコーディングされ、ストリーミングに利用可能となる。また、MCTSベースのエンコーディングが実行され、MCTSシーケンスがストリーミングに利用可能となる。プレーヤは、低解像度/低品質の全方位ビデオ全体を受信し、表示域を網羅する高解像度のMCTSを選択して受信する。
領域単位の混合解像度(RWMR)360°ビデオ:MCTSが複数の解像度でエンコーディングされる。プレーヤは、表示域を網羅する高解像度MCTSおよびその他のエリアに対する低解像度MCTSの組み合わせを選択する。
タイルベースの表示域に応じたストリーミング方法をカテゴリに細分する方法は、上記以外にもあり得ることを理解する必要がある。さらに、上述の細分は、網羅的ではない場合もある。すなわち、上記カテゴリのいずれにも属さないタイルベースの表示域に応じたストリーミング方法の場合もある。
上述の表示域に応じたストリーミング手法のすべてにおいて、タイルもしくMCTS(または、タイルもしくMCTSのガードバンド)は、前処理またはエンコーディングにおいて選択された量だけ、球の範囲で重なり合っていてもよい。
上述の表示域に応じたストリーミング手法はすべて、クライアント主導のビットストリーム書き換え(後期バインディングとしても知られる)または製作者主導のMCTS結合(初期バインディング(early binding)としても知られる)により実現されるようになっていてもよい。後期バインディングにおいて、プレーヤは、受信するMCTSシーケンスを選択し、受信したMCTSを単一のビットストリームに結合する必要に応じて、受信したビデオデータの一部を選択的に書き換え(たとえば、パラメータ集合およびスライスセグメントヘッダの書き換えが必要となり得る)、この単一のビットストリームをデコーディングする。初期バインディングは、受信したビデオデータの一部を必要に応じて書き換えたり、MCTSを単一のビットストリームに結合してデコーディングしたり、場合によっては受信するMCTSシーケンスを選択したりするための製作者主導の情報の使用を表す。初期バインディングと後期バインディングとの間の手法があってもよく、たとえば製作者のガイドなく、受信するMCTSシーケンスをプレーヤに選択させる一方、MCTS結合およびヘッダ書き換えには、製作者主導の手法を用いることが可能となり得る。初期バインディング手法には、後述する抽出器主導手法およびタイルトラック手法を含む。
タイルトラック手法においては、1つまたは複数の動き制約タイル集合シーケンスがビットストリームから抽出され、抽出された各動き制約タイル集合シーケンスがタイルトラック(たとえば、HEVCタイルトラック)としてファイルに格納される。タイルベーストラック(たとえば、HEVCタイルベーストラック)が生成され、ファイルに格納されるようになっていてもよい。タイルベーストラックは、タイルトラックから動き制約タイル集合を暗示的に収集することによって、ビットストリームを表す。受信側では、ストリーミングされるタイルトラックが視認方向に基づいて選択されるようになっていてもよい。クライアントは、全方位コンテンツ全体を網羅するタイルトラックを受信するようにしてもよい。現在の表示域については、その他の360°ビデオを網羅する品質または解像度と比較して、より良い品質または高解像度のタイルトラックが受信されるようになっていてもよい。タイルベーストラックがタイルトラックに対するトラック基準を含むこと、および/または、タイルトラックがタイルベーストラックに対するトラック基準を含むことが可能である。たとえば、HEVCにおいては、「sabt」トラック基準の使用により、タイルベーストラックからタイルトラックを参照し、タイル順序は、「sabt」トラック基準に含まれるタイルトラックの順序によって示される。さらに、HEVCにおいては、タイルトラックがタイルベーストラックに対する「tbas」トラック基準を有する。
抽出器主導手法においては、1つまたは複数の動き制約タイル集合シーケンスがビットストリームから抽出され、抽出された各動き制約タイル集合シーケンスは、それ自体の適合ビットストリーム(たとえば、HEVCビットストリーム)となるように修正され、(HEVCに対する未変換サンプルエントリタイプ「hvc1」の)サブ画像トラックとしてファイルに格納される。1つまたは複数の抽出器トラック(たとえば、HEVC抽出器トラック)が生成され、ファイルに格納されるようになっていてもよい。抽出器トラックは、サブ画像トラックから動き制約タイル集合を(たとえば、HEVC抽出器によって)明示的に抽出することによって、ビットストリームを表す。受信側では、ストリーミングされるサブ画像トラックが視認方向に基づいて選択されるようになっていてもよい。クライアントは、全方位コンテンツ全体を網羅するサブ画像トラックを受信するようにしてもよい。現在の表示域については、その他の360°ビデオを網羅する品質または解像度と比較して、より良い品質または高解像度のサブ画像トラックが受信されるようになっていてもよい。
製作者主導のMCTS結合に基づく一方、ビットレートバージョン間のクライアント主導の決定を可能にする手法では、同位置の動き制約タイル集合を選択肢として提供可能であり、クライアントは、その中から現行のネットワークスループットおよび表示域に適したビットレートバージョンを選択することができる。後期バインディングが使用される場合、クライアントは、デコーディング可能なビットストリームに結合可能な任意の動き制約タイル集合を選択することができる。
独立コード化画像領域の数は、比較的多くすることができる。一例として、96個の領域(立方体面ごとに4×4個の領域)が挙げられることが多い。ストリーミングアプリケーションにおいては、同じコンテンツを複数の解像度およびビットレートで作成することが珍しくない。たとえば、半ダースの選択肢を用意し、そこからストリーミングクライアントが動的に選定できるようにすることも可能である。
結合ビットストリームの目標とする画像サイズは、たとえば好適なビデオコーディングレベルに応じて選択されるようになっていてもよい。結合ビットストリームに適用されるイメージセグメントまたは独立コード化画像領域への画像の分離(タイルおよびブリック分離等)は、利用可能なソースビットストリーム中のイメージセグメントまたは独立コード化画像領域の幅および高さに応じて選択されるようになっていてもよい。異なるクライアント戦略および視認条件(たとえば、視野)に柔軟に対応するために、イメージセグメントおよび/または独立コード化画像領域の幅および高さは、利用可能なすべてのソースビットストリームと同一になるように選択可能である。
図11aは、キューブマップコンテンツが「8K」、「6K」、「4K」、および「2K」の解像度でエンコーディングされた一例を示しており、これに対して、赤道上の輝度サンプルの数は、それぞれ8192個、6144個、4096個、および2048個である。すべてのバージョンにおいて、タイルの幅および高さは、同一になるように選択される(512個の輝度サンプル)。各タイルは、独立コード化画像領域としてエンコーディングされる。
図11bは、4Kデコーディング機能への使用に3×11のタイルグリッドが選択された一例を示している。
図11cは、クライアントが任意の方法により任意の解像度バージョンからタイルを選択可能な一例を示している。本例において、クライアントは、「8K」キューブマップから可能な限り多くのタイルを選定し、予想外の視認方向変化に対するバックアップとして、「2K」キューブマップ全体を維持する。
図11dは、提示の「6K」方法において、「6K」バージョンの3つ以上の立方体面、「4K」バージョンの3つ以上の立方体面、および「2K」バージョンの4つ以上の立方体面を網羅するタイルをクライアントが選択する一例を示しており、視認方向が変化した場合の段階的な画質変動を目的としている。
タイルトラック手法および抽出器主導手法は、具体的にHEVCの背景で詳細に説明されているにも関わらず、他のコーデックおよびタイルトラックまたは抽出器と同様の概念にも当てはまることを理解する必要がある。さらには、タイルトラック手法および抽出器主導手法の組み合わせまたは混合も可能である。たとえば、このような混合は、タイルトラック手法に基づくことも可能であるが、この場合、タイルベーストラックは、クライアントの書き換え操作のガイダンスを含むことも可能である。たとえば、タイルベーストラックは、書き換えられたスライスまたはタイル群ヘッダを含むことも可能である。
MCTSベースのコンテンツエンコーディングの代替として、タイルベースの表示域に応じたストリーミングのコンテンツ生成は、後述のサブ画像ベースのコンテンツ生成により実現されるようになっていてもよい。(エンコーディングに先立つ)前処理には、未圧縮画像のサブ画像への分離を含む。たとえば同じ解像度の一方、異なる品質およびビットレートにおいて、同じ未圧縮サブ画像シーケンスの複数のサブ画像ビットストリームがエンコーディングされる。エンコーディングは、全方位ビデオを表す適合ビットストリームへのコード化サブ画像ビットストリームの結合が可能となるように制限されていてもよい。たとえば、画像外のサンプルの場所が相互予測プロセスにおいて参照されないように動きベクトルを選択することによって、デコード画像境界外のサンプルに対する依存がエンコーディングにおいて回避されるようになっていてもよい。各サブ画像ビットストリームがサブ画像トラックとしてカプセル化され得るとともに、異なるサブ画像の場所のサブ画像トラックを結合した1つまたは複数の抽出器トラックが追加で形成されるようになっていてもよい。タイルトラックベースの手法を対象とする場合は、各サブ画像ビットストリームがMCTSシーケンスとなるように修正され、タイルトラックとしてファイルに格納されるとともに、タイルトラックに対して1つまたは複数のタイルベーストラックが生成される。
タイルベースの表示域に応じたストリーミング手法は、単一のデコーダインスタンスまたはMCTSシーケンス当たり1つのデコーダインスタンス(または、場合によりその中間、たとえば、同じ解像度のMCTS当たり1つのデコーダインスタンス)を実行することによって、たとえばプレーヤが動作している機器およびオペレーティングシステムの機能に応じて実現されるようになっていてもよい。単一のデコーダインスタンスの使用は、後期バインディングまたは初期バインディングによって有効となり得る。複数のデコーダインスタンスを容易化するため、抽出器主導手法では、修正なくコーディングフォーマットまたは規格に準拠するサブ画像トラックを使用するようにしてもよい。他の手法では、クライアント側でのイメージセグメントヘッダ、パラメータ集合、および/または類似の情報の書き換えによって適合するビットストリームを構成すること、または、他のコード化ビデオデータがなくてもMCTSシーケンスをデコーディング可能なデコーダを実装することが必要となり得る。
タイルトラック手法および抽出器主導手法のそれぞれにおいて、タイルトラックまたはサブ画像トラックをカプセル化して参照するための少なくとも2つの手法が存在し得る。
タイルベーストラックまたは抽出器トラックからのトラック識別子の参照。
タイルベーストラックまたは抽出器トラックからのタイル群識別子の参照(タイル群識別子により識別されるタイル群には、抽出の選択肢である同位置のタイルトラックまたはサブ画像トラックを含む)。
RWMQ法においては、各画像サイズおよび各タイルグリッドごとに1つの抽出器トラックで十分である。360°+表示域ビデオおよびRWMRビデオでは、各個別の視認方向に対して1つの抽出器トラックが必要となり得る。
次に、上述のタイルベースの表示域に応じたストリーミング手法と同様の手法(タイル長方形ベースのエンコーディングおよびストリーミングと称し得る)について説明する。この手法は、HEVCと同様のタイルがコーデックで利用できない場合または動き制約タイル集合または同等のものがエンコーダに実装されていない場合であっても、任意のビデオコーデックで使用可能である。タイル長方形ベースのエンコーディングにおいては、エンコーディングの前に、ソースコンテンツがタイル長方形シーケンスに分割される。各タイル長方形シーケンスは、完全パノラマコンテンツ等のソースコンテンツの空間的エリアの部分集合を網羅するが、これは、たとえば正距円筒投影フォーマットであってもよい。その後、各タイル長方形シーケンスは、単一レイヤビットストリームとして互いに独立してエンコーディングされる。たとえば異なるビットレートに対して、同じタイル長方形シーケンスから複数のビットストリームがエンコーディングされるようになっていてもよい。各タイル長方形ビットストリームは、それ自体のトラック(または、類似物)としてファイルにカプセル化され、ストリーミングに利用可能となり得る。受信側では、ストリーミングされるトラックが視認方向に基づいて選択されるようになっていてもよい。クライアントは、全方位コンテンツ全体を網羅するトラックを受信するようにしてもよい。現在の表示域については、その他の現時点で見えない表示域を網羅する品質または解像度と比較して、より良い品質または高解像度のトラックが受信されるようになっていてもよい。一例において、各トラックは、別個のデコーダインスタンスによりデコーディングされるようになっていてもよい。
表示域適応ストリーミングにおいては、主表示域(すなわち、現在の視認方向)が良好な品質/解像度で伝送される一方、360°ビデオのその他の部分は、低い品質/解像度で伝送される。視認方向が変化した場合、たとえば、ヘッドマウントディスプレイでコンテンツを見る際にユーザが頭部の向きを変えた場合は、新たな視認方向に合わせた別のバージョンのコンテンツのストリーミングが必要となる。一般的に、この新たなバージョンは、通常(Sub)segmentと位置合わせされたストリームアクセスポイント(SAP)を始点として要求可能である。単一レイヤビデオビットストリームにおいて、SAPは、ランダムアクセス画像に対応し、内部コーディングされているため、レート歪み性能の点でコスト高となる。このため従来は、秒オーダの比較的長いSAP区間ひいては比較的長い(Sub)segment持続時間が通常使用される。このため、視認方向の変化(たとえば、頭部の向きの変更)後の品質向上の遅延(ここでは、表示域品質更新遅延と称する)は、従来は秒オーダであるため、明らかに顕著で煩わしいものである。
通常の視認状況においては、視認方向が徐々に変化するため、独立コード化画像領域については、一部の場所だけ画質が変化する。たとえば、正距円筒投影に4×2のMCTSグリッドが用いられる場合は、半分のMCTSで画質が変化する可能性が高い。ランダムアクセス画像から始まるSegmentですべてのMCTS位置を更新することは、ストリーミングレート歪み性能の点で非効率であり、ビットレートの大きな変動が発生する。これにより、再バッファリングのために再生が中断される可能性もあるし、十分に長い初期バッファリング遅延によって補償することも可能である。
独立コード化画像領域の部分集合のみがIRAP画像に由来するように、結合ビットストリームの同じコード化画像中の異なる種類のコード化画像(たとえば、非IRAPおよびIRAP画像)に由来する独立コード化画像領域によって、表示域に応じた360°ストリーミングにおける視認方向の変化を取り扱い可能となり得ることが提案されている。これをサポートするため、VVC Draft 5では、IDR画像のスライスヘッダに基準画像リストを示すことによって、使用事例を有効化する際にクライアントがIDR NAL単位タイプをTRAIL NAL単位タイプに変更できるようにする。
上記説明の通り、MPEG OMAFに準拠し得る表示域に応じたストリーミングにおける表示域の切り替えは、内部コーディングひいては同じ品質で各相互コード化画像と比較して大きなビットレートを伴うストリームアクセスポイントにおいて有効化される。このため、ストリームアクセスポイント区間とレート歪み性能との妥協点がエンコーディング設定において選定される。
以下では、MCTSを含む等解像度HEVCビットストリームの表示域適応ストリーミングを一例として説明する。動き制約タイル集合を用いることにより、同じ全方位ソースコンテンツの複数のHEVCビットストリームが同じ解像度の一方、異なる品質およびビットレートでエンコーディングされるようになっていてもよい。すべてのビットストリーム中のMCTSグリッドは、同一である。異なる元のビットストリームから受信したMCTSからビットストリームを再構成するためにクライアントが同じタイルベーストラックを使用できるようにするため、各ビットストリームは、それ自身のファイルにカプセル化され、これらすべてのファイルにおいて、同じタイルグリッド位置の各タイルトラックに同じトラック識別子が使用される。HEVCタイルトラックは、各動き制約タイル集合シーケンスから形成され、タイルベーストラックも追加で形成される。クライアントは、タイルベーストラックのパーシングによって、タイルトラックからビットストリームを暗示的に再構成するようにしてもよい。再構成ビットストリームは、適合するHEVCデコーダによってデコーディング可能である。
クライアントは、受信する各MCTSのバージョンを選定可能である。異なるビットストリームからのMCTSを組み合わせる場合は、各タイルトラックで同じトラック識別子が使用されることから、同じタイルベーストラックで十分である。
図5は、タイルベースの全方位ビデオストリーミングに同じ解像度のタイルトラックを使用可能な方法の一例を示している。動き制約タイル集合の構成には、4×2タイルグリッドを使用している。同じソースコンテンツに由来する2つのHEVCビットストリームが異なる画質およびビットレートでエンコーディングされる。各ビットストリームは、それ自体のファイルにカプセル化されるようになっていてもよく、各動き制約タイル集合シーケンスが1つのタイルトラックに含まれ、タイルベーストラックも同様に含まれる。クライアントは、視認方向に基づいて、各タイルトラックを受信する品質を選定するようにしてもよい。本例において、クライアントは、特定の品質でタイルトラック1、2、5、および6を受信し、別の品質でタイルトラック3、4、7、および8を受信する。タイルベーストラックは、HEVCデコーダによってデコーディング可能なビットストリームへと受信タイルトラックデータを並べるのに用いられる。
独立コード化画像領域を1つまたは複数のソースビットストリームから結合ビットストリームへと結合するには、パラメータ集合の書き換えが必要である。言い換えると、ソースビットストリーム中のパラメータ集合は、そのままでは適用不可能である。たとえば、結合ビットストリームにおける画像幅、画像高さ、ならびに/またはタイルおよびブリックへの画像分離は、ソースビットストリームのいずれとも異なる可能性がある。パラメータ集合の書き換えの結果として、以下が挙げられる。
デコーダ外のエンティティ(たとえば、プレーヤ)は、抽出および結合と関係のない部分を含めて、完全なパラメータ集合のパーシングおよび/または書き換えを行う必要がある。エンティティは、選択されたソースビットストリームからパラメータ集合を基準として取得し、パーシングを行い、パラメータ集合内の選択されたシンタックス要素の値を修正し、これらの修正によって、結合ビットストリーム中または結合ビットストリームに伴うパラメータ集合を書き換える可能性もある。
さらに、パラメータ集合は、結合ビットストリームにおいてサイズが変化した場合、HRDに影響を及ぼすとともに、(SPSおよびバッファリング期間SEIメッセージにおいて)HRDバッファリングパラメータを無効化する可能性もある。その結果、パラメータ集合の書き換えが規範的に規定されていない場合は、HRD挙動に対する結合の影響を予測できない可能性もある。
IDRおよび非IDR画像からの独立コード化領域を結合する場合、デコーダは、このような「混合画像」が基準画像マーキングに対する非IDR画像のように処理されるものと決定する必要がある。ある手法においては、「混合画像指標」がPPSにおいて提供される。ただし、混合が起こっているものでなく他の画像にPPSが用いられる場合、この手法では、新たなPPSを生成するとともに、スライスヘッダのPPS ID値を書き換える必要がある。別の手法においては、デコーディングプロセスにおける外部制御変数の使用によって「混合画像」を示す。ただし、このような外部変数に対するデコーダAPIは、存在していない可能性もあるし、動作環境に応じて異なる可能性もある。
たとえば領域単位でパッキングされた360°ビデオおよび/またはボリュメトリックビデオ(3DoF+、6DoF、および点群ビデオ)のレンダリングには、画像同期メタデータが必要となる可能性もある。たとえば、パッチメタデータおよび/または領域単位のパッキングが画像に基づいて変化し得る。一部のオペレーティングシステムおよび/またはデバイスアーキテクチャにおいては、プレーヤがメタデータを画像同期してレンダリングプロセスに受け渡せない可能性もあり、むしろ、ビデオデコーダのみがこれを実行可能な場合もある。これは、任意のビデオ(非暗号化および暗号化の両者)に適用される可能性もあるし、暗号化ビデオにのみ適用される可能性もある。ただし、一般的にはこれが決まっておらず、ビデオデコーダが画像同期してデコード画像とともに出力として受け渡すべきメタデータ(たとえば、SEIメッセージ)には制御が及ばない。メタデータの一部は、ビデオデコーディング仕様の第1のバージョンでは規定されていない可能性もあるが、それにも関わらず、第1のバージョンに係るデコーダは、デコード画像と併せてメタデータを出力として受け渡し可能であるものとする。現在、ビデオコーディング規格は、デコード画像の出力のみを規定している。メタデータの出力については、規範的に規定されていない。
特定の時間インスタンスにおける視覚コンテンツを複数の部分に分割可能であり、各部分がサブ画像を用いて表される。異なる時間インスタンスにおけるそれぞれのサブ画像がサブ画像シーケンスを構成する。この「それぞれ(respective)」の定義は、状況によって決まり得るが、たとえば一連の画像中の画像エリアの同じ空間的部分または同じ取得位置、方向、および投影面等の同じ設定で取得されたコンテンツが挙げられる。特定の時間インスタンスにおける画像は、当該特定の時間インスタンスにおけるすべてのサブ画像の集まりとして規定され得る。各サブ画像は、従来のビデオエンコーダによってコーディングされ、サブ画像シーケンスに対応する再構成サブ画像メモリに再構成サブ画像が格納される。特定のサブ画像シーケンスにおけるサブ画像を予測するため、エンコーダは、同じサブ画像シーケンスの再構成サブ画像を予測の基準として使用することができる。コード化サブ画像は、別個の単位(たとえば、VCL NAL単位)として同じビットストリームに含まれる。
デコーダは、コード化ビデオデータ(たとえば、ビットストリーム)を受信する。従来のビデオデコーダを使用することにより、他のサブ画像とは別個の単位としてサブ画像がデコーディングされる。デコードサブ画像は、デコード画像バッファリングプロセスによってバッファリングされるようになっていてもよい。デコード画像バッファリングプロセスは、特定のサブ画像シーケンスのデコードサブ画像をデコーダに与え、デコーダは、デコードサブ画像を予測の基準として使用することにより、同じサブ画像シーケンスにおいてサブ画像を予測するようにしてもよい。
1つもしくは複数の基準サブ画像またはその中の領域のサブ画像パッキングには、(エンコーダにより情報の一部として示される)以下のうちの1つまたは複数を含んでいてもよいが、これらに限定されない。
回転、たとえば、0、90、180、または270°
ミラーリング、たとえば、水平または垂直
再サンプリング(たとえば、幅および/または高さの再スケーリング)
操作基準サブ画像のエリア内の位置
操作基準サブ画像の指定エリア(たとえば、操作基準サブ画像に配置済みのサブ画像または領域が占有する)内に既に存在するサンプルとの重ね合わせ(すなわち、上書き)または混ぜ合わせ。上書きは、サブ画像のうちの1つ/一部が高品質にコーディングされる場合に有用となり得る。
360°ビデオの形状パディングには、たとえばサブ画像中の立方体面と同じ平面上に投影された隣接立方体面からの立方体面パディングを含んでいてもよい。
ボリュメトリックビデオコーディング(たとえば、点群コーディング)においては、イメージパディング要素によって形状イメージおよび/またはテクスチャイメージがパディングされるようになっていてもよい。パディングは、パッチ間の空スペースを満たして、ビデオ圧縮に適した滑らかな分割イメージを生成することを目的とする。イメージパディング要素は、圧縮を高く維持することのほか、元の占有状態マップ(OOM)と比較して十分な精度での占有状態マップの推定(EOM)を可能にすることを考慮し得る。
一手法によれば、以下のパディング方法を使用可能である。
T×T(たとえば、16×16)の各ブロックが独立して処理される。ブロックが空の場合(すなわち、そのすべてのピクセルが空スペースに属する場合)は、ラスター順序の先行T×Tブロックの最後の行または列のコピーによって、ブロックのピクセルが充足される。ブロックが充足されている場合(すなわち、空ピクセルがない場合)は、何も実行されない。ブロックが空ピクセルおよび充足ピクセルの両者を有する場合は、空ピクセルがそれぞれの空ではない隣接ピクセルの平均値によって反復的に充足される。
生成されたイメージ/レイヤは、ビデオフレームとして格納され、圧縮されるようになっていてもよい。たとえば、パディング形状イメージおよびパディングテクスチャイメージがビデオ圧縮要素に提供されてパディング形状イメージおよびパディングテクスチャイメージを圧縮し、圧縮形状イメージおよび圧縮テクスチャイメージは、たとえば入力データを圧縮ビットストリームとして多重化する多重化器に提供される。
また、圧縮形状イメージおよび圧縮テクスチャイメージは、たとえば推定占有状態マップを生成する占有状態マップ推定器に提供される。
このステップにおいては、形状イメージおよび/またはテクスチャイメージの境界を見つけるアルゴリズムが用いられるようになっていてもよい。なお、境界は一般的に、エンコーディングに先立って互いに位置合わせされている。ただし、おそらくエンコーディング後は、縁部のビット位置がずれるが、これは、元の占有状態マップに基づいて後続ステップで補正され得る。
占有状態マップは、グリッドの各セルについて、空スペースに属するか点群に属するかを示すバイナリマップから成っていてもよい。イメージ生成プロセスにおいては、2Dグリッドの1つのセルが1ピクセルを生成することになる。
推定占有状態生成ステップにおいては、パディングステップにおいて用いられる実施形態に基づいて、各パディング形状のY、U、および/またはVコンポーネント間の異なるプロセスが考えられ得る。このようなプロセスに基づいて、縁部の推定(すなわち、占有状態マップを規定する輪郭)が生成されることになる。このような推定は、占有状態マップの推定に2つ以上のコンポーネント/イメージが使用される場合に微調整されるようになっていてもよい。
縁部検出アルゴリズムの一例は、マルチスケール縁部検出アルゴリズムであるが、これは、ウェーブレット領域ベクトル隠れマルコフツリーモデルに基づく。ただし、この背景においては、他の何らかのアルゴリズムが適用されるようになっていてもよい。
パディングにおいては、操作基準サブ画像のパディングエリアのコンテンツが他のサブ画像から生成されるようになっていてもよい。たとえば、関心領域コーディングにおいて、第1のサブ画像が第2のサブ画像よりも大きなエリアを表し得る場合、第2のサブ画像の操作基準は、第1のサブ画像中のコンテンツを用いてパディングされるようになっていてもよい。
基準パッチ再投影においては、基準サブ画像が3D点群パッチとして解釈され、3D点群パッチが2D相互予測に適した平面に再投影されるようになっていてもよい。
MPEG規格の場合は、点群圧縮に対するテストモデルが開発されている。MPEG W17248は、MPEG点群コーディングに対するテストモデルを開示することにより、動的な点群圧縮の標準化方法を提供している。MPEG W17248テストモデルにおいては、動きイメージ、テクスチャイメージ、および深度/属性イメージという3つのイメージデータに関して、2D投影3D体積表面が決定される。
点群再サンプリングブロックにおいて、入力3D点群フレームは、基準点群フレームに基づいて再サンプリングされる。フレーム間エンコーディング/デコーディングプロセスにおいては、3D動き補償ブロックが使用される。これは、基準点群およびその変形バージョンの位置の差を演算する。得られる動きフィールドは、基準フレームの点と関連付けられた3D動きベクトル{MV_i(dx,dy,dz)}_iから成る。基準フレームの3Dから2Dへのマッピングによって、dxをY、dyをU、dzをVとして格納することにより動きフィールドが2Dイメージに変換されるが、この2Dイメージを動きイメージと称し得る。また、動きイメージの各ブロックの倍率を与えるスケールマップがエンコーディングされる。
イメージ生成プロセスでは、パッキングプロセスにおいて演算された3Dから2Dへのマッピングを利用することにより、点群の形状/テクスチャ/動きをイメージとして格納する。これらのイメージは、ビデオフレームとして格納され、HEVCエンコーダ等のビデオエンコーダにより圧縮される。生成されるビデオは、以下のような特性を有し得る。
形状:W×H YUV420-8ビット
テクスチャ:W×H YUV420-8ビット
動き:W×H YUV444-10ビット
1つまたは複数のテクスチャおよび深度ビューを表すサブ画像から、ビュー合成(深度イメージベースのレンダリングとしても知られる)が実行されるようになっていてもよい。
深度イメージベースのレンダリング(DIBR)すなわちビュー合成は、1つまたは複数の既存/受信ビューに基づく新規ビューの生成を表す。深度イメージは、仮想ビューの補正合成の補助として使用可能である。詳細には異なるが、ビュー合成アルゴリズムのほとんどは、明示的な形状すなわち深度イメージに基づく3Dワーピングを利用し、通常、各テクスチャピクセルは、カメラからテクスチャピクセルがサンプリングされた物体までの距離またはZ値を示す深度ピクセルと関連付けられている。ある既知の手法では、3Dワーピングの非ユークリッド公式を用いるが、これは、カメラパラメータが未知またはカメラ校正が不十分な条件下で効率的である。ただし、さらに他の既知の手法では、取得およびビュー補間のためのカメラパラメータが既知であることを前提として、ユークリッド公式に厳密に従う。さらに、他の手法において、ビュー合成の目的は、カメラで撮影したようなビューを推定することではなく、主観的に好ましいコンテンツの表現を提供することであり、異なる物体に対する非線形視差調整を含む場合がある。
オクルージョン、ピンホール、および再構成誤差が3Dワーピングプロセスにおいて導入される最も一般的なアーチファクトである。これらのアーチファクトは、物体の縁部でより頻繁に発生するが、その縁部では、深度レベルの異なるピクセルが仮想イメージの同じピクセル位置にマッピングされている場合もある。これらのピクセルを平均化することにより、仮想イメージのピクセル位置の最終ピクセル値を再構成する場合には、アーチファクトが発生する可能性もある。深度レベルの異なるピクセルは通例、異なる物体に属するためである。
補助深度マップビデオストリームの使用を含めて、深度画像シーケンスを表す多くの手法が提案されている。単一ビューの深度マップビデオシーケンスは、通常の単色ビデオストリームと見なすことができ、任意のビデオコーデックによりコーディング可能である。たとえばMPEG-C Part 3規格に従ってフォーマット化されたメッセージにおいて、世界座標における最小および最大深度等、深度マップストリームの一部の特性を示すことができる。
ビュー合成アルゴリズムの詳細な動作は、テクスチャビューおよび深度画像シーケンスに使用された表現フォーマットによって決まる。
再サンプリングは、(より高い解像度への切り替えのための)アップサンプリングであってもよいし、(より低い解像度への切り替えのための)ダウンサンプリングであってもよい。再サンプリングは、以下の使用事例のうちの1つまたは複数に使用され得るが、これらに限定されない。
適応解像度変更であって、この場合は、画像に通常、1つのサブ画像しか含まない。
混合解像度マルチビュービデオまたはイメージコーディングであって、この場合は、サブ画像シーケンスがビューに対応する。ビュー間予測は、(第1のサブ画像シーケンスの)第1のサブ画像から(第2のサブ画像シーケンスの)第2のサブ画像への予測を有効化することにより実行可能であり、第1および第2のサブ画像は、同じ時間インスタンスのものであってよい。場合によっては、(たとえば、出力画像合成においてサブ画像を左右または上下に配置するために)ビューのうちの1つを回転させることが有益となり得る。このため、再サンプリングには(たとえば、90、180、または270°の)回転を伴う場合もある。
色域変換:たとえば、ソースとして用いられるあるサブ画像がITU-R BT.709等の第1の色域またはフォーマットにより表され、操作基準サブ画像がITU-R BT.2020等の第2の色域またはフォーマットで表される場合、このソースとして用いられるサブ画像は、プロセスの一部として、第2の色域またはフォーマットに変換されるようになっていてもよい。
ダイナミックレンジ変換および/または色マッピング変換:色マッピングは、サンプル値の線形光表現へのマッピングを表し得る。操作基準サブ画像を生成するソースとして用いられる再構成サブ画像は、目標ダイナミックレンジおよび色マッピングに変換されるようになっていてもよい。
ビット深度変換において、操作基準サブ画像を生成するソースとして用いられる再構成サブ画像は、操作基準サブ画像のビット深度に変換されるようになっていてもよい。
彩度フォーマット変換:たとえば、操作基準サブ画像が彩度フォーマットYUV 4:4:4を有する一方、操作基準サブ画像を生成するソースとして用いられる少なくとも一部の再構成サブ画像は、彩度フォーマット4:2:0を有していてもよい。本例において、ソースとして用いられるサブ画像は、プロセスの一部としてYUV 4:4:4へとアップサンプリングされるようになっていてもよい。
投影変換:たとえば、あるサブ画像がERP等の第1の投影で、操作サブ画像がCMPの第2の投影である場合、このサブ画像は、基準として使用され、第2の投影へと変換されるようになっていてもよい。使用事例としては、全360°コンテンツが低解像度でERPフォーマットにコーディングされてもよく、表示域コンテンツが高解像度でCMPフォーマットにコーディングされるようになっていてもよい。
フレームレート変換:たとえば、あるサブ画像が第1のフレームレートでコーディングされ、第2のサブ画像が第2のフレームレートでコーディングされ得る場合、上記サブ画像は、基準として使用され、時間領域において第2のサブ画像の時間インスタンスに合わせて補間されるようになっていてもよい。使用事例としては、立体視ストリーミングにおいて、主要ビューが高いフレームレートで伝送されてもよく、補助ビューが低いフレームレートで伝送されるようになっていてもよい。
以下の定義は、High Efficiency Video Coding規格に関するものであってもよいが、他のコーデックにも適用可能である。独立レイヤは、直接的な基準レイヤを持たないレイヤである。すなわち、レイヤ間予測が行われない。非ベースレイヤは、すべてのVCL NAL単位が0より大きな同じnuh_layer_id値を有するレイヤである。独立非ベースレイヤは、独立レイヤかつ非ベースレイヤである。
以下では、サブビットストリーム抽出プロセスの一例について簡単に説明する。ビットストリームinBitstreamの独立非ベースレイヤから、以下のようにビットストリームoutBitstreamを生成可能である。ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一になるように設定される。nal_unit_typeがSPS_NUT、PPS_NUT、およびEOB_NUTに等しくなく、nuh_layer_idがassignedBaseLayerIdに等しくないNAL単位は、outBitstreamから除去される。nal_unit_typeがSPS_NUTまたはPPS_NUTにも等しく、nuh_layer_idが0にもassignedBaseLayerIdにも等しくないNAL単位は、outBitstreamから除去される。nal_unit_typeがVPS_NUTに等しいNAL単位は、outBitstreamから除去される。TemporalIDがtIdTargetよりも大きなNAL単位はすべて、outBitstreamから除去される。outBitstreamの各NAL単位においては、nuh_layer_idが0に等しく設定される。ビットストリームoutBitstreamは、HEVCデコーディングプロセスによってデコーディング可能である。
以下では、レイヤ特性を示すHEVCのビデオパラメータ集合(VPS)の一例について簡単に説明する。ビデオパラメータ集合は、拡張部を含むが、その一部を以下に示す。
HEVCのビデオパラメータ集合は、レイヤに使用されるスケーラビリティの種類を示すスケーラビリティマスクを規定する。
scalability_mask_flag[i]=1は、表F.1のi番目のスケーラビリティ次元に対応するdimension_idシンタックス要素が存在することを示す。scalability_mask_flag[i]=0は、i番目のスケーラビリティ次元に対応するdimension_idシンタックス要素が存在しないことを示す。
layer_id_in_nuh[i]は、i番目のレイヤのVCL NAL単位のnuh_layer_idシンタックス要素の値を規定する。iが0より大きい場合、layer_id_in_nuh[i]は、layer_id_in_nuh[i-1]より大きいものとする。0~MaxLayersMinus1の範囲のiの任意の値に関して、存在しない場合、layer_id_in_nuh[i]の値は、iに等しいものと推測される。
0~MaxLayersMinus1のiに関して、変数LayerIdxInVps[layer_id_in_nuh[i]]は、iに等しく設定される。
dimension_id[i][j]は、i番目のレイヤのj番目に存在するスケーラビリティ次元の種類の識別子を規定する。dimension_id[i][j]の表現に用いられるビットの数は、dimension_id_len_minus1[j]+1ビットである。
splitting_flagに応じて、以下が適用される。splitting_flagが1に等しい場合、0~MaxLayersMinus1のiおよび0~NumScalabilityTypes-1のjについて、dimension_id[i][j]は、((layer_id_in_nuh[i]&((1<<dimBitOffset[j+1])-1))>>dimBitOffset[j])に等しいものと推測される。splitting_flagが1に等しくない場合(splitting_flagが0に等しい場合)、0~NumScalabilityTypes-1のjについて、dimension_id[0][j]は、0に等しいものと推測される。
i番目のレイヤのsmIdx番目のスケーラビリティ次元の種類の識別子を規定する変数ScalabilityId[i][smIdx]ならびにnuh_layer_idがlIdに等しいレイヤの深度フラグ、ビュー順序インデックス、空間/品質スケーラビリティ識別子、および補助識別子をそれぞれ指定する変数DepthLayerFlag[lId]、ViewOrderIdx[lId]、DependencyId[lId]、およびAuxId[lId]は、以下のように導出されるようになっていてもよい。
NumViews=1
for(i=0;i<=MaxLayersMinus1;i++){
lId=layer_id_in_nuh[i]
for(smIdx=0,j=0;smIdx<16;smIdx++){
if(scalability_mask_flag[smIdx])
ScalabilityId[i][smIdx]=dimension_id[i][j++]
else
ScalabilityId[i][smIdx]=0
}
DepthLayerFlag[lId]=ScalabilityId[i][0]
ViewOrderIdx[lId]=ScalabilityId[i][1]
DependencyId[lId]=ScalabilityId[i][2] (F-3)
AuxId[lId]=ScalabilityId[i][3]
if(i>0){
newViewFlag=1
for(j=0;j<i;j++)
if(ViewOrderIdx[lId]==ViewOrderIdx[layer_id_in_nuh[j]])
newViewFlag=0
NumViews+=newViewFlag
}
}
出力レイヤ集合(output layer set(OLS))は、1つまたは複数のレイヤが出力レイヤとして規定される一組のレイヤとして定義可能である。(出力レイヤ集合の)出力レイヤは、当該出力レイヤ集合がデコーディングされる場合に出力されるレイヤとして規定されていてもよい。出力レイヤの画像は、それに対して指定または推測される出力フラグが1に等しい場合、デコーダによって出力される。その他の場合は、画像がデコーダにより出力されない場合がある。出力レイヤ集合は、VPSにおいて規定されていてもよい。
サブビットストリーム抽出プロセス(sub-bitstream extraction process)は、たとえば目標OLSインデックスおよび目標最高TemporalIdによって決まる目標集合に属さないビットストリーム中のNAL単位がビットストリームから除去され、出力サブビットストリームが、目標集合に属するビットストリーム中のNAL単位から成る規定の処理として定義可能である。
特定の時間インスタンスにおける視覚コンテンツが複数の部分に分割され、各部分がサブ画像を用いて表される。異なる時間インスタンスにおけるそれぞれのサブ画像がサブ画像シーケンスを構成する。この「それぞれ(respective)」の定義は、状況によって決まり得るが、たとえば一連の画像中の画像エリアの同じ空間的部分または同じ取得位置、方向、および投影面等の同じ設定で取得されたコンテンツが挙げられる。特定の時間インスタンスにおける画像は、当該特定の時間インスタンスにおけるすべてのサブ画像の集まりとして規定され得る。各サブ画像は、従来のビデオエンコーダによってコーディングされ、サブ画像シーケンスに対応する再構成サブ画像メモリに再構成サブ画像が格納される。特定のサブ画像シーケンスにおけるサブ画像を予測するため、エンコーダは、同じサブ画像シーケンスの再構成サブ画像を予測の基準として使用することができる。コード化サブ画像は、別個の単位(たとえば、VCL NAL単位)として同じビットストリームに含まれる。
デコーダは、コード化ビデオデータ(たとえば、ビットストリーム)を受信する。従来のビデオデコーダを使用することにより、他のサブ画像とは別個の単位としてサブ画像がデコーディングされる。デコードサブ画像は、デコード画像バッファリングプロセスによってバッファリングされるようになっていてもよい。デコード画像バッファリングプロセスは、特定のサブ画像シーケンスのデコードサブ画像をデコーダに与え、デコーダは、デコードサブ画像を予測の基準として使用することにより、同じサブ画像シーケンスにおいてサブ画像を予測するようにしてもよい。
図6は、デコーダの一例を示している。デコーダは、コード化ビデオデータ(たとえば、ビットストリーム)を受信する。デコーディングプロセス610においては、従来のビデオデコーダを使用することにより、他のサブ画像とは別個の単位としてサブ画像がデコーディングされる。デコードサブ画像は、デコード画像バッファリングプロセスによってバッファリングされるようになっていてもよい(620)。デコード画像バッファリングプロセスは、特定のサブ画像シーケンスのデコードサブ画像をデコーディングプロセス610に与えてもよく、デコーダは、デコードサブ画像を予測の基準として使用することにより、同じサブ画像シーケンスにおいてサブ画像を予測するようにしてもよい。
デコード画像バッファリングプロセス620は、サブ画像シーケンス単位バッファリング630を含んでいてもよく、これは、再構成サブ画像の「参照使用」または「参照不使用」としてのマーキングのほか、再構成サブ画像がデコーダから出力されたかの記録をとることを含んでいてもよい。サブ画像シーケンスのバッファリングは、互いに独立していてもよいし、以下の方法のうちの一方または両方において同期されるようになっていてもよい。
同じ時間インスタンスのすべての再構成サブ画像の出力が同期して実行されるようになっていてもよい。
同じ時間インスタンスの再構成サブ画像の基準画像マーキングが同期して実行されるようになっていてもよい。
デコード画像バッファリングプロセスは、画像合成データを入力として取得し、再構成サブ画像を出力画像として配置する出力画像合成プロセスを含んでいてもよい。図6は、2つのサブ画像シーケンスに関する従来例を引き継ぎ、時間合わせされた再構成サブ画像を出力画像として左右に配置する。この例は、高さが同じで幅が異なる2つのサブ画像シーケンスのデコーディングを示している。サブ画像シーケンスの数および/またはサブ画像の寸法が異なる選定も可能であり、これらの選定があくまで一例に過ぎないことを理解する必要がある。
一例によれば、デコーダからの出力には、異なる別個のデコードサブ画像の集まりを含む。
図7に示す別の例によれば、デコーディングプロセス810からの出力画像(上記の追加または代替として、デコード画像とも称し得る)は、異なる別個のサブ画像の集まりである。別の例によれば、出力画像は、再構成サブ画像を2次元(2D)画像として配置することにより構成される。本例では、(時間インスタンス当たり)単一の出力画像に関する従来の設計をビデオデコーダの出力として維持するため、システムへの組み込みが容易となり得る。デコードサブ画像は、デコードサブ画像バッファリング812に提供される。その後、デコーディングプロセス810では、後続画像をデコーディングする基準として、バッファリングサブ画像を使用するようにしてもよい。このデコーディングプロセスでは、操作サブ画像を生成するソースとして使用されるデコードサブ画像を指定するようにしてもよいし、推測するようにしてもよい。これらのサブ画像は、基準サブ画像操作プロセス816に提供される(814)。その後、操作基準サブ画像は、デコードサブ画像バッファリング812に提供され(818)、バッファリングされる。その後、サブ画像および操作基準サブ画像は、画像合成データを入力として取得し、再構成サブ画像を出力画像として配置する出力画像合成プロセス820により使用されるようになっていてもよい。エンコーダは、画像合成データをビットストリーム中またはビットストリームとともにエンコーディングするが、この画像個合成データは、出力画像を構成する2D画像として再構成サブ画像が配置される方式を示す。デコーダは、ビットストリームから、または、ビットストリームに伴う画像合成データをデコーディングし、このデコード画像合成データに従って、再構成サブ画像および/または操作基準サブ画像から出力画像を構成する(820)。デコーディングまたは画像合成データは、出力画像合成プロセス820の一部として発生するようになっていてもよいし、任意選択として、出力画像合成プロセス820とつながっていてもよい。これにより、従来のビデオデコーディングプロセスで画像合成データをデコーディングする。
一例によれば、画像合成データは、サブ画像のビットストリームもしくはデコーディング順序ならびにサブ画像の寸法を用いて、ビットストリーム中のエンコーディングもしくはビットストリームに伴うエンコーディングならびに/またはビットストリームからのデコーディングもしくはビットストリームに伴うデコーディングが行われる。エンコーダおよび/またはデコーダにおいては、画像エリア内のサブ画像の位置決めのアルゴリズムが後続するが、このアルゴリズムには、サブ画像がそれぞれのビットストリームまたはデコーディング順序で入力される。一例によれば、画像エリア内のサブ画像の位置決めのアルゴリズムは、以下の通りである。すなわち、画像が複数のサブ画像を含み、画像のエンコーディングおよび/またはコード化画像のデコーディングが開始となった場合は、再構成またはデコード画像中の各CTU位置が占有されていないものとしてマーキングされる。ビットストリームまたはデコーディング順序の各サブ画像について、このサブ画像は、画像境界内にサブ画像を収めるのに十分な大きさの画像内において、CTUラスタースキャン順序の次のそのような未占有位置を取得する。
一例によれば、エンコーダは、ビットストリーム中またはビットストリームに伴って、
デコーダが異なる別個のデコードサブ画像の集まりを出力しようとしているか、
デコーダが画像合成データに従って出力画像を生成しようとしているか、
デコーダが上記選択肢のいずれかを実行可能であるか、
を示す。
一例によれば、デコーダは、ビットストリームから、または、ビットストリームに伴って、
デコーダが異なる別個のデコードサブ画像の集まりを出力しようとしているか、
デコーダが画像合成データに従って出力画像を生成しようとしているか、
デコーダが上記選択肢のいずれかを実行可能であるか、
をデコーディングする。
デコーダは、上記デコード意図または許可に適合するように、その動作を適応させる。
一例によれば、デコーダは、異なる別個のデコードサブ画像の集まりの出力または画像合成データに応じた出力画像の生成を少なくとも選択するインターフェースを具備する。デコーダは、インターフェースを通じて示された内容に適合するように、その動作を適応させる。
一例によれば、画像は、サブ画像、タイル群、およびタイルに分割される。タイルは、HEVCタイルと同様に規定され得るため、画像の長方形領域を網羅する一連のCTUとして定義可能である。上述の通り、ラスタースキャン順序のタイル群および長方形タイル群等、複数種類のタイル群がコーディングフォーマットで利用可能であってもよく、エンコーダは、使用する種類を選択するようにしてもよい。ラスタースキャン順序のタイル群は、サブ画像内のタイルラスタースキャンにおける一連のタイルとして定義可能である。長方形タイル群は、サブ画像内の長方形のタイル群として定義可能である。VCL NAL単位には厳密に1つのタイル群を含むこと、すなわち、1つのタイル群が厳密に1つのVCL NAL単位に含まれることが規定されていてもよい。サブ画像は、長方形の一組の1つまたは複数のタイル群全体として定義可能である。一例によれば、画像は、サブ画像に分離される。すなわち、画像全体がサブ画像に占有されるため、画像内に未占有エリアは存在しない。別の例によれば、画像は、サブ画像ならびに1つもしくは複数の未占有エリアを含む。
一例によれば、サブ画像の1つまたは複数のタイル分離を示す情報は、エンコーダによるビットストリーム中のエンコーディングもしくはビットストリームに伴うエンコーディングならびに/またはデコーダによるビットストリームからのデコーディングもしくはビットストリームに伴うデコーディングが行われる。タイル分離は、たとえばタイル列およびタイル行それぞれの幅および高さとして規定されたタイルグリッドであってもよい。特定のサブ画像またはサブ画像シーケンスに適用されるタイル分離は、エンコーダによるビットストリーム中のエンコーディングもしくはビットストリームに伴うエンコーディングならびに/またはデコーダによるビットストリームからのデコーディングもしくはビットストリームに伴うデコーディングが行われる。一例によれば、タイル分離を記述したシンタックス要素は、画像パラメータ集合へのエンコーディングおよび/または画像パラメータ集合からのデコーディングが行われ、たとえばタイルグループヘッダ中のPPS識別子によって、PPSがサブ画像に対してアクティブ化される。各サブ画像は、それ自体のPPSを表し得るため、それ自体のタイル分離を有していてもよい。たとえば、図10は、4つのサブ画像に分割された画像を示している。各サブ画像は、それ自体のタイルグリッドを有していてもよい。本例においては、幅および高さの等しい3×2タイルのグリッドにサブ画像1が分割され、CTUの高さが3および5の2×1タイルにサブ画像2が分割される。サブ画像3および4はそれぞれ、タイルを1つだけ有する。サブ画像1は、それぞれ1つ、3つ、および2つのタイルを含む3つのタイル群を有する。サブ画像2、3、および4はそれぞれ、タイル群を1つ有する。
また、図10は、画像エリア内でサブ画像を位置決めする上述のアルゴリズムを示している。サブ画像1は、デコーディング順序の最初であるため、画像エリアの左上隅に配置されている。サブ画像2は、デコーディング順序の2番目であるため、ラスタースキャン順序の次の未占有位置に配置されている。このアルゴリズムは、デコーディング順序の3番目および4番目のサブ画像すなわちサブ画像3および4についてもそれぞれ同様に動作する。サブ画像のデコーディング順序は、画像境界外の番号(1、2、3、4)により示される。
一例によれば、サブ画像内の1つまたは複数のタイル位置を示す情報は、たとえばタイル群ヘッダ等のイメージセグメントヘッダにおいて、エンコーダによるビットストリーム中のエンコーディングおよび/またはデコーダによるビットストリームからのデコーディングが行われる。たとえば、イメージセグメントまたはタイル群のうち、デコーディング順序の最初のタイルのタイル位置のエンコーディングおよび/またはデコーディングが行われるようになっていてもよい。一例によれば、デコーダは、イメージセグメントまたはタイル群の最初のタイルがサブ画像の左上タイルである場合(たとえば、タイルのラスタースキャン順序において、0に等しいタイルアドレスまたはタイルインデックスを有する場合)、現在のイメージセグメントまたはタイル群がサブ画像の最初のイメージセグメントまたはタイル群であるものと決定する。一例によれば、最初のイメージセグメントまたはタイル群の決定に関して、デコーダは、新たなアクセス単位が開始となるかを判定する。一例によれば、画像順序カウント値または画像順序カウントと関連するシンタックス要素値(画像順序カウントの最下位ビット)が先行サブ画像と異なる場合は、新たなアクセスが開始になるものと判定される。
一例によれば、デコード画像バッファリングは、サブ画像ではなく画像に基づいて実行される。エンコーダおよび/またはデコーダは、画像合成データを用いて、同じアクセス単位または時間インスタンスのデコードサブ画像から基準画像を生成する。基準画像の生成は、出力画像を生成する他の例での説明と同一または同様に実行される。サブ画像のエンコーディングおよび/またはデコーディングにおいて基準画像が参照される場合は、デコード画像バッファ中の基準画像から、現在のサブ画像と同位置のエリアを抽出することによって、サブ画像をエンコーディングおよび/またはデコーディングするための基準サブ画像が生成される。このため、デコーディングプロセスでは、他の例と同様に、デコード画像バッファリングプロセスから基準サブ画像を取得するとともに、他の例と同様に動作するようになっていてもよい。
一例によれば、エンコーダは、(画像内の)現在のサブ画像と同じ場所および現在のサブ画像と同じ寸法(幅および高さ)を有するサブ画像を基準画像が含むように、現在のサブ画像を予測するための基準画像を選択する。エンコーダは、(画像内の)現在のサブ画像と同じ場所または現在のサブ画像と同じ寸法を有するサブ画像を基準画像が含まない場合、現在のサブ画像を予測するための基準画像の選択を回避する。一例によれば、同じアクセス単位または時間インスタンスのサブ画像は、ランダムアクセスサブ画像および非ランダムアクセスサブ画像等、NAL単位タイプおよび/または画像タイプに関して上述したものと同様に規定された異なる種類を有することができる。エンコーダは、第1の場所およびサイズのランダムアクセスサブ画像ならびに第2の場所およびサイズの非ランダムアクセスサブ画像の両者を含む第1のアクセス単位と、デコーディング順序の第1のアクセス単位に先行する基準画像が回避されるように制約された第1の場所およびサイズのサブ画像ならびに第2の場所およびサイズの別のサブ画像を含むデコーディング順序の後続のアクセス単位とを、デコーディング順序の第1のアクセス単位に先行する基準画像を予測の基準として使用することによりエンコーディングする。
一例として、現在のサブ画像のエンコーディングおよび/またはデコーディングの場合、エンコーダおよび/またはデコーダは、(画像内の)現在のサブ画像と同じ場所および現在のサブ画像と同じ寸法(幅および高さ)を有するサブ画像を含む初期基準画像リストに対して、上記のような基準画像のみを含める。(画像内の)現在のサブ画像と同じ場所または現在のサブ画像と同じ寸法(幅および高さ)を有するサブ画像を含まない基準画像は、現在のサブ画像をエンコーディングおよび/またはデコーディングする初期基準画像リストの生成に対して省略または除外される。一例によれば、同じアクセス単位または時間インスタンスのサブ画像は、ランダムアクセスサブ画像および非ランダムアクセスサブ画像等、NAL単位タイプおよび/または画像タイプに関して上述したものと同様に規定された異なる種類を有し得る。エンコーダおよび/またはデコーダにおける基準画像リスト初期化プロセスまたはアルゴリズムでは、デコーディング順序の先行ランダムアクセスサブ画像および後続サブ画像のみを初期基準画像リストに含み、デコーディング順序の先行ランダムアクセスサブ画像に先行するサブ画像については、省略または除外する。
一例によれば、第2のサブ画像シーケンスにおけるサブ画像は、第1のサブ画像シーケンスの1つまたは複数のサブ画像から予測される。第1のサブ画像シーケンスの1つまたは複数のサブ画像に関するサブ画像の空間的関係は、エンコーダによるビットストリーム中もしくはビットストリームに伴う推測もしくは指定ならびに/またはデコーダによるビットストリームからのデコーディングもしくはビットストリームに伴うデコーディングが行われる。ビットストリーム中またはビットストリームに伴う、このような空間的関係の情報がなければ、エンコーダおよび/またはデコーダは、サブ画像が同位置にある、すなわち、厳密に重なり合い、予測において空間的に対応するものと推測し得る。空間的関係の情報は、画像合成データから独立している。たとえば、サブ画像は、出力画像において互いに重なり合うように(上下パッキング配置にて)構成されていてもよく、一方、予測のために同位置にあると考えられる。
一例によれば、エンコーダは、サブ画像シーケンス識別子がVCL NAL単位等のコード化ビデオデータ単位と関連付けられるように、ビットストリーム中またはビットストリームに伴うサブ画像シーケンス識別子または同等のものを示す。一例によれば、デコーダは、サブ画像シーケンス識別子がコード化ビデオデータ単位および/または各再構成サブ画像と関連付けられるように、ビットストリームから、または、ビットストリームに伴うサブ画像シーケンス識別子または同等のものをデコーディングする。サブ画像シーケンス識別子および関連付けメカニズムを含むシンタックス構造は、以下のうちの1つまたは複数を含んでいてもよいが、これらに限定されない。
NAL単位ヘッダに含まれ、NAL単位と関連付けられたサブ画像シーケンス識別子。
タイル群ヘッダまたはスライスヘッダ等のVCL NAL単位のヘッダに含まれ、各イメージセグメント(たとえば、タイル群またはスライス)と関連付けられたサブ画像シーケンス識別子。
サブ画像デリミタ、画像ヘッダ、または類似のシンタックス構造に含まれ、コード化ビデオデータが暗示的に参照するサブ画像シーケンス識別子(サブ画像デリミタは、たとえば新たなサブ画像を開始させる特定のNAL単位であってもよい。暗示的な参照は、たとえばデコーディングまたはビットストリーム順序の先行するシンタックス構造(たとえば、サブ画像デリミタまたは画像ヘッダ)が参照され得ることを意味していてもよい)。
ヘッダパラメータ集合、画像パラメータ集合、または類似のシンタックス構造に含まれ、コード化ビデオデータが明示的に参照するサブ画像シーケンス識別子(明示的な参照は、たとえばタイトル群ヘッダまたはスライスヘッダ等のコード化ビデオデータに基準パラメータ集合の識別子が含まれることを意味していてもよい)。
一例によれば、サブ画像シーケンス識別子番号は、ビットストリームの所定の部分集合内において有効であり(これを「有効性期間」または「有効性部分集合」と称し得る)、以下のうちの1つが挙げられ得るが、これらに限定されない。
単一のアクセス単位すなわち単一の時間インスタンスのコード化ビデオデータ。
コード化ビデオシーケンス。
閉じたランダムアクセス・アクセス単位(これを含む)から次の閉じたランダムアクセス・アクセス単位(これを含まない)またはビットストリームの終端まで。閉じたランダムアクセス・アクセス単位(closed random-access access unit)は、その内部およびそれ以降に存在するすべてのサブ画像シーケンスが閉じたランダムアクセスサブ画像で開始となるアクセス単位として定義可能である。閉じたランダムアクセスサブ画像(closed random-access sub-picture)は、内部コード化サブ画像として定義可能であり、同じサブ画像シーケンス中のデコーディング順序の内部コード化サブ画像に先行する任意のサブ画像を参照する同じサブ画像シーケンスにおいては、デコーディング順序の同じようなサブ画像が後続することはない。一例によれば、閉じたランダムアクセスサブ画像は、内部コード化サブ画像であってもよいし、外部の基準サブ画像と関連付けられ、それのみから予測されるサブ画像であってもよく(以下に詳述する例参照)、それ以外は上述のような制約を受ける。
ビットストリーム全体。
一例によれば、サブ画像シーケンス識別子番号は、ビットストリームの指定部分集合内において有効である。エンコーダは、たとえば特定のNAL単位をビットストリームに含めてもよく、このNAL単位は、これより早い期間のサブ画像シーケンス識別子と関連しないサブ画像シーケンス識別子の新たな期間を示す。
一例によれば、特定のサブ画像シーケンス識別子番号を伴うサブ画像は、同じサブ画像シーケンス識別子番号を有するデコーディング順序の先行サブ画像とともに、サブ画像シーケンス識別子の同じ有効性期間内にある場合、先行サブ画像と同じサブ画像シーケンス内にあるものと決定される。2つの画像がサブ画像シーケンス識別子の異なる有効性期間上にある場合または異なるサブ画像シーケンス識別子を有する場合、これらは異なるサブ画像シーケンスと決定される。
一例によれば、サブ画像シーケンス識別子は、長さ固定のコードワードである。長さ固定のコードワード中のビット数は、ビットストリーム中もしくはビットストリームに伴って、たとえばビデオパラメータ集合もしくはシーケンスパラメータ集合におけるエンコーディング、ならびに/または、ビットストリームから、もしくは、ビットストリームに伴って、たとえばビデオパラメータ集合もしくはシーケンスパラメータ集合からのデコーディングが行われるようになっていてもよい。
一例によれば、サブ画像シーケンス識別子は、指数ゴロムコードまたは同等の可変長コードワードである。
一例によれば、エンコーダは、たとえばビデオパラメータ集合、シーケンスパラメータ集合、または画像パラメータ集合において、ビットストリーム中またはビットストリームに伴う、サブ画像またはサブ画像シーケンスに対するデコーディング順序のVCL NAL単位またはイメージセグメントのマッピングを示す。同様に、一例によれば、一例によれば、デコーダは、ビットストリームから、または、ビットストリームに伴う、サブ画像またはサブ画像シーケンスに対するデコーディング順序のVCL NAL単位またはイメージセグメントのマッピングをデコーディングする。マッピングには、一度に1つの時間インスタンスまたはアクセス単位が関与し得る。
一例によれば、たとえば単一のコンテナシンタックス構造において複数のマッピングが提供され、各マッピングは、たとえば識別子番号でインデックス化または明示的な識別がなされている。
一例によれば、エンコーダは、ビットストリーム、たとえば、アクセス単位ヘッダまたはデリミタにおいて、画像パラメータ集合、ヘッダパラメータ集合、画像ヘッダ、イメージセグメント(たとえば、タイル群またはスライス)のヘッダを示すが、このマッピングは、特定のアクセス単位または時間インスタンスに適用される。同様に、一例によれば、デコーダは、ビットストリームから、特定のアクセス単位または時間インスタンスに適用されるマッピングをデコーディングする。一例によれば、適用されるマッピングの指定は、(たとえば、シーケンスパラメータ集合において規定される)複数のマッピングのリストへのインデックスまたは(たとえば、シーケンスパラメータ集合において規定される)一組の複数のマッピングへの識別子である。別の例において、適用されるマッピングの指定には、たとえばマッピングと関連付けられたアクセス単位に含まれるデコーディング順序のVCL NAL単位のサブ画像シーケンス識別子のリストとして、マッピングそれ自体を含む。
一例によれば、デコーダは、VCL NAL単位またはイメージセグメントのサブ画像またはサブ画像シーケンスを以下のように決定する。
アクセス単位の始端は、たとえばコーディング仕様に規定されたものとして決定される。あるいは、新たな時間インスタンスの開始は、パケット化またはコンテナファイル仕様に規定されたものとして決定される。
アクセス単位または時間インスタンスに適用されるマッピングは、任意の前例に従って決定される。
各サブ画像シーケンスまたはサブ画像は、デコーディング順序のVCL NAL単位またはイメージセグメントごとに、マッピングから決定される。
以下の設計上の決定により、一例を以下に示す。
マッピングは、シーケンスパラメータ集合に規定される。
マッピングは、VCL NAL単位をサブ画像シーケンスにマッピングするように規定される。
特定のアクセス単位または時間インスタンスに対して適用されるマッピングの指定は、タイル群ヘッダにおいて行われる。
他の設計上の決定、たとえば、コンテナシンタックス構造、VCL NAL単位ではなくイメージセグメントに対するマッピング、およびサブ画像シーケンスではなくサブ画像に対するマッピングによっても同様に、他の例を実現可能であることが了解されるものとする。
一例によれば、サブ画像が通常の単一ビュー2Dビデオの画像全体であってもよく、この場合、各画像がサブ画像を1つだけ有し、ビデオの各部(タイルとして知られている場合もある)、(非対称)マルチビューまたは立体視ビデオの各ビュー、マルチレイヤ(スケーラブル)ビデオの各レイヤ、多面360°投影(たとえば、キューブマップ)の各面、ビデオの多重解像度パッキング(たとえば、多重解像度ERPまたはCMP)の各部、または点群の各部が表面に投影される(テクスチャまたは深度)。
サブ画像シーケンスの結合に際して、識別子番号がクラッシュする可能性もある。これが起こり得る原因として、コンテンツの異なる部分のエンコーディングに異なるエンコーダが使用されている可能性がある。たとえば、PCCコンテンツまたはオーバレイ・背景ビデオのテクスチャおよび形状ビットストリームのコーディングに異なるエンコーダが使用されている可能性がある。サブ画像シーケンスがエンコーディングの時点で把握すらされていない可能性もあるため、エンコーダは、サブ画像シーケンス識別子の使用またはビットストリームの使用を制御するための十分な設定インターフェースを提供していない可能性もある。このため、サブ画像シーケンスとして用いられるビットストリームが同じサブ画像シーケンス識別子を使用する可能性もあるし、サブ画像シーケンス識別子のエンコーディングが完全に不可能となっている可能性もある。また、サブ画像シーケンスとして用いられるビットストリームが異なるコンテンツの基準パラメータ集合に対して、同じパラメータ集合識別子を使用する可能性も考えられ得る。
サブ画像シーケンスには、異なるシーケンスレベルパラメータの使用が必要となる可能性もある。たとえば、テクスチャビットストリームが4:2:0彩度フォーマットを使用する一方、対応する深度ビットストリームが4:0:0彩度フォーマットを使用する可能性もある。使用する彩度フォーマットは、シーケンスパラメータ集合においてコーディングされる。H.264/AVCにおいてはコード化ビデオシーケンス当たり、HEVCにおいてはコード化レイヤ単位のビデオシーケンス(CLVS)当たり、シーケンスパラメータ集合が1つだけアクティブ化される。CLVSは、デコーディング順序において、特定種類のランダムアクセス画像(HEVCにおいては、NoRaslOutputFlagが1に等しいIRAP画像)に、特定種類の次のランダムアクセス画像(HEVCにおいては、NoRaslOutputFlagが1に等しい次のIRAP画像)までの(これを除く)すべてのコード化画像(存在する場合)が後続する同じレイヤ識別子番号(すなわち、HEVCの同じnuh_layer_id値)を含む一連のコード化画像として定義可能である。
識別番号のクラッシュは、サブ画像シーケンスの結合に際して識別番号を書き換えることにより回避することも可能である。ただし、このような書き換えは、特にue(v)exp-ゴロムコード等の可変長コードワードで識別子がコーディングされている場合、始端コードエミュレーション防止バイトの影響を受ける可能性があるビット位置に識別子が現れる場合、可変長コード化シンタックス要素が識別子に先行する場合、識別子自体が始端コードエミュレーション防止バイトを推測する場合(たとえば、値0)、および/またはコンテンツが暗号化され、識別子がコンテンツの暗号化部分の一部である場合に脆弱となり得る。
レイヤ識別子および/またはサブ画像シーケンス識別子の値範囲およびビットレートは、比較的大きくすることが必要となる可能性もある。以下、サブシーケンス結合を利用し得る多様な使用事例の一部の例を簡単に一覧化する。
3DoF 360°ビデオの表示域に応じたストリーミングのサブ画像数は、比較的多くすることが必要となる可能性もある。たとえば、3DoF 360°ビデオの表示域に応じた配信を実現するには、96個ものサブ画像を使用することが好都合となり得る。
ビデオベースの点群コーディングまたは3DoF+ビデオコーディング等のボリュメトリックビデオコーディングにおいても、サブ画像の数を多くすることが有益となる可能性もある。ボリュメトリックビデオコーディングにおいては、3Dコンテンツが2Dパッチ上に投影されるようになっていてもよく、これは、たとえば類似の視認円錐に基づいてサブ画像上に配置されていてもよい。さらに、ボリュメトリックビデオコーディングにおいては、テクスチャ、形状、占有状態、および異なる種類の属性等、複数種類のビデオがコーディングされるようになっていてもよい。
プレノプティックまたはサブアパーチャイメージ/ビデオコーディングであって、サブアパーチャイメージ当たり1つのサブ画像がコーディングされるようになっていてもよい。
スーパーマルチビューまたはウィンドウ付き6DoFビデオコーディングであって、コンテンツが数十台のカメラで取り込まれる。
360°背景に重なり合う1つまたは複数の2D 360°またはボリュメトリックビデオクリップであって、表示域に応じた配信のためサブ画像でコーディングされていてもよい。
たとえば異なるビットレート、空間解像度、画像レート、ビット深度、ダイナミックレンジ、および/または色域に関して、コンテンツのさまざまなバージョンがコーディングされる可能性もある。たとえば表示域に応じた配信および/またはレート適応に関しては、さまざまなバージョンによるサブ画像シーケンスの結合が好ましい可能性もあるため、これらは潜在的に、さまざまなサブ画像シーケンス識別子と関連付けられるものとする。
たとえば選択されたサブ画像シーケンスに対して選択的な拡張機能を提供するため、スケーラブルビデオコーディングの拡張レイヤが有益となる可能性もある。
H.264/AVCおよびHEVCにおいては、レイヤ識別子または同等のものがNAL単位ヘッダにおいてエンコーディングされる。レイヤ識別子および/またはサブ画像シーケンス識別子の比較的大きな値範囲は、ビットレートに対して比較的コスト高である。H.264/AVCおよびHEVCにおいては、固定長コードワードが使用されている。多種多様な使用事例をサポートするため、たとえば8~12ビットがサブ画像シーケンス識別子に対して、たとえば4~6ビットがレイヤ識別子に対して予約される可能性もある。両者を単一の識別子番号として組み合わせることも可能と考えられる(たとえば、10~16ビットの長さ)。ただし、NAL単位ヘッダに含まれる場合、識別子番号は、サブ画像およびレイヤをサポートしないコーディングシステムと比較して、NAL単位当たり2バイトの付加的なストレージを必要とする可能性もある。たとえば、これは、60Hzレートで96個のサブ画像の場合、90kbps超に相当することになる。
HEVCでは6ビットのnuh_layer_id値を使用し、レイヤが独立した非ベースレイヤであってもよい。HEVC規格には具体的に記載されていないものの、任意のレイヤに対して、0に等しいすべてのスケーラビリティ次元識別子にマーキングすることが可能と考えられる。すなわち、レイヤが同じビューのコード化テクスチャであり、補助レイヤではなく、品質または空間拡張レイヤもないことを示し得ると考えられる。これにより、レイヤがサブ画像シーケンスに用いられることを示し得る。ただし、6ビットのnuh_layer_idしか使用されないため、多くの使用事例(たとえば、表示域に応じた360°ストリーミングに対する96個のサブ画像)においては、nuh_layer_id値に対してサブ画像シーケンスを一意にマッピングすることができない。同時にデコーディングされるサブ画像シーケンスの数は、6ビットのnuh_layer_id値に可能な数より少なくなる可能性がある。
一例においては、デリミタがデリミタNAL単位であり、たとえばサブ画像シーケンスデリミタNAL単位またはデコーディング制御NAL単位と称し得る。実施形態は、デリミタの呼称に関わらず適用されることを理解する必要がある。サブ画像シーケンスデリミタNAL単位は、サブ画像関連指標または制御の搬送に特有であり得る(必ずしもこれらに限定されない)。一方、デリミタNAL単位またはデコーディング制御NAL単位等のより一般的な呼称は、同じくサブ画像関連指標または制御を含む任意の目的に使用可能である。ビットストリームシンタックスにおける基本単位がNAL単位である場合は、デリミタがNAL単位であってもよい。実施形態は、デリミタがNAL単位であることに限定されないが、ビデオビットストリームにおいては、アクセス単位ヘッダまたは同等のものまたはその一部のような任意のシンタックス構造も可能である。デリミタ(delimiter)、デリミタNAL単位(delimiter NAL unit)、サブ画像シーケンスデリミタ(sub-picture sequence delimiter)、およびデコーディング制御NAL単位(decoding control NAL unit)といった用語は、同じ意味で使用する。
アクセス単位デリミタNAL単位は、デリミタNAL単位の一例である。VVC規格のドラフト版は、以下のシンタックスでアクセス単位デリミタ(AUD)NAL単位に含まれるアクセス単位デリミタ(AUD)RBSPを規定する。
VVC規格のドラフト版において、AUデリミタ(AUD)は、アクセス単位(AU)の始端、AUがIRAPであるか漸次デコーディングリフレッシュ(GDR)AUであるか、およびAUデリミタNAL単位を含むAU中のコード化画像に存在するスライスの種類を示すのに用いられる。aud_irap_or_gdr_au_flag=1は、AUデリミタを含むAUがIRAPまたはGDR AUであることを規定する。aud_irap_or_gdr_au_flag=0は、AUデリミタを含むAUがIRAPでもGDR AUでもないことを規定する。コード化ビデオシーケンスは、IRAPまたはGDR AUで開始となることが必要となり得る。IRAP AUは、すべてのレイヤが存在してIRAP画像を含むAUとして定義可能である。GDR AUは、すべてのレイヤが存在してGDR画像を含むAUとして定義可能である。aud_pic_typeは、I(intra-coded,内部コード化)、P(inter-coded with uni-prediction,一重予測の相互コード化)、およびB(Inter-coded with bi-prediction,二重予測の相互コード化)スライスのうちの可能なスライスタイプを指定する。
一例によれば、すべてのサブ画像シーケンスに関連するように所定のサブ画像シーケンス識別子番号(たとえば、0)が規定される。たとえば、すべてのサブ画像シーケンスに適用されるパラメータ集合NAL単位に先行するように、サブ画像シーケンス識別子が0に等しいサブ画像シーケンスデリミタが用いられるようになっていてもよい。たとえば、同じエンコーディング設定を有する同じエンコーダによりエンコーディングが実行され、すべてのサブ画像が同じ幅および高さを有する場合、これらは、同じシーケンスパラメータ集合(SPS)および画像パラメータ集合(PPS)を共有するようにしてもよい。
他の実施形態との併用または他の実施形態から独立した使用が可能な一実施形態によれば、任意特定のレイヤに固有ではない情報に対して、特定のレイヤ識別子番号が予約され、ビットストリーム全体もしくはすべてのレイヤならびに/または任意特定のレイヤに対する割り当てが意味をなさないNAL単位(または、類似物)に適用される。VCL NAL単位(または、このようなコード化ビデオデータ)は、このレイヤ識別子に割り当てられない。たとえば、ビットストリームNAL単位および/またはアクセス単位デリミタNAL単位の終端を上記特定のレイヤ識別子に割り当てることも可能である。他の実施形態に記載のようなデコーディング制御NAL単位を上記特定のレイヤ識別子に割り当てることも可能であるし、デコーディング制御NAL単位において搬送される制御が任意特定のレイヤに固有でない場合は、ビットストリーム全体またはすべてのレイヤに適用することも可能である。たとえば、識別子番号のクラッシュを回避するため、(独立コード化画像領域シーケンス等の部分を単一のビットストリームに対して結合可能な)レイヤおよび/またはビットストリームで共有されるパラメータ集合NAL単位が上記特定のレイヤ識別子に割り当てられていてもよい。
一実施形態によれば、サブ画像シーケンスデリミタは、他の情報をデコーダに受け渡すために使用される。このような他の情報には、以下のうちの1つまたは複数を含んでいてもよいが、これらに限定されない。
システムにおいて本質的に保持される情報(たとえば、ファイルフォーマット、メディアプレゼンテーション、および/または通信プロトコル)。
クライアント機器、プレーヤアプリケーション、または類似のエンティティにより制御または使用される情報(デコーディングプロセスに影響を及ぼす可能性がある)。
クライアント機器、プレーヤアプリケーション、または類似のエンティティにより制御または使用される情報としては、以下が挙げられるが、これらに限定されない。
関連するNAL単位またはコード化画像をコード化ビデオシーケンスの始端として処理する旨の指示であって、これは、たとえばOpen GOP内部画像(たとえば、HEVCのCRA画像)からデコーディングが開始(再開)される場合に、Open GOP内部画像と併用され得る。たとえば、HEVCデコーディングプロセスでは、外部制御フラグHandleCraAsBlaFlagを入力するが、これは、デリミタNAL単位に含めることも可能である。
関連するNAL単位またはコード化画像を新たな構成ビットストリームの始端として処理する旨の指示。
関連するNAL単位またはコード化画像をレイヤアップスイッチング後の予想レイヤのデコーディングの始端として処理する旨の指示。
コード化ビデオシーケンスの終端の指定であって、この場合は、デリミタNAL単位が如何なる後続NAL単位にも関連する必要がない。
構成ビットストリームの終端の指定であって、この場合は、デリミタNAL単位が如何なる後続NAL単位にも関連する必要がない。
(たとえば、レイヤダウンスイッチングによる)予測レイヤの終端の指定であって、この場合は、デリミタNAL単位が如何なる後続NAL単位にも関連する必要がない。
情報が関連付けられた画像のデコーディングに出力時間が後続する(サブ画像シーケンスの)画像を出力しない旨の指示であって、この機能は、HEVCにおいてno_output_of_prior_pics_flag=1により実現される機能と類似する。
一部の手法は、構成ビットストリームのエンコーディング後の結合ビットストリームへの新たなデータ単位(たとえば、デリミタNAL単位)の追加に基づく。構成ビットストリームに対してバッファリングパラメータ(たとえば、HRDパラメータ)が生成されるようになっていてもよく、これらのパラメータは、追加のデータ単位を考慮に入れない。一例においては、バッファリングモデルがデータ単位の種類を確認するように規定される。データ単位が結合ビットストリームへの追加または追加可能であるもののうちの1つである場合(たとえば、デリミタNAL単位の場合)、バッファリングモデルは、これをコード化画像バッファまたは同等のものに含めない。それ以外の場合、データ単位が結合ビットストリームへの追加または追加可能なもののうちの1つでなければ、バッファリングモデルは、このデータ単位をコード化画像バッファまたは同等のものに追加する。
一実施形態によれば、クライアント機器、プレーヤアプリケーション、または類似のエンティティ(たとえば、エッジネットワーク上のエンティティ)の動作には、以下のステップを含む。
多くのビットストリーム900から、2つ以上のビットストリームが選択される(図8a)。ビットストリームは、サブ画像シーケンスであってもよい。選択されたビットストリームは、構成ビットストリームと称し得る。ビットストリームの選択には、たとえばビットストリームを搬送する(コンテナファイル内の)トラックの選択およびパーシングを含んでいてもよい。この代替または追加として、選択には、ビットストリームを搬送するトラックに対応するMedia DescriptionのRepresentationを選択することであって、Representationはビットストリームを搬送するトラックに対応する、選択することと、Representationの(Sub)segmentまたはデータ単位等のデータをサーバから要求することと、要求データを受信することと、を含んでいてもよい。
ビットストリームは、単一の結合ビットストリーム902または結合データ単位ストリームとして結合される。結合プロセスの一部として、デリミタ904が結合ビットストリーム902に書き込まれ得るが、これらのデリミタ904は、当該デリミタと関連付けられたデータ単位が割り当てられるビットストリームを示す。デリミタは、たとえばデリミタNAL単位またはサブ画像ヘッダ等のデリミタデータ単位であってもよいし、レイヤ識別子908であってもよい(図8b)。デリミタデータ単位の手法は、たとえばコーディングシステムが本質的に、レイヤまたはサブ画像シーケンスを使用可能にできない場合に用いられるようになっていてもよい。レイヤ識別子の手法においては、たとえばNAL単位ヘッダにレイヤ識別子が存在していてもよい。この手法は、たとえばコーディングシステムがHEVCと同様に、独立した非ベースレイヤを使用可能にできる場合に用いられるようになっていてもよい。
エッジネットワーク上のエンティティは、上述のステップを実行する場合、DASHストリーミングセッションのクライアント等、セッションの終点として作用し得る。デコーダエンティティとエッジネットワーク上のエンティティとの間には、別のセッションが存在していてもよく、この場合は、異なる一組の通信プロトコルが使用されるようになっていてもよい。
データ単位ストリーム中のデータ単位は、NAL単位、コード化画像、画像群のうちの1つであってもよいが、これらに限定されない。
図9は、品質の異なる2つのサブ画像シーケンス950がサブ画像シーケンストラック954としてカプセル化され(952)、たとえばクライアント機器またはクラウドサービスに配信される(956)構成を示している。(下線付き太字の数字を含む正方形として図の下部に示した)2つ目のサブ画像シーケンストラックのサブ画像は、(太字でも下線付きでもない数字を含む正方形として図の上部に示した)1つ目のサブ画像シーケンストラックのサブ画像とは異なる品質(品質2)を有する。クライアント機器は、選択されたサブ画像シーケンスから単一のデータ単位ストリームを生成し(958)、デリミタを適当な場所に含める。単一のデータ単位ストリームのデータ単位が複数のデコードサブ画像シーケンス962としてデコーディングされる(960)。デコードサブ画像シーケンス962は、混合品質を有する出力画像シーケンス966として合成される(964)。図9におけるこれら出力画像シーケンス966の表示において、2つ目のサブ画像シーケンストラックに由来するサブ画像シーケンスは、下線付き太字の数字を含む正方形として示している。
一実施形態によれば、エンコーダは、構成ビットストリーム内にデリミタデータ単位を生成する。別の実施形態によれば、受信側等の別のエンティティが他の実施形態に記載の通り、デリミタデータ単位のコンテンツを書き換える。
以下、結合ビットストリームの同じコード化画像における異なる種類のコード化画像(たとえば、非IRAPおよびIRAP画像)に由来する独立コード化画像領域を示す例示的な一実施形態を提供する。
一実施形態において、プレーヤは、関連するコード化画像が、異なる種類のコード化画像(たとえば、非IRAPおよびIRAP画像)に由来する独立コード化画像領域を含むか、または、TRAILおよび任意のIRAP NAL単位タイプ等の異なる種類のVCL NAL単位を含むか、に関する指標をデコーディング制御NAL単位等の結合ビットストリームの別個のデータ単位に含める。この指標は、混合画像タイプ指標と称し得る。異なる種類の画像に由来する独立コード化画像領域または異なる種類のVCL NAL単位を有するコード化画像を示す混合画像タイプ指標と関連付けられたコード化画像は、混合画像タイプ特性との関連付けが完了または進行中と考えられ得る。
一実施形態において、デコーダは、前記別個のデータ単位から上記指標をデコーディングし、この指標が与える情報を使用して、たとえば以下のように、前記別個のデータ単位のデコーディングをさらに制御する。
一実施形態において、コード化画像が混合画像タイプ特性を有するものと上記指標が示す場合、デコーダは、コード化画像がトレーリング画像のようにデコーディングされる旨をデコーディングする。このため、デコーダは後で、コード化画像をトレーリング画像のようにデコーディングし得る。
一実施形態において、コード化画像が混合画像タイプ特性を有するものと上記指標が示す場合、デコーダは、コード化画像の画像順序カウント(POC)がトレーリング画像のようにデコーディングされ、コード化画像のPOCが時間的サブレイヤ0における先行基準画像のPOCに対する所定のアルゴリズムで導出される旨をデコーディングする。このため、デコーダは後で、コード化画像をトレーリング画像のようにデコーディングし得るとともに、時間的サブレイヤ0における先行基準画像のPOCに対する所定のアルゴリズムでPOCを導出する。
一実施形態において、コード化画像が混合画像タイプ特性を有さないものと上記指標が示す場合、デコーダは、前記別個のデータ単位から、コード化画像のスライス等の任意のイメージセグメントに包含または参照される基準画像リスト構造および/または基準画像集合構造に従って、基準画像マーキングが実行される旨をデコーディングする。これは、IDR NAL単位タイプによる「参照不使用」としてのすべての基準画像のマーキング等、従来から基準画像の特定のマーキングの起点となっている種類のイメージセグメントにも同様に当てはまることに留意するものとする。
一実施形態によれば、サブ画像シーケンスデリミタもしくはアクセス単位デリミタ等のデリミタまたはデコーディング制御NAL単位がビットストリームスケーラビリティ特性のデコーダへの受け渡しに使用され、以下のうちの1つまたは複数が挙げられるが、これらに限定されない。
デリミタの範囲内の画像の最も高い時間的サブレイヤの指定。
デリミタの範囲内のすべての画像がIRAPおよび/またはGDR画像であるかの指標。
デリミタの範囲内に存在するレイヤまたは存在し得るレイヤの指定。
ビットストリームが表す出力レイヤ集合の指定であって、この指定の出力レイヤ集合に存在しないレイヤは、ビットストリーム中にも存在しない。
一実施形態において、IRAPまたはGDR AUにおけるアクセス単位デリミタの範囲は、AUDで始まるコード化ビデオシーケンスとなるように規定される。
デリミタまたはデコーディング制御NAL単位内のビットストリームスケーラビリティ特性をデコーダに受け渡す利点として、以下のうちの1つまたは複数が挙げられるが、これらに限定されない。
デコーダインターフェースは、ビットストリームスケーラビリティ特性をアプリケーションからデコーダに受け渡す特定の手段を提供せず、ビデオビットストリームを受け渡すインターフェースのみを提供する可能性がある。このため、ビットストリームスケーラビリティ特性をビットストリーム内に含めることのみがデコーダへの受け渡し手段となる可能性がある。
受信側への転送前に、メディアミキサ等のネットワークエンティティがビットストリームからレイヤまたはサブレイヤを削除するようにしてもよい。ネットワークエンティティは、転送ビットストリームのビットストリームスケーラビリティ特性を示す受信側デコーダとの帯域外インターフェースを有さない可能性もある。このため、ビットストリームスケーラビリティ特性をビットストリーム内に含めることのみがネットワークエンティティからデコーダへの受け渡し手段となる可能性がある。
VPSにおいて指定可能なサブレイヤ、レイヤ、および/またはOLSの全部ではないが一部をデコーダがデコーディング可能な場合は、ビットストリームが表すサブレイヤ、レイヤ、および/またはOLSに関する情報によって、ビットストリームのデコーダへの受け渡し前にサブビットストリーム抽出が必要となるかをアプリケーションが決定可能となる。一部のデコーダは、指定されたOLSおよび指定された最も高い時間的サブレイヤを厳密に表すのに、入力として与えられたビットストリームを必要とする場合がある。
サブビットストリーム抽出プロセスでは、目標OLSを入力として取得するとともに、目標OLSの出力レイヤにおいて画像をデコーディングするのに必要ない画像を非出力レイヤから除去するようにしてもよい。後続のサブビットストリーム抽出は、(一部のレイヤがビットストリーム中に存在しなくなったため)不可能となっている可能性もあるし、(先行サブビットストリーム抽出において多くの時間的サブレイヤが除去されたため)望ましいビットストリームにならない可能性もある。したがって、ビットストリームが表すOLSおよび最も高い時間的サブレイヤに関する情報によれば、入力として特定の目標OLSおよび最も高い時間的サブレイヤを含むサブビットストリーム抽出が可能かつ妥当であるかを決定可能となる。
デコーダ動作は、ビットストリームが表すレイヤもしくはOLSならびに/またはビットストリーム中に存在する最も高いサブレイヤを把握する恩恵を受け得る。デリミタまたはデコーディング制御NAL単位内の各ビットストリームスケーラビリティ特性をデコーダに受け渡す結果として、以下の利点のうちの1つまたは複数が得られる。同様に、ビットストリームスケーラビリティ特性をデコーディングするとともに、以下の項目のうちのいずれか1つまたは複数に記載のような各デコーダ動作を推測する実施形態が規定される。
ビットストリームが表すOLSに関する情報によって、デコーディングプロセスでは、出力レイヤであるために正しい画像を出力するレイヤを決定することができる。
画像格納バッファ(picture storage buffer)は、あるデコード画像をDPBに格納するのに用いられるメモリ空間として定義可能である。すべての画像格納バッファが同じ幅および高さ(サンプルに関して)、同じビット深度、ならびに/または同じ彩度フォーマットを有することが規定され得る。異なるレイヤ中の画像が異なる幅(サンプル)、高さ(サンプル)、ビット深度、または彩度フォーマットを有する場合は、画像格納バッファがOLS中のレイヤのうちの最大値で予約されることが規定され得る。ビットストリームが表すOLSに関する情報によって、デコーダは、DPBの画像格納バッファに対して予約される幅、高さ、ビット深度、および/または彩度フォーマットを決定することができる。
初期バッファリング遅延等のHRDパラメータは、ビットストリームが表すOLSおよび/または存在するサブレイヤによって決まり得る。ビットストリームが表すOLSおよび/またはビットストリーム中に存在するサブレイヤに関する情報によって、デコーダは、ビットストリームに適用可能なHRDパラメータを選択することができる。その結果、デコーダは、初期バッファリング遅延等の指定されたHRDパラメータを使用することにより、当該デコーダで使用されるCPBおよび/またはDPBを制御するようにしてもよい。
以下、アクセス単位デリミタNAL単位の例示的な一実施形態を提供する。以下のシンタックスが用いられるようになっていてもよい。
aud_irap_or_gdr_au_flagおよびaud_pic_typeのセマンティクスについては、上述の通りである。他のシンタックス要素のセマンティクスは、以下のように規定され得る。
aud_htid_info_present_flag=0は、aud_cvs_htid_plus1がAUD NAL単位に存在しないことを規定する。aud_htid_info_present_flag=1は、aud_cvs_htid_plus1がAUD NAL単位に存在することを規定する。
aud_ols_info_present_flag=0は、aud_cvs_ols_idxがAUD NAL単位に存在しないことを規定する。aud_ols_info_present_flag=1は、aud_cvs_ols_idxがAUD NAL単位に存在することを規定する。
aud_cvs_htid_plus1=0は、AUD NAL単位で始まるCVS中のすべての画像がph_recovery_poc_cnt=0のIRAP画像またはGDR画像であることを規定する。aud_cvs_htid_plus1>0は、AUD NAL単位で始まるCVS中のすべての画像のTemporalIdがaud_cvs_htid_plus1未満であることを規定する。
aud_cvs_ols_idxは、AUD NAL単位で始まるCVSが、OLSインデックスがaud_cvs_ols_idxに等しいOLSに含まれる以外の如何なるレイヤも含まないことを規定する。
他の例示的な実施形態も同様に導出可能であることを理解する必要がある。たとえば、2つのゲーティングフラグ(aud_htid_info_present_flagおよびaud_ols_info_present_flag)が単一のゲーティングフラグにより置き換えられてもよいし(aud_cvs_htid_plus1およびaud_cvs_ols_idxの両方をゲーティング)、完全に除去されてもよい(aud_irap_or_gdr_au_flag=1の場合に、aud_cvs_htid_plus1およびaud_cvs_ols_idxを存在させる)。別の例においては、最も高い時間的サブレイヤまたはOLSシグナリングのみ(両方ではない)がシンタックスに含まれる。さらに別の例においては、aud_cvs_htid_plus1の代わりにシンタックス要素aud_cvs_htidが使用され、AUD NAL単位で始まるCVS中のすべての画像のTemporalIdがaud_cvs_htid以下であることを規定する。また、シンタックス要素のデータ型が例示的な実施形態に示すものでなくてもよいことに留意する必要がある。たとえば、aud_cvs_ols_idxに対して、ue(v)の代わりにu(8)を使用することも可能である。さらに、シンタックス要素のセマンティクスが例として提供され、実施形態が他の類似セマンティクスにも同様に当てはまることを理解する必要がある。たとえば、aud_cvs_ols_idxは、規定のサブビットストリーム抽出プロセスを用いて入力ビットストリームからビットストリームを生成するのに使用されたOLSインデックスとなるように規定されていてもよい。
一実施形態において、サブビットストリーム抽出プロセスでは、ビットストリームinBitstreamのほか、目標OLSインデックスtargetOlsIdxおよび/または目標最大TemporalId値tIdTargetを入力し、サブビットストリームoutBitstreamを出力するようにしてもよい。サブビットストリーム抽出プロセスでは、アクセス単位デリミタ等のデリミタまたはoutBitstream中のデコーディング制御NAL単位に対して、プロセスの入力として与えられたtargetOlsIdxおよび/または最大TemporalIdを挿入する。
一実施形態において、サブビットストリーム抽出プロセスでは、ビットストリームinBitstream、目標OLSインデックスtargetOlsIdx、および目標最大TemporalId値tIdTargetを入力し、サブビットストリームoutBitstreamを出力するとともに、以下のステップのうちの1つまたは複数を含むことによって、出力サブビットストリームOutBitstreamを導出してもよい。
ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一になるように設定される。
TemporalIdがtIdTargetより大きなすべてのNAL単位をoutBitstreamから除去する。
nal_unit_typeがVPS_NUT、DCI_NUT、AUD_NUT、およびEOB_NUTのいずれにも等しくなく、nuh_layer_idが目標OLSに含まれないすべてのNAL単位をoutBitstreamから除去する。
目標OLSの出力レイヤに存在せず、(OLS中の他のレイヤに対して、IRAP画像のみがレイヤ間基準画像として使用される場合の)非IRAP画像であるか、または、(特定のサブレイヤまでがレイヤ間予測の基準として使用される場合に)レイヤ間予測の基準として使用されないサブレイヤ中に存在するすべてのVCL NAL単位をoutBitstreamから除去する。
上記いずれかの導出ステップによってAUのすべてのVCL NAL単位が除去され、AUD NAL単位がAUに存在する場合、AUD NAL単位をoutBitstreamから除去する。
outBitstream中のAUのすべての画像単位(PU)がGDR PUまたはIRAP PUである場合、以下を適用する。
複数のレイヤが存在または存在可能であり(たとえば、vps_max_layers_minus1が0より大きい)、outBitstream中のAUがAUD NAL単位を含まない場合は、aud_irap_or_gdr_au_flag =1の状態で、AUの最初のNAL単位としてAUD NAL単位をoutBitstreamに追加する。
それ以外で、outBitstream中のAUがAUD NAL単位を含む場合、aud_irap_or_gdr_au_flagの値は、AUD NAL単位において1に等しく設定される。
aud_irap_or_gdr_au_fla=1の各AUD NAL単位のシンタックス要素値を以下のように設定する(使用されるシンタックス選択肢に応じて、同様の設定をする)。
aud_htid_info_present_flagは、1に等しく設定される。
aud_ols_info_present_flagは、1に等しく設定される。
aud_cvs_htid_plus1は、tIdTarget+1に等しく設定される。
aud_cvs_ols_idxは、targetOlsIdxに等しく設定される。
以下、デコーディング制御NAL単位の例示的な一実施形態を提供する。
一実施形態において、デコーディング制御NAL単位のシンタックスは、同じデコーディング制御NAL単位および/または制御シンタックス要素における各制御シンタックス要素の有無に関するゲーティングフラグを少なくとも含む。制御シンタックス要素としては、target_layer_id、highest_temporal_id、handle_as_cvs_start_flag、no_output_of_prior_pics_flag、および/またはsignalled_slicce_id_flagのうちの1つまたは複数が挙げられるが、これらに限定されない。
一実施形態によれば、これらの制御シンタックス要素のセマンティクスは、以下の通りであってもよい。
target_layer_idは、デコーディング対象のレイヤの識別子である。
デコーディング対象のOLSの出力レイヤ集合インデックスである。
highest_temporal_idは、デコーディング対象の最も高いサブレイヤの識別子である。
handle_as_cvs_start_flagは、CLVSを開始する画像として、関連する画像(たとえば、CRAまたはGRA画像)が処理されるかを示す。
no_output_of_prior_pics_flag=1は、関連するIDR画像のデコーディング時間に対して出力時間が先行する画像が出力されないことを規定する。
signalled_slice_id_flag=0は、slice_addressシンタックス要素(または、スライスヘッダ内のスライスの識別子もしくはスライスヘッダ等のヘッダ内の独立コード化画像領域の識別子を規定する任意の類似シンタックス要素)が0で始まり、デコーディング順序のコード化画像内のスライスごとに1だけインクリメントすることを規定する。signalled_slice_id_flag=1の場合は、デコーディング順序のslice_addressシンタックス要素の値が規定される。signalled_slice_id_flag=1の場合は、deco_slice_id_length_minus1、deco_slices_in_pic_minus1、およびslice_id[i]といったシンタックス要素が追加で存在する。
一実施形態によれば、これら付加的な制御シンタックス要素のセマンティクスは、以下の通りであってもよい。
deco_slice_id_length_minus1は、slice_id[i]固定長コード化シンタックス要素の長さを示す。
deco_slices_in_pic_minus1は、画像内の長方形スライスの数を示す。
画像の長方形スライスごとに存在し、Iでインデックス化されたslice_id[i]は、デコーディング順序のslice_addressシンタックス要素の値を含む。
本実施形態においては、以下のシンタックスが用いられるようになっていてもよい。シンタックスは、実施形態に含まれる制御シンタックス要素に応じて、同様に調整され得ることを理解する必要がある。また、ゲーティングフラグおよび制御シンタックス要素は、異なる順序で選択し得ることを理解する必要がある。たとえば、ゲーティングフラグは、シンタックスにおいて、各制御シンタックス要素の直前に先行することも可能である。本実施形態は、提示のシンタックスおよびセマンティクスの部分集合、たとえば、スライスと関連する部分集合のみで実現され得ることを理解する必要がある。また、独立デコーディング可能な画像領域を実現する手段として、(境界が画像境界のように処理される)長方形スライスに関して例示的な実施形態を説明するが、シンタックスおよびセマンティクスは、サブ画像等の他の手段にも同様に適用可能であることを理解する必要がある。たとえば、特定の順序(たとえば、サブ画像の左上位置の画像ラスタースキャン順序)のサブ画像識別子番号は、デコーディング制御NAL単位において示すことも可能である。
ゲーティングフラグは、各制御シンタックス要素の有無を規定する。ゲーティングフラグのセマンティクスは、以下のように規定され得る。
target_lid_present_flag=0は、target_layer_idが存在しないことを規定し、target_lid_present_flag=1は、target_layer_idが存在することを規定する。
highest_tid_present_flag=0は、highest_temporal_idが存在しないことを規定し、highest_tid_present_flag=1は、highest_temporal_idが存在することを規定する。
handle_as_cvs_start_present_flag=0は、handle_as_cvs_start_flagが存在しないことを規定し、handle_as_cvs_start_present_flag=1は、handle_as_cvs_start_flagが存在することを規定する。
no_output_of_prior_pics_present_flag=0は、no_output_of_prior_pics_flagが存在しないことを規定し、no_output_of_prior_pics_present_flag=1は、no_output_of_prior_pics_flagが存在することを規定する。
slice_id_signalling_present_flag=0は、signalled_slice_id_flagが存在しないことを規定し、slice_id_signalling_present_flag=1は、signalled_slice_id_flagが存在することを規定する。
vcl_nal_unit_info_present_flag=0は、mixed_vcl_nal_unit_types_flagが存在しないことを規定し、vcl_nal_unit_info_present_flag=1は、mixed_vcl_nal_unit_types_flagが存在することを規定する。
control_extension_flag=0は、デコーディング制御RBSPシンタックス構造中にcontrol_extension_data_flagシンタックス要素が存在しないことを規定する。control_extension_flag=1は、デコーディング制御RBSPシンタックス構造中にcontrol_extension_data_flagシンタックス要素が存在することを規定する。
制御シンタックス要素のセマンティクスは、以下のように規定され得る。セマンティクスにおいて、このデコーディング制御NAL単位と関連付けられたコード化画像は、このデコーディング制御NAL単位を含むとともに、このデコーディング制御NAL単位と同じNuhLayerId値を有するアクセス単位に含まれるコード化画像である。
target_layer_idは(存在する場合)、このデコーディング制御RBSPを含むアクセス単位から、target_layer_idを有するデコーディング制御NAL単位を含むデコーディング順序の次のアクセス単位まで、その単位は除いて適用されるTargetLayerIdの値を規定する。target_layer_idを有するデコーディング制御NAL単位がビットストリームの最初のアクセス単位に存在しない場合は、ビットストリームの先頭から、target_layer_idを有するデコーディング制御NAL単位を含むデコーディング順序の最初のアクセス単位まで、その単位は除いて、TargetLayerIdがvps_included_layer_id[0]に等しく設定される。アクセス単位の複数のデコーディング制御NAL単位に存在する場合は、アクセス単位中のすべてのtarget_layer_id値が同じであるものとする。target_layer_idを有するデコーディング制御NAL単位は、CVSSアクセス単位ではないアクセス単位に存在しないものとする。
highest_temporal_idは(存在する場合)、このデコーディング制御RBSPを含むアクセス単位から、highest_temporal_idを有するデコーディング制御NAL単位を含むデコーディング順序の次のアクセス単位まで、その単位は除いて適用されるHighesTidの値を規定する。highest_temporal_idを有するデコーディング制御NAL単位がビットストリームの最初のアクセス単位に存在しない場合は、ビットストリームの先頭から、highest_temporal_idを有するデコーディング制御NAL単位を含むデコーディング順序の最初のアクセス単位まで、その単位は除いて、HighesTidがsps_max_sub_layers_minus1に等しく設定される。アクセス単位の複数のデコーディング制御NAL単位に存在する場合は、アクセス単位中のすべてのhighest_temporal_id値が同じであるものとする。highest_temporal_idを有するデコーディング制御NAL単位は、CVSSアクセス単位ではないアクセス単位に存在しないものとする。
handle_as_cvs_start_flagは(存在する場合)、このデコーディング制御NAL単位と関連付けられたコード化画像のHandleAsCvsStartFlagの値を規定する。このデコーディング制御NAL単位と関連付けられたコード化画像がIRAP画像でもGRA画像でもない場合は、handle_as_cvs_start_flagが存在しないものとする。handle_as_cvs_start_flagを含み、NuhLayerIdの同じ値を有する複数のデコーディング制御NAL単位がアクセス単位に存在する場合は、これらのデコーディング制御NAL単位中のすべてのhandle_as_cvs_start_flag値が同じであるものとする。handle_as_cvs_start_flag=1のデコーディング制御NAL単位がコード化画像と関連付けられていない場合は、当該コード化画像に対して、HandleAsCvsStartFlagが0に等しく設定される。
no_output_of_prior_pics_flagは(存在する場合)、このデコーディング制御NAL単位と関連付けられたコード化画像のNoOutputOfPriorPicsFlagの値を規定する。このデコーディング制御NAL単位と関連付けられたコード化画像がIDR画像でない場合は、no_output_of_prior_pics_flagが存在しないものとする。no_output_of_prior_pics_flagを含み、NuhLayerIdの同じ値を有する複数のデコーディング制御NAL単位がアクセス単位に存在する場合は、これらのデコーディング制御NAL単位中のすべてのno_output_of_prior_pics_flag値が同じであるものとする。
特定のNuhLayerId値を有するデコーディング制御NAL単位においてslice_id_signalling_present_flag=1の場合は、このデコーディング制御NAL単位を含むアクセス単位から、同じ特定のNuhLayerId値を有し、slice_id_signalling_present_flag=1のデコーディング制御NAL単位を含むデコーディング順序の次のアクセス単位まで、その単位は除いて、またはCLVSの終端のうち、デコーディング順序でいずれか早い方まで、当該特定のNuhLayerId値を有するコード化画像に対して、signalled_slice_id_flag、deco_slice_id_length_minus1(存在する場合)、deco_slices_in_pic_minus1(存在する場合)、およびslice_id[i](存在する場合)が適用される。そして、以下のセマンティクスが適用される。
signalled_slice_id_flag=0は、deco_slice_id_length_minus1、deco_slices_in_pic_minus1、およびslice_id[i]が存在しないことを規定する。signalled_slice_id_flag=1は、deco_slice_id_length_minus1、deco_slices_in_pic_minus1、およびslice_id[i]が存在することを規定する。
deco_slice_id_length_minus1+1は、シンタックス要素slice_id[i]を表すのに用いられるビットの数を規定する。deco_slice_id_length_minus1の値は、0~15の範囲であるものとする。コード化画像と関連付けられたdeco_slice_id_length_minus1の値は、同じコード化画像に対してアクティブなSPSまたはPPS中のsignalled_slice_id_length_minus1に等しいものとする。
deco_slices_in_pic_minus1+1は、slice_id[i]シンタックス要素の数を規定する。コード化画像と関連付けられたdeco_slices_in_pic_minus1の値は、同じコード化画像に対してアクティブなSPSまたはPPS中のnum_slices_in_pic_minus1に等しいものとする。
slice_id[i]は、i番目のスライスのスライスIDを規定する。slice_id[i]シンタックス要素の長さは、deco_slice_id_length_minus1+1ビットである。存在しない場合、slice_id[i]の値は、0~num_slices_in_pic_minus1の範囲の各iについて、iに等しいものと推測される。
mixed_vcl_nal_unit_types_flagは、変数mixedVclNalUnitTypesFlagの導出に用いられる。CurrPicのすべてのVCL NAL単位が同じNalUnitType値を有すること(0に等しい場合)、または、関連するコード化画像のVCL NAL単位が異なるNalUnitType値を有し得ることを識別する変数mixedVclNalUnitTypesFlagは、以下のように規定される。
CurrPicを含むアクセス単位において、vcl_nal_unit_info_present_flag=1のデコーディング制御NAL単位が存在する場合、変数mixedVclNalUnitTypesFlagは、デコーディング制御NAL単位のmixed_vcl_nal_unit_types_flagの値に等しく設定される。その他の場合、mixedVclNalUnitTypesFlagは、0に等しく設定される。
mixedVclNalUnitTypesFlagは、デコーディングプロセスにおいて、以下のように処理されるようになっていてもよい。
mixedVclNalUnitTypesFlag=1の場合は、NalUnitType値に関わらず、現在の画像をTRAIL画像として処理することにより、画像順序カウントに関する変数および関数が導出される。これは、画像の最初のスライスに対してのみ呼び出される必要がある。
mixedVclNalUnitTypesFlag=0の場合は、基準画像マーキングのデコーディングプロセスが呼び出され、基準画像が「参照不使用」または「長期参照使用」とマーキングされるようになっていてもよい。これは、画像の最初のスライスに対してのみ呼び出される必要がある。基準画像マーキングプロセスでは、スライスヘッダに包含または参照される基準画像リストに含まれるすべての画像を「参照使用」として維持するとともに、(基準画像リストに含まれない)その他すべての画像を「参照不使用」とマーキングするようにしてもよい。
control_extension_data_flagは、如何なる値であってもよい。デコーダは、すべてのcontrol_extension_data_flagシンタックス要素を無視するようにしてもよい。
以上、アクセス単位デリミタおよび異なるシンタックス要素を含むデコーディング制御NAL単位について、実施形態を提示した。上記例示的な実施形態のいずれかのシンタックス要素の如何なる組み合わせにおいても、実施形態を同様に実現可能であることを理解する必要がある。
一実施形態において、デコーディング制御NAL単位のシンタックスは、以下のうちの1つまたは複数を含む。
タイプシンタックス要素(たとえば、control_typeと称する)であって、このNAL単位に含まれるデコーディング制御の種類をそれぞれ規定する規定値を有する。
指定タイプの制御の値を有するシンタックス要素、たとえば、control_valueと称するであって、このタイプ値によりシンタックス要素のデータ型が規定されていてもよい。
拡張ビットであって、たとえばcontrol_valueシンタックス要素の所定長の拡張に使用可能である。
本実施形態においては、以下のシンタックスが用いられるようになっていてもよい。
すべてのソースビットストリームのエンコーディングは、ソースビットストリームからの独立コード化画像領域の抽出および同じ結合ビットストリームへの結合を可能にするように実行され得る。結果として、エンコーディングにより、以下を除いて、すべてのソースビットストリームのSPSおよびPPSが同一になり得る。
レベル(たとえば、SPS)、
画像の幅および高さ(たとえば、SPS)、
タイル/ブリック分離等、画像のイメージセグメントへの分離(たとえば、PPS)、
長方形スライスが独立コード化画像領域として使用される場合の長方形スライス位置およびサイズ情報等、独立コード化画像領域の位置決めおよびサイズ(たとえば、PPS)、
長方形スライスが独立コード化画像領域として使用される場合のスライスID割り当て等、たとえばIDを用いた独立コード化画像領域の指定位置への割り当て(たとえば、PPS)。
スライスIDの長方形スライスへの割り当て(PPS)は、独立コード化画像領域の位置決め情報として使用することも可能な1つの有効な選択肢と見なされる。ただし、その寄与は一般的に、独立コード化画像領域の空間的な場所の指定ならびに/またはスライスID、サブ画像ID、もしくは任意の類似シンタックス要素の値と空間的な場所との関連付けを可能にする如何なる種類の位置決め情報にも当てはまる。
以下、いくつかの実施形態に係る、SPSまたはPPS中のタイル、ブリック、および長方形スライスへの画像の分離の一部詳細を提供する。
一実施形態において、SPSシンタックスには、画像をタイル、ブリック、および長方形スライスに分離するシンタックス要素を含むが、これはゲーティングフラグによって調節される。この分離は、SPSにおいて規定されている場合、PPSには存在しない。この分離は、SPSにおいて規定されていない場合、PPSに存在する。
本実施形態においては、上記の表1、2、および3または同等のものに示したシンタックスおよびセマンティクスを使用可能である。
以下、エンコーディング、ストリーミングに対するコンテンツの可用化、および独立デコーディング可能な画像領域の結合の一例を提供する。
提示の例は、本明細書で先に提示した例の続きである。
本例において、独立コード化画像領域は、エンコーディングおよびデコーディングにおいて境界が画像境界のように処理される長方形スライスである。本例は、独立コード化画像領域の他の実現に対しても同様に実装可能であることを理解する必要がある。
エンコーダは、境界が画像境界のように処理される長方形スライスとして、各ソースビットストリームにおける(すなわち、コンテンツの各解像度・ビットレートバージョンにおける)独立コード化画像領域がエンコーディングされるように、エンコーディングを実行するようにしてもよい。
すべてのビットレート・解像度バージョンのエンコーディングは、任意のソースビットストリームからの独立コード化画像領域の同じ結合ビットストリームへの結合を可能にするように実行される。すべてのソースビットストリーム(たとえば、さまざまな解像度バージョン)のSPSおよびPPSは、画像の幅および高さ、画像のタイルおよび/もしくはブリックへの分離、長方形スライスの位置およびサイズ、ならびに長方形スライスのスキャン順序または位置へのスライスID値の割り当てに関するシンタックス要素を除いて、同一であってもよい。
ソースビットストリーム(すなわち、すべてのビットレート・解像度バージョン)のエンコーディングは、ビットストリームのslice_address値が重なり合わず、slice_addressシンタックス要素の長さがすべてのソースビットストリームにおいて同じになるように実行される。
一連の独立コード化画像領域は、受信する領域をクライアントが選択できるように、ストリーミングに対して利用可能とされる。たとえば、各独立コード化画像領域は、OMAFに規定されるようなサブ画像トラックとしてカプセル化されていてもよい。
利用可能な一連の独立コード化画像領域から結合ビットストリームを生成するため、クライアント(または、クライアント内のプレーヤ)は、以下のステップを実行する。
プレーヤは、そのデコーディング能力に適した1つまたは複数のパラメータ集合を生成または受信する。たとえば、プレーヤは、「4K」デコーディング能力に適した1つまたは複数のパラメータ集合を生成するが、これは、最大画像サイズを「4K」(8 912 896輝度サンプル等)に制限すること、および/または、たとえば特定の画像レート(たとえば、60Hz)での「4K」デコーディングに対応するように最大サンプルレートを制限することであってもよく、本例では、1秒当たり60×8 912 896輝度サンプルに相当することになる。「4K」デコーディング能力の場合は、図11bに記載のようなタイル分離がパラメータ集合においてエンコーディングされるようになっていてもよく、各タイルがそれ自体の長方形スライスに包含される。本例において、プレーヤは、4Kデコーディング能力を有するものと仮定する。一般的には、目標とするデコーディング能力の使用によって、結合ビットストリームの画像の幅および高さ、タイル/ブリック分離、長方形スライスの位置およびサイズ情報を選択することができる。
プレーヤは、受信する独立デコーディング可能な画像領域シーケンスの部分集合を選択するとともに、部分集合の独立デコーディング可能な画像領域シーケンスの識別子番号を取得する。本例において、識別子番号は、長方形スライスのslice_id(または、同等物としてのslice_address)値であり、識別子番号は、スライスのヘッダシンタックスに含まれる。
プレーヤは、選択した独立コード化画像領域のslice_id値を含むデコーディング制御NAL単位を生成する。
プレーヤは、選択した独立コード化画像領域のVCL NAL単位を受信し、デコーディング制御NAL単位の後に、デコーディング順序で配置する。
部分集合の選択からVCL NAL単位の受信までの上記ステップは、たとえば視認方向の変化への応答として、独立コード化画像領域の新たな選択が必要となった場合にいつでも繰り返すことができる。
結合ビットストリームのほか、プレーヤが実行するステップを図12aに示す。
他の実施形態との併用または他の実施形態から独立した使用が可能な一実施形態によれば、デコーダは、
ビットストリームから、または、ビットストリームに伴う、デコーディング制御NAL単位等の別個のデータ単位からのコード化画像シーケンスの画像上の独立コード化画像領域の順序をデコーディングし、
デコーディング順序の独立コード化画像領域を受信し、
次に受信した独立コード化画像領域が上記順序に従うかを調べ、
次に受信した独立コード化画像領域が上記順序に従わないことに応答して、当該順序の次の独立コード化画像領域と同位置の未コーディングの独立コード化画像領域をデコーディングする。
一実施形態において、未コード化の独立コード化画像領域のデコーディングまたは再構成は、たとえばコーディング規格において予め規定されている。このデコーディングでは、たとえば予測誤差なく参照使用とマーキングされた(POC差が)最も近い基準画像からのゼロ動きベクトルの相互予測等、特定の所定モードを使用するようにしてもよい。
一実施形態においては、所定の一定サンプル値での画像領域全体の再構成によって、未コード化の独立コード化画像領域がデコーディングされる。
未コード化の独立コード化画像領域のデコーディングまたは再構成によれば、未コード化の独立コード化画像領域が(360°ビデオの)表示域に現れない場合あるいは表示の必要がない場合に、再生の中断を回避可能となり得る。
一実施形態において、デコーダは、IRAP画像に由来する同位置の独立コード化画像領域が受信されるまで、後続画像における同位置の未コード化の独立コード化画像領域の挿入および/またはデコーディングを行うようにしてもよい。
以下、ビデオデコーダの出力として同期メタデータが提供されるべきかを示す一例を提供する。
他の実施形態との併用または他の実施形態から独立した使用が可能な一実施形態によれば、エンコーダ等のエンティティは、ビットストリームに含まれる第1のシンタックス構造において、当該第1のシンタックス構造に含まれるメタデータがデコーダによって出力されるべきかを示す。第1のシンタックス構造に含まれるメタデータは、たとえば第1のシンタックス構造全体または第1のシンタックス構造に含まれる第2のシンタックス構造を出力することにより出力されるようになっていてもよい。第1のシンタックス構造は、以下のいずれかであってもよいが、これらに限定されない。
SEIメッセージ
SEI NAL単位
デコーディング制御NAL単位
ビデオユーザビリティ情報またはそれに含まれるシンタックス構造
第1のシンタックス構造における指標は、出力および/またはタイプ値の特定範囲を制御するフラグであってもよいが、これに限定されない。
出力を制御するフラグは、たとえば0に等しい場合に、第1のシンタックス構造に含まれるメタデータが出力されないことがあり、1に等しい場合に、第1のシンタックス構造に含まれるメタデータがデコーダによって出力されるべきであることを示すようにしてもよい。
タイプ値の特定範囲は、たとえばコーディング規格に規定のSEIメッセージペイロードタイプ値の特定範囲がデコーダの出力となるように実装されていてもよい。
出力を制御するフラグを含むSEIメッセージの例示的な一実施形態においては、以下のシンタックスが用いられるようになっていてもよい。
一実施形態によれば、sei_output_flag=1は、SEIメッセージが関連付けられたコード化画像をデコーディングした結果としてのデコーディング・クロッピング画像とともにSEIメッセージが出力されることを規定する。sei_output_flag=0は、SEIメッセージが関連付けられたコード化画像をデコーディングした結果としてのデコーディング・クロッピング画像とともにSEIメッセージが出力されてもよいし、出力されなくてもよいことを規定する。
一実施形態において、デコーダ等のエンティティは、ビットストリームに含まれる第1のシンタックス構造から、当該第1のシンタックス構造に含まれるメタデータがデコーダによって出力されるべきかをデコーディングする。
一実施形態において、画像が出力される場合、デコーダ等のエンティティは、sei_output_flag=1かつ画像と関連付けられたSEIメッセージを(画像を伴って)出力する。
第1のシンタックス構造を含むコード化画像をデコーディングした結果としてのデコード画像に伴う、第1のシンタックス構造に含まれるメタデータが受け渡されるか、あるいは、第1のシンタックス構造の範囲のすべてのデコード画像に伴う、第1のシンタックス構造に含まれるメタデータが受け渡されるかが、たとえばコーディング規格において予め規定されていてもよいし、シンタックス要素における指定またはシンタックス要素からのデコーディングが行われるようになっていてもよい。
一実施形態において、エンティティは、時間的範囲を第1のシンタックス構造においてエンコーディングする。一実施形態において、エンティティは、時間的範囲を第1のシンタックス構造からデコーディングする。時間的範囲としては、単一のVCL NAL単位、単一のコード化画像、アクセス単位(潜在的に複数のコード化画像を含む)(同じ種類のコンテンツを含む次のデリミタNAL単位またはコード化ビデオシーケンスの終端(いずれか早い方))、コード化ビデオシーケンス、ビットストリームが挙げられるが、これらに限定されない。
一実施形態において、エンティティは、レイヤ単位の範囲を第1のシンタックス構造においてエンコーディングする。一実施形態において、エンティティは、レイヤ単位の範囲を第1のシンタックス構造からデコーディングする。レイヤ単位の範囲は、第1のシンタックス構造に含まれるメタデータの範囲にあるレイヤを示す。
一実施形態において、結合ビットストリームを生成するプレーヤ等のエンティティは、独立コード化画像領域シーケンスの部分集合のレンダリングを示す第1のシンタックス構造を結合ビットストリームにおいて生成する。第1のシンタックス構造は、独立コード化画像領域シーケンスの空間的位置を追加で示していてもよい。たとえば、エンティティは、投影画像上の独立コード化画像領域の場所を示すHEVCの領域単位のパッキングSEIメッセージまたは類似のシンタックス構造を生成するようにしてもよい。エンティティは、sei_output_flag=1または類似の指標によって、第1のシンタックス構造の範囲のデコード画像とともに第1のシンタックス構造中のメタデータが出力されるべきものと示すようにしてもよい。
一実施形態によれば、HRD管理のためにNAL単位がCPBに含まれるかが示される。たとえば、デコーディング制御NAL単位および/またはSEI NAL単位シンタックスには、NAL単位がCPBに含まれるかを規定したシンタックス要素を含んでいてもよい。一実施形態において、プレーヤまたは同等のものは、デコーディング制御NAL単位および/またはSEI NAL単位をビットストリームにおいて生成し、NAL単位がCPBに含まれないことを示すようにシンタックス要素を設定する。
本発明は、任意特定の種類の構成ビットストリームに限定されないことが了解されるものとする。たとえば、構成ビットストリームは、以下のうちのいずれかを表し得る。
ビデオの時空間分離の区分(すなわち、サブ画像シーケンス)
立体視またはマルチビュービデオのビュー
360°投影の投影構造の表面(多面360°投影(たとえば、キューブマップ)の各面等)
領域単位のパッキング情報により示されるようなパッキング領域
ビデオの多重解像度パッキングの空間的に連続する単一解像度部分(たとえば、多重解像度ERPまたはCMP)
表面に投影された点群の部分またはパッチ(テクスチャまたは深度)、サブ画像シーケンスが各パッチを後続の時間インスタンスに含んでいてもよい、複数のパッチが単一のサブ画像に集約されていてもよい
サブ画像としてコード化された1つまたは複数の関心領域
サブ画像シーケンスとしての異なるソース(たとえば、異なるカメラ)からのコード化ビデオ、たとえば、多地点ビデオ会議に用いられるようになっていてもよい
他の設計上の決定たとえば、コンテナシンタックス構造、VCL NAL単位ではなくイメージセグメントに対するマッピング、およびサブ画像シーケンスではなくサブ画像に対するマッピングによっても同様に、他の実施形態を実現可能であることが了解されるものとする。
以下、たとえば表示域に応じた360°ビデオストリーミング、スケーラブルなマルチビュー立体視ビデオのコーディング、重なり合う多面コンテンツのコーディング、点群コンテンツのコーディングの観点から、サブ画像ベースの(デ)コーディングを用いたいくつかの例示的な実施形態について論じる。
表示域に応じた360°ビデオストリーミング
一例によれば、コード化サブ画像シーケンスがコンテナファイルのトラックにカプセル化されてもよく、トラックがSegmentおよび/またはSubsegmentに分離されてもよく、ストリーミングマニフェスト(たとえば、MPEG-DASH MPD)におけるRepresentationの生成によって、リクエストにより(Sub)segmentが利用可能にされるとともに、コード化サブ画像シーケンスの特性が発表されるようになっていてもよい。前文のプロセスは、コード化サブ画像シーケンスそれぞれに実行されるようになっていてもよい。
一例によれば、クライアント装置は、複数のRepresentationのマニフェスト情報からおよびマニフェストから、複数のRepresentationそれぞれの球状領域をパーシングするように構成されていてもよい。また、クライアント装置は、球状領域の品質を示すマニフェスト値ならびに/または球状領域もしくはそれぞれの2D投影の解像度情報からパーシングを行うようにしてもよい。クライアント装置は、その使用に適したRepresentationを決定する。たとえば、クライアント装置は、ヘッドマウントディスプレイ使用時の頭部の方向を検出するとともに、他の領域に関して選択されたRepresentationよりも高い品質で表示域を網羅するRepresentationを選択する手段を具備していてもよい。選択の結果として、クライアント装置は、選択したRepresentationの(Sub)segmentを要求するようにしてもよい。
一例によれば、コード化画像またはファイルフォーマットサンプルのデコーディング順序が分解される。選択したRepresentationの受信(Sub)segmentから、時間合わせされたコード化画像またはファイルフォーマットサンプルがパーシングされる。時間合わせされたコード化画像またはファイルフォーマットサンプルのデコーディング順序の決定には、マージベーストラックが用いられるようになっていてもよい。デリミタが結合ビットストリームに書き込まれるが、これらのデリミタは、当該デリミタと関連付けられたデータ単位が由来するRepresentationを示す。そして、結合ビットストリームがデコーディングのために受け渡される。
一例によれば、サブ画像シーケンスを用いて、同じコンテンツが複数の解像度および/またはビットレートでコーディングされる。たとえば、360°コンテンツの異なる部分が異なる表面に投影されてもよく、投影面が異なる解像度へとダウンサンプリングされるようになっていてもよい。たとえば、現在の表示域にない面が低い解像度へとダウンサンプリングされるようになっていてもよい。各面は、サブ画像としてコーディングされるようになっていてもよい。
一例によれば、サブ画像シーケンスを用いて、同じコンテンツが異なるランダムアクセス区間でコーディングされる。
上述の実施形態を補完するとともに、これらの実施形態内で使用することも可能な一例によれば、視認方向の変化によって、以前と一部異なるRepresentationの選択が要求される。サブ画像シーケンスが別個のレイヤとして表される場合は、サブ画像シーケンスを搬送する適当なレイヤに対して、デリミタが先行するEOS NAL単位が具体的に書き込まれることで、Representationの受信および/またはデコーディングの中断が選択されたことを示すようにしてもよい。要求される新たなRepresentationは、Representationにおいて搬送されたサブ画像シーケンス内の次のランダムアクセス位置から要求されるようになっていてもよいし、それぞれのデコーディングが開始されるようになっていてもよい。複数のランダムアクセス区間でサブ画像シーケンスが利用可能とされた場合は、ランダムアクセス位置が少ない各Representationから、ランダムアクセス位置を含む類似品質の次の(Sub)segmentが入手可能となるまで、視認方向の変化に対する応答として、ランダムアクセス位置が多いRepresentationが要求されるようになっていてもよい。視認方向の変化への応答として変化する必要のないRepresentationは、ランダムアクセス位置を有する必要もない。上述の通り、サブ画像は、さまざまなサブ画像タイプまたはNAL単位タイプを有することが許可されていてもよい。たとえば、特定のアクセス単位または時間インスタンスのサブ画像がランダムアクセスタイプである一方、同じ特定のアクセス単位または時間インスタンスの別のサブ画像は、非ランダムアクセスタイプであってもよい。このように、ランダムアクセス区間が異なるビットストリームのサブ画像を組み合わせることができる。
表示域に応じた360°ストリーミングに本発明を使用する利益として、以下が挙げられる。
表示域に応じたストリーミングにおいては、MCTSの結合に抽出器トラックもタイルベーストラックも一切不要である。サブ画像シーケンスは、どの組のサブ画像シーケンスがデコーディングのために受信また受け渡しされるかに関わらず、修正なしにデコーディング可能なためである。これにより、コンテンツ生成負荷が軽減され、クライアントの動作が簡素化される。
後期バインディング(late binding)に基づく表示域に応じたストリーミングにおいては、VCL NAL単位を変更する必要がない。サブ画像シーケンスは、どの組のサブ画像シーケンスがデコーディングのために受信また受け渡しされるかに関わらず、修正なしにデコーディング可能なためである。これにより、クライアント実装の複雑性が低減される。
画像サイズは、ピクセルに関して一定でなくてもよい。この利点は、共有コード化サブ画像の使用に際して明らかとなり、共有コード化サブ画像を含む時間インスタンスにおいては、他の時間インスタンスよりも多くのピクセルがデコーディングされ得る。
表示域のサイズおよび頭部の動きの範囲に応じて、サブ画像の数を柔軟に選定可能である。従来技術の一部の方法では、サブ画像トラックのコンテンツを単一のビットストリームとして結合する抽出器トラックの生成に際して、サブ画像トラックの数が予め規定されていた。
デコーディング能力および/または受信データの可用性に応じて、サブ画像の数を柔軟に選定可能である。たとえばリソースを共有するマルチプロセスまたはマルチタスクシステムにおいて、デコードサブ画像の数は、利用可能なデコーディング能力に応じて動的に選定可能である。特定の時間インスタンスのコード化データは、それに対して要求された一部のサブ画像が未受信であっても、デコーディングのために受け渡し可能である。このため、サブ画像シーケンスの部分集合のみに関する配信遅延によって、他のサブ画像シーケンスのデコーディングおよび再生が行き詰まることはない。
任意の共有コード化サブ画像および/またはランダムアクセスサブ画像において、ビットレートおよび受信サブ画像の切り替えが発生し得る。共有コード化サブ画像および/またはランダムアクセスサブ画像の異なる区間において、複数のバージョンのコンテンツをエンコーディング可能である。デコーディングビットストリームにおいては、共有コード化サブ画像および/またはランダムアクセスサブ画像がすべてのサブ画像シーケンスにおいて位置合わせされる必要がないため、切り替え時に、および/またはランダムアクセス特性が上記サブ画像シーケンスにのみある場合、必要に応じて良好なレート歪み効率の実現が可能である。
上述の通り、使用事例に応じて、用語「サブ画像(sub-picture)」は、さまざまな使用事例および/または投影の種類を表し得る。次に、これらの使用事例のうちの一部の観点から、サブ画像のコーディングに関連する例について論じる。
重なり合う多面コンテンツのコーディング
一例によれば、360°コンテンツの異なる部分が異なる表面に投影されてもよく、投影面が重なり合うコンテンツを有していてもよい。別の実施形態においては、コンテンツが重なり合う複数の領域(たとえば、タイル)へとコンテンツが分割されるようになっていてもよい。各面または領域は、サブ画像としてコーディングされるようになっていてもよい。各サブ画像は、他のサブ画像の一部を基準フレームとして使用するようにしてもよく、これは、2つの例に関する図12aおよび図12bにおいて、重なり合わないコンテンツを白色ボックスで示し、重なり合うエリアを灰色で示し、サブ画像中の対応する部分を破線の長方形で示した通りである。サブ画像と他のサブ画像とが空間的に関連する様式を示すのに、空間的関係の情報を使用することも可能である。
点群コンテンツのコーディング
一例によれば、点群コンテンツの各部が表面に投影されて、パッチが生成される。各パッチは、サブ画像としてコーディングされるようになっていてもよい。異なるパッチが冗長データを有していてもよい。各サブ画像が他のサブ画像を使用して、この冗長を補償するようにしてもよい。図12bの例においては、点群の異なる部分が表面1および表面2に投影されて、それぞれパッチ1およびパッチ2が生成されている。各パッチは、サブ画像としてコーディングされる。本例においては、c、d、eで示される点群コンテンツの部分が2つの表面に対して冗長に投影されているため、対応するコンテンツがパッチ1およびパッチ2において冗長となっている。図12bにおいては、サブ画像1から予測可能なサブ画像2の部分を破線ボックスで示している。再構成サブ画像の集まりが出力画像を構成していてもよい。あるいは、再構成サブ画像が2D出力画像として配置されていてもよい。
エンコーディングの一例によれば、第2のPCCレイヤのパッチが第2のサブ画像としてコーディングされ、第1のPCCレイヤの各パッチの再構成サブ画像と予測される。同様に、デコーディングの一実施形態によれば、第2のPCCレイヤのパッチを表す第2のサブ画像がデコーディングされるが、このデコーディングには、第1のPCCレイヤの各パッチを表す再構成サブ画像からの予測を含む。
一例によれば、異なる画像レートおよび/または異なる数のサブレイヤにおいて、サブ画像シーケンスのエンコーディング、要求、送信、受信、および/またはデコーディングが意図的に行われる。本実施形態は、たとえば特定の時間におけるレンダリングにコンテンツの一部のみを要する場合に適用可能である。たとえば、360°ビデオにおいては、特定の時間におけるレンダリングに表示域のみが必要とされ、点群コーディングおよびボリュメトリックビデオにおいては、レンダリングに必要な部分が視認位置および視認方向によって決まり得る。レンダリングに必要なサブ画像シーケンスの画像レートおよび/またはサブレイヤ数は、(エンコーディング、要求、送信、受信、および/またはデコーディングにおいて)レンダリングに不要なサブ画像シーケンスよりも大きく選択すること、ならびに/または、(たとえば、視認方向の変化に対応するため)直ちにレンダリングに必要となる可能性が低くなるように選択することが行われるようになっていてもよい。上記構成により、必要となるデコーディング能力および電力消費が削減され得る。あるいは、たとえば実時間再生よりも高速になるように、配信および/またはデコーディングの高速化が実現され得る。より多くのサブレイヤにおけるサブ画像シーケンスのデコーディングが望まれる場合は(たとえば、視認方向の変化に対応するため)、HEVCのTSAおよび/またはSTSA画像等のサブレイヤアクセス画像の使用によって、サブレイヤのエンコーディング、要求、送信、受信、および/またはデコーディングを再開するようにしてもよい。
一例によれば、他のサブ画像シーケンスから予測されないサブ画像シーケンスの最も低いサブレイヤにおいて、TSAサブ画像または同等のものをエンコーディング可能である。このTSAサブ画像は、このTSA画像を起点としてサブ画像シーケンスのすべてのサブレイヤが予測可能であることを示す。一実施形態によれば、他のサブ画像シーケンスから予測されないサブ画像シーケンスの最も低いサブレイヤから、TSAサブ画像または同等のものがデコーディングされる。一実施形態においては、このTSAサブ画像を起点として、最も低いサブレイヤ上の任意のサブレイヤの要求、送信、受信、および/またはデコーディングを開始可能であり、その結果として、このような要求、送信、受信、および/またはデコーディングが発生するものと判定される。
本実施形態は、いくつかの利点を提供し得る。結合ビットストリームの生成に際しては、独立コード化画像領域のスライスヘッダを書き換える必要がない。結合ビットストリームに対しては、一組のパラメータ集合だけが必要であり、ソースビットストリームのパラメータ集合を1対1で照合する。コンテンツ製作者は、メディアプレゼンテーション記述において、潜在的な結合ビットストリームのパラメータ集合を提供可能であり、このため、クライアントは、パラメータ集合を生成する必要もなければ、書き換える必要もない。独立コード化画像領域の位置決め情報は、別個のデータ単位(デコーディング制御NAL単位等)ではなく、パラメータ集合シンタックスに含めることも可能である。ただし、このような手法は、以下に分析するように、最適ではない。
独立コード化画像領域の位置決め情報がSPSに存在する場合、一般的には、独立コード化画像領域の部分集合のみがIRAP画像に由来するように、異なるVCL NAL単位タイプの同じコード化画像での結合によって、表示域に応じた360°ストリーミングにおける視認方向の変化を取り扱い可能となり得ることはない。独立コード化画像領域の位置決め情報がSPSに存在する場合は、結合ビットストリーム中のIRAP画像においてのみ、独立コード化画像領域の新たな選択をアクティブ化可能である。
独立コード化画像領域の位置決め情報がPPSに存在する場合、クライアントは、独立コード化画像領域の新たな選択がなされるたびに、PPSを書き換える必要がある。この書き換えには、位置決め情報と関連しないシンタックス要素、可変長コードワード、ならびにシンタックス要素値に応じて条件付きで存在するコードワードもしくはアクティブなSPSから導出された変数のパーシング等、ソースビットストリームからのPPS全体のパーシングが必要となる。
一般事項
上述の実施形態は、ビデオベースの点群コーディング、パッチベースのボリュメトリックビデオコーディング、複数の投影面を伴う360°ビデオコーディング等、多くのビデオベースの目的に対してコアビデオ(デ)コーディングプロセスおよびビットストリームフォーマットを汎用的に使用するメカニズムおよびアーキテクチャを提供する。
上述の実施形態は、単一レイヤ2Dビデオコーデックを追加の機能と相互作用させるのに適する。
図14aは、一実施形態に係る、方法を示したフローチャートである。この方法は、コード化ビデオコンテンツを表す独立デコーディング可能な画像領域シーケンスの部分集合を選択することを含む(図14aのブロック151)。そして、部分集合の独立デコーディング可能な画像領域シーケンスの識別子番号が取得される(152)。コード化画像シーケンスの画像上の独立デコーディング可能な画像領域の順序が決定される(153)。この順序が別個のデータ単位として、ビットストリームにおいてエンコーディングされる(154)。データ単位には、部分集合の独立デコーディング可能な画像領域シーケンスの識別子番号のリストを含む。コード化画像シーケンスは、別個のデータ単位の後に、ビットストリームに含まれる(155)。
図14bは、別の実施形態に係る、方法を示したフローチャートである。この方法は、コード化ビデオコンテンツを表す独立デコーディング可能な画像領域シーケンスを取得することを含む(図14bのブロック156)。そして、独立デコーディング可能な画像領域シーケンスの識別子番号が取得される(157)。その後、独立デコーディング可能な画像領域を個々にアクセス可能とすることにより、メディアプレゼンテーション記述が生成され(158)、メディアプレゼンテーション記述において、識別子番号が独立デコーディング可能な画像領域シーケンスに割り当てられる(159)。
一実施形態に係る装置は、少なくとも1つのプロセッサおよびコンピュータプログラムコードを含む少なくとも1つのメモリを備え、メモリおよびコンピュータプログラムコードは、少なくとも1つのプロセッサによって、
コード化ビデオコンテンツを表す独立デコーディング可能な画像領域シーケンスの部分集合を選択することと、
部分集合の独立デコーディング可能な画像領域シーケンスの識別子番号を取得することと、
コード化画像シーケンスの画像上の独立デコーディング可能な画像領域の順序を決定することと、
部分集合の独立デコーディング可能な画像領域シーケンスの識別子番号のリストを含む別個のデータ単位として、上記順序をビットストリームにおいてエンコーディングすることと、
コード化画像シーケンスを別個のデータ単位の後に、ビットストリームに含めることと、
を少なくとも当該装置に実行させるように構成されている。
装置1200、たとえば、エンコーディングおよび/またはデコーディングのための装置の一例を図15に示す。システムの機能ブロックに従って、装置の一般化構造を説明する。単一の物理デバイスによって、複数の機能を実行可能である。たとえば、すべての計算手順を必要に応じて、単一のプロセッサで実行可能である。図15の一例に係る装置のデータ処理システムは、主処理ユニット100、メモリ102、記憶装置104、入力装置106、出力装置108、およびグラフィックスサブシステム110を備え、これらがすべて、データバス112を介して互いに接続されている。
主処理ユニット110は、データ処理システム内のデータを処理するように構成された従来の処理ユニットであってもよい。主処理ユニット100は、1つもしくは複数のプロセッサまたはプロセッサ回路を備えていてもよいし、1つもしくは複数のプロセッサまたはプロセッサ回路として実装されていてもよい。メモリ102、記憶装置104、入力装置106、および出力装置108は、当業者が認識する従来のコンポーネントを含んでいてもよい。メモリ102および記憶装置104は、データ処理システム100中のデータを格納する。コンピュータプログラムコードがメモリ102に存在して、たとえば実施形態に係る方法を実現する。入力装置106がデータをシステムに入力する一方、出力装置08は、データ処理システムからデータを受信し、たとえばディスプレイにデータを転送する。データバス112は、従来のデータバスであり、単一の線として示しているが、プロセッサバス、PCIバス、グラフィカルバス、ISAバスの如何なる組み合わせであってもよい。したがって、当業者には、コンピュータ機器、パソコン、サーバコンピュータ、携帯電話、スマートフォン、またはインターネットアクセス機器、たとえば、インターネットタブレットコンピュータ等、上記装置が如何なるデータ処理機器であってもよいことが容易に認識される。
いくつかの実施形態によれば、サブ画像シーケンスのエンコーディングは、ビットストリームのエンコーディング等の従来のように、すなわち、他のサブ画像シーケンスとの結合を考慮することなく実行可能である。
デリミタデータ単位を用いた実施形態では、サブ画像シーケンス識別子(または、レイヤ識別子)のエンコーディングが不要である。これは、少なくとも以下のような利益をもたらし得る。第一に、エンコーディングに異なるエンコーダが使用される場合であっても、同じサブシーケンス識別子の使用によるクラッシュの危険がなく、第二に、サブ画像シーケンス識別子を伝送するビットレートの節約になる。
レイヤ識別子を書き換える実施形態において、サブ画像シーケンスの数は、レイヤ識別子の値範囲制限が許可するレイヤ数よりも多くなり得る。たとえば、HEVCの6ビットnuh_layer_idを伴う表示域に応じた360°ビデオストリーミングには、96個のサブ画像シーケンスを使用することも可能である。
さらに、コード化サブ画像シーケンスを単一のビットストリームとして結合する場合には、VCL NAL単位ならびに大抵もしくは全部の非VCL NAL単位のペイロードの書き換えが不要である。
サブ画像シーケンスまたは独立レイヤまたは同等のものをMCTSまたは同等のものと併用可能であることに留意するものとする。デコーダの実施態様ならびに/またはコーディングプロファイルもしくはレベルでは、サブ画像シーケンスまたは独立レイヤまたは同等のものの数が制限されていてもよい。用途または使用事例により、大量の独立デコーディング可能な時空間単位が必要な場合は、サブ画像シーケンスまたは独立レイヤまたは同等のものに2つ以上のMCTSを含むのが妥当と考えられる。
メモリに存在して、関連する装置に上記方法を実行させるコンピュータプログラムコードによって、種々実施形態を実装可能である。たとえば、機器は、データの取り扱い、受信、および送信を行う回路および電子機器と、メモリ中のコンピュータプログラムコードと、コンピュータプログラムコードを実行した場合に、一実施形態の特徴を当該機器に実行させるプロセッサと、を含んでいてもよい。さらに、サーバ等のネットワーク機器は、データの取り扱い、受信、および送信を行う回路および電子機器と、メモリ中のコンピュータプログラムコードと、コンピュータプログラムコードを実行した場合に、一実施形態の特徴を当該ネットワーク機器に実行させるプロセッサと、を含んでいてもよい。コンピュータプログラムコードは、1つまたは複数の動作特性を含む。前記動作特性は、前記プロセッサの種類に基づいて、前記コンピュータによる設定により規定されており、システムは、バスによって前記プロセッサに接続可能であり、システムのプログラム可能な動作特性には、第1のビットストリームおよび第2のビットストリームへと論理的に分離されたデータ単位を受信することと、第1のビットストリームおよび第2のビットストリームを結合ビットストリームとして結合することと、を含み、この結合には、結合ビットストリームにおいてデリミタと関連付けられた1つまたは複数のデータ単位が、第1および第2のビットストリームのどちらに割り当てられるのかを示すデリミタを結合ビットストリームに書き込むことを含む。
本明細書に記載のさまざまな機能は、必要に応じて、異なる順序での実行および/または他の機能との同時実行が行われるようになっていてもよい。さらに、上述の機能および実施形態のうちの1つまたは複数が必要に応じて任意選択であってもよいし、組み合わされていてもよい。
上記では、エンコーダを参照して例示的な実施形態を説明したが、結果としてのビットストリームおよびデコーダが対応する要素をそれぞれに有していてもよいことを理解する必要がある。
同様に、デコーダを参照して例示的な実施形態を説明したが、デコーダによりデコーディングされるビットストリームを生成する構造および/またはコンピュータプログラムをエンコーダが有していてもよいことを理解する必要がある。
上記では、シンタックスおよびセマンティクスを参照して例示的な実施形態を説明したが、これらシンタックスおよびセマンティクスに従ってビットストリーム部を出力するエンコーダを実施形態が同様に網羅することを理解する必要がある。同様に、上記実施形態は、シンタックスおよびセマンティクスに従ってビットストリーム部をデコーディングするデコーダを網羅する。
上述の本発明の実施形態は、別個のエンコーダ・デコーダ装置の観点でコーデックを説明することにより、それに伴うプロセスの理解を助けるものである。ただし、当然のことながら、上記装置、構造、および動作は、単一のエンコーダ・デコーダ装置/構造/動作として実装されていてもよい。さらに、コーダおよびデコーダは、一部または全部の共通要素を共有することも可能である。
本発明のいくつかの実施形態は、装置内のコーデック動作を記載するが、当然のことながら、特許請求の範囲に規定の本発明は、如何なるシステムまたは環境内の如何なるビデオコーデックの一部として実現されていてもよい。したがって、たとえば、本発明の実施形態は、固定または有線通信経路上でビデオコーディングを実装し得るビデオコーデックにおいて実現されていてもよい。
実施形態の種々態様を独立請求項に記載するが、他の態様として、特許請求の範囲に明示的に記載する組み合わせのみならず、上記実施形態および/または従属請求項による特徴と独立請求項による特徴との他の組み合わせが挙げられる。