(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】指定されたレイヤのためのスケーラブル・ネスティングSEIメッセージ
(51)【国際特許分類】
H04N 19/70 20140101AFI20231128BHJP
H04N 19/30 20140101ALI20231128BHJP
【FI】
H04N19/70
H04N19/30
(21)【出願番号】P 2022519024
(86)(22)【出願日】2020-09-21
(86)【国際出願番号】 US2020051859
(87)【国際公開番号】W WO2021022263
(87)【国際公開日】2021-02-04
【審査請求日】2022-05-11
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ワーン,イエ-クイ
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2015/104451(WO,A1)
【文献】米国特許出願公開第2015/0271529(US,A1)
【文献】米国特許出願公開第2014/0098894(US,A1)
【文献】High efficiency video coding,Recommendation ITU-T H.265,H.265(02/2018),ITU-T,2018年02月,pp.33,67-70,287-290,298,351-352
【文献】Ye-Kui Wang,AHG8/AHG17: Scalable nesting SEI message,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0190-v2,16th Meeting: Geneva, CH,2019年10月,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
復号器において実装される方法であって、
前記復号器の受信機によって、1つ以上のレイヤ及び現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージを含むビットストリームを受信することであって、前記スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び前記現在のSEI NALユニットのレイヤ識別子(Id)以上であるレイヤIdを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all layers flag(all_layers_flag)を含む、受信すること
であって、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のNALユニット・ヘッダ・レイヤId(nuh_layer_id)を有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、1に等しく、nuh_layer_idは、レイヤの識別子を指定する構文要素であり、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しい、ことと、
プロセッサによって、ネスティング・レイヤ数(nestingNumLayers)及びネスティング・レイヤIdのリスト(NestingLayerId[i])を導出することであって、前記nestingNumLayersは、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、前記スケーラブル・ネスティングされたSEIメッセージが適用される前記レイヤのnuh_layer_id値のリストを指定し、前記nestingNumLayers及び前記NestingLayerId[i]は、
【数9】
として導出され、vps_max_layers_minus1+1はビデオ・パラメータ・セット(VPS)によって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、ことと、
前記復号器の
前記プロセッサによって、前記1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することと、
前記プロセッサによって、復号されたビデオ・シーケンスの一部として表示するために前記復号されたピクチャを転送することと、を含む、方法。
【請求項2】
符号化器に実装される方法であって、
前記符号化器のプロセッサによって、1つ以上のレイヤを含むビットストリームを符号化することと、
前記プロセッサによって、現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)を符号化することであって、前記スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び前記現在のSEI NALユニットのレイヤ識別子(Id)以上であるレイヤIdを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all layers flag(all_layers_flag)を含む、符号化すること
であって、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のNALユニット・ヘッダ・レイヤId(nuh_layer_id)を有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、1に等しく、nuh_layer_idは、レイヤの識別子を指定する構文要素であり、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しい、ことと、
前記プロセッサによって、ネスティング・レイヤ数(nestingNumLayers)及びネスティング・レイヤIdのリスト(NestingLayerId[i])を導出することであって、前記nestingNumLayersは、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、前記スケーラブル・ネスティングされたSEIメッセージが適用される前記レイヤのnuh_layer_id値のリストを指定し、前記nestingNumLayers及び前記NestingLayerId[i]は、
【数10】
として導出され、vps_max_layers_minus1+1はビデオ・パラメータ・セット(VPS)によって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、ことと、
前記プロセッサによって、前記スケーラブル・ネスティングされたSEIメッセージに基づいて、前記レイヤに対してビットストリーム適合性テストのセットを実行することと、
前記プロセッサに結合されたメモリによって、復号器に向かって通信するための前記ビットストリームを記憶することと、を含む、方法。
【請求項3】
復号器であって、
1つ以上のレイヤ及び現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージを含むビットストリームを受信する
ための受信手段であって、前記スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び前記現在のSEI NALユニットのレイヤ識別子(Id)以上であるレイヤIdを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all layers flag(all_layers_flag)を含
み、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のNALユニット・ヘッダ・レイヤId(nuh_layer_id)を有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、1に等しく、nuh_layer_idは、レイヤの識別子を指定する構文要素であり、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しい、受信手段と、
ネスティング・レイヤ数(nestingNumLayers)及びネスティング・レイヤIdのリスト(NestingLayerId[i])を導出するための導出手段であって、前記nestingNumLayersは、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、前記スケーラブル・ネスティングされたSEIメッセージが適用される前記レイヤのnuh_layer_id値のリストを指定し、前記nestingNumLayers及び前記NestingLayerId[i]は、
【数11】
として導出され、vps_max_layers_minus1+1はビデオ・パラメータ・セット(VPS)によって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、導出手段と、
前記1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することを行うための復号手段と、
復号されたビデオ・シーケンスの一部として表示するために前記復号されたピクチャを転送するための転送手段と、を含む、復号器。
【請求項4】
ビデオ符号化器であって、
1つ以上のレイヤを含むビットストリームを符号化することと、
現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)を符号化することであって、前記スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び前記現在のSEI NALユニットのレイヤ識別子(Id)以上であるレイヤIdを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all layers flag(all_layers_flag)を含む、符号化することと、を行うための符号化手段
であって、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のNALユニット・ヘッダ・レイヤId(nuh_layer_id)を有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、1に等しく、nuh_layer_idは、レイヤの識別子を指定する構文要素であり、
前記scalable nesting all_layers_flagは、前記現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに前記スケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しい、符号化手段と、
ネスティング・レイヤ数(nestingNumLayers)及びネスティング・レイヤIdのリスト(NestingLayerId[i])を導出するための導出手段であって、前記nestingNumLayersは、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、前記スケーラブル・ネスティングされたSEIメッセージが適用される前記レイヤのnuh_layer_id値のリストを指定し、前記nestingNumLayers及び前記NestingLayerId[i]は、
【数12】
として導出され、vps_max_layers_minus1+1はビデオ・パラメータ・セット(VPS)によって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、前記スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、導出手段と、
前記スケーラブル・ネスティングされたSEIメッセージに基づいて、前記レイヤに対してビットストリーム適合性テストのセットを実行するための仮想参照復号器(HRD)手段と、を含む、符号化手段と、
復号器に向かって通信するためのビットストリームを記憶することを行うための記憶手段と、を含む、
ビデオ符号化器。
【発明の詳細な説明】
【技術分野】
【0002】
本開示は、一般的に、ビデオ・コーディングに関係し、特に、マルチ・レイヤ・ビットストリームにおける符号化レイヤをサポートするために使用されるスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージに関係する。
【背景技術】
【0003】
比較的短いビデオでさえ描写するために必要とされるビデオ・データの量は、相当なものであり、これは、データがストリーム化されるか、又は他の方法で限定された帯域幅容量を有する通信ネットワークを介して通信されるときに、困難になることがある。したがって、ビデオ・データは、一般に、現代の電気通信ネットワークを介して通信される前に圧縮される。また、メモリ・リソースが制限されることがあるため、ビデオが記憶デバイスに記憶される場合に、ビデオのサイズも問題となる可能性がある。ビデオ圧縮デバイスは、しばしば、送信又は記憶の前にビデオ・データをコーディングするためにソースにおいてソフトウェア及び/又はハードウェアを使用し、それによってデジタル・ビデオ画像を表すのに必要なデータ量を減少させる。次いで、圧縮されたデータは、ビデオ・データを復号するビデオ解凍デバイスによって宛先で受信される。ネットワーク・リソースが限られており、より高いビデオ品質の要求が絶えず増加しているため、ピクチャ品質にほとんど犠牲を払わずに圧縮比を改善する改善された圧縮及び解凍技術が望ましい。
【発明の概要】
【0004】
一実施形態では、開示は、復号器において実装される方法であって、復号器の受信機によって、1つ以上のレイヤ及び現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージを含むビットストリームを受信することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び現在のSEI NALユニットのレイヤ識別子(Id)以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all layers flag(all_layers_flag)を含む、受信することと、復号器のプロセッサによって、1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することと、プロセッサによって、復号されたビデオ・シーケンスの一部として表示するために復号されたピクチャを転送することと、を含む、方法を含む。
【0005】
いくつかのビデオ・コーディング・システムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を含む。例えば、SEIメッセージは、標準との適合性についてビットストリームを検査するために使用されるパラメータを含んでもよい。いくつかの例では、ビデオは、複数のレイヤを使用してビットストリームにコーディングされる。スケーラブル・ネスティングSEIメッセージは、複数のレイヤに対するSEIメッセージを含めるために用いられてもよい。例えば、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージを含む。問題は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがアクセス・ユニット(AU)におけるすべてのレイヤに適用されることを示すためにフラグが使用されるときに発生する。AUは、異なるレイヤに含まれ、同じ出力時間に関連するコーディングされたピクチャのセットである。このアプローチは、すべてのAUがすべてのレイヤに対するピクチャをときに機能する。しかしながら、場合によっては、ピクチャは、いくつかのレイヤで出力時間に対して存在し、他のレイヤにおいて省かれることがある。例えば、高フレームレートレイヤは、各AUにおけるピクチャを含んでもよく、一方、低フレームレートレイヤは、高フレームレートレイヤによって占有される多くのAUにおけるピクチャを省略する。その結果、フラグは、現在のAUにおけるピクチャを含むレイヤにのみ、SEIメッセージが適用されるようにする。これは仮想参照復号器(HRD)が現在のAUにおけるピクチャを省くレイヤにスケーラブル・ネスティングSEIメッセージを関連付けることができないことがあるため、適合性テストエラーを引き起こす。例えば、そのようなレイヤは、現在のAUの後のAUにピクチャを含むことがある。このような場合、HRDは、後のAUが適合性についてテストされるときに、スケーラブル・ネスティングSEIメッセージを、そのようなレイヤに適用されるものとして認識しない。したがって、HRDは、すべてのレイヤに対するフラグが不完全なAUで用いられているときに、後のAUで適合性についてこのようなレイヤを正確にテストすることができないことがある。
【0006】
本例は、上記のエラーを訂正するために、scalable nesting all_layers_flagを含む。scalable nesting all_layers_flagは、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがビデオ・パラメータ・セット(VPS)で指定されたすべてのレイヤに適用されることを示すようにセットされ得る。VPSは、すべてのレイヤをリストする。それゆえ、このアプローチにより、符号化器は、スケーラブル・ネスティングされたSEIメッセージがいつすべてのレイヤにグローバルに適用されるかを明確に示すことを可能にする。HRD適合性テスト・プロセスは、スケーラブル・ネスティングSEIメッセージに関連する不完全なAUに続くAUで予測不可能なエラーを返すことなく、適合性についてビットストリームを検査することができる。それゆえ、scalable nesting all_layers_flagは、不完全なAUが存在するときに、適合性についてビットストリームが正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flagは、そのようなメッセージがすべてのレイヤに適用されるときに、スケーラブル・ネスティングされたSEIメッセージのための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0007】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、scalable nesting all_layers_flagは、現在のSEI NALユニットのnuh_layer_id以上のNALユニット・ヘッダ・レイヤId(nuh_layer_id)を有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、1に等しいことを提供する。
【0008】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、scalable nesting all_layers_flagは、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいこと指定するときに、0に等しいことを提供する。
【0009】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、プロセッサによって、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定するネスティング・レイヤ数(nestingNumLayers)変数を導出することをさらに含むことを提供する。
【0010】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、プロセッサによって、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定するネスティング・レイヤIdのリスト(NestingLayerId[i])を導出することをさらに含むことを提供する。
【0011】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、nestingNumLayers及びNestingLayerId[i]が、
【数1】
として導出され、vps_max_layers_minus1+1はビデオ・パラメータ・セット(VPS)によって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、ことを提供する。
【0012】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、スケーラブル・ネスティングSEIメッセージが、SEIメッセージを特定のレイヤに関連付けるメカニズムを提供することを提供する。
【0013】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、コーディングされたピクチャが、スケーラブル・ネスティングされたSEIメッセージに基づいて復号されることを提供する。
【0014】
一実施形態では、開示は、符号化器に実装される方法であって、符号化器のプロセッサによって、1つ以上のレイヤを含むビットストリームを符号化することと、プロセッサによって、現在のSEI NALユニットにおいてスケーラブル・ネスティングSEIを符号化することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び現在のSEI NALユニットのレイヤId以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all_layers_flagを含む、符号化することと、プロセッサによって、スケーラブル・ネスティングされたSEIメッセージに基づいて、レイヤに対してビットストリーム適合性テストのセットを実行することと、プロセッサに結合されたメモリによって、復号器に向かって通信するためのビットストリームを記憶することと、を含む、方法を含む。
【0015】
いくつかのビデオ・コーディング・システムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を含む。例えば、SEIメッセージは、標準との適合性についてビットストリームを検査するために使用されるパラメータを含んでもよい。いくつかの例では、ビデオは、複数のレイヤを使用してビットストリームにコーディングされる。スケーラブル・ネスティングSEIメッセージは、複数のレイヤに対するSEIメッセージを含めるために用いられてもよい。例えば、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージを含む。問題は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがアクセス・ユニット(AU)におけるすべてのレイヤに適用されることを示すためにフラグが使用されるときに発生する。AUは、異なるレイヤに含まれ、同じ出力時間に関連するコーディングされたピクチャのセットである。このアプローチは、すべてのAUがすべてのレイヤに対するピクチャをときに機能する。しかしながら、場合によっては、ピクチャは、いくつかのレイヤで出力時間に対して存在し、他のレイヤにおいて省かれることがある。例えば、高フレームレートレイヤは、各AUにおけるピクチャを含んでもよく、一方、低フレームレートレイヤは、高フレームレートレイヤによって占有される多くのAUにおけるピクチャを省略する。その結果、フラグは、現在のAUにおけるピクチャを含むレイヤにのみ、SEIメッセージが適用されるようにする。これは仮想参照復号器(HRD)が現在のAUにおけるピクチャを省くレイヤにスケーラブル・ネスティングSEIメッセージを関連付けることができないことがあるため、適合性テストエラーを引き起こす。例えば、そのようなレイヤは、現在のAUの後のAUにピクチャを含むことがある。このような場合、HRDは、後のAUが適合性についてテストされるときに、スケーラブル・ネスティングSEIメッセージを、そのようなレイヤに適用されるものとして認識しない。したがって、HRDは、すべてのレイヤに対するフラグが不完全なAUで用いられているときに、後のAUで適合性についてこのようなレイヤを正確にテストすることができないことがある。
【0016】
本例は、上記のエラーを訂正するために、scalable nesting all_layers_flagを含む。scalable nesting all_layers_flagは、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがビデオ・パラメータ・セット(VPS)で指定されたすべてのレイヤに適用されることを示すようにセットされ得る。VPSは、すべてのレイヤをリストする。それゆえ、このアプローチにより、符号化器は、スケーラブル・ネスティングされたSEIメッセージがいつすべてのレイヤにグローバルに適用されるかを明確に示すことを可能にする。HRD適合性テスト・プロセスは、スケーラブル・ネスティングSEIメッセージに関連する不完全なAUに続くAUで予測不可能なエラーを返すことなく、適合性についてビットストリームを検査することができる。それゆえ、scalable nesting all_layers_flagは、不完全なAUが存在するときに、適合性についてビットストリームが正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flagは、そのようなメッセージがすべてのレイヤに適用されるときに、スケーラブル・ネスティングされたSEIメッセージのための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0017】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されることを指定するときに、scalable nesting all_layer_flagを1にセットすることをさらに含むことを提供する。
【0018】
任意選択で、前述の態様のいずれかにおいて、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいこと指定するときに、scalable nesting all_layer_flagを0にセットすることをさらに含むことを提供する。
【0019】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、ビットストリーム適合性テストのセットを実行することは、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定するnestingNumLayers変数を導出することをさらに含むことを提供する。
【0020】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、ビットストリーム適合性テストのセット実行することは、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定するNestingLayerId[i]を導出することをさらに含むことを提供する。
【0021】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、nestingNumLayers及びNestingLayerId[i]が、
【数2】
として導出され、vps_max_layers_minus1+1はVPSによって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する、ことを提供する。
【0022】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、スケーラブル・ネスティングSEIメッセージが、SEIメッセージを特定のレイヤに関連付けるメカニズムを提供する。
【0023】
一実施形態では、本開示は、プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機と、含み、プロセッサ、受信機、メモリ、及び送信機は、先行する態様のいずれかの方法を実行するように構成されているビデオ・コーディング・デバイスを含む。
【0024】
一実施形態では、本開示は、ビデオ・コーディング・デバイスによる使用のためのコンピュータ・プログラム製品を含む非一時的コンピュータ可読媒体であって、コンピュータ・プログラム製品は、プロセッサによって実行されるときに、ビデオ・コーディング・デバイスが先行する態様のいずれかの方法を実行するように、非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を含む、非一時的コンピュータ可読媒体を含む。
【0025】
一実施形態では、本開示は、復号器であって、1つ以上のレイヤ及び現在のSEI NALユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージを含むビットストリームを受信することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び現在のSEI NALユニットのレイヤId以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all_layers_flagを含む、受信することを行うための受信手段と、1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することを行うための復号手段と、復号されたビデオ・シーケンスの一部として表示するために復号されたピクチャを転送するための転送手段と、を含む、復号器。
【0026】
いくつかのビデオ・コーディング・システムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を含む。例えば、SEIメッセージは、標準との適合性についてビットストリームを検査するために使用されるパラメータを含んでもよい。いくつかの例では、ビデオは、複数のレイヤを使用してビットストリームにコーディングされる。スケーラブル・ネスティングSEIメッセージは、複数のレイヤに対するSEIメッセージを含めるために用いられてもよい。例えば、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージを含む。問題は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがアクセス・ユニット(AU)におけるすべてのレイヤに適用されることを示すためにフラグが使用されるときに発生する。AUは、異なるレイヤに含まれ、同じ出力時間に関連するコーディングされたピクチャのセットである。このアプローチは、すべてのAUがすべてのレイヤに対するピクチャをときに機能する。しかしながら、場合によっては、ピクチャは、いくつかのレイヤで出力時間に対して存在し、他のレイヤにおいて省かれることがある。例えば、高フレームレートレイヤは、各AUにおけるピクチャを含んでもよく、一方、低フレームレートレイヤは、高フレームレートレイヤによって占有される多くのAUにおけるピクチャを省略する。その結果、フラグは、現在のAUにおけるピクチャを含むレイヤにのみ、SEIメッセージが適用されるようにする。これは仮想参照復号器(HRD)が現在のAUにおけるピクチャを省くレイヤにスケーラブル・ネスティングSEIメッセージを関連付けることができないことがあるため、適合性テストエラーを引き起こす。例えば、そのようなレイヤは、現在のAUの後のAUにピクチャを含むことがある。このような場合、HRDは、後のAUが適合性についてテストされるときに、スケーラブル・ネスティングSEIメッセージを、そのようなレイヤに適用されるものとして認識しない。したがって、HRDは、すべてのレイヤに対するフラグが不完全なAUで用いられているときに、後のAUで適合性についてこのようなレイヤを正確にテストすることができないことがある。
【0027】
本例は、上記のエラーを訂正するために、scalable nesting all_layers_flagを含む。scalable nesting all_layers_flagは、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがビデオ・パラメータ・セット(VPS)で指定されたすべてのレイヤに適用されることを示すようにセットされ得る。VPSは、すべてのレイヤをリストする。それゆえ、このアプローチにより、符号化器は、スケーラブル・ネスティングされたSEIメッセージがいつすべてのレイヤにグローバルに適用されるかを明確に示すことを可能にする。HRD適合性テスト・プロセスは、スケーラブル・ネスティングSEIメッセージに関連する不完全なAUに続くAUで予測不可能なエラーを返すことなく、適合性についてビットストリームを検査することができる。それゆえ、scalable nesting all_layers_flagは、不完全なAUが存在するときに、適合性についてビットストリームが正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flagは、そのようなメッセージがすべてのレイヤに適用されるときに、スケーラブル・ネスティングされたSEIメッセージのための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0028】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、復号器が、前述の態様のいずれかの方法を実行するようにさらに構成されていることを提供する。
【0029】
一実施形態では、本開示は、符号化器であって、1つ以上のレイヤを含むビットストリームを符号化することと、現在のSEI NALユニットにおいてスケーラブル・ネスティングSEIを符号化することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージ、及び現在のSEI NALユニットのレイヤId以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するall_layers_flagを含む、符号化することと、を行うための符号化手段と、スケーラブル・ネスティングされたSEIメッセージに基づいて、レイヤに対してビットストリーム適合性テストのセットを実行するためのHRD)手段と、を含む、符号化手段と、復号器に向かって通信するためのビットストリームを記憶することを行うための記憶手段と、を含む、符号化器を含む。
【0030】
いくつかのビデオ・コーディング・システムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を含む。例えば、SEIメッセージは、標準との適合性についてビットストリームを検査するために使用されるパラメータを含んでもよい。いくつかの例では、ビデオは、複数のレイヤを使用してビットストリームにコーディングされる。スケーラブル・ネスティングSEIメッセージは、複数のレイヤに対するSEIメッセージを含めるために用いられてもよい。例えば、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージを含む。問題は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがアクセス・ユニット(AU)におけるすべてのレイヤに適用されることを示すためにフラグが使用されるときに発生する。AUは、異なるレイヤに含まれ、同じ出力時間に関連するコーディングされたピクチャのセットである。このアプローチは、すべてのAUがすべてのレイヤに対するピクチャをときに機能する。しかしながら、場合によっては、ピクチャは、いくつかのレイヤで出力時間に対して存在し、他のレイヤにおいて省かれることがある。例えば、高フレームレートレイヤは、各AUにおけるピクチャを含んでもよく、一方、低フレームレートレイヤは、高フレームレートレイヤによって占有される多くのAUにおけるピクチャを省略する。その結果、フラグは、現在のAUにおけるピクチャを含むレイヤにのみ、SEIメッセージが適用されるようにする。これは仮想参照復号器(HRD)が現在のAUにおけるピクチャを省くレイヤにスケーラブル・ネスティングSEIメッセージを関連付けることができないことがあるため、適合性テストエラーを引き起こす。例えば、そのようなレイヤは、現在のAUの後のAUにピクチャを含むことがある。このような場合、HRDは、後のAUが適合性についてテストされるときに、スケーラブル・ネスティングSEIメッセージを、そのようなレイヤに適用されるものとして認識しない。したがって、HRDは、すべてのレイヤに対するフラグが不完全なAUで用いられているときに、後のAUで適合性についてこのようなレイヤを正確にテストすることができないことがある。
【0031】
本例は、上記のエラーを訂正するために、scalable nesting all_layers_flagを含む。scalable nesting all_layers_flagは、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがビデオ・パラメータ・セット(VPS)で指定されたすべてのレイヤに適用されることを示すようにセットされ得る。VPSは、すべてのレイヤをリストする。それゆえ、このアプローチにより、符号化器は、スケーラブル・ネスティングされたSEIメッセージがいつすべてのレイヤにグローバルに適用されるかを明確に示すことを可能にする。HRD適合性テスト・プロセスは、スケーラブル・ネスティングSEIメッセージに関連する不完全なAUに続くAUで予測不可能なエラーを返すことなく、適合性についてビットストリームを検査することができる。それゆえ、scalable nesting all_layers_flagは、不完全なAUが存在するときに、適合性についてビットストリームが正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flagは、そのようなメッセージがすべてのレイヤに適用されるときに、スケーラブル・ネスティングされたSEIメッセージのための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0032】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装は、符号化器が、先行する態様のいずれかの方法を実行するようにさらに構成されていることを提供する。
【0033】
明確にするために、前述の実施形態のいずれか1つが、他の前述の実施形態のいずれか1つ以上と組み合わせられて、本開示の範囲内の新たな実施形態を作成してもよい。
【0034】
これら及び他の特徴は、添付の図面及び特許請求の範囲と併せて取得される以下の詳細な説明から、より明確に理解されるであろう。
【図面の簡単な説明】
【0035】
本開示をより完全に理解するために、添付の図面及び詳細な説明に関連して取得される、以下の簡単な説明を参照し、同様の参照番号は同様の部分を表す。
【0036】
【
図1】ビデオ信号をコーディングする例示的な方法のフローチャートである。
【0037】
【
図2】ビデオ・コーディングのための例示的なコーディング及び復号(コーデック)システムの概略図である。
【0038】
【
図3】例示的なビデオ符号化器を示す概略図である。
【0039】
【0040】
【
図5】例示的な仮想参照復号器(HRD)を示す概略図である。
【0041】
【
図6】レイヤ間予測のために構成された例示的なのマルチ・レイヤ・ビデオ・シーケンスを示す概略図である。
【0042】
【
図7】例示的なビットストリームを示す概略図である。
【0043】
【
図8】例示的なビデオ・コーディング・デバイスの概略図である。
【0044】
【
図9】レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含むビットストリームにビデオ・シーケンスを符号化する例示的な方法のフローチャートである。
【0045】
【
図10】レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含むビットストリームからビデオ・シーケンスを復号する例示的な方法のフローチャートである。
【0046】
【
図11】レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含むビットストリームを使用してビデオ・シーケンスを符号化するための例示的なシステムの概略図である。
【発明を実施するための形態】
【0047】
最初に、1つ以上の実施形態の例示的な実装が以下に提供されるが、開示されたシステム及び/又は方法は、現在知られているか、存在するかを問わず、任意の数の技術を使用して実装され得ることが理解されるべきである。本開示は、本明細書に示され説明された例示的な設計及び実装を含む、以下に示された例示的な実装、図面、及び技術には決して限定されないが、添付の特許請求の範囲の範囲内で、それらの均等物の全範囲で修正されてもよい。
【0048】
以下の用語は、本明細書において反対のコンテキストで使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示にさらなる明確性を提供することが意図されている。しかし、異なるコンテキストにおいては、用語は異なって説明されてもよい。したがって、以下の定義は、補足とみなされるべきであり、本明細書においてそのような用語に対して提供されている説明の任意の他の定義を制限するものとみなされるべきではない。
【0049】
ビットストリームは、符号化器と復号器との間の送信のために圧縮されるビデオ・データを含むビットのシーケンスであってもよい。符号化器は、ビデオ・データをビットストリームに圧縮するための符号化プロセスを使用するように構成されているデバイスであってもよい。復号器は、表示のためにビットストリームからビデオ・データを再構成するために復号プロセスを使用するように構成されているデバイスであってもよい。ピクチャは、フレーム又はそのフィールドを生成する輝度サンプルのアレイ及び/又は色差サンプルのアレイであってもよい。符号化又は復号されているピクチャは、議論を明確にするために現在のピクチャと呼ばれることがある。コーディングされたピクチャは、アクセス・ユニット(AU)内のNALユニット・ヘッダ・レイヤ識別子(nuh_layer_id)の特定の値を有し、ピクチャのすべてのコーディング・ツリー・ユニット(CTU)を含む、ビデオ・コーディング・レイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニットを含むピクチャのコーディングされた表現であってもよい。復号されたピクチャは、復号プロセスをコーディングされたピクチャに適用することによって生成されるピクチャであってもよい。AUは、異なるレイヤに含まれ、復号されたピクチャ・バッファ(DPB)からの出力のために同じ時間に関連するコーディングされたピクチャのセットであってもよい。NALユニットは、データのタイプの表示であるロー・バイト・シーケンス・ペイロード(RBSP)の形式のデータを含み、必要に応じてエミュレーション防止バイトと散在する構文構造であってもよい。VCL NALユニットは、ピクチャのコーディングされたスライスなどのビデオ・データを含むようにコーディングされたNALユニットであってもよい。非VCL NALユニットは、ビデオ・データの復号、適合性検査又は他の動作をサポートする、構文及び/又はパラメータなどの非ビデオ・データを含むNALユニットであってもよい。レイヤは、レイヤId(識別子)及び関連する非VCL NALユニットによって示されるように、特定の特性(例えば、共通解像度、フレーム・レート、画像サイズなど)を共有するVCL NALユニットのセットであってもよい。NALユニット・ヘッダ・レイヤ識別子(nuh_layer_id)は、NALユニットを含むレイヤの識別子を指定する構文要素であってもよい。ビデオ・パラメータ・セット(VPS)は、ビデオ全体に関係するパラメータを含むデータ・ユニットであってもよい。コーディングされたビデオ・シーケンスは、1つ以上のコーディングされたピクチャのセットであってもよい。復号されたビデオ・シーケンスは、1つ以上の復号されたピクチャのセットであってもよい。
【0050】
仮想参照復号器(HRD)は、符号化プロセスによって生成されたビットストリームの変動性を検査して、指定された制約との適合性を検証する符号化器で動作する復号器モデルであってもよい。ビットストリーム適合性テストは、符号化されたビットストリームが汎用ビデオ・コーディング(VVC)などの標準に準拠するどうかを決定するためのテストであり得る。HRDパラメータは、HRDの動作条件を初期化及び/又は定義する構文要素である。HRDパラメータは、補足エンハンスメント情報(SEI)メッセージに含まれてもよい。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を搬送する、指定された意味を持つ構文構造であってもよい。SEI NALユニットは、1つ以上のSEIメッセージを含むNALユニットであってもよい。特定のSEI NALユニットは、現在のSEI NALユニットと呼ばれることがある。スケーラブル・ネスティングSEIメッセージは、1つ以上の出力レイヤ・セット(OLS)又は1つ以上のレイヤに対応する複数のSEIメッセージを含むメッセージであってもよい。バッファ期間(BP)SEIメッセージは、HRDを初期化してコーディングされたピクチャ・バッファ(CPB)を管理するためのHRDパラメータを含むSEIメッセージであってもよい。ピクチャ・タイミング(PT) SEIメッセージは、CPB及び/又は復号されたピクチャ・バッファ(DPB)でのアクセスユニット(AU)に対する送達情報を管理するためのHRDパラメータを含むSEIメッセージであってもよい。復号ユニット情報(DUI)SEIメッセージは、CPB及び/又はDPBでのDUの送達情報を管理するためのHRDパラメータを含むSEIメッセージであってもよい。
【0051】
スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージのセットであってもよい。スケーラブル・ネスティングされたSEIメッセージは、スケーラブル・ネスティングSEIメッセージ内にネスティングされたSEIメッセージであってもよい。スケーラブル・ネスティング・レイヤId(layer_Id [i])は、スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定するスケーラブル・ネスティングSEIメッセージにおける構文要素であってもよい。scalable nesting all layers flag(all_layers_flag)は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがすべてのレイヤに適用されるかどうかを指定するスケーラブル・ネスティングSEIメッセージにおける構文要素であってもよい。スケーラブル・ネスティング・レイヤ数-1(num_layers_minus1)は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定する、スケーラブル・ネスティングSEIメッセージにおける構文要素であってもよい。VPSの最大レイヤ-1(vps_max_layers_minus1)は、VPSによって指定されるレイヤ数を指定するVPSにおける構文要素であってもよい。VPSレイヤId(vps_layer_id[i])は、i番目のレイヤのnuh_layer_id値を指定するVPSにおける構文要素であってもよい。ネスティング・レイヤ数(nestingNumLayers)は、ビットストリームにおけるデータに基づいてスケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数にセットされる変数であってもよい。ネスティング・レイヤIdのリスト(NestingLayerId[i])は、ビットストリームにおけるデータに基づいて、各レイヤiに対してスケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定するためにセットされる変数であってもよい。一般レイヤ・インデックス(GeneralLayerIdx)は、ビットストリームにおけるデータに基づいて、各レイヤのレイヤ・インデックスをnuh_layer_idで指定するためにセットされる変数であってもよい。
【0052】
以下の頭字語が、本明細書において使される。すなわち、アクセス・ユニット(AU)、コーディング・ツリー・ブロック(CTB)、コーディング・ツリー・ユニット(CTU)、コーディング・ユニット(CU)、コーディングされたレイヤ・ビデオ・シーケンス(CLVS)、コーディングされたレイヤ・ビデオ・シーケンス開始(CLVSS)、コーディングされたビデオ・シーケンス(CVS)、コーディングされたビデオ・シーケンス監視(CVSS)、共同ビデオ専門家チーム(JVET)、動き制約タイルセット(MCTS)、最大転送ユニット(MTU)、ネットワーク抽象化レイヤ(NAL)、出力レイヤ・セット(OLS)、ピクチャ・オーダ・カウント(POC)、ランダム・アクセス・ポイント(RAP)、ロー・バイト・シーケンス・ペイロード (RBSP)、シーケンス・パラメータ・セット(SPS)、ビデオ・パラメータ・セット(VPS)、汎用ビデオ・コーディング(VVC)。
【0053】
多くのビデオ圧縮技術が、最小限のデータ損失でビデオ・ファイルのサイズを低減するために使用され得る。例えば、ビデオ圧縮技術は、ビデオ・シーケンスにおけるデータ冗長性を低減又は除去するために、空間的(例えば、イントラ・ピクチャ)予測及び/又は時間的(例えば、インター・ピクチャ)予測を実行することを含むことができる。ブロックベースのビデオ・コーディングの場合、ビデオ・スライス(例えば、ビデオ・ピクチャ又はビデオ・ピクチャの一部分)は、ビデオ・ブロックにパーティショニングされてもよく、これは、ツリー・ブロック(CTB)、コーディング・ツリー・ユニット(CTU)、コーディング・ユニット(CU)、及び/又はコーディング・ノードと呼ばれることがある。ピクチャのイントラ・コーディングされた(I)スライス内のビデオ・ブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに対して空間的予測を用いてコーディングされる。ピクチャのインター・コーディングされた一方向予測(P)又は双方向予測(B)スライス内のビデオ・ブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに対する空間的予測、又は他の参照ピクチャ内の参照サンプルに対する時間的予測を使用することによってコーディングされてもよい。ピクチャは、フレーム及び/又は画像と呼ばれることがあり、参照ピクチャは、参照フレーム及び/又は参照画像と呼ばれることがある。空間的又は時間的予測は、画像ブロックを表す予測ブロックをもたらす。残差データは、オリジナルの画像ブロックと予測ブロックとの間の画素差を表す。したがって、インター・コーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルにしたがって符号化され、残差データは、コーディングされたブロックと予測ブロックとの間の差を示す。イントラ・コーディングされたブロックは、イントラ・コーディング・モードと残差データにしたがって符号化される。さらなる圧縮のために、残差データは、画素ドメインから変換ドメインに変換されてもよい。これらは、残差変換係数をもたらし、これは、量子化されてもよい。量子化された変換係数は、初期的に二次元アレイに配置されてもよい。量子化された変換係数は、変換係数の一次元ベクトルを生成するために走査されてもよい。エントロピー・コーディングは、より多くの圧縮を達成するために適用されてもよい。このようなビデオ圧縮技術が、以下により詳細に論じられる。
【0054】
符号化されたビデオが正確に復号されることを確実にするために、ビデオは、対応するビデオ・コーディング規格に従って符号化され、復号される。ビデオ・コーディング規格は、国際電気通信連合(ITU)規格化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)動き・ピクチャ・エキスパート・グループ(MPEG)-1 Part 2、ITU-T H.262若しくはISO/IEC MPEG-2 Part 2、ITU-T H.263、ISO/IEC MPEG-4 Part 2、ITU-T H.264若しくはISO/IEC MPEG-4 Part 10としても知られる高度ビデオ・コーディング(AVC)、及びITU-T H.265若しくはMPEG-H Part2としても知られる高効率ビデオ・コーディング(HEVC)を含む。AVCは、スケーラブル・ビデオ・コーディング(SVC)、マルチビュー・ビデオ・コーディング(MVC)及びマルチビュー・ビデオ・コーディング・プラス・デプス(MVC+D)、及び三次元(3D)AVC(3D‐AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC (MV-HEVC)、3D HEVC (3D-HEVC)などの拡張を含む。ITU‐TとISO/IECの共同ビデオ専門家チーム(JVET)は、汎用ビデオ・コーディング(Versatile Video Coding)と呼ばれるビデオ・コーディング標準の開発を始めた。VVCは、JVET-N1001-v14を含む作業ドラフト(WD)に含まれている。
【0055】
いくつかのビデオ・コーディング・システムは、補足エンハンスメント情報(SEI)メッセージを用いる。SEIメッセージは、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を含む。例えば、SEIメッセージは、標準との適合性についてビットストリームを検査するために使用されるパラメータを含んでもよい。いくつかの例では、ビデオは、複数のレイヤを使用してビットストリームにコーディングされる。スケーラブル・ネスティングSEIメッセージは、複数のレイヤに対するSEIメッセージを含めるために用いられてもよい。例えば、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージを含む。
【0056】
第1の問題は、スケーラブル・ネスティングされたSEIメッセージとレイヤとの間の対応を示すために、スケーラブル・ネスティングSEIメッセージにレイヤ識別子(Id)のリストが含まれるときに、発生することがある。スケーラブル・ネスティングSEIメッセージは、SEIネットワーク抽象化レイヤ(NAL)ユニットに含まれ、これは、議論を明確にするために現在のSEI NALユニットと表記され得る。現在のSEI NALユニットは、レイヤIdに関連する。スケーラブル・ネスティング・SEIメッセージは、常に現在のSEI NALユニットに関連するレイヤに関係する。これは、現在のSEI NALユニットのレイヤIdが現在のSEI NALユニットに含まれ、現在のNALユニットに含まれ、現在のスケーラブル・ネスティングSEIメッセージにも含まれるため、冗長なシグナリングにつながる。
【0057】
第1の例において、本明細書に開示されているのは、特定のレイヤと併せて使用するためのスケーラブル・ネスティングSEIメッセージの改良である。具体的には、レイヤIdはNALユニットのヘッダ・レイヤId (nuh_layer_id)と呼ぶことがある。現在のSEI NALユニットのnuh_layer_idは、スケーラブル・ネスティングSEIメッセージから除外される。これは、スケーラブル・ネスティングされたSEIメッセージが適用される各レイヤに対してnuh_layer_idを指定するスケーラブル・ネスティング・レイヤId(layer_Id[i])構文要素を用いることによって行われ得る。scalable nesting layer_id[i]は、現在のSEI NALユニットのnuh_layer_idより大きいnuh_layer_idのみを含むように制約される。それゆえ、現在のSEI NALユニットのnuh_layer_idは、スケーラブル・ネスティングSEIメッセージから省かれ、現在のSEI NALユニットから推論される。これは、冗長なIdを省くことによって、スケーラブル・ネスティングSEIメッセージを改良する。例えば、scalable nesting layer_id[i]を符号化/復号するループは、より短い時間で1回実行し、これは、符号化及び/又は復号中のプロセッサ・リソースを低減する。さらに、これは、ビットストリームにおけるスケーラブル・ネスティングSEIメッセージの各々に対する符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0058】
第2の問題は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがアクセス・ユニット(AU)におけるすべてのレイヤに適用されることを示すためにフラグが使用されるときに発生する。AUは、異なるレイヤに含まれ、同じ出力時間に関連するコーディングされたピクチャのセットである。このアプローチは、すべてのAUがすべてのレイヤに対するピクチャをときに機能する。しかしながら、場合によっては、ピクチャは、いくつかのレイヤで出力時間に対して存在し、他のレイヤにおいて省かれることがある。例えば、高フレームレートレイヤは、各AUにおけるピクチャを含んでもよく、一方、低フレームレートレイヤは、高フレームレートレイヤによって占有される多くのAUにおけるピクチャを省略する。その結果、フラグは、現在のAUにおけるピクチャを含むレイヤにのみ、SEIメッセージが適用されるようにする。これは仮想参照復号器(HRD)が現在のAUにおけるピクチャを省くレイヤにスケーラブル・ネスティングSEIメッセージを関連付けることができないことがあるため、適合性テストエラーを引き起こす。例えば、そのようなレイヤは、現在のAUの後のAUにピクチャを含むことがある。このような場合、HRDは、後のAUが適合性についてテストされるときに、スケーラブル・ネスティングSEIメッセージを、そのようなレイヤに適用されるものとして認識しない。したがって、HRDは、すべてのレイヤに対するフラグが不完全なAUで用いられているときに、後のAUで適合性についてこのようなレイヤを正確にテストすることができないことがある。
【0059】
第2の例では、本明細書で開示されているのは、上述のエラーを訂正するためのscalable nesting all layers flag(all_layers_flag)である。scalable nesting all_layers_flagは、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージがビデオ・パラメータ・セット(VPS)で指定されたすべてのレイヤに適用されることを示すようにセットされ得る。VPSは、すべてのレイヤをリストする。それゆえ、このアプローチにより、符号化器は、スケーラブル・ネスティングされたSEIメッセージがいつすべてのレイヤにグローバルに適用されるかを明確に示すことを可能にする。HRD適合性テスト・プロセスは、スケーラブル・ネスティングSEIメッセージに関連する不完全なAUに続くAUで予測不可能なエラーを返すことなく、適合性についてビットストリームを検査することができる。それゆえ、scalable nesting all_layers_flagは、不完全なAUが存在するときに、適合性についてビットストリームが正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flagは、そのようなメッセージがすべてのレイヤに適用されるときに、スケーラブル・ネスティングされたSEIメッセージのための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリームのサイズを低減する。その結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0060】
図1は、ビデオ信号をコーディングする例示的な方法100のフローチャートである。具体的には、ビデオ信号は符号化器で符号化される。符号化プロセスは、様々なメカニズムを使用することによってビデオ信号を圧縮して、ビデオ・ファイル・サイズを低減する。より小さいファイルサイズは、圧縮されたビデオ・ファイルがユーザに送信されることを可能にする一方で、関連する帯域幅オーバーヘッドを低減する。次いで、復号器は、圧縮されたビデオ・ファイルを復号して、エンド・ユーザに表示するために元のビデオ信号を再構成する。復号プロセスは、一般に、符号化プロセスをミラーリングし、復号器がビデオ信号を一貫して再構成することを可能にする。
【0061】
ステップ101で、ビデオ信号が符号化器に入力される。例えば、ビデオ信号はメモリに記憶された圧縮されていないビデオ・ファイルであってもよい。別の例として、ビデオ・ファイルは、ビデオ・カメラなどのビデオ・キャプチャ・デバイスによってキャプチャされ、ビデオのライブ・ストリーミングをサポートするように符号化されてもよい。ビデオ・ファイルは、オーディオ・コンポーネントとビデオ・コンポーネントの両方を含み得る。ビデオ・コンポーネントは、シーケンスで視認されるときに視覚的な動きの印象を与える一連の画像フレームを含む。フレームは、本明細書では輝度コンポーネント(又は輝度サンプル)と呼ばれる光と、色差コンポーネント(又は色サンプル)と呼ばれる色の観点で表現されるピクセルを含む。いくつかの例では、フレームは、三次元視認をサポートするための深度値も含み得る。
【0062】
ステップ103で、ビデオがブロックにパーティショニングされる。パーティショニングは、圧縮のために、各フレーム内のピクセルを正方形及び/又は長方形のブロックにサブ分割することを含む。例えば、高効率ビデオ・コーディング(HEVC)(H.265及びMPEG-H Part 2としても知られている)において、フレームは、最初に、所定のサイズ(例えば、64画素×64画素)のブロックである、コーディング・ツリー・ユニット(CTU)に分割することができる。CTUは、輝度サンプルと色差サンプルの両方を含む。コーディング・ツリーを使用して、CTUをブロックに分割し、次いで、さらなる符号化をサポートする構成が達成されるまで、ブロックを再帰的にサブ分割してもよい。例えば、フレームの輝度コンポーネントは、個々のブロックが比較的均一な光値を含むまで、サブ分割されてもよい。さらに、フレームの色差コンポーネントは、個々のブロックが比較的均一な色値を含むまで、サブ分割されてもよい。したがって、パーティショニング・メカニズムはビデオ・フレームのコンテンツに依存して変化する。
【0063】
ステップ105で、ステップ103でパーティショニングされた画像ブロックを圧縮するために、様々な圧縮メカニズムが採用される。例えば、インター予測及び/又はイントラ予測が使用されてもよい。インター予測は、共通のシーンにおけるオブジェクトが連続したフレームに現れる傾向があるという事実を利用するように設計されている。したがって、参照フレームにおけるオブジェクトを示すブロックは、隣接するフレーム内に繰り返し記述される必要はない。具体的には、テーブルのようなオブジェクトは、複数のフレームにわたって一定の位置に留まることがある。それゆえ、テーブルは一回記述され、隣接するフレームは参照フレームに戻って参照することができる。パターン・マッチング・メカニズムを使用して、複数のフレームにわたってオブジェクトをマッチングしてもよい。さらに、移動するオブジェクトは、例えば、オブジェクトの動き又はカメラの動きのために、複数のフレームにわたって表わされてもよい。特定の例として、ビデオは、複数のフレームにわたって画面を横切って移動する自動車を示してもよい。動きベクトルを使用して、このような動きを記述することができる。動きベクトルは、フレームにおけるオブジェクトの座標から参照フレームにおけるオブジェクトの座標へのオフセットを提供する二次元ベクトルである。このように、インター予測は、参照フレームにおける対応するブロックからのオフセットを示す動きベクトルのセットとして、現在のフレームにおいて画像ブロックを符号化することができる。
【0064】
イントラ予測は、共通フレームにおけるブロックを符号化する。イントラ予測は、輝度コンポーネントと色差コンポーネントがフレームにおいてクラスターとなる傾向があるという事実を利用する。たとえば、樹木の一部分における緑色のパッチは、同様の緑色のパッチに隣接して位置付けられる傾向がある。イントラ予測は、マルチ方向予測モード(例えば、HEVCにおいては33)、プラナー・モード、及びダイレクト・カレント(DC)モードを使用する。方向モードは、現在のブロックが、対応する方向における隣接ブロックのサンプルと同様/同じであることを示す。プラナー・モードは、行/列に沿った一連のブロック(例えば、平面)が、行の端における近隣のブロックに基づいて補間され得ることを示す。プラナー・モードは、事実上、値を変化させる際に比較的一定の傾きを使用することによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは境界平滑化のために使用され、ブロックが方向予測モードの角度方向に関連するすべての近隣のブロックのサンプルに関連する平均値と同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値の代わりに、様々な関係予測モード値として画像ブロックを表わすことができる。さらに、インター予測ブロックは、実際の値の代わりに、動きベクトル値として画像ブロックを表わすことができる。いずれの場合でも、予測ブロックは、場合によっては、画像ブロックを正確に表さないことがある。差分は、すべて残差ブロックに記憶される。変換は、残差ブロックに適用されて、ファイルをさらに圧縮してもよい。
【0065】
ステップ107で、様々なフィルタリング技術が適用されてもよい。HEVCにおいて、フィルタは、ループ内フィルタリング・スキームに従って適用される。上記に論じたブロックベースの予測は、復号器でブロック状画像の生成をもたらすことがある。さらに、ブロックベースの予測スキームは、ブロックを符号化し、次いで、後で参照ブロックとして使用するために、符号化されたブロックを再構成してもよい。ループ内フィルタリング・スキームは、ノイズ抑制フィルタ、ブロック解除フィルタ、適応ループ・フィルタ、及びサンプル適応オフセット(SAO)フィルタをブロック/フレームに逐次適用する。これらのフィルタは、符号化されたファイルを正確に再構成することができるように、そのようなブロッキング・アーチファクトを軽減する。さらに、これらのフィルタは、再構成された参照ブロックにおけるアーチファクトを軽減し、アーチファクトは、再構成された参照ブロックに基づいて符号化される後続ブロックにおける追加のアーチファクトを生成する可能性が低くなるようにする。
【0066】
いったんビデオ信号がパーティショニングされ、圧縮され、フィルタリングされると、得られたデータはステップ109でビットストリームに符号化される。ビットストリームは、復号器での適切なビデオ信号再構成をサポートするのに望ましい任意の信号データと同様に、上記に論じたデータを含む。例えば、このようなデータは、パーティション・データ、予測データ、残差ブロック、及び復号器にコーディング命令を提供する様々なフラグを含み得る。ビットストリームは、要求により復号器に向かって送信するためにメモリに記憶されてもよい。ビットストリームはまた、複数の復号器に向かってブロードキャスト及び/又はマルチキャストされてもよい。ビットストリームの生成は反復プロセスである。したがって、ステップ101、103、105、107、及び109は、多くのフレーム及びブロックにわたって連続的に及び/又は同時に発生してもよい。
図1に示された順序は、議論の明確さと容易さのために提示されており、ビデオ・コーディング・プロセスを特定の順序に限定することを意図したものではない。
【0067】
復号器は、ビットストリームを受信し、ステップ111で復号処理を始める。具体的には、復号器は、エントロピー復号スキームを使用して、ビットストリームを対応する構文データ及びビデオ・データに変換する。復号器は、ビットストリームからの構文データを使用して、ステップ111でフレームのパーティションを決定する。パーティショニングは、ステップ103でのブロック・パーティショニングの結果とマッチする。ステップ111で使用されるエントロピー・符号化/復号が、ここで説明される。符号化器は、入力画像内の値の空間的位置付けに基づいていくつかの考えられる選択からブロック・パーティショニング・スキームを選択するなど、圧縮プロセス中に多くの選択を行う。厳密な選択をシグナリングすることは、多数のビンを使用してもよい。本明細書で使用される場合、ビンは、変数として扱われるバイナリ値(例えば、コンテキストに応じて変化し得るビット値)である。エントロピー・コーディングは、符号化器が、許容可能なオプションのセットを残して、特定のケースに明らかに実行不可能な任意のオプションを破棄することを可能にする。各許容可能なオプションは、コード・ワードが割り当てられる。コード・ワードの長さは、許容可能なオプションの数(例えば、2つのオプションに対して1つのビン、3つから4つのオプションに対して2つのビンなど)に基づく。符号化器は、次いで、選択されたオプションに対してコード・ワードを符号化する。このスキームは、コード・ワードが、すべての考えられるオプションの考えられる大きなセットからの選択を一意に示すこととは対称的に、許容可能なオプションの小さなサブセットからの選択を一意に示すことが望ましい程度に大きいため、コード・ワードのサイズを低減する。次いで、復号器は、符号化器と同様の方法で許容可能なオプションのセットを決定することによって、選択を復号する。許容可能なオプションのセットを決定することによって、復号器は、コード・ワードを読み取り、符号化器によって行われた選択を決定することができる。
【0068】
ステップ113で、復号器はブロック復号を実行する。具体的には、復号器は、残差ブロックを生成するために逆変換を使用する。次いで、復号器は、残差ブロック及び対応する予測ブロックを使用して、パーティショニングに従って画像ブロックを再構成する。予測ブロックは、ステップ105において符号化器で生成されるように、イントラ予測ブロックとインター予測ブロックの両方を含んでもよい。次いで、再構成された画像ブロックは、ステップ111で決定されたパーティショニング・データに従って、再構成されたビデオ信号のフレーム内に位置決めされる。ステップ113のための構文はまた、上記に論じたのようにエントロピー符号化によってビットストリームにシグナリングされてもよい。
【0069】
ステップ115で、符号化器におけるステップ107と同様の方式で、再構成されたビデオ信号のフレームに対してフィルタリングが実行される。例えば、ノイズ抑制フィルタ、ブロック解除フィルタ、適応ループ・フィルタ、及びSAOフィルタがフレームに適用されて、ブロッキング・アーチファクトを除去してもよい。フレームがフィルタリングされると、ビデオ信号は、ステップ117で、エンド・ユーザによって視認するために、ディスプレイに出力され得る。
【0070】
図2は、ビデオ・コーディングのための例示的なコーディング及び復号(コーデック)システム200の概略図である。具体的には、コーデック・システム200は、動作方法100の実装をサポートするための機能性を提供する。コーデック・システム200は、符号化器及び復号器の両方で使用されるコンポーネントを示すために一般化されている。コーデック・システム200は、動作方法100におけるステップ101及び103に関して論じたように、ビデオ信号を受信及びパーティショニングし、これは、パーティショニングされたビデオ信号201をもたらす。次いで、コーデック・システム200は、方法100におけるステップ105、107、及び109に関して論じたように、符号化器として作用するときに、パーティショニングされたビデオ信号201をコーディングされたビットストリームに圧縮する。復号器として作用する場合、コーデック・システム200は、動作方法100におけるステップ111、113、115、及び117に関して説明したように、ビットストリームからの出力ビデオ信号を生成する。コーデック・システム200は、汎用コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラ・ピクチャ推定コンポーネント215、イントラ・ピクチャ予測コンポーネント217、動き補償コンポーネント219、動き推定コンポーネント221、スケーリング及び逆変換コンポーネント229、フィルタ制御分析コンポーネント227、ループ内フィルタ・コンポーネント225、復号されたピクチャ・バッファ・コンポーネント223、並びにヘッダ・フォーマッティング及びコンテキスト適応二進算術コーディング(CABAC)コンポーネント231を含む。そのようなコンポーネントは、示されるように結合される。
図2において、黒線は符号化/復号されるデータの移動を示し、破線は他のコンポーネントの動作を制御する制御データの移動を示す。コーデック・システム200のコンポーネントはすべて、符号化器内に存在してもよい。復号器は、コーデック・システム200のコンポーネントのサブセットを含み得る。例えば、復号器は、イントラ・ピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング及び逆変換コンポーネント229、ループ内フィルタ・コンポーネント225、及び復号されたピクチャ・バッファ・コンポーネント223を含み得る。ここでは、これらのコンポーネントについて説明する。
【0071】
パーティショニングされたビデオ信号201は、コーディング・ツリーによって画素のブロックに分割されているキャプチャされたビデオ・シーケンスである。コーディング・ツリーは、画素のブロックをより小さな画素のブロックにサブ分割するために、様々な分割モードを使用する。次いで、これらのブロックは、さらに、より小さなブロックにサブ分割され得る。ブロックは、コーディング・ツリー上のノードと呼ばれることがある。より大きな親ノードは、より小さな子ノードに分裂される。ノードがサブ分割される回数は、ノード/コーディング・ツリーの深さと呼ばれる。場合によっては、分割されたブロックは、コーディング・ユニット(CU)に含められ得る。例えば、CUは、CUのための対応する構文命令と一緒に、輝度ブロック、赤色差クロマ(Cr)ブロック、及び青色差クロマ(Cb)ブロックを含むCTUのサブ部分とすることができる。分裂モードは、ノードを、使用される分裂モードに依存して、変化する形状のそれぞれ2つ、3つ、又は4つの子ノードにパーティショニングするために使用されるバイナリ・ツリー(BT)、トリプル・ツリー(TT)、及びクワッド・ツリー(QT)を含み得る。パーティショニングされたビデオ信号201は、圧縮のために、汎用コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラ・ピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227、並びに動き推定コンポーネント221に転送される。
【0072】
汎用コーダ制御コンポーネント211は、アプリケーションの制約に従って、ビデオ・シーケンスの画像をビットストリームにコーディングすることに関係する決定を行うように構成されている。例えば、汎用コーダ制御コンポーネント211は、ビットレート/ビットストリーム・サイズ対再構成品質の最適化を管理する。そのような決定は、記憶空間/帯域幅の可用性及び画像解像度要求に基づいて行われてもよい。汎用コーダ制御コンポーネント211はまた、バッファのアンダーラン及びオーバーランの問題を軽減するために、送信速度に照らしてバッファの利用を管理する。これらの問題を管理するために、汎用コーダ制御コンポーネント211は、他のコンポーネントによるパーティショニング、予測、及びフィルタリングを管理する。例えば、汎用コーダ制御コンポーネント211は、解像度を増加させ、帯域幅の使用を増加させるために圧縮の複雑性を動的に増加させることができ、又は、解像度及び帯域幅の使用を減少させるために圧縮の複雑性を減少させることができる。それゆえ、汎用コーダ制御コンポーネント211は、ビットレートの懸念とビデオ信号再構成品質とのバランスを取るために、コーデック・システム200の他のコンポーネントを制御する。汎用コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを作成する。制御データはまた、復号器で復号するための信号パラメータにビットストリームにおいて符号化されるようにヘッダフォーマット及びCABACコンポーネント231に転送される。
【0073】
パーティショニングされたビデオ信号201はまた、インター予測のために、動き推定コンポーネント221及び動き補償コンポーネント219に送信される。パーティショニングされたビデオ信号201のフレーム又はスライスは、複数のビデオ・ブロックに分割されてもよい。動き推定コンポーネント221及び動き補償コンポーネント219は、時間的予測を提供するために、1つ以上の参照フレーム内の1つ以上のブロックに対して受信されたビデオ・ブロックのインター予測コーディングを実行する。コーデック・システム200は、例えばビデオ・データの各ブロックに対して適切なコーディング・モードを選択するために、複数のコーディング・パスを実行してもよい。
【0074】
動き推定コンポーネント221及び動き補償コンポーネント219は、高度に一体化されてもよいが、概念的な目的のために別々に示されている。動き推定コンポーネント221によって実行される動き推定は、動きベクトルを生成するプロセスであり、動きベクトルは、ビデオ・ブロックの動きを推定する。動きベクトルは、例えば、予測ブロックに対するコーディングされたオブジェクトの変位を示してもよい。予測ブロックは、ピクセル差に関して、コーディングされるブロックに密接にマッチすることが見出されるブロックである。予測ブロックは、参照ブロックとも呼ばれることがある。このような画素差は、絶対差の和(SAD)、二乗差の和(SSD)、又は他の差分メトリックによって決定されてもよい。HEVCは、CTU、コーディング・ツリー・ブロック(CTB)、及びCUを含むいくつかのコーディングされたオブジェクトを使用する。例えば、CTUをCTBに分割することができ、次いで、CTBは、CUに含めるためにCBに分割される。CUは、予測データを含む予測ユニット(PU)及び/又はCUの変換残差データを含む変換ユニット(TU)として符号化できる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み分析を使用することによって、動きベクトル、PU、及びTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームに対する複数の参照ブロック、複数の動きベクトルなどを決定し、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択してもよい。最良のレート歪み特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失量)とコーディング効率(例えば、最終符号化のサイズ)の両方のバランスをとる。
【0075】
いくつかの例では、コーデック・システム200は、復号されたピクチャ・バッファ・コンポーネント223に記憶された参照ピクチャのサブ整数画素位置の値を計算してもよい。例えば、ビデオ・コーデック・システム200は、参照画像の1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間してもよい。したがって、動き推定コンポーネント221は、全ピクセル位置及び分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度の動きベクトルを出力してもよい。動き推定コンポーネント221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することにより、インター・コーディングされたスライス内のビデオ・ブロックのPUの動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを、符号化のためのヘッダ・フォーマッティング及びCABACコンポーネント231への動きデータと動き補償コンポーネント219への動きとして計算された動きベクトルを出力する。
【0076】
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを伴ってもよい。繰り返しになるが、いくつかの例では、動作推定コンポーネント221及び動作補償コンポーネント219が機能的に一体化されてもよい。現在のビデオ・ブロックのPUに対する動きベクトルを受信すると、動き補償ユニット219は、動きベクトルが指し示す予測ブロックの位置を特定してもよい。次いで、コーディングされている現在のビデオ・ブロックの画素値から予測ブロックの画素値を減算し、ピクセル差値を形成することによって、残差ビデオ・ブロックが形成される。一般に、動き推定コンポーネント221は、輝度コンポーネントに対する動き推定を実行し、動き補償コンポーネント219は、色差コンポーネントと輝度コンポーネントの両方に対する輝度コンポーネントに基づいて計算された動きベクトルを使用する。予測ブロック及び残差ブロックは、変換のためにスケーリング及び量子化コンポーネント213に転送される。
【0077】
パーティショニングされたビデオ信号201はまた、イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217に送信される。動き推定コンポーネント221及び動き補償コンポーネント219と同じように、イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217は、高度に一体化されてもよいが、概念的な目的のために別々に示されている。イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217は、上述のように、フレーム間の動き推定コンポーネント221及び動き補償コンポーネント219によって実行されるインター予測の代替として、現在のフレーム内のブロックに対する現在のブロックをイントラ予測する。特に、イントラ・ピクチャ推定コンポーネント215は、現在のブロックを符号化するために使用するイントラ予測モードを決定する。いくつかの例では、イントラ・ピクチャ推定コンポーネント215は、複数のテストされたイントラ・ピクチャ予測モードから現在のブロックを符号化するために、適切なイントラ予測モードを選択する。次いで、選択されたイントラ予測モードが、符号化のためにヘッダ・フォーマッティング及びCABACコンポーネント231に転送される。
【0078】
例えば、イントラ・ピクチャ推定コンポーネント215は、様々なテストされたイントラ・ピクチャ予測モードに対してレート歪み分析を使用して、レート歪み値を計算し、テストされたモードのうち最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化されるオリジナルの符号化されていないブロックとの間の歪み(又はエラー)の量、及び符号化されたブロックを生成するために使用されるビットレート(例えば、ビットの数)を決定する。イントラ・ピクチャ推定コンポーネント215は、様々な符号化ブロックに対する歪み及びレートから比を計算し、ブロックに対してどのイントラ予測モードが最良のレート歪み値を示すかを決定してもよい。追加的に、イントラ・ピクチャ推定コンポーネント215は、レート歪み最適化(RDO)に基づく深度モデリング・モード(DMM)を使用して深度マップの深度ブロックをコーディングするように構成されてもよい。
【0079】
イントラ・ピクチャ予測コンポーネント217は、符号化器に実装されたときにはイントラ・ピクチャ予測コンポーネント215によって決定された選択されたイントラ・ピクチャ予測モードに基づいて予測ブロックから残差ブロックを生成するか、又は復号器に実装されたときにはビットストリームから残差ブロックを読み取ってもよい。残差ブロックは、行列として表される予測ブロックとオリジナルのブロックとの間の値の差を含む。次いで、残差ブロックは、変換スケーリング及び量子化コンポーネント213に転送される。イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217は、輝度コンポーネント及び色差コンポーネントの両方に対して動作してもよい。
【0080】
変換スケーリング及び量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成されている。変換スケーリング及び量子化コンポーネント213は、離散コサイン変換(DCT)、離散サイン変換(DST)、又は概念的に類似した変換などの変換を残差ブロックに適用して、残差変換係数値を含むビデオ・ブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、又は他のタイプの変換も使用され得る。変換は、残差情報をピクセル値ドメインから変換ドメイン、例えば周波数ドメインに変換してもよい。変換スケーリング及び量子化コンポーネント213はまた、変換された残差情報を、例えば周波数に基づいてスケーリングするように構成されている。そのようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように、残差情報にスケールファクタを適用することを伴い、これは、再構成されたビデオの最終的な視覚品質に影響を及ぼす可能性がある。変換スケーリング及び量子化コンポーネント213はまた、ビットレートをさらに低下させるために変換係数を量子化するように構成されている。量子化プロセスは、係数の一部又はすべてに関連するビット深度を低減してもよい。量子化の程度は、量子化パラメータを調整することによって修正されてもよい。いくつかの例では、変換スケーリング及び量子化コンポーネント213は、次いで、量子化された変換係数を含む行列の走査を実行してもよい。量子化された変換係数は、ビットストリームで符号化されるようにヘッダ・フォーマッティング及びCABACコンポーネント231に転送される。
【0081】
スケーリング及び逆変換コンポーネント229は、動き推定をサポートするために変換スケーリング及び量子化コンポーネント213の逆動作を適用する。スケーリング及び逆変換コンポーネント229は、例えば、後で別の現在のブロックの予測ブロックとなり得る参照ブロックとして使用するために、逆スケーリング、変換、及び/又は量子化を適用して、画素領域における残差ブロックを再構成する。動き推定コンポーネント221及び/又は動き補償コンポーネント219は、後のブロック/フレームの動き推定に使用するために、残差ブロックを対応する予測ブロックに加算することによって参照ブロックを計算してもよい。フィルタは、スケーリング、量子化、及び変換の間に生成されるアーチファクトを軽減するために、再構成された参照ブロックに適用される。そうでなければ、このようなアーチファクトは、後続のブロックが予測されたときに不正確な予測を引き起こす(かつ追加のアーチファクトを作成する)可能性がある。
【0082】
フィルタ制御分析コンポーネント227及びループ内フィルタ・コンポーネント225は、残差ブロック及び/又は再構成された画像ブロックにフィルタを適用する。例えば、スケーリング及び逆変換コンポーネント229からの変換された残差ブロックを、イントラ・ピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと組み合わせて、オリジナルの画像ブロックを再構成してもよい。次いで、フィルタは、再構成された画像ブロックに適用されてもよい。いくつかの例において、フィルタは、代わりに、残差ブロックに適用されてもよい。
図2の他のコンポーネントと同じように、フィルタ制御分析コンポーネント227及びループ内フィルタ・コンポーネント225は、高度に一体化されており、一緒に実装されてもよいが、概念的な目的のために別々に示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタが適用される方法を調整するために複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、そのようなフィルタを適用すべき場所を決定し、対応するパラメータをセットする。このようなデータは、符号化のためのフィルタ制御データとしてヘッダ・フォーマッティング及びCABACコンポーネント231に転送される。ループ内フィルタ・コンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、ブロック解除フィルタ、ノイズ抑制フィルタ、SAOフィルタ、及び適応ループ・フィルタを含み得る。そのようなフィルタは、例に応じて、空間/画素ドメイン(例えば、再構成された画素ブロック)又は周波数ドメインにおいて適用され得る。
【0083】
符号化器として動作する場合、フィルタリングされた再構成されたピクチャ・ブロック、残差ブロック、及び/又は予測ブロックは、上記で論じたように動作推定に後で使用するために、復号されたピクチャ・バッファ。コンポーネント223に記憶される。復号器として動作するとき、復号されたピクチャ・バッファ・コンポーネント223は、再構成されフィルタリングされたブロックを記憶し、出力ビデオ信号の一部として、ディスプレイに向かって転送する。復号されたピクチャ・バッファ・コンポーネント223は、予測ブロック、残差ブロック、及び/又は再構成された画像ブロックを記憶することができる任意のメモリ・デバイスであってもよい。
【0084】
ヘッダ・フォーマッティング及びCABACコンポーネント231は、コーデック・システム200の様々なコンポーネントからデータを受信し、復号器に向かって送信するために、そのようなデータをコーディングされたビットストリームに符号化する。具体的には、ヘッダ・フォーマッティング及びCABACコンポーネント231は、汎用制御データ及びフィルタ制御データなどの制御データを符号化するための様々なヘッダを生成する。さらに、イントラ予測及び動きデータを含む予測データ、ならびに量子化変換係数データの形式の残差データは、すべてビットストリームにおいて符号化される。最終的なビットストリームは、オリジナルのパーティショニングされたビデオ信号201を再構成するために復号器によって望まれるすべての情報を含む。そのような情報は、また、イントラ予測モード・インデックス・テーブル(コード・ワード・マッピング・テーブルとも呼ばれる)、様々なブロックに対する符号化コンテキストの定義、最も可能性の高いイントラ予測モードの表示、パーティション情報の表示などを含み得る。このようなデータは、エントロピー符号化を使用して符号化されてもよい。例えば、コンテキスト適応可変長コーディング(CAVLC)、CABAC、構文ベースのコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔パーティショニング・エントロピー(PIPE)コーディング、又は別のエントロピー符号化技術を使用して、情報が符号化されてもよい。エントロピー符号化の後、コーディングされたビットストリームは、別のデバイス(例えば、ビデオ復号器)に送信されるか、又は後の送信又は検索のためにアーカイブされてもよい。
【0085】
図3は、例示的なビデオ符号化器300を示すブロック図である。ビデオ符号化器300は、コーデック・システム200の符号化機能を実装するため、及び/又は動作方法100のステップ101、103、105、107、及び/又は109を実装するために使用されてもよい。符号化器300は、入力ビデオ信号をパーティショニングし、パーティショニングされたビデオ信号201と実質的に同様であるパーティショニングされたビデオ信号301をもたらす。次いで、パーティショニングされたビデオ信号301は、符号化器300のコンポーネントによって圧縮され、ビットストリームに符号化される。
【0086】
具体的には、パーティショニングされたビデオ信号301は、イントラ予測のために、イントラ・ピクチャ予測コンポーネント317に転送される。イントラ・ピクチャ予測コンポーネント317は、イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217と実質的に同様であり得る。また、パーティショニングされたビデオ信号301は、復号されたピクチャ・バッファ・コンポーネント323における参照ブロックに基づくインター予測のために、動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に同様であり得る。イントラ・ピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックは、残差ブロックの変換及び量子化のために変換及び量子化コンポーネント313に転送される。変換及び量子化コンポーネント313は、変換スケーリング及び量子化コンポーネント213と実質的に同様であり得る。変換され量子化された残差ブロック及び対応する予測ブロック(関連する制御データと一緒に)は、ビットストリームへのコーディングのためにエントロピー符号化コンポーネント331に転送される。エントロピー・コーディング・コンポーネント331は、ヘッダ・フォーマッティング及びCABACコンポーネント231と実質的に同様であり得る。
【0087】
変換され量子化された残差ブロック及び/又は対応する予測ブロックも、動き補償コンポーネント321によって使用するための参照ブロックへの再構成のために、変換及び量子化コンポーネント313から逆変換及び量子化コンポーネント329に転送される。逆変換及び量子化コンポーネント329は、スケーリング及び逆変換コンポーネント229と実質的に同様であり得る。ループ内フィルタ・コンポーネント325内のループ内フィルタはまた、例に応じて、残差ブロック及び/又は再構成された参照ブロックにも適用される。ループ内フィルタ・コンポーネント325は、実質的に、フィルタ制御分析コンポーネント227及びループ内フィルタ・コンポーネント225と同様であり得る。ループ内フィルタ・コンポーネント325は、ループ内フィルタ・コンポーネント225に関して論じられたように、複数のフィルタを含み得る。次いで、フィルタリングされたブロックは、動き補償コンポーネント321によって参照ブロックとして使用するために、復号されたピクチャ・バッファ・コンポーネント323に記憶される。復号されたピクチャ・バッファ・コンポーネント323は、復号されたピクチャ・バッファ・コンポーネント223と実質的に同様であってもよい。
【0088】
図4は、例示的なビデオ復号器400を示すブロック図である。ビデオ復号器400は、コーデック・システム200の復号機能を実装するため、及び/又は動作方法100のステップ111、113、115、及び/又は117を実装するために使用されてもよい。復号器400は、例えば符号化器300からビットストリームを受信し、エンド・ユーザに表示するために、ビットストリームに基づいて再構成された出力ビデオ信号を生成する。
【0089】
ビットストリームはエントロピー復号コンポーネント433によって受信される。エントロピー復号コンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、又は他のエントロピー・コーディング技術などのエントロピー復号スキームを実装するように構成されている。例えば、エントロピー復号コンポーネント433は、ビットストリームにおいてコード・ワードとして符号化された追加データを解釈するためのコンテキストを提供するために、ヘッダ情報を使用することができる。復号された情報は、汎用制御データ、フィルタ制御データ、パーティション情報、動きデータ、予測データ、及び残差ブロックからの量子化変換係数のなど、ビデオ信号を復号するための任意の所望の情報を含む。量子化された変換係数は、残差ブロックに再構成するために、逆変換及び量子化コンポーネント429に転送される。逆変換及び量子化コンポーネント429は、逆変換及び量子化コンポーネント329と同様であり得る。
【0090】
再構成された残差ブロック及び/又は予測ブロックは、内部予測動作に基づいて画像ブロックに再構成するために、イントラ・ピクチャ予測コンポーネント417に転送される。イントラ・ピクチャ予測コンポーネント417は、イントラ・ピクチャ推定コンポーネント215及びイントラ・ピクチャ予測コンポーネント217と実質的に同様であり得る。具体的には、イントラ・ピクチャ予測コンポーネント417は、フレーム内の参照ブロックを位置特定するために予測モードを使用し、残差ブロックを結果に適用して、イントラ予測された画像ブロックを再構成する。再構成されたイントラ予測された画像ブロック及び/又は残差ブロック及び対応するインター予測されたデータは、復号されたピクチャ・バッファ・コンポーネント423に、ループ内フィルタ・コンポーネント425を介して転送され、このコンポーネントは、復号されたピクチャ・バッファ・コンポーネント223及びループ内フィルタ・コンポーネント225にそれぞれ実質的に類似であり得る。ループ内フィルタ・コンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタリングし、そのような情報は復号されたピクチャ・バッファ・コンポーネント423に記憶される。復号されたピクチャ・バッファ・コンポーネント423からの再構成されたピクチャ・ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に同様であり得る。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを使用して予測ブロックを生成し、残差ブロックを結果に適用して画像ブロックを再構成する。得られた再構成されたブロックは、ループ内フィルタ・コンポーネント425を介して復号されたピクチャ・バッファ・コンポーネント423に転送されてもよい。復号されたピクチャ・バッファ・コンポーネント423は、追加の再構成された画像ブロックを記憶し続け、これらは、パーティション情報を介してフレームに再構成され得る。このようなフレームは、シーケンスに位置付けられてもよい。そのシーケンスは、再構成された出力ビデオ信号としてディスプレイ向かって出力される。
【0091】
図5は、例示的なHRD500を示す概略図である。HRD500は、コーデック・システム200及び/又は符号化器30などの符号化器に用いられてもよい。HRD 500は、ビットストリームが復号器400などの復号器に転送される前に、方法100のステップ109で生成されたビットストリームを検査してもよい。いくつかの例において、ビットストリームが符号化されるときに、ビットストリームはHRD 500を通して連続的に転送されてもよい。ビットストリームの一部分が関連する制約に適合しない場合に、HRD500は、符号化器が異なるメカニズムでビットストリームの対応するセクションを再符号化するように符号化器にそのような適合しないことを示すことができる。
【0092】
HRD500は、仮想ストリーム・スケジューラ(HSS)541を含む。HSS541は、仮想送達メカニズムを実行するように構成されたコンポーネントである。仮想送達メカニズムは、HRD500に入力されたビットストリーム551のタイミング及びデータ・フローに関してビットストリーム又は復号器の適合性を検査するために使用される。例えば、HSS541は、符号化器からのビットストリーム551の出力を受信し、ビットストリーム551での適合性テスト・プロセスを管理してもよい。特定の例では、HSS541は、コーディングされたピクチャがHRD500を通って移動するレートを制御し、ビットストリーム551が不適合データを含まないことを検証することができる。
【0093】
HSS541は、ビットストリーム551を所定のレートでCPB543に転送してもよい。HRD500は、復号ユニット(DU)553においてデータを管理してもよい。DU553は、アクセス・ユニット(AU)又はAUのサブセットであり、非ビデオ・コーディング・レイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニットに関連する。具体的には、AUは、出力時間に関連する1つ以上のピクチャを含む。例えば、AUは、単一レイヤビットストリームにおいて単一ピクチャを含んでもよく、マルチ・レイヤ・ビットストリームにおいて各レイヤに対するピクチャを含んでもよい。AUの各ピクチャは、対応するVCL NALユニットに各々含まれるスライスに分割されてもよい。それゆえ、DU553は、1つ以上のピクチャ、1つ以上のピクチャのスライス、又はそれらの組み合わせを含んでもよい。また、AU、ピクチャ、及び/又はスライスを復号するために使用されるパラメータは、非VCL NALユニットに含まれ得る。したがって、DU553は、DU553におけるVCL NALユニットの復号をサポートするために必要なデータを含む非VCL NALユニットを含む。CPB543は、HRD500において先入れ先出しバッファである。CPB543は、復号順序においてビデオ・データを含むDU553を含む。CPB543は、ビットストリーム適合性検証中に使用するためにビデオ・データを記憶する。
【0094】
CPB543は、DU553を復号プロセス・コンポーネント545に転送する。復号プロセス・コンポーネント545は、VVC標準に適合するコンポーネントである。例えば、復号プロセス・コンポーネント545は、エンド・ユーザによって用いられる復号器400をエミュレートしてもよい。復号プロセス・コンポーネント545は、例示的なエンド・ユーザ復号器によって達成され得るレートで、DU553を復号する。復号プロセス・コンポーネント545がCPB543のオーバーフローを防止するのに十分な速さでDU553を復号できない場合、ビットストリーム551は標準に適合せず、再符号化されるべきである。
【0095】
復号プロセス・コンポーネント545は、DU553を復号し、これは、復号されたDU555を生成する。復号されたDU 555は復号されたピクチャを含む。復号されたDU555はDPB547に転送される。DPB547は、復号されたピクチャ・バッファ・コンポーネント223、323、及び/又は423に実質的に類似していてもよい。インター予測をサポートするために、復号されたDU555から取得される参照ピクチャ556として使用するためにマークされたピクチャは、さらなる復号をサポートするために復号プロセス・コンポーネント545に戻される。DPB547は、復号されたビデオ・シーケンスを一連のピクチャ557として出力する。ピクチャ557は、符号化器によってビットストリーム551に符号化された一般的にミラー・ピクチャである再構成されたピクチャである。
【0096】
ピクチャ557は、出力クロッピング・コンポーネント549に転送される。出力クロッピング・コンポーネント549は、適合性クロッピング・ウィンドウをピクチャ557に適用するように構成される。これにより、出力クロッピングされたピクチャ559をもたらす。出力クロッピングされたピクチャ559は、完全に再構成されたピクチャである。したがって、出力クロッピングされたピクチャ559は、エンド・ユーザがビットストリーム551を復号する際に見るものを模倣する。したがって、符号化器は、符号化が満足のいくものであることを保証するために、出力クロッピングされたピクチャ559をレビューすることができる。
【0097】
HRD500は、ビットストリーム551におけるHRDパラメータに基づいて初期化される。例えば、HRD500は、VPS、SPS、及び/又はSEIメッセージからHRDパラメータを読み込んでもよい。次いで、HRD500は、そのようなHRDパラメータにおける情報に基づいて、ビットストリーム551に対する適合性テスト動作を実行してもよい。具体的な例として、HRD500は、HRDパラメータから1つ以上のCPB送達スケジュールを決定してもよい。送達スケジュールは、CPB及び/又はDPBなどのメモリ位置への及び/又はメモリ位置からのビデオ・データの送達タイミングを指定する。それゆえ、CPB送達スケジュールは、AU、DU553、及び/又はピクチャのCPB543との間の送達のタイミングを指定する。HRD500は、CPB送達スケジュールに類似するDPB送達スケジュールをDPB 547に用いてもよいことに留意されたい。
【0098】
ビデオは、様々なレベルのハードウェア能力を有する復号器によって使用されるため、及び様々なネットワーク条件のために、異なるレイヤ及び/又はOLSにコーディングされてもよい。CPB送達スケジュールは、これらの問題を反映するように選択される。したがって、上位レイヤ・サブビットストリームは、最適なハードウェア及びネットワーク条件のために指定され、それゆえ、上位レイヤは、CPB543内の大量のメモリ及びDPB547に向かうDU553の転送のための短い遅延を用いる1つ以上のCPB送達スケジュールを受信してもよい。同様に、下位レイヤ・サブビットストリームは、限定された復号器ハードウェア能力及び/又は劣悪なネットワーク条件のために指定される。それゆえ、下位レイヤは、CPB543内の少量のメモリ、及びDPB547に向かうDU553を転送するためのより長い遅延を用いる1つ以上のCPB送達スケジュールを受信してもよい。次いで、OLS、レイヤ、サブレイヤ、又はそれらの組み合わせは、結果として生じるサブビットストリームが、サブビットストリームに対して期待される条件下で正確に復号され得ることを確実にするために、対応する配達スケジュールに従ってテストされ得る。したがって、ビットストリーム551におけるHRDパラメータは、CPB送達スケジュールを示すことができ、また、HRD500がCPB送達スケジュールを決定し、CPB送達スケジュールを対応するOLS、レイヤ、及び/又はアブレイヤに相関させることを可能にするのに十分なデータを含むことができる。
【0099】
図6は、レイヤ間予測621のために構成された例示的なマルチ・レイヤ・ビデオ・シーケンス600を示す概略図である。マルチ・レイヤ・ビデオ・シーケンス600は、例えば、方法100に従って、コーデック・システム200及び/又は符号化器300などの符号化器によって符号化され、コーデック・システム200及び/又は復号器400などの復号器によって復号されてもよい。さらに、マルチ・レイヤ・ビデオ・シーケンス600は、HRD500などのHRDによって標準適合性について検査され得る。マルチ・レイヤ・ビデオ・シーケンス600は、コーディングされたビデオ・シーケンスにおけるレイヤのための例示的用途を示すために含まれる。マルチ・レイヤ・ビデオ・シーケンス600は、レイヤN 631及びレイヤN+1 632などの複数のレイヤを用いる任意のビデオ・シーケンスである。
【0100】
一実施形態において、マルチ・レイヤ・ビデオ・シーケンス600は、レイヤ間予測621を用いてもよい。レイヤ間予測621は、ピクチャ611、612、613、及び614とピクチャ615、616、617、及び618との間で異なるレイヤに適用される。図示の例において、ピクチャ611、612、613、及び614は、レイヤN+1 632の一部であり、ピクチャ615、616、617、及び618は、レイヤN 631の一部である。レイヤN 631及び/又はレイヤN+1 632などのレイヤは、類似のサイズ、品質、解像度、信号対雑音比、能力などのような、特性の類似の値にすべて関連するピクチャのグループである。レイヤは、VCL NALユニットと関連する非VCL NALユニットのセットとして正式に定義されてもよい。VCL NALユニットは、ピクチャのコーディングされたスライスなどのビデオ・データを含むようにコーディングされたNALユニットであってもよい。非VCL NALユニットは、ビデオ・データの復号、適合性検査又は他の動作をサポートする、構文及び/又はパラメータなどの非ビデオ・データを含むNALユニットである。
【0101】
示された例では、レイヤN+1 632は、レイヤN 631よりも大きな画像サイズと関連する。したがって、レイヤN+1 632におけるピクチャ611、612、613、及び614は、この例においてレイヤN 631におけるピクチャ615、616、617、及び618よりも大きなピクチャ・サイズ(例えば、高さ及び幅がより大きく、それゆえ、サンプルがより多い)を有する。しかしながら、このようなピクチャは、レイヤN+1 632とレイヤN 631との間で他の特性によって分離することができる。2つのレイヤ、レイヤN+1 632及びレイヤN 631のみが示されているが、ピクチャのセットは、関連する特性に基づいて任意の数のレイヤに分離され得る。レイヤN+1 632及びレイヤN 631はまた、レイヤIdによって示されてもよい。レイヤIdは、ピクチャに関連付けられたデータのアイテムであり、ピクチャが示されたレイヤの一部であることを示す。したがって、各ピクチャ611~618は、対応するレイヤIdと関連して、どのレイヤN+1 632又はレイヤN 631が対応するピクチャを含むかを示すことができる。例えば、レイヤIdは、NALユニット・ヘッダ・レイヤ識別子(nuh_layer_id)を含んでもよく、これは、(例えば、レイヤにおけるピクチャのスライス及び/又はパラメータを含む)NALユニットを含むレイヤの識別子を指定する構文要素である。レイヤN 631などのより低い品質/ビットストリーム・サイズと関連するレイヤは、一般的に、下位レイヤIdを割り当てられ、下位レイヤと呼ばれる。さらに、レイヤN+1 632などのより高い品質/ビットストリーム・サイズと関連するレイヤは、一般的に、より高いレイヤIdを割り当てられ、上位レイヤと呼ばれる。
【0102】
異なるレイヤ631~632におけるピクチャ611~618は、代替として表示されるように構成される。特定の例として、より小さなピクチャが望まれる場合、復号器は、現在の表示時間でピクチャ615を復号して表示し、より大きなピクチャが望まれる場合、復号器は、現在の表示時間でピクチャ611を復号して表示してもよい。したがって、上位レイヤN+1 632におけるピクチャ611~614は、下位レイヤN 631における対応するピクチャ615~618と実質的に同じ画像データを含む(ピクチャ・サイズの差にもかかわらず)。具体的には、ピクチャ611は、ピクチャ615と実質的に同じ画像データを含み、ピクチャ612は、ピクチャ616と実質的に同じ画像データを含む、などである。
【0103】
ピクチャ611~618は、同じレイヤN 631又はN+1 632内の他のピクチャ611~618を参照することによってコーディングされ得る。同一レイヤ内の別のピクチャを参照してピクチャを符号化すると、インター予測623をもたらす。インター予測623は、実線矢印によって示される。例えば、ピクチャ613は、レイヤN+1 632におけるピクチャ611、612、及び/又は614のうちの1つ又は2つを参照として用いることによってコーディングされてもよく、1つピクチャは、一方向の相互予測のために参照され、及び/又は、2つのピクチャは、双方向の相互予測のために参照される。さらに、ピクチャ617は、レイヤN 631におけるピクチャ615、616、及び/又は618のうちの1つ又は2つを参照として用いることによってコーディングされてもよく、1つピクチャは、一方向の相互予測のために参照され、及び/又は、2つのピクチャは、双方向の相互予測のために参照される。ピクチャが、インター予測623を実行するときに、同じレイヤ内の別のピクチャのための参照として使用されるときに、ピクチャは、参照ピクチャと呼ばれることがある。例えば、ピクチャ612は、インター予測623に従ってピクチャ613をコーディングするために使用される参照ピクチャであってもよい。インター予測623は、マルチ・レイヤ・コンテキストにおいてレイヤ内予測とも呼ばれることがある。このように、インター予測623は、現在のピクチャと異なる参照ピクチャ内の示されたサンプルを参照することによって、現在のピクチャのサンプルをコーディングするメカニズムであり、ここで、参照ピクチャ及び現在のピクチャは同じレイヤ内にある。
【0104】
ピクチャ611~618はまた、異なるレイヤにおける他のピクチャ611~618を参照することによってコーディングされ得る。このプロセスは、レイヤ間予測621として知られており、破線の矢印で示されている。レイヤ間予測621は、参照ピクチャにおける示されたサンプルを参照することによって、現在のピクチャのサンプルをコーディングするメカニズムであり、ここで、現在のピクチャ及び参照ピクチャは、異なるレイヤにあり、それゆえ、異なるレイヤIDを有する。例えば、上位レイヤN+1 631での対応するピクチャをコーディングするために、参照おいクチャとして、下位レイヤN 631におけるピクチャが使用され得る。特定の例として、ピクチャ611は、レイヤ間予測621に従って、ピクチャ615を参照することによって、コーディングされ得る。このような場合、ピクチャ615はレイヤ間参照ピクチャとして使用される。レイヤ間参照ピクチャは、レイヤ間予測621のために使用される参照ピクチャである。ほとんどの場合、レイヤ間予測621は、ピクチャ611のような現在のピクチャが、同じAUに含まれ、ピクチャ615のような下位レイヤにあるレイヤ間参照ピクチャのみを使用することができるように制約される。複数のレイヤ(例えば、2つ以上)が利用可能である場合、レイヤ間予測621は、現在のピクチャよりも低いレベルで、複数のレイヤ間参照ピクチャに基づいて、現在のピクチャを符号化/復号することができる。
【0105】
ビデオ符号化器は、マルチ・レイヤ・ビデオ・シーケンス600を用いて、インター予測623及びレイヤ間予測621の多くの異なる組み合わせ及び/又は順列を介して、ピクチャ611~618を符号化することができる。例えば、ピクチャ615は、イントラ予測に従ってコーディングされてもよい。次いで、ピクチャ616~618は、参照ピクチャとしてピクチャ615を使用することによって、インター予測623に従ってコーディングされ得る。さらに、ピクチャ611は、レイヤ間参照ピクチャとしてピクチャ615を使用することによって、レイヤ間予測621に従ってコーディングされてもよい。次いで、ピクチャ612~614は、参照ピクチャとしてピクチャ611を使用することによって、インター予測623に従ってコーディングされ得る。このように、参照ピクチャは、単一レイヤ参照ピクチャ及び異なる符号化メカニズムに対するレイヤ間参照ピクチャの両方として機能することができる。下位レイヤN 631ピクチャに基づいて上位レイヤN+1 632ピクチャをコーディングすることによって、上位レイヤN+1 632は、インター予測623及びレイヤ間予測621よりもはるかに低い符号化効率を有するイントラ予測を用いることを回避することができる。したがって、イントラ予測の劣ったコーディング効率は、最小/最低品質のピクチャに制限され得、それゆえ、最小量のビデオ・データをコーディングすることに制限され得る。参照ピクチャ及び/又はレイヤ間参照ピクチャとして使用されるピクチャは、参照ピクチャ・リスト構造に含まれる参照ピクチャ・リストのエントリにおいて示され得る。
【0106】
ピクチャ611~618はまた、アクセス・ユニット627及び628に含まれてもよい。AU627~628は、異なるレイヤに含まれ、復号中の同じ出力時間に関連するコーディングされたピクチャのセットである。従って、同じAU627~628においてコーディングされたピクチャは、同じ時間に復号器でDPBから同時に出力のためにスケジューリングされる。例えば、ピクチャ614及び618は、同じAU628内にある。ピクチャ613及び617は、ピクチャ614及び618とは異なるAU627内にある。同じAU628内のピクチャ614及び618は、代替として表示されてもよい。例えば、ピクチャ618は、小さなピクチャ・サイズが望ましいときに表示され、ピクチャ614は、大きなピクチャ・サイズが望ましいときに表示されてもよい。大きなピクチャ・サイズが望まれるときに、ピクチャ614が出力され、ピクチャ618はレイヤ間予測621のみに使用される。この場合、ピクチャ618は、レイヤ間予測621が完了すると、出力されずに破棄される。すべてのレイヤでのピクチャを含むAU627は、完全なAU 627と呼ばれ得る。すべてのレイヤでのピクチャを含まないAU628は、不完全なAU628と呼ばれ得る。
【0107】
レイヤN-1 633は、AU628が不完全であるというシナリオを示すために含まれる。レイヤN-1 633は、ピクチャ625及び626を含み、これらは、それぞれ、ピクチャ615及び617と実質的に同じである。しかし、レイヤN-1 633は、ピクチャ616及び618に対応するピクチャを含まない。したがって、レイヤN-1 633は、レイヤN 631と実質的に同様であるが、より低いフレーム・レートを含む。したがって、ピクチャ611、615、及び625を含むAU627は、完全である。しかしながら、AU628はN-1 633レイヤでピクチャを欠いているので、ピクチャ612及び616を含むAU628は不完全なAU628である。
【0108】
不完全なAU628を符号化することは、マルチ・レイヤ・ビデオ・シーケンス600が異なるユーザに異なるフレーム・レートで送信されることを可能にするため、有用であり得る。しかしながら、不完全なAU628は、適合性について符号化されたビデオ・シーケンス検査するときに困難を生成する可能性がある。例えば、SEIメッセージは、標準との適合性についてマルチ・レイヤ・ビデオ・シーケンス600を検査するときに、HRD500などのHRDによって使用されるパラメータを送信するために用いられてもよい。いくつかのビデオ・コーディング・システムは、SEIメッセージがAU627~628におけるすべてのレイヤに適用されることを可能にする。問題は、そのようなSEIメッセージが複数のAU627~628に対して永続的であり得ることである。SEIメッセージが不完全AU628におけるすべてのレイヤに適用されるときに、レイヤN-1 633は不完全なAU628に含まれないため、そのようなSEIメッセージは、レイヤN-1 633に適用されない。したがって、SEIメッセージは、不完全なAU628に続く完全なAU627においてレイヤN-1 633には適用されない。これは、SEIメッセージが、そのようなメッセージが完全なAU627と関連することが発生するときに、レイヤN-1 633に適切に適用され、そのようなメッセージが不完全なAU628と関連することが発生するときに、レイヤN-1 633には適用されないため、予測不可能なエラーを引き起こす可能性がある。この及び他の問題は、以下に説明されるシグナリング方式によって対処される。
【0109】
図7は、例示的なビットストリーム700を示す概略図である。例えば、ビットストリーム700は、方法100に従って、コーデック・システム200及び/又は復号器400による復号のためにコーデック・システム200及び/又は符号化器300によって生成することができる。さらに、ビットストリーム700は、マルチ・レイヤ・ビデオ・シーケンス600を含んでもよい。追加的に、ビットストリーム700は、HRD500などのHRDの動作を制御するための様々なパラメータを含んでもよい。そのようなパラメータに基づいて、HRD500は、復号のために復号器に向かって送信する前に、標準との適合性についてビットストリーム700を検査することができる。
【0110】
ビットストリーム700は、VPS711と、1つ以上のSPS713と、複数のピクチャ・パラメータ・セット(PPS)715と、複数のスライス・ヘッダ717と、画像データ720と、SEIメッセージ719とを含む。VPS711は、ビットストリーム700全体に関係するデータを含む。例えば、VPS711は、ビットストリーム700で使用されるデータ関係のOLS、レイヤ、及び/又はサブレイヤを含んでもよい。SPS713は、ビットストリーム700に含まれるコーディングされたビデオ・シーケンスにおけるすべてのピクチャに共通のシーケンス・データを含む。例えば、各レイヤは、1つ以上のコーディングされたビデオ・シーケンスを含んでもよく、各コーディングされたビデオ・シーケンスは、対応するパラメータについてSPS713を参照してもよい。SPS713におけるパラメータは、ピクチャ・サイズ、ビット深度、コーディング・ツール・パラメータ、ビットレート制限などを含むことができる。各シーケンスがSPS713を参照するが、単一のSPS713は、いくつかの例において複数のシーケンスのためのデータを含むことができることに留意されたい。PPS715は、ピクチャ全体に適用されるパラメータを含む。それゆえ、ビデオ・シーケンスにおける各ピクチャは、PPS715を参照してもよい。各ピクチャはPPS715を参照する一方で、単一のPPS715は、いくつかの例において複数のピクチャのためのデータを含むことができることに留意されたい。例えば、複数の類似のピクチャは、類似のパラメータに従ってコーディングされてもよい。このような場合に、単一のPPS715は、このような類似のピクチャのデータを含んでもよい。PPS715は、対応するピクチャ、量子化パラメータ、オフセットなどにおけるスライスに利用可能なコーディング・ツールを示すことができる。
【0111】
スライス・ヘッダ717は、ピクチャにおける各スライスに特有のパラメータを含む。それゆえ、ビデオ・シーケンスにおいて、スライス当たり1つのスライス・ヘッダ717があってもよい。スライス・ヘッダ717は、スライス・タイプ情報、POC、参照ピクチャ・リスト、予測重み、タイル・エントリ・ポイント、デブロッキング・パラメータなどを含んでもよい。いくつかの例では、ビットストリーム700は、単一のピクチャ内のすべてのスライスに適用されるパラメータを含む構文構造である、ピクチャ・ヘッダを含んでもよいことに留意されたい。この理由のために、ピクチャ・ヘッダとスライス・ヘッダ717は、いくつかのコンテキストにおいて互換的に用いられてもよい。例えば、特定のパラメータは、そのようなパラメータがピクチャ内のすべてのスライスに共通であるかどうかに依存して、スライス・ヘッダ717とピクチャ・ヘッダとの間で移動されてもよい。
【0112】
画像データ720は、インター予測及び/又はイントラ予測に従って符号化されたビデオ・データ、ならびに対応する変換及び量子化された残差データを含む。例えば、画像データ720は、レイヤ723、ピクチャ725、及び/又はスライス727を含んでもよい。レイヤ723は、nuh_layer_id729などのレイヤIDによって示されるように、特定の特性(例えば、共通解像度、フレーム・レート、画像サイズなど)を共有するVCL NALユニットと、関連する非VCL NALユニットのセットである。例えば、レイヤ723は、同じnuh_layer_idを共有するピクチャ725のセットを含んでもよい。レイヤ723は、レイヤ631、632、及び/又は633に実質的に類似していてもよい。nuh_layer_id729は、少なくとも1つのNALユニットを含むレイヤ723の識別子を指定する構文要素である。例えば、ベース・レイヤとして知られる最低品質レイヤ723は、より高い品質のレイヤ723についてのnuh_layer_id729の値を増加させたnuh_layer_id729の最低値を含んでもよい。それゆえ、下位レイヤは、nuh_layer_id729のより小さい値を有するレイヤ723であり、上位レイヤは、nuh_layer_id729のより大きい値を有するレイヤ723である。
【0113】
ピクチャ725は、フレーム又はそのフィールドを生成する輝度サンプルのアレイ及び/又は色差サンプルのアレイである。例えば、ピクチャ725は、表示のために出力され得るか、又は出力のための他のピクチャ725のコーディングをサポートするために使用され得るコーディングされた画像である。ピクチャ725は、1つ以上のスライス727を含む。スライス727は、単一のNALユニットに排他的に含まれる整数個の完全タイル又はピクチャ725の(例えば、タイル内の)整数個の連続する完全コーディング・ツリー・ユニット(CTU)行として定義されてもよい。スライス727は、さらにCTU及び/又はコーディング・ツリー・ブロック(CTB)に分割される。CTUは、コーディング・ツリーによってパーティショニング可能な、あらかじめ定義されたサイズのサンプルのグループである。CTBは、CTUのサブセットであり、CTUの輝度コンポーネント又は色差コンポーネントを含む。CTU/CTBはさらにコーディング・ツリーに基づいてコーディング・ブロックに分割される。次いで、コーディング・ブロックは、予測メカニズムに従って符号化/復号されてもよい。
【0114】
ビットストリーム700は、NALユニットのシーケンスとしてコーディングされ得る。NALユニットは、ビデオ・データ及び/又はサポート構文のためのコンテナである。NALユニットは、VCL NALユニット又は非VCL NALユニットであり得る。VCL NALユニットは、画像データ720及び関連するスライス・ヘッダ717などのビデオ・データを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオ・データの復号、適合性検査又は他の動作をサポートする、構文及び/又はパラメータなどの非ビデオ・データを含むNALユニットである。例えば、非VCL NALユニットは、VPS711、SPS713、PPS715、SEIメッセージ719、又は他のサポート構文を含むことができる。
【0115】
SEIメッセージ719は、復号されたピクチャにおけるサンプルの値を決定するために、復号プロセスによって必要とされない情報を搬送する、指定された意味を持つ構文構造であってもよい。例えば、SEIメッセージ719は、HRDプロセスをサポートするデータ、又は復号器でビットストリーム700を復号することに直接関連しない他のサポート・データを含んでもよい。SEIメッセージ719のセットは、スケーラブル・ネスティングSEIメッセージ741として実装されてもよい。スケーラブル・ネスティングSEIメッセージ741は、SEIメッセージ719を特定のレイヤ723に関連付けるメカニズムを提供する。スケーラブル・ネスティングSEIメッセージ741は、複数のスケーラブル・ネスティングされたSEIメッセージ742を含むメッセージである。スケーラブル・ネスティングSEIメッセージ742は、1つ以上のOLS又は1つ以上のレイヤ723に対応するSEIメッセージ719である。OLSは、レイヤ723のセットであり、レイヤ723の少なくとも1つは出力レイヤである。したがって、スケーラブル・ネスティングSEIメッセージ741は、コンテキストに依存して、スケーラブル・ネスティングされたSEIメッセージ742のセットを含むと言うことができ、又は、SEIメッセージ719のセットを含むと言うことができる。さらに、スケーラブル・ネスティングSEIメッセージ741は、同じタイプのスケーラブル・ネスティングされたSEIメッセージ742のセットを含む。SEIメッセージ719は、HRDを初期化し、対応するOLS及び/又はレイヤ723をテストするためにCPBを管理するためのHRDパラメータを含むBP SEIメッセージを含んでもよい。SEIメッセージ719はまた、対応するOLS及び/又はレイヤ723をテストするためにCPB及び/又はDPBでのAUのための送達情報を管理するためのHRDパラメータを含むPT SEIメッセージを含んでもよい。SEIメッセージ719はまた、対応するOLS及び/又はレイヤ723をテストするためにCPB及び/又はDPBでのDUのための送達情報を管理するためのHRDパラメータを含むDUI SEIメッセージを含んでもよい。
【0116】
上述のように、SEIメッセージ719は、非VCL NALユニットに含まれてもよい。例えば、スケーラブル・ネスティングSEIメッセージ741は、SEI NALユニット743に含まれてもよい。SEI NALユニット743は、SEI NALユニット743がSEIデータを含むことを示すタイプデータを有するNALユニットである。スケーラブル・ネスティングSEIメッセージ741の利点の1つは、スケーラブル・ネスティングSEIメッセージ741が、スケーラブル・ネスティングSEIメッセージ742のセットを単一のSEI NALユニット743に含まれることを可能にすることである。スケーラブル・ネスティングSEIメッセージ741が用いられないときに、各SEIメッセージ719は、別個のSEI NALユニット743に含まれる。議論を明確にするために、特定のSEI NALユニット743は、現在のSEI NALユニット743と呼ばれ得る。
【0117】
スケーラブル・ネスティングSEIメッセージ741に関する問題の1つは、スケーラブル・ネスティングされたSEIメッセージ742のセット全体が単一のSEI NALユニット743に含まれることである。しかしながら、スケーラブル・ネスティングされたSEIメッセージ742のセットは、多くの方法で対応するレイヤ723に関係することができる。例えば、セットにおけるスケーラブル・ネスティングされたSEIメッセージ742の各々は、すべてのレイヤ723に関係することができる。別の例において、セットにおけるスケーラブル・ネスティングされたSEIメッセージ742の各々は、レイヤ723のうちの1つ以上に関係することができる。様々なフラグを用いて、スケーラブル・ネスティングSEIメッセージ742とレイヤ723との間の相関を示すことができる。上述のように、スケーラブル・ネスティングされたSEIメッセージ742フラグの1つの問題は、スケーラブル・ネスティングされたSEIメッセージ742を示すフラグがAUにおけるすべてのレイヤに適用されることで、ビデオ・シーケンスが不完全なAUを含むときにエラーを引き起こす可能性があることである。別の問題は、スケーラブル・ネスティングSEIメッセージ741を含むSEI NALユニット743が常にレイヤ723、例えば、最も低いnuh_layer_id729を有するレイヤ723に関連することである。スケーラブル・ネスティングSEIメッセージ742が、SEI NALユニット743と関連するレイヤ723に適用されるときに、関連性は、SEI NALユニット743及びスケーラブル・ネスティングSEIメッセージ741の両方においてシグナリングされる。これは冗長であり、ビットを浪費する。
【0118】
ビットストリーム700は、上述の問題に対処しながら、SEIメッセージ719の構成をシグナリングするための種々のフラグを含む。例えば、スケーラブル・ネスティングSEIメッセージ741は、scalable nesting all layers flag(all_layers_flag)735を含んでもよい。scalable nesting all_layers_flag735構文要素は、スケーラブル・ネスティングSEIメッセージ741におけるスケーラブル・ネスティングされたSEIメッセージ742が、例えばVPS711に指定されたように、すべてのレイヤ723に適用されるかどうかを指定する。AUを対処しないscalable nesting all_layers_flag735を用いることによって、不完全なAU問題が回避される。したがって、scalable nesting all_layers_flag735がセットされるときに、スケーラブル・ネスティングSEIメッセージ741に含まれるスケーラブル・ネスティングされたSEIメッセージ742は、スケーラブル・ネスティングSEIメッセージ741が適用されるAUに含まれるレイヤ723の数に関係なく、すべのレイヤ723に適用される。特定の例において、scalable nesting all_layers_flag735は、スケーラブル・ネスティングされたSEIメッセージ742が、現在のSEI NALユニット743のnuh_layer_id729以上のnuh_layer_id 729を有するすべてのレイヤ723に適用されることを指定するときに、1に等しくセットされる。さらに、scalable nesting all_layers_flag735は、スケーラブル・ネスティングされたSEIメッセージ742が、現在のSEI NALユニット743のnuh_layer_id729以上のnuh_layer_id729を有するすべてのレイヤ723に適用されてもよいか、又は適用されないことを指定するときに、0に等しくセットされ得る。それゆえ、scalable nesting all_layers_flag735は、不完全なAUが存在するときに、適合性についてビットストリーム700が正しく検査されるようにすることによって、符号化器及び/又は復号器の機能性を上昇させる。さらに、scalable nesting all_layers_flag735は、このようなメッセージがすべてのレイヤ723に適用されるときに、スケーラブル・ネスティングされたSEIメッセージ742のための明示的なレイヤ・シグナリングを省くことによって、符号化されたビットストリーム700のサイズを低減する。その結果、符号化効率が増加し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を減少させる。
【0119】
冗長シグナリング問題に対処するために、スケーラブル・ネスティングSEIメッセージ741は、スケーラブル・ネスティング・レイヤid(layer_id[i])739を含んでもよい。scalable nesting layer_id[i]739は、スケーラブル・ネスティングされたSEIメッセージ742が適用されるi番目のレイヤのnuh_layer_id 729値を指定する構文要素である。scalable nesting layer_id[i]739は、scalable nesting all_layers_flag735が0にセットされるときに用いられてもよい。このように、layer_Id[i]739は、スケーラブル・ネスティングされたSEIメッセージ742の各々を対応するレイヤ723に相関させるために使用され得る。さらに、scalable nesting layer_id[i]739は、SEI NALユニット743に対応するレイヤ723のnuh_layer_id 729を除く、スケーラブル・ネスティングされたSEIメッセージ742に対応するレイヤ723のすべてのnuh_layer_id729をシグナリングするように構成される。スケーラブル・ネスティングされたSEIメッセージ742が、scalable nesting layer_id[i]739におけるnuh_layer_id729値に関連しないときに、スケーラブル・ネスティングされたSEIメッセージ742が、SEI NALユニット743に関連するレイヤ723に関係すると推論され得る。例えば、SEI さらに、calableNALユニット743は、nuh_layer_id729の最低値に関連し得る。それゆえ、scalable nesting layer_id[i]739は、各レイヤiに対するscalable nesting layer_id[i]739が、現在のSEI NALユニット743のnuh_layer_id729より大きくなければならないように制約されてもよい。これは、現在のSEI NALユニット743のnuh_layer_id 729が、現在のSEI NALユニットyunitto 743においてシグナリングされるが、スケーラブル・ネスティングSEIメッセージ741におけるcalable nesting layer_id[i]739において繰り返されないことを確実にする。
これは、冗長なIdを省くことによって、スケーラブル・ネスティングSEIメッセージ741を改良する。例えば、scalable nesting layer_id[i]739を符号化/復号するループは、より短い時間で1回実行し、これは、符号化及び/又は復号中のプロセッサ・リソースを低減するさらに、これは、ビットストリーム700におけるスケーラブル・ネスティングSEIメッセージ741の各々に対する符号化されたビットストリーム700のサイズを低減するその結果、コーディング効率が上昇し、これは、符号化器及び復号器の両方におけるプロセッサ、メモリ、及び/又はネットワーク・シグナリング・リソースの使用量を低減する。
【0120】
HRD及び/又は復号器は、scalable nesting layer_id[i]739及びscalable nesting all_layers_flag735を使用して、例えばビットストリーム700における他の構文要素に基づいて、スケーラブル・ネスティングされたSEIメッセージ742をレイヤ723に相関させることができる。例えば、HRD及び/又は復号器は、ネスティング・レイヤ数(nestingNumLayers)変数及びネスティング・レイヤIdのリスト(NestingLayerId[i])変数を使用することができる。命名法の問題として、アンダースコアを有する構文要素は、符号化器によってビットストリーム700においてシグナリングされてもよいが、アンダースコア又はスペースがない構文要素は、ビットストリーム700からデータを読み取るときに(例えば、HRD及び/又は復号器で)決定される変数であってもよい。nestingNumLayers変数は、ビットストリーム700におけるデータに基づいてスケーラブル・ネスティングSEIメッセージ742が適用されるレイヤ723の数を指定する。NestingLayerId[i]変数は、ビットストリーム700におけるデータに基づいて、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージ742が適用されるレイヤ723のnuh_layer_id値のリストを指定するようにセットされる変数である。nestingNumLayers及びNestingLayerId[i]は、以下のように決定されてもよい。
【数3】
【0121】
前述のコードは、VPS最大レイヤから1引いた(vps_max_layers_minus1)731に依存する。vps_max_layers_minus1 731は、ビットストリーム700においてマルチ・レイヤ723を指定するVPS711において搬送される構文要素である。前述のコードは、VPSレイヤId(vps_layer_id[i])733にも依存する。The vps_layer_id[i]733は、i番目のレイヤのnuh_layer_id729値を指定するVPS733において搬送される構文要素である。それゆえ、vps_layer_id[i]733は、nuh_layer_id729がレイヤ・インデックスiによってアクセスされ得るように、各レイヤ723についてnuh_layer_id729を指定する。
【0122】
前述のコードは、汎用レイヤ・インデックス(GeneralLayerIdx)変数にも依存する。GeneralLayerIdxは、vps_layer_id[i]733に等しいnuh_layer_idを有するレイヤ723のレイヤ・インデックスを指定する、HRD及び/又は復号器によって決定される変数である。前述のコードは、レイヤのスケーラブル・ネスティング数から1引いた(num_layers_minus1)737構文要素にも依存する。スケーラブル・ネスティングnum_layers_minus1 737は、スケーラブル・ネスティングSEIメッセージ741におけるスケーラブル・ネスティングされたSEIメッセージ742が適用されるレイヤ723の数を指定する、スケーラブル・ネスティングSEIメッセージ741において搬送される構文要素である。scalable nesting num_layers_minus1 737は、マイナス1フォーマットを用いて、それゆえ、実際の値より1少ないものを含む。例えば、スケーラブル・ネスティングSEIメッセージ741が、5つのレイヤ723に関係するスケーラブル・ネスティングSEIメッセージ742を含む場合、scalable nesting num_layers_minus1 737は、4の値にセットされる。いくつかの例において、scalable nesting num_layers_minus1 737は、0~vps_max_layers_minus1 731-GeneralLayerIdx[nuh_layer_id]の範囲(両端を含む)にあるように制約され、nuh_layer_id729は、現在のSEI NALユニット743のnuh_layer_id729である。
【0123】
前述の情報は、本明細書において、以下でより詳細に説明される。レイヤ状ビデオ・コーディングは、スケーラブル・ビデオ・コーディング又はスケーラブル性を有するビデオ・コーディングとも呼ばれる。ビデオ・コーディングにおけるスケーラブル性は、マルチ・レイヤ・コーディング技術を使用することによってサポートされてもよい。マルチ・レイヤ・ビットストリームは、ベース・レイヤ(BL)及び1つ以上のエンハンスメント・レイヤ(EL)を含む。スケーラビリティの例は、空間スケーラビリティ、品質/信号対雑音比(SNR)スケーラビリティ、マルチビュー・スケーラビリティ、フレーム・レート・スケーラビリティなどを含む。マルチ・レイヤ・コーディング技術が使用されるときに、参照ピクチャを使用せずにピクチャ又はその一部がコーディングされてもよく(イントラ予測)、同じレイヤにおける参照ピクチャを参照することによりコーディングされてもよく(インター予測)、他のレイヤにおける参照ピクチャを参照することによりコーディングされてもよい(レイヤ間予測)。現在のピクチャのレイヤ間予測に使用される参照ピクチャは、レイヤ間参照ピクチャ(ILRP)と呼ばれる。
図6は、異なるレイヤにおけるピクチャが異なる解像度を有する空間スケーラビリティのためのマルチ・レイヤ・コーディングの例を示す。
【0124】
いくつかのビデオ・コーディング・ファミリーは、単一レイヤ・コーディングのためのプロファイルから分離されたプロファイルにおけるスケーラビリティのためのサポートを提供する。スケーラブル・ビデオ・コーディング(SVC)は、空間的、時間的及び品質的スケーラビリティのためのサポートを提供する高度なビデオ・コーディング(AVC)のスケーラブル拡張である。SVCでは、ELピクチャにおける各マクロブロック(MB)においてフラグがシグナリングされ、下位レイヤからの並置されたブロックを使用してEL MBが予測されるかどうかを示す。並置されたブロックからの予測は、テクスチャ、動きベクトル、及び/又はコーディング・モードを含んでもよい。SVCの実装は、修正されていないAVC実装をその設計に直接再利用しなくてもよい。SVC ELマクロブロック構文及び復号プロセスは、AVC構文及び復号プロセスとは異なる。
【0125】
スケーラブルHEVC(SHVC)は、空間的及び品質的スケーラビリティのためのサポートを提供するHEVCの拡張である。マルチビューHEVC(MV‐HEVC)は、マルチビュー・スケーラビリティのためのサポートするHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCより高度であり、効率的である3Dビデオ・コーディングのためのサポートを提供するHEVCの拡張である。時間的スケーラビリティは、単一レイヤHEVCコーデックの不可欠な部分として含まれてもよい。HEVCのマルチ・レイヤ拡張において、レイヤ間予測のために使用される復号されたピクチャは、同じAUのみに由来し、長期参照ピクチャ(LTRP)として扱われる。このようなピクチャは、現在のレイヤにおいて他の時間的参照ピクチャと共に参照ピクチャ・リストにおける参照インデックスが割り当てられる。レイヤ間予測(ILP)は、参照ピクチャ・リストにおけるレイヤ間参照ピクチャを参照するために参照インデックスの値をセットすることによって予測ユニット(PU)レベルで達成される。空間スケーラビリティは、ILRPが、符号化又は復号される現在のピクチャとは異なる空間分解能を有するときに、参照画像又はその一部を再サンプリングする。参照ピクチャの再サンプリングは、ピクチャ・レベル又はコーディング・ブロック・レベルのいずれかで実現され得る。
【0126】
VVCはまた、レイヤ状ビデオ・コーディングをサポートしてもよい。VVCビットストリームは、マルチ・レイヤを含むことができる。各レイヤは、互いに独立していてもよい。例えば、各レイヤは、レイヤ間予測を使用せずにコーディングされ得る。この場合、レイヤは、同時キャスト・レイヤとも呼ばれる。場合によっては、レイヤのいくつかは、ILPを使用してコーディングされる。VPSにおけるフラグは、レイヤが同時キャスト・レイヤであるかどうか、又はいくつかのレイヤがILPを使用するかどうかを示すことができる。いくつかのレイヤがILPを使用するときに、レイヤ間のレイヤ依存関係もVPSにおいてシグナリングされる。SHVCやMV-HEVCとは異なり、VVCはOLSを指定しなくてもよい。OLSは、指定されたレイヤのセットを含み、レイヤのセットにおける1つ以上のレイヤは、出力レイヤであると指定される。出力レイヤは、出力されるOLSのレイヤである。VVCのいくつかの実装において、レイヤが同時キャスト・レイヤであるときに、復号及び出力のためにただ1つのレイヤが選択されてもよい。VVCのいくつかの実装において、すべてのレイヤを含むビットストリーム全体が、いずれかのレイヤがILPを使用するときに復号されるように指定される。さらに、レイヤ間の特定のレイヤは、出力レイヤであると指定される。出力レイヤは、最上位レイヤ、全てのレイヤ、又は最上位レイヤに示された下位レイヤのセットを加えたもののみであると示されてもよい。
【0127】
前述の態様は、特定の問題を含む。いくつかのビデオ・コーディング・システムは、SEIメッセージをビットストリーム・サブセットに関連付けるためのスケーラブル・ネスティングSEIメッセージが、特定のレイヤ及び/又はサブレイヤを有する様々な動作点に対応することを指定する。第1の問題は、特定のnuh_layer_id値がnuh_LayerIdであるSEI NALユニットに含まれるスケーラブル・ネスティングSEIメッセージを使用して、特定のレイヤに対してSEIメッセージをネスティングするときに発生する。この場合において、ネスティングされたSEIメッセージがすべてのレイヤに適用されるわけではないときに、nuh_layer_idがnuh_LayerIdに等しい適用可能なレイヤも明示的にシグナリングされる。ただし、nuh_layer_idがnuh_LayerIdに等しい適用可能なレイヤは常に適用可能なレイヤである。したがって、SEI NALユニットのnuh_layer_idのシグナリングは必要であるわけではなく(例えば冗長である)、ビットの無駄である。
【0128】
第2の問題は、ネスティングされたSEIメッセージがすべてのレイヤに適用されるときに発生する。意味は、値の昇順において、現在のSEI NALユニットのnuh_layer_id以上である現在のアクセス・ユニットに存在するnuh_layer_idのすべての値を、リストnestingLayerIdList[0]が含むことを指定するために、all_layer_flagが1に等しくセットされることを示してもよい。しかしながら、現在のAUは不完全なAUであることがある。これは、AUがすべてのレイヤに対して存在するピクチャを有さないときに発生してもよい。ネスティングされたSEIメッセージの持続的なスコープは、現在のAUよりも多くのレイヤに対するピクチャを含む他のAUを含むことができる。結果として、現在のAU(スケーラブル・ネスティングSEIメッセージを含むAU)に欠けているレイヤは適用可能であると指定されない。ネスティングされたSEIメッセージの永続的なスコープにおける他のAUが、現在のAUに欠けているレイヤのピクチャを有するときに、ネスティングされたSEIメッセージに搬送された情報は、それらのピクチャには適用可能ではないと解釈される。結果として、エラーが発生することがあります。例えば、ネスティングされたSEIメッセージにSEIメッセージをパッケージするフレームが含まれる場合、レンダリングされたピクチャは、悪いユーザ体験をもたらすアーチファクトを含むことがある。
【0129】
一般に、本開示は、マルチ・レイヤ・ビデオビットストリームにおけるレイヤに対するSEIメッセージのスケーラブル・ネスティングのためのアプローチを説明する。技術の説明は、VVCに基づく。しかしながら、この技術は、他のビデオ・コーデック仕様に基づくレイヤ状ビデオ・コーディングにも適用される。
【0130】
上述の問題の1つ以上は、以下のように解決され得る。具体的には、本開示は、上述のように、不完全なAUと併せてレイヤと共に使用するためにSEIメッセージを効率的にネスティングするための方法を含む。第一に、スケーラブル・ネスティングSEIメッセージを含むSEI NALユニットのものと等しいレイヤIdを有するレイヤは、明示的にシグナリングされるのではなく、ネスティングされたSEIメッセージが適用されるレイヤであると推論される。第二に、ネスティングされたSEIメッセージがすべてのレイヤに適用されるときに、ネスティングされたSEIメッセージは、現在のAUに存在するすべてのレイヤではなく、ビットストリームに存在し得るすべてのレイヤである、VPSによって指定されたすべてのレイヤに適用される。
【0131】
前述のメカニズムの例示的な実装は、以下のようである。例示的なスケーラブル・ネスティングSEIメッセージ構文は、以下のようである。
【表1】
【0132】
代替的な例において、構文要素nesting_layer_id[i]は、VPSによって指定されたレイヤ間のレイヤ・インデックスのue(v)コーディングである。別の代替的な例において、構文要素nesting_layer_id[i]は、VPSによって指定されたレイヤ間のレイヤ・インデックスのデルタのue(v)コーディングである。別の代替的な例において、構文要素nesting_layer_id[i]は、nuh_layer_idのデルタのue(v)コーディングである。
【0133】
例示的なスケーラブル・ネスティングSEIメッセージ意味は、以下のようである。スケーラブル・ネスティングSEIメッセージは、特定のOLSのコンテキストにおいて特定のレイヤ又はOLSのコンテキストにおいてではない特定のレイヤとSEIメッセージを関連付けるメカニズムを提供する。スケーラブル・ネスティングSEIメッセージは、1つ以上のSEIメッセージが含む。スケーラブル・ネスティングSEIメッセージに含まれるSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージとも呼ばれる。ビットストリーム適合性は、SEIメッセージがスケーラブル・ネスティングSEIメッセージに含まれるときに、以下の制限が適用されることを要求してもよい。
【0134】
132(復号されたピクチャ・ハッシュ)又は133(スケーラブル・ネスティング)に等しいpayloadTypeを有するSEIメッセージは、スケーラブル・ネスティングSEIメッセージに含まれるべきではない。スケーラブル・ネスティングSEIメッセージがバッファ期間、ピクチャ・タイミング、又は復号ユニット情報SEIメッセージを含むときに、スケーラブル・ネスティングSEIメッセージは、0(バッファ期間)、1(ピクチャ・タイミング)、又は130(復号ユニット情報)に等しくないpayloadTypeを有する任意の他のSEIメッセージを含むべきではない。
【0135】
ビットストリーム適合性は、スケーラブル・ネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeの値に対して以下の制限を適用する必要があってもよい。スケーラブル・ネスティングSEIメッセージが0(バッファ期間)、1(ピクチャ・タイミング)、130(復号ユニット情報)、145(従属RAP表示)、又は168(フレーム・フィールド情報)に等しいpayloadTypeを有するSEIメッセージを含むときに、スケーラブル・ネスティングSEIメッセージを含むSEI NALユニットは、PREFIX_SEI_NUTに等しくセットされたnal_unit_typeを有するべきである。スケーラブル・ネスティングSEIメッセージが、132(復号されたピクチャハッシュ)に等しいpealoadTypeを有するSEIメッセージを含むときに、スケーラブル・ネスティングSEIメッセージを含むSEI NALユニットは、SUFFIX_SEI_NUTに等しくセットされたnal_unit_typeを有するべきである。
【0136】
nestting_ols_flagは、特定のOLSのコンテキストにおいて特定のレイヤにスケーラブル・ネスティングされたSEIメッセージを適用することを指定するために、1に等しくセットされてもよい。nestting_ols_flagは、スケーラブル・ネスティングSEIメッセージが一般的に特定のレイヤに適用されること(例えば、OLSのコンテキストにおいてではない)を指定するために、0に等しくセットされてもよい。
【0137】
ビットストリーム適合性は、次の制約がnesting_ols_flagの値に適用されることを要求してもよい。スケーラブル・ネスティングSEIメッセージが、0(バッファ期間)、1(ピクチャ・タイミング)、又は130(復号ユニット情報)に等しいpayloadTypeを有するSEIメッセージを含むときに、nesting_ols_flagの値は、1に等しくあるべきである。スケーラブル・ネスティングSEIメッセージが、VclAssociatedSeiListにおける値と等しいpealoadTypeを有するSEIメッセージを含むときに、nestting_ols_flagの値は0に等しくあるべきである。
【0138】
nestting_num_olss_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが適用されるOLS数を指定する。nestting_num_olss_minus1の値は、0~TotalNumOlss-1の範囲にあるべきである。nesting_ols_Idx_delta_minus1[i]は、nesting_ols_flagが1に等しいときに、スケーラブル・ネスティングSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する変数NestingOlsIdx[i]を導出するために使用される。nestting_ols_Idx_delta_minus1[i]の値は、0~TotalNumOls-2の範囲(両端を含む)にあるべきである。変数NestingOlsIdx[i]は、以下のように導出されてもよい。
【数4】
【0139】
nesting_num_ols_layers_minus1[i]+1は、NestingOlsIdx[i]番目のOLSのコンテキストにおいてスケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定する。nesting_num_ols_layers_minus1[i]の値は、0~NumLayersInOls[NestingOlsIdx[i]]-1の範囲(両端を含む)にあるべきである。
【0140】
nesting_ols_layer_idx_delta_minus1[i][j]は、nesting_ols_flagが1に等しいときに、NestingOlsLayerIdx[i][j]番目のOLSのコンテキストにおいてスケーラブル・ネスティングされたSEIメッセージが適用されるj番目のレイヤのOLSレイヤ・インデックスを指定する変数NestingOlsLayerIdx[i][j]を導出するために使用される。nesting_ols_layer_idx_delta_minus1[i]の値は、0~NumLayersInOls[nestingOlsIdx[i]]-2の範囲(両端を含む)にあるべきである。
【0141】
変数NestingOlsLayerIdx[i][j]は、以下のように導出されてもよい。
【数5】
【0142】
0~nesting_num_olss_minus1の範囲(両端を含む)のiに対するLayerIdInOls[NestingOlsIdx[i]][NestingOlsIdx[i][NestingOlsLayerIdx[i][0]]は、現在のSEI NALユニット(例えば、スケーラブル・ネスティングSEIメッセージを含むSEI NALユニット)のnuh_layer_idと等しくあるべきである。nesting_all_layers_flagは、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに一般的にスケーラブル・ネスティングされたSEIメッセージが適用されることを指定するために1に等しくセットされてもよい。nesting_all_layers_flagは、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに一般的にスケーラブル・ネスティングされたSEIメッセージが適用されてもよいか、又は適用されなくてもよいこと指定するために0に等しくセットされてもよい。
【0143】
nesting_num_layers_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが一般的に適用されるレイヤ数を指定する。nestting_num_layers_minus1の値は、0~vps_max_layers_minus1-GeneralLayerIdx[nuh_layer_id]の範囲(両端を含む)にあるべきとし、ここで、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。nesting_layer_id[i]は、nesting_all_layers_flagが0に等しいときに、スケーラブル・ネスティングされたSEIメッセージが一般的に適用されるi番目のレイヤのnuh_layer_id値を指定する。nesting_layer_id[i]の値は、nuh_layer_idより大きくあるべきであり、ここで、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。
【0144】
nesting_ols_flagが1に等しいときに、スケーラブル・ネスティングされたSEIメッセージが一般的に適用されるレイヤ数を指定する変数Nesting NumLayersと、0~Nesting NumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定するNesting LayerId[i]は、以下のように導出され、ここで、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。
【数6】
【0145】
nestting_num_seis_minus1+1は、スケーラブル・ネスティングされたSEIメッセージ数を指定する。nestting_num_seis_minus1の値は、0~63の範囲(両端を含む)にあるべきである。nestting_zero_bitは、ゼロに等しくセットされるべきである。
【0146】
図8は、例示的なビデオ・コーディング・デバイス800の概略図である。ビデオ・コーディング・デバイス800は、本明細書で説明される開示される例/実施形態を実装するのに好適である。ビデオ・コーディング・デバイス800は、下流ポート820、上流ポート850、及び/又は、ネットワークを介して上流及び/又は下流でデータを通信するための送信機及び/又は受信機を含むトランシーバ・ユニット810を含む。また、ビデオ・コーディング・デバイス800は、データを処理する論理ユニット及び/又は中央処理ユニット(CPU)を含むプロセッサ830と、データを記憶するためのメモリ832と、を含む。また、ビデオ・コーディング・デバイス800は、電気的コンポーネント、光から電気への(OE)コンポーネント、電気から光学への(EO)コンポーネント、及び/又は上流ポート850及び/又は下流ポート820に結合され、電気的、光学的、又は無線通信ネットワークを介したデータの通信のための無線通信コンポーネントを含み得る。また、ビデオ・コーディング・デバイス800は、ユーザへのデータ及びユーザからのデータを通信するための入力及び/又は出力(I/O)デバイス860を含み得る。I/Oデバイス860は、ビデオ・データを表示するためのディスプレイ、オーディオ・データを出力するためのスピーカなどの出力デバイスを含み得る。I/Oデバイス860はまた、キーボード、マウス、トラックボールなどの入力デバイス、及び/又はそのような出力デバイスと対話するための対応するインターフェースを含み得る。
【0147】
プロセッサ830は、ハードウェア及びソフトウェアによって実装される。プロセッサ830は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサ)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、及びデジタル信号プロセッサ(DSP)として実装されてもよい。プロセッサ830は、下流ポート820、Tx/Rx810、上流ポート850、及びメモリ832と通信している。プロセッサ830は、コーディング・モジュール814を含む。コーディング・モジュール814は、マルチ・レイヤ・ビデオ・シーケンス600及び/又はビットストリーム700を使用し得る、方法100、900及び1000などの本明細書で説明され開示された実施形態を実装する。コーディング・モジュール814はまた、本明細書で説明される任意の他の方法/メカニズムを実装してもよい。さらに、コーディング・モジュール814は、コーデック・システム200、符号化器300、復号器400、及び/又はHRD500を実装してもよい。例えば、コーディング・モジュール814は、HRDを実装するために用いられてもよい。さらに、コーディング・モジュール814は、スケーラブル・ネスティングSEIメッセージにおけるスケーラブル・ネスティングされたSEIメッセージと対応するレイヤとの間の相関の明瞭かつ簡潔なシグナリングをサポートするために、対応するフラグを有するスケーラブル・ネスティングSEIメッセージを符号化するために用いられてもよい。したがって、コーディング・モジュール814は、上述の1つ以上の問題に対処するためのメカニズムを実行するように構成されてもよい。それゆえ、コーディング・モジュール814は、ビデオ・データをコーディングするときに、ビデオ・コーディング・デバイス800に追加的な機能性及び/又はコーディング効率を提供させる。このようにして、コーディング・モジュール814は、ビデオ・コーディング・デバイス800の機能性を改善すると共に、ビデオ・コーディング技術に固有の問題に対処する。さらに、コーディング・モジュール814は、ビデオ・コーディング・デバイス800の変換を異なる状態にすることを果たす。代替的には、コーディング・モジュール814は、メモリ832に記憶され、かつプロセッサ830によって実行される命令として(例えば、非一時的媒体に記憶されたコンピュータ・プログラム製品として)実装することができる。
【0148】
メモリ832は、ディスク、テープ・ドライブ、ソリッド・ステート・ドライブ、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、フラッシュ・メモリ、三値コンテンツアドレス指定可能メモリ(TCAM)、スタティック・ランダム・アクセス・メモリ(SRAM)などの1つ以上のメモリタイプを含む。メモリ832はオーバ・フロー・データ記憶デバイスとして使用され、そのようなプログラムが実行のために選択されたときにプログラムを記憶し、プログラム実行中に読み出された命令及びデータを記憶する。
【0149】
図9は、レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含む、ビットストリーム700などのビットストリームにビデオ・シーケンスを符号化する例示的な方法900のフローチャートである。方法900は、方法100を実行するときに、コーデック・システム200、符号化器300、及び/又はビデオ・コーディング・デバイス800などの符号化器によって使用されてもよい。さらに、方法900は、HRD500上で動作してもよく、したがって、マルチ・レイヤ・ビデオ・シーケンス600に対して適合性テストを実行してもよい。
【0150】
方法900は、符号化器がビデオ・シーケンスを受信し、例えばユーザ入力に基づいて、ビデオ・シーケンスをマルチ・レイヤ・ビットストリームに符号化することを決定したときに始まってもよい。ステップ901では、符号化器は、ビデオ・シーケンスを1つ以上のレイヤに符号化し、レイヤをマルチ・レイヤ・ビットストリームに符号化する。したがって、ビットストリームは、1つ以上のレイヤを含む。レイヤは、同じレイヤIdを有するVCL NALユニットと、非VCL NALユニットのセットを含んでもよい。例えば、レイヤは、符号化されたピクチャのビデオ・データと同様に、そのようなピクチャを符号化するために使用される任意のパラメータセットを含むVCL NALユニットのセットを含んでもよい。レイヤのうちの1つ以上が出力レイヤであってもよい。出力レイヤではないレイヤは、出力レイヤの再構成をサポートするように符号化されるが、このようなサポート・レイヤは、復号器での出力のために意図されていない。このようにして、符号化器は、要求があると復号器への送信のためのレイヤの様々な組み合わせを符号化することができる。レイヤは、復号器が、ネットワーク条件、ハードウェア能力、及び/又はユーザ・セッティングに依存して、ビデオ・シーケンスの異なる表現を取得することを可能にするように、必要に応じて送信されてもよい。
【0151】
ステップ903で、符号化器は、1つ以上のスケーラブル・ネスティングSEIメッセージを、現在のSEI NALユニットにおいてビットストリームに符号化する。SEIメッセージは、復号に使用されないデータを含む構文構造である。例えば、SEIメッセージは、ビットストリームが標準に適合することを確実にするために、適合性テストをサポートするためのデータを含んでもよい。マルチ・レイヤ・ビットストリームと併せて使用されるときに、単純化されたシグナリングをサポートするために、SEIメッセージは、スケーラブル・ネスティングSEIメッセージとして符号化される。スケーラブル・ネスティングSEIメッセージは、SEIメッセージを特定のレイヤに関連付けるメカニズムを提供する。スケーラブル・ネスティングSEIメッセージは、1つ以上のスケーラブル・ネスティングされたSEIメッセージを含む。スケーラブル・ネスティングされたSEIメッセージは、各々OLSのうちの1つ以上及び/又はレイヤのうちの1つ以上に適用されてもよい。簡略化されたシグナリングをサポートするために、スケーラブル・ネスティングSEIメッセージは、現在のSEI NALユニットのレイヤId以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all_layers_flagを含む。Scalable nesting all_layers_flagはグローバルであり、対応するAUに基づいて指定されないため、scalable nesting all_layers_flagは実際にはすべてのレイヤに適用される。これは、現在のSEI NALユニットが不完全なAUに関連するときでも、上述のエラーを防止する。このように、scalable nesting all_layers_flagは、現在のAUが完全なAUであるか不完全なAUであるかに関係なく、スケーラブル・ネスティングされたSEIメッセージがすべてのレイヤに適用されることを可能にする。
【0152】
特定の例において、scalable nesting all_layers_flagは、スケーラブル・ネスティングされたSEIメッセージが、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに適用されることを指定するときに、1に等しくセットされる。特定の例において、scalable nesting all_layers_flagは、スケーラブル・ネスティングされたSEIメッセージが、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しくセットされる。前述の制約及び/又は要件は、ビットストリームが、例えば、本明細書に示されるように修正されたVVC又は何らかの他の標準に適合することを確実にする。しかし、符号化器は、例えば、異なる標準又は同じ標準の異なるバージョンで動作するときなど、制約を受けない他のモードで動作することもできてもよい。
【0153】
ステップ905で、符号化器で動作するHRDは、スケーラブル・ネスティングSEIメッセージに基づいて、レイヤに対してビットストリーム適合性テストのセットを実行することができる。例えば、HRDは、スケーラブル・ネスティングSEIメッセージにおけるフラグを読み取って、スケーラブル・ネスティングSEIメッセージに含まれるスケーラブル・ネスティングされたSEIメッセージをどのように解釈するかを決定することができる。次いで、HRDは、スケーラブル・ネスティングされたSEIメッセージを読み取って、標準に対する適合性についてレイヤをどのように検査するかを決定することができる。次いで、HRDは、スケーラブル・ネスティングされたSEIメッセージ及び/又はスケーラブル・ネスティングSEIメッセージにおける対応するフラグに基づいて、レイヤに対する適合性テストを実行することができる。
【0154】
いくつかの例において、HRDは、nestingNumLayers変数及びNestingLayerId[i]変数を用いて、スケーラブル・ネスティングされたSEIメッセージとレイヤの間の相関を決定することができる。nestingNumLayers変数は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定する。NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定する。nestingNumLayers及びNestingLayerId[i]は、ビットストリームからのデータに基づいてHRDによって導出され得る。HRDは、次いで、nestingNumLayers変数とNestingLayerId[i]変数を必要に応じて用いて、適合性テストをサポートすることができる。いくつかの例では、nestingNumLayers及びNestingLayerId[i]は、以下のように導出される。
【数7】
vps_max_layers_minus1+1は、VPSによって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_layers_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する。いくつかの例において、scalable nesting num_layers_minus1は、0~vps_max_layers_minus1-GeneralLayerIdx[nuh_layer_id]の範囲(両端を含む)にとどまるように制約され、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。アンダースコアを含むものとして本明細書で説明される構文要素がビットストリームに含まれてもよいが、スペースのない構文要素が導出されてもよいことに留意されたい。
【0155】
ステップ907で、符号化器は、要求があると復号器に向かって通信するためのビットストリームを記憶することができる。符号化器はまた、必要に応じて符号化器に向かってビットストリームを送信することができる。
【0156】
図10は、レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含む、ビットストリーム700などのビットストリームからビデオ・シーケンスを復号する例示的な方法1000のフローチャートである。方法1000は、方法100を実行するときに、コーデック・システム200、復号器400、及び/又はビデオ・コーディング・デバイス800などの復号器によって使用されてもよい。さらに、方法1000は、HRD500などのHRDによって適合性について検査されたマルチ・レイヤ・ビデオ・シーケンス600で用いられてもよい。
【0157】
方法1000は、復号器が、例えば、方法900の結果として、マルチ・レイヤ・ビデオ・シーケンスを表すコーディングされたデータのビットストリームの受信を始めるときに始まることができる。ステップ1001では、復号器は、1つ以上のレイヤを含むビットストリームを受信する。レイヤは、同じレイヤIdを有するVCL NALユニットと、非VCL NALユニットのセットを含んでもよい。例えば、レイヤは、符号化されたピクチャのビデオ・データと同様に、そのようなピクチャを符号化するために使用される任意のパラメータセットを含むVCL NALユニットのセットを含んでもよい。レイヤのうちの1つ以上が出力レイヤであってもよい。出力レイヤではないレイヤは、出力レイヤの復号をサポートするように復号されるが、このようなサポート・レイヤは出力されない。
【0158】
ビットストリームはまた、1つ以上のスケーラブル・ネスティングSEIメッセージを含む。SEIメッセージは、復号に使用されないデータを含む構文構造である。例えば、SEIメッセージは、ビットストリームが標準に適合することを確実にするために、適合性テストをサポートするためのデータを含んでもよい。マルチ・レイヤ・ビットストリームと併せて使用されるときに、単純化されたシグナリングをサポートするために、SEIメッセージは、スケーラブル・ネスティングSEIメッセージにおいてコーディングされる。スケーラブル・ネスティングSEIメッセージは、SEIメッセージを特定のレイヤに関連付けるメカニズムを提供する。スケーラブル・ネスティングSEIメッセージは、1つ以上のスケーラブル・ネスティングされたSEIメッセージを含む。指定されたスケーラブル・ネスティングSEIメッセージは、現在のSEI NALユニットに含まれてもよく、現在のSEI NALユニットは、SEIメッセージを含む非VCL NALユニットである。スケーラブル・ネスティングされたSEIメッセージは、各々OLSのうちの1つ以上及び/又はレイヤのうちの1つ以上に適用されてもよい。簡略化されたシグナリングをサポートするために、スケーラブル・ネスティングSEIメッセージは、現在のSEI NALユニットのレイヤId以上であるレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうかを指定するscalable nesting all_layers_flagを含む。Scalable nesting all_layers_flagはグローバルであり、対応するAUに基づいて指定されないため、scalable nesting all_layers_flagは実際にはすべてのレイヤに適用される。これは、現在のSEI NALユニットが不完全なAUに関連するときでも、上述のエラーを防止する。このように、scalable nesting all_layers_flagは、現在のAUが完全なAUであるか不完全なAUであるかに関係なく、スケーラブル・ネスティングされたSEIメッセージがすべてのレイヤに適用されることを可能にする。
【0159】
いくつかの例において、scalable nesting all_layers_flagは、スケーラブル・ネスティングされたSEIメッセージが、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに適用されることを指定するときに、1に等しくセットされる。特定の例において、scalable nesting all_layers_flagは、スケーラブル・ネスティングされたSEIメッセージが、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに適用されてもよいか、又は適用されなくてもよいことを指定するときに、0に等しくセットされる。
【0160】
いくつかの例では、復号器は、nestingNumLayers変数とNestingLayerId[i]変数を用いて、スケーラブル・ネスティングされたSEIメッセージとレイヤの間の相関を決定することができる。nestingNumLayers変数は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定する。
NestingLayerId[i]は、0~nestingNumLayers-1の範囲(両端を含む)のiに対して、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤのnuh_layer_id値のリストを指定する。
nestingNumLayers及びNestingLayerId[i]は、ビットストリームからのデータに基づいて復号器によって導出され得る。復号器は、次いで、nestingNumLayers変数とNestingLayerId[i]変数を必要に応じて用いて、復号及び/又は表示をサポートすることができる。いくつかの例では、nestingNumLayers及びNestingLayerId[i]は、以下のように導出される。
【数8】
vps_max_layers_minus1+1は、VPSによって指定されたレイヤ数を指定し、GeneralLayerIdxは、vps_layer_id[i]に等しいuh_layer_idを有するレイヤのレイヤ・インデックスを指定する変数であり、vps_layer_id[i]は、i番目のレイヤのnuh_layer_id値を指定し、scalable nesting num_layers_minus1+1は、スケーラブル・ネスティングされたSEIメッセージが適用されるレイヤ数を指定し、scalable nesting layer_id[i]は、スケーラブル・ネスティングされたSEIメッセージが適用されるi番目のレイヤのnuh_layer_id値を指定する。いくつかの例において、scalable nesting num_layers_minus1は、0~vps_max_layers_minus1-GeneralLayerIdx[nuh_layer_id]の範囲(両端を含む)にとどまるように制約され、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。アンダースコアを含むものとして本明細書において説明された構文要素はビットストリームに含まれてもよく、スペースなしの構文要素が導出されてもよいことに留意されたい。
【0161】
実施形態では、ビデオ復号器は、スケーラブル・ネスティングSEIメッセージが、VVC又は何らかの他の標準に基づいて上述したように、scalable nesting all_layers_flagを用いることを期待する。しかしながら、復号器がこの条件が真でないと決定した場合、復号器は、エラーを検出するか、エラーをシグナルするか、訂正されたビットストリーム(又はその一部分)が再送されることを要求するか、又は適合するビットストリーム受信されることを確実にするために、何らかの他の是正措置を取ってもよい。
【0162】
ステップ1003で、復号器は、1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することができる。例えば、スケーラブル・ネスティングSEIメッセージの存在は、ビットストリームが符号化器でHRDによって検査され、それゆえ、標準に適合することを示すことができる。したがって、スケーラブル・ネスティングSEIメッセージの存在は、ビットストリームが復号され得ることを示す。ステップ1005で、復号器は、復号されたビデオ・シーケンスの一部として表示するために、復号されたビデオを転送することができる。例えば、復号されたピクチャ及び/又はビデオ・シーケンスは、電子デバイス(例えば、スマート・フォン、タブレット、ラップトップ、パーソナル・コンピュータなど)のディスプレイ又は画面上にユーザに表示され得る。
【0163】
図11は、レイヤに適用されるスケーラブル・ネスティングSEIメッセージを含むビットストリームを使用してビデオ・シーケンスをコーディングするための例示的なシステム1100の概略図である。システム1100は、コーデック・システム200、符号化器300、復号器400、及び/又はビデオ・コーディング・デバイス800などの符号化器及び復号器によって実装されてもよい。さらに、システム1100は、マルチ・レイヤ・ビデオ・シーケンス600及び/又はビットストリーム700に対して適合性テストを実行するためにHRD500を用いてもよい。追加的に、システム1100は、方法100、900、及び/又は1000を実装するときに用いられてもよい。
【0164】
システム1100は、ビデオ符号化器1102を含む。ビデオ符号化器1102は、1つ以上のレイヤを含むビットストリームを符号化するためのコーディング・モジュール1103を含む。コーディング・モジュール1103は、さらに、現在のSEI NALユニットにおいてスケーラブル・ネスティングSEIメッセージをビットストリームに符号化することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージと、現在のSEI NALユニットのレイヤId以上のlayer Idを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるかどうか指定するscalable nesting all_layers_flagを含む、符号化することを行うためのものである。ビデオ符号化器1102は、さらに、スケーラブル・ネスティングされたSEIメッセージに基づいて、レイヤに対してビットストリーム適合性テストのセットを実行するためのHRDモジュール1105をさらに含む。ビデオ符号化器1102は、さらに、復号器に向けた通信のためのビットストリームを記憶するための記憶モジュール1106を含む。ビデオ符号化器1102は、さらに、ビットストリームをビデオ復号器1110に向かって送信するための送信モジュール1107を含む。ビデオ符号化器1102は、さらに、方法900のステップのいずれかを実行するように構成されてもよい。
【0165】
システム1100はまた、ビデオ復号器1110を含む。ビデオ復号器1110は、1つ以上のレイヤ及び現在のSEIネットワーク抽象化レイヤ(NAL)ユニットにおいてスケーラブル・ネスティング補足エンハンスメント情報(SEI)メッセージを含むビットストリームを受信することであって、スケーラブル・ネスティングSEIメッセージは、スケーラブル・ネスティングされたSEIメッセージと、現在のSEI NALユニットのレイヤId以上のレイヤIdを有するすべてのレイヤにスケーラブル・ネスティングされたSEIメッセージが適用されるされるかどうかを指定するscalable nesting all_layers_flagを含む、受信することを行うための受信モジュール1111を含む。ビデオ復号器1110は、さらに、1つ以上のレイヤからのコーディングされたピクチャを復号して、復号されたピクチャを生成することを行うための復号モジュール1113を含む。ビデオ復号器1110は、さらに、復号されたビデオ・シーケンスの一部として表示するために復号されたピクチャを転送するための転送モジュール1115を含む。ビデオ復号器1110は、さらに、方法1000のステップのいずれかを実行するように構成されてもよい。
【0166】
第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にあるライン、トレース、又は別の媒体を除き、介在するコンポーネントがないときに、第2のコンポーネントに直接結合される。第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にあるライン、トレース、又は別の媒体以外に、介在するコンポーネントがあるときに、第2のコンポーネントに間接結合される。用語「結合された」及びその変形は、直接結合された、及び間接結合されたの両方を含む。用語「約」の使用は、特に断らない限り、後続の数字の±10%を含む範囲を意味する。
【0167】
また、本明細書に記載された例示的な方法のステップは、必ずしも説明された順序で実行される必要はないと理解されるべきであり、そのような方法のステップの順序は、単に例示的なものにすぎないと理解されるべきである。同様に、追加のステップが、そのような方法に含まれてもよいし、特定のステップが、本開示の種々の実施形態と一致する方法において省略されるか、又は組み合わされてもよい。
【0168】
本開示において複数の実施形態が提供されているが、開示されたシステム及び方法は、本開示の精神又は範囲から逸脱することなく、多くの他の具体的な形式で具現化されるかもしれないと理解されよう。本例は、例示的なものであり、限定的なものではないと考えられ、その意図は、本明細書に与えられた詳細に限定されない。例えば、種々の要素又はコンポーネントが別のシステムに組み合わせられたり、一体化されたりしてもよいし、特定の特徴が省略されたり、実装されなくてもよい。
【0169】
追加的に、種々の実施形態において個別又は別個に説明及び図示された技術、システム、サブシステム、及び方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技術、又は方法と組み合わせられるか、又は一体化されてもよい。変更、置換、及び改変の他の例は、当業者によって確認可能であり、本明細書に開示された精神及び範囲から逸脱することなく行われてもよい。