[0023]高効率ビデオコーディング(HEVC)ビットストリームなどのビットストリームは、1つまたは複数のコード化ビデオシーケンス(CVS:coded video sequence)を形成するコード化ピクチャと関連付けられたデータとの表現を形成するビットのシーケンスを備え得る。コード化ピクチャは、ピクチャのすべてのコーディングツリーユニットを含んでいるピクチャのコード化表現を備え得る。コーディングツリーユニット(CTU:coding tree unit)は、ルーマサンプルのコーディングツリーブロック(CTB:coding tree block)と、クロマサンプルの2つの対応するCTBと、それらのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。CVSはアクセスユニットのシーケンスを備え得る。アクセスユニットの各々は、同じ時間インスタンスに関連付けられたコード化ピクチャのセットを備え得る。
[0024]メディアアウェアネットワーク要素(MANE:media aware network element)または他のタイプのデバイスは、複数のサブレイヤで符号化されたHEVCビットストリームにビットストリームシニング(bitstream thinning)を適用し得る。レイヤ内の他のピクチャと無関係に復号され得るレイヤ内のピクチャのサブセットを、本明細書では「サブレイヤ」または「時間サブレイヤ」と呼ぶことがある。ネットワークアブストラクションレイヤ(NAL:Network Abstraction Layer)ユニットの時間識別子は、そのNALユニットがそれに関連付けられたサブレイヤを識別する。したがって、ビットストリームの各サブレイヤは異なる時間識別子に関連付けられ得る。第1のNALユニットの時間識別子が第2のNALユニットの時間識別子よりも小さい場合、第1のNALユニットによってカプセル化されたデータは、第2のNALユニットによってカプセル化されたデータと無関係に復号され得る。
[0025]ビットストリーム中の任意のポイントにおいて、下位サブレイヤ中のピクチャのための復号プロセスは上位サブレイヤのネットワークアブストラクションレイヤ(NAL)ユニットに依存しないので、下位サブレイヤ中のピクチャがまだ復号可能であるということに基づいて、MANEは上位サブレイヤのNALユニットを削除し始めることができる。ある値よりも高い時間識別子をもつすべてのNALユニットを削除するアクションは時間ダウンスイッチングと呼ばれることがある。時間ダウンスイッチングは常に可能であり得る。
[0026]そのポイントまで転送されていないあるサブレイヤのNALユニットを転送し始めるアクションは、時間アップスイッチング(temporal up-switching)と呼ばれることがある。いくつかの例では、それにスイッチされるレイヤ中のピクチャのいずれも、スイッチが実行されたビットストリーム中のポイントより前の同じサブレイヤ中のどのピクチャにも依存しない場合のみ、時間アップスイッチングが可能である。時間アップスイッチングが可能であるビットストリーム中のポイントはサブレイヤスイッチングポイントと呼ばれることがある。
[0027]HEVCでは、サブレイヤスイッチングポイントに関連付けられた2つのピクチャタイプ、すなわち、時間サブレイヤアクセス(TSA:temporal sub-layer access)ピクチャタイプおよびステップワイズ時間サブレイヤアクセス(STSA)ピクチャタイプがある。TSAピクチャタイプおよびSTSAピクチャタイプは、時間サブレイヤスイッチングポイントを示すために使用され得る。TSAピクチャは、すぐ下位のサブレイヤから、TSAピクチャを含んでいるサブレイヤまたはいずれかの上位サブレイヤへの、TSAピクチャにおけるアップスイッチングを可能にする。STSAピクチャは、すぐ下位のサブレイヤから、STSAピクチャを含んでいるサブレイヤへの、STSAピクチャにおけるアップスイッチングを可能にする。したがって、TSAピクチャとは対照的に、STSAは、必ずしも上位サブレイヤへのアップスイッチングを可能にするとは限らず、STSAピクチャを含んでいるサブレイヤのみへのアップスイッチングを可能にする。
[0028]HEVCコンテンツの記憶のためのファイルフォーマット(すなわち、HEVCファイルフォーマット)に従って、ファイルは複数の「ボックス」を備え得る。したがって、HEVCファイルフォーマットに準拠するファイルは、ボックスと呼ばれる一連のオブジェクトを備え得る。「ボックス」は、一意のタイプ識別子と長さとによって定義されるオブジェクト指向ビルディングブロックであり得る。いくつかの事例では、HEVCファイルフォーマットに準拠するファイル中のすべてのデータがボックス内に含まれていることがあり、ボックス中にないファイル中にはデータがないことがある。
[0029]さらに、HEVCファイルフォーマットに準拠するファイルは複数のトラックを含み得る。各トラックは、関係するサンプルの時限シーケンスであり得る。HEVCファイルフォーマットのコンテキストでは、「サンプル」は、単一のタイムスタンプに関連付けられたデータを備え得る。サンプルの例としては、ビデオの個々のフレーム、復号順序での一連のビデオフレーム、または復号順序でのオーディオの圧縮セクションがある。
[0030]さらに、HEVCファイルフォーマットでは、サンプルグルーピングは、1つのサンプルグループのメンバーであるべきトラック中のサンプルの各々の割当てである。サンプルグループ中のサンプルは連続する必要はない。サンプルグループは、SampleToGroupボックスおよびSampleGroupDescriptionボックスという2つのデータ構造によって表され得る。SampleToGroupボックスは、サンプルグループへのサンプルの割当てを表す。サンプルグループエントリごとにSampleGroupDescriptionボックスの1つのインスタンスがあり得る。SampleGroupDescriptionボックスは、対応するサンプルグループの特性を記述する。
[0031]HEVCコンテンツの記憶のためのファイルフォーマットの既存の設計に関するいくつかの問題または短所がある。たとえば、(STSAサンプルとも呼ばれる)STSAピクチャを含んでいるサンプルをシグナリングするためのコンパクトな方法がない。別の例では、いずれかのサンプルにおいていずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが実行され得るかどうかをシグナリングするための効率的な方法がない。
[0032]本開示の技法は、前述の問題または短所のうちの1つまたは複数を解決し得る。本開示の例示的な技法によれば、デバイス(たとえば、ビデオエンコーダまたは別のデバイス)が、コード化ピクチャを含んでいる複数のサンプルを備えるファイルを生成し得る。そのファイルは、その複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するボックス(たとえば、SampleToGroupBox)をも含み得る。ボックスは、サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示す。したがって、デバイス(たとえば、ビデオデコーダまたは別のデバイス)は、サンプルグループを識別するボックス中のデータに基づいて、ボックスを含んでいるファイル中のサンプルの中からSTSAサンプルを識別し得る。
[0033]本開示の別の例示的な技法によれば、ビデオエンコーダまたは別のデバイスが、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成し得る。そのファイルは、記録が適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含む記録を含むボックスをも含み得る。したがって、ビデオデコーダまたは他のデバイスは、ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのボックス中の記録中の要素に基づいて、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断し得る。
[0034]たとえば、ビデオエンコーダはHEVCデコーダ構成記録を生成し得る。HEVCデコーダ構成記録はtemporalIdNested要素を含み得る。temporalIDNested要素は、HEVCデコーダ構成記録が適用されるストリームのいずれかのサンプルにおいていずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが実行され得るかどうかを示し得る。
[0035]図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、総称的にビデオ符号化またはビデオ復号を指すことがある。
[0036]図1に示されているように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は、符号化ビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0037]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0038]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、ワイヤレスおよび/またはワイヤード通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)など、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
[0039]別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の好適なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。
[0040]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間記憶デバイスに記憶された、符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブがある。
[0041]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。データ接続の例示的なタイプとしては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適な、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0042]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0043]図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および/またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0044]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0045]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0046]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ビデオデコーダ30は、符号化ビデオデータを復号し得る。ディスプレイデバイス32は、復号されたビデオデータを表示し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスを備え得る。
[0047]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0048]本開示では、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、圧縮ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに行われ得る。代替的に、そのような通信は、符号化時に符号化ビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0049]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、それのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張と、マルチビュービデオコーディング(MVC:Multiview Video Coding)拡張と、MVCベース3次元ビデオ(3DV:three-dimensional video)拡張とを含む、国際標準化機構(ISO)/IEC MPEG−4 VisualおよびITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られる)などのビデオ圧縮規格に従って動作する。いくつかの事例では、H.264/AVCのMVCベース3DV拡張に準拠するどんなビットストリームも、H.264/AVCのMVC拡張に準拠するサブビットストリームを常に含んでいる。さらに、ビデオエンコーダ20およびビデオデコーダ30は、現在開発中であるH.264/AVCへの3DVコーディング拡張(すなわち、AVCベース3DV)に従って動作し得る。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、国際電気通信連合電気通信標準化部門(ITU−T:International Telecommunication Union Telecommunication Standardization Sector)H.261、国際標準化機構(ISO)/国際電気標準会議(IEC:International Electrotechnical Commission)ムービングピクチャエキスパートグループ(MPEG:Moving Picture Experts Group)−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、およびITU−T H.264、ISO/IEC Visualに従って動作し得る。
[0050]他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパーツグループ(MPEG)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発された高効率ビデオコーディング(HEVC)に従って動作し得る。「HEVCワーキングドラフト8」と呼ばれるHEVC規格のドラフトは、2013年9月17日現在、http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zipから入手可能である、ブロスら、「High Efficiency Video Coding (HEVC) text specification draft 8」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第10回会合、Stockholm、Sweden、2012年7月に記載されている。さらに、ビデオエンコーダ20およびビデオデコーダ30は、スケーラブルビデオコーディング、マルチビューコーディング、および現在開発中であるHEVCのための3DV拡張に従って動作し得る。HEVCのスケーラブルビデオコーディング拡張はSHEVCと呼ばれることがある。HEVCの3DV拡張はHEVCベース3DVまたは3D−HEVCと呼ばれることがある。
[0051]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0052]ピクチャの符号化表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーン(color plane)を有する1つまたは複数のモノクロームピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、概して、H.264/AVCなどの他の規格のマクロブロックに類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU:coding unit)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0053]コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0054]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測がそれに適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU:prediction unit)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックのための予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0055]ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測ブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。本開示では、「に基づいて」という句は、「に少なくとも部分的に基づいて」を示し得る。ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
[0056]インター予測をサポートするために、ビデオエンコーダ20は、1つまたは複数の参照ピクチャリストを生成し得る。これらの参照ピクチャリストはRefPicList0およびRefPicList1と呼ばれることがある。いくつかの例では、ビデオエンコーダ20は、異なるピクチャまたはピクチャの異なるスライスのために異なる参照ピクチャリストを生成し得る。したがって、異なるピクチャおよび/またはスライスの異なるPUは、異なるバージョンのRefPicList0とRefPicList1とに関連付けられ得る。
[0057]さらに、ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成するとき、ビデオエンコーダ20は、PUの動き情報をシグナリングし得る。動き情報は、PUの参照インデックスと、PUの動きベクトルとを含み得る。PUの参照インデックスは、PUに関連付けられた参照ピクチャリストのうちの1つ内の、参照ピクチャの位置を示し得る。PUの動きベクトルは、PUの予測ブロックと、参照ピクチャ中の参照ロケーションとの間の空間変位を示し得る。ビデオエンコーダ20は、参照ロケーションに関連付けられた参照ピクチャのサンプルを使用してPUの予測ブロックを生成し得る。PUは2つの参照ピクチャに関連付けられ得るので、PUは、2つの参照インデックスと2つの動きベクトルとを有し得る。したがって、PUは、RefPicList0参照インデックスと、RefPicList1参照インデックスとを有し得る。PUのRefPicList0参照インデックスは、RefPicList0のPUのバージョンにおける参照ピクチャを示す。PUのRefPicList1参照インデックスは、RefPicList1のPUのバージョンにおける参照ピクチャを示す。同様に、PUは、RefPicList0動きベクトルと、RefPicList1動きベクトルとを有し得る。PUのRefPicList0動きベクトルは、RefPicList0のPUのバージョンにおける参照ピクチャ中の参照ロケーションを示し得る。PUのRefPicList1動きベクトルは、RefPicList1のPUのバージョンにおける参照ピクチャ中の参照ロケーションを示し得る。
[0058]ビデオエンコーダ20は、ビットストリーム中でPUの参照インデックスと動きベクトルとをシグナリングし得る。言い換えれば、ビデオエンコーダ20は、ビットストリーム中に、PUの参照インデックスと動きベクトルとを示すデータを含め得る。ビデオデコーダ30は、RefPicList0および/またはRefPicList1のPUのバージョンを再構成し得、PUの参照インデックスと動きベクトルとを使用してPUのための1つまたは複数の予測ブロックを判断し得る。ビデオデコーダ30は、サンプルを復号するために、残差データとともに、PUの予測ブロックを使用し得る。
[0059]ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ルーマブロックを生成した後に、ビデオエンコーダ20は、CUのためのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ20は、CUのためのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUのためのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0060]さらに、ビデオエンコーダ20は、4分木区分を使用して、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックであり得る。CUの変換ユニット(TU:transform unit)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0061]ビデオエンコーダ20は、TUのルーマ変換ブロックに1つまたは複数の変換を適用してTUのルーマ係数ブロックを生成し得る。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TUのCb変換ブロックに1つまたは複数の変換を適用してTUのCb係数ブロックを生成し得る。ビデオエンコーダ20は、TUのCr変換ブロックに1つまたは複数の変換を適用してTUのCr係数ブロックを生成し得る。
[0062]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
[0063]ビデオエンコーダ20は、コード化ピクチャと関連付けられたデータとの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。「ビットストリーム」という用語は、ネットワークアブストラクションレイヤ(NAL)ユニットストリーム(たとえば、NALユニットのシーケンス)、またはバイトストリーム(たとえば、HEVC規格のアネックスBによって指定されたスタートコードプレフィックスとNALユニットとを含んでいるNALユニットストリームのカプセル化)のいずれかを指すために使用される総称であり得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含んでいるシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み得、RBSPをカプセル化し得る。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されたNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPはゼロビットを含む。
[0064]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS:picture parameter set)のためのRBSPをカプセル化し得、第2のタイプのNALユニットはコード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットはSEIのためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL:video coding layer)NALユニットと呼ばれることがある。パラメータセット(たとえば、ビデオパラメータセット(VPS:video parameter set)、シーケンスパラメータセット(SPS)、PPSなど)を含んでいるNALユニットはパラメータセットNALユニットと呼ばれることがある。
[0065]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームをパースして、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して現在CUのPUのための予測ブロックを判断し得る。さらに、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0066]マルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。マルチビューコーディングのコンテキストでは、同じ時間インスタンスに対応するピクチャのセットを指すために「アクセスユニット」という用語が使用され得る。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。「ビューコンポーネント」は、単一のアクセスユニット中のビューのコード化表現であり得る。本開示では、「ビュー」は、同じビュー識別子に関連付けられたビューコンポーネントのシーケンスを指すことがある。いくつかの例では、ビューコンポーネントは、テクスチャビューコンポーネント(すなわち、テクスチャピクチャ)または深度ビューコンポーネント(すなわち、深度ピクチャ)であり得る。
[0067]マルチビューコーディングはビュー間予測をサポートする。ビュー間予測は、HEVCにおいて使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。ただし、ビデオコーダが(PUなどの)現在ビデオユニットに対してビュー間予測を実行するとき、ビデオコーダは、参照ピクチャとして、現在ビデオユニットと同じアクセスユニット中にあるが異なるビュー中にあるピクチャを使用し得る。対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0068]マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを他のビュー中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。非ベースビュー中のピクチャをコーディングするとき、ピクチャが、異なるビュー中にあるがビデオコーダが現在コーディング中のピクチャと同じ時間インスタンス(すなわち、アクセスユニット)内にある場合、(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、参照ピクチャリスト中にピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。
[0069]たとえば、NALユニットは、ヘッダ(すなわち、NALユニットヘッダ)とペイロード(たとえば、RBSP)とを含み得る。NALユニットヘッダはnuh_reserved_zero_6bitsシンタックス要素を含み得る。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なる「レイヤ」に属する。したがって、マルチビューコーディング、3DV、またはSVCでは、NALユニットのnuh_reserved_zero_6bitsシンタックス要素はNALユニットのレイヤ識別子(すなわち、レイヤID)を指定する。いくつかの例では、NALユニットがマルチビューコーディング、3DVコーディング、またはSVCにおけるベースレイヤに関係する場合、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は0に等しい。ビットストリームのベースレイヤ中のデータは、ビットストリームの他のレイヤ中のデータと無関係に復号され得る。NALユニットがマルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関係しない場合、nuh_reserved_zero_6bitsシンタックス要素は非0値を有し得る。マルチビューコーディングおよび3DVコーディングでは、ビットストリームの異なるレイヤは異なるビューに対応し得る。SVCでは、ベースレイヤ以外のレイヤは、「エンハンスメントレイヤ」と呼ばれることがあり、ビットストリームから復号されるビデオデータの視覚的品質を向上させる情報を提供し得る。
[0070]さらに、レイヤ内のいくつかのピクチャは、同じレイヤ内の他のピクチャと無関係に復号され得る。したがって、レイヤのいくつかのピクチャのデータをカプセル化しているNALユニットは、そのレイヤ中の他のピクチャの復号可能性に影響を及ぼすことなしにビットストリームから削除され得る。そのようなピクチャのデータをカプセル化しているNALユニットを削除すると、ビットストリームのフレームレートが低減し得る。レイヤ内の他のピクチャと無関係に復号され得るレイヤ内のピクチャのサブセットを、本明細書では「サブレイヤ」または「時間サブレイヤ」と呼ぶことがある。
[0071]NALユニットはtemporal_idシンタックス要素を含み得る。NALユニットのtemporal_idシンタックス要素はNALユニットの時間識別子を指定する。NALユニットの時間識別子は、そのNALユニットがそれに関連付けられるサブレイヤを識別する。したがって、ビットストリームの各サブレイヤは異なる時間識別子に関連付けられ得る。第1のNALユニットの時間識別子が第2のNALユニットの時間識別子よりも小さい場合、第1のNALユニットによってカプセル化されたデータは、第2のNALユニットによってカプセル化されたデータと無関係に復号され得る。
[0072]H.264/AVCおよびHEVCでは、SPSは、CVSのすべてのスライスに適用される情報を含んでいることがある。HEVCでは、CVSは、瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャ、あるいは切断リンクアクセス(BLA:broken link access)ピクチャ、あるいは、IDRまたはBLAピクチャでないすべての後続のピクチャを含むビットストリーム中の第1のピクチャであるクリーンランダムアクセス(CRA:clean random access)ピクチャから開始し得る。すなわち、HEVCでは、CVSは、復号順序で、ビットストリーム中の第1のアクセスユニットであるCRAアクセスユニットと、IDRアクセスユニットまたはBLAアクセスユニットと、それに続いて、後続のIDRまたはBLAアクセスユニットを含まないがそれまでのすべての後続のアクセスユニットを含む、0個以上の非IDRおよび非BLAアクセスユニットとからなり得る、アクセスユニットのシーケンスを備え得る。
[0073]HEVCおよび他のビデオコーディング規格は、ビットストリーム中へのランダムアクセスを可能にするための機構を与える。ランダムアクセスは、ビットストリーム中の第1のコード化ピクチャでないコード化ピクチャから始まるビットストリームの復号を指す。ビットストリームへのランダムアクセスは、ブロードキャスティングおよびストリーミングなど、様々なビデオ適用例において必要とされ得る。ビットストリームへのランダムアクセスは、ユーザが、任意の時間にプログラムに同調すること、異なるチャネル間でスイッチングすること、ビデオの特定の部分にジャンプすること、またはストリーム適応(たとえば、ビットレートの適応、フレームレートの適応、空間解像度の適応など)のために異なるビットストリームにスイッチングすることを可能にし得る。一定の間隔でのビットストリーム中へのランダムアクセスポイント(RAP:random access point)ピクチャの挿入はランダムアクセスを可能にし得る。RAPピクチャの例示的なタイプとしては、IDRピクチャ、CRAピクチャ、およびBLAピクチャがある。したがって、IDRピクチャ、CRAピクチャおよびBLAピクチャはランダムアクセスポイント(RAP)ピクチャと総称される。
[0074]IDRピクチャはIスライス(すなわち、イントラ予測のみが使用されるスライス)のみを含んでいる。IDRピクチャは、復号順序でビットストリーム中の第1のピクチャであり得るか、またはビットストリーム中の後のほうに現れ得る。各IDRピクチャは、復号順序でCVSの第1のピクチャである。IDRピクチャは、HEVCおよびH.264/AVCにおいて指定されているように、ランダムアクセスのために使用され得る。しかしながら、復号順序でIDRピクチャに後続するピクチャは、参照としてIDRピクチャより前に復号されるピクチャを使用することができない。したがって、ランダムアクセスのためにIDRピクチャに依拠するビットストリームは、追加のタイプのランダムアクセスピクチャを使用するビットストリームよりも著しく低いコーディング効率を有し得る。IDRアクセスユニットは、IDRピクチャを含んでいるアクセスユニットである。
[0075]復号順序でCRAピクチャに後続するが出力順序でCRAピクチャに先行するピクチャが、参照のためにCRAピクチャの前に復号されるピクチャを使用することを可能にするために、CRAピクチャの概念はHEVCに導入された。復号順序でCRAピクチャに後続するが出力順序でCRAピクチャに先行するピクチャは、CRAピクチャに関連付けられたリーディングピクチャ(またはCRAピクチャのリーディングピクチャ)と呼ばれる。すなわち、コーディング効率を改善するために、CRAピクチャの概念は、復号順序でCRAピクチャに後続するが出力順序でCRAピクチャに先行するピクチャが、参照としてCRAピクチャの前に復号されるピクチャを使用することを可能にするために、HEVCに導入された。CRAアクセスユニットは、コード化ピクチャがCRAピクチャであるアクセスユニットである。
[0076]CRAピクチャのリーディングピクチャは、復号順序でそのCRAピクチャの前に生じるIDRピクチャまたはCRAピクチャから復号が開始する場合、正しく復号可能である。しかしながら、CRAピクチャのリーディングピクチャは、そのCRAピクチャからのランダムアクセスが行われるとき、復号不能であり得る。したがって、ビデオデコーダは、一般に、ランダムアクセス復号中にCRAピクチャのリーディングピクチャを復号する。復号がどこで始まるかによっては利用可能でないことがある参照ピクチャからの誤り伝搬を防止するために、復号順序と出力順序の両方でCRAピクチャに後続するいかなるピクチャも、復号順序または出力順序のいずれかで(リーディングピクチャを含む)CRAピクチャに先行するどんなピクチャも参照として使用しないことがある。
[0077]切断リンクアクセス(BLA)ピクチャの概念は、CRAピクチャの導入の後にHEVCに導入され、CRAピクチャの概念に基づく。BLAピクチャは、一般にCRAピクチャの位置におけるビットストリームスプライシングから発生し、スプライスドビットストリーム中で、スプライシングポイントCRAピクチャはBLAピクチャに変更される。RAPピクチャを含んでいるアクセスユニットは、本明細書ではRAPアクセスユニットと呼ばれることがある。BLAアクセスユニットは、BLAピクチャを含んでいるアクセスユニットである。
[0078]BLAピクチャとCRAピクチャとの間の1つの差異は以下の通りである。CRAピクチャの場合、関連付けられたリーディングピクチャは、復号が復号順序でそのCRAピクチャの前にRAPピクチャから開始する場合、正しく復号可能である。しかしながら、CRAピクチャに関連付けられたリーディングピクチャは、そのCRAピクチャからのランダムアクセスが行われるとき(すなわち、復号がCRAピクチャから開始するとき、または言い換えれば、CRAピクチャがビットストリーム中の第1のピクチャであるとき)、正しく復号可能でないことがある。対照的に、復号が復号順序でBLAピクチャの前にRAPピクチャから開始するときでも、BLAピクチャに関連付けられたリーディングピクチャが復号可能であるシナリオはないことがある。
[0079]特定のCRAピクチャまたは特定のBLAピクチャに関連付けられたリーディングピクチャのいくつかは、その特定のCRAピクチャまたは特定のBLAピクチャがビットストリーム中の第1のピクチャであるときでも、正しく復号可能であり得る。これらのリーディングピクチャは復号可能リーディングピクチャ(DLP:decodable leading picture)と呼ばれることがある。他のリーディングピクチャは復号不能リーディングピクチャ(NLP:non-decodable leading picture)と呼ばれることがある。また、HEVCワーキングドラフト8では、NLPを廃棄タグ付き(TFD:tagged for discard)ピクチャと呼ぶことがある。
[0080]VPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、0個以上のCVS全体に適用されるシンタックス要素を含んでいるシンタックス構造である。SPSは、SPSがアクティブであるとき、アクティブであるVPSを識別するシンタックス要素を含み得る。したがって、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。
[0081]パラメータセット(たとえば、VPS、SPS、PPSなど)は、スライスのスライスヘッダから直接または間接的に参照される識別情報を含んでいることがある。参照プロセスは「アクティブ化」として知られる。したがって、ビデオデコーダ30が特定のスライスを復号しているとき、その特定のスライスのスライスヘッダ中のシンタックス要素によって直接または間接的に参照されるパラメータセットは「アクティブ化される」と言われる。パラメータセットタイプに応じて、アクティブ化は、ピクチャごとにまたはシーケンスごとに行われ得る。たとえば、スライスのスライスヘッダは、PPSを識別するシンタックス要素を含み得る。したがって、ビデオコーダがスライスをコーディングしたとき、PPSはアクティブ化され得る。さらに、PPSは、SPSを識別するシンタックス要素を含み得る。したがって、SPSを識別するPPSがアクティブ化されたとき、SPSはアクティブ化され得る。SPSは、VPSを識別するシンタックス要素を含み得る。したがって、VPSを識別するSPSがアクティブ化されたとき、VPSはアクティブ化される。
[0082]HEVCおよび他のビデオコーディング規格は、プロファイル、ティア、およびレベルを指定する。プロファイル、ティア、およびレベルは、ビットストリームに対する制限を指定し、したがって、ビットストリームを復号するために必要とされる能力に対する限界を指定する。プロファイル、ティア、およびレベルはまた、個々のデコーダ実装間のインターオペラビリティポイントを示すために使用され得る。各プロファイルは、そのプロファイルに準拠するすべてのビデオデコーダによってサポートされるアルゴリズム特徴および限界のサブセットを指定し得る。ビデオエンコーダは、プロファイル中でサポートされるすべての特徴を利用するように要求されない。ティアの各レベルは、シンタックス要素が有し得る値に対する限界のセットを指定し得る。すべてのプロファイルでティアおよびレベル定義の同じセットが使用され得るが、個々の実装形態は、サポートされるプロファイルごとに異なるティアをサポートし、ティア内で異なるレベルをサポートし得る。所与のプロファイルについて、ティアのレベルは、概して、特定のデコーダ処理負荷およびメモリ能力に対応し得る。ビデオデコーダの能力は、特定のプロファイル、ティア、およびレベルの制約に準拠するビデオストリームを復号する能力に関して指定され得る。そのようなプロファイルごとに、そのプロファイルのためにサポートされるティアおよびレベルも表現され得る。いくつかのビデオデコーダは、特定のプロファイル、ティア、またはレベルを復号することが可能でないことがある。
[0083]HEVCでは、プロファイル、ティア、およびレベルは、シンタックス構造profile_tier_level( )シンタックス構造によってシグナリングされ得る。profile_tier_level( )シンタックス構造はVPSおよび/またはSPS中に含まれ得る。profile_tier_level( )シンタックス構造は、general_profile_idcシンタックス要素と、general_tier_flagシンタックス要素と、general_level_idcシンタックス要素とを含み得る。general_profile_idcシンタックス要素は、CVSが準拠するプロファイルを示し得る。general_tier_flagシンタックス要素は、general_level_idcシンタックス要素の解釈のためのティアコンテキストを示し得る。general_level_idcシンタックス要素は、CVSが準拠するレベルを示し得る。これらのシンタックス要素のための他の値は予約済みであり得る。
[0084]ビデオデコーダの能力は、プロファイル、ティア、およびレベルの制約に準拠するビデオストリームを復号する能力に関して指定され得る。そのようなプロファイルごとに、そのプロファイルのためにサポートされるティアおよびレベルも表現され得る。いくつかの例では、ビデオデコーダは、HEVCにおいて指定された値の間のgeneral_profile_idcシンタックス要素の予約済み値が、指定されたプロファイル間の中間の能力を示すと推論しない。ただし、ビデオデコーダは、HEVCにおいて指定された値の間のgeneral_tier_flagシンタックス要素の特定の値に関連付けられたgeneral_level_idcシンタックス要素の予約済み値が、ティアの指定されたレベル間の中間の能力を示すと推論し得る。
[0085]1つまたは複数のHEVCビットストリームは、特定のファイルフォーマットに準拠するファイルに記憶され得る。いくつかの例では、1つまたは複数のビデオデータビットストリーム(たとえば、HEVCビットストリーム)は、ISOベースメディアファイルフォーマット(ISOBMFF)に準拠するファイルに記憶され得る。ISOBMFFはISO/IEC14496−12と呼ばれることもある。ビデオデータビットストリームの記憶のための他の例示的なファイルフォーマットとしては、MPEG−4ファイルフォーマット(ISO/IEC14496−14)、第3世代パートナーシッププロジェクト(3GPP:Third Generation Partnership Project)ファイルフォーマット(3GPP TS26.244)、およびAVCファイルフォーマット(ISO/IEC14496−15)を含む、ISOBMFFから派生したファイルフォーマットがある。HEVCビデオコンテンツの記憶のためのAVCファイルフォーマットへの追補がMPEGによって開発中である。このAVCファイルフォーマット追補はHEVCファイルフォーマットと呼ばれることがある。すなわち、HEVCファイルフォーマットはMPEGによって開発されており、ISO/IEC14496−15の一部分になりつつある。
[0086]HEVCファイルフォーマットに準拠するファイルは、論理構造と、時間構造と、物理構造とを有し得る。ファイルの論理構造は、時間並列トラックのセットを含んでいるムービーの論理構造であり得る。ファイルの時間構造は、トラックがサンプルのシーケンスを時間的に含んでいるということである。サンプルのシーケンスは、エディットリストによってムービーのタイムライン中にマッピングされ得る。HEVCファイルフォーマットのコンテキストでは、「サンプル」は、単一のタイムスタンプに関連付けられたデータを備え得る。サンプルの例としては、ビデオの個々のフレーム、復号順序での一連のビデオフレーム、または復号順序でのオーディオの圧縮セクションがある。
[0087]物理的に、HEVCファイルフォーマットに準拠するファイルは、ボックスと呼ばれる一連のオブジェクトを備え得る。「ボックス」は、一意のタイプ識別子と長さとによって定義されるオブジェクト指向ビルディングブロックであり得る。いくつかの事例では、HEVCファイルフォーマットに準拠するファイル中のすべてのデータがボックス内に含まれていることがあり、ボックス中にないファイル中にはデータがないことがある。HEVCファイルフォーマットに準拠するファイルは様々なタイプのボックスを含み得る。
[0088]たとえば、HEVCファイルフォーマットに準拠するファイルは、ファイルタイプボックス、メディアデータボックス、ムービーボックス、ムービーフラグメントボックスなどを含み得る。この例では、ファイルタイプボックスは、ファイルタイプおよび互換性情報を含む。メディアデータボックスはサンプル(たとえば、コード化ピクチャ)を含んでいることがある。ムービーボックスは、ムービーに関するメタデータ(たとえば、サンプル間の論理関係およびタイミング関係、ならびにまた、サンプルのロケーションへのポインタ)を含んでいることがある。ムービーボックスはいくつかのタイプのサブボックスを含み得る。ムービーボックス中のサブボックスは、1つまたは複数のトラックボックスを含み得る。トラックボックスは、ムービーの個々のトラックに関する情報を含み得る。トラックボックスは、シングルトラックの全体的な情報を指定するトラックヘッダボックスを含み得る。さらに、トラックボックスは、メディア情報ボックスを含んでいるメディアボックスを含み得る。メディア情報ボックスは、トラック中のメディアサンプルのデータインデクシングを含んでいるサンプルテーブルボックスを含み得る。サンプルテーブルボックス中の情報は、時間的にサンプルの位置を特定するために使用され得、トラックのサンプルの各々について、サンプルのタイプ、サイズ、コンテナ、およびそのコンテナ中のオフセットを特定するために使用され得る。
[0089]さらに、サンプルテーブルボックスは、1つまたは複数のSampleToGroupボックスと、1つまたは複数のサンプルグループ記述ボックス(すなわち、SampleGroupDescriptionボックス)とを含み得る。SampleToGroupボックスは、サンプルが属するサンプルグループの関連付けられた記述とともに、サンプルグループを判断するために使用され得る。言い換えれば、SampleToGroupボックスは、サンプルが属するグループを示し得る。SampleToGroupボックスは「sbgp」のボックスタイプを有し得る。SampleToGroupボックスはグルーピングタイプ要素(たとえば、grouping_type)を含み得る。グルーピングタイプ要素は、サンプルグルーピングのタイプ(すなわち、サンプルグループを形成するために使用される基準)を識別する整数であり得る。さらに、SampleToGroupボックスは1つまたは複数のエントリを含み得る。SampleToGroupボックス中の各エントリは、トラック中の異なる重複しない一連の連続するサンプルに関連付けられ得る。各エントリは、サンプルカウント要素(たとえば、sample_count)と、グループ記述インデックス要素(たとえば、group_description_index)とを示し得る。エントリのサンプルカウント要素は、エントリに関連付けられたサンプルの数を示し得る。言い換えれば、エントリのサンプルカウント要素は、同じサンプルグループ記述子をもつ連続するサンプルの数を与える整数であり得る。グループ記述インデックス要素は、エントリに関連付けられたサンプルの記述を含んでいるSampleGroupDescriptionボックスを識別し得る。複数のエントリのグループ記述インデックス要素は同じSampleGroupDescriptionボックスを識別し得る。
[0090]いくつかの例では、以下の擬似コードがSampleToGroupボックスを記述する。
[0091]上記のように、サンプルテーブルボックスは0個以上のSampleGroupDescriptionボックスを含み得る。SampleGroupDescriptionボックスはサンプルグループの記述を含み得る。トラック中にサンプルのために2つ以上のサンプルグルーピングがある場合、複数のインスタンスのSampleGroupDescriptionボックスがあり得る。SampleGroupDescriptionボックスは「sgpd」のボックスタイプを有し得る。
[0092]いくつかの例では、以下の擬似コードがSampleGroupDescriptionボックスを記述する。
[0093]上記の擬似コードに示されているように、SampleGroupDescriptionボックスは、grouping_type要素、entry_count要素と、1つまたは複数のエントリとを含み得る。SampleGroupDescriptionBoxのgrouping_type要素は、SampleGroupDescriptionボックスに関連付けられたSampleToGroupボックスを識別する整数であり得る。entry_count要素は、SampleGroupDescriptionボックス中のエントリの数を示し得る。SampleGroupDescriptionボックス中の各エントリは、VisualSampleGroupEntryオブジェクト、AudioSampleGroupEntryオブジェクト、またはHintSampleGroupEntryオブジェクトを含み得る。VisualSampleGroupEntryオブジェクトは、視覚的(たとえば、ビデオ)サンプルのグループに関する記述を与え得る。AudioSampleGroupEntryオブジェクトは、オーディオサンプルのグループに関する記述を与え得る。HintSampleGroupEntryオブジェクトは、ヒントサンプルのグループに関する記述を与え得る。VisualSampleGroupEntryオブジェクトおよびAudioSampleGroupEntryオブジェクトは、抽象的なSampleGroupDescriptionEntryクラスを拡張する抽象クラスに属し得る。
[0094]さらに、サンプルテーブルボックスは、ストリームについてのフォーマット記述を備えるサンプル記述ボックスを含み得る。特に、サンプル記述ボックスは、1つまたは複数のサンプルエントリのリストを含み得る。サンプルエントリの各々は、メディアタイプ(たとえば、ストリームを復号するために必要とされるデコーダのタイプ)の名前と、必要とされるそのデコーダの何らかのパラメータ化とを含んでいることがある。たとえば、HEVCのコンテキストでは、サンプルエントリはHEVCデコーダ構成記録を含み得る。したがって、HEVCデコーダ構成記録は、サンプルテーブルボックスのサブボックスであり得る。HEVCデコーダ構成記録は、ISO/IEC23008−2(すなわち、HEVC)ビデオコンテンツのためのデコーダ構成情報を含み得る。たとえば、HEVCデコーダ構成記録は、パラメータセット(たとえば、VPS、SPS、PPSなど)を含んでいる1つまたは複数のNALユニットを含み得る。
[0095]上記のように、HEVCファイルフォーマットに準拠するファイルはムービーフラグメントボックスを含み得る。ムービーフラグメントボックスは、ムービーフラグメント(すなわち、ムービーのフラグメント)に関するメタデータを含んでいることがある。ムービーフラグメントボックスは、ムービーフラグメントのトラックのフラグメントに関する情報を含むトラックフラグメントボックスを含み得る。さらに、トラックフラグメントボックスは、ムービーフラグメントのサンプルが属するサンプルグループを示し得る1つまたは複数のSampleToGroupボックスを含み得る。
[0096]図1の例では、ビデオコーディングシステム10はメディアアウェアネットワーク要素(MANE)27を含む。MANE27は、ソースデバイス12によって生成されたビデオデータを受信し得、ビデオデータを宛先デバイス14に転送し得る。MANE27(または他のタイプのデバイス)は、複数のサブレイヤで符号化されたHEVCビットストリームにビットストリームシニングを適用し得る。ビットストリーム中の任意のポイントにおいて、下位サブレイヤ中のピクチャのための復号プロセスは上位サブレイヤのNALユニットに依存しないので、下位サブレイヤ(すなわち、下位時間識別子に関連付けられたサブレイヤ)中のピクチャがまだ復号可能であるということに基づいて、MANE27は上位サブレイヤ(すなわち、上位時間識別子に関連付けられたサブレイヤ)のNALユニットを削除し始めることができる。ある値よりも高い時間識別子をもつすべてのNALユニットを削除するアクションは時間ダウンスイッチングと呼ばれることがある。時間ダウンスイッチングは常に可能であり得る。このようにして、時間サブレイヤスイッチングポイントという用語は、あるピクチャと同じサブレイヤ中にあり、復号順序でそのピクチャに先行する、他のピクチャへの依存性を有しないそのようなピクチャを指し得る。
[0097]「時間アップスイッチング」という用語は、そのポイントまで転送されていないあるサブレイヤのNALユニットを転送し始めるアクションを指し得る。それにスイッチされるレイヤ中のピクチャのいずれも、スイッチが実行されたビットストリーム中のポイントより前の同じサブレイヤ中のどのピクチャにも依存しない場合のみ、時間アップスイッチングは可能であり得る。
[0098]H.264/AVCビデオコーディング規格のスケーラブルビデオコーディング拡張(すなわち、H.264/SVC)では、時間サブレイヤスイッチングポイントは、SPS中のtemporal_id_nesting_flagシンタックス要素を通して示され得る。たとえば、特定のCVSに適用可能なSPS中のtemporal_id_nesting_flagシンタックス要素が1に等しい場合、0よりも大きい時間識別子をもつCVS中のすべてのピクチャが時間レイヤスイッチングポイントであり得る。さらに、H.264/SVCでは、時間レベルスイッチングポイントSEIメッセージが時間サブレイヤスイッチングポイントを示し得る。時間レベルスイッチングポイントSEIメッセージが時間サブレイヤスイッチングポイントを示すいくつかの例では、時間レベルスイッチングポイントSEIメッセージは、スイッチポイントにおいて時間レイヤM+1にスイッチアップするために、時間レイヤMがスイッチングポイントよりどれくらいの期間だけ前に復号されているべきであるかに関する情報を含んでいることがある。
[0099]HEVCでは、H.264/SVCの場合のように、SPSはsps_temporal_id_nesting_flagシンタックス要素を含み得る。sps_temporal_id_nesting_flagシンタックス要素が1に等しい値を有するとき、0よりも大きい時間識別子をもつすべてのピクチャがサブレイヤスイッチングポイントである。HEVCでは、サブレイヤスイッチングポイントに関連付けられた2つのピクチャタイプ、すなわち、時間サブレイヤアクセス(TSA)ピクチャタイプおよびステップワイズ時間サブレイヤアクセス(STSA)ピクチャタイプがあり得る。TSAピクチャタイプおよびSTSAピクチャタイプは、時間サブレイヤスイッチングポイントを示すために使用され得る。
[0100]TSAピクチャと、復号順序でTSAピクチャに後続するピクチャとは、インター予測参照のために、TSAピクチャの時間識別子に等しいかまたはそれよりも大きい時間識別子をもつピクチャを使用しない。TSAピクチャは、すぐ下位のサブレイヤから、TSAピクチャを含んでいるサブレイヤまたはいずれかの上位サブレイヤへの、TSAピクチャにおけるアップスイッチングを可能にする。いくつかの例では、すべてのTSAピクチャが0よりも大きい時間識別子を有する。
[0101]STSAピクチャは、インター予測参照のためにSTSAピクチャと同じTemporalIdをもつピクチャを使用しない。STSAピクチャと同じ時間識別子をもつ復号順序でSTSAピクチャに後続するピクチャは、インター予測参照のためにSTSAピクチャと同じ時間識別子をもつ復号順序でSTSAピクチャより前のピクチャを使用しない。STSAピクチャは、すぐ下位のサブレイヤから、STSAピクチャを含んでいるサブレイヤへの、STSAピクチャにおけるアップスイッチングを可能にする。いくつかの例では、すべてのSTSAピクチャが0よりも大きい時間識別子を有する。したがって、TSAピクチャとは対照的に、STSAピクチャは、必ずしも上位サブレイヤへのアップスイッチングを可能にするとは限らない。そうではなく、STSAピクチャは、STSAピクチャを含んでいるサブレイヤへのアップスイッチングのみを可能にし得る。
[0102]HEVCコンテンツの記憶のためのファイルフォーマットの既存の設計に関するいくつかの問題または短所がある。たとえば、(STSAサンプルとも呼ばれる)STSAピクチャを含んでいるサンプルをシグナリングするためのコンパクトな方法がない。別の例では、イントラピクチャを含んでいるサンプルをシグナリングするための効率的な方法がないことがある。イントラピクチャを含んでいるサンプルのシグナリングは、イントラピクチャのみを使用するいくつかのタイプのトリックモード再生を可能にし得る。別の例では、いずれかのサンプルにおいていずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが実行され得るかどうかをシグナリングするための効率的な方法がないことがある。
[0103]本開示の1つの例示的な技法によれば、サンプルグルーピングタイプが「stsa」であり得る、ステップワイズ時間サブレイヤアクセスサンプルグループと称するサンプルグループが、STSAサンプルをマークする。この機構を用いて、ビデオコーダまたは他のデバイスはSTSAサンプルを容易に識別し得る。
[0104]この例示的な技法によれば、デバイス(たとえば、ビデオエンコーダ20または別のデバイス)は、コード化ピクチャを含んでいる複数のサンプルを備えるファイルを生成し得る。そのファイルは、その複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するボックス(たとえば、SampleToGroupBox)をも含み得る。ボックスは、サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示す。いくつかの例では、デバイスはファイルを出力し得る。そのような例では、デバイスの出力インターフェース(たとえば、ネットワークインターフェース、ディスクまたはドライブインターフェース、メモリアクセスシステムなど)がファイルを出力し得る。
[0105]同様に、デバイス(たとえば、ビデオデコーダ30または別のデバイス)は、サンプルグループを識別するボックス中のデータに基づいて、ボックスを含んでいるファイル中のサンプルの中からSTSAサンプルを識別し得る。いくつかの例では、デバイスの入力インターフェース(たとえば、ネットワークインターフェース、ディスクまたはドライブインターフェース、メモリアクセスシステムなど)が、サンプルグループを識別するボックスを含んでいるファイルを受信し得る。さらに、いくつかの例では、デバイスは、サンプルグループ中のSTSAサンプルのうちの1つにおいて時間アップスイッチングを実行し得る。さらに、いくつかの例では、ビデオデコーダ30は、STSAサンプルのうちの1つまたは複数を復号し得る。
[0106]さらに、本開示のいくつかの例示的な技法によれば、サンプルグルーピングタイプが「ipsg」であり得る、イントラピクチャサンプルグループ(すなわち、イントラピクチャサンプルグルーピングエントリ)と称するサンプルグループが、(イントラサンプルも呼ばれる)イントラコード化ピクチャを含んでいるサンプルをマークするように設計される。したがって、HEVCビデオトラックは、「ipsg」のgrouping_type要素をもつSampleToGroupBoxの0個のインスタンスまたは1つのインスタンスを含んでいることがある。この機構を用いて、イントラコード化ピクチャを含んでいるサンプルは、イントラピクチャサンプルグループのみを通して、容易に識別され得る。ビデオデコーダ30は、イントラコード化ピクチャのうちの1つまたは複数を復号し得る。
[0107]代替的に、イントラピクチャサンプルグループは、非RAPイントラコード化ピクチャ、すなわち、HEVCワーキングドラフト8において定義されているRAPピクチャでないイントラピクチャを含んでいるサンプルのみをマークする。この機構を用いて、イントラコード化ピクチャを含んでいるサンプルは、RAPピクチャを含んでいるすべてのサンプルをマークする同期サンプルテーブルと、イントラピクチャサンプルグループの両方を通して、容易に識別され得る。このようにして、デバイス(たとえば、ビデオエンコーダ20または別のデバイス)は、非ランダムアクセスポイント(非RAP)イントラコード化ピクチャを備えるファイルを生成し得、ここにおいて、サンプルグループは、ファイル中で非RAPイントラコード化ピクチャをマークする。
[0108]さらに、本開示のいくつかの例示的な技法によれば、いずれかのサンプルにおいていずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが実行され得るかどうかが、サンプルエントリ中で、たとえば、フラグを使用してシグナリングされる。いくつかの例では、ビデオエンコーダ20または別のデバイスが、要素を含む記録(たとえば、HEVCデコーダ構成記録)を生成し得る。第1の値を有する要素は、いずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが、いずれかのサンプルにおいて実行され得ることを示す。第2の値を有する要素は、いずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが、いずれかのサンプルにおいて実行され得ることが保証されないことを示す。さらに、いくつかの例では、要素が第1の値を有するとき、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSは、いずれかの上位時間レイヤへの時間サブレイヤアップスイッチングがいずれかのサンプルにおいて実行され得るかどうかを示すシンタックス要素を有する。
[0109]このようにして、デバイス(たとえば、ビデオエンコーダ20または他のデバイス)は、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成し得る。そのファイルは、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含む記録(たとえば、HEVCデコーダ構成記録などのデコーダ構成記録)を含むボックスをも含み得る。いくつかの例では、デバイスの出力インターフェース(たとえば、ネットワークインターフェース、ディスクまたはドライブインターフェース、メモリアクセスシステムなど)がファイルを出力し得る。したがって、デバイス(たとえば、ビデオデコーダ30または別のデバイス)は、ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのボックス中の記録(たとえば、HEVCデコーダ構成記録などのデコーダ構成記録)中の要素に基づいて、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断し得る。いくつかの例では、デバイスの入力インターフェース(たとえば、ネットワークインターフェース、ディスクまたはドライブインターフェース、メモリアクセスシステムなど)が、ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルを受信し得る。さらに、いくつかの例では、デバイスは、SPSのうちの1つに関連付けられたサンプルにおいて時間アップスイッチングを実行し得る。
[0110]本開示の技法は、HEVC以外のビデオコーデックを使用して符号化された他のビデオコンテンツにも適用され得る。
[0111]図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は、説明の目的で与えられており、本開示において広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示では、HEVCコーディングのコンテキストにおいてビデオエンコーダ20について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0112]図2の例では、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0113]ビデオエンコーダ20はビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライス中の各CTUを符号化し得る。ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUに関連付けられたコーディングブロックを区分し得る。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。CUのサイズはCUのルーマコーディングブロックのサイズを指し得、PUのサイズはPUのルーマ予測ブロックのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測用の2N×2NまたはN×NのPUサイズと、インター予測用の2N×2N、2N×N、N×2N、N×N、または同様の対称PUサイズとをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30は、インター予測用の2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称区分をもサポートし得る。
[0114]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成し得る。PUの予測データは、PUの予測ブロックと、PUの動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるのか、Pスライス中にあるのか、Bスライス中にあるのかに応じて、CUのPUに対して異なる演算を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120はPUに対してインター予測を実行しない。
[0115]PUがPスライス中にある場合、動き推定ユニット122は、PUの参照領域について参照ピクチャリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索し得る。PUの参照領域は、PUの予測ブロックに最も近接して対応するサンプルを含んでいる参照ピクチャ内の領域であり得る。動き推定ユニット122は、PUの参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、PUのコーディングブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示す動きベクトルを生成し得る。たとえば、動きベクトルは、現在ピクチャにおける座標から参照ピクチャにおける座標までのオフセットを与える2次元ベクトルであり得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0116]PUがBスライス中にある場合、動き推定ユニット122は、PUについての単予測または双予測を実行し得る。PUについての単予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0の参照ピクチャまたは第2の参照ピクチャリスト(「RefPicList1」)を探索し得る。動き推定ユニット122は、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す動きベクトルと、参照ピクチャがRefPicList0中にあるのかRefPicList1中にあるのかを示す1つまたは複数の予測方向インジケータとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0117]PUについての双方向インター予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0中の参照ピクチャを探索し得、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニット122は、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、参照領域に関連する参照ロケーションとPUの予測ブロックとの間の空間変位を示す動きベクトルを生成し得る。PUの動き情報は、PUの参照インデックスと動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0118]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対してイントラ予測を実行し得る。
[0119]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUについて複数セットの予測データを生成し得る。特定のイントラ予測モードを使用してイントラ予測を実行するとき、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成し得る。隣接ブロックは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの予測ブロックの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数はPUの予測ブロックのサイズに依存し得る。
[0120]予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成された予測データ、またはPUのためにイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUについての予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
[0121]残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0122]変換処理ユニット104は、4分木区分を実行して、CUの残差ブロックをCUのTUに関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックと、2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置とは、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。
[0123]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
[0124]量子化ユニット106は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、量子化中にnビット変換係数はmビット変換係数に切り捨てられ得、ただし、nはmよりも大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP:quantization parameter)値に基づいてCUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQP値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得、したがって、量子化変換係数は元の係数よりも低い精度を有し得る。
[0125]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化および逆変換を適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算して、TUに関連付けられた再構成された変換ブロックを生成し得る。このようにCUのTUごとに変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成し得る。
[0126]フィルタユニット114は、1つまたは複数のデブロッキング演算を実行して、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング演算を実行した後、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、再構成されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行し得る。さらに、イントラ予測処理ユニット126は、復号ピクチャバッファ116中の再構成されたコーディングブロックを使用して、CUと同じピクチャ中の他のPUに対してイントラ予測を実行し得る。
[0127]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、データに対して1つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化データを生成し得る。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)演算、CABAC演算、可変対可変(V2V:variable-to-variable)長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。
[0128]いくつかの例では、ビデオエンコーダ20は、ビットストリームを含むファイルを生成し得る。本開示の1つまたは複数の技法によれば、ファイルは、コード化ピクチャを含んでいる複数のサンプルを備え得る。ファイルは、その複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するボックスをも備え得る。ボックスは、サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示し得る。さらに、本開示の1つまたは複数の技法によれば、ファイルは、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶し得る。ファイルは、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含む記録を含むボックスをも含み得る。
[0129]図3は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図3は、説明の目的で与えられており、本開示おいて広く例示され説明される技法を限定するものではない。説明の目的で、本開示では、HEVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0130]図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164と、イントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0131]コード化ピクチャバッファ(CPB)151は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶し得る。エントロピー復号ユニット150は、CPB151からNALユニットを受信し、NALユニットをパースして、ビットストリームからシンタックス要素を取得し得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから取得されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0132]ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コード化スライスNALユニットからシンタックス要素をパースし、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含んでいることがある。
[0133]ビットストリームからのシンタックス要素を復号することに加えて、ビデオデコーダ30は、CUに対して復号演算を実行し得る。CUに対して復号演算を実行することによって、ビデオデコーダ30はCUのコーディングブロックを再構成し得る。
[0134]CUに対して復号演算を実行することの一部として、逆量子化ユニット154は、CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、TUのCUに関連付けられたQP値を使用して、量子化の程度を判断し、同様に、逆量子化ユニット154が適用するための逆量子化の程度を判断し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
[0135]逆量子化ユニット154が係数ブロックを逆量子化した後に、逆変換処理ユニット156は、TUに関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、逆回転変換、逆方向性変換、または別の逆変換を係数ブロックに適用し得る。
[0136]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUについての予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいてPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいてPUのイントラ予測モードを判断し得る。
[0137]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150は、PUの動き情報を取得し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUのための1つまたは複数の参照領域を判断し得る。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルに基づいて、PUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0138]再構成ユニット158は、CUのTUに関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックからの残差値、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックが適用可能な場合にそれらを使用して、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。
[0139]フィルタユニット160は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックに関連付けられたブロッキングアーティファクトを低減するために、デブロッキング演算を実行し得る。ビデオデコーダ30は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実行し得る。このようにして、ビデオデコーダ30は、有意ルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
[0140]上記のように、HEVCファイルフォーマットに準拠するファイルは、SampleToGroupボックスの0個以上のインスタンスを含み得る。さらに、上記のように、各SampleToGroupボックスは、サンプルグルーピングのタイプを識別するグルーピングタイプ要素を含み得る。本開示の1つまたは複数の技法によれば、SampleToGroupボックスは、SampleToGroupボックスに関連付けられたサンプルグループに属するサンプルがSTSAであることを示す値(たとえば、「stsa」)をもつグルーピングタイプ要素を含み得る。たとえば、HEVCビデオトラックは、「stsa」のgrouping_typeをもつSampleToGroupBoxの0個のインスタンスまたは1つのインスタンスを含んでいることがある。SampleToGroupボックスに関連付けられたサンプルグループに属するサンプルがSTSAであることを示す値をもつグルーピングタイプ要素をもつSampleToGroupボックスのインスタンス(たとえば、grouping_type「stsa」をもつSampleToGroupボックス)は、ステップワイズ時間サブレイヤサンプルグループエントリと呼ばれることがある。ステップワイズ時間サブレイヤサンプルグループエントリは、ステップワイズ時間サブレイヤアクセスポイントとしてのサンプルのマーキング(すなわち、STSA)を表し得る。言い換えれば、ステップワイズ時間サブレイヤサンプルグループエントリは、STSAサンプルをマークするために使用されるサンプルグループであり得る。ステップワイズ時間サブレイヤサンプルグループエントリのグルーピングタイプは「stsa」のグループタイプを有し得る。
[0141]したがって、ビデオエンコーダまたは別のデバイスは、ファイル中の複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するボックス(たとえば、SampleToGroupボックス)を生成し得る。ボックスは、(たとえば、「stsa」のグルーピングタイプを指定することによって)サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示し得る。したがって、ビデオデコーダまたは別のデバイスは、ボックス中のデータに基づいて、ファイル中のサンプルの中からSTSAサンプルを識別し得る。
[0142]上記のように、SampleGroupDescriptionボックスはサンプルグループの記述を含み得る。さらに、上記のように、SampleGroupDescriptionボックスは0個以上のエントリを含み得る。SampleGroupDescriptionボックス中のエントリは、1つまたは複数のVisualSampleGroupEntryオブジェクトを含み得る。VisualSampleGroupEntryオブジェクトは、視覚的(たとえば、ビデオ)サンプルのグループに関する記述を与え得る。VisualSampleGroupEntryオブジェクトはVisualSampleGroupEntryクラスに属し得る。本開示の1つまたは複数の技法によれば、StepWiseTemporalSubLayerEntryクラスがVisualSampleGroupEntryクラスを拡張し得る。したがって、SampleGroupDescriptionボックス中のエントリは、StepWiseTemporalSubLayerEntryクラスに属するオブジェクト(すなわち、StepWiseTemporalSubLayerEntryオブジェクト)を含み得る。したがって、SampleGroupDescriptionボックスはStepWiseTemporalSubLayerEntryオブジェクトのコンテナであり得る。ファイルがStepWiseTemporalSubLayerEntryオブジェクトを含んでいることは必須でなくてよく、ファイルは0個以上のStepWiseTemporalSubLayerEntryオブジェクトを含んでいることがある。
[0143]したがって、以下の記述がステップワイズ時間サブレイヤサンプルグループエントリに当てはまり得る。
グループタイプ:「stsa」
コンテナ:サンプルグループ記述ボックス(「sgpd」)
必須:いいえ
量:0個以上
このサンプルグループは、ステップワイズ時間サブレイヤアクセス(STSA)サンプルをマークするために使用される。
[0144]以下は、ステップワイズ時間サブレイヤサンプルグループエントリのための例示的なシンタックスである。
[0145]いくつかの例では、StepWiseTemporalSubLayerEntryオブジェクトを含むSampleGroupDescriptionボックスのインスタンスは、ステップワイズ時間サブレイヤサンプルグループエントリ(たとえば、「stsa」のグルーピングタイプ要素をもつSampleToGroupボックスのインスタンス)を伴い得る。したがって、いくつかの例では、SampleToGroupボックスが「stsa」のグルーピングタイプを有するとき、同じグルーピングタイプをもつSampleGroupDescriptionボックスの付随インスタンスが存在することになる。
[0146]本開示の1つまたは複数の技法によれば、HEVCビデオトラックは、「ipsg」のgrouping_type要素をもつSampleToGroupの0個のインスタンスまたは1つのインスタンスを含んでいることがある。「ipsg」のgrouping_type要素をもつSampleToGroupボックスのインスタンスは、イントラピクチャサンプルグルーピングと呼ばれることがある。「ipsg」のグルーピングタイプ(すなわち、イントラピクチャサンプルグルーピング)をもつSampleToGroupボックスインスタンスは、ステップワイズ時間サブレイヤアクセスポイントとしてサンプルのマーキングを表し得る。したがって、ビデオエンコーダまたは別のデバイスは、ファイル中の複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するボックス(たとえば、SampleToGroupボックス)を生成し得る。ボックスは、(たとえば、「ipsg」のグルーピングタイプを指定することによって)サンプルグループ中の各サンプルがイントラサンプルであることをさらに示し得る。したがって、ビデオデコーダまたは別のデバイスは、ボックス中のデータに基づいて、ファイル中のサンプルの中からイントラサンプルを識別し得る。
[0147]いくつかの例では、同じグルーピングタイプをもつSampleGroupDescriptionボックスの付随インスタンスがHEVCビデオトラック中に存在する。上記のように、SampleGroupDescriptionボックスは0個以上のエントリを含み得る。SampleGroupDescriptionボックス中のエントリは、1つまたは複数のVisualSampleGroupEntryオブジェクトを含み得る。VisualSampleGroupEntryオブジェクトはVisualSampleGroupEntryクラスに属し得る。さらに、本開示の1つまたは複数の技法によれば、IntraPictureEntryクラスがVisualSampleGroupEntryクラスを拡張し得る。したがって、SampleGroupDescriptionボックス中のエントリは、IntraPictureEntryクラスに属するオブジェクト(すなわち、IntraPictureEntryオブジェクトまたはイントラピクチャサンプルグルーピングエントリ)を含み得る。したがって、SampleGroupDescriptionボックスはIntraPictureEntryオブジェクトのコンテナであり得る。ファイルがIntraPictureEntryオブジェクトを含んでいることは必須でなくてよく、ファイルは0個以上のIntraPictureEntryオブジェクトを含んでいることがある。このようにして、ファイルは、イントラコード化ピクチャを含んでいるサンプルをマークするためにサンプルグループが使用されることを示すエントリ(たとえば、IntraPictureEntryオブジェクト)を含むサンプルグループ記述ボックス(たとえば、SampleGroupDescriptionボックス)を含み得る。
[0148]したがって、以下の記述がIntraPictureEntryエントリに当てはまり得る。
グループタイプ:「ipsg」
コンテナ:サンプルグループ記述ボックス(「sgpd」)
必須:いいえ
量:0個以上
このサンプルグループは、イントラコード化ピクチャを含んでいるサンプル、すなわち、すべてのスライスがイントラスライスであるサンプルをマークするために使用される。
[0149]以下は、イントラピクチャサンプルグルーピングエントリのための例示的なシンタックスである。
[0150]上記のように、HEVCファイルフォーマットはHEVCデコーダ構成記録を規定する。たとえば、HEVCファイルフォーマットに準拠するファイルのトラックボックス内のサンプルテーブルボックスがHEVCデコーダ構成記録を含み得る。HEVCデコーダ構成記録は、HEVCビデオコンテンツのための構成情報を含んでいる。たとえば、HEVCデコーダ記録は0個以上のNALユニットを含み得る。HEVCデコーダ記録中に含まれているNALユニットは、VPS、SPS、PPSなどのパラメータセットを含んでいるNALユニットを含み得る。
[0151]以下に、HEVCデコーダ構成記録のための例示的なシンタックスを与える。ボールドで示された以下のシンタックスの部分は、MPEG出力ドキュメントW12846、「Study of ISO/IEC 14496-15:2010/PDAM 2 Carriage of HEVC」、MPEGの第101回会合、ストックホルム、スウェーデン、2012−07−16〜2012−07−20において指定されているHEVCデコーダ構成記録の修正部分を示し得る。
[0152]HEVCデコーダ構成記録は、HEVCデコーダ構成記録によって含まれているNALユニットの長さ、ならびにサンプルエントリに記憶されている場合はパラメータセットの長さを示すために各サンプルにおいて使用される長さフィールド(たとえば、lengthSizeMinusOne)のサイズを含んでいる。HEVCデコーダ構成記録は外部でフレーム化され得る。言い換えれば、HEVCデコーダ構成記録のサイズは、HEVCデコーダ構成記録を含んでいる構造によって与えられ得る。
[0153]さらに、HEVCデコーダ構成記録はバージョンフィールドを含んでいることがある。上記に与えた例示的なシンタックスでは、このバージョンフィールドはconfigurationVersionと称される。記録に適合しない変更は、バージョン番号の変更によって示され得る。いくつかの例では、デバイスまたは他のリーダーが、HEVCデコーダ構成記録のバージョンフィールドによって指定されたバージョン番号を認識しない場合、デバイスまたは他のリーダーは、HEVCデコーダ構成記録またはHEVCデコーダ構成記録が適用されたストリームを復号することを試みてはならない。いくつかの例では、HEVCデコーダ構成記録に適合する拡張は、HEVCデコーダ構成記録を拡張せず、HEVCデコーダ構成記録のバージョンフィールドによって指定された構成バージョンコードを変更しない。デバイスまたは他のリーダーは、いくつかの例では、それらのデバイスまたは他のリーダーが理解するデータの定義を越える無認識データを無視するように準備され得る。
[0154]VPSは、シンタックス要素の中でも、general_profile_spaceシンタックス要素、general_profile_idcシンタックス要素、general_profile_compatibility_flag[i]シンタックス要素、およびgeneral_reserved_zero_16bitsシンタックス要素を含み得る。general_profile_spaceシンタックス要素は、general_profile_idcシンタックス要素と、両端値を含む0〜31の範囲内のiのすべての値についてのgeneral_profile_compatibility_flag[i]シンタックス要素との解釈のためのコンテキストを指定する。general_profile_spaceシンタックス要素が0に等しいとき、general_profile_idcシンタックス要素は、CVSが準拠するプロファイルを示す。HEVCワーキングドラフト8のアネックスAは、プロファイルの例示的なセットについて説明している。general_profile_spaceシンタックス要素が0に等しく、general_profile_compatibility_flag[i]シンタックス要素が1に等しいとき、general_profile_compatibility_flag[i]シンタックス要素は、CVSが、iに等しいgeneral_profile_idcシンタックス要素によって示されたプロファイルに準拠することを示す。general_profile_spaceシンタックス要素が0に等しいとき、general_profile_idc[general_profile_idc]は1に等しい。「general_profile_idc[general_profile_idc]」は、general_profile_idcシンタックス要素によって指定されたインデックス値に関連するgeneral_profile_idcシンタックス要素を示す。いくつかの例では、general_profile_compatibility_flag[i]シンタックス要素は、general_profile_idcの許容値として指定されていないiの任意の値について、0に等しい。HEVCワーキングドラフト8のアネックスAは、general_profile_idcシンタックス要素の許容値の例示的なセットを指定している。general_reserved_zero_16bitsシンタックス要素は、ビットストリーム中で0に等しい。general_reserved_zero_16bitsシンタックス要素のいくつかの値は、HEVCの拡張のために使用され得る。
[0155]さらに、VPSは、general_tier_flagシンタックス要素とgeneral_level_idcシンタックス要素とを含むprofile_tier_levelシンタックス構造を含み得る。general_tier_flagシンタックス要素は、general_level_idcシンタックス要素の解釈のためのティアコンテキストを指定する。general_level_idcシンタックス要素は、CVSが準拠するレベルを示す。HEVCワーキングドラフト8のアネックスAは、general_tier_flagシンタックス要素によって指定されたティアコンテキストに基づくgeneral_level_idcシンタックス要素の例示的な解釈を指定している。
[0156]上記に与えたHEVCデコーダ構成記録の例示的なシンタックスでは、profile_space、tier_flag、profile_idc、profile_compatibility_indications、constraint_indicator_flags、およびlevel_idc要素は、それぞれ、このHEVCデコーダ構成記録が適用されるストリームについて、ISO/IEC23008−2において定義されているように、シンタックス要素general_profile_space、general_tier_flag、general_profile_idc、両端値を含む0〜31にわたるiについてのgeneral_profile_compatibility_flag[i]、general_reserved_zero_16bits、およびgeneral_level_idcのための整合値を含んでいる。
[0157]一例では、HEVCデコーダ構成記録のprofile_space、tier_flag、profile_idc、profile_compatibility_indications、constraint_indicator_flags、およびlevel_idc要素の値は、(ストリームのすべてのパラメータセットまたはすべてのパラメータセットと呼ばれる)HEVCデコーダ構成記録によって記述されたストリームが復号されるときにアクティブにされるすべてのパラメータセットについて有効でなければならない。言い換えれば、この例では、HEVCデコーダ構成記録のprofile_space、tier_flag、profile_idc、profile_compatibility_indications、constraint_indicator_flags、およびlevel_idc要素の値は、HEVCデコーダ構成記録によって記述されたストリームが復号されるときにアクティブにされるパラメータセット中の対応するシンタックス要素の値を正しく記述しなければならない。
[0158]たとえば、ストリームが復号されるときにアクティブにされるVPSの各々中のgeneral_profile_spaceシンタックス要素は、profile_space要素の値に等しい値を有し得る。言い換えれば、すべてのパラメータセット中のprofile_space要素の値は等しくなければならない。したがって、HEVCデコーダ構成記録はプロファイル空間要素(たとえば、profile_space要素)を含み得る。HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル空間フラグシンタックス要素(たとえば、general_profile_spaceシンタックス要素)は、プロファイル空間要素の値に一致する値を有し得る。
[0159]さらに、この例では、ティア指示(たとえば、tier_flag)は、HEVCデコーダ構成記録によって記述されたストリームが復号されるときにアクティブにされるすべてのパラメータセット中に示される最も高いティアに等しいかまたはそれよりも大きいティアを示さなければならない。したがって、HEVCデコーダ構成記録はティアフラグ要素(たとえば、tier_flag要素)を含み得る。デバイスは、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般ティアフラグシンタックス要素(たとえば、general_tier_flagシンタックス要素)が、ティアフラグ要素の値に一致する値を有することを判断し得る。一般ティアフラグシンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す一般レベルインジケータシンタックス要素の解釈のためのティアコンテキストを示し得る。
[0160]この例では、レベル指示要素(たとえば、level_idc)は、すべてのパラメータセット中の最も高いティアについて示される最高レベルに等しいかまたはそれよりも大きい能力のレベルを示さなければならない。したがって、HEVCデコーダ構成記録はレベルインジケータ要素(たとえば、level_idc要素)を含み得る。デバイスは、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般レベル指示シンタックス要素(たとえば、general_level_idcシンタックス要素)が、レベル要素の値に一致する値を有することを判断し得る。一般レベル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示し得る。
[0161]この例では、プロファイル指示要素(たとえば、profile_idc)は、HEVCデコーダ構成記録に関連付けられたストリームが準拠するプロファイルを示さなければならない。したがって、HEVCデコーダ構成記録はプロファイルインジケータ要素(たとえば、profile_idc要素)を含み得る。デバイスは、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるパラメータセット中のすべてのプロファイル指示シンタックス要素(たとえば、profile_idcシンタックス要素)が、プロファイル指示要素の値に一致する値を有することを判断し得る。プロファイル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するプロファイルを示し得る。
[0162]profile_compatibility_indications要素中の各ビットは、すべてのパラメータセットがそのビットを設定する場合のみ、設定され得る。したがって、HEVCデコーダ構成記録はプロファイル互換性指示要素(たとえば、profile_compatibility_indications要素)を含み得る。デバイスは、HEVCデコーダ構成記録が適用可能であるストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル互換性フラグシンタックス要素(たとえば、general_profile_compatibility_flagシンタックス要素)が、プロファイル互換性指示要素の値に一致する値を有することを判断し得る。
[0163]さらに、HEVCデコーダ構成記録は制約インジケータフラグ要素(たとえば、constraint_indicator_flags要素)を含み得る。デバイスは、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般予約済みゼロ16ビットシンタックス要素(たとえば、general_reserved_zero_16ビットシンタックス要素)が、プロファイル互換性指示要素の値に一致する値を有することを判断し得る。
[0164]HEVCデコーダ構成記録がprofile_space、tier_flag、profile_idc、profile_compatibility_indications、constraint_indicator_flags、およびlevel_idc要素を指定するので、デバイス(たとえば、ビデオデコーダ30)は、ストリームをパースすることなしにストリームの対応する特性を判断することが可能であり得る。むしろ、デバイスは、ストリームに適用されたHEVCデコーダ構成記録を検査することによって、ストリームの対応する特性を判断し得る。
[0165]ストリームのSPSが異なるプロファイルでマークされた場合、ストリームは、もしあれば、ストリーム全体が準拠するプロファイルを判断するための検査を必要とし得る。ストリーム全体が検査されない場合、またはストリーム全体が準拠するプロファイルがないことが検査で明らかになる場合、この例では、ストリーム全体は、これらの規則が満たされ得る別々の構成記録(たとえば、HEVCデコーダ構成記録)を伴う2つ以上のサブストリームに分割されなければならない。
[0166]HEVCデコーダ構成記録は、クロマフォーマットおよびビット深度ならびにHEVCビデオエレメンタリストリームによって使用される他のフォーマット情報に関する明示的指示を与え得る。エレメンタリストリームは、1つまたは複数のビットストリームのシーケンスを備え得る。エレメンタリストリームが複数のビットストリームを含んでいる場合、最後のビットストリームを除くビットストリームの各々は、ビットストリーム終了(EOS:end of bitstream)NALユニットとともに終了する。
[0167]いくつかの例では、そのような情報の各タイプは、存在する場合、単一のHEVCデコーダ構成記録中のすべてのパラメータセットにおいて等しくなければならない。任意のタイプのそのような情報において2つのシーケンスが異なる場合、ビデオプロセッサは、2つの異なるHEVCデコーダ構成記録を生成するように要求され得る。2つのシーケンスがそれらのビデオユーザビリティ情報(VUI:video usability information)中の色空間指示において異なる場合、ビデオプロセッサ(たとえば、ビデオエンコーダ20または別のデバイス)は、2つの異なるHEVCデコーダ構成記録を生成するようにレクレ(requre)され得る。HEVCでは、SPSは、VUIシンタックス要素を含んでいるVUIシンタックス構造を含み得る。
[0168]上記で説明したHEVCデコーダ構成記録のための例示的なシンタックスでは、chromaFormat要素は、このHEVCデコーダ構成記録が適用されるストリームのために、ISO/IEC23008−2(すなわち、HEVC)におけるchroma_format_idcシンタックス要素によって定義されたchroma_formatインジケータを含んでいる。SPSのchroma_format_idcシンタックス要素はクロマサンプリングを指定し得る。HEVCワーキングドラフト8では、chroma_format_idcシンタックス要素は、HEVCワーキングドラフト8の第6.2節において指定されたルーマサンプリングに対してクロマサンプリングを指定する。現在ピクチャのためにアクティブにされるSPSのchroma_format_idcシンタックス要素が0に等しい場合、現在ピクチャは1つのサンプルアレイ(たとえば、SL)からなり得る。そうではなく、chroma_format_idcシンタックス要素が0に等しくない場合、現在ピクチャは3つのサンプルアレイ(たとえば、SL、SCb、およびSCr)を備え得る。
[0169]上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、bitDepthLumaMinus8要素は、このHEVCデコーダ構成記録が適用されるストリームのために、ISO/IEC23008−2におけるbit_depth_luma_minus8シンタックス要素によって定義されたルーマビット深度インジケータを含んでいる。bitDepthChromaMinus8要素は、この構成記録が適用されるストリームのために、ISO/IEC23008−2におけるbit_depth_chroma_minus8シンタックス要素によって定義されたクロマビット深度インジケータを含んでいることがある。サンプル値(たとえば、ルーマサンプルまたはクロマサンプル)のビット深度は、そのサンプル値を表すためにどのくらいのビットが使用されるかを示し得る。
[0170]さらに、上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、avgFrameRate要素は、HEVCデコーダ構成記録が適用されるストリームのために、フレーム/(256秒)の単位で平均フレームレートを与える。0に等しいvalueを有するavgFramRate要素は、指定されていない平均フレームレートを示し得る。
[0171]上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、1に等しいconstantFrameRate要素は、このHEVCデコーダ構成記録が適用されるストリームが一定のフレームレートであることを示し得る。2に等しいconstantFrameRate要素は、ストリーム中の各時間レイヤの表現が一定のフレームレートであることを示し得る。0に等しいconstantFrameRate要素は、ストリームが一定のフレームレートであることもそうでないこともあり得ることを示す。
[0172]さらに、上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、numTemporalLayers要素は、HEVCデコーダ構成記録が適用されるストリームが時間的にスケーラブルであるかどうか、および(ISO/IEC23008−2では時間サブレイヤまたはサブレイヤとも呼ばれる)時間レイヤの含有数がnumTemporalLayersに等しいかどうかを示し得る。たとえば、1より大きいnumTemporalLayersシンタックス要素は、このHEVCデコーダ構成記録が適用されるストリームが時間的にスケーラブルであり、時間レイヤの含有数がnumTemporalLayersに等しいことを示し得る。この例では、1に等しいnumTemporalLayers要素は、ストリームが時間的にスケーラブルでないことを示し得る。さらに、この例では、0に等しいnumTemporalLayers要素は、ストリームが時間的にスケーラブルであるかどうかが不明であることを示し得る。
[0173]上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、temporalIdNested要素は、HEVCデコーダ構成記録がそれに適用されたストリームがときにアクティブにされるすべてのSPSが、0に等しいsps_temporal_id_nesting_flagシンタックス要素を有するかどうかを示し得る。たとえば、1に等しいtemporalIdNested要素は、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、1に等しくISO/IEC23008−2において定義されているsps_temporal_id_nesting_flagシンタックス要素を有することを示し得、いずれかのサンプルにおいていずれかの上位時間レイヤへの時間サブレイヤアップスイッチングが実行され得る。この例では、0に等しいtemporalIdNested要素は、HEVCデコーダ構成記録が適用されたストリームが復号されるときにアクティブにされるSPSのうちの少なくとも1つが、0に等しいsps_temporal_id_nesting_flagシンタックス要素を有することを示し得る。
[0174]このようにして、デバイスは、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成し得る。そのファイルは、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すsps_temporal_id_nesting_flagシンタックス要素を有するかどうかを示す要素を含む記録を含むボックスをも含んでいる。
[0175]上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、lengthSizeMinusOne要素+1は、HEVCデコーダ構成記録が適用されるストリーム中のHEVCビデオサンプル中のNALUnitLengthフィールドのバイトでの長さを示す。たとえば、1バイトのサイズは、0の値で示され得る。このフィールドの値は、1、2、または4バイトでそれぞれ符号化される長さに対応する、0、1、または3のうちの1つになることになる。
[0176]さらに、HEVCデコーダ構成は、初期化NALユニットを搬送するアレイのセットを含んでいることがある。言い換えれば、HEVCデコーダ構成記録中に、初期化NALユニットを搬送するためのアレイのセットがある。HEVCデコーダ構成記録中のNALユニットタイプは、VPS、SPS、PPS、およびSEIメッセージを含んでいるNALユニットに制限され得る。HEVCワーキングドラフト8および本開示は、いくつかの予約済みNALユニットタイプを提供する。将来において、そのような予約済みNALユニットタイプは、HEVCへの拡張を実装するために定義され得る。言い換えれば、ISO/IEC23008−2においておよびこの仕様において予約済みであるNALユニットタイプは、将来における定義を獲得し得る。いくつかの例では、リーダー(たとえば、HEVCデコーダ構成記録を受信し、処理するデバイス)は、予約済みまたは非許可のNALユニットタイプ値をもつNALユニットのアレイを無視しなければならない。予約済みまたは非許可のNALユニットタイプ値をもつNALユニットのアレイを無視するこの「トレラント」挙動は、エラーが起こらず、それによって、将来の仕様においてこれらのアレイへの後方互換性がある拡張の可能性を可能にするように設計される。いくつかの例では、アレイは、VPS、SPS、PPS、およびSEIの順序であり得る。他の例では、アレイは、HEVCデコーダ構成記録内でサイズによって順序付けられ得る。たとえば、アレイは、HEVCデコーダ構成記録内で、より小さいアレイがより大きいアレイの前に生じるように順序付けられ得る。
[0177]さらに、上記に与えたHEVCデコーダ構成記録のための例示的なシンタックスでは、numArrays要素は、示された(1つまたは複数の)タイプのNALユニットのアレイの数を示す。HEVCデコーダ構成記録のarray_completeness要素は、ストリームが、HEVCデコーダ構成記録中のアレイ中にある所与のタイプのNALユニットに加えて、その所与のタイプのそれらのNALユニットを含み得るかどうかを示し得る。たとえば、1に等しいarray_completeness要素は、所与のタイプのすべてのNALユニットがHEVCデコーダ構成記録中のNALユニットのアレイ中にあり、いずれもストリーム中にないことを示し得る。0に等しいarray_completeness要素は、示されたタイプの追加のNALユニットがストリーム中にあり得ることを示す。array_completeness要素のデフォルト値および許容値は、サンプルエントリコードによって制約され得る。
[0178]さらに、上記に与えたHEVCデコーダ構成記録の例示的なシンタックスでは、NAL_unit_type要素は、NALユニットのアレイ中のNALユニットのタイプを示す。この例では、アレイ中のNALユニットのすべてが、NAL_unit_type要素によって指定されたタイプに属しなければならない。NAL_unit_type要素は、ISO/IEC23008−2において定義されている値を取り得る。いくつかの例では、NAL_unit_type要素は、VPS、SPS、PPS、またはSEI NALユニットを示す値のうちの1つを取るように制限される。
[0179]上記に与えた例示的なHEVCデコーダ構成記録シンタックスでは、numNalus要素は、このHEVCデコーダ構成記録が適用されるストリームのためにHEVCデコーダ構成記録中に含まれる、示されたタイプのNALユニットの数を示す。いくつかの例では、HEVCデコーダ構成記録のNAL_unit_type要素は、HEVCデコーダ構成記録がSEIアレイ(すなわち、SEI NALユニットのアレイ)を含むことを示し得る。たとえば、そのような例では、numNalusが4に等しい場合、SEIアレイは4つのSEI NALユニットからなり得る。さらに、いくつかのそのような例では、SEIアレイは、「宣言的」性質のSEIメッセージのみを含んでいなければならない。すなわち、SEIアレイは、全体としてストリームに関する情報を与えるSEIメッセージのみを含んでいることがある。「宣言的」性質のSEIメッセージの一例は、ユーザデータSEIメッセージである。
[0180]さらに、上記に与えたHEVCデコーダ構成記録の例示的なシンタックスでは、HEVCデコーダ構成記録のnalUnitLength要素は、NALユニットのバイトでの長さを示す。HEVCデコーダ構成記録のnalUnit要素は、ISO/IEC23008−2において指定されているように、VPS、SPS、PPS、または宣言的SEI NALユニットを含んでいることがある。
[0181]図4は、本開示の1つまたは複数の技法による例示的な動作200を示すフローチャートである。図4の例では、第1のデバイス(たとえば、ビデオエンコーダ20または別のデバイス)がファイルを生成する(202)。ファイルは、複数のサンプルの中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別するコード化ピクチャボックスを含んでいる複数のサンプルを備える。ボックスは、サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示す。
[0182]さらに、図4の例では、第2のデバイス(たとえば、ビデオデコーダ30または別のデバイス)が、サンプルグループを識別するボックス中のデータに基づいて、ボックスを含んでいるファイル中のサンプルの中からSTSAサンプルを識別する(204)。
[0183]図5は、本開示の1つまたは複数の追加の技法による例示的な動作250を示すフローチャートである。図5の例では、第1のデバイス(たとえば、ビデオエンコーダ20または別のデバイス)が、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成する(252)。そのファイルは、サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含むサンプルエントリをも含み得る。
[0184]さらに、図5の例では、第2のデバイス(たとえば、ビデオデコーダ30または別のデバイス)は、ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのサンプルエントリ中の要素に基づいて、記録が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断する(254)。
[0185]図6は、本開示の1つまたは複数の技法による、ファイル300の例示的な構造を示す概念図である。図6の例では、ファイル300は、ムービーボックス302と、複数のメディアデータボックス304とを含む。メディアデータボックス304の各々は、1つまたは複数のサンプル305を含み得る。さらに、図6の例では、ムービーボックス302はトラックボックス306を含む。他の例では、ムービーボックス302は、異なるトラックのために複数のトラックボックスを含み得る。トラックボックス306はサンプルテーブルボックス308を含む。サンプルテーブルボックス308は、SampleToGroupボックス310と、SampleGroupDescriptionボックス312と、HEVCデコーダ構成記録314とを含む。他の例では、サンプルテーブルボックス308は、SampleToGroupボックス310およびSampleGroupDescriptionボックス312に加えて他のボックスを含み得、および/または複数のSampleToGroupボックスおよびSampleGroupDescriptionボックスを含み得る。
[0186]本開示の1つまたは複数の例示的な技法によれば、SampleToGroupボックス310は、サンプル305の中からの1つまたは複数のサンプルを含んでいるサンプルグループを識別し得る。SampleToGroupボックス310は、サンプルグループ中の各サンプルがSTSAサンプルであることをさらに示し得る。したがって、デバイスは、SampleToGroupボックス310中のデータに基づいて、ファイル300中のサンプル305の中からSTSAサンプルを識別し得る。本開示の1つまたは複数の追加の例示的な技法によれば、SampleToGroupボックス310は、サンプルグループ中の各サンプルがイントラサンプルであることを示し得る。したがって、デバイスは、SampleToGroupボックス310中のデータに基づいて、ファイル300中のサンプル305の中からイントラサンプルを識別し得る。
[0187]本開示の1つまたは複数の追加の例示的な技法によれば、HEVCデコーダ構成記録314は、HEVCデコーダ構成記録314が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含み得る。したがって、デバイスは、ビデオデータのコード化ピクチャを含んでいるサンプル305を含んでいるファイル300のサンプルテーブルボックス308中のHEVCデコーダ構成記録314中の要素に基づいて、HEVCデコーダ構成記録314が適用されたストリームが復号されるときにアクティブにされるすべてのSPSが、それらのSPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断し得る。
[0188]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0189]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0190]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
[0191]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0192]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを処理する方法であって、前記方法は、前記ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのサンプルエントリ中の要素に基づいて、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断することを備える、方法。
[C2] 前記SPSのうちの1つに関連付けられたサンプルにおいて時間アップスイッチングを実行することをさらに備える、C1に記載の方法。
[C3] 前記要素が、前記サンプルエントリ中にあるデコーダ構成記録中にある、C1に記載の方法。
[C4] 第1の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることを示し、
第2の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることが保証されないことを示す、
C1に記載の方法。
[C5] 前記シンタックス要素がsps_temporal_id_nesting_flagシンタックス要素である、C1に記載の方法。
[C6] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル空間要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル空間フラグシンタックス要素が、前記プロファイル空間要素の値に一致する値を有することを判断することをさらに備える、
C1に記載の方法。
[C7] 前記要素が第1の要素であり、
前記サンプルエントリがティアフラグ要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般ティアフラグシンタックス要素が、前記ティアフラグ要素の値に一致する値を有することを判断することをさらに備え、ここにおいて、前記一般ティアフラグシンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す一般レベルインジケータシンタックス要素の解釈のためのティアコンテキストを示す、
C1に記載の方法。
[C8] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイルインジケータ要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべてのプロファイル指示シンタックス要素が、前記プロファイル指示要素の値に一致する値を有することを判断することをさらに備え、ここにおいて、前記プロファイル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するプロファイルを示す、
C1に記載の方法。
[C9] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル互換性指示要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル互換性フラグシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有することを判断することをさらに備える、
C1に記載の方法。
[C10] 前記要素が第1の要素であり、
前記サンプルエントリが制約インジケータフラグ要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般予約済みゼロ16ビットシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有することを判断することをさらに備える、
C1に記載の方法。
[C11] 前記要素が第1の要素であり、
前記サンプルエントリがレベルインジケータ要素を含み、
前記方法は、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般レベル指示シンタックス要素が、前記レベル要素の値に一致する値を有することを判断することをさらに備え、ここにおいて、前記一般レベル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す、
C1に記載の方法。
[C12] コード化ビデオデータを記憶する方法であって、前記方法は、前記ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成することを備え、前記ファイルは、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含むサンプルエントリをも含む、方法。
[C13] 前記要素が、前記サンプルエントリ中にあるデコーダ構成記録中にある、C12に記載の方法。
[C14] 第1の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることを示し、
第2の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることが保証されないことを示す、
C12に記載の方法。
[C15] 前記シンタックス要素がsps_temporal_id_nesting_flagシンタックス要素である、C12に記載の方法。
[C16] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル空間要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル空間フラグシンタックス要素が、前記プロファイル空間要素の値に一致する値を有する、
C12に記載の方法。
[C17] 前記要素が第1の要素であり、
前記サンプルエントリがティアフラグ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般ティアフラグシンタックス要素が、前記ティアフラグ要素の値に一致する値を有し、
前記一般ティアフラグシンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す一般レベルインジケータシンタックス要素の解釈のためのティアコンテキストを示す、
C12に記載の方法。
[C18] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイルインジケータ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべてのプロファイル指示シンタックス要素が、前記プロファイル指示要素の値に一致する値を有し、
前記プロファイル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するプロファイルを示す、
C12に記載の方法。
[C19] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル互換性指示要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル互換性フラグシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有する、
C12に記載の方法。
[C20] 前記要素が第1の要素であり、
前記サンプルエントリが制約インジケータフラグ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般予約済みゼロ16ビットシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有する、
C12に記載の方法。
[C21] 前記要素が第1の要素であり、
前記サンプルエントリがレベルインジケータ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般レベル指示シンタックス要素が、前記レベル要素の値に一致する値を有し、
前記一般レベル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す、
C12に記載の方法。
[C22] ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのサンプルエントリ中の要素に基づいて、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断するように構成された1つまたは複数のプロセッサを備えるデバイス。
[C23] 前記1つまたは複数のプロセッサが、前記SPSのうちの1つに関連付けられたサンプルにおいて時間アップスイッチングを実行するように構成された、C22に記載のデバイス。
[C24] 前記要素が、前記サンプルエントリ中にあるデコーダ構成記録中にある、C22に記載のデバイス。
[C25] 第1の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることを示し、
第2の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることが保証されないことを示す、
C22に記載のデバイス。
[C26] 前記シンタックス要素がsps_temporal_id_nesting_flagシンタックス要素である、C22に記載のデバイス。
[C27] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル空間要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル空間フラグシンタックス要素が、前記プロファイル空間要素の値に一致する値を有することを判断するようにさらに構成された、
C22に記載のデバイス。
[C28] 前記要素が第1の要素であり、
前記サンプルエントリがティアフラグ要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般ティアフラグシンタックス要素が、前記ティアフラグ要素の値に一致する値を有することを判断するようにさらに構成され、
前記一般ティアフラグシンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す一般レベルインジケータシンタックス要素の解釈のためのティアコンテキストを示す、
C22に記載のデバイス。
[C29] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイルインジケータ要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべてのプロファイル指示シンタックス要素が、前記プロファイル指示要素の値に一致する値を有することを判断するようにさらに構成され、
前記プロファイル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するプロファイルを示す、
C22に記載のデバイス。
[C30] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル互換性指示要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル互換性フラグシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有することを判断するようにさらに構成された、
C22に記載のデバイス。
[C31] 前記要素が第1の要素であり、
前記サンプルエントリが制約インジケータフラグ要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般予約済みゼロ16ビットシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有することを判断するようにさらに構成された、
C22に記載のデバイス。
[C32] 前記要素が第1の要素であり、
前記サンプルエントリがレベルインジケータ要素を含み、
前記1つまたは複数のプロセッサは、前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般レベル指示シンタックス要素が、前記レベル要素の値に一致する値を有することを判断するようにさらに構成され、
前記一般レベル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す、
C22に記載のデバイス。
[C33] ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成するように構成された1つまたは複数のプロセッサを備えるデバイスであって、前記ファイルは、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含むサンプルエントリをも含む、デバイス。
[C34] 前記要素が、前記サンプルエントリ中にあるデコーダ構成記録中にある、C33に記載のデバイス。
[C35] 第1の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることを示し、
第2の値を有する前記要素は、いずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが、前記SPSに関連付けられた前記サンプルのいずれかにおいて実行され得ることが保証されないことを示す、
C33に記載のデバイス。
[C36] 前記シンタックス要素がsps_temporal_id_nesting_flagシンタックス要素である、C33に記載のデバイス。
[C37] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル空間要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル空間フラグシンタックス要素が、前記プロファイル空間要素の値に一致する値を有する、
C33に記載のデバイス。
[C38] 前記要素が第1の要素であり、
前記サンプルエントリがティアフラグ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般ティアフラグシンタックス要素が、前記ティアフラグ要素の値に一致する値を有し、
前記一般ティアフラグシンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す一般レベルインジケータシンタックス要素の解釈のためのティアコンテキストを示す、
C33に記載のデバイス。
[C39] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイルインジケータ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべてのプロファイル指示シンタックス要素が、前記プロファイル指示要素の値に一致する値を有し、
前記プロファイル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するプロファイルを示す、
C33に記載のデバイス。
[C40] 前記要素が第1の要素であり、
前記サンプルエントリがプロファイル互換性指示要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般プロファイル互換性フラグシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有する、
C33に記載のデバイス。
[C41] 前記要素が第1の要素であり、
前記サンプルエントリが制約インジケータフラグ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般予約済みゼロ16ビットシンタックス要素が、前記プロファイル互換性指示要素の値に一致する値を有する、
C33に記載のデバイス。
[C42] 前記要素が第1の要素であり、
前記サンプルエントリがレベルインジケータ要素を含み、
前記ストリームが復号されるときにアクティブにされるパラメータセット中のすべての一般レベル指示シンタックス要素が、前記レベル要素の値に一致する値を有し、
前記一般レベル指示シンタックス要素の各々は、コード化ビデオシーケンスが準拠するレベルを示す、
C33に記載のデバイス。
[C43] ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルを受信するための手段と、
前記のサンプルエントリ中の要素に基づいて、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断するための手段と
を備えるデバイス。
[C44] ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成するための手段と、前記ファイルは、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含むサンプルエントリをも含む、
前記ファイルを出力するための手段と
を備えるデバイス。
[C45] 実行されたとき、ビデオデータのコード化ピクチャを含んでいるサンプルを含んでいるファイルのサンプルエントリ中の要素に基づいて、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有することを判断するように1つまたは複数のプロセッサを構成する命令を記憶した非一時的コンピュータ可読記憶媒体。
[C46] 実行されたとき、ビデオデータのコード化ピクチャを含んでいるコード化サンプルを記憶するファイルを生成するように1つまたは複数のプロセッサを構成する命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記ファイルは、前記サンプルエントリが適用されたストリームが復号されるときにアクティブにされるすべてのシーケンスパラメータセット(SPS)が、前記SPSに関連付けられたいずれかのサンプルにおいていずれかの上位時間サブレイヤへの時間サブレイヤアップスイッチングが実行され得ることを示すシンタックス要素を有するかどうかを示す要素を含むサンプルエントリをも含む、非一時的コンピュータ可読記憶媒体。