[0018] ビデオコーディング技法において、ビデオエンコーダは、現在ブロックのサンプルと予測ブロックのサンプルとの間の差分を示す残差情報(residual information)(たとえば、残差値)を決定する。いくつかの場合には、ビデオエンコーダは、サンプルドメイン(ピクセルドメインとも呼ばれる)における残差情報(たとえば、残差値)のサンプル値を、周波数ドメインにおける係数値に変換する。いくつかの例では、係数値は、次いで、量子化され、ビットストリーム中にエントロピー符号化される。ビデオデコーダは、ビットストリームから、量子化された係数値を受信する。ビデオデコーダは、係数値を逆量子化し、逆量子化された係数値を逆変換して、残差値を生成する。ビデオデコーダは、予測ブロックに残差値を加算して、現在ブロックを再構築する。
[0019] いくつかの場合には、変換および/または量子化は、損失を伴うことがある。たとえば、残差値のいくつかは、変換および/または量子化ステップにおいて失われ得る。したがって、ビデオデコーダが生成する残差値は、ビデオエンコーダが生成する残差値と同等でないことがある。したがって、いくつかの場合には、ビデオデコーダによって再構築された現在ブロックは、ビデオエンコーダが符号化した元の現在ブロックと同等でないことがある。
[0020] 符号化プロセスにおいて何らかの損失があり得るが、ビデオデコーダによって再構築された現在ブロックは、視覚的品質の低減がほとんどからまったくないように、元の現在ブロックと十分同じになる傾向がある。しかしながら、いくつかの場合には、残差値の損失がほとんどからまったくないように(たとえば、ロッシービデオコーディング技法と比較して、ビデオエンコーダにおける残差値が、ビデオデコーダにおける残差値により類似しているように)、ロスレスビデオコーディングツールを含むことが望ましいことがある。
[0021] いくつかの場合には、ロスレスビデオコーディングでは、ビデオエンコーダは、特定のブロックのために変換ステップをスキップし得る。ビデオエンコーダは、特定のブロックのために変換がスキップされたことを示す情報(information)をシグナリングし得る。ビデオデコーダは、シグナリングされた情報に基づいて、変換がスキップされると決定し得る。いくつかの例では、ビデオデコーダは、変換がスキップされることを示す情報をビデオエンコーダがシグナリングすることなしに、ブロックのための変換がスキップされるかどうかを暗黙的に決定し得る。
[0022] 変換がスキップされるか否かにかかわらず、残差値はコーディングされ得る。変換係数コーディング(TRCC)および変換スキップ(TS)残差コーディング(TSRC)という、残差値がコーディングされ得る2つの例示的な方式がある。TRCCでは、ビデオエンコーダは、(たとえば、変換を介して)残差値から係数値を決定し、係数値を決定するために使用される情報をエントロピー符号化し得る。たとえば、ビデオエンコーダは、最後の有意係数値位置、有意性マップ(たとえば、どの係数値が0でないかを示す情報)、係数レベル(たとえば、どの係数値が、1よりも大きい、2よりも大きいなどの絶対値を有するかを示す情報)、および符号データ(たとえば、係数値が負であるか正であるか)などの情報を決定し得る。
[0023] TSRCは、TRCCとは異なり得る。TSRCでは、最後の有意係数の位置(the position of the last significant coefficient)のシグナリングがないことがある。TSRCでは、有意性マップ、係数レベル、および符号データなどの情報は、TRCCと同様であり得る。しかしながら、コンテキストモデリングおよび2値化、ならびにサンプルごとのコンテキストコード化ビンの数の限界は、TSRCでは、TRCCと比較して異なり得る。上記は、TSRCとTRCCとの間の差異および類似性についての少数の非限定的な例である。他の差異および他の類似性があり得る。また、TSRCとTRCCとの間の差異として識別されたものは、いくつかの場合には同じであり得、TSRCとTRCCとの間の類似性として識別されたものは、いくつかの場合には異なり得る。
[0024] いくつかの場合には、TSRCは、変換スキップされたブロックの残差コーディングのためにもっぱら使用され得る。しかしながら、変換スキップされたブロックにTRCCを使用することに利益があり得る。本開示では、ロスレスコーディング技法(たとえば、変換スキップ)が実装された場合にTSRCまたはTRCCが使用され得る仕方のための例示的な技法について説明する。このようにして、例示的な技法は、TRCCまたはTSRCが残差値に適用されることを可能にし、それにより、今度は、より良いビデオコーディングがもたらされ得ることによって、ビデオエンコーダとビデオデコーダとの動作を改善し得る。
[0025] 一例として、ビデオデコーダは、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプ(たとえば、TRCC)が適用されるかコーディング方式の第2のタイプ(たとえば、TSRC)が適用されるかを示すビデオデータの1つまたは複数のシンタックス要素を、ビデオビットストリームから受信し得る。説明されたように、残差値は、ブロックと予測ブロックとの間の差分を示し、変換スキップにおいて、残差値は、サンプルドメインから周波数ドメイン(変換ドメインとも呼ばれる)に変換されない。いくつかの例では、1つまたは複数のシンタックス要素を受信するために、ビデオデコーダは、変換スキップでコーディングされたスライス中のブロックの残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ(slice header)中のフラグ(flag)を受信し得る。
[0026] ビデオデコーダは、1つまたは複数のシンタックス要素に基づいて、残差値に適用すべきコーディング方式のタイプを決定し(たとえば、TRCCを使用すべきかTSRCを使用すべきかを決定し)、コーディング方式の決定されたタイプに基づいて残差値を決定し得る。たとえば、ビデオデコーダは、残差値を決定するためにTRCCが利用されるかTSRCが利用されるかに基づいて、最後の有意値位置(last significant value position)、有意性マップ(たとえば、どの値が0でないかを示す情報)、係数レベル(たとえば、どの値が、1よりも大きい、2よりも大きいなどの絶対値を有するかを示す情報)、符号データ(たとえば、値が負であるか正であるか)などの値をパース(parse)し得る。ビデオデコーダは、決定された残差値と予測ブロックとに基づいてブロックを再構築し得る(たとえば、ブロックを再構築するために、予測ブロックに残差値を加算し得る)。
[0027] ビデオエンコーダは、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差値を決定し得る。変換スキップにおいて、残差値は、サンプルドメインから周波数ドメイン(たとえば、変換ドメイン)に変換されない。
[0028] ビデオエンコーダは、残差値に適用するために、コーディング方式の第1のタイプ(たとえば、TRCC)とコーディング方式の第2のタイプ(たとえば、TSRC)との間でコーディング方式のタイプを決定し、コーディング方式の決定されたタイプに基づいて残差値を符号化し得る。たとえば、ビデオエンコーダは、残差値を決定するためにTRCCが利用されるかTSRCが利用されるかに基づいて、最後の有意値位置、有意性マップ(たとえば、どの値が0でないかを示す情報)、係数レベル(たとえば、どの値が、1よりも大きい、2よりも大きいなどの絶対値を有するかを示す情報)、符号データ(たとえば、値が負であるか正であるか)などの値をシグナリングし得る。
[0029] ビデオエンコーダは、ビデオビットストリーム中に、残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すビデオデータの1つまたは複数のシンタックス要素をシグナリングし得る。いくつかの例では、1つまたは複数のシンタックス要素をシグナリングするために、ビデオエンコーダは、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中のフラグをシグナリングし得る。
[0030] 図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための何らかのデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0031] 図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化ビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0032] 図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、ロスレスコーディングおよびシグナリングのための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0033] 図1に示されているシステム100は一例にすぎない。概して、どんなデジタルビデオ符号化および/または復号デバイスも、ロスレスコーディングおよびシグナリングのための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコード化ビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示では、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実施するデバイスとして参照する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダとビデオデコーダとの例を表す。いくつかの例では、ソースデバイス102と宛先デバイス116とは、ソースデバイス102と宛先デバイス116との各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス102と宛先デバイス116との間の一方向または双方向ビデオ送信をサポートし得る。
[0034] 概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化ビデオデータをコンピュータ可読媒体110上に出力し得る。
[0035] ソースデバイス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つまたは複数のビデオバッファとして割り振られ得る。
[0036] コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化ビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0037] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化ビデオデータを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化ビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114から、記憶されたビデオデータにアクセスし得る。
[0038] ファイルサーバ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ストリーミングプロトコルを実装し得る。
[0039] 宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通してファイルサーバ114から符号化ビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すかまたは受信するための上記で論じられた様々なプロトコルのうちの1つまたは複数、あるいはメディアデータを取り出すための他のそのようなプロトコルに従って動作するように構成され得る。
[0040] 出力インターフェース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デバイスを含み得る。
[0041] 本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0042] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。符号化ビデオビットストリームは、ビデオビットストリーム中に、ビデオブロックまたは他のコード化ユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義される情報をシグナリングすることを含み得る。ディスプレイデバイス118は、復号ビデオデータの復号ピクチャをユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
[0043] 図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0044] ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話機などのワイヤレス通信デバイスを備え得る。
[0045] ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれの拡張に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266など、他のプロプライエタリまたは業界規格に従って動作し得る。VVC規格のドラフトは、Brossら、「Versatile Video Coding (Draft 6)」、ITU-T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11とのジョイントビデオエキスパーツチーム(JVET)、第15回会合:ヨーテボリ、SE、2019年7月3~12日、JVET-O2001-vE(以下、「VVCドラフト6」)に記載されている。VVC規格のより最近のドラフトは、Brossら、「Versatile Video Coding (Draft 10)」、ITU-T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11とのジョイントビデオエキスパーツチーム(JVET)、第18回会合:遠隔会議による、2020年6月22日~7月1日、JVET-S2001-vA(以下、「VVCドラフト10」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0046] 概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を一般に意味する。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマット付きデータをYUV表現にコンバートし、ビデオデコーダ300は、YUV表現をRGBフォーマットにコンバートする。代替的に、前処理および後処理ユニット(図示されず)が、これらのコンバージョンを実施し得る。
[0047] 本開示では、概して、ピクチャのコーディング(たとえば、符号化および復号)を、ピクチャのデータを符号化または復号するプロセスを含むように参照し得る。同様に、本開示では、ピクチャのブロックのコーディングを、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように参照し得る。符号化ビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成しているシンタックス要素の値をコーディングすることとして理解されたい。
[0048] 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は、イントラモードインジケーションなどのイントラ予測情報を含む。
[0049] 別の例として、ビデオエンコーダ200とビデオデコーダ300とは、VVCに従って動作するように構成され得る。VVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、クワッドツリー区分に従って区分される第1のレベル、およびバイナリツリー区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
[0050] MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)(ターナリツリー(TT)とも呼ばれる)区分とを使用して区分され得る。トリプルまたはターナリツリー区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、トリプルまたはターナリツリー区分は、中心を通して元のブロックを分けることなしにブロックを3つのサブブロックに分ける。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称的または非対称的であり得る。
[0051] いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0052] ビデオエンコーダ200とビデオデコーダ300とは、HEVCに従うクワッドツリー区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0053] ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な仕方でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域を参照し得る。タイルは、ピクチャ中の特定のタイル列と特定のタイル行との内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を参照する。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を参照する。
[0054] いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
[0055] ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
[0056] 本開示では、たとえば、16×16サンプルまたは16掛ける16のサンプルなど、垂直寸法と水平寸法とに関して、(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を参照するために「N×N(NxN)」と「N掛けるN(N by N)」とを互換的に使用し得る。一般に、16×16CUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×N CUは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0057] ビデオエンコーダ200は、予測および/または残差情報(たとえば、残差値)、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報(すなわち、残差値)は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0058] CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0059] いくつかの例では、VVCはまた、インター予測モードと考えられ得る、アフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0060] イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。いくつかの例では、VVCは、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上方、上方および左側、または左側にあり得る。
[0061] ビデオエンコーダ200は、現在ブロックについての予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
[0062] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプルドメインではなく変換ドメイン中に変換データを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST)、信号依存変換、カルーネンレーベ変換(KLT)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を生成する。
[0063] いくつかの例では、残差データ(たとえば、残差値)の変換は、スキップされ得る。たとえば、ロスレスビデオコーディング技法が適用される場合、変換はスキップされ得る。そのような例では、符号化されているブロックは、変換スキップされたブロック、変換スキップブロック、または変換スキップでコーディングされたブロックと呼ばれることがある。
[0064] 上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実施し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減させるために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に切り捨て得、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実施し得る。いくつかの例では、量子化ステップはバイパスされ得る。
[0065] 量子化に続いて、ビデオエンコーダ200は、変換係数(または変換がスキップされる場合は残差サンプル値)を走査して、変換がスキップされ量子化がスキップされる量子化変換係数または残差サンプル値、あるいは変換はスキップされるが量子化は実施される残差量子化サンプル値を含む2次元行列から1次元ベクトルを生成し得る。変換係数の走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。
[0066] 量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。変換および/または量子化がスキップされる例では、ビデオエンコーダ200は、残差サンプル値または残差量子化サンプル値の1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化ビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
[0067] CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0068] ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0069] このようにして、ビデオエンコーダ200は、符号化ビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差値を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化ビデオデータを復号し得る。
[0070] 概して、ビデオデコーダ300は、ビットストリームの符号化ビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差値をさらに定義し得る。
[0071] 残差値は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。しかしながら、ビデオエンコーダ200によって変換および/または量子化が適用されない場合、ビデオデコーダ300は、逆量子化および/または逆変換ステップをバイパスし得る。たとえば、復号された値は、逆量子化および/または逆変換する必要のない残差値であり得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関係する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、(サンプルごとに)予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生し得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
[0072] 本開示の技法によれば、ビデオエンコーダ200とビデオデコーダ300とは、変換スキップされたブロックのために(すなわち、変換スキップでコーディングされたブロックのために)異なるコーディング方式を利用するように構成され得る。たとえば、ロスレス固有のツールを追加することなしに、VVCにおいてロスレスコーディングをサポートすることが望ましいことがある。少なくとも2つの残差コーディング方式があり得る。第1の残差コーディング方式は、変換係数コーディング(TRCC)と呼ばれ、第2の残差コーディング方式は、変換スキップ(TS)残差コーディング(TSRC)と呼ばれる。
[0073] TRCC方式およびTSRC方式は、残差値を表す異なる仕方であり得る。TRCCとTSRCの両方において、ビデオエンコーダ200は、残差ブロック中の残差値が有意である(たとえば、絶対値が0よりも大きい)かどうかを決定し、残差値がしきい値(threshold value)よりも大きいかどうかを決定し得る。たとえば、ビデオエンコーダ200は、残差ブロック中の残差値が、1よりも大きいか、3よりも大きいか、5よりも大きいかなどを決定し得る。ビデオエンコーダ200は、ビデオデコーダ300が残差値を決定するために利用する複数のフラグをシグナリングし得る。たとえば、ビデオエンコーダ200が、残差値が有意であることを示す第1のフラグ(first flag)と、残差値が1よりも大きいことを示す第2のフラグ(second flag)とをシグナリングしたが、残差値が2よりも小さいことを示す第3のフラグをシグナリングしなかった場合、ビデオデコーダ300は、残差値が1よりも大きく、2よりも小さいと決定し得る。
[0074] しかしながら、TRCC方式とTSRC方式との間には差異があり得る。TRCCでは、ビデオエンコーダ200は、最後の有意係数値の位置を示す情報をシグナリングし得、この情報を、ビデオデコーダ300は、最後の有意値(last significant value)の位置に後続するすべての値が0であると決定するために利用し得る。しかしながら、TSRC方式では、変換がスキップされた場合、残差ブロック中の最後のロケーションを含む、残差ブロック内のどんなロケーションにも有意値があることが可能であるので、最後の有意値がないことがある。
[0075] 別の例として、TRCC方式では、残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数(a number of flags)は、TSRC方式において残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数とは異なる。たとえば、TRCC方式は、残差値が3よりも大きいかどうかを示すフラグを含むが、残差値が5よりも大きいかどうかを示すフラグを含まないことがある。しかしながら、TSRC方式では、残差値が5よりも大きいかどうかを示すフラグと、残差値が7よりも大きいかどうかを示すフラグと、残差値が9よりも大きいかどうかを示すフラグとがあり得る。
[0076] また別の例として、TRCC方式では、残差ブロックの走査順序は、最後から最初へ、すなわち、最後の残差値から最初の残差値へであり得る。しかしながら、TSRC方式では、残差ブロックの走査順序は、第1の残差値から最後の残差値へであり得る。
[0077] したがって、TRCC方式およびTSRC方式は、残差値に適用されるコーディング方式の異なるタイプである。より詳細に説明されるように、いくつかの例では、ビデオエンコーダ200は、変換スキップでコーディングされたすべてのブロックのためにTSRC方式を利用し、TRCC方式は、変換スキップでコーディングされたブロックのために利用可能でなかった。しかしながら、TRCC方式が、変換スキップでコーディングされたブロックに使用されることを可能にすることに、利益があり得る。
[0078] そのような場合、ビデオエンコーダ200は、コーディング方式の第1のタイプ(たとえば、TRCC方式)が適用されるかコーディング方式の第2のタイプ(たとえば、TSRC方式)が適用されるかを示す、ビデオデコーダ300が受信する情報をシグナリングし得る。そのようなシグナリングは、変換スキップが有効にされた場合にのみ存在し得る。たとえば、ビデオデコーダ300は、最初に、変換スキップが有効にされるかどうかを決定し、変換スキップが有効にされることに基づいて、コーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中のフラグをパースし得る。すなわち、変換スキップが有効にされる場合、ビデオデコーダ300は、コーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中のフラグをパースし得る。しかしながら、変換スキップが有効にされない場合、ビデオデコーダ300は、コーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中のフラグをパースしなくてよい。
[0079] ロスレスコーディングは、変換演算のスキップを必要とし得る(たとえば、ビデオエンコーダ200は、係数値を用いた周波数ドメインへの残差値の変換をバイパスし、ビデオデコーダ300は、残差値がすでにサンプルドメイン中にあるので、逆変換演算をバイパスする)。いくつかの例では、ビデオエンコーダ200は、ブロックのために(たとえば、変換スキップされたブロックのために)変換がスキップされることを示すTSコーディングフラグをシグナリングし得る。TSコーディングフラグは、多重変換選択(MTS)インデックスの一部としてシグナリングされ得る。いくつかの例では、TSコーディングフラグを明示的にシグナリングするのではなく、ビデオデコーダ300は、ブロックベースの量子化残差ドメインデルタパルスコード変調(BDPCM)モードが選択された場合、ブロックが、変換スキップされたブロック(たとえば、変換スキップでコーディングされたブロック)であると暗黙的に決定し得る。いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、TSRCを、変換スキップされたブロックのための残差コーディング方式として利用し得る。
[0080] いくつかの例では、変換スキップブロックのためにTRCCならびにBDPCMを使用することが望ましいことがある。既存の低レベルシグナリングが使用されるべきである場合、SPS、PPS、ピクチャヘッダ、またはスライスヘッダ中のフラグは、変換がスキップされるときに使用されるべき残差コーディング技法を示すために使用され得る。すなわち、ビデオエンコーダ200は、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプ(たとえば、TRCC)が適用されるかコーディング方式の第2のタイプ(たとえば、TSRC)が適用されるかを示すスライスヘッダ中のフラグをシグナリングし得、ビデオデコーダ300は、このフラグを受信し得る。このようにして、VVCドラフト6の(たとえば、変換がバイパスされる場合の)TSコーディング経路の変更は不要になり得、TSRCまたはTRCCが使用され得る。しかしながら、本開示で説明される技法は、TSコーディング経路への変更が行われる場合にも利用され得る。
[0081] 本開示では、変換がスキップされるときに使用されるべき係数(残差)コーディング技法(たとえば、TRCCまたはTSRC)を選択するために、SPS、PPS、ピクチャヘッダまたはスライスヘッダ中に1つまたは複数のシンタックス要素(たとえば、フラグ)を追加するための技法について説明する。1つまたは複数のシンタックス要素(たとえば、フラグ)は、TSブロック(たとえば、変換スキップでコーディングされたブロック)のためにTSRCが使用されるかTRCCが使用されるかを示し得る。いくつかの例では、シグナリングされた方法は、変換スキップされたブロックの量子化パラメータ(QP:quantization parameter)が4以下である場合のみ(すなわち、ロスレス)、効力を生じ得る。
[0082] たとえば、VVCドラフト10は、sh_ts_residual_coding_disabled_flagを含む。sh_ts_residual_coding_disabled_flagは、スライスヘッダ中でシグナリングされ、変換スキップでコーディングされたブロックのためにTSRCが使用されるかTRCCが使用されるかを示すために本開示で説明されるフラグの一例である。たとえば、sh_ts_residual_coding_disabled_flagが真(たとえば、論理1)である場合、それは、TSRCが無効にされ、TRCCが使用されることを意味する。sh_ts_residual_coding_disabled_flagが偽(たとえば、論理0)である場合、それは、TSRCが無効にされず、TSRCが使用されることと、TRCCが使用されないこととを意味する。
[0083] VVCドラフト10は、sh_ts_residual_coding_disabled_flagを次のように定義する。1に等しいsh_ts_residual_coding_disabled_flagは、residual_coding()シンタックス構造が、現在スライスの変換スキップブロックの残差サンプルをパースするために使用されることを指定する。0に等しいsh_ts_residual_coding_disabled_flagは、residual_ts_coding()シンタックス構造が、現在スライスの変換スキップブロックの残差サンプルをパースするために使用されることを指定する。sh_ts_residual_coding_disabled_flagが存在しないとき、それは0に等しいと推論される。VVCドラフト10において、residual_coding()シンタックス構造は、TRCC方式を指し、residual_ts_coding()シンタックス構造は、TSRC方式を指す。
[0084] VVCドラフト10のセクション7.3.7(スライスヘッダシンタックス)に記載されているように、sh_ts_residual_coding_disabled_flagシンタックス要素は、変換スキップが有効にされた場合のみシグナリングされる。たとえば、VVCドラフト10では、ビデオエンコーダ200は、ブロックのために変換スキップが有効にされるか否かを示すsps_transform_skip_enabled_flagをシグナリングし得る。ビデオデコーダ300は、sps_transform_skip_enabled_flagを受信し、sps_transform_skip_enabled_flagが真である場合のみ(たとえば、変換スキップが有効にされる場合のみ)、sh_ts_residual_coding_disabled_flagをパースし得る。
[0085] したがって、1つまたは複数の例では、ビデオデコーダ300は、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプ(たとえば、TRCC)が適用されるかコーディング方式の第2のタイプ(たとえば、TSRC)が適用されるかを示すビデオデータの1つまたは複数のシンタックス要素(たとえば、sh_ts_residual_coding_disabled_flag)を、ビデオビットストリームから受信し得る。残差値は、ブロックと予測ブロックとの間の差分を示し、変換スキップにおいて、残差値は、サンプルドメインから周波数ドメインに変換されない(たとえば、DCTまたはDST演算はスキップされる)。いくつかの例では、ビデオデコーダ300は、スライスヘッダ中でsh_ts_residual_coding_disabled_flagを受信し得る。
[0086] 1つまたは複数の例では、ビデオデコーダ300は、変換スキップが有効にされるかどうかを示す第1のフラグ(たとえば、sps_transform_skip_enabled_flag)を受信し得る。1つまたは複数のシンタックス要素を受信するために、ビデオデコーダ300は、変換スキップが有効にされることを示す第1のフラグに基づいてコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中の第2のフラグ(たとえば、sh_ts_residual_coding_disabled_flag)をパースし得る。たとえば、第1のフラグ(たとえば、sps_transform_skip_enabled_flag)が真である場合、ビデオデコーダ300は、第2のフラグ(たとえば、sh_ts_residual_coding_disabled_flag)のみをパースし得る。第1のフラグが偽である場合、ビデオデコーダ300は、第2のフラグをパースしなくてよい。
[0087] ビデオデコーダ300は、1つまたは複数のシンタックス要素に基づいて、残差値に適用すべきコーディング方式のタイプを決定し得る。たとえば、ビデオデコーダ300は、sh_ts_residual_coding_disabled_flagが真である場合、TRCCを使用することを決定し、sh_ts_residual_coding_disabled_flagが偽である場合、TSRCを使用することを決定し得る。
[0088] ビデオデコーダ300は、コーディング方式の決定されたタイプに基づいて残差値を決定し得る。ブロックが変換スキップでコーディングされたので、ビデオデコーダ300は、残差値に逆変換(inverse transform)を適用することなしに残差値を決定し得る。たとえば、残差値はすでにサンプルドメイン中にあり、したがって、周波数ドメインからサンプルドメインへの逆変換への逆変換は不要であり得る。
[0089] ビデオデコーダ300は、決定された残差値と予測ブロックとに基づいてブロックを再構築し得る。たとえば、ビデオデコーダ300は、ブロックを再構築するために、決定された残差値に予測ブロックを加算し得る。
[0090] 1つまたは複数の例では、ビデオエンコーダ200は、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差値を決定し得る。説明されたように、変換スキップにおいて、残差値は、サンプルドメインから周波数ドメインに変換されない。
[0091] ビデオエンコーダ200は、残差値に適用するために、コーディング方式の第1のタイプ(たとえばTRCC)とコーディング方式の第2のタイプ(たとえば、TSRC)との間でコーディング方式のタイプを決定し得る。ビデオエンコーダ200は、コーディング方式の決定されたタイプに基づいて残差値を符号化し、ビデオビットストリーム中に、残差値にコーディング方式の第1のタイプ(たとえば、TRCC)が適用されるかコーディング方式の第2のタイプ(たとえば、TSRC)が適用されるかを示すビデオデータの1つまたは複数のシンタックス要素(たとえば、スライスヘッダ中のsh_ts_residual_coding_disabled_flag)をシグナリングし得る。
[0092] いくつかの例では、TSRCは、(ブロック中の最後の非0係数位置がブロックの最後の位置になると仮定して)最後の非0位置(すなわち、最後の有意係数の位置)のコーディングをスキップするTRCC方式と交換され得る。加えて、ビデオエンコーダ200とビデオデコーダ300とは、(HEVC Rext)におけるようにコーディングされるべき係数を(たとえば、180度)回転させ得る。そのような例では、変換スキップの場合のために使用されるべきコーディング方式をシグナリングすることは不要であり得る。たとえば、既存のシグナリングは、変換スキップ経路が、最後の位置をシグナリングすることと、コーディングされるべきブロックを潜在的に回転させることとを伴わないでTRCC方式を使用するはずであるので、ロスレスコーディングを達成するために使用され得る。
[0093] 本開示では、概して、シンタックス要素など、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。概して、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るようになど、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0094] 図2Aと図2Bとは、例示的なクワッドツリーバイナリツリー(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線はクワッドツリー分割を表し、点線はバイナリツリー分割を表す。バイナリツリーの各分割(すなわち、非リーフ)ノードでは、どの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平分割を示し、1は垂直分割を示す。クワッドツリー分割では、クワッドツリーノードが、ブロックを、等しいサイズをもつ4つのサブブロックに水平および垂直に分割するので、分割タイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(分割情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(分割情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0095] 概して、図2BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル中のCTU132のサイズを表す)CTUサイズと、最小クワッドツリーサイズ(最小許容クワッドツリーリーフノードサイズを表すMinQTSize)と、最大バイナリツリーサイズ(最大許容バイナリツリールートノードサイズを表すMaxBTSize)と、最大バイナリツリー深度(最大許容バイナリツリー深度を表すMaxBTDepth)と、最小バイナリツリーサイズ(最小許容バイナリツリーリーフノードサイズを表すMinBTSize)とを含み得る。
[0096] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、それらの各々は、クワッドツリー区分に従って区分され得る。すなわち、第1のレベルのノードは、(子ノードを有しない)リーフノードであるか、あるいは4つの子ノードを有する。QTBT構造130の例は、ブランチのために実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードが最大許容バイナリツリールートノードサイズ(MaxBTSize)よりも大きくない場合、ノードは、それぞれのバイナリツリーによってさらに区分され得る。1つのノードのバイナリツリー分割は、分割から生じるノードが最小許容バイナリツリーリーフノードサイズ(MinBTSize)または最大許容バイナリツリー深度(MaxBTDepth)に達するまで反復され得る。QTBT構造130の例は、ブランチのために破線を有するようなノードを表す。バイナリツリーリーフノードはコーディングユニット(CU)と呼ばれ、CUは、どんなさらなる区分もない予測(たとえば、ピクチャ内またはピクチャ間予測)ならびに変換のために使用される。上記で論じられたように、CUは「ビデオブロック」または「ブロック」と呼ばれることもある。
[0097] QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、(幅と高さの両方について)MinBTSizeは4として設定され、MaxBTDepthは4として設定される。クワッドツリー区分は、クワッドツリーリーフノードを生成するために、最初にCTUに適用される。クワッドツリーリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)のサイズを有し得る。リーフクワッドツリーノードが128×128である場合、リーフクワッドツリーノードは、サイズがMaxBTSize(すなわち、この例では、64×64)を超えるので、バイナリツリーによってさらに分割されない。そうでない場合、リーフクワッドツリーノードは、バイナリツリーによってさらに区分される。したがって、クワッドツリーリーフノードはまた、バイナリツリーのルートノードであり、0としてのバイナリツリー深度を有する。バイナリツリー深度がMaxBTDepth(この例では4)に達したとき、さらなる分割は許可されない。バイナリツリーノードがMinBTSize(この例では4)に等しい幅を有するとき、それは、さらなる水平分割が許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有するバイナリツリーノードは、さらなる垂直分割がそのバイナリツリーノードのために許可されないことを暗示する。上述されたように、バイナリツリーのリーフノードは、CUと呼ばれ、さらなる区分なしに予測および変換に従ってさらに処理される。
[0098] 図3は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図3は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものと考えられるべきではない。説明の目的で、本開示では、H.265ビデオコーディング規格(HEVCとも呼ばれる)およびH.266ビデオコーディング規格(VVCとも呼ばれる)などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般的にビデオ符号化および復号に適用可能である。
[0099] 図3の例では、ビデオエンコーダ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は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0100] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用する参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0101] 本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのビデオデータ)を記憶する参照メモリとして理解されたい。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
[0102] 図3の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0103] ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示されず)が、そのような命令を記憶し得る。
[0104] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204とモード選択ユニット202とに提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0105] モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0106] モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せについての得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUの予測モード、CUの残差データの変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを選択し得る。
[0107] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、1つまたは複数のCTUをスライス内にカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
[0108] 概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUとTUとの重複する部分)についての予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコード化ピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0109] 動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてデータを取り出し、たとえば、サンプルごとの平均化または加重平均化を通して、取り出されたデータを組み合わせ得る。
[0110] 別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、隣接サンプルの値を概して数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0111] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の非コード化バージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックの残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
[0112] モード選択ユニット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サイズの非対称的区分をサポートし得る。
[0113] モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0114] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなど、他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックの予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0115] 上記で説明されたように、残差生成ユニット204は、現在ブロックと、対応する予測ブロックとについて、ビデオデータを受信する。残差生成ユニット204は、次いで、現在ブロックの残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0116] 変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、1次変換および2次変換、たとえば回転変換を残差ブロックに実施し得る。いくつかの例では、変換処理ユニット206は、変換を残差ブロックに適用しない。
[0117] 量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失を導入することがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0118] 破線で図3に示されているように、いくつかの例では、変換処理ユニット206と量子化ユニット208との一方または両方がバイパスされ得る。たとえば、モード選択ユニット202は、ブロックが変換スキップモードで符号化されるべきであると決定し得る。変換スキップされたブロックのために、変換処理ユニット206の動作はバイパスされ得、量子化ユニット208の動作はバイパスされ得る。
[0119] 逆量子化ユニット210と逆変換処理ユニット212とは、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化と逆変換とを適用し得る。1つまたは複数の変換および量子化がスキップされる例では、逆量子化ユニット210と逆変換処理ユニット212との動作は、破線で示されているように、同様にスキップされ得る。
[0120] 再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(ある程度のひずみを潜在的にもっているものの)現在ブロックに対応する再構築されたブロックを生成し得る。たとえば、再構築ユニット214は、再構築されたブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
[0121] フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。いくつかの例では、フィルタユニット216の動作はスキップされてよい。
[0122] ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例において、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築されたブロックを使用し得る。
[0123] 概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報、またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0124] いくつかの例では、変換が実施される場合、エントロピー符号化ユニット220は、変換係数コーディング(TRCC)と呼ばれる第1のコーディング方式を使用するように構成され得る。変換がスキップされる場合、エントロピー符号化ユニット220は、変換スキップ残差コーディング(TSRC)と呼ばれる第2のコーディング方式を使用するように構成され得る。しかしながら、本開示で説明される例では、変換スキップされたブロックのためにさえ(たとえば、変換がスキップされる場合)、TRCCが利用される時間があり得る。
[0125] TRCCとTSRCとの間には様々な差異があり得る。一例として、TRCC方式では、最後の有意値の位置を示す情報がシグナリングされる。TSRC方式では、最後の有意値の位置を示す情報はシグナリングされない。TRCC方式では、残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグ(たとえば、1よりも大きい、3よりも大きいなどのフラグ)の数は、TSRC方式において残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数とは異なる。別の例として、TRCCおよびTSRCにおける残差ブロックの走査順序は、異なり得る(たとえば、TRCCは、最後の残差値から最初の残差値への走査順序であり、TSRCは、最初の残差値から最後の残差値への走査順序である)。
[0126] 残差生成ユニット204は、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差情報(たとえば、残差値)を決定し得る。モード選択ユニット202は、残差情報に適用すべきコーディング方式のタイプを決定し得る(たとえば、コーディング方式のタイプは、TRCCまたはTSRCのうちの1つである)。エントロピー符号化ユニット220は、コーディング方式の決定されたタイプに基づいて残差情報を符号化し得る。エントロピー符号化ユニット220はまた、ビデオビットストリーム中に、コーディング方式のタイプを示す1つまたは複数のシンタックス要素(たとえば、sh_ts_residual_coding_disabled_flag)をシグナリングし得る。いくつかの例では、エントロピー符号化ユニット220は、しきい値(たとえば、4)以下である量子化ユニット208の量子化パラメータ(QP)に基づいて、1つまたは複数のシンタックス要素をシグナリングし得る。
[0127] 別の例として、残差生成ユニット204は、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差情報を決定し得る。エントロピー符号化ユニット220は、最後の非0位置のコーディングをスキップするTRCC方式に基づいて、残差情報を符号化し得る。エントロピー符号化ユニット220は、符号化された残差情報をシグナリングし得る。いくつかの例では、エントロピー符号化ユニット220は、残差情報の回転バージョンに対してそれの動作を実施し得る。また、いくつかの例では、エントロピー符号化ユニット220は、TRCC方式が利用されるという情報をシグナリングするのを回避し得る(たとえば、シグナリングしない)。
[0128] 上記の例示的な技法では、エントロピー符号化ユニット220に関して説明されたが、これらの例示的な技法は、そのように限定すると考えられるべきではない。いくつかの例では、モード選択ユニット202、またはモード選択ユニット202と組み合わせたエントロピー符号化ユニット220は、例示的な技法を実施するように構成され得る。その上、いくつかの例では、ビデオエンコーダ200のユニットの様々な組合せは、例示的な技法を実施するように構成され得る。概して、ビデオエンコーダ200は、本開示で説明される例示的な技法を実施するように構成され得る。
[0129] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220は、ビットストリームを出力し得る。
[0130] 上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されたい。上記で説明されたように、いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、CUのルーマ成分とクロマ成分とである。いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、PUのルーマ成分とクロマ成分とである。
[0131] いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。そうではなく、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてよく、参照ピクチャは同じであってよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックについて同じであってよい。
[0132] 図4は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。図4は、説明の目的で提供されており、本開示において広く例示され、説明される技法に対する限定ではない。説明の目的で、本開示では、VVCと、HEVCとの技法に従ってビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実施され得る。
[0133] 図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサ中にあるいは処理回路中に実装され得る。たとえば、ビデオデコーダ300のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
[0134] 予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0135] 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の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0136] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上記で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0137] 図4に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図3と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
[0138] ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行されるソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0139] エントロピー復号ユニット302は、CPBから符号化ビデオデータを受信し、ビデオデータをエントロピー復号してシンタックス要素を再生し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0140] 概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
[0141] エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モードインジケーションなどの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連するQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
[0142] 逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連する残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用し得る。
[0143] 破線で図4に示されているように、いくつかの例では、逆量子化ユニット306と逆変換処理ユニット308との一方または両方がバイパスされ得る。たとえば、予測処理ユニット304は、ブロックが変換スキップモードでコーディングされるという情報を受信し得る。予測処理ユニット304は、次いで、逆変換処理ユニット308の動作をバイパスさせ、いくつかの例では、逆量子化ユニット306の動作をバイパスさせ得る。
[0144] 1つまたは複数の例では、予測処理ユニット304は、変換スキップでコーディングされたブロックの残差情報に適用されるコーディング方式のタイプを示す(たとえば、コーディング方式のタイプは、TRCC方式またはTSRC方式のうちの1つであり得る)1つまたは複数のシンタックス要素(たとえば、スライスヘッダ中のsh_ts_residual_coding_disabled_flag)を受信し得る。上記で説明されたように、TRCCとTSRCとの間には様々な差異があり得る。一例として、TRCC方式では、最後の有意値の位置を示す情報がパースされる。TSRC方式では、最後の有意値の位置を示す情報はパースされない。TRCC方式では、残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグ(たとえば、1よりも大きい、3よりも大きいなどのフラグ)の数は、TSRC方式において残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数とは異なる。別の例として、TRCCおよびTSRCにおける残差ブロックの走査順序は、異なり得る(たとえば、TRCCは、最後の残差値から最初の残差値への走査順序であり、TSRCは、最初の残差値から最後の残差値への走査順序である)。
[0145] 残差値は、ブロックと予測ブロックとの間の差分を示す。予測処理ユニット304は、コーディング方式のタイプに基づいて残差値を決定し得る。いくつかの例では、予測処理ユニット304は、しきい値(たとえば、4)以下である量子化パラメータ(QP)に基づいて、1つまたは複数のシンタックス要素を受信し得る。
[0146] 別の例として、予測処理ユニット304は、変換スキップでコーディングされたブロックの残差情報を決定し得、ここで、残差情報を決定することは、最後の非0位置のコーディングをスキップする変換係数コーディング(TRCC)方式を利用して残差情報を決定することを含む。いくつかの例では、予測処理ユニット304は、ブロックを再構築することより前に、決定された残差情報を回転させ得る。予測処理ユニット304は、TRCC方式が利用されるべきであるという情報を受信することなしにTRCC方式を利用して残差情報を決定し得る。
[0147] 上記の例示的な技法では予測処理ユニット304に関して説明されたが、これらの例示的な技法は、そのように限定すると考えられるべきではない。いくつかの例では、エントロピー復号ユニット302、または予測処理ユニット304と組み合わせたエントロピー復号ユニット302は、例示的な技法を実施するように構成され得る。その上、いくつかの例では、ビデオデコーダ300のユニットの様々な組合せは、例示的な技法を実施するように構成され得る。概して、ビデオデコーダ300は、本開示で説明される例示的な技法を実施するように構成され得る。
[0148] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対して参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図3)に関して説明されたのと実質的に同様である様式でインター予測プロセスを実施し得る。
[0149] 別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図3)に関して説明されたのと実質的に同様である様式でイントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
[0150] 再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0151] フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、すべての例において必ずしも実施されるとは限らない。
[0152] ビデオデコーダ300は、再構築されたブロックをDPB314に記憶し得る。たとえば、フィルタユニット312の動作が実施されない例において、再構築ユニット310は、再構築されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実施される例では、フィルタユニット312は、フィルタ処理された再構築されたブロックをDPB314に記憶し得る。上記で論じられたように、DPB314は、イントラ予測のための現在ピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなど、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号ピクチャ(たとえば、復号ビデオ)を、後続のプレゼンテーションのために、図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。たとえば、ディスプレイデバイス118は、再構築されたブロックを含むピクチャを表示し得る。
[0153] 図5は、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオエンコーダ200(図1および図3)の処理回路に関して説明されるが、他のデバイスが図5の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0154] ビデオエンコーダ200の処理回路は、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差値を決定し得る(350)。変換スキップにおいて、残差値は、サンプルドメインから周波数ドメインに変換されない。たとえば、変換処理ユニット206の動作はバイパスされ得る。
[0155] ビデオエンコーダ200の処理回路は、残差値に適用するために、コーディング方式の第1のタイプとコーディング方式の第2のタイプとの間でコーディング方式のタイプを決定し得る(352)。一例として、コーディング方式の第1のタイプは、変換係数コーディング(TRCC)方式であり、コーディング方式の第2のタイプは、変換スキップ残差コーディング(TSRC)方式である。ビデオエンコーダ200は、どのコーディング方式がビデオ圧縮とのバランスがとれた良好なビデオ品質を提供するかを示すレートひずみ分析に基づいて、コーディング方式のタイプを決定し得る。
[0156] TRCC方式では、最後の有意値の位置を示す情報はシグナリングされるが、TSRC方式では、最後の有意値の位置を示す情報はシグナリングされない。TRCC方式では、残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグ(たとえば、1よりも大きい、3よりも大きいなどのフラグ)の数は、TSRC方式において残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数とは異なる。TRCCおよびTSRCにおける残差ブロックの走査順序は、異なり得る(たとえば、TRCCは、最後の残差値から最初の残差値への走査順序であり、TSRCは、最初の残差値から最後の残差値への走査順序である)。上記は、TRCCおよびTSRCが異なるコーディング方式であるいくつかの例示的な仕方であり、例示的な仕方は、網羅的であると考えられるべきではない、またはすべての場合において要求されるべきではない。
[0157] ビデオエンコーダ200の処理回路は、コーディング方式の決定されたタイプに基づいて残差値を符号化し得る(354)。たとえば、TSRCが、コーディング方式の決定されたタイプである場合、処理回路は、最後の有意値の位置をシグナリングしなくてよく、TSRCに従ってしきい値よりも大きいフラグをシグナリングし得、最初から最後へと走査し得る。TRCCが、コーディング方式の決定されたタイプである場合、処理回路は、最後の有意値の位置をシグナリングし得、TRCCに従ってしきい値よりも大きいフラグをシグナリングし得、最後から最初へと走査し得る。
[0158] ビデオエンコーダ200の処理回路は、ビデオビットストリーム中に、残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示す1つまたは複数のシンタックス要素をシグナリングし得る(356)。たとえば、処理回路は、残差値にTRCC方式が適用されるかTSRC方式が適用されるかを示すために、スライスヘッダ中でsh_ts_residual_coding_disabled_flagをシグナリングし得る。
[0159] 図6は、区分ツリータイプに従って区分される残差ブロックを有するデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオデコーダ300(図1および図4)の処理回路に関して説明されるが、他のデバイスが図6の方法と同様の方法を実施するように構成され得ることを理解されたい。
[0160] ビデオデコーダ300の処理回路は、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すビデオデータの1つまたは複数のシンタックス要素を、ビデオビットストリームから受信し得る(370)。残差値は、ブロックと予測ブロックとの間の差分を示し、変換スキップにおいて、残差値は、サンプルドメインから周波数ドメインに変換されない。すなわち、残差値は、すでにサンプルドメイン中にある。
[0161] 一例として、1つまたは複数のシンタックス要素を受信するために、ビデオデコーダ300の処理回路は、変換スキップでコーディングされたブロックの残差値にコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中のフラグ(たとえば、sh_ts_residual_coding_disabled_flag)を受信し得る。いくつかの例では、ビデオデコーダ300の処理回路は、変換スキップが有効にされるかどうかを示す第1のフラグ(たとえば、sps_transform_skip_enabled_flag)を受信し得る。1つまたは複数のシンタックス要素を受信するために、ビデオデコーダ300の処理回路は、変換スキップが有効にされることを示す第1のフラグに基づいてコーディング方式の第1のタイプが適用されるかコーディング方式の第2のタイプが適用されるかを示すスライスヘッダ中の第2のフラグ(たとえば、sh_ts_residual_coding_disabled_flag)をパースし得る。
[0162] いくつかの例では、コーディング方式の第1のタイプは、変換係数コーディング(TRCC)方式であり、コーディング方式の第2のタイプは、変換スキップ残差コーディング(TSRC)方式である。TRCC方式では、最後の有意値の位置を示す情報はパースされるが、TSRC方式では、最後の有意値の位置を示す情報はパースされない。TRCC方式では、残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグ(たとえば、1よりも大きい、3よりも大きいなどのフラグ)の数は、TSRC方式において残差値のうちの残差値がしきい値よりも大きいかどうかを示すフラグの数とは異なる。TRCCおよびTSRCにおける残差ブロックの走査順序は、異なり得る(たとえば、TRCCは、最後の残差値から最初の残差値への走査順序であり、TSRCは、最初の残差値から最後の残差値への走査順序である)。
[0163] ビデオデコーダ300の処理回路は、1つまたは複数のシンタックス要素に基づいて、残差値に適用すべきコーディング方式のタイプを決定し得る(372)。たとえば、sh_ts_residual_coding_disabled_flagが真である場合、ビデオデコーダ300の処理回路は、TRCCが有効にされると決定し得る。sh_ts_residual_coding_disabled_flagが偽である場合、ビデオデコーダ300の処理回路は、TSRCが有効にされると決定し得る。
[0164] ビデオデコーダ300の処理回路は、コーディング方式の決定されたタイプに基づいて残差値を決定し得る(374)。たとえば、TSRCが、コーディング方式の決定されたタイプである場合、処理回路は、最後の有意値の位置をパースしなくてよく、TSRCに従ってしきい値よりも大きいフラグをパースし得、最初から最後へと走査し得る。TRCCが、コーディング方式の決定されたタイプである場合、処理回路は、最後の有意値の位置をパースし得、TRCCに従ってしきい値よりも大きいフラグをパースし得、最後から最初へと走査し得る。また、ブロックが変換スキップでコーディングされたので、残差値を決定するために、ビデオデコーダ300の処理回路は、残差値に逆変換を適用することなしに残差値を決定し得る。
[0165] ビデオデコーダ300の処理回路は、決定された残差値と予測ブロックとに基づいてブロックを再構築し得る(376)。ビデオデコーダ300の処理回路は、ブロックを再構築するために、予測ブロックに残差値を加算し得る。
[0166] 以下は、別々にまたは組合せで実施され得る1つまたは複数の例示的な技法である。
[0167] 例1。ビデオデータを復号する方法であって、変換スキップでコーディングされたブロックの残差情報に適用されるコーディング方式のタイプを示す1つまたは複数のシンタックス要素を受信することと、ここにおいて、残差情報が、ブロックと予測ブロックとの間の差分を示す、コーディング方式のタイプに基づいて残差情報を決定することと、決定された残差情報と予測ブロックとに基づいてブロックを再構築することとを備える、方法。
[0168] 例2。ビデオデータを符号化する方法であって、変換スキップでコーディングされるべきであるブロックと予測ブロックとの間の差分に基づいて残差情報を決定することと、残差情報に適用すべきコーディング方式のタイプを決定することと、コーディング方式の決定されたタイプに基づいて残差情報を符号化することと、コーディング方式のタイプを示す1つまたは複数のシンタックス要素をシグナリングすることとを備える、方法。
[0169] 例3。コーディング方式のタイプが、変換係数コーディング(TRCC)方式または変換スキップ残差コーディング(TSRC)のうちの1つを備える、例1および2のいずれかの方法。
[0170] 例4。残差情報を決定することが、残差情報に変換または逆変換を適用することなしに残差情報を決定することを備える、例1~3のいずれかの方法。
[0171] 例5。1つまたは複数のシンタックス要素を受信することが、しきい値以下である量子化パラメータ(QP)に基づいて1つまたは複数のシンタックス要素を受信することを備える、例1、3、および4のいずれかの方法。
[0172] 例6。コーディング方式のタイプを示す1つまたは複数のシンタックス要素をシグナリングすることが、しきい値以下である量子化パラメータ(QP)に基づいて1つまたは複数のシンタックス要素をシグナリングすることを備える、例2~4のいずれかの方法。
[0173] 例7。しきい値が4である、例5および6のいずれかの方法。
[0174] 例8。ビデオデータを復号する方法であって、変換スキップでコーディングされたブロックの残差情報を決定することと、ここにおいて、残差情報を決定することが、最後の非0位置のコーディングをスキップする変換係数コーディング(TRCC)方式を利用して残差情報を決定することを備え、およびここにおいて、残差情報が、ブロックと予測ブロックとの間の差分を示す、残差情報と予測ブロックとに基づいてブロックを再構築することとを備える、方法。
[0175] 例9。ビデオデータを符号化する方法であって、変換スキップでコーディングされたブロックの残差情報を決定することと、ここにおいて、残差情報が、ブロックと予測ブロックとの間の差分を示す、最後の非0位置のコーディングをスキップする変換係数コーディング(TRCC)方式に基づいて残差情報を符号化することと、符号化された残差情報をシグナリングすることとを備える、方法。
[0176] 例10。ブロックを再構築することより前に、決定された残差情報を回転させることをさらに備える、例9の方法。
[0177] 例11。残差情報を符号化することより前に、残差情報を回転させることをさらに備える、例9の方法。
[0178] 例12。回転させることが、180度だけ回転させることを備える、例8および9のいずれかの方法。
[0179] 例13。TRCC方式を利用して残差情報を決定することは、TRCC方式が利用されるべきであるという情報を受信することなしにTRCC方式を利用して残差情報を決定することを備える、例8、10、および12のいずれかの方法。
[0180] 例14。TRCC方式が利用されるという情報のシグナリングを回避することをさらに備える、例9、11、および12のいずれかの方法。
[0181] 例15。例1、3~5、7、8、10、12、および13のいずれか1つまたは組合せを備える方法。
[0182] 例16。例2~4、6、7、9、11、12、および14のいずれか1つまたは組合せを備える方法。
[0183] 例17。ビデオデータを復号するためのデバイスであって、ビデオデータを記憶するように構成されたメモリと、例15の方法を実施するように構成された処理回路とを備える、デバイス。
[0184] 例18。ビデオデータを符号化するためのデバイスであって、ビデオデータを記憶するように構成されたメモリと、例16の方法を実施するように構成された処理回路とを備える、デバイス。
[0185] 例19。復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例17および18のいずれかのデバイス。
[0186] 例20。デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、セットトップボックス、またはワイヤレス通信デバイスのうちの1つまたは複数を備える、例17~19のいずれかのデバイス。
[0187] 例21。処理回路がビデオデコーダを備える、例17、19、および20のいずれかのデバイス。
[0188] 例22。処理回路がビデオエンコーダを備える、例18~20のいずれかのデバイス。
[0189] 例23。実行されたとき、1つまたは複数のプロセッサに、例15または16のいずれかの方法を実施させる命令を記憶したコンピュータ可読記憶媒体。
[0190] 例24。ビデオデータをコーディングするためのデバイスであって、例15または16のいずれかの方法を実施するための手段を備える、デバイス。
[0191] 上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0192] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0193] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0194] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」および「処理回路」という用語は、前述の構造、または本明細書において説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
[0195] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。そうではなく、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0196] 様々な例について説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。