(57)【要約】  ビデオデータを符号化または復号するための装置が、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築する。現在ピクチャの１つまたは複数のブロックは、現在ピクチャの再構築されたサンプルを備える。さらに、現在ピクチャの１つまたは複数のブロックを再構築した後に、本装置は、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用する。現在ピクチャの再構築されたサンプルを備える現在ブロック。
2019519982.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号または符号化する方法であって、前記方法は、
コンピューティングデバイスによって、前記ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、前記現在ピクチャの前記１つまたは複数のブロックが、前記現在ピクチャの再構築されたサンプルを備える、
前記現在ピクチャの前記１つまたは複数のブロックを再構築した後に、前記コンピューティングデバイスによって、前記現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、前記現在ブロックが、前記現在ピクチャの前記再構築されたサンプルを備える、
を備える、方法。
【請求項２】
前記特定の関数が、前記複数のフィルタの線形関数である、請求項１に記載の方法。
【請求項３】
テンプレートが、前記現在ブロックに隣接する前記現在ピクチャの複数の隣接ブロックを定義し、
前記複数の隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックに関連付けられたそれぞれのフィルタを含む、
請求項１に記載の方法。
【請求項４】
前記複数のフィルタが、ある数のフィルタからなり、前記方法が、前記コンピューティングデバイスによって、ビットストリーム中のシンタックス要素に基づいて、前記現在ブロックのためのフィルタの前記数を決定することをさらに備える、請求項１に記載の方法。
【請求項５】
前記コンピューティングデバイスによって、テンプレート中の隣接ブロックによって使用されるフィルタに基づいて前記複数のフィルタを決定することをさらに備え、前記テンプレートが、前記現在ブロックを中心とするブロックの幾何学的パターンである、
請求項１に記載の方法。
【請求項６】
前記コンピューティングデバイスによって、スライスタイプ、量子化パラメータ、時間識別子、前記テンプレートが別のピクチャによって参照されるのか参照されないのか、あるいはシーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダのうちの１つまたは複数中でシグナリングされる情報のうちの１つまたは複数に基づいて、前記テンプレートを決定すること
をさらに備える、請求項５に記載の方法。
【請求項７】
前記コンピューティングデバイスによって、あらかじめ定義されたマスクに基づいて、前記特定の関数中で使用される重み付け係数を決定することをさらに備え、前記あらかじめ定義されたマスクが、テンプレート中のブロックのためのマスク値を指定し、前記テンプレートが、前記現在ブロックを中心とするブロックの幾何学的パターンである、
請求項１に記載の方法。
【請求項８】
前記方法が、前記コンピューティングデバイスによって、ビットストリームから、複数の隣接ブロックのための重み付け係数を示すデータを取得することをさらに備え、
前記複数の隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックのためのそれぞれのフィルタを含み、
前記特定の関数を適用することが、前記特定の関数を適用するとき、前記コンピューティングデバイスによって、前記隣接ブロックのための前記重み付け係数を使用することを備える、
請求項１に記載の方法。
【請求項９】
前記方法は、
前記コンピューティングデバイスによって、ビットストリームから、隣接ブロックに関連付けられたすべての重み付け係数が０に等しいかどうかを示すシンタックス要素を取得することと、
前記シンタックス要素が、前記隣接ブロックに関連付けられたすべての重み付け係数が０に等しいとは限らないことを示すことに基づいて、前記コンピューティングデバイスによって、前記ビットストリームから、前記隣接ブロックに関連付けられた前記重み付け係数を示すデータを取得することと
をさらに備え、
前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記特定の関数を適用するために前記隣接ブロックに関連付けられた前記重み付け係数を使用することを備える、
請求項１に記載の方法。
【請求項１０】
前記現在ブロックのアクティビティレベル、または
前記現在ブロックの方向分類
のうちの少なくとも１つに基づいて前記複数のフィルタ中の２つまたはそれ以上のフィルタを決定することをさらに備える、請求項１に記載の方法。
【請求項１１】
前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのためのあらかじめ定義された重み付け係数を使用することを備える、
請求項１に記載の方法。
【請求項１２】
前記方法が、前記コンピューティングデバイスによって、シンタックス要素に基づいて、前記複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定することをさらに備え、前記シンタックス要素が、シーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダのうちの１つまたは複数中に含まれ、
前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのための前記あらかじめ定義された重み付け係数を使用することを備える、
請求項１に記載の方法。
【請求項１３】
前記方法が、前記コンピューティングデバイスによって、グループインデックス、クラスインデックス、コーディングユニット、予測ユニット、または変換ユニットに対する前記現在ブロックの位置、あるいはコーディングモードに基づいて、前記複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定することをさらに備え、
前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのための前記重み付け係数を使用することを備える、
請求項１に記載の方法。
【請求項１４】
前記方法は、
前記コンピューティングデバイスによって、前記ビデオデータの複数のピクチャの符号化表現を備えるビットストリームを受信することと、前記複数のピクチャが前記現在ピクチャを含み、前記現在ピクチャが第１のブロックと第２のブロックとを含み、前記第１のブロックと前記第２のブロックとが部分的に重複する、
前記コンピューティングデバイスによって、前記第１のブロックのためのクラスと前記第２のブロックのためのクラスとを決定することと
をさらに備え、
前記複数のフィルタの前記特定の関数を適用することが、
前記コンピューティングデバイスによって、前記第１のブロックの各再構築されたサンプルに、前記第１のブロックのための前記クラスに関連付けられたフィルタを適用することと、
前記第１のブロックのための前記クラスに関連付けられた前記フィルタと前記第２のブロックのための前記クラスに関連付けられたフィルタとが、両方とも、前記第１のブロックと前記第２のブロックとの重複する部分中の再構築されたサンプルに適用されるように、前記コンピューティングデバイスによって、前記第２のブロックの各再構築されたサンプルに、前記第２のブロックのための前記クラスに関連付けられた前記フィルタを適用することと
を備える、
請求項１に記載の方法。
【請求項１５】
前記方法が、前記コンピューティングデバイスによって、前記現在ピクチャの前記現在ブロックに複数のクラスインデックスを割り当てることをさらに備え、前記複数のクラスインデックスの各それぞれのクラスインデックスが、前記複数のフィルタ中のそれぞれのフィルタに関連付けられ、
前記複数のフィルタの前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記現在ブロックの再構築されたサンプルに、前記現在ブロックに割り当てられた前記複数のクラスインデックスに関連付けられた前記フィルタを適用することを備える、
請求項１に記載の方法。
【請求項１６】
前記現在ブロックに前記複数のクラスインデックスを割り当てることが、
前記コンピューティングデバイスによって、複数のウィンドウサイズに基づいて前記現在ブロックに前記複数のクラスインデックスを割り当てること
を備える、請求項１５に記載の方法。
【請求項１７】
前記現在ブロックに前記複数のクラスインデックスを割り当てることが、
前記コンピューティングデバイスによって、前記現在ブロックに隣接するブロックから前記複数のクラスインデックスのうちの第１のクラスインデックスを継承することと、
前記コンピューティングデバイスによって、前記現在ブロック内の再構築されたサンプルに基づいて前記複数のクラスインデックスのうちの第２のクラスインデックスを導出することと
を備える、請求項１５に記載の方法。
【請求項１８】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記方法は、前記コンピューティングデバイスによって、前記現在ピクチャの符号化表現を備えるビットストリームから、前記ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を取得することと、ここにおいて、前記シンタックス要素が、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる、
前記シンタックス要素に基づいて前記ＡＬＦが有効にされたと決定したことに応答して、前記コンピューティングデバイスによって、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用することと
をさらに備える、
請求項１に記載の方法。
【請求項１９】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記方法は、前記コンピューティングデバイスによって、マージ／高度動きベクトル予測（ＡＭＶＰ）モード、コード化ブロックフラグ（ＣＢＦ）、またはブロックサイズに基づいて、適応ループフィルタ（ＡＬＦ）が有効にされるのか無効にされるのかを示すシンタックス要素をビットストリームが含むかどうかを決定することをさらに備え、
前記複数のフィルタの前記特定の関数を適用することが、前記ＡＬＦが有効にされたと決定したことに応答して、前記コンピューティングデバイスによって、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用することを備える、
請求項１に記載の方法。
【請求項２０】
前記コンピューティングデバイスによって、前記ビデオデータの複数のピクチャの符号化表現を備えるビットストリームを受信すること
をさらに備える、請求項１に記載の方法。
【請求項２１】
前記現在ブロックに前記複数のフィルタの前記特定の関数を適用した後に、前記コンピューティングデバイスによって、前記現在ピクチャを出力すること
請求項１に記載の方法。
【請求項２２】
前記現在ピクチャの前記１つまたは複数のブロックを再構築することが、前記ビデオデータの前記現在ピクチャの前記１つまたは複数のブロックを符号化した後に、前記コンピューティングデバイスによって、前記現在ピクチャの前記１つまたは複数のブロックを再構築することを備え、
前記方法が、前記コンピューティングデバイスによって、前記ビデオデータの別のピクチャを符号化する際に参照ピクチャとして前記現在ピクチャを使用することをさらに備える、
請求項１に記載の方法。
【請求項２３】
前記方法が、前記コンピューティングデバイスによって、ビットストリーム中に、隣接ブロックのための重み付け係数を示すデータを含めることをさらに備え、
前記隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックのためのそれぞれのフィルタを含み、
前記特定の関数を適用することが、前記特定の関数を適用するとき、前記コンピューティングデバイスによって、前記隣接ブロックのための前記重み付け係数を使用することを備える、
請求項２２に記載の方法。
【請求項２４】
前記方法は、
前記コンピューティングデバイスによって、ビットストリーム中に、隣接ブロックに関連付けられたすべての重み付け係数が０に等しいかどうかを示すシンタックス要素を含めることと、
前記シンタックス要素が、前記隣接ブロックに関連付けられたすべての重み付け係数が０に等しいとは限らないことを示すことに基づいて、前記コンピューティングデバイスによって、前記ビットストリームから、前記隣接ブロックに関連付けられた前記重み付け係数を示すデータを取得することと
をさらに備え、
前記特定の関数を適用することが、前記コンピューティングデバイスによって、前記特定の関数を適用するために前記隣接ブロックに関連付けられた前記重み付け係数を使用することを備える、
請求項２２に記載の方法。
【請求項２５】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記方法は、前記コンピューティングデバイスによって、前記ビデオデータの現在ピクチャの符号化表現を備えるビットストリーム中に、前記ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を含めることをさらに備え、ここにおいて、前記シンタックス要素が、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる、
請求項２２に記載の方法。
【請求項２６】
前記方法は、前記コンピューティングデバイスによって、マージ／高度動きベクトル予測（ＡＭＶＰ）モード、コード化ブロックフラグ（ＣＢＦ）、またはブロックサイズに基づいて、適応ループフィルタ（ＡＬＦ）が有効にされるのか無効にされるのかを示すシンタックス要素をビットストリーム中に含めるべきかどうかを決定することをさらに備え、
前記複数のフィルタの前記特定の関数を適用することが、前記ＡＬＦが有効にされたと決定したことに応答して、前記コンピューティングデバイスによって、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用することを備える、
請求項２２に記載の方法。
【請求項２７】
ビデオデータを復号または符号化するための装置であって、前記装置が、
ビデオデータを記憶するように構成された１つまたは複数の記憶媒体と、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサは、
前記ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、前記現在ピクチャの前記１つまたは複数のブロックが、前記現在ピクチャの再構築されたサンプルを備える、
前記現在ピクチャの前記１つまたは複数のブロックを再構築した後に、前記現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、前記現在ブロックが、前記現在ピクチャの前記再構築されたサンプルを備える、
を行うように構成された、装置。
【請求項２８】
前記特定の関数が、前記複数のフィルタの線形関数である、請求項２７に記載の装置。
【請求項２９】
テンプレートが、前記現在ブロックに隣接する前記現在ピクチャの複数の隣接ブロックを定義し、
前記複数の隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックに関連付けられたそれぞれのフィルタを含む、
請求項２７に記載の装置。
【請求項３０】
前記複数のフィルタが、ある数のフィルタからなり、前記１つまたは複数のプロセッサが、ビットストリーム中のシンタックス要素に基づいて、前記現在ブロックのためのフィルタの前記数を決定するようにさらに構成された、請求項２７に記載の装置。
【請求項３１】
前記１つまたは複数のプロセッサが、
テンプレート中の隣接ブロックによって使用されるフィルタに基づいて前記複数のフィルタを決定するようにさらに構成され、前記テンプレートが、前記現在ブロックを中心とするブロックの幾何学的パターンである、
請求項２７に記載の装置。
【請求項３２】
前記１つまたは複数のプロセッサが、スライスタイプ、量子化パラメータ、時間識別子、前記テンプレートが別のピクチャによって参照されるのか参照されないのか、あるいはシーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダのうちの１つまたは複数中でシグナリングされる情報のうちの１つまたは複数に基づいて、前記テンプレートを決定するようにさらに構成された、請求項３１に記載の装置。
【請求項３３】
前記１つまたは複数のプロセッサは、あらかじめ定義されたマスクに基づいて、前記特定の関数中で使用される重み付け係数を決定するようにさらに構成され、前記あらかじめ定義されたマスクが、テンプレート中のブロックのためのマスク値を指定し、前記テンプレートが、前記現在ブロックを中心とするブロックの幾何学的パターンである、請求項２７に記載の装置。
【請求項３４】
前記１つまたは複数のプロセッサが、ビットストリームから、複数の隣接ブロックのための重み付け係数を示すデータを取得するようにさらに構成され、
前記複数の隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックのためのそれぞれのフィルタを含み、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するとき、前記隣接ブロックのための前記重み付け係数を使用するように構成された、
請求項２７に記載の装置。
【請求項３５】
前記１つまたは複数のプロセッサは、
ビットストリームから、隣接ブロックに関連付けられたすべての重み付け係数が０に等しいかどうかを示すシンタックス要素を取得することと、
前記シンタックス要素が、前記隣接ブロックに関連付けられたすべての重み付け係数が０に等しいとは限らないことを示すことに基づいて、前記ビットストリームから、前記隣接ブロックに関連付けられた前記重み付け係数を示すデータを取得することと
を行うようにさらに構成され、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するために前記隣接ブロックに関連付けられた前記重み付け係数を使用するように構成された、
請求項２７に記載の装置。
【請求項３６】
前記１つまたは複数のプロセッサが、
前記現在ブロックのアクティビティレベル、または
前記現在ブロックの方向分類
のうちの少なくとも１つに基づいて前記複数のフィルタ中の２つまたはそれ以上のフィルタを決定するようにさらに構成された、請求項２７に記載の装置。
【請求項３７】
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのためのあらかじめ定義された重み付け係数を使用するように構成された、
請求項２７に記載の装置。
【請求項３８】
前記１つまたは複数のプロセッサが、シンタックス要素に基づいて、前記複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定するようにさらに構成され、前記シンタックス要素が、シーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダのうちの１つまたは複数中に含まれ、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのための前記あらかじめ定義された重み付け係数を使用するように構成された、
請求項２７に記載の装置。
【請求項３９】
前記１つまたは複数のプロセッサが、グループインデックス、クラスインデックス、コーディングユニット、予測ユニット、または変換ユニットに対する前記現在ブロックの位置、あるいはコーディングモードに基づいて、前記複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定するようにさらに構成され、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するために前記複数のフィルタのうちの選択されたフィルタのための前記重み付け係数を使用するように構成された、
請求項２７に記載の装置。
【請求項４０】
前記１つまたは複数のプロセッサは、
前記ビデオデータの複数のピクチャの符号化表現を備えるビットストリームを受信することと、前記複数のピクチャが前記現在ピクチャを含み、前記現在ピクチャが第１のブロックと第２のブロックとを含み、ここにおいて、前記第１のブロックと前記第２のブロックとが部分的に重複する、
前記第１のブロックのためのクラスと前記第２のブロックのためのクラスとを決定することと
を行うようにさらに構成され、
前記１つまたは複数のプロセッサは、前記複数のフィルタの前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、
前記第１のブロックの各再構築されたサンプルに、前記第１のブロックのための前記クラスに関連付けられたフィルタを適用することと、
前記第１のブロックのための前記クラスに関連付けられた前記フィルタと前記第２のブロックのための前記クラスに関連付けられたフィルタとが、両方とも、前記第１のブロックと前記第２のブロックとの重複する部分中の再構築されたサンプルに適用されるように、前記第２のブロックの各再構築されたサンプルに、前記第２のブロックのための前記クラスに関連付けられた前記フィルタを適用することと
を行うように構成された、
請求項２７に記載の装置。
【請求項４１】
前記１つまたは複数のプロセッサが、前記現在ピクチャの前記現在ブロックに複数のクラスインデックスを割り当てるようにさらに構成され、前記複数のクラスインデックスの各それぞれのクラスインデックスが、前記複数のフィルタ中のそれぞれのフィルタに関連付けられ、
前記１つまたは複数のプロセッサは、前記複数のフィルタの前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記現在ブロックの再構築されたサンプルに、前記現在ブロックに割り当てられた前記複数のクラスインデックスに関連付けられた前記フィルタを適用するように構成された、
請求項２７に記載の装置。
【請求項４２】
前記１つまたは複数のプロセッサは、前記現在ブロックに前記複数のクラスインデックスを割り当てることの一部として、前記１つまたは複数のプロセッサが、
複数のウィンドウサイズに基づいて前記現在ブロックに前記複数のクラスインデックスを割り当てること
を行うように構成された、請求項４１に記載の装置。
【請求項４３】
前記１つまたは複数のプロセッサは、前記現在ブロックに前記複数のクラスインデックスを割り当てることの一部として、前記１つまたは複数のプロセッサが、
前記現在ブロックに隣接するブロックから前記複数のクラスインデックスのうちの第１のクラスインデックスを継承することと、
前記現在ブロック内の再構築されたサンプルに基づいて前記複数のクラスインデックスのうちの第２のクラスインデックスを導出することと
を行うように構成された、請求項４１に記載の装置。
【請求項４４】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記１つまたは複数のプロセッサは、
前記現在ピクチャの符号化表現を備えるビットストリームから、前記ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を取得することと、ここにおいて、前記シンタックス要素が、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる、
前記シンタックス要素に基づいて前記ＡＬＦが有効にされたと決定したことに応答して、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用することと
を行うようにさらに構成された、
請求項２７に記載の装置。
【請求項４５】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記１つまたは複数のプロセッサは、マージ／高度動きベクトル予測（ＡＭＶＰ）モード、コード化ブロックフラグ（ＣＢＦ）、またはブロックサイズに基づいて、適応ループフィルタ（ＡＬＦ）が有効にされるのか無効にされるのかを示すシンタックス要素をビットストリームが含むかどうかを決定するようにさらに構成され、
前記１つまたは複数のプロセッサは、前記複数のフィルタの前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記ＡＬＦが有効にされたと決定したことに応答して、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用するように構成された
請求項２７に記載の装置。
【請求項４６】
前記１つまたは複数のプロセッサが、
前記ビデオデータの複数のピクチャの符号化表現を備えるビットストリームを受信すること
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４７】
前記１つまたは複数のプロセッサは、前記現在ブロックに前記複数のフィルタの前記特定の関数を適用した後に、前記現在ピクチャを出力するようにさらに構成された、請求項２７に記載の装置。
【請求項４８】
前記１つまたは複数のプロセッサは、前記現在ピクチャを再構築することの一部として、前記１つまたは複数のプロセッサが、前記ビデオデータの前記現在ピクチャを符号化した後に、前記現在ピクチャを再構築するように構成され、
前記１つまたは複数のプロセッサが、前記ビデオデータの別のピクチャを符号化する際に参照ピクチャとして前記現在ピクチャを使用するようにさらに構成された、
請求項２７に記載の装置。
【請求項４９】
前記１つまたは複数のプロセッサが、ビットストリーム中に、隣接ブロックのための重み付け係数を示すデータを含めるようにさらに構成され、
前記隣接ブロックの各それぞれの隣接ブロックについて、前記複数のフィルタが、前記それぞれの隣接ブロックのためのそれぞれのフィルタを含み、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するとき、前記隣接ブロックのための前記重み付け係数を使用するように構成された、
請求項４８に記載の装置。
【請求項５０】
前記１つまたは複数のプロセッサは、
ビットストリーム中に、隣接ブロックに関連付けられたすべての重み付け係数が０に等しいかどうかを示すシンタックス要素を含めることと、
前記シンタックス要素が、前記隣接ブロックに関連付けられたすべての重み付け係数が０に等しいとは限らないことを示すことに基づいて、前記ビットストリームから、前記隣接ブロックに関連付けられた前記重み付け係数を示すデータを取得することと
を行うようにさらに構成され、
前記１つまたは複数のプロセッサは、前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記特定の関数を適用するために前記隣接ブロックに関連付けられた前記重み付け係数を使用するように構成された、
請求項４８に記載の装置。
【請求項５１】
前記複数のフィルタが適応ループフィルタ（ＡＬＦ）を含み、
前記１つまたは複数のプロセッサは、前記ビデオデータの現在ピクチャの符号化表現を備えるビットストリーム中に、前記ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を含めるようにさらに構成され、ここにおいて、前記シンタックス要素が、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる、
請求項４８に記載の装置。
【請求項５２】
前記１つまたは複数のプロセッサは、マージ／高度動きベクトル予測（ＡＭＶＰ）モード、コード化ブロックフラグ（ＣＢＦ）、またはブロックサイズに基づいて、適応ループフィルタ（ＡＬＦ）が有効にされるのか無効にされるのかを示すシンタックス要素をビットストリーム中に含めるべきかどうかを決定するようにさらに構成され、
前記１つまたは複数のプロセッサは、前記複数のフィルタの前記特定の関数を適用することの一部として、前記１つまたは複数のプロセッサが、前記ＡＬＦが有効にされたと決定したことに応答して、前記現在ピクチャの再構築されたサンプルに前記ＡＬＦを適用するように構成された
請求項４８に記載の装置。
【請求項５３】
前記装置が、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
のうちの少なくとも１つを備える、請求項２７に記載の装置。
【請求項５４】
復号ビデオデータを表示するように構成されたディスプレイをさらに備える、請求項２７に記載の装置。
【請求項５５】
前記ビデオデータをキャプチャするように構成されたカメラをさらに備える、請求項２７に記載の装置。
【請求項５６】
ビデオデータを復号または符号化するための装置であって、前記装置が、
前記ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築するための手段と、前記現在ピクチャの前記１つまたは複数のブロックが、前記現在ピクチャの再構築されたサンプルを備える、
前記現在ピクチャを再構築した後に、前記現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用するための手段と、前記現在ブロックが、前記現在ピクチャの前記再構築されたサンプルを備える、
を備える、装置。
【請求項５７】
命令を記憶したコンピュータ可読データ記憶媒体であって、前記命令が、実行されたとき、ビデオデータを復号または符号化するためのデバイスを、
前記ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、前記現在ピクチャの前記１つまたは複数のブロックが、前記現在ピクチャの再構築されたサンプルを備える、
前記現在ピクチャの前記１つまたは複数のブロックを再構築した後に、前記現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、前記現在ブロックが、前記現在ピクチャの前記再構築されたサンプルを備える、
を行うように構成する、コンピュータ可読データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、その各々の内容全体が参照により本明細書に組み込まれる、２０１６年５月１６日に出願された米国仮特許出願第６２／３３７，２４３号、および２０１６年１２月３０日に出願された米国仮特許出願第６２／４４０，８７７号の利益を主張する。
【０００２】
[0002]本開示は、ビデオコーディングを実施するコンピューティングデバイスに関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、ＩＴＵ−Ｔ  Ｈ．２６５，高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間（イントラピクチャ）予測および／または時間（インターピクチャ）予測を実施する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）が、ツリーブロック、コーディングユニット（ＣＵ：coding unit）および／またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。
【発明の概要】
【０００５】
[0005]概して、本開示は、フィルタを送信するためのサイド情報をコーディングするための技法を含む、適応ループフィルタ処理（ＡＬＦ：adaptive loop filtering）を実施するコンピューティングデバイスに関係する技法について説明する。そのような技法は、高効率ビデオコーディング（ＨＥＶＣ）の拡張または次世代のビデオコーディング規格など、高度ビデオコーデックのコンテキストにおいて使用され得る。そのような技法は、フィルタを送信するためのサイド情報をシグナリングする他のフィルタ処理方法において使用され得る。一例では、本開示は、ビデオデータを復号または符号化する方法であって、本方法は、コンピューティングデバイスによって、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、現在ピクチャの１つまたは複数のブロックが、現在ピクチャの再構築されたサンプルを備える、現在ピクチャの１つまたは複数のブロックを再構築した後に、コンピューティングデバイスによって、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、現在ブロックが、現在ピクチャの再構築されたサンプルを備える、を備える、方法について説明する。
【０００６】
[0006]別の例では、本開示は、ビデオデータを復号または符号化するための装置であって、本装置が、１つまたは複数のプロセッサを備え、１つまたは複数のプロセッサは、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、現在ピクチャの１つまたは複数のブロックが、現在ピクチャの再構築されたサンプルを備える、現在ピクチャの１つまたは複数のブロックを再構築した後に、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、現在ブロックが、現在ピクチャの再構築されたサンプルを備える、を行うように構成された、装置について説明する。
【０００７】
[0007]別の例では、本開示は、ビデオデータを復号または符号化するための装置であって、本装置が、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築するための手段と、現在ピクチャの１つまたは複数のブロックが、現在ピクチャの再構築されたサンプルを備える、現在ピクチャを再構築した後に、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用するための手段と、現在ブロックが、現在ピクチャの再構築されたサンプルを備える、を備える、装置について説明する。
【０００８】
[0008]別の例では、本開示は、命令を記憶したコンピュータ可読データ記憶媒体であって、命令が、実行されたとき、ビデオデータを復号または符号化するためのデバイスを、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築することと、現在ピクチャの１つまたは複数のブロックが、現在ピクチャの再構築されたサンプルを備える、現在ピクチャの１つまたは複数のブロックを再構築した後に、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用することと、現在ブロックが、現在ピクチャの再構築されたサンプルを備える、を行うように構成する、コンピュータ可読データ記憶媒体について説明する。
【０００９】
[0009]本開示の１つまたは複数の態様の詳細が添付の図面および以下の説明に記載されている。本開示で説明される技法の他の特徴、目的、および利点は、その説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１０】
【図１】[0010]本開示で説明される１つまたは複数の技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】[0011]例示的な適応ループフィルタ（ＡＬＦ）フィルタサポートを示す概念図。
【図３】[0012]フィルタ係数シグナリングのための３つのカテゴリーをもつ例示的な７×７フィルタ形状を示す概念図。
【図４】[0013]本開示の技法による、複数のフィルタを重み付けするための例示的なマスクを示す概念図。
【図５】[0014]本開示の技法による、重複するブロックを含む例示的なピクチャを示すブロック図。
【図６】[0015]本開示の１つまたは複数の技法による、ピクチャのブロックが２つ以上のクラスを割り当てられた第１の例を示すブロック図。
【図７】[0016]本開示の１つまたは複数の技法による、ピクチャのブロックが２つ以上のクラスを割り当てられた第２の例を示すブロック図。
【図８】[0017]本開示で説明される１つまたは複数の技法を実装し得る例示的なビデオエンコーダを示すブロック図。
【図９】[0018]本開示で説明される１つまたは複数の技法を実装し得る例示的なビデオデコーダを示すブロック図。
【図１０】[0019]本開示の１つまたは複数の技法による、ビデオデータを符号化または復号するための例示的な動作を示すフローチャート。
【発明を実施するための形態】
【００１１】
[0020]ビデオコーディングは、一般に、同じピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること（すなわちイントラ予測）、または異なるピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること（すなわちインター予測）のいずれかを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの間の差分を表す。ビデオエンコーダは、残差データを変換および量子化し、変換および量子化された残差データを符号化ビットストリーム中でシグナリングする。ビデオデコーダは、予測ブロック単体よりもぴったり元のビデオブロックに一致する再構築されたビデオブロックを生成するために、予測ブロックに残差データを加算する。復号されたビデオの品質をさらに改善するために、ビデオデコーダは、再構築されたビデオブロックに対して１つまたは複数のフィルタ処理演算を実施することができる。これらのフィルタ処理演算の例としては、デブロッキングフィルタ処理と、サンプル適応オフセット（ＳＡＯ）フィルタ処理と、適応ループフィルタ処理（ＡＬＦ）とがある。これらのフィルタ処理演算のためのパラメータは、ビデオエンコーダによって決定され、符号化ビデオビットストリーム中で明示的にシグナリングされるか、またはビデオデコーダによって暗黙的に決定されるかのいずれかであり得る。
【００１２】
[0021]ピクチャは、１つまたは複数のサンプルアレイを備える。サンプルアレイの各々は、ルーマ成分またはクロマ成分など、異なる色成分に対応する。ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）がＡＬＦを適用したとき、ビデオコーダは、４×４ブロックなど、ピクチャのサンプルアレイを等しいサイズのブロックに区分し得る。各それぞれのブロックについて、ビデオコーダは、それぞれのブロックに許容方向値のセットからの方向値を割り当てる。さらに、各それぞれのブロックについて、ビデオコーダは、それぞれのブロックに許容アクティビティ値のセットからのアクティビティ値を割り当てる。いくつかの以前の提案では、許容方向値のセットは３つの方向値に制限され、許容アクティビティ値のセットは５つのアクティビティ値に制限される。したがって、そのような提案では、方向値およびアクティビティ値の合計１５個の組合せがあり得る。
【００１３】
[0022]組合せの各々は、グループと呼ばれる（またはクラスと称される）ことがある。したがって、ブロックの各々は、グループのうちの１つに属すると言われ得る。グループの各々は、ＡＬＦ係数のセット（またはフィルタ係数のセットと称される）に関連付けられ得る。グループに関連付けられたＡＬＦ係数のセットは、シグナリングされるかまたはあらかじめ定義され得る。ビデオコーダは、ブロックのサンプルに、ブロックが属するグループに関連付けられたＡＬＦ係数のセットを使用するフィルタを適用する。
【００１４】
[0023]許容方向値を３に、および許容アクティビティ値を５に制限することは、ＡＬＦフィルタのパフォーマンスを制限し得、これは、圧縮効率を減少させ得る。対照的に、増加された圧縮効率は、復号デバイスが、等価な量のデータをもつより高品質のビデオデータを表示することを可能にし、復号デバイスがより高速に符号化ビデオデータにアクセスすることを可能にし、またはそのような復号デバイスに他の改善を潜在的に与え得る。許容方向値を３に、および許容アクティビティ値を５に制限することは、特に、ブロックの特性が、ブロックが許容方向値のセットからの異なる方向値を割り当てられるか、または許容アクティビティ値のセットからの異なる方向値を割り当てられる、しきい値に近い事例において、ＡＬＦフィルタのパフォーマンスを制限し得る。ただし、１５個を超えるグループを使用することは、ＡＬＦ係数のより多くのセットがシグナリングされることを生じ得、これはまた、圧縮効率を減少させ得る。ＡＬＦ係数の追加のセットを記憶およびシグナリングすることは、ハードウェア複雑さを増加させる、利用可能なメモリを低減する、要求に応答してビデオデータを表示するためにコンピューティングデバイスによって必要とされる時間を延長する、などであり得る。
【００１５】
[0024]本開示の技法は、これらの課題に対処し得る。たとえば、ブロックのサンプルに１つのフィルタを適用する代わりに、ビデオコーダは、ブロックのサンプルに複数のフィルタの混同（confusion）を適用し得る。本開示のコンテキストでは、「混同」という用語は、互いに使用するかまたは混合するという意味において適用される。たとえば、ビデオコーダは、ブロックのサンプルに複数のフィルタの線形関数を適用し得る。したがって、送信されるべきＡＬＦフィルタのセットの数は、増加する必要がないことがあり、同時に、複数のフィルタの混同の適用は、許容方向値および許容アクティビティ値の数によって課される可能なフィルタの数に対する制限に対処し得る。したがって、本開示で説明されるように、ビデオコーダ（すなわち、ビデオエンコーダまたはビデオデコーダ）は、ビデオデータの現在ピクチャのサンプルを再構築し得る。さらに、現在ピクチャのサンプルを再構築した後に、ビデオコーダは、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用し得る。このようにして、ビデオコーダは、事実上、特定の関数に従って新しいフィルタを生成し、新しいフィルタを現在ブロックに適用し得る。現在ブロックは再構築されたサンプルを備える。
【００１６】
[0025]図１は、本開示の技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示されているように、システム１０は、宛先デバイス１４によって後で復号されるべき符号化ビデオデータを与えるソースデバイス１２を含む。特に、ソースデバイス１２は、コンピュータ可読媒体１６を介して宛先デバイス１４にビデオデータを与える。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、タブレットコンピュータ、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のコンピューティングデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。したがって、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信デバイスであり得る。ソースデバイス１２は、例示的なビデオ符号化デバイス（すなわち、ビデオデータを符号化するためのデバイス）である。宛先デバイス１４は、例示的なビデオ復号デバイス（すなわち、ビデオデータを復号するためのデバイス）である。
【００１７】
[0026]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオデータを記憶するように構成された記憶媒体１９と、ビデオエンコーダ２０と、出力インターフェース２４とを含む。宛先デバイス１４は、入力インターフェース２６と、符号化ビデオデータを記憶するように構成された記憶媒体２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。他の例では、ソースデバイス１２および宛先デバイス１４は他の構成要素または構成を含む。たとえば、ソースデバイス１２は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００１８】
[0027]図１の図示されたシステム１０は一例にすぎない。ビデオデータを処理するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実施され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が宛先デバイス１４への送信のためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイス１２と宛先デバイス１４とは、ソースデバイス１２および宛先デバイス１４の各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス１２と宛先デバイス１４との間の一方向または双方向ビデオ送信をサポートし得る。
【００１９】
[0028]ソースデバイス１２のビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および／またはビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成し得る。ソースデバイス１２は、ビデオデータを記憶するように構成された１つまたは複数のデータ記憶媒体（たとえば、記憶媒体１９）を備え得る。本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ２０によって符号化され得る。出力インターフェース２４は、コンピュータ可読媒体１６に、符号化ビデオ情報を出力し得る。
【００２０】
[0029]宛先デバイス１４は、コンピュータ可読媒体１６を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。いくつかの例では、コンピュータ可読媒体１６は、ソースデバイス１２が、符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にするための通信媒体を備える。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするために有用であり得る任意の他の機器を含み得る。宛先デバイス１４は、符号化ビデオデータおよび復号ビデオデータを記憶するように構成された１つまたは複数のデータ記憶媒体を備え得る。
【００２１】
[0030]いくつかの例では、符号化データは、出力インターフェース２４からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス１２によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス１４に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、（たとえば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブがある。宛先デバイス１４は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【００２２】
[0031]本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーＨＴＴＰ（ＤＡＳＨ：dynamic adaptive streaming over）などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２３】
[0032]コンピュータ可読媒体１６は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Ｂｌｕ−ｒａｙディスク、または他のコンピュータ可読媒体などの記憶媒体（すなわち、非一時的記憶媒体）を含み得る。いくつかの例では、ネットワークサーバ（図示せず）は、ソースデバイス１２から符号化ビデオデータを受信し、たとえば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス１４に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス１２から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体１６は、様々な例において、様々な形態の１つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
【００２４】
[0033]宛先デバイス１４の入力インターフェース２６は、コンピュータ可読媒体１６から情報を受信する。コンピュータ可読媒体１６の情報は、ビデオエンコーダ２０のビデオエンコーダ２０によって定義され、またビデオデコーダ３０によって使用される、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ（ＧＯＰ）の特性および／または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。記憶媒体２８は、入力インターフェース２６によって受信された符号化ビデオデータ（たとえば、ビットストリーム）など、符号化ビデオデータを記憶するように構成され得る。ディスプレイデバイス３２は、復号ビデオデータをユーザに表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
【００２５】
[0034]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために１つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００２６】
[0035]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、既存のまたは将来の規格など、ビデオコーディング規格に従って動作し得る。例示的なビデオコーディング規格は、限定はしないが、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、およびそれのスケーラブルビデオコーディング（ＳＶＣ）拡張とマルチビュービデオコーディング（ＭＶＣ）拡張とを含む、（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＴＵ−Ｔ  Ｈ．２６４を含む。さらに、それの範囲およびスクリーンコンテンツコーディング拡張、３Ｄビデオコーディング（３Ｄ−ＨＥＶＣ）ならびにマルチビュー拡張（ＭＶ−ＨＥＶＣ）およびスケーラブル拡張（ＳＨＶＣ）を含む、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング（ＨＥＶＣ）またはＩＴＵ−Ｔ  Ｈ．２６５が、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ：Video Coding Experts Group）とＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ：Motion Picture Experts Group）とのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaboration Team on Video Coding）によって最近開発された。
【００２７】
[0036]Ｗａｎｇら、High Efficiency Video Coding (HEVC) Defect Report」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１とのジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）、第１４回会合、ウィーン、オーストリア、２０１３年７月２５日〜８月２日は、ＨＥＶＣのドラフト仕様であり、以下でＨＥＶＣ  ＷＤと呼ばれる。ＨＥＶＣ  ＷＤは、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。ＨＥＶＣ規格は、２０１３年１月に確定された。
【００２８】
[0037]ＩＴＵ−Ｔ  ＶＣＥＧ（Ｑ６／１６）およびＩＳＯ／ＩＥＣ  ＭＰＥＧ（ＪＴＣ１／ＳＣ２９／ＷＧ１１）は、スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングのためのＨＥＶＣの現在の拡張および短期での拡張を含む、現在のＨＥＶＣ規格の圧縮能力を著しく超える圧縮能力をもつ将来のビデオコーディング技術の規格化の潜在的ニーズを現在研究している。グループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、ジョイントビデオ探査チーム（ＪＶＥＴ：Joint Video Exploration Team）として知られるジョイントコラボレーション作業においてこの探査活動に関して協働している。ＪＶＥＴは、２０１５年１０月１９日〜２１日の間、初めて開かれた。基準ソフトウェアの最新バージョン、すなわち、ジョイント探査モデル２（ＪＥＭ２：Joint Exploration Model 2）は、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-2.0/からダウンロードされ得る。Ｊ．Ｃｈｅｎら、「Algorithm description of Joint Exploration Test Model 2」、ＪＶＥＴ−Ｂ１００１、サンディエゴ、２０１６年３月（以下「ＪＶＥＴ−Ｂ１００１」）は、ＪＥＭ２のためのアルゴリズムの説明を含んでおり、ＪＥＭ２．０と呼ばれることもある。
【００２９】
[0038]ＨＥＶＣおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCb、およびＳCrと示される３つのサンプルアレイを含み得る。ＳLはルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbはＣｂクロミナンスサンプルの２次元アレイである。ＳCrはＣｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００３０】
[0039]ピクチャの符号化表現を生成するために、ビデオエンコーダ２０はコーディングツリーユニット（ＣＴＵ：coding tree unit）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの２つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＴＵは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ：largest coding unit）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００３１】
[0040]本開示は、１つまたは複数のサンプルブロックと、サンプルの１つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」、または「ビデオブロック」、または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットは、ＣＴＵ、ＣＵ、ＰＵ、変換ユニット（ＴＵ）、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、ＰＵの説明は、マクロブロックまたはマクロブロック区分の説明と交換され得る。ビデオブロックの例示的なタイプとしては、コーディングツリーブロック、コーディングブロック、およびビデオデータの他のタイプのブロックがあり得る。
【００３２】
[0041]ビデオエンコーダ２０は、ビデオデータのピクチャのブロックを符号化し得る。ビデオエンコーダ２０は、ビットストリーム中に、ビデオブロックの符号化表現を含め得る。たとえば、ピクチャのコード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するためにＣＴＵのコーディングツリーブロックに対してクワッドツリー区分を再帰的に実施し得、したがって「コーディングツリーユニット」という名称がある。クワッドツリー区分では、ブロックは、４つの等しいサイズのサブブロックに分割され、それらのいずれかは、４つの等しいサイズのサブサブブロックにさらに区分され得、以下同様である。コーディングブロックはサンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイとＣｂサンプルアレイとＣｒサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの２つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＵは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００３３】
[0042]さらに、ビデオエンコーダ２０はＣＵを符号化し得る。たとえば、ＣＵを符号化するために、ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックである。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＰＵは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ２０は、ＣＵの各ＰＵの予測ブロック（prediction block）（たとえば、ルーマ、Ｃｂ、およびＣｒ予測ブロック（prediction block））のための予測ブロック（predictive block）（たとえば、ルーマ、Ｃｂ、およびＣｒ予測ブロック（predictive block））を生成し得る。
【００３４】
[0043]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵを含むピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成し得る。
【００３５】
[0044]ビデオエンコーダ２０は、ＣＵのための１つまたは複数の残差ブロックを生成し得る。たとえば、ビデオエンコーダ２０はＣＵのためのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つ中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０はＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つ中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのためのＣｒ残差ブロックをも生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つ中のＣｒサンプルとＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００３６】
[0045]さらに、ビデオエンコーダ２０は、ＣＵの残差ブロック（たとえば、ルーマ残差ブロック、Ｃｂ残差ブロックおよびＣｒ残差ブロック）を１つまたは複数の変換ブロック（たとえば、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック）に分解するためにクワッドツリー区分を使用し得る。言い換えれば、ビデオエンコーダ２０は、残差クワッドツリー（ＲＱＴ）に従って、残差ブロックを区分し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形（たとえば、正方形または非正方形）ブロックである。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロックとＣｂ変換ブロックとＣｒ変換ブロックとを有し得る。ＴＵのルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＴＵは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００３７】
[0046]上述のように、ビデオエンコーダ２０は、ＣＵのためのＲＱＴを表すデータを生成し得る。ＣＵのためのＲＱＴはノードのセットを備える。ノードの各々は残差サンプルブロックに対応する。ＲＱＴのルートノードはＣＵの残差ブロックに対応する。ＲＱＴのリーフノードはＣＵのＴＵの変換ブロックに対応する。ＲＱＴのノードはスプリットフラグに関連付けられ得る。ノードのスプリットフラグは、ノードがＲＱＴの複数の子ノードを有するかどうかを示し得る。
【００３８】
[0047]さらに、スプリットフラグに関連付けられることに加えて、ＲＱＴのノードは、リーフノードが有意な（非０）ルーマ変換ブロックに関連付けられているかどうかを示すルーマコード化ブロックフラグ（ＣＢＦ）に関連付けられる。いくつかの例では、ＲＱＴのリーフノードのみが、ルーマＣＢＦに関連付けられる。スプリットフラグおよびルーマＣＢＦに加えて、ＲＱＴのノードはまた、クロマＣＢＦ（たとえば、Ｃｂ  ＣＢＦおよびＣｒ  ＣＢＦ）に関連付けられ得る。ノードのＣｂ  ＣＢＦは、ノード、またはノードの任意の子孫ノードが、有意なＣｂ変換ブロックに関連付けられているかどうかを示す。第２のノードがＲＱＴのルートノードであるか、または、第２のノードを通過し、２回以上ノードを通過しない、ＲＱＴを通る第１のノードからルートノードへの経路がある場合、第１のノードは第２のノードの子孫ノードであり得る。ノードのＣｒ  ＣＢＦは、ノード、またはノードの任意の子孫ノードが、有意なＣｒ変換ブロックに関連付けられているかどうかを示す。
【００３９】
[0048]ビデオエンコーダ２０は、ＴＵのための係数ブロックを生成するために、ＴＵの変換ブロック１つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。いくつかの例では、ビデオエンコーダ２０は、変換ブロックへの変換の適用をスキップする。
【００４０】
[0049]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。いくつかの例では、量子化はスキップされる。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を実施し得る。
【００４１】
[0050]ビデオエンコーダ２０は、符号化ビデオデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、コード化ピクチャおよび関連データの表現を形成するビットのシーケンスを備え得る。したがって、ビットストリームは、ビデオデータの符号化表現を備える。いくつかの例では、コード化ピクチャの表現は、ブロックの符号化表現を含み得る。したがって、ビデオエンコーダ２０は、ビットストリーム中で、ブロックの符号化表現におけるブロックの変換係数をシグナリングし得る。いくつかの事例では、ビデオエンコーダ２０は、ブロックの各変換係数をシグナリングするために、１つまたは複数のシンタックス要素を使用し得る。
【００４２】
[0051]ビットストリームは、ネットワークアブストラクションレイヤ（ＮＡＬ）ユニットのシーケンスを備え得る。ＮＡＬユニットは、ＮＡＬユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在させられたローバイトシーケンスペイロード（ＲＢＳＰ：raw byte sequence payload）の形態でそのデータを含んでいるバイトとを含んでいる、シンタックス構造である。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ＲＢＳＰをカプセル化し得る。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、ＲＢＳＰはゼロビットを含む。
【００４３】
[0052]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ３０は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ３０は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、概して、ビデオエンコーダ２０によって実施されるプロセスの逆であり得る。たとえば、ビデオデコーダ３０は、現在ＣＵのＰＵのための予測ブロックを決定するためにＰＵの動きベクトルを使用し得る。さらに、ビデオデコーダ３０は、現在ＣＵのＴＵの係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在ＣＵのＴＵの変換ブロックを再構築するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ３０は、現在ＣＵのＰＵのための予測ブロックのサンプルを現在ＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在ＣＵのコーディングブロックを再構築し得る。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築し得る。
【００４４】
[0053]いくつかの例では、ビデオエンコーダ２０は、マージ／スキップモードまたは高度動きベクトル予測（ＡＭＶＰ）モードを使用して、ブロック（たとえば、ＰＵ）の動き情報をシグナリングし得る。たとえば、ＨＥＶＣでは、動きパラメータの予測のために２つのモードがあり、一方はマージ／スキップモードであり、他方はＡＭＶＰである。動き予測は、１つまたは複数の他のビデオユニットの動き情報に基づく、ビデオユニット（たとえば、ＰＵ）の動き情報の決定を備え得る。ＰＵの動き情報は、ＰＵの（１つまたは複数の）動きベクトルと、ＰＵの（１つまたは複数の）参照インデックスと、１つまたは複数の予測方向インジケータとを含み得る。
【００４５】
[0054]ビデオエンコーダ２０がマージモードを使用して現在ＰＵの動き情報をシグナリングするとき、ビデオエンコーダ２０は、マージ候補リストを生成する。言い換えれば、ビデオエンコーダ２０は、動きベクトル予測子リスト構築プロセスを実施し得る。マージ候補リストは、現在ＰＵに空間的または時間的に隣接するＰＵの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、動きパラメータ（たとえば、参照インデックス、動きベクトルなど）の候補リストが構築され、候補は、空間隣接ブロックおよび時間隣接ブロックからのものであり得る。
【００４６】
[0055]さらに、マージモードでは、ビデオエンコーダ２０は、マージ候補リストからマージ候補を選択し得、現在ＰＵの動き情報として、選択されたマージ候補によって示される動き情報を使用し得る。ビデオエンコーダ２０は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。たとえば、ビデオエンコーダ２０は、選択されたマージ候補の候補リスト内の位置を示すインデックス（すなわち、マージング候補インデックス）を送信することによって、選択された動きベクトルパラメータをシグナリングし得る。ビデオデコーダ３０は、ビットストリームから、候補リスト中へのインデックス（すなわち、マージング候補インデックス）を取得し得る。さらに、ビデオデコーダ３０は、同じマージ候補リストを生成し得、マージング候補インデックスに基づいて、選択されたマージ候補を決定し得る。ビデオデコーダ３０は、次いで、現在ＰＵのための予測ブロックを生成するために、選択されたマージ候補の動き情報を使用し得る。すなわち、ビデオデコーダ３０は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト中の選択された候補を決定し得、ここにおいて、選択された候補は、現在ＰＵのための動きベクトルを指定する。このようにして、デコーダ側において、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータが、現在ＰＵによって継承され得る。
【００４７】
[0056]スキップモードはマージモードと同様である。スキップモードでは、ビデオエンコーダ２０およびビデオデコーダ３０は、マージモードにおいてビデオエンコーダ２０およびビデオデコーダ３０がマージ候補リストを使用するのと同様の方法でマージ候補リストを生成し、使用する。ただし、ビデオエンコーダ２０がスキップモードを使用して現在ＰＵの動き情報をシグナリングするとき、ビデオエンコーダ２０は、現在ＰＵのための残差データをシグナリングしない。したがって、ビデオデコーダ３０は、残差データの使用なしに、マージ候補リスト中の選択された候補の動き情報によって示される参照ブロックに基づいて、ＰＵのための予測ブロックを決定し得る。
【００４８】
[0057]ＡＭＶＰモードは、ビデオエンコーダ２０が候補リストを生成し得、候補リストから候補を選択し得るという点で、マージモードと同様である。ただし、ビデオエンコーダ２０がＡＭＶＰモードを使用して現在ＰＵの（Ｘが０または１である）ＲｅｆＰｉｃＬｉｓｔＸ動き情報をシグナリングするとき、ビデオエンコーダ２０は、現在ＰＵのためのＲｅｆＰｉｃＬｉｓｔＸ動きベクトル予測子（ＭＶＰ）インデックス（たとえば、フラグまたはインジケータ）をシグナリングすることに加えて、現在ＰＵのためのＲｅｆＰｉｃＬｉｓｔＸ動きベクトル差分（ＭＶＤ）と、現在ＰＵのためのＲｅｆＰｉｃＬｉｓｔＸ参照インデックスとをシグナリングし得る。現在ＰＵのためのＲｅｆＰｉｃＬｉｓｔＸ  ＭＶＰインデックスは、ＡＭＶＰ候補リスト中の選択されたＡＭＶＰ候補の位置を示し得る。現在ＰＵのためのＲｅｆＰｉｃＬｉｓｔＸ  ＭＶＤは、現在ＰＵのＲｅｆＰｉｃＬｉｓｔＸ動きベクトルと選択されたＡＭＶＰ候補の動きベクトルとの間の差分を示し得る。このようにして、ビデオエンコーダ２０は、ＲｅｆＰｉｃＬｉｓｔＸ  ＭＶＰインデックスと、ＲｅｆＰｉｃＬｉｓｔＸ参照インデックス値と、ＲｅｆＰｉｃＬｉｓｔＸ  ＭＶＤとをシグナリングすることによって、現在ＰＵのＲｅｆＰｉｃＬｉｓｔＸ動き情報をシグナリングし得る。言い換えれば、現在ＰＵのための動きベクトルを表す、ビットストリーム中のデータは、参照インデックスと、候補リストへのインデックスと、ＭＶＤとを表すデータを含み得る。したがって、選定された動きベクトルは、候補リスト中へのインデックスを送信することによってシグナリングされ得る。さらに、参照インデックス値および動きベクトル差分もシグナリングされ得る。
【００４９】
[0058]さらに、ＡＭＶＰモードを使用して現在ＰＵの動き情報がシグナリングされるとき、ビデオデコーダ３０は、ビットストリームから、現在ＰＵのためのＭＶＤと、ＭＶＰフラグとを取得し得る。ビデオデコーダ３０は、同じＡＭＶＰ候補リストを生成し得、ＭＶＰフラグに基づいて、選択されたＡＭＶＰ候補を決定し得る。言い換えれば、ＡＭＶＰでは、各動き仮説のための動きベクトル予測子の候補リストが、コード化参照インデックスに基づいて導出される。前述のように、このリストは、同じ参照インデックス、ならびに、時間参照ピクチャ中のコロケートされたブロックの隣接ブロックの動きパラメータに基づいて導出された時間動きベクトル予測子に関連付けられた隣接ブロックの動きベクトルを含み得る。ビデオデコーダ３０は、選択されたＡＭＶＰ候補によって示される動きベクトルにＭＶＤを加算することによって、現在ＰＵの動きベクトルを復元し得る。すなわち、ビデオデコーダ３０は、選択されたＡＭＶＰ候補によって示される動きベクトルとＭＶＤとに基づいて、現在ＰＵの動きベクトルを決定し得る。ビデオデコーダ３０は、次いで、現在ＰＵのための予測ブロックを生成するために、復元された動きベクトル、または現在ＰＵの動きベクトルを使用し得る。
【００５０】
[0059]ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）が現在ＰＵのためのＡＭＶＰ候補リストを生成するとき、ビデオコーダは、現在ＰＵに空間的に隣接するロケーションをカバーするＰＵ（すなわち、空間的に近隣するＰＵ）の動き情報に基づいて１つまたは複数のＡＭＶＰ候補を導出し、現在ＰＵに時間的に隣接するＰＵの動き情報に基づいて１つまたは複数のＡＭＶＰ候補を導出し得る。本開示では、ＰＵ（または他のタイプのビデオユニット）は、ＰＵの予測ブロック（またはビデオユニットの他のタイプのサンプルブロック）がロケーションを含む場合、ロケーションを「カバーする」と言われ得る。候補リストは、同じ参照インデックス、ならびに、時間参照ピクチャ中のコロケートされたブロックの隣接ブロックの動きパラメータ（すなわち、動き情報）に基づいて導出された時間動きベクトル予測子に関連付けられた隣接ブロックの動きベクトルを含み得る。現在ＰＵに時間的に隣接するＰＵ（すなわち、現在ＰＵとは異なる時間インスタンス中にあるＰＵ）の動き情報に基づくマージ候補リストまたはＡＭＶＰ候補リスト中の候補は、ＴＭＶＰと呼ばれることがある。ＴＭＶＰは、ＨＥＶＣのコーディング効率を向上させるために使用され、他のコーディングツールとは異なり得、ＴＭＶＰは、復号ピクチャバッファ中の、より詳細には、参照ピクチャリスト中のフレームの動きベクトルにアクセスする必要があり得る。
【００５１】
[0060]上述のように、ビットストリームは、ビデオデータおよび関連データの符号化ピクチャの表現を含み得る。関連データはパラメータセットを含み得る。ＨＥＶＣおよび他のビデオコーディング仕様では、ＮＡＬユニットは、ビデオパラメータセット（ＶＰＳ）、シーケンスパラメータセット（ＳＰＳ）、およびピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化し得る。ＶＰＳは、０個以上のコード化ビデオシーケンス（ＣＶＳ）全体に適用されるシンタックス要素を備えるシンタックス構造である。ＳＰＳも、０個以上のＣＶＳ全体に適用されるシンタックス要素を備えるシンタックス構造である。ＳＰＳは、ＳＰＳがアクティブであるときにアクティブであるＶＰＳを識別するシンタックス要素を含み得る。したがって、ＶＰＳのシンタックス要素は、ＳＰＳのシンタックス要素よりも一般的に適用可能であり得る。ＰＰＳは、０個以上のコード化ピクチャに適用されるシンタックス要素を備えるシンタックス構造である。ＰＰＳは、ＰＰＳがアクティブであるときにアクティブであるＳＰＳを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされているときにアクティブであるＰＰＳを示すシンタックス要素を含み得る。
【００５２】
[0061]ビデオコーディングの分野において、復号されたビデオ信号の品質を向上させるためにフィルタ処理を適用することは、一般的である。フィルタは、フィルタ処理されたフレームが将来のフレームの予測のために使用されないループ後フィルタとして、またはフィルタ処理されたフレームが将来のフレームを予測するために使用されるループ内フィルタとして適用され得る。たとえば、フィルタは、元の信号と復号されたフィルタ処理された信号との間の誤差を最小限に抑えることによって設計され得る。たとえば、フィルタは、元のピクチャと、同じピクチャの再構築されたバージョンとの間の誤差（たとえば、差分）を最小限に抑えるために設計され得る。ループ内適応フィルタ（たとえば、適応ループフィルタ（ＡＬＦ））は、ＨＥＶＣの開発段階中に評価されたが、ＨＥＶＣの最終バージョン中に含まれなかった。
【００５３】
[0062]ＡＬＦなどのフィルタは１つまたは複数の係数を有し得る。変換係数と同様に、フィルタｈ（ｋ，ｌ）、ここで、ｋ＝−Ｋ，…，Ｋ、ｌ＝−Ｋ，…Ｋ、の係数は、以下のように量子化され、
【００５４】
【数１】
2019519982.tif 000003
【００５５】
次いでコーディングされ、ビデオデコーダ３０に送られ得る。ｎｏｒｍＦａｃｔｏｒは、通常、２nに等しい。ｎｏｒｍＦａｃｔｏｒの値がより大きいほど、量子化はより正確であり、量子化されたフィルタ係数ｆ（ｋ，ｌ）はより良いパフォーマンスを与える。一方、ｎｏｒｍＦａｃｔｏｒのより大きい値は、より多くのビットを送信することを必要とする係数ｆ（ｋ，ｌ）を生成する。値Ｋは整数であり得る。
【００５６】
[0063]ビデオデコーダ３０、またはビデオエンコーダ２０の再構築ループなど、ビデオデコーダは、以下のように、再構築された画像Ｒ（ｉ、ｊ）に、復号されたフィルタ係数ｆ（ｋ，ｌ）を適用し得る。
【００５７】
【数２】
2019519982.tif 000004
【００５８】
上記の式（１）では、ｉおよびｊはフレーム内のピクセルの座標である。式（１）では、Ｒ（ｉ、ｊ）は、座標（ｉ、ｊ）における再構築されたピクチャのサンプルのフィルタ処理されていない値であり、
【００５９】
【数３】
2019519982.tif 000005
【００６０】
は、座標（ｉ、ｊ）におけるサンプルのフィルタ処理された値を示す。
【００６１】
[0064]ＪＥＭにおいて採用されたループ内適応ループフィルタは、Ｊ．Ｃｈｅｎら、「Coding tools investigation for next generation video coding」、ＳＧ１６−ジュネーブ−Ｃ８０６、２０１５年１月において最初に提案された。基本概念は、ＨＭ−３（Ｔ．Ｗｉｅｇａｎｄら、「WD3: Working Draft 3 of High-Efficiency Video Coding」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１とのジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）、ＪＣＴＶＣ−Ｅ６０３、第５回会合：ジュネーブ、スイス、２０１１年３月１６〜２３日、以下、ＪＣＴＶＣ−Ｅ６０３）におけるブロックベース適応を用いたＡＬＦと同じである。
【００６２】
[0065]ルーマ成分の場合、全ピクチャ中の４×４ブロックが、（最高３つの方向の）１次元（１Ｄ）ラプラシアン方向と、（最高５つのアクティビティ値の）２次元（２Ｄ）ラプラシアンアクティビティとに基づいて分類される。また、分類のためのルールは「行列」として指定される。Ｄｉｒbと示される、方向、およびＡｃｔbと示される、量子化されないアクティビティの計算は、式（２）〜式（５）に示されており、ここで、
【００６３】
【数４】
2019519982.tif 000006
【００６４】
は、４×４ブロックの左上に対する相対座標（ｉ、ｊ）をもつ再構築されたピクセルまたはサンプルを示す。Ａｃｔbは、ＪＣＴＶＣ−Ｅ６０３に記載されているように、両端値を含む０〜４の範囲にさらに量子化され得る。
【００６５】
【数５】
2019519982.tif 000007
【００６６】
[0066]全体で、各ブロックは、１５個（すなわち、５×３）のグループのうちの１つにカテゴリー分類され得、インデックスは、ブロックのＤｉｒbおよびＡｃｔbの値に従って、各４×４ブロックに割り当てられる。Ｃによって示される、グループインデックスは、
【００６７】
【数６】
2019519982.tif 000008
【００６８】
に等しく設定され、ここにおいて、
【００６９】
【数７】
2019519982.tif 000009
【００７０】
はＡｃｔbの量子化された値である。したがって、ＡＬＦパラメータの最高１５個のセットが、ピクチャのルーマ成分のためにシグナリングされ得る。
【００７１】
[0067]シグナリングコストを節約するために、グループは、グループインデックス値に沿ってマージされ得る。すなわち、連続するグループインデックスをもつグループが、１つのマージグループにマージされ得る。各マージグループについて、ＡＬＦ係数のセットがシグナリングされる。（図２に示されているような）最高３つの円形対称フィルタ形状がサポートされる。図２の例では、左部分は５×５ダイヤモンドであり、中間部分は７×７ダイヤモンドであり、右部分は切頭９×９ダイヤモンドである。ピクチャ中の両方のクロマ成分のために、ＡＬＦ係数の単一のセットが適用され、５×５ダイヤモンド形状フィルタが常に使用される。
【００７２】
[0068]デコーダ側において、各ピクセルサンプル
【００７３】
【数８】
2019519982.tif 000010
【００７４】
がフィルタ処理され、式（６）に示されているようにピクセル値Ｉ’i,jを生じ、ここで、Ｌはフィルタ長を示し、ｆm,nはフィルタ係数を表し、ｏはフィルタオフセットを示す。
【００７５】
【数９】
2019519982.tif 000011
【００７６】
であり、（ｏ＝（１≪（ＢＤF−２））およびＢＤFはビット深度である。現在のＪＥＭ２では、ビット深度は９に設定され、これは、フィルタ係数が［−２５６、２５６］の範囲内にあり得ることを意味する。現在の設計では、最高１つのフィルタのみが２つのクロマ成分についてサポートされる。
【００７７】
[0069]ＪＥＭ２では、いくつかのシンタックス要素および／または方法が、限定はしないが、以下のうちの１つまたは複数を含む、フィルタ係数をシグナリングするために使用され得る。
【００７８】
[0070]フィルタの総数：ＡＬＦが１つのスライスのために有効にされたとき、フィルタの総数（またはマージグループの総数）が、最初にシグナリングされる。それはルーマ成分に適用される。クロマ成分の場合、１つのフィルタのみが適用され得るので、そのような情報をシグナリングする必要はない。
【００７９】
[0071]フィルタサポート：３つのフィルタサポートのインデックスがシグナリングされる。
【００８０】
[0072]フィルタインデックス：Ｃの非連続値を有するクラスが、マージされ、すなわち、同じフィルタを共有することがある。各クラスの１つのフラグを、それがマージされるか否かを示すためにコーディングすることによって、フィルタインデックスは導出され得る。
【００８１】
[0073]ｆｏｒｃｅＣｏｅｆｆ０フラグ：ｆｏｒｃｅＣｏｅｆｆ０フラグは、フィルタのうちの少なくとも１つがコーディングされるべきでないかどうかを示すために使用される。このフラグが０に等しいとき、フィルタのすべてがコーディングされるべきである。このフラグが１に等しいとき、ＣｏｄｅｄＶａｒＢｉｎによって示される、各マージグループの１つのフラグが、フィルタがシグナリングされるべきであるか否かを示すためにさらにシグナリングされる。フィルタがシグナリングされないとき、フィルタに関連付けられたフィルタ係数のすべてが０に等しい。
【００８２】
[0074]予測方法：フィルタの複数のグループがシグナリングされる必要があるとき、２つの以下の技法のうちの１つが使用され得る。  
−  すべてのフィルタがフィルタ情報に直接コーディングされる。この場合、たとえば、フィルタ係数の値は、予測符号化技法を使用せずにビットストリーム中に符号化され得る。  
−  第１のフィルタのフィルタ係数が直接コーディングされる。一方、残りのフィルタの場合、それらはフィルタ情報中に予測コーディングされる。この場合、フィルタ係数の値は、前にコーディングされたフィルタに関連付けられたフィルタ係数に対する残差値または差分によって定義され得る。前にコーディングされたフィルタは、直近のフィルタであるフィルタであり、すなわち、現在のフィルタおよびそれの予測子のフィルタインデックスは連続する。
【００８３】
[0075]上記の２つの方法のうちの１つの使用を示すために、マージグループの数が１よりも大きく、ｆｒｏｃｅＣｏｅｆｆ０が０に等しいとき、１つのフラグがコーディングされる。
【００８４】
[0076]ゴロムコーディングを用いたフィルタ係数
[0077]ある位置とＤＣフィルタ係数の位置との間の距離に基づいて、１つのフィルタサポートが複数のカテゴリーにスプリットされ得る。３つのカテゴリーをもつ７×７ダイヤモンドフィルタ形状のための一例が図３に示されている。言い換えれば、図３は、フィルタ係数シグナリングのための３つのカテゴリーをもつ例示的な７×７フィルタ形状を示す。図３の各正方形は、１つのフィルタ係数を示し、同じ数を含んでいる正方形が、同じゴロムパラメータを用いてコーディングされる。
【００８５】
[0078]フィルタ係数のシグナリングは、２つの部分を備えるか、またはいくつかの例では、２つの部分からなる。  
１）  ゴロムパラメータ：（ｋＭｉｎによって示される）ゴロムパラメータの１つの値が第１にシグナリングされ、その後に、各カテゴリーのための１ビットフラグが続く。１ビットフラグは、ｉ（７ｘ７ダイヤモンド対称フィルタサポートについて、両端値を含む１から３までのｉ）が１よりも大きいとき、前のカテゴリー（ｉ−１）のために使用されるゴロムパラメータと比較して、またはｉが１に等しいとき、ｋＭｉｎと比較して、カテゴリーｉのパラメータが同じであるのか、１だけ増加されるのかを示す。  
２）  係数：選択されたゴロムパラメータに基づいて、係数の絶対値がコーディングされ、その後に、符号フラグが続く。https://en.wikipedia.org/wiki/Golomb_codingは、ゴロムコーディングの詳細について説明している。
【００８６】
[0079]参照ピクチャのＡＬＦ係数が記憶され、現在ピクチャのＡＬＦ係数として再利用され得る。ビデオコーダ（たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０）は、参照ピクチャのために記憶されたＡＬＦ係数を、現在ピクチャ中で使用されるＡＬＦ係数として使用することを選定し得、ＡＬＦ係数シグナリングをバイパスし得る。この場合、ビデオエンコーダ２０は、参照ピクチャのうちの１つへのインデックスのみをシグナリングし、示された参照ピクチャの記憶されたＡＬＦ係数は、現在ピクチャのために継承される。時間予測の使用を示すために、インデックスを送る前に、１つのフラグがコーディングされる。
【００８７】
[0080]Ｍ．Ｋａｒｃｚｅｗｉｃｚら、「Improvements on adaptive loop filter」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１との探査チーム（ＪＶＥＴ）、Ｄｏｃ．ＪＶＥＴ−Ｂ００６０＿ｒ１、第２回会合：サンディエゴ、米国、２０１６年２月２０〜２６日（以下ＪＶＥＴ−Ｂ００６０＿ｒ１）は、ジオメトリ変換ベースＡＬＦ（ＧＡＬＦ）を提案した。ＧＡＬＦでは、分類は、対角勾配を考慮に入れて修正され、ビデオコーダは、フィルタ係数にジオメトリ変換を適用し得る。ビデオコーダは、ブロックの方向性およびアクティビティの量子化された値に基づいて、各２ｘ２ブロックを２５個のクラスのうちの１つにカテゴリー分類する。ＪＶＥＴ−Ｂ００６０＿ｒ１のセクション２．１が詳細を与える。ＪＶＥＴ−Ｂ００６０＿ｒ１のセクション２．１は以下で転載される。
【００８８】
各２×２ブロックは、それの方向性Ｄおよびアクティビティの量子化された値
【００８９】
【数１０】
2019519982.tif 000012
【００９０】
に基づいて、２５個のクラスのうちの１つにカテゴリー分類される。
【００９１】
【数１１】
2019519982.tif 000013
【００９２】
水平、垂直、および２つの対角勾配の値が、１Ｄラプラシアンを使用して計算される。
【００９３】
【数１２】
2019519982.tif 000014
【００９４】
インデックスｉおよびｊは、２×２ブロック中の左上ピクセルの座標を指す。方向性Ｄを割り当てるために、水平および垂直勾配の最大値と最小値との比、
【００９５】
【数１３】
2019519982.tif 000015
【００９６】
と、２つの対角勾配の最大値と最小値との比、
【００９７】
【数１４】
2019519982.tif 000016
【００９８】
とが互いに比較され、しきい値ｔ1およびｔ2のセットを用いて、
【００９９】
【数１５】
2019519982.tif 000017
【０１００】
アクティビティ値Ａは次のように計算される。
【０１０１】
【数１６】
2019519982.tif 000018
【０１０２】
Ａは、両端値を含む０〜４の範囲にさらに量子化され、量子化された値は、
【０１０３】
【数１７】
2019519982.tif 000019
【０１０４】
として示される。
【０１０５】
[0081]さらに、時間予測が利用可能でないときの（たとえば、イントラフレームのための）コーディング効率を改善するために、１６個の固定フィルタのセットが各クラスに割り当てられる。固定フィルタの使用を示すために、各クラスのためのフラグがシグナリングされ、必要な場合、選定された固定フィルタのインデックスがシグナリングされる。固定フィルタが所与のクラスのために選択されたときでも、適応フィルタの係数ｆ（ｋ，ｌ）は依然としてこのクラスのために送られ得、その場合、再構築された画像に適用されるフィルタの係数は、係数の両方のセットの和である。クラスの数は、異なる固定フィルタがクラスのために選定された場合でも、ビットストリーム中でシグナリングされた同じ係数ｆ（ｋ，ｌ）を共有することができる。２０１６年２月１５日に出願された、米国仮特許出願第６２／２９５，４６１号、および２０１６年４月１９日に出願された、米国仮特許出願第６２／３２４，７７６号では、固定フィルタはインターコード化フレームにも適用され得る。
【０１０６】
[0082]フィルタ係数は、様々な方法でシグナリングされるかまたは決定され得る。たとえば、固定フィルタの予測パターンおよび予測インデックスが、固定フィルタについて決定され得る。この例では、予測パターンの３つの事例、すなわち、事例１：２５個のクラスのフィルタのいずれも固定フィルタから予測されないかどうか、事例２：クラスのすべてのフィルタが固定フィルタから予測される、および事例３：いくつかのクラスに関連付けられたフィルタが固定フィルタから予測され、クラスの残りに関連付けられたフィルタが固定フィルタから予測されない、が定義される。３つの事例のうちの１つを示すために、インデックスが第１にコーディングされ得る。さらに、以下が適用される。予測パターンが事例１である場合、固定フィルタのインデックスをさらにシグナリングする必要はない。さもなければ、予測パターンが事例２である場合、各クラスのための選択された固定フィルタのインデックスがシグナリングされる。さもなければ（予測パターンが事例３である）、各クラスのための１ビットが第１にシグナリングされ、固定フィルタが使用される場合、インデックスがさらにシグナリングされる。
【０１０７】
[0083]フィルタ係数を表すために必要とされるビットの数を低減するために、異なるクラスがマージされ得る。しかしながら、ＪＣＴＶＣ−Ｅ６０３の場合とは異なり、クラスの任意のセットが、Ｃの非連続値を有するクラスさえ、マージされ得る。どのクラスがマージされるかに関する情報は、２５個のクラスの各々のためにインデックスｉCを送ることによって与えられる。同じインデックスｉCを有するクラスは、コーディングされる同じフィルタ係数を共有する。インデックスｉCは、切頭固定長方法を用いてコーディングされる。
【０１０８】
[0084]同様に、ｆｏｒｃｅＣｏｅｆ０フラグも使用される。ｆｏｒｃｅＣｏｅｆ０フラグが１に等しいとき、マージグループ（コーディングされるべきすべてのフィルタ）の各々のためのＣｏｄｅｄＶａｒＢｉｎによって示される１ビットフラグが、シグナリングされたフィルタ係数がすべて０であるかどうかを示すためにさらにシグナリングされる。その上、このフラグが１に等しいとき、予測コーディング、すなわち、現在のフィルタと前にコーディングされたフィルタとの間の差分をコーディングすることが無効にされる。
【０１０９】
[0085]固定フィルタからの予測が可能にされるとき、上述のシグナリング／コーディングされるべきフィルタ（たとえば、フィルタパラメータ）は、再構築された画像に適用されるフィルタと選択された固定フィルタとの間の差分である。ＪＶＥＴ−Ｂ００６０＿ｒ１のＧＡＬＦ提案では、係数などの他の情報は、ＪＥＭ２．０の場合と同様の方法でコーディングされる。
【０１１０】
[0086]クラスインデックス導出：  分類は、依然として、各Ｎ×Ｎルーマブロックの１Ｄラプラシアン方向および２Ｄラプラシアンアクティビティに基づく。ただし、方向とアクティビティの両方の定義は、ローカル特性をより良くキャプチャするように修正された。第１に、既存のＡＬＦにおいて使用される水平勾配および垂直勾配に加えて、２つの対角勾配の値が、１Ｄラプラシアンを使用して計算される。以下の式（７＊）〜式（１０＊）からわかり得るように、ターゲットピクセルをカバーする６×６ウィンドウ内のすべてのピクセルの勾配の和が、ターゲットピクセルの表される勾配として採用される。実験によれば、ウィンドウサイズ、すなわち、６×６は、複雑さとコーディングパフォーマンスとの間の良好なトレードオフを与える。各ピクセルは、ｇvによって示される垂直勾配、ｇhによって示される水平勾配、ｇd1によって示される１３５度対角勾配、およびｇd2によって示される４５度対角勾配をもつ、４つの勾配値に関連付けられる。
【０１１１】
【数１８】
2019519982.tif 000020
【０１１２】
ここで、インデックスｉおよびｊは、２×２ブロック中の左上ピクセルの座標を指す。
【０１１３】
[0087]方向性Ｄを割り当てるために、以下の式（１１＊）においてＲh,vによって示される、水平および垂直勾配の最大値と最小値との比、および、以下の式（１２＊）においてＲd1,d2によって示される、２つの対角勾配の最大値と最小値との比が、２つのしきい値ｔ1およびｔ2を用いて互いに比較される。
【０１１４】
【数１９】
2019519982.tif 000021
【０１１５】
[0088]水平／垂直勾配および対角勾配の検出された比を比較することによって、５つの方向モード、すなわち、両端値を含む［０，４］の範囲内のＤが、以下の式（１３＊）において定義される。Ｄの値およびそれの物理的意味は、表Ｉで説明される。
【０１１６】
【数２０】
2019519982.tif 000022
【０１１７】
【表１】
2019519982.tif 000023
【０１１８】
[0089]アクティビティ値Ａは次のように計算される。
【０１１９】
【数２１】
2019519982.tif 000024
【０１２０】
Ａは、両端値を含む０〜４の範囲にさらに量子化され、量子化された値は、
【０１２１】
【数２２】
2019519982.tif 000025
【０１２２】
として示される。
【０１２３】
[0090]したがって、提案されるＧＡＬＦ方式では、各Ｎ×Ｎブロックは、それの方向性Ｄおよびアクティビティの量子化された値
【０１２４】
【数２３】
2019519982.tif 000026
【０１２５】
に基づいて、２５個のクラスのうちの１つにカテゴリー分類される。
【０１２６】
【数２４】
2019519982.tif 000027
【０１２７】
[0091]現在のＡＬＦおよびＧＡＬＦ設計は以下の問題を有し得る。第１に、各ブロックは、方向／アクティビティ値を量子化することによって、１つの特定のクラスインデックスを割り当てられる。したがって、同じクラス中のブロックは、依然として、量子化によりいくつかの異なる特性を有し得る。そのような情報は、現在のＡＬＦ／ＧＡＬＦ設計において使用されない。第２に、１つのブロックが１つのフィルタのみを割り当てられ、その割当ては、隣接情報を考慮せず、コーディングパフォーマンスを制限する。
【０１２８】
[0092]本開示の技法はこれらの短所に対処し得る。以下の項目別技法が個々に適用され得る。代替的に、項目別技法の組合せが適用され得る。以下の例は、ＡＬＦ分類がＮ×Ｎブロックに基づくと仮定する（ここにおいて、Ｎは、正値、たとえば、１、２、４である）。
【０１２９】
[0093]フィルタ処理されるべき各Ｎ×Ｎブロックについて、ビデオコーダ（たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０）は、ただ１つのフィルタを使用するのではなく、複数のフィルタを適用する。したがって、ビデオデータの現在ピクチャを符号化した後に、ビデオエンコーダ２０は現在ピクチャを再構築し得る。さらに、現在ピクチャを再構築した後に、ビデオエンコーダ２０は、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用し得る。現在ブロックは、現在ピクチャの再構築されたサンプルを備える。いくつかの事例では、ビデオエンコーダ２０は、現在ピクチャのブロックをフィルタ処理する前に現在ピクチャを十分に再構築するのを待たない。そうではなく、ビデオエンコーダ２０は、現在ピクチャの他の部分を依然として再構築しながら、現在ピクチャのブロックをフィルタ処理することを開始し得る。したがって、ビデオエンコーダ２０は、現在ピクチャの１つまたは複数のブロック（たとえば、Ｍ×Ｎブロック）を再構築し得、ここで、１つまたは複数の再構築されたブロックは、現在ピクチャの再構築されたサンプルを含む。さらに、ビデオエンコーダ２０は、再構築されたサンプルを備える現在ブロック（たとえば、Ｋ×Ｌブロック）に複数のフィルタの特定の関数を適用し得る。同様に、ビデオデコーダ３０は、現在ピクチャ（または現在ピクチャの１つまたは複数のブロック）を再構築し得る。現在ピクチャ（または現在ピクチャの１つまたは複数のブロック）を再構築した後に、ビデオデコーダ３０は、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用し得る。
【０１３０】
[0094]いくつかの例では、ビデオコーダは、これらのフィルタを混同するために、線形関数など、複数のフィルタの混同関数を適用する。したがって、現在ピクチャの１つまたは複数のブロックを再構築した後に、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）は、現在ピクチャの現在ブロックに複数のフィルタの線形関数を適用し得る。たとえば、一例では、式（１）のフィルタ処理プロセスは以下に修正される。
【０１３１】
【数２５】
2019519982.tif 000028
【０１３２】
式（７）において、
【０１３３】
【数２６】
2019519982.tif 000029
【０１３４】
は、再構築されたピクチャの位置（ｉ、ｊ）におけるサンプルのフィルタ処理された値を示し、ｗ（ｍ）は、複数のブロックのｍ番目のブロックに関連付けられたｍ番目の重み付け係数を示し、Ｍは複数のブロック中のブロックの総数を示し、ｆmは、クラス／グループインデックスに基づく、ｍ番目のブロックのために使用されるかまたは導出されたフィルタを示し、Ｋは、ｆmのための係数の行列の長さまたは高さの１／２を示し、ｆm（ｋ、ｌ）は、ｆmのための係数の行列のロケーション（ｋ、ｌ）における係数に対応する量子化された係数であり、Ｒ（ｉ＋ｋ，ｊ＋ｌ）は、ロケーション（ｉ＋ｋ，ｊ＋ｌ）における再構築されたピクチャのサンプルである。ビデオコーダは、本開示の他の場所で説明されるように、クラス／グループインデックスを導出するためのＡＬＦまたはＧＡＬＦにおいて使用される技法によるクラス／グループインデックスに基づいて、ｍ番目のブロックのためのフィルタを導出し得る。
【０１３５】
[0095]いくつかの例では、１つのＮ×Ｎブロック（すなわち、現在ブロック）をフィルタ処理するために使用されるフィルタの総数は、隣接ブロックの数＋１（すなわち、式（７）におけるＭ）に等しく、これは、テンプレートにおいて定義されているブロックの総数であり得る。テンプレートは、現在ブロックを中心とするブロックの幾何学的パターンであり得る。いくつかの例では、テンプレートは、図２および図３の形状と同様の、ダイヤモンド形状を有し得るが、図２および図３に示されている正方形は、個々のサンプルではなく、Ｎ×Ｎブロックである。他の例では、テンプレートは、正方形、矩形、菱形、台形、三角形など、異なる形状を有する。いくつかの例では、テンプレートは、テンプレートが、テンプレートをシグナリングすることなしにビデオエンコーダ２０およびビデオデコーダ３０にとって利用可能であるように、あらかじめ定義される。
【０１３６】
[0096]いくつかの例では、ビデオコーダは、ブロックのために適用される混同関数中に含まれるフィルタの数を決定し得る。たとえば、１つのＮ×Ｎブロックをフィルタ処理するための、ＮＵＭfによって示される、フィルタの総数が定義（たとえば、あらかじめ定義またはシグナリング）され得る。ＮＵＭfは、テンプレートにおいて定義されているブロックの総数よりも小さくなり得る。ＮＵＭfがテンプレートにおいて定義されているブロックの総数よりも小さい場合、複数のフィルタ（ｍが０〜Ｍ−１であるｆm）からＮＵＭfフィルタを選択するために、様々なルールが使用され得る。たとえば、現在のＮ×Ｎブロックと比較して最小グループ（クラス）インデックスをもつテンプレート中の第１のＮＵＭf隣接ブロックが選択され得る。第１のＮＵＭf隣接ブロックに関連付けられたフィルタが、混同のために使用される。
【０１３７】
[0097]いくつかの例では、現在ブロックに適用される複数のフィルタは、異なるクラス／グループのための選択されたフィルタとして定義され、クラス／グループは、テンプレート中の隣接サンプル／ブロックに関連付けられたものとして定義される。たとえば、テンプレート中で定義されている各それぞれのブロックについて、ビデオコーダは、それぞれのブロックのためのクラス／グループインデックスを識別し得る。ビデオコーダは、本開示の他の場所で与えられる例に従って、クラス／グループインデックスを識別し得る。さらに、この例では、現在ブロックに適用される混同関数は、それぞれのブロックのためのクラス／グループインデックスに対応するフィルタを含み得る。
【０１３８】
[0098]いくつかの例では、テンプレートは、スライスタイプ、量子化パラメータ、時間識別子、あるいは他のピクチャによって参照されるかまたは参照されない他の情報に依存する。言い換えれば、ビデオコーダは、現在ブロックを含んでいるスライスのスライスタイプに応じて、現在ブロックのための量子化中に使用される量子化パラメータに応じて、現在ブロックを含んでいるピクチャの時間識別子に応じて、または他のファクタに応じて、現在ブロックに複数のフィルタの混同関数を適用するとき、異なるテンプレートを使用し得る。例示的なスライスタイプとしては、Ｉスライス、Ｐスライス、およびＢスライスがある。Ｉスライスは、イントラ予測ブロックを含むが、インター予測ブロックを含まないことがある。Ｐスライスは、イントラ予測ブロックまたは単方向インター予測ブロックを含むが、双方向インター予測ブロックを含まないことがある。Ｂスライスは、イントラ予測ブロックと、単方向インター予測ブロックと、双方向インター予測ブロックとを含み得る。たとえば、ビデオコーダは、現在ブロックがＩスライス中にあるのか、Ｐスライス中にあるのか、Ｂスライス中にあるのかに応じて、異なる幾何学的パターンを定義するテンプレートを使用し得る。時間識別子（ＴＩＤ）は、特定の時間サブレイヤに属するものとして、ＮＡＬユニットを識別し得る。たとえば、より低いＴＩＤをもつサブレイヤについて、テンプレートは、より高いＴＩＤをもつそれらのサブレイヤと比較して、より多くの隣接ブロック／サンプルを含んでいることがある。それは、より高いＴＩＤをもつサブレイヤが、より低いＴＩＤをもつサブレイヤから予測され得、より低いＴＩＤをもつサブレイヤが、すでにフィルタ処理されていることがあるためである。
【０１３９】
[0099]いくつかの例では、テンプレートは、シーケンスパラメータヘッダ（たとえば、シーケンスパラメータセット）、ピクチャパラメータヘッダ（たとえば、ピクチャパラメータセット）、スライスヘッダ、またはビットストリーム中の別のタイプのシンタックス構造中でシグナリングされる。ＨＥＶＣのコンテキストでは、シーケンスパラメータヘッダは、シーケンスパラメータセットと呼ばれることがあり、ピクチャパラメータヘッダは、ピクチャパラメータセットと呼ばれることがある。たとえば、ビデオエンコーダ２０は、シーケンスパラメータヘッダ、ピクチャパラメータヘッダ、スライスヘッダ、またはビットストリーム中の別のタイプのシンタックス構造中にシンタックス要素を含み得る。この例では、シンタックス要素は、テンプレートによって定義される幾何学的パターンを示す。さらに、この例では、ビデオデコーダ３０は、シーケンスパラメータヘッダ、ピクチャパラメータヘッダ、スライスヘッダ、またはデータストリーム中の他のタイプのシンタックス構造からシンタックス要素を取得し得る。この例では、ビデオデコーダ３０は、テンプレートを決定するために、取得されたシンタックス要素を使用し得る。
【０１４０】
[0100]上述のように、複数のフィルタの混同関数は、重み付け係数（たとえば、ｗ（ｍ））をフィルタの結果に適用し得る。一例では、混同関数によって採用される重み付け係数のシグナリングは、あらかじめ定義されたマスクに基づく。マスクは、現在ブロックを中心とするブロックの幾何学的パターンにおけるブロックへの値の割当てである。たとえば、ビデオコーダは、あらかじめ定義されたマスクに基づいて、複数のフィルタの関数中で使用される重み付け係数を決定し得る。図４は、本開示の技法による、複数のフィルタを重み付けするための例示的なマスクを示す概念図である。図４の例では、各正方形はＮ×Ｎブロックに対応する。図４の例では、同じ値（すなわち、「マスク値」）を含んでいるブロックは、同じ重み付け係数を有する。いくつかの例では、重み付け係数はマスク値に等しくない。一例として図４に示されているテンプレートをとると、同じマスク値（図４における１〜４）をもつ「ブロック」は同じ重み付け係数を示し、１つの重み付け係数のみがシグナリングされる。たとえば、図４の例では、第１の重み付け係数が、マスク値１のためにシグナリングされ得、第２の重み付け係数が、マスク値２のためにシグナリングされ得、第３の重み付け係数が、マスク値３のためにシグナリングされ得、第４の重み付け係数が、マスク値４のためにシグナリングされ得る。この事例では、第１、第２、第３、および第４の重み係数は、（各々４回シグナリングされる第１、第２、および第３の重み付け係数とは対照的に）１回のみシグナリングされる。
【０１４１】
[0101]したがって、この例では、ビデオデコーダ３０は、ビットストリームから、隣接ブロックのための重み付け係数を示すデータを取得し得る。この例では、隣接ブロックの各それぞれの隣接ブロックについて、複数のフィルタは、それぞれの隣接ブロックのためのそれぞれのフィルタを含む。さらに、この例では、ビデオデコーダ３０は、複数のフィルタを備える特定の関数を再構築されたピクチャの現在ブロックに適用するとき、隣接ブロックのための重み付け係数を使用し得る。
【０１４２】
[0102]いくつかの例では、隣接ブロックのための重み付け係数はシグナリングされ、現在ブロックのための重み付け係数はスキップされる。言い換えれば、ビデオエンコーダ２０は、ビットストリーム中で現在ブロックのための重み付け係数を示すことなしに、ビットストリーム中で、隣接ブロックのための重み付け係数を示し得る。たとえば、図４の例では、ビデオエンコーダ２０は、マスク値１、２、および３のための重み付け係数をシグナリングするが、マスク値４のための重み付け係数をシグナリングしないことがある。現在ブロックのための重み付け係数は、隣接ブロックのための精度およびシグナリングされた重み付け係数によって導出され得る。一例では、精度をＭによって示し、すなわち、すべての重み付け係数の和は（１＜＜Ｍ）に等しい。現在ブロックのための重み付け係数は、（１＜＜Ｍ）−隣接ブロックのためのシグナリングされた重み付け係数の合計として導出され得る。
【０１４３】
[0103]いくつかの例では、重み付け係数の差分コーディングが適用され得る。言い換えれば、ビデオコーダは、現在ブロックに適用される複数のフィルタの関数中で使用する重み付け係数を決定するために差分コーディングを使用し得る。たとえば、第１、第２、および第３の重み付け係数の値を直接シグナリングするのではなく、ビデオエンコーダ２０は、第１の重み付け係数の値をシグナリングし、第１の重み付け係数と第２の重み付け係数との間の差分をシグナリングし、第２の重み付け係数と第３の重み付け係数との間の差分をシグナリングし得る。重み付け係数の差分コーディングは、重み付け係数をシグナリングするために必要とされるデータの量を低減し得る。
【０１４４】
[0104]さらに、一例では、インデックス（たとえば、図４に示されているマスク値）の順序がさらにシグナリングされ得る。順序は昇順／降順であり得る。たとえば、第１の重み付け係数は１０に等しくなり得、第２の重み付け係数は７に等しくなり得、第３の重み付け係数は２に等しくなり得る。この例では、第１に第３の重み付け係数、第２に第２の重み付け係数、第３に第１の重み付け係数をシグナリングすることがより効率的であり得る。理由を示すために、重み付け係数の各々が単項コードとして表され得ることを考慮する。したがって、第１の重み付け係数が第１にシグナリングされ、その後に、第２の重み付け係数が続き、その後に、第３の重み付け係数が続く場合、合計１８個の１について、１０個の１がシグナリングされ、その後に、３個の１が続き、その後に、５個の１が続くことになる。対照的に、第３の重み付け係数が第１にシグナリングされ、その後に、第２の重み付け係数が続き、その後に、第１の重み付け係数が続く場合、合計１２個の１について、２個の１があり、その後に、５個の１が続き、その後に、５個の１が続くことになる。したがって、この例では、インデックスの順序は、第１のオプションの代わりに第２のオプションを使用するためにシグナリングされ得る。
【０１４５】
[0105]いくつかの例では、ネイバーに関連付けられたすべての重み付け係数が０に等しいかどうかを示すために、１ビットがシグナリングされ得る。すべての重み付け係数が０に等しいとは限らない場合、固定長コーディングを使用してなど、重み付け係数がシグナリングされる。たとえば、ビデオエンコーダ２０は、ビットストリーム中で、テンプレート中のすべての隣接ブロックのための重み付け係数が０に等しいかどうかを示すシンタックス要素をシグナリングし得る。テンプレート中の隣接ブロックのためのすべての重み付け係数が０に等しいとは限らないことをシンタックス要素が示す場合、ビデオエンコーダ２０は、ビットストリーム中で、テンプレート中の隣接ブロックのうちの１つまたは複数のための重み付け係数をシグナリングし得る。同様に、ビデオデコーダ３０は、ビットストリームから、テンプレート中のすべての隣接ブロックのための重み付け係数が０に等しいかどうかを示すシンタックス要素を取得し得る。テンプレート中の隣接ブロックのためのすべての重み付け係数が０に等しいとは限らないことをシンタックス要素が示すと決定したことに応答して、ビデオデコーダ３０は、ビットストリームから、テンプレートの隣接ブロックのうちの１つまたは複数のための重み付け係数を示すデータを取得し得る。この例では、ビデオデコーダ３０は、特定の関数を適用するために隣接ブロックに関連付けられた重み付け係数を使用し得る。
【０１４６】
[0106]１つのブロックについて、アクティビティおよび方向行列などに基づいて、一意のグループインデックスまたはクラスインデックスが割り当てられる。このブロックにグループインデックスまたはクラスインデックスに関連付けられた１つのフィルタを適用する代わりに、複数のフィルタが適用され得、複数のフィルタは、現在ブロックのための行列の結果に基づいて選択される。一例では、現在ブロックのアクティビティ、Ａｃｔb（または、量子化後、本開示の他の場所で説明される
【０１４７】
【数２７】
2019519982.tif 000030
【０１４８】
）を仮定すると、
【０１４９】
【数２８】
2019519982.tif 000031
【０１５０】
など、Ａｃｔbの連続する値に関連付けられたフィルタは、現在ブロックをフィルタ処理するために使用される。たとえば、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）は、現在ブロックのための量子化されたアクティビティレベル
【０１５１】
【数２９】
2019519982.tif 000032
【０１５２】
と現在ブロックのための方向値Ｄｉｒbとを決定し得る。この例では、ビデオコーダは、
【０１５３】
【数３０】
2019519982.tif 000033
【０１５４】
およびＤｉｒbに関連付けられたフィルタと、
【０１５５】
【数３１】
2019519982.tif 000034
【０１５６】
およびＤｉｒbに関連付けられたフィルタと、
【０１５７】
【数３２】
2019519982.tif 000035
【０１５８】
およびＤｉｒbに関連付けられたフィルタとを適用することによって生成されたサンプル値の平均（たとえば、重み付き平均）として、現在ブロックのサンプルのフィルタ処理された値を決定し得る。このようにして、ビデオコーダは、現在ブロックのアクティビティレベル（たとえば、Ａｃｔbまたは
【０１５９】
【数３３】
2019519982.tif 000036
【０１６０】
）に基づいて、複数のフィルタ中の２つまたはそれ以上のフィルタを決定し得る。
【０１６１】
[0107]いくつかの例では、１つのブロックのアクティビティＤｉｒbを仮定すると、（Ｄｉｒb＋１）または（Ｄｉｒb−１）など、Ｄｉｒbの連続する値に関連付けられたフィルタは、現在ブロックをフィルタ処理するために使用され得る。たとえば、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）は、現在ブロックのための量子化されたアクティビティレベル
【０１６２】
【数３４】
2019519982.tif 000037
【０１６３】
と現在ブロックのための方向値Ｄｉｒbとを決定し得る。この例では、ビデオコーダは、
【０１６４】
【数３５】
2019519982.tif 000038
【０１６５】
およびＤｉｒbに関連付けられたフィルタと、
【０１６６】
【数３６】
2019519982.tif 000039
【０１６７】
および（Ｄｉｒb＋１）に関連付けられたフィルタと、
【０１６８】
【数３７】
2019519982.tif 000040
【０１６９】
および（Ｄｉｒb−１）に関連付けられたフィルタとを適用することによって生成されたサンプル値の平均（たとえば、重み付き平均）として、現在ブロックのサンプルのフィルタ処理された値を決定し得る。
【０１７０】
[0108]いくつかの例では、上記の２つの方法が一緒に使用される。たとえば、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）は、現在ブロックのための量子化されたアクティビティレベル
【０１７１】
【数３８】
2019519982.tif 000041
【０１７２】
と現在ブロックのための方向値Ｄｉｒbとを決定し得る。この例では、ビデオコーダは、
【０１７３】
【数３９】
2019519982.tif 000042
【０１７４】
およびＤｉｒbに関連付けられたフィルタと、
【０１７５】
【数４０】
2019519982.tif 000043
【０１７６】
およびＤｉｒbに関連付けられたフィルタと、
【０１７７】
【数４１】
2019519982.tif 000044
【０１７８】
およびＤｉｒbに関連付けられたフィルタと、
【０１７９】
【数４２】
2019519982.tif 000045
【０１８０】
および（Ｄｉｒb＋１）に関連付けられたフィルタと、
【０１８１】
【数４３】
2019519982.tif 000046
【０１８２】
および（Ｄｉｒb−１）に関連付けられたフィルタとを適用することによって生成されたサンプル値の平均（たとえば、重み付け平均）として、現在ブロックのサンプルのフィルタ処理された値を決定し得る。このようにして、ビデオコーダは、現在ブロックのアクティビティレベル（たとえば、
【０１８３】
【数４４】
2019519982.tif 000047
【０１８４】
）または現在ブロックの方向値（たとえば、Ｄｉｒb）のうちの少なくとも１つに基づいて、混同関数中で使用される複数のフィルタ中の２つまたはそれ以上のフィルタを決定し得る。
【０１８５】
[0109]いくつかの例では、ビデオコーダは、複数のフィルタのうちの選択されたフィルタのためのあらかじめ定義された重み付け係数を使用して、複数のフィルタの特定の関数（すなわち、混同関数）を適用し得る。いくつかの例では、選択されたフィルタのための重み付け係数は、あらかじめ定義されるか、あるいはシーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダ中でシグナリングされる。したがって、ビデオコーダは、シンタックス要素に基づいて、複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定し得、ここで、シンタックス要素は、シーケンスパラメータヘッダ、ピクチャパラメータヘッダ、またはスライスヘッダのうちの１つまたは複数中に含まれ、複数のフィルタのうちの選択されたフィルタのためのあらかじめ定義された重み付け係数を使用して、複数のフィルタの特定の関数を適用する。一例では、重み付け係数は、すべてのクラスについて同じである。
【０１８６】
[0110]いくつかの例では、重み付け係数は、グループインデックス、クラスインデックス、および／またはコーディングユニット／予測ユニット／変換ユニットに対するブロックの位置、および／またはコーディングモード（たとえば、イントラ予測またはインター予測）に依存する。たとえば、ビデオコーダは、現在ブロックがＣＵ、ＰＵ、およびＴＵ境界にわたる場合、重み付け係数の第１のセットを使用し得、現在ブロックがＣＵ、ＰＵ、またはＴＵ境界にわたらない場合、重み付け係数の第２の異なるセットを使用し得、現在ブロックがＣＵ境界ではなくＰＵ境界にわたる場合、重み付け係数の第３のセットを使用し得、以下同様である。別の例では、ビデオコーダは、現在ブロックがイントラ予測のみを使用して予測されたサンプルを含む場合、重み付け係数の第１のセットを使用し得、現在ブロックがインター予測のみを使用して予測されたサンプルを含む場合、重み付け係数の第２のセットを使用し得、現在ブロックがイントラ予測を使用して予測されたいくつかのサンプルとインター予測を使用して予測されたいくつかのサンプルとを含む場合、重み付け係数の第３のセットを使用し得る。したがって、これらの例によれば、ビデオコーダは、グループインデックス、クラスインデックス、コーディングユニット、予測ユニット、変換ユニットに対する現在ブロックの位置、またはコーディングモードに基づいて、複数のフィルタのうちの選択されたフィルタのための重み付け係数を決定し得る。この例では、ビデオコーダは、複数のフィルタを備える特定の関数を適用するために複数のフィルタのうちの選択されたフィルタのためのあらかじめ定義された重み付け係数を使用し得る。
【０１８７】
[0111]いくつかの例では、重み付け係数は、ＡＬＦフィルタの時間予測が有効にされたときに継承される。たとえば、ビデオコーダは、前にコーディングされたピクチャ、たとえば、時間参照ピクチャ中のブロックをフィルタ処理するために使用される重み付け係数から、現在ブロックをフィルタ処理する際に使用するための重み付け係数を決定し得る。いくつかの例では、重み付け係数のうちの１つまたは複数が、ＡＬＦフィルタの時間予測が有効にされたときでもシグナリングされる。
【０１８８】
[0112]一例では、重み付け係数の複数のセットが記憶され、セットのインデックスがシグナリングされ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、重み付け係数の複数のセットを記憶し得る。この例では、ビデオエンコーダ２０は、現在ブロックとともに重み付け係数の特定のセットを使用し得、ビデオエンコーダ２０は、ビットストリーム中で、重み付け係数のセットのインデックスをシグナリングし得る。さらに、この例では、ビデオデコーダ３０は、ビットストリームから、重み付け係数のセットのインデックスを取得し得る。ビットストリームから取得されたインデックスに基づいて、ビデオデコーダ３０は、現在ブロックとともに使用すべき重み付け係数のセットを決定し得る。重み付け係数は、テンプレート中の隣接ブロックのフィルタ、隣接するアクティビティレベルおよび／または方向値に基づいて決定されたフィルタなどに適用され得る。
【０１８９】
[0113]一例では、重み付け係数の記憶されたセットの総数は、しきい値よりも小さく、現在の導出された重み付け係数は、重み付け係数のセットに加算され得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、特定の数の重み付け係数セットを記憶し得る。さらに、この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、重み付け係数の記憶されたセット中にない重み付け係数のセットを独立して導出し得る。この例では、ビデオエンコーダ２０が重み付け係数の導出されたセットを選択した場合、ビデオエンコーダ２０は、現在ブロックのサンプルに、複数のフィルタの関数を適用し得、ここで、フィルタは、重み付け係数の導出されたセットに従って重み付けされる。さらに、この例では、ビデオエンコーダ２０は、ビットストリーム中で、特殊なインデックス値を示すシンタックス要素をシグナリングし得る。特殊なインデックス値は、重み付け係数の導出されたセットに対応する。この例では、ビデオデコーダ３０は、ビットストリームから、特殊なインデックス値を示すシンタックス要素を取得し得る。したがって、この例では、ビデオデコーダ３０は、現在ブロックのサンプルに、フィルタが重み付け係数の導出されたセットに従って重み付けされる複数のフィルタの関数を適用し得る。
【０１９０】
[0114]さらに、いくつかの例では、導出された重み付け係数のうちの少なくとも１つまたは複数が、記憶された重み付け係数のあるセットとは異なるときのみ、導出された重み付け係数は、重み付け係数の新しいセットとして加算される。さらに、いくつかの例では、導出された重み付け係数と重み付け係数のセットとの差分が、記憶された重み付け係数を常に再利用する代わりにコーディングされ得る。たとえば、ビデオコーダは、重み付け係数の導出されたセットと重み付け係数の記憶されたセットとの間の差分を示す値をシグナリングし得る。いくつかの例では、ビデオエンコーダまたはデコーダは、３つの方法、すなわち、重み付け係数を直接コーディングすることまたはセットインデックスを直接コーディングすること、あるいは重み付け係数をシグナリングするための差分コーディングのうちの１つを選択し得る。
【０１９１】
[0115]本開示の技法によれば、１つの画像またはスライスを複数の非重複ブロックにスプリットし、各ブロックについて１つの一意のクラスインデックスまたはグループインデックスを割り当てる代わりに、画像またはスライスは、重複ブロックにスプリットされる。一例では、各ブロックは、依然として、１つのクラスインデックスまたはグループインデックスを割り当てられる。ただし、この例では、２つ以上のブロック中に含まれるピクセル（たとえば、２つ以上のブロック中のピクセル）について、最終のフィルタ処理された結果を得るために複数のフィルタが適用され得る。フィルタは、ビットストリーム中でシグナリングされ、１つのピクセルをカバーするブロックのクラスインデックスまたはグループインデックスに関連付けられたフィルタである。
【０１９２】
[0116]このようにして、ビデオエンコーダ２０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。現在ピクチャは、第１のブロックと第２のブロックとを含み得、ここで、第１のブロックと第２のブロックとは部分的に重複する。さらに、ビデオエンコーダ２０は、第１のブロックのためのクラスと第２のブロックのためのクラスとを決定し得る。ビデオエンコーダ２０は、本開示の他の場所で説明される技法に従って、第１のブロックおよび第２のブロックのためのクラスを決定し得る。この例では、ビデオエンコーダ２０は、第１のブロックの各再構築されたサンプルに、第１のブロックのためのクラスに関連付けられたフィルタを適用し得る。さらに、この例では、ビデオエンコーダ２０は、第１のブロックのためのクラスに関連付けられたフィルタと第２のブロックのためのクラスに関連付けられたフィルタとが、両方とも、第１のブロックと第２のブロックとの重複する部分中の再構築されたサンプルに適用されるように、第２のブロックの各再構築されたサンプルに、第２のブロックのためのクラスに関連付けられたフィルタを適用し得る。したがって、ビデオエンコーダ２０は、第１のブロックと第２のブロックとの間の重複に対応する、第３のブロックに複数のフィルタの関数を適用する。同様の例が、クラスの代わりにグループを使用する。
【０１９３】
[0117]同様に、ビデオデコーダ３０は、ビデオデータの複数のピクチャの符号化表現を備えるビットストリームを受信し得る。さらに、この例では、ビデオデコーダ３０は、複数のピクチャの現在ピクチャのサンプルを再構築し得る。現在ピクチャは第１のブロックと第２のブロックとを含む。この例では、第１のブロックと第２のブロックとは部分的に重複している。さらに、この例では、ビデオデコーダ３０は、第１のブロックのためのクラスと第２のブロックのためのクラスとを決定し得る。ビデオデコーダ３０は、本開示の他の場所で説明される技法に従って、第１のブロックおよび第２のブロックのためのクラスを決定し得る。この例では、ビデオデコーダ３０は、第１のブロックの各再構築されたサンプルに、第１のブロックのためのクラスに関連付けられたフィルタを適用し得る。この例では、ビデオデコーダ３０は、第１のブロックのためのクラスに関連付けられたフィルタと第２のブロックのためのクラスに関連付けられたフィルタとが、両方とも、第１のブロックと第２のブロックとの重複する部分中の再構築されたサンプルに適用されるように、第２のブロックの各再構築されたサンプルに、第２のブロックのためのクラスに関連付けられたフィルタを適用し得る。したがって、ビデオデコーダ３０は、第１のブロックと第２のブロックとの間の重複に対応する、第３のブロックに複数のフィルタの関数を適用する。同様の例が、クラスの代わりにグループを使用する。
【０１９４】
[0118]図５は、本開示の技法による、重複するブロックを含む例示的なピクチャを示すブロック図である。図５の例では、小さい正方形がサンプルに対応する。さらに、図５の例では、第１のブロック４２および第２のブロック４４が、それぞれ、長い破線および短い破線で概説される。図５の例では、（理解しやすいようにグレーで陰影を付けられている）４つのサンプル４６が、ブロック４２および４４によって共有される。サンプル４６は第３のブロックと見なされ得る。さらに、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）は、ブロック４２のための第１のグループインデックスと、ブロック４４のための第２の、別個のグループインデックスとを決定し得る。ビデオコーダは、ブロック４２中にのみあるサンプル４８のための第１のグループインデックスに関連付けられたフィルタを適用し得、ブロック４４中にのみあるサンプル５０のための第２のグループインデックスに関連付けられたフィルタを適用し得る。ビデオコーダはサンプル４６の各々に混同関数を適用し得る。混同関数は、第１のグループインデックスに関連付けられたフィルタと第２のグループインデックスに関連付けられたフィルタとの組合せである。
【０１９５】
[0119]いくつかの例では、２つ以上のクラスインデックスが、現在ブロックに割り当てられ得る。そのような例では、現在ブロックに割り当てられた各クラスインデックスは、いくつかのフィルタに関連付けられ得る。いくつかの例では、分類の複数のルールが定義され得る。このようにして、ビデオエンコーダ２０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、ビデオエンコーダ２０は、現在ピクチャの現在ブロックに複数のクラスインデックスを割り当て得る。複数のクラスインデックスの各それぞれのクラスインデックスは、複数のフィルタ中のそれぞれのフィルタに関連付けられる。さらに、ビデオエンコーダ２０は、現在ブロックの再構築されたサンプルに、現在ブロックに割り当てられた複数のクラスインデックスに関連付けられたフィルタを適用し得る。この例では、フィルタを適用した後に、ビデオエンコーダ２０は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。同様に、ビデオデコーダ３０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、ビデオデコーダ３０は、現在ピクチャの現在ブロックに複数のクラスインデックスを割り当て得る。複数のクラスインデックスの各それぞれのクラスインデックスは、複数のフィルタ中のそれぞれのフィルタに関連付けられる。この例では、ビデオデコーダ３０は、現在ブロックの再構築されたサンプルに、現在ブロックに割り当てられた複数のクラスインデックスに関連付けられたフィルタを適用し得る。
【０１９６】
[0120]一例では、異なるウィンドウサイズ（たとえば、式（１４＊）における６×６ウィンドウおよび３×３ウィンドウ）が、必要な場合、現在ブロックおよびそれの隣接ブロック内の再構築されたサンプルに基づいて、クラスインデックス計算のために使用され得る。たとえば、ビデオエンコーダ２０またはビデオデコーダ３０など、ビデオコーダは、複数のウィンドウサイズに基づいて現在ブロックに複数のクラスインデックスを割り当て得る。
【０１９７】
[0121]図６は、本開示の１つまたは複数の技法による、ピクチャ６２のブロック６０が２つ以上のクラスを割り当てられた一例を示すブロック図である。図６の例では、ブロック６０は６×６ブロックである。ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、全体としてブロック６０のためのアクティビティレベルおよび方向値を決定し得る。ブロック６０のためのアクティビティレベルおよび方向値は、フィルタのセット中の特定のフィルタに対応し得る。このようにして、ビデオコーダは、ブロック６０のアクティビティレベルおよび方向値に基づいてフィルタを決定し得る。さらに、ブロック６０は、４つの３×３サブブロック６４Ａ、６４Ｂ、６４Ｃ、および６４Ｄ（まとめて、「サブブロック６４」）を備える。ビデオコーダは、サブブロック６４の各々のためのアクティビティレベルおよび方向値を別々に決定し得る。サブブロック６４の各それぞれのサブブロックについて、サブブロックのための決定されたアクティビティレベルおよび方向値はそれぞれのフィルタに対応する。このようにして、ビデオコーダは、それぞれのサブブロックのアクティビティレベルおよび方向値に基づいてフィルタを決定し得る。さらに、サブブロック６４の各それぞれのサブブロックの各それぞれのサンプルについて、ビデオコーダは、それぞれのサンプルに、混同関数（すなわち、複数のフィルタの関数）を適用し得る。それぞれのサンプルに適用される混同関数は、ブロック６０のアクティビティレベルおよび方向値に基づいて決定されたフィルタと、それぞれのサブブロックのアクティビティレベルおよび方向値に基づいて決定されたフィルタとの組合せである。
【０１９８】
[0122]図７は、本開示の１つまたは複数の技法による、ピクチャ７２のブロック７０が２つ以上のクラスを割り当てられた第２の例を示すブロック図である。図７の例では、ブロック７０は２×２ブロックである。ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、ブロック７０をカバーする６×６ブロック（ブロック７４）に基づいて、ブロック７０のためのアクティビティレベルおよび方向値を決定し得る。６×６ブロックに基づくブロック７０のためのアクティビティレベルおよび方向値は、フィルタのセット中の特定のフィルタに対応し得る。このようにして、ビデオコーダは、ブロック７０のアクティビティレベルおよび方向値に基づいて第１のフィルタを決定し得る。さらに、ビデオコーダは、ブロック７０をカバーする４×４ブロック（ブロック７６）に基づいて、ブロック７０のためのアクティビティレベルおよび方向値を決定し得る。このようにして、ビデオコーダは、ブロック７６に基づくアクティビティレベルおよび方向値に基づいて第２のフィルタを決定し得る。さらに、ブロック７０の各それぞれのサンプルについて、ビデオコーダは、それぞれのサンプルに、混同関数（すなわち、複数のフィルタの関数）を適用し得る。それぞれのサンプルに適用される混同関数は、ブロック７４のアクティビティレベルおよび方向値に基づいて決定されたフィルタと、それぞれのサンプルを含んでいるブロック７６のアクティビティレベルおよび方向値に基づいて決定されたフィルタとの組合せである。ビデオコーダは、ピクチャの各２×２ブロックについてこれを繰り返し得る。
【０１９９】
[0123]いくつかの例では、現在ブロックのためのあるクラスインデックスは隣接ブロックから継承され得、他のクラスインデックスは、必要な場合、現在ブロックおよびそれの隣接ブロック内の再構築されたサンプルに基づいて導出され得る。たとえば、ビデオコーダは、現在ブロックの第１のクラスインデックスとして、隣接ブロック（たとえば、空間的に隣接するブロックまたは時間的に隣接するブロック）のクラスインデックスを使用し得、本開示の他の場所で説明されるクラスインデックス導出技法のうちの１つに従って（たとえば、式（７）〜式（１５）を使用して）、現在ブロックのための第２のクラスインデックスを計算し得る。したがって、そのような例では、現在ブロックに複数のクラスインデックスを割り当てることの一部として、ビデオコーダは、現在ブロックに隣接するブロックから、複数のクラスインデックスの第１のクラスインデックスを継承し得る。さらに、ビデオデコーダは、現在ブロック内の再構築されたサンプルに基づいて、複数のクラスインデックスの第２のクラスインデックスを導出し得る。
【０２００】
[0124]さらに、いくつかの例では、複数の導出されたクラスインデックスに関連付けられたフィルタが、ブロックをフィルタ処理するために一緒に使用され得る。たとえば、本開示の他の場所で（たとえば、式（７）で）説明された混同関数がさらに適用され得る。これらの例では、複数のクラスインデックスに関連付けられたフィルタを適用することの一部として、ビデオコーダは、現在ブロックに、現在ブロックに割り当てられた複数のクラスインデックスに関連付けられたフィルタの特定の関数を適用し得る。
【０２０１】
[0125]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオエンコーダは、各スライスについて、ＡＬＦがスライスのために有効にされるかどうかを示すためのフラグをシグナリングし得る。本開示は、このフラグをスライスレベルＡＬＦ制御フラグと呼ぶことがある。ＡＬＦがスライスのために有効にされる場合、ビデオエンコーダは、いくつかのクワッドツリースプリットされたブロックがＡＬＦを使用しないか否か、および他のブロックがＡＬＦを使用するか否かを示すための、別のフラグをシグナリングし得る。本開示は、このフラグをブロックレベルＡＬＦ制御フラグと呼ぶことがある。ブロックレベルＡＬＦ制御フラグがオンである（すなわち、ＬＣＵのクワッドツリー内のいくつかのブロックがＡＬＦを使用し、同じＬＣＵのクワッドツリー中の他のブロックがＡＬＦを使用しない）場合、ビデオエンコーダは、ＡＬＦを有効／無効にするためのフラグをシグナリングするために、クワッドツリーの深度値をさらにシグナリングする。対応するサイズは「ＡＬＦ制御サイズ」と称される。たとえば、ＬＣＵが１２８×１２８である場合、深度値０は１２８×１２８を示し、深度値１は６４×６４を示し、深度値２は３２×３２を示し、以下同様である。クワッドツリースプリットについて、ＣＵがＡＬＦ制御サイズよりも大きいかまたはそれに等しい場合、ビデオエンコーダは、ＣＵ中のＡＬＦを有効／無効にするためのフラグをシグナリングする。さもなければ、ＣＵがＡＬＦ制御サイズよりも小さい場合、いくつかの隣接ＣＵが、ＣＵ中のＡＬＦを有効／無効にするための１つのシグナリングされたフラグを共有するためにマージされる。
【０２０２】
[0126]いくつかの例では、クワッドツリーの深度に従ってＡＬＦを有効／無効にするためのフラグをシグナリングする代わりに、コード化スライス中でサポートされる他のツリータイプの深度をさらに考慮することが提案される。一例では、他のツリータイプは、バイナリツリー、対称中心側トリプルツリー（symmetric center-side triple tree）、非対称ツリー、および他のタイプのツリー構造のうちの１つを含み得る。バイナリツリーでは、ブロックは、２つの等しいサイズのサブブロックに垂直方向にまたは水平方向に区分され、それらの各々は、再帰的に同様の様式で区分され得る。対称中心側トリプルツリーでは、ブロックは、サイズが等しい外側サブブロックをもつ３つのサブブロックに水平方向にまたは垂直方向に区分され、サブブロックは、再帰的に同様の様式で区分され得る。非対称ツリーでは、ブロックは、等しくないサイズの２つまたはそれ以上のサブブロックに区分され、それらは、再帰的に同様の様式でさらに区分され得る。
【０２０３】
[0127]このようにして、ビデオエンコーダ２０は、ビデオデータの現在ピクチャの符号化表現を備えるビットストリーム中に、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素（たとえば、ＡＬＦを有効／無効にするためのフラグ）を含め得る。この例では、シンタックス要素は、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる。さらに、この例では、ビデオエンコーダ２０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、シンタックス要素に基づいてＡＬＦが有効にされたと決定したことに応答して、ビデオエンコーダ２０は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。フィルタを適用した後に、ビデオエンコーダ２０は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。
【０２０４】
[0128]同様に、ビデオデコーダ３０は、ビデオデータの現在ピクチャの符号化表現を備えるビットストリームから、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を取得し得る。この例では、シンタックス要素は、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる。さらに、この例では、ビデオデコーダ３０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、シンタックス要素に基づいて、ＡＬＦが有効にされたと決定したことに応答して、ビデオデコーダ３０は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。
【０２０５】
[0129]いくつかの例では、ＡＬＦを有効／無効にすることの制御は、コード化情報（たとえば、マージ／ＡＭＶＰモード、コード化ブロックフラグ（ｃｂｆ）、ブロックサイズなど）をさらに考慮し得、条件が満たされる（たとえば、ｃｂｆが０に等しい）場合、有効化／無効化フラグをシグナリングする必要がない。たとえば、ビデオエンコーダ２０は、ブロックがマージモードを使用してコーディングされるとき、ブロックのためのＡＬＦ有効化／無効化フラグをシグナリングしないことがあるが、ブロックがＡＭＶＰモードを使用してコーディングされるとき、ブロックのためのＡＬＦ有効化／無効化フラグをシグナリングし得る。別の例では、ビデオエンコーダ２０は、ブロックのサイズが特定のしきい値（たとえば、８×８、１６×１６など）よりも大きいかまたはそれに等しいとき、ブロックのためのＡＬＦ有効化／無効化フラグをシグナリングし得るが、ブロックのサイズが特定のしきい値よりも小さいとき、ブロックのための有効化／無効化フラグをシグナリングしない。
【０２０６】
[0130]このようにして、ビデオエンコーダ２０は、コード化情報に基づいて、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素をビットストリーム中に含めるべきかどうかを決定し得る。さらに、この例では、ビデオエンコーダ２０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、ＡＬＦが有効にされたと決定したことに応答して、ビデオエンコーダ２０は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。フィルタを適用した後に、ビデオエンコーダ２０は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。同様に、ビデオデコーダ３０は、コード化情報に基づいて、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素をビットストリームが含むかどうかを決定し得る。さらに、この例では、ビデオデコーダ３０は、ビデオデータの現在ピクチャのサンプルを再構築し得る。この例では、ＡＬＦが有効にされたと決定したことに応答して、ビデオデコーダ３０は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。ＡＬＦを適用することは、再構築されたピクチャのブロックに複数のフィルタの関数を適用することを備え得る。これらの例では、コード化情報は、マージ／高度動きベクトル予測（ＡＭＶＰ）モード、コード化ブロックフラグ（ＣＢＦ）、またはブロックサイズビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）のうちの少なくとも１つを含み得る。さらに、いくつかの例では、ビデオコーダは、シンタックス要素に基づいて、ＡＬＦが有効にされるかどうかを決定し得る。いくつかの例では、ビデオコーダは、コード化情報に基づいて、ＡＬＦが有効にされるかどうかを決定し得る。
【０２０７】
[0131]いくつかの例では、フィルタ処理プロセスは、除算演算なしに、シフト演算、乗算演算および和演算を用いて実装される。たとえば、フィルタのビット深度をＢＤFによって、重み付け係数のビット深度をＢＤwによって、再構築されたサンプルのビット深度をＢＤSによって示す。ＭａｘＢＤによって定義されるターゲット内部ビット深度を仮定する。フィルタ処理プロセスを実施するために以下の方法が適用され得る。
【０２０８】
[0132]重み付け係数は、現在ピクセルに適用される選択されたフィルタのうちの１つを用いて各内部サンプルに適用される。内部サンプルは、ｍ番目のフィルタを適用する値、すなわち、
【０２０９】
【数４５】
2019519982.tif 000048
【０２１０】
を示す。丸めまたはオフセットをもつ丸めが、フィルタ処理プロセスの最後に１回のみ呼び出される。この例では、式（７）は次のように書き直され得る。
【０２１１】
【数４６】
2019519982.tif 000049
【０２１２】
一例では、オフセットは、（１＜＜（ＢＤF−２＋ＢＤw））に等しく設定される。いくつかの実装形態では、この例は、（ＢＤF＋ＢＤw＋ＢＤs）がＭａｘＢＤよりも大きくないときのみ有効にされる。
【０２１３】
[0133]いくつかの例では、すべての重み付け係数および選択された複数のフィルタに基づいて内部フィルタが導出される。内部フィルタは、次いで、最終の再構築されたピクセルを導出するために現在ピクセルに適用される。丸めまたはオフセットをもつ丸めが、２回呼び出され得る。一例では、オフセットをもつ／もたない丸めは、選択された複数のフィルタを重み付けすることを用いて内部フィルタを導出するときに呼び出される。オフセットをもつ／もたない別の丸めが、フィルタ処理プロセスの最後に呼び出される。この例では、式（７）は次のように書き直され得る。
【０２１４】
【数４７】
2019519982.tif 000050
【０２１５】
一例では、Ｓ0は（ＢＤF＋ＢＤw＋ＢＤs−ＭａｘＢＤ）として定義され、Ｓ1は（ＢＤF−１）として定義される。一例では、Ｏ0は（Ｓ0＞＞１）に等しく設定され、Ｏ1は（Ｓ1＞＞１）に等しく設定される。いくつかの例では、この例は、（ＢＤF＋ＢＤw＋ＢＤs）がＭａｘＢＤよりも大きいときのみ有効にされる。
【０２１６】
[0134]図８は、本開示で説明される技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実施し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベース圧縮モードのいずれかを指すことがある。単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベース圧縮モードのいずれかを指すことがある。
【０２１７】
[0135]図８の例では、ビデオエンコーダ２０は、ビデオデータメモリ１３３と、区分ユニット１３５と、予測処理ユニット１４１と、加算器１５０と、変換処理ユニット１５２と、量子化ユニット１５４と、エントロピー符号化ユニット１５６とを含む。予測処理ユニット１４１は、動き推定ユニット（ＭＥＵ）１４２と、動き補償ユニット（ＭＣＵ）１４４と、イントラ予測ユニット１４６とを含む。ビデオブロック再構築のために、ビデオエンコーダ２０はまた、逆量子化ユニット１５８と、逆変換処理ユニット１６０と、加算器１６２と、ＡＬＦユニット１６４と、復号ピクチャバッファ（ＤＰＢ：decoded picture buffer）１６６とを含む。
【０２１８】
[0136]図８に示されているように、ビデオエンコーダ２０は、ビデオデータを受信し、受信されたビデオデータをビデオデータメモリ１３３に記憶する。ビデオデータメモリ１３３は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ１３３に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。ＤＰＢ１６６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１３３およびＤＰＢ１６６は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗性ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１３３およびＤＰＢ１６６は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ１３３は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０２１９】
[0137]区分ユニット１３５はビデオデータメモリ１３３からビデオデータを取り出し、ビデオデータをビデオブロックに区分する。この区分はまた、たとえば、ＬＣＵおよびＣＵのクワッドツリー構造に従って、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分を含み得る。ビデオエンコーダ２０は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに（および、場合によっては、タイルと呼ばれるビデオブロックのセットに）分割され得る。予測処理ユニット１４１は、誤差結果（たとえば、コーディングレートおよびひずみレベル）に基づいて現在ビデオブロックについて、複数のイントラコーディングモードのうちの１つ、または複数のインターコーディングモードのうちの１つなど、複数の可能なコーディングモードのうちの１つを選択し得る。予測処理ユニット１４１は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器１５０に与え、参照ピクチャとして使用するための符号化ブロックを再構築するために加算器１６２に与え得る。
【０２２０】
[0138]予測処理ユニット１４１内のイントラ予測ユニット１４６は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して現在ビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット１４１内の動き推定ユニット１４２および動き補償ユニット１４４は、時間圧縮を行うために、１つまたは複数の参照ピクチャ中の１つまたは複数の予測ブロックに対して現在ビデオブロックのインター予測コーディングを実施する。
【０２２１】
[0139]動き推定ユニット１４２は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをＰスライスまたはＢスライスとして指定し得る。動き推定ユニット１４２と動き補償ユニット１４４とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット１４２によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。
【０２２２】
[0140]予測ブロックは、絶対差分和（ＳＡＤ）、２乗差分和（ＳＳＤ）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのＰＵにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ２０は、ＤＰＢ１６６に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ２０は、参照ピクチャの１／４ピクセル位置、１／８ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット１４２は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
【０２２３】
[0141]動き推定ユニット１４２は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得、それらの参照ピクチャリストの各々は、ＤＰＢ１６６に記憶された１つまたは複数の参照ピクチャを識別する。動き推定ユニット１４２は、計算された動きベクトルをエントロピー符号化ユニット１５６と動き補償ユニット１４４とに送る。
【０２２４】
[0142]動き補償ユニット１４４によって実施される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実施することを伴い得る。現在ビデオブロックのＰＵのための動きベクトルを受信すると、動き補償ユニット１４４は、動きベクトルが参照ピクチャリストのうちの１つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ２０は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器１５０は、この減算演算を実施する１つまたは複数の構成要素を表す。動き補償ユニット１４４はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ３０が使用するためのビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【０２２５】
[0143]予測処理ユニット１４１が、イントラ予測またはインター予測のいずれかを介して、現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ２０は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、１つまたは複数のＴＵ中に含まれ、変換処理ユニット１５２に適用され得る。変換処理ユニット１５２は、離散コサイン変換（ＤＣＴ：discrete cosine transform）または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット１５２は、残差ビデオデータをピクセル領域から周波数領域などの変換領域にコンバートし得る。
【０２２６】
[0144]変換処理ユニット１５２は、得られた変換係数を量子化ユニット１５４に送り得る。量子化ユニット１５４は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット１５４は、次いで、量子化された変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット１５６が走査を実施し得る。
【０２２７】
[0145]量子化の後に、エントロピー符号化ユニット１５６は、量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット１５６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディングあるいは別のエントロピー符号化方法または技法を実施し得る。エントロピー符号化ユニット１５６によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ３０に送信されるか、あるいはビデオデコーダ３０が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット１５６はまた、コーディングされている現在ビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
【０２２８】
[0146]逆量子化ユニット１５８および逆変換処理ユニット１６０は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット１４４は、残差ブロックを参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット１４４はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに１つまたは複数の補間フィルタを適用し得る。加算器１６２は、再構築されたブロックを生成するために、再構築された残差ブロックを、動き補償ユニット１４４によって生成された動き補償予測ブロックに加算する。言い換えれば、加算器１６２は、再構築されたブロックのサンプルを再構築するために、動き補償予測ブロックの対応するサンプルに、再構築された残差ブロックのサンプルを加算する。
【０２２９】
[0147]ＡＬＦユニット１６４は、再構築されたブロック（たとえば、加算器１６２の出力）をフィルタ処理し、参照ブロックとして使用するために、フィルタ処理された再構築されたブロックをＤＰＢ１６６に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット１４２および動き補償ユニット１４４によって参照ブロックとして使用され得る。図８には明示的に示されていないが、ビデオエンコーダ２０は、デブロックフィルタ、サンプル適応オフセット（ＳＡＯ）フィルタ、または他のタイプのループフィルタなどの、追加のフィルタを含み得る。デブロックフィルタは、たとえば、再構築されたビデオからブロッキネスアーティファクトを除去するために、フィルタブロック境界にデブロッキングフィルタ処理を適用し得る。ＳＡＯフィルタは、全体的コーディング品質を改善するために、再構築されたピクセル値にオフセットを適用し得る。いくつかの実装形態では、ＳＡＯは、ＡＬＦフィルタ処理の特殊な場合または特殊モードであり得る。（ループ内またはループ後の）追加のループフィルタも使用され得る。
【０２３０】
[0148]ＡＬＦユニット１６４は、単独でまたはビデオエンコーダ２０の他の構成要素とともに、特許請求の範囲セクションならびに他の場所で説明される技法を含む本開示で説明される様々な技法を実施するように構成され得る。たとえば、ビデオエンコーダ２０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャのサンプルを再構築し得る。さらに、ＡＬＦユニット１６４は、現在ピクチャの現在ブロックに、複数のフィルタの特定の関数を適用し得る。現在ブロックは、現在ピクチャの再構築されたサンプルを備える。現在ブロックに特定の関数を適用することは、現在ブロックの各再構築されたサンプルに特定の関数を適用することを備え得る。いくつかの例では、ＡＬＦユニット１６４は、現在ピクチャの現在ブロックに複数のクラスインデックスを割り当て、複数のクラスインデックスの各それぞれのクラスインデックスは、複数のフィルタ中のそれぞれのフィルタに関連付けられる。さらに、現在ブロックに特定の関数を適用することの一部として、ＡＬＦユニット１６４は、現在ブロックの再構築されたサンプルに、現在ブロックに割り当てられた複数のクラスインデックスに関連付けられたフィルタを適用し得る。フィルタを適用した後に、予測処理ユニット１４１は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。
【０２３１】
[0149]いくつかの例では、ビデオエンコーダ２０は、ビデオデータの現在ピクチャの符号化表現を備えるビットストリーム中に、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を含み得、ここにおいて、シンタックス要素は、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる。ＡＬＦは複数のフィルタの関数であり得る。この例では、ビデオエンコーダ２０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャのサンプルを再構築し得る。さらに、（たとえば、シンタックス要素に基づいて）ＡＬＦが有効にされたと決定したことに応答して、ＡＬＦユニット１６４は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。フィルタを適用した後に、予測処理ユニット１４１は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。
【０２３２】
[0150]いくつかの例では、ビデオエンコーダ２０は、コード化情報に基づいて、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素をビットストリーム中に含めるべきかどうかを決定し得る。ビデオエンコーダ２０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャのサンプルを再構築し得る。ＡＬＦが有効にされたと決定したことに応答して、ＡＬＦユニット１６４は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。フィルタを適用した後に、予測処理ユニット１４１は、ビデオデータの別のピクチャを符号化する際の参照ピクチャとして現在ピクチャを使用し得る。
【０２３３】
[0151]図９は、本開示で説明される技法を実装し得る例示的なビデオデコーダ３０を示すブロック図である。図９の例では、ビデオデコーダ３０は、ビデオデータメモリ１７８と、エントロピー復号ユニット１８０と、予測処理ユニット１８１と、逆量子化ユニット１８６と、逆変換処理ユニット１８８と、加算器１９０と、ＤＰＢ１９４とを含む。予測処理ユニット１８１は、動き補償ユニット１８２とイントラ予測ユニット１８４とを含む。ビデオデコーダ３０は、いくつかの例では、図８からのビデオエンコーダ２０に関して説明された符号化パスとは概して逆の復号パスを実施し得る。
【０２３４】
[0152]復号プロセス中に、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化ビデオスライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビットストリームを受信する。ビデオデコーダ３０は、受信された符号化ビデオビットストリームをビデオデータメモリ１７８に記憶する。ビデオデータメモリ１７８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ１７８に記憶されたビデオデータは、たとえば、リンク１６を介して、記憶媒体２８から、またはカメラなどのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１７８は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ（ＣＰＢ）を形成し得る。ＤＰＢ１９４は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１７８およびＤＰＢ１９４は、ＤＲＡＭ、ＳＤＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１７８およびＤＰＢ１９４は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ１７８は、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０２３５】
[0153]ビデオデコーダ３０のエントロピー復号ユニット１８０は、量子化された係数、動きベクトル、および他のシンタックス要素を生成するために、ビデオデータメモリ１７８に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット１８０は、動きベクトルと他のシンタックス要素とを予測処理ユニット１８１にフォワーディングする。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。
【０２３６】
[0154]ビデオスライスがイントラコード化（Ｉ）スライスとしてコーディングされたとき、予測処理ユニット１８１のイントラ予測ユニット１８４は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化スライス（たとえば、ＢスライスまたはＰスライス）としてコーディングされたとき、予測処理ユニット１８１の動き補償ユニット１８２は、エントロピー復号ユニット１８０から受信された動きベクトルおよび他のシンタックス要素に基づいて現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、ＤＰＢ１９４に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト０とリスト１とを構築し得る。
【０２３７】
[0155]動き補償ユニット１８２は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット１８２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（たとえば、イントラまたはインター予測）と、インター予測スライスタイプ（たとえば、ＢスライスまたはＰスライス）と、スライスのための参照ピクチャリストのうちの１つまたは複数のための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【０２３８】
[0156]動き補償ユニット１８２はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット１８２は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット１８２は、受信されたシンタックス要素からビデオエンコーダ２０によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
【０２３９】
[0157]逆量子化ユニット１８６は、ビットストリーム中で与えられ、エントロピー復号ユニット１８０によって復号された量子化された変換係数を逆量子化、すなわち、量子化解除（de-quantize）する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ２０によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット１８８は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【０２４０】
[0158]予測処理ユニット１８１が、たとえば、イントラまたはインター予測を使用して現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ３０は、逆変換処理ユニット１８８からの残差ブロックを動き補償ユニット１８２によって生成された対応する予測ブロックと加算することによって、再構築されたビデオブロックを形成し得る。言い換えれば、ビデオデコーダ３０は、ピクチャのビデオブロックのサンプルを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。加算器１９０は、この加算演算を実施する１つまたは複数の構成要素を表す。ＡＬＦユニット１９２は、たとえば、本開示で説明されるＡＬＦ技法のうちの１つまたは複数を使用して、再構築されたビデオブロックをフィルタ処理する。
【０２４１】
[0159]図９には明示的に示されていないが、ビデオデコーダ３０はまた、デブロッキングフィルタ、ＳＡＯフィルタ、または他のタイプのフィルタのうちの１つまたは複数を含み得る。ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために、（コーディングループ中またはコーディングループ後のいずれかの）他のループフィルタも使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶するＤＰＢ１９４に記憶される。ＤＰＢ１９４は、図１のディスプレイデバイス３２などのディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する追加のメモリの一部であるか、または追加のメモリとは別個であり得る。
【０２４２】
[0160]ＡＬＦユニット１９２は、単独でまたはビデオデコーダ３０の他の構成要素とともに、特許請求の範囲セクションならびに他のセクションで説明される技法を含む本開示で説明される様々な技法を実施するように構成され得る。
【０２４３】
[0161]たとえば、ビデオデコーダ３０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャのサンプルを再構築し得る。さらに、この例では、現在ピクチャのサンプルを再構築した後に、ビデオデコーダ３０は、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用し得る。たとえば、ＡＬＦユニット１９２は、現在ピクチャの現在ブロックに複数のクラスインデックスを割り当て得、複数のクラスインデックスの各それぞれのクラスインデックスは、複数のフィルタ中のそれぞれのフィルタに関連付けられる。さらに、この例では、ＡＬＦユニット１９２は、現在ブロックの再構築されたサンプルに、現在ブロックに割り当てられた複数のクラスインデックスに関連付けられたフィルタを適用し得る。
【０２４４】
[0162]いくつかの例では、ビデオデコーダ３０は、ビデオデータの現在ピクチャの符号化表現を備えるビットストリームから、ＡＬＦが有効にされるのか無効にされるのかを示すシンタックス要素を取得し得、ここにおいて、シンタックス要素は、クワッドツリー以外のツリーのタイプの深度に従ってシグナリングされる。ＡＬＦは複数のフィルタの特定の関数であり得る。さらに、ビデオデコーダ３０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャのサンプルを再構築し得る。シンタックス要素に基づいて、ＡＬＦが有効にされたと決定したことに応答して、ＡＬＦユニット１９２は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。
【０２４５】
[0163]いくつかの例では、ＡＬＦユニット１９２は、コード化情報に基づいて、適応ループフィルタ（ＡＬＦ）が有効にされるのか無効にされるのかを示すシンタックス要素を、ビットストリームが含むかどうかを決定し得る。さらに、ビデオデコーダ３０は、本開示の他の場所で説明されるように、ビデオデータの現在ピクチャを再構築し得る。ＡＬＦが有効にされたと決定したことに応答して、ＡＬＦユニット１９２は、現在ピクチャの再構築されたサンプルにＡＬＦを適用し得る。
【０２４６】
[0164]図１０は、本開示の１つまたは複数の技法による、ビデオコーダの例示的な動作を示すフローチャートである。本開示のフローチャートは例として与えられる。他の例では、動作は、より多数の、より少数の、または異なるアクションを含み得る。その上、アクションは、異なる順序で実施され得る。
【０２４７】
[0165]図１０の例では、ビデオコーダ（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０）を備えるコンピューティングデバイスは、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築する（２５０）。たとえば、ビデオコーダは、現在ピクチャの１つまたは複数のＣＴＢを再構築し得る。現在ピクチャの１つまたは複数のブロックは、現在ピクチャの再構築されたサンプルを備える。したがって、１つまたは複数のブロックを再構築することは、現在ピクチャのサンプルを再構築することを備える。たとえば、ビデオコーダが図８に示されているビデオエンコーダである例では、逆量子化ユニット１５８、逆変換処理ユニット１６０、および加算器１６２は、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築し得る。ビデオコーダが図９に示されているビデオデコーダである例では、予測処理ユニット１８１、逆量子化ユニット１８７、逆変換処理ユニット１８８、および加算器１９０は、ビデオデータの現在ピクチャの１つまたは複数のブロックを再構築し得る。
【０２４８】
[0166]現在ピクチャの１つまたは複数のブロックを再構築した後に、ビデオコーダは、現在ピクチャの現在ブロックに複数のフィルタの特定の関数を適用する（２５２）。現在ブロックは、現在ピクチャを再構築するプロセスにおいて使用される１つまたは複数のブロックに、サイズまたは形状において必ずしも対応するとは限らない。そうではなく、ここで使用される現在ブロックは、現在ピクチャを再構築するプロセスにおいて使用される１つまたは複数のブロック中にある再構築されたサンプルを備えるにすぎない。ビデオコーダが図８に示されているビデオエンコーダであるいくつかの例では、ＡＬＦユニット１６４は、現在ブロックに複数のフィルタの特定の関数を適用し得る。さらに、ビデオコーダがビデオエンコーダである事例では、ビデオエンコーダは、他のピクチャを符号化するための参照ピクチャとして、フィルタ処理されたピクチャを使用し得る。ビデオコーダが図９に示されているビデオデコーダである例では、ＡＬＦユニット１９２は、現在ブロックに複数のフィルタの特定の関数を適用し得る。さらに、ビデオコーダがビデオデコーダである例では、ビデオデコーダは、フィルタ処理されたピクチャを出力し得る。ビデオコーダは、本開示の他の場所で与えられる例のいずれかに従って、複数のフィルタの特定の関数を適用し得る。たとえば、ビデオコーダは、複数のフィルタの線形関数を適用し得る。いくつかの例では、複数のフィルタは、テンプレートによって定義される複数の隣接ブロックの各それぞれの隣接ブロックについて、それぞれの隣接ブロックに関連付けられたそれぞれのフィルタを含む。
【０２４９】
[0167]１つまたは複数の例では、説明された関数は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、関数は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２５０】
[0168]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、キャッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２５１】
[0169]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサを含む、固定機能および／またはプログラマブル処理回路によって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。したがって、「プロセッサ」は処理回路を備える。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０２５２】
[0170]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ得るか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０２５３】
[0171]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。
【図１】
2019519982.tif 000051
【図２】
2019519982.tif 000052
【図３】
2019519982.tif 000053
【図４】
2019519982.tif 000054
【図５】
2019519982.tif 000055
【図６】
2019519982.tif 000056
【図７】
2019519982.tif 000057
【図８】
2019519982.tif 000058
【図９】
2019519982.tif 000059
【図１０】
2019519982.tif 000060
【国際調査報告】
2019519982.tif 000061
2019519982.tif 000062
2019519982.tif 000063