[0001]本出願は、2020年3月10日に出願された米国出願第16/814,597号と、2019年3月11日に出願された米国仮出願第62/816,728号との優先権を主張するものであり、それらの各々の内容全体は参照によりその全体が本明細書に組み込まれる、
[0022]本開示では、ループ内コーディングの一部として、後処理段階において、または、ビデオコーディングの予測段階において使用され得るフィルタ処理演算に関係する技法について説明する。本開示の技法は、HEVC(高効率ビデオコーディング)など、既存のビデオコーデック中に実装され得るか、または現在開発中のH.266規格など、将来のビデオコーディング規格のための効率的なコーディングツールであり得る。
[0023]ビデオコーディングは、一般に、同じピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること(すなわちイントラ予測)、または異なるピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること(すなわちインター予測)のいずれかを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの間の差分を表す。ビデオエンコーダは、残差データを変換および量子化し、変換および量子化された残差データを符号化ビットストリーム中でシグナリングする。ビデオデコーダは、予測ブロック単独よりもぴったり元のビデオブロックに一致する再構築ビデオブロックを生成するために、残差データを予測ブロックに加算する。
[0024]復号ビデオの品質をさらに改善するために、ビデオデコーダは、再構築ビデオブロックに対して1つまたは複数のフィルタ処理演算を実施することができる。これらのフィルタ処理演算の例は、デブロッキングフィルタ処理、サンプル適応オフセット(SAO:sample adaptive offset)フィルタ処理、および適応ループフィルタ処理(ALF:adaptive loop filtering)を含む。これらのフィルタ処理演算のためのパラメータは、ビデオエンコーダによって決定され、符号化ビデオビットストリーム中で明示的にシグナリングされるか、またはパラメータが符号化ビデオビットストリーム中で明示的にシグナリングされる必要なしにビデオデコーダによって暗黙的に決定されるかのいずれかであり得る。本開示では、ALFに関係する技法について説明する。ALFは、後処理段階においてまたはループ内コーディングのために、あるいは予測プロセスにおいて使用され得る。
[0025]ビデオデコーダは、ビデオデータに対してALFを実施することの一部として、ビデオデータ中のサンプルに対して分類演算(classification operation)を実施し得る。ビデオデータ中のサンプルに対してそのような分類演算を実施するために、ビデオデコーダは、ビデオデータ中のサンプルの各々について、近隣サンプルに少なくとも部分的に基づいてビデオデータ中のサンプルの勾配値(gradient value)を計算することを含む、様々な計算を実施し得る。しかしながら、サンプルが、ピクチャ、スライス、タイル、またはタイルグループの境界上にあるとき、サンプルの勾配値を計算するために使用される1つまたは複数の近隣サンプルは、この1つまたは複数の近隣サンプルがピクチャ、スライス、タイル、またはタイルグループの境界の外側にあるので、利用不可能であり得る。
[0026]一例では、ビデオデコーダは、ピクチャ、スライス、タイル、またはタイルグループの境界の外側にある近隣サンプルを、境界の内側にある最も近いサンプルに置換するために、反復パディングなどの技法を使用し得る。しかしながら、それらの技法は、主観的および/または客観的品質の低下を潜在的にもたらすことがある。たとえば、反復パディングは、実際のサンプル値が使用されたのであれば本来は現れなかったであろう不連続性を再構築ビデオデータに潜在的にもたらすことがある。
[0027]本開示の態様によれば、ビデオデコーダは、フィルタ処理の後のサンプルの主観的および/または客観的品質を潜在的に改善する仕方で、ピクチャ、スライス、タイル、またはタイルグループの境界上のサンプルの勾配値を計算し得る。一例では、ビデオデコーダは、ピクチャ、スライス、タイル、またはタイルグループの境界の外側にある1つまたは複数の近隣サンプルを、勾配方向に沿って、ピクチャ、スライス、タイル、またはタイルグループ内で1つまたは複数の利用不可能サンプルの最も近いサンプルのサンプル値に置換することによって、ピクチャ、スライス、タイル、またはタイルグループの境界上のサンプルの勾配値を計算し得る。ピクチャ、スライス、タイル、またはタイルグループの境界の外側にある1つまたは複数の近隣サンプルを、勾配方向に沿って、ピクチャ、スライス、タイル、またはタイルグループ内で1つまたは複数の利用不可能サンプルの最も近いサンプルのサンプル値に置換することによって、本明細書で説明される技法は、反復パディングなどの技法と比較して、フィルタ処理の後のサンプルの主観的および/または客観的品質を改善し、それにより、上記で説明された潜在的な技術的問題への技術的解決策を提供し得る。
[0028]本開示で使用されるビデオコーディングという用語は、ビデオ符号化またはビデオ復号のいずれかを総称的に指す。同様に、ビデオコーダという用語は、ビデオエンコーダまたはビデオデコーダを総称的に指すことがある。その上、ビデオ復号に関して本開示で説明されるいくつかの技法は、ビデオ符号化にも適用され得、その逆も同様である。たとえば、頻繁に、ビデオエンコーダとビデオデコーダとは、同じプロセスまたは逆のプロセスを実施するように構成される。また、ビデオエンコーダは、一般に、ビデオデータをどのように符号化するべきかを決定するプロセスの一部としてビデオ復号を実施する。
[0029]図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0030]図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化ビデオデータを提供するソースデバイス102を含む。詳細には、ソースデバイス102は、コンピュータ可読媒体110を介してビデオデータを宛先デバイス116に提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかであり得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0031]図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、適応ループフィルタ処理のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0032]図1に示されているシステム100は一例にすぎない。概して、どんなデジタルビデオ符号化および/または復号デバイスも、適応ループフィルタ処理のための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示では、データのコーディング(符号化および/または復号)を実施するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、ソースデバイス102と宛先デバイス116とは、ソースデバイス102と宛先デバイス116との各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ソースデバイス102と宛先デバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
[0033]概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーィングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化ビデオデータをコンピュータ可読媒体110上に出力し得る。
[0034]ソースデバイス102のメモリ106と、宛先デバイス116のメモリ120とは、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオ、およびビデオデコーダ300からの生の復号ビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200とビデオデコーダ300とによって実行可能なソフトウェア命令を記憶し得る。メモリ106とメモリ120とは、この例ではビデオエンコーダ200とビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200とビデオデコーダ300とは、機能的に同様または等価な目的で内部メモリをも含み得ることを理解されたい。さらに、メモリ106、120は、符号化ビデオデータ、たとえば、ビデオエンコーダ200からの出力、およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、生の復号および/または符号化ビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
[0035]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化ビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0036]いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化データを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112からの符号化データにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0037]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化ビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化ビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114から、記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通してファイルサーバ114から符号化ビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバ114と入力インターフェース122とは、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0038]出力インターフェース108と入力インターフェース122とは、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108と入力インターフェース122とがワイヤレス構成要素を含む例では、出力インターフェース108と入力インターフェース122とは、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5Gなどのセルラー通信規格に従って符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を含むいくつかの例では、出力インターフェース108と入力インターフェース122とは、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格などの他のワイヤレス規格に従って符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に帰属する機能を実施するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実施するためのSoCデバイスを含み得る。
[0039]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0040]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。符号化ビデオビットストリームは、ビデオブロックまたは他のコード化ユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号ビデオデータの復号ピクチャをユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
[0041]図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームをハンドリングするために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0042]ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話機などのワイヤレス通信デバイスを含み得る。
[0043]ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれの拡張に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは、共同探査テストモデル(JEM:Joint Exploration Test Model)、または汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266など、他のプロプライエタリまたは業界規格に従って動作し得る。VVC規格の最近のドラフトは、Brossら、「Versatile Video Coding (Draft 7)」、ITU-T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11とのジョイントビデオエキスパーツチーム(JVET)、第16回会合:ジュネーブ、CH、2019年10月1~11日、JVET-P2001-v9(以下、「VVCドラフト7」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0044]概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を一般に意味する。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマット付きデータをYUV表現にコンバートし、ビデオデコーダ300は、YUV表現をRGBフォーマットにコンバートする。代替的に、前処理および後処理ユニット(図示されず)が、これらのコンバージョンを実施し得る。
[0045]本開示では、概して、ピクチャのコーディング(たとえば、符号化および復号)を、ピクチャのデータを符号化または復号するプロセスを含むように言及し得る。同様に、本開示では、ピクチャのブロックのコーディングを、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように言及し得る。符号化ビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成しているシンタックス要素の値をコーディングすることとして理解されたい。
[0046]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない四角形に区分し、クワッドツリーの各ノードは、0個または4個のいずれかの子ノードを有する。子ノードなしのノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUならびに/あるいは1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
[0047]別の例として、ビデオエンコーダ200とビデオデコーダ300とは、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、クワッドツリー区分に従って区分される第1のレベル、およびバイナリツリー区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
[0048]ブロック(たとえば、CTUまたはCU)は、ピクチャの中で様々な方法でグループ化され得る。一例として、ブリック(brick)は、ピクチャ中の特定のタイル内のCTU行の矩形領域を参照し得る。タイルは、ピクチャ中の特定のタイル列と特定のタイル行との内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を参照する。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を参照する。
[0049]いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
[0050]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
[0051]本開示では、たとえば、16×16サンプルまたは16個ずつの16個のサンプルなど、垂直寸法と水平寸法とに関して、(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を参照するために「N×N」と「N個ずつのN個」とを互換的に使用し得る。一般に、16×16CUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×N CUは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mのサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0052]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表す、CUのためのビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化の前のCUのサンプルと予測ブロックとの間のサンプルごとの差を表す。
[0053]CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、概して、同じピクチャの前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0054]JEMとVVCとのいくつかの例はまた、インター予測モードと考えられ得る、アフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き(perspective motion)、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0055]イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。JEMとVVCとのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに隣接する(nighboring)サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上方、上方および左側、または左側にあり得る。
[0056]ビデオエンコーダ200は、現在ブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して、動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
[0057]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、当該ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換(signal dependent transform)、カルーネンレーベ変換(KLT)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を生成する。
[0058]上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実施し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減させるために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に丸めることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位右シフトを実施し得る。
[0059]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化ベクトルを生成し、次いで、当該ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化ビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
[0060]CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの近隣値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0061]ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0062]このようにして、ビデオエンコーダ200は、符号化ビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化ビデオデータを復号し得る。
[0063]概して、ビデオデコーダ300は、ビットストリームの符号化ビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
[0064]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関係する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、(サンプルごとに)予測ブロックと残差ブロックとを組み合わせて(combine)、元のブロックを再生し得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
[0065]本開示の技法によれば、ビデオエンコーダおよび/またはビデオデコーダは、ビデオデータの再構築ブロックを作成するために、ビデオデータのブロックを再構築することと、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルに対応する利用可能サンプルを使用して、ビデオデータの再構築ブロック中のサンプルの勾配計算を実施することを含む、ビデオデータの再構築ブロック中の当該サンプルの勾配の値を決定することと、当該サンプルの勾配の決定された値に少なくとも部分的に基づいて、ビデオデータの再構築ブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタをビデオデータの再構築ブロックに適用することとを行うように構成され得る。
[0066]本開示では、一般に、シンタックス要素などの、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。概して、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0067]ビデオコーディングの分野では、再構築および/または復号ビデオ信号の品質を向上させるためにフィルタ処理(たとえば、適応ループフィルタ)を適用することが一般的である。本開示のコンテキストでは、ビデオデータの再構築ブロックは、ビデオエンコーダ200の再構築ループにおいて再構築されたビデオデータのブロックを指し得るか、またはビデオデコーダ300によって復号されたビデオデータのブロックを指し得る。いくつかの例では、フィルタは、フィルタ処理されたフレームが将来のフレームの予測のために使用されないポストフィルタとして適用され得るか、またはフィルタは、フィルタ処理されたフレームが将来のフレームを予測するために使用されるループ内フィルタとして適用され得る。フィルタは、たとえば、元の信号と、再構築/復号されたフィルタ処理された信号との間の誤差を最小限に抑えることによって設計され得る。変換係数と同様に、ビデオエンコーダ200は、次式によってフィルタの係数h(k,l)、k=-K,…,K、l=-K,…Kを量子化コーディングし得る。
ビデオエンコーダ200は、コーディングされた量子化係数をビデオデコーダ300に送り得る。正規化ファクタ(normFactor)は2nに等しくなり得る。normFactorの値がより大きいほど、量子化はより正確であり、量子化されたフィルタ係数f(k,l)はより良い性能を提供する。しかしながら、normFactorのより大きい値は、より多くのビットを送信することを必要とする係数f(k,l)を生成する。
[0068]ビデオデコーダ300において、復号されたフィルタ係数f(k,l)は、以下のように再構築された画像/ブロックR(i,j)に適用され、
ここで、iとjとは、フレームまたはブロック内のサンプルの座標である。
[0069]ビデオエンコーダ200とビデオデコーダ300とは、様々なALFフィルタ処理技法を実装するように構成され得る。これらのフィルタ処理技法(たとえば、ALF)の態様について次に説明される。
[0070]ループ内ALFは、HEVC開発段階中に評価されたが、ALFは、HEVC規格の最終バージョンに含まれなかった。しかしながら、ループ内ALFはVVCに採用された。例示的な詳細は、M.Karczewicz、L.Zhang、W.-J.Chien、X.Li、「EE2.5: Improvements on adaptive loop filter」、ITU-T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との探査チーム(JVET)、Doc.JVET-B0060、第2回会合:サンディエゴ、米国、2016年2月20日~2月26日と、M.Karczewicz、L.Zhang、W.-J.Chien、X.Li、「EE2.5: Improvements on adaptive loop filter」、ITU-T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との探査チーム(JVET)、Doc.JVET-C0038、第3回会合:ジュネーブ、CH、2016年5月26日~6月1日とに記載されたALFの簡略バージョンである、B.Bross、J.Chen、S.Liu、「JVET-L1001: Versatile Video Coding (Draft 3)」に見出され得る。
[0071]VVCでは、ピクチャ中のルーマ成分について、ビデオエンコーダ200とビデオデコーダ300とは、ALFのために7×7ダイヤモンド形フィルタを適用するように構成され得る。VVCでは、ピクチャ中の両方のクロマ成分(たとえば、CrとCb)について、ビデオエンコーダ200とビデオデコーダ300とは、5×5ダイヤモンド形フィルタなど、ALF係数の単一のセットを適用するように構成され得る。いくつかの例では、他のフィルタ形が使用されてもよい。
[0072]ビデオデコーダ300は、各サンプル
をフィルタ処理して、式(2)に示されるサンプル値I’i,jを生じるように構成され得、ここで、Lはフィルタ長を示し、fm,nはフィルタ係数を表し、oはフィルタオフセットを示す。
VVCテストモデル3(VTM3)では、BDFによって示されるビット深度は、8に設定された。
[0073]VVCテストモデル5(VTM5.0)では、クリッピングがALFに導入され、式(2)は、式(2*)に示されるように修正され、
ここで、cm,nはクリッピングパラメータである。
[0074]ALFは、VVCドラフト4において採用された。ALF分類の詳細な説明は、2019年5月30日に出願された米国特許出願第16/427,017号に見出され得る。VVCでは、分類は、「CE2: Subsampled Laplacian calculation (Test 6.1, 6.2, 6.3, and 6.4)」、JVET-L0147、第12回会合:マカオ、CN、2018年10月3~12日に記載されているように、サブサンプリングされた勾配計算を使用して4×4ルーマブロックごとに実施される。加えて、7タップフィルタがルーマサンプルに適用され、5タップフィルタがクロマサンプルに適用される。VVCドラフト7では、ALFは、CTU間の水平境界に沿ったデブロッキングフィルタおよびSAOへの依存性により、余分のサンプルを記憶するためにバッファの7つのラインを使用する。ラインバッファの使用の詳細な説明は、JVET-M0164と、JVET-M0301とに見出され得る。
[0075]ネイバーCTUからのサンプルを記憶するためにラインの数を低減または除去するために、JVET-M0164、JVET-M0301、2018年11月26日に出願された米国特許出願第16/200,197号、および2017年5月2日に発行された米国特許第9,641,866号など、いくつかの技法が開発されている。
[0076]「Adaptive loop filter with virtual boundary processing」、JVET-M0164、第13回会合:マラケシュ、MA、2019年1月9~18日(以下、JVET-M0164)と、「Non-CE: Loop filter line buffer reduction」、JVET-M0301、第13回会合:マラケシュ、MA、2019年1月9~18日(以下、JVET-M0301)と、米国特許出願第16/200,197号と、米国特許第9,641,866号とにおける技法は、CTU間の水平境界のみに適用される。VVCドラフト7では、ピクチャ、スライス、タイル、またはタイルグループの外側のサンプルの利用不可能性により、ピクチャ、スライス、タイル、またはタイルグループの境界における複製されたパディングが適用される。
[0077]ビデオエンコーダ200とビデオデコーダ300とは、ビデオデータのブロック(たとえば、ルーマサンプルおよび/またはクロマサンプルのブロック)に適用するためにALFの複数のクラスのうちの1つを決定するように構成され得る。VTM3を実装するとき、ビデオエンコーダ200とビデオデコーダ300とは、各4×4ルーマブロックに分類を適用するように構成される。ビデオエンコーダ200とビデオデコーダ300とは、ブロックのアクティビティの決定された方向性および量子化値に基づいて、各4×4ブロックを25個のクラスの中からの1つに分類するように構成され得る。詳細について以下で説明される。
[0078]ビデオエンコーダ200とビデオデコーダ300とは、各4×4ルーマブロックに対し、ブロックのサンプルの1Dラプラシアン方向と、ブロックのサンプルの2Dラプラシアンアクティビティとに基づいて、ブロックのためのALFの分類(classification)を決定するように構成され得る。一例では、ビデオエンコーダ200とビデオデコーダ300とは、ブロックの勾配値(gradient values)を決定するために、4×4ルーマブロックをカバーする8×8ウィンドウ内の1つおきのサンプル(every other sample)の勾配(gradient)の和を計算するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、gvによって示される垂直勾配値、ghによって示される水平勾配値、gd1によって示される135度対角勾配値、およびgd2によって示される45度対角勾配値という、4つの勾配値を計算するように構成され得る。
以下の表1は、勾配から決定され得る潜在的な方向性値と、ブロックのサンプル値に関するそれらの物理的意味とを示す。左上座標(i,j)をもつ4×4サブブロックについて、勾配値gv、gh、gd1およびgd2は、以下のように定義され、
ここで、kとlの両方が偶数であるか、またはkとlの両方が偶数でない場合、
であり、そうでない場合、Vk,l=0であり、
ここで、kとlの両方が偶数であるか、またはkとlの両方が偶数でない場合、
であり、そうでない場合、Hk,l=0であり、
ここで、kとlの両方が偶数であるかまたはkとlの両方が偶数でない場合、
であり、そうでない場合、D1k,l=0であり、
ここで、kとlの両方が偶数であるかまたはkとlの両方が偶数でない場合、
であり、そうでない場合、D2k,l=0である。
[0079]
[0080]方向性Dを割り当てるために、ビデオエンコーダ200とビデオデコーダ300とは、以下の式(3)においてRh,vによって示される、水平および垂直勾配値の最大値と最小値との比、および式(4)においてRd1,d2によって示される、2つの対角勾配の最大値と最小値との比を、2つのしきい値t1およびt2を用いて互いに比較するように構成され得る。
[0081]水平/垂直勾配および対角勾配の検出された比を比較することによって、ビデオエンコーダ200とビデオデコーダ300とは、5つの方向モード、すなわち、両端値を含む[0,4]の範囲内のDを、以下の式(5)において定義されるように決定し得る。
[0082]ビデオエンコーダ200とビデオデコーダ300とは、次式のようにブロックのアクティビティ値Actを計算し得る。
[0083]ビデオエンコーダ200とビデオデコーダ300とは、アクティビティ値Actを、両端値を含む0~4の範囲にさらに量子化し得、量子化値は
として示される。この量子化プロセスについて以下で詳述される。
[0084]例示的な量子化プロセスは次式のように定義され、
ここで、NUM_ENTRYは16に設定され、スケールファクタは24に設定され、シフトは(3+内部コード化ビット深度)であり、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とのうちのより小さい値を返す。
[0085]アクティビティ値を計算する異なる仕方により、スケールファクタとActivityToIndexは両方とも、JEM2.0ではALF設計と比較して修正され得る。
[0086]例示的な形状変換ベースのALF(GALF)方式では、ビデオエンコーダ200とビデオデコーダ300とは、次式のように、ブロックの方向性Dと、ブロックのアクティビティの量子化値
とに基づいて、各N×Nブロックを25個のクラスのうちの1つ(C)に分類するように構成され得る。
[0087]一例では、
の値は、列ごとに、変数Actから導出された0…4に設定される。
の新しい値のための最も小さいActは、最上行にわたってマークされる(たとえば、0、8192、16384、57344、122880)。たとえば、[16384,57344-1]内の値をもつActは、2に等しい
内に入る。
[0088]分類(classification)ごとに、ビデオエンコーダ200は、フィルタ係数の1つのセットをシグナリングするように構成され得る。同じクラスインデックスでマークされたブロックの異なる方向をより良く区別するために、変換なしと、対角と、垂直反転と、回転とを含む、4つの形状変換(geometry transformation)が使用され得る。3つの追加の形状変換の公式の形式は、次式のように表され得る。
ここで、Kはフィルタのサイズであり、0≦k,l≦K-1は、ロケーション(0,0)がブロックの左上コーナーにあり、ロケーション(K-1,K-1)がブロックの右下コーナーにあるような、係数座標である。ダイヤモンド形フィルタサポートが使用されるとき、フィルタサポートの外側の座標をもつ係数は、0に設定され得ることに留意されたい。形状変換インデックスを示すための1つの技法は、追加のオーバーヘッドを回避するために形状変換を暗黙的に(たとえば、シグナリングなしに)導出することである。GALFのいくつかの例では、変換は、そのブロックのために計算された勾配値に応じてフィルタ係数f(k,l)に適用される。変換と4つの勾配との間の関係が、以下の表2に記載されている。1つまたは複数の例では、変換は、2つの勾配(水平および垂直、または45度および135度勾配)のうちのどの1つがより大きいかに基づく。この比較に基づいて、より正確な方向情報が抽出され得る。したがって、フィルタ係数のオーバーヘッドは増加されないが、変換により、異なるフィルタ処理結果が取得され得る。
[0089]
[0090]上記で論じられたように、水平境界ならびに垂直境界の両方を含む、ピクチャ、スライス、タイル、またはタイルグループの境界では、そのような境界の外側のサンプルは、ビデオエンコーダ200とビデオデコーダ300とが、ALFのためにそのような境界に沿ってサンプルに対して分類およびフィルタ処理演算を実施するために利用不可能である。ピクチャの境界は、ビデオデータのフレームの境界であり得るが、スライス、タイル、またはタイルグループの境界は、ビデオデータの同じフレーム内のスライス、タイル、およびタイルグループなど、ビデオデータの単一のフレームの部分を分離する境界であり得、仮想境界と呼ばれることもある。いくつかの例では、本開示の目的では、本明細書で論じられる境界は、同じくスライス/タイル/タイルグループ/ピクチャ境界でないCTU境界を含まない。
[0091]図2は、適応ループフィルタ処理を実施することの一部として、サンプルの分類およびフィルタ処理演算を実施するために利用不可能であるピクチャ、スライス、タイル、またはタイルグループの外側のサンプルの例を示す。図2に示されているように、サンプル142A~142Dは、ブロック146の境界140の内側にあり、ここで、ブロック146は、ピクチャ、スライス、タイル、またはタイルグループであり得、サンプル143A~144Dは、ブロック146の境界140の外側にある。特に、サンプル142A~142Dは、サンプル142A~24Dが、ブロック146の境界140の外側にあるサンプル143A~144Dのうちのサンプルにそれぞれ隣接するように、サンプル142A~142Dがブロック146のエッジにおけるサンプルであるので、境界140に沿ってあると言われる。
[0092]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ブロック146の境界140の外側のサンプル143A~144Dの使用を必要とする、ブロック146のサンプル142A~142Dのための分類およびフィルタ処理演算を実施し得る。たとえば、境界140に沿ったサンプル142Aの1つまたは複数の勾配値を計算するために、ビデオエンコーダ200および300は、1つまたは複数の勾配値の計算を実施するためにサンプル143Aのうちの1つまたは複数のサンプルを必要とし得る。しかしながら、サンプル143A~144Dは境界140の外側にあるので、サンプル143A~144Dは、サンプル142A~142Dのための分類およびフィルタ処理演算を実施するために利用不可能であり得る。
[0093]したがって、いくつかの技法は、サンプル142A~142Dなど、境界140に沿ったサンプルのための分類およびフィルタ処理演算を実施するために、境界140の外側のサンプルの代わりに、ブロック146の境界140内の最も近いサンプルを使用する。1つのそのような技法は、反復パディング(repetitive padding)と呼ばれ、境界140の水平境界と垂直境界の両方において使用され得る。しかしながら、それらの技法は、主観的(subjective)および/または客観的(objective)品質の低下を潜在的にもたらすことがある。たとえば、反復パディングは、実際のサンプル値が使用されたのであれば本来は現れなかったであろう不連続性を再構築ビデオデータに潜在的にもたらすことがある。
[0094]したがって、反復パディングまたは他の同様の技法などの技法を使用する代わりに、本開示の態様では、フィルタ処理の後のサンプルの主観的および/または客観的品質を潜在的に改善する仕方で、ブロック146の境界140の外側のサンプル143A~144Dのうちの1つまたは複数のサンプル値を、ブロック146内のサンプルのサンプル値に置換することによって、ブロック146の境界140に沿ってあるサンプル142A~142Dの勾配を決定するための技法について説明する。
[0095]いくつかの態様では、本開示の技法は、JVET-M0164と、JVET-M0301と、米国特許出願第16/200,197号と、米国特許第9,641,866号との技法を、ブロック146の境界140など、ピクチャ、スライス、タイル、またはタイルグループの水平および垂直境界に拡張する。説明される技法は、個々に、または任意の組合せで一緒に適用され得る。
[0096]一例では、ビデオエンコーダ200とビデオデコーダ300とは、適応ループフィルタ処理を実施することの一部として勾配計算を実施し得る。上記で論じられたように、サンプルは、そのブロックの総ラプラシアンアクティビティと方向性とに基づいて25個のカテゴリーのうちの1つに分類され得る。一例では、勾配値の計算において、サンプルが、境界140の外側にあるなど、現在ピクチャ/スライス/タイル/タイルグループの外にあり、したがって、勾配値の計算のために利用不可能である場合、ビデオエンコーダ200とビデオデコーダ300とは、勾配計算を実施するとき、利用不可能サンプルのサンプル値の代わりに、勾配方向に沿った、ブロック146などの現在ピクチャ、スライス、タイル、またはタイルグループ中の、利用不可能サンプルに最も近いサンプルのサンプル値を使用し得る。
[0097]図3Aと図3Bとは、利用不可能サンプルを使用した適応ループフィルタ処理のための勾配計算のための技法を示す。適応ループフィルタ処理を実施することの一部として、ビデオエンコーダ200とビデオデコーダ300とは、サンプルの勾配値を計算することに基づいて、分類およびフィルタ処理演算を実施し得る。
[0098]図3Aに示されているように、ブロック148は、ピクチャ、スライス、タイル、タイルグループなどであり得、ここで、ブロック148の境界の外側のサンプルは、勾配計算を実施するために、ブロック148内のサンプルに利用不可能であり得る。ブロック148は、たとえば、垂直境界であり得る左境界150Aと、水平境界であり得る上境界150Bとによって画定され得る。「境界」という用語は、本開示では、ピクチャの境界、またはビデオデータの2つの部分間の境界を示すために使用され、ここで、これらの部分は、同じビデオブロック内にまたは異なるビデオブロック中に存在し得る。したがって、「境界」という用語は、2つのビデオブロックを分離している境界に限定されるように解釈されるべきではなく、ビデオデータの任意の2つの部分を分離し得る仮想境界をも含み得る。いくつかの例では、境界という用語は、同じくスライス/タイル/タイルグループ/ピクチャ境界でないCTU境界を含まないことがある。
[0099]図3Aは、ピクチャ/スライス/タイル/タイルグループの上境界および左境界に沿ったサンプルの例を示している。L[y,x]は、第yの行および第xの列におけるルーマサンプルである。したがって、図3Aの例では、サンプルは、ルーマサンプルであり得、L[y,x]の形式で座標を有することを示され、ここで、yはサンプルの垂直座標であり、xはサンプルの水平座標であり、ここで、L[0,0]は、ブロック148の左上コーナーにおけるサンプルを示す。したがって、上境界150Bに沿ったサンプルは、0のy座標を有し得、ブロック148の左境界150Aに沿ったサンプルは、0のx座標を有し得る。
[0100]ブロック148内のサンプルについて、および左境界150Aと上境界150Bとに沿ってある(たとえば、境界150内の左上サンプルが(0,0)の座標を有すると仮定すると、それぞれ、0のx座標を有するサンプルまたは0のy座標を有するサンプル)、ビデオコーダ(たとえば、ビデオエンコーダ200とビデオデコーダ300と)は、計算されるべき勾配方向に沿った近隣(neighboring)サンプルに基づいてサンプルの勾配値を計算し得る。たとえば、ビデオコーダは、ブロック148内のサンプルについて、水平方向勾配と、垂直方向勾配と、45度対角方向勾配と、135度対角方向勾配とを計算し得る。
[0101]一例では、ビデオエンコーダ200とビデオデコーダ300とは、次のように1Dラプラシアンを使用して、サンプルの水平勾配と、垂直勾配と、2つの対角勾配との値を計算する。
[0102]これらの例では、gvは垂直勾配値を表し、ghは水平勾配値を表し、gd1は135度対角勾配値を表し、gd2は45度対角勾配値を表す。さらに、k、lは、係数座標であり、R(k,l)は、再構築ブロックの座標(k,l)におけるサンプルである。
[0103]わかるように、ビデオエンコーダ200とビデオデコーダ300とは、サンプルの勾配値を、計算されている勾配値と同じ勾配方向における、当該サンプルの2つの近隣サンプルに少なくとも部分的に基づいて、計算することができる。特に、ビデオエンコーダ200およびビデオデコーダ300は、3つの連続する近隣サンプルのうちの中心サンプルについて、4つの方向性勾配値を計算し得る。したがって、ビデオエンコーダ200とビデオデコーダ300とは、勾配方向に沿った3つの連続する近隣サンプルのうちの中心サンプルであるサンプルの勾配値を計算し得る。しかしながら、3つの連続する近隣サンプルのうちの中心サンプルの近隣サンプルは、同じ勾配方向における近隣サンプルのうちの1つが、ブロック148の上境界150Bの外側にあるかまたは左境界150Aの外側にあり、したがって、上境界150Bおよび/または左境界150Aによって画定されるピクチャ、スライス、タイル、またはタイルグループ(たとえば、ブロック148)の外側にある場合など、ブロック148内にあるサンプルの勾配値を計算するために利用不可能であり得る。
[0104]本開示の態様によれば、ビデオエンコーダ200とビデオデコーダ300とは、同じ勾配方向に沿った近隣サンプルがサンプルの勾配値を計算するために利用不可能であるかどうかを決定し得、そうである場合、利用不可能サンプルの代わりに、同じ勾配方向に沿った利用可能近隣サンプルを使用し得る。特に、勾配方向に沿った3つの連続する近隣サンプルのうちの中心サンプルであるサンプルの勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、3つの連続する近隣サンプルの中からの2つの非中心サンプルのうちの1つが利用不可能であるかどうかを決定し得、そうである場合、中心サンプルの勾配値を計算するために、利用不可能サンプルを、3つの連続する近隣サンプルの中からの他の非中心サンプル(すなわち、利用可能近隣サンプル)に置換し得る。利用不可能サンプルを利用可能近隣サンプルに置換することは、中心サンプルの勾配値を計算する目的で、利用不可能サンプルのサンプル値を利用可能近隣サンプルのサンプル値に置換することを含む。
[0105]勾配値を計算する目的で、利用不可能サンプルを利用可能近隣サンプルに置換することは、利用不可能サンプルのサンプル値の代わりに、置換サンプルのサンプル値を使用して勾配値を計算することを含み得る。したがって、利用可能近隣サンプルは、勾配値を計算するために使用される3つの連続する近隣サンプルのうちの1つであるので、利用可能近隣サンプルの値は、3つの連続する近隣サンプル中の2つの非中心サンプルを表すために、3つの連続する近隣サンプルのうちの中心サンプルの勾配値を計算するとき、2回使用され得る。
[0106]図3Aの例では、サンプルがブロック148の上境界150Bの上方にある場合、サンプルは、上境界150Bに沿ってあるブロック148中のサンプルの勾配値を決定する目的には利用不可能である。ビデオエンコーダ200およびビデオデコーダ300は、上境界150Bに接するサンプルの勾配値を計算するために使用される、3つの連続する近隣サンプルのうちの1つが上境界150Bの上方にあると決定した場合、ビデオエンコーダ200とビデオデコーダ300とは、上境界150Bに接するサンプルの勾配値を計算するために、上境界150Bの外側にあるサンプルを、3つの連続する近隣サンプルのうちの他の非中心サンプルに置換し得る。
[0107]たとえば、サンプル152Aの垂直勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、垂直勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Aを取り得る。中心サンプルとしてサンプル152Aをもつ、垂直方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、垂直勾配方向においてサンプル152Aのすぐ下方にあるロケーションL[1,x]における近隣サンプル152Bと、垂直勾配方向においてサンプル152Aのすぐ上方にあるロケーションL[-1,x]における近隣サンプル152Cとである。
[0108]しかしながら、図3Aに見られ得るように、ロケーションL[-1,x]における、サンプル152Aのすぐ上方の近隣サンプル152Cは、近隣サンプル152Cがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Cが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Aの垂直勾配値を決定するために、利用不可能サンプル152Cを、垂直勾配方向に沿った3つの連続する近隣サンプル152A~152Cのうちの他の非中心サンプルであるサンプル152Bに置換し得る。図3Aに示されているように、サンプル152Cは、サンプル152Bである、ロケーションL[1,x]におけるサンプルに置換される。
[0109]別の例では、サンプル152Dの45度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、45度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Dを取り得る。中心サンプルとしてサンプル152Dをもつ、45度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、45度対角勾配方向においてサンプル152Dのすぐ右下にあるロケーションL[1,x+1]における近隣サンプル152Eと、45度対角勾配方向においてサンプル152Dのすぐ左上にあるロケーションL[-1,x-1]における近隣サンプル152Fとである。
[0110]しかしながら、図3Aに見られ得るように、ロケーションL[-1,x-1]における、サンプル152Dのすぐ左上の近隣サンプル152Fは、それがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Fが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Dの45度対角勾配値を決定するために、利用不可能サンプル152Fを、45度対角勾配方向に沿った3つの連続する近隣サンプル152D~152Fのうちの他の非中心サンプルであるサンプル152Eに置換し得る。図3Aに示されているように、サンプル152Fは、サンプル152Eである、ロケーションL[1,x+1]におけるサンプルに置換される。
[0111]別の例では、サンプル152Gの135度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、135度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Gを取り得る。中心サンプルとしてサンプル152Gをもつ、135度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、135度対角勾配方向においてサンプル152Gのすぐ左下にあるロケーションL[1,x-1]における近隣サンプル152Hと、135度対角勾配方向においてサンプル152Gのすぐ右上にあるロケーションL[-1,x+1]における近隣サンプル152Iとである。
[0112]しかしながら、図3Aに見られ得るように、ロケーションL[-1,x+1]における、サンプル152Gのすぐ右上の近隣サンプル152Iは、それがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Iが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Gの135度対角勾配値を決定するために、利用不可能サンプル152Iを、135度対角勾配方向に沿った3つの連続する近隣サンプル152G~152Iのうちの他の非中心サンプルであるサンプル152Hに置換し得る。図3Aに示されているように、サンプル152Iは、サンプル152Hである、ロケーションL[1,x-1]におけるサンプルに置換される。
[0113]別の例では、サンプル152Jの水平勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、水平勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Jを取り得る。中心サンプルとしてサンプル152Lをもつ、水平方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、水平勾配方向においてサンプル152Jのすぐ右にあるロケーションL[0,x+1]における近隣サンプル152Kと、水平勾配方向においてサンプル152Jのすぐ左にあるロケーションL[0,x-1]における近隣サンプル152Lとである。サンプル152J~152Lはすべて、ブロック148の内側にあり、左境界150Aまたは上境界150Bの外側にないので、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Jの水平勾配値を計算するためにサンプル152J~152Lのいずれも置換することが不要であり得る。
[0114]同様に、図3Aの例では、サンプルがブロック148の左境界150Aの左にある場合、サンプルは、左境界150Aに沿ってあるブロック148中のサンプルの勾配値を決定する目的には利用不可能である。ビデオエンコーダ200とビデオデコーダ300とが、左境界150Aに接するサンプルの勾配値を計算するために使用される3つの連続する近隣サンプルのうちの1つが左境界150Aの左にあると決定した場合、ビデオエンコーダ200とビデオデコーダ300とは、左境界150Aに接するサンプルの勾配値を計算するために、左境界150Aの外側にあるサンプルを、3つの連続する近隣サンプルのうちの他の非中心サンプルに置換し得る。
[0115]たとえば、サンプル152Mの水平勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、水平勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Mを取り得る。中心サンプルとしてサンプル150Mをもつ、水平方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、水平勾配方向においてサンプル152Mのすぐ右にあるロケーションL[y,1]における近隣サンプル152Nと、水平勾配方向においてサンプル152Mのすぐ左にあるロケーションL[y,-1]における近隣サンプル152Oとである。
[0116]しかしながら、図3Aに見られ得るように、ロケーションL[y,-1]における、サンプル152Mのすぐ左の近隣サンプル152Oは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Oが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Mの水平勾配値を決定するために、利用不可能サンプル152Oを、水平勾配方向に沿った3つの連続する近隣サンプル152M~152Oのうちの他の非中心サンプルであるサンプル152Nに置換し得る。図3Aに示されているように、サンプル152Oは、サンプル152Nである、ロケーションL[y,1]におけるサンプルに置換される。
[0117]別の例では、サンプル152Pの45度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、45度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Pを取り得る。中心サンプルとしてサンプル152Pをもつ、45度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、45度対角勾配方向においてサンプル152Pのすぐ右下にあるロケーションL[y+1,1]における近隣サンプル152Qと、45度対角勾配方向においてサンプル152Pのすぐ左上にあるロケーションL[y-1,-1]における近隣サンプル152Rとである。
[0118]しかしながら、図3Aに見られ得るように、ロケーションL[y-1,-1]におけるサンプル152Pのすぐ左上の近隣サンプル152Rは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Rが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Pの45度対角勾配値を決定するために、利用不可能サンプル152Rを、45度対角勾配方向に沿った3つの連続する近隣サンプル152P~152Rのうちの他の非中心サンプルであるサンプル152Qに置換し得る。図3Aに示されているように、サンプル152Rは、サンプル152Qである、ロケーションL[y+1,1]におけるサンプルに置換される。
[0119]別の例では、サンプル152Sの135度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、135度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Sを取り得る。中心サンプルとしてサンプル152Sをもつ、135度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、135度対角勾配方向においてサンプル152Sのすぐ右上にあるロケーションL[y-1,1]における近隣サンプル152Uと、135度対角勾配方向においてサンプル152Sのすぐ左下にあるロケーションL[y+1,-1]における近隣サンプル152Tとである。
[0120]しかしながら、図3Aに見られ得るように、ロケーションL[y+1,-1]におけるサンプル152Sのすぐ左下の近隣サンプル152Tは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Tが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Sの135度対角勾配値を決定するために、利用不可能サンプル152Tを、135度対角勾配方向に沿った3つの連続する近隣サンプル152S~152Uのうちの他の非中心サンプルであるサンプル152Uに置換し得る。図3Aに示されているように、サンプル152Tは、サンプル152Uである、ロケーションL[y-1,1]におけるサンプルに置換される。
[0121]別の例では、サンプル152Jの垂直勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、垂直勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Vを取り得る。中心サンプルとしてサンプル152Vをもつ、垂直方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、垂直勾配方向においてサンプル152Vのすぐ下にあるロケーションL[y+1,0]における近隣サンプル152Wと、垂直勾配方向においてサンプル152Vのすぐ上にあるロケーションL[y-1,0]における近隣サンプル152Xとである。サンプル152V~152Xはすべて、ブロック148の内側にあり、左境界150Aまたは上境界150Bの外側にないので、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Vの垂直勾配値を計算するためにサンプル152V~152Xのいずれも置換することが不要であり得る。
[0122]本開示のいくつかの態様によれば、左境界150Aまたは上境界150Bの外側など、境界の外側にある利用不可能サンプルを、同じ勾配方向におけるサンプルに置換する代わりに、ビデオエンコーダ200とビデオデコーダ300とは、サンプルの勾配値を計算する目的で、境界の外側にある利用不可能サンプルのサンプル値を、利用可能近隣サンプルのサンプル値に置換するために、ミラーパディングを使用し得る。ミラーパディングは、ビデオエンコーダ200とビデオデコーダ300とが、利用不可能サンプルの実際のサンプル値の代わりに、すなわち、それに取って代わって、ブロックの現在の境界の近くのサンプル値をミラーリングするプロセスを指し得る。
[0123]利用不可能サンプルが上境界150Bなどの水平境界に接する場合、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルのサンプル値を、利用不可能サンプルと同じ列上の、および水平境界の内側にあるサンプルのサンプル値に置換するために、ミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、水平境界に接する同じ列上のサンプルからの利用不可能サンプルの垂直距離を決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、水平境界に接する同じ列上のサンプルから等しい垂直距離であるが、水平境界に接する同じ列上のサンプルから反対方向にある、利用不可能サンプルと同じ列上の利用可能サンプルを決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルのサンプル値を、水平境界に接する同じ列上のサンプルから反対方向における、利用不可能サンプルと等しい垂直距離である同じ列上の利用可能サンプルのサンプル値に置換し得る。
[0124]図3Bの例では、座標系L[y,x]において、上境界150Bの外側にあり、したがって利用不可能であるL[-1,4]におけるサンプルが与えられれば、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルと、L[0,4]において上境界150Bに接する同じ列上のサンプルとの間の垂直距離を、1の垂直距離として決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、L[1,4]におけるサンプルが、L[0,4]におけるサンプルから反対方向における等しい垂直距離である同じ列上にあるサンプルであると決定し得、L[-1,4]における利用不可能サンプルのサンプル値を、L[1,4]におけるサンプルのサンプル値に置換し、それにより、L[-1,4]における利用不可能サンプルのためにミラーパディングを実施し得る。
[0125]たとえば、サンプル152Aの垂直勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、垂直勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Aを取り得る。中心サンプルとしてサンプル152Aをもつ、垂直方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、垂直勾配方向においてサンプル152Aのすぐ下方にあるロケーションL[1,x]における近隣サンプル152Bと、垂直勾配方向においてサンプル152Aのすぐ上方にあるロケーションL[-1,x]における近隣サンプル152Cとである。
[0126]しかしながら、図3Bに見られ得るように、ロケーションL[-1,x]におけるサンプル152Aのすぐ上方の近隣サンプル152Cは、それがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Cが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプル152Cを置換するためにミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[-1,x]におけるサンプル152Bは、利用不可能サンプル152Bと同じ列上にあり、上境界150Bに接する同じ列上のロケーションL[0,x]におけるサンプル152Aから反対方向における、利用不可能サンプル152Cと等しい垂直距離である、上境界150Bの内側のサンプルである、と決定し得る。したがって、サンプル152Cは、サンプル152Bである、ロケーションL[1,x]におけるサンプルに置換される。
[0127]別の例では、サンプル152Dの45度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、45度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Dを取り得る。中心サンプルとしてサンプル152Dをもつ、45度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、45度対角勾配方向においてサンプル152Dのすぐ右下にあるロケーションL[1,x+1]における近隣サンプル152Eと、45度対角勾配方向においてサンプル152Dのすぐ左上にあるロケーションL[-1,x-1]における近隣サンプル152Fとである。
[0128]しかしながら、図3Bに見られ得るように、ロケーションL[-1,x-1]における、サンプル152Dのすぐ左上の近隣サンプル152Fは、それがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Fが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、ミラーパディングを実施し利用不可能サンプル152Fを置換し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[1,x-1]におけるサンプル153Aが、利用不可能サンプル152Fと同じ列上にあり、上境界150Bに接する同じ列上のロケーションL[0,x-1]におけるサンプルから反対方向において、利用不可能サンプル152Fと等しい垂直距離である、上境界150Bの内側のサンプルである、と決定し得る。したがって、サンプル152Fは、サンプル153Aである、ロケーションL[1,x-1]におけるサンプルに置換される。
[0129]別の例では、サンプル152Gの135度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、135度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Gを取り得る。中心サンプルとしてサンプル152Gをもつ、135度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、135度対角勾配方向においてサンプル152Gのすぐ左下にあるロケーションL[1,x-1]における近隣サンプル152Hと、135度対角勾配方向においてサンプル152Gのすぐ右上にあるロケーションL[-1,x+1]における近隣サンプル152Iとである。
[0130]しかしながら、図3Bに見られ得るように、ロケーションL[-1,x+1]における、サンプル152Gのすぐ右上の近隣サンプル152Iは、それがブロック148の上境界150Bの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Iが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプル152Iを置換するためにミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[1,x+1]におけるサンプル153Bが、利用不可能サンプル152Iと同じ列上にあり、上境界150Bに接する同じ列上のロケーションL[0,x+1]におけるサンプルから反対方向において、利用不可能サンプル152Iと等しい垂直距離である、上境界150Bの内側のサンプルである、と決定し得る。したがって、サンプル152Iは、サンプル153Bである、ロケーションL[1,x+1]におけるサンプルに置換される。
[0131]別の例では、サンプル152Jの水平勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、水平勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[0,x]におけるサンプル152Jを取り得る。中心サンプルとしてサンプル152Lをもつ、水平方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、水平勾配方向においてサンプル152Jのすぐ右にあるロケーションL[0,x+1]における近隣サンプル152Kと、水平勾配方向においてサンプル152Jのすぐ左にあるロケーションL[0,x-1]における近隣サンプル152lとである。サンプル152J~152Lはすべて、ブロック148の内側にあり、左境界150Aまたは上境界150Bの外側にないので、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Jの水平勾配値を計算するためにサンプル152J~152Lのいずれも置換することが不要であり得る。
[0132]同様に、利用不可能サンプルが左境界150Aなどの垂直境界に接する場合、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルのサンプル値を、利用不可能サンプルと同じ行上の、および垂直境界の内側にあるサンプルのサンプル値に置換するために、ミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、垂直境界に接する同じ行上のサンプルからの利用不可能サンプルの水平距離を決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、垂直境界に接する同じ行上のサンプルから等しい水平距離であるが、垂直境界に接する同じ行上のサンプルから反対方向にある、利用不可能サンプルと同じ行上のサンプルを決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルを、反対方向において垂直境界に接する同じ列上のサンプルから反対方向における利用不可能サンプルと等しい水平距離である同じ行上の利用可能サンプルのサンプル値に置換し得る。
[0133]図3Bの例では、座標系L[y,x]において、左境界150Aの外側にあり、したがって利用不可能であるL[y,-1]におけるサンプルが与えられれば、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルと、L[y,0]において左境界150Aに接する同じ行上のサンプルとの間の水平距離を、1の水平距離として決定し得る。ビデオエンコーダ200とビデオデコーダ300とは、L[y,1]におけるサンプルが、L[y,0]におけるサンプルから反対方向において等しい水平距離である同じ行上にあるサンプルであると決定し得、L[y,-1]における利用不可能サンプルのサンプル値を、L[y,1]におけるサンプルのサンプル値に置換し、それにより、L[y,-1]における利用不可能サンプルのためにミラーパディングを実施し得る。
[0134]たとえば、サンプル152Mの水平勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、水平勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Mを取り得る。中心サンプルとしてサンプル150Mをもつ、水平方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、水平勾配方向においてサンプル152Mのすぐ右にあるロケーションL[y,1]における近隣サンプル152Nと、水平勾配方向においてサンプル152Mのすぐ左にあるロケーションL[y,-1]における近隣サンプル152Oとである。
[0135]しかしながら、図3Bに見られ得るように、ロケーションL[y,-1]におけるサンプル152Mのすぐ左の近隣サンプル152Oは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Oが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプル152Oを置換するためにミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[y,1]におけるサンプル152Nは、利用不可能サンプル152Oと同じ行上にあり、左境界150Aに接する同じ行上のロケーションL[y,0]におけるサンプルから反対方向における利用不可能サンプル152Iと等しい垂直距離である、左境界150Aの内側のサンプルである、と決定し得る。したがって、サンプル152Oは、サンプル152Nである、ロケーションL[y,1]におけるサンプルに置換される。
[0136]別の例では、サンプル152Pの45度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、45度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Pを取り得る。中心サンプルとしてサンプル152Pをもつ、45度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、45度対角勾配方向においてサンプル152Pのすぐ右下にあるロケーションL[y+1,1]における近隣サンプル152Qと、45度対角勾配方向においてサンプル152Pのすぐ左上にあるロケーションL[y-1,-1]における近隣サンプル152Rとである。
[0137]しかしながら、図3Bに見られ得るように、ロケーションL[y-1,-1]におけるサンプル152Pのすぐ左上の近隣サンプル152Rは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Rが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプル152Rを置換するためにミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[y-1,1]におけるサンプル154Cは、利用不可能サンプル152Rと同じ行上にあり、左境界150Aに接する同じ行上のロケーションL[y-1,0]におけるサンプルから反対方向における利用不可能サンプル152Rと等しい垂直距離である、左境界150Aの内側のサンプルである、と決定し得る。したがって、サンプル152Rは、サンプル154Cである、ロケーションL[y-1,1]におけるサンプルに置換される。
[0138]別の例では、サンプル152Sの135度対角勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、135度対角勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Sを取り得る。中心サンプルとしてサンプル152Sをもつ、135度勾配方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、135度対角勾配方向においてサンプル152Sのすぐ右上にあるロケーションL[y-1,1]における近隣サンプル152Uと、135度対角勾配方向においてサンプル152Sのすぐ左下にあるロケーションL[y+1,-1]における近隣サンプル152Tとである。
[0139]しかしながら、図3Bに見られ得るように、ロケーションL[y+1,-1]におけるサンプル152Sのすぐ左下の近隣サンプル152Tは、それがブロック148の左境界150Aの外側にあるので、利用不可能であり得る。本開示の態様によれば、サンプル152Tが利用不可能であると決定したことに応答して、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプル152Tを置換するためにミラーパディングを実施し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、ロケーションL[y+1,1]におけるサンプル154Dは、利用不可能サンプル152Tと同じ行上にあり、左境界150Aに接する同じ行上のロケーションL[y+1,0]におけるサンプルから反対方向における利用不可能サンプル152Tと等しい垂直距離である、左境界150Aの内側のサンプルである、と決定し得る。したがって、サンプル152Tは、サンプル154Dである、ロケーションL[y+1,1]におけるサンプルに置換される。
[0140]別の例では、サンプル152Jの垂直勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、垂直勾配方向に沿った3つの連続するサンプルのうちの中心サンプルとして、ロケーションL[y,0]におけるサンプル152Vを取り得る。中心サンプルとしてサンプル152Vをもつ、垂直方向に沿った3つの連続するサンプルのうちの他の2つのサンプルは、垂直勾配方向においてサンプル152Vのすぐ下にあるロケーションL[y+1,0]における近隣サンプル152Wと、垂直勾配方向においてサンプル152Vのすぐ上にあるロケーションL[y-1,0]における近隣サンプル152Xとである。サンプル152V~152Xはすべて、ブロック148の内側にあり、左境界150Aまたは上境界150Bの外側にないので、ビデオエンコーダ200とビデオデコーダ300とは、サンプル152Vの垂直勾配値を計算するためにサンプル152V~152Xのいずれも置換することが不要であり得る。
[0141]いくつかの例では、上記で説明されたように、ALFを実施するために、ビデオエンコーダ200とビデオデコーダ300とは、図3Aおよび図3Bにおいて説明された技法を使用して決定されたものなど、サンプルの勾配値に少なくとも部分的に基づいてサンプルの分類を決定し得る。特に、ビデオエンコーダ200とビデオデコーダ300とは、勾配値に基づいてビデオデータのブロック(たとえば、ルーマサンプルおよび/またはクロマサンプルのブロック)に適用するためにALFの複数のクラスのうちの1つを決定するように構成され得る。いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、各4×4ルーマブロックに分類を適用するように構成される。ビデオエンコーダ200とビデオデコーダ300とは、各ブロックの適応ループフィルタを選択するために、ブロックのアクティビティの決定された方向性および量子化値に基づいて、各4×4ブロックを25個のクラスの中からの1つに分類するように構成され得る。詳細について以下のように説明される。
[0142]ビデオエンコーダ200とビデオデコーダ300とは、各4×4ルーマブロックについて、ブロックのサンプル(samples)の1Dラプラシアン方向と、ブロックのサンプル(samples)の2Dラプラシアンアクティビティとに基づいて、ブロックのためのALFの分類を決定するように構成され得る。一例では、ビデオエンコーダ200とビデオデコーダ300とは、ブロックの勾配値を決定するために、4×4ルーマブロックをカバーする8×8ウィンドウ内の1つおきのサンプル(every other sample)の勾配の和を計算するように構成され得る。ビデオエンコーダ200とビデオデコーダ300とは、gvによって示される垂直勾配値、ghによって示される水平勾配値、gd1によって示される135度対角勾配値、およびgd2によって示される45度対角勾配値という、4つの勾配値を計算するように構成され得る。
[0143]図4Aに示されているように、ビデオエンコーダ200とビデオデコーダ300とは、8×8領域中のサンプルの(図4Aに「D1」として表されている)勾配値を計算し得る。サンプルの勾配値を計算することは、同サンプルの垂直勾配と、水平勾配と、45度対角勾配と、135度対角勾配との各々の値を計算することを含み得る。
[0144]いくつかの例では、ビデオエンコーダとビデオデコーダ300とは、8×8領域中のすべてのサンプルの、または8×8領域中のすべてよりも少数のサンプルの勾配値を計算し得る。たとえば、8×8領域中のすべてよりも少数のサンプルの勾配値を計算するために、ビデオエンコーダ200とビデオデコーダ300とは、8×8領域中のあらゆるサンプルの代わりに、図4Aに示されているように、8×8領域中の1つおきのサンプルの勾配値を計算し得る。8×8領域中のあらゆるサンプルの勾配値を決定することとは対照的に、8×8領域中のサンプルのすべてよりも少数の(たとえば、1つおきのサンプルの)勾配値を決定することは、いくつかの例では、「サブサンプリング」と呼ばれることがあり、8×8領域中のサンプルのすべてよりも少数について決定された勾配値は、「サブサンプリングされた勾配」と呼ばれることがある。
[0145]現在のVVCでは、図4Aにおいて影付きであるように示されている、ブロック170などの4×4ブロックは、領域172などの8×8周囲ウィンドウ中のサブサンプリングされた勾配を累積する(accumulates)。ブロック170の外側の領域172の部分は、図4Aにおいて影付きでないように示されている。一例では、ビデオエンコーダ200とビデオデコーダ300とは、領域172にわたる垂直勾配と水平勾配との和としてブロック170のアクティビティを決定する。ビデオエンコーダ200とビデオデコーダ300とは、この値を量子化して、5つのアクティビティ値を生じる。さらに、ビデオエンコーダ200とビデオデコーダ300とは、方向性勾配(directional gradient)を比較することによってブロック170内の優勢な勾配方向(dominant gradient direction)を決定し、さらに、方向強度(direction strength)が決定され、それにより、5つの方向値を与える。両方の特徴は、25個のクラスを一緒に生じる(Both features together result in 25 classes.)。
[0146]しかしながら、ブロック170の外側の領域172の部分は、ブロック170の水平境界または垂直境界を越えることもあり、したがって、ブロック170の水平境界または垂直境界の外側の勾配は、領域172にわたって勾配の和を決定するために利用不可能であり得る。たとえば、ブロック170から水平境界または垂直境界の反対側にあるブロック170の外側の領域172の部分は、水平境界または垂直境界を越える。水平境界と垂直境界との例は、本開示全体にわたって論じられるように、ピクチャ境界、スライス境界、タイル境界、タイルグループ境界などを含み得る。したがって、本開示の態様は、ピクチャ境界(すなわち、ビデオデータのフレームの境界)または仮想境界など、非CTU境界に適用可能である。
[0147]この問題を潜在的に克服するための1つの技法は、利用不可能であるサンプルの勾配を決定するためにパディングされたサンプルを使用することを伴う。たとえば、ブロック170中の現在サンプルAのために、ビデオエンコーダ200とビデオデコーダ300とが、サンプルAに対して水平または垂直境界の反対側にあるサンプルBを必要とする場合、ビデオエンコーダ200とビデオデコーダ300とは、サンプルBの値を、ブロック170内のサンプルAの側上のサンプルBの最も近いサンプルに置換し得る。そのような置換されたサンプルは、パディングされたサンプルと呼ばれることがある。しかしながら、これらの技法は、主観的および/または客観的品質の低下を潜在的にもたらすことがある。たとえば、パディングは、実際のサンプル値が使用されたのであれば本来は現れなかったであろう不連続性を再構築ビデオデータに潜在的にもたらすことがある。
[0148]本開示の態様によれば、ピクチャ、スライス、タイル、またはタイルグループの境界の外側にある勾配を置換するために、パディングされたサンプルを使用する代わりに、それらの勾配は、ピクチャ、スライス、タイル、またはタイルグループの境界の内側の勾配に置換される。いくつかの例では、境界の外側にある勾配は、境界内の勾配が4×4ブロック170の外側にある場合でも、境界内にある勾配に置換され得る。
[0149]図4Bに示されているように、勾配が、ピクチャ、スライス、タイル、またはタイルグループの水平境界174の外にある場合、ピクチャ、スライス、タイル、またはタイルグループの同じ列上の最も近い勾配が使用される。特に、サンプル160A~160Hは、ブロック170から水平境界174の反対側にあるので、サンプル160A~160Hは水平境界174の外側にある。したがって、サンプル160A~160Hの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積すること(accumulating)に少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0150]本開示の態様によれば、ビデオエンコーダ200とビデオデコーダ300とは、水平境界174の外側にある領域172中の勾配を、水平境界174内にある(すなわち、水平境界174の、ブロック170と同じ側上にある)領域172中の同じ列における最も近い勾配に置換し得る。したがって、図4Bの例では、ビデオエンコーダ200とビデオデコーダ300とは、サンプル160Iからサンプル160Aへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Aの勾配を、水平境界174の内側にあるサンプル160Iの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とは、サンプル160Kからサンプル160Eへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Eの勾配を、水平境界174の内側にあるサンプル160Kの勾配に置換し得る。
[0151]ビデオエンコーダ200とビデオデコーダ300とは、サンプル162Aからサンプル160Bへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Bの勾配を、水平境界174の内側にあるサンプル162Aの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Cからサンプル160Fへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Fの勾配を、水平境界174の内側にあるサンプル162Cの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Bからサンプル160Cへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Cの勾配を、水平境界174の内側にあるサンプル162Bの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Dからサンプル160Gへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Gの勾配を、水平境界174の内側にあるサンプル162Dの勾配に置換し得る。
[0152]ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル160Jからサンプル160Dへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Dの勾配を、水平境界174の内側にあるサンプル160Jの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル160Lからサンプル160Hへポインティングする矢印によって示されるように、水平境界174の外側にあるサンプル160Hの勾配を、水平境界174の内側にあるサンプル160Lの勾配に置換し得る。
[0153]図4Cに示されているように、勾配が垂直境界176の外にある場合、垂直境界176によって画定されたピクチャ、スライス、タイル、またはタイルグループ中の同じ行上の最も近い勾配が使用される。特に、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとは、ブロック170から垂直境界176の反対側にあるので、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとは、垂直境界176の外側にある。したがって、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0154]本開示の態様によれば、ビデオエンコーダ200とビデオデコーダ300とは、垂直境界176の外側にある領域172中の勾配を、垂直境界176内にある(すなわち、垂直境界176の、ブロック170と同じ側上にある)領域172中の同じ行における最も近い勾配に置換し得る。したがって、図4Cの例では、ビデオエンコーダ200とビデオデコーダ300とは、サンプル160Bからサンプル160Aへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Aの勾配を、垂直境界176の内側にあるサンプル160Bの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とは、サンプル160Fからサンプル160Eへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Eの勾配を、垂直境界176の内側にあるサンプル160Fの勾配に置換し得る。
[0155]ビデオエンコーダ200とビデオデコーダ300とは、サンプル162Aからサンプル160Iへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Iの勾配を、垂直境界176の内側にあるサンプル162Aの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Cからサンプル160Kへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Kの勾配を、垂直境界176の内側にあるサンプル162Cの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Eからサンプル160Mへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Mの勾配を、垂直境界176の内側にあるサンプル162Eの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル162Gからサンプル160Oへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Oの勾配を、垂直境界176の内側にあるサンプル162Gの勾配に置換し得る。
[0156]ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル160Rからサンプル160Qへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Qの勾配を、垂直境界176の内側にあるサンプル160Rの勾配に置換し得る。ビデオエンコーダ200とビデオデコーダ300とはまた、サンプル160Vからサンプル160Uへポインティングする矢印によって示されるように、垂直境界176の外側にあるサンプル160Uの勾配を、垂直境界176の内側にあるサンプル160Vの勾配に置換し得る。
[0157]別の例では、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャ、スライス、タイル、またはタイルグループの外側にある利用不可能勾配を置換するために、ピクチャ、スライス、タイル、またはタイルグループにおける追加の勾配を計算し得る。上記で論じられたように、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170中の1つおきのサンプルの勾配を計算し、それにより、ブロック170中の16個のサンプルのうちの8つの勾配を計算することを含めて、8×8領域172中の1つおきのサンプルの勾配を計算し得る。さらに、図5Bおよび図5Cに示されているように、水平境界174と垂直境界176とはそれぞれ、水平境界174または垂直境界176の外側にある領域172中の8つの勾配を利用不可能にし得る。したがって、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170中の8つの追加のサンプルの追加の8つの勾配を計算することによって、8つの利用不可能勾配を置換し得る。
[0158]図4Dに示されているように、サンプル160A~160Hは、ブロック170から水平境界174の反対側にあるので、サンプル160A~160Hは水平境界174の外側にある。したがって、サンプル160A~160Hの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0159]本開示の態様によれば、サブサンプリングされた勾配値が計算されるとき、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170中の8つのサンプルの追加の8つの勾配を計算することによって、利用不可能勾配を置換し得る。たとえば、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170内のサンプル162I~162Pの勾配を計算し得、ブロック170の分類を実施するためにサンプル160A~160Hの利用不可能勾配の代わりに、サンプル162I~162Pの勾配を使用し得る。
[0160]同様に、図4Eに示されているように、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとは、ブロック170から垂直境界176の反対側にあるので、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとは、垂直境界176の外側にある。したがって、サンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0161]本開示の態様によれば、サブサンプリングされた勾配値が計算されるとき、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170中の8つのサンプルの追加の8つの勾配を計算することによって、利用不可能勾配を置換し得る。たとえば、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170内のサンプル162I~162Pの勾配を計算し得、ブロック170の分類を実施するためにサンプル160Aと、サンプル160Eと、サンプル160Iと、サンプル160Kと、サンプル160Mと、サンプル160Oと、サンプル160Qと、サンプル160Uとの利用不可能勾配の代わりに、サンプル162I~162Pの勾配を使用し得る。
[0162]別の例では、勾配が境界の外にある場合、ピクチャ、スライス、タイル、またはタイルグループにおける同じ勾配方向上の最も近い勾配が使用される。これは、水平勾配と、垂直勾配と、対角勾配とに適用可能であり得る。
[0163]図4Fに示されているように、領域172は、「D1」として示されている135度対角勾配を含み得る。したがって、境界の外側にある勾配は、同じ135度対角方向における最も近い勾配に置換され得る。
[0164]図4Fでは、水平境界174を有する領域172について、サンプル160A~160Hは、ブロック170から水平境界174の反対側にあるので、サンプル160A~160Hは水平境界174の外側にある。したがって、サンプル160A~160Hの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0165]本開示の態様によれば、ビデオエンコーダ200とビデオデコーダ300とは、水平境界174の外側にある領域172中の勾配を、水平境界174内にある(すなわち、水平境界174の、ブロック170と同じ側上にある)領域172中の同じ勾配方向における最も近い勾配に置換し得る。
[0166]図4Fは、「D1」によってそれぞれ示される135度対角勾配を有するものとして領域172を示しているので、サンプル160A~160Hの利用不可能勾配の各々は、135度対角勾配であり、ビデオエンコーダ200とビデオデコーダ300とは、サンプル160A~160Hの利用不可能勾配の各々を、135度対角勾配に沿った最も近い利用可能勾配に置換し得る。
[0167]サンプル162Aは、サンプル160Aおよび160Eと同じ135度対角方向に沿ってある。したがって、サンプル160Aとサンプル160Eの両方の135度対角勾配は、サンプル162Aからサンプル160Aおよび160Eへポインティングスル矢印によって示されるように、サンプル162Aの135度対角勾配に置換され得る。
[0168]サンプル162Bは、サンプル160Bおよび160Fと同じ135度対角方向に沿ってある。したがって、サンプル160Bとサンプル160Fの両方の135度対角勾配は、サンプル162Bからサンプル160Bおよび160Fへポインティングする矢印によって示されるように、サンプル162Bの135度対角勾配に置換され得る。
[0169]サンプル160Jは、サンプル160Cおよび160Gと同じ135度対角方向に沿ってある。したがって、サンプル160Cとサンプル160Gの両方の135度対角勾配は、サンプル160Jからサンプル160Cおよび160Gへポインティングする矢印によって示されるように、サンプル160Jの135度対角勾配に置換され得る。
[0170]図4Gに示されているように、領域172はまた、「D2」として示されている45度対角勾配を含み得る。したがって、境界の外側にある勾配は、同じ45度対角方向における最も近い勾配に置換され得る。
[0171]図4Gでは、水平境界174を有する領域172について、サンプル160A~160Hは、ブロック170から水平境界174の反対側にあるので、サンプル160A~160Hは水平境界174の外側にある。したがって、サンプル160A~160Hの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。
[0172]本開示の態様によれば、ビデオエンコーダ200とビデオデコーダ300とは、水平境界174の外側にある領域172中の勾配を、水平境界174内にある(すなわち、水平境界174の、ブロック170と同じ側上にある)領域172中の同じ勾配方向における最も近い勾配に置換し得る。
[0173]図4Gは、「D2」によってそれぞれ示される45度対角勾配を有するものとして領域172を示しているので、サンプル160A~160Hの利用不可能勾配の各々は、45度対角勾配であり、ビデオエンコーダ200とビデオデコーダ300とは、サンプル160A~160Hの利用不可能勾配の各々を、45度対角勾配に沿った最も近い利用可能勾配に置換し得る。
[0174]サンプル160Iは、サンプル160Bおよび160Eと同じ45度対角方向に沿ってある。したがって、サンプル160Bとサンプル160Eの両方の45度対角勾配は、サンプル160Iからサンプル160Bおよび160Eへの矢印ポインティングによって示されるように、サンプル160Iの45度対角勾配に置換され得る。
[0175]サンプル162Aは、サンプル160Cおよび160Fと同じ45度対角方向に沿ってある。したがって、サンプル160Cとサンプル160Fの両方の45度対角勾配は、サンプル162Aからサンプル160Cおよび160Fへポインティングする矢印によって示されるように、サンプル162Aの45度対角勾配に置換され得る。
[0176]サンプル162Bは、サンプル160Dおよび160Gと同じ45度対角方向に沿ってある。したがって、サンプル160Dとサンプル160Gの両方の45度対角勾配は、サンプル162Bからサンプル160Dおよび160Gへポインティングする矢印によって示されるように、サンプル162Bの45度対角勾配に置換され得る。
[0177]サンプル160Jは、サンプル160Hと同じ135度対角方向に沿ってある。したがって、サンプル160Hの45度対角勾配は、サンプル160Jからサンプル160Hへポインティングする矢印によって示されるように、サンプル160Jの45度対角勾配に置換され得る。
[0178]別の例では、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャ/スライス/タイル/タイルグループの外側にある勾配を計算するのを控え得る。代わりに、ビデオエンコーダ200とビデオデコーダ300とは、領域172中のサブサンプリングされた勾配のすべてよりも少数を使用してブロック170の分類を実施し得る。
[0179]図4Hに示されているように、水平境界174を有する領域172について、サンプル160A~160Hは、ブロック170から水平境界174の反対側にあるので、サンプル160A~160Hは水平境界174の外側にある。したがって、サンプル160A~160Hの勾配は、ブロック170の8×8周囲領域172中のサブサンプリングされた勾配を累積することに少なくとも部分的に基づいてブロック170を分類するために利用不可能である。したがって、ビデオエンコーダ200とビデオデコーダ300とは、サンプル160A~160Hの勾配を決定するのを控え得る。代わりに、ビデオエンコーダ200とビデオデコーダ300とは、ブロック170を分類するためにサンプル160I~160Xとサンプル162A~162Hとの勾配を計算し得る。
[0180]勾配の数が変更されるので、ビデオエンコーダ200とビデオデコーダ300とは、アクティビティおよび分類計算を再正規化し得る。特に、図4Hの例におけるビデオエンコーダ200とビデオデコーダ300とは、利用不可能である8つのサンプルの勾配を計算しないので、ビデオエンコーダ200とビデオデコーダ300とは、領域172中で32個のサンプルの代わりに24個のサンプルの勾配を計算し得る。
[0181]一例では、勾配値(g)を決定するために、ビデオエンコーダ200とビデオデコーダ300とは、垂直勾配(gv)と、水平勾配(gh)と、135度対角勾配(gd1)と、45度対角勾配(gd2)とを決定するように構成され得る。さらに、スケーリングファクタに基づいて勾配値(g)をスケーリングして、スケーリングされた勾配値(g’)を生成するために、ビデオエンコーダ200とビデオデコーダ300とは、次式を使用して勾配値(g)をスケーリングし得:g’=g/num_available_samples * num_full_samples、ここで、num_available_samplesは、パディングされないウィンドウ中のサンプルの数(たとえば、仮想境界の、再構築ブロックと同じ側上にあるウィンドウ中の利用可能サンプルの数)を表し、num_full_sampleは、ウィンドウ中のサンプルの総数を表す。たとえば、8つのサンプルの勾配が利用不可能である図4Hの例では、num_available_samplesは24であり得、num_full_samplesは32であり得る。
[0182]上記で説明されたように、ビデオエンコーダ200とビデオデコーダ300とは、図4A~図4Hに関して説明されたように、領域172などの周囲ウィンドウ中で計算されたサブサンプリングされた勾配に基づいて、ブロック170など、ビデオデータの再構築ブロックのための適応ループフィルタを決定し得る。一例では、ビデオエンコーダ200とビデオデコーダ300とは、周囲ウィンドウ中で計算されたサブサンプリングされた勾配に基づいて、ブロックの方向性とアクティビティインデックスとを決定し得、ブロックの方向性とアクティビティインデックスとに基づいてブロックのための適応ループフィルタを決定し得る。
[0183]図5は、例示的な適応ループフィルタを示す。たとえば、例示的な適応ループフィルタは、ブロック170など、ビデオデータの再構築ブロックのための適応ループフィルタのクラスに基づいて、ビデオエンコーダ200とビデオデコーダ300とによって選択され得る。図5に示されるように、フィルタ184は、7×7ダイヤモンド形フィルタなどの対称フィルタであり得る。他の例では、本技法は、矩形フィルタ、八角形フィルタ、十字形フィルタ、X字形フィルタ、T字形フィルタ、または任意の他の対称フィルタを含む、5×5ダイヤモンド形フィルタ、9×9ダイヤモンド形フィルタなどの任意の他の対称フィルタに等しく適用可能であり得る。フィルタ184のフィルタサポート180Aは、水平境界182内にあるサンプルに対応し、したがって、利用可能であり得、一方、フィルタ184のフィルタサポート180Bは、水平境界182の外側にあるサンプルに対応し、したがって、利用不可能であり得る。
[0184]一例では、ビデオエンコーダ200とビデオデコーダ300とは、ビデオデータの再構築ブロックのサンプルをフィルタ処理するために、非対称部分フィルタ(asymmetric partial filter)を使用し得る。この場合、ビデオエンコーダ200とビデオデコーダ300とは、サンプルをフィルタ処理するために利用可能サンプルに対応するタップのみをフィルタ処理し、それにより、対応するサンプルが利用可能でないフィルタタップをスキップし得る。ビデオエンコーダ200とビデオデコーダ300とは、以下で説明されるように、対応するサンプルが利用可能でないフィルタタップのスキップにより、再正規化(renormalization)を実施し得る。
[0185]本開示の態様によれば、ビデオコーダは、ALFを実施することの一部として、フィルタ処理されたサンプルを生成するために、ビデオエンコーダ200とビデオデコーダ300とが再構築サンプルに適用し得る非対称部分フィルタとして、フィルタ184の利用可能フィルタサポート180Aを使用し得る。フィルタ184の利用可能フィルタサポート180Aを使用することによって、ビデオエンコーダ200とビデオデコーダ300とは、フィルタサポート180Bなどにおいて、対応するサンプルが利用可能でないフィルタタップをスキップし得る。部分フィルタは、フィルタ処理プロセスのために典型的に使用される1つまたは複数のフィルタ係数を使用しないフィルタである。このようにして、フィルタは、対応するサンプルが利用可能でないフィルタタップをスキップしながら、フィルタのための利用可能サンプルから生成され得る。ビデオエンコーダ200とビデオデコーダ300とは、非対称部分フィルタを再正規化し得る。
[0186]通常、選択されたフィルタのフィルタ係数は、フィルタの適用を通してビデオデータを追加または削除しないように、合計すると(フィルタ係数が正規化されたことを意味する)1になる。(最初に選択されたフィルタからの1つまたは複数のフィルタ係数の削除により、この場合も「部分」フィルタと呼ばれる)部分フィルタを決定するために、選択されたフィルタのフィルタ係数をスキップまたは削除することによって、得られた部分フィルタは、(部分フィルタのフィルタ係数が合計すると1にならないことを意味する)非正規になる。その結果、ビデオエンコーダ200とビデオデコーダ300とは、部分フィルタ内のフィルタ係数の各々をスケーリングすることなどによって、フィルタ係数が合計すると1になるように、部分フィルタ内に含まれる複数のフィルタ係数を再正規化し得る。ビデオエンコーダ200とビデオデコーダ300とは、次いで、ビデオデータのフィルタ処理された第1のブロックを生成するために、ビデオデータの第1のブロックの境界の近くに、再正規化された部分フィルタを適用し得る。ビデオエンコーダ200とビデオデコーダ300とは、ビデオデータの他のブロックを再構築する際に参照ビデオデータとして使用するために、ビデオデータのこのフィルタ処理された第1のブロックを記憶し得る。ビデオエンコーダ200とビデオデコーダ300とは、フィルタ処理されたサンプルを生成するために、ブロック170中など、たとえば、ビデオデータの再構築ブロック中のサンプルに、生成されたフィルタを適用し得る。
[0187]一例では、ビデオエンコーダ200とビデオデコーダ300とは、利用不可能サンプルに対応するフィルタ係数を、利用可能サンプルに対応するフィルタ係数に置換するために、ミラーサンプルパディングを使用し得る。ミラーパディングでは、利用不可能サンプルに対応する(たとえば、反転されたとき、それと同じサイズおよび同じ形状を有する)フィルタのフィルタサポートは、利用可能サンプルに対応するフィルタの対応するフィルタサポートに置換され得る。
図5の例では、ビデオエンコーダ200とビデオデコーダ300とは、フィルタサポート180Bのフィルタ係数の代わりにフィルタサポート180Cのフィルタ係数が使用されるように、フィルタサポート180Bを、たとえば、利用可能サンプルに対応するフィルタ184のフィルタサポート180Cに置換するためにミラーパディングを実施することによって、対称フィルタを生成し得る。ビデオエンコーダ200とビデオデコーダ300とは、フィルタ処理されたサンプルを生成するために、ブロック170中など、たとえば、ビデオデータの再構築ブロック中のサンプルに、生成されたフィルタを適用し得る。
[0188]別の例では、ビデオエンコーダ200とビデオデコーダ300とは、ビデオデータのブロックをフィルタ処理するために、対称部分フィルタを使用し得る。この場合、ビデオエンコーダ200とビデオデコーダ300とは、対応するサンプルが利用可能でないフィルタタップをスキップし得るだけでなく、ビデオエンコーダ200とビデオデコーダ300とは、対称部分フィルタを生成するために、利用可能サンプルに対応する1つまたは複数のフィルタタップをさらにスキップし得る。ビデオエンコーダ200とビデオデコーダ300とは、上記で説明されたように、フィルタタップのスキップにより、再正規化を実施し得る。
[0189]図6は、例示的な適応ループフィルタを示す。図6に示されているように、フィルタ194のフィルタサポート190Aは水平境界192内にあり、一方、フィルタ194のフィルタサポート190Bは、水平境界192の外側にあり、したがって、利用不可能であり得る。本開示の態様によれば、ビデオコーダは、対称部分フィルタを生成するために、フィルタ194の利用可能フィルタサポート190Aを使用し得る。特に、ビデオコーダは、フィルタ194から利用可能フィルタサポート190Aのフィルタサポート190Dを打ち切ること(truncating)などによって、対称部分フィルタとして、フィルタ194の利用可能フィルタサポート190Aの対称部分190Cを決定し得、ここで、フィルタ194のフィルタサポート190Dは、フィルタ194の利用不可能フィルタサポート190Bに対応する(たとえば、反転されたとき、それと同じサイズおよび同じ形状を有する)。たとえば、図6において、190Bおよび190D中の各サンプルは、190C中の最も近いサンプルに置換される。C1におけるサンプルは、C5におけるサンプルに置換され、C0とC2とにおけるサンプルは、C6におけるサンプルに置換され、C3におけるサンプルは、C7におけるサンプルに置換される。
[0190]このようにして、ビデオエンコーダ200とビデオデコーダ300とは、対応するサンプルが利用可能でないフィルタタップをスキップしながら、フィルタの利用可能サンプルからフィルタを生成し得る。ビデオエンコーダ200とビデオデコーダ300とは、たとえば、対称部分フィルタのフィルタ係数が合計すると1になるように、対称部分フィルタを再正規化し得る。ビデオエンコーダ200とビデオデコーダ300とは、フィルタ処理されたサンプルを生成するために、ブロック170中など、たとえば、ビデオデータの再構築ブロック中のサンプルに、生成されたフィルタを適用し得る。
[0191]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、重み付き加算を含む、ビデオデータのフィルタ処理を実施し得る。特に、重み付き加算は、フィルタ処理中に1つまたは複数の利用不可能サンプル(たとえば、本開示全体にわたって説明されるような、ピクチャ/スライス/タイル/タイルグループの外のサンプル)を使用するサンプルのためのフィルタ処理プロセスの後に、加重平均化プロセスが追加される。最終的なALF出力サンプルは、フィルタ処理されたサンプルと、ALF入力サンプルと(たとえば、それぞれ、ALFの後のサンプルと、ALFより前のビデオデータの再構築ブロックのサンプルと)の加重平均化(weighted averaging)である。ビデオエンコーダ200とビデオデコーダ300とは、ALFより前のビデオデータの再構築ブロックのサンプルのサンプル値に第1の重みを適用(すなわち、乗算)し得、ALFの後のサンプルのサンプル値に第2の重みを適用(すなわち、乗算)し得、ここで、これらの2つの重みは合計すると1になる。ビデオエンコーダ200とビデオデコーダ300とは、2つの重み付きサンプルを合計し、この合計を2で除算して、サンプルの加重平均を決定し得る。
[0192]一例では、フィルタ処理されたサンプルのための重みは、すべてのサンプルについて固定であり得る。たとえば、すべてのサンプルについて、第1の重みが第1の値に固定され、第2の重みが第2の値に固定されたとき、およびこれらの2つの重みが合計すると1になる場合、ビデオエンコーダ200とビデオデコーダ300とは、各サンプルについて、ALFより前のサンプルのサンプル値に第1の重みを適用し、ALFの後のサンプルのサンプル値に第2の重みを適用し、これらの2つの重み付きサンプルを合計し、この合計を2で除算して、サンプルの最終値を生成し得る。
[0193]別の例では、フィルタ処理されたサンプルのための重みは、フィルタ処理プロセス中に使用される利用不可能サンプルの数に依存し得る。フィルタ処理プロセス中に使用される利用不可能サンプルの数が大きくなるほど、ALFの後のビデオデータの再構築ブロックのサンプルに適用される重みと比較して、ALFより前の同じサンプルに適用される重みはより大きくなる。たとえば、ALF中のサンプルのフィルタ処理プロセス中に利用不可能サンプルが使用されない場合、ALFより前のサンプルに適用されるべき第1の重みは0であり得、ALFの後のサンプルに適用されるべき第2の重みは1であり得る。一方、第1の重みは、サンプルのフィルタ処理プロセス中に使用される利用不可能サンプルの数に従って増加し得、第2の重みは、対応して、フィルタ処理プロセス中に使用される利用不可能サンプルの数に従って減少し得る。
[0194]別の例では、フィルタ処理されたサンプルのための重みは、シーケンス/ピクチャ/スライス/タイル/タイルグループ/CTUレベルにおいてなど、適応的にシグナリングされ得る。たとえば、エンコーダ200は、シーケンス/ピクチャ/スライス/タイル/タイルグループ/CTUレベルにおいてなど、第1の重みと第2の重みの両方をデコーダ300に適応的にシグナリングし得る。
[0195]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、フィルタ処理のために利用不可能サンプル(たとえば、ピクチャ、スライス、タイル、またはタイルグループの外のサンプル)を使用するサンプルのためのフィルタ処理を条件付きで無効にし得る。一例では、現在のフィルタ処理されるべきサンプルについて、利用不可能サンプルに対応する係数の絶対和が、利用可能サンプルに対応する係数の絶対和のしきい値倍よりも大きい場合、ビデオエンコーダ200とビデオデコーダ300とは、現在サンプルのためのフィルタを無効にし得る。このしきい値は、固定であるか、適応的に決定されるか、または(たとえば、ビデオエンコーダ200によってビデオデコーダ300に送られるビットストリーム中で)シグナリングされ得る。しきい値の例は、0.6を含むか、または0と1との間など、任意の好適な値であり得る。
[0196]図7は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図7は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものと考えられるべきではない。説明の目的で、本開示では、JEMと、VVC(開発中のITU-T H.266)と、HEVC(ITU-T H.265)との技法によるビデオエンコーダ200について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオ符号化デバイスによって実施され得る。
[0197]図7の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。たとえば、ビデオエンコーダ200のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。いくつかの例では、ビデオエンコーダ200は、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスの一部であり得る。
[0198]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用する参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0199]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのビデオデータ)を記憶する参照メモリとして理解されたい。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
[0200]図7の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは概してイミュータブルである。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0201]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示されず)が、そのような命令を記憶し得る。
[0202]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204とモード選択ユニット202とに提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0203]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0204]モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せについての得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUの予測モード、CUの残差データの変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを選択し得る。
[0205]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、1つまたは複数のCTUをスライス内にカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
[0206]概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUとTUとの重複する部分)についての予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコード化ピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0207]動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてデータを取り出し、たとえば、サンプルごとの平均化または加重平均化を通して、取り出されたデータを組み合わせ得る。
[0208]別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに近接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、近隣サンプルの値を概して数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する近隣サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0209]モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の非コード化バージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
[0210]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットと、対応するクロマ予測ユニットとに関連付けられ得る。ビデオエンコーダ200とビデオデコーダ300とは、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ユニットのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様のものの対称的PUサイズとをサポートし得る。ビデオエンコーダ200とビデオデコーダ300とはまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズの非対称的区分をサポートし得る。
[0211]モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0212]いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなど、他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックについて予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0213]上記で説明されたように、残差生成ユニット204は、現在ブロックと、対応する予測ブロックとについて、ビデオデータを受信する。残差生成ユニット204は、次いで、現在ブロックについて残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0214]変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、1次変換および2次変換、たとえば回転変換を残差ブロックに実施し得る。いくつかの例では、変換処理ユニット206は、変換を残差ブロックに適用しない。
[0215]量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失を導入することがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0216]逆量子化ユニット210と逆変換処理ユニット212とは、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化と逆変換とを適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(ある程度のひずみを潜在的にもっているものの)現在ブロックに対応する再構築ブロックを生成し得る。たとえば、再構築ユニット214は、再構築されたブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
[0217]フィルタユニット216は、CUに関連する再構築コーディングブロックに対して1つまたは複数のSAO、GALF、ALF、および/またはデブロッキング動作を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。いくつかの例では、フィルタユニット216の動作はスキップされてよい。
[0218]特に、フィルタユニット216は、上記で説明された本開示のALFおよびGALF技法を実施するように構成され得る。たとえば、フィルタユニット216は、再構築コーディングブロック中のサンプルの勾配の値を決定すること、当該決定することは、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルを使用して、サンプルの勾配計算を実施することを含み、サンプルの勾配の決定された値に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタを再構築コーディングブロックに適用することとを行うように構成され得る。
[0219]いくつかの例では、フィルタユニット216は、本開示の技法などに従って、
再構築コーディングブロックをカバーするウィンドウについて勾配値(gradient values)を決定すること、該ウィンドウは、ビデオデータの再構築ブロックのサンプルと、ビデオデータの再構築ブロックを囲むサンプルとを含み、該決定することは、利用不可能サンプルを使用して勾配計算を実施することを含み、と、該ウィンドウについて決定された勾配値(gradient values)に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、を行うように構成され得る。これは、たとえば、本開示の技法などに従って、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を、境界の内側にある1つまたは複数の勾配値に置換することを含み得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、再構築コーディングブロックを含む。
[0220]いくつかの例では、フィルタユニット216は、ウィンドウの勾配値(gradient values)に、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を含めるのを控えるように構成され得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、ビデオデータの再構築ブロックを含む。フィルタユニット216は、ウィンドウの勾配値に、ウィンドウ内のサンプルの利用不可能勾配値を含めないことにより、ウィンドウの勾配値を正規化し得る。
[0221]いくつかの例では、フィルタユニット216は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを使用しない、当該適応ループフィルタからの部分フィルタを決定するように構成され得、ここで、部分フィルタは、非対称部分フィルタまたは対称部分フィルタのうちの1つを含む。他の例では、フィルタユニット216は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを置換するために、ミラーパディングを実施することように構成され得る。
[0222]いくつかの例では、フィルタユニット216は、再構築コーディングブロックの特定のサンプルについての1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して、特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウについて勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックが、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、再構築コーディングブロックの特定のサンプルのフィルタ処理を条件付きで無効にするように構成され得る。
[0223]いくつかの例では、フィルタユニット216は、再構築コーディングブロック中の特定のサンプルについて1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウの勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックが、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、再構築ブロック中の特定のサンプルと、ビデオデータのフィルタ処理されたブロックのサンプルとの加重平均を決定することように構成され得る。
[0224]ビデオエンコーダ200は、再構築ブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例において、再構築ユニット214は、再構築ブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築ブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築ブロックを使用し得る。
[0225]概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報、またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0226]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
[0227]上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されたい。上記で説明されたように、いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、CUのルーマ成分とクロマ成分とである。いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、PUのルーマ成分とクロマ成分とである。
[0228]いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。そうではなく、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであってよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックについて同じであってよい。
[0229]ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの例を表し、1つまたは複数の処理ユニットは、ビデオデータの再構築ブロックを作成するために、ビデオデータのブロックを再構築することと、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルを使用して、ビデオデータの再構築ブロック中のサンプルの勾配計算を実施することを含む、ビデオデータの再構築ブロック中のサンプルの勾配の値を決定することと、サンプルの勾配の決定された値に少なくとも部分的に基づいて、ビデオデータの再構築ブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタをビデオデータの再構築ブロックに適用することと、を行うように構成される。
[0230]図8は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。図8は、説明の目的で提供されており、本開示において広く例示され、説明される技法に対する限定ではない。
[0231]図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサ中にあるいは処理回路中に実装され得る。たとえば、ビデオデコーダ300のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。いくつかの例では、ビデオデコーダ300は、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスの一部であり得る。
[0232]予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0233]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化ビデオビットストリームからの符号化ビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コード化ピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、ビデオデコーダ300が符号化ビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号ピクチャを記憶する。CPBメモリ320とDPB314とは、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320とDPB314とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0234]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上記で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0235]図8に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図7と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0236]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行されるソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0237]エントロピー復号ユニット302は、CPBから符号化ビデオデータを受信し、ビデオデータをエントロピー復号してシンタックス要素を再生し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0238]概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
[0239]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モードインジケーションなどの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
[0240]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連する残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用し得る。
[0241]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対して参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図7)に関して説明されたのと実質的に同様である様式でインター予測プロセスを実施し得る。
[0242]別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図7)に関して説明されたのと実質的に同様である様式でイントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する近隣サンプルのデータを取り出し得る。
[0243]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0244]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、すべての例において必ずしも実施されるとは限らない。特に、フィルタユニット312は、上記で説明された本開示のALFおよびGALF技法を実施するように構成され得る。たとえば、フィルタユニット312は、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルを使用して、再構築コーディングブロック中のサンプル(sample)の勾配計算を実施することを含む、サンプルサンプル(sample)の勾配の値を決定することと、サンプルについて勾配の決定された値に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタを再構築コーディングブロックに適用することと、を行うように構成され得る。
[0245]いくつかの例では、フィルタユニット312は、本開示の技法などに従って、再構築コーディングブロックをカバーするウィンドウの勾配値を決定すること、ウィンドウは、ビデオデータの再構築ブロックのサンプルと、ビデオデータの再構築ブロックを囲むサンプルとを含み、当該決定することは、利用不可能サンプルを使用して勾配計算を実施することを含み、と、ウィンドウの決定された勾配値に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、を行うように構成され得る。これは、たとえば、本開示の技法などに従って、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を、境界の内側にある1つまたは複数の勾配値に置換することを含み得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、再構築コーディングブロックを含む。
[0246]いくつかの例では、フィルタユニット312は、ウィンドウの勾配値に、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を含めるのを控えるように構成され得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、ビデオデータの再構築ブロックを含む。フィルタユニット216は、ウィンドウの勾配値に、ウィンドウ内のサンプルの利用不可能勾配値を含めないことにより、ウィンドウの勾配値を正規化し得る。
[0247]いくつかの例では、フィルタユニット312は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを使用しない、適応ループフィルタからの部分フィルタを決定するように構成され得、ここで、部分フィルタは、非対称部分フィルタまたは対称部分フィルタのうちの1つを含む。他の例では、フィルタユニット216は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを置換するために、ミラーパディングを実施するように構成され得る。
[0248]いくつかの例では、フィルタユニット312は、再構築コーディングブロックの特定のサンプルの1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウの勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックが、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、再構築コーディングブロックの特定のサンプルのフィルタ処理を条件付きで無効にするように構成され得る。
[0249]いくつかの例では、フィルタユニット312は、再構築ブロック中の特定のサンプルの1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウの勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックが、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、再構築ブロック中の特定のサンプルとビデオデータのフィルタ処理されたブロックのサンプルとの加重平均を決定するように構成され得る。
[0250]ビデオデコーダ300は、再構築ブロックをDPB314に記憶し得る。たとえば、フィルタユニット312の動作が実施されない例において、再構築ユニット310は、再構築ブロックをDPB314に記憶し得る。フィルタユニット312の動作が実施される例では、フィルタユニット312は、フィルタ処理された再構築ブロックをDPB314に記憶し得る。上記で論じられたように、DPB314は、イントラ予測のための現在ピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなど、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号ピクチャ(たとえば、復号ビデオ)を、後続のプレゼンテーションのために、図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。
[0251]このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装された1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの例を表し、1つまたは複数の処理ユニットは、ビデオデータの再構築ブロックを作成するために、ビデオデータのブロックを再構築することと、ビデオデータの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルを使用してビデオデータの再構築ブロック中のサンプルの勾配計算を実施することを含む、ビデオデータの再構築ブロック中のサンプルの勾配の値を決定することと、サンプルの勾配の決定された値に少なくとも部分的に基づいて、ビデオデータの再構築ブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタをビデオデータの再構築ブロックに適用することと、を行うように構成される。
[0252]図9は、本開示の技法を実施するためのフィルタユニットの例示的な実装形態を示す。フィルタユニット216および312は、場合によってはビデオエンコーダ200またはビデオデコーダ300の他の構成要素とともに、本開示の技法を実施し得る。図9の例では、フィルタユニット216とフィルタユニット312とは、デブロックフィルタ342と、SAO344フィルタと、ALF/GLAFフィルタ346とを含む。SAOフィルタ344は、たとえば、ブロックのサンプルのためのオフセット値を決定するように構成され得る。
[0253]フィルタユニット216とフィルタユニット312とは、より少数のフィルタを含み得、および/または追加のフィルタを含み得る。さらに、図9に示されている特定のフィルタは、異なる順序で実装され得る。サンプル遷移を平滑化するか、または他の方法でビデオ品質を改善するために、(コーディングループ中のまたはコーディングループ後のいずれかの)他のループフィルタも使用され得る。
[0254]デブロックフィルタ342は、ビデオデータの再構築ブロックのデブロッキングフィルタ処理を実施するように構成され得る。SAOフィルタ344は、デブロックフィルタ342によって出力された、ビデオデータのデブロックされた再構築ブロックのSAOフィルタ処理を実施するように構成され得る。ALF/GALFフィルタ346は、SAOフィルタ344によって出力された、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックのALFまたはGALFを実施するように構成され得る。
[0255]特に、ALF/GALFフィルタ346は、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルを使用して、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロック中のサンプルの勾配計算を実施することを含む、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロック中のサンプルの勾配の値を決定することと、サンプルの勾配の決定された値に少なくとも部分的に基づいて、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタをビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックに適用することと、を行うように構成され得る。
[0256]いくつかの例では、ALG/GALFフィルタ346は、本開示の技法などに従って、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックをカバーするウィンドウの勾配値を決定すること、ウィンドウが、ビデオデータの再構築ブロックのサンプルと、ビデオデータの再構築ブロックを囲むサンプルとを含み、該決定することは、利用不可能サンプルを使用して勾配計算を実施することを含み、と、ウィンドウの決定された勾配値に少なくとも部分的に基づいて、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックのための適応ループフィルタを決定することと、を行うように構成され得る。これは、たとえば、本開示の技法などに従って、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を、境界の内側にある1つまたは複数の勾配値に置換することを含み得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックを含む。
[0257]いくつかの例では、ALG/GALFフィルタ346は、ウィンドウの勾配値(gradient values)に、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を含めるのを控えるように構成され得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、ビデオデータの再構築ブロックを含む。ALG/GALFフィルタ346は、ウィンドウの勾配値に、ウィンドウ内のサンプルの利用不可能勾配値を含めないことにより、ウィンドウの勾配値を正規化し得る。
[0258]いくつかの例では、ALG/GALFフィルタ346は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを使用しない、適応ループフィルタからの部分フィルタを決定するように構成され得、ここで、部分フィルタは、非対称部分フィルタまたは対称部分フィルタのうちの1つを含む。他の例では、ALG/GALFフィルタ346は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを置換するために、ミラーパディングを実施することように構成され得る。
[0259]いくつかの例では、ALG/GALFフィルタ346は、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックの特定のサンプルの1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウの勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックは、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、ビデオデータのデブロックおよびSAOフィルタ処理された再構築ブロックの特定のサンプルのフィルタ処理を条件付きで無効にするように構成され得る。
[0260]いくつかの例では、ALG/GALFフィルタ346は、再構築ブロック中の特定のサンプルと、ビデオデータのフィルタ処理されたブロックのサンプルとの加重平均を決定するように構成され得、該決定することは、特定のサンプルの1つまたは複数の勾配値を決定することが、1つまたは複数の利用不可能サンプルを使用して特定のサンプルのための1つまたは複数の勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロックをカバーするウィンドウの勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロックが、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づく。
[0261]所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、DPB314に記憶され、DPB314は、その後の動き補償のために使用される参照ピクチャを記憶する。DPB314は、図1のディスプレイデバイス118など、ディスプレイデバイス上に後で提示するための復号ビデオを記憶する追加メモリの一部であり得るか、または追加メモリとは別個であり得る。
[0262]図10は、ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを含み得る。ビデオデコーダ300(図1および図8)に関して説明されるが、他のデバイスが図10の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0263]ビデオデコーダ300は、エントロピー符号化された予測情報、および現在ブロックに対応する残差ブロックの係数についてのエントロピー符号化されたデータなど、現在ブロックについてのエントロピー符号化されたデータを受信し得る(370)。ビデオデコーダ300は、エントロピー符号化されたデータをエントロピー復号して、現在ブロックについての予測情報を決定し、残差ブロックの係数を再生し得る(372)。ビデオデコーダ300は、現在ブロックのための予測ブロックを計算するために、たとえば、現在ブロックについての予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在ブロックを予測し得る(374)。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、変換係数を逆量子化し、逆変換して、残差ブロックを生成し得る(378)。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在ブロックを復号し得る(380)。
[0264]いくつかの例では、ビデオデコーダ300は、デブロックフィルタ処理、SAOフィルタ処理、およびALFフィルタ処理など、復号ブロックのフィルタ処理を実施し得る。たとえば、ALFフィルタ処理を実施することの一部として、ビデオデコーダ300は、サンプルの再構築ブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルに対応する利用可能サンプルを使用して、再構築コーディングブロック中のサンプルの勾配計算を実施することを含む、再構築コーディングブロックのサンプルの勾配の値を決定することと、サンプルの勾配の決定された値に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタを再構築コーディングブロックに適用することと、を行い得る。
[0265]いくつかの例では、ALFフィルタ処理を実施することの一部として、ビデオデコーダ300は、本開示の技法などに従って、再構築コーディングブロックをカバーするウィンドウについて勾配値を決定すること、ウィンドウは、ビデオデータの再構築ブロックのサンプルと、ビデオデータの再構築ブロックを囲むサンプルとを含み、該決定することは、利用不可能サンプルを使用して勾配計算を実施することを含み、と、ウィンドウの決定された勾配値に少なくとも部分的に基づいて、再構築コーディングブロックのための適応ループフィルタを決定することと、を行い得る。これは、たとえば、本開示の技法などに従って、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ内のサンプルの利用不可能勾配値を、境界の内側にある1つまたは複数の勾配値に置換することを含み得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、再構築コーディングブロックを含む。
[0266]図11は、ビデオデータをコーディングするための例示的な方法を示すフローチャートである。本方法は、ビデオエンコーダ200(図1および図7)ならびに/またはビデオデコーダ300(図1および図8)によって実施され得る。ビデオエンコーダ200とビデオデコーダ300とに関して説明されるが、他のデバイスが図11の方法と同様の方法を実施するように構成され得ることを理解されたい。いくつかの例では、図11の技法は、実施された図7のフィルタユニット216および/または図8のフィルタユニット312であり得る。他の例では、図11の技法は、ビデオエンコーダ200および/またはビデオデコーダ300の1つまたは複数の他の構造ユニットによって実施され得る。
[0267]図11の例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ビデオデータの再構築ブロック170を作成するために、ビデオデータのブロックを再構築し得る(400)。たとえば、ビデオエンコーダ200および/またはビデオデコーダ300は、ビデオデータの再構築ブロックに対してALFを実施するより前に、ビデオデータの再構築ブロックにデブロッキングまたはSAOフィルタ処理を実施し得る。
[0268]ビデオエンコーダ200および/またはビデオデコーダ300は、サンプルデータの再構築ブロック170を含むピクチャ、スライス、タイル、またはタイルグループのうちの1つの外側にある利用不可能サンプルに対応する利用可能サンプルを使用して、ビデオデータの再構築ブロック170中のサンプルの勾配計算を実施することを含む、ビデオデータの再構築ブロック170中のサンプルの勾配の値を決定し得る(402)。
[0269]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、利用不可能サンプルの代わりに、サンプルの勾配の勾配方向に沿った利用可能近隣サンプルを使用してサンプルの勾配計算を実施し得る。いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、利用不可能近隣サンプルに対応する利用可能近隣サンプルを決定することために、ミラーパディングを実施し得、利用可能近隣サンプルを使用してサンプルの勾配計算を実施し得る。
[0270]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ビデオデータの再構築ブロック170をカバーするウィンドウ172の勾配値を決定し得、ウィンドウは、ビデオデータの再構築ブロック170のサンプルと、ビデオデータの再構築ブロック170を囲むサンプルとを含む。
[0271]ビデオエンコーダ200および/またはビデオデコーダ300は、勾配の決定された値に少なくとも部分的に基づいて、ビデオデータの再構築ブロック170のための適応ループフィルタを決定し得る(404)。
[0272]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ウィンドウの決定された勾配値に少なくとも部分的に基づいて、ビデオデータの再構築ブロック170のための適応ループフィルタを決定し得る。
[0273]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ172内のサンプルの利用不可能勾配値を、境界の内側にある1つまたは複数の勾配値に置換し得、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つは、ビデオデータの再構築ブロック170を含む。
[0274]いくつかの例では、境界は水平境界174を含み、ビデオエンコーダ200および/またはビデオデコーダ300は、ウィンドウ172内のおよび水平境界174の外側のサンプルの勾配値を、ウィンドウ172内のおよび水平境界174の外側のサンプルと同じ列上にある水平境界174内のサンプルの最も近い勾配値として決定し得る。
[0275]いくつかの例では、境界垂直境界176を含み、ビデオエンコーダ200および/またはビデオデコーダ300は、ウィンドウ172内のおよび垂直境界176の外側のサンプルの勾配値を、ウィンドウ172内のおよび垂直境界176の外側のサンプルと同じ行上にある垂直境界176内のサンプルの最も近い勾配値として決定し得る。
[0276]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ウィンドウ172内のおよび境界の外側のサンプルの対角勾配値を、ウィンドウ172内のおよび境界の外側のサンプルの対角勾配値と同じ勾配方向にある境界内のサンプルの最も近い対角勾配値として決定し得る。
[0277]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、境界の外側にあるウィンドウ172内のサンプルの利用不可能勾配値を置換するために、ビデオデータの再構築ブロック170内の追加のサンプルの追加の勾配値を決定し得る。
[0278]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ウィンドウ172の勾配値に、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ172内のサンプルの利用不可能勾配値を含めるのを控えること、ここで、ピクチャ、スライス、タイル、またはタイルグループのうちの1つが、ビデオデータの再構築ブロック170を含み、と、ウィンドウ172の勾配値を正規化することと、を行い得る。
[0279]ビデオエンコーダ200および/またはビデオデコーダ300は、ビデオデータのフィルタ処理されたブロックを生成するために、決定された適応ループフィルタをビデオデータの再構築ブロック170に適用し得る(406)。
[0280]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを使用しない、適応ループフィルタからの部分フィルタを決定し得、ここで、部分フィルタは、非対称部分フィルタまたは対称部分フィルタのうちの1つを含む。
[0281]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、利用不可能サンプルに対応するフィルタサポートを利用する適応ループフィルタに応答して、利用不可能サンプルに対応するフィルタサポートを置換するために、ミラーパディングを実施し得る。
[0282]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ビデオデータの再構築ブロック170のサンプルの勾配値を決定することが、利用不可能サンプルを使用して勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロック170をカバーするウィンドウ172の勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ172内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロック170が、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、ビデオデータの再構築ブロック170のサンプルのフィルタ処理を、条件付きで無効にし得る。
[0283]いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、再構築ブロック中のサンプルの勾配値を決定することが、利用不可能サンプルを使用して勾配計算を実施することを含むかどうか、あるいは、ビデオデータの再構築ブロック170をカバーするウィンドウ172の勾配値を決定することが、ピクチャ、スライス、タイル、またはタイルグループのうちの1つの境界の外側にあるウィンドウ172内の1つまたは複数のサンプルの1つまたは複数の勾配値を決定することを含むかどうか、ここで、ビデオデータの再構築ブロック170が、境界の内側にある、のうちの少なくとも1つに少なくとも部分的に基づいて、再構築ブロック中のサンプルとビデオデータのフィルタ処理されたブロックのサンプルとの加重平均を決定し得る。
[0284]いくつかの例では、ビデオエンコーダ200は、ビデオデータを符号化し、ビデオデータのフィルタ処理されたブロックを復号ピクチャバッファ218に記憶し得る。いくつかの例では、ビデオエンコーダ200は、カメラを用いて、ビデオデータのブロックを含むピクチャをキャプチャし得る。
[0285]いくつかの例では、ビデオデコーダ300は、ビデオデータを復号し得、ビデオデータのフィルタ処理されたブロックを復号ピクチャバッファ314に記憶し得る。いくつかの例では、ビデオデコーダ300は、ビデオデータのフィルタ処理されたブロックを含むピクチャを表示し得る。
[0286]本開示の例示的な説明は以下を含む。
[0287]例1: ビデオデータを復号する方法であって、該方法は、サンプルのブロックを取得することと、サンプルのブロックの現在サンプルの勾配を決定することと、決定された勾配に基づいて、サンプルのためのフィルタを決定することとを備える。
[0288]例2: 現在サンプルの勾配を決定することは、利用不可能サンプルを使用して勾配計算を実施することを備える、例1による方法。
[0289]例3: 利用不可能サンプルは、サンプルのブロックを含むピクチャ、スライス、タイル、またはタイルグループのうちの1つまたは複数の境界の外側のサンプルを備える、例1による方法。
[0290]例4: サンプルのブロック中の利用可能サンプルの値に基づいて、利用不可能サンプルの値を決定することをさらに備える、例2または3による方法。
[0291]例5: サンプルのブロック中の利用可能サンプルの値に基づいて、利用不可能サンプルの値を決定することは、現在サンプルの勾配の方向に基づいて、使用されるべき利用可能サンプルを決定することを備える、例4による方法。
[0292]例6: 方向は45度方向を備える、例5による方法。
[0293]例7: 方向は135度方向を備える、例5による方法。
[0294]例8: 方向は90度方向を備える、例5による方法。
[0295]例9: 方向は0度方向を備える、例5による方法。
[0296]例10: サンプルは、ピクチャ、スライス、タイル、またはタイルグループの垂直境界に隣接する、例1~9のいずれかによる方法。
[0297]例11: サンプルは、ピクチャ、スライス、タイル、またはタイルグループの水平境界に隣接する、例1~9のいずれかによる方法。
[0298]例12: サンプルは、サブブロックのサンプルであり、サンプルの勾配を決定することは、サブブロックの勾配を決定することを備える、例1~11のいずれかによる方法。
[0299]例13: サブブロックは、4×4ブロックを備える、例12による方法。
[0300]例14: サンプルは、ルーマサンプルを備える、例1~13のいずれかによる方法。
[0301]例15: 決定された勾配に基づいて、現在サンプルのためのフィルタを選択することと、利用不可能サンプルに対応するフィルタサポートを利用する選択されたフィルタに応答して、部分フィルタを使用して現在サンプルをフィルタ処理することとをさらに備える、例1~14のいずれかによる方法。
[0302]例16: 部分フィルタは、対称部分フィルタを備える、例15による方法。
[0303]例17: 部分フィルタは、非対称部分フィルタを備える、例15による方法。
[0304]例18: 決定されたフィルタを使用してサンプルをフィルタ処理することをさらに備える、例1~17のいずれかによる方法。
[0305]例19: 復号する方法が、ビデオ符号化プロセスの一部として実施される、例1~15のいずれかによる方法。
[0306]例20: ビデオデータを復号するためのデバイスであって、デバイスは、ビデオデータを記憶するように構成されたメモリと、例1~18で説明されるいずれかの技法および/または本開示で説明されるいずれかの技法を使用してビデオデータを復号するように構成された1つまたは複数のプロセッサとを備える。
[0307]例21: デバイスは、符号化ビデオデータを受信するように構成された受信機をさらに備えるワイヤレス通信デバイスを備える、例20によるデバイス。
[0308]例22: ワイヤレス通信デバイスは、電話ハンドセットを備え、受信機が、ワイヤレス通信規格に従って、符号化ビデオデータを備える信号を復調するように構成された、例21によるデバイス。
[0309]例23: 1つまたは複数のプロセッサによって実行されたとき、例1~19で説明されるいずれかの技法および/または本開示で説明されるいずれかの技法を使用してビデオデータを1つまたは複数のプロセッサに復号させる命令を記憶するコンピュータ可読記憶媒体。
[0310]例24: ビデオデータを復号するための装置であって、装置が、例1~19で説明されるいずれかの技法を使用してビデオデータを復号するための手段、および/または本開示で説明されるいずれかの技法を使用してビデオデータを復号するための手段を備える。
[0311]例25: ビデオデータを符号化するためのデバイスであって、デバイスが、ビデオデータを記憶するように構成されたメモリと、例1~19で説明されるいずれかの技法および/または本開示で説明されるいずれかの技法を使用してビデオデータを符号化するように構成された1つまたは複数のプロセッサとを備える。
[0312]例26: デバイスは、符号化ビデオデータを送信するように構成された送信機をさらに備えるワイヤレス通信デバイスを備える、例25のデバイス。
[0313]例27: ワイヤレス通信デバイスは、電話ハンドセットを備え、送信機は、ワイヤレス通信規格に従って、符号化ビデオデータを備える信号を変調するように構成された、例26のデバイス。
[0314]例28: 1つまたは複数のプロセッサによって実行されたとき、例1~19で説明されるいずれかの技法および/または本開示で説明されるいずれかの技法を使用してビデオデータを1つまたは複数のプロセッサに符号化させる命令を記憶するコンピュータ可読記憶媒体。
[0315]例29: ビデオデータを復号するための装置であって、装置が、
[0316]例1~19で説明されるいずれかの技法を使用してビデオデータを符号化するための手段、および/または本開示で説明されるいずれかの技法を使用してビデオデータを符号化するための手段を備える。
[0317]本開示のいくつかの態様について、例示のために、HEVCと、HEVCの拡張と、開発中のVVC規格とに関して説明された。ただし、本開示で説明される技法は、まだ開発されていない他の規格またはプロプライエタリビデオコーディングプロセスを含む、他のビデオコーディングプロセスのために有用であり得る。
[0318]本開示で説明されるビデオコーダは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指し得る。本開示では、「に基づいて」という句は、のみに基づいて、に少なくとも部分的に基づいて、または、に何らかのやり方で基づいて、を示し得る。本開示は、1つまたは複数のサンプルブロックと、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」、または「ビデオブロック」、または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロックパーティションの説明と交換され得る。例示的なタイプのビデオブロックは、コーディングツリーブロック、コーディングブロック、およびビデオデータの他のタイプのブロックを含み得る。
[0319]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0320]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0321]1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0322]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0323]本開示で説明される機能は、固定機能および/またはプログラマブル処理回路によって実施され得る。たとえば、命令は、固定機能および/またはプログラマブル処理回路によって実行され得る。命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」および「処理回路」という用語は、前述の構造、または本明細書において説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。処理回路は、様々な仕方で他の構成要素に結合され得る。たとえば、処理回路は、内部デバイス相互接続、ワイヤードまたはワイヤレスネットワーク接続を介して他の構成要素に結合され得る。
[0324]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。そうではなく、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0325]様々な例について説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。