[0022] 図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、未加工のコーディングされていないビデオと、符号化されたビデオと、復号された(たとえば、再構成された)ビデオと、シグナリングデータなどのビデオメタデータとを含んでよい。
[0023] 図1に示すように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化ビデオデータを提供するソースデバイス102を含む。詳細には、ソースデバイス102は、コンピュータ可読媒体110を介してビデオデータを宛先デバイス116に提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイスなどを含む、幅広いデバイスのうちのいずれかを備えてよい。場合によっては、ソースデバイス102および宛先デバイス116は、ワイヤレス通信のために装備されてよく、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0024] 図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、クロスコンポーネント適応ループフィルタリングを実行するための技法を適用するように構成され得る。したがって、ソースデバイス102は、ビデオ符号化デバイスの一例を表し、宛先デバイス116は、ビデオ復号デバイスの一例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含んでよい。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信してよい。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースしてよい。
[0025] 図1に示すようなシステム100は一例にすぎない。一般に、任意のデジタルビデオ符号化および/または復号デバイスが、クロスコンポーネント適応ループフィルタリングのための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためにコード化ビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化および/または復号)を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、詳細には、それぞれ、ビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のために、ソースデバイス102と宛先デバイス116との間で1方向または2方向のビデオ送信をサポートし得る。
[0026] 概して、ビデオソース104は、ビデオデータ(すなわち、未加工のコーディングされていないビデオデータ)のソースを表し、ビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200はピクチャに対するデータを符号化する。ソースデバイス102のビデオソース104は、以前にキャプチャされた未加工のビデオを含むビデオカメラ、ビデオアーカイブなどのビデオキャプチャデバイス、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含んでよい。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされた、事前キャプチャされた、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、受信された順序(時々、「表示順序」と呼ばれる)からコーディング用のコーディング順序に、ピクチャを再配置し得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による、受信および/または取出しのために、出力インターフェース108を介してコンピュータ可読媒体110上に符号化ビデオデータを出力し得る。
[0027] ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、未加工のビデオデータ、たとえば、ビデオソース104からの未加工ビデオと、ビデオデコーダ300からの未加工の復号されたビデオデータとを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能な、ソフトウェア命令を記憶し得る。この例ではビデオエンコーダ200およびビデオデコーダ300から別個に示されるが、ビデオエンコーダ200およびビデオデコーダ300がまた、機能的に類似のまたは均等な目的のための内部メモリを含んでよいことを理解されたい。さらに、メモリ106、120は、符号化ビデオデータ、たとえば、ビデオエンコーダ200からの出力と、ビデオデコーダ300への入力とを記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、未加工の復号ビデオデータおよび/または符号化ビデオデータを記憶するための、1つまたは複数のビデオバッファとして割り振られてよい。
[0028] コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータをトランスポートすることが可能な任意のタイプの媒体またはデバイスを表してよい。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースネットワークを介して、符号化ビデオデータをリアルタイムで直接宛先デバイス116へ送信することを可能にするための、通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調してよく、入力インターフェース122は、受信された送信信号をワイヤレス通信プロトコルなどの通信規格に従って復調してよい。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備えてよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含んでよい。
[0029] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化データを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112からの符号化データにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のうちのいずれかを含んでよい。
[0030] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化ビデオを記憶し得る、ファイルサーバ114または別の中間記憶デバイスに、符号化ビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化ビデオデータを記憶することおよびその符号化ビデオデータを宛先デバイス116へ送信することが可能な、任意のタイプのサーバデバイスであってよい。ファイルサーバ114は、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表してよい。宛先デバイス116は、インターネット接続を含む任意の標準データ接続を通じて、ファイルサーバ114からの符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、有線接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはファイルサーバ114上に記憶された符号化ビデオデータにアクセスするのに適したその両方の組合せを含んでよい。ファイルサーバ114および入力インターフェース122は、ストリーミング伝送プロトコル、ダウンロード伝送プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0031] 出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、有線ネットワーキング構成要素(たとえば、Ethernet(登録商標)カード)、様々な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デバイスを含んでよい。
[0032] 本開示の技法は、オーバージエアテレビ放送、ケーブルテレビ送信、衛星テレビ送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のうちのいずれかのサポートにおけるビデオコーディングに適用され得る。
[0033] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。符号化ビデオビットストリームは、ビデオブロックまたは他のコード化ユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって規定されるシグナリング情報を含んでよい。ディスプレイデバイス118は、復号ビデオデータの復号ピクチャをユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちのいずれかを表してよい。
[0034] 図1に示さないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと統合されてよく、共通のデータストリームの中にオーディオとビデオの両方を含む多重化ストリームを処理するために、適切なMUX-DEMUXユニットまたは他のハードウェアおよび/もしくはソフトウェアを含んでよい。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0035] ビデオエンコーダ200およびビデオデコーダ300は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適なエンコーダおよび/またはデコーダ回路構成のうちのいずれかとして実装され得る。技法が部分的にソフトウェアで実装されるとき、デバイスは、本開示の技法を実行するために、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体の中に記憶してよく、1つまたは複数のプロセッサを使用してハードウェアで命令を実行してよい。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダの中に含まれてよく、それらのうちのいずれも、それぞれのデバイスの中で、組み合わせられたエンコーダ/デコーダ(コーデック)の一部として統合されてよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備えてよい。
[0036] ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、またはマルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのそれらの拡張などの、ビデオコーディング規格に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、共同探求テストモデル(JEM)または多用途ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266などの、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC規格の最近のドラフトは、Brossら、「Versatile Video Coding (Draft6)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11との共同ビデオエキスパート部会(JVET)、第15回会合、イェーテボリ、スウェーデン、2019年7月3日~12日、JVET-O2001-vE(以下では「VVCドラフト6」)の中に記載されている。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0037] 概して、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースコーディングを実行し得る。「ブロック」という用語は、概して、処理される(たとえば、符号化される、復号される、または符号化および/もしくは復号プロセスにおいて別のやり方で使用される)べきデータを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含んでよい。概して、ビデオエンコーダ200およびビデオデコーダ300は、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルに対して赤色、緑色、および青色(RGB)のデータをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色色相および青色色相の両方のクロミナンス成分を含んでよい。いくつかの例では、ビデオエンコーダ200は、符号化の前に、受信されたRGBフォーマット式データをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニットおよび後処理ユニット(図示せず)がこれらの変換を実行してよい。
[0038] 本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含めるように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックに対するデータを符号化または復号する、たとえば、予測および/または残差コーディングのプロセスを含めるように、ピクチャのブロックのコーディングに言及することがある。符号化ビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)およびブロックへのピクチャの区分を表す、シンタックス要素に対する一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成するシンタックス要素に対する値をコーディングすることとして理解されるべきである。
[0039] HEVCは、コーディングユニット(CU)と、予測ユニット(PU)と、変換ユニット(TU:transform unit)とを含む、様々なブロックを規定する。HEVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、4分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとをオーバーラップしない4つの均等な正方形に区分し、4分木の各ノードは、0個または4個の子ノードのいずれかを有する。子ノードを有しないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つもしくは複数のPUおよび/または1つもしくは複数のTUを含んでよい。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差4分木(RQT:residual quadtree)はTUの区分を表す。HEVCでは、PUはインター予測データを表し、TUは残差データを表す。イントラ予測されるCUは、イントラモード表示などのイントラ予測情報を含む。
[0040] 別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT:Multi-Type Tree)構造などの木構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCU、PU、およびTUの間の分離などの、複数の区分タイプという概念を除去する。QTBT構造は、2つのレベル、すなわち、4分木区分に従って区分される第1のレベルと、2分木区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
[0041] MTT区分構造では、ブロックは、4分木(QT:quadtree)区分と、2分木(BT:binary tree)区分と、1つまたは複数のタイプの3分木(TT:triple tree)区分とを使用して、区分され得る。3分木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分木区分は、中心を通って元のブロックを分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であってよい。
[0042] いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分の各々を表すために単一のQTBTまたはMTT構造を使用し得るが、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分用の1つのQTBT/MTT構造および両方のクロミナンス成分用の別のQTBT/MTT構造(すなわち、それぞれのクロミナンス成分用の2つのQTBT/MTT構造)などの、2つ以上のQTBTまたはMTT構造を使用し得る。
[0043] ビデオエンコーダ200およびビデオデコーダ300は、HEVCによる4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明のために、本開示の技法の説明はQTBT区分に関して提示される。ただし、本開示の技法が、4分木区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0044] ブロック(たとえば、CTUまたはCU)は、ピクチャの中に様々な方法でグループ化されてよい。一例として、ブリックとは、ピクチャの中の特定のタイル内のCTU行の長方形領域を指してよい。タイルとは、ピクチャの中の特定のタイル列内および特定のタイル行内のCTUの長方形領域であってよい。タイル列とは、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセットの中などで)シンタックス要素によって指定される幅とを有する、CTUの長方形領域を指す。タイル行とは、(たとえば、ピクチャパラメータセットの中などで)シンタックス要素によって指定される高さと、ピクチャの幅に等しい幅とを有する、CTUの長方形領域を指す。
[0045] いくつかの例では、タイルは複数のブリックに区分されてよく、その各々はタイル内の1つまたは複数のCTU行を含んでよい。複数のブリックに区分されないタイルも、ブリックと呼ばれてよい。ただし、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
[0046] ピクチャの中のブリックはまた、スライスの中に配置され得る。スライスは、単一のネットワーク抽象レイヤ(NAL)ユニットの中に排他的に含まれてよいピクチャの整数個のブリックであってよい。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続したシーケンスのみのいずれかを含む。
[0047] 本開示は、垂直寸法および水平寸法、たとえば、16×16サンプルまたは16バイ16(16 by 16)サンプルの観点から、(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を指すために、「N×N」と「NバイN」とを互換的に使用し得る。概して、16×16のCUは、垂直方向において16サンプル(y=16)と、水平方向において16サンプル(x=16)とを有する。同様に、N×NのCUは、概して、垂直方向においてNサンプルと、水平方向においてNサンプルとを有し、ただし、Nは非負の整数値を表す。CUの中のサンプルは、行および列をなして配置され得る。その上、CUは、必ずしも水平方向において垂直方向と同じ個数のサンプルを有することを必要としない。たとえば、CUはN×M個のサンプルを備えてよく、ただし、Mは必ずしもNに等しいとは限らない。
[0048] ビデオエンコーダ200は、予測情報および/または残差情報ならびに他の情報を表す、CUに対するビデオデータを符号化する。予測情報は、CUに対する予測ブロックを形成するために、CUがどのように予測されることになるのかを示す。残差情報は、概して、符号化の前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0049] CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通じてCUに対する予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、一般に、同じピクチャの、以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分の観点から、CUに密に整合する参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在CUに密に整合するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD:sum of squared differences)、平均絶対差分(MAD:mean absolute difference)、平均2乗差分(MSD:mean squared differences)、または他のそのような差分計算を使用して、差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0050] JEMおよびVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインもしくはズームアウト、回転、遠近法の動き、または他の不規則な動きタイプなどの、並進でない動きを表す2つ以上の動きベクトルを決定し得る。
[0051] イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためのイントラ予測モードを選択し得る。JEMおよびVVCのいくつかの例は、様々な方向性モードならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロックのサンプルをそこから予測するための、現在ブロック(たとえば、CUのブロック)への隣接サンプルを記述する、イントラ予測モードを選択する。ビデオエンコーダ200がラスタ走査順序(左から右、上から下)でCTUとCUとをコーディングすることを想定すると、そのようなサンプルは、概して、現在ブロックと同じピクチャの中の現在ブロックの上、現在ブロックの上およびその左、または現在ブロックの左にあってよい。
[0052] ビデオエンコーダ200は、現在ブロック用の予測モードを表すデータを符号化する。たとえば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるのか、ならびに対応するモードに対する動き情報を表す、データを符号化し得る。単方向または双方向インター予測の場合、たとえば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)モードまたはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モード用の動きベクトルを符号化するために、類似のモードを使用し得る。
[0053] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックに対する残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックに対する予測ブロックとの間の差分を、サンプルごとに表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域における変換されたデータを作り出すために、1つまたは複数の変換を残差ブロックに適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に類似の変換を、残差ビデオデータに適用し得る。追加として、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)などの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を作り出す。
[0054] 上述のように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は変換係数の量子化を実行し得る。量子化とは、概して、係数を表すために使用されるデータの量をできる限り低減してさらなる圧縮をもたらすように、変換係数が量子化されるプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値まで小さく丸めてよく、ただし、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位での右シフトを実行し得る。
[0055] 量子化に続いて、ビデオエンコーダ200は変換係数を走査してよく、量子化変換係数を含む2次元行列から1次元ベクトルを作り出す。走査は、より高いエネルギー(したがって、より低い周波数)係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い周波数)変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、量子化変換係数を走査してシリアル化されたベクトルを作り出すために、既定の走査順序を利用してよく、次いで、ベクトルの量子化変換係数をエントロピー符号化してよい。他の例では、ビデオエンコーダ200は適応走査を実行し得る。1次元ベクトルを形成するために量子化変換係数を走査した後、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化ビデオデータに関連するメタデータを記述するシンタックス要素に対する値をエントロピー符号化し得る。
[0056] CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当ててよい。コンテキストは、たとえば、シンボルの隣接する値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づいてよい。
[0057] ビデオエンコーダ200は、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータの中で、ビデオデコーダ300への、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどの、シンタックスデータをさらに生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0058] このようにして、ビデオエンコーダ200は、符号化ビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックに対する予測情報および/または残差情報を記述するシンタックス要素を含む、ビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し得、符号化ビデオデータを復号し得る。
[0059] 概して、ビデオデコーダ300は、ビットストリームの符号化ビデオデータを復号するために、ビデオエンコーダ200によって実行されるプロセスとは相反のプロセスを実行する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスとは相反としても、それと実質的に類似の方法で、CABACを使用してビットストリームのシンタックス要素に対する値を復号し得る。シンタックス要素は、CTUのCUを規定するために、QTBT構造などの対応する区分構造に従って、CTUへのピクチャの区分情報と、各CTUの区分とを規定し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)に対する予測情報と残差情報とをさらに規定し得る。
[0060] 残差情報は、たとえば、量子化変換係数によって表されてよい。ビデオデコーダ300は、ブロックに対する残差ブロックを再生するために、ブロックの量子化変換係数を逆量子化および逆変換し得る。ビデオデコーダ300は、ブロックに対する予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)と、関連する予測情報(たとえば、インター予測用の動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために予測ブロックと残差ブロックとを(サンプルごとに)組み合わせてよい。ビデオデコーダ300は、ブロックの境界に沿った視覚的アーティファクトを低減するためにデブロッキングプロセスを実行することなどの、追加の処理を実行し得る。
[0061] 上記で論じられたように、および本開示の1つまたは複数の技法によれば、ビデオエンコーダ200および/またはビデオデコーダ300は、絶対値がゼロまたは2のべき乗になるように制限されたCC-ALFについてのフィルタ係数をシグナリングするように構成され得る。このようにして、ビデオエンコーダ200および/またはビデオデコーダ300は、CC-ALFの実行における乗算演算とビットシフト演算とを置換し得、ビットシフト演算は、リソース集約度がより低い。
[0062] 本開示は、概して、シンタックス要素などのいくつかの情報を「シグナリングすること」に言及することがある。「シグナリング」という用語は、概して、シンタックス要素に対する値および/または符号化ビデオデータを復号するために使用される他のデータの通信を指してよい。すなわち、ビデオエンコーダ200は、シンタックス要素に対する値をビットストリームの中でシグナリングしてよい。概して、シグナリングとは、ビットストリームの中の値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムで、または宛先デバイス116によって後で取り出せるようにシンタックス要素を記憶デバイス112に記憶するときに起こり得るようにリアルタイムでなく、ビットストリームを宛先デバイス116にトランスポートし得る。
[0063] 図2Aおよび図2Bは、例示的な4分木2分木(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線は4分木分割を表し、点線は2分木分割を示す。2分木の分割された各(すなわち、非リーフ)ノードにおいて、どの分割タイプ(すなわち、水平または垂直)が使用されるのかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平分割を示し、1は垂直分割を示す。4分木分割の場合、4分木ノードは、サイズが等しい4つのサブブロックに、水平および垂直にブロックを分割するので、分割タイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベルに対する(分割情報などの)シンタックス要素(すなわち、実線)と、QTBT構造130の予測ツリーレベルに対する(分割情報などの)シンタックス要素(すなわち、破線)とを、ビデオエンコーダ200が符号化してよくビデオデコーダ300が復号してよい。QTBT構造130の端末リーフノードによって表されるCUに対して、予測データおよび変換データなどのビデオデータを、ビデオエンコーダ200が符号化してよくビデオデコーダ300が復号してよい。
[0064] 概して、図2BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを規定するパラメータに関連し得る。これらのパラメータは、(サンプル単位でCTU132のサイズを表す)CTUサイズと、最小4分木サイズ(最小許容4分木リーフノードサイズを表す、MinQTSize)と、最大2分木サイズ(最大許容2分木ルートノードサイズを表す、MaxBTSize)と、最大2分木深度(最大許容2分木深度を表す、MaxBTDepth)と、最小2分木サイズ(最小許容2分木リーフノードサイズを表す、MinBTSize)とを含んでよい。
[0065] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有してよく、その各々は、4分木区分に従って区分され得る。すなわち、第1のレベルのノードは、(子ノードを有しない)いずれかのリーフノードであるか、または4つの子ノードを有する。QTBT構造130の例は、分岐に対して実線を有する親ノードと子ノードとを含むものとして、そのようなノードを表す。第1のレベルのノードが最大許容2分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、ノードはそれぞれの2分木によってさらに区分され得る。1つのノードの2分木分割は、分割から得られるノードが最小許容2分木リーフノードサイズ(MinBTSize)または最大許容2分木深度(MaxBTDepth)に到達するまで反復され得る。QTBT構造130の例は、分岐に対して破線を有するものとしてそのようなノードを表す。2分木リーフノードは、コーディングユニット(CU)と呼ばれ、コーディングユニット(CU)は、それ以上区分することなく、予測(たとえば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上記で説明したように、CUは、「ビデオブロック」または「ブロック」と呼ばれることもある。
[0066] QTBT区分構造の一例では、CTUサイズは128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、MinBTSizeは(幅と高さの両方に対して)4として設定され、MaxBTDepthは4として設定される。4分木リーフノードを生成するために、最初に4分木区分がCTUに適用される。4分木リーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有してよい。リーフ4分木ノードが128×128である場合、リーフ4分木ノードは、サイズがMaxBTSize(すなわち、この例では64×64)を上回るので、2分木によってそれ以上分割されない。そうでない場合、リーフ4分木ノードは、2分木によってさらに区分される。したがって、4分木リーフノードはまた、2分木に対してルートノードであり、0としての2分木深度を有する。2分木深度がMaxBTDepth(この例では4)に到達すると、それ以上の分割は許されない。2分木ノードがMinBTSize(この例では4)に等しい幅を有するとき、そのことはそれ以上の水平分割が許されないことを暗示する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してそれ以上の垂直分割が許されないことを暗示する。上述のように、2分木のリーフノードはCUと呼ばれ、それ以上区分することなく予測および変換に従ってさらに処理される。
[0067] 図3は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。図3は説明のために提供され、本開示において広く例示および説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、開発中のHEVCビデオコーディング規格およびH.266ビデオコーディング規格などの、ビデオコーディング規格のコンテキストでビデオエンコーダ200を説明する。しかしながら、本開示の技法はこれらのビデオコーディング規格に限定されず、一般にビデオ符号化およびビデオ復号に適用可能である。
[0068] 図3の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB:decoded picture buffer)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、DPB218、およびエントロピー符号化ユニット220のうちのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路構成で実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実行するために、追加または代替のプロセッサまたは処理回路構成を含んでよい。
[0069] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230の中に記憶されるビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測における使用のための参照ビデオデータを記憶する参照ピクチャメモリとして働いてよい。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)などの、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって設けられてよい。様々な例では、ビデオデータメモリ230は、図示したようにビデオエンコーダ200の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってよい。
[0070] 本開示では、ビデオデータメモリ230への言及は、そのように特に説明されない限りビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきでなく、またはそのように特に説明されない限りビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきでない。むしろ、ビデオデータメモリ230への言及は、符号化するためにビデオエンコーダ200が受信するビデオデータ(たとえば、符号化されることになる現在ブロックに対するビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106も、ビデオエンコーダ200の様々なユニットからの出力の一時的な記憶を提供し得る。
[0071] 図3の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを支援するために図示される。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路とは、特定の機能性を提供する回路を指し、実行され得る動作において事前設定される。プログラマブル回路とは、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能性を提供する。たとえば、プログラマブル回路は、プログラマブル回路に、ソフトウェアまたはファームウェアの命令によって規定される方式で動作させる、ソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信しパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つまたは複数は異なる回路ブロック(固定機能またはプログラマブル)であってよく、いくつかの例では、1つまたは複数のユニットは集積回路であってよい。
[0072] ビデオエンコーダ200は、算術論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されたプログラマブルコアを含んでよい。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)は、ビデオエンコーダ200が受信および実行するソフトウェアのオブジェクトコードを記憶してよく、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してもよい。
[0073] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出してよく、残差生成ユニット204およびモード選択ユニット202にビデオデータを提供してよい。ビデオデータメモリ230の中のビデオデータは、符号化されることになる未加工のビデオデータであってよい。
[0074] モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するために、追加の機能ユニットを含んでよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM:linear model)ユニットなどを含んでよい。
[0075] モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せに対して得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データ用の変換タイプ、CUの残差データのための量子化パラメータなどを含んでよい。モード選択ユニット202は、テストされた他の組合せよりも良好なレートひずみ値を有する符号化パラメータの組合せを、最終的に選択してよい。
[0076] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分してよく、スライス内の1つまたは複数のCTUをカプセル化してよい。モード選択ユニット202は、上記で説明した、HEVCのQTBT構造または4分木構造などの木構造に従って、ピクチャのCTUを区分してよい。上記で説明したように、ビデオエンコーダ200は、木構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に、「ビデオブロック」または「ブロック」と呼ばれることもある。
[0077] 概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUおよびTUのオーバーラップする部分)に対する予測ブロックを生成するために、その構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測に対して、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218の中に記憶された、以前にコーディングされた1つまたは複数のピクチャ)の中の、密に整合する1つまたは複数の参照ブロックを識別するために、動き探索を実行し得る。詳細には、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差分(MAD)、平均2乗差分(MSD)などに従って、可能な参照ブロックが現在ブロックにどのくらい類似しているのかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと検討中の参照ブロックとの間のサンプルごとの差分を使用して、これらの計算を実行し得る。動き推定ユニット222は、現在ブロックに最も密に整合する参照ブロックを示す、これらの計算から得られる最小値を有する参照ブロックを識別し得る。
[0078] 動き推定ユニット222は、現在ピクチャの中の現在ブロックの位置に対して、参照ピクチャの中の参照ブロックの位置を規定する、1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動き補償ユニット224に動きベクトルを提供し得る。たとえば、単方向インター予測の場合、動き推定ユニット222は単一の動きベクトルを提供し得るが、双方向インター予測の場合、動き推定ユニット222は2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出してよい。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット224は、予測ブロックに対する値を1つまたは複数の補間フィルタに従って補間してよい。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別される2つの参照ブロックに対するデータを取り出してよく、たとえば、サンプルごとの平均化または重み付き平均化を通じて、取り出されたデータを組み合わせてよい。
[0079] 別の例として、イントラ予測またはイントラ予測コーディングに対して、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを生成し得る。たとえば、方向性モードの場合、イントラ予測ユニット226は、概して、隣接するサンプルの値を数学的に組み合わせてよく、予測ブロックを作り出すために、計算されたこれらの値を現在ブロックにわたる規定された方向で埋めてよい。別の例として、DCモードの場合、イントラ予測ユニット226は、現在ブロックへの隣接するサンプルの平均を計算してよく、予測ブロックのサンプルごとにこの得られた平均を含むように、予測ブロックを生成してよい。
[0080] モード選択ユニット202は、残差生成ユニット204に予測ブロックを提供する。残差生成ユニット204は、現在ブロックの未加工のコーディングされていないバージョンをビデオデータメモリ230から、および予測ブロックをモード選択ユニット202から受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックに対する残差ブロックを規定する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値の間の差分を決定してよい。いくつかの例では、残差生成ユニット204は、2進減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
[0081] モード選択ユニット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サイズに対して非対称の区分をサポートし得る。
[0082] モード選択ユニット202がそれ以上CUをPUに区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関連し得る。上記のように、CUのサイズとは、CUのルーマコーディングブロックのサイズを指してよい。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NというCUサイズをサポートし得る。
[0083] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの、他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連するそれぞれのユニットを介して、符号化中の現在ブロックに対する予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成しなくてよく、代わりに、選択されたパレットに基づいてブロックを再構成するための方式を示すシンタックス要素を生成する。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0084] 上記で説明したように、残差生成ユニット204は、現在ブロックに対するビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在ブロックに対する残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0085] 変換処理ユニット206は、変換係数のブロック(本明細書で「変換係数ブロック」と呼ぶ)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に類似の変換を、残差ブロックに適用してよい。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、1次変換および回転変換などの2次変換を、残差ブロックに実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0086] 量子化ユニット208は、量子化変換係数ブロックを作り出すために、変換係数ブロックの中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連する量子化パラメータ(QP:quantization parameter)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連するQP値を調整することによって、現在ブロックに関連する変換係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失を持ち込むことがあり、したがって、量子化変換係数は、変換処理ユニット206によって作り出される元の変換係数よりも精度が低いことがある。
[0087] 逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構成するために、それぞれ、逆量子化と逆変換とを量子化変換係数ブロックに適用し得る。再構成ユニット214は、再構成された残差ブロック、およびモード選択ユニット202によって生成された予測ブロックに基づいて、(潜在的にいくらかの程度のひずみを有するとしても)現在ブロックに対応する再構成されたブロックを作り出し得る。たとえば、再構成ユニット214は、再構成されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構成された残差ブロックのサンプルを加算してよい。
[0088] フィルタユニット216は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行してよい。いくつかの例では、フィルタユニット216の動作はスキップされてよい。フィルタユニット216は、本開示のクロスコンポーネント適応ループフィルタリング(CC-ALF)技法を、単独で、または任意の組合せで、実行し得る。たとえば、フィルタユニット216は、図5を参照して以下に論じられるようにCC-ALFを実行してもよい。フィルタユニット216は、CC-ALFについての1つまたは複数の係数を生成し得る。たとえば、フィルタユニット216は、ルーマブロックから第1の中間クロマブロックを生成する場合に使用されるべき、フィルタ係数の第1のセットと、ルーマブロックから第2の中間クロマブロックを生成する場合に使用されるべき、フィルタ係数の第2のセットとを生成し得る。上記で論じられたように、および本開示の1つまたは複数の技法によれば、フィルタユニット216は、生成されるフィルタ係数の絶対値をゼロまたは2のべき乗(たとえば、1、2、4、8、16、32、64、128、256など)に制限し得る。同様に、エントロピー符号化ユニット220は、本開示の技法に従って、クロスコンポーネント適応ループフィルタリングパラメータをエントロピー符号化するように構成され得る。たとえば、フィルタ係数の実際の値を符号化することとは対照的に、エントロピー符号化ユニット220は、フィルタ係数の指数値を符号化し得、ビデオデコーダは、指数値に基づいて、フィルタ係数の実際の値を再構築し得る。
[0089] ビデオエンコーダ200は、再構成されたブロックをDPB218の中に記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構成ユニット214は、再構成されたブロックをDPB218に記憶してよい。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理済みの再構成されたブロックをDPB218に記憶してよい。動き推定ユニット222および動き補償ユニット224は、その後に符号化されるピクチャのブロックをインター予測するために、再構成された(また潜在的にフィルタ処理された)ブロックから形成された参照ピクチャをDPB218から取り出してよい。加えて、イントラ予測ユニット226は、現在ピクチャの中の他のブロックをイントラ予測するために、現在ピクチャの、DPB218の中の再構成されたブロックを使用し得る。
[0090] 概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報、またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して、1つまたは複数のエントロピー符号化動作を実行し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率区間区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行してよい。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0091] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構成するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。詳細には、エントロピー符号化ユニット220がビットストリームを出力してよい。
[0092] 上記で説明した動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0093] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要がない。一例として、ルーマコーディングブロックに対する動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックに対するMVと参照ピクチャとを識別するために繰り返される必要がない。むしろ、クロマブロックに対するMVを決定するために、ルーマコーディングブロックに対するMVがスケーリングされてよく、参照ピクチャが同じであってよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックにとって同じであってよい。
[0094] ビデオエンコーダ200は、ビデオデータを符号化するように構成され、ビデオデータを記憶するように構成されたメモリと、回路構成の中に実装され、本開示によるクロスコンポーネント適応ループフィルタリング技法を実行するように構成された1つまたは複数の処理ユニットとを含むデバイスの例を表す。
[0095] 図4は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図4は説明のために提供され、本開示において広く例示および説明されるような技法における限定ではない。説明のために、本開示は、JEM、VVC、およびHEVCの技法によるビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されるビデオコーディングデバイスによって実行され得る。
[0096] 図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB:coded picture buffer)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構成ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、およびDPB314のうちのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路構成で実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実行するために、追加または代替のプロセッサまたは処理回路構成を含んでよい。
[0097] 予測処理ユニット304は、動き補償ユニット316とイントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実行するために、追加のユニットを含んでよい。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含んでよい。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能の、構成要素を含んでよい。
[0098] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320の中に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化ビデオビットストリームからの符号化ビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含んでよい。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時的なデータなどの、コード化ピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、符号化ビデオビットストリームの後続のデータもしくはピクチャを復号するときに、ビデオデコーダ300が参照ビデオデータとして出力および/または使用することがある、復号ピクチャを記憶する。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)などの、様々なメモリデバイスのうちのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって設けられてよい。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってよい。
[0099] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出してよい。すなわち、メモリ120は、CPBメモリ320とともに、上記で説明したようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能性の一部または全部が、ビデオデコーダ300の処理回路構成によって実行されるべきソフトウェアで実装されるとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0100] 図4に示す様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを支援するために図示される。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図3と同様に、固定機能回路とは、特定の機能性を提供する回路を指し、実行され得る動作において事前設定される。プログラマブル回路とは、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能性を提供する。たとえば、プログラマブル回路は、プログラマブル回路に、ソフトウェアまたはファームウェアの命令によって規定される方式で動作させる、ソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信しパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、1つまたは複数のユニットは異なる回路ブロック(固定機能またはプログラマブル)であってよく、いくつかの例では、1つまたは複数のユニットは集積回路であってよい。
[0101] ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されたプログラマブルコアを含んでよい。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実行される例では、ビデオデコーダ300が受信および実行するソフトウェアの命令(たとえば、オブジェクトコード)を、オンチップメモリまたはオフチップメモリが記憶し得る。
[0102] エントロピー復号ユニット302は、CPBから符号化ビデオデータを受信してよく、シンタックス要素を再生するためにビデオデータをエントロピー復号してよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されるシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0103] 概して、ビデオデコーダ300は、ピクチャをブロックごとに再構成する。ビデオデコーダ300は、各ブロックに対して再構成動作を個別に実行し得る(ここで、現在再構成中の、すなわち、復号中のブロックは、「現在ブロック」と呼ばれることがある)。
[0104] エントロピー復号ユニット302は、量子化変換係数ブロックの量子化変換係数ならびに量子化パラメータ(QP)および/または変換モード表示などの変換情報を規定する、シンタックス要素をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度、および同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化変換係数ブロックに関連するQPを使用し得る。逆量子化ユニット306は、たとえば、量子化変換係数を逆量子化するために、ビット単位での左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
[0105] 逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在ブロックに関連する残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を、変換係数ブロックに適用してよい。
[0106] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って、予測ブロックを生成する。たとえば、現在ブロックがインター予測されていることを予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すためのDPB314の中の参照ピクチャ、ならびに現在ピクチャの中の現在ブロックのロケーションに対して、参照ピクチャの中の参照ブロックのロケーションを識別する、動きベクトルを示してよい。動き補償ユニット316は、概して、動き補償ユニット224(図3)に関して説明したのと実質的に類似の方法で、インター予測プロセスを実行し得る。
[0107] 別の例として、現在ブロックがイントラ予測されていることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。再び、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図3)に関して説明したのと実質的に類似の方法で、イントラ予測プロセスを実行し得る。イントラ予測ユニット318は、現在ブロックへの隣接するサンプルのデータを、DPB314から取り出してよい。
[0108] 再構成ユニット310は、予測ブロックと残差ブロックとを使用して、現在ブロックを再構成し得る。たとえば、再構成ユニット310は、現在ブロックを再構成するために、残差ブロックのサンプルを予測ブロックの対応するサンプルに加算してよい。
[0109] エントロピー復号ユニット302は、本開示の技法に従って、クロスコンポーネント適応ループフィルタパラメータをさらにエントロピー復号し得る。たとえば、本開示の1つまたは複数の技法に従って、エントロピー復号ユニット302は、複数のフィルタ係数の各々について、符号化されたビデオビットストリームから、特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を指数値のべき乗にしたものとして特定するシンタックス要素を復号し得る。特定のフィルタ係数についての指数値が非ゼロである場合、エントロピー復号ユニット302は、符号化されたビデオビットストリームから、および特定のフィルタ係数について、特定のフィルタ係数の符号(sign)(たとえば、正または負のいずれか)を特定する値を有するシンタックス要素を復号し得る。エントロピー復号ユニット302は、指数値に基づいて、複数のフィルタ係数の値を再構築し得る。たとえば、エントロピー復号ユニット302は、以下の等式に従って、特定のフィルタ係数の値を再構築し得る。
ただし、c(i)は、特定のフィルタ係数の値であり、sign(i)は、シグナリングされた符号が負である場合には負の符号であり、シグナリングされた符号が正である場合には正の符号であり、c’(i)は、特定のフィルタ係数についてのシグナリングされた指数値である。
[0110] エントロピー復号ユニット302は、再構築されたクロスコンポーネント適応ループフィルタ係数をフィルタユニット312に提供し得る。フィルタユニット312は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット312は、再構成されたブロックのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行してよい。フィルタユニット312の動作は、必ずしもすべての例において実行されるとは限らない。本開示の技法に従って、フィルタユニット312は、ビデオデータの復号されたブロックのクロスコンポーネント適応ループフィルタリングを実行するために、クロスコンポーネント適応ループフィルタ係数を使用し得る。
[0111] ビデオデコーダ300は、再構成されたブロックをDPB314の中に記憶し得る。上記で説明したように、DPB314は、イントラ予測のための現在ピクチャのサンプル、および後続の動き補償のための以前に復号されたピクチャなどの、参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、DPB314から復号ピクチャを出力し得る。
[0112] このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路構成の中に実装され、本開示のクロスコンポーネント適応ループフィルタリング技法を単独でまたは任意の組合せで実行するように構成された1つまたは複数の処理ユニットとを含むビデオ復号デバイスの例を表す。
[0113] 図5は、本開示の1つまたは複数の技法による、例示的なフィルタユニットを例示するブロック図である。図5のフィルタユニット500は、ビデオエンコーダ200のフィルタユニット216またはビデオデコーダ300のフィルタユニット312の例であると考えられ得る。
[0114] フィルタユニット500は、様々なタイプのフィルタリングを実行するように構成された構成要素を含み得る。たとえば、図5に示されるように、フィルタユニット500は、サンプル適応オフセット(SAO:sample adaptive offset)フィルタリングを実行するように構成された構成要素、たとえば、SAOルーマフィルタ502、SAO Cbフィルタ504、およびSAO Crフィルタ506などを含み得る。さらに図5に示されるように、フィルタユニット500は、クロスコンポーネント適応ループフィルタリング(CC-ALF)を実行するように構成された構成要素、たとえば、ALFルーマフィルタ508、CC ALF Cbフィルタ510、CC ALF Crフィルタ512、ALFクロマフィルタ514、加算器516、および加算器518などを含み得る。
[0115] 動作時に、SAOルーマフィルタ502は、ビデオデータの入力ルーマブロックを受信し、ビデオデータの出力ルーマブロックを生成するために入力ルーマブロックに対してSAOフィルタリングを実行し、ビデオデータの出力ルーマブロックを、1つまたは複数の他のフィルタ構成要素、たとえば、ALFルーマフィルタ508、CC ALF Cbフィルタ510、およびCC ALF Crフィルタ512などに提供し得る。SAO Cbフィルタ504は、ビデオデータの入力Cbクロマブロックを受信し、ビデオデータの出力Cbクロマブロックを生成するために入力Cbクロマブロックに対してSAOフィルタリングを実行し、ビデオデータの出力Cbクロマブロックを、1つまたは複数の他のフィルタ構成要素、たとえば、ALFクロマフィルタ514などに提供し得る。同様に、SAO Crフィルタ506は、ビデオデータの入力Crクロマブロックを受信し、ビデオデータの出力Crクロマブロックを生成するために入力Crクロマブロックに対してSAOフィルタリングを実行し、ビデオデータの出力Crクロマブロックを、1つまたは複数の他のフィルタ構成要素、たとえば、ALFクロマフィルタ514などに提供し得る。
[0116] ALF構成要素は、SAOフィルタリング構成要素によって提供されるビデオデータのブロックに対してALFを実行し得る。たとえば、ALFルーマフィルタ508は、Yとして表される、出力ルーマブロックを生成するために、SAOルーマフィルタ502によって提供されるルーマブロックに対して適応ループフィルタリングを実行してもよい。また、ALFクロマフィルタ514は、Cb’およびCr’として表される、出力クロマブロックを生成するために、SAO Cbフィルタ504およびSAO Crフィルタ506によって提供されるクロマブロックに対して適応ループフィルタリングを実行してもよい。
[0117] Misraら、「Cross-Component Adaptive Loop Filter for chroma」、Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、15th Meeting:Gothenburg、SE、2019年7月3~12日、JVET-O0636(以下、「JVET-O0636」)は、クロスコンポーネント適応ループフィルタ(CC-ALF)と呼ばれるツールを提案した。CC-ALFは、適応ループフィルタ(ALF)の一部として動作し、各クロマ成分を改良するためにルーマサンプルを利用する。たとえば、CC ALF Cbフィルタ510およびCC ALF Crフィルタ512は各々、SAOルーマフィルタ502によって提供されるルーマブロックに基づいて、向上/改良クロマブロック(enhancement/refinement chroma block)を生成し得る(たとえば、CC ALF Cbフィルタ510は、向上クロマブロック(enhancement chroma block)Cb+を生成してもよく、CC ALF Crフィルタ512は、向上クロマブロックCr+を生成してもよい)。CC ALF Cbフィルタ510およびCC ALF Crフィルタ512の各々は、フィルタ係数のそれぞれのセットに基づいて、それぞれの向上クロマブロックを生成し得る(たとえば、CC ALF Cbフィルタ510は、フィルタ係数の第1のセットを使用してもよく、CC ALF Crフィルタ512は、フィルタ係数の第2のセットを使用してもよい)。たとえば、CC ALF Cbフィルタ510は、以下の式に従ってクロマブロックCb+を生成し得る。
ただし、Iiは、フィルタリングされたブロックであり、I0は、フィルタリングされていないブロックであり、(xC、yC)は、ルーマロケーション(x、y)であり、Siは、色成分Cbについてのルーマにおけるフィルタサポートであり、ci(x0、y0)は、フィルタ係数である。
[0118] 上記の式に示されるように、CC ALF Cbフィルタ510およびCC ALF Crフィルタ512の各々は、多くの乗算演算を実行し得る。上記で論じられたように、および本開示の1つまたは複数の技法によれば、これらの乗算演算は、ビットシフト演算と置換されてもよく、ビットシフト演算は、乗算演算よりも、リソース集約度が実質的に低く、および/またはハードウェアにおいて実装することがより簡単である。たとえば、ビットシフト演算を使用してフィルタリングを実行するために、CC ALF Cbフィルタ510およびCC ALF Crフィルタ512の各々は、以下の式を利用し得る。
[0119] CC-ALFは、ビットストリーム内の情報によって制御され得、この情報は、(適応パラメータセット(APS:adaptation parameter set)においてシグナリングされ得る)各クロマ成分についての前述されたフィルタ係数と、サンプルのブロックに対するフィルタの適用を制御するマスクとを含む。JVET-O0636において、フィルタ係数の各々は、固定小数点10進数として表される。特に、フィルタ係数は、小数部を表すために、下位10ビットを使用する。各係数は、指数ゴロム(EG)コードを用いてシグナリングされ、その順序は、フィルタテンプレート内の係数位置に依存する。
[0120] 上述のように、本開示は、JVET-O0636において説明されているCC-ALFツールの乗算(multiplication)が、たとえば、本開示の技法のいずれかまたは全部に従って、改善および単純化されることが可能であることを認識する。したがって、ビデオエンコーダ200および/またはビデオデコーダ300は、本開示の技法のいずれかまたは全部に従って、たとえば、以下に説明されるように、任意の組合せで、構成されてもよい。
[0121] 本開示の第1の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、クロスコンポーネント適応ループフィルタ510、512についての係数の一部または全部の値を制約(constrain)し得る。たとえば、ビデオコーダは、係数の一部または全部の値を(たとえば、これらの係数に対して乗算が必要とされないように)ゼロまたは2のべき乗数になるように制約し(たとえば、それらの値の可能な選択を限定し)てもよい。いくつかの例では、乗算を実行しなければならない代わりに、ビデオコーダ(すなわち、ビデオエンコーダ200またはビデオデコーダ300)は、サンプルに対してビットシフティング(bit-shifting)を適用してもよい。一例において、ビデオコーダは、すべての係数の絶対値を0のみまたは2のべき乗数になるように制約してもよい。別の例において、ビデオコーダは、いくつかの係数の絶対値を0のみまたは2のべき乗数になるように制約してもよい。フィルタのどの係数が制約されるかに関する情報は、シグナリング無しで全部のフィルタについて同じであり得る。代替としてまたは付加的に、情報は、シグナリング無しで色成分の全部のフィルタについて同じであってもよい。代替としてまたは付加的に、情報は、シーケンス、ピクチャ、サブピクチャ、ブロック、または色成分についてビットストリーム内で(たとえば、1つまたは複数のシンタックス要素として)シグナリングされてもよい。
[0122] いくつかの例では、ビデオコーダが、(たとえば、それらの制約された係数の値をシグナリングするために)ビットストリーム内で情報をシグナリングする場合、ビデオコーダは、(非ゼロ係数の符号を有する指数値である)マッピングされた値のみをシグナリングし得る。制約された係数c(i)は、以下のようにc’(i)にマッピングされ得る。
c(i)が0に等しい場合、c’(i)は0である。
そうでない場合、c’(i)=sign(c(i))*(log2(abs(c(i))+1)であり、ただし、c(i)が負である場合、sign(c(i))は-1であり、そうでない場合、1である。
[0123] いくつかの例では、ビデオコーダは、c’(i)をシグナリングするために、固定された順序のゴロムコード、固定長コード(fixed-length code)または単項コードの任意の組合せを利用してもよい。
[0124] いくつかの例では、ビデオコーダは、固定された順序のゴロムコード、固定長コードまたは単項コードの任意の組合せを利用して、まず、c’(i)の絶対値をシグナリングし(または構文解析し)てもよい。c’(i)が0でない場合、ビデオコーダは、続いて、その後に(たとえば、c’(i)の絶対値をシグナリングした後に)、符号情報をシグナリングし(または解析し)得る。
[0125] いくつかの例では、ビデオコーダは、c’’(i)=c’(i)-c’min(i)によって、c’(i)を非ゼロ値に変換し、変換された値をシグナリングしてもよく、ただし、c’min(i)は、i番目の係数についての最小のマッピングされた値である。ビデオデコーダは、非負値であるc’’(i)を構文解析し得る。c’’(i)に基づいて、ビデオデコーダは、c’(i)=c’’(i)+c’min(i)を計算し得る。
[0126] 本開示の第2の技法によれば、ビデオコーダは、コスト乗数(cost multiplier)を低減するために、クロスコンポーネント適応ループフィルタ510、512についてのフィルタ係数のダイナミックレンジを制約するように構成され得る。kを、係数の小数部を表すために使用されるビット数とする。フィルタ係数c(i)のダイナミックレンジは、開区間(-(1<<(k-j)),(1<<(k-j))-1)において制約されてもよい。ビデオコーダは、c(i)をシグナリングするために、固定された順序のゴロムコード、固定長コード、および/または単項コードの任意の組合せを使用し得る。ビデオコーダは、まず、c(i)の絶対値をシグナリングし(または構文解析し)得る。c(i)が0でない場合、ビデオコーダは、続いて、c(i)についての符号情報をシグナリングし(構文解析し)得る。付加的に、または代替的に、ビデオコーダは、c’(i)=c(i)-cmin(i)によって、c(i)を非ゼロ値に変換してもよい。ビデオコーダは、次いで、変換された値をシグナリングし得、ただし、cmin(i)は、i番目の係数についての最小の値である。ビデオデコーダは、非負値であるc’(i)を構文解析し得る。ビデオデコーダは、c(i)の値をc’(i)+cmin(i)として計算し得る。
[0127] 図6は、本開示の技法による、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは、現在CUを備えてよい。ビデオエンコーダ200(図1および図3)に関して説明されるが、他のデバイスが図6の方法と類似の方法を実行するように構成され得ることを理解されたい。
[0128] この例では、ビデオエンコーダ200は、最初に現在ブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在のブロックについての予測ブロックを形成し得る。ビデオエンコーダ200は、次いで、現在ブロックに対する残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、コーディングされていない元のブロックと現在ブロックに対する予測ブロックとの間の差分を計算してよい。ビデオエンコーダ200は、次いで、残差ブロックの係数を変換および量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化変換係数を走査し得る(356)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化してよい。ビデオエンコーダ200は、次いで、ブロックのエントロピー符号化データを出力し得る(360)。
[0129] ビデオエンコーダ200は、次いで、現在のブロックを復号し得る(362)。たとえば、ビデオエンコーダ200は、残差ブロックを再現するために、量子化された変換係数を逆量子化および逆変換し、予測ブロックと再現された残差ブロックとを組み合わせ得る。ビデオエンコーダ200は、次いで、たとえば、本開示によるクロスコンポーネント適応ループフィルタリング技法を使用して、復号されたブロックをフィルタリングし得る(364)。ブロックのエントロピー符号化されたデータは、たとえば、どのクロスコンポーネント適応ループフィルタがそのブロックに対して選択されるかを示すフィルタインデックスをさらに含み得る。ビデオエンコーダ200は、次いで、たとえば、符号化される(および復号される)べき将来のブロックを予測する場合の参照のために、フィルタリングされたブロックを記憶し得る(366)。
[0130] 図7は、本開示の技法による、現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは、現在CUを備えてよい。ビデオデコーダ300(図1および図4)に関して説明されるが、他のデバイスが図7の方法と類似の方法を実行するように構成され得ることを理解されたい。
[0131] ビデオデコーダ300は、現在のブロックについてのエントロピー符号化されたデータ、たとえば、エントロピー符号化された予測情報、現在のブロックに対応する残差ブロックの係数についてのエントロピー符号化されたデータ、および現在のブロックについてのエントロピー符号化されたクロスコンポーネント適応ループフィルタ情報などを受信し得る(370)。ビデオデコーダ300は、現在ブロックに対する予測情報を決定し残差ブロックの係数を再生するために、エントロピー符号化データをエントロピー復号し得る(372)。ビデオデコーダ300は、現在ブロックに対する予測ブロックを計算するために、たとえば、現在ブロックに対する予測情報によって示されるようなイントラ予測モードまたはインター予測モードを使用して、現在ブロックを予測し得る(374)。ビデオデコーダ300は、次いで、量子化変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、残差ブロックを作り出すために、係数を逆量子化および逆変換し得る(378)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在ブロックを復号し得る(380)。
[0132] さらに、ビデオデコーダ300は、たとえば、本開示の技法のいずれかによるクロスコンポーネント適応ループフィルタリングを使用して、復号されたブロックをフィルタリングし得る(382)。ビデオデコーダ300は、次いで、たとえば、復号されるべき将来のブロックを予測する場合の参照のために、フィルタリングされたブロックを記憶し得る(384)。
[0133] 図8は、本開示の1つまたは複数の技法による、現在のブロックに対するクロスコンポーネント適応ループフィルタリング(CC-ALF)のための例示的な方法を例示するフローチャートである。現在のブロックは、現在のCUを含み得る。ビデオデコーダ300(図1および図4)に関して説明されるが、他のデバイスが、図8の方法と同様の方法を実行するように構成されてもよいことが、理解されるべきである。
[0134] ビデオデコーダ300は、クロスコンポーネント適応ループフィルタの複数のフィルタ係数を復号し得る(802)。たとえば、複数のフィルタ係数のうちの特定のフィルタ係数を復号するために、エントロピー復号ユニット302は、符号化されたビデオビットストリームから、特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を指数値のべき乗にしたものとして特定するシンタックス要素を復号し得る。指数値が非ゼロである(すなわち、ゼロ以外の値を有する)場合、エントロピー復号ユニット302は、符号化されたビデオビットストリームから、特定のフィルタ係数の符号を特定するシンタックス要素を復号し得る。エントロピー復号ユニット302は、指数値(および、存在する場合には符号値)に基づいて、特定のフィルタ係数の値を決定し得る。たとえば、エントロピー復号ユニット302は、以下の式に従って、特定のフィルタ係数の値を決定し得る。
ただし、c(i)は、特定のフィルタ係数の値であり、sign(i)は、符号が負である場合には負の符号であり、符号が正である場合には正の符号であり、c’(i)は、特定のフィルタ係数についての指数値である。
[0135] ビデオデコーダ300は、ビデオデータのブロックのサンプルを再構築し得る(804)。たとえば、ビデオデコーダ300は、図7を参照して上述したようにサンプルを再構築してもよい。一例として、ビデオデコーダ300は、ブロックのサンプルを再構築するために、残差データを有する予測子ブロックのサンプルを追加してもよい。
[0136] ビデオデコーダ300は、複数のフィルタ係数に基づいて、ビデオデータ(806)のブロックに対して、クロスコンポーネント適応ループフィルタリングを実行し得る。たとえば、上記で論じられたように、フィルタユニット312のCC ALF CbフィルタおよびCC ALF Crフィルタ(たとえば、CC ALF Cbフィルタ510およびCC ALF Crフィルタ512)は、乗算を実行せずに、ビデオデータのブロックのサンプルを、複数のフィルタ係数の値に基づいてビットシフティングすることによって、向上クロマブロック(enhancement chroma block)を生成し得る。このようにして、本開示の技法は、CC-ALFを実行するために必要とされるシステムリソースを低減し得る。
[0137] 以下の番号付きの例は、本開示の1つまたは複数の態様を例示し得る。
[0138] 例1。ビデオデータを復号する方法であって、方法が、クロスコンポーネント適応ループフィルタの複数のフィルタ係数をコーディングすることと、ここにおいて、複数のフィルタ係数のうちの1つまたは複数の値は、ゼロまたは2のべき乗になるように制約される、複数のフィルタ係数のうちの1つまたは複数の値をビットシフティングすることは、ゼロまたは2のべき乗になるように制約されることと、ビデオデータのブロックをコーディングすることと、フィルタ係数を使用して、復号されたブロックのクロスコンポーネント適応ループフィルタリングを実行することとを備える、方法。
[0139] 例2。複数のフィルタ係数のすべての値が、ゼロまたは2のべき乗になるように制約される、例1に記載の方法。
[0140] 例3。複数のフィルタ係数の少なくとも1つの値が、ゼロまたは2のべき乗になるように制約されない、例1に記載の方法。
[0141] 例4。クロスコンポーネント適応ループフィルタリングを実行することが、復号されたブロックのサンプルによって、ゼロまたは2のべき乗の値を有するフィルタ係数を乗算しないことを備える、例1~3のいずれかに記載の方法。
[0142] 例5。制約される複数のフィルタ係数のフィルタ係数の値を示す、1つまたは複数のシンタックス要素をコーディングすることをさらに備える、例1から4のいずれかに記載の方法。
[0143] 例6。ビデオデータを復号する方法であって、方法が、クロスコンポーネント適応ループフィルタのフィルタ係数についての十進値を表すために使用されるビット数kを決定することと、フィルタ係数のダイナミックレンジが(-(1<<(k-j)),(1<<(k-j))-1)を備えると決定することと、ビデオデータのブロックをコーディングすることと、フィルタ係数を使用して、復号されたブロックのクロスコンポーネント適応ループフィルタリングを実行することとを備える、方法。
[0144] 例7。コーディングすることが、復号することを含む、例1~6のいずれかに記載の方法。
[0145] 例8。コーディングすることが、符号化することを含む、例1~7のいずれかに記載の方法。
[0146] 例9。ビデオデータをコーディングするためのデバイスであって、デバイスは、例1~8のいずれかに記載の方法を実行するための1つまたは複数の手段を備える、デバイス。
[0147] 例10。1つまたは複数の手段が、回路構成の中に実装された1つまたは複数のプロセッサを備える例9に記載のデバイス。
[0148] 例11。ビデオデータを記憶するためのメモリをさらに備える、例9および10のいずれかに記載のデバイス。
[0149] 例12。復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例9~11のいずれかに記載のデバイス。
[0150] 例13。デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例9~12のいずれかに記載のデバイス。
[0151] 例14。デバイスが、ビデオデコーダを備える、例9~13のいずれかに記載のデバイス。
[0152] 例15。デバイスが、ビデオエンコーダを備える、例9~14のいずれかに記載のデバイス。
[0153] 例16。実行されたとき、1つまたは複数のプロセッサに、例1~8のいずれかに記載の方法を実行させる命令を記憶した、コンピュータ可読記憶媒体。
[0154] 例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、説明したすべての行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して並行して実行され得る。
[0155] 1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶またはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に相当するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでよい。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
[0156] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得るとともにコンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続も適切にコンピュータ可読媒体と呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0157] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の均等な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」および「処理回路構成」という用語は、上記の構造または本明細書で説明した技法の実装にとって好適な任意の他の構造のうちのいずれかを指してよい。加えて、いくつかの態様では、本明細書で説明する機能性は、符号化および復号のために構成された専用ハードウェアおよび/もしくはソフトウェアモジュール内で提供されてよく、または組み合わせられたコーデックの中に組み込まれてよい。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0158] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示で説明されるが、異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明したような1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットの中で組み合わせられてよく、または相互動作可能なハードウェアユニットの集合によって提供されてよい。
[0159] 様々な例が説明されている。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを復号する方法であって、前記方法が、
クロスコンポーネント適応ループフィルタの複数のフィルタ係数を復号することと、ここにおいて、前記複数のフィルタ係数のうちの特定のフィルタ係数を復号することが、 符号化されたビデオビットストリームから、前記特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を前記指数値のべき乗にしたものとして特定するシンタックス要素を復号することと、
前記指数値に基づいて、前記特定のフィルタ係数の値を決定することと
を備える、
ビデオデータのブロックのサンプルを再構築することと、
前記複数のフィルタ係数に基づいて、前記ビデオデータのブロックをクロスコンポーネント適応ループフィルタリングすることと
を備える、方法。
[C2] 前記複数のフィルタ係数のすべての絶対値が、ゼロまたは2のべき乗になるように制約される、C1に記載の方法。
[C3] 前記特定のフィルタ係数を復号することが、
前記指数値がゼロ以外の値であることに応答して、前記符号化されたビデオビットストリームから、前記特定のフィルタ係数の符号を特定するシンタックス要素を復号することをさらに備え、
前記特定のフィルタ係数の前記値を決定することが、前記符号に基づいて、前記特定のフィルタ係数の前記値を決定することをさらに備える、C1に記載の方法。
[C4] 前記特定のフィルタ係数の前記値を決定することが、以下の式
に従って、前記特定のフィルタ係数の前記値を決定することを備え、ただし、c(i)は、前記特定のフィルタ係数の前記値であり、sign(i)は、前記符号が負である場合には負の符号であり、前記符号が正である場合には正の符号であり、c’(i)は、前記特定のフィルタ係数についての前記指数値である、C3に記載の方法。
[C5] 前記クロスコンポーネント適応ループフィルタリングすることが、乗算を実行せずに、前記複数のフィルタ係数の値に基づいて、前記ビデオデータのブロックのサンプルをビットシフティングすることを備える、C1に記載の方法。
[C6] 前記指数値を特定する前記シンタックス要素を復号することが、固定長コードを使用して、前記指数値を特定する前記シンタックス要素を復号することを備える、C1に記載の方法。
[C7] ビデオデータを符号化する方法であって、前記方法が、
クロスコンポーネント適応ループフィルタの複数のフィルタ係数の値を符号化することと、ここにおいて、前記複数のフィルタ係数のうちの特定のフィルタ係数の値を符号化することが、
符号化されたビデオビットストリームにおいて、前記特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を前記指数値のべき乗にしたものとして特定するシンタックス要素を符号化することを備える、
ビデオデータのブロックのサンプルを再構築することと、
前記複数のフィルタ係数の前記値に基づいて、前記ビデオデータのブロックをクロスコンポーネント適応ループフィルタリングすることと
を備える、方法。
[C8] 前記複数のフィルタ係数のすべての絶対値が、ゼロまたは2のべき乗になるように制約される、C7に記載の方法。
[C9] 前記特定のフィルタ係数を符号化することが、
前記特定のフィルタ係数がゼロ以外の値を有することに応答して、前記符号化されたビデオビットストリームにおいて、前記特定のフィルタ係数の符号を特定するシンタックス要素を符号化すること
をさらに備える、C7に記載の方法。
[C10] クロスコンポーネント適応ループフィルタリングすることが、乗算を実行せずに、前記複数のフィルタ係数の値に基づいて、前記ビデオデータのブロックのサンプルをビットシフティングすることを備える、C7に記載の方法。
[C11] 前記指数値を特定する前記シンタックス要素を符号化することが、固定長コードを使用して、前記指数値を特定する前記シンタックス要素を符号化することを備える、C7に記載の方法。
[C12] ビデオデータを復号するためのデバイスであって、前記デバイスが、
符号化されたビデオビットストリームの少なくとも一部を記憶するように構成されたメモリと、
回路構成の中に実装された1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
クロスコンポーネント適応ループフィルタの複数のフィルタ係数を復号することと、ここにおいて、前記複数のフィルタ係数のうちの特定のフィルタ係数を復号するために、前記1つまたは複数のプロセッサが、
前記符号化されたビデオビットストリームから、前記特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を前記指数値のべき乗にしたものとして特定するシンタックス要素を復号することと、
前記指数値に基づいて、前記特定のフィルタ係数の値を決定することと
を行うように構成される、
ビデオデータのブロックのサンプルを再構築することと、
前記複数のフィルタ係数に基づいて、前記ビデオデータのブロックをクロスコンポーネント適応ループフィルタリングすることと
を行うように構成される、デバイス。
[C13] 前記複数のフィルタ係数のすべての絶対値が、ゼロまたは2のべき乗になるように制約される、C12に記載のデバイス。
[C14] 前記特定のフィルタ係数を復号するために、前記1つまたは複数のプロセッサが、
前記指数値がゼロ以外の値であることに応答して、前記符号化されたビデオビットストリームから、前記特定のフィルタ係数の符号を特定するシンタックス要素を復号することを行うようにさらに構成され、
前記特定のフィルタ係数の前記値を決定するために、前記1つまたは複数のプロセッサが、前記符号に基づいて、前記特定のフィルタ係数の前記値を決定するようにさらに構成される、C12に記載のデバイス。
[C15] 前記特定のフィルタ係数の前記値を決定するために、前記1つまたは複数のプロセッサが、以下の式
に従って、前記特定のフィルタ係数の前記値を決定するように構成され、ただし、c(i)は、前記特定のフィルタ係数の前記値であり、sign(i)は、前記符号が負である場合には負の符号であり、前記符号が正である場合には正の符号であり、c’(i)は、前記特定のフィルタ係数についての前記指数値である、C14に記載のデバイス。
[C16] クロスコンポーネント適応ループフィルタリングするために、前記1つまたは複数のプロセッサが、乗算を実行せずに、前記複数のフィルタ係数の値に基づいて、前記ビデオデータのブロックのサンプルをビットシフティングするように構成される、C12に記載のデバイス。
[C17] ビデオデータを符号化するためのデバイスであって、前記デバイスが、
符号化されたビデオビットストリームの少なくとも一部を記憶するように構成されたメモリと、
回路構成の中に実装された1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
クロスコンポーネント適応ループフィルタの複数のフィルタ係数の値を符号化することと、ここにおいて、前記複数のフィルタ係数のうちの特定のフィルタ係数の値を符号化するために、前記1つまたは複数のプロセッサが、
前記符号化されたビデオビットストリームにおいて、前記特定のフィルタ係数の絶対値の2を底とする対数を表す指数値を、2を前記指数値のべき乗にしたものとして特定するシンタックス要素を符号化すること
を行うように構成される、
ビデオデータのブロックのサンプルを再構築することと、
前記複数のフィルタ係数の前記値に基づいて、前記ビデオデータのブロックをクロスコンポーネント適応ループフィルタリングすることと
を行うように構成される、デバイス。
[C18] 前記複数のフィルタ係数のすべての絶対値が、ゼロまたは2のべき乗になるように制約される、C17に記載のデバイス。
[C19] 前記特定のフィルタ係数を符号化するために、前記1つまたは複数のプロセッサが、 前記特定のフィルタ係数がゼロ以外の値を有することに応答して、前記符号化されたビデオビットストリームから、前記特定のフィルタ係数の符号を特定するシンタックス要素を符号化すること
を行うようにさらに構成される、C17に記載のデバイス。
[C20] クロスコンポーネント適応ループフィルタリングするために、前記1つまたは複数のプロセッサが、乗算を実行せずに、前記複数のフィルタ係数の値に基づいて、前記ビデオデータのブロックのサンプルをビットシフティングするように構成される、C17に記載のデバイス。