[0029] 以下でより詳細に説明されるように、本開示は、異なるフォーマットでのクロマ成分の符号化および/または復号を改善するための例示的な技法について説明する。たとえば、三角形の予測ユニット(PU:prediction unit)モードを使用するときに、ビデオコーダ(video coder)(たとえば、ビデオエンコーダまたはビデオデコーダ)は、PUを2つの三角形状の区分(triangle-shaped partition)に分割し得る。この例では、ビデオコーダは、動き補償された三角形状の区分(motion compensated triangle-shaped partition)を生成し、クロマフォーマットに基づく重みのセットを使用して動き補償された三角形状の区分を組み合わせ得る。たとえば、ビデオコーダは、クロマ成分がYUV4:4:4フォーマットにあるときに重みの第1のセット(a first set of weights)を使用してピクセルブレンディングを適用し、クロマ成分がYUV4:2:0フォーマットにあるときに重みの第1のセットとは異なる重みの第2のセット(a second set of weights)を適用し得る。しかしながら、異なるクロマフォーマットに対して重みの異なるセットを使用することは、クロマ成分を生成することの複雑性(complexity)を増加し得る。
[0030] 本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、異なるクロマフォーマットに対するクロマ成分の処理を統一するように構成され得る。たとえば、ビデオコーダは、クロマ成分がYUV4:4:4フォーマットにあるときにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用し、クロマ成分がYUV4:2:0フォーマットにあるときにYUV4:2:0フォーマットのための重みのセットを適用し得る。
[0031] いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、イントラ予測が使用されるとき、およびクロマ成分がYUV4:2:0フォーマットにあるとき、フィルタ処理されていない参照サンプルを使用してビデオデータのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。この例では、ビデオコーダは、イントラ予測が使用されるとき、およびクロマ成分がYUV4:4:4フォーマットにあるとき、フィルタ処理された参照サンプル(filtered reference sample)を使用してビデオデータのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。しかしながら、異なるクロマフォーマットに対して異なる参照サンプル(reference sample)を使用することは、クロマ成分を生成することの複雑性を増加し得る。
[0032] 本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、異なるクロマフォーマットに対するクロマ成分の処理を統一するように構成され得る。たとえば、ビデオコーダは、クロマ成分がYUV4:2:0フォーマットにあるとき、およびクロマ成分がYUV4:4:4フォーマットにあるとき、イントラ参照サンプル平滑化を使用不能にするように構成され得る。たとえば、ビデオコーダは、クロマ成分がYUV4:2:0フォーマットにあるとき、およびクロマ成分がYUV4:4:4フォーマットにあるとき、フィルタ処理されていない参照サンプルを使用してビデオデータのブロックのための予測ブロックのクロマサンプルを生成し得る。
[0033] クロマ成分の処理を統一するための本明細書で説明される技法は、HEVC(高効率ビデオコーディング)などの既存のビデオコーデックもしくはVVC(汎用ビデオコーディング)などの開発中のビデオコーデックのうちのいずれかに適用され得、またはいかなる将来のビデオコーディング規格においても効率的なコーディングツールであり得る。重み付け予測に関係する説明される技法の例は、HEVCおよび汎用ビデオコーディング(VVC:Versatile Video Coding)における進行中の作業に関して説明されるが、本明細書で説明される技法は、他の既存のビデオコーデックおよび/または将来のビデオコーディング規格に適用され得る。
[0034] 図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための何らかのデータを含む。したがって、ビデオデータは、シグナリングデータなどの未加工の、コーディングされていないビデオと、符号化されたビデオと、復号された(たとえば、再構築された)ビデオと、ビデオメタデータとを含み得る。
[0035] 図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化ビデオデータを与えるソースデバイス102を含む。詳細には、ソースデバイス102は、コンピュータ可読媒体110を介してビデオデータを宛先デバイス116に提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセットサッチスマートフォン、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0036] 図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、異なるクロマフォーマットについての重み情報を統一するための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0037] 図1に示されているシステム100は一例にすぎない。概して、任意のデジタルビデオ符号化および/または復号デバイスは、第1のクロマフォーマットについての重み情報(weight information)を決定することと、第1のクロマフォーマットについての重み情報に対応するために第1のクロマフォーマットとは異なる第2のクロマフォーマットについての重み情報を決定することと、第1のクロマフォーマットについての重み情報に基づいて予測情報を生成することとを行うための技法を実行し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコード化ビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示では、「コーディング(coding)」デバイスをデータのコーディング(符号化および/または復号)を実行する(perform)デバイスと称する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダとビデオデコーダとの例を表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的な様式で動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のための、ビデオデバイス102とビデオデバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
[0038] 概して、ビデオソース104は、ビデオデータのソース(すなわち、未加工の、コーディングされていないビデオデータ)を表し、ピクチャのためのデータを符号化するビデオエンコーダ200にビデオデータの連続した一連のピクチャ(「フレーム(frame)」とも呼ばれる)を与える。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた未加工のビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による、受信および/または取出しのために、出力インターフェース108を介して符号化ビデオデータをコンピュータ可読媒体110上に出力し得る。
[0039] ソースデバイス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つまたは複数のビデオバッファとして割り振られ得る。
[0040] コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化ビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を変調し得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を促進するために有用であり得る任意の他の機器を含み得る。
[0041] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス116に符号化データを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス116から符号化データにアクセスし得る。記憶デバイス116は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0042] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化ビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化ビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114から記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通してファイルサーバ114から符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバ114に記憶された符号化ビデオデータにアクセスするのに適した、両方の組合せを含み得る。ファイルサーバ114と入力インターフェース122とは、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0043] 出力インターフェース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デバイスを含み得る。
[0044] 本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0045] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。コンピュータ可読媒体110からの符号化ビデオビットストリームは、ビデオブロックまたは他のコード化ユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素(syntax element)など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、ユーザに復号されたビデオデータの復号されたピクチャを表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのいずれかを表し得る。
[0046] 図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、それぞれ、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中のオーディオとビデオの両方を含む多重化されたストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0047] ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路および/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0048] ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、またはマルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのそれらの拡張などの、ビデオコーディング規格に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、共同探求テストモデル(JEM)または汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266などの、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC標準の最近のドラフトは、Brossら「Versatile Video Coding(Draft 7)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Video Experts Team(JVET)、第16回会合:Geneva、CH、2019年10月1~11日、JVET-P2001-v9(以下、「VVC Draft 7」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0049] 概して、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック(block)」という用語は、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を一般に意味する。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に受信されたRGBフォーマットのデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、前処理ユニットと後処理ユニット(図示せず)とがこれらの変換を実行し得る。
[0050] YUV4:4:4は、3つの構成要素(たとえば、Y、Cb、Cr)の各々が同じサンプリングレートを有し、クロマサブサンプリングを有しないYUV表現を指すことがある。たとえば、YUV4:4:4のルーマ(たとえば、Y)成分は、第1の解像度を有し得る。この例では、YUV4:4:4の第1のクロマ成分(たとえば、Cb)成分は、ルーマ成分(luma component)の第1の解像度を有し得、YUV4:4:4の第2のクロマ成分(たとえば、Cr)成分は、ルーマ成分の第1の解像度を有し得る。対照的に、YUV4:2:0は、クロマ成分(たとえば、Cb、Cr)の各々が垂直および水平方向にルーマ成分の半分のサンプリングレートを有するYUV表現を指すことがあり、したがって、YUV4:2:0は、クロマサブサンプリングを有し得る。たとえば、YUV4:4:4のルーマ(たとえば、Y)成分は、第1の解像度を有し得る。この例では、YUV4:4:4の第1のクロマ成分(たとえば、Cb)成分は、ルーマ成分の第1の解像度の半分である第2の解像度(たとえば、垂直および水平)を有し得、YUV4:4:4の第2のクロマ成分(たとえば、Cr)成分は、ルーマ成分の第1の解像度の半分であり、第1のクロマ成分の第2の解像度と同じである第2の解像度(たとえば、垂直および水平)を有し得る。本開示がクロマフォーマットの例としてYUV4:4:4およびYUV 4:2:0に言及するが、他の例は、他のフォーマット(たとえば、YUV4:2:2など)を使用し得る。
[0051] 本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含めるように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックに対するデータを符号化または復号する、たとえば、予測および/または残差コーディングのプロセスを含めるように、ピクチャのブロックのコーディングに言及することがある。符号化ビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成しているシンタックス要素の値をコーディングすることとして理解されたい。
[0052] 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)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
[0053] 別の例として、ビデオエンコーダ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)に対応する。
[0054] MTT区分構造では、ブロックは、4分木(QT:quadtree)区分と、2分木(BT:binary tree)区分と、1つまたは複数のタイプの3分木(TT:triple tree)区分とを使用して、区分され得る。3分木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分木区分は、中心を通って元のブロックを分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称的または非対称的であり得る。
[0055] いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0056] ビデオエンコーダ200およびビデオデコーダ300は、HEVCによる4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。ただし、本開示の技法が、4分木区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0057] 本開示は、垂直および水平次元、たとえば、16×16のサンプルまたは16バイ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に等しいとは限らない。
[0058] ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報(prediction information)は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきであるのかを示す。残差情報(residual information)は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分(difference)を表す。
[0059] CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロック(reference block)との間の差分に関して、CUに厳密に一致する参照ブロックを識別するために動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUに厳密に一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在のCUを予測し得る。
[0060] JEMおよびVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0061] イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。JEMとVVCとのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在のブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在のブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在のブロックと同じピクチャ中の現在のブロックの上方、上方および左側、または左側にあり得る。
[0062] ビデオエンコーダ200は、現在のブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
[0063] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロック(residual block)などの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数(transform coefficient)を生成する。
[0064] 上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値まで丸め得、ここで、nは、mよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行し得る。
[0065] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い頻度)の係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素のための値をエントロピー符号化し得る。
[0066] CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるのかどうかに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0067] ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0068] このようにして、ビデオエンコーダ200は、符号化ビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化ビデオデータを復号し得る。
[0069] 概して、ビデオデコーダ300は、ビットストリームの符号化ビデオデータを復号するために、ビデオエンコーダ200によって実行されるものとは逆のプロセスを実行する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素に対する値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報とQTBT構造などの対応する区分構造による各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
[0070] 残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関係する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。すなわち、たとえば、ビデオデコーダ300は、ビデオデータのブロックのためのフィルタ処理されていない再構築されたブロック(unfiltered reconstructed block)を復号するために予測ブロックと残差ブロックとを組み合わせ得る。いくつかの例では、ビデオデコーダ300は、DPB314にフィルタ処理されていない再構築されたブロックを記憶し得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実行することなど、追加の処理を実行し得る。すなわち、たとえば、ビデオデコーダ300は、ビデオデータのブロックのためのフィルタ処理された再構築されたブロック(filtered reconstructed block)を生成し得、ここにおいて、フィルタ処理された再構築されたブロックを生成することは、フィルタ処理されていない再構築されたブロックに対して1つまたは複数のフィルタ動作(filter operation)を実行することを備える。この例では、ビデオデコーダ300は、DPB314にフィルタ処理された再構築されたブロックを記憶し得る。
[0071] 本開示の技法によれば、ビデオエンコーダ200および/またはビデオデコーダ300は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するように構成され得る。この例では、ビデオエンコーダ200またはビデオデコーダ300は、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するように構成され得る。ビデオエンコーダ200またはビデオデコーダ300は、1つまたは複数のプロセッサが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および1つまたは複数のプロセッサが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するように構成され得る。YUV4:2:0フォーマットでおよびYUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するために重みの単一のセット(a single set of weights)を使用することは、ビデオデータを復号することの複雑性を低減し得、これは、ビデオエンコーダ200とビデオデコーダ300とがビデオデータを復号する時間量を低減し、および/またはビデオエンコーダ200とビデオデコーダ300との電力消費量(power consumption)を低減し得る。
[0072] ピクセルブレンディングを適用するために、ビデオエンコーダ200またはビデオデコーダ300は、YUV4:2:0フォーマットのための重みのセットを使用して、それぞれ、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。
[0073] いくつかの例では、ビデオエンコーダ200および/またはビデオデコーダ300は、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。この例では、ビデオエンコーダ200および/またはビデオデコーダ300は、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。ビデオエンコーダ200および/またはビデオデコーダ300は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にすることは、ビデオデータを復号することの複雑性を低減し得、これは、ビデオエンコーダ200とビデオデコーダ300とがビデオデータを復号する時間量を低減し、および/またはビデオエンコーダ200とビデオデコーダ300との電力消費量を低減し得る。
[0074] 本開示は、概して、シンタックス要素など、ある情報を「シグナリング(signaling)」することに言及することがある。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用される値シンタックス要素および/または他のデータの通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。概して、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0075] 図2Aと図2Bとは、例示的な4分木2分木(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線は4分木分割(quadtree splitting)を表し、点線は2分木分割(binary tree splitting)を表す。2分木の各分割(すなわち、非リーフ)ノードでは、どの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平分割を示し、1は垂直分割を示す。4分木分割の場合、4分木ノードは、サイズが等しい4つのサブブロックに、水平および垂直にブロックを分割するので、分割タイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(分割情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(分割情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0076] 概して、図2BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル単位でCTU132のサイズを表す)CTUサイズと、最小4分木サイズ(最小許容4分木リーフノードサイズを表す、MinQTSize)と、最大2分木サイズ(最大許容2分木ルートノードサイズを表す、MaxBTSize)と、最大2分木深度(最大許容2分木深度を表す、MaxBTDepth)と、最小2分木サイズ(最小許容2分木リーフノードサイズを表す、MinBTSize)とを含み得る。
[0077] 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は「ビデオブロック(video block)」または「ブロック」と呼ばれることもある。
[0078] QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプル(luma sample)および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である場合、サイズがMaxBTSize(すなわち、この例では64×64)を超えるので、それは2分木によってさらに分割されない。そうでない場合、リーフ4分木ノードは、2分木によってさらに区分される。したがって、4分木リーフノードはまた、2分木に対してルートノードであり、0としての2分木深度を有する。2分木深度がMaxBTDepth(この例では4)に到達すると、それ以上の分割は許されない。2分木ノードがMinBTSize(この例では4)に等しい幅を有するとき、そのことはそれ以上の水平分割が許されないことを暗示する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してそれ以上の垂直分割が許されないことを暗示する。上述されたように、2分木のリーフノードは、CUと呼ばれ、さらなる区分なしに予測および変換に従ってさらに処理される。
[0079] 図3は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。図3は説明のために提供され、本開示で広く例示され記載される技法を限定するものと見なされるべきではない。説明の目的で、本開示では、HEVCビデオコーディング規格および開発中のJEM、VVC(ITU-T H.266)ビデオコーディング規格などのビデオコーディング規格のコンテキストでビデオエンコーダ200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般的に、ビデオ符号化および復号に適用可能である。
[0080] 図3の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット(mode selection unit)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のユニットは、プロセッサ、ASIC、もしくはFPGAの一部を形成する1つまたは複数の回路または論理要素として実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
[0081] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用する参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0082] 本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在のブロックのビデオデータ)を記憶する参照メモリとして理解されたい。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
[0083] 図3の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を与える回路を指し、実行され得る動作に関してあらかじめ設定される。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0084] ビデオエンコーダ200は、プログラマブル回路から形成される論理演算装置(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示されず)が、そのような命令を記憶し得る。
[0085] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204とモード選択ユニット202とにビデオデータを提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである未加工のビデオデータであり得る。
[0086] モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット(intra-prediction unit)226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するために追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0087] モード選択ユニット202は、概して、符号化パラメータの組合せをテストするために複数の符号化パスを協調させ、そのような組合せのためのレートひずみ値を生じる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
[0088] ビデオエンコーダ200は、一連のCTUにビデオデータメモリ230から取り出されたピクチャを区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造または4分木構造などのツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCTUはまた、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
[0089] いくつかの例では、モード選択ユニット(mode selection unit)202は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するように構成され得る。この例では、モード選択ユニット202は、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するように構成され得る。モード選択ユニット202は、1つまたは複数のプロセッサが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および1つまたは複数のプロセッサが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するように構成され得る。このようにして、モード選択ユニット202は、YUV4:2:0フォーマットとYUV4:4:4フォーマットとの両方のための重みのセットを使用し得、これは、異なるクロマフォーマットの処理を統一するのを助け得る。異なるクロマフォーマットの処理を統一することは、コーデック処理オーバーヘッド(codec processing overhead)を低減するのを助け得る。
[0090] ピクセルブレンディングを適用するために、モード選択ユニット202は、YUV4:2:0フォーマットのための重みのセットを使用して、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。加重平均を決定する例示的なプロセスについてさらなる詳細を以下に説明する(たとえば、図7A~図7C参照)。
[0091] 概して、いくつかの例では、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCU、またはHEVCでは、PUとTUとの重複する部分)についての予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218中に記憶された1つまたは複数の前にコードディングされたピクチャ)中の1つまたは複数の厳密に一致する参照ブロックを識別するために動き探索を実行し得る。特に、動き推定ユニット222は、たとえば、絶対値差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、潜在的な参照ブロックが現在のブロックに対してどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実行し得る。動き推定ユニット222は、現在のブロックに最も厳密に一致する参照ブロックを示す、これらの計算から生じる最も低い値を有する参照ブロックを識別し得る。
[0092] 動き推定ユニット222は、現在のピクチャ中の現在のブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動き補償ユニット224に動きベクトルを与え得る。たとえば、単方向インター予測の場合、動き推定ユニット222は、単一の動きベクトルを与え得るが、双方向インター予測の場合、動き推定ユニット222は、2つの動きベクトルを与え得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度(fractional sample precision)を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。さらに、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別される2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または加重平均化(weighted averaging)を通して取り出されたデータを組み合わせ得る。
[0093] 別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在のブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、隣接サンプルの値を概して数学的に組み合わせ、現在のブロックにわたって規定の方向にこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0094] イントラ予測ユニット226は、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。イントラ予測ユニット226は、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。イントラ参照サンプル平滑化が使用不能にされるとき、イントラ予測ユニット226は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。イントラ予測ユニット226は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。すなわち、たとえば、YUV4:4:4フォーマットとYUV4:4:4フォーマットとの両方におけるクロマ成分の場合、イントラ予測ユニット226は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。このようにして、ビデオデータを符号化することおよび復号することの複雑性が、低減され得、これは、イントラ予測ユニット226がビデオデータをコーディングする(たとえば、エンコーダするまたは復号する)時間量を低減し、および/またはイントラ予測ユニット226の電力消費量を低減し得る。
[0095] クロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするための本明細書で説明される技法は、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するための本明細書で説明される技法と組み合わせてまたはそれとは別々に使用され得る。たとえば、イントラ予測ユニット226は、モード選択ユニット202がYUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成することと組み合わせてピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。いくつかの例では、イントラ予測ユニット226は、組み合わせてピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得、モード選択ユニット202は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するのを控える。
[0096] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの未加工の、コーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を計算する(calculate)。得られたサンプルごとの差分は、現在のブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために残差ブロック中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
[0097] モード選択ユニット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サイズに対して非対称の区分をサポートし得る。
[0098] モード選択ユニットがCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ120とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0099] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連するそれぞれのユニットを介して、符号化されている現在のブロックのための予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0100] 上記で説明したように、残差生成ユニット204は、現在のブロックに対するビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在のブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を計算する。
[0101] 変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ぶ)変換係数のブロックを生成するために残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換など1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0102] 量子化ユニット208は、量子化変換係数ブロックを生成するために変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在のブロックに関連する量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は、(たとえば、モード選択ユニット202を介して)CUに関連するQP値を調整することによって現在のブロックに関連する変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0103] 逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックとモード選択ユニット202によって生成された予測ブロックとに基づいて(潜在的にある程度のひずみを伴うが)現在のブロックに対応する再構築されたブロックを生成し得る。たとえば、再構築ユニット214は、再構築されたブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。すなわち、たとえば、再構築ユニット214は、ビデオデータのブロックのためのフィルタ処理されていない再構築されたブロックを復号するために予測ブロックと残差ブロックとを組み合わせ得る。いくつかの例では、再構築ユニット214は、DPB218にフィルタ処理されていない再構築されたブロックを記憶し得る。
[0104] フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ動作(filter operation)を実行し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクト(blockiness artifact)を低減するためのデブロッキング動作(deblocking operation)を実行し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。すなわち、たとえば、フィルタユニット216は、ビデオデータのブロックのためのフィルタ処理された再構築されたブロックを生成し得、ここにおいて、フィルタ処理された再構築されたブロックを生成することは、フィルタ処理されていない再構築されたブロックに対して1つまたは複数のフィルタ動作を実行することを備える。この例では、フィルタユニット216は、DPB218にフィルタ処理された再構築されたブロックを記憶し得る。
[0105] ビデオエンコーダ200は、DPB218中に再構築されたブロックを記憶する。たとえば、フィルタユニット216の動作が必要とされない例において、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャ中の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構築されたブロックを使用し得る。
[0106] 概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するためにビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実行し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変-可変(V2V:variable-to-variable)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0107] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要なエントロピー符号化されたシンタックス要素を含むビットストリーム(bitstream)を出力し得る。特に、エントロピー符号化ユニット220は、ビットストリームを出力し得る。
[0108] 上記で説明された動作について、ブロックに関して説明する。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマおよびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマおよびクロマ成分である。
[0109] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV:motion vector)と参照ピクチャとを識別する動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとに対して同じであり得る。
[0110] ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するように構成された1つまたは複数のプロセッサとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。この例では、ビデオエンコーダ200は、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するように構成され得る。ビデオエンコーダ200は、1つまたは複数のプロセッサが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および1つまたは複数のプロセッサが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するように構成され得る。したがって、ビデオエンコーダ200は、YUV4:2:0フォーマットとYUV4:4:4フォーマットとの両方のための重みのセットを使用し得、これは、異なるクロマフォーマットの処理を統一するのを助け得る。異なるクロマフォーマットの処理を統一することは、コーデック処理オーバーヘッドを低減するのを助け得る。ピクセルブレンディングを適用するために、ビデオエンコーダ200は、YUV4:2:0フォーマットのための重みのセットを使用して、それぞれ、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。
[0111] いくつかの例では、ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成された1つまたは複数のプロセッサとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。この例では、ビデオエンコーダ200は、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。ビデオエンコーダ200は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。すなわち、たとえば、YUV4:4:4フォーマットとYUV4:4:4フォーマットとの両方におけるクロマ成分の場合、ビデオエンコーダ200は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。このようにして、ビデオデータを符号化することおよび復号することの複雑性が、低減され得、これは、ビデオエンコーダ200がビデオデータをコーディングする(たとえば、エンコーダするまたは復号する)時間量を低減し、および/またはビデオエンコーダ200の電力消費量を低減し得る。クロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするための本明細書で説明される技法は、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するための本明細書で説明される技法と組み合わせてまたはそれとは別々に使用され得る。
[0112] 図4は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図4は説明のために提供され、本開示で広く例示され記載される技法を限定するものではない。説明の目的で、本開示は、ビデオデコーダ300についてJEM、VVC(開発中のITU-T H.266)、およびHEVCとの技法に従って説明されることを記載する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
[0113] 図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB:coded picture buffer)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット(prediction processing unit)304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサ中にあるいは処理回路中に実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
[0114] 予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加ユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット318の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0115] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されたビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化ビデオビットストリームからの符号化ビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コード化ピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、ビデオデコーダ300が符号化ビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号ピクチャを記憶する。CPBメモリ320とDPB314とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320とDPB314とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0116] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上記で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0117] 図4に示されている様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを支援するために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図3と同様に、固定機能回路は、特定の機能を与える回路を指し、実行され得る動作にあらかじめ設定される。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0118] ビデオデコーダ300は、プログラマブル回路から形成されるALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ300の動作がプログラマブル回路上で実行されるソフトウェアによって実行される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0119] エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0120] 概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して再構築演算(reconstruction operation)を個々に実行し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在のブロック(current block)」と呼ばれることがある)。
[0121] エントロピー復号ユニット302は、量子化変換係数ブロックの量子化された変換係数を定義するシンタックス要素ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度を決定するために、また同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために量子化変換係数ブロックに関連するQPを使用し得る。逆量子化ユニット306は、たとえば、量子化された変換係数を逆量子化するためにビット単位左シフト動作を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
[0122] 逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在のブロックに関連する残差ブロックを生成するために変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
[0123] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すためのDPB314の中の参照ピクチャ、ならびに現在のピクチャの中の現在のブロックのロケーションに対して、参照ピクチャの中の参照ブロックのロケーションを識別する、動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図3)に関して説明したのと実質的に類似の方法で、インター予測プロセスを実行し得る。
[0124] いくつかの例では、予測処理ユニット304は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するように構成され得る。この例では、予測処理ユニット304は、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するように構成され得る。予測処理ユニット304は、予測処理ユニット304が、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および予測処理ユニット304が、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するように構成され得る。このようにして、予測処理ユニット304は、YUV4:2:0フォーマットとYUV4:4:4フォーマットとの両方のための重みのセットを使用し得、これは、異なるクロマフォーマットの処理を統一するのを助け得る。異なるクロマフォーマットの処理を統一することは、コーデック処理オーバーヘッドを低減するのを助け得る。
[0125] ピクセルブレンディングを適用するために、予測処理ユニット304は、YUV4:2:0フォーマットのための重みのセットを使用して、それぞれ、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。加重平均を決定する例示的なプロセスについてさらなる詳細を以下に説明する(たとえば、図7A~図7C参照)。
[0126] 現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図3)に関して説明された方式と実質的に同様である方式でイントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに対する隣接サンプルのデータを取り出し得る。
[0127] いくつかの例では、イントラ予測ユニット318は、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。この例では、イントラ予測ユニット318は、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。イントラ参照サンプル平滑化が使用不能にされるとき、イントラ予測ユニット318は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。イントラ予測ユニット318は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。すなわち、たとえば、YUV4:4:4フォーマットとYUV4:4:4フォーマットとの両方におけるクロマ成分の場合、イントラ予測ユニット318は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。このようにして、ビデオデータを符号化することおよび復号することの複雑性が、低減され得、これは、イントラ予測ユニット318がビデオデータをコーディングする(たとえば、エンコーダするまたは復号する)時間量を低減し、および/またはイントラ予測ユニット318の電力消費量を低減し得る。
[0128] クロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするための本明細書で説明される技法は、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するための本明細書で説明される技法と組み合わせてまたはそれとは別々に使用され得る。たとえば、イントラ予測ユニット318は、予測処理ユニット(prediction processing unit)304がYUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成することと組み合わせてピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。いくつかの例では、イントラ予測ユニット318は、組み合わせてピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得、予測処理ユニット304は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するのを控える。
[0129] 再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在のブロックを再構築し得る。たとえば、再構築ユニット310は、現在のブロックを再構築するために予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0130] フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実行し得る。フィルタユニット312の動作は、すべての例において必ずしも実行されるとは限らない。
[0131] ビデオデコーダ300は、DPB314中に再構築されたブロックを記憶し得る。上記で論じられたように、DPB314は、イントラ予測のための現在のピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなど、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPBからの復号ピクチャを、後続のプレゼンテーションのために、図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。
[0132] いくつかの例では、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するように構成された1つまたは複数のプロセッサとを含む、ビデオデータを符号化するように構成されデバイスの一例を表す。この例では、ビデオデコーダ300は、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するように構成され得る。ビデオデコーダ300は、1つまたは複数のプロセッサが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および1つまたは複数のプロセッサが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するように構成され得る。したがって、ビデオデコーダ300は、YUV4:2:0フォーマットとYUV4:4:4フォーマットとの両方のための重みのセットを使用し得、これは、異なるクロマフォーマットの処理を統一するのを助け得る。異なるクロマフォーマットの処理を統一することは、コーデック処理オーバーヘッドを低減するのを助け得る。ピクセルブレンディングを適用するために、ビデオデコーダ300は、YUV4:2:0フォーマットのための重みのセットを使用して、それぞれ、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。
[0133] いくつかの例では、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成された1つまたは複数のプロセッサとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。この例では、ビデオデコーダ300は、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。ビデオデコーダ300は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。すなわち、たとえば、YUV4:4:4フォーマットとYUV4:4:4フォーマットとの両方におけるクロマ成分の場合、ビデオデコーダ300は、クロマサンプルのためにフィルタ処理されていない参照サンプルのみを使用し得る。このようにして、ビデオデータを復号することの複雑性が、低減され得、これは、ビデオデコーダ300がビデオデータを復号する時間量を低減し、および/またはビデオデコーダ300の電力消費量を低減し得る。クロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするための本明細書で説明される技法は、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するための本明細書で説明される技法と組み合わせてまたはそれとは別々に使用され得る。
[0134] 図5Aは、本開示の技法による、インター予測に基づいてコーディングユニット(CU)429を第1の三角形状の区分433と第2の三角形状の区分435とに分割する第1の例を示す概念図である。図5Aの例では、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、インター予測が使用可能であるときにおよび三角予測ユニットモードが使用可能であるときにコーディングユニット429を第1の三角形状の区分433と第2の三角形状の区分435とに分割し得る。三角予測ユニットモードの例は、たとえば、J.Chen、Y.Ye、S.Kim、「Algorithm description for Versatile Video Coding and Test Model 4(VTM 4)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Video Exploration Team、JVET-M1002、2019年1月などにおいて見つけられ得る。たとえば、三角予測ユニットモードの使用可能化に基づいて、ビデオコーダは、CUを2つの三角形状の区分に分割し得、区分の各々は、参照インデックスと単方向動きベクトルとを有する。ビデオコーダは、2つの動き補償区分を予測サンプルのブロックに組み合わせる(combine)ように構成され得、分割エッジのエッジに、ピクセルブレンディングが実行される。図5Aの例では、第1の三角形状の区分433は、CU429の右上隅のサンプルを含み、第2の三角形状の区分435は、CU429の左下隅のサンプルを含む。
[0135] 言い換えれば、たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニット429を生成し得る。この例では、ビデオコーダは、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニット429を第1の三角形状の区分433と第2の三角形状の区分435とに分割し得る。
[0136] 図5Bは、本開示の技法による、インター予測に基づいてコーディングユニット431を第1の三角形状の区分434と第2の三角形状の区分436とに分割する第2の例を示す概念図である。
[0137] たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニット431を生成し得る。この例では、ビデオコーダは、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニット431を第1の三角形状の区分434と第2の三角形状の区分436とに分割し得る。図5Bの例では、第1の三角形状の区分433は、CU429の左上に構成される。図55の例では、第1の三角形状の区分434は、CU431の左上隅のサンプルを含み、第2の三角形状の区分435は、CU431の右下隅のサンプルを含む。
[0138] 図6は、本開示の技法による、重みの1つのセットを用いたピクセルブレンディングを示す概念図である。ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)は、図6に示されているように、重みの1つのセットを用いて図6の例示的なピクセルブレンディングを実行するように構成され得る。ビデオコーダは、たとえば、2つの三角形の区分の動き情報に基づくコロケート動き補償ピクセルの加重平均化によってブレンディングエリア(blending area)中にピクセルを生成するように構成され得る。本明細書で使用するコロケートピクセルは、第2の区分(たとえば、第2の三角形状の区分)の第2のピクセルと同じピクセル位置に位置する第1の区分(たとえば、第1の三角形状の区分)の第1のピクセルを指すことがある。加重平均化については、図7A~図7Cにおいてさらに説明される。
[0139] すなわち、たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、ビデオデータのブロックのクロマ成分のための予測ブロックを生成するために重みのセットを使用してピクセルブレンディングを適用し得る。この例では、ピクセルブレンディングを適用するために、ビデオコーダは、重みのセットを使用して、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて、(「P1」として示される)第1の三角形状の区分と、(「P2」として示される)第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定し得る。
[0140] たとえば、図6に示されているように、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式1に従って各ピクセルのためのそれぞれの値Pを計算することによってルーマ成分のための予測ブロック537および/またはルーマ成分のための予測ブロック538の「2」とマークされたピクセルのためのピクセル値(pixel value)Pを決定し得る。
ここで、P1は、この例では「2」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第1のコロケート動き補償ピクセル(first collocated motion compensated pixel)の第1の参照ピクセル値(first reference pixel value)であり、ここで、P2は、この例では「2」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第2のコロケート動き補償ピクセル(second collocated motion compensated pixel)の第2の参照ピクセル値(second reference pixel value)である。
[0141] 図6にさらに示されているように、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式2に従って各ピクセルのためのそれぞれの値Pを計算することによってルーマ成分のための予測ブロック537および/またはルーマ成分のための予測ブロック538の「4」とマークされたピクセルのためのピクセル値Pを決定し得る。
ここで、P1は、この例では「4」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値であり、ここで、P2は、この例では「4」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である。
[0142] 図6にさらに示されているように、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式3に従って各ピクセルのためのそれぞれの値Pを計算することによってルーマ成分のための予測ブロック537および/またはルーマ成分のための予測ブロック538の「7」とマークされたピクセルのためのピクセル値Pを決定し得る。
ここで、P1は、この例では「7」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値であり、ここで、P2は、この例では「7」とマークされたそれぞれのピクセルとコロケートされた第1の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である。
[0143] 値「1」および「6」は、式1~3に対応する式を表す。すなわち、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式4に従って各ピクセルのためのそれぞれの値Pを計算することによってルーマ成分のための予測ブロック537および/またはルーマ成分のための予測ブロック538の「1」とマークされたピクセルのためのピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値であり、ここで、P2は、第1の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である。
[0144] ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式5に従って各ピクセルのためのそれぞれの値Pを計算することによってルーマ成分のための予測ブロック537および/またはルーマ成分のための予測ブロック538の「6」とマークされたピクセルのためのピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値であり、ここで、P2は、第1の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である。
[0145] 図6に示されている例が重みの例示的なセットのルーマのための{7/8,6/8,4/8,2/8,1/8}とクロマのための{7/8,4/8,1/8}とを示すが、他の例は異なる重みを使用し得る。たとえば、重みの2つのセットがあり得、各セットにおいて、クロマ重みとルーマ重みとが別々に定義され得る。
・ 第1のセット:ルーマのための{7/8,6/8,4/8,2/8,1/8}およびクロマのための{7/8,4/8,1/8}。
・ 第2のセット:ルーマのための{7/8,6/8,5/8,4/8,3/8,2/8,1/8}およびクロマのための{6/8,4/8,2/8}。
[0146] 重み値の第2のセット(たとえば、{6/8,4/8,2/8})は、単に例示の目的のために図7A~図7Cを参照しながら説明される。
[0147] 図7Aは、本開示の技法による、図6のピクセルブレンディングのための第1の三角形状の区分639のさらなる詳細を示す概念図である。図示のように、第1の三角形状の区分639は、第1の三角形状の区分639のコロケート動き補償ピクセルA、BおよびCを含む。たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、第1の三角形状の区分639のための動き情報(たとえば、単方向動きベクトル)を使用して第1の三角形状の区分639のコロケート動き補償ピクセルA、BおよびCを生成し得る。この例では、ビデオコーダは、第1のピクセルグループ642中のピクセルに加重平均化を適用しないことがある。
[0148] 図7Bは、本開示の技法による、図6のピクセルブレンディングのための第2の三角形状の区分640のさらなる詳細を示す概念図である。図示のように、第2の三角形状の区分640は、第2の三角形状の区分640のコロケート動き補償ピクセルA、BおよびCを含む。たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、第2の三角形状の区分640のための動き情報(たとえば、単方向動きベクトル)を使用して第2の三角形状の区分640のコロケート動き補償ピクセルA、BおよびCを生成し得る。この例では、ビデオコーダは、第2のピクセルグループ643中のピクセルに加重平均化を適用しないことがある。
[0149] 図7Cは、本開示の技法による、図6のピクセルブレンディングを使用して形成されるブロック641のさらなる詳細を示す概念図である。この例では、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、第1の三角形状の区分639と第2の三角形状の区分640との動き情報に基づいて第1の三角形状の区分639と第2の三角形状の区分640とのコロケート動き補償ピクセルの加重平均を決定し得る。
[0150] 図7Cの例では、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、重み値の第2のセット(たとえば、クロマのための{6/8,4/8,2/8})を使用し得る。たとえば、ビデオコーダは、式6に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「A」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「A」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「A」)の第2の参照ピクセル値である。
[0151] ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式7に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「B」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「B」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「B」)の第2の参照ピクセル値である。
[0152] ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式8に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「C」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「C」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「C」)の第2の参照ピクセル値である。
[0153] いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、重み値の第1のセット(たとえば、クロマのための{7/8,4/8,1/8})を使用し得る。たとえば、ビデオコーダは、式9に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「A」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「A」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「A」)の第2の参照ピクセル値である。
[0154] ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式10に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「B」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「B」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「B」)の第2の参照ピクセル値である。
[0155] ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、式11に従ってピクセル値Pを計算することによって予測ブロック641のピクセル「C」のピクセル値Pを決定し得る。
ここで、P1は、第1の三角形状の区分639の第1のコロケート動き補償ピクセル(たとえば、第1の三角形状の区分639図7Aの「C」)の第1の参照ピクセル値である、およびここにおいて、P2は、第2の三角形状の区分640の第2のコロケート動き補償ピクセル(たとえば、図7Bの第2の三角形状の区分640の「C」)の第2の参照ピクセル値である。
[0156] いくつかのビデオコーダでは、YUV4:4:4フォーマットを使用するときにルーマおよびクロマの重みが統一され得る。したがって、ビデオエンコーダ(たとえば、ビデオエンコーダ200)がYUV4:4:4フォーマットでビデオ信号を符号化する場合、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、重みの各セットのクロマ部分を使用せず、ルーマエッジとクロマエッジとの両方に重みの各セットのルーマ部分を適用するように構成され得る。
[0157] ビデオコーデックでは、イントラ予測のために使用されるサンプルは、同じピクチャの再構築されたエリアから取得され得、取得されたサンプルは、予測信号の品質を改善するためにそれにいくつかのフィルタを適用することによって平滑化され得る。たとえば、HEVCのイントラ参照サンプル平滑化の例示的な説明は、IEEE Transactions on Circuits and Systems for Video Technology、第22巻、第12号、1792~1801ページ、2012年12月のJ.Lainema、F.Bossen、W.Han、J.MinおよびK.Ugur「Intra Coding of the HEVC Standard」に見出すことができる。いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、他のイントラ参照サンプル平滑化の例を使用するように構成され得る。
[0158] いくつかのVVC設計では、クロマフォーマットがYUV4:2:0であるとき、クロマ成分は、フィルタ処理されていない参照サンプルを常に使用することになる。しかしながら、YUV4:4:4の場合、クロマ成分は、フィルタ処理された参照サンプルを使用すべきであるのかどうかを決定するためにルーマと同じルールの対象となる。言い換えれば、いくつかのVVC設計では、クロマ成分がYUV4:2:0フォーマットで生成されることになっているとき、ビデオエンコーダ200またはビデオデコーダ300は、クロマ成分を生成するためにフィルタ処理されていない参照サンプルを常に使用するように構成され得る。この例では、クロマ成分がYUV4:4:4フォーマットで生成されることになっているとき、ビデオエンコーダ200またはビデオデコーダ300は、クロマ成分を生成するためにフィルタ処理されていない参照サンプルを使用すべきかまたはフィルタ処理された参照サンプルを使用すべきかを決定するように構成され得る。
[0159] たとえば、ルーマサンプルを生成するためにイントラ参照サンプル平滑化を使用可能にする(enable)ことを決定することに応答して、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、フィルタ処理された参照サンプルを生成するためにフィルタ処理されていない参照サンプルに対して1つまたは複数のフィルタ動作を実行するように構成され得る。この例では、ビデオコーダは、イントラ予測を使用することによって、フィルタ処理された参照サンプルに基づいてピクチャのブロックのためのルーマサンプルを生成するように構成され得る。いくつかの例では、フィルタ処理されていない参照サンプルに対して1つまたは複数のフィルタ動作を実行することは、フィルタ処理されていない参照サンプルに対して1つまたは複数のデブロッキング動作を実行することを含み得る。
[0160] したがって、いくつかのVVC設計は、三角PUモードで異なるクロマフォーマットを別様に扱い得、追加の複雑性がコーデック設計に導入される。同時に、ルーマ成分に対して定義される動作が、クロマ成分に対して定義される動作よりも複雑であり得る(たとえば、図6に示されているように、ルーマのためのブレンディングエリア(blending area)は3つのサンプルの幅を有するが、クロマについて、ブレンディングエリアは2つのサンプルである)。
[0161] 本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、異なるクロマフォーマットに対するクロマ成分の処理を統一するように構成され得る。たとえば、三角PUモードの場合、ビデオコーダ(エンコーダ200またはデコーダ300)は、YUV4:4:4フォーマットのクロマ成分のためにルーマ成分のための重みの代わりにYUV4:2:0のクロマ成分のための重みを使用するように構成され得る。現在のVVCドラフトの例では、YUV4:2:0フォーマットのクロマ成分のために設計された重みの2つのセットは、次の通りである。
1) {1,4,7}
2) {2,4,6}
[0162] この例では、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:4:4のクロマ成分とYUV4:2:0のクロマ成分とが同じであるように扱うように構成され得る。ビデオコーダは、YUV4:4:4のクロマ成分に重みのこれらの2つのセットの組合せを適用するように構成され得る。たとえば、ビデオコーダは、重みのセット{1,4,7}、重みのセット{2,4,6}、または{1,4,7}と{2,4,6}との重みのセットを適用するように構成され得る。
[0163] 言い換えれば、たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、ビデオコーダが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、およびビデオコーダが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、ビデオデータのブロックのクロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用し得る。この例では、ビデオコーダは、重みのセット{1,4,7}、重みのセット{2,4,6}、または{1,4,7}と{2,4,6}との重みのセットを適用するように構成され得る。
[0164] いくつかの例では、ピクセルブレンディングを適用することは、図6および図7A~図7Cにおいて詳細に説明するように、加重平均を決定することを含む。たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:2:0フォーマットのための重みのセットを使用して、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成され得る。
[0165] 三角マージモード(triangle merge mode)のための加重サンプル予測プロセス(weighted sample prediction process)の一例は、次の通りである。
このプロセスへの入力は、以下の通りである。
- 現在のコーディングブロックの幅と高さとを指定する2つの変数nCbWおよびnCbH、
- 2つの(nCbW)×(nCbH)アレイpredSamplesLAおよびpredSamplesLB、
- 区分方向を指定する変数triangleDir、
- 色成分インデックスを指定する変数cIdx。
このプロセスの出力は、予測サンプル値の(nCbW)×(nCbH)アレイpbSamplesである。
変数nCbRは、次のように導出される。
変数bitDepthは、次のように導出される。
- cIdxが0に等しい場合、bitDepthは、BitDepthYに等しく設定される。
- そうでない場合、bitDepthは、BitDepthCに等しく設定される。
変数shift1およびoffset1は、次のように導出される。
- 変数shift1は、Max(5,17-bitDepth)に等しくなるように設定される。
- 変数offset1は1<<(shift1-1)に等しく設定される。
triangleDir、wSおよびcIdxの値に応じて、x=0..nCbW-1であり、y=0..nCbH-1である予測サンプルpbSamples[x][y]は、次のように導出される。
- 変数wIdxは、次のように導出される。
- cIdxが0に等しく、triangleDirが0に等しい場合、以下が適用される。
- そうではなく、cIdxが0に等しく、triangleDirが1に等しい場合、以下が適用される。
- そうではなく、cIdxが0よりも大きく、triangleDirが0に等しい場合、以下が適用される。
- そうではなく(cIdxが0よりも大きく、triangleDirが1に等しい場合)、以下が適用される。
- 予測サンプルの重みを指定する変数wValueは、次のようにwIdxとcIdxとを使用して導出される。
- 予測サンプル値は次のように導出される。
[0166] 上記の例では、cIdx>0は、クロマを意味する。さらに、wValue=clip3(0,8,wIdx*2)は、クロマ成分のためのものである。したがって、それぞれ、wIdx=0、1、2、3、4であるとき、wValue=8、6、4、2、0となる。さらに、blended_pixel=(wValue*predLA+(8-mValue)*predLB)>>shiftである。したがって、クロマのために使用されるブレンディング重みは、0、2、4、6、8(たとえば、{2,4,6})である。この例では、重み0または8は、2つのピクセルをブレンディングする代わりに1つの候補ピクセルをコピーすることを指すことがある。
[0167] いくつかの例では、イントラ予測の場合、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:4:4フォーマットのクロマ成分に対するイントラ参照サンプル平滑化の挙動をYUV4:2:0フォーマットのクロマ成分に対する挙動に整合させるように構成され得る。現在のVVCドラフトでは、イントラ参照サンプル平滑化は、YUV4:2:0のクロマ成分について使用不能にされている。いくつかの例によれば、ビデオエンコーダ200および/またはビデオデコーダ300は、YUV4:4:4のクロマ成分のためのイントラ参照サンプル平滑化を使用不能にするように構成され得る。
[0168] 言い換えれば、たとえば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得するように構成され得る。この例では、ビデオコーダは、YUV4:2:0フォーマットでのクロマサンプルとYUV4:4:4フォーマットでのクロマサンプルとのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にするように構成され得る。この例では、ビデオコーダは、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときとYUV4:4:4フォーマットでクロマ成分を生成するときとの両方にフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成するように構成され得る。
[0169] 図8は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(図1および図3)に関して説明されるが、他のデバイスが図8の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0170] この例では、ビデオエンコーダ200は、最初に現在のブロックを予測する(750)。いくつかの例では、「現在のブロック」を、本明細書では単に「ブロック」と呼ぶことがある。たとえば、ビデオエンコーダ200は、異なるクロマフォーマットのための統一重み情報(unified weight information)を使用して現在のブロックのための予測ブロックを形成し得る。いくつかの例では、ビデオエンコーダ200は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成し得る。
[0171] ビデオエンコーダ200は、次いで、現在のブロックのための残差ブロックを計算し得る(752)。残差ブロックを計算するために、ビデオエンコーダ200は、元のコーディングされていないブロックと、現在のブロックについての予測ブロックとの間の差分を計算して、残差ブロックを生成し得る。ビデオエンコーダ200は、次いで、残差ブロックの残差値を変換し、変換係数を量子化し得る(754)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(756)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(758)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。ビデオエンコーダ200は、次いで、ブロックのエントロピーコーディングされたデータを出力し得る(760)。
[0172] 図9は、本開示の技法による、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオデコーダ300(図1および図4)に関して説明されるが、他のデバイスが図9の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0173] ビデオデコーダ300は、エントロピーコーディングされた予測情報、および現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータなど、現在のブロックについてのエントロピーコーディングされたデータを受信し得る(870)。ビデオデコーダ300は、現在ブロックに対する予測情報を決定し残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(872)。
[0174] ビデオデコーダ300は、現在のブロックを予測し得る(874)。たとえば、ビデオデコーダ300は、現在のブロックのための予測ブロックを計算するために、たとえば、現在のブロックについての予測情報によって示されるイントラ予測またはインター予測モードを使用して、異なるクロマフォーマットについての統一重み情報を使用して現在のブロックを予測し得る。いくつかの例では、ビデオデコーダ300は、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成し得る。
[0175] ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(876)。ビデオデコーダ300は、次いで、残差ブロックを生成するために係数を逆量子化し、逆変換し得る(878)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在のブロックを復号し得る(880)。
[0176] 図10は、本開示の技法による、YUV4:2:0のための重みのセットを用いたビデオデータのブロックのためのクロマ成分のピクセルブレンディングのための例示的なプロセスを示すフローチャートである。ビデオエンコーダ200(図1および図3)とビデオデコーダ300(図1および図4)とに関して説明されるが、他のデバイスが図10の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0177] 本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成し得る(982)。ビデオコーダは、三角予測ユニットモードの使用可能化に基づいてクロマ成分のためのコーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割し得る(984)。
[0178] ビデオコーダは、1つまたは複数のプロセッサが、YUV4:2:0フォーマットでクロマ成分のためのコーディングユニットを生成するときに、および1つまたは複数のプロセッサが、YUV4:4:4フォーマットでクロマ成分のためのコーディングユニットを生成するときに、クロマ成分のための予測ブロックを生成するためにYUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用し得る(986)。いくつかの例では、ピクセルブレンディングを適用するために、ビデオコーダは、YUV4:2:0フォーマットのための重みのセットを使用して、第1の三角形状の区分と第2の三角形状の区分との動き情報に基づいて第1の三角形状の区分と第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定し得る。
[0179] ビデオコーダがビデオデコーダ(たとえば、ビデオデコーダ300)を備える例では、ビデオデコーダは、ビデオデータのブロックのための残差ブロックを復号し、クロマ成分のための予測ブロックと残差ブロックとを組み合わせて、ビデオデータのブロックを復号し得る。ビデオコーダがビデオエンコーダを備える例では、ビデオエンコーダは、ビデオデータのブロックと予測ブロックとの間の差分に基づいてビデオデータのブロックのための残差ブロックを生成し、残差ブロックを符号化し得る。
[0180] 図11は、イントラ予測を使用して予測ブロックのクロマサンプルを生成するための例示的なプロセスを示すフローチャートである。ビデオエンコーダ300(図1および図3)とビデオデコーダ300(図1および図4)とに関して説明されるが、他のデバイスが図11の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0181] 本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ200またはビデオデコーダ300)は、ピクチャのエリアのためのフィルタ処理されていない参照サンプルを取得し得る(1090)。いくつかの例では、ビデオコーダは、YUV4:2:0フォーマットでのおよびYUV4:4:4フォーマットでのクロマサンプルのためのフィルタ処理されていない参照サンプルのイントラ参照サンプル平滑化を使用不能にし得る。ビデオコーダは、イントラ予測を使用することによって、YUV4:2:0フォーマットでクロマ成分を生成するときにおよびYUV4:4:4フォーマットでクロマ成分を生成するときにフィルタ処理されていない参照サンプルに基づいてピクチャのブロックのための予測ブロックのクロマサンプルを生成し得る(1092)。
[0182] ビデオコーダがビデオデコーダ(たとえば、ビデオデコーダ300)を備える例では、ビデオデコーダは、ビデオデータのブロックのための残差ブロックを復号し、クロマ成分のための予測ブロックと残差ブロックとを組み合わせて、ビデオデータのブロックを復号し得る。ビデオコーダがビデオエンコーダを備える例では、ビデオエンコーダは、ビデオデータのブロックと予測ブロックとの間の差分に基づいてビデオデータのブロックのための残差ブロックを生成し、残差ブロックを符号化し得る。
[0183] 本開示の例示的な例は、以下を含む。
[0184] 例1: ビデオデータを処理する方法であって、第1のクロマフォーマットについての重み情報を決定することと、第1のクロマフォーマットについての重み情報に対応するために第1のクロマフォーマットとは異なる第2のクロマフォーマットについての重み情報を決定することと、第1のクロマフォーマットについての重み情報に基づいて予測情報を生成することとを備える方法。
[0185] 例2: モードが三角予測ユニット(PU)モードであると決定すること、ここにおいて、第2のクロマフォーマットについての重み情報を決定することが、モードが三角PUモードであると決定することに応答する、を備える、例1に記載の方法。
[0186] 例3. 第1のクロマフォーマットがYUV4:2:0である、ここにおいて、第2のクロマフォーマットは、YUV4:4:4である、例1~2の任意の組合せに記載の方法。
[0187] 例4. 第1のクロマフォーマットについての重み情報が1){1,4,7}と2){2,4,6}とである、例3に記載の方法。
[0188] 例5. イントラ予測が適用されると決定することに応答して、YUV4:2:0フォーマットに対するそれYUV4:4:4フォーマットのクロマ成分に対するイントラ参照サンプル平滑化の挙動を整合させることを備える、例1に記載の方法。
[0189] 例6. 整合させることが、YUV4:2:0のクロマ成分のためのイントラ参照サンプル平滑化を使用不能にすることと、YUV4:4:4のクロマ成分のためのイントラ参照サンプル平滑化を使用不能にすることとを備える、例5に記載の方法。
[0190] 例7. 処理することが復号することを備える、例1~6のいずれかに記載の方法。
[0191] 例8. 処理することが符号化することを備える、例1~6のいずれかに記載の方法。
[0192] 例9. ビデオデータをコーディングするためのデバイスであって、例1~6のいずれかに記載の方法を実行するための1つまたは複数の手段を備える、デバイス。
[0193] 例10. 1つまたは複数の手段は、回路中に実装された1つまたは複数のプロセッサを備える、例9に記載のデバイス。
[0194] 例11. ビデオデータを記憶するためのメモリをさらに備える、例9および10のいずれかに記載のデバイス。
[0195] 例12. 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例9~11のいずれかに記載のデバイス。
[0196] 例13. デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例9~12のいずれかに記載のデバイス。
[0197] 例14. デバイスがビデオデコーダを備える、例9~13のいずれかに記載のデバイス。
[0198] 例15. デバイスがビデオエンコーダを備える、例9~14のいずれかに記載のデバイス。
[0199] 例16. 実行されたとき、例1~6のいずれかに記載の方法を1つまたは複数のプロセッサに実行させる命令を記憶したコンピュータ可読記憶媒体。
[0200] 例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、説明したすべての行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、たとえば、マルチスレッドの処理、割込み処理、または多数のプロセッサを用いて、連続的ではなく同時に実行され得る。
[0201] 1つまたは複数の例において、前述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0202] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含むのではなく、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含めるべきである。
[0203] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積論理回路またはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」および「処理回路」という用語は、前述の構造、または本明細書において説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
[0204] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されるが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
[0205] 様々な例について説明した。これらおよび他の例は添付の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを処理する方法であって、
回路中に実装された1つまたは複数のプロセッサによって、YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成することと、
前記1つまたは複数のプロセッサによって、三角予測ユニットモードの使用可能化に基づいて前記クロマ成分のための前記コーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割することと、
前記1つまたは複数のプロセッサが、前記YUV4:2:0フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、および前記1つまたは複数のプロセッサが、前記YUV4:4:4フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、前記1つまたは複数のプロセッサによって、前記クロマ成分のための予測ブロックを生成するために前記YUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用することと、ここにおいて、ピクセルブレンディングを適用することは、前記YUV4:2:0フォーマットのための重みの前記セットを使用して、それぞれ、前記第1の三角形状の区分と前記第2の三角形状の区分との動き情報に基づいて前記第1の三角形状の区分と前記第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定することを備える、
を備える、方法。
[C2]
加重平均を決定することは、以下を計算することによって前記予測ブロックのピクセル値Pを決定することを備える、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項1に記載の方法。
[C3]
加重平均を決定することは、以下を計算することによって前記予測ブロックのピクセル値Pを決定することを備える、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項1に記載の方法。
[C4]
加重平均を決定することは、以下を計算することによって前記予測ブロックのピクセル値Pを決定することを備える、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項1に記載の方法。
[C5]
加重平均を決定することは、以下を計算することによって前記予測ブロックのピクセル値Pを決定することを備える、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項1に記載の方法。
[C6]
加重平均を決定することは、以下を計算することによって前記予測ブロックのピクセル値Pを決定することを備える、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項1に記載の方法。
[C7]
前記1つまたは複数のプロセッサによって、ビデオデータの前記ブロックのための残差ブロックを復号することと、
前記1つまたは複数のプロセッサによって、ビデオデータの前記ブロックを復号するために前記予測ブロックと前記残差ブロックとを組み合わせることと
を備える、請求項1に記載の方法。
[C8]
前記1つまたは複数のプロセッサによって、ビデオデータの前記ブロックと前記予測ブロックとの間の差分に基づいてビデオデータの前記ブロックのための残差ブロックを生成することと、
前記1つまたは複数のプロセッサによって、前記残差ブロックを符号化することと
を備える、請求項1に記載の方法。
[C9]
ビデオデータを処理するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
回路中に実装された1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサが、
YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成することと、
三角予測ユニットモードの使用可能化に基づいて前記クロマ成分のための前記コーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割することと、
前記1つまたは複数のプロセッサが、前記YUV4:2:0フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、および前記1つまたは複数のプロセッサが、前記YUV4:4:4フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、前記クロマ成分のための予測ブロックを生成するために前記YUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用することと、ここにおいて、ピクセルブレンディングを適用するために、前記1つまたは複数のプロセッサは、前記YUV4:2:0フォーマットのための重みの前記セットを使用して、それぞれ、前記第1の三角形状の区分と前記第2の三角形状の区分との動き情報に基づいて前記第1の三角形状の区分と前記第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するように構成される、
を行うように構成された、デバイス。
[C10]
加重平均を決定するために、前記1つまたは複数のプロセッサは、以下を計算することによって前記予測ブロックのピクセル値Pを決定するように構成される、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項9に記載のデバイス。
[C11]
加重平均を決定するために、前記1つまたは複数のプロセッサは、以下を計算することによって前記予測ブロックのピクセル値Pを決定するように構成される、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項9に記載のデバイス。
[C12]
加重平均を決定するために、前記1つまたは複数のプロセッサは、以下を計算することによって前記予測ブロックのピクセル値Pを決定するように構成される、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項9に記載のデバイス。
[C13]
加重平均を決定するために、前記1つまたは複数のプロセッサは、以下を計算することによって前記予測ブロックのピクセル値Pを決定するように構成される、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項9に記載のデバイス。
[C14]
加重平均を決定するために、前記1つまたは複数のプロセッサは、以下を計算することによって前記予測ブロックのピクセル値Pを決定するように構成される、
ここにおいて、P
1
は、前記第1の三角形状の区分の第1のコロケート動き補償ピクセルの第1の参照ピクセル値である、およびここにおいて、P
2
は、前記第2の三角形状の区分の第2のコロケート動き補償ピクセルの第2の参照ピクセル値である、請求項9に記載のデバイス。
[C15]
前記1つまたは複数のプロセッサは、
ビデオデータの前記ブロックのための残差ブロックを復号することと、
ビデオデータの前記ブロックを復号するために前記予測ブロックと前記残差ブロックとを組み合わせることと
を行うようにさらに構成された、請求項9に記載のデバイス。
[C16]
前記1つまたは複数のプロセッサは、
ビデオデータの前記ブロックと前記予測ブロックとの間の差分に基づいてビデオデータの前記ブロックのための残差ブロックを生成することと、
前記残差ブロックを符号化することと
を行うようにさらに構成された、請求項9に記載のデバイス。
[C17]
前記デバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、請求項9に記載のデバイス。
[C18]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成することと、
三角予測ユニットモードの使用可能化に基づいて前記クロマ成分のための前記コーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割することと、
前記1つまたは複数のプロセッサが、前記YUV4:2:0フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、および前記1つまたは複数のプロセッサが、前記YUV4:4:4フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、前記クロマ成分のための予測ブロックを生成するために前記YUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用することとを行わせ、ここにおいて、前記1つまたは複数のプロセッサに、ピクセルブレンディングを適用することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記YUV4:2:0フォーマットのための重みの前記セットを使用して、それぞれ、前記第1の三角形状の区分と前記第2の三角形状の区分との動き情報に基づいて前記第1の三角形状の区分と前記第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定することを行わせる、
コンピュータ可読記憶媒体。
[C19]
ビデオデータをコーディングするためのデバイスであって、
YUV4:4:4フォーマットでまたはYUV4:2:0フォーマットでビデオデータのブロックのクロマ成分のためのコーディングユニットを生成するための手段と、
三角予測ユニットモードの使用可能化に基づいて前記クロマ成分のための前記コーディングユニットを第1の三角形状の区分と第2の三角形状の区分とに分割するための手段と、
1つまたは複数のプロセッサが、前記YUV4:2:0フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、および前記1つまたは複数のプロセッサが、前記YUV4:4:4フォーマットで前記クロマ成分のための前記コーディングユニットを生成するときに、前記クロマ成分のための予測ブロックを生成するために前記YUV4:2:0フォーマットのための重みのセットを使用してピクセルブレンディングを適用するための手段と、ここにおいて、ピクセルブレンディングを適用するための前記手段は、前記YUV4:2:0フォーマットのための重みの前記セットを使用して、それぞれ、前記第1の三角形状の区分と前記第2の三角形状の区分との動き情報に基づいて前記第1の三角形状の区分と前記第2の三角形状の区分とのコロケート動き補償ピクセルの加重平均を決定するための手段を備える、
を備える、デバイス。