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

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

▶ 華為技術有限公司の特許一覧

特表2022-550715マルチビュースケーラビリティのためのOLS
<>
  • 特表-マルチビュースケーラビリティのためのOLS 図1
  • 特表-マルチビュースケーラビリティのためのOLS 図2
  • 特表-マルチビュースケーラビリティのためのOLS 図3
  • 特表-マルチビュースケーラビリティのためのOLS 図4
  • 特表-マルチビュースケーラビリティのためのOLS 図5
  • 特表-マルチビュースケーラビリティのためのOLS 図6
  • 特表-マルチビュースケーラビリティのためのOLS 図7
  • 特表-マルチビュースケーラビリティのためのOLS 図8
  • 特表-マルチビュースケーラビリティのためのOLS 図9
  • 特表-マルチビュースケーラビリティのためのOLS 図10
  • 特表-マルチビュースケーラビリティのためのOLS 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-05
(54)【発明の名称】マルチビュースケーラビリティのためのOLS
(51)【国際特許分類】
   H04N 19/70 20140101AFI20221128BHJP
   H04N 19/30 20140101ALI20221128BHJP
【FI】
H04N19/70
H04N19/30
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022518867
(86)(22)【出願日】2020-09-18
(85)【翻訳文提出日】2022-05-09
(86)【国際出願番号】 US2020051608
(87)【国際公開番号】W WO2021061531
(87)【国際公開日】2021-04-01
(31)【優先権主張番号】62/905,132
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ワーン,イエ-クイ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA17
5C159MA31
5C159MC11
5C159ME01
5C159PP04
5C159RB09
5C159RC11
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
ビデオコーディングメカニズムが開示される。当該メカニズムは、出力レイヤセット(OLS)及びビデオパラメータセット(VPS)を含むビットストリームを受信することを含む。OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む。出力レイヤは、VPS内のols_mode_idcに基づいて決定される。出力レイヤからのコーディングされたピクチャは、復号されたピクチャを生成するように復号される。復号されたピクチャは、復号ビデオシーケンスの一部として表示するために転送される。
【特許請求の範囲】
【請求項1】
デコーダにより実現される方法であって、当該方法は、
前記デコーダの受信機により、出力レイヤセット(OLS)及びビデオパラメータセット(VPS)を含むビットストリームを受信するステップであり、前記OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、
前記デコーダのプロセッサにより、前記VPS内の前記ols_mode_idcに基づいて、前記出力レイヤを決定するステップと、
前記デコーダのプロセッサにより、前記出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するステップと
を含む方法。
【請求項2】
前記ols_mode_idcは、前記VPSにより指定されたOLSの総数が前記VPSにより指定されたレイヤの数に等しいことを指定する、請求項1に記載の方法。
【請求項3】
前記ols_mode_idcは、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定する、請求項1又は2に記載の方法。
【請求項4】
前記ols_mode_idcは1に等しい、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記VPSは、前記VPSを参照する各コーディング済ビデオシーケンス(CVS)内のレイヤの最大許容数である、前記VPSにより指定されたレイヤの前記数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む、請求項1乃至4のうちいずれか1項に記載の方法。
【請求項6】
OLSの前記総数(TotalNumOlss)は、前記ols_mode_idcが0に等しいとき、或いは、前記ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しい、請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
第iのOLS内のレイヤの数(NumLayersInOls[i])及び前記第iのOLS内の第jのレイヤのネットワーク抽象レイヤ(NAL)ユニットヘッダレイヤ識別子(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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
エンコーダにより実現される方法であって、当該方法は、
前記エンコーダのプロセッサにより、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上の出力レイヤセット(OLS)を含むビットストリームを符号化するステップと、
前記プロセッサにより、ビデオパラメータセット(VPS)を前記ビットストリームに符号化するステップであり、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定する出力レイヤセット(OLS)モード識別コード(ols_mode_idc)を含む、ステップと、
前記プロセッサに結合されたメモリにより、デコーダに向けて通信するために前記ビットストリームを記憶するステップと
を含む方法。
【請求項9】
前記ols_mode_idcは、前記VPSにより指定されたOLSの総数が前記VPSにより指定されたレイヤの数に等しいことを指定する、請求項8に記載の方法。
【請求項10】
前記ols_mode_idcは、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定する、請求項8又は9に記載の方法。
【請求項11】
前記ols_mode_idcは1に等しい、請求項8乃至10のうちいずれか1項に記載の方法。
【請求項12】
前記VPSは、前記VPSを参照する各コーディング済ビデオシーケンス(CVS)内のレイヤの最大許容数である、前記VPSにより指定されたレイヤの前記数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む、請求項8乃至11のうちいずれか1項に記載の方法。
【請求項13】
OLSの前記総数(TotalNumOlss)は、前記ols_mode_idcが0に等しいとき、或いは、前記ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しい、請求項8乃至12のうちいずれか1項に記載の方法。
【請求項14】
第iのOLS内のレイヤの数(NumLayersInOls[i])及び前記第iのOLS内の第jのレイヤのネットワーク抽象レイヤ(NAL)ユニットヘッダレイヤ識別子(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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである、請求項8乃至13のうちいずれか1項に記載の方法。
【請求項15】
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを含むビデオコーディングデバイスであって、
前記プロセッサ、受信機、メモリ及び送信機は、請求項1乃至14のうちいずれか1項に記載の方法を実行するように構成される、ビデオコーディングデバイス。
【請求項16】
ビデオコーディングデバイスにより使用されるコンピュータプログラム製品を含む非一時的なコンピュータ読み取り可能媒体であって、
前記コンピュータプログラム製品は、プロセッサにより実行されたとき、前記ビデオコーディングデバイスに請求項1乃至14のうちいずれか1項に記載の方法を実行させるように、当該非一時的なコンピュータ読み取り可能媒体に記憶されたコンピュータ実行可能命令を含む、非一時的なコンピュータ読み取り可能媒体。
【請求項17】
デコーダであって、
出力レイヤセット(OLS)及びビデオパラメータセット(VPS)を含むビットストリームを受信するための受信手段であり、前記OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む、受信手段と、
前記VPS内の前記ols_mode_idcに基づいて、前記出力レイヤを決定するための決定手段と、
前記出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するための復号手段と、
復号ビデオシーケンスの一部として表示するために、前記復号されたピクチャを転送するための転送手段と
を含むデコーダ。
【請求項18】
当該デコーダは、請求項1乃至7のうちいずれか1項に記載の方法を実行するように更に構成される、請求項17に記載のデコーダ。
【請求項19】
エンコーダであって、
コーディングされたピクチャの1つ以上のレイヤを含む1つ以上の出力レイヤセット(OLS)を含むビットストリームを符号化し、ビデオパラメータセット(VPS)を前記ビットストリームに符号化するための符号化手段であり、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定する出力レイヤセット(OLS)モード識別コード(ols_mode_idc)を含む、符号化手段と、
デコーダに向けて通信するために前記ビットストリームを記憶するための記憶手段と
を含むエンコーダ。
【請求項20】
当該エンコーダは、請求項8乃至14のうちいずれか1項に記載の方法を実行するように更に構成される、請求項19に記載のエンコーダ。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この特許出願は、Ye-Kui Wangにより2019年9月24日に出願された「Signalling Of Output Layer Sets For Multiview Scalability」という名称の米国仮特許出願第62/905,132号の優先権を主張し、これを参照することにより援用する。
【0002】
[技術分野]
本開示は、概してビデオコーディングに関し、具体的には、マルチビュービデオのための空間及び信号対雑音(signal to noise, SNR)スケーラビリティをサポートするために、マルチレイヤビットストリームにおいて出力レイヤセット(output layer set, OLS)を構成することに関連する。
【背景技術】
【0003】
比較的短いビデオですら描写するために必要なビデオデータの量はかなりのものとなる可能性があり、これは、データが限られた帯域幅容量を有する通信ネットワークを横切ってストリーミング又は他の方法で通信されるときに困難を生じることがある。したがって、ビデオデータは、一般的に、今日の電気通信ネットワークを横切って通信される前に圧縮される。メモリリソースが限られることがあるので、ビデオのサイズはまた、ビデオが記憶デバイスに記憶されるときに問題になる可能性がある。ビデオ圧縮デバイスは、しばしば、伝送又は記憶の前にビデオデータをコーディングするために、ソースにおいてソフトウェア及び/又はハードウェアを使用し、それにより、デジタルビデオ画像を表すために必要なデータの量を減少させる。次いで、圧縮データは、宛先において、ビデオデータを復号するビデオ解凍デバイスにより受信される。限られたネットワークリソース及びより高いビデオ品質の増え続ける要求によって、画像品質にほとんど犠牲を払わずに或いは全く犠牲を払わずに圧縮比を改善する改善した圧縮及び解凍技術が望まれる。
【発明の概要】
【0004】
一実施形態では、本開示は、デコーダにより実現される方法を含み、当該方法は、デコーダの受信機により、出力レイヤセット(output layer set, OLS)及びビデオパラメータセット(video parameter set, VPS)を含むビットストリームを受信するステップであり、OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、デコーダのプロセッサにより、VPS内のols_mode_idcに基づいて、出力レイヤを決定するステップと、デコーダのプロセッサにより、出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するステップとを含む。
【0005】
いくつかのビデオコーディングシステムは、1つ以上の指示された下位レイヤと共に、レイヤIDにより示されるように、最高の符号化レイヤを復号して出力するようにのみ構成される。これは、デコーダが最高のレイヤを復号することを望まないことがあるので、スケーラビリティにとって問題を提起する可能性がある。具体的には、デコーダは、一般的にデコーダがサポートできる最高のレイヤを要求するが、デコーダは、一般的に要求されたレイヤよりも高いレイヤを復号することは不可能である。具体的な例として、デコーダは、合計で15個の符号化レイヤのうち第3のレイヤを受信して復号することを望むことがある。第3のレイヤを復号するためにレイヤ4~15が必要とされないので、第3のレイヤは、このようなレイヤなしにデコーダに送信できる。しかし、最高のレイヤ(レイヤ15)が存在せず、ビデオシステムが常に最高のレイヤを復号して表示するように指示されるので、デコーダは、第3のレイヤを適切に復号して表示することは不可能であることがある。これは、このようなシステムにおいてビデオスケーラビリティが試みられるときにエラーを生じる。これは、デコーダが常に最高のレイヤをサポートすることを要求することが、異なるハードウェア及びネットワーク要件に基づいて中間レイヤに対してスケーリングできないシステムを生じるので、有意な問題になることがある。マルチビューが使用されるとき、この問題は複雑になる。マルチビューでは、1つよりも多くのレイヤが表示のために出力される。例えば、ユーザは、ヘッドセットを使用してもよく、異なるレイヤが、三次元(three dimensional, 3D)ビデオの印象を作成するように各眼に表示されてもよい。スケーラビリティをサポートできないシステムはまた、マルチビュースケーラビリティもサポートできない。
【0006】
本例は、マルチビュースケーラビリティをサポートするためのメカニズムを含む。レイヤは、OLSに含まれる。エンコーダは、サイズ又はSNRのような特定の特性に対してスケーリングするように、レイヤを含むOLSを送信できる。さらに、エンコーダは、例えばVPSにおいて、ols_mode_idcシンタックスエレメントを伝送してもよい。ols_mode_idcシンタックスエレメントは、マルチビュースケーラビリティの使用を示すために1に設定できる。例えば、ols_mode_idcは、OLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについて全てのレイヤが出力レイヤとして考えられることを示すことができる。これは、デコーダが特定のOLS内の全てのレイヤを受信して復号できるので、スケーラビリティをサポートする。全てのレイヤは出力レイヤであるので、デコーダは所望の出力レイヤを選択してレンダリングできる。このように、符号化されたレイヤの総数は、復号プロセスに影響を及ぼさないことがあり、依然としてスケーラブルマルチビュービデオを提供しつつ、エラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。特定の実施形態では、ols_mode_idcを使用することは、多くのデータが共有される複数のOLSを含む符号化ビットストリームにおいてビット節約を提供し、したがって、ストリーミングサーバにおける節約を提供し、このようなビットストリームを伝送するための帯域幅節約を提供する。例えば、ols_mode_idcを1に設定することの利点は、マルチビューアプリケーションのようなユースケースをサポートすることであり、それぞれが1つのレイヤにより表される2つ以上のビューが同時に出力されて表示される。
【0007】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが、VPSにより指定されたOLSの総数がVPSにより指定されたレイヤの数に等しいことを指定することを提供する。
【0008】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定することを提供する。
【0009】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが1に等しいことを提供する。
【0010】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、VPSが、VPSを参照する各コーディング済ビデオシーケンス(coded video sequence, CVS)内のレイヤの最大許容数である、VPSにより指定されたレイヤの数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含むことを提供する。
【0011】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、OLSの総数(TotalNumOlss)が、ols_mode_idcが0に等しいとき、或いは、ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しいことを提供する。
【0012】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、第iのOLS内のレイヤの数(NumLayersInOls[i])及び第iのOLS内の第jのレイヤのネットワーク抽象レイヤ(network abstraction layer, NAL)ユニットヘッダレイヤ識別子(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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグであることを提供する。
【0013】
一実施形態では、本開示は、エンコーダにより実現される方法を含み、当該方法は、エンコーダのプロセッサにより、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上のOLSを含むビットストリームを符号化するステップと、プロセッサにより、VPSをビットストリームに符号化するステップであり、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するols_mode_idcを含む、ステップと、プロセッサに結合されたメモリにより、デコーダに向けて通信するためにビットストリームを記憶するステップとを含む。
【0014】
いくつかのビデオコーディングシステムは、1つ以上の指示された下位レイヤと共に、レイヤIDにより示されるように、最高の符号化レイヤを復号して出力するようにのみ構成される。これは、デコーダが最高のレイヤを復号することを望まないことがあるので、スケーラビリティにとって問題を提起する可能性がある。具体的には、デコーダは、一般的にデコーダがサポートできる最高のレイヤを要求するが、デコーダは、一般的に要求されたレイヤよりも高いレイヤを復号することは不可能である。具体的な例として、デコーダは、合計で15個の符号化レイヤのうち第3のレイヤを受信して復号することを望むことがある。第3のレイヤを復号するためにレイヤ4~15が必要とされないので、第3のレイヤは、このようなレイヤなしにデコーダに送信できる。しかし、最高のレイヤ(レイヤ15)が存在せず、ビデオシステムが常に最高のレイヤを復号して表示するように指示されるので、デコーダは、第3のレイヤを適切に復号して表示することは不可能であることがある。これは、このようなシステムにおいてビデオスケーラビリティが試みられるときにエラーを生じる。これは、デコーダが常に最高のレイヤをサポートすることを要求することが、異なるハードウェア及びネットワーク要件に基づいて中間レイヤに対してスケーリングできないシステムを生じるので、有意な問題になることがある。マルチビューが使用されるとき、この問題は複雑になる。マルチビューでは、1つよりも多くのレイヤが表示のために出力される。例えば、ユーザは、ヘッドセットを使用してもよく、異なるレイヤが、三次元(three dimensional, 3D)ビデオの印象を作成するように各眼に表示されてもよい。スケーラビリティをサポートできないシステムはまた、マルチビュースケーラビリティもサポートできない。
【0015】
本例は、マルチビュースケーラビリティをサポートするためのメカニズムを含む。レイヤは、OLSに含まれる。エンコーダは、サイズ又はSNRのような特定の特性に対してスケーリングするように、レイヤを含むOLSを送信できる。さらに、エンコーダは、例えばVPSにおいて、ols_mode_idcシンタックスエレメントを伝送してもよい。ols_mode_idcシンタックスエレメントは、マルチビュースケーラビリティの使用を示すために1に設定できる。例えば、ols_mode_idcは、OLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについて全てのレイヤが出力レイヤとして考えられることを示すことができる。これは、デコーダが特定のOLS内の全てのレイヤを受信して復号できるので、スケーラビリティをサポートする。全てのレイヤは出力レイヤであるので、デコーダは所望の出力レイヤを選択してレンダリングできる。このように、符号化されたレイヤの総数は、復号プロセスに影響を及ぼさないことがあり、依然としてスケーラブルマルチビュービデオを提供しつつ、エラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。特定の実施形態では、ols_mode_idcを使用することは、多くのデータが共有される複数のOLSを含む符号化ビットストリームにおいてビット節約を提供し、したがって、ストリーミングサーバにおける節約を提供し、このようなビットストリームを伝送するための帯域幅節約を提供する。例えば、ols_mode_idcを1に設定することの利点は、マルチビューアプリケーションのようなユースケースをサポートすることであり、それぞれが1つのレイヤにより表される2つ以上のビューが同時に出力されて表示される。
【0016】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが、VPSにより指定されたOLSの総数がVPSにより指定されたレイヤの数に等しいことを指定することを提供する。
【0017】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定することを提供する。
【0018】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、ols_mode_idcが1に等しいことを提供する。
【0019】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、VPSが、VPSを参照する各CVS内のレイヤの最大許容数である、VPSにより指定されたレイヤの数を指定するvps_max_layers_minus1を含むことを提供する。
【0020】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、TotalNumOlssが、ols_mode_idcが0に等しいとき、或いは、ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しいことを提供する。
【0021】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、NumLayersInOls[i]及び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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグであることを提供する。
【0022】
一実施形態では、本開示は、プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機とを含むビデオコーディングデバイスを含み、プロセッサ、受信機、メモリ及び送信機は、上記の態様のいずれかの方法を実行するように構成される。
【0023】
一実施形態では、本開示は、ビデオコーディングデバイスにより使用されるコンピュータプログラム製品を含む非一時的なコンピュータ読み取り可能媒体を含み、コンピュータプログラム製品は、プロセッサにより実行されたとき、ビデオコーディングデバイスに上記の態様のいずれかの方法を実行させるように、非一時的なコンピュータ読み取り可能媒体に記憶されたコンピュータ実行可能命令を含む。
【0024】
一実施形態では、本開示は、OLS及びVPSを含むビットストリームを受信するための受信手段であり、OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するols_mode_idcを含む、受信手段と、VPS内のols_mode_idcに基づいて、出力レイヤを決定するための決定手段と、出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するための復号手段と、復号ビデオシーケンスの一部として表示するために、復号されたピクチャを転送するための転送手段とを含むデコーダを含む。
【0025】
いくつかのビデオコーディングシステムは、1つ以上の指示された下位レイヤと共に、レイヤIDにより示されるように、最高の符号化レイヤを復号して出力するようにのみ構成される。これは、デコーダが最高のレイヤを復号することを望まないことがあるので、スケーラビリティにとって問題を提起する可能性がある。具体的には、デコーダは、一般的にデコーダがサポートできる最高のレイヤを要求するが、デコーダは、一般的に要求されたレイヤよりも高いレイヤを復号することは不可能である。具体的な例として、デコーダは、合計で15個の符号化レイヤのうち第3のレイヤを受信して復号することを望むことがある。第3のレイヤを復号するためにレイヤ4~15が必要とされないので、第3のレイヤは、このようなレイヤなしにデコーダに送信できる。しかし、最高のレイヤ(レイヤ15)が存在せず、ビデオシステムが常に最高のレイヤを復号して表示するように指示されるので、デコーダは、第3のレイヤを適切に復号して表示することは不可能であることがある。これは、このようなシステムにおいてビデオスケーラビリティが試みられるときにエラーを生じる。これは、デコーダが常に最高のレイヤをサポートすることを要求することが、異なるハードウェア及びネットワーク要件に基づいて中間レイヤに対してスケーリングできないシステムを生じるので、有意な問題になることがある。マルチビューが使用されるとき、この問題は複雑になる。マルチビューでは、1つよりも多くのレイヤが表示のために出力される。例えば、ユーザは、ヘッドセットを使用してもよく、異なるレイヤが、三次元(three dimensional, 3D)ビデオの印象を作成するように各眼に表示されてもよい。スケーラビリティをサポートできないシステムはまた、マルチビュースケーラビリティもサポートできない。
【0026】
本例は、マルチビュースケーラビリティをサポートするためのメカニズムを含む。レイヤは、OLSに含まれる。エンコーダは、サイズ又はSNRのような特定の特性に対してスケーリングするように、レイヤを含むOLSを送信できる。さらに、エンコーダは、例えばVPSにおいて、ols_mode_idcシンタックスエレメントを伝送してもよい。ols_mode_idcシンタックスエレメントは、マルチビュースケーラビリティの使用を示すために1に設定できる。例えば、ols_mode_idcは、OLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについて全てのレイヤが出力レイヤとして考えられることを示すことができる。これは、デコーダが特定のOLS内の全てのレイヤを受信して復号できるので、スケーラビリティをサポートする。全てのレイヤは出力レイヤであるので、デコーダは所望の出力レイヤを選択してレンダリングできる。このように、符号化されたレイヤの総数は、復号プロセスに影響を及ぼさないことがあり、依然としてスケーラブルマルチビュービデオを提供しつつ、エラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。特定の実施形態では、ols_mode_idcを使用することは、多くのデータが共有される複数のOLSを含む符号化ビットストリームにおいてビット節約を提供し、したがって、ストリーミングサーバにおける節約を提供し、このようなビットストリームを伝送するための帯域幅節約を提供する。例えば、ols_mode_idcを1に設定することの利点は、マルチビューアプリケーションのようなユースケースをサポートすることであり、それぞれが1つのレイヤにより表される2つ以上のビューが同時に出力されて表示される。
【0027】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、デコーダが上記の態様のいずれかの方法を実行するように更に構成されることを提供する。
【0028】
一実施形態では、本開示は、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上のOLSを含むビットストリームを符号化し、VPSをビットストリームに符号化するための符号化手段であり、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するols_mode_idcを含む、符号化手段と、デコーダに向けて通信するためにビットストリームを記憶するための記憶手段とを含むエンコーダを含む。
【0029】
いくつかのビデオコーディングシステムは、1つ以上の指示された下位レイヤと共に、レイヤIDにより示されるように、最高の符号化レイヤを復号して出力するようにのみ構成される。これは、デコーダが最高のレイヤを復号することを望まないことがあるので、スケーラビリティにとって問題を提起する可能性がある。具体的には、デコーダは、一般的にデコーダがサポートできる最高のレイヤを要求するが、デコーダは、一般的に要求されたレイヤよりも高いレイヤを復号することは不可能である。具体的な例として、デコーダは、合計で15個の符号化レイヤのうち第3のレイヤを受信して復号することを望むことがある。第3のレイヤを復号するためにレイヤ4~15が必要とされないので、第3のレイヤは、このようなレイヤなしにデコーダに送信できる。しかし、最高のレイヤ(レイヤ15)が存在せず、ビデオシステムが常に最高のレイヤを復号して表示するように指示されるので、デコーダは、第3のレイヤを適切に復号して表示することは不可能であることがある。これは、このようなシステムにおいてビデオスケーラビリティが試みられるときにエラーを生じる。これは、デコーダが常に最高のレイヤをサポートすることを要求することが、異なるハードウェア及びネットワーク要件に基づいて中間レイヤに対してスケーリングできないシステムを生じるので、有意な問題になることがある。マルチビューが使用されるとき、この問題は複雑になる。マルチビューでは、1つよりも多くのレイヤが表示のために出力される。例えば、ユーザは、ヘッドセットを使用してもよく、異なるレイヤが、三次元(three dimensional, 3D)ビデオの印象を作成するように各眼に表示されてもよい。スケーラビリティをサポートできないシステムはまた、マルチビュースケーラビリティもサポートできない。
【0030】
本例は、マルチビュースケーラビリティをサポートするためのメカニズムを含む。レイヤは、OLSに含まれる。エンコーダは、サイズ又はSNRのような特定の特性に対してスケーリングするように、レイヤを含むOLSを送信できる。さらに、エンコーダは、例えばVPSにおいて、ols_mode_idcシンタックスエレメントを伝送してもよい。ols_mode_idcシンタックスエレメントは、マルチビュースケーラビリティの使用を示すために1に設定できる。例えば、ols_mode_idcは、OLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについて全てのレイヤが出力レイヤとして考えられることを示すことができる。これは、デコーダが特定のOLS内の全てのレイヤを受信して復号できるので、スケーラビリティをサポートする。全てのレイヤは出力レイヤであるので、デコーダは所望の出力レイヤを選択してレンダリングできる。このように、符号化されたレイヤの総数は、復号プロセスに影響を及ぼさないことがあり、依然としてスケーラブルマルチビュービデオを提供しつつ、エラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。特定の実施形態では、ols_mode_idcを使用することは、多くのデータが共有される複数のOLSを含む符号化ビットストリームにおいてビット節約を提供し、したがって、ストリーミングサーバにおける節約を提供し、このようなビットストリームを伝送するための帯域幅節約を提供する。例えば、ols_mode_idcを1に設定することの利点は、マルチビューアプリケーションのようなユースケースをサポートすることであり、それぞれが1つのレイヤにより表される2つ以上のビューが同時に出力されて表示される。
【0031】
任意選択で、上記の態様のいずれかにおいて、当該態様の他の実現方式は、エンコーダが上記の態様のいずれかの方法を実行するように更に構成されることを提供する。
【0032】
明確にする目的で、上記の実施形態のいずれか1つは、本開示の範囲内で新たな実施形態を作成するために、他の上記の実施形態のいずれか1つ以上と組み合わされてもよい。
【0033】
これら及び他の特徴は、添付の図面及び特許請求の範囲に関連して行われる以下の詳細な説明から、より明確に理解される。
【図面の簡単な説明】
【0034】
本開示の更なる完全な理解のために、ここで添付の図面及び詳細な説明に関連して行われる以下の簡単な説明に参照が行われ、同様の参照符号は同様の部分を表す。
図1】ビデオ信号をコーディングする例示的な方法のフローチャートである。
図2】ビデオコーディングのための例示的なコーディング及びデコーディング(コーデック)システムの概略図である。
図3】例示的なビデオエンコーダを示す概略図である。
図4】例示的なビデオデコーダを示す概略図である。
図5】レイヤ間予測のために構成された例示的なマルチレイヤビデオシーケンスを示す概略図である。
図6】マルチビュースケーラビリティのために構成されたOLSを有する例示的なビデオシーケンスを示す概略図である。
図7】マルチビュースケーラビリティのために構成されたOLSを含む例示的なビットストリームを示す概略図である。
図8】例示的なビデオコーディングデバイスの概略図である。
図9】マルチビュースケーラビリティのために構成されたOLSを有するビデオシーケンスを符号化する例示的な方法のフローチャートである。
図10】マルチビュースケーラビリティのために構成されたOLSを含むビデオシーケンスを復号する例示的な方法のフローチャートである。
図11】マルチビュースケーラビリティのために構成されたOLSを有するビデオシーケンスをコーディングするための例示的なシステムの概略図である。
【発明を実施するための形態】
【0035】
最初に、1つ以上の実施形態の例示的な実現方式が以下に提供されるが、開示のシステム及び/又は方法は、現在知られていようと或いは存在していようと、如何なる数の技術を使用して実現され得ることが理解されるべきである。本開示は、ここに図示及び記載の例示的な設計及び実現方式を含む、以下に示す例示的な実現方式、図面及び技術に決して限定されるべきでなく、添付の請求項の範囲内で、これらの完全な均等物の範囲と共に変更されてもよい。
【0036】
以下の用語は、ここで反対の文脈で使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示に対する更なる明確化を提供することを意図している。しかし、異なる文脈では、用語が異なるように記述されることがある。したがって、以下の定義は、補足として考えられるべきであり、ここではこのような用語について提供されている記述のいずれかの他の定義を制限するものと考えられるべきでない。
【0037】
ビットストリームは、エンコーダとデコーダとの間で伝送するために圧縮されたビデオデータを含むビットのシーケンスである。エンコーダは、ビデオデータをビットストリームに圧縮するために符号化プロセスを使用するように構成されたデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構成するために復号プロセスを使用するように構成されたデバイスである。ピクチャは、フレーム又はそのフィールドを作成するルマサンプルの配列及び/又はクロマサンプルの配列である。符号化又は復号されているピクチャは、議論を明確にするために現在ピクチャと呼ばれる可能性がある。
【0038】
ネットワーク抽象レイヤ(network abstraction layer, NAL)ユニットは、未加工バイトシーケンスペイロード(Raw Byte Sequence Payload, RBSP)の形式のデータ、データのタイプの指示を含むシンタックス構造であり、所望の通りエミュレーション防止バイトが散在する。ビデオコーディングレイヤ(video coding layer, VCL)NALユニットは、ピクチャのコーディングされたスライスのようなビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性検査の実行又は他の動作をサポートするシンタックス及び/又はパラメータのような非ビデオデータを含むNALユニットである。レイヤは、指定の特性(例えば、共通の解像度、フレームレート、画像サイズ等)を共有するVCL NALユニットと、関連する非VCL NALユニットとのセットである。レイヤのVCL NALユニットは、NALユニットヘッダレイヤ識別子(nuh_layer_id)の特定の値を共有してもよい。コーディングされたピクチャは、アクセスユニット(access unit, AU)内のNALユニットヘッダレイヤ識別子(nuh_layer_id)の特定の値を有するVCL NALユニットを含み且つピクチャの全てのコーディングツリーユニット(coding tree unit, CTU)を含む、ピクチャのコーディングされた表現である。復号されたピクチャは、復号プロセスをコーディングされたピクチャに適用することにより生成されたピクチャである。コーディング済ビデオシーケンス(coded video sequence, CVS)は、復号順に、1つ以上のコーディング済ビデオシーケンス開始(coded video sequence start, CVSS)AU、及び任意選択でCVSS AUではない1つ以上のAUを含むAUのシーケンスである。CVSS AUは、ビデオパラメータセット(video parameter set, VPS)により指定されたレイヤ毎に予測ユニット(prediction unit, PU)を含むAUであり、各PU内のコーディングされたピクチャは、CVS/コーディング済レイヤビデオシーケンス(coded layer video sequence, CLVS)の開始ピクチャである。
【0039】
出力レイヤセット(output layer set, OLS)は、1つ以上のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(例えば、ディスプレイへの)出力のために指定されたレイヤである。最高のレイヤは、OLS内の全てのレイヤのうち最大のレイヤ識別子(indentifier, ID)を有するOLS内のレイヤである。いくつかの例示的なOLSモードにおいて、最高のレイヤは常に出力レイヤでもよい。他のモードにおいて、指示されたレイヤ及び/又は全てのレイヤは出力レイヤである。ビデオパラメータセット(video parameter set, VPS)は、全体のビデオに関連するパラメータを含むデータユニットである。レイヤ間予測は、参照レイヤ内の参照ピクチャを参照することにより、現在レイヤ内の現在ピクチャをコーディングするメカニズムであり、現在ピクチャ及び参照ピクチャは同じAUに含まれ、参照レイヤは現在レイヤよりも低いnuh_layer_idを含む。
【0040】
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])は、iのOLSインデックス値により示される特定のOLS内のレイヤの数を指定する変数である。OLS内のレイヤID(LayerIdInOLS[i][j])は、レイヤインデックスj及びOLSインデックスiにより示される第iのOLS内の第jのレイヤのnuh_layer_id値を指定する変数である。vps_layer_id[i]は、第iのレイヤのレイヤIDを示すシンタックスエレメントである。
【0041】
以下の略語、すなわち、コーディングツリーブロック(Coding Tree Block, CTB)、コーディングツリーユニット(Coding Tree Unit, CTU)、コーディングユニット(Coding Unit, CU)、コーディング済ビデオシーケンス(Coded Video Sequence, CVS)、共同ビデオエキスパートチーム(Joint Video Experts Team, JVET)、動き制約タイルセット(Motion Constrained Tile Set, MCTS)、最大転送ユニット(Maximum Transfer Unit, MTU)、ネットワーク抽象レイヤ(Network Abstraction Layer, NAL)、出力レイヤセット(Output Layer Set, OLS)、ピクチャオーダカウント(Picture Order Count, POC)、未加工バイトシーケンスペイロード(Raw Byte Sequence Payload, RBSP)、シーケンスパラメータセット(Sequence Parameter Set, SPS)、ビデオパラメータセット(Video Parameter Set, VPS)及びバーサタイルビデオコーディング(Versatile Video Coding, VVC)がここで使用される。
【0042】
データの最小限の損失でビデオファイルのサイズを低減するために多くのビデオ圧縮技術が使用できる。例えば、ビデオ圧縮技術は、ビデオシーケンスにおけるデータ冗長性を低減又は除去するために、空間(例えば、イントラピクチャ)予測及び/又は時間(例えば、インターピクチャ)予測を実行することを含むことができる。ブロックベースのビデオコーディングでは、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの一部)は、ツリーブロック、コーディングツリーブロック(coding tree block, CTB)、コーディングツリーユニット(coding tree unit, CTU)、コーディングユニット(coding unit, CU)及び/又はコーディングノードとも呼ばれてもよいビデオブロックにパーティション分割されてもよい。ピクチャのイントラコーディングされた(I)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに対する空間予測を使用してコーディングされる。ピクチャのインターコーディングされた一方向予測(P)又は双方向予測(B)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに対する空間予測、又は他の参照ピクチャ内の参照サンプルに対する時間予測を使用することによりコーディングされてもよい。ピクチャは、フレーム及び/又は画像と呼ばれてもよく、参照ピクチャは、参照フレーム及び/又は参照画像と呼ばれてもよい。空間又は時間予測は、画像ブロックを表す予測ブロックを生じる。残差データは、元の画像ブロックと予測ブロックとの間のピクセル差を表す。したがって、インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コーディングされたブロックと予測ブロックとの間の差を示す残差データとに従って符号化されている。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化されている。更なる圧縮のために、残差データは、ピクセルドメインから変換ドメインに変換されてもよい。これらは残差変換係数を生じ、これらが量子化されてもよい。量子化された変換係数は、最初に二次元配列に配列されてもよい。量子化された変換係数は、変換係数の一次元ベクトルを生成するためにスキャンされてもよい。更に多くの圧縮を達成するために、エントロピーコーディングが適用されてもよい。このようなビデオ圧縮技術について、以下により詳細に説明する。
【0043】
符号化されたビデオが正確に復号できることを確保するために、ビデオは、対応するビデオコーディング標準に従って符号化及び復号される。ビデオコーディング標準は、国際電気通信連合(International Telecommunication Union, ITU)標準化部門(ITU Standardization Sector, ITU-T)H.261、国際標準化機構/国際電気標準会議(International Organization for Standardization/International Electrotechnical Commission, 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としても知られるアドバンストビデオコーディング(Advanced Video Coding, AVC)、及びITU-T H.265又はMPEG-Hパート2としても知られる高効率ビデオコーディング(High Efficiency Video Coding, HEVC)を含む。AVCは、スケーラブルビデオコーディング(Scalable Video Coding, SVC)、マルチビュービデオコーディング(Multiview Video Coding, MVC)及びマルチビュービデオコーディング・プラス・デプス(Multiview Video Coding plus Depth, MVC+D)、並びに三次元(three dimensional, 3D)AVC(3D-AVC)のような拡張を含む。HEVCは、スケーラブルHEVC(Scalable HEVC, SHVC)、マルチビューHEVC(Multiview HEVC, MV-HEVC)及び3D HEVC(3D-HEVC)のような拡張を含む。ITU-T及びISO/IECの共同ビデオエキスパートチーム(joint video experts team, JVET)は、バーサタイルビデオコーディング(Versatile Video Coding, VVC)と呼ばれるビデオコーディング標準を開発し始めている。VVCは、JVET-O2001-v14を含むWDに含まれる。
【0044】
スケーラビリティをサポートするために、ピクチャのレイヤが使用できる。例えば、ビデオは、複数のレイヤにコーディングできる。レイヤは、他のレイヤを参照することなくコーディングされてもよい。このようなレイヤは、サイマルキャストレイヤと呼ばれる。したがって、サイマルキャストレイヤは、他のレイヤを参照することなく復号できる。他の例として、レイヤは、レイヤ間予測を使用してコーディングできる。これは、現在レイヤと参照レイヤとの間の差のみを含めることにより、現在レイヤがコーディングされることを可能にする。例えば、現在レイヤ及び参照レイヤは、信号対雑音比(signal to noise ratio, SNR)、ピクチャサイズ、フレームレート等のような特性を変化させることによりコーディングされる同じビデオシーケンスを含んでもよい。
【0045】
いくつかのビデオコーディングシステムは、1つ以上の指示された下位レイヤと共に、レイヤ識別子(identifier, ID)により示されるように、最高の符号化レイヤを復号して出力するようにのみ構成される。これは、デコーダが最高のレイヤを復号することを望まないことがあるので、スケーラビリティにとって問題を提起する可能性がある。具体的には、デコーダは、一般的にデコーダがサポートできる最高のレイヤを要求するが、デコーダは、一般的に要求されたレイヤよりも高いレイヤを復号することは不可能である。具体的な例として、デコーダは、合計で15個の符号化レイヤのうち第3のレイヤを受信して復号することを望むことがある。第3のレイヤを復号するためにレイヤ4~15が必要とされないので、第3のレイヤは、このようなレイヤなしにデコーダに送信できる。しかし、最高のレイヤ(レイヤ15)が存在せず、ビデオシステムが常に最高のレイヤを復号して表示するように指示されるので、デコーダは、第3のレイヤを適切に復号して表示することは不可能であることがある。これは、このようなシステムにおいてビデオスケーラビリティが試みられるときにエラーを生じる。これは、デコーダが常に最高のレイヤをサポートすることを要求することが、異なるハードウェア及びネットワーク要件に基づいて中間レイヤに対してスケーリングできないシステムを生じるので、有意な問題になることがある。マルチビューが使用されるとき、この問題は複雑になる。マルチビューでは、1つよりも多くのレイヤが表示のために出力される。例えば、ユーザは、ヘッドセットを使用してもよく、異なるレイヤが、三次元(three dimensional, 3D)ビデオの印象を作成するように各眼に表示されてもよい。スケーラビリティをサポートできないシステムはまた、マルチビュースケーラビリティもサポートできない。
【0046】
ここに開示されているのは、マルチビュースケーラビリティをサポートするためのメカニズムである。レイヤは出力レイヤセット(output layer set, OLS)に含まれる。エンコーダは、サイズ又はSNRのような特定の特性に対してスケーリングするように、レイヤを含むOLSを送信できる。空間スケーラビリティは、各OLSがビデオシーケンスを対応する出力画面サイズに復号するのに十分なデータを含むように、レイヤがOLSに配置されるように、ビデオシーケンスがレイヤにコーディングされることを可能にする。それゆえ、空間スケーラビリティは、スマートフォン画面用のビデオを復号するためのレイヤのセットと、大型テレビ画面用のビデオを復号するためのレイヤのセットと、中間画面サイズ用のレイヤのセットとを含んでもよい。SNRスケーラビリティは、各OLSが異なるSNRでビデオシーケンスを復号するのに十分なデータを含むように、レイヤがOLSに配置されるように、ビデオシーケンスがレイヤにコーディングされることを可能にする。それゆえ、SNRスケーラビリティは、ネットワーク条件に基づいて、低品質ビデオ、高品質ビデオ及び様々な中間ビデオ品質のために復号され得るレイヤのセットを含んでもよい。さらに、エンコーダは、例えば、ビデオパラメータセット(video parameter set, VPS)において、OLSモード識別コード(ols_mode_idc)シンタックスエレメントを伝送してもよい。ols_mode_idcシンタックスエレメントは、マルチビュースケーラビリティの使用を示すために1に設定できる。例えば、ols_mode_idcは、OLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについて全てのレイヤが出力レイヤとして考えられることを示すことができる。これは、デコーダが特定のOLS内の全てのレイヤを受信して復号できるので、スケーラビリティをサポートする。全てのレイヤは出力レイヤであるので、デコーダは所望の出力レイヤを選択してレンダリングできる。このように、符号化されたレイヤの総数は、復号プロセスに影響を及ぼさないことがあり、依然としてスケーラブルマルチビュービデオを提供しつつ、エラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。
【0047】
図1は、ビデオ信号をコーディングする例示的な動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダで符号化される。符号化プロセスは、ビデオファイルサイズを低減するための様々なメカニズムを使用することによりビデオ信号を圧縮する。より小さいファイルサイズは、圧縮ビデオファイルが、関連する帯域幅オーバーヘッドを低減させつつ、ユーザに向けて伝送されることを可能にする。次いで、デコーダは、圧縮ビデオファイルを復号して、エンドユーザに表示するために元のビデオ信号を再構成する。復号プロセスは、一般的に符号化プロセスを反映させたものであり、デコーダが一貫してビデオ信号を再構成することを可能にする。
【0048】
ステップ101において、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号は、メモリに記憶された未圧縮ビデオファイルでもよい。他の例として、ビデオファイルは、ビデオカメラのようなビデオキャプチャデバイスによりキャプチャされ、ビデオのライブストリーミングをサポートするように符号化されてもよい。ビデオファイルは、オーディオ成分及びビデオ成分の双方を含んでもよい。ビデオ成分は、順に見られたときに動きの視覚的印象を与える一連の画像フレームを含む。フレームは、ここではルマ成分(又はルマサンプル)と呼ばれる明るさと、クロマ成分(又はカラーサンプル)と呼ばれる色との観点で表現されるピクセルを含む。いくつかの例では、フレームはまた、三次元表示をサポートするための深さ値を含んでもよい。
【0049】
ステップ103において、ビデオはブロックにパーティション分割される。パーティション分割は、圧縮のために各フレーム内のピクセルを正方形及び/又は長方形ブロックに細分することを含む。例えば、高効率ビデオコーディング(High Efficiency Video Coding, HEVC)(H.265及びMPEG-Hパート2としても知られる)において、フレームは、まず、所定のサイズ(例えば、64ピクセル×64ピクセル)のブロックであるコーディングツリーユニット(coding tree unit, CTU)に分割できる。CTUは、ルマサンプル及びクロマサンプルの双方を含む。コーディングツリーは、CTUをブロックに分割し、次いで、更なる符号化をサポートする構成が達成されるまでブロックを再帰的に細分するために使用されてもよい。例えば、フレームのルマ成分は、個々のブロックが比較的均一な明るさ値を含むまで細分されてもよい。さらに、フレームのクロマ成分は、個々のブロックが比較的均一な色値を含むまで細分されてもよい。したがって、パーティション分割メカニズムは、ビデオフレームの内容に依存して変化する。
【0050】
ステップ105において、ステップ103においてパーティション分割された画像ブロックを圧縮するために、様々な圧縮メカニズムが使用される。例えば、インター予測及び/又はイントラ予測が使用されてもよい。インター予測は、共通のシーン内のオブジェクトが連続するフレームに現れる傾向があるという事実を利用するように設計される。したがって、参照フレーム内のオブジェクトを描画するブロックは、隣接フレームにおいて繰り返し記述される必要はない。具体的には、テーブルのようなオブジェクトは、複数のフレームに渡って一定の位置に留まることがある。したがって、テーブルは一回記述され、隣接フレームは参照フレームを参照し返すことができる。複数のフレームに渡ってオブジェクトをマッチングするために、パターンマッチングメカニズムが使用されてもよい。さらに、移動するオブジェクトは、例えば、オブジェクトの動き又はカメラの動きのために、複数のフレームに渡って表現されてもよい。特定の例として、ビデオは、複数のフレームに渡って画面の間で移動する自動車を示してもよい。このような動きを記述するために、動きベクトルが使用できる。動きベクトルは、或るフレーム内のオブジェクトの座標から参照フレーム内の当該オブジェクトの座標へのオフセットを提供する二次元ベクトルである。したがって、インター予測は、現在フレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを指し示す動きベクトルのセットとして符号化できる。
【0051】
イントラ予測は、共通のフレーム内のブロックを符号化する。イントラ予測は、ルマ成分及びクロマ成分がフレーム内で群がる傾向があるという事実を利用する。例えば、樹木の一部の緑色のパッチは、同様の緑色のパッチに隣接して位置する傾向がある。イントラ予測は、複数の方向予測モード(例えば、HEVCにおける33個)、プラナーモード及び直流(direct current, DC)モードを使用する。方向モードは、現在ブロックが、対応する方向の隣接ブロックのサンプルと同様/同一であることを示す。プラナーモードは、行/列に沿った一連のブロック(例えば、平面)が、行の端における隣接ブロックに基づいて補間できることを示す。プラナーモードは、事実上、値を変化させる際に比較的一定の傾きを使用することにより、行/列を横切る明るさ/色の滑らかな遷移を示す。DCモードは、境界平滑化のために使用され、ブロックが方向予測モードの角度方向に関連する全ての隣接ブロックのサンプルに関連する平均値と同様/同一であることを示す。したがって、イントラ予測ブロックは、画像ブロックを、実際の値の代わりに様々な関係予測モード値として表すことができる。さらに、インター予測ブロックは、画像ブロックを、実際の値の代わりに動きベクトル値として表すことができる。いずれの場合も、予測ブロックは、いくつかの場合に画像ブロックを正確には表さないことがある。いずれかの差が残差ブロックに記憶される。ファイルを更に圧縮するために、残差ブロックに変換が適用されてもよい。
【0052】
ステップ107において、様々なフィルタリング技術が適用されてもよい。HEVCでは、インループフィルタリング方式に従ってフィルタが適用される。上記のブロックベースの予測は、デコーダにおいてブロックノイズのある画像の作成を生じることがある。さらに、ブロックベースの予測方式は、ブロックを符号化し、次いで、参照ブロックとして後に使用するために、符号化されたブロックを再構成してもよい。インループフィルタリング方式は、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ及びサンプル適応オフセット(sample adaptive offset, SAO)フィルタをブロック/フレームに繰り返し適用する。これらのフィルタは、符号化されたファイルが正確に再構成できるように、このようなブロッキングアーチファクトを軽減する。さらに、これらのフィルタは、再構成された参照ブロックに基づいて符号化される後続のブロックにおいてアーチファクトが更なるアーチファクトを作成する可能性が低くなるように、再構成された参照ブロックにおけるアーチファクトを軽減する。
【0053】
ビデオ信号がパーティション分割され、圧縮され、フィルタリングされると、ステップ109において、結果のデータがビットストリームに符号化される。ビットストリームは、上記のデータと、デコーダにおける適切なビデオ信号再構成をサポートするために望まれるいずれかのシグナリングデータとを含む。例えば、このようなデータは、パーティションデータ、予測データ、残差ブロック及びコーディング命令をデコーダに提供する様々なフラグを含んでもよい。ビットストリームは、要求に応じてデコーダに向けて伝送するためにメモリに記憶されてもよい。ビットストリームはまた、複数のデコーダに向けてブロードキャスト及び/又はマルチキャストされてもよい。ビットストリームの作成は反復プロセスである。したがって、ステップ101、103、105、107及び109は、多くのフレーム及びブロックに渡って連続的に及び/又は同時に発生してもよい。図1に示す順序は、説明の明確さ及び容易さのために提示されており、ビデオコーディングプロセスを特定の順序に限定することを意図するものではない。
【0054】
ステップ111において、デコーダは、ビットストリームを受信し、復号プロセスを開始する。具体的には、デコーダは、ビットストリームを対応するシンタックス及びビデオデータに変換するために、エントロピー復号方式を使用する。デコーダは、ステップ111において、フレームについてのパーティションを決定するために、ビットストリームからのシンタックスデータを使用する。パーティション分割は、ステップ103におけるブロックパーティション分割の結果と一致すべきである。ステップ111において使用されるエントロピー符号化/復号についてここで説明する。エンコーダは、圧縮プロセス中に、入力画像内の値の空間位置に基づいていくつかの可能な選択肢からブロックパーティション分割方式を選択することのように、多くの選択を行う。厳密な選択肢を伝達することは、多数のビンを使用することがある。ここで使用されるとき、ビンは、変数(例えば、コンテキストに依存して変化し得るビット値)として扱われるバイナリ値である。エントロピーコーディングは、エンコーダが特定の場合に明らかに実行可能でないいずれかのオプションを廃棄して許容可能なオプションを残すことを可能にする。次いで、それぞれの許容可能なオプションにコードワードが割り当てられる。コードワードの長さは、許容可能なオプションの数に基づく(例えば、2つのオプションについて1つのビン、3つ~4つのオプションについて2つのビン等)。次いで、エンコーダは、選択されたオプションについてコードワードを符号化する。この方式は、コードワードが全ての可能なオプションの潜在的に大きいセットからの選択を一意に示すのではなく、許容可能なオプションの小さいサブセットからの選択を一意に示すのに望まれるだけの大きさになるので、コードワードのサイズを低減する。次いで、デコーダは、エンコーダと同様の方式で、許容可能なオプションのセットを決定することにより選択を復号する。許容可能なオプションのセットを決定することにより、デコーダは、コードワードを読み取り、エンコーダにより行われた選択を決定できる。
【0055】
ステップ113において、デコーダはブロック復号を実行する。具体的には、デコーダは、残差ブロックを生成するために逆変換を使用する。次いで、デコーダは、パーティション分割に従って画像ブロックを再構成するために、残差ブロック及び対応する予測ブロックを使用する。予測ブロックは、ステップ105においてエンコーダで生成されたイントラ予測ブロック及びインター予測ブロックの双方を含んでもよい。次いで、再構成された画像ブロックは、ステップ111で決定されたパーティション分割データに従って、再構成されたビデオ信号のフレームに位置付けられる。ステップ113のためのシンタックスもまた、上記のようなエントロピーコーディングを介してビットストリームで伝達されてもよい。
【0056】
ステップ115において、エンコーダにおけるステップ107と同様の方式で、再構成されたビデオ信号のフレームに対してフィルタリングが実行される。例えば、ブロッキングアーチファクトを除去するために、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ及びSAOフィルタがフレームに適用されてもよい。フレームがフィルタリングされると、ステップ117において、エンドユーザによる視聴のためにビデオ信号がディスプレイに出力できる。
【0057】
図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とを含んでもよい。これらのコンポーネントについてここで説明する。
【0058】
パーティション分割されたビデオ信号201は、コーディングツリーによりピクセルのブロックにパーティション分割された、キャプチャされたビデオシーケンスである。コーディングツリーは、ピクセルのブロックをピクセルのより小さいブロックに細分するために様々な分割モードを使用する。次いで、これらのブロックは、より小さいブロックに更に細分できる。ブロックは、コーディングツリー上のノードと呼ばれてもよい。より大きい親ノードは、より小さい子ノードに分割される。ノードが細分される回数は、ノード/コーディングツリーの深さと呼ばれる。分割されたブロックは、いくつかの場合にコーディングユニット(coding unit, CU)に含められることができる。例えば、CUは、ルマブロック、赤色差クロマ(red difference chroma, Cr)ブロック及び青色差クロマ(blue difference chroma, Cb)ブロックを、当該CUのための対応するシンタックス命令と共に含むCTUの一部とすることができる。分割モードは、使用される分割モードに依存して様々な形状の、それぞれ2つ、3つ又は4つの子ノードにノードをパーティション分割するために使用される二分木(binary tree, BT)、三分木(triple tree, TT)及び四分木(quad tree, QT)を含んでもよい。パーティション分割されたビデオ信号201は、圧縮のために、全体コーダ制御コンポーネント201、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227及び動き推定コンポーネント221に転送される。
【0059】
全体コーダ制御コンポーネント211は、アプリケーション制約に従って、ビデオシーケンスの画像のビットストリームへのコーディングに関連する判断を行うように構成される。例えば、全体コーダ制御コンポーネント211は、再構成品質に対するビットレート/ビットストリームサイズの最適化を管理する。このような判断は、記憶空間/帯域幅の可用性及び画像解像度要求に基づいて行われてもよい。全体コーダ制御コンポーネント211はまた、バッファのアンダーラン及びオーバーランの問題を軽減するために、伝送速度に照らしてバッファ利用率を管理する。これらの問題を管理するために、全体コーダ制御コンポーネント211は、他のコンポーネントによるパーティション分割、予測及びフィルタリングを管理する。例えば、全体コーダ制御コンポーネント211は、動的に、解像度を増加させ且つ帯域幅使用を増加させるために圧縮の複雑さを増加させてもよく、或いは、解像度及び帯域幅使用を減少させるために圧縮の複雑さを減少させてもよい。したがって、全体コーダ制御コンポーネント211は、ビデオ信号再構成品質をビットレートの懸念とバランスさせるように、コーデックシステム200の他のコンポーネントを制御する。全体コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを作成する。制御データはまた、デコーダでの復号のためのパラメータを伝達するためにビットストリームに符号化されるように、ヘッダフォーマット及びCABACコンポーネント231に転送される。
【0060】
パーティション分割されたビデオ信号201はまた、インター予測のために、動き推定コンポーネント221及び動き補償コンポーネント219に送信される。パーティション分割されたビデオ信号201のフレーム又はスライスは、複数のビデオブロックに分割されてもよい。動き推定コンポーネント221及び動き補償コンポーネント219は、時間予測を提供するために、1つ以上の参照フレーム内の1つ以上のブロックに対する受信ビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、例えば、ビデオデータのブロック毎に適切なコーディングモードを選択するために、複数のコーディングパスを実行してもよい。
【0061】
動き推定コンポーネント221及び動き補償コンポーネント219は、高度に統合されてもよいが、概念上の目的で別々に図示されている。動き推定コンポーネント221により実行される動き推定は、ビデオブロックのための動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対するコーディングされるオブジェクトの変位を示してもよい。予測ブロックは、ピクセル差に関して、コーディングされるべきブロックに密接に一致することが見出されたブロックである。予測ブロックはまた、参照ブロックとも呼ばれてもよい。このようなピクセル差は、差分絶対値和(sum of absolute difference, SAD)、差分二乗和(sum of square difference, SSD)又は他の差分メトリックにより決定されてもよい。HEVCは、CTU、コーディングツリーブロック(coding tree block, CTB)及びCUを含むいくつかのコーディングされたオブジェクトを使用する。例えば、CTUはCTBに分割でき、これは、次いで、CUに含めるためにCBに分割できる。CUは、予測データを含む予測ユニット(prediction unit, PU)及び/又はCUについての変換された残差データを含む変換ユニット(transform unit, TU)として符号化できる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み分析を使用することにより、動きベクトル、PU及びTUを生成する。例えば、動き推定コンポーネント221は、現在ブロック/フレームについての複数の参照ブロック、複数の動きベクトル等を決定してもよく、最良のレート歪み特性を有する参照ブロック、動きベクトル等を選択してもよい。最良のレート歪み特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失の量)及びコーディング効率(例えば、最終的な符号化のサイズ)の双方をバランスさせる。
【0062】
いくつかの例では、コーデックシステム200は、復号ピクチャバッファコンポーネント223に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算してもよい。例えば、ビデオコーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置又は他の分数ピクセル位置の値を補間してもよい。したがって、動き推定コンポーネント221は、フルピクセル位置及び分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度を有する動きベクトルを出力してもよい。動き推定コンポーネント221は、インターコーディングされたスライス内のビデオブロックのPUについての動きベクトルを、PUの位置を参照ピクチャの予測ブロックの位置と比較することにより計算する。動き推定コンポーネント221は、計算された動きベクトルを、動きデータとして符号化のためにヘッダフォーマット及びCABACコンポーネント231に出力するとともに、動きとして動き補償コンポーネント219に出力する。
【0063】
動き補償コンポーネント219により実行される動き補償は、動き推定コンポーネント221により決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含んでもよい。同様に、いくつかの例では、動き推定コンポーネント221及び動き補償コンポーネント219は機能的に統合されてもよい。現在ビデオブロックのPUについての動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが指す予測ブロックを位置決定してもよい。次いで、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算することにより残差ビデオブロックが形成され、ピクセル差の値を形成する。一般的に、動き推定コンポーネント221はルマ成分に対して動き推定を実行し、動き補償コンポーネント219は、ルマ成分に基づいて計算された動きベクトルをクロマ成分及びルマ成分の双方に使用する。予測ブロック及び残差ブロックは、変換スケーリング及び量子化コンポーネント213に転送される。
【0064】
パーティション分割されたビデオ信号201はまた、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217に送信される。動き推定コンポーネント221及び動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、高度に統合されてもよいが、概念上の目的で別々に図示されている。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、上記のように、フレームの間で動き推定コンポーネント221及び動き補償コンポーネント219により実行されるインター予測の代わりとして、現在フレーム内のブロックに対して現在ブロックをイントラ予測する。特に、イントラピクチャ推定コンポーネント215は、現在ブロックを符号化するのに使用するためのイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数のテストされたイントラ予測モードから、現在ブロックを符号化するのに適切なイントラ予測モードを選択する。次いで、選択されたイントラ予測モードは、符号化のためにヘッダフォーマット及びCABACコンポーネント231に転送される。
【0065】
例えば、イントラピクチャ推定コンポーネント215は、様々なテストされたイントラ予測モードについてレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み分析は、一般的に、符号化ブロックと、当該符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又はエラー)の量と、当該符号化ブロックを生成するのに使用されたビットレート(例えば、ビットの数)とを決定する。イントラピクチャ推定コンポーネント215は、様々な符号化ブロックについての歪み及びレートから比を計算し、当該ブロックについてどのイントラ予測モードが最良のレート歪み値を示すかを決定する。さらに、イントラピクチャ推定コンポーネント215は、レート歪み最適化(rate-distortion optimization, RDO)に基づくデプスモデリングモード(depth modeling mode, DMM)を使用してデプスマップのデプスブロックをコーディングするように構成されてもよい。
【0066】
イントラピクチャ予測コンポーネント217は、エンコーダに実現されたとき、イントラピクチャ推定コンポーネント215により決定された、選択されたイントラ予測モードに基づいて、予測ブロックから残差ブロックを生成してもよく、或いは、デコーダに実現されたとき、ビットストリームから残差ブロックを読み取ってもよい。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値の差を含む。次いで、残差ブロックは、変換スケーリング及び量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、ルマ成分及びクロマ成分の双方に対して動作してもよい。
【0067】
変換スケーリング及び量子化コンポーネント213は、残差ブロックを更に圧縮するように構成される。変換スケーリング及び量子化コンポーネント213は、離散コサイン変換(discrete cosine transform, DCT)、離散サイン変換(discrete sine transform, DST)又は概念的に同様の変換のような変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプの変換も使用されてもよい。変換は、残差情報を、ピクセル値ドメインから周波数ドメインのような変換ドメインに変換してもよい。変換スケーリング及び量子化コンポーネント213はまた、例えば、周波数に基づいて、変換された残差情報をスケーリングするように構成される。このようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように、スケーリング係数を残差情報に適用することを含み、これは、再構成されたビデオの最終的な視覚品質に影響を及ぼしてもよい。変換スケーリング及び量子化コンポーネント213はまた、ビットレートを更に低減するために変換係数を量子化するように構成される。量子化プロセスは、係数のうち一部又は全てに関連するビット深さを低減してもよい。量子化の程度は、量子化パラメータを調整することにより変更されてもよい。いくつかの例では、変換スケーリング及び量子化コンポーネント213は、次いで、量子化された変換係数を含む行列のスキャンを実行してもよい。量子化された変換係数は、ビットストリーム内に符号化されるために、ヘッダフォーマット及びCABACコンポーネント231に転送される。
【0068】
スケーリング及び逆変換コンポーネント229は、動き推定をサポートするために変換スケーリング及び量子化コンポーネント213の逆演算を適用する。スケーリング及び逆変換コンポーネント229は、例えば、他の現在ブロックのための予測ブロックとなり得る参照ブロックとして後に使用するために、ピクセルドメインにおいて残差ブロックを再構成するように、逆のスケーリング、変換及び/又は量子化を適用する。動き推定コンポーネント221及び/又は動き補償コンポーネント219は、後のブロック/フレームの動き推定において使用するために、残差ブロックを対応する予測ブロックに加え戻すことにより参照ブロックを計算してもよい。スケーリング、量子化及び変換の間に作成されたアーチファクトを軽減するために、再構成された参照ブロックにフィルタが適用される。このようなアーチファクトは、さもなければ、後続のブロックが予測されるときに不正確な予測を引き起こす(且つ更なるアーチファクトを作成する)可能性がある。
【0069】
フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、フィルタを残差ブロック及び/又は再構成された画像ブロックに適用する。例えば、元の画像ブロックを再構成するために、スケーリング及び逆変換コンポーネント229からの変換された残差ブロックは、イントラピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと組み合わされてもよい。次いで、フィルタが再構成された画像ブロックに適用されてもよい。いくつかの例では、フィルタは、代わりに残差ブロックに適用されてもよい。図2における他のコンポーネントと同様に、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、高度に統合され、一緒に実現されてもよいが、概念上の目的で別々に図示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、このようなフィルタがどのように適用されるのかを調整するための複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、どこにこのようなフィルタが適用されるべきかを決定し、対応するパラメータを設定する。このようなデータは、符号化のためのフィルタ制御データとしてヘッダフォーマット及びCABACコンポーネント231に転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてこのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ及び適応ループフィルタを含んでもよい。このようなフィルタは、例に依存して、空間/ピクセルドメイン(例えば、再構成されたピクセルブロック)において或いは周波数ドメインにおいて適用されてもよい。
【0070】
エンコーダとして動作するとき、フィルタリングされた再構成画像ブロック、残差ブロック及び/又は予測ブロックは、上記のような動き推定において後に使用するために、復号ピクチャバッファコンポーネント223に記憶される。デコーダとして動作するとき、復号ピクチャバッファコンポーネント223は、再構成され且つフィルタリングされたブロックを記憶し、、出力ビデオ信号の一部としてディスプレイに向けて転送する。復号ピクチャバッファコンポーネント223は、予測ブロック、残差ブロック及び/又は再構成画像ブロックを記憶できるいずれかのメモリデバイスでもよい。
【0071】
ヘッダフォーマット及び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)コーディング又は他のエントロピーコーディング技術を使用することにより符号化されてもよい。エントロピーコーディングに続いて、コーディングされたビットストリームは、他のデバイス(例えば、ビデオデコーダ)に伝送されてもよく、或いは、後の伝送又は取得のためにアーカイブされてもよい。
【0072】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実現するため、及び/又は、動作方法100のステップ101、103、105、107及び/又は109を実現するために使用されてもよい。エンコーダ300は、入力ビデオ信号をパーティション分割し、その結果、パーティション分割されたビデオ信号201と実質的に同様のパーティション分割されたビデオ信号301を生じる。次いで、パーティション分割されたビデオ信号301は、エンコーダ300のコンポーネントにより圧縮されてビットストリームに符号化される。
【0073】
具体的には、パーティション分割されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と実質的に同様のものでもよい。パーティション分割されたビデオ信号301はまた、復号ピクチャバッファコンポーネント323における参照ブロックに基づくインター予測のために、動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に同様のものでもよい。イントラピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックは、残差ブロックの変換及び量子化のために変換及び量子化コンポーネント313に転送される。変換及び量子化コンポーネント313は、変換スケーリング及び量子化コンポーネント213と実質的に同様のものでもよい。変換及び量子化された残差ブロック及び対応する予測ブロックは(関連する制御データと共に)、ビットストリームにコーディングするためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマット及びCABACコンポーネント231と実質的に同様のものでもよい。
【0074】
変換及び量子化された残差ブロック及び/又は対応する予測ブロックはまた、動き補償コンポーネント321により使用するための参照ブロックへの再構成のために、変換及び量子化コンポーネント313から逆変換及び量子化コンポーネント329に転送される。逆変換及び量子化コンポーネント329は、スケーリング及び逆変換コンポーネント229と実質的に同様のものでもよい。例に依存して、インループフィルタコンポーネント325内のインループフィルタも、残差ブロック及び/又は再構成された参照ブロックに適用される。インループフィルタコンポーネント325は、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225と実質的に同様のものでもよい。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して説明したように複数のフィルタを含んでもよい。次いで、フィルタリングされたブロックは、動き補償コンポーネント321により参照ブロックとして使用するために、復号ピクチャバッファコンポーネント323に記憶される。復号ピクチャバッファコンポーネント323は、復号ピクチャバッファコンポーネント223と実質的に同様のものでもよい。
【0075】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実現するため、及び/又は、動作方法100のステップ111、113、115及び/又は117を実現するために使用されてもよい。デコーダ400は、例えば、エンコーダ300からビットストリームを受信し、エンドユーザに表示するために、ビットストリームに基づいて再構成された出力ビデオ信号を生成する。
【0076】
ビットストリームはエントロピー復号コンポーネント433により受信される。エントロピー復号コンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング又は他のエントロピーコーディング技術のようなエントロピー復号方式を実現するように構成される。例えば、エントロピー復号コンポーネント433は、ビットストリーム内にコードワードとして符号化された更なるデータを解釈するためのコンテキストを提供するために、ヘッダ情報を使用してもよい。復号された情報は、全体制御データ、フィルタ制御データ、パーティション情報、動きデータ、予測データ及び残差ブロックからの量子化された変換係数のような、ビデオ信号を復号するためのいずれかの所望の情報を含む。量子化された変換係数は、残差ブロックへの再構成のために、逆変換及び量子化コンポーネント429に転送される。逆変換及び量子化コンポーネント429は、逆変換及び量子化コンポーネント329と同様のものでもよい。
【0077】
再構成された残差ブロック及び/又は予測ブロックは、イントラ予測動作に基づいて画像ブロックに再構成するために、イントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と同様のものでもよい。具体的には、イントラピクチャ予測コンポーネント417は、フレーム内で参照ブロックを位置決定するための予測モードを使用し、残差ブロックをその結果に適用し、イントラ予測画像ブロックを再構成する。再構成されたイントラ予測画像ブロック及び/又は残差ブロック及び対応するインター予測データは、インループフィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送される。復号ピクチャバッファコンポーネント423及びインループフィルタコンポーネント425は、それぞれ、復号ピクチャバッファコンポーネント223及びインループフィルタコンポーネント225と実質的に同様のものでもよい。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタリングし、このような情報が復号ピクチャバッファコンポーネント423に記憶される。復号ピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に同様のものでもよい。具体的には、動き補償コンポーネント421は、予測ブロックを生成するために参照ブロックからの動きベクトルを使用し、残差ブロックをその結果に適用し、画像ブロックを再構成する。結果の再構成ブロックもまた、インループフィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送されてもよい。復号ピクチャバッファコンポーネント423は、更なる再構成画像ブロックを記憶し続け、これらは、パーティション情報を介してフレームに再構成できる。このようなフレームはまた、シーケンスに配置されてもよい。当該シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
【0078】
図5は、レイヤ間予測521のために構成された例示的なマルチレイヤビデオシーケンス500を示す概略図である。マルチレイヤビデオシーケンス500は、例えば、方法100に従って、コーデックシステム200及び/又はエンコーダ300のようなエンコーダにより符号化され、コーデックシステム200及び/又はデコーダ400のようなデコーダにより復号されてもよい。マルチレイヤビデオシーケンス500は、コーディングされたビデオシーケンス内のレイヤについての例示的な適用を示すために含まれる。マルチレイヤビデオシーケンス500は、レイヤN 531及びレイヤN+1 532のような複数のレイヤを使用するいずれかのビデオシーケンスである。
【0079】
一例では、マルチレイヤビデオシーケンス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ユニットである。
【0080】
図示の例では、レイヤN+1 532は、レイヤN 531よりも大きい画像サイズに関連する。したがって、この例では、レイヤN+1 532内のピクチャ511、512、513及び514は、レイヤN 531内のピクチャ515、516、517及び518よりも大きいピクチャサイズ(例えば、より大きい高さ及び幅、したがって、より多くのサンプル)を有する。しかし、このようなピクチャは、他の特性によりレイヤN+1 532とレイヤN 531との間で分離できる。2つのレイヤ、すなわち、レイヤN+1 532及びレイヤN 531のみが示されているが、ピクチャのセットは、関連する特性に基づいて如何なる数のレイヤに分離できる。レイヤN+1 532及びレイヤN 531はまた、レイヤIDにより示されてもよい。レイヤIDは、ピクチャに関連するデータの項目であり、ピクチャが示されたレイヤの一部であることを示す。したがって、各ピクチャ511~518は、どのレイヤN+1 532又はレイヤN 531が対応するピクチャを含むかを示すために、対応するレイヤIDに関連してもよい。例えば、レイヤIDは、NALユニットヘッダレイヤ識別子(nuh_layer_id)を含んでもよく、これは、NALユニットを含む(例えば、レイヤ内のピクチャのスライス及び/又はパラメータを含む)レイヤの識別子を指定するシンタックスエレメントである。レイヤN 531のように、より低い品質/ビットストリームサイズに関連するレイヤは、一般的により低いレイヤIDを割り当てられ、下位レイヤと呼ばれる。さらに、レイヤN+1 532のように、より高い品質/ビットストリームサイズに関連するレイヤは、一般的により高いレイヤIDを割り当てられ、上位レイヤと呼ばれる。
【0081】
異なるレイヤ531~532内のピクチャ511~518は、選択肢で表示されるように構成される。具体的な例として、より小さいピクチャが望まれる場合、デコーダは、現在の表示時間においてピクチャ515を復号及び表示してもよく、或いは、より大きいピクチャが望まれる場合、デコーダは、現在の表示時間においてピクチャ511を復号及び表示してもよい。したがって、上位レイヤN+1 532におけるピクチャ511~514は、(ピクチャサイズにおける差にもかかわらず)下位レイヤN 531における対応するピクチャ515~518と実質的に同じ画像データを含む。具体的には、ピクチャ511は、ピクチャ515と実質的に同じ画像データを含み、ピクチャ512は、ピクチャ516と実質的に同じピクチャデータを含む、等である。
【0082】
ピクチャ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はまた、マルチレイヤのコンテキストにおいてレイヤ内予測とも呼ばれることができる。したがって、インター予測523は、現在ピクチャとは異なる参照ピクチャ内の示されたサンプルを参照することにより、現在ピクチャのサンプルをコーディングするメカニズムであり、参照ピクチャ及び現在ピクチャは同じレイヤにある。
【0083】
ピクチャ511~518はまた、異なるレイヤ内の他のピクチャ511~518を参照することによりコーディングできる。このプロセスは、レイヤ間予測521として知られており、破線の矢印により示されている。レイヤ間予測521は、参照ピクチャ内の示されたサンプルを参照することにより、現在ピクチャのサンプルをコーディングするメカニズムであり、現在ピクチャ及び参照ピクチャは異なるレイヤにあり、したがって、異なるレイヤIDを有する。例えば、下位レイヤN 531内のピクチャは、上位レイヤN+1 532における対応するピクチャをコーディングするための参照ピクチャとして使用できる。具体的な例として、ピクチャ511は、レイヤ間予測521に従って、ピクチャ515を参照することによりコーディングできる。このような場合、ピクチャ515は、レイヤ間参照ピクチャとして使用される。レイヤ間参照ピクチャは、レイヤ間予測521に使用される参照ピクチャである。ほとんどの場合、レイヤ間予測521は、ピクチャ511のような現在ピクチャが、ピクチャ515のような同じAUに含まれ且つ下位レイヤにあるレイヤ間参照ピクチャのみを使用できるように制約される。AUは、ビデオシーケンス内の特定の出力時間に関連するピクチャのセットであり、したがって、AUは、レイヤ当たり1つだけのピクチャを含むことができる。複数のレイヤ(例えば、2つよりも多く)が利用可能であるとき、レイヤ間予測521は、現在ピクチャよりも低いレベルで、複数のレイヤ間参照ピクチャに基づいて、現在ピクチャを符号化/復号できる。
【0084】
ビデオエンコーダは、インター予測523及びレイヤ間予測521の多くの異なる組み合わせ及び/又は順列を介してピクチャ511~518を符号化するために、マルチレイヤビデオシーケンス500を使用できる。例えば、ピクチャ515は、イントラ予測に従ってコーディングされてもよい。次いで、ピクチャ516~518は、ピクチャ515を参照ピクチャとして使用することにより、インター予測523に従ってコーディングできる。さらに、ピクチャ511は、ピクチャ515をレイヤ間参照ピクチャとして使用することにより、レイヤ間予測521に従ってコーディングされてもよい。次いで、ピクチャ512~514は、ピクチャ511を参照ピクチャとして使用することにより、インター予測523に従ってコーディングできる。したがって、参照ピクチャは、異なるコーディングメカニズムについて単一レイヤ参照ピクチャ及びレイヤ間参照ピクチャの双方として機能できる。下位レイヤN 531のピクチャに基づいて上位レイヤN+1 532のピクチャをコーディングすることにより、上位レイヤN+1 532は、インター予測523及びレイヤ間予測521よりもはるかに低いコーディング効率を有するイントラ予測を使用することを回避できる。したがって、イントラ予測の劣ったコーディング効率は、最小/最低品質のピクチャに制限でき、したがって、最小量のビデオデータをコーディングすることに制限できる。参照ピクチャ及び/又はレイヤ間参照ピクチャとして使用されるピクチャは、参照ピクチャリスト構造に含まれる参照ピクチャリストのエントリに示されることができる。
【0085】
このような動作を実行するために、レイヤN 531及びレイヤN+1 532のようなレイヤは、OLS525に含まれてもよい。OLS525は、1つ以上のレイヤが出力レイヤとして指定されるレイヤのセットである。出力レイヤは、(例えば、ディスプレイへの)出力のために指定されたレイヤである。例えば、レイヤN 531は、レイヤ間予測521をサポートするためにのみ含まれてもよく、決して出力されなくてもよい。このような場合、レイヤN+1 532は、レイヤN 531に基づいて復号されて出力される。このような場合、OLS525は、レイヤN+1 532を出力レイヤとして含む。OLS525は、異なる組み合わせで多くのレイヤを含んでもよい。例えば、OLS525内の出力レイヤは、1つ、2つ又は多くの下位レイヤに基づいてレイヤ間予測521に従ってコーディングできる。さらに、OLS525は、1つよりも多くの出力レイヤを含んでもよい。したがって、OLS525は、出力レイヤを再構成するために必要な1つ以上の出力レイヤ及びいずれかのサポートレイヤを含んでもよい。マルチレイヤビデオシーケンス500は、レイヤの異なる組み合わせをそれぞれ使用する多くの異なるOLS525を使用することによりコーディングできる。
【0086】
具体的な例として、レイヤ間予測521が、スケーラビリティをサポートするために使用されてもよい。例えば、ビデオは、レイヤN 531のようなベースレイヤと、レイヤ間予測521に従ってコーディングされる、レイヤN+1 532、レイヤN+2、レイヤN+3等のようないくつかのエンハンスメントレイヤとにコーディングできる。ビデオシーケンスは、信号対雑音比(signal to noise ration, SNR)、フレームレート、ピクチャサイズ等のようないくつかのスケーラブルな特性についてコーディングできる。次いで、OLS525は、許容可能な特性毎に作成できる。例えば、第1の解像度についてのOLS525は、レイヤN 531のみを含んでもよく、第2の解像度についてのOLS525は、レイヤN 531及びレイヤN+1 532を含んでもよく、第3の解像度についてのOLSは、レイヤN 531、レイヤN+1 532、レイヤN+2等を含んでもよい。このように、OLS525は、ネットワーク条件、ハードウェア制約等に基づいて、マルチレイヤビデオシーケンス500のいずれのバージョンが望まれようともデコーダが復号することを可能にするために伝送できる。
【0087】
図6は、マルチビュースケーラビリティのために構成されたOLSを有する例示的なビデオシーケンス600を示す概略図である。ビデオシーケンス600は、マルチレイヤビデオシーケンス500の具体的な例である。したがって、ビデオシーケンス600は、例えば、方法100に従って、コーデックシステム200及び/又はエンコーダ300のようなエンコーダにより符号化でき、コーデックシステム200及び/又はデコーダ400のようなデコーダにより復号できる。ビデオシーケンス600は、スケーラビリティにとって有用である。
【0088】
例示的なビデオシーケンス600は、OLS620、OLS621、及びOLS622を含み、これらは、OLS525と実質的に同様のものでもよい。3つのOLSが示されているが、如何なる数のOLSが使用されてもよい。各OLS620、621及び622は、OLSインデックスにより参照され、1つ以上のレイヤを含む。具体的には、OLS620、621及び622は、それぞれ、レイヤ630、レイヤ630及びレイヤ631、並びにレイヤ630、631及び632を含む。レイヤ630、631及び632は、レイヤN 531及びレイヤN+1 532と実質的に同様のものでもよい。レイヤ630、631及び632は、レイヤインデックスにより参照される。ビデオシーケンス600は、OLSの数と同じ数のレイヤを含む。具体的には、最低のOLSインデックスを有するOLS620は、最低のレイヤインデックスを有するレイヤ630を含む。それぞれの他のOLSは、より低いOLSインデックスを有する前のOLSに1を加えたものの全てのレイヤを含む。例えば、OLS621は、OLS620よりも高いOLSインデックスを有し、レイヤ630及び631を含み、これらは、OLS620に1を加えたもののレイヤの全てである。同様に、OLS622は、OLS621よりも高いOLSインデックスを有し、レイヤ630、631及び632を含み、これらは、OLS621に1を加えたもののレイヤの全てである。このパターンは、最高のレイヤインデックスを有するレイヤ及び最高のOLSインデックスを有するOLSに到達するまで続いてもよい。
【0089】
さらに、レイヤ630は、ベースレイヤである。全ての他のレイヤ631及び632は、より低いレイヤインデックスを有する全てのレイヤに基づいてレイヤ間予測に従ってコーディングされたエンハンスメントレイヤである。具体的には、レイヤ630は、ベースレイヤであり、レイヤ間予測に従ってコーディングされない。レイヤ631は、レイヤ630に基づいてレイヤ間予測に従ってコーディングされたエンハンスメントレイヤである。さらに、レイヤ632は、レイヤ630及び631に基づいてレイヤ間予測に従ってコーディングされたエンハンスメントレイヤである。その結果は、OLS620が最低品質のSNR及び/又は最小の画像サイズを有するレイヤ630を含むことになる。OLS620は、全くレイヤ間予測を使用しないので、OLS620は、レイヤ630を除いて、いずれのレイヤも参照することなく完全に復号できる。OLS621は、レイヤ630よりも高い品質のSNR及び/又は画像サイズを有するレイヤ631を含み、OLS621がレイヤ630も含むので、レイヤ631は、レイヤ間予測に従って完全に復号できる。同様に、OLS622は、レイヤ630及び631よりも高い品質のSNR及び/又は画像サイズを有するレイヤ632を含み、OLS622がレイヤ630及び631も含むので、レイヤ632は、レイヤ間予測に従って完全に復号できる。したがって、ビデオシーケンス600は、対応するOLS622、621又は620をデコーダに送信することにより、いずれかの予め選択されたSNR及び/又は画像サイズに対してスケーリングするようにコーディングされる。より多くのOLS622、621及び620が使用されるとき、ビデオシーケンス600は、より多くのSNR画像品質及び/又は画像サイズに対してスケーリングできる。
【0090】
したがって、ビデオシーケンス600は、空間スケーラビリティをサポートできる。空間スケーラビリティは、各OLS620、621及び622がビデオシーケンス600を対応する出力画面サイズに復号するのに十分なデータを含むように、レイヤ630、631及び632がOLS620、621及び622に配置されるように、ビデオシーケンス600がレイヤ630、631及び632にコーディングされることを可能にする。それゆえ、空間スケーラビリティは、スマートフォン画面用のビデオを復号するためのレイヤのセット(例えば、レイヤ630)と、大型テレビ画面用のビデオを復号するためのレイヤのセット(例えば、レイヤ630、631、632)と、中間画面サイズ用のレイヤのセット(例えば、レイヤ630、631)とを含んでもよい。SNRスケーラビリティは、各OLS620、621及び622が異なるSNRでビデオシーケンス600を復号するのに十分なデータを含むように、レイヤ630、631及び632がOLS620、621及び622に配置されるように、ビデオシーケンス600がレイヤ630、631及び632にコーディングされることを可能にする。それゆえ、SNRスケーラビリティは、異なるネットワーク条件をサポートするように、低品質ビデオ、高品質ビデオ(例えば、レイヤ630、631及び632)及び様々な中間ビデオ品質(例えば、レイヤ630及び631)のために復号され得るレイヤのセット(例えば、レイヤ630)を含んでもよい。
【0091】
本開示は、マルチビューレイヤを有するビデオシーケンス600が正確且つ効率的に使用されることを可能にするための効率的なシグナリングを提供する。一例として、レイヤ630、631及び632は全て出力レイヤとして指定されてもよい。次いで、デコーダは、マルチビューを実現するために、所望の通りレイヤ630、631及び632を選択してレンダリングできる。この実現方式をサポートするために、ビデオシーケンス600のコーディングは、ols_mode_idcシンタックスエレメントに従って示されてもよい。例えば、ols_mode_idcシンタックスエレメントは、ビデオシーケンス600をOLSモード1として識別してもよい。したがって、ols_mode_idcシンタックスエレメントは、ビデオシーケンス600が使用されることを示すために、1に設定されてビットストリームで伝達できる。したがって、デコーダは、いずれかのOLSを受信でき、ols_mode_idcに基づいて、OLS620、621及び622の数がレイヤ630、631及び632の数と同じであり、iの現在のOLS IDが、現在のOLSが0からiまでのIDを有するセットレイヤを含むことを示し、現在のOLS内の全てのレイヤが出力レイヤであると決定できる。次いで、デコーダは、マルチビューを実現するために、所望の通りOLS620、621及び/又は622からレイヤ630、631及び/又は632を復号して表示できる。
【0092】
図7は、マルチビュースケーラビリティのために構成されたOLSを含む例示的なビットストリーム700を示す概略図である。例えば、ビットストリーム700は、方法100に従って、コーデックシステム200及び/又はデコーダ400により復号するために、コーデックシステム200及び/又はエンコーダ300により生成できる。さらに、ビットストリーム700は、コーディングされたマルチレイヤビデオシーケンス500及び/又はビデオシーケンス600を含んでもよい。
【0093】
ビットストリーム700は、VPS711と、1つ以上のシーケンスパラメータセット(Sequence Parameter Set, SPS)713と、複数のピクチャパラメータセット(picture parameter set, PPS)715と、複数のスライスヘッダ717と、画像データ720とを含む。VPS711は、全体のビットストリーム700に関連するデータを含む。例えば、VPS711は、ビットストリーム700で使用されるデータ関連のOLS、レイヤ及び/又はサブレイヤを含んでもよい。SPS713は、ビットストリーム700に含まれるコーディングされたビデオシーケンス内の全てのピクチャに共通のシーケンスデータを含む。例えば、各レイヤは、1つ以上のコーディングされたビデオシーケンスを含んでもよく、それぞれのコーディングされたビデオシーケンスは、対応するパラメータのためにSPS713を参照してもよい。SPS713内のパラメータは、ピクチャサイズ、ビット深さ、コーディングツールパラメータ、ビットレート制限等を含むことができる。各シーケンスがSPS713を参照するが、いくつかの例では、単一のSPS713が複数のシーケンスのためのデータを含むことができる点に留意すべきである。PPS715は、全体のピクチャに適用するパラメータを含む。したがって、ビデオシーケンス内の各ピクチャは、PPS715を参照してもよい。各ピクチャがPPS715を参照するが、いくつかの例では、単一のPPS715が複数のピクチャのためのデータを含むことができる点に留意すべきである。例えば、複数の同様のピクチャは、同様のパラメータに従ってコーディングされてもよい。このような場合、単一のPPS715は、このような同様のピクチャのためのデータを含んでもよい。PPS715は、対応するピクチャ内のスライスに利用可能なコーディングツール、量子化パラメータ、オフセット等を示すことができる。
【0094】
スライスヘッダ717は、ピクチャ725内の各スライス727に特有のパラメータを含む。したがって、ビデオシーケンスにおいて、スライス727当たり1つのスライスヘッダ717が存在してもよい。スライスヘッダ717は、スライスタイプ情報、POC、参照ピクチャリスト、予測重み、タイルエントリポイント、デブロッキングパラメータ等を含んでもよい。いくつかの例では、ビットストリーム700はまた、単一のピクチャ内の全てのスライス727に適用するパラメータを含むシンタックス構造であるピクチャヘッダを含んでもよい点に留意すべきである。この理由のため、ピクチャヘッダ及びスライスヘッダ717は、いくつかのコンテキストで互換的に使用されてもよい。例えば、特定のパラメータは、このようなパラメータがピクチャ725内の全てのスライス727に共通であるか否かに依存して、スライスヘッダ717とピクチャヘッダとの間で動かされてもよい。
【0095】
画像データ720は、インター予測及び/又はイントラ予測に従って符号化されたビデオデータ、並びに、対応する変換及び量子化された残差データを含む。例えば、画像データ720は、ピクチャ725のレイヤ723を含んでもよい。レイヤ723は、OLS721に編成されてもよい。OLS721は、OLS525、620、621及び/又は622と実質的に同様のものでもよい。具体的には、OLS721は、1つ以上のレイヤ723が出力レイヤとして指定される723のレイヤのセットである。レイヤ723がマルチビュービデオを含むとき、レイヤ723の全てが出力レイヤとして指定されてもよい。例えば、ビットストリーム700は、異なる解像度、フレームレート、ピクチャ725サイズ等でコーディングされたビデオを有するいくつかのOLS721を含むようにコーディングされてもよい。デコーダによる要求に応じて、サブビットストリーム抽出プロセスは、ビットストリーム700から要求されたOLS721を除く全てを除去できる。次いで、エンコーダは、要求されたOLS721のみ、したがって要求された基準を満たすビデオのみを含むビットストリーム700をデコーダに伝送できる。
【0096】
レイヤ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でもよい。
【0097】
ピクチャ725は、フレーム又はそのフィールドを作成するルマサンプルの配列及び/又はクロマサンプルの配列である。例えば、ピクチャ725は、表示のために出力されてもよく、或いは出力のために他のピクチャ725のコーディングをサポートするために使用されてもよいコーディングされた画像でもよい。ピクチャ725は、VCL NALユニットのセットを含んでもよい。ピクチャ725は、1つ以上のスライス727を含む。スライス727は、単一のNALユニット、具体的には、VCL NALユニットに排他的に含まれるピクチャ725の整数個の完全なタイル又は(例えば、タイル内の)整数個の連続する完全なコーディングツリーユニット(coding tree unit, CTU)行として定義されてもよい。スライス727は、CTU及び/又はコーディングツリーブロック(coding tree block, CTB)に更に分割される。CTUは、コーディングツリーによりパーティション分割できる所定のサイズのサンプルのグループである。CTBはCTUのサブセットであり、CTUのルマ成分又はクロマ成分を含む。CTU/CTBは、コーディングツリーに基づいてコーディングブロックに更に分割される。次いで、コーディングブロックは、予測メカニズムに従って符号化/復号できる。
【0098】
本開示は、例えばビデオシーケンス600を使用することにより、マルチビュービデオのための空間及び/又はSNRスケーラビリティをサポートするためのメカニズムを含む。例えば、VPS711は、ols_mode_idc735を含んでもよい。ols_mode_idc735は、OLS721の数、OLS721のレイヤ723及びOLS721内の出力レイヤ723に関連する情報を示すシンタックスエレメントである。出力レイヤ723は、単に参照ベースのコーディングに使用されるのではなく、デコーダにより出力されるように指定されたいずれかのレイヤである。ols_mode_idc735は、他のタイプのビデオをコーディングするために0又は2に設定されてもよい。ols_mode_idc735は、マルチビュービデオのための空間及び/又はSNRスケーラビリティに対して1に設定できる。例えば、ols_mode_idc735は、ビデオシーケンス内のOLS721の総数がVPS711で指定されたレイヤ723の総数に等しく、第iのOLS721が0以上i以下のレイヤを含み、各OLS721についてOLS721に含まれる全てのレイヤが出力レイヤであることを示すために1に設定できる。この一連の条件は、如何なる数のOLS721を有するビデオシーケンス600を記述してもよい。ols_mode_idc735を使用する利点は、ols_mode_idc735がビット節約を提供することである。アプリケーションシステム内のデコーダは、一般的に、単一のOLSのみを受信する。しかし、ols_mode_idc735はまた、多くのデータが共有される複数のOLSを含む符号化ビットストリームにおいてビット節約を提供し、したがって、ストリーミングサーバにおける節約を提供し、このようなビットストリームを伝送するための帯域幅節約を提供する。具体的には、ols_mode_idc735を1に設定する利点は、マルチビューアプリケーションのようなユースケースをサポートすることであり、1つのレイヤによりそれぞれ表される2つ以上のビューが同時に出力されて表示される。
【0099】
いくつかの例では、VPS711はまた、VPS最大レイヤマイナス1(vps_max_layers_minus1)737シンタックスエレメントを含む。vps_max_layers_minus1 737は、VPS700により指定されたレイヤ723の数、したがって、ビットストリーム700内の対応するコーディングされたビデオシーケンスで許容されるレイヤ723の最大数を伝達するシンタックスエレメントである。ols_mode_idc735は、vps_max_layers_minus1 737シンタックスエレメントを参照してもよい。例えば、ols_mode_idc735は、OLS721の総数がvps_max_layers_minus1 737により指定されたレイヤ723の数に等しいことを示してもよい。
【0100】
さらに、VPS711は、each_layer_is_an_ols_flag733を含んでもよい。each_layer_is_an_ols_flag733は、ビットストリーム700内の各OLS721が単一のレイヤ723を含むか否かを伝達するシンタックスエレメントである。例えば、スケーラビリティが使用されないとき、各OLS721は、単一のサイマルキャストレイヤを含んでもよい。したがって、each_layer_is_an_ols_flag733は、1つ以上のOLS721がスケーラビリティをサポートするために1つよりも多くのレイヤ723を含むことを示すように(例えば、0に)設定できる。したがって、each_layer_is_an_ols_flag733は、スケーラビリティをサポートするために使用できる。例えば、デコーダは、OLS721のいくつかが1つよりも多くのレイヤ723を含むと決定するために、each_layer_is_an_ols_flag733を検査できる。each_layer_is_an_ols_flag733が0に設定されたとき、且つ、ols_mode_idc735が1(又は異なるモードで使用されるときに0)に設定されたとき、OLSの総数(TotalNumOlss)は、vps_max_layers_minus1 737に等しく設定できる。TotalNumOlssは、デコーダとエンコーダにおける仮想参照デコーダ(hypothetical reference decoder, HRD)との双方により使用される変数である。TotalNumOlssは、ビットストリーム700内のデータに基づいてOLS721の数を記憶するために使用される変数である。次いで、TotalNumOlssは、デコーダでの復号又はエンコーダにおけるHRDでのビットストリーム700エラーの検査に使用できる。
【0101】
VPS711はまた、VPSレイヤ識別子(vps_layer_id[i])731シンタックスエレメントを含んでもよい。vps_layer_id[i]731は、各レイヤのレイヤID(例えば、nuh_layer_id)を記憶する配列である。したがって、vps_layer_id[i]731は、第iのレイヤのレイヤIDを示す。
【0102】
デコーダ又はHRDは、OLS721及びレイヤ723の構成を決定するために、VPS711内のデータを使用可能でもよい。具体的な例では、第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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである。
【0103】
VPS711内のデータは、マルチビュービデオを含むSNR及び/又は空間的にスケーラブルなレイヤ723をサポートするために使用できる。レイヤ723は符号化され、OLS721に含まれることができる。エンコーダは、要求されたOLS721及びVPS711を含むビットストリーム700をデコーダに伝送できる。次いで、デコーダは、OLS721内のレイヤ723を正確に復号するために、VPS711内の情報を使用できる。この手法は、スケーラビリティをサポートしつつ、コーディング効率をサポートする。具体的には、デコーダは、OLS721内のレイヤ723の数を迅速に決定し、OLS721内の全てのレイヤが出力レイヤであると決定し、レイヤ間予測に従って出力レイヤを復号できる。次いで、デコーダは、マルチビューを実現するためにレンダリングされるべき出力レイヤを選択できる。したがって、デコーダは、マルチビューのためのビューを復号するために必要なレイヤ723を受信してもよく、デコーダは、所望の通りレイヤ723からピクチャ725を復号して表示できる。このように、符号化されたレイヤ723の総数は、復号プロセスに影響を及ぼさない可能性があり、上記の1つ以上のエラーが回避され得る。したがって、開示のメカニズムは、エンコーダ及び/又はデコーダの機能を向上させる。さらに、開示のメカニズムは、ビットストリームサイズを減少させ、したがって、エンコーダ及びデコーダの双方においてプロセッサ、メモリ及び/又はネットワークリソース利用率を低減し得る。
【0104】
以下に、上記の情報についてここでより詳細に説明する。階層ビデオコーディングはまた、スケーラブルビデオコーディング又はスケーラビリティを有するビデオコーディングとも呼ばれる。ビデオコーディングにおけるスケーラビリティは、マルチレイヤコーディング技術を使用することによりサポートされてもよい。マルチレイヤビットストリームは、ベースレイヤ(base layer, BL)及び1つ以上のエンハンスメントレイヤ(enhancement layer, EL)を含む。スケーラビリティの例は、空間スケーラビリティ、品質/信号対雑音比(signal to noise ratio, SNR)スケーラビリティ、マルチビュースケーラビリティ、フレームレートスケーラビリティ等を含む。マルチレイヤコーディング技術が使用されるとき、ピクチャ又はその一部は、参照ピクチャを使用せずにコーディングされてもよく(イントラ予測)、同じレイヤにある参照ピクチャを参照することによりコーディングされてもよく(インター予測)、及び/又は、他のレイヤにある参照ピクチャを参照することによりコーディングされてもよい(レイヤ間予測)。現在ピクチャのレイヤ間予測に使用される参照ピクチャは、レイヤ間参照ピクチャ(inter-layer reference picture, ILRP)と呼ばれる。図5は、異なるレイヤ内のピクチャが異なる解像度を有する空間スケーラビリティのためのマルチレイヤコーディングの例を示す。
【0105】
いくつかのビデオコーディングファミリーは、単一レイヤコーディングのためのプロファイルとは別のプロファイルにおいてスケーラビリティのためのサポートを提供する。スケーラブルビデオコーディング(scalable video coding, SVC)は、空間、時間及び品質スケーラビリティのためのサポートを提供する高度ビデオコーディング(advanced video coding, AVC)のスケーラブルな拡張である。SVCについて、ELマクロブロック(macroblock, MB)が下位レイヤからの同一位置のブロックを使用して予測されるか否かを示すために、フラグがELピクチャ内の各MBで伝達される。同一位置のブロックからの予測は、テクスチャ、動きベクトル及び/又はコーディングモードを含んでもよい。SVCの実現方式は、これらの設計において未修正のAVCの実現方式を直接再利用しなくてもよい。SVC ELマクロブロックシンタックス及び復号プロセスは、AVCシンタックス及び復号プロセスとは異なる。
【0106】
スケーラブルHEVC(Scalable HEVC, SHVC)は、空間及び品質スケーラビリティのためのサポートを提供するHEVCの拡張である。マルチビューHEVC(Multiview HEVC, MV-HEVC)は、マルチビュースケーラビリティのためのサポートを提供するHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCよりも高度で効率的な3Dビデオコーディングのためのサポートを提供するHEVCの拡張である。時間スケーラビリティは、単一レイヤHEVCコーデックの不可欠な部分として含まれてもよい。HEVCのマルチレイヤ拡張において、レイヤ間予測に使用される復号されたピクチャは、同じAUのみに由来し、長期参照ピクチャ(long-term reference picture, LTRP)として扱われる。このようなピクチャは、現在レイヤ内の他の時間参照ピクチャと共に、参照ピクチャリスト内で参照インデックスを割り当てられる。レイヤ間予測(inter-layer prediction, ILP)は、参照ピクチャリスト内のレイヤ間参照ピクチャを参照するために参照インデックスの値を設定することにより予測ユニット(prediction unit, PU)レベルで達成される。空間スケーラビリティは、ILRPが符号化又は復号されている現在ピクチャとは異なる空間解像度を有するとき、参照ピクチャ又はその一部を再サンプリングする。参照ピクチャの再サンプリングは、ピクチャレベル又はコーディングブロックレベルのいずれかで実現できる。
【0107】
VVCはまた、階層ビデオコーディングをサポートしてもよい。VVCビットストリームは、複数のレイヤを含むことができる。レイヤは、全て互いに独立することができる。例えば、各レイヤは、レイヤ間予測を使用せずにコーディングできる。この場合、レイヤはまた、サイマルキャストレイヤとも呼ばれる。いくつかの場合、レイヤのいくつかは、ILPを使用してコーディングされる。VPS内のフラグは、レイヤがサイマルキャストレイヤであるか、或いは、いくつかのレイヤがILPを使用するかを示すことができる。いくつかのレイヤがILPを使用するとき、レイヤの間のレイヤ依存関係もVPSで伝達される。SHVC及びMV-HEVCとは異なり、VVCはOLSを指定しなくてもよい。OLSは、指定のレイヤのセットを含み、レイヤのセット内の1つ以上のレイヤは、出力レイヤであると指定される。出力レイヤは、出力されるOLSのレイヤである。VVCのいくつかの実現方式では、レイヤがサイマルキャストレイヤであるとき、1つのレイヤのみが復号及び出力のために選択されてもよい。VVCのいくつかの実現方式では、全てのレイヤを含む全体のビットストリームは、いずれかのレイヤがILPを使用するときに復号されるように指定される。さらに、レイヤの中の特定のレイヤは、出力レイヤであると指定される。出力レイヤは、最高のレイヤのみ、全てのレイヤ、又は最高のレイヤに指示された下位レイヤのセットを加えたものであると示されてもよい。
【0108】
上記の態様は、特定の問題を含む。いくつかのビデオコーディングシステムでは、レイヤ間予測が使用されるとき、全体のビットストリーム及び全てのレイヤが復号されるように指定され、レイヤの中の特定のレイヤが出力レイヤであると指定される。出力レイヤは、最高のレイヤのみ、全てのレイヤ、又は最高のレイヤに指示された下位レイヤのセットを加えたものであると示されてもよい。問題を記述するのを簡単にするために、レイヤ間予測参照のために下位レイヤを使用する上位レイヤによって、2つのレイヤが使用されてもよい。マルチビュースケーラビリティのために、システムは下位レイヤのみの使用(下位レイヤのみの復号及び出力)を指定すべきである。システムはまた、双方のレイヤの使用(双方のレイヤの復号及び出力)も指定すべきである。不都合なことに、これはいくつかのビデオコーディングシステムでは不可能である。
【0109】
一般的に、本開示は、マルチビュースケーラビリティのための出力レイヤセット(output layer set, OLS)の簡単且つ効率的なシグナリングのための手法を記述する。当該技術の説明は、ITU-T及びISO/IECのJVETによるVVCに基づく。しかし、当該技術はまた、他のビデオコーデック仕様に基づく階層ビデオコーディングにも適用する。
【0110】
上記の問題の1つ以上は、以下のように解決されてもよい。具体的には、本開示は、空間及びSNRスケーラビリティのためのOLSのシグナリングのための簡単且つ効率的な方法を含む。ビデオコーディングシステムは、いくつかのレイヤがILPを使用し、VPSにより指定されたOLSの総数がレイヤの数に等しく、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含み、各OLSについてOLS内の最高のレイヤのみが出力されることを示すために、VPSを使用してもよい。
【0111】
上記のメカニズムの例示的な実現方式は以下の通りである。例示的なビデオパラメータセットのシンタックスは以下の通りである。
【表1】

