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

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

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

特許7400088SEIメッセージのための時間識別子の制限
<>
  • 特許-SEIメッセージのための時間識別子の制限 図1
  • 特許-SEIメッセージのための時間識別子の制限 図2
  • 特許-SEIメッセージのための時間識別子の制限 図3
  • 特許-SEIメッセージのための時間識別子の制限 図4
  • 特許-SEIメッセージのための時間識別子の制限 図5
  • 特許-SEIメッセージのための時間識別子の制限 図6
  • 特許-SEIメッセージのための時間識別子の制限 図7
  • 特許-SEIメッセージのための時間識別子の制限 図8
  • 特許-SEIメッセージのための時間識別子の制限 図9
  • 特許-SEIメッセージのための時間識別子の制限 図10
  • 特許-SEIメッセージのための時間識別子の制限 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-08
(45)【発行日】2023-12-18
(54)【発明の名称】SEIメッセージのための時間識別子の制限
(51)【国際特許分類】
   H04N 19/70 20140101AFI20231211BHJP
   H04N 19/30 20140101ALI20231211BHJP
【FI】
H04N19/70
H04N19/30
【請求項の数】 11
(21)【出願番号】P 2022518794
(86)(22)【出願日】2020-09-17
(65)【公表番号】
(43)【公表日】2022-11-22
(86)【国際出願番号】 US2020051313
(87)【国際公開番号】W WO2021061493
(87)【国際公開日】2021-04-01
【審査請求日】2022-05-02
(31)【優先権主張番号】62/905,236
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】イェ-クイ・ワン
【審査官】田部井 和彦
(56)【参考文献】
【文献】特表2016-506695(JP,A)
【文献】特表2017-525215(JP,A)
【文献】特表2015-527813(JP,A)
【文献】特開2007-166129(JP,A)
【文献】Guillaume Barroux et al.,Proposed specification changes over "High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 4" [online],JCTVC-V0098_r2,インターネット <URL: http://phenix.it-sudparis.eu/jct/doc_end_user/documents/22_Geneva/wg11/JCTVC-V0098-v5.zip>,2015年11月16日,pp.30,63-68,114-116,277-280,289,297-301,<JCTVC-V0098_proposedspecification_changes_r3.doc>
【文献】Miska M. Hannuksela et al.,MV-HEVC/SHVC HLS: On Temporalld constraints [online],JCTVC-Q0109, JCT3V-H0037,インターネット <URL: http://phenix.it-sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q0109-v5.zip>,2014年03月18日,<JCTVC-Q0109_JCT3V-H0037.doc>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/70
H04N 19/30
(57)【特許請求の範囲】
【請求項1】
デコーダによって実施される方法であって、
前記デコーダの受信器によって、1つ以上のビデオコーディングレイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニット内のコーディングされたピクチャと非VCL NALユニットとを含むビットストリームを受信するステップであって、前記非VCL NALユニットのNALユニットタイプ(nal_unit_type)が、プレフィックス付加拡張情報(SEI)NALユニットタイプ(PREFIX_SEI_NUT)またはサフィックスSEI NALユニットタイプ(SUFFIX_SEI_NUT)と等しいときは、前記非VCL NALユニットの時間識別子(TemporalId)は、前記非VCL NALユニットを含むアクセスユニット(AU)のTemporalIdと等しく、スケーラブルネスティングSEIメッセージが133に設定されたペイロードタイプを含むときは、前記スケーラブルネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeがPREFIX_SEI_NUTまたはSUFFIX_SEI_NUTに等しい、ステップと、
前記デコーダのプロセッサによって、前記非VCL NALユニット内のNALユニットヘッダ時間識別子プラスワン(nuh_temporal_id_plus1)シンタックス要素に基づいて、前記非VCL NALユニットの前記TemporalIdを導出する、ステップと、
復号されたピクチャを生成するために、前記デコーダの前記プロセッサによって、前記VCL NALユニットから前記コーディングされたピクチャを復号する、ステップと
を含む、方法。
【請求項2】
前記非VCL NALの前記nal_unit_typeは、前記PREFIX_SEI_NUTと等しい、請求項1に記載の方法。
【請求項3】
前記非VCL NALの前記nal_unit_typeは、前記SUFFIX_SEI_NUTと等しい、請求項1に記載の方法。
【請求項4】
前記コーディングされたピクチャは、前記非VCL NALユニット内のSEIメッセージに基づいて、前記VCL NALユニットから復号される、請求項1から3のいずれか一項に記載の方法。
【請求項5】
TemporalId=nuh_temporal_id_plus1-1に従って、前記非VCL NALユニットの前記TemporalIdを導出するステップをさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
nuh_temporal_id_plus1の値がゼロではない、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記VCL NALユニットのTemporalIdは、同じAU内の全VCL NALユニットと同じになるように制限される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記デコーダによって、1つ以上の第2のVCL NALユニットとおよび第2の非VCL NALユニットとを含む第2のビットストリームを受信するステップであって、前記第2の非VCL NALのnal_unit_typeがSEIメッセージのときは、前記第2の非VCL NALユニットのTemporalIdは、前記第2の非VCL NALユニットを含む第2のAUのTemporalIdと等しくならない、ステップと、
受信する前記ステップに応答して、前記第2のVCL NALユニットから前記コーディングされたピクチャを復号する前に、前記第2のビットストリームに適合するビットストリームが受信されることを確実にするため修正手段をとる、ステップと、
をさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
プログラムが記録されたコンピュータ可読記憶媒体であって、前記プログラムは、ンピュータに請求項1~8のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【請求項10】
デコーディングデバイスであって、
1つ以上のビデオコーディングレイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニット内のコーディングされたピクチャと非VCL NALユニットとを含むビットストリームを受信するよう構成された受信器であって、前記非VCL NALユニットのNALユニットタイプ(nal_unit_type)が付加拡張情報(SEI)メッセージのときは、前記非VCL NALユニットの時間識別子(TemporalId)は、前記非VCL NALユニットを含むアクセスユニット(AU)のTemporalIdと等しく、スケーラブルネスティングSEIメッセージが133に設定されたペイロードタイプを含むときは、前記スケーラブルネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeがPREFIX_SEI_NUTまたはSUFFIX_SEI_NUTに等しい、受信器と、
前記受信器に結合されたメモリであって、前記メモリは命令を記憶する、メモリと、
前記メモリに結合されたプロセッサであって、前記プロセッサは、前記デコーディングデバイスに請求項1~8のいずれか一項に記載の方法を行わせる前記命令を実行するよう構成される、プロセッサと、
を備えるデコーディングデバイス。
【請求項11】
コンピュータに請求項1~8のいずれかに記載の方法を実行することを行わせる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本特許出願は、Ye-Kui Wangによって2019年9月24日に提出された「Video Coding Improvements」なる名称の米国仮特許出願第62/905,236号に基づく優先権を主張する。
【0002】
本開示は、一般的にはビデオコーディングに関し、具体的には、マルチレイヤビットストリームの符号化をサポートするために、シグナリングパラメータを改善することに関する。
【背景技術】
【0003】
たとえ比較的短いビデオであっても、これを表すのに必要なビデオデータはかなりの量となるため、帯域幅容量に限りがある通信ネットワークを介してデータのストリーミングが行われたり、他の方法でデータが通信されたりする場合には困難が生じることがある。このため、ビデオデータは通常、今日の通信ネットワークを介して通信される前に圧縮される。ビデオが記憶装置に格納される場合に、メモリリソースが乏しい場合もあるため、ビデオのサイズが問題になることもある。ビデオ圧縮装置は多くの場合、送信または記憶に先立ち供給元でソフトウェアおよび/またはハードウェアを使ってビデオデータをコーディングし、そうすることでデジタルビデオ画像を表すのに必要なデータの量を減らす。圧縮されたデータは、つぎに、供給先において、ビデオデータを復号するビデオ解凍装置によって受け取られる。ネットワークリソースには限りがあり、より高いビデオ品質を求める要求が増大しているため、画質をほとんど犠牲にしないかまったく犠牲にせずに圧縮率を高める改善された圧縮・解凍技法が望まれている。
【発明の概要】
【課題を解決するための手段】
【0004】
一実施形態において、本開示はデコーダによって実施される方法を含み、本方法は、デコーダの受信器によって、1つ以上のビデオコーディングレイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニット内のコーディングされたピクチャと非VCL NALユニットとを含むビットストリームを受信するステップであって、非VCL NALのNALユニットタイプ(nal_unit_type)が、プレフィックス付加拡張情報(SEI)NALユニットタイプ(PREFIX_SEI_NUT)またはサフィックスSEI NALユニットタイプ(SUFFIX_SEI_NUT)と等しいときは、非VCL NALユニットの時間識別子(TemporalId)が、非VCL NALユニットを含むアクセスユニット(AU)のTemporalIdと等しくなるように制限される、ステップと、デコーダのプロセッサによって、非VCL NALユニット内のNALユニットヘッダ時間識別子プラスワン(nuh_temporal_id_plus1)シンタックス要素に基づいて、非VCL NALユニットのTemporalIdを導出する、ステップと、復号されたピクチャを生成するために、デコーダのプロセッサによって、VCL NALユニットからコーディングされたピクチャを復号する、ステップと
を含む。
【0005】
ビデオシーケンスは、多くのピクチャを含むことができる。ピクチャが確実に正しい順序で表示されるように、ビデオコーディングシステムはピクチャにTemporalIdを割り当てうる。いくつかのビデオコーディングシステムはピクチャのレイヤを用い、各レイヤは、解像度、ピクチャサイズ、フレームレートなどが異なった実質的に同じビデオを含む。異なったレイヤ内のピクチャは、デコーダ側の条件によって選択的に表示され得る。したがって、ビデオシーケンスにおける同じ点に配置された異なったレイヤ内のピクチャは、同じTemporalIdを共有する。さらに、同じTemporalIdを共有する異なったレイヤ内のピクチャは、AUを成す。例えば、デコーダは、ビデオシーケンスを表示するために、各AUにおいて単一のレイヤから選択した単一のピクチャを表示し得る。いくつかのビデオコーディングシステムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために復号プロセスで必要とされない情報を含む。例えば、SEIメッセージは、規格との適合性についてビットストリームを検証するために、エンコーダで動作する仮想参照デコーダ(HRD)によって使用されるパラメータを含み得る。さらに、ビデオコーディングシステムは、ビデオシーケンスをピクチャのレイヤとしてビットストリームへと符号化し得る。SEIメッセージは、変化するピクチャおよび/またはレイヤの変化する組み合わせに関連付けられ得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージが適切なピクチャ/レイヤに確実に関連付けられるようにすることが難しくなる可能性がある。SEIメッセージが正しいレイヤ/ピクチャに関連付けられていない場合は、HRDがレイヤ/ピクチャの適合性を適切に検証できない場合がある。これはエンコードエラーにつながる場合がある。
【0006】
この例は、SEIメッセージを対応するピクチャ/レイヤに正しく関連付けるメカニズムを含む。マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。SEIメッセージは、SEIメッセージに関連付けられた第1のピクチャと同じAU内に配置され得る。さらに、SEIメッセージは、TemporalIdを割り当てられる。TemporalIdは、ビデオシーケンスにおけるNALユニットの相対的な位置を示す識別子である。SEIメッセージのTemporalIdは、SEIメッセージを含むAUのTemporalIdと等しくなるように制限される。別の言い方をすれば、ピクチャはVCL NALユニットに含まれ、パラメータは非VCL NALユニットに含まれる。非VCL NALユニットがSEIメッセージを含むSEI NALユニットのとき、非VCL NALユニットのTemporalIdは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。この手法により、SEIメッセージがAU内の対応するピクチャに正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が改善される。さらに、コーディング効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率を減少させる。
【0007】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここで非VCL NALのnal_unit_typeはPREFIX_SEI_NUTと等しい。
【0008】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここで非VCL NALのnal_unit_typeはSUFFIX_SEI_NUTと等しい。
【0009】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここでコーディングされたピクチャは、非VCL NALユニット内のSEIメッセージに基づいてVCL NALユニットから復号される。
【0010】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、TemporalId=nuh_temporal_id_plus1-1に従って非VCL NALユニットのTemporalIdを導出することをさらに含む。
【0011】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここでnuh_temporal_id_plus1の値はゼロではない。
【0012】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここでVCL NALユニットのTemporalIdは、同じAU内の全VCL NALユニットと同じになるように制限される。
【0013】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、デコーダによって、1つ以上の第2のVCL NALユニットと第2の非VCL NALユニットとを含む第2のビットストリームを受信するステップであって、第2の非VCL NALのnal_unit_typeがSEIメッセージのときは、第2の非VCL NALユニットのTemporalIdは、第2の非VCL NALユニットを含む第2のAUのTemporalIdと等しくならない、ステップと、受信するステップに応答して、第2のVCL NALユニットからコーディングされたピクチャを復号する前に、第2のビットストリームに適合するビットストリームが受信されることを確実にするために、他の何らかの修正手段をとる、ステップと、をさらに含む。
【0014】
一実施形態において、本開示は、エンコーダによって実施される方法を含み、本方法は、エンコーダのプロセッサによって、ビットストリーム内の1つ以上のVCL NALユニット内のコーディングされたピクチャをエンコードする、ステップと、プロセッサによって、非VCL NALユニットをビットストリームへとエンコードするステップであって、その結果、非VCL NALのnal_unit_typeがSEIメッセージのときは、非VCL NALユニットのnuh_temporal_id_plus1が、非VCL NALユニットを含むAUのnuh_temporal_id_plus1と等しくなるように制限される、ステップと、プロセッサによって、SEIメッセージに基づいて、ビットストリームに対して一組のビットストリーム適合性テストを行う、ステップと、プロセッサに結合されたメモリによって、デコーダに向けて通信するためのビットストリームを記憶する、ステップとを含む。
【0015】
ビデオシーケンスは、多くのピクチャを含むことができる。ピクチャが確実に正しい順序で表示されるように、ビデオコーディングシステムはピクチャにTemporalIdを割り当てうる。いくつかのビデオコーディングシステムはピクチャのレイヤを用い、各レイヤは、解像度、ピクチャサイズ、フレームレートなどが異なった実質的に同じビデオを含む。異なったレイヤ内のピクチャは、デコーダ側の条件によって選択的に表示され得る。したがって、ビデオシーケンスにおける同じ点に配置された異なったレイヤ内のピクチャは、同じTemporalIdを共有する。さらに、同じTemporalIdを共有する異なったレイヤ内のピクチャは、AUを成す。例えば、デコーダは、ビデオシーケンスを表示するために、各AUにおいて単一のレイヤから選択した単一のピクチャを表示し得る。いくつかのビデオコーディングシステムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を含む。例えば、SEIメッセージは、規格との適合性についてビットストリームを検証するために、エンコーダで動作する仮想参照デコーダ(HRD)によって使用されるパラメータを含み得る。さらに、ビデオコーディングシステムは、ビデオシーケンスをピクチャのレイヤとしてビットストリームへと符号化し得る。SEIメッセージは、変化するピクチャおよび/またはレイヤの変化する組み合わせに関連付けられ得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージが適切なピクチャ/レイヤに確実に関連付けられるようにすることが難しくなる可能性がある。SEIメッセージが正しいレイヤ/ピクチャに関連付けられていない場合は、HRDがレイヤ/ピクチャの適合性を適切に検証できない場合がある。これはエンコードエラーにつながる場合がある。
【0016】
この例は、SEIメッセージを対応するピクチャ/レイヤに正しく関連付けるメカニズムを含む。マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。SEIメッセージは、SEIメッセージに関連付けられた第1のピクチャと同じAU内に配置され得る。さらに、SEIメッセージは、TemporalIdを割り当てられる。TemporalIdは、ビデオシーケンスにおけNALユニットの相対的な位置を示す識別子である。SEIメッセージのTemporalIdは、SEIメッセージを含むAUのTemporalIdと等しくなるように制限される。別の言い方をすれば、ピクチャはVCL NALユニットに含まれ、パラメータは非VCL NALユニットに含まれる。非VCL NALユニットがSEIメッセージを含むSEI NALユニットのとき、非VCL NALユニットのTemporalIdは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。この手法により、SEIメッセージがAU内の対応するピクチャに正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が改善される。さらに、コーディング効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率を減少させる。
【0017】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここで非VCL NALのnal_unit_typeはPREFIX_SEI_NUTと等しい。
【0018】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここで非VCL NALのnal_unit_typeはSUFFIX_SEI_NUTと等しい。
【0019】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここでnuh_temporal_id_plus1の値はゼロではない。
【0020】
任意選択で、前述の態様のいずれかにおいて、態様の別の実装を提供し、ここでVCL NALユニットのnuh_temporal_id_plus1は、同じAU内の全VCL NALユニットと同じになるように制限される。
【0021】
一実施形態において、本開示は、プロセッサと、プロセッサに結合された受信器と、プロセッサに結合されたメモリと、プロセッサに結合された送信器とを備え、プロセッサ、受信器、メモリ、および送信器は、前述の態様の方法を行うように構成される、ビデオコーディング装置を含む。
【0022】
一実施形態において、本開示は、ビデオコーディング装置によって使用されるコンピュータプログラム製品を含む非一時的コンピュータ可読媒体を含み、コンピュータプログラム製品は非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を含み、プロセッサによって実行されると、ビデオコーディング装置に前述の態様のいずれかの方法を行わせる。
【0023】
一実施形態において、本開示は、1つ以上のVCL NALユニット内のコーディングされたピクチャと非VCL NALユニットとを含むビットストリームを受信する受信手段であって、非VCL NALのnal_unit_typeがSEIメッセージのときは、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される、受信手段と、復号されたピクチャを生成するために、VCL NALユニットからコーディングされたピクチャを復号するための、復号手段と、復号されたビデオシーケンスの一部として表示するために、復号されたピクチャを転送するための、転送手段と、を備えるデコーダを含む。
【0024】
ビデオシーケンスは、多くのピクチャを含むことができる。ピクチャが確実に正しい順序で表示されるように、ビデオコーディングシステムはピクチャにTemporalIdを割り当てうる。いくつかのビデオコーディングシステムはピクチャのレイヤを用い、各レイヤは、解像度、ピクチャサイズ、フレームレートなどが異なった実質的に同じビデオを含む。異なったレイヤ内のピクチャは、デコーダ側の条件によって選択的に表示され得る。したがって、ビデオシーケンスにおける同じ点に配置された異なったレイヤ内のピクチャは、同じTemporalIdを共有する。さらに、同じTemporalIdを共有する異なったレイヤ内のピクチャは、AUを成す。例えば、デコーダは、ビデオシーケンスを表示するために、各AUにおいて単一のレイヤから選択した単一のピクチャを表示し得る。いくつかのビデオコーディングシステムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を含む。例えば、SEIメッセージは、規格との適合性についてビットストリームを検証するためにエンコーダで動作する仮想参照デコーダ(HRD)によって使用されるパラメータを含み得る。さらに、ビデオコーディングシステムは、ビデオシーケンスをピクチャのレイヤとしてビットストリームへと符号化し得る。SEIメッセージは、変化するピクチャおよび/またはレイヤの変化する組み合わせに関連付けられ得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージが適切なピクチャ/レイヤに確実に関連付けられるようにすることが難しくなる可能性がある。SEIメッセージが正しいレイヤ/ピクチャに関連付けられていない場合は、HRDがレイヤ/ピクチャの適合性を適切に検証できない場合がある。これはエンコードエラーにつながる場合がある。
【0025】
この例は、SEIメッセージを対応するピクチャ/レイヤに正しく関連付けるメカニズムを含む。マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。SEIメッセージは、SEIメッセージに関連付けられた第1のピクチャと同じAU内に配置され得る。さらに、SEIメッセージは、TemporalIdを割り当てられる。TemporalIdは、ビデオシーケンスにおけるNALユニットの相対的な位置を示す識別子である。SEIメッセージのTemporalIdは、SEIメッセージを含むAUのTemporalIdと等しくなるように制限される。別の言い方をすれば、ピクチャはVCL NALユニットに含まれ、パラメータは非VCL NALユニットに含まれる。非VCL NALユニットがSEIメッセージを含むSEI NALユニットのとき、非VCL NALユニットのTemporalIdは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。この手法により、SEIメッセージがAU内の対応するピクチャに正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が改善される。さらに、コーディング効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率を減少させる。
【0026】
任意選択で、前述の態様のいずれかにおいて、デコーダは、前述の態様のいずれかの方法を遂行するようにさらに構成される、態様の別の実装が提供される。
【0027】
一実施形態において、本開示は、ビットストリーム内の1つ以上のVCL NALユニット内のコーディングされたピクチャをエンコードし、非VCL NALのnal_unit_typeが付加SEIメッセージのときは、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなるよう制限されるように、非VCL NALユニットをビットストリームへとエンコードする、エンコード手段と、SEIメッセージに基づいて、ビットストリームに対して一組のビットストリーム適合性テストを行う、HRD手段と、デコーダに向けて通信するためのビットストリームを記憶する、記憶手段とを備える、エンコーダを備える。
【0028】
ビデオシーケンスは、多くのピクチャを含むことができる。ピクチャが確実に正しい順序で表示されるように、ビデオコーディングシステムはピクチャにTemporalIdを割り当てうる。いくつかのビデオコーディングシステムはピクチャのレイヤを用い、各レイヤは、解像度、ピクチャサイズ、フレームレートなどが異なった実質的に同じビデオを含む。異なったレイヤ内のピクチャは、デコーダ側の条件によって選択的に表示され得る。したがって、ビデオシーケンスにおける同じ点に配置された異なったレイヤ内のピクチャは、同じTemporalIdを共有する。さらに、同じTemporalIdを共有する異なったレイヤ内のピクチャは、AUを成す。例えば、デコーダは、ビデオシーケンスを表示するために、各AUにおいて単一のレイヤから選択した単一のピクチャを表示し得る。いくつかのビデオコーディングシステムは、SEIメッセージを用いる。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を含む。例えば、SEIメッセージは、規格との適合性についてビットストリームを検証するために、エンコーダで動作する仮想参照デコーダ(HRD)によって使用されるパラメータを含み得る。さらに、ビデオコーディングシステムは、ビデオシーケンスをピクチャのレイヤとしてビットストリームへと符号化し得る。SEIメッセージは、変化するピクチャおよび/またはレイヤの変化する組み合わせに関連付けられ得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージが適切なピクチャ/レイヤに確実に関連付けられるようにすることが難しくなる可能性がある。SEIメッセージが正しいレイヤ/ピクチャに関連付けられていない場合は、HRDがレイヤ/ピクチャの適合性を適切に検証できない場合がある。これはエンコードエラーにつながる場合がある。
【0029】
この例は、SEIメッセージを対応するピクチャ/レイヤに正しく関連付けるメカニズムを含む。マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。SEIメッセージは、SEIメッセージに関連付けられた第1のピクチャと同じAU内に配置され得る。さらに、SEIメッセージは、TemporalIdを割り当てられる。TemporalIdは、ビデオシーケンスにおけるNALユニットの相対的な位置を示す識別子である。SEIメッセージのTemporalIdは、SEIメッセージを含むAUのTemporalIdと等しくなるように制限される。別の言い方をすれば、ピクチャはVCL NALユニットに含まれ、パラメータは非VCL NALユニットに含まれる。非VCL NALユニットがSEIメッセージを含むSEI NALユニットのとき、非VCL NALユニットのTemporalIdは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。この手法により、SEIメッセージがAU内の対応するピクチャに正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が改善される。さらに、コーディング効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率を減少させる。
【0030】
任意選択で、前述の態様のいずれかにおいて、エンコーダは、前述の態様のいずれかの方法を遂行するようにさらに構成される、態様の別の実装が提供される。
【0031】
明確にするために、前述の実施形態のうちのいずれか1つは、他の前述の実施形態のうちのいずれか1つまたは複数と組み合わされて、本開示の範囲内の新しい実施形態を作成する場合がある。
【0032】
上記その他の特徴は、以下の詳細な説明を添付の図面および特許請求の範囲と併せて読めばより明確に理解されるであろう。
【0033】
本開示をより十分に理解するために、次に、添付の図面および詳細な説明と関連して理解される以下の簡単な説明を参照する。添付の図面および詳細な説明において、類似の参照番号は類似の部分を表す。
【図面の簡単な説明】
【0034】
図1】ビデオ信号を符号化する例示的な方法の流れ図である。
図2】ビデオ符号化のための例示的な符号化・復号(コーデック)システムの概略図である。
図3】例示的なビデオエンコーダを示す概略図である。
図4】例示的なビデオデコーダを示す概略図である。
図5】例示的な仮想参照デコーダ(HRD)を示す概略図である。
図6】例示的なマルチレイヤビデオシーケンスを示す概略図である。
図7】例示的なビットストリームを示す概略図である。
図8】例示的なビデオコーディング装置の概略図である。
図9】ビットストリーム内の付加拡張情報(SEI)メッセージの時間識別子(TemporalId)を制限することによって、ビデオシーケンスをビットストリームにエンコードする例示的な方法の流れ図である。
図10】ビットストリーム内のSEIメッセージのTemporalIdが制限されている、ビットストリームからビデオシーケンスを復号する例示的な方法の流れ図である。
図11】ビットストリーム内のSEIメッセージのTemporalIdが制限されている、ビットストリームを使用してビデオシーケンスを符号化する例示的なシステムの概略図である。
【発明を実施するための形態】
【0035】
最初に、1つまたは複数の実施形態の例示的な実施態様が以下に提供されるが、開示されたシステムおよび/または方法は、現在知られているか存在するかにかかわらず、任意の数の技術を使用して実装され得ることを理解されたい。本開示は、本明細書において図示または記載される例示的な設計および実装形態を含む、以下に示される例示的な実装形態、図面、および技法に決して限定されるべきでなく、それらの均等物の全範囲とともに添付の特許請求の範囲の範囲内で修正されてよい。
【0036】
以下の用語は、本明細書で反対の文脈で使用されない限り、次のように定義される。具体的に述べると、以下の定義は本開示をさらに明確にすることを意図している。しかしながら、用語は、異なる文脈では異なって記載される場合がある。したがって、以下の定義は補助的なものとみなされるべきであり、本明細書でかかる用語に与えられている説明の他の定義を制限するものと考えられるべきではない。
【0037】
ビットストリームは、エンコーダとデコーダとの間で送信するために圧縮されたビデオデータを含む、一連のビットである。エンコーダは、ビデオデータを圧縮してビットストリームにするために、符号化プロセスを用いるように構成された装置である。デコーダは、表示用にビットストリームからビデオデータを復元するために、復号プロセスを用いるように構成された装置である。ピクチャは、フレームまたはそのフィールドを生成する、ルマサンプルの配列および/またはクロマサンプルの配列である。スライスは、単一のネットワーク抽象化レイヤ(NAL)ユニットに排他的に含まれるピクチャの整数個の完全なタイル、または(例えば、タイル内の)整数個の連続する完全なコーディングツリーユニット(CTU)行である。説明を明確にするために、エンコードまたは復号されるピクチャは現在ピクチャと呼ばれてもよい。コーディングされたピクチャは、アクセスユニット(AU)内でNALユニットヘッダレイヤ識別子(nuh_layer_id)の特定の値を有するビデオコーディングレイヤ(VCL)NALユニットを含むピクチャのコーディングされた表現であり、ピクチャの全コーディングツリーユニット(CTU)を含む。復号されたピクチャは、コーディングされたピクチャに復号プロセスを適用して生成されたピクチャである。
【0038】
AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、復号ピクチャバッファ(DPB)から出力するために同じ時間に関連付けられる。NALユニットは、生のバイトシーケンスペイロード(RBSP)形式のデータを含むシンタックス構造であり、データの種類を示すものであり、必要に応じてエミュレーション防止バイトが散在される。VCL NALユニットは、ピクチャのコーディングされたスライスなどの、ビデオデータを含むように符号化されたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性検査の実行その他の動作をサポートするシンタックスおよび/またはパラメータなどの、非ビデオデータを含むNALユニットである。NALユニットタイプ(nal_unit_type)は、NALユニットに含まれるデータのタイプを示す、NALユニットに含まれるシンタックス要素である。レイヤは、レイヤIDおよび関連付けられた非VCL NALユニットで示される通りに、指定した特性(例えば、共通の解像度、フレームレート、画像サイズ)を共有するVCL NALユニットのセットである。NALユニットヘッダレイヤ識別子(nuh_layer_id)は、NALユニットを含むレイヤの識別子を指定するシンタックス要素である。時間識別子(TemporalId)は、ビデオシーケンス内のNALユニットの相対的な位置を示す、導出された識別子である。NALユニットヘッダ時間識別子プラスワン(nuh_temporal_id_plus1)は、ビデオシーケンス内のNALユニットの相対的な位置を示す、シグナリングされた識別子である。
【0039】
仮想参照デコーダ(HRD)は、特定の制約条件に対する適合性を検証するために、符号化プロセスで生成されたビットストリームの可変性を検査する、エンコーダで動作するデコーダモデルである。ビットストリーム適合性テストは、エンコードされたビットストリームが、汎用ビデオ符号化(VVC)などの規格に準拠しているかどうかを判定するテストである。HRDパラメータは、HRDの動作条件を初期化および/または定義するシンタックス要素である。HRDパラメータは、付加拡張情報(SEI)メッセージに、かつ/またはビデオパラメータセット(VPS)に含まれ得る。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を伝達する、特定のセマンティクスを有するシンタックス構造である。SEI NALユニットは、1つ以上のSEIメッセージを含むNALユニットである。特定のSEI NALユニットが、現在SEI NALユニットと呼ばれてもよい。スケーラブルネスティングSEIメッセージは、1つ以上の出力レイヤセット(OLS)、または1つ以上のレイヤに対応する、複数のSEIメッセージを含むメッセージである。バッファリング期間(BP)SEIメッセージは、コーディングされたピクチャバッファ(CPB)を管理するために、HRDを初期化するためのHRDパラメータを含むSEIメッセージである。ピクチャタイミング(PT)SEIメッセージは、CPBおよび/または復号ピクチャバッファ(DPB)でAUの送達情報を管理するためのHRDパラメータを含むSEIメッセージである。復号ユニット情報(DUI)SEIメッセージは、CPBおよび/またはDPBでDUの送達情報を管理するためのHRDパラメータを含むSEIメッセージである。スケーラブルネスティングSEIメッセージは、スケーラブルネストされたSEIメッセージのセットである。スケーラブルネストされたSEIメッセージは、スケーラブルネスティングSEIメッセージの内部でネストされたSEIメッセージである。プレフィックスSEIメッセージは、1つ以上の後続のNALユニットに適用されるSEIメッセージである。サフィックスSEIメッセージは、1つ以上の先行するNALユニットに適用されるSEIメッセージである。
【0040】
ピクチャパラメータセット(PPS)は、各ピクチャヘッダに見出されるシンタックス要素によって決定される通りの、コーディングされたピクチャ全体に適用されるシンタックス要素を含むシンタックス構造である。ピクチャヘッダは、コーディングされたピクチャの全スライスに適用されるシンタックス要素を含む、シンタックス構造である。スライスヘッダは、全タイル、またはスライスで表されたタイル内のCTU行に関するデータ要素を含む、コーディングされたスライスの一部である。コーディングされたビデオシーケンスは、1つ以上のコーディングされたピクチャのセットである。復号されたビデオシーケンスは、1つ以上の復号されたピクチャのセットである。
【0041】
本明細書では、アクセスユニット(AU)、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーティングユニット(CU)、符号化レイヤビデオシーケンス(CLVS)、符号化レイヤビデオシーケンス開始(CLVSS)、コーディングされたビデオシーケンス(CVS)、コーディングされたビデオシーケンス開始(CVSS)、合同ビデオ専門家チーム(JVET)、仮想参照デコーダHRD、動き制限タイルセット(MCTS)、最大送信単位(MTU)、ネットワーク抽象化レイヤ(NAL)、出力レイヤセット(OLS)、ピクチャ順序カウント(POC)、ランダムアクセスポイント(RAP)、生のバイトシーケンスペイロード(RBSP)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、汎用ビデオ符号化(VVC)といった頭字語が使用される。
【0042】
データ損失を最小にしながらビデオファイルのサイズを縮小するために、多くのビデオ圧縮技法を使用することができる。例えば、ビデオ圧縮技法は、ビデオシーケンスにおけるデータ冗長性を低減または除去するために、空間(例えば、イントラピクチャ)予測および/または時間(例えば、インターピクチャ)予測を実行することを含むことができる。ブロックベースのビデオ符号化では、ビデオスライス(例えば、ビデオピクチャまたはビデオピクチャの一部)はビデオブロックにパーティショニングされてよく、ビデオブロックは、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーティングユニット(CU)、および/または、符号化ノードとも称されてよい。ピクチャのイントラ符号化(I)スライス内のビデオブロックは、同じピクチャ内の隣り合うブロックにおける、参照サンプルに対する空間予測を使用して符号化される。ピクチャのインター符号化片方向予測(P)または双方向予測(B)スライス内のビデオブロックは、同じピクチャ内の隣り合うブロックにおける、参照サンプルに対する空間予測、または他の参照ピクチャにおける、参照サンプルに対する時間予測を使用して符号化されてよい。ピクチャはフレームおよび/または画像と称されてもよく、参照ピクチャはフレームおよび/または参照画像と称されてよい。空間予測または時間予測は、画像ブロックを表す予測ブロックになる。残差データは、元の画像ブロックと予測ブロックとの画素差を表す。したがって、インター符号化ブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、符号化ブロックと予測ブロックとの差分を示す残差データとに従ってエンコードされる。イントラ符号化ブロックは、イントラ符号化モードと残差データとに従ってエンコードされる。さらに圧縮するために、残差データは、画素領域から変換領域に変換されてよい。これらは残差変換係数になり、量子化され得る。量子化された変換係数は、最初は二次元配列で配置されてよい。量子化された変換係数は、変換係数の一次元ベクトルを生成するためにスキャンされ得る。さらなる圧縮を実現するために、エントロピー符号化が適用される場合がある。かかるビデオ圧縮技法は、以下でより詳細に説明される。
【0043】
エンコードされたビデオを正確に復号できることを確実にするために、ビデオは、対応するビデオ符号化規格に従ってエンコードされ復号される。ビデオ符号化規格には、国際電気通信連合(ITU)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)動画専門家グループ(MPEG)-1パート2、ITU-T H.262またはISO/IEC MPEG-2パート2、ITU-T H.263、ISO/IEC MPEG-4パート2、ITU-T H.264またはISO/IEC MPEG-4パート10としても知られる高度ビデオ符号化(AVC)、およびITU-T H.265またはMPEG-Hパート2としても知られる高効率ビデオ符号化(HEVC)が含まれる。AVCは、スケーラブルビデオ符号化(SVC)、マルチビュービデオ符号化(MVC)、マルチビュービデオ符号化プラス深度(MVC+D)、および三次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの拡張を含む。ITU-TおよびISO/IECの合同ビデオ専門家チーム(JVET)は、汎用ビデオ符号化(VVC)と称されるビデオ符号化規格の開発に着手した。VVCは草案(WD)に含まれており、JVET-O2001-v14を含む。
【0044】
ビデオシーケンスは、多くのピクチャを含むことができる。ピクチャが確実に正しい順序で表示されるように、ビデオコーディングシステムはピクチャに時間識別子(TemporalId)を割り当ててよい。いくつかのビデオコーディングシステムはピクチャのレイヤを使用し、各レイヤは、解像度、ピクチャサイズ、フレームレートなどが異なる、実質的に同じビデオを含む。異なったレイヤ内のピクチャは、デコーダ側の条件によって選択的に表示され得る。したがって、ビデオシーケンスの同じ点に配置された異なったレイヤ内のピクチャは、同じTemporalIdを共有する。さらに、同じTemporalIdを共有する異なったレイヤ内のピクチャは、アクセスユニット(AU)を構成する。例えば、デコーダは、ビデオシーケンスを表示するために、各AUで単一のレイヤから選択した単一のピクチャを表示し得る。
【0045】
いくつかのビデオコーディングシステムは、SEIメッセージを使用する。SEIメッセージは、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を含む。例えば、SEIメッセージは、ビットストリームの規格との適合性を検証するために、エンコーダで動作するHRDによって使用されるパラメータを含み得る。さらに、ビデオコーディングシステムは、ビデオシーケンスをピクチャのレイヤとしてビットストリームに符号化し得る。SEIメッセージは、様々なピクチャおよび/またはレイヤの様々な組み合わせに関連付けられ得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージが適切なピクチャ/レイヤに確実に関連付けられるようにすることが難しくなる可能性がある。SEIメッセージが正しいレイヤ/ピクチャに関連付けられていない場合は、HRDがレイヤ/ピクチャの適合性を適切に検証できない場合がある。これはエンコードエラーにつながる場合がある。
【0046】
本明細書で開示するのは、SEIメッセージを対応するピクチャ/レイヤに正しく関連付けるメカニズムである。マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。SEIメッセージは、SEIメッセージに関連付けられた第1のピクチャと同じAU内に配置され得る。さらに、SEIメッセージは、TemporalIdを割り当てられる。TemporalIdは、ビデオシーケンスにおけるネットワーク抽象化レイヤ(NAL)ユニットの相対的な位置を示す識別子である。SEIメッセージのTemporalIdは、SEIメッセージを含むAUのTemporalIdと等しくなるように制限される。別の言い方をすれば、ピクチャはビデオコーディングレイヤ(VCL)NALユニットに含まれ、パラメータは非VCL NALユニットに含まれる。非VCL NALユニットがSEIメッセージを含むSEI NALユニットのとき、非VCL NALユニットのTemporalIdは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。この手法により、SEIメッセージがAU内の対応するピクチャに正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が改善される。さらに、コーディング効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率を減少させる。
【0047】
図1は、ビデオ信号の符号化の例示的な動作方法100の流れ図である。具体的に述べると、ビデオ信号はエンコーダでエンコードされる。符号化プロセスは、ビデオファイルのサイズを減じる様々な手法を用いてビデオ信号を圧縮する。ファイルのサイズが小さければ、圧縮されたビデオファイルをユーザーへ伝送し、これにともなう帯域幅オーバーヘッドを減らすことが可能となる。その後、デコーダは圧縮されたビデオファイルを復号し、エンドユーザーに向けて表示するため元のビデオ信号を復元する。デコーダでビデオ信号を着実に復元することを可能にするため、復号プロセスは通常、符号化プロセスを反映する。
【0048】
ステップ101では、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号はメモリに記憶された圧縮されていないビデオファイルであってよい。もうひとつの例として、ビデオカメラなどのビデオキャプチャ装置によってビデオファイルがキャプチャされ、ビデオのライブストリーミングをサポートするためエンコードされてもよい。ビデオファイルはオーディオ成分とビデオ成分の両方を含むことがある。ビデオ成分は一連の画像フレームを含み、これが連続して見られると、視覚的な動きの印象を与える。フレームは画素を含み、画素は、ここでルマ成分(またはルマサンプル)と呼ばれる光と、クロマ成分(または色サンプル)と呼ばれる色とによって表される。いくつかの例では、三次元閲覧をサポートするため、フレームがデプス値を含むこともある。
【0049】
ステップ103では、ビデオがブロックへとパーティショニングされる。パーティショニングは、各フレーム内の画素を圧縮のために正方形および/または矩形のブロックに細分することを含む。例えば、高効率ビデオ符号化(HEVC)(H.265およびMPEG-Hパート2としても知られている)では、フレームは、まずコーディングツリーユニット(CTU)に細分化でき、これは所定のサイズ(例えば、64画素×64画素)のブロックである。CTUはルマおよびクロマの両方のサンプルを含む。コーディングツリーを使ってCTUをブロックに分割し、その後、さらなるエンコーディングをサポートする構成が達成されるまでブロックを再帰的に細分することができる。例えば、フレームのルマ成分は、個々のブロックが比較的均一な照明値を含むようになるまで細分されてよい。さらに、フレームのクロマ成分は、個々のブロックが比較的均一な色値を含むようになるまで細分されてよい。したがって、パーティショニング手法はビデオフレームの内容に応じて異なる。
【0050】
ステップ105では、ステップ103でパーティショニングされた画像ブロックを様々な圧縮手法を用いて圧縮する。例えば、インター予測および/またはイントラ予測が使われてよい。インター予測は、一般的なシーンの中の物体が連続するフレームに現れる傾向があるという事実を利用するようになっている。したがって、参照フレーム内の物体を表すブロックは、近接するフレームで繰り返し記述される必要はない。具体的に述べると、机などの物体は複数のフレームにわたって一定の位置にとどまることがある。それ故、机は一度記述され、近接するフレームは参照フレームを参照できる。パターンマッチング手法を用いることで、複数のフレームにわたって物体を整合させることができる。さらに、例えば物体の動きやカメラの動きにより、複数のフレームにわたって動く物体が表されることがある。個別の一例として、ビデオは複数のフレームにわたって画面を横切る自動車を表示することがある。このような動きは動きベクトルを使って記述できる。動きベクトルは、或るフレーム内の或る物体の座標から参照フレーム内の当該物体の座標までのオフセットを提供する二次元ベクトルである。このため、インター予測は、現在フレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す1組の動きベクトルとしてエンコードできる。
【0051】
イントラ予測は一般的なフレーム内のブロックをエンコードする。イントラ予測は、ルマ成分とクロマ成分がフレームの中で群がる傾向があるという事実を利用する。例えば、木の一部分にある緑のパッチは、同様の緑のパッチの近くに位置する傾向がある。イントラ予測は、複数の方向予測モード(例えばHEVCで33)、平面モード、およびダイレクトカレント(DC)モードを使用する。方向モードは、現在ブロックが対応する方向で隣接ブロックのサンプルと同様/同じであることを指示する。平面モードは、行/列(例えば平面)沿いの一連のブロックを、行のエッジの隣接ブロックに基づいて補間できることを指示する。平面モードは、実際には、変化する値の比較的一定のスロープを使うことによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは境界平滑化に使われ、ブロックが、方向予測モードの角度方向と関連するすべての隣接ブロックのサンプルと関連する平均値と同様/同じであることを指示する。したがって、イントラ予測ブロックは、実際の値の代わりに様々な関係予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値の代わりに動きベクトル値として画像ブロックを表すことができる。いずれの場合でも、予測ブロックは場合によっては画像ブロックを正確に表さないことがある。差異は残差ブロックに記憶される。ファイルをさらに圧縮するため、残差ブロックには変換が適用できる。
【0052】
ステップ107では、様々なフィルタリング技法が適用される。HEVCではインループフィルタリング方式に従ってフィルタが適用される。上述したブロックに基づく予測は、デコーダでブロック状の画像を作ることがある。さらに、ブロックに基づく予測方式はブロックをエンコードし、エンコードされたブロックを後ほど参照ブロックとして使用するため復元することができる。インループフィルタリング方式は、ノイズ抑制フィルタ、デブロッキングフィルタ、適応型ループフィルタ、およびサンプル適応型オフセット(SAO)フィルタをブロック/フレームに繰り返し適用される。これらのフィルタはそのようなブロッキングアーチファクトを軽減するため、エンコードされたファイルは正確に復元できる。さらに、これらのフィルタは復元された参照ブロックでアーチファクトを軽減するため、復元された参照ブロックに基づいてエンコードされる後続のブロックでさらなるアーチファクトが発生する見込みは少なくなる。
【0053】
ビデオ信号がパーティショニングされ、圧縮され、フィルタされたら、できあがったデータがステップ109にてビットストリームでエンコードされる。このビットストリームは上述したデータを含むほか、デコーダでの適切なビデオ信号復元をサポートするにあたって望ましいシグナリングデータを含む。例えば、かかるデータは、パーティションデータ、予測データ、残差ブロック、およびデコーダに符号化指図を提供する様々なフラグを含み得る。ビットストリームは、要求に応じてデコーダへ伝送できるようにメモリに記憶されてよい。ビットストリームはまた、複数のデコーダに向けてブロードキャストおよび/またはマルチキャストされてもよい。ビットストリームの作成は繰り返し作業である。したがって、ステップ101、103、105、107、および109は、多数のフレームおよびブロックにわたって連続的に、および/または同時に、行われてよい。図1に示された順序は説明を明瞭かつ平易にするために提示されており、ビデオ符号化プロセスを特定の順序に限定することを意図するものではない。
【0054】
デコーダはビットストリームを受け取り、ステップ111で復号プロセスを開始する。具体的に述べると、デコーダはエントロピー復号方式を用いてビットストリームを対応するシンタックスデータとビデオデータに変換する。デコーダはステップ111で、ビットストリームからのシンタックスデータを使ってフレームのパーティションを決定する。パーティショニングはステップ103におけるブロックパーティショニングの結果に整合しなければならない。これより、ステップ111で使われるエントロピーエンコーディング/復号を説明する。エンコーダは、入力画像における値の空間的配置に基づいて数通りの選択肢からブロックパーティショニング方式を選択するなど、圧縮過程で多数の選択を行う。ぴったりの選択肢を伝えるため、多数のビンを使用することがある。ここで使われるビンは、変数として扱われる2進値である(例えば、状況に応じて変わり得るビット値)。エントロピー符号化では、エンコーダはある特定の状況で明らかに成り立たないオプションを破棄し、許容可能なオプションからなる集合を残すことができる。その後、それぞれの許容可能オプションには符号語が割り当てられる。符号語の長さは許容可能オプションの数に基づいている(例えば、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、およびヘッダフォーマッティング・コンテキスト適応型バイナリ算術符号化(CABAC)コンポーネント231を含む。かかるコンポーネントは図示のように結合されている。図2で、黒い線はエンコード/復号されるデータの動きを示しており、破線は他のコンポーネントの動作を制御する制御データの動きを示している。コーデックシステム200のコンポーネントはいずれもエンコーダ内に存在してよい。デコーダはコーデックシステム200のコンポーネントの部分集合を含んでよい。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング逆変換コンポーネント229、インループフィルタコンポーネント225、および復号ピクチャバッファコンポーネント223を含んでよい。以下、こ
れらのコンポーネントを説明する。
【0058】
パーティショニングされたビデオ信号201は、コーディングツリーによって画素のブロックへとパーティショニングされたキャプチャされたビデオシーケンスである。コーディングツリーは様々なスプリットモードを用いて画素のブロックをより小さい画素のブロックへ細分する。その後、これらのブロックはより小さいブロックにさらに細分されうる。ブロックはコーディングツリー上のノードと呼ばれることがある。より大きい親ノードはより小さい子ノードへスプリットされる。ノードが細分される回数はノード/コーディングツリーの深度と呼ばれる。分割されたブロックは、場合によってはコーティングユニット(CU)に含まれる可能性がある。例えば、CUは、対応するCUのシンタックス命令とともに、ルマブロック、(1つまたは複数の)赤差クロマ(Cr)ブロック、および(1つまたは複数の)青差クロマ(Cb)ブロックを含む、CTUのサブ部分であってもよい。スプリットモードは、バイナリツリー(BT)、トリプルツリー(TT)、およびクアドツリー(QT)を含み、これらのモードは、使用するスプリットモードに応じて形が異なる2つ、3つ、または4つの子ノードにノードをパーティショニングするために使われる。パーティショニングされたビデオ信号201は、圧縮のため、一般コーダ制御コンポーネント211、変換スケーリング量子化コンポーネント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によって行われる動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対する符号化された物体の移動を示すことができる。予測ブロックとは、画素差の観点から、符号化されるブロックによく一致することが分かっているブロックである。予測ブロックは参照ブロックとも称されてよい。かかる画素差は、絶対差の和(SAD)、二乗差の和(SSD)、またはその他の差指標によって割り出すことができる。HEVCは、CTU、コーディングツリーブロック(CTB)、およびCUを含むいくつかの符号化された物体を使用する。例えば、CTUはCTBに分割でき、その後CTBは、CUに含めるためにCBに分割することができる。CUは、予測データを含む予測ユニットとして、および/またはCUの変換された残差データを含む変換ユニット(TU)として、エンコードできる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み解析を用いることによって動きベクトル、予測ユニット、およびTUを生成する。例えば、動き推定コンポーネント221は、現在ブロック/フレームについて複数の参照ブロック、複数の動きベクトルなどを割り出すことができ、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択できる。最良のレート歪み特性とは、ビデオ復元の質(例えば、圧縮によるデータ損失量)と符号化効率(例えば、最終的なエンコーディングのサイズ)とのバランスをとるものである。
【0062】
いくつかの例において、コーデックシステム200は、復号ピクチャバッファコンポーネント223に記憶された参照ピクチャのサブ整数画素位置の値を計算できる。例えば、ビデオコーデックシステム200は、参照ピクチャの4分の1画素位置、8分の1画素位置、またはその他の分数画素位置の値を補間できる。したがって、動き推定コンポーネント221はフル画素位置と分数画素位置を基準にして動き探索を行い、分数画素精度の動きベクトルを出力できる。動き推定コンポーネント221は、予測ユニットの位置を参照ピクチャの予測ブロックの位置に比較することによって、インターコーディングされたスライス内のビデオブロックの予測ユニットについて動きベクトルを計算する。動き推定コンポーネント221は、計算した動きベクトルを動きデータとしてヘッダフォーマッティングCABACコンポーネント231にエンコーディングのため出力し、動き補償コンポーネント219に動きを出力する。
【0063】
動き補償コンポーネント219によって行われる動き補償では、動き推定コンポーネント221によって割り出された動きベクトルに基づいて予測ブロックを取得または生成できる。繰り返しになるが、いくつかの例において、動き推定コンポーネント221と動き補償コンポーネント219は機能的に一体化されてもよい。現在ビデオブロックの予測ユニットの動きベクトルを受け取った動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックの位置を特定できる。その後、符号化される現在ビデオブロックの画素値から予測ブロックの画素値を引いて画素差の値を形成することによって、残差ビデオブロックが形成される。通常、動き推定コンポーネント221はルマ成分について動き推定を行い、動き補償コンポーネント219はルマ成分に基づいて計算された動きベクトルをクロマ成分とルマ成分の両方に使用する。予測ブロックと残差ブロックは変換スケーリング量子化コンポーネント213へ転送される。
【0064】
パーティショニングされたビデオ信号201はイントラピクチャ推定コンポーネント215とイントラピクチャ予測コンポーネント217にも送信される。動き推定コンポーネント221および動き補償コンポーネント219と同様、イントラピクチャ推定コンポーネント215とイントラピクチャ予測コンポーネント217も高度に一体化されてよいが、概念的な目的のため別々に示されている。イントラピクチャ推定コンポーネント215とイントラピクチャ予測コンポーネント217は、上述したように、動き推定コンポーネント221と動き補償コンポーネント219によってフレームからフレームにかけて行われるインター予測の代わりに、現在フレーム内のブロックを基準にして現在ブロックをイントラ予測する。具体的に述べると、イントラピクチャ推定コンポーネント215は現在ブロックをエンコードするために使うイントラ予測モードを決定する。いくつかの例において、イントラピクチャ推定コンポーネント215は複数の実証済みイントラ予測モードから現在ブロックをエンコードする適切なイントラ予測モードを選択する。その後、選択されたイントラ予測モードはエンコーディングのためヘッダフォーマッティングCABACコンポーネント231へ転送される。
【0065】
例えば、イントラピクチャ推定コンポーネント215は様々な実証済みイントラ予測モードについてレート歪み解析を用いてレート歪み値を計算し、実証済みモードの中から最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み解析は通常、エンコードされたブロックと、エンコードされたブロックを生成するためにエンコードされた元のエンコードされていないブロックとの歪み(または誤差)の量と、エンコードされたブロックの生成に使われたビットレート(例えばビット数)を割り出す。イントラピクチャ推定コンポーネント215は様々なエンコードされたブロックの歪みとレートから比率を計算することで、ブロックで最良のレート歪み値を示すイントラ予測モードがどれかを判断する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(RDO)に基づくデプスモデリングモード(DMM)を使ってデプスマップのデプスブロックを符号化するように構成されてよい。
【0066】
イントラピクチャ予測コンポーネント217は、エンコーダ上で実装される場合は、イントラピクチャ推定コンポーネント215によって決定された選択済みのイントラ予測モードに基づいて予測ブロックから残差ブロックを生成でき、あるいはデコーダ上で実装される場合は、ビットストリームから残差ブロックを読み取る。残差ブロックは、行列として表現される、予測ブロックと元のブロックとの値の差を含む。その後、残差ブロックは変換スケーリング量子化コンポーネント213へ転送される。イントラピクチャ推定コンポーネント215とイントラピクチャ予測コンポーネント217はルマ成分とクロマ成分の両方に作用できる。
【0067】
変換スケーリング量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリング量子化コンポーネント213は、離散コサイン変換(DCT)、離散サイン変換(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を復元するにあたって必要となる全情報を含んでいる。かかる情報は、イントラ予測モードインデックステーブル(符号語マッピングテーブルとも呼ばれる)、様々なブロックのエンコーディングコンテキストの定義、最も可能性の高いイントラ予測モードの指示、パーティション情報の指示なども含み得る。かかるデータは、エントロピー符号化を使用してエンコードされ得る。例えば、情報は、コンテキスト適応型可変長符号化(CAVLC)、CABAC、シンタックス方式コンテキスト適応型バイナリ算術符号化(SBAC)、確率区間パーティショニングエントロピー(PIPE)符号化、または他のエントロピー符号化技法を用いてエンコードできる。エントロピー符号化の後には、符号化されたビットストリームを別の装置(例えばビデオデコーダ)へ伝送でき、あるいは後ほど伝送したり取り出したりするため記憶できる。
【0072】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコーディング機能を実施するため、および/または動作方法100のステップ101、103、105、107、および/または109を実施するために使われてよい。エンコーダ300は入力ビデオ信号をパーティショニングし、その結果として得られるパーティショニングされたビデオ信号301はパーティショニングされたビデオ信号201と実質的に同様である。その後、パーティショニングされたビデオ信号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へ転送され、これらのコンポーネントはそれぞれ復号ピクチャバッファコンポーネント223およびインループフィルタコンポーネント225と実質的に同様であってよい。インループフィルタコンポーネント425は復元済みの画像ブロック、残差ブロック、および/または予測ブロックをフィルタし、かかる情報は復号ピクチャバッファコンポーネント423に記憶される。復号ピクチャバッファコンポーネント423からの復元済み画像ブロックは、インター予測のために動き補償コンポーネント421へ転送される。動き補償コンポーネント421は動き推定コンポーネント221および/または動き補償コンポーネント219と実質的に同様であってよい。具体的に述べると、動き補償コンポーネント421は参照ブロックからの動きベクトルを使って予測ブロックを生成し、その結果に残差ブロックを適用して画像ブロックを復元する。そうして得られた復元済みブロックはまた、インループフィルタコンポーネント425を経由して復号ピクチャバッファコンポーネント423へ転送されてもよい。復号ピクチャバッファコンポーネント423はさらなる復元済み画像ブロックを引き続き記憶し、これらの復元済み画像ブロックはパーティション情報によってフレームに復元できる。かかるフレームはシーケンスにも並べられてもよい。このシーケンスは復元された出力ビデオ信号としてディスプレイへ出力される。
【0078】
図5は、例示的なHRD 500を示す概略図である。HRD 500は、コーデックシステム200および/またはエンコーダ300などのエンコーダで使用されてよい。HRD 500は、ビットストリームがデコーダ400などのデコーダに転送される前に、方法100のステップ109で生成されたビットストリームを検査し得る。いくつかの例において、ビットストリームがエンコードされると、ビットストリームはHRD 500を介して継続的に転送され得る。ビットストリームの一部が関連する制約条件に適合しない場合、HRD 500は、エンコーダがビットストリームの対応部分を別のメカニズムで再エンコードするように、このような異常をエンコーダに示すことができる。
【0079】
HRD 500は、仮想ストリームスケジューラ(HSS)541を備える。HSS 541は、仮想配信メカニズムを実行するように構成されたコンポーネントである。仮想配信メカニズムは、HRD 500に入力されるビットストリーム551のタイミングおよびデータフローに関して、ビットストリームまたはデコーダの適合性を検査するために使用される。例えば、HSS 541は、エンコーダから出力されたビットストリーム551を受信し、ビットストリーム551の適合性テストのプロセスを管理し得る。個別の一例において、HSS 541は、コーディングされたピクチャがHRD 500を通過するレートを制御し、ビットストリーム551が不適合データを含んでいないことを検証することができる。
【0080】
HSS 541は、CPB 543にビットストリーム551を所定のレートで転送し得る。HRD 500は、復号ユニット(DU)553でデータを管理し得る。DU 553は、アクセスユニット(AU)またはAUのサブセットであり、非ビデオコーディングレイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニットに関連付けられる。具体的には、AUは、出力時間に関連付けられた1つ以上のピクチャを含む。例えば、AUは、1つのレイヤビットストリーム内に1つのピクチャを含み、かつマルチレイヤビットストリーム内の各レイヤに対するピクチャを含み得る。AUの各ピクチャは、それぞれが対応するVCL NALユニットに含まれるスライスに分割され得る。それ故、DU 553は、1つ以上のピクチャ、1つ以上のピクチャのスライス、またはこれらの組み合わせを含み得る。また、AU、ピクチャ、および/またはスライスの復号に使用されるパラメータは、非VCL NALユニットに含まれ得る。このように、DU 553は、DU 553内のVCL NALユニットの復号をサポートするのに必要なデータを含む、非VCL NALユニットを含んでいる。CPB 543は、HRD 500の先入先出バッファである。CPB 543は、ビデオデータを復号順に含むDU 553を含んでいる。CPB 543は、ビットストリーム適合性検証中に使用するために、ビデオデータを記憶する。
【0081】
CPB 543は、DU 553を復号プロセスコンポーネント545に転送する。復号プロセスコンポーネント545は、VVC規格に適合したコンポーネントである。例えば、復号プロセスコンポーネント545は、エンドユーザーによって使用されるデコーダ400をエミュレートしてよい。復号プロセスコンポーネント545は、例示的なエンドユーザーデコーダで達成できるレートでDU 553を復号する。復号プロセスコンポーネント545が、CPB 543のオーバーフローを防止するほど充分な速さでDU 553を復号できない場合は、ビットストリーム551は規格に適合しておらず、再エンコードが必要になる。
【0082】
復号プロセスコンポーネント545はDU 553を復号し、復号されたDU 555を生成する。復号されたDU 555は、復号されたピクチャを含む。復号されたDU 555は、DPB 547に転送される。DPB 547は、復号ピクチャバッファコンポーネント223、323、および/または423と実質的に同様であってよい。インター予測をサポートする目的で、復号されたDU 555から取得された、参照ピクチャ556として使用するためにマーキングされたピクチャは、さらなる復号をサポートするために、復号プロセスコンポーネント545に戻される。DPB 547は、復号されたビデオシーケンスを一連のピクチャ557として出力する。ピクチャ557は、通常はエンコーダによってビットストリーム551にエンコードされたピクチャを反映した、復元されたピクチャである。
【0083】
ピクチャ557は、出力クロッピングコンポーネント549に転送される。出力クロッピングコンポーネント549は、ピクチャ557に適合性クロッピングウィンドウを適用するように構成される。これにより、出力クロッピング済みピクチャ559が得られる。出力クロッピング済みピクチャ559は、完全に復元されたピクチャである。したがって、出力クロッピング済みピクチャ559は、ビットストリーム551を復号したときにエンドユーザーが見ることになるものを模倣している。このようにエンコーダは、エンコードが良好なことを確認するために、出力クロッピング済みピクチャ559を検討することができる。
【0084】
HRD 500は、ビットストリーム551内のHRDパラメータに基づいて初期化される。例えば、HRD 500は、VPS、SPS、および/またはSEIメッセージからHRDパラメータを読み出し得る。HRD 500は、次に、かかるHRDパラメータ内の情報に基づいて、ビットストリーム551で適合性テスト動作を行い得る。具体的な例として、HRD 500は、HRDパラメータから1つ以上のCPB送達スケジュールを決定してよい。送達スケジュールは、ビデオデータをCPBおよび/またはDPBなどのメモリ位置から/メモリ位置へ送達するタイミングを指定する。それ故、CPB送達スケジュールは、AU、DU 553、および/またはピクチャを、CPB 543へ/CPB 543から送達するタイミングを指定する。HRD 500は、DPB 547に対してDPB送達スケジュールを使用してよく、これはCPB送達スケジュールと同様であることに留意されたい。
【0085】
ビデオは、様々なハードウェア能力を有するデコーダで使用するために、また、様々なネットワーク条件に対応するために、異なったレイヤおよび/またはOLSに符号化され得る。CPB送達スケジュールは、このような問題を考慮して選択される。したがって、最適なハードウェアおよびネットワーク条件のために上位レイヤのサブビットストリームが指定され、それ故、上位レイヤは1つ以上のCPB送達スケジュールを受信する場合があり、CPB 543で使用するメモリの量は多く、DU 553をDPB 547に移送する際の遅延は小さくなる。同様に、デコーダハードウェア能力に制限がありかつ/またはネットワーク条件が悪い場合は、下位レイヤのサブビットストリームが指定される。それ故、下位レイヤは1つ以上のCPB送達スケジュールを受信する場合があり、CPB 543で使用するメモリの量は少なく、DU 553をDPB 547に移送する際の遅延は大きくなる。次に、サブビットストリームに予想される条件下で、結果として生じたサブビットストリームが正しく復号され得ることを確実にするために、OLS、レイヤ、サブレイヤ、またはこれらの組み合わせが、対応する送達スケジュールに従ってテストされ得る。したがって、ビットストリーム551のHRDパラメータは、CPB送達スケジュールを示すと同時に、HRD 500がCPB送達スケジュールを決定でき、かつCPB送達スケジュールを対応するOLS、レイヤ、および/またはサブレイヤと相関させられるような十分なデータを含むことができる。
【0086】
図6は、例示的なマルチレイヤビデオシーケンス600を示す概略図である。マルチレイヤビデオシーケンス600は、例えば方法100に従って、コーデックシステム200および/またはエンコーダ300などのエンコーダでエンコードされ、コーデックシステム200および/またはデコーダ400などのデコーダで復号され得る。さらに、マルチレイヤビデオシーケンス600は、HRD 500などのHRDによって、規格適合性について検査され得る。マルチレイヤビデオシーケンス600は、コーディングされたビデオシーケンスにおけるレイヤの例示的な適用を表すために含まれている。マルチレイヤビデオシーケンス600は、レイヤN 631およびレイヤN+1 632といった複数のレイヤを用いる任意のビデオシーケンスである。
【0087】
一例では、マルチレイヤビデオシーケンス600は、レイヤ間予測621を用い得る。レイヤ間予測621は、ピクチャ611、612、613、および614間、ならびに異なったレイヤのピクチャ615、616、617、および618間に適用される。図示されている例では、ピクチャ611、612、613、および614はレイヤN+1 632の一部であり、ピクチャ615、616、617、および618はレイヤN 631 の一部である。レイヤN 631および/またはレイヤN+1 632などのレイヤは、そのすべてが同様のサイズ、品質、解像度、信号対雑音比、能力といった同様の特性値に関連付けられたピクチャのグループである。レイヤは、同じレイヤIDおよび関連付けられた非VCL NALユニットを共有する1組のVCL NALユニットとして正式に定義され得る。VCL NALユニットは、ピクチャのコーディングされたスライスといったビデオデータを含むようにコーディングされたNALユニットである。非VCL NALユニットは、ビデオデータの復号、適合性検査を行うことその他の動作をサポートするシンタックスおよび/またはパラメータといった非ビデオデータを含むNALユニットである。
【0088】
図示されている例では、レイヤN+1 632は、レイヤN 631よりも大きい画像サイズに関連付けられている。したがって、この例では、レイヤN+1 632のピクチャ611、612、613、および614は、レイヤN 631のピクチャ615、616、617、および618よりも大きいピクチャサイズ(例えば、高さおよび幅が大きく、それ故サンプル数が多い)を有する。しかしながら、かかるピクチャは、他の特性によってレイヤN+1 632とレイヤN 631とに分けられ得る。レイヤN+1 632およびレイヤN 631の2つのレイヤのみが図示されているが、一連のピクチャは、関連付けられた特性に基づいて、任意の数のレイヤに分けられることができる。レイヤN+1 632およびレイヤN 631は、レイヤIDによっても表される。レイヤIDは、ピクチャに関連付けられるデータの項目であり、ピクチャが示されたレイヤの一部であることを表す。したがって、どのレイヤN+1 632またはレイヤN 631が対応するピクチャを含むかを示すために、各ピクチャ611~618は対応するレイヤIDに関連付けられ得る。例えば、レイヤIDは、NALユニットヘッダレイヤ識別子(nuh_layer_id)を含む場合があり、これは、NALユニットを含むレイヤ(例えば、レイヤ内にスライスおよび/またはピクチャのパラメータを含む)の識別子を指定するシンタックス要素である。レイヤN 631のように、低品質/小さい画像サイズ/小さいビットストリームサイズに関連付けられたレイヤは、通常は下位のレイヤIDが割り当てられ、下位レイヤと称される。さらに、レイヤN+1 632のように、高品質/大きい画像サイズ/大きいビットストリームサイズに関連付けられたレイヤは、通常は上位のレイヤIDが割り当てられ、上位レイヤと称される。
【0089】
異なったレイヤ631~632内のピクチャ611~618は、選択的に表示されるように構成される。具体例として、小さいピクチャが望ましい場合は、デコーダは現在表示時刻においてピクチャ615を復号して表示してよく、あるいは、大きいピクチャが望ましい場合は、デコーダは現在表示時刻においてピクチャ611を復号して表示してもよい。このように、上位レイヤN+1 632にあるピクチャ611~614は、(ピクチャサイズの違いにかかわらず)下位レイヤN 631にある対応するピクチャ615~618と実質的に同じ画像データを含む。具体的には、例えば、ピクチャ611はピクチャ615と実質的に同じ画像データを含み、ピクチャ612はピクチャ616と実質的に同じ画像データを含む。
【0090】
ピクチャ611~618は、同じレイヤN 631またはN+1 632内の他のピクチャ611~618を参照してコーディングされ得る。同じレイヤ内の別のピクチャを参照してピクチャをコーディングすることは、結果的にインター予測623になる。インター予測623は、実線の矢印で示されている。例えば、ピクチャ613は、レイヤN+1 632内のピクチャ611、612、および/または614のうちの1つまたは2つを参照として使用するインター予測623を用いてコーディングされてよく、一方向インター予測のために1つのピクチャが参照され、かつ/または双方向インター予測のために2つのピクチャが参照される。さらに、ピクチャ617は、レイヤN 631内のピクチャ615、616、および/または618のうちの1つまたは2つを参照として使用するインター予測623を用いてコーディングされてよく、一方向インター予測のために1つのピクチャが参照され、かつ/または双方向インター予測のために2つのピクチャが参照される。インター予測623を行う場合、ピクチャが同じレイヤ内の別のピクチャの参照用として使用されるとき、そのピクチャは参照ピクチャと呼ばれうる。例えば、ピクチャ612は、インター予測623に従ってピクチャ613をコーディングするのに使用される参照ピクチャになり得る。インター予測623は、マルチレイヤのコンテキストにおいてイントラレイヤ予測と呼ばれてもよい。このように、インター予測623は、現在ピクチャとは異なる参照ピクチャ内で示されたサンプルを参照することによって、現在ピクチャのサンプルをコーディングするメカニズムであり、参照ピクチャと現在ピクチャとは同じレイヤ内にある。
【0091】
ピクチャ611~618はまた、異なったレイヤ内の他のピクチャ611~618を参照してコーディングされ得る。このプロセスはレイヤ間予測621として知られており、破線の矢印で表されている。レイヤ間予測621は、参照ピクチャ内で示されたサンプルを参照することによって、現在ピクチャのサンプルをコーディングするメカニズムであり、現在ピクチャと参照ピクチャとは異なったレイヤ内にあり、それ故、異なったレイヤIDを有する。例えば、下位レイヤN 631内のピクチャは、上位レイヤN+1 632における対応するピクチャを符号化するために、参照ピクチャとして使用され得る。具体例として、ピクチャ611は、レイヤ間予測621に従って、ピクチャ615を参照してコーディングされ得る。このような場合、ピクチャ615はレイヤ間参照ピクチャとして使用される。レイヤ間参照ピクチャは、レイヤ間予測621に使用される参照ピクチャである。ほとんどの場合、レイヤ間予測621は、ピクチャ611といった現在ピクチャが、同じAU 627に含まれかつ下位レイヤにあるピクチャ615といった(1つまたは複数の)レイヤ間参照ピクチャのみを使用できるように制限される。複数の(例えば、2つより多い)レイヤが利用可能なときは、レイヤ間予測621は、現在ピクチャより下位にある(1つまたは複数の)複数レイヤ間参照ピクチャに基づいて、現在ピクチャをエンコード/復号することができる。
【0092】
ビデオエンコーダは、インター予測623とレイヤ間予測621との多くの別の組み合わせおよび/または置換を介してピクチャ611~618をエンコードするために、マルチレイヤビデオシーケンス600を使用することができる。例えば、ピクチャ615は、イントラ予測に従ってコーディングされ得る。次に、ピクチャ616~618が、ピクチャ615を参照ピクチャとして使用して、インター予測623に従ってコーディングされ得る。さらに、ピクチャ611は、ピクチャ615をレイヤ間参照ピクチャとして使用して、レイヤ間予測621に従ってコーディングされ得る。次に、ピクチャ612~614が、ピクチャ611を参照ピクチャとして使用して、インター予測623に従ってコーディングされ得る。このように、参照ピクチャは、異なったコーディングメカニズムに対し、単一のレイヤ参照ピクチャ、およびレイヤ間参照ピクチャの両方の働きをすることができる。下位レイヤN 631に基づいて、上位レイヤN+1 632ピクチャをコーディングすることによって、上位レイヤN+1 632は、インター予測623およびレイヤ間予測621よりコーディング効率がずっと低いイントラ予測を用いることを回避することができる。このように、イントラ予測の符号化効率の悪さは最小/最低品質のピクチャに限定され、それ故ビデオデータの最小量をコーディングすることに限定され得る。参照ピクチャおよび/またはレイヤ間参照ピクチャとして使用されるピクチャは、参照ピクチャリスト構造に含まれる(1つまたは複数の)参照ピクチャリストのエントリに示され得る。
【0093】
ピクチャ611~618は、アクセスユニット(AU)627にも含まれ得る。AU 627は、異なったレイヤに含まれるコーディングされたピクチャのセットであり、復号中に同じ出力時間に関連付けられる。したがって、同じAU 627内のコーディングされたピクチャは、デコーダにおいて同時にDPBから出力されるようにスケジュールされる。例えば、ピクチャ614と618とは同じAU 627内にある。ピクチャ613および617は、ピクチャ614および618とは異なるAU 627内にある。同じAU 627内のピクチャ614と618とは、選択的に表示されてよい。例えば、小さいピクチャサイズが望ましいときはピクチャ618が表示されてよく、大きいピクチャサイズが望ましいときはピクチャ614が表示されてよい。大きいピクチャサイズが望ましいときはピクチャ614が出力され、ピクチャ618はレイヤ間予測621にのみ使用される。この場合、ピクチャ618は、レイヤ間予測621が終了すると、出力されることなく破棄される。
【0094】
AU 627は、1つ以上のピクチャユニット(PU)628にさらに分割され得る。PU 628は、1つのコーディングされたピクチャを含むAU 627のサブセットである。PU 628は、指定した分類ルールに従って互いに関連付けられ、復号順に連続し、厳密に1つのコーディングされたピクチャを含む、NALユニットのセットとして正式に定義され得る。PU 628は、HRDおよび/または関連付けられた適合性テストに関して述べられるときは、復号ユニット(DU)と呼ばれる場合があることに留意されたい。
【0095】
ピクチャ611~618、そしてAU 627およびPU 628は、それぞれ時間識別子(TemporalId)629に関連付けられることにも留意されたい。TemporalId 629は、ビデオシーケンス内のNALユニットの相対的な位置を示す導出された識別子である。同じAU 627内のピクチャおよび/またはPU 628は、TemporalId 629の同じ値に関連付けられる。例えば、シーケンス内の第1のAU 627はゼロのTemporalId 629を含み、後続のAU 627は、連続的に増加するTemporalId 629を含み得る。非VCL NALユニットもまた、TemporalId 629と関連付けられ得る。例えば、パラメータセットは、AU 627に含まれ、AU 627内の1つ以上のピクチャに関連付けられてもよい。そのような場合、パラメータセットのTemporalId 629は、AU 627のTemporalId 629以下であってもよい。
【0096】
図7は、例示的なビットストリーム700を示す概略図である。例えば、ビットストリーム700は、方法100に従って、コーデックシステム200および/またはデコーダ400による復号のために、コーデックシステム200および/またはエンコーダ300によって生成されうる。さらに、ビットストリーム700は、マルチレイヤビデオシーケンス600を含み得る。加えて、ビットストリーム700は、HRD 500などのHRDの動作を制御するために、様々なパラメータを含み得る。かかるパラメータに基づき、HRDは、復号のためのデコーダに向けた送信の前に、規格との適合性についてビットストリーム700を検証することができる。
【0097】
ビットストリーム700は、VPS 711と、1つ以上のSPS 713と、複数のピクチャパラメータセット(PPS)715と、複数の適応パラメータセット(APS)716と、複数のピクチャヘッダ718と、複数のスライスヘッダ717と、画像データ720と、SEIメッセージ719とを含む。VPS 711は、ビットストリーム700全体に関するデータを含む。例えば、VPS 711は、ビットストリーム700内で使用されるOLS、レイヤ、および/またはサブレイヤに関するデータを含み得る。SPS 713は、ビットストリーム700に含まれるコーディングされたビデオシーケンス内の全ピクチャに共通するシーケンスデータを含む。例えば、各レイヤは1つ以上のコーディングされたビデオシーケンスを含み、各コーディングされたビデオシーケンスは、対応するパラメータについてSPS 713を参照してよい。SPS 713内のパラメータは、ピクチャのサイズ調整、ビット深度、コーディングツールパラメータ、ビットレート制限などを含むことができる。各シーケンスがSPS 713を参照する際は、いくつかの例では、1つのSPS 713が複数シーケンスについてのデータを含みうることに留意されたい。PPS 715は、ピクチャ全体に適用されるパラメータを含む。それ故、ビデオシーケンス内の各ピクチャは、PPS 715を参照してよい。いくつかの例において、各ピクチャがPPS 715を参照する一方で、単一のPPS 715が、複数のピクチャのデータを含みうることに留意されたい。例えば、複数の同様のピクチャが、同様のパラメータに従ってコーディングされうる。このような場合は、単一のPPS 715が、かかる同様のピクチャのデータを含み得る。PPS 715は、対応するピクチャ内のスライスに使用できるコーディングツール、量子化パラメータ、オフセットなどを示すことができる。
【0098】
APS 716は、1つ以上のピクチャ725内の1つ以上のスライス727に適用されるシンタックス要素/パラメータを含むシンタックス構造である。このような相関関係は、スライス727に関連付けられたスライスヘッダ717で見出されたシンタックス要素に基づいて決定され得る。例えば、APS 716は、第1のピクチャ721内の少なくとも1つの、ただしすべてではないスライス727、第2のピクチャ725内の少なくとも1つの、ただしすべてではないスライス727などに適用され得る。APS 716は、APS 716に含まれているパラメータに基づいて、複数のタイプに分割され得る。このようなタイプは、適応型ループフィルタ(ALF)APS、クロマスケーリングによるルママッピング(LMCS)APS、およびスケーリングリスト(Scaling)APSを含み得る。ALFは、変数パラメータで制御される伝達関数を含み、伝達関数を精緻化するためにフィードバックループからのフィードバックを用いる適応型ブロックに基づくフィルタである。さらに、ALFは、ブロックに基づくコーディングの結果生じる、にじみアーチファクトおよびリンギングアーチファクトなどのコーディングアーチファクト(例えば、エラー)を補正するために使用される。このように、ALF APSに含まれるALFパラメータは、デコーダでの復号中に、ブロックに基づくコーディングアーチファクトをALFに除去させるように、エンコーダによって選択されたパラメータを含み得る。LMCSは、ルマサンプルを特定の値にマッピングする復号プロセスの一部として適用され、場合によってはクロマサンプルの値にスケーリング動作をさらに適用するプロセスである。LMCSツールは、レート歪みを低減するために、対応するクロマ成分に対するマッピングに基づいて、ルマ成分をリシェイプし得る。このように、LMCS APSは、LMCSツールにルマ成分をリシェイプさせるために、エンコーダによって選択されたパラメータを含む。スケーリングリストAPSは、指定したフィルタによって使用される量子化マトリックスに関連付けられたコーディングツールパラメータを含む。このように、APS 716は、HRDにおける適合性テスト中に、かつ/またはデコーダでの復号中に、コーディングされたスライス727に様々なフィルタを適用するために使用されるパラメータを含み得る。
【0099】
ピクチャヘッダ718は、コーディングされたピクチャ725の全スライス727に適用されるシンタックス要素を含むシンタックス構造である。例えば、ピクチャヘッダ718は、ピクチャ順序カウント情報、参照ピクチャデータ、イントラランダムアクセスポイント(IRAP)ピクチャに関するデータ、ピクチャ725に対するフィルタ適用などに関するデータなどを含み得る。PUは、厳密に1つのピクチャヘッダ718、および厳密に1つのピクチャ725を含み得る。このように、ビットストリーム700は、ピクチャ725ごとに厳密に1つのピクチャヘッダ718を含み得る。スライスヘッダ717は、ピクチャ725内の各スライス727に固有のパラメータを含む。それ故、ビデオシーケンスにおいて、スライス727ごとに1つのスライスヘッダ717があってよい。スライスヘッダ717は、スライス種別情報、フィルタリング情報、予測重み付け、タイルエントリポイント、デブロッキングパラメータなどを含み得る。場合によっては、シンタックス要素は、ピクチャ725内の全スライス727で同じであってよい。冗長性を低減するために、ピクチャヘッダ718およびスライスヘッダ717は、数種類の情報を共有してもよい。例えば、ピクチャ725全体に適用するときは、いくつかのパラメータ(例えば、フィルタリングパラメータ)がピクチャヘッダ718に含まれてもよく、あるいはピクチャ725全体のサブセットであるスライス727のグループに適用するときは、スライスヘッダ717に含まれてもよい。
【0100】
画像データ720は、インター予測および/またはイントラ予測に従ってエンコードされたビデオデータ、ならびに対応する変換され量子化された残差データを含む。例えば、画像データ720は、レイヤ723、ピクチャ725、および/またはスライス727を含み得る。レイヤ723は、nuh_layer_idといったレイヤIDで示される通りに指定された特性(例えば、共通の解像度、フレームレート、画像サイズなど)を共有するVCL NALユニット745、および関連付けられた非VCL NALユニット741のセットである。例えば、レイヤ723は、同じnuh_layer_idを共有するピクチャ725のセットを含み得る。レイヤ723は、レイヤ631および/または632と実質的に同様であってもよい。nuh_layer_idは、少なくとも1つのNALユニットを含むレイヤ723の識別子を指定するシンタックス要素である。例えば、ベースレイヤとして知られる最低の質のレイヤ723はnuh_layer_idの最低値を含んでよく、より高い質のレイヤ723のnuh_layer_idの値は大きくなる。それ故、より下位のレイヤはnuh_layer_idの値がより小さいレイヤ723であり、より上位のレイヤはnuh_layer_idの値がより大きいレイヤ723になる。
【0101】
ピクチャ725は、フレームまたはそのフィールドを生成するルマサンプルの配列および/またはクロマサンプルの配列である。例えば、ピクチャ725は、表示するために出力される、または出力するために(1つまたは複数の)他のピクチャ725の符号化をサポートするのに使用され得る、コーディングされた画像である。ピクチャ725は、1つ以上のスライス727を含む。スライス727は、単一のNALユニットに排他的に含まれるピクチャ725の整数個の完全なタイル、または(例えば、タイル内の)整数個の連続する完全なコーディングツリーユニット(CTU)行で定義され得る。スライス727は、CTUおよび/またはコーディングツリーブロック(CTB)へとさらに分割される。CTUは、コーディングツリーによってパーティショニングされうる所定のサイズの一群のサンプルである。CTBは、CTUのサブセットであり、CTUのルマ成分またはクロマ成分を含む。CTU/CTBは、コーディングツリーに基づいて、符号化ブロックへとさらに分割される。符号化ブロックは、次に、予測メカニズムに従ってエンコード/復号されることができる。
【0102】
SEIメッセージ719は、復号されたピクチャ内のサンプルの値を決定するために、復号プロセスで必要とされない情報を伝達する、特定のセマンティクスを有するシンタックス構造である。例えば、SEIメッセージ719は、HRDプロセスをサポートするデータ、またはデコーダでビットストリーム700を復号するのに直接関係しない他のサポートデータを含み得る。1組のSEIメッセージ719は、スケーラブルネスティングSEIメッセージとして実施され得る。スケーラブルネスティングSEIメッセージは、SEIメッセージ719を特定のレイヤ723と関連付けるメカニズムを提供する。スケーラブルネスティングSEIメッセージは、複数のスケーラブルネストされたSEIメッセージを含むメッセージである。スケーラブルネストされたSEIメッセージは、1つ以上のOLS、または1つ以上のレイヤ723に対応するSEIメッセージ719である。OLSは、少なくとも1つのレイヤ723が出力レイヤである、1組のレイヤ723である。したがって、スケーラブルネスティングSEIメッセージは、状況に応じて、スケーラブルネストされたSEIメッセージのセットを含むものと言われてよく、あるいはSEIメッセージ719のセットを含むものと言われてもよい。さらに、スケーラブルネスティングSEIメッセージは、同種のスケーラブルネストされたSEIメッセージのセットを含む。SEIメッセージ719は、対応するOLSおよび/またはレイヤ723をテストするCPBを管理するために、HRDを初期化するためのHRDパラメータを含む、BP SEIメッセージを含み得る。SEIメッセージ719はまた、対応するOLSおよび/またはレイヤ723をテストするために、CPBおよび/またはDPBでAUの送達情報を管理するHRDパラメータを含む、PT SEIメッセージを含み得る。SEIメッセージ719はまた、対応するOLSおよび/またはレイヤ723をテストするために、CPBおよび/またはDPBでDUの送達情報を管理するHRDパラメータを含む、DUI SEIメッセージを含み得る。
【0103】
ビットストリーム700は、NALユニットのシーケンスとしてコーディングされ得る。NALユニットは、ビデオデータおよび/またはサポートするシンタックスの入れ物である。NALユニットは、VCL NALユニット745または非VCL NALユニット741でありうる。VCL NALユニット745は、ビデオデータを含むようにコーディングされたNALユニットである。具体的には、VCL NALユニット745は、スライス727、および関連付けられたスライスヘッダ717を含む。非VCL NALユニット741は、ビデオデータの復号、適合性検査を行うことその他の動作をサポートするシンタックスおよび/またはパラメータなどの、非ビデオデータを含むNALユニットである。非VCL NALユニット741は、VPS NALユニット、SPS NALユニット、PPS NALユニット、APS NALユニット、ピクチャヘッダ(PH)NALユニット、およびSEI NALユニットを含んでよく、これらはそれぞれVPS 711、SPS 713、PPS 715、APS 716、ピクチャヘッダ718、およびSEIメッセージ719を含む。前述のNALユニットのリストは、例示的なものであって網羅的なものではないことに留意されたい。
【0104】
各NALユニットは、NALユニットヘッダ時間識別子プラスワン(nuh_temporal_id_plus1)731に関連付けられる。nuh_temporal_id_plus1 731は、ビデオシーケンス内の対応するNALユニットの相対的な位置を示す、シグナリングされる識別子である。デコーダおよび/またはHRDは、nuh_temporal_id_plus1 731の値に基づいて、対応するNALユニットのTemporalIdを決定することができる。具体的には、nuh_temporal_id_plus1 731は、NALユニットのヘッダでシグナリングされる。NALユニットのTemporalIdは、デコーダ/HRDによって、nuh_temporal_id_plus1 731の値から1を引くことによって決定され得る。このように、nuh_temporal_id_plus1 731の値は、ゼロに設定されてはならず、これはTemporalIdが負の値になることを生じさせるためである。
【0105】
さらに、SEIメッセージ719は、プレフィックスSEIメッセージおよび/またはサフィックスSEIメッセージとして用いられ得る。プレフィックスSEIメッセージは、1つ以上の後続のNALユニットに適用するSEIメッセージ719である。サフィックスSEIメッセージは、1つ以上の先行するNALユニットに適用するSEIメッセージ719である。プレフィックスSEIメッセージはプレフィックスSEI NALユニットタイプ(PREFIX_SEI_NUT)742に含まれ、サフィックスSEIメッセージはサフィックスSEI NALユニットタイプ(SUFFIX_SEI_NUT)743に含まれる。PREFIX_SEI_NUT 742は非VCL NALユニットであり、非VCL NALユニットがプレフィックスSEIメッセージを含んでいることを示すように設定されたタイプ値を有する。SUFFIX_SEI_NUT 743は非VCL NALユニットであり、非VCL NALユニットがサフィックスSEIメッセージを含んでいることを示すように設定されたタイプ値を有する。
【0106】
上述したように、SEIメッセージ719は、ビットストリームの規格との適合性を検証するために、エンコーダで動作するHRDによって使用されるパラメータを含み得る。SEIメッセージ719は、変化するピクチャ725および/またはレイヤ723の変化する組み合わせに関連し得る。したがって、複雑なマルチレイヤビットストリームでは、適切なSEIメッセージ719が適切なピクチャ725および/またはレイヤ723に確実に関連付けられるようにすることが難しくなる可能性がある。さらに、プレフィックスSEIメッセージは、プレフィックスSEIメッセージに関連付けられた第1のNALユニットよりも前にビットストリーム700に含まれていなければならず、サフィックスSEIメッセージは、サフィックスSEIメッセージに関連付けられた第1のNALユニットの直後にビットストリーム700に含まれていなければならない。SEIメッセージ719がビットストリーム700内で正しく配置されておらず、かつ/または正しいレイヤ723および/またはピクチャ725に関連付けられていない場合は、HRDがレイヤ723および/またはピクチャ725の適合性を適切に検証できない場合がある。これは、HRDによって生じるエンコードエラー、および/またはデコーダで復号するときのエラーになる場合がある。例えば、HRDがピクチャを不適切にフィルタリングしたり、規格違反の検出に失敗したりする場合がある。さらに、デコーダが送信に関連する符号化エラーの検出に失敗したり、送信に関連する符号化エラーの表示をそのようなエラーが存在しないときに不適切に返したりする場合がある。
【0107】
ビットストリーム700は、SEIメッセージ719が、対応するレイヤ723、ピクチャ725、スライス727、および/またはNALユニットに確実に正しく関連付けられるように修正される。図6を参照して説明したように、マルチレイヤビットストリームは、ピクチャおよび関連付けられたパラメータをAUへと整理し得る。AUは、異なったレイヤに含まれる1組のコーディングされたピクチャであり、同じ出力時間に関連付けられる。ビットストリーム700において、各SEIメッセージ719は、SEIメッセージ719に関連付けられた第1のピクチャ725として同じAU内に配置される。さらに、SEIメッセージ719は、TemporalIdを割り当てられる。SEIメッセージ719のTemporalIdは、SEIメッセージ719を含むAUのTemporalIdと等しくなるように制限される。特定の例において、AU内の各ピクチャ725は、同じTemporalIdの値を共有し、それ故、nuh_temporal_id_plus1 731の同じ値を共有する。したがって、SEIメッセージ719のnuh_temporal_id_plus1 731は、SEIメッセージ719が適用するものに対応するピクチャ725の各々のnuh_temporal_id_plus1 731と同じである。
【0108】
別の言い方をすれば、ピクチャ725はVCL NALユニット745に含まれ、パラメータは非VCL NALユニット741に含まれる。非VCL NALユニット741が、SEIメッセージ719を含む、タイプがPREFIX_SEI_NUT 742またはSUFFIX_SEI_NUT 743のSEI NALユニットのとき、非VCL NALユニット741のTemporalId/nuh_temporal_id_plus1 731は、非VCL NALユニット741を含むAUのTemporalId/nuh_temporal_id_plus1 731と等しくなるように制限される。この手法により、SEIメッセージ719がAU内の対応するピクチャ725に正しく関連付けられることが確実になる。それ故、様々なエラーが回避され得る。結果として、エンコーダおよびデコーダの機能が向上される。さらに、符号化効率が向上され、エンコーダにおいてもデコーダにおいても、プロセッサ、メモリ、および/またはネットワークシグナリングリソースの使用率が減少する。
【0109】
ここで、前述した情報を、以下においてより詳細に説明する。階層化されたビデオコーディングは、スケーラブルなビデオコーディング、またはスケーラビリティを有するビデオコーディングとも称される。ビデオコーディングのスケーラビリティは、マルチレイヤコーディング技術を使用してサポートされ得る。マルチレイヤビットストリームは、ベースレイヤ(BL)と、1つ以上の拡張レイヤ(EL)とを含む。スケーラビリティの例は、空間スケーラビリティ、品質/信号対雑音比(SNR)スケーラビリティ、マルチビュースケーラビリティ、フレームレートスケーラビリティなどを含む。マルチレイヤコーディング技術が使用されるときは、ピクチャまたはその一部は、参照ピクチャを使用せずにコーディングされてもよく(イントラ予測)、同じレイヤにある参照ピクチャを参照してコーディングされてもよく(インター予測)、かつ/または(1つまたは複数の)他のレイヤにある参照ピクチャを参照してコーディングされてもよい(レイヤ間予測)。現在ピクチャのレイヤ間予測に使用される参照ピクチャは、レイヤ間参照ピクチャ(ILRP)と称される。図6は、空間スケーラビリティ用のマルチレイヤコーディングの一例を示し、異なったレイヤ内のピクチャは解像度が異なる。
【0110】
単一レイヤコーディング用の(1つまたは複数の)プロファイルから離れた(1つまたは複数の)プロファイルにおいて、いくつかのビデオコーディングファミリがスケーラビリティについてのサポートを提供する。スケーラブルビデオコーディング(SVC)は、空間、時間、および品質のスケーラビリティについてのサポートを提供する、高度ビデオコーディング(AVC)のスケーラブルな拡張である。SVCの場合、下位レイヤからのコロケートブロックを使用してEL MBが予測されるかどうかを示すために、ELピクチャ内の各マクロブロック(MB)でフラグがシグナリングされる。コロケートブロックからの予測は、テクスチャ、動きベクトル、および/またはコーディングモードを含み得る。SVCの実施態様は、未修正のAVCの実施態様をその設計に直接再使用しない場合がある。SVC ELマクロブロックシンタックスおよび復号プロセスは、AVCシンタックスおよび復号プロセスとは異なる。
【0111】
スケーラブルHEVC(SHVC)は、空間および品質のスケーラビリティについてのサポートを提供するHEVCの拡張である。マルチビューHEVC(MV-HEVC)は、マルチビュースケーラビリティについてのサポートを提供するHEVCの拡張である。3D HEVC(3D-HEVC)は、MV-HEVCよりも高度かつ効率的な3Dビデオコーディングについてのサポートを提供する、HEVCの拡張である。時間スケーラビリティは、単一レイヤのHEVCコーデックの一体部分として含まれ得る。HEVCのマルチレイヤ拡張において、レイヤ間予測に使用される復号されたピクチャは同じAUからのみ得られ、ロングターム参照ピクチャ(LTRP)として扱われる。かかるピクチャは、現在レイヤ内の他の時間参照ピクチャとともに、(1つまたは複数の)参照ピクチャリスト内の参照インデックスが割り当てられる。レイヤ間予測(ILP)は、(1つまたは複数の)参照ピクチャリスト内の(1つまたは複数の)レイヤ間参照ピクチャを参照するために、参照インデックスの値を設定することによって、予測ユニットレベルで達成される。空間スケーラビリティは、ILRPが、エンコードまたは復号される現在ピクチャとは異なる空間解像度を有するときに、参照ピクチャまたはその一部をリサンプリングする。参照ピクチャのリサンプリングは、ピクチャレベルまたはコーディングブロックレベルのいずれかで実現され得る。
【0112】
VVCもまた、階層化されたビデオコーディングをサポートし得る。VVCビットストリームは、複数のレイヤを含むことができる。レイヤは、すべて互いに独立することができる。例えば、各レイヤは、レイヤ間予測を使用せずにコーディングされ得る。この場合、レイヤは同報配信レイヤとも称される。場合によっては、いくつかのレイヤはILPを使用してコーディングされる。VPS内のフラグは、レイヤが同報配信レイヤかどうか、あるいは一部のレイヤがILPを使用しているかどうかを示すことができる。一部のレイヤがILPを使用しているときは、レイヤ間のレイヤ依存性もまたVPS内でシグナリングされる。SHVCおよびMV-HEVCとは異なり、VVCはOLSを指定しなくてよい。OLSは、指定された1組のレイヤを含み、1組のレイヤのうちの1つ以上のレイヤが出力レイヤになるように指定される。出力レイヤは、出力されるOLSのレイヤである。VVCのいくつかの実施態様では、レイヤが同報配信レイヤのときは、1つのレイヤのみが復号および出力用に選択され得る。VVCのいくつかの実施態様では、いずれかのレイヤがILPを使用しているときは、すべてのレイヤを含むビットストリーム全体が復号されるように指定される。さらに、レイヤのうちのいくつかのレイヤが出力レイヤに指定される。出力レイヤは、唯一の最上位レイヤ、全レイヤ、あるいは最上位レイヤに1組の表示された下位レイヤを加えたものになるように表示され得る。
【0113】
前述した態様には、いくつか問題がある。例えば、SPS、PPS、およびAPS NALユニットのnuh_layer_id値が適切に制限されない場合がある。さらに、SEI NALユニットのTemporalId値が適切に制限されない場合がある。加えて、参照ピクチャのリサンプリングが可能にされ、かつCLVS内のピクチャの空間解像度が異なるときは、NoOutputOfPriorPicsFlagの設定が適切に指定されない場合がある。また、いくつかのビデオコーディングシステムサフィックスSEIメッセージは、スケーラブルネスティングSEIメッセージに含めることができない。別の例として、バッファリング期間、ピクチャタイミング、および復号ユニット情報のSEIメッセージは、VPSおよび/またはSPSに対する解析依存性を含む場合がある。
【0114】
概して、本開示はビデオ符号化の改善手法について説明する。技術の説明はVVCに基づく。しかしながら、この技術は、他のビデオコーデック仕様に基づく階層化されたビデオ符号化にも適合する。
【0115】
上述した1つ以上の問題が、以下の通り解決され得る。SPS、PPS、およびAPS NALユニットのnuh_layer_id値が、ここでは適切に制限される。SEI NALユニットのTemporalId値が、ここでは適切に制限される。参照ピクチャのリサンプリングが可能にされ、かつCLVS内のピクチャの空間解像度が異なるときに、NoOutputOfPriorPicsFlagの設定が適切に指定される。サフィックスSEIメッセージは、スケーラブルネスティングSEIメッセージに含めることができる。VPSまたはSPSに対するBP、PT、およびDUI SEIメッセージの解析依存性は、BP SEIメッセージシンタックス内のシンタックス要素decoding_unit_hrd_params_present_flagと、PT SEIメッセージシンタックス内のシンタックス要素decoding_unit_hrd_params_present_flag、およびdecoding_unit_cpb_params_in_pic_timing_sei_flagと、DUI SEIメッセージ内のシンタックス要素decoding_unit_cpb_params_in_pic_timing_sei_flagとを繰り返すことによって除去され得る。
【0116】
前述したメカニズムの例示的な実施態様は、以下の通りである。例示的な汎用NALユニットのセマンティクスは、以下の通りである。
【0117】
nuh_temporal_id_plus1から1を引いたものは、NALユニットの時間識別子を指定する。nuh_temporal_id_plus1の値はゼロであってはならない。変数TemporalIdは以下の通りに導出される。
TemporalId=nuh_temporal_id_plus1-1
nal_unit_typeが両端値を含めてIDR_W_RADL~RSV_IRAP_13の範囲内にあるときは、TemporalIdはゼロでなければならない。nal_unit_typeがSTSA_NUTのときは、TemporalIdはゼロであってはならない。
【0118】
TemporalIdの値は、アクセスユニットの全VCL NALユニットと同じでなければならない。コーディングされたピクチャ、レイヤアクセスユニット、またはアクセスユニットのTemporalIdの値は、コーディングされたピクチャのVCL NALユニット、レイヤアクセスユニット、またはアクセスユニットのTemporalIdの値であってもよい。サブレイヤ表現のTemporalIdの値は、サブレイヤ表現内の全VCL NALユニットのTemporalIdの最大値であってもよい。
【0119】
非VCL NALユニットのTemporalIdの値は、以下のように制限される。nal_unit_typeがDPS_NUT、VPS_NUT、またはSPS_NUTと等しければ、TemporalIdはゼロであり、NALユニットを含むアクセスユニットのTemporalIdはゼロでなければならない。あるいはnal_unit_typeがEOS_NUTまたはEOB_NUTと等しければ、TemporalIdはゼロでなければならない。あるいは、nal_unit_typeがAUD_NUT、FD_NUT、PREFIX_SEI_NUT、またはSUFFIX_SEI_NUTと等しければ、TemporalIdは、NALユニットを含むアクセスユニットのTemporalIdと等しくなければならない。あるいは、nal_unit_typeがPPS_NUTまたはAPS_NUTと等しければ、TemporalIdは、NALユニットを含むアクセスユニットのTemporalId以上でなければならない。NALユニットが非VCL NALユニットのとき、TemporalIdの値は、非VCL NALユニットを適用する全アクセスユニットのTemporalId値の最小値でなければならない。nal_unit_typeがPPS_NUTまたはAPS_NUTと等しければ、TemporalIdは、含んでいるアクセスユニットのTemporalId以上であってよい。これは、ビットストリームの先頭にPPSおよびAPSがすべて含まれ得るからである。さらに、第1のコーディングされたピクチャは、ゼロと等しいTemporalIdを有する。
【0120】
例示的なシーケンスパラメータセットRBSPセマンティクスは以下の通りである。SPS RBSPは、参照される前に、復号プロセスに使用可能でなければならない。SPSは、TemporalIdがゼロの少なくとも1つのアクセスユニットに含まれるか、あるいは外部メカニズムによって提供されてもよい。SPSを含むSPS NALユニットは、SPSを参照する、PPS NALユニットの最低nuh_layer_id値と等しいnuh_layer_id を有するように制限され得る。
【0121】
例示的なピクチャパラメータセットRBSPセマンティクスは以下の通りである。PPS RBSPは、参照される前に、復号プロセスに使用可能でなければならない。PPSは、TemporalIdがPPS NALユニットのTemporalId以下の少なくとも1つのアクセスユニットに含まれるか、あるいは外部メカニズムによって提供されねばならない。PPS RBSPを含むPPS NALユニットは、PPSを参照するコーディングされたスライスNALユニットの最低nuh_layer_id値と等しいnuh_layer_idを有していなければならない。
【0122】
例示的な適応パラメータセットセマンティクスは以下の通りである。各APS RBSPは、参照される前に、復号プロセスに使用可能でなければならない。APSもまた、TemporalIdが、APSを参照するコーディングされたスライスNALユニットのTemporalId以下の少なくとも1つのアクセスユニットに含まれるか、あるいは外部メカニズムによって提供されねばならない。APS NALユニットは、複数レイヤのピクチャ/スライスによって共有されることを許可される。APS NALユニットのnuh_layer_idは、APS NALユニットを参照するコーディングされたスライスNALユニットの最低nuh_layer_id値と等しくなければならない。あるいは、APS NALユニットは、複数レイヤのピクチャ/スライスによって共有されなくてよい。APS NALユニットのnuh_layer_idは、APSを参照するスライスのnuh_layer_idと等しくなければならない。
【0123】
一例において、現在ピクチャを復号する前にDPBからピクチャを除去することについて、以下の通り説明される。現在ピクチャを復号する前に(ただし現在ピクチャの第1のスライスのスライスヘッダの解析後に)、DPBからピクチャを除去することが、アクセスユニットn(現在ピクチャを含む)の第1の復号ユニットのCPB除去時間に生じ得る。このプロセスは以下の通りである。参照ピクチャリスト構築のための復号プロセスが呼び出され、かつ参照ピクチャマーキングのための復号プロセスが呼び出される。
【0124】
現在ピクチャが、ピクチャゼロでない符号化レイヤビデオシーケンス開始(CLVSS)ピクチャのときは、以下の順序のステップが適用される。テスト対象のデコーダに対し、変数NoOutputOfPriorPicsFlagが以下の通りに導出される。SPSから導出されたpic_width_max_in_luma_samples、pic_height_max_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8、またはsps_max_dec_pic_buffering_minus1[ Htid ]の値が、先行するピクチャによって参照されるSPSから導出された pic_width_in_luma_samples、pic_height_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8、またはsps_max_dec_pic_buffering_minus1[ Htid ]の値とそれぞれ異なるときは、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagの値にかかわらず、テスト対象のデコーダによって1に設定される場合がある。このような条件下では、NoOutputOfPriorPicsFlagをno_output_of_prior_pics_flagと同じに設定することが好ましい場合があるが、この場合は、テスト対象のデコーダが、NoOutputOfPriorPicsFlagを1に設定することが許容されていることに留意されたい。そうでない場合は、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagと同じに設定してよい。
【0125】
テスト対象のデコーダに対して導出されたNoOutputOfPriorPicsFlagの値がHRDに適用され、その結果、NoOutputOfPriorPicsFlagの値が1のときは、DPB内のすべてのピクチャストレージバッファが、含んでいるピクチャを出力することなく空にされ、DPBフルネスがゼロに設定される。以下の条件の両方が、DPB内の任意のピクチャkに当てはまるとき、DPB内のかかるピクチャkはすべてDPBから除去される。ピクチャkは、参照に使用されないものとしてマークされ、ピクチャkはゼロと等しいPictureOutputFlagを有し、あるいは対応するDPB出力時間が、現在ピクチャnの第1の復号ユニット(復号ユニットmで表される)のCPB除去時間以下である。これは、DpbOutputTime[ k ]がDuCpbRemovalTime[ m ]以下のときに生じ得る。DPBから除去される各ピクチャに対し、DPBフルネスが1だけデクリメントされる。
【0126】
一例において、DPBからのピクチャの出力または除去は以下の通り説明される。現在ピクチャを含むアクセスユニットの第1の復号ユニットがCPBから除去されたときは、現在ピクチャを復号する前に(ただし現在ピクチャの第1のスライスのスライスヘッダの解析後に)、DPBからのピクチャの出力および除去が生じる場合があり、以下の通りに進む。参照ピクチャリスト構築のための復号プロセス、および参照ピクチャマーキングのための復号プロセスが呼び出される。
【0127】
現在ピクチャが、ピクチャゼロでないCLVSSピクチャである場合は、以下の順序のステップが適用される。テスト対象のデコーダに対し、変数NoOutputOfPriorPicsFlagが以下の通りに導出され得る。SPSから導出されたpic_width_max_in_luma_samples、pic_height_max_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8、またはsps_max_dec_pic_buffering_minus1[ Htid ]の値が、先行するピクチャによって参照されるSPSから導出されたpic_width_in_luma_samples、pic_height_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8、またはsps_max_dec_pic_buffering_minus1[ Htid ]の値とそれぞれ異なるときは、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagの値にかかわらず、テスト対象のデコーダによって1に設定される場合がある。このような条件下では、NoOutputOfPriorPicsFlagをno_output_of_prior_pics_flagと同じに設定することが好ましいが、この場合は、テスト対象のデコーダがNoOutputOfPriorPicsFlagを1に設定できることに留意されたい。あるいは、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagと同じに設定され得る。
【0128】
テスト対象のデコーダに対して導出されたNoOutputOfPriorPicsFlagの値は、以下の通りにHRDに適用され得る。NoOutputOfPriorPicsFlagの値が1のときは、DPB内のすべてのピクチャストレージバッファは、それが含むピクチャを出力することなく空にされ、DPBフルネスがゼロに設定される。そうでない場合(NoOutputOfPriorPicsFlagの値が0のとき)は、出力する必要がなく、参照用に使用されないものとしてマーキングされた、ピクチャを含むすべてのピクチャストレージバッファが(出力することなく)空にされ、かつバンピングプロセスを繰り返し呼び出すことによって、DPB内の空でないピクチャストレージバッファがすべて空にされ、DPBフルネスがゼロに設定される。
【0129】
そうでない場合(現在ピクチャがCLVSSピクチャでない場合)は、出力する必要がなく、かつ参照のために使用されないとマークされたピクチャを含む、すべてのピクチャストレージバッファが(出力することなく)空にされる。空にされる各ピクチャストレージバッファに対し、DPBフルネスが1だけデクリメントされる。以下の条件の1つ以上が当てはまるときは、バンピングプロセスが繰り返し呼び出され、その一方で、以下の条件がいずれも当てはまらなくなるまで、空にされた追加ピクチャストレージバッファのそれぞれに対して、さらにDPBフルネスを1だけデクリメントする。条件とは、出力に必要とマークされたDPB内のピクチャの数が、sps_max_num_reorder_pics[ Htid ]より多いことである。他の条件は、sps_max_latency_increase_plus1[ Htid ]がゼロでないこと、および関連付けられた変数PicLatencyCountがSpsMaxLatencyPictures[ Htid ]以上である、出力に必要とマークされた、少なくとも1つのピクチャがDPB内にあることである。他の条件は、DPB内のピクチャの数が、SubDpbSize[ Htid ]以上になることである。
【0130】
例示的な汎用SEIメッセージのシンタックスは、以下の通りである。
【0131】
【表1】
【0132】
例示的なスケーラブルネスティングSEIメッセージのシンタックスは、以下の通りである。
【0133】
【表2】
【0134】
例示的なスケーラブルネスティングSEIメッセージのセマンティクスは、以下の通りである。スケーラブルネスティングSEIメッセージは、特定のOLSのコンテキストにおいて、SEIメッセージを特定のレイヤと関連付けるメカニズム、またはOLSのコンテキストとは関係なく、特定のレイヤと関連付けるメカニズムを提供する。スケーラブルネスティングSEIメッセージは、1つ以上のSEIメッセージを含む。スケーラブルネスティングSEIメッセージに含まれるSEIメッセージは、スケーラブルネストされたSEIメッセージとも称される。ビットストリーム適合性は、スケーラブルネスティングSEIメッセージにSEIメッセージが含まれているときは、以下の制限の適用を必要とする場合がある。
【0135】
payloadTypeが132(復号されたピクチャハッシュ)、または133(スケーラブルネスティング)のSEIメッセージは、スケーラブルネスティングSEIメッセージに含まれてはならない。スケーラブルネスティングSEIメッセージがバッファリング期間、ピクチャタイミング、または復号ユニット情報のSEIメッセージを含むときは、スケーラブルネスティングSEIメッセージは、payloadTypeがゼロではない(バッファリング期間)、1である(ピクチャタイミング)、または130(復号ユニット情報)のいかなる他のSEIメッセージも含んではならない。
【0136】
ビットストリーム適合性は、スケーラブルネスティングSEIメッセージを含むSEI NALユニットのnal_unit_typeの値に対して、以下の制限の適用をさらに必要とする場合がある。スケーラブルネスティングSEIメッセージが、payloadTypeがゼロ(バッファリング期間)、1(ピクチャタイミング)、130(復号ユニット情報)、145(RAP指示依存)または168(フレームフィールド情報)のSEIメッセージを含んでいるときは、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、nal_unit_typeをPREFIX_SEI_NUTと等しくなるように設定しなければならない。スケーラブルネスティングSEIメッセージが、payloadTypeが132(復号されたピクチャハッシュ)のSEIメッセージを含んでいるときは、スケーラブルネスティングSEIメッセージを含むSEI NALユニットは、nal_unit_typeをSUFFIX_SEI_NUTと等しくなるように設定しなければならない。
【0137】
特定のOLSのコンテキストでは、スケーラブルネストされたSEIメッセージを特定のレイヤに適用することを指定するには、nesting_ols_flagは1になるように設定され得る。スケーラブルネストされたSEIメッセージを(例えば、OLSのコンテキストによらずに)通常は特定のレイヤに適用することを指定するには、nesting_ols_flagはゼロになるように設定され得る。
【0138】
ビットストリーム適合性は、nesting_ols_flagの値に以下の制限が適用されることを必要とする場合がある。スケーラブルネスティングSEIメッセージが、payloadTypeがゼロ(バッファリング期間)、1(ピクチャタイミング)、または130(復号ユニット情報)のSEIメッセージを含むときは、nesting_ols_flagの値は1でなければならない。スケーラブルネスティングSEIメッセージが、VclAssociatedSeiList内の値と等しいpayloadTypeを有するSEIメッセージを含むときは、nesting_ols_flagの値はゼロでなければならない。
【0139】
nesting_num_olss_minus1に1を加えたものは、スケーラブルネストされたSEIメッセージを適用するOLSの数を指定する。nesting_num_olss_minus1の値は、両端値を含めて0~TotalNumOlss-1の範囲内でなければならない。nesting_ols_idx_delta_minus1[ i ]は、nesting_ols_flagが1のときにスケーラブルネストされたSEIメッセージを適用する、i番目のOLSのOLSインデックスを指定する、変数NestingOlsIdx[ i ]を導出するために使用される。nesting_ols_idx_delta_minus1[ i ]の値は、両端値を含めて0~TotalNumOlss-2の範囲内でなければならない。変数NestingOlsIdx[ i ]は以下の通りに導出される。
if(i==0)
NestingOlsIdx[ i ]=nesting_ols_idx_delta_minus1[ i ]
else
NestingOlsIdx[ i ]=NestingOlsIdx[ i-1 ]+nesting_ols_idx_delta_minus1[ i ]+1
【0140】
nesting_num_ols_layers_minus1[ i ]に1を加えたものは、NestingOlsIdx[ i ]番目のOLSのコンテキストにおいて、スケーラブルネストされたSEIメッセージを適用するレイヤの数を指定する。nesting_num_ols_layers_minus1[ i ]の値は、両端値を含めて0~NumLayersInOls[ NestingOlsIdx[ i ] ]-1の範囲内でなければならない。
【0141】
nesting_ols_layer_idx_delta_minus1[ i ][ j ]は、nesting_ols_flagが1のときに、NestingOlsIdx[ i ]番目のOLSのコンテキストにおいて、スケーラブルネストされたSEIメッセージを適用するj番目のレイヤのOLSレイヤインデックスを指定する、変数NestingOlsLayerIdx[ i ][ j ]を導出するために使用される。nesting_ols_layer_idx_delta_minus1[ i ]の値は、両端値を含めて0~NumLayersInOls[ nestingOlsIdx[ i ] ]-2の範囲内でなければならない。
【0142】
変数NestingOlsLayerIdx[ i ][ j ]は以下の通りに導出される。
if(j==0)
NestingOlsLayerIdx[ i ][ j ]=nesting_ols_layer_idx_delta_minus1[ i ][ j ]
else
NestingOlsLayerIdx[ i ][ j ]=NestingOlsLayerIdx[ i ][ j-1 ]+
nesting_ols_layer_idx_delta_minus1[ i ][ j ]+1
【0143】
両端値を含めて0~nesting_num_olss_minus1の範囲内のiに対する、LayerIdInOls[ NestingOlsIdx[ i ] ][ NestingOlsLayerIdx[ i ][ 0 ] ]のすべての値の中の最低値は、現在のSEI NALユニット(例えば、スケーラブルネスティングSEIメッセージを含むSEI NALユニット)のnuh_layer_idと等しくなければならない。nuh_layer_idが現在のSEI NALユニットのnuh_layer_id以上であるスケーラブルネストされたSEIメッセージが、すべてのレイヤに通常は適用されることを指定するには、nesting_all_layers_flagは1に設定されてよい。nuh_layer_idが現在のSEI NALユニットのnuh_layer_id以上であるスケーラブルネストされたSEIメッセージを、通常はすべてのレイヤに適用してもしなくてもよいことを指定するには、nesting_all_layers_flagは0に設定されてよい。
【0144】
nesting_num_layers_minus1に1を加えたものは、スケーラブルネストされたSEIメッセージが通常は適用されるレイヤの数を指定する。nesting_num_layers_minus1の値は、両端値を含めて0~vps_max_layers_minus1-GeneralLayerIdx[ nuh_layer_id ]の範囲内でなければならず、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。nesting_layer_id[ i ]は、nesting_all_layers_flagがゼロのときは、スケーラブルネストされたSEIメッセージを通常は適用するi番目のレイヤのnuh_layer_id値を指定する。nesting_layer_id[ i ]の値はnuh_layer_idより大きくなければならず、nuh_layer_idは、現在のSEI NALユニットのnuh_layer_idである。
【0145】
nesting_ols_flagが1のときは、スケーラブルネストされたSEIメッセージを通常は適用するレイヤの数を指定する変数NestingNumLayers、およびスケーラブルネストされたSEIメッセージを通常は適用するレイヤのnuh_layer_id値のリストを指定する、両端値を含めて0~NestingNumLayers-1の範囲内にある、iに対するリストNestingLayerId[ i ]が以下のように導出され、nuh_layer_idは現在のSEI NALユニットのnuh_layer_idである。
if(nesting_all_layers_flag){
NestingNumLayers=
vps_max_layers_minus1+1-GeneralLayerIdx[ nuh_layer_id ]
for(i=0;i < NestingNumLayers;i++)
NestingLayerId[ i ]=vps_layer_id[ GeneralLayerIdx[ nuh_layer_id ]+i ](D-2)
} else {
NestingNumLayers=nesting_num_layers_minus1+1
for(i=0;i < NestingNumLayers;i++)
NestingLayerId[ i ]=(i==0)? nuh_layer_id:nesting_layer_id[ i ]
【0146】
nesting_num_seis_minus1に1を加えたものは、スケーラブルネストされたSEIメッセージの数を指定する。nesting_num_seis_minus1の値は、両端値を含めて0~63の範囲内でなければならない。nesting_zero_bitは、ゼロになるように設定されなければならない。
【0147】
図8は、例示的なビデオコーディング装置800の概略図である。ビデオコーディング装置800は、ここで説明されているように、開示される例/実施形態を実施するのに適している。ビデオコーディング装置800は、ダウンストリームポート820、アップストリームポート850、および/またはネットワークにわたってデータをアップストリームおよび/またはダウンストリームに伝達する送信器および/または受信器を含むトランシーバユニット(Tx/Rx)810を含む。ビデオコーディング装置800はまた、データを処理するために論理装置および/または中央処理装置(CPU)を含むプロセッサ830と、データを記憶するメモリ832とを含む。ビデオコーディング装置800はまた、電気、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、および/または電気、光または無線通信ネットワークを介したデータ通信のためにアップストリームポート850および/またはダウンストリームポート820に結合された無線通信コンポーネントを含んでよい。ビデオコーディング装置800はまた、ユーザーとデータをやり取りする入力および/または出力(I/O)装置860を含んでよい。I/O装置860は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力装置を含んでもよい。I/O装置860はまた、キーボード、マウス、トラックボールなどの入力装置、および/またはそのような出力装置と対話するための対応するインターフェースを含んでもよい。
【0148】
プロセッサ830は、ハードウェアおよびソフトウェアによって実装される。プロセッサ830は、1つまたは複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装されてもよい。プロセッサ830は、ダウンストリームポート820、Tx/Rx 810、アップストリームポート850、およびメモリ832と通信する。プロセッサ830は符号化モジュール814を含む。符号化モジュール814は、方法100、900、および1000などの本明細書で開示される実施形態を実装し、これらはマルチレイヤビデオシーケンス600および/またはビットストリーム700を使用し得る。符号化モジュール814は、本明細書で説明する他の任意の方法/メカニズムも実装してもよい。さらに、符号化モジュール814は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはHRD 500を実装し得る。例えば、符号化モジュール814は、本明細書で説明するように、様々なパラメータのシグナリングおよび/または読み出しに使用され得る。さらに、符号化モジュールは、このようなパラメータに基づいて、ビデオシーケンスをエンコードおよび/または復号するために使用されてもよい。このように、本明細書で説明するシグナリング変更により、符号化モジュール814における効率が高まり、かつ/またはエラーを回避し得る。したがって、符号化モジュール814は、上述した問題の1つ以上に対処するメカニズムを実行するように構成され得る。それ故、符号化モジュール814により、ビデオコーディング装置800は、ビデオデータを符号化するときに、追加機能および/または符号化効率を提供する。このように、符号化モジュール814は、ビデオコーディング装置800の機能を向上させるとともに、ビデオ符号化技術固有の問題に対処する。さらに、符号化モジュール814はビデオコーディング装置800の変換を異なる状態まで達成する。あるいは、符号化モジュール814はメモリ832に記憶された命令として実施でき、(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)プロセッサ830によって実行できる。
【0149】
メモリ832は、ディスク、テープドライブ、ソリッドステートドライブ、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、3値連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1つ以上のメモリ種別を含む。メモリ832は、かかるプログラムが実行のために選択されたときにそのようなプログラムを記憶するため、かつプログラムの実行中に読み取られる命令およびデータを記憶するために、オーバーフローデータストレージ装置として使用されてもよい。
【0150】
図9は、ビットストリーム内のSEIメッセージのTemporalIdを制限することによって、ビデオシーケンスをビットストリーム700などのビットストリームにエンコードする、例示的な方法900の流れ図である。方法900は、方法100を行うときに、コーデックシステム200、エンコーダ300、および/またはビデオコーディング装置800などのエンコーダで用いられうる。さらに、方法900は、HRD 500上で動作してもよく、それ故マルチレイヤビデオシーケンス600に適合性テストを行い得る。
【0151】
方法900は、例えば、ユーザーの入力に基づいて、エンコーダがビデオシーケンスを受信し、そのビデオシーケンスをマルチレイヤビットストリームへとエンコードすることを決定したときに開始し得る。ステップ901において、エンコーダは、1つ以上のVCL NALユニットの中のコーディングされたピクチャをビットストリームにエンコードする。例えば、コーディングされたピクチャは、レイヤ内のAUに含まれ得る。さらに、エンコーダは、コーディングされたピクチャを含む1つ以上のレイヤをマルチレイヤビットストリームにエンコードすることができる。レイヤは、同じレイヤIDを有するVCL NALユニットのセットと、関連付けられた非VCL NALユニットとを含み得る。例えば、VCL NALユニットのセットがすべてnuh_layer_idの特定の値を有するときは、VCL NALユニットのセットはレイヤの一部である。レイヤは、エンコードされたピクチャのビデオデータを含むVCL NALユニットのセットを含み、このようなピクチャの符号化に使用される任意のパラメータセットも含み得る。1つ以上のレイヤが、出力レイヤであってもよい。出力レイヤでないレイヤは、(1つまたは複数の)出力レイヤの再構築をサポートするようにエンコードされるが、このようなサポートレイヤは、デコーダで出力されることは意図されない。このようにして、エンコーダは、要求に応じてデコーダに送信するために、レイヤの様々な組み合わせをエンコードすることができる。レイヤは、デコーダがネットワーク条件、ハードウェア性能、および/またはユーザー設定に応じてビデオシーケンスの別の表現を取得できるように、必要に応じて伝送されてよい。
【0152】
ステップ903において、エンコーダは、1つ以上の非VCL NALユニットをビットストリームへとエンコードすることができる。例えば、レイヤおよび/またはレイヤのセットは、様々な非VCL NALユニットも含んでいる。非VCL NALユニットは、すべてがnuh_layer_idの特定の値を有する、VCL NALユニットのセットに関連付けられる。具体的には、非VCL NALユニットのnal_unit_typeが、非VCL NALユニットにSEIメッセージが含まれていることを示しているときは、非VCL NALユニットは、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなるよう制限されるようにエンコードされる。別の言い方をすれば、SEIメッセージは、SEIを適用するピクチャと同じAUに含まれ得る。したがって、非VCL NALユニットに含まれるSEIメッセージのTemporalIdは、SEIメッセージ/非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。いくつかの例では、SEIメッセージはプレフィックスSEIメッセージであり、それ故非VCL NALのnal_unit_typeはPREFIX_SEI_NUTと等しい。いくつかの例では、SEIメッセージはサフィックスSEIメッセージであり、それ故非VCL NALのnal_unit_typeはSUFFIX_SEI_NUTと等しい。
【0153】
非VCL NALユニットのTemporalIdは、非VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素によって指定され得る。同様に、AUのTemporalIdは、AU内のコーディングされたピクチャのスライスを含む、VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素によって指定され得る。VCL NALユニットのTemporalIdは、同じAU内の全VCL NALユニットと同じになるように制限される。したがって、VCL NALユニットのnuh_temporal_id_plus1シンタックス要素は、同じAU内の全VCL NALユニットと同じになるように制限される。それ故、SEIメッセージを含む非VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素の値は、SEIメッセージと同じAU内にある任意のVCL NALユニット内の、nuh_temporal_id_plus1シンタックス要素の値と同じである。非VCL NALユニットのTemporalIdは、以下のように導出される。
TemporalId=nuh_temporal_id_plus1-1
加えて、AU内の非VCL NALユニットおよびVCL NALユニットのnuh_temporal_id_plus1の値は、TemporalIdが負の値になるため、ゼロに設定されなくてよい。前述の制限および/または要件により、ビットストリームは、本明細書で示すように変更されて、VVCその他いくつかの規格などに適合することが確実になる。しかしながら、エンコーダは、例えば、別の規格、または同じ規格の別のバージョンで動作するときは、制限が少ない他のモードで動作できるようにされてもよい。
【0154】
ステップ905において、エンコーダは、SEIメッセージに基づいてビットストリームに対して一組のビットストリーム適合性テストを行うために、HRDを用いる。一組は、1つ以上の適合性テストを含み得る。例えば、HRDは、SEIメッセージをピクチャと相関させるために、TemporalIdおよび/またはnuh_temporal_id_plus1値を使用することができる。それ故、HRDは、SEIメッセージと同じAU内のコーディングされたピクチャに1つ以上の適合性テストを行うために、SEIメッセージからのパラメータを使用することができる。エンコーダは、次に、ステップ907において、デコーダに向けた通信のためにビットストリームを記憶することができる。エンコーダは、必要に応じて、デコーダに向けてビットストリームを伝送することもできる。
【0155】
図10は、ビットストリーム内のSEIメッセージのTemporalIdが制限されている、ビットストリーム700などのビットストリームから、ビデオシーケンスを復号する例示的な方法1000の流れ図である。方法1000は、方法100を実行するときに、コーデックシステム200、デコーダ400、および/またはビデオコーディング装置800などのデコーダで使用されてよい。さらに、方法1000は、HRD 500などのHRDによって適合性を検証されたマルチレイヤビデオシーケンス600で使用され得る。
【0156】
方法1000は、例えば、方法900の結果として、かつ/またはデコーダによる要求に応答して、デコーダが、マルチレイヤビデオシーケンスを表す符号化データのビットストリームを受信し始めたときに開始し得る。ステップ1001において、デコーダは、1つ以上のVCL NALユニットと、非VCL NALユニットの中のコーディングされたピクチャを含む、ビットストリームを受信する。例えば、コーディングされたピクチャはAUに含まれ得る。さらに、ビットストリームは、コーディングされたピクチャを含む1つ以上のレイヤを含み得る。レイヤは、同じレイヤIDを有するVCL NALユニットのセットと、関連する非VCL NALユニットとを含み得る。例えば、VCL NALユニットのセットがすべてnuh_layer_idの特定の値を有するときは、VCL NALユニットのセットはレイヤの一部である。レイヤは、コーディングされたピクチャのビデオデータを含むVCL NALユニットのセットを含み、このようなピクチャの符号化に使用される任意のパラメータセットも含み得る。1つ以上のレイヤが、出力レイヤであってもよい。出力レイヤでないレイヤは、(1つまたは複数の)出力レイヤの再構築をサポートするようにエンコードされるが、このようなサポートレイヤは出力は意図されない。このようにして、デコーダは、ネットワーク条件、ハードウェア性能、および/またはユーザー設定に応じて、ビデオシーケンスの別の表現を取得することができる。レイヤは様々な非VCL NALユニットをさらに含む。非VCL NALユニットは、すべてがnuh_layer_idの特定の値を有する、VCL NALユニットのセットに関連付けられる。
【0157】
具体的には、非VCL NALユニットのnal_unit_typeが、非VCL NALユニットにSEIメッセージが含まれていることを示しているときは、非VCL NALユニットはビットストリームで、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなるよう制限されるように符号化される。別の言い方をすれば、SEIメッセージは、SEIを適用するピクチャと同じAUに含まれ得る。したがって、非VCL NALユニットに含まれるSEIメッセージのTemporalIdは、SEIメッセージ/非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。いくつかの例では、SEIメッセージはプレフィックスSEIメッセージであり、それ故非VCL NALのnal_unit_typeはPREFIX_SEI_NUTと等しい。いくつかの例では、SEIメッセージはサフィックスSEIメッセージであり、それ故非VCL NALのnal_unit_typeはSUFFIX_SEI_NUTと等しい。
【0158】
非VCL NALユニットのTemporalIdは、非VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素によって指定され得る。したがって、デコーダは、ステップ1002において、非VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素に基づいて、非VCL NALユニットのTemporalIdを導出することができる。同様に、AUのTemporalIdは、AU内のコーディングされたピクチャのスライスを含む、VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素によって指定され得る。VCL NALユニットのTemporalIdは、同じAU内の全VCL NALユニットと同じになるように制限される。したがって、VCL NALユニットのnuh_temporal_id_plus1シンタックス要素は、同じAU内の全VCL NALユニットと同じになるように制限される。それ故、SEIメッセージを含む非VCL NALユニット内のnuh_temporal_id_plus1シンタックス要素の値は、SEIメッセージと同じAU内にある任意のVCL NALユニット内の、nuh_temporal_id_plus1シンタックス要素の値と同じである。非VCL NALユニットのTemporalIdは、以下のように導出される。
TemporalId=nuh_temporal_id_plus1-1
加えて、AU内の非VCL NALユニットおよびVCL NALユニットのnuh_temporal_id_plus1の値は、TemporalIdが負の値になるため、ゼロに設定されなくてよい。
【0159】
一実施形態では、ビデオデコーダは、VVCその他いくつかの規格に基づいて、非VCL NALユニットのnal_unit_typeが前述したようなSEIメッセージのときは、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなることを期待する。しかしながら、この条件が当てはまらないとデコーダが判断した場合は、デコーダは、適合するビットストリームが受信されることを確実にするために、エラーを検出する、エラーをシグナリングする、修正したビットストリーム(またはその一部)の再送を要求する、あるいはその他の修正手段をとってもよい。
【0160】
ステップ1003において、デコーダは、復号されたピクチャを生成するために、VCL NALユニットからのコーディングされたピクチャを復号することができる。例えば、デコーダは、SEIメッセージをピクチャと相関させるために、TemporalIdおよび/またはnuh_temporal_id_plus1値を使用することができる。その後デコーダは、コーディングされたピクチャを復号するときは、必要に応じてSEIメッセージを使用することができる。ステップ1005において、デコーダは、復号されたビデオシーケンスの一部として表示のための復号されたピクチャを転送することができる。
【0161】
図11は、ビットストリーム内のSEIメッセージのTemporalIdが制限されている、ビットストリームを使用してビデオシーケンスを符号化する例示的なシステム1100の概略図である。システム1100は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディング装置800などのエンコーダおよびデコーダで実施されてよい。さらに、システム1100は、マルチレイヤビデオシーケンス600および/またはビットストリーム700に適合性テストを行うために、HRD 500を用いてよい。加えて、システム1100は、方法100、900、および/または1000を実施するときに使用されてもよい。
【0162】
システム1100は、ビデオエンコーダ1102を含む。ビデオエンコーダ1102は、ビットストリームにおける1つ以上のVCL NALユニット内のコーディングされたピクチャをエンコードする、エンコーディングモジュール1103を備える。エンコーディングモジュール1103はさらに、非VCL NALユニットのnal_unit_typeがSEIメッセージのときは、非VCL NALユニットのTemporalIdが、非VCL NALユニットを含むAUのTemporalIdと等しくなるよう制限されるように、非VCL NALユニットをビットストリームにエンコードするためのものである。ビデオエンコーダ1102は、SEIメッセージに基づいてビットストリームに対して一組のビットストリーム適合性テストを行うための、HRDモジュール1105をさらに含む。ビデオエンコーダ1102は、デコーダに向けて通信するためのビットストリームを記憶する記憶モジュール1106をさらに備える。ビデオエンコーダ1102は、ビデオデコーダ1110に向けてビットストリームを伝送する送信モジュール1107をさらに備える。ビデオエンコーダ1102は、方法900の任意のステップを実行するようにさらに構成され得る。
【0163】
システム1100は、ビデオデコーダ1110をさらに含む。ビデオデコーダ1110は、1つ以上のVCL NALユニットおよび非VCL NALユニット内にコーディングされたピクチャを含むビットストリームを受信する、受信モジュール1111を備え、非VCL NALユニットのTemporalIdは、非VCL NALユニットのnal_unit_typeがSEIメッセージのときは、非VCL NALユニットを含むAUのTemporalIdと等しくなるように制限される。ビデオデコーダ1110は、復号されたピクチャを生成するためにVCL NALユニットからコーディングされたピクチャを復号する、復号モジュール1113をさらに備える。ビデオデコーダ1110は、復号されたビデオシーケンスの一部として表示するための復号されたピクチャを転送する、転送モジュール1115をさらに備える。ビデオデコーダ1110は、方法1000の任意のステップを実行するようにさらに構成され得る。
【0164】
第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間の線、トレース、またはその他の媒介物を除いて介在するコンポーネントがない場合は、第2のコンポーネントに直接的に結合される。第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間の線、トレース、またはその他の媒介物以外に介在するコンポーネントがある場合は、第2のコンポーネントに間接的に結合される。用語「結合」とその変化形は直接的な結合と間接的な結合の両方を含む。用語「約」の使用は、別段の記載がない限り、後続する数値の±10%を含む範囲を意味する。
【0165】
本明細書に記載されている例示的な方法のステップは、記載されている順に実行することを必ずしも必要としていないことも理解されたく、かかる方法のステップの順序は、単なる例と理解されるべきである。同様に、本開示の様々な実施形態と合致する方法において、かかる方法には追加のステップが含まれてよく、いくつかのステップが省略されたり組み合わされたりしてよい。
【0166】
本開示ではいくつかの実施形態が提供されているが、開示されたシステムおよび方法は、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形態で具現化されてもよいことが理解されよう。本開示の例は、限定ではなく例示とみなされるべきであり、その意図は、本明細書に与えられた詳細に限定されるべきではない。例えば、様々な要素または構成要素が別のシステムにおいて結合もしくは統合されてもよく、または特定の機能が省略されるか、もしくは実装されなくてもよい。
【0167】
加えて、様々な実施形態において個別または別個のものとして記載および例示された技法、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、構成要素、技法、または方法と結合または統合されてもよい。変更、代用、および改変の他の例は当業者によって解明可能であり、本明細書に開示された趣旨および範囲から逸脱することなく行われてもよい。
【符号の説明】
【0168】
100 動作方法
200 コーデックシステム
201 パーティショニングされたビデオ信号
211 一般コーダ制御コンポーネント
213 変換スケーリング量子化コンポーネント
215 イントラピクチャ推定コンポーネント
217 イントラピクチャ予測コンポーネント
219 動き補償コンポーネント
221 動き推定コンポーネント
223 復号ピクチャバッファコンポーネント
225 インループフィルタコンポーネント
227 フィルタ制御解析コンポーネント
229 スケーリング逆変換コンポーネント
231 ヘッダフォーマッティング・コンテキスト適応型バイナリ算術符号化(CABAC)コンポーネント
300 エンコーダ
301 パーティショニングされたビデオ信号
313 変換量子化コンポーネント
317 イントラピクチャ予測コンポーネント
321 動き補償コンポーネント
323 復号ピクチャバッファコンポーネント
325 インループフィルタコンポーネント
329 逆変換量子化コンポーネント
331 エントロピー符号化コンポーネント
400 デコーダ
417 イントラピクチャ予測コンポーネント
421 動き補償コンポーネント
423 復号ピクチャバッファコンポーネント
425 インループフィルタコンポーネント
429 逆変換量子化コンポーネント
433 エントロピー復号コンポーネント
500 仮想参照デコーダ(HRD)
541 仮想ストリームスケジューラ(HSS)
543 コーディングされたピクチャバッファ(CPB)
545 復号プロセスコンポーネント
547 復号ピクチャバッファ(DPB)
549 出力クロッピングコンポーネント
551 ビットストリーム
553 復号ユニット(DU)
555 復号されたDU
556 参照ピクチャ
557 ピクチャ
559 出力クロッピング済みピクチャ
600 マルチレイヤビデオシーケンス
611 ピクチャ
611 ピクチャ
612 ピクチャ
613 ピクチャ
614 ピクチャ
615 ピクチャ
616 ピクチャ
617 ピクチャ
618 ピクチャ
621 レイヤ間予測
623 インター予測
627 アクセスユニット(AU)
628 ピクチャユニット(PU)
629 TemporalId
631 レイヤN
632 レイヤN+1
700 ビットストリーム
711 VPS
713 SPS
715 PPS
716 APS
717 スライスヘッダ
718 ピクチャヘッダ
719 付加拡張情報(SEI)メッセージ
720 画像データ
721 ピクチャ
723 レイヤ
725 ピクチャ
727 スライス
731 NALユニットヘッダ時間識別子プラスワン(nuh_temporal_id_plus1)
741 非VCL NALユニット
742 プレフィックスSEI NALユニットタイプ(PREFIX_SEI_NUT)
743 サフィックスSEI NALユニットタイプ(SUFFIX_SEI_NUT)
745 VCL NALユニット
800 ビデオコーディング装置
810 トランシーバユニット(Tx/Rx)
814 符号化モジュール
820 ダウンストリームポート
830 プロセッサ
832 メモリ
850 アップストリームポート
860 入力および/または出力(I/O)装置
900 ビデオシーケンスをビットストリームにエンコードする方法
1000 ビデオシーケンスを復号する方法
1100 ビデオシーケンスを符号化するシステム
1102 ビデオエンコーダ
1103 エンコーディングモジュール
1105 HRDモジュール
1106 記憶モジュール
1107 送信モジュール
1110 ビデオデコーダ
1111 受信モジュール
1113 復号モジュール
1115 転送モジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11