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

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

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

特開2024-163119ビデオエンコーダ、ビデオデコーダ、および対応する方法
<>
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図1
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図2
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図3
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図4
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図5
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図6A
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図6B
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図6C
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図6D
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図6E
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図7
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図8A
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図8B
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図9
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図10
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図11
  • 特開-ビデオエンコーダ、ビデオデコーダ、および対応する方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163119
(43)【公開日】2024-11-21
(54)【発明の名称】ビデオエンコーダ、ビデオデコーダ、および対応する方法
(51)【国際特許分類】
   H04N 19/70 20140101AFI20241114BHJP
【FI】
H04N19/70
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024124932
(22)【出願日】2024-07-31
(62)【分割の表示】P 2023002473の分割
【原出願日】2019-12-27
(31)【優先権主張番号】62/785,511
(32)【優先日】2018-12-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】イェ-クイ・ワン
(72)【発明者】
【氏名】フヌ・ヘンドリー
(72)【発明者】
【氏名】マキシム・シチェフ
(57)【要約】
【課題】ビデオコーディングメカニズムを提供する。
【解決手段】本メカニズムは、ピクチャを複数の第1のレベルのタイルに区分することを含む。第1のレベルのタイルのサブセットが、複数の第2のレベルのタイルに区分される。第1のレベルのタイルおよび第2のレベルのタイルは、ビットストリームの中に符号化される。分割指示が、ビットストリームの中に符号化される。分割指示は、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す。ビットストリームは、デコーダに向かう通信のために記憶される。
【選択図】図8B
【特許請求の範囲】
【請求項1】
デコーダにおいて実施される方法であって、
複数の第1のレベルのタイルに区分されたピクチャを含むビットストリームを受信するステップであって、前記第1のレベルのタイルのサブセットが、複数の第2のレベルのタイルにさらに区分されている、ステップと、
前記ビットストリームから分割指示を取得するステップであって、前記分割指示が、前記第1のレベルのタイルのうちの少なくとも1つが前記第2のレベルのタイルに分割されることを示す、ステップと、
前記分割指示に基づいて前記第2のレベルのタイルの構成を決定するステップと、
前記第2のレベルのタイルの前記構成に基づいて前記第2のレベルのタイルを復号するステップと、
復号された前記第2のレベルのタイルに基づいて表示のために再構成ビデオシーケンスを生成するステップと
を含む方法。
【請求項2】
前記サブセットの外側の前記第1のレベルのタイルが、第1の解像度におけるピクチャデータを含み、前記第2のレベルのタイルが、前記第1の解像度とは異なる第2の解像度におけるピクチャデータを含む、請求項1に記載の方法。
【請求項3】
前記分割指示が、レベル2タイル分割フラグとしてピクチャパラメータセットから取得され、前記レベル2タイル分割フラグが、前記第2のレベルのタイルを作成するために区分される前記第1のレベルのタイルの各々に対して設定される、請求項1に記載の方法。
【請求項4】
前記第2のレベルのタイルの各々が、前記ピクチャからのピクチャデータの単一のスライスを含む、請求項1に記載の方法。
【請求項5】
区分された第1のレベルのタイルに対する第2のレベルのタイル行および第2のレベルのタイル列を前記ビットストリームから取得するステップをさらに含み、前記第2のレベルのタイル行および前記第2のレベルのタイル列が、前記ピクチャに関連するピクチャパラメータセットから取得され、前記第2のレベルのタイルの前記構成が、前記第2のレベルのタイル行および前記第2のレベルのタイル列に基づいて決定される、請求項1に記載の方法。
【請求項6】
最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示すデータが前記ビットストリームから除外される、請求項1に記載の方法。
【請求項7】
第2のレベルのタイルを含む対応するタイルグループの中のタイルが、前記ピクチャの長方形部分をカバーするように制約されるように、前記第2のレベルのタイルが1つまたは複数のタイルグループに割り当てられる、請求項1に記載の方法。
【請求項8】
最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列がピクチャパラメータセットから除外される、請求項1に記載の方法。
【請求項9】
デコーディングデバイスであって、
命令を記憶したメモリと、
前記メモリに接続されたプロセッサと
を備え、前記プロセッサは、前記命令を実行して、前記デコーディングデバイスに、
複数の第1のレベルのタイルに区分されたピクチャを含むビットストリームを受信することであって、前記第1のレベルのタイルのサブセットが、複数の第2のレベルのタイルにさらに区分されている、ことと、
前記ビットストリームから分割指示を取得することであって、前記分割指示が、前記第1のレベルのタイルのうちの少なくとも1つが前記第2のレベルのタイルに分割されることを示す、ことと、
前記分割指示に基づいて前記第2のレベルのタイルの構成を決定することと、
前記第2のレベルのタイルの前記構成に基づいて前記第2のレベルのタイルを復号することと、
復号された前記第2のレベルのタイルに基づいて表示のために再構成ビデオシーケンスを生成することと
を行わせるように構成される、デコーディングデバイス。
【請求項10】
第2のレベルのタイルを含む対応するタイルグループの中のタイルが、前記ピクチャの長方形部分をカバーするように制約されるように、前記第2のレベルのタイルが1つまたは複数のタイルグループに割り当てられる、請求項9に記載のデコーディングデバイス。
【請求項11】
前記サブセットの外側の前記第1のレベルのタイルが、第1の解像度におけるピクチャデータを含み、前記第2のレベルのタイルが、前記第1の解像度とは異なる第2の解像度におけるピクチャデータを含む、請求項9に記載のデコーディングデバイス。
【請求項12】
前記再構成ビデオシーケンスを表示するように構成されたディスプレイをさらに備える、請求項9に記載のデコーディングデバイス。
【請求項13】
非一時的な記憶媒体であって、符号化されたビットストリームを含み、
前記ビットストリームは、複数の第1のレベルのタイルと、複数の第2のレベルのタイルと、前記第1のレベルのタイルおよび前記第2のレベルのタイルを含む1つまたは複数のタイルグループとを含み、対応するタイルグループの中のタイルが、ピクチャの長方形部分をカバーするように制約され、前記複数の第1のレベルのタイルが、前記ピクチャを区分することによって取得され、前記複数の第2のレベルのタイルが、前記第1のレベルのタイルのサブセットの中の各第1のレベルのタイルを区分することによって取得され、
前記ビットストリームは、少なくとも1つの分割指示をさらに含み、前記少なくとも1つの分割指示の各々は、前記第1のレベルのタイルの前記サブセットの中の対応する第1のレベルのタイルが第2のレベルのタイルに区分されること示す、非一時的な記憶媒体。
【請求項14】
前記サブセットの外側の前記第1のレベルのタイルが、第1の解像度におけるピクチャデータを含み、前記第2のレベルのタイルが、前記第1の解像度とは異なる第2の解像度におけるピクチャデータを含む、請求項13に記載の非一時的な記憶媒体。
【請求項15】
前記第2のレベルのタイルの各々が、前記ピクチャからのピクチャデータの単一のスライスを含む、請求項13または14に記載の非一時的な記憶媒体。
【請求項16】
区分された第1のレベルのタイルに対する第2のレベルのタイル行および第2のレベルのタイル列が前記ビットストリームから取得され、前記第2のレベルのタイル行および前記第2のレベルのタイル列が、前記ピクチャに関連するピクチャパラメータセットから取得され、前記第2のレベルのタイルの構成が、前記第2のレベルのタイル行および前記第2のレベルのタイル列に基づいて決定される、請求項13から15のいずれか一項に記載の非一時的な記憶媒体。
【請求項17】
最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示すデータが前記ビットストリームから除外される、請求項13から16のいずれか一項に記載の非一時的な記憶媒体。
【請求項18】
最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列がピクチャパラメータセットから除外される、請求項13から17のいずれか一項に記載の非一時的な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、ビデオコーディングに関し、詳細には、同じピクチャの中で異なる解像度を有する複数のタイルをサポートする、フレキシブルビデオタイリング方式に関する。
【背景技術】
【0002】
比較的短いビデオを描くために必要とされるビデオデータの量でさえ相当であり得、そのことは、帯域幅容量が限定された通信ネットワークを横断してデータがストリーミングされるかまたは別の方法で通信されることになるとき、困難をもたらす場合がある。したがって、ビデオデータは、一般に、現代の電気通信ネットワークを横断して通信される前に圧縮される。メモリリソースが限定されることがあるので、ビデオが記憶デバイス上に記憶されるときにもビデオのサイズが問題であり得る。送信または記憶の前にビデオデータをコーディングし、それによって、デジタルビデオ画像を描写するために必要とされるデータの数量を減らすために、ビデオ圧縮デバイスは、しばしば、ソースにおいてソフトウェアおよび/またはハードウェアを使用する。圧縮データは、次いで、ビデオデータを復号するビデオ復元デバイスによって宛先において受信される。ネットワークリソースが限定され、より高いビデオ品質の需要が絶えず増大すると、画像品質の犠牲をほとんど伴わずに圧縮率を改善する、改善された圧縮および復元技法が望ましい。
【発明の概要】
【課題を解決するための手段】
【0003】
一実施形態では、本開示は、エンコーダにおいて実施される方法を含み、方法は、エンコーダのプロセッサにより、ピクチャを複数の第1のレベルのタイルに区分することと、プロセッサにより、第1のレベルのタイルのサブセットを複数の第2のレベルのタイルに区分することと、プロセッサにより、第1のレベルのタイルおよび第2のレベルのタイルをビットストリームの中に符号化することと、プロセッサにより、分割指示をビットストリームの中に符号化することであって、分割指示が、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す、ことと、デコーダに向かう通信のためにビットストリームをエンコーダのメモリの中に記憶することとを含む。ビデオコーディングシステムは、ピクチャを区分するためにスライスおよびタイルを採用し得る。異なる解像度で符号化された複数の領域を含む単一の画像が送られ得る場合、いくつかのストリーミングアプリケーション(たとえば、仮想現実(VR:virtual reality)および遠隔会議)は改善され得る。いくつかのスライシングおよびタイリングメカニズムは、異なる解像度におけるタイルが異なって扱われることがあるので、そのような機能をサポートしないことがある。たとえば、第1の解像度におけるタイルは、データの単一のスライスを含んでよいが、第2の解像度におけるタイルは、ピクセル密度の差異に起因してデータの複数のスライスを搬送することがある。本態様は、第1のレベルのタイルおよび第2のレベルのタイルを含むフレキシブルタイリング方式の使用をサポートするためのシグナリングを採用する。第2のレベルのタイルは、第1のレベルのタイルを区分することによって作成される。このフレキシブルタイリング方式は、第1のレベルのタイルが、第1の解像度におけるデータの1つのスライスを含むことと、第2のレベルのタイルを含む第1のレベルのタイルが、第2の解像度における複数のスライスを含むこととを可能にする。シグナリングは、いつ第1のレベルのタイルが第2のレベルのタイルにさらに分割されたのかを示す。したがって、開示するフレキシブルタイリング方式は、複数の解像度を含むピクチャをエンコーダ/デコーダ(コーデック)がサポートすることを可能にし、したがって、エンコーダとデコーダの両方の機能を高める。
【0004】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、サブセットの外側の第1のレベルのタイルが、第1の解像度におけるピクチャデータを含み、第2のレベルのタイルが、第1の解像度とは異なる第2の解像度におけるピクチャデータを含むことを提供する。
【0005】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、分割指示が、レベル2タイル分割フラグとしてピクチャパラメータセットの中で符号化され、レベル2タイル分割フラグが、第2のレベルのタイルを作成するために区分される第1のレベルのタイルの各々に対して設定されることを提供する。
【0006】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、各第2のレベルのタイルが、ピクチャからのピクチャデータの単一のスライスを含むことを提供する。
【0007】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、プロセッサにより、区分された第1のレベルのタイルに対する第2のレベルのタイル行および第2のレベルのタイル列を符号化することをさらに含み、第2のレベルのタイル行および第2のレベルのタイル列が、ピクチャに関連するピクチャパラメータセットの中で符号化されることを提供する。
【0008】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示すデータがビットストリームから除外されることを提供する。
【0009】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、第2のレベルのタイルを含む対応するタイルグループの中のタイルが、ピクチャの長方形部分をカバーするように制約されるように、プロセッサにより、第1のレベルのタイルおよび第2のレベルのタイルを1つまたは複数のタイルグループに割り当てることをさらに含むことを提供する。
【0010】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列がピクチャパラメータセットから除外されることを提供する。
【0011】
一実施形態では、本開示は、デコーダにおいて実施される方法を含み、方法は、デコーダのプロセッサにより、複数の第1のレベルのタイルに区分されたピクチャを含むビットストリームを、受信機を介して受信することであって、第1のレベルのタイルのサブセットが、複数の第2のレベルのタイルにさらに区分される、ことと、プロセッサにより、ビットストリームから分割指示を取得することであって、分割指示が、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す、ことと、プロセッサにより、分割指示に基づいて第1のレベルのタイルの構成および第2のレベルのタイルの構成を決定することと、プロセッサにより、第1のレベルのタイルの構成および第2のレベルのタイルの構成に基づいて第1のレベルのタイルおよび第2のレベルのタイルを復号することと、プロセッサにより、復号された第1のレベルのタイルおよび第2のレベルのタイルに基づいて表示のために再構成ビデオシーケンスを生成することとを含む。ビデオコーディングシステムは、ピクチャを区分するためにスライスおよびタイルを採用し得る。異なる解像度で符号化された複数の領域を含む単一の画像が送られ得る場合、いくつかのストリーミングアプリケーション(たとえば、VRおよび遠隔会議)は改善され得る。いくつかのスライシングおよびタイリングメカニズムは、異なる解像度におけるタイルが異なって扱われることがあるので、そのような機能をサポートしないことがある。たとえば、第1の解像度におけるタイルは、データの単一のスライスを含んでよいが、第2の解像度におけるタイルは、ピクセル密度の差異に起因してデータの複数のスライスを搬送することがある。本態様は、第1のレベルのタイルおよび第2のレベルのタイルを含むフレキシブルタイリング方式の使用をサポートするためのシグナリングを採用する。第2のレベルのタイルは、第1のレベルのタイルを区分することによって作成される。このフレキシブルタイリング方式は、第1のレベルのタイルが、第1の解像度におけるデータの1つのスライスを含むことと、第2のレベルのタイルを含む第1のレベルのタイルが、第2の解像度における複数のスライスを含むこととを可能にする。シグナリングは、いつ第1のレベルのタイルが第2のレベルのタイルにさらに分割されたのかを示す。したがって、開示するフレキシブルタイリング方式は、複数の解像度を含むピクチャをコーデックがサポートすることを可能にし、したがって、エンコーダとデコーダの両方の機能を高める。
【0012】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、サブセットの外側の第1のレベルのタイルが、第1の解像度におけるピクチャデータを含み、第2のレベルのタイルが、第1の解像度とは異なる第2の解像度におけるピクチャデータを含むことを提供する。
【0013】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、分割指示が、レベル2タイル分割フラグとしてピクチャパラメータセットから取得され、レベル2タイル分割フラグが、第2のレベルのタイルを作成するために区分される第1のレベルのタイルの各々に対して設定されることを提供する。
【0014】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、各第2のレベルのタイルが、ピクチャからのピクチャデータの単一のスライスを含むことを提供する。
【0015】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、プロセッサにより、区分された第1のレベルのタイルに対して、ビットストリームから第2のレベルのタイル行および第2のレベルのタイル列を取得することをさらに含み、第2のレベルのタイル行および第2のレベルのタイル列が、ピクチャに関連するピクチャパラメータセットから取得され、第1のレベルのタイルの構成および第2のレベルのタイルの構成が、第2のレベルのタイル行および第2のレベルのタイル列に基づいて決定されることを提供する。
【0016】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示すデータがビットストリームから除外されることを提供する。
【0017】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、第2のレベルのタイルを含む対応するタイルグループの中のタイルが、ピクチャの長方形部分をカバーするように制約されるように、第1のレベルのタイルおよび第2のレベルのタイルが1つまたは複数のタイルグループに割り当てられることを提供する。
【0018】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列がピクチャパラメータセットから除外されることを提供する。
【0019】
一実施形態では、本開示は、プロセッサと、プロセッサに接続された受信機と、プロセッサに接続された送信機とを備える、ビデオコーディングデバイスを含み、プロセッサ、受信機、および送信機は、前述の態様のうちのいずれかの方法を実行するように構成される。
【0020】
一実施形態では、本開示は、ビデオコーディングデバイスによる使用のためのコンピュータプログラムを記憶した非一時的コンピュータ可読媒体を含み、コンピュータプログラムは、プロセッサによって実行されたとき、前述の態様のうちのいずれかの方法をビデオコーディングデバイスに実行させるコンピュータ実行可能命令を含む。
【0021】
一実施形態では、本開示は、ピクチャを複数の第1のレベルのタイルに区分し、第1のレベルのタイルのサブセットを複数の第2のレベルのタイルに区分するための区分手段と、第1のレベルのタイルおよび第2のレベルのタイルをビットストリームの中に符号化し、分割指示をビットストリームの中に符号化するための符号化手段であって、分割指示が、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す、符号化手段と、デコーダに向かう通信のためにビットストリームを記憶するための記憶手段とを備える、エンコーダを含む。
【0022】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、エンコーダが、前述の態様のうちのいずれかの方法を実行するようにさらに構成されることを提供する。
【0023】
一実施形態では、本開示は、複数の第1のレベルのタイルに区分されたピクチャを含むビットストリームを受信するための受信手段であって、第1のレベルのタイルのサブセットが、複数の第2のレベルのタイルにさらに区分される、受信手段と、ビットストリームから分割指示を取得するための取得手段であって、分割指示が、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す、取得手段と、分割指示に基づいて第1のレベルのタイルの構成および第2のレベルのタイルの構成を決定するための決定手段と、第1のレベルのタイルの構成および第2のレベルのタイルの構成に基づいて第1のレベルのタイルおよび第2のレベルのタイルを復号するための復号手段と、復号された第1のレベルのタイルおよび第2のレベルのタイルに基づいて表示のために再構成ビデオシーケンスを生成するための生成手段とを備える、デコーダを含む。
【0024】
選択的に、前述の態様のいずれかにおいて、態様の別の実装形態は、デコーダが、前述の態様のうちのいずれかの方法を実行するようにさらに構成されることを提供する。
【0025】
明確化のために、上記の実施形態のうちのいずれか1つは、本開示の範囲内の新たな実施形態を作成するために、上記の他の実施形態のうちのいずれか1つまたは複数と組み合わせられてよい。
【0026】
これらおよび他の特徴は、添付図面および特許請求の範囲とともに取り込まれる以下の発明を実施するための形態から、より明瞭に理解されよう。
【0027】
本開示のより完全な理解のために、ここで、添付図面および発明を実施するための形態に関して取り込まれる以下の簡単な説明への参照が行われ、同様の参照番号は同様の部分を表す。
【図面の簡単な説明】
【0028】
図1】ビデオ信号をコーディングする例示的な方法のフローチャートである。
図2】ビデオコーディングのための例示的なコーディングおよび復号(コーデック)システムの概略図である。
図3】例示的なビデオエンコーダを示す概略図である。
図4】例示的なビデオデコーダを示す概略図である。
図5】符号化ビデオシーケンスを含む例示的なビットストリームを示す概略図である。
図6A】異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラックを作成するための例示的なメカニズムを示す図である。
図6B】異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラックを作成するための例示的なメカニズムを示す図である。
図6C】異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラックを作成するための例示的なメカニズムを示す図である。
図6D】異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラックを作成するための例示的なメカニズムを示す図である。
図6E】異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラックを作成するための例示的なメカニズムを示す図である。
図7】異なるビットストリームからの複数の解像度のピクチャをつなぎ合わせて表示用の単一のピクチャにする、例示的なビデオ会議アプリケーションを示す図である。
図8A】同じピクチャの中で異なる解像度を有する複数のタイルをサポートすることが可能な、例示的なフレキシブルビデオタイリング方式を示す概略図である。
図8B】同じピクチャの中で異なる解像度を有する複数のタイルをサポートすることが可能な、例示的なフレキシブルビデオタイリング方式を示す概略図である。
図9】例示的なビデオコーディングデバイスの概略図である。
図10】フレキシブルタイリング方式の構成をシグナリングする、例示的な方法のフローチャートである。
図11】フレキシブルタイリング方式のシグナリングされた構成に基づいて画像を復号する、例示的な方法のフローチャートである。
図12】フレキシブルタイリング方式を採用することによってビデオシーケンスをコーディングするための、例示的なシステムの概略図である。
【発明を実施するための形態】
【0029】
最初に、1つまたは複数の実施形態の例示的な実装形態が以下に提供されるが、開示するシステムおよび/または方法が、現在知られているかまたは存在しているかどうかにかかわらず、任意の数の技法を使用して実施され得ることを理解されたい。本開示は、本明細書で図示および説明される例示的な設計および実装形態を含む、以下に示す例示的な実装形態、図面、および技法に、決して限定されるべきでなく、均等物のそれらの完全な範囲と一緒に添付の特許請求の範囲内で修正されてよい。
【0030】
本明細書では、コーディングツリーブロック(CTB:coding tree block)、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)、コーディングされたビデオシーケンス(CVS:coded video sequence)、ジョイントビデオエキスパートチーム(JVET:Joint Video Experts Team)、動き制約タイルセット(MCTS:motion constrained tile set)、最大転送単位(MTU:maximum transfer unit)、ネットワーク抽象化レイヤ(NAL:network abstraction layer)、ピクチャ順序カウント(POC:picture order count)、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)、シーケンスパラメータセット(SPS:sequence parameter set)、多用途ビデオコーディング(VVC:versatile video coding)、およびワーキングドラフト(WD:working draft)などの、様々な頭字語が採用される。
【0031】
データの最低限の損失しか伴わずにビデオファイルのサイズを低減するために、多くのビデオ圧縮技法が採用され得る。たとえば、ビデオ圧縮技法は、ビデオシーケンスにおけるデータ冗長性を低減または除去するために空間(たとえば、イントラピクチャ)予測および/または時間(たとえば、インターピクチャ)予測を実行することを含むことができる。ブロックベースのビデオコーディングのために、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部分)は、ビデオブロックに区分されてよく、ビデオブロックは、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノードと呼ばれることもある。ピクチャのイントラコーディングされた(I)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルを基準にした空間予測を使用してコーディングされる。ピクチャのインターコーディングされた単方向予測(P)または双方向予測(B)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルを基準にした空間予測、または他の参照ピクチャの中の参照サンプルを基準にした時間予測を採用することによって、コーディングされ得る。ピクチャは、フレームおよび/または画像と呼ばれることがあり、参照ピクチャは、参照フレームおよび/または参照画像と呼ばれることがある。空間予測または時間予測は、画像ブロックを表す予測ブロックをもたらす。残差データは、元の画像ブロックと予測ブロックとの間のピクセル差分を表す。したがって、インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され得る。これらは残差変換係数をもたらし、残差変換係数は量子化され得る。量子化変換係数は、最初に2次元アレイをなして配置され得る。量子化変換係数は、変換係数の1次元ベクトルを作り出すために走査され得る。なお一層の圧縮を達成するために、エントロピーコーディングが適用され得る。そのようなビデオ圧縮技法が以下でさらに詳細に説明される。
【0032】
符号化されたビデオが正確に復号され得ることを確実にするために、ビデオは、対応するビデオコーディング規格に従って符号化および復号される。ビデオコーディング規格は、国際電気通信連合(ITU)標準化セクタ(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)モーションピクチャエキスパートグループ(MPEG)-1パート2、ITU-T H.262またはISO/IEC MPEG-2パート2、ITU-T H.263、ISO/IEC MPEG-4パート2、ITU-T H.264またはISO/IEC MPEG-4パート10とも呼ばれるアドバンストビデオコーディング(AVC:Advanced Video Coding)、およびITU-T H.265またはMPEG-Hパート2とも呼ばれる高効率ビデオコーディング(HEVC:High Efficiency Video Coding)を含む。AVCは、スケーラブルビデオコーディング(SVC:Scalable Video Coding)、マルチビュービデオコーディング(MVC:Multiview Video Coding)およびマルチビュー・ビデオ・コーディング・プラス・デプス(MVC+D)、ならびに3次元(3D)AVC(3D-AVC)などの、拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、および3D HEVC(3D-HEVC)などの、拡張を含む。ITU-TとISO/IECとのジョイントビデオエキスパートチーム(JVET)は、多用途ビデオコーディング(VVC)と呼ばれるビデオコーディング規格を策定し始めている。VVCは、JVET-L1001-v5を含むワーキングドラフト(WD)の中に含まれる。
【0033】
ビデオ画像をコーディングするために、画像が最初に区分され、区分はビットストリームの中にコーディングされる。様々なピクチャ区分方式が利用可能である。たとえば、画像は、通常スライス、従属スライス、タイルに、かつ/またはウェーブフロント並列処理(WPP:Wavefront Parallel Processing)に従って、区分され得る。簡単のために、HEVCは、ビデオコーディングのためにCTBのグループにスライスを区分するとき、通常スライス、従属スライス、タイル、WPP、およびそれらの組合せしか使用され得ないようにエンコーダを制限する。そのような区分は、最大転送単位(MTU)サイズ整合、並列処理、および短縮されたエンドツーエンド遅延をサポートするために適用され得る。MTUは、単一パケットの中で送信され得るデータの最大量を示す。パケットペイロードがMTUを超過する場合、そのペイロードは、フラグメンテーションと呼ばれるプロセスを通じて2つのパケットに分割される。
【0034】
単にスライスとも呼ばれる通常スライスは、ループフィルタ処理動作に起因するいくつかの相互依存性にもかかわらず、同じピクチャ内の他の通常スライスから独立して再構成され得る、画像の区分された部分である。各通常スライスは、送信のためにそれ自体のネットワーク抽象化レイヤ(NAL)ユニットの中にカプセル化される。さらに、ピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)、およびスライス境界を横切るエントロピーコーディング依存関係は、独立した再構成をサポートするために無効にされ得る。そのような独立した再構成は並列化をサポートする。たとえば、通常スライスベースの並列化は、最低限のプロセッサ間通信またはコア間通信を採用する。しかしながら、各通常スライスは独立しており、各スライスは別個のスライスヘッダに関連する。通常スライスの使用は、スライスごとのスライスヘッダのビットコストに起因して、またスライス境界を横切る予測の欠如に起因して、大幅なコーディングオーバーヘッドを招くことがある。さらに、通常スライスは、MTUサイズ要件に対する整合をサポートするために採用され得る。詳細には、通常スライスが別個のNALユニットの中にカプセル化され独立してコーディングされ得るので、各通常スライスは、スライスを破壊して複数のパケットにすることを回避するために、MTU方式におけるMTUよりも小さくすべきである。したがって、並列化の目標およびMTUサイズ整合の目標は、矛盾した需要をピクチャの中のスライスレイアウトに負わせることがある。
【0035】
従属スライスは通常スライスと類似であるが、短縮されたスライスヘッダを有し、ピクチャ内予測を破壊することなく画像ツリーブロック境界の区分を可能にする。したがって、従属スライスは、通常スライスが複数のNALユニットに断片化されることを可能にし、そのことは、通常スライス全体の符号化が完了する前に通常スライスの一部が外へ送られることを可能にすることによって、短縮されたエンドツーエンド遅延をもたらす。
【0036】
タイルとは、タイルの列および行を作成する水平境界および垂直境界によって作成される、画像の区分された部分である。タイルは、ラスタ走査順序で(右から左へ、かつ上から下へ)コーディングされ得る。CTBの走査順序はタイル内で局所的である。したがって、最初のタイルの中のCTBは、次のタイルの中のCTBに進む前にラスタ走査順序でコーディングされる。通常スライスと同様に、タイルは、ピクチャ内予測依存関係ならびにエントロピー復号依存関係を破壊する。しかしながら、タイルは個々のNALユニットの中に含められなくてよく、したがって、タイルはMTUサイズ整合のために使用されなくてよい。各タイルは、1つのプロセッサ/コアによって処理され得、隣接タイルを復号する処理ユニット間での、ピクチャ内予測のために採用されるプロセッサ間/コア間通信は、(隣接するタイルが同じスライスの中にあるときに)共有されるスライスヘッダを伝達すること、ならびに再構成されるサンプルおよびメタデータのループフィルタ処理関連の共有を実行することに、限定され得る。スライスの中に2つ以上のタイルが含まれるとき、スライスの中の最初のエントリポイントオフセット以外の、タイルごとのエントリポイントバイトオフセットが、スライスヘッダの中でシグナリングされ得る。スライスおよびタイルごとに、次の条件、すなわち、1)スライスの中のすべてのコーディングされたツリーブロックが同じタイルに属すること、および2)タイルの中のすべてのコーディングされたツリーブロックが同じスライスに属すること、のうちの少なくとも1つが果たされるべきである。
【0037】
WPPでは、画像はCTBの単一の行に区分される。エントロピー復号および予測メカニズムは、他の行の中のCTBからのデータを使用し得る。CTB行の並列復号を通じて並列処理が可能にされる。たとえば、現在の行が、先行する行と並行して復号され得る。しかしながら、現在の行の復号は、先行する行の復号プロセスから2個のCTBだけ遅延する。この遅延は、現在の行の中の現在のCTBの上のCTBおよび上かつ右のCTBに関係するデータが、現在のCTBがコーディングされる前に利用可能であることを確実にする。この手法は、図式で表されるとウェーブフロントのように見える。この千鳥状の冒頭は、最高で画像がCTB行を含むのと同じくらい多くのプロセッサ/コアを伴う並列化を可能にする。ピクチャ内の隣接ツリーブロック行の間のピクチャ内予測が許容されるので、ピクチャ内予測を可能にするためのプロセッサ間/コア間通信は相当となり得る。WPP区分はNALユニットサイズを考慮に入れる。したがって、WPPはMTUサイズ整合をサポートしない。しかしながら、必要に応じてMTUサイズ整合を実施するために、通常スライスは、いくらかのコーディングオーバーヘッドを伴って、WPPとともに使用され得る。
【0038】
タイルはまた、動き制約タイルセットを含んでよい。動き制約タイルセット(MCTS)とは、関連する動きベクトルが、MCTSの内側の完全サンプルロケーションと、補間のためにMCTSの内側の完全サンプルロケーションのみを必要とする分数サンプルロケーションとを指し示すように制限されるように設計された、タイルセットである。さらに、MCTSの外側のブロックから導出される、時間的な動きベクトル予測用の動きベクトル候補の使用が却下される。このようにして、各MCTSは、MCTSの中に含まれないタイルの存在を伴わずに独立して復号され得る。ビットストリームの中のMCTSの存在を示すとともにMCTSをシグナリングするために、時間的なMCTS補足エンハンスメント情報(SEI:supplemental enhancement information)メッセージが使用され得る。MCTS SEIメッセージは、MCTSのための適合するビットストリームを生成するために、(SEIメッセージのセマンティックの一部として指定される)MCTSサブビットストリーム抽出において使用され得る追加の情報を提供する。その情報は、各々がいくつかのMCTSを規定し、かつ置換ビデオパラメータセット(VPS:video parameter set)のローバイトシーケンスペイロード(RBSP)バイト、シーケンスパラメータセット(SPS)、およびMCTSサブビットストリーム抽出プロセス中に使用されるべきピクチャパラメータセット(PPS:picture parameter set)を含む、いくつかの抽出情報セットを含む。MCTSサブビットストリーム抽出プロセスに従ってサブビットストリームを抽出すると、スライスアドレス関連のシンタックス要素(first_slice_segment_in_pic_flagおよびslice_segment_addressを含む)のうちの1つまたは全部が、抽出されたサブビットストリームの中で異なる値を採用することがあるので、パラメータセット(VPS、SPS、およびPPS)が書き換えられてよく、または置き換えられてよく、スライスヘッダが更新されてよい。
【0039】
さらなる符号化のためにピクチャを区分するとき、様々なタイリング方式が採用され得る。特定の例として、タイルは、いくつかの例ではスライスに取って代わることができるタイルグループに割り当てられ得る。いくつかの例では、各タイルグループは、他のタイルグループとは独立して抽出され得る。したがって、タイルグループ化は、各タイルグループが異なるプロセッサに割り当てられることを可能にすることによって並列化をサポートし得る。デコーダが画像全体を復号することを望まないことがある場合にも、タイルグループ化が採用され得る。特定の例として、全方向性メディアアプリケーションフォーマット(OMAF:Omnidirectional Media Application Format)に従って符号化され得る仮想現実(VR)ビデオをサポートするために、ビデオコーディング方式が採用され得る。
【0040】
VRビデオでは、1つまたは複数のカメラが、カメラの周囲の環境を記録し得る。ユーザは、次いで、カメラと同じロケーションの中にユーザが存在するかのようにVRビデオを見ることができる。VRビデオでは、ピクチャはユーザの周囲の環境全体を取り囲む。ユーザは、次いで、ピクチャのサブ部分を見る。たとえば、ユーザは、表示されるピクチャのサブ部分をユーザの頭部移動に基づいて変化させるヘッドマウントディスプレイを採用し得る。表示中のビデオの部分は、ビューポートと呼ばれることがある。
【0041】
したがって、全方向性ビデオの異なる特徴とは、任意の特定の時間においてビューポートだけが表示されることである。このことは、ビデオ全体を表示し得る他のビデオアプリケーションとは対照的である。この特徴は、たとえば、ユーザのビューポート(または、推奨されるビューポート時限メタデータなどの任意の他の基準)に応じた選択的な配信を通じて、全方向性ビデオシステムの性能を改善するために利用され得る。ビューポート依存配信は、たとえば、領域ごとのパッキングおよび/またはビューポート依存ビデオコーディングを採用することによって可能にされ得る。性能改善は、同じビデオ解像度/品質を採用するときに他の全方向性ビデオシステムと比較すると、より小さい送信帯域幅、より低い復号複雑度、またはその両方をもたらし得る。
【0042】
例示的なビューポート依存動作は、HEVCベースのビューポート依存OMAFビデオプロファイルを用いて5000サンプル(たとえば、5120×2560ルーマサンプル)解像度(5K)の有効な正距円筒図法投影(ERP:equirectangle projection)解像度を達成するための、MCTSベースの手法である。この手法が以下でより詳細に説明される。ただし、一般に、この手法はVRビデオをタイルグループに区分し、複数の解像度でビデオを符号化する。デコーダは、ストリーミング中にユーザによって現在使用されるビューポートを示すことができる。VRビデオデータを提供するビデオサーバは、次いで、ビューポートに関連するタイルグループを高解像度で転送することができ、見られていないタイルグループをもっと低い解像度で転送することができる。このことは、ピクチャ全体が高解像度で送られるのを必要とすることなく、ユーザが高解像度でVRビデオを見ることを可能にする。見られていないサブ部分は廃棄され、したがって、ユーザは、より低い解像度を意識しなくてよい。しかしながら、ユーザがビューポートを変化させる場合、解像度のより低いタイルグループがユーザに表示され得る。新たなビューポートの解像度は、次いで、ビデオが進むにつれて高められてよい。そのようなシステムを実施するために、解像度がより高いタイルグループと解像度がより低いタイルグループの両方を含むピクチャが作成されるべきである。
【0043】
別の例では、複数の解像度を含むピクチャを転送するようにビデオ会議アプリケーションが設計され得る。たとえば、ビデオ会議は複数の参加者を含んでよい。現在話している参加者は高い方の解像度で表示されてよく、他の参加者は低い方の解像度で表示されてよい。そのようなシステムを実施するために、解像度がより高いタイルグループと解像度がより低いタイルグループの両方を含むピクチャが作成されるべきである。
【0044】
複数の解像度でコーディングされたサブピクチャを有するピクチャを作成することをサポートするための、様々なフレキシブルタイリングメカニズムが本明細書で開示される。たとえば、ビデオは複数の解像度でコーディングされ得る。ビデオはまた、各解像度におけるスライスを採用することによってコーディングされ得る。解像度がより低いスライスは、解像度がより高いスライスよりも小さい。複数の解像度を有するピクチャを作成するために、ピクチャは第1のレベルのタイルに区分され得る。最も高い解像度からのスライスは、第1のレベルのタイルの中に直接含められ得る。さらに、第1のレベルのタイルは、第1のレベルのタイルよりも小さい第2のレベルのタイルに区分され得る。したがって、より小さい第2のレベルのタイルは、解像度がより低いスライスを直接受け入れることができる。このようにして、首尾一貫したアドレス指定方式を使用するために、解像度が異なるタイルが動的にアドレス再指定されることを必要とすることなく、各解像度からのスライスがタイルインデックス関係を介して単一のピクチャに圧縮され得る。第1のレベルのタイルおよび第2のレベルのタイルはMCTSとして実施されてよく、したがって、異なる解像度における動き制約された画像データを受け入れてよい。本開示は多くの態様を含む。特定の例として、第1のレベルのタイルが第2のレベルのタイルに分割される。第2のレベルのタイルは、次いで、各々がピクチャデータの(たとえば、より低い解像度において)単一の長方形スライスを含むように制約される。本明細書で使用するタイルとは、(たとえば、列および行による)水平境界および垂直境界によって作成される、ピクチャの区分された部分である。長方形スライスは、長方形形状を維持するように制約されるスライスであり、したがって、水平および垂直のピクチャ境界に基づいてコーディングされる。したがって、長方形スライスは、(左から右までのラインおよび上から下までのラインの中にCTUを含み、長方形形状を維持しないことがある)ラスタ走査グループに基づいてコーディングされない。スライスとは、同じフレーム/ピクチャの中の任意の他の領域から別個に符号化される、ピクチャ/フレームの空間的に別個の領域である。別の特定の例として、第1のレベルのタイルおよび第2のレベルのタイルの構成が、たとえば、パラメータセットの中でシグナリングされ得る。たとえば、フラグなどの分割指示が、第1のレベルのタイルごとに設定され得る。分割指示は、対応する第1のレベルのタイルが第2のレベルのタイルに分割されないことを示すために第1の値に設定され得るか、または対応する第1のレベルのタイルが第2のレベルのタイルに分割されることを示すために第2の値に設定され得る。
【0045】
図1は、ビデオ信号をコーディングする例示的な動作方法100のフローチャートである。詳細には、エンコーダにおいてビデオ信号が符号化される。符号化プロセスは、ビデオファイルサイズを低減するために、様々なメカニズムを採用することによってビデオ信号を圧縮する。より小さいファイルサイズは、関連する帯域幅オーバーヘッドを低減しながら、圧縮されたビデオファイルがユーザに向かって送信されることを可能にする。デコーダが、次いで、圧縮されたビデオファイルを復号して、エンドユーザへの表示のために元のビデオ信号を再構成する。復号プロセスは、概して、デコーダがビデオ信号を矛盾なく再構成することを可能にするように、符号化プロセスを反映する。
【0046】
ステップ101において、ビデオ信号がエンコーダの中に入力される。たとえば、ビデオ信号は、メモリの中に記憶された圧縮されていないビデオファイルであってよい。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされてよく、ビデオのライブストリーミングをサポートするように符号化されてよい。ビデオファイルは、オーディオ成分とビデオ成分の両方を含んでよい。ビデオ成分は、シーケンスで見られると動きの視覚的な印象を与える、一連の画像フレームを含む。フレームは、本明細書でルーマ成分(またはルーマサンプル)と呼ぶ光、およびクロマ成分(またはカラーサンプル)と呼ばれる色に換算して表現される、ピクセルを含む。いくつかの例では、フレームはまた、3次元視聴をサポートするための深度値を含んでよい。
【0047】
ステップ103において、ビデオはブロックに区分される。区分することは、各フレームの中のピクセルを圧縮用の正方形および/または長方形のブロックに再分割することを含む。たとえば、(H.265およびMPEG-Hパート2とも呼ばれる)高効率ビデオコーディング(HEVC)では、フレームは、最初にコーディングツリーユニット(CTU)に分割され得、コーディングツリーユニットは、既定のサイズ(たとえば、64ピクセル×64ピクセル)のブロックである。CTUは、ルーマサンプルとクロマサンプルの両方を含む。CTUをブロックに分割し、次いで、さらなる符号化をサポートする構成が達成されるまでブロックを再帰的に再分割するために、コーディングツリーが採用され得る。たとえば、フレームのルーマ成分は、個々のブロックが比較的均質な光値を含むまで再分割されてよい。さらに、フレームのクロマ成分は、個々のブロックが比較的均質な色値を含むまで再分割されてよい。したがって、区分メカニズムはビデオフレームのコンテンツに応じて様々である。
【0048】
ステップ105において、ステップ103において区分された画像ブロックを圧縮するために、様々な圧縮メカニズムが採用される。たとえば、インター予測および/またはイントラ予測が採用されてよい。インター予測は、共通のシーンの中のオブジェクトが継続的なフレームの中に出現する傾向があるという事実を利用するように設計されている。したがって、参照フレームの中のオブジェクトを示すブロックは、隣接するフレームの中で繰り返し記述される必要がない。詳細には、テーブルなどのオブジェクトは、複数のフレームにわたって一定の位置にとどまることがある。したがって、テーブルは1回記述され、隣接するフレームは、参照フレームを逆戻りに参照することができる。複数のフレームにわたってオブジェクトを整合させるために、パターンマッチングメカニズムが採用され得る。さらに、たとえば、オブジェクト移動またはカメラ移動に起因して、移動するオブジェクトは、複数のフレームを横切って描写されることがある。特定の例として、ビデオは、複数のフレームにわたってスクリーンを横切って移動する自動車を見せることがある。そのような移動を表すために動きベクトルが採用され得る。動きベクトルとは、フレームの中のオブジェクトの座標から参照フレームの中のオブジェクトの座標までのオフセットを提供する2次元ベクトルである。したがって、インター予測は、参照フレームの中の対応するブロックからのオフセットを示す動きベクトルのセットとして、現在のフレームの中の画像ブロックを符号化することができる。
【0049】
イントラ予測は、共通のフレームの中のブロックを符号化する。イントラ予測は、ルーマ成分およびクロマ成分がフレームの中でクラスタ化する傾向があるという事実を利用する。たとえば、木の一部分の中の緑の断片は、緑の類似の断片に隣接して配置される傾向がある。イントラ予測は、複数の方向性予測モード(たとえば、HEVCでは33個)、平面モード、および直流(DC)モードを採用する。方向性モードは、対応する方向において現在ブロックが隣接ブロックのサンプルと類似/同じであることを示す。平面モードは、行/列に沿った一連のブロック(たとえば、平面)が、行の縁部において隣接ブロックに基づいて補間され得ることを示す。平面モードは、実際には、値を変化させる際に比較的一定の勾配を採用することによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界平滑化のために採用され、ブロックが方向性予測モードの角度方向に関連するすべての隣接ブロックのサンプルに関連する平均値と類似/同じであることを示す。したがって、イントラ予測ブロックは、実際の値ではなく関係を示す様々な予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値ではなく動きベクトル値として画像ブロックを表すことができる。いずれの場合も、予測ブロックは、いくつかの事例では画像ブロックを厳密に表さなくてよい。任意の差分が残差ブロックの中に記憶される。ファイルをさらに圧縮するために、残差ブロックに変換が適用され得る。
【0050】
ステップ107において、様々なフィルタ処理技法が適用され得る。HEVCでは、フィルタは、ループ内フィルタ処理方式に従って適用される。上記で説明したブロックベースの予測は、デコーダにおいてブロック状の画像の生成をもたらすことがある。さらに、ブロックベースの予測方式はブロックを符号化し得、次いで、参照ブロックとして後で使用できるように符号化ブロックを再構成し得る。ループ内フィルタ処理方式は、ブロック/フレームに、雑音抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびサンプル適応型オフセット(SAO:sample adaptive offset)フィルタを反復的に適用する。これらのフィルタは、符号化されたファイルが正確に再構成され得るように、そのようなブロッキングアーティファクトを緩和する。さらに、これらのフィルタは、再構成された参照ブロックの中のアーティファクトを緩和し、その結果、アーティファクトは、再構成された参照ブロックに基づいて符号化される後続のブロックの中で追加のアーティファクトを生成する可能性が低い。
【0051】
ビデオ信号が区分、圧縮、およびフィルタ処理されると、得られたデータは、ステップ109においてビットストリームの中で符号化される。ビットストリームは、上記で説明したデータ、ならびにデコーダにおいて適切なビデオ信号再構成をサポートするために望まれる任意のシグナリングデータを含む。たとえば、そのようなデータは、区分データ、予測データ、残差ブロック、およびコーディング命令をデコーダに提供する様々なフラグを含んでよい。ビットストリームは、要求時にデコーダに向かう送信のために、メモリの中に記憶され得る。ビットストリームはまた、複数のデコーダに向かってブロードキャストおよび/またはマルチキャストされてよい。ビットストリームの作成は、反復的なプロセスである。したがって、ステップ101、103、105、107、および109は、多くのフレームおよびブロックにわたって継続的かつ/または同時に行われてよい。図1に示す順序は、説明の明快および容易さのために提示され、ビデオコーディングプロセスを特定の順序に限定するものではない。
【0052】
ステップ111において、デコーダは、ビットストリームを受信し復号プロセスを開始する。詳細には、デコーダは、ビットストリームを対応するシンタックスおよびビデオデータに変換するために、エントロピー復号方式を採用する。ステップ111において、デコーダは、フレームに対する区分を決定するために、ビットストリームからのシンタックスデータを採用する。区分は、ステップ103におけるブロック区分の結果に整合すべきである。ステップ111において採用されるようなエントロピー符号化/復号が次に説明される。エンコーダは、入力画像の中での値の空間測位に基づいて、いくつかの可能な選択肢からブロック区分方式を選択することなどの、多くの選択を圧縮プロセス中に行う。正確な選択肢をシグナリングすることは、多数のビンを採用することがある。本明細書で使用するビンとは、変数として扱われるバイナリ値(たとえば、コンテキストに応じて変わることがあるビット値)である。エントロピーコーディングは、特定の事例に対して明らかに実行可能でない任意のオプションをエンコーダが廃棄して、許容できるオプションのセットを残すことを可能にする。許容できる各オプションは、次いで、コードワードが割り当てられる。コードワードの長さは、許容できるオプションの数に基づく(たとえば、2個のオプションに対して1つのビン、3~4個のオプションに対して2つのビンなど)。エンコーダは、次いで、選択されたオプションに対してコードワードを符号化する。コードワードは、すべての可能なオプションの潜在的に大きいセットからの選択肢を固有に示すのとは対照的に、許容できるオプションの小さいサブセットからの選択肢を固有に示すために望まれるのと同じくらいの大きさであるので、この方式はコードワードのサイズを低減する。デコーダは、次いで、エンコーダと同様の方法で、許容できるオプションのセットを決定することによって選択肢を復号する。許容できるオプションのセットを決定することによって、デコーダは、コードワードを読み取ることができ、エンコーダによって行われた選択を決定することができる。
【0053】
ステップ113において、デコーダはブロック復号を実行する。詳細には、デコーダは、残差ブロックを生成するために逆変換を採用する。次いで、デコーダは、区分に従って画像ブロックを再構成するために、残差ブロックおよび対応する予測ブロックを採用する。予測ブロックは、ステップ105においてエンコーダにおいて生成されるような、イントラ予測ブロックとインター予測ブロックの両方を含んでよい。再構成された画像ブロックは、次いで、ステップ111において決定された区分データに従って、再構成されたビデオ信号のフレームの中に配置される。ステップ113のためのシンタックスも、上記で説明したようにエントロピーコーディングを介してビットストリームの中でシグナリングされてよい。
【0054】
ステップ115において、エンコーダにおけるステップ107と同様の方法で、再構成されたビデオ信号のフレームに対してフィルタ処理が実行される。たとえば、ブロッキングアーティファクトを除去するために、雑音抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタが、フレームに適用されてよい。フレームがフィルタ処理されると、ビデオ信号は、エンドユーザによる視聴のために、ステップ117においてディスプレイに出力され得る。
【0055】
図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:context adaptive binary arithmetic coding)構成要素231を含む。そのような構成要素は図示のように接続される。図2において、黒い線は符号化/復号されるべきデータの移動を示し、破線は他の構成要素の動作を制御する制御データの移動を示す。コーデックシステム200の構成要素はすべて、エンコーダの中に存在してよい。デコーダは、コーデックシステム200の構成要素のサブセットを含んでよい。たとえば、デコーダは、イントラピクチャ予測構成要素217、動き補償構成要素219、スケーリングおよび逆変換構成要素229、ループ内フィルタ構成要素225、ならびに復号ピクチャバッファ構成要素223を含んでよい。次にこれらの構成要素が説明される。
【0056】
区分されたビデオ信号201は、コーディングツリーによってピクセルのブロックに区分されている、キャプチャされたビデオシーケンスである。コーディングツリーは、ピクセルのブロックをピクセルのもっと小さいブロックに再分割するために、様々な分割モードを採用する。これらのブロックは、次いで、もっと小さいブロックにさらに再分割され得る。そのブロックは、コーディングツリー上のノードと呼ばれることがある。より大きい親ノードが、より小さい子ノードに分割される。ノードが再分割される回数は、ノード/コーディングツリーの深度と呼ばれる。分割されたブロックは、場合によってはコーディングユニット(CU)の中に含まれ得る。たとえば、CUは、CU用の対応するシンタックス命令と一緒にルーマブロック、赤色差分クロマ(Cr)ブロック、および青色差分クロマ(Cb)ブロックを含む、CTUのサブ部分であり得る。分割モードは、採用される分割モードに応じて変化する形状の、それぞれ、2つ、3つ、または4つの子ノードにノードを区分するために採用される、2分木(BT:binary tree)、3分木(TT:triple tree)、および4分木(QT:quad tree)を含んでよい。区分されたビデオ信号201は、圧縮のために、汎用コーダ制御構成要素211、変換スケーリングおよび量子化構成要素213、イントラピクチャ推定構成要素215、フィルタ制御分析構成要素227、ならびに動き推定構成要素221に転送される。
【0057】
汎用コーダ制御構成要素211は、アプリケーション制約に従ってビットストリームへのビデオシーケンスの画像のコーディングに関係する決定を行うように構成される。たとえば、汎用コーダ制御構成要素211は、ビットレート/ビットストリームサイズ対再構成品質の最適化を管理する。そのような決定は、記憶空間/帯域幅利用可能性および画像解像度要求に基づいて行われてよい。汎用コーダ制御構成要素211はまた、バッファアンダーランおよびオーバーラン問題を緩和するために、送信速度に照らしてバッファ利用を管理する。これらの問題を管理するために、汎用コーダ制御構成要素211は、他の構成要素による区分、予測、およびフィルタ処理を管理する。たとえば、汎用コーダ制御構成要素211は、解像度を高くし帯域幅使用を大きくするために圧縮複雑度を動的に増大させることがあり、または解像度および帯域幅使用を低減するために圧縮複雑度を低減させることがある。したがって、汎用コーダ制御構成要素211は、ビデオ信号再構成品質をビットレート問題と平衡させるために、コーデックシステム200の他の構成要素を制御する。汎用コーダ制御構成要素211は、他の構成要素の動作を制御する制御データを作成する。制御データはまた、ヘッダフォーマッティングおよびCABAC構成要素231に転送されて、デコーダにおける復号用のパラメータをシグナリングするためにビットストリームの中で符号化される。
【0058】
区分されたビデオ信号201はまた、インター予測のために動き推定構成要素221および動き補償構成要素219へ送られる。区分されたビデオ信号201のフレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定構成要素221および動き補償構成要素219は、時間予測を行うために、1つまたは複数の参照フレームの中の1つまたは複数のブロックに対する、受信されたビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【0059】
動き推定構成要素221および動き補償構成要素219は高度に統合されてよいが、概念的な目的のために別々に図示される。動き推定構成要素221によって実行される動き推定は、ビデオブロックに対して動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、予測ブロックに対するコーディングされたオブジェクトの変位を示してよい。予測ブロックとは、ピクセル差分の観点から、コーディングされるべきブロックに密に整合するものと認められるブロックである。予測ブロックは、参照ブロックと呼ばれることもある。そのようなピクセル差分は、絶対差分和(SAD:sum of absolute difference)、二乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定されてよい。HEVCは、CTU、コーディングツリーブロック(CTB)、およびCUを含む、いくつかのコーディングされたオブジェクトを採用する。たとえば、CTUがCTBに分割され得、CTBは、次いで、CUの中に含めるためのCBに分割され得る。CUは、予測データを含む予測ユニット(PU:prediction unit)、および/またはCUに対する変換された残差データを含む変換ユニット(TU:transform unit)として符号化され得る。動き推定構成要素221は、レートひずみ最適化プロセスの一部としてレートひずみ分析を使用することによって、動きベクトル、PU、およびTUを生成する。たとえば、動き推定構成要素221は、現在のブロック/フレームに対して、複数の参照ブロック、複数の動きベクトルなどを決定してよく、レートひずみ特性が最良の参照ブロック、動きベクトルなどを選択してよい。最良のレートひずみ特性は、ビデオ再構成の品質(たとえば、圧縮によるデータ損失の量)とコーディング効率(たとえば、最終的な符号化のサイズ)の両方を平衡させる。
【0060】
いくつかの例では、コーデックシステム200は、復号ピクチャバッファ構成要素223の中に記憶された参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。たとえば、ビデオコーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間してよい。したがって、動き推定構成要素221は、完全ピクセル位置および分数ピクセル位置に対する動き探索を実行し得、分数ピクセル精度を有する動きベクトルを出力し得る。動き推定構成要素221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライスの中のビデオブロックのPUに対する動きベクトルを計算する。動き推定構成要素221は、計算された動きベクトルを動きデータとして符号化のためにヘッダフォーマッティングおよびCABAC構成要素231へ、また動き補償構成要素219へ動きを出力する。
【0061】
動き補償構成要素219によって実行される動き補償は、動き推定構成要素221によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴ってよい。再び、動き推定構成要素221および動き補償構成要素219は、いくつかの例では機能的に統合され得る。現在ビデオブロックのPUに対する動きベクトルを受信すると、動き補償構成要素219は、動きベクトルが指し示す先の予測ブロックの位置を特定し得る。次いで、コーディング中の現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって残差ビデオブロックが形成され、ピクセル差分値を形成する。概して、動き推定構成要素221は、ルーマ成分に対する動き推定を実行し、動き補償構成要素219は、ルーマ成分に基づいて計算された動きベクトルをクロマ成分とルーマ成分の両方に対して使用する。予測ブロックおよび残差ブロックは、変換スケーリングおよび量子化構成要素213に転送される。
【0062】
区分されたビデオ信号201はまた、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217へ送られる。動き推定構成要素221および動き補償構成要素219と同様に、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は高度に統合されてよいが、概念的な目的のために別々に図示される。イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、上記で説明したようにフレーム間で動き推定構成要素221および動き補償構成要素219によって実行されるインター予測の代替として、現在フレームの中のブロックに対して現在ブロックをイントラ予測する。詳細には、イントラピクチャ推定構成要素215は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定構成要素215は、現在ブロックを符号化するための適切なイントラ予測モードを、テストされた複数のイントラ予測モードから選択する。選択されたイントラ予測モードは、次いで、符号化のためにヘッダフォーマッティングおよびCABAC構成要素231に転送される。
【0063】
たとえば、イントラピクチャ推定構成要素215は、テストされる様々なイントラ予測モードに対してレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中でレートひずみ特性が最良のイントラ予測モードを選択する。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを作り出すために符号化された、符号化されていない元のブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを作り出すために使用されたビットレート(たとえば、ビット数)を決定する。イントラピクチャ推定構成要素215は、どのイントラ予測モードがブロックに対して最良のレートひずみ値を示すのかを決定するために、様々な符号化ブロックに対してひずみおよびレートから比率を計算する。加えて、イントラピクチャ推定構成要素215は、レートひずみ最適化(RDO:rate-distortion optimization)に基づいて深度モデリングモード(DMM:depth modeling mode)を使用して深度マップの深度ブロックをコーディングするように構成され得る。
【0064】
イントラピクチャ予測構成要素217は、エンコーダ上に実装されるとき、イントラピクチャ推定構成要素215によって決定された選択済みのイントラ予測モードに基づいて予測ブロックから残差ブロックを生成してよく、またはデコーダ上に実装されるとき、ビットストリームから残差ブロックを読み取ってよい。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値における差分を含む。残差ブロックは、次いで、変換スケーリングおよび量子化構成要素213に転送される。イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、ルーマ成分とクロマ成分の両方に対して動作し得る。
【0065】
変換スケーリングおよび量子化構成要素213は、残差ブロックをさらに圧縮するように構成される。変換スケーリングおよび量子化構成要素213は、離散コサイン変換(DCT)、離散サイン変換(DST)、または概念的に類似の変換などの、変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを作り出す。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換スケーリングおよび量子化構成要素213はまた、たとえば、周波数に基づいて、変換された残差情報をスケーリングするように構成される。そのようなスケーリングは、残差情報にスケールファクタを適用することを伴い、その結果、異なる周波数情報が異なる粒度で量子化され、そのことは、再構成されるビデオの最終的な視覚的品質に影響を及ぼし得る。変換スケーリングおよび量子化構成要素213はまた、ビットレートをさらに低減するために変換係数を量子化するように構成される。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、変換スケーリングおよび量子化構成要素213は、次いで、量子化変換係数を含む行列の走査を実行し得る。量子化変換係数は、ヘッダフォーマッティングおよびCABAC構成要素231に転送されてビットストリームの中で符号化される。
【0066】
スケーリングおよび逆変換構成要素229は、動き推定をサポートするために変換スケーリングおよび量子化構成要素213の逆の動作を適用する。スケーリングおよび逆変換構成要素229は、たとえば、別の現在ブロック用の予測ブロックになり得る参照ブロックとして後で使用できるように、ピクセル領域における残差ブロックを再構成するために、逆のスケーリング、変換、および/または量子化を適用する。動き推定構成要素221および/または動き補償構成要素219は、もっと後のブロック/フレームの動き推定における使用のために、残差ブロックを対応する予測ブロックに戻して加算することによって参照ブロックを計算してよい。スケーリング、量子化、および変換の間に生み出されるアーティファクトを緩和するために、再構成された参照ブロックにフィルタが適用される。そのようなアーティファクトは、後続のブロックが予測されるとき、場合によっては不正確な予測を引き起こすことがある(かつ、追加のアーティファクトを生み出すことがある)。
【0067】
フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は、残差ブロックおよび/または再構成された画像ブロックにフィルタを適用する。たとえば、元の画像ブロックを再構成するために、スケーリングおよび逆変換構成要素229からの変換された残差ブロックが、イントラピクチャ予測構成要素217および/または動き補償構成要素219からの対応する予測ブロックと組み合わせられてよい。次いで、再構成された画像ブロックにフィルタが適用され得る。いくつかの例では、フィルタは、代わりに残差ブロックに適用されてよい。図2の中の他の構成要素と同様に、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は、高度に統合され一緒に実装され得るが、概念的な目的のために別々に示される。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるのかを調整するための複数のパラメータを含む。フィルタ制御分析構成要素227は、そのようなフィルタがどこで適用されるべきかを決定するために、再構成された参照ブロックを分析し、対応するパラメータを設定する。そのようなデータは、符号化のためのフィルタ制御データとして、ヘッダフォーマッティングおよびCABAC構成要素231に転送される。ループ内フィルタ構成要素225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、雑音抑制フィルタ、SAOフィルタ、および適応ループフィルタを含んでよい。そのようなフィルタは、例に応じて、空間/ピクセル領域において(たとえば、再構成されたピクセルブロックに対して)、または周波数領域において適用されてよい。
【0068】
エンコーダとして動作するとき、フィルタ処理済みの再構成された画像ブロック、残差ブロック、および/または予測ブロックは、上記で説明したように動き推定において後で使用できるように、復号ピクチャバッファ構成要素223の中に記憶される。デコーダとして動作するとき、復号ピクチャバッファ構成要素223は、再構成されたフィルタ処理済みのブロックを記憶し、それを出力ビデオ信号の一部としてディスプレイに向かって転送する。復号ピクチャバッファ構成要素223は、予測ブロック、残差ブロック、および/または再構成された画像ブロックを記憶することが可能な任意のメモリデバイスであってよい。
【0069】
ヘッダフォーマッティングおよびCABAC構成要素231は、コーデックシステム200の様々な構成要素からデータを受信し、デコーダに向かう送信のために、そのようなデータをコーディングされたビットストリームの中に符号化する。詳細には、ヘッダフォーマッティングおよびCABAC構成要素231は、汎用制御データおよびフィルタ制御データなどの制御データを符号化するための、様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データならびに量子化変換係数データの形態の残差データはすべて、ビットストリームの中で符号化される。最終的なビットストリームは、区分された元のビデオ信号201を再構成するためにデコーダによって望まれるすべての情報を含む。そのような情報はまた、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックに対する符号化コンテキストの定義、最確イントラ予測モードの指示、区分情報の指示などを含んでよい。そのようなデータは、エントロピーコーディングを採用することによって符号化され得る。たとえば、情報は、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、CABAC、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間区分エントロピー(PIPE:probability interval partitioning entropy)コーディング、または別のエントロピーコーディング技法を採用することによって符号化されてよい。エントロピーコーディングに続いて、コーディングされたビットストリームは、別のデバイス(たとえば、ビデオデコーダ)へ送信され得るか、または後で送信もしくは取出しできるようにアーカイブされ得る。
【0070】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実施し、かつ/または動作方法100のステップ101、103、105、107、および/もしくは109を実施するために、採用され得る。エンコーダ300は入力ビデオ信号を区分し、区分されたビデオ信号201と実質的に類似である区分されたビデオ信号301が得られる。区分されたビデオ信号301は、次いで、エンコーダ300の構成要素によって圧縮されビットストリームの中に符号化される。
【0071】
詳細には、区分されたビデオ信号301は、イントラ予測のために、イントラピクチャ予測構成要素317に転送される。イントラピクチャ予測構成要素317は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と実質的に類似であってよい。区分されたビデオ信号301はまた、復号ピクチャバッファ構成要素323の中の参照ブロックに基づくインター予測のために、動き補償構成要素321に転送される。動き補償構成要素321は、動き推定構成要素221および動き補償構成要素219と実質的に類似であってよい。イントラピクチャ予測構成要素317および動き補償構成要素321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために、変換および量子化構成要素313に転送される。変換および量子化構成要素313は、変換スケーリングおよび量子化構成要素213と実質的に類似であってよい。変換および量子化された残差ブロックならびに対応する予測ブロックは(関連する制御データと一緒に)、ビットストリームの中へのコーディングのために、エントロピーコーディング構成要素331に転送される。エントロピーコーディング構成要素331は、ヘッダフォーマッティングおよびCABAC構成要素231と実質的に類似であってよい。
【0072】
変換および量子化された残差ブロックならびに/または対応する予測ブロックはまた、動き補償構成要素321による使用のための参照ブロックへの再構成のために、変換および量子化構成要素313から逆変換および量子化構成要素329に転送される。逆変換および量子化構成要素329は、スケーリングおよび逆変換構成要素229と実質的に類似であってよい。ループ内フィルタ構成要素325の中のループ内フィルタも、例に応じて残差ブロックおよび/または再構成された参照ブロックに適用される。ループ内フィルタ構成要素325は、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225と実質的に類似であってよい。ループ内フィルタ構成要素325は、ループ内フィルタ構成要素225に関して説明したような複数のフィルタを含んでよい。フィルタ処理済みのブロックが、次いで、動き補償構成要素321による参照ブロックとしての使用のために、復号ピクチャバッファ構成要素323の中に記憶される。復号ピクチャバッファ構成要素323は、復号ピクチャバッファ構成要素223と実質的に類似であってよい。
【0073】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実施し、かつ/または動作方法100のステップ111、113、115、および/もしくは117を実施するために、採用され得る。デコーダ400は、たとえば、エンコーダ300から、ビットストリームを受信し、エンドユーザへの表示のために、再構成された出力ビデオ信号をビットストリームに基づいて生成する。
【0074】
ビットストリームは、エントロピー復号構成要素433によって受信される。エントロピー復号構成要素433は、CAVLC、CABAC、SBAC、PIPEコーディング、または他のエントロピーコーディング技法などの、エントロピー復号方式を実施するように構成される。たとえば、エントロピー復号構成要素433は、ビットストリームの中でコードワードとして符号化された追加のデータを解釈するためのコンテキストを提供するために、ヘッダ情報を採用し得る。復号される情報は、汎用制御データ、フィルタ制御データ、区分情報、動きデータ、予測データ、および残差ブロックからの量子化変換係数などの、ビデオ信号を復号するための任意の所望の情報を含む。量子化変換係数は、残差ブロックへの再構成のために、逆変換および量子化構成要素429に転送される。逆変換および量子化構成要素429は、逆変換および量子化構成要素329と類似であってよい。
【0075】
再構成された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づく画像ブロックへの再構成のために、イントラピクチャ予測構成要素417に転送される。イントラピクチャ予測構成要素417は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と類似であってよい。詳細には、イントラピクチャ予測構成要素417は、フレームの中の参照ブロックの位置を特定するために予測モードを採用し、イントラ予測画像ブロックを再構成するためにその結果に残差ブロックを適用する。再構成されたイントラ予測画像ブロック、ならびに/または残差ブロックおよび対応するインター予測データが、それぞれ、復号ピクチャバッファ構成要素223およびループ内フィルタ構成要素225と実質的に類似であってよい、復号ピクチャバッファ構成要素423にループ内フィルタ構成要素425を介して転送される。ループ内フィルタ構成要素425は、再構成された画像ブロック、残差ブロック、および/または予測ブロックをフィルタ処理し、そのような情報が、復号ピクチャバッファ構成要素423の中に記憶される。復号ピクチャバッファ構成要素423からの再構成された画像ブロックは、インター予測のために、動き補償構成要素421に転送される。動き補償構成要素421は、動き推定構成要素221および/または動き補償構成要素219と実質的に類似であってよい。詳細には、動き補償構成要素421は、予測ブロックを生成しその結果に残差ブロックを適用して画像ブロックを再構成するために、参照ブロックからの動きベクトルを採用する。結果として得られる再構成されたブロックも、ループ内フィルタ構成要素425を介して復号ピクチャバッファ構成要素423に転送されてよい。復号ピクチャバッファ構成要素423は、追加の再構成された画像ブロックを記憶し続け、そうした画像ブロックは区分情報を介してフレームに再構成され得る。そのようなフレームはまた、シーケンスの中に置かれてよい。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向かって出力される。
【0076】
図5は、符号化ビデオシーケンスを含む例示的なビットストリーム500を示す概略図である。たとえば、ビットストリーム500は、コーデックシステム200および/またはデコーダ400によって復号するために、コーデックシステム200および/またはエンコーダ300によって生成され得る。別の例として、ビットストリーム500は、ステップ111におけるデコーダによる使用のために、方法100のステップ109においてエンコーダによって生成されてよい。
【0077】
ビットストリーム500は、シーケンスパラメータセット(SPS)510、複数のピクチャパラメータセット(PPS)512、タイルグループヘッダ514、および画像データ520を含む。SPS510は、ビットストリーム500の中に含まれるビデオシーケンスの中のすべてのピクチャに共通のシーケンスデータを含む。そのようなデータは、ピクチャサイズ決定、ビット深度、コーディングツールパラメータ、ビットレート制約などを含むことができる。PPS512は、1つまたは複数の対応するピクチャに特有のパラメータを含む。したがって、ビデオシーケンスの中の各ピクチャは、1つのPPS512を参照し得る。PPS512は、対応するピクチャの中のタイルにとって利用可能なコーディングツール、量子化パラメータ、オフセット、ピクチャ特有のコーディングツールパラメータ(たとえば、フィルタ制御)などを示すことができる。タイルグループヘッダ514は、ピクチャの中の各タイルグループに特有のパラメータを含む。したがって、ビデオシーケンスの中のタイルグループごとに1つのタイルグループヘッダ514があり得る。タイルグループヘッダ514は、タイルグループ情報、ピクチャ順序カウント(POC)、参照ピクチャリスト、予測重み、タイルエントリポイント、デブロッキングパラメータなどを含んでよい。いくつかのシステムがスライスヘッダとしてタイルグループヘッダ514を参照し、タイルグループではなくスライスをサポートするためにそのような情報を使用することに留意されたい。
【0078】
画像データ520は、インター予測および/またはイントラ予測に従って符号化されたビデオデータ、ならびに対応する変換および量子化された残差データを含む。そのような画像データ520は、符号化の前に画像を区分するために使用される区分に従ってソートされる。たとえば、画像データ520の中の画像は、タイル523に分割される。タイル523は、コーディングツリーユニット(CTU)にさらに分割される。CTUは、コーディングツリーに基づいてコーディングブロックにさらに分割される。コーディングブロックは、次いで、予測メカニズムに従って符号化/復号され得る。画像/ピクチャは、1つまたは複数のタイル523を含むことができる。
【0079】
タイル523は、水平境界および垂直境界によって作成された、ピクチャの区分された部分である。タイル523は、長方形および/または正方形であってよい。詳細には、タイル523は、直角に接続されている4つの側部を含む。4つの側部は、平行な側部の2つのペアを含む。さらに、平行な側部ペアの中の側部は長さが等しい。したがって、タイル523は任意の長方形形状であってよく、ここで、正方形は、すべての4つの側部が等しい長さである、長方形の特別な事例である。ピクチャは、タイル523の行および列の中に配置され得る。タイル行とは、ピクチャの左の境界から右の境界へ(またはその逆に)連続的なラインを作成するように水平に隣接して配置されたタイル523のセットである。タイル列とは、ピクチャの上の境界から下の境界へ(またはその逆に)連続的なラインを作成するように垂直に隣接して配置されたタイル523のセットである。タイル523は、例に応じて、他のタイル523に基づく予測を可能にすることもしないこともある。各タイル523は、ピクチャの中に固有のタイルインデックスを有してよい。タイルインデックスは、あるタイル523を別のタイル523から区別するために使用され得る、手続き的に選択された数値識別子である。たとえば、タイルインデックスは、ラスタ走査順序で数値的に増大してよい。ラスタ走査順序は、左から右かつ上から下である。いくつかの例では、タイル523にタイル識別子(ID)も割り当てられてよいことに留意されたい。タイルIDは、あるタイル523を別のタイル523から区別するために使用され得る、割り当てられた識別子である。いくつかの例では、算出はタイルインデックスではなくタイルIDを採用してよい。さらに、いくつかの例では、タイルIDは、タイルインデックスと同じ値を有するように割り当てられ得る。タイルインデックスおよび/またはタイルIDは、タイル523を含むタイルグループを示すためにシグナリングされ得る。たとえば、タイルインデックスおよび/またはタイルIDは、タイル523に関連するピクチャデータを表示用の適切な位置にマッピングするために採用されてよい。タイルグループは、たとえば、対象領域の表示をサポートするために、かつ/または並列処理をサポートするために、別々に抽出およびコーディングされ得る、タイル523の関連するセットである。タイルグループの中のタイル523は、タイルグループの外部のタイル523への参照を伴わずにコーディングされ得る。各タイル523は対応するタイルグループに割り当てられてよく、したがって、ピクチャは複数のタイルグループを含むことができる。
【0080】
図6A図6Eは、異なるビットストリームからの複数の解像度のサブピクチャを組み合わせて仮想現実(VR)アプリケーションにおける使用のための単一のピクチャにするための、エクストラクタトラック610を作成するための例示的なメカニズム600を示す。メカニズム600は、方法100の例示的な使用事例をサポートするために採用され得る。たとえば、メカニズム600は、コーデックシステム200および/またはエンコーダ300からコーデックシステム200および/またはデコーダ400に向かう送信用のビットストリーム500を生成するために採用され得る。特定の例として、メカニズム600は、VR、OMAF、360度ビデオなどとともに使用するために採用され得る。
【0081】
VRでは、ビデオの一部分だけがユーザに表示される。たとえば、VRビデオは、ユーザを取り囲む球体を含むように撮影されてよい。ユーザは、VRビデオを見るためにヘッドマウントディスプレイ(HMD)を採用し得る。ユーザは、対象領域のほうへHMDを向けてよい。対象領域がユーザに表示され、他のビデオデータは廃棄される。このようにして、ユーザは、任意の瞬間において、VRビデオの、ユーザが選択した部分だけを見る。この手法は、ユーザの知覚を模倣し、したがって、実環境を模倣する方法でユーザに仮想環境を体験させる。この手法を伴う問題のうちの1つは、VRビデオ全体がユーザへ送信され得るが、ビデオの現在のビューポートしか実際には使用されず、残りが廃棄されることである。ストリーミングアプリケーションに対してシグナリング効率を高めるために、ユーザの現在のビューポートは、より高い第1の解像度で送信され得、他のビューポートは、より低い第2の解像度で送信され得る。このようにして、廃棄される可能性のあるビューポートは、ユーザによって見られる可能性のあるビューポートよりも小さい帯域幅を占める。ユーザが新たなビューポートを選択する場合、異なる現在のビューポートがより高い第1の解像度で送信されることをデコーダが要求し得るまで、解像度がより低いコンテンツが見せられ得る。この機能をサポートするために、図6Eに示すようなエクストラクタトラック610を作成するためにメカニズム600が採用され得る。エクストラクタトラック610とは、上記で説明したような使用のために複数の解像度におけるピクチャをカプセル化する、画像データのトラックである。
【0082】
メカニズム600は、それぞれ、図6Aおよび図6Bに示すように、同じビデオコンテンツを第1の解像度611および第2の解像度612で符号化する。特定の例として、第1の解像度611は5120×2560ルーマサンプルであってよく、第2の解像度612は2560×1280ルーマサンプルであってよい。ビデオのピクチャは、それぞれ、第1の解像度611におけるタイル601、および第2の解像度612におけるタイル603に区分され得る。図示の例では、タイル601および603は各々、4×2グリッドに区分される。さらに、各タイル601および603の位置に対してMCTSがコーディングされ得る。第1の解像度611および第2の解像度612におけるピクチャは各々、対応する解像度で経時的にビデオを表すMCTSシーケンスをもたらす。コーディングされた各MCTSシーケンスは、サブピクチャトラックまたはタイルトラックとして記憶される。メカニズム600は、次いで、ビューポート適応MCTS選択をサポートすべきセグメントを作成するために、ピクチャを使用することができる。たとえば、高解像度MCTSと低解像度MCTSとの異なる選択を引き起こす、見ている方位の各範囲が検討される。図示の例では、第1の解像度611におけるMCTSを含む4つのタイル601、および第2の解像度613におけるMCTSを含む4つのタイル603が取得される。
【0083】
メカニズム600は、次いで、可能なビューポート適応MCTS選択ごとにエクストラクタトラック610を作成することができる。図6Cおよび図6Dは、例示的なビューポート適応MCTS選択を示す。詳細には、選択されるタイル605および607のセットは、それぞれ、第1の解像度611および第2の解像度612において選択される。選択されるタイル605および607は、灰色の陰影で示される。図示の例では、選択されるタイル605は、ユーザに見せられることになる、第1の解像度611におけるタイル601であり、選択されるタイル607は、廃棄される可能性があるが、ユーザが新たなビューポートを選択する場合に表示をサポートするために保持される、第2の解像度612におけるタイル603である。選択されるタイル605および607は、次いで、第1の解像度611と第2の解像度612の両方における画像データを含む単一のピクチャに組み合わせられる。そのようなピクチャは、エクストラクタトラック610を作成するように組み合わせられる。図6Eは、例示の目的で、対応するエクストラクタトラック610からの単一のピクチャを示す。図示のように、エクストラクタトラック610の中のピクチャは、第1の解像度611および第2の解像度612からの、選択されるタイル605および607を含む。上述のように、図6C図6Eは、単一のビューポート適応MCTS選択を示す。任意のビューポートのユーザ選択を可能にするために、選択されるタイル605と607との可能な組合せごとに、エクストラクタトラック610が作成されるべきである。
【0084】
図示の例では、第2の解像度612のビットストリームからのコンテンツをカプセル化するタイル603の各選択は、2つのスライスを含む。パッキングされたピクチャとERPフォーマットの投影されるピクチャとの間のマッピングを作成するために、エクストラクタトラック610の中にRegionWisePackingBoxが含まれてよい。提示する例では、エクストラクタトラックから解像されたビットストリームは、解像度が3200×2560である。したがって、4000サンプル(4K)対応デコーダは、5000サンプル5K(5120×2560)解像度を有するコーディングされたビットストリームからビューポートが抽出されるコンテンツを復号し得る。
【0085】
図示のように、エクストラクタトラック610は、高解像度タイル601の2つの行および低解像度タイル603の4つの行を含む。したがって、エクストラクタトラック610は、高解像度コンテンツの2つのスライスおよび低解像度コンテンツの4つのスライスを含む。均一なタイリングは、そのような使用事例をサポートしない。均一なタイリングは、タイル列のセットおよびタイル行のセットによって定義される。タイル列はピクチャの上からピクチャの下まで延在する。同様に、タイル行はピクチャの左からピクチャの右まで延在する。そのような構造は簡単に定義され得るが、この構造は、メカニズム600によって説明される使用事例などの、進歩した使用事例を効果的にサポートすることができない。図示の例では、エクストラクタトラック610の異なるセクションにおいて、異なる数の行が採用される。均一なタイリングが採用される場合、エクストラクタトラック610の右の側部におけるタイルは、各々2つのスライスを受け入れるように書き換えられるべきである。この手法は、非効率であり計算量的に複雑である。
【0086】
本開示は、異なる数のスライスを含むようにタイルが書き換えられることを必要としない、以下で説明するようなフレキシブルタイリング方式を含む。フレキシブルタイリング方式は、タイル601が第1の解像度611におけるコンテンツを含むことを可能にする。フレキシブルタイリング方式はまた、第2の解像度612におけるタイル603に各々が直接マッピングされ得るもっと小さいタイルに、タイル601が区分されることを可能にする。そのような手法は、上記で説明したように異なる解像度が組み合わせられるとき、タイルが書き換えられる/アドレス再指定されることを必要としないので、この直接マッピングはより効率的である。
【0087】
図7は、異なるビットストリームからの複数の解像度のピクチャをつなぎ合わせて表示用の単一のピクチャにする、例示的なビデオ会議アプリケーション700を示す。アプリケーション700は、方法100の例示的な使用事例をサポートするために採用され得る。たとえば、アプリケーション700は、コーデックシステム200および/またはエンコーダ300からのビットストリーム500からのビデオコンテンツを表示するために、コーデックシステム200および/またはデコーダ400において採用され得る。ビデオ会議アプリケーション700は、ユーザにビデオシーケンスを表示する。ビデオシーケンスは、話している参加者701および他の参加者703を表示するピクチャを含む。話している参加者701は、より高い第1の解像度で表示され、他の参加者703は、より小さい第2の解像度で表示される。そのようなピクチャをコーディングするために、ピクチャは、単一の行を有する部分、および3つの行を有する部分を含むべきである。均一なタイリングを用いてそのようなシナリオをサポートするために、ピクチャは左のタイルおよび右のタイルに区分される。右のタイルは、次いで、3つの行を含むように書き換えられる/アドレス再指定される。そのようなアドレス再指定は、圧縮と性能の両方の不利益をもたらす。以下で説明するフレキシブルタイリング方式は、単一のタイルが、もっと小さいタイルに区分され、他の参加者703に関連するサブピクチャビットストリームの中のタイルにマッピングされることを可能にする。このようにして、話している参加者701は、第1のレベルのタイルに直接マッピングされ得、他の参加者703は、そのような書換え/アドレス再指定を伴わずに、第1のタイルから分割された第2のレベルのタイルにマッピングされ得る。
【0088】
図8A図8Bは、同じピクチャの中で異なる解像度を有する複数のタイルをサポートすることが可能な、例示的なフレキシブルビデオタイリング方式800を示す概略図である。より効率的なコーディングメカニズム600およびアプリケーション700をサポートするために、フレキシブルビデオタイリング方式800が採用され得る。したがって、フレキシブルビデオタイリング方式800は、方法100の一部として採用され得る。さらに、フレキシブルビデオタイリング方式800は、コーデックシステム200、エンコーダ300、および/またはデコーダ400によって採用され得る。フレキシブルビデオタイリング方式800の結果は、エンコーダとデコーダとの間の送信のためにビットストリーム500の中に記憶され得る。
【0089】
図8Aに示すように、ピクチャ(たとえば、フレーム、画像など)は、レベル1タイルとも呼ばれる第1のレベルのタイル801に区分され得る。図8Bに示すように、第1のレベルのタイル801は、レベル2タイルとも呼ばれる第2のレベルのタイル803を作成するように選択的に区分され得る。第1のレベルのタイル801および第2のレベルのタイル803は、次いで、複数の解像度でコーディングされたサブピクチャを有するピクチャを作成するために採用され得る。第1のレベルのタイル801は、ピクチャを1組の列および1組の行に完全に区分することによって生成されるタイルである。第2のレベルのタイル803は、第1のレベルのタイル801を区分することによって生成されるタイルである。
【0090】
上記で説明したように、様々なシナリオにおいて、たとえば、VRおよび/または遠隔会議では、ビデオは複数の解像度でコーディングされ得る。ビデオはまた、各解像度におけるスライスを採用することによってコーディングされ得る。解像度がより低いスライスは、解像度がより高いスライスよりも小さい。複数の解像度を有するピクチャを作成するために、ピクチャは第1のレベルのタイル801に区分され得る。最も高い解像度からのスライスは、第1のレベルのタイル801の中に直接含められ得る。さらに、第1のレベルのタイル801は、第1のレベルのタイル801よりも小さい第2のレベルのタイル803に区分され得る。したがって、より小さい第2のレベルのタイル803は、解像度がより低いスライスを直接受け入れることができる。このようにして、各解像度からのスライスは、首尾一貫したアドレス指定方式を使用するために、解像度が異なるタイルが動的にアドレス再指定されることを必要とすることなく、たとえば、タイルインデックス関係を介して、単一のピクチャに圧縮され得る。第1のレベルのタイル801および第2のレベルのタイル803はMCTSとして実施されてよく、したがって、異なる解像度における動き制約された画像データを受け入れてよい。
【0091】
本開示は多くの態様を含む。特定の例として、第1のレベルのタイル801が第2のレベルのタイル803に分割される。第2のレベルのタイル803は、次いで、各々がピクチャデータの(たとえば、より小さい解像度における)単一の長方形スライスを含むように制約され得る。長方形スライスは、長方形形状を維持するように制約されるスライスであり、したがって、水平および垂直のピクチャ境界に基づいてコーディングされる。したがって、長方形スライスは、(左から右までのラインおよび上から下までのラインの中にCTUを含み、長方形形状を維持しないことがある)ラスタ走査グループに基づいてコーディングされない。スライスとは、同じフレーム/ピクチャの中の任意の他の領域から別個に符号化される、ピクチャ/フレームの空間的に別個の領域である。別の例では、第1のレベルのタイル801は、2つ以上の完全な第2のレベルのタイル803に分割され得る。そのような場合、第1のレベルのタイル801は、部分的な第2のレベルのタイル803を含まなくてよい。別の例では、第1のレベルのタイル801および第2のレベルのタイル803の構成が、タイルを作成するために区分されたピクチャに関連するPPSなどの、ビットストリームの中のパラメータセットの中でシグナリングされ得る。一例では、フラグなどの分割指示が、第1のレベルのタイル801ごとにパラメータセットの中でコーディングされ得る。指示は、どの第1のレベルのタイル801が第2のレベルのタイル803にさらに分割されるのかを示す。別の例では、第2のレベルのタイル803の構成が、第2のレベルのタイル列の数および第2のレベルのタイル行の数としてシグナリングされ得る。
【0092】
別の例では、第1のレベルのタイル801および第2のレベルのタイル803は、タイルグループに割り当てられ得る。そのようなタイルグループは、対応するタイルグループの中のすべてのタイルが(たとえば、ラスタ走査とは対照的に)ピクチャの長方形領域をカバーするように制約されるように制約され得る。たとえば、いくつかのシステムは、ラスタ走査順序でタイルグループにタイルを追加してよい。このことは、現在の行の中に初期タイルを追加すること、現在の行の左のピクチャ境界に到達するまで行の中に各タイルを追加することに進むこと、次の行の右の境界に進むこと、および最終タイルに到達するまで次の行の中に各タイルを追加することなどを含む。この手法は、ピクチャを越えて延在する非長方形形状をもたらすことがある。そのような形状は、本明細書で説明するような複数の解像度を有するピクチャを作成することにとって有用でない場合がある。代わりに、本例は、任意の第1のレベルのタイル801および/または第2のレベルのタイル803が(たとえば、任意の順序で)タイルグループに追加され得るが、結果として得られるタイルグループが(たとえば、直角に接続された4つの側部を含む)長方形または正方形でなければならないように、タイルグループを制約し得る。この制約は、単一の第1のレベルのタイル801から区分される第2のレベルのタイル803が、異なるタイルグループの中に置かれないことを確実にし得る。
【0093】
別の例では、第1のレベルのタイル幅が最小幅しきい値の2倍よりも小さく、かつ第1のレベルのタイル高さが最小高さしきい値の2倍よりも小さいとき、第2のレベルのタイル列の数および第2のレベルのタイル行の数を明示的に示すデータがビットストリームから除外され得る。なぜかと言うと、そのような条件を満たす第1のレベルのタイル801は、それぞれ、2つ以上の列または1つの行に分割されなくてよく、したがって、そのような情報はデコーダによって推測され得るからである。別の例では、どの第1のレベルのタイル801が第2のレベルのタイル803に区分されるのかを示す分割指示が、いくつかの第1のレベルのタイル801に対してビットストリームから除外され得る。たとえば、第1のレベルのタイル801が、最小幅しきい値よりも小さい第1のレベルのタイル幅を有し、かつ第1のレベルのタイル高さが最小高さしきい値よりも小さいとき、そのようなデータは除外され得る。なぜかと言うと、そのような条件を満たす第1のレベルのタイル801は、第2のレベルのタイル803に分割されるには小さすぎ、したがって、そのような情報はデコーダによって推測され得るからである。
【0094】
上記で説明したように、フレキシブルビデオタイリング方式800は、異なるビットストリームからのサブピクチャを複数の解像度を含むピクチャにマージすることをサポートする。以下のことは、そのような機能をサポートする様々な実施形態を説明する。概して、本開示は、HEVCにおけるタイリング方式よりもフレキシブルな方法でピクチャを区分する、ビデオコーディングにおけるタイルのシグナリングおよびコーディングのための方法を説明する。より詳細には、本開示は、いくつかのタイリング方式を説明し、タイル列はコーディングされたピクチャの上から下まで一様に延在しなくてよく、同様にタイル行はコーディングされたピクチャの左から右まで一様に延在しなくてよい。
【0095】
たとえば、HEVCタイリング手法に基づくと、いくつかのタイルは、図6A図6Eおよび図7において説明する機能をサポートするために複数のタイル行にさらに分割されるべきである。さらに、タイルがどのように配置されるのかに応じて、タイルはタイル列にさらに分割されるべきである。たとえば、図7において、いくつかの事例では参加者2~4は参加者1の下に配置されてよく、そのことは、タイルを列に分割することによってサポートされ得る。これらのシナリオを満足するために、第1のレベルのタイルは、以下で説明するような第2のレベルのタイルのタイル行およびタイル列に分割され得る。
【0096】
たとえば、タイル構造は次のように緩和され得る。同じピクチャの中のタイルは、特定の数のタイル行であることを必要とされない。さらに、同じピクチャの中のタイルは、特定の数のタイル列であることを必要とされない。フレキシブルタイルのシグナリングのために、以下のステップが使用され得る。第1のレベルのタイル構造は、HEVCにおいて定義されるようなタイル列およびタイル行によって定義され得る。タイル列およびタイル行は、サイズが均一または不均一であってよい。これらのタイルの各々は、第1のレベルのタイルと呼ばれることがある。各第1のレベルのタイルが1つまたは複数のタイル列および1つまたは複数のタイル行にさらに分割されるか否かを指定するために、フラグがシグナリングされ得る。第1のレベルのタイルがさらに分割される場合、タイル列およびタイル行は、サイズが均一または不均一のいずれかであってよい。第1のレベルのタイルの分割から得られる新たなタイルは、第2のレベルのタイルと呼ばれる。フレキシブルタイル構造は、第2のレベルのタイルのみに限定されてよく、したがって、いくつかの例では、いかなる第2のレベルのタイルのそれ以上の分割も許容されない。他の例では、第1のレベルのタイルからの第2のレベルのタイルの作成と同様の方法で後続のレベルのタイルを作成するために、第2のレベルのタイルのさらなる分割が適用され得る。
【0097】
簡単のために、第1のレベルのタイルが2つ以上の第2のレベルのタイルに分割されるとき、分割は、サイズが均一なタイル列および均一なタイル行を常に使用し得る。この手法によって定義されるフレキシブルタイルのタイルロケーション、サイズ、インデックス、および走査順序の導出が、以下で説明される。簡単のために、そのようなフレキシブルタイル構造が使用されるとき、タイルグループは、1つまたは複数の完全な第1のレベルのタイルを含むように制約され得る。この例では、タイルグループが第2のレベルのタイルを含むとき、同じ第1のレベルのタイルの分割から発生するすべての第2のレベルのタイルがタイルグループの中に含められるべきである。そのようなフレキシブルタイル構造が使用されるとき、タイルグループが1つまたは複数のタイルを含み、一緒にすべてのタイルがピクチャの長方形領域をカバーするタイルグループに属することが、さらに制約され得る。別の態様では、そのようなフレキシブルタイル構造が使用されるとき、タイルグループは、1つまたは複数の第1のレベルのタイルを含み、一緒にすべてのタイルが、ピクチャの長方形領域をカバーするタイルグループに属する。
【0098】
一例では、フレキシブルタイルのシグナリングは次の通りであり得る。最小タイル幅および最小タイル高さは、定義された値である。第1のレベルのタイル構造は、タイル列およびタイル行によって定義され得る。タイル列およびタイル行は、サイズが均一または不均一であってよい。これらのタイルの各々は、第1のレベルのタイルと呼ばれ得る。第1のレベルのタイルのいずれかがさらに分割され得るかどうかを指定するために、フラグがシグナリングされ得る。各第1のレベルのタイルの幅が最小タイル幅の2倍以下であり、かつ各第1のレベルのタイルの高さが最小タイル高さの2倍以下であるとき、このフラグは存在しなくてよい。存在しないとき、フラグの値は0に等しいものと推測される。
【0099】
一例では、第1のレベルのタイルごとに以下のことが適用される。第1のレベルのタイルが1つまたは複数のタイル列および1つまたは複数のタイル行にさらに分割されるか否かを指定するために、フラグがシグナリングされ得る。フラグの存在は、次のように制約され得る。第1のレベルのタイル幅が最小タイル幅よりも大きい場合、または第1のレベルのタイル高さが最小タイル高さよりも大きい場合、フラグは存在する/シグナリングされる。そうでない場合、フラグは存在せず、フラグの値は、第1のレベルのタイルがそれ以上分割されないことを示す0に等しいものと推測される。
【0100】
第1のレベルのタイルがさらに分割される場合、この分割に対するタイル列の数およびタイル行の数がさらにシグナリングされてよい。タイル列およびタイル行は、サイズが均一または不均一のいずれかであってよい。第1のレベルのタイルの分割から得られるタイルは、第2のレベルのタイルと呼ばれる。タイル列の数およびタイル行の数の存在は、次のように制約され得る。第1のレベルのタイル幅が最小タイル幅の2倍よりも小さいとき、タイル列の数はシグナリングされなくてよく、タイル列値の数は1に等しいものと推測され得る。シグナリングされるシンタックス要素値が0であってよく、かつタイル列の数がシンタックス要素の値+1となるように、シグナリングは_minus1シンタックス要素を採用し得る。この手法は、シグナリングデータをさらに圧縮し得る。第1のレベルのタイル高さが最小タイル高さの2倍よりも小さいとき、タイル行の数はシグナリングされなくてよく、タイル行の数の値は、0に等しいものと推測され得る。シグナリングされるシンタックス要素値は0であってよく、タイル行の数は、シグナリングデータをさらに圧縮するためにシンタックス要素の値+1であり得る。第1のレベルのタイルの分割から得られるタイルは、第2のレベルのタイルと呼ばれ得る。フレキシブルタイル構造は、任意の第2のレベルのタイルのそれ以上の分割が許容されないように第2のレベルのタイルのみに限定されてよい。他の例では、第1のレベルのタイルを第2のレベルのタイルに分割することと同様の方法で、第2のレベルのタイルのさらなる分割が適用され得る。
【0101】
一例では、フレキシブルタイル構造のシグナリングは次の通りであり得る。ピクチャが2つ以上のタイルを含むとき、フラグなどの信号が、対応するタイルグループによって直接または間接的に参照されるパラメータセットの中で採用され得る。フラグは、対応するタイル構造が均一なタイル構造であるのかそれとも不均一なタイル構造(たとえば、本明細書で説明するようなフレキシブルタイル構造)であるのかを指定することができる。フラグはuniform_tile_structure_flagと呼ばれることがある。uniform_tile_structure_flagが1に等しいとき、たとえば、均一なタイルの単一のレベルを示すためにnum_tile_columns_minus1およびnum_tile_rows_minus1をシグナリングすることによって、HEVCスタイルの均一なタイル構造のシグナリングが採用される。uniform_tile_structure_flagが0に等しいとき、以下の情報もシグナリングされてよい。ピクチャの中のタイルの数(NumTilesInPic)がnum_tiles_minus2+2に等しいことを示すシンタックス要素num_tiles_minus2によって、ピクチャの中のタイルの数がシグナリングされ得る。デフォルトでピクチャはタイルであるものと見なされ得るので、このことはシグナリング中のビット節約をもたらし得る。タイルごとに、最後の1つを除いて、タイルの最初のコーディングブロック(たとえば、CTU)および最後のコーディングブロックのアドレスがシグナリングされる。コーディングブロックのアドレスは、ピクチャの中のブロックのインデックス(たとえば、ピクチャの中のCTUのインデックス)であり得る。そのようなコーディングブロックに対するシンタックス要素は、tile_first_block_address[i]およびtile_last_block_address[i]であってよい。これらのシンタックス要素は、ue(v)またはu(v)としてコーディングされ得る。シンタックス要素がu(v)としてコーディングされるとき、シンタックス要素の各々を表すために使用されるビット数は、ceil(log2(ピクチャの中のコーディングブロックの最大個数))である。最後のタイルの最初および最後のコーディングブロックのアドレスはシグナリングされなくてよく、代わりに、ルーマサンプル、およびピクチャの中のすべての他のタイルの集合の中の、ピクチャサイズに基づいて導出され得る。
【0102】
一例では、タイルごとに、最後の1つを除いて、タイルの最初および最後のコーディングブロックのアドレスをシグナリングするのではなく、タイルの最初のコーディングブロックのアドレス、ならびにタイルの幅および高さがシグナリングされ得る。別の例では、タイルごとに、最後の1つを除いて、タイルの最初および最後のコーディングブロックのアドレスをシグナリングするのではなく、ピクチャの原物に対するタイルの左上の点(たとえば、ピクチャの左上)のオフセット、ならびにタイルの幅および高さがシグナリングされ得る。また別の例では、タイルごとに、最後の1つを除いて、タイルの最初および最後のコーディングブロックのアドレスをシグナリングするのではなく、以下の情報がシグナリングされ得る。タイルの幅および高さがシグナリングされてよい。また、各タイルのロケーションはシグナリングされなくてよい。代わりに、タイルを以前のタイルのすぐ右に配置すべきかそれともすぐ下に配置すべきかを指定するために、フラグがシグナリングされてよい。タイルが以前のタイルの右にしかあり得ないかまたは下にしかあり得ない場合、このフラグは存在しなくてよい。最初のタイルの左上のオフセットは、常に原点/ピクチャの左上(たとえば、x=0かつy=0)となるように設定されてよい。
【0103】
シグナリング効率のために、固有のタイルサイズ(たとえば、幅および高さ)のセットがシグナリングされてよい。固有のタイルサイズのこのリストは、各タイルサイズのシグナリングを含むループから、インデックスによって参照され得る。いくつかの例では、シグナリングされたタイル構造から導出されるようなタイルロケーションおよびタイルサイズは、いかなるタイルの間にもギャップおよびオーバーラップが発生しないことを確実にするように、区分を制約しなければならない。
【0104】
以下の制約も適用され得る。タイル形状は、長方形である(たとえば、ラスタ走査形状でない)ことを必要とされ得る。ピクチャの中のタイルのユニットは、タイルの間にいかなるギャップおよびいかなるオーバーラップも伴わずにピクチャをカバーしなければならない。1つのコアしか用いずに復号が行われるとき、ピクチャの左の縁にない現在のコーディングブロック(たとえば、CTU)のコーディングのために、現在のコーディングブロックの前に左の隣接コーディングブロックが復号されなければならない。1つのコアしか用いずに復号が行われるとき、ピクチャの上の縁にない現在のコーディングブロック(たとえば、CTU)のコーディングのために、現在のコーディングブロックの前に上の隣接コーディングブロックが復号されなければならない。2つのタイルが、互いに隣接しているタイルインデックス(たとえば、idx3およびidx4)を有するとき、以下のことのうちの1つが真である。2つのタイルが垂直の縁を共有し、かつ/または第1のタイルがサイズ(その幅および高さを表すWaおよびHa)を伴って(Xa,Ya)における左上のロケーションを有するとき、かつ第2のタイルが(Xb,Yb)における左上のロケーションを有するとき、Yb=Ya+Haである。
【0105】
以下の制約も適用され得る。タイルが、2つ以上の左の隣接タイルを有するとき、タイルの高さは、すべてのその左の隣接タイルの高さの合計に等しくなければならない。タイルが、2つ以上の右の隣接タイルを有するとき、タイルの高さは、すべてのその左の隣接タイルの高さの合計に等しくなければならない。タイルが、2つ以上の上の隣接タイルを有するとき、タイルの幅は、すべてのその上の隣接タイルの幅の合計に等しくなければならない。タイルが、2つ以上の下の隣接タイルを有するとき、タイルの幅は、すべてのその下の隣接タイルの幅の合計に等しくなければならない。
【0106】
以下のことは、上述の態様の特定の例示的な実施形態である。CTBラスタおよびタイル走査プロセスは、次の通りであってよい。第iの第1のレベルのタイル列の幅をCTBの単位で指定する、両端値を含む0からnum_level1_tile_columns_minus1までにわたるiに対するリストColWidth[i]は、次のように導出され得る。
if(uniform_level1_tile_spacing_flag)
for(i=0;i<=num_level1_tile_columns_minus1;i++)
ColWidth[i]=((i+1)*PicWidthInCtbsY)/(num_level1_tile_columns_minus1+1)-(i*PicWidthInCtbsY)/(num_level1_tile_columns_minus1+1)
else{
ColWidth[num_level1_tile_columns_minus1]=PicWidthInCtbsY (6-1)
for(i=0;i<num_level1_tile_columns_minus1;i++){
ColWidth[i]=tile_level1_column_width_minus1[i]+1
ColWidth[num_tile_level1_columns_minus1] -= ColWidth[i]
}
}
【0107】
第jのタイル行の高さをCTBの単位で指定する、両端値を含む0からnum_level1_tile_rows_minus1までにわたるjに対するリストRowHeight[j]は、次のように導出され得る。
if(uniform_level1_tile_spacing_flag)
for(j=0;j<=num_level1_tile_rows_minus1;j++)
RowHeight[j]=((j+1)*PicHeightInCtbsY)/(num_level1_tile_rows_minus1+1)-(j*PicHeightInCtbsY)/(num_level1_tile_rows_minus1+1)
else{
RowHeight[num_level1_tile_rows_minus1]=PicHeightInCtbsY (6-2)
for(j=0;j<num_level1_tile_rows_minus1;j++){
RowHeight[j]=tile_level1_row_height_minus1[j]+1
RowHeight[num_level1_tile_rows_minus1] -= RowHeight[j]
}
}
【0108】
第iのタイル列境界のロケーションをCTBの単位で指定する、両端値を含む0からnum_level1_tile_columns_minus1+1までにわたるiに対するリストcolBd[i]は、次のように導出され得る。
for(colBd[0]=0,i=0;i<=num_level1_tile_columns_minus1;i++)
colBd[i+1]=colBd[i]+ColWidth[i] (6-3)
【0109】
第jのタイル行境界のロケーションをCTBの単位で指定する、両端値を含む0からnum_level1_tile_rows_minus1+1までにわたるjに対するリストrowBd[j]は、次のように導出され得る。
for(rowBd[0]=0,j=0;j<=num_level1_tile_rows_minus1;j++)
rowBd[j+1]=rowBd[j]+RowHeight[j] (6-4)
【0110】
PPSを参照してピクチャの中のタイルの数を指定する変数NumTilesInPic、ならびに第iのタイル列境界のロケーションをCTBの単位で、第iのタイル行境界のロケーションをCTBの単位で、第iのタイル列の幅をCTBの単位で、かつ第iのタイル列の高さをCTBの単位で指定する、両端値を含む0からNumTilesInPic-1までにわたるiに対するリストTileColBd[i]、TileRowBd[i]、TileWidth[i]、およびTileHeight[i]は、次のように導出され得る。
for(tileIdx=0,i=0;i<NumLevel1Tiles;i++){
tileX=i%(num_level1_tile_columns_minus1+1)
tileY=i/(num_level1_tile_columns_minus1+1)
if(!level2_tile_split_flag[i]){ (6-5)
TileColBd[tileIdx]=colBd[tileX]
TileRowBd[tileIdx]=rowBd[tileY]
TileWidth[tileIdx]=ColWidth[tileX]
TileHeight[tileIdx]=RowHeight[tileY]
tileIdx++
}else{
for(k=0;k<=num_level2_tile_columns_minus1[i];k++)
colWidth2[k]=((k+1)*ColWidth[tileX])/(num_level2_tile_columns_minus1[i]+1)-(k*ColWidth[tileX])/(num_level2_tile_columns_minus1[i]+1)
for(k=0;k<=num_level2_tile_rows_minus1[i];k++)
rowHeight2[k]=((k+1)*RowHeight[tileY])/(num_level2_tile_rows_minus1[i]+1)-(k*RowHeight[tileY])/(num_level2_tile_rows_minus1[i]+1)
for(colBd2[0]=0,k=0;k<=num_level2_tile_columns_minus1[i];k++)
colBd2[k+1]=colBd2[k]+colWidth2[k]
for(rowBd2[0]=0,k=0;k<=num_level2_tile_rows_minus1[i];k++)
rowBd2[k+1]=rowBd2[k]+rowHeight2[k]
numSplitTiles=(num_level2_tile_columns_minus1[i]+1)*(num_level2_tile_rows_minus1[i]+1)
for(k=0;k<numSplitTiles;k++){
tileX2=k%(num_level2_tile_columns_minus1[i]+1)
tileY2=k/(num_level2_tile_columns_minus1[i]+1)
TileColBd[tileIdx]=colBd[tileX]+colBd2[tileX2]
TileRowBd[tileIdx]=rowBd[tileY]+rowBd2[tileY2]
TileWidth[tileIdx]=colWidth2[tileX2]
TileHeight[tileIdx]=rowHeight2[tileY2]
tileIdx++
}
}
}
NumTilesInPic=tileIdx
【0111】
ピクチャのCTBラスタ走査におけるCTBアドレスからタイル走査におけるCTBアドレスへの変換を指定する、両端値を含む0からPicSizeInCtbsY-1までにわたるctbAddrRsに対するリストCtbAddrRsToTs[ctbAddrRs]は、次のように導出され得る。
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++){
tbX=ctbAddrRs%PicWidthInCtbsY
tbY=ctbAddrRs/PicWidthInCtbsY tileFound=FALSE
for(tileIdx=NumTilesInPic-1,i=0;i<NumTilesInPic-1 && !tileFound;i++){ (6-6)
tileFound=tbX<(TileColBd[i]+TileWidth[i]) && tbY<(TileRowBd[i]+TileHeight[i])
if(tileFound)
tileIdx=i
}
CtbAddrRsToTs[ctbAddrRs]=0
for(i=0;i<tileIdx;i++)
CtbAddrRsToTs[ctbAddrRs] += TileHeight[i]*TileWidth[i]
CtbAddrRsToTs[ctbAddrRs] += (tbY-TileRowBd[tileIdx])*TileWidth[tileIdx]+tbX-TileColBd[tileIdx]
}
【0112】
タイル走査におけるCTBアドレスからピクチャのCTBラスタ走査におけるCTBアドレスへの変換を指定する、両端値を含む0からPicSizeInCtbsY-1までにわたるctbAddrTsに対するリストCtbAddrTsToRs[ctbAddrTs]は、次のように導出され得る。
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++) (6-7)
CtbAddrTsToRs[CtbAddrRsToTs[ctbAddrRs]]=ctbAddrRs
【0113】
タイル走査におけるCTBアドレスからタイルIDへの変換を指定する、両端値を含む0からPicSizeInCtbsY-1までにわたるctbAddrTsに対するリストTileId[ctbAddrTs]は、次のように導出され得る。
for(i=0,tileIdx=0;i<=NumTilesInPic;i++,tileIdx++)
for(y=TileRowBd[i];y<TileRowBd[i+1];y++) (6-8)
for(x=TileColBd[i];x<TileColBd[i+1];x++)
TileId[CtbAddrRsToTs[y*PicWidthInCtbsY+x]]=tileIdx
【0114】
タイルインデックスからタイルの中のCTUの数への変換を指定する、両端値を含む0からNumTilesInPic-1までにわたるtileIdxに対するリストNumCtusInTile[tileIdx]は、次のように導出され得る。
for(i=0,tileIdx=0;i<NumTilesInPic;i++,tileIdx++) (6-9)
NumCtusInTile[tileIdx]=TileColWidth[tileIdx]*TileRowHeight[tileIdx]
【0115】
例示的なピクチャパラメータセットRBSPシンタックスは次の通りである。
【0116】
【表1】
【0117】
例示的なピクチャパラメータセットRBSPセマンティックは、次の通りである。num_level1_tile_columns_minus1+1は、ピクチャを区分するレベル1タイル列の数を指定する。num_level1_tile_columns_minus1は、両端値を含む0~PicWidthInCtbsY-1の範囲の中になければならない。存在しないとき、num_level1_tile_columns_minus1の値は0に等しいものと推測される。num_level1_tile_rows_minus1+1は、ピクチャを区分するレベル1タイル行の数を指定する。num_level1_tile_rows_minus1は、両端値を含む0~PicHeightInCtbsY-1の範囲の中になければならない。存在しないとき、num_level1_tile_rows_minus1の値は0に等しいものと推測される。変数NumLevel1Tilesは、(num_level1_tile_columns_minus1+1)*(num_level1_tile_rows_minus1+1)に等しく設定される。single_tile_in_pic_flagが0に等しいとき、NumTilesInPicは1よりも大きくなければならない。uniform_level1_tile_spacing_flagは、レベル1タイル列境界および同様にレベル1タイル行境界がピクチャを横断して一様に分散されることを指定するために1に等しく設定される。uniform_level1_tile_spacing_flagは、レベル1タイル列境界および同様にレベル1タイル行境界が、ピクチャを横断して一様に分散されないがシンタックス要素level1_tile_column_width_minus1[i]およびlevel1_tile_row_height_minus1[i]を使用して明示的にシグナリングされることを指定するために、0に等しい。存在しないとき、uniform_level1_tile_spacing_flagの値は1に等しいものと推測される。level1_tile_column_width_minus1[i]+1は、第iのレベル1タイル列の幅をCTBの単位で指定する。level1_tile_row_height_minus1[i]+1は、第iのタイルレベル1行の高さをCTBの単位で指定する。level2_tile_present_flagは、1つまたは複数のレベル1タイルがもっと多くのタイルに分割されることを指定する。level2_tile_split_flag[i]+1は、第iのレベル1タイルが2つ以上のタイルに分割されることを指定する。num_level2_tile_columns_minus1[i]+1は、第iのタイルを区分するタイル列の数を指定する。num_level2_tile_columns_minus1[i]は、両端値を含む0~ColWidth[i]の範囲の中になければならない。存在しないとき、num_level2_tile_columns_minus1[i]の値は0に等しいものと推測される。num_level2_tile_rows_minus1[i]+1は、第iのタイルを区分するタイル行の数を指定する。num_level2_tile_rows_minus1[i]は、両端値を含む0~RowHeight[i]の範囲の中になければならない。存在しないとき、num_level2_tile_rows_minus1[i]の値は0に等しいものと推測される。
【0118】
CTBラスタおよびタイル走査変換プロセス呼び出すことによって、以下の変数、すなわち、第iのレベル1タイル列の幅をCTBの単位で指定する、両端値を含む0からnum_level1_tile_columns_minus1までにわたるiに対するリストColWidth[i]、第jのレベル1タイル行の高さをCTBの単位で指定する、両端値を含む0からnum_level1_tile_rows_minus1までにわたるjに対するリストRowHeight[j]、PPSを参照してピクチャの中のタイルの数を指定する変数NumTilesInPic、第iのタイルの幅をCTBの単位で指定する、両端値を含む0からNumTilesInPicまでにわたるiに対するリストTileWidth[i]、第iのタイルの高さをCTBの単位で指定する、両端値を含む0からNumTilesInPicまでにわたるiに対するリストTileHeight[i]、第iのタイル列境界のロケーションをCTBの単位で指定する、両端値を含む0からNumTilesInPicまでにわたるiに対するリストTileColBd[i]、第iのタイル行境界のロケーションをCTBの単位で指定する、両端値を含む0からNumTilesInPicまでにわたるjに対するリストTileRowBd[i]、ピクチャの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からタイルの中の最初のCTBのタイル走査におけるCTBアドレスへの変換を指定する、両端値を含む0からNumTilesInPic-1までにわたるtileIdxに対するリストFirstCtbAddrTs[tileIdx]が導出される。
【0119】
例示的なタイルグループヘッダセマンティックは次の通りである。tile_group_addressは、タイルグループの中の最初のタイルのタイルアドレスを指定し、ここで、タイルアドレスは、式6-8によって指定されるようなTileId[firstCtbAddrTs]に等しく、firstCtbAddrTsは、タイルグループの中の最初のCTUのCTBのタイル走査におけるCTBアドレスである。tile_group_addressの長さは、Ceil(Log2(NumTilesInPic))ビットである。tile_group_addressの値は、両端値を含む0~NumTilesInPic-1の範囲の中になければならず、tile_group_addressの値は、同じコーディングされたピクチャのいかなる他のコーディングされたタイルグループNALユニットのtile_group_addressの値にも等しくてはならない。tile_group_addressが存在しないとき、それは0に等しいものと推測される。
【0120】
以下のことは、上述の態様の第2の特定の例示的な実施形態である。例示的なCTBラスタおよびタイル走査プロセスは次の通りである。PPSを参照してピクチャの中のタイルの数を指定する変数NumTilesInPic、ならびに第iのタイル列境界のロケーションをCTBの単位で、第iのタイル行境界のロケーションをCTBの単位で、第iのタイル列の幅をCTBの単位で、かつ第iのタイル列の高さをCTBの単位で指定する、両端値を含む0からNumTilesInPic-1までにわたるiに対するリストTileColBd[i]、TileRowBd[i]、TileWidth[i]、およびTileHeight[i]は、次のように導出される。
for(tileIdx=0,i=0;i<NumLevel1Tiles;i++){
tileX=i%(num_level1_tile_columns_minus1+1)
tileY=i/(num_level1_tile_columns_minus1+1)
if(!level2_tile_split_flag[i]){ (6-5)
TileColBd[tileIdx]=colBd[tileX]
TileRowBd[tileIdx]=rowBd[tileY]
TileWidth[tileIdx]=ColWidth[tileX]
TileHeight[tileIdx]=RowHeight[tileY]
tileIdx++
}else{
if(uniform_level2_tile_spacing_flag[i]){
for(k=0;k<=num_level2_tile_columns_minus1[i];k++)
colWidth2[k]=((k+1)*ColWidth[tileX])/(num_level2_tile_columns_minus1[i]+1)-(k*ColWidth[tileX])/(num_level2_tile_columns_minus1[i]+1)
for(k=0;k<=num_level2_tile_rows_minus1[i];k++)
rowHeight2[k]=((k+1)*RowHeight[tileY])/(num_level2_tile_rows_minus1[i]+1)-(k*RowHeight[tileY])/(num_level2_tile_rows_minus1[i]+1)
}else{
colWidth2[num_level2_tile_columns_minus1[i]]=ColWidth[tileX])
for(k=0;k<=num_level2_tile_columns_minus1[i];k++){
colWidth2[k]=tile_level2_column_width_minus1[k]+1
colWidth2[k] -= colWidth2[k]
}
rowHeight2[num_level2_tile_rows_minus1[i]]=RowHeight[tileY])
for(k=0;k<=num_level2_tile_rows_minus1[i];k++){
rowHeigh2[k]=tile_level2_column_width_minus1[k]+1
rowHeight2[k] -= rowHeight2[k]
}
}
for(colBd2[0]=0,k=0;k<=num_level2_tile_columns_minus1[i];k++)
colBd2[k+1]=colBd2[k]+colWidth2[k]
for(rowBd2[0]=0,k=0;k<=num_level2_tile_rows_minus1[i];k++)
rowBd2[k+1]=rowBd2[k]+rowHeight2[k]
numSplitTiles=(num_level2_tile_columns_minus1[i]+1)*(num_level2_tile_rows_minus1[i]+1)
for(k=0;k<numSplitTiles;k++){
tileX2=k%(num_level2_tile_columns_minus1[i]+1)
tileY2=k/(num_level2_tile_columns_minus1[i]+1)
TileColBd[tileIdx]=colBd[tileX]+colBd2[tileX2]
TileRowBd[tileIdx]=rowBd[tileY]+rowBd2[tileY2]
TileWidth[tileIdx]=colWidth2[tileX2]
TileHeight[tileIdx]=rowHeight2[tileY2]
tileIdx++
}
}
}
NumTilesInPic=tileIdx
【0121】
例示的なピクチャパラメータセットRBSPシンタックスは次の通りである。
【0122】
【表2】
【0123】
例示的なピクチャパラメータセットRBSPセマンティックは次の通りである。uniform_level2_tile_spacing_flag[i]は、第iのレベル1タイルのレベル2タイル列境界および同様に第iのレベル1タイルのレベル2タイル行境界がピクチャを横断して一様に分散されることを指定するために1に等しく設定される。uniform_level2_tile_spacing_flag[i]は、第iのレベル1タイルのレベル2タイル列境界および同様に第iのレベル1タイルのレベル2タイル行境界が、ピクチャを横断して一様に分散されないがシンタックス要素level2_tile_column_width_minus1[j]およびlevel2_tile_row_height_minus1[j]を使用して明示的にシグナリングされることを指定するために、0に等しく設定され得る。存在しないとき、uniform_level2_tile_spacing_flag[i]の値は1に等しいものと推測される。level2_tile_column_width_minus1[j]+1は、第iのレベル1タイルの第jのレベル2タイル列の幅をCTBの単位で指定する。level2_tile_row_height_minus1[j]+1は、第iのレベル1タイルの第jのタイルレベル2行の高さをCTBの単位で指定する。
【0124】
以下のことは、上述の態様の第3の特定の例示的な実施形態である。例示的なピクチャパラメータセットRBSPシンタックスは次の通りである。
【0125】
【表3】
【0126】
例示的なピクチャパラメータセットRBSPセマンティックは次の通りである。ビットストリーム適合は、以下の制約が適用されることを必要とし得る。値MinTileWidthは最小タイル幅を指定し、256ルーマサンプルに等しくなければならない。値MinTileHeightは最小タイル高さを指定し、64ルーマサンプルに等しくなければならない。最小タイル幅および最小タイル高さの値は、プロファイルおよびレベル定義に従って変化し得る。変数Level1TilesMayBeFurtherSplitは、次のように導出され得る。
Level1TilesMayBeFurtherSplit=0
for(i=0,!Level1TilesMayBeFurtherSplit && i=0;i<NumLevel1Tiles;i++)
if((ColWidth[i]*CtbSizeY>=(2*MinTileWidth))||(RowHeight[i]*CtbSizeY>=(2*MinTileHeight)))
Level1TilesMayBeFurtherSplit=1
【0127】
level2_tile_present_flagは、1つまたは複数のレベルタイルがもっと多くのタイルに分割されることを指定する。存在しないとき、level2_tile_present_flagの値は0に等しいものと推測される。level2_tile_split_flag[i]+1は、第iのレベル1タイルが2つ以上のタイルに分割されることを指定する。存在しないとき、level2_tile_split_flag[i]の値は0に等しいものと推測される。
【0128】
以下のことは、上述の態様の第4の特定の例示的な実施形態である。各タイルロケーションおよび各タイルサイズがシグナリングされ得る。そのようなタイル構造シグナリングをサポートするためのシンタックスは、以下で作表されるようなものであり得る。tile_top_left_address[i]およびtile_bottom_right_address[i]は、タイルによってカバーされる長方形エリアを示す、ピクチャ内のCTUインデックスである。これらのシンタックス要素をシグナリングするためのビット数は、ピクチャの中の最大個数のCTUを表すのに十分であるべきである。
【0129】
【表4】
【0130】
各タイルロケーションおよび各タイルサイズがシグナリングされ得る。そのようなタイル構造シグナリングをサポートするためのシンタックスは、以下で作表されるようなものであり得る。tile_top_left_address[i]は、ピクチャのCTUラスタ走査の順序における、タイルの中の最初のCTUのCTUインデックスである。タイル幅およびタイル高さがタイルのサイズを指定する。タイルサイズが共通のユニットを最初にシグナリングすることによって、これらの2つのシンタックス要素をシグナリングするときにいくつかのビットが節約され得る。
【0131】
【表5】
【0132】
代替として、シグナリングは次の通りであり得る。
【0133】
【表6】
【0134】
別の例では、各タイルサイズは次のようにシグナリングされ得る。フレキシブルタイル構造をシグナリングするために、各タイルのロケーションはシグナリングされなくてよい。代わりに、タイルを以前のタイルのすぐ右に置くべきかそれともすぐ下に置くべきかを指定するために、フラグがシグナリングされてよい。タイルが現在のタイルの右にしかあり得ないかまたは下にしかあり得ない場合、このフラグは存在しなくてよい。
【0135】
tile_x_offset[i]およびtile_y_offset[i]の値は、以下の順序付きステップによって導出され得る。
tile_x_offset[0]およびtile_y_offset[0]が0に等しく設定される。
maxWidthがtile_width[0]に等しく設定され、maxHeightがtile_height[0]に等しく設定される。
runningWidthがtile_width[0]に等しく設定され、runningHeightがtile_height[0]に等しく設定される。
lastNewRowHeightが0に等しく設定される。
TilePositionCannotBeInferred=falseである。
i>0に対して、以下のことが適用される。
値isRightを次のように設定させる。
runningWidth+tile_width[i]<=PictureWidthの場合、isRight==1であり、
他の場合、isRight==0である。
値isBelowを次のように設定させる。
runningHeight+tile_height[i]<=PictureHeightの場合、isBelow==1であり、
他の場合、isBelow==0である。
isRight==1 && isBelow==1の場合、TilePositionCannotBeInferred=trueである。
isRight==1 && isBelow==0の場合、以下のこと、すなわち、
right_tile_flag[i]=1、
tile_x_offset[i]=runningWidth、
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight、
lastNewRowHeight=(runningWidth==maxWidth) ? 0 : lastNewRowHeightが適用され、
そうではなく、isRight==0 && isBelow==1の場合、以下のこと、すなわち、
right_tile_flag[i]=0、
tile_y_offset[i]=runningHeight、
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]、
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeightが適用され、
そうではなく、isRight==1 && isBelow==1 && right_tile_flag[i]==1の場合、以下のこと、すなわち、
tile_x_offset[i]=runningWidth、
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight、
lastNewRowHeight=(runningWidth==maxWidth) ? 0 : lastNewRowHeightが適用され、
他の場合(すなわち、isRight==1 && isBelow==1 && right_tile_flag[i]==0)、以下のこと、すなわち、
tile_y_offset[i]=runningHeight、
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]、
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeightが適用され、
right_tile_flag[i]==1の場合、以下のこと、すなわち、
runningWidth=runningWidth+tile_width[i]が適用され、
runningWidth>maxWidthの場合、maxWidthをrunningWidthに等しく設定し、
runningHeightがtile_y_offset[i]+tile_height[i]に等しく、
他の場合(すなわち、right_tile_flag[i]==0)、以下のこと、すなわち、
runningHeight=runningHeight+tile_height[i]が適用され、
runningHeight>maxHeightの場合、maxHeightをrunningHeightに等しく設定し、
runningWidthがtile_x_offset[i]+tile_width[i]に等しい。
【0136】
前述のことは、擬似コードでは次のように記述され得る。
tile_x_offset[0]=0
tile_y_offset[0]=0
maxWidth=tile_width[0]
maxHeight=tile_height[0]
runningWidth=tile_width[0]
runningHeight=tile_height[0]
lastNewRowHeight=0
isRight=false
isBelow=false
TilePositionCannotBeInferred=false
for(i=1;i<num_tiles_minus2+2;i++){
TilePositionCannotBeInferred=false
isRight=(runningWidth+tile_width[i]<=PictureWidth) ? true : false
isbelow=(runningHeight+tile_height[i]<=PictureHeight) ? true : false
if(!isRight && !isBelow)
//エラー。この事例が発生してはならない。
if(isRight && isBelow)
TilePositionCannotBeInferred=true
if(isRight && !isBelow){
right_tile_flag[i]=true
tile_x_offst[i]=runningWidth
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight
lastNewRowHeight=tile_y_offset[i]
}
else if(!isRight && isBelow){
right_tile_flag[i]=false
tile_y_offset[i]=runningHeight
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeight
}
else if(right_tile_flag[i]){
tile_x_offst[i]=runningWidth
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight
lastNewRowHeight=tile_y_offset[i]
}
else{
tile_y_offset[i]=runningHeight
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeight
}
}
if(right_tile_flag[i]){
runningWidth += tile_width[i]
if(runningWidth>maxWidth)maxWidth=runningWidth
runningHeight=tile_y_offset[i]+tile_height[i]
}
else{
runningHeight += tile_height[i]
if(runningHeight>maxHeight)maxHeight=runningHeight
runningWidth=tile_x_offset[i]+tile_width[i]
}
【0137】
【表7】
【0138】
以下のことは、最後のタイルのサイズを導出する、擬似コードでの一実装形態である。
tile_x_offset[0]=0
tile_y_offset[0]=0
maxWidth=tile_width[0]
maxHeight=tile_height[0]
runningWidth=tile_width[0]
runningHeight=tile_height[0]
lastNewRowHeight=0
isRight=false
isBelow=false
TilePositionCannotBeInferred=false
for(i=1;i<num_tiles_minus2+2;i++){
currentTileWidth=(i==num_tiles_minus2+1) ? (PictureWidth-runningWidth)%PictureWidth : tile_width[i]
currentTileHeight=(i==num_tiles_minus2+1) ? (PictureHeight-runningHeight)%PictureHeight : tile_Height[i]
isRight=(runningWidth+currentTileWidth<=PictureWidth) ? true : false
isbelow=(runningHeight+currentTileHeight<=PictureHeight) ? true : false
if(!isRight && !isBelow)
//エラー。この事例が発生してはならない。
if(isRight && isBelow)
TilePositionCannotBeInferred=true
if(isRight && !isBelow){
right_tile_flag[i]=true
tile_x_offst[i]=runningWidth
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight
lastNewRowHeight=tile_y_offset[i]
}
else if(!isRight && isBelow){
right_tile_flag[i]=false
tile_y_offset[i]=runningHeight
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeight
}
else if(right_tile_flag[i]){
tile_x_offst[i]=runningWidth
tile_y_offset[i]=(runningWidth==maxWidth) ? 0 : lastNewRowHeight
lastNewRowHeight=tile_y_offset[i]
}
else{
tile_y_offset[i]=runningHeight
tile_x_offset[i]=(runningHeight==maxHeight) ? 0 : tile_x_offset[i-1]
lastNewRowHeight=(runningHeight==maxHeight && runningWidth==maxWidth) ? runningHeight : lastNewRowHeight
}
}
if(right_tile_flag[i]){
runningWidth += currentTileWidth
if(runningWidth>maxWidth)maxWidth=runningWidth
runningHeight=tile_y_offset[i]+currentTileHeight
}
else{
runningHeight += currentTileHeight
if(runningHeight>maxHeight)maxHeight=runningHeight
runningWidth=tile_x_offset[i]+currentTileWidth
}
【0139】
【表8】
【0140】
さらなるシグナリングビット節約のために、固有のタイルサイズの数が、ユニットタイルサイズの作表をサポートするためにシグナリングされ得る。タイルサイズは、次いで、インデックスのみによって参照され得る。
【0141】
【表9】
【0142】
図9は、例示的なビデオコーディングデバイス900の概略図である。ビデオコーディングデバイス900は、本明細書で説明するような開示する実施例/実施形態を実施するのに適している。ビデオコーディングデバイス900は、ダウンストリームポート920、アップストリームポート950、ならびに/またはネットワークを介してアップストリームおよび/もしくはダウンストリームにデータを通信するための送信機および/もしくは受信機を含むトランシーバユニット(Tx/Rx)910を備える。ビデオコーディングデバイス900はまた、データを処理するための論理ユニットおよび/または中央処理ユニット(CPU)、ならびにデータを記憶するためのメモリ932を含む、プロセッサ930を含む。ビデオコーディングデバイス900はまた、電気構成要素、光電気(OE:optical-to-electrical)構成要素、電気光(EO:electrical-to-optical)構成要素、ならびに/または電気通信ネットワーク、光通信ネットワーク、もしくはワイヤレス通信ネットワークを介したデータの通信のためにアップストリームポート950および/もしくはダウンストリームポート920に接続されたワイヤレス通信構成要素を備えてよい。ビデオコーディングデバイス900はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)デバイス960を含んでよい。I/Oデバイス960は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカーなどの、出力デバイスを含んでよい。I/Oデバイス960はまた、キーボード、マウス、トラックボールなどの、入力デバイス、および/またはそのような出力デバイスと相互作用するための対応するインターフェースを含んでよい。
【0143】
プロセッサ930は、ハードウェアおよびソフトウェアによって実装される。プロセッサ930は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装されてよい。プロセッサ930は、ダウンストリームポート920、Tx/Rx910、アップストリームポート950、およびメモリ932と通信している。プロセッサ930は、コーディングモジュール914を備える。コーディングモジュール914は、ビットストリーム500および/またはフレキシブルビデオタイリング方式800に従って区分される画像を採用し得る、方法100、1000、および1100、メカニズム600、ならびに/またはアプリケーション700などの、本明細書で説明される開示する実施形態を実施する。コーディングモジュール914はまた、本明細書で説明する任意の他の方法/メカニズムを実施し得る。さらに、コーディングモジュール914は、コーデックシステム200、エンコーダ300、および/またはデコーダ400を実装し得る。たとえば、コーディングモジュール914は、ピクチャを第1のレベルのタイルに区分することができ、第1のレベルのタイルを第2のレベルのタイルに区分することができる。コーディングモジュール914はまた、第1のレベルのタイルおよび第2のレベルのタイルの構成を示すように、サポートするデータをシグナリングすることができる。コーディングモジュール914は、本明細書で説明するような様々な使用事例に対して、異なる解像度におけるサブピクチャを組み合わせて単一のピクチャにするために、そのようなメカニズムを採用することをさらにサポートする。したがって、コーディングモジュール914は、ビデオコーディングデバイス900の機能を改善するとともに、ビデオコーディング技術に特有の問題に対処する。さらに、コーディングモジュール914は、異なる状態へのビデオコーディングデバイス900の変換をもたらす。代替として、コーディングモジュール914は、(たとえば、非一時的媒体上に記憶されるコンピュータプログラム製品として)メモリ932の中に記憶されプロセッサ930によって実行される命令として実施され得る。
【0144】
メモリ932は、ディスク、テープドライブ、ソリッドステートドライブ、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、3値連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの、1つまたは複数のメモリタイプを備える。メモリ932は、実行のためにプログラムが選択されるときにそのようなプログラムを記憶するために、またプログラム実行中に読み取られる命令およびデータを記憶するために、オーバーフローデータ記憶デバイスとして使用され得る。
【0145】
図10は、フレキシブルビデオタイリング方式800などのフレキシブルタイリング方式の構成をシグナリングする、例示的な方法1000のフローチャートである。方法1000は、方法100、メカニズム600、および/またはサポートするアプリケーション700を実行するとき、コーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス900などの、エンコーダによって採用され得る。さらに、方法1000は、デコーダ400などのデコーダへの送信のためにビットストリーム500を生成するために採用され得る。
【0146】
エンコーダが、複数の画像/ピクチャを含むビデオシーケンスを受信し、たとえば、ユーザ入力に基づいて、ビデオシーケンスをビットストリームの中に符号化すべきと決定すると、方法1000が開始し得る。一例として、ビデオシーケンス、したがって、画像は、複数の解像度で符号化され得る。ステップ1001において、ピクチャは、複数の第1のレベルのタイルに区分される。ステップ1003において、第1のレベルのタイルのサブセットも、複数の第2のレベルのタイルに区分される。いくつかの例では、サブセットの外側の第1のレベルのタイルは、第1の解像度におけるピクチャデータを含み、第2のレベルのタイルは、第1の解像度とは異なる第2の解像度におけるピクチャデータを含む。いくつかの例では、各第2のレベルのタイルは、ピクチャからのピクチャデータの単一のスライスを含む。いくつかの例では、第1のレベルのタイルおよび第2のレベルのタイルが、1つまたは複数のタイルグループに割り当てられる。(たとえば、第2のレベルのタイルを含む)対応するタイルグループの中のタイルは、ピクチャの長方形部分をカバーするように制約され得る。
【0147】
ステップ1005において、第1のレベルのタイルおよび第2のレベルのタイルは、ビットストリームの中に符号化される。さらに、採用されるフレキシブルタイリング方式の構成を示すために、分割指示がビットストリームの中に符号化される。分割指示は、第1のレベルのタイルのうちの少なくとも1つが複数の第2のレベルのタイルに分割されることを示してよい。いくつかの例では、分割指示は、レベル2タイル分割フラグとしてピクチャパラメータセットの中で符号化される。レベル2タイル分割フラグは、第2のレベルのタイルを作成するために区分される第1のレベルのタイルの各々に対して設定され得る。いくつかの例では、最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示すデータがビットストリームから除外される。なぜかと言うと、そのようなタイルはそれ以上分割されるには小さすぎ、したがって、分割がないことがタイルサイズから推測され得るからである。この手法は、符号化においてビットを節約することがあり、したがって、コーディング効率を高めることがある。いくつかの例では、タイルの構成は、区分された第1のレベルのタイルに対する第2のレベルのタイル行および第2のレベルのタイル列を符号化することによってシグナリングされ得る。たとえば、第2のレベルのタイル行および第2のレベルのタイル列は、ピクチャに関連するピクチャパラメータセットの中で符号化され得る。いくつかの例では、タイルの構成は、パラメータセットの中で第2のレベルのタイル行および第2のレベルのタイル列を符号化することによってシグナリングされ得る。第2のレベルのタイル行および第2のレベルのタイル列は、対応する第1のレベルのタイルに対する第2のレベルのタイルの構成を示してよい。いくつかの態様では、最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列は、ピクチャパラメータセットから除外され得る。なぜかと言うと、そのようなタイルはそれ以上分割されるには小さすぎ、したがって、第2のレベルのタイル列および第2のレベルのタイル行がないことが、タイルサイズから推測され得るからである。この手法は、符号化においてビットを節約することがあり、したがって、コーディング効率を高めることがある。
【0148】
ステップ1007において、ビットストリームは、要求時にデコーダに向かう通信のために記憶される。
【0149】
図11は、フレキシブルビデオタイリング方式800などのフレキシブルタイリング方式のシグナリングされた構成に基づいて画像を復号する、例示的な方法1100のフローチャートである。方法1100は、方法100、メカニズム600、および/またはサポートするアプリケーション700を実行するとき、コーデックシステム200、デコーダ400、および/またはビデオコーディングデバイス900などの、デコーダによって採用され得る。さらに、方法1100は、エンコーダ300などのエンコーダからビットストリーム500を受信すると採用され得る。
【0150】
デコーダが、たとえば、方法1000の結果として、ビデオシーケンスを表すコーディングされたデータのビットストリームを受信し始めると、方法1100が開始し得る。ビットストリームは、複数の解像度でコーディングされたビデオシーケンスからのビデオデータを含んでよい。ステップ1101において、ビットストリームは、たとえば、エンコーダまたは中間ファイルサーバから受信される。ビットストリームは、複数の第1のレベルのタイルに区分されたピクチャを含む符号化ビデオシーケンスを含む。第1のレベルのタイルのサブセットは、複数の第2のレベルのタイルにさらに区分される。いくつかの例では、各第2のレベルのタイルは、ピクチャからのピクチャデータの単一のスライスを含んでよい。いくつかの例では、サブセットの外側の第1のレベルのタイル(たとえば、第2のレベルのタイルに区分されない第1のレベルのタイル)は、第1の解像度におけるピクチャデータを含み、第2のレベルのタイルは、第1の解像度とは異なる第2の解像度におけるピクチャデータを含む。また、いくつかの例では、第2のレベルのタイルを含む対応するタイルグループの中のタイルが、ピクチャの長方形部分をカバーするように制約されるように、第1のレベルのタイルおよび第2のレベルのタイルは、1つまたは複数のタイルグループに割り当てられ得る。
【0151】
ステップ1103において、ビットストリームから分割指示が取得される。分割指示は、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す。したがって、分割指示は、ピクチャを区分するために使用されるタイリング方式の構成をシグナリングする働きをすることができる。いくつかの例では、分割指示は、レベル2タイル分割フラグの中でピクチャパラメータセットから取得される。たとえば、レベル2タイル分割フラグは、第2のレベルのタイルを作成するために区分される第1のレベルのタイルの各々に対して設定され得る。いくつかの例では、最小幅しきい値よりも小さい幅および最小高さしきい値よりも小さい高さを有する第1のレベルのタイルに対して、分割指示、および第1のレベルのタイルが第2のレベルのタイルに区分されるかどうかを明示的に示す他のデータが、ビットストリームから除外され得る。なぜかと言うと、そのようなタイルはそれ以上分割されるには小さすぎ、したがって、分割がないことがタイルサイズから推測され得るからである。この手法は、符号化においてビットを節約することがあり、したがって、コーディング効率を高めることがある。
【0152】
ステップ1105において、第1のレベルのタイルの構成および第2のレベルのタイルの構成が、たとえば、ステップ1103の分割指示に基づいて決定される。いくつかの例では、タイルに対する構成を決定するために、ビットストリームからの追加の情報が採用されてよい。たとえば、第2のレベルのタイル行および第2のレベルのタイル列は、区分された第1のレベルのタイルのためのビットストリームから取得され得る。第2のレベルのタイル行および第2のレベルのタイル列は、ピクチャに関連するピクチャパラメータセットから取得され得る。第1のレベルのタイルの構成および第2のレベルのタイルの構成は、第2のレベルのタイル行および第2のレベルのタイル列(たとえば、ならびに第1のレベルのタイルに対する類似の行および列データ)に基づいて決定され得る。いくつかの例では、最小幅しきい値の2倍よりも小さい幅および最小高さしきい値の2倍よりも小さい高さを有する区分された第1のレベルのタイルに対して、第2のレベルのタイル行および第2のレベルのタイル列は、ピクチャパラメータセットから除外され得る。なぜかと言うと、そのようなタイルはそれ以上分割されるには小さすぎ、したがって、第2のレベルのタイル列および第2のレベルのタイル行がないことが、タイルサイズから推測され得るからである。この手法は、ビットストリーム符号化においてビットを節約することがあり、したがって、コーディング効率を高めることがある。
【0153】
ステップ1107において、第1のレベルのタイルおよび第2のレベルのタイルは、分割指示、タイル行データ、タイル列データ、および/または本明細書で説明するような他の構成データに従って決定されるような、第1のレベルのタイルの構成および第2のレベルのタイルの構成に基づいて復号される。ステップ1109において、再構成ビデオシーケンスが、復号された第1のレベルのタイルおよび第2のレベルのタイルに基づいて表示のために生成され得る。
【0154】
図12は、フレキシブルビデオタイリング方式800などのフレキシブルタイリング方式を採用することによってビデオシーケンスをコーディングするための、例示的なシステム1200の概略図である。システム1200は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディングデバイス900などの、エンコーダおよびデコーダによって実施され得る。さらに、システム1200は、方法100、1000、1100、メカニズム600、および/またはアプリケーション700を実施するときに採用され得る。システム1200はまた、データをビットストリーム500などのビットストリームの中に符号化し得、ユーザへの表示のためにそのようなビットストリームを復号し得る。
【0155】
システム1200はビデオエンコーダ1202を含む。ビデオエンコーダ1202は、ピクチャを複数の第1のレベルのタイルに区分し、かつ第1のレベルのタイルのサブセットを複数の第2のレベルのタイルに区分するための、区分モジュール1201を備える。ビデオエンコーダ1202は、第1のレベルのタイルおよび第2のレベルのタイルをビットストリームの中に符号化し、かつ分割指示をビットストリームの中に符号化するための、符号化モジュール1205をさらに備え、分割指示は、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す。ビデオエンコーダ1202は、デコーダに向かう通信のためにビットストリームを記憶するための記憶モジュール1207をさらに備える。ビデオエンコーダ1202は、デコーダに向かってビットストリームを送信するための送信モジュール1209をさらに備える。ビデオエンコーダ1202は、方法1000のステップのうちのいずれかを実行するようにさらに構成され得る。
【0156】
システム1200はまた、ビデオデコーダ1210を含む。ビデオデコーダ1210は、複数の第1のレベルのタイルに区分されたピクチャを含むビットストリームを受信するための受信モジュール1211を備え、第1のレベルのタイルのサブセットは、複数の第2のレベルのタイルにさらに区分される。ビデオデコーダ1210は、ビットストリームから分割指示を取得するための取得モジュール1213をさらに備え、分割指示は、第1のレベルのタイルのうちの少なくとも1つが第2のレベルのタイルに分割されることを示す。ビデオデコーダ1210は、分割指示に基づいて第1のレベルのタイルの構成および第2のレベルのタイルの構成を決定するための決定モジュール1215をさらに備える。ビデオデコーダ1210は、第1のレベルのタイルの構成および第2のレベルのタイルの構成に基づいて第1のレベルのタイルおよび第2のレベルのタイルを復号するための復号モジュール1217をさらに備える。ビデオデコーダ1210は、復号された第1のレベルのタイルおよび第2のレベルのタイルに基づいて表示のために再構成ビデオシーケンスを生成するための生成モジュール1219をさらに備える。ビデオデコーダ1210は、方法1100のステップのうちのいずれかを実行するようにさらに構成され得る。
【0157】
第1の構成要素と第2の構成要素との間にライン、トレース、または別の媒体を除いて介在する構成要素がないとき、第1の構成要素は第2の構成要素に直接結合される。第1の構成要素と第2の構成要素との間にライン、トレース、または別の媒体以外の介在する構成要素があるとき、第1の構成要素は第2の構成要素に間接的に結合される。「結合される(coupled)」という用語およびその変形は、直接結合されることと間接的に結合されることの両方を含む。「約(about)」という用語の使用は、別段に明記されていない限り後続の数の±10%を含む範囲を意味する。
【0158】
本明細書に記載する例示的な方法のステップが、説明する順序で実行されることを必ずしも必要とされるとは限らないことも理解されたく、そのような方法のステップの順序は、単に例であるものと理解されるべきである。同様に、そのような方法の中に追加のステップが含められてよく、本開示の様々な実施形態と一致する方法の中で、いくつかのステップが除外されてよくまたは組み合わせられてよい。
【0159】
本開示の中でいくつかの実施形態が提供されているが、開示するシステムおよび方法が、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形態で具現され得ることが理解され得る。本例は、限定的ではなく例示的と見なされるべきであり、その意図は、本明細書で与えられる詳細に限定されるべきでない。たとえば、様々な要素または構成要素が組み合わせられてよく、または別のシステムの中で統合されてよく、あるいはいくつかの特徴が除外されてよく、または実施されなくてよい。
【0160】
加えて、様々な実施形態において個別または別個として説明および図示される技法、システム、サブシステム、および方法は、組み合わせられてよく、または本開示の範囲から逸脱することなく、他のシステム、構成要素、技法、もしくは方法と統合されてよい。変更、置換、および改変の他の例は、当業者によって確認可能であり、本明細書で開示する趣旨および範囲から逸脱することなく行われてよい。
【符号の説明】
【0161】
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 ビットストリーム
510 シーケンスパラメータセット(SPS)
512 ピクチャパラメータセット(PPS)
514 タイルグループヘッダ
520 画像データ
523 タイル
600 メカニズム
601,603,605,607 タイル
610 エクストラクタトラック
611 第1の解像度
612 第2の解像度
700 ビデオ会議アプリケーション
701 話している参加者
703 他の参加者
800 フレキシブルビデオタイリング方式
801 第1のレベルのタイル
803 第2のレベルのタイル
900 ビデオコーディングデバイス
910 トランシーバユニット(Tx/Rx)
914 コーディングモジュール
920 ダウンストリームポート
930 プロセッサ
932 メモリ
950 アップストリームポート
960 入力および/または出力(I/O)デバイス
1000 動作方法
1100 動作方法
1200 システム
1201 区分モジュール
1202 ビデオエンコーダ
1205 符号化モジュール
1207 記憶モジュール
1209 送信モジュール、送信機
1210 ビデオデコーダ
1211 受信モジュール、受信機
1213 取得モジュール
1215 決定モジュール
1215 復号モジュール
1219 生成モジュール
図1
図2
図3
図4
図5
図6A
図6B
図6C
図6D
図6E
図7
図8A
図8B
図9
図10
図11
図12
【外国語明細書】