【0112】
例示的なビデオパラメータセットのセマンティクスは以下の通りである。VPS RBSPは、参照される前に復号プロセスに利用可能になるべきであり、0に等しいTemporalIdを有する少なくとも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に存在し得る時間サブレイヤの最大数を指定する。vps_max_sub_layers_minus1の値は、0以上6以下の範囲にあるべきである。
【0113】
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値を指定する。m及びnのいずれか2つの非負の整数値について、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に等しいと推定される。
【0114】
vps_direct_dependency_flag[i][j]は、インデックスjを有するレイヤがインデックスiを有するレイヤについての直接参照レイヤではないことを指定するために、0に等しく設定されてもよい。vps_direct_dependency_flag[i][j]は、インデックスjを有するレイヤがインデックスiを有するレイヤについての直接参照レイヤであることを指定するために、1に等しく設定されてもよい。vps_direct_dependency_flag[i][j]が0以上vps_max_layers_minus1以下の範囲の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
のように導出される。
【0115】
vps_layer_id[i]に等しいnuh_layer_idを有するレイヤのレイヤインデックスを指定する変数GeneralLayerIdx[i]は、以下のように、すなわち、
for(i=0;i<=vps_max_layers_minus1;i++)
GeneralLayerIdx[vps_layer_id[i]]=i
のように導出される。
【0116】
each_layer_is_an_ols_flagは、単一の含まれるレイヤが出力レイヤのみであることによって、各出力レイヤセットが1つのレイヤのみを含み、ビットストリーム内の各レイヤ自体が出力レイヤセットであることを指定するために、1に等しく設定されてもよい。each_layer_is_an_ols_flagは、出力レイヤセットが1つよりも多くのレイヤを含んでもよいことを指定するために、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に等しいと推定される。
【0117】
ols_mode_idcは、VPSにより指定されたOLSの総数がvps_max_layers_minus1+1に等しく、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含み、各OLSについてOLS内の最高のレイヤのみが出力されることを指定するために、0に等しく設定されてもよい。ols_mode_idcは、VPSにより指定されたOLSの総数がvps_max_layers_minus1+1に等しく、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含み、各OLSについてOLS内の全てのレイヤが出力されることを指定するために、1に等しく設定されてもよい。ols_mode_idcは、VPSにより指定されたOLSの総数が明示的に伝達され、各OLSについてOLS内の最高のレイヤ及び明示的に伝達された下位レイヤのセットが出力されることを指定するために、2に等しく設定されてもよい。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に等しいと推定される。
【0118】
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
のように導出される。
【0119】
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に等しく設定されてもよい。
【0120】
第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
}
}
のように導出されてもよい。
【0121】
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
のように導出されてもよい。
【0122】
各OLS内の最低のレイヤは独立したレイヤであるべきである。言い換えると、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以下の範囲内のkについてvps_layer_id[k]の1つに等しい)の特定の値を有する各レイヤについて、i及びjの値の少なくとも1つのペアが存在すべきであり、iは0以上TotalNumOlss-1の範囲にあり、jはNumLayersInOls[i]-1を含む範囲にあり、それにより、LayerIdInOls[i][j]の値がnuhLayerIdに等しくなる。OLS内のいずれかのレイヤは、OLSの出力レイヤ、又はOLSの出力レイヤの(直接又は間接)参照レイヤであるものとする。
【0123】
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に等しいと推定できる。
【0124】
値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]
}
のように導出されてもよい。
【0125】
第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の値を無視すべきである。
【0126】
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は、クロックティックカウンタの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秒に等しくてもよい。
【0127】
time_scaleは、1秒に経過する時間単位の数である。例えば、27メガヘルツ(MHz)クロックを使用して時間を測定する時間座標系は、27000000のtime_scaleを有する。time_scaleの値は0よりも大きくなるべきである。vps_extension_flagは、VPS RBSPシンタックス構造にvps_extension_data_flagシンタックスエレメントが存在しないことを指定するために、0に等しく設定されてもよい。vps_extension_flagは、VPS RBSPシンタックス構造に存在するvps_extension_data_flagシンタックスエレメントがあることを指定するために、1に等しく設定されてもよい。vps_extension_data_flagは、いずれかの値を有してもよい。vps_extension_data_flagの存在及び値は、プロファイルへのデコーダの適合性に影響を及ぼさない。適合するデコーダは、全てのvps_extension_data_flagシンタックスエレメントを無視すべきである。
【0128】
図8は、例示的なビデオコーディングデバイス800の概略図である。ビデオコーディングデバイス800は、ここに記載されるような開示の例/実施形態を実現するのに適している。ビデオコーディングデバイス800は、ダウンストリームポート820、アップストリームポート850、及び/又はネットワーク上でデータをアップストリーム及び/又はダウンストリームに通信するための送信機及び/又は受信機を含むトランシーバユニット(Tx/Rx)810を含む。ビデオコーディングデバイス800はまた、データを処理するための論理ユニット及び/又は中央処理装置(central processing unit, CPU)を含むプロセッサ830と、データを記憶するためのメモリ832とを含む。ビデオコーディングデバイス800はまた、電気、光又は無線の通信ネットワークを介したデータの通信のためにアップストリームポート850及び/又はダウンストリームポート820に結合された、電気的な光-電気(optical-to-electrical, OE)コンポーネント、電気-光(electrical-to-optical, EO)コンポーネント及び/又は無線通信コンポーネントを含んでもよい。ビデオコーディングデバイス800はまた、ユーザに且つユーザからデータを通信するための入力及び/又は出力(input and/or output, I/O)デバイス860を含んでもよい。I/Oデバイス860は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカ等のような出力デバイスを含んでもよい。I/Oデバイス860はまた、キーボード、マウス、トラックボール等のような入力デバイス、及び/又はこのような出力デバイスと相互作用するための対応するインタフェースを含んでもよい。
【0129】
プロセッサ830は、ハードウェア及びソフトウェアにより実現される。プロセッサ830は、1つ以上のCPUチップ、(例えば、マルチコアプロセッサとしての)コア、フィールドプログラマブルゲートアレイ(field-programmable gate array, FPGA)、特定用途向け集積回路(application specific integrated circuit, ASIC)及びデジタルシグナルプロセッサ(digital signal processor, DSP)として実現されてもよい。プロセッサ830は、ダウンストリームポート820、Tx/Rx810、アップストリームポート850及びメモリ832と通信する。プロセッサ830は、コーディングモジュール814を含む。コーディングモジュール814は、マルチレイヤビデオシーケンス500、ビデオシーケンス600及び/又はビットストリーム700を使用してもよい、方法100、900及び1000のようなここに記載される開示の実施形態を実現する。コーディングモジュール814はまた、ここに記載されるいずれか他の方法/メカニズムを実現してもよい。さらに、コーディングモジュール814は、コーデックシステム200、エンコーダ300及び/又はデコーダ400を実現してもよい。例えば、コーディングモジュール814は、マルチビュースケーラビリティをサポートするために、ビデオシーケンスをレイヤ及び/又はOLSにコーディングするために使用されてもよい。例えば、コーディングモジュール814は、ols_mode_idcシンタックスエレメントをビットストリーム内のVPSに符号化してもよく及び/又はビットストリーム内のVPSから復号してもよい。ols_mode_idcシンタックスエレメントは、ビデオシーケンス内のOLSの総数がVPSで指定されたレイヤの総数に等しく、第iのOLSが0以上i以下のレイヤを含み、各OLSについてOLS内の全てのレイヤが出力されることを示すことができる。したがって、コーディングモジュール814は、スケーラブルビデオから受信した全てのレイヤが、マルチビュービデオを実現するために所望の通り復号されて表示できると示す/決定するために、ols_mode_idcシンタックスエレメントを使用してもよい。したがって、コーディングモジュール814は、ビデオデータをコーディングするとき、ビデオコーディングデバイス800に更なる機能及び/又はコーディング効率を提供させる。したがって、コーディングモジュール814は、ビデオコーディングデバイス800の機能を改善すると共に、ビデオコーディング分野に特有の問題に対処する。さらに、コーディングモジュール814は、ビデオコーディングデバイス800の異なる状態への転換をもたらす。代替として、コーディングモジュール814は、メモリ832に記憶されてプロセッサ830により実行される命令として(例えば、非一時的な媒体に記憶されたコンピュータプログラム製品として)実現できる。
【0130】
メモリ832は、ディスク、テープドライブ、ソリッドステートドライブ、読み取り専用メモリ(read only memory, ROM)、ランダムアクセスメモリ(random access memory, RAM)、フラッシュメモリ、三値コンテンツアドレッサブルメモリ(ternary content-addressable memory, TCAM)、スタティックランダムアクセスメモリ(static random-access memory, SRAM)等のような1つ以上のメモリタイプを含む。メモリ832は、プログラムが実行のために選択されたときこのようなプログラムを記憶するために、且つ、プログラム実行中に読み取られた命令及びデータを記憶するために、オーバーフローデータ記憶デバイスとして使用されてもよい。
【0131】
図9は、マルチレイヤビデオシーケンス500及び/又はビットストリーム700内のビデオシーケンス600のような、マルチビュースケーラビリティのために構成されたOLSを有するビデオシーケンスを符号化する例示的な方法900のフローチャートである。方法900は、方法100を実行するとき、コーデックシステム200、エンコーダ300及び/又はビデオコーディングデバイス800のようなエンコーダにより使用されてもよい。
【0132】
方法900は、エンコーダがビデオシーケンスを受信し、例えば、ユーザ入力に基づいて、レイヤのセット及びOLS内のスケーラブルマルチビュービデオシーケンスとしてそのビデオシーケンスを符号化すると決定したときに開始してもよい。ビデオシーケンスは、マルチビューをサポートするように構成され、SNRスケーラビリティ、空間スケーラビリティ、ここに記載される他の特性によるスケーラビリティ、又はこれらの組み合わせをサポートするようにコーディングされてもよい。ステップ901において、エンコーダは、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上のOLSを含むビットストリームを符号化できる。例えば、レイヤは、最低のレイヤIDを有するベースレイヤと、増加するレイヤIDを有する様々なエンハンスメントレイヤとを含んでもよい。jのレイヤIDを有する各エンハンスメントレイヤは、ベースレイヤ及びj未満のレイヤIDを有するいずれかのエンハンスメントレイヤに基づいてレイヤ間予測に従ってコーディングされてもよい。OLSはOLS IDを含んでもよく、これは、jのレイヤIDと区別するためにiにより示されてもよい。例えば、レイヤ当たり1つのOLSが存在してもよい。したがって、iのOLS IDを有するOLSは、jのレイヤIDを有する出力レイヤを含んでもよく、iはiに等しい。iのOLS IDを有するOLSはまた、0以上j-1以下のレイヤIDを有する全てのレイヤを含んでもよい。本例では、全てのレイヤが出力レイヤとして設定されてもよい。一例として、5のOLS IDを有するOLSは、レイヤ0~5を含んでもよく、各レイヤは、出力レイヤとして示される。
【0133】
ステップ903において、エンコーダは、VPSをビットストリームに符号化する。OLS及びレイヤの構成は、VPSにより示されてもよい。VPSは、ols_mode_idcシンタックスエレメントを含む。ols_mode_idcは、VPSにより指定されたOLSの総数がVPSにより指定されたレイヤの数に等しいことを指定するように設定できる。さらに、ols_mode_idcは、第iのOLSが、0以上i及び/又はj(例えば、この場合、iはjに等しい)以下のレイヤインデックスを有するレイヤを含むことを指定するように設定できる。ols_mode_idcはまた、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するように設定されてもよい。例えば、ols_mode_idcはいくつかのモードのうち1つに設定されてもよい。ols_mode_idcが1に設定されたとき、上記のモードが伝達されてもよい。いくつかの例では、VPSはまた、VPSにより指定されたレイヤの数を指定するvps_max_layers_minus1を含んでもよい。これはまた、VPSを参照する各CVS内のレイヤの最大許容数である。ols_mode_idcはvps_max_layers_minus1を参照してもよい。
【0134】
一例として、ビデオシーケンスは、標準の検証目的で、デコーダ及び/又はエンコーダにおける仮想参照デコーダ(hypothetical reference decoder, HRD)において復号できる。ビデオシーケンスを復号するとき、ビデオシーケンスについてのOLSの総数(TotalNumOlss)の変数は、VPS内のeach_layer_is_an_ols_flagが0に設定されたとき、ols_mode_idcが0に設定されたとき、或いは、ols_mode_idcが1に設定されたとき、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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである。OLSのID及び出力レイヤのIDが分かると、エンコーダにおけるHRDは、ビデオが標準に適合することを確保するための適合性検査を実行するために、レイヤ間予測を使用することにより、出力レイヤ内のコーディングされたピクチャを復号し始めることができる。
【0135】
ステップ905において、エンコーダは、デコーダに向けて通信するためにビットストリームを記憶できる。例えば、デコーダは、(例えば、通信及び/又はハイパーテキスト転送プロトコル上の動的適応ストリーミング(dynamic adaptive streaming over hypertext transfer protocol, DASH)のような他のプロトコルを介して)利用可能なOLSを認識していてもよい。デコーダは、デコーダにより適切に復号/表示できる最高のIDを有するOLSを選択して要求できる。例えば、空間スケーラビリティの場合、デコーダは、デコーダに接続された画面に関連するマルチビュービデオ及びピクチャサイズを有するOLSを要求できる。SNRスケーラビリティの場合、デコーダは、現在のネットワーク条件に照らして(例えば、利用可能な通信帯域幅に照らして)復号できるマルチビュービデオを有する最高のID OLSを要求できる。次いで、エンコーダ及び/又は中間キャッシュ又はコンテンツサーバは、復号のために、OLS及び関連するレイヤをデコーダに伝送できる。したがって、エンコーダは、デコーダのニーズに基づいてスケールアップ又はダウンできるマルチビュービデオシーケンスを作成できる。
【0136】
図10は、マルチレイヤビデオシーケンス500及び/又はビットストリーム700内のビデオシーケンス600のような、マルチビュースケーラビリティのために構成されたOLSを含むビデオシーケンスを復号する例示的な方法1000のフローチャートである。方法1000は、方法100を実行するとき、コーデックシステム200、デコーダ400及び/又はビデオコーディングデバイス800のようなデコーダにより使用されてもよい。
【0137】
方法1000は、デコーダが、例えば、方法900の結果として、スケーラブルマルチビュービデオシーケンスのレイヤのセットを有するOLSを含むビットストリームを受信し始めたときに開始してもよい。ビデオシーケンスは、SNRスケーラビリティ、空間スケーラビリティ、ここに記載される他の特性によるスケーラビリティ、又はこれらの組み合わせをサポートするようにコーディングされてもよい。ステップ1001において、デコーダは、OLS及びVPSを含むビットストリームを受信できる。例えば、OLSは、コーディングされたピクチャの1つ以上のレイヤを含んでもよい。レイヤは、最低のレイヤIDを有するベースレイヤと、増加するレイヤIDを有する様々なエンハンスメントレイヤとを含んでもよい。jのレイヤIDを有する各エンハンスメントレイヤは、ベースレイヤ及びj未満のレイヤIDを有するいずれかのエンハンスメントレイヤに基づいてレイヤ間予測に従ってコーディングされてもよい。OLSはOLS IDを含んでもよく、これは、jのレイヤIDと区別するためにiにより示されてもよい。例えば、レイヤ当たり符号化ビットストリームに1つのOLSが存在してもよい。したがって、iのOLS IDを有するOLSは、jのレイヤIDを有する出力レイヤを含んでもよく、iはiに等しい。iのOLS IDで受信したOLSはまた、0以上j-1以下のレイヤIDを有する全てのレイヤを含んでもよい。本例では、全てのレイヤが出力レイヤとして設定されてもよい。一例として、5のOLS IDを有する受信したOLSは、レイヤ0~5を含んでもよく、各レイヤは、出力レイヤとして示される。OLS及びレイヤの構成は、VPSにより示されてもよい。
【0138】
例えば、VPSは、ols_mode_idcシンタックスエレメントを含む。ols_mode_idcは、VPSにより指定されたOLSの総数がVPSにより指定されたレイヤの数に等しいことを指定するように設定できる。さらに、ols_mode_idcは、第iのOLSが、0以上i及び/又はj(例えば、この場合、iはjに等しい)以下のレイヤインデックスを有するレイヤを含むことを指定するように設定できる。ols_mode_idcはまた、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するように設定されてもよい。例えば、ols_mode_idcはいくつかのモードのうち1つに設定されてもよい。ols_mode_idcが1に設定されたとき、上記のモードが伝達されてもよい。いくつかの例では、VPSはまた、VPSにより指定されたレイヤの数を指定するvps_max_layers_minus1を含んでもよい。これはまた、VPSを参照する各CVS内のレイヤの最大許容数である。ols_mode_idcはvps_max_layers_minus1を参照してもよい。
【0139】
ステップ1003において、デコーダは、VPS内のols_mode_idcに基づいて、出力レイヤを決定できる。具体的な例として、ビデオシーケンスの構成を決定するとき、ビデオシーケンスについてのOLSの総数(TotalNumOlss)の変数は、VPS内のeach_layer_is_an_ols_flagが0に設定されたとき、ols_mode_idcが0に設定されたとき、或いは、ols_mode_idcが1に設定されたとき、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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである。
【0140】
ステップ1005において、出力レイヤのIDを使用して、デコーダは、出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成できる。例えば、デコーダは、レイヤ間予測を使用して出力レイヤの全てを復号し、所望の通り下位レイヤに基づいて上位レイヤを復号できる。デコーダはまた、マルチビューを実現するためにレイヤを選択できる。ステップ1007において、デコーダは、復号ビデオシーケンスの一部として表示するために、復号されたピクチャを転送できる。例えば、デコーダは、第1の画面(又はその一部)に表示するために第1のレイヤからの復号されたピクチャを転送し、第2の画面(又はその一部)に表示するために第2のレイヤセットからのピクチャを転送してもよい。
【0141】
具体的な例として、デコーダは、(例えば、通信及び/又はハイパーテキスト転送プロトコル上の動的適応ストリーミング(dynamic adaptive streaming over hypertext transfer protocol, DASH)のような他のプロトコルを介して)利用可能なOLSを認識していてもよい。デコーダは、デコーダにより適切に復号/表示できる最高のIDを有するOLSを選択して要求できる。例えば、空間スケーラビリティの場合、デコーダは、デコーダに接続された画面に関連するピクチャサイズを有するOLSを要求できる。SNRスケーラビリティの場合、デコーダは、現在のネットワーク条件に照らして(例えば、利用可能な通信帯域幅に照らして)復号できる最高のID OLSを要求できる。次いで、エンコーダ及び/又は中間キャッシュ又はコンテンツサーバは、マルチビューをサポートするように復号するために、OLS及び関連するレイヤをデコーダに伝送できる。したがって、エンコーダは、デコーダのニーズに基づいてスケールアップ又はダウンできるマルチビュービデオシーケンスを作成できる。次いで、デコーダは、方法1000を使用することにより、受信したときに要求されたビデオシーケンスを復号できる。
【0142】
図11は、マルチレイヤビデオシーケンス500及び/又はビットストリーム700内のビデオシーケンス600のような、マルチビュースケーラビリティのために構成されたOLSを有するビデオシーケンスをコーディングするための例示的なシステム1100の概略図である。システム1100は、コーデックシステム200、エンコーダ300、デコーダ400及び/又はビデオコーディングデバイス800のようなエンコーダ及びデコーダにより実現されてもよい。さらに、システム1100は、方法100、900及び/又は1000を実現するときに使用されてもよい。
【0143】
システム1100は、ビデオエンコーダ1102を含む。ビデオエンコーダ1102は、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上のOLSを含むビットストリームを符号化するための符号化モジュール1105を含む。さらに、符号化モジュール1105は、VPSをビットストリームに符号化するためのものであり、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するols_mode_idcを含む。ビデオエンコーダ1102は、デコーダに向けて通信するためにビットストリームを記憶するための記憶モジュール1106を更に含む。ビデオエンコーダ1102は、ビデオデコーダ1100に向けてビットストリームを送信するための送信モジュール1107を更に含む。ビデオエンコーダ1102は、方法900のステップのいずれかを実行するように更に構成されてもよい。
【0144】
システム1100はまた、ビデオデコーダ1110を含む。ビデオデコーダ1110は、OLS及びVPSを含むビットストリームを受信するための受信モジュール1111を含み、OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、VPSは、各OLSについて各OLS内の全てのレイヤが出力レイヤであることを指定するols_mode_idcを含む。ビデオデコーダ1100は、VPS内のols_mode_idcに基づいて、出力レイヤを決定するための決定モジュール1113を更に含む。ビデオデコーダ1110は、出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するための復号モジュール1115を更に含む。ビデオデコーダ1110は、復号ビデオシーケンスの一部として表示するために、復号されたピクチャを転送するための転送モジュール1115を更に含む。ビデオデコーダ1110は、方法1000のステップのいずれかを実行するように更に構成されてもよい。
【0145】
第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にライン、トレース又は他の媒体を除く介在コンポーネントが存在しないとき、第2のコンポーネントに直接的に結合される。第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にライン、トレース又は他の媒体以外の介在コンポーネントが存在するとき、第2のコンポーネントに間接的に結合される。「結合」という用語及びその変形は、直接的に結合されること及び間接的に結合されることの双方を含む。「約」という用語の使用は、特に断らない限り、後続の数の±10%を含む範囲を意味する。
【0146】
ここに記載の例示的な方法のステップは、必ずしも記載の順序で実行される必要はないことも理解されるべきであり、このような方法のステップの順序は、単に例示的なものであると理解されるべきである。同様に、本開示の様々な実施形態と一致する方法において、更なるステップがこのような方法に含まれてもよく、特定のステップが省略されてもよく或いは組み合わされてもよい。
【0147】
本開示においていくつかの実施形態が提供されているが、開示のシステム及び方法は、本開示の真意又は範囲を逸脱することなく、多くの他の具体的な形式で具現化されてもよいことが理解され得る。本例は、限定的なものではなく、例示的なものと考えられるべきであり、その意図は、ここに与えられた詳細に限定されないということである。例えば、様々なエレメント又はコンポーネントは組み合わされてもよく或いは他のシステムに統合されてもよく、或いは、特定の特徴が省略されてもよく或いは実現されなくてもよい。
【0148】
さらに、様々な実施形態において個別或いは別個であるように記載及び図示された技術、システム、サブシステム及び方法は、本開示の範囲を逸脱することなく、組み合わされてもよく、或いは、他のシステム、コンポーネント、技術又は方法と統合されてもよい。変形、置換及び変更の他の例が当業者により解明可能であり、ここに開示された真意及び範囲を逸脱することなく行われてもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【手続補正書】
【提出日】2022-05-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
デコーダにより実現される方法であって、当該方法は、
前記デコーダの受信機により、出力レイヤセット(OLS)及びビデオパラメータセット(VPS)を含むビットストリームを受信するステップであり、前記OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む、ステップと、
前記デコーダのプロセッサにより、前記VPS内の前記ols_mode_idcに基づいて、前記出力レイヤを決定するステップと、
前記デコーダの前記プロセッサにより、前記出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するステップと
を含む方法。
【請求項2】
前記ols_mode_idcは、前記VPSにより指定されたOLSの総数が前記VPSにより指定されたレイヤの数に等しいことを指定する、請求項1に記載の方法。
【請求項3】
前記ols_mode_idcは、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定する、請求項1又は2に記載の方法。
【請求項4】
前記ols_mode_idcは1に等しい、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記VPSは、前記VPSを参照する各コーディング済ビデオシーケンス(CVS)内のレイヤの最大許容数である、前記VPSにより指定されたレイヤの数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む、請求項1乃至4のうちいずれか1項に記載の方法。
【請求項6】
OLSの総数(TotalNumOlss)は、前記ols_mode_idcが0に等しいとき、或いは、前記ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しい、請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
第iのOLS内のレイヤの数(NumLayersInOls[i])及び前記第iのOLS内の第jのレイヤのネットワーク抽象レイヤ(NAL)ユニットヘッダレイヤ識別子(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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
エンコーダにより実現される方法であって、当該方法は、
前記エンコーダのプロセッサにより、コーディングされたピクチャの1つ以上のレイヤを含む1つ以上の出力レイヤセット(OLS)を含むビットストリームを符号化するステップと、
前記プロセッサにより、ビデオパラメータセット(VPS)を前記ビットストリームに符号化するステップであり、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定する出力レイヤセット(OLS)モード識別コード(ols_mode_idc)を含む、ステップと、
前記プロセッサに結合されたメモリにより、デコーダに向けて通信するために前記ビットストリームを記憶するステップと
を含む方法。
【請求項9】
前記ols_mode_idcは、前記VPSにより指定されたOLSの総数が前記VPSにより指定されたレイヤの数に等しいことを指定する、請求項8に記載の方法。
【請求項10】
前記ols_mode_idcは、第iのOLSが0以上i以下のレイヤインデックスを有するレイヤを含むことを指定する、請求項8又は9に記載の方法。
【請求項11】
前記ols_mode_idcは1に等しい、請求項8乃至10のうちいずれか1項に記載の方法。
【請求項12】
前記VPSは、前記VPSを参照する各コーディング済ビデオシーケンス(CVS)内のレイヤの最大許容数である、前記VPSにより指定されたレイヤの数を指定するVPS最大レイヤマイナス1(vps_max_layers_minus1)を含む、請求項8乃至11のうちいずれか1項に記載の方法。
【請求項13】
OLSの総数(TotalNumOlss)は、前記ols_mode_idcが0に等しいとき、或いは、前記ols_mode_idcが1に等しいとき、vps_max_layers_minus1に1を加えたものに等しい、請求項8乃至12のうちいずれか1項に記載の方法。
【請求項14】
第iのOLS内のレイヤの数(NumLayersInOls[i])及び前記第iのOLS内の第jのレイヤのネットワーク抽象レイヤ(NAL)ユニットヘッダレイヤ識別子(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が1つよりも多くのレイヤを含むか否かを指定する、各レイヤがOLSであるフラグである、請求項8乃至13のうちいずれか1項に記載の方法。
【請求項15】
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを含むビデオコーディングデバイスであって、
前記プロセッサ、受信機、メモリ及び送信機は、請求項1乃至14のうちいずれか1項に記載の方法を実行するように構成される、ビデオコーディングデバイス。
【請求項16】
ビデオコーディングデバイスにより使用されるコンピュータプログラム製品を含む非一時的なコンピュータ読み取り可能媒体であって、
前記コンピュータプログラム製品は、プロセッサにより実行されたとき、前記ビデオコーディングデバイスに請求項1乃至14のうちいずれか1項に記載の方法を実行させるように、当該非一時的なコンピュータ読み取り可能媒体に記憶されたコンピュータ実行可能命令を含む、非一時的なコンピュータ読み取り可能媒体。
【請求項17】
デコーダであって、
出力レイヤセット(OLS)及びビデオパラメータセット(VPS)を含むビットストリームを受信するための受信手段であり、前記OLSは、コーディングされたピクチャの1つ以上のレイヤを含み、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定するOLSモード識別コード(ols_mode_idc)を含む、受信手段と、
前記VPS内の前記ols_mode_idcに基づいて、前記出力レイヤを決定するための決定手段と、
前記出力レイヤからコーディングされたピクチャを復号し、復号されたピクチャを生成するための復号手段と、
復号ビデオシーケンスの一部として表示するために、前記復号されたピクチャを転送するための転送手段と
を含むデコーダ。
【請求項18】
当該デコーダは、請求項1乃至7のうちいずれか1項に記載の方法を実行するように更に構成される、請求項17に記載のデコーダ。
【請求項19】
エンコーダであって、
コーディングされたピクチャの1つ以上のレイヤを含む1つ以上の出力レイヤセット(OLS)を含むビットストリームを符号化し、ビデオパラメータセット(VPS)を前記ビットストリームに符号化するための符号化手段であり、前記VPSは、各OLSについて前記各OLS内の全てのレイヤが出力レイヤであることを指定する出力レイヤセット(OLS)モード識別コード(ols_mode_idc)を含む、符号化手段と、
デコーダに向けて通信するために前記ビットストリームを記憶するための記憶手段と
を含むエンコーダ。
【請求項20】
当該エンコーダは、請求項8乃至14のうちいずれか1項に記載の方法を実行するように更に構成される、請求項19に記載のエンコーダ。
【国際調査報告】