[0001]本出願は、その各々の内容全体が参照により本明細書に組み込まれる、2019年6月25日に出願された米国仮出願第62/866,561号、および2019年10月2日に出願された米国仮出願第62/909,626号の利益を主張する、2020年6月24日に出願された米国出願第16/911,003号の優先権を主張する。
[0021]開発中の汎用ビデオコーディング(VVC)規格の例示的なドラフトバージョンでは、クロマブロックを復号するために使用される量子化パラメータ(QP)(たとえば、クロマQP)の値は、クロマQPマッピングテーブルを使用して、ルーマブロックを復号するために使用されるQP(たとえば、ルーマQP)の値およびオフセットパラメータの値から導出される(たとえば、Brossら、「Versatile Video Coding (Draft 5)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第14回会合、ジュネーブ、スイス、2019年3月19~27日、JVET-N1008-v8(以下、「VVCドラフト5)における表8-15)。いくつかの例では、クロマQPマッピングテーブルは、たいていのQP値について1の線形勾配(slope)を有し、29から43の間のQP値について1よりも小さい勾配を有する。VVCドラフト5では、ルーマQP値からクロマQP値を決定するために、固定クロマQPマッピングテーブルが使用される。すなわち、クロマQPマッピングテーブルは、ビットストリームにおいてシグナリングされず、むしろ静的であり、同じクロマQPマッピングテーブルがビデオエンコーダとビデオデコーダの両方において記憶される。
[0022](たとえば、VVCドラフト5の場合のように)静的クロマQPマッピングテーブルを使用してクロマQP値を決定するための技法は、いくつかの欠点を呈する。一例として、静的クロマQPマッピングテーブルは、符号化され得るすべてのタイプのビデオコンテンツ(たとえば、高ダイナミックレンジ(HDR)ビデオコンテンツ、広色域(WCG:video color gamut)ビデオコンテンツ、自然コンテンツ、スクリーンコンテンツなど)についてのクロマQP値をモデル化するためのフレキシビリティを提供しない。したがって、静的クロマQPマッピングテーブルの使用は、いくつかの状況において準最適なひずみおよび/またはコーディング効率を生じ得る。さらに、VVCドラフト5において使用されるクロマQPマッピングテーブルは、同じテーブルがCbクロマ成分とCrクロマ成分の両方のために使用されるという仮定のもとに設計される。しかしながら、より一般的な使用事例(たとえば、HDRビデオ)では、Cb成分およびCr成分のために異なるクロマQPマッピングテーブルを使用することが有利であることがわかっている。
[0023]これらの欠点に鑑みて、本開示は、符号化されたビデオビットストリームにおいて1つまたは複数のクロマQPマッピングテーブルをシグナリングするための技法について説明する。一例では、クロマQPマッピングテーブルは、シーケンスパラメータセット(SPS)においてシグナリングされ得る。ビデオデコーダは、符号化されたクロマQPマッピングテーブルを受信および復号し得、次いで、ビデオデータのブロックのクロマ成分についてのQP値を決定するために、シグナリングされたクロマQPマッピングテーブルを使用し得る。いくつかの例では、ビデオエンコーダは、区分的線形モデルとして、クロマQPマッピングテーブルを符号化およびシグナリングし得る。
[0024]ビットストリームにおいてクロマQPマッピングテーブルをシグナリングすることの1つの利益は、QPオフセット値の使用に頼ることなしに、特定のタイプのビデオコンテンツについてのクロマQP値を効率的にモデル化するためのフレキシビリティをエンコーダに提供することである。(たとえば、静的クロマQPマッピングテーブルを使用して)クロマQPマッピングテーブルのシグナリングを制約することは、この目的にそぐわないことがある。したがって、クロマQPマッピングテーブルのためのより一般的なシグナリング機構を有することが有益である。
[0025]図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0026]図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、モバイルデバイス、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、ブロードキャスト受信機デバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0027]図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、クロマQPマッピングテーブルを符号化および復号するための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表し、宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0028]図1に示されているシステム100は一例にすぎない。概して、いかなるデジタルビデオ符号化および/または復号デバイスも、クロマQPマッピングテーブルを符号化および復号するための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実施するデバイスとして参照する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、特に、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、ソースデバイス102と宛先デバイス116とは、ソースデバイス102と宛先デバイス116との各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ソースデバイス102と宛先デバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
[0029]概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110上に出力し得る。
[0030]ソースデバイス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つまたは複数のビデオバッファとして割り振られ得る。
[0031]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を復調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0032]いくつかの例では、コンピュータ可読媒体110はストレージデバイス112を含み得る。ソースデバイス102は、出力インターフェース108からストレージデバイス112に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介してストレージデバイス112から符号化されたデータにアクセスし得る。ストレージデバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0033]いくつかの例では、コンピュータ可読媒体110は、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114または別の中間ストレージデバイスを含み得る。ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114または別の中間ストレージデバイスに符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。
[0034]ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、(ファイル転送プロトコル(FTP)またはファイル配信オーバー単方向トランスポート(FLUTE:File Delivery over Unidirectional Transport)プロトコルなどの)ファイル転送プロトコルサービスを提供するように構成されたサーバ、コンテンツ配信ネットワーク(CDN)デバイス、ハイパーテキスト転送プロトコル(HTTP)サーバ、マルチメディアブロードキャストマルチキャストサービス(MBMS)または拡張MBMS(eMBMS)サーバ、および/あるいはネットワーク接続ストレージ(NAS)デバイスを表し得る。ファイルサーバ114は、追加または代替として、動的適応ストリーミングオーバーHTTP(DASH)、HTTPライブストリーミング(HLS)、リアルタイムストリーミングプロトコル(RTSP)、HTTP動的ストリーミングなど、1つまたは複数のHTTPストリーミングプロトコルを実装し得る。
[0035]宛先デバイス116は、インターネット接続を含む、任意の標準のデータ接続を通してファイルサーバ114から符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すまたは受信するための上記で説明された様々なプロトコル、あるいはメディアデータを取り出すための他のそのようなプロトコルのうちのいずれか1つまたは複数に従って動作するように構成され得る。
[0036]出力インターフェース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デバイスを含み得る。
[0037]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0038]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、ストレージデバイス112、ファイルサーバ114など)から符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
[0039]図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームをハンドリングするために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0040]ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0041]ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれらの拡張など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは、汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266、および/またはMPEGエッセンシャルビデオコーディング(EVC:Essential Video Coding)など、他のプロプライエタリまたは業界規格に従って動作し得る。VVC規格の最近のドラフトは、Brossら、「Versatile Video Coding (Draft 5)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第14回会合、ジュネーブ、スイス、2019年3月19~27日、JVET-N1008-v8(以下、「VVCドラフト5」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0042]概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、概して、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相(red hue)と青色相(blue hue)の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現にコンバートし、ビデオデコーダ300は、YUV表現をRGBフォーマットにコンバートする。代替として、前処理および後処理ユニット(図示せず)が、これらのコンバージョンを実施し得る。
[0043]本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして理解されるべきである。
[0044]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない正方形に区分し、クワッドツリーの各ノードは、0個または4つのいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表し、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
[0045]別の例として、ビデオエンコーダ200とビデオデコーダ300とは、VVCに従って動作するように構成され得る。VVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、2つのレベル、すなわち、クワッドツリー区分に従って区分される第1のレベルと、バイナリツリー区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードは、CTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
[0046]MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)(ターナリツリー(TT)とも呼ばれる)区分とを使用して区分され得る。トリプルまたはターナリ(ternary)ツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルまたはターナリツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であり得る。
[0047]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0048]ビデオエンコーダ200とビデオデコーダ300とは、HEVCに従うクワッドツリー区分、QTBT区分、MTT区分、あるいはVVCおよび/またはEVCの例において使用される他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0049]いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、あるいはモノクロームピクチャ、またはサンプルをコーディングするために使用される3つの別個の色平面とシンタックス構造とを使用してコーディングされるピクチャのサンプルのCTBを含む。CTBは、CTBへの成分の分割が区分(partitioning)になるような何らかの値のNについて、サンプルのN×Nブロックであり得る。成分は、ピクチャを4:2:0、4:2:2、または4:4:4色フォーマットに構成する3つのアレイ(ルーマおよび2つのクロマ)のうちの1つからのアレイまたは単一のサンプル、あるいはピクチャをモノクロームフォーマットに構成するアレイまたはアレイの単一のサンプルである。いくつかの例では、コーディングブロックは、コーディングブロックへのCTBの分割が区分になるような何らかの値のMとNとについて、サンプルのM×Nブロックである。
[0050]ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリック(brick)は、ピクチャ中の特定のタイル内のCTU行の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
[0051]いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
[0052]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
[0053]本開示は、垂直寸法と水平寸法とに関して(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を指すために、「N×N(NxN)」」および「N×N(N by N)」、たとえば、16×16サンプル(16x16 samples)または16×16サンプル(16 by 16 samples)を互換的に使用し得る。概して、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、概して、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。その上、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有するとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0054]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0055]CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0056]VVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0057]イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。VVCのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上、左上、または左にあり得る。
[0058]ビデオエンコーダ200は、現在ブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
[0059]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを作り出すために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を作り出す。
[0060]上述のように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は変換係数の量子化を実施し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に丸めることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位右シフトを実施し得る。
[0061]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、シリアル化されたベクトルを作り出すために、量子化された変換係数を走査するために、あらかじめ定義された走査順序を利用し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
[0062]CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0063]ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0064]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
[0065]概して、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、CTUのCUを定義するために、ピクチャをCTUに区分するための区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
[0066]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックのための残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
[0067]以下でより詳細に説明されるように、本開示の技法によれば、ビデオエンコーダ200は、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを符号化することと、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素をシグナリングすることと、を行うように構成され得る。同様に、逆の様式で、ビデオデコーダ300は、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素を受信することと、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用してビデオデータの第1のクロマブロックを復号することと、を行うように構成され得る。
[0068]本開示は、概して、シンタックス要素など、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素についての値をシグナリングし得る。概して、シグナリングは、ビットストリームにおいて値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素をストレージデバイス112に記憶するときに行われ得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0069]図2は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図2は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、VVC(開発中のITU-T H.266)、EVC、およびHEVC(ITU-T H.265)の技法に従って、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオ符号化デバイスによって実施され得る。
[0070]図2の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。たとえば、ビデオエンコーダ200のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0071]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0072]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのためのビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的なストレージを提供し得る。
[0073]図2の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0074]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0075]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204とモード選択ユニット202とに提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0076]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0077]モード選択ユニット202は、概して、符号化パラメータの組合せをテストするために複数の符号化パスを協調させ、そのような組合せについてのレートひずみ値を生じる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
[0078]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、概して「ビデオブロック」または「ブロック」と呼ばれることもある。
[0079]概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUとTUとの重複する部分)のための予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前にコーディングされたピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0080]動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが部分サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックについての値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてデータを取り出し、たとえば、サンプルごとの平均化または加重平均化を通して、取り出されたデータを組み合わせ得る。
[0081]別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、概して、予測ブロックを作り出すために、隣接サンプルの値を数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートし得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0082]モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
[0083]モード選択ユニット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サイズの非対称区分をサポートし得る。
[0084]モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0085]いくつかの例として、他のビデオコーディング技法そのようなイントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングでは、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックのための予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0086]上記で説明されたように、残差生成ユニット204は、現在ブロックのためのビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在ブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0087]変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換などの1次変換および2次変換を実施し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0088]量子化ユニット208は、量子化された変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって作り出された元の変換係数よりも低い精度を有し得る。
[0089]以下でより詳細に説明されるように、本開示のいくつかの例では、量子化ユニット208(またはビデオエンコーダ200の別の構造ユニット)は、符号化されたビデオビットストリームにおいて、1つまたは複数のクロマQPマッピングテーブルをシグナリングするように構成され得る。量子化ユニット208は、ビデオデータの対応するルーマブロックを符号化するために使用されるQP値(たとえば、ルーマQP値)から、ビデオデータのクロマブロックについてのQP値を決定するために、クロマQPマッピングテーブルを使用し得る。すなわち、ルーマQP値は、クロマQPマッピングテーブルへの入力である。クロマQPマッピングテーブルは、
ルーマQP値の関数としてクロマQP値を出力する。いくつかの例では、関数は区分的線形値である。量子化ユニット208は、使用されるクロマQPマッピングテーブルを(たとえば、SPSにおいて)ビデオデコーダ300にシグナリングし得る。ビデオデコーダ300は、次いで、ビデオデータのクロマブロックを復号するときに逆量子化を実施するために使用され得るクロマQP値を決定するために、クロマQPマッピングテーブルを使用し得る。
[0090]本開示の一例では、量子化ユニット208(またはビデオエンコーダ200の別の構造ユニット)は、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを符号化することと、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルをシグナリングすることと、を行うように構成され得る。一例では、第1のクロマQPマッピングテーブルは区分的線形モデルである。この例では、第1のクロマQPマッピングテーブルをシグナリングするために、量子化ユニット208は、区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素をシグナリングするように構成され得る。
[0091]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度のひずみを伴うが)現在ブロックに対応する再構築されたブロックを作り出し得る。たとえば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
[0092]フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
[0093]ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。さらに、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築されたブロックを使用し得る。
[0094]概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0095]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
[0096]上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0097]いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであり得る。
[0098]ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路において実装される1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表し、1つまたは複数の処理ユニットは、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを符号化することと、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素をシグナリングすることとを行うように構成される。
[0099]図3は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。図3は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、VVC(開発中のITU-T H.266)、EVC、およびHEVC(ITU-T H.265)の技法に従って、ビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実施され得る。
[0100]図3の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。たとえば、ビデオデコーダ300のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0101]予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0102]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときにビデオデコーダ300が参照ビデオデータとして出力および/または使用し得る復号されたピクチャを記憶する。CPBメモリ320とDPB314とは、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320とDPB314とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0103]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320とともに上記で説明されたようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0104]図3に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図2と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0105]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0106]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0107]概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
[0108]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
[0109]以下でより詳細に説明されるように、本開示のいくつかの例では、逆量子化ユニット306(またはビデオデコーダ300の別の構造ユニット)は、符号化されたビデオビットストリームにおいて、1つまたは複数のクロマQPマッピングテーブルを受信するように構成され得る。逆量子化ユニット306は、ビデオデータの対応するルーマブロックを復号するために使用されるQP値(たとえば、ルーマQP値)から、ビデオデータのクロマブロックについてのQP値(たとえば、クロマQP値)を決定するために、クロマQPマッピングテーブルを使用し得る。すなわち、ルーマQP値は、クロマQPマッピングテーブルへの入力である。クロマQPマッピングテーブルは、ルーマQP値の関数としてクロマQP値を出力する。いくつかの例では、関数は区分的線形値(piece-wise linear value)である。逆量子化ユニット306は、使用されるクロマQPマッピングテーブルを(たとえば、SPSにおいて)受信し得る。ビデオデコーダ300の逆量子化ユニット306は、次いで、ビデオデータのクロマブロックを復号するときに逆量子化を実施するために使用され得るクロマQP値を決定するために、クロマQPマッピングテーブルを使用し得る。
[0110]本開示の一例では、逆量子化ユニット306(またはビデオデコーダ300の別の構造ユニット)は、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルを受信することと、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを復号することとを行うように構成され得る。一例では、第1のクロマQPマッピングテーブルは区分的線形モデルである。この例では、第1のクロマQPマッピングテーブルを受信するために、逆量子化ユニット306は、区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素を受信するように構成され得る。
[0111]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用し得る。
[0112]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図2)に関して説明されたものと実質的に同様である様式で、インター予測プロセスを実施し得る。
[0113]別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図2)に関して説明されたものと実質的に同様である様式で、イントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
[0114]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0115]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、必ずしもすべての例において実施されるとは限らない。
[0116]ビデオデコーダ300は、再構築されたブロックをDPB314に記憶し得る。たとえば、フィルタユニット312の動作が実施されない例では、再構築ユニット310は、再構築されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実施される例では、フィルタユニット312は、フィルタ処理された再構築されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、イントラ予測のための現在ピクチャのサンプル、および後続の動き補償のための以前に復号されたピクチャなど、参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号されたピクチャ(たとえば、復号されたビデオ)を、図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、出力し得る。
[0117]このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路において実装される1つまたは複数の処理ユニットとを含むビデオ復号デバイスの一例を表し、1つまたは複数の処理ユニットは、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素を受信することと、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定することと、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを復号することと、を行うように構成される。
[0118]次世代ビデオ適用例は、高ダイナミックレンジ(HDR)および/または広色域(WCG)をもつキャプチャされた風景を表すビデオデータを用いて動作することが予期される。利用されるダイナミックレンジおよび色域のパラメータは、ビデオコンテンツの2つの独立した属性であり、デジタルテレビジョンおよびマルチメディアサービスの目的のためのそれらの仕様は、いくつかの国際規格によって定義される。たとえば、ITU-R Rec.BT.709、「Parameter values for the HDTV standards for production and international programme exchange」、およびITU-R Rec.BT.2020、「Parameter values for ultra-high definition television systems for production and international programme exchange」は、それぞれ、標準色域を越えて拡張する標準ダイナミックレンジ(SDR)および色プライマリなど、HDTV(高精細度テレビジョン)およびUHDTV(超高精細度テレビジョン)のためのパラメータを定義する。Rec.BT.2100、「Image parameter values for high dynamic range television for use in production and international programme exchange」は、伝達関数と、広色域表現をサポートするプライマリを含む、HDRテレビジョン使用のための表現とを定義する。
[0119]他のシステムにおいてダイナミックレンジおよび色域属性を指定する他の規格開発機関(SDO:standards developing organization)文献もあり、たとえば、DCI-P3色域はSMPTE-231-2(米国映画テレビ技術者協会(Society of Motion Picture and Television Engineers))において定義され、HDRのいくつかのパラメータはSMPTE-2084において定義される。ビデオデータのためのダイナミックレンジおよび色域の簡単な説明が以下で与えられる。
[0120]ダイナミックレンジは、一般に、ビデオ信号の最大輝度(たとえば、ルミナンス)と最小輝度との間の比として定義される。ダイナミックレンジは、「fストップ」に関して測定され得、ここで、1つのfストップは、信号のダイナミックレンジの2倍に対応する。モーションピクチャエキスパートグループ(MPEG)によって定義されるように、16個よりも多いfストップをもつ輝度変動を起用するコンテンツは、HDRコンテンツと呼ばれる。いくつかの項では、10個のfストップと16個のfストップとの間のレベルは、中間ダイナミックレンジとして見なされるが、他の定義によれば、HDRであると見なされ得る。本開示のいくつかの例では、HDRビデオコンテンツは、標準ダイナミックレンジ(たとえば、ITU-R Rec.BT.709によって指定されたビデオコンテンツ)をもつ旧来使用されるビデオコンテンツよりも高いダイナミックレンジを有する任意のビデオコンテンツであり得る。
[0121]人間の視覚系(HVS:human visual system)は、SDRコンテンツおよびHDRコンテンツよりもはるかに大きいダイナミックレンジを知覚することが可能である。しかしながら、HVSは、HVSのダイナミックレンジをいわゆる同時レンジに狭くするための適応機構を含む。同時レンジの幅は、現在の照明状況(たとえば、現在の輝度)に依存し得る。
[0122]現在のビデオ適用例およびサービスは、ITU Rec.709によって規制され、約0.1~100(しばしば「ニト」と呼ばれる)カンデラ(cd)毎m2の輝度(たとえば、ルミナンス)のレンジを一般にサポートするSDRを与え、10個未満のfストップをもたらす。いくつかの例示的な次世代ビデオサービスは、最高16個のfストップのダイナミックレンジを与えることが予想される。そのようなコンテンツのための詳細な仕様は現在開発中であるが、いくつかの初期パラメータは、SMPTE-2084およびITU-R Rec.2020において指定されている。
[0123]ルーマQP値へのクロマQP依存性
[0124]HEVCおよびより新しいビデオコーディング規格など、いくつかの最先端のビデオコーディング設計は、現在コーディングされているCbクロマブロックおよび/または現在コーディングされているCrクロマブロックを処理するために効果的に適用される、ルーマQP値とクロマQP値との間のあらかじめ定義された依存性(たとえば、静的クロマQPマッピングテーブル)を利用し得る。そのような依存性は、ルーマ成分とクロマ成分との間の最適ビットレート割振りを達成するために利用され得る。
[0125]そのような依存性の一例は、HEVC仕様の表8-10によって表され、ここで、クロマサンプルを復号するために適用されるクロマQP値が、ルーマサンプルを復号するために利用されるQP値から導出される。クロマQP値が、対応するルーマサンプルのQP値(たとえば、対応するルーマサンプルのブロック/TUに適用されるQP値)と、クロマQPオフセットと、HEVC仕様の表8-10とに基づいて導出される、HEVCの関連するセクションが、以下に複写される。
[0126]ChromaArrayTypeが0に等しくないとき、以下が適用される。
- 変数qPCbおよびqPCrは、以下のように導出される。
- tu_residual_act_flag[xTbY][yTbY]が0に等しい場合、以下が適用される。
- そうでない場合(tu_residual_act_flag[xTbY][yTbY]が1に等しい)、以下が適用される。
- ChromaArrayTypeが1に等しい場合、変数qPCbおよびqPCrは、それぞれqPiCbおよびqPiCrに等しいインデックスqPiに基づいて、表8-10において指定されるようにQpCの値に等しく設定される。
- そうでない場合、変数qPCbおよびqPCrは、それぞれqPiCbおよびqPiCrに等しいインデックスqPiに基づいて、Min(qPi,51)に等しく設定される。
- CbおよびCr成分についてのクロマ量子化パラメータQp’CbおよびQp’Crは、以下のように導出される。
[0127]変数qPCbおよびqPCrは、それぞれ、最終QP値Qp’CbおよびQp’Crを決定するために使用されるCbクロマQPおよびCrクロマQPの中間値である。ChromaArrayTypeが0であることは、モノクロームコーディングシンタックスが使用されることを示す。ChromaArrayTypeが0でない(たとえば、0よりも大きい)ことは、異なるタイプのクロマサブサンプリングフォーマット(たとえば、4:4:4、4:2:2、4:2:0など)を示す。
[0128]同様のQPマッピングテーブルおよびクロマQP導出が、VVC(たとえば、VVCドラフト5における表8-15)において使用される。
[0129]VVCドラフト5では、クロマQP値は、クロマQPマッピングテーブル(たとえば、VVCドラフト5における表8-15)を使用してルーマQP値およびオフセットパラメータから導出される。クロマQPマッピングテーブルは、ルーマQP値の大部分について1の線形勾配(slope)を有する。29から43の間のルーマQP値では、勾配は1よりも小さい。
[0130]VVCドラフト5の設計、およびクロマQPオフセットをもつまたはもたない静的クロマQPマッピングテーブルを使用する他の技法は、いくつかの欠点を有する。一例として、静的クロマQPマッピングテーブルは、符号化され得るすべてのタイプのビデオコンテンツ(たとえば、高ダイナミックレンジ(HDR)ビデオコンテンツ、広色域(WCG)ビデオコンテンツ、自然コンテンツ、スクリーンコンテンツなど)についてのクロマQP値をモデル化するためのフレキシビリティを提供しない。したがって、静的クロマQPマッピングテーブルの使用は、いくつかの状況において準最適なひずみおよび/またはコーディング効率を生じ得る。
[0131]さらに、VVCドラフト5において使用されるクロマQPマッピングテーブルは、同じテーブルがCbクロマ成分とCrクロマ成分の両方のために使用されるという仮定のもとに設計される。しかしながら、より一般的な使用事例(たとえば、HDRビデオ)では、Cb成分およびCr成分のために異なるクロマQPマッピングテーブルを使用することが有利であることがわかっている。
[0132]上記に鑑みて、本開示は、符号化されたビデオビットストリームにおいて1つまたは複数のクロマQPマッピングテーブルをシグナリングするための技法について説明する。一例では、クロマQPマッピングテーブルは、シーケンスパラメータセット(SPS)においてシグナリングされ得る。ビデオデコーダ300は、符号化されたクロマQPマッピングテーブルを受信し、復号し得、次いで、ビデオデータのブロックのクロマ成分についてのQP値を決定するために、シグナリングされたクロマQPマッピングテーブルを使用し得る。いくつかの例では、ビデオエンコーダ200は、クロマQPマッピングテーブルを符号化し、区分的線形モデルとしてシグナリングし得る。
[0133]ビットストリームにおいてクロマQPマッピングテーブルをシグナリングすることの1つの利益は、QPオフセット値の使用に頼ることなしに特定のタイプのビデオコンテンツ(たとえば、HDRコンテンツ)についてのクロマQP値を効率的にモデル化するためのフレキシビリティをエンコーダに提供することである。(たとえば、静的クロマQPマッピングテーブルを使用して)クロマQPマッピングテーブルのシグナリングを制約することは、この目的にそぐわないことがある。したがって、クロマQPマッピングテーブルのためのより一般的なシグナリング機構を有することが有益である。本開示の技法は、異なるタイプのビデオコンテンツのためのダイナミックレンジ適応を改善し得る。以下で説明される技法のうちの1つまたは複数が、独立して、または本開示の技法の任意の他の組合せと組み合わせて使用され得ることを理解されたい。
[0134]本開示の一例では、ビデオエンコーダ200およびビデオデコーダ300は、1つまたは複数のクロマQPマッピングテーブルが符号化されたビデオビットストリームにおいて明示的にシグナリングされるかどうかを示すシンタックス要素をコーディング(たとえば、それぞれ、符号化および復号)するように構成され得る。たとえば、ビデオエンコーダ200は、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされることを示す第1の値(たとえば、1)を有するか、またはクロマQPマッピングテーブルがビットストリームにおいてシグナリングされないことを示す第2の値(たとえば、0)を有する、シンタックス要素を符号化し得る。ビデオエンコーダ200は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、適応パラメータセット(APS)、他のパラメータセット、ピクチャヘッダ、タイルグループヘッダ、スライスヘッダ、および/またはシンタックス要素をシグナリングするための他のデータ構造のうちの1つまたは複数において、そのようなシンタックス要素をシグナリングし得る。ビデオエンコーダ200が、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされることを示すシンタックス要素をシグナリングする場合、ビデオエンコーダ200はさらに、そのようなクロマQPマッピングテーブルを符号化し、シグナリングし得る。
[0135]一例として、ビデオエンコーダ200は、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされるか否かを示すchroma_qp_table_present_flagをAPSおよび/またはSPSにおいて符号化するように構成され得る。一例として、1に等しい値を有するchroma_qp_table_present_flagは、クロマQPマッピングテーブルがAPSにおいてシグナリングされることを指定する。0に等しい値を有するchroma_qp_table_present_flagは、クロマQPマッピングテーブルがAPSにおいてシグナリングされず、デフォルトクロマQPマッピングテーブル(たとえば、VVCドラフト5における表8-15)がクロマQP値を導出するために使用されることを指定する。
[0136]ビデオデコーダ300は、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされるかどうかを示すシンタックス要素を受信し、復号するように構成され得る。ビデオデコーダ300が、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされることをシンタックス要素が示すと決定した場合、ビデオデコーダ300は、そのようなクロマQPマッピングテーブルをも受信し、復号し得る。ビデオデコーダ300が、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされないことをシンタックス要素が示すと決定した場合、ビデオデコーダ300は、代わりに、デフォルトクロマQPマッピングテーブル(たとえば、VVCドラフト5における表8-15)および/または以前に受信されたクロマQPマッピングテーブルを使用し得る。
[0137]したがって、本開示の一例では、ビデオエンコーダ200は、1つまたは複数のクロマQPマッピングテーブルが符号化されたビデオビットストリームにおいて明示的にシグナリングされるかどうかを示すシンタックス要素をシグナリングするように構成され得る。同様に、逆の様式で、ビデオデコーダ300は、1つまたは複数のクロマQPマッピングテーブルが符号化されたビデオビットストリームにおいて明示的にシグナリングされるかどうかを示すシンタックス要素を受信するように構成され得る。このシンタックス要素に基づいて、ビデオデコーダ300は、クロマQPマッピングテーブルが受信され、復号されるべきであるかどうかを決定するように構成され得る。
[0138]本開示の別の例では、ビデオエンコーダ200は、符号化されたビデオビットストリームにおいて1つまたは複数のクロマQPマッピングテーブルをシグナリングし得る。ビデオエンコーダ200は、ビデオエンコーダ200が、クロマQPマッピングテーブルがビットストリームにおいてシグナリングされることを示すシンタックス要素をシグナリングするように構成されるか否かにかかわらず、クロマQPマッピングテーブルをシグナリングするように構成され得る。すなわち、いくつかの例では、ビデオエンコーダ200は、クロマQPマッピングテーブルがシグナリングされるか否かを示さないことがある。そうではなく、ビデオエンコーダ200は、あるレベルのシンタックス構造(たとえば、SPS、APSなど)においてクロマQPマッピングテーブルを常にシグナリングし得る。
[0139]したがって、本開示の一例では、ビデオエンコーダ200は、ルーマQP値および第1のクロマQPマッピングテーブルからビデオデータの第1のクロマブロックについての第1のクロマQP値を決定するように構成され得る。ビデオエンコーダ200は、第1のクロマQP値を使用してビデオデータの第1のクロマブロックを符号化し、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素をシグナリングし得る。逆の様式で、ビデオデコーダ300は、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素を受信し、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定し、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを復号し得る。
[0140]上記の例では、ビデオエンコーダ200は、特定のシンタックス構造(たとえば、SPS、APSなど)において少なくとも1つのクロマQPマッピングテーブルをシグナリングする。他の例では、ビデオエンコーダ200は、特定のシンタックス構造について複数のクロマQPマッピングテーブル(たとえば、複数のAPSの各々について1つのクロマQPマッピングテーブル)をシグナリングし、次いで、複数のクロマQPマッピングテーブルのうちのどれがブロック/タイル/スライス/ピクチャのために使用されるべきであるかを示すインデックス(たとえば、特定のAPSに対するID)をシグナリングし得る。たとえば、以下の実装例1において示されるように、ビデオエンコーダ200は、複数のAPSの各々においてchromaQP_table_dataをシグナリングし得、ここで、chromaQP_table_dataはクロマQPマッピングテーブルを指定する。ビデオエンコーダ200は、次いで、クロマQPマッピングテーブルをそれから取得すべきAPSを示すIDであるadaptation_parameter_set_idをシグナリングし得る。
[0141]本開示の一例では、ビデオエンコーダ200は、クロマQPマッピングテーブルをパラメトリック関数としてシグナリングし得る。特に、ビデオエンコーダ200は、パラメトリック関数のパラメータをシグナリングし得る。ビデオデコーダ300は、パラメータを受信し、クロマQPマッピングテーブルのパラメトリック関数を再構築し得る。
[0142]別の例では、ビデオエンコーダ200は、クロマQPマッピングテーブルを区分的線形モデルとしてシグナリングし得る。いくつかの例では、ビデオエンコーダ200は、区分的線形モデルの各線形区分(linear piece)に関連付けられたスケールおよびオフセットをシグナリングすることによって、区分的線形モデルをシグナリングし得る。他の例では、ビデオエンコーダ200は、区分的線形モデルの境界を指定するピボットポイントのセットをシグナリングし得る。ただし、区分的線形モデルをシグナリングするための任意の技法が使用され得る。本開示のコンテキストでは、区分的線形モデルの境界は、線形モデルの勾配が変化するモデルの位置を示す。したがって、ピボットポイントは、勾配変化の位置(たとえば、境界)である。
[0143]実装例1および実装例2において以下で示されるように、ビデオエンコーダ200は、区分的線形モデルの境界を指定するピボットポイントをシグナリングすることによって、クロマQPマッピングテーブルをシグナリングする。たとえば、ビデオエンコーダ200は、i番目のクロマQPマッピングテーブル中のピボットポイントの数(the number of pivot points)を示すシンタックス要素num_points_in_qp_table[i]をシグナリングし得る。次いで、各ピボットポイントについて、ビデオエンコーダ200は、delta_qp_in_val[i][j]およびdelta_qp_out_val[i][j]をシグナリングし得、ここで、delta_qp_in_val[i][j]は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの入力座標を導出するために使用されるデルタ値を指定し、delta_qp_out_val[i][j]は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの出力座標を導出するために使用されるデルタ値を指定する。
[0144]したがって、一例では、ビデオエンコーダ200は、クロマQPマッピングテーブルの区分的線形モデルの境界を指定するピボットポイントのセットをシグナリングするように構成され得る。ビデオデコーダ300は、区分的線形モデルの境界を指定する(1つまたは複数の)ピボットポイントのセットを受信するように構成され得る。ビデオデコーダ300は、次いで、(1つまたは複数の)受信されたピボットポイントからクロマQPマッピングテーブルを再構築し得る。
[0145]本開示の別の例では、ビデオエンコーダ200は、Cb成分およびCr成分のために同じクロマQPマッピングテーブルが使用されることを示すためのシンタックス要素をシグナリングし得る。すなわち、コロケートされたCbクロマブロックおよびCrクロマブロックについてのクロマQP値を決定するために、同じクロマQPマッピングテーブルが使用され得る。たとえば、シンタックス要素が1の値を有するとき、CbクロマブロックとCrクロマブロックの両方のために1つのクロマQPマッピングテーブルが使用される。シンタックス要素が0であるとき、ビデオエンコーダ200は、CbクロマブロックおよびCrクロマブロックのために別個のクロマQPマッピングテーブルをシグナリングするように構成され得る。
[0146]同様に、別の例では、ビデオエンコーダ200は、Cb成分、Cr成分、および/またはジョイントCbCr残差(joint CbCr residual)のために同じクロマQPマッピングテーブルが使用されることを示すためのシンタックス要素をシグナリングし得る。すなわち、コロケートされたCbクロマブロック、Crクロマブロック、および/またはジョイントCbCr残差についてのクロマQP値を決定するために、同じクロマQPマッピングテーブルが使用され得る。たとえば、シンタックス要素が1の値を有するとき、Cbクロマブロック、Crクロマブロック、および/またはジョイントCbCr残差のいずれかのために1つのクロマQPマッピングテーブルが使用される。シンタックス要素が0であるとき、ビデオエンコーダ200は、Cbクロマブロック、Crクロマブロック、および/またはジョイントCbCr残差のために別個のクロマQPマッピングテーブルをシグナリングするように構成され得る。
[0147]本開示の一例では、第1のクロマブロックがCbクロマブロックであり、第2のクロマブロックが、第1のクロマブロックとコロケートされたCrクロマブロックである。この例では、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されるかどうかを示すシンタックス要素を、ビデオエンコーダ200がシグナリングし得、ビデオデコーダ300が受信し得る。
[0148]一例では、シンタックス要素は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されることを示す。この例では、ビデオエンコーダ200は、単一のクロマQPマッピングテーブルをシグナリングし得る。ビデオデコーダ300は、第1のクロマブロック(たとえば、Crブロック)についての第1のクロマQP値を決定し得、対応するルーマQP値およびクロマQPマッピングテーブルから第2のクロマブロック(たとえば、コロケートされたCbブロック)についての第2のクロマQP値を決定し得る。
[0149]別の例では、シンタックス要素は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されないことを示す。この例では、ビデオデコーダ300は、第1のクロマブロック(たとえば、Cbブロック)のために、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルを受信し得、第2のクロマブロック(たとえば、Crブロック)のために、符号化されたビデオビットストリームにおいて、第2のクロマQPマッピングテーブルを受信し得る。ビデオデコーダ300は、次いで、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータのCbクロマブロックについての第1のクロマQP値を決定し、ルーマQP値および第2のクロマQPマッピングテーブルから、ビデオデータのCrクロマブロックについての第2のクロマQP値を決定し得る。
[0150]いくつかの例示的なビデオコーデックでは、Cb残差およびCr残差(たとえば、Cb成分のためのある残差ブロックおよびCr成分のための別の残差ブロック)に加えて、ビデオエンコーダ200およびビデオデコーダ300は、ジョイントコーディングおよび量子化された(jointly coded and quantized)Cb残差およびCr残差からビデオデータの1つまたは複数の残差ブロックを導出するように構成され得る。そのような残差は、ジョイントCbCr残差と呼ばれることがある。たとえば、1つのジョイント残差が、式(Cb_res+Cr_res)/2を使用してCbブロックの残差(Cb_res)とCrブロックの残差(Cr_res)とを平均化することによって取得され得る。別の例では、ジョイント残差は、式(Cb_res-Cr_res)/2を使用してCbブロックの残差とCrブロックの残差との間の平均化された差分から取得され得る。そのようなビデオコーデックでは、ビデオエンコーダ200は、各そのようなジョイント残差のためのクロマQPマッピングテーブルを定義し、シグナリングするように構成され得る。いくつかの例では、クロマQPマッピングテーブルが、すべてのジョイントCbCr残差のためにシグナリングされ得る。
[0151]いくつかの例では、ビデオエンコーダ200は、Cbおよび/またはCrブロックのための1つまたは複数のクロマQPマッピングテーブルが1つまたは複数のジョイント残差に適用され得ることをシグナリング/指定するように構成され得る。
[0152]いくつかの例では、ビデオエンコーダ200は、どの残差ブロック(Cb、Cr、ジョイントCbCrなど)が1つまたは複数のクロマQPマッピングテーブルを共有するかを指定するシンタックス要素(たとえば、インデックス値)をシグナリングするように構成され得る。たとえば、インデックス値が0に等しいとき、残差は同じクロマQPマッピングテーブルを共有しない。インデックス値が1に等しいとき、CbブロックとCrブロックとは同じクロマQPマッピングテーブルを共有するが、ジョイントCbCr残差ブロックは、別個のクロマQPマッピングテーブルを使用して復号され得る。
[0153]本開示の1つまたは複数の例では、クロマQPマッピングテーブルとして使用するための1つの可能な候補は、ビデオコーディング仕様においてデフォルトで定義されたクロマQPマッピングテーブル(たとえば、デフォルトクロマQPマッピングテーブル)である。この例では、ビデオエンコーダ200は、特定の残差タイプ(たとえば、Cb、Cr、ジョイントCbCr)について、デフォルトクロマQPマッピングテーブルが使用されるべきであること、または明示的にシグナリングされたクロマQPマッピングテーブルが使用されるべきであることを示すためのシンタックス要素をシグナリングするように構成され得る。
[0154]いくつかの例では、ビデオエンコーダ200は、N個のクロマQPマッピングテーブルをシグナリングするように構成され得る。たとえば、ビデオエンコーダ200は、N個のクロマQPマッピングテーブルのリストをシグナリングするように構成され得る。各クロマQPマッピングテーブルは、クロマQPマッピングテーブルの区分的線形マッピングを表すいくつかのピボットポイントによって定義され得る。各ピボットポイントについて、入力および出力QPがシグナリングされ得る。たとえば、実装例において以下で示されるように、ピボットポイントについての入力QP値は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの入力座標を導出するために使用されるデルタ値を指定するdelta_qp_in_val[i][j]によって定義され得る。ピボットポイントについての出力QP値は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの出力座標を導出するために使用されるデルタ値を指定するdelta_qp_out_val[i][j]によって定義され得る。特定の残差のために使用されるべき特定のクロマQPマッピングテーブルは、クロマQPマッピングテーブルのリストへのインデックスによって指定され得る。
[0155]他の例では、各残差タイプ(たとえば、Cb、Cr、ジョイントCbCr)について、ビデオエンコーダ200は、使用されるべきであるクロマQPマッピングテーブルを指定するためのインデックスをシグナリングするように構成され得る。
[0156]上記の例の任意の組合せでは、ビデオエンコーダ200は、1つまたは複数のパラメータセットにおいて、スライスヘッダにおいて、または符号化されたビデオビットストリームの他の部分において、1つまたは複数のクロマQPマッピングテーブルをシグナリングするように構成され得る。例示的なパラメータセットは、SPS、PPS、APS、VPS、デコーダパラメータセット(DPS)、または別のパラメータセットのうちの1つまたは複数を含む。パラメータセットに関連付けられたとき、クロマQPマッピングテーブルは、特定のパラメータセットに関連付けられたピクチャ中のすべてのサンプルに適用可能である。
[0157]本開示の別の例では、ビデオエンコーダ200は、ピクチャのための1つまたは複数の空間領域(たとえば、スライス、タイル、ブリック、関心領域など)を指定し得、ビデオエンコーダ200は、特定の指定された空間領域のための1つまたは複数のクロマQPマッピングテーブルをシグナリングし得る。
[0158]他の例では、ビデオエンコーダ200は、クロマQPマッピングテーブルを更新し、ビットストリーム、シーケンス、フレーム、ブロックまたはピクセルレベルにおいてシグナリングするように構成され得る。
[0159]クロマQPマッピングテーブルが空間領域に関連付けられた例では、ビデオエンコーダ200は、1つまたは複数のクロマQPマッピングテーブルをシグナリングし得、ビデオエンコーダ200は、クロマQPマッピングテーブルのリストへのインデックスを使用して、特定の領域のために使用されるべき特定のクロマQPマッピングテーブルを指定し得る。
[0160]本開示の他の例では、ビデオエンコーダ200は、クロマフォーマット、クロマサンプルロケーションタイプなど、他のクロマタイプのためのクロマQPマッピングテーブルを指定し、シグナリングするように構成され得る。クロマフォーマット(たとえば、chroma_format)が、クロマサブサンプリングフォーマットを示し得る。例は、モノクローム、4:4:0、4:2:2、4:4:4などを含む。クロマサンプルロケーションタイプ(たとえば、chroma_sample_location_type)が、様々なクロマフォーマットのためのルーマおよびクロマサンプルの相対ロケーションを示し得る。そのようなクロマQPマッピングテーブルは、規格において明示的に定義され、ビデオエンコーダ200とビデオデコーダ300の両方において記憶されるか、あるいは、本開示で開示される手段または他の方法によってビットストリームにおいてシグナリングされるかのいずれかであり得る。
[0161]本開示の別の例では、ビデオエンコーダ200は、クロマQPマッピングテーブルが関連付けられたクロマタイプを示すための1つまたは複数のシンタックス要素をシグナリングし得る。いくつかの事例では、マッピングテーブルが関連付けられたクロマタイプを示すために、2つ以上のシンタックス要素が使用され得る。たとえば、ビデオエンコーダ200は、chroma_format、chroma_sample_location_type、成分id(Cb、Cr)などのためのクロマQPマッピングテーブルをシグナリングし得る。
[0162]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、1つまたは複数のクロマQPマッピングテーブルをセットとして記憶するように構成され得る。ビデオエンコーダ200およびビデオデコーダ300は、セットにおける1つまたは複数のクロマQPマッピングテーブルを更新、追加、または除去し、クロマQPマッピングテーブルの動的セットを生じるようにさらに構成され得る。クロマQPマッピングテーブルを追加、更新、および/または除去するためのプロセスは、それぞれのシンタックス要素および/またはまたはシンタックス要素値によって指定され得る。クロマQPマッピングテーブルのセットから、ビデオデコーダ300は、現在ブロック/サンプル/領域に関連付けられたクロマQPマッピングテーブルのサブセットをブロック/サンプル/領域のためのマッピングテーブルリスト中に導出し得る。ビデオエンコーダ200は、使用されるべき特定のマッピングテーブルをシグナリングし得る。
[0163]いくつかの例では、クロマQPマッピングテーブルが適用されるクロマタイプを推論するために、SPSおよび/またはビデオユーザビリティ情報(VUI)シンタックスにおける1つまたは複数のシンタックス要素が使用され得る。
[0164]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ビデオデータをコーディングするために異なる色空間(たとえば、一定でないルミナンスY’CbCr、一定のルミナンスY’CbCr、ICtCp、RGbなど)を使用し得る。そのような例では、ビデオエンコーダ200は、別の色成分のQP値に依存することも依存しないこともある、特定の色成分についてのQP値を導出するための1つまたは複数のクロマQPマッピングテーブルを指定し得る。本開示で説明される1つまたは複数の方法は、そのような色空間のために適用可能であり得、方法および説明は、そのような適用例に相応に拡張され得る。
[0165]クロマQPを使用するビデオエンコーダ200およびビデオデコーダ300の1つまたは複数のビデオコーディングプロセスは、関連付けられたクロマQPマッピングテーブルを有し得る。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、クロマQPマッピングテーブルから計算され得るクロマQPを使用して様々なデブロッキングパラメータ/判断(decisions)を決定し得る。いくつかの例では、ビデオエンコーダ200は、クロマQPマッピングテーブルを別のビデオコーディングプロセス(たとえば、デブロッキング)に関連付ける追加の指示(たとえば、シンタックス要素)をシグナリングし得る。
[0166]いくつかの例では、1つまたは複数のクロマデブロッキングフィルタ処理決定またはフィルタ強度(強いフィルタ、弱いフィルタなど)は、1つまたは複数のシグナリングされたクロマQPマッピングテーブルに依存し得る。これらのテーブルは、1つの成分(ジョイントCbCrのCbまたはCr)または2つ以上の成分に適用され得る。ビデオエンコーダ200は、デブロッキング決定/フィルタ強度をクロマQPマッピングテーブルに関連付けるためのシンタックス要素をシグナリングし得るか、または、そのような関連付けは、あらかじめ決定された方法によって推論/導出され得る。
[0167]本開示の他の例では、ビデオエンコーダ200およびビデオデコーダ300は、高ダイナミックレンジ(HDR)および標準ダイナミックレンジ(SDR)ビデオシーケンスに別個のクロマQPマッピングテーブルを適用するように構成され得る。いくつかの例では、ビデオエンコーダ200は、クロマQPマッピングテーブルをビデオコンテンツのタイプ(たとえば、HDRコンテンツ、SDRコンテンツ、ビデオコンテンツの色域、ビデオコンテンツの原色など)に関連付ける追加の指示(たとえば、シンタックス要素)をシグナリングし得る。
[0168]本開示で説明される1つまたは複数の方法はまた、スライスヘッダ、PPS、およびビットストリームの他の部分における色成分に関連付けられたQPオフセット値など、ビットストリームにおいてシグナリングされる他のシンタックス要素に依存し得る。1つまたは複数のビデオコーディング決定は、1つまたは複数のシンタックス要素とともにクロマQPマッピングテーブルを使用し得る。たとえば、デブロッキングフィルタ決定は、クロマQPマッピングテーブルと、1つまたは複数の色成分に関連付けられた1つまたは複数のQPオフセットとに基づき得る。
[0169]本明細書で開示される1つまたは複数の方法は、さらに、クロマQPマッピングテーブルが適用されるサンプルの1つまたは複数の特性によって制約され得るたとえば、クロマQPマッピングテーブルがどのようにおよびいつ適用されるかを決定するために、ブロック形状、アスペクト比、使用される予測モード、隣接ブロックの特性、および(ピクチャ境界、タイル境界、スライス境界、ブリック境界などを含む、境界の近くのまたは境界から離れた)ピクチャに対するサンプルのロケーションが使用され得る。
[0170]上記で説明されたいくつかの方法は、ビデオエンコーダ200において、ビデオデコーダ300において、またはその両方において適用され得る。開示される方法の多くがクロマ成分のためのものであるが、本開示の技法はまた、ルーマのために、およびビデオデータを表すために使用され得る他の色空間における成分のために適用可能であり得る。
[0171]以前に説明されたビデオエンコーダ200およびビデオデコーダ300は、予測、残差導出および変換のプロセスによって作り出されたルーマブロックおよび関連付けられたクロマブロックを符号化または復号することを備えるブロックベースコーディング技法に関係する。以下の実装例は、HEVCなのかVVCなのか他のブロックベースビデオコーディング技法なのかにかかわらず、そのようなブロックベースビデオコーディング技法において使用するための量子化パラメータ値を決定するための様々な技法について説明する。
[0172]実装例1
[0173]いくつかの例では、クロマQPマッピングテーブルを含む、クロマQP依存性のシグナリングは、APSにおいてシグナリングされ得る。以下は、APSローバイトシーケンスペイロード(RBSP)シンタックスにおけるそのような通信の非限定的な例である。
[0174]
[0175]セマンティクス
1に等しいchroma_qp_table_present_flagは、クロマQPマッピングテーブルがAPSにおいてシグナリングされることを指定する。0に等しいchroma_qp_table_present_flagは、クロマQPマッピングテーブルがAPSにおいてシグナリングされず、表8-15がクロマQP値を導出するために使用されることを指定する。
1に等しいsame_qp_table_for_cb_crは、1つのクロマQPマッピングテーブルのみがシグナリングされ、Cb成分とCr成分の両方に適用されることを指定する。0に等しいsame_qp_table_for_cb_crは、2つのクロマQPマッピングテーブルがAPSにおいてシグナリングされることを指定する。
num_points_in_qp_table_minus2[i]+2は、クロマQPマッピングテーブルを表すために使用されるポイントの数を指定する。num_points_in_qp_table_minus1[i]の値は、両端値を含む、0~69+QpBdOffsetCの範囲内にあるものとする。
delta_qp_in_val[i][j]は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの入力座標を導出するために使用されるデルタ値を指定する。
delta_qp_out_val[i][j]+は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの出力座標を導出するために使用されるデルタ値を指定する。
[0176]各クロマQPテーブルについてのピボットポイントは、qpVal[ ]およびcQPTable[ ]によって示される。qpVal[j]およびcQPTable[j]は、クロマQPテーブル中のj番目のピボットポイントの2つの座標を指定する。ビデオエンコーダ200およびビデオデコーダ300は、delta_qp_in_val[ ][ ]およびdelta_qp_out_val[ ][ ]から、変数qpVal[ ]およびcQPTable[ ]をそれぞれ導出する。ビデオエンコーダ200およびビデオデコーダ300は、シンタックス要素delta_qp_in_val[ ][ ]およびdelta_qp_out_val[ ][ ]の値を-QpBdOffsetCに加算することによって第1のピボットポイントの値を算出し、-QpBdOffsetCは、特定のビット深度について可能にされる最低QP値である。QpBdOffsetCの値は、6*(bitDepthC-8)に等しく、ここで、bitDepthCは、対応するクロマ成分のビット深度である。8ビットを超えるビット深度の場合、QP値範囲は、より大きくなり、ビット深度に依存する。たとえば、QP値範囲は、両端値を含む、-QpBdOffsetC~69に等しく設定され得、ここで、QPBdOffsetの値はビット深度とともに増加する。
[0177]第1のピボットポイントが-QpBdOffset対応しない場合、ビデオエンコーダ200およびビデオデコーダ300は、1の均一な勾配を用いてパディングを実施し得る。たとえば、QpBdOffsetが12に等しく、qpVal[0]=4であり、cQPTable[0]=4である場合、-12~3の範囲内についてのChromaQpTable[i][k]の値は、それぞれ、-12~3に等しく設定される。同様に、最後のピボットポイントが最大QPの値(すなわち、この例では69)に対応しない場合、ビデオエンコーダ200およびビデオデコーダ300は、勾配1の関数によって、最後のピボットポイントを超えてQP値をパディングする。すべての中間QPでは、ピボットポイント間のQP値について、ビデオエンコーダ200およびビデオデコーダ300は、隣接するピボットポイントペア間の線形補間によってQP値を導出する。たとえば、2つのピボットポイントx1=qpVal[j]、x2=qpVal[j+1]、y1=cQpTable[j]、y2=cQPTable[j+1]がある場合、x1とx2との間のxの値について、ビデオエンコーダ200およびビデオデコーダ300は、2つのピボットポイント(x1,y1)および(x2,y2)間の線形補間によって、クロママッピングテーブルの値ChromaQpTable[i][x]を取得する。1つまたは複数の場所において、ビデオエンコーダ200およびビデオデコーダ300は、導出されたクロマQP値を有効なQP範囲(この例では、-QpBdOffsetC~69)にクリッピングし得る。
[0178]概して、ビデオデコーダ300は、1の勾配の関数を使用して、ピボットポイントのセットのうちの最低値ピボットポイントから最小QP値まで、クロマQPマッピングテーブルにQP値をパディングし、1の勾配の関数を使用して、ピボットポイントのセットのうちの最大値ピボットポイントから最大QP値まで、クロマQPマッピングテーブルにQP値をパディングするように構成され得る。
[0179]i=0..same_qp_table_for_cb_cr?0:1についてのi番目のクロマQPマッピングテーブルcQPTable[i]は、以下のように導出される。
[0180]same_qp_table_for_cb_crが1に等しいとき、ChromaQpTable[1][k]は、k=-QpBdOffsetC..69についてChromaQpTable[0][k]に等しく設定される。
[0181]さらに、クロマQP導出に対して以下の変更が行われる。
[0182]以下の制約が追加され得る。qpVal[i][j]の値は、j=1..num_points_in_qp_table[i]について値qpVal[i][j-1]よりも大きいものとする。
[0183]以下のテキストがVVCドラフト5から削除される。
[0184]- ChromaArrayTypeが1に等しい場合、変数qPCb、qPCrおよびqPCbCrは、それぞれ、qPiCb、qPiCrおよびqPiCbCrに等しいインデックスqPiに基づいて、表8-15において指定されるようにQpCの値に等しく設定される。
[0185]- そうでない場合、変数qPCb、qPCrおよびqPCbCrは、それぞれ、qPiCb、qPiCrおよびqPiCbCrに等しいインデックスqPiに基づいて、Min(qPi,63)に等しく設定される。
[0186]以下のテキストがVVCドラフト5に追加される。
[0187]- ChromaArrayTypeが1に等しい場合、以下が適用される。
- chroma_qp_table_present_flagが1に等しい場合、変数qPCbおよびqPCrは、それぞれChromaQpTable[0][qPiCb]およびChromaQpTable[1][qPiCr]に等しく設定される。
- そうでない場合(chroma_qp_table_present_flagが0に等しい)、変数qPCbおよびqPCrは、それぞれqPiCbおよびqPiCrに等しいインデックスqPiに基づいて、表8-15において指定されるようにQpCの値に等しく設定される。
- 変数qPCbCrは、qPiCbCrに等しいインデックスqPiに基づいて、表8-15において指定されるようにQpCの値に等しく設定される。
[0188]いくつかの例では、クロマQPマッピングテーブルのシグナリングはまた、他のパラメータセット(たとえば、SPS、PPSなど)において、またはスライスヘッダ/データシンタックス構造において存在し得る。
[0189]QPの1つまたは複数のデルタ値(delta_qp_in_Val、delta_qp_out_val)は、いくつかのシンタックス要素が0値をとることを可能にされないことがあることを示したために、minus1を伴って(たとえば、1の値を減算した後に)シグナリングされ得る。たとえば、いくつかのデルタ値は、値0をとることを可能にされないことがあり、「minus1」をもつシンタックス要素をシグナリングすることがより効率的である。より一般的には、シンタックス要素は「minusN」を伴ってシグナリングされ得、ここで、Nは、あらかじめ決定/シグナリングされ得る。
[0190]クロマQPマッピングテーブル中のピボットポイントの数は、少なくともしきい値Tに等しくなるように制約され得る。そのような場合、エンドポイントが推論され得、シンタックス要素num_points_in_qp_tableは、minusTを伴って(たとえば、値からTを減算した後に)シグナリングされ得る。
[0191]実装例2
[0192]本開示の別の例では、クロマQPマッピングテーブルをシグナリングすることの代替形態が提供される。この例では、クロマQPマッピングテーブルを含む、クロマQP依存性のシグナリングは、SPSにおいてシグナリングされる。以下は、SPSにおけるそのような通信の非限定的な例である。
[0193]
1に等しいchroma_qp_table_present_flagは、クロマQPマッピングテーブルがSPSにおいてシグナリングされることを指定する。0に等しいchroma_qp_table_present_flagは、クロマQPマッピングテーブルがSPSにおいてシグナリングされず、表8-16がクロマQP値を導出するために使用されることを指定する。
1に等しいsame_qp_table_for_chromaは、1つのクロマQPマッピングテーブルのみがシグナリングされ、Cb成分とCr成分の両方に適用されることを指定する。0に等しいsame_qp_table_for_chromaは、それぞれCbおよびCrのための2つのクロマQPマッピングテーブルがSPSにおいてシグナリングされることを指定する。
1に等しいglobal_offset_flagは、クロマQPマッピングテーブル中の第1のピボットポイントが少なくとも16の入力座標と少なくとも16の出力座標とを有することを指定する。0に等しいglobal_offset_flagは、クロマQPマッピングテーブル中の第1のピボットポイントに対する制限がないことを指定する。
num_points_in_qp_table_minus1[i]+1は、クロマQPマッピングテーブルを表すために使用されるポイントの数を指定する。num_points_in_qp_table_minus1[i]の値は、両端値を含む、0~57+QpBdOffsetC-(global_offset_flag==1?16:0)の範囲内にあるものとする。
delta_qp_in_val_minus1[i][j]+1は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの入力座標を導出するために使用されるデルタ値を指定する。
delta_qp_out_val[i][j]は、i番目のクロマQPマッピングテーブルのj番目のピボットポイントの出力座標を導出するために使用されるデルタ値を指定する。
[0194]i=0..same_qp_table_for_chroma?0:1についてのi番目のクロマQPマッピングテーブルChromaQpTable[i]は、以下のように導出される。
[0195]same_qp_table_for_chromaが1に等しいとき、ChromaQpTable[1][k]は、k=-QpBdOffsetC..57についてChromaQpTable[0][k]に等しく設定される。
[0196]qpInVal[i][j]およびqpOutval[i][j]の値が、i=0..same_qp_table_for_chroma?0:1およびj=0..num_points_in_qp_table_minus1[i]について、両端値を含む、-QpBdOffsetC~57の範囲内にあるものとすることが、ビットストリームコンフォーマンスの要件である。
[0197]表1は、MPEGエッセンシャルビデオコーディング(EVC)およびJVETの開発における使用のために定義されたいくつかのクロマQPマッピングテーブルの例についてのビット推定値を提供する。
[0198]*ビットの数は、ここでは、delta_qp_in_val_minus1およびdelta_qp_out_valのシグナリングに適用される。クロマQPマッピングテーブルに関連付けられた他のシンタックス要素は、本開示で説明されるすべての方法において同様であり、したがって、測定されなかった。
[0199]図4は、本開示の技法に従って現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは現在クロマブロックを備え得る。ビデオエンコーダ200(図1および図2)に関して説明されるが、他のデバイスが図4の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0200]本開示の一例では、ビデオエンコーダ200は、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定する(350)ように構成され得、第1のクロマQP値を使用してビデオデータの第1のクロマブロックを符号化し得る(352)。ビデオエンコーダ200は、ルーマQP値を決定し、ルーマQP値を使用してビデオデータの第1のクロマブロックに対応するビデオデータのルーマブロックを符号化するようにさらに構成され得る。ビデオエンコーダ200は、符号化されたビデオビットストリームにおいて、第1のクロマQPマッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素(たとえば、delta_qp_in_val[ ][ ]およびdelta_qp_out_val[ ][ ])をシグナリングする(354)ようにも構成され得る。
[0201]本開示の別の例では、第1のクロマブロックはCbクロマブロックであり、第2のクロマブロックが、コロケートされたCrクロマブロックである。この例では、ビデオエンコーダ200は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されるかどうかを示すシンタックス要素をシグナリングするようにさらに構成され得る。
[0202]一例では、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用される。この例では、ビデオエンコーダ200は、ルーマQP値および第1のクロマQPマッピングテーブルからビデオデータのCrクロマブロックについての第2のクロマQP値を決定するようにさらに構成される。別の例では、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されない。この例では、ビデオエンコーダ200は、ルーマQP値および第2のクロマQPマッピングテーブルから、ビデオデータのCrクロマブロックについての第2のクロマQP値を決定し、Crクロマブロックのための符号化されたビデオビットストリームにおいて、第2のクロマQPマッピングテーブルをシグナリングするように構成される。
[0203]一例では、同じクロマQPマッピングテーブルが、Cbクロマブロック、Crクロマブロック、およびジョイントCbCrクロマブロックの両方のために使用される。この例では、ビデオエンコーダ200は、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータのCrクロマブロックについての第2のクロマQP値を決定し、ルーマQPおよび第1のクロマQPマッピングテーブルから、ビデオデータのジョイントCbCrクロマブロックについての第3のクロマQP値を決定するようにさらに構成される。別の例では、同じクロマQPマッピングテーブルが、Cbクロマブロック、Crクロマブロック、およびジョイントCbCrクロマブロックのために使用されないことがある。この例では、ビデオエンコーダ200は、ルーマQP値および第2のクロマQPマッピングテーブルから、ビデオデータのCbクロマブロックについての第2のクロマQP値を決定し、Cbクロマブロックのための符号化されたビデオビットストリームにおいて、第2のクロマQPマッピングテーブルをシグナリングするように構成される。ビデオエンコーダ200は、ルーマQP値および第3のクロマQPマッピングテーブルから、ビデオデータのCrクロマブロックについての第3のクロマQP値を決定し、Crクロマブロックのために、符号化されたビデオビットストリームにおいて、第3のクロマQPマッピングテーブルをシグナリングするように構成される。
[0204]別の例では、同じクロマQPマッピングテーブルが、Cbクロマブロック、CrクロマブロックおよびジョイントCbCr残差の各々のために使用されない。この例では、ビデオエンコーダ200は、Crクロマブロックのために、符号化されたビデオビットストリームにおいて、第2のクロマQPマッピングテーブルをシグナリングし、ジョイントCbCr残差のために、符号化されたビデオビットストリームにおいて、第3のクロマQPマッピングテーブルをシグナリングするように構成され得る。
[0205]本開示の別の例では、ビデオデータの第1のクロマブロックはジョイントCbCr残差である。
[0206]本開示の別の例では、ビデオエンコーダ200は、シーケンスパラメータセット(SPS)においてクロマQPマッピングテーブルをシグナリングするように構成される。
[0207]本開示の別の例では、ビデオエンコーダ200は、1つまたは複数のクロママッピングテーブルが符号化されたビデオビットストリームにおいて明示的にシグナリングされるかどうかを示すシンタックス要素をシグナリングするように構成される。
[0208]図5は、本開示の技法に従ってビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在クロマブロックを備え得る。ビデオデコーダ300(図1および図3)に関して説明されるが、他のデバイスが図5の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0209]本開示の一例では、ビデオデコーダ300は、符号化されたビデオビットストリームにおいて、第1のクロマ量子化パラメータ(QP)マッピングテーブルのための区分的線形モデルを指定するピボットポイントのセットを記述するシンタックス要素(たとえば、delta_qp_in_val[ ][ ]およびdelta_qp_out_val[ ][ ])を受信する(370)ように構成され得る。ビデオデコーダ300は、ルーマQP値および第1のクロマQPマッピングテーブルから、ビデオデータの第1のクロマブロックについての第1のクロマQP値を決定し(372)、第1のクロマQP値を使用して、ビデオデータの第1のクロマブロックを復号する(374)ように構成され得る。ビデオデコーダ300は、ルーマQP値を決定し、ルーマQP値を使用して、ビデオデータの第1のクロマブロックに対応するビデオデータのルーマブロックを復号するようにさらに構成され得る。
[0210]本開示の一例では、ビデオデコーダ300は、1の勾配の関数を使用して、ピボットポイントのセットのうちの最低値ピボットポイントから最小QP値まで、第1のクロマQPマッピングテーブルにQP値をパディングし、1の勾配の関数を使用して、ピボットポイントのセットのうちの最大値ピボットポイントから最大QP値まで、第1のクロマQPマッピングテーブルにQP値をパディングするように構成され得る。
[0211]本開示の一例では、第1のクロマブロックはCbクロマブロックであり、第2のクロマブロックが、コロケートされたCrクロマブロックである。この例では、ビデオデコーダ300は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されるかどうかを示すシンタックス要素を受信するようにさらに構成され得る。
[0212]一例では、シンタックス要素は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されることを示す。この例では、ビデオデコーダ300は、ルーマQP値および第1のクロマQPマッピングテーブルからビデオデータのCrクロマブロックについての第2のクロマQP値を決定するようにさらに構成され得る。別の例では、シンタックス要素は、同じクロマQPマッピングテーブルがCbクロマブロックとCrクロマブロックの両方のために使用されないことを示す。この例では、ビデオデコーダ300は、Cbクロマブロックのための符号化されたビデオビットストリームにおける第2のクロマQPマッピングテーブルを受信し、ルーマQP値および第2のクロマQPマッピングテーブルからビデオデータのCbクロマブロックについての第2のクロマQP値を決定するようにさらに構成され得る。
[0213]別の例では、シンタックス要素は、同じクロマQPマッピングテーブルが、Cbクロマブロック、CrクロマブロックおよびジョイントCbCr残差の各々のために使用されないことを示す。この例では、ビデオデコーダ300は、Crクロマブロックのために、符号化されたビデオビットストリームにおいて、第2のクロマQPマッピングテーブルを受信し、ジョイントCbCr残差のために、符号化されたビデオビットストリームにおいて、第3のクロマQPマッピングテーブルを受信するように構成され得る。
[0214]別の例では、ビデオデータの第1のクロマブロックはジョイントCbCr残差である。
[0215]別の例では、ビデオデコーダ300は、シーケンスパラメータセット(SPS)においてクロマQPマッピングテーブルを受信するように構成され得る。
[0216]別の例では、ビデオデコーダ300は、1つまたは複数のクロママッピングテーブルが符号化されたビデオビットストリームにおいて明示的にシグナリングされるかどうかを示すシンタックス要素を受信するように構成され得る。
[0217]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0218]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0219]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0220]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
[0221]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0222]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。