(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-12
(45)【発行日】2024-09-24
(54)【発明の名称】ビデオビットストリームの各レイヤ表現のための値の導出
(51)【国際特許分類】
H04N 19/70 20140101AFI20240913BHJP
H04N 19/30 20140101ALI20240913BHJP
【FI】
H04N19/70
H04N19/30
(21)【出願番号】P 2022574525
(86)(22)【出願日】2021-01-27
(86)【国際出願番号】 SE2021050048
(87)【国際公開番号】W WO2021251859
(87)【国際公開日】2021-12-16
【審査請求日】2023-02-20
(32)【優先日】2020-06-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100150670
【氏名又は名称】小梶 晴美
(74)【代理人】
【識別番号】100194294
【氏名又は名称】石岡 利康
(72)【発明者】
【氏名】ショバーリ, リキャルド
(72)【発明者】
【氏名】ペッテション, マルティン
(72)【発明者】
【氏名】ダムガニアン, ミトラ
(72)【発明者】
【氏名】ストレム, ヤコブ
(72)【発明者】
【氏名】チャン, ヂィー
(72)【発明者】
【氏名】エンホーン, ジャック
(72)【発明者】
【氏名】ユー, ルオヤン
(72)【発明者】
【氏名】リュー, ドゥ
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2017/195582(WO,A1)
【文献】国際公開第2015/053120(WO,A1)
【文献】Jonatan Samuelsson, Sachin Deshpande, and Andrew Segall,AHG17: On Profile, tier, and level syntax structure,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0217,16th Meeting: Geneva, CH,2019年09月,pp.1-2
【文献】Hendry,AHG9: On signalling of sub-layer level idc,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-S0203,19th Meeting: by teleconference,2020年06月,pp.1-3
【文献】Zhi Zhang, et al.,AHG9: Order of the sublayer_level_idc[ i ] syntax elements,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-S0207,19th Meeting: by teleconference,2020年06月,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオビットストリームを処理するための方法(700)であって、前記方法は、
値Nを決定すること(s702)であって、Nが順序付きレイヤ表現の数を識別し、Nが、N個の前記順序付きレイヤ表現が、最も高いレイヤ表現と、2番目に高いレイヤ表現と、3番目に高いレイヤ表現とを備えるように、3よりも大きいかまたはそれに等しい、値Nを決定すること(s702)
と、
前記最も高いレイヤ表現のための値を決定すること(s704)と、
前記最も高いレイヤ表現のための前記値を決定することの後におよび前記3番目に高いレイヤ表現のための値を決定することの前に、前記2番目に高いレイヤ表現のための値を決定すること(s706)であって、前記2番目に高いレイヤ表現のための前記値を決定すること(s706)は、
前記
ビデオビットストリームが、前記2番目に高いレイヤ表現に関連する第1のあるシンタックスエレメントを含んでいるかどうかを決定することと、
前記
ビデオビットストリームが、前記2番目に高いレイヤ表現に関連する前記第1のあるシンタックスエレメントを含んでいる場合、前記2番目に高いレイヤ表現に関連する前記第1のあるシンタックスエレメントから値を導出し、前記2番目に高いレイヤ表現のための前記値が、前記第1のあるシンタックスエレメントから導出された前記値であると決定し、他の場合、前記2番目に高いレイヤ表現のための前記値が、前記最も高いレイヤ表現のための前記値
に等しいと推論し、前記2番目に高いレイヤ表現のための前記値が推論された前記値であると決定することと
を含む、
前記2番目に高いレイヤ表現のための値を決定すること(s706)と、
前記2番目に高いレイヤ表現のための前記値を決定することの後に、前記3番目に高いレイヤ表現のための値を決定すること(s708)
であって、前記3番目に高いレイヤ表現のための前記値を決定すること(s708)は、
前記ビデオビットストリームが、前記3番目に高いレイヤ表現に関連する第2のあるシンタックスエレメントを含んでいるかどうかを決定することと、
前記ビデオビットストリームが、前記3番目に高いレイヤ表現に関連する前記第2のあるシンタックスエレメントを含んでいる場合、前記3番目に高いレイヤ表現に関連する前記第2のあるシンタックスエレメントから値を導出し、前記3番目に高いレイヤ表現のための前記値が、前記第2のあるシンタックスエレメントから導出された前記値であると決定し、他の場合、前記3番目に高いレイヤ表現のための前記値が、前記2番目に高いレイヤ表現のための前記値と等しいと推論し、前記3番目に高いレイヤ表現のための前記値が推論された前記値であると決定することと
を含む、前記3番目に高いレイヤ表現のための値を決定すること(s708)と、
を含む、方法。
【請求項2】
前記
ビデオビットストリームが、前記2番目に高いレイヤ表現に関連する前記第1のあるシンタックスエレメントと前記3番目に高いレイヤ表現に関連する前記第2のあるシンタックスエレメントの両方を含んでいる場合、前記
ビデオビットストリーム中で、前記2番目に高いレイヤ表現に関連する前記第1のあるシンタックスエレメントが、前記3番目に高いレイヤ表現に関連する前記第2のあるシンタックスエレメントに先行する、請求項
1に記載の方法。
【請求項3】
前記方法が、復号された値を作り出すために前記
ビデオビットストリームからシンタックスエレメントを復号することと、変数V2を前記復号された値に等しくセットすることとをさらに含み、
前記
ビデオビットストリームが、前記2番目に高いレイヤ表現に関連する前記第1のあるシンタックスエレメントを含んでいるかどうかを決定することは、V2が所定の値に等しいかどうかを決定することを含む、
請求項1
又は2に記載の方法。
【請求項4】
前記方法が、復号された値を作り出すために前記
ビデオビットストリームからシンタックスエレメントを復号することと、変数V3を前記復号された値に等しくセットすることとをさらに含み、
前記
ビデオビットストリームが、前記3番目に高いレイヤ表現に関連する前記第2のあるシンタックスエレメントを含んでいるかどうかを決定することは、V3が所定の値に等しいかどうかを決定することを含む、
請求項
1から3のいずれか一項に記載の方法。
【請求項5】
前記変数V2をセットするために使用される前記シンタックスエレメントおよび/または前記変数V3をセットするために使用される前記シンタックスエレメントが、ptl_sublayer_level_present_flag[i]である、
請求項3を引用する場合の請求項4に記載の方法。
【請求項6】
Nを決定することが、前記
ビデオビットストリーム中に含まれるシンタックスエレメントに基づいてNを決定することを含む、請求項1から
5のいずれか一項に記載の方法。
【請求項7】
Nを決定することが、
前記
ビデオビットストリーム中に含まれるビデオパラメータセット(VPS)中に含まれるシンタックスエレメントに基づいてNを決定すること、または
前記
ビデオビットストリーム中に含まれるシーケンスパラメータセット(SPS)中に含まれるシンタックスエレメントに基づいてNを決定すること
を含む、請求項1から
6のいずれか一項に記載の方法。
【請求項8】
Nを決定することが、プロファイル、ティアおよびレベル(PTL)構造のための最大時間IDを指定するシンタックスエレメント、またはサブレイヤの最大数を決定するために使用されるシンタックスエレメントに基づく、請求項
6または7に記載の方法。
【請求項9】
前記最も高いレイヤ表現のための値を決定することが、前記
ビデオビットストリーム中に含まれるパラメータセット中に含まれるシンタックスエレメントから、前記最も高いレイヤ表現のための前記値を導出することを含む、請求項1から
8のいずれか一項に記載の方法。
【請求項10】
前記パラメータセットが、シーケンスパラメータセットまたはビデオパラメータセットである、請求項
9に記載の方法。
【請求項11】
各レイヤ表現のための各値がレベル値である、請求項1から
10のいずれか一項に記載の方法。
【請求項12】
レイヤ表現が時間サブレイヤ表現である、請求項1から
11のいずれか一項に記載の方法。
【請求項13】
前記最も高いレイヤ表現に関連する第1の変数を前記最も高いレイヤ表現のために決定された前記値に等しくセットすること(s710)と、
前記2番目に高いレイヤ表現に関連する第2の変数を前記2番目に高いレイヤ表現のために決定された前記値に等しくセットすること(s712)と、
前記3番目に高いレイヤ表現に関連する第3の変数を前記3番目に高いレイヤ表現のために決定された前記値に等しくセットすること(s714)と
をさらに含む、請求項1から
12のいずれか一項に記載の方法。
【請求項14】
処理回路(802)によって実行されたとき、前記処理回路(802)に、請求項1から
13のいずれか一項に記載の方法を実施させる命令(844)を備える、コンピュータプログラム(843)。
【請求項15】
請求項
14に記載のコンピュータプログラムを含んでい
るコンピュータ可読記憶媒体(842)。
【請求項16】
請求項1から
13のいずれか一項に記載の方法を実施するように適応された、装置(800)。
【発明の詳細な説明】
【技術分野】
【0001】
ビデオビットストリーム中の各レイヤ表現のための値(たとえば、レベル値)を決定することに関する実施形態が開示される。
【背景技術】
【0002】
1.HEVCおよびVVC
【0003】
高効率ビデオコーディング(HEVC)は、時間予測と空間予測の両方を利用する、ITU-TおよびMPEGによって規格化されたブロックベースビデオコーデックである。空間予測は、現在ピクチャ内からのイントラ(I)予測を使用して達成される。時間予測は、前に復号された参照ピクチャから、ブロックレベルでの単方向(P)予測または双方向インター(B)予測を使用して達成される。エンコーダでは、残差と呼ばれる、元のピクセルデータと予測されたピクセルデータとの間の差は、周波数ドメインに変換され、量子化され、次いで、同じくエントロピーコーディングされる、予測モードおよび動きベクトルなど、必要な予測パラメータとともに送信される前に、エントロピーコーディングされる。デコーダは、エントロピー復号と、逆量子化と、逆方向変換とを実施して残差を取得し、次いで、その残差をイントラ予測またはインター予測に追加してピクチャを再構築する。
【0004】
MPEGおよびITU-Tは、ジョイントビデオエキスプロラトリチーム(JVET:Joint Video Exploratory Team)内でHEVCの後継に取り組んでいる。開発中のこのビデオコーデックの名前は、多用途ビデオコーディング(VVC)である。本文を書いているときのVVCドラフト仕様の現在のバージョンは、JVET-Q2001-vDである。
【0005】
2.成分
【0006】
ビデオ(別名、ビデオシーケンス)は、各ピクチャ(別名、画像)が1つまたは複数の成分からなる一連のピクチャからなる。各成分は、サンプル値の2次元矩形アレイとして説明され得る。ビデオシーケンス中のピクチャは、3つの成分、すなわち、サンプル値がルーマ値である1つのルーマ成分Yと、サンプル値がクロマ値である2つのクロマ成分CbおよびCrとからなることが一般的である。また、クロマ成分の次元は、各次元においてルーマ成分よりも1/2だけ小さいことが一般的である。たとえば、HDピクチャのルーマ成分のサイズは1920×1080となり、クロマ成分は、各々、960×540の次元を有するであろう。成分は色成分と呼ばれることがある。
【0007】
3.ブロックおよびユニット
【0008】
ブロックは、サンプルの1つの2次元アレイである。ビデオコーディングでは、各成分がブロックにスプリットされ、コード化ビデオビットストリームは一連のコード化ブロックからなる。ビデオコーディングでは、画像は、画像の特定のエリアをカバーするユニットにスプリットされることが一般的である。各ユニットは、その特定のエリアをなす、すべての成分からのすべてのブロックからなり、各ブロックは、1つのユニットに完全に属する。H.264におけるマクロブロック、およびHEVCにおけるコーディングユニット(CU)が、ユニットの例である。
【0009】
ブロックは、代替的に、コーディングにおいて使用される変換が適用される2次元アレイとして規定され得る。これらのブロックは、「変換ブロック」という名前で知られている。代替的に、ブロックは、単一の予測モードが適用される2次元アレイとして規定され得る。これらのブロックは「予測ブロック」と呼ばれることがある。本出願では、ブロックという単語は、これらの規定のうちの1つに結び付けられないが、本明細書における説明は、いずれかの規定に適用され得る。
【0010】
4.残差、変換、および量子化
【0011】
残差ブロックは、元のソースブロックのサンプル値と予測ブロックのサンプル値との間のサンプル値差を表すサンプルからなる。残差ブロックは、空間変換を使用して処理される。エンコーダでは、量子化係数の精度を制御する量子化パラメータ(QP)に従って、変換係数が量子化される。量子化係数は残差係数と呼ばれることがある。QP値が高いと、低い精度の係数、したがって低い忠実度の残差ブロックを生じることになる。デコーダは、残差係数を受信し、残差ブロックを導出するために逆量子化および逆方向変換を適用する。
【0012】
5.NALユニット
【0013】
HEVCとVVCの両方が、ネットワークアブストラクションレイヤ(NAL)を規定する。HEVCおよびVVCにおけるすべてのデータ、すなわち、ビデオコーディングレイヤ(VCL)データまたは非VCLデータの両方が、NALユニット中にカプセル化される。VCL NALユニットは、ピクチャサンプル値を表すデータを含んでいる。非VCL NALユニットは、パラメータセットおよび補足エンハンスメント情報(SEI:supplemental enhancement information)メッセージなど、追加の関連するデータを含んでいる。HEVCにおけるNALユニットは、どんなタイプのデータがNALユニット中で搬送されるかを識別するNALユニットのNALユニットタイプ、NALユニットが属するレイヤIDおよび時間IDを指定するヘッダで始まる。NALユニットタイプは、NALユニットヘッダ中のnal_unit_typeコードワード中で送信され、そのタイプは、NALユニットがどのようにパースおよび復号されるべきであるかを示し、規定する。NALユニットのバイトの残りは、NALユニットタイプによって示されるタイプのペイロードである。ビットストリームは、一連の連結されたNALユニットからなる。
【0014】
HEVCについてのNALユニットヘッダについてのシンタックスが表1に示されている。
【0015】
【0016】
VVCドラフトの現在のバージョンにおけるNALユニットヘッダについてのシンタックスが表2に示されている。
【0017】
現在のVVCドラフトのNALユニットタイプが表3に示されている。
【0018】
復号順序は、ビットストリーム内のNALユニットの順序と同じである、NALユニットが復号されるものとする順序である。復号順序は出力順序とは異なり得、出力順序は、復号されたピクチャがデコーダによって表示などのために出力されるべきである順序である。
【0019】
6.パラメータセット
【0020】
HEVCは、3つのタイプのパラメータセット、すなわち、ピクチャパラメータセット(PPS)と、シーケンスパラメータセット(SPS)と、ビデオパラメータセット(VPS)とを指定する。PPSは、ピクチャ全体について共通であるデータを含んでおり、SPSは、コード化ビデオシーケンス(CVS)について共通であるデータを含んでおり、VPSは、複数のCVSについて共通であるデータを含んでいる。
【0021】
VVCの現在のバージョンは、1つの追加のパラメータセット、すなわち、適応パラメータセット(APS)をも指定する。APSは、複数のスライスのために使用され得る情報を含んでいることがあり、同じピクチャの2つのスライスが、異なるものを使用することができる。APSは、適応ループフィルタ(ALF)ツールと、ルーママッピングおよびクロマスケーリング(LMCS:luma mapping and chroma scaling)ツールとのために必要とされるパラメータを搬送する。
【0022】
7.復号能力情報(DCI)
【0023】
DCIは、復号セッション中に変化しないことがあり、デコーダが知るのに良好であり得る、情報、たとえば許容されるサブレイヤの最大数を指定する。DCI中の情報は、復号プロセスの動作のために必要でない。VVC仕様の前のドラフトでは、DCIは、復号パラメータセット(DPS)と呼ばれた。
【0024】
復号能力情報は、コーディングツール、NALユニットのタイプなどに関してビットストリームから何を予想すべきかのデコーダ情報を与えるビットストリームについての一般的な制約のセットをも含んでいる。VVCの現在のバージョンでは、一般的な制約情報はまた、VPSまたはSPS中でシグナリングされ得る。
【0025】
8.プロファイル、ティアおよびレベル
【0026】
VVCでは、ビットストリームについてのプロファイル、ティアおよびレベル情報は、ビットストリーム自体中でシグナリングされる。マルチレイヤビットストリームでは、情報はVPS中でシグナリングされ、シングルレイヤビットストリームでは、情報はSPS中でシグナリングされる。SPSシグナリングについてのシンタックスが、表4および表5に示されている。
【0027】
VVCの現在のバージョンにおいてgeneral_level_idcおよびsublayer_level_idc[i]のセマンティクスは以下の通りであり、ここで、OlsInScopeは、ビットストリームの範囲内の出力レイヤのセットである。
【0028】
general_level_idcは、アネックスAにおいて指定されているように、OlsInScopeが適合するレベルを示す。ビットストリームは、アネックスAにおいて指定されたもの以外のgeneral_level_idcの値を含んでいないものとする。general_level_idcの他の値は、ITU-T|ISO/IECによる将来の使用のために予約される。注1 - general_level_idcのより大きい値は、より高いレベルを示す。OlsInScopeについてDCI NALユニット中でシグナリングされる最大レベルは、OlsInScope内に含まれているCLVSのためにSPS中でシグナリングされるレベルよりも高くなり得るが、それよりも低くなり得ない。注2 - OlsInScopeが複数のプロファイルに適合するとき、general_profile_idcは、(本明細書において指定されていない様式で)エンコーダによって決定された、好ましい復号された結果または好ましいビットストリーム識別を提供する、プロファイルを示すべきである。注3 - OlsInScopeのCVSが異なるプロファイルに適合するとき、OlsInScopeの各CVSについて、CVSを復号することが可能であるデコーダのための示されたプロファイル、ティアおよびレベルの少なくとも1つのセットがあるように、複数のprofile_tier_level()シンタックス構造がDCI NALユニット中に含まれ得る。
【0029】
シンタックスエレメントsublayer_level_idc[i]のセマンティクスは、存在しない値の推論の仕様は別として、シンタックスエレメントgeneral_level_idcと同じであるが、iに等しいTemporalIdをもつサブレイヤ表現に適用される。
【0030】
存在しないとき、sublayer_level_idc[i]の値は以下のように推論される。a)sublayer_level_idc[maxNumSubLayersMinus1]は、同じprofile_tier_level()構造のgeneral_level_idcに等しいと推論される、および、b)(iの値の降順で)両端値を含む、maxNumSubLayersMinus1-1から0までのiについて、sublayer_level_idc[i]は、sublayer_level_idc[i+1]に等しいと推論される。
【0031】
VVC復号プロセスでは、デコーダは、コード化ビデオビットストリームから(maxNumSubLayersMinus1+1)個のレベル値を導出する。profile_tier_level()がSPS中に存在するとき、レベル値の数は、sps_max_sublayers_minus1シンタックスエレメントから復号される。各レベル値は、i番目のレイヤ表現のためのレベル値を指定し、ここで、i=0が最も低いレイヤ表現であり、i=maxNumSubLayersMinus1が最も高いレイヤ表現である。レベル値は、VVCでは、sublayer_level_idc[i]と呼ばれ、ここで、インデックス変数iは、両端値を含む、{0,1,...,maxNumSubLayersMinus1}の範囲内の値を有することができる。maxNumSubLayersMinus1は、0に等しいかまたはそれよりも大きくなければならない。
【発明の概要】
【0032】
セマンティクスからわかるように、VVC中のsublayer_level_idc[i]の値は以下のように導出される。a)iがmaxNumSubLayersMinus1に等しいとき、sublayer_level_idc[i]の値は、general_level_idcに等しくセットされる、および、b)iがmaxNumSubLayersMinus1よりも小さいとき、sublayer_level_idc[i]がビットストリーム中でシグナリングされる場合、sublayer_level_idc[i]の値は、コード化ビットストリームを復号することから導出され、他の場合(すなわち、sublayer_level_idc[i]シンタックスエレメントが、ビットストリーム中に存在しない場合)、sublayer_level_idc[i]の値は、sublayer_level_idc[i+1]の値に等しくセットされる。
【0033】
現在、いくつかの課題が存在する。たとえば、VVCの現在のバージョンでは、maxNumSubLayersMinus1の値が、2に等しいかまたはそれよりも大きいとき、デコーダは、以下のようにレベル値をセットするためにアレイsublayer_level_idc[i]を2回走査することを必要とされる。
【0034】
A)インデックスiの昇順で行われる(すなわち、iが、0において開始し、maxNumSubLayersMinus1-1において終了する)第1の走査では、iの各値について、sublayer_level_idc[i]がビットストリーム中でシグナリングされるか否かを決定し、sublayer_level_idc[i]がビットストリーム中でシグナリングされると決定されたとき、対応するシンタックスエレメントを復号し、sublayer_level_idc[i]を、復号されたシンタックスエレメントの値にセットする、および、
【0035】
B)インデックスiの降順で行われる(すなわち、iが、maxNumSubLayersMinus1-1において開始し、0において終了する)第2の走査では、iの各値について、sublayer_level_idc[i]がビットストリーム中でシグナリングされるか否かを決定し、sublayer_level_idc[i]がビットストリーム中でシグナリングされないと決定されたとき、sublayer_level_idc[i]の値をsublayer_level_idc[i+1]に等しくセットする。
【0036】
2つの走査が必要である理由は、sublayer_level_idc[i]のパース/復号がインデックスiの昇順であるが、sublayer_level_idc[i]の推論がインデックスiの降順であるためである。
【0037】
本開示は、sublayer_level_idc[i]のパース/復号をインデックスiの降順で行われるように修正することによって、sublayer_level_idc[i]アレイの値が、単一の走査を使用してセットされ、したがって、sublayer_level_idc[i]がビットストリーム中でシグナリングされないとき、0からmaxNumSubLayersMinus1-1の範囲内の任意のiについて、sublayer_level_idc[i+1]の値が、すでに、ビットストリームから復号されたかまたは推論された値にセットされたかのいずれかであるので、使用すべき推論された値がすでに利用可能である、方法を提供することによってソリューションを提供する。
【0038】
本開示の第1の態様によれば、ビットストリームを処理するための方法が提供される。本方法は、値Nを決定することを含み、Nは順序付きレイヤ表現(ordered layer representation)の数を識別し、Nは、N個の順序付きレイヤ表現が、最も高いレイヤ表現と、2番目に高いレイヤ表現と、3番目に高いレイヤ表現とを備えるように、3よりも大きいかまたはそれに等しい。本方法は、最も高いレイヤ表現のための値を決定することをさらに含む。本方法は、最も高いレイヤ表現のための値を決定することの後におよび3番目に高いレイヤ表現のための値を決定することの前に、2番目に高いレイヤ表現のための値を決定することを含む。本方法は、2番目に高いレイヤ表現のための値を決定することの後に、3番目に高いレイヤ表現のための値を決定することを含む。
【0039】
本開示の第2の態様によれば、処理回路によって実行されたとき、処理回路に、第1の態様による方法を実施させる命令を備えるコンピュータプログラムが提供される。
【0040】
本実施形態の第3の態様によれば、第2の態様によるコンピュータプログラムを備えるキャリアが提供され、キャリアは、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体のうちの1つである。
【0041】
本開示の第4の態様によれば、装置が提供され、装置は、第1の態様による方法を実施するように適応される。
【0042】
態様のうちの少なくとも1つは、復号の複雑さを低減する利点を提供する。すなわち、本開示において提案される修正は、ビットストリーム中の値の順序が現在のVVCドラフト仕様と比較して逆順であることを保証する。単一のパスにおいてsublayer_level_idc[i]アレイの値をセットすることによって、復号の複雑さは著しく低減される。
【0043】
本明細書に組み込まれ、明細書の一部をなす添付の図面は、様々な実施形態を示している。
【図面の簡単な説明】
【0044】
【
図1】例示的な一実施形態による、システムを示す図である。
【
図2】一実施形態による、エンコーダの概略ブロック図である。
【
図3】一実施形態による、デコーダの概略ブロック図である。
【
図4】一実施形態による、プロセスを示すフローチャートである。
【
図5】一実施形態による、プロセスを示すフローチャートである。
【
図6】一実施形態による、プロセスを示すフローチャートである。
【
図7】一実施形態による、プロセスを示すフローチャートである。
【
図8】一実施形態による、装置のブロック図である。
【発明を実施するための形態】
【0045】
図1は、例示的な一実施形態による、システム100を示す。システム100は、ネットワーク110(たとえば、インターネットまたは他のネットワーク)を介してデコーダ104と通信しているエンコーダ102を含む。
【0046】
図2は、一実施形態による、ビデオシーケンスのビデオフレーム(ピクチャ)中のピクセル値のブロック(以下「ブロック」)を符号化するためのエンコーダ102の概略ブロック図である。同じフレーム中のまたは前のフレーム中のすでに提供されたブロックから、動き推定器250によって動き推定を実施することによって、現在ブロックが予測される。動き推定の結果は、インター予測の場合、参照ブロックに関連する動きベクトルまたは変位ベクトルである。動きベクトルは、ブロックのインター予測を出力するために動き補償器250によって利用される。イントラ予測器249が、現在ブロックのイントラ予測を算出する。動き推定器/補償器250からの出力と、イントラ予測器249からの出力とは、現在ブロックについてイントラ予測またはインター予測のいずれかを選択するセレクタ251中に入力される。セレクタ251からの出力は、加算器241の形態の誤差計算器に入力され、加算器241は、現在ブロックのピクセル値をも受信する。加算器241は、ブロックとそのブロックの予測との間のピクセル値の差として残差誤差を計算および出力する。誤差は、離散コサイン変換などによって、変換器242中で変換され、量子化器243によって量子化され、その後、エントロピーエンコーダなどによるエンコーダ244におけるコーディングが続く。インターコーディングでは、推定された動きベクトルも、現在ブロックのコード化表現を生成するためにエンコーダ244にもたらされる。また、現在ブロックのための変換および量子化された残差誤差は、元の残差誤差を取り出すために、逆量子化器245と逆方向変換器246とに提供される。この誤差は、次のブロックの予測およびコーディングにおいて使用され得る参照ブロックを作成するために、動き補償器250またはイントラ予測器249から出力されたブロック予測に加算器247によって加算される。この新しい参照ブロックは、任意のブロッキングアーティファクトをなくすためにデブロッキングフィルタ処理を実施するために、実施形態に従って、デブロッキングフィルタユニット230によって最初に処理される。次いで、処理された新しい参照ブロックは、フレームバッファ248に一時的に記憶され、ここで、処理された新しい参照ブロックは、イントラ予測器249および動き推定器/補償器250にとって利用可能である。
【0047】
図3は、いくつかの実施形態による、デコーダ104の対応する概略ブロック図である。デコーダ104は、量子化および変換された残差誤差のセットを得るためにブロックの符号化表現を復号するための、エントロピーデコーダなどのデコーダ361を備える。これらの残差誤差は、逆量子化器362において量子化解除され、逆方向変換器363によって逆方向変換されて、残差誤差のセットを得る。これらの残差誤差は、加算器364において参照ブロックのピクセル値に加算される。参照ブロックは、インター予測が実施されるのかイントラ予測が実施されるのかに応じて、動き推定器/補償器367またはイントラ予測器366によって決定される。それにより、セレクタ368が加算器364と動き推定器/補償器367とイントラ予測器366とに相互接続される。加算器364から出力された得られた復号されたブロックは、任意のブロッキングアーティファクトをデブロッキングフィルタ処理するために、実施形態によるデブロッキングフィルタユニット230に入力される。フィルタ処理されたブロックは、デコーダ504から出力され、さらに、好ましくは、フレームバッファ365に一時的に提供され、復号されるべき後続のブロックのための参照ブロックとして使用され得る。フレームバッファ365は、それにより、動き推定器/補償器367に接続されて、ピクセルの記憶されたブロックを動き推定器/補償器367にとって利用可能にする。加算器364からの出力はまた、好ましくは、イントラ予測器366に入力されて、フィルタ処理されていない参照ブロックとして使用される。
【0048】
実施形態
【0049】
以下の説明では、上記で説明された問題のうちの1つまたは複数を解決する様々な実施形態が説明される。2つまたはそれ以上の実施形態、または実施形態の一部が組み合わせられて、依然として本開示によってカバーされる新しいソリューションを形成し得ることが、当業者によって理解されるべきである。
【0050】
以下の実施形態では、N個のエレメントを有するアレイX[i]を仮定すれば、走査の昇順(increasing scan order)は、X[i]における各エレメントを通る、0に等しいiで開始し、(N-1)に等しいiで終了するループとして規定され、走査の降順(decreasing scan order)は、X[i]における各エレメントを通る、(N-1)に等しいiで開始し、0に等しいiで終了するループとして規定される。
【0051】
図4は、一実施形態による、コード化ビデオビットストリームからN個の対応するレイヤ表現のための少なくともN個の値(たとえば、N個のレベル値)を導出するためのプロセス400を示すフローチャートである。デコーダ104は、プロセス400のステップの一部または全部を実施し得る。プロセス400は、ステップs402において始まり得る。一実施形態では、N個のレイヤ表現の各々は時間サブレイヤ表現であり、(以下で説明される)変数iは時間サブレイヤID(TemporalId)を表し得る。
【0052】
ステップs402は、値Nを導出することを含み、値Nは、コード化ビデオビットストリーム中に存在するレイヤ表現の数を表し、値Nは、コード化ビデオビットストリーム中のシンタックスエレメントSYN1から導出される。値Nは、ここで、2よりも大きい値であり得る。
【0053】
ステップs402の後に、i=0~N-1についてのN個の値L[i]が導出され、各値L[i]は、コード化ビデオビットストリーム中のi番目のレイヤ表現に対応し、各値L[i]は、i番目のレイヤ表現のためのレベルを指定し、さらに、値L[i]は、最も高いレイヤ表現(たとえば、N-1に等しいi)から最も低いレイヤ表現(たとえば、0に等しいi)まで、走査の降順で導出される(ステップs404~ステップs412参照)。
【0054】
ステップs404において、L[N-1]の値は、(「G」と示された)特定の値に等しくセットされる(ステップs404)。ステップs404の後に、ステップs405およびs406が実施され、ここで、ステップs405において、iはN-2に等しくセットされ、ステップs406において、iが0よりも大きいかまたはそれに等しいかどうかが決定される。iが0よりも大きいかまたはそれに等しい場合、プロセスはステップs407に進み、他の場合、プロセスは終了する。ステップs407は、i番目のレイヤ表現のためのシンタックスエレメントSYN[i]がコード化ビデオビットストリーム中に存在するか否かを決定することを含む。
【0055】
対応するシンタックスエレメントSYN[i]が、コード化ビデオビットストリーム中に存在すると決定された場合、ステップs408が実施され、他の場合、ステップs410が実施される。ステップs408は、対応するSYN[i]シンタックスエレメントを復号することによってL[i]の値を導出することを含み、シンタックスエレメントSYN[i]は、i番目のレイヤ表現のためのレベル値L[i]を表す(たとえば、L[i]は、SYN[i]に等しくセットされる)。ステップs410は、L[i]の値をL[i+1]の値に等しくセットすることを含む。この実施形態の代替バージョンでは、ステップs410は、L[i]をL[i+1]に等しくセットするのではなく、L[i]がL[j]に等しくセットされるように修正され、ここで、j>iおよびj<Nである。ステップs412は、iを減分することを含む。ステップs412が実施された後に、プロセスはステップs406に戻る。
【0056】
一実施形態では、特定の値(すなわち、上記でGと示された)は、コード化ビデオビットストリーム中の(SYN2と示された)シンタックスエレメントから導出され、値Gは、一般的なレベル値である。シンタックスエレメントSYN2は、名前general_level_idcをもつシンタックスエレメントであり得る。シンタックスエレメントは、コード化ビデオビットストリーム中のSPSおよび/またはVPS中に存在し得る。
【0057】
一実施形態では、プロセス400は、コード化ビデオビットストリーム中の(N-1)個のシンタックスエレメントから値V[i](i=0~i=(N-1))の順序付きセットを導出することをさらに含み、各値V[i]は、コード化ビデオビットストリーム中のi番目のレイヤ表現に対応し、各値V[i]は、コード化ビデオビットストリーム中に存在する、i番目のレイヤ表現のためのシンタックスエレメントSYN[i]があるか否かを示す。この実施形態では、ステップs407において、i番目のレイヤ表現のためのシンタックスエレメントSYN[i]が、コード化ビデオビットストリーム中に存在するか否かを決定することは、対応する値V[i]の値を決定することを含む。一実施形態では、(N-1)個のシンタックスエレメントの各々は、1ビットフラグである。ビットストリーム中で、シンタックスエレメントの順序は、すべてのV[i]シンタックスエレメントが任意のSYN[i]シンタックスエレメントに先行する(すなわち、その前に来る)ようなものであり得る。SYN[i]シンタックスエレメントの順序は、mがnよりも大きいとき、SYN[m]がビットストリーム中でSYN[n]に先行するようなものでなければならない。すなわち、SYN[i]シンタックスエレメントは、ビットストリーム中で、iの降順で順序付けられる。シンタックスエレメントV[i]は、ビットストリーム中で、iの昇順または降順で順序付けられ得る。
【0058】
図5は、別の実施形態による、コード化ビデオビットストリームからN個の対応するレイヤ表現(たとえば、N個の対応する時間サブレイヤ表現)のための少なくともN個のレベル値(i=0~i=N-1についてのL[i])を導出するためのプロセス500を示すフローチャートである。デコーダ104は、プロセス500のステップの一部または全部を実施し得る。プロセス500は、ステップs502において始まり得る。
【0059】
ステップs502は、ビットストリームからシンタックスエレメントS1を復号し、S1からビットストリーム中に存在するレイヤ表現の数Nを導出することを含む(たとえば、S1は、vps_ptl_max_temporal_id[i]またはsps_max_sublayers_minus1であり得る)。
【0060】
ステップs504は、ビットストリームからシンタックスエレメントS2を復号し、復号されたS2値から一般的なレベル値Gを導出することを含む。
【0061】
ステップs506は、L[N-1]をGにセットすることを含む。
【0062】
Nが1に等しい場合、プロセス500は完了され、他の場合、プロセス500はステップs510に進み、ここで、変数iは0にセットされる。ステップs510の後に、ステップs512、s514、およびs516は、iがN-1に達するまで実施される。
【0063】
ステップs512において、レイヤ表現iについて、シンタックスエレメントS3が、ビットストリームから復号され、値V[i]が、復号された値から導出され、ここで、V[i]は、シンタックスエレメントS4が、それぞれのレイヤ表現のためのレベル値を表すかどうか(すなわち、i番目のレイヤ表現が、ビットストリーム中に存在するか否か)を決定する。ステップs514は、iを1だけ増分することを含む(すなわち、i=i1)。ステップs516は、i=N-1であるかどうかを決定することを含む。i=N-1である場合、プロセス500はステップs518に進み、他の場合、プロセス500はステップs512に戻る。
図5に示されているように、この実施形態では、シンタックスエレメントS3のデコーダ順序およびV[i]値の導出は、最も低いレイヤ表現(たとえばi=0)から2番目に高いレイヤ表現(たとえばi=N-2)まで昇順で行われる。
【0064】
V[i]値のすべてが取得されると、レイヤ表現(たとえばレイヤ表現=i)の各々のためのレベル値L[i]は、最も高いレイヤ表現(すなわち、i=N-1)から最も低いレイヤ表現(すなわち、i=0)までの単一のパスによって導出される。すなわち、ステップs518~s528が実施される。
【0065】
ステップs518は、i=N-2をセットすることを含む。
【0066】
ステップs520は、対応するシンタックスエレメントS3の値が、対応するシンタックスエレメントS4がビットストリーム中に存在することを指定するかどうかを決定することを含む。(
図5に示されている)一実施形態では、これは、V[i]が1に等しいか否かを決定することを含む。この実施形態では、V[i]が1に等しい場合、対応するシンタックスエレメントS4はビットストリーム中に存在し、プロセス500はステップs522に進み、他の場合、対応するシンタックスエレメントS4はビットストリーム中に存在せず、プロセス500はステップs524に進む。
【0067】
ステップs522は、対応するS4シンタックスエレメントを復号し、S4からレイヤ表現のためのレベル値L[i]を導出すること(たとえば、L[i]を、復号された対応するS4シンタックスエレメントに等しくセットすること)を含む。
【0068】
ステップs524は、レイヤ表現のためのレベル値L[i]を最も近い、より高いレイヤ表現のためのレベル値に等しくセットすること(たとえば、L[i]をL[i+1]に等しくセットすること)を含む。
【0069】
ステップs526は、i=i-1をセットすることを含む。また、ステップs528は、iが0よりも大きいかまたはそれに等しいかどうかを決定することを含む。iが0よりも大きくないかまたはそれに等しくない場合、プロセス500は完了し、他の場合、プロセス500はステップs520に戻る。
【0070】
レイヤ表現の数(たとえばi)は、時間サブレイヤ表現の数であり得、レベル値L[i]は、時間サブレイヤレベル値であり得る。
【0071】
いくつかの実施形態では、プロセス500のステップのうちの1つまたは複数(たとえば、ステップs510~s528)は、デコーダ104がシンタックス構造profile_tier_level()を復号しているとき、デコーダ104によって実施される。復号ステップにおける一定値とシンタックステーブルとの名前は、表6において以下のようにシンタックス構造における名前にマッピングされ得る。
【0072】
一実施形態では、profile_tier_level()は、表7において以下のように規定される。
【0073】
表7を表5と比較すると、表7の行16が表5の行16とは異なる1つの事例がわかる。詳細には、表7の行16では、変数iは(maxNumSubLayersMinus1-1)に初期化され、次いで、変数iが-1に達するまで減分されるが、表5の行16では、変数iは0に初期化され、次いで、変数iがmaxNumSubLayersMinus1に達するまで増分される。したがって、sublayer_level_present_flag[i]とsublayer_level_present_flag[i-1]とが両方とも1にセットされる(すなわち、ビットストリームが、sublayer_level_idc[i]とsublayer_level_idc[i-1]の両方を含んでいる)と仮定すると、シンタックスエレメントsublayer_level_idc[i]は、ビットストリーム中でシンタックスエレメントsublayer_level_idc[i-1]に先行する。
【0074】
表7に示されているこの実施形態では、sublayer_level_idc[i]のセマンティクスは、以下の通りである。
【0075】
sublayer_level_idc[i]は、iに等しいTemporalIdをもつサブレイヤ表現のためのレベルを示す。存在しないとき、sublayer_level_idc[i]の値は以下のように推論される。sublayer_level_idc[maxNumSubLayersMinus1]は、同じprofile_tier_level()構造のgeneral_level_idcに等しいと推論される、および、(iの値の降順で)両端値を含む、maxNumSubLayersMinus1-1から0までのiについて、sublayer_level_idc[i]は、sublayer_level_idc[i+1]に等しいと推論される。
【0076】
別の実施形態では、profile_tier_level()は、表8において以下のように規定される。
【0077】
表8に示されているこの実施形態では、(上記のシンタックステーブルにおいて「i」で示された)ループインデックス変数は、0から開始し、最も高い値において終了し、すなわち昇順である。しかしながら、sublayer_level_present_flag[]値の検査とsublayer_level_idc[]シンタックスエレメントのパースとは、インデックスの降順で行われる。したがって、この実施形態は、上記で開示された実施形態と等価であるが、代替のやり方で表現される。
【0078】
別の実施形態では、例示的なシンタックステーブルは、VVCの現在のバージョンと比較して同じ(または変更なし)である。S1は、復号ステップにおける1つのシンタックスエレメントである。例示的なシンタックステーブルでは、S1は、それぞれ、VPSおよびSPS中でvps_ptl_max_temoral_id[i]またはsps_max_sublayers_minus1である。値Nは、シンタックスエレメントS1の復号された値+1に等しい。
【0079】
S1は、VPS中でvps_ptl_max_temporal_id[i]である
【0080】
S1は、SPS中でsps_max_sublayers_minus1である
【0081】
図6は、別の実施形態による、コード化ビデオビットストリームからN個の対応するレイヤ表現(たとえば、N個の対応する時間サブレイヤ表現)のための少なくともN個のレベル値を導出するためのプロセス600を示すフローチャートである。プロセス600は、プロセス500と同様であるが、2つのループではなく単一のループを使用する。プロセス600は、ステップs602において始まり得る。
【0082】
ステップs602は、ビットストリームからシンタックスエレメントS1を復号し、S1からビットストリーム中に存在するレイヤ表現の数Nを導出することを含む(たとえば、S1は、vps_ptl_max_temporal_id[i]またはsps_max_sublayers_minus1であり得る)。
【0083】
ステップs604は、ビットストリームからシンタックスエレメントS2を復号し、復号されたS2値から一般的なレベル値Gを導出することを含む。
【0084】
ステップs606は、L[N-1]をGにセットすることを含む。
【0085】
Nが1に等しい場合、プロセス600は完了され、他の場合、プロセス600はステップs610に進む。
【0086】
ステップs610は、変数iをN-2にセットすることを含む。ステップs610の後に、ステップs612~ステップs622は、iが-1に達するまで実施される。
【0087】
ステップs612において、レイヤ表現iについて、シンタックスエレメントS3が、ビットストリームから復号され、値V[i]が、復号された値から導出され、ここで、V[i]は、シンタックスエレメントS4が、それぞれのレイヤ表現のためのレベル値を表すかどうか(すなわち、i番目のレイヤ表現が、ビットストリーム中に存在するか否か)を決定する。
【0088】
ステップs614は、対応するシンタックスエレメントS3の値が、対応するシンタックスエレメントS4がビットストリーム中に存在することを指定するかどうかを決定することを含む。(
図6に示されている)一実施形態では、これは、V[i]が1に等しいか否かを決定することを含む。この実施形態では、V[i]が1に等しい場合、対応するシンタックスエレメントS4はビットストリーム中に存在し、プロセス600はステップs616に進み、他の場合、対応するシンタックスエレメントS4はビットストリーム中に存在せず、プロセス600はステップs618に進む。
【0089】
ステップs616は、対応するS4シンタックスエレメントを復号し、S4からレイヤ表現のためのレベル値L[i]を導出すること(たとえば、L[i]を、復号された対応するS4シンタックスエレメントに等しくセットすること)を含む。
【0090】
ステップs618は、レイヤ表現のためのレベル値L[i]を最も近い、より高いレイヤ表現のためのレベル値に等しくセットすること(たとえば、L[i]をL[i+1]に等しくセットすること)を含む。
【0091】
ステップs620は、i=i-1をセットすることを含む。また、ステップs622は、iが-1に等しいかどうかを決定することを含む。iが-1に等しい場合、プロセス600は完了し、他の場合、プロセス600はステップs612に戻る。
【0092】
この実施形態では、profile_tier_level()は、表9において以下のように規定される。
【0093】
表9が示すように、表5に示されている2つの「For」ループは、単一の「For」ループによって置き換えられる。
【0094】
図8は、いくつかの実施形態による、デコーダ104および/またはエンコーダ102を実装するための装置800のブロック図である。装置800がデコーダを実装するとき、装置800は「復号装置800」と呼ばれることがあり、装置800がエンコーダを実装するとき、装置800は「エンコーディング装置800」と呼ばれることがある。
図8に示されているように、装置800は、1つまたは複数のプロセッサ(P)855(たとえば、汎用マイクロプロセッサ、および/または、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、1つまたは複数の他のプロセッサなど)を含み得る処理回路(PC)802であって、そのプロセッサが、単一のハウジングにおいてまたは単一のデータセンタにおいて共同サイト式であり得るかあるいは地理的に分散され得る(すなわち、装置800が分散コンピューティング装置であり得る)、処理回路(PC)802と、少なくとも1つのネットワークインターフェース848であって、装置800が、ネットワークインターフェース848が(直接または間接的に)接続されるネットワーク110(たとえば、インターネットプロトコル(IP)ネットワーク)に接続された他のノードにデータを送信し、他のノードからデータを受信することを可能にするための送信機(Tx)845および受信機(Rx)847を備える(たとえば、ネットワークインターフェース848はネットワーク110に無線で接続され得、その場合、ネットワークインターフェース848はアンテナ構成に接続される)、少なくとも1つのネットワークインターフェース848と、1つまたは複数の不揮発性記憶デバイスおよび/または1つまたは複数の揮発性記憶デバイスを含み得る記憶ユニット(別名「データ記憶システム」)808とを備え得る。PC802がプログラマブルプロセッサを含む実施形態では、コンピュータプログラム製品(CPP)841が提供され得る。CPP841はコンピュータ可読媒体(CRM)842を含み、CRM842は、コンピュータ可読命令(CRI)844を備えるコンピュータプログラム(CP)843を記憶する。CRM842は、磁気媒体(たとえば、ハードディスク)、光媒体、メモリデバイス(たとえば、ランダムアクセスメモリ、フラッシュメモリ)など、非一時的コンピュータ可読媒体であり得る。いくつかの実施形態では、コンピュータプログラム843のCRI844は、PC802によって実行されたとき、CRIが、装置800に、本明細書で説明されるステップ(たとえば、フローチャートを参照しながら本明細書で説明されるステップ)を実施させるように設定される。他の実施形態では、装置800は、コードの必要なしに本明細書で説明されるステップを実施するように設定され得る。すなわち、たとえば、PC802は、単に1つまたは複数のASICからなり得る。したがって、本明細書で説明される実施形態の特徴は、ハードウェアおよび/またはソフトウェアで実装され得る。
【0095】
様々な実施形態が本明細書で説明されたが、それらの実施形態は、限定ではなく、例として提示されたにすぎないことを理解されたい。したがって、本開示の広さおよび範囲は、上記で説明された例示的な実施形態のいずれによっても限定されるべきでない。その上、本明細書で別段に示されていない限り、またはコンテキストによって明確に否定されていない限り、上記で説明されたエレメントのそれらのすべての考えられる変形形態における任意の組合せが、本開示によって包含される。
【0096】
さらに、上記で説明され、図面に示されたプロセスは、ステップのシーケンスとして示されたが、これは、説明のためにのみ行われた。したがって、いくつかのステップが追加され得、いくつかのステップが省略され得、ステップの順序が並べ替えられ得、いくつかのステップが並行して実施され得ることが企図される。