発明の詳細な説明
[背景技術]
電子デバイスは、消費者ニーズを満たし、可搬性および便利さを改善するために、より小さく、より強力になった。消費者は、電子デバイスに依存するようになり、機能性の向上を期待するようになった。電子デバイスのいくつかの例は、デスクトップコンピュータ、ラップトップコンピュータ、セルラーフォン、スマートフォン、メディアプレーヤ、集積回路などを含む。
いくつかの電子デバイスは、デジタルメディアを処理して表示するために用いられる。例えば、ポータブル電子デバイスは、今や消費者がいるほとんどどの場所でもデジタルメディアを用いることを可能にする。そのうえ、いくつかの電子デバイスは、消費者が用いて楽しむためのデジタルメディア・コンテンツのダウンロードまたはストリーミングを提供する。
デジタルメディアの人気の高まりは、いくつかの問題を提起した。例えば、高品質デジタルメディアを記憶、送信および迅速な再生のために効率的に表現することがいくつかの課題を提起する。この考察から気付きうるように、デジタルメディアを性能向上によって効率的に表現するシステムおよび方法が有益である。
本発明の前述および他の目的、特徴、ならびに利点は、本発明の以下の詳細な記載を添付図面と併せて考察したときにさらに容易に理解されるであろう。
[発明の概要]
[課題を解決するための手段]
本発明の一実施形態は、ピクチャを含むビデオシーケンスを復号するための方法を開示し、方法は、
(a)前記ビデオシーケンスを受信するステップと、
(b)前記ビデオシーケンスのための出力レイヤセットの数を確定するステップと、
(c)前記少なくとも1つの前記出力レイヤセットのうちの少なくとも1つに関してサブレイヤの最大数−1を確定するステップと、
(d)前記少なくとも1つの前記出力レイヤセットのうちの1つのサブレイヤに関して復号ピクチャバッファの特性を復号するステップと
を備える。
[図面の簡単な説明]
[図1A]メッセージを送信し、ビットストリームをバッファリングするためのシステムおよび方法が実装された1つ以上の電子デバイスの例を示すブロック図である。
[図1B]メッセージを送信し、ビットストリームをバッファリングするためのシステムおよび方法が実装された1つ以上の電子デバイスの例を示す別のブロック図である。
[図2A]電子デバイス上のエンコーダ604の一構成を示すブロック図である。
[図2B]電子デバイス上のエンコーダ604の一構成を示す別のブロック図である。
[図3A]電子デバイス上のデコーダの一構成を示すブロック図である。
[図3B]電子デバイス上のデコーダの一構成を示す別のブロック図である。
[図4]復号ピクチャバッファの動作のための方法の一構成を示すブロック図である。
[図5A]異なるNALユニットヘッダ・シンタックスを示す。
[図5B]異なるNALユニットヘッダ・シンタックスを示す。
[図5C]異なるNALユニットヘッダ・シンタックスを示す。
[図6]一般的なNALユニット・シンタックスを示す。
[図6A]例示的なビデオパラメータ拡張シンタックスを示す。
[図6B]例示的なビデオパラメータ拡張シンタックスを示す。
[図6X]例示的なビデオパラメータ拡張シンタックスを示す。
[図7A]例示的なop_dpb_info_parameters(j)シンタックスを示す。
[図7B]例示的なop_dpb_info_parameters(j)シンタックスを示す。
[図8]別の例示的なビデオパラメータ拡張シンタックスを示す。
[図9]例示的なoop_dpb_info_parameters(j)シンタックスを示す。
[図10]別の例示的なoop_dpb_info_parameters(j)シンタックスを示す。
[図11]例示的なnum_dpb_info_parametersシンタックスを示す。
[図12]別の例示的なoop_dpb_info_parameters(j)シンタックスを示す。
[図13]別の例示的なnum_dpb_info_parametersシンタックスを示す。
[図14]別の例示的なnum_dpb_info_parametersシンタックスを示す。
[図15]別の例示的なビデオパラメータ拡張シンタックスおよびlayer_dpb_info(i)を示す。
[図16]例示的なoop_dpb_info_parametersおよびlayer_dpb_info(i)シンタックスを示す。
[発明を実施するための形態]
図1Aは、1つ以上の電子デバイス102の例を示すブロック図である。この例では、電子デバイスA 102aおよび電子デバイスB 102bが示されるが、所望により、いずれかが省略されてもよい。しかしながら、留意すべきは、電子デバイスA 102aおよび電子デバイスB 102bに関して記載される特徴および機能性の1つ以上がいくつかの構成では単一の電子デバイスに組み合わされてもよいことである。
電子デバイスA 102aは、エンコーダ104を含む。エンコーダ104は、メッセージ発生モジュール108を含む。電子デバイスA 102a内に含まれるそれぞれの要素(例えば、エンコーダ104およびメッセージ発生モジュール108)は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。
電子デバイスA 102aは、1つ以上の入力ピクチャ106を取得する。いくつかの構成において、入力ピクチャ(単数または複数)106は、イメージセンサを用いて電子デバイスA 102a上に取り込まれてもよく、メモリから読み出されてもよく、および/または別の電子デバイスから受信されてもよい。
エンコーダ104は、符号化データを生成するために入力ピクチャ(単数または複数)106を符号化する。例えば、エンコーダ104は、一連の入力ピクチャ106(例えば、ビデオ)を符号化する。一構成において、エンコーダ104は、HEVCエンコーダであってもよい。符号化データは、デジタルデータ(例えば、ビットストリーム114の一部)であってもよい。エンコーダ104は、入力信号に基づいてオーバーヘッド・シグナリングを発生させる。
メッセージ発生モジュール108は、1つ以上のメッセージを発生させる。例えば、メッセージ発生モジュール108は、1つ以上のSEIメッセージまたは他のメッセージを発生させる。サブピクチャ・レベルの動作がサポートされるCPBに関しては、電子デバイス102がサブピクチャ・パラメータ(例えば、CPBリムーバル遅延パラメータ)を送信する。具体的には、電子デバイス102(例えば、エンコーダ104)がピクチャ・タイミングSEIメッセージ中に共通復号ユニットCPBリムーバル遅延パラメータを含めるべきかどうかを判定する。例えば、エンコーダ104がピクチャ・タイミングSEIメッセージ中に共通復号ユニットCPBリムーバル遅延パラメータ(例えば、common_du_cpb_removal_delay)を含めるとき、電子デバイスは、フラグ(例えば、common_du_cpb_removal_delay_flag)を1にセットする。共通復号ユニットCPBリムーバル遅延パラメータが含まれるときに、電子デバイスは、アクセスユニット中のすべての復号ユニットに適用可能な共通復号ユニットCPBリムーバル遅延パラメータを発生させる。言い換えれば、アクセスユニット中の復号ユニットごとに復号ユニットCPBリムーバル遅延パラメータを含めるのではなく、ピクチャ・タイミングSEIメッセージが関連付けられるアクセスユニット中のすべての復号ユニットに対して共通パラメータが適用される。
対照的に、ピクチャ・タイミングSEIメッセージ中に共通復号ユニットCPBリムーバル遅延パラメータが含まれないとき、電子デバイス102は、ピクチャ・タイミングSEIメッセージが関連付けられるアクセスユニット中の復号ユニットごとに別々の復号ユニットCPBリムーバル遅延を発生させる。
いくつかの構成において、電子デバイスA 102aは、メッセージをビットストリーム114の一部として電子デバイスB 102bへ送信してもよい。いくつかの構成において、電子デバイスA 102aは、メッセージを別個の送信110によって電子デバイスB 102bへ送信してもよい。例えば、別個の送信は、ビットストリーム114の一部でなくてもよい。例として、ピクチャ・タイミングSEIメッセージまたは他のメッセージが何らかの帯域外メカニズムを用いて送信されてもよい。いくつかの構成において、他のメッセージが上記のピクチャ・タイミングSEIメッセージの特徴のうちの1つ以上を含みうることに留意すべきである。そのうえ、他のメッセージは、1つ以上の態様において、上記のSEIメッセージと同様に活用されもよい。
エンコーダ104(および、例えば、メッセージ発生モジュール108)は、ビットストリーム114を生成する。ビットストリーム114は、入力ピクチャ(単数または複数)106に基づく符号化ピクチャデータを含む。いくつかの構成において、ビットストリーム114は、オーバーヘッドデータ、例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ、スライスヘッダ(単数または複数)、PPS(単数または複数)なども含む。追加の入力ピクチャ106が符号化されたときに、ビットストリーム114は、1つ以上の符号化ピクチャを含む。例として、ビットストリーム114は、対応するオーバーヘッドデータ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)をもつ1つ以上の符号化ピクチャを含む。
ビットストリーム114は、デコーダ112へ供給される。一例では、ビットストリーム114は、有線または無線リンクを用いて電子デバイスB 102bへ送信される。いくつかのケースでは、これは、ネットワーク、例えば、インターネットまたはローカルエリアネットワーク(LAN:Local Area Network)を通じて行われる。図1Aに示されるように、デコーダ112は、電子デバイス A102a上のエンコーダ104とは分離して電子デバイスB 102b上に実装されてもよい。しかしながら、留意すべきは、エンコーダ104およびデコーダ112がいくつかの構成では同じ電子デバイス上に実装されてもよいことである。例として、エンコーダ104およびデコーダ112が同じ電子デバイス上に実装される実装においては、ビットストリーム114がバスを通じてデコーダ112へ供給されてもよく、またはデコーダ112による読み出しのためにメモリに記憶されてもよい。
デコーダ112は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。一構成において、デコーダ112は、HEVCデコーダであってもよい。デコーダ112は、ビットストリーム114を受信する(例えば、取得する)。デコーダ112は、ビットストリーム114に基づいて1つ以上の復号ピクチャ118を発生させる。復号ピクチャ(単数または複数)118は、表示される、再生される、メモリに記憶されるか、および/または別のデバイスへ送信されるなどである。
デコーダ112は、CPB120を含む。CPB120は、符号化ピクチャを一時的に記憶する。CPB120は、データをいつ取り出すべきかを確定するために、ピクチャ・タイミングSEIメッセージ中で見出されたパラメータを用いる。CPB120がサブピクチャ・レベルの動作をサポートするときには、一度にアクセスユニット全体ではなく、個々の復号ユニットが取り出されてもよい。デコーダ112は、復号ピクチャバッファ(DPB:Decoded Picture Buffer)122を含む。各復号ピクチャは、復号処理によって参照されるため、ならびに出力およびクロッピングのためにDPB122中に置かれる。復号ピクチャは、DPB出力時刻か、または復号ピクチャが予測間参照のためにもはや必要とされなくなる時刻のうちの後の方でDPBから取り出される。
デコーダ112は、メッセージ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)を受信する。デコーダ112は、さらに、受信したメッセージが共通復号ユニットCPBリムーバル遅延パラメータ(例えば、common_du_cpb_removal_delay)を含むかどうかを確定する。これは、共通パラメータがピクチャ・タイミングSEIメッセージ中に存在するときにセットされるフラグ(例えば、common_du_cpb_removal_delay_flag)を識別することを含む。共通パラメータが存在すれば、デコーダ112は、アクセスユニット中のすべての復号ユニットに適用可能な共通復号ユニットCPBリムーバル遅延パラメータを確定する。共通パラメータが存在しなければ、デコーダ112は、アクセスユニット中の復号ユニットごとに別々の復号ユニットCPBリムーバル遅延パラメータを確定する。デコーダ112は、さらに、共通復号ユニットCPBリムーバル遅延パラメータまたは別々の復号ユニットCPBリムーバル遅延パラメータのいずれかを用いてCPB120から復号ユニットを取り出す。
復号ピクチャバッファ(DPB)122は、異なる特性を有する復号ピクチャのために別々に識別され、管理される複数のピクチャバッファを含んでもよい。例えば、復号ピクチャバッファ(DPB)122は、異なる解像度、異なるビット深度および/または異なる色度をもつ復号ピクチャのために別々に識別され、管理される複数のピクチャバッファを含んでもよい。
復号ピクチャは、その代わりに、復号ピクチャバッファ(DPB)122における複数のピクチャ記憶バッファの共通プールに記憶されてもよい。例えば、バンピング/リムーバル処理およびレベル定義に影響を及ぼす復号ピクチャバッファ(DPB)122のサイズ制約を確定するために、2つの追加のサブケースが用いられる。バイトに基づく復号ピクチャバッファ(DPB)122の制約では、解像度および/またはビット深度に基づくサイズを考慮して復号ピクチャが記憶される。復号ピクチャバッファ(DPB)122のサイズ制約は、各復号ピクチャの解像度およびビット深度を考慮したバイト制限として定義される。ピクチャ単位に基づく復号ピクチャバッファ(DPB)122の制約では、復号ピクチャが記憶される(かつ1つのピクチャバッファ・スロットを占めると見做される)。復号ピクチャバッファ(DPB)122のサイズ制約は、その場合には各復号ピクチャの解像度およびビット深度を考慮することなくピクチャ・スロット数の制限として定義される。
一構成において、復号ピクチャバッファ(DPB)占有量がレイヤごとに追跡されてもよい。例えば、復号ピクチャバッファ(DPB)122のサイズ制約がシグナリングされて、レイヤごとに、バンピングが適用されてもよい。レイヤ識別子nuh_layer_idをもつ各レイヤがそれ自体のピクチャ記憶バッファを含む場合には、各レイヤの復号ピクチャバッファ(DPB)占有量を追跡するために変数DPBFullness[nuh_layer_id]を用いることができるであろう。nuh_layer_idに等しいレイヤID値をもつレイヤからピクチャが取り出されるときに、変数DPBFullness[nuh_layer_id]は、DPBFullness[nuh_layer_id]−1に等しくセットされる(すなわち、DPBFullness[nuh_layer_id]が1つデクリメントされる)。このケースでは、ピクチャ記憶バッファPSB[nuh_layer_id]からピクチャが取り出された。
同様に、nuh_layer_idに等しいレイヤID値をもつ現復号ピクチャが復号ピクチャバッファ(DPB)122中に記憶されるときには、変数DPBFullness[nuh_layer_id]がDPBFullness[nuh_layer_id]+1に等しくセットされる(すなわち、DPBFullness[nuh_layer_id]が1つインクリメントされる)。このケースでは、ピクチャ記憶バッファPSB[nuh_layer_id]中にピクチャが記憶された。
復号ピクチャバッファ(DPB)占有量を出力レイヤセットに関して追跡することもできるであろう。復号ピクチャバッファ(DPB)122のサイズ制約がその場合にはシグナリングされて、出力レイヤセットに関して指定された制約に基づいて、バンピングが適用される。被テスト動作点と関連付けられた出力レイヤセットに関してDPBFullness値を追跡することもできるであろう。このように、ピクチャが出力レイヤセットに属するレイヤから取り出されるときに、DPBFullness=DPBFullness−1のように復号ピクチャバッファ(DPB)占有量の値が1つデクリメントされる。同様に、現復号ピクチャが復号ピクチャバッファ(DPB)122中に記憶されるときには、DPBFullness=DPBFullness+1のように復号ピクチャバッファ(DPB)占有量が1つデクリメントされる。
上記のHRDは、図1Aに示されるデコーダ112の一例である。このように、電子デバイス102は、いくつかの構成において、上記のHRDおよびCPB120ならびにDPB122に従って動作する。
符号化ピクチャバッファ(CPB)は、仮想参照デコーダ(HRD:hypothetical reference decoder)において指定された復号順にアクセスユニットを含んだ先入れ先出しバッファである。アクセスユニットは、復号順に連続したネットワークアクセスレイヤ(NAL:Network Access Layer)ユニットのセットであり、1つだけの符号化ピクチャを含む。符号化ピクチャの符号化スライスNALユニットに加えて、アクセスユニットは、符号化ピクチャのスライスを含んでいない他のNALユニットも含む。アクセスユニットを復号すると、復号ピクチャを結果として生じる。NALユニットは、後に続くデータのタイプの指標と、そのデータを、必要に応じてエミュレーション防止バイトを点在させた、ロー・バイト・シーケンス・ペイロードの形態で含んだ複数のバイトとを含むシンタックス構造である。
留意すべきは、電子デバイス(単数または複数)102に含まれる要素またはその部分の1つ以上がハードウェアで実装されてもよいことである。例えば、これらの要素またはその部分の1つ以上は、チップ、回路素子またはハードウェア・コンポーネントなどとして実装されてもよい。やはり留意すべきは、本明細書に記載される機能または方法の1つ以上がハードウェアで実装されてもよく、および/またはハードウェアを用いて行われてもよいことである。例えば、本明細書に記載される方法の1つ以上は、チップセット、特定用途向け集積回路(ASIC:Application−Specific Integrated Circuit)、大規模集積回路(LSI:Large−Scale Integrated circuit)または集積回路などで実装されてもよく、および/またはそれらを用いて実現されてもよい。
図1Bは、エンコーダ1908およびデコーダ1972の別の例を示すブロック図である。この例では、電子デバイスA 1902および電子デバイスB 1970が示される。しかしながら、留意すべきは、電子デバイスA 1902および電子デバイスB 1970に関して記載される特徴および機能性がいくつかの構成では単一の電子デバイスに組み合わされてもよいことである。
電子デバイスA 1902は、エンコーダ1908を含む。エンコーダ1908は、ベースレイヤ・エンコーダ1910およびエンハンスメントレイヤ・エンコーダ1920を含む。ビデオエンコーダ1908は、後で記載されるように、スケーラブル・ビデオ符号化およびマルチビュー・ビデオ符号化に適する。エンコーダ1908は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。一構成において、エンコーダ1908は、スケーラブルおよび/またはマルチビューを含めて、高効率ビデオ符号化(HEVC)コーダであってもよい。HEVC仕様は、参照によりその全体が本明細書に組み込まれる、B.ブロス(Bros)、W−J.ハン(Han)、J−R.オーム(Ohm)、G.J.サリバン(Sullivan)、およびT.ウィーガンド(Wiegand)、「高効率ビデオ符号化(HEVC)テキスト仕様草案10(High efficiency video coding(HEVC) text specification draft 10)」、JCTVC−L1003、ジュネーブ、2013年1月を含み、マルチビュー仕様は、参照によりその全体が本明細書に組み込まれる、G.テック(Tech)、K.ウェグナー(Wegner)、Y.チェン(Chen)、M.ハンヌクセラ(Hannuksela)、J・ボイス(Boyce)、「MV−HEVC草案テキスト6(MV−HEVC Draft Text 6)(ISO/IEC23008−2:201x/PDAM2)」、JCT3V−F1004、ジュネーブ、2013年11月を含み、スケーラブル仕様は、参照によりその全体が本明細書に組み込まれる、J.チェン(Chen)、J.ボイス(Boyce)、Y.イエ(Ye)、M.ハンヌクセラ(Hannuksela)、「SHVC草案4(SHVC Draft 4)」、JCTVC−O1008、ジュネーブ、2013年11月を含む。所望により、他のコーダが同様に用いられてもよい。電子デバイスA 1902は、ソース1906を取得する。いくつかの構成において、ソース1906は、イメージセンサを用いて電子デバイスA 1902上に取り込まれても、メモリから読み出されても、または別の電子デバイスから受信されてもよい。
エンコーダ1908は、ベースレイヤ・ビットストリーム1934およびエンハンスメントレイヤ・ビットストリーム1936を生成するためにソース1906を符号化する。例えば、エンコーダ1908は、ソース1906中の一連のピクチャ(例えば、ビデオ)を符号化する。特に、品質スケーラビリティとしても知られるSNRスケーラビリティに関わるスケーラブル・ビデオ符号化のために、ベースレイヤおよびエンハンスメントレイヤ・エンコーダへ同じソース1906が供給される。特に、空間スケーラビリティに関わるスケーラブル・ビデオ符号化のために、ベースレイヤ・エンコーダにはダウンサンプリングされたソースが用いられる。特に、マルチビュー符号化のために、ベースレイヤ・エンコーダおよびエンハンスメントレイヤ・エンコーダには異なるビュー・ソースが用いられる。エンコーダ1908は、図2Bに関連して後で記載されるエンコーダ1782と同様であってもよい。
ビットストリーム1934、1936は、ソース1906に基づく符号化ピクチャデータを含む。いくつかの構成において、ビットストリーム1934、1936は、オーバーヘッドデータ、例えば、スライスヘッダ情報、PPS情報なども含む。ソース1906中の追加のピクチャが符号化されたときに、ビットストリーム1934、1936は、1つ以上の符号化ピクチャを含む。
ビットストリーム1934、1936は、デコーダ1972へ供給される。デコーダ1972は、ベースレイヤ・デコーダ1980およびエンハンスメントレイヤ・デコーダ1990を含む。ビデオデコーダ1972は、スケーラブル・ビデオ復号およびマルチビュー・ビデオ復号に適する。一例では、ビットストリーム1934、1936は、有線または無線リンクを用いて電子デバイスB 1970へ送信される。いくつかのケースでは、これは、ネットワーク、例えば、インターネットまたはローカルエリアネットワーク(LAN:Local Area Network)を通じて行われる。図1Bに示されるように、デコーダ1972は、電子デバイスA 1902上のエンコーダ1908とは分離して電子デバイスB 1970上に実装されてもよい。しかしながら、留意すべきは、エンコーダ1908およびデコーダ1972がいくつかの構成では同じ電子デバイス上に実装されてもよいことである。例として、エンコーダ1908およびデコーダ1972が同じ電子デバイス上に実装される実装では、ビットストリーム1934、1936がバスを通じてデコーダ1972へ供給されてもよく、またはデコーダ1972による読み出しのためにメモリに記憶されてもよい。デコーダ1972は、復号ベースレイヤ1992および復号エンハンスメントレイヤ・ピクチャ(単数または複数)1994を出力として供給する。
デコーダ1972は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。一構成において、デコーダ1972は、スケーラブルおよび/またはマルチビューを含めて、高効率ビデオ符号化(HEVC)デコーダであってもよい。他のデコーダが同様に用いられてもよい。デコーダ1972は、図3Bに関連して後で記載されるデコーダ1812と同様であってもよい。さらに、ベースレイヤ・エンコーダおよび/またはエンハンスメントレイヤ・エンコーダは、図1Aに関して記載されたような、メッセージ発生モジュールをそれぞれが含んでもよい。さらに、ベースレイヤ・デコーダおよび/またはエンハンスメントレイヤ・デコーダは、図1Aに関して記載されたような、符号化ピクチャバッファおよび/または復号ピクチャバッファを含んでもよい。加えて、図1Bの電子デバイスは、場合に応じて、図1Aの電子デバイスの機能に従って動作してもよい。
図2Aは、電子デバイス602上のエンコーダ604の一構成を示すブロック図である。留意すべきは、電子デバイス602内に含まれるとして示される要素の1つ以上がハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよいことである。例えば、電子デバイス602は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよいエンコーダ604を含む。例として、エンコーダ604は、回路、集積回路、特定用途向け集積回路(ASIC)、実行可能な命令をもつメモリと電子通信を行うプロセッサ、ファームウェア、フィールドプログラマブルゲートアレイ(FPGA:field−programmable gate array)など、またはそれらの組み合わせとして実装されてもよい。いくつかの構成において、エンコーダ604は、HEVCコーダであってもよい。
電子デバイス602は、ソース622を含む。ソース622は、ピクチャまたは画像データ(例えば、ビデオ)を1つ以上の入力ピクチャ606としてエンコーダ604へ供給する。ソース622の例は、イメージセンサ、メモリ、通信インターフェース、ネットワークインターフェース、無線受信機、ポートなどを含む。
1つ以上の入力ピクチャ606は、フレーム内予測モジュールおよび再構成バッファ624へ供給される。入力ピクチャ606は、動き推定および動き補償モジュール646へ、そして減算モジュール628へも供給される。
フレーム内予測モジュールおよび再構成バッファ624は、1つ以上の入力ピクチャ606および再構成データ660に基づいてイントラモード情報640およびイントラ信号626を発生させる。動き推定および動き補償モジュール646は、1つ以上の入力ピクチャ606および復号ピクチャバッファ676からの参照ピクチャ678に基づいてインターモード情報648およびインター信号644を発生させる。いくつかの構成において、復号ピクチャバッファ676は、1つ以上の参照ピクチャからのデータを復号ピクチャバッファ676中に含む。
エンコーダ604は、モードに従ってイントラ信号626とインター信号644との間で選択を行う。イントラ信号626は、イントラ符号化モードにおいてピクチャ内の空間的特性を活用するために用いられる。インター信号644は、インター符号化モードにおいてピクチャ間の時間的特性を活用するために用いられる。イントラ符号化モードにある間に、イントラ信号626は、減算モジュール628へ供給され、イントラモード情報640は、エントロピー符号化モジュール642へ供給される。インター符号化モードにある間には、インター信号644が減算モジュール628へ供給され、インターモード情報648がエントロピー符号化モジュール642へ供給される。
減算モジュール628では予測残差630を生成するために(モードに依存して)イントラ信号626またはインター信号644のいずれかが入力ピクチャ606から減算される。予測残差630は、変換モジュール632へ供給される。変換モジュール632は、予測残差630を圧縮して、量子化モジュール636へ供給される変換信号634を生成する。量子化モジュール636は、変換信号634を量子化して、変換および量子化された係数(TQC:transformed and quantized coefficient)638を生成する。
TQC638は、エントロピー符号化モジュール642および逆量子化モジュール650へ供給される。逆量子化モジュール650は、TQC638に対して逆量子化を行い、逆変換モジュール654へ供給される逆量子化された信号652を生成する。逆変換モジュール654は、逆量子化された信号652を展開して、再構成モジュール658へ供給される展開された信号656を生成する。
再構成モジュール658は、展開された信号656に基づいて再構成されたデータ660を生成する。例えば、再構成モジュール658は、(修正された)ピクチャを再構成する。再構成されたデータ660は、デブロッキングフィルタ662へ、ならびにイントラ予測モジュールおよび再構成バッファ624へ供給される。デブロッキングフィルタ662は、再構成されたデータ660に基づいてフィルタされた信号664を生成する。
フィルタされた信号664は、サンプル適応オフセット(SAO:sample adaptive offset)モジュール666へ供給される。SAOモジュール666は、エントロピー符号化モジュール642へ供給されるSAO情報668および適応ループ・フィルタ(ALF:adaptive loop filter)672へ供給されるSAO信号670を生成する。ALF672は、復号ピクチャバッファ676へ供給されるALF信号674を生成する。ALF信号674は、参照ピクチャとして用いられる1つ以上のピクチャからのデータを含む。
エントロピー符号化モジュール642は、TQC638を符号化して、ビットストリームA 614a(例えば、符号化ピクチャデータ)を生成する。例えば、エントロピー符号化モジュール642は、コンテキスト適応型可変長符号化(CAVLC:Context−Adaptive Variable Length Coding)またはコンテキスト適応型2値算術符号化(CABAC:Context−Adaptive Binary Arithmetic Coding)を用いてTQC638を符号化する。特に、エントロピー符号化モジュール642は、イントラモード情報640、インターモード情報648およびSAO情報668のうちの1つ以上に基づいてTQC638を符号化する。ビットストリームA614a(例えば、符号化ピクチャデータ)は、メッセージ発生モジュール608へ供給される。メッセージ発生モジュール608は、図1に関連して記載されたメッセージ発生モジュール108と同様に構成されてもよい。
例えば、メッセージ発生モジュール608は、サブピクチャ・パラメータを含んだメッセージ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)を発生させる。サブピクチャ・パラメータは、復号ユニットに関する1つ以上のリムーバル遅延(例えば、common_du_cpb_removal_delayまたはdu_cpb_removal_delay[i])および1つ以上のNALパラメータ(例えば、common_num_nalus_in_du_minus1またはnum_nalus_in_du_minus1[i])を含む。いくつかの構成において、メッセージは、ビットストリームA 614aに挿入されてビットストリームB 614bを生成する。従って、メッセージは、例えば、ビットストリームA 614a全体が発生した後に(例えば、ビットストリームB 614bの大部分が発生した後に)発生する。他の構成では、メッセージは、ビットストリームA 614aには挿入されない(そのケースではビットストリームB 614bはビットストリームA 614aと同じである)が、別個の送信610で供給される。
いくつかの構成において、電子デバイス602は、ビットストリーム614を別の電子デバイスへ送信する。例えば、ビットストリーム614は、通信インターフェース、ネットワークインターフェース、無線送信機、ポートなどへ供給されてもよい。例として、ビットストリーム614は、LAN、インターネット、セルラーフォン基地局などを通じて別の電子デバイスへ送信されてもよい。加えてまたは代わりに、ビットストリーム614は、電子デバイス602上のメモリまたは他のコンポーネントに記憶されてもよい。
図2Bは、電子デバイス1702上のビデオエンコーダ1782の一構成を示すブロック図である。ビデオエンコーダ1782は、エンハンスメントレイヤ・エンコーダ1706、ベースレイヤ・エンコーダ1709、解像度アップスケーリング・ブロック1770および出力インターフェース1780を含む。例えば、図2Bのビデオエンコーダは、本明細書に記載されるように、スケーラブル・ビデオ符号化およびマルチビュー・ビデオ符号化に適する。
エンハンスメントレイヤ・エンコーダ1706は、入力ピクチャ1704を受信するビデオ入力1781を含む。ビデオ入力1781の出力は、予測選択1750の出力を受信する加算器/減算器1783へ供給される。加算器/減算器1783の出力は、変換および量子化ブロック1752へ供給される。変換および量子化ブロック1752の出力は、エントロピー符号化1748ブロックならびにスケーリングおよび逆変換ブロック1772へ供給される。エントロピー符号化1748が行われた後に、エントロピー符号化ブロック1748の出力は、出力インターフェース1780へ供給される。出力インターフェース1780は、符号化ベースレイヤ・ビデオビットストリーム1707および符号化エンハンスメントレイヤ・ビデオビットストリーム1710の両方を出力する。
スケーリングおよび逆変換ブロック1772の出力は、加算器1779へ供給される。加算器1779は、予測選択1750の出力も受信する。加算器1779の出力は、デブロッキング・ブロック1751へ供給される。デブロッキング・ブロック1751の出力は、参照バッファ1794へ供給される。参照バッファ1794の出力は、動き補償ブロック1754へ供給される。動き補償ブロック1754の出力は、予測選択1750へ供給される。参照バッファ1794の出力は、イントラ予測器1756へも供給される。イントラ予測器1756の出力は、予測選択1750へ供給される。予測選択1750は、解像度アップスケーリング・ブロック1770の出力も受信する。
ベースレイヤ・エンコーダ1709は、ダウンサンプリングされた入力ピクチャ、または別の画像と結合するのに適した他の画像コンテンツか、あるいは代わりのビュー入力ピクチャもしくは同じ(すなわち、エンハンスメントレイヤ・エンコーダ1706によって受信される入力ピクチャ1704と同じ)入力ピクチャ1703を受信するビデオ入力1762を含む。ビデオ入力1762の出力は、符号化予測ループ1764へ供給される。エントロピー符号化1766は、符号化予測ループ1764の出力に対して提供される。符号化予測ループ1764の出力は、参照バッファ1768へも供給される。参照バッファ1768は、符号化予測ループ1764へのフィードバックを提供する。参照バッファ1768の出力は、解像度アップスケーリング・ブロック1770へも供給される。エントロピー符号化1766が一旦行われると、出力が出力インターフェース1780へ供給される。符号化ベースレイヤ・ビデオビットストリーム1707および/または符号化エンハンスメントレイヤ・ビデオビットストリーム1710は、所望により、1つ以上のメッセージ発生モジュールへ供給される。
図3Aは、電子デバイス702上のデコーダ712の一構成を示すブロック図である。デコーダ712は、電子デバイス702に含まれてもよい。例えば、デコーダ712は、HEVCデコーダであってもよい。デコーダ712、およびデコーダ712に含まれるように示される1つ以上の要素は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。デコーダ712は、復号のためのビットストリーム714(例えば、ビットストリーム714に含まれる1つ以上の符号化ピクチャおよびオーバーヘッドデータ)を受信する。いくつかの構成では、受信したビットストリーム714が受信したオーバーヘッドデータ、例えば、メッセージ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)、スライスヘッダ、PPSなどを含んでもよい。いくつかの構成では、デコーダ712が個別の送信710を追加的に受信してもよい。別個の送信710がメッセージ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)を含んでもよい。例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージがビットストリーム714の代わりに個別の送信710で受信されてもよい。しかしながら、留意すべきは、個別の送信710が随意的であり、いくつかの構成では利用できないことである。
デコーダ712は、CPB720を含む。CPB720は、上の図1に関連して記載されたCPB120と同様に構成されてもよい。デコーダ712は、サブピクチャ・パラメータをもつメッセージ(例えば、ピクチャ・タイミングSEIメッセージまたは他のメッセージ)を受信して、サブピクチャ・パラメータに基づいてアクセスユニット中の復号ユニットを取り出して復号する。留意すべきは、ビットストリーム中には1つ以上のアクセスユニットが含まれ、これらのアクセスユニットが符号化ピクチャデータおよびオーバーヘッドデータのうちの1つ以上を含むことである。
符号化ピクチャバッファ(CPB)720は、符号化ピクチャデータをエントロピー復号モジュール701へ供給する。符号化ピクチャデータは、エントロピー復号モジュール701によりエントロピー復号され、それによって動き情報信号703、ならびに量子化、スケーリングおよび/または変換された係数705を生成する。
動き情報信号703は、フレーム間予測信号782を生成する動き補償モジュール780において、符号化ピクチャバッファ709からの参照フレーム信号798の一部分と結合される。量子化、デスケーリングおよび/または変換された係数705は、逆モジュール707でよって逆量子化、スケーリングおよび逆変換され、それによって復号された残差信号784を生成する。復号された残差信号784は、予測信号792に加算されて結合信号786を生成する。予測信号792は、動き補償モジュール780によって生成されたフレーム間予測信号782か、またはフレーム内予測モジュール788によって生成されたフレーム内予測信号790のいずれかから選択された信号である。いくつかの構成において、この信号選択は、ビットストリーム714に基づく(例えば、ビットストリーム714によって制御される)。
フレーム内予測信号790は、(例えば、現フレームにおける)結合信号786から予め復号された情報から予測される。結合信号786は、さらに、デブロッキングフィルタ794によってフィルタされる。フィルタされて生じた信号796は、復号ピクチャバッファ709に書き込まれる。フィルタされて生じた信号796は、復号ピクチャを含む。復号ピクチャバッファ709は、出力される復号ピクチャ718を供給する。いくつかのケースでは、709がフレームメモリであると見做される。
図3Bは、電子デバイス1802上のビデオデコーダ1812の一構成を示すブロック図である。ビデオデコーダ1812は、エンハンスメントレイヤ・デコーダ1815およびベースレイヤ・デコーダ1813を含む。ビデオデコーダ812は、インターフェース1889および解像度アップスケーリング1870も含む。例えば、図3Bのビデオデコーダは、本明細書に記載されるように、スケーラブル・ビデオ符号化に適し、マルチビュー・ビデオ符号化される。
インターフェース1889は、符号化ビデオストリーム1885を受信する。符号化ビデオストリーム1885は、ベースレイヤ符号化ビデオストリームおよびエンハンスメントレイヤ符号化ビデオストリームからなる。これら2つのストリームは、別々にまたは一緒に送信されてもよい。インターフェース1889は、符号化ビデオストリーム1885のいくらかまたはすべてをベースレイヤ・デコーダ1813におけるエントロピー復号ブロック1886へ供給する。エントロピー復号ブロック1886の出力は、復号予測ループ1887へ供給される。復号予測ループ1887の出力は、参照バッファ1888へ供給される。参照バッファは、復号予測ループ1887へのフィードバックを提供する。参照バッファ1888は、さらに、復号ベースレイヤ・ビデオストリーム1884を出力する。
インターフェース1889は、符号化ビデオストリーム1885のいくらかまたはすべてをエンハンスメントレイヤ・デコーダ1815におけるエントロピー復号ブロック1890へも供給する。エントロピー復号ブロック1890の出力は、逆量子化ブロック1891へ供給される。逆量子化ブロック1891の出力は、加算器1892へ供給される。加算器1892は、逆量子化ブロック1891の出力と予測選択ブロック1895の出力とを加算する。加算器1892の出力は、デブロッキング・ブロック1893へ供給される。デブロッキング・ブロック1893の出力は、参照バッファ1894へ供給される。参照バッファ1894は、復号エンハンスメントレイヤ・ビデオストリーム1882を出力する。参照バッファ1894の出力は、イントラ予測器1897へも供給される。エンハンスメントレイヤ・デコーダ1815は、動き補償1896を含む。動き補償1896は、解像度アップスケーリング1870後に行われる。予測選択ブロック1895は、イントラ予測器1897の出力および動き補償1896の出力を受信する。さらに、デコーダは、所望により、1つ以上の符号化ピクチャバッファを、例えば、インターフェース1889とともに含んでもよい。
図4は、復号ピクチャバッファ(DPB)の動作のための方法1200の一構成を示すフロー図である。方法1200は、エンコーダ104またはその副部分の1つ(例えば、復号ピクチャバッファ・モジュール676)によって行われてもよい。方法1200は、電子デバイス102(例えば、電子デバイスB 102b)におけるデコーダ112によって行われてもよい。加えてまたは代わりに、方法1200は、デコーダ712またはその副部分のうちの1つ(例えば、復号ピクチャバッファ・モジュール709)によって行われてもよい。デコーダは、ある1つのピクチャの最初のスライスヘッダを構文解析する(ステップ1202)。現ピクチャを復号する前(しかし、現ピクチャの第1のスライスのスライスヘッダを構文解析した後)の複数のピクチャのDPBからの出力およびリムーバルは、現ピクチャを含んだアクセスユニットの第1の復号ユニットがCPBから取り出されたときに即座に生じて、次のように進む。
−参照ピクチャセット(RPS:reference picture set)に対する復号処理が起動される。参照ピクチャセットは、ある1つのピクチャと関連付けられた参照ピクチャのセットであり、このセットは、復号順にその関連付けられたピクチャより前にあるすべての参照ピクチャからなり、その関連付けられたピクチャまたは復号順にその関連付けられたピクチャの後に続く任意のピクチャのインター予測に用いられる。
−ビデオのビットストリームは、ネットワーク抽象化レイヤ(NAL:Network Abstraction Layer)ユニットと一般に呼ばれる論理データパケット中に置かれたシンタックス構造を含む。各NALユニットは、関連付けられたデータペイロードの目的を識別するために、2バイトのNALユニットヘッダ(例えば、16ビット)のようなNALユニットヘッダを含む。例えば、各符号化スライス(および/またはピクチャ)は、1つ以上のスライス(および/またはピクチャ)NALユニットで符号化される。データの他のカテゴリ、例えば、付加拡張情報、テンポラル・サブレイヤ・アクセス(TSA:temporal sub−layer access)ピクチャの符号化スライス、階段状テンポラル・サブレイヤ・アクセス(STSA:step−wise temporal sub−layer access)ピクチャの符号化スライス、non−TSA、non−STSAトレイリング・ピクチャの符号化スライス、ブロークンリンク・アクセス・ピクチャの符号化スライス、瞬時復号リフレッシュ・ピクチャの符号化スライス、クリーンランダムアクセス・ピクチャの符号化スライス、復号可能なリーディング・ピクチャの符号化スライス、破棄用タグ付きピクチャの符号化スライス、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、アクセスユニット・デリミタ、シーケンスの終了、ビットストリームの終了、フィラーデータ、および/またはシーケンス拡張情報メッセージのために他のNALユニットが含められてもよい。表(1)は、NALユニット・コードおよびNALユニット・タイプ・クラスの一例を示す。所望により、他のNALユニット・タイプが含まれてもよい。表(1)に示されるNALユニットに関するNALユニット・タイプ値がリシャッフルされ、再割り当されてもよいことも理解されるべきである。さらに、追加のNALユニット・タイプが加えられてもよい。さらに、いくつかのNALユニット・タイプが除去されてもよい。
イントラランダムアクセスポイント(IRAP:intra random access point)ピクチャは、各ビデオ符号化レイヤNALユニットが表(1)に示されるように、両端値を含めて、BLA_W_LPからRSV_IRAP_VCL23までの範囲内のnal_unit_typeを有する符号化ピクチャである。IRAPピクチャは、イントラ符号化(I)スライスのみを含む。瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャは、各ビデオ符号化レイヤNALユニットが表(1)に示されるように、IDR_W_RADLまたはIDR_N_LPに等しいnal_unit_typeを有するIRAPピクチャである。瞬時復号リフレッシュ(IDR)ピクチャは、Iスライスのみを含み、復号順にビットストリーム中の第1のピクチャであってもよく、またはビットストリーム中に後の方で現れてもよい。各IDRピクチャは、復号順に符号化ビデオシーケンス(CVS:coded video sequence)の第1のピクチャである。ブロークンリンクアクセス(BLA:broken link access)ピクチャは、各ビデオ符号化レイヤNALユニットが表(1)に示されるようにBLA_W_LP、BLA_W_RADL、またはBLA_N_LPに等しいnal_unit_typeを有するIRAPピクチャである。BLAピクチャは、Iスライスのみを含み、復号順にビットストリーム中の第1のピクチャであってもよく、またはビットストリーム中に後の方で現れてもよい。各BLAピクチャは、新しい符号化ビデオシーケンスを開始し、復号処理に対してIDRピクチャと同じ効果を有する。しかしながら、BLAピクチャは、空でない参照ピクチャセットを指定するシンタックス要素を含む。
表(2)を参照すると、NALユニットヘッダ・シンタックスは、2バイトのデータ、すなわち、16ビットを含む。第1のビットは、NALユニットの先頭で常にゼロにセットされる「forbidden_zero_bit」である。次の6ビットは、表(1)に示されるようなNALユニットに含まれるロー・バイト・シーケンス・ペイロード(「RBSP:raw byte sequence payload」)データ構造のタイプを指定する「nal_unit_type」である。次の6ビットは、レイヤのインデンティファイヤを指定する「nuh_layer_id」である。いくつかのケースでは、その代わりにこれらの6ビットが「nuh_reserved_zero_6bits」として指定されてもよい。nuh_reserved_zero_6bitsは、規格の基本仕様では0に等しい。スケーラブル・ビデオ符号化および/またはシンタックス拡張では、nuh_layer_idは、この特定のNALユニットがこれら6ビットの値によって識別されるレイヤに属することを指定する。次のシンタックス要素は、「nuh_temporal_id_plus1」である。nuh_temporal_id_plus1−1は、NALユニットに関わるテンポラル識別子を指定する。変数テンポラル識別子TemporalIdは、TemporalId=nuh_temporal_id_plus1−1として指定される。テンポラル識別子TemporalIdは、テンポラル・サブレイヤを識別するために用いられる。変数HighestTidは、復号されることになる最上位のテンポラル・サブレイヤを指定する。
表(2)
表(3)は、例示的なシーケンスパラメータセット(SPS:sequence parameter set)のシンタックス構造を示す。
pic_width_in_luma_samplesは、輝度サンプルの単位での各復号ピクチャの幅を指定する。pic_width_in_luma_samplesは、0に等しくないものとする。
pic_height_in_luma_samplesは、輝度サンプルの単位での各復号ピクチャの高さを指定する。pic_height_in_luma_samplesは、0に等しくないものとする。
sps_max_sub_layers_minus1+1は、SPSを参照する各CVS中に存在するテンポラル・サブレイヤの最大数を指定する。sps_max_sub_layers_minus1の値は、両端値を含めて、0から6までの範囲内にあるものとする。
1に等しいsps_sub_layer_ordering_info_present_flagフラグは、sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、およびsps_max_latency_increase_plus1[i]シンタックス要素が、sps_max_sub_layers_minus1+1個のサブレイヤに関して存在することを指定する。0に等しいsps_sub_layer_ordering_info_present_flagは、sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]、sps_max_num_reorder_pics[sps_max_sub_layers_minus1]、およびsps_max_latency_increase_plus1[sps_max_sub_layers_minus1]の値がすべてのサブレイヤに適用されることを指定する。
sps_max_dec_pic_buffering_minus1[i]+1は、HighestTidがiに等しいときに、ピクチャ記憶バッファの単位でのCVSのための復号ピクチャバッファの最大所要サイズを指定する。sps_max_dec_pic_buffering_minus1[i]の値は、両端値を含めて、0からMaxDpbSize−1までの範囲内にあるものとし、ここでMaxDpbSizeは、ピクチャ記憶バッファの単位での最大復号ピクチャバッファサイズを指定する。iが0より大きいとき、sps_max_dec_pic_buffering_minus1[i]は、sps_max_dec_pic_buffering_minus1[i−1]以上であるものとする。sps_max_dec_pic_buffering_minus1[i]は、sps_sub_layer_ordering_info_present_flagが0に等しいことに起因して、両端値を含めて、0からsps_max_sub_layers_minus1−1までの範囲内のiに関して存在しないときには、それがsps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]に等しいと推定される。
sps_max_num_reorder_pics「i」は、HighestTidがiに等しいときに、復号順ではCVS中のいずれかのピクチャに先行し、かつ出力順ではそのピクチャの後に続くことができるピクチャの最大許容数を示す。sps_max_num_reorder_pics「i」の値は、両端値を含めて、0からsps_max_dec_pic_buffering_minus1[i]までの範囲内にあるものとする。iが0より大きいとき、sps_max_num_reorder_pics「i」は、sps_max_num_reorder_pics「i−1」以上であるものとする。sps_max_num_reorder_pics「i」は、sps_sub_layer_ordering_info_present_flagが0に等しいことに起因して、両端値を含めて、0からsps_max_sub_layers_minus1−1までの範囲内のiに関して存在しないときには、それがsps_max_num_reorder_pics[sps_max_sub_layers_minus1]に等しいと推定される。
0に等しくないsps_max_latency_increase_plus1[i]は、HighestTidがiに等しいとき、出力順ではCVS中のいずれかのピクチャに先行し、かつ復号順ではそのピクチャの後に続くことができるピクチャの最大数を指定する、SpsMaxLatencyPictures[i]の値を計算するために用いられる。
sps_max_latency_increase_plus1[i]が0に等しくないとき、SpsMaxLatencyPictures[i]の値は、次のように指定される。
SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_increase_plus1[i]−1
sps_max_latency_increase_plus1[i]が0に等しいとき、対応する制限は何も表現されない。
sps_max_latency_increase_plus1[i]の値は、両端値を含めて、0から2
32−2までの範囲内にあるものとする。sps_max_latency_increase_plus1[i]は、sps_sub_layer_ordering_info_present_flagが0に等しいことに起因して、両端値を含めて、0からsps_max_sub_layers_minus1−1までの範囲内のiに関して存在しないときには、それがsps_max_latency_increase_plus1[sps_max_sub_layers_minus1]に等しいと推定される。
表(3)
図5Aを参照すると、前述のようにNALユニットヘッダ・シンタックスは、2バイトのデータ、すなわち、16ビットを含む。第1のビットは、NALユニットの先頭で常にゼロにセットされる「forbidden_zero_bit」である。次の6ビットは、NALユニットに含まれるロー・バイト・シーケンス・ペイロード(「RBSP」)データ構造のタイプを指定する「nal_unit_type」である。次の6ビットは、「nuh_reserved_zero_6bits」である。nuh_reserved_zero_6bitsは、規格の基本仕様では0に等しい。nuh_reserved_zero_6bitsの他の値が所望により指定されてもよい。デコーダは、規格の基本仕様に基づくストリームを処理するときに、0に等しくないnuh_reserved_zero_6bitsの値をもつすべてのNALユニットを無視する(すなわち、ビットストリームから取り出して破棄する)。スケーラブルまたは他の拡張では、スケーラブル・ビデオ符号化および/またはシンタックス拡張をシグナリングするためにnuh_reserved_zero_6bitsが他の値を指定してもよい。いくつかのケースでは、シンタックス要素nuh_reserved_zero_6bitsは、served_zero_6bitsと称される。いくつかのケースでは、nuh_reserved_zero_6bitsは、図5Bおよび図5Cに示されるように、layer_id_plus1またはlayer_idと称される。このケースでは、要素layer_idは、layer_id_plus1−1となるであろう。このケースでは、この要素がスケーラブル符号化ビデオのレイヤに関する情報をシグナリングするために用いられる。次のシンタックス要素は、「nuh_temporal_id_plus1」である。nuh_temporal_id_plus1−1は、NALユニットに関するテンポラル識別子を指定する。変数テンポラル識別子TemporalIdは、TemporalId=nuh_temporal_id_plus1−1として指定される。
図6を参照すると、一般的なNALユニット・シンタックス構造が示される。図5のNALユニットヘッダの2バイトのシンタックスは、図6のnal_unit_header()へのリファレンスに含められる。NALユニット・シンタックスの残りの部分は、主にRBSPに関する。
「nuh_reserved_zero_6bits」を用いるための1つの既存の技術は、nuh_reserved_zero_6bitsの6ビットを別個のビットフィールド、すなわち、それぞれがスケーラブル符号化ビデオの異なるレイヤの識別を参照する依存性ID、品質ID、ビューID、および深度フラグのうちの1つ以上に区分することによって、スケーラブル・ビデオ符号化情報をシグナリングすることである。従って、6ビットは、この特定のNALユニットがスケーラブル符号化技術のどのレイヤに属するかを示す。
前述のように、スケーラブル・ビデオ符号化は、1つ以上のサブセット・ビットストリームも含むビデオビットストリームを符号化する技術である。サブセット・ビットストリームは、サブセット・ビットストリームに要求されるバンド幅を低減するためにより大きいビデオからパケットを落とすことによって導出される。サブセット・ビットストリームは、より低い空間分解能(より小さいスクリーン)、より低い時間分解能(より低いフレームレート)、またはより低品質のビデオ信号を表す。例えば、ビデオビットストリームは、それぞれのサブセット・ビットストリームがベース・ビットストリームに追加のコンテンツを加えた、5つのサブセット・ビットストリームを含んでもよい。ハンヌクセラら、「高効率ビデオ符号化(HEVC)のスケーラブルな拡張のためのテストモデル(Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC))」JCTVC−L0453、上海、2012年10月は、参照によりその全体が本明細書に組み込まれる。チェンら、「SHVC草案テキスト1(SHVC Draft Text 1)」、JCTVC−L1008、ジュネーブ、2013年3月は、参照によりその全体が本明細書に組み込まれる。
前述のように、マルチビュー・ビデオ符号化は、代わりのビューを表現する1つ以上の他のビットストリームも含むビデオビットストリームを符号化する技術である。例えば、マルチプルビューは、立体ビデオのための1対のビューであってもよい。例えば、マルチプルビューは、異なる視点からの同じ光景のマルチプルビューを表現してもよい。マルチプルビューは、画像が異なる視点からの同じ光景なので、一般に、多くの統計的なビュー間依存性を含む。それゆえに、時間およびビュー間予測の組み合わせが効率的なマルチビュー符号化を達成する。例えば、フレームは、時間的に関連するフレームからだけでなく、近接した視点のフレームからも効率的に予測される。B.ブロス、W−J.ハン、J−R.オーム、G.J.サリバン、およびT.ウィーガンド、「高効率ビデオ符号化(HEVC)テキスト仕様草案10」、JCTVC−L1003は、参照によりその全体が本明細書に組み込まれる。ハンヌクセラら、「スケーラブルおよびマルチビュー拡張に関する共通仕様テキスト(Common specification text for scalable and multi−view extensions)」、JCTVC−L0452、ジュネーブ、2013年1月は、参照によりその全体が本明細書に組み込まれる。テックら、「MV−HEVC草案テキスト5(MV−HEVC Draft Text 5)(ISO/IEC23008−2:201x/PDAM2)」、JCT3V−E1004_d3、ジュネーブ、2013年1月は、参照によりその全体が本明細書に組み込まれる。
それぞれが参照によりその全体が本明細書に組み込まれる、チェンら、「SHVC草案3(SHVC Draft 3)」、JCTVC−N1008、ウィーン、2013年8月、ハンヌクセラら、「高効率ビデオ符号化(HEVC)のスケーラブルな拡張のためのテストモデル」、JCTVC−L0453−spec−text、上海、2012年10月、およびハンヌクセラ、「高効率ビデオ符号化(HEVC)のマルチビュー拡張に関する草案テキスト(Draft Text for Multiview Extension of High Efficiency Video Coding(HEVC))」、JCTVC−L0452−spec−text−r1、上海、2012年10月は、それぞれがDPBからのピクチャ0の出力およびリムーバルのためにsps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]およびsps_max_dec_pic_buffering[HighestTid]シンタックス要素を用いることに基づいて動作する出力順復号ピクチャバッファ(DPB)を有する。この情報は、ベースレイヤのためのビデオパラメータセットでシグナリングされ、もしあれば、エンハンスメントレイヤを含んだビデオコンテンツに関するバッファリング情報を提供する。
複数のピクチャのDPBからの出力およびリムーバルのためにsps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]およびsps_max_dec_pic_buffering[HighestTid]シンタックス要素を用いることに基づいて出力順復号ピクチャバッファ(DPB)にシグナリングすることは、ユーザの視聴の好みに基づいてコンテンツが符号化された後にばらつきがちな異なる数のエンハンスメントレイヤが用いられるときなどのスケーラブル・ビデオ符号化、ならびにユーザの視聴の好みに基づいてコンテンツが符号化された後にばらつきがちなマルチビュー・エンハンスメントレイヤによって生じるバッファ特性を考慮しないと判定された。さらに、複数のピクチャのDPBからの出力およびリムーバルのためにsps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]およびsps_max_dec_pic_buffering[HighestTid]シンタックス要素を用いることに基づいて出力順復号ピクチャバッファ(DPB)にシグナリングすることは、デコーダがある動作点で動作するかおよび/または選択された出力レイヤセットを出力するときのDPBのメモリ使用法の観点から最適ではないことも判定された。視聴の好みにおけるかかる差異に対応するためには、出力順復号ピクチャバッファ(DPB)が、さらにおよび/または代わりに、1つ以上のエンハンスメントレイヤにシンタックス要素を提供すべくビデオパラメータセット(VPS:video parameter set)拡張とともに含まれたかかるシンタックス要素に基づいてもよい。このように、これらのシンタックス要素がユーザの視聴の好みに対応しがちな特定の動作点または出力レイヤセットに特に適するように選択されてもよい。
DPBバッファリング関連パラメータ、vps_max_dec_pic_buffering_minus1、vps_max_num_reorder_pics、vps_max_latency_increase_plus1が1つ以上の動作点に関わるCVSのためのサブレイヤに関して、および/またはVPS拡張中の出力レイヤセットに関してシグナリングされてもよい。同様に、システムは、上記のDPBバッファリング・パラメータが被テスト動作点に関して、または選択された出力レイヤセットに関してシグナリングされた場合に、それらのシグナリングされたパラメータをVPS拡張から用いるように出力順DPBに対する動作およびバンピング・プロセスを定義してもよい。そうでない場合には、(現ピクチャのnuh_layer_idに対応するcurrLayerIdが0に等しいときに)アクティブSPSからの、または現ピクチャのlayer_idに依存してアクティブレイヤSPSからの対応するSPSレベル・パラメータが用いられる。
例示的なvps_extensionシンタックスは、参照により本明細書に組み込まれるJCTVC−N1008およびJCT3V−E1004において定義される。図6Xを参照すると、例示的な修正されたvps_extensionが示される。修正されたvps拡張は、新しいシンタックス、すなわち、vps_sub_layer_ordering_info_present_flag[i]、max_vps_dec_pic_buffering_minus1[i][k][j]、max_vps_num_reorder_pics[i][j]、max_vps_latency_increase_plus1[i][j]を含む。NumOutputLayerSetsは、JCTVC−N1008において定義されるように導出される。NumLayersInOutputLayerSet[i]は、NumLAyersInIdList[output_layer_set_idx[i]]に等しくセットされ、ここでoutput_layer_set_idx[i]は、JCTVC−N1008において定義されるようにoutput_layer_flag[lsIdx][j]が存在するレイヤセットのインデックスlsIdxを指定する。
図6Xを参照すると、vps_sub_layer_ordering_info_present_flag[j]は、シンタックスがテンポラル・サブレイヤに関して別々に指定されるか、またはすべてのテンポラル・サブレイヤに適用される1つだけのシンタックスが指定されるかどうかを示す。1に等しいvps_sub_layer_ordering_info_present_flag[j]は、max_vps_dec_pic_buffering_minus1[i][k][j]、max_vps_num_reorder_pics[j][k]、およびmax_vps_latency_increase_plus1[j][k]が、出力レイヤセットごとに両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のiに関して存在することを指定する。0に等しいvps_sub_layer_ordering_info_present_flag[j]は、max_vps_dec_pic_buffering_minus1[i][k][vps_max_sub_layers_minus1]、max_vps_num_reorder_pics[i][k][vps_max_sub_layers_minus1]、およびmax_vps_latency_increase_plus1[i][k][vps_max_sub_layers_minus1]の値が出力レイヤセットごとにすべてのサブレイヤに適用されることを指定する。
max_vps_dec_pic_buffering_minus1[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のレイヤの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]は、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][vps_max_sub_layers_minus1]に等しいと推定される。
max_vps_num_reorder_pics[i][j]は、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットの後に続くことができる、1に等しいPicOutputFlagをもつピクチャを含む、HighestTidがjに等しいときのアクセスユニットの最大許容数を示す。max_vps_num_reorder_pics[i][j]は、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][vps_max_sub_layers_minus1]に等しいと推定される。
0に等しくないmax_vps_latency_increase_plus1[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][vps_max_sub_layers_minus1]に等しいと推定される。
max_vps_latency_increase_plus1[i][j]が0に等しくないとき、VpsMaxLatencyPictures[i][j]の値は、次のように指定される。
VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j]−1。
max_vps_latency_increase_plus1[i]が0に等しいとき、対応する制限は何も表現されない。max_vps_latency_increase_plus1[i][j]の値は、両端値を含めて、0から232−2までの範囲内にあるものとする。
図6Aを参照すると、例示的な修正されたvps_extensionが示される。修正されたvps拡張は、新しいシンタックス、すなわち、num_op_dpb_info_parametersおよびoperation_point_layer_set_idx[i]を含む。この修正されたvps拡張は、動作点の観点から定義され、動作点とは、入力として別のビットストリーム、ターゲット最上位TemporalId、およびターゲットレイヤ識別子リストを用いたサブビットストリーム抽出処理の動作によって別のビットストリームから作り出されたビットストリームである。
num_output_layer_setsは、output_layer_set_index[i]およびoutput_layer_flag[lsIdx][j]を用いて出力レイヤが指定されたレイヤセットの数を指定する。存在しないとき、num_output_layer_setsの値は、0に等しいと推定される。出力レイヤを記述しているレイヤセットが出力レイヤセットである。
output_layer_set_idx[i]は、output_layer_flag[lsIdx][j]が存在するレイヤセットのインデックスlsIdxを指定する。
1に等しいoutput_layer_flag[lsIdx][j]は、jに等しいnuh_layer_idをもつレイヤがlsIdx番目のレイヤセットのターゲット出力レイヤであることを指定する。0に等しいoutput_layer_flag[lsIdx][j]の値は、jに等しいnuh_layer_idをもつレイヤがlsIdx番目のレイヤセットのターゲット出力レイヤではないことを指定する。
num_op_dpb_info_parametersは、動作点の観点から定義されたVPS拡張RBSP中に存在するop_dpb_parameters()シンタックス構造の数を指定する。num_op_dpb_info_parametersデコーダは、両端値を含めて、0からvps_num_layer_sets_minus1までの範囲内にある。
operation_point_layer_set_idx[i]は、VPS拡張中のi番目のop_dpb_info_parameters()シンタックス構造が適用される動作点によって定義されたレイヤセットのリストへのインデックスを指定する。operation_point_layer_set_idx[i]の値は、両端値を含めて、0からvps_num_layer_sets_minus1までの範囲内にある。ビットストリーム適合性のために、operation_point_layer_set_idx[i]は、iに等しくない任意のjに対してoperation_point_layer_set_idx[j]に等しくない。
図7Aを参照すると、op_dpb_info_parametersは、vps_max_sub_layers_minus1[j]、vps_sub_layer_ordering_info_present_flag[j]、vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]およびvps_max_latency_increase_plus1[j][k]を指定する。
vps_max_sub_layers_minus1[j]+1は、いくつのサブレイヤが含まれるかを示す。vps_max_sub_layers_minus1[j]+1は、jに等しいnuh_layer_idをもつレイヤに関わるCVS中に存在するテンポラル・サブレイヤの最大数を指定する。vps_max_sub_layers_minus1[j]の値は、両端値を含めて、0から6までの範囲内にある。
vps_sub_layer_ordering_info_present_flag[j]は、シンタックスがすべてのレイヤを含んだ1つのセットに関するか、または各個別レイヤに関するかどうかを示す。1に等しいvps_sub_layer_ordering_info_present_flag[j]は、vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]、およびvps_max_latency_increase_plus1[j][k]がvps_max_sub_layers_minus1[j]+1個のサブレイヤに関わるjに等しいnuh_layer_idをもつレイヤに関して存在することを指定する。0に等しいvps_sub_layer_ordering_info_present_flag[j]は、vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]、vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]、およびvps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]がjに等しいnuh_layer_idをもつレイヤのためのすべてのサブレイヤに適用されることを指定する。
vps_max_dec_pic_buffering_minus1[j][k]+1は、HighestTidがkに等しいときに、ピクチャ記憶バッファの単位でのjに等しいnuh_layer_idをもつレイヤに関わるCVSのための復号ピクチャバッファの最大所要サイズを指定する。vps_max_dec_pic_buffering_minus1[j][k]の値は、両端値を含めて、(A.4項において指定されるように)0からMaxDpbSize−1までの範囲内にあるものとする。kが0より大きいとき、vps_max_dec_pic_buffering_minus1[j][k]は、vps_max_dec_pic_buffering_minus1[j][k−1]以上であるものとする。vps_max_dec_pic_buffering_minus1[j][k]は、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[j]−1までの範囲内のkに関して存在しないときには、それがvps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]に等しいと推定される。
vps_max_num_reorder_pics[j][k]は、HighestTidがkに等しいときに、復号順ではjに等しいnuh_layer_idをもつレイヤに関わるCVS中のいずれかのピクチャに先行し、かつ出力順ではそのピクチャの後に続くことができるピクチャの最大許容数を示す。vps_max_num_reorder_pics[j][k]の値は、両端値を含めて、0からvps_max_dec_pic_buffering_minus1[j][k]までの範囲内にあるものとする。kが0より大きいとき、vps_max_num_reorder_pics[j][k]は、vps_max_num_reorder_pics[j][k−1]以上である。vps_max_num_reorder_pics[j][k]は、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[j]−1までの範囲内のkに関して存在しないときには、それがvps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]に等しいと推定される。
0に等しくないvps_max_latency_increase_plus1[j][k]は、HighestTidがkに等しいときに、出力順ではjに等しいnuh_layer_idをもつレイヤに関わるCVS中のいずれかのピクチャに先行し、かつ復号順ではそのピクチャの後に続くことができるピクチャの最大数を指定する、VpsMaxLatencyPictures[j][k]の値を計算するために用いられる。
vps_max_latency_increase_plus1[j][k]が0に等しくないとき、VpsMaxLatencyPictures[j][k]の値は、次のように指定される。
VpsMaxLatencyPictures[j][k]=vps_max_num_reorder_pics[j][k]+vps_max_latency_increase_plus1[j][k]−1。
vps_max_latency_increase_plus1[j][k]が0に等しいとき、対応する制限は何も表現されない。
vps_max_latency_increase_plus1[j][k]の値は、両端値を含めて、0から232−2までの範囲内にある。vps_max_latency_increase_plus1[j][k]は、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[j]−1までの範囲内のkに関して存在しないときには、それがvps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]に等しいと推定される。
vps_max_sub_layers_minus1[id][j]+1は、インデックスidと関連付けられた動作点に関して、jに等しいnuh_layer_idをもつレイヤに関わるCVS中に存在するテンポラル・サブレイヤの最大数を指定する。vps_max_sub_layers_minus1[id][j]の値は、両端値を含めて、0から6までの範囲内にあるものとする。
1に等しいvps_sub_layer_ordering_info_present_flag[id][j]は、vps_max_dec_pic_buffering_minus1[id][j][k]、vps_max_num_reorder_pics[id][j][k]、およびvps_max_latency_increase_plus1[id][j][k]がvps_max_sub_layers_minus1[id][j]+1個のサブレイヤに対するインデックスidと関連付けられた動作点に関わるjに等しいnuh_layer_idをもつレイヤに関して存在することを指定する。0に等しいvps_sub_layer_ordering_info_present_flag[id][j]は、vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]、vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]、およびvps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]がインデックスidと関連付けられた動作点に関わるjに等しいnuh_layer_idをもつレイヤのためのすべてのサブレイヤに適用されることを指定する。
vps_max_dec_pic_buffering_minus1[id][j][k]+1は、HighestTidがkに等しいときに、ピクチャ記憶バッファの単位でのインデックスidと関連付けられた動作点に関わるjに等しいnuh_layer_idをもつレイヤに関するCVSのための復号ピクチャバッファの最大所要サイズを指定する。vps_max_dec_pic_buffering_minus1[id][j][k]の値は、両端値を含めて、(A.4項に指定されるように)0からMaxDpbSize−1までの範囲内にあるものとする。kが0より大きいとき、vps_max_dec_pic_buffering_minus1[id][j][k]は、vps_max_dec_pic_buffering_minus1[id][j][k−1]以上であるものとする。vps_max_dec_pic_buffering_minus1[id][j][k]は、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[id][j]−1までの範囲内のkに関して存在しないときには、それがvps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]に等しいと推定される。
vps_max_num_reorder_pics[id][j][k]は、HighestTidがkに等しいときに、復号順ではインデックスidと関連付けられる動作点に関わるjに等しいnuh_layer_idをもつレイヤに関してCVS中のいずれかのピクチャに先行し、かつ出力順ではそのピクチャの後に続くことができるピクチャの最大許容数を示す。vps_max_num_reorder_pics[id][j][k]の値は、両端値を含めて、0からvps_max_dec_pic_buffering_minus1[id][j][k]までの範囲内にあるものとする。kが0より大きいとき、vps_max_num_reorder_pics[id][j][k]は、vps_max_num_reorder_pics[id][j][k−1]以上であるものとする。vps_max_num_reorder_pics[id][j][k]は、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[id][j]−1までの範囲内のkに関して存在しないときには、それがvps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]に等しいと推定される。
0に等しくない‘vps_max_latency_increase_plus1’[id][j][k]は、HighestTidがkに等しいときに、出力順ではインデックスidと関連付けられた動作点に関わるjに等しいnuh_layer_idをもつレイヤに関するCVS中のいずれかのピクチャに先行し、復号順ではそのピクチャの後に続くことができるピクチャの最大数を指定する、VpsMaxLatencyPictures[id][j][k]の値を計算するために用いられる。
vps_max_latency_increase_plus1[id][j][k]が0に等しくないとき、VpsMaxLatencyPictures[id][j][k]の値は、次のように指定される。
VpsMaxLatencyPictures[id][j][k]=vps_max_num_reorder_pics[id][j][k]+vps_max_latency_increase_plus1[id][j][k]−1
vps_max_latency_increase_plus1[id][j][k]が0に等しいとき、対応する制限は何も表現されない。
vps_max_latency_increase_plus1[id][j][k]の値は、両端値を含めて、0から232−2までの範囲内にあるものとする。vps_max_latency_increase_plus1[id][j][k]は、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことに起因して、両端値を含めて、0からvps_max_sub_layers_minus1[id][j]−1までの範囲内のkに関して存在しないときには、それがvps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]に等しいと推定される。
図7Bを参照すると、op_dpb_info_parametersが示されるようにop_dpb_info_parameters(id,j)へさらに修正される。このケースでは、VPS拡張のシンタックスは、図6Bに示される通りである。仮想参照デコーダ(HRD:hypothetical reference decoder)は、ビットストリームおよびデコーダの適合性をチェックするために用いられる。2つのタイプのビットストリームまたはビットストリーム・サブセットがビデオ符号化に関する共同作業チーム(JCT−VC:Joint Collaborative Team on Video Coding)についてHRD適合性チェックを受ける。タイプIビットストリームと称される、第1のタイプは、ビットストリーム中のすべてのアクセスユニットに関してVCL NALユニットおよびFD_NUTに等しいnal_unit_typeをもつNALユニット(フィラーデータNALユニット)のみを含んだNALユニット・ストリームである。タイプIIビットストリームと称される、第2のタイプは、ビットストリーム中のすべてのアクセスユニットに関してVCL NALユニットおよびフィラーデータNALユニットに加えて、(a)フィラーデータNALユニット以外の追加のnon−VCL NALユニット、ならびに(b)NALユニット・ストリームからバイト・ストリームを形成するすべてのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、trailing_zero_8bitsシンタックス要素のうちの少なくとも1つを含む。
HRDに必要とされる、non−VCL NALユニットのシンタックス要素(またはシンタックス要素のうちのいくつかに関するそれらのデフォルト値)は、付属書DおよびE、7節のセマンティック項において指定される。
2つのタイプのHRDパラメータセット(NAL HRDパラメータおよびVCL HRDパラメータ)が用いられる。HRDパラメータセットは、SPSシンタックス構造またはVPSシンタックス構造の一部であるhrd_parameters()シンタックス構造を通じてシグナリングされる。
被テスト・ビットストリームと呼ばれるビットストリームの適合性をチェックするためには複数のテストが必要とされる。テストごとに、次のステップがリストされた順に適用される。
(1)TargetOpと表される被テスト動作点が選択される。TargetOpのレイヤ識別子リストOpLayerIdListは、TargetOpと関連付けられたビットストリーム・サブセット中に存在する、nuh_layer_id値の昇順の、nuh_layer_id値のリストからなり、このリストは、被テスト・ビットストリーム中に存在するnuh_layer_id値のサブセットである。TargetOpのOpTidは、TargetOpと関連付けられたビットストリーム・サブセット中に存在する最上位TemporalIdに等しい。
(2)TargetDecLayerIdListは、TargetOpのOpLayerIdListに等しくセットされ、HighestTidは、TargetOpのOpTidに等しくセットされ、10節において指定されるようなサブビットストリーム抽出処理が入力として被テスト・ビットストリーム、HighestTid、およびTargetDecLayerIdListを用いて起動され、出力は、BitstreamToDecodeへ割り当てられる。
(3)TargetOpに適用可能なhrd_parameters()シンタックス構造およびsub_layer_hrd_parameters()シンタックス構造が選択される。TargetDecLayerIdListが被テスト・ビットストリーム中に存在するすべてのnuh_layer_id値を含むならば、アクティブSPS中の(またはこの仕様では指定されない外部手段を通じて提供される)hrd_parameters()シンタックス構造が選択される。そうでない場合には、TargetOpに適用されるアクティブVPS中の(またはこの仕様では指定されない何かの外部手段を通じて提供される)hrd_parameters()シンタックス構造が選択される。選択されたhrd_parameters()シンタックス構造内において、BitstreamToDecodeがタイプIビットストリームであれば、条件「if(vcl_hrd_parameters_present_flag)」のすぐ後に続くsub_layer_hrd_parameters(HighestTid)シンタックス構造が選択されて、変数NalHrdModeFlagが0に等しくセットされる;そうでない(BitstreamToDecodeがタイプIIビットストリームである)場合には、条件「if(vcl_hrd_parameters_present_flag)」(このケースでは、変数NalHrdModeFlagが0に等しくセットされる)、または条件「if(nal_hrd_parameters_present_flag)」(このケースでは、変数NalHrdModeFlagが1に等しくセットされる)のいずれかのすぐ後に続くsub_layer_hrd_parameters(HighestTid)シンタックス構造が選択される。BitstreamToDecodeがタイプIIビットストリームであり、NalHrdModeFlagが0に等しいとき、(付属書Bにおいて指定されるように)NALユニット・ストリームからバイト・ストリームを形成する、フィラーデータNALユニットを除くすべてのnon−VCL NALユニット、およびすべてのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、ならびにtrailing_zero_8bitsシンタックス要素は、存在するときに、BitstreamToDecodeから破棄されて、残りのビットストリームがBitstreamToDecodeへ割り当てられる。
別のケースでも被テスト・ビットストリームと呼ばれるビットストリームの適合性をチェックするために複数のテストが必要とされる。テストごとに、次のステップがリストされた順に適用される。
(1)TargetOpLsと表される被テスト出力レイヤセットが選択される。TargetOpLs中でoutput_layer_set_idx[]によって参照される動作点が被テスト動作点を識別する。TargetOpLsの出力レイヤ識別子リストOpLayerIdListは、TargetOpおよびTargetOpLsと関連付けられたビットストリーム・サブセット中に存在する、nuh_layer_id値の昇順の、nuh_layer_id値のリストからなり、このリストは、被テスト・ビットストリーム中に存在するnuh_layer_id値のサブセットである。TargetOpのOpTidは、TargetOpと関連付けられたビットストリーム・サブセット中に存在する最上位TemporalIdに等しい。
(2)TargetDecLayerIdListは、選択された出力レイヤセットTargetOpLsに関するターゲット復号レイヤ識別子リストtargetDLayerIdListに等しくセットされ、HighestTidは、TargetOpのOpTidに等しくセットされ、10節において指定されるようなサブビットストリーム抽出プロセスが入力として被テスト・ビットストリーム、HighestTid、およびTargetDecLayerIdListを用いて起動され、出力は、BitstreamToDecodeへ割り当てられる。
(3)TargetOpに適用可能なhrd_parameters()シンタックス構造およびsub_layer_hrd_parameters()シンタックス構造が選択される。TargetDecLayerIdListが被テスト・ビットストリーム中に存在するすべてのnuh_layer_id値を含むならば、アクティブSPS中の(またはこの仕様では指定されない外部手段を通じて提供される)hrd_parameters()シンタックス構造が選択される。そうでない場合には、TargetOpに適用されるアクティブVPS中の(またはこの仕様では指定されない何かの外部手段を通じて提供される)hrd_parameters()シンタックス構造が選択される。選択されたhrd_parameters()シンタックス構造内において、BitstreamToDecodeがタイプIビットストリームであれば、条件「if(vcl_hrd_parameters_present_flag)」のすぐ後に続くsub_layer_hrd_parameters(HighestTid)シンタックス構造が選択されて、変数NalHrdModeFlagが0に等しくセットされる;そうでない(BitstreamToDecodeがタイプIIビットストリームである)場合には、条件「if(vcl_hrd_parameters_present_flag)」(このケースでは、変数NalHrdModeFlagが0に等しくセットされる)、または条件「if(nal_hrd_parameters_present_flag)」(このケースでは、変数NalHrdModeFlagが1に等しくセットされる)のいずれかのすぐ後に続くsub_layer_hrd_parameters(HighestTid)シンタックス構造が選択される。BitstreamToDecodeがタイプIIビットストリームであり、NalHrdModeFlagが0に等しいとき、(付属書Bにおいて指定されるように)NALユニット・ストリームからバイト・ストリームを形成する、フィラーデータNALユニットを除くすべてのnon−VCL NALユニット、およびすべてのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、ならびにtrailing_zero_8bitsシンタックス要素は、存在するときに、BitstreamToDecodeから破棄されて、残りのビットストリームがBitstreamToDecodeへ割り当てられる。
適合するデコーダは、この項において指定されるすべての必要条件を満たす。
(1)特定のプロファイル、ティアおよびレベルへの適合性を主張するデコーダは、VCL NALユニットで参照されるすべてのVPS、SPSおよびPPS、ならびに適切なバッファリング周期およびピクチャ・タイミングSEIメッセージが、(non−VCL NALユニットによって)ビットストリームで、またはこの仕様では指定されない外部手段によって、タイムリーにデコーダへ伝達されることを条件として、C.4項において指定されるビットストリーム適合性の必要条件に適合するすべてのビットストリームを付属書Aにおいて指定される仕方で首尾よく復号することが可能であるものとする。
(2)ビットストリームが予約されているとして指定された値を有するシンタックス要素を含み、デコーダが予約値を有するシンタックス要素またはシンタックス要素を含んだNALユニットの値を無視するものとすることが指定され、その他の点ではビットストリームがこの仕様に適合しているとき、適合しているデコーダは、適合しているビットストリームを復号するであろう同じ仕方でこのビットストリームを復号するものとし、予約値を有するシンタックス要素またはシンタックス要素を含んだNALユニットを指定されるように無視するものとする。
デコーダの適合性には2つのタイプ、すなわち、出力タイミング適合性および出力順適合性がある。
デコーダの適合性をチェックするために、C.4項において指定されるような、主張されるプロファイル、ティアおよびレベルに適合しているテスト・ビットストリームが仮想ストリーム・スケジューラ(HSS:hypothetical stream scheduler)によってHRDおよび被テスト・デコーダ(DUT:decoder under test)の両方へ配信される。HRDによって出力されるすべてのクロップされた復号ピクチャは、DUTによっても出力されるものとし、DUTによって出力される各クロップされた復号ピクチャは、1に等しいPicOutputFlagをもつピクチャであるものとし、DUTによって出力されるかかるクロップされた復号ピクチャごとに、出力されるすべてのサンプルの値は、指定された復号プロセスによって生成されるサンプルの値に等しいものとする。
出力タイミング・デコーダ適合性に関して、HSSは、ビットレートおよびCPBサイズが指定されたプロファイル、ティアおよびレベルについて付属書Aにおいて指定されるように制限される、SchedSelIdxの値のサブセットのみから選択された配信スケジュールを用いるか、またはビットレートおよびCPBサイズが付属書Aにおいて指定されるように制限される、以下に指定されるような「補間」配信スケジュールを用いて上記のように動作する。HRDおよびDUTの両方に同じ配信スケジュールが用いられる。
HRDパラメータおよびバッファリング周期SEIメッセージが0より大きいcpb_cnt_minus1[HighestTid]とともに存在するときに、デコーダは、以下のようなピーク・ビットレートr、CPBサイズc(r)、および初期CPBリムーバル遅延
(f(r)÷r)
を有するとして指定された「補間」配信スケジュールを用いて動作しているHSSから配信されたビットストリームを復号することが可能であるものとする。
上式は、BitRate[SchedSelIdx−1]≦r≦BitRate[SchedSelIdx]、ならびに指定されたプロファイル、ティアおよびレベルに対する最大ビットレートおよびバッファサイズに関してrおよびc(r)が付属書Aにおいて指定されるような限界内にある任意のSchedSelIdx>0およびrに対する式である。InitCpbRemovalDelay[SchedSelIdx]がバッファリング周期ごとに異なり、再算出されなければならないことがありうる。
出力タイミング・デコーダ適合性のために、上記のようなHRDが用いられ、ピクチャ出力の(第1のビットの配信時刻に対する)タイミングは、一定の遅延までHRDでもDUTでも同じである。
出力順デコーダ適合性に関しては、以下が適用される。
(1)HSSは、DUTからの「要求によって」ビットストリームBitstreamToDecodeをDUTへ配信し、これは、DUTがその処理を進めるためにより多くのビットを必要とするときにのみ、HSSがビットを(復号順に)配信することを意味する。これが意味するのは、このテストではDUTの符号化ピクチャバッファを最も大きい復号ユニットのサイズと同じぐらい小さくできるであろうということである。
(2)以下に記載されるような修正されたHRDが用いられ、HSSは、ビットレートおよびCPBサイズが付属書Aにおいて指定される通り制限されるようにビットストリームBitstreamToDecodeで指定されたスケジュールのうちの1つによってビットストリームをHRDへ配信する。ピクチャ出力の順序は、HRDでもDUTでも同じであるものとする。
(3)HRDサイズは、E.2.3項において指定されるようにCpbSize[SchedSelIdx]によって与えられ、ここでSchedSelIdxおよびHRDパラメータは、C.1項において指定されるように選択される。DPBサイズは、(現復号ピクチャに関するnuh_layer_idが0に等しいときに)アクティブSPSからの、または現復号ピクチャのnuh_layer_idの値に関わるアクティブレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]+1によって与えられる。いくつかのケースでは、DPB情報パラメータが例えば図6Xにおけるように選択された出力レイヤセットに関してVPS拡張でシグナリングされる場合、ターゲット出力レイヤのセットに対応するVPSでシグナリングされる出力レイヤセットのリストTargetOptLayerIdList中のエントリへのインデックスをTargetOutputLayerIdとしたときに、DPBサイズは、max_vps_dec_pic_buffering_minus1[TargetOutputLayerId][currLayerID][HighestTid]によって与えられる。
他のケース、例えば、このシナリオの図6A、6Bにおける他のバレイントでは、DPBサイズは、currLayerIDが0に等しいときに、vps_max_dec_pic_buffering_minus1[HighestTid]によって与えられ、またはcurrLayerIdが0より大きいときには、被テスト動作点に関わるcurrLayerIdに対してvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]にセットされ、ここでcurrLayerIdは、現復号ピクチャのnuh_layer_idである。そうではない場合に、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、DPBサイズは、(現復号ピクチャに関するnuh_layer_idが0に等しいときに)アクティブSPSからの、または現復号ピクチャのnuh_layer_idの値に関わるアクティブレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]+1によって与えられる。
いくつかのケースでは、出力レイヤセットDPB情報パラメータoop_dpb_info_parameters()が選択された出力レイヤセットに関して存在すれば、DPBサイズは、currLayerIdが0に等しいときに、vps_max_dec_pic_buffering_minus1[HighestTid]によって与えられ、または選択された出力レイヤセットに関わるcurrLayerIdに対してvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]にセットされ、ここでcurrLayerIdは、現復号ピクチャのnuh_layer_idである。そうではない場合に、出力レイヤセットDPB情報パラメータoop_dpb_info_parameters()が選択された出力レイヤセットに関して存在しなければ、DPBサイズは、(現復号ピクチャに関するnuh_layer_idが0に等しいときに)アクティブSPSからの、または現復号ピクチャのnuh_layer_idの値に関わるアクティブレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]+1によって与えられる。
CPBからのリムーバル時刻は、HRDでは最終ビットの到着時刻であり、復号は即時である。このHRDのDPBの動作は、C5.2からC5.2.3項において記載される通りである。
復号ピクチャバッファは、ピクチャ記憶バッファを含む。0に等しいnuh_layer_idに関わるピクチャ記憶バッファの数は、アクティブSPSから導出される。ゼロではないnuh_layer_id値ごとのピクチャ記憶バッファの数は、そのゼロではないnuh_layer_id値に関わるアクティブレイヤSPSから導出される。それぞれのピクチャ記憶バッファは、「参照に用いられる」とマーク付けされた復号ピクチャを含むか、または将来の出力のために保持される。F.13.5.2.2項において指定されるようなDPBからのピクチャの出力およびリムーバルのための処理が起動されて、F.13.5.2.3項において指定されるようなピクチャ復号、マーク付け、追加のバンピング、および記憶のための処理の起動がその後に続く。「バンピング」処理は、F.13.5.2.4項において指定され、F.13.5.2.2およびF.13.5.2.3項において指定されるように起動される。
現ピクチャを復号する前(しかし、現ピクチャの第1のスライスのスライスヘッダを構文解析した後)の複数のピクチャのDPBからの出力およびリムーバルは、現ピクチャを含んだアクセスユニットの第1の復号ユニットがCPBから取り出されたときに即座に生じて、次のように進む。
8.3.2項において指定されるようなRPSに対する復号処理が起動される。
(1)現ピクチャが1に等しいNoRaslOutputFlagをもち、かつ0に等しいnuh_layer_idをもつピクチャ0ではないIRAPピクチャであれば、以下の順序付けられたステップが適用される。
(A)変数NoOutputOfPriorPicsFlagが被テスト・デコーダに関して次のように導出される。
(i)現ピクチャがCRAピクチャであれば、NoOutputOfPriorPicsFlagが(no_output_of_prior_pics_flagの値に係らず)1に等しくセットされる。
(ii)そうでない場合には、アクティブSPSから導出されたpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値が先行ピクチャに対してアクティブなSPSから導出されたそれぞれpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値と異なれば、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagの値に係らず、被テスト・デコーダによって1にセットされてもよい(しかし、セットされるべきであるわけではない)。これらの条件下においてはNoOutputOfPriorPicsFlagをno_output_of_prior_pics_flagに等しくセットすることが好ましいが、このケースでは被テスト・デコーダがNoOutputOfPriorPicsFlagを1にセットすることが許容される。
(iii)そうでない場合には、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagに等しくセットされる。
(B)被テスト・デコーダに関して導出されたNoOutputOfPriorPicsFlagの値は、以下のようにHRDに適用される。
(i)NoOutputOfPriorPicsFlagが1に等しければ、DPB中のすべてのピクチャ記憶バッファは、それらが含むピクチャの出力なしに空にされて、DPB占有量が0に等しくセットされる。
(ii)そうでない(NoOutputOfPriorPicsFlagが0に等しい)場合には、「出力に必要とされない」および「参照に用いられない」とマーク付けされたピクチャを含んだすべてのピクチャ記憶バッファが(出力なしに)空にされ、DPB中のすべての空でないピクチャ記憶バッファがF.13.5.2.4項において指定される「バンピング」処理を繰り返して起動することによって空にされて、DPB占有量が0に等しくセットされる。
(iii)そうでない(現ピクチャが1に等しいNoRaslOutputFlagをもち、かつ0に等しいnuh_layer_idをもつIRAPピクチャではない)場合には、「出力に必要とされない」および「参照に用いられない」とマーク付けされたピクチャを含んだすべてのピクチャ記憶バッファが(出力なしに)空にされる。空にされたピクチャ記憶バッファごとに、DPB占有量が1つデクリメントされる。変数currLayerIdが現復号ピクチャのnuh_layer_idに等しくセットされる。
変数MaxNumReorderPics[currLayerId][HighestTid]、MaxLatencyIncreasePlus1[currLayerId][HighestTid]、MaxLatencyPictures[currLayerId][HighestTid]、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、以下のように導出される。
付属書Aにおいて指定されるプロファイルのうちの1つ以上に適合している符号化ビデオシーケンスが2−10節において指定される復号処理を適用することによって復号されるとき、MaxNumReorderPics[currLayerId][HighestTid]は、アクティブSPSからのsps_max_num_reorder_pics[HighestTid]にセットされ、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、アクティブSPSのsps_max_latency_increase_plus1[HighestTid]にセットされ、MaxLatencyPictures[currLayerId][HighestTid]は、アクティブSPSのSpsMaxLatencyPictures[HighestTid]にセットされ、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、アクティブSPSのsps_max_dec_pic_buffering_minus1[HighestTid]にセットされる。
付属書GまたはHにおいて指定されるプロファイルのうちの1つ以上に適合している符号化ビデオシーケンスが2−10節、付属書F、および付属書GまたはHにおいて指定される復号処理を適用することによって復号されるとき、MaxNumReorderPics[currLayerId][HighestTid]は、アクティブVPSのmax_vps_num_reorder_pics[TargetOutputLayerId][HighestTid]にセットされ、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、アクティブVPSのmax_vps_latency_increase_plus1[TargetOutputLayerId][HighestTid]にセットされ、MaxLatencyPictures[currLayerId][HighestTid]は、アクティブVPSのVpsMaxLatencyPictures[TargetOutputLayerId][HighestTid]にセットされ、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、アクティブVPSのmax_vps_dec_pic_buffering_minus1[TargetOutputLayerId][currLayerId][HighestTid]にセットされる。
変形実施形態において、変数MaxNumReorderPics[TargetOp][currLayerId][HighestTid]、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]は、現被テスト動作点に基づいて次のように導出される。
(1)動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点TargetOpに関して存在するならば、MaxNumReorderPics[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときに、vps_max_num_reorder_pics[HighestTid]にセットされ、currLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_num_reorder_pics[TargetOp][CurrLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxNumReorderPics[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSからの、またはcurrLayerIdの値に関わるアクティブレイヤSPSからのsps_max_num_reorder_pics[HighestTid]にセットされる。
(2)動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点TargetOpに関して存在するならば、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときに、vps_max_latency_increase_plus1[HighestTid]にセットされ、またはcurrLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_latency_increase_plus1[TargetOp][CurrLayerId][HighestTid]にセットされる。動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在するならば、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]は、currLayerIdが0と等しいときに、VpsMaxLatencyPictures[HighestTid]にセットされ、currLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してVpsMaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSの、またはcurrLayerIdの値に関わるアクティブレイヤSPSのsps_max_latency_increase_plus1[HighestTid]にセットされ、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSから、またはcurrLayerIdの値に関わるアクティブレイヤSPSから導出されたSpsMaxLatencyPictures[HighestTid]にセットされる。
(3)動作点DPB情報パラメータop_dpb_info_parameters()が選択された被テスト動作点TargetOpに関して存在するならば、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときに、vps_max_dec_pic_buffering_minus1[HighestTid]にセットされ、またはcurrLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_dec_pic_buffering_minus1[TargetOp][currLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSからの、またはcurrLayerIdの値に関わるアクティブレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]にセットされる。
以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動され、一方ではさらなるピクチャ記憶バッファが空にされるごとにDPB占有量がさらに1つデクリメントされる。
(1)「出力に必要とされる」とマーク付けされた少なくとも1つのピクチャを含むアクセスユニットの数がMaxNumReorderPics[currLayerId][HighestTid]より大きい。
(2)MaxLatencyIncreasePlus1[currLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCountがMaxLatencyPictures[currLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたピクチャを含む少なくとも1つのアクセスユニットがあるかどうか。
(3)関連付けられたサブDPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxDecPicBufferingMinus1[currLayerId][HighestTid]+1以上である。
この項において指定される処理は、現ピクチャを含んだアクセスユニットnの最後の復号ユニットがCPBから取り出されたときに即座に生じる。
変数currLayerIdが現復号ピクチャのnuh_layer_idに等しくセットされる。
「出力に必要とされる」とマーク付けされ、currLayerIdに等しいnuh_layer_id値を有するDPB中のピクチャごとに、関連付けられた変数PicLatencyCount[currLayerId]がPicLatencyCount[currLayerId]+1に等しくセットされる。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号済みと見做される。現復号ピクチャがDPB中の空のピクチャ記憶バッファ中に記憶されて、以下が適用される。
(A)現復号ピクチャが1に等しいPicOutputFlagを有すれば、そのピクチャが「出力に必要とされる」とマーク付けされ、その関連付けられた変数PicLatencyCount[currLayerId]が0に等しくセットされる。
(B)そうでない(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、そのピクチャが「出力に必要とされない」とマーク付けされる。
現復号ピクチャは、「短期間参照に用いられる」とマーク付けされる。
以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動される。
(A)「出力に必要とされる」とマーク付けされた少なくとも1つのピクチャを含むアクセスユニットの数がMaxNumReorderPics[currLayerId][HighestTid]より大きい。
(B)MaxLatencyIncreasePlus1[currLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCount[currLayerId]がMaxLatencyPictures[currLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたピクチャを含んだ少なくとも1つのアクセスユニットがある。
変形実施形態において、以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動され、一方ではさらなるピクチャ記憶バッファが空にされるごとにDPB占有量がさらに1つデクリメントされる。
(1)「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]より大きい。
(2)MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCount[currLayerId]がMaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつ少なくとも1つのピクチャがあるかどうか。
(3)DPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxDecPicBufferingMinus1[TargetOp][CurrLayerId][HighestTid]+1以上である。
この項において指定される処理は、現ピクチャを含んだアクセスユニットnの最後の復号ユニットがCPBから取り出されたときに即座に生じる。
変数currLayerIdが現復号ピクチャのnuh_layer_idに等しくセットされる。
「出力に必要とされる」とマーク付けされ、currLayerIdに等しいnuh_layer_id値を有するDPB中のピクチャごとに、関連付けられた変数PicLatencyCount[currLayerId]がPicLatencyCount[currLayerId]+1に等しくセットされる。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号済みと見做される。現復号ピクチャがDPB中の空のピクチャ記憶バッファ中に記憶されて、以下が適用される。
(A)現復号ピクチャが1に等しいPicOutputFlagを有すれば、そのピクチャが「出力に必要とされる」とマーク付けされ、その関連付けられた変数PicLatencyCount[currLayerId]が0に等しくセットされる。
(B)そうでない(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、そのピクチャが「出力に必要とされない」とマーク付けされる。
現復号ピクチャは、「短期間参照に用いられる」とマーク付けされる。
以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動される。
(A)「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]より大きい。
(B)MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCount[currLayerId]がMaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつ少なくとも1つのピクチャがある。
他のケースでは、変数MaxNumReorderPics[currLayerId][HighestTid]、MaxLatencyIncreasePlus1[currLayerId][HighestTid]、MaxLatencyPictures[currLayerId][HighestTid]、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、以下のように導出される。
(1)動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在するならば、MaxNumReorderPics[currLayerId][HighestTid]は、currLayerIdが0に等しいときに、vps_max_num_reorder_pics[HighestTid]にセットされ、currLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_num_reorder_pics[CurrLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxNumReorderPics[currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSからの、またはcurrLayerIdの値に関わるアクティブレイヤSPSからのsps_max_num_reorder_pics[HighestTid]にセットされる。
(2)動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在するならば、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、currLayerIdが0と等しいときに、vps_max_latency_increase_plus1[HighestTid]にセットされ、またはcurrLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_latency_increase_plus1[CurrLayerId][HighestTid]にセットされる。動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在するならば、MaxLatencyPictures[currLayerId][HighestTid]は、currLayerIdが0に等しいときに、VpsMaxLatencyPictures[HighestTid]にセットされ、currLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してVpsMaxLatencyPictures[CurrLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSの、またはcurrLayerIdの値に関わるアクティブレイヤSPSのsps_max_latency_increase_plus1[HighestTid]にセットされ、MaxLatencyPictures[currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSから、またはcurrLayerIdの値に関わるアクティブレイヤSPSから導出されたSpsMaxLatencyPictures[HighestTid]にセットされる。
(3)動作点DPB情報パラメータop_dpb_info_parameters()が選択された被テスト動作点に関して存在するならば、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、currLayerIdが0に等しいときに、vps_max_dec_pic_buffering_minus1[HighestTid]にセットされ、またはcurrLayerIdが0より大きいときには、被テスト動作点に関するcurrLayerIdに対してvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]にセットされる。そうでない場合には、動作点DPB情報パラメータop_dpb_info_parameters()が被テスト動作点に関して存在しなければ、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、(currLayerIdが0に等しいときに)アクティブSPSからの、またはcurrLayerIdの値に関わるアクティブレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]にセットされる。
以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動され、一方ではさらなるピクチャ記憶バッファが空にされるごとにDPB占有量がさらに1つデクリメントされる。
(1)「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxNumReorderPics[CurrLayerId][HighestTid]より大きい。
(2)MaxLatencyIncreasePlus1[CurrLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCount[currLayerId]がMaxLatencyPictures[CurrLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつ少なくとも1つのピクチャがあるかどうか。
(3)DPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxDecPicBuffering[CurrLayerId][HighestTid]以上である。
この項において指定される処理は、現ピクチャを含んだアクセスユニットnの最後の復号ユニットがCPBから取り出されたときに即座に生じる。
変数currLayerIdが現復号ピクチャのnuh_layer_idに等しくセットされる。
「出力に必要とされる」とマーク付けされ、currLayerIdに等しいnuh_layer_id値を有するDPB中のピクチャごとに、関連付けられた変数PicLatencyCount[currLayerId]がPicLatencyCount[currLayerId]+1に等しくセットされる。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号済みと見做される。現復号ピクチャがDPB中の空のピクチャ記憶バッファ中に記憶されて、以下が適用される。
(A)現復号ピクチャが1に等しいPicOutputFlagを有すれば、そのピクチャが「出力に必要とされる」とマーク付けされ、その関連付けられた変数PicLatencyCount[currLayerId]が0に等しくセットされる。
(B)そうでない(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、そのピクチャが「出力に必要とされない」とマーク付けされる。
現復号ピクチャは、「短期間参照に用いられる」とマーク付けされる。
以下の条件のうちの1つ以上が真であるときには、以下の条件がいずれも真でなくなるまで、F.13.5.2.4項において指定される「バンピング」処理が繰り返して起動される。
(A)「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつピクチャの数がMaxNumReorderPics[CurrLayerId][HighestTidより大きい。
(B)MaxLatencyIncreasePlus1[CurrLayerId][HighestTid]が0に等しくなく、関連付けられた変数PicLatencyCount[currLayerId]がMaxLatencyPictures[CurrLayerId][HighestTid]以上である「出力に必要とされる」とマーク付けされたDPB中のcurrLayerIdに等しいnuh_layer_idをもつ少なくとも1つのピクチャがある。
「バンピング」処理は、以下の順序付けられたステップからなる。
最初に出力するためのピクチャとして、「出力に必要とされる」とマーク付けされたDPB中のすべてのピクチャのうちでPicOrderCntValの最小値を有する複数のピクチャが選択される。
(B)これらのピクチャが0に等しいnuh_layer_idをもつピクチャに関わるアクティブSPSにおいて、またはピクチャのものに等しいnuh_layer_idに関わるアクティブレイヤSPSにおいて指定された適合性クロッピング・ウィンドウを用いてクロップされ、クロップされたピクチャは、nuh_layer_idの昇順に出力されて、これらのピクチャが「出力に必要とされない」とマーク付けされる。
(C)「参照に用いられない」とマーク付けされたピクチャを含む各ピクチャ記憶バッファ、およびクロップされ、出力されたピクチャのうちの1つを含んでいた各ピクチャ記憶バッファが空にされる。
VPS拡張は、所望により、追加の修正を有してもよい。
図8を参考にすると、追加の修正は、DPBパラメータが動作点に関する代わりに出力レイヤセットに関してVPS拡張で送信されることを含んでもよく、oops_dpb_info_parameters(j)は、図9に示される。
num_dpb_info_parametersは、VPS拡張RBSP中に存在するoop_dpb_parameters()シンタックス構造の数を指定する。num_dpb_info_parametersデコーダは、両端値を含めて、0からnum_output_layer_setsまでの範囲内にあるものとする。
output_point_layer_set_idx[i]は、VPS拡張中のi番目のoop_dpb_info_parameters()シンタックス構造が適用されるターゲット出力レイヤセットのリスト中へのインデックスを指定する。
output_point_layer_set_idx[i]の値は、両端値を含めて、0からnum_output_layer_setsまでの範囲内にあるものとする。ビットストリーム適合性の必要条件は、iに等しくない任意のjに対してoutput_point_layer_set_idx[i]がoutput_point_layer_set_idx[j]に等しくないものとすることである。
図10を参照すると、oop_dpb_info_paremters(c)は、さらに修正されてもよく、VPS拡張におけるシンタックスは、図11に示される通りである。
図12を参照すると、oop_dpb_info_paremters(c)は、さらに修正されてもよく、VPS拡張におけるシンタックスは、図13または図14に示される通りである。
VPS拡張におけるシンタックスに対する例示的な代替策は、
が以下のように変更されることである。
vps_max_layer_idは、CVS中のすべてのNALユニットのnuh_layer_idの最大許容値を指定する。vps_max_layers_minus1は、CVS中に存在するレイヤの最大数を指定し、レイヤは、例えば、空間スケーラブル・レイヤ、品質スケーラブル・レイヤ、テクスチャ・ビューまたは深度ビューであってもよい。
VPS拡張におけるシンタックスに対する別の例示的な代替策は、
ここで、選択された出力レイヤセット・インデックスoplsIdxに対するnumOutputLayersは、以下のように導出される。
VPS拡張におけるシンタックスに対する別の例示的な代替策は、
ここで、選択されたoplsIdxに対するnumOutputLayersは、以下のように導出される。
次に、ターゲット復号レイヤ識別子リストtargetDLayerIdListおよび選択されたoplsIdxに対するnumDecodedLayersは、以下のように導出される。
一実施形態において、oop_dpb_information_parametersが特定のレイヤに関してシグナリングされるかどうかを示すために次のように追加のフラグがシグナリングされてもよい。
1に等しいvps_layer_info_present_flag[j]は、oop_dpb_info_parametersが特定の出力レイヤセットのためのj番目のレイヤに関して存在することを指定する。0に等しいvps_layer_info_present_flag[j]は、oop_dpb_info_parametersが特定の出力レイヤセットのためのj番目のレイヤに関して存在しないことを指定する。
別の実施形態では、num_dpb_info_parametersデコーダは、両端値を含めて、0から1024までの範囲内にあるものとする。さらに別の実施形態では、1024の代わりに別の固定数を用いることができるであろう。
代わりの実施形態では、output_point_layer_set_idx[i]は、両端値を含めて、0から1023までの範囲内にある。
図15を参考にすると、DPBパラメータが出力レイヤセットおよび動作点とは独立してレイヤごとにVPS拡張で送信される場合には、別の修正されたVPS拡張およびlayer_dpb_info(i)が用いられてもよい。
図16を参考にすると、VPSからシグナリングされるシンタックス要素vps_max_sub_layer_minus1がすべてのレイヤに用いられ、かつoop_dpb_info_parameters(id)/op_dpb_info_parameters(id)で別々にはシグナリングされない、修正されたlayer_dpb_info(i)が用いられてもよい。
前述のように図1を参照すると、復号ピクチャバッファ(DPB)122は、異なる特性を有する復号ピクチャのために別々に識別され、管理されるピクチャバッファを含んでもよい。例えば、復号ピクチャバッファ(DPB)122は、異なる解像度、異なるビット深度および/または異なる色度をもつ復号ピクチャのために別々に識別され、管理される複数のピクチャバッファを含んでもよい。このケースでは、レイヤごとに別々のDPBがあってもよく、または同じピクチャ特性(例えば、解像度、ビット深度、色度など)を有するいくつかのレイヤがDPBを共有してもよい。このケースでは、異なるピクチャ特性、例えば、解像度、ビット深度、色度などに対して異なるDPBがあることになろう。用途のニーズに基づいて、いくつかのケースでは、例えば、DPBブックキーピングおよびDPB動作の簡便さの観点から、レイヤごとに別々のDPBが有益なことがある。かかるDPBは、レイヤワイズDPBと称することができる。これに対して、いくつかの他の用途では、同じピクチャ特性をもつレイヤがDPBを共有する共有DPBが有益なことがある。ピクチャ特性に基づくかかる共有DPBは、ピクチャ特性ベースの共有DPBと称される。結果として、レイヤワイズDPB動作およびピクチャ特性ベースの共有DPB動作の両方をサポートすることが有利である。
典型的に、ピクチャ特性ベースの共有DPBは、共有DPBの数、それらのサイズ、解像度、ビット深度、ピクチャ特性などに関する追加情報を指定する必要がある。これらのパラメータは、共有DPB情報パラメータ(例えば、shared_dpb_info_parameters())と称することができるであろう。好ましい実施形態では、共有DPB情報パラメータがシグナリングされることを示すためにフラグがビットストリームでシグナリングされる。このためのシンタックスの例が以下のように示される。
1に等しいshared_dpb_info_present_flagは、共有DPB情報パラメータが存在し、DPBが共有DPBか、またはレイヤごとにレイヤワイズの別々のDPBとして動作することを指定する。0に等しいshared_dpb_info_present_flagは、共有DPB情報パラメータが存在せず、DPBがレイヤごとにレイヤワイズの別々のDPBとして動作することを指定する。shared_dpb_info_present_flagが存在しないとき、その値は、0に等しいと推定される。
shared_dpb_info_present_flagは、パラメータセット、例えば、ビデオパラメータセット(VPS)および/またはシーケンスパラメータセット(sps)および/またはピクチャパラメータセット(pps:picture parameter set)および/またはスライスセグメントヘッダで、および/またはビットストリームの任意の他の規範的な部分でシグナリングされる。好ましい実施形態において、shared_dpb_info_present_flagは、hrd_parameters()でシグナリングされる。hrd_parameters()は、JCTVC−L1003、JCTVC−N1008、およびJCT3V−E1004において記載される。
選択されたhrd_parameters()シンタックス構造におけるshared_dpb_info_present_flagが1に等しい1つのケースでは、変数SharedDPBFlagが1に等しくセットされる場合には共有DPBとして、あるいは変数SharedDPBFlagが0に等しくセットされる場合にはレイヤワイズの別々のDPBとしてのいずれかで動作するようにDPBをスケジュールできる。
変数SharedDPBPreferredFlagは、外部手段によって指定されてもよく、あるいは外部手段によって指定されないときには、0に等しくセットされてもよい。
変数SharedDPBFlagの値が上記のステップによりhrd_parameters()におけるshared_dpb‐info_present_flagに基づいてセットされなかったときには、この変数が次のように導出される。
SharedDPBFlag=shared_dpb_info_present_flag&&SharedDPBPreferredFlag
他のケースでは、変数SharedDPBFlagは、shared_dpb_info_present_flagおよび/またはSharedDPBPreferredFlagのいくつかの他の論理結合(例えば、OR、NOR、XOR、AND、NAND、NOTなど)に基づいてセットされる。
SharedDPBFlagが0に等しければ、各レイヤは、それ自体の別々のDPBを有し、各レイヤのDPBは、レイヤにわたってDPBを共有することなく別々に独立して動作する。そうでない場合には、DPBは、解像度、ビット深度、色度などのような同じピクチャ特性を有するレイヤが共通のDPBを共有する共有DPBとして動作する。
JCTVC−O1008およびJCT3V−F1004では、DPB(例えば、復号ピクチャバッファ)動作は、ビデオパラメータセット(VPS)およびシーケンスパラメータセット(SPS)でシグナリングされたパラメータに基づいて定義される。DPBのサイズは、以下に示されるdpb_size()シンタックス構造(例えば、dpb_size())でシグナリングされる。dpb_size()シンタックス構造は、出力レイヤセットの数(例えば、NumOutputLayerSets)に関する、テンポラル・サブレイヤの数(例えば、vps_max_sub_layers_minus1)に関する、sub−dpbの数(例えば、NumSubDpbs[i])に関する様々なDPBパラメータおよび対応するフラグもシグナリングする。
加えて、JCTVC−O1008およびJCT3V−F1004では、レイヤごとにCVS(例えば、符号化ビデオシーケンス)中に存在するテンポラル・サブレイヤの最大数に関する情報が以下に示されるようにシンタックス要素sub_layers_vps_max_minus1[i]を用いてVPS拡張で条件付きでシグナリングされる。
または、以下に示される通りである。
1に等しい‘vps_sub_layers_max_minus1_present_flag’は、シンタックス要素sub_layers_vps_max_minus1[i]が存在することを指定する。0に等しいvps_sub_layers_max_minus1_present_flagは、シンタックス要素sub_layers_vps_max_minus1[i]が存在しないことを指定する。
‘sub_layers_vps_max_minus1’[i]+1は、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに関わるCVS中に存在するテンポラル・サブレイヤの最大数を指定する。sub_layers_vps_max_minus1[i]の値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲内にあるものとする。存在しないとき、sub_layers_vps_max_minus1[i]は、vps_max_sub_layers_minus1に等しいと推定される。
‘vps_max_sub_layers_minus1’は、以下に示されるようにVPSでシグナリングされる。
または、以下に示される通りである。
vps_max_sub_layers_minus1+1は、VPSを参照する各CVS中に存在するテンポラル・サブレイヤの最大数を指定する。vps_max_sub_layers_minus1の値は、両端値を含めて、0から6までの範囲内にある。
‘vps_video_parameter_set_id’は、他のシンタックス要素による参照のためのVPSを識別する。
いくつかのビデオ符号化方式では、SHVCの異なるレイヤが異なるフレームレートを有するケースがある。例えば、レイヤ0が30ヘルツのフレームレートを有し、レイヤ1が60ヘルツのフレームレートを有し、レイヤ2が120ヘルツのフレームレートを有し、レイヤ3が240ヘルツのフレームレートを有する。かかるケースでは、より低いフレームレートをもつレイヤ(例えば、レイヤ1)と比較して高いフレームレートをもつレイヤ(例えば、レイヤ3)ほど、高い最大テンポラル・サブレイヤの値(例えば、sub_layers_vps_max_minus1[i])を有する。レイヤ固有のサブDPBを用いて動作しているときの特定の出力レイヤセットに関しては、max_vps_dec_pic_buffering_minus1[][][]をレイヤセットにおけるテンポラル・サブレイヤの最大数に基づいてシグナリングおよび/または制約することが望ましい。
例として、ビットストリームは、5つのレイヤ、すなわち、レイヤ0、レイヤ1、レイヤ2、レイヤ3、およびレイヤ4を含む。第1のレイヤセットは、レイヤ0、1を含み、第2のレイヤセットは、0、1、2を含み、第3のレイヤセットは、0、1、3を含む。例として、レイヤセットごとに、シンタックスは、どのレイヤが出力レイヤセットと呼ばれるセットのうちの出力レイヤであるかをシグナリングする。
第1の実施形態においては、サブDPBのための出力レイヤセットに関するmax_vps_dec_pic_buffering_minus1パラメータを対応するレイヤセットにおける最大テンポラル・サブレイヤまでに限ってシグナリングすることが望ましい。そうでない場合には、この修正がなければ、かかるレイヤセットのためのこの最大テンポラル・サブレイヤからvps_max_sub_layers_minus1までのテンポラル・サブレイヤに関するmax_vps_dec_pic_buffering_minus1のパラメータは、レイヤセットがそれらの数のテンポラル・サブレイヤを含まないために無意味である。
第2の実施形態においては、各シグナリングされる出力レイヤセットに対応するレイヤセットにおけるレイヤごとに、最大テンポラル・サブレイヤのリストを導出することが望ましい。各サブDPBのための出力レイヤセットごとに、最大テンポラル・サブレイヤの上記の導出リストを考慮してmax_vps_dec_pic_buffering_minus1パラメータが制約される。この制約は、レイヤ中の最大テンポラル・サブレイヤを考慮してレイヤセットにおけるレイヤごとに改善されたDPB動作を可能にする。この制約は、さらに、出力レイヤセットに対応するレイヤセットのためのテンポラル・サブレイヤの最大数がvps_max_sub_layers_minus1より小さいときに、シグナリングされるパラメータをより有意義にし、かつ不正確でないようにする。
上記の第1の実施形態に関して、変数MaxSublayersLayersetMinus1[i]は、次のように導出される。
サブDPBのための出力レイヤセットに関するmax_vps_dec_pic_buffering_minus1パラメータは、対応するレイヤセットにおける最大テンポラル・サブレイヤまでに限って、すなわち、MaxSublayersLayersetMinus1[i]までに限ってシグナリングされる。以下に示されるdpb_size()シンタックス構造(たとえば、dpb_size())は、このシグナリングが対応するレイヤセットにおける最大テンポラル・サブレイヤに関係するように、MaxSublayersLayersetMinus1[i]を組み込むために修正される。
1に等しい‘sub_layer_flag_info_present_flag’[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しい‘sub_layer_dpb_info_present_flag’[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
‘max_vps_dec_pic_buffering_minus1’[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]は、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
‘max_vps_num_reorder_pics’[i][j]は、HighestTidがjに等しいときに、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大許容数を指定する。max_vps_num_reorder_pics[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][j−1]に等しいと推定される。
0に等しくない‘max_vps_latency_increase_plus1’[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
max_vps_latency_increase_plus1[i][j]が0に等しくないとき、VpsMaxLatencyPictures[i][j]の値は、次のように指定される。
VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j]−1(F−4)
max_vps_latency_increase_plus1[i]が0に等しいとき、対応する制限は何も表現されない。max_vps_latency_increase_plus1[i][j]の値は、両端値を含めて、0から232−2までの範囲内にあるものとする。
別の実施形態では、以下が適用される。
1に等しい‘sub_layer_flag_info_present_flag’[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からMaxSublayersLayersetMinus[i]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しい‘sub_layer_dpb_info_present_flag’[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
‘max_vps_dec_pic_buffering_minus1’[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]が、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
‘max_vps_num_reorder_pics’[i][j]は、HighestTidがjに等しいときに、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大許容数を指定する。max_vps_num_reorder_pics[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][j−1]に等しいと推定される。
0に等しくない‘max_vps_latency_increase_plus1’[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
max_vps_latency_increase_plus1[i][j]が0に等しくないとき、VpsMaxLatencyPictures[i][j]の値は、次のように指定される。
VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j]−1(F−4)
max_vps_latency_increase_plus1[i]が0に等しいとき、対応する制限は何も表現されない。max_vps_latency_increase_plus1[i][j]の値は、両端値を含めて、0から2
32−2までの範囲内にあるものとする。
上記の第1の実施形態に関して、変数MaxSublayersLayersetMinus1[i]は、代わりに次のように導出されてもよい。
上記の第1の実施形態に関して、変数MaxSublayersLayersetMinus1[i]は、このシグナリングが対応するレイヤセットにおける最大テンポラル・サブレイヤに関係するように、以下に示されるdpb_size()シンタックス構造(例えば、dpb_size())内で導出されてもよい。
上記の第1の実施形態に関して、変数MaxSublayersLayersetMinus1[i]は、このシグナリングが対応するレイヤセットにおける最大テンポラル・サブレイヤに関係するように、以下に示されるdpb_size()シンタックス構造(例えば、dpb_size())内で導出されてもよい。
MaxSublayersLayersetMinus1[i]は、MaxSublayersLayerset[i]、または任意の適切な参照値をもつ任意の他の適切な変数名であってもよいことが理解されるべきである。
上記の第2の実施形態に関して、パラメータmax_vps_dec_pic_buffering_minus1[i][k][j]は、最大テンポラル・サブレイヤの導出リストを考慮して制約される。max_vps_dec_pic_buffering_minus1[i][k][j]に対する制約が最大テンポラル・サブレイヤの導出リストと関係するような、以下に示される、dpb_size()シンタックス構造(たとえば、dpb_size())。
1に等しい‘sub_layer_flag_info_present_flag’[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からvps_max_sub_layers_minus1]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しい‘sub_layer_dpb_info_present_flag’[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
‘max_vps_dec_pic_buffering_minus1’[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]は、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
ビットストリーム適合性の必要条件は、両端値を含めて、sub_layers_vps_max_minus1[LayerIdxInVps[lid[i][k]]]からvps_max_sub_layers_minus1までの範囲内のjに関して、max_vps_dec_pic_buffering_minus1[i][k][j]がmax_vps_dec_pic_buffering_minus1[i][k][sub_layers_vps_max_minus1[LayerIdxInVps[lid[i][k]]]]に等しいことである。
max_vps_num_reorder_pics[i][j]は、HighestTidがjに等しいときに、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAのあとに続くことができる、1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大許容数を指定する。max_vps_num_reorder_pics[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][j1]に等しいと推定される。
0に等しくない‘max_vps_latency_increase_plus1’[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
max_vps_latency_increase_plus1[i][j]が0に等しくないとき、VpsMaxLatencyPictures[i][j]の値は、次のように指定される。
VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j]−1(F−4)
max_vps_latency_increase_plus1[i][j]が0に等しいとき、対応する制限は何も表現されない。max_vps_latency_increase_plus1[i][j]の値は、両端値を含めて、0から232−2までの範囲内にあるものとする。
別の実施形態では、NumSubDpbs[i]の導出は、NumLayersInIdListリストへのインデックスを用いる。さらに、デフォルト出力レイヤセットのためにoutput_layer_set_idx_minus1[i]に関する推定が定義されてもよい。この導出および定義された推測は、以下のように定義される。
output_layer_set_idx_minus1[i]は、両端値を含めて、0からvps_num_layer_sets_minus1−1までの範囲内にあるものとする。output_layer_set_idx_minus1[i]シンタックス要素の長さは、Ceil(Log2(vps_num_layer_sets_minus1))ビットである。
両端値を含めて、0からvps_num_layer_sets_minus1までの範囲内のiをもつi番目の出力レイヤセットのためのレイヤセットがi番目のレイヤセットであると推定される。output_layer_set_idx_minus1[i]は、両端値を含めて、0からvps_num_layer_sets_minus1までの範囲内のiに対してiに等しいと推定される。
i番目の出力レイヤセットに関わるサブDPBの数を指定する変数NumSubDpbs[i]は、NumLayersInIdList[output_layer_set_idx_minus1[i]+1]に等しくセットされる。
別の実施形態では、両端値を含めて0からNumLayersInIdList[lsIdx]に等しいjに対してoutput_layer_flag[i][j]がシグナリングされる。
NumLayersInIdList[lsIdx]をvps_extension()でシグナリングする一例は、以下に示される通りである。
NumLayersInIdList[lsIdx]をvps_extension()でシグナリングする別の例は、以下に示される通りである。
1に等しい‘avc_base_layer_flag’は、ベースレイヤがITU−T勧告H.264|ISO/IEC14496−10に適合することを指定する。0に等しいavc_base_layer_flagは、ベースレイヤがこの仕様に適合することを指定する。
1に等しい‘default_one_target_output_layer_idc’は、それぞれのデフォルト出力レイヤセットにおいてnuh_layer_idがnuhLayerIdAに等しく、AuxId[nuhLayerIdA]が0に等しいようなnuh_layer_idの最高値をもつレイヤのみがターゲット出力レイヤであることを指定する。0に等しいdefault_one_target_output_layer_idcは、それぞれのデフォルト出力レイヤセットにおけるすべてのレイヤがターゲット出力レイヤであることを指定する。default_one_target_output_layer_idcは、この仕様のこのバージョンに適合するビットストリームでは0または1に等しいものとする。default_one_target_output_layer_idcに関する他の値は、ITU−T|ISO/IECにより将来の使用のために予約される。
‘output_layer_set_idx_minus1’[i]+1は、i番目の出力レイヤセットのためのレイヤセットのインデックスを指定する。output_layer_set_idx_minus1[i]の値は、両端値を含めて、0からvps_num_layer_sets_minus1−1までの範囲内にあるものとする。output_layer_set_idx_minus1[i]シンタックス要素の長さは、Ceil(Log2(vps_num_layer_sets_minus1))ビットである。
両端値を含めて、0からvps_num_layer_sets_minus1までの範囲内のiをもつi番目の出力レイヤセットのためのレイヤセットがi番目のレイヤセットであると推定される。
i番目の出力レイヤセットに関わるサブDPBの数を指定する変数NumSubDpbs[i]は、NumLayersInIdList[i]に等しくセットされる。別の実施形態では、i番目の出力レイヤセットに関わるサブDPBの数を指定する変数NumSubDpbs[i]は、NumLayersInIdList[output_layer_set_idx_minus1[i]+1]に等しくセットされる。
1に等しい‘output_layer_flag’[i][j]は、i番目の出力レイヤセットにおけるj番目のレイヤがターゲット出力レイヤであることを指定する。0に等しいoutput_layer_flag[i][j]は、i番目の出力レイヤセットにおけるj番目のレイヤがターゲット出力レイヤではないことを指定する。
‘profile_level_tier_idx’[i]は、i番目の出力レイヤセットに適用されるprofile_tier_level()シンタックス構造の、VPSにおけるprofile_tier_level()シンタックス構造のリスト中へのインデックスを指定する。profile_level_tier_idx[i]シンタックス要素の長さは、Ceil(Log2(vps_num_profile_tier_level_minus1+1))ビットである。profile_level_tier_idx[0]の値は、0に等しいと推定される。profile_level_tier_idx[i]の値は、両端値を含めて、0からvps_num_profile_tier_level_minus1までの範囲内にあるものとする。
別の実施形態では、1つ以上のシンタックス要素を上に示されるより少い回数かまたは多い回数シグナリングできるであろう。例えば、1ビットのフラグ値がN回シグナリングされることが示されうる。その代わりに、1ビットのフラグ値がM回シグナリングされてもよく、Mは、Nより多くても、またはNより少なくてもよい。
別の実施形態では、シンタックス要素のうちの1つ以上がue(v)の代わりにu(v)既知の固定ビット数を用いてシグナリングされてもよい。例えば、u(8)もしくはu(16)またはu(32)あるいはu(64)などを用いてシンタックス要素をシグナリングできるであろう。
別の実施形態では、u(v)符号化のような固定ビット数の代わりにue(v)または何らかの他の符号化方式によってこれらのシンタックス要素のうちの1つ以上をシグナリングできるであろう。
別の実施形態では、様々なシンタックス要素およびそれらのセマンティクスの名前が記載されたシンタックスまたはセマンティクスと比較して+1または+2を加えるか、または−1または−2を減じることによって変えられてもよい。
さらに別の実施形態では、様々なシンタックス要素がピクチャごとにビットストリーム中のどこでもシグナリングされてよい。例えば、様々なシンタックスがスライスセグメントヘッダ、pps/sps/vps/もしくは任意の他のパラメータセットまたはビットストリームの他の規範的な部分でシグナリングされてもよい。
さらに別の実施形態では、出力レイヤセットに関係するすべての実施形態を出力動作点[2、3]および/または動作点[1]に適用できるであろう。
用語「コンピュータ可読媒体」は、コンピュータまたはプロセッサによってアクセスできる任意の利用可能な媒体を指す。用語「コンピュータ可読媒体」は、本明細書では、非一時的かつ有形のコンピュータおよび/またはプロセッサ可読媒体を示す。限定ではなく、例として、コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶デバイス、あるいは命令の形態の所望のプログラムコードまたはデータ構造を運ぶか、または記憶するために用いることができて、コンピュータまたはプロセッサによってアクセスできる任意の他の媒体を備える。ディスク(disk)およびディスク(disc)は、本明細書では、コンパクトディスク(CD:compact disc)、レーザディスク(laser disc)、光ディスク(optical disc)、デジタルバーサタイルディスク(DVD:digital versatile disc)、フロッピーディスク(floppy disk)およびBlu−ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、磁気的にデータを再生し、一方でディスク(disc)は、レーザを用いて光学的にデータを再生する。
留意すべきは、本明細書に記載される方法の1つ以上がハードウェアで実装されてもよく、および/またはハードウェアを用いて行われてもよいことである。例えば、本明細書に記載される方法またはアプローチの1つ以上は、チップセット、ASIC、大規模集積回路(LSI)または集積回路などで実装されてもよく、および/またはそれらを用いて実現されてもよい。
本明細書に開示されるそれぞれの方法は、記載される方法を達成するための1つ以上のステップまたは動作を備える。本方法のステップおよび/または動作は、特許請求の範囲から逸脱することなく、相互に交換されてもよく、および/または単一のステップに組み合わされてもよい。言い換えれば、記載される方法の適切なオペレーションのためにステップまたは動作の特定の順序が必要とされない限り、特定のステップおよび/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく修正されてもよい。
理解すべきは、特許請求の範囲が上に示された通りの構成および構成要素には限定されないことである。特許請求の範囲から逸脱することなく、本明細書に記載される配置、オペレーション、ならびにシステム、方法、および装置の詳細に様々な修正、変更および変形がなされてもよい。
メッセージを送信し、ビットストリームをバッファリングするためのシステムおよび方法が実装された1つ以上の電子デバイスの例を示すブロック図である。
メッセージを送信し、ビットストリームをバッファリングするためのシステムおよび方法が実装された1つ以上の電子デバイスの例を示す別のブロック図である。
電子デバイス上のエンコーダ604の一構成を示すブロック図である。
電子デバイス上のエンコーダ604の一構成を示す別のブロック図である。
電子デバイス上のデコーダの一構成を示すブロック図である。
電子デバイス上のデコーダの一構成を示す別のブロック図である。
復号ピクチャバッファの動作のための方法の一構成を示すブロック図である。
異なるNALユニットヘッダ・シンタックスを示す。
異なるNALユニットヘッダ・シンタックスを示す。
異なるNALユニットヘッダ・シンタックスを示す。
一般的なNALユニット・シンタックスを示す。
例示的なビデオパラメータ拡張シンタックスを示す。
例示的なビデオパラメータ拡張シンタックスを示す。
例示的なビデオパラメータ拡張シンタックスを示す。
例示的なop_dpb_info_parameters(j)シンタックスを示す。
例示的なop_dpb_info_parameters(j)シンタックスを示す。
別の例示的なビデオパラメータ拡張シンタックスを示す。
例示的なoop_dpb_info_parameters(j)シンタックスを示す。
別の例示的なoop_dpb_info_parameters(j)シンタックスを示す。
例示的なnum_dpb_info_parametersシンタックスを示す。
別の例示的なoop_dpb_info_parameters(j)シンタックスを示す。
別の例示的なnum_dpb_info_parametersシンタックスを示す。
別の例示的なnum_dpb_info_parametersシンタックスを示す。
別の例示的なビデオパラメータ拡張シンタックスおよびlayer_dpb_info(i)を示す。
例示的なoop_dpb_info_parametersおよびlayer_dpb_info(i)シンタックスを示す。
sps_max_num_reorder_pics[i]は、HighestTidがiに等しいときに、復号順ではCVS中のいずれかのピクチャに先行し、かつ出力順ではそのピクチャの後に続くことができるピクチャの最大許容数を示す。sps_max_num_reorder_pics[i]の値は、両端値を含めて、0からsps_max_dec_pic_buffering_minus1[i]までの範囲内にあるものとする。iが0より大きいとき、sps_max_num_reorder_pics[i]は、sps_max_num_reorder_pics[i−1]以上であるものとする。sps_max_num_reorder_pics[i]は、sps_sub_layer_ordering_info_present_flagが0に等しいことに起因して、両端値を含めて、0からsps_max_sub_layers_minus1−1までの範囲内のiに関して存在しないときには、それがsps_max_num_reorder_pics[sps_max_sub_layers_minus1]に等しいと推定される。
0に等しくないvps_max_latency_increase_plus1[id][j][k]は、HighestTidがkに等しいときに、出力順ではインデックスidと関連付けられた動作点に関わるjに等しいnuh_layer_idをもつレイヤに関するCVS中のいずれかのピクチャに先行し、復号順ではそのピクチャの後に続くことができるピクチャの最大数を指定する、VpsMaxLatencyPictures[id][j][k]の値を計算するために用いられる。
加えて、JCTVC−O1008およびJCT3V−F1004では、レイヤごとにCVS(例えば、符号化ビデオシーケンス)中に存在するテンポラル・サブレイヤの最大数に関する情報が以下に示されるようにシンタックス要素sub_layers_vps_max_minus1[i]を用いてVPS拡張で条件付きでシグナリングされる。
または、以下に示される通りである。
1に等し
いvps_sub_layers_max_minus1_present_fla
gは、シンタックス要素sub_layers_vps_max_minus1[i]が存在することを指定する。0に等しいvps_sub_layers_max_minus1_present_flagは、シンタックス要素sub_layers_vps_max_minus1[i]が存在しないことを指定する。
sub_layers_vps_max_minus1[i]+1は、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに関わるCVS中に存在するテンポラル・サブレイヤの最大数を指定する。sub_layers_vps_max_minus1[i]の値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲内にあるものとする。存在しないとき、sub_layers_vps_max_minus1[i]は、vps_max_sub_layers_minus1に等しいと推定される。
vps_max_sub_layers_minus
1は、以下に示されるようにVPSでシグナリングされる。
または、以下に示される通りである。
vps_video_parameter_set_idは、他のシンタックス要素による参照のためのVPSを識別する。
1に等しいsub_layer_flag_info_present_flag[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
max_vps_dec_pic_buffering_minus1[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]は、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
max_vps_num_reorder_pics[i][j]は、HighestTidがjに等しいときに、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大許容数を指定する。max_vps_num_reorder_pics[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][j−1]に等しいと推定される。
0に等しくないmax_vps_latency_increase_plus1[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
1に等しいsub_layer_flag_info_present_flag[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からMaxSublayersLayersetMinus[i]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
max_vps_dec_pic_buffering_minus1[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]が、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
max_vps_num_reorder_pics[i][j]は、HighestTidがjに等しいときに、復号順ではCVS中のi番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ出力順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大許容数を指定する。max_vps_num_reorder_pics[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_num_reorder_pics[i][j−1]に等しいと推定される。
0に等しくないmax_vps_latency_increase_plus1[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からMaxSublayersLayersetMinus1[i]−1までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
1に等しいsub_layer_flag_info_present_flag[i]は、sub_layer_dpb_info_present_flag[i][j]が、両端値を含めて、1からvps_max_sub_layers_minus1]までの範囲内のiに関して存在することを指定する。0に等しいsub_layer_flag_info_present_flag[i]は、0より大きいjの各値に関して、sub_layer_dpb_info_present_flag[i][j]が存在せず、値が0に等しいと推定されることを指定する。
1に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]が、j番目のサブレイヤに対して、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関して存在し、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]が、j番目のサブレイヤに対して存在することを指定する。0に等しいsub_layer_dpb_info_present_flag[i][j]は、max_vps_dec_pic_buffering_minus1[i][k][j]の値が、両端値を含めて、0からNumSubDpbs[i]−1までの範囲内のkに関してmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しく、max_vps_num_reorder_pics[i][j]およびmax_vps_latency_increase_plus1[i][j]の値がそれぞれmax_vps_num_reorder_pics[i][j−1]およびmax_vps_latency_increase_plus1[i][j−1]に等しくセットされることを指定する。iの任意の可能な値に対するsub_layer_dpb_info_present_flag[i][0]の値は、1に等しいと推定される。
max_vps_dec_pic_buffering_minus1[i][k][j]+1は、HighestTidがjに等しいときに、ピクチャ記憶バッファの単位でのi番目の出力レイヤセットにおけるCVSのためのk番目のサブDPBの最大所要サイズを指定する。jが0より大きいとき、max_vps_dec_pic_buffering_minus1[i][k][j]は、max_vps_dec_pic_buffering_minus1[i][k][j−1]以上であるものとする。max_vps_dec_pic_buffering_minus1[i][k][j]は、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_dec_pic_buffering_minus1[i][k][j−1]に等しいと推定される。
ビットストリーム適合性の必要条件は、両端値を含めて、sub_layers_vps_max_minus1[LayerIdxInVps[lid[i][k]]]からvps_max_sub_layers_minus1までの範囲内のjに関して、max_vps_dec_pic_buffering_minus1[i][k][j]がmax_vps_dec_pic_buffering_minus1[i][k][sub_layers_vps_max_minus1[LayerIdxInVps[lid[i][k]]]]に等しいことである。
0に等しくないmax_vps_latency_increase_plus1[i][j]は、HighestTidがjに等しいときに、出力順ではCVS中に1に等しいPicOutputFlagをもつピクチャを含むいずれかのアクセスユニットauAに先行し、かつ復号順では1に等しいPicOutputFlagをもつピクチャを含むそのアクセスユニットauAの後に続くことができる、i番目の出力レイヤセットにおいて1に等しいPicOutputFlagをもつピクチャを含んだアクセスユニットの最大数を指定する、VpsMaxLatencyPictures[i][j]の値を計算するために用いられる。max_vps_latency_increase_plus1[i][j]は、sub_layer_dpb_info_present_flag[i][j]が0に等しいことに起因して、両端値を含めて、1からvps_max_sub_layers_minus1−1までの範囲内のjに関して存在しないときには、それがmax_vps_latency_increase_plus1[i][j−1]に等しいと推定される。
1に等しいavc_base_layer_flagは、ベースレイヤがITU−T勧告H.264|ISO/IEC14496−10に適合することを指定する。0に等しいavc_base_layer_flagは、ベースレイヤがこの仕様に適合することを指定する。
1に等しいdefault_one_target_output_layer_idcは、それぞれのデフォルト出力レイヤセットにおいてnuh_layer_idがnuhLayerIdAに等しく、AuxId[nuhLayerIdA]が0に等しいようなnuh_layer_idの最高値をもつレイヤのみがターゲット出力レイヤであることを指定する。0に等しいdefault_one_target_output_layer_idcは、それぞれのデフォルト出力レイヤセットにおけるすべてのレイヤがターゲット出力レイヤであることを指定する。default_one_target_output_layer_idcは、この仕様のこのバージョンに適合するビットストリームでは0または1に等しいものとする。default_one_target_output_layer_idcに関する他の値は、ITU−T|ISO/IECにより将来の使用のために予約される。
output_layer_set_idx_minus1[i]+1は、i番目の出力レイヤセットのためのレイヤセットのインデックスを指定する。output_layer_set_idx_minus1[i]の値は、両端値を含めて、0からvps_num_layer_sets_minus1−1までの範囲内にあるものとする。output_layer_set_idx_minus1[i]シンタックス要素の長さは、Ceil(Log2(vps_num_layer_sets_minus1))ビットである。
1に等しいoutput_layer_flag[i][j]は、i番目の出力レイヤセットにおけるj番目のレイヤがターゲット出力レイヤであることを指定する。0に等しいoutput_layer_flag[i][j]は、i番目の出力レイヤセットにおけるj番目のレイヤがターゲット出力レイヤではないことを指定する。
profile_level_tier_idx[i]は、i番目の出力レイヤセットに適用されるprofile_tier_level()シンタックス構造の、VPSにおけるprofile_tier_level()シンタックス構造のリスト中へのインデックスを指定する。profile_level_tier_idx[i]シンタックス要素の長さは、Ceil(Log2(vps_num_profile_tier_level_minus1+1))ビットである。profile_level_tier_idx[0]の値は、0に等しいと推定される。profile_level_tier_idx[i]の値は、両端値を含めて、0からvps_num_profile_tier_level_minus1までの範囲内にあるものとする。