(57)【要約】第１の値を有する第１のサンプルを含む、ビデオデータの第１の再構築されたブロックを取得することと、デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定することと、第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較することと、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正することと、第１のフィルタリングされた値を有する第１のサンプルを有する、ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、を行うように構成されたビデオ復号器。【選択図】図１１
2021535653.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、前記方法は、
ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、前記第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第１の再構築されたブロックの境界に対する前記第１のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックのサイズに基づいて、前記第１のサンプルについての第１のクリッピング値を決定することと、
前記第１のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する前記修正の量が前記第１のクリッピング値よりも大きいことに応答して、前記第１のサンプルについての第１のフィルタリングされた値を決定するために、前記第１のクリッピング値によって前記第１の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第１のサンプルは、前記第１のフィルタリングされた値を有する、
を備える、方法。
【請求項２】
前記第１のフィルタリングされた値は、前記第１の値に前記第１のクリッピング値を加えたものに等しい、請求項１に記載の方法。
【請求項３】
前記第１のフィルタリングされた値は、前記第１の値から前記第１のクリッピング値を引いたものに等しい、請求項１に記載の方法。
【請求項４】
前記第１の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、前記第１のサンプルについての前記第１のクリッピング値を決定すること、
を更に備える、請求項１に記載の方法。
【請求項５】
前記第１の再構築されたブロックは、第２の値を有する第２のサンプルを含み、前記方法は、
前記第１の再構築されたブロックの前記境界に対する前記第２のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックの前記サイズに基づいて、前記第２のサンプルについての第２のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第２のサンプルに対する修正の量が前記第２のクリッピング値よりも小さいことに応答して、前記第２のサンプルについての第２のフィルタリングされた値を決定するために、前記第２のサンプルに対する前記修正の量によって前記第２の値を修正することと、
を更に備え、前記デブロッキングフィルタリングされたブロック中で、前記第２のサンプルは、前記第２のフィルタリングされた値を有する、請求項１に記載の方法。
【請求項６】
前記第１のサンプルと前記第１の再構築されたブロックの前記境界との間の距離は、前記第２のサンプルと前記第１の再構築されたブロックの前記境界との間の距離に等しく、前記第１のクリッピング値は、前記第２のサンプルについての前記第２のクリッピング値に等しい、請求項５に記載の方法。
【請求項７】
前記第１のサンプルと前記第１の再構築されたブロックの前記境界との間の距離は、前記第２のサンプルと前記第１の再構築されたブロックの前記境界との間の距離とは異なり、前記第１のクリッピング値は、前記第２のクリッピング値とは異なる、請求項５に記載の方法。
【請求項８】
前記第１の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが、前記第１の再構築されたブロックの前記境界から６つ以下のサンプル離れたサンプルにのみ適用されると決定すること、
を更に備える、請求項１に記載の方法。
【請求項９】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界に隣接していることに応答して、前記第１のクリッピング値が６に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１０】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から１サンプル離れていることに応答して、前記第１のクリッピング値が５に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１１】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から２サンプル離れていることに応答して、前記第１のクリッピング値が４に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１２】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から３サンプル離れていることに応答して、前記第１のクリッピング値が３に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１３】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から４サンプル離れていることに応答して、前記第１のクリッピング値が２に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１４】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から５サンプル離れていることに応答して、前記第１のクリッピング値が１に等しいと決定すること、
を更に備える、請求項８に記載の方法。
【請求項１５】
前記第１の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界から２つ以下のサンプル離れたサンプルに適用されると決定すること、
を更に備える、請求項１に記載の方法。
【請求項１６】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界に隣接していることに応答して、前記第１のクリッピング値が６に等しいと決定すること、
を更に備える、請求項１５に記載の方法。
【請求項１７】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から１サンプル離れていることに応答して、前記第１のクリッピング値が４に等しいと決定すること、
を更に備える、請求項１５に記載の方法。
【請求項１８】
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から２サンプル離れていることに応答して、前記第１のクリッピング値が２に等しいと決定すること、
を更に備える、請求項１５に記載の方法。
【請求項１９】
ビデオデータの第２の再構築されたブロックを取得することと、ここにおいて、前記第２の再構築されたブロックは、第２の値を有する第２のサンプルを含み、前記第２の再構築されたブロックは、前記第１の再構築されたブロックと前記境界を共有し、前記第１の再構築されたブロックと前記第２の再構築されたブロックとは、異なるサイズである、
第２のデブロッキングフィルタリングされたブロックを決定するために、前記第２の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第２の再構築されたブロックの境界に対する前記第２のサンプルのロケーションに基づいて、及び前記第２の再構築されたブロックのサイズに基づいて、前記第２のサンプルについての第２のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第２のサンプルに対する修正の量が前記第２のクリッピング値よりも大きいことに応答して、前記第２のサンプルについての第２のフィルタリングされた値を決定するために、前記第２のクリッピング値によって前記第２の値を修正することと、
ビデオデータの第２のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記第２のデブロッキングフィルタリングされたブロック中で、前記第２のサンプルは、前記第２のフィルタリングされた値を有する、
を更に備える、請求項１に記載の方法。
【請求項２０】
前記第１のデブロッキングフィルタリングされたブロックを決定するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用することは、第１の長さの第１のフィルタで前記第１の再構築されたブロック中のサンプルをフィルタリングすることを備え、
前記第２のデブロッキングフィルタリングされたブロックを決定するために、前記第２の再構築されたブロックにデブロッキングフィルタリングを適用することは、前記第１の長さとは異なる第２の長さの第２のフィルタで前記第２の再構築されたブロック中のサンプルをフィルタリングすることを備える、
請求項１９に記載の方法。
【請求項２１】
前記方法は、ビデオ符号化プロセスの一部として実行される、請求項１に記載の方法。
【請求項２２】
ビデオデータを復号するためのデバイスであって、前記デバイスは、
ビデオデータを記憶するように構成されたメモリと、
回路内にインプリメントされた１つ以上のプロセッサと、
を備え、前記１つ以上のプロセッサは、
ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、前記第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第１の再構築されたブロックの境界に対する前記第１のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックのサイズに基づいて、前記第１のサンプルについての第１のクリッピング値を決定することと、
前記第１のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する前記修正の量が前記第１のクリッピング値よりも大きいことに応答して、前記第１のサンプルについての第１のフィルタリングされた値を決定するために、前記第１のクリッピング値によって前記第１の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第１のサンプルは、前記第１のフィルタリングされた値を有する、
を行うように構成される、デバイス。
【請求項２３】
前記第１のフィルタリングされた値は、前記第１の値に前記第１のクリッピング値を加えたものに等しい、請求項２２に記載のデバイス。
【請求項２４】
前記第１のフィルタリングされた値は、前記第１の値から前記第１のクリッピング値を引いたものに等しい、請求項２２に記載のデバイス。
【請求項２５】
前記１つ以上のプロセッサは、
前記第１の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、前記第１のサンプルについての前記第１のクリッピング値を決定すること、
を行うように更に構成される、請求項２２に記載のデバイス。
【請求項２６】
前記再構築されたブロックは、第２の値を有する第２のサンプルを含み、前記１つ以上のプロセッサは、
前記第１の再構築されたブロックの前記境界に対する前記第２のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックの前記サイズに基づいて、前記第２のサンプルについての第２のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第２のサンプルに対する修正の量が前記第２のクリッピング値よりも小さいことに応答して、前記第２のサンプルについての第２のフィルタリングされた値を決定するために、前記第２のサンプルに対する前記修正の量によって前記第２の値を修正することと、
を行うように更に構成され、前記デブロッキングフィルタリングされたブロック中で、前記第２のサンプルは、前記第２のフィルタリングされた値を有する、請求項２２に記載のデバイス。
【請求項２７】
前記第１のサンプルと前記第１の再構築されたブロックの前記境界との間の距離は、前記第２のサンプルと前記第１の再構築されたブロックの前記境界との間の距離に等しく、前記第１のクリッピング値は、前記第２のサンプルについての前記第２のクリッピング値に等しい、請求項２６に記載のデバイス。
【請求項２８】
前記第１のサンプルと前記第１の再構築されたブロックの前記境界との間の距離は、前記第２のサンプルと前記第１の再構築されたブロックの前記境界との間の距離とは異なり、前記第１のクリッピング値は、前記第２のクリッピング値とは異なる、請求項２６に記載のデバイス。
【請求項２９】
前記１つ以上のプロセッサは、
前記第１の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが、前記第１の再構築されたブロックの前記境界から６つ以下のサンプル離れたサンプルにのみ適用されると決定すること、
を行うように更に構成される、請求項２２に記載のデバイス。
【請求項３０】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界に隣接していることに応答して、前記第１のクリッピング値が６に等しいと決定すること、
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３１】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から１サンプル離れていることに応答して、前記第１のクリッピング値が５に等しいと決定すること、
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３２】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から２サンプル離れていることに応答して、前記第１のクリッピング値が４に等しいと決定すること
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３３】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から３サンプル離れていることに応答して、前記第１のクリッピング値が３に等しいと決定すること、
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３４】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から４サンプル離れていることに応答して、前記第１のクリッピング値が２に等しいと決定すること
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３５】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の６行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から５サンプル離れていることに応答して、前記第１のクリッピング値が１に等しいと決定すること、
を行うように更に構成される、請求項２９に記載のデバイス。
【請求項３６】
前記１つ以上のプロセッサは、
前記第１の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界から２つ以下のサンプル離れたサンプルに適用されると決定すること、
を行うように更に構成される、請求項２２に記載のデバイス。
【請求項３７】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界に隣接していることに応答して、前記第１のクリッピング値が６に等しいと決定すること、
を行うように更に構成される、請求項３６に記載のデバイス。
【請求項３８】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から１サンプル離れていることに応答して、前記第１のクリッピング値が４に等しいと決定すること、
を行うように更に構成される、請求項３６に記載のデバイス。
【請求項３９】
前記１つ以上のプロセッサは、
前記デブロッキングフィルタが前記第１の再構築されたブロックの前記境界の２行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第１のサンプルが前記第１の再構築されたブロックの前記境界から２サンプル離れていることに応答して、前記第１のクリッピング値が２に等しいと決定すること
を行うように更に構成される、請求項３６に記載のデバイス。
【請求項４０】
前記１つ以上のプロセッサは、
ビデオデータの第２の再構築されたブロックを取得することと、ここにおいて、前記第２の再構築されたブロックは、第２の値を有する第２のサンプルを含み、前記第２の再構築されたブロックは、前記第１の再構築されたブロックと前記境界を共有し、前記第１の再構築されたブロックと前記第２の再構築されたブロックとは、異なるサイズである、
第２のデブロッキングフィルタリングされたブロックを決定するために、前記第２の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第２の再構築されたブロックの境界に対する前記第２のサンプルのロケーションに基づいて、及び前記第２の再構築されたブロックのサイズに基づいて、前記第２のサンプルについての第２のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第２のサンプルに対する修正の量が前記第２のクリッピング値よりも大きいことに応答して、前記第２のサンプルについての第２のフィルタリングされた値を決定するために、前記第２のクリッピング値によって前記第２の値を修正することと、
ビデオデータの第２のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記第２のデブロッキングフィルタリングされたブロック中で、前記第２のサンプルは、前記第２のフィルタリングされた値を有する、
を行うように更に構成される、請求項２２に記載のデバイス。
【請求項４１】
前記第１のデブロッキングフィルタリングされたブロックを決定するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、前記１つ以上のプロセッサは、第１の長さの第１のフィルタで前記第１の再構築されたブロック中のサンプルをフィルタリングするように更に構成され、
前記第２のデブロッキングフィルタリングされたブロックを決定するために、前記第２の再構築されたブロックにデブロッキングフィルタリングを適用するために、前記１つ以上のプロセッサは、前記第１の長さとは異なる第２の長さの第２のフィルタで前記第２の再構築されたブロック中のサンプルをフィルタリングするように更に構成される、
請求項４０に記載のデバイス。
【請求項４２】
前記デバイスは、ビデオ符号化プロセスの一部としてビデオデータを復号するように構成されたビデオ符号化器を備える、請求項２２に記載のデバイス。
【請求項４３】
１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、前記第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第１の再構築されたブロックの境界に対する前記第１のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックのサイズに基づいて、前記第１のサンプルについての第１のクリッピング値を決定することと、
前記第１のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する前記修正の量が前記第１のクリッピング値よりも大きいことに応答して、前記第１のサンプルについての第１のフィルタリングされた値を決定するために、前記第１のクリッピング値によって前記第１の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第１のサンプルは、前記第１のフィルタリングされた値を有する、
を行わせる命令を記憶する、コンピュータ可読記憶媒体。
【請求項４４】
ビデオデータを復号するための装置であって、前記装置は、
ビデオデータの第１の再構築されたブロックを取得するための手段と、ここにおいて、前記第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第１の再構築されたブロックにデブロッキングフィルタリングを適用するための手段と、
前記第１の再構築されたブロックの境界に対する前記第１のサンプルのロケーションに基づいて、及び前記第１の再構築されたブロックのサイズに基づいて、前記第１のサンプルについての第１のクリッピング値を決定するための手段と、
前記第１のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する修正の量と比較するための手段と、
前記デブロッキングフィルタリングによって引き起こされた前記第１のサンプルに対する前記修正の量が前記第１のクリッピング値よりも大きいことに応答して、前記第１のサンプルについての第１のフィルタリングされた値を決定するために、前記第１のクリッピング値によって前記第１の値を修正するための手段と、
ビデオデータのデブロッキングフィルタリングされたブロックを出力するための手段と、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第１のサンプルは、前記第１のフィルタリングされた値を有する、
を備える、装置。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本願は、２０１９年８月２６日に出願された米国特許出願第１６／５５１，３８８号の優先権を主張し、それは、２０１８年８月２７日に出願された米国仮特許出願第６２／７２３，４０８号、及び２０１８年１０月６日に出願された米国仮特許出願第６２／７４２，３３１号の利益を主張し、各々の内容全体は、参照によって本明細書に組み込まれる。
【技術分野】
【０００２】
[0002]本開示は、ビデオ符号化及びビデオ復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラ式又は衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、及び同様のものを含む、幅広い範囲のデバイスに組み込まれることができる。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ Ｈ．２６３、ＩＴＵ−Ｔ Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ １０、アドバンストビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）規格、ＩＴＵ−Ｔ Ｈ．２６５／高効率ビデオコーディング（ＨＥＶＣ）、及びそのような規格の拡張によって定義された規格に説明されているものなど、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信、受信、符号化、復号、及び／又は記憶し得る。
【０００４】
[0004]ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減又は取り除くために、空間（イントラピクチャ）予測及び／又は時間（インターピクチャ）予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス（例えば、ビデオピクチャ又はビデオピクチャの一部分）は、コーディングツリーユニット（ＣＴＵ）、コーディングユニット（ＣＵ）、及び／又はコーディングノードとも呼ばれ得る、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の近隣するブロック中の参照サンプルに対して空間予測を使用して符号化される。ピクチャのインターコーディングされた（Ｐ又はＢ）スライス中のビデオブロックは、同じピクチャ中の近隣するブロック中の参照サンプルに対して空間予測を、又は他の参照ピクチャ中の参照サンプルに対して時間予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【発明の概要】
【０００５】
[0005]本開示は、ビデオ符号化及び／又はビデオ復号プロセスにおける再構築されたビデオデータをフィルタリングすることに関連付けられた技法について説明し、より具体的には、本開示は、デブロッキングフィルタリングを実行するための技法に関連する技法について説明する。デブロッキングフィルタリングは、再構築プロセスの結果として生じるブロックのエッジに沿ったブロッキネスアーティファクト（blockiness artifacts）を低減し得るタイプのフィルタリングである。
【０００６】
[0006]例によると、ビデオデータを復号する方法は、ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、  デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、  第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定することと、  第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較することと、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって（by）第１の値を修正することと、  ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第１のサンプルは、第１のフィルタリングされた値を有する、  を含む。
【０００７】
[0007]別の例によると、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされた１つ以上のプロセッサとを含み、その１つ以上のプロセッサは、ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、  デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、  第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定することと、  第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較することと、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正することと、  ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第１のサンプルは、第１のフィルタリングされた値を有する、  を行うように構成される。
【０００８】
[0008]別の例によると、コンピュータ可読記憶媒体は、１つ以上のプロセッサによって実行されると、その１つ以上のプロセッサに、ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、  デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、  第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定することと、  第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較することと、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正することと、  ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第１のサンプルは、第１のフィルタリングされた値を有する、  を行わせる命令を記憶する。
【０００９】
[0009]別の例によると、ビデオデータを復号するための装置は、ビデオデータの第１の再構築されたブロックを取得するための手段と、ここにおいて、第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、  デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用するための手段と、  第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定するための手段と、  第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較するための手段と、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正するための手段と、  ビデオデータのデブロッキングフィルタリングされたブロックを出力するための手段と、ここにおいて、デブロッキングフィルタリングされたブロックでは、第１のサンプルは、第１のフィルタリングされた値を有する、  を含む。
【００１０】
[0010]１つ以上の例の詳細は、添付の図面及び以下の説明に記載されている。他の特徴、目的、及び利点が、説明、図面、及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]本開示を実行し得る実例的なビデオ符号化及び復号システムを例示するブロック図である。
【図２Ａ】[0012]実例的な四分木二分木（ＱＴＢＴ：quadtree binary tree）構造を例示する概念図である。
【図２Ｂ】対応するコーディングツリーユニット（ＣＴＵ）を例示する概念図である。
【図３】[0013]隣接ブロックＰ及びＱでデブロッキングされるべき４サンプルセグメントの例を示す。
【図４】[0014]４つの円で囲まれたサンプルの２次導関数（the second derivatives）が算出されるビデオデータの実例的なブロックを示し、その合計は、デブロッキングがセグメントに対して適用されるべきかどうかを決定するために使用される。
【図５】[0015]デブロッキングされるべきセグメント中の４つのラインのうちの１つについてのビデオデータのブロックのサンプルの例を示す。
【図６】[0016]本開示の技法を実行し得る実例的なビデオ符号化器を例示するブロック図である。
【図７】[0017]本開示の技法を実行し得る実例的なビデオ復号器を例示するブロック図である。
【図８】[0018]本開示の技法を実行するための実例的なフィルタユニットを例示するブロック図である。
【図９】[0019]ビデオ符号化プロセスの例を例示するフローチャートである。
【図１０】[0020]ビデオ復号プロセスの例を例示するフローチャートである。
【図１１】[0021]ビデオ復号プロセスの例を例示するフローチャートである。
【詳細な説明】
【００１２】
[0022]ビデオコーディング（例えば、ビデオ符号化及び／又はビデオ復号）は、典型的には、同じピクチャ中のビデオデータの既にコーディングされたブロック（例えば、イントラ予測）又は異なるピクチャ中のビデオデータの既にコーディングされたブロック（例えば、インター予測）のうちのいずれかからビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオ符号化器はまた、予測ブロックを元のブロックと比較することによって残差データを算出する。このことから、残差データは、予測ブロックと元のブロックとの間の差分を表す。残差データをシグナリングするために必要とされるビット数を低減するために、ビデオ符号化器は、残差データを変換及び量子化し、符号化されたビットストリーム中で変換及び量子化された残差データをシグナリングする。変換及び量子化プロセスによって達成される圧縮は非可逆であり得、変換及び量子化プロセスが、復号されたビデオデータに歪みをもたらし得ることを意味し得る。
【００１３】
[0023]ビデオ復号器は、予測ブロック単独よりも元のビデオブロックに密接に一致する再構築されたビデオブロックを作り出すために、残差データを復号し、それを予測ブロックに加算する。残差データの変換及び量子化によってもたらされる損失に起因して、第１の再構築されたブロックは、歪み又はアーティファクトを有し得る。アーティファクト又は歪みの１つの一般的なタイプは、ブロッキネスと呼ばれ、ここで、ビデオデータをコーディングするために使用されるブロックの境界が可視である。
【００１４】
[0024]復号されたビデオの品質を更に改善するために、ビデオ復号器は、再構築されたビデオブロックに対して１つ以上のフィルタリングオペレーション（filtering operation）を実行することができる。これらのフィルタリングオペレーションの例は、デブロッキングフィルタリング、サンプル適応オフセット（ＳＡＯ：sample adaptive offset）フィルタリング、及び適応ループフィルタリング（ＡＬＦ：adaptive loop filtering）を含む。これらのフィルタリングオペレーションについてのパラメータは、ビデオ符号化器によって決定され、符号化されたビデオのビットストリーム中で明示的にシグナリングされ得るか、又はパラメータが符号化されたビデオのビットストリーム中で明示的にシグナリングされる必要なしにビデオ復号器によって黙示的に決定され得るかのうちのいずれかである。
【００１５】
[0025]本開示は、ビデオ符号化及び／又はビデオ復号プロセスにおける再構築されたビデオデータをフィルタリングすることに関連付けられた技法について説明し、より具体的には、本開示は、デブロッキングフィルタリングに関連する技法について説明する。デブロッキングフィルタリングは、ブロッキネスを低減するように特に設計されたタイプのフィルタリングである。本開示は、圧縮、ぼかし、等によって歪められ得るビデオフレーム又はピクチャなどのビデオフレーム又はピクチャに対して実行されるフィルタリングプロセスに関連する技法について説明するが、本技法は、上記の歪みの例に限定されると見なされるべきではない。本技法は、ビデオの客観的品質及び主観的品質を改善し得る。本明細書に説明される技法は、Ｈ．２６６などの新しいビデオコーディングソリューションの設計において、又はＨ．２６５／高効率ビデオコーディング（ＨＥＶＣ）などの既存のビデオコーデックのうちの任意のものを拡張するために使用され得るか、又は将来のビデオコーディング規格のための有望なコーディングツールとして提案され得る。説明される技術はまた、標準又はプロプライエタリコーデックのうちのいずれかから出力されたビデオフレームに対する後処理方法として使用され得る。
【００１６】
[0026]ＨＥＶＣの現在のバージョンは、６４×６４の最大ブロックサイズを利用する。現在開発中の多用途ビデオコーディング（Versatile Video Coding）規格などの将来のビデオコーディング規格は、しかしながら、６４×６４よりも大きいブロックサイズを使用し得る。本開示は、特により大きいブロックサイズと併せて、デブロッキングフィルタリングから取得される歪み低減を改善し得る技法について説明する。更に、本明細書に説明される技法は、計算の複雑さ及びコーディング効率の所望されるレベルを維持しながら、この改善された歪み低減を取得し得る。
【００１７】
[0027]本開示で使用される場合、ビデオコーディングという用語は、包括的に、ビデオ符号化又はビデオ復号のうちのいずれかを指す。同様に、ビデオコーダという用語は、包括的に、ビデオ符号化器又はビデオ復号器を指し得る。その上、ビデオ復号に関して本開示に説明されるある特定の技法はまた、ビデオ符号化に適用され得、その逆もまた然りである。例えば、ビデオ符号化器及びビデオ復号器は、同じプロセス、又は相反するプロセスを実行するように構成されることが多い。また、ビデオ符号化器は、典型的に、ビデオデータをどのように符号化するかを決定するプロセスの一部としてビデオ復号（再構築とも呼ばれる）を実行する。例えば、ビデオ符号化器は、ある特定の符号化方式が望ましいレート歪みトレードオフをもたらすかどうかを決定するために、またビデオ復号器が動き補償を実行するときにビデオ符号化器がビデオ復号器に利用可能な同じブロックを使用して動き推定を実行することができるように、復号されたビデオブロックに対してデブロッキングフィルタリングを実行し得る。
【００１８】
[0028]図１は、本開示のデブロッキングフィルタリング技法を実行し得る実例的なビデオ符号化及び復号システム１００を例示するブロック図である。本開示の技法は、一般に、ビデオデータのコーディング（符号化及び／又は復号）を対象とし、より詳細には、ビデオデータをデブロッキングフィルタリングするための技法を対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。このことから、ビデオデータは、生の、コーディングされていないビデオ、符号化されたビデオ、復号された（例えば、再構築された）ビデオ、及びシグナリングデータなどのビデオメタデータを含み得る。
【００１９】
[0029]図１に示されているように、システム１００は、この例では、宛先デバイス１１６によって復号及び表示されることになる符号化されたビデオデータを提供するソースデバイス１０２を含む。特に、ソースデバイス１０２は、コンピュータ可読媒体１１０を介して宛先デバイス１１６にビデオデータを提供する。ソースデバイス１０２及び宛先デバイス１１６は、デスクトップコンピュータ、ノートブック（即ち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、又は同様のものを含む、幅広い範囲のデバイスのうちの任意のものであり得る。いくつかのケースでは、ソースデバイス１０２及び宛先デバイス１１６は、ワイヤレス通信のために装備され得、このことから、ワイヤレス通信デバイスと呼ばれ得る。
【００２０】
[0030]図１の例では、ソースデバイス１０２は、ビデオソース１０４、メモリ１０６、ビデオ符号化器２００、及び出力インターフェース１０８を含む。宛先デバイス１１６は、入力インターフェース１２２、ビデオ復号器３００、メモリ１２０、及びディスプレイデバイス１１８を含む。本開示に従って、ソースデバイス１０２のビデオ符号化器２００と宛先デバイス１１６のビデオ復号器３００とは、本開示に説明されるデブロッキングフィルタリングのための技法を適用するように構成され得る。このことから、ソースデバイス１０２は、ビデオ符号化デバイスの例を表し、宛先デバイス１１６は、ビデオ復号デバイスの例を表す。他の例では、ソースデバイス及び宛先デバイスは、他のコンポーネント又は配置を含み得る。例えば、ソースデバイス１０２は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス１１６は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００２１】
[0031]図１に示されているシステム１００は単に、一例に過ぎない。一般に、任意のデジタルビデオ符号化及び／又は復号デバイスが、本開示に説明されるデブロッキングフィルタリングのための技法を実行し得る。ソースデバイス１０２及び宛先デバイス１１６は単に、ソースデバイス１０２が宛先デバイス１１６への送信のためのコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。本開示は、データのコーディング（符号化及び／又は復号）を実行するデバイスとして「コーディング」デバイスに言及する。このことから、ビデオ符号化器２００及びビデオ復号器３００は、コーディングデバイスの例、特に、ビデオ符号化器及びビデオ復号器をそれぞれ表す。いくつかの例では、ソースデバイス１０２及び宛先デバイス１１６は、ソースデバイス１０２及び宛先デバイス１１６の各々がビデオ符号化及び復号コンポーネントを含むような実質的に対称的な形で動作し得る。故に、システム１００は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、又はビデオ電話通信のために、ソースデバイス１０２と宛先デバイス１１６との間の１方向又は２方向ビデオ送信をサポートし得る。
【００２２】
[0032]一般に、ビデオソース１０４は、ビデオデータ（即ち、生の、コーディングされていないビデオデータ）のソースを表し、ピクチャについてのデータを符号化するビデオ符号化器２００に、ビデオデータの連続する一連のピクチャ（「フレーム」とも呼ばれる）を提供する。ソースデバイス１０２のビデオソース１０４は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生のビデオを包含するビデオアーカイブ、及び／又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオソース１０４は、コンピュータグラフィックスベースのデータをソースビデオとして、又はライブビデオ、アーカイブされたビデオ、及びコンピュータ生成されたビデオの組み合わせとして生成し得る。各ケースでは、ビデオ符号化器２００が、キャプチャされた、予めキャプチャされた、又はコンピュータ生成されたビデオデータを符号化する。ビデオ符号化器２００は、ピクチャを、受信された順序（「表示順序」と呼ばれることもある）から、コーディングのためのコーディング順序に再配列し得る。ビデオ符号化器２００は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス１０２は次いで、例えば、宛先デバイス１１６の入力インターフェース１２２による受信及び／又は取り出しのために、出力インターフェース１０８を介してコンピュータ可読媒体１１０上に符号化されたビデオデータを出力し得る。
【００２３】
[0033]ソースデバイス１０２のメモリ１０６及び宛先デバイス１１６のメモリ１２０は、汎用メモリを表す。いくつかの例では、メモリ１０６、１２０は、生のビデオデータ、例えば、ビデオソース１０４からの生のビデオ、及びビデオ復号器３００からの生の復号されたビデオデータを記憶し得る。追加又は代替として、メモリ１０６、１２０は、例えば、それぞれビデオ符号化器２００及びビデオ復号器３００によって実行可能なソフトウェア命令を記憶し得る。メモリ１０６及び１２０は、この例ではビデオ符号化器２００及びビデオ復号器３００とは別個に示されているが、ビデオ符号化器２００及びビデオ復号器３００はまた、機能的に類似又は同等の目的のために内部メモリを含み得ることが理解されるべきである。更に、メモリ１０６、１２０は、符号化されたビデオデータ、例えば、ビデオ符号化器２００からの出力及びビデオ復号器３００への入力を記憶し得る。いくつかの例では、メモリ１０６、１２０の一部分は、例えば、生の、復号された、及び／又は符号化されたビデオデータを記憶するために、１つ以上のビデオバッファとして割り振られ得る。
【００２４】
[0034]コンピュータ可読媒体１１０は、ソースデバイス１０２から宛先デバイス１１６に符号化されたビデオデータを移動させることが可能な任意のタイプの媒体又はデバイスを表し得る。一例では、コンピュータ可読媒体１１０は、ソースデバイス１０２が、例えば、無線周波数ネットワーク又はコンピュータベースのネットワークを介して、リアルタイムで宛先デバイス１１６に符号化されたビデオデータを直接送信することを可能にするための通信媒体を表す。出力インターフェース１０８は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース１２２は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数（ＲＦ）スペクトル又は１つ以上の物理的伝送線路などのワイヤレス又はワイヤード通信媒体のうちの一方又は両方を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス１０２から宛先デバイス１１６への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【００２５】
[0035]いくつかの例では、コンピュータ可読媒体１１０は、記憶デバイス１１２を含み得る。ソースデバイス１０２は、出力インターフェース１０８から記憶デバイス１１２に符号化されたデータを出力し得る。同様に、宛先デバイス１１６は、入力インターフェース１２２を介して記憶デバイス１１２からの符号化されたビデオデータにアクセスし得る。記憶デバイス１１２は、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体などの、様々な分散された又は局所的にアクセスされるデータ記憶媒体のうちの任意のものを含み得る。
【００２６】
[0036]いくつかの例では、コンピュータ可読媒体１１０は、ソースデバイス１０２によって生成される符号化されたビデオデータを記憶し得るファイルサーバ１１４又は別の中間記憶デバイスを含み得る。ソースデバイス１０２は、符号化されたビデオデータをファイルサーバ１１４に出力し得る。宛先デバイス１１６は、ストリーミング又はダウンロードを介してファイルサーバ１１４からの記憶されたビデオデータにアクセスし得る。ファイルサーバ１１４は、符号化されたビデオデータを記憶することと、宛先デバイス１１６にその符号化されたビデオデータを送信することとが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ１１４は、（例えば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、コンテンツ配信ネットワークデバイス、又はネットワーク接続記憶（ＮＡＳ）デバイスを表し得る。宛先デバイス１１６は、インターネット接続を含む、任意の標準データ接続を通じて、ファイルサーバ１１４からの符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ１１４上に記憶された符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、デジタル加入者回線（ＤＳＬ）、ケーブルモデム、等）、又はその両方の組み合わせを含み得る。ファイルサーバ１１４及び入力インターフェース１２２は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、又はそれらの組み合わせに従って動作するように構成され得る。
【００２７】
[0037]出力インターフェース１０８及び入力インターフェース１２２は、ワイヤレス送信機／受信機、モデム、ワイヤードネットワーキングコンポーネント（例えば、イーサネット（登録商標）カード）、様々なＩＥＥＥ８０２．１１規格のうちの任意のものに従って動作するワイヤレス通信コンポーネント、又は他の物理的コンポーネントを表し得る。出力インターフェース１０８及び入力インターフェース１２２がワイヤレスコンポーネントを含む例では、出力インターフェース１０８及び入力インターフェース１２２は、４Ｇ、４Ｇ−ＬＴＥ（登録商標）（ロングタームエボリューション）、ＬＴＥアドバンスト、５Ｇ、又は同様のものなどのセルラ通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース１０８がワイヤレス送信機を含むいくつかの例では、出力インターフェース１０８及び入力インターフェース１２２は、ＩＥＥＥ８０２．１１仕様、ＩＥＥＥ８０２．１５仕様（例えば、ＺｉｇＢｅｅ（登録商標））、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格、又は同様のものなどの他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス１０２及び／又は宛先デバイス１１６は、それぞれのシステムオンチップ（ＳｏＣ）デバイスを含み得る。例えば、ソースデバイス１０２は、ビデオ符号化器２００及び／又は出力インターフェース１０８に帰する機能を実行するためのＳｏＣデバイスを含み得、宛先デバイス１１６は、ビデオ復号器３００及び／又は入力インターフェース１２２に帰する機能を実行するためのＳｏＣデバイスを含み得る。
【００２８】
[0038]本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、ＨＴＴＰを通した動的適応型ストリーミング（ＤＡＳＨ）などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、又は他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。
【００２９】
[0039]宛先デバイス１１６の入力インターフェース１２２は、コンピュータ可読媒体１１０（例えば、通信媒体、記憶デバイス１１２、ファイルサーバ１１４、又は同様のもの）から符号化されたビデオのビットストリームを受信する。コンピュータ可読媒体１１０からの符号化されたビデオのビットストリームは、ビデオブロック又は他のコーディングされたユニット（例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、又は同様のもの）の特性及び／又は処理を記述する値を有するシンタックス要素などの、ビデオ符号化器２００によって定義され、ビデオ復号器３００によっても使用されるシグナリング情報を含み得る。ディスプレイデバイス１１８は、ユーザに復号されたビデオデータの復号されたピクチャを表示する。ディスプレイデバイス１１８は、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、又は別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちの任意のものを表し得る。
【００３０】
[0040]図１には示されていないが、いくつかの態様では、ビデオ符号化器２００及びビデオ復号器３００は各々、オーディオ符号化器及び／又はオーディオ復号器と一体化され得、共通のデータストリームにおけるオーディオとビデオとの両方を含む多重化されたストリームを処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、又は他のハードウェア及び／若しくはソフトウェアを含み得る。適用可能である場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ Ｈ．２２３マルチプレクサプロトコルに、又はユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３１】
[0041]ビデオ符号化器２００及びビデオ復号器３００は各々、１つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせなどの、様々な適した符号化器及び／又は復号器回路のうちの任意のものとしてインプリメントされ得る。本技法がソフトウェアにおいて部分的にインプリメントされるとき、デバイスは、適した非一時的コンピュータ可読媒体中にソフトウェアのための命令を記憶し、本開示の技法を実行するために、１つ以上のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオ符号化器２００及びビデオ復号器３００の各々は、１つ以上の符号化器又は復号器中に含まれ得、それらのうちのいずれも、それぞれのデバイス中で、組み合わされた符号化器／復号器（ＣＯＤＥＣ）の一部として一体化され得る。ビデオ符号化器２００及び／又はビデオ復号器３００を含むデバイスは、集積回路、マイクロプロセッサ、及び／又はセルラ電話などのワイヤレス通信デバイスを含み得る。
【００３２】
[0042]ビデオ符号化器２００及びビデオ復号器３００は、高効率ビデオコーディング（ＨＥＶＣ）とも呼ばれるＩＴＵ−Ｔ Ｈ．２６５などのビデオコーディング規格、又はマルチビュー及び／又はスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。他の例では、ビデオ符号化器２００及びビデオ復号器３００は、多用途ビデオコーディング（ＶＶＣ）とも呼ばれる、共同調査テストモデル（ＪＥＭ：Joint Exploration Test Model）又はＩＴＵ−Ｔ Ｈ．２６６などの他のプロプライエタリ規格又は工業規格に従って動作し得る。ＶＶＣ規格の最近のドラフトは、Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE（以下、「ＶＶＣドラフト６」）に記載されている。本開示の技法は、しかしながら、いかなる特定のコーディング規格にも限定されない。
【００３３】
[0043]一般に、ビデオ符号化器２００及びビデオ復号器３００は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される（例えば、符号化される、復号される、又は符号化及び／若しくは復号プロセスにおいて別様に使用される）データを含む構造を指す。例えば、ブロックは、ルミナンスデータ及び／又はクロミナンスデータのサンプルの２次元行列を含み得る。一般に、ビデオ符号化器２００及びビデオ復号器３００は、ＹＵＶ（例えば、Ｙ、Ｃｂ、Ｃｒ）フォーマットで表されるビデオデータをコーディングし得る。即ち、ピクチャのサンプルについての赤、緑、及び青（ＲＧＢ）データをコーディングするのではなく、ビデオ符号化器２００及びビデオ復号器３００は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオ符号化器２００は、受信されたＲＧＢフォーマットされたデータを符号化より前にＹＵＶ表現に変換し、ビデオ復号器３００は、ＹＵＶ表現をＲＧＢフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット（図示せず）が、これらの変換を実行し得る。
【００３４】
[0044]本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むように、ピクチャのコーディング（例えば、符号化及び復号）に言及し得る。同様に、本開示は、ブロックについてのデータを符号化又は復号するプロセス、例えば、予測及び／又は残差コーディングを含むように、ピクチャのブロックのコーディングに言及し得る。符号化されたビデオのビットストリームは、一般に、コーディング決定（例えば、コーディングモード）とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。このことから、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素についての値をコーディングすることとして理解されるべきである。
【００３５】
[0045]ＨＥＶＣは、コーディングユニット（ＣＵ）と、予測ユニット（ＰＵ）と、変換ユニット（ＴＵ）とを含む様々なブロックを定義する。ＨＥＶＣによると、（ビデオ符号化器２００などの）ビデオコーダは、四分木構造に従ってコーディングツリーユニット（ＣＴＵ）をＣＵに区分する。即ち、ビデオコーダは、ＣＴＵ及びＣＵを４つの等しい重複しない四角形（square）に区分し、四分木の各ノードは、０又は４つの子ノードのうちのいずれかを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのＣＵは、１つ以上のＰＵ及び／又は１つ以上のＴＵを含み得る。ビデオコーダは、ＰＵとＴＵとを更に区分し得る。例えば、ＨＥＶＣでは、残差四分木（ＲＱＴ）は、ＴＵの区分を表す。ＨＥＶＣでは、ＰＵは、インター予測データ又はイントラ予測データを表し、ＴＵは、残差データを表す。イントラ予測されるＣＵは、イントラモードインジケーションなどのイントラ予測情報を含む。
【００３６】
[0046]ビデオ符号化器２００及びビデオ復号器３００は、高効率ビデオコーディング（ＨＥＶＣ）とも呼ばれるＩＴＵ−Ｔ Ｈ．２６５などのビデオコーディング規格、又はマルチビュー及び／又はスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。代替として、ビデオ符号化器２００及びビデオ復号器３００は、多用途ビデオコーディング（ＶＶＣ）とも呼ばれる、共同調査テストモデル（ＪＥＭ）又はＩＴＵ−Ｔ Ｈ．２６６などの他のプロプライエタリ規格又は工業規格に従って動作し得る。ＶＶＣ規格の最近のドラフトは、Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE（以下、「ＶＶＣドラフト６」）に記載されている。本開示の技法は、しかしながら、いかなる特定のコーディング規格にも限定されない。
【００３７】
[0047]一般に、ビデオ符号化器２００及びビデオ復号器３００は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される（例えば、符号化される、復号される、又は符号化及び／若しくは復号プロセスにおいて別様に使用される）データを含む構造を指す。例えば、ブロックは、ルミナンスデータ及び／又はクロミナンスデータのサンプルの２次元行列を含み得る。一般に、ビデオ符号化器２００及びビデオ復号器３００は、ＹＵＶ（例えば、Ｙ、Ｃｂ、Ｃｒ）フォーマットで表されるビデオデータをコーディングし得る。即ち、ピクチャのサンプルについての赤、緑、及び青（ＲＧＢ）データをコーディングするのではなく、ビデオ符号化器２００及びビデオ復号器３００は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオ符号化器２００は、受信されたＲＧＢフォーマットされたデータを符号化より前にＹＵＶ表現に変換し、ビデオ復号器３００は、ＹＵＶ表現をＲＧＢフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット（図示せず）が、これらの変換を実行し得る。
【００３８】
[0048]本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むように、ピクチャのコーディング（例えば、符号化及び復号）に言及し得る。同様に、本開示は、ブロックについてのデータを符号化又は復号するプロセス、例えば、予測及び／又は残差コーディングを含むように、ピクチャのブロックのコーディングに言及し得る。符号化されたビデオのビットストリームは、一般に、コーディング決定（例えば、コーディングモード）とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。このことから、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素についての値をコーディングすることとして理解されるべきである。
【００３９】
[0049]ＨＥＶＣは、コーディングユニット（ＣＵ）と、予測ユニット（ＰＵ）と、変換ユニット（ＴＵ）とを含む様々なブロックを定義する。ＨＥＶＣによると、（ビデオ符号化器２００などの）ビデオコーダは、四分木構造に従ってコーディングツリーユニット（ＣＴＵ）をＣＵに区分する。即ち、ビデオコーダは、ＣＴＵ及びＣＵを４つの等しい重複しない正方形に区分し、四分木の各ノードは、０又は４つの子ノードのうちのいずれかを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのＣＵは、１つ以上のＰＵ及び／又は１つ以上のＴＵを含み得る。ビデオコーダは、ＰＵとＴＵとを更に区分し得る。例えば、ＨＥＶＣでは、残差四分木（ＲＱＴ）は、ＴＵの区分を表す。ＨＥＶＣでは、ＰＵは、インター予測データを表し、ＴＵは、残差データを表す。イントラ予測されるＣＵは、イントラモードインジケーションなどのイントラ予測情報を含む。
【００４０】
[0050]別の例として、ビデオ符号化器２００及びビデオ復号器３００は、ＪＥＭ又はＶＶＣに従って動作するように構成され得る。ＪＥＭ又はＶＶＣによると、（ビデオ符号化器２００などの）ビデオコーダは、ピクチャを複数のコーディングツリーユニット（ＣＴＵ）に区分する。ビデオ符号化器２００は、四分木二分木（ＱＴＢＴ）構造又はマルチタイプツリー（ＭＴＴ）構造などのツリー構造に従ってＣＴＵを区分し得る。ＱＴＢＴ構造は、ＨＥＶＣのＣＵとＰＵとＴＵとの間の分離などの、複数の区分タイプの概念を取り除く。ＱＴＢＴ構造は、四分木区分に従って区分された第１のレベルと、二分木区分に従って区分された第２のレベルとの２つのレベルを含む。ＱＴＢＴ構造のルートノードは、ＣＴＵに対応する。二分木のリーフノードは、コーディングユニット（ＣＵ）に対応する。
【００４１】
[0051]ＭＴＴ区分構造では、ブロックは、四分木（ＱＴ）区分と、二分木（ＢＴ）区分と、１つ以上のタイプの三分木（ＴＴ：triple tree）（三分木（ＴＴ：ternary tree）とも呼ばれる）区分とを使用して区分され得る。三分木区分（triple tree partition）又は三分木区分（ternary tree partition）は、ブロックが３つのサブブロックに分割される区分である。いくつかの例では、三分木区分（triple tree partition）又は三分木区分（ternary tree partition）は、中心を通して元のブロックを分割することなく、ブロックを３つのサブブロックに分割する。ＭＴＴにおける区分タイプ（例えば、ＱＴ、ＢＴ、及びＴＴ）は、対称又は非対称であり得る。
【００４２】
[0052]いくつかの例では、ビデオ符号化器２００及びビデオ復号器３００は、ルミナンス成分及びクロミナンス成分の各々を表すために単一のＱＴＢＴ又はＭＴＴ構造を使用し得るが、他の例では、ビデオ符号化器２００及びビデオ復号器３００は、ルミナンス成分のための１つのＱＴＢＴ／ＭＴＴ構造と両方のクロミナンス成分のための別のＱＴＢＴ／ＭＴＴ構造（又はそれぞれのクロミナンス成分のための２つのＱＴＢＴ／ＭＴＴ構造）など、２つ以上のＱＴＢＴ又はＭＴＴ構造を使用し得る。
【００４３】
[0053]ビデオ符号化器２００及びビデオ復号器３００は、ＨＥＶＣによる四分木区分、ＱＴＢＴ区分、ＭＴＴ区分、又は他の区分構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、ＱＴＢＴ区分に関して提示される。しかしながら、本開示の技法はまた、四分木区分、又は他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることが理解されるべきである。
【００４４】
[0054]ブロック（例えば、ＣＴＵ又はＣＵ）は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のＣＴＵ行（rows）の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列（column）及び特定のタイル行内のＣＴＵの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、（例えば、ピクチャパラメータセット中などの）シンタックス要素によって指定された幅とを有するＣＴＵの矩形領域を指す。タイル行は、（例えば、ピクチャパラメータセット中などの）シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するＣＴＵの矩形領域を指す。
【００４５】
[0055]いくつかの例では、１つのタイルは、複数のブリックに区分され得、それらの各々は、当該タイル内に１つ以上のＣＴＵ行を含み得る。複数のブリックに区分されていないタイルもまた、ブリックと呼ばれ得る。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
【００４６】
[0056]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、単一のネットワーク抽象化レイヤ（ＮＡＬ）ユニット中に排他的に（exclusively）包含され得るピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、又は１つのタイルの完全なブリックの連続したシーケンスのみのうちのいずれかを含む。
【００４７】
[0057]本開示は、垂直寸法及び水平寸法に関する（ＣＵ又は他のビデオブロックなどの）ブロックのサンプル寸法、例えば、１６×１６サンプル又は１６掛ける１６サンプルを指すために、「Ｎ×Ｎ」及び「Ｎ掛けるＮ」を交換可能に使用し得る。一般に、１６×１６ＣＵは、垂直方向に１６個のサンプル（ｙ＝１６）を、及び水平方向に１６個のサンプル（ｘ＝１６）を有することになる。同様に、Ｎ×Ｎ ＣＵは、一般に、垂直方向にＮ個のサンプルを、及び水平方向にＮ個のサンプルを有し、ここで、Ｎは、非負整数値を表す。ＣＵ中のサンプルは、行及び列中に配置され得る。その上、ＣＵは、水平方向に、垂直方向と同じ数のサンプルを必ずしも有する必要はない。例えば、ＣＵは、Ｎ×Ｍサンプルを備え得、ここで、Ｍは、必ずしもＮと等しいわけではない。
【００４８】
[0058]ビデオ符号化器２００は、予測及び／又は残差情報、並びに他の情報を表すＣＵについてのビデオデータを符号化する。予測情報は、ＣＵについての予測ブロックを形成するためにＣＵがどのように予測されるべきかを示す。残差情報は、一般に、符号化より前のＣＵのサンプルと予測ブロックとの間のサンプル毎の差分を表す。
【００４９】
[0059]ＣＵを予測するために、ビデオ符号化器２００は、一般に、インター予測又はイントラ予測を通じてＣＵについての予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからＣＵを予測することを指すのに対して、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからＣＵを予測することを指す。インター予測を実行するために、ビデオ符号化器２００は、１つ以上の動きベクトルを使用して予測ブロックを生成し得る。ビデオ符号化器２００は、一般に、例えば、ＣＵと参照ブロックとの間の差分に関して、ＣＵに密接に一致する参照ブロックを識別するために動き探索を実行し得る。ビデオ符号化器２００は、参照ブロックが現在のＣＵに密接に一致するかどうかを決定するために、絶対差分和（ＳＡＤ：sum of absolute difference）、二乗差分和（ＳＳＤ：sum of squared differences）、平均絶対差分（ＭＡＤ：mean absolute difference）、平均二乗差分（ＭＳＤ：mean squared differences）、又は他のそのような差分算出を使用して差分メトリックを算出し得る。いくつかの例では、ビデオ符号化器２００は、単方向予測又は双方向予測を使用して現在のＣＵを予測し得る。
【００５０】
[0060]ＪＥＭ及びＶＶＣのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオ符号化器２００は、ズームイン又はズームアウト、回転、遠近動き（perspective motion）、又は他の不規則な動きタイプなどの非並進動きを表す２つ以上の動きベクトルを決定し得る。
【００５１】
[0061]イントラ予測を実行するために、ビデオ符号化器２００は、予測ブロックを生成するためにイントラ予測モードを選択し得る。ＪＥＭ及びＶＶＣのいくつかの例は、様々な方向性モード、並びに平面モード及びＤＣモードを含む６７個のイントラ予測モードを提供する。一般に、ビデオ符号化器２００は、現在のブロック（例えば、ＣＵのブロック）のサンプルをそこから予測すべき現在のブロックに近隣するサンプルを記述するイントラ予測モードを選択する。ビデオ符号化器２００がラスタ走査順序（左から右、上から下）でＣＴＵ及びＣＵをコーディングすると仮定すると、そのようなサンプルは、一般に、現在のブロックと同じピクチャ中の現在のブロックの上、左上、又は左にあり得る。
【００５２】
[0062]ビデオ符号化器２００は、現在のブロックについての予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオ符号化器２００は、様々な利用可能なインター予測モードのうちのどれが使用されるかを表すデータ、並びに対応するモードについての動き情報を符号化し得る。単方向又は双方向インター予測の場合、例えば、ビデオ符号化器２００は、高度動きベクトル予測（ＡＭＶＰ）又はマージモードを使用して動きベクトルを符号化し得る。ビデオ符号化器２００は、アフィン動き補償モードについての動きベクトルを符号化するために、同様のモードを使用し得る。
【００５３】
[0063]ブロックのイントラ予測又はインター予測などの予測に続いて、ビデオ符号化器２００は、ブロックについての残差データを算出し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたブロックについての予測ブロックとの間のサンプル毎の差分を表す。ビデオ符号化器２００は、サンプルドメインの代わりに変換ドメイン中に変換されたデータを作り出すために、残差ブロックに１つ以上の変換を適用し得る。例えば、ビデオ符号化器２００は、残差ビデオデータに離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、又は概念的に同様の変換を適用し得る。追加として、ビデオ符号化器２００は、第１の変換に続いて、モード依存分離不可能２次変換（ＭＤＮＳＳＴ：mode-dependent non-separable secondary transform）、信号依存変換、カルーネンレーベ変換（ＫＬＴ）、又は同様のものなどの２次変換を適用し得る。ビデオ符号化器２００は、１つ以上の変換の適用に続いて変換係数を作り出す。
【００５４】
[0064]上述されたように、変換係数を作り出すための任意の変換に続いて、ビデオ符号化器２００は、変換係数の量子化を実行し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできる限り低減するためにそれら係数が量子化されるプロセスを指し、更なる圧縮を提供する。量子化プロセスを実行することによって、ビデオ符号化器２００は、係数のうちのいくつか又は全てに関連付けられたビット深度を低減し得る。例えば、ビデオ符号化器２００は、量子化中にｎビット値をｍビット値に切り捨て得、ここでｎは、ｍよりも大きい。いくつかの例では、量子化を実行するために、ビデオ符号化器２００は、量子化されるべき値のビット単位の右シフト（bitwise right-shift）を実行し得る。
【００５５】
[0065]量子化に続いて、ビデオ符号化器２００は、変換係数を走査し得、量子化された変換係数を含む２次元行列から１次元ベクトルを作り出し得る。走査は、ベクトルの前方により高いエネルギー（従って、より低い周波数）係数を置き、且つベクトルの後方により低いエネルギー（従って、より高い周波数）係数を置くように設計され得る。いくつかの例では、ビデオ符号化器２００は、直列化されたベクトルを作り出すために、予め定義された走査順序を利用して、量子化された変換係数を走査し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオ符号化器２００は、適応走査を実行し得る。１次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオ符号化器２００は、例えば、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ：context-adaptive binary arithmetic coding）に従って１次元ベクトルをエントロピー符号化し得る。ビデオ符号化器２００はまた、ビデオデータを復号する際にビデオ復号器３００によって使用するための符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
【００５６】
[0066]ＣＡＢＡＣを実行するために、ビデオ符号化器２００は、送信されることになるシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの近隣値が０値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【００５７】
[0067]ビデオ符号化器２００は、ビデオ復号器３００への、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、及びシーケンスベースのシンタックスデータなどのシンタックスデータを、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ中に、または、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、若しくはビデオパラメータセット（ＶＰＳ）などの他のシンタックスデータをさらに生成し得る。ビデオ復号器３００は、同様に、対応するビデオデータをどのように復号するかを決定するために、そのようなシンタックスデータを復号し得る。
【００５８】
[0068]このように、ビデオ符号化器２００は、符号化されたビデオデータ、例えば、ブロック（例えば、ＣＵ）へのピクチャの区分並びにブロックについての予測及び／又は残差情報を記述するシンタックス要素、を含むビットストリームを生成し得る。最終的に、ビデオ復号器３００は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【００５９】
[0069]一般に、ビデオ復号器３００は、ビットストリームの符号化されたデータを復号するために、ビデオ符号化器２００によって実行されたものと相補的な（reciprocal）プロセスを実行する。例えば、ビデオ復号器３００は、ビデオ符号化器２００のＣＡＢＡＣ符号化プロセスと実質的に同様であり、にもかかわらず相補的な形でＣＡＢＡＣを使用して、ビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、ピクチャのＣＴＵへの区分情報と、ＣＴＵのＣＵを定義するための、ＱＴＢＴ構造などの対応する区分構造に従った各ＣＴＵの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック（例えば、ＣＵ）についての予測及び残差情報を更に定義し得る。
【００６０】
[0070]残差情報は、例えば、量子化された変換係数によって表され得る。ビデオ復号器３００は、ブロックについての残差ブロックを再び作り出すために、ブロックの量子化された変換係数を逆量子化及び逆変換し得る。ビデオ復号器３００は、ブロックについての予測ブロックを形成するために、シグナリングされた予測モード（イントラ予測又はインター予測）及び関連する予測情報（例えば、インター予測のための動き情報）を使用する。ビデオ復号器３００は次いで、元のブロックを再び作り出すために、（サンプル毎に）予測ブロックと残差ブロックとを組み合わせ得る。ビデオ復号器３００は、ブロックの境界に沿った視覚的アーティファクトを低減するために、デブロッキングプロセスを実行することなど、追加の処理を実行し得る。
【００６１】
[0071]本開示は、一般に、シンタックス要素など、ある特定の情報を「シグナリングすること」に言及し得る。「シグナリングすること」という用語は、一般に、符号化されたビデオデータを復号するために使用されるシンタックス要素及び／又は他のデータについての値の通信を指し得る。即ち、ビデオ符号化器２００は、ビットストリーム中でシンタックス要素についての値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス１０２は、実質的にリアルタイムで、又は、例えば、宛先デバイス１１６による後の取り出しのために記憶デバイス１１２にシンタックス要素を記憶するときに生じ得るようにリアルタイムではなく、宛先デバイス１１６にビットストリームを移動させ得る。
【００６２】
[0072]図２Ａ及び２Ｂは、実例的な四分木二分木（ＱＴＢＴ：quadtree binary tree）構造１３０及び対応するコーディングツリーユニット（ＣＴＵ）１３２を例示する概念図である。実線は、四分木分割を表し、点線は、二分木分割を示す。二分木の各分割（即ち、非リーフ）ノードでは、１つのフラグが、どの分割タイプ（即ち、水平又は垂直）が使用されているかを示すためにシグナリングされ、ここで、この例では、１は、水平分割を示し、０は、垂直分割を示す。四分木分割の場合、四分木ノードが等しいサイズを有する４つのサブブロックに水平及び垂直にブロックを分割するので、分割タイプを示す必要はない。それ故に、ＱＴＢＴ構造１３０の領域ツリーレベルについての（分割情報などの）シンタックス要素（即ち、実線）と、ＱＴＢＴ構造１３０の予測ツリーレベルについての（分割情報などの）シンタックス要素（即ち、破線）とを、ビデオ符号化器２００は符号化し得、ビデオ復号器３００は復号し得る。ＱＴＢＴ構造１３０の終端リーフノードによって表されるＣＵについての、予測及び変換データなどのビデオデータを、ビデオ符号化器２００は符号化し得、ビデオ復号器３００は復号し得る。
【００６３】
[0073]一般に、図２ＢのＣＴＵ１３２は、第１及び第２のレベルのＱＴＢＴ構造１３０のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、ＣＴＵサイズ（サンプル中のＣＴＵ１３２のサイズを表す）、最小四分木サイズ（ＭｉｎＱＴＳｉｚｅ、最小許容四分木リーフノードサイズを表す）、最大二分木サイズ（ＭａｘＢＴＳｉｚｅ、最大許容二分木ルートノードサイズを表す）、最大二分木深度（ＭａｘＢＴＤｅｐｔｈ、最大許容二分木深度を表す）、及び最小二分木サイズ（ＭｉｎＢＴＳｉｚｅ、最小許容二分木リーフノードサイズを表す）を含み得る。
【００６４】
[0074]ＣＴＵに対応するＱＴＢＴ構造のルートノードは、ＱＴＢＴ構造の第１のレベルで４つの子ノードを有し得、それらの各々は、四分木区分に従って区分され得る。即ち、第１のレベルのノードは、リーフノード（子ノードを有さない）であるか、又は４つの子ノードを有するかのうちのいずれかである。ＱＴＢＴ構造１３０の例は、そのようなノードが、分岐のための実線を有する親ノード及び子ノードを含むように表す。第１のレベルのノードが最大許容二分木ルートノードサイズ（ＭａｘＢＴＳｉｚｅ）よりも大きくない場合、それらノードは、それぞれの二分木によって更に区分されることができる。１つのノードの二分木分割は、分割の結果として生じるノードが最小許容二分木リーフノードサイズ（ＭｉｎＢＴＳｉｚｅ）又は最大許容二分木深度（ＭａｘＢＴＤｅｐｔｈ）に達するまで反復されることができる。ＱＴＢＴ構造１３０の例は、そのようなノードが分岐のための破線を有するように表す。二分木リーフノードは、コーディングユニット（ＣＵ）と呼ばれ、それは、任意の更なる区分を伴わずに予測（例えば、イントラピクチャ予測又はインターピクチャ予測）及び変換のために使用される。上述されたように、ＣＵはまた、「ビデオブロック」又は「ブロック」と呼ばれ得る。
【００６５】
[0075]ＱＴＢＴ区分構造の一例では、ＣＴＵサイズは、１２８×１２８（ルーマサンプル及び２つの対応する６４×６４クロマサンプル）として設定され、ＭｉｎＱＴＳｉｚｅは、１６×１６として設定され、ＭａｘＢＴＳｉｚｅは、６４×６４として設定され、（幅と高さとの両方についての）ＭｉｎＢＴＳｉｚｅは、４として設定され、ＭａｘＢＴＤｅｐｔｈは、４として設定される。四分木リーフノードを生成するために、最初に四分木区分がＣＴＵに適用される。四分木リーフノードは、１６×１６（即ち、ＭｉｎＱＴＳｉｚｅ）から１２８×１２８（即ち、ＣＴＵサイズ）までのサイズを有し得る。リーフ四分木ノードが１２８×１２８である場合、それは、サイズがＭａｘＢＴＳｉｚｅ（即ち、この例では、６４×６４）を上回るので、二分木によって更に分割されないであろう。そうでない場合、リーフ四分木ノードは、二分木によって更に区分されるであろう。従って、四分木リーフノードはまた、二分木のためのルートノードであり、０の二分木深度を有する。二分木深度がＭａｘＢＴＤｅｐｔｈ（この例では、４）に達するとき、更なる分割は許可されない。二分木ノードがＭｉｎＢＴＳｉｚｅ（この例では、４）に等しい幅を有するとき、それは、更なる垂直分割が許可されないことを暗示する。同様に、ＭｉｎＢＴＳｉｚｅに等しい高さを有する二分木ノードは、その二分木ノードに対して更なる水平分割が許可されないことを暗示する。上述されたように、二分木のリーフノードは、ＣＵと呼ばれ、更なる区分を伴わずに予測及び変換に従って更に処理される。
【００６６】
[0076]ブロッキングアーティファクトは、元の静止ピクチャ又はビデオのピクチャ中に存在せず、中程度から高度の圧縮の結果として生じることが多い、再構築されたピクチャ中の水平及び垂直の不連続性を含み得る。例えば、ビデオ符号化器が入力画像を高度に圧縮する場合、復号された画像の視覚的品質は、画像コンテンツが解凍される、即ち、復号されるときに、解凍された画像コンテンツがブロッキングアーティファクトを被るように低下し得る。平坦なエリアにおけるこれらのアーティファクトは、アーティファクトが高コントラストのコンテンツによってマスクされないので、「タイル面（tiling）」のように見える。更に、再生ビデオ中のブロッキングアーティファクトは、不連続性が連続するフレーム中に異なるように位置するので、「動き及びちらつき」として観察され得る。
【００６７】
[0077]上記で紹介されたように、ブロッキングアーティファクトの１つの原因は、イントラ予測誤差及びインター予測誤差（例えば、残差）に対して実行される、変換及び量子化を含むブロックベースの変換コーディングである。変換係数の粗い量子化は、ブロック境界において視覚的に邪魔な不連続性を引き起こす可能性がある。動き補償予測は、ブロッキングアーティファクトの別の潜在的な原因である。動き補償されたブロックは、おそらく異なる参照フレームの異なるロケーションから補間された画素データをコピーすることによって生成される。このデータ（例えば、補間から形成された参照ブロックについてのサンプル値）に対して完全に適合することはほとんどないので、データのコピーされたブロックの境界上に不連続性が典型的に生じる。即ち、動き補償を使用して符号化された２つの近隣するブロックは、不連続性を示し得る。
【００６８】
[0078]（例えば、ＨＥＶＣにおけるような）デブロッキングフィルタリングは、通常、ブロッキングアーティファクトを減衰させるために、ピクチャ又はブロックのグループが再構築／復号された後に実行される。より詳細には、デブロッキングフィルタリングは、フィルタリング、クリッピング、又は他の手段によって、各ブロック境界の近くに位置するサンプルの値を修正し、それにより、不連続性が平滑化され、従って、より見えにくくなる。
【００６９】
[0079]ビデオ圧縮では、デブロッキングフィルタリングは、ディスプレイバッファ中の画像に対して予測ループの外側で実行され得、それは、デブロッキングフィルタリングされたピクチャが他のピクチャを予測するために使用されないことを意味し得る。デブロッキングフィルタリングはまた、予測ループにおいて実行され得、それは、デブロッキングされたピクチャが、将来のピクチャの動き補償のための参照ピクチャとして使用されることを意味し得る。両方の技法は、表示されるビデオの主観的品質を潜在的に改善し、後者はまた、インター予測の正確度がデブロッキングされた参照フレームを使用することによって改善されることの結果として、圧縮効率を潜在的に改善する。
【００７０】
[0080]ＨＥＶＣにおけるデブロッキングは、インループプロセスであり、２つの条件を満たすブロック境界に適用される。第１の条件は、境界がＣＵ、ＰＵ、又はＴＵの境界であることであり、第２の条件は、境界が垂直（又は水平）である場合、ｘ座標（又はｙ座標）が８の倍数である（いくつかの例では、そうでなければならない）ことである。第２の条件は、デブロッキングされるべき２つの平行な近隣する境界の最小距離が８画素であることを意味し、それは、以下により詳細に説明されるように、より良好な平行化を容易にする。デブロッキングフィルタは、処理されるべき境界を、境界がどれだけ長くても、デブロッキングフィルタがデブロッキングフィルタリングを実行するユニットである複数の重複しない４サンプルセグメントに分割する。本開示では、セグメントに対するデブロッキングオペレーションが導入され、セグメントは、垂直であると仮定され得るが、水平セグメントの処理は、事実上同じである。
【００７１】
[0081]ビデオ復号器３００は、デブロッキングフィルタリングを実行するとき、境界強度決定を実行し得る。処理されるべきセグメントについて、ビデオ復号器は、ブロック境界の両側の、Ｐ及びＱとして表される、両側の２つのブロックのコーディング条件（例えば、動きベクトル（ＭＶ）、参照インデックス、及び非０変換係数の存在）を調べる。
【００７２】
[0082]図３は、Ｐブロック１４２及びＱブロック１４４の例を示す。Ｐブロック１４２は、８×８ブロックであり、Ｑブロック１４４は、１６×１６ブロックである。Ｐブロック１４２及びＱブロック１４４は、セグメント１４６Ａ及び１４６Ｂとして図３に示されるブロック境界１４６を共有する。セグメント１４６Ａと１４６Ｂとの両方は、ＨＥＶＣのデブロッキングフィルタリングに従って、４サンプル長であるが、本開示の技法は、任意の特定のセグメント長に限定されない。
【００７３】
[0083]ルーマブロックについて、ビデオ復号器は、セグメント１４６Ａの境界強度を決定する。境界強度は、どれだけの可能性で、強いブロッキングアーティファクトがセグメント１４６Ａの周囲に現れるかを表す。一例では、境界強度値は、０であり得、それは、Ｐブロック１４２及びＱブロック１４４中のコーディング条件が、ブロッキングアーティファクトがセグメント１４６Ａに沿って予想されず、セグメント１４６Ａのためのデブロッキングフィルタリングがスキップされ得るようなものであることを意味し得る。別の例では、境界強度値は、２であり得、Ｐブロック１４２及びＱブロック１４４中のコーディング条件が、深刻なブロッキングアーティファクトが存在することを潜在的に予想され、より強いデブロッキングフィルタリングが望ましくあり得るようなものであることを意味し得る。境界強度値はまた、１であり得、Ｐブロック１４２及びＱブロック１４４中のコーディング条件が、より穏やかなブロッキングアーティファクトが存在することを潜在的に予想され、境界強度が２に等しいときのデブロッキングフィルタリングほど強くないが、何らかのデブロッキングフィルタリングが望ましくあり得るようなものであることを意味し得る。境界強度導出の詳細は、ＨＥＶＣのセクション８．７．２．４に記載されている。
【００７４】
[0084]ビデオ復号器は、ルーマブロックについての境界強度とは異なるようにクロマブロックについての境界強度を決定し得る。例えば、クロマブロックの場合、ビデオ復号器は、２に等しい境界強度をイントラコーディングされたブロックに隣接するセグメントに割り当て、そうでない場合は、０に等しい境界強度をセグメントに割り当てる。
【００７５】
[0085]上述されたように、ビデオ復号器は、隣接ブロックのコーディング条件に基づいて、セグメントがブロッキングアーティファクトを有する可能性を推定し得る。しかしながら、ビデオ復号器はまた、セグメントがデブロッキングされるべきかどうか、及びどのようにデブロッキングされるべきかを決定するために、そのセグメントの近くのサンプルの値に基づいて、更なる分析を実行し得る。第１に、ビデオ復号器は、セグメントの近くの４つのサンプルの２次導関数を算出することによって、セグメントをフィルタリングするかどうかの決定を行う。
【００７６】
[0086]図４は、Ｐブロック１５２とＱブロック１５４との間の境界上にあるセグメント１５０の例を示す。ビデオ復号器は、セグメントの近くの４つのサンプルの２次導関数（second derivatives）を算出し、それは、円で囲まれたサンプル１５８Ａ〜１５８Ｄとして図４に示されている。４つの２次導関数の合計（式（１）を参照）が、閾値β及びｔCに関して以下に説明されるように、閾値βよりも小さい場合、ビデオ復号器は、セグメントがデブロッキングされる必要があると決定する。そうでない場合、ビデオ復号器は、セグメントが、ブロッキングアーティファクトがマスクされる可能性が高い非平坦エリアに位置すると見なされ、このことから、デブロッキングされる必要がないと決定する。セグメントについては、非０境界強度であっても、式（１）の閾値に達しない場合、ビデオ復号器は、デブロッキングフィルタリングをスキップし得る。
|p2,0-2p1,0+p0,0|+|p2,3-2p1,3+p0,3|+|q2,0-2q1,0+q0,0|+|q2,3-2q1,3+q0,3|<β       (1)
【００７７】
[0087]第２に、デブロッキングされるべきセグメントについて、ビデオ復号器は、強いフィルタリングモードを使用すべきか、又は通常のフィルタリングモードを使用すべきかの別の決定を行い得る。以下の６つの条件（式（２−１）〜（２−６））が全て真である場合、それは、エリアが任意のブロッキングアーティファクトをマスクするには平滑すぎる可能性が高いことを意味し、ビデオ復号器は、強いフィルタリングモードが使用されると決定する。そうでない場合、ビデオ復号器は、通常のフィルタリングモードが使用されると決定する。
|p2,0-2p1,0+p0,0|+|q2,0-2q1,0+q0,0|<β/8                                 (2-1)
|p2,3-2p1,3+p0,3|+|q2,3-2q1,3+q0,3|<β/8                                 (2-2)
|p3,0-p0,0|+|q0,0-q3,0|<β/8                                          (2-3)
|p3,3-p0,3|+|q0,3-q3,3|<β/8                                          (2-4)
|p0,0-q0,0|<2.5tC                                                   (2-5)
|p0,3-q0,3|<2.5tC                                                   (2-6)
閾値パラメータｔcは、クリッピングパラメータを表し、それは、以下により詳細に説明される。
【００７８】
[0088]図５は、Ｐブロック１６２とＱブロック１６４との間の境界上にあるセグメント１６０の例を示す。図５は、サンプルｐ0、ｐ1、ｐ2、ｐ3、ｑ0、ｑ1、ｑ2、及びｑ3の物理的位置によって表される１つのラインのためのデブロッキングフィルタリングオペレーションを示すために使用される。
【００７９】
[0089]上述されたルーマについての境界強度決定及び他の決定のために、ビデオ復号器は、セグメントレベルで分析及び導出を実行する。ルーマについての強いフィルタリングモード及びルーマについての通常のフィルタリングモードでは、デブロッキングフィルタリングは、ライン（line）毎に（例えば、セグメントが垂直である場合には行毎に、又はセグメントが水平である場合には列毎に）実行される。
【００８０】
[0090]ルーマについての強いフィルタリングモードでは、ビデオ復号器は、セグメント１６０の両側の３つのサンプルを処理する。図５の例では、Ｐブロック１６２中のｐ0、ｐ1、ｐ2についてのサンプル値は、式（３−１）〜（３−３）に示されるように、ローパスフィルタリングによってｐ0'、ｐ1'、ｐ2'に更新される。
p0'=(p2+2p1+2p0+2q0+q1+4)≫3                                        (3-1)
p1'=(p2+p1+p0+q0+2)≫2                                              (3-2)
p2'=(2p3+3p2+p1+p0+q0+4)≫3                                         (3-3)
修正されたサンプル値ｐi'（ｉ＝０、１、２）は、範囲［ｐi−２ｔC、ｐi＋２ｔC］にクリッピングされる。
【００８１】
[0091]ビデオ復号器は、ｐの代わりにｑについてではあるが、式（３−１）〜（３−３）と事実上同じ式を使用して、Ｑブロック１６４中のｑ0、ｑ1、及びｑ2を処理する。クリッピングは、ｑについて、ｐについてと同じ形で適用される。
【００８２】
[0092]ルーマについての通常のフィルタリングモードでは、ビデオ復号器は、セグメント１６０の両側の１つ又は２つのサンプルを処理する。セグメント１６０の左側について、例えば、ビデオ復号器は、式（４−１）における条件がチェックされることをチェックする。条件が真である場合、ビデオ復号器は、サンプルｐ0及びｐ1を処理する。そうでない場合、ビデオ復号器は、サンプルｐ0のみを処理する。同様に、右側について、ビデオ復号器は、サンプルｑ0に加えてサンプルｑ1が処理されるかどうかを決定するために、式（４−２）における条件をチェックする。処理されるべきサンプルの数に関する決定がセグメントの両側で独立して行われるので、一方の側で１つのサンプルを処理し、他方の側で２つのサンプルを処理することが可能である。
|p2,0-2p1,0+p0,0|+|p2,3-2p1,3+p0,3|<3/16β                               (4-1)
|q2,0-2q1,0+q0,0|+|q2,3-2q1,3+q0,3|<3/16β                               (4-2)
ｐ0及びｑ0を処理するために、最初に中間値δが式（５）にあるように算出される。
δ=(9(q0-p0)-3(q1-p1)+8)≫4                                        (5)
【００８３】
[0093]δの絶対値がｔCの絶対値の１０倍以上である場合、境界は、保持されるべき自然なエッジと見なされ、ビデオ復号器は、現在のライン上でデブロッキングフィルタリングを実行しない。そうでない場合、ビデオ復号器は、式（６）に示されるように、δを−ｔCからｔCまでの範囲にクリッピングする。
Δ0=Clip3(-tC,tC,δ)                                                (6)
【００８４】
[0094]ビデオ復号器は、式（７−１）及び（７−２）に示されるように、Δ0を加算及び減算することによって、ｐ0及びｑ0の値をそれぞれｐ0'及びｑ0'に更新する。
p0'=p0+Δ0                                                         (7-1)
q0'=q0-Δ0                                                         (7-2)
【００８５】
[0095]セグメント１６４の両側の第２のサンプル、即ち、ｐ1及びｑ1を処理するために、ビデオ復号器は、式（８−１）及び（８−２）を使用して、更新された値ｐ1'及びｑ1'を得る。
【数１】
2021535653.tif 000003
【００８６】
[0096]ビデオ復号器は、境界強度値を決定することによって、しかし、いかなるサンプル値分析も実行せずに、クロマのためのデブロッキングフィルタリングを実行する。ビデオ復号器は、式（７−１）及び（７−２）によって、セグメントの両側の第１のサンプル、即ち、ｐ0及びｑ0のみを処理し、ここで、デルタΔ0は、式（９）にあるように算出される。
Δ0=Clip3(-tC,tC,(((q0-p0)≪2)+p1-q1+4)≫3)                           (9)
【００８７】
[0097]過剰なフィルタリングを回避するために、ビデオ復号器は、２つのパラメータβ及びｔCを算出する。ビデオ復号器は、セグメントがデブロッキングされるべきかどうか、強いデブロッキングが使用されるか又は通常のデブロッキングが使用されるか、及び／又はセグメントの一方の側の１つ又は２つのサンプルが処理されるかどうかなど、デブロッキングが実行される方法を制御するために閾値βを使用する。β又はスケーリングされたβに達するか、又はそれを超えるとき（式（１）、（２）、及び（４）を参照）、局所的サンプル値のより大きい変動を意味し、従って、デブロッキングは、元のピクチャ中の詳細（details）を保持するために、より控えめ（conservative）になる傾向がある。そうでない場合、局所的サンプル値は、より少ない変動を有し（即ち、より平滑）、ビデオ復号器は、デブロッキングフィルタリングをより積極的に実行する。
【００８８】
[0098]ビデオ復号器は、式（２−５）及び（２−６）を除いて、主にサンプルの大きさの最大変化を制御するためにクリッピング値ｔCを使用する。ＨＥＶＣでは、例えば、通常のフィルタリングモード又はクロマのためのフィルタリングでは、サンプルの大きさの変化は、変化が（ルーマ及びクロマに適用可能な）セグメントの一方の側の第１のサンプルについて±ｔC、又は（ルーマにのみ適用可能な）第２のサンプルについて±ｔC／２を超えないように制限される。ＨＥＶＣでは、大きさのより大きい変化が暗示される強いフィルタリングモードの場合、最大変化は、セグメントの両側で処理される３つのサンプルについて±２ｔCに制限される。
【００８９】
[0099]β及びｔCの値は主に、左ブロックＰ及び右ブロックＱからの量子化パラメータ（ＱＰ）値に依存する。より詳細には、ビデオ復号器は、ＱＰave＝（ＱＰP＋ＱＰQ＋１）＞＞１として表される、Ｐ及びＱからのＱＰの平均を、２つの１−Ｄルックアップテーブル（ＬＵＴ）をβ及びｔCについてそれぞれ探索するためのインデックスとして使用し得る。ｔC値を見出すための探索インデックスは、２を加算することによって調整され得る、即ち、（ＱＰave＋２）であるが、境界強度が２に等しい場合、β及びｔCの値を決定する支配的な係数（dominant factor）は、依然としてＱＰaveである。両方のＬＵＴでは、エントリ値は、探索インデックスの値と共に単調に増大し、それは、ＱＰaveがより高いほど、β及びｔCがより大きな値を有することになることを意味する。このことから、より重いデブロッキングフィルタリングが選択される可能性がより高く、より大きな大きさの変化が許容される。一方、より低いＱＰは、β及びｔCについての値をより小さくするか、又は０にさえする。低いＱＰでコーディングされるとき、ピクチャは、典型的には、より少ない、又はより目立たないブロッキングアーティファクトを有し、従って、より軽いデブロッキングを必要とするか、又はデブロッキングを必要としないことさえある。
【００９０】
[0100]ｉｄｘβ及びｉｄｘtcとして表される、ＬＵＴ中のβ及びｔCを探索するために使用されるインデックスは、それぞれ、２つのパラメータｔｃ＿ｏｆｆｓｅｔ＿ｄｉｖ２及びｂｅｔａ＿ｏｆｆｓｅｔ＿ｄｉｖ２によって更に調整されることができる（式（１０−１）及び（１０−２）を参照）。
idxβ=QPave+2×beta_offset_div2                             (10-1)
idxtc=QPave+2×(BS-1)+2×tc_offset_div2,                    (10-2)
ここで、ｔｃ＿ｏｆｆｓｅｔ＿ｄｉｖ２及びｂｅｔａ＿ｏｆｆｓｅｔ＿ｄｉｖ２は、スライスヘッダ又はピクチャパラメータセット（ＰＰＳ）中で送られる。これは、シーケンス特性、符号化モード、及び他のファクタに依存するデブロッキング強度を適応させる可能性を符号化器に与える。
【００９１】
[0101]ＨＥＶＣデブロッキングは、並列化を可能にし得る２つの連続するステージを有する。第１のステージでは、ビデオ復号器は、ピクチャ中の全ての垂直ブロック境界をフィルタリングし、第２の段階では、ビデオ復号器は、全ての水平ブロック境界をフィルタリングする。第２のステージでは、モード決定及びフィルタリングのために使用されるサンプルは、第１のステージの出力である。デブロッキングされる境界が全て平行であり、かつ少なくとも８サンプル離れている各ステージでは、１つの境界のデブロッキングに関与するサンプルは、任意の他の境界のデブロッキングに関与するサンプルと重複しない。このコンテキストでは、１つの境界のデブロッキングに関与するサンプルは、境界の両側でフィルタリングされるべき最大３つのサンプルを、及びフィルタリング及びモード決定をサポートするために両側で最大４つのサンプルを含み、従って、１つの境界は、任意の他の境界と平行してデブロッキングされることができる。
【００９２】
[0102]ＨＥＶＣデブロッキングフィルタは、ブロック境界の近くのサンプルをフィルタリングし、閾値量よりも大きいサンプルの大きさの変化をクリッピングする。ＨＥＶＣデブロッキングフィルタは、３つの異なるレベルのフィルタ強度を有する３つのモードで動作する。３つのモード又はフィルタ強度は、本明細書では、ブロック境界の近くのサンプルの局所的アクティビティが増大すると共に、強い、通常、及び０（即ち、フィルタリングなし）と呼ばれる（式（１）及び（２−１）〜（２−６）を参照）。強いフィルタリングモードでは、ＨＥＶＣデブロッキングフィルタは、ローパスフィルタリングによってブロック境界の各側で３つのサンプルをフィルタリングする（式（３−１）〜（３−３）を参照）。通常のフィルタリングモードの場合、ＨＥＶＣデブロッキングフィルタは、少なくとも境界に最も近いサンプルをフィルタリングし、境界の両側で、内側サンプルが十分に平滑である場合、２番目に近いサンプルもフィルタリングし得る（式（４−１）及び（４−２）を参照）。ＨＥＶＣデブロッキングフィルタは、パラメータｔCによって制御されるクリッピングを実行する。強いフィルタリングの場合、サンプルの大きさの変化は、２ｔC以下に制限される。通常のフィルタリングの場合、第１のサンプル及び第２のサンプルの大きさの変化は、それぞれｔC及びｔC／２以下に制限される（式（６）−（８−２）を参照）。異なる境界強度値は、ｔCに差異を作るだけであり、即ち、２に等しい境界強度を有するセグメントは、１に等しい境界強度を有するセグメントよりも大きいｔCを有する。
【００９３】
[0103]ＨＥＶＣデブロッキングフィルタは、本質的に、Ｈ．２６４／ＡＶＣデブロッキングのフレームワークに従い、コーディング条件に基づく境界強度決定、強いから０までのマルチレベルフィルタリング強度、ＱＰ並びに境界強度依存パラメータβ及びｔCなど、Ｈ．２６４／ＡＶＣデブロッキングフィルタの主要な特徴を継承する。Ｈ．２６４／ＡＶＣデブロッキングフィルタと比較して、ＨＥＶＣデブロッキングフィルタにおける新しい設計要素は、より容易な並列処理と、ＨＥＶＣのより大きいブロックサイズコーディング構造へのより良好な適合とを可能にするが、コーディング効率をあまり改善しない。従って、ＨＥＶＣのファイナライズ（finalization）時の計算の複雑さとコーディング効率との間の良好なトレードオフと見なされたＨＥＶＣデブロッキングは、今日の高度に開発されたハードウェア能力を考慮すると、過度に簡略化され得る。本開示の技法は、並列化フレンドリーな設計を依然として維持しながら、有意なコーディング効率改善を達成するために、より多くのハードウェア計算リソースを潜在的に活用する。
【００９４】
[0104]本開示は、ＨＥＶＣデブロッキングフィルタリングを含むデブロッキングフィルタリングの態様を改善し得る技法を提案する。ＨＥＶＣデブロッキングフィルタリングの欠点の一例は、境界エリアの平滑度を表すために、３つのレベルのフィルタリング強度に対応する３つのレベルしか使用しないことが粗すぎ得ることである。ＨＥＶＣデブロッキングフィルタリングの欠点の別の例は、セグメントの４つのラインのうちの２つしかデブロッキングモード決定及びフィルタ選択において使用されず、各ラインでは、両側からの４つのサンプルしか使用されないことである。次世代ビデオコーデックのブロックサイズは、１２８×１２８まで、又は更に大きくなる可能性があるので、モード決定のためにサンプルのそのような小さい部分を使用することは、境界エリアの実際のアクティビティを正確に反映しないことがあり、ノイズに敏感であり得る。
【００９５】
[0105]ＨＥＶＣデブロッキングフィルタリングの欠点の別の例は、セグメントの両側でフィルタリングされるべきサンプルが、３つものサンプル又はわずか１つのサンプルを含む可能性があり、それは、大きいブロックのデブロッキングに良好な結果を提供するのに十分なサンプルではないことがあることである。ＨＥＶＣデブロッキングフィルタリングの欠点の別の例は、強いフィルタリングモードでは３つのサンプル（式（３−１）〜（３−３）を参照）に、通常のフィルタリングモードでは２つのサンプル（式（５）〜（８−２）を参照）にそれぞれ予め割り当てられた、合計で５つの予め定義された４タップ又は５タップフィルタがあることである。ＨＥＶＣデブロッキングフィルタの選択における限られた数のオプション、長さ不足（short length）、及び柔軟性のなさは、デブロッキングにおけるより低い効率を引き起こし得る。
【００９６】
[0106]ＨＥＶＣデブロッキングフィルタリングの欠点の別の例は、異なる境界強度を有するセグメントが、全く異なる局所的アクティビティを有し得るが、２に等しい境界強度についてクリッピング値がより大きくなるものの、同じデブロッキングフィルタを共有し得ることである。ＨＥＶＣデブロッキングフィルタリングの欠点の別の例は、ＨＥＶＣデブロッキングフィルタがブロックＰとブロックＱとを区別しないことである。フィルタリング強度は、Ｐ及びＱの２次導関数の平均によって決定され（式（１）及び（２−１）〜（２−２）を参照）、パラメータβ及びｔCの値は、Ｐ及びＱの平均ＱＰに依存する。Ｐブロック又はＱブロックのうちの一方が平滑であり得るが、他方がディーテイルに富んでいるコーディングシナリオについて、Ｐブロック及びＱブロックを同じ方法で処理する際に効率損失があり得、それは、珍しいシナリオではない。
【００９７】
[0107]本開示は、ビデオコーディング又はビデオ処理のために利用されるデブロッキングフィルタリングの性能を潜在的に改善するためのいくつかの技法を提案する。一例によると、ビデオ復号器３００は、ブロック区分のパラメータに基づいてフィルタ分析（例えば、フィルタ選択又はフィルタ強度適応）を実行するように構成され得る。一例では、ビデオ復号器３００は、フィルタリングされた境界に直交するブロックの長さに基づいて、デブロッキングフィルタ及びフィルタサポート（例えば、ダウンサンプリングされたフィルタサポート）の長さを決定するように構成され得る。別の例では、フィルタリングされた境界と位置合わせされた（aligned）ブロックの長さは、決定プロセスに影響を及ぼし、例えば、フィルタ決定のために使用される境界サンプルの空間サブサンプリングを可能にする。
【００９８】
[0108]別の例によると、ビデオ復号器３００は、ブロック区分パラメータ（例えば、サイズ）と、Ｔｃ制限パラメータが適用される現在処理されているサンプルのブロック内の関連する位置との関数として、出力サンプル信頼区間（output sample confidence interval）、別名、係数Ｔｃを適応させるように構成され得る。Ｔｃは、復号されたサンプルからのデブロッキングされたサンプル値の正又は負のうちのいずれかの偏差を制限し、デブロッキングプロセスに入力される。
【００９９】
[0109]別の例によると、ビデオ復号器３００は、決定及びフィルタリングプロセスの設計を保持しながら、決定及びフィルタリングプロセスに利用可能なサンプルセットを制限するために、処理されたブロックのパラメータ（ブロックサイズ）を使用するように構成され得る。ビデオ復号器３００は、フィルタリングプロセスに必要であるが、補外（extrapolation）又はパディングプロセスなどの指定されたプロセスを使用する制限に起因して利用可能でないサンプルを作り出し得る。別の例によると、ビデオ復号器３００は、フィルタタイプ、フィルタ長、Ｔｃ制限パラメータ、空間サンプルスキップステップなどのデブロッキングフィルタパラメータを選択するために、変換タイプ／基底関数に関する情報などの変換特性と、ビデオ復号器３００に非０としてシグナリングされ、従って、サンプルの再構築されたブロック中に存在する変換係数とを使用し得る。別の例によると、ビデオ復号器３００は、Ｐ及びＱフィルタ選択に関する閾値を独立して設定するために、Ｐ及びＱブロックの量子化パラメータを使用し得る。
【０１００】
[0110]一例では、異なるサイズのブロックを分離するブロック境界について、ビデオ復号器３００は、非対称デブロッキングフィルタリングに関する決定を行い得る。例えば、ブロック境界が異なるサイズのブロックを分離するとき、ビデオ復号器３００は、非対称デブロッキングフィルタを選択し得る。
【０１０１】
[0111]別の例では、非対称フィルタが使用されるべきであるとビデオ復号器３００が決定した場合、境界の両側のデブロッキングプロセスは異なり得る。例えば、タップ長、フィルタ係数、クリッピング、又は正規化プロセスなどの、デブロッキングフィルタのパラメータは、フィルタリングされた境界の両側で異なり得る。追加又は代替として、分析フィルタのタップ長、分析フィルタ係数、クリッピング、正規化、又は閾値などの、決定プロセスのためのパラメータは、フィルタリングされた境界の両側で異なり得る。
【０１０２】
[0112]別の例では、ビデオ復号器３００は、境界上のブロックの１つ以上のコーディングモードパラメータに基づいて、非対称フィルタリングのためのパラメータを決定し得る。そのようなコーディングモードパラメータの例は、コーディングモード、予測モード、スライスタイプ、又は他のそのようなパラメータを含む。
【０１０３】
[0113]次に、上記で紹介された技法のインプリメンテーションの非限定的な例が説明される。一例では、フィルタ分析（フィルタ選択又はフィルタ強度適応）のプロセスは、ブロック区分のパラメータを含むように拡張される。例えば、ビデオ復号器３００は、フィルタリングされた境界影響（boundary affects）に直交するブロックの長さに基づいて、デブロッキングフィルタ及びフィルタサポート（例えば、ダウンサンプリングされたフィルタサポート）の長さを決定するように構成され得る。別の例では、ビデオ復号器３００は、フィルタ決定のために使用される境界サンプルの空間サブサンプリングを可能にすることなど、フィルタリングされた境界と位置合わせされたブロックの長さに基づいて決定を行うように構成され得る。
【０１０４】
[0114]以下の疑似コードは、ビデオ復号器３００によって実行されるデブロッキングパラメータ導出の実例的なインプリメンテーションを提供する：
ＶＥＲＴ＿ＳＡＭＰＬＥ＿ＳＫＩＰは、境界サンプルの分類のために使用されるサンプルの数を指定する空間リサンプリングパラメータ（スキップされたサンプルの数）を定義する変数である。  
ＤＢ＿ＢＬＯＣＫ＿ＳＩＺＥ＿ＣＬＡＳＳＩＦＩＥＲは、境界サンプルの分類のために使用されるサンプルの数を定義する変数である。
Function isSmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)
if (edgeDir == EDGE_VER)
{
blkWidthQ = std::min((SizeType)LARGE_BLOCK_SIZE_CLASSIFIER, blkSizeQ.width >> 1);
blkHeightQ = blkSizeQ.height;
blkWidthP = std::min((SizeType)LARGE_BLOCK_SIZE_CLASSIFIER, blkSizeP.width >> 1);
blkHeightP = blkSizeP.height;
piSrcP = piSrcQ - blkWidthP;
}
else // (edgeDir == EDGE_HOR)
{
blkWidthQ = blkSizeQ.width;
blkHeightQ = std::min((SizeType) DB_BLOCK_SIZE_CLASSIFIER, blkSizeQ.height >> 1);
blkWidthP = blkSizeP.width;
blkHeightP = std::min((SizeType) DB_BLOCK_SIZE_CLASSIFIER, blkSizeP.height >> 1);
piSrcP = piSrcQ - blkHeightP * iStride;
}
if (edgeDir == EDGE_VER)
{
Int i;
i = localPos.y - cuPosLuma.y; 
//水平方向の局所的分散を計算する
for (Int j = 1; j < (blkWidthQ - 1); j+=VERT_SAMPLE_SKIP)
{
Int loc = i * iStride + j;
varQ += abs(piSrcQ[loc - 1] + piSrcQ[loc + 1] - (piSrcQ[loc] << 1));
loc = (i + 3) * iStride + j;
varQ += abs(piSrcQ[loc - 1] + piSrcQ[loc + 1] - (piSrcQ[loc] << 1));
}
}
else if (edgeDir == EDGE_HOR)
{
Int j;
j = localPos.x - cuPosLuma.x; 
//垂直方向の局所的分散を計算する
for (Int i = 1; i < (blkHeightQ - 1); i+=HOR_SAMPLE_SKIP)
{
Int loc = i * iStride + j;
varQ += abs(piSrcQ[loc - iStride] + piSrcQ[loc + iStride] - (piSrcQ[loc] << 1));
loc = i * iStride + (j + 3);
varQ += abs(piSrcQ[loc - iStride] + piSrcQ[loc + iStride] - (piSrcQ[loc] << 1));
}
}
【０１０５】
[0115]上記の例では、ｐＳｒｃＰは、例えば、デブロッキングフィルタリングされるべき境界の一方の側のブロックへのポインタを表し得、ｐＳｒｃＱは、デブロッキングフィルタリングされるべき境界の他方の側のブロックへのポインタを表し得る。
【０１０６】
[0116]ビデオ復号器３００は、復号されたサンプルからのデブロッキングされたサンプル値の偏差を制限するために出力サンプル信頼区間、別名、係数Ｔｃを決定するように構成され得る。Ｔｃは、デブロッキングプロセスに入力され得る。ビデオ復号器３００は、ブロックサイズなどのブロック区分パラメータと、Ｔｃ制限パラメータが適用されている現在処理されているサンプルのブロック内又はフィルタリングされた境界内の関連する位置との関数としてＴｃを適応させるように構成され得る。一例では、現在処理されているサンプルの関連する位置は、フィルタリングされた境界に対する現在処理されているサンプルのロケーションである。
【０１０７】
[0117]１つの実例的なインプリメンテーションでは、Ｔｃ制限パラメータは、フィルタリングされた境界内の現在フィルタリングされているライン／列の関連する位置の関数として定義されることができ、ここで、ｉは、境界の上／右のロケーションからそれぞれ始まる、フィルタリングされた境界の現在処理されているライン／列のインデックスである。
【０１０８】
[0118]以下の疑似コードは、Ｔｃ適用の実例的なインプリメンテーションを提供する：
for( int i = 0; i < boundaryLength; i++ )
{
for( int j = 0; j < deblockedSamplesOverBoundary; j++ )
{
delta  = deblockingFilterResult[i][j] - deblockingFilterInpt[i][j];
delta1 = Clip3(-Tc[i], Tc[i],  delta  );
}
}
いくつかの例では、Ｔｃ値は、現在処理されているブロックの左上の位置に関連する位置の関数としてブロックについて定義されることができる：
y = coordinateCurrentlyProcessedSample.y - coordinateTopLeftSampleOfBlock.y;
x = coordinateCurrentlyProcessedSample.x - coordinateTopLeftSampleOfBlock.x;
delta1 = Clip3( -tc2[y][x], tc2[y][x], delta[y][x] );
【０１０９】
[0119]ビデオ復号器３００は、決定及びフィルタリングプロセスの設計を保持しながら、決定及びフィルタリングプロセスに利用可能なサンプルセットを制限するために、ブロックサイズなど、処理されたブロックのパラメータを使用するように構成され得る。ビデオ復号器３００は、フィルタリングプロセスに必要であるが、補外又はパディングプロセスなどの指定されたプロセスを使用する制限に起因して利用可能でないサンプルを作り出し得る。
【０１１０】
[0120]以下の疑似コードは、実例的なインプリメンテーションを提供する。いくつかのインプリメンテーションでは、境界処理のためのフィルタのグループが定義され得る。フィルタの選択は、ブロック境界で近接するブロックサイズの組み合わせと、境界サンプルの分類の結果とに基づくことができる。  
ＤＢ＿ＦＩＬＴＥＲ＿ＢＬＯＣＫ＿ＳＩＺＥ１、ＤＢ＿ＦＩＬＴＥＲ＿ＢＬＯＣＫ＿ＳＩＺＥ２、及びＤＢ＿ＦＩＬＴＥＲ＿ＢＬＯＣＫ＿ＳＩＺＥ３は、境界サンプルのフィルタリングのために使用されるサンプルの数を各々定義する変数であり、例として３つのフィルタのフィルタサポートを定義する。
if (edgeDir == EDGE_VER)
{
minTUSize = std::min(blkSizeP.width, blkSizeQ.width);
}
else
{
minTUSize = std::min(blkSizeP.height, blkSizeQ.height);
}
if (minTUSize >= DB_FILTER_BLOCK_SIZE1 )
{
if (isFilterApplicable (cu, edgeDir, localPos)) 
{
//Ｐ及びＱサンプルに対して対称フィルタ１を適用する
apply_filter1(cu, edgeDir, localPos));
}
}
else if ((MODE_INTRA != cuP.predMode) && (MODE_INTRA != cuQ.predMode)) 
{
if (edgeDir == EDGE_VER)
{
if ( 
( (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1)  && (blkSizeQ.width >= 8) )
|| 
( (blkSizeQ.width >= DB_FILTER_BLOCK_SIZE1) && (blkSizeP.width >= 8) )
)
{
if (isFilterApplicable (cu, edgeDir, localPos)) 
{
//非対称フィルタリングを適用する
if (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1)
{
apply_filter2_onP(cu, edgeDir, localPos));
apply_filter3_onQ(cu, edgeDir, localPos));
}
}
}
}
else 
{
if ( 
( (blkSizeP.height >= DB_FILTER_BLOCK_SIZE1) && (blkSizeQ.height >= 8) )
|| 
( (blkSizeQ.height >= DB_FILTER_BLOCK_SIZE1) && (blkSizeP.height >= 8))
)
{
if (isFilterApplicable (cu, edgeDir, localPos)) 
{
//非対称フィルタリングを適用する
if (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1)
{
apply_filter2_onP(cu, edgeDir, localPos));
apply_filter3_onQ(cu, edgeDir, localPos));
}
}
}
}
}
【０１１１】
[0121]ビデオ復号器３００は、フィルタタイプ、フィルタ長、Ｔｃ制限パラメータ、及び／又は空間サンプルスキップステップなどのデブロッキングフィルタパラメータを選択するために、変換タイプ／基底関数に関する情報などの変換特性と、ビデオ復号器３００に非０としてシグナリングされ、従って、サンプルの再構築されたブロック中に存在する変換係数とを使用するように構成され得る。
【０１１２】
[0122]以下の疑似コードは、実例的なインプリメンテーションを提供する。ビデオ符号化器２００及びビデオ復号器３００が複数の変換セット、例えば｛Ｔ１、Ｔ２、Ｔ３｝を利用し、ビデオ符号化器２００が水平及び垂直方向に適用可能な最適な変換を選択すると仮定する。ビデオ復号器３００において、水平／垂直方向への変換適用可能性は、ビットストリームのシンタックス要素から導出されることができる。ＶＶＣのＷＤ（ドラフト２）において利用される導出プロセスが以下に指定される、
【表１】
2021535653.tif 000004
【０１１３】
[0123]以下の疑似コードは、デブロッキングフィルタパラメータ導出のために利用されることができる：
if (MTS_CU_flag == 0)
{
ApplyDeblockingProcessType1();
}else
{
Int TransformSetId = (MTS_Hor_flag << 1) + MTS_Ver_flag;
switch( TransformSetId )
{
case  0:   ApplyDeblockingProcessType2(); break;
case  1:   ApplyDeblockingProcessType3(); break;
case  2:   ApplyDeblockingProcessType4(); break;
case  3:   ApplyDeblockingProcessType5(); break;
}
}
【０１１４】
[0124]以下は、関数ＡｐｐｌｙＤｅｂｌｏｃｋｉｎｇＰｒｏｃｅｓｓＴｙｐｅ１の例である。他の関数、例えば、デブロッキング関数の設計もまた、同様のパターンに従い得る。
function ApplyDeblockingProcessType1()
{
１．ブロッキング境界に直交するブロックサイズ、非０コーディングされた変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、分類子（classifier）の長さを導出する。  
２．ブロッキング境界に直交するブロックサイズ、非０コーディングされた変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、デブロッキングの長さを導出する。  
３．ブロッキング境界に直交するブロックサイズ、非０コーディング変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、分類子（classifier）又はデブロッキングプロセス中にスキップされるサンプルを導出する。  
４．ブロッキング境界に直交するブロックサイズ、非０コーディング変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、Ｔｃ、局所的閾値、ＱＰ調整などのデブロッキングのパラメータを導出する。
【０１１５】
[0125]ビデオ復号器３００は、Ｐ及びＱフィルタ選択に関する閾値を独立して設定するために、Ｐ及びＱブロックの量子化パラメータを使用するように構成され得る。
iQPp = cuP.qp;
iQPq = cuQ.qp;
【０１１６】
[0126]以下の疑似コードが、Ｐブロックパラメータについて与えられる。Ｑブロックのための処理は同様であり得る。
const int iIndexTCp = Clip3(0, MAX_QP + DEFAULT_INTRA_TC_OFFSET, Int(iQPp + DEFAULT_INTRA_TC_OFFSET * (uiBs_loc - 1) + (tcOffsetDiv2 << 1)));
const int iIndexBp   = Clip3(0, MAX_QP, iQP + (betaOffsetDiv2 << 1));
const int iTcp       = sm_tcTable  [iIndexTC] * iBitdepthScale;
const int iBetap     = sm_betaTable[iIndexB ] * iBitdepthScale;
const int iSideThresholdp = ( iBeta + ( iBeta >> 1 ) ) >> 3;
const int iThrCutp   = iTc * 10;
【０１１７】
[0127]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【０１１８】
[0128]ｎｕｍｂｅｒＱＳｉｄｅ及びｎｕｍｂｅｒＰＳｉｄｅを、現在のラインに適用されるフィルタの長さとする。上記で紹介されたように、フィルタ長ｎｕｍｂｅｒＰＳｉｄｅ及びｎｕｍｂｅｒＱＳｉｄｅは、ブロックサイズに基づき得る。この例では、ブロック境界の７及び３画素をフィルタリングするために適用される２つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブル（tables）Ｔｃ７及びＴｃ３を通じて表される。
const char Tc7[7] = { 6, 5, 4, 3, 2, 1, 1};
const char Tc3[3] = { 6, 4, 2 };
const char *pTcP = (numberPSide == 3) ? Tc3 : Tc7;
const char *pTcQ = (numberQSide == 3) ? Tc3 : Tc7;
for (int thePos = 0; thePos < numberPSide; thePos++)
{
src = piSrcP[-iOffset*thePos];
int cvalue = (tc * pTcP[thePos]) >>1;
piSrcP[-iOffset * thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6));
}
for (int thePos = 0; thePos < numberQSide; thePos++)
{
src = piSrcQ[iOffset*thePos];
int cvalue = (tc * pTcQ[thePos]) >> 1;
piSrcQ[iOffset*thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsQ[thePos] + refQ * (64 - dbCoeffsQ[thePos]) + 32) >> 6));
}
【０１１９】
[0129]上記の例では、「Src=piSrcP[-iOffSet*thePos]」は、デブロッキングフィルタリングの前のサンプル値を例示する。「((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)」は、デブロッキングフィルタリングオペレーションを適用することを例示する。「ｒｅｆＰ」又は「ｒｅｆＱ」は、ブロック境界の一方の側（ブロックＰ又はＱ側）のサンプルの線形結合の値、又はブロック境界の一方の側（ブロックＰ又はＱ側）のフィルタリングされた値を表す。「ｒｅｆＭｉｄｄｌｅ」は、ブロック境界の両側のサンプルの線形結合の値、又はブロック境界の両側のフィルタリングされた値を表す。「Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))」は、ｓｒｃ−ｖａｌｕｅ及びｓｒｃ＋ｃｖａｌｕｅの範囲内でデブロッキングフィルタリングされた値をクリッピングすることを例示し、それは、フィルタリングされる前のサンプル値に閾値ｃｖａｌｕｅを加えた／引いたものであり、ここで、ｃｖａｌｕｅは、サンプルのロケーション及びブロックサイズに基づいて適応的である。
【０１２０】
[0130]上述されたように、ビデオ復号器３００は、デブロッキングフィルタリングが適用されたブロックのサイズに基づいて、ｎｕｍｂｅｒＱＳｉｄｅ及びｎｕｍｂｅｒＰＳｉｄｅを決定し得る。ｒｅｆＭｉｄｄｌｅは、ブロックＰ及びブロックＱの境界の各側のサンプルにフィルタを適用した後の値を表す。ｒｅｆＰ及びｒｅｆＱは、ブロックＰ及びブロックＱ中のサンプルにフィルタを適用した後の値を表す。
【０１２１】
[0131]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【０１２２】
[0132]ｎｕｍｂｅｒＱＳｉｄｅ及びｎｕｍｂｅｒＰＳｉｄｅを、現在のラインに適用されるフィルタの長さとする。この例では、ブロック境界の７及び３画素をフィルタリングするために適用される２つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブルＴｃ７及びＴｃ３を通して表される。
const char Tc7[4] = { 3, 2, 1, 1 };
const char Tc3[3] = { 3, 2, 1 };
const char *pTcP = (numberPSide == 3) ? Tc3 : Tc7;
const char *pTcQ = (numberQSide == 3) ? Tc3 : Tc7;
char nSP = (numberPSide == 3) ? 0: 1;
char nSQ = (numberQSide == 3) ? 0: 1;
for (int thePos = 0; thePos < numberPSide; thePos++)
{
src = piSrcP[-iOffset*thePos];
int cvalue = tc * pTcP[thePos >> nSP];
piSrcP[-iOffset * thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6));
}
for (int thePos = 0; thePos < numberQSide; thePos++)
{
src = piSrcQ[iOffset*thePos];
int cvalue = tc * pTcQ[thePos >> nSQ];
piSrcQ[iOffset*thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsQ[thePos] + refQ * (64 - dbCoeffsQ[thePos]) + 32) >> 6));
}
【０１２３】
[0133]上記の例では、「Src=piSrcP[-iOffSet*thePos]」は、デブロッキングフィルタリングの前のサンプル値を例示する。「((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)」は、デブロッキングフィルタリングオペレーションを適用することを例示する。「ｒｅｆＰ」及び「ｒｅｆＭｉｄｄｌｅ」は、ブロック境界の一方の側のサンプルの線形結合、又はブロック境界の一方の側のフィルタリングされた画素の例である。「Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))」は、ｓｒｃ−ｖａｌｕｅ及びｓｒｃ＋ｃｖａｌｕｅの範囲内でデブロッキングフィルタリングされた値をクリッピングすることを例示し、それは、フィルタリングされる前のサンプル値に閾値ｃｖａｌｕｅを加えたものであり、ここで、ｃｖａｌｕｅは、サンプルのロケーション及びブロックサイズに基づいて適応的である。
【０１２４】
[0134]上述されたように、ビデオ復号器３００は、デブロッキングフィルタリングが適用されたブロックのサイズに基づいて、ｎｕｍｂｅｒＱＳｉｄｅ及びｎｕｍｂｅｒＰＳｉｄｅを決定し得る。ｒｅｆＭｉｄｄｌｅは、ブロックＰ及びブロックＱの境界の各側のサンプルにフィルタを適用した後の値を表す。ｒｅｆＰ及びｒｅｆＱは、ブロックＰ及びブロックＱ中のサンプルにフィルタを適用した後の値を表す。
【０１２５】
[0135]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【０１２６】
[0136]ｎｕｍｂｅｒＱＳｉｄｅ及びｎｕｍｂｅｒＰＳｉｄｅを、現在のラインに適用されるフィルタの長さとする。この例では、ブロック境界の７及び３画素をフィルタリングするために適用される２つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブルＴｃ７及びＴｃ３を通じて表される。
const char Tc7[4] = { 3, 2, 1, 1 };
const char Tc3[3] = { 3, 2, 1 };
const Pel m4 = piSrc[0];
const Pel m3 = piSrc[-iOffset];
const Pel m5 = piSrc[iOffset];
const Pel m2 = piSrc[-iOffset * 2];
const Pel m6 = piSrc[iOffset * 2];
const Pel m1 = piSrc[-iOffset * 3];
const Pel m7 = piSrc[iOffset * 3];
const Pel m0 = piSrc[-iOffset * 4];
piSrc[-iOffset] = Clip3(m3 - Tc3[0] * tc, m3 + Tc3[0] * tc, ((m1 + 2 * m2 + 2 * m3 + 2 * m4 + m5 + 4) >> 3));
piSrc[0] = Clip3(m4 - Tc3[0] * tc, m4 + Tc3[0] * tc, ((m2 + 2 * m3 + 2 * m4 + 2 * m5 + m6 + 4) >> 3));
piSrc[-iOffset * 2] = Clip3(m2 - Tc3[1] * tc, m2 + Tc3[1] * tc, ((m1 + m2 + m3 + m4 + 2) >> 2));
piSrc[iOffset] = Clip3(m5 - Tc3[1] * tc, m5 + Tc3[1] * tc, ((m3 + m4 + m5 + m6 + 2) >> 2));
piSrc[-iOffset * 3] = Clip3(m1 - Tc3[2] * tc, m1 + Tc3[2] * tc, ((2 * m0 + 3 * m1 + m2 + m3 + m4 + 4) >> 3));
piSrc[iOffset * 2] = Clip3(m6 - Tc3[2] * tc, m6 + Tc3[2] * tc, ((m3 + m4 + m5 + 3 * m6 + 2 * m7 + 4) >> 3));
【０１２７】
[0137]更に別の例では、非対称フィルタリングの以下の決定条件が、本明細書に開示される他の特徴と組み合わせて使用され得る。  
・Ｐ又はＱ予測モードに応じて非対称のケースではロングフィルタをディセーブルにする。
bool bSidePisLarge = (edgeDir == EDGE_VER  && cuP.block(COMPONENT_Y).width >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH)
|| (edgeDir == EDGE_HOR  && cuP.block(COMPONENT_Y).height >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH);
bool bSideQisLarge = (edgeDir == EDGE_VER && cuQ.block(COMPONENT_Y).width >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH)
|| (edgeDir == EDGE_HOR && cuQ.block(COMPONENT_Y).height >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH);
bool asymmFlag = !(bSidePisLarge && bSideQisLarge);
if (asymmFlag)
if ((MODE_INTRA == cuP.predMode) ||  (MODE_INTRA == cuQ.predMode))
{
bSidePisLarge = 0;
bSideQisLarge = 0;
}
If (bSidePisLarge)
ApplyLongFilterP();
else
ApplyShortFilterP();
If (bSideQisLarge)
ApplyLongFilterQ();
else
ApplyShortFilterQ();
【０１２８】
[0138]図６は、本開示の技法を実行し得る実例的なビデオ符号化器２００を例示するブロック図である。図６は、説明を目的として提供されており、本開示に広く例証及び説明されるような技法の限定と見なされるべきではない。説明を目的として、本開示は、ＨＥＶＣビデオコーディング規格及び開発中のＨ．２６６ビデオコーディング規格などのビデオコーディング規格のコンテキストにおいてビデオ符号化器２００について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般にビデオ符号化及び復号に適用可能である。
【０１２９】
[0139]図６の例では、ビデオ符号化器２００は、ビデオデータメモリ２３０、モード選択ユニット２０２、残差生成ユニット２０４、変換処理ユニット２０６、量子化ユニット２０８、逆量子化ユニット２１０、逆変換処理ユニット２１２、再構築ユニット２１４、フィルタユニット２１６、復号ピクチャバッファ（ＤＰＢ）２１８、及びエントロピー符号化ユニット２２０を含む。
【０１３０】
[0140]ビデオデータメモリ２３０は、ビデオ符号化器２００のコンポーネントによって符号化されることになるビデオデータを記憶し得る。ビデオ符号化器２００は、例えば、ビデオソース１０４（図１）から、ビデオデータメモリ２３０中に記憶されたビデオデータを受信し得る。ＤＰＢ２１８は、ビデオ符号化器２００による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして機能し得る。ビデオデータメモリ２３０及びＤＰＢ２１８は、同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、又は他のタイプのメモリデバイスを含むＤＲＡＭなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ２３０及びＤＰＢ２１８は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、例示されているように、ビデオデータメモリ２３０は、ビデオ符号化器２００の他のコンポーネントと共にオンチップであり得るか、又はそれらのコンポーネントに対してオフチップであり得る。
【０１３１】
[0141]この開示では、ビデオデータメモリ２３０への言及は、そのように明記されていない限り、ビデオ符号化器２００の内部にあるメモリに、又はそのように明記されていない限り、ビデオ符号化器２００の外部にあるメモリに、限定されると解釈されるべきではない。むしろ、ビデオデータメモリ２３０への言及は、ビデオ符号化器２００が符号化のために受信するビデオデータ（例えば、符号化されるべき現在のブロックについてのビデオデータ）を記憶するメモリへの言及として理解されるべきである。図１のメモリ１０６はまた、ビデオ符号化器２００の様々なユニットからの出力の一時記憶（temporary storage）を提供し得る。
【０１３２】
[0142]図６の様々なユニットは、ビデオ符号化器２００によって実行される動作の理解を助けるために例示される。それらユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義された形でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は、（例えば、パラメータを受け取る又はパラメータを出力するために）ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの１つ以上は、個別の回路ブロック（固定機能又はプログラムマブル）であり得、いくつかの例では、ユニットのうちの１つ以上は、集積回路であり得る。
【０１３３】
[0143]ビデオ符号化器２００は、プログラマブル回路から形成された、算術論理ユニット（ＡＬＵ）、初等関数ユニット（ＥＦＵ）、デジタル回路、アナログ回路、及び／又はプログラマブルコアを含み得る。ビデオ符号化器２００の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ１０６（図１）が、ビデオ符号化器２００が受信及び実行するソフトウェアの命令（例えば、オブジェクトコード）を記憶し得るか、又はビデオ符号化器２００内の別のメモリ（図示せず）が、そのような命令を記憶し得る。
【０１３４】
[0144]ビデオデータメモリ２３０は、受信されたビデオデータを記憶するように構成される。ビデオ符号化器２００は、ビデオデータメモリ２３０からビデオデータのピクチャを取り出し、残差生成ユニット２０４及びモード選択ユニット２０２にビデオデータを提供し得る。ビデオデータメモリ２３０中のビデオデータは、符号化されるべき生のビデオデータであり得る。
【０１３５】
[0145]モード選択ユニット２０２は、動き推定ユニット２２２、動き補償ユニット２２４、及びイントラ予測ユニット２２６を含む。モード選択ユニット２０２は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット２０２は、パレットユニット、（動き推定ユニット２２２及び／又は動き補償ユニット２２４の一部であり得る）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、又は同様のものを含み得る。
【０１３６】
[0146]モード選択ユニット２０２は、一般に、符号化パラメータの組み合わせをテストするために複数の符号化パスを調整し、そのような組み合わせのためのレート歪み値をもたらす。符号化パラメータは、ＣＵへのＣＴＵの区分、ＣＵについての予測モード、ＣＵの残差データについての変換タイプ、ＣＵの残差データについての量子化パラメータ、等を含み得る。モード選択ユニット２０２は、最終的に、他のテストされた組み合わせよりも良好なレート歪み値を有する符号化パラメータの組み合わせを選択し得る。
【０１３７】
[0147]ビデオ符号化器２００は、ビデオデータメモリ２３０から取り出されたピクチャを一連のＣＴＵに区分し、１スライス内の１つ以上のＣＴＵをカプセル化し得る。モード選択ユニット２０２は、上述されたＱＴＢＴ構造又はＨＥＶＣの四分木構造などの木構造に従ってピクチャのＣＴＵを区分し得る。上述されたように、ビデオ符号化器２００は、ツリー構造に従ってＣＴＵを区分することから１つ以上のＣＵを形成し得る。そのようなＣＵはまた、一般に「ビデオブロック」又は「ブロック」と呼ばれ得る。
【０１３８】
[0148]一般に、モード選択ユニット２０２はまた、現在のブロック（例えば、現在のＣＵ、又はＨＥＶＣでは、ＰＵとＴＵとの重複部分）についての予測ブロックを生成するために、そのコンポーネント（例えば、動き推定ユニット２２２、動き補償ユニット２２４、及びイントラ予測ユニット２２６）を制御する。現在のブロックのインター予測の場合、動き推定ユニット２２２は、１つ以上の参照ピクチャ（例えば、ＤＰＢ２１８中に記憶された１つ以上の以前にコーディングされたピクチャ）中の１つ以上の密接に一致する参照ブロックを識別するために動き探索を実行し得る。特に、動き推定ユニット２２２は、例えば、絶対差分和（ＳＡＤ）、二乗差分和（ＳＳＤ）、平均絶対差分（ＭＡＤ）、平均二乗差分（ＭＳＤ）、又は同様のものに従って、潜在的な参照ブロックが現在のブロックにどれだけ類似しているかを表す値を算出し得る。動き推定ユニット２２２は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用してこれらの算出を実行し得る。動き推定ユニット２２２は、現在のブロックに最も密接に一致する参照ブロックを示す、これらの算出の結果として生じる最低値を有する参照ブロックを識別し得る。
【０１３９】
[0149]動き推定ユニット２２２は、現在のピクチャ中の現在のブロックの位置に対する参照ピクチャ中の参照ブロックの位置を定義する１つ以上の動きベクトル（ＭＶ）を形成し得る。動き推定ユニット２２２は次いで、動き補償ユニット２２４に動きベクトルを提供し得る。例えば、単方向インター予測の場合、動き推定ユニット２２２は、単一の動きベクトルを提供し得るのに対して、双方向インター予測の場合、動き推定ユニット２２２は、２つの動きベクトルを提供し得る。動き補償ユニット２２４は次いで、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット２２４は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度（fractional sample precision）を有する場合、動き補償ユニット２２４は、１つ以上の補間フィルタに従って予測ブロックについての値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット２２４は、それぞれの動きベクトルによって識別された２つの参照ブロックについてのデータを取り出し、例えば、サンプル毎の平均化又は重み付き平均化を通して、取り出されたデータを組み合わせ得る。
【０１４０】
[0150]別の例として、イントラ予測、又はイントラ予測コーディングの場合、イントラ予測ユニット２２６は、現在のブロックに近隣するサンプルから予測ブロックを生成し得る。例えば、方向性モード（directional modes）の場合、イントラ予測ユニット２２６は、一般に、予測ブロックを作り出すために、近隣するサンプルの値を数学的に組み合わせ、現在のブロックにわたって定義された方向にこれらの算出された値をポピュレート（populate）し得る。別の例として、ＤＣモードの場合、イントラ予測ユニット２２６は、現在のブロックに近隣するサンプルの平均を算出し、予測ブロックの各サンプルについて、この結果として得られた平均を含むように予測ブロックを生成し得る。
【０１４１】
[0151]モード選択ユニット２０２は、残差生成ユニット２０４に予測ブロックを提供する。残差生成ユニット２０４は、ビデオデータメモリ２３０から現在のブロックの生のコーディングされていないバージョンを受信し、モード選択ユニット２０２から予測ブロックを受信する。残差生成ユニット２０４は、現在のブロックと予測ブロックとの間のサンプル毎の差分を算出する。結果として生じるサンプル毎の差分は、現在のブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット２０４はまた、残差差分パルス符号変調（ＲＤＰＣＭ：residual differential pulse code modulation）を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット２０４は、バイナリ減算を実行する１つ以上の減算器回路を使用して形成され得る。
【０１４２】
[0152]モード選択ユニット２０２がＣＵをＰＵに区分する例では、各ＰＵは、ルーマ予測ユニット及び対応するクロマ予測ユニットに関連付けられ得る。ビデオ符号化器２００及びビデオ復号器３００は、様々なサイズを有するＰＵをサポートし得る。上記に示されたように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指し得、ＰＵのサイズは、ＰＵのルーマ予測ユニットのサイズを指し得る。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオ符号化器２００は、イントラ予測の場合には２Ｎ×２Ｎ又はＮ×ＮのＰＵサイズを、及びインター予測の場合には２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、又は同様のものの対称ＰＵサイズをサポートし得る。ビデオ符号化器２０及びビデオ復号器３０はまた、インター予測の場合には２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、及びｎＲ×２ＮのＰＵサイズについての非対称区分をサポートし得る。
【０１４３】
[0153]モード選択ユニット２０２がＣＵをＰＵに更に区分しない例では、各ＣＵは、ルーマコーディングブロック及び対応するクロマコーディングブロックに関連付けられ得る。上記のように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指し得る。ビデオ符号化器２００及びビデオ復号器３００は、２Ｎ×２Ｎ、２Ｎ×Ｎ、又はＮ×２ＮのＣＵサイズをサポートし得る。
【０１４４】
[0154]イントラブロックコピーモードコーディング、アフィンモードコーディング、及び線形モデル（ＬＭ）モードコーディングなどの他のビデオコーディング技法の場合、ほんの数例として、モード選択ユニット２０２は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックについての予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット２０２は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築する方法を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット２０２は、符号化されるように、エントロピー符号化ユニット２２０にこれらのシンタックス要素を提供し得る。
【０１４５】
[0155]上述されたように、残差生成ユニット２０４は、現在のブロックと対応する予測ブロックとについてのビデオデータを受信する。残差生成ユニット２０４は次いで、現在のブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット２０４は、予測ブロックと現在のブロックとの間のサンプル毎の差分を算出する。
【０１４６】
[0156]変換処理ユニット２０６は、変換係数のブロック（本明細書では「変換係数ブロック」と呼ばれる）を生成するために、残差ブロックに１つ以上の変換を適用する。変換処理ユニット２０６は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。例えば、変換処理ユニット２０６は、残差ブロックに離散コサイン変換（ＤＣＴ）、方向変換、カルーネンレーベ変換（ＫＬＴ）、又は概念的に同様の変換を適用し得る。いくつかの例では、変換処理ユニット２０６は、残差ブロックに複数の変換、例えば、回転変換などの１次変換及び２次変換を実行し得る。いくつかの例では、変換処理ユニット２０６は、残差ブロックに変換を適用しない。
【０１４７】
[0157]量子化ユニット２０８は、量子化された変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット２０８は、現在のブロックに関連付けられた量子化パラメータ（ＱＰ）値に従って変換係数ブロックの変換係数を量子化し得る。ビデオ符号化器２００は（例えば、モード選択ユニット２０２を介して）、ＣＵに関連付けられたＱＰ値を調整することによって、現在のブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、このことから、量子化された変換係数は、変換処理ユニット２０６によって作り出された元の変換係数よりも低い精度を有し得る。
【０１４８】
[0158]逆量子化ユニット２１０及び逆変換処理ユニット２１２は、変換係数ブロックから残差ブロックを再構築するために、量子化された変換係数ブロックに逆量子化及び逆変換をそれぞれ適用し得る。再構築ユニット２１４は、再構築された残差ブロックと、モード選択ユニット２０２によって生成された予測ブロックとに基づいて、（潜在的にある程度の歪みを有するが）現在のブロックに対応する再構築されたブロックを作り出し得る。例えば、再構築ユニット２１４は、再構築されたブロックを作り出すために、モード選択ユニット２０２によって生成された予測ブロックからの対応するサンプルに再構築された残差ブロックのサンプルを加算し得る。
【０１４９】
[0159]フィルタユニット２１６は、再構築されたブロックに対して１つ以上のフィルタオペレーションを実行し得る。例えば、フィルタユニット２１６は、ＣＵのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキングオペレーションを実行し得る。例えば、フィルタユニット２１６は、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量をクリッピング値と比較し、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量の代わりにクリッピング値によって値を修正するように構成され得る。即ち、フィルタユニット２１６は、サンプルに対する修正の量の大きさを制限するように構成され得る。いくつかの例では、フィルタユニット２１６のオペレーションは、スキップされ得る。
【０１５０】
[0160]ビデオ符号化器２００は、ＤＰＢ２１８中に再構築されたブロックを記憶する。例えば、フィルタユニット２１６のオペレーションが実行されない例では、再構築ユニット２１４は、再構築されたブロックをＤＰＢ２１８に記憶し得る。フィルタユニット２１６のオペレーションが実行される例では、フィルタユニット２１６は、フィルタリングされた再構築されたブロックをＤＰＢ２１８に記憶し得る。動き推定ユニット２２２及び動き補償ユニット２２４は、後に符号化されるピクチャのブロックをインター予測するために、再構築された（及び潜在的にフィルタリングされた）ブロックから形成された参照ピクチャをＤＰＢ２１８から取り出し得る。加えて、イントラ予測ユニット２２６は、現在のピクチャ中の他のブロックをイントラ予測するために、現在のピクチャのＤＰＢ２１８中の再構築されたブロックを使用し得る。
【０１５１】
[0161]一般に、エントロピー符号化ユニット２２０は、ビデオ符号化器２００の他の機能的コンポーネントから受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット２２０は、量子化ユニット２０８からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット２２０は、モード選択ユニット２０２からの予測シンタックス要素（例えば、インター予測のための動き情報又はイントラ予測のためのイントラモード情報）をエントロピー符号化し得る。エントロピー符号化ユニット２２０は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して１つ以上のエントロピー符号化オペレーションを実行し得る。例えば、エントロピー符号化ユニット２２０は、データに対してコンテキスト適応可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）オペレーション、ＣＡＢＡＣオペレーション、可変対可変（Ｖ２Ｖ：variable-to-variable）長コーディングオペレーション、シンタックスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）オペレーション、確率区間区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディングオペレーション、指数ゴロム（Exponential-Golomb）符号化オペレーション、又は別のタイプのエントロピー符号化オペレーションを実行し得る。いくつかの例では、エントロピー符号化ユニット２２０は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【０１５２】
[0162]ビデオ符号化器２００は、スライス又はピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット２２０がビットストリームを出力し得る。
【０１５３】
[0163]上述された動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロック及び／又はクロマコーディングブロックのための動作であると理解されるべきである。上述されたように、いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、ＣＵのルーマ成分及びクロマ成分である。いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、ＰＵのルーマ成分及びクロマ成分である。
【０１５４】
[0164]いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックについての動きベクトル（ＭＶ）及び参照ピクチャを識別するための動作は、クロマブロックについてのＭＶ及び参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックについてのＭＶは、クロマブロックについてのＭＶを決定するためにスケーリングされ得、参照ピクチャは、同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロック及びクロマコーディングブロックについて同じであり得る。
【０１５５】
[0165]図７は、本開示の技法を実行し得る実例的なビデオ復号器３００を例示するブロック図である。図７は、説明を目的として提供されており、本開示に広く例証及び説明されるような技法を限定していない。説明を目的として、本開示は、ＪＥＭ及びＨＥＶＣの技法に従って説明されるビデオ復号器３００について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
【０１５６】
[0166]図７の例では、ビデオ復号器３００は、コーディングピクチャバッファ（ＣＰＢ）メモリ３２０、エントロピー復号ユニット３０２、予測処理ユニット３０４、逆量子化ユニット３０６、逆変換処理ユニット３０８、再構築ユニット３１０、フィルタユニット３１２、復号ピクチャバッファ（ＤＰＢ）３１４を含む。予測処理ユニット３０４は、動き補償ユニット３１６及びイントラ予測ユニット３１８を含む。予測処理ユニット３０４は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット３０４は、パレットユニット、（動き補償ユニット３１６の一部を形成し得る）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、又は同様のものを含み得る。他の例では、ビデオ復号器３００は、より多い、より少ない、又は異なる機能的コンポーネントを含み得る。
【０１５７】
[0167]ＣＰＢメモリ３２０は、ビデオ復号器３００のコンポーネントによって復号されることになる、符号化されたビデオのビットストリームなどのビデオデータを記憶し得る。ＣＰＢメモリ３２０中に記憶されるビデオデータは、例えば、コンピュータ可読媒体１１０（図１）から取得され得る。ＣＰＢメモリ３２０は、符号化されたビデオのビットストリームからの符号化されたビデオデータ（例えば、シンタックス要素）を記憶するＣＰＢを含み得る。また、ＣＰＢメモリ３２０は、ビデオ復号器３００の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。ＤＰＢ３１４は、一般に、符号化されたビデオのビットストリームの後続のデータ又はピクチャを復号するときにビデオ復号器３００が参照ビデオデータとして出力及び／又は使用し得る復号されたピクチャを記憶する。ＣＰＢメモリ３２０及びＤＰＢ３１４は、ＳＤＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、又は他のタイプのメモリデバイスを含むＤＲＡＭなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ＣＰＢメモリ３２０及びＤＰＢ３１４は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、ＣＰＢメモリ３２０は、ビデオ復号器３００の他のコンポーネントと共にオンチップであり得るか、又はそれらのコンポーネントに対してオフチップであり得る。
【０１５８】
[0168]追加又は代替として、いくつかの例では、ビデオ復号器３００は、メモリ１２０（図１）からコーディングされたビデオデータを取り出し得る。即ち、メモリ１２０は、ＣＰＢメモリ３２０を用いて上述されたようにデータを記憶し得る。同様に、メモリ１２０は、ビデオ復号器３００の処理回路によって実行されることになるソフトウェアにおいてビデオ復号器３００の機能のうちのいくつか又は全てがインプリメントされるとき、ビデオ復号器３００によって実行されることになる命令を記憶し得る。
【０１５９】
[0169]図７に示された様々なユニットは、ビデオ復号器３００によって実行される動作の理解を助けるために例示される。それらユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとしてインプリメントされ得る。図６と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義された形でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は、（例えば、パラメータを受け取る又はパラメータを出力するために）ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの１つ以上は、個別の回路ブロック（固定機能又はプログラムマブル）であり得、いくつかの例では、ユニットのうちの１つ以上は、集積回路であり得る。
【０１６０】
[0170]ビデオ復号器３００は、プログラマブル回路から形成された、ＡＬＵ、ＥＦＵ、デジタル回路、アナログ回路、及び／又はプログラマブルコアを含み得る。ビデオ復号器３００の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップ又はオフチップメモリが、ビデオ復号器３００が受信及び実行するソフトウェアの命令（例えば、オブジェクトコード）を記憶し得る。
【０１６１】
[0171]エントロピー復号ユニット３０２は、ＣＰＢから符号化されたビデオデータを受信し、シンタックス要素を再び作り出すためにビデオデータをエントロピー復号し得る。予測処理ユニット３０４、逆量子化ユニット３０６、逆変換処理ユニット３０８、再構築ユニット３１０、及びフィルタユニット３１２は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１６２】
[0172]一般に、ビデオ復号器３００は、ブロック毎にピクチャを再構築する。ビデオ復号器３００は、各ブロックに対して個々に再構築動作を実行し得る（ここで、現在再構築されている、即ち、復号されているブロックは、「現在のブロック」と呼ばれ得る）。
【０１６３】
[0173]エントロピー復号ユニット３０２は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、並びに量子化パラメータ（ＱＰ）及び／又は変換モードインジケーション（１つ以上）などの変換情報をエントロピー復号し得る。逆量子化ユニット３０６は、量子化の程度、及び同様に、逆量子化ユニット３０６が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックに関連付けられたＱＰを使用し得る。逆量子化ユニット３０６は、例えば、量子化された変換係数を逆量子化するために、ビット単位の左シフトオペレーションを実行し得る。逆量子化ユニット３０６は、それによって、変換係数を含む変換係数ブロックを形成し得る。
【０１６４】
[0174]逆量子化ユニット３０６が変換係数ブロックを形成した後に、逆変換処理ユニット３０８は、現在のブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに１つ以上の逆変換を適用し得る。例えば、逆変換処理ユニット３０８は、変換係数ブロックに逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、又は別の逆変換を適用し得る。
【０１６５】
[0175]更に、予測処理ユニット３０４は、エントロピー復号ユニット３０２によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。例えば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット３１６は、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックをそこから取り出すべきＤＰＢ３１４中の参照ピクチャ、並びに、現在のピクチャ中の現在のブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット３１６は、一般に、動き補償ユニット２２４（図６）に関して説明されたのと実質的に同様の形でインター予測プロセスを実行し得る。
【０１６６】
[0176]別の例として、現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット３１８は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット３１８は、一般に、イントラ予測ユニット２２６（図６）に関して説明されたのと実質的に同様の形でイントラ予測プロセスを実行し得る。イントラ予測ユニット３１８は、ＤＰＢ３１４から現在のブロックに近隣するサンプルのデータを取り出し得る。
【０１６７】
[0177]再構築ユニット３１０は、予測ブロック及び残差ブロックを使用して現在のブロックを再構築し得る。例えば、再構築ユニット３１０は、現在のブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【０１６８】
[0178]フィルタユニット３１２は、再構築されたブロックに対して１つ以上のフィルタオペレーションを実行し得る。例えば、フィルタユニット３１２は、再構築されたブロックのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキングオペレーションを実行し得る。例えば、フィルタユニット３１２は、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量をクリッピング値と比較し、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量の代わりにクリッピング値によって値を修正するように構成され得る。即ち、フィルタユニット３１２は、サンプルに対する修正の量の大きさを制限するように構成され得る。フィルタユニット３１２のオペレーションは、必ずしも全ての例において実行されるわけではない。
【０１６９】
[0179]ビデオ復号器３００は、ＤＰＢ３１４中に再構築されたブロックを記憶し得る。例えば、フィルタユニット３１２のオペレーションが必要とされない例では、再構築ユニット３１０は、再構築されたブロックをＤＰＢ３１４に記憶し得る。フィルタユニット３１２のオペレーションが必要とされる例では、フィルタユニット３１２は、フィルタリングされた再構築されたブロックをＤＰＢ３１４に記憶し得る。上述されたように、ＤＰＢ３１４は、予測処理ユニット３０４に、イントラ予測のための現在のピクチャと後続の動き補償のための以前に復号されたピクチャとのサンプルなどの参照情報を提供し得る。その上、ビデオ復号器３００は、図１のディスプレイデバイス１１８などのディスプレイデバイス上での後続の提示のために、ＤＰＢ３１４から復号されたピクチャ（例えば、復号されたビデオ）を出力し得る。
【０１７０】
[0180]図８は、図７におけるフィルタユニット３１２の実例的なインプリメンテーションを示す。図６におけるフィルタユニット２１６は、同じ又は同様の形でインプリメントされ得る。フィルタユニット２１６及び３１２は、ことによると、ビデオ符号化器２００又はビデオ復号器３００の他のコンポーネントと連携して、本開示の技法を実行し得る。図８の例では、フィルタユニット３１２は、デブロッキングフィルタ３４２、ＳＡＯフィルタ３４４、及びＡＬＦ／ＧＬＡＦフィルタ３４６を含む。ＳＡＯフィルタ３４４は、例えば、ブロックのサンプルについてのオフセット値を決定するように構成され得る。ＡＬＦ／ＧＡＬＦ３４６は、同様に、適応ループフィルタ及び／又は幾何学的適応ループフィルタリングを使用してビデオデータのブロックをフィルタリングし得る。
【０１７１】
[0181]フィルタユニット３１２は、より少ないフィルタを含み得、及び／又は、追加のフィルタを含み得る。加えて、図８に示される特定のフィルタは、異なる順序でインプリメントされ得る。（コーディングループ中又はコーディングループ後のうちのいずれかの）他のループフィルタもまた、画素遷移を平滑化するために、又は別様にビデオ品質を改善するために使用され得る。フィルタユニット３１２によって出力された、フィルタリングされた再構築されたビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するＤＰＢ３１４中に記憶され得る。ＤＰＢ３１４は、復号されたビデオを図１のディスプレイデバイス１１８などのディスプレイデバイス上での後の提示のために記憶する追加のメモリの一部であるか、又はそれとは別個であり得る。
【０１７２】
[0182]ビデオ復号器３００、例えば、フィルタユニット３１２のデブロッキングフィルタ３４２は、本開示に説明される任意の技法又は技法の組み合わせに従って、ビデオデータの第１の再構築されたブロックを取得し、第１の再構築されたブロックにデブロッキングフィルタリングを適用するように構成され得る。ビデオデータの第１の再構築されたブロックを取得するために、ビデオ復号器３００は、ビデオデータの予測ブロックを決定し、ビデオデータの残差ブロックをビデオデータの予測ブロックに加算するように構成され得る。
デブロッキングフィルタリングを第１の再構築されたブロックに適用するために、ビデオ復号器３００は、ビデオデータの第１の再構築されたブロックとビデオデータの第２の再構築されたブロックとの境界に位置するサンプルにデブロッキングフィルタリングを適用し得る。第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器３００は、デブロッキングフィルタリングのためのフィルタ強度を決定する。
【０１７３】
[0183]第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器３００は、デブロッキングフィルタリングのためのフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器３００は、フィルタリングされるべき境界に直交するブロックの長さに基づいてフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器３００は、フィルタリングされるべき境界と位置合わせされたブロック（a block aligned with a boundary）の長さに基づいてフィルタを選択する。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器３００は、異なる長さを有する複数のデブロッキングフィルタからフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器３００は、異なるフィルタサポートを有する複数のデブロッキングフィルタからフィルタを選択する。
【０１７４】
[0184]ビデオ復号器３００は、信頼係数（confidence factor）を決定し、信頼係数に基づいてサンプル修正量を決定するように構成され得る。ビデオ復号器３００は、サンプル修正量によって第１の再構築されたブロックのサンプルを修正することによって、第１の再構築されたブロックにデブロッキングフィルタリングを適用し得る。ビデオ復号器３００は、サンプル修正量を値の範囲に制限することによって、信頼係数に基づくサンプル修正量を決定し得る。信頼係数は、例えば、区間（interval）であり得る。
【０１７５】
[0185]ビデオ復号器３００は、ビデオデータの第２の予測ブロックを決定することと、第１の再構築されたブロックに隣接するビデオデータの第２の再構築されたブロックを決定するために、ビデオデータの第２の予測ブロックにビデオデータの第２の残差ブロックを加算することと、残差ブロックについての第１の量子化パラメータを決定することと、第２の残差ブロックについての第２の量子化パラメータを決定することと、第１の量子化パラメータに基づいて第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、第２の量子化パラメータに基づいて第２の再構築されたブロックにデブロッキングフィルタリングを適用することとを行うように構成され得る。
【０１７６】
[0186]第１の量子化パラメータに基づいて第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器３００は、第１の量子化パラメータに基づいて第１の再構築されたブロックのサンプルについてのサンプル修正量を決定することと、第２の量子化パラメータに基づいて第２の再構築されたブロックのサンプルについてのサンプル修正量を決定することによって、第２の量子化パラメータに基づいて第２の再構築されたブロックにデブロッキングフィルタリングを適用することと、を行い得る。第１の量子化パラメータに基づいて第１の再構築されたブロックのサンプルについてのサンプル修正量を決定するために、ビデオ復号器３００は、第１の再構築されたブロックのサンプルについてのサンプル修正量を値の第１の範囲に制限することと、第２の再構築されたブロックのサンプルについてのサンプル修正量を値の第１の範囲とは異なる値の第２の範囲に制限することによって、第２の量子化パラメータに基づいて第２の再構築されたブロックのサンプルについてのサンプル修正量を決定することとを行い得る。
【０１７７】
[0187]第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器３００は、デブロッキングフィルタリングのためのデブロッキングフィルタパラメータを選択し得る。デブロッキングフィルタリングパラメータは、例えば、フィルタタイプ、フィルタ長、制限パラメータ、又は空間サンプルスキップステップのうちの１つ以上を含み得る。デブロッキングフィルタリングのためのデブロッキングフィルタパラメータを選択するために、ビデオ復号器３００は、残差ブロックについての変換特性又は変換係数のうちの一方又は両方に基づいて、デブロッキングフィルタパラメータを選択し得る。
【０１７８】
[0188]第１の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器３００は、利用不可能なサンプルについての値を決定し、決定された値を使用してデブロッキングフィルタリングを適用し得る。利用不可能なサンプルについての値を決定するために、ビデオ復号器３００は、補外プロセス及び／又はパディングプロセスを実行し得る。ビデオ復号器３００は、第１の再構築されたブロックのブロック特性に基づいて、利用不可能なサンプルが利用不可能であると決定し得る。
【０１７９】
[0189]ビデオ復号器３００、例えば、フィルタユニット３１２のデブロッキングフィルタ３４２は、ビデオデータの第１の再構築されたブロックを取得することと、ここにおいて、第１の再構築されたブロックは、第１の値を有する第１のサンプルを含む、  デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することと、  第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定することと、
第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較することと、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正することと、  ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第１のサンプルは、第１のフィルタリングされた値を有する、  を行うように更に構成される。
【０１８０】
[0190]第１のフィルタリングされた値は、第１の値に第１のクリッピング値を加えたものに等しいか、又は第１の値から第１のクリッピング値を引いたものに等しくなり得る。ビデオ復号器３００は、第１の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、第１のサンプルについての第１のクリッピング値を決定し得る。
【０１８１】
[0191]第１の再構築されたブロックは、第２の値を有する第２のサンプルを含み得、ビデオ復号器３００は、第１の再構築されたブロックの境界に対する第２のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第２のサンプルについての第２のクリッピング値を決定することと、デブロッキングフィルタリングによって引き起こされた第２のサンプルに対する修正の量が第２のクリッピング値よりも小さいことに応答して、第２のサンプルについての第２のフィルタリングされた値を決定するために、第２のサンプルに対する修正の量によって第２の値を修正することと、を行い得る。そのような例では、デブロッキングフィルタリングされたブロックでは、第２のサンプルは、第２のフィルタリングされた値を有する。
【０１８２】
[0192]第１のサンプルと第１の再構築されたブロックの境界との間の距離が、第２のサンプルと第１の再構築されたブロックの境界との間の距離に等しい場合、ビデオ復号器３００は、第１のクリッピング値を第２のサンプルについての第２のクリッピング値に等しく設定し得る。第１のサンプルと第１の再構築されたブロックの境界との間の距離が、第２のサンプルと第１の再構築されたブロックの境界との間の距離とは異なる場合、ビデオ復号器３００は、第１のクリッピング値を第２のクリッピング値とは異なるように設定し得る。
【０１８３】
[0193]第１の再構築されたブロックのサイズに基づいて、ビデオ復号器３００は、デブロッキングフィルタが、第１の再構築されたブロックの境界から６つ以下のサンプル離れた（removed from）サンプルにのみ適用されると決定し得る。第１の再構築されたブロックのサイズに基づいて、ビデオ復号器３００は、デブロッキングフィルタが第１の再構築されたブロックの境界から２つ以下のサンプル離れた（removed from）サンプルに適用されると決定し得る。
【０１８４】
[0194]第１のクリッピング値は、第１の再構築されたブロックの境界からの距離と共に減少し得る。例えば、デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界に隣接していることに応答して、ビデオ復号器３００は、第１のクリッピング値が６に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から１サンプル離れている（removed from）ことに応答して、ビデオ復号器３００は、第１のクリッピング値が５に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から２サンプル離れている（removed from）ことに応答して、ビデオ復号器３００は、第１のクリッピング値が４に等しいと決定し得る。
【０１８５】
[0195]デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から３サンプル離れていることに応答して、ビデオ復号器３００は、第１のクリッピング値が３に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から４サンプル離れていることに応答して、ビデオ復号器３００は、第１のクリッピング値が２に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の６行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から５サンプル離れていることに応答して、ビデオ復号器３００は、第１のクリッピング値が１に等しいと決定し得る。
【０１８６】
[0196]デブロッキングフィルタが第１の再構築されたブロックの境界の２行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界に隣接していることに応答して、ビデオ復号器３００は、第１のクリッピング値が６に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の２行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から１サンプル離れていることに応答して、ビデオ復号器３００は、第１のクリッピング値が４に等しいと決定し得る。デブロッキングフィルタが第１の再構築されたブロックの境界の２行又は列内のサンプルに適用されると決定することに応答して、及び第１のサンプルが第１の再構築されたブロックの境界から離された２つのサンプルであることに応答して、ビデオ復号器３００は、第１のクリッピング値が２に等しいと決定し得る。
【０１８７】
[0197]ビデオ復号器３００はまた、ビデオデータの第２の再構築されたブロックを取得することと、ここにおいて、第２の再構築されたブロックは、第２の値を有する第２のサンプルを含み、第２の再構築されたブロックは、第１の再構築されたブロックと境界を共有し、第１の再構築されたブロックと第２の再構築されたブロックとは、異なるサイズである、  第２のデブロッキングフィルタリングされたブロックを決定するために、第２の再構築されたブロックにデブロッキングフィルタリングを適用することと、  第２の再構築されたブロックの境界に対する第２のサンプルのロケーションに基づいて、及び第２の再構築されたブロックのサイズに基づいて、第２のサンプルについての第２のクリッピング値を決定することと、  デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第２のクリッピング値よりも大きいことに応答して、第２のサンプルについての第２のフィルタリングされた値を決定するために、第２のクリッピング値によって第１の値を修正することと、  ビデオデータの第２のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、第２のデブロッキングフィルタリングされたブロックでは、第２のサンプルは、第２のフィルタリングされた値を有する、  を行うように構成され得る。ビデオ復号器３００は、第１のデブロッキングフィルタリングされたブロックを決定するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用することが、第１の長さの第１のフィルタで第１の再構築されたブロック中のサンプルをフィルタリングすることを備え、  第２のデブロッキングフィルタリングされたブロックを決定するために、第２の再構築されたブロックにデブロッキングフィルタリングを適用することが、第１の長さとは異なる第２の長さの第２のフィルタで第２の再構築されたブロック中のサンプルをフィルタリングすることを備えることを行い得る。
【０１８８】
[0198]図９は、現在のブロックを符号化するための実例的な方法を例示するフローチャートである。現在のブロックは、現在のＣＵを含み得る。ビデオ符号化器２００（図１及び図６）に関して説明されるが、他のデバイスが図９と同様の方法を実行するように構成され得ることが理解されるべきである。
【０１８９】
[0199]この例では、ビデオ符号化器２００は最初に、現在のブロックを予測する（３５０）。例えば、ビデオ符号化器２００は、現在のブロックについての予測ブロックを形成し得る。ビデオ符号化器２００は次いで、現在のブロックについての残差ブロックを算出し得る（３５２）。残差ブロックを算出するために、ビデオ符号化器２００は、元のコーディングされていないブロックと現在のブロックについての予測ブロックとの間の差分を算出し得る。ビデオ符号化器２００は次いで、残差ブロックの係数を変換及び量子化し得る（３５４）。次に、ビデオ符号化器２００は、残差ブロックの量子化された変換係数を走査し得る（３５６）。走査中、又は走査に続いて、ビデオ符号化器２００は、係数をエントロピー符号化し得る（３５８）。例えば、ビデオ符号化器２００は、ＣＡＶＬＣ又はＣＡＢＡＣを使用して係数を符号化し得る。ビデオ符号化器２００は次いで、ブロックの係数についてのエントロピーコーディングされたデータを出力し得る（３６０）。
【０１９０】
[0200]図１０は、ビデオデータの現在のブロックを復号するための実例的な方法を例示するフローチャートである。現在のブロックは、現在のＣＵを含み得る。ビデオ復号器３００（図１及び図７）に関して説明されるが、他のデバイスが図１０のものと同様の方法を実行するように構成され得ることが理解されるべきである。
【０１９１】
[0201]ビデオ復号器３００は、現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされた予測情報及びエントロピーコーディングされたデータなど、現在のブロックについてのエントロピーコーディングされたデータを受信し得る（３７０）。ビデオ復号器３００は、現在のブロックについての予測情報を決定し、残差ブロックの係数を再び作り出すために、エントロピーコーディングされたデータをエントロピー復号し得る（３７２）。ビデオ復号器３００は、現在のブロックについての予測ブロックを算出するために、例えば、現在のブロックについての予測情報によって示されるようなイントラ予測モード又はインター予測モードを使用して、現在のブロックを予測し得る（３７４）。ビデオ復号器３００は次いで、量子化された変換係数のブロックを作成するために、再び作り出された係数を逆走査し得る（３７６）。ビデオ復号器３００は次いで、残差ブロックを作り出すために、係数を逆量子化及び逆変換し得る（３７８）。ビデオ復号器３００は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在のブロックを復号し得る（３８０）。再構築されたブロックを生成するために予測ブロックと残差ブロックとを組み合わせた後、ビデオ復号器３００は、フィルタリングされた再構築されたブロックを生成するために、フィルタリングされていない再構築されたブロックに１つ以上のフィルタ（例えば、デブロッキング、ＳＡＯ、及び／又はＡＬＦ／ＧＡＬＦ）を適用し得る（３８２）。
【０１９２】
[0202]図１１は、本開示に説明される実例的なビデオ復号技法を例示するフロー図である。図１１の技法は、それに限定するものではないが、ビデオ復号器３００などの一般のビデオ復号器を参照して説明される。いくつかの事例では、図１１の技法は、ビデオ符号化プロセスの一部として、ビデオ符号化器２００などのビデオ符号化器によって実行され得、そのケースでは、一般のビデオ復号器は、ビデオ符号化器２００の復号ループ（例えば、逆量子化ユニット２１０、逆変換処理ユニット２１２、再構築ユニット２１４、及びフィルタユニット２１６）に対応する。
【０１９３】
[0203]図１１の例では、ビデオ復号器は、第１の値を有する第１のサンプルを含むビデオデータの第１の再構築されたブロックを取得する（４００）。ビデオ復号器は、デブロッキングフィルタリングされたブロックを作成するために、第１の再構築されたブロックにデブロッキングフィルタリングを適用する（４０２）。ビデオ復号器は、第１の再構築されたブロックの境界に対する第１のサンプルのロケーションに基づいて、及び第１の再構築されたブロックのサイズに基づいて、第１のサンプルについての第１のクリッピング値を決定する（４０４）。ビデオ復号器３００は、第１のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量と比較する（４０６）。デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値よりも大きいことに応答して（４０８，ＹＥＳ）、ビデオ復号器は、第１のサンプルについての第１のフィルタリングされた値を決定するために、第１のクリッピング値によって第１の値を修正する（４１０）。デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量が第１のクリッピング値より大きくないことに応答して（４０８，ＮＯ）、ビデオ復号器は、デブロッキングフィルタリングによって引き起こされた第１のサンプルに対する修正の量によって第１の値を修正する（４１２）。ビデオ復号器は、例えば、第１のフィルタリングされた値を第１の値にクリッピング値を加えたもの又は引いたものに等しく設定するのではなく、第１のフィルタリングされた値をデブロッキングフィルタリングによって決定されたフィルタリングされた値に等しく保ち得る。
【０１９４】
[0204]例に応じて、本明細書に説明された技法のうちの任意のもののある特定の動作（acts）又はイベントは、異なるシーケンスで実行されることができ、追加、統合、又は完全に省略され得る（例えば、全ての説明された動作又はイベントが、それら技法の実施のために必要なわけではない）ことが認識されるべきである。その上、ある特定の例では、動作又はイベントは、連続にではなく、例えば、マルチスレッド処理、割り込み処理、又は複数のプロセッサを通じて、同時に実行され得る。
【０１９５】
[0205]１つ以上の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合、それら機能は、１つ以上の命令又はコードとして、コンピュータ可読媒体上に記憶され得るか、又はコンピュータ可読媒体を通して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、又は、例えば、通信プロトコルに従って、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、（１）非一時的である有形コンピュータ可読記憶媒体、又は（２）信号若しくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示に説明された技法のインプリメンテーションのための命令、コード及び／又はデータ構造を取り出すために、１つ以上のコンピュータ又は１つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１９６】
[0206]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭ若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリ、又は命令若しくはデータ構造の形態で所望されるプログラムコードを記憶するために使用されることができ、且つコンピュータによってアクセスされることができる任意の他の媒体のうちの１つ以上を含むことができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、ウェブサイト、サーバ、又は同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、若しくは赤外線、無線、及びマイクロ波などのワイヤレス技術を使用する他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義中に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象にすることが理解されるべきである。ディスク（disk）及びディスク（disc）は、本明細書で使用される場合、コンパクトディスク（ＣＤ）（disc）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（ＤＶＤ）（disc）、フロッピー（登録商標）ディスク（disk）、及びＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は通常、磁気的にデータを再生し、ディスク（disc）は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１９７】
[0207]命令は、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、又は他の同等な集積若しくはディスクリートロジック回路などの１つ以上のプロセッサによって実行され得る。それ故に、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造のうちの任意のもの又は本明細書に説明された技法のインプリメンテーションに適した任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書に説明された機能は、符号化及び復号のために構成された専用ハードウェア及び／若しくはソフトウェアモジュール内で提供され得るか、又は組み合わされたコーデック中に組み込まれ得る。また、本技法は、１つ以上の回路又は論理素子において十分にインプリメントされることができる。
【０１９８】
[0208]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）又はＩＣのセット（例えば、チップセット）を含む、幅広い様々なデバイス又は装置においてインプリメントされ得る。様々なコンポーネント、モジュール、又はユニットは、本開示では、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するように説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わされ得るか、又は、適したソフトウェア及び／若しくはファームウェアと併せて、上述されたような１つ以上のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【０１９９】
[0209]様々な例が説明されてきた。これら及び他の例は、次の特許請求の範囲内にある。
【図１】
2021535653.tif 000005
【図２Ａ】
2021535653.tif 000006
【図２Ｂ】
2021535653.tif 000007
【図３】
2021535653.tif 000008
【図４】
2021535653.tif 000009
【図５】
2021535653.tif 000010
【図６】
2021535653.tif 000011
【図７】
2021535653.tif 000012
【図８】
2021535653.tif 000013
【図９】
2021535653.tif 000014
【図１０】
2021535653.tif 000015
【図１１】
2021535653.tif 000016
【国際調査報告】
2021535653.tif 000017
2021535653.tif 000018
2021535653.tif 000019
2021535653.tif 000020