[0028] ビデオコーディング(たとえば、ビデオ符号化および/またはビデオ復号)は、一般に、同じピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること(たとえば、イントラ予測)または異なるピクチャ中のビデオデータのすでにコーディングされたブロックからビデオデータのブロックを予測すること(たとえば、インター予測)のいずれかを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、ビデオデータの予測ブロックと元のブロックとの間の差分を表す。残差データをシグナリングするために必要とされるビット数を低減するために、ビデオエンコーダは、残差データを変換および量子化し、変換および量子化された残差データを符号化ビットストリーム中でシグナリングする。変換および量子化プロセスによって達成される圧縮は、変換および量子化プロセスが復号ビデオデータにひずみを導入し得ることを意味する、ロッシーであり得る。
[0029] ビデオデコーダは、予測ブロック単独でよりもぴったり元のビデオブロックに一致する再構築ビデオブロック(reconstructed video block)を生成するために、残差データを復号し、予測ブロックに加算する。残差データの変換および量子化によって導入されるロスにより、再構築ブロック(reconstructed block)は、ひずみまたはアーティファクトを有し得る。アーティファクトまたはひずみの1つの通例のタイプはブロッキネス(blockiness)と呼ばれ、ここで、ビデオデータをコーディングするために使用されるブロックの境界が視認できる。
[0030] 復号ビデオの品質をさらに改善するために、ビデオデコーダは、再構築ビデオブロックに対して1つまたは複数のフィルタ処理演算(filtering operation)を実施することができる。これらのフィルタ処理演算の例は、デブロッキングフィルタ処理、サンプル適応オフセット(SAO:sample adaptive offset)フィルタ処理、および適応ループフィルタ処理(ALF:adaptive loop filtering)を含む。これらのフィルタ処理演算のためのパラメータは、ビデオエンコーダによって決定され、符号化ビデオビットストリーム中で明示的にシグナリングされるか、またはパラメータが符号化ビデオビットストリーム中で明示的にシグナリングされる必要なしにビデオデコーダによって暗黙的に決定されるかのいずれかであり得る。
[0031] 上記で紹介されたように、ビデオエンコーダは、変換係数を生成するために、残差データを変換する。それらの変換係数はさらに量子化され得る。本開示では、変換係数、または係数という用語は、量子化された変換係数または量子化されていない変換係数のいずれかを指し得る。本開示は、変換係数、たとえば、量子化された変換係数の値をビデオエンコーダからビデオデコーダにシグナリングするための技法について説明する。より詳細には、本開示は、ビットのバイナリ表現を、一連の非バイナリ値の量子化された変換係数にコンバートするエントロピー復号プロセスに関係する技法について説明する。概してエントロピー復号の逆プロセスである、対応するエントロピー符号化プロセスについても本開示において説明される。
[0032] 一例では、本開示は、係数のブロックのための係数レベルの残りの絶対値をコーディングするためのコード、たとえば、ゴロムライスコード(Golomb-Rice code)または指数ゴロムコード(Exponential-Golomb code)を定義するために使用されるライスパラメータを決定するための技法について説明し、ここで、1よりも大きい係数レベル、および2よりも大きい係数レベルなどの有意係数(significant coefficient)の他のインジケーションをコーディングするためにコンテキスト適応型バイナリ算術コーディング(CABAC)が使用される。係数レベルは、ロッシーコーディングの場合、変換係数のレベルであるか、あるいは変換スキップモード(transform skip mode)におけるロスレスコーディング(lossless coding)またはロッシーコーディングの場合、変換がそれに適用されない係数(すなわち、残差ピクセル値)のレベルであり得る。以下でより詳細に説明されるように、係数レベルは、係数レベルの絶対値または係数レベルの残存レベル(remaining level)のいずれかであり得る。
[0033] ライスパラメータは、ゴロムコードのファミリー、たとえば、ゴロムライスコードまたは指数ゴロムコードからコードワードセットを選択するために使用される調節可能な値である。ライスパラメータによって定義されるコードは、変換ユニット(TU:transform unit)または係数グループ(CG)、すなわち、係数のブロック中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングするために使用され得る。CGの各々は、ビデオデータの4×4変換ブロック(transform block)、または変換ブロックの4×4サブブロックであり得る。CGは、ロッシーコーディングの場合、変換係数を含むか、あるいは変換スキップモードにおけるロスレスコーディングまたはロッシーコーディングの場合、変換がそれに適用されない係数を含み得る。
[0034] 本開示は、ライスパラメータに基づいてゼロパラメータの値を決定するための技法についてさらに説明する。ゼロパラメータは、0の係数レベルに対応するビットストリーム値を表す。係数レベルが0である確率が比較的低い場合、より短いコードワードが非0値のために使用され得るように、より長いコードワードまたはビットストリーム値は0の係数レベルに割り当てられ得る。本開示の技法は、係数レベルのコーディングにおいてビットが節約され得るように、ゼロパラメータの選択を改善することによってビデオ圧縮を改善し得る。
[0035] 本開示の技法は、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)など、既存のビデオコーデックのいずれかに適用され得るか、または現在開発中であるかもしくはまたは他の将来ビデオコーディング規格のための汎用ビデオコーディング(VVC:Versatile Video Coding)など、新しいビデオコーディング規格のための有望なコーディングツールとして提案され得る。
[0036] 図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための何らかのデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータ(video metadata)を含み得る。
[0037] 図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化ビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
[0038] 図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、本明細書において説明される係数コーディングのための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0039] 図1に示されているシステム100は一例にすぎない。概して、どんなデジタルビデオ符号化および/または復号デバイスも、本明細書において説明される係数コーディングのための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコード化ビデオデータを生成するようなコーディングデバイス(coding device)の例にすぎない。本開示は、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実施するデバイスとして参照する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダとビデオデコーダとの例を表す。いくつかの例では、ソースデバイス102と宛先デバイス116とは、ソースデバイス102と宛先デバイス116との各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス102と宛先デバイス116との間の一方向または双方向ビデオ送信をサポートし得る。
[0040] 概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化ビデオデータをコンピュータ可読媒体110上に出力し得る。
[0041] ソースデバイス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つまたは複数のビデオバッファとして割り振られ得る。
[0042] コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化ビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0043] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化データを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112から符号化データにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0044] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化ビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化ビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114から、記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通してファイルサーバ114から符号化ビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバ114と入力インターフェース122とは、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0045] 出力インターフェース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デバイスを含み得る。
[0046] 本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0047] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。符号化ビデオビットストリームは、ビデオブロックまたは他のコード化ユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号ビデオデータの復号ピクチャ(decoded picture)をユーザに表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
[0048] 図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0049] ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、両者のいずれかがそれぞれのデバイス中に複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話機などのワイヤレス通信デバイスを備え得る。
[0050] ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれの拡張に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは、共同探査テストモデル(JEM:Joint Exploration Test Model)、または汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266など、他のプロプライエタリ(proprietary)または業界規格に従って動作し得る。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」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0051] 概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を一般に意味する。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマット付きデータをYUV表現にコンバートし、ビデオデコーダ300は、YUV表現をRGBフォーマットにコンバートする。代替的に、前処理および後処理ユニット(図示されず)が、これらのコンバージョンを実施し得る。
[0052] 本開示は、概して、ピクチャのコーディング(たとえば、符号化および復号)を、ピクチャのデータを符号化または復号するプロセスを含むように参照し得る。同様に、本開示は、ピクチャのブロックのコーディングを、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように参照し得る。符号化ビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの参照は、概して、ピクチャまたはブロックを形成しているシンタックス要素の値をコーディングすることとして理解されたい。
[0053] HEVCは、コーディングユニット(CU)、予測ユニット(PU:prediction unit)および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダ(video coder)は、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない正方形に区分し、クワッドツリーの各ノードは、0個または4個のいずれかの子ノードを有する。子ノードなしのノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUならびに/あるいは1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
[0054] 別の例として、ビデオエンコーダ200とビデオデコーダ300とは、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT:Multi-Type Tree)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、クワッドツリー区分に従って区分される第1のレベル、およびバイナリツリー区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
[0055] MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)(ターナリツリー(TT)とも呼ばれる)区分とを使用して区分され得る。トリプルまたはターナリツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルまたはターナリツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称的または非対称的であり得る。
[0056] いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0057] ビデオエンコーダ200とビデオデコーダ300とは、HEVCごとのクワッドツリー区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0058] ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な仕方でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域を参照し得る。タイルは、ピクチャ中の特定のタイル列と特定のタイル行との内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を参照する。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を参照する。
[0059] いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルとは呼ばれないことがある。
[0060] ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
[0061] 本開示では、たとえば、16×16サンプルまたは16個ずつの16個のサンプルなど、垂直寸法と水平寸法とに関して、(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を参照するために「N×N」と「N個ずつのN個の」とを互換的に使用し得る。一般に、16×16CUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×N CUは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0062] ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0063] CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0064] JEMとVVCとのいくつかの例はまた、インター予測モードと考えられ得る、アフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0065] イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。JEMとVVCとのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上方、上方および左側、または左側にあり得る。
[0066] ビデオエンコーダ200は、現在ブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP:advanced motion vector prediction)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
[0067] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロック(residual block)などの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を生成する。
[0068] 上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実施し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減させるために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に切り捨て得、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実施し得る。
[0069] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化ビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
[0070] CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0071] ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0072] このようにして、ビデオエンコーダ200は、符号化ビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化ビデオデータを復号し得る。
[0073] 概して、ビデオデコーダ300は、ビットストリームの符号化ビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
[0074] 残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関係する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、(サンプルごとに)予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生し得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
[0075] 本開示は、概して、シンタックス要素など、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。概して、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るように、リアルタイムでなくビットストリームを宛先デバイス116に移送し得る。
[0076] 図2Aと図2Bとは、例示的なクワッドツリーバイナリツリー(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線はクワッドツリースプリッティングを表し、点線はバイナリツリースプリッティングを示す。バイナリツリーの各スプリット(すなわち、非リーフ)ノードでは、どのスプリッティングタイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平スプリッティングを示し、1は垂直スプリッティングを示す。クワッドツリースプリッティングでは、クワッドツリーノードが、ブロックを、等しいサイズをもつ4つのサブブロックに水平および垂直にスプリットするので、スプリッティングタイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(スプリッティング情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(スプリッティング情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0077] 概して、図2BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル中のCTU132のサイズを表す)CTUサイズと、(最小許容クワッドツリーリーフノードサイズを表すMinQTSize)最小クワッドツリーサイズと、(最大許容バイナリツリールートノードサイズを表すMaxBTSize)最大バイナリツリーサイズと、(最大許容バイナリツリー深度を表すMaxBTDepth)最大バイナリツリー深度と、(最小許容バイナリツリーリーフノードサイズを表すMinBTSize)最小バイナリツリーサイズとを含み得る。
[0078] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、それらの各々は、クワッドツリー区分に従って区分され得る。すなわち、第1のレベルのノードは、リーフノードである(子ノードを有しない)か、あるいは4つの子ノードを有する。QTBT構造130の例は、ブランチのために実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードが最大許容バイナリツリールートノードサイズ(MaxBTSize)よりも大きくない場合、ノードは、それぞれのバイナリツリーによってさらに区分され得る。1つのノードのバイナリツリースプリッティングは、スプリットから生じるノードが最小許容バイナリツリーリーフノードサイズ(MinBTSize)または最大許容バイナリツリー深度(MaxBTDepth)に達するまで反復され得る。QTBT構造130の例は、ブランチのために破線を有するようなノードを表す。バイナリツリーリーフノードはコーディングユニット(CU)と呼ばれ、CUは、どんなさらなる区分もない、予測(たとえば、ピクチャ内またはピクチャ間予測)ならびに変換のために使用される。上記で論じられたように、CUは「ビデオブロック」または「ブロック」と呼ばれることもある。
[0079] 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と呼ばれ、さらなる区分なしに予測および変換に従ってさらに処理される。
[0080] トレリスコード化量子化(TCQ:Trellis coded quantization)は、H.Schwarz、T.Nguyen、D.Marpe、T.Wiegand、M.Karczewicz、M.Coban、J.Dong、「CE7: Transform coefficient coding with reduced number of regular-coded bins (tests 7.1.3a, 7.1.3b)」、JVET文書JVET-L0274、マカオ、CN、2018年10月(以下、JVET-L0274)において提案された。JVET-L0274の技法では、2つのスカラー量子化器が、量子化/逆量子化のために切替え可能に使用される。現在の変換/量子化係数に対して使用されるスカラー量子化器は、走査順序で現在の変換/量子化係数に先行する量子化係数のパリティ(最下位ビット)によって決定される。
[0081] JVET-L0274では、TCQに結合された係数コーディング方式も提案され、それによって、量子化係数を復号するためのコンテキスト選択は、使用される量子化器に依存する。特に、係数が0または非0であることを示す係数の有意性フラグ(SIG:significance flag)は、コンテキストモデルの3つのセットを有し、特定のSIGのために選択されるセットは、関連する係数のために使用される量子化器に依存する。したがって、現在の係数のSIGを復号し始めるとき、エントロピー復号器は、現在の係数と、したがってその係数のSIGのためのコンテキストセットとについて量子化器を決定する、前の走査位置における係数のパリティを知らなくてはならない。
[0082] TUは、コーディンググループ(CG)と呼ばれる非重複サブブロックに分割され、それのサイズは通常4×4である。本明細書において説明される復号プロセスは、4×4CGに関して説明されることが時々あるが、任意の他のCGサイズに容易に拡張され得る。本開示の技法、したがって本明細書中に含まれる説明は、主に、CG中の係数の絶対レベルの符号化および復号プロセスに関係する。サインなど、CGに関連する他の情報は、JVET-L0274に記載された様式で符号化または復号され得るが、代替技法を使用して符号化および復号されてもよい。
[0083] ビデオエンコーダ200とビデオデコーダ300とは、ビットストリーム中のシンタックス要素を処理するように構成され得る。たとえば、係数の絶対レベル値(absLevel)を表すために以下のシンタックス要素が使用され得る。
・sig_coeff_flag:absLevelが0である場合、このフラグは0に等しい。そうでない場合、フラグは1に等しい。
・abs_level_gt1_flag:sig_coeff_flagが1に等しい場合、フラグはビットストリーム中に存在する。absLevelが1よりも大きい場合、それは1に等しい。そうでない場合、フラグは0に等しい。
・par_level_flag:rem_abs_gt1_flagが1に等しい場合、フラグはビットストリーム中に存在する。absLevelが奇数である場合、それは0に等しく、absLevelが偶数である場合、それは1に等しい。
・abs_level_gt3_flag:abs_level_gt1_flagが1に等しい場合、フラグはビットストリーム中に存在する。absLevelが3よりも大きい場合、それは1に等しい。そうでない場合、フラグは0に等しい。
・abs_remainder:abs_level_gt3_flagが1に等しい場合、このシンタックス要素はビットストリーム中に存在する。それは、ゴロムライスコードを用いてコーディングされる変換係数レベルの残りの絶対値である
・abs_level:これは、ゴロムライスコードを用いてコーディングされる変換係数レベルの絶対値である。
[0084] 以下で、シンタックス要素sig_coeff_flag、par_level_flag、abs_level_gt1_flag、abs_level_gt3_flag、abs_remainder、およびabs_levelは、説明を簡潔にするために、それぞれ、SIG、Par、Gt1、Gt2、remLevel、absLevelとして示される。
[0085] ビデオエンコーダ200とビデオデコーダ300とは、ビットストリームからパース(parse)されない上記のシンタックス要素のいずれかを、0などのデフォルト値に設定するように構成され得る。5つのシンタックス要素のうちの第1のものの値を仮定すれば、係数の絶対レベルの値は次のように計算され得る。
[0086] 代替的に、係数が完全にバイパスコード化モードでコーディングされる場合、absoluteLevelは、abs_levelとして直接コーディングされ得る。
[0087] 図3は、JVET-L0274におけるようにCG中のabsoluteLevelを表すシンタックス要素のための例示的な順序を示す。他の順序が使用されてもよい。わかるように、absLevelが4よりも大きいとき、すべての5つのシンタックス要素がビットストリームからパースされる。
[0088] 図3の例では、ビデオデコーダ300は、最高4つのパスにおいてCG中の位置を走査する。第1のパス136において、ビデオデコーダ300は、SIGと、Parと、Gt1との値をパースする。非0 SIGのみが、対応するGt1およびParによって後続される。すなわち、ビデオデコーダ300が、係数レベルが0に等しいことを意味する0の値をSIGが有すると決定した場合、ビデオデコーダ300は、その係数についてGt1およびparのインスタンス(instance)を受信しない。第1のパス136の後に、absLevel1として示される、部分的なabsoluteLevelの値が、各位置について、式(2)に示されているように再構築され得る。
[0089] いくつかの実装形態では、ビデオデコーダ300は、第1のパス136において、4×4サブブロックについて最高28個の正規コード化ビンを、および2×2サブブロックについて最高6つの正規コード化ビンをパースするように構成され得る。正規コード化ビンの数の限界は、SIG、Gt1、Parビンのグループにおいて執行され得、これは、SIG、Gt1、およびParビンの各グループがセットとしてコーディングされることと、セットの中間におけるバイパスコーディング(bypass coding)への切替えが許容されないこととを意味する。
[0090] 第1のパスに少なくとも1つの非0 Gt1がある場合、ビデオデコーダ300は、第2のパス138を走査するように構成され得る。第2のパス138において、ビデオデコーダ300は、非0 Gt1をもつ位置についてGt2をパースする。第1のパス136と第2のパス138とにおけるビンは、すべて正規コーディング(regular code)され得、これは、ビンの確率分布が、選択されたコンテキストモデルによってモデル化されることを意味する。第2のパス138に少なくとも1つの非0 Gt2がある場合、ビデオデコーダ300は第3のパス140を走査する。第3のパス140中に、ビデオデコーダ300は、非0 Gt2をもつ位置のremLevelをパースする。remLevelはバイナリでなく、ビデオデコーダ300は、remのバイナリ化バージョンのビンをバイパスコーディングし得、これは、ビンが一様に分布すると仮定され、コンテキスト選択が必要でないことを意味する。
[0091] 第4のパス142において、ビデオデコーダ300は、前の3つのパスにおいて正規コード化ビンを用いて部分的に表されない、すべての残りの係数を走査する。さらなるパス142の係数レベルが、バイパスコード化ビンを使用して絶対値としてコーディングされる。
[0092] ビデオエンコーダ200とビデオデコーダ300とは、コンテキストモデリングを実施し得る。JVET-L0274において使用されるコンテキストモデリングについても、本開示によって提案される修正とともに、ここで手短に紹介される。以下でより詳細に論じられるコンテキストモデリングは、概して、復号すべきビンのための、コンテキストとも呼ばれる確率モデルの選択を指す。JVET-L0274では、シンタックス要素SIG、Par、Gt1、およびGt2は、コンテキストモデリングを使用してコーディングされる。コンテキストの選択は、Nとして示される、局所近傍にあるabsLevel1の値に依存する。図4は、使用される近傍のテンプレートを示す。テンプレート内の、しかし現在のTU外の位置は、Nから除外され得る。
[0093] 図4は、確率モデルを選択するために使用されるテンプレートの図を示す。「X」でマークされた正方形は、現在の走査位置を指定し、「Y」でマークされた正方形は、使用される局所近傍を表す。
[0094] 現在位置(図4においてXをもつ正方形を参照されたい)について、ビデオデコーダ300は、ctxIdxSIG、ctxIdxPar、ctxIdxGt1、およびctxIdxGt2として示される、それのSIG、Par、Gt1、およびGt2のコンテキストインデックスを決定する。コンテキストインデックスを決定するために、ビデオデコーダ300は、最初に、numSIG、sumAbs1、およびdという3つの変数を決定し得る。変数numSIGは、以下の式(3)によって表される、N中の非0 SIGの数を表す。
[0095] 変数sumAbs1は、以下の式(4)によって表される、N中のabsLevel1の合計を表す。
[0096] 変数dは、以下の式(5)によって表されるように、TU内の現在位置の対角測度(diagonal measure)を表す。
ここで、xおよびyは、TU内の現在位置の座標を表す。
[0097] sumAbs1とdとが与えられれば、ビデオデコーダ300は、次のようにSIGを復号するためのコンテキストインデックスを決定する。
・ルーマについて、ctxIdxSIGは式(6)によって決定される。
・クロマについて、ctxIdxSIGは式(7)によって決定される。
[0098] 式(6)および(7)において、変数「state」は、JVET-L0274において定義されている状態機械(state machine)の現在の状態(present state)を表す。
[0099] sumSIGと、sumAbs1と、dとが与えられれば、ビデオデコーダ300は、次のようにParを復号するためのコンテキストインデックスを決定する。
・現在の走査位置が最後の非0係数の位置に等しい場合、ctxIdxParは0である。
・そうでない場合、
○ ルーマについて、ctxIdxParは式(8)によって決定される。
○ クロマについて、ctxIdxParは(9)によって決定される。
ctxIdxGt1とctxIdxGt2とは、ctxIdxParの値に設定される。
[0100] ビデオエンコーダ200とビデオデコーダ300とは、RemLevelコーディングを実施するように構成され得る。ビデオデコーダ300は、非バイナリシンタックス要素remRemainder(remLevel)とabsLevelとをコーディングするためのライスパラメータ(ricePar)を次のように導出する。
・各サブブロックの開始において、riceParは0に等しく設定される。
・シンタックス要素残余をコーディングした後に、ライスパラメータ(ricePar)は次のように修正される。
riceParが3よりも小さく、残余の最後のコード化値が((3<<ricePar)-1)よりも大きい場合、riceParは1だけ増分される。
[0101] 完全にバイパスコーディングされた絶対量子化インデックスを表す、非バイナリシンタックス要素absLevelをコーディングするために、以下が適用される。
ローカルテンプレート中の絶対値の合計sumAbsが決定される。
変数riceParおよびposZeroが、次式に従ってテーブルルックアップによって決定される。
ここで、変数stateは従属量子化の状態を表し(従属量子化が無効にされたとき、それは0に等しい)、テーブルriceParTable[]およびposZeroTable[][]は次式によって与えられる。
・中間変数codeValueが次のように導出される。
○ absLevelが0に等しい場合、codeValueはposZeroに等しく設定される。
○ そうでなく、absLevelがposZero以下である場合、codeValueはabsLevel-1に等しく設定される。
○ そうでない(absLevelがposZeroよりも大きい)場合、codeValueはabsLevelに等しく設定される。
・codeValueの値は、ライスパラメータriceParとともにゴロムライスコードを使用してコーディングされる。
[0102] ビデオエンコーダ200とビデオデコーダ300とは、absoluteLevel再構築を実施するように構成され得る。absoluteLevel再構築は、ビットストリーム中のシンタックス要素に関して上記で論じられた、JVET-L0274におけるのと同じであり得る。
[0103] ビデオエンコーダ200とビデオデコーダ300とは、インターリーブ様式でGt2フラグをコーダするように構成され得る。いくつかの例では、第1のパスにおいて、SIG、Gt1、Parフラグがコーディングされ、第2のパスにおいて、Gt2フラグがコーディングされる場合において説明された方式の代わりに、Gt2フラグは、以下の図に示されるように、Parフラグの後にあるいはGt1フラグの後に第1のパスに組み込まれ、コーディングパスが4から3に低減され得る。
[0104] 図5は、Parフラグの後の第1のパスにおけるインターリーブされたGt2フラグの例を示す。図5に関して、ビデオデコーダ300は、図3に関して上記で説明されたのと同じ様式でabsLevel1の値を決定し得るが、様々なシンタックス要素が受信される順序が変更される。たとえば、図5では、ビデオデコーダ300は、第2のパス(たとえば、図3における第2のパス138)の一部としてではなく、第1のパス162の一部としてGt2の値を決定する。したがって、図5では、図3の第1のパス136と第2のパス138とは、単一のパス(第1のパス162)に効果的に組み合わされ、図3の第3のパス140と第4のパス142とは、それぞれ、図5の第2のパス164と第3のパス166とになる。したがって、図5の例では、すべてのシンタックス要素を搬送するためにわずか3つのパスが必要とされる。
[0105] 図6は、Gt1フラグの後の第1のパスにおけるインターリーブされたGt2フラグの例を示す。この場合、absLevel1は、次のように計算され得、
コンテキストモデリングに関して上記で導入された式のコンテキスト導出において使用され得る。図6に関して、ビデオデコーダ300は、図3に関して上記で説明されたのと同じ様式でabsLevel1の値を決定し得るが、様々なシンタックス要素が受信される順序が変更される。たとえば、図6では、ビデオデコーダ300は、第2のパス(たとえば、図3における第2のパス138)の一部としてではなく、第1のパス172の一部としてGt2の値を決定する。したがって、図6では、図3の第1のパス136と第2のパス138とは、単一のパス(第1のパス172)に効果的に組み合わされ、図3の第3のパス140と第4のパス142とは、それぞれ、図6の第2のパス174と第3のパス176とになる。したがって、図6の例では、すべてのシンタックス要素を搬送するためにわずか3つのパスが必要とされる。図6では、第1のパス172のシンタックス要素は、図5における第1のパス162のシンタックス要素とは異なる順序で走査されるが、他のパスは概して同じである。
[0106] ビデオエンコーダ200とビデオデコーダ300とは、部分的な最後の正規ビンコード化係数表現を利用するように構成され得、ここで、いくつかの係数の値は、バイパスコーディングを使用して搬送される残余値とともに正規コード化ビンを使用して部分的に搬送され得る。JVET-L0274に記載されたコーディング方式では、第1のコーディングパスのための正規コード化ビンバジェットに達する最後の正規ビンコード化係数(たとえば、図3のCoeff K)、SIG、Gt1、Parビンは、すべて正規コード化ビンとしてコーディングされる。正規ビンコーディングは、SIG-Gt1-Parグループの中間において終了しない。SIG-Gt1-Par-Gt2グループまたはSIG-Gt1-Gt2-Parグループ(たとえば、図5および図6)について同様に、Coeff KのSIG、Gt1、Par、Gt2フラグのためのコーディングは、正規モード(regular mode)においてコーディングされる。本開示は、図7および図8に示されているようにSIGおよびGt1フラグのコーディングの後の正規コード化ビンの起こり得る終了を可能にすることによって、この制約を破るための技法を提案する。
[0107] 図7は、第1のコーディングパス182におけるSIG-Gt1-Par-Gt2コーディングについて正規コード化ビン限界に達した最後の係数の部分コーディングの例を示す。図7の例では、ビデオデコーダ300は、remLevel値とabsLevel値の両方を含む第3のパス186を走査する。remLevelの値は、係数の実際の値と、第1のパス182および第2のパス184から決定された部分値との間の残余値を表す。absLevelの値は、対照的に、係数値の絶対値を表す。
[0108] 図8は、第1のコーディングパス192におけるSIG-Gt1-Gt2-Parコーディングについて正規コード化ビン限界に達した最後の係数の部分コーディングの例を示す。図8では、第1のパス192のシンタックス要素は、図7における第1のパス182のシンタックス要素とは異なる順序で走査される。第2のパス194および第3のパス196は、図7における第2のパス184および第3のパス186と概して同じである。
[0109] 図7と図8との例では、Coeff Kの残存レベルは、バイパスコーディングされるabsLevelの値とともに第3のパス186/196においてバイパスコーディングされる、remLevelFullとしてコーディングされる。係数の値は次のように表される。
または
[0110] 他の例では、ビンの正規コーディング(regular coding)は、ParおよびGt2フラグのコーディングの後に終了することができるか、またはその逆も同様である。この場合、最後の係数の残存レベルは、残存レベルの半分としてコーディングされることになるはずであり、すなわち、
または
[0111] 正規コード化ビンの総数は、インターリーブされたSIG、Gt1、Gt2およびParフラグに課された総数として指定され得る。
[0112] ビデオエンコーダ200とビデオデコーダ300とは、残存レベルコーディングを実施するように構成され得る。第2のコーディングパスにおけるremLevelコーディングは、RemLevelコーディングに関して上記で説明されたものと同等であり得る。ビデオデコーダ300は、Coeff K-1の終了まで、ライスパラメータ更新および導出を実施し得、ここで、Coeff K-1は、最後の正規コード化係数(Coeff K)の前の、最後から2つ目の正規コード化係数を表す。ビデオデコーダ300は、完全正規コーディングを使用してCoeff K-1を復号し得、正規コーディングを使用してまたは正規コーディングとバイパスコーディングとの組合せを使用して完全にCoeff Kをデコーデッドし得る。Coeff KのremLevelFullのコーディングのために、ビデオデコーダ300は、次のようにライスパラメータを更新し得、
ここで、riceParは、第2のパスにおけるremLevelのコーディングのために使用されるriceParであり、lastCodedGt2Flagは、第1のコーディングパスにおける最後のコード化Gt2フラグの値である。代替的に、2×riceParであるriceParの値が使用され得るか、またはCoeff Kのための残存レベルの最適なコーディングに一致するriceParが使用され得る。
[0113] いくつかの例では、Coeff KのremLevelFullのコーディングのために、ビデオデコーダ300は、次のようにライスパラメータを更新し得る。
[0114] バイパスコーディングを使用して完全にコーディングされる係数のためのabsLevel値の残りについて、ビデオデコーダ300は次のようにriceParBypassを更新し得る。バイパスコード化係数をコーディングする前に、ビデオデコーダ300は次のようにriceParBypassを更新する。
if(riceParBypass<3 && absoluteLevelPrevCoeff>((3<<riceParBypass)-1) {riceParBypass++;}
[0115] remLevelの代わりに、しきい値検査のために前のコード化係数(Coeff K)の完全絶対値が使用されることを除いて、riceParがremLevelコーディングのために更新される様式と同様に。
[0116] ビデオデコーダ300は、absLevelレベル任意の種々の異なる技法を決定するためのposZeroパラメータを導出し得る。一例では、ビデオデコーダ300は、次のようにルックアップテーブル(look up table)を使用してabsLevelレベルを決定するためのposZeroパラメータを導出し得る。
[0117] ビデオデコーダ300は、次のようにコード化されるべき中間変数codeValueを導出し得る。
○ absLevelまたはremLevelFullが0に等しい場合、codeValueはposZeroに等しく設定される。
○ そうでなく、absLevelまたはremLevelFullがposZero以下である場合、codeValueは、それぞれ、absLevel-1またはremLevelFull-1に等しく設定される。
○ そうでない(absLevelまたはremLevelFullがposZeroよりも大きい)場合、codeValueは、それぞれ、absLevelまたはremLevelFullに等しく設定される。
[0118] ビデオデコーダ300は、ライスパラメータriceParBypassとともにゴロムライスコードを使用してcodeValueの値をコーディングし得る。
[0119] 図9は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図9は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示では、HEVCビデオコーディング規格および開発中のH.266ビデオコーディング規格などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般的にビデオ符号化および復号に適用可能である。
[0120] 図9の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB:decoded picture buffer)218と、エントロピー符号化ユニット220とを含む。
[0121] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用する参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0122] 本開示では、ビデオデータメモリ230への参照は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への参照は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのビデオデータ)を記憶する参照メモリとして理解されたい。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
[0123] 図9の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0124] ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示されず)が、そのような命令を記憶し得る。
[0125] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204とモード選択ユニット202とにビデオデータを提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0126] モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0127] モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せについての得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUの予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを選択し得る。
[0128] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、1つまたは複数のCTUをスライス内にカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
[0129] 概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CU、またはHEVCでは、PUとTUとの重複する部分)についての予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコード化ピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0130] 動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV:motion vector)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてデータを取り出し、たとえば、サンプルごとの平均化または加重平均化を通して、取り出されたデータを組み合わせ得る。
[0131] 別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、隣接サンプルの値を概して数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0132] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の非コード化バージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
[0133] モード選択ユニット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サイズとをサポートし得る。ビデオエンコーダ20とビデオデコーダ30とはまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズの非対称区分をサポートし得る。
[0134] モード選択ユニットがCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0135] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなど、他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックについて予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0136] 上記で説明されたように、残差生成ユニット204は、現在ブロックと、対応する予測ブロックとについて、ビデオデータを受信する。残差生成ユニット204は、次いで、現在ブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
[0137] 変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック(transform coefficient block)」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、1次変換および2次変換、たとえば回転変換を残差ブロックに実施し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0138] 量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP:quantization parameter)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失を導入することがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0139] 逆量子化ユニット210と逆変換処理ユニット212とは、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化と逆変換とを適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(ある程度のひずみを潜在的にもっているものの)現在ブロックに対応する再構築ブロックを生成し得る。たとえば、再構築ユニット214は、再構築ブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
[0140] フィルタユニット216は、再構築ブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクト(blockiness artifact)を低減するためのデブロッキング動作(deblocking operation)を実施し得る。いくつかの例では、フィルタユニット216の動作はスキップされてよい。
[0141] ビデオエンコーダ200は、再構築ブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が実施される例において、再構築ユニット214は、再構築ブロックをDPB218に記憶し得る。フィルタユニット216の動作が実施される例では、フィルタユニット216は、フィルタ処理された再構築ブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。さらに、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築ブロックを使用し得る。
[0142] 概して、エントロピー符号化ユニット220は、係数コーディングについて上記で説明されたシンタックス要素を含む、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報、またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)動作、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモード(bypass mode)で動作し得る。
[0143] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
[0144] 上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されたい。上記で説明されたように、いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、CUのルーマ成分とクロマ成分とである。いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、PUのルーマ成分とクロマ成分とである。
[0145] いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。そうではなく、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてよく、参照ピクチャは同じであってよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックについて同じであってよい。
[0146] ビデオエンコーダ200は、本開示において説明されるように、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、係数を符号化するように構成された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの例を表す。
[0147] 図10は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。図10は、説明の目的で提供されており、本開示において広く例示され、説明される技法に対する限定ではない。説明の目的で、本開示は、ビデオデコーダ300についてJEMとHEVCとの技法に従って説明されることを記載する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実施され得る。
[0148] 図10の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB:coded picture buffer)メモリ320と、エントロピー復号ユニット(entropy decoding unit)302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加ユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0149] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化ビデオビットストリームからの符号化ビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コード化ピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、ビデオデコーダ300が符号化ビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号ピクチャを記憶する。CPBメモリ320とDPB314とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320とDPB314とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0150] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上記で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0151] 図10に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図9と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0152] ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行されるソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0153] エントロピー復号ユニット302は、CPBから符号化ビデオデータを受信し、ビデオデータをエントロピー復号して、係数コーディングについて上記で説明されたシンタックス要素を含むシンタックス要素を再生し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
[0154] 概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
[0155] エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モードインジケーションなどの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
[0156] 逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連する残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
[0157] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対して参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図9)に関して説明されたのと実質的に同様である様式でインター予測プロセスを実施し得る。
[0158] 別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図9)に関して説明されたのと実質的に同様である様式でイントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
[0159] 再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0160] フィルタユニット312は、再構築ブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築ブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、すべての例において必ずしも実施されるとは限らない。
[0161] ビデオデコーダ300は、再構築ブロックをDPB314に記憶し得る。上記で論じられたように、DPB314は、イントラ予測のための現在ピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなど、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPBからの復号ピクチャを、後続のプレゼンテーションのために、図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。
[0162] このようにして、ビデオデコーダ300は、本開示において説明されるように、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、係数を復号するように構成された1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの例を表す。
[0163] 図11Aと図11Bとは、ビンnにおけるCABACプロセスの例を示す。図11Aの例400では、ビンnにおいて、ビン2における範囲(range)は、あるコンテキスト状態(σ)を所与として、劣勢シンボル(LPS:least probable symbol)(pσ)の確率によって与えられる、RangeMPSとRangeLPSとを含む。例400は、ビンnの値が優勢シンボル(MPS:most probable symbol)に等しいときのビンn+1における範囲の更新を示す。この例では、低は同じままであるが、ビンn+1における範囲の値は、ビンnにおけるRangeMPSの値に低減される。図11Bの例402は、ビンnの値がMPSに等しくない(すなわち、LPSに等しい)ときのビンn+1における範囲の更新を示す。この例では、低(Low)は、ビンnにおけるRangeLPSのより低い範囲値に移動される。加えて、ビンn+1における範囲の値は、ビンnにおけるRangeLPSの値に低減される。
[0164] HEVCビデオコーディングプロセスの一例では、範囲(range)は9ビットで表され、低は10ビットで表される。範囲値および低値を十分な精度で維持するための再正規化プロセスがある。範囲が256よりも小さいときはいつでも、再正規化が行われる。したがって、範囲は、再正規化の後、常に256以上である。範囲の値と低の値とに応じて、バイナリ算術コーダ(BAC:binary arithmetic coder)は、ビットストリームに「0」または「1」を出力するか、または将来の出力のために保持するために(BO:未解決ビット(bits-outstanding)と呼ばれる)内部変数を更新する。図12は、範囲に応じたBAC出力の例を示す。たとえば、範囲と低とが、あるしきい値(たとえば、512)を上回るとき、ビットストリームに「1」が出力される。範囲と低とが、あるしきい値(たとえば、512)を下回るとき、ビットストリームに「0」が出力される。範囲と下側とが、あるしきい値間にあるとき、ビットストリームに何も出力されない。代わりに、BO値が増分され得、次のビンが符号化される。
[0165] H.264/AVCのCABACコンテキストモデルでは、およびHEVCのいくつかの例では、128個の状態がある。0から63までであり得る(状態σによって示される)64個の可能なLPS確率がある。各MPSは0または1であり得る。したがって、128個の状態は、64個の状態確率×MPSのための2個の可能な値(0または1)である。したがって、状態は、7ビットを用いてインデックス付けされ得る。
[0166] LPS範囲(rangeLPSσ)を導出する計算を低減するために、すべての場合についての結果が事前計算され、近似値としてルックアップテーブルに記憶され得る。したがって、LPS範囲は、単純なテーブルルックアップを使用することによって、乗算なしに取得され得る。乗算は、多くのハードウェアアーキテクチャにおいて有意なレイテンシ(significant latency)を生じ得るので、この乗算を回避することは、いくつかのデバイスまたはアプリケーションにとって重要であり得る。
[0167] 4列事前計算LPS範囲テーブル(4-column pre-calculated LPS range table)が乗算の代わりに使用され得る。範囲は4つのセグメントに分割される。セグメントインデックスは、質問(範囲>>6)&3によって導出され得る。事実上、セグメントインデックスは、実際の範囲からビットをシフトし、ドロップすることによって導出される。以下の表1は、可能な範囲およびそれらの対応するインデックスを示す。
[0168] LPS範囲テーブルは、次いで、64個のエントリ(確率状態(probability state)ごとに1つ)×4(範囲インデックスごとに1つ)を有する。各エントリは、範囲LPS、すなわち、範囲にLPS確率を乗算した値である。このテーブルの部分の例が以下の表2に示される。表2は、確率状態9~12を示す。HEVCのための1つの提案では、確率状態は0~63にわたり得る。
[0169] 各セグメント(すなわち、範囲値)において、各確率状態σのLPS範囲があらかじめ定義される。言い換えれば、確率状態σのLPS範囲が4つの値(すなわち、範囲インデックスごとに1つの値)に量子化される。所与のポイントにおいて使用される特定のLPS範囲は、範囲がどのセグメントに属するかに依存する。テーブル中で使用される可能なLPS範囲の数は、テーブル列の数(すなわち、可能なLPS範囲値の数)とLPS範囲精度との間のトレードオフである。概して、より多数の列は、LPS範囲値のより小さい量子化誤差を生じるが、また、テーブルを記憶するためにより多くのメモリの必要を増加させる。より少数の列は、量子化誤差を増加させるが、また、テーブルを記憶するために必要とされるメモリを低減する。
[0170] 上記で説明されたように、各LPS確率状態は、対応する確率を有する。各状態の確率pは次のように導出され、
ここで、状態σは0から63である。定数αは、各コンテキスト状態の間の確率変化の量を表す。一例では、α=0.9493であるか、または、より正確には、α=(0.01875/0.5)1/63である。状態σ=0における確率は0.5に等しい(すなわち、p0=1/2)。すなわち、コンテキスト状態0において、LPSとMPSとは、同程度の確率がある。各連続状態における確率は、前の状態にαを乗算することによって導出される。したがって、コンテキスト状態α=1においてLPSが発生する確率は、p0*0.9493である(0.5*0.9493=.47465)。したがって、状態αのインデックスが増加するにつれて、LPSが発生する確率は下がる。
[0171] CABACは、確率状態が信号統計値(すなわち、前にコーディングされたビンの値)に従うように更新されるので、適応型である。更新プロセスは次の通りである。所与の確率状態について、更新は、状態インデックスと、LPSまたはMPSのいずれかとして識別される符号化シンボルの値とに依存する。更新プロセスの結果として、潜在的に修正されたLPS確率推定値と、必要な場合、修正されたMPS値とからなる、新しい確率状態が導出される。
[0172] MPSに等しいビン値の場合、所与の状態インデックスは1だけ増分され得る。これは、LPS確率がすでにそれの最小値にある(または等価的に、最大MPS確率に達した)、状態インデックス62においてMPSが発生したときを除く、すべての状態に関してである。この場合、LPSが見られるか、または最後のビン値が符号化されるまで、状態インデックス62は固定のままである(最後のビン値の特殊な場合には状態63が使用される)。LPSが発生したとき、状態インデックスは、次の式に示されているように、状態インデックスをある量だけ減分することによって変更される。このルールは、概して、次の例外とともにLPSの各発生に適用される。LPSが、同程度の確率がある場合に対応する、インデックスσ=0をもつ状態において符号化されたと仮定すると、状態インデックスは固定のままであるが、MPS値は、LPSの値とMPSの値とが交換されるようにトグルされることになる。すべての他の場合には、たとえどのシンボルが符号化されたとしても、MPS値は改変されない。LPS確率の遷移ルールの導出は、所与LPS確率poldと、それの更新された相対物pnewとの間の次の関係に基づく。
MPSが発生した場合、pnew=max(αpold,p62)
LPSが発生した場合、pnew=(1-α)+αpold
[0173] CABACにおける確率推定プロセスの実際的な実装形態に関して、すべての遷移ルールは、6ビット符号なし整数値の63個のエントリをそれぞれ有する多くて2つのテーブルによって実現され得ることに留意することが重要である。いくつかの例では、状態遷移は、所与の状態インデックスσについて、LPSが観測された場合に新しい更新された状態インデックスTransIdxLPS[σ]を決定する、単一のテーブルTransIdxLPSを用いて決定され得る。MPS駆動型遷移は、1の固定値による状態インデックスの単純な(飽和)増分によって取得され、更新された状態インデックスmin(σ+1,62)を生じることができる。以下の表3は、部分的なTransIdxLPSテーブルの例である。
[0174] 図11Aと、図11Bと、図12とに関して上記で説明された技法は、CABACの1つの例示的な実装形態を表すにすぎない。本開示の技法は、CABACのこの説明された実装形態のみに限定されないことを理解されたい。たとえば、より古いBAC手法(たとえば、H.264/AVCにおいて使用されるBAC手法)では、テーブルRangeLPSおよびTransIdxLPSは、低解像度ビデオ(すなわち、共通中間フォーマット(CIF)およびクォーターCIF(QCIF)ビデオ)のために調節された。HEVC、およびVVCなどの将来のコーデックでは、大量のビデオコンテンツが高精細度(HD)であり、いくつかの場合には、HDよりも大きい。HD解像度またはHDよりも大きい解像度であるビデオコンテンツは、H.264/AVCを開発するために使用される10年前のQCIFシーケンスとは異なる統計値を有する傾向がある。したがって、H.264/AVCからのテーブルRangeLPSおよびTransIdxLPSは、あまりに急速である様式で状態間の適応を引き起こし得る。すなわち、確率状態間の遷移は、特にLPSが発生するときは、HDビデオのより平滑でより高解像度のコンテンツには大きくなりすぎ得る。したがって、従来の技法に従って使用される確率モデルは、HDおよび極HDコンテンツにとってあまり正確でないことがある。さらに、HDビデオコンテンツはピクセル値のより広い範囲を含むので、H.264/AVCテーブルは、HDコンテンツ中に存在し得るより極端な値を考慮するのに十分なエントリを含まない。
[0175] したがって、HEVCと、VVCなどの将来のコーディング規格とのために、RangeLPSおよびTransIdxLPSテーブルは、この新しいコンテンツの特性を考慮するように修正され得る。特に、HEVCと将来のコーディング規格とのためのBACプロセスは、より遅い適応プロセスを可能にするテーブルを使用し得、より極端な場合(すなわち、歪み確率)を考慮し得る。したがって、一例として、RangeLPSおよびTransIdxLPSテーブルは、H.264/AVCまたはHEVCを用いるBACにおいて使用されるよりも多くの確率状態および範囲を含むことによってこれらの目的を達成するように修正され得る。
[0176] 図13は、本開示の技法による、CABACを実施するように構成され得る例示的なエントロピー符号化ユニット220のブロック図である。シンタックス要素418がエントロピー符号化ユニット220に入力される。シンタックス要素がすでにバイナリ値シンタックス要素(すなわち、0と1との値のみを有するシンタックス要素)である場合、バイナリ化のステップはスキップされ得る。シンタックス要素が非バイナリ値シンタックス要素(non-binary valued syntax element)(たとえば、変換係数レベルなど、複数のビットによって表されるシンタックス要素)である場合、非バイナリ値シンタックス要素はバイナライザ420によってバイナリ化される。バイナライザ420は、バイナリ決定のシーケンスへの非バイナリ値シンタックス要素のマッピングを実施する。これらのバイナリ決定は、しばしば「ビン(bin)」と呼ばれる。たとえば、変換係数レベルでは、レベルの値は連続するビンに分けられ得、各ビンは、係数レベルの絶対値がある値よりも大きいか否かを示す。たとえば、(有意性フラグと呼ばれることがある)ビン0は、変換係数レベルの絶対値が0よりも大きいか否かを示す。ビン1は、変換係数レベルの絶対値が1よりも大きいか否かを示す、などである。各非バイナリ値シンタックス要素について、一意のマッピングが作成され得る。
[0177] バイナライザ420によって生成された各ビンは、エントロピー符号化ユニット220のバイナリ算術コーディング側に供給される。すなわち、非バイナリ値シンタックス要素の所定のセットについて、各ビンタイプ(たとえば、ビン0)が次のビンタイプ(たとえば、ビン1)の前にコーディングされる。コーディングは、正規モードまたはバイパスモードのいずれかで実施され得る。バイパスモードでは、バイパスコーディングエンジン426が、固定確率モデル(fixed probability model)を使用して、たとえば、ゴロム-ライスまたは指数ゴロムコーディングを使用して、算術コーディングを実施する。バイパスモードは、概して、より予測可能なシンタックス要素のために使用される。
[0178] 正規モードでのコーディングは、CABACを実施することを伴う。正規モードCABACは、ビンの値の確率が、前にコーディングされたビンの値を与えられれば予測可能である場合に、ビン値をコーディングするためのものである。ビンがLPSである確率がコンテキストモデラ(context modeler)422によって決定される。コンテキストモデラ422は、ビン値とコンテキストモデル(たとえば、確率状態σ)とを出力する。コンテキストモデルは、一連のビンのための初期コンテキストモデルであり得るか、または前にコーディングされたビンのコード化値に基づいて決定され得る。上記で説明されたように、コンテキストモデラは、前にコーディングされたビンがMPSであったかLPSであったか否かに基づいて状態を更新し得る。
[0179] コンテキストモデルと確率状態σとがコンテキストモデラ422によって決定された後に、正規コーディングエンジン(regular coding engine)424が、ビン値に対してBACを実施する。本開示の技法に従って、正規コーディングエンジン424は、65個以上の確率状態σを含むTransIdxLPSテーブル430を使用してBACを実施する。一例では、確率状態の数は128である。TransIdxLPSは、前のビン(ビンn)がLPSであるとき、次のビン(ビンn+1)のためにどの確率状態が使用されるかを決定するために使用される。正規コーディングエンジン424はまた、特定の確率状態σを所与としてLPSの範囲値を決定するために、RangeLPSテーブル128を使用し得る。しかしながら、本開示の技法によれば、TransIdxLPSテーブル430のすべての可能な確率状態σを使用するのではなく、確率状態インデックスσは、RangeLPSテーブルにおいて使用するためのグループ化インデックスにマッピングされる。すなわち、RangeLPSテーブル428への各インデックスは、確率状態の総数のうちの2つ以上を表し得る。グループ化インデックスへの確率状態インデックスσのマッピングは、(たとえば、2による除算によって)線形であり得るか、あるいは非線形(たとえば、対数関数またはマッピングテーブル)であり得る。
[0180] 本開示の他の例では、連続する確率状態の間の差分は、パラメータαが0.9493よりも大きくなるように設定することによって、より小さくされ得る。一例では、α=0.9689である。本開示の別の例では、LPSが発生する最も高い確率(p0)は、0.5よりも低くなるように設定され得る。一例では、p0は0.493に等しくなり得る。
[0181] 本開示の1つまたは複数の技法によれば、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数(たとえば、ウィンドウサイズ、スケーリングファクタ(scaling factor)(α)、および確率更新速度(probability updating speed)のうちの1つまたは複数)の同じ値を使用するのとは対照的に、エントロピー符号化ユニット220は、異なるコンテキストモデルおよび/または異なるシンタックス要素のために変数の異なる値を使用し得る。たとえば、エントロピー符号化ユニット220は、複数のコンテキストモデルのうちのコンテキストモデルのために、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の値を決定し、決定された値に基づいて確率状態を更新し得る。
[0182] 図14は、本開示の技法による、CABACを実施するように構成され得る例示的なエントロピー復号ユニット302のブロック図である。図14のエントロピー復号ユニット302は、図13で説明されたエントロピー符号化ユニット220の様式とは逆の様式でCABACを実施する。ビットストリーム448からのコード化ビット(coded bit)がエントロピー復号ユニット302に入力される。コード化ビットは、コード化ビットがバイパスモードを使用してエントロピーコーディングされたか、正規モードを使用してエントロピーコーディングされたか否かに基づいて、コンテキストモデラ450またはバイパス復号エンジン452のいずれかに供給される。コード化ビットがバイパスモードでコーディングされた場合、バイパス復号エンジン452は、たとえば、バイナリ値シンタックス要素または非バイナリシンタックス要素のビンを取り出すために、ゴロムライスまたは指数ゴロム復号を使用し得る。
[0183] コード化ビットが正規モードでコーディングされた場合、コンテキストモデラ450はコード化ビットのための確率モデルを決定し得、正規復号エンジン(regular decoding engine)454は、非バイナリ値シンタックス要素のビン(または、バイナリ値の場合、シンタックス要素自体)を生成するために、コード化ビットを復号し得る。コンテキストモデルと確率状態σとがコンテキストモデラ450によって決定された後に、正規復号エンジン454はビン値に対してBACを実施する。本開示の技法に従って、正規復号エンジン454は、65個以上の確率状態σを含むTransIdxLPSテーブル458を使用してBACを実施する。一例では、確率状態の数は128であるが、本開示の技法に合致する、確率状態の他の数が定義され得る。TransIdxLPSテーブル458は、前のビン(ビンn)がLPSであるとき、次のビン(ビンn+1)のためにどの確率状態が使用されるかを決定するために使用される。正規復号エンジン454はまた、特定の確率状態σを所与としてLPSの範囲値を決定するために、RangeLPSテーブル456を使用し得る。しかしながら、本開示の技法によれば、TransIdxLPSテーブル458のすべての可能な確率状態σを使用するのではなく、確率状態インデックスσは、RangeLPSテーブル456において使用するためのグループ化インデックスにマッピングされる。すなわち、RangeLPSテーブル456への各インデックスは、確率状態の総数のうちの2つ以上を表し得る。グループ化インデックスへの確率状態インデックスσのマッピングは、(たとえば、2による除算によって)線形であり得るか、あるいは非線形(たとえば、対数関数またはマッピングテーブル)であり得る。
[0184] 本開示の他の例では、連続する確率状態の間の差分は、パラメータαが0.9493よりも大きくなるように設定することによって、より小さくされ得る。一例では、α=0.9689である。本開示の別の例では、LPSが発生する最も高い確率(p0)は、0.5よりも低くなるように設定され得る。一例では、p0は0.493に等しくなり得る。
[0185] ビンが正規復号エンジン454によって復号された後に、逆バイナライザ(reverse binarizer)460は、ビンを非バイナリ値シンタックス要素の値にコンバートし戻すために逆マッピングを実施し得る。
[0186] 図15は、ビデオデータの現在ブロックを符号化するためのビデオエンコーダの例示的な動作を示すフローチャートである。現在ブロックは現在CUを含み得る。ビデオエンコーダ200(図1および図9)に関して説明されるが、他のデバイスが図15の動作と同様の動作を実施するように構成され得ることを理解されたい。
[0187] この例では、ビデオエンコーダ200は、最初に、現在ブロックを予測する(550)。たとえば、ビデオエンコーダ200は、現在ブロックについての予測ブロックを形成し得る。ビデオエンコーダ200は、次いで、現在ブロックについての残差ブロックを計算し得る(552)。残差ブロックを計算するために、ビデオエンコーダ200は、元のコーディングされていないブロックと、現在ブロックについての予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックの係数を変換し量子化し得る(554)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(556)。走査中に、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(558)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。ビデオエンコーダ200は、次いで、ブロックのエントロピーコーディングされたデータを出力し得る(560)。
[0188] 図16は、ビデオデータの現在ブロックを復号するためのビデオデコーダの例示的な動作を示すフローチャートである。現在ブロックは現在CUを含み得る。ビデオデコーダ300(図1および図3)に関して説明されるが、他のデバイスが図16の動作と同様の動作を実施するように構成され得ることを理解されたい。
[0189] ビデオデコーダ300は、エントロピーコーディングされた予測情報、および現在ブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータなど、現在ブロックについてのエントロピーコーディングされたデータを受信し得る(570)。ビデオデコーダ300は、エントロピーコーディングされたデータをエントロピー復号して、現在のブロックについての予測情報を決定し、残差ブロックの係数を再生し得る(572)。ビデオデコーダ300は、現在ブロックについての予測ブロックを計算するために、たとえば、現在ブロックについての予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在ブロックを予測し得る(574)。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(576)。ビデオデコーダ300は、次いで、係数を逆量子化し、逆変換して、残差ブロックを生成し得る(578)。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在ブロックを復号し得る(580)。
[0190] 図17は、係数値を復号するためのビデオデコーダの例示的な動作を示すフローチャートである。ビデオデコーダ300(図1および図10)に関して説明されるが、他のデバイスが図17の動作と同様の動作を実施するように構成され得ることを理解されたい。
[0191] ビデオデコーダ300が、第1の復号パスのために正規コード化ビンのしきい値数を決定する(602)。
[0192] 係数の第1のセットについて、ビデオデコーダ300は、正規コード化ビンのしきい値数に達するまで、係数グループのシンタックス要素をコンテキスト復号する(604)。シンタックス要素のコンテキスト復号されるビンは、上記で説明されたように、たとえば、1つまたは複数の有意性フラグと、1つまたは複数のパリティレベルフラグと、1つまたは複数の第1のフラグとを含み得る。1つまたは複数の有意性フラグの各々は、係数の絶対レベルが0に等しいかどうかを示し得、1つまたは複数のパリティレベルフラグの各々は、係数が偶数である絶対レベルを有するか奇数である絶対レベルを有するかを示し得る。1つまたは複数の第1のフラグの各々は、係数が2よりも大きい絶対レベルを有するかどうかを示し得る。
[0193] 係数グループのシンタックス要素をコンテキスト復号するために、ビデオデコーダ300は、係数グループのシンタックス要素を復号するためにコンテキスト適応型バイナリ算術復号(context-adaptive binary arithmetic decoding)を実施し得る。他の例では、正規コード化ビンのしきい値数に達するまで、係数グループのシンタックス要素をコンテキスト復号するために、ビデオデコーダ300は、係数の第1のセットの係数のためのシンタックス要素をコーディングしている間、正規コード化ビンのしきい値数に達したと決定し、係数の第1のセットの係数のための1つまたは複数の残りのシンタックス要素をコンテキスト復号し得る。
[0194] ビデオデコーダ300は、シンタックス要素のコンテキスト復号されたビンに基づいて変換ユニットの係数の第1のセットの値を決定する(606)。正規コード化ビンのしきい値数に達したことに応答して、係数の第2のセットについて、ビデオデコーダ300は、追加のシンタックス要素をバイパス復号する(608)。追加のシンタックス要素をバイパス復号するために、ビデオデコーダ300は、係数の第2のセットのうちの係数について、ライスパラメータの値を導出し得る。
[0195] ビデオデコーダ300は、追加のシンタックス要素に基づいて変換ユニットの係数の第2のセットの値を決定する(610)。追加のシンタックス要素に基づいて変換ユニットの係数の第2のセットの値を決定するために、ビデオデコーダ300は、ライスパラメータに基づいてゼロパラメータの値を決定する(612)。ライスパラメータに基づいてゼロパラメータの値を決定するために、ビデオデコーダ300は、たとえば、ライスパラメータに基づいて、また状態機械の現在の状態に基づいてゼロパラメータの値を決定し得る。上記で説明されたように、ゼロパラメータの値は、0の係数レベルに対応するコード化値を識別する。ビデオデコーダ300は、たとえば、ルックアップテーブルからまたは何らかの他の方法でライスパラメータの値を決定し得る。
[0196] 追加のシンタックス要素に基づいて変換ユニットの係数の第2のセットの値を決定するために、ビデオデコーダ300はまた、係数の第2のセットのうちの第1の係数のための第1のコード化値を受信し(614)、ゼロパラメータの値と第1の係数のための第1のコード化値とに基づいて、第1の係数のレベルを決定する(616)。第1の係数のレベルは、たとえば、残存レベルまたは絶対レベルのいずれかであり得る。
[0197] ゼロパラメータの値が第1のコード化値に等しいことに応答して、ビデオデコーダ300は、第1の係数のレベルが0に等しいと決定し得る。第1のコード化値がゼロパラメータの値よりも大きいことに応答して、ビデオデコーダ300は、第1の係数のレベルが第1のコード化値に等しいと決定し得る。他の事例では、第1のコード化値がゼロパラメータの値よりも小さいことに応答して、ビデオデコーダ300は、第1の係数のレベルが第1のコード化値+1に等しいと決定し得る。
[0198] ビデオデコーダ300はまた、係数の第1のセットの値と係数の第2のセットの値とに基づいて、復号された変換ブロックを決定し、再構築ブロックを決定するために、復号された変換ブロックを予測ブロックに追加し、ビデオデータの復号ブロック(decoded block)を決定するために、再構築ブロックに対して1つまたは複数のフィルタ処理演算を実施し、ビデオデータの復号ブロックを含むビデオデータの復号ピクチャを出力し得る。
[0199] 上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0200] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0201] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体のうちの1つまたは複数を含むことができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0202] 命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
[0203] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ得るか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0204] 様々な例について説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、前記方法は、
第1の復号パスのために正規コード化ビンのしきい値数を決定することと、
係数の第1のセットについて、正規コード化ビンの前記しきい値数に達するまで、係数グループのシンタックス要素のビンをコンテキスト復号することと、ここにおいて、シンタックス要素の前記コンテキスト復号されたビンが、1つまたは複数の有意性フラグと、1つまたは複数のパリティレベルフラグと、1つまたは複数の第1のフラグとを備え、ここにおいて、前記1つまたは複数の有意性フラグの各々は、対応する係数の絶対レベルが0に等しいかどうかを示し、前記1つまたは複数のパリティレベルフラグの各々は、前記対応する係数の前記絶対レベルが偶数であるか奇数であるかを示し、前記1つまたは複数の第1のフラグの各々は、前記対応する係数の前記絶対レベルが2よりも大きいかどうかを示す、
シンタックス要素の前記コンテキスト復号されたビンに基づいて変換ユニットの係数の前記第1のセットの値を決定することと、
正規コード化ビンの前記しきい値数に達したことに応答して、係数の第2のセットについて、追加のシンタックス要素をバイパス復号することと、ここにおいて、前記追加のシンタックス要素をバイパス復号することが、係数の前記第2のセットのうちの係数について、ライスパラメータの値を導出することを備える、
前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの値を決定することと、ここにおいて、前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの前記値を決定することは、
ライスパラメータに基づいてゼロパラメータの値を決定することと、ここにおいて、前記ゼロパラメータの前記値が、0の係数レベルに対応するコード化値を識別する、
係数の前記第2のセットのうちの第1の係数のための第1のコード化値を受信することと、
前記ゼロパラメータの前記値と前記第1の係数のための前記第1のコード化値とに基づいて、前記第1の係数のレベルを決定することと
を備える、
を備える、方法。
[C2]
前記第1の係数の前記レベルが、残存レベルを備える、C1に記載の方法。
[C3]
前記第1の係数の前記レベルが、絶対レベルを備える、C1に記載の方法。
[C4]
前記ライスパラメータに基づいて前記ゼロパラメータの前記値を決定することが、前記ライスパラメータに基づいて、および状態機械の現在の状態に基づいて前記ゼロパラメータの前記値を決定することを備える、C1に記載の方法。
[C5]
前記ゼロパラメータの前記値が前記第1のコード化値に等しいことに応答して、前記第1の係数の前記レベルが0に等しいと決定すること
をさらに備える、C1に記載の方法。
[C6]
前記第1のコード化値が前記ゼロパラメータの前記値よりも大きいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値に等しいと決定すること
をさらに備える、C1に記載の方法。
[C7]
前記第1のコード化値が前記ゼロパラメータの前記値よりも小さいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値+1に等しいと決定すること
をさらに備える、C1に記載の方法。
[C8]
ルックアップテーブルから前記ライスパラメータの前記値を決定すること
をさらに備える、C1に記載の方法。
[C9]
前記係数グループの前記シンタックス要素をコンテキスト復号することが、前記係数グループの前記シンタックス要素を復号するためにコンテキスト適応型バイナリ算術復号を実施することを備える、C1に記載の方法。
[C10]
正規コード化ビンの前記しきい値数に達するまで、前記係数グループのシンタックス要素をコンテキスト復号することは、
係数の前記第1のセットの係数のためのシンタックス要素をコーディングしている間、正規コード化ビンの前記しきい値数に達したと決定することと、
係数の前記第1のセットの前記係数のための1つまたは複数の残りのシンタックス要素をコンテキスト復号することと
を備える、C1に記載の方法。
[C11]
係数の前記第1のセットの前記値と係数の前記第2のセットの前記値とに基づいて、復号された変換ブロックを決定することと、
再構築ブロックを決定するために、前記復号された変換ブロックを予測ブロックに追加することと、
ビデオデータの復号ブロックを決定するために、前記再構築ブロックに対して1つまたは複数のフィルタ処理演算を実施することと、
ビデオデータの前記復号ブロックを含むビデオデータの復号ピクチャを出力することとをさらに備える、C1に記載の方法。
[C12]
ビデオデータを復号するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
回路中に実装された1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
第1の復号パスのために正規コード化ビンのしきい値数を決定することと、
係数の第1のセットについて、正規コード化ビンの前記しきい値数に達するまで、係数グループのシンタックス要素のビンをコンテキスト復号することと、ここにおいて、シンタックス要素の前記コンテキスト復号されたビンが、1つまたは複数の有意性フラグと、1つまたは複数のパリティレベルフラグと、1つまたは複数の第1のフラグとを備え、ここにおいて、前記1つまたは複数の有意性フラグの各々は、対応する係数の絶対レベルが0に等しいかどうかを示し、前記1つまたは複数のパリティレベルフラグの各々は、前記対応する係数の前記絶対レベルが偶数であるか奇数であるかを示し、前記1つまたは複数の第1のフラグの各々は、前記対応する係数の前記絶対レベルが2よりも大きいかどうかを示す、
シンタックス要素の前記コンテキスト復号されたビンに基づいて変換ユニットの係数の前記第1のセットの値を決定することと、
正規コード化ビンの前記しきい値数に達したことに応答して、係数の第2のセットについて、追加のシンタックス要素をバイパス復号することと、ここにおいて、前記追加のシンタックス要素をバイパス復号するために、前記1つまたは複数のプロセッサが、係数の前記第2のセットのうちの係数について、ライスパラメータの値を導出するように構成された、
前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの値を決定することと、ここにおいて、前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの前記値を決定するために、前記1つまたは複数のプロセッサが、
ライスパラメータに基づいてゼロパラメータの値を決定することと、ここにおいて、前記ゼロパラメータの前記値が、0の係数レベルに対応するコード化値を識別する、
係数の前記第2のセットのうちの第1の係数のための第1のコード化値を受信すること、
前記ゼロパラメータの前記値と前記第1の係数のための前記第1のコード化値とに基づいて、前記第1の係数のレベルを決定することと
を行うように構成された、
を行うように構成された、デバイス。
[C13]
前記第1の係数の前記レベルが、残存レベルを備える、C12に記載のデバイス。
[C14]
前記第1の係数の前記レベルが、絶対レベルを備える、C12に記載のデバイス。
[C15]
前記ライスパラメータに基づいて前記ゼロパラメータの前記値を決定するために、前記1つまたは複数のプロセッサが、前記ライスパラメータに基づいて、および状態機械の現在の状態に基づいて前記ゼロパラメータの前記値を決定するように構成された、C12に記載のデバイス。
[C16]
前記1つまたは複数のプロセッサは、
前記ゼロパラメータの前記値が前記第1のコード化値に等しいことに応答して、前記第1の係数の前記レベルが0に等しいと決定する
ようにさらに構成された、C12に記載のデバイス。
[C17]
前記1つまたは複数のプロセッサは、
前記第1のコード化値が前記ゼロパラメータの前記値よりも大きいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値に等しいと決定する
ようにさらに構成された、C12に記載のデバイス。
[C18]
前記1つまたは複数のプロセッサは、
前記第1のコード化値が前記ゼロパラメータの前記値よりも小さいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値+1に等しいと決定する
ようにさらに構成された、C12に記載のデバイス。
[C19]
前記1つまたは複数のプロセッサが、
ルックアップテーブルから前記ライスパラメータの前記値を決定する
ようにさらに構成された、C12に記載のデバイス。
[C20]
前記係数グループの前記シンタックス要素をコンテキスト復号するために、前記1つまたは複数のプロセッサが、前記係数グループの前記シンタックス要素を復号するためにコンテキスト適応型バイナリ算術復号を実施するように構成された、C12に記載のデバイス。
[C21]
正規コード化ビンの前記しきい値数に達するまで、前記係数グループのシンタックス要素をコンテキスト復号するために、前記1つまたは複数のプロセッサは、
係数の前記第1のセットの係数のためのシンタックス要素をコーディングしている間、正規コード化ビンの前記しきい値数に達したと決定することと、
係数の前記第1のセットの前記係数のための1つまたは複数の残りのシンタックス要素をコンテキスト復号することと
を行うように構成された、C12に記載のデバイス。
[C22]
前記1つまたは複数のプロセッサが、
係数の前記第1のセットの前記値と係数の前記第2のセットの前記値とに基づいて、復号された変換ブロックを決定することと、
再構築ブロックを決定するために、前記復号された変換ブロックを予測ブロックに追加することと、
ビデオデータの復号ブロックを決定するために、前記再構築ブロックに対して1つまたは複数のフィルタ処理演算を実施することと、
ビデオデータの前記復号ブロックを含むビデオデータの復号ピクチャを出力することとを行うようにさらに構成された、C12に記載のデバイス。
[C23]
前記デバイスが、符号化ビデオデータを受信するように構成された受信機をさらに備えるワイヤレス通信デバイスを備える、C12に記載のデバイス。
[C24]
前記ワイヤレス通信デバイスが、電話ハンドセットを備え、ここにおいて、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを備える信号を復調するように構成された、C23に記載のデバイス。
[C25]
復号ビデオデータを表示するように構成されたディスプレイ
をさらに備える、C12に記載のデバイス。
[C26]
前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C12に記載のデバイス。
[C27]
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
第1の復号パスのために正規コード化ビンのしきい値数を決定することと、
係数の第1のセットについて、正規コード化ビンの前記しきい値数に達するまで、係数グループのシンタックス要素のビンをコンテキスト復号することと、ここにおいて、シンタックス要素の前記コンテキスト復号されたビンが、1つまたは複数の有意性フラグと、1つまたは複数のパリティレベルフラグと、1つまたは複数の第1のフラグとを備え、ここにおいて、前記1つまたは複数の有意性フラグの各々は、対応する係数の絶対レベルが0に等しいかどうかを示し、前記1つまたは複数のパリティレベルフラグの各々は、前記対応する係数の前記絶対レベルが偶数であるか奇数であるかを示し、前記1つまたは複数の第1のフラグの各々は、前記対応する係数の前記絶対レベルが2よりも大きいかどうかを示す、
シンタックス要素の前記コンテキスト復号されたビンに基づいて変換ユニットの係数の前記第1のセットの値を決定することと、
正規コード化ビンの前記しきい値数に達したことに応答して、係数の第2のセットについて、追加のシンタックス要素をバイパス復号することと、ここにおいて、前記追加のシンタックス要素をバイパス復号するために、前記命令が、前記1つまたは複数のプロセッサに、係数の前記第2のセットのうちの係数について、ライスパラメータの値を導出させる、
前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの値を決定することと、ここにおいて、前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの前記値を決定するために、前記命令が、前記1つまたは複数のプロセッサに、
ライスパラメータに基づいてゼロパラメータの値を決定することと、ここにおいて、前記ゼロパラメータの前記値が、0の係数レベルに対応するコード化値を識別する、
係数の前記第2のセットのうちの第1の係数のための第1のコード化値を受信すること、
前記ゼロパラメータの前記値と前記第1の係数のための前記第1のコード化値とに基づいて、前記第1の係数のレベルを決定することと
を行わせる、
を行わせる、コンピュータ可読記憶媒体。
[C28]
前記第1の係数の前記レベルが、残存レベルを備える、C27に記載のコンピュータ可読記憶媒体。
[C29]
前記第1の係数の前記レベルが、絶対レベルを備える、C27に記載のコンピュータ可読記憶媒体。
[C30]
前記ライスパラメータに基づいて前記ゼロパラメータの前記値を決定するために、前記命令が、前記1つまたは複数のプロセッサに、前記ライスパラメータに基づいて、および状態機械の現在の状態に基づいて前記ゼロパラメータの前記値を決定させる、C27に記載のコンピュータ可読記憶媒体。
[C31]
前記命令は、前記1つまたは複数のプロセッサに、
前記ゼロパラメータの前記値が前記第1のコード化値に等しいことに応答して、前記第1の係数の前記レベルが0に等しいと決定する
ことをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C32]
前記命令は、前記1つまたは複数のプロセッサに、
前記第1のコード化値が前記ゼロパラメータの前記値よりも大きいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値に等しいと決定する
ことをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C33]
前記命令は、前記1つまたは複数のプロセッサに、
前記第1のコード化値が前記ゼロパラメータの前記値よりも小さいことに応答して、前記第1の係数の前記レベルが前記第1のコード化値+1に等しいと決定する
ことをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C34]
前記命令が、前記1つまたは複数のプロセッサに、
ルックアップテーブルから前記ライスパラメータの前記値を決定する
ことをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C35]
前記係数グループの前記シンタックス要素をコンテキスト復号するために、前記命令が、前記1つまたは複数のプロセッサに、前記係数グループの前記シンタックス要素を復号するためにコンテキスト適応型バイナリ算術復号を実施させる、C27に記載のコンピュータ可読記憶媒体。
[C36]
正規コード化ビンの前記しきい値数に達するまで、前記係数グループのシンタックス要素をコンテキスト復号するために、前記命令が、前記1つまたは複数のプロセッサに、 係数の前記第1のセットの係数のためのシンタックス要素をコーディングしている間、正規コード化ビンの前記しきい値数に達したと決定することと、
係数の前記第1のセットの前記係数のための1つまたは複数の残りのシンタックス要素をコンテキスト復号することと
を行わせる、C27に記載のコンピュータ可読記憶媒体。
[C37]
前記命令が、前記1つまたは複数のプロセッサに、
係数の前記第1のセットの前記値と係数の前記第2のセットの前記値とに基づいて、復号された変換ブロックを決定することと、
再構築ブロックを決定するために、前記復号された変換ブロックを予測ブロックに追加することと、
ビデオデータの復号ブロックを決定するために、前記再構築ブロックに対して1つまたは複数のフィルタ処理演算を実施することと、
ビデオデータの前記復号ブロックを含むビデオデータの復号ピクチャを出力することとをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C38]
ビデオデータを復号するための装置であって、前記装置は、
第1の復号パスのために正規コード化ビンのしきい値数を決定するための手段と、
係数の第1のセットについて、正規コード化ビンの前記しきい値数に達するまで、係数グループのシンタックス要素のビンをコンテキスト復号するための手段と、ここにおいて、シンタックス要素の前記コンテキスト復号されたビンが、1つまたは複数の有意性フラグと、1つまたは複数のパリティレベルフラグと、1つまたは複数の第1のフラグとを備え、ここにおいて、前記1つまたは複数の有意性フラグの各々は、対応する係数の絶対レベルが0に等しいかどうかを示し、前記1つまたは複数のパリティレベルフラグの各々は、前記対応する係数の前記絶対レベルが偶数であるか奇数であるかを示し、前記1つまたは複数の第1のフラグの各々は、前記対応する係数の前記絶対レベルが2よりも大きいかどうかを示す、
シンタックス要素の前記コンテキスト復号されたビンに基づいて変換ユニットの係数の前記第1のセットの値を決定するための手段と、
正規コード化ビンの前記しきい値数に達したことに応答して、係数の第2のセットについて、追加のシンタックス要素をバイパス復号するための手段と、ここにおいて、前記追加のシンタックス要素をバイパス復号するための前記手段が、係数の前記第2のセットのうちの係数について、ライスパラメータの値を導出するための手段を備える、
前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの値を決定するための手段と、ここにおいて、前記追加のシンタックス要素に基づいて前記変換ユニットの係数の前記第2のセットの前記値を決定するための前記手段は、
ライスパラメータに基づいてゼロパラメータの値を決定するための手段と、ここにおいて、前記ゼロパラメータの前記値が、0の係数レベルに対応するコード化値を識別する、
係数の前記第2のセットのうちの第1の係数のための第1のコード化値を受信するための手段と、
前記ゼロパラメータの前記値と前記第1の係数のための前記第1のコード化値とに基づいて、前記第1の係数のレベルを決定するための手段と
を備える、
を備える、装置。