(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025013832
(43)【公開日】2025-01-28
(54)【発明の名称】シーケンスレベルHRDパラメータ
(51)【国際特許分類】
H04N 19/30 20140101AFI20250121BHJP
H04N 19/70 20140101ALI20250121BHJP
【FI】
H04N19/30
H04N19/70
【審査請求】有
【請求項の数】24
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024176886
(22)【出願日】2024-10-09
(62)【分割の表示】P 2022518750の分割
【原出願日】2020-09-08
(31)【優先権主張番号】62/905,244
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ワン、イエ-クイ
(57)【要約】 (修正有)
【課題】ビデオコーディングメカニズムを提供する。
【解決手段】本メカニズムは、1つまたは複数の出力レイヤセット(OLS)を含むビットストリーム800をエンコードすることを含む。OLSを指定するビデオパラメータセット(VPS)もビットストリームにエンコードされる。VPSは、VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む。ビットストリーム適合性試験のセットがシーケンスレベルHRDパラメータに基づいて実行される。ビットストリームは、デコーダに向けて通信するために記憶される。
【選択図】
図8
【特許請求の範囲】
【請求項1】
デコーダによって実装される方法であって、
1つまたは複数の出力レイヤセット(OLS)とビデオパラメータセット(VPS)とを含むビットストリームを受信する段階であって、前記VPSが、前記1つまたは複数のOLSを指定し、前記VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含み、前記VPSは、サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ(sublayer_cpb_params_present_flag)およびOLSモード指示フラグを含み、前記OLSモード指示フラグは、0に等しく設定されて、前記VPSによって指定されるOLSの総数が、vps_max_layers_minus1+1に等しいことを指定し、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有するレイヤを含み、各OLSについて、前記OLSにおける最上位レイヤのみが出力され、vps_max_layers_minusは、レイヤの数を指定する、受信する段階と、
前記sublayer_cpb_params_present_flagが0に等しいとき、最大HRD時間ID(hrd_max_tid)よりも小さい時間識別子(TemporalId)を有するすべてのサブレイヤ表現のためのHRDパラメータが、前記hrd_max_tidに等しいTemporalIdを有する前記サブレイヤ表現のためのHRDパラメータと同じであると推測する段階と、
前記ビットストリームを解析して、前記1つまたは複数のOLSおよび前記VPSを取得し、前記VPSに基づいて前記1つまたは複数のOLSからの画像をデコードする段階と、
を備える、方法。
【請求項2】
前記シーケンスレベルHRDパラメータが、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれ、前記general_hrd_parametersシンタックス構造が、HRD動作において使用されるパラメータを提供する、請求項1に記載の方法。
【請求項3】
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、請求項1または2に記載の方法。
【請求項4】
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、前記HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、請求項2に記載の方法。
【請求項5】
前記シーケンスレベルHRDパラメータが、HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み、前記hrd_cpb_cnt_minus1+1が、代替のコーディング画像バッファ(CPB)配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31までの範囲に制約される、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間識別子(ID)を有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、hrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記シーケンスレベルHRDパラメータは、前記サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ、デコードユニットHRDパラメータ存在フラグ及びHRDコーディング画像バッファカウントを含み、前記サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ、前記デコードユニットHRDパラメータ存在フラグ及び前記HRDコーディング画像バッファカウントは、シーケンスの各サブレイヤについて同じ値を含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記OLSモード指示フラグは、1に等しく設定されて、前記VPSによって指定されるOLSの前記総数が、vps_max_layers_minus1+1に等しいことを指定し、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有する前記レイヤを含み、各OLSについて、前記OLSにおけるすべてのレイヤが出力される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記OLSモード指示フラグは、2に等しく設定されて、前記VPSによって指定されるOLSの前記総数が明示的にシグナリングされることを指定し、各OLSについて、前記OLSにおける最上位レイヤおよび明示的にシグナリングされる下位レイヤのセットが出力される、請求項1から7のいずれか一項に記載の方法。
【請求項10】
vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しい場合、前記OLSモード指示フラグの値は、2に等しいと推測される、請求項1から9のいずれか一項に記載の方法。
【請求項11】
エンコーダによって実装される方法であって、
1つまたは複数の出力レイヤセット(OLS)を含むビットストリームをエンコードする段階と、
前記1つまたは複数のOLSを指定するビデオパラメータセット(VPS)を前記ビットストリームにエンコードする段階であって、前記VPSが、前記VPSによって指定されるすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含み、前記VPSは、サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ(sublayer_cpb_params_present_flag)およびOLSモード指示フラグを含み、前記OLSモード指示フラグは、0に等しく設定されて、前記VPSによって指定されるOLSの総数が、vps_max_layers_minus1+1に等しいことを指定し、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有するレイヤを含み、各OLSについて、前記OLSにおける最上位レイヤのみが出力され、vps_max_layers_minusは、レイヤの数を指定する、エンコードする段階と、
前記sublayer_cpb_params_present_flagが0に等しいとき、最大HRD時間ID(hrd_max_tid)よりも小さい時間識別子(TemporalId)を有するすべてのサブレイヤ表現のためのHRDパラメータが、前記hrd_max_tidに等しいTemporalIdを有する前記サブレイヤ表現のためのHRDパラメータと同じであると推測する段階と
を備える、方法。
【請求項12】
前記シーケンスレベルHRDパラメータが、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれ、前記general_hrd_parametersシンタックス構造が、HRD動作において使用されるパラメータを提供する、請求項11に記載の方法。
【請求項13】
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、請求項11または12に記載の方法。
【請求項14】
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、前記HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、請求項11に記載の方法。
【請求項15】
前記シーケンスレベルHRDパラメータが、HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み、前記hrd_cpb_cnt_minus1+1が、代替のコーディング画像バッファ(CPB)配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31までの範囲に制約される、請求項11から14のいずれか一項に記載の方法。
【請求項16】
前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間識別子(ID)を有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、hrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、請求項11から15のいずれか一項に記載の方法。
【請求項17】
前記シーケンスレベルHRDパラメータは、前記サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ、デコードユニットHRDパラメータ存在フラグ及びHRDコーディング画像バッファカウントを含み、前記サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ、前記デコードユニットHRDパラメータ存在フラグ及び前記HRDコーディング画像バッファカウントは、シーケンスの各サブレイヤについて同じ値を含む、請求項11から16のいずれか一項に記載の方法。
【請求項18】
前記OLSモード指示フラグは、1に等しく設定されて、前記VPSによって指定されるOLSの総数が、vps_max_layers_minus1+1に等しいことを指定し、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有する前記レイヤを含み、各OLSについて、前記OLSにおけるすべてのレイヤが出力される、請求項11から17のいずれか一項に記載の方法。
【請求項19】
前記OLSモード指示フラグは、2に等しく設定されて、前記VPSによって指定されるOLSの総数が明示的にシグナリングされることを指定し、各OLSについて、前記OLSにおける最上位レイヤおよび明示的にシグナリングされる下位レイヤのセットが出力される、請求項11から18のいずれか一項に記載の方法。
【請求項20】
vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しい場合、前記OLSモード指示フラグの値は、2に等しいと推測される、請求項11から19のいずれか一項に記載の方法。
【請求項21】
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、受信機、メモリおよび送信機は、請求項1から10のいずれか一項に記載の方法を実行するように構成されている、デコーダ。
【請求項22】
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、受信機、メモリおよび送信機は、請求項11から20のいずれか一項に記載の方法を実行するように構成されている、エンコーダ。
【請求項23】
ビデオコーディングデバイスが使用するためのコンピュータプログラムであって、前記コンピュータプログラムが、前記ビデオコーディングデバイスに請求項1から20のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を備える、コンピュータプログラム。
【請求項24】
トランシーバユニットと、プロセッサと、メモリとを備え、前記トランシーバユニットは、ネットワークを介してビデオビットストリームを通信するように構成されており、前記メモリは、前記ビデオビットストリームを格納するように構成されており、
前記ビデオビットストリームは、1つまたは複数の出力レイヤセット(OLS)とビデオパラメータセット(VPS)とを含み、前記VPSが、前記1つまたは複数のOLSを指定し、前記VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含み、前記VPSは、サブレイヤコーディング画像バッファ(CPB)パラメータ存在フラグ(sublayer_cpb_params_present_flag)およびOLSモード指示フラグを含み、前記OLSモード指示フラグは、0に等しく設定されて、前記VPSによって指定されるOLSの総数が、vps_max_layers_minus1+1に等しいことを指定し、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有するレイヤを含み、各OLSについて、前記OLSにおける最上位レイヤのみが出力され、vps_max_layers_minusは、レイヤの数を指定し、
前記プロセッサは、前記ビデオビットストリームを解析して、
前記1つまたは複数のOLS及びVPSを取得し、
前記sublayer_cpb_params_present_flagが0に等しいとき、最大HRD時間ID(hrd_max_tid)よりも小さい時間識別子(TemporalId)を有するすべてのサブレイヤ表現のためのHRDパラメータが、前記hrd_max_tidに等しいTemporalIdを有する前記サブレイヤ表現のためのHRDパラメータと同じであると推測し、
前記VPSに基づいて前記1つまたは複数のOLSからの画像をデコードする、デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本特許出願は、Ye-Kui Wangによって2019年9月24日に出願された「Hypothetical Reference Decoder(HRD)for Multi-Layer Video Bitstreams」と題する米国仮特許出願第62/905,244号の利益を主張するものであり、参照により本明細書に組み込まれる。
【0002】
本開示は、一般にビデオコーディングに関し、具体的には、マルチレイヤビットストリームの効率的なエンコードおよび/または適合性試験をサポートするための仮想参照デコーダ(HRD)パラメータ変更に関する。
【背景技術】
【0003】
比較的短いビデオであってもその描写に必要なビデオデータの量は膨大なものとなる可能性があり、このため、帯域幅容量が限られた通信ネットワークを介してデータをストリーミングまたはその他の方法で通信する場合に困難が伴う場合がある。したがって、ビデオデータは、現代の電気通信ネットワークを介して通信される前に圧縮されるのが一般的である。また、ビデオをストレージデバイスに記憶する場合、メモリのリソースが限られていることがあるため、ビデオのサイズが問題となることもある。ビデオ圧縮デバイスは、しばしば、送信または保存の前にソースにおいてソフトウェアおよび/またはハードウェアを使用して、ビデオデータをコーディングし、それによって、デジタルビデオ画像を表すために必要なデータの量を減少させる。その後、圧縮されたデータは、配信先において、ビデオデータをデコードするビデオ伸張デバイスによって受信される。ネットワークリソースが限られ、ビデオの高品質化が増々求められている中で、画質をほとんどまたは全く犠牲にすることなく圧縮率を向上させる、改善された圧縮および伸長技術が望まれている。
【発明の概要】
【0004】
一実施形態では、本開示は、デコーダによって実装される方法を含み、本方法は、デコーダの受信機によって、1つまたは複数の出力レイヤセット(OLS)とビデオパラメータセット(VPS)とを含むビットストリームを受信する段階であって、VPSが、OLSを指定し、VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、段階と、デコーダのプロセッサによって、OLSから画像をデコードする段階と、を含む。
【0005】
ビデオコーディングシステムは、ビットストリームがデコーダによってデコード可能であることを保証するために様々な適合性試験を利用する。例えば、適合性チェックは、適合性についてビットストリーム全体をテストすることと、次いで適合性についてビットストリームの各レイヤをテストすることと、最後に適合性について潜在的なデコード可能出力をチェックすることと、を含み得る。適合性チェックを実装するために、対応するパラメータがビットストリームに含まれている。仮想参照デコーダ(HRD)は、パラメータを読み取り、テストを実行することができる。ビデオは、多くのレイヤおよび多くの異なるOLSを含み得る。要求に応じて、エンコーダは、選択されたOLSの1つまたは複数のレイヤを送信する。例えば、エンコーダは、現在のネットワーク帯域幅によってサポート可能なOLSから最良のレイヤを送信することができる。このメカニズムに関する問題は、いくつかのビデオコーディングシステムにおいてHRD適合性試験に使用されるHRDパラメータシグナリング処理が、マルチレイヤコンテキストにおいて複雑になる可能性があることである。例えば、HRDパラメータのセットは、各OLSのレイヤごとにシグナリングされ得る。このようなHRDパラメータは、パラメータの意図された範囲に応じて、ビットストリーム内の異なるロケーションにおいてシグナリングされ得る。その結果、より多くのレイヤおよび/またはOLSが追加されるにつれてスキームがより複雑になる。さらに、異なるレイヤおよび/またはOLSのHRDパラメータは、冗長な情報を含んでいる場合がある。OLSおよび対応するレイヤのためのシーケンスレベルHRDパラメータのグローバルなセットをシグナリングするための例示的なメカニズムが開示される。例えば、すべてのOLS、およびOLSに含まれるすべてのレイヤに適用されるすべてのシーケンスレベルHRDパラメータが、VPSにおいてシグナリングされる。VPSはビットストリームで1回シグナリングされ、したがって、シーケンスレベルHRDパラメータは1回シグナリングされる。さらに、シーケンスレベルHRDパラメータは、すべてのOLSで同じであるように制約されてもよい。このようにして、冗長なシグナリングが低減され、コーディング効率が向上する。また、この手法により、HRD処理が簡略化される。その結果、プロセッサ、メモリ、および/またはネットワークのシグナリングリソースの使用量がエンコーダおよびデコーダの両方において削減される。
【0006】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータが、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれ、general_hrd_parametersシンタックス構造が、HRD動作において使用されるパラメータを提供する、態様の別の実装が提供される。
【0007】
任意選択で、前述の態様のいずれかにおいて、HRD動作が、エンコーダ上で動作するHRDによって実行されるビットストリーム適合性試験のセットを含む、態様の別の実装が提供される。
【0008】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータがデコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、decoding_unit_hrd_params_present_flagが、HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、decoding_unit_hrd_params_present_flagが、HRDがAUレベルで動作するようにスケジュールされるときに、0に設定される、態様の別の実装が提供される。
【0009】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータがHRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み、hrd_cpb_cnt_minus1+1が代替のコーディング画像バッファ(CPB)配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31の範囲に制約される、態様の別の実装が提供される。
【0010】
任意選択で、前述の態様のいずれかにおいて、VPSがサブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)をさらに含み、sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間識別子(ID)を有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、態様の別の実装が提供される。
【0011】
任意選択で、前述の態様のいずれかにおいて、ビットストリーム中のシーケンスレベルHRDパラメータの存在が、デコーダが配信スケジュールに従ってビットストリームをデコードすることが可能であることを示す、態様の別の実装が提供される。
【0012】
一実施形態では、本開示は、エンコーダによって実装される方法を含み、本方法は、エンコーダのプロセッサによって、1つまたは複数の出力レイヤセット(OLS)を含むビットストリームをエンコードする段階と、プロセッサによって、OLSを指定するビデオパラメータセット(VPS)をビットストリームにエンコードする段階であって、VPSが、VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、段階と、プロセッサによって、シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行する段階と、を含む。
【0013】
ビデオコーディングシステムは、ビットストリームがデコーダによってデコード可能であることを保証するために様々な適合性試験を利用する。例えば、適合性チェックは、適合性についてビットストリーム全体をテストすることと、次いで適合性についてビットストリームの各レイヤをテストすることと、最後に適合性について潜在的なデコード可能出力をチェックすることと、を含み得る。適合性チェックを実装するために、対応するパラメータがビットストリームに含まれている。HRDは、パラメータを読み取り、テストを実行することができる。ビデオは、多くのレイヤおよび多くの異なるOLSを含み得る。要求に応じて、エンコーダは、選択されたOLSの1つまたは複数のレイヤを送信する。例えば、エンコーダは、現在のネットワーク帯域幅によってサポート可能なOLSから最良のレイヤを送信することができる。このメカニズムに関する問題は、いくつかのビデオコーディングシステムにおいてHRD適合性試験に使用されるHRDパラメータシグナリング処理が、マルチレイヤコンテキストにおいて複雑になる可能性があることである。例えば、HRDパラメータのセットは、各OLSのレイヤごとにシグナリングされ得る。このようなHRDパラメータは、パラメータの意図された範囲に応じて、ビットストリーム内の異なるロケーションにおいてシグナリングされ得る。その結果、より多くのレイヤおよび/またはOLSが追加されるにつれてスキームがより複雑になる。さらに、異なるレイヤおよび/またはOLSのHRDパラメータは、冗長な情報を含んでいる場合がある。OLSおよび対応するレイヤのためのシーケンスレベルHRDパラメータのグローバルなセットをシグナリングするための例示的なメカニズムが開示される。例えば、すべてのOLS、およびOLSに含まれるすべてのレイヤに適用されるすべてのシーケンスレベルHRDパラメータが、VPSにおいてシグナリングされる。VPSはビットストリームで1回シグナリングされ、したがって、シーケンスレベルHRDパラメータは1回シグナリングされる。さらに、シーケンスレベルHRDパラメータは、すべてのOLSで同じであるように制約されてもよい。このようにして、冗長なシグナリングが低減され、コーディング効率が向上する。また、この手法により、HRD処理が簡略化される。その結果、プロセッサ、メモリ、および/またはネットワークのシグナリングリソースの使用量がエンコーダおよびデコーダの両方において削減される。
【0014】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータがgeneral_hrd_parametersシンタックス構造に含まれ、general_hrd_parametersシンタックス構造がHRD動作において使用されるパラメータを提供する、態様の別の実装が提供される。
【0015】
任意選択で、前述の態様のいずれかにおいて、HRD動作がビットストリーム適合性試験のセットを含み、ビットストリーム適合性試験のセットがプロセッサ上で動作するHRDによって実行される、態様の別の実装が提供される。
【0016】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータがdecoding_unit_hrd_params_present_flagを含み、decoding_unit_hrd_params_present_flagが、HRDがAUレベルまたはDUレベルで動作するようにスケジュールされるときに、1に設定され、decoding_unit_hrd_params_present_flagが、HRDがAUレベルで動作するようにスケジュールされるときに、0に設定される、態様の別の実装が提供される。
【0017】
任意選択で、前述の態様のいずれかにおいて、シーケンスレベルHRDパラメータがhrd_cpb_cnt_minus1を含み、hrd_cpb_cnt_minus1+1が代替のCPB配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31の範囲に制約される、態様の別の実装が提供される。
【0018】
任意選択で、前述の態様のいずれかにおいて、VPSがsublayer_cpb_params_present_flagをさらに含み、sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0からhrd_max_tid[i]までの範囲の時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、態様の別の実装が提供される。
【0019】
任意選択で、前述の態様のいずれかにおいて、ビットストリーム中のシーケンスレベルHRDパラメータの存在が、デコーダが配信スケジュールに従ってビットストリームをデコードすることが可能であることを示す、態様の別の実装が提供される。
【0020】
一実施形態において、本開示は、プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機と、を備えるビデオコーディングデバイスであって、プロセッサ、受信機、メモリ、および送信機が前述の態様のいずれかの方法を実行するように構成されている、ビデオコーディングデバイスを含む。
【0021】
一実施形態では、本開示は、ビデオコーディングデバイスが使用するためのコンピュータプログラム製品を備える非一時的コンピュータ可読媒体を含み、コンピュータプログラム製品は、プロセッサによって実行された場合、ビデオコーディングデバイスに前述の態様のいずれかの方法を実行させるように、非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を備える。
【0022】
一実施形態では、本開示は、1つまたは複数のOLSとVPSとを含むビットストリームを受信するための受信手段であって、VPSが、OLSを指定し、VPSによって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む、受信手段と、OLSから画像をデコードするためのデコード手段と、デコードされたビデオシーケンスの一部として表示するために画像を転送するための転送手段と、を備えるデコーダを含む。
【0023】
任意選択で、前述の態様のいずれかにおいて、デコーダが前述の態様のいずれかの方法を実行するようにさらに構成されている、態様の別の実装が提供される。
【0024】
一実施形態では、本開示は、1つまたは複数のOLSを含むビットストリームをエンコードし、OLSを指定するVPSをビットストリームにエンコードするためのエンコード手段であって、VPSが、VPSによって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む、エンコード手段と、シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行するためのHRD手段と、デコーダに向けて通信するためのビットストリームを記憶するための記憶手段と、を備えるエンコーダを含む。
【0025】
任意選択で、前述の態様のいずれかにおいて、エンコーダが前述の態様のいずれかの方法を実行するようにさらに構成されている、態様の別の実装が提供される。
【0026】
明確にするために、前述の実施形態のうちのいずれか1つは、本開示の範囲内の新しい実施形態を作成するために、他の前述の実施形態のうちのいずれか1つまたは複数と組み合わせられてもよい。
【0027】
これらおよび他の特徴は、添付の図面および特許請求の範囲と併せて以下の詳細な説明からより明確に理解されるであろう。
【図面の簡単な説明】
【0028】
本開示をより完全に理解するために、ここで、同様の参照番号が同様の部分を表す添付の図面および詳細な説明に関連して得られる以下の簡単な説明を参照されたい。
【0029】
【
図1】ビデオ信号をコーディングする例示的な方法のフローチャートである。
【0030】
【
図2】ビデオコーディングのための例示的なコーディングおよびデコード(コーデック)システムの概略図である。
【0031】
【
図3】例示的なビデオエンコーダを示す概略図である。
【0032】
【
図4】例示的なビデオデコーダを示す概略図である。
【0033】
【
図5】例示的な仮想参照デコーダ(HRD)を示す概略図である。
【0034】
【
図6】インターレイヤ予測のために構成された例示的なマルチレイヤビデオシーケンスを示す概略図である。
【0035】
【
図7】時間スケーラビリティのために構成された例示的なマルチレイヤビデオシーケンスを示す概略図である。
【0036】
【
図8】例示的なビットストリームを示す概略図である。
【0037】
【
図9】例示的なビデオコーディングデバイスの概略図である。
【0038】
【
図10】すべての出力レイヤセット(OLS)に適用されるシーケンスレベルHRDパラメータを含むビットストリームにビデオシーケンスをエンコードする例示的な方法のフローチャートである。
【0039】
【
図11】すべてのOLSに適用されるシーケンスレベルHRDパラメータを含むビットストリームからビデオシーケンスをデコードする例示的な方法のフローチャートである。
【0040】
【
図12】すべてのOLSに適用されるシーケンスレベルHRDパラメータを含むビットストリームを使用してビデオシーケンスをコーディングするための例示的なシステムの概略図である。
【発明を実施するための形態】
【0041】
1つまたは複数の実施形態の例示的な実装が以下に提供されるが、開示されるシステムおよび/または方法は、現在知られているかまたは存在しているかにかかわらず、任意の数の技術を使用して実装され得ることを最初に理解されたい。本開示は、本明細書で図示および説明される例示的な設計および実装を含む、以下に示される例示的な実装、図面、および技術に決して限定されるべきではなく、添付の特許請求の範囲内で、それらの均等物の全範囲とともに修正され得る。
【0042】
以下の用語は、本明細書において反対の文脈で使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示にさらなる明確性を提供することが意図されている。しかしながら、用語は、異なる文脈において異なるように説明されることがある。したがって、以下の定義は、補足として考えられるべきであり、本明細書においてこのような用語について提供される説明の任意の他の定義を限定すると考えられるべきではない。
【0043】
ビットストリームは、エンコーダとデコーダとの間で伝送するために圧縮されたビデオデータを含む一連のビットである。エンコーダは、ビデオデータをビットストリームに圧縮するためにエンコード処理を利用するように構成されたデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構成するためにデコード処理を利用するように構成されたデバイスである。画像は、フレームまたはそのフィールドを構築するルマサンプルのアレイおよび/またはクロマサンプルのアレイである。エンコードまたはデコードされている画像は、説明を明確にするために現在の画像(current picture)と呼ばれることがある。ネットワーク抽象化レイヤ(NAL)ユニットは、未加工バイトシーケンスペイロード(RBSP)、データのタイプの表示、必要に応じて差し挟まれる(interspersed)エミュレーション防止バイトの形式のデータを含むシンタックス構造である。ビデオコーディングレイヤ(VCL)NALユニットは、画像のコーディングスライスなどの、ビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータのデコード、適合性チェックの実行、または他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。アクセスユニット(AU)は、指定された分類規則に従って互いに関連付けられ、1つの特定の出力時間に関係するNALユニットのセットである。デコードユニット(DU)は、AUまたはAUのサブセットおよび関連付けられた非VCL NALユニットである。例えば、AUは、VCL NALユニットと、AU内のVCL NALユニットに関連付けられた任意の非VCL NALユニットとを含む。さらに、DUは、AUからのVCL NALユニットのセットまたはそのサブセット、ならびにDU内のVCL NALユニットに関連付けられた任意の非VCL NALユニットを含む。レイヤは、指定された特性(例えば、共通の解像度、フレームレート、画像サイズなど)を共有するVCL NALユニットと、関連付けられた非VCL NALユニットとのセットである。デコード順序は、シンタックス要素がデコード処理によって処理される順序である。ビデオパラメータセット(VPS)は、ビデオ全体に関連するパラメータを含むデータユニットである。
【0044】
時間スケーラブルビットストリームは、様々な時間解像度/フレームレートを提供する複数のレイヤにおいてコーディングされたビットストリームである(例えば、各レイヤは、異なるフレームレートをサポートするようにコーディングされる)。サブレイヤは、特定の時間識別子値を有するVCL NALユニットと、関連付けられた非VCL NALユニットとを含む時間的にスケーラブルなビットストリームの時間的にスケーラブルなレイヤである。例えば、時間サブレイヤは、指定されたフレームレートに関連付けられたビデオデータを含むレイヤである。サブレイヤ表現は、特定のサブレイヤおよび下位サブレイヤのNALユニットを含むビットストリームのサブセットである。したがって、1つまたは複数の時間サブレイヤ組み合わせて、指定されたフレームレートを有するビデオシーケンスとなるようにデコードすることができるサブレイヤ表現を実現することができる。出力レイヤセット(OLS)は、1つまたは複数のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(例えば、ディスプレイに)出力するために指定されるレイヤである。OLSインデックスは、対応するOLSを一意に識別するインデックスである。ゼロ番目(0番目)のOLSは、最下位レイヤ(最下位レイヤ識別子を有するレイヤ)のみを含み、したがって出力レイヤのみを含むOLSである。時間識別子(ID)は、データがビデオシーケンス内の時間位置に対応することを示すデータ要素である。サブビットストリーム抽出処理は、ターゲットOLSインデックスおよびターゲット最高時間IDによって決定されるターゲットセットに属さないNALユニットをビットストリームから除去する処理である。サブビットストリーム抽出処理により、ビットストリームからターゲットセットの一部であるNALユニットを含むサブビットストリームが出力される。
【0045】
HRDは、エンコーダ上で動作するデコーダモデルであり、エンコード処理によって生成されたビットストリームの変動性をチェックして、指定された制約との適合性を検証するものである。ビットストリーム適合性試験は、エンコードされたビットストリームがVVC(Versatile Video Coding)などの規格に準拠しているかどうかを判定するためのテストである。HRDパラメータは、HRDの動作条件を初期化および/または定義するシンタックス要素である。HRDパラメータは、HRDパラメータのシンタックス構造に含めることができる。シンタックス構造は、複数の異なるパラメータを含むように構成されたデータ物体である。シンタックス要素は、同じタイプの1つまたは複数のパラメータを含むデータ物体である。したがって、シンタックス構造は、複数のシンタックス要素を含み得る。シーケンスレベルHRDパラメータは、コーディングビデオシーケンス全体に適用されるHRDパラメータである。最大HRD時間ID(hrd_max_tid[i])は、HRDパラメータがi番目のOLS HRDパラメータセットに含まれる最も高いサブレイヤ表現の時間IDを指定する。一般HRDパラメータ(general_hrd_parameters)シンタックス構造は、シーケンスレベルHRDパラメータを含むシンタックス構造である。動作ポイント(OP)は、OLSの時間サブセットであり、OLSインデックスおよび最高時間IDによって識別される。テスト対象OP(targetOp)は、HRDにおいて適合性試験のために選択されるOPである。ターゲットOLSは、ビットストリームから抽出するために選択されるOLSである。デコードユニットHRDパラメータ存在フラグflag(decoding_unit_hrd_params_present_flag)は、対応するHRDパラメータがDUレベルまたはAUレベルのどちらで動作するかを示すフラグである。コーディング画像バッファ(CPB)は、HRD内の先入れ先出しバッファであり、ビットストリーム適合性検証中に使用するためのコーディング画像をデコード順で含む。デコード画像バッファ(DPB)は、参照、出力並べ替え、および/または出力遅延のためにデコード画像を保持するためのバッファである。
【0046】
補足拡張情報(SEI)メッセージは、デコード画像のサンプルの値を決定するために、デコード処理によって必要とされない情報を伝達する、セマンティクスが指定されたシンタックス構造である。スケーラブルネスティングSEIメッセージは、1つもしくは複数のOLSまたは1つもしくは複数のレイヤに対応する複数のSEIメッセージを含むメッセージである。非スケーラブルネスト化SEIメッセージは、ネスティングされていないメッセージであり、したがって、単一のSEIメッセージを含む。バッファリング期間(BP)SEIメッセージは、CPBを管理するためにHRDを初期化するためのHRDパラメータを含むSEIメッセージである。画像タイミング(PT)SEIメッセージは、CPBおよび/またはDPBにおけるAUの配信情報を管理するためのHRDパラメータを含むSEIメッセージである。デコードユニット情報(DUI)SEIメッセージは、CPBおよび/またはDPBにおけるDUのための配信情報を管理するためのHRDパラメータを含むSEIメッセージである。
【0047】
CPB除去遅延は、対応する現在のAUが除去されてDPBに出力される前にCPBに留まることができる期間である。初期CPB除去遅延は、ビットストリーム、OLS、および/またはレイヤにおける各画像、AU、および/またはDUのデフォルトCPB除去遅延である。CPB除去オフセットは、CPBにおける対応するAUの境界を決定するために使用されるCPB内のロケーションである。初期CPB除去オフセットは、ビットストリーム、OLS、および/またはレイヤにおける各画像、AU、および/またはDUに関連付けられたデフォルトのCPB除去オフセットである。デコード画像バッファ(DPB)出力遅延情報は、対応するAUが出力前にDPBに留まることができる期間である。CPB除去遅延情報は、CPBからの対応するDUの除去に関連する情報である。配信スケジュールは、CPBおよび/またはDPBなどのメモリロケーションへのおよび/またはメモリロケーションからのビデオデータの配信のためのタイミングを指定する。VPSレイヤID(vps_layer_id)は、VPSにおいて示されるi番目のレイヤのレイヤIDを示すシンタックス要素である。出力レイヤセットの数-1(num_output_layer_sets_minus1)は、VPSによって指定されるOLSの総数を指定するシンタックス要素である。HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)は、代替のCPB配信スケジュールの数を指定するシンタックス要素である。サブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)は、OLS HRDパラメータのセットが、指定されたサブレイヤ表現のためのHRDパラメータを含むかどうかを指定するシンタックス要素である。スケジュールインデックス(ScIdx)は、配信スケジュールを識別するインデックスである。BP CPB count minus1(bp_cpb_cnt_minus1)は、初期CPB除去遅延とオフセットのペアの数、したがって、時間サブレイヤに利用可能な配信スケジュールの数を指定するシンタックス要素である。NALユニットヘッダレイヤ識別子(nuh_layer_id)は、NALユニットを含むレイヤの識別子を指定するシンタックス要素である。固定画像レート一般フラグ(fixed_pic_rate_general_flag)シンタックス要素は、出力順に連続する画像のHRD出力時間間の時間的距離を制約するかどうかを指定するシンタックス要素である。サブレイヤHRDパラメータ(sublayer_hrd_parameters)シンタックス構造は、対応するサブレイヤのHRDパラメータを含むシンタックス構造である。一般VCL HRDパラメータ存在フラグ(general_vcl_hrd_params_present_flag)は、一般HRDパラメータのシンタックス構造中にVCL HRDパラメータが存在するかどうかを指定するフラグである。BP最大サブレイヤ-1(bp_max_sublayers_minus1)シンタックス要素は、BP SEIメッセージにおいてCPB除去遅延およびCPB除去オフセットが示される時間サブレイヤの最大数を指定するシンタックス要素である。VPS最大サブレイヤ-1(vps_max_sublayers_minus1)シンタックス要素は、VPSによって指定されたレイヤに存在し得る時間サブレイヤの最大数を指定するシンタックス要素である。スケーラブルネスティングOLSフラグは、スケーラブルネスト化SEIメッセージが特定のOLSに適用されるのか、または特定のレイヤに適用されるのかを指定するフラグである。スケーラブルネスティングOLS数-1(num_olss_minus1)は、スケーラブルネスト化SEIメッセージが適用されるOLSの数を指定するシンタックス要素である。ネスティングOLSインデックス(NestingOlsIdx)は、スケーラブルネスト化SEIメッセージが適用されるOLSのOLSインデックスを指定するシンタックス要素である。ターゲットOLSインデックス(targetOlsIdx)は、デコード対象のOLSのOLSインデックスを識別する変数である。OLSの総数-1(TotalNumOlss-1)は、VPSにおいて指定されるOLSの総数を指定するシンタックス要素である。
【0048】
以下の頭字語、アクセスユニット(AU)、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、コーディングレイヤビデオシーケンス(CLVS)、コーディングレイヤビデオシーケンス開始(CLVSS)、コーディングビデオシーケンス(CVS)、コーディングビデオシーケンス開始(CVSS)、ジョイントビデオエキスパートチーム(JVET)、仮想参照デコーダ(HRD)、動き制約タイルセット(MCTS)、最大転送ユニット(MTU)、ネットワーク抽象化レイヤ(NAL)、出力レイヤセット(OLS)、画像順序カウント(POC)、ランダムアクセスポイント(RAP)、未加工バイトシーケンスペイロード(RBSP)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、汎用ビデオコーディング(VVC)が本明細書で使用される。
【0049】
データの損失を最小限に抑えてビデオファイルのサイズを小さくするために、多くのビデオ圧縮技術を利用することができる。例えば、ビデオ圧縮技術は、ビデオシーケンス中のデータ冗長性を低減または除去するために空間的(例えば、画像内)予測および/または時間的(例えば、画像間)予測を実行することを含み得る。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオ画像またはビデオ画像の一部分)は、ツリーブロック、エコーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノードと呼ばれることもあるビデオブロックに分割されることがある。画像のイントラコーディング(I)スライス内のビデオブロックは、同じ画像内の隣接ブロックの参照サンプルに対して空間的予測を使用してコーディングされる。画像のインターコーディング単方向予測(P)スライスまたは双方向予測(B)スライス内のビデオブロックは、同じ画像内の隣接ブロックの参照サンプルに対する空間的予測、または他の参照画像の参照サンプルに対する時間的予測を利用することによってコーディングされることがある。ピクチャは、フレームおよび/または画像と呼ばれることがあり、参照ピクチャは、参照フレームおよび/または参照画像と呼ばれることがある。空間予測または時間予測により、画像ブロックを表す予測ブロックが得られる。残差データは、元の画像ブロックと予測ブロックとの間の画素の差分を表す。したがって、インターコーディングブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、コーディングブロックと予測ブロックとの間の差分を示す残差データとに従ってエンコードされる。イントラコーディングブロックは、イントラコーディングモードおよび残差データに従ってエンコードされる。さらなる圧縮のために、残差データは、画素領域から変換領域に変換されてもよい。その結果、量子化され得る残差変換係数が得られる。量子化された変換係数は、最初に2次元アレイに配列されてもよい。量子化された変換係数は、変換係数の1次元ベクトルを生成するために走査されてもよい。さらに多くの圧縮を実現するためにエントロピーコーディングが適用されてもよい。このようなビデオ圧縮技術については、以下でより詳細に説明する。
【0050】
エンコードされたビデオが正確にデコードされ得ることを保証するために、ビデオは、対応するビデオコーディング規格に従ってエンコードおよびデコードされる。ビデオコーディング規格は、国際電気通信連合(ITU)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)Motion Picture Experts Group(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としても知られるAdvanced Video Coding(AVC)、およびITU-T H.265またはMPEG-H Part2としても知られるHigh Efficiency Video Coding(HEVC)を含む。AVCは、Scalable Video Coding(SVC)、Multiview Video Coding(MVC)およびMultiview Video Coding plus Depth(MVC+D)、ならびに3次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、Scalable HEVC(SHVC)、Multiview HEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの拡張を含む。ITU-TおよびISO/IECのjoint video experts team(JVET)は、Versatile Video Coding(VVC)と呼ばれるビデオコーディング規格の開発を開始した。VVCは、JVET-O2001-v14を含むWorking Draft(WD)に含まれている。
【0051】
ビデオコーディングシステムは、ビットストリームがデコーダによってデコード可能であることを保証するために様々な適合性試験を利用する。例えば、適合性チェックは、適合性についてビットストリーム全体をテストすることと、次いで適合性についてビットストリームの各レイヤをテストすることと、最後に適合性について潜在的なデコード可能出力をチェックすることと、を含み得る。適合性チェックを実装するために、対応するパラメータがビットストリームに含まれている。仮想参照デコーダ(HRD)は、パラメータを読み取り、テストを実行することができる。ビデオは、多くのレイヤおよび多くの異なる出力レイヤセット(OLS)を含み得る。要求に応じて、エンコーダは、選択されたOLSの1つまたは複数のレイヤを送信する。例えば、エンコーダは、現在のネットワーク帯域幅によってサポート可能なOLSから最良のレイヤを送信することができる。この手法の第1の問題は、かなりの数のレイヤがテストされるが、実際にはデコーダに送信されないことである。しかしながら、このようなテストをサポートするためのパラメータは、ビットストリームに依然として含まれている場合があり、ビットストリームのサイズを不必要に増加させる。
【0052】
第1の実施例では、各OLSのみにビットストリーム適合性試験を適用するためのメカニズムが本明細書で開示される。このようにして、対応するOLSをテストする場合に、ビットストリーム全体、各レイヤ、およびデコード可能な出力がまとめてテストされる。したがって、適合性試験の数が減り、それによってエンコーダでのプロセッサおよびメモリリソースの使用量が削減される。さらに、適合性試験の数を減らすことで、ビットストリームに含まれる関連付けられたパラメータの数を減らすことができる。これにより、ビットストリームサイズが小さくなり、したがって、エンコーダおよびデコーダの両方でプロセッサ、メモリ、および/またはネットワークリソースの利用率が削減される。
【0053】
第2の問題は、いくつかのビデオコーディングシステムにおいてHRD適合性試験に使用されるHRDパラメータのシグナリング処理が、マルチレイヤのコンテキストにおいて複雑になる可能性があることである。例えば、HRDパラメータのセットは、各OLSのレイヤごとにシグナリングされ得る。このようなHRDパラメータは、パラメータの意図された範囲に応じて、ビットストリーム内の異なるロケーションにおいてシグナリングされ得る。その結果、より多くのレイヤおよび/またはOLSが追加されるにつれてスキームがより複雑になる。さらに、異なるレイヤおよび/またはOLSのHRDパラメータは、冗長な情報を含んでいる場合がある。
【0054】
第2の実施例では、OLSおよび対応するレイヤについてのシーケンスレベルHRDパラメータのグローバルなセットをシグナリングするためのメカニズムが本明細書で開示される。例えば、すべてのOLSおよびOLSに含まれるすべてのレイヤに適用されるすべてのシーケンスレベルHRDパラメータは、ビデオパラメータセット(VPS)でシグナリングされる。VPSはビットストリームで1回シグナリングされ、したがって、シーケンスレベルHRDパラメータは1回シグナリングされる。さらに、シーケンスレベルHRDパラメータは、すべてのOLSで同じであるように制約されてもよい。このようにして、冗長なシグナリングが低減され、コーディング効率が向上する。また、この手法により、HRD処理が簡略化される。その結果、プロセッサ、メモリ、および/またはネットワークのシグナリングリソースの使用量がエンコーダおよびデコーダの両方において削減される。
【0055】
第3の問題は、ビデオコーディングシステムがビットストリームの適合性チェックを実行する場合に発生することがある。ビデオは、複数のレイヤおよび/またはサブレイヤにコーディングされてもよく、次いでそれらをOLSに編成することができる。各OLSの各レイヤおよび/またはサブレイヤは、配信スケジュールに従って適合性についてチェックされる。各配信スケジュールは、異なる送信帯域幅およびシステム能力を考慮するために、異なるコーディング画像バッファ(CPB)サイズおよびCPB遅延に関連付けられる。一部のビデオコーディングシステムは、各サブレイヤが任意の数の配信スケジュールを定義することを可能にする。これにより、適合性チェックをサポートするための大量のシグナリングが生じる可能性があり、その結果、ビットストリームのコーディング効率が低下することになる。
【0056】
第3の実施例では、複数のレイヤを含むビデオのコーディング効率を高めるためのメカニズムが本明細書で開示される。具体的には、すべてのレイヤおよび/またはサブレイヤは、同じ数のCPB配信スケジュールを含むように制約される。例えば、エンコーダは、任意の1つのレイヤにも使用されるCPB配信スケジュールの最大数を決定し、すべてのレイヤに対するCPB配信スケジュールの数をこの最大数に設定することができる。次いで、配信スケジュールの数は、例えば、VPSにおけるHRDパラメータの一部として、1回シグナリングされてもよい。これにより、レイヤ/サブレイヤごとにいくつかのスケジュールをシグナリングする必要がなくなる。いくつかの例では、OLSのすべてのレイヤ/サブレイヤは、同じ配信スケジュールインデックスを共有することもできる。これらの変更により、適合性チェックに関連するデータをシグナリングするために使用されるデータの量が削減される。これにより、ビットストリームサイズが小さくなり、したがって、エンコーダおよびデコーダの両方でプロセッサ、メモリ、および/またはネットワークリソースの利用率が削減される。
【0057】
第4の問題は、ビデオが複数のレイヤおよび/またはサブレイヤにコーディングされ、次いでそれらがOLSに編成される場合発生することがある。OLSは、出力レイヤのみを含むゼロ番目(0番目)のOLSを含んでもよい。規格への適合性についてビットストリームの複数のレイヤをテストするために使用されるレイヤ/OLS固有のパラメータをHRDに通知するために、補足拡張情報(SEI)メッセージがビットストリームに含まれることがある。具体的には、OLSがビットストリームに含まれる場合、スケーラブルネスティングSEIメッセージが利用される。スケーラブルネスティングSEIメッセージは、1つもしくは複数のOLSおよび/またはOLSの1つもしくは複数のレイヤに適用されるネスティングされたSEIメッセージのグループを含む。ネスティングされたSEIメッセージはそれぞれ、対応するOLSおよび/またはレイヤとの関連付けを示すためのインジケータを含み得る。ネスティングされたSEIメッセージは、複数のレイヤで使用するために構成されており、単一のレイヤを含む0番目のOLSに適用される場合、無関係な情報が含まれることがある。
【0058】
第4の実施例では、0番目のOLSを含むビデオのコーディング効率を高めるためのメカニズムが本明細書で開示される。非スケーラブルネスト化SEIメッセージは、0番目のOLSに利用される。非スケーラブルネスト化SEIメッセージは、0番目のOLSのみに、したがって0番目のOLSに含まれる出力レイヤのみに適用されるように制約される。このようにして、ネスティング関係、レイヤ指示などの無関係な情報をSEIメッセージから省くことができる。非スケーラブルネスト化SEIメッセージは、バッファリング期間(BP)SEIメッセージ、画像タイミング(PT)SEIメッセージ、デコードユニット(DU)SEIメッセージ、またはそれらの組合せとして使用されてもよい。これらの変更により、0番目のOLSに適合性チェック関連情報をシグナリングするために使用されるデータの量が削減される。これにより、ビットストリームサイズが小さくなり、したがって、エンコーダおよびデコーダの両方でプロセッサ、メモリ、および/またはネットワークリソースの利用率が削減される。
【0059】
第5の問題は、ビデオが複数のレイヤおよび/またはサブレイヤに分離される場合に発生することもある。エンコーダは、これらのレイヤをビットストリームにエンコードすることができる。さらに、エンコーダは、規格との適合性についてビットストリームをチェックするために適合性試験を実行するHRDを利用できる。エンコーダは、このような適合性試験をサポートするために、レイヤ固有のHRDパラメータをビットストリームに含めるように構成されることがある。レイヤ固有のHRDパラメータは、いくつかのビデオコーディングシステムではレイヤごとにエンコードされることがある。場合によっては、レイヤ固有HRDパラメータは、レイヤごとに同じであり、その結果、ビデオエンコードのサイズを不必要に増加させる冗長な情報が生じる。
【0060】
第5の実施例では、複数のレイヤを利用するビデオについて、HRDパラメータ冗長性を低減するためのメカニズムが本明細書で開示される。エンコーダは、最上位レイヤのHRDパラメータをエンコードすることができる。エンコーダは、サブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)をエンコードすることもできる。sublayer_cpb_params_present_flagを0に設定すると、すべての下位レイヤが最上位レイヤと同じHRDパラメータを使用すべきであることを示すことができる。本文脈では、最上位レイヤは、最大のレイヤ識別子(ID)を有し、下位レイヤは、最上位レイヤのレイヤIDよりも小さいレイヤIDを有する任意のレイヤである。このようにして、下位レイヤのHRDパラメータをビットストリームから省くことができる。これにより、ビットストリームサイズが小さくなり、したがって、エンコーダおよびデコーダの両方でプロセッサ、メモリ、および/またはネットワークリソースの利用率が削減される。
【0061】
第6の問題は、ビデオ中の各ビデオシーケンスに関連するシンタックス要素を含むシーケンスパラメータセット(SPS)の使用量に関する。ビデオコーディングシステムは、レイヤおよび/またはサブレイヤでビデオをコーディングすることができる。ビデオシーケンスは、異なるレイヤおよび/またはサブレイヤにおいて動作が異なる場合がある。したがって、異なるレイヤは、異なるSPSを参照することがある。BP SEIメッセージは、規格への適合性がチェックされるレイヤ/サブレイヤを示すことができる。ビデオコーディングシステムによっては、BP SEIメッセージがSPSで示されたレイヤ/サブレイヤに適用されることを示すことがある。これは、異なるレイヤが異なるSPSを参照した場合、このようなSPSが矛盾する情報を含む可能性があるため、予期しないエラーが発生するという問題を引き起こすことがある。
【0062】
第6の実施例では、ビデオシーケンスに複数のレイヤを利用した場合の適合性チェックに関係するエラーに対処するためのメカニズムが本明細書で開示される。具体的には、BP SEIメッセージは、VPSに表現される任意の数のレイヤ/サブレイヤの適合性をチェックすることができることを示すように修正される。例えば、BP SEIメッセージは、BP SEIメッセージ内のデータに関連付けられたレイヤ/サブレイヤの数を示す、BP最大サブレイヤ-1(bp_max_sublayers_minus1)シンタックス要素を含み得る。一方、VPSにおけるVPS最大サブレイヤ-1(vps_max_sublayers_minus1)シンタックス要素は、ビデオ全体におけるサブレイヤの数を示す。bp_max_sublayers_minus1シンタックス要素は、0からvps_max_sublayers_minus1シンタックス要素の値までの任意の値に設定することができる。このようにして、SPSの不整合に関連するレイヤベースのシーケンス問題を回避しながら、ビデオ内の任意の数のレイヤ/サブレイヤの適合性をチェックすることができる。したがって、本開示は、レイヤベースのコーディングを回避し、したがって、エンコーダおよび/またはデコーダの機能性を向上させる。さらに、本実施例は、コーディング効率を向上させることができるレイヤベースのコーディングをサポートする。したがって、本実施例は、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の削減をサポートする。
【0063】
第7の問題は、OLSに含まれるレイヤに関する。各OLSは、デコーダで表示されるように構成された少なくとも1つの出力レイヤを含む。エンコーダのHRDは、規格との適合性について各OLSをチェックすることができる。適合するOLSは、適合するデコーダで常にデコードし表示することができる。HRD処理は、SEIメッセージによって部分的に管理されることがある。例えば、スケーラブルなネスティングSEIメッセージは、スケーラブルなネスティングされたSEIメッセージを含み得る。各スケーラブルなネスティングされたSEIメッセージは、対応するレイヤに関連するデータを含み得る。適合性チェックを実行する場合、HRDは、ターゲットOLSに対してビットストリーム抽出処理を実行できる。OLS内のレイヤに関連しないデータは、一般に、各OLSを別々にチェックすることができるよう、適合性試験の前に(例えば、送信前に)除去される。ビデオコーディングシステムによっては、スケーラブルなネスティングSEIメッセージが複数のレイヤに関係するため、サブビットストリーム抽出処理中にそのようなメッセージを除去しないものがある。このため、スケーラブルなネスティングSEIメッセージがターゲットOLS(抽出されているOLS)のいずれのレイヤにも関連しない場合でさえ、スケーラブルネスティングSEIメッセージがサブビットストリーム抽出後にビットストリームに残ってしまうことがある。これにより、追加の機能性をなんら提供することなく、最終ビットストリームのサイズが大きくなる可能性がある。
【0064】
第7の実施例では、マルチレイヤビットストリームのサイズを低減するためのメカニズムが本明細書で開示される。サブビットストリーム抽出中に、スケーラブルなネスティングSEIメッセージは、ビットストリームから除去するために考慮され得る。スケーラブルネスティングSEIメッセージが1つまたは複数のOLSに関連する場合、スケーラブルネスティングSEIメッセージ中のスケーラブルなネスティングされたSEIメッセージがチェックされる。スケーラブルなネスティングされたSEIメッセージがターゲットOLSのいずれのレイヤにも関連しない場合、スケーラブルなネスティングSEIメッセージ全体をビットストリームから除去することができる。この結果、デコーダに送信されるビットストリームのサイズが小さくなる。したがって、本実施例は、コーディング効率を高め、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用量を削減する。
【0065】
図1は、ビデオ信号をコーディングする例示的な動作方法100のフローチャートである。具体的には、ビデオ信号は、エンコーダでエンコードされる。エンコード処理は、ビデオファイルサイズを小さくするために様々なメカニズムを利用することによってビデオ信号を圧縮する。ファイルサイズが小さくなると、関連付けられた帯域幅オーバーヘッドを削減しながら、圧縮されたビデオファイルをユーザに向けて送信することができる。次いで、デコーダは、圧縮されたビデオファイルをデコードして、エンドユーザに表示するための元のビデオ信号を再構成する。デコード処理は一般に、デコーダがビデオ信号を整合性をもって再構成することができるようにエンコード処理をミラーリングする。
【0066】
段階101において、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号は、メモリに記憶された非圧縮のビデオファイルであってもよい。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングをサポートするためにエンコードされることがある。ビデオファイルは、オーディオ成分とビデオ成分の両方を含み得る。ビデオ成分は、一連の画像フレームを含み、これは、連続して見られた場合、視覚的に動きのある印象を与える。フレームは、本明細書ではルマ成分(またはルマサンプル)と呼ばれる光、およびクロマ成分(または色サンプル)と呼ばれる色に関して表される画素を含む。いくつかの例では、フレームは、3次元ビューをサポートするための深度値を含むこともできる。
【0067】
段階103において、ビデオはブロックに分割される。分割は、各フレーム内の画素を圧縮のために正方形および/または矩形のブロックに細分割することを含む。例えば、高効率ビデオコーディング(HEVC)(H.265およびMPEG-H Part2としても知られている)では、フレームは最初に、あらかじめ定義されたサイズ(例えば、64画素×64画素)のブロックであるコーディングツリーユニット(CTU)に分割することが可能である。CTUは、ルマサンプルとクロマサンプルの両方を含む。コーディングツリーを利用して、CTUをブロックに分割し、次いで、さらなるエンコードをサポートする構成が実現されるまで、ブロックを再帰的に細分割することができる。例えば、フレームのルマ成分は、個々のブロックが比較的均質な照明値を含むまで細分割されてもよい。さらに、フレームのクロマ成分は、個々のブロックが比較的均一な色値を含むまで細分割されてもよい。したがって、分割メカニズムは、ビデオフレームのコンテンツに応じて変化する。
【0068】
段階105では、段階103で分割された画像ブロックを圧縮するために様々な圧縮メカニズムが利用される。例えば、インター予測および/またはイントラ予測を利用することができる。インター予測は、共通シーン内の物体が連続したフレーム中に現れる傾向があるという事実を利用するように設計されている。したがって、参照フレーム内の物体を示すブロックを隣接フレームに繰り返し表現する必要がない。具体的には、テーブルなどの物体は、複数のフレームにわたって一定の位置に留まる可能性がある。したがって、テーブルが一度表現されると、隣接するフレームは参照フレームに戻って参照することができる。パターンマッチングメカニズムを利用して、複数のフレームにわたって物体をマッチングすることができる。さらに、移動している物体は、例えば物体の移動またはカメラの移動に起因して、複数のフレームにわたって表現されることがある。特定の例として、ビデオは、複数のフレームにわたってスクリーンを横切って移動する自動車を示すことがある。動きベクトルを利用して、このような動きを表現することができる。動きベクトルは、フレーム内の物体の座標から、参照フレーム内の物体の座標へのオフセットを提供する2次元ベクトルである。したがって、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルのセットとしてエンコードすることができる。
【0069】
イントラ予測は、ブロックを共通フレーム内でエンコードする。イントラ予測は、ルマ成分およびクロマ成分がフレーム内でクラスタ化する傾向があるという事実を利用する。例えば、木の一部の緑のパッチは、同様の緑のパッチに隣接して配置される傾向がある。イントラ予測は、複数の方向予測モード(例えば、HEVCでは33)と、平面モードと、直流(DC)モードとを利用する。方向性モードは、現在のブロックが、対応する方向の隣接ブロックのサンプルと同様/同じであることを示す。平面モードは、行/列(例えば、平面)に沿った一連のブロックが、行の端部にある隣接ブロックに基づいて補間され得ることを示す。平面モードは、値を変化させる際に比較的一定の傾きを利用することによって、行/列にわたって光/色の滑らかな遷移を事実上示す。DCモードは、境界平滑化のために利用され、方向予測モードの角度方向に関連付けられたすべての隣接ブロックのサンプルに関連付けられた平均値とブロックが同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値ではなく、様々な関係予測モード値として画像ブロックを表現することができる。さらに、インター予測ブロックは、実際の値ではなく、動きベクトル値として画像ブロックを表現することができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを正確に表さないことがある。いかなる差分も、残差ブロックに記憶される。残差ブロックに変換を適用して、ファイルをさらに圧縮することができる。
【0070】
段階107において、様々なフィルタリング技術を適用することができる。HEVCでは、ループ内フィルタリングスキームに従ってフィルタが適用される。上記で説明したブロックベースの予測では、デコーダにおいてブロック状の画像が生成されることがある。さらに、ブロックベースの予測スキームは、ブロックをエンコードした後、エンコードされたブロックを、参照ブロックとして後で使用するために再構成し得る。ループ内フィルタリングスキームは、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびサンプル適応オフセット(SAO)フィルタをブロック/フレームに繰り返し適用する。これらのフィルタにより、このようなブロッキングアーチファクトが軽減され、その結果、エンコードされたファイルを正確に再構成することができるようになる。さらに、これらのフィルタにより、再構成された参照ブロックのアーチファクトが軽減され、その結果、アーチファクトが、再構成された参照ブロックに基づいてエンコードされる後続のブロックに追加のアーチファクトを生成する可能性が低くなる。
【0071】
ビデオ信号が分割され、圧縮され、フィルタリングされると、段階109において、得られたデータがビットストリームにおいてエンコードされる。ビットストリームには、上述したデータ、および、デコーダにおける適切なビデオ信号再構成をサポートするために所望される任意のシグナリングデータが含まれる。例えば、このようなデータには、分割データ、予測データ、残差ブロック、およびデコーダにコーディング命令を提供する様々なフラグが含まれてもよい。ビットストリームは、要求に応じてデコーダに向けて送信するためにメモリに記憶されてもよい。また、ビットストリームは、複数のデコーダに向けてブロードキャストおよび/またはマルチキャストされてもよい。ビットストリームの生成は、反復処理である。したがって、段階101、103、105、107、および109は、多くのフレームおよびブロックにわたって連続的におよび/または同時に行われることがある。
図1に示す順序は、議論を明確にし、容易にするために提示されており、ビデオコーディング処理を特定の順序に限定することは意図されていない。
【0072】
デコーダは、ビットストリームを受信し、段階111においてデコード処理を開始する。具体的には、デコーダは、エントロピーデコードスキームを利用して、ビットストリームを対応するシンタックスおよびビデオデータに変換する。デコーダは、段階111において、ビットストリームからのシンタックスデータを利用して、フレームの分割を決定する。この分割は、段階103におけるブロック分割の結果と一致すべきである。次に、段階111で利用されるエントロピーエンコード/デコードについて説明する。エンコーダは、入力画像における値の空間的配置に基づいて、いくつかの可能な選択肢からブロック分割スキームを選択するなど、圧縮処理中に多くの選択を行う。正確な選択をシグナリングすることは、多数のビンを利用し得る。本明細書で使用される場合、ビンは、変数(例えば、文脈に応じて変化する可能性があるビット値)として扱われるバイナリ値である。エントロピーコーディングにより、エンコーダは、特定の場合について実行可能でないことが明らかであるいかなるオプションも破棄し、許容されるオプションのセットを残すことが可能になる。次いで、許容される各オプションには、コードワードが割り当てられる。コードワードの長さは、許容されるオプションの数に基づく(例えば、2つのオプションに対して1つのビン、3~4つのオプションに対して2つのビンなど)。次いで、エンコーダは、選択されたオプションのコードワードをエンコードする。このスキームは、可能なすべてのオプションの潜在的に大きなセットからの選択を一意に示すのではなく、許容されるオプションの小さなサブセットからの選択を一意に示すためにコードワードが所望されるくらいの大きさなので、コードワードのサイズを低減する。次いで、デコーダは、エンコーダと同様の方式で許容されるオプションのセットを決定することによってこの選択をデコードする。デコーダは、許容されるオプションのセットを決定することによって、コードワードを読み取り、エンコーダによって行われた選択を決定することができる。
【0073】
段階113において、デコーダは、ブロックのデコードを実行する。具体的には、デコーダは、逆変換を利用して、残差ブロックを生成する。次いで、デコーダは、残差ブロックおよび対応する予測ブロックを利用して、分割に従って画像ブロックを再構成する。予測ブロックは、段階105においてエンコーダで生成されたようなイントラ予測ブロックおよびインター予測ブロックの両方を含み得る。次いで、段階111で決定された分割データに従って、再構成された画像ブロックを再構成されたビデオ信号のフレームに配置する。段階113のシンタックスはまた、上記で説明したように、エントロピーコーディングを介してビットストリームでシグナリングされてもよい。
【0074】
段階115において、エンコーダにおける段階107と同様の方式で、再構成されたビデオ信号のフレームに対してフィルタリングが実行される。例えば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタをフレームに適用して、ブロッキングアーチファクトを除去することができる。フレームがフィルタリングされると、ビデオ信号は、エンドユーザが視聴するために、段階117においてディスプレイに出力され得る。
【0075】
図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と、を含み得る。ここで、これらのコンポーネントについて説明する。
【0076】
分割されたビデオ信号201は、コーディングツリーによって画素のブロックに分割されたキャプチャされたビデオシーケンスである。コーディングツリーは、様々な分割モードを利用して、画素のブロックをより小さい画素のブロックに細分割する。次いで、これらのブロックをより小さなブロックにさらに細分割することができる。ブロックは、コーディングツリー上のノードと呼ばれことがある。より大きな親ノードは、より小さな子ノードに分割される。ノードが細分割される回数は、ノード/コーディングツリーの深度と呼ばれる。分割されたブロックは、場合によってはコーディングユニット(CU)に含まれることがある。例えば、CUは、CUのための対応するシンタックス命令とともに、ルマブロック、赤色差クロマ(Cr)ブロック、および青色差クロマ(Cb)ブロックを含むCTUの下位部分とすることができる。分割モードは、ノードを、利用される分割モードに応じて様々な形状の2つ、3つ、または4つの子ノードにそれぞれ分割するために利用される二分木(BT)、三分木(TT)、および四分木(QT)を含み得る。分割されたビデオ信号201は、圧縮のために、汎用コーダ制御コンポーネント211、変換スケーリングおよび量子化コンポーネント213、イントラ画像推定コンポーネント215、フィルタ制御分析コンポーネント227、および動き推定コンポーネント221に転送される。
【0077】
汎用コーダ制御コンポーネント211は、アプリケーション制約に従ってビデオシーケンスの画像をビットストリームにコーディングすることに関連する決定を行うように構成される。例えば、汎用コーダ制御コンポーネント211は、再構成品質に対するビットレート/ビットストリームサイズの最適化を管理する。このような決定は、記憶空間/帯域幅利用可能性および画像解像度要求に基づいて行うことができる。汎用コーダ制御コンポーネント211はまた、伝送速度を考慮してバッファ利用率を管理し、バッファのアンダーランおよびオーバーランの問題を軽減する。これらの問題を管理するために、汎用コーダ制御コンポーネント211は、他のコンポーネントによる分割、予測、およびフィルタリングを管理する。例えば、汎用コーダ制御コンポーネント211は、解像度を向上させ、帯域幅使用量を増加させるために圧縮の複雑さを動的に増加させるか、または解像度および帯域幅使用量を減らすために圧縮の複雑さを減少させることができる。したがって、汎用コーダ制御コンポーネント211は、コーデックシステム200の他のコンポーネントを制御して、ビデオ信号再構成品質とビットレートの関係とのバランスをとる。汎用コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを作成する。制御データはまた、デコーダでデコードするためのパラメータをシグナリングするように、ビットストリームにエンコードされるヘッダフォーマッティングおよびCABACコンポーネント231へ転送される。
【0078】
分割されたビデオ信号201はまた、インター予測のために動き推定コンポーネント221および動き補償コンポーネント219に送信される。分割されたビデオ信号201のフレームまたはスライスは、複数のビデオブロックに分割されてもよい。動き推定コンポーネント221および動き補償コンポーネント219は、1つまたは複数の参照フレーム内の1つまたは複数のブロックに対して受信ビデオブロックの相対的なインター予測コーディングを実行して、時間予測を提供する。コーデックシステム200は、例えば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパスを実行することができる。
【0079】
動き推定コンポーネント221および動き補償コンポーネント219は、高度に統合されてもよいが、概念的な目的のために別々に示されている。動き推定コンポーネント221によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成する処理である。動きベクトルは、例えば、予測ブロックに対するコーディングされたオブジェクトの相対的な変位を示すことができる。予測ブロックは、画素差の観点から、コーディングされるブロックと密接に一致することが見出されるブロックである。予測ブロックは、参照ブロックと呼ばれることもある。このような画素差分は、差分絶対値和(SAD)、差分二乗和(SSD)、または他の差分メトリックによって決定されてもよい。HEVCは、CTUと、コーディングツリーブロック(CTB)と、CUとを含むいくつかのコーディングされたオブジェクトを利用する。例えば、CTUをCTBに分割でき、次いで、CTBを、CUに含めるためにCBに分割することができる。CUは、予測データを含む予測ユニット(PU)および/またはCUに対して変換された残差データを含む変換ユニット(TU)としてエンコードされ得る。動き推定コンポーネント221は、レートひずみ最適化処理の一部としてレートひずみ分析を使用することによって、動きベクトル、PU、およびTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームに対して複数の参照ブロック、複数の動きベクトルなどを決定することができ、最良のレートひずみ特性を有する参照ブロック、動きベクトルなどを選択することができる。最良のレートひずみ特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失の量)とコーディング効率(例えば、最終的なエンコードのサイズ)との両方のバランスをとる。
【0080】
いくつかの例では、コーデックシステム200は、デコード画像バッファコンポーネント223に記憶された参照画像のサブ整数画素位置の値を計算することができる。例えば、ビデオコーデックシステム200は、参照画像の1/4画素位置、1/8画素位置、または他の端数画素位置の値を補間することができる。したがって、動き推定コンポーネント221は、フル画素位置と端数画素位置に対して動き探索を実行し、端数画素精度を有する動きベクトルを出力することができる。動き推定コンポーネント221は、PUの位置を参照画像の予測ブロックの位置と比較することによって、インターコーディングスライス中のビデオブロックのPUの動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを動きデータとして、エンコードのためにヘッダフォーマッティングおよびCABACコンポーネント231に出力し、動きを動き補償コンポーネント219に出力する。
【0081】
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。ここでも、動き推定コンポーネント221および動き補償コンポーネント219は、いくつかの例では機能的に統合されてもよい。現在のビデオブロックのPUについての動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックの位置を特定し得る。次いで、コーディングされている現在のビデオブロックの画素値から予測ブロックの画素値を減算することによって残差ビデオブロックが形成され、画素差分値が形成される。一般に、動き推定コンポーネント221は、ルマ成分に対する動き推定を実行し、動き補償コンポーネント219は、クロマ成分とルマ成分の両方に対して、ルマ成分に基づいて計算された動きベクトルを使用する。予測ブロックおよび残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。
【0082】
分割されたビデオ信号201は、イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217にも送信される。動き推定コンポーネント221および動き補償コンポーネント219と同様に、イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217は、高度に統合されてもよいが、概念的な目的のために別々に示されている。イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217は、上記で説明したように、フレーム間で動き推定コンポーネント221および動き補償コンポーネント219によって実行されるインター予測の代替として、現在のフレーム内のブロックに対して現在のブロックをイントラ予測する。特に、イントラ画像推定コンポーネント215は、現在のブロックをエンコードするために使用するイントラ予測モードを決定する。いくつかの例では、イントラ画像推定コンポーネント215は、複数のテストされたイントラ予測モードから現在のブロックをエンコードするために適切なイントラ予測モードを選択する。次いで、選択されたイントラ予測モードは、エンコードのためにヘッダフォーマッティングおよびCABACコンポーネント231に転送される。
【0083】
例えば、イントラ画像推定コンポーネント215は、様々なテストされたイントラ予測モードについてレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択する。レートひずみ分析は、一般に、エンコードされたブロックと、エンコードされたブロックを生成するためにエンコードされた元のエンコードされていないブロックとの間のひずみ(またはエラー)の量、ならびにエンコードされたブロックを生成するために使用されるビットレート(例えば、ビット数)を決定する。イントラ画像推定コンポーネント215は、様々なエンコードブロックのひずみおよびレートから比を計算し、どのイントラ予測モードがブロックに対して最良のレートひずみ値を示すかを決定する。加えて、イントラ画像推定コンポーネント215は、レートひずみ最適化(RDO)に基づく深度モデリングモード(DMM)を使用して深度マップの深度ブロックをコーディングするように構成されてもよい。
【0084】
イントラ画像予測コンポーネント217は、エンコーダ上で実装される場合、イントラ画像推定コンポーネント215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成することができ、またはデコーダ上で実装される場合、ビットストリームから残差ブロックを読み取ることができる。残差ブロックは、予測ブロックと元のブロックとの間の値の差を含み、行列として表される。次いで、残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217は、ルマ成分とクロマ成分の両方に対して動作することができる。
【0085】
変換スケーリングおよび量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリングおよび量子化コンポーネント213は、離散コサイン変換(DCT)、離散サイン変換(DST)、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換を使用することもできる。変換は、残差情報を画素値領域から周波数領域などの変換領域に変換することができる。変換スケーリングおよび量子化コンポーネント213はまた、例えば周波数に基づいて、変換された残差情報をスケーリングするように構成される。このようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように残差情報にスケールファクタを適用することを伴い、これにより、再構成されたビデオの最終的な視覚品質が影響を受ける可能性がある。変換スケーリングおよび量子化コンポーネント213はまた、ビットレートをさらに低減するために変換係数を量子化するように構成される。量子化処理は、係数の一部または全部に関連付けられたビット深度を減少させることができる。量子化の程度は、量子化パラメータを調整することによって修正することができる。いくつかの例では、変換スケーリングおよび量子化コンポーネント213は、次いで、量子化された変換係数を含む行列の走査を実行することができる。量子化された変換係数は、ヘッダフォーマッティングおよびCABACコンポーネント231に転送されて、ビットストリームにエンコードされる。
【0086】
スケーリングおよび逆変換コンポーネント229は、変換スケーリングおよび量子化コンポーネント213の逆動作を適用して、動き推定をサポートする。スケーリングおよび逆変換コンポーネント229は、例えば、別の現在のブロックのための予測ブロックになり得る参照ブロックとして後で使用するために、逆スケーリング、変換、および/または量子化を適用して、画素領域において残差ブロックを再構成する。動き推定コンポーネント221および/または動き補償コンポーネント219は、後のブロック/フレームの動き推定に使用するために、残差ブロックを対応する予測ブロックに追加することによって、参照ブロックを計算することができる。再構成された参照ブロックにフィルタを適用して、スケーリング、量子化、および変換中に生成されるアーチファクトを軽減する。このようなアーチファクトは、普通ならば、後続のブロックを予測する場合に不正確な予測を引き起こす(および追加のアーチファクトを生成する)ことがある。
【0087】
フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225は、残差ブロックおよび/または再構成された画像ブロックにフィルタを適用する。例えば、スケーリングおよび逆変換コンポーネント229からの変換された残差ブロックは、イントラ画像予測コンポーネント217および/または動き補償コンポーネント219からの対応する予測ブロックと組み合わされて、元の画像ブロックを再構成することができる。次いで、再構成された画像ブロックにフィルタを適用することができる。いくつかの例では、代わりに残差ブロックにフィルタを適用することができる。
図2の他のコンポーネントと同様に、フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225は、高度に統合され、一緒に実装されてもよいが、概念的な目的のために別々に示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、このようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、このようなフィルタが適用される箇所を決定し、対応するパラメータを設定する。このようなデータは、エンコードのためのフィルタ制御データとしてヘッダフォーマッティングおよびCABACコンポーネント231に転送される。ループ内フィルタコンポーネント225は、フィルタ制御データに基づいてこのようなフィルタを適用する。フィルタには、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、および適応ループフィルタが含まれてもよい。このようなフィルタは、実施例に応じて、空間/画素領域で(例えば、再構成された画素ブロックに)、または周波数領域で適用されてもよい。
【0088】
エンコーダとして動作する場合、フィルタリングされた再構成された画像ブロック、残差ブロック、および/または予測ブロックは、上記で説明した動き推定に後で使用するためにデコード画像バッファコンポーネント223に記憶される。デコーダとして動作する場合、デコード画像バッファコンポーネント223は、再構成されフィルタリングされたブロックを記憶し、出力ビデオ信号の一部としてディスプレイに向けて転送する。デコード画像バッファコンポーネント223は、予測ブロック、残差ブロック、および/または再構成された画像ブロックを記憶することが可能な任意のメモリデバイスであってもよい。
【0089】
ヘッダフォーマッティングおよびCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受信し、デコーダに向けて送信するために、このようなデータをコーディングされたビットストリームにエンコードする。具体的には、ヘッダフォーマッティングおよびCABACコンポーネント231は、一般制御データおよびフィルタ制御データなどの制御データをエンコードするために様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データ、ならびに量子化された変換係数データの形態の残差データもすべて、ビットストリームにエンコードされる。最終的なビットストリームは、元の分割されたビデオ信号201を再構成するためにデコーダによって所望されるすべての情報を含む。このような情報には、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックのためのエンコードコンテキストの定義、最確イントラ予測モードの指示、分割情報の指示などが含まれることもある。このようなデータは、エントロピーコーディングを利用することによってエンコードすることができる。例えば、情報は、コンテキスト適応型可変長コーディング(CAVLC)、CABAC、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔分割エントロピー(PIPE)コーディング、または別のエントロピーコーディング技術を利用することによってエンコードすることができる。エントロピーコーディングに続いて、コーディングされたビットストリームは、別のデバイス(例えば、ビデオデコーダ)に送信されるか、または後で送信もしくは検索するためにアーカイブされてもよい。
【0090】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコード機能を実装するために、ならびに/あるいは動作方法100の段階101、103、105、107、および/または109を実装するために利用することができる。エンコーダ300は、入力ビデオ信号を分割し、分割されたビデオ信号201と実質的に同様の分割されたビデオ信号301をもたらす。次いで、分割されたビデオ信号301は、エンコーダ300のコンポーネントによって圧縮され、ビットストリームにエンコードされる。
【0091】
具体的には、分割されたビデオ信号301は、イントラ予測のためにイントラ画像予測コンポーネント317に転送される。イントラ画像予測コンポーネント317は、イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217と実質的に同様であってもよい。分割されたビデオ信号301はまた、デコード画像バッファコンポーネント323内の参照ブロックに基づいてインター予測のために動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221および動き補償コンポーネント219と実質的に同様であってもよい。イントラ画像予測コンポーネント317および動き補償コンポーネント321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために、変換および量子化コンポーネント313に転送される。変換および量子化コンポーネント313は、変換スケーリングおよび量子化コンポーネント213と実質的に同様であってもよい。変換され量子化された残差ブロックおよび対応する予測ブロックは(関連付けられた制御データとともに)、ビットストリームにコーディングするためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマッティングおよびCABACコンポーネント231と実質的に同様であってもよい。
【0092】
変換され量子化された残差ブロックおよび/または対応する予測ブロックはまた、動き補償コンポーネント321が使用するための参照ブロックに再構成するために、変換および量子化コンポーネント313から逆変換および量子化コンポーネント329に転送される。逆変換および量子化コンポーネント329は、スケーリングおよび逆変換コンポーネント229と実質的に同様であってもよい。実施例に応じて、ループ内フィルタコンポーネント325のループ内フィルタも、残差ブロックおよび/または再構成された参照ブロックに適用される。ループ内フィルタコンポーネント325は、フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225と実質的に同様であってもよい。ループ内フィルタコンポーネント325は、ループ内フィルタコンポーネント225に関して説明したような複数のフィルタを含み得る。次いで、フィルタリングされたブロックは、動き補償コンポーネント321によって参照ブロックとして使用するために、デコード画像バッファコンポーネント323に記憶される。デコード画像バッファコンポーネント323は、デコード画像バッファコンポーネント223と実質的に同様であってもよい。
【0093】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコード機能を実装するために、ならびに/あるいは動作方法100の段階111、113、115、および/もしくは117を実装するために利用することができる。デコーダ400は、例えばエンコーダ300からビットストリームを受信し、エンドユーザに表示するためにビットストリームに基づいて再構成された出力ビデオ信号を生成する。
【0094】
ビットストリームは、エントロピーデコードコンポーネント433によって受信される。エントロピーデコードコンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、または他のエントロピーコーディング技術などのエントロピーデコードスキームを実装するように構成される。例えば、エントロピーデコードコンポーネント433は、ビットストリーム中のコードワードとしてエンコードされた追加のデータを解釈するためのコンテキストを提供するために、ヘッダ情報を利用することができる。デコードされた情報には、一般制御データ、フィルタ制御データ、分割情報、動きデータ、予測データ、および残差ブロックからの量子化された変換係数などの、ビデオ信号をデコードするための任意の所望の情報が含まれる。量子化された変換係数は、残差ブロックに再構成するために、逆変換および量子化コンポーネント429に転送される。逆変換および量子化コンポーネント429は、逆変換および量子化コンポーネント329と同様であってもよい。
【0095】
再構成された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づいて画像ブロックに再構成するために、イントラ画像予測コンポーネント417に転送される。イントラ画像予測コンポーネント417は、イントラ画像推定コンポーネント215およびイントラ画像予測コンポーネント217と同様であってもよい。具体的には、イントラ画像予測コンポーネント417は、予測モードを利用してフレーム内の参照ブロックの位置を特定し、その結果に残差ブロックを適用してイントラ予測画像ブロックを再構成する。再構成されたイントラ予測画像ブロックおよび/または残差ブロックならびに対応するインター予測データは、ループ内フィルタコンポーネント425を介してデコード画像バッファコンポーネント423に転送され、これらは、それぞれ、デコード画像バッファコンポーネント223およびループ内フィルタコンポーネント225と実質的に同様であってもよい。ループ内フィルタコンポーネント425は、再構成された画像ブロック、残差ブロック、および/または予測ブロックをフィルタリングし、このような情報は、デコード画像バッファコンポーネント423に記憶される。デコード画像バッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221および/または動き補償コンポーネント219と実質的に同様であってもよい。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを利用して予測ブロックを生成し、その結果に残差ブロックを適用して画像ブロックを再構成する。結果として得られる再構成されたブロックはまた、ループ内フィルタコンポーネント425を介してデコード画像バッファコンポーネント423に転送されてもよい。デコード画像バッファコンポーネント423は、分割情報を介してフレームに再構成することができる追加の再構成された画像ブロックを記憶し続ける。このようなフレームは、シーケンスに配置することもできる。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
【0096】
図5は、例示的なHRD500を示す概略図である。HRD500は、コーデックシステム200および/またはエンコーダ300などのエンコーダで利用することができる。HRD500は、ビットストリームがデコーダ400などのデコーダに転送される前に、方法100の段階109で作成されたビットストリームをチェックすることができる。いくつかの例では、ビットストリームは、ビットストリームがエンコードされるときに、HRD500を通して連続的に転送されてもよい。ビットストリームの一部が、関連付けられた制約に適合しない場合、HRD500は、そのような失敗をエンコーダに示して、エンコーダが異なるメカニズムでビットストリームの対応するセクションを再エンコードするようにさせることができる。
【0097】
HRD500は、仮想ストリームスケジューラ(HSS)541を含む。HSS541は、仮想配信メカニズムを実行するように構成されたコンポーネントである。仮想配信メカニズムは、HRD500に入力されるビットストリーム551のタイミングおよびデータフローに関して、ビットストリームまたはデコーダの適合性をチェックするために使用される。例えば、HSS541は、エンコーダから出力されたビットストリーム551を受信し、ビットストリーム551に対する適合性試験処理を管理することができる。特定の例では、HSS541は、コーディングされた画像がHRD500を通って移動するレートを制御し、ビットストリーム551が不適合のデータを含まないことを検証することができる。
【0098】
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は、ビットストリーム適合性検証中に使用するためのビデオデータを記憶する。
【0099】
CPB543は、DU553をデコード処理コンポーネント545に転送する。デコード処理コンポーネント545は、VVC規格に適合したコンポーネントである。例えば、デコード処理コンポーネント545は、エンドユーザが利用するデコーダ400をエミュレートすることができる。デコード処理コンポーネント545は、例示的なエンドユーザデコーダによって実現可能なレートでDU553をデコードする。デコード処理コンポーネント545が、CPB543のオーバーフローを防止するのに十分な速さでDU553をデコードすることができない場合、ビットストリーム551は規格に適合しておらず、再エンコードする必要がある。
【0100】
デコード処理コンポーネント545は、DU553をデコードし、デコードされたDU555を生成する。デコードされたDU555は、デコード画像を含む。デコードされたDU555は、DPB547に転送される。DPB547は、デコード画像バッファコンポーネント223、323、および/または423と実質的に同様であってもよい。インター予測をサポートするために、デコードされたDU555から得られる参照画像556として使用するためにマークされた画像は、さらなるデコードをサポートするためにデコード処理コンポーネント545に戻される。DPB547は、デコードされたビデオシーケンスを一連の画像557として出力する。画像557は、エンコーダによってビットストリーム551にエンコードされた画像を全体的にミラーリングした再構成された画像である。
【0101】
画像557は、出力クロッピングコンポーネント549に転送される。出力クロッピングコンポーネント549は、適合クロッピングウィンドウを画像557に適用するように構成される。これにより、クロップされた出力画像559が得られる。クロップされた出力画像559は、完全に再構成された画像である。したがって、クロップされた出力画像559は、ビットストリーム551をデコードする際にエンドユーザが見ると思われるものを模倣する。このように、エンコーダは、クロップされた出力画像559をレビューして、エンコードが満足できるものであることを保証することができる。
【0102】
HRD500は、ビットストリーム551内のHRDパラメータに基づいて初期化される。例えば、HRD500は、VPS、SPS、および/またはSEIメッセージからHRDパラメータを読み取ることができる。次いで、HRD500は、このようなHRDパラメータの情報に基づいてビットストリーム551に対して適合性試験動作を実行できる。具体例として、HRD500は、HRDパラメータから1つまたは複数のCPB配信スケジュール561を決定することができる。配信スケジュールは、CPBおよび/またはDPBなどのメモリロケーションへのおよび/またはメモリロケーションからのビデオデータの配信のためのタイミングを指定する。したがって、CPB配信スケジュール561は、CPB543への/からのAU、DU553、および/または画像の配信タイミングを指定する。例えば、CPB配信スケジュール561は、CPB543のビットレートおよびバッファサイズを記述することができ、このようなビットレートおよびバッファサイズは、特定のクラスのデコーダおよび/またはネットワーク条件に対応する。したがって、CPB配信スケジュール561は、退避前にCPB543にどれだけ長くデータが留まることができるかを示すことができる。適合性試験中にHRD500においてCPB配信スケジュール561を維持できないということは、CPB配信スケジュール561に対応するデコーダが対応するビットストリームをデコードすることができないことを示すものである。HRD500は、CPB配信スケジュール561と同様のDPB配信スケジュールをDPB547に利用できることに留意されたい。
【0103】
ビデオは、様々なレベルのハードウェア能力を有するデコーダによって使用するために、ならびに様々なネットワーク条件のために、異なるレイヤおよび/またはOLSにコーディングされることがある。CPB配信スケジュール561は、これらの課題を反映するように選択される。したがって、上位レイヤのサブビットストリームは、最適なハードウェアおよびネットワーク条件に対して指定され、したがって、上位レイヤは、CPB543内の大量のメモリと、DPB547に向けたDU553の転送のための短い遅延とを利用する1つまたは複数のCPB配信スケジュール561を受信することができる。同様に、下位レイヤのサブビットストリームは、制限されたデコーダハードウェア能力および/または劣悪なネットワーク条件に対して指定される。したがって、下位レイヤは、CPB543内の少量のメモリと、DPB547に向けたDU553の転送のためのより長い遅延とを利用する1つまたは複数のCPB配信スケジュール561を受信することができる。次いで、OLS、レイヤ、サブレイヤ、またはそれらの組合せは、対応する配信スケジュール561に従ってテストされて、結果として得られたサブビットストリームがサブビットストリームに対して期待される条件下で正しくデコードできることを保証することができる。CPB配信スケジュール561はそれぞれ、スケジュールインデックス(ScIdx)563と関連付けられている。ScIdx563は、配信スケジュールを識別するインデックスである。したがって、ビットストリーム551内のHRDパラメータは、CPB配信スケジュール561をScIdx563によって示すことができるだけでなく、HRD500がCPB配信スケジュール561を決定し、CPB配信スケジュール561を対応するOLS、レイヤ、および/またはサブレイヤに相関させることを可能にするのに十分なデータを含み得る。
【0104】
図6は、レイヤ間予測621のために構成された例示的なマルチレイヤビデオシーケンス600を示す概略図である。マルチレイヤビデオシーケンス600は、例えば方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダによってエンコードされ、コーデックシステム200および/またはデコーダ400などのデコーダによってデコードされてもよい。さらに、マルチレイヤビデオシーケンス600は、HRD500などのHRDによって規格適合性をチェックすることができる。マルチレイヤビデオシーケンス600は、コーディングビデオシーケンスにおけるレイヤの例示的なアプリケーションを示すために含まれている。マルチレイヤビデオシーケンス600は、レイヤN631およびレイヤN+1 632などの複数のレイヤを利用する任意のビデオシーケンスである。
【0105】
一例では、マルチレイヤビデオシーケンス600は、レイヤ間予測621を利用することができる。レイヤ間予測621は、異なるレイヤの画像611、612、613、および614と画像615、616、617、および618との間で適用される。図示する例では、画像611、612、613、および614は、レイヤN+1 632の一部であり、画像615、616、617、および618は、レイヤN631の一部である。レイヤN631および/またはレイヤN+1 632などのレイヤは、同様のサイズ、品質、解像度、信号対雑音比、能力など、同様の特性値にすべてが関連付けられた画像のグループである。レイヤは、VCL NALユニットおよび関連付けられた非VCL NALユニットのセットとして形式的に定義することができる。VCL NALユニットは、画像のコーディングスライスなど、ビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータのデコード、適合性チェックの実行、または他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。
【0106】
図示する例では、レイヤN+1 632はレイヤN631よりも大きい画像サイズに関連付けられている。したがって、本例では、レイヤN+1 632の画像611、612、613、および614は、レイヤN631の画像615、616、617、および618よりも大きな画像サイズ(例えば、より大きい高さおよび幅、したがってより多くのサンプル)を有する。しかしながら、このような画像は、他の特性によってレイヤN+1 632とレイヤN631との間で分離することができる。2つのレイヤ、レイヤN+1 632およびレイヤN631のみが示されているが、画像のセットは、関連付けられた特性に基づいて任意の数のレイヤに分離することができる。レイヤN+1 632およびレイヤN631は、レイヤIDによって表記されることもある。レイヤIDは、画像に関連付けられ、その画像が、示されたレイヤの一部であることを表記するデータの項目である。したがって、各画像611~618は、対応するレイヤIDに関連付けられて、どちらのレイヤN+1 632またはレイヤN631が対応する画像を含むかを示すことができる。例えば、レイヤIDは、NALユニットを含む(例えば、レイヤ内の画像のスライスおよび/またはパラメータを含む)レイヤの識別子を指定するシンタックス要素であるNALユニットヘッダレイヤ識別子(nuh_layer_id)を含み得る。レイヤN631などの、より低い品質/ビットストリームサイズに関連付けられたレイヤは、一般に、より低いレイヤIDが割り当てられ、下位レイヤと呼ばれる。さらに、レイヤN+1 632などの、より高い品質/ビットストリームサイズに関連付けられたレイヤは、一般に、より高いレイヤIDが割り当てられ、上位レイヤと呼ばれる。
【0107】
異なるレイヤ631~632の画像611~618は、代替物に表示されるように構成される。したがって、異なるレイヤ631~632の画像は、これらの画像が同じAUに含まれる限り、時間ID622を共有することができる。時間ID622は、データがビデオシーケンス内の時間位置に対応することを示すデータ要素である。AUは、指定された分類規則に従って互いに関連付けられ、1つの特定の出力時間に関連するNALユニットのセットである。例えば、AUは、画像611および画像615など、そのような画像が同じ時間ID622に関連付けられる場合、異なるレイヤに1つまたは複数の画像を含み得る。具体例として、デコーダは、より小さい画像が所望される場合、現在の表示時間に画像615をデコードおよび表示することができ、またはデコーダは、より大きい画像が所望される場合、現在の表示時間に画像611をデコードおよび表示することができる。したがって、上位レイヤN+1 632の画像611~614は、(画像サイズの違いにもかかわらず)下位レイヤN631の対応する画像615~618と実質的に同じ画像データを含む。具体的には、画像611は、画像615と実質的に同じ画像データを含み、画像612は、画像616と実質的に同じ画像データを含み、以下同様である。
【0108】
画像611~618は、同じレイヤN631またはN+1 632の他の画像611~618を参照することによってコーディングすることができる。同じレイヤの別の画像を参照して画像をコーディングすることは、結果としてインター予測623となる。インター予測623は、実線の矢印によって描かれている。例えば、画像613は、レイヤN+1 632の画像611、612、および/または614のうちの1つまたは2つを参照として使用するインター予測623を利用することによってコーディングされてもよく、1つの画像は、単方向インター予測のために参照され、および/または2つの画像は、双方向インター予測のために参照される。さらに、画像617は、レイヤN531の画像615、616、および/または618のうちの1つまたは2つを参照として使用するインター予測623を利用することによってコーディングされてもよく、1つの画像は、単方向インター予測のために参照され、および/または2つの画像は、双方向インター予測のために参照される。インター予測623を実行する場合に、画像を同じレイヤの別の画像の参照として使用するときは、その画像は、参照画像と呼ばれることがある。例えば、画像612は、インター予測623に従って画像613をコーディングするために使用される参照画像であってもよい。インター予測623は、マルチレイヤコンテキストにおいてイントラレイヤ予測と呼ばれることもある。したがって、インター予測623は、現在の画像とは異なる参照画像中の指示されたサンプルを参照することによって、現在の画像のサンプルをコーディングするメカニズムであり、参照画像と現在の画像とが同じレイヤにある。
【0109】
画像611~618は、異なるレイヤの他の画像611~618を参照することによってコーディングすることもできる。この処理は、レイヤ間予測621として知られており、破線の矢印によって描かれている。レイヤ間予測621は、参照画像中の指示されたサンプルを参照することによって現在の画像のサンプルをコーディングするメカニズムであり、現在の画像と参照画像とが異なるレイヤにあり、したがって異なるレイヤIDを有する。例えば、下位レイヤN631の画像は、上位レイヤN+1 632の対応する画像をコーディングするための参照画像として使用することができる。具体例として、画像611は、レイヤ間予測621に従って画像615を参照することによってコーディングすることができる。このような場合、画像615は、レイヤ間参照画像として使用される。レイヤ間参照画像は、レイヤ間予測621に使用される参照画像である。ほとんどの場合、レイヤ間予測621は、画像611などの現在の画像が、同じAUに含まれる、画像615などの下位レイヤにあるレイヤ間参照画像のみを使用できるように制約される。複数のレイヤ(例えば、3つ以上)が利用可能な場合、レイヤ間予測621は、現在の画像よりも低いレベルの複数のレイヤ間参照画像に基づいて現在の画像をエンコード/デコードすることができる。
【0110】
ビデオエンコーダは、マルチレイヤビデオシーケンス600を利用して、インター予測623とレイヤ間予測621の多くの異なる組合せおよび/または順列を介して画像611~618をエンコードすることができる。例えば、画像615は、イントラ予測に従ってコーディングされてもよい。次いで、画像616~618は、画像615を参照画像として使用することによって、インター予測623に従ってコーディングすることができる。さらに、画像611は、画像615をレイヤ間参照画像として使用することによって、レイヤ間予測621に従ってコーディングされてもよい。次いで、画像612~614は、画像611を参照画像として使用することによって、インター予測623に従ってコーディングすることができる。したがって、参照画像は、異なるコーディングメカニズムに対して、単一レイヤ参照画像とレイヤ間参照画像の両方の役割を果たすことができる。下位レイヤN631の画像に基づいて上位レイヤN+1 632の画像をコーディングすることによって、上位レイヤN+1 632は、インター予測623およびレイヤ間予測621よりもコーディング効率がはるかに低いイントラ予測を利用することを回避することができる。したがって、イントラ予測の低いコーディング効率は、最小/最低品質の画像に限定することができ、したがって、最小量のビデオデータのコーディングに限定することができる。参照画像および/またはレイヤ間参照画像として使用される画像は、参照画像リスト構造に含まれる参照画像リストのエントリに示すことができる。
【0111】
このような動作を実行するために、レイヤN631およびレイヤN+1 632などのレイヤが、1つまたは複数のOLS625および626に含まれることがある。具体的には、画像611~618は、ビットストリーム600のレイヤ631~632としてエンコードされ、次いで、画像の各レイヤ631~632がOLS625および626のうちの1つまたは複数に割り当てられる。次いで、OLS625および/または626を選択することができ、デコーダにおける能力および/またはネットワーク条件に応じて、対応するレイヤ631および/または632をデコーダに送信することができる。OLS625は、1つまたは複数のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(例えば、ディスプレイに)出力するために指定されるレイヤである。例えば、レイヤN631は、レイヤ間予測621をサポートするためだけに含まれてよく、決して出力されなくてもよい。このような場合、レイヤN+1 632は、レイヤN631に基づいてデコードされ、出力される。このような場合、OLS625は、出力レイヤとしてレイヤN+1 632を含む。OLSが出力レイヤのみを含む場合、そのOLSは0番目のOLS626と呼ばれる。0番目のOLS626は、最下位レイヤ(最下位レイヤ識別子を有するレイヤ)のみを含むOLSであり、したがって、出力レイヤのみを含むOLSである。他の場合には、OLS625は、異なる組合せで多くのレイヤを含むことがある。例えば、OLS625の出力レイヤは、1つ、2つ、または多くの下位レイヤに基づいてレイヤ間予測621に従ってコーディングすることができる。さらに、OLS625は、2つ以上の出力レイヤを含み得る。したがって、OLS625は、1つまたは複数の出力レイヤと、出力レイヤを再構成するのに必要な任意のサポートレイヤとを含み得る。2つのOLS625および626のみが示されているが、マルチレイヤビデオシーケンス600は、それぞれがレイヤの異なる組合せを利用する多くの異なるOLS625および/または626を利用することによってコーディングされてもよい。OLS625および626はそれぞれ、対応するOLS625および626を一意に識別するインデックスであるOLSインデックス629に関連付けられている。
【0112】
HRD500でマルチレイヤビデオシーケンス600の規格適合性をチェックすることは、レイヤ631~632ならびにOLS625および626の数次第では複雑になる可能性がある。HRD500は、テストのためにマルチレイヤビデオシーケンス600を一連の動作ポイント627に分離することができる。OLS625および/または626は、OLSインデックス629によって識別される。動作ポイント627は、OLS625/626の時間的なサブセットである。動作ポイント627は、対応するOLS625/626のOLSインデックス629ならびに最高時間ID622の両方によって識別することができる。具体例として、第1の動作ポイント627は、時間ID0から時間ID200までの第1のOLS625内のすべての画像を含むことができ、第2の動作ポイント627は、時間ID201から時間ID400までの第1のOLS625内のすべての画像を含むことができ、以下同様である。このような場合、第1の動作ポイント627は、第1のOLS625のOLSインデックス629と、200の時間IDによって記述される。さらに、第2の動作ポイント627は、第1のOLS625のOLSインデックス629と、400の時間IDによって記述される。指定された瞬間にテストするために選択された動作ポイント627は、テスト対象OP(targetOp)と呼ばれる。したがって、targetOpは、HRD500において適合性試験のために選択される動作ポイント627である。
【0113】
図7は、時間スケーラビリティのために構成された例示的なマルチレイヤビデオシーケンス700を示す概略図である。マルチレイヤビデオシーケンス700は、例えば方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダによってエンコードされ、コーデックシステム200および/またはデコーダ400などのデコーダによってデコードされ得る。さらに、マルチレイヤビデオシーケンス700は、HRD500などのHRDによって規格適合性をチェックすることができる。マルチレイヤビデオシーケンス700は、コーディングビデオシーケンスにおけるレイヤのための別の例示的な適用を示すために含まれている。例えば、マルチレイヤビデオシーケンス700は、別個の実施形態として利用されてもよく、またはマルチレイヤビデオシーケンス600に関して説明した技術と組み合わされてもよい。
【0114】
マルチレイヤビデオシーケンス700は、サブレイヤ710、720、および730を含む。サブレイヤは、特定の時間識別子値を有するVCL NALユニット(例えば、画像)ならびに関連付けられた非VCL NALユニット(例えば、サポートパラメータ)を含む時間スケーラブルビットストリームの時間スケーラブルレイヤである。例えば、レイヤN631および/またはレイヤN+1 632などのレイヤは、時間スケーラビリティをサポートするために、サブレイヤ710、720、および730にさらに分割され得る。サブレイヤ710は、ベースレイヤと呼ばれることがあり、サブレイヤ720および730は、エンハンスメントレイヤと呼ばれることがある。図示するように、サブレイヤ710は、毎秒30フレームなどの第1のフレームレートの画像711を含む。サブレイヤ710は、ベース/最低フレームレートを含むため、サブレイヤ710は、ベースレイヤである。サブレイヤ720は、サブレイヤ710の画像711から時間的にオフセットされた画像721を含む。その結果、サブレイヤ710とサブレイヤ720とを組み合わせることができ、その結果、サブレイヤ710単独のフレームレートよりも全体として高いフレームレートが得られる。例えば、サブレイヤ710および720は、合わせて毎秒60フレームのフレームレートを有することができる。したがって、サブレイヤ720は、サブレイヤ710のフレームレートを向上させる。さらに、サブレイヤ730は、やはりサブレイヤ720および710の画像721および711から時間的にオフセットされた画像731を含む。したがって、サブレイヤ730をサブレイヤ720および710と組み合わせて、サブレイヤ710をさらに強化することができる。例えば、サブレイヤ710、720、および730は、合わせて毎秒90フレームのフレームレートを有することができる。
【0115】
サブレイヤ表現740は、サブレイヤ710、720、および/または730を組み合わせることによって動的に作成することができる。サブレイヤ表現740は、特定のサブレイヤおよび下位サブレイヤのNALユニットを含むビットストリームのサブセットである。図示する例では、サブレイヤ表現740は、サブレイヤ710、720、および730の合成画像711、721、および731である画像741を含む。したがって、マルチレイヤビデオシーケンス700は、サブレイヤ710、720、および/または730の所望のセットを含むサブレイヤ表現740を選択することによって、所望のフレームレートに時間的にスケーリングされ得る。サブレイヤ表現740は、サブレイヤ710、720、および/または730をレイヤとして含むOLSを利用することによって作成されてもよい。このような場合、サブレイヤ表現740が出力レイヤとして選択される。したがって、時間スケーラビリティは、マルチレイヤメカニズムを使用して実現することができるいくつかのメカニズムのうちの1つである。
【0116】
図8は、例示的なビットストリーム800を示す概略図である。例えば、ビットストリーム800は、方法100に従ってコーデックシステム200および/またはデコーダ400によってデコードするために、コーデックシステム200および/またはエンコーダ300によって生成することができる。さらに、ビットストリーム800は、マルチレイヤビデオシーケンス600および/または700を含み得る。さらに、ビットストリーム800は、HRD500などのHRDの動作を制御するための様々なパラメータを含み得る。このようなパラメータに基づいて、HRDは、デコードのためにデコーダに向けて送信する前に、規格との適合性についてビットストリーム800をチェックすることができる。
【0117】
ビットストリーム800は、VPS811、1つまたは複数のSPS813、複数の画像パラメータセット(PPS)815、複数のスライスヘッダ817、イメージデータ820、およびSEIメッセージ819を含む。VPS811は、ビットストリーム800全体に関連するデータを含む。例えば、VPS811は、ビットストリーム800で使用されるOLS、レイヤ、および/またはサブレイヤに関連するデータを含み得る。SPS813は、ビットストリーム800に含まれるコーディングビデオシーケンス内のすべての画像に共通のシーケンスデータを含む。例えば、各レイヤは、1つまたは複数のコーディングビデオシーケンスを含むことができ、各コーディングビデオシーケンスは、対応するパラメータについてSPS813を参照することができる。SPS813のパラメータは、画像サイジング、ビット深度、コーディングツールパラメータ、ビットレート制限などを含み得る。各シーケンスは、SPS813を参照するが、いくつかの例では、単一のSPS813が複数のシーケンスに関するデータを含み得ることに留意されたい。PPS815は、画像全体に適用されるパラメータを含む。したがって、ビデオシーケンス内の各画像は、PPS815を参照することができる。各画像は、PPS815を参照するが、いくつかの例では、単一のPPS815が複数の画像についてのデータを含み得ることに留意されたい。例えば、複数の同様の画像は、同様のパラメータに従ってコーディングされてもよい。このような場合、単一のPPS815は、このような同様の画像についてのデータを含み得る。PPS815は、対応する画像のスライスに利用可能なコーディングツール、量子化パラメータ、オフセットなどを示すことができる。
【0118】
スライスヘッダ817は、画像内の各スライスに固有のパラメータを含む。したがって、ビデオシーケンス内のスライスごとに1つのスライスヘッダ817が存在する可能性がある。スライスヘッダ817は、スライスタイプ情報、POC、参照画像リスト、予測重み、タイルエントリポイント、デブロッキングパラメータなどを含み得る。いくつかの例では、ビットストリーム800はまた、単一の画像内のすべてのスライスに適用されるパラメータを含むシンタックス構造である画像ヘッダを含み得ることに留意されたい。このため、画像ヘッダおよびスライスヘッダ817は、いくつかの文脈では交換可能に使用されることがある。例えば、特定のパラメータは、そのようなパラメータが画像内のすべてのスライスに共通であるかどうかに応じて、スライスヘッダ817と画像ヘッダとの間で移動することができる。
【0119】
イメージデータ820は、インター予測および/またはイントラ予測に従ってエンコードされたビデオデータ、ならびに対応する変換されたおよび量子化された残差データを含む。例えば、イメージデータ820は、AU821、DU822、および/または画像823を含み得る。AU821は、指定された分類規則に従って互いに関連付けられ、1つの特定の出力時間に関連するNALユニットのセットである。DU822は、AUまたはAUのサブセット、および関連付けられた非VCL NALユニットである。画像823は、フレームまたはそのフィールドを作成するルマサンプルのアレイおよび/またはクロマサンプルのアレイである。平たく言えば、AU821は、ビデオシーケンス内の指定された瞬間に表示される可能性のある様々なビデオデータ、ならびにサポートするシンタックスデータを含む。したがって、AU821は、単一レイヤビットストリームにおける単一の画像823、またはマルチレイヤビットストリームにおけるすべてが同じ瞬間に関連付けられた複数のレイヤからの複数画像を含み得る。一方、画像823は、表示のために出力され得るか、または出力のための他の画像823のコーディングをサポートするために使用され得る、コーディングされた画像である。DU822は、1つまたは複数の画像823と、デコードに必要な任意のサポートするシンタックスデータとを含み得る。例えば、DU822およびAU821は、(例えば、AUが単一の画像を含む場合)単純なビットストリームにおいて交換可能に使用されることがある。しかしながら、より複雑なマルチレイヤビットストリームでは、DU822は、AU821からのビデオデータの一部分のみを含み得る。例えば、AU821は、いくつかのレイヤおよび/またはサブレイヤにおいて画像823を含むことができ、画像823のうちのいくつかが異なるOLSに関連付けられている。このような場合、DU822は、指定されたOLSおよび/または指定されたレイヤ/サブレイヤからの画像823のみを含み得る。
【0120】
画像823は、1つまたは複数のスライス825を含む。スライス825は、画像823の(例えば、タイル内の)整数個の完全なタイルまたは整数個の連続する完全なコーディングツリーユニット(CTU)行として定義されてもよく、タイルまたはCTU行は、単一のNALユニット829に排他的に含まれる。したがって、スライス825は、単一のNALユニット829にも含まれる。スライス825は、CTUおよび/またはコーディングツリーブロック(CTB)にさらに分割される。CTUは、コーディングツリーによって分割することができるあらかじめ定義されたサイズのサンプルのグループである。CTBは、CTUのサブセットであり、CTUのルマ成分またはクロマ成分を含む。CTU/CTBは、コーディングツリーに基づいてコーディングブロックにさらに分割される。その後、コーディングブロックは、予測メカニズムに従ってエンコード/デコードされ得る。
【0121】
ビットストリーム800は、一連のNALユニット829である。NALユニット829は、ビデオデータおよび/またはサポートシンタックスのためのコンテナである。NALユニット829は、VCL NALユニットまたは非VCL NALユニットとすることができる。VCL NALユニットは、コーディングされたスライス825および関連付けられたスライスヘッダ817などのビデオデータを含むようにコーディングされたNALユニット829である。非VCL NALユニットは、ビデオデータのデコード、適合性チェックの実行、もしくは他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニット829である。例えば、非VCL NALユニットは、VPS811、SPS813、PPS815、SEIメッセージ819、または他のサポートシンタックスを含み得る。
【0122】
SEIメッセージ819は、デコード画像のサンプルの値を決定するために、デコード処理によって必要とされない情報を伝達する、セマンティクスが指定されたシンタックス構造である。例えば、SEIメッセージは、HRD処理をサポートするためのデータ、またはデコーダにおいてビットストリーム800をデコードすることに直接関連しない他のサポートデータを含み得る。SEIメッセージ819は、スケーラブルネスティングSEIメッセージおよび/または非スケーラブルネスト化SEIメッセージを含み得る。スケーラブルネスティングSEIメッセージは、1つもしくは複数のOLSまたは1つもしくは複数のレイヤに対応する複数のSEIメッセージを含むメッセージである。非スケーラブルネスト化SEIメッセージは、ネスティングされていないメッセージであり、したがって、単一のSEIメッセージを含む。SEIメッセージ819は、CPBを管理するためにHRDを初期化するためのHRDパラメータを含むBP SEIメッセージを含み得る。SEIメッセージ819は、CPBおよび/またはDPBにおいてAU821についての配信情報を管理するためのHRDパラメータを含むPT SEIメッセージも含み得る。SEIメッセージ819は、CPBおよび/またはDPBにおいてDU822についての配信情報を管理するためのHRDパラメータを含むDUI SEIメッセージも含み得る。
【0123】
ビットストリーム800は、HRD500などのHRDの動作条件を初期化および/または定義するシンタックス要素であるシーケンスレベルHRDパラメータ833の整数(i)個のセットを含む。いくつかの例では、一般HRDパラメータ(general_hrd_parameters)シンタックス構造は、VPS811によって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータ833を含み得る。シーケンスレベルHRDパラメータは、コーディングビデオシーケンス全体に適用されるHRDパラメータである。コーディングビデオシーケンスは、1つまたは複数の画像823である。一例では、エンコーダは、ビデオシーケンスをレイヤにエンコードすることができる。レイヤはそれぞれ、コーディングされたビデオシーケンスを含み得る。次いで、エンコーダは、シーケンスレベルHRDパラメータ833をビットストリームにエンコードして、OLS内のシーケンスに対して適合性チェックを実行するようにHRDを適切に構成することができる。HRDパラメータ833は、デコーダが配信スケジュールに従ってビットストリームをデコードすることができることをデコーダに示すこともできる。シーケンスレベルHRDパラメータ833は、VPS811に含まれる。HRDを構成するために使用される追加のパラメータも、SEIメッセージ819に含まれてもよい。
【0124】
上述したように、ビデオストリームは、OLS625、レイヤN631、レイヤN+1 632、サブレイヤ710、サブレイヤ720、および/またはサブレイヤ730などの、多くのOLSおよび多くのレイヤを含み得る。さらに、レイヤによっては、複数のOLSに含まれるものがあってもよい。そのため、マルチレイヤビデオシーケンス600および/または700などのマルチレイヤビデオシーケンスは、かなり複雑になることがある。いくつかのビデオコーディングシステムは、各OLSの各レイヤについてHRDパラメータのセットをシグナリングすることがある。このようなHRDパラメータは、関与するレイヤおよび/またはOLSのタイプに応じていくつかの場所でシグナリングされることがある。その結果、より多くのレイヤおよび/またはOLSが追加されるにつれてHRDシグナリングスキームがより複雑になる。さらに、異なるレイヤおよび/またはOLSのHRDパラメータは、冗長な情報を含んでいる場合がある。
【0125】
本開示は、簡略化されたHRDシグナリングのためのメカニズムを含む。具体的には、シーケンスレベルHRDパラメータ833は、すべてのOLSについて同じであるように制約することができる。シーケンスレベルHRDパラメータ833が同じであるため、シーケンスレベルHRDパラメータ833は、レイヤ/OLSごとにそのようなパラメータをシグナリングする代わりに、1回シグナリングされ得る。具体例として、シーケンスレベルHRDパラメータ833は、VPS811においてシグナリングされる。VPS811は、ビットストリーム800において1回シグナリングされてもよい。そのため、シーケンスレベルHRDパラメータ833は、1回だけシグナリングされる。このようにして、ビットストリーム800における複雑なおよび/または冗長なシグナリングが低減され、それによりコーディング効率が向上する。また、この手法により、HRD処理が簡略化される。その結果、プロセッサ、メモリ、および/またはネットワークのシグナリングリソースの使用量がエンコーダおよびデコーダの両方において削減される。
【0126】
具体例では、VPS811は、シーケンスレベルHRDパラメータ833を含み得る。シーケンスレベルHRDパラメータ833は、サブレイヤCPBパラメータ存在フラグ831と、DU HRDパラメータ存在フラグ835と、HRD CPBカウント837と、を含み得る。サブレイヤCPBパラメータ存在フラグ831は、sublayer_cpb_params_present_flagとして表記されることがある。サブレイヤCPBパラメータ存在フラグ831は、OLS HRDパラメータのセットが指定されたサブレイヤ表現のためのHRDパラメータを含むかどうかを指定するシンタックス要素である。したがって、サブレイヤCPBパラメータ存在フラグ831は、シーケンスレベルHRDパラメータ833の対応するセットが、サブレイヤ表現740などの1つまたは複数の対応するサブレイヤ表現に対して適合性チェックを実行する際に使用するためのHRDパラメータを含むかどうかを示すことができる。
【0127】
DU HRDパラメータ存在フラグ835は、decoding_unit_hrd_params_present_flagとして表記されることがある。DU HRDパラメータ存在フラグ835は、対応するHRDパラメータがDUレベルで動作するか、AUレベルで動作するかを示すフラグである。例えば、DUは、AUまたはAUのサブセットであってもよい。例えば、DUは、単一の画像を含み得る。さらに、AUは、OLSのレイヤごとのAUを含み得る。ビットストリーム800が単一のレイヤを含む場合、AUとDUは、同じである。ビットストリーム800がマルチレイヤビットストリームを含む場合、AUは、多くのDUを含み得る。したがって、DU HRDパラメータ存在フラグ835は、HRDが配信スケジュールに従ってAU全体をチェックすべきかどうか、またはHRDが配信スケジュールに従ってAUの各DUをチェックすべきかどうかをHRDに示すことができる。
【0128】
HRD CPBカウント837は、bp_cpb_cnt_minus1として表記されることがある。HRD CPBカウント837は、サブレイヤ710、720、および/または730などの、対応する時間サブレイヤのために使用される初期CPB除去遅延と初期CPB除去オフセットとのペアの数を指定するシンタックス要素である。初期CPB除去遅延は、ビットストリーム、OLS、および/またはレイヤ中の画像、AU、および/またはDUをチェックする場合にHRDのCPBからデータユニットを除去するときに使用されるデフォルトの除去遅延である。初期CPB除去オフセットは、ビットストリーム、OLS、および/またはレイヤ中の各画像、AU、および/またはDUに関連付けられたデフォルトのCPB除去オフセットである。例えば、オフセットは、HRDのCPBから除去されるデータユニットのサイズを示す。初期CPB除去遅延と初期CPB除去オフセットは、CPB配信スケジュール561などの配信スケジュールを定義するペアを形成する。したがって、HRD CPBカウント837は、サブレイヤ710、720、および/または730などの時間サブレイヤのために利用可能な配信スケジュールの数を示す。
【0129】
したがって、サブレイヤCPBパラメータ存在フラグ831、DU HRDパラメータ存在フラグ835、およびHRD CPBカウント837は、シーケンスの各サブレイヤについて同じ値を含むように制約されてもよい。したがって、これらのシンタックス要素は、VPS811において1回シグナリングすることができ、これにより、ビットストリーム800サイズが低減し、HRD適合性チェックの複雑さが低減する。したがって、ビットストリーム800に関して説明したメカニズムは、エンコーダおよび/またはデコーダの機能を高めることができる。さらに、ビットストリーム800に関して説明したメカニズムは、コーディング効率の向上をサポートし、ならびに/またはエンコーダおよび/もしくはデコーダにおけるプロセッサ、メモリ、および/もしくはネットワーク通信リソースの削減をサポートすることができる。
【0130】
ここで、前述の情報を本明細書において以下でより詳細に説明する。階層化ビデオコーディングは、スケーラブルビデオコーディングまたはスケーラビリティを有するビデオコーディングとも呼ばれる。ビデオコーディングにおけるスケーラビリティは、マルチレイヤコーディング技術を使用することによってサポートされ得る。マルチレイヤビットストリームは、ベースレイヤ(BL)と1つまたは複数のエンハンスメントレイヤ(EL)とを含む。スケーラビリティの例には、空間スケーラビリティ、品質/信号対雑音比(SNR)スケーラビリティ、マルチビュースケーラビリティ、フレームレートスケーラビリティなどが含まれる。マルチレイヤコーディング技術を使用する場合、画像またはその一部は、参照画像を使用せずにコーディングされてもよく(イントラ予測)、同じレイヤにある参照画像を参照することによってコーディングされてもよく(インター予測)、および/または他のレイヤにある参照画像を参照することによってコーディングされてもよい(インターレイヤ予測)。現在の画像のインターレイヤ予測に使用される参照画像は、インターレイヤ参照画像(ILRP)と呼ばれる。
図6は、異なるレイヤの画像が異なる解像度を有する空間スケーラビリティのためのマルチレイヤコーディングの一例を示す。
【0131】
いくつかのビデオコーディングファミリーは、単一レイヤコーディングのためのプロファイルから分離されたプロファイルのスケーラビリティのサポートを提供する。スケーラブルビデオコーディング(SVC)は、空間スケーラビリティ、時間スケーラビリティ、および品質スケーラビリティのサポートを提供する高度ビデオコーディング(AVC)のスケーラブルな拡張である。SVCの場合、EL画像の各マクロブロック(MB)に、EL MBが下位レイヤからのコロケーションブロックを使用して予測されるかどうかを示すフラグがシグナリングされる。コロケーションブロックからの予測は、テクスチャ、動きベクトル、および/またはコーディングモードを含み得る。SVCの実装は、変更されていないAVCの実装を設計で直接再利用することはできない。SVC ELマクロブロックのシンタックスおよびデコード処理は、AVCシンタックスおよびデコード処理とは異なる。
【0132】
スケーラブルHEVC(SHVC)は、空間スケーラビリティおよび品質スケーラビリティのサポートを提供するHEVCの拡張である。マルチビューHEVC(MV-HEVC)は、マルチビュースケーラビリティのサポートを提供するHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCよりも高度で効率的な3Dビデオコーディングのサポートを提供するHEVCの拡張である。時間スケーラビリティは、単一レイヤHEVCコーデックの一体部分として含まれていてもよい。HEVCのマルチレイヤ拡張では、レイヤ間予測に使用されるデコード画像は、同じAUからのもののみであり、長期参照画像(LTRP)として扱われる。このような画像は、現在のレイヤの他の時間参照画像とともに、参照画像リストの参照インデックスが割り当てられる。レイヤ間予測(ILP)は、参照画像リストのレイヤ間参照画像を参照するように参照インデックスの値を設定することによって、予測ユニット(PU)レベルにおいて実現される。空間スケーラビリティは、ILRPがエンコードまたはデコードされている現在の画像とは異なる空間解像度を有する場合に、参照画像またはその一部を再サンプリングする。参照画像の再サンプリングは、画像レベルまたはコーディングブロックレベルのいずれかで実現することができる。
【0133】
VVCは、階層化ビデオコーディングをサポートすることもできる。VVCビットストリームは、複数のレイヤを含み得る。レイヤはすべて互いに独立していてもよい。例えば、各レイヤは、レイヤ間予測を使用せずにコーディングすることができる。この場合、レイヤは、サイマルキャストレイヤとも呼ばれる。場合によっては、レイヤのうちのいくつかは、ILPを使用してコーディングされる。VPSのフラグは、レイヤがサイマルキャストレイヤであるかどうか、または一部のレイヤがILPを使用するかどうかを示すことができる。一部のレイヤがILPを使用する場合、レイヤ間のレイヤ依存関係もVPSでシグナリングされる。VVCは、SHVCおよびMV-HEVCとは異なり、OLSを指定しないことがある。OLSは、指定されたレイヤのセットを含み、レイヤのセットの中の1つまたは複数のレイヤは、出力レイヤであると指定される。出力レイヤは、出力されるOLSのレイヤである。VVCの一部の実装では、レイヤがサイマルキャストレイヤの場合、1つのレイヤのみがデコードおよび出力のために選択されることがある。VVCの一部の実装では、すべてのレイヤを含むビットストリーム全体は、いずれかのレイヤがILPを使用する場合にデコードされるように指定される。さらに、レイヤのうちのある特定のレイヤが出力レイヤとして指定される。出力レイヤは、最上位レイヤのみ、すべてのレイヤ、または最上位レイヤ+指示された下位レイヤのセットであると指示されてもよい。
【0134】
ビデオコーディング規格は、指定されたHRD適合性試験を通してビットストリームの適合性を検証するためのHRDを指定することができる。SHVCおよびMV-HEVCでは、ビットストリームの適合性をチェックするために、ビットストリーム適合性試験の3つのセットが利用される。ビットストリームは、ビットストリーム全体と呼ばれ、entireBitstreamと表記される。ビットストリーム適合性試験の第1のセットは、ビットストリーム全体および対応する時間サブセットの適合性をテストするためのものである。このようなテストは、ビットストリーム全体に存在するVCL NALユニットのすべてのnuh_layer_id値を含むアクティブVPSによって指定されたレイヤセットがあるかどうかにかかわらず利用される。したがって、1つまたは複数のレイヤが出力セットに含まれない場合でも、ビットストリーム全体が適合性について常にチェックされる。ビットストリーム適合性試験の第2のセットは、アクティブVPSによって指定されたレイヤセットおよび関連付けられた時間サブセットの適合性をテストするために利用される。すべてのこれらのテストについて、ベースレイヤ画像(例えば、nuh_layer_idが0に等しい画像)のみがデコードされ、出力される。他の画像は、デコード処理が呼び出されたときにデコーダによって無視される。ビットストリーム適合性試験の第3のセットは、OLSおよびビットストリーム分割に基づいて、アクティブVPSのVPS拡張部分によって指定されたOLSおよび関連付けられた時間サブセットの適合性をテストするために利用される。ビットストリーム分割は、マルチレイヤビットストリームのOLSの1つまたは複数のレイヤを含む。
【0135】
前述の態様は、ある特定の問題を含む。例えば、適合性試験の最初の2つのセットは、デコードされず、出力されないレイヤに適用されることがある。例えば、最下位レイヤ以外のレイヤはデコードされないことがあり、出力されないことがある。実際のアプリケーションでは、デコーダは、デコードされるデータのみを受信することができる。したがって、適合性試験の最初の2つのセットを利用することは、両方ともコーデック設計を複雑にし、適合性試験をサポートするために使用されるシーケンスレベルパラメータと画像レベルパラメータの両方を搬送するためのビットが無駄になる可能性がある。適合性試験の第3のセットは、ビットストリーム分割を伴う。このような分割は、マルチレイヤビットストリームのOLSの1つまたは複数のレイヤに関連することがある。代わりに、適合性試験が常にレイヤごとに別々に動作する場合、HRDは大幅に簡略化される可能性がある。
【0136】
シーケンスレベルHRDパラメータのシグナリングは、複雑な場合がある。例えば、シーケンスレベルHRDパラメータは、SPSとVPSの両方など、複数の場所でシグナリングされることがある。さらに、シーケンスレベルHRDパラメータシグナリングは、冗長性を含むことがある。例えば、ビットストリーム全体について一般に同じである可能性がある情報が、各OLSの各レイヤで繰り返される可能性がある。さらに、例示的なHRDスキームは、異なる配信スケジュールをレイヤごとに選択することを可能にする。このような配信スケジュールは、動作ポイントごとに各レイヤについてシグナリングされたスケジュールのリストから選択されることがあり、動作ポイントは、OLSまたはOLSの時間サブセットである。このようなシステムは複雑である。さらに、例示的なHRDスキームは、不完全なAUをバッファリング期間SEIメッセージに関連付けることを可能にする。不完全なAUは、CVSに存在するすべてのレイヤについての画像がないAUである。しかしながら、このようなAUでのHRD初期化には問題がある可能性がある。例えば、HRDは、不完全なAUに存在しないレイヤアクセスユニットを有するレイヤについては適切に初期化されないことがある。加えて、レイヤビットストリームを導出するためのデマルチプレクス処理は、ターゲットレイヤに適用されないネスティングされたSEIメッセージを十分に効率的に除去できない場合がある。レイヤビットストリームは、ビットストリーム分割に1つのレイヤのみが含まれる場合に発生する。さらに、非スケーラブルなネスト化バッファリング期間、画像タイミング、およびデコードユニット情報SEIメッセージの適用可能なOLSは、ビットストリーム全体に対して指定されることがある。しかしながら、非スケーラブルネスト化バッファリング期間は、代わりに0番目のOLSに適用可能であるべきである。
【0137】
さらに、VVCの実装によっては、sub_layer_cpb_params_present_flagが0に等しいとき、HDRパラメータを推測することに失敗することがある。このような推測は、適切なHRD動作を可能にする場合がある。加えて、bp_max_sub_layers_minus1およびpt_max_sub_layers_minus1の値は、sps_max_sub_layers_minus1の値に等しいことが必要である場合がある。しかしながら、バッファリング期間および画像タイミングSEIメッセージは、ネスティングされてもよく、複数のOLSおよび複数のOLSのそれぞれの複数のレイヤに適用可能であってもよい。このような文脈では、関与するレイヤは、複数のSPSを参照することがある。したがって、システムは、どのSPSが各レイヤに対応するSPSであるかを追跡することが困難である場合がある。したがって、これらの2つのシンタックス要素の値は、代わりにvps_max_sub_layers_minus1の値に基づいて制約されるべきである。さらに、異なるレイヤは異なる数のサブレイヤを有し得るので、これらの2つのシンタックス要素の値は、すべてのバッファリング期間および画像タイミングSEIメッセージにおいて特定の値に常に等しいとは限らない可能性がある。
【0138】
また、以下の問題が、SHVC/MV-HEVCとVVCの両方においてHRD設計に関連付けられる。サブビットストリーム抽出処理は、ターゲットOLSに必要でないネスティングされたSEIメッセージを含むSEI NALユニットを除去しないことがある。
【0139】
一般に、本開示は、マルチレイヤビデオビットストリームにおける出力レイヤセットのためのSEIメッセージのスケーラブルなネスティングのための手法について説明する。本技術の説明は、VVCに基づいている。しかしながら、本技術は、他のビデオコーデック仕様に基づく階層化ビデオコーディングにも適用される。
【0140】
上述の問題の1つまたは複数は、以下のように解決することができる。具体的には、本開示は、SHVCおよびMV-HEVCと比較してはるかに単純なHRD動作を用いてHRDパラメータの効率的なシグナリングを可能にする、HRD設計のための方法および関連する態様を含む。以下に説明する解決策のそれぞれは、上述の問題に対応する。例えば、3セットの適合性試験を必要とする代わりに、本開示は、VPSによって指定されたOLSの適合性をテストするために1セットの適合性試験のみを利用すればよい。さらに、ビットストリーム分割に基づく設計の代わりに、開示されるHRDメカニズムは、OLSのレイヤごとに常に別々に動作することができる。さらに、すべてのOLSのすべてのレイヤおよびサブレイヤに対してグローバルであるシーケンスレベルHRDパラメータは、例えば、VPSにおいて1回だけシグナリングされればよい。加えて、すべてのOLSのすべてのレイヤおよびサブレイヤに対して単一の数の配信スケジュールがシグナリングされればよい。OLSのすべてのレイヤに同じ配信スケジュールインデックスを適用することもできる。さらに、不完全なAUは、バッファリング期間SEIメッセージに関連付けられなくてもよい。不完全なAUとは、CVSに存在するすべてのレイヤについての画像を含まないAUである。これにより、OLSのすべてのレイヤについて、確実にHRDを常に適切に初期化することができる。また、OLSにおいてターゲットレイヤに適用されないネスティングされたSEIメッセージを効率的に除去するためのメカニズムが開示される。これは、レイヤビットストリームを導出するためのデマルチプレクス処理をサポートする。加えて、非スケーラブルネスト化バッファリング期間、画像タイミング、およびデコードユニット情報SEIメッセージの適用可能なOLSは、0番目のOLSであると指定されてもよい。さらに、sub_layer_cpb_params_present_flagが0に等しい場合に、HDRパラメータを推測することができ、適切なHRD動作が可能になる可能性がある。bp_max_sub_layers_minus1およびpt_max_sub_layers_minus1の値は、0からvps_max_sub_layers_minus1の範囲にあることが必要であることがある。このように、このようなパラメータは、すべてのバッファリング期間および画像タイミングSEIメッセージについて特定の値である必要はない。また、サブビットストリーム抽出処理は、ターゲットOLSに適用されないネスティングされたSEIメッセージを含むSEI NALユニットを除去することができる。
【0141】
前述のメカニズムの例示的な実装は、以下の通りである。出力レイヤは、出力レイヤセットのうちの出力されるレイヤである。OLSは、指定されたレイヤのセットを含むレイヤのセットであり、レイヤのセット内の1つまたは複数のレイヤが出力レイヤであると指定される。OLSレイヤインデックスは、OLS内のレイヤの、OLS内のレイヤのリストに対するインデックスである。サブビットストリーム抽出処理は、ターゲットOLSインデックスおよびターゲット最高TemporalIdによって決定される、ターゲットセットに属さないビットストリーム内のNALユニットが、ビットストリームから除去される指定された処理であり、出力サブビットストリームは、ターゲットセットに属するビットストリーム内のNALユニットを含む。
【0142】
例示的なビデオパラメータセットのシンタックスは、以下の通りである。
【表1】
【0143】
例示的なシーケンスパラメータセットRBSPのシンタックスは、以下の通りである。
【表2-1】
【表2-2】
【0144】
例示的なDPBパラメータのシンタックスは、以下の通りである。
【表3】
【0145】
例示的な一般HRDパラメータのシンタックスは、以下の通りである。
【表4-1】
【表4-2】
【0146】
例示的なビデオパラメータセットRBSPのセマンティクスは、以下の通りである。each_layer_is_an_ols_flagを1に等しく設定することで、各出力レイヤセットが1つのレイヤのみを含み、ビットストリーム中の各レイヤ自体が出力レイヤセットであり、含まれている単一のレイヤが唯一の出力レイヤであることが指定される。each_layer_is_an_ols_flagを0に等しく設定することで、出力レイヤセットが2つ以上のレイヤを含み得ることが指定される。vps_max_layers_minus1が0に等しい場合、each_layer_is_an_ols_flagの値は、1に等しいと推測される。そうではなく、vps_all_independent_layers_flagが0に等しい場合、each_layer_is_an_ols_flagの値は、0に等しいと推測される。
【0147】
ols_mode_idcを0に等しく設定することで、VPSによって指定されるOLSの総数がvps_max_layers_minus1+1に等しいことが指定され、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有するレイヤを含み、各OLSについて、OLSの最上位レイヤのみが出力される。ols_mode_idcを1に等しく設定することで、VPSによって指定されるOLSの総数がvps_max_layers_minus1+1に等しいことが指定され、i番目のOLSは、両端値を含めて、0~iのレイヤインデックスを有するレイヤを含み、各OLSについて、OLSのすべてのレイヤが出力される。ols_mode_idcを2に等しく設定することで、VPSによって指定されるOLSの総数が明示的にシグナリングされることが指定され、各OLSについて、OLSの最上位レイヤおよび明示的にシグナリングされる下位レイヤのセットが出力される。ols_mode_idcの値は、両端値を含めて、0~2の範囲にあるものとする。ols_mode_idcの値3は、予約されている。vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しい場合、ols_mode_idcの値は、2に等しいと推測される。num_output_layer_sets_minus1+1は、ols_mode_idcが2に等しい場合、VPSによって指定されたOLSの総数を指定する。
【0148】
VPSによって指定されるOLSの総数を指定する変数TotalNumOlssは、以下のように導出される。
【数1】
【0149】
layer_included_flag[i][j]は、ols_mode_idcが2に等しい場合、j番目のレイヤ(nuh_layer_idがvps_layer_id[j]に等しいレイヤ)をi番目のOLSに含めるかどうかを指定する。layer_included_flag[i][j]を1に等しく設定することで、j番目のレイヤをi番目のOLSに含めることを指定する。layer_included_flag[i][j]を0に等しく設定することで、j番目のレイヤをi番目のOLSに含めないことを指定する。
【0150】
i番目のOLSのレイヤ数を指定する変数NumLayersInOls[i]と、i番目のOLSのj番目のレイヤのnuh_layer_id値を指定する変数LayerIdInOls[i][j]とは、以下のように導出される。
【数2】
【0151】
nuh_layer_idがOlsLayeIdx[i][j]に等しいレイヤのOLSレイヤインデックスを指定する変数LayerIdInOls[i][j]は、以下のように導出される。
【数3】
【0152】
各OLSにおける最下位レイヤは、独立したレイヤであるものする。言い換えると、両端値を含めて、0からTotalNumOlss-1までの範囲の各iについて、vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]]の値は、1に等しいものとする。各レイヤは、VPSによって指定された少なくとも1つのOLSに含まれるものとする。言い換えると、両端値を含めて、0からvps_max_layers_minus1までの範囲のkについて、nuh_layer_id nuhLayerIdの特定の値がvps_layer_id [k]のうちの1つに等しい各レイヤについて、iとjの値のペアが少なくとも1つ存在してもよく、ここで、iは両端値を含めて、0からTotalNumOlss-1までの範囲にあり、jは両端値を含めて、NumLayersInOls[i]-1までの範囲にあり、LayerIdInOls[i][j]の値がnuhLayerIdに等しくなるようになっている。OLSの任意のレイヤは、OLSの出力レイヤ、またはOLSの出力レイヤの(直接または間接)参照レイヤであるものとする。
【0153】
vps_output_layer_flag[i][j]は、ols_mode_idcが2に等しい場合、i番目のOLSのj番目のレイヤが出力されるかどうかを指定する。1に等しいvps_output_layer_flag[i]は、i番目のOLSのj番目のレイヤが出力されることを指定する。vps_output_layer_flag[i]を0に等しく設定すると、i番目のOLSのj番目のレイヤが出力されないことを指定する。vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しい場合、vps_output_layer_flag[i]の値は1に等しいと推測される。値1が、i番目のOLSのj番目のレイヤが出力されることを指定し、値0が、i番目のOLSのj番目のレイヤが出力されないことを指定する変数OutputLayerFlag[i][j]は、以下のように導出される。
【数4】
0番目のOLSは、最下位レイヤ(vps_layer_id[0]に等しいnuh_layer_idを有するレイヤ)のみを含み、0番目のOLSについては、含まれるレイヤのみが出力される。
【0154】
vps_extension_flagを0に等しく設定すると、vps_extension_data_flagシンタックス要素がVPS RBSPシンタックス構造中に存在しないことを指定する。vps_extension_flagを1に等しく設定すると、VPS RBSPシンタックス構造中にvps_extension_data_flagシンタックス要素が存在することを指定する。vps_extension_data_flagは、任意の値を有することができる。vps_extension_data_flagの存在および値は、指定されたプロファイルに対するデコーダの適合性に影響を及ぼさない。デコーダは、すべてのvps_extension_data_flagシンタックス要素を無視するものとする。
【0155】
例示的なDPBパラメータのセマンティクスは、以下の通りである。dpb_parameters()シンタックス構造は、DPBサイズ情報と、任意選択で、最大画像並べ替え数および最大待ち時間(MRML)情報とを提供する。各SPSは、1つまたはdpb_parameters()シンタックス構造を含む。SPSの第1のdpb_parameters()シンタックス構造は、DPBサイズ情報とMRML情報の両方を含む。存在する場合、SPSの第2のdpb_parameters()シンタックス構造は、DPBサイズ情報のみを含む。SPSの第1のdpb_parameters()シンタックス構造のMRML情報は、SPSを参照するレイヤがOLSの出力レイヤであるかどうかにかかわらず、そのレイヤに適用される。SPSの第1のdpb_parameters()シンタックス構造のDPBサイズ情報は、SPSを参照するレイヤがOLSの出力レイヤである場合に、そのレイヤに適用される。SPSの第2のdpb_parameters()シンタックス構造に含まれるDPBサイズ情報は、存在する場合、SPSを参照するレイヤがOLSの非出力レイヤである場合に、そのレイヤに適用される。SPSが1つのdpb_parameters()シンタックス構造のみを含む場合、非出力レイヤとしてのレイヤについてのDPBサイズ情報は、出力レイヤとしてのレイヤについてのものと同じであると推測される。
【0156】
例示的な一般HRDパラメータのセマンティクスは、以下の通りである。general_hrd_parameters()シンタックス構造は、HRD動作で使用されるHRDパラメータを提供する。sub_layer_cpb_params_present_flagを1に等しく設定すると、i番目のlayer_level_hrd_parameters()シンタックス構造が、TemporalIdが両端値を含めて0からhrd_max_temporal_id[i]の範囲にあるサブレイヤ表現のためのHRDパラメータを含むことを指定する。sub_layer_cpb_params_present_flagを0に等しく設定すると、i番目のlayer_level_hrd_parameters()シンタックス構造が、TemporalIdがhrd_max_temporal_id[i]のみに等しいサブレイヤ表現のためのHRDパラメータを含むことを指定する。vps_max_sub_layers_minus1が0に等しい場合、sub_layer_cpb_params_present_flagの値は0に等しいと推測される。sub_layer_cpb_params_present_flagが0に等しい場合、TemporalIdが両端値を含めて0からhrd_max_temporal_id[i]-1の範囲にあるサブレイヤ表現のためのHRDパラメータは、TemporalIdがhrd_max_temporal_id[i]に等しいサブレイヤ表現のためのものと同じであると推測される。これらは、layer_level_hrd_parametersシンタックス構造においてfixed_pic_rate_general_flag[i]シンタックス要素から始まって条件文if(general_vcl_hrd_params_present_flag)の直ぐ下のsub_layer_hrd_parameters(i)シンタックス構造までのHRDパラメータを含む。num_layer_hrd_params_minus1+1は、general_hrd_parameters()シンタックス構造中に存在するlayer_level_hrd_parameters()シンタックス構造の数を指定する。num_layer_hrd_params_minus1の値は、両端値を含めて、0~63の範囲にあるものとする。hrd_cpb_cnt_minus1+1は、CVSのビットストリーム中の代替のCPB仕様の数を指定する。hrd_cpb_cnt_minus1の値は、両端値を含めて、0~31の範囲にあるものとする。hrd_max_temporal_id[i]は、HRDパラメータがi番目のlayer_level_hrd_parameters()シンタックス構造に含まれる最上位サブレイヤ表現のTemporalIdを指定する。hrd_max_temporal_id[i]の値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲にあるものとする。vps_max_sub_layers_minus1が0に等しい場合、hrd_max_temporal_id[i]の値は0に等しいと推測される。layer_level_hrd_idx[i][j]は、i番目のOLSのj番目のレイヤに適用されるlayer_level_hrd_parameters()シンタックス構造のインデックスを指定する。layer_level_hrd_idx[[i][j]の値は、両端値を含めて、0からnum_layer_hrd_params_minus1までの範囲にあるものとする。存在しない場合、layer_level_hrd_idx[[0][0]の値は0に等しいと推測される。
【0157】
例示的なサブビットストリーム抽出処理は、以下の通りである。この処理への入力は、ビットストリームinBitstream、ターゲットOLSインデックスtargetOlsIdx、およびターゲット最高TemporalId値tIdTargetである。この処理の出力は、サブビットストリームoutBitstreamである。入力ビットストリームに対するビットストリーム適合性の要件は、VPSによって指定されるOLSのリストのインデックスに等しいtargetOlsIdxと、両端値を含めて、0~6の範囲の任意の値に等しいtIdTargetとを入力とした、ビットストリームに関して本節で指定される処理の出力であり、以下の条件を満たす任意の出力サブビットストリームが適合性ビットストリームであることである。出力サブビットストリームは、nuh_layer_idがLayerIdInOls[targetOlsIdx]におけるnuh_layer_id値のそれぞれに等しい少なくとも1つのVCL NALユニットを含むべきである。出力サブビットストリームは、TemporalIdがtIdTargetに等しい少なくとも1つのVCL NALユニットを含むべきである。適合性ビットストリームは、TemporalIdが0に等しい1つまたは複数のコーディングスライスNALユニットを含むが、nuh_layer_idが0に等しいコーディングスライスNALユニットを含む必要はない。
【0158】
出力サブビットストリームOutBitstreamは、以下のように導出される。ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一となるように設定される。TemporalIdがtIdTargetよりも大きいすべてのNALユニットをoutBitstreamから除去する。nuh_layer_idがリストLayerIdInOls[targetOlsIdx]に含まれないすべてのNALユニットをoutBitstreamから除去する。nesting_ols_flagが1に等しく、かつNestingOlsIdx[i]がtargetOlsIdxに等しくなるように、iの値が両端値を含めて0からnesting_num_olss_minus1までの範囲にないスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。targetOlsIdxが0よりも大きい場合、payloadTypeが0(バッファリング期間)、1(画像タイミング)、または130(デコードユニット情報)に等しい非スケーラブルネスト化SEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。
【0159】
例示的なHRDの一般的な態様は、以下の通りである。本セクションは、ビットストリームおよびデコーダ適合性をチェックするためのHRDおよびその使用法を指定する。ビットストリーム適合性試験のセットは、ビットストリーム全体と呼ばれるビットストリームの適合性をチェックするために利用され、entireBitstreamと表記される。ビットストリーム適合性試験のセットは、VPSによって指定された各OLSおよび各OLSの時間サブセットの適合性をテストするためのものである。各試験について、以下の順序付けられた段階が列挙された順序で適用される。
【0160】
targetOpと表記されるテスト対象の動作ポイントは、OLSインデックスopOlsIdxおよび最高TemporalId値opTidを有するターゲットOLSを選択することによって選択される。opOlsIdxの値は、両端値を含めて、0からTotalNumOlss-1までの範囲にある。opTidの値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲にある。opOlsIdxおよびopTidの値は、entireBitstream、opOlsIdx、およびopTidを入力としてサブビットストリーム抽出処理を呼び出すことによる出力であるサブビットストリームBitstreamToDecodeが以下の条件を満たすような値である。nuh_layer_idが、BitstreamToDecodeのLayerIdInOls[opOlsIdx]のnuh_layer_id値のそれぞれに等しい少なくとも1つのVCL NALユニットが存在する。TemporalIdが、BitstreamToDecodeのopTidに等しい少なくとも1つのVCL NALユニットが存在する。
【0161】
TargetOlsIdxおよびHtidの値は、targetOpのopOlsIdxおよびopTidにそれぞれ等しく設定される。ScIdxの値が選択される。選択されたScIdxは、両端値を含めて、0からhrd_cpb_cnt_minus1までの範囲にあるものとする。TargetOlsIdxに適用可能なバッファリング期間SEIメッセージに関連付けられたBitstreamToDecode内のアクセスユニット(TargetLayerBitstreamに存在するか本明細書で指定されていない外部メカニズムを通じて利用可能)は、HRD初期化点として選択され、ターゲットOLSの各レイヤに対してアクセスユニット0と呼ばれる。
【0162】
後続の段階は、ターゲットOLS内のOLSレイヤインデックスTargetOlsLayerIdxを有する各レイヤに適用される。ターゲットOLSに1つのレイヤのみがある場合、テスト対象レイヤビットストリームTargetLayerBitstreamは、BitstreamToDecodeと同一に設定される。そうでない場合、TargetLayerBitstreamは、BitstreamToDecode、TargetOlsIdx、およびTargetOlsLayerIdxを入力としてレイヤビットストリームを導出するためのデマルチプレクス処理を呼び出すことによって導出され、出力はTargetLayerBitstreamに割り当てられる。
【0163】
TargetLayerBitstreamに適用可能なlayer_level_hrd_parameters()シンタックス構造およびsub_layer_hrd_parameters()シンタックス構造は、以下のように選択される。VPS内の(またはユーザ入力などの外部メカニズムを通じて提供される)layer_level_hrd_idx[TargetOlsIdx][TargetOlsLayerIdx]番目のlayer_level_hrd_parameters()シンタックス構造が選択される。選択されたlayer_level_hrd_parameters()シンタックス構造において、BitstreamToDecodeがタイプIビットストリームである場合、条件if(general_vcl_hrd_params_present_flag)の直ぐ後に続くsub_layer_hrd_parameters(Htid)シンタックス構造が選択され、変数NalHrdModeFlagが0に等しく設定される。そうでない場合(BitstreamToDecodeがタイプIIビットストリームである場合)、条件if(general_vcl_hrd_params_present_flag)(この場合、変数NalHrdModeFlagは0に等しく設定される)または条件if(general_nal_hrd_params_present_flag)(この場合、変数NalHrdModeFlagは1に等しく設定される)のいずれかの直ぐ後に続くsub_layer_hrd_parameters(Htid)シンタックス構造が選択される。BitstreamToDecodeがタイプIIビットストリームであり、NalHrdModeFlagが0に等しい場合、フィラーデータNALユニットを除くすべての非VCL NALユニット、ならびにNALユニットストリームからバイトストリームを形成するすべてのleading_0_8bits、0_byte、start_code_prefix_one_3bytes、およびtrailing_0_8ビットシンタックス要素は、存在する場合、TargetLayerBitstreamから廃棄され、残ったビットストリームがTargetLayerBitstreamに割り当てられる。
【0164】
decoding_unit_hrd_params_present_flagが1に等しい場合、CPBは、アクセスユニットレベル(この場合、変数DecodingUnitHrdFlagは0に等しく設定される)またはデコードユニットレベル(この場合、変数DecodingUnitHrdFlagは1に等しく設定される)のいずれかで動作するようにスケジュールされる。そうでない場合、DecodingUnitHrdFlagは0に等しく設定され、CPBはアクセスユニットレベルで動作するようにスケジュールされる。アクセスユニット0から始まるTargetLayerBitstream内の各アクセスユニットについて、アクセスユニットに関連付けられ、TargetOlsIdxおよびTargetOlsLayerIdxに適用されるバッファリング期間SEIメッセージ(TargetLayerBitstreamに存在するか、外部メカニズムを通じて利用可能)が選択され、アクセスユニットに関連付けられ、TargetOlsIdxおよびTargetOlsLayerIdxに適用される画像タイミングSEIメッセージ(TargetLayerBitstreamに存在するか、外部メカニズムを通じて利用可能)が選択され、そしてDecodingUnitHrdFlagが1に等しく、decoding_unit_cpb_params_in_pic_timing_sei_flagが0に等しい場合、アクセスユニット内のデコードユニットに関連付けられ、TargetOlsIdxおよびTargetOlsLayerIdxに適用されるデコードユニット情報SEIメッセージ(TargetLayerBitstreamに存在するか、外部メカニズムを通じて利用可能)が選択される。
【0165】
各適合性試験は、上記段階のそれぞれにおける1つのオプションの組合せを含む。ある段階に対して2つ以上のオプションが存在する場合、任意の特定の適合性試験に対して、1つのオプションのみが選択される。すべての段階のすべての可能な組合せが、適合性試験の全セットを形成する。テスト対象の各動作ポイントについて、実行されるビットストリーム適合性試験の数は、n0*n1*n2*n3に等しく、ここで、n0、n1、n2、およびn3の値は、次のように指定される。n1は、hrd_cpb_cnt_minus1+1に等しく、n1は、バッファリング期間SEIメッセージに関連付けられたBitstreamToDecode内のアクセスユニットの数であり、n2は、次のように導出される。BitstreamToDecodeがタイプIビットストリームである場合、n0は1に等しい。そうでない場合(BitstreamToDecodeがタイプIIビットストリームである場合)、n0は2に等しい。n3は次のように導出される。decoding_unit_hrd_params_present_flagが0に等しい場合、n3は1に等しい。そうでない場合、n3は2に等しい。
【0166】
HRDは、ビットストリームデマルチプレクサ(任意選択で存在する)と、各レイヤのコーディング画像バッファ(CPB)と、各レイヤの瞬時デコード処理と、各レイヤのサブDPBを含むデコード画像バッファ(DPB)と、出力クロッピングと、を含む。
【0167】
一例では、HRDは以下のように動作する。HRDはデコードユニットで0に初期化され、DPBの各CPBおよび各サブDPBは空となるように設定される。各サブDPBのサブDPBフルネスは、0に等しく設定される。初期化後、HRDは、その後のバッファリング期間SEIメッセージによって再び初期化されることはない。指定された到着スケジュールに従って各CPBに流入したデコードユニットに関連付けられたデータは、HSSによって配信される。各デコードユニットに関連付けられたデータは、デコードユニットのCPB除去時間に瞬時デコード処理によって除去され、瞬時にデコードされる。デコードされた各画像は、DPBに配置される。デコード画像は、インター予測参照にもはや不要となり、出力にもはや不要となったときに、DPBから除去される。
【0168】
一例では、レイヤビットストリームを導出するためのデマルチプレクス処理は、以下の通りである。この処理への入力は、ビットストリームinBitstream、ターゲットOLSインデックスtargetOlsIdx、およびターゲットOLSレイヤインデックスtargetOlsLayerIdxである。この処理の出力は、レイヤビットストリームoutBitstreamである。出力レイヤビットストリームoutBitstreamは、以下のように導出される。ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一となるように設定される。nuh_layer_idがLayerIdInOls[targetOlsIdx][targetOlsLayerIdx]に等しくないすべてのNALユニットをoutBitstreamから除去する。NestingOlsLayerIdx[i][j]がtargetOlsLayerIdxに等しくなるように、nesting_ols_flagが1に等しいスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去し、両端値を含めて、0からnesting_num_ols_minus1まで、および両端値を含めて、0からnesting_num_olss_layers_minus1[i]までの範囲にそれぞれiおよびjの値がない。NestingOlsLayerIdx[i][j]がtargetOlsLayerIdxよりも小さくなるように、nesting_ols_flagが1に等しいスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去し、両端値を含めて、0からnesting_num_olss_minus1まで、および両端値を含めて、0からnesting_num_ols_layers_minus1[i]までの範囲にそれぞれiおよびjの値がある。NestingLayerId[i]がNestingNumLayers[targetOlsIdx][targetOlsLayerIdx]に等しくなるように、nesting_ols_flagが0に等しく、かつ両端値を含めて、0からLayerIdInOls-1までの範囲にiの値がないスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。NestingLayerId[i]がNestingNumLayers[targetOlsIdx][targetOlsLayerIdx]よりも小さくなるように、nesting_ols_flagが0に等しく、かつス両端値を含めて、0からLayerIdInOls-1までの範囲にiの少なくとも1つの値があるスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。
【0169】
例示的なバッファリング期間SEIメッセージシンタックスは、以下の通りである。
【表5】
【0170】
例示的なスケーラブルネスティングSEIメッセージシンタックスは、以下の通りである。
【表6-1】
【表6-2】
【0171】
例示的な一般的なSEIペイロードセマンティクスは、以下の通りである。以下は、非スケーラブルネスト化SEIメッセージの適用可能なレイヤに(OLSのコンテキストにおいて、または一般的に)適用される。非スケーラブルネスト化SEIメッセージの場合、payloadTypeが0(バッファリング期間)、1(画像タイミング)、または130(デコードユニット情報)に等しい場合、非スケーラブルネスト化SEIメッセージは、0番目のOLSのコンテキストにおいて最下位レイヤのみに適用される。非スケーラブルネスト化SEIメッセージの場合、payloadTypeがVclAssociatedSeiListの中のいずれかの値に等しい場合、非スケーラブルネスト化SEIメッセージは、VCL NALユニットのnuh_layer_idが、SEIメッセージを含むSEI NALユニットのnuh_layer_idに等しいレイヤにのみ適用される。
【0172】
例示的なバッファリング期間SEIメッセージのセマンティクスは、以下の通りである。バッファリング期間SEIメッセージは、デコード順で関連付けられたアクセスユニットの位置でHRDを初期化するための初期CPB除去遅延および初期CPB除去遅延オフセット情報を提供する。バッファリング期間SEIメッセージが存在する場合において、ある画像が、0に等しいTemporalIdを有し、RASLまたはRADL(random access decodable leading)画像でないときは、その画像は、notDiscardablePic画像であると言われる。現在の画像がデコード順でビットストリームの最初の画像でない場合、prevNonDiscardablePicを、TemporalIdが0に等しく、RASLまたはRADL画像ではない、デコード順で先行する画像であるとする。
【0173】
バッファリング期間SEIメッセージの存在は、以下のように指定される。NalHrdBpPresentFlagが1に等しいかまたはVclHrdBpPresentFlagが1に等しい場合、CVS内の各アクセスユニットに対して以下が適用される。アクセスユニットがIRAPまたはGradual Decoder Refresh(GDR)アクセスユニットである場合、動作ポイントに適用可能なバッファリング期間SEIメッセージは、アクセスユニットに関連付けられるものとする。そうでない場合、アクセスユニットがnotDiscardablePicを含む場合、動作ポイントに適用可能なバッファリング期間SEIメッセージは、アクセスユニットに関連付けられてもよく、関連付けられなくてもよい。そうでない場合、アクセスユニットは、動作ポイントに適用可能なバッファリング期間SEIメッセージに関連付けられないものとする。そうでない場合(NalHrdBpPresentFlag とVclHrdBpPresentFlagの両方が0に等しい場合)、CVS内のどのアクセスユニットも、バッファリング期間SEIメッセージに関連付けられないものとする。いくつかのアプリケーションでは、バッファリング期間SEIメッセージが頻繁に存在することが望ましい場合がある(例えば、IRAP画像もしくは非IRAP画像におけるランダムアクセスの場合、またはビットストリームスプライシングの場合)。アクセスユニットの画像がバッファリング期間SEIメッセージに関連付けられている場合、アクセスユニットは、CVSに存在するレイヤのそれぞれの画像を有するものとし、アクセスユニットの各画像は、バッファリング期間SEIメッセージに関連付けられるものとする。
【0174】
bp_max_sub_layers_minus1+1は、バッファリング期間SEIメッセージでCPB除去遅延とCBP除去オフセットが示される時間サブレイヤの最大数を指定する。bp_max_sub_layers_minus1の値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲にあるものとする。bp_cpb_cnt_minus1+1は、bp_nal_hrd_params_present_flagが1に等しい場合のi番目の時間サブレイヤのnal_initial_cpb_removal_delay[i][j]とnal_initial_cpb_removal_offset[i][j]のシンタックス要素ペアの数を指定し、bp_vcl_hrd_params_present_flagが1に等しい場合のi番目の時間サブレイヤのvcl_initial_cpb_removal_delay[i][j]とvcl_initial_cpb_removal_offset[i][j]のシンタックス要素ペアの数を指定する。bp_cpb_cnt_minus1の値は、両端値を含めて、0~31の範囲にあるものとする。bp_cpb_cnt_minus1の値は、hrd_cpb_cnt_minus1の値に等しいものとする。
【0175】
例示的な画像タイミングSEIメッセージのセマンティクスは、以下の通りである。画像タイミングSEIメッセージは、SEIメッセージに関連付けられたアクセスユニットのCPB除去遅延およびDPB出力遅延情報を提供する。現在のアクセスユニットに適用可能なバッファリング期間SEIメッセージのbp_nal_hrd_params_present_flagまたはbp_vcl_hrd_params_present_flagが1に等しい場合、変数CpbDpbDelaysPresentFlagは1に等しく設定される。そうでない場合、CpbDpbDelaysPresentFlagは0に等しく設定される。画像タイミングSEIメッセージの存在は、以下のように指定される。CpbDpbDelaysPresentFlagが1に等しい場合、画像タイミングSEIメッセージは、現在のアクセスユニットに関連付けられるものとする。そうでない場合(CpbDpbDelaysPresentFlagが0に等しい場合)、現在のアクセスユニットに関連付けられた画像タイミングSEIメッセージは存在しないものとする。画像タイミングSEIメッセージシンタックス中のTemporalIdは、画像タイミングSEIメッセージを含むSEI NALユニットのTemporalIdである。pt_max_sub_layers_minus1+1は、CPB除去遅延情報が画像タイミングSEIメッセージに含まれる最上位サブレイヤ表現のTemporalIdを指定する。pt_max_sub_layers_minus1の値は、両端値を含めて、0からvps_max_sub_layers_minus1までの範囲にあるものとする。
【0176】
例示的なスケーラブルネスティングSEIメッセージのセマンティクスは、以下の通りである。スケーラブルネスティングSEIメッセージは、SEIメッセージを、特定のOLSのコンテキスト内の特定のレイヤ、またはOLSのコンテキスト内にない特定のレイヤと関連付けるためのメカニズムを提供する。スケーラブルネスティングSEIメッセージは、1つまたは複数のSEIメッセージを含む。スケーラブルネスティングSEIメッセージに含まれるSEIメッセージは、スケーラブルネスト化SEIメッセージとも呼ばれる。ビットストリーム適合性の要件は、スケーラブルネスティングSEIメッセージ中にSEIメッセージを含めることに対して以下の制限が適用されることである。payloadTypeが132(デコードピクチャハッシュ)または133(スケーラブルネスティング)に等しいSEIメッセージは、スケーラブルネスティングSEIメッセージに含まれないものとする。スケーラブルネスティングSEIメッセージが、バッファリング期間、画像タイミング、またはデコードユニット情報SEIメッセージを含む場合、スケーラブルネスティングSEIメッセージは、payloadTypeが0(バッファリング期間)、1(画像タイミング)、または130(デコードユニット情報)に等しくないいかなる他のSEIメッセージも含まないものとする。
【0177】
ビットストリーム適合性の要件は、スケーラブルネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeの値に対して以下の制限が適用されることである。スケーラブルネスティングSEIメッセージが、payloadTypeが0(バッファリング期間)、1(画像タイミング)、130(デコードユニット情報)、145(従属RAP指示)、または168(フレームフィールド情報)に等しいSEIメッセージを含む場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、nal_unit_typeがPREFIX_SEI_NUTに等しいものとする。スケーラブルネスティングSEIメッセージが、payloadTypeが132(デコード画像ハッシュ)に等しいSEIメッセージを含む場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、nal_unit_typeがSUFFIX_SEI_NUTに等しいものとする。
【0178】
nesting_ols_flagを1に設定して、スケーラブルネスト化SEIメッセージが特定のOLSのコンテキストで特定のレイヤに適用されることを指定する。nesting_ols_flagを0に設定して、スケーラブルネスト化SEIメッセージが一般に(OLSのコンテキストではなく)特定のレイヤに適用されることを指定する。ビットストリーム適合性の要件は、以下の制限がnesting_ols_flagの値に適用されることである。スケーラブルネスティングSEIメッセージが、payloadTypeが0(バッファリング期間)、1(画像タイミング)、または130(デコードユニット情報)に等しいSEIメッセージを含む場合、nesting_ols_flagの値は1に等しいものとする。スケーラブルネスティングSEIメッセージが、payloadTypeがVclAssociatedSeiListの値に等しいSEIメッセージを含む場合、nesting_ols_flagの値は0に等しいものとする。nesting_num_olss_minus1+1は、スケーラブルネスト化SEIメッセージが適用されるOLSの数を指定する。nesting_num_olss_minus1の値は、両端値を含めて、0からTotalNumOlss-1までの範囲にあるものとする。nesting_ols_idx_delta_minus1[i]は、nesting_ols_flagが1に等しい場合にスケーラブルネスト化SEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する変数NestingOlsIdx[i]を導出するために使用される。nesting_ols_idx_delta_minus1[i]の値は、両端値を含めて、0からTotalNumOlss-2までの範囲にあるものとする。変数NestingOlsIdx[i]は、以下のように導出される。
【数5】
【0179】
nesting_num_ols_layers_minus1[ i ]+1は、NestingOlsIdx[i]番目のOLSのコンテキストにおいてスケーラブルネスト化SEIメッセージが適用されるレイヤの数を指定する。nesting_num_ols_layers_minus1[i]の値は、両端値を含めて、0からNumLayersInOls[NestingOlsIdx[i]]-1までの範囲にあるものとする。nesting_ols_layer_idx_delta_minus1[i][j]は、nesting_ols_flagが1に等しい場合に、NestingOlsIdx[i]番目のOLSのコンテキストでてスケーラブルネスト化SEIメッセージが適用されるj番目のレイヤのOLSレイヤインデックスを指定する変数NestingOlsLayerIdx[i][j]を導出するために使用される。nesting_ols_layer_idx_delta_minus1[i]の値は、両端値を含めて、0からNumLayersInOls[nestingOlsIdx[i]]-2までの範囲にあるものとする。変数NestingOlsLayerIdx[i][j]は、以下のように導出される。
【数6】
【0180】
両端値を含めて、0からnesting_num_olss_minus1までの範囲のiについてLayerIdInOls[NestingOlsIdx[i]][NestingOlsLayerIdx[i][0]]のすべての値の中で最も小さい値は、現在のSEI NALユニット(スケーラブルネスティングSEIメッセージを含むSEI NALユニット)のnuh_layer_idに等しいものとする。nesting_all_layers_flagは、スケーラブルネスト化SEIメッセージが、nuh_layer_idが現在のSEI NALユニットのnuh_layer_idよりも大きいかまたはそれに等しいすべてのレイヤに一般的に適用されることを指定するために1に設定される。nesting_all_layers_flagは、スケーラブルネスト化SEIメッセージが、nuh_layer_idが現在のSEI NALユニットのnuh_layer_idよりも大きいかまたはそれに等しいすべてのレイヤに一般的に適用されてもされなくてもよいことを指定するために、0に設定される。nesting_num_layers_minus1+1は、スケーラブルネスト化SEIメッセージが一般的に適用されるレイヤの数を指定する。nesting_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である。nesting_ols_flagが0に等しい場合、スケーラブルネスト化SEIメッセージが一般的に適用されるレイヤの数を指定する変数NestingNumLayersと、スケーラブルネスト化SEIメッセージが一般的に適用されるレイヤのnuh_layer_id値のリストを指定する、両端値を含めて、0からNestingNumLayers-1までの範囲のiについてのリストNestingLayerId[i]とは、以下のように導出され、ここで、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。
【数7】
【0181】
nesting_num_seis_minus1+1は、スケーラブルネスト化SEIメッセージの数を指定する。nesting_num_seis_minus1の値は、両端値を含めて、0~63の範囲にあるものとする。nesting_0_bitは0に等しいものとする。
【0182】
図9は、例示的なビデオコーディングデバイス900の概略図である。ビデオコーディングデバイス900は、本明細書に記載される開示された実施例/実施形態を実装するのに適している。ビデオコーディングデバイス900は、下流ポート920、上流ポート950、ならびに/あるいは、ネットワークを介して上流および/または下流にデータを通信するための送信機および/または受信機を含むトランシーバユニット(Tx/Rx)910を備える。ビデオコーディングデバイス900はまた、データを処理するための論理ユニットおよび/または中央処理ユニット(CPU)を含むプロセッサ930と、データを記憶するためのメモリ932とを含む。ビデオコーディングデバイス900はまた、電気、光、またはワイヤレス通信ネットワークを介したデータの通信のために上流ポート950および/または下流ポート920に結合された電気、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、および/またはワイヤレス通信コンポーネントを備えることができる。ビデオコーディングデバイス900はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)デバイス960を含み得る。I/Oデバイス960は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力デバイスを含み得る。I/Oデバイス960はまた、キーボード、マウス、トラックボールなどの入力デバイス、および/またはこのような出力デバイスと対話するための対応するインターフェースを含み得る。
【0183】
プロセッサ930は、ハードウェアおよびソフトウェアによって実装される。プロセッサ930は、1つまたは複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装されてもよい。プロセッサ930は、下流ポート920、Tx/Rx910、上流ポート950、およびメモリ932と通信する。プロセッサ930は、コーディングモジュール914を備える。コーディングモジュール914は、マルチレイヤビデオシーケンス600、マルチレイヤビデオシーケンス700、および/またはビットストリーム800を利用することができる方法100、1000、および1100など、本明細書に記載される開示された実施形態を実装する。コーディングモジュール914はまた、本明細書に記載される任意の他の方法/メカニズムを実装することができる。さらに、コーディングモジュール914は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはHRD500を実装することができる。例えば、コーディングモジュール914は、HRDを実装するために利用されてもよい。さらに、コーディングモジュール914は、パラメータをビットストリームにエンコードするために利用され、HRD適合性チェック処理をサポートすることができる。したがって、コーディングモジュール914は、上述の問題のうちの1つまたは複数に対処するためのメカニズムを実行するように構成されてもよい。したがって、コーディングモジュール914は、ビデオデータをコーディングする場合に、ビデオコーディングデバイス900に追加の機能および/またはコーディング効率を提供させる。したがって、コーディングモジュール914は、ビデオコーディングデバイス900の機能を向上させるとともに、ビデオコーディング技術に特有の問題にも対処する。さらに、コーディングモジュール914は、ビデオコーディングデバイス900の異なる状態への変換をもたらす。あるいは、コーディングモジュール914は、メモリ932に記憶された、プロセッサ930によって実行される命令として(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)実装することができる。
【0184】
メモリ932は、ディスク、テープドライブ、ソリッドステートドライブ、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、ターナリ連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1つまたは複数のメモリタイプを備える。メモリ932は、オーバーフローデータ記憶デバイスとして使用され、プログラムが実行のために選択された場合、そのようなプログラムを記憶し、プログラム実行中に読み取られる命令およびデータを記憶することができる。
【0185】
図10は、すべてのOLSに適用されるシーケンスレベルHRDパラメータを含む、ビットストリーム800などのビットストリームにビデオシーケンスをエンコードする例示的な方法1000のフローチャートである。方法1000は、方法100を実行する場合に、コーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス900などのエンコーダによって利用されてもよい。さらに、方法1000は、HRD500上で動作することができ、したがって、マルチレイヤビデオシーケンス600および/または700に対して適合性試験を実行することができる。
【0186】
方法1000は、エンコーダがビデオシーケンスを受信し、例えばユーザ入力に基づいて、そのビデオシーケンスをマルチレイヤビットストリームにエンコードすることを決定したときに開始することができる。段階1001において、エンコーダは、1つまたは複数のOLSを含むビットストリームをエンコードする。OLSのそれぞれは、1つまたは複数のコーディングビデオシーケンスを含み得る。
【0187】
段階1003において、エンコーダは、VPSをビットストリームにエンコードする。VPSは、段階1001においてエンコードされるOLSを指定する。さらに、VPSは、VPSによって指定されるすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む。例えば、シーケンスレベルHRDパラメータは、OLSに含まれるコーディングビデオシーケンスのためのHRD機能性を記述することができる。具体例では、VPSのシーケンスレベルHRDパラメータは、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれる。general_hrd_parametersシンタックス構造は、HRD動作で使用されるパラメータを提供する。HRD動作は、ビットストリーム適合性試験のセットを含み得る。VPSのシーケンスレベルHRDパラメータは、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み得る。decoding_unit_hrd_params_present_flagは、HRDがAUレベルまたはDUレベルで動作するようにスケジュールされるときに、1に設定され得る。decoding_unit_hrd_params_present_flagは、HRDがAUレベルで動作するようにスケジュールされるときに、0に設定され得る。シーケンスレベルHRDパラメータはまた、HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み得る。hrd_cpb_cnt_minus1+1は、HRDによって使用され得るCPB配信スケジュール561などの代替のCPB配信スケジュールの数を指定することができる。hrd_cpb_cnt_minus1の値は、両端値を含めて、0~31の範囲に制約される。VPSは、サブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)をさらに含み得る。sublayer_cpb_params_present_flagは、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され得る。sublayer_cpb_params_present_flagは、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定され得る。見て分かるように、VPSは多くのHRDパラメータを含み得る。VPSは、ビットストリームにおいて1回シグナリングされ得る。したがって、シーケンスレベルHRDパラメータも1回シグナリングされる。さらに、シーケンスレベルHRDパラメータは、すべてのOLSで同じになるように制約されてもよい。このようにして、冗長なシグナリングが低減され、コーディング効率が向上する。
【0188】
段階1005において、HRDは、VPSからシーケンスレベルHRDパラメータを取得する。HRDは、次いで、シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行する。例えば、HRDは、general_hrd_parametersシンタックス構造からシーケンスレベルHRDパラメータを取得することができる。HRDは、DUレベルまたはAUレベルに対して適合性試験を実行するかどうかを決定するために、decoding_unit_hrd_params_present_flagを取得することができる。HRDはまた、適合性試験を実行するときに利用すべきCPB配信スケジュールの数を決定するためにhrd_cpb_cnt_minus1を利用することができる。HRDはまた、sublayer_cpb_params_present_flagを利用して、特定のサブレイヤが固有のHRDパラメータを有するかどうか、またはそのようなサブレイヤが他のサブレイヤとHRDパラメータを共有するかどうかを決定することができる。次いで、HRDは、このデータに基づいてHRD試験を実行することができる。HRDは、エンコーダと同じプロセッサ上で動作することができる。別の例では、HRDは、エンコーダと同じシャーシ内のプロセッサ上で動作することができる。別の例では、HRDは、エンコーダと同じネットワーク内のプロセッサ上で動作することができる。シーケンスレベルHRDパラメータはVPSに含まれるため、シーケンスレベルHRDパラメータは、HRDによって1回読み取られてもよく、これにより、HRD動作を簡略化することができる。
【0189】
段階1007において、エンコーダは、デコーダに向けて通信するためのビットストリームを記憶する。ビットストリーム中のシーケンスレベルHRDパラメータの存在は、デコーダが、CPB配信スケジュール、DPB配信スケジュールなどの配信スケジュールに従ってビットストリームをデコードすることが可能であることを示すことができる。
【0190】
図11は、例えばHRD500などのHRDによって適合性からチェックされるすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む、ビットストリーム800などのビットストリームからビデオシーケンスをデコードする例示的な方法1100のフローチャートである。方法1100は、方法100を実行する場合に、コーデックシステム200、デコーダ400、および/またはビデオコーディングデバイス900などのデコーダによって利用されてもよい。さらに、方法1100は、マルチレイヤビデオシーケンス600および/または700を含むビットストリーム上で動作してもよい。
【0191】
方法1100は、デコーダが、例えば方法1000の結果として、マルチレイヤビデオシーケンスを表すコーディングデータのビットストリームを受信し始めるときに開始することができる。段階1101において、デコーダは、1つまたは複数のOLSを含むビットストリームを受信する。OLSはそれぞれ、1つまたは複数のコーディングされたビデオシーケンスを含み得る。ビットストリームはまた、VPSを含む。VPSは、OLSを指定する。さらに、VPSは、VPSによって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む。ビットストリーム中のシーケンスレベルHRDパラメータの存在は、デコーダが、CPBおよび/またはDPB配信スケジュールなどの配信スケジュールに従ってビットストリームをデコードすることが可能であることを示す。シーケンスレベルHRDパラメータは、general_hrd_parametersシンタックス構造に含まれてもよい。general_hrd_parametersシンタックス構造は、HRD動作で使用されるパラメータを提供することができる。HRD動作は、エンコーダ上で動作するHRDによって実行されるビットストリーム適合性試験のセットを含み得る。シーケンスレベルHRDパラメータは、decoding_unit_hrd_params_present_flagを含み得る。decoding_unit_hrd_params_present_flagは、HRDがAUレベルまたはDUレベルで動作するようにスケジュールされるときに、1に設定されてもよい。decoding_unit_hrd_params_present_flagは、HRDがAUレベルで動作するようにスケジュールされるときに、0に設定されてもよい。シーケンスレベルHRDパラメータは、hrd_cpb_cnt_minus1シンタックス要素を含むこともできる。hrd_cpb_cnt_minus1+1は、HRDによって使用され得るCPB配信スケジュール561などの代替のCPB配信スケジュールの数を指定することができる。hrd_cpb_cnt_minus1の値は、両端値を含めて、0~31の範囲に制約される。VPSは、sublayer_cpb_params_present_flagをさらに含み得る。sublayer_cpb_params_present_flagは、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され得る。sublayer_cpb_params_present_flagは、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定され得る。見て分かるように、VPSは多くのHRDパラメータを含み得る。VPSは、ビットストリームにおいて1回シグナリングされ得る。したがって、シーケンスレベルHRDパラメータも1回シグナリングされる。さらに、シーケンスレベルHRDパラメータは、すべてのOLSで同じになるように制約されてもよい。このようにして、冗長なシグナリングが低減され、これにより、コーディング効率が向上し、デコーダによって受信されるビットストリームのサイズが低減する。
【0192】
段階1103において、デコーダは、OLSに含まれるコーディングビデオシーケンスから画像をデコードすることができる。段階1105において、デコーダは、デコードされたビデオシーケンスの一部として表示するためにデコードされた画像を転送することができる。
【0193】
図12は、すべてのOLSに適用されるシーケンスレベルHRDパラメータを含むビットストリームを使用してビデオシーケンスをコーディングするための例示的なシステム1200の概略図である。システム1200は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディングデバイス900などのエンコーダおよびデコーダによって実装されてもよい。さらに、システム1200は、HRD500を利用して、マルチレイヤビデオシーケンス600、マルチレイヤビデオシーケンス700、および/またはビットストリーム800に対して適合性試験を実行することができる。加えて、システム1200は、方法100、1000、および/または1100を実装する場合に利用されてもよい。
【0194】
システム1200は、ビデオエンコーダ1202を含む。ビデオエンコーダ1202は、1つまたは複数のOLSを含むビットストリームをエンコードするためのエンコードモジュール1203を備える。エンコードモジュール1203はさらに、OLSを指定するVPSをビットストリームにエンコードするためのものであり、VPSは、VPSによって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータを含む。ビデオエンコーダ1202は、シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行するためのHRDモジュール1205をさらに備える。ビデオエンコーダ1202は、デコーダに向けて通信するためのビットストリームを記憶するための記憶モジュール1206をさらに備える。ビデオエンコーダ1202は、ビットストリームをビデオデコーダ1210に向けて送信するための送信モジュール1207をさらに備える。ビデオエンコーダ1202は、方法1000の段階のいずれかを実行するようにさらに構成されてもよい。
【0195】
システム1200はまた、ビデオデコーダ1210を含む。ビデオデコーダ1210は、1つまたは複数のOLSと、OLSを指定し、VPSによって指定されたすべてのOLSに適用されるシーケンスレベルHRDパラメータを含むVPSと、を含むビットストリームを受信するための受信モジュール1211を備える。ビデオデコーダ1210は、OLSから画像をデコードするためのデコードモジュール1213をさらに備える。ビデオデコーダ1210は、デコードされたビデオシーケンスの一部として表示するために画像を転送するための転送モジュール1215をさらに備える。ビデオデコーダ1210は、方法1100の段階のいずれかを実行するようにさらに構成されてもよい。
【0196】
第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体を除いて、介在するコンポーネントがない場合、第1のコンポーネントは、第2のコンポーネントに直接結合される。第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体以外の介在するコンポーネントが存在する場合、第1のコンポーネントは、第2のコンポーネントに間接的に結合される。用語「結合された」およびその変形は、直接結合されたものおよび間接的に結合されたものの両方を含む。用語「約」の使用は、特に明記しない限り、後続する数の±10%を含む範囲を意味する。
【0197】
本明細書に記載される例示的な方法の段階は、必ずしも記載された順序で実行される必要はないことも理解されるべきであり、このような方法の段階の順序は、単なる例示であると理解されるべきである。同様に、本開示の様々な実施形態と一致する方法において、追加の段階がそのような方法に含まれてもよく、特定の段階が省略または組み合わされてもよい。
【0198】
本開示においていくつかの実施形態が提供されているが、開示されたシステムおよび方法は、本開示の精神または範囲から逸脱することなく、多くの他の特定の形態で具現化され得ることが理解され得る。本実施例は、例示であって限定的なものではないと考えられるべきであり、本発明は、本明細書で提供された詳細に限定されるべきではない。例えば、様々な要素またはコンポーネントは、別のシステムにおいて組み合わされるか、もしくは統合されてもよく、または特定の特徴が省略されるか、もしくは実装されなくてもよい。
【0199】
加えて、離散的または別個のものとして様々な実施形態において説明および図示された技術、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技術、または方法と組み合わせられるか、または統合されてもよい。変更、置換、および代替の他の例は、当業者であれば確認可能であり、本明細書に開示される精神および範囲から逸脱することなく行うことができる。
[他の考えられる項目]
(項目1)
デコーダによって実装される方法であって、
前記デコーダの受信機によって、1つまたは複数の出力レイヤセット(OLS)とビデオパラメータセット(VPS)とを含むビットストリームを受信する段階であって、前記VPSが、前記複数のOLSを指定し、前記VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、段階と、
前記デコーダのプロセッサによって、前記複数のOLSから画像をデコードする段階と、
を含む方法。
(項目2)
前記シーケンスレベルHRDパラメータが、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれ、前記general_hrd_parametersシンタックス構造が、HRD動作において使用されるパラメータを提供する、項目1に記載の方法。
(項目3)
前記HRD動作が、HRDによって実行されるビットストリーム適合性試験のセットを含む、項目1から2のいずれかに記載の方法。
(項目4)
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、前記HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、項目1から3のいずれか1つに記載の方法。
(項目5)
前記シーケンスレベルHRDパラメータが、HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み、前記hrd_cpb_cnt_minus1+1が、代替のコーディング画像バッファ(CPB)配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31までの範囲に制約される、項目1から4のいずれか1つに記載の方法。
(項目6)
前記VPSが、サブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)をさらに含み、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間識別子(ID)を有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、項目1から5のいずれか1つに記載の方法。
(項目7)
前記ビットストリーム中の前記シーケンスレベルHRDパラメータの存在が、前記デコーダが配信スケジュールに従って前記ビットストリームをデコードすることが可能であることを示す、項目1から6のいずれか1つに記載の方法。
(項目8)
エンコーダによって実装される方法であって、
前記エンコーダのプロセッサによって、1つまたは複数の出力レイヤセット(OLS)を含むビットストリームをエンコードする段階と、
前記プロセッサによって、前記複数のOLSを指定するビデオパラメータセット(VPS)を前記ビットストリームにエンコードする段階であって、前記VPSが、前記VPSによって指定されるすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、段階と、
前記プロセッサによって、前記シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行する段階と、
を含む方法。
(項目9)
前記シーケンスレベルHRDパラメータが、一般HRDパラメータ(general_hrd_parameters)シンタックス構造に含まれ、前記general_hrd_parametersシンタックス構造が、HRD動作において使用されるパラメータを提供する、項目8に記載の方法。
(項目10)
前記HRD動作が、ビットストリーム適合性試験の前記セットを含み、前記ビットストリーム適合性試験が、前記プロセッサ上で動作するHRDによって実行される、項目8から9のいずれかに記載の方法。
(項目11)
前記シーケンスレベルHRDパラメータが、デコードユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)を含み、前記decoding_unit_hrd_params_present_flagが、前記HRDがアクセスユニット(AU)レベルまたはデコードユニット(DU)レベルで動作するようにスケジュールされるときに、1に設定され、前記decoding_unit_hrd_params_present_flagが、前記HRDが前記AUレベルで動作するようにスケジュールされるときに、0に設定される、項目8から10のいずれか1つに記載の方法。
(項目12)
前記シーケンスレベルHRDパラメータが、HRDコーディング画像バッファカウント(hrd_cpb_cnt_minus1)を含み、前記hrd_cpb_cnt_minus1+1が、代替のコーディング画像バッファ(CPB)配信スケジュールの数を指定し、hrd_cpb_cnt_minus1の値が、両端値を含めて、0~31までの範囲に制約される、項目8から11のいずれか1つに記載の方法。
(項目13)
前記VPSが、サブレイヤCPBパラメータ存在フラグ(sublayer_cpb_params_present_flag)をさらに含み、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造が、両端値を含めて、0から最大HRD時間ID(hrd_max_tid[i])までの範囲の時間識別子(ID)を有するサブレイヤ表現のためのHRDパラメータを含むときに、1に設定され、前記sublayer_cpb_params_present_flagが、i番目のレイヤHRDパラメータシンタックス構造がhrd_max_tid[i]のみに等しい時間IDを有するサブレイヤ表現のためのHRDパラメータを含むときに、0に設定される、項目8から12のいずれか1つに記載の方法。
(項目14)
前記ビットストリーム中の前記シーケンスレベルHRDパラメータの存在が、前記デコーダが配信スケジュールに従って前記ビットストリームをデコードすることが可能であることを示す、項目8から13のいずれか1つに記載の方法。
(項目15)
ビデオコーディングデバイスであって、
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、受信機、メモリ、および送信機が、項目1から14のいずれか1つに記載の方法を実行するように構成されている、
ビデオコーディングデバイス。
(項目16)
ビデオコーディングデバイスが使用するためのコンピュータプログラム製品を備える非一時的コンピュータ可読媒体であって、前記コンピュータプログラム製品がプロセッサによって実行された場合、前記ビデオコーディングデバイスに項目1から14のいずれか1つに記載の方法を実行させるように、前記非一時的コンピュータ可読媒体上に記憶されたコンピュータ実行可能命令を備える、非一時的コンピュータ可読媒体。
(項目17)
デコーダであって、
1つまたは複数の出力レイヤセット(OLS)とビデオパラメータセット(VPS)とを含むビットストリームを受信するための受信手段であって、前記VPSが、前記複数のOLSを指定し、前記VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、受信手段と、
前記複数のOLSから画像をデコードするためのデコード手段と、
デコードされたビデオシーケンスの一部として表示するために前記画像を転送するための転送手段と、
を備えるデコーダ。
(項目18)
前記デコーダが項目1~7のいずれか1つに記載の方法を実行するようにさらに構成されている、項目17に記載のデコーダ。
(項目19)
エンコーダであって、
1つまたは複数の出力レイヤセット(OLS)を含むビットストリームをエンコードし、
前記複数のOLSを指定するビデオパラメータセット(VPS)を前記ビットストリームにエンコードする、
ためのエンコード手段であって、前記VPSが、前記VPSによって指定されたすべてのOLSに適用されるシーケンスレベル仮想参照デコーダ(HRD)パラメータを含む、
エンコード手段と、
前記シーケンスレベルHRDパラメータに基づいてビットストリーム適合性試験のセットを実行するためのHRD手段と、
デコーダに向けて通信するための前記ビットストリームを記憶するための記憶手段と、
を備えるエンコーダ。
(項目20)
項目8から14のいずれか1つに記載の方法を実行するようにさらに構成されている、項目19に記載のエンコーダ。
【外国語明細書】