関連出願の説明
[0001]本願は、2016年12月19日に出願された米国特許仮出願第62/436,319号の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
[0002]本開示は、ビデオ符号化および復号に関する。
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲーム機、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4、パート10、アドバンストビデオコーディング(AVC)によって定義される規格、現在開発中の高効率ビデオコーディング(HEVC)規格、およびそのような規格の拡張に記載されているものなどの、ビデオ圧縮技法をインプリメントする。ビデオデバイスは、このようなビデオ圧縮技法をインプリメントすることによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測(prediction)を実行する。ブロックベースのビデオコーディングでは、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)が、ビデオブロックに区分化され得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対する空間的予測、または他の参照ピクチャ内の参照サンプルに対する時間的予測を使用し得る。空間的または時間的予測は、コーディングされるべきブロックについての予測ブロック(predictive block)をもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの間の差分を示す。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差係数が得られ得、その後、それは量子化され得る。
[0005]一般に、本開示の態様は、線形モデル(LM:linear-model)予測モードのために、隣接するルーマサンプルをダウンサンプリングするための技法に向けられる。より詳細に説明されるように、ビデオエンコーダまたはビデオデコーダは、LM予測モードでクロマ予測ブロックを構成(constructing)するためのダウンサンプリングの一部として、隣接するルーマサンプルをフェッチするように構成(configured)され得る。いくつかの例では、ビデオエンコーダまたはビデオデコーダは、LM予測モードでクロマ予測ブロックを構成するためのダウンサンプリングの一部として、ある特定の(certain)隣接するルーマサンプルをフェッチしないように構成され得る。ある特定の隣接するルーマサンプルをフェッチしないことによって、例となる技法は、効率的な処理およびメモリ帯域幅利用を促進し得る。
[0006]一例では、本開示は、ビデオデータを復号する方法を説明し、方法は、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを備え、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し(exclude luma samples that are above and left of a top-left luma sample of the luma block)、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされた(downsampled)ルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号することとを備える。
[0007]一例では、本開示は、ビデオデータを復号するためのデバイスを説明し、デバイスは、ビデオデータメモリと、固定機能回路またはプログラマブル回路のうちの少なくとも1つを備えるビデオデコーダとを備える。ビデオデコーダは、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをビデオデータメモリからフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを備え、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号することとを行うように構成される。
[0008]一例では、本開示は、ビデオデータを符号化する方法を説明し、方法は、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを備え、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化することとを備える。
[0009]一例では、本開示は、ビデオデータを符号化するためのデバイスを説明し、デバイスは、ビデオデータメモリと、固定機能回路またはプログラマブル回路のうちの少なくとも1つを備えるビデオエンコーダとを備える。ビデオエンコーダは、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをビデオデータメモリからフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを備え、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し、決定された隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化することとを行うように構成される。
[0010]一例では、本開示は、ビデオデータを復号する方法を説明し、方法は、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを備え、ルーマブロックからしきい値数のサンプルよりも左にあり(more than a threshold number of samples left)かつルーマブロックの左上ルーマサンプルより下にある(and below a top-left luma sample of the luma block)ルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にある(that is the threshold number of samples left of)ダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号することとを備える。
[0011]一例では、本開示は、ビデオデータを復号するためのデバイスを説明し、デバイスは、ビデオデータメモリと、固定機能回路またはプログラマブル回路のうちの少なくとも1つを備えるビデオデコーダとを備える。ビデオデコーダは、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを備え、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号することとを行うように構成される。
[0012]一例では、本開示は、ビデオデータを符号化する方法を説明し、方法は、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを備え、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化することとを備える。
[0013]一例では、本開示は、ビデオデータを符号化するためのデバイスを説明し、デバイスは、ビデオデータメモリと、固定機能回路またはプログラマブル回路のうちの少なくとも1つを備えるビデオエンコーダとを備える。ビデオエンコーダは、クロマブロックに対応するルーマブロックを決定することと、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチすることと、ここにおいて、フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを備え、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外し、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定することと、ここにおいて、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応し、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定することと、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定することと、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化することとを行うように構成される。
[0014]本開示の1つまたは複数の態様の詳細は、添付の図面および以下の説明において示される。本開示の他の特徴、目的、および利点が、説明および図面から、および特許請求の範囲から明らかになるであろう。
[0015]図1は、本開示で説明される技法を利用し得る、例となるビデオコーディングシステムを例示するブロック図である。
[0016]図2は、本開示で説明される技法をインプリメントし得る、例となるビデオエンコーダを例示するブロック図である。
[0017]図3は、本開示で説明される技法をインプリメントし得る、例となるビデオデコーダを例示するブロック図である。
[0018]図4は、ルーマおよびクロマサンプルの公称垂直方向および水平方向の相対的なロケーション(nominal vertical and horizontal relative locations)を例示する概念図である。
[0019]図5は、ダウンサンプリングされた、再構成されたルーマブロックをスケーリングするために使用されるスケーリングパラメータが導出される、例となるロケーションを例示する概念図である。
[0020]図6は、予測ブロックを生成するためにルーマブロックのサンプルをダウンサンプリングするためのルーマ位置およびクロマ位置の例を例示する概念図である。
[0021]図7は、予測ブロックを生成するためにルーマブロックのサンプルをダウンサンプリングするためのルーマ位置およびクロマ位置の別の例を例示する概念図である。
[0022]図8Aは、ダウンサンプリングにおいて使用される隣接するサンプルを例示する概念図である。
[0022]図8Bは、ダウンサンプリングにおいて使用される隣接するサンプルを例示する概念図である。
[0022]図8Cは、ダウンサンプリングにおいて使用される隣接するサンプルを例示する概念図である。
[0022]図8Dは、ダウンサンプリングにおいて使用される隣接するサンプルを例示する概念図である。
[0023]図9は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。
[0024]図10は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。
[0025]図11Aは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。
[0025]図11Bは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。
[0026]図12Aは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。
[0026]図12Bは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。
[0027]図13は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。
[0028]図14は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。
[0029]図15Aは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。
[0029]図15Bは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。
[0030]図16Aは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。
[0030]図16Bは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。
[0031]図17は、現在のブロックの隣接ブロックを例示する概念図である。
[0032]図18は、ビデオデータを復号する例となる方法を例示するフローチャートである。
[0033]図19は、ビデオデータを符号化する例となる方法を例示するフローチャートである。
詳細な説明
[0034]本開示は、ビデオコーディングおよび圧縮のための技法を説明する。特に、本開示は、線形モデル(LM)予測ビデオコーディングモードのための技法を説明する。LM予測ビデオコーディングモードでは、クロマブロックは、スケーリングされた、ダウンサンプリングされた、再構成された対応するルーマブロックから予測される(すなわち、このスケーリングされた、ダウンサンプリングされた、再構成された対応するルーマブロックは、クロマブロックを予測するために使用される予測ブロックを形成する)。
[0035]いくつかの例では、再構成された対応するルーマブロックのダウンサンプリングは、フィルタリングを含む。本開示は、このようなフィルタリングを実行するための例となる方法を説明する。さらに、本開示で説明される技法はまた、LM予測モードで使用されるルーマサンプルが、異なるタイルに位置する状況にも適用し得る。
[0036]したがって、本開示で説明される技法は、線形モデル(LM)予測モードに関し、これは、ビデオコーディングにおける成分間の冗長性(inter component redundancy)を低減させるために使用される。本開示で説明される技法は、高効率ビデオコーディング(HEVC)ビデオコーディング規格の拡張または次世代のビデオコーディング規格のような、アドバンストビデオコーデックのコンテキストにおいて使用され得る。
[0037]LM予測符号化または復号を実行する際に、ビデオエンコーダまたはビデオデコーダは、それぞれ、ダウンサンプリングするために、ビデオデータメモリから隣接するルーマサンプルをフェッチして、ダウンサンプリングされた対応するルーマブロックをスケーリングするために使用されるスケーリングパラメータを決定する。隣接するルーマサンプルをダウンサンプリングするために使用されるフィルタタイプが、(例えば、コーディング回路のローカルメモリに)ローカルに記憶された隣接するルーマサンプルの範囲外にある隣接するルーマサンプルを使用する場合、処理時間およびメモリ帯域幅は、ビデオエンコーダまたはビデオデコーダが外部メモリからルーマサンプルを取り出すことによって浪費され得る。例えば、一般的なビデオコーディングではなく、ビデオコーディングの技術においては、LM予測モード動作を実行することが、追加の処理時間およびメモリ帯域幅を必要とし得る、メモリからルーマサンプル値をフェッチすることを必要とするという問題が存在し得る。本開示は、比較的高い量の処理時間およびメモリ帯域幅を必要とするであろうフェッチされるサンプル値の数を低減させるための例を説明する。
[0038]例として、ダウンサンプリングを実行するための隣接するルーマサンプルをフェッチする際に、ビデオエンコーダおよびビデオデコーダは、ある特定のルーマサンプル(例えば、ローカルメモリに記憶されていないルーマサンプルまたはまだ生成されていないルーマサンプル)を、フェッチすることから除外し得る。このようにして、一例では、フェッチすることは、ビデオエンコーダおよびビデオデコーダが、非ローカルメモリにアクセスすることを引き起こさない。むしろ、この例では、ビデオエンコーダまたはビデオデコーダは、例えば、LM予測モード動作における使用のために、ローカルメモリからのルーマサンプルのみをフェッチする。
[0039]いくつかの例では、ビデオエンコーダおよびビデオデコーダは、異なるフィルタを使用してダウンサンプリングを実行するように構成され得る。例えば、ビデオエンコーダおよびビデオデコーダは、除外される隣接するルーマサンプルのいずれも、第1のフィルタに従ってダウンサンプリングするために必要でないとき、第1のフィルタを適用し得る。しかしながら、第1のフィルタを適用することが、除外されたルーマサンプルをフェッチすることを必要とするであろう場合、ビデオエンコーダおよびビデオデコーダは、第1のフィルタとは異なる第2のフィルタを適用し得る。
[0040]図1は、本開示の技法を利用し得る、例となるビデオコーディングシステム10を例示するブロック図である。本明細書で使用される場合、「ビデオコーダ」という用語は、総称的に、ビデオエンコーダおよびビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、総称的に、ビデオ符号化またはビデオ復号を指し得る。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される様々な例に従って、線形モデル(LM)予測ベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。例えば、ビデオエンコーダ20およびビデオデコーダ30は、本開示で説明されるように、対応するルーマブロックのスケーリングされた、ダウンサンプリングされた、再構成されたルーマサンプルを利用して、クロマブロックをコーディングするように構成され得る。
[0041]図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成される符号化されたビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0042]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、車載コンピュータ、または同様のものを含む、幅広い範囲のデバイスを備え得る。
[0043]宛先デバイス14は、チャネル16を介して、ソースデバイス12から符号化されたビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に、符号化されたビデオデータを移動させることが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にする、1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線などの、ワイヤレスおよび/またはワイヤード通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(例えば、インターネット)などの、パケットベースのネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
[0044]別の例では、チャネル16は、ソースデバイス12によって生成される符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、例えば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、ブルーレイディスク、DVD、CD−ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の好適なデジタル記憶媒体などの、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
[0045]さらなる例では、チャネル16は、ソースデバイス12によって生成される符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、符号化されたビデオデータを宛先デバイス14に送信することが可能なサーバのタイプであり得る。例となるファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続記憶(NAS)デバイス、およびローカルディスクドライブを含む。
[0046]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。データ接続の例となるタイプは、ワイヤレスチャネル(例えば、Wi−Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、等)、またはファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適な両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0047]本開示の技法は、ワイヤレスアプリケーションまたは設定に限定されない。本技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、例えば、インターネットを介した、ストリーミングビデオ送信、データ記憶媒体上での記憶のためのビデオデータの符号化、データ記憶媒体上に記憶されたビデオデータの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話通信などのアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0048]図1に例示されるビデオコーディングシステム10は、単なる例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含むとは限らないビデオコーディング設定(例えば、ビデオ符号化またはビデオ復号)に適用し得る。いくつかの例では、データは、ローカルメモリから取り出されるか、ネットワーク上でストリーミングされるか、または同様のことが行われる。ビデオ符号化デバイスは、データを符号化してメモリに記憶し得、および/または、ビデオ復号デバイスは、メモリからデータを取り出して復号し得る。多くの例では、符号化および復号は、互いに通信しないが、単に、メモリへのデータを符号化し、および/またはメモリからデータを取り出して復号するデバイスによって実行される。
[0049]図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス(例えば、ビデオカメラ)、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからのビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのこのようなソースの組合せを含み得る。
[0050]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して、符号化されたビデオデータを宛先デバイス14に直接送信する。他の例では、符号化されたビデオデータはまた、復号および/または再生のための、宛先デバイス14による後のアクセスのために、記憶媒体またはファイルサーバ上に記憶され得る。
[0051]図1の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16上で、符号化されたビデオデータを受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
[0052]ビデオエンコーダ20およびビデオデコーダ30は、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、またはこれらの任意の組合せなどの、様々な好適な処理回路(例えば、固定機能回路および/またはプログラマブル回路)のうちの任意のものによって形成される1つまたは複数のプロセッサによって、それぞれインプリメントされ得る。本技法が部分的にソフトウェアにおいてインプリメントされる場合、デバイスは、好適な非一時的なコンピュータ可読記憶媒体にソフトウェアのための命令を記憶し得、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。前述の任意のもの(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せ、等を含む)は、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、これらのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(CODEC)の一部として一体化され得る。
[0053]本開示は、概して、ビデオエンコーダ20が、ビデオデコーダ30のような別のデバイスに、ある特定の情報を「シグナリングすること」または「送信すること」に言及し得る。「シグナリングすること」または「送信すること」という用語は、概して、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。このような通信は、リアルタイムで、またはほぼリアルタイムで行われ得る。代替として、このような通信は、ある長さの時間にわたって行われ得、例えば、符号化時に、符号化されたビットストリームにおいて、コンピュータ可読記憶媒体にシンタックス要素を記憶しているときに行われ得、その後、それは、この媒体に記憶された後の任意の時間において、復号デバイスによって取り出され得る。
[0054]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、ビデオ圧縮規格に従って動作する。ビデオコーディング規格の例は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、および、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。
[0055]加えて、新しいビデオコーディング規格、すなわち高効率ビデオコーディング(HEVC)が、ITU−Tビデオコーディングエキスパートグループ(VCEG)と、ISO/IECモーションピクチャエキスパートグループ(MPEG)とのビデオコーディング共同研究部会(JCT−VC)によって、近年開発されてきた。以下、HEVC WDと呼ばれる、HEVCのドラフト仕様が、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。HEVC規格はまた、勧告ITU−T H.265および国際標準ISO/IEC23008−2において共同で提示されており、両方が「High efficiency video coding」と題し、両方が2014年10月に公表されている。
[0056]HEVCの仕様、およびフォーマットレンジ(RExt)拡張と、スケーラビリティ(SHVC)拡張と、マルチビュー(MV−HEVC)拡張とを含むその拡張は、http://phenix.int-evry.fr/jct/doc_end_user/documents/18_Sapporo/wg11/JCTVC-R1013-v6.zipから入手可能である。
[0057]ビデオコーディングは、色空間およびカラーフォーマットに基づいて実行され得る。例えば、カラービデオは、マルチメディアシステムにおいて重要な役割を果たし、そこで、様々な色空間が、色を効率的に表すために使用される。色空間は、複数の成分を使用して数値で色を指定する。よく知られている色空間が、RGB色空間であり、ここで、色は、3原色成分値(すなわち、赤、緑および青)の組合せとして表される。カラービデオ圧縮については、A. FordおよびA. Robertsの「Colour space conversions」、ウェストミンスター大学、ロンドン、Tech. Rep.,1998年8月に説明されているように、YCbCr色空間が広く使用されてきた。
[0058]YCbCrは、線形変換を介してRGB色空間から容易に変換され得、異なる成分間の冗長性、すなわち、成分間冗長性(cross component redundancy)は、YCbCr色空間において著しく低減される。YCbCrの1つの利点は、Y信号が輝度情報(luminance information)を伝達するので、白黒テレビとの後方互換性である。加えて、クロミナンス帯域幅は、RGBにおいてサブサンプリングすることよりも主観的影響(subjective impact)が著しく少ない状態で(with)、4:2:0のクロマサンプリングフォーマットでCbおよびCr成分をサブサンプリングすることによって低減され得る。これらの利点ゆえに、YCbCrは、ビデオ圧縮での主要な色空間とされてきた。また、ビデオ圧縮において使用される、YCoCgなどの他の色空間も存在する。本開示では、使用される実際の色空間にかかわらず、Y、Cb、Crが、ビデオ圧縮方式における3つの色成分を表すために使用される。
[0059]4:2:0サンプリングでは、2つのクロマアレイの各々は、ルーマアレイの半分の高さおよび半分の幅を有する。ピクチャにおけるルーマおよびクロマサンプルの公称の垂直方向および水平方向の相対的なロケーションが、図4に示される。
[0060]HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、典型的に、一連のピクチャを含む。ピクチャは、「フレーム」とも呼ばれ得る。ピクチャは、SL、SCb、およびSCrで示される、3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルはまた、本明細書では「クロマ」サンプルとも呼ばれ得る。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0061]ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルの1つのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、これらコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれ得る。HEVCのCTUは、H.264/AVCなどの、他の規格のマクロブロックに大まかに類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるわけではなく、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタースキャンにおいて連続的に並べられた整数の数のCTUを含み得る。
[0062]コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するために、CTUのコーディングツリーブロックに対して4分木区分化を再帰的に実行し得、それがこの「コーディングツリーユニット」という名前の由来である。コーディングブロックは、サンプルのNxNブロックである。CUは、ルーマサンプルアレイと、Cbサンプルアレイと、Crサンプルアレイとを有するピクチャについての、ルーマサンプルの1つのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、これらコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUのコーディングブロックを、1つまたは複数の予測ブロックに区分化し得る。予測ブロックは、それに対して同じ予測が適用される、サンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ピクチャについての、ルーマサンプルの1つの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、これら予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUの各PUのルーマ、CbおよびCr予測ブロックについての、予測ルーマ、CbおよびCrブロックを生成し得る。
[0063]ビデオエンコーダ20は、PUについての予測ブロックを生成する(例えば、決定する)ために、いくつかの例として、イントラ予測、インター予測、または線形モデル(LM)予測を使用し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0064]ビデオエンコーダ20が、PUの予測ブロックを生成する(例えば、決定する)ためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために、単予測(uni-prediction)または双予測(bi-prediction)を使用し得る。ビデオエンコーダ20がPUについての予測ブロックを生成するために単予測(uni-prediction)を使用するとき、PUは、単一の(single)動きベクトル(MV)を有し得る。ビデオエンコーダ20がPUについての予測ブロックを生成するために双予測を使用するとき、PUは、2つのMVを有し得る。
[0065]ビデオエンコーダ20が、CUの1つまたは複数のPUについての予測ルーマ、CbおよびCrブロックを生成した後、ビデオエンコーダ20は、CUについてのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUについてのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUについてのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0066]クロマブロックの場合、イントラまたはインター予測のための予測ブロックを決定するのではなく、ビデオエンコーダ20は、LM予測モードでは、再構成された対応するルーマブロックに基づいて、予測ブロックを決定し得る。ビデオデコーダ30は、再構成された対応するルーマブロックに基づいて、予測ブロックを同様に(similarly)決定し得る。対応するルーマブロックは、現在のクロマブロックが決定されたユニット(例えば、コーディングユニットまたは予測ユニット)の一部であったルーマブロックを指す。ビデオエンコーダ20は、クロマブロックと、再構成された対応するルーマブロックから生成されたこの予測ブロックとの間の残差を決定し得る。
[0067]さらに、ビデオエンコーダ20は、CUのルーマ、CbおよびCr残差ブロックを、1つまたは複数のルーマ、CbおよびCr変換ブロックに分解するために、4分木区分化を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの1つの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、これら変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。したがって、CUの各TUは、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
[0068]ビデオエンコーダ20は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUについてのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUについてのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0069]係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、一般に、変換係数が量子化されて、変換係数を表すために使用されるデータ量をできる限り(possibly)低減させ、さらなる圧縮を提供するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行し得る。ビデオエンコーダ20は、ビットストリームにおいて、エントロピー符号化されたシンタックス要素を出力し得る。
[0070]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、ビデオデータの符号化された表現(encoded representation)を含み得る。例えば、ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々は、NALユニットヘッダを含み、生バイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPはゼロビットを含む。
[0071]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。例えば、第1のタイプのNALユニットは、ピクチャパラメータセット(PPS)のためのRBSPをカプセル化し得、第2のタイプのNALユニットは、コーディングされたスライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは、補足エンハンスメント情報(SEI)のためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
[0072]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を復号するために、ビットストリームをパースし得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されたプロセスの逆であり得る。例えば、ビデオデコーダ30は、現在のCUのPUについての予測ブロックを決定するために、PUのMVを使用し得る。別の例として、LM予測モードの場合、ビデオデコーダ30は、対応するルーマブロックの再構成されたサンプルに基づいて、クロマブロックについての予測ブロックを決定し得る。加えて、ビデオデコーダ30は、現在のCUのTUに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUに関連付けられた変換ブロックを再構成するために、変換係数ブロックに対して逆変換を実行し得る。
[0073]ビデオデコーダ30は、現在のCUのPUについての予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算すること(adding)によって、現在のCUのコーディングブロックを再構成し得る。ピクチャの各CUについてのコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。
[0074]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、線形モデル(LM)ベースのコーディングを実行するように構成され得る。以下は、LMベースの予測コーディングの説明である。例えば、コンプリメント間の冗長性(cross complement redundancy)は、YCbCr色空間では著しく低減されるが、3つの色成分間の相関は、依然として存在する。相関をさらに低減させることによってビデオコーディング性能を改善するための様々な方法が研究されてきた。
[0075]4:2:0クロマビデオコーディングでは、HEVC規格の開発中に、線形モデル(LM)予測モードと名付けられた方法がよく研究されてきた。http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=2196から入手可能であり、以下、JCTVC−E266と呼ばれる、J. Chen、V. Seregin、W.-J. Han、J.-S. Kim、B.-M. Joen、「CE6.a.4: Chroma intra prediction by reconstructed luma samples」、Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-E266, 5th Meeting:ジュネーブ、2011年3月16日〜23日を参照。
[0076]LM予測モードでは、クロマサンプルは、以下のように、線形モデルを使用することによって、同じブロックの再構成されたルーマサンプルに基づいて予測される:
ここで、predC(i,j)は、ブロック中のクロマサンプルの予測を表し、recL(i,j)は、同じブロックのダウンサンプリングされた再構成されたルーマサンプルを表す。パラメータαおよびβは、現在のブロックの周囲の因果関係のある(causal)再構成されたサンプル(例えば、隣接するルーマサンプル)から導出される。N×Nによってクロマブロックサイズを示し、このとき(then)、iとjの両方は、[0、N)の範囲内にある。
[0077]式(1)におけるパラメータαおよびβは、現在のブロックの周りの隣接する再構成されたルーマサンプルとクロマサンプルとの間の回帰誤差(regression error)を最小化することによって導出される。
パラメータαおよびβは、以下のように求められる:
ここで、xiは、ダウンサンプリングされた再構成されたルーマ参照サンプルであり、yiは、再構成されたクロマ参照サンプルであり、Iは、参照サンプルの量(例えば、数)である。ターゲットN×Nクロマブロックについて、左と上の因果関係のあるサンプルの両方が利用可能であるとき、関与する(involved)サンプルの総数Iは、2Nに等しく、左のみまたは上のみの因果関係のあるサンプルが利用可能であるとき、関与するサンプルの総数Iは、Nに等しい。
[0078]図5は、ダウンサンプリングされた、再構成されたルーマブロックをスケーリングするために使用されるスケーリングパラメータがそこから導出される、例となるロケーションを例示する概念図である。例えば、図5は、4:2:0サンプリングの例を例示し、スケーリングパラメータは、αおよびβである。
[0079]一般に、LM予測モードが適用されるとき、ビデオエンコーダ20およびビデオデコーダ30は、以下のステップを呼び出し得る。ビデオエンコーダ20およびビデオデコーダ30は、隣接するルーマサンプルをダウンサンプリングし得る。ビデオエンコーダ20およびビデオデコーダ30は、線形パラメータ(すなわち、αおよびβ)(スケーリングパラメータとも呼ばれる)を導出し得る。ビデオエンコーダ20およびビデオデコーダ30は、現在のルーマブロックをダウンサンプリングし、ダウンサンプリングされたルーマブロックおよび線形パラメータ(すなわち、スケーリングパラメータ)から、予測(例えば、予測ブロック)を導出し得る。
[0080]ダウンサンプリングを行う様々な方法が存在し得る。以下は、ダウンサンプリングが実行され得る例となる方法を説明する。
[0081]JCTVC−E266では、上記で説明されたように、LM予測モードを実行するとき、ダウンサンプリングされた現在のルーマブロックと、ダウンサンプリングされた隣接するルーマブロックとが必要とされる。ダウンサンプリングされた現在のルーマブロックは、クロマコーディングのための(for)予測ブロックを導出するために使用され、一方(while)、ダウンサンプリングされた隣接するルーマブロックは、パラメータ(すなわち、αおよびβ)導出のために使用される。
[0082]クロマ成分の典型的なサンプリング比は、ルーマ成分のもの(that)の半分であり、4:2:0サンプリングでは、垂直方向における0.5サンプル位相差を有するので、現在のブロックの再構成されたルーマは、以下のように、クロマ信号のサイズおよび位相と一致する(match)ように、垂直方向においてダウンサンプリングされ、水平方向においてサブサンプリングされる:
ここで、RecLOrig[]は、元の再構成されたルーマサンプルを示す。
[0083]図6は、クロマブロックについての予測ブロックを生成するためにルーマブロックのサンプルをダウンサンプリングするためのルーマ位置およびクロマ位置の例を例示する概念図である。図6に図示されるように、塗りつぶされた(すなわち、黒一色の)三角形によって表されるクロマサンプルは、[1,1]フィルタを適用することによって、2つの塗りつぶされた円によって表される2つのルーマサンプルから予測される。[1,1]フィルタは、2タップフィルタの一例である。
[0084]隣接するルーマブロックのダウンサンプリングについて、隣接するサンプルが現在のルーマブロックの上にあるとき、ダウンサンプリングプロセスは、以下のように定義される:
[0085]隣接するサンプルが現在のルーマブロックの左にあるとき、ダウンサンプリングプロセスは、以下のように定義される:
[0086]2タップフィルタ、すなわち、[1,1]は、図6に例示された例で使用されたものと同じであり得る。
[0087]他のダウンサンプリング技法もまた、提案されている。http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=2979から入手可能であり、JCTVC−F502と呼ばれる、Yi-Jen Chiu、Yu Han、Lidong Xu、Wenhao Zhang、Hong Jiang、「Cross-channel techniques to improve intra chroma prediction」、Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-F502, 6th Meeting:トリノ、IT、2011年7月14日〜22日では、2タップフィルタを使用する代わりに、2次元6タップフィルタリングが、現在のルーマブロックと、隣接するルーマブロックとの両方に適用される。2次元フィルタ係数セットは、以下のとおりである:
[0088]換言すれば、ダウンサンプリングされたルーマサンプルは、以下の式(9)によって導出される:
[0089]図7は、予測ブロックを生成するためにルーマブロックのサンプルをダウンサンプリングするためのルーマ位置およびクロマ位置の別の例を例示する概念図である。図7に図示されるように、塗りつぶされた(すなわち、黒一色の)三角形によって表されるクロマサンプルは、6タップフィルタを適用することによって、6つの塗りつぶされた円によって表される6つのルーマサンプルから予測される。
[0090]1つのクロマサンプルの予測子(predictor)は、式(1)で定義されたように、線形関数を使用して導出されるので、6タップフィルタが適用されるとき、1つのクロマサンプルの予測子は、6つの隣接するルーマサンプルに依拠するということが分かるだろう(could)。式(1)と(9)を組み合わせると、その結果は、以下の式(10)となる:
[0091]以下の本文では、ダウンサンプリングされたサンプルrecL(i,j)は、(i,j)に位置するクロマサンプルについての、対応するダウンサンプリングされたルーマサンプルと名付けられる。
[0092]2016年9月15日に出願された米国特許仮出願第62/395,145号(以下、‘145出願)および2017年9月14日に出願された米国特許出願第15/705,029号(以下、‘029出願)では、より多くのダウンサンプリングフィルタが説明されており、図8A〜図8Dに示されるように、より多くの隣接するサンプルが線形モデルを導出するために使用され得る。一般に、図8A〜図8Dは、ダウンサンプリングのために使用される隣接するサンプルを例示する概念図である。図8A〜図8Dにおいて、塗りつぶされた円は、隣接するクロマサンプルの例である。それらの対応するルーマサンプルが、スケーリングパラメータを決定するために隣接するルーマサンプルをダウンサンプリングすることの一部として、ダウンサンプリングされ得る。
[0093]以下は、LMモードでのシグナリングを説明する。(両方が前掲の)JCTVC−E266およびJCTVC−F502では、LM予測が現在のブロックのために使用されるかどうかを示すために、フラグがシグナリングされる。‘145出願および‘029出願は、より多くのLM予測モードを説明しており、より高度に複雑な(sophisticated)シグナリング方法が説明され得る。LMモードおよび非LMモードは、順序付きリストにおいて編成される。モードの順序は、隣接ブロックのクロマイントラ予測モードに依存する。現在のブロックの順序付きリストにおけるコーディングされたクロマイントラ予測モードのインデックスは、ビデオエンコーダ20によってシグナリングされる。
[0094]例となる技法のいくつかには、問題が存在し得る。以下に、これらの可能性のある問題のいくつかを説明する。JCTVC−F502において提案されたLM予測モードで呼び出されるダウンサンプリングプロセスは、より効率的であり得るが、それはより多くの隣接ブロック(例えば、隣接するルーマサンプル)にアクセスし、これは、ハードウェア設計におけるラインバッファコストを増大させ得る。‘145出願および‘029出願で提案されたシグナリング方法は、コーディング性能を改善し得る。‘145出願および‘029出願における例となる技法はまた、モードリストを並べ替えること(reordering)のオーバーヘッドを含み得る。また、‘145出願および‘029出願における例となる技法は、より多くの隣接ブロック(例えば、隣接するルーマサンプル)にアクセスすることによって、ラインバッファコストを増大させ得る。
[0095]したがって、隣接するルーマサンプルをダウンサンプリングするためのいくつかの技法には、技術的問題が存在し得る。ビデオエンコーダ20およびビデオデコーダ30は、ビデオエンコーダ20およびビデオデコーダ30のそれぞれのもの(ones)にローカルなそれぞれのラインバッファをそれぞれ(each)含む。例えば、ビデオエンコーダ20の処理回路は、ビデオエンコーダ20のラインバッファにアクセスするために、ビデオエンコーダ20の外部にあるシステムバスを必要としなくなり得(may not need)、ビデオデコーダ30の処理回路は、ビデオデコーダ30のラインバッファにアクセスするために、ビデオデコーダ30の外部にあるシステムバスを必要としなくなり得る。ビデオエンコーダ20のラインバッファは、ビデオエンコーダ20と同じ集積回路(IC)チップ内にあり得、ビデオデコーダ30のラインバッファは、ビデオデコーダ30と同じICチップ内にあり得る。ビデオエンコーダ20およびビデオデコーダ30は、比較的短い時間量で(in)それぞれのラインバッファに記憶されている(stored)データをフェッチすることが可能であり得、なぜなら、ラインバッファにアクセスすることの可用性が、何らかの(some)他の構成要素がラインバッファにアクセスすることにより(due to)遅延されないからである(例えば、それぞれのラインバッファは、ビデオエンコーダ20およびビデオデコーダ30以外の構成要素によって使用され得ない)。
[0096]例えば、ビデオエンコーダ20を含むICまたはビデオデコーダ30を含むICの上に存在し得る全ての構成要素のうち、ビデオエンコーダ20またはビデオデコーダ30のみ、またはICの限られた数の構成要素が、ラインバッファにアクセスし得る。ビデオエンコーダ20またはビデオデコーダ30を含むIC上には、メモリが存在し得る。しかしながら、このメモリは、IC上の全ての構成要素によってアクセス可能であり得る。必ずしも全てではないが、いくつかの例では、ラインバッファは、IC上の全ての構成要素に利用可能なメモリとは異なり得、(適宜(as applicable))ビデオエンコーダ20またはビデオデコーダ30に利用可能であり、その他の構成要素には利用可能でないか、またはIC上の限られた数の構成要素に利用可能であり得る。ICの様々な構成要素は、システムバスを介してこのメモリにアクセスし得るが、ラインバッファにアクセスすることは、ビデオエンコーダ20またはビデオデコーダ30が同じシステムバスを使用することを必要としない場合がある(may)。
[0097]いくつかの例では、ビデオデコーダ30上などの、ラインバッファは、比較的少量の記憶空間を提供し得る。例えば、ラインバッファは、限られた数のルーマおよびクロマサンプル値を記憶し得、ピクチャ全体のルーマおよびクロマサンプル値を記憶するのに十分な記憶を提供し得ない場合がある。ビデオデコーダ30のためのラインバッファは、符号化または復号されている現在のブロックに近接している(例えば、隣接する)ルーマおよびクロマサンプル値などの、再構成されたルーマおよびクロマサンプル値を記憶し得る。ビデオデコーダ30がそのラインバッファからサンプル値をフェッチすることになる場合、ビデオデコーダ30は、比較的迅速におよび低い電力使用量(low power usage)でサンプル値をフェッチすることが可能であり得る。しかしながら、ビデオデコーダ30がそのラインバッファ内に記憶されていない(not stored)サンプル値をフェッチすることになる場合、ビデオデコーダ30は、サンプル値を取り出すために、ビデオデコーダ30の外部にあるシステムメモリにアクセスするのに電力および時間を消費し得る。したがって、可能であれば、ラインバッファメモリ以外のメモリへのビデオデコーダ30のアクセスを制限することに技術的利点が存在し得る。
[0098]ビデオエンコーダ20のラインバッファメモリは、必ずしも比較的少量の記憶空間に限定されるわけではない。しかしながら、ビデオデコーダ30は、ビデオエンコーダ20の逆の動作を実行するので、ビデオエンコーダ20が、ビデオデコーダ30のラインバッファ外にあるダウンサンプリングのためのサンプル値に依拠する場合、ビデオデコーダ30がどのくらい迅速にピクチャのブロックを再構成することが可能であるかに影響を及ぼす可能性がある。
[0099]ラインバッファの上記の説明は、理解を助けるために提供されており、限定的であると見なされるべきではない。本開示で説明される例となる技法は、より大きいラインバッファメモリが使用される例か、またはラインバッファメモリが使用されない例に適用可能であり得る。簡単にするために、図2および図3では、ビデオデータメモリへの参照が行われ、ビデオデータメモリの例が、ラインバッファである。しかしながら、ビデオデータメモリは、ラインバッファとは異なり得る。
[0100]より詳細に説明されるように、1つまたは複数の例となる技法では、LM予測モードのために隣接するルーマサンプルをダウンサンプリングする場合、ビデオエンコーダ20およびビデオデコーダ30は、ラインバッファの外部に記憶された隣接するルーマサンプルを除外するダウンサンプリングフィルタリング技法を利用し得る。いくつかの例では、スケーリングパラメータを決定するために隣接するルーマサンプルをダウンサンプリングするために使用されるルーマサンプルが、ラインバッファ内に記憶されている(are stored)場合には、ビデオエンコーダ20およびビデオデコーダ30は、第1のフィルタに従ってダウンサンプリングを実行し得る。しかしながら、スケーリングパラメータを決定するために隣接するルーマサンプルをダウンサンプリングするために使用されるルーマサンプルが、ラインバッファ内に記憶されていない(are not stored)場合、ビデオエンコーダ20およびビデオデコーダ30は、第2のフィルタに従ってダウンサンプリングを実行し得る。第2のフィルタは、第1のフィルタとは異なり得る。いくつかの例では、スケーリングパラメータを決定するために隣接するルーマサンプルをダウンサンプリングするために使用されるルーマサンプルが、ラインバッファ内に記憶されていない場合、ビデオエンコーダ20およびビデオデコーダ30は、第1のフィルタに従ってダウンサンプリングを実行し得るが、ビデオエンコーダ20またはビデオデコーダ30の外部にあるメモリからそれらのルーマサンプル値をフェッチするのではなく、ラインバッファに記憶されていない値についてのルーマサンプル値を生成する。
[0101]以下は、本開示による技法を説明する。例となる技法は、上述された問題に対処し得るが、必ずしも上述された問題に対処する必要はない。項目別(itemized)の技法は、個々に適用され得る。代替として、それらの任意の組合せが適用され得る。
[0102]例となる技法では、現在のブロックの左上ルーマサンプルの座標(位置)は、(x0,y0)によって示される。例となる技法は、値がダウンサンプリングのためにフェッチされるルーマサンプルからルーマサンプルを除外することで説明される。簡単にするために、除外されるルーマサンプルは、現在のブロックの左上ルーマサンプルを基準にして(with respect to)説明される。
[0103]クロマサンプルについての対応するダウンサンプリングされた(downsampled)ルーマサンプルの導出プロセス中、フェッチされるルーマサンプルは、クロマサンプルの位置に依存して所与のエリアに制限される。一例として、クロマサンプルの対応するダウンサンプリングされたルーマサンプルの導出プロセス中、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルは、現在のブロックの上に隣接するルーマサンプルのダウンサンプリングプロセスに関与しない(is not involved in)。例えば、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチする際に、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し、ルーマブロックよりも上にあるルーマサンプルをフェッチし得る。
[0104]図9は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。図10は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。図9および図10は、JCTVC−F502におけるダウンサンプリング方法(図9)と、本開示で説明される技法(図10)との間の違いを示す。最も左の上のダウンサンプリングされた隣接するルーマサンプルを得るために、JCTVC−F502は、プロセスが現在のブロックに対して左上にある2つのルーマサンプルをフェッチするであろうことを説明し、一方、ビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される例となる技法によると、これらの2つのルーマサンプルをフェッチしない場合がある。
[0105]一例では、クロマサンプルの対応するダウンサンプリングされた(downsampled)ルーマサンプルを導出するためのフィルタ長(length of the filter)(すなわち、フィルタが及ぶ(filter extends over)サンプルの数)は、フィルタリングプロセスが、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルを伴う(involve)だろうときより短い。換言すれば、ビデオエンコーダ20およびビデオデコーダ30は、どの隣接するルーマサンプルがダウンサンプリングに関与するかに基づいて、ダウンサンプリングプロセスのために異なるフィルタを利用し得る。
[0106]図11Aおよび図11Bは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。JCTVC−F502において提案されたダウンサンプリングフィルタは、図11Aに示されるように、フィルタリングプロセスに関与する、座標(x,y)、ここで、x<x0,y<y0、を有するルーマサンプルがないときに使用される。他方では、JCTVC−E266において提案されたダウンサンプリングフィルタは、図11Bに示されるように、JCTVC−F502フィルタリングプロセスに関与する、座標(x、y)、ここで、x<x0,y<y0、を有するルーマサンプルがあるときに使用される。x0およびy0の値は、ピクチャの一定の場所にある(in the certain of the picture)座標などの、ピクチャ内の座標の値であり得る。
[0107]一例では、クロマサンプルの対応するダウンサンプリングされたルーマサンプルを導出するためのフィルタは、フィルタリングプロセスが、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルを伴うか否かにかかわらず、同じである。しかしながら、フィルタリングプロセスが、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルを伴うとき、これらのルーマサンプルは、対応するロケーションからフェッチされる代わりに、隣り合うルーマサンプルによってパディングされる。
[0108]図12Aおよび図12Bは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。図12Aおよび図12Bでは、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルがフィルタリングプロセスに関与するか否かにかかわらず、JCTVC−F502において提案されるダウンサンプリングフィルタが常に使用される。しかし、座標(x,y)、ここで、x<x0およびy<y0、を有するルーマサンプルが関与するとき、これらのサンプルは、図12Bに示されるように、フェッチされる代わりに、パディングされる。式(11)は、数式の形でパディングプロセスを示す:
[0109]したがって、図10〜図12Bは、ルーマサンプルをダウンサンプリングするために、ビデオエンコーダ20およびビデオデコーダ30が、どの隣接するルーマサンプルをフェッチするかの例を例示する。例えば、フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプル(a plurality of luma samples that are above the luma block)を含み、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプル(luma samples that are above and left of the top-left luma sample of the luma block)を除外する。ビデオエンコーダ20およびビデオデコーダ30は、フェッチされた隣接するルーマサンプル(fetched neighboring luma samples)に基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る。ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応する。
[0110]例えば、図10、図11B、および図12Bは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルを例示する。図11Aおよび図12Aは、ルーマブロックよりも上にあるが、左上ルーマサンプルの真上にはない、ダウンサンプリングされたルーマサンプルを例示する。したがって、図10〜図12Bは、ビデオエンコーダ20およびビデオデコーダ30が、複数のダウンサンプリングされたルーマサンプルを決定し得る例となる方法を例示し、ここで、図10、図11B、および図12Bにおけるダウンサンプリングされたルーマサンプルは、複数のダウンサンプリングされたルーマサンプルのうちの1つであり、図11Aおよび図12Aにおけるダウンサンプリングされたルーマサンプルは、複数のダウンサンプリングされたルーマサンプルのうちの別の1つである。
[0111]図10、図11B、および図12Bに例示されるように、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応する。図10、図11B、および図12Bのダウンサンプリングされたルーマサンプルを生成するためにダウンサンプリングされるフェッチされた隣接するルーマサンプルは、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプル(luma samples that are above and left to a top-left luma sample of the luma block)を除外する。対照的に、図9のダウンサンプリングされたルーマサンプルを生成するためにダウンサンプリングされるフェッチされた隣接するルーマサンプルは、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを含む。いくつかの例では、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルは、ラインバッファメモリに記憶されていない場合がある。したがって、これらのルーマサンプルにアクセスすることは、処理および帯域幅非効率になり得る。したがって、例となる技法は、フェッチされた(fetched)ルーマサンプルから、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるサンプルを除外することによって、処理および帯域幅効率を促進し得る。
[0112]しかしながら、いくつかの例では、JCTVC−F502において説明されるフィルタに従ってダウンサンプリングするために必要な全てのルーマサンプルは、ラインバッファに記憶され得、このような例では、ビデオエンコーダ20およびビデオデコーダ30は、JCTVC−F502フィルタに従ってダウンサンプリングを実行するために必要な全ての隣接するルーマサンプルをフェッチし得る。JCTVC−F502のフィルタに従ってダウンサンプリングするために必要とされる全てのルーマサンプルが、(例えば、これらのルーマサンプルが、左上サンプルよりも上かつ左に位置するので)利用可能でない場合、ビデオエンコーダ20およびビデオデコーダ30は、JCTVC−F502のフィルタにおいて使用されるそれらとは異なるサンプルをフェッチし得る。JCTVC−F502のフィルタへの参照は、単なる一例として使用されており、本技法は、他のフィルタにも同様に適用可能であることが理解されるべきである。
[0113]図11Aに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。例えば、図11Aおよび図12Aでは、第1のフィルタは、ルーマブロックよりも上にある第1の行からの3つのルーマサンプルを利用し、第1の行よりも上にある第2の行からの3つのルーマサンプルを利用する。図11Aおよび図12Aでは、フェッチされた隣接するルーマサンプルの第1のセットは、例示されているダウンサンプリングされたルーマサンプルを生成するために利用される、例となるルーマサンプルである。
[0114]図10および図11Bに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要とされるとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2のフィルタを適用し得る。ビデオエンコーダ20またはビデオデコーダ30が第2のフィルタを適用するとき、ビデオエンコーダ20およびビデオデコーダ30は、第1のフィルタの使用が、左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルをフェッチすることをもたらすことになるということを、必ずしも(可能ではあるが)決定するとは限らないことが理解されるべきである。むしろ、第1のフィルタの使用が、左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルをフェッチすることをもたらすことになる状態では、ビデオエンコーダ20およびビデオデコーダ30は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチすることを必要としない、ダウンサンプリングのために(for)第2のフィルタを利用し得る。
[0115]例えば、図10および図11Bでは、第1のフィルタ(例えば、図11Aで使用されたもの)が使用された場合には、ビデオエンコーダ20およびビデオデコーダ30は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチすることを必要としたであろう。左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチすることを回避するために、ビデオエンコーダ20およびビデオデコーダ30は、第2のフィルタを適用し得る。いくつかの例では、第2のフィルタは、ルーマブロックよりも上にある第1の行からの3つ未満のルーマサンプル(例えば、図10では2つのルーマサンプル、および図11Bでは1つのルーマサンプル)を利用し、第1の行よりも上にある第2の行からの3つ未満のルーマサンプル(例えば、図10では2つのルーマサンプル、および図11Bでは1つのルーマサンプル)を利用する。
[0116]図10、図11A、および図11Bでは、ビデオエンコーダ20およびビデオデコーダ30は、ルーマサンプルをフェッチすることが、左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチすることをもたらすことになるかどうかに基づいて、異なるフィルタを利用し得る。しかしながら、例となる技法は、そのように限定されるものではない。
[0117]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、1つのフィルタを利用し得る。ダウンサンプリングのためにそのフィルタを使用することが、ビデオエンコーダ20およびビデオデコーダ30が、左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチすることをもたらすことになる状態では、左上ルーマサンプルよりも上かつ左にあるルーマサンプルをフェッチするのではなく、ビデオエンコーダ20およびビデオデコーダ30は、ルーマ値(例えば、上記で説明されたパディング値)を生成し得る。例えば、図12Bに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、フェッチすることなく、ルーマブロックの左上ルーマサンプルよりも上かつ左に位置するルーマサンプルに対応するルーマ値(例えば、パディング値)を生成し得る。ビデオエンコーダ20およびビデオデコーダ30は、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタ(例えば、JCTVC−F502からのフィルタ)を適用し得る。
[0118]上記は、ルーマブロックよりも上にある隣接するルーマサンプルをダウンサンプリングするための例を提供した。以下は、ルーマブロックの左にある隣接するルーマサンプルをダウンサンプリングするための例である。左に隣接するルーマサンプルをダウンサンプリングするための以下の例、およびルーマブロックよりも上にある隣接するルーマサンプルをダウンサンプリングするための上記の例は、共にまたは別々に使用され得る。
[0119]例えば、ビデオエンコーダ20およびビデオデコーダ30は、上に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成され得、左に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成されない場合がある。ビデオエンコーダ20およびビデオデコーダ30は、上に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成されない場合があり、左に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成され得る。ビデオエンコーダ20およびビデオデコーダ30は、上に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成され得、左に隣接するルーマサンプルをダウンサンプリングすることに関して本開示で説明される1つまたは複数の例となる技法を実行するように構成され得る。
[0120]一例として、左に隣接するルーマサンプルの場合、クロマサンプルの対応するダウンサンプリングされたルーマサンプルの導出プロセス中、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルは、現在のブロックの左の隣接するルーマサンプルのダウンサンプリングプロセスに関与しない。ここで、kは、0より大きい整数である。一例では、kは、4に等しい。
[0121]図13は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの例を例示する概念図である。図14は、ダウンサンプリングされたルーマサンプルを得るためにフェッチされるルーマサンプルの別の例を例示する概念図である。図13および図14は、k=4であるときの、それぞれ、JCTVC−F502ダウンサンプリング方法(図13)と、本開示で説明される技法(図14)との間の違いを示す。‘145出願および‘029出願に説明されているように、第2の列のダウンサンプリングされた左に隣接するルーマサンプルを得るために、JCTVC−F502におけるダウンサンプリング方法は、座標(x0−5,y0)および(x0−5,y0+1)を有する2つのルーマサンプルをフェッチすることになり、一方、ビデオエンコーダ20およびビデオデコーダ30は、本開示の例に従って、これら2つのルーマサンプルをフェッチしない場合がある。
[0122]一例では、クロマサンプルの対応するダウンサンプリングされたルーマサンプルを導出するためのフィルタ長(すなわち、フィルタが入力として使用したサンプルの数)は、フィルタリングプロセスが、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルを伴うときにより短い。
[0123]図15Aおよび図15Bは、異なる位置におけるダウンサンプリングされたサンプルについての異なるフィルタ長を例示する概念図である。JCTVC−F502において提案されたダウンサンプリングフィルタは、図15Aに示されるように、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルが、フィルタリングプロセスに関与しないときに使用される。他方では、JCTVC−E266において提案されたダウンサンプリングフィルタは、図15Bに示されるように、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルが、JCTVC−F502フィルタリングプロセスに関与するときに使用される。
[0124]一例では、クロマサンプルの対応するダウンサンプリングされたルーマサンプルを導出するためのフィルタは、フィルタリングプロセスが、座標(x,y)、ここで、x<x0−k、を有するルーマサンプルに関与するか否かにかかわらず、同じである。しかしながら、フィルタリングプロセスが、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルに関与するとき、これらのルーマサンプルは、対応するロケーションからフェッチされる代わりに、隣り合うルーマサンプルによってパディングされる。
[0125]図16Aおよび図16Bは、パディングされたサンプルを用いたフィルタリングを例示する概念図である。図16Aおよび図16Bでは、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルがフィルタリングプロセスに関与するか否かにかかわらず、JCTVC−F502において提案されたダウンサンプリングフィルタが常に使用される。しかし、座標(x,y)、ここで、x<x0−kおよびy>=y0、を有するルーマサンプルが関与するとき、これらのサンプルは、図16Bに示されるように、フェッチされる代わりに、パディングされる。式(11)は、数式の形でパディングプロセスを示す:
[0126]したがって、図14〜図16Bは、ルーマサンプルをダウンサンプリングするために、ビデオエンコーダ20およびビデオデコーダ30が、どの隣接するルーマサンプルをフェッチするかの例を例示する。例えば、フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを含み、ルーマブロックからしきい値数(例えば、k個)のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外する。ビデオエンコーダ20およびビデオデコーダ30は、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る。ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応する。
[0127]例えば、図14、図15B、および図15Bは、ルーマブロックから4つのサンプル左にあるダウンサンプリングされたルーマサンプルを例示し、この例では、ルーマブロックの左にあるサンプルのしきい値数は、4である(例えば、k=4)。したがって、図14、図15B、および図16Bは、フェッチされた隣接するルーマサンプルが、ルーマブロックの左にあるサンプルを含み、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルを除外し、ダウンサンプリングされたルーマサンプルのうちの1つが、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応する例を例示する。
[0128]図15Aおよび図16Aは、ルーマブロックの左にあるが、ルーマブロックからしきい値数のルーマサンプル左(threshold number of luma samples to the left)にない、ダウンサンプリングされたルーマサンプルを例示する。例えば、左にあるルーマサンプルのしきい値数が、それを超えるとルーマサンプルがフェッチすることから除外される、4である場合、図15Aおよび図16Aでは、ダウンサンプリングされたルーマサンプルは、ルーマブロックから2つのルーマサンプル左にあるように(例えば、ルーマブロックから2つのルーマサンプル左にある列において)例示される。したがって、図14〜図16Bは、ビデオエンコーダ20およびビデオデコーダ30が、複数のダウンサンプリングされたルーマサンプルを決定し得る例となる方法を例示し、ここで、図14、図15B、および図16Bにおけるダウンサンプリングされたルーマサンプルは、複数のダウンサンプリングされたルーマサンプルのうちの1つであり、図15Aおよび図16Aにおけるダウンサンプリングされたルーマサンプルは、複数のダウンサンプリングされたルーマサンプルのうちの別の1つである。
[0129]図14、図15B、および図15Bに例示されるように、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のルーマサンプル左にある、ダウンサンプリングされたルーマサンプルに対応する(例えば、しきい値数は4であるので、2列より多くの(more than two columns)ダウンサンプリングされたルーマサンプルに対応する)。図14、図15B、および図16Bのダウンサンプリングされたルーマサンプルを生成するためにダウンサンプリングされるフェッチされた隣接するルーマサンプルは、ルーマブロックからしきい値数(例えば、k=4個)のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外する。対照的に、図13のダウンサンプリングされたルーマサンプルを生成するためにダウンサンプリングされるフェッチされた隣接するルーマサンプルは、ルーマブロックからしきい値数のサンプルよりも左にあるルーマサンプルを含む。いくつかの例では、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルは、ラインバッファメモリに記憶されていない場合がある。したがって、これらのルーマサンプルにアクセスすることは、処理および帯域幅非効率になり得る。したがって、例となる技法は、フェッチすることから、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外することによって、処理および帯域幅効率を促進し得る。
[0130]しかしながら、いくつかの例では、JCTVC−F502において説明されるフィルタに従ってダウンサンプリングするために必要な全てのルーマサンプルは、ラインバッファに記憶され得、このような例では、ビデオエンコーダ20およびビデオデコーダ30は、JCTVC−F502フィルタに従ってダウンサンプリングを実行するために必要な全ての隣接するルーマサンプルをフェッチし得る。JCTVC−F502のフィルタに従ってダウンサンプリングするために必要な全てのルーマサンプルが、(例えば、これらのルーマサンプルが、ルーマブロックからしきい値数のサンプルよりも左かつルーマブロックの左上ルーマサンプルより下に位置するので)利用可能でない場合には、ビデオエンコーダ20およびビデオデコーダ30は、JCTVC−F502のフィルタにおいて使用されるそれらとは異なるサンプルをフェッチし得る。JCTVC−F502のフィルタへの参照は、単なる一例として使用されており、本技法は、他のフィルタにも同様に適用可能であることが理解されるべきである。
[0131]図15Aに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。第1のダウンサンプリングされたルーマサンプルは、ルーマブロックから第1の数の列左にある(first number of columns to the left of the luma block)列にあり得る。例えば、図15Aおよび図16Aでは、第1のフィルタは、ルーマブロックの左にある第1の行からの3つのルーマサンプルを利用し、第1の行の下にある第2の行からの3つのルーマサンプルを利用する。また、図15Aおよび図16Aでは、ダウンサンプリングされたルーマサンプルは、ルーマブロックから2列左にある列にある。図15Aおよび図16Aでは、フェッチされた隣接するルーマサンプルの第1のセットは、例示されているダウンサンプリングされたルーマサンプルを生成するために利用される、例となるルーマサンプルである。
[0132]図14および図15Bに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要とされたであろうとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2のフィルタを適用し得る。ビデオエンコーダ20またはビデオデコーダ30が第2のフィルタを適用するとき、ビデオエンコーダ20およびビデオデコーダ30は、第1のフィルタの使用が、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にある少なくとも1つのルーマサンプルをフェッチすることをもたらすことになるということを、必ずしも(可能ではあるが)決定するとは限らないことが理解されるべきである。むしろ、第1のフィルタの使用が、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にある少なくとも1つのルーマサンプルをフェッチすることをもたらすことになる状態では、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルをフェッチすることを必要としない第2のフィルタをダウンサンプリングのために利用し得る。
[0133]例えば、図14および図15Bでは、第1のフィルタ(例えば、図15Aで使用されたもの)が使用された場合には、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のルーマサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルをフェッチすることを必要としたであろう。ルーマブロックからしきい値数のルーマサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルをフェッチすることを回避するために、ビデオエンコーダ20およびビデオデコーダ30は、第2のフィルタを適用し得る。いくつかの例では、第2のフィルタは、ルーマブロックの左にある第1の行からの3つ未満のルーマサンプル(例えば、図14では2つのルーマサンプル、および図15Bでは1つのルーマサンプル)を利用し、第1の行よりも上にある第2の行からの3つ未満のルーマサンプル(例えば、図14では2つのルーマサンプル、および図15Bでは1つのルーマサンプル)を利用する。
[0134]図14、図15A、および図15Bでは、ビデオエンコーダ20およびビデオデコーダ30は、ルーマサンプルをフェッチすることが、ルーマブロックからしきい値数のルーマサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルをフェッチすることをもたらすことになるかどうかに基づいて、異なるフィルタを利用し得る。しかしながら、例となる技法は、そのように限定されるものではない。
[0135]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、1つのフィルタを利用し得る。ダウンサンプリングのためにそのフィルタを使用することが、ビデオエンコーダ20およびビデオデコーダ30が、ルーマブロックからしきい値数のルーマサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルをフェッチすることをもたらすことになる状態では、それらのルーマサンプルをフェッチするのではなく、ビデオエンコーダ20およびビデオデコーダ30は、ルーマ値(例えば、上記で説明されたパディング値)を生成し得る。例えば、図16Bに例示されるように、ビデオエンコーダ20およびビデオデコーダ30は、フェッチすることなく、ルーマブロックからしきい値数のルーマサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下に位置するルーマサンプルに対応するルーマ値(例えば、パディング値)を生成し得る。ビデオエンコーダ20およびビデオデコーダ30は、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタ(例えば、JCTVC−F502からのフィルタ)を適用し得る。
[0136]前述の技法は、上記で説明された特定のダウンサンプリングフィルタに限定されるものではなく、任意のダウンサンプリングフィルタと共に使用され得る。また、前述の技法は、yuv420クロマフォーマットのビデオ/画像コーディングに限定されるものではない。一例として、それらはまた、yuv422クロマフォーマットのビデオ/画像コーディングにおいて使用され得る。
[0137]LMモード(例えば、JCTVC−E266において提案されたLMモード、または‘145出願および‘029出願において提案された複数のLMモードのうちの1つなど)が使用されるかどうかを示すための、LM_flagと名付けられたグループ分けフラグ(grouping flag)が、適宜、ビデオエンコーダ20またはビデオデコーダ30によってコーディングされる。このフラグをコーディングするためのコンテキストは、1つまたは複数の隣接ブロックのコーディングされた/復号された(coded/decoded)LM_flagに依存し得る。
[0138]一例では、このようなフラグは、最初にコーディングされる。このフラグが、LMモードが使用されることを示す場合、LMモードのインデックスが、ビデオエンコーダ20によって符号化されるビットストリームにおいてさらにシグナリングされ得る。そうでない場合、LMモードを除外した他のクロマモードが、さらにシグナリングされ得る。例として、LM_flagには3つのコンテキストが存在し得る:LM ctx[0]、LM ctx[1]、およびLM ctx[2]。変数ctxは、ctx=LM_flag_A+LM_flag_Bとして計算され、ここで、LM_flag_AおよびLM_flag_Bは、隣接ブロックのLM_flagである。一例では、それぞれ、AおよびBによって示される隣接ブロックが、図17に示される(例えば、A、A0、A1、B、B0、B1、およびB2)。図17は、現在のブロックの隣接ブロックを例示する概念図である。
[0139]さらに一例では、ブロックX(Xは、隣接ブロックのうちの1つである)が、イントラ予測によってコーディングされないか、またはそれが存在しない(すなわち、利用可能でない)とき、LM_flag_Xは、0に等しく設定され、ここで、Xは、AまたはBである。さらに一例では、隣接ブロックが現在のブロックよりも上に位置するとき、隣接ブロックは、同じLCU内にあるべきことが必要とされ得る。隣接ブロックが、現在のLCU外にある場合、それは利用不可能として扱われ得る。
[0140]したがって、一例では、ビデオデコーダ30は、ルーマブロックとクロマブロックとを含む現在のブロックについてのフラグを復号し得る。フラグ(例えば、LM_flag)は、LM予測コーディングがクロマブロックに対してイネーブルにされる(is enabled for)ことを示す。ビデオデコーダ30は、LM予測コーディングが隣接ブロックに対してイネーブルにされるかどうかを示す1つまたは複数のフラグを備えるコンテキストに基づいて、フラグを復号するように構成され得る。同様に、ビデオエンコーダ20は、ルーマブロックとクロマブロックとを含む現在のブロックについてのフラグを符号化し得る。フラグ(例えば、LM_flag)は、LM予測コーディングがクロマブロックに対してイネーブルにされることを示す。ビデオエンコーダ20は、LM予測コーディングが隣接ブロックに対してイネーブルにされるかどうかを示す1つまたは複数のフラグを備えるコンテキストに基づいて、フラグを符号化し得る。
[0141]本開示では、LM_flagに関して説明される例となる技法は、どのルーマサンプルがLM予測のためにダウンサンプリングされるかに関連する例となる技法とは別個におよび独立して適用され得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上記で説明されたように、ダウンサンプリングから隣接するルーマサンプルを除外し、上記で説明されたように、LM_flagを符号化または復号するように構成され得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上記で説明されたように、ダウンサンプリングから隣接するルーマサンプルを除外するが、上記で説明されたように、LM_flagを符号化または復号しないように構成され得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上記で説明されたように、ダウンサンプリングから隣接するルーマサンプルを除外するように構成されない場合があるが、上記で説明されたように、LM_flagを符号化または復号するように構成され得る。
[0142]以下は、本開示で説明される1つまたは複数の例となる技法をインプリメントするための例を説明する。この例は、上に隣接するルーマサンプルをダウンフィルタリングする(例えば、ダウンサンプリングする)ための例となる技法、または左に隣接するルーマサンプルをダウンフィルタリングする(例えば、ダウンサンプリングする)ための例となる技法に関するものである。RecLOrig[0,0]が現在のブロックの左上ルーマサンプルを表すと仮定すると、上に隣接するルーマサンプルのためのダウンサンプリングプロセスは、以下のように定義される:
−クロマサンプルが、上に隣接する行の最も左に位置していない場合、すなわち、i>0のとき:
−そうでない場合、すなわち、iが0に等しいとき:
[0143]一例では、offset0およびoffset1の両方が、0に等しく設定される。一例では、offset0およびoffset1の両方が、4に等しく設定される。例えば、図10の例に従って、上のルーマサンプルをダウンサンプリングする場合、ビデオエンコーダ20およびビデオデコーダ30は、0のオフセットを用いて式(13)を適用し得る。図14の例に従って、左のルーマサンプルをダウンサンプリングする場合、ビデオエンコーダ20およびビデオデコーダ30は、4のオフセットを用いて式(13)を適用し得る。この例では、ルーマブロックから4つのサンプルよりも左にあるルーマサンプルはダウンサンプリングから除外されるので、オフセットは4である。ルーマブロックから4つ未満または4つより多くのサンプル左にあるルーマサンプルがダウンサンプリングから除外される場合、オフセットは4とは異なり得る。
[0144]例えば、ビデオエンコーダ20およびビデオデコーダ30は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、式(12)の動作に従ってダウンサンプリングするために必要でないとき、第1のダウンサンプリングされたルーマサンプルを決定するために、式(12)の動作を実行し得る(例えば、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用する)。例として、ビデオエンコーダ20およびビデオデコーダ30は、図11Aに例示される隣接するルーマサンプル(例えば、フェッチされた隣接するルーマサンプルの第1のセット)を使用して、図11Aに例示されるダウンサンプリングされたルーマサンプルを決定するために、式(12)の動作を実行し得る。
[0145]ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、式(12)の動作に従って(例えば、第1のフィルタに従って)ダウンサンプリングするために必要であるとき、第2のダウンサンプリングされたルーマサンプルを決定するために、式(13)の動作を実行し得る(例えば、フェッチされた隣接するルーマサンプルの第2のセットに第2のフィルタを適用する)。例えば、第1のフィルタが使用される場合には、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、ダウンサンプリングのために必要とされたであろう。例として、ビデオエンコーダ20およびビデオデコーダ30は、図10に例示される隣接するルーマサンプル(例えば、フェッチされた隣接するルーマサンプルの第2のセット)を使用して、図10に例示されるダウンサンプリングされたルーマサンプルを決定するために、式(13)の動作を実行し得る。
[0146]例えば、ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のサンプル(例えば、k個のサンプル)よりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、式(12)の動作に従ってダウンサンプリングするために必要でないとき、第1のダウンサンプリングされたルーマサンプルを決定するために、式(12)の動作(例えば、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用する)を実行し得る。第1のダウンサンプリングされたルーマサンプルは、ルーマブロックから第1の数の列左にある列にある。例として、ビデオエンコーダ20およびビデオデコーダ30は、図15Aに例示される隣接するルーマサンプル(例えば、フェッチされた隣接するルーマサンプルの第1のセット)を使用して、図16Aに例示されるダウンサンプリングされたルーマサンプルを決定するために、式(12)の動作を実行し得る。例示されるように、図15Aにおけるダウンサンプリングされたルーマサンプルは、ルーマブロックから2列左にある。
[0147]ビデオエンコーダ20およびビデオデコーダ30は、ルーマブロックからしきい値数のサンプル(例えば、k個のサンプル)よりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、式(12)の動作に従って(例えば、第1のフィルタに従って)ダウンサンプリングするために必要であるとき、第2のダウンサンプリングされたルーマサンプルを決定するために、式(13)の動作を実行し得る(例えば、フェッチされた隣接するルーマサンプルの第2のセットに第2のフィルタを適用する)。例えば、第1のフィルタが使用される場合には、ルーマブロックからしきい値数のサンプル(例えば、k個のサンプル)よりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、ダウンサンプリングのために必要とされたであろう。第2のダウンサンプリングされたルーマサンプルは、ルーマブロックから第2の数の列左にある列にあり、第2の数は、第1の数より大きい。例として、ビデオエンコーダ20およびビデオデコーダ30は、図14に例示される隣接するルーマサンプル(例えば、フェッチされた隣接するルーマサンプルの第2のセット)を使用して、図14に例示されるダウンサンプリングされたルーマサンプルを決定するために、式(13)の動作を実行し得る。
[0148]図2は、本開示の技法をインプリメントし得る、例となるビデオエンコーダ20を例示するブロック図である。図2は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものとみなされるべきではない。説明を目的として、本開示は、HEVCコーディングのコンテキストにおいてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、現在開発中または将来のものを含む、他のコーディング規格または方法に適用可能であり得る。
[0149]ビデオエンコーダ20は、本開示で説明される様々な例に従って、LMベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。例えば、ビデオエンコーダ20は、LMビデオコーディングを使用して、1つまたは複数のブロックをコーディングするように構成され得る。
[0150]図2の例では、ビデオエンコーダ20は、予測処理ユニット100、ビデオデータメモリ101、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構成ユニット112、フィルタユニット114、復号ピクチャバッファ(DPB)116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニットとを含み得る(図示せず)。ビデオエンコーダ20はまた、本開示で説明されるLMベースのコーディング技法の様々な態様を実行するように構成された線形モデル(LM)ベースの符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多い数の、より少ない数の、または異なる機能的な構成要素を含み得る。
[0151]ビデオデータメモリ101は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ101に記憶されるビデオデータは、例えば、ビデオソース18から取得され得る。DPB116は、(例えば、イントラまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101およびDPB116は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ101およびDPB116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ101は、ビデオエンコーダ20の他の構成要素とともにオンチップであり得るか、またはこれらの構成要素に対してオフチップであり得る。
[0152]本開示では、ビデオデータメモリ101への参照は、そのように明記されていない(specifically described)限り、ビデオエンコーダ20の内部にあるメモリに、またはそのように明記されていない限り、ビデオエンコーダ20の外部にあるメモリに、限定されると解釈されるべきではない。ビデオデータメモリ101への参照は、ビデオエンコーダ20が符号化のために受信するビデオデータ(例えば、符号化されるべき現在のブロックについてのビデオデータ)を記憶するメモリへの参照として理解されるべきである。ビデオデータメモリ101はまた、ビデオエンコーダ20の様々なユニットからの出力の一時記憶(temporary storage)を提供し得る。
[0153]一例として、ビデオデータメモリ101は、ビデオエンコーダ20の内部にあり、符号化されている現在のブロックに隣接する隣接ブロックのサンプルを記憶するラインバッファの例である。別の例として、DPB116の一部は、ビデオエンコーダ20の内部にあるラインバッファであり得、また、DPB116の一部は、ビデオエンコーダ20を含むICチップのシステムメモリの一部として、ビデオエンコーダ20の外部にあるメモリであり得る。別の例として、ラインバッファは、ビデオエンコーダ20のキャッシュメモリであり得る。
[0154]図2の様々なユニットは、ビデオエンコーダ20によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、1つまたは複数のユニットは、個別の回路ブロック(固定機能またはプログラムマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0155]ビデオエンコーダ20は、プログラマブル回路から形成された、演算論理ユニット(ALU:arithmetic logic units)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ20の動作が、プログラマブル回路によって実行されるソフトウェアによって実行される例では、ビデオデータメモリ101が、ビデオエンコーダ20が受信および実行するソフトウェアのオブジェクトコードを記憶し得、または別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0156]ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライス中の各CTUを符号化し得る。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB)およびピクチャの対応するCTBに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、CTUのCTBを漸進的により小さいブロックへと分割するために4分木区分化を実行し得る。より小さいブロックは、CUのコーディングブロックであり得る。例えば、予測処理ユニット100は、CTUに関連付けられた(associated with)CTBを、4つの等しいサイズのサブブロックに区分化し、サブブロックのうちの1つまたは複数を、4つの等しいサイズのサブブロックに区分化し得、以下同様である。
[0157]ビデオエンコーダ20は、CUの符号化表現(すなわち、コーディングされたCU)を生成するために、CTUのCUを符号化し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUに関連付けられたコーディングブロックを区分化し得る。したがって、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記で示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ブロックのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合、2N×2NまたはN×NのPUサイズ、およびインター予測の場合、2N×2N、2N×N、N×2N、N×N、または同様の対称PUサイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測の場合、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについての非対称区分化をサポートし得る。
[0158]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによって、PUについての予測データを生成し得る。PUについての予測データは、PUの予測ブロックおよびPUについての動き情報を含み得る。インター予測処理ユニット120は、PUが、Iスライス中にあるか、Pスライス中にあるか、Bスライス中にあるかに依存して、CUのPUに対して異なる動作を実行し得る。Iスライスでは、全てのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120は、PUに対してインター予測を実行しない。したがって、Iモードで符号化されるブロックの場合、予測されたブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
[0159]PUがPスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUのための参照領域について、参照ピクチャのリスト(例えば、「RefPicList0」)中の参照ピクチャを検索し得る。PUのための参照領域は、PUのサンプルブロックに最も密接に(closely)対応するサンプルブロックを含む、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUのための参照領域を含む参照ピクチャのRefPicList0における位置を示す参照インデックスを生成し得る。加えて、動き推定ユニットは、PUのコーディングブロックと、参照領域に関連付けられた参照ロケーションとの間の空間的な変位(displacement)を示すMVを生成し得る。例えば、MVは、現在の復号されたピクチャにおける座標から参照ピクチャにおける座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として、参照インデックスとMVとを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示される参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0160]PUがBスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUについての単予測または双予測を実行し得る。PUについての単予測を実行するために、動き推定ユニットは、PUのための参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを検索し得る。動き推定ユニットは、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1における位置を示す参照インデックス、PUの予測ブロックと、参照領域に関連付けられた参照ロケーションとの間の空間的な変位を示すMV、および参照ピクチャがRefPicList0中にあるか、あるいはRefPicList1中にあるかを示す1つまたは複数の予測方向インジケータを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0161]PUについての双方向インター予測を実行するために、動き推定ユニットは、PUのための参照領域についてRefPicList0中の参照ピクチャを検索し得、また、PUのための別の参照領域についてRefPicList1中の参照ピクチャを検索し得る。動き推定ユニットは、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1における位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域に関連付けられた参照ロケーションと、PUのサンプルブロックとの間の空間的な変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスとMVとを含み得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0162]LMベースの符号化ユニット122は、線形モデル(LM)予測符号化を実行し得る。例えば、LMベースの符号化ユニット122は、符号化されている現在のクロマブロックに対応するルーマブロックの再構成されたルーマサンプルをダウンサンプリングし得る。LMベースの符号化ユニット122は、予測ブロックを生成するために、ルーマブロックのダウンサンプリングされた再構成されたルーマサンプルをスケーリングし得る。残差生成ユニット102は、クロマブロックと予測ブロックとの間のサンプル値の差分を示す残差ブロックを決定し得る。いくつかの例では、LMベースの符号化ユニット122は、成分間残差予測(cross-component residual prediction)の一部として、このような技法を適用し得る。このケースでは、クロマブロックは、クロマ残差ブロックであり、ルーマブロックは、ルーマ残差ブロックである。
[0163]例えば、LMベースの符号化ユニット122は、クロマブロックに対応するルーマブロックを決定し得る。LMベースの符号化ユニット122は、本開示で説明される例となる技法を利用して、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る。LMベースの符号化ユニット122は、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータ(例えば、上記で説明されたαおよびβ)を決定し得る。LMベースの符号化ユニット122は、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定し得る。例えば、LMベースの符号化ユニット122は、α*recL(i,j)+βを決定し得、ここで、recL(i,j)は、クロマブロックに対応するルーマブロックのダウンサンプリングされたバージョンであり、αおよびβは、ダウンサンプリングされた隣接するルーマサンプルから決定されるスケーリングファクタである。LMベースの符号化ユニット122は、ラインバッファ外に記憶された隣接するルーマサンプルのアクセスを制限するための技法のような、本開示で説明される1つまたは複数の例となる技法に従って、隣接するルーマサンプルのダウンサンプリングを実行し得る。
[0164]その後、ビデオエンコーダ20は、予測ブロックに基づいて、クロマブロックをLM予測符号化し得る。例えば、以下で説明されるように、ビデオエンコーダ20は、ビデオデコーダ30によってクロマブロックを再構成するために使用される残差ブロックを生成するために、クロマブロックから予測ブロックを減算し得る。
[0165]本開示で説明される技法では、LMベースの符号化ユニット122は、ルーマブロックのルーマサンプルをダウンサンプリングすることの一部として、上記の例となる技法のうちの1つまたは複数をインプリメントし得る。一例として、LMベースの符号化ユニット122は、コーディングされているクロマブロックに対応するルーマブロックを決定し、ここにおいて、ルーマブロックの左上の座標は(x0,y0)であり、DPB116またはビデオデータメモリ101に記憶された、ダウンサンプリングするためのルーマサンプルを決定し、決定されたルーマサンプルは、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを除外し、決定されたルーマサンプルに基づいてルーマブロックをダウンサンプリングし、ダウンサンプリングされたルーマブロックに基づいて予測ブロックを決定し、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化し得る。例えば、ダウンサンプリングするためのルーマサンプルを決定することは、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを除外することを含む。
[0166]例えば、LMベースの符号化ユニット122は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る。フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを含み、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外する。例えば、ルーマブロックの左上ルーマサンプルよりも上かつ左にある図9に例示されるルーマサンプル(例えば、破線の左側)は、フェッチされるルーマサンプルから除外される。
[0167]別の例として、LMベースの符号化ユニット122は、コーディングされているクロマブロックに対応するルーマブロックを決定し、ここにおいて、ルーマブロックの左上の座標は(x0,y0)であり、DPB116またはビデオデータメモリ101に記憶された、ダウンサンプリングするためのルーマサンプルを決定し、決定されたルーマサンプルは、(x0−k)未満のx座標およびy0以上のy座標を有するルーマサンプルを除外し、ここにおいて、kは、0より大きい整数であり、決定されたルーマサンプルに基づいてルーマブロックをダウンサンプリングし、ダウンサンプリングされたルーマブロックに基づいて予測ブロックを決定し、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測符号化し得る。例えば、ダウンサンプリングするためのルーマサンプルを決定することは、(x0−k)未満のx座標およびy0以上のy座標を有するルーマサンプルを除外することを含む。
[0168]例えば、LMベースの符号化ユニット122は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る。フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを含み、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外する。例えば、ルーマブロックからしきい値数のサンプルよりも左にあり(例えば、4つのサンプルよりも左にあり)かつルーマブロックの左上サンプルより下にある図13に例示されるルーマサンプル(例えば、破線の左側)は、フェッチされるルーマサンプルから除外される。
[0169]1つのケースでは、LMベースの符号化ユニット122は、x0未満のx座標およびy0未満のy座標を有するルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないときは、第1のフィルタ(例えば、JCTVC−F502のもの)を適用し、x0未満のx座標およびy0未満のy座標を有するルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるときは、第2の異なるフィルタ(例えば、JCTVC−E266または式13のもの)を適用し得る。これらの例において、別のケースでは、LMベースの符号化ユニット122は、フィルタを適用することが、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを使用することをもたらすことになるかどうかを決定し、ルーマサンプルについてのルーマ値をフェッチすることなく、x0未満のx座標およびy0未満のy座標を有するルーマサンプルについてのルーマ値を生成し得る。例えば、LMベースの符号化ユニットは、図12Bに例示されるように、隣り合うルーマサンプルに基づく値をパディングし、ルーマブロックをダウンサンプリングするために、生成されたルーマ値を使用してフィルタを適用し得、ここにおいて、フィルタは、フィルタを適用することが、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを使用することをもたらさないであろう場合にダウンサンプリングのために使用されるものと同じフィルタである。
[0170]例えば、上に隣接するルーマサンプルの場合、LMベースの符号化ユニット122は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。LMベースの符号化ユニット122は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。
[0171]左に隣接するルーマサンプルの場合、LMベースの符号化ユニット122は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。第1のダウンサンプリングされたルーマサンプルは、ルーマブロックから第1の数の列左にある列にある。LMベースの符号化ユニット122は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。第2のダウンサンプリングされたルーマサンプルは、ルーマブロックから第2の数の列左にある列にあり、第2の数は、第1の数より大きい。
[0172]一例では、上に隣接するルーマサンプルの場合、LMベースの符号化ユニット122は、ビデオデータメモリ101からフェッチすることなく、ルーマブロックの左上ルーマサンプルよりも上かつ左に位置するルーマサンプルに対応するルーマ値を生成し、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る。一例では、左に隣接するルーマサンプルの場合、LMベースの符号化ユニット122は、ビデオデータメモリ101からフェッチすることなく、ルーマブロックからしきい値数のサンプルよりも左かつルーマブロックの左上ルーマサンプルより下に位置するルーマサンプルに対応するルーマ値を生成し、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る。
[0173]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUについての予測データを生成し得る。PUについての予測データは、PUについての予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実行し得る。
[0174]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、PUについての予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット126は、PUについての予測ブロックを生成するために、隣接するPUのサンプルブロックからのサンプルを使用し得る。隣接するPUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右および上、左および上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、例えば、33方向のイントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連付けられた領域のサイズに依存し得る。
[0175]予測処理ユニット100は、CUのPUについての予測データを、PUについてのインター予測処理ユニット120によって生成された予測データ、PUについてのイントラ予測処理ユニット126によって生成された予測データ、またはLMベースの符号化ユニット122によって生成された予測データの中から選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪みメトリックに基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
[0176]残差生成ユニット102は、CUのルーマ、CbおよびCrコーディングブロックと、CUのPUの選択された予測ルーマ、CbおよびCrブロックとに基づいて、CUのルーマ、CbおよびCr残差ブロックを生成し得る。例えば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルと、CUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0177]変換処理ユニット104は、CUに関連付けられた残差ブロックを、CUのTUに関連付けられた変換ブロックに区分化するために、4分木区分化を実行し得る。したがって、TUは、1つのルーマ変換ブロックと、2つのクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも、基づかないこともあり得る。「残差4分木」(RQT)として知られている4分木構造は、領域の各々に関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
[0178]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUについての変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。例えば、変換処理ユニット104は、変換ブロックに、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
[0179]量子化ユニット106は、係数ブロックにおける変換係数を量子化し得る。量子化プロセスは、変換係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。例えば、nビットの変換係数は、量子化中にmビット変換係数に切り捨てられ得、ここで、nは、mより大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQP値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、元のものよりも低い精度を有し得る。
[0180]逆量子化ユニット108および逆変換処理ユニット110は、係数ブロックから残差ブロックを再構成するために、それぞれ、係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット112は、TUに関連付けられた再構成された変換ブロックを作り出すために、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算し得る。このようにしてCUの各TUについての変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成し得る。
[0181]フィルタユニット114は、CUに関連付けられたコーディングブロック中のブロッキングアーティファクト(blocking artifacts)を低減させるために、1つまたは複数のデブロッキング動作を実行し得る。DPB116は、フィルタユニット114が再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後に、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実行するために、再構成されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャ内の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116中の再構成されたコーディングブロックを使用し得る。さらに、LMベースの符号化ユニット122は、クロマブロックを線形モデル(LM)予測符号化するために、DPB116中の再構成されたルーマブロックを利用し得る(ここで、ルーマブロックは、いくつかの例ではビデオデータを含み得、または残差ルーマブロックであり得、およびクロマブロックは、いくつかの例ではビデオデータを含み得、または残差クロマブロックであり得る)。
[0182]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能的な構成要素からデータを受信し得る。例えば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、データに対して1つまたは複数のエントロピー符号化動作を実行し得る。例えば、エントロピー符号化ユニット118は、データに対して、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、V2V(variable-to-variable)長コーディング動作、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分化エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力し得る。例えば、ビットストリームは、CUについてのRQTを表すデータを含み得る。
[0183]図3は、本開示の技法をインプリメントするように構成された例となるビデオデコーダ30を例示するブロック図である。図3は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものではない。説明を目的として、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0184]ビデオエンコーダ30は、本開示で説明される様々な例に従って、LMベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。例えば、ビデオエンコーダ30は、LMビデオコーディングモードを利用して1つまたは複数のブロックをコーディングする(すなわち、1つまたは複数のブロックを線形モデル(LM)予測復号する)ように構成され得る。
[0185]図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150、ビデオデータメモリ151、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号ピクチャバッファ(DPB)162を含む。予測処理ユニット152は、動き補償ユニット164と、イントラ予測処理ユニット166とを含む。ビデオデコーダ30はまた、本開示で説明されるLMベースのコーディング技法の様々な態様を実行するように構成された線形モデル(LM)ベースの復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多い数の、より少ない数の、または異なる機能的な構成要素を含み得る。
[0186]ビデオデータメモリ151は、ビデオデコーダ30の構成要素によって復号されることとなる、符号化されたビデオビットストリームのような、ビデオデータを記憶し得る。ビデオデータメモリ151に記憶されたビデオデータは、例えば、コンピュータ可読媒体16から(例えば、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、カメラなどのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって)取得され得る。ビデオデータメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ(CPB)を形成し得る。DPB162は、(例えば、イントラまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ151およびDPB162は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ151およびDPB162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他の構成要素とともにオンチップであり得るか、またはこれらの構成要素に対してオフチップであり得る。
[0187]本開示では、ビデオデータメモリ151への参照は、そのように明記されていない限り、ビデオデコーダ30の内部にあるメモリに、またはそのように明記されていない限り、ビデオデコーダ30の外部にあるメモリに、限定されると解釈されるべきではない。ビデオデータメモリ151への参照は、ビデオデコーダ30が復号のために受信するビデオデータ(例えば、符号化されるべき現在のブロックについてのビデオデータ)を記憶する参照メモリとして理解されるべきである。ビデオデータメモリ151はまた、ビデオデコーダ30の様々なユニットからの出力の一時記憶を提供し得る。
[0188]一例として、ビデオデータメモリ151は、ビデオデコーダ30の内部にあり、復号されている現在のブロックに隣接する隣接ブロックのサンプルを記憶するラインバッファの例である。別の例として、DPB162の一部は、ビデオデコーダ30の内部にあるラインバッファであり得、また、DPB162の一部は、ビデオデコーダ30を含むICチップのシステムメモリの一部として、ビデオデコーダ30の外部にあるメモリであり得る。別の例として、ラインバッファは、ビデオデコーダ30のキャッシュメモリであり得る。
[0189]図3の様々なユニットは、ビデオデコーダ30によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、1つまたは複数のユニットは、個別の回路ブロック(固定機能またはプログラムマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0190]ビデオエンコーダ20は、プログラマブル回路から形成された、演算論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ30の動作が、プログラマブル回路によって実行されるソフトウェアによって実行される例では、ビデオデータメモリ151が、ビデオデコーダ30が受信および実行するソフトウェアのオブジェクトコードを記憶し得、または別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0191]コーディングされたピクチャバッファ(CPB)は、ビットストリームの符号化されたビデオデータ(例えば、NALユニット)を受信および記憶し得る。エントロピー復号ユニット150は、CPBから符号化されたビデオデータ(例えば、NALユニット)を受信し、シンタックス要素を復号するために、NALユニットをパースし得る。エントロピー復号ユニット150は、NALユニットにおけるエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0192]ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出およびエントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関連するシンタックス要素を含み得る。スライスヘッダにおけるシンタックス要素は、スライスを含むピクチャに関連付けられたPPSを識別するシンタックス要素を含み得る。
[0193]ビットストリームからのシンタックス要素を復号することに加えて、ビデオデコーダ30は、区分化されていないCU(non-partitioned CU)に対して再構成動作を実行し得る。区分化されていないCUに対して再構成動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実行し得る。CUの各TUについての再構成動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構成し得る。
[0194]CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUに関連付けられた係数ブロックを逆量子化、すなわち、量子化解除(de-quantize)し得る。逆量子化ユニット154は、量子化の程度、および同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定するために、TUのCUに関連付けられたQP値を使用し得る。圧縮比、すなわち、元のシーケンスおよび圧縮されたものを表示するために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比は、用いられるエントロピーコーディングの方法に依存し得る。
[0195]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUに関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット156は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を適用し得る。
[0196]PUがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット166は、PUについての予測ブロックを生成するために、イントラ予測を実行し得る。イントラ予測処理ユニット166は、空間的に隣接するPUの予測ブロックに基づいて、PUについての予測ルーマ、CbおよびCrブロックを生成するために、イントラ予測モードを使用し得る。イントラ予測処理ユニット166は、ビットストリームから復号される1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。
[0197]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUについての動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUについての1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUについての1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUについての予測ルーマ、CbおよびCrブロックを生成し得る。
[0198]再構成ユニット158は、CUのルーマ、CbおよびCrコーディングブロックを再構成するために、CUのTUに関連付けられたルーマ、CbおよびCr変換ブロック、およびCUのPUの予測ルーマ、CbおよびCrブロック、すなわち、適宜、イントラ予測データまたはインター予測データのいずれかを使用し得る。例えば、再構成ユニット158は、CUのルーマ、CbおよびCrコーディングブロックを再構成するために、ルーマ、CbおよびCr変換ブロックのサンプルを、予測ルーマ、CbおよびCrブロックの対応するサンプルに加算し得る。
[0199]フィルタユニット160は、CUのルーマ、CbおよびCrコーディングブロックに関連付けられたブロッキングアーティファクトを低減させるために、デブロッキング動作を実行し得る。ビデオデコーダ30は、復号ピクチャバッファ162にCUのルーマ、CbおよびCrコーディングブロックを記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および、図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。例えば、ビデオデコーダ30は、DPB162中のルーマ、CbおよびCrブロックに基づいて、他のCUのPUに対してイントラ予測またはインター予測動作を実行し得る。
[0200]本開示の様々な例に従って、ビデオデコーダ30は、LMベースのコーディングを実行するように構成され得る。LMベースの復号ユニット165は、例えば、線形モデル(LM)予測復号を実行し得る。例えば、LMベースの復号ユニット165は、復号されている現在のクロマブロックに対応するルーマブロックの再構成されたルーマサンプルをダウンサンプリングし得る。LMベースの復号ユニット165は、予測ブロックを生成するために、ルーマブロックのダウンサンプリングされた再構成されたルーマサンプルをスケーリングし得る。その後、再構成ユニット158は、クロマブロックを再構成するために、生成された予測ブロックを、クロマブロックについての復号された残差データに加算し得る。いくつかの例では、LMベースの復号ユニット165は、成分間残差予測の一部として、そのような技法を適用し得る。このケースでは、クロマブロックは、クロマ残差ブロックであり、ルーマブロックは、ルーマ残差ブロックである。
[0201]例えば、LMベースの復号ユニット165は、クロマブロックに対応するルーマブロックを決定し得る。LMベースの復号ユニット165は、本開示で説明される例となる技法を利用して、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る。LMベースの復号ユニット165は、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータ(例えば、上記で説明されたαおよびβ)を決定し得る。LMベースの復号ユニット165は、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定し得る。例えば、LMベースの復号ユニット165は、α*recL(i,j)+βを決定し得、ここで、recL(i,j)は、クロマブロックに対応するルーマブロックのダウンサンプリングされたバージョンであり、αおよびβは、ダウンサンプリングされた隣接するルーマサンプルから決定されるスケーリングファクタである。LMベースの復号ユニット165は、ラインバッファ外に記憶された隣接するルーマサンプルのアクセスを制限するための技法のような、本開示で説明される1つまたは複数の例となる技法に従って、隣接するルーマサンプルのダウンサンプリングを実行し得る。
[0202]その後、ビデオデコーダ30は、予測ブロックに基づいて、クロマブロックをLM予測復号し得る。例えば、以下で説明されるように、ビデオデコーダ30は、クロマブロックを再構成するために、予測ブロックを残差ブロックに加算し得る。
[0203]本開示で説明される技法では、LMベースの復号ユニット165は、ルーマブロックのルーマサンプルをダウンサンプリングすることの一部として、上記の例となる技法のうちの1つまたは複数をインプリメントし得る。一例として、LMベースの復号ユニット165は、コーディングされているクロマブロックに対応するルーマブロックを決定し、ここにおいて、ルーマブロックの左上の座標は(x0,y0)であり、DPB162またはビデオデータメモリ151に記憶された、ダウンサンプリングするためのルーマサンプルを決定し、決定されたルーマサンプルは、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを除外し、決定されたルーマサンプルに基づいてルーマブロックをダウンサンプリングし、ダウンサンプリングされたルーマブロックに基づいて予測ブロックを決定し、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号し得る。例えば、ダウンサンプリングするためのルーマサンプルを決定することは、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを除外することを含む。
[0204]例えば、LMベースの復号ユニット165は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る。フェッチされた隣接するルーマサンプルは、ルーマブロックよりも上にある複数のルーマサンプルを含み、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外する。例えば、ルーマブロックの左上ルーマサンプルよりも上かつ左にある図9に例示されるルーマサンプル(例えば、破線の左側)は、フェッチされるルーマサンプルから除外される。
[0205]別の例として、LMベースの復号ユニット165は、コーディングされているクロマブロックに対応するルーマブロックを決定し、ここにおいて、ルーマブロックの左上の座標は(x0,y0)であり、DPB162またはビデオデータメモリ151に記憶された、ダウンサンプリングするためのルーマサンプルを決定し、決定されたルーマサンプルは、(x0−k)未満のx座標およびy0以上のy座標を有するルーマサンプルを除外し、ここにおいて、kは、0より大きい整数であり、決定されたルーマサンプルに基づいてルーマブロックをダウンサンプリングし、ダウンサンプリングされたルーマブロックに基づいて予測ブロックを決定し、予測ブロックに基づいて、クロマブロックを線形モデル(LM)予測復号し得る。例えば、ダウンサンプリングするためのルーマサンプルを決定することは、(x0−k)未満のx座標およびy0以上のy座標を有するルーマサンプルを除外することを含む。
[0206]例えば、LMベースの復号ユニット165は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る。フェッチされた隣接するルーマサンプルは、ルーマブロックの左にある複数のルーマサンプルを含み、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外する。例えば、ルーマブロックからしきい値数のサンプルよりも左にあり(例えば、4つのサンプルよりも左にあり)かつルーマブロックの左上サンプルより下にある図13に例示されるルーマサンプル(例えば、破線の左側)は、フェッチされるルーマサンプルから除外される。
[0207]1つのケースでは、LMベースの復号ユニット165は、x0未満のx座標およびy0未満のy座標を有するルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないときは、第1のフィルタ(例えば、JCTVC−F502のもの)を適用し、x0未満のx座標およびy0未満のy座標を有するルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるときは、第2の異なるフィルタ(例えば、JCTVC−E266または式13のもの)を適用し得る。これらの例において、別のケースでは、LMベースの復号ユニット165は、フィルタを適用することが、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを使用することをもたらすことになるかどうかを決定し、ルーマサンプルについてのルーマ値をフェッチすることなく、x0未満のx座標およびy0未満のy座標を有するルーマサンプルについてのルーマ値を生成し(例えば、図16Bに例示されるように、隣り合うルーマサンプルに基づく値をパディングし)、ルーマブロックをダウンサンプリングするために、生成されたルーマ値を使用してフィルタを適用し得、ここにおいて、フィルタは、フィルタを適用することが、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを使用することをもたらさないであろう場合に、隣接するルーマサンプルをダウンサンプリングするために使用されるものと同じフィルタ(a same filter used)である。
[0208]例えば、上に隣接するルーマサンプルの場合、LMベースの復号ユニット165は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。LMベースの復号ユニット165は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。
[0209]左に隣接するルーマサンプルの場合、LMベースの復号ユニット165は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。第1のダウンサンプリングされたルーマサンプルは、ルーマブロックから第1の数の列左にある列にある。LMベースの復号ユニット165は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要であるとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。第2のダウンサンプリングされたルーマサンプルは、ルーマブロックから第2の数の列左にある列にあり、第2の数は、第1の数より大きい。
[0210]一例では、上に隣接するルーマサンプルの場合、LMベースの復号ユニット165は、ビデオデータメモリ151からフェッチすることなく、ルーマブロックの左上ルーマサンプルよりも上かつ左に位置するルーマサンプルに対応するルーマ値を生成し、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る。一例では、左に隣接するルーマサンプルの場合、LMベースの復号ユニット165は、ビデオデータメモリ151からフェッチすることなく、ルーマブロックからしきい値数のサンプルよりも左かつルーマブロックの左上ルーマサンプルより下に位置するルーマサンプルに対応するルーマ値を生成し、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る。
[0211]図18は、ビデオデータを復号する例となる方法を例示するフローチャートである。例示されるように、LMベースの復号ユニット165は、クロマブロックに対応するルーマブロックを決定し得る(180)。上記で説明されたように、ブロックは、1つのルーマブロックと、2つのクロマブロックとを含み得る。クロマブロックに対応するルーマブロックは、ルーマブロックおよび対応するクロマブロックが、同じブロックからのものであることを意味する。
[0212]LMベースの復号ユニット165は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る(182)。1つまたは複数の例では、LMベースの復号ユニット165は、フェッチすることからある特定の隣接するルーマサンプルを除外し得る。フェッチされないルーマサンプルは、座標(x0,y0)を有する、ルーマブロックの左上サンプルを基準にして(relative to)説明され得る。
[0213]例えば、隣接するルーマサンプルがルーマブロックよりも上にある例では、LMベースの復号ユニット165は、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し得る。一例として、図9における破線の左側のルーマサンプルは、それらが、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるので、フェッチされ得ない。この例では、フェッチされた隣接するルーマサンプルは、x0未満のx座標およびy0未満のy座標を有するルーマサンプルを除外する。むしろ、図10、図11A、および図11Bに例示されているもののようなルーマサンプルは、フェッチされ得る。
[0214]隣接するルーマサンプルがルーマブロックの左にある例では、LMベースの復号ユニット165は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外し得る。一例として、図13における破線の左側のルーマサンプルは、それらが、ルーマブロックからしきい値数のサンプルよりも左にあり(例えば、4つのサンプルよりも左にあり)かつルーマブロックの左上ルーマサンプルより下にあるので、フェッチされ得ない。この例では、フェッチされた隣接するルーマサンプルは、(x0−k)未満のx座標、およびy0より大きいy座標を有するルーマサンプルを除外し、ここにおいて、kは、しきい値数であり、0より大きい整数(例えば、4)である。むしろ、図14、図15A、および図15Bに例示されているもののようなルーマサンプルは、フェッチされ得る。
[0215]LMベースの復号ユニット165は、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る(184)。隣接するサンプルがルーマブロックよりも上にある例では、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応する。例えば、図10、図11B、および図12Bに例示されるように、ダウンサンプリングされたルーマサンプルは、左上ルーマサンプルの真上にある。隣接するサンプルがルーマブロックの左にある例では、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応する。図11Aおよび図12Aは、ダウンサンプリングされたルーマサンプルの追加の例を例示する。例えば、図14、図15B、および図16Bに例示されるように、ダウンサンプリングされたルーマサンプルは、ルーマブロックから4つのサンプル左にあり、この例では、ルーマブロックの左のサンプルのしきい値数は、4である。これらの例では、ダウンサンプリングされたルーマサンプルは、左上ルーマサンプルから2列よりも左にある(例えば、ダウンサンプリングされたルーマサンプルは、4列左にあり、これは、2列左より大きい)。図15Aおよび図16Aは、ダウンサンプリングされたルーマサンプルの追加の例を例示する。
[0216]隣接するルーマサンプルがルーマブロックよりも上にある例では、LMベースの復号ユニット165は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。例えば、LMベースの復号ユニット165は、図11Aおよび図12Aに例示されるように、および(一例として)JCTVC−F502のもののようなフィルタを適用し得る。LMベースの復号ユニット165は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要である(例えば、第1のものが使用された場合に、必要とされたであろう)とき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。例えば、JCTVC−F502において説明されるフィルタを利用することが、左上ルーマサンプルよりも上かつ左にあるルーマサンプルにアクセスすることをもたらすことになる場合には、LMベースの復号ユニット165は、JCTVC−E266(例えば、図11B)において説明されるフィルタと同様の、または上記で説明された式(13)(例えば、図10)に従って、フィルタを適用し得る。
[0217]隣接するルーマサンプルがルーマブロックの左にある場合、LMベースの復号ユニット165は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。例えば、LMベースの復号ユニット165は、図15Aおよび図16Aに例示されるように、および(一例として)JCTVC−F502のもののようなフィルタを適用し得る。LMベースの復号ユニット165は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要である(例えば、第1のものが使用された場合に、必要とされたであろう)とき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。例えば、JCTVC−F502において説明されるフィルタを利用することが、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルにアクセスすることをもたらすことになる場合には、LMベースの復号ユニット165は、(例えば、図15Bに例示されるように)JCTVC−E266において説明されるフィルタと同様の、または(例えば、図14に示されるように)上記で説明された式(13)に従って、フィルタを適用し得る。
[0218]上記の例では、第1のフィルタは、ルーマブロックよりも上にある第1の行からの3つのルーマサンプルを利用し、第1の行よりも上にある第2の行からの3つのルーマサンプルを利用する。第2のフィルタは、ルーマブロックの左にある第1の行からの3つ未満のルーマサンプル(例えば、図9および図14では2つのサンプル、および図11Bおよび図15Bでは1つのサンプル)を利用し、第1の行の下にある第2の行からの3つ未満のルーマサンプル(例えば、図9および図14では2つのサンプル、および図11Bおよび図15Bでは1つのサンプル)を利用する。
[0219]いくつかの例では、異なるフィルタを使用するのではなく、LMベースの復号ユニット165は、同じフィルタを使用し得るが、フェッチするのではなく、パディングを適用する(例えば、ルーマサンプル値を生成する)。例えば、上に隣接するルーマサンプルの例の場合、LMベースの復号ユニット165は、フェッチすることなく、ルーマブロックの左上ルーマサンプルよりも上かつ左に位置するルーマサンプルに対応するルーマ値を生成し得、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る(例えば、図12Bの例)。左に隣接するルーマサンプルの例の場合、LMベースの復号ユニット165は、フェッチすることなく、ルーマブロックからしきい値数のサンプルよりも左かつルーマブロックの左上ルーマサンプルより下に位置するルーマサンプルに対応するルーマ値を生成し得、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る(例えば、図16Bの例)。
[0220]LMベースの復号ユニット165は、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定し得る(186)。例えば、LMベースの復号ユニット165は、ダウンサンプリングされたルーマサンプルに基づいて、αおよびβを決定し得る。LMベースの復号ユニット165は、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定し得る(188)。例えば、LMベースの復号ユニット165は、α*recL(i,j)+βとして予測ブロックを決定し得、ここで、recL(i,j)は、クロマブロックに対応するルーマブロックのダウンサンプリングされたバージョンであり、αおよびβは、ダウンサンプリングされた隣接するルーマサンプルから決定されるスケーリングファクタである。
[0221]ビデオデコーダ30は、予測ブロックに基づいて、クロマブロックをLM予測復号し得る(190)。例えば、再構成ユニット158は、クロマブロックを再構成するために、予測ブロックを残差ブロックに加算し得る。
[0222]図19は、ビデオデータを符号化する例となる方法を例示するフローチャートである。例示されるように、LMベースの符号化ユニット122は、クロマブロックに対応するルーマブロックを決定し得る(200)。上記で説明されたように、ブロックは、1つのルーマブロックと、2つのクロマブロックとを含み得る。クロマブロックに対応するルーマブロックは、ルーマブロックおよび対応するクロマブロックが、同じブロックからのものであることを意味する。
[0223]LMベースの符号化ユニット122は、隣接するルーマサンプルをダウンサンプリングするために、隣接するルーマサンプルをフェッチし得る(202)。1つまたは複数の例では、LMベースの符号化ユニット122は、フェッチすることからある特定の隣接するルーマサンプルを除外し得る。フェッチされないルーマサンプルは、座標(x0,y0)を有する、ルーマブロックの左上サンプルを基準にして説明され得る。
[0224]例えば、隣接するルーマサンプルがルーマブロックよりも上にある例では、LMベースの符号化ユニット122は、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるルーマサンプルを除外し得る。一例として、図9における破線の左側のルーマサンプルは、それらが、ルーマブロックの左上ルーマサンプルよりも上かつ左にあるので、フェッチされ得ない。この例では、フェッチされた隣接するルーマサンプルは、x0未満のx座標、およびy0未満のy座標を有するルーマサンプルを除外する。むしろ、図10、図11A、および図11Bに例示されているもののようなルーマサンプルは、フェッチされ得る。
[0225]隣接するルーマサンプルがルーマブロックの左にある例では、LMベースの符号化ユニット122は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にあるルーマサンプルを除外し得る。一例として、図13における破線の左側のルーマサンプルは、それらが、ルーマブロックからしきい値数のサンプルよりも左にあり(例えば、4つのサンプルよりも左にあり)かつルーマブロックの左上ルーマサンプルより下にあるので、フェッチされ得ない。この例では、フェッチされた隣接するルーマサンプルは、(x0−k)未満のx座標、およびy0より大きいy座標を有するルーマサンプルを除外し、ここにおいて、kは、しきい値数であり、0より大きい整数(例えば、4)である。むしろ、図14、図15A、および図15Bに例示されているもののようなルーマサンプルは、フェッチされ得る。
[0226]LMベースの符号化ユニット122は、フェッチされた隣接するルーマサンプルに基づいて、複数のダウンサンプリングされたルーマサンプルを決定し得る(204)。隣接するサンプルがルーマブロックよりも上にある例では、ダウンサンプリングされたルーマサンプルのうちの1つは、左上ルーマサンプルの真上にあるダウンサンプリングされたルーマサンプルに対応する。例えば、図10、図11B、および図12Bに例示されるように、ダウンサンプリングされたルーマサンプルは、左上ルーマサンプルの真上にある。隣接するサンプルがルーマブロックの左にある例では、ダウンサンプリングされたルーマサンプルのうちの1つは、ルーマブロックからしきい値数のサンプル左にあるダウンサンプリングされたルーマサンプルに対応する。図11Aおよび図12Aは、ダウンサンプリングされたルーマサンプルの追加の例を例示する。例えば、図14、図15B、および図16Bに例示されるように、ダウンサンプリングされたルーマサンプルは、ルーマブロックから4つのサンプル左にあり、この例では、ルーマブロックの左のサンプルのしきい値数は、4である。これらの例では、ダウンサンプリングされたルーマサンプルは、左上ルーマサンプルから2列よりも左にある(例えば、ダウンサンプリングされたルーマサンプルは、4列左にあり、これは、2列左より大きい)。図15Aおよび図16Aは、ダウンサンプリングされたルーマサンプルの追加の例を例示する。
[0227]隣接するルーマサンプルがルーマブロックよりも上にある例では、LMベースの符号化ユニット122は、左上ルーマサンプルよりも上かつ左にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。例えば、LMベースの符号化ユニット122は、図11Aおよび図12Aに例示されるように、および(一例として)JCTVC−F502のもののようなフィルタを適用し得る。LMベースの符号化ユニット122は、ルーマブロックの左上ルーマサンプルよりも上かつ左にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要とされたであろうとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。例えば、JCTVC−F502において説明されるフィルタを利用することが、左上ルーマサンプルよりも上かつ左にあるルーマサンプルにアクセスすることをもたらすことになる場合には、LMベースの符号化ユニット122は、JCTVC−E266(例えば、図11B)と同様の、または上記で説明された式(13)(例えば、図10)に従って、フィルタを適用し得る。
[0228]隣接するルーマサンプルがルーマブロックの左にある場合、LMベースの符号化ユニット122は、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要でないとき、複数のダウンサンプリングされたルーマサンプルのうちの第1のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第1のセットに第1のフィルタを適用し得る。例えば、LMベースの符号化ユニット122は、図15Aおよび図16Aに例示されるように、および(一例として)JCTVC−F502のもののようなフィルタを適用し得る。LMベースの符号化ユニット122は、ルーマブロックからしきい値数のサンプルよりも左にありかつルーマブロックの左上ルーマサンプルより下にある少なくとも1つのルーマサンプルが、第1のフィルタに従ってダウンサンプリングするために必要とされたであろうとき、複数のダウンサンプリングされたルーマサンプルのうちの第2のダウンサンプリングされたルーマサンプルを決定するために、フェッチされた隣接するルーマサンプルの第2のセットに第2の異なるフィルタを適用し得る。例えば、JCTVC−F502において説明されるフィルタを利用することが、ルーマブロックからしきい値数のサンプルよりも左にありかつ左上ルーマサンプルより下にあるルーマサンプルにアクセスすることをもたらすことになる場合には、LMベースの復号ユニット165は、JCTVC−E266(例えば、図15B)と同様の、または上記で説明された式(13)(例えば、図14)に従って、フィルタを適用し得る。
[0229]上記の例では、第1のフィルタは、ルーマブロックよりも上にある第1の行からの3つのルーマサンプルを利用し、第1の行よりも上にある第2の行からの3つのルーマサンプルを利用する。第2のフィルタは、ルーマブロックの左にある第1の行からの3つ未満のルーマサンプル(例えば、図9および図14では2つのサンプル、および図11Bおよび図15Bでは1つのサンプル)を利用し、第1の行の下にある第2の行からの3つ未満のルーマサンプル(例えば、図9および図14では2つのサンプル、および図11Bおよび図15Bでは1つのサンプル)を利用する。
[0230]いくつかの例では、異なるフィルタを使用するのではなく、LMベースの符号化ユニット122は、同じフィルタを使用し得るが、フェッチするのではなく、パディングを適用する(例えば、ルーマサンプル値を生成する)。例えば、上に隣接するルーマサンプルの例の場合、LMベースの符号化ユニット122は、フェッチすることなく、ルーマブロックの左上ルーマサンプルよりも上かつ左に位置するルーマサンプルに対応するルーマ値を生成し得、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る(例えば、図12Bの例)。左に隣接するルーマサンプルの例の場合、LMベースの符号化ユニット122は、フェッチすることなく、ルーマブロックからしきい値数のサンプルよりも左かつルーマブロックの左上ルーマサンプルより下に位置するルーマサンプルに対応するルーマ値を生成し得、複数のダウンサンプリングされたルーマサンプルのうちの少なくとも1つのダウンサンプリングされたルーマサンプルを決定するために、生成されたルーマ値にフィルタを適用し得る(例えば、図16Bの例)。
[0231]LMベースの符号化ユニット122は、ダウンサンプリングされたルーマサンプルに基づいて、1つまたは複数のスケーリングパラメータを決定し得る(206)。例えば、LMベースの符号化ユニット122は、ダウンサンプリングされたルーマサンプルに基づいて、αおよびβを決定し得る。LMベースの符号化ユニット122は、1つまたは複数のスケーリングパラメータに基づいて、予測ブロックを決定し得る(208)。例えば、LMベースの符号化ユニット122は、α*recL(i,j)+βとして予測ブロックを決定し得、ここで、recL(i,j)は、クロマブロックに対応するルーマブロックのダウンサンプリングされたバージョンであり、αおよびβは、ダウンサンプリングされた隣接するルーマサンプルから決定されるスケーリングファクタである。
[0232]ビデオエンコーダは、予測ブロックに基づいて、クロマブロックをLM予測符号化し得る(210)。例えば、残差生成ユニット102は、ビデオデコーダ30によってクロマブロックを再構成するために使用される残差ブロックを生成するために、クロマブロックから予測ブロックを減算し得る。
[0233]上記で説明された技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行され得、これら両方は、一般に、ビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指し得る。加えて、ビデオ符号化およびビデオ復号は、総称的に、ビデオデータを「処理すること(processing)」と呼ばれ得る。
[0234]本明細書で説明された技法の全ては、個別にまたは組合せにおいて使用され得ることが理解されるべきである。本開示は、ブロックサイズ、スライスタイプ、等のような、ある特定の要因に依存して変わり得るいくつかのシグナリング方法を含む。シンタックス要素の推論またはシグナリングにおけるそのような変動は、アプリオリ(a-priori)にエンコーダおよびデコーダに知られ得るか、またはビデオパラメータセット(VPS)において、シーケンスパラメータセット(SPS)において、ピクチャパラメータセット(PPS)において、スライスヘッダにおいて、タイルレベルで、または他の箇所で、デコーダに明示的にシグナリングされ得る。
[0235]例に依存して、本明細書で説明された技法のうちの任意のもののある特定の動作(act)またはイベントは、異なる順序で実行され得、追加、併合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが本技法の実施に必ずしも必要ではない)ことを認識されたい。さらに、ある特定の例では、動作またはイベントは、シーケンシャル順ではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて、同時並行(concurrently)に実行され得る。加えて、本開示のある特定の態様が、明確さを目的として、単一のモジュールまたはユニットによって実行されるものとして説明された一方で、本開示の技法は、ビデオコーダに関連付けられたユニットまたはモジュールの組合せによって実行され得ることが理解されるべきである。
[0236]本技法の様々な態様の特定の組合せが上記で説明された一方で、これらの組合せは、単に本開示で説明される技法の例を示すために提供されている。したがって、本開示の技法は、これらの例となる組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の考えられる組合せを包含し得る。
[0237]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体のような有形の媒体に対応するコンピュータ可読記憶媒体を含み得る。このように、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0238]限定ではなく例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用され得、かつコンピュータによってアクセスされ得るその他任意の媒体を備え得る。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイ(登録商標)ディスクを含み、ここでディスク(disks)は、通常磁気的にデータを再生し、一方ディスク(discs)は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0239]命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積されたまたはディスクリートな論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される場合、「プロセッサ」という用語は、任意の前述の構造または本明細書で説明された技法のインプリメンテーションに好適なその他任意の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得、または、複合コーデックに組み込まれ得る。また、これら技法は、1つまたは複数の回路または論理要素において完全にインプリメントされ得る。
[0240]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられるか、または、好適なソフトウェアおよび/またはファームウェアと併せて、上記で説明されたような1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
[0241]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。