(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-29
(54)【発明の名称】適応ループフィルタのためのクリッピング値算出の簡易化
(51)【国際特許分類】
H04N 19/82 20140101AFI20220722BHJP
H04N 19/46 20140101ALI20220722BHJP
H04N 19/117 20140101ALI20220722BHJP
H04N 19/176 20140101ALI20220722BHJP
H04N 19/136 20140101ALI20220722BHJP
【FI】
H04N19/82
H04N19/46
H04N19/117
H04N19/176
H04N19/136
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021568791
(86)(22)【出願日】2020-05-20
(85)【翻訳文提出日】2021-11-22
(86)【国際出願番号】 US2020033711
(87)【国際公開番号】W WO2020236878
(87)【国際公開日】2020-11-26
(32)【優先日】2019-05-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-05-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ナン・フ
(72)【発明者】
【氏名】ヴァディム・セレジン
(72)【発明者】
【氏名】マルタ・カルツェヴィッツ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MC11
5C159ME01
5C159PP04
5C159RC11
5C159SS26
5C159TA69
5C159TB08
5C159TC02
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
適応ループフィルタリングのためのクリッピング値算出の簡易化のためのシステム、方法、およびコンピュータ可読媒体が提供される。例示的方法は、1つまたは複数のピクチャを含むビデオデータを取得するステップと、1つまたは複数のピクチャからピクチャのブロックを取得するステップと、フィルタ用のクリッピング値を判断するステップであって、クリッピング値は、ピクチャ中のルーマ成分および/またはピクチャ中のクロマ成分に対応し、各クリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ピクチャからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ステップと、ブロックにフィルタを適用するステップとを含み得る。
【特許請求の範囲】
【請求項1】
ビデオデータを処理する方法であって、
1つまたは複数のピクチャを含むビデオデータを取得するステップと、
前記1つまたは複数のピクチャからピクチャのブロックを取得するステップと、
少なくとも1つのフィルタ用のクリッピング値を判断するステップであって、前記クリッピング値は、前記ブロックのルーマ成分および前記ブロックのクロマ成分のうちの少なくとも1つに対応し、前記複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、前記第2の整数は、前記ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ステップと、
前記少なくとも1つのフィルタを前記ブロックに適用するステップとを含む方法。
【請求項2】
前記少なくとも1つのフィルタは適応ループフィルタを含む、請求項1に記載の方法。
【請求項3】
前記クリッピング値は、前記ルーマ成分用のクリッピング値の第1のセットおよび前記クロマ成分用のクリッピング値の第2のセットを含み、前記ルーマ成分用のクリッピング値の前記第1のセットとクロマ成分用のクリッピング値の前記第2のセットは両方とも、前記第1の整数を前記第2の整数だけ左シフトすることによって判断される、請求項1に記載の方法。
【請求項4】
前記第1の整数は1であり、前記第1の整数を前記第2の整数だけ左シフトすることは、2を、前記第2の整数を含む指数の冪乗まで累乗することを含む、請求項1に記載の方法。
【請求項5】
前記クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応し、前記クリッピングインデックステーブル中の前記フィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、前記ピクチャ内の異なる位置に対応する、請求項1に記載の方法。
【請求項6】
前記オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含み、前記オフセット値は、前記クリッピングインデックス値に基づいて、前記複数の所定のオフセット値から判断される、請求項1に記載の方法。
【請求項7】
前記少なくとも1つのフィルタ用の前記クリッピング値を判断することは、前記ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含み、各対応するクリッピング値は、前記複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、前記第1の整数を、前記特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され、前記特定の整数は、前記特定のサンプルについての前記ビット深度値から、前記複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含む、請求項6に記載の方法。
【請求項8】
前記特定のオフセット値は、前記特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、前記複数の所定のオフセット値から判断される、請求項7に記載の方法。
【請求項9】
前記少なくとも1つのフィルタ用の前記クリッピング値は、前記ルーマ成分用の1つまたは複数のルーマクリッピング値および前記クロマ成分用の1つまたは複数のクロマクリッピング値を含み、前記1つまたは複数のルーマクリッピング値は、前記第1の整数を第3の整数だけ左シフトすることによって判断され、前記第3の整数は、前記ピクチャからのルーマサンプルについての前記ビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、前記1つまたは複数のクロマクリッピング値は、前記第1の整数を第4の整数だけ左シフトすることによって判断され、前記第4の整数は、前記ピクチャからのクロマサンプルについての前記ビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む、請求項1に記載の方法。
【請求項10】
前記少なくとも1つのフィルタは5×5適応ループフィルタおよび7×7適応ループフィルタを含み、前記少なくとも1つのフィルタを前記ブロックに適用することは、前記クロマ成分に前記5×5適応ループフィルタを適用することと、前記ルーマ成分に前記7×7適応ループフィルタを適用することとを含む、請求項1に記載の方法。
【請求項11】
前記1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成するステップをさらに含む、請求項1に記載の方法。
【請求項12】
前記符号化ビデオビットストリームは、前記ビデオデータと、前記少なくとも1つのフィルタを前記ブロックに適用した結果とに基づいて生成される、請求項11に記載の方法。
【請求項13】
前記符号化ビデオビットストリームを復号デバイスへ送るステップをさらに含み、前記符号化ビデオビットストリームは、シグナリング情報とともに送られ、前記シグナリング情報は、前記オフセット値、前記クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、請求項11に記載の方法。
【請求項14】
前記符号化ビデオビットストリームを記憶するステップをさらに含む、請求項11に記載の方法。
【請求項15】
前記1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得するステップと、
前記符号化ビデオビットストリームに関連付けられたシグナリング情報を識別するステップであって、前記シグナリング情報は、前記オフセット値、前記クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、ステップと、
前記符号化ビデオビットストリームからの前記ピクチャの前記ブロックを復号するステップとをさらに含む、請求項1に記載の方法。
【請求項16】
前記符号化ビデオビットストリームからの前記ピクチャの前記ブロックを復号することは、前記ピクチャの前記ブロックを再構築することを含み、前記少なくとも1つのフィルタを適用することは、前記再構築されたブロックに、前記少なくとも1つのフィルタを適用することを含む、請求項15に記載の方法。
【請求項17】
メモリと、
前記メモリに結合された1つまたは複数のプロセッサとを備える装置であって、前記1つまたは複数のプロセッサは、
1つまたは複数のピクチャを含むビデオデータを取得することと、
前記1つまたは複数のピクチャからピクチャのブロックを取得することと、
少なくとも1つのフィルタ用のクリッピング値を判断することであって、前記クリッピング値は、前記ブロックのルーマ成分および前記ブロックのクロマ成分のうちの少なくとも1つに対応し、前記複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、前記第2の整数は、前記ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、
前記少なくとも1つのフィルタを前記ブロックに適用することとを行うように構成される、装置。
【請求項18】
前記少なくとも1つのフィルタは適応ループフィルタを含む、請求項17に記載の装置。
【請求項19】
前記クリッピング値は、前記ルーマ成分用のクリッピング値の第1のセットおよび前記クロマ成分用のクリッピング値の第2のセットを含み、前記ルーマ成分用のクリッピング値の前記第1のセットとクロマ成分用のクリッピング値の前記第2のセットは両方とも、前記第1の整数を前記第2の整数だけ左シフトすることによって判断される、請求項17に記載の装置。
【請求項20】
前記第1の整数は1であり、前記第1の整数を前記第2の整数だけ左シフトすることは、2を、前記第2の整数を含む指数の冪乗まで累乗することを含む、請求項17に記載の装置。
【請求項21】
前記クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応し、前記クリッピングインデックステーブル中の前記フィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、前記ピクチャ内の異なる位置に対応する、請求項17に記載の装置。
【請求項22】
前記オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含み、前記オフセット値は、前記クリッピングインデックス値に基づいて、前記複数の所定のオフセット値から判断される、請求項17に記載の装置。
【請求項23】
前記少なくとも1つのフィルタ用の前記クリッピング値を判断することは、前記ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含み、各対応するクリッピング値は、前記複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、前記第1の整数を、前記特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され、前記特定の整数は、前記特定のサンプルについての前記ビット深度値から、前記複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含む、請求項22に記載の装置。
【請求項24】
前記特定のオフセット値は、前記特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、前記複数の所定のオフセット値から判断される、請求項23に記載の装置。
【請求項25】
前記少なくとも1つのフィルタ用の前記クリッピング値は、前記ルーマ成分用の1つまたは複数のルーマクリッピング値および前記クロマ成分用の1つまたは複数のクロマクリッピング値を含み、前記1つまたは複数のルーマクリッピング値は、前記第1の整数を第3の整数だけ左シフトすることによって判断され、前記第3の整数は、前記ピクチャからのルーマサンプルについての前記ビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、前記1つまたは複数のクロマクリッピング値は、前記第1の整数を第4の整数だけ左シフトすることによって判断され、前記第4の整数は、前記ピクチャからのクロマサンプルについての前記ビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む、請求項17に記載の装置。
【請求項26】
前記少なくとも1つのフィルタは5×5適応ループフィルタおよび7×7適応ループフィルタを含み、前記少なくとも1つのフィルタを前記ブロックに適用することは、前記クロマ成分に前記5×5適応ループフィルタを適用することと、前記ルーマ成分に前記7×7適応ループフィルタを適用することとを含む、請求項17に記載の装置。
【請求項27】
前記1つまたは複数のプロセッサは、
前記1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成するように構成される、請求項17に記載の装置。
【請求項28】
前記符号化ビデオビットストリームは、前記ビデオデータと、前記少なくとも1つのフィルタを前記ブロックに適用した結果とに基づいて生成される、請求項27に記載の装置。
【請求項29】
前記1つまたは複数のプロセッサは、
前記符号化ビデオビットストリームを復号デバイスへ送るように構成され、前記符号化ビデオビットストリームは、シグナリング情報とともに送られ、前記シグナリング情報は、前記オフセット値、前記クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、請求項27に記載の装置。
【請求項30】
前記1つまたは複数のプロセッサは、
前記符号化ビデオビットストリームを記憶するように構成される、請求項27に記載の装置。
【請求項31】
1つまたは複数のプロセッサが前記メモリに結合され、前記1つまたは複数のプロセッサは、
前記1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得することと、
前記符号化ビデオビットストリームに関連付けられたシグナリング情報を識別することであって、前記シグナリング情報は、前記オフセット値、前記クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、ことと、
前記符号化ビデオビットストリームからの前記ブロックを復号することとを行うように構成される、請求項17に記載の装置。
【請求項32】
前記符号化ビデオビットストリームからの前記ピクチャの前記ブロックを復号することは、前記ピクチャの前記ブロックを再構築することを含み、前記少なくとも1つのフィルタを適用することは、前記再構築されたブロックに、前記少なくとも1つのフィルタを適用することを含む、請求項31に記載の装置。
【請求項33】
前記装置はモバイルコンピューティングデバイスである、請求項17に記載の装置。
【請求項34】
記憶された命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
1つまたは複数のピクチャを含むビデオデータを取得することと、
前記1つまたは複数のピクチャからピクチャのブロックを取得することと、
少なくとも1つのフィルタ用のクリッピング値を判断することであって、前記クリッピング値は、前記ブロックのルーマ成分および前記ブロックのクロマ成分のうちの少なくとも1つに対応し、前記複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、前記第2の整数は、前記ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、
前記少なくとも1つのフィルタを前記ブロックに適用することとを行わせる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、ビデオコーディングに関する。いくつかの例では、本開示の態様は、ビデオデータを符号化および/または復号するために使われる適応ループフィルタおよび/または他のフィルタのためのクリッピング値算出を簡易化することに関する。
【背景技術】
【0002】
多くのタイプのコンピューティングデバイスおよびシステムは、ビデオデータが消費のために処理および出力されることを可能にする。デジタルビデオデータは、部分的には消費者およびビデオ提供者からの多大な需要によって駆動される大量のデータを含む。たとえば、ビデオデータの消費者は、高い忠実度、解像度、フレームレートなどを有する高品質のビデオを所望する。そのような要求を満たすのに通常は必要な大量のビデオデータが、通信ネットワーク、およびそのようなビデオデータを処理および記憶するデバイスに大きな負担をかける。概して、様々なビデオコーディング技法が、ビデオデータを圧縮するのに使われ、そうすることによって、通信ネットワークおよびデバイス上での、そのようなビデオデータの帯域幅および記憶負担を制限し得る。
【0003】
ビデオコーディングは、1つまたは複数のビデオコーディング規格に従って実施され得る。例示的ビデオコーディング規格は、特に、多用途ビデオコーディング(VVC)、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、ムービングピクチャエキスパートグループ(MPEG)コーディングを含む。ビデオコーディングは、概して、ビデオ画像またはシーケンスの中に存在する冗長性を利用する予測方法(たとえば、インター予測、イントラ予測など)を使用する。ビデオコーディング技法は、そのような冗長性を、ビデオ品質の劣化を回避するかまたは最小限に抑えながら、より低いビットレートを使用する形態にビデオデータを圧縮することに使い得る。
【発明の概要】
【発明が解決しようとする課題】
【0004】
絶えず進化するビデオサービスが利用可能になって、より良好なコーディング効率を有する符号化技法が必要とされる。
【課題を解決するための手段】
【0005】
ビデオコーディングにおいて使われる適応ループフィルタ用のクリッピング値を効果的および効率的に算出するためのシステム、方法、およびコンピュータ可読媒体について開示する。少なくとも1つの例によると、適応ループフィルタ用のクリッピング値の、簡易化された効率的な算出のための方法が提供される。この方法は、1つまたは複数のピクチャを含むビデオデータを取得するステップと、1つまたは複数のピクチャからピクチャのブロックを取得するステップと、少なくとも1つのフィルタ用のクリッピング値を判断するステップであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ステップと、少なくとも1つのフィルタをブロックに適用するステップとを含み得る。
【0006】
少なくとも1つの例によると、適応ループフィルタ用のクリッピング値の、簡易化された効率的な算出のための装置が提供される。装置は、メモリと、メモリに結合された1つまたは複数のプロセッサとを含むことができ、1つまたは複数のプロセッサは、1つまたは複数のピクチャを含むビデオデータを取得することと、1つまたは複数のピクチャからピクチャのブロックを取得することと、少なくとも1つのフィルタ用のクリッピング値を判断することであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、少なくとも1つのフィルタをブロックに適用することとを行うように構成される。
【0007】
少なくとも1つの例によると、適応ループフィルタ用のクリッピング値の、簡易化された効率的な算出のための別の装置が提供される。装置は、1つまたは複数のピクチャを含むビデオデータを取得するための手段と、1つまたは複数のピクチャからピクチャのブロックを取得するための手段と、少なくとも1つのフィルタ用のクリッピング値を判断するための手段であって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、手段と、少なくとも1つのフィルタをブロックに適用するための手段とを含み得る。
【0008】
少なくとも1つの例によると、適応ループフィルタ用のクリッピング値の、簡易化された効率的な算出のための非一時的コンピュータ可読記憶媒体が提供される。非一時的コンピュータ可読記憶媒体は、その上に記憶された命令を含むことができ、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、1つまたは複数のピクチャを含むビデオデータを取得することと、1つまたは複数のピクチャからピクチャのブロックを取得することと、少なくとも1つのフィルタ用のクリッピング値を判断することであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、再構築されたブロックに、少なくとも1つのフィルタを適用することとを行わせる。
【0009】
いくつかの態様では、上述した方法、非一時的コンピュータ可読媒体、および装置における少なくとも1つのフィルタは、適応ループフィルタを含み得る。その上、いくつかの例では、クリッピング値は、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットを含むことができ、ルーマ成分用のクリッピング値の第1のセットとクロマ成分用のクリッピング値の第2のセットは両方とも、第1の整数を第2の整数だけ左シフトすることによって判断される。
【0010】
場合によっては、第1の整数は1であり、第1の整数を第2の整数だけ左シフトすることは、2を、第2の整数を含む指数の冪乗まで累乗することを含み得る。
【0011】
いくつかの態様では、クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応してよく、クリッピングインデックステーブル中のフィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、ピクチャ内の異なる位置に対応してよい。
【0012】
いくつかの例では、オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含んでよく、オフセット値は、クリッピングインデックス値に基づいて、複数の所定のオフセット値から判断されてよい。
【0013】
いくつかの態様では、少なくとも1つのフィルタ用のクリッピング値を判断することは、ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含んでよく、各対応するクリッピング値は、複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、第1の整数を、特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断される。いくつかの例では、特定の整数は、特定のサンプルについてのビット深度値から、複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含み得る。場合によっては、特定のオフセット値は、特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、複数の所定のオフセット値から判断され得る。
【0014】
いくつかの態様では、少なくとも1つのフィルタ用のクリッピング値は、ルーマ成分用の1つまたは複数のルーマクリッピング値およびクロマ成分用の1つまたは複数のクロマクリッピング値を含んでよく、1つまたは複数のルーマクリッピング値は、第1の整数を第3の整数だけ左シフトすることによって判断され、第3の整数は、ピクチャからのルーマサンプルについてのビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、1つまたは複数のクロマクリッピング値は、第1の整数を第4の整数だけ左シフトすることによって判断され、第4の整数は、ピクチャからのクロマサンプルについてのビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む。
【0015】
場合によっては、少なくとも1つのフィルタは、5×5適応ループフィルタおよび7×7適応ループフィルタを含んでよく、再構築されたブロックに、少なくとも1つのフィルタを適用することは、クロマ成分に5×5適応ループフィルタを適用することと、ルーマ成分に7×7適応ループフィルタを適用することとを含み得る。
【0016】
場合によっては、少なくとも1つのフィルタ用のクリッピング値を判断することは、少なくとも1つのフィルタ用のフィルタ係数値を判断することを含み得る。
【0017】
いくつかの態様では、上述した方法、非一時的コンピュータ可読媒体、および装置は、1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成することを含み得る。いくつかの例では、符号化ビデオビットストリームは、ビデオデータと、少なくとも1つのフィルタをブロックに適用した結果とに基づいて生成され得る。場合によっては、上述した方法、非一時的コンピュータ可読媒体、および装置は、符号化ビデオビットストリームを復号デバイスへ送ることを含んでよく、符号化ビデオビットストリームは、シグナリング情報とともに送られ、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および/または適応ループフィルタフラグを含む。いくつかの態様では、上述した方法、非一時的コンピュータ可読媒体、および装置は、符号化ビデオビットストリームを記憶することを含み得る。
【0018】
いくつかの態様では、上述した方法、非一時的コンピュータ可読媒体、および装置は、1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得することと、符号化ビデオビットストリームに関連付けられたシグナリング情報を識別することであって、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および/または適応ループフィルタフラグを含む、ことと、符号化ビデオビットストリームからのブロックを復号することとを含み得る。
【0019】
いくつかの態様では、符号化ビデオビットストリームからのピクチャのブロックを復号することは、ピクチャのブロックを再構築することを含んでよく、少なくとも1つのフィルタを適用することは、再構築されたブロックに、少なくとも1つのフィルタを適用することを含んでよい。
【0020】
いくつかの例では、上述した装置は、1つまたは複数のセンサーを含み得る。いくつかの態様では、上述した装置は、モバイルデバイスを含み得る。いくつかの例では、上述した装置は、モバイルフォン、装着可能デバイス、ディスプレイデバイス、モバイルコンピュータ、頭部装着デバイス、および/またはカメラを含み得る。
【0021】
本概要は、特許請求される主題の主要または不可欠な特徴を特定するものではなく、特許請求される主題の範囲を決定するために単独で使用されるものでもない。主題は、本特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分への参照によって理解されるべきである。
【0022】
上記のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付図面を参照するとより明らかになろう。
【0023】
本開示の開示される、および他の利点および特徴が得られ得る様式を記載するために、上述した原理のより具体的な記述が、添付の図面に示される、本開示の特定の実施形態への参照によって行われる。これらの図面は、本開示の例示的実施形態のみを示し、その範囲を限定するものと見なされるべきでないことを理解した上で、本明細書における原理が、図面を使用して、追加の特異性および詳細とともに記載され、説明される。
【図面の簡単な説明】
【0024】
【
図1】本開示のいくつかの例による符号化デバイスおよび復号デバイスの例を示すブロック図である。
【
図2A】本開示のいくつかの例による、クリッピングを用いる適応ループフィルタ(ALF)を入力フレームに適用するための例示的システムを示す簡略図である。
【
図2B】本開示のいくつかの例による、符号化デバイスによって実装される、クリッピングを用いるALFフィルタリングのための例示的方法のフローチャートである。
【
図2C】本開示のいくつかの例による、復号デバイスによって実装される、クリッピングを用いるALFフィルタリングのための例示的方法を示すフローチャートである。
【
図3A】本開示のいくつかの例によるクロマフィルタ構成の例を示す図である。
【
図3B】本開示のいくつかの例によるルーマフィルタ構成の例を示す図である。
【
図4A】本開示のいくつかの例による、幾何変換なしの例示的フィルタを示す図である。
【
図4B】本開示のいくつかの例による、異なるジオメトリ変換ありの例示的フィルタを示す図である。
【
図4C】本開示のいくつかの例による、異なるジオメトリ変換ありの例示的フィルタを示す図である。
【
図4D】本開示のいくつかの例による、異なるジオメトリ変換ありの例示的フィルタを示す図である。
【
図5】本開示のいくつかの例による、簡易化されたクリッピング値算出に基づいて導出されるクリッピング値の例示的テーブルを示す図である。
【
図6】本開示のいくつかの例による、ビデオデータを処理するための例示的方法600を示すフローチャートである。
【
図7】本開示のいくつかの例による例示的なビデオ符号化デバイスを示すブロック図である。
【
図8】本開示のいくつかの例による例示的なビデオ復号デバイスを示すブロック図である。
【発明を実施するための形態】
【0025】
本開示のいくつかの態様および実施形態が、以下で提供される。当業者には明らかであるように、これらの態様および実施形態のうちのいくつかは独立に適用されてよく、それらのうちのいくつかは組み合わせて適用されてよい。以下の説明では、説明のために、本出願の実施形態の完全な理解をもたらすように具体的な詳細が説明される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実践され得ることは明らかであろう。図および説明は限定的であることを意図しない。
【0026】
以下の説明は、例示的実施形態のみを提供し、本開示の範囲、適用可能性、または構成を限定することを意図しない。そうではなく、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供するものである。添付の特許請求の範囲に記載したような本出願の趣旨および範囲から逸脱することなく、様々な変更を要素の機能および構成に加えることが可能であることを理解されたい。
【0027】
ビデオコーディングデバイスは、ビデオデータを効率的に符号化および復号するためにビデオ圧縮技法を実装することができる。ビデオ圧縮技法は、特に、空間予測(たとえば、フレーム内予測もしくはイントラ予測)、時間予測(たとえば、フレーム間予測もしくはインター予測)、レイヤ間予測(ビデオデータの異なるレイヤにわたる)および/またはビデオシーケンスにおいて固有の冗長性を削減するか、もしくは取り除くための他の予測技法を含む、異なる予測モードを適用することを含み得る。ビデオエンコーダは、ビデオブロックまたはコーディングユニットと呼ばれるとともに以下でより詳細に説明される矩形の領域に、元のビデオシーケンスの各ピクチャを区分し得る。これらのビデオブロックは、特定の予測モードを使って符号化され得る。
【0028】
場合によっては、ビデオブロックは、1つまたは複数のやり方で、より小さいブロックの1つまたは複数のグループに分割され得る。ブロックは、コーディングツリーブロック、予測ブロック、変換ブロック、および/または他の適切なブロックを含み得る。概括的に「ブロック」への言及は、別段に規定されていない限り、そのようなビデオブロック(たとえば、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または当業者によって理解されるであろうように、他の適切なブロックもしくはサブブロック)を指し得る。これらのブロックはまた、本明細書において、「ユニット」(たとえば、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、変換ユニット(TU)など)と交換可能に呼ばれる場合がある。場合によっては、ユニットは、ビットストリームに符号化されるコーディング論理ユニットを示す場合があり、ブロックは、プロセスが目標とするビデオフレームバッファの部分を示す場合がある。
【0029】
インター予測モードの場合、ビデオエンコーダは、参照フレームまたは参照ピクチャと呼ばれる、別の時間ロケーションにあるフレーム(またはピクチャ)中で符号化されているブロックと同様のブロックを探索し得る。ビデオエンコーダは、この探索の範囲を、符号化されるべきブロックからのある空間的変位に制限し得る。水平変位成分および垂直変位成分を含む2次元(2D)動きベクトルを使って、最良一致が特定され得る。イントラ予測モードに対して、ビデオエンコーダは、同じピクチャ内の以前に符号化された近隣のブロックからのデータに基づいて、空間予測技法を使用して予測されたブロックを形成することができる。
【0030】
ビデオエンコーダは、予測誤差を判断することができる。いくつかの例では、予測は、符号化されているブロックおよび予測されたブロック中のピクセル値の間の差分として判断され得る。予測誤差は、残差とも呼ばれ得る。ビデオエンコーダは、予測誤差に変換(たとえば、離散コサイン変換(DCT)または他の適切な変換)を適用して、変換係数を生成することもできる。変換の後、ビデオエンコーダは、変換係数を量子化し得る。量子化された変換係数および動きベクトルは、シンタックス要素を使って表され、制御情報とともに、ビデオシーケンスのコーディングされた表現を形成し得る。いくつかの事例では、ビデオエンコーダは、シンタックス要素をエントロピーコーディングすることができ、それによりそれらの表現に使われるビットの数をさらに減らす。
【0031】
ビデオデコーダは、上で論じられたシンタックス要素と制御情報とを使って、現在のフレームを復号するための予測データ(たとえば、予測ブロック)を構築することができる。たとえば、ビデオデコーダは、予測されたブロックと圧縮された予測誤差とを加算することができる。ビデオデコーダは、量子化された係数を使用して変換基底関数を重み付けることによって、圧縮された予測誤差を判断することができる。再構築されたフレームと元のフレームとの差分は、再構築誤差と呼ばれる。
【0032】
場合によっては、クリッピングを用いる適応ループフィルタが、再構築されたフレームの品質を高めるために適用され得る。クリッピングは、画像またはフレームの1つまたは複数のエリア中の強度または明度が、表され得る最小または最大強度または明度から外れるとき、画像を処理し、かつ/または画像もしくはフレームの品質を向上するのに使われ得る画像処理技法である。たとえば、クリッピングは、画像またはフレームのそのようなエリアについての強度または明度値を、表され得る最小もしくは最大値に、またはそれらの値以内に調節するのに使われ得る。
【0033】
本明細書に記載する技法は、ビデオコーディングにおいて使われる適応ループフィルタのためのクリッピング値算出を簡易化し、効率を増すことができる。いくつかの例では、本明細書における技法は、そのような算出の複雑さを低下し、復号誤差を低減し、デバイスの計算リソースに対する処理負担を最小化することができる。その上、本明細書に記載する技法は、どのビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、高度ビデオコーディング(AVC)、または他の適切な既存ビデオコーデック)にも適用されてよく、かつ/あるいは、現行のビデオコーディング規格、開発されているビデオ規格、ならびに/あるいは、たとえば、多用途ビデオコーディング(VVC)、共同調査モデル(JEM)、および/または開発中の、もしくは開発されるべき他のビデオコーディング規格など、将来のビデオコーディング規格を含む、どのビデオコーディング規格用の効率的コーディングツールであってもよい。
【0034】
図1は、符号化デバイス104および復号デバイス112を含む例示的システム100を示すブロック図である。符号化デバイス104はソースデバイスの一部であってよく、復号デバイス112は受信デバイスの一部であってよい。ソースデバイスおよび/または受信デバイスは、モバイルもしくは固定の電話ハンドセット(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラ、ヘッドマウントディスプレイ(HMD)、および/または任意の他の好適な電子デバイスなどの電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信用の1つまたは複数のワイヤレストランシーバを含み得る。本明細書で説明するコーディング技法は、たとえば、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送もしくは送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、および/または他の適用例を含む、様々なマルチメディア用途におけるビデオコーディングに適用することができる。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーミング、ビデオ電話などのような適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
【0035】
符号化デバイス104(すなわち、エンコーダ)は、符号化ビデオビットストリームを生成するためのビデオコーディング規格またはビデオコーディングプロトコルを使用してビデオデータを符号化するために使用され得る。ビデオコーディング規格の例は、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVCとも呼ばれる)、ならびに高効率ビデオコーディング(HEVC)すなわちITU-T H.265を含む。レンジ拡張およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)拡張およびマルチビュー拡張(MV-HEVC)、ならびにスケーラブル拡張(SHVC)を含む、マルチレイヤビデオコーディングを扱うHEVCの様々な拡張が存在する。HEVCおよびその拡張は、ビデオコーディング共同研究部会(JCT-VC)、ならびにITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)の3Dビデオコーディング拡張開発共同研究部会(JCT-3V)によって開発されている。
【0036】
MPEGおよびITU-T VCEGはまた、多用途ビデオコーディング(VVC)という名称の次世代のビデオコーディング規格用の新たなビデオコーディングツールを探究および開発するために、共同探究ビデオチーム(JVET)を形成している。基準ソフトウェアはVVCテストモデル(VTM)と呼ばれる。VVCの目的は、既存のHEVC規格に勝る圧縮性能の著しい改善をもたらし、より高品質のビデオサービスならびに(たとえば、特に、360°全方向没入型マルチメディア、高ダイナミックレンジ(HDR)ビデオなどのような)新興のアプリケーションの展開を支援することである。
【0037】
本明細書で説明する様々な態様が、VTM、VVC、HEVC、および/またはその拡張を使用する例を提供する。しかしながら、本明細書で説明する技法およびシステムはまた、AVC、MPEG、JPEG(もしくは静止画像のための他のコーディング規格)、それらの拡張、あるいはすでに利用可能であるかまたはまだ利用可能もしくは開発済みでない他の好適なコーディング規格などの、他のコーディング規格に適用可能であり得る。したがって、本明細書で説明する技法およびシステムは特定のビデオコーディング規格を参照しながら説明されることがあるが、説明がその特定の規格だけに適用されるものと解釈されるべきでないことを、当業者なら諒解されよう。
【0038】
図1を参照すると、ビデオソース102は、符号化デバイス104にビデオデータを提供し得る。ビデオソース102は、ソースデバイスの一部であってよく、またはソースデバイス以外のデバイスの一部であってよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラフォン、ビデオフォンなど)、記憶されたビデオを収容するビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の好適なビデオソースを含み得る。
【0039】
ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャを含み得る。ピクチャは、「フレーム」と呼ばれることもある。ピクチャまたはフレームは、場合によってはビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部ではない静止画像であってよい。HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは一連のピクチャを含み得る。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイであり、SCbは、Cb彩度サンプルの2次元アレイであり、SCrは、Cr彩度サンプルの2次元アレイである。彩度サンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであることがあり、ルーマサンプルのアレイしか含まないことがある。
【0040】
符号化デバイス104のエンコーダエンジン106(または、エンコーダ)は、ビデオデータを符号化して符号化ビデオビットストリームを生成する。いくつかの例では、符号化ビデオビットストリーム(または、「ビデオビットストリーム」もしくは「ビットストリーム」)は、一連の1つまたは複数のコード化ビデオシーケンスである。コード化ビデオシーケンス(CVS)は、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有するアクセスユニット(AU)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のAUの直前までの、一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかの特性は、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。そうでない場合、ランダムアクセスポイントピクチャ(0に等しいRASLフラグを有する)はCVSを開始しない。
【0041】
アクセスユニット(AU)は、1つまたは複数のコード化ピクチャ、および同じ出力時間を共有するコード化ピクチャに対応する制御情報を含む。ピクチャのコード化スライスは、ビットストリームレベルで、ネットワーク抽象化レイヤ(NAL)ユニットと呼ばれるデータ単位の中にカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々は、NALユニットヘッダを有する。一例では、ヘッダは、H.264/AVCでは1バイト(マルチレイヤ拡張を除いて)、HEVCでは2バイトである。NALユニットヘッダの中のシンタックス要素は、指定されたビットを取り、したがって、すべての種類のシステム、および特にトランスポートストリーム、リアルタイムトランスポート(RTP)プロトコル、ファイルフォーマットなどの、トランスポートレイヤにとって認識可能である。
【0042】
ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コード化ピクチャデータの1つのスライスまたはスライスセグメント(以下で説明する)を含み、非VCL NALユニットは、1つまたは複数のコード化ピクチャに関係する制御情報を含む。場合によっては、NALユニットはパケットと呼ばれることがある。HEVC AUは、コード化ピクチャデータを含むVCL NALユニット、および(もしあれば)コード化ピクチャデータに対応する非VCL NALユニットを含む。
【0043】
NALユニットは、ビデオの中のピクチャのコード化表現など、ビデオデータのコード化表現を形成するビットのシーケンス(たとえば、符号化ビデオビットストリーム、ビットストリームのCVSなど)を含み得る。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによって、ピクチャのコード化表現を生成することができる。スライスの中の情報が、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされるように、スライスは他のスライスから独立していてよい。スライスは、独立したスライスセグメント、および存在する場合、前のスライスセグメントに依存する1つまたは複数の従属したスライスセグメントを含む、1つまたは複数のスライスセグメントを含む。
【0044】
HEVCでは、スライスは、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)に区分される。ルーマサンプルのCTB、およびクロマサンプルの1つまたは複数のCTBは、サンプル用のシンタックスとともにコーディングツリーユニット(CTU)と呼ばれる。CTUは、「ツリーブロック」または「最大コーディング単位」(LCU)と呼ばれることもある。CTUは、HEVC符号化のための基本処理単位である。CTUは、様々なサイズの複数のコーディングユニット(CU)に分けられ得る。CUは、コーディングブロック(CB)と呼ばれるルーマサンプルアレイおよびクロマサンプルアレイを含む。
【0045】
ルーマCBおよびクロマCBはさらに、予測ブロック(PB)へと分けられ得る。PBは、(使用が可能または有効であるとき)インター予測またはイントラブロックコピー予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリームの中でシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは、動き情報と呼ばれることもある。CBはまた、1つまたは複数の変換ブロック(TB)へと区分され得る。TBは、予測残差信号をコーディングするために同じ2次元変換がそこで適用される、色成分のサンプルの正方形ブロックを表す。変換ユニット(TU)は、ルーマサンプルおよびクロマサンプルのTB、ならびに対応するシンタックス要素を表す。
【0046】
CUのサイズは、コーディングモードのサイズに対応し、場合によっては、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズを含み得る。本明細書で使用する「N×N」という句は、垂直寸法および水平寸法に関してビデオブロックのピクセル寸法(たとえば、8ピクセル×8ピクセル)を指すために使用される。ブロック中のピクセルは、行および列に配置され得る。いくつかの例では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有していないことがある。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるのか、それともインター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形であるように区分されてもよい。CUに関連するシンタックスデータはまた、たとえば、CTUによる1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形であり得る。
【0047】
HEVC規格によると、変換は、変換ユニット(TU)を使って実施され得る。TUは、異なるCUに対しては異なり得る。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、同じサイズであってよく、またはPUより小さくてよい。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)と呼ばれる4分木構造を使用して、より小さい単位に再分割され得る。RQTのリーフノードは、TUに対応し得る。TUに関連するピクセル差分値は、変換係数を生成するように変換され得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
【0048】
ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、次いで、残差(以下で説明する)を得るために元のビデオデータから減算される。CUごとに、予測モードが、シンタックスデータを使用してビットストリームの内部でシグナリングされ得る。予測モードは、イントラ予測(もしくは、ピクチャ内予測)またはインター予測(もしくは、ピクチャ間予測)を含み得る。イントラ予測は、ピクチャ内で空間的に近隣のサンプル間の相関を使用する。たとえば、イントラ予測を使用すると、たとえば、PUにとっての平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、近隣データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャの中の近隣画像データから各PUが予測される。インター予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使う。たとえば、インター予測を使用すると、(出力順序において現在ピクチャの前または後の)1つまたは複数の参照ピクチャの中の画像データからの動き補償予測を使用して、各PUが予測される。ピクチャエリアを、インターピクチャ予測を使用してコーディングすべきか、それともイントラピクチャ予測を使用してコーディングすべきかという決定は、たとえば、CUレベルにおいて行われ得る。
【0049】
エンコーダエンジン106およびデコーダエンジン116(以下でより詳しく説明する)は、VVCに従って動作するように構成され得る。VVCでは、ビデオコーダ(エンコーダエンジン106および/またはデコーダエンジン116など)が、ピクチャを複数のコーディングツリーユニット(CTU)に区分し得る。ビデオコーダは、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT)構造などのツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCU、PU、およびTUの間の区別などの、複数の区分タイプの概念を排除する。QTBT構造は、4分木区分に従って区分された第1のレベルおよび2分木区分に従って区分された第2のレベルを含む2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。2分木のリーフノードはコーディングユニット(CU)に対応する。
【0050】
MTT区分構造では、ブロックは、4分木区分、2分木区分、および1つまたは複数のタイプのトリプルツリー区分を使用して区分され得る。トリプルツリー区分は、ブロックが3個のサブブロックに分けられる区分である。いくつかの例では、トリプルツリー区分は、中心を通って元のブロックを分割することなく、ブロックを3個のサブブロックに分割する。MTTにおける区分タイプ(たとえば、4分木、2分木、およびトリプルツリー)は対称または非対称であり得る。
【0051】
いくつかの例では、ビデオコーダは、輝度成分および彩度成分の各々を表すために単一のQTBT構造またはMTT構造を使用してもよく、他の例では、ビデオコーダは、輝度成分のための1つのQTBTまたはMTT構造および両方の彩度成分のための別のQTBTまたはMTT構造(またはそれぞれの彩度成分のための2つのQTBTおよび/もしくはMTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
【0052】
ビデオコーダは、HEVCごとの4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本明細書における記述は、QTBT区分化を指し得る。しかしながら、本開示の技法はまた、4分木区分、または他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることを理解されたい。
【0053】
いくつかの例では、ピクチャの1つまたは複数のスライスには、スライスタイプが割り当てられる。スライスタイプは、Iスライス、Pスライス、およびBスライスを含む。Iスライス(独立に復号可能なイントラフレーム)は、イントラ予測のみによってコーディングされているピクチャのスライスであり、したがって、Iスライスがスライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータしか必要としないので、独立に復号可能である。Pスライス(単方向予測フレーム)は、イントラ予測を用いて、かつ単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャのみによって予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域だけからのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、かつインター予測(たとえば、双予測または単予測のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向に予測されることがあり、ここで、各ピクチャは1つの参照領域に寄与し、2つの参照領域のサンプルセットが重み付けられて(たとえば、等しい重みを用いて、または異なる重みを用いて)、双方向予測されたブロックの予測信号を生成する。上述のように、1つのピクチャのスライスは、独立にコーディングされる。場合によっては、ピクチャは、ただ1つのスライスとしてコーディングされ得る。
【0054】
上述のように、ピクチャ内予測は、ピクチャ内で空間的に近隣のサンプル間の相関を使用する。ピクチャ間予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使う。並進動きモデルを使って、あらかじめ復号されたピクチャ(参照ピクチャ)中のブロックの位置は、動きベクトル(Δx、Δy)によって示され、Δxは水平変位を指定し、Δyは、現在のブロックの位置に相対した参照ブロックの垂直変位を指定する。場合によっては、動きベクトル(Δx、Δy)は、整数サンプル正確度(整数正確度とも呼ばれる)にあってよく、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)をポイントする。場合によっては、動きベクトル(Δx、Δy)は、参照フレームの整数ペルグリッドに制限されることなく、基底オブジェクトの動きをより正確にキャプチャするように、小数サンプル正確度(小数ペル正確度または非整数正確度とも呼ばれる)であってよい。
【0055】
動きベクトルの正確度は、動きベクトルの量子化レベルによって表され得る。たとえば、量子化レベルは、整数正確度(たとえば、1ピクセル)または小数ペル正確度(たとえば、1/4ピクセル、1/2ピクセル、もしくは他のサブピクセル値)であってよい。対応する動きベクトルが小数サンプル正確度を有するとき、予測信号を導出するために、参照ピクチャに対して補間が適用される。たとえば、小数位置における値を推定するために、整数位置において入手可能なサンプルが、(たとえば、1つまたは複数の補間フィルタを使って)フィルタリングされ得る。あらかじめ復号された参照ピクチャは、参照ピクチャリストへの参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれ得る。単予測および双予測を含む、2種類のピクチャ間予測が実施され得る。
【0056】
双予測を使うインター予測を用いると、動きパラメータの2つのセット(Δx0、y0、refIdx0およびΔx1、y1、refIdx1)が、2つの動き補償予測を(同じ参照ピクチャから、または可能性としては異なる参照ピクチャから)生成するのに使われる。たとえば、双予測を用いると、各予測ブロックは、2つの動き補償予測信号を使い、B個の予測ユニットを生成する。2つの動き補償予測は次いで、最終動き補償予測を得るように組み合わされる。たとえば、2つの動き補償予測は、平均をとることによって組み合わされ得る。別の例では、重み付き予測が使われてよく、その場合、異なる重みが各動き補償予測に適用されてよい。双予測において使われ得る参照ピクチャは、リスト0およびリスト1と記される、2つの別個のリストに記憶される。動き推定プロセスを使って、エンコーダにおいて動きパラメータが導出され得る。
【0057】
単予測を使うインター予測を用いると、動きパラメータの1つのセット(Δx0、y0、refIdx0)が、参照ピクチャから動き補償予測を生成するのに使われる。たとえば、単予測を用いると、各予測ブロックは、最大1つの動き補償予測信号を使い、P個の予測ユニットを生成する。
【0058】
PUは、予測プロセスに関するデータ(たとえば、動きパラメータまたは他の適切なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PU用のイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PU用の動きベクトルを規定するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの解像度(たとえば、整数精度、1/4ピクセル精度、または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)、またはこれらの任意の組合せを記述し得る。
【0059】
符号化デバイス104は次いで、変換および量子化を実施し得る。たとえば、予測に続いて、エンコーダエンジン106は、PUに対応する残差値を算出し得る。残差値は、コーディングされているピクセルの現在のブロック(PU)と現在のブロックを予測するために使用される予測ブロック(たとえば、現在のブロックの予測されるバージョン)との間のピクセル差分値を含み得る。たとえば、(たとえば、インター予測またはイントラ予測を使って)予測ブロックを生成した後、エンコーダエンジン106は、予測ユニットによって生成された予測ブロックを現在のブロックから減算することによって、残差ブロックを生成することができる。残差ブロックは、現在のブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元のブロックフォーマット(たとえば、ピクセル値の2次元行列または2次元アレイ)で表され得る。そのような例では、残差ブロックは、ピクセル値の2次元表現である。
【0060】
予測が実施された後に残り得るあらゆる残差データが、ブロック変換を使用して変換され、ブロック変換は、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の適切な変換関数、またはそれらの任意の組合せに基づき得る。場合によっては、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の適切なサイズ)が、各CUにおける残差データに適用され得る。いくつかの例では、エンコーダエンジン106によって実装される変換プロセスおよび量子化プロセスのためにTUが使われ得る。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUも含み得る。以下でさらに詳細に説明されるように、残差値は、ブロック変換を使用して変換係数に変換されることがあり、エントロピーコーディングのための直列化された変換係数を生成するために、TUを使用して量子化および走査されることがある。
【0061】
いくつかの例では、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、エンコーダエンジン106は、CUのTUに対する残差データを算出し得る。PUは、空間ドメイン(すなわち、ピクセルドメイン)におけるピクセルデータを含み得る。TUは、ブロック変換を適用した後の、変換ドメインにおける係数を含み得る。前記のように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分値に相当し得る。エンコーダエンジン106は、CUの残差データを含むTUを形成することができ、次いで、TUを変換してCUに対する変換係数を生じることができる。
【0062】
エンコーダエンジン106は、変換係数の量子化を実施し得る。量子化は、変換係数を量子化することによってさらなる圧縮をもたらして、係数を表すために使用されるデータの量を低減する。たとえば、量子化は、係数の一部または全部に関連するビット深度を低減し得る。一例では、nビット値を有する係数は、量子化の間にmビット値に切り捨てられてよく、nはmよりも大きい。
【0063】
量子化が実施されると、コード化ビデオビットストリームは、量子化された変換係数、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)、区分情報、および他のシンタックスデータなど、任意の他の適切なデータを含む。コード化ビデオビットストリームの様々な要素が次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、既定の走査順序を使用して、量子化された変換係数を走査し、エントロピー符号化され得る直列化されたベクトルを生成し得る。いくつかの例では、エンコーダエンジン106は適応走査を実施し得る。量子化変換係数を走査してベクトル(たとえば、1次元ベクトル)を形成した後、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の適切なエントロピー符号化技法を使い得る。
【0064】
符号化デバイス104の出力部110は、符号化ビデオビットストリームデータを構成するNALユニットを、通信リンク120を介して受信デバイスの復号デバイス112へ送り得る。復号デバイス112の入力部114は、NALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(商標)など)を含んでよい。ワイヤードネットワークは、任意のワイヤードインターフェース(たとえば、ファイバー、イーサネット、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号ライン(DSL)など)を含んでよい。ワイヤードネットワークおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチ、サーバ、ソフトウェアコンテナ、仮想機械など、様々な機器および/または構成要素を使って実装され得る。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調されてよく、受信デバイスへ送信されてよい。
【0065】
いくつかの例では、符号化デバイス104は、符号化ビデオビットストリームデータをストレージ108に記憶し得る。出力部110は、エンコーダエンジン106から、またはストレージ108から、符号化ビデオビットストリームデータを取り出し得る。ストレージ108は、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のうちのいずれかを含み得る。たとえば、ストレージ108は、ハードドライブ、記憶ディスク、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、分散型記憶システム中の1つもしくは複数のノード、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体を含み得る。
【0066】
復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、デコーダエンジン116に、またはデコーダエンジン116によって後で使うことができるように、ストレージ118にビデオビットストリームデータを提供し得る。デコーダエンジン116は、エントロピー復号すること(たとえば、エントロピーデコーダを使って)、および符号化ビデオデータを構成する1つまたは複数のコード化ビデオシーケンスの要素を抽出することによって、符号化ビデオビットストリームデータを復号し得る。デコーダエンジン116は、符号化ビデオビットストリームデータを再スケーリングし、符号化ビデオビットストリームデータに対して逆変換を実施し得る。残差データが、デコーダエンジン116の予測ステージに渡される。デコーダエンジン116は、次いで、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
【0067】
復号デバイス112は、復号ビデオをビデオ宛先デバイス122に出力してよく、ビデオ宛先デバイス122は、復号ビデオデータを表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であってよい。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であってよい。
【0068】
いくつかの例では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合されてよい。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、中央処理ユニット(CPU)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、本明細書に記載するコーディング技法を実施するのに使われる他のハードウェアまたはソフトウェアを含んでよい。場合によっては、ビデオ符号化デバイス104およびビデオ復号デバイス112は、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中に統合されてよい。符号化デバイス104の具体的な詳細の例が、
図7を参照して以下で説明される。復号デバイス112の具体的な詳細の例が、
図8を参照して以下で説明される。
【0069】
HEVC規格の拡張は、MV-HEVCと呼ばれるマルチビュービデオコーディング拡張、およびSHVCと呼ばれるスケーラブルビデオコーディング拡張を含む。MV-HEVC拡張およびSHVC拡張は階層化コーディングの概念を共有し、異なるレイヤが符号化ビデオビットストリームの中に含まれる。コード化ビデオシーケンスの中の各レイヤは、固有のレイヤ識別子(ID)によってアドレス指定される。レイヤIDは、NALユニットが関連付けられたレイヤを識別するために、NALユニットのヘッダの中に存在し得る。MV-HEVCでは、異なるレイヤは、ビデオビットストリームの中で同じシーンの異なるビューを表現することができる。SHVCでは、異なる空間解像度(すなわち、ピクチャ解像度)で、または異なる再構築忠実度でビデオビットストリームを表す、異なるスケーラブルレイヤが提供される。スケーラブルレイヤは、(レイヤID=0である)ベースレイヤ、および(レイヤID=1、2、...nである)1つまたは複数のエンハンスメントレイヤを含み得る。ベースレイヤは、HEVCの最初のバージョンのプロファイルに準拠してよく、ビットストリームの中の最低利用可能レイヤを表現する。エンハンスメントレイヤは、空間解像度、時間分解能もしくはフレームレート、および/または再構築忠実度(すなわち、品質)がベースレイヤと比較して増大している。エンハンスメントレイヤは、階層的に編成され、下位レイヤに依存することがある(または、依存しないこともある)。いくつかの例では、異なるレイヤは、単一規格コーデックを使用してコーディングされ得る(たとえば、HEVC、SHVC、または他のコーディング規格を使用してすべてのレイヤが符号化される)。いくつかの例では、異なるレイヤは、多規格コーデックを使用してコーディングされ得る。たとえば、ベースレイヤがAVCを使用してコーディングされてよく、1つまたは複数のエンハンスメントレイヤがHEVC規格に対するSHVC拡張および/またはMV-HEVC拡張を使用してコーディングされてよい。
【0070】
一般に、レイヤは、VCL NALユニットのセット、および非VCL NALユニットの対応するセットを含む。NALユニットは、特定のレイヤID値を割り当てられる。レイヤが下位レイヤに依存することがあるという意味で、レイヤは階層的であり得る。レイヤセットは、自己完結型のビットストリーム内で表されるレイヤのセットを指し、自己完結型とは、レイヤセット内のレイヤが復号プロセスにおいてレイヤセット中の他のレイヤに依存し得るが、復号のためにいずれの他のレイヤにも依存しないことを意味する。したがって、レイヤセットの中のレイヤは、ビデオコンテンツを表現できる独立したビットストリームを形成することができる。レイヤセットの中のレイヤのセットは、サブビットストリーム抽出プロセスの動作によって別のビットストリームから取得され得る。レイヤセットは、いくつかのパラメータに従って動作することをデコーダが望むときに復号されるべきレイヤのセットに相当し得る。
【0071】
前に説明したように、HEVCビットストリームは、VCL NALユニットおよび非VCL NALユニットを含む、NALユニットのグループを含む。VCL NALユニットは、コード化ビデオビットストリームを形成するコード化ピクチャデータを含む。たとえば、コード化ビデオビットストリームを形成するビットのシーケンスが、VCL NALユニットの中に存在する。非VCL NALユニットは、他の情報に加えて、符号化ビデオビットストリームに関係する高レベル情報を有するパラメータセットを含み得る。たとえば、パラメータセットは、ビデオパラメータセット(VPS)と、シーケンスパラメータセット(SPS)と、ピクチャパラメータセット(PPS)とを含み得る。パラメータセットの目的の例は、ビットレート効率、エラーレジリエンシー、およびシステムレイヤインターフェースを提供することを含む。各スライスは、スライスを復号するために復号デバイス112が使用し得る情報にアクセスするために、単一のアクティブなPPS、SPS、およびVPSを参照する。識別子(ID)は、パラメータセットごとにコーディングされてよく、VPS ID、SPS ID、およびPPS IDを含む。SPSは、SPS IDおよびVPS IDを含む。PPSは、PPS IDおよびSPS IDを含む。各スライスヘッダは、PPS IDを含む。IDを使用して、アクティブなパラメータセットが所与のスライスに対して識別され得る。
【0072】
PPSは、所与のピクチャの中のすべてのスライスに適用される情報を含む。このことにより、ピクチャの中のすべてのスライスは、同じPPSを参照する。異なるピクチャの中のスライスも、同じPPSを参照し得る。SPSは、同じコード化ビデオシーケンス(CVS)またはビットストリームの中のすべてのピクチャに適用される情報を含む。前に説明したように、コード化ビデオシーケンスは、ベースレイヤの中で(上記で説明した)いくつかの特性を伴うランダムアクセスポイントピクチャ(たとえば、瞬時復号参照(IDR)ピクチャもしくはブロークンリンクアクセス(BLA)ピクチャ、または他の適切なランダムアクセスポイントピクチャ)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のアクセスユニット(AU)の直前(または、ビットストリームの末尾)までの、一連のAUである。SPSの中の情報は、コード化ビデオシーケンス内でピクチャからピクチャへと変化しないことがある。コード化ビデオシーケンスの中のピクチャは、同じSPSを使用し得る。VPSは、コード化ビデオシーケンス内またはビットストリーム内のすべてのレイヤに適用される情報を含む。VPSは、コード化ビデオシーケンス全体に適用されるシンタックス要素を有するシンタックス構造を含む。いくつかの例では、VPS、SPS、またはPPSは、符号化ビットストリームとともに帯域内で送信され得る。いくつかの例では、VPS、SPS、またはPPSは、コード化ビデオデータを含むNALユニットとは別個の送信の中で、帯域外で送信され得る。
【0073】
ビデオビットストリームはまた、補足強調情報(SEI)メッセージを含み得る。たとえば、SEI NALユニットは、ビデオビットストリームの一部であり得る。場合によっては、SEIメッセージは、復号プロセスによって必要とされない情報を含み得る。たとえば、SEIメッセージの中の情報は、デコーダがビットストリームのビデオピクチャを復号するのに必須でないことがあるが、デコーダは、ピクチャ(たとえば、復号出力)の表示または処理を改善するためにその情報を使用することができる。SEIメッセージの中の情報は、埋込みメタデータであってよい。例示的な一例では、SEIメッセージの中の情報は、コンテンツの視認性を改善するためにデコーダ側エンティティによって使用され得る。いくつかの事例では、いくつかのアプリケーション規格は、アプリケーション規格に準拠するすべてのデバイスに品質の改善がもたらされ得るように、ビットストリームの中にそのようなSEIメッセージの存在を要求することがある(たとえば、多くの他の例に加えて、SEIメッセージがビデオのすべてのフレームに対して搬送されるフレーム互換平面立体視3DTVビデオフォーマット用のフレームパッキングSEIメッセージの搬送、回復点SEIメッセージの処理、DVBにおけるパンスキャン矩形SEIメッセージの使用)。
【0074】
ビデオコーディングの分野では、復号ビデオ信号の品質を高めるためにフィルタリングが適用され得る。フィルタは、フィルタリングされたフレームが将来のフレームの予測のために使われないポストフィルタとして適用されてよく、またはフィルタリングされたフレームが将来のフレームを予測するのに使われるインループフィルタとして適用され得る。フィルタは、たとえば、元の信号と復号されたフィルタリング済み信号との間の誤差を最小化することによって設計され得る。いくつかの例では、クリッピングを用いる適応ループフィルタ(ALF)が、以下でさらに説明するように、復号ビデオ信号の品質を高めるために適用され得る。クリッピングは、画像の1つまたは複数のエリア中の強度または明度が、表され得る最小または最大強度または明度から外れる場合、画像を処理し、かつ/または画像の品質を向上するのに使われ得る画像処理技法である。
【0075】
いくつかの例では、クリッピングは、画像のそのようなエリアについての強度または明度値を、表され得る最小もしくは最大値に(または最小および最大値以内に)調節することができる。たとえば、画像の特定のエリアが、表され得る最小強度を下回る強度値を有する場合、画像は、画像のそのエリアについての強度値を最小強度値まで増大するように(または最小強度値を下回らないように)クリッピングされてよく、画像の特定のエリアが、表され得る最大強度を超える強度値を有する場合、画像は、画像のそのエリアについての強度値を最大強度値まで低下するように(または最大強度値を下回るように)クリッピングされてよい。画像用のクリッピング値を算出するための例示的技法については、以下でさらに説明する。
【0076】
図2Aは、クリッピングを用いるALF206を、フレーム中の入力ブロック202に適用するための例示的システム200を示す簡略図である。ブロック202は、ブロック202を表す画像ピクセルについての色成分204を含み得る。この例では、色成分204は、YCbCr色空間中にあり、ルーマY、クロマCb、およびクロマCr成分を含み得る。YCbCr色空間中のクロマCbおよびクロマCr成分は、それぞれ、ブロック202に関連付けられた青色差および赤色差クロマ信号を表し得る。
【0077】
ALFフィルタ係数値およびクリッピング値を用いるALF206が、ブロック202中のルーマ(Y)成分サンプル204A、クロマ(Cb)成分サンプル204B、およびクロマ(Cr)成分サンプル204Cに適用され得る。いくつかの例では、ALFフィルタ係数値およびクリッピング値を用いるALF206は、サンプル(たとえば、204A、204B、204C)にブロック単位で(たとえば、特定のビデオブロックに)適用され得る。たとえば、ビデオエンコーダまたはデコーダは、フレーム中のブロックを個々に処理することができ、フレーム中のブロック(たとえば、202)を処理するとき、ビデオエンコーダまたはデコーダは、ALF206からのALFフィルタ係数およびクリッピング値をそのブロックに適用することができる。ビデオエンコーダまたはデコーダは、他のブロックを処理するとき、ALFフィルタ係数およびクリッピング値をそれらのブロックに同様に適用することができる。いくつかの例では、クリッピングを用いるALF206は、ブロック202中のアーティファクトを修正し、元のフレームと再構築されたフレームとの間の誤差を削減し、かつ/または復号ビデオ信号の品質を増大するために、ルーマ(Y)成分サンプル204A、クロマ(Cb)成分サンプル204B、およびクロマ(Cr)成分サンプル204Cに適用され得る。
【0078】
その上、ALF206は1つまたは複数のフィルタを含むことができ、各フィルタが、
図3Aおよび
図3Bに関して以下でさらに説明するように、特定のフィルタサイズおよび形状を有し得る。たとえば、ALF206は、ルーマ(Y)フィルタリングのために使われる、特定のサイズおよび形状のフィルタと、クロマフィルタリング用の特定のサイズおよび形状のフィルタとを含み得る。前に説明したように、いくつかの例では、ALF206は、ブロックレベルで適用され得る。たとえば、場合によっては、ALF206は、CTUまたはCUレベルで適用され得る。他の例では、ALF206は、フレームレベルで、および/またはフレームの他の部分に適用され得る。
【0079】
ルーマ(Y)成分サンプル204Aに適用されたALF206から、ルーマフィルタリング結果208が取得され得る。同様に、クロマ(Cb)成分サンプル204Bおよびクロマ(Cr)成分サンプル204Cに適用されたALF206から、クロマフィルタリング結果210が取得され得る。ルーマフィルタリング結果208は、出力ブロック212についてのフィルタリングされた(たとえば、修正および/またはクリッピングされた)ルーマ値を含んでよく、クロマフィルタリング結果210は、出力ブロック212についてのフィルタリングされたクロマCbおよびクロマCr値を含んでよい。出力ブロック212は、ルーマフィルタリング結果208およびクロマフィルタリング結果210からのルーマ、クロマCbおよびクロマCr値を含む、再構築されたブロックおよび/またはフレームを含み得る。場合によっては、出力ブロック212は、同様に処理された他の出力ブロックとともに、ALFフィルタリングおよびクリッピングを用いて、再構築されたフレームを生成するのに使われ得る。
【0080】
いくつかの例では、エンコーダ側において、ルーマフィルタリング結果208およびクロマフィルタリング結果210は、ルーマおよびクロマALFフィルタリングが可能にされるべきかどうかを判断するのに使われ得る。たとえば、ALFフィルタリング後の、再構築されたブロックおよび/またはフレームの品質が、ALFフィルタリング前の、再構築されたブロックおよび/またはフレームの品質と比較されてよい。ALFフィルタリングは次いで、ALFフィルタリング前の、再構築されたブロックおよび/またはフレームの品質に相対した、ALFフィルタリング後の、再構築されたブロックおよび/またはフレームの品質に基づいて可能または不能にされてよい。ALFフラグが次いで、ブロック向けにALFフィルタリングが可能それとも不能にされるかを示すために、符号化ビットストリームとともにシグナリングされてよい。場合によっては、ALFフラグは、ルーマALFフィルタリングが可能それとも不能にされるか、ルーマおよびクロマALFフィルタリングが可能それとも不能にされるか、またはALFフィルタリングが完全に不能にされるかどうかを指定することができる。デコーダ側において、デコーダは、再構築画像中のブロックおよび/または再構築画像向けにALFフィルタリングを実施するかどうかを判断するのに、ALFフラグを使うことができる。
【0081】
図2Bは、符号化デバイス104によって実装される、クリッピングを用いるALFフィルタリングのための例示的方法220のフローチャートである。この例では、ブロック222において、符号化デバイス104は、入力フレームを受信し得る。入力フレームは、前に説明したように、ルーマおよびクロマ成分などの色成分を含み得る。いくつかの例では、入力フレームは、ALFフィルタリングに先立って符号化デバイス104によって符号化されたフレーム中のブロックを含み得る。いくつかの例では、入力フレームは、画像および/またはビデオシーケンスに関連付けられたフレームであってよい。
【0082】
ブロック224において、符号化デバイス104は、フレーム中のルーマ成分を分類し得る。いくつかの例では、符号化デバイス104は、フレーム中のクロマ成分も分類し得る。分類は、ブロックレベルで(たとえば、4×4ブロックレベルで)、またはサンプルレベルで(フレームの各サンプルに対して)ルーマ成分に適用されてよい。場合によっては、分類は、フレーム中の各ルーマ成分に関連付けられた各ブロックまたはサンプルについての方向および活動を分類することを含み得る。いくつかの例では、ルーマ成分に対して、Nが、0よりも大きい数を表す、フレーム全体の中の4×4ブロックが、1Dラプラシアン方向(たとえば、最大5つの方向)および2Dラプラシアン活動(たとえば、最大5つの活動値)に基づいて分類されてよい。場合によっては、符号化デバイス104は、方向Dirbおよび量子化されていない活動Actbを算出することができる。場合によっては、Actbは、両端を含んで、0~4の範囲にさらに量子化されてよい。
【0083】
場合によっては、既存のALFにおいて使われる水平および垂直勾配に加え、2つの斜勾配の値が、1Dラプラシアンを使って算出され得る。以下の式(1)~(4)から分かり得るように、目標ピクセルを覆う8×8ウィンドウ内のすべてのピクセルの勾配の合計が、目標ピクセルの表される勾配として利用されてよく、ここで、R(k,l)は、ロケーション(k,l)における再構築されたピクセルであり、インデックスiおよびjは、(たとえば、フレーム中の複数の4×4ブロックからの)ある4×4ブロック中の左上ピクセルの座標を指す。各ピクセルは、4つの勾配値に関連付けられ、垂直勾配がgvによって記され、水平勾配がghによって記され、135度の斜勾配がgd1によって記され、45度の斜勾配がgd2によって記される。
【0084】
【0085】
指向性Dirbを割り当てるために、以下の式(5)においてRh,vによって記される、水平および垂直勾配の最大と最小の比、ならびに式(6)においてRd0,d1によって記される(場合によってはRd1,d2とも記され得る)、2つの斜勾配の最大と最小の比が、2つの閾t1およびt2で互いと比較される。
【0086】
【0087】
水平および垂直勾配と斜勾配の検出された比を比較することによって、5つの方向モード(たとえば、両端を含む[0,4]の範囲内のDirb)が、以下の式(7)において定義される。Dirbの値およびその物理的意味が、以下のTable 1(表1)に記述される。
【0088】
【0089】
【0090】
活動値Actは、
【0091】
【0092】
として算出され得る。
【0093】
場合によっては、Act値は、両端を含む0~4の範囲にさらに量子化されてよく、量子化された値は、
【0094】
【0095】
と記される。活動値Actから活動インデックス
【0096】
【0097】
への量子化プロセスについては、以下で説明する。
【0098】
量子化プロセスは、以下のように定義され得る。
avg_var=Clip_post(NUM_ENTRY-1,(Act*ScaleFactor)>>shift);
【0099】
【0100】
上式で、NUM_ENTRYは、16(または他の適切な値)に設定され、ScaleFactorは64(または他の適切な値)に設定され、シフトは(4+内部コード化ビット深度)または他の適切な値であり、ActivityToIndex[NUM_ENTRY]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4}または他の適切な値セットであり、関数Clip_post(a,b)は、aとbとの間の小さい方の値を戻す。
【0101】
全体で、各4×4ルーマブロックが、25(5×5)個のクラスのうちの1つにカテゴリ化されてよく、ブロックのDirbおよびActbの値に従って、各4×4ブロックにインデックスが割り当てられる。グループインデックスは、Cと記されてよく、
【0102】
【0103】
に等しく設定されてよく、ここで、
【0104】
【0105】
は、Actbの量子化された値である。
【0106】
ブロック226において、符号化デバイス104は、ALF用のALF係数およびクリッピング値を判断することができ、ブロック228において、符号化デバイス104は、フレームにALFフィルタを適用することができる。いくつかの例では、ALFフィルタ形状によって、フィルタリングプロセスに影響を与えることになる係数の数が決まり得る。非限定的例示的フィルタ形状は、5×5、7×7、および9×9のダイヤモンド形状を含み得る。
図3Aおよび
図3Bは、クロマおよびルーマフィルタリングのために適用され得る例示的ALFフィルタを示す。
【0107】
図3Aを参照すると、クロマフィルタリング用の例示的フィルタ300が示されている。この例におけるフィルタ300は、5×5フィルタであり、ダイヤモンド形状を有する。フィルタ300は、13個の入力クロマサンプル用にセル302~326を含む。セル302~326は、対応するクロマサンプルに適用されるべき係数およびクリッピング値(たとえば、C0~C6)を含む。各セル(302~326)は、フィルタ係数値と、そのセルに関連付けられたクロマサンプルに適用されるクリッピング値とを含み得る。
【0108】
図3Bを参照すると、ルーマフィルタリング用の例示的フィルタ330が示されている。この例におけるフィルタ330は、7×7フィルタであり、ダイヤモンド形状を有する。フィルタ330は、25個の入力ルーマサンプル用にセル332~380を含む。セル332~380は、対応するルーマサンプルに適用されるべき係数およびクリッピング値(たとえば、C0~C12)を含む。各セル(332~380)は、フィルタ係数値と、そのセルに関連付けられたルーマサンプルに適用されるクリッピング値とを含み得る。
【0109】
図2Aに戻ると、いくつかの例では、位置kおよびlにおける係数に対応する復号されたフィルタ係数f(k,l)、ならびに位置kおよびlにおけるクリッピング値に対応するクリッピング値c(k,l)が、再構築画像R(i,j)に、以下のように適用され得る。
【0110】
【0111】
いくつかの例では、
図3Aに示すフィルタ300などの5×5フィルタがクロマ成分に適用されてよく、
図3Bに示すフィルタ330などの7×7フィルタがルーマ成分に適用されてよい。式(10)の出力値は、フィルタの中心に適用される値を定義し得る。
【0112】
たとえば、
図3Aを参照すると、フィルタ300中の各セル(302~326)は、フィルタ係数f(k,l)およびクリッピング値c(k,l)を有することができ、セル中のこれらの値の各々が、対応するピクセルに適用され得る。場合によっては、式(10)において
【0113】
【0114】
によって表される、フィルタ300の中心(たとえば、セル314)は、ピクセルに置かれるか、または適用されてよく、フィルタ300の残りのセル(たとえば、セル302~312および316~326)は、周辺または近隣ピクセルに置かれるか、または適用されてよい。
【0115】
さらに、
図3Bを参照すると、フィルタ330中の各セル(332~380)は、フィルタ係数f(k,l)およびクリッピング値c(k,l)を有することができ、セル中のこれらの値の各々が、対応するピクセルに適用され得る。場合によっては、式(10)において
【0116】
【0117】
によって表される、フィルタ330の中心(たとえば、セル356)は、ピクセルに置かれるか、または適用されてよく、フィルタ330の残りのセル(たとえば、セル332~354および358~380)は、周辺または近隣ピクセルに置かれるか、または適用されてよい。
【0118】
【0119】
【0120】
が、フレームの現在のサンプルR(i,j)(たとえば、ルーマサンプル、クロマサンプル)を、フィルタ係数かけるクリッピングされた差分の合計(たとえば、合計(フィルタ係数*クリッピングされた差分)に加算すること、すなわち
【0121】
【0122】
によって算出されてよく、この合計は、ネイバーサンプルR(i+k,j+l)と現在のサンプルR(i,j)との間の差分であり得る。式(10)の出力は、クリッピングのための値の範囲を定義し得る。場合によっては、値の範囲から値が選択されてよい。いくつかの例では、選択された値は、フレーム中で表され得る最小および最大値以内の値の範囲内の最も高い値であり得る。その上、選択された値は、サンプルに使うためのピクセル値を与えることができる。
【0123】
場合によっては、クリッピング値c(k,l)は、以下のように算出され得る。ルーマ成分用に、クリッピング値c(k,l)は、以下のように算出され得る。
c(k,l)=Round(2(BitDepthY*(4-clipIdx(k,l))/4))、式(11)
【0124】
上式で、BitDepthYは、ルーマ成分についてのビット深度(たとえば、色深度)であり、clipIdx(k,l)は、位置(k,l)におけるクリッピング値である。場合によっては、clipIdx(k,l)は0、1、2または3であってよい。
【0125】
クロマ成分用に、クリッピング値c(k,l)は、以下のように算出され得る。
c(k,l)=Round(2(BitDepthC-8)*2(8*(3-clipIdx[k,l])/3))、式(12)
【0126】
上式で、BitDepthCは、クロマ成分についてのビット深度であり、clipIdx(k,l)は、位置(k,l)におけるクリッピング値である。場合によっては、clipIdx(k,l)は0、1、2または3であってよい。
【0127】
ブロック230において、符号化デバイス104は、出力フレームを生成し得る。出力フレームは、ALFフィルタリングの後の再構築画像を含み得る。出力フレームは、前に説明したように、フィルタ係数およびクリッピング値に基づいて算出された、ルーマおよびクロマ成分についてのピクセル値を含み得る。
【0128】
いくつかの例では、ALFフィルタリング方法220によってサンプル用に生成されたピクセル値は、ルーマおよびクロマフィルタリングが可能にされるべきかどうかを判断するために、元のサンプルのピクセル値と比較されてよい。たとえば、ルーマフィルタリング結果が、元のルーマサンプルよりも優れた画像品質を与える場合、符号化デバイス104は、フレーム用にルーマフィルタリングを可能にしてよい。クロマフィルタリング結果が、元のクロマサンプルよりも優れた画像品質を与える場合、符号化デバイス104は、フレーム用にクロマフィルタリングを可能にしてよい。
【0129】
場合によっては、符号化デバイス104は、符号化ビットストリームとともにALFフラグをシグナリングし得る。シグナリングされたALFフラグは、特定のフレームについてALFフィルタリングが可能それとも不能にされるかを、復号デバイス(たとえば、112)に対して示し得る。
【0130】
場合によっては、方法220は、ジオメトリ変換を実施することを含み得る。いくつかの例では、フィルタ係数およびクリッピング値の1つのセットが、ブロック224において記載したピクセル分類からの各カテゴリについてシグナリングされ得る。場合によっては、同じカテゴリインデックスで印付けられたブロックの異なる方向をより良好に区別するために、無変換、対角、垂直反転、および回転を含む4つのジオメトリ変換が、実施され得る。
【0131】
セル402~426に関して変換なしの例示的5×5フィルタ400が
図4Aに示され、セル402~426に関する対角変換430、セル402~426に関する垂直反転変換440、およびセル402~426に関する回転変換450ありの例示的5×5フィルタが、
図4B~
図4Dに示される。具体的には、
図4Bは対角ジオメトリ変換430の例を示し、
図4Cは垂直反転ジオメトリ変換440の例を示し、
図4Dは回転ジオメトリ変換450の例を示す。
【0132】
図4Aに示す変換なしの例示的5×5フィルタ400が、
図4Bの対角ジオメトリ変換430、
図4Cの垂直反転ジオメトリ変換440、および
図4Dの回転ジオメトリ変換450と比較される場合、3つの追加のジオメトリ変換(たとえば、対角ジオメトリ変換430、垂直反転ジオメトリ変換440、および回転ジオメトリ変換450)の以下の公式形が取得され得る。
対角:f
D(k,l)=f(l,k)、c
D(k,l)=c(l,k)、
垂直反転:f
V(k,l)=f(k,K-l-1)、c
V(k,l)=c(k,K-l-1)
回転:f
R(k,l)=f(K-l-1,k)、c
R(k,l)=c(K-l-1,k)、式(13)
【0133】
上式で、Kはフィルタのサイズであり、0≦k、l≦K-1は、ロケーション(0,0)が左上隅にあり、ロケーション(K-1,K-1)が右下隅にあるような係数座標である。ダイヤモンド形状のフィルタサポートが使われるとき、フィルタサポートからの座標をもつ係数は0に設定され得ることに留意されたい。ジオメトリ変換インデックスの1つの示し方は、追加オーバーヘッドを避けるように暗黙的に導出するものである。ジオメトリ変換ベースのALF(GALF)では、変換は、そのブロックについて算出された勾配値に依存して、フィルタ係数f(k,l)に適用されてよい。変換と、式(3)~(7)を使って算出された4つの勾配との間の関係が、以下のTable 2(表2)に記述される。
【0134】
【0135】
変換は、2つの勾配(水平および垂直、または45度および135度の勾配)のうちのどの1つがより大きいかに基づき得る。比較に基づいて、より正確な方向情報が抽出され得る。したがって、フィルタ係数のオーバーヘッドが増大されない間、変換により、異なるフィルタリング結果が取得されてよい。
【0136】
いくつかの例では、フィルタ情報シグナリングが符号化ビットストリームとともに与えられ得る。たとえば、1つのルーマフィルタセットが、すべてのクラスについての(たとえば、フィルタ係数、クリッピング値、オフセット値などを含む)フィルタ情報を含み得る。固定フィルタは、各クラス用のフィルタを予測するのに使われ得る。クラスがそのフィルタ予測子として固定フィルタを使うかどうかを示すために、各クラスについてフラグがシグナリングされ得る。そうである場合、固定フィルタ情報がシグナリングされ得る。いくつかの例では、シグナリングされるフィルタは、あらかじめシグナリングされたフィルタから予測され得る。
【0137】
フィルタ係数を表すのに使われるビットの数を削減するために、異なるクラスがマージされてよい。どのクラスがマージされるかに関する情報は、クラスの各々について、インデックスiCを送ることによって提供され得る。同じインデックスiCを有するクラスは、コーディングされる同じフィルタ係数を共有し得る。クラスとフィルタとの間のマッピングは、各ルーマフィルタセットについてシグナリングされ得る。インデックスiCは、打ち切りバイナリ2値化方法を用いてコーディングされ得る。
【0138】
VTM-5.0では、適応パラメータセット(APS)が、ビットストリーム中でALFフィルタ係数を運ぶのに使われ得る。APSは、ルーマフィルタのセットもしくはクロマフィルタまたは両方を含み得る。タイルグループは、そのタイルグループヘッダ中で、現在のタイルグループに使われるAPSのインデックスをシグナリングするだけである。
【0139】
コーディングツリーブロック(CTB)ベースのフィルタセットスイッチが、場合によっては実装されてよい。VTM-5.0では、あらかじめコーディングされたタイルグループから生成されたフィルタが、現在のタイルグループがフィルタシグナリングのためのオーバーヘッドを保存するのに使われ得る。ルーマCTBが、固定フィルタセットおよびAPSからのフィルタセットの中でフィルタセットを選び得る。フィルタセットインデックスは、ビットストリーム中で、またはそれを用いてシグナリングされ得る。場合によっては、一部または全部のクロマCTBが、同じAPSからのフィルタを使う。タイルグループヘッダ中で、現在のタイルグループのルーマおよびクロマCTB用に使われるAPSがシグナリングされる。
【0140】
図2Bに戻ると、符号化デバイス104によって生成された出力フレームが、符号化ビットストリーム中で復号デバイス112に送信され得る。符号化ビットストリームは、前に説明したように、シグナリング情報を含み得る。復号デバイス112は、符号化ビットストリームを受信し、ビットストリームを復号し、ALFフィルタリングおよびクリッピングを、そのようなフィルタリングが可能にされているときにビットストリーム中のフレームに適用するのに、シグナリング情報を使うことができる。
【0141】
図2Cは、復号デバイス112によって実装される、クリッピングを用いるALFフィルタリングのための例示的方法240を示すフローチャートである。この例では、ブロック242において、復号デバイス112は、符号化デバイス104によって提供される符号化ビットストリームからのフレームを受信し得る。場合によっては、フレームは、符号化ビットストリームからの再構築または復号フレームであってよい。その上、いくつかの例では、フレームは、前に説明したように、ルーマおよびクロマ成分を含み得る。
【0142】
ブロック244において、復号デバイス112は、フレームを用いてシグナリングされたALFフラグがオンそれともオフであるかを判断し得る。ALFフラグがオフの場合、ALFフィルタリングが不能にされることを示すので、復号デバイス112は、ブロック252においてフレームを出力し得る。一方、ALFフラグがオンの場合、ALFフィルタリングが可能にされることを示すので、ブロック246において、復号デバイス112は、フレーム中のピクセルを分類し得る。復号デバイス112は、
図2Bに示すブロック224に関して前に記載したように、ピクセルを分類することができる。
【0143】
ALFフラグは、ルーマフィルタリングが可能にされる(もしくは不能にされる)かどうか、またはルーマフィルタリングとクロマフィルタリングの両方が可能にされる(もしくは不能にされる)かどうかを示し得る。ルーマフィルタリングが可能にされる場合、本明細書に記載する復号デバイス112によって実施されるALFフィルタリングは、ルーマフィルタリングを含み得る。ルーマおよびクロマフィルタリングの両方が可能にされる場合、本明細書に記載する復号デバイス112によって実施されるALFフィルタリングは、ルーマおよびクロマフィルタリングの両方を含み得る。
【0144】
ブロック248において、復号デバイス112はALF係数およびクリッピング値を判断することができ、ブロック250において、復号デバイス112は、ALF係数およびクリッピング値を用いるALFフィルタをフレームに適用すればよい。復号デバイス112は、
図2Bに示すブロック226および228に関して前に説明したように、ALF係数およびクリッピング値を判断し、適用してよい。
【0145】
ブロック252において、復号デバイス112は、出力フレームを生成し得る。ALFフラグがブロック244においてオフだった場合、出力フレームは、ALFフィルタリングなしの再構築画像を含み得る。ALFフラグがブロック244においてオンだった場合、出力フレームは、ALFフィルタリング後の再構築画像を含み得る。出力フレームは、前に説明したように、フィルタ係数およびクリッピング値に基づいて算出された、ルーマおよびクロマ成分についてのピクセル値を含み得る。
【0146】
クリッピング値c(k,l)を算出するのに浮動小数点演算を使うとき、様々な問題および欠点が生じる場合がある。たとえば、クリッピング値c(k,l)を算出するための、上述した式(11)および(12)はしばしば、そのような算出を実施するのに、浮動小数点演算を使う必要がある。ただし、浮動小数点演算は、(たとえば、10進数を実装した結果として)計算の複雑さを増す場合があり、(たとえば、複雑さが増した結果として)デバイスのハードウェアおよび計算リソースに対する計算上の負担を増す場合があり、(たとえば、異なるアーキテクチャが浮動小数点数を異なるやり方で算出した結果として)復号誤差を増す場合がある。
【0147】
したがって、いくつかの例では、ALF用のクリッピング値の算出を簡易化し、そのような算出の効率を増すために、様々な手法が実装されてよい。ALF用のクリッピング値の、簡易化された、およびますます効率的な算出により、計算の複雑さを低減し、デバイスのハードウェアにおける計算上の負担を削減し、復号誤差を削減することができる。そのような手法は、以下でさらに説明するように、HEVCおよび/もしくはAVCなど、任意のビデオコーデック(現行および/もしくは将来の)、ならびに/またはVVCおよび/もしくは任意の将来のビデオコーディング規格など、任意のビデオコーディング規格に適用されてよい。
【0148】
場合によっては、本明細書に記載する技法は、ルーマ成分、1つもしくは複数のクロマ成分、またはルーマおよびクロマ成分の両方についてのクリッピング値の算出を簡易化することができる。いくつかの実装形態では、整数演算が、ルーマおよび/またはクロマ成分についてのクリッピング値を算出し、そのような算出を簡易化するのに使われ得る。
【0149】
図5は、本明細書に記載する、簡易化されたクリッピング値算出に基づいて導出されるクリッピング値の例示的テーブル500を示す。この例では、テーブル500中のクリッピング値は、整数演算を使って算出される。テーブル500中のクリッピング値を算出するためにここで使われる整数演算および技法は、そのような算出の複雑さを低下し、ハードウェアおよび計算リソースに対する計算上の負担を最小化し、復号誤差を削減することができる。
【0150】
テーブル500は、ビット深度列502およびクリッピングインデックス(clipIdx)列522を含む。ビット深度列502はビット深度値504~520を含み、クリッピングインデックス列522はクリッピングインデックス値524~530を含む。この例では、ビット深度値504~520は8ビットから16ビットにわたり、クリッピングインデックス値524~530は0から3にわたる。ビット深度値504~520は、ピクセルの各色成分および/またはピクセルの色深度に使われるビットの数(たとえば、ピクセルの色を示すのに使われるビットの数)を識別し得る。クリッピングインデックス値524~530は、サンプルまたはピクセルに使うためのクリッピング値のクリッピングインデックスを示す。この例では、クリッピングインデックス値524~530は、クリッピングインデックス0(524)、1(526)、2(528)、および3(530)を含む。
【0151】
いくつかの例では、特定のビットストリームまたはフレームについてのクリッピング値を算出するのに使われる特定のクリッピングインデックス値は、符号化ビットストリームまたはフレームとともにシグナリングされ得る。その上、いくつかの例では、クロマ成分についてのクリッピングインデックス値524~530は、alf_chroma_clip_idx[altIdx][j]によって定義されてよく、これは、インデックスaltIdxをもつ、代替クロマフィルタの第jの係数で乗算する前に使うためのクリッピング値のクリッピングインデックスを指定し得る。いくつかの例では、ビットストリーム適合のために、alf_chroma_clip_idx[altIdx][j]の値は0から3にわたってよく、ここで、altIdx=0,..,alf_chroma_num_alt_filters_minus1であり、j=0,...,5であり、alf_chroma_num_alt_filters_minus1は、代替クロマフィルタの数から1を引いたものを示す。いくつかの例では、alf_chroma_num_alt_filters_minus1は、0~7の範囲内であり得る。
【0152】
いくつかの例では、ルーマ成分についてのクリッピングインデックス値524~530は、alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j]によって定義されてよく、これは、alf_luma_coeff_delta_idx[filtIdx]によって指定されるルーマ信号の第jの係数で乗算する前に使うための、クリッピング値のクリッピングインデックスを指定することができ、ここでj=0,...,11である。いくつかの例では、alf_luma_coeff_delta_idx[filtIdx]は、0からNumAlfFilters-1にわたり得るfiltIdxによって示される、フィルタクラス用の、シグナリングされたALFルーマ係数デルタのインデックスを指定することができ、ここで、NumAlfFiltersはALFフィルタの数を示す。場合によっては、alf_luma_coeff_delta_idx[filtIdx]は、存在しないとき、0に等しいと推論され得る。その上、場合によっては、alf_luma_coeff_delta_idx[filtIdx]の長さは、Ceil(Log2(alf_luma_num_filters_signalled_minus1 + 1 ))ビットであってよく、alf_luma_coeff_delta_idx[filtIdx]の値は、0~alf_luma_num_filters_signalled_minus1の範囲にあり得る。
【0153】
いくつかの例では、テーブル500中のクリッピング値は、以下の式(14)に基づいてルーマ成分について、および以下の式(15)に基づいてクロマ成分について算出され得る。たとえば、クリッピング値c(k,l)は、以下のように算出され得る。
ルーマについてはc(k,l)=1<<(BitDepthY-offsetY[clipIdx(k,l)])、およびクロマについてはc(k,l)=1<<(BitDepthC-offsetC[clipIdx(k,l)])
式(14)
【0154】
式(14)において、項「<<」は左シフト算術演算子であり、i=0、1、2、または3であるoffsetY[i]およびoffsetC[i]は、クリッピングインデックス(clipIdx)に基づく、あらかじめ定義または算出された値である。いくつかの例では、offsetY={0,3,5,7}およびoffsetC={0,3,5,7}である。ここで、0、3、5、および7は、offsetYおよびoffsetCについて設定された所定の値であり得る。いくつかの例では、ルーマについての0~BitDepthYおよびクロマについての0~BitDepthCの範囲からの、offsetYおよびoffsetCについての特定の値は、クリッピングインデックス(clipIdx)値に基づいて判断されてよく、この値は、いくつかの例では、両端を含む0~3の範囲にあり得る。たとえば、clipIdxの値が0に等しいとき、offsetYおよびoffsetC値は0であってよく、clipIdxの値が1に等しいとき、offsetYおよびoffsetC値は3であってよく、clipIdxの値が2に等しいとき、offsetYおよびoffsetC値は5であってよく、clipIdxの値が3に等しいとき、offsetYおよびoffsetC値は7であってよい。
【0155】
式(14)は、対応するビット深度値504~520およびクリッピングインデックス値524~530に基づいて、テーブル500中のクリッピング値を効率的に算出することができ、そのような算出を、整数演算に基づいて簡易化することができる。たとえば、式(14)を使うと、0、3、5、および7のオフセット値ならびに8(504)のビット深度値が与えられ、c(k,l)についてのクリッピング値は、以下のように算出され得る。c(k,l)=1<<(BitDepth-offset[clipIdx(k,l)])、ならびにBitDepth=8およびclipIdx=0である場合、offset[0]=0である。したがって、c(k,l)は1<<(8-0)に等しく、これは1左シフト8に等しい。nの分の左算術シフトは、2nで乗算することに等価である。したがって、1左シフト8は、28に等しい。したがって、ビット深度値が8であり、オフセット値が0であるとき、c(k,l)は、テーブル500に示すように、28に等しい。
【0156】
同様に、BitDepth=8およびclipIdx=1のとき、offset[1]=3である。したがって、c(k,l)は1<<(8-3)に等しく、これは1左シフト5または25に等しい。したがって、ビット深度値が8であり、オフセット値が3であるとき、c(k,l)は、テーブル500に示すように、25に等しい。
【0157】
BitDepth=8、およびclipIdx=2のとき、offset[2]=5である。したがって、c(k,l)は1<<(8-5)に等しく、これは1左シフト3または23に等しい。したがって、ビット深度値が8であり、オフセット値が5であるとき、c(k,l)は、テーブル500に示すように、23に等しい。
【0158】
最後に、BitDepth=8、およびclipIdx=3のとき、offset[3]=7である。したがって、c(k,l)は1<<(8-7)に等しく、これは1左シフト1または21に等しい。したがって、ビット深度値が8であり、オフセット値が7であるとき、c(k,l)は、テーブル500に示すように、21に等しい。
【0159】
上の例示的算出は、オフセット値0、3、5、7ならびにクリッピングインデックス値0、1、2、および3に基づいて、ビット深度値506~520(たとえば、9~16)について同様に実施されて、テーブル500に示す、対応するクリッピング値を生じ得る。たとえば、テーブル500に示すように、9のビット深度および0のクリッピングインデックス値に対して、式(14)に基づいて生じたクリッピング値は29であり、9のビット深度および1のクリッピングインデックス値に対して、式(14)に基づいて生じたクリッピング値は26であり、9のビット深度および2のクリッピングインデックス値に対して、式(14)に基づいて生じたクリッピング値は24であり、9のビット深度および3のクリッピングインデックス値に対して、式(14)に基づいて生じたクリッピング値は22である。
【0160】
左演算シフトを使い、浮動小数点数を使わない、そのような算出は、クリッピング値算出を大幅に簡易化し、そのような算出のハードウェアおよび計算リソースに対する負担を削減し、復号誤差を削減することができる。さらに、クリッピング動作は、論理orおよび(BitDepth-offset[clipIdx(k,l)]+1)ビットから最下位ビットまでの最上位ビットとして実装されてよい。これにより、ハードウェアに対する負担も削減することができる。
【0161】
他の説明のための例では、整数演算を使って、クリッピング値c(k,l)算出は、以下のように実装され得る。
ルーマに対してはc(k,l)=1<<((4*BitDepthY-BitDepthY*clipIdx(k,l))>>2)、および
クロマに対してはc(k,l)=1<<((3*BitDepthC-8*clipIdx(k,l))/3)
式(15)
【0162】
別の説明のための例では、ルーマ成分についてのクリッピング値c(k,l)は、以下の式(16)でのように算出され得る。具体的には、式c(k,l)=Round(2(BitDepthY*(4-clipIdx(k,l))/4))は、以下のように書き換えられてよい。
c(k,l)=Round(2(BitDepthY- (BitDepthY*clipIdx(k,l))/4))=Round(2(BitDepthY-a-b/4))
=Round(2(BitDepthY-a)*2-b/4)=((1<<(BitDepthY-a))*remY[b])>>c
式(16)
【0163】
ここで、aは(BitDepthY*clipIdx(k,l))>>2)に等しく、bは(BitDepthY*clipIdx(k,l))および0x03に等しく、remY[b]は浮動小数点演算におけるRound(2-b/4*(1<<c))に等価であり、bは0、1、2または3に等しく、cは、あらかじめ定義された整数値である。いくつかの例では、remY[b]の値は、ルックアップテーブル(LUT)として整数値で記憶されてよい。式(16)からのこの例では、c[k,l]は、整数演算を用いて、浮動小数点数を使わずに算出され得る。
【0164】
そのような説明のための例では、クロマ成分についてのクリッピング値c(k,l)は、以下のように算出され得る。
c(k,l)=Round(2(BitDepthC-8)*2(8*(3-clipIdx[k,l])/3))=Round(2BitDepthC*2-8*clipIdx(k,l)/3)
=Round(2BitDepthC-a-b/3)=Round(1<<(BitDepthC-a)*2-b/3)
=((1<<(BitDepthC-a))*remC[b])>>c
式(17)
【0165】
ここで、aは8*clipIdx(k,l)/3に等しく、bは[8*clipIdx(k,l)]モジュラ3に等しく、remC[b]は、浮動小数点演算におけるRound(2-b/3*(1<<c))に等価であり、bは0、1または2に等しく、cは、あらかじめ定義された整数値である。remY[b]の値は、LUTとして整数値で記憶されてよい。式(17)からのこの例では、c[k,l]は、整数演算を用いて、および浮動小数点数を用いずに算出され得る。
【0166】
別の説明のための例では、ルーマ成分用に、クリッピング値c(k,l)は、以下のように算出され得る。
c(k,l)=1<<(BitDepthY-offsetY[clipIdx(k,l)])、式(18)
【0167】
その上、クロマ成分用に、クリッピング値c(k,l)は、以下のように算出され得る。
c(k,l)=1<<(BitDepthC-offsetC[clipIdx(k,l)])、式(19)
【0168】
上記例では、iが0、1、2、または3に等しいoffsetY[i]およびoffsetC[i]は、クリッピングインデックス(clipIdx(k,l))に基づく、あらかじめ定義または算出された値である。
【0169】
いくつかの例では、ルーマおよび/またはクロマ成分についてのクリッピング値は、整数演算を用いる、上で言及されていない(たとえば、他の式を使う)他の方法に基づいて算出され得る。
【0170】
いくつかの実装形態では、同じ式が、ルーマおよびクロマ成分についてのクリッピング値を算出するのに使われ得る。たとえば、上述した式(14)からの同じ式が、ルーマおよびクロマ成分についてのクリッピング値を算出するのに使われてよい。
【0171】
1つの説明のための例では、浮動小数点演算を用いる式が、ルーマおよびクロマ成分の両方についてのクリッピング値を算出するために使われ得る。たとえば、場合によっては、式(11)および(12)からの1つの式が、ルーマおよびクロマ成分の両方についてのクリッピング値を算出するのに使われ得る。代替として、本明細書において与えられない他の式が使われてよい。別の説明のための例では、整数演算を用いる式が使われてよい。たとえば、式(14)~(19)からの1つの式が使われてよい。代替として、本明細書において与えられない他の式が使われてよい。
【0172】
例示的システム、構成要素および概念について開示したが、本開示はここで、
図6に示すように、ビデオデータを処理するための例示的方法600に移る。いくつかの例では、方法600によるビデオデータの処理は、適応ループフィルタリングのためのクリッピング値算出を簡易化することを含み得る。本明細書において概説するステップは、例示目的のために与えられる非限定的例であり、いくつかのステップを除き、追加し、または修正する組合せを含む、それらのどの組合せで実装されてもよい。
【0173】
ブロック602において、方法600は、1つまたは複数のピクチャを含むビデオデータを取得するステップを含み得る。いくつかの例では、符号化デバイス(たとえば、104)は、1つまたは複数のピクチャを、カメラなどのビデオソース(たとえば、102)から受信し得る。いくつかの例では、復号デバイス(たとえば、112)は、符号化デバイス(たとえば、104)から、1つまたは複数のピクチャを含む符号化ビデオビットストリームを受信し得る。いくつかの例では、符号化ビデオビットストリームは、シグナリング情報を含み得る。シグナリング情報は、たとえば、限定なしで、ブロック606に関して以下で説明するようにクリッピング値を判断するのに使われるオフセット値、ブロック606に関して以下で説明するようにクリッピング値を判断するのに使われるクリッピングインデックス値、フィルタパラメータ(たとえば、フィルタ係数、フィルタサイズパラメータ、フィルタ形状パラメータなど)、ならびに/または適応ループフィルタフラグ(たとえば、ルーマおよび/もしくはクロマALFフィルタリングが可能にされるかどうかを示すALFフラグ)を含み得る。
【0174】
ブロック604において、方法600は、1つまたは複数のピクチャからピクチャのブロックを取得するステップを含み得る。いくつかの例では、符号化デバイス(たとえば、104)が、ビデオデータを、ピクチャのブロックを含む1つまたは複数のブロックに区分し得る。いくつかの例では、ブロックは、符号化ビデオビットストリーム中の符号化ブロックであってよく、復号デバイス(たとえば、112)が、ブロック、ピクチャおよび/またはビットストリームを符号化するのに使われるコーディングアルゴリズムおよび/または規格に一致するコーディングアルゴリズムおよび/または規格を適用することによって、ビットストリーム中のシグナリング情報を使って、ピクチャのブロックを復号し得る。いくつかの例では、復号デバイスは、
図1に示すシステム100および
図8に示す復号デバイス112に関して記載するように、ピクチャのブロックを再構築することができる。
【0175】
ブロック606において、方法600は、少なくとも1つのフィルタについてのクリッピング値(たとえば、c(k,l))を判断するステップを含み得る。いくつかの例では、クリッピング値は、ピクチャのブロック中のルーマ成分および/またはピクチャのブロック中のクロマ成分に対応し得る。いくつかの例では、クリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断される。場合によっては、第2の整数は、ブロックからのサンプル(たとえば、ルーマサンプル、クロマサンプル)についてのビット深度値から、クリッピングインデックス値(たとえば、clipIdx(k,l))に関連付けられたオフセット値(たとえば、offset[clipIdx(k,l)])を引いた結果を含み得る。たとえば、場合によっては、各クリッピング値は、上で記載した式(14)に基づいて判断されてよい。
【0176】
場合によっては、第1の整数は1であり、第1の整数を第2の整数だけ左シフトすることは、2を、第2の整数に等価な指数の冪乗まで累乗することを含む。たとえば、第1の整数が1であり、第2の整数が8である場合、第1の整数を第2の整数だけ左シフトすることは、2が8乗されること、すなわち28に等しくてよい。
【0177】
いくつかの例では、クリッピング値は、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットを含み得る。場合によっては、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットは両方とも、ブロック606に関して記載するように、第1の整数を第2の整数だけ左シフトすることによって判断され得る。
【0178】
場合によっては、クリッピング値は、クリッピングインデックステーブル(たとえば、テーブル500)中のフィルタクリッピング値のセットに対応してよく、クリッピングインデックステーブル中のフィルタクリッピング値のセットの異なるクリッピング値は、異なるブロックおよび/またはピクチャ内の位置(たとえば、k,l)に対応してよい。いくつかの例では、ブロックおよび/またはピクチャ内の異なる位置は、ピクチャ中の異なるピクセルロケーションおよび/または領域を含み得る。
【0179】
場合によっては、オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値であってよい。たとえば、オフセット値は式(14)に関して上で記載したように、0、3、5、または7のうちの1つであってよい。場合によっては、オフセット値は、クリッピングインデックス値に基づいて(たとえば、clipIdx(k,l)に基づいて)複数の所定のオフセット値から判断される。いくつかの例では、少なくとも1つのフィルタ用のクリッピング値を判断することは、ピクチャからの複数のサンプル(たとえば、ルーマおよび/またはクロマサンプル)についての対応するクリッピング値を判断することを含んでよく、各対応するクリッピング値は、複数のサンプルからの特定のサンプルに関連付けられてよい。場合によっては、各対応するクリッピング値は、第1の整数を、特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され得る。特定の整数は、特定のサンプルについてのビット深度値から、複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含み得る。いくつかの例では、特定のオフセット値は、上で記載したように、特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される。
【0180】
場合によっては、少なくとも1つのフィルタ用のクリッピング値は、ルーマ成分についてのルーマクリッピング値およびクロマ成分についてのクロマクリッピング値を含み得る。いくつかの例では、ルーマクリッピング値は、第1の整数を、ブロックからのルーマサンプルについてのビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含む第3の整数だけ左シフトすることによって判断され得る。いくつかの例では、クロマクリッピング値は、第1の整数を、ブロックからのクロマサンプルについてのビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む第4の整数だけ左シフトすることによって判断され得る。
【0181】
いくつかの例では、少なくとも1つのフィルタは、ALFを含み得る。いくつかの例では、少なくとも1つのフィルタは、
図3Aに示すフィルタ300などの5×5適応ループフィルタ、および
図3Bに示すフィルタ330などの7×7適応ループフィルタを含む。
【0182】
場合によっては、少なくとも1つのフィルタ用のクリッピング値を判断することは、少なくとも1つのフィルタについてのフィルタ係数値(たとえば、f(k,l))を判断することを含み得る。その上、いくつかの態様では、ブロック606において、方法600は、他の技法を使ってクリッピング値を判断し得る。たとえば、場合によっては、方法600は、上述した式(15)~(19)のうちのいずれに基づいても、クリッピング値を判断することができる。
【0183】
ブロック608において、方法600は、少なくとも1つのフィルタをブロックに適用するステップを含み得る。方法600は、少なくとも1つのフィルタに基づいてフィルタリングおよびクリッピングされたブロックを含む出力ブロックを生成し得る。たとえば、方法600は、クリッピング値に基づくALFおよびクリッピングを用いてフィルタリングされたブロックを含む出力ブロックを生成し得る。その上、少なくとも1つのフィルタをブロックに適用することは、ブロック中の1つまたは複数のサンプル(たとえば、1つまたは複数のルーマおよび/またはクロマサンプル)にフィルタ係数およびクリッピング値を適用することを含み得る。
【0184】
場合によっては、少なくとも1つのフィルタをブロックに適用することは、クロマ成分に5×5適応ループフィルタを適用すること、およびルーマ成分に7×7適応ループフィルタを適用することを含み得る。いくつかの例では、5×5適応ループフィルタおよび7×7適応ループフィルタは、ダイヤモンド形状を有し得る。他の例では、少なくとも1つのフィルタは、1つまたは複数の他のフィルタサイズおよび/または形状を含み得る。
【0185】
いくつかの例では、復号デバイス(たとえば、112)は、1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得し、符号化ビデオビットストリームからピクチャのブロックを復号し得る。いくつかの例では、復号デバイスは、符号化ビデオビットストリームに関連付けられたシグナリング情報を識別し、シグナリング情報を使って、ブロックを再構築し、少なくとも1つのフィルタ用のクリッピング値を判断し、少なくとも1つのフィルタ用の1つもしくは複数の係数を判断し、フィルタサイズおよび/もしくは形状を判断し、フィルタリングが可能にされるかどうかを判断し、かつ/または再構築されたブロックに、少なくとも1つのフィルタを適用し得る。いくつかの例では、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ(たとえば、フィルタ係数、フィルタサイズパラメータ、フィルタ形状パラメータなど)、ならびに/または適応ループフィルタフラグ(たとえば、ルーマおよび/もしくはクロマALFフィルタリングが可能にされるかどうかを示すALFフラグ)を含み得る。
【0186】
いくつかの例では、方法600は、1つまたは複数のピクチャを含む符号化ビデオビットストリームを(たとえば、符号化デバイス104により)生成するステップと、符号化ビデオビットストリームを復号デバイス(たとえば、112)へ送るステップとを含み得る。場合によっては、符号化ビデオビットストリームは、シグナリング情報とともに送られ得る。シグナリング情報は、たとえば、オフセット値、クリッピングインデックス値、フィルタパラメータ(たとえば、フィルタ係数、フィルタサイズパラメータ、フィルタ形状パラメータなど)、ならびに/または適応ループフィルタフラグ(たとえば、ルーマおよび/もしくはクロマALFフィルタリングが可能にされるかどうかを示すALFフラグ)を含み得る。
【0187】
いくつかの例では、方法600は、符号化ビデオビットストリームを記憶するステップを含み得る。いくつかの例では、方法600は、符号化ビデオビットストリーム中のピクチャのブロックを再構築し、符号化ビデオ中のピクチャのブロックのうちの1つまたは複数に、クリッピング値を用いる1つまたは複数のALFフィルタを適用した後、符号化ビデオビットストリームから再構築されたビデオを提示するステップを含み得る。
【0188】
いくつかの実装形態では、本明細書に記載するプロセス(または方法)は、
図1に示すシステム100などのコンピューティングデバイスまたは装置によって実施され得る。たとえば、プロセスは、
図1および
図7に示す符号化デバイス104によって、別のビデオソース側デバイスもしくはビデオ送信デバイスによって、
図1および
図7に示す復号デバイス112によって、ならびに/またはプレーヤデバイス、ディスプレイ、もしくは任意の他のクライアント側デバイスなど、別のクライアント側デバイスによって実施され得る。場合によっては、コンピューティングデバイスまたは装置は、本明細書に記載するプロセスのステップを実践するように構成されたデバイスのプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または他の構成要素を含み得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオフレームを含むビデオデータ(たとえば、ビデオシーケンス)をキャプチャするように構成されたカメラを含んでよい。いくつかの例では、ビデオデータをキャプチャするカメラまたは他のキャプチャデバイスは、コンピューティングデバイスとは別個であり、その場合、コンピューティングデバイスは、キャプチャされたビデオデータを受信または取得する。コンピューティングデバイスは、ビデオデータを通信するように構成されたネットワークインターフェースをさらに含み得る。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信するように構成され得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオビットストリームのピクチャのサンプルなどの、出力ビデオコンテンツを表示するためのディスプレイを含み得る。
【0189】
プロセスは、論理フロー図に関して説明され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実装され得る動作のシーケンスを表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると、記載された動作を実施する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実施するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明する任意の数の動作は、プロセスを実装するために任意の順序で、かつ/または並列に組み合わせられ得る。
【0190】
加えて、プロセスは、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実施することができ、1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで、まとめて実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装することができる。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってよい。
【0191】
本明細書で説明するコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)の中で実装され得る。いくつかの例では、システムは、後で宛先デバイスによって復号されるべき符号化ビデオデータを提供するソースデバイスを含む。具体的には、ソースデバイスは、コンピュータ可読媒体を介して宛先デバイスにビデオデータを提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、モバイルデバイス、モノのインターネット(IoT)デバイス、HMDなどを含む、幅広いデバイスのいずれかを備えてよい。場合によっては、ソースデバイスおよび宛先デバイスは、ワイヤレス通信のために装備され得る。
【0192】
宛先デバイスは、復号されるべき符号化ビデオデータを、コンピュータ可読媒体を介して受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスへ符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスが符号化ビデオデータをリアルタイムで宛先デバイスに直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調されてよく、宛先デバイスへ送信されてよい。通信媒体は、無線周波数(RF)スペクトル、または1つもしくは複数の物理伝送線路など、任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0193】
いくつかの例では、符号化データは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化データは、入力インターフェースによって、記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイスによって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイスに送信することが可能な、任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイトのための)、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む任意の標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0194】
本開示の技法は、ワイヤレスの適用例または設定に必ずしも限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上へ符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のうちのいずれかをサポートする際にビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0195】
一例では、ソースデバイスは、ビデオソース、ビデオエンコーダ、および出力インターフェースを含む。宛先デバイスは、入力インターフェース、ビデオデコーダ、およびディスプレイデバイスを含み得る。ソースデバイスのビデオエンコーダは、本明細書で開示する技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0196】
上記の例示的システムは一例にすぎない。ビデオデータを並行して処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。一般に、本開示の技法はビデオ符号化デバイスによって実施されるが、技法はまた、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実施され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実施され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスへの送信のためにコード化ビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス間での一方向または双方向のビデオ送信をサポートし得る。
【0197】
ビデオソースは、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックスベースデータ、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを生成し得る。場合によっては、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラ電話またはビデオ電話を形成し得る。しかしながら、上述のように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの適用例に適用され得る。各事例において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータで生成されたビデオは、ビデオエンコーダによって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
【0198】
述べたように、コンピュータ可読媒体は、ワイヤレスブロードキャスト送信もしくはワイヤードネットワーク送信などの一時的媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイスから符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイスに与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイスから符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形の1つまたは複数のコンピュータ可読媒体を含むものと理解され得る。
【0199】
宛先デバイスの入力インターフェースは、コンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含むとともにビデオエンコーダによって規定されるシンタックス情報を含んでよく、シンタックス情報はビデオデコーダによっても使用される。ディスプレイデバイスは、復号ビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。適用例の様々な実施形態が説明された。
【0200】
符号化デバイス104および復号デバイス112の具体的な詳細が、それぞれ、
図7および
図8に示される。
図7は、本開示で説明する技法のうちの1つまたは複数を実装し得る例示的な符号化デバイス104を示すブロック図である。符号化デバイス104は、たとえば、本明細書で説明するシンタックス構造(たとえば、VPS、SPS、PPS、または他のシンタックス要素のシンタックス構造)を生成し得る。符号化デバイス104は、ビデオスライス内のビデオブロックのイントラ予測およびインター予測コーディングを実施し得る。前に説明されたように、イントラコーディングは、空間予測に少なくとも部分的に依拠して、所与のビデオフレームまたはピクチャ内の空間的冗長性を低減または除去する。インターコーディングは、ビデオシーケンスの隣接するまたは取り囲むフレーム内の時間的冗長性を低減または除去するために、時間予測に少なくとも部分的に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのうちのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのうちのいずれかを指し得る。
【0201】
符号化デバイス104は、区分ユニット35、予測処理ユニット41、フィルタユニット63、ピクチャメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、およびイントラ予測処理ユニット46を含む。ビデオブロック再構築のために、符号化デバイス104はまた、逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。フィルタユニット63は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表すことが意図される。フィルタユニット63はループ内フィルタであるものとして
図7で示されるが、他の構成では、フィルタユニット63は、ループ後フィルタとして実装されてよい。後処理デバイス57は、符号化デバイス104によって生成された符号化ビデオデータに対して追加の処理を実施し得る。本開示の技法は、いくつかの事例では、符号化デバイス104によって実装され得る。しかしながら、他の事例では、本開示の技法のうちの1つまたは複数は、後処理デバイス57によって実装されてよい。
【0202】
図7に示すように、符号化デバイス104はビデオデータを受信し、区分ユニット35はデータをビデオブロックに区分する。区分することはまた、スライス、スライスセグメント、タイル、または他のもっと大きい単位に区分すること、ならびに、たとえば、LCUおよびCUの4分木構造によるビデオブロック区分を含み得る。符号化デバイス104は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(また場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、エラー結果(たとえば、コーディングレート、および歪みのレベルなど)に基づいて、現在のビデオブロックに対して、複数のイントラ予測コーディングモードのうちの1つ、または複数のインター予測コーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、残差ブロックデータを生成するために加算器50に、また参照ピクチャとして使用するための符号化ブロックを再構築するために加算器62に、得られたイントラまたはインターコード化ブロックを提供し得る。
【0203】
予測処理ユニット41内のイントラ予測処理ユニット46は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライスの中の1つまたは複数の近隣ブロックに対する、現在のビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間的圧縮を提供するために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ブロックに対する、現在のビデオブロックのインター予測コーディングを実施する。
【0204】
動き推定ユニット42は、ビデオシーケンス用の所定のパターンに従ってビデオスライス用のインター予測モードを判断するように構成され得る。所定のパターンは、シーケンスの中のビデオスライスを、Pスライス、Bスライス、またはGPBスライスとして指定し得る。動き推定ユニット42および動き補償ユニット44は高度に集積され得るが、概念的な目的のために別個に図示される。動き推定ユニット42によって実施される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックの予測ユニット(PU)の変位を示し得る。
【0205】
予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUと厳密に一致することが判明したブロックである。いくつかの例では、符号化デバイス104は、ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。たとえば、符号化デバイス104は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対する動き探索を実施し、分数ピクセル精度を有する動きベクトルを出力し得る。
【0206】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスの中のビデオブロックのPUのための動きベクトルを算出する。参照ピクチャは、その各々がピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、算出された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44へ送る。
【0207】
動き補償ユニット44によって実施される動き補償は、場合によっては、サブピクセル精度への補間を実施する、動き推定によって判断された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴う場合がある。現在のビデオブロックのPUの動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリスト内で動きベクトルが指す予測ブロックの位置を特定し得る。符号化デバイス104は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックに対する残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実施する1つまたは複数の構成要素を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に復号デバイス112によって使用するために、ビデオブロックおよびビデオスライスに関連するシンタックス要素を生成し得る。
【0208】
イントラ予測処理ユニット46は、上に記述したように、動き推定ユニット42および動き補償ユニット44によって実施されるインター予測の代替として、現在のブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使うためにイントラ予測モードを判断することができる。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パスの間、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測処理ユニット46は、テストされたモードから、使用するのに適したイントラ予測モードを選択することができる。たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードに対してレート歪み分析を使用してレート歪み値を算出してよく、テストされたモードの中から最良のレート歪み特性を有するイントラ予測モードを選択してよい。レート歪み分析は、一般に、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(または誤差)、ならびに、符号化ブロックを生成するために使用されたビットレート(すなわち、ビット数)を判断する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックのための最良のレート歪み値を示すのかを判断するために、様々な符号化ブロックのための歪みおよびレートから比を算出し得る。
【0209】
いずれの場合も、ブロック用のイントラ予測モードを選択した後、イントラ予測処理ユニット46は、ブロック用の選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス104は、様々なブロック用の符号化コンテキストの構成データ定義、ならびに最確のイントラ予測モード、イントラ予測モードインデックステーブル、およびコンテキストの各々に対して使用すべき修正されたイントラ予測モードインデックステーブルの表示を、送信されるビットストリームの中に含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルおよび複数の修正済みイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)を含み得る。
【0210】
予測処理ユニット41がインター予測またはイントラ予測のいずれかを介して現在のビデオブロックの予測ブロックを生成した後、符号化デバイス104は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックの中の残差ビデオデータは、1つまたは複数のTUの中に含められてよく、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、ピクセルドメインから周波数ドメインなどの変換ドメインに、残差ビデオデータをコンバートし得る。
【0211】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ることができる。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調節することによって変更され得る。いくつかの例では、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
【0212】
量子化に続いて、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化技法を実施することができる。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化ビットストリームは、復号デバイス112へ送信されてよく、または復号デバイス112による後の送信もしくは取出しのためにアーカイブされてもよい。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスの動きベクトルおよび他のシンタックス要素をエントロピー符号化し得る。
【0213】
逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使うために、それぞれ、逆量子化および逆変換を適用してピクセルドメインにおける残差ブロックを再構築する。動き補償ユニット44は、参照ピクチャリスト内の参照ピクチャのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを算出し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を算出するために、1つまたは複数の補間フィルタを、再構築された残差ブロックに適用し得る。加算器62は、ピクチャメモリ64に記憶するための参照ブロックを生成するために、再構築された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャの中のブロックをインター予測するための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0214】
いくつかの例では、
図7の符号化デバイス104は、ALFフィルタおよびクリッピング値を算出すること、クリッピングを用いてALFフィルタリングを実施すること、様々なコーディングパラメータを導出することなどを行うように構成されたビデオエンコーダの例を表し得る。符号化デバイス104は、たとえば、上述したように、ALFフィルタおよびクリッピング値を算出し、かつ/またはクリッピングを用いてALFフィルタリングを実施し得る。たとえば、符号化デバイス104は、
図2Aから
図6に関して上記で説明したプロセスおよび技法を含む、本明細書で説明する技法のいずれかを実施し得る。場合によっては、本開示の技法のうちのいくつかは、後処理デバイス57によって実装されてもよい。
【0215】
図8は、例示的復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、フィルタユニット91、およびピクチャメモリ92を含む。予測処理ユニット81は、動き補償ユニット82およびイントラ予測処理ユニット84を含む。復号デバイス112は、いくつかの例では、
図7からの符号化デバイス104に関して説明した符号化パスとは概して逆の復号パスを実施し得る。
【0216】
復号プロセスの間、復号デバイス112は、符号化デバイス104によって送られた符号化ビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化ビデオビットストリームを受信する。いくつかの実施形態では、復号デバイス112は、符号化デバイス104から符号化ビデオビットストリームを受信し得る。いくつかの実施形態では、復号デバイス112は、サーバ、媒体認識ネットワーク要素(MANE)、ビデオエディタ/スプライサ、または、上で説明された技法の1つまたは複数を実装するように構成された他のそのようなデバイスなどのネットワークエンティティ79から、符号化ビデオビットストリームを受信し得る。ネットワークエンティティ79は、符号化デバイス104を含んでも含まなくてもよい。本開示で説明する技法のうちのいくつかは、ネットワークエンティティ79が符号化ビデオビットストリームを復号デバイス112へ送信する前に、ネットワークエンティティ79によって実装され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ79および復号デバイス112は、別個のデバイスの一部であってよく、他の事例では、ネットワークエンティティ79に関して説明する機能性は、復号デバイス112を備える同じデバイスによって実施されてよい。
【0217】
復号デバイス112のエントロピー復号ユニット80は、ビットストリームをエントロピー復号して、量子化された係数、動きベクトル、および他のシンタックス要素を生成する。エントロピー復号ユニット80は、動きベクトルおよび他のシンタックス要素を予測処理ユニット81にフォワードする。復号デバイス112は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。エントロピー復号ユニット80は、VPS、SPS、およびPPSなどの1つまたは複数のパラメータセットの中の、固定長シンタックス要素と可変長シンタックス要素の両方を処理および構文解析し得る。
【0218】
ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリスト内の参照ピクチャのうちの1つから生成され得る。復号デバイス112は、ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構築し得る。
【0219】
動き補償ユニット82は、動きベクトルおよび他のシンタックス要素を構文解析することによって、現在のビデオスライスのビデオブロックのための予測情報を判断し、復号されている現在のビデオブロックの予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット82は、パラメータセットの中の1つまたは複数のシンタックス要素を使用して、ビデオスライスのビデオブロックをコーディングするために使用された予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライス用の1つまたは複数の参照ピクチャリストに対する構成情報、スライスのインター符号化ビデオブロックごとの動きベクトル、スライスのインターコード化ビデオブロックごとのインター予測ステータス、および現在のビデオスライスの中のビデオブロックを復号するための他の情報を判断し得る。
【0220】
動き補償ユニット82は、補間フィルタに基づいて補間を実施することもできる。動き補償ユニット82は、ビデオブロックの符号化の間に符号化デバイス104によって使用されたような補間フィルタを使用して、参照ブロックのサブ整数ピクセルに対する補間値を算出し得る。この場合、動き補償ユニット82は、符号化デバイス104によって使用された補間フィルタを、受信されたシンタックス要素から判断してよく、予測ブロックを生成するためにその補間フィルタを使用し得る。
【0221】
逆量子化ユニット86は、ビットストリーム中で与えられエントロピー復号ユニット80によって復号された量子化された変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、ビデオスライス中の各ビデオブロックについてビデオエンコーダ104によって算出される量子化パラメータを使用して量子化の程度を判断し、同様に、適用すべき逆量子化の程度を判断することを含み得る。逆変換処理ユニット88は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換(たとえば、逆DCTまたは他の好適な逆変換)、逆整数変換、または概念的に類似の逆変換プロセスを適用する。
【0222】
動き補償ユニット82が動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックの予測ブロックを生成した後、復号デバイス112は、逆変換処理ユニット88からの残差ブロックを、動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実施する1つまたは複数の構成要素を表す。所望される場合、(コーディングループ中またはコーディングループ後のいずれかの)ループフィルタも、ピクセル遷移を平滑化するために、または別の方法でビデオ品質を改善するために使用され得る。フィルタユニット91は、デブロッキングフィルタ、適応ループフィルタ(ALF)、および/またはサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表すことを意図する。フィルタユニット91はループ内フィルタであるものとして
図8に示されるが、他の構成では、フィルタユニット91は、ループ後フィルタとして実装されてよい。所与のフレームまたはピクチャの中の復号ビデオブロックは次いで、ピクチャメモリ92に記憶され、ピクチャメモリ92は、後続の動き補償のために使われる参照ピクチャを記憶する。ピクチャメモリ92はまた、
図1に示すビデオ宛先デバイス122などのディスプレイデバイス上で後で提示できるように、復号ビデオを記憶する。
【0223】
いくつかの例では、
図8の復号デバイス112は、ALFフィルタおよびクリッピング値を算出すること、クリッピングを用いてALFフィルタリングを実施すること、様々なコーディングパラメータを導出することなどを行うように構成されたビデオデコーダの例を表す。復号デバイス112は、たとえば、上述したように、ALFフィルタおよびクリッピング値を算出し、クリッピングを用いてALFフィルタリングを実施し得る。たとえば、復号デバイス112は、
図2Aから
図6に関して上記で説明したプロセスおよび技法を含む、本明細書で説明する技法のいずれかを実施し得る。
【0224】
本明細書において使われる限り、「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルの記憶デバイス、光記憶デバイス、ならびに命令および/またはデータを記憶、収容、または搬送することができる様々な他の媒体を含む。コンピュータ可読媒体は、データがそこに記憶され得るとともに、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない非一時的媒体を含み得る。非一時的媒体の例は、限定はしないが、磁気ディスクもしくは磁気テープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表し得る、その上に記憶されたコードおよび/または機械実行可能命令を有し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受けることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡され、転送され、または送信され得る。
【0225】
いくつかの例では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含み得る。ただし、言及されるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号などの媒体を本来は明確に除く。
【0226】
具体的な詳細が、本明細書において与えられる実施形態および例の完全な理解を提供するために、上記の説明において与えられている。しかしながら、本実施形態がこれらの具体的な詳細なしに実践され得ることが、当業者によって理解されよう。説明の明快のために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェア、またはハードウェアとソフトウェアの組合せで具現化される方法におけるステップもしくはルーチンを含む機能ブロックを含む個々の機能ブロックを含むように提示される場合がある。図面に示され、かつ/または本明細書に記載されるもの以外の追加構成要素が使われてよい。たとえば、不必要な詳細で実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他の構成要素がブロック図の形で構成要素として示されている場合がある。他の事例では、実施形態を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示されている場合がある。
【0227】
また、個々の実施形態が、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上述されている場合がある。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実施することができる。加えて、動作の順序は並べ替えられてよい。プロセスは、その動作が完了するときに終了するが、図に含まれない追加のステップを有することがある。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムに対応し得る。プロセスが関数に相当するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに相当し得る。
【0228】
上で記載した例によるプロセスおよび方法は、記憶されているか、またはそうでなければコンピュータ可読媒体から入手可能なコンピュータ実行可能命令を使って実装され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスに、特定の機能または機能のグループを実施させるか、またはそうでなければ実施するように汎用コンピュータ、専用コンピュータ、または処理デバイスを構成する命令およびデータを含み得る。使われるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、アセンブリ言語、ファームウェア、ソースコードなどのようなバイナリ、中間フォーマット命令であってよい。命令、使われる情報、および/または記載した例による方法中に作成される情報を記憶するのに使われ得るコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを設けられたUSBデバイス、ネットワーク接続された記憶デバイスなどを含む。
【0229】
これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらのどの組合せを含んでもよく、様々なフォームファクタのうちのいずれをもとり得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実施されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサは、必要なタスクを実施することができる。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他の小型フォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書に記載する機能性は、周辺装置またはアドインカードにおいて具現化されてもよい。そのような機能性は、さらなる例として、異なるチップの中の回路板または単一のデバイス中で実行する異なるプロセス上で実装されてもよい。
【0230】
命令、そのような命令を伝えるための媒体、命令を実行するための計算リソース、およびそのような計算リソースをサポートするための他の構造は、本開示に記載する機能を提供するための例示的手段である。
【0231】
上記の説明では、本出願の態様は、それらの特定の実施形態を参照しながら説明されているが、本出願がそれらに限定されないことを当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、本発明の概念が別の方法で様々に具現化または利用されてよく、従来技術による限定を除いて、添付の特許請求の範囲がそのような変形形態を含むものと解釈されることを意図することを理解されたい。上記で説明した適用例の様々な特徴および態様は、個別または一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明したものを越えた任意の数の環境および適用例において使用され得る。したがって、本明細書および図面は、限定ではなく例示であると見なされるべきである。例示のために、方法は特定の順序で説明された。代替の実施形態では、説明された順序とは異なる順序で方法が実施され得ることを諒解されたい。
【0232】
本明細書において使われる、未満(「<」)およびよりも大きい(「>」)という記号または用語は、本記述の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられ得ることが、当業者には諒解されよう。
【0233】
構成要素がいくつかの動作を実施する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実施するように電子回路もしくはハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、もしくは他の好適な電子回路)をプログラムすることによって、またはそれらの任意の組合せで達成され得る。
【0234】
「に結合された」という句は、直接もしくは間接的のいずれかで別の構成要素に物理的に接続されるどの構成要素も、および/または別の構成要素と直接または間接的のいずれかで通信する(たとえば、ワイヤードもしくはワイヤレス接続、および/または他の適切な通信インターフェースを介して別の構成要素に接続された)どの構成要素も指す。
【0235】
セット「の少なくとも1つ」および/またはセットの「1つまたは複数」と具陳するクレーム文言または他の文言は、セットの1つのメンバーまたはセットの(任意の組合せでの)複数のメンバーがクレームを満足することを示す。たとえば、「AおよびBのうちの少なくとも1つ」と具陳するクレーム文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」と具陳するクレーム文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「の少なくとも1つ」および/またはセットの「1つまたは複数」という文言は、セットを、セットの中に列挙される項目に限定するものではない。たとえば、「AおよびBのうちの少なくとも1つ」と具陳するクレーム文言は、A、B、またはAおよびBを意味することができ、AおよびBのセットの中に列挙されていない項目をさらに含むことができる。
【0236】
本明細書で開示した例に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。ハードウェアとソフトウェアとのこの互換性を明瞭に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能性に関して上記で概略的に説明されている。そのような機能性が、ハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、具体的な適用例および全体的なシステムに課される設計制約によって決まる。当業者は、説明された機能性を具体的な適用例ごとに様々な方法で実現することができるが、そのような実装形態は、本出願の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0237】
本明細書で説明した技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明した任意の特徴が、集積論理デバイスの中で一緒に、または個別であるが相互動作可能な論理デバイスとして別個に実装され得る。ソフトウェアで実装される場合、技法は、実行されると、上記で説明した方法、アルゴリズム、および/または動作のうちの1つまたは複数を実施する命令を含むプログラムコードを備える、コンピュータ可読データ記憶媒体によって少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、たとえば同期式ダイナミックランダムアクセスメモリ(SDRAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光学データ記憶媒体などのようなメモリまたはデータ記憶媒体を含み得る。技法は、追加または代替として、伝搬される信号または波などの、命令またはデータ構造の形でプログラムコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって少なくとも部分的に実現され得る。
【0238】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示に記載された技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明した技法の実装に好適な任意の他の構造もしくは装置のいずれかを指し得る。
【0239】
本開示の説明のための例は、以下を含む。
【0240】
例1:1つまたは複数のピクチャを含むビデオデータを取得するステップと、1つまたは複数のピクチャからピクチャのブロックを取得するステップと、少なくとも1つのフィルタ用のクリッピング値を判断するステップであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ステップと、少なくとも1つのフィルタをブロックに適用するステップとを含む方法。
【0241】
例2:少なくとも1つのフィルタは適応ループフィルタを含む、例1による方法。
【0242】
例3:クリッピング値は、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットを含み、ルーマ成分用のクリッピング値の第1のセットとクロマ成分用のクリッピング値の第2のセットは両方とも、第1の整数を第2の整数だけ左シフトすることによって判断される、例1または2による方法。
【0243】
例4:第1の整数は1であり、第1の整数を第2の整数だけ左シフトすることは、2を、第2の整数を含む指数の冪乗まで累乗することを含む、例1~3のいずれかによる方法。
【0244】
例5:クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応し、クリッピングインデックステーブル中のフィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、ピクチャ内の異なる位置に対応する、例1~4のいずれかによる方法。
【0245】
例6:オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含み、オフセット値は、クリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例1~5のいずれかによる方法。
【0246】
例7:少なくとも1つのフィルタ用のクリッピング値を判断することは、ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含み、各対応するクリッピング値は、複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、第1の整数を、特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され、特定の整数は、特定のサンプルについてのビット深度値から、複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含む、例1~6のいずれかによる方法。
【0247】
例8:特定のオフセット値は、特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例1~7のいずれかによる方法。
【0248】
例9:少なくとも1つのフィルタ用のクリッピング値は、ルーマ成分用の1つまたは複数のルーマクリッピング値およびクロマ成分用の1つまたは複数のクロマクリッピング値を含み、1つまたは複数のルーマクリッピング値は、第1の整数を第3の整数だけ左シフトすることによって判断され、第3の整数は、ピクチャからのルーマサンプルについてのビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、1つまたは複数のクロマクリッピング値は、第1の整数を第4の整数だけ左シフトすることによって判断され、第4の整数は、ピクチャからのクロマサンプルについてのビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む、例1~8のいずれかによる方法。
【0249】
例10:少なくとも1つのフィルタは5×5適応ループフィルタおよび7×7適応ループフィルタを含み、少なくとも1つのフィルタをブロックに適用することは、クロマ成分に5×5適応ループフィルタを適用することと、ルーマ成分に7×7適応ループフィルタを適用することとを含む、例1~9のいずれかによる方法。
【0250】
例11:1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成するステップをさらに含む、例1~10のいずれかによる方法。
【0251】
例12:符号化ビデオビットストリームは、ビデオデータと、少なくとも1つのフィルタをブロックに適用した結果とに基づいて生成される、例1~11のいずれかによる方法。
【0252】
例13:符号化ビデオビットストリームを復号デバイスへ送るステップをさらに含み、符号化ビデオビットストリームは、シグナリング情報とともに送られ、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、例1~12のいずれかによる方法。
【0253】
例14:符号化ビデオビットストリームを記憶するステップをさらに含む、例1~13のいずれかによる方法。
【0254】
例15:1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得するステップと、符号化ビデオビットストリームからのピクチャのブロックを復号するステップと、符号化ビデオビットストリームに関連付けられたシグナリング情報を識別するステップであって、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、ステップとをさらに含む、例1~14のいずれかによる方法。
【0255】
例16:符号化ビデオビットストリームからのピクチャのブロックを復号することは、ピクチャのブロックを再構築することを含み、少なくとも1つのフィルタを適用することは、再構築されたブロックに、少なくとも1つのフィルタを適用することを含む、例1~15のいずれかによる方法。
【0256】
例17:メモリと、メモリに結合された1つまたは複数のプロセッサとを備える装置であって、1つまたは複数のプロセッサは、1つまたは複数のピクチャを含むビデオデータを取得することと、1つまたは複数のピクチャからピクチャのブロックを取得することと、少なくとも1つのフィルタ用のクリッピング値を判断することであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、少なくとも1つのフィルタをブロックに適用することとを行うように構成される、装置。
【0257】
例18:少なくとも1つのフィルタは適応ループフィルタを含む、例18による装置。
【0258】
例19:クリッピング値は、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットを含み、ルーマ成分用のクリッピング値の第1のセットとクロマ成分用のクリッピング値の第2のセットは両方とも、第1の整数を第2の整数だけ左シフトすることによって判断される、例17または18による装置。
【0259】
例20:第1の整数は1であり、第1の整数を第2の整数だけ左シフトすることは、2を、第2の整数を含む指数の冪乗まで累乗することを含む、例17~19のいずれかによる装置。
【0260】
例21:クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応し、クリッピングインデックステーブル中のフィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、ピクチャ内の異なる位置に対応する、例17~20のいずれかによる装置。
【0261】
例22:オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含み、オフセット値は、クリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例17~21のいずれかによる装置。
【0262】
例23:少なくとも1つのフィルタ用のクリッピング値を判断することは、ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含み、各対応するクリッピング値は、複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、第1の整数を、特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され、特定の整数は、特定のサンプルについてのビット深度値から、複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含む、例17~22のいずれかによる装置。
【0263】
例24:特定のオフセット値は、特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例17~23のいずれかによる装置。
【0264】
例25:少なくとも1つのフィルタ用のクリッピング値は、ルーマ成分用の1つまたは複数のルーマクリッピング値およびクロマ成分用の1つまたは複数のクロマクリッピング値を含み、1つまたは複数のルーマクリッピング値は、第1の整数を第3の整数だけ左シフトすることによって判断され、第3の整数は、ピクチャからのルーマサンプルについてのビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、1つまたは複数のクロマクリッピング値は、第1の整数を第4の整数だけ左シフトすることによって判断され、第4の整数は、ピクチャからのクロマサンプルについてのビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む、例17~24のいずれかによる装置。
【0265】
例26:少なくとも1つのフィルタは5×5適応ループフィルタおよび7×7適応ループフィルタを含み、少なくとも1つのフィルタをブロックに適用することは、クロマ成分に5×5適応ループフィルタを適用することと、ルーマ成分に7×7適応ループフィルタを適用することとを含む、例17~25のいずれかによる装置。
【0266】
例27:1つまたは複数のプロセッサは、1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成するように構成される、例17~26のいずれかによる装置。
【0267】
例28:符号化ビデオビットストリームは、ビデオデータと、少なくとも1つのフィルタをブロックに適用した結果とに基づいて生成される、例17~27のいずれかによる装置。
【0268】
例29:1つまたは複数のプロセッサは、符号化ビデオビットストリームを復号デバイスへ送るように構成され、符号化ビデオビットストリームは、シグナリング情報とともに送られ、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、例17~28のいずれかによる装置。
【0269】
例30:1つまたは複数のプロセッサは、符号化ビデオビットストリームを記憶するように構成される、例17~29のいずれかによる装置。
【0270】
例31:1つまたは複数のプロセッサは、1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得することと、符号化ビデオビットストリームからのピクチャのブロックを復号することと、符号化ビデオビットストリームに関連付けられたシグナリング情報を識別することであって、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、こととを行うように構成される、例17~30のいずれかによる装置。
【0271】
例32:符号化ビデオビットストリームからのピクチャのブロックを復号することは、ピクチャのブロックを再構築することを含み、少なくとも1つのフィルタを適用することは、再構築されたブロックに、少なくとも1つのフィルタを適用することを含む、例17~31のいずれかによる装置。
【0272】
例33:装置はモバイルコンピューティングデバイスである、例17~32のいずれかによる装置。
【0273】
例34:例1から16のいずれかによる方法を実施するための手段を備える装置。
【0274】
例35:記憶された命令を含む非一時的コンピュータ可読記憶媒体であって、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、1つまたは複数のピクチャを含むビデオデータを取得することと、1つまたは複数のピクチャからピクチャのブロックを取得することと、少なくとも1つのフィルタ用のクリッピング値を判断することであって、クリッピング値は、ブロックのルーマ成分およびブロックのクロマ成分のうちの少なくとも1つに対応し、複数のクリッピング値のうちのあるクリッピング値は、第1の整数を第2の整数だけ左シフトすることによって判断され、第2の整数は、ブロックからのサンプルについてのビット深度値から、クリッピングインデックス値に関連付けられたオフセット値を引いた結果を含む、ことと、少なくとも1つのフィルタをブロックに適用することとを行わせる、非一時的コンピュータ可読記憶媒体。
【0275】
例36:少なくとも1つのフィルタは適応ループフィルタを含む、例35による非一時的コンピュータ可読記憶媒体。
【0276】
例37:クリッピング値は、ルーマ成分用のクリッピング値の第1のセットおよびクロマ成分用のクリッピング値の第2のセットを含み、ルーマ成分用のクリッピング値の第1のセットとクロマ成分用のクリッピング値の第2のセットは両方とも、第1の整数を第2の整数だけ左シフトすることによって判断される、例35または36による非一時的コンピュータ可読記憶媒体。
【0277】
例38:第1の整数は1であり、第1の整数を第2の整数だけ左シフトすることは、2を、第2の整数を含む指数の冪乗まで累乗することを含む、例35~37のいずれかによる非一時的コンピュータ可読記憶媒体。
【0278】
例39:クリッピング値は、クリッピングインデックステーブル中のフィルタクリッピング値のセットに対応し、クリッピングインデックステーブル中のフィルタクリッピング値のセットの中の、異なるフィルタクリッピング値は、ピクチャ内の異なる位置に対応する、例35~38のいずれかによる非一時的コンピュータ可読記憶媒体。
【0279】
例40:オフセット値は、複数の所定のオフセット値からの、ある所定のオフセット値を含み、オフセット値は、クリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例35~39のいずれかによる非一時的コンピュータ可読記憶媒体。
【0280】
例41:少なくとも1つのフィルタ用のクリッピング値を判断することは、ピクチャからの複数のサンプル用の対応するクリッピング値を判断することを含み、各対応するクリッピング値は、複数のサンプルからの特定のサンプルに関連付けられ、各対応するクリッピング値は、第1の整数を、特定のサンプルに関連付けられた特定の整数だけ左シフトすることによって判断され、特定の整数は、特定のサンプルについてのビット深度値から、複数の所定のオフセット値からの特定のオフセット値を引いた特定の結果を含む、例35~40のいずれかによる非一時的コンピュータ可読記憶媒体。
【0281】
例42:特定のオフセット値は、特定のサンプルに関連付けられた特定のクリッピングインデックス値に基づいて、複数の所定のオフセット値から判断される、例35~41のいずれかによる非一時的コンピュータ可読記憶媒体。
【0282】
例43:少なくとも1つのフィルタ用のクリッピング値は、ルーマ成分用の1つまたは複数のルーマクリッピング値およびクロマ成分用の1つまたは複数のクロマクリッピング値を含み、1つまたは複数のルーマクリッピング値は、第1の整数を第3の整数だけ左シフトすることによって判断され、第3の整数は、ピクチャからのルーマサンプルについてのビット深度値から、第2のクリッピングインデックス値に関連付けられたルーマオフセット値を引いた第2の結果を含み、1つまたは複数のクロマクリッピング値は、第1の整数を第4の整数だけ左シフトすることによって判断され、第4の整数は、ピクチャからのクロマサンプルについてのビット深度値から、第3のクリッピングインデックス値に関連付けられたクロマオフセット値を引いた第3の結果を含む、例35~42のいずれかによる非一時的コンピュータ可読記憶媒体。
【0283】
例44:少なくとも1つのフィルタは5×5適応ループフィルタおよび7×7適応ループフィルタを含み、少なくとも1つのフィルタをブロックに適用することは、クロマ成分に5×5適応ループフィルタを適用することと、ルーマ成分に7×7適応ループフィルタを適用することとを含む、例35~43のいずれかによる非一時的コンピュータ可読記憶媒体。
【0284】
例45:1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、1つまたは複数のピクチャを含む符号化ビデオビットストリームを生成させる命令を含む、例35~44のいずれかによる非一時的コンピュータ可読記憶媒体。
【0285】
例46:符号化ビデオビットストリームは、ビデオデータと、少なくとも1つのフィルタをブロックに適用した結果とに基づいて生成される、例35~45のいずれかによる非一時的コンピュータ可読記憶媒体。
【0286】
例47:1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、符号化ビデオビットストリームを復号デバイスへ送らせる命令を含み、符号化ビデオビットストリームは、シグナリング情報とともに送られ、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、例35~46のいずれかによる非一時的コンピュータ可読記憶媒体。
【0287】
例48:1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、符号化ビデオビットストリームを記憶させる命令を含む、例35~47のいずれかによる非一時的コンピュータ可読記憶媒体。
【0288】
例49:1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、1つまたは複数のピクチャを含む符号化ビデオビットストリームを取得することと、符号化ビデオビットストリームからのピクチャのブロックを復号することと、符号化ビデオビットストリームに関連付けられたシグナリング情報を識別することであって、シグナリング情報は、オフセット値、クリッピングインデックス値、フィルタパラメータ、および適応ループフィルタフラグのうちの少なくとも1つを含む、こととを行わせる命令を含む、例35~48のいずれかによる非一時的コンピュータ可読記憶媒体。
【0289】
例50:符号化ビデオビットストリームからのピクチャのブロックを復号することは、ピクチャのブロックを再構築することを含み、少なくとも1つのフィルタを適用することは、再構築されたブロックに、少なくとも1つのフィルタを適用することを含む、例35~49のいずれかによる非一時的コンピュータ可読記憶媒体。
【0290】
例51:非一時的コンピュータ可読記憶媒体はモバイルコンピューティングデバイスである、例35~50のいずれかによる非一時的コンピュータ可読記憶媒体。
【0291】
例52:ビデオデータを処理する方法であって、符号化ビデオビットストリームを取得するステップであって、符号化ビデオビットストリームは、1つまたは複数のピクチャを含む、ステップと、符号化ビデオビットストリームから、1つまたは複数のピクチャからのあるピクチャを復号するステップと、整数演算を使って、フィルタ用のクリッピング値を判断するステップであって、クリッピング値は、ルーマ成分についてのクリッピング値、および少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値を含み、ルーマ成分についてのクリッピング値は、ルーマ成分についてのビット深度、およびクリッピングインデックスに基づいて判断され、少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値は、少なくとも1つのクロマ成分についてのビット深度、およびクリッピングインデックスに基づいて判断される、ステップと、復号ピクチャにフィルタを適用するステップとを含む方法。
【0292】
例53:フィルタは適応ループフィルタを含む、例52による方法。
【0293】
例54:クリッピングインデックスは、ピクチャ内の位置における1つまたは複数のクリッピング値を含む、例52または53による方法。
【0294】
例55:整数演算は、1つまたは複数のシフト演算を適用することを含む、例52~54のいずれか1つによる方法。
【0295】
例56:ルーマ成分についてのクリッピング値を判断するために、複数のシフト演算が適用される、例55による方法。
【0296】
例57:ルーマ成分についてのクリッピング値を判断するために、単一のシフト演算が適用される、例55または56による方法。
【0297】
例58:少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値を判断するために、単一のシフト演算が適用される、例52~57のいずれか1つによる方法。
【0298】
例59:少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値を判断するために、複数のシフト演算が適用される、例52~58のいずれか1つによる方法。
【0299】
例60:ルーマ成分についてのクリッピング値は、クリッピングインデックスに関連付けられたルーマオフセットにさらに基づいて判断され、少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値は、クリッピングインデックスに関連付けられた少なくとも1つのクロマオフセットにさらに基づいて判断される、例52~59のいずれか1つによる方法。
【0300】
例61:ルーマ成分についてのクリッピング値、および少なくとも1つのクロマ成分についての少なくとも1つのクリッピング値を算出するのに、同じ式が使われる、例52~60のいずれか1つによる方法。
【0301】
例62:例52~60のうちのいずれかに従って、ビデオデータを記憶するように構成されたメモリと、ビデオデータを処理するように構成されたプロセッサとを備える装置。
【0302】
例63:装置がデコーダを含む、例62による装置。
【0303】
例64:装置がエンコーダを含む、例62による装置。
【0304】
例65:装置がモバイルデバイスである、例62~64のいずれか1つによる装置。
【0305】
例66:ビデオデータを表示するように構成されたディスプレイをさらに備える、例62~65のいずれか1つによる装置。
【0306】
例67:1つまたは複数のピクチャをキャプチャするように構成されたカメラをさらに備える、例62~66のいずれか1つによる装置。
【0307】
例68:プロセッサによって実行されると、例52~60のいずれかによる方法を実施する命令を記憶したコンピュータ可読媒体。
【符号の説明】
【0308】
35 区分ユニット
41 予測処理ユニット
42 動き推定ユニット
44 動き補償ユニット
46 イントラ予測処理ユニット
50 加算器
52 変換処理ユニット
54 量子化ユニット
56 エントロピー符号化ユニット
57 後処理デバイス
58 逆量子化ユニット
60 逆変換処理ユニット
62 加算器
63 フィルタユニット
64 ピクチャメモリ
79 ネットワークエンティティ
80 エントロピー復号ユニット
81 予測処理ユニット
82 動き補償ユニット
84 イントラ予測処理ユニット
86 逆量子化ユニット
88 逆変換処理ユニット
90 加算器
91 フィルタユニット
92 ピクチャメモリ
100 システム
102 ビデオソース
104 符号化デバイス、ビデオ符号化デバイス
106 エンコーダエンジン
108 ストレージ
110 出力部
112 復号デバイス、ビデオ復号デバイス
114 入力部
116 デコーダエンジン
118 ストレージ
120 通信リンク
122 ビデオ宛先デバイス
200 システム
202 入力ブロック
204 色成分
206 ALF
208 ルーマフィルタリング結果
210 クロマフィルタリング結果
212 出力ブロック
300 フィルタ
302~326 セル
330 フィルタ
332~386 セル
400 フィルタ
402~426 セル
430 対角ジオメトリ変換
440 垂直反転ジオメトリ変換
450 回転ジオメトリ変換
【国際調査報告】