1つまたは複数の実施形態の説明のための実装形態が以下で与えられるが、開示されるシステムおよび/または方法は、現在知られているか、または存在しているかにかかわらず、任意の数の技法を使用して実装され得ることを始めに理解されたい。本開示は、いかなる場合でも、本明細書において例証され説明される例示的な設計および実装形態を含む、以下で例証される説明のための実装形態、図、および技法に限定されるべきではなく、それらの均等物の完全な範囲とともに添付の特許請求の範囲内で修正され得る。
コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、コーディングビデオシーケンス(CVS)、ジョイントビデオエキスパーツチーム(JVET)、動き制約タイルセット(MCTS)、最大伝送単位(MTU)、ネットワーク抽象化レイヤ(NAL)、ピクチャ順序カウント(POC)、ローバイトシーケンスペイロード(RBSP)、シーケンスパラメータセット(SPS)、バーサタイルビデオコーディング(VVC)、およびワーキングドラフト(WD)などの、様々な頭字語が本明細書において利用される。
データの喪失を最小限にしながらビデオファイルのサイズを減らすために、多くのビデオ圧縮技法を利用することができる。たとえば、ビデオ圧縮技法は、空間(たとえば、イントラピクチャ)予測および/または時間(たとえば、インターピクチャ)予測を実行して、ビデオシーケンスにおけるデータ冗長性を低減または除去することを含み得る。ブロックベースのビデオコーディングのために、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部)がビデオブロックへと区分されてもよく、これは、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーデイングノードとも呼ばれ得る。ピクチャのイントラコーディングされた(I)スライスの中のビデオブロックは、同じピクチャの中の近隣ブロックの中の参照サンプルに関する空間予測を使用してコーディングされる。ピクチャのインターコーディングされた単方向予測(P)または双方向予測(B)スライスの中のビデオブロックは、同じピクチャの近隣ブロックの中の参照サンプルに関する空間予測、または他の参照ピクチャの中の参照サンプルに関する時間予測を利用することによってコーディングされ得る。ピクチャはフレームおよび/または画像と呼ばれることがあり、参照ピクチャは参照フレームおよび/または参照画像と呼ばれることがある。空間予測または時間予測は、画像ブロックを表す予測ブロックをもたらす。残差データは、元の画像ブロックと予測ブロックとの間のピクセル差分を表す。したがって、インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、コーディングされたブロックと予測ブロックとの間の差を示す残差データとに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データはピクセル領域から変換領域に転送され得る。これらは、量子化され得る残差変換係数をもたらす。量子化された変換係数は最初に、2次元アレイに配置され得る。量子化された変換係数が、変換係数の1次元ベクトルを生み出すために走査され得る。エントロピーコーディングは、さらなる圧縮を達成するために適用され得る。そのようなビデオ圧縮技法は、以下でより詳しく論じられる。
符号化されたビデオが正しく復号され得ることを確実にするために、対応するビデオコーディング規格に従って、ビデオが符号化され復号される。ビデオコーディング規格は、国際電気通信連合(ITU)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)モーションピクチャエキスパーツグループ(MPEG)-1 Part 2、ITU-T H.262またはISO/IEC MPEG-2 Part 2、ITU-T H.263、ISO/IEC MPEG-4 Part 2、ITU-T H.264またはISO/IEC MPEG-4 Part 10としても知られているアドバンストビデオコーディング(AVC)、およびITU-T H.265またはMPEG-H Part 2としても知られている高効率ビデオコーディング(HEVC)を含む。AVCは、スケーラブルビデオコーディング(SVC)、マルチビュービデオコーディング(MVC)およびマルチビュービデオコーディングプラスデプス(MVC+D)、ならびに3次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの拡張を含む。ITU-TおよびISO/IECのジョイントビデオエキスパーツチーム(JVET)は、バーサタイルビデオコーディング(VVC)と呼ばれるビデオコーディング規格の開発を開始した。VVCはワーキングドラフト(WD)に含まれており、これはJVET-L1001-v9を含む。
ビデオ画像をコーディングするために、画像はまず区分され、区分はビットストリームへとコーディングされる。様々なピクチャ区分方式が利用可能である。たとえば、画像は、普通のスライス、従属スライス、タイルへと、および/または、波面並列処理(WPP)に従って区分され得る。簡潔にするために、ビデオコーディングのためにCTBのグループへとスライスを区分するときに、普通のスライス、従属スライス、タイル、WPP、およびそれらの組合せが使用され得るように、HEVCはエンコーダを制約する。そのような区分は、最大伝送単位(MTU)サイズの適合、並列処理、エンドツーエンド遅延の低減をサポートするために適用され得る。MTUは、単一のパケットにおいて送信され得るデータの最大の量を表記する。パケットペイロードがMTUを超える場合、そのペイロードは断片化と呼ばれる処理を通じて2つのパケットに分割される。
単にスライスとも呼ばれる普通のスライスは、ループフィルタリング操作によるある程度の相互依存性にもかかわらず、同じピクチャ内の他の普通のスライスとは独立に再構築され得る画像の区分された部分である。各々の普通のスライスは、送信のために固有のネットワーク抽象化レイヤ(NAL)ユニットにカプセル化される。さらに、ピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)およびスライス境界にまたがるエントロピーコーディング依存性は、独立した再構築をサポートするために無効にされ得る。そのような独立した再構築は並列化をサポートする。たとえば、普通のスライスベースの並列化は、最小限のプロセッサ間通信またはコア間通信を利用する。しかしながら、各々の普通のスライスは独立であるので、各スライスは別々のスライスヘッダと関連付けられる。普通のスライスの使用は、各スライスに対するスライスヘッダのビットコストにより、およびスライス境界にまたがる予測の欠如により、かなりのコーディングオーバーヘッドを招き得る。さらに、普通のスライスは、MTUサイズの要件との適合をサポートするために利用され得る。具体的には、普通のスライスは別個のNALユニットにカプセル化されており独立にコーディングされ得るので、各々の普通のスライスは、複数のパケットへとスライスを壊すのを避けるために、MTU方式におけるMTUより小さくなければならない。したがって、並列化の目標およびMTUサイズの適合の目標は、ピクチャにおけるスライスレイアウトに対して矛盾する要求を課すことがある。
従属スライスは普通のスライスと似ているが、短縮されたスライスヘッダを有し、ピクチャ内予測を壊すことなく画像ツリーブロック境界の区分を可能にする。したがって、従属スライスは、普通のスライスが複数のNALユニットへと断片化されることを可能にし、これは、普通のスライス全体の符号化が完了する前に普通のスライスの一部が送り出されることを可能にすることにより、エンドツーエンド遅延の低減をもたらす。
タイルは、タイルの列と行を生み出す水平境界および垂直境界により生み出される画像の区分された部分である。タイルはラスター走査順序(右から左および上から下)でコーディングされ得る。CTBの走査順序はタイル内で局所的である。したがって、第1のタイルのCTBは、次のタイルのCTBに進む前に、ラスター走査順序でコーディングされる。普通のスライスと同様に、タイルは、ピクチャ内予測の依存性、ならびにエントロピー復号の依存性を壊す。しかしながら、タイルは個々のNALユニットに含まれないことがあるので、タイルはMTUサイズの適合のために使用されないことがある。各タイルを、1つのプロセッサ/コアによって処理することができ、近隣のタイルを復号する処理ユニット間のピクチャ内予測のために利用されるプロセッサ間/コア間通信は、共有されるスライスヘッダを搬送すること(隣接するタイルが同じスライスの中にあるとき)、および再構築されたサンプルとメタデータのループフィルタリング関連の共有を実行することに限定されてもよい。1つより多くのタイルがスライスに含まれるとき、スライスの中の第1のエントリポイントオフセット以外の各タイルに対するエントリポイントバイトオフセットが、スライスヘッダにおいてシグナリングされ得る。各スライスおよびタイルに対して、1)スライスの中のすべてのコーディングされたツリーブロックが同じスライスに属する、および2)タイルの中のすべてのコーディングされたブロックが同じスライスに属するという、条件のうちの少なくとも1つが満たされるべきである。
WPPでは、画像はCTBの単一の行へと区分される。エントロピー復号および予測機構は、他の行におけるCTBからのデータを使用し得る。並列処理は、CTB行の並列復号を通じて可能にされる。たとえば、現在の行は、先行する行と並列に復号され得る。しかしながら、現在の行の復号は、2つのCTBによる先行する行の復号プロセスより遅れる。この遅延により、現在の行における現在のCTBの上にあるCTBおよび右上にあるCTBに関するデータは、現在のCTBがコーディングされる前に利用可能になることが確実になる。この手法は、グラフィカルに表現されると波面として現れる。このずらされた開始は、最大で、画像が含むCTB行の数と同じ数のプロセッサ/コアを用いた、並列化を可能にする。ピクチャ内の近隣のツリーブロック行間のピクチャ内予測が許容されるので、ピクチャ内予測を可能にするためのプロセッサ間/コア間通信はかなり多くなり得る。WPPの区分はNALユニットサイズを考慮する。したがって、WPPはMTUサイズの適合をサポートしない。しかしながら、要求に応じてMTUサイズの適合を実施するために、ある程度のコーディングオーバーヘッドを伴って、WPPとともに普通のスライスが使用され得る。
タイルは動き制約タイルセットも含み得る。動き制約タイルセット(MCTS)は、関連する動きベクトルが、MCTSの内部の整数サンプル位置と、補間のためのMCTSの内部の整数サンプル位置のみを必要とする分数サンプル位置とを指し示すように制約されるように設計された、タイルセットである。さらに、MCTSの外部のブロックから導かれる時間動きベクトル予測に対する動きベクトル候補の使用は許容されない。このようにして、各MCTSは、MCTSに含まれないタイルが存在することなく、独立に復号され得る。時間MCTS補足強化情報(SEI)メッセージは、ビットストリームにおけるMCTSの存在を示し、MCTSをシグナリングするために使用され得る。MCTS SEIメッセージは、MCTSセットに対する適合するビットストリームを生成するために、MCTSサブビットストリーム抽出(SEIメッセージのセマンティクスの一部として規定される)において使用され得る補足情報を提供する。情報はいくつかの抽出情報セットを含み、その各々が、MCTSセットの数を定義し、MCTSサブビットストリーム抽出プロセスの間に使用されるべき置換ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)のローバイトシーケンスペイロード(RBSP)バイトを含む。MCTSサブビットストリーム抽出プロセスに従ってサブビットストリームを抽出するとき、パラメータセット(VPS、SPS、およびPPS)は、書き直され、または置き換えられてもよく、スライスヘッダは更新されてもよく、それは、スライスアドレス関連のシンタックス要素(first_slice_segment_in_pic_flagおよびslice_segment_addressを含む)のうちの1つまたはすべてが、抽出されたサブビットストリームにおいて異なる値を利用し得るからである。
ピクチャは1つまたは複数のサブピクチャにも区分され得る。サブピクチャは、0に等しいtile_group_addressを有するタイルグループで開始する、タイルグループ/スライスの長方形セットである。各サブピクチャは、別々のPPSを参照し得るので、別個のタイル区分を有し得る。サブピクチャは、復号プロセスにおいてピクチャのように扱われ得る。現在のサブピクチャを復号するための参照サブピクチャは、復号ピクチャバッファにおいて参照ピクチャからの現在のサブピクチャと同じ位置にあるエリアを抽出することによって生成される。抽出されたエリアは、復号されたサブピクチャとして扱われる。同じサイズのサブピクチャとピクチャ内の同じ位置との間で、インター予測が行われ得る。スライスとしても知られているタイルグループは、ピクチャまたはサブピクチャの中の関連するタイルのシーケンスである。ピクチャの中のサブピクチャの位置を決定するために、いくつかの項目が導出され得る。たとえば、各々の現在のサブピクチャは、ピクチャ境界内に現在のサブピクチャを収めるのに十分大きいピクチャ内で、CTUラスター走査順序で次の占有されていない位置に配置され得る。
さらに、ピクチャ区分は、ピクチャレベルタイルおよびシーケンスレベルタイルに基づき得る。シーケンスレベルタイルは、MCTSの機能を含んでもよく、サブピクチャとして実装され得る。たとえば、ピクチャレベルタイルは、ピクチャの中の特定のタイル列内および特定のタイル行内のコーディングツリーブロックの長方形領域として定義され得る。シーケンスレベルタイルは、異なるフレームに含まれるコーディングツリーブロックの長方形領域のセットとして定義されてもよく、各長方形領域はさらに1つまたは複数のピクチャレベルタイルを備え、コーディングツリーブロックの長方形領域のセットは類似する長方形領域の任意の他のセットから独立に復号可能である。シーケンスレベルタイルグループセット(STGPS)は、そのようなシーケンスレベルタイルのグループである。STGPSは、NALユニットヘッダにおける関連する識別子(ID)とともに非ビデオコーディングレイヤ(VCL)NALユニットにおいてシグナリングされ得る。
先行するサブピクチャベースの区分方式は、ある問題と関連付けられ得る。たとえば、サブピクチャが有効であるとき、サブピクチャ内でのタイリング(タイルへのサブピクチャの区分)が、並列処理をサポートするために使用され得る。並列処理が目的のサブピクチャのタイル区分は、ピクチャごとに変化してもよく(たとえば、並列処理負荷のバランスの目的で)、したがって、ピクチャレベルで(たとえば、PPSにおいて)管理されてもよい。しかしながら、サブピクチャ区分(サブピクチャへのピクチャの区分)は、関心領域(ROI)およびサブピクチャベースのピクチャアクセスをサポートするために利用され得る。そのような場合、PPSにおけるサブピクチャまたはMCTSのシグナリングは効率的ではない。
別の例では、ピクチャの中の任意のサブピクチャが時間動き制約サブピクチャとしてコーディングされるとき、ピクチャの中のすべてのサブピクチャが、時間動き制約サブピクチャとしてコーディングされ得る。そのようなピクチャ区分は限定的であり得る。たとえば、時間動き制約サブピクチャとしてサブピクチャをコーディングすることは、追加の機能と引き換えにコーディング効率を低下させ得る。しかしながら、関心領域ベースの適用形態では、通常はサブピクチャのうちの1つまたは数個だけが、時間動き制約サブピクチャベースの機能を使用する。したがって、残りのサブピクチャは、実用上の利益を何らもたらすことなく、コーディング効率の低下を被る。
別の例では、サブピクチャのサイズを指定するためのシンタックス要素は、ルマCTUサイズの単位で指定され得る。したがって、サブピクチャの幅と高さの両方が、CtbSizeYの整数倍であるべきである。サブピクチャの幅と高さを指定するこの機構は、様々な問題をもたらし得る。たとえば、サブピクチャ区分は、CtbSizeYの整数倍であるピクチャ幅および/またはピクチャ高さを伴うピクチャにのみ適用可能である。これは、サブピクチャの区分を、CTbSizeYの整数倍ではない寸法を含むピクチャに対して利用不可能にする。ピクチャ寸法がCtbSizeYの整数倍ではないとき、サブピクチャ区分がピクチャの幅および/または高さに適用されれば、最も右のサブピクチャおよび最も下のサブピクチャに対するルマサンプル単位のサブピクチャ幅および/またはサブピクチャ高さの導出は不正確になるであろう。一部のコーディングツールでは、そのような不正確な導出は誤った結果をもたらす。
別の例では、ピクチャにおけるサブピクチャの位置はシグナリングされなくてもよい。代わりに、位置は以下の規則を使用して導出される。現在のサブピクチャは、ピクチャ境界内にサブピクチャが収まるのに十分大きいピクチャ内で、CTUラスター走査順序で次のそのような占有されていない位置に配置される。場合によっては、そのような方法でサブピクチャ位置を導出することはエラーを引き起こし得る。たとえば、サブピクチャが送信において失われる場合、他のサブピクチャの位置が不正確に導出され、復号されたサンプルが誤った位置に置かれる。サブピクチャが誤った順序で到着するとき、同じ問題が当てはまる。
別の例では、サブピクチャを復号することは、参照ピクチャにおいて同じ位置にあるサブピクチャの抽出を必要とし得る。これは、プロセッサおよびメモリリソースの使用に関して、さらなる複雑さおよび結果として生じる負担を強いることがある。
別の例では、サブピクチャが時間動き制約サブピクチャとして設計されるとき、サブピクチャ境界を走査するループフィルタが無効にされる。これは、タイル境界を走査するループフィルタが有効にされるかどうかにかかわらず発生する。そのような制約は、厳しすぎることがあり、複数のサブピクチャを利用するビデオピクチャに対して視覚的なアーティファクトをもたらすことがある。
別の例では、SPS、STGPS、PPS、およびタイルグループヘッダ間の関係は次の通りである。STGPSはSPSを参照し、PPSはSTGPSを参照し、タイルグループヘッダ/スライスヘッダはPPSを参照する。しかしながら、STGPSおよびPPSは、PPSがSTGPSを参照するのではなく、直交していなければならない。前述の構成は、同じピクチャのすべてのタイルグループが同じPPSを参照することも許容しないことがある。
別の例では、各STGPSは、サブピクチャの4つの側に対するIDを含み得る。そのようなIDを使用して同じ境界を共有するサブピクチャを識別し、それらの相対的な空間関係が定義され得るようにする。しかしながら、場合によっては、そのような情報は、シーケンスレベルタイルグループセットに対する位置およびサイズ情報を導出するには十分ではないことがある。他の場合には、位置およびサイズ情報をシグナリングすることは冗長であり得る。
別の例では、STGPS IDは、8ビットを使用してVCL NALユニットのNALユニットヘッダにおいてシグナリングされ得る。これはサブピクチャ抽出を助け得る。そのようなシグナリングは、NALユニットヘッダの長さを不必要に伸ばし得る。別の問題は、シーケンスレベルタイルグループセットが重複を防ぐように制約されない限り、1つのタイルグループが複数のシーケンスレベルタイルグループセットと関連付けられ得るということである。
上述の問題のうちの1つまたは複数に対処するために、様々な機構が本明細書で開示される。第1の例では、サブピクチャのレイアウト情報が、PPSではなくSPSに含まれる。サブピクチャレイアウト情報は、サブピクチャ位置およびサブピクチャサイズを含む。サブピクチャ位置は、サブピクチャの左上サンプルとピクチャの左上サンプルとの間のオフセットである。サブピクチャサイズは、ルマサンプルで測定されるようなサブピクチャの高さと幅である。上で述べられたように、タイルはピクチャごとに変化し得るので、一部のシステムはPPSにタイリング情報を含む。しかしながら、ROI適用およびサブピクチャベースのアクセスをサポートするために、サブピクチャが使用され得る。これらの機能は、ピクチャごとに変化しない。さらに、ビデオシーケンスは、単一のSPS(またはビデオセグメントごとに1つ)を含んでもよく、ピクチャごとに1つものPPSを含んでもよい。SPSにサブピクチャのレイアウト情報を配置することは、レイアウトが各PPSに対して冗長にシグナリングされるのではなくシーケンス/セグメントに対して1回しかシグナリングされないことを確実にする。したがって、SPSにおいてサブピクチャレイアウトをシグナリングすることは、コーディング効率を高めるので、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。また、一部のシステムは、デコーダによって導かれるサブピクチャ情報を有する。サブピクチャ情報をシグナリングすることは、パケットが失われる場合のエラーの確率を下げ、サブピクチャを抽出することに関して追加の機能をサポートする。したがって、SPSにおいてサブピクチャレイアウトをシグナリングすることは、エンコーダおよび/またはデコーダの機能を高める。
第2の例では、サブピクチャの幅およびサブピクチャの高さは、CTUサイズの倍数に制約される。しかしながら、これらの制約は、サブピクチャがピクチャの右の境界またはピクチャの下の境界にそれぞれ配置されるとき、取り除かれる。上で述べられたように、一部のビデオシステムは、CTUサイズの倍数である高さおよび幅を含むようにサブピクチャを制限し得る。これは、サブピクチャが多数のピクチャレイアウトとともに正しく動作するのを妨げる。下と右のサブピクチャが、CTUサイズの倍数ではない高さと幅をそれぞれ含むのを可能にすることによって、サブピクチャは、復号エラーを引き起こすことなく任意のピクチャとともに使用され得る。これは、エンコーダ機能とデコーダ機能の向上をもたらす。さらに、向上した機能により、エンコーダはより効率的にピクチャをコーディングすることが可能になり、これは、エンコーダとデコーダにおけるネットワークリソース、メモリリソース、および/または処理リソースの使用を減らす。
第3の例では、サブピクチャは、間隙または重複なしでピクチャを包含するように制約される。上で述べられたように、一部のビデオコーディングシステムは、サブピクチャが間隙および重複を含むことを許容する。これは、タイルグループ/スライスが複数のサブピクチャと関連付けられる可能性を生み出す。これがエンコーダにおいて許容される場合、デコーダは、その復号方式が滅多に使用されないときであっても、そのようなコーディング方式をサポートするように構築されなければならない。サブピクチャの間隙および重複を許容しないことで、サブピクチャのサイズおよび位置を決定するときにデコーダが潜在的な間隙および重複を考慮することが必要とされないので、デコーダの複雑さを下げることができる。さらに、サブピクチャの間隙および重複を許容しないことで、ビデオシーケンスに対する符号化を選択するときにエンコーダが間隙と重複の事例を考慮するのを省略できるので、エンコーダにおけるレート歪み最適化(RDO)プロセスの複雑さが低下する。したがって、間隙および重複を回避することは、エンコーダとデコーダにおけるメモリリソースおよび/または処理リソースの使用を減らし得る。
第4の例では、サブピクチャがいつ時間動き制約サブピクチャであるかを示すためのフラグが、SPSにおいてシグナリングされ得る。上で述べられたように、一部のシステムは、時間動き制約サブピクチャとしてすべてのサブピクチャをまとめて設定しても、または、時間動き制約サブピクチャの使用を完全に許容しなくてもよい。そのような時間動き制約サブピクチャは、コーディング効率の低下という犠牲を伴って、独立抽出機能を提供する。しかしながら、関心領域ベースの適用形態では、関心領域は独立抽出のためにコーディングされるべきであるが、関心領域の外側の領域はそのような機能を必要としない。よって、残りのサブピクチャは、現実的な利益を何ももたらすことなく、コーディング効率が低下する。したがって、このフラグは、独立抽出が望まれないときにコーディング効率を高めるために、独立抽出機能を提供する時間動き制約サブピクチャと非動き制約サブピクチャとの混合を可能にする。したがって、このフラグは、機能の向上および/またはコーディング効率の向上を可能にし、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
第5の例では、サブピクチャIDの完全なセットは、SPSにおいてシグナリングされ、スライスヘッダは、対応するスライスを含むサブピクチャを示すサブピクチャIDを含む。上で述べられたように、一部のシステムは、他のサブピクチャに対する相対的なピクチャ位置をシグナリングする。これは、サブピクチャが失われる場合、または別々に抽出される場合に問題を引き起こす。各サブピクチャをIDで指定することによって、サブピクチャは、他のサブピクチャを参照することなく位置決めされ、サイズ決定され得る。そして、これは誤り訂正ならびにサブピクチャの一部のみを抽出して他のサブピクチャの送信を避けるような、適用形態をサポートする。すべてのサブピクチャIDの完全なリストが、関連するサイズ情報とともにSPSにおいて送信され得る。各スライスヘッダは、対応するスライスを含むサブピクチャを示すサブピクチャIDを含み得る。このようにして、サブピクチャおよび対応するスライスは、他のサブピクチャを参照することなく抽出され位置決めされ得る。よって、サブピクチャIDは、機能の向上および/またはコーディング効率の向上を助け、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
第6の例では、レベルが各サブピクチャに対してシグナリングされる。一部のビデオコーディングシステムでは、レベルがピクチャに対してシグナリングされる。レベルは、ピクチャを復号するために必要とされるハードウェアリソースを示す。上で述べられたように、場合によっては、異なるサブピクチャは異なる機能を有し得るので、コーディングプロセスの間に異なるように扱われ得る。したがって、ピクチャベースのレベルは、一部のピクチャを復号することには有用ではないことがある。よって、本開示は、各サブピクチャに対するレベルを含む。このようにして、各サブピクチャは、より複雑ではない機構に従ってコーディングされるサブピクチャに対して復号要件をあまりにも高く設定することによってデコーダに不必要に負担をかけることなく、他のサブピクチャとは独立にコーディングされ得る。シグナリングされるサブピクチャレベル情報は、機能の向上および/またはコーディング効率の向上を助け、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
図1は、ビデオ信号をコーディングすることの例示的な動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダにおいて符号化される。符号化プロセスは、ビデオファイルサイズを減らすための様々な機構を利用することによってビデオ信号を圧縮する。より小さいファイルサイズは、圧縮されたビデオファイルがユーザへ送信されることを可能にしながら、関連する帯域幅オーバーヘッドを減らす。デコーダは次いで、圧縮されたビデオファイルを復号して、エンドユーザへの表示のために元のビデオ信号を再構築する。復号プロセスは一般に、デコーダがビデオ信号を安定して再構築することを可能にするために、符号化プロセスを鏡写しにしたものである。
ステップ101において、ビデオ信号がエンコーダに入力される。たとえば、ビデオ信号は、メモリに記憶された圧縮されていないビデオファイルであり得る。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによって捉えられ、ビデオのライブストリーミングをサポートするために符号化され得る。ビデオファイルは、オーディオ成分とビデオ成分の両方を含み得る。ビデオ成分は、順番に見られると視覚的な動きの効果を与える一連の画像フレームを含む。フレームは、ルマ成分(またはルマサンプル)と本明細書で呼ばれる光に関して表されるピクセル、およびクロマ成分(またはカラーサンプル)と呼ばれる色に関して表現されるピクセルを含む。いくつかの例では、フレームは、3次元視聴をサポートするために深度値も含み得る。
ステップ103において、ビデオはブロックへと区分される。区分は、各フレームのピクセルを、圧縮のために正方形および/または長方形のブロックへと再分割することを含む。たとえば、高効率ビデオコーディング(HEVC)(H.265およびMPEG-H Part 2としても知られている)では、フレームをまずコーディングツリーユニット(CTU)へと分割することができ、CTUはあらかじめ定められたサイズ(たとえば、64ピクセル対64ピクセル)のブロックである。CTUはルマサンプルとクロマサンプルの両方を含む。コーディングツリーは、CTUをブロックへと分割し、次いで、さらなる符号化をサポートする構成が達成されるまでブロックを再帰的に再分割するために利用され得る。たとえば、フレームのルマ成分は、個々のブロックが比較的一様な照明値を含むまで再分割され得る。さらに、フレームのクロマ成分は、個々のブロックが比較的一様な色値を含むまで再分割され得る。したがって、区分機構はビデオフレームの内容に依存して変化する。
ステップ105において、ステップ103において区分された画像ブロックを圧縮するために様々な圧縮機構が利用される。たとえば、インター予測および/またはイントラ予測が利用され得る。インター予測は、共通のシーンにおける物体が連続するフレームに出現する傾向にあるという事実を利用するように設計される。したがって、参照フレームの中の物体を描写するブロックは、隣接フレームにおいて繰り返し記述される必要はない。具体的には、テーブルなどの物体は、複数のフレームにわたって一定の位置にとどまり得る。したがって、テーブルは一度記述され、隣接フレームは参照フレームを参照することができる。複数のフレームにわたって物体を照合するために、パターン照合機構が利用され得る。さらに、動いている物体は、たとえば物体の動きまたはカメラの動きにより、複数のフレームにまたがって表現されることがある。特定の例として、ビデオは、複数のフレームにわたって画面上を動き回る自動車を示すことがある。動きベクトルは、そのような動きを記述するために利用され得る。動きベクトルは、フレームにおける物体の座標から参照フレームにおける物体の座標までのオフセットを与える2次元ベクトルである。したがって、インター予測は、参照フレームの中の対応するブロックからのオフセットを示す動きベクトルのセットとして、現在のフレームの中の画像ブロックを符号化することができる。
イントラ予測は共通のフレームの中のブロックを符号化する。イントラ予測は、ルマ成分およびクロマ成分がフレームにおいて密集する傾向があるという事実を利用する。たとえば、木の一部における緑色の斑点は、同様の緑色の斑点の隣に位置決めされる傾向がある。イントラ予測は、複数の指向性予測モード(たとえば、HEVCでは33個)、平面モード、および直流(DC)モードを利用する。指向性モードは、現在のブロックが対応する方向における近隣ブロックのサンプルと類似する/同じであることを示す。平面モードは、行/列(たとえば、平面)に沿った一連のブロックが行の端にある近隣ブロックに基づいて補間され得ることを示す。平面モードは、実質的に、値を変化させることにより比較的一定の勾配を利用することによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界平滑化のために利用され、指向性予測モードの角度方向と関連付けられるすべての近隣ブロックのサンプルと関連付けられる平均値とブロックが同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値の代わりに様々な関係予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値の代わりに動きベクトル値として画像ブロックを表すことができる。いずれの場合でも、予測ブロックは、いくつかの場合、画像ブロックを厳密に表現しないことがある。あらゆる差分が残差ブロックに蓄積される。ファイルをさらに圧縮するために、残差ブロックに変換が適用され得る。
ステップ107において、様々なフィルタリング技法が適用され得る。HEVCでは、フィルタはループ内フィルタリング方式に従って適用される。上で論じられたブロックベースの予測は、デコーダにおけるブロック状画像の作成をもたらし得る。さらに、ブロックベースの予測方式は、ブロックを符号化し、次いで、参照ブロックとして後で使用するために符号化されたブロックを再構築し得る。ループ内フィルタリング方式は、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびサンプル適応オフセット(SAO)フィルタをブロック/フレームに反復的に適用する。これらのフィルタは、符号化されたファイルが正確に再構築され得るように、そのようなブロッキングアーティファクトを軽減する。さらに、これらのフィルタは再構築された参照ブロックにおけるアーティファクトを軽減するので、アーティファクトは、再構築された参照ブロックに基づいて符号化される後続のブロックにおいて追加のアーティファクトを生み出す可能性がより低くなる。
ビデオ信号が区分され、圧縮され、フィルタリングされると、ステップ109において、得られるデータがビットストリームにおいて符号化される。ビットストリームは、上で論じられたデータ、ならびにデコーダにおける適切なビデオ信号の再構築をサポートするために望まれるあらゆるシグナリングデータを含む。たとえば、そのようなデータは、区分データ、予測データ、残差ブロック、およびコーディング命令をデコーダに提供する様々なフラグを含み得る。ビットストリームは、要求に応じたデコーダへの送信のためにメモリに記憶され得る。ビットストリームは、複数のデコーダへのブロードキャストおよび/またはマルチキャストでもあり得る。ビットストリームの作成は反復的なプロセスである。したがって、ステップ101、103、105、107、および109は、多数のフレームおよびブロックにわたって連続的および/または同時に発生し得る。図1に示される順序は、明確にするために、かつ議論を簡単にするために提示されており、ビデオコーディングプロセスを特定の順序に制限することは意図されていない。
ステップ111において、デコーダが、ビットストリームを受信して復号プロセスを開始する。具体的には、デコーダは、エントロピー復号方式を利用して、ビットストリームを対応するシンタックスおよびビデオデータへと変換する。ステップ111において、デコーダが、ビットストリームからのシンタックスデータを利用して、フレームに対する区分を決定する。この区分は、ステップ103におけるブロック区分の結果と一致しなければならない。ステップ111において利用されるようなエントロピー符号化/復号がここで説明される。エンコーダは、入力画像における値の空間的な配置に基づいて、いくつかの可能な選択肢からブロック区分方式を選択することなどの、圧縮プロセスの間に多くの選択を行う。厳密な選択のシグナリングは、多数のビンを利用し得る。本明細書では、ビンは、変数として扱われる二進値(たとえば、状況に応じて変化し得るビット値)である。エントロピーコーディングは、特定の事例に対して明らかに実行可能ではないあらゆる選択肢をエンコーダが廃棄することを可能にし、許容可能な選択肢のセットを残す。次いで、各々の許容可能な選択肢が符号語を割り当てられる。符号語の長さは、許容可能な選択肢の数に基づく(たとえば、2つの選択肢に対しては1つのビン、3つから4つの選択肢に対しては2つのビンなど)。エンコーダは次いで、選択された選択肢に対する符号語を符号化する。この方式は符号語のサイズを減らし、それは、すべての可能な選択肢の大きい可能性のあるセットからの選択を一意に示すのではなく、許容可能な選択肢の小さいサブセットからの選択を一意に示すのに望まれる程度の大きさに符号語がなるからである。デコーダは次いで、許容可能な選択肢のセットをエンコーダと同様の方式で決定することによって、選択を復号する。許容可能な選択肢のセットを決定することによって、デコーダは、符号語を読み取り、エンコーダによって行われる選択を決定することができる。
ステップ113において、デコーダがブロック復号を実行する。具体的には、デコーダは、逆変換を利用して残差ブロックを生成する。次いで、デコーダは、残差ブロックおよび対応する予測ブロックを利用して、区分に従って画像ブロックを再構築する。予測ブロックは、ステップ105においてエンコーダで生成されたようなイントラ予測ブロックとインター予測ブロックの両方を含み得る。再構築された画像ブロックは次いで、ステップ111において決定された区分データに従って、再構築されたビデオ信号のフレームへと位置決めされる。ステップ113に対するシンタックスはまた、上で論じられたようにエントロピーコーディングを介してビットストリームにおいてシグナリングされ得る。
ステップ115において、エンコーダにおいて、ステップ107と同様の方式で、再構築されたビデオ信号のフレームに対してフィルタリングが実行される。たとえば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタが、ブロッキングアーティファクトを取り除くためにフレームに適用され得る。フレームがフィルタリングされると、ビデオ信号は、エンドユーザによる視聴のために、ステップ117においてディスプレイに出力され得る。
図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を含み得る。これらのコンポーネントがここで説明される。
区分されたビデオ信号201は、コーディングツリーによってピクセルのブロックへと区分された、キャプチャされたビデオシーケンスである。コーディングツリーは、様々な分割モードを利用して、ピクセルのブロックをピクセルのより小さいブロックへと再分割する。これらのブロックは次いで、より小さいブロックへとさらに再分割され得る。ブロックは、コーディングツリー上のノードと呼ばれ得る。より大きい親ノードは、より小さい子ノードへと分割される。ノードが再分割される回数は、ノード/コーディングツリーの深度と呼ばれる。いくつかの場合、分割されたブロックはコーディングユニット(CU)に含まれ得る。たとえば、CUは、ルマブロック、赤差分クロマ(Cr)ブロック、および青差分クロマ(Cb)ブロックを、CUに対する対応するシンタックス命令とともに含む、CTUの下位部分であり得る。分割モードは、利用される分割モードに応じて形状が変化する2つ、3つ、または4つの子ノードへとそれぞれノードを区分するために利用される、二分木(BT)、三分木(TT)、および四分木(QT)を含み得る。区分されたビデオ信号201は、圧縮のために、汎用コーダ制御コンポーネント211、変換スケーリングおよび量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227、ならびに動き推定コンポーネント221に転送される。
汎用コーダ制御コンポーネント211は、適用形態の制約に従って、ビデオシーケンスの画像のビットストリームへのコーディングに関する決定を行うように構成される。たとえば、汎用コーダ制御コンポーネント211は、ビットレート/ビットストリームサイズ対再構築品質の最適化を管理する。そのような決定は、記憶空間/帯域幅の利用可能性および画像解像度の要求に基づいて行われ得る。汎用コーダ制御コンポーネント211はまた、バッファのアンダーランおよびオーバーランの問題を軽減するために、送信速度を考慮してバッファ利用率を管理する。これらの問題を管理するために、汎用コーダ制御コンポーネント211は、他のコンポーネントによる区分、予測、およびフィルタリングを管理する。たとえば、汎用コーダ制御コンポーネント211は、圧縮の複雑さを動的に上げて解像度を向上させて帯域幅使用率を向上させ、または、圧縮の複雑さを下げて解像度および帯域幅使用率を低下させ得る。したがって、汎用コーダ制御コンポーネント211は、コーデックシステム200の他のコンポーネントを制御して、ビデオ信号再構築の品質とビットレートの問題のバランスをとる。汎用コーダ制御コンポーネント211は、制御データを作成し、これは他のコンポーネントの動作を制御する。制御データは、ヘッダフォーマッティングおよびCABACコンポーネント231にも転送されて、デコーダにおける復号のためのパラメータをシグナリングするためにビットストリームにおいて符号化される。
区分されたビデオ信号201はまた、インター予測のために動き推定コンポーネント221および動き補償コンポーネント219に送信される。区分されたビデオ信号201のフレームまたはスライスは、複数のビデオブロックへと分割され得る。動き推定コンポーネント221および動き補償コンポーネント219は、1つまたは複数の参照フレームの中の1つまたは複数のブロックに対して相対的な、受信されたビデオブロックのインター予測コーディングを実行して、時間予測を行う。コーデックシステム200は、複数のコーディングパスを実行して、たとえば、ビデオデータの各ブロックに対して適切なコーディングモードを選択し得る。
動き推定コンポーネント221および動き補償コンポーネント219は、高度に統合され得るが、概念上の目的で別々に示される。動き推定コンポーネント221によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、予測ブロックに対して相対的なコーディングされたオブジェクトのずれを示し得る。予測ブロックは、ピクセル差分に関して、コーディングされるべきブロックによく一致することが見いだされるブロックである。予測ブロックは参照ブロックとも呼ばれ得る。そのようなピクセル差分は、絶対値差分和(SAD)、平方差分和(SSD)、または他の差分尺度によって決定され得る。HEVCは、CTU、コーディングツリーブロック(CTB)、およびCUを含む、いくつかのコーディングされたオブジェクトを利用する。たとえば、CTUをCTBへと分割することができ、次いで、CUに含めるためにCTBをCBへと分割することができる。CUは、予測データを含む予測ユニット(PU)および/またはCUのための変換された残差データを含む変換ユニット(TU)として符号化され得る。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み分析を使用することによって、動きベクトル、PU、およびTUを生成する。たとえば、動き推定コンポーネント221は、現在のブロック/フレームのための複数の参照ブロック、複数の動きベクトルなどを決定してもよく、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択してもよい。最良のレート歪み特性は、ビデオ再構築の品質(たとえば、圧縮によるデータ喪失の量)とコーディング効率(たとえば、最終的な符号化のサイズ)のバランスをとる。
いくつかの例では、コーデックシステム200は、復号ピクチャバッファコンポーネント223に記憶されている参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。たとえば、ビデオコーデックシステム200は、4分の1ピクセル位置、8分の1ピクセル位置、または参照ピクチャの他の分数ピクセル位置の値を補間し得る。したがって、動き推定コンポーネント221は、整数ピクセル位置と分数ピクセル位置に対する動き探索を実行して、分数ピクセル精度の動きベクトルを出力し得る。動き推定コンポーネント221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライスの中のビデオブロックのPUに対する動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを符号化のために動きデータとしてヘッダフォーマッティングおよびCABACコンポーネント231に出力し、動きを動き補償コンポーネント219に出力する。
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定される動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。再び、動き推定コンポーネント221および動き補償コンポーネント219は、いくつかの例では機能的に統合され得る。現在のビデオブロックのPUに対する動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックを位置特定し得る。残差ビデオブロックは次いで、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を差し引き、ピクセル差分値を形成することによって形成される。一般に、動き推定コンポーネント221は、ルマ成分に対する動き推定を実行し、動き補償コンポーネント219は、クロマ成分とルマ成分の両方に対して、ルマ成分に基づいて計算される動きベクトルを使用する。予測ブロックおよび残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。
区分されたビデオ信号201は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217にも送信される。動き推定コンポーネント221および動き補償コンポーネント219のように、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は高度に統合され得るが、概念上の目的で別々に示されている。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、上で説明されたように、フレーム間で動き推定コンポーネント221と動き補償コンポーネント219によって実行されるインター予測に対する代替として、現在のフレームの中のブロックに対して現在のブロックをイントラ予測する。具体的には、イントラピクチャ推定コンポーネント215は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数の試験されるイントラ予測モードから、現在のブロックを符号化するための適切なイントラ予測モードを選択する。選択されたイントラ予測モードは次いで、符号化のためにヘッダフォーマッティングおよびCABACコンポーネント231に転送される。
たとえば、イントラピクチャ推定コンポーネント215は、様々な試験されたイントラ予測モードに対するレート歪み分析を使用してレート歪み値を計算し、試験されたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み分析は一般に、符号化されたブロックと、符号化されたブロックを生み出すために符号化された元の符号化されていないブロックとの間の歪み(またはエラー)の量、ならびに、符号化されたブロックを生み出すために使用されるビットレート(たとえば、ビットの数)を決定する。イントラピクチャ推定コンポーネント215は、どのイントラ予測モードがブロックに対して最良のレート歪み値を示すかを決定するために、様々な符号化されたブロックに対する歪みおよびレートから比を計算する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(RDO)に基づいて、深度モデリングモード(DMM)を使用して深度マップの深度ブロックをコーディングするように構成され得る。
イントラピクチャ予測コンポーネント217は、エンコーダ上で実装されるとき、イントラピクチャ推定コンポーネント215によって決定される選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し、または、デコーダ上で実装されるとき、ビットストリームから残差ブロックを読み取り得る。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値の差分を含む。残差ブロックは次いで、変換スケーリングおよび量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、ルマ成分とクロマ成分の両方に対して動作し得る。
変換スケーリングおよび量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリングおよび量子化コンポーネント213は、離散コサイン変換(DCT)、離散サイン変換(DST)、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生み出す。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換スケーリングおよび量子化コンポーネント213はまた、たとえば周波数に基づいて、変換された残差情報をスケーリングするように構成される。そのようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように、スケール係数を残差情報に適用することを伴い、これは、再構築されたビデオの最終的な視覚的品質に影響し得る。変換スケーリングおよび量子化コンポーネント213はまた、ビットレートをさらに低減するために変換係数を量子化するように構成される。量子化プロセスは、係数の一部またはすべてと関連付けられるビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、変換スケーリングおよび量子化コンポーネント213は次いで、量子化された変換係数を含む行列の走査を実行し得る。量子化された変換係数は、ヘッダフォーマッティングおよびCABACコンポーネント231に転送されて、ビットストリームにおいて符号化される。
スケーリングおよび逆変換コンポーネント229は、動き推定をサポートするために、変換スケーリングおよび量子化コンポーネント213の逆の動作を適用する。スケーリングおよび逆変換コンポーネント229は、逆スケーリング、変換、および/または量子化を適用して、たとえば、別の現在のブロックに対する予測ブロックになり得る参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構築する。動き推定コンポーネント221および/または動き補償コンポーネント219は、後のブロック/フレームの動き推定において使用するために残差ブロックを対応する予測ブロックに加算し戻すことによって参照ブロックを計算し得る。スケーリング、量子化、および変換の間に生み出されるアーティファクトを軽減するために、再構築された参照ブロックにフィルタが適用される。そのようなアーティファクトは、そうされなければ、後続のブロックが予測されるときに不正確な予測を引き起こす(およびさらなるアーティファクトを生み出す)ことがある。
フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225は、フィルタを残差ブロックおよび/または再構築された画像ブロックに適用する。たとえば、スケーリングおよび逆変換コンポーネント229からの変換された残差ブロックは、元の画像ブロックを再構築するために、イントラピクチャ予測コンポーネント217および/または動き補償コンポーネント219からの対応する予測ブロックと組み合わせられ得る。フィルタは次いで、再構築された画像ブロックに適用され得る。いくつかの例では、フィルタは代わりに、残差ブロックに適用され得る。図2の他のコンポーネントのように、フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225は高度に統合され、一緒に実装され得るが、概念上の目的で別々に図示されている。再構築された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御分析コンポーネント227は、そのようなフィルタがどこで適用されるべきかを決定するために再構築された参照ブロックを分析し、対応するパラメータを設定する。そのようなデータは、符号化のためにフィルタ制御データとしてヘッダフォーマッティングおよびCABACコンポーネント231に転送される。ループ内フィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、および適応ループフィルタを含み得る。そのようなフィルタは、例に応じて、空間/ピクセル領域で(たとえば、再構築されたピクセルブロック上で)、または周波数領域で適用され得る。
エンコーダとして動作するとき、フィルタリングされた再構築された画像ブロック、残差ブロック、および/または予測ブロックは、上で論じられたような動き推定において後で使用するために、復号ピクチャバッファコンポーネント223に記憶される。デコーダとして動作するとき、復号ピクチャバッファコンポーネント223は、出力ビデオ信号の一部として、再構築されフィルタリングされたブロックを記憶してディスプレイに転送する。復号ピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、および/または再構築された画像ブロックを記憶することが可能な任意のメモリデバイスであり得る。
ヘッダフォーマッティングおよびCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受信し、デコーダへの送信のためにそのようなデータをコーディングされたビットストリームへと符号化する。具体的には、ヘッダフォーマッティングおよびCABACコンポーネント231は、一般的な制御データおよびフィルタ制御データなどの制御データを符号化するために、様々なヘッダを生成する。さらに、イントラ予測および動きデータ、ならびに量子化された変換係数データの形態の残差データを含む予測データが、すべてビットストリームにおいて符号化される。最終的なビットストリームは、元の区分されたビデオ信号201を再構築するためにデコーダによって望まれるすべての情報を含む。そのような情報は、イントラ予測モードインデックステーブル(符号語マッピングテーブルとも呼ばれる)、様々なブロックに対する符号化コンテキストの定義、最も確率の高いイントラ予測モードの指示、区分情報の指示なども含み得る。そのようなデータは、エントロピーコーディングを利用することによって符号化され得る。たとえば、情報は、コンテキスト適応可変長コーディング(CAVLC)、CABAC、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を利用することによって符号化され得る。エントロピーコーディングに続いて、コーディングされたビットストリームは、別のデバイス(たとえば、ビデオデコーダ)に送信されてもよく、または、より後の送信もしくは取り出しのためにアーカイブされてもよい。
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実装するために、ならびに/または動作方法100のステップ101、103、105、107、および/もしくは109を実装するために利用され得る。エンコーダ300は、入力ビデオ信号を区分し、区分されたビデオ信号201と実質的に同様である区分されたビデオ信号301をもたらす。区分されたビデオ信号301は次いで圧縮されて、エンコーダ300のコンポーネントによりビットストリームへと符号化される。
具体的には、区分されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と実質的に同様であり得る。区分されたビデオ信号301はまた、復号ピクチャバッファコンポーネント323の中の参照ブロックに基づくインター予測のために動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221および動き補償コンポーネント219と実質的に同様であり得る。イントラピクチャ予測コンポーネント317および動き補償コンポーネント321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために変換および量子化コンポーネント313に転送される。変換および量子化コンポーネント313は、変換スケーリングおよび量子化コンポーネント213と実質的に同様であり得る。変換され量子化された残差ブロックおよび対応する予測ブロックは(関連する制御データとともに)、ビットストリームへのコーディングのためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマッティングおよびCABACコンポーネント231と実質的に同様であり得る。
変換され量子化された残差ブロックおよび/または対応する予測ブロックは、動き補償コンポーネント321により使用される参照ブロックへの再構築のために、変換および量子化コンポーネント313から逆変換および量子化コンポーネント329にも転送される。逆変換および量子化コンポーネント329は、スケーリングおよび逆変換コンポーネント229と実質的に同様であり得る。ループ内フィルタコンポーネント325の中のループ内フィルタは、例に応じて、残差ブロックおよび/または再構築された参照ブロックにも適用される。ループ内フィルタコンポーネント325は、フィルタ制御分析コンポーネント227およびループ内フィルタコンポーネント225と実質的に同様であり得る。ループ内フィルタコンポーネント325は、ループ内フィルタコンポーネント225に関して論じられたような複数のフィルタを含み得る。フィルタリングされたブロックは次いで、動き補償コンポーネント321により参照ブロックとして使用するために、復号ピクチャバッファコンポーネント323に記憶される。復号ピクチャバッファコンポーネント323は、復号ピクチャバッファコンポーネント223と実質的に同様であり得る。
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実装するために、ならびに/または動作方法100のステップ111、113、115、および/もしくは117を実施するために利用され得る。デコーダ400は、たとえばエンコーダ300から、ビットストリームを受信し、エンドユーザに表示するために、再構築された出力ビデオ信号をビットストリームに基づいて生成する。
ビットストリームは、エントロピー復号コンポーネント433によって受信される。エントロピー復号コンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、または他のエントロピーコーディング技法などのエントロピー復号方式を実装するように構成される。たとえば、エントロピー復号コンポーネント433は、ビットストリームにおいて符号語として符号化される追加のデータを解釈するためのコンテキストを提供するために、ヘッダ情報を利用し得る。復号された情報は、一般的な制御データ、フィルタ制御データ、区分情報、動き情報、予測データ、および残差ブロックからの量子化された変換係数などの、ビデオ信号を復号するための任意の望まれる情報を含む。量子化された変換係数は、残差ブロックへの再構築のために逆変換および量子化コンポーネント429に転送される。逆変換および量子化コンポーネント429は、逆変換および量子化コンポーネント329と同様であり得る。
再構築された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づいて、画像ブロックへの再構築のためにイントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と同様であり得る。具体的には、イントラピクチャ予測コンポーネント417は、フレームの中で参照ブロックを位置特定するために予測モードを利用し、残差ブロックを結果に適用してイントラ予測された画像ブロックを再構築する。再構築されたイントラ予測された画像ブロックおよび/または残差ブロックならびに対応するインター予測データは、ループ内フィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送され、これらは、復号ピクチャバッファコンポーネント223およびループ内フィルタコンポーネント225とそれぞれ実質的に同様であり得る。ループ内フィルタコンポーネント425は、再構築された画像ブロック、残差ブロック、および/または予測ブロックをフィルタリングし、そのような情報は復号ピクチャバッファコンポーネント423に記憶される。復号ピクチャバッファコンポーネント423からの再構築された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221および/または動き補償コンポーネント219と実質的に同様であり得る。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを利用して予測ブロックを生成し、残差ブロックを結果に適用して画像ブロックを再構築する。得られる再構築されたブロックはまた、ループ内フィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送され得る。復号ピクチャバッファコンポーネント423は、追加の再構築された画像ブロックを記憶し続け、これらは区分情報を介してフレームへと再構築され得る。そのようなフレームは、シーケンスにも配置され得る。シーケンスは、再構築された出力ビデオ信号としてディスプレイに出力される。
図5は、例示的なビットストリーム500およびビットストリーム500から抽出されるサブビットストリーム501を示す概略図である。たとえば、ビットストリーム500は、コーデックシステム200および/またはデコーダ400による復号のために、コーデックシステム200および/またはエンコーダ300によって生成され得る。別の例として、ビットストリーム500は、ステップ111におけるデコーダによる使用のために、方法100のステップ109においてエンコーダによって生成され得る。
ビットストリーム500は、シーケンスパラメータセット(SPS)510、複数のピクチャパラメータセット(PPS)512、複数のスライスヘッダ514、画像データ520、および1つまたは複数のSEIメッセージ515を含む。SPS510は、ビットストリーム500に含まれるビデオシーケンスの中のすべてのピクチャに共通のシーケンスデータを含む。そのようなデータは、ピクチャサイズ、ビット深度、コーディングツールパラメータ、ビットレート制限などを含み得る。PPS512は、1つまたは複数の対応するピクチャに固有のパラメータを含む。したがって、ビデオシーケンスの中の各ピクチャは、1つのPPS512を指し得る。PPS512は、対応するピクチャの中のタイルに対して利用可能なコーディングツール、量子化パラメータ、オフセット、ピクチャ固有のコーディングツールパラメータ(たとえば、フィルタコントロール)などを示し得る。スライスヘッダ514は、ピクチャの中の1つまたは複数の対応するスライス524に固有のパラメータを含む。したがって、ビデオシーケンスの中の各スライス524は、スライスヘッダ514を参照し得る。スライスヘッダ514は、スライスタイプ情報、ピクチャ順序カウント(POC)、参照ピクチャリスト、予測重み、タイルエントリポイント、デブロッキングパラメータなどを含み得る。いくつかの例では、スライス524はタイルグループと呼ばれ得る。そのような場合、スライスヘッダ514は、タイルグループヘッダと呼ばれ得る。SEIメッセージ515は、ブロック復号のために必要とされないメタデータを含む任意選択のメッセージであるが、ピクチャ出力のタイミング、表示設定、損失検出、損失隠匿などを示すことなどの関連する目的で利用され得る。
画像データ520は、インター予測および/またはイントラ予測に従って符号化されるビデオデータ、ならびに対応する変換され量子化される残差データを含む。そのような画像データ520は、符号化の前に画像を区分するために使用される区分に従って分類される。たとえば、ビデオシーケンスはピクチャ521へと分割される。ピクチャ521はさらにサブピクチャ522へと分割されてもよく、サブピクチャ522はスライス524へと分割される。スライス524はさらに、タイルおよび/またはCTUへと分割され得る。CTUはさらに、コーディングツリーに基づいてコーディングブロックへと分割される。コーディングブロックは次いで、予測機構に従って符号化/復号され得る。たとえば、ピクチャ521は1つまたは複数のサブピクチャ522を含み得る。サブピクチャ522は1つまたは複数のスライス524を含み得る。ピクチャ521はPPS512を参照し、スライス524はスライスヘッダ514を参照する。サブピクチャ522は、ビデオシーケンス全体(セグメントとしても知られている)にわたって安定的に区分され得るので、SPS510を参照し得る。各スライス524は1つまたは複数のタイルを含み得る。各スライス524、したがってピクチャ521およびサブピクチャ522は、複数のCTUも含み得る。
各ピクチャ521は、対応する瞬間のためのビデオシーケンスと関連付けられる視覚データの完全なセットを含み得る。しかしながら、ある適用形態では、場合によってはピクチャ521の一部のみを表示することが望まれ得る。たとえば、仮想現実(VR)システムは、ピクチャ521のユーザにより選択された領域を表示してもよく、これは、ピクチャ521において描写されるシーンにいるような感覚を生み出す。ユーザが見ることを望み得る領域は、ビットストリーム500が符号化されるときには知られていない。したがって、ピクチャ521は、サブピクチャ522としてユーザが見る可能性があり得る各々の可能性のある領域を含んでもよく、これらの領域は、ユーザ入力に基づいて別々に復号されて表示され得る。他の適用形態では関心領域が別々に表示され得る。たとえば、ピクチャインピクチャ機能のあるテレビは、あるビデオシーケンスからの特定の領域、したがってサブピクチャ522を、関連のないビデオシーケンスのピクチャ521の上に表示するのを望み得る。さらに別の例では、遠隔会議システムは、現在話しているユーザの全体のピクチャ521と、現在話していないユーザのサブピクチャ522とを表示し得る。したがって、サブピクチャ522は、ピクチャ521の定められた領域を含み得る。時間的に動きが制約されるサブピクチャ522は、ピクチャ521の残りから別々に復号可能であり得る。具体的には、時間動き制約サブピクチャは、時間動き制約サブピクチャの外側のサンプルを参照せずに符号化されるので、ピクチャ521の残りを参照せずに完全な復号を行うのに十分な情報を含む。
各スライス524は、左上の角にあるCTUおよび右下の角にあるCTUによって定義される長方形であり得る。いくつかの例では、スライス524は、左から右および上から下に進むラスター走査順序で、一連のタイルおよび/またはCTUを含む。他の例では、スライス524は長方形スライスである。長方形スライスは、ラスター走査順序に従ってピクチャの幅全体を走査しないことがある。代わりに、長方形スライスは、CTUおよび/またはタイル行、ならびにCTUおよび/またはタイル列に関して定義される、ピクチャ521および/もしくはサブピクチャ522の長方形領域ならびに/または正方形領域を含み得る。スライス524は、デコーダによって個別に表示され得る最小単位である。したがって、ピクチャ521からのスライス524は、ピクチャ521の望まれる領域を別々に描写するために異なるサブピクチャ522に割り当てられ得る。
デコーダは、ピクチャ521の1つまたは複数のサブピクチャ523を表示し得る。サブピクチャ523は、サブピクチャ522のユーザにより選択されたサブグループまたはあらかじめ定められたサブグループである。たとえば、ピクチャ521は9個のサブピクチャ522へと分割され得るが、デコーダは、サブピクチャ522のグループから単一のサブピクチャ523のみを表示し得る。サブピクチャ523はスライス525を含み、スライスはスライス524の選択されたサブグループまたはあらかじめ定められたサブグループである。サブピクチャ523の別々の表示を可能にするために、サブビットストリーム501はビットストリーム500から抽出され得る(529)。抽出529は、デコーダがサブビットストリーム501のみを受信するように、エンコーダ側で行われ得る。他の場合には、ビットストリーム500全体がデコーダに送信され、デコーダが別々の復号のためにサブビットストリーム501を抽出する(529)。サブビットストリーム501は、場合によってはビットストリームとも全般に呼ばれ得ることに留意されたい。サブビットストリーム501は、SPS510、PPS512、選択されたサブピクチャ523、ならびに、スライスヘッダ514、およびサブピクチャ523および/またはスライス525に関連のあるSEIメッセージ515を含む。
本開示は、デコーダにおけるサブピクチャ523の選択および表示のためにサブピクチャ522の効率的なコーディングをサポートするための、様々なデータをシグナリングする。SPS510は、サブピクチャサイズ531、サブピクチャ位置532、およびサブピクチャ522の完全なセットに関するサブピクチャID533を含む。サブピクチャサイズ531は、対応するサブピクチャ522に対する、ルマサンプル単位のサブピクチャ高さおよびルマサンプル単位のサブピクチャ幅を含む。サブピクチャ位置532は、対応するサブピクチャ522の左上サンプルとピクチャ521の左上サンプルとの間のオフセット距離を含む。サブピクチャ位置532およびサブピクチャサイズ531は、対応するサブピクチャ522のレイアウトを定義する。サブピクチャID533は、対応するサブピクチャ522を一意に識別するデータを含む。サブピクチャID533は、サブピクチャ522のラスター走査インデックスまたは他の定められた値であり得る。したがって、デコーダは、SPS510を読み取り、各サブピクチャ522のサイズ、位置、およびIDを決定することができる。一部のビデオコーディングシステムでは、サブピクチャ522に関連するデータはPPS512に含まれることがあり、それは、サブピクチャ522がピクチャ521から区分されるからである。しかしながら、サブピクチャ522を作成するために使用される区分は、ROIベースの適用形態、VR適用形態などの、ビデオシーケンス/セグメント全体での一貫したサブピクチャ522の区分に依存する適用形態により使用され得る。したがって、サブピクチャ522の区分は、一般にピクチャごとに変化しない。SPS510の中にサブピクチャ522のレイアウト情報を置くことは、レイアウトが各PPS512(これは場合によっては各ピクチャ521に対してシグナリングされ得る)に対して冗長にシグナリングされるのではなく、シーケンス/セグメントに対して一度しかシグナリングされないことを確実にする。また、そのような情報を導くためにデコーダに依存するのではなく、サブピクチャ522情報をシグナリングすることは、パケット喪失の場合にエラーの確率を下げ、サブピクチャ523を抽出することに関して追加の機能をサポートする。したがって、SPS510においてサブピクチャ522のレイアウトをシグナリングすることは、エンコーダおよび/またはデコーダの機能を改善する。
SPS510はまた、サブピクチャ522の完全なセットに関連する動き制約サブピクチャフラグ534を含む。動き制約サブピクチャフラグ534は、各サブピクチャ522が時間動き制約サブピクチャであるかどうかを示す。したがって、デコーダは、動き制約サブピクチャフラグ534を読み取り、サブピクチャ522のいずれが他のサブピクチャ522を復号することなく別々に抽出されて表示され得るかを決定することができる。このことは、選択されたサブピクチャ522が時間動き制約サブピクチャとしてコーディングされることを可能にしながら、他のサブピクチャ522がコーディング効率の向上のためにそのような制約なしでコーディングされることを可能にする。
サブピクチャID533は、スライスヘッダ514にも含まれる。各スライスヘッダ514は、スライス524の対応するセットに関連するデータを含む。したがって、スライスヘッダ514は、スライスヘッダ514と関連付けられるスライス524に対応するサブピクチャID533のみを含む。したがって、デコーダは、スライス524を受信し、スライスヘッダ514からサブピクチャID533を取得し、どのサブピクチャ522がスライス524を含むかを決定することができる。デコーダはまた、SPS510の中の関連するデータと相関付けるために、スライスヘッダ514からのサブピクチャID533を使用することができる。したがって、デコーダは、SPS510および関連するスライスヘッダ514を読み取ることによって、サブピクチャ522/523およびスライス524/525をどのように位置決めするかを決定することができる。これは、一部のサブピクチャ522が送信において失われても、またはコーディング効率を高めるために意図的に省略されても、サブピクチャ523およびスライス525が復号されることを可能にする。
SEIメッセージ515はまた、サブピクチャレベル535を含み得る。サブピクチャレベル535は、対応するサブピクチャ522を復号するために必要なハードウェアリソースを示す。このようにして、各サブピクチャ522は、他のサブピクチャ522とは独立にコーディングされ得る。これは、各サブピクチャ522がデコーダにおいて正しい量のハードウェアリソースを割り振られ得ることを確実にする。そのようなサブピクチャレベル535がなければ、各サブピクチャ522は、最も複雑なサブピクチャ522を復号するのに十分なリソースを割り振られる。したがって、サブピクチャレベル535は、サブピクチャ522が変化するハードウェアリソース要件と関連付けられる場合に、デコーダがハードウェアリソースを過剰に割り振るのを防ぐ。
図6は、サブピクチャ622へと区分される例示的なピクチャ600を示す概略図である。たとえば、ピクチャ600は、たとえばコーデックシステム200、エンコーダ300、および/またはデコーダ400によって、ビットストリーム500において符号化され、ビットストリーム500から復号され得る。さらに、ピクチャ600は、方法100に従った符号化および復号をサポートするように、サブビットストリーム501において区分され、および/または含まれ得る。
ピクチャ600は、ピクチャ521と実質的に同様であり得る。さらに、ピクチャ600はサブピクチャ622へと区分されてもよく、サブピクチャ622はサブピクチャ522と実質的に同様である。サブピクチャ622は各々サブピクチャサイズ631を含み、サブピクチャサイズ631はサブピクチャサイズ531としてビットストリーム500に含まれ得る。サブピクチャサイズ631は、サブピクチャ幅631aおよびサブピクチャ高さ631bを含む。サブピクチャ幅631aは、ルマサンプルの単位の対応するサブピクチャ622の幅である。サブピクチャ高さ631bは、ルマサンプルの単位の対応するサブピクチャ622の高さである。サブピクチャ622は各々サブピクチャID633を含み、サブピクチャID633はサブピクチャID633としてビットストリーム500に含まれ得る。サブピクチャID633は、各サブピクチャ622を一意に識別する任意の値であり得る。示される例では、サブピクチャID633はサブピクチャ622のインデックスである。サブピクチャ622は各々位置632を含み、位置632はサブピクチャ位置532としてビットストリーム500に含まれ得る。位置632は、対応するサブピクチャ622の左上サンプルとピクチャ600の左上サンプル642との間のオフセットとして表される。
また示されるように、一部のサブピクチャ622は時間動き制約サブピクチャ634であってもよく、他のサブピクチャ622はそうではなくてもよい。示される例では、5というサブピクチャID633を有するサブピクチャ622は、時間動き制約サブピクチャ634である。これは、5として識別されるサブピクチャ622が、いずれの他のサブピクチャ622も参照せずにコーディングされ、したがって、他のサブピクチャ622からのデータを考慮することなく抽出され別々に復号され得ることを示す。どのサブピクチャ622が時間動き制約サブピクチャ634であるかの指示は、ビットストリーム500において動き制約サブピクチャフラグ534の中でシグナリングされ得る。
示されるように、サブピクチャ622は、間隙または重複なしでピクチャ600を包含するように制約され得る。間隙は、いずれのサブピクチャ622にも含まれないピクチャ600の領域である。重複は、1つより多くのサブピクチャ622に含まれるピクチャ600の領域である。図6に示される例では、サブピクチャ622は、間隙と重複の両方を防ぐようにピクチャ600から区分される。間隙により、ピクチャ600のサンプルがサブピクチャ622の外側に残る。重複により、関連するスライスが複数のサブピクチャ622に含まれる。したがって、間隙および重複により、サンプルは、サブピクチャ622が異なるようにコーディングされるとき、異なる取り扱いによる影響を受けるようになり得る。これがエンコーダにおいて許容される場合、デコーダは、復号方式が滅多に使用されないときでも、そのようなコーディング方式をサポートしなければならない。サブピクチャ622の間隙および重複を許容しないことで、サブピクチャサイズ631および位置632を決定するときにデコーダが潜在的な間隙および重複を考慮することが必要とされないので、デコーダの複雑さを下げることができる。さらに、サブピクチャ622の間隙および重複を許容しないことは、エンコーダにおけるRDOプロセスの複雑さを下げる。これは、ビデオシーケンスに対する符号化を選択するときにエンコーダが間隙と重複の事例を考慮するのを省略できるからである。したがって、間隙および重複を回避することは、エンコーダとデコーダにおけるメモリリソースおよび/または処理リソースの使用を減らし得る。
図7は、スライス724をサブピクチャ722のレイアウトに関連付けるための例示的な機構700を示す概略図である。たとえば、機構700はピクチャ600に適用され得る。さらに、機構700は、たとえばコーデックシステム200、エンコーダ300、および/またはデコーダ400によって、ビットストリーム500の中のデータに基づいて適用され得る。さらに、機構700は、方法100に従った符号化および復号をサポートするために利用され得る。
機構700は、それぞれ、スライス524/525およびサブピクチャ522/523などの、サブピクチャ722の中のスライス724に適用され得る。示される例では、サブピクチャ722は、第1のスライス724a、第2のスライス724b、および第3のスライス724cを含む。スライス724の各々のスライスヘッダは、サブピクチャ722のサブピクチャID733を含む。デコーダは、スライスヘッダからのサブピクチャID733をSPSの中のサブピクチャID733と照合することができる。デコーダは次いで、サブピクチャID733に基づいてSPSからサブピクチャ722の位置732およびサイズを決定することができる。位置732を使用して、サブピクチャ722は、ピクチャの左上の角742にある左上サンプルに対して相対的に配置され得る。位置732に対する相対的なサブピクチャ722の高さおよび幅を設定するために、サイズが使用され得る。そうすると、スライス724がサブピクチャ722に含まれ得る。したがって、スライス724は、他のサブピクチャを参照せずに、サブピクチャID733に基づいて正しいサブピクチャ722の中に位置決めされ得る。このことは、他の失われたサブピクチャがサブピクチャ722の復号を変えないので、誤り訂正を助ける。このことはまた、サブピクチャ722のみを抽出する適用形態を助け、他のサブピクチャの送信を避ける。したがって、サブピクチャID733は、機能の向上および/またはコーディング効率の向上を助け、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
図8は、サブピクチャ822へと区分される別の例示的なピクチャ800を示す概略図である。ピクチャ800は、ピクチャ600と実質的に同様であり得る。加えて、ピクチャ800は、たとえばコーデックシステム200、エンコーダ300、および/またはデコーダ400によって、ビットストリーム500において符号化され、ビットストリーム500から復号され得る。さらに、ピクチャ800は、方法100および/または機構700に従った符号化および復号をサポートするために、サブビットストリーム501において区分され、および/またはそれに含まれ得る。
ピクチャ800はサブピクチャ822を含み、サブピクチャ822はサブピクチャ522、523、622、および/または722と実質的に同様であり得る。サブピクチャ822は複数のCTU825へと分割される。CTU825は、標準化されたビデオコーディングシステムにおける基本コーディング単位である。CTU825はコーディングツリーによってコーディングブロックへと再分割され、コーディングブロックはインター予測またはイントラ予測に従ってコーディングされる。示されるように、一部のサブピクチャ822aは、CTU825のサイズの倍数であるサブピクチャ幅およびサブピクチャ高さを含むように制約される。示される例では、サブピクチャ822aは、6個のCTU825という高さと、5個のCTU825という幅とを有する。この制約は、ピクチャの右の境界801に位置するサブピクチャ822bおよびピクチャの下の境界802に位置するサブピクチャ822cに対しては取り除かれる。示される例では、サブピクチャ822bは、5個と6個の間のCTU825という幅を有する。しかしながら、ピクチャの下の境界802に位置しないサブピクチャ822bはそれでも、CTU825のサイズの倍数であるサブピクチャ高さを維持するように制約される。示される例では、サブピクチャ822cは、6個と7個の間のCTU825という高さを有する。しかしながら、ピクチャの右の境界801に位置しないサブピクチャ822cはそれでも、CTU825のサイズの倍数であるサブピクチャ幅を維持するように制約される。
上で述べられたように、一部のビデオシステムは、CTU825のサイズの倍数である高さおよび幅を含むようにサブピクチャ822を制限し得る。これは、サブピクチャ822が、多数のピクチャレイアウト、たとえばCTU825のサイズの倍数ではない全体の幅または高さを含むピクチャ800とともに正しく動作するのを妨げ得る。下のサブピクチャ822cおよび右のサブピクチャ822bが、CTU825のサイズの倍数ではない高さと幅をそれぞれ含むことを許容することによって、サブピクチャ822は、復号エラーを引き起こすことなく任意のピクチャ800とともに使用され得る。これは、エンコーダとデコーダの機能の向上をもたらす。さらに、向上した機能により、エンコーダはピクチャをより効率的にコーディングすることが可能になり、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
本明細書において説明されるように、本開示は、ビデオコーディングにおけるサブピクチャベースのピクチャ区分の設計を説明する。サブピクチャは、ピクチャのために使用されるのと同様の復号プロセスを使用して独立に復号され得る、ピクチャ内の長方形エリアである。本開示は、コーディングされたビデオシーケンスおよび/またはビットストリームにおけるサブピクチャのシグナリング、ならびに、サブピクチャ抽出のためのプロセスに関する。技法の説明は、ITU-TおよびISO/IECのJVETによるVVCに基づく。しかしながら、技法は、他のビデオコーデック仕様にも適用される。以下は本明細書において説明される例示的な実施形態である。そのような実施形態は、個々に、または組合せで適用され得る。
コーディングビデオシーケンス(CVS)に存在し得るサブピクチャに関する情報は、SPSなどのシーケンスレベルパラメータセットにおいてシグナリングされ得る。そのようなシグナリングは、以下の情報を含み得る。CVSの各ピクチャに存在するサブピクチャの数は、SPSにおいてシグナリングされ得る。SPSまたはCVSの文脈では、すべてのアクセスユニット(AU)に対する同じ位置にあるサブピクチャは、集合的にサブピクチャシーケンスと呼ばれ得る。各サブピクチャの性質を記述する情報をさらに指定するためのループも、SPSに含まれ得る。この情報は、サブピクチャ識別情報、サブピクチャの位置(たとえば、サブピクチャの左上角ルマサンプルとピクチャの左上角ルマサンプルとの間のオフセット距離)、およびサブピクチャのサイズを備え得る。加えて、SPSは、各サブピクチャが動き制約サブピクチャ(MCTSの機能を含む)であるかどうかをシグナリングし得る。各サブピクチャに対するプロファイル、階層、およびレベル情報も、デコーダにおいてシグナリングされ、または導出可能であり得る。そのような情報は、元のビットストリームからサブピクチャを抽出することによって作成されるビットストリームに対するプロファイル、階層、およびレベル情報を決定するために利用され得る。各サブピクチャのプロファイルおよび階層は、ビットストリーム全体のプロファイルおよび階層と同じであるものとして導かれ得る。各サブピクチャのレベルは明示的にシグナリングされ得る。そのようなシグナリングは、SPSに含まれるループに存在し得る。シーケンスレベルの仮想参照デコーダ(HRD)パラメータは、各サブピクチャ(または等価的に、各サブピクチャシーケンス)に対するSPSのビデオ使用可能性情報(VUI)セクションにおいてシグナリングされ得る。
ピクチャが2つ以上のサブピクチャへと区分されないとき、サブピクチャの特性(たとえば、位置、サイズなど)は、サブピクチャIDを除き、ビットストリームに存在しない/ビットストリームにおいてシグナリングされないことがある。CVSの中のピクチャのサブピクチャが抽出されるとき、新しいビットストリームの中の各アクセスユニットはサブピクチャを含まないことがある。この場合、新しいビットストリームの中の各AUの中のピクチャは、複数のサブピクチャに区分されない。したがって、SPSにおいて位置およびサイズなどのサブピクチャ特性をシグナリングする必要はなく、それは、そのような情報がピクチャ性質から導出され得るからである。しかしながら、それでもサブピクチャ識別情報がシグナリングされてもよく、それは、IDが、抽出されたサブピクチャに含まれるVCL NALユニット/タイルグループにより参照され得るからである。これにより、サブピクチャIDは、サブピクチャを抽出するときに同じままであることが可能になり得る。
ピクチャの中のサブピクチャの位置(xオフセットおよびyオフセット)は、ルマサンプルの単位でシグナリングされ得る。位置は、サブピクチャの左上角ルマサンプルとピクチャの左上角ルマサンプルとの間の距離を表す。代替的に、ピクチャの中のサブピクチャの位置は、最小コーディングルマブロックサイズ(MinCbSizeY)の単位でシグナリングされ得る。代替的に、サブピクチャ位置オフセットの単位は、パラメータセットにおいてシンタックス要素によって明示的に示され得る。単位は、CtbSizeY、MinCbSizeY、ルマサンプル、または他の値であり得る。
サブピクチャのサイズ(サブピクチャ幅およびサブピクチャ高さ)は、ルマサンプルの単位でシグナリングされ得る。代替的に、サブピクチャのサイズは、最小コーディングルマブロックサイズ(MinCbSizeY)の単位でシグナリングされ得る。代替的に、サブピクチャサイズ値の単位は、パラメータセットにおいてシンタックス要素によって明示的に示され得る。単位は、CtbSizeY、MinCbSizeY、ルマサンプル、または他の値であり得る。サブピクチャの右の境界がピクチャの右の境界と一致しないとき、サブピクチャの幅は、ルマCTUサイズ(CtbSizeY)の整数倍であることが必要とされ得る。同様に、サブピクチャの下の境界がピクチャの下の境界と一致しないとき、サブピクチャの高さは、ルマCTUサイズ(CtbSizeY)の整数倍であることが必要とされ得る。サブピクチャの幅がルマCTUサイズの整数倍ではない場合、サブピクチャは、ピクチャの中の最も右の位置に位置することが必要とされ得る。同様に、サブピクチャの高さがルマCTUサイズの整数倍ではない場合、サブピクチャは、ピクチャにおける最も下の位置に位置することが必要とされ得る。いくつかの場合、サブピクチャの幅はルマCTUサイズの単位でシグナリングされ得るが、サブピクチャの幅はルマCTUサイズの整数倍ではない。この場合、ルマサンプル単位の実際の幅が、サブピクチャのオフセット位置に基づいて導出され得る。サブピクチャの幅をルマCTUサイズに基づいて導出することができ、ピクチャの高さをルマサンプルに基づいて導出することができる。同様に、サブピクチャの高さはルマCTUサイズの単位でシグナリングされ得るが、サブピクチャの高さはルマCTUサイズの整数倍ではない。そのような場合、ルマサンプル単位の実際の高さは、サブピクチャのオフセット位置に基づいて導出され得る。サブピクチャの高さをルマCTUサイズに基づいて導出することができ、ピクチャの高さをルマサンプルに基づいて導出することができる。
任意のサブピクチャに対して、サブピクチャIDは、サブピクチャインデックスと異なり得る。サブピクチャインデックスは、SPSの中のサブピクチャのループにおいてシグナリングされるようなサブピクチャのインデックスであり得る。サブピクチャIDは、ピクチャのサブピクチャラスター走査順序における、サブピクチャのインデックスであり得る。各サブピクチャのサブピクチャIDの値がサブピクチャインデックスと同じであるとき、サブピクチャIDはシグナリングまたは導出され得る。各サブピクチャのサブピクチャIDがサブピクチャインデックスと異なるとき、サブピクチャIDは明示的にシグナリングされる。サブピクチャIDのシグナリングのためのビットの数は、サブピクチャ特性を含む同じパラメータセットにおいて(たとえば、SPSにおいて)シグナリングされ得る。サブピクチャIDに対するいくつかの値が、ある目的のために使わずにおかれ得る。たとえば、タイルグループヘッダが、どのサブピクチャがタイルグループを含むかを指定するためのサブピクチャIDを含むとき、エミュレーション防止コードが偶然含まれるのを防ぐためにタイルグループヘッダの最初の数ビットがすべて0ではないことを確実にするために、サブピクチャに対して値0は使わずにおかれ、使用されないことがある。ピクチャのサブピクチャが間隙および重複なしでピクチャのエリア全体を包含しない任意選択の事例では、値(たとえば、値1)が、任意のサブピクチャの一部ではないタイルグループに対して使われずにおかれ得る。代替的に、残りのエリアのサブピクチャIDが明示的にシグナリングされる。サブピクチャIDをシグナリングするためのビットの数は、次のように制約され得る。値の範囲は、サブピクチャIDの予備の値を含めて、ピクチャの中のすべてのサブピクチャを一意に識別するのに十分でなければならない。たとえば、サブピクチャIDに対するビットの最小の数は、Ceil(Log2(ピクチャの中のサブピクチャの数+予備のサブピクチャIDの数)の値であり得る。
サブピクチャの連合が間隙および重複なしでピクチャ全体を包含しなければならないことは、制約され得る。この制約が適用されるとき、各サブピクチャに対して、サブピクチャが動き制約サブピクチャであるかどうかを指定するためのフラグが存在してもよく、これは、サブピクチャが抽出され得ることを示す。代替的に、サブピクチャの連合は、ピクチャ全体を包含しないことがあるが、重複が許容されないことがある。
NALユニットビットの残りを解析することを抽出器に要求することなくサブピクチャ抽出プロセスを助けるために、サブピクチャIDがNALユニットヘッダの直後に存在し得る。VCL NALユニットに対して、サブピクチャIDは、タイルグループヘッダの最初のビットに存在し得る。非VCL NALユニットに対して、次のことが当てはまり得る。SPSでは、サブピクチャIDは、NALユニットヘッダの直後に存在する必要はない。PPSでは、同じピクチャのすべてのタイルグループが同じPPSを参照するように制約される場合、サブピクチャIDは、そのNALユニットヘッダの直後に存在する必要はない。同じピクチャのタイルグループが異なるPPSを参照することが許容される場合、サブピクチャIDは、PPSの最初のビット(たとえば、NALユニットヘッダの直後)に存在し得る。この場合、1つのピクチャの任意のタイルグループが、同じPPSを共有することが許容され得る。代替的に、同じピクチャのタイルグループが異なるPPSを参照することが許容され、同じピクチャの異なるタイルグループが同じPPSを共有することも許容されるとき、サブピクチャIDはPPSシンタックスにおいて存在しないことがある。代替的に、同じピクチャのタイルグループが異なるPPSを参照することが許容され、同じピクチャの異なるタイルグループも同じPPSを共有することが許容されるとき、サブピクチャIDのリストがPPSシンタックスにおいて存在し得る。このリストは、PPSが適用されるサブピクチャを示す。他の非VCL NALユニットに対して、非VCLユニット(たとえば、access unit delimiter、end of sequence、end of bitstreamなど)がピクチャレベルまたはそれ以上に適用される場合、サブピクチャIDは、NALユニットヘッダの直後に存在しなくてもよい。それ以外の場合、サブピクチャIDはNALユニットヘッダの直後に存在してもよい。
上記のSPSシグナリングを用いると、個々のサブピクチャ内のタイル区分は、PPSにおいてシグナリングされ得る。同じピクチャ内のタイルグループは、異なるPPSを参照することが許容され得る。この場合、タイルグルーピングは、各サブピクチャ内のみであり得る。タイルグルーピングの概念は、サブピクチャのタイルへの区分である。
代替的に、個々のサブピクチャ内でのタイル区分を記述するためのパラメータセットが定義される。そのようなパラメータセットは、サブピクチャパラメータセット(SPPS)と呼ばれ得る。SPPSはSPSを参照する。SPS IDを参照するシンタックス要素はSPPSに存在する。SPPSはサブピクチャIDを含み得る。サブピクチャ抽出を目的に、サブピクチャIDを参照するシンタックス要素は、SPPSにおける第1のシンタックス要素である。SPPSはタイル構造(たとえば、列の数、行の数、均一なタイルの離隔など)を含む。SPPSは、ループフィルタが関連するサブピクチャ境界にまたがって有効であるかどうかを示すためのフラグを含み得る。代替的に、各サブピクチャに対するサブピクチャ特性は、SPSではなくSPPSにおいてシグナリングされ得る。個々のサブピクチャ内でのタイル区分はそれでも、PPSにおいてシグナリングされ得る。同じピクチャ内のタイルグループは、異なるPPSを参照することが許容される。SPPSが有効にされると、SPPSは復号順序で連続するAUのシーケンスの間続く。しかしながら、SPPSは、CVSの最初ではないAUにおいて非アクティブ化/アクティブ化され得る。何らかのAUにおける複数のサブピクチャを伴う単層のビットストリームの復号プロセスの間の任意の瞬間において、複数のSPPSがアクティブであり得る。SPPSは、AUの異なるサブピクチャによって共有され得る。代替的に、SPPSおよびPPSは1つのパラメータセットへと統合され得る。そのような場合、同じピクチャのすべてのタイルグループが同じPPSを参照することは必要とされないことがある。同じサブピクチャの中のすべてのタイルグループが、SPPSとPPSの統合に起因する同じパラメータセットを参照し得るような、制約が適用され得る。
サブピクチャIDをシグナリングするために使用されるビットの数は、NALユニットヘッダにおいてシグナリングされ得る。NALユニットヘッダにおいて存在するとき、そのような情報は、NALユニットのペイロードの最初(たとえば、NALユニットヘッダの直後の最初の数ビット)にあるサブピクチャID値を解析する際に、サブピクチャ抽出プロセスを助け得る。そのようなシグナリングのために、NALユニットヘッダの中の予備のビット(たとえば、7個の予備のビット)の一部が、NALユニットヘッダの長さを増やすのを避けるために使用され得る。そのようなシグナリングのビットの数は、sub-picture-ID-bit-lenの値を包含し得る。たとえば、VVC NALユニットヘッダの7個の予備のビットのうちの4ビットが、この目的で使用され得る。
サブピクチャを復号するとき、各コーディングツリーブロックの位置(たとえば、xCtbおよびyCtb)が、サブピクチャの中のルマサンプル位置ではなくピクチャの中の実際のルマサンプル位置に調整され得る。こうすると、コーディングツリーブロックがサブピクチャではなくピクチャを参照して復号されるので、各参照ピクチャからの同じ位置にあるサブピクチャの抽出を避けることができる。コーディングツリーブロックの位置を調整するために、変数SubpictureXOffsetおよびSubpictureYOffsetが、サブピクチャの位置(subpic_x_offsetおよびsubpic_y_offset)に基づいて導出され得る。変数の値は、サブピクチャの中の各コーディングツリーブロックの、ルマサンプル位置xおよびyの座標の値にそれぞれ加算され得る。
サブピクチャ抽出プロセスは次のように定義され得る。プロセスへの入力は、抽出されるべき標的サブピクチャである。これは、サブピクチャIDまたはサブピクチャ位置の形式であり得る。入力がサブピクチャの位置であるとき、関連するサブピクチャIDが、SPSの中のサブピクチャ情報を解析することによって解決され得る。非VCL NALユニットに対しては、次のことが当てはまる。ピクチャサイズおよびレベルに関するSPSの中のシンタックス要素が、サブピクチャのサイズおよびレベル情報とともに更新され得る。以下の非VCL NALユニット、すなわち、PPS、Access Unit Delimiter (AUD)、End of Sequence (EOS)、End of Bitstream (EOB)、およびピクチャレベルまたはそれ以上に適用可能な任意の他の非VCL NALユニットは、変更されないままである。標的サブピクチャIDに等しくないサブピクチャIDを伴う残りの非VCL NALユニットは、取り除かれ得る。標的サブピクチャIDに等しくないサブピクチャIDを伴うVCL NALユニットも、取り除かれ得る。
SEIメッセージをネストするシーケンスレベルサブピクチャは、サブピクチャのセットに対するAUレベルSEIメッセージまたはサブピクチャレベルSEIメッセージのネストのために使用され得る。これは、バッファリング期間、ピクチャタイミング、および非HRD SEIメッセージを含み得る。SEIメッセージをネストするこのサブピクチャのシンタックスおよびセマンティクスは、次の通りであり得る。無指向性メディアフォーマット(OMAF)環境などにおけるシステム動作では、ビューポートを包含するサブピクチャシーケンスのセットは、OMAFプレーヤによって要求され復号され得る。したがって、シーケンスレベルSEIメッセージは、長方形ピクチャ領域を集合的に包含するサブピクチャシーケンスのセットの情報を搬送するために使用される。この情報はシステムによって使用されてもよく、この情報は、要求される復号能力ならびにサブピクチャシーケンスのセットのビットレートを示すものである。この情報は、サブピクチャシーケンスのセットのみを含むビットストリームのレベルを示す。この情報はまた、サブピクチャシーケンスのセットのみを含むビットストリームのビットレートを示す。任意選択で、サブビットストリーム抽出プロセスは、サブピクチャシーケンスのセットに対して指定され得る。これを行うことの利点は、サブピクチャシーケンスのセットのみを含むビットストリームも適合したものになり得るということである。欠点は、異なるビューポートサイズの可能性を考慮する際に、すでに多数である可能性のある個々のサブピクチャシーケンスに加えて、多くのそのようなセットが存在し得るということである。
ある例示的な実施形態では、開示される例の1つまたは複数は次のように実施され得る。サブピクチャが、ピクチャ内の1つまたは複数のタイルグループの長方形領域として定義され得る。許容される二分割プロセスは次のように定義され得る。このプロセスへの入力は、二分割モードbtSplit、コーディングブロック幅cbWidth、コーディングブロック高さcbHeight、ピクチャの左上ルマサンプルに対する相対的な考慮されるコーディングブロックの左上ルマサンプルの位置(x0,y0)、マルチタイプ木深度mttDepth、オフセットを伴う最大マルチタイプ木深度maxMttDepth、最大二分木サイズmaxBtSize、および区分インデックスpartIdxである。このプロセスの出力は、変数allowBtSplitである。
変数parallelTtSplitおよびcbSizeは、上で規定されたように導出される。変数allowBtSpitは次のように導出される。次の条件、すなわち、cbSizeがMinBtSizeY以下である、cbWidthがmaxBtSizeより大きい、cbHeightがmaxBtSizeより大きい、およびmttDepthがmaxMttDepth以上であるという条件のうちの1つまたは複数が真である場合、allowBtSplitはFALSEに等しく設定される。そうではなく、次の条件、すなわち、btSplitがSPLIT_BT_VERに等しい、およびy0+cbHeightがSupPicBottomBorderInPicより大きいという条件のすべてが真である場合、allowBtSplitはFALSEに等しく設定される。そうではなく、次の条件、すなわち、btSplitがSPLIT_BT_HORに等しい、およびx0+cbWidthがSupPicRightBorderInPicより大きい、およびy0+cbHeightがSubPicBottomBorderInPic以下であるという条件のすべてが真である場合、allowBtSplitはFALSEに等しく設定される。そうではなく、次の条件、すなわち、mttDepthが0より大きい、partIdxが1に等しい、およびMttSplitMode[x0][y0][mttDepth-1]がparallelTtSplitに等しいという条件のすべてが真である場合、allowBtSplitはFALSEに等しく設定される。そうではなく、次の条件、すなわち、btSplitがSPLIT_BT_VERに等しい、cbWidthがMaxTbSizeY以下である、およびcbHeightがMaxTbSizeYより大きいという条件のすべてが真である場合、allowBtSplitはFALSEに等しく設定される。そうではなく、次の条件、すなわち、btSplitがSPLIT_BT_HORに等しい、cbWidthがMaxTbSizeYより大きい、およびcbHeightがMaxTbSizeY以下であるという条件のすべてが真である場合、allowBtSplitはFALSEに等しく設定される。それ以外の場合、allowBtSplitはTRUEに等しく設定される。
許容される三分割プロセスは、次のように定義され得る。このプロセスへの入力は、三分割モードttSplit、コーディングブロック幅cbWidth、コーディングブロック高さcbHeight、ピクチャの左上ルマサンプルに対する相対的な考慮されるコーディングブロックの左上ルマサンプルの位置(x0,y0)、マルチタイプ木深度mttDepth、オフセットを伴う最大マルチタイプ木深度maxMttDepth、および最大二分木サイズmaxTtSizeである。このプロセスの出力は、変数allowTtSplitである。
変数cbSizeは上で規定されたように導出される。変数allowTtSplitは次のように導出される。次の条件、すなわち、cbSizeが2*MinTtSizeY以下である、cbWidthがMin(MaxTbSizeY,maxTtSize)より大きい、cbHeightがMin(MaxTbSizeY,maxTtSize)より大きい、mttDepthがmaxMttDepth以上である、x0+cbWidthがSupPicRightBoderInPicより大きい、およびy0+cbHeightがSubPicBottomBorderInPicより大きいという条件のうちの1つまたは複数が真である場合、allowTtSplitはFALSEに等しく設定される。それ以外の場合、allowTtSplitはTRUEに等しく設定される。
シーケンスパラメータセットRBSPのシンタックスおよびセマンティクスは次の通りである。
pic_width_in_luma_samplesは、ルマサンプルの単位で各々の復号されたピクチャの幅を指定する。pic_width_in_luma_samplesは、0に等しくないものとし、MinCbSizeYの整数倍であるものとする。pic_height_in_luma_samplesは、ルマサンプルの単位で各々の復号されたピクチャの高さを指定する。pic_height_in_luma_samplesは、0に等しくないものとし、MinCbSizeYの整数倍であるものとする。num_subpicture_minus1に1を足したものは、コーディングされたピクチャにおいて区分されるサブピクチャの数を指定するは、コーディングされたビデオシーケンスに属する。subpic_id_len_minus1に1を足したものは、SPSにおけるシンタックス要素subpic_id[i]、SPSを参照するSPPSの中のspps_subpic_id、およびSPSを参照するタイルグループヘッダの中のtile_group_subpic_idを表すために使用されるビットの数を指定する。subpic_id_len_minus1の値は、両端を含めてCeil(Log2(num_subpic_minus1+2)から8の範囲にあるものとする。subpic_id[i]は、SPSを参照するピクチャのi番目のサブピクチャのサブピクチャIDを指定する。subpic_id[i]の長さは、subpic_id_len_minus1+1ビットである。subpic_id[i]の値は0より大きいものとする。subpic_level_idc[i]は、i番目のサブピクチャの抽出に起因するCVSが指定されたリソース要件に従うレベルを示す。ビットストリームは、指定されるもの以外のsubpic_level_idc[i]の値を含まないものとする。subpic_level_idc[i]の他の値は予備である。存在しないとき、subpic_level_idc[i]の値は、general_level_idcの値に等しいと推測される。
subpic_x_offset[i]は、ピクチャの左上の角に対する相対的なi番目のサブピクチャの左上の角の水平オフセットを指定する。存在しないとき、subpic_x_offset[i]の値は0に等しいと推測される。サブピクチャxのオフセットの値は、SubpictureXOffset[i]=subpic_x_offset[i]のように導出される。subpic_y_offset[i]は、ピクチャの左上の角に対する相対的なi番目のサブピクチャの左上の角の垂直オフセットを指定する。存在しないとき、subpic_y_offset[i]の値は、0に等しいと推測される。サブピクチャyのオフセットの値は、SubpictureYOffset[i]=subpic_y_offset[i]のように導出される。subpic_width_in_luma_samples[i]は、このSPSがアクティブSPSであるi番目の復号されたサブピクチャの幅を指定する。SubpictureXOffset[i]とsubpic_width_in_luma_samples[i]の合計がpic_width_in_luma_samples未満であるとき、subpic_width_in_luma_samples[i]の値はCtbSizeYの整数倍であるものとする。存在しないとき、subpic_width_in_luma_samples[i]の値は、pic_width_in_luma_samplesの値に等しいと推測される。subpic_height_in_luma_samples[i]は、このSPSがアクティブSPSであるi番目の復号されたサブピクチャの高さを指定する。SubpictureYOffset[i]とsubpic_height_in_luma_samples[i]の合計がpic_height_in_luma_samples未満であるとき、subpic_height_in_luma_samples[i]の値はCtbSizeYの整数倍であるものとする。存在しないとき、subpic_height_in_luma_samples[i]の値は、pic_height_in_luma_samplesの値に等しいと推測される。
サブピクチャの連合が重複および間隙なしでピクチャのエリア全体を包含すべきであるということが、ビットストリーム適合の要件である。1に等しいsubpic_motion_constrained_flag[i]は、i番目のサブピクチャが時間動き制約サブピクチャであることを指定する。0に等しいsubpic_motion_constrained_flag[i]は、i番目のサブピクチャが時間動き制約サブピクチャであってもなくてもよいことを指定する。存在しないとき、subpic_motion_constrained_flagの値は0に等しいと推測される。
変数SubpicWidthInCtbsY、SubpicHeightInCtbsY、SubpicSizeInCtbsY、SubpicWidthInMinCbsY、SubpicHeightInMinCbsY、SubpicSizeInMinCbsY、SubpicSizeInSamplesY、SubpicWidthInSamplesC、およびSubpicHeightInSamplesCは、次のように導出される。
SubpicWidthInLumaSamples[i]=subpic_width_in_luma_samples[i]
SubpicHeightInLumaSamples[i]=subpic_height_in_luma_samples[i]
SubPicRightBorderInPic[i]=SubpictureXOffset[i]+PicWidthInLumaSamples[i]
SubPicBottomBorderInPic[i]=SubpictureYOffset[i]+PicHeightInLumaSamples[i]
SubpicWidthInCtbsY[i]=Ceil(SubpicWidthInLumaSamples[i]÷CtbSizeY)
SubpicHeightInCtbsY[i]=Ceil(SubpicHeightInLumaSamples[i]÷CtbSizeY)
SubpicSizeInCtbsY[i]=SubpicWidthInCtbsY[i]*SubpicHeightInCtbsY[i]
SubpicWidthInMinCbsY[i]=SubpicWidthInLumaSamples[i]/MinCbSizeY
SubpicHeightInMinCbsY[i]=SubpicHeightInLumaSamples[i]/MinCbSizeY
SubpicSizeInMinCbsY[i]=SubpicWidthInMinCbsY[i]*SubpicHeightInMinCbsY[i]
SubpicSizeInSamplesY[i]=SubpicWidthInLumaSamples[i]*SubpicHeightInLumaSamples[i]
SubpicWidthInSamplesC[i]=SubpicWidthInLumaSamples[i]/SubWidthC
SubpicHeightInSamplesC[i]=SubpicHeightInLumaSamples[i]/SubHeightC
サブピクチャパラメータセットRBSPのシンタックスおよびセマンティクスは次の通りである。
spps_subpic_idは、SPPSが属するサブピクチャを識別する。spps_subpic_idの長さは、subpic_id_len_minus1+1ビットである。spps_subpic_parameter_set_idは、他のシンタックス要素による参照のためにSPPSを識別する。spps_subpic_parameter_set_idの値は、両端を含めて0から63の範囲にあるものとする。spps_seq_parameter_set_idは、アクティブSPSに対するsps_seq_parameter_set_idの値を指定する。spps_seq_parameter_set_idの値は、両端を含めて0から15の範囲にあるものとする。1に等しいsingle_tile_in_subpic_flagは、SPPSを参照する各サブピクチャの中に1つのタイルしかないことを指定する。0に等しいsingle_tile_in_subpic_flagは、SPPSを参照する各サブピクチャの中に1つより多くのタイルがあることを指定する。num_tile_columns_minus1に1を足したものは、サブピクチャを区分するタイル列の数を指定する。num_tile_columns_minus1は、両端を含めて0からPicWidthInCtbsY[spps_subpic_id]-1の範囲にあるものとする。存在しないとき、num_tile_columns_minus1の値は0に等しいと推測される。num_tile_rows_minus1に1を足したものは、サブピクチャを区分するタイル行の数を指定する。num_tile_rows_minus1は、両端を含めて0からPicHeightInCtbsY[spps_subpic_id]-1の範囲にあるものとする。存在しないとき、num_tile_rows_minus1の値は0に等しいと推測される。変数NumTilesInPicは、(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)に等しく設定される。
single_tile_in_subpic_flagが0に等しいとき、NumTilesInPicは0より大きいものとする。1に等しいuniform_tile_spacing_flagは、タイル列の境界と、同様にタイル行の境界とが、サブピクチャ全体で均一に分布することを指定する。0に等しいuniform_tile_spacing_flagは、タイル列の境界と、同様にタイル行の境界とが、サブピクチャ全体で均一に分布せず、シンタックス要素tile_column_width_minus1[i]およびtile_row_height_minus1[i]を使用して明示的にシグナリングされることを指定する。存在しないとき、uniform_tile_spacing_flagの値は1に等しいと推測される。tile_column_width_minus1[i]に1を足したものは、CTBの単位でi番目のタイル列の幅を指定する。tile_row_height_minus1[i]に1を足したものは、CTBの単位でi番目のタイル行の高さを指定する。
以下の変数、すなわち、CTBの単位でi番目のタイル列の幅を指定する、両端を含めて0からnum_tile_columns_minus1の範囲にわたるiに対するリストColWidth[i]、CTBの単位でj番目のタイル行の高さを指定する、両端を含めて0からnum_tile_rows_minus1の範囲にわたるjに対するリストRowHeight[j]、CTBの単位でi番目のタイル列境界の位置を指定する、両端を含めて0からnum_tile_columns_minus1+1の範囲にわたるiに対するリストColBd[i]、CTBの単位でj番目のタイル行境界の位置を指定する、両端を含めて0からnum_tile_rows_minus1+1の範囲にわたるjに対するリストRowBd[j]、ピクチャのCTBラスター走査におけるCTBアドレスからタイル走査におけるCTBアドレスへの変換を指定する、両端を含めて0からPicSizeInCtbsY-1にわたるctbAddrRsに対するリストCtbAddrRsToTs[ctbAddrRs]、タイル走査におけるCTBアドレスからピクチャのCTBラスター走査におけるCTBアドレスへの変換を指定する、両端を含めて0からPicSizeInCtbsY-1にわたるctbAddrTsに対するリストCtbAddrTsToRs[ctbAddrTs]、タイル走査におけるCTBアドレスからタイルIDへの変換を指定する、両端を含めて0からPicSizeInCtbsY-1にわたるctbAddrTsに対するリストTileId[ctbAddrTs]、タイルインデックスからタイルの中のCTUの数への変換を指定する、両端を含めて0からPicSizeInCtbsY-1にわたるtileIdxに対するリストNumCtusInTile[tileIdx]、タイルIDからタイルの中の第1のCTBのタイル走査におけるCTBアドレスへの変換を指定する、両端を含めて0からNumTilesInPic-1にわたるtileIdxに対するリストFirstCtbAddrTs[tileIdx]、ルマサンプルの単位でi番目のタイル列の幅を指定する、両端を含めて0からnum_tile_columns_minus1の範囲にわたるiに対するリストColumnWidthInLumaSamples[i]、および、ルマサンプルの単位でj番目のタイル行の高さを指定する、両端を含めて0からnum_tile_rows_minus1の範囲にわたるjに対するリストRowHeightInLumaSamples[j]は、CTBラスターおよびタイル走査変換プロセスを呼び出すことによって導出される。両端を含めて0からnum_tile_columns_minus1にわたるiに対するColumnWidthInLumaSamples[i]、および両端を含めて0からnum_tile_rows_minus1にわたるjに対するRowHeightInLumaSamples[j]の値はすべて、0より大きいものとする。
1に等しいloop_filter_across_tiles_enabled_flagは、ループ内フィルタリング動作がSPPSを参照するサブピクチャの中のタイル境界にまたがって実行され得ることを指定する。0に等しいloop_filter_across_tiles_enabled_flagは、ループ内フィルタリング動作がSPPSを参照するサブピクチャの中のタイル境界にまたがって実行されないことを指定する。ループ内フィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ、および適応ループフィルタ動作を含む。存在しないとき、loop_filter_across_tiles_enabled_flagの値は1に等しいと推測される。1に等しいloop_filter_across_subpic_enabled_flagは、ループ内フィルタリング動作がSPPSを参照するサブピクチャの中のサブピクチャ境界にまたがって実行され得ることを指定する。0に等しいloop_filter_across_subpic_enabled_flagは、ループ内フィルタリング動作がSPPSを参照するサブピクチャの中のサブピクチャ境界にまたがって実行されないことを指定する。ループ内フィルタリング動作は、デブロッキングフィルタ、サンプル適応オフセットフィルタ、および適応ループフィルタ動作を含む。存在しないとき、loop_filter_across_subpic_enabled_flagの値は、loop_filter_across_tiles_enabed_flagの値に等しいと推測される。
一般的なタイルグループヘッダのシンタックスおよびセマンティクスは次の通りである。
タイルグループヘッダシンタックス要素tile_group_pic_parameter_set_idおよびtile_group_pic_order_cnt_lsbの値は、コーディングされたピクチャのすべてのタイルグループヘッダにおいて同じであるものとする。タイルグループヘッダシンタックス要素tile_group_subpic_idの値は、コーディングされたサブピクチャのすべてのタイルグループヘッダにおいて同じであるものとする。tile_group_subpic_idは、タイルグループが属するサブピクチャを識別する。tile_group_subpic_idの長さは、subpic_id_len_minus1+1ビットである。tile_group_subpic_parameter_set_idは、使用中のSPPSに対するspps_subpic_parameter_set_idの値を指定する。tile_group_spps_parameter_set_idの値は、両端を含めて0から63の範囲にあるものとする。
以下の変数が導出され、アクティブSPSから導出されたそれぞれの変数を上書きする。
PicWidthInLumaSamples=SubpicWidthInLumaSamples[tile_group_subpic_id]
PicHeightInLumaSamples=PicHeightInLumaSamples[tile_group_subpic_id]
SubPicRightBorderInPic=SubPicRightBorderInPic[tile_group_subpic_id]
SubPicBottomBorderInPic=SubPicBottomBorderInPic[tile_group_subpic_id]
PicWidthInCtbsY=SubPicWidthInCtbsY[tile_group_subpic_id]
PicHeightInCtbsY=SubPicHeightInCtbsY[tile_group_subpic_id]
PicSizeInCtbsY=SubPicSizeInCtbsY[tile_group_subpic_id]
PicWidthInMinCbsY=SubPicWidthInMinCbsY[tile_group_subpic_id]
PicHeightInMinCbsY=SubPicHeightInMinCbsY[tile_group_subpic_id]
PicSizeInMinCbsY=SubPicSizeInMinCbsY[tile_group_subpic_id]
PicSizeInSamplesY=SubPicSizeInSamplesY[tile_group_subpic_id]
PicWidthInSamplesC=SubPicWidthInSamplesC[tile_group_subpic_id]
PicHeightInSamplesC=SubPicHeightInSamplesC[tile_group_subpic_id]
コーディングツリーユニットシンタックスは次の通りである。
コーディング四分木のシンタックスおよびセマンティクスは次の通りである。
qt_split_cu_flag[x0][y0]は、コーディングユニットが半分の水平サイズおよび垂直サイズを伴うコーディングユニットへと分割されるかどうかを指定する。アレイインデックスx0、y0は、ピクチャの左上ルマサンプルに対する相対的な考慮されるコーディングブロックの左上ルマサンプルの位置(x0,y0)を指定する。qt_split_cu_flag[x0][y0]が存在しないとき、以下のことが当てはまる。以下の条件のうちの1つまたは複数が真である場合、qt_split_cu_flag[x0][y0]の値は1に等しいと推測される。treeTypeがDUAL_TREE_CHROMAに等しいか、またはそうでなければMaxBtSizeYより大きい場合、x0+(1<<log2CbSize)がSubPicRightBorderInPicより大きく、(1<<log2CbSize)がMaxBtSizeCより大きい。treeTypeがDUAL_TREE_CHROMAに等しいか、またはそうでなければMaxBtSizeYより大きい場合、y0+(1<<log2CbSize)がSubPicBottomBorderInPicより大きく、(1<<log2CbSize)がMaxBtSizeCより大きい。
それ以外の場合、以下の条件のすべてが真であれば、qt_split_cu_flag[x0][y0]の値は1に等しいと推測される。treeTypeがDUAL_TREE_CHROMAに等しいか、またはそうでなければMinQtSizeYより大きい場合、x0+(1<<log2CbSize)がSubPicRightBorderInPicより大きく、y0+(1<<log2CbSize)がSubPicBottomBorderInPicより大きく、(1<<log2CbSize)がMinQtSizeCより大きい。それ以外の場合、qt_split_cu_flag[x0][y0]の値は0に等しいと推測される。
マルチタイプ木のシンタックスおよびセマンティクスは次の通りである。
0に等しいmtt_split_cu_flagは、コーディングユニットが分割されないことを指定する。1に等しいmtt_split_cu_flagは、シンタックス要素mtt_split_cu_binary_flagによって示されるように、コーディングユニットが二分割を使用して2つのコーディングユニットへと、または三分割を使用して3つのコーディングユニットへと分割されることを指定する。二分割または三分割は、シンタックス要素mtt_split_cu_vertical_flagによって示されるように、垂直方向または水平方向のいずれかであり得る。mtt_split_cu_flagが存在しないとき、mtt_split_cu_flagの値は次のように推測される。x0+cbWidthがSubPicRightBorderInPicより大きい、およびy0+cbHeightがSubPicBottomBorderInPicより大きいという条件のうちの1つまたは複数が真である場合、mtt_split_cu_flagの値は1に等しいと推測される。それ以外の場合、mtt_split_cu_flagの値は0に等しいと推測される。
時間的なルマ動きベクトル予測のための導出プロセスは次の通りである。このプロセスの出力は、1/16分数サンプル精度の動きベクトル予測mvLXCol、および利用可能性フラグavailableFlagLXColである。変数currCbは、ルマ位置(xCb,yCb)における現在のルマコーディングブロックを指定する。変数mvLXColおよびavailableFlagLXColは次のように導出される。tile_group_temporal_mvp_enabled_flagが0に等しい場合、または参照ピクチャが現在のピクチャである場合、mvLXColの両方の成分が0に等しく設定され、availableFlagLXColが0に等しく設定される。それ以外の場合(tile_group_temporal_mvp_enabled_flagが1に等しく、参照ピクチャが現在のピクチャではない)、次の順序のステップが適用される。右下の同じ位置にある動きベクトルは次のように導出される。
xColBr=xCb+cbWidth (8-355)
yColBr=yCb+cbHeight (8-356)
yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがSubPicBottomBorderInPic未満であり、xColBrがSubPicRightBorderInPic未満である場合、次のことが当てはまる。変数colCbは、ColPicによって指定される同じ位置にあるピクチャの内部の((xColBr>>3)<<3,(yColBr>>3)<<3)により与えられる修正された位置を包含する、ルマコーディングブロックを指定する。ルマ位置(xColCb,yColCb)は、ColPicによって指定される同じ位置にあるピクチャの左上ルマサンプルに対して相対的な、colCbによって指定される同じ位置にあるルマコーディングブロックの左上サンプルに等しく設定される。同じ位置にある動きベクトルの導出プロセスは、0に等しく設定されたcurrCb、colCb、(xColCb,yColCb)、refIdxLX、およびsbFlagを入力として用いて呼び出され、出力はmvLXColおよびavailableFlagLXColに割り当てられる。それ以外の場合、mvLXColの両方の成分が0に等しく設定され、availableFlagLXColが0に等しく設定される。
時間的な三角統合候補のための導出プロセスは次の通りである。変数mvLXColC0、mvLXColC1、availableFlagLXColC0およびavailableFlagLXColC1は、次のように導出される。tile_group_temporal_mvp_enabled_flagが0に等しい場合、mvLXColC0とmvLXColC1の両方の成分が0に等しく設定され、availableFlagLXColC0およびavailableFlagLXColC1は0に等しく設定される。それ以外の場合(tile_group_temporal_mvp_enabled_flagが1に等しい)、以下の順序のステップが適用される。右下の同じ位置にある動きベクトルmvLXColC0は次のように導出される。
xColBr=xCb+cbWidth (8-392)
yColBr=yCb+cbHeight (8-393)
yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがSubPicBottomBorderInPic未満であり、xColBrがSubPicRightBorderInPic未満である場合、次のことが当てはまる。変数colCbは、ColPicによって指定される同じ位置にあるピクチャの内部の((xColBr>>3)<<3,(yColBr>>3)<<3)により与えられる修正された位置を包含する、ルマコーディングブロックを指定する。ルマ位置(xColCb,yColCb)は、ColPicによって指定される同じ位置にあるピクチャの左上ルマサンプルに対する、colCbによって指定される同じ位置にあるルマコーディングブロックの左上サンプルに等しく設定される。同じ位置にある動きベクトルの導出プロセスは、0に等しく設定されたcurrCb、colCb、(xColCb,yColCb)、refIdxLXC0、およびsbFlagを入力として用いて呼び出され、出力はmvLXColC0およびavailableFlagLXColC0に割り当てられる。それ以外の場合、mvLXColC0の両方の成分が0に等しく設定され、availableFlagLXColC0が0に等しく設定される。
構築されたアフィン制御点動きベクトル統合候補の導出プロセスは、次の通りである。Xを0および1として、第4の(同じ位置にある右下の)制御点動きベクトルcpMvLXCorner[3]、参照インデックスrefIdxLXCorner[3]、予測リスト利用フラグpredFlagLXCorner[3]、および利用可能性フラグavailableFlagCorner[3]が次のように導出される。Xを0または1として、時間統合候補に対する参照インデックスrefIdxLXCorner[3]が0に等しく設定される。Xを0または1として、変数mvLXColおよびavailableFlagLXColが次のように導出される。tile_group_temporal_mvp_enabled_flagが0に等しい場合、mvLXColの両方の成分が0に等しく設定され、availableFlagLXColが0に等しく設定される。それ以外の場合(tile_group_temporal_mvp_enabled_flagが1に等しい)、次のことが当てはまる。
xColBr=xCb+cbWidth (8-566)
yColBr=yCb+cbHeight (8-567)
yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがSubPicBottomBorderInPic未満であり、xColBrがSubPicRightBorderInPic未満である場合、次のことが当てはまる。変数colCbは、ColPicによって指定される同じ位置にあるピクチャの内部の((xColBr>>3)<<3,(yColBr>>3)<<3)により与えられる修正された位置を包含する、ルマコーディングブロックを指定する。ルマ位置(xColCb,yColCb)は、ColPicによって指定される同じ位置にあるピクチャの左上ルマサンプルに対する、colCbによって指定される同じ位置にあるルマコーディングブロックの左上サンプルに等しく設定される。同じ位置にある動きベクトルの導出プロセスは、0に等しく設定されたcurrCb、colCb、(xColCb,yColCb)、refIdxLX、およびsbFlagを入力として用いて呼び出され、出力はmvLXColおよびavailableFlagLXColに割り当てられる。それ以外の場合、mvLXColの両方の成分が0に等しく設定され、availableFlagLXColが0に等しく設定される。pic_width_in_luma_samplesのすべての出現を、PicWidthInLumaSamplesで置き換える。pic_height_in_luma_samplesのすべての出現を、PicHeightInLumaSamplesで置き換える。
第2の例示的な実施形態では、シーケンスパラメータセットRBSPのシンタックスおよびセマンティクスは次の通りである。
subpic_id_len_minus1に1を足したものは、SPSにおけるシンタックス要素subpic_id[i]を表すために使用されるビットの数、SPSを参照するSPPSにおけるspps_subpic_id、およびSPSを参照するタイルグループヘッダにおけるtile_group_subpic_idを指定する。subpic_id_len_minus1の値は、両端を含めてCeil(Log2(num_subpic_minus1+3)から8の範囲にあるものとする。両端を含めて0からnum_subpic_minus1のiに対するsubpicture[i]の間で重複がないことが、ビットストリーム適合の要件である。各サブピクチャは、時間動き制約サブピクチャであり得る。
一般的なタイルグループヘッダのセマンティクスは次の通りである。tile_group_subpic_idは、タイルグループが属するサブピクチャを識別する。tile_group_subpic_idの長さは、subpic_id_len_minus1+1ビットである。1に等しいtile_group_subpic_idは、タイルグループがいずれのサブピクチャにも属しないことを示す。
第3の例示的な実施形態では、NALユニットヘッダのシンタックスとセマンティクスは次の通りである。
nuh_subpicture_id_lenは、サブピクチャIDを指定するシンタックス要素を表すために使用されるビットの数を指定する。nuh_subpicture_id_lenの値が0より大きいとき、nuh_reserved_zero_4bitsの後の最初のnuh_subpicture_id_len番目のビットは、NALユニットのペイロードが属するサブピクチャのIDを指定する。nuh_subpicture_id_lenが0より大きいとき、nuh_subpicture_id_lenの値は、アクティブSPSにおいてsubpic_id_len_minus1の値に等しいものとする。非VCL NALユニットに対するnuh_subpicture_id_lenの値は、次のように制約される。nal_unit_typeがSPS_NUTまたはPPS_NUTに等しい場合、nuh_subpicture_id_lenは0に等しいものとする。nuh_reserved_zero_3bitsは「000」に等しいものとする。デコーダは、nuh_reserved_zero_3bitsの値が「000」に等しくないNALユニットを無視する(たとえば、ビットストリームから除去して廃棄する)ものとする。
第4の例示的な実施形態では、サブピクチャネスティングシンタックスは次の通りである。
1に等しいall_sub_pictures_flagは、ネストされたSEIメッセージがすべてのサブピクチャに適用されることを示す。1に等しいall_sub_pictures_flagは、ネストされたSEIメッセージが適用されるサブピクチャが後続のシンタックス要素によって明示的にシグナリングされることを指定する。nesting_num_sub_pictures_minus1に1を足したものは、ネストされたSEIメッセージが適用されるサブピクチャの数を指定する。nesting_sub_picture_id[i]は、ネストされたSEIメッセージが適用されるi番目のサブピクチャのサブピクチャIDを示す。nesting_sub_picture_id[i]シンタックス要素は、Ceil(Log2(nesting_num_sub_pictures_minus1+1))ビットによって表される。sub_picture_nesting_zero_bitは0に等しいものとする。
図9は、例示的なビデオコーディングデバイス900の概略図である。ビデオコーディングデバイス900は、本明細書で説明されるような開示される例/実施形態を実装するのに適している。ビデオコーディングデバイス900は、ネットワークを介してデータアップストリームおよび/またはダウンストリームを通信するための送信機および/または受信機を含む、ダウンストリームポート920、アップストリームポート950、および/またはトランシーバユニット(Tx/Rx)910を備える。ビデオコーディングデバイス900はまた、データを処理するための論理ユニットおよび/または中央処理装置(CPU)を含むプロセッサ930と、データを記憶するためのメモリ932とを含む。ビデオコーディングデバイス900はまた、電気コンポーネント、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、ならびに/または、電気通信ネットワーク、光通信ネットワーク、もしくはワイヤレス通信ネットワークを介したデータの通信のためにアップストリームポート950および/もしくはダウンストリームポート920に結合されるワイヤレス通信コンポーネントを備え得る。ビデオコーディングデバイス900はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)デバイス960を含み得る。I/Oデバイス960は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカーなどの出力デバイスを含み得る。I/Oデバイス960はまた、キーボード、マウス、トラックボールなどの入力デバイス、および/または、そのような出力デバイスと対話するための対応するインターフェースを含み得る。
プロセッサ930はハードウェアおよびソフトウェアによって実装される。プロセッサ930は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタルシグナルプロセッサ(DSP)として実装され得る。プロセッサ930は、ダウンストリームポート920、Tx/Rx910、アップストリームポート950、およびメモリ932と通信している。プロセッサ930はコーディングモジュール914を備える。コーディングモジュール914は、ビットストリーム500、ピクチャ600、および/またはピクチャ800を利用し得る、方法100、1000、1100、および/または機構700などの上で説明された開示された実施形態を実装する。コーディングモジュール914は、本明細書において説明される任意の他の方法/機構も実装し得る。さらに、コーディングモジュール914は、コーデックシステム200、エンコーダ300、および/またはデコーダ400を実装し得る。たとえば、コーディングモジュール914は、SPSにおいてサブピクチャの位置とサイズをシグナリングおよび/または取得するために利用され得る。別の例では、コーディングモジュール914は、そのようなサブピクチャがピクチャの右の境界またはピクチャの下の境界にそれぞれ位置しない限り、CTUサイズの倍数となるようにサブピクチャ幅およびサブピクチャ高さを制約し得る。別の例では、コーディングモジュール914は、間隙または重複なしでピクチャを包含するようにサブピクチャを制約し得る。別の例では、コーディングモジュール914は、一部のサブピクチャが時間動き制約サブピクチャであることと他のサブピクチャがそうではないこととを示すデータを、シグナリングおよび/または取得するために利用され得る。別の例では、コーディングモジュール914は、SPSにおいてサブピクチャIDの完全なセットをシグナリングし、対応するスライスを含むサブピクチャを示すためのサブピクチャIDを各スライスヘッダに含め得る。別の例では、コーディングモジュール914は、各サブピクチャのレベルをシグナリングし得る。したがって、コーディングモジュール914は、ビデオコーディングデバイス900に、追加の機能を提供させ、ビデオデータを区分してコーディングするときに処理オーバーヘッドを減らすために、および/またはコーディング効率を高めるために、ある処理を回避させる。したがって、コーディングモジュール914は、ビデオコーディングデバイス900の機能を改善し、ならびにビデオコーディングの技術に特有の問題に対処する。さらに、コーディングモジュール914は、異なる状態へのビデオコーディングデバイス900の変換を実施する。代替的に、コーディングモジュール914は、メモリ932に記憶されプロセッサ930によって実行される命令として(たとえば、非一時的媒体に記憶されるコンピュータプログラム製品として)実装され得る。
メモリ932は、ディスク、テープドライブ、ソリッドステートドライブ、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三値連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの、1つまたは複数のメモリタイプを備える。メモリ932は、実行のためにプログラムが選択されるときにそのようなプログラムを記憶するために、およびプログラム実行の間に読み取られる命令とデータを記憶するために、オーバーフローデータストレージデバイスとして使用され得る。
図10は、サブピクチャ522、523、622、722、および/または822などのサブピクチャの復号をサポートするために、ビットストリーム500などのビットストリームにおいてサブピクチャIDを符号化する例示的な方法1000のフローチャートである。方法1000は、方法100を実行するとき、コーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス900などのエンコーダによって利用され得る。
方法1000は、エンコーダが複数のピクチャを含むビデオシーケンスを受信して、たとえばユーザ入力に基づいてビデオシーケンスをビットストリームへと符号化すると決定すると、開始し得る。ビデオシーケンスは、符号化の前にさらなる区分のためにピクチャ/画像/フレームへと区分される。ステップ1001において、ピクチャは、複数のサブピクチャへと区分される。複数のサブピクチャの各々はさらに、1つまたは複数のスライスへと区分される。いくつかの例では、区分は、複数のサブピクチャの連合が間隙および重複を伴わずにピクチャの全エリアを包含するように制約される。
ステップ1003において、SPSがビットストリームへと符号化される。SPSは、ピクチャから区分された各サブピクチャのサブピクチャIDを備える。SPSはさらに、複数のサブピクチャの各々のサブピクチャサイズを備え得る。サブピクチャサイズは、ルマサンプル単位のサブピクチャ高さおよびルマサンプル単位のサブピクチャ幅を含み得る。SPSはさらに、複数のサブピクチャの各々のサブピクチャ位置を備え得る。サブピクチャ位置は、対応するサブピクチャの左上サンプルとピクチャの左上サンプルとの間のオフセット距離を含み得る。SPSはさらに、サブピクチャのうちの1つまたは複数が時間動き制約サブピクチャであることの指示を備え得る。
ステップ1005において、スライスヘッダがビットストリームへと符号化される。スライスヘッダは、スライスヘッダと関連付けられるスライスが示されるサブピクチャに含まれることを示すサブピクチャIDを備える。ステップ1007において、複数のサブピクチャのうちの1つまたは複数も、ビットストリームへと符号化される。ステップ1009において、ビットストリームがデコーダへの通信のために記憶される。ビットストリームは次いで、望まれるようにデコーダに送信され得る。いくつかの例では、サブビットストリームは、符号化されたビットストリームから抽出され得る。そのような場合、送信されるビットストリームはサブビットストリームである。他の例では、符号化されたビットストリームは、デコーダにおけるサブビットストリームの抽出のために送信され得る。さらに他の例では、符号化されたビットストリームは、サブビットストリームの抽出なしで復号され表示され得る。これらの例のいずれにおいても、すべてのサブピクチャIDの完全なリストが、関連するサイズ情報とともにSPSにおいて送信され得る。各スライスヘッダは、対応するスライスを含むサブピクチャを示すサブピクチャIDを含む。このようにして、サブピクチャおよび対応するスライスは、他のサブピクチャを参照せずに抽出され位置決めされ得る。したがって、サブピクチャIDは、機能の向上および/またはコーディング効率の向上を助け、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
図11は、サブピクチャIDに基づいて、サブピクチャ522、523、622、722、および/または822などのサブピクチャの、ビットストリーム500および/またはサブビットストリーム501などのビットストリームを復号する例示的な方法1100のフローチャートである。方法1100は、方法100を実行するとき、コーデックシステム200、デコーダ400、および/またはビデオコーディングデバイス900などのデコーダによって利用され得る。たとえば、方法1100は、方法1100の結果として作成されるビットストリームを復号するために適用され得る。
方法1100は、デコーダがサブピクチャを含むビットストリームの受信を開始すると開始し得る。ビットストリームは完全なビデオシーケンスを含んでもよく、または、ビットストリームは別々の抽出のためにサブピクチャの縮小されたセットを含むサブビットストリームであり得る。ステップ1101において、ビットストリームが受信される。ビットストリームは、SPS、ピクチャから区分された1つまたは複数のサブピクチャ、および1つまたは複数のサブピクチャに含まれるスライスと関連付けられる1つまたは複数のスライスヘッダを備える。
ステップ1103において、1つまたは複数のサブピクチャのサブピクチャIDを取得するために、SPSが解析される。さらに、スライスヘッダと関連付けられるスライスが現在のサブピクチャIDによって識別される現在のサブピクチャに含まれることを示す現在のサブピクチャIDを取得するために、スライスヘッダが解析される。SPSはさらに、ピクチャから区分された各サブピクチャのサブピクチャサイズを備え得る。サブピクチャサイズは、ルマサンプル単位のサブピクチャ高さおよびルマサンプル単位のサブピクチャ幅を含み得る。SPSはさらに、ピクチャから区分された各サブピクチャのサブピクチャ位置を備え得る。サブピクチャ位置は、対応するサブピクチャの左上サンプルとピクチャの左上サンプルとの間のオフセット距離を含み得る。SPSはさらに、サブピクチャのうちの1つまたは複数が時間動き制約サブピクチャであることの指示を備え得る。したがって、サブピクチャサイズ、サブピクチャ位置、および/または時間動き制約サブピクチャのあらゆる指示を取得するためにも、SPSが解析され得る。
ステップ1105において、スライスが、スライスヘッダの中の現在のサブピクチャIDに基づいて、1つまたは複数のサブピクチャからの現在のサブピクチャと照合され得る。さらに、スライスは、現在のサブピクチャのサブピクチャサイズおよびサブピクチャ位置に基づいて区分され得る。現在のサブピクチャは次いで、たとえば、SPSとスライスヘッダとの間のサブピクチャIDと、サブピクチャ位置およびサイズに基づいて決定されるスライスの位置との相関を利用することによって、ビデオシーケンスを作成するためにサブピクチャIDに基づいて復号され得る。ステップ1107において、ビデオシーケンスが次いで、表示のために転送され得る。したがって、すべてのサブピクチャIDの完全なリストが、関連するサイズ情報とともにSPSにおいて送信され得る。各スライスヘッダは、対応するスライスを含むサブピクチャを示すサブピクチャIDを含む。このようにして、サブピクチャおよび対応するスライスは、他のサブピクチャを参照せずに抽出され位置決めされ得る。したがって、サブピクチャIDは、機能の向上および/またはコーディング効率の向上を助け、これは、ネットワークリソース、メモリリソース、および/またはエンコーダとデコーダにおける処理リソースの使用を減らす。
図12は、ビットストリーム500および/またはサブビットストリーム501などのビットストリームを介して、サブピクチャ522、523、622、722、および/または822のサブピクチャIDなどの、サブピクチャIDをシグナリングするための例示的なシステム1200の概略図である。システム1200は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディングデバイス900などのエンコーダとデコーダによって実装され得る。さらに、システム1200は、方法100、1000、および/または1100を実施するときに利用され得る。
システム1200はビデオエンコーダ1202を含む。ビデオエンコーダ1202は、ピクチャを複数のサブピクチャへと区分し、複数のサブピクチャの各々を1つまたは複数のスライスへと区分し、複数のサブピクチャの各々を1つまたは複数のスライスへと区分するための区分モジュール1201を備える。ビデオエンコーダ1202はさらに、ピクチャから区分された各サブピクチャのサブピクチャIDを備えるSPSをビットストリームへと符号化し、示されるサブピクチャにスライスが含まれることを示すサブピクチャIDを備えるスライスヘッダをビットストリームへと符号化し、複数のサブピクチャのうちの1つまたは複数をビットストリームへと符号化するための符号化モジュール1203を備える。ビデオエンコーダ1202はさらに、デコーダへの通信のためにビットストリームを記憶するための記憶モジュール1205を備える。ビデオエンコーダ1202はさらに、サブピクチャおよびサブピクチャIDを含むビットストリームをデコーダに送信するための送信モジュール1207を備える。ビデオエンコーダ1202はさらに、方法1000のステップのいずれをも実行するように構成され得る。
システム1200はビデオデコーダ1210も含む。ビデオデコーダ1210は、シーケンスパラメータセット(SPS)、ピクチャから区分された1つまたは複数のサブピクチャ、および1つまたは複数のスライスと関連付けられる1つまたは複数のスライスヘッダを備えるビットストリームを受信するための受信モジュール1211を備える。ビデオデコーダ1210はさらに、SPSを解析して1つまたは複数のサブピクチャの各々のサブピクチャ識別子(ID)を取得し、スライスヘッダを解析して、スライスが1つまたは複数のサブピクチャからの現在のサブピクチャに含まれることを示す現在のサブピクチャIDを取得するための、解析モジュール1213を備える。ビデオデコーダ1210はさらに、ビデオシーケンスを作成するために、サブピクチャIDに基づいて現在のサブピクチャを復号するための復号モジュール1215を備える。ビデオデコーダ1110はさらに、表示のためにビデオシーケンスを転送するための転送モジュール1217を備える。ビデオデコーダ1210はさらに、方法1100のステップのいずれをも実行するように構成され得る。
第1のコンポーネントと第2のコンポーネントとの間の線、配線、または別の媒体を除き、介在するコンポーネントがないとき、第1のコンポーネントは第2のコンポーネントに直接結合される。第1のコンポーネントと第2のコンポーネントとの間に線、配線、または別の媒体以外の介在するコンポーネントがあるとき、第1のコンポーネントは第2のコンポーネントに間接的に結合される。「結合される」という用語およびその変形は、直接結合されることと間接的に結合されることの両方を含む。「約」という用語の使用は、別段述べられない限り、その後にある数字の±10%を含む範囲を意味する。
本明細書に記載される例示的な方法のステップは、必ずしも説明された順序で実行されることは必要とされず、そのような方法のステップの順序は単に例示的であると理解されるべきであることも理解されたい。同様に、追加のステップがそのような方法に含まれてもよく、本開示の様々な実施形態に適合する方法で、いくつかのステップが省略または結合されてもよい。
いくつかの実施形態が本開示において提供されたが、開示されたシステムおよび方法は、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形式で具現化され得ることが理解され得る。本実施例は、限定するためのものではなく説明のためのものであると見なされるべきであり、意図は本明細書で与えられる詳細に限定されないものとする。たとえば、別のシステムでは様々な要素またはコンポーネントが結合もしくは統合されてもよく、またはいくつかの特徴が省略され、もしくは実装されなくてもよい。
加えて、様々な実施形態において個別のもの、または別々のものとして説明され図示される技法、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技法、もしくは方法と合成または統合されてもよい。変化、置換、および変更の他の例が当業者により確認可能であり、本明細書で開示される趣旨および範囲から逸脱することなく行われ得る。