IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特開2024-19421空間およびSNRスケーラビリティのためのOLS
<>
  • 特開-空間およびSNRスケーラビリティのためのOLS 図1
  • 特開-空間およびSNRスケーラビリティのためのOLS 図2
  • 特開-空間およびSNRスケーラビリティのためのOLS 図3
  • 特開-空間およびSNRスケーラビリティのためのOLS 図4
  • 特開-空間およびSNRスケーラビリティのためのOLS 図5
  • 特開-空間およびSNRスケーラビリティのためのOLS 図6
  • 特開-空間およびSNRスケーラビリティのためのOLS 図7
  • 特開-空間およびSNRスケーラビリティのためのOLS 図8
  • 特開-空間およびSNRスケーラビリティのためのOLS 図9
  • 特開-空間およびSNRスケーラビリティのためのOLS 図10
  • 特開-空間およびSNRスケーラビリティのためのOLS 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024019421
(43)【公開日】2024-02-09
(54)【発明の名称】空間およびSNRスケーラビリティのためのOLS
(51)【国際特許分類】
   H04N 19/70 20140101AFI20240202BHJP
   H04N 19/30 20140101ALI20240202BHJP
【FI】
H04N19/70
H04N19/30
【審査請求】有
【請求項の数】9
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023205021
(22)【出願日】2023-12-05
(62)【分割の表示】P 2022519004の分割
【原出願日】2020-09-18
(31)【優先権主張番号】62/905,128
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】イェ-クイ・ワン
(57)【要約】
【課題】画像品質を犠牲にせずに圧縮比を高める改善された圧縮および解凍技術を提供する。
【解決手段】ビデオコーディングメカニズムが、開示される。メカニズムは、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化することを含む。ビデオパラメータセット(VPS)も、ビットストリームに符号化される。VPSは、VPSによって指定された出力レイヤセット(OLS)の総数がVPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む。ビットストリームは、デコーダに伝達するために記憶される。
【選択図】図7
【特許請求の範囲】
【請求項1】
デコーダによって実施される方法であって、
前記デコーダの受信機によって、コーディングされたピクチャの1つ以上のレイヤとビデオパラメータセット(VPS)とを含むビットストリームを受信するステップであって、前記VPSが、前記VPSによって指定された出力レイヤセット(OLS)の総数が前記VPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、
前記デコーダのプロセッサによって、前記VPSの前記ols_mode_idcに基づいて出力レイヤを決定するステップと、
前記デコーダのプロセッサによって、復号されたピクチャを生成するために前記出力レイヤからのコーディングされたピクチャを復号するステップとを含む、方法。
【請求項2】
前記ols_mode_idcが、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むことを指定する請求項1に記載の方法。
【請求項3】
前記ols_mode_idcが、各OLSに関して、前記各OLSの最上位レイヤのみが出力レイヤであることを指定する請求項1または2に記載の方法。
【請求項4】
前記ols_mode_idcが、0に等しい請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記VPSが、前記VPSを参照する各コーディングされたビデオシーケンス(CVS)内のレイヤの最大の許容される数である前記VPSによって指定されたレイヤの前記数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記ols_mode_idcが0に等しいとき、または前記ols_mode_idcが1に等しいとき、OLSの前記総数(TotalNumOlss)が、vps_max_layers_minus1に1を加えた値に等しい請求項1から5のいずれか一項に記載の方法。
【請求項7】
第iのOLSのレイヤの数(NumLayersInOls[i])と、前記第iのOLSの第jのレイヤのネットワーク抽象化レイヤ(NAL)ユニットヘッダレイヤ識別子(nuh_layer_id)の値を指定するOLSのレイヤ識別子(ID)(LayerIdInOLS[i][j])とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、前記VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグである請求項1から6のいずれか一項に記載の方法。
【請求項8】
エンコーダによって実施される方法であって、
前記エンコーダのプロセッサによって、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化するステップと、
前記プロセッサによって、ビデオパラメータセット(VPS)を前記ビットストリームに符号化するステップであって、前記VPSが、前記VPSによって指定された出力レイヤセット(OLS)の総数が前記VPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、
デコーダに伝達するために前記ビットストリームを、プロセッサに結合されたメモリによって記憶するステップとを含む、方法。
【請求項9】
前記ols_mode_idcが、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むことを指定する請求項8に記載の方法。
【請求項10】
前記ols_mode_idcが、各OLSに関して、前記各OLSの最上位レイヤのみが出力レイヤであることを指定する請求項8または9に記載の方法。
【請求項11】
前記ols_mode_idcが、0に等しい請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記VPSが、前記VPSを参照する各コーディングされたビデオシーケンス(CVS)内のレイヤの最大の許容される数である前記VPSによって指定されたレイヤの前記数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む請求項8から11のいずれか一項に記載の方法。
【請求項13】
前記ols_mode_idcが0に等しいとき、または前記ols_mode_idcが1に等しいとき、OLSの前記総数(TotalNumOlss)が、vps_max_layers_minus1に1を加えた値に等しい請求項8から12のいずれか一項に記載の方法。
【請求項14】
第iのOLSのレイヤの数(NumLayersInOls[i])と、前記第iのOLSの第jのレイヤのネットワーク抽象化レイヤ(NAL)ユニットヘッダレイヤ識別子(nuh_layer_id)の値を指定するOLSのレイヤ識別子(ID)(LayerIdInOLS[i][j])とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、前記VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグである請求項8から13のいずれか一項に記載の方法。
【請求項15】
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを含み、前記プロセッサ、前記受信機、前記メモリ、および前記送信機が、請求項1から14のいずれか一項に記載の方法を実行するように構成される、ビデオコーディングデバイス。
【請求項16】
ビデオコーディングデバイスによって使用するためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、前記コンピュータプログラム製品が、プロセッサによって実行されるときに前記ビデオコーディングデバイスに請求項1から14のいずれか一項に記載の方法を実行させる、非一時的コンピュータ可読媒体に記憶されたコンピュータが実行可能な命令を含む、非一時的コンピュータ可読媒体。
【請求項17】
コーディングされたピクチャの1つ以上のレイヤとビデオパラメータセット(VPS)とを含むビットストリームを受信するための受信手段であって、前記VPSが、前記VPSによって指定された出力レイヤセット(OLS)の総数が前記VPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、受信手段と、
前記VPSの前記ols_mode_idcに基づいて出力レイヤを決定するための決定手段と、
復号されたピクチャを生成するために前記出力レイヤからのコーディングされたピクチャを復号するための復号手段と、
復号されたビデオシーケンスの一部として表示するために前記復号されたピクチャを転送するための転送手段とを含むデコーダ。
【請求項18】
請求項1から7のいずれか一項に記載の方法を実行するようにさらに構成される請求項17に記載のデコーダ。
【請求項19】
符号化手段であって、
コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化すること、および
ビデオパラメータセット(VPS)を前記ビットストリームに符号化することであって、前記VPSが、前記VPSによって指定された出力レイヤセット(OLS)の総数が前記VPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、符号化することを行うための、符号化手段と、
デコーダに伝達するために前記ビットストリームを記憶するための記憶手段とを含むエンコーダ。
【請求項20】
エンコーダであって、前記エンコーダは、請求項8から14のいずれか一項に記載の方法を実行するようにさらに構成される、請求項19に記載のエンコーダ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、Ye-Kui Wangによって2019年9月24日に出願された、「Signalling Of Output Layer Sets For Spatial And SNR Scalabilities」と題した米国特許仮出願第62/905,128号の利益を主張するものであり、この仮出願は、参照により本明細書に組み込まれる。
【0002】
本開示は、概して、ビデオコーディングに関し、特に、空間および信号対雑音(SNR)スケーラビリティをサポートするために、マルチレイヤビットストリームにおいて出力レイヤセット(OLS: output layer set)を構成することに関する。
【背景技術】
【0003】
比較的短いビデオでさえも描くために必要とされるビデオデータの量はかなり多くなり得、それが、データが限られた帯域幅の容量を有する通信ネットワークを介してストリーミングされるかまたはそれ以外の方法で伝達されるべきであるときに困難を生じる場合がある。したがって、ビデオデータは、概して、現代の電気通信ネットワークを介して伝達される前に圧縮される。メモリリソースが限られている可能性があるので、ビデオがストレージデバイスに記憶されるとき、ビデオのサイズも問題となる可能性がある。多くの場合、ビデオ圧縮デバイスは、送信元のソフトウェアおよび/またはハードウェアを使用して送信または記憶の前にビデオデータをコーディングし、それによって、デジタルビデオ画像を表現するために必要とされるデータの量を削減する。そして、圧縮されたデータが、ビデオデータを復号するビデオ解凍デバイスによって送信先において受信される。限られたネットワークリソースおよびより高いビデオ品質のますます増加する需要によって、画像品質をほとんどまたはまったく犠牲にせずに圧縮比を高める改善された圧縮および解凍技術が、望ましい。
【発明の概要】
【課題を解決するための手段】
【0004】
実施形態において、本開示は、デコーダにおいて実施される方法であって、デコーダの受信機によって、コーディングされたピクチャの1つ以上のレイヤとビデオパラメータセット(VPS)とを含むビットストリームを受信するステップであって、VPSが、VPSによって指定された出力レイヤセット(OLS)の総数がVPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、デコーダのプロセッサによって、VPSのols_mode_idcに基づいて出力レイヤを決定するステップと、デコーダのプロセッサによって、復号されたピクチャを生成するために出力レイヤからのコーディングされたピクチャを復号するステップとを含む、方法を含む。
【0005】
スケーラビリティをサポートするために、ピクチャのレイヤが使用され得る。たとえば、ビデオは、複数のレイヤにコーディングされ得る。レイヤは、その他のレイヤを参照することなくコーディングされてよい。そのようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、その他のレイヤの参照なしに復号され得る。別の例として、レイヤは、インターレイヤ予測(inter-layer prediction)を使用してコーディングされ得る。これは、現在のレイヤと参照レイヤとの間の差のみを含めることによって現在のレイヤがコーディングされることを可能にする。たとえば、現在のレイヤおよび参照レイヤは、信号対雑音比(SNR)、ピクチャサイズ、フレームレートなどの特徴を変化させることによってコーディングされた同じビデオシーケンスを含んでよい。一部のビデオコーディングシステムは、ただ、レイヤ識別子(ID)によって示される最上位の符号化されたレイヤを1つ以上の示された下位レイヤとともに復号し、出力するように構成される。これは、デコーダが最上位レイヤを復号したくない可能性があるので、スケーラビリティに関する問題を生じ得る。これは、そのようなシステムにおいてビデオのスケーラビリティが試みられるときにエラーを引き起こす。デコーダが常に最上位レイヤをサポートすることを要求することは、異なるハードウェアおよびネットワークの要件に基づいて中間レイヤにスケーリングすることができないシステムをもたらすので、これは、重大な問題である可能性がある。
【0006】
本例は、スケーラビリティをサポートするためにOLSを使用するメカニズムを含む。これは、空間スケーラビリティとSNRスケーラビリティとの両方を含む。本例は、OLSと併せて使用するためのols_mode_idcシンタックス要素を使用する。ols_mode_idcシンタックス要素は、VPSに含まれることが可能であり、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示すために0に設定され得る。これは、デコーダが、たとえば、第3のOLSがレイヤ0から3までを含み、第3のレイヤがレイヤ0から2までに基づいて復号され、出力されるべきであると迅速に判定することができるので、スケーラビリティをサポートする。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤのみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤの総数が、復号プロセスに影響を与えない可能性があり、エラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。特定の実施形態において、ols_mode_idcは、多くのデータが共有される複数のOLSを含む符号化されたビットストリームにおいてビットを節約し、したがって、ストリーミングサーバにおいて節約を提供し、そのようなビットストリームの送信に関して帯域幅の節約を提供する。
【0007】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むことを指定すると規定する。
【0008】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが、各OLSに関して、各OLSの最上位レイヤのみが出力レイヤであることを指定すると規定する。
【0009】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが0に等しいと規定する。
【0010】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、VPSが、VPSを参照する各コーディングされたビデオシーケンス(CVS: coded video sequence)内のレイヤの最大の許容される数であるVPSによって指定されたレイヤの数を指定するVPS最大レイヤマイナス1(VPS maximum layers minus one)(vps_max_layers_minus1)を含むと規定する。
【0011】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが0に等しいとき、またはols_mode_idcが1に等しいとき、OLSの総数(TotalNumOlss)が、vps_max_layers_minus1に1を加えた値に等しいと規定する。
【0012】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、第iのOLSのレイヤの数(NumLayersInOls[i])と、第iのOLSの第jのレイヤのネットワーク抽象化レイヤ(NAL: network abstraction layer)ユニットヘッダレイヤ識別子(nuh_layer_id)の値を指定するOLSのレイヤ識別子(ID)(LayerIdInOLS[i][j])とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグ(each layer is an OLS flag)であると規定する。
【0013】
実施形態において、本開示は、エンコーダによって実施される方法であって、エンコーダのプロセッサによって、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化するステップと、プロセッサによって、VPSをビットストリームに符号化するステップであって、VPSが、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するols_mode_idcを含む、ステップと、デコーダに伝達するためにビットストリームをプロセッサに結合されたメモリによって記憶するステップとを含む、方法を含む。
【0014】
スケーラビリティをサポートするために、ピクチャのレイヤが使用され得る。たとえば、ビデオは、複数のレイヤにコーディングされ得る。レイヤは、その他のレイヤを参照することなくコーディングされてよい。そのようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、その他のレイヤの参照なしに復号され得る。別の例として、レイヤは、インターレイヤ予測を使用してコーディングされ得る。これは、現在のレイヤと参照レイヤとの間の差のみを含めることによって現在のレイヤがコーディングされることを可能にする。たとえば、現在のレイヤおよび参照レイヤは、SNR、ピクチャサイズ、フレームレートなどの特徴を変化させることによってコーディングされた同じビデオシーケンスを含んでよい。一部のビデオコーディングシステムは、ただ、レイヤIDによって示される最上位の符号化されたレイヤを1つ以上の示された下位レイヤとともに復号し、出力するように構成される。これは、デコーダが最上位レイヤを復号したくない可能性があるので、スケーラビリティに関する問題を生じ得る。これは、そのようなシステムにおいてビデオのスケーラビリティが試みられるときにエラーを引き起こす。デコーダが常に最上位レイヤをサポートすることを要求することは、異なるハードウェアおよびネットワークの要件に基づいて中間レイヤにスケーリングすることができないシステムをもたらすので、これは、重大な問題である可能性がある。
【0015】
本例は、スケーラビリティをサポートするためにOLSを使用するメカニズムを含む。これは、空間スケーラビリティとSNRスケーラビリティとの両方を含む。本例は、OLSと併せて使用するためのols_mode_idcシンタックス要素を使用する。ols_mode_idcシンタックス要素は、VPSに含まれることが可能であり、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示すために0に設定され得る。これは、デコーダが、たとえば、第3のOLSがレイヤ0から3までを含み、第3のレイヤがレイヤ0から2までに基づいて復号され、出力されるべきであると迅速に判定することができるので、スケーラビリティをサポートする。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤのみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤの総数が、復号プロセスに影響を与えない可能性があり、エラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。特定の実施形態において、ols_mode_idcは、多くのデータが共有される複数のOLSを含む符号化されたビットストリームにおいてビットを節約し、したがって、ストリーミングサーバにおいて節約を提供し、そのようなビットストリームの送信に関して帯域幅の節約を提供する。
【0016】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むことを指定すると規定する。
【0017】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが、各OLSに関して、各OLSの最上位レイヤのみが出力レイヤであることを指定すると規定する。
【0018】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが0に等しいと規定する。
【0019】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、VPSが、VPSを参照する各CVS内のレイヤの最大の許容される数であるVPSによって指定されたレイヤの数を指定するvps_max_layers_minus1を含むと規定する。
【0020】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、ols_mode_idcが0に等しいとき、またはols_mode_idcが1に等しいとき、TotalNumOlssが、vps_max_layers_minus1に1を加えた値に等しいと規定する。
【0021】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、NumLayersInOls[i]と、第iのOLSの第jのレイヤのnuh_layer_idの値を指定するLayerIdInOLS[i][j]とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定するOLSフラグであると規定する。
【0022】
実施形態において、本開示は、プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機とを含み、プロセッサ、受信機、メモリ、および送信機が、上記態様のいずれかの方法を実行するように構成されるビデオコーディングデバイスを含む。
【0023】
実施形態において、本開示は、ビデオコーディングデバイスによって使用するためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、コンピュータプログラム製品が、プロセッサによって実行されるときにビデオコーディングデバイスに上記態様のいずれかの方法を実行させる、非一時的コンピュータ可読媒体に記憶されたコンピュータが実行可能な命令を含む、非一時的コンピュータ可読媒体を含む。
【0024】
実施形態において、本開示は、コーディングされたピクチャの1つ以上のレイヤおよびVPSを含むビットストリームを受信するための受信手段であって、VPSが、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するols_mode_idcを含む、受信手段と、VPSのols_mode_idcに基づいて出力レイヤを決定するための決定手段と、復号されたピクチャを生成するために出力レイヤからのコーディングされたピクチャを復号するための復号手段と、復号されたビデオシーケンスの一部として表示するために復号されたピクチャを転送するための転送手段とを含むデコーダを含む。
【0025】
スケーラビリティをサポートするために、ピクチャのレイヤが使用され得る。たとえば、ビデオは、複数のレイヤにコーディングされ得る。レイヤは、その他のレイヤを参照することなくコーディングされてよい。そのようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、その他のレイヤの参照なしに復号され得る。別の例として、レイヤは、インターレイヤ予測を使用してコーディングされ得る。これは、現在のレイヤと参照レイヤとの間の差のみを含めることによって現在のレイヤがコーディングされることを可能にする。たとえば、現在のレイヤおよび参照レイヤは、SNR、ピクチャサイズ、フレームレートなどの特徴を変化させることによってコーディングされた同じビデオシーケンスを含んでよい。一部のビデオコーディングシステムは、ただ、レイヤIDによって示される最上位の符号化されたレイヤを1つ以上の示された下位レイヤとともに復号し、出力するように構成される。これは、デコーダが最上位レイヤを復号したくない可能性があるので、スケーラビリティに関する問題を生じ得る。これは、そのようなシステムにおいてビデオのスケーラビリティが試みられるときにエラーを引き起こす。デコーダが常に最上位レイヤをサポートすることを要求することは、異なるハードウェアおよびネットワークの要件に基づいて中間レイヤにスケーリングすることができないシステムをもたらすので、これは、重大な問題である可能性がある。
【0026】
本例は、スケーラビリティをサポートするためにOLSを使用するメカニズムを含む。これは、空間スケーラビリティとSNRスケーラビリティとの両方を含む。本例は、OLSと併せて使用するためのols_mode_idcシンタックス要素を使用する。ols_mode_idcシンタックス要素は、VPSに含まれることが可能であり、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示すために0に設定され得る。これは、デコーダが、たとえば、第3のOLSがレイヤ0から3までを含み、第3のレイヤがレイヤ0から2までに基づいて復号され、出力されるべきであると迅速に判定することができるので、スケーラビリティをサポートする。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤのみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤの総数が、復号プロセスに影響を与えない可能性があり、エラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。特定の実施形態において、ols_mode_idcは、多くのデータが共有される複数のOLSを含む符号化されたビットストリームにおいてビットを節約し、したがって、ストリーミングサーバにおいて節約を提供し、そのようなビットストリームの送信に関して帯域幅の節約を提供する。
【0027】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、デコーダが上記態様のいずれかの方法を実行するようにさらに構成されると規定する。
【0028】
実施形態において、本開示は、符号化手段であって、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化すること、およびVPSをビットストリームに符号化することであって、VPSが、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するols_mode_idcを含む、符号化することを行うための、符号化手段と、デコーダに伝達するためにビットストリームを記憶するための記憶手段とを含むエンコーダを含む。
【0029】
スケーラビリティをサポートするために、ピクチャのレイヤが使用され得る。たとえば、ビデオは、複数のレイヤにコーディングされ得る。レイヤは、その他のレイヤを参照することなくコーディングされてよい。そのようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、その他のレイヤの参照なしに復号され得る。別の例として、レイヤは、インターレイヤ予測を使用してコーディングされ得る。これは、現在のレイヤと参照レイヤとの差のみを含めることによって現在のレイヤがコーディングされることを可能にする。たとえば、現在のレイヤおよび参照レイヤは、SNR、ピクチャサイズ、フレームレートなどの特徴を変化させることによってコーディングされた同じビデオシーケンスを含んでよい。一部のビデオコーディングシステムは、ただ、レイヤIDによって示される最上位の符号化されたレイヤを1つ以上の示された下位レイヤとともに復号し、出力するように構成される。これは、デコーダが最上位レイヤを復号したくない可能性があるので、スケーラビリティに関する問題を生じ得る。これは、そのようなシステムにおいてビデオのスケーラビリティが試みられるときにエラーを引き起こす。デコーダが常に最上位レイヤをサポートすることを要求することは、異なるハードウェアおよびネットワークの要件に基づいて中間レイヤにスケーリングすることができないシステムをもたらすので、これは、重大な問題である可能性がある。
【0030】
本例は、スケーラビリティをサポートするためにOLSを使用するメカニズムを含む。これは、空間スケーラビリティとSNRスケーラビリティとの両方を含む。本例は、OLSと併せて使用するためのols_mode_idcシンタックス要素を使用する。ols_mode_idcシンタックス要素は、VPSに含まれることが可能であり、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示すために0に設定され得る。これは、デコーダが、たとえば、第3のOLSがレイヤ0から3までを含み、第3のレイヤがレイヤ0から2までに基づいて復号され、出力されるべきであると迅速に判定することができるので、スケーラビリティをサポートする。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤのみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤの総数が、復号プロセスに影響を与えない可能性があり、エラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。特定の実施形態において、ols_mode_idcは、多くのデータが共有される複数のOLSを含む符号化されたビットストリームにおいてビットを節約し、したがって、ストリーミングサーバにおいて節約を提供し、そのようなビットストリームの送信に関して帯域幅の節約を提供する。
【0031】
任意選択で、上述の態様のいずれかにおいて、態様の別の実装は、エンコーダが上述の態様のいずれかの方法を実行するようにさらに構成されると規定する。
【0032】
明瞭にする目的で、上述の実施形態の任意の1つが、本開示の範囲内の新しい実施形態を生成するためにその他の上述の実施形態のうちの任意の1つ以上と組み合わされてよい。
【0033】
これらのおよびその他の特徴は、以下の詳細な説明を添付の図面および請求項と併せて理解することによってより明瞭に理解されるであろう。
【0034】
本開示のより完全な理解のために、同様の参照番号が同様の部分を表す添付の図面および詳細な説明に関連して解釈される以下の簡単な説明がここで参照される。
【図面の簡単な説明】
【0035】
図1】ビデオ信号をコーディングする例示的な方法の流れ図である。
図2】ビデオコーディングのための例示的なコーディングおよびデコーディング(コーデック)システムの概略図である。
図3】例示的なビデオエンコーダを示す概略図である。
図4】例示的なビデオデコーダを示す概略図である。
図5】インターレイヤ予測のために構成された例示的なマルチレイヤビデオシーケンスを示す概略図である。
図6】空間および/またはSNRスケーラビリティのために構成されたOLSを有する例示的なビデオシーケンスを示す概略図である。
図7】スケーラビリティのために構成されたOLSを含む例示的なビットストリームを示す概略図である。
図8】例示的なビデオコーディングデバイスの概略図である。
図9】スケーラビリティのために構成されたOLSを有するビデオシーケンスを符号化する例示的な方法の流れ図である。
図10】スケーラビリティのために構成されたOLSを含むビデオシーケンスを復号する例示的な方法の流れ図である。
図11】スケーラビリティのために構成されたOLSを有するビデオシーケンスをコーディングするための例示的なシステムの概略図である。
【発明を実施するための形態】
【0036】
1つ以上の実施形態の例示的な実装が以下で与えられるが、開示されるシステムおよび/または方法は、現在知られているのかまたは存在しているのかにかかわらず任意の数の技術を使用して実装されてよいことを最初に理解されたい。本開示は、本明細書において例示され、説明される例示的な設計および実装を含む、以下で示される例示的な実装、図面、および技術にまったく限定されるべきでなく、添付の請求項の均等物の全範囲と併せたそれらの請求項の範囲内で修正される場合がある。
【0037】
本明細書において相容れない文脈で使用されない限り、以下の用語が、以下の通りに定義される。特に、以下の定義は、本開示をさらに明瞭にするように意図される。しかし、用語は、異なる文脈において異なるように説明される場合がある。したがって、以下の定義は、補足と考えられるべきであり、本明細書においてそのような用語に関して与えられる説明のいかなるその他の定義も限定するものと考えられるべきでない。
【0038】
ビットストリームは、エンコーダとデコーダとの間の送信のために圧縮されるビデオデータを含むビットのシーケンスである。エンコーダは、符号化プロセスを使用してビデオデータをビットストリームへと圧縮するように構成されるデバイスである。デコーダは、復号プロセスを使用して表示のためにビットストリームからビデオデータを再構築するように構成されるデバイスである。ピクチャは、フレームまたはそのフィールドを生成するルマ(luma)サンプルの配列およびクロマ(chroma)サンプルの配列である。符号化または復号されているピクチャは、検討を明瞭にするために現在のピクチャと呼ばれ得る。
【0039】
ネットワーク抽象化レイヤ(NAL)ユニットは、生バイトシーケンスペイロード(RBSP: Raw Byte Sequence Payload)の形態のデータ、データの種類のインジケーションを含み、希望に応じてエミュレーション防止バイトが所々に挿入されたシンタックス構造である。ビデオコーディングレイヤ(VCL: video coding layer)NALユニットは、ピクチャのコーディングされたスライスなどのビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性の検査の実行、またはその他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。レイヤは、指定された特徴(たとえば、共通の解像度、フレームレート、画像サイズなど)を共有するVCL NALユニットと関連する非VCL NALユニットとのセットである。レイヤのVCL NALユニットは、NALユニットヘッダレイヤ識別子(nuh_layer_id)の特定の値を共有してよい。コーディングされたピクチャは、アクセスユニット(AU)内のNALユニットヘッダレイヤ識別子(nuh_layer_id)の特定の値を有するVCL NALユニットを含み、ピクチャのすべてのコーディングツリーユニット(CTU: coding tree unit)を含む、ピクチャのコーディングされた表現である。復号されたピクチャは、コーディングされたピクチャに復号プロセスを適用することによって生成されたピクチャである。コーディングされたビデオシーケンス(CVS)は、復号順に、1つ以上のコーディングされたビデオシーケンス開始(CVSS)AUと、任意選択で、CVSS AUではないもう1つのAUとを含むAUのシーケンスである。CVSS AUは、ビデオパラメータセット(VPS)によって指定された各レイヤの予測ユニット(PU: prediction unit)を含むAUであり、各PU内のコーディングされたピクチャは、CVS/コーディングされたレイヤビデオシーケンス(CLVS: coded layer video sequence)の開始ピクチャである。
【0040】
出力レイヤセット(OLS)は、1つ以上のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(たとえば、ディスプレイへの)出力のために指定されるレイヤである。最上位レイヤと、OLS内のすべてのレイヤの中で最大のレイヤ識別子(ID)を有するOLS内のレイヤである。一部の例示的なOLSモードにおいて、最上位レイヤは、常に出力レイヤである場合がある。ビデオパラメータセット(VPS)は、ビデオ全体に関連するパラメータを含むデータユニットである。インターレイヤ予測は、現在のレイヤの現在のピクチャを、参照レイヤの参照ピクチャを参照することによってコーディングするメカニズムであり、現在のピクチャおよび参照ピクチャは、同じAUに含まれ、参照レイヤは、現在のレイヤより低いnuh_layer_idを含む。
【0041】
OLSモード識別コード(ols_mode_idc)は、OLSの数、OLSのレイヤ、OLSの出力レイヤに関連する情報を示すシンタックス要素である。VPS最大レイヤマイナス1(vps_max_layers_minus1)は、VPSによって指定されたレイヤの数と、したがって、対応するCVS内で許されるレイヤの最大数とをシグナリングするシンタックス要素である。各レイヤがOLSフラグ(each_layer_is_an_ols_flag)は、ビットストリーム内の各OLSが単一のレイヤを含むかどうかを示すシンタックス要素である。OLSの総数(TotalNumOLss)は、VPSによって指定されたOLSの総数を指定する変数である。第iのOLSのレイヤ数(NumLayersInOLS[i])は、OLSのインデックス値iによって示される特定のOLSのレイヤの数を指定する変数である。OLS内のレイヤID(LayerIdInOLS[i][j])は、レイヤインデックスjおよびOLSインデックスiによって示される第iのOLSの第jのレイヤのnuh_layer_id値を指定する変数である。vps_layer_id[i]は、第iのレイヤのレイヤIDを示すシンタックス要素である。
【0042】
以下の頭字語、すなわち、コーディングツリーブロック(CTB: Coding Tree Block)、コーディングツリーユニット(CTU)、コーディングユニット(CU: Coding Unit)、コーディングされたビデオシーケンス(CVS)、合同ビデオ専門家チーム(JVET: Joint Video Experts Team)、動き制約タイルセット(MCTS: Motion Constrained Tile Set)、最大転送単位(MTU)、ネットワーク抽象化レイヤ(NAL)、出力レイヤセット(OLS)、ピクチャ順序カウント(POC: Picture Order Count)、生バイトシーケンスペイロード(RBSP)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、および多目的ビデオコーディング(VVC: Versatile Video Coding)が、本明細書において使用される。
【0043】
多くのビデオ圧縮技術が、データの最小限の損失でビデオファイルのサイズを削減するために使用され得る。たとえば、ビデオ圧縮技術は、ビデオシーケンスのデータの冗長性を減らすかまたは取り除くために空間(たとえば、イントラピクチャ)予測および/または時間(インターピクチャ)予測を実行することを含み得る。ブロックに基づくビデオコーディングのために、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部)が、ビデオブロックに区分けされる場合があり、ビデオブロックは、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノード(coding node)とも呼ばれる場合がある。ピクチャのイントラコーディングされる(I)スライス内のビデオブロックは、同じピクチャ内の近隣のブロック内の参照サンプルに関連する空間予測を使用してコーディングされる。ピクチャのインターコーディングされる片方向予測(P)または両方向予測(B)スライス内のビデオブロックは、同じピクチャ内の近隣のブロック内の参照サンプルに関連する空間予測またはその他の参照ピクチャ内の参照サンプルに関連する時間予測を使用することによってコーディングされてよい。ピクチャは、フレームおよび/または画像と呼ばれる場合があり、参照ピクチャは、参照フレームおよび/または参照画像と呼ばれる場合がある。空間または時間予測は、画像ブロックを表す予測ブロックをもたらす。残差データは、元の画像ブロックと予測ブロックとの間のピクセルの差を表す。したがって、インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コーディングされるブロックと予測ブロックとの間の差を示す残差データとによって符号化される。イントラコーディングされるブロックは、イントラコーディングモードおよび残差データによって符号化される。さらなる圧縮のために、残差データが、ピクセル領域(pixel domain)から変換領域(transform domain)に変換される場合がある。これらは、残差変換係数をもたらし、残差変換係数は、量子化されてよい。最初に、量子化された変換係数は、二次元配列に配列されてよい。量子化された変換係数は、変換係数の一次元ベクトルを生成するためにスキャンされてよい。エントロピーコーディングが、より一層の圧縮を実現するために適用されてよい。そのようなビデオ圧縮技術は、下でより詳細に検討される。
【0044】
符号化されたビデオが正確に復号され得ることを保証するために、ビデオは、対応するビデオコーディング規格に従って符号化され、復号される。ビデオコーディング規格は、国際電気通信連合(ITU)標準化セクター(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)動画専門家グループ(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: Advanced Video Coding)、およびITU-T H.265またはMPEG-Hパート2としても知られる高効率ビデオコーディング(HEVC: High Efficiency Video Coding)を含む。AVCは、スケーラブルビデオコーディング(SVC: Scalable Video Coding)、多視点ビデオコーディング(MVC: Multiview Video Coding)および多視点ビデオコーディングプラス深度(MVC+D: Multiview Video Coding plus Depth)、ならびに三次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、多視点HEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの拡張を含む。ITU-TおよびISO/IECの合同ビデオ専門家チーム(JVET)は、多目的ビデオコーディング(VVC)と呼ばれるビデオコーディング規格の開発を開始した。VVCは、JVET-O2001-v14を含むWDに含まれる。
【0045】
スケーラビリティをサポートするために、ピクチャのレイヤが使用され得る。たとえば、ビデオは、複数のレイヤにコーディングされ得る。レイヤは、その他のレイヤを参照することなくコーディングされてよい。そのようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、その他のレイヤの参照なしに復号され得る。別の例として、レイヤは、インターレイヤ予測を使用してコーディングされ得る。これは、現在のレイヤと参照レイヤとの差のみを含めることによって現在のレイヤがコーディングされることを可能にする。たとえば、現在のレイヤおよび参照レイヤは、信号対雑音比(SNR)、ピクチャサイズ、フレームレートなどの特徴を変化させることによってコーディングされた同じビデオシーケンスを含んでよい。
【0046】
一部のビデオコーディングシステムは、ただ、レイヤ識別子(ID)によって示される最上位の符号化されたレイヤを1つ以上の示された下位レイヤとともに復号し、出力するように構成される。これは、デコーダが最上位レイヤを復号したくない可能性があるので、スケーラビリティに関する問題を生じ得る。特に、デコーダは、概して、デコーダがサポートし得る最も高いレイヤを要求するが、デコーダは、概して、要求されたレイヤよりも高いレイヤを復号することができない。特定の例として、デコーダは、合計15個の符号化されたレイヤのうちの第3のレイヤを受信し、復号したい可能性がある。レイヤ4から15は、第3のレイヤを復号するために必要でないので、第3のレイヤは、そのようなレイヤなしにデコーダに送信され得る。しかし、最上位レイヤ(レイヤ15)が存在せず、ビデオシステムが常に最上位レイヤを復号し、表示するように指示されるので、デコーダは、第3のレイヤを適切に復号し、表示することができない場合がある。これは、そのようなシステムにおいてビデオのスケーラビリティが試みられるときにエラーを引き起こす。デコーダが常に最上位レイヤをサポートすることを要求することは、異なるハードウェアおよびネットワークの要件に基づいて中間レイヤにスケーリングすることができないシステムをもたらすので、これは、重大な問題である可能性がある。
【0047】
本明細書において開示されるのは、スケーラビリティをサポートするために出力レイヤセット(OLS)を使用するシステムである。これには、空間スケーラビリティと信号対雑音比SNRスケーラビリティとの両方を含む。空間スケーラビリティは、各OLSが対応する出力画面サイズにビデオシーケンスを復号するのに十分なデータを含むようにレイヤがOLSに入れられるようにビデオシーケンスがレイヤにコーディングされることを可能にする。したがって、空間スケーラビリティは、スマートフォン画面用にビデオを復号するためのレイヤのセット、大型テレビ画面用にビデオを復号するためのレイヤのセット、および中間の画面サイズ用のレイヤのセットを含む場合がある。SNRスケーラビリティは、各OLSが異なるSNRでビデオシーケンスを復号するのに十分なデータを含むようにレイヤがOLSに入れられるようにビデオシーケンスがレイヤにコーディングされることを可能にする。したがって、SNRスケーラビリティは、ネットワークの条件に基づいて、低品質ビデオ、高品質ビデオ、および様々な中間のビデオ品質用に復号されてよいレイヤのセットを含む場合がある。本開示は、OLSと併せて使用するためのOLSモード識別コード(ols_mode_idc)シンタックス要素を使用する。ols_mode_idcシンタックス要素は、ビデオパラメータセット(VPS)に含まれることが可能であり、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示すために0に設定され得る。これは、デコーダが、たとえば、第3のOLSがレイヤ0から3までを含み、第3のレイヤがレイヤ0から2までに基づいて復号され、出力されるべきであると迅速に判定することができるので、スケーラビリティをサポートする。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤのみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤの総数が、復号プロセスに影響を与えない可能性があり、エラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。
【0048】
図1は、ビデオ信号をコーディングする例示的な動作方法100の流れ図である。特に、ビデオ信号は、エンコーダにおいて符号化される。符号化プロセスは、様々なメカニズムを使用してビデオファイルサイズを削減することによってビデオ信号を圧縮する。より小さなファイルサイズは、関連する帯域幅のオーバーヘッドを削減しながら、圧縮されたビデオファイルがユーザに送信されることを可能にする。そして、デコーダは、圧縮されたビデオファイルを復号して、エンドユーザに対して表示するために元のビデオ信号を再構築する。概して、復号プロセスは、デコーダがビデオ信号を矛盾なく再構築することを可能にするために符号化プロセスを忠実にまねる。
【0049】
ステップ101において、ビデオ信号が、エンコーダに入力される。たとえば、ビデオ信号は、メモリに記憶された未圧縮のビデオファイルであってよい。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングをサポートするために符号化されてよい。ビデオファイルは、オーディオコンポーネントとビデオコンポーネントとの両方を含んでよい。ビデオコンポーネントは、順番に見られるときに動きの視覚的な印象を与える一連の画像フレームを含む。フレームは、本明細書においてルマ成分(またはルマサンプル)と呼ばれる光と、クロマ成分(またはカラーサンプル)と呼ばれる色とによって表されるピクセルを含む。一部の例において、フレームは、三次元の視聴をサポートするための深度値も含む場合がある。
【0050】
ステップ103において、ビデオが、ブロックに区分けされる。区分けは、各フレームのピクセルを圧縮のために正方形および/または長方形のブロックに下位分割することを含む。たとえば、高効率ビデオコーディング(HEVC)(H.265およびMPEG-Hパート2としても知られる)において、フレームは、まず、予め定義されたサイズ(たとえば、64ピクセル×64ピクセル)のブロックであるコーディングツリーユニット(CTU)に分割され得る。CTUは、ルマサンプルとクロマサンプルとの両方を含む。CTUをブロックに分割し、それから、さらなる符号化をサポートする構成が実現されるまでブロックを繰り返し下位分割するためにコーディングツリーが使用されてよい。たとえば、フレームのルマ成分は、個々のブロックが比較的均一なライティングの値を含むまで下位分割されてよい。たとえば、フレームのクロマ成分は、個々のブロックが比較的均一な色の値を含むまで下位分割されてよい。したがって、区分けのメカニズムは、ビデオフレームの内容に応じて変わる。
【0051】
ステップ105においては、ステップ103において区分けされた画像ブロックを圧縮するために様々な圧縮メカニズムが使用される。たとえば、インター予測および/またはイントラ予測が、使用されてよい。インター予測は、普通のシーン内の物体が連続したフレームに現れる傾向があるという事実を利用するように設計される。したがって、参照フレームにおいて物体を描くブロックは、近隣のフレームにおいて繰り返し示される必要がない。特に、テーブルなどの物体は、複数のフレームにわたって一定の位置にとどまる場合がある。したがって、テーブルは、一回示され、隣接するフレームは、参照フレームを振り返って参照することができる。パターンマッチングメカニズムが、複数のフレームにわたって物体をマッチングするために使用されてよい。さらに、移動する物体が、たとえば、物体の移動またはカメラの移動が原因で複数のフレームにまたがって表される場合がある。特定の例として、ビデオは、複数のフレームにわたって画面を横切って移動する自動車を示す可能性がある。動きベクトルが、そのような移動を示すために使用され得る。動きベクトルは、フレーム内の物体の座標から参照フレーム内の物体の座標までのオフセットを与える二次元ベクトルである。したがって、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルのセットとして符号化し得る。
【0052】
イントラ予測は、共通のフレーム内のブロックを符号化する。イントラ予測は、ルマ成分およびクロマ成分がフレーム内で塊になる傾向があるという事実を利用する。たとえば、木の一部分の緑の区域は、同様の緑の区域の近隣の位置にある傾向がある。イントラ予測は、複数の方向性予測モード(たとえば、HEVCにおいては33個)、平面モード、および直流(DC)モードを使用する。方向性モードは、現在のブロックが対応する方向の近隣のブロックのサンプルと同様/同じであることを示す。平面モードは、行/列に沿った一連のブロック(たとえば、平面)が、行の端の近隣のブロックに基づいて補間され得ることを示す。実際に、平面モードは、変化する値の比較的一定の勾配を使用することによって行/列間の光/色の滑らかな遷移を示す。DCモードは、境界の平滑化のために使用され、ブロックが方向性予測モードの角度方向に関連するすべての近隣のブロックのサンプルに関連する平均値と同様/同じであることを示す。したがって、イントラ予測ブロックは、画像ブロックを実際の値の代わりに様々な関係予測モードの値として表し得る。さらに、インター予測ブロックは、画像ブロックを実際の値の代わりに動きベクトルの値として表し得る。何れのケースでも、予測ブロックは、場合によっては画像ブロックを正確に表さない可能性がある。すべての差が、残差ブロックに記憶される。ファイルをさらに圧縮するために、残差ブロックに変換が適用されてよい。
【0053】
ステップ107において、様々なフィルタリング技術が、適用されてよい。HEVCにおいては、フィルタが、ループ内フィルタリング方式によって適用される。上で検討されたブロックに基づく予測は、デコーダにおいてブロックノイズのある画像の生成をもたらす場合がある。さらに、ブロックに基づく予測方式は、ブロックを符号化し、それから、符号化されたブロックを参照ブロックとして後で使用するために再構築する可能性がある。ループ内フィルタリング方式は、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ(adaptive loop filter)、およびサンプル適応オフセット(SAO: sample adaptive offset)フィルタをブロック/フレームに反復的に適用する。これらのフィルタは、符号化されたファイルが正確に再構築され得るようにそのようなブロッキングアーティファクトを軽減する。さらに、これらのフィルタは、アーティファクトが再構築された参照ブロックに基づいて符号化される後続のブロックにおいてさらなるアーティファクトを生じる可能性がより低くなるように、再構築された参照ブロック内のアーティファクトを軽減する。
【0054】
ビデオ信号が区分けされ、圧縮され、フィルタリングされると、結果として得られるデータが、ステップ109においてビットストリームに符号化される。ビットストリームは、上で検討されたデータと、デコーダにおいて適切なビデオ信号の再構築をサポートするために望ましい任意のシグナリングデータとを含む。たとえば、そのようなデータは、区分けデータ、予測データ、残差ブロック、およびデコーダにコーディングの命令を与える様々なフラグを含んでよい。ビットストリームは、要求に応じてデコーダに送信するためにメモリに記憶されてよい。ビットストリームは、複数のデコーダにブロードキャストおよび/またはマルチキャストされる場合もある。ビットストリームの生成は、反復的なプロセスである。したがって、ステップ101、103、105、107、および109は、多くのフレームおよびブロックにわたって継続的におよび/または同時に行われてよい。図1に示された順序は、検討の明瞭さおよび容易さのために提示されており、ビデオコーディングプロセスを特定の順序に限定するように意図されていない。
【0055】
デコーダは、ステップ111においてビットストリームを受信し、復号プロセスを開始する。特に、デコーダは、エントロピー復号方式を使用して、ビットストリームを対応するシンタックスおよびビデオデータに変換する。デコーダは、ステップ111において、ビットストリームからのシンタックスデータを使用してフレームに関する区画を決定する。区分けは、ステップ103におけるブロックの区分けの結果と一致するべきである。ステップ111において使用されるエントロピー符号化/復号が、以降で説明される。エンコーダは、入力画像内の値の空間的な位置取りに基づいていくつかの可能な選択肢からブロック区分け方式を選択するなど、圧縮プロセス中に多くの選択を行う。厳密にそのままの選択をシグナリングすることは、多数のビン(bin)を使用する可能性がある。本明細書において使用されるとき、ビンは、変数として扱われる2進値(たとえば、状況に応じて変わる可能性があるビット値)である。エントロピーコーディングは、エンコーダが特定の場合に明らかにうまくいかないすべての選択肢を破棄し、許容可能な選択肢のセットを残すことを可能にする。それから、それぞれの許容可能な選択肢は、コードワードを割り当てられる。コードワードの長さは、許容可能な選択肢の数に基づく(たとえば、2つの選択肢のために1つのビン、3つから4つまでの選択肢のために2つのビンなど)。そして、エンコーダは、選択された選択肢に関するコードワードを符号化する。この方式は、コードワードが、すべての可能な選択肢の潜在的に大きなセットからの選択を一意に示すのとは対照的に、許容可能な選択肢の小さなサブセットからの選択を一意に示すために望ましいだけの大きさであるので、コードワードのサイズを削減する。そのとき、デコーダは、エンコーダと同様にして許容可能な選択肢のセットを決定することによって選択を復号する。許容可能な選択肢のセットを決定することによって、デコーダは、コードワードを読み、エンコーダによってなされた選択を決定することができる。
【0056】
ステップ113において、デコーダが、ブロックの復号を実行する。特に、デコーダは、逆変換を使用して残差ブロックを生成する。そして、デコーダは、残差ブロックおよび対応する予測ブロックを使用して、区分けに従って画像ブロックを再構築する。予測ブロックは、ステップ105においてエンコーダで生成されたイントラ予測ブロックとインター予測ブロックとの両方を含んでよい。再構築された画像ブロックは、ステップ111において決定された区分けデータに従って再構築されたビデオ信号のフレーム内に位置付けられる。ステップ113のためのシンタックスも、上で検討されたエントロピーコーディングによってビットストリーム内でシグナリングされてよい。
【0057】
ステップ115において、エンコーダのステップ107と同様にして、再構築されたビデオ信号のフレームに対してフィルタリングが実行される。たとえば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタが、ブロッキングアーティファクトを取り除くためにフレームに適用されてよい。フレームがフィルタリングされると、ビデオ信号が、エンドユーザによる視聴のためにステップ117においてディスプレイに出力され得る。
【0058】
図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、ならびにヘッダフォーマットおよびコンテキスト適応2値算術コーディング(CABAC: context adaptive binary arithmetic coding)構成要素231を含む。そのような構成要素が、示されるように結合される。図2において、黒い線は、符号化/復号されるデータの動きを示し、一方、破線は、その他の構成要素の動作を制御する制御データの動きを示す。コーデックシステム200の構成要素は、エンコーダにすべて存在する場合がある。デコーダは、コーデックシステム200の構成要素のサブセットを含む場合がある。たとえば、デコーダは、イントラピクチャ予測構成要素217、動き補償構成要素219、スケーリングおよび逆変換構成要素229、ループ内フィルタ構成要素225、ならびに復号ピクチャバッファ構成要素223を含む場合がある。これらの構成要素が、以降で説明される。
【0059】
区分けされたビデオ信号201は、コーディングツリーによってピクセルのブロックに区分けされたキャプチャされたビデオシーケンスである。コーディングツリーは、様々な分割モードを使用してピクセルのブロックをピクセルのより小さなブロックに下位分割する。そのとき、これらのブロックは、より小さなブロックにさらに下位分割され得る。ブロックは、コーディングツリーのノードと呼ばれる場合がある。より大きな親ノードが、より小さな子ノードに分割される。ノードが下位分割される回数は、ノード/コーディングツリーの深さと呼ばれる。分割されたブロックは、場合によってはコーディングユニット(CU)に含まれ得る。たとえば、CUは、ルマブロック、赤色差(Cr)ブロック、および青色差(Cb)ブロックをCUに関する対応するシンタックス命令とともに含むCTUの下位部分であり得る。分割モードは、使用される分割モードに応じて変化する形状の2つ、3つ、または4つの子ノードにノードをそれぞれ区分けするために使用される二分木(BT)、三分木(TT)、および四分木(QT)を含む場合がある。区分けされたビデオ信号201は、圧縮のために全般的コーダ制御構成要素211、変換・スケーリングおよび量子化構成要素213、イントラピクチャ推定構成要素215、フィルタ制御分析構成要素227、ならびに動き推定構成要素221に転送される。
【0060】
全般的コーダ制御構成要素211は、アプリケーションの制約に従ってビットストリームへのビデオシーケンスの画像のコーディングに関連する判断を行うように構成される。たとえば、全般的コーダ制御構成要素211は、ビットレート/ビットストリームサイズ対再構築の品質の最適化を管理する。そのような判断は、ストレージ空間/帯域幅の可用性および画像解像度の要求に基づいてなされてよい。また、全般的コーダ制御構成要素211は、バッファアンダーランおよびオーバーランの問題を軽減するために、送信速度を踏まえてバッファの利用を管理する。これらの問題を管理するために、全般的コーダ制御構成要素211は、その他の構成要素による区分け、予測、およびフィルタリングを管理する。たとえば、全般的コーダ制御構成要素211は、解像度を上げ、帯域幅の使用を増やすために圧縮の複雑さを動的に高くするか、または解像度を下げ、帯域幅の使用を減らすために圧縮の複雑さを動的に低くしてよい。したがって、全般的コーダ制御構成要素211は、ビデオ信号の再構築の品質とビットレートの懸念との釣り合いを取るためにコーデックシステム200のその他の構成要素を制御する。全般的コーダ制御構成要素211は、その他の構成要素の動作を制御する制御データを生成する。制御データも、デコーダにおける復号のためのパラメータをシグナリングするためにビットストリームに符号化されるようにヘッダフォーマットおよびCABAC構成要素231に転送される。
【0061】
区分けされたビデオ信号201は、インター予測のために動き推定構成要素221および動き補償構成要素219にも送信される。区分けされたビデオ信号201のフレームまたはスライスは、複数のビデオブロックに分割されてよい。動き推定構成要素221および動き補償構成要素219は、時間予測を提供するために1つ以上の参照フレーム内の1つ以上のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、たとえば、ビデオデータの各ブロックに関する適切なコーディングモードを選択するために複数のコーディングパス(coding pass)を実行してよい。
【0062】
動き推定構成要素221および動き補償構成要素219は、高度に一体化される場合があるが、概念的な目的のために別々に示される。動き推定構成要素221によって実行される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、予測ブロックに対するコーディングされるオブジェクトの変位を示す可能性がある。予測ブロックは、ピクセルの差の観点でコーディングされるブロックによく一致することが分かっているブロックである。予測ブロックは、参照ブロックとも呼ばれる場合がある。そのようなピクセルの差は、差分絶対値和(SAD)、差分二乗和(SSD)、またはその他の差の測定基準によって決定されてよい。HEVCは、CTU、コーディングツリーブロック(CTB)、およびCUを含むいくつかのコーディングされるオブジェクトを使用する。たとえば、CTUが、CTBに分割されることが可能であり、それから、CTBが、CUに含めるためにCBに分割されることが可能である。CUは、CUのための予測データを含む予測ユニット(PU)および/または変換された残差データを含む変換ユニット(TU)として符号化され得る。動き推定構成要素221は、レート歪み最適化プロセスの一部としてレート歪み分析を使用することによって動きベクトル、PU、およびTUを生成する。たとえば、動き推定構成要素221は、現在のブロック/フレームに関する複数の参照ブロック、複数の動きベクトルなどを決定する場合があり、最良のレート歪みの特徴を有する参照ブロック、動きベクトルなどを選択する場合がある。最良のレート歪みの特徴は、ビデオの再構築の品質(たとえば、圧縮によるデータ損失の量)とコーディング効率(たとえば、最終的な符号化のサイズ)との両方の釣り合いを取る。
【0063】
一部の例において、コーデックシステム200は、復号ピクチャバッファ構成要素223に記憶された参照ピクチャの整数よりも細かいピクセル位置の値を計算する場合がある。たとえば、ビデオコーデックシステム200は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、またはその他の分数ピクセル(fractional pixel)位置の値を補間する場合がある。したがって、動き推定構成要素221は、フルピクセル(full pixel)位置および分数ピクセル位置に関連する動き探索を実行し、分数ピクセルの精度で動きベクトルを出力する場合がある。動き推定構成要素221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによってインターコーディングされるスライス内のビデオブロックのPUに関する動きベクトルを計算する。動き推定構成要素221は、計算された動きベクトルを符号化のためにヘッダフォーマットおよびCABAC構成要素231に動きデータとして出力し、動きを動き補償構成要素219に出力する。
【0064】
動き補償構成要素219によって実行される動き補償は、動き推定構成要素221によって決定された動きベクトルに基づいて予測ブロックを取り出すことまたは生成することを含んでよい。やはり、動き推定構成要素221および動き補償構成要素219は、一部の例において、機能的に統合される場合がある。現在のビデオブロックのPUに関する動きベクトルを受信すると、動き補償構成要素219は、動きベクトルが指す予測ブロックを見つける可能性がある。そして、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を引き、ピクセル差分値を形成することによって残差ビデオブロックが形成される。概して、動き推定構成要素221は、ルマ成分に関連する動き推定を実行し、動き補償構成要素219は、クロマ成分とルマ成分との両方のためにルマ成分に基づいて計算された動きベクトルを使用する。予測ブロックおよび残差ブロックは、変換・スケーリングおよび量子化構成要素213に転送される。
【0065】
区分けされたビデオ信号201は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217にも送信される。動き推定構成要素221および動き補償構成要素219と同様に、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、高度に一体化される場合があるが、概念的な目的のために別々に示される。イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、上述のようにフレーム間で動き推定構成要素221および動き補償構成要素219によって実行されるインター予測の代替として現在のフレーム内のブロックに対して現在のブロックをイントラ予測する。特に、イントラピクチャ推定構成要素215は、現在のブロックを符号化するために使用するイントラ予測モードを決定する。一部の例において、イントラピクチャ推定構成要素215は、複数のテストされたイントラ予測モードから現在のブロックを符号化するための適切なイントラ予測モードを選択する。それから、選択されたイントラ予測モードは、符号化のためにヘッダフォーマットおよびCABAC構成要素231に転送される。
【0066】
たとえば、イントラピクチャ推定構成要素215は、様々なテストされたイントラ予測モードに関するレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪みの特徴を有するイントラ予測モードを選択する。レート歪み分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量と、符号化されたブロックを生成するために使用されたビットレート(たとえば、ビット数)とを決定する。イントラピクチャ推定構成要素215は、どのイントラ予測モードがブロックに関して最良のレート歪み値を示すかを判定するために、様々な符号化されたブロックに関する歪みおよびレートから比率を計算する。さらに、イントラピクチャ推定構成要素215は、レート歪み最適化(RDO)に基づいて深度モデリングモード(DMM: depth modeling mode)を使用して深度マップの深度ブロックをコーディングするように構成されてよい。
【0067】
イントラピクチャ予測構成要素217は、エンコーダに実装されるとき、イントラピクチャ推定構成要素215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し、またはデコーダに実装されるとき、ビットストリームから残差ブロックを読む可能性がある。残差ブロックは、行列として表された、予測ブロックと元のブロックとの間の値の差を含む。そして、残差ブロックは、変換・スケーリングおよび量子化構成要素213に転送される。イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、ルマ成分とクロマ成分との両方に対して動作する場合がある。
【0068】
変換・スケーリングおよび量子化構成要素213は、残差ブロックをさらに圧縮するように構成される。変換・スケーリングおよび量子化構成要素213は、残差ブロックに離散コサイン変換(DCT)、離散サイン変換(DST)、または似た概念の変換などの変換を適用し、残差変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、またはその他の種類の変換も、使用される可能性がある。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換してよい。変換・スケーリングおよび量子化構成要素213は、たとえば、周波数に基づいて変換された残差情報をスケーリングするようにさらに構成される。そのようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように残差情報にスケール因子を適用することを含み、これは、再構築されたビデオの最終的な視覚的品質に影響を与える可能性がある。変換・スケーリングおよび量子化構成要素213は、ビットレートをさらに下げるために変換係数を量子化するようにさらに構成される。量子化プロセスは、係数の一部またはすべてに関連するビット深度を削減する場合がある。量子化の度合いは、量子化パラメータを調整することによって修正されてよい。一部の例において、変換・スケーリングおよび量子化構成要素213は、それから、量子化された変換係数を含む行列のスキャンを実行する場合がある。量子化された変換係数は、ビットストリームに符号化されるようにヘッダフォーマットおよびCABAC構成要素231に転送される。
【0069】
スケーリングおよび逆変換構成要素229は、動き推定をサポートするために変換・スケーリングおよび量子化構成要素213の逆演算を適用する。スケーリングおよび逆変換構成要素229は、たとえば、別の現在のブロックに関する予測ブロックになる可能性がある参照ブロックとして後で使用するために、ピクセル領域の残差ブロックを再構築するために逆スケーリング、逆変換、および/または逆量子化を適用する。動き推定構成要素221および/または動き補償構成要素219は、後のブロック/フレームの動き推定において使用するために対応する予測ブロックに残差ブロックを足して戻すことによって参照ブロックを計算してよい。スケーリング、量子化、および変換中に生じたアーティファクトを軽減するために、再構築された参照ブロックにフィルタが適用される。そうでなければ、そのようなアーティファクトは、後続のブロックが予測されるときに不正確な予測をもたらす(およびさらなるアーティファクトを生じる)可能性がある。
【0070】
フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は、残差ブロックおよび/または再構築された画像ブロックにフィルタを適用する。たとえば、スケーリングおよび逆変換構成要素229からの変換された残差ブロックが、元の画像ブロックを再構築するためにイントラピクチャ予測構成要素217および/または動き補償構成要素219からの対応する予測ブロックと組み合わされてよい。そして、再構築された画像ブロックにフィルタが適用されてよい。一部の例において、フィルタは、その代わりに残差ブロックに適用される場合がある。図2のその他の構成要素と同様に、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は、高度に一体化され、一緒に実装される場合があるが、概念的な目的のために別々に示される。再構築された参照ブロックに適用されるフィルタは、特定の空間的な領域に適用され、そのようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御分析構成要素227は、そのようなフィルタがどこに適用されるべきかを判定するために再構築された参照ブロックを分析し、対応するパラメータを設定する。そのようなデータは、符号化のためにフィルタ制御データとしてヘッダフォーマットおよびCABAC構成要素231に転送される。ループ内フィルタ構成要素225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、および適応ループフィルタを含んでよい。そのようなフィルタは、例に依存して、(たとえば、再構築されたピクセルブロックに対して)空間/ピクセル領域において、または周波数領域において適用されてよい。
【0071】
エンコーダとして動作するとき、フィルタリングされた再構築された画像ブロック、残差ブロック、および/または予測ブロックは、上で検討されたように、動き推定において後で使用するために復号ピクチャバッファ構成要素223に記憶される。デコーダとして動作するとき、復号ピクチャバッファ構成要素223は、再構築され、フィルタリングされたブロックを記憶し、出力ビデオ信号の一部としてディスプレイに転送する。復号ピクチャバッファ構成要素223は、予測ブロック、残差ブロック、および/または再構築された画像ブロックを記憶することができる任意のメモリデバイスであってよい。
【0072】
ヘッダフォーマットおよびCABAC構成要素231は、コーデックシステム200の様々な構成要素からデータを受信し、そのようなデータをデコーダに送信するためにコーディングされたビットストリームに符号化する。特に、ヘッダフォーマットおよびCABAC構成要素231は、全般的な制御データおよびフィルタ制御データなどの制御データを符号化するための様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データならびに量子化された変換係数データの形態の残差データが、すべてビットストリームに符号化される。最終的なビットストリームは、元の区分けされたビデオ信号201を再構築するためにデコーダによって望まれるすべての情報を含む。そのような情報は、イントラ予測モードのインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックに関する符号化コンテキストの定義、最も可能性が高いイントラ予測モードのインジケーション、区分け情報のインジケーションなども含んでよい。そのようなデータは、エントロピーコーディングを使用することによって符号化されてよい。たとえば、情報は、コンテキスト適応可変長コーディング(CAVLC: context adaptive variable length coding)、CABAC、シンタックスに基づくコンテキスト適応2値算術コーディング(SBAC: syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE: probability interval partitioning entropy)コーディング、または別のエントロピーコーディング技術を使用することによって符号化されてよい。エントロピーコーディングの後、コーディングされたビットストリームが、別のデバイス(たとえば、ビデオデコーダ)に送信されるか、または後で送信するかもしくは取り出すためにアーカイブされてよい。
【0073】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実施する、ならびに/または動作方法100のステップ101、103、105、107、および/もしくは109を実施するために使用されてよい。エンコーダ300は、入力ビデオ信号を区分けし、区分けされたビデオ信号201と実質的に同様である区分けされたビデオ信号301を生じる。それから、区分けされたビデオ信号301は、エンコーダ300の構成要素によって圧縮され、ビットストリームに符号化される。
【0074】
特に、区分けされたビデオ信号301は、イントラ予測のためにイントラピクチャ予測構成要素317に転送される。イントラピクチャ予測構成要素317は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と実質的に同様であってよい。区分けされたビデオ信号301は、復号ピクチャバッファ構成要素323内の参照ブロックに基づくインター予測のために動き補償構成要素321にも転送される。動き補償構成要素321は、動き推定構成要素221および動き補償構成要素219と実質的に同様であってよい。イントラピクチャ予測構成要素317および動き補償構成要素321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために変換および量子化構成要素313に転送される。変換および量子化構成要素313は、変換・スケーリングおよび量子化構成要素213と実質的に同様であってよい。変換され、量子化された残差ブロックおよび対応する予測ブロックは、ビットストリームにコーディングするためにエントロピーコーディング構成要素331に(関連する制御データと一緒に)転送される。エントロピーコーディング構成要素331は、ヘッダフォーマットおよびCABAC構成要素231と実質的に同様であってよい。
【0075】
また、変換され、量子化された残差ブロックおよび/または対応する予測ブロックは、動き補償構成要素321による使用のために参照ブロックへと再構築するために変換および量子化構成要素313から逆変換および量子化構成要素329に転送される。逆変換および量子化構成要素329は、スケーリングおよび逆変換構成要素229と実質的に同様であってよい。ループ内フィルタ構成要素325のループ内フィルタが、例に依存して残差ブロックおよび/または再構築された参照ブロックにも適用される。ループ内フィルタ構成要素325は、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225と実質的に同様であってよい。ループ内フィルタ構成要素325は、ループ内フィルタ構成要素225に関連して検討されたように複数のフィルタを含んでよい。そして、フィルタリングされたブロックが、動き補償構成要素321によって参照ブロックとして使用するために復号ピクチャバッファ構成要素323に記憶される。復号ピクチャバッファ構成要素323は、復号ピクチャバッファ構成要素223と実質的に同様であってよい。
【0076】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実施する、ならびに/または動作方法100のステップ111、113、115、および/もしくは117を実施するために使用されてよい。デコーダ400は、たとえば、エンコーダ300からビットストリームを受信し、エンドユーザに対して表示するためにビットストリームに基づいて再構築された出力ビデオ信号を生成する。
【0077】
ビットストリームは、エントロピー復号構成要素433によって受信される。エントロピー復号構成要素433は、CAVLC、CABAC、SBAC、PIPEコーディング、またはその他のエントロピーコーディング技術などのエントロピー復号方式を実施するように構成される。たとえば、エントロピー復号構成要素433は、ビットストリームにコードワードとして符号化されたさらなるデータを解釈するためのコンテキストを与えるためにヘッダ情報を使用する場合がある。復号された情報は、全般的な制御データ、フィルタ制御データ、区分け情報、動きデータ、予測データ、および残差ブロックからの量子化された変換係数などの、ビデオ信号を復号するための任意の所望の情報を含む。量子化された変換係数は、残差ブロックへの再構築のために逆変換および量子化構成要素429に転送される。逆変換および量子化構成要素429は、逆変換および量子化構成要素329と同様であってよい。
【0078】
再構築された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づいて画像ブロックへと再構築するためにイントラピクチャ予測構成要素417に転送される。イントラピクチャ予測構成要素417は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と実質的に同様であってよい。特に、イントラピクチャ予測構成要素417は、予測モードを使用してフレーム内の参照ブロックを特定し、イントラ予測された画像ブロックを再構築するために結果に残差ブロックを適用する。再構築されたイントラ予測された画像ブロックおよび/または残差ブロックならびに対応するインター予測データは、ループ内フィルタ構成要素425を介して復号ピクチャバッファ構成要素423に転送され、これらは、それぞれ、復号ピクチャバッファ構成要素223およびループ内フィルタ構成要素225と実質的に同様であってよい。ループ内フィルタ構成要素425は、再構築された画像ブロック、残差ブロック、および/または予測ブロックをフィルタリングし、そのような情報は、復号ピクチャバッファ構成要素423に記憶される。復号ピクチャバッファ構成要素423からの再構築された画像ブロックは、インター予測のために動き補償構成要素421に転送される。動き補償構成要素421は、動き推定構成要素221および/または動き補償構成要素219と実質的に同様であってよい。特に、動き補償構成要素421は、参照ブロックからの動きベクトルを使用して予測ブロックを生成し、画像ブロックを再構築するために結果に残差ブロックを適用する。結果として得られる再構築されたブロックは、ループ内フィルタ構成要素425を介して復号ピクチャバッファ構成要素423にも転送されてよい。復号ピクチャバッファ構成要素423は、さらなる再構築された画像ブロックの記憶を続け、それらの再構築された画像ブロックは、区分け情報によってフレームに再構築され得る。また、そのようなフレームは、シーケンスに配置されてよい。シーケンスは、再構築された出力ビデオ信号としてディスプレイに出力される。
【0079】
図5は、インターレイヤ予測521のために構成された例示的なマルチレイヤビデオシーケンス500を示す概略図である。マルチレイヤビデオシーケンス500は、たとえば、方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダによって符号化され、コーデックシステム200および/またはデコーダ400などのデコーダによって復号されてよい。マルチレイヤビデオシーケンス500は、コーディングされたビデオシーケンスのレイヤに関する例示的な適用例を示すために含められる。マルチレイヤビデオシーケンス500は、レイヤN 531やレイヤN+1 532などの複数のレイヤを使用する任意のビデオシーケンスである。
【0080】
例において、マルチレイヤビデオシーケンス500は、インターレイヤ予測521を使用してよい。インターレイヤ予測521は、異なるレイヤのピクチャ511、512、513、および514とピクチャ515、516、517、および518との間で適用される。示された例において、ピクチャ511、512、513、および514は、レイヤN+1 532の一部であり、ピクチャ515、516、517、および518は、レイヤN 531の一部である。レイヤN 531および/またはレイヤN+1 532などのレイヤは、同様のサイズ、品質、解像度、信号対雑音比、能力などの特徴の同様の値にすべてが関連付けられるピクチャのグループである。レイヤは、形式上、同じnuh_layer_idを共有するVCL NALユニットおよび関連する非VCL NALユニットのセットとして定義されてよい。VCL NALユニットは、ピクチャのコーディングされたスライスなどのビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性の検査の実行、またはその他の動作をサポートするシンタックスおよび/またはパラメータなどの非ビデオデータを含むNALユニットである。
【0081】
示された例において、レイヤN+1 532は、レイヤN 531よりも大きな画像サイズに関連付けられる。したがって、レイヤN+1 532のピクチャ511、512、513、および514は、この例においては、レイヤN 531のピクチャ515、516、517、および518よりも大きなピクチャサイズ(たとえば、より大きな高さおよび幅と、したがって、より多くのサンプルと)を有する。しかし、そのようなピクチャは、その他の特徴によってレイヤN+1 532とレイヤN 531との間に分けられ得る。レイヤN+1 532およびレイヤN 531の2つのレイヤのみが示されるが、ピクチャのセットは、関連する特徴に基づいて任意の数のレイヤに分けられ得る。また、レイヤN+1 532およびレイヤN 531は、レイヤIDで示される場合がある。レイヤIDは、ピクチャに関連付けられ、ピクチャが示されたレイヤの一部であることを示すデータのアイテムである。したがって、各ピクチャ511~518は、レイヤN+1 532またはレイヤN 531のどちらが対応するピクチャを含むかを示すために、対応するレイヤIDに関連付けられてよい。たとえば、レイヤIDは、(たとえば、レイヤ内のピクチャのスライスおよび/またはパラメータを含む)NALユニットを含むレイヤの識別子を指定するシンタックス要素であるNALユニットヘッダレイヤ識別子(nuh_layer_id)を含んでよい。レイヤN 531のようなより低い品質/ビットストリームサイズに関連するレイヤは、概して、より低いレイヤIDを割り当てられ、下位レイヤと呼ばれる。さらに、レイヤN+1 532のようなより高い品質/ビットストリームサイズに関連するレイヤは、概して、より高いレイヤIDを割り当てられる、上位レイヤと呼ばれる。
【0082】
異なるレイヤ531~532のピクチャ511~518は、代替的に表示されるように構成される。特定の例として、デコーダは、より小さいピクチャが望まれる場合、現在の表示時間にピクチャ515を復号し、表示してよく、またはより大きいピクチャが望まれる場合、現在の表示時間にピクチャ511を復号し、表示してよい。そのため、上位レイヤN+1 532のピクチャ511~514は、下位レイヤN 531の対応するピクチャ515~518と(ピクチャサイズの差にかかわらず)実質的に同じ画像データを含む。特に、ピクチャ511は、ピクチャ515と実質的に同じ画像データを含み、ピクチャ512は、ピクチャ516と実質的に同じ画像データを含み、以下同様である。
【0083】
ピクチャ511~518は、同じレイヤN 531またはN+1 532のその他のピクチャ511~518を参照することによってコーディングされ得る。同じレイヤの別のピクチャを参照してピクチャをコーディングすることは、インター予測523をもたらす。予測間523は、実線の矢印で示される。たとえば、ピクチャ513は、レイヤN+1 532のピクチャ511、512、および/または514のうちの1つまたは2つを参照として使用するインター予測523を使用することによってコーディングされてよく、1つのピクチャが片方向インター予測のために参照され、および/または2つのピクチャが両方向インター予測のために参照される。さらに、ピクチャ517は、レイヤN 531のピクチャ515、516、および/または518のうちの1つまたは2つを参照として使用するインター予測523を使用することによってコーディングされてよく、1つのピクチャが片方向インター予測のために参照され、および/または2つのピクチャが両方向インター予測のために参照される。インター予測523を実行するときに同じレイヤの別のピクチャのための参照としてピクチャが使用されるとき、ピクチャは、参照ピクチャと呼ばれる場合がある。たとえば、ピクチャ512は、インター予測523によってピクチャ513をコーディングするために使用される参照ピクチャである場合がある。インター予測523は、マルチレイヤの文脈で、イントラレイヤ予測(intra-layer prediction)とも呼ばれ得る。したがって、インター予測523は、参照ピクチャおよび現在のピクチャが同じレイヤにある場合に、現在のピクチャと異なる参照ピクチャ内の示されたサンプルを参照して現在のピクチャのサンプルをコーディングするメカニズムである。
【0084】
ピクチャ511~518は、異なるレイヤのその他のピクチャ511~518を参照することによってコーディングされることも可能である。このプロセスは、インターレイヤ予測521として知られており、破線の矢印によって示される。インターレイヤ予測521は、現在のピクチャおよび参照ピクチャが異なるレイヤにあり、したがって、異なるレイヤIDを有する場合に、参照ピクチャ内の示されたサンプルを参照して現在のピクチャのサンプルをコーディングするメカニズムである。たとえば、下位レイヤN 531のピクチャが、上位レイヤN+1 532の対応するピクチャをコーディングするための参照ピクチャとして使用され得る。特定の例として、ピクチャ511が、インターレイヤ予測521によって、ピクチャ515を参照してコーディングされ得る。そのような場合、ピクチャ515は、インターレイヤ参照ピクチャ(inter-layer reference picture)として使用される。インターレイヤ参照ピクチャは、インターレイヤ予測521のために使用される参照ピクチャである。ほとんどの場合、インターレイヤ予測521は、ピクチャ511などの現在のピクチャが、ピクチャ515などの、同じAUに含まれ、下位レイヤにあるインターレイヤ参照ピクチャのみを使用し得るように制約される。AUは、ビデオシーケンス内の特定の出力時間に関連するピクチャのセットであり、したがって、AUは、レイヤ毎に1枚ものピクチャを含み得る。複数のレイヤ(たとえば、3つ以上)が利用可能であるとき、インターレイヤ予測521は、現在のピクチャよりも低いレベルの複数のインターレイヤ参照ピクチャに基づいて現在のピクチャを符号化/復号し得る。
【0085】
ビデオエンコーダは、マルチレイヤビデオシーケンス500を使用して、インター予測523およびインターレイヤ予測521の多くの異なる組み合わせおよび/または順列によってピクチャ511~518を符号化することができる。たとえば、ピクチャ515は、イントラ予測によってコーディングされてよい。それから、ピクチャ516~518は、ピクチャ515を参照ピクチャとして使用することによってインター予測523によりコーディングされ得る。さらに、ピクチャ511は、ピクチャ515をインターレイヤ参照ピクチャとして使用することによってインターレイヤ予測521によりコーディングされてよい。それから、ピクチャ512~514は、ピクチャ511を参照ピクチャとして使用することによってインター予測523によりコーディングされ得る。したがって、参照ピクチャは、異なるコーディングメカニズムのために単一レイヤ参照ピクチャとインターレイヤ参照ピクチャとの両方として働き得る。上位レイヤN+1 532のピクチャを下位レイヤN 531のピクチャに基づいてコーディングすることによって、上位レイヤN+1 532は、インター予測523およびインターレイヤ予測521よりもずっと低いコーディング効率を有するイントラ予測を使用することを回避することができる。したがって、イントラ予測の悪いコーディング効率が、最小/最低品質のピクチャに制限され、よって、最小の量のビデオデータのコーディングに制限され得る。参照ピクチャおよび/またはインターレイヤ参照ピクチャとして使用されるピクチャは、参照ピクチャリスト構造に含まれる参照ピクチャリストのエントリに示され得る。
【0086】
そのような動作を実行するために、レイヤN 531およびレイヤN+1 532などのレイヤは、OLS 525に含まれる場合がある。OLS 525は、1つ以上のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(たとえば、ディスプレイへの)出力のために指定されるレイヤである。たとえば、レイヤN 531は、インターレイヤ予測521をサポートするためだけに含まれる場合があり、出力されない場合がある。そのような場合、レイヤN+1 532は、レイヤN 531に基づいて復号され、出力される。そのような場合、OLS 525は、出力レイヤとしてレイヤN+1 532を含む。OLS 525は、異なる組み合わせで多くのレイヤを含んでよい。たとえば、OLS 525の出力レイヤは、1つ、2つ、または多くの下位レイヤに基づいてインターレイヤ予測521によってコーディングされ得る。さらに、OLS 525は、2つ以上の出力レイヤを含んでよい。したがって、OLS 525は、1つ以上の出力レイヤと、出力レイヤを再構成するために必要とされる任意のサポートレイヤとを含んでよい。マルチレイヤビデオシーケンス500は、それぞれがレイヤの異なる組み合わせを使用する多くの異なるOLS 525を使用することによってコーディングされ得る。
【0087】
特定の例として、インターレイヤ予測521が、スケーラビリティをサポートするために使用される場合がある。たとえば、ビデオは、レイヤN 531などの基本レイヤ(base layer)と、インターレイヤ予測521によってコーディングされる、レイヤN+1 532、レイヤN+2、レイヤN+3などのいくつかの拡張レイヤ(enhancement layer)とにコーディングされ得る。ビデオシーケンスは、信号対雑音比(SNR)、フレームレート、ピクチャサイズなどの拡張可能な特徴に関してコーディングされ得る。そのとき、それぞれの許容可能な特徴ごとにOLS 525が生成され得る。たとえば、第1の解像度のためのOLS 525が、レイヤN 531のみを含む場合があり、第2の解像度のためのOLS 525が、レイヤN 531およびレイヤN+1 532を含む場合があり、第3の解像度のためのOLSが、レイヤN 531、レイヤN+1 532、レイヤN+2などを含む場合がある。このようにして、ネットワークの条件、ハードウェアの制約などに基づいて望まれるマルチレイヤビデオシーケンス500のどのバージョンでもデコーダが復号することを可能にするために、OLS 525が送信され得る。
【0088】
図6は、空間および/またはSNRスケーラビリティのために構成されたOLSを有する例示的なビデオシーケンス600を示す概略図である。ビデオシーケンス600は、マルチレイヤビデオシーケンス500の特定の例である。したがって、ビデオシーケンス600は、たとえば、方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダによって符号化され、コーデックシステム200および/またはデコーダ400などのデコーダによって復号され得る。ビデオシーケンス600は、スケーラビリティのために有用である。
【0089】
例示的なビデオシーケンス600は、OLS 620、OLS 621、およびOLS 622を含み、これらは、OLS 525と実質的に同様であってよい。3つのOLSが示されるが、任意の数のOLSが使用されてよい。各OLS 620、621、および622は、OLSインデックスによって参照され、1つ以上のレイヤを含む。特に、OLS 620、621、および622は、それぞれ、レイヤ630、レイヤ630および631、ならびにレイヤ630、631、および632を含む。レイヤ630、631、および632は、レイヤN 531およびレイヤN+1 532と実質的に同様であってよい。レイヤ630、631、および632は、レイヤインデックスによって参照される。ビデオシーケンス600は、OLSの数と同じ数のレイヤを含む。特に、最も低いOLSインデックスを有するOLS 620は、最も低いレイヤインデックスを有するレイヤ630を含む。それぞれのその他のOLSは、より低いOLSインデックスを有する前のOLSのすべてのレイヤと、さらに1つのレイヤとを含む。たとえば、OLS 621は、OLS 620よりも高いOLSインデックスを有し、OLS 620のすべてのレイヤにさらに1つのレイヤを加えたレイヤ630および631を含む。同様に、OLS 622は、OLS 621よりも高いOLSインデックスを有し、OLS 621のすべてのレイヤにさらに1つのレイヤを加えたレイヤ630、631、および632を含む。このパターンは、最も高いレイヤインデックスを有するレイヤおよび最も高いOLSインデックスを持つOLSが到達されるまで続く可能性がある。
【0090】
さらに、レイヤ630は、基本レイヤである。すべてのその他のレイヤ631および632は、より低いレイヤインデックスを有するすべてのレイヤに基づいてインターレイヤ予測によってコーディングされる拡張レイヤである。特に、レイヤ630は、基本レイヤであり、インターレイヤ予測によってコーディングされない。レイヤ631は、レイヤ630に基づいてインターレイヤ予測によってコーディングされる拡張レイヤである。さらに、レイヤ632は、レイヤ630およびレイヤ631に基づいてインターレイヤ予測によってコーディングされる拡張レイヤである。結果として、OLS 620は、最低品質のSNRおよび/または最小の画像サイズを有するレイヤ630を含む。OLS 620はインターレイヤ予測を使用しないので、OLS 620は、630以外のいかなるレイヤも参照することなく完全に復号され得る。OLS 621は、レイヤ630よりも高い品質のSNRおよび/または画像サイズを有するレイヤ631を含み、レイヤ631は、OLS 621がレイヤ630も含むので、インターレイヤ予測によって完全に復号され得る。同様に、OLS 622は、レイヤ630および631よりも高い品質のSNRおよび/または画像サイズを有するレイヤ632を含み、レイヤ632は、OLS 622がレイヤ630および631も含むので、インターレイヤ予測によって完全に復号され得る。したがって、ビデオシーケンス600は、対応するOLS 622、621、または620をデコーダに送信することによって、任意の予め選択されたSNRおよび/または画像サイズにスケーリングするようにコーディングされる。より多くのOLS 622、621、および620が使用されるとき、ビデオシーケンス600は、より多くのSNR画像品質および/または画像サイズにスケーリングすることができる。
【0091】
したがって、ビデオシーケンス600は、空間スケーラビリティをサポートすることができる。空間スケーラビリティは、各OLS 620、621、および622が対応する出力画面サイズにビデオシーケンス600を復号するのに十分なデータを含むようにレイヤ630、631、および632がOLS 620、621、および622に入れられるようにビデオシーケンス600がレイヤ630、631、および632にコーディングされることを可能にする。したがって、空間スケーラビリティは、スマートフォン画面用にビデオを復号するためのレイヤのセット(たとえば、レイヤ630)、大型テレビ画面用にビデオを復号するためのレイヤのセット(たとえば、レイヤ630、631、および632)、ならびに中間の画面サイズ用のレイヤのセット(たとえば、レイヤ630および631)を含む場合がある。SNRスケーラビリティは、各OLS 620、621、および622が異なるSNRでビデオシーケンス600を復号するのに十分なデータを含むようにレイヤ630、631、および632がOLS 620、621、および622に入れられるようにビデオシーケンス600がレイヤ630、631、および632にコーディングされることを可能にする。したがって、SNRスケーラビリティは、ネットワークの条件をサポートするために、低品質ビデオ、高品質ビデオ(たとえば、レイヤ630、631、および632)、ならびに様々な中間のビデオ品質(たとえば、レイヤ630および631)用に復号されてよいレイヤのセット(たとえば、レイヤ630)を含む場合がある。
【0092】
本開示は、ビデオシーケンス600が正しく効率的に使用されることを可能にするための効率的なシグナリングを提供する。たとえば、ビデオシーケンス600は、ols_mode_idcシンタックス要素によって示されてよい。たとえば、ols_mode_idcシンタックス要素は、ビデオシーケンス600をOLSモード0として特定する場合がある。したがって、ols_mode_idcシンタックス要素は、ビデオシーケンス600が使用されることを示すために、ゼロに設定され、ビットストリーム内でシグナリングされ得る。したがって、デコーダは、任意のOLSを受信し、ols_mode_idcに基づいて、最も高いレイヤインデックスを有する受信されたレイヤが受信されたOLSの出力レイヤであり、出力レイヤがOLS内のその他の下位レイヤに基づいてインターレイヤ予測によって復号され得ると判定することができる。
【0093】
図7は、スケーラビリティのために構成されたOLSを含む例示的なビットストリーム700を示す概略図である。たとえば、ビットストリーム700は、方法100に従ってコーデックシステム200および/またはデコーダ400による復号のためにコーデックシステム200および/またはエンコーダ300によって生成され得る。さらに、ビットストリーム700は、コーディングされたマルチレイヤビデオシーケンス500および/またはビデオシーケンス600を含んでよい。
【0094】
ビットストリーム700は、VPS 711、1つ以上のシーケンスパラメータセット(SPS) 713、複数のピクチャパラメータセット(PPS) 715、複数のスライスヘッダ717、および画像データ720を含む。VPS 711は、ビットストリーム700全体に関連するデータを含む。たとえば、VPS 711は、ビットストリーム700において使用されるデータ関連のOLS、レイヤ、および/またはサブレイヤを含んでよい。SPS 713は、ビットストリーム700に含まれるコーディングされたビデオシーケンス内のすべてのピクチャに共通のシーケンスデータを含む。たとえば、各レイヤは、1つ以上のコーディングされたビデオシーケンスを含んでよく、各コーディングされたビデオシーケンスは、対応するパラメータに関してSPS 713を参照してよい。SPS 713のパラメータは、ピクチャのサイズ設定、ビット深度、コーディングツールのパラメータ、ビットレートの制約などを含み得る。各シーケンスはSPS 713を参照するが、一部の例においては、単一のSPS 713が複数のシーケンスに関するデータを含み得ることに留意されたい。PPS 715は、ピクチャ全体に適用されるパラメータを含む。したがって、ビデオシーケンス内の各ピクチャは、PPS 715を参照してよい。各ピクチャはPPS 715を参照するが、一部の例においては、単一のPPS 715が複数のピクチャに関するデータを含み得ることに留意されたい。たとえば、複数の同様のピクチャは、同様のパラメータに従ってコーディングされる場合がある。そのような場合、単一のPPS 715が、そのような同様のピクチャに関するデータを含んでよい。PPS 715は、対応するピクチャ内のスライスのために利用可能なコーディングツール、量子化パラメータ、オフセットなどを示し得る。
【0095】
スライスヘッダ717は、ピクチャ725内の各スライス727に固有のパラメータを含む。したがって、ビデオシーケンス内のスライス727毎に1つのスライスヘッダ717が存在してよい。スライスヘッダ717は、スライスタイプ情報、POC、参照ピクチャリスト、予測の重み、タイルエントリポイント(tile entry point)、デブロッキングパラメータなどを含んでよい。一部の例において、ビットストリーム700は、単一のピクチャ内のすべてのスライス727に適用されるパラメータを含むシンタックス構造であるピクチャヘッダも含んでよいことに留意されたい。この理由で、ピクチャヘッダおよびスライスヘッダ717が、文脈によっては交換可能なように使用される場合がある。たとえば、特定のパラメータが、そのようなパラメータがピクチャ725内のすべてのスライス727に共通であるかどうかに応じてスライスヘッダ717とピクチャヘッダとの間で移動される場合がある。
【0096】
画像データ720は、インター予測および/またはイントラ予測によって符号化されたビデオデータならびに対応する変換され、量子化された残差データを含む。たとえば、画像データ720は、ピクチャ725のレイヤ723を含んでよい。レイヤ723は、OLS 721に編成されてよい。OLS 721は、OLS 525、620、621、および/または622と実質的に同様であってよい。特に、OLS 721は、1つ以上のレイヤが出力レイヤとして指定されるレイヤ723のセットである。たとえば、ビットストリーム700は、ビデオが異なる解像度、フレームレート、ピクチャ725のサイズなどでコーディングされるようにしていくつかのOLS 721を含むようにコーディングされてよい。デコーダによる要求に応じて、サブビットストリーム抽出プロセスが、ビットストリーム700から要求されたOLS 721以外のすべてを削除することができる。そして、エンコーダは、要求されたOLS 721のみ、およびしたがって要求された基準を満たすビデオのみを含むビットストリーム700をデコーダに送信することができる。
【0097】
レイヤ723は、レイヤN 531、レイヤN+1 532、ならびに/またはレイヤ631、632、および/もしくは633と実質的に同様であってよい。レイヤ723は、概して、符号化されたピクチャ725のセットである。レイヤ723は、形式上、復号されたときに、指定された特徴(たとえば、共通の解像度、フレームレート、画像サイズなど)を共有するVCL NALユニットのセットとして定義されてよい。ピクチャ725は、VCL NALユニットのセットとしてコーディングされてよい。レイヤ723は、VCL NALユニットの復号をサポートするための関連する非VCL NALユニットも含む。レイヤ723のVCL NALユニットは、例示的なレイヤIDであるnuh_layer_idの特定の値を共有してよい。レイヤ723は、インターレイヤ予測なしにコーディングされるサイマルキャストレイヤであってよく、またはその他のレイヤに基づいてインターレイヤ予測によってコーディングされるレイヤ723であってよい。
【0098】
ピクチャ725は、フレームまたはそのフィールドを生成するルマサンプルの配列およびクロマサンプルの配列である。たとえば、ピクチャ725は、表示のために出力されるか、または出力のためにその他のピクチャ725のコーディングをサポートするために使用される場合があるコーディングされた画像であってよい。ピクチャ725は、VCL NALユニットのセットを含んでよい。ピクチャ725は、1つ以上のスライス727を含む。スライス727は、単一のNALユニット、特に、VCL NALユニットに排他的に含まれるピクチャ725の整数個の完全なタイルまたは(たとえば、タイル内の)整数個の連続する完全なコーディングツリーユニット(CTU)の行として定義される場合がある。スライス727は、CTUおよび/またはコーディングツリーブロック(CTB)にさらに分割される。CTUは、コーディングツリーによって区分けされ得る予め定義されたサイズのサンプルのグループである。CTBは、CTUのサブセットであり、CTUのルマ成分またはクロマ成分を含む。CTU/CTBは、コーディングツリーに基づいてコーディングブロック(coding block)にさらに分割される。そして、コーディングブロックが、予測メカニズムによって符号化/復号され得る。
【0099】
本開示は、たとえば、ビデオシーケンス600によって空間および/またはSNRスケーラビリティをサポートするためのメカニズムを含む。たとえば、VPS 711が、ols_mode_idc 735を含んでよい。ols_mode_idc 735は、OLS 721の数、OLS 721のレイヤ723、およびOLS 721の出力レイヤ723に関連する情報を示すシンタックス要素である。出力レイヤ723は、参照に基づくコーディングのためにのみ使用されるのとは対照的に、デコーダによる出力のために指定される任意のレイヤである。ols_mode_idc 735は、その他の種類のビデオをコーディングするために1または2に設定される場合がある。ols_mode_idc 735は、空間および/またはSNRスケーラビリティをサポートするために0に設定され得る。たとえば、ols_mode_idc 735は、ビデオシーケンス内のOLS 721の総数がVPS 711で指定されたレイヤ723の総数に等しいこと、第iのOLS 721がレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLS 721に関して最上位レイヤだけが出力されることを示すために0に設定され得る。この一連の条件は、任意の数のOLS 721を有するビデオシーケンス600を記述してよい。ols_mode_idc 735を使用する利点は、ols_mode_idc 735がビットを節約することである。アプリケーションシステムのデコーダは、通常、単一のOLSのみを受信する。しかし、ols_mode_idc 735は、多くのデータが共有される複数のOLSを含む符号化されたビットストリームにおいてビットの節約をさらに提供し、したがって、ストリーミングサーバにおいて節約を提供し、そのようなビットストリームの送信に関して帯域幅の節約を提供する。
【0100】
一部の例において、VPS 711は、VPS最大レイヤマイナス1(vps_max_layers_minus1) 737シンタックス要素も含む。vps_max_layers_minus1 737は、VPS 711によって指定されたレイヤ723の数と、したがって、ビットストリーム700内の対応するコーディングされたビデオシーケンスにおいて許容されるレイヤ723の最大数とをシグナリングするシンタックス要素である。ols_mode_idc 735は、vps_max_layers_minus1 737シンタックス要素を参照してよい。たとえば、ols_mode_idc 735は、OLS 721の総数がvps_max_layers_minus1 737によって指定されたレイヤ723の数に等しいことを示してよい。
【0101】
さらに、VPS 711は、each_layer_is_an_ols_flag 733をさらに含んでよい。each_layer_is_an_ols_flag 733は、ビットストリーム700内の各OLS 721が単一のレイヤ723を含むかどうかをシグナリングするシンタックス要素である。たとえば、スケーラビリティが使用されないとき、各OLS 721は、単一のサイマルキャストレイヤを含んでよい。したがって、each_layer_is_an_ols_flag 733は、スケーラビリティをサポートするために、1つ以上のOLS 721が2つ以上のレイヤ723を含むことを示すように(たとえば、0に)設定され得る。したがって、each_layer_is_an_ols_flag 733は、スケーラビリティをサポートするために使用され得る。たとえば、デコーダは、each_layer_is_an_ols_flag 733を検査して、OLS 721の一部が2つ以上のレイヤ723を含むと判定することができる。Each_layer_is_an_ols_flag 733が0に設定されるとき、およびols_mode_idc 735が0(または異なるモードのために使用される1)に設定されるとき、OLSの総数(TotalNumOlss)は、vps_max_layers_minus1 737に等しく設定され得る。TotalNumOlssは、デコーダとエンコーダの仮想参照デコーダ(HRD: hypothetical reference decoder)との両方によって使用される変数である。TotalNumOlssは、ビットストリーム700内のデータに基づいてOLS 721の数を記憶するために使用される変数である。そして、TotalNumOlssは、デコーダにおける復号、またはエンコーダのHRDにおけるビットストリーム700のエラーの検査のために使用され得る。
【0102】
VPS 711は、VPSレイヤ識別子(vps_layer_id[i]) 731シンタックス要素も含んでよい。vps_layer_id[i] 731は、各レイヤのレイヤID(たとえば、nuh_layer_id)を記憶する配列である。したがって、vps_layer_id[i] 731は、第iのレイヤのレイヤIDを示す。
【0103】
デコーダまたはHRDは、OLS 721およびレイヤ723の構成を決定するためにVPS 711のデータを使用することが可能であってよい。特定の例においては、第iのOLSのレイヤの数(NumLayersInOls[i])と、第iのOLSの第jのレイヤのnuh_layer_idの値を指定するOLSのレイヤID(LayerIdInOLS[i][j])とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]は、第iのVPSレイヤ識別子であり、TotalNumOlssは、VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagは、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグである。
【0104】
VPS 711のデータは、SNRおよび/または空間拡張可能なレイヤ723をサポートするために使用され得る。レイヤ723は、符号化され、OLS 721に含まれることが可能である。エンコーダは、要求されたOLS 721およびVPS 711を含むビットストリーム700をデコーダに送信することができる。そして、デコーダは、VPS 711の情報を使用して、OLS 721のレイヤ723を正しく復号することができる。この手法は、スケーラビリティをサポートしながら、コーディング効率をサポートする。特に、デコーダは、迅速に、OLS 721のレイヤ723の数を決定し、OLS 721の出力レイヤを決定し、インターレイヤ予測による出力レイヤの復号をサポートするために復号されるべきレイヤ723を決定することができる。したがって、デコーダは、受信された最上位レイヤを復号するために必要とされるレイヤ723のみを受信してよく、受信された最上位レイヤが、復号され、表示され得る。このようにして、符号化されたレイヤ723の総数が、復号プロセスに影響を与えない可能性があり、上で検討された1つ以上のエラーが、防止される可能性がある。したがって、開示されるメカニズムは、エンコーダおよび/またはデコーダの機能を高める。さらに、開示されるメカニズムは、ビットストリームのサイズを小さくし、したがって、エンコーダとデコーダとの両方におけるプロセッサ、メモリ、および/またはネットワークリソースの利用を削減する可能性がある。
【0105】
以降で、上述の情報が、本明細書において下でより詳細に説明される。階層型ビデオコーディング(layered video coding)は、スケーラブルビデオコーディング、スケーラビリティのあるビデオコーディング(video coding with scalability)とも呼ばれる。ビデオコーディングにおけるスケーラビリティは、マルチレイヤコーディング技術を使用することによってサポートされる場合がある。マルチレイヤビットストリームは、基本レイヤ(BL)および1つ以上の拡張レイヤ(EL)を含む。スケーラビリティの例は、空間スケーラビリティ、品質/信号対雑音比(SNR)スケーラビリティ、多視点スケーラビリティ、フレームレートスケーラビリティなどを含む。マルチレイヤコーディング技術が使用されるとき、ピクチャまたはその一部は、参照ピクチャを使用せずにコーディングされる場合があり(イントラ予測)、同じレイヤにある参照ピクチャを参照することによってコーディングされる場合があり(インター予測)、および/またはその他のレイヤにある参照ピクチャを参照することによってコーディングされる場合がある(インターレイヤ予測)。現在のピクチャのインターレイヤ予測のために使用される参照ピクチャは、インターレイヤ参照ピクチャ(ILRP)と呼ばれる。図5は、異なるレイヤのピクチャが異なる解像度を有する空間スケーラビリティのためのマルチレイヤコーディングの例を示す。
【0106】
一部のビデオコーディングファミリー(video coding family)は、単一レイヤコーディングのためのプロファイル(profile)から分離されたプロファイルでのスケーラビリティのサポートを提供する。スケーラブルビデオコーディング(SVC)は、空間、時間、および品質スケーラビリティのサポートを提供する高度ビデオコーディング(AVC)のスケーラブルな拡張である。SVCに関して、EL MBが下位レイヤからの並置されたブロック(collocated block)を使用して予測されるかどうかを示すために、ELピクチャの各マクロブロック(MB)においてフラグがシグナリングされる。また、並置されたブロックからの予測は、テクスチャ、動きベクトル、および/またはコーディングモードを含んでよい。SVCの実装は、それらの設計に、未修正のAVCの実装を直接再利用しない可能性がある。SVCのELマクロブロックのシンタックスおよび復号プロセスは、AVCのシンタックスおよび復号プロセスと異なる。
【0107】
スケーラブルHEVC(SHVC)は、空間および品質スケーラビリティのサポートを提供するHEVCの拡張である。多視点HEVC(MV-HEVC)は、多視点スケーラビリティのサポートを提供するHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCよりも高度でより効率的な3Dビデオコーディングのサポートを提供するHEVCの拡張である。時間スケーラビリティは、単一レイヤHEVCコーデックの不可欠な部分として含まれる場合がある。HEVCのマルチレイヤ拡張において、インターレイヤ予測のために使用される復号されたピクチャは、同じAUからのみもたらされ、長期参照ピクチャ(LTRP: long-term reference picture)として扱われる。そのようなピクチャは、現在のレイヤのその他の時間的な参照ピクチャと一緒に、参照ピクチャリスト内で参照インデックスを割り当てられる。インターレイヤ予測(ILP)は、参照ピクチャリストのインターレイヤ参照ピクチャを参照するように参照インデックスの値を設定することによって予測ユニット(PU)レベルで実現される。空間スケーラビリティは、ILRPが符号化または復号されている現在のピクチャと異なる空間解像度を有するとき、参照ピクチャまたはその一部を再サンプリングする。参照ピクチャの再サンプリングは、ピクチャレベルかまたはコーディングブロックレベルかのいずれでも実現され得る。
【0108】
VVCは、階層型ビデオコーディングをサポートする場合もある。VVCのビットストリームは、複数のレイヤを含み得る。レイヤは、すべて互いに独立していることが可能である。たとえば、レイヤは、インターレイヤ予測を使用せずにコーディングされ得る。この場合、レイヤは、サイマルキャストレイヤとも呼ばれる。場合によっては、レイヤの一部が、ILPを使用してコーディングされる。VPSのフラグが、レイヤがサイマルキャストレイヤであるかどうか、または一部のレイヤがILPを使用するかどうかを示すことができる。一部のレイヤがILPを使用するとき、レイヤ間のレイヤ依存関係も、VPS内でシグナリングされる。SHVCおよびMV-HEVCと異なり、VVCは、OLSを指定しない可能性がある。OLSは、レイヤの指定されたセットを含み、レイヤのセット内の1つ以上のレイヤが、出力レイヤとして指定される。出力レイヤは、出力されるOLSのレイヤである。VVCの一部の実装においては、レイヤがサイマルキャストレイヤであるとき、1つのレイヤのみが、復号および出力のために選択されてよい。VVCの一部の実装においては、いずれかのレイヤがILPを使用するとき、すべてのレイヤを含むビットストリーム全体が復号されるよう指定される。さらに、レイヤのうち特定のレイヤが、出力レイヤであるように指定される。出力レイヤは、最上位レイヤのみ、すべてのレイヤ、または最上位レイヤと示された下位レイヤのセットとをあわせたものであるように指示される場合がある。
【0109】
上述の態様は、特定の問題を含む。一部のビデオコーディングシステムにおいては、インターレイヤ予測が使用されるとき、ビットストリーム全体およびすべてのレイヤが、復号されるように指定され、レイヤの中の特定のレイヤが、出力レイヤであるように指定される。出力レイヤは、最上位レイヤのみ、すべてのレイヤ、または最上位レイヤと示された下位レイヤのセットとをあわせたものであるように指示される場合がある。問題の説明を簡単にするために、下位レイヤをインターレイヤ予測の参照のために使用する上位のレイヤを有する2つのレイヤが使用されてよい。空間スケーラビリティおよび/またはSNRスケーラビリティのために、システムは、下位レイヤのみの使用(下位レイヤの復号および出力のみ)を規定するべきである。また、システムは、両方のレイヤの使用(両方のレイヤの復号および上位レイヤの出力)を規定するべきである。残念ながら、これは、一部のビデオコーディングシステムにおいては不可能である。
【0110】
概して、本開示は、空間およびSNRスケーラビリティのための出力レイヤセット(OLS)の簡単で効率的なシグナリングのための手法を説明する。技術の説明は、ITU-TおよびISO/IECのJVETによるVVCに基づく。しかし、技術は、その他のビデオコーデックの仕様に基づく階層型ビデオコーディングにも適合する。
【0111】
上述の問題のうちの1つ以上は、以下のように解決されてよい。特に、本開示は、空間およびSNRスケーラビリティのためのOLSのシグナリングのための簡単で効率的な方法を含む。ビデオコーディングシステムは、一部のレイヤがILPを使用すること、VPSによって指定されたOLSの総数がレイヤの数に等しいこと、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むこと、ならびに各OLSに関してOLS内の最上位レイヤだけが出力されることを示すためにVPSを使用してよい。
【0112】
上述のメカニズムの例示的な実装は、以下の通りである。例示的なビデオパラメータセットのシンタックスは、以下の通りである。
【表1A】
【表1B】
【0113】
例示的なビデオパラメータセットのセマンティクスは、以下の通りである。VPS RBSPは、参照される前に復号プロセスに利用可能であるべきであり、TemporalIdが0に等しい少なくとも1つのアクセスユニットに含まれるか、または外部メカニズムを通じて提供されるべきであり、VPS RBSPを含むVPS NALユニットは、vps_layer_id[ 0 ]に等しいnuh_layer_idを有するべきである。CVS内のvps_video_parameter_set_idの特定の値を有するすべてのVPS NALユニットは、同じ内容を有するべきである。vps_video_parameter_set_idは、その他のシンタックス要素による参照のためにVPSの識別子を提供する。vps_max_layers_minus1に1を足した値は、VPSを参照する各CVS内のレイヤの最大の許容される数を指定する。vps_max_sub_layers_minus1に1を足した値は、VPSを参照する各CVSに存在する場合がある時間サブレイヤ(temporal sub-layer)の最大数を指定する。vps_max_sub_layers_minus1]の値は、0および6を含んで0から6までの範囲内にあるべきである。
【0114】
vps_all_independent_layers_flagは、インターレイヤ予測を使用せずにCVS内のすべてのレイヤが独立してコーディングされることを指定するために1に等しく設定されてよい。vps_all_independent_layers_flagは、CVSのレイヤのうちの1つ以上がインターレイヤ予測を使用する場合があることを指定するために0に等しく設定されてよい。存在しないとき、vps_all_independent_layers_flagの値は、1に等しいと推測される。vps_all_independent_layers_flagが1に等しいとき、vps_independent_layer_flag[ i ]の値は、1に等しいと推測される。vps_all_independent_layers_flagが0に等しいとき、vps_independent_layer_flag[ 0 ]の値は、1に等しいと推測される。vps_layer_id[ i ]は、第iのレイヤのnuh_layer_idの値を指定する。任意の2つの非負の整数値mおよびnに関して、mがn未満であるとき、vps_layer_id[ m ]の値は、vps_layer_id[ n ]未満であるべきである。vps_independent_layer_flag[ i ]は、インデックスiを有するレイヤがインターレイヤ予測を使用しないことを指定するために1に等しく設定されてよい。vps_independent_layer_flag[ i ]は、インデックスiを有するレイヤがインターレイヤ予測を使用する可能性があり、vps_layer_dependency_flag[ i ]がVPSに存在することを指定するために0に等しく設定されてよい。存在しないとき、vps_independent_layer_flag[ i ]の値は、1に等しいと推測される。
【0115】
vps_direct_dependency_flag[ i ][ j ]は、インデックスjを有するレイヤがインデックスiを有するレイヤの直接的な参照レイヤではないことを指定するために0に等しく設定されてよい。vps_direct_dependency_flag[ i ][ j ]は、インデックスjを有するレイヤがインデックスiを有するレイヤの直接的な参照レイヤであることを指定するために1に等しく設定されてよい。0およびvps_max_layers_minus1を含んで0からvps_max_layers_minus1までの範囲のiおよびjに関してvps_direct_dependency_flag[ i ][ j ]が存在しないとき、vps_direct_dependency_flag[ i ][ j ]は、0に等しいと推測される。第iのレイヤの第jの直接的な従属レイヤを指定する変数DirectDependentLayerIdx[ i ][ j ]は、以下のように導出される。
for( i = 1; i < vps_max_layers_minus1; i++ )
if( !vps_independent_layer_flag[ i ] )
for( j = i, k = 0; j >= 0; j-- )
if( vps_direct_dependency_flag[ i ][ j ] )
DirectDependentLayerIdx[ i ][ k++ ] = j
【0116】
vps_layer_id[ i ]に等しいnuh_layer_idを有するレイヤのレイヤインデックスを指定する変数GeneralLayerIdx[ i ]は、以下のように導出される。
for( i = 0; i <= vps_max_layers_minus1; i++ )
GeneralLayerIdx[ vps_layer_id[ i ] ] = i
【0117】
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に等しいと推測される。
【0118】
ols_mode_idcは、VPSによって指定されたOLSの総数がvps_max_layers_minus1 + 1に等しく、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含み、各OLSに関してOLS内の最上位レイヤだけが出力されることを指定するために0に等しく設定されてよい。ols_mode_idcは、VPSによって指定されたOLSの総数がvps_max_layers_minus1 + 1に等しく、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含み、各OLSに関してOLS内のすべてのレイヤが出力されることを指定するために1に等しく設定されてよい。ols_mode_idcは、VPSによって指定されたOLSの総数が明示的にシグナリングされ、各OLSに関して、OLS内の最上位レイヤと、下位レイヤの明示的にシグナリングされたセットとが出力されることを指定するために2に等しく設定されてよい。ols_mode_idcの値は、0および2を含んで0から2までの範囲内にあるべきである。ols_mode_idcの値3は、予約されている。vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しいとき、ols_mode_idcの値は、2に等しいと推測される。
【0119】
num_output_layer_sets_minus1に1を足した値は、ols_mode_idcが2であるとき、VPSによって指定されたOLSの総数を指定する。VPSによって指定されたOLSの総数を指定する変数TotalNumOlssは、以下のように導出される。
if( vps_max_layers_minus1 == 0 )
TotalNumOlss = 1
else if( each_layer_is_an_ols_flag || ols_mode_idc == 0 || ols_mode_idc == 1 )
TotalNumOlss = vps_max_layers_minus1 + 1
else if( ols_mode_idc == 2 )
TotalNumOlss = num_output_layer_sets_minus1 + 1
【0120】
layer_included_flag[ i ][ j ]は、ols_mode_idcが2に等しいとき、第jのレイヤ(たとえば、vps_layer_id[ j ]に等しいnuh_layer_idを有するレイヤ)が第iのOLSに含まれるかどうかを指定する。layer_included_flag[ i ][ j ]は、第jのレイヤが第iのOLSに含まれることを指定するために1に等しく設定されてよい。layer_included_flag[ i ][ j ]は、第jのレイヤが第iのOLSに含まれないことを指定するために0に等しく設定されてよい。
【0121】
第iのOLSのレイヤの数を指定する変数NumLayersInOls[ i ]と、第iのOLSの第jのレイヤのnuh_layer_idの値を指定する変数LayerIdInOls[ i ][ j ]とは、以下のように導出されてよい。
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
} else if( ols_mode_idc == 2 ) {
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( layer_included_flag[ i ][ k ] )
LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]
NumLayersInOls[ i ] = j
}
}
【0122】
LayerIdInOls[ i ][ j ]に等しいnuh_layer_idを有するレイヤのOLSレイヤインデックスを指定する変数OlsLayeIdx[ i ][ j ]は、以下のように導出されてよい。
for( i = 0, i < TotalNumOlss; i++ )
for j = 0; j < NumLayersInOls[ i ]; j++ )
OlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j
【0123】
各OLSの最下位レイヤは、独立したレイヤであるべきである。言い換えると、0およびTotalNumOlss - 1を含んで0からTotalNumOlss - 1までの範囲の各iに関して、vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ]の値は、1に等しいべきである。各レイヤは、VPSによって指定された少なくとも1つのOLSに含まれてよい。言い換えると、nuh_layer_idの特定の値を有する各レイヤに関して(たとえば、nuhLayerIdは、0およびvps_max_layers_minus1を含んで0からvps_max_layers_minus1までの範囲のkに関してvps_layer_id[ k ]のうちの1つに等しい)、LayerIdInOls[ i ][ j ]の値がnuhLayerIdに等しいようなiおよびjの値の少なくとも1つのペアが存在するべきであり、iは、0およびTotalNumOlss - 1を含んで0からTotalNumOlss - 1までの範囲内にあり、jは、NumLayersInOls[ i ] - 1の範囲内にある。OLSの任意のレイヤが、OLSの出力レイヤまたはOLSの出力レイヤの(直接的なもしくは間接的な)参照レイヤとなる。
【0124】
vps_output_layer_flag[ i ][ j ]は、ols_mode_idcが2に等しいとき、第iのOLSの第jのレイヤが出力されるかどうかを指定する。vps_output_layer_flag[ i ]は、第iのOLSの第jのレイヤが出力されることを指定するために1に等しく設定されてよい。vps_output_layer_flag[ i ]は、第iのOLSの第jのレイヤが出力されないことを指定するために0に等しく設定されてよい。vps_all_independent_layers_flagが1に等しく、each_layer_is_an_ols_flagが0に等しいとき、vps_output_layer_flag[ i ]の値は、1に等しいと推測され得る。
【0125】
値1が第iのOLSの第jのレイヤが出力されることを指定し、値0が第iのOLSの第jのレイヤが出力されないことを指定する変数OutputLayerFlag[i][j]は、以下のように導出されてよい。
for( i = 0, i < TotalNumOlss; i++ ) {
OutputLayerFlag[ i ][ NumLayersInOls[ i ] - 1 ] = 1
for( j = 0; j < NumLayersInOls[ i ] - 1; j++ )
if( ols_mode_idc[ i ] == 0 )
OutputLayerFlag[ i ][ j ] = 0
else if( ols_mode_idc[ i ] == 1 )
OutputLayerFlag[ i ][ j ] = 1
else if( ols_mode_idc[ i ] == 2 )
OutputLayerFlag[ i ][ j ] = vps_output_layer_flag[ i ][ j ]
}
【0126】
第0のOLSは、最下位レイヤ(たとえば、vps_layer_id[ 0 ]に等しいnuh_layer_idを有するレイヤ)のみを含み、第0のOLSに関しては、含まれる唯一のレイヤが、出力される。vps_constraint_info_present_flagは、general_constraint_info()シンタックス構造がVPSに存在することを指定するために1に等しく設定されてよい。vps_constraint_info_present_flagは、general_constraint_info()シンタックス構造がVPSに存在しないことを指定するために0に等しく設定されてよい。vps_reserved_zero_7bitsは、適合するビットストリームにおいては、0に等しいべきである。vps_reserved_zero_7bitsのその他の値は、予約されている。デコーダは、vps_reserved_zero_7bitsの値を無視するべきである。
【0127】
general_hrd_params_present_flagは、シンタックス要素num_units_in_tickおよびtime_scaleならびにシンタックス構造general_hrd_parameters( )がSPS RBSPシンタックス構造に存在することを指定するために1に等しく設定されてよい。general_hrd_params_present_flagは、シンタックス要素num_units_in_tickおよびtime_scaleならびにシンタックス構造general_hrd_parameters( )がSPS RBSPシンタックス構造に存在しないことを指定するために0に等しく設定されてよい。num_units_in_tickは、クロックティック(clock tick)カウンタの1増分(クロックティックと呼ばれる)に相当する、周波数time_scaleヘルツ(Hz)で動作するクロックの時間単位の数である。num_units_in_tickは、0より大きいべきである。秒を単位とするクロックティックは、num_units_in_tickをtime_scaleで割った商に等しい。たとえば、ビデオ信号のピクチャレートが25Hzであるとき、time_scaleは、27000000に等しい可能性があり、num_units_in_tickは、1080000に等しい可能性があり、したがって、クロックティックは、0.04秒に等しい可能性がある。
【0128】
time_scaleは、1秒間に経過する時間単位の数である。たとえば、27メガヘルツ(MHz)のクロックを使用して時間を計測する時間座標系は、27000000のtime_scaleを有する。time_scaleの値は、0より大きいべきである。vps_extension_flagは、vps_extension_data_flagシンタックス構造がVPS RBSPシンタックス構造に存在しないことを指定するために0に等しく設定されてよい。vps_extension_flagは、vps_extension_data_flagシンタックス要素がVPS RBSPシンタックス構造に存在することを指定するために1に等しく設定されてよい。vps_extension_data_flagは、任意の値を有してよい。vps_extension_data_flagの存在および値は、プロファイルへのデコーダの適合性に影響を与えない。適合するデコーダは、すべてのvps_extension_data_flagシンタックス要素を無視するべきである。
【0129】
図8は、例示的なビデオコーディングデバイス800の概略図である。ビデオコーディングデバイス800は、本明細書において説明されるように開示された例/実施形態を実装するのに好適である。ビデオコーディングデバイス800は、ダウンストリームポート820、アップストリームポート850、ならびに/またはネットワークを介して上流におよび/もしくは下流にデータを伝達するための送信機および/もしくは受信機を含むトランシーバユニット(Tx/Rx) 810を含む。ビデオコーディングデバイス800は、データを処理するための論理ユニットおよび/または中央演算処理装置(CPU)を含むプロセッサ830と、データを記憶するためのメモリ832とをさらに含む。ビデオコーディングデバイス800は、電気、光、またはワイヤレス通信ネットワークを介したデータの通信のためにアップストリームポート850および/またはダウンストリームポート820に結合された電気、光-電気(OE)構成要素、電気-光(EO)構成要素、および/またはワイヤレス通信構成要素も含んでよい。ビデオコーディングデバイス800は、ユーザにおよびユーザからデータを伝達するための入力および/または出力(I/O)デバイス860も含んでよい。I/Oデバイス860は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力デバイスを含んでよい。I/Oデバイス860は、キーボード、マウス、トラックボールなどの入力デバイス、および/またはそのような出力デバイスとインタラクションするための対応するインターフェースも含んでよい。
【0130】
プロセッサ830は、ハードウェアおよびソフトウェアによって実装される。プロセッサ830は、1つ以上のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装されてよい。プロセッサ830は、ダウンストリームポート820、Tx/Rx 810、アップストリームポート850、およびメモリ832と通信する。プロセッサ830は、コーディングモジュール814を含む。コーディングモジュール814は、マルチレイヤビデオシーケンス500、ビデオシーケンス600、および/またはビットストリーム700を使用する場合がある、方法100、900、および1000などの本明細書において説明される開示される実施形態を実装する。コーディングモジュール814は、本明細書において説明される任意のその他の方法/メカニズムも実装してよい。さらに、コーディングモジュール814は、コーデックシステム200、エンコーダ300、および/またはデコーダ400を実装してよい。たとえば、コーディングモジュール814は、SNRおよび/または空間スケーラビリティをサポートするために、ビデオシーケンスをレイヤおよび/またはOLSにコーディングするために使用されてよい。たとえば、コーディングモジュール814は、ols_mode_idcシンタックス要素をビットストリームのVPSに/から符号化および/または復号してよい。ols_mode_idcシンタックス要素は、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しいこと、第iのOLSがレイヤ0およびレイヤiを含んでレイヤ0からiまでを含むこと、ならびに各OLSに関して最上位レイヤだけが出力されることを示し得る。したがって、コーディングモジュール814は、受信された最上位レイヤのみが復号され、表示されることが可能であり、すべてのその他の受信されたレイヤが受信された最上位レイヤの復号をサポートするために復号されるべきであることを示す/決定するためにols_mode_idcシンタックス要素を使用してよい。したがって、コーディングモジュール814は、ビデオデータをコーディングするときにビデオコーディングデバイス800に追加的な機能および/またはコーディング効率を提供させる。したがって、コーディングモジュール814は、ビデオコーディングデバイス800の機能を高め、ビデオコーディング技術に固有の問題に対処する。さらに、コーディングモジュール814は、異なる状態へのビデオコーディングデバイス800の転換をもたらす。代替的に、コーディングモジュール814は、メモリ832に記憶され、プロセッサ830によって実行される命令として(たとえば、非一時的媒体に記憶されたコンピュータプログラム製品として)実装され得る。
【0131】
メモリ832は、ディスク、テープドライブ、ソリッドステートドライブ、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、3値連想メモリ(TCAM: ternary content-addressable memory)、スタティックランダムアクセスメモリ(SRAM)などの1つ以上のメモリを含む。メモリ832は、プログラムが実行するために選択されるときにそのようなプログラムを記憶するためならびにプログラムの実行中に読まれる命令およびデータを記憶するためのオーバーフローデータストレージデバイス(over-flow data storage device)として使用されてよい。
【0132】
図9は、ビットストリーム700内のマルチレイヤビデオシーケンス500および/またはビデオシーケンス600などの、スケーラビリティのために構成されたOLSを有するビデオシーケンスを符号化する例示的な方法900の流れ図である。方法900は、方法100を実行するときにコーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス800などのエンコーダによって使用されてよい。
【0133】
方法900は、エンコーダがビデオシーケンスを受信し、たとえば、ユーザ入力に基づいて、そのビデオシーケンスをレイヤおよびOLSのセット内で拡張可能なビデオシーケンスとして符号化すると決定するときに開始してよい。ビデオシーケンスは、SNRスケーラビリティ、空間スケーラビリティ、本明細書において検討されるその他の特徴によるスケーラビリティ、またはそれらの組み合わせをサポートするようにコーディングされてよい。ステップ901において、エンコーダは、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化することができる。特に、エンコーダは、最も低いレイヤIDを有する基本レイヤと、レイヤIDが大きくなる様々な拡張レイヤとを符号化することができる。レイヤIDがjの各拡張レイヤは、基本レイヤとレイヤIDがj未満の任意の拡張レイヤとに基づいてインターレイヤ予測によってコーディングされてよい。また、レイヤは、jのレイヤIDを区別するためにiによって示されてよいOLS IDを有するOLSに編成され得る。たとえば、レイヤ毎に1つのOLSが存在する場合がある。したがって、OLS IDがiのOLSは、レイヤIDがjの出力レイヤを含む場合があり、iは、iに等しい。OLS IDがiのOLSは、レイヤIDが0およびj-1を含んで0からj-1までの間のすべてのレイヤを含む場合もある。例として、OLS IDが5のOLSは、レイヤ0から5を含む場合があり、レイヤ5が、出力レイヤである。
【0134】
ステップ903において、エンコーダは、VPSをビットストリームに符号化する。VPSは、ols_mode_idcシンタックス要素を含む。ols_mode_idcは、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するように設定され得る。さらに、ols_mode_idcは、第iのOLSが0ならびにiおよび/またはjを含んで0からiおよび/またはjまで(たとえば、この場合、iはjに等しい)のレイヤインデックスを有するレイヤを含むことを指定するように設定され得る。ols_mode_idcは、各OLSに関して、各OLSの最上位レイヤのみが出力レイヤであることを指定するように設定されてもよい。たとえば、ols_mode_idcは、いくつかのモードのうちの1つに設定されてよい。ols_mode_idcが0に設定されるとき、上述のモードがシグナリングされる場合がある。一部の例において、VPSは、VPSによって指定されたレイヤの数を指定するvps_max_layers_minus1も含んでよい。また、これは、VPSを参照する各CVS内のレイヤの最大の許容される数である。ols_mode_idcは、vps_max_layers_minus1を参照してよい。
【0135】
例として、ビデオシーケンスは、規格の検証の目的で、デコーダおよび/またはエンコーダの仮想参照デコーダにおいて復号され得る。VPSのeach_layer_is_an_ols_flagが0に設定されるとき、ols_mode_idcが0に設定されるとき、またはols_mode_idcが1に設定されるとき、ビデオシーケンスを復号するとき、ビデオシーケンスのOLSの総数(TotalNumOlss)変数は、vps_max_layers_minus1に1を足した値に等しく設定され得る。特定の例として、第iのOLSのレイヤの数(NumLayersInOls[i])と、第iのOLSの第jのレイヤのnuh_layer_idの値を指定するOLSのレイヤID(LayerIdInOLS[i][j])とが、以下のように導出されることが可能であり、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグであると規定する。
【0136】
ステップ905において、エンコーダは、デコーダに伝達するためにビットストリームを記憶することができる。たとえば、デコーダは、(たとえば、ハイパーテキスト転送プロトコル上の動的適応ストリーミング(DASH: dynamic adaptive streaming over hypertext transfer protocol)などの通信および/またはその他のプロトコルによって)利用可能なOLSを認識する可能性がある。デコーダは、デコーダによって適切に復号/表示され得る最も高いIDを有するOLSを選択し、要求することができる。たとえば、空間スケーラビリティの場合、デコーダは、デコーダに接続された画面に関連するピクチャサイズを有するOLSを要求することができる。SNRスケーラビリティの場合、デコーダは、現在のネットワークの条件に照らして(たとえば、利用可能な通信帯域幅に照らして)復号され得る最も高いIDのOLSを要求することができる。そして、エンコーダおよび/または中間キャッシュもしくはコンテンツサーバは、OLSおよび関連するレイヤを復号のためにデコーダに送信することができる。したがって、エンコーダは、デコーダのニーズに基づいてスケールアップまたはスケールダウンし得るビデオシーケンスを生成することができる。
【0137】
図10は、ビットストリーム700内のマルチレイヤビデオシーケンス500および/またはビデオシーケンス600などの、スケーラビリティのために構成されたOLSを含むビデオシーケンスを復号する例示的な方法1000の流れ図である。方法1000は、方法100を実行するときにコーデックシステム200、デコーダ400、および/またはビデオコーディングデバイス800などのデコーダによって使用されてよい。
【0138】
方法1000は、たとえば、方法900の結果として、拡張可能なビデオシーケンスのレイヤのセットを有するOLSを含むビットストリームをデコーダが受信し始めるときに開始してよい。ビデオシーケンスは、SNRスケーラビリティ、空間スケーラビリティ、本明細書において検討されるその他の特徴によるスケーラビリティ、またはそれらの組み合わせをサポートするようにコーディングされてよい。ステップ1001において、デコーダは、コーディングされたピクチャの1つ以上のレイヤおよびVPSを含むビットストリームを受信することができる。レイヤは、OLSに含まれる場合がある。たとえば、レイヤは、最も低いレイヤIDを有する基本レイヤと、レイヤIDが大きくなる様々な拡張レイヤとを含む場合がある。レイヤIDがjの各拡張レイヤは、基本レイヤとレイヤIDがj未満の任意の拡張レイヤとに基づいてインターレイヤ予測によってコーディングされてよい。OLSは、jのレイヤIDを区別するためにiによって示されてよいOLS ID含む可能性がある。たとえば、レイヤ毎に符号化されたビットストリーム内に1つのOLSが存在する場合がある。したがって、OLS IDがiのOLSは、レイヤIDがjの出力レイヤを含む場合があり、iは、iに等しい。OLS IDがiである受信されるOLSは、レイヤIDが0およびj-1を含んで0からj-1までの間のすべてのレイヤを含む場合もある。例として、OLS IDが5である受信されたOLSは、レイヤ0から5を含む場合があり、レイヤ5が、出力レイヤである。OLSおよびレイヤの構成は、VPSによって示される場合がある。
【0139】
たとえば、VPSは、ols_mode_idcシンタックス要素を含む。ols_mode_idcは、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するように設定され得る。さらに、ols_mode_idcは、第iのOLSが0ならびにiおよび/またはjを含んで0からiおよび/またはjまで(たとえば、この場合、iはjに等しい)のレイヤインデックスを有するレイヤを含むことを指定するように設定され得る。ols_mode_idcは、各OLSに関して、各OLSの最上位レイヤのみが出力レイヤであることを指定するように設定されてもよい。たとえば、ols_mode_idcは、いくつかのモードのうちの1つに設定されてよい。ols_mode_idcが0に設定されるとき、上述のモードがシグナリングされる場合がある。一部の例において、VPSは、VPSによって指定されたレイヤの数を指定するvps_max_layers_minus1も含んでよい。これは、VPSを参照する各CVS内のレイヤの最大の許容される数である。ols_mode_idcは、vps_max_layers_minus1を参照してよい。
【0140】
ステップ1003において、デコーダは、VPSのols_mode_idcに基づいて出力レイヤを決定することができる。例として、VPSのeach_layer_is_an_ols_flagが0に設定されるとき、ols_mode_idcが0に設定されるとき、またはols_mode_idcが1に設定されるとき、ビデオシーケンスを復号するとき、ビデオシーケンスのOLSの総数(TotalNumOlss)変数は、vps_max_layers_minus1に1を足した値に等しく設定され得る。特定の例として、第iのOLSのレイヤの数(NumLayersInOls[i])と、第iのOLSの第jのレイヤのnuh_layer_idの値を指定するOLSのレイヤID(LayerIdInOLS[i][j])とが、以下のように導出されることが可能であり、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグであると規定する。このプロセスは、デコーダがOLSの構成ならびに出力レイヤのIDおよびサポートレイヤのIDを決定することを可能にする。
【0141】
出力レイヤのIDおよびサポートレイヤのIDが知られると、デコーダは、インターレイヤ予測を使用することによって、サポートレイヤに基づいて出力レイヤのコーディングされたピクチャの復号を開始することができる。ステップ1005において、デコーダは、復号されたピクチャを生成するために出力レイヤからのコーディングされたピクチャを復号することができる。ステップ1007において、デコーダは、復号されたビデオシーケンスの一部として表示するために、復号されたピクチャを転送することができる。
【0142】
たとえば、デコーダは、(たとえば、ハイパーテキスト転送プロトコル上の動的適応ストリーミング(DASH)などの通信および/またはその他のプロトコルによって)利用可能なOLSを認識する可能性がある。デコーダは、デコーダによって適切に復号/表示され得る最も高いIDを有するOLSを選択し、要求することができる。たとえば、空間スケーラビリティの場合、デコーダは、デコーダに接続された画面に関連するピクチャサイズを有するOLSを要求することができる。SNRスケーラビリティの場合、デコーダは、現在のネットワークの条件に照らして(たとえば、利用可能な通信帯域幅に照らして)復号され得る最も高いIDのOLSを要求することができる。そして、エンコーダおよび/または中間キャッシュもしくはコンテンツサーバは、OLSおよび関連するレイヤを復号のためにデコーダに送信することができる。したがって、エンコーダは、デコーダのニーズに基づいてスケールアップまたはスケールダウンし得るビデオシーケンスを生成することができる。そのとき、デコーダは、方法1000を使用することによって、受信時に、要求されたビデオシーケンスを復号することができる。
【0143】
図11は、ビットストリーム700内のマルチレイヤビデオシーケンス500および/またはビデオシーケンス600などの、スケーラビリティのために構成されたOLSを有するビデオシーケンスをコーディングするための例示的なシステム1100の概略図である。システム1100は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディングデバイス800などのエンコーダおよびデコーダによって実装されてよい。さらに、システム1100は、方法100、900、および/または1000を実施するときに使用されてよい。
【0144】
システム1100は、ビデオエンコーダ1102を含む。ビデオエンコーダ1102は、コーディングされたピクチャの1つ以上のレイヤを含むビットストリームを符号化するための符号化モジュール1105を含む。符号化モジュール1105は、さらに、ビットストリームにVPSを符号化するためのものであり、VPSは、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するols_mode_idcを含む。ビデオエンコーダ1102は、デコーダに伝達するためにビットストリームを記憶するための記憶モジュール1106をさらに含む。ビデオエンコーダ1102は、ビットストリームをビデオデコーダ1110に送信するための送信モジュール1107をさらに含む。ビデオエンコーダ1102は、方法900のステップのいずれかを実行するようにさらに構成されてよい。
【0145】
システム1100は、ビデオデコーダ1110も含む。ビデオデコーダ1110は、コーディングされたピクチャの1つ以上のレイヤおよびVPSを含むビットストリームを受信するための受信モジュール1111であって、VPSが、VPSによって指定されたOLSの総数がVPSによって指定されたレイヤの数に等しいことを指定するols_mode_idcを含む、受信モジュール1111を含む。ビデオデコーダ1110は、VPSのols_mode_idcに基づいて出力レイヤを決定するための決定モジュール1113をさらに含む。ビデオデコーダ1110は、復号されたピクチャを生成するために出力レイヤからのコーディングされたピクチャを復号するための復号モジュール1115をさらに含む。ビデオデコーダ1110は、復号されたビデオシーケンスの一部として表示するために復号されたピクチャを転送するための転送モジュール1117をさらに含む。ビデオデコーダ1110は、方法1000のステップのいずれかを実行するようにさらに構成されてよい。
【0146】
第1の構成要素と第2の構成要素との間の回線、トレース、または別の媒体を除いて仲介構成要素が存在しないとき、第1の構成要素が、第2の構成要素に直接結合される。第1の構成要素と第2の構成要素との間の回線、トレース、または別の媒体以外の仲介構成要素が存在するとき、第1の構成要素は、第2の構成要素に間接的に結合される。用語「結合される」およびその変化形は、直接的に結合されると間接的に結合されるとの両方を含む。用語「約」の使用は、特に断りのない限り、その後の数の±10%を含む範囲を意味する。
【0147】
本明細書において説明された例示的な方法のステップは、必ずしも説明された順序で実行されることを求められず、そのような方法のステップの順序は、例示的であるに過ぎないと理解されるべきであることも理解されたい。同様に、さらなるステップが、そのような方法に含まれる場合があり、特定のステップが、本開示の様々な実施形態に一致する方法において省略されるかまたは組み合わされる場合がある。
【0148】
いくつかの実施形態が本開示において与えられたが、開示されたシステムおよび方法は、本開示の精神または範囲を逸脱することなく多くのその他の特定の形態で具現化される可能性があることが理解されるであろう。これらの例は、例示的であって限定的でないと考えられるべきであり、意図は、本明細書において与えられた詳細に限定されるべきでない。たとえば、様々な要素もしくは構成要素が、組み合わされるかもしくは別のシステムに統合される場合があり、または特定の特徴が、省略されるかもしくは実装されない場合がある。
【0149】
加えて、様々な実施形態において分離しているまたは別々であるものとして説明され、図示された技術、システム、サブシステム、および方法は、本開示の範囲を逸脱することなくその他のシステム、構成要素、技術、または方法と組み合わされるかまたは統合される場合がある。変更、置き換え、および改変のその他の例が、当業者によって突き止められる可能性があり、本明細書において開示された精神および範囲を逸脱することなくなされる可能性がある。
【符号の説明】
【0150】
100 動作方法
200 コーディングおよびデコーディング(コーデック)システム
201 区分けされたビデオ信号
211 全般的コーダ制御構成要素
213 変換・スケーリングおよび量子化構成要素
215 イントラピクチャ推定構成要素
217 イントラピクチャ予測構成要素
219 動き補償構成要素
221 動き推定構成要素
223 復号ピクチャバッファ構成要素
225 ループ内フィルタ構成要素
227 フィルタ制御分析構成要素
229 スケーリングおよび逆変換構成要素
231 ヘッダフォーマットおよびコンテキスト適応2値算術コーディング(CABAC)構成要素
300 ビデオエンコーダ
301 区分けされたビデオ信号
313 変換および量子化構成要素
317 イントラピクチャ予測構成要素
321 動き補償構成要素
323 復号ピクチャバッファ構成要素
325 ループ内フィルタ構成要素
329 逆変換および量子化構成要素
331 エントロピーコーディング構成要素
400 ビデオデコーダ
417 イントラピクチャ予測構成要素
421 動き補償構成要素
423 復号ピクチャバッファ構成要素
425 ループ内フィルタ構成要素
429 逆変換および量子化構成要素
433 エントロピー復号構成要素
500 マルチレイヤビデオシーケンス
511 ピクチャ
512 ピクチャ
513 ピクチャ
514 ピクチャ
515 ピクチャ
516 ピクチャ
517 ピクチャ
518 ピクチャ
521 インターレイヤ予測
523 インター予測
525 OLS
531 レイヤN
532 レイヤN+1
600 ビデオシーケンス
620 OLS
621 OLS
622 OLS
630 レイヤ
631 レイヤ
632 レイヤ
700 ビットストリーム
711 VPS
713 シーケンスパラメータセット(SPS)
715 ピクチャパラメータセット(PPS)
717 スライスヘッダ
720 画像データ
721 OLS
723 レイヤ
725 ピクチャ
727 スライス
731 vps_layer_id[i]
733 each_layer_is_an_ols_flag
735 ols_mode_idc
737 vps_max_layers_minus1
800 ビデオコーディングデバイス
810 トランシーバユニット(Tx/Rx)
814 コーディングモジュール
820 ダウンストリームポート
830 プロセッサ
832 メモリ
850 アップストリームポート
860 入力および/または出力(I/O)デバイス
900 方法
1000 方法
1100 システム
1102 ビデオエンコーダ
1105 符号化モジュール
1106 記憶モジュール
1107 送信モジュール
1110 ビデオデコーダ
1111 受信モジュール
1113 決定モジュール
1115 復号モジュール
1117 転送モジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【手続補正書】
【提出日】2023-12-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
符号化ビットストリームであって、
1つ又は複数のレイヤのコーディングされたピクチャのバイナリデータと、
デオパラメータセット(VPS)であって、前記VPSが、前記VPSによって指定された出力レイヤセット(OLS)の総数が前記VPSによって指定されたレイヤの数に等しいことを指定するOLSモード識別コード(ols_mode_idc)を含む、VPSとを含み、
前記符号化ビットストリームは、前記デコーダのプロセッサによって、前記VPSの前記ols_mode_idcに基づいて出力レイヤを決定することに用いられ、
前記デコーダのプロセッサによって、復号されたピクチャを生成するために前記出力レイヤからのコーディングされたピクチャを復号するステップとを含む、符号化ビットストリーム。
【請求項2】
前記ols_mode_idcが、第iのOLSが0およびiを含んで0からiまでのレイヤインデックスを有するレイヤを含むことを指定する請求項1に記載の符号化ビットストリーム。
【請求項3】
前記ols_mode_idcが、各OLSに関して、前記各OLSの最上位レイヤのみが出力レイヤであることを指定する請求項1または2に記載の符号化ビットストリーム。
【請求項4】
前記ols_mode_idcが、0に等しい請求項1から3のいずれか一項に記載の符号化ビットストリーム。
【請求項5】
前記VPSが、前記VPSを参照する各コーディングされたビデオシーケンス(CVS)内のレイヤの最大の許容される数である前記VPSによって指定されたレイヤの前記数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む請求項1から4のいずれか一項に記載の符号化ビットストリーム。
【請求項6】
前記ols_mode_idcが0に等しいとき、または前記ols_mode_idcが1に等しいとき、OLSの前記総数(TotalNumOlss)が、vps_max_layers_minus1に1を加えた値に等しい請求項1から5のいずれか一項に記載の符号化ビットストリーム。
【請求項7】
第iのOLSのレイヤの数(NumLayersInOls[i])と、前記第iのOLSの第jのレイヤのネットワーク抽象化レイヤ(NAL)ユニットヘッダレイヤ識別子(nuh_layer_id)の値を指定するOLSのレイヤ識別子(ID)(LayerIdInOLS[i][j])とが、以下のように導出され、
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc == 0 || ols_mode_idc == 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
vps_layer_id[i]が、第iのVPSレイヤ識別子であり、TotalNumOlssが、前記VPSによって指定されたOLSの総数であり、each_layer_is_an_ols_flagが、少なくとも1つのOLSが2つ以上のレイヤを含むかどうか指定する、各レイヤがOLSフラグである請求項1から6のいずれか一項に記載の符号化ビットストリーム。
【請求項8】
請求項1から7のいずれか一項に記載の符号化ビットストリームを含む非一時的コンピュータ可読媒体。
【請求項9】
プロセッサと、
前記プロセッサに結合される受信機と、
前記プロセッサに結合される非一時的記憶ストレージと、
前記プロセッサに結合される送信機とを備え、
前記プロセッサ、前記受信機、前記非一時的記憶ストレージ及び前記送信機は、請求項1から7のいずれか一項に記載の符号化ビットストリームを復号するように構成される
コーダ。
【外国語明細書】