(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024096842
(43)【公開日】2024-07-17
(54)【発明の名称】スケーラブルネスティングSEIメッセージ管理
(51)【国際特許分類】
H04N 19/70 20140101AFI20240709BHJP
H04N 19/30 20140101ALI20240709BHJP
【FI】
H04N19/70
H04N19/30
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024063231
(22)【出願日】2024-04-10
(62)【分割の表示】P 2022518744の分割
【原出願日】2020-09-08
(31)【優先権主張番号】62/905,244
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ワン、イエ-クイ
(57)【要約】 (修正有)
【課題】画質をほとんど又は全く犠牲にすることなく圧縮率を改善するビデオシグナルのコード化のための装置、方法、システム及びデータ構造を提供する。
【解決手段】ビデオシーケンスをビットストリームへ符号化する方法であって、1つまたは複数の出力レイヤセット(OLS)を含むビットストリームを符号化し、OLSからターゲットOLSを抽出するために仮想参照デコーダ(HRD)によってサブビットストリーム抽出プロセスを実行し、スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットを、ビットストリームから除去し、ターゲットOLSに対してビットストリーム適合性試験のセットを実行し、デコーダに向けて通信するためビットストリームを記憶する。
【選択図】
図10
【特許請求の範囲】
【請求項1】
1つまたは複数の記憶媒体と、受信機とを備える、ビットストリームを記憶するための装置であって、前記受信機は、1つまたは複数のビットストリームを受信するように構成されており、前記1つまたは複数のビットストリームは、ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有し、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記1つまたは複数のビットストリームに含まれておらず、
前記1つまたは複数の記憶媒体は、前記1つまたは複数のビットストリームを記憶するように構成されている、装置。
【請求項2】
スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングSEIメッセージは、前記特定のOLSに適用される、請求項1に記載の装置。
【請求項3】
i番目のネスティングOLSインデックス(NestingOlsIdx[i])が、前記ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)と等しくなるような、0~OLSのスケーラブルネスティング数から1を引いた数(num_olss_minus1)(両端を含む)までの範囲のインデックス(i)値を、前記スケーラブルネスティングSEIメッセージが含んでいない場合、スケーラブルネスティングされたSEIメッセージは、前記ターゲットOLSを参照しない、請求項1~2のいずれか一項に記載の装置。
【請求項4】
前記スケーラブルネスティングnum_olss_minus1は、前記スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し、スケーラブルネスティングnum_olss_minus1の値は、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)までの範囲に制約される、請求項3に記載の装置。
【請求項5】
前記targetOlsIdxは、前記ターゲットOLSのOLSインデックスを識別する、請求項3または4に記載の装置。
【請求項6】
NestingOlsIdx[i]は、前記スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する、請求項2に記載の装置。
【請求項7】
ターゲットセットに属さない前記1つまたは複数のビットストリーム内の前記SEI NALユニットは、前記1つまたは複数のビットストリームに含まれていない、請求項1~6のいずれか一項に記載の装置。
【請求項8】
ビットストリームを記憶するための方法であって、
受信機を通じてビットストリームを受信する段階と、
1つまたは複数の記憶媒体に前記ビットストリームを記憶する段階と
を備え、前記ビットストリームは、ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有し、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記ビットストリームに含まれておらず、
前記1つまたは複数の記憶媒体は、前記ビットストリームを記憶するように構成されている、方法。
【請求項9】
スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングSEIメッセージは、前記特定のOLSに適用される、請求項8に記載の方法。
【請求項10】
i番目のネスティングOLSインデックス(NestingOlsIdx[i])が、前記ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)と等しくなるような、0~OLSのスケーラブルネスティング数から1を引いた数(num_olss_minus1)(両端を含む)までの範囲のインデックス(i)値を、前記スケーラブルネスティングSEIメッセージが含んでいない場合、スケーラブルネスティングされたSEIメッセージは、前記ターゲットOLSを参照しない、請求項8~9のいずれか一項に記載の方法。
【請求項11】
前記スケーラブルネスティングnum_olss_minus1は、前記スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し、スケーラブルネスティングnum_olss_minus1の値は、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)までの範囲に制約される、請求項10に記載の方法。
【請求項12】
前記targetOlsIdxは、前記ターゲットOLSのOLSインデックスを識別する、請求項10または11に記載の方法。
【請求項13】
NestingOlsIdx[i]は、前記スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する、請求項9に記載の方法。
【請求項14】
ターゲットセットに属さない前記ビットストリーム内の前記SEI NALユニットは、前記ビットストリームに含まれていない、請求項8~13のいずれか一項に記載の方法。
【請求項15】
ビットストリームを送信するためのデバイスであって、前記デバイスは、
少なくとも1つのビットストリームを記憶するように構成されている少なくとも1つの記憶媒体であって、前記少なくとも1つのビットストリームは、ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有し、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記少なくとも1つのビットストリームに含まれていない、少なくとも1つの記憶媒体と、
前記少なくとも1つのビットストリームを別のデバイスへ送信するように構成されている送信機と
を備える、デバイス。
【請求項16】
ビットストリームを送信するための方法であって、前記方法は、
少なくとも1つの記憶媒体から1つまたは複数のビットストリームを取得する段階であって、前記少なくとも1つの記憶媒体は、前記1つまたは複数のビットストリームを記憶し、前記1つまたは複数のビットストリームは、ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有し、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記1つまたは複数のビットストリームに含まれていない、段階と、
前記1つまたは複数のビットストリームを別のデバイスへ送信する段階と
を備える、方法。
【請求項17】
符号化デバイスと、1つまたは複数の記憶媒体と、復号デバイスとを備える、ビットストリームを処理するためのシステムであって、
前記符号化デバイスは、ビデオシグナルを取得し、前記ビデオシグナルを符号化して、1つまたは複数のビットストリームを取得するように構成されており、前記1つまたは複数のビットストリームは、ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有し、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記1つまたは複数のビットストリームに含まれておらず、
前記復号デバイスは、前記1つまたは複数のビットストリームを復号するために用いられる、システム。
【請求項18】
コンピュータにより用いられるデータ構造であって、前記データ構造は、
ターゲット出力レイヤセット(OLS)を含む1つまたは複数のOLSのための情報を有する符号化されたビットストリームを備え、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、且つ前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットは、前記ビットストリームに含まれていない、データ構造。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本特許出願は、参照により本明細書に組み込まれる、Ye-Kui Wangによって2019年9月24日に出願され、「Hypothetical Reference Decoder(HRD)for Multi-Layer Video Bitstreams」と題する、米国仮特許出願第62/905,244号の利益を主張する。
【0002】
本開示は、一般に、ビデオコード化に関し、具体的には、マルチレイヤビットストリームの効率的な符号化および/または適合性試験をサポートするための仮想参照デコーダ(hypothetical reference decoder、HRD)パラメータの変更に関する。
【背景技術】
【0003】
比較的短いビデオであっても描写するのに必要なビデオデータの量は、かなり多くなる可能性があり、これは、データが限られた帯域幅容量を有する通信ネットワークを介してストリーミングまたは通信される場合に困難をもたらす可能性がある。したがって、ビデオデータは、一般に、今日の電気通信ネットワークを介して通信される前に圧縮される。メモリリソースが制限される可能性があるため、ビデオが記憶装置に記憶される場合、ビデオのサイズも問題になる可能性がある。ビデオ圧縮装置は、送信または記憶の前にビデオデータをコード化するためにソースでソフトウェアおよび/またはハードウェアを使用することが多く、それによって、デジタルビデオ画像を表すために必要なデータの量を減少させる。次いで、圧縮データは、ビデオデータを復号するビデオ解凍装置によって宛先で受信される。ネットワークリソースが限られており、高いビデオ品質への要求がますます高まっているため、画質をほとんどまたはまったく犠牲にすることなく圧縮率を改善する、改善された圧縮および解凍技術が望ましい。
【発明の概要】
【0004】
一実施形態では、本開示は、デコーダによって実装される方法であって、本方法は、デコーダの受信機により、ターゲット出力レイヤセット(output layer set、OLS)を備えるビットストリームを受信する段階であって、スケーラブルネスティング補足拡張情報(supplemental enhancement information、SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEIネットワーク抽象化レイヤ(network abstraction layer、NAL)ユニットは、サブビットストリーム抽出プロセスの一部としてビットストリームから除去される、受信する段階と、プロセッサによって、ターゲットOLSからのピクチャを復号する段階とを備える、方法を含む。
【0005】
ビデオコード化システムは、ビットストリームがデコーダによって復号可能であることを保証するために、さまざまな適合性試験を適用する。例えば、適合性チェックは、適合性についてビットストリーム全体を試験することと、次いで、適合性についてビットストリームの各レイヤを試験することと、最後に、適合性について潜在的な復号可能出力をチェックすることとを含み得る。適合性チェックを実装するために、対応するパラメータがビットストリームに含まれる。仮想参照デコーダ(HRD)は、パラメータを読み取り、試験を実行することができる。ビデオは、多くのレイヤおよび多くの異なるOLSを含み得る。要求に応じて、エンコーダは、選択されたOLSの1つまたは複数のレイヤを送信する。例えば、エンコーダは、現在のネットワーク帯域幅によってサポートされ得るOLSから最良のレイヤを送信し得る。問題は、OLSに含まれるレイヤに関する。各OLSは、デコーダで表示されるように構成された少なくとも1つの出力レイヤを含む。エンコーダのHRDは、各OLSが標準に適合しているかどうかをチェックすることができる。適合するOLSは常に、適合するデコーダで復号されて表示され得る。HRDプロセスは、SEIメッセージによって部分的に管理することができる。例えば、スケーラブルネスティングSEIメッセージは、スケーラブルネスティングされたSEIメッセージを含み得る。各スケーラブルネスティングされたSEIメッセージは、対応するレイヤに関連するデータを含み得る。適合チェックを実行するとき、HRDは、ターゲットOLSに対してビットストリーム抽出プロセスを実行することができる。OLS内のレイヤに関連しないデータは、一般に、各OLSを別々にチェックできるように、適合性試験の前に(例えば、送信前に)除去される。いくつかのビデオコード化システムは、サブビットストリーム抽出プロセス中にスケーラブルネスティングSEIメッセージを除去しないが、これは、そのようなメッセージが複数のレイヤに関連するからである。これは、スケーラブルネスティングSEIメッセージがターゲットOLS(抽出されているOLS)内のいかなるレイヤにも関連しない場合であっても、サブビットストリーム抽出後にビットストリーム内に残るスケーラブルネスティングSEIメッセージをもたらし得る。これは、いかなる追加の機能も提供することなく、最終ビットストリームのサイズを増加させることができる。本例は、マルチレイヤビットストリームのサイズを低減するためのメカニズムを含む。サブビットストリーム抽出中、スケーラブルネスティングSEIメッセージは、ビットストリームから除去するために考慮され得る。スケーラブルネスティングSEIメッセージが1つまたは複数のOLSに関連する場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがチェックされる。スケーラブルネスティングされたSEIメッセージがターゲットOLS内のいかなるレイヤにも関連しない場合、スケーラブルネスティングSEIメッセージ全体をビットストリームから除去することができる。これにより、デコーダに送信されるビットストリームのサイズが低減される。したがって、本例は、コード化効率を高め、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用を低減する。
【0006】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、サブビットストリーム抽出プロセスが、エンコーダ上の仮想参照デコーダ(HRD)によって実行されることを提供する。
【0007】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングSEIメッセージが、スケーラブルネスティングOLSフラグが1に設定されている場合に、特定のOLSに適用されることを提供する。
【0008】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングSEIメッセージに、i番目のネスティングOLSインデックス(NestingOlsIdx[i])が、ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)と等しくなるような、0~OLSのスケーラブルネスティング数から1を引いた数(num_olss_minus1)(両端を含む)までの範囲内のインデックス(i)値が含まれていない場合、スケーラブルネスティングされたSEIメッセージは、ターゲットOLSを参照しないことを提供する。
【0009】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングnum_olss_minus1が、スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し、スケーラブルネスティングnum_olss_minus1の値が、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)までの範囲に制約されることを提供する。
【0010】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、targetOlsIdxが、ターゲットOLSのOLSインデックスを識別することを提供する。
【0011】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、NestingOlsIdx[i]が、スケーラブルネスティングOLSフラグが1に設定されている場合に、スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定することを提供する。
【0012】
一実施形態では、本開示は、エンコーダによって実装される方法であって、本方法は、エンコーダのプロセッサによって、1つまたは複数のOLSを含むビットストリームを符号化する段階と、プロセッサ上で動作するHRDによって、OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行する段階と、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、プロセッサ上で動作するHRDによって、スケーラブルネスティングSEIメッセージを含むSEI NALユニットを、ビットストリームから除去する段階と、プロセッサ上で動作するHRDによって、ターゲットOLS上でビットストリーム適合性試験のセットを実行する段階とを備える、方法を含む。
【0013】
ビデオコード化システムは、ビットストリームがデコーダによって復号可能であることを保証するために、さまざまな適合性試験を適用する。例えば、適合性チェックは、適合性についてビットストリーム全体を試験することと、次いで、適合性についてビットストリームの各レイヤを試験することと、最後に、適合性について潜在的な復号可能出力をチェックすることとを含み得る。適合性チェックを実装するために、対応するパラメータがビットストリームに含まれる。仮想参照デコーダ(HRD)は、パラメータを読み取り、試験を実行することができる。ビデオは、多くのレイヤおよび多くの異なるOLSを含み得る。要求に応じて、エンコーダは、選択されたOLSの1つまたは複数のレイヤを送信する。例えば、エンコーダは、現在のネットワーク帯域幅によってサポートされ得るOLSから最良のレイヤを送信し得る。問題は、OLSに含まれるレイヤに関する。各OLSは、デコーダで表示されるように構成された少なくとも1つの出力レイヤを含む。エンコーダのHRDは、各OLSが標準に適合しているかどうかをチェックすることができる。適合するOLSは常に、適合するデコーダで復号されて表示され得る。HRDプロセスは、SEIメッセージによって部分的に管理することができる。例えば、スケーラブルネスティングSEIメッセージは、スケーラブルネスティングされたSEIメッセージを含み得る。各スケーラブルネスティングされたSEIメッセージは、対応するレイヤに関連するデータを含み得る。適合チェックを実行するとき、HRDは、ターゲットOLSに対してビットストリーム抽出プロセスを実行することができる。OLS内のレイヤに関連しないデータは、一般に、各OLSを別々にチェックできるように、適合性試験の前に(例えば、送信前に)除去される。いくつかのビデオコード化システムは、サブビットストリーム抽出プロセス中にスケーラブルネスティングSEIメッセージを除去しないが、これは、そのようなメッセージが複数のレイヤに関連するからである。これは、スケーラブルネスティングSEIメッセージがターゲットOLS(抽出されているOLS)内のいかなるレイヤにも関連しない場合であっても、サブビットストリーム抽出後にビットストリーム内に残るスケーラブルネスティングSEIメッセージをもたらし得る。これは、いかなる追加の機能も提供することなく、最終ビットストリームのサイズを増加させることができる。本例は、マルチレイヤビットストリームのサイズを低減するためのメカニズムを含む。サブビットストリーム抽出中、スケーラブルネスティングSEIメッセージは、ビットストリームから除去するために考慮され得る。スケーラブルネスティングSEIメッセージが1つまたは複数のOLSに関連する場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがチェックされる。スケーラブルネスティングされたSEIメッセージがターゲットOLS内のいかなるレイヤにも関連しない場合、スケーラブルネスティングSEIメッセージ全体をビットストリームから除去することができる。これにより、デコーダに送信されるビットストリームのサイズが低減される。したがって、本例は、コード化効率を高め、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用を低減する。
【0014】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングSEIメッセージが、スケーラブルネスティングOLSフラグが1に設定されている場合に、特定のOLSに適用されることを提供する。
【0015】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングSEIメッセージに、NestingOlsIdx[i]が、ターゲットOLSに関連付けられたtargetOlsIdxと等しくなるような、0~スケーラブルネスティングnum_olss_minus1(両端を含む)までの範囲内のインデックス(i)値が含まれていない場合、スケーラブルネスティングされたSEIメッセージは、ターゲットOLSを参照しないことを提供する。
【0016】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングnum_olss_minus1が、スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定することを提供する。
【0017】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、スケーラブルネスティングnum_olss_minus1の値は、0~TotalNumOlss-1(両端を含む)の範囲に制約されることを提供する。
【0018】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、targetOlsIdxが、ターゲットOLSのOLSインデックスを識別することを提供する。
【0019】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、NestingOlsIdx[i]が、スケーラブルネスティングOLSフラグが1に設定されている場合に、スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定することを提供する。
【0020】
一実施形態では、本開示は、ビデオコード化装置であって、プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機とを備え、プロセッサ、受信機、メモリ、および送信機は、前述の態様のいずれか一項に記載の方法を実行するように構成される、ビデオコード化装置を含む。
【0021】
一実施形態では、本開示は、ビデオコード化装置による使用のためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、プロセッサによって実行されると、ビデオコード化装置に前述の態様のいずれか一項に記載の方法を実行させるように、コンピュータプログラム製品は、非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を含む、非一時的コンピュータ可読媒体を含む。
【0022】
一実施形態では、本開示は、デコーダであって、ターゲットOLSを備えるビットストリームを受信する受信手段であって、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEI NALユニットは、サブビットストリーム抽出プロセスの一部としてビットストリームから除去される、受信手段と、ターゲットOLSからのピクチャを復号する復号手段と、復号されたビデオシーケンスの一部として表示するためにピクチャを転送する転送手段とを備える、デコーダを含む。
【0023】
任意に、前述した態様のいずれかにおいて、態様の別の実装は、デコーダが、前述した態様のいずれかの方法を実行するようにさらに構成されることを提供する。
【0024】
一実施形態では、本開示は、エンコーダであって、1つまたは複数のOLSを含むビットストリームを符号化する符号化手段と、HRD手段であって、OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行することと、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットを、ビットストリームから除去することと、ターゲットOLS上でビットストリーム適合性試験のセットを実行することとを行うための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】スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティング補足拡張情報(SEI)メッセージを除去することによって、ビデオシーケンスをビットストリームへ符号化する例示的な方法のフローチャートである。
【0039】
【
図11】スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージが除去されるビットストリームからビデオシーケンスを復号する例示的な方法のフローチャートである。
【0040】
【
図12】スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージを除去することによって、ビデオシーケンスをビットストリームへ符号化する例示的なシステムの概略図である。
【発明を実施するための形態】
【0041】
最初に、1つまたは複数の実施形態の例示的な実装が以下に提供されるが、開示されたシステムおよび/または方法は、現在知られているかまたは存在しているかにかかわらず、任意の数の技術を使用して実装され得ることを理解されたい。本開示は、本明細書に示され説明される例示的な設計および実装を含む、以下に示される例示的な実装、図面、および技術に決して限定されるべきではなく、それらの均等物の全範囲と共に添付の特許請求の範囲内で修正することができる。
【0042】
以下の用語は、本明細書で反対の文脈で使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示をさらに明確にすることを意図している。しかしながら、用語は、異なる文脈において異なって記載され得る。したがって、以下の定義は、補足と見なされるべきであり、本明細書においてそのような用語について提供される説明の任意の他の定義を限定すると見なされるべきではない。
【0043】
ビットストリームは、エンコーダとデコーダとの間の送信のために圧縮されたビデオデータを含む一連のビットである。エンコーダは、符号化プロセスを使用して、ビデオデータをビットストリームに圧縮するように構成された装置である。デコーダは、復号プロセスを使用して、表示のためにビットストリームからビデオデータを再構成するように構成された装置である。ピクチャは、フレームまたはそのフィールドを生成する輝度サンプルのアレイおよび/または彩度サンプルのアレイである。説明を明確にするために、符号化または復号されているピクチャを現在のピクチャと呼ぶことができる。ネットワーク抽象化レイヤ(NAL)ユニットは、生バイトシーケンスペイロード(RBSP)、データのタイプの指示、およびエミュレーション防止バイト(必要に応じて散在する)の形式のデータを含むシンタックス構造である。ビデオコード化レイヤ(video coding layer、VCL)NALユニットは、ピクチャのコード化されたスライスなどのビデオデータを含むようにコード化されたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性チェックの実行、または他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。アクセスユニット(access unit、AU)は、指定された分類規則に従って互いに関連付けられ、1つの特定の出力時間に関するNALユニットのセットである。復号ユニット(decoding unit、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は、符号化プロセスによって生成されたビットストリームの変動性をチェックして指定された制約との適合性を検証するエンコーダ上で動作するデコーダモデルである。ビットストリーム適合性試験は、符号化ビットストリームが多用途ビデオコード化(Versatile Video Coding、VVC)などの標準に準拠しているかどうかを決定するための試験である。HRDパラメータは、HRDの動作条件を初期化および/または定義するシンタックス要素である。HRDパラメータは、HRDパラメータシンタックス構造に含めることができる。シンタックス構造は、複数の異なるパラメータを含むように構成されたデータオブジェクトである。シンタックス要素は、同じタイプの1つまたは複数のパラメータを含むデータオブジェクトである。したがって、シンタックス構造は、複数のシンタックス要素を含むことができる。シーケンスレベルのHRDパラメータは、コード化されたビデオシーケンス全体に適用されるHRDパラメータである。最大HRD時間ID(hrd_max_tid[i])は、HRDパラメータがOLS HRDパラメータのi番目のセットに含まれる最高サブレイヤ表現の時間IDを指定する。一般HRDパラメータ(general_hrd_parameters)シンタックス構造は、シーケンスレベルのHRDパラメータを含むシンタックス構造である。動作点(operation point、OP)は、OLSインデックスおよび最高時間IDで識別されるOLSの時間サブセットである。被試験OP(targetOp)は、HRDでの適合性試験のために選択されるOPである。ターゲットOLSは、ビットストリームからの抽出のために選択されるOLSである。復号ユニットHRDパラメータ存在フラグ(decoding_unit_hrd_params_present_flag)は、対応するHRDパラメータがDUレベルで動作するか、AUレベルで動作するかを示すフラグである。コード化ピクチャバッファ(coded picture buffer、CPB)は、ビットストリーム適合性検証中に使用するために復号順序でコード化ピクチャを含むHRDにおける先入れ先出しバッファである。復号されたピクチャバッファ(decoded picture buffer、DPB)は、参照、出力並べ替え、および/または出力遅延のための復号されたピクチャを保持するためのバッファである。
【0046】
補足拡張情報(SEI)メッセージは、復号されたピクチャ内のサンプルの値を決定するために復号プロセスによって必要とされない情報を伝達する指定されたセマンティクスを有するシンタックス構造である。スケーラブルネスティングSEIメッセージは、1つもしくは複数のOLSまたは1つもしくは複数のレイヤに対応する複数のSEIメッセージを含むメッセージである。スケーラブルネスティングされていないSEIメッセージは、ネストされておらず、したがって単一のSEIメッセージを含むメッセージである。バッファリング期間(buffering period、BP)SEIメッセージは、CPBを管理するためにHRDを初期化するためのHRDパラメータを含むSEIメッセージである。ピクチャタイミング(picture timing、PT)SEIメッセージは、CPBおよび/またはDPBにおけるAUのための配信情報を管理するためのHRDパラメータを含むSEIメッセージである。復号ユニット情報(decoding unit information、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除去遅延情報は、対応するDUのCPBからの除去に関する情報である。配信スケジュールは、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カウントから1を引いた数(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)のシンタックス要素は、CPB除去遅延およびCPB除去オフセットがBP SEIメッセージで示される時間サブレイヤの最大数を指定するシンタックス要素である。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)、コード化ツリーブロック(Coding Tree Block、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パート2、ITU-T H.262またはISO/IEC MPEG-2パート2、ITU-T H.263、ISO/IEC MPEG-4パート2、ITU-T H.264またはISO/IEC MPEG-4パート10としても知られる高度ビデオコード化(AVC)、およびITU-T H.265またはMPEG-Hパート2としても知られる高効率ビデオコード化(HEVC)が含まれる。AVCは、スケーラブルビデオコード化(Scalable Video Coding、SVC)、マルチビュービデオコード化(Multiview Video Coding、MVC)およびマルチビュービデオコード化プラス深度(Multiview Video Coding plus Depth、MVC+D)、ならびに3次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの拡張を含む。ITU-TおよびISO/IECのjoint video experts team(JVET)は、多用途ビデオコード化(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を含むビデオのコード化効率を高めるためのメカニズムが本明細書で開示される。0番目のOLSには、スケーラブルネスティングされていないSEIメッセージが使用される。スケーラブルネスティングされていない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をゼロに設定して、すべての下位レイヤが最高レイヤと同じHRDパラメータを使用する必要があることを示すことができる。これに関連して、最高レイヤは最大レイヤ識別子(ID)を有し、下位レイヤは最高レイヤのレイヤIDよりも小さいレイヤIDを有する任意のレイヤである。このようにして、下位レイヤのHRDパラメータをビットストリームから省略することができる。これは、ビットストリームサイズを減少させ、したがって、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソース利用を削減する。
【0061】
第6の問題は、ビデオ内の各ビデオシーケンスに関連するシンタックス要素を含むためのシーケンスパラメータセット(sequence parameter set、SPS)の使用に関する。ビデオコード化システムは、レイヤおよび/またはサブレイヤにおいてビデオをコード化し得る。ビデオシーケンスは、異なるレイヤおよび/またはサブレイヤにおいて異なって動作し得る。したがって、異なるレイヤは、異なるSPSを指し得る。BP SEIメッセージは、標準への適合性についてチェックされるレイヤ/サブレイヤを示し得る。いくつかのビデオコード化システムは、SPSで示されるレイヤ/サブレイヤにBP SEIメッセージが適用されることを示し得る。これは、異なるレイヤが異なる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パート2としても知られる)において、フレームは、最初に、所定のサイズ(例えば、64ピクセル×64ピクセル)のブロックであるコード化ツリーユニット(CTU)に分割され得る。CTUは、輝度サンプルおよび彩度サンプルの両方を含む。コード化ツリーを使用して、CTUをブロックに分割し、次いで、さらなる符号化をサポートする構成が達成されるまでブロックを再帰的に細分することができる。例えば、フレームの輝度成分は、個々のブロックが比較的均一な照明値を含むまで細分され得る。さらに、フレームの彩度成分は、個々のブロックが比較的均一な色値を含むまで細分され得る。したがって、分割メカニズムは、ビデオフレームのコンテンツに応じて変化する。
【0068】
ステップ105において、ステップ103において分割された画像ブロックを圧縮するためにさまざまな圧縮メカニズムが使用される。例えば、インター予測および/またはイントラ予測が使用され得る。インター予測は、共通のシーン内のオブジェクトが連続するフレームに現れる傾向があるという事実を利用するように設計される。したがって、参照フレーム内のオブジェクトを描写するブロックは、隣接するフレーム内で繰り返し記述される必要はない。具体的には、テーブルなどのオブジェクトは、複数のフレームにわたって一定の位置に留まり得る。したがって、テーブルは一度記述され、隣接するフレームは参照フレームを参照することができる。パターンマッチングメカニズムを使用して、複数のフレームにわたってオブジェクトをマッチングすることができる。さらに、移動するオブジェクトは、例えば、オブジェクトの移動またはカメラの移動に起因して、複数のフレームにわたって表され得る。特定の例として、ビデオは、複数のフレームにわたって画面を横切って移動する自動車を示し得る。動きベクトルを使用して、そのような動きを記述することができる。動きベクトルは、フレーム内のオブジェクトの座標から参照フレーム内のオブジェクトの座標へのオフセットを提供する2次元ベクトルである。このように、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルのセットとして符号化することができる。
【0069】
イントラ予測は、共通フレーム内のブロックを符号化する。イントラ予測は、輝度および彩度成分がフレーム内でクラスタ化する傾向があるという事実を利用する。例えば、木の一部の緑色のパッチは、同様の緑色のパッチに隣接して位置する傾向がある。イントラ予測は、複数の指向性予測モード(例えば、HEVCでは33)、平面モード、および直流(direct current、DC)モードを使用する。指向性モードは、現在のブロックが対応する方向において隣接ブロックのサンプルと類似/同じであることを示す。平面モードは、行/列に沿った一連のブロック(例えば、平面)が、行のエッジにある隣接ブロックに基づいて補間され得ることを示す。平面モードは、実際には、変化する値に比較的一定の傾きを採用することによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界平滑化に使用され、ブロックは、指向性予測モードの角度方向に関連付けられたすべての隣接ブロックのサンプルに関連付けられた平均値と類似/同じであることを示す。したがって、イントラ予測ブロックは、実際の値ではなく、さまざまな関係予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値ではなく、動きベクトル値として画像ブロックを表すことができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを正確に表さない場合がある。差分は、残差ブロックに記憶される。変換は、ファイルをさらに圧縮するために残差ブロックに適用され得る。
【0070】
ステップ107において、さまざまなフィルタリング技術を適用することができる。HEVCでは、フィルタは、インループフィルタリングスキームに従って適用される。上述したブロックベースの予測は、デコーダにおいてブロック状の乱れがある(blocky)画像の作成をもたらし得る。さらに、ブロックベースの予測スキームは、ブロックを符号化し、次いで、符号化されたブロックを参照ブロックとして後で使用するために再構成することができる。インループフィルタリングスキームは、ノイズ抑制フィルタ、デブロックフィルタ、適応ループフィルタ、およびサンプル適応オフセット(sample adaptive offset、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、ならびにヘッダフォーマッティングおよびコンテキスト適応バイナリ算術コード化(context adaptive binary arithmetic coding、CABAC)コンポーネント231を含む。そのようなコンポーネントは、図示のように結合される。
図2において、黒線は符号化/復号対象のデータの移動を示し、破線は他のコンポーネントの動作を制御する制御データの移動を示す。コーデックシステム200のコンポーネントは、すべてエンコーダに存在してもよい。デコーダは、コーデックシステム200のコンポーネントのサブセットを含み得る。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリングおよび逆変換コンポーネント229、インループフィルタコンポーネント225、ならびに復号されたピクチャバッファコンポーネント223を含み得る。次に、これらのコンポーネントについて説明する。
【0076】
分割されたビデオシグナル201は、コード化ツリーによってピクセルのブロックに分割されたキャプチャされたビデオシーケンスである。コード化ツリーは、ピクセルのブロックをより小さいピクセルのブロックに細分するためにさまざまなスプリットモードを使用する。次いで、これらのブロックをより小さいブロックにさらに細分することができる。ブロックは、コード化ツリー上のノードと呼ばれる場合がある。より大きな親ノードは、より小さな子ノードにスプリットされる。ノードが細分される回数は、ノード/コード化ツリーの深度と呼ばれる。分割されたブロックは、場合によっては、コード化ユニット(coding unit、CU)に含まれ得る。例えば、CUは、CUのための対応するシンタックス命令と共に、輝度ブロック、赤色差分彩度(Cr)ブロック、および青色差分彩度(Cb)ブロックを含むCTUの下位部分であり得る。スプリットモードには、使用されるスプリットモードに応じてさまざまな形状のノードをそれぞれ2つ、3つ、または4つの子ノードに分割するために使用されるバイナリツリー(binary tree、BT)、トリプルツリー(triple tree、TT)、およびクワッドツリー(quad tree、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によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対するコード化されたオブジェクトの変位を示し得る。予測ブロックは、ピクセル差に関して、コード化されるべきブロックと厳密に一致することが見出されるブロックである。予測ブロックはまた、参照ブロックと呼ばれることもある。そのようなピクセル差は、絶対差の和(sum of absolute difference、SAD)、二乗差の和(sum of square difference、SSD)、または他の差メトリックによって決定され得る。HEVCは、CTU、コード化ツリーブロック(CTB)、およびCUを含むいくつかのコード化オブジェクトを使用する。例えば、CTUはCTBに分割することができ、次いで、CUに含めるためにCBに分割され得る。CUは、予測データを含む予測ユニット(prediction unit、PU)および/またはCU用の変換された残差データを含む変換ユニット(transform unit、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は、レート歪み最適化(rate-distortion optimization、RDO)に基づく深度モデリングモード(depth modeling mode、DMM)を使用して、深度マップの深度ブロックをコード化するように構成され得る。
【0084】
イントラピクチャ予測コンポーネント217は、エンコーダ上で実装された場合、イントラピクチャ推定コンポーネント215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し得る、またはデコーダ上で実装された場合、ビットストリームから残差ブロックを読み出し得る。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値の差を含む。次いで、残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、輝度成分および彩度成分の両方で動作し得る。
【0085】
変換スケーリングおよび量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリングおよび量子化コンポーネント213は、離散コサイン変換(discrete cosine transform、DCT)、離散サイン変換(discrete sine transform、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を再構成するためにデコーダによって所望されるすべての情報を含む。そのような情報はまた、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、さまざまなブロックのための符号化コンテキストの定義、最も可能性の高いイントラ予測モードの指示、分割情報の指示などを含み得る。そのようなデータは、エントロピーコード化を適用することによって、符号化され得る。例えば、情報は、コンテキスト適応可変長コード化(context adaptive variable length coding、CAVLC)、CABAC、シンタックスベースのコンテキスト適応バイナリ算術コード化(syntax-based context-adaptive binary arithmetic coding、SBAC)、確率区間分割エントロピー(probability interval partitioning entropy、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は、予測モードを使用してフレーム内の参照ブロックを特定し、残差ブロックを適用して、その結果、イントラ予測画像ブロックを再構成する。再構成されたイントラ予測画像ブロックおよび/または残差ブロックおよび対応するインター予測データは、それぞれ、復号されたピクチャバッファコンポーネント223およびインループフィルタコンポーネント225と実質的に同様であり得る、インループフィルタコンポーネント425を介して復号されたピクチャバッファコンポーネント423に転送される。インループフィルタコンポーネント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は、仮想ストリームスケジューラ(hypothetical stream scheduler、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と同様のDPB547のDPB配信スケジュールを使用することができることに留意されたい。
【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パラメータは、ScIdx563によってCPB配信スケジュール561を示し得、ならびにHRD500がCPB配信スケジュール561を決定し、CPB配信スケジュール561を対応するOLS、レイヤ、および/またはサブレイヤに相関させるのに十分なデータを含み得る。
【0104】
図6は、レイヤ間予測621のために構成された例示的なマルチレイヤビデオシーケンス600を示す概略図である。マルチレイヤビデオシーケンス600は、例えば、方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダによって符号化され、コーデックシステム200および/またはデコーダ400などのデコーダによって復号され得る。さらに、マルチレイヤビデオシーケンス600は、HRD500などのHRDによって標準適合性についてチェックされ得る。マルチレイヤビデオシーケンス600は、コード化されたビデオシーケンス内のレイヤの例示的なアプリケーションを示すために含まれる。マルチレイヤビデオシーケンス600は、レイヤN 631およびレイヤ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はレイヤN 631の一部である。レイヤN 631および/またはレイヤN+1 632などのレイヤは、すべて、同様のサイズ、品質、解像度、信号対雑音比、能力などの特性の同様の値に関連付けられたピクチャのグループである。レイヤは、形式的に、VCL NALユニットおよび関連付けられた非VCL NALユニットのセットとして定義され得る。VCL NALユニットは、ピクチャのコード化されたスライスなどのビデオデータを含むようにコード化されたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性チェックの実行、または他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。
【0106】
示されている例では、レイヤN+1 632は、レイヤN 631よりも大きい画像サイズに関連付けられている。したがって、この例では、レイヤN+1 632のピクチャ611、612、613、および614のピクチャサイズは、レイヤN 631のピクチャ615、616、617、および618のピクチャサイズよりも大きい(例えば、より大きな高さおよび幅、したがって、より多くのサンプル)。しかしながら、そのようなピクチャは、他の特性によって、レイヤN+1 632とレイヤN 631との間で分離され得る。レイヤN+1 632およびレイヤN 631の2つのレイヤのみが示されているが、ピクチャのセットは、関連付けられた特性に基づいて、任意の数のレイヤに分離され得る。レイヤN+1 632およびレイヤN 631はまた、レイヤIDによって示され得る。レイヤIDは、ピクチャに関連付けられたデータの項目であり、ピクチャが指示されたレイヤの一部であることを示す。したがって、各ピクチャ611~618は、どのレイヤN+1 632またはレイヤN 631が対応するピクチャを含むかを示すために、対応するレイヤIDに関連付けられ得る。例えば、レイヤIDは、(例えば、レイヤ内のピクチャのスライスおよび/またはパラメータを含む)NALユニットを含むレイヤの識別子を指定するシンタックス要素であるNALユニットヘッダレイヤ識別子(nuh_layer_id)を含み得る。レイヤN 631のような、低品質/ビットストリームサイズに関連付けられたレイヤは、一般に、下位レイヤ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は、(ピクチャサイズの違いにかかわらず)下位レイヤN 631における対応するピクチャ615~618と実質的に同じ画像データを含む。具体的には、ピクチャ611はピクチャ615と実質的に同じ画像データを含み、ピクチャ612はピクチャ616と実質的に同じ画像データを含む、などである。
【0108】
ピクチャ611~618は、同じレイヤN 631またはN+1 632内の他のピクチャ611~618を参照することによってコード化され得る。同じレイヤ内の別のピクチャを参照してピクチャをコード化すると、インター予測623が得られる。インター予測623は、実線矢印で示される。例えば、ピクチャ613は、レイヤN+1 632内のピクチャ611、612、および/または614のうちの1つまたは2つを参照として使用するインター予測623を使用することによってコード化され得、1つのピクチャは、一方向インター予測のために参照され、および/または2つのピクチャは、双方向インター予測のために参照される。さらに、ピクチャ617は、レイヤN 531内のピクチャ615、616、および/または618のうちの1つまたは2つを参照として使用するインター予測623を使用することによってコード化され得、1つのピクチャは、一方向インター予測のために参照され、および/または2つのピクチャは、双方向インター予測のために参照される。インター予測623を行う際に、あるピクチャが同じレイヤ内の別のピクチャの参照として使用される場合、そのピクチャは参照ピクチャと呼ばれ得る。例えば、ピクチャ612は、インター予測623に従ってピクチャ613をコード化するために使用される参照ピクチャであり得る。インター予測623はまた、マルチレイヤコンテキストにおけるイントラレイヤ予測とも呼ばれ得る。このように、インター予測623は、参照ピクチャと現在のピクチャとが同じレイヤ内にある現在のピクチャとは異なる参照ピクチャ内の指示されたサンプルを参照することによって、現在のピクチャのサンプルをコード化するメカニズムである。
【0109】
ピクチャ611~618はまた、異なるレイヤ内の他のピクチャ611~618を参照することによってコード化され得る。このプロセスはレイヤ間予測621として知られており、破線矢印で示される。レイヤ間予測621は、現在のピクチャと参照ピクチャとが異なるレイヤ内にあり、したがって、異なるレイヤIDを有する参照ピクチャ内の指示されたサンプルを参照することによって、現在のピクチャのサンプルをコード化するメカニズムである。例えば、下位レイヤN 631内のピクチャを参照ピクチャとして使用して、上位レイヤN+1 632の対応するピクチャをコード化することができる。具体例として、ピクチャ611は、レイヤ間予測621に従ってピクチャ615を参照することによってコード化され得る。そのような場合、ピクチャ615がレイヤ間参照ピクチャとして使用される。レイヤ間参照ピクチャは、レイヤ間予測621に使用される参照ピクチャである。ほとんどの場合、レイヤ間予測621は、ピクチャ611などの現在のピクチャが、同じAUに含まれ、ピクチャ615などの下位レイヤにあるレイヤ間参照ピクチャのみを使用できるように制約される。複数のレイヤ(例えば、2を超える)が利用可能である場合、レイヤ間予測621は、現在のピクチャよりも低いレベルにある複数のレイヤ間参照ピクチャに基づいて、現在のピクチャを符号化/復号することができる。
【0110】
ビデオエンコーダは、マルチレイヤビデオシーケンス600を使用して、インター予測623およびレイヤ間予測621の多くの異なる組み合わせおよび/または順列を介してピクチャ611~618を符号化することができる。例えば、ピクチャ615は、イントラ予測に従ってコード化され得る。次いで、ピクチャ616~618は、ピクチャ615を参照ピクチャとして使用することによって、インター予測623に従ってコード化され得る。さらに、ピクチャ611は、ピクチャ615をレイヤ間参照ピクチャとして使用することによって、レイヤ間予測621に従ってコード化され得る。次いで、ピクチャ612~614は、ピクチャ611を参照ピクチャとして使用することによって、インター予測623に従ってコード化され得る。このように、参照ピクチャは、異なる符号化メカニズムのための単一のレイヤ参照ピクチャおよびレイヤ間参照ピクチャの両方として機能し得る。下位レイヤN 631のピクチャに基づいて上位レイヤN+1 632ピクチャをコード化することにより、上位レイヤN+1 632は、インター予測623およびレイヤ間予測621よりもはるかに低いコード化効率を有するイントラ予測を使用することを回避することができる。このように、イントラ予測の劣悪なコード化効率は、最小/最低品質のピクチャに制限され、したがって、最小量のビデオデータをコード化することに制限され得る。参照ピクチャおよび/またはレイヤ間参照ピクチャとして使用されるピクチャは、参照ピクチャリスト構造に含まれる参照ピクチャリストのエントリで示され得る。
【0111】
そのような動作を実行するために、レイヤN 631およびレイヤN+1 632などのレイヤは、1つまたは複数のOLS625および626に含まれ得る。具体的には、ピクチャ611~618はビットストリーム600内のレイヤ631~632として符号化され、次いで、ピクチャの各レイヤ631~632はOLS625および626のうち1つまたは複数に割り当てられる。次いで、デコーダにおける能力および/またはネットワーク条件に応じて、OLS625および/または626を選択することができ、対応するレイヤ631および/または632をデコーダに送信することができる。OLS625は、1つまたは複数のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、出力(例えば、ディスプレイに)のために指定されるレイヤである。例えば、レイヤN 631は、レイヤ間予測621をサポートするためだけに含まれてもよく、決して出力されなくてもよい。そのような場合、レイヤN+1 632は、レイヤN 631に基づいて復号され、出力される。そのような場合、OLS625は、出力レイヤとして、レイヤN+1 632を含む。OLSが出力レイヤのみを含む場合、OLSは、0番目のOLS626と呼ばれる。0番目のOLS626は、最下位レイヤ(最下位レイヤ識別子を有するレイヤ)のみを含み、したがって、出力レイヤのみを含む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は、時間IDが0から時間IDが200までの第1のOLS625内のすべてのピクチャを含むことができ、第2の動作点627は、時間IDが201から時間IDが400までの第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ユニット(例えば、支持パラメータ)を含む時間スケーラブルビットストリームの時間スケーラブルレイヤである。例えば、レイヤN 631および/またはレイヤ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と、複数のピクチャパラメータセット(picture parameter set、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のうちのいくつかが異なるOLSに関連付けられているいくつかのレイヤおよび/またはサブレイヤにおいてピクチャ823を含み得る。そのような場合、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メッセージ819は、HRDプロセスをサポートするためのデータ、またはデコーダにおけるビットストリーム800の復号に直接関連しない他の支持データを含み得る。ビットストリーム800で使用されるSEIメッセージ819は、スケーラブルネスティングSEIメッセージおよび/またはスケーラブルネスティングされていないSEIメッセージを含み得る。スケーラブルネスティングSEIメッセージは、1つもしくは複数のOLSまたは1つもしくは複数のレイヤに対応する複数のSEIメッセージを含むメッセージである。スケーラブルネスティングされたSEIメッセージは、スケーラブルネスティングSEIメッセージに含まれる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メッセージを含み得る。BP SEIメッセージ、PT SEIメッセージ、および/またはDUI SEIメッセージに含まれるパラメータを使用して、HRDにおけるCPB配信スケジュールを決定し得る。例えば、スケーラブルネスティングSEIメッセージは、BP SEIメッセージのセット、PT SEIメッセージのセット、またはDUI SEIメッセージのセットを含み得る。
【0123】
上述したように、ビデオストリームは、OLS625、レイヤN 631、レイヤN+1 632、サブレイヤ710、サブレイヤ720、および/またはサブレイヤ730などの多くのOLSおよび多くのレイヤを含み得る。さらに、いくつかのレイヤが、複数のOLSに含まれ得る。したがって、マルチレイヤビデオシーケンス600および/または700などのマルチレイヤビデオシーケンスは、非常に複雑になる場合がある。例えば、スケーラブルネスティングSEIメッセージは、多くのOLS、レイヤ、および/またはサブレイヤに適用されるスケーラブルネスティングされたSEIメッセージを含み得る。デコーダがターゲットOLSを要求すると、エンコーダ/HRDは、ビットストリーム800に対してサブビットストリーム抽出プロセスを実行することができる。エンコーダ/HRDは、例えば、VPS811、SPS813、PPS815、スライスヘッダ817、SEIメッセージ819などから、ターゲットOLSを形成する画像データ820および支持パラメータを抽出する。そのような抽出は、NALユニット829に対してNALユニット829ベースで実行される。その結果、ターゲットOLSを復号するのに十分な情報を含むビットストリーム800のサブビットストリームが得られる。抽出されない情報は、要求されたターゲットOLSの一部ではなく、デコーダに送信されない。スケーラブルネスティングSEIメッセージは、多くのレイヤ、サブレイヤ、および/またはOLSに関連するデータを含み得る。したがって、いくつかのビデオコード化システムは、ターゲットOLSが標準適合性についてチェックされ、デコーダで適切に復号されることを保証するために、抽出されたサブビットストリーム内にすべてのスケーラブルネスティングSEIメッセージを含み得る。次いで、HRDは、デコーダに送信する前に適合性試験のセットを実行する。この手法は過大であり、したがって非効率的であり得る。例えば、スケーラブルネスティングSEIメッセージのうちのいくつかは、ターゲットOLSとは完全に無関係であり得る。これらの無関係なスケーラブルネスティングSEIメッセージは、抽出されたサブビットストリーム内に留まり、デコーダへ送信される。これは、いかなる追加の機能も提供することなく、最終サブビットストリームのサイズを増加させることができる。
【0124】
本開示は、マルチレイヤビットストリーム600および/または700などのマルチレイヤビットストリームを符号化するビットストリーム800から抽出されたサブビットストリームのサイズを低減するためのメカニズムを含む。サブビットストリーム抽出中、スケーラブルネスティングSEIメッセージは、ビットストリームから除去するために考慮され得る。例えば、スケーラブルネスティングSEIメッセージは、OLSおよび/またはレイヤに関連し得る。スケーラブルネスティングSEIメッセージが指定されたOLSに関連する場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージ(例えば、SEIメッセージ819)がチェックされる。スケーラブルネスティングされたSEIメッセージがターゲットOLS内のいかなるレイヤにも関連しない場合、スケーラブルネスティングSEIメッセージ全体をサブビットストリームから除去することができる。これにより、デコーダに送信されるサブビットストリームのサイズが低減される。したがって、本例は、コード化効率を高め、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用を低減する。
【0125】
サブビットストリームは、ビットストリーム800の一種であることに留意されたい。具体的には、サブビットストリームは、より大きなビットストリーム800から抽出されたビットストリーム800である。したがって、ビットストリーム800という用語は、コンテキストに応じて、最初に符号化されたビットストリーム800、抽出されたサブビットストリーム、またはその両方を指し得る。
【0126】
例えば、VPS811は、OLSの総数(TotalNumOlss)833を含み得る。TotalNumOlss833は、VPS811で指定されたOLSの総数を指定するシンタックス要素である。これは、抽出されるターゲットOLSを含むビットストリーム800内のすべてのOLSを、特定のユーザ要求に関連しない可能性がある任意の他のOLS(例えば、異なる画面解像度、フレームレートなどに関連する他のOLS)と共に含むことができる。
【0127】
さらに、SEIメッセージ819は、スケーラブルネスティングOLSフラグ831を含み得る。スケーラブルネスティングOLSフラグ831は、スケーラブルネスティングされたSEIメッセージが、特定のOLSまたは特定のレイヤに適用されるかを指定するフラグである。スケーラブルネスティングOLSフラグ831は、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージが特定のOLSに適用されることを指定するために1に等しく設定され、またはスケーラブルネスティングされたSEIメッセージが特定のレイヤに適用されることを指定するために0に等しく設定され得る。SEIメッセージ819はまた、OLSの数から1を引いたもの(num_olss_minus1)835およびOLSインデックス差分から1を引いた数(ols_idx_delta_minus1)837などの他のシンタックス要素を含み得る。num_olss_minus1 835は、スケーラブルネスティングSEIメッセージ内の対応するスケーラブルネスティングされたSEIメッセージが適用されるOLSの数を指定するシンタックス要素である。num_olss_minus1 835の値は、0~TotalNumOlss833から1を引いた数の値(両端を含む)の範囲内に制約される。ols_idx_delta_minus1 837は、スケーラブルネスティングOLSフラグ831が1に等しい場合に、スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定するネスティングOLSインデックス(NestingOlsIdx[i])の変数を導出するために採用可能な値を含む。i番目のOLSに対するols_idx_delta_minus1 837の値は、0~TotalNumOlss833から2を引いた数(両端を含む)の範囲内に制約される。値を表すために使用されるビットの数を低減するために、マイナスパラダイムを使用できることに留意されたい。例えば、minus1シンタックス要素の真値は、1を加算することによって決定することができる。
【0128】
前述のデータを使用して、適合性試験および/または送信の前に、スケーラブルネスティングSEIメッセージをサブビットストリーム内に含める、またはスケーラブルネスティングSEIメッセージを除去するかを決定し得る。具体的には、スケーラブルネスティングSEIメッセージは、スケーラブルネスティングOLSフラグ831が、スケーラブルネスティングSEIメッセージが1つまたは複数の特定のOLSに適用されることを示すように設定されている場合、例えば、スケーラブルネスティングOLSフラグが、1に設定されている場合に、サブビットストリームから除去されたかどうかをチェックされ得る。次いで、エンコーダ/HRDは、スケーラブルネスティングSEIメッセージをチェックして、含まれるスケーラブルネスティングされたSEIメッセージのいずれかがターゲットOLS内の任意のレイヤに関連するかどうかを決定する。スケーラブルネスティングSEIメッセージもスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージをサブビットストリームから除去することができる。例えば、エンコーダ/HRDは、num_olss_minus1 835の値をチェックして、スケーラブルネスティングSEIメッセージに関連付けられているOLSの数を決定し得る。次いで、エンコーダは、ターゲットOLSとの関連性について0とnum_olss_minus1 835との間の各OLSをチェックし得る。各現在のOLSについて、エンコーダ/HRDは、ols_idx_delta_minus1 837の値をチェックして、NestingOlsIdx[i]の値を導出して、スケーラブルネスティングされたSEIメッセージが適用される現在の(i番目の)OLSのOLSインデックスを決定し得る。ols_idx_delta_minus1 837から導出されるNestingOlsIdx[i]の値が、ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)に等しくない場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSに適用されない。そのような場合、HRD適合性試験または復号に悪影響を与えることなく、抽出されたサブビットストリームからスケーラブルネスティングSEIメッセージを除去することができる。このメカニズムは、ビットストリーム800からのサブビットストリーム抽出中にいくつかのSEIメッセージ819を除去することを可能にする。これにより、結果として得られるサブビットストリームのコード化効率が向上し、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用量が低減する。さらに、無関係なSEIメッセージ819を除去することにより、HRD適合性試験プロセスの複雑度を減少させ得、これにより、エンコーダおよび/またはHRDにおけるプロセッサおよび/またはメモリリソースの使用量が低減する。
【0129】
ここで、前述の情報を以下でより詳細に説明する。レイヤ化されたビデオコード化はまた、スケーラブルビデオコード化またはスケーラビリティを有するビデオコード化とも呼ばれる。ビデオコード化におけるスケーラビリティは、マルチレイヤコード化技術を使用することによってサポートされ得る。マルチレイヤビットストリームは、ベースレイヤ(base layer、BL)および1つまたは複数の拡張レイヤ(enhancement layer、EL)を備える。スケーラビリティの例は、空間スケーラビリティ、品質/信号対雑音比(signal to noise ratio、SNR)スケーラビリティ、マルチビュースケーラビリティ、フレームレートスケーラビリティなどを含む。マルチレイヤコード化技術が使用される場合、ピクチャまたはその一部は、参照ピクチャを使用せずにコード化されてもよく(イントラ予測)、同じレイヤ内の参照ピクチャを参照することによってコード化されてもよく(インター予測)、および/または他のレイヤ内の参照ピクチャを参照することによってコード化されてもよい(レイヤ間予測)。現在のピクチャのレイヤ間予測に使用される参照ピクチャは、レイヤ間参照ピクチャ(inter-layer reference picture、ILRP)と呼ばれる。
図6は、異なるレイヤのピクチャが異なる解像度を有する空間スケーラビリティのためのマルチレイヤコード化の例を示す。
【0130】
いくつかのビデオコード化ファミリーは、単一レイヤコード化のためのプロファイルから分離されたプロファイルにおけるスケーラビリティの支持を提供する。スケーラブルビデオコード化(SVC)は、空間、時間、および品質のスケーラビリティの支持を提供する高度なビデオコード化(AVC)のスケーラブル拡張である。SVCの場合、下位レイヤからのコロケートブロックを使用してEL MBが予測されるかどうかを示すために、ELピクチャ内の各マクロブロック(MB)においてフラグがシグナリングされる。コロケートブロックからの予測は、テクスチャ、動きベクトル、および/またはコード化モードを含み得る。SVCの実装は、それらの設計において修正されていないAVC実装を直接再利用しない場合がある。SVC ELマクロブロックシンタックスおよび復号プロセスは、AVCシンタックスおよび復号プロセスとは異なる。
【0131】
スケーラブルHEVC(SHVC)は、空間および品質のスケーラビリティの支持を提供するHEVCの拡張である。マルチビューHEVC(MV-HEVC)は、マルチビュースケーラビリティの支持を提供するHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCよりも高度で効率的な3Dビデオコード化の支持を提供するHEVCの拡張である。時間スケーラビリティは、単一レイヤHEVCコーデックの不可欠な部分として含まれ得る。HEVCのマルチレイヤ拡張では、レイヤ間予測に使用される復号されたピクチャは、同じAUのみから来て、ロングターム参照ピクチャ(long-term reference picture、LTRP)として扱われる。そのようなピクチャには、現在のレイヤ内の他の時間参照ピクチャと共に、参照ピクチャリスト内の参照インデックスが割り当てられる。レイヤ間予測(Inter-layer prediction、ILP)は、参照ピクチャリスト内のレイヤ間参照ピクチャを参照するための参照インデックスの値を設定することにより、予測ユニット(PU)レベルで達成される。空間スケーラビリティは、ILRPが符号化または復号されている現在のピクチャとは異なる空間解像度を有する場合、参照ピクチャまたはその一部をリサンプルする。参照ピクチャのリサンプリングは、ピクチャレベルまたはコード化ブロックレベルのいずれかで実現され得る。
【0132】
VVCはまた、レイヤ化されたビデオコード化を支持し得る。VVCビットストリームは、複数のレイヤを含み得る。レイヤは、すべて互いに独立していてもよい。例えば、レイヤ間予測を使用せずに、各レイヤをコード化し得る。この場合、レイヤはまた、サイマルキャストレイヤとも呼ばれる。場合によっては、レイヤの一部は、ILPを使用してコード化される。VPS内のフラグは、レイヤがサイマルキャストレイヤであるか、またはいくつかのレイヤがILPを使用するか、を示し得る。いくつかのレイヤがILPを使用する場合、レイヤ間のレイヤ依存関係はまた、VPSでシグナリングされる。SHVCおよびMV-HEVCとは異なり、VVCは、OLSを指定しない場合がある。OLSは、指定されたレイヤのセットを含み、レイヤのセット内の1つまたは複数のレイヤが出力レイヤであるように指定される。出力レイヤは、出力されるOLSのレイヤである。VVCのいくつかの実装形態では、レイヤがサイマルキャストレイヤである場合、復号および出力のために1つのレイヤのみが選択され得る。VVCのいくつかの実装形態では、任意のレイヤがILPを使用するとき、すべてのレイヤを含むビットストリーム全体が復号されるように指定される。さらに、レイヤのうち、特定のレイヤを出力レイヤと指定する。出力レイヤは、最高レイヤのみ、すべてのレイヤ、または最高レイヤに示された下位レイヤのセットを加えたものであると示され得る。
【0133】
ビデオコード化標準は、指定された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つまたは複数のレイヤを含む。
【0134】
前述の態様は、特定の問題を含む。例えば、第1の2セットの適合性試験は、復号されず出力されないレイヤに適用することができる。例えば、最下位レイヤ以外のレイヤは復号されず、出力されなくてもよい。実際の用途では、デコーダは、復号されるデータのみを受信し得る。このように、第1の2セットの適合性試験を使用することは、両方ともコーデック設計を複雑にし、適合性試験を支持するために使用されるシーケンスレベルおよびピクチャレベルの両方のパラメータを搬送するためにビットを浪費し得る。適合性試験の第3のセットは、ビットストリーム分割を含む。そのような分割は、マルチレイヤビットストリームのOLSの1つまたは複数のレイヤに関連し得る。適合性試験が常にレイヤごとに別々に動作する場合、HRDは、大幅に簡略化され得る。
【0135】
シーケンスレベルのHRDパラメータのシグナリングは、複雑であり得る。例えば、シーケンスレベルのHRDパラメータは、SPSおよびVPSの両方などの複数の場所でシグナリングされ得る。さらに、シーケンスレベルのHRDパラメータシグナリングは、冗長性を含み得る。例えば、ビットストリーム全体について一般に同じであり得る情報は、各OLSの各レイヤで繰り返され得る。加えて、例示的なHRDスキームでは、レイヤごとに異なる配信スケジュールを選択することができる。そのような配信スケジュールは、動作点がOLSまたはOLSの時間サブセットである動作点ごとにレイヤごとにシグナリングされたスケジュールのリストから選択され得る。そのようなシステムは、複雑である。さらに、例示的なHRDスキームは、不完全なAUがバッファリング期間SEIメッセージに関連付けられることを可能にする。不完全なAUは、CVSに存在するすべてのレイヤのピクチャを有さないAUである。しかしながら、そのようなAUでのHRD初期化は、問題となり得る。例えば、不完全なAUに存在しないレイヤアクセスユニットを有するレイヤのために、HRDが適切に初期化されない場合があり得る。加えて、レイヤビットストリームを導出するための逆多重化プロセスは、ターゲットレイヤに適用されないネストされたSEIメッセージを十分かつ効率的に除去しない場合があり得る。ビットストリーム分割が1つのレイヤのみを含む場合、レイヤビットストリームが生じる。さらに、ビットストリーム全体に対して、スケーラブルネスティングされていないバッファリング期間、ピクチャタイミング、および復号ユニット情報SEIメッセージの適用OLSを指定し得る。しかしながら、スケーラブルネスティングされていないバッファリング期間は、代わりに、0番目のOLSに適用可能であるべきである。
【0136】
さらに、いくつかの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メッセージにおいて、常に特定の値に等しいとは限らない。
【0137】
また、SHVC/MV-HEVCおよびVVCの両方におけるHRD設計には、以下の問題が伴う。サブビットストリーム抽出プロセスは、ターゲットOLSに必要とされないネストされたSEIメッセージを含むSEI NALユニットを除去しなくてもよい。
【0138】
一般に、本開示は、マルチレイヤビデオビットストリームにおける出力レイヤセットのためのSEIメッセージのスケーラブルネスティングのための手法を記載する。技術の説明は、VVCに基づく。しかしながら、技術はまた、他のビデオコーデック仕様に基づく、レイヤ化されたビデオコード化にも適用される。
【0139】
上記の問題のうち1つまたは複数は、以下のように解決することができる。具体的には、本開示は、SHVCおよびMV-HEVCと比較してはるかに単純なHRD動作でHRDパラメータの効率的なシグナリングを可能にするHRD設計および関連する態様のための方法を含む。以下に説明する解決策の各々は、上記の問題に対応する。例えば、3セットの適合性試験を必要とする代わりに、本開示は、VPSによって指定されたOLSの適合性を試験するために1セットの適合性試験のみを使用し得る。さらに、ビットストリーム分割に基づく設計の代わりに、開示されたHRDメカニズムは常に、OLSのレイヤごとに別々に動作し得る。さらに、すべてのOLSのすべてのレイヤおよびサブレイヤについてグローバルであるシーケンスレベルのHRDパラメータは、例えば、VPSにおいて一度だけシグナリングされ得る。加えて、単一の数の配信スケジュールは、すべての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ユニットを除去してもよい。
【0140】
前述のメカニズムの例示的な実装形態は、以下の通りである。出力レイヤは、出力される出力レイヤセットのレイヤである。OLSは、指定されたレイヤのセットを含むレイヤのセットであり、レイヤのセット内の1つまたは複数のレイヤが出力レイヤであるように指定される。OLSレイヤインデックスは、OLSにおけるレイヤのリストに対する、OLSにおけるレイヤのインデックスである。サブビットストリーム抽出プロセスは、ターゲットOLSインデックスおよびターゲット最高TemporalIdによって決定される、ターゲットセットに属さないビットストリーム内のNALユニットをビットストリームから除去する指定されたプロセスであり、出力サブビットストリームは、ターゲットセットに属するビットストリーム内のNALユニットを含む。
【0141】
例示的なビデオパラメータセットシンタックスは、以下の通りである。
【表1】
【0142】
例示的なシーケンスパラメータセットRBSPシンタックスは、以下の通りである。
【表2】
【0143】
例示的なDPBパラメータシンタックスは、以下の通りである。
【表3】
【0144】
例示的な一般HRDパラメータシンタックスは、以下の通りである。
【表4】
【0145】
例示的なビデオパラメータセットRBSPセマンティクスは、以下の通りである。each_layer_is_an_ols_flagは1に等しく設定されて、各出力レイヤセットが1つのレイヤのみを含み、ビットストリーム内の各レイヤ自体が、単一の含まれるレイヤが唯一の出力レイヤである出力レイヤセットであることを指定する。each_layer_is_an_ols_flagは、出力レイヤセットが2つ以上のレイヤを含み得ることを指定するために0に等しく設定される。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に等しいと推測される。
【0146】
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の総数を指定する。
【0147】
VPSによって指定されたOLSの総数を指定する変数TotalNumOlssは、以下のように導出される。
【数1】
【0148】
layer_included_flag[i][j]は、ols_mode_idcが2に等しい場合に、j番目のレイヤ(nuh_layer_idがvps_layer_id[j]に等しいレイヤ)がi番目のOLSに含まれるかを指定する。layer_included_flag[i][j]は、j番目のレイヤがi番目のOLSに含まれることを指定するために、1に等しく設定される。layer_included_flag[i][j]は、0に等しく設定されて、j番目のレイヤがi番目のOLSに含まれないことを指定する。
【0149】
i番目のOLSのレイヤ数を指定する変数NumLayersInOls[i]と、i番目のOLSのj番目のレイヤのnuh_layer_id値を指定する変数LayerIdInOls[i][j]とは、以下のように導出される。
【数2】
【0150】
nuh_layer_idがLayerIdInOls[i][j]に等しいレイヤのOLSレイヤインデックスを指定する変数OlsLayeIdx[i][j]は、以下のように導出される。
【数3】
【0151】
各OLSの最下レイヤは、独立したレイヤとする。言い換えれば、0~TotalNumOlss-1(両端を含む)の範囲内の各iについて、vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]]の値は、1に等しいものとする。各レイヤは、VPSによって指定された少なくとも1つのOLSに含まれるものとする。言い換えれば、0~vps_max_layers_minus1(両端を含む)の範囲内のkについてvps_layer_id[k]のうちの1つに等しいnuh_layer_idの特定の値nuhLayerIdを有する各レイヤについて、LayerIdInOls[i][j]の値がnuhLayerIdに等しくなるように、iおよびjの値の少なくとも1つの対が存在するものとし、iは0~TotalNumOlss-1(両端を含む)の範囲内にあり、jはNumLayersInOls[i]-1(両端を含む)の範囲内にある。OLSにおける任意のレイヤは、OLSの出力レイヤまたはOLSの出力レイヤの(直接的または間接的な)参照レイヤであるものとする。
【0152】
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に等しいと推測される。変数OutputLayerFlag[i][j]は、値1がi番目のOLSにおけるj番目のレイヤを出力することを指定し、値0がi番目のOLSにおけるj番目のレイヤを出力しないことを指定するものであり、以下のように導出される。
【数4】
0番目のOLSは、最下位レイヤ(nuh_layer_idがvps_layer_id[0]と等しいレイヤ)のみを含み、0番目のOLSについては、含まれるレイヤのみが出力される。
【0153】
vps_extension_flagは、0に等しく設定されて、vps_extension_data_flagシンタックス要素がVPS RBSPシンタックス構造に存在しないことを指定する。vps_extension_flagは、1に等しく設定されて、vps_extension_data_flagシンタックス要素がVPS RBSPシンタックス構造に存在することを指定する。vps_extension_data_flagは、任意の値を有し得る。vps_extension_data_flagの存在および値は、指定されたプロファイルへのデコーダの適合性に影響しない。デコーダは、すべてのvps_extension_data_flagシンタックス要素を無視するものとする。
【0154】
例示的なDPBパラメータセマンティクスは、以下の通りである。dpb_parameters()シンタックス構造は、DPBサイズ情報、ならびに任意に、最大ピクチャ並べ替え番号および最大待ち時間(maximum picture reorder number and maximum latency、MRML)情報を提供する。各SPSは、1、またはdpb_parameters()シンタックス構造を含む。SPSにおける第1のdpb_parameters()シンタックス構造は、DPBサイズ情報およびMRML情報の両方を含む。存在する場合、SPSにおける第2のdpb_parameters()シンタックス構造は、DPBサイズ情報のみを含む。SPSにおける第1のdpb_parameters()シンタックス構造におけるMRML情報は、レイヤがOLSにおける出力レイヤであるかにかかわらず、SPSを参照するレイヤに適用される。SPSにおける第1のdpb_parameters()シンタックス構造におけるDPBサイズ情報は、レイヤがOLSの出力レイヤである場合、SPSを参照するレイヤに適用される。存在する場合、SPSにおける第2のdpb_parameters()シンタックス構造に含まれるDPBサイズ情報は、そのレイヤがOLSの非出力レイヤである場合にSPSを参照するレイヤに適用される。SPSが1つのdpb_parameters()シンタックス構造のみを含む場合、非出力レイヤとしてのレイヤのDPBサイズ情報は、出力レイヤとしてのレイヤのDPBサイズ情報と同じであると推測される。
【0155】
例示的な一般HRDパラメータセマンティクスは、以下の通りである。general_hrd_parameters()シンタックス構造は、HRD動作で使用されるHRDパラメータを提供する。sub_layer_cpb_params_present_flagは、1に等しく設定されて、i番目のlayer_level_hrd_parameters()シンタックス構造が、0~hrd_max_temporal_id[i](両端を含む)の範囲内のTemporalIdを有するサブレイヤ表現のHRDパラメータを含むことが指定される。sub_layer_cpb_params_present_flagは、0に等しく設定されて、i番目のlayer_level_hrd_parameters()シンタックス構造が、hrd_max_temporal_id[i]のみに等しいTemporalIdを有するサブレイヤ表現のHRDパラメータを含むことが指定される。vps_max_sub_layers_minus1が0に等しい場合、sub_layer_cpb_params_present_flagの値は、0に等しいと推測される。sub_layer_cpb_params_present_flagが0に等しい場合、0~hrd_max_temporal_id[i]-1(両端を含む)の範囲内のTemporalIdを有するサブレイヤ表現のHRDパラメータは、TemporalIdがhrd_max_temporal_id[i]に等しいサブレイヤ表現のHRDパラメータと同じであると推測される。これらは、fixed_pic_rate_general_flag[i]シンタックス要素から始まって、layer_level_hrd_parametersシンタックス構造内の条件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に等しいと推測される。
【0156】
例示的なサブビットストリーム抽出プロセスは、以下の通りである。このプロセスへの入力は、ビットストリームinBitstream、ターゲットOLSインデックスtargetOlsIdx、およびターゲット最高TemporalId値tIdTargetである。このプロセスの出力は、サブビットストリームoutBitstreamである。入力ビットストリームのビットストリーム適合性の要件は、ビットストリーム、VPSによって指定されたOLSのリストに対するインデックスに等しいtargetOlsIdx、および0~6(両端を含む)の範囲内の任意の値に等しいtIdTargetを入力としてこの節で指定されたプロセスの出力であり、且つ、以下の条件を満たす任意の出力サブビットストリームが適合ビットストリームであるとすることである。出力サブビットストリームは、LayerIdInOls[targetOlsIdx]内のnuh_layer_id値の各々に等しいnuh_layer_idを有する少なくとも1つのVCL NALユニットを含むべきである。出力サブビットストリームは、TemporalIdがtIdTargetに等しい少なくとも1つのVCL NALユニットを含むべきである。適合ビットストリームは、0に等しいTemporalIdを有する1つまたは複数のコード化されたスライスNALユニットを含むが、0に等しいnuh_layer_idを有するコード化されたスライスNALユニットを含む必要はない。
【0157】
出力サブビットストリームOutBitstreamは、以下のように導出される。ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一に設定される。tIdTargetより大きいTemporalIdを有するすべてのNALユニットをoutBitstreamから除去する。リストLayerIdInOls[targetOlsIdx]に含まれていないnuh_layer_idを有するすべてのNALユニットをoutBitstreamから除去する。NestingOlsIdx[i]がtargetOlsIdxに等しくなるように、nesting_ols_flagが1に等しく、0~nesting_num_olss_minus1(両端を含む)の範囲内にiの値が存在しないスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。targetOlsIdxがゼロより大きい場合、outBitstreamから、payloadTypeが0(バッファリング期間)、1(ピクチャタイミング)、または130(復号ユニット情報)に等しい、スケーラブルネスティングされていないSEIメッセージを含むすべてのSEI NALユニットを除去する。
【0158】
例示的なHRDの一般的な態様は、以下の通りである。このセクションは、HRDと、ビットストリームおよびデコーダの適合性をチェックするためのその使用とを指定する。ビットストリーム適合性試験のセットは、ビットストリーム全体と呼ばれ、entireBitstreamとして示される、ビットストリームの適合性をチェックするために使用される。ビットストリーム適合性試験のセットは、VPSおよび各OLSの時間サブセットによって指定された各OLSの適合性を試験するためのものである。各試験について、以下の順序付きステップが列挙された順序で適用される。
【0159】
targetOpとして示される試験中の動作点は、OLSインデックスopOlsIdxおよび最高TemporalId値opTidを有するターゲットOLSを選択することによって選択される。opOlsIdxの値は、0~TotalNumOlss-1(両端を含む)の範囲内である。opTidの値は、0~vps_max_sub_layers_minus1(両端を含む)の範囲内である。opOlsIdxおよびopTidの値は、entireBitstream、opOlsIdx、およびopTidを入力として、サブビットストリーム抽出プロセスを呼び出すことによって出力されたサブビットストリームBitstreamToDecodeが、以下の条件を満たすようにする。BitstreamToDecode内のLayerIdInOls[opOlsIdx]内のnuh_layer_id値の各々に等しいnuh_layer_idを有する少なくとも1つのVCL NALユニットが存在する。BitstreamToDecodeには、TemporalIdがopTidに等しい少なくとも1つのVCL NALユニットが存在する。
【0160】
TargetOlsIdxおよびHtidの値は、それぞれ、targetOpのopOlsIdxおよびopTidに等しく設定される。ScIdxの値を選択する。選択されたScIdxは、0~hrd_cpb_cnt_minus1(両端を含む)の範囲内とする。TargetOlsIdxに適用可能なバッファリング期間SEIメッセージ(TargetLayerBitstreamに存在する、または本明細書で指定されていない外部メカニズムを介して利用可能)に関連付けられたBitstreamToDecode内のアクセスユニットは、HRD初期化点として選択され、ターゲットOLS内のレイヤごとにアクセスユニット0と呼ばれる。
【0161】
後続のステップは、ターゲットOLS内のOLSレイヤインデックスTargetOlsLayerIdxを有する各レイヤに適用される。ターゲットOLS内にレイヤが1つしかない場合、試験下のレイヤビットストリームTargetLayerBitstreamは、BitstreamToDecodeと同一に設定される。そうでなければ、TargetLayerBitstreamは、BitstreamToDecode、TargetOlsIdx、およびTargetOlsLayerIdxを入力としてレイヤビットストリームを導出するための逆多重化プロセスを呼び出すことによって導出され、出力は、TargetLayerBitstreamに割り当てられる。
【0162】
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_zero_8bits、zero_byte、start_code_prefix_one_3bytes、およびtrailing_zero_8bitsのシンタックス要素は、TargetLayerBitstreamから破棄され、残りのビットストリームは、TargetLayerBitstreamに割り当てられる。
【0163】
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に存在する、または外部メカニズムを介して利用可能)が選択される。
【0164】
各適合性試験は、上記の各ステップにおける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に等しい。
【0165】
HRDは、ビットストリームデマルチプレクサ(任意選択で存在する)、各レイヤのコード化ピクチャバッファ(CPB)、各レイヤの瞬時復号プロセス、各レイヤのサブDPBを含む復号されたピクチャバッファ(DPB)、および出力クロッピングを含む。
【0166】
一例では、HRDは以下のように動作する。HRDは復号ユニット0で初期化され、DPBの各CPBおよび各サブDPBは、空に設定される。各サブDPBのサブDPBフルネスは、0に等しく設定される。初期化後、HRDは、後続のバッファリング期間SEIメッセージによって再び初期化されない。指定された到着スケジュールに従って各CPBに流入する復号ユニットに関連付けられたデータは、HSSによって配信される。復号ユニットのCPB除去時の瞬時復号プロセスにより、各復号ユニットに関連付けられたデータが瞬時に除去されて復号される。各復号されたピクチャは、DPBに配置される。復号されたピクチャは、インター予測参照に必要とされなくなり、かつ出力に必要とされなくなると、DPBから除去される。
【0167】
一例では、レイヤビットストリームを導出するための逆多重化プロセスは、以下の通りである。このプロセスへの入力は、ビットストリームinBitstream、ターゲットOLSインデックスtargetOlsIdx、およびターゲットOLSレイヤインデックスtargetOlsLayerIdxである。このプロセスの出力は、レイヤビットストリームoutBitstreamである。出力レイヤビットストリームoutBitstreamは、以下の通りである。ビットストリームoutBitstreamは、ビットストリームinBitstreamと同一に設定される。LayerIdInOls[targetOlsIdx][targetOlsLayerIdx]に等しくないnuh_layer_idを有するすべてのNALユニットをoutBitstreamから除去する。NestingOlsLayerIdx[i][j]がtargetOlsLayerIdxに等しくなるように、nesting_ols_flagが1に等しく、それぞれ、0~nesting_num_olss_minus1(両端を含む)、および0~nesting_num_ols_layers_minus1[i](両端を含む)の範囲内にiおよびjの値が存在しないスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。NestingOlsLayerIdx[i][j]がtargetOlsLayerIdxよりも小さくなるように、nesting_ols_flagが1に等しく、それぞれ、0~nesting_num_olss_minus1(両端を含む)、および0~nesting_num_ols_layers_minus1[i](両端を含む)の範囲内にiおよびjの値が存在するスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。NestingLayerId[i]がLayerIdInOls[targetOlsIdx][targetOlsLayerIdx]に等しくなるように、nesting_ols_flagが0に等しく、0~NestingNumLayers-1(両端を含む)の範囲内にiの値が存在しないスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。NestingLayerId[i]がLayerIdInOls[targetOlsIdx][targetOlsLayerIdx]よりも小さくなるように、nesting_ols_flagが0に等しく、0~NestingNumLayers-1(両端を含む)の範囲内にiのうちの少なくとも1つの値が存在するスケーラブルネスティングSEIメッセージを含むすべてのSEI NALユニットをoutBitstreamから除去する。
【0168】
例示的なバッファリング期間SEIメッセージシンタックスは、以下の通りである。
【表5】
【0169】
例示的なスケーラブルネスティングSEIメッセージシンタックスは、以下の通りである。
【表6】
【0170】
例示的な一般SEIペイロードセマンティクスは、以下の通りである。以下は、スケーラブルネスティングされていないSEIメッセージの(OLSのコンテキストで、または一般に)適用可能なレイヤに適用される。スケーラブルネスティングされていないSEIメッセージの場合、payloadTypeが0(バッファリング期間)、1(ピクチャタイミング)、または130(復号単位情報)に等しいとき、スケーラブルネスティングされていないSEIメッセージは、0番目のOLSのコンテキストにおける最下位レイヤにのみ適用される。スケーラブルネスティングされていないSEIメッセージの場合、payloadTypeがVclAssociatedSeiListの中の任意の値に等しいとき、スケーラブルネスティングされていないSEIメッセージは、VCL NALユニットが、SEIメッセージを含むSEI NALユニットのnuh_layer_idに等しいnuh_layer_idを有するレイヤにのみ適用される。
【0171】
例示的なバッファリング期間SEIメッセージセマンティクスは、以下の通りである。バッファリング期間SEIメッセージは、復号順序で関連付けられたアクセスユニットの位置でHRDを初期化するための初期CPB除去遅延および初期CPB除去遅延オフセット情報を提供する。バッファリング期間SEIメッセージが存在するとき、ピクチャは、0に等しいTemporalIdを有し、RASLまたはランダムアクセス復号可能先行(random access decodable leading、RADL)ピクチャではない場合、notDiscardablePicピクチャであると言われる。現在のピクチャが復号順序でビットストリーム内の第1のピクチャではない場合、prevNonDiscardablePicを、RASLまたはRADLピクチャではない0に等しいTemporalIdを有する復号順序で先行するピクチャとする。
【0172】
バッファリング期間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メッセージを有するものとする。
【0173】
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の値と等しいものとする。
【0174】
例示的なピクチャタイミング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を加えた数は、ピクチャタイミングSEIメッセージにCPB除去遅延情報が含まれる最高サブレイヤ表現のTemporalIdを指定する。pt_max_sub_layers_minus1の値は、0~vps_max_sub_layers_minus1(両端を含む)の範囲内とする。
【0175】
例示的なスケーラブルネスティングSEIメッセージセマンティクスは、以下の通りである。スケーラブルネスティングSEIメッセージは、SEIメッセージを、特定のOLSのコンテキストにおける特定のレイヤに、またはOLSのコンテキストにはない特定のレイヤに関連付けるためのメカニズムを提供する。スケーラブルネスティングSEIメッセージは、1つまたは複数のSEIメッセージを含む。スケーラブルネスティングSEIメッセージに含まれるSEIメッセージはまた、スケーラブルネスティングされたSEIメッセージとも呼ばれる。ビットストリーム適合性の要件は、スケーラブルネスティングSEIメッセージ内にSEIメッセージを含める場合に以下の制限を適用することである。132(復号されたピクチャハッシュ)または133(スケーラブルネスティング)に等しいpayloadTypeを有するSEIメッセージは、スケーラブルネスティングSEIメッセージに含まれないものとする。スケーラブルネスティングSEIメッセージが、バッファリング期間、ピクチャタイミング、または復号ユニット情報SEIメッセージを含む場合、スケーラブルネスティングSEIメッセージは、payloadTypeが0(バッファリング期間)、1(ピクチャタイミング)、または130(復号ユニット情報)に等しくない任意の他のSEIメッセージを含まないものとする。
【0176】
ビットストリーム適合性の要件は、スケーラブルネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeの値に以下の制限を適用することである。スケーラブルネスティングSEIメッセージが、payloadTypeが0(バッファリング期間)、1(ピクチャタイミング)、130(復号ユニット情報)、145(従属RAP指示)、または168(フレームフィールド情報)に等しいSEIメッセージを含む場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、PREFIX_SEI_NUTに等しいnal_unit_typeを有するものとする。スケーラブルネスティングSEIメッセージが、132(復号されたピクチャハッシュ)に等しいpayloadTypeを有するSEIメッセージを含む場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、SUFFIX_SEI_NUTに等しいnal_unit_typeを有するものとする。
【0177】
nesting_ols_flagは、スケーラブルネスティングされたSEIメッセージが特定のOLSのコンテキストにおける特定のレイヤに適用されることを指定するために、1に設定される。nesting_ols_flagは、スケーラブルネスティングされたSEIメッセージが、一般に、特定のレイヤに適用される(OLSのコンテキストにはない)ことを指定するために、0に設定される。ビットストリーム適合性の要件は、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】
【0178】
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】
【0179】
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メッセージが、一般に、現在のSEI NALユニットのnuh_layer_id以上のnuh_layer_idを有するすべてのレイヤに適用されることを指定するために、1に設定される。nesting_all_layers_flagは、スケーラブルネスティングされたSEIメッセージが、一般に、現在のSEI NALユニットのnuh_layer_id以上の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】
【0180】
nesting_num_seis_minus1に1を加えた数は、スケーラブルネスティングされたSEIメッセージの数を指定する。nesting_num_seis_minus1の値は、0~63(両端を含む)の範囲内とする。nesting_zero_bitは、0に等しいものとする。
【0181】
図9は、例示的なビデオコード化装置900を示す概略図である。ビデオコード化装置900は、本明細書に記載の開示された例/実施形態を実装するのに好適である。ビデオコード化装置900は、ネットワークを介して上流および/または下流でデータを通信するための送信機および/または受信機を含む、下流ポート920、上流ポート950、および/またはトランシーバユニット(Tx/Rx)910を備える。ビデオコード化装置900はまた、データを処理するための論理ユニットおよび/または中央処理装置(central processing unit、CPU)を含むプロセッサ930と、データを記憶するためのメモリ932とを含む。ビデオコード化装置900はまた、電気、光、または無線通信ネットワークを介したデータの通信のために、上流ポート950および/または下流ポート920に結合された、電気、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、および/または無線通信コンポーネントを備え得る。ビデオコード化装置900はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)装置960を含み得る。I/O装置960は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力装置を含み得る。I/O装置960はまた、キーボード、マウス、トラックボールなどの入力装置、および/またはそのような出力装置と対話するための対応するインターフェースを含み得る。
【0182】
プロセッサ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を実装するために使用され得る。さらに、HRD適合性チェックプロセスを支持するために、コード化モジュール914を使用して、パラメータをビットストリームに符号化することができる。したがって、コード化モジュール914は、上述した問題のうち1つまたは複数に対処するためのメカニズムを実行するように構成され得る。したがって、コード化モジュール914は、ビデオデータをコード化するときに、ビデオコード化装置900に追加の機能性および/またはコード化効率を提供させる。このように、コード化モジュール914は、ビデオコード化装置900の機能性を改善し、ビデオコード化技術に特有の問題に対処する。さらに、コード化モジュール914は、ビデオコード化装置900を異なる状態に変換する。あるいは、コード化モジュール914は、(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)メモリ932に記憶され、プロセッサ930によって実行される命令として実装することができる。
【0183】
メモリ932は、ディスク、テープドライブ、ソリッドステートドライブ、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三元連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1つまたは複数のメモリタイプを含む。メモリ932は、オーバーフローデータ記憶装置として使用され、そのようなプログラムが実行のために選択されたときにプログラムを記憶し、プログラム実行中に読み出される命令およびデータを記憶することができる。
【0184】
図10は、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージを除去することによって、ビデオシーケンスをビットストリームへ符号化する例示的な方法1000のフローチャートである。方法1000は、方法100を実行するときに、コーデックシステム200、エンコーダ300、および/またはビデオコード化装置900などのエンコーダによって使用され得る。さらに、方法1000は、HRD500上で動作し得、したがって、マルチレイヤビデオシーケンス600、マルチレイヤビデオシーケンス700、および/またはビットストリーム800に対して適合性試験を実行することができる。
【0185】
方法1000は、エンコーダがビデオシーケンスを受信し、例えば、ユーザ入力に基づいて、そのビデオシーケンスをマルチレイヤビットストリームに符号化することを決定したときに開始することができる。ステップ1001において、エンコーダは、レイヤ631、レイヤ632、サブレイヤ710、サブレイヤ720、および/またはサブレイヤ730を含むOLS625などの1つまたは複数のOLSを含むビットストリームを符号化する。ステップ1003において、エンコーダおよび/またはHRDは、OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行することができる。
【0186】
ステップ1005において、エンコーダ/HRDは、ビットストリームからSEI NALユニットを除去することができる。具体的には、SEI NALユニットは、スケーラブルネスティングSEIメッセージを含む。例えば、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージは除去される。具体例では、スケーラブルネスティングSEIメッセージは、スケーラブルネスティングOLSフラグが1に設定されている場合に、(例えば、特定のレイヤではなく)特定のOLSに適用され得る。したがって、エンコーダ/HRDは、スケーラブルネスティングOLSフラグが、スケーラブルネスティングSEIメッセージが1つまたは複数の特定のOLSに適用されることを示すように設定されている場合、スケーラブルネスティングSEIメッセージが、サブビットストリームから除去されたかをチェックし得る。
【0187】
次いで、エンコーダ/HRDは、スケーラブルネスティングSEIメッセージをチェックして、含まれるスケーラブルネスティングされたSEIメッセージのいずれかがターゲットOLS内の任意のレイヤに関連するかどうかを決定し得る。スケーラブルネスティングSEIメッセージもスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージをサブビットストリームから除去することができる。具体例では、スケーラブルネスティングSEIメッセージに、NestingOlsIdx[i]が、ターゲットOLSに関連付けられたtargetOlsIdxと等しくなるような、0~スケーラブルネスティングnum_olss_minus1(両端を含む)までの範囲内のインデックス(i)値が含まれていない場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージは、ターゲットOLSを参照しない。スケーラブルネスティングnum_olss_minus1は、スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し得る。スケーラブルネスティングnum_olss_minus1は、0~TotalNumOlssから1を引いた数(TotalNumOlss-1)の値(両端を含む)の範囲内に制約され得る。したがって、エンコーダ/HRDは、スケーラブルネスティングnum_olss_minus1の値をチェックして、スケーラブルネスティングSEIメッセージに関連付けられているOLSの数を決定し得る。次いで、エンコーダは、ターゲットOLSとの関連性について0とスケーラブルネスティングnum_olss_minus1との間の各OLSをチェックし得る。スケーラブルネスティングnum_olss_minus1の値は、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)の範囲内に制約され得る。TotalNumOlss-1は、ビットストリーム/サブビットストリーム内のOLSを指定するVPSに含まれ得る。NestingOlsIdx[i]は、スケーラブルネスティングOLSフラグが1に設定されている場合に、スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定し得る。各現在のOLSについて、エンコーダ/HRDは、スケーラブルネスティングols_idx_delta_minus1の値をチェックして、NestingOlsIdx[i]の値を導出して、スケーラブルネスティングされたSEIメッセージが適用される現在の/i番目のOLSのOLSインデックスを決定し得る。ols_idx_delta_minus1から導出されるNestingOlsIdx[i]の値が、ターゲットOLSに関連付けられたtargetOlsIdxに等しくない場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSに適用されない。そのような場合、HRD適合性試験または復号に悪影響を与えることなく、抽出されたサブビットストリームからスケーラブルネスティングSEIメッセージを除去することができる。targetOlsIdxは、例えば、デコーダによって要求されるように、ターゲットOLSのOLSインデックスを識別することができることに留意されたい。
【0188】
ステップ1007において、エンコーダ/HRDは、例えば、ターゲットOLSに関連付けられ、抽出されたサブビットストリームに含まれる/抽出されたサブビットストリームから除去されないSEIメッセージに基づいて、ターゲットOLSに対してビットストリーム適合性試験のセットを実行する。ステップ1009において、エンコーダは、デコーダに向けて通信するためにビットストリームを記憶する。前述のメカニズムは、ターゲットOLS内の任意のレイヤに関連するスケーラブルネスティングされたSEIメッセージを含まないスケーラブルネスティングSEIメッセージをサブビットストリームから除去する。これにより、デコーダに送信されるサブビットストリームのサイズが低減される。したがって、本例は、コード化効率を高め、エンコーダおよびデコーダの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの使用を低減する。
【0189】
図11は、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージが除去されるビットストリームからビデオシーケンスを復号する例示的な方法1100のフローチャートである。残りのSEIメッセージは、HRD500などのHRDによるビットストリーム適合性試験に使用できる。方法1100は、方法100を実行するときに、コーデックシステム200、デコーダ400、および/またはビデオコード化装置900などのデコーダによって使用され得る。さらに、方法1100は、マルチレイヤビデオシーケンス600および/またはマルチレイヤビデオシーケンス700を含むビットストリーム800などのビットストリーム上で動作し得る。
【0190】
方法1100は、デコーダが、例えば、方法1000の結果として、マルチレイヤビデオシーケンスを表すコード化されたデータのビットストリームを受信し始めるときに開始し得る。ステップ1101において、デコーダは、ターゲットOLSを含むビットストリームを受信し得る。ターゲットOLSは、レイヤ631、レイヤ632、サブレイヤ710、サブレイヤ720、および/またはサブレイヤ730を含むOLS625などのOLSであり得る。さらに、ターゲットOLSは、デコーダによって要求され得る。スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、サブビットストリーム抽出プロセスの一部としてデコーダで受信される前に、スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEI NALユニットがビットストリームから除去されている。サブビットストリーム抽出プロセスは、エンコーダ上のHRDによって実行され得る。例えば、スケーラブルネスティングSEIメッセージは、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングOLSフラグが1に設定されている場合に、(例えば、レイヤではなく)特定のOLSに適用される。したがって、スケーラブルネスティングOLSフラグが、スケーラブルネスティングSEIメッセージが1つまたは複数の特定のOLSに適用されることを示すように設定されている場合、スケーラブルネスティングSEIメッセージが、サブビットストリームから除去され得る。
【0191】
さらに、スケーラブルネスティングSEIメッセージもスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージをサブビットストリームから除去することができる。具体例では、スケーラブルネスティングSEIメッセージに、NestingOlsIdx[i]が、ターゲットOLSに関連付けられたtargetOlsIdxと等しくなるような、0~スケーラブルネスティングnum_olss_minus1(両端を含む)までの範囲内のインデックス(i)値が含まれていない場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージは、ターゲットOLSを参照しない。スケーラブルネスティングnum_olss_minus1は、スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し得る。スケーラブルネスティングnum_olss_minus1は、0~TotalNumOlssから1を引いた数(TotalNumOlss-1)の値(両端を含む)の範囲内に制約され得る。したがって、スケーラブルネスティングnum_olss_minus1の値は、スケーラブルネスティングSEIメッセージに関連付けられているOLSの数を示し得る。ターゲットOLSとの関連性について0とスケーラブルネスティングnum_olss_minus1との間の各OLSをチェックし得る。スケーラブルネスティングnum_olss_minus1の値は、0~TotalNumOlss-1(両端を含む)の範囲内に制約され得る。TotalNumOlss-1は、ビットストリーム/サブビットストリーム内のOLSを指定するVPSに含まれ得る。NestingOlsIdx[i]は、スケーラブルネスティングOLSフラグが1に設定されている場合に、スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定し得る。各現在のOLSについて、スケーラブルネスティングols_idx_delta_minus1の値がチェックされ得、NestingOlsIdx[i]の値を導出して、スケーラブルネスティングされたSEIメッセージが適用される現在の/i番目のOLSのOLSインデックスを決定し得る。ols_idx_delta_minus1から導出されるNestingOlsIdx[i]の値が、ターゲットOLSに関連付けられたtargetOlsIdxに等しくない場合、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージのいずれもターゲットOLSに適用されない。そのような場合、スケーラブルネスティングSEIメッセージは、デコーダで受信される前に、抽出されたサブビットストリームから除去される。targetOlsIdxは、例えば、デコーダによって要求されるように、ターゲットOLSのOLSインデックスを識別することができることに留意されたい。
【0192】
ステップ1103において、デコーダは、ターゲットOLSからのピクチャを復号し得る。デコーダはまた、ステップ1107において、復号されたビデオシーケンスの一部として表示するためにピクチャを転送し得る。
【0193】
図12は、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、スケーラブルネスティングSEIメッセージを除去することによって、ビデオシーケンスをビットストリームへ符号化する例示的なシステム1200の概略図である。システム1200は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコード化装置900などのエンコーダおよびデコーダによって実装され得る。さらに、システム1200は、HRD500を使用して、マルチレイヤビデオシーケンス600、マルチレイヤビデオシーケンス700、および/またはビットストリーム800に対して適合性試験を実行することができる。加えて、システム1200は、方法100、1000、および/または1100を実装するときに使用され得る。
【0194】
システム1200は、ビデオエンコーダ1202を含む。ビデオエンコーダ1202は、1つまたは複数のOLSを備えるビットストリームを符号化するための符号化モジュール1203を備える。ビデオエンコーダ1202は、OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行するためのHRDモジュール1205をさらに備える。HRDモジュール1205はさらに、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むSEI NALユニットを、ビットストリームから除去するためのものである。HRDモジュール1205はさらに、ターゲットOLSに対してビットストリーム適合性試験のセットを実行するためのものである。ビデオエンコーダ1202はさらに、デコーダに向けて通信するためにビットストリームを記憶するための記憶モジュール1206を備える。ビデオエンコーダ1202はさらに、ビットストリームをビデオデコーダ1210に向けて送信するための送信モジュール1207を備える。ビデオエンコーダ1202はさらに、方法1000のステップのうちのいずれかを実行するように構成され得る。
【0195】
システム1200はまた、ビデオデコーダ1210を含む。ビデオデコーダ1210は、ターゲットOLSを備えるビットストリームを受信する受信モジュール1211を含み、スケーラブルネスティングSEIメッセージ内のスケーラブルネスティングされたSEIメッセージがターゲットOLSを参照しない場合、およびスケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEI NALユニットは、サブビットストリーム抽出プロセスの一部としてビットストリームから除去される。ビデオデコーダ1210はさらに、ターゲットOLSからのピクチャを復号するための復号モジュール1213を備える。ビデオデコーダ1210はさらに、復号されたビデオシーケンスの一部として表示するためにピクチャを転送するための転送モジュール1215を備える。ビデオデコーダ1210はさらに、方法1100のステップのうちのいずれかを実行するように構成され得る。
【0196】
第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体を除いて、介在するコンポーネントがない場合、第1のコンポーネントは第2のコンポーネントに直接結合される。第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体以外の介在するコンポーネントがある場合、第1のコンポーネントは第2のコンポーネントに間接的に結合される。「結合された」という用語およびその変形は、直接結合されたものおよび間接的に結合されたものの両方を含む。「約」という用語の使用は、特に明記しない限り、後続の数の±10%を含む範囲を意味する。
【0197】
本明細書に記載の例示的な方法のステップは、必ずしも記載された順序で実行される必要はなく、そのような方法のステップの順序は、単なる例示であると理解されるべきであることも理解されたい。同様に、本開示のさまざまな実施形態と一致する方法では、そのような方法に追加のステップを含めることができ、特定のステップを省略または組み合わせることができる。
【0198】
本開示ではいくつかの実施形態が提供されたが、開示されたシステムおよび方法は、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形態で具現化され得ることが理解されよう。本実施例は、例示的であり、限定的ではないと考えられるべきであり、その意図は本明細書に与えられた詳細に限定されるべきではない。例えば、さまざまな要素またはコンポーネントは、別のシステムに組み合わされ、もしくは統合されてもよく、または特定の特徴は、省略され、もしくは実装されなくてもよい。
【0199】
加えて、本開示の範囲から逸脱することなく、さまざまな実施形態において個別のまたは別個のものとして説明および図示された技術、システム、サブシステム、および方法は、他のシステム、コンポーネント、技術、または方法と組み合わされても、または統合されてもよい。変更、置換、および変更の他の例は、当業者によって確認可能であり、本明細書に開示された趣旨および範囲から逸脱することなく行うことができる。
[他の考えられる項目]
[項目1]
デコーダによって実装される方法であって、前記方法は、
前記デコーダの受信機により、ターゲット出力レイヤセット(OLS)を備えるビットストリームを受信する段階であって、スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、および前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、前記スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEIネットワーク抽象化レイヤ(NAL)ユニットは、サブビットストリーム抽出プロセスの一部として前記ビットストリームから除去される、受信する段階と、
前記プロセッサによって、前記ターゲットOLSからのピクチャを復号する段階と
を備える、方法。
[項目2]
前記サブビットストリーム抽出プロセスは、エンコーダ上の仮想参照デコーダ(HRD)によって実行される、項目1に記載の方法。
[項目3]
前記スケーラブルネスティングSEIメッセージは、スケーラブルネスティングOLSフラグが1に設定されている場合に、特定のOLSに適用される、項目1~2のいずれか一項に記載の方法。
[項目4]
前記スケーラブルネスティングSEIメッセージに、i番目のネスティングOLSインデックス(NestingOlsIdx[i])が、前記ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)と等しくなるような、0~OLSのスケーラブルネスティング数から1を引いた数(num_olss_minus1)(両端を含む)までの範囲のインデックス(i)値が含まれていない場合、スケーラブルネスティングされたSEIメッセージは、前記ターゲットOLSを参照しない、項目1~3のいずれか一項に記載の方法。
[項目5]
前記スケーラブルネスティングnum_olss_minus1は、前記スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定し、スケーラブルネスティングnum_olss_minus1の値は、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)までの範囲に制約される、項目1~4のいずれか一項に記載の方法。
[項目6]
前記targetOlsIdxは、前記ターゲットOLSのOLSインデックスを識別する、項目1~5のいずれか一項に記載の方法。
[項目7]
前記NestingOlsIdx[i]は、前記スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する、項目1~6のいずれか一項に記載の方法。
[項目8]
エンコーダによって実装される方法であって、前記方法は、
前記エンコーダのプロセッサによって、1つまたは複数の出力レイヤセット(OLS)を含むビットストリームを符号化する段階と、
前記プロセッサ上で動作する仮想参照デコーダ(HRD)によって、前記OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行する段階と、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、および前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、前記プロセッサ上で動作する前記HRDによって、前記スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットを、前記ビットストリームから除去する段階と、
前記プロセッサ上で動作する前記HRDによって、前記ターゲットOLS上でビットストリーム適合性試験のセットを実行する段階と
を備える、方法。
[項目9]
前記スケーラブルネスティングSEIメッセージは、スケーラブルネスティングOLSフラグが1に設定されている場合に、前記特定のOLSに適用される、項目8に記載の方法。
[項目10]
前記スケーラブルネスティングSEIメッセージに、i番目のネスティングOLSインデックス(NestingOlsIdx[i])が、前記ターゲットOLSに関連付けられたターゲットOLSインデックス(targetOlsIdx)と等しくなるような、0~OLSのスケーラブルネスティング数から1を引いた数(num_olss_minus1)(両端を含む)までの範囲のインデックス(i)値が含まれていない場合、スケーラブルネスティングされたSEIメッセージは、前記ターゲットOLSを参照しない、項目8~9のいずれか一項に記載の方法。
[項目11]
前記スケーラブルネスティングnum_olss_minus1は、前記スケーラブルネスティングSEIメッセージが適用されるOLSの数を指定する、項目8~10のいずれか一項に記載の方法。
[項目12]
スケーラブルネスティングnum_olss_minus1の値は、0~OLSの総数から1を引いた数(TotalNumOlss-1)(両端を含む)までの範囲に制約される、項目8~11のいずれか一項に記載の方法。
[項目13]
前記targetOlsIdxは、前記ターゲットOLSのOLSインデックスを識別する、項目8~12のいずれか一項に記載の方法。
[項目14]
前記NestingOlsIdx[i]は、前記スケーラブルネスティングOLSフラグが1に設定されている場合に、前記スケーラブルネスティングされたSEIメッセージが適用されるi番目のOLSのOLSインデックスを指定する、項目8~13のいずれか一項に記載の方法。
[項目15]
ビデオコード化装置であって、
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、前記受信機、前記メモリ、および前記送信機は、項目1~14のいずれか一項に記載の方法を実行するように構成される、ビデオコード化装置。
[項目16]
ビデオコード化装置による使用のためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、プロセッサによって実行されると、前記ビデオコード化装置に項目1~14のいずれか一項に記載の方法を実行させるように、前記コンピュータプログラム製品は、前記非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を含む、非一時的コンピュータ可読媒体。
[項目17]
デコーダであって、
ターゲット出力レイヤセット(OLS)を備えるビットストリームを受信する受信手段であって、スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、および前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、前記スケーラブルネスティングSEIメッセージを含むスケーラブルネスティングSEIネットワーク抽象化レイヤ(NAL)ユニットは、サブビットストリーム抽出プロセスの一部として前記ビットストリームから除去される、受信手段と、
前記ターゲットOLSからのピクチャを復号する復号手段と、
復号されたビデオシーケンスの一部として表示するために前記ピクチャを転送する転送手段と
を備える、デコーダ。
[項目18]
前記デコーダは、項目1~7のいずれか一項に記載の方法を実行するようにさらに構成される、項目17に記載のデコーダ。
[項目19]
エンコーダであって、
1つまたは複数の出力レイヤセット(OLS)を含むビットストリームを符号化する符号化手段と、
仮想参照デコーダ(HRD)手段であって、
前記OLSからターゲットOLSを抽出するためにサブビットストリーム抽出プロセスを実行することと、
スケーラブルネスティング補足拡張情報(SEI)メッセージ内のスケーラブルネスティングされたSEIメッセージが前記ターゲットOLSを参照しない場合、および前記スケーラブルネスティングSEIメッセージが特定のOLSに適用される場合、前記スケーラブルネスティングSEIメッセージを含むSEIネットワーク抽象化レイヤ(NAL)ユニットを、前記ビットストリームから除去することと、
前記ターゲットOLS上でビットストリーム適合性試験のセットを実行することと
を行うためのHRD手段と、
デコーダに向けて通信するための前記ビットストリームを記憶する記憶手段と
を備える、エンコーダ。
[項目20]
前記エンコーダは、項目8~14のいずれか一項に記載の方法を実行するようにさらに構成される、項目19に記載のエンコーダ。
【外国語明細書】