(58)【調査した分野】(Int.Cl.,DB名)
前記第1のコンテキストの前記更新された確率状態に基づいて、前記第1のコンテキストに関連する別のビンをエントロピーコーディングすることをさらに備える、請求項1に記載の方法。
前記第1のコンテキストのための前記第1のおよび第2のウィンドウサイズが、前記コーディングされたビンを含むビットストリーム中でシグナリングされない、請求項1に記載の方法。
デフォルトウィンドウサイズが前記複数のコンテキストのために使用されるかどうかを示す第3のシンタックス要素をコーディングすることをさらに備える、請求項1に記載の方法。
前記デフォルトウィンドウサイズが前記複数のコンテキストのために使用されないことを前記第3のシンタックス要素が示すことに基づいて、前記第1のコンテキストのための前記ウィンドウサイズを示す第4のシンタックス要素をコーディングすることをさらに備える、請求項6に記載の方法。
前記第1のコンテキストのための前記ウィンドウサイズを示すために、前記第4のシンタックス要素が、前記第1のコンテキストのための前記ウィンドウサイズと前記デフォルトウィンドウサイズとの間の差分を示す、請求項7に記載の方法。
前記第3のシンタックス要素をコーディングすることが、前記第3のシンタックス要素を含む現在スライスのスライスヘッダをコーディングすることを備え、ここにおいて、前記第3のシンタックス要素は、前記現在スライスのビンをエントロピーコーディングするとき、前記デフォルトウィンドウサイズが前記複数のコンテキストのために使用されるかどうかを示す、請求項6に記載の方法。
現在スライスのスライスヘッダ中で、前記複数のコンテキストのためのウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示すシンタックス要素をコーディングすることをさらに備える、請求項1に記載の方法。
【発明を実施するための形態】
【0015】
[0026] 本開示の技法は、概して、ブロックベースハイブリッドビデオコーディング(block-based hybrid video coding)におけるエントロピーコーディングモジュールに関する。これらの技法は、HEVC(高効率ビデオコーディング(High Efficiency Video Coding))など、任意の既存のビデオコーデック(video codec)に適用され得、あるいはこれらの技法は、任意の将来のビデオコーディング規格または他のプロプライエタリ(proprietary)もしくは非プロプライエタリコーディング技法における効率的なコーディングツールであり得る。例および説明のために、本開示の技法は、概して、HEVC(またはITU−T H.265)および/またはITU−T H.264に関して説明される。さらに、例および説明のために、本開示の技法は、概してCABACコーダに関して説明されるが、本開示の技法は、コンテキスト適応型可変長コーダ(context-adaptive variable-length coder)など、他のコンテキストベースエントロピーコーダ(context-based entropy coder)に適用可能であり得ることを理解されたい。
【0016】
[0027]
図1は、可変ウィンドウサイズ(variable window size)でCABAC設計に従ってデータをコーディングするための技法を利用し得る例示的なビデオ符号化および復号システム(video encoding and decoding system)10を示すブロック図である。
図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータ(encoded video data)を与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0017】
[0028] 宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプ(type)の媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【0018】
[0029] いくつかの例では、符号化データは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、その符号化ビデオデータを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS:network attached storage)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0019】
[0030] 本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0020】
[0031]
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス31とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、拡張CABAC設計に従ってデータをコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0021】
[0032]
図1の図示のシステム10は一例にすぎない。拡張CABAC設計に従ってデータをコーディングするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック(CODEC)」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素(video encoding and decoding components)とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
【0022】
[0033] ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャ(capture)されたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。いくつかの場合には、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0023】
[0034] コンピュータ可読媒体(Computer-readable medium)16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの非一時的(non-transient)記憶媒体(すなわち、非一時的(non-transitory)記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。ビデオ復号デバイスによって処理されるとき、ディスク上の符号化ビデオデータは、ビデオ復号デバイスに、本明細書で開示される様々な例に従ってビデオデータを復号させ得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
【0024】
[0035] 宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータ(decoded video data)をユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0025】
[0036] ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.265とも呼ばれる、高効率ビデオコーディング(HEVC)規格など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格(proprietary or industry standards)、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、MPEG−2およびITU−T H.263がある。
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠し得る。
【0026】
[0037] ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0027】
[0038] 概して、HEVCによれば、ビデオフレームまたはピクチャは、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され得る。ビットストリーム(bitstream)内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU:coding unit)にスプリットされ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUにスプリットされた場合、CUに対応するノードは4つのリーフノード(leaf node)を含み、リーフノードの各々はサブCUのうちの1つに対応する。
【0028】
[0039] 4分木データ構造の各ノードは、対応するCUのためのシンタックスデータを与え得る。たとえば、4分木中のノードは、そのノードに対応するCUがサブCUにスプリットされるかどうかを示すスプリットフラグ(split flag)を含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUにスプリットされるかどうかに依存し得る。CUがさらにスプリットされない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的スプリッティングが存在しない場合でも、リーフCUの4つのサブCUはリーフCUとも呼ばれる。たとえば、16×16サイズのCUがさらにスプリットされない場合、その16×16CUが決してスプリットされなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
【0029】
[0040] CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードにスプリットされ得、各子ノードは、今度は親ノードとなり、別の4つの子ノードにスプリットされ得る。4分木のリーフノードと呼ばれる、最後のスプリットされていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度(maximum CU depth)と呼ばれる、ツリーブロックがスプリットされ得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示は、HEVCのコンテキストにおけるCU、予測ユニット(PU:prediction unit)、または変換ユニット(TU:transform unit)、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック(block)」という用語を使用する。
【0030】
[0041] CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、概して形状が正方形である。CUのサイズは、8×8ピクセルから最大サイズ、たとえば、64×64以上のピクセルをもつツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含んでいることがある。CUに関連するシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかの間で異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従う1つまたは複数のTUへのCUの区分をも記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。
【0031】
[0042] HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され得、その変換係数は量子化され得る。
【0032】
[0043] リーフCUは1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出しおよび/または生成するためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのためのデータは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。RQTは変換ツリーと呼ばれることもある。いくつかの例では、イントラ予測モードは、RQTの代わりに、リーフCUシンタックス中でシグナリングされ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための、1つまたは複数の動きベクトルなど、動き情報を定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
【0033】
[0044] 1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明されたように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、スプリットフラグは、リーフCUが4つの変換ユニットにスプリットされるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらにスプリットされ得る。TUがさらにスプリットされないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングでは、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、PUよりも大きいことも小さいこともある。イントラコーディングでは、PUは、同じCUのための対応するリーフTUとコロケート(collocate)され得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
【0034】
[0045] その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連し得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロック(またはLCU)に対応する。スプリットされないRQTのTUはリーフTUと呼ばれる。概して、本開示では、別段に記載されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
【0035】
[0046] ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP:group of pictures)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックはCU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定されたコーディング規格に応じてサイズが異なり得る。
【0036】
[0047] 一例として、予測は様々なサイズのPUについて実行され得る。特定のCUのサイズが2N×2Nであると仮定すると、イントラ予測が、2N×2NまたはN×NのPUサイズに対して実行され得、インター予測が、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズに対して実行され得る。インター予測のための非対称区分は、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについても実行され得る。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平方向に区分された2N×2N CUを指す。
【0037】
[0048] 本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ここで、Nは非負整数値を表す。ブロック中のピクセルは行および列に配列され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
【0038】
[0049] CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後に、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを表す量子化された変換係数を含むようにTUを形成し得る。すなわち、ビデオエンコーダ20は、(残差ブロックの形態の)残差データを計算し、変換係数のブロックを生成するために残差ブロックを変換し、次いで、量子化された変換係数を形成するために変換係数を量子化し得る。ビデオエンコーダ20は、量子化された変換係数を含むTU、ならびに他のシンタックス情報(たとえば、TUのためのスプリッティング情報)を形成し得る。
【0039】
[0050] 上述のように、変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度(bit depth)を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ここで、nはmよりも大きい。
【0040】
[0051] 量子化の後に、ビデオエンコーダは、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化(entropy encode)され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後に、ビデオエンコーダ20は、たとえば、本開示で説明されるコンテキスト適応型バイナリ算術コーディング(CABAC)設計に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
【0041】
[0052] 概して、ビデオデコーダ30は、符号化データを復号するためにビデオエンコーダ20によって実行されるものと、相反するが、実質的に同様のプロセスを実行する。たとえば、ビデオデコーダ30は、残差ブロックを再生するために、受信されたTUの係数を逆量子化および逆変換する。ビデオデコーダ30は、予測されたブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)を使用する。次いで、ビデオデコーダ30は、元のブロックを再生するために、(ピクセルごとに)予測されたブロックと残差ブロックとを組み合わせる。ブロック境界に沿って視覚的アーティファクト(visual artifact)を低減するためにデブロッキングプロセスを実行することなど、追加の処理が実行され得る。さらに、ビデオデコーダ30は、ビデオエンコーダ20のCABAC符号化プロセスに相反するが、それと実質的に同様の様式でCABACを使用してシンタックス要素を復号し得る。
【0042】
[0053] 本開示は、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング(signaling)」することに言及することがある。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分のヘッダに記憶することによってデータを「シグナリング」し得る。いくつかの場合には、そのようなシンタックス要素は、ビデオデコーダ30によって受信され、復号されるより前に、符号化され、記憶され(たとえば、ストレージデバイス32に記憶され)得る。したがって、「シグナリング」という用語は、通信がリアルタイムまたはほぼリアルタイムで行われるか、あるいは、符号化時にシンタックス要素を媒体に記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得る、ある時間期間にわたって行われるかどうかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
【0043】
[0054] 以下のセクションは、BACおよびCABAC技法についてより詳細に説明する。BACは、概して、再帰的間隔再分割プロシージャ(recursive interval-subdividing procedure)である。BACは、H.264/AVCおよびH.265/HEVCビデオコーディング規格におけるCABACプロセスにおいてビンを符号化するために使用される。BACコーダの出力は、最終コード化確率間隔(final coded probability interval)内の確率に対する値またはポインタを表すバイナリストリームである。確率間隔(probability interval)は、範囲(range)および下端値(lower end value)によって指定される。範囲は確率間隔の拡張である。低はコーディング間隔の下限である。
【0044】
[0055] ビデオコーディングへの算術コーディングの適用は、D.Marpe、H.Schwarz、およびT.Wiegand「Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard」、IEEE Trans.Circuits and Systems for Video Technology、vol.13、no.7、2003年7月に記載されている。CABACは、3つの主要な機能、すなわち、2値化(binarization)、コンテキストモデリング(context modeling)、および算術コーディング(arithmetic coding)を伴う。2値化は、シンタックス要素をバイナリシンボル(または「ビン」)にマッピングする機能を指す。バイナリシンボルは「ビンストリング(bin string)」と呼ばれることもある。コンテキストモデリングは、様々なビンの確率を推定する機能を指す。算術コーディングは、推定された確率に基づいて、ビンをビットに圧縮する後続の機能を指す。バイナリ算術コーダなど、様々なデバイスおよび/またはそれらのモジュールは算術コーディングの機能を実行し得る。
【0045】
[0056] HEVCでは、単項(U)、短縮単項(TU:truncated unary)、k次指数ゴロム(EGk:kth-order Exp-Golomb)、および固定長(FL:fixed length)を含む、いくつかの異なる2値化プロセスが使用される。様々な2値化プロセスの詳細は、V.SzeおよびM.Budagavi、「High throughput CABAC entropy coding in HEVC」、IEEE Transactions on Circuits and Systems for Video Technology(TCSVT)、vol.22、no.12、1778〜1791ページ、2012年12月に記載されている。
【0046】
[0057] CABACにおける各コンテキスト(すなわち、確率モデル)は状態によって表される。各状態(σ)は、特定のシンボル(たとえば、ビン)が劣勢シンボル(LPS:Least Probable Symbol)である確率(p
σ)を暗黙的に表す。シンボルはLPSまたは優勢シンボル(MPS:Most Probable Symbol)であり得る。シンボルはバイナリであり、したがって、MPSおよびLPSは0または1であり得る。確率は、対応するコンテキストについて推定され、算術コーダ(arithmetic coder)を使用してシンボルをエントロピーコーディングするために(暗黙的に)使用される。
【0047】
[0058] BACのプロセスは、コーディングすべきコンテキストとコーディングされているビンの値とに応じて、それの内部値「範囲」および「低」を変更する状態機械によって扱われる。コンテキストの状態(すなわち、それの確率)に応じて、範囲は、範囲MPS
σ(状態
σにおける優勢シンボルの範囲)と範囲LPS
σ(状態
σにおける劣勢シンボルの範囲)とに分割される。理論上、確率状態
σの範囲LPS
σ値は以下の乗算によって導出される。
【0049】
上式で、p
σは、LPSを選択する確率である。もちろん、MPSの確率は1−p
σである。等価的に、範囲MPS
σは、範囲−範囲LPS
σに等しい。BACは、コーディングすべきコンテキストビンの状態と、現在の範囲と、コーディングされているビンの値(すなわち、ビンがLPSに等しいのかMPSに等しいのか)とに応じて、範囲を反復的に更新する。
【0050】
[0059]
図2Aおよび
図2Bは、ビンnにおけるこのプロセスの例を示す。
図2Aの例100では、ビンnにおいて、ビン2における範囲(range)は、あるコンテキスト状態(
σ)を仮定すると、LPS(p
σ)の確率によって与えられる範囲MPSと範囲LPSとを含む。例100は、ビンnの値がMPSに等しいときのビンn+1における範囲の更新を示す。この例では、低(low)は同じままであるが、ビンn+1における範囲の値は、ビンnにおける範囲MPSの値に低減される。
図2Bの例102は、ビンnの値がMPSに等しくない(すなわち、LPSに等しい)ときのビンn+1における範囲の更新を示す。この例では、低は、ビンnにおける範囲LPSの下側範囲値に移動される。さらに、ビンn+1における範囲の値は、ビンnにおける範囲LPSの値に低減される。
【0051】
[0060] HEVCでは、範囲は9ビットで表され、低は10ビットで表される。範囲値および低値を十分な精度で維持するための再正規化プロセス(renormalization process)がある。範囲が256よりも小さいときはいつでも、再正規化が行われる。したがって、範囲は、再正規化の後、常に256に等しいかまたはそれよりも大きい。範囲の値と低の値とに応じて、BACは、ビットストリームに「0」または「1」を出力するか、または将来の出力のために保持するために(BO:未解決ビット(bits-outstanding)と呼ばれる)内部変数を更新する。
図3は、範囲に応じたBAC出力の例を示す。たとえば、範囲および低が、あるしきい値(たとえば、512)を上回るとき、ビットストリームに「1」が出力される。範囲および低が、あるしきい値(たとえば、512)を下回るとき、ビットストリームに「0」が出力される。範囲および下側が、あるしきい値間にあるとき、ビットストリームに何も出力されない。代わりに、BO値が増分され、次のビンが符号化される。
【0052】
[0061] HEVCのCABACコンテキストモデルでは、128個の状態がある。0から63までであり得る(状態σによって示される)64個の可能なLPS確率がある。各MPSは0または1であり得る。したがって、128個の状態は、64個の状態確率×MPSのための2個の可能な値(0または1)である。したがって、確率モデルは7ビットエントリとして記憶され得る。各7ビットエントリにおいて、確率状態を表すために6ビットが割り振られ得、適用可能なコンテキストメモリ中の優勢シンボル(MPS)のために1ビットが割り振られ得る。
【0053】
[0062] LPS範囲(範囲LPS
σ)を導出する計算を低減するために、HEVCでは、すべての場合についての結果が事前計算され、近似値としてルックアップテーブルに記憶される。したがって、LPS範囲は、単純なテーブルルックアップを使用することによって、乗算なしに取得され得る。乗算は、多くのハードウェアアーキテクチャにおいて有意なレイテンシ(latency)を生じ得るので、この動作を回避することは、いくつかのデバイスまたはアプリケーションにとって重要であり得る。
【0054】
[0063] 4列事前計算LPS範囲テーブルが乗算の代わりに使用され得る。範囲は4つのセグメントに分割される。セグメントインデックスは、質問(範囲>>6)&3によって導出され得る。事実上、セグメントインデックスは、実際の範囲からビットをシフトし、ドロップすることによって導出される。以下の表1は、可能な範囲およびそれらの対応するインデックスを示す。
【0056】
[0064] LPS範囲テーブルは、次いで、64個のエントリ(確率状態ごとに1つ)×4(範囲インデックスごとに1つ)を有する。各エントリは、範囲LPS、すなわち、範囲にLPS確率を乗算した値である。このテーブルの部分の一例が以下の表2に示される。表2は、確率状態9〜12を示す。HEVCのための1つの提案では、確率状態は0〜63にわたり得る。
【0058】
[0065] 各セグメント(すなわち、範囲値)において、各確率状態σのLPS範囲があらかじめ定義される。言い換えれば、確率状態
σのLPS範囲が4つの値(すなわち、範囲インデックスごとに1つの値)に量子化される。所与のポイントにおいて使用される特定のLPS範囲は、範囲がどのセグメントに属するかに依存する。テーブル中で使用される可能なLPS範囲の数は、テーブル列の数(すなわち、可能なLPS範囲値の数)とLPS範囲精度との間のトレードオフである。概して、より多数の列は、LPS範囲値のより小さい量子化誤差を生じるが、また、テーブルを記憶するためにより多くのメモリの必要を増加させる。より少数の列は、量子化誤差を増加させるが、また、テーブルを記憶するために必要とされるメモリを低減する。
【0059】
[0066] 上記で説明されたように、各LPS確率状態は、対応する確率を有する。HEVCでは、64個の代表的確率値p
σ∈[0.01875,0.5]が、再帰的式である以下の式(1)に従ってLPS(劣勢シンボル)について導出される。
【0061】
[0067] 上記の例では、選定されたスケーリングファクタ(scaling factor)α≒0.9492と確率のセットのカーディナリティ(cardinality)N=64の両方が、確率表現の精度と高速適応のための要望との間の良好な妥協を表す。いくつかの例では、1により近いαの値は、より高い精度をもつ遅い適応(「定常状態挙動(steady-state behavior)」)を生じ得、より速い適応は、精度の低減という犠牲を払ってαの値を減少させる、非定常の場合に達成され得る。スケーリングファクタαは、現在の更新に有意な影響を有する、前に符号化されたビンの数を示すウィンドウサイズに対応し得る。MPS(優勢シンボル)の確率は、1−LPS(劣勢シンボル)の確率に等しい。言い換えれば、MPSの確率は、式(1−LPS)によって表され得、ここで、「LPS」はLPSの確率を表す。したがって、HEVCにおけるCABACによって表され得る確率範囲は、[0.01875,0.98125(=1−0.01875)]である。
【0062】
[0068] シンタックス要素のための値のビット(または「ビン(bin)」)をコーディングするために使用されるコンテキストの確率状態が、信号統計値(すなわち、たとえばシンタックス要素のために、前にコーディングされたビンの値)に従うために更新されるので、CABACは適応型である。更新プロセスは以下の通りである。所与の確率状態について、更新は、状態インデックスと、LPSまたはMPSのいずれかとして識別される符号化シンボルの値とに依存する。更新プロセスの結果として、潜在的に修正されたLPS確率推定値と、必要な場合、修正されたMPS値とを含む、新しい確率状態が導出される。
【0063】
[0069] 各ビンのコーディングの後にコンテキスト切替えが行われ得る。MPSに等しいビン値の場合、所与の状態インデックスは単に1だけ増分される。これは、LPS確率がすでにそれの最小値にある(または、等価的に、最大MPS確率が達せられる)、状態インデックス62においてMPSが発生したときを除く、すべての状態について。この場合、LPSが参照されるか、または最後のビン値が符号化されるまで、状態インデックスは固定のままである(最後のビン値の特殊な場合には特殊終了状態が使用される)。LPSが発生したとき、状態インデックスは、以下の式に示すように、状態インデックスをある量だけ減分することによって変更される。このルールは、概して、以下の例外とともにLPSの各発生に適用される。LPSが、同程度の確率がある場合に対応する、インデックスσ=0をもつ状態において符号化されたと仮定すると、状態インデックスは固定のままであるが、MPS値は、LPSの値とMPSの値とが交換されるようにトグルされることになる。すべての他の場合では、たとえどのシンボルが符号化されたとしても、MPS値は改変されない。概して、ビデオコーダは、所与のLPS確率p
oldと、それの更新されたカウンターパート(counterpart)p
newとの間の関係を示す、以下の式(2)に従って新しい確率状態を導出し得る。
【0065】
[0070] 複雑さを低減するために、ビデオコーダは、すべての遷移ルールが、いくつかのエントリをそれぞれ有する高々2つのテーブルによって実現され得るように、CABACを実装し得る。一例として、すべての遷移ルールは、7ビット符号なし整数値の128個のエントリをそれぞれ有する高々2つのテーブルによって実現され得る(たとえば、以下の表3および表4)。別の例として、すべての遷移ルールは、6ビット符号なし整数値の63個のエントリをそれぞれ有する高々2つのテーブルによって実現され得る(たとえば、HEVCの表9−41)。状態インデックスiが与えられれば、更新した後に、ビデオコーダは、新しい状態インデックスとして、MPS値がコーディングされるときにTransIdxMPS[i]を定義し、またはLPS値がコーディングされるときにTransIdxLPS[i]を定義し得る。
【0068】
[0071] いくつかの例では、ビデオコーダは、所与の状態インデックスσについて、LPSが観測された場合に新しい更新された状態インデックスTransIdxLPS[σ]を決定する、単一のテーブルTransIdxLPSを用いて状態遷移を決定し得る。MPS駆動型遷移は、1の固定値による状態インデックスの単純な(飽和)増分によって取得され、更新された状態インデックスmin(σ+1,62)を生じることができる。
【0069】
[0072] 上記で説明されたように、コンテキストモデリング(context modeling)は、より高いコーディング効率を達成するための寄与ファクタである正確な確率推定(probability estimation)を与える。したがって、コンテキストモデリングは適応型プロセスである。異なるコンテキストが異なるビンについて使用され得、コンテキストの確率は、前にコーディングされたビンの値に基づいて更新され得る。同様の分布をもつビンは、しばしば同じコンテキストを共有する。各ビンのためのコンテキストは、シンタックス要素のタイプ、シンタックス要素中のビン位置(binIdx)、ルーマ/クロマ情報、隣接情報などに基づいて選択され得る。
【0070】
[0073] 所与のスライスをコーディングする前に、1つまたは複数のあらかじめ定義された値に基づいて確率モデルが初期化される。たとえば、qpによって示される入力量子化パラメータと、initValによって示されるあらかじめ定義された値とが与えられれば、(状態およびMPSによって示される)確率モデルの7ビットエントリが以下の式(3)に従って導出され得る。
【0072】
[0074] 導出された状態インデックスはMPS情報を暗黙的に含む。より詳細には、状態インデックスが偶数値であるとき、MPS値は0に等しい。逆に、状態インデックスが奇数値であるとき、MPS値は1に等しい。「initVal」の値は、8ビット精度での[0,255]の範囲内にある。あらかじめ定義された値「initVal」はスライス依存である。言い換えれば、確率モデルのためのコンテキスト初期化パラメータの3つのセットは、それぞれI、P、およびBスライス中で1つずつ使用される。このようにして、CABACを実行するように構成されたビデオ符号化デバイスは、3つの初期化テーブル間でこれらのスライスタイプ(slice type)のために選定することを可能にされ、したがって、異なるコーディングシナリオおよび/または異なるタイプのビデオコンテンツへのより良い適合が達成され得る。
【0073】
[0075] HEVCによれば、1つのP(またはB)スライスがB(またはP)スライスを用いて初期化されることを可能にするために、別のツールが適用され得る。逆に、そのツールは、1つのBスライスがPスライスを用いて初期化されることを可能にするために適用され得る。関係するシンタックス要素が、(HEVCのセクション7.3.6.1に対応する)以下の表5で説明され、表5の後に、関係するセマンティクス(semantics)および復号プロセス(decoding process)が以下で説明される。
【0075】
[0076] 表5のシンタックス要素のためのセマンティクスは以下のように定義され得る。
【0076】
[0077] 1に等しいcabac_init_present_flagは、PPSを参照するスライスヘッダ(slice header)中にcabac_init_flagが存在することを指定する。0に等しいcabac_init_present_flagは、PPSを参照するスライスヘッダ中にcabac_init_flagが存在しないことを指定する。
【0077】
[0078] cabac_init_flagは、以下で説明される復号プロセスにおいて定義されている、コンテキスト変数のための初期化プロセスにおいて使用される初期化テーブルを決定するための方法を指定する。cabac_init_flagが存在しないとき、それは0に等しいと推論される。
【0078】
[0079] 記述子:
[0080] ae(v):コンテキスト適応型算術エントロピーコード化シンタックス要素(context-adaptive arithmetic entropy-coded syntax element)。
【0079】
[0081] b(8):任意のパターンのビットストリング(bit string)(8ビット)を有するバイト。
【0080】
[0082] f(n):左ビットが先頭の、(左から右に)書き込まれたn個のビットを使用する固定パターンビットストリング。
【0081】
[0083] se(v):左ビットが先頭の、符号付き整数0次指数ゴロムコード化シンタックス要素(signed integer 0-th order Exp-Golomb-coded syntax element)。
【0082】
[0084] u(n):n個のビットを使用する符号なし整数。シンタックステーブル中でnが「v」であるとき、ビット数は、他のシンタックス要素の値に依存する様式で変動する。
【0083】
[0085] ue(v):左ビットが先頭の、符号なし整数0次指数ゴロムコード化シンタックス要素(unsigned integer 0-th order Exp-Golomb-coded syntax element)。
【0084】
[0086] HEVCの表9−4は、3つの初期化タイプの各々について、初期化が必要とされるコンテキストインデックス(ctxIdx)を与える。表9−4は、さらに、初期化のために必要とされるinitValueの値を含むテーブル番号(ctxTable)を含む。PおよびBスライスタイプの場合、initTypeの導出は、cabac_init_flagシンタックス要素の値に依存する。ビデオコーダは、Tthe可変initTypeは、続く以下の擬似コードによって記述される動作を使用してとして導出されるを導出し得る。
【0086】
[0087] 新しい算術コーダが、Alshinら、「Multi-parameter probability up-date for CABAC」、文書:JCTVC−F254、JCT−VC of ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、第6回会議:トリノ、イタリア、2011年7月14〜22日(以下「JCTVC−F254」)、およびAlshinら、「CE1 (subset B): Multi-parameter probability up-date for CABAC」、文書:JCTVC−G764、JCT−VC of ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、第7回会議:ジュネーブ、スイス、2011年11月21〜30日(以下「JCTVC−G764」)に記載されている。JCTVC−F254およびJCTV−G764では、あらゆる確率が1から32767までの整数として表した。したがって、すべての計算は16ビット精度で行われる。AVC CABACにおいて利用される、確率のためのルックアップテーブル(たとえば、上記で説明されたTransIdxMPSおよびTransIdxLPS)および指数メッシュの代わりに、JCTVC−F254およびJCTV−G764において提案されたコーダは、確率更新のために、均一メッシュと、乗算のない式を用いた明示的計算とを利用する。
【0087】
[0088] 確率p
iが、(たとえば、以下の式(4)によって示されるように)(たとえば、kが15に等しい)0から2
kまでの整数P
iである確率インデックスによって表されると仮定する。
【0089】
[0089] (たとえば、以下の式(5)によって示されるように)現代の算術コーデックにおける確率更新のための最も頻繁に使用される以下の式に従うこと。
【0091】
[0090] 式(5)において、現在のシンボルが優勢シンボル(MPS)と一致する場合、yは「0」に等しく、そうでない場合、yは「1」に等しい。この式(すなわち、式(5))は、劣勢シンボル(LPS)の確率のための推定値を与える。上記の説明と同様に、パラメータαは、現在の更新に有意な影響を有する、前に符号化されたビンの数を示すウィンドウサイズに対応し得る。
【0092】
[0091] ウィンドウサイズ(W)が2のべき乗(W=1/2
M、Mは正の整数である)であると仮定した場合、式(4)におけるPiが入力p
oldとして与えられれば、更新された確率インデックスは、式(6)において以下で示される中で書き直され得る。
【0094】
[0092] JCTVC−F254およびJCTV−G764によって提案された1確率更新モデルでは、Mは、すべてのコンテキストについて固定であり、1つのレジスタのみが、更新された確率を記録するために使用される。一例では、Mは6に等しく設定される。すなわち、ウィンドウサイズは64に等しい。確率更新プロセスは、以下の式(7)によって表され得る。
【0096】
[0093] JCTVC−F254およびJCTV−G764によって提案された技法の主要なアイデアは、異なるウィンドウサイズでの(ただ1つではなく)いくつかの確率推定を使用し、それらを次のビン確率予測のために加重平均として組み合わせることである。以下の式(8)および(9)は、JCTVC−F254およびJCTV−G764によって提案された技法の一例を示す。各確率p
iのための式(8)における計算は独立である。
【0099】
[0094] 各確率p
iのための式(8)における計算は独立である。
【0100】
[0095] JCTVC−F254およびJCTV−G764によって提案された方法では、確率推定のための線形結合は、式(10)および(11)に示されているように、W
0=16およびW
1=256(W
i=1/α
i)対応する2つの被加数からなる。式(10)および(11)において、最後のコーディングビンが「1」である場合、Y=2
15であり、最後のコーディングビンが「0」である場合、Y=0であり、「>>M」は、Mビットのための右算術シフトである。
【0104】
[0096] 短い遷移期間の場合、高速更新速度をもつ短距離予測(すなわち、より小さいウィンドウサイズ)のみが好ましい。しかし、最適値の近くでの安定化の後は、大部分のコンテキストについて2確率更新モデルがより正確である。JCTVC−F254およびJCTV−G764は、最後の初期化からの更新のカウンタを導入することを提案する。あらゆる更新の後に、カウンタは1だけ増加する。カウンタが何らかのしきい値を超えるまで、式(10)によって定義される短い「ウィンドウサイズ」モデルのみが使用されることになる。カウンタがしきい値に達したとき、上記の式(12)によって定義されるより正確な2確率更新モデルに切り替えるべきである。JCTVC−F254およびJCTV−G764によって提案された範囲計算プロセスは、512×64ルックアップテーブルを用いて実行される。
【0105】
[0097] JCTVC−F254およびJCTV−G764によって提案された方法によれば、異なるコンテキスト初期化方法が適用される。詳細には、(それぞれ、asCtxInit[0]およびasCtxInit[1]によって示される)2つのパラメータが、式(13)に示されているように各コンテキストのためにあらかじめ定義される。
【0107】
[0098] 1確率更新モデルでは、コンテキストは、15ビット精度でiP0によって表される。2確率更新モデルでは、別の変数iP1が最初にiP0に等しく設定され、いくつのビンがコーディングされたかのカウンタがさらに必要とされる。JCTVC−F254およびJCTV−G764によって提案された方法では、asCtxInit[0]とasCtxInit[1]の両方は16ビットに記憶される。
【0108】
[0099] しかしながら、いくつかの例では、上記で説明された技法(すなわち、HEVCのCABAC技法、およびJCTVC−F254およびJCTV−G764によって提案された修正)は、コーディング効率を低減し、および/またはコーダシステムリソースを準最適に利用し得る、1つまたは複数の問題を有し得る。
【0109】
[0100] 一例として、(たとえば、HEVCまたはH.264/AVCにおいて使用される)上記で説明されたルックアップテーブルベースの算術コーダ技法では、確率更新は、固定ウィンドウサイズでの固定テーブル(すなわち、TransIdxLPSおよびTransIdxMPS)に基づく。固定ウィンドウサイズのこの使用により、更新速度が固定されることになる。しかしながら、シンタックス要素が発生し、コーディングされる必要がある頻度は、所与のCTUまたはスライスについてまったく異なり得る。所与のCTUまたはスライスについての異なる頻度で発生するシンタックス要素と組み合わせられた固定更新速度の制限により、より低い頻度で発生するシンタックス要素の推定された確率が準最適になり得る。たとえば、1つのCUについて、inter_pred_idcの最高2つの値がシグナリングされ得、1つのCU内の変換係数が数回コーディングされ得る。この場合、これらのシンタックス要素について同じ更新速度を使用するとき、1に等しいinter_pred_idcの推定された確率は、変換係数の確率が比較的最適になっていることがあるにもかかわらず、1つのスライス全体をコーディングした後にまだ準最適であり得る。
【0110】
[0101] 別の例として、(たとえば、JCTVC−F254およびJCTV−G764によって提案された)カウンタ技法に基づく上記で説明された算術コーダでは、確率更新速度(probability update speed)は固定であり、高い精度(たとえば、可能な確率インデックスが[1,2
15−1]であり得るは、より低い頻度で選択されるシンタックス要素について低い効率を生じ、これは、望ましくないことがある。
【0111】
[0102] 別の例として、カウンタ技法に基づく算術コーダの2確率更新モデル構成要素では、2つのステータスパラメータ(確率インデックス)が記憶され、更新されなければならず、これは、CABACプロセスのスループットを望ましくなく制限し得る。
【0112】
[0103] また別の例として、画像/ビデオコーディングシステムでは、数百個のコンテキストが使用され得る。JCTVC−F254およびJCTV−G764によって提案された技法では、コンテキストごとに32ビットが必要とされるが、HEVCにおける算術コーダには8ビットのみで十分である。したがって、JCTVC−F254およびJCTV−G764によって提案された技法におけるコンテキスト初期化のためのあらかじめ定義された値のストレージは300%だけ増加され、これは、ストレージに関するハードウェア実装形態について望ましくないことがある。
【0113】
[0104] 本開示の1つまたは複数の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ20および/またはビデオデコーダ30)は、異なるコンテキストについて異なるウィンドウサイズを使用し得る。たとえば、すべてのコンテキストについて固定ウィンドウサイズを使用するHEVCとは対照的に、ビデオコーダは、第1のコンテキストを更新するときに第1のウィンドウサイズを使用し、第2のコンテキストを更新するときに第2の異なるウィンドウサイズを使用し得る。いくつかの例では、ビデオコーダは、まれに使用されるコンテキストについて比較的より小さいウィンドウサイズを使用し得、頻繁に使用されるコンテキストについて比較的より大きいウィンドウサイズを使用し得る。コンテキストが使用される頻度によりぴったり適合されたウィンドウサイズを使用することによって、ビデオコーダは、すべてのコンテキストについて固定ウィンドウサイズを使用するそれ、精度と適応速度との間でより好都合に妥協しながらコンテキストを更新し得る。このようにして、本開示の技法はCABACの効率を改善し得、これは、ビデオコーダが、ビデオデータを符号化するために必要とされるビット数を低減することを可能にし得る。
【0114】
[0105] 本開示で説明される技法は、たとえば、ビデオエンコーダ、ビデオデコーダ、または組み合わせられたビデオエンコーダデコーダ(CODEC)内で実行され得る。特に、そのような技法は、ビデオエンコーダのエントロピー符号化ユニット(entropy encoding unit)および/またはビデオデコーダのエントロピー復号ユニット(entropy decoding unit)において実行され得る。本技法は、たとえば、HEVC規格の態様によるビデオコーディングなど、ビデオコーディングをサポートするように構成され得るCABACプロセス内で実行され得るエントロピー符号化および復号ユニットは、たとえば、残差ビデオデータに関連する量子化された変換係数、動きベクトル情報、シンタックス要素、ならびにビデオ符号化および/またはビデオ復号プロセスにおいて有用であり得る他のタイプの情報など、様々なビデオデータのうちのいずれかを符号化または復号するために、相反するまたは逆の様式でコーディングプロセスを適用するであり得る。
【0115】
[0106]
図4は、本開示で説明される、BACコーディングのための技法を利用するように構成され得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、例示のためにHEVCコーディングのコンテキストにおいて説明されるが、他のコーディング規格または方法に関して本開示を限定するものではない。その上、ビデオエンコーダ20は、HEVCの範囲拡張(range extension)に従って技法を実装するように構成され得る。
【0116】
[0107] ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するピクチャ内のビデオの時間冗長性を低減または除去するか、あるいは他のビュー中のビデオに関する冗長性を低減または除去するために、時間予測またはビュー間予測に依拠する。
【0117】
[0108]
図4の例では、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット42と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット(entropy encoding unit)56とを含む。予測処理ユニット42は、動き推定ユニット44と、動き補償ユニット46と、イントラ予測ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifact)を除去するためにブロック境界をフィルタ処理するための(
図4に示されていない)デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。(ループ中またはループ後の)追加のループフィルタもデブロッキングフィルタに加えて使用され得る。
【0118】
[0109] ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ40に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、(たとえば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPB:decoded picture buffer)の一例である。ビデオデータメモリ40および参照ピクチャメモリ64は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ40および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0119】
[0110] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオピクチャまたはスライスを受信する。ピクチャまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット44および動き補償ユニット46は、時間圧縮を行うかまたはビュー間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット48は、代替的に、空間圧縮を行うために、コーディングされるべきブロックと同じピクチャまたはスライス中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、(たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために)複数のコーディングパスを実行し得る。
【0120】
[0111] その上、パーティションユニット(図示せず)が、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニットは、初めにピクチャまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。予測処理ユニット42は、さらに、サブCUへのLCUの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
【0121】
[0112] 予測処理ユニット42は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し得、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与える。予測処理ユニット42はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット56に与える。
【0122】
[0113] 動き推定ユニット44と動き補償ユニット46とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット44によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在ピクチャ(または他のコード化ユニット)内でコーディングされている現在ブロックに対する参照ピクチャ(または他のコード化ユニット)内の予測ブロックに対する現在ビデオピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット44は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【0123】
[0114] 動き推定ユニット44は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する1つまたは複数の参照ピクチャリスト(RPL:reference picture list)から選択され得る。動き推定ユニット44は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット46とに送る。いくつかの例では、動き推定ユニット44は、選択された参照ピクチャの指示をエントロピー符号化ユニット56に送り得る。
【0124】
[0115] 動き補償ユニット46によって実行される動き補償は、動き推定ユニット44によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット44および動き補償ユニット46は、いくつかの例では、機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット46は、動きベクトルが参照ピクチャリスト(RPL)のうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器50は、以下で説明されるように、コーディングされている現在ブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット44はルーマ成分に対して動き推定を実行し、動き補償ユニット46は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。予測処理ユニット42はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【0125】
[0116] イントラ予測ユニット48は、上記で説明されたように、動き推定ユニット44と動き補償ユニット46とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット48は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット48は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用してブロックを符号化し得、イントラ予測ユニット48は、複数のイントラ予測モードから使用するのに適切なイントラ予測モードを選択し得る。
【0126】
[0117] たとえば、イントラ予測ユニット48は、様々なテストされたイントラ予測モードのためのレートひずみ分析(rate-distortion analysis)を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット48は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのためのひずみおよびレートから比を計算し得る。いくつかの例では、複数のイントラ予測モードの各々は、イントラ予測ユニット48によって(すなわち、ビデオデコーダに)シグナリングされ得る、対応するモードインデックスを有し得る。
【0127】
[0118] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、予測処理ユニット42からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。
【0128】
[0119] 変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
【0129】
[0120] 変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータ(quantization parameter)を調整することによって修正され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【0130】
[0121] 変換係数が1次元アレイに走査されると、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、確率間隔区分エントロピーコーディング(PIPE)、ゴロムコーディング、ゴロム−ライスコーディング、指数ゴロムコーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、または別のエントロピーコーディング方法などのエントロピーコーディングを係数に適用し得る。本開示の例による、様々な異なるエントロピーコーディングプロセスへの参照が行われるが、エントロピー符号化ユニット56は、上記で説明されたようにBACコーディングを実行するように構成され得る。
【0131】
[0122] CAVLCを実行するために、エントロピー符号化ユニット56は、送信されるべきシンボルのための可変長コードを選択し得る。VLC中のコードワードは、比較的より短いコードが、可能性がより高いシンボルに対応し、より長いコードが、可能性がより低いシンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのための等長コードワードを使用することに勝るビット節約を達成し得る。
【0132】
[0123] CABACを実行するために、エントロピー符号化ユニット56は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストを選択し得る。コンテキストは、たとえば、隣接値が非0であるか否かに関係し得る。エントロピー符号化ユニット56はまた、選択された変換を表す信号など、シンタックス要素をエントロピー符号化し得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、得られた符号化ビデオは、ビデオデコーダ30などの別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
【0133】
[0124] 本開示の1つまたは複数の技法によれば、エントロピー符号化ユニット56は、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのデータ(たとえば、1次元バイナリベクトルとして表されるシンタックス要素値)をエントロピー符号化する(entropy code)とき、異なるウィンドウサイズを選択し得る。エントロピー符号化ユニット56の一例のさらなる詳細は、
図5を参照しながら以下で説明される。
【0134】
[0125] 逆量子化処理ユニット58および逆変換処理ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。
【0135】
[0126] 動き補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、参照ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成するために、動き補償ユニット46によって生成された動き補償予測ブロックに再構成された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオピクチャ中のブロックをインターコーディングするために動き推定ユニット44および動き補償ユニット46によって参照ブロックとして使用され得る。現在ピクチャが現在ピクチャを予測するための参照ピクチャとして使用される場合など、いくつかの例では、動き補償ユニット46および/または加算器62は、現在ピクチャをコーディングしながら、一定の間隔で、参照ピクチャメモリ64によって記憶された現在ピクチャのバージョンを更新し得る。一例として、動き補償ユニット46および/または加算器62は、現在ピクチャの各ブロックをコーディングした後に、参照ピクチャメモリ64によって記憶された現在ピクチャのバージョンを更新し得る。たとえば、現在ブロックのサンプルが、初期化された値として参照ピクチャメモリ64に記憶される場合、動き補償ユニット46および/または加算器62は、現在ブロックのための再構成されたサンプルで、参照ピクチャメモリ64によって記憶された現在ピクチャの現在のサンプルを更新し得る。
【0136】
[0127] フィルタ処理ユニット(図示せず)は、様々なフィルタ処理プロセスを実行し得る。たとえば、フィルタ処理ユニットはデブロッキングを実行し得る。すなわち、フィルタ処理ユニットは、再構成されたビデオのスライスまたはフレームを形成する複数の再構成されたビデオブロックを受信し、スライスまたはフレームからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタ処理し得る。一例では、フィルタ処理ユニットは、ビデオブロックのいわゆる「境界強度(boundary strength)」を評価する。ビデオブロックの境界強度に基づいて、ビデオブロックのエッジピクセルが、閲覧者にとって1つのビデオブロックからの遷移を知覚することがより困難になるように、隣接するビデオブロックのエッジピクセルに対してフィルタ処理され得る。
【0137】
[0128] いくつかの例では、動き補償ユニット46および/または加算器62は、フィルタ処理がサンプルに対するフィルタ処理(たとえば、デブロッキングおよび/またはSAO)を実行する前に、参照ピクチャメモリ64によって記憶された現在ピクチャのバージョンを更新し得る。たとえば、フィルタ処理ユニットは、フィルタ処理を適用する前に、ピクチャ全体がコーディングされるまで待ち得る。このようにして、動き推定ユニット44は、フィルタ処理を適用する前に、参照として現在ピクチャを使用し得る。いくつかの例では、フィルタ処理ユニットは、参照ピクチャメモリ64によって記憶された現在ピクチャのバージョンが更新されたとき、フィルタ処理を実行し得る。たとえば、フィルタ処理ユニットは、各ブロックが更新されたとき、フィルタ処理を適用し得る。このようにして、動き推定ユニット44は、フィルタ処理を適用した後、参照として現在ピクチャを使用し得る。
【0138】
[0129] 本技法のいくつかの異なる態様および例が本開示で説明されるが、本技法の様々な態様および例は、一緒にまたは互いに別々に実行され得る。言い換えれば、本技法は、上記で説明された様々な態様および例に厳密に限定されるべきではなく、組み合わせて使用されるか、あるいは一緒におよび/または別々に実行され得る。さらに、いくつかの技法は、(イントラ予測ユニット48、動き補償ユニット46、またはエントロピー符号化ユニット56などの)ビデオエンコーダ20のいくつかのユニットに起因され得るが、ビデオエンコーダ20の1つまたは複数の他のユニットも、そのような技法を行うことを担当し得ることを理解されたい。
【0139】
[0130]
図5は、本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー符号化ユニット(entropy encoding unit)56のブロック図である。シンタックス要素118がエントロピー符号化ユニット56に入力される。シンタックス要素がすでにバイナリ値シンタックス要素(たとえば、フラグ、または0および1の値のみを有する他のシンタックス要素)である場合、2値化のステップはスキップされ得る。シンタックス要素が非バイナリ値シンタックス要素(non-binary valued syntax element)(たとえば、1または0以外の値を有し得るシンタックス要素)である場合、非バイナリ値シンタックス要素はバイナライザ120によって2値化される。バイナライザ120は、バイナリ決定のシーケンスへの非バイナリ値シンタックス要素のマッピングを実行する。これらのバイナリ決定は、しばしば「ビン」と呼ばれる。たとえば、変換係数レベルでは、レベルの値は連続するビンに分けられ得、各ビンは、係数レベルの絶対値がある値よりも大きいか否かを示す。たとえば、(有意性フラグと呼ばれることがある)ビン0は、変換係数レベルの絶対値が0よりも大きいか否かを示す。ビン1は、変換係数レベルの絶対値が1よりも大きいか否かを示す、などである。各非バイナリ値シンタックス要素について、一意のマッピングが作成され得る。
【0140】
[0131] バイナライザ120によって生成された各ビンは、エントロピー符号化ユニット56のバイナリ算術コーディング側に供給される。すなわち、非バイナリ値シンタックス要素の所定のセットについて、各ビンタイプ(たとえば、ビン0)が次のビンタイプ(たとえば、ビン1)の前にコーディングされる。コーディングは、通常モードまたはバイパスモードのいずれかで実行され得る。バイパスモードでは、バイパスコーディングエンジン126が、固定確率モデルを使用して、たとえば、ゴロム−ライスまたは指数ゴロムコーディングを使用して、算術コーディングを実行する。バイパスモードは、概して、より予測可能なシンタックス要素のために使用される。
【0141】
[0132] 通常モードでのコーディングは、CABACを実行することを伴う。通常モードCABACは、ビンの値の確率が、前にコーディングされたビンのそのときの値を与えられれば予測可能である場合に、ビン値をコーディングするためのものである。ビンがLPSである確率がコンテキストモデラ(context modeler)122によって決定される。コンテキストモデラ122は、ビン値とコンテキストのための確率状態(たとえば、LPSの値と、LPSが発生する確率とを含む確率状態σ)とを出力する。コンテキストは、一連のビンのための初期コンテキストであり得るか、または前にコーディングされたビンのコード化値に基づいて決定され得る。上記で説明されたように、コンテキストモデラ122は、受信されたビンがMPSであったのかLPSであったのか否かに基づいて状態を更新し得る。コンテキストおよび確率状態
σがコンテキストモデラ122によって決定された後、通常コーディングエンジン124がビン値に対してBACを実行する。
【0142】
[0133] 本開示の1つまたは複数の技法によれば、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の同じ値(たとえば、ウィンドウサイズ、またはスケーリングファクタ(α)、または固定確率更新速度のうちの1つまたは複数)を使用することとは対照的に、エントロピー符号化ユニット56は、異なるコンテキストおよび/または異なるシンタックス要素について変数の異なる値を使用し得る。たとえば、コンテキストモデラ122は、複数のコンテキストのうちのコンテキストについて、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の値を決定し、決定された値に基づいて確率状態を更新し得る。
【0143】
[0134] いくつかの例では、次の確率状態を決定するためにコンテキストモデラ122によって使用されるウィンドウサイズはコンテキスト依存にされ得る。たとえば、コンテキストモデラ122は、異なるコンテキストについて異なるウィンドウサイズを使用し得る。一例として、コンテキストモデラ122は、複数のコンテキストのうちの第1のコンテキストのための第1のウィンドウサイズを決定し、第1のウィンドウサイズとは異なる、複数のコンテキストのうちの第2のコンテキストのための第2のウィンドウサイズを決定し得る。
【0144】
[0135] いくつかの例では、上記のコンテキスト依存更新方法を、JCTVC−F254およびJCTV−G764におけるものなど、カウンタベース算術コーダに組み込むとき、ウィンドウサイズの値はコンテキストに依存し得る。さらに、各コンテキストは、式(4)からの確率Piに加えて、ウィンドウサイズにさらに関連し得る。
【0145】
[0136] いくつかの例では、コンテキストモデラ122は、2
Mに等しいことがあるウィンドウサイズWを使用し得、ここで、Mは正の整数であり得る。したがって、いくつかのコンテキストモデルは同じM値を有し得るが、各コンテキストは、他のコンテキストとは異なり得る、それ自体のM値を有し得る。
【0146】
[0137] いくつかの例では、コンテキストモデラ122は、ウィンドウサイズのあらかじめ定義されたセット(pre-defined set)からウィンドウサイズを決定し得る。いくつかの例示的なあらかじめ定義されたウィンドウサイズは、16、32、64、および128であるが、他のウィンドウサイズが企図される。たとえば、可能なM値のセットがあらかじめ定義され得、たとえば、Mは、両端値を含む、4から7までにわたることがある。いくつかの例では、コンテキストモデラ122は、可能なウィンドウサイズのセットの指示(たとえば、可能なM値のセットの指示)が、スライスヘッダ、あるいはピクチャパラメータセット、アクティブパラメータセット、シーケンスパラメータセット、またはビデオパラメータセットを含むパラメータセット中でシグナリングされることを引き起こし得る。
【0147】
[0138] いくつかの例では、各コンテキストに関連するウィンドウサイズ(たとえば、Mの値)はあらかじめ定義され得る。いくつかの例では、ウィンドウサイズは、さらに、スライスタイプおよび/または(たとえば、HEVCではtemporalIdと呼ばれる)時間識別子に依存し得る。いくつかの例では、ウィンドウサイズは、さらに、ピクチャタイプ(またはNALユニットタイプ)、たとえば、ピクチャがランダムアクセスピクチャであるか否かに依存し得る。
【0148】
[0139] いくつかの例では、コンテキストモデラ122は、各コンテキストに関連するウィンドウサイズ(たとえば、Mの値)が、スライスヘッダ/ピクチャパラメータセット/アクティブパラメータセット/シーケンスパラメータセット中でなど、ビットストリーム中でシグナリングされることを引き起こし得る。たとえば、各コンテキストのためのデフォルトウィンドウサイズ(default window size)が最初にあらかじめ定義され得る。各それぞれのコンテキストモデルについて、コンテキストモデラ122は、デフォルトウィンドウサイズがそれぞれのコンテキストのために使用されるかどうかを示す、それぞれのシンタックス要素(たとえば、フラグ)を符号化し得る。デフォルトウィンドウサイズがそれぞれのコンテキストのために使用されない場合、コンテキストモデラ122は、デフォルトウィンドウサイズに基づいて、実際の使用されるウィンドウサイズを差分符号化し得る。いくつかの例では、コンテキストモデラ122は、すべてのコンテキストの(すなわち、デフォルトウィンドウサイズが使用されるかどうかを示す)シンタックス要素を一緒に編成し、これらのシンタックス要素をコーディングするためにランレングスコーディング(run-length coding)を利用し得る。いくつかの例では、コンテキストモデラ122は、実際に使用されるウィンドウサイズとデフォルトウィンドウサイズとの間の差分をコーディングするとき、マッピングテーブル(mapping table)を利用し得る。たとえば、デフォルトのM値が6に等しい場合、可能なM値は、4、5、6、および7である。マッピングテーブルは次のように定義され得る。
【0150】
[0140] いくつかの例では、コンテキストモデラ122は、各コンテキストについて実際のウィンドウサイズとデフォルトウィンドウサイズとの間の差分を直接コーディングし得る。たとえば、デフォルトのM値が4である場合、コンテキストモデラ122は、各コンテキストについてM−4をコーディングし得る。
【0151】
[0141] いくつかの例では、コンテキストモデラ122は、現在スライス(current slice)中のコンテキストのためのすべてのウィンドウサイズが、前にコーディングされたスライス中の対応するコンテキストのための継承(inherit)されたウィンドウサイズである(すなわち、前にコーディングされたスライス中の対応するコンテキストのためのウィンドウサイズに等しく設定される)かどうかを示す、第1のシンタックス要素をコーディングし得る。一例では、「前に復号されたスライス(previously decoded slice)」は、現在スライスと同じスライスタイプ、または同じスライスタイプと量子化パラメータの両方、または同じスライスタイプと時間レイヤの両方、および/あるいは同じ初期化された量子化パラメータを有する、前にコーディングされたスライスとして定義され得る。いくつかの例では、前のスライスは、DPB中に存在するピクチャに属することが必要であり得、参照ピクチャとして現在ピクチャのために使用され得、特に、HEVCベースプラットフォームの場合のように、前のスライスは、参照ピクチャセット(RPS)中のピクチャ、さらには、RPSの以下のサブセット、すなわち、RefPicSetStCurrBefore、RefPicSetStCurrAfter、およびRefPicSetLtCurrのうちの1つ中のピクチャに属することが必要とされ得る。
【0152】
[0142] いくつかの例では、コンテキストモデラ122は、デフォルトウィンドウサイズが(たとえば、現在スライス中の)複数のコンテキストのために使用されるかどうかを示す第1のシンタックス要素をコーディングし得る。デフォルトウィンドウサイズが複数のコンテキストのために使用されない場合、コンテキストモデラ122は、コンテキストのためのウィンドウサイズを示す第2のシンタックス要素をコーディングし得る。たとえば、コンテキストモデラ122は、コンテキストのためのウィンドウサイズとデフォルトウィンドウサイズとの間の差分を示す第2のシンタックス要素をコーディングし得る。
【0153】
[0143] 別の例では、コンテキストモデラ122は、たとえば、前のスライスまたはピクチャからのコード化情報に基づいて、ウィンドウサイズを導出し得る。たとえば、コンテキストモデラ122は、1つのコンテキストに関連する前のスライス中のコーディングされたビンを追跡し得る。可能なウィンドウサイズの各候補について、コンテキストモデラ122は、これらのビンをコーディングするために消費されるビットを取得し、これらのビンをコーディングするための最小ビットを生じるウィンドウサイズを、このコンテキストのためのウィンドウサイズとして選択し得る。コンテキストモデラ122は、後続のスライス/ピクチャをコーディングするために、選択されたウィンドウサイズを使用し得る。
【0154】
[0144] いくつかの例では、算術コーダにおいて次の確率状態または確率更新速度(probability update speed)を決定するために使用される「ウィンドウサイズ(window size)」は、たとえば、コンテキストが、異なるシンタックス要素の間で共有される場合、シンタックス要素固有であり得る。たとえば、シンタックス要素のビンを符号化するためにコンテキストを使用するとき、コンテキストモデラ122は、シンタックス要素に基づいてコンテキストのためのウィンドウサイズを決定し得る。一例として、コーディングユニットスプリットシンタックス要素(coding unit split syntax element)のビンと、コーディングユニットスキップフラグシンタックス要素(coding unit skip flag syntax element)のビンとをコーディングするときの、コンテキストの状態を更新するために使用されるウィンドウサイズは同じ、たとえば、16(すなわち、M=4)であり得る。
【0155】
[0145] 本開示の1つまたは複数の技法によれば、コンテキストモデラ122は、ビデオデータを復号する際にビデオデコーダ30が使用するためのデータ(たとえば、1次元ベクトルを表すシンタックス要素および/または他のシンタックス要素)をエントロピー符号化するとき、異なるウィンドウサイズを適応的に決定し得る。たとえば、各コンテキストについて、コンテキストモデラ122は、異なるウィンドウサイズで、記録されたビンストリングをコーディングするビットを計算し、最小ビットをもつ1つのウィンドウサイズを選択し得る。ウィンドウサイズがウィンドウサイズのあらかじめ定義されたセットから選択される場合、コンテキストモデラ122は、ウィンドウサイズのあらかじめ定義されたセットのうちのそれぞれのウィンドウサイズについて、コンテキストを用いてビンストリングを符号化するために使用されるビットのそれぞれの量を決定し、ビットの最も小さい量に対応する、ウィンドウサイズのあらかじめ定義されたセットのうちのウィンドウサイズを、そのコンテキストのためのウィンドウサイズとして選択し得る。
【0156】
[0146] いくつかの例では、上記の(1つまたは複数の)技法は特定のコンテキストに適用可能であり得る。すなわち、コンテキストのサブセットは、デフォルトウィンドウサイズではなく更新された「ウィンドウサイズ」を使用し得る。いくつかの例では、上記の(1つまたは複数の)技法は特定のスライスタイプに適用可能であり得る。
【0157】
[0147]
図4に戻ると、いくつかの場合には、エントロピー符号化ユニット56またはビデオエンコーダ20の別のユニットは、エントロピーコーディングに加えて、他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット56は、CUとPUとのためのコード化ブロックパターン(CBP:coded block pattern)値を決定するように構成され得る。また、いくつかの場合には、エントロピー符号化ユニット56は係数のランレングスコーディングを実行し得る。さらに、エントロピー符号化ユニット56、または他の処理ユニットはまた、量子化行列の値など、他のデータをコーディングし得る。
【0158】
[0148] 上記で説明されたように、逆量子化ユニット(inverse quantization unit)58および逆変換処理ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット46は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成するために、動き補償ユニット46によって生成された動き補償予測ブロックに再構成された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット44および動き補償ユニット46によって参照ブロックとして使用され得る。
【0159】
[0149]
図6は、本開示で説明される技法を実装し得るビデオデコーダ30の一例を示すブロック図である。この場合も、ビデオデコーダ30は、例示のためにHEVCコーディングのコンテキストにおいて説明されるが、他のコーディング規格に関して本開示を限定するものではない。その上、ビデオデコーダ30は、範囲拡張(range extension)に従って技法を実装するように構成され得る。
【0160】
[0150]
図6の例では、ビデオデコーダ30は、ビデオデータメモリ69と、エントロピー復号ユニット70と、予測処理ユニット71と、逆量子化処理ユニット76と、逆変換処理ユニット78と、加算器80と、参照ピクチャメモリ82とを含み得る。予測処理ユニット71は、動き補償ユニット72とイントラ予測ユニット74とを含む。ビデオデコーダ30は、いくつかの例では、
図4からのビデオエンコーダ20に関して説明された符号化パスに概して相反する復号パスを実行し得る。
【0161】
[0151] ビデオデータメモリ69は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリーム(encoded video bitstream)などのビデオデータを記憶し得る。ビデオデータメモリ69に記憶されるビデオデータは、たとえば、ストレージデバイス34から、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ69は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB:coded picture buffer)を形成し得る。
【0162】
[0152] 参照ピクチャメモリ82は、(たとえば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPB:decoded picture buffer)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0163】
[0153] 復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット(entropy decoding unit)70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する(entropy decode)。いくつかの例では、エントロピー復号ユニット70は、エンコーダによって使用されるプロセスとは概して逆であるプロセスを適用し得る。エントロピー復号ユニット70は、変換係数の1次元アレイを取り出すために、符号化ビットストリームに対してエントロピー復号プロセスを実行する。使用されるエントロピー復号プロセスは、ビデオエンコーダ20によって使用されたエントロピーコーディング(たとえば、CABAC、CAVLC、PIPE、または上記で説明された他のプロセス)に依存する。本開示で説明される技法によれば、エントロピー復号ユニット70は、本開示で説明されるように、たとえばCABACプロセス内で、BACプロセスを適用し得る。エンコーダによって使用されたエントロピーコーディングプロセスにおけるウィンドウサイズは、符号化ビットストリーム中でシグナリングされ得るか、または所定のプロセスであり得る。
【0164】
[0154] エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0165】
[0155]
図7は、本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー復号ユニット70のブロック図である。
図7のエントロピー復号ユニット70は、
図5で説明されたエントロピー符号化ユニット56の様式とは逆の様式でCABACを実行する。ビットストリーム218からのコード化ビットがエントロピー復号ユニット70に入力される。コード化ビットは、それらがバイパスモードを使用してエントロピーコーディングされたのか、通常モードを使用してエントロピーコーディングされたのか否かに基づいて、コンテキストモデラ220またはバイパスコーディングエンジン222のいずれかに供給される。コード化ビットがバイパスモードでコーディングされた場合、バイパス復号エンジンは、たとえば、バイナリ値シンタックス要素または非バイナリシンタックス要素のビンを取り出すために、ゴロム−ライスまたは指数ゴロム復号を使用することになる。
【0166】
[0156] コード化ビットが通常モードでコーディングされた場合、コンテキストモデラ220はコード化ビットのための確率モデルを決定し得、通常復号エンジン224は、非バイナリ値シンタックス要素のビン(または、バイナリ値の場合、シンタックス要素自体)を生成するためにコード化ビットを復号し得る。コンテキストおよび確率状態σがコンテキストモデラ220によって決定された後、通常復号エンジン224は、ビン値を復号するためにBACを実行する。言い換えれば、通常復号エンジン224は、コンテキストの確率状態を決定し、前にコーディングされたビンと現在の範囲とに基づいてビン値を復号し得る。ビンを復号した後、コンテキストモデラ220は、ウィンドウサイズと復号されたビンの値とに基づいてコンテキストの確率状態を更新し得る。
【0167】
[0157] 本開示の1つまたは複数の技法によれば、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の同じ値(たとえば、ウィンドウサイズ、スケーリングファクタ(α)、および固定確率更新速度のうちの1つまたは複数)を使用することとは対照的に、エントロピー符号化ユニット56は、異なるコンテキストおよび/または異なるシンタックス要素について変数の異なる値を使用し得る。たとえば、コンテキストモデラ220は、複数のコンテキストのうちのコンテキストについて、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の値を決定し、決定された値に基づいて確率状態を更新し得る。
【0168】
[0158] いくつかの例では、次の確率状態を決定するためにコンテキストモデラ220によって使用されるウィンドウサイズはコンテキスト依存にされ得る。たとえば、コンテキストモデラ220は、異なるコンテキストについて異なるウィンドウサイズを使用し得る。一例として、コンテキストモデラ220は、複数のコンテキストのうちの第1のコンテキストのための第1のウィンドウサイズを決定し、第1のウィンドウサイズとは異なる、複数のコンテキストのうちの第2のコンテキストのための第2のウィンドウサイズを決定し得る。
【0169】
[0159] いくつかの例では、上記のコンテキストモデル依存更新方法を、JCTVC−F254およびJCTV−G764におけるものなど、カウンタベース算術コーダに組み込むとき、ウィンドウサイズの値はコンテキストに依存し得る。さらに、各コンテキストは、式(4)からの確率Piに加えて、ウィンドウサイズにさらに関連し得る。
【0170】
[0160] いくつかの例では、コンテキストモデラ220は、2
Mに等しいことがあるウィンドウサイズWを使用し得、ここで、Mは正の整数であり得る。したがって、いくつかのコンテキストは同じM値を有し得るが、各コンテキストは、他のコンテキストとは異なり得る、それ自体のM値を有し得る。
【0171】
[0161] いくつかの例では、コンテキストモデラ220は、ウィンドウサイズのあらかじめ定義されたセットからウィンドウサイズを決定し得る。たとえば、可能なM値のセットがあらかじめ定義され得、たとえば、Mは、両端値を含む、4から7までにわたることがある。いくつかの例では、エントロピー復号ユニット70は、スライスヘッダ、あるいはピクチャパラメータセット、アクティブパラメータセット、シーケンスパラメータセット、またはビデオパラメータセットを含むパラメータセットから、可能なウィンドウサイズのセットの指示(たとえば、可能なM値のセットの指示)を復号し得る。
【0172】
[0162] いくつかの例では、各コンテキストに関連するウィンドウサイズ(たとえば、Mの値)はあらかじめ定義され得る。いくつかの例では、ウィンドウサイズは、さらに、スライスタイプおよび/または(たとえば、HEVCではtemporalIdと呼ばれる)時間識別子に依存し得る。いくつかの例では、ウィンドウサイズは、さらに、ピクチャタイプ(またはNALユニットタイプ)、たとえば、ピクチャがランダムアクセスピクチャであるか否かに依存し得る。
【0173】
[0163] いくつかの例では、エントロピー復号ユニット70は、スライスヘッダ/ピクチャパラメータセット/アクティブパラメータセット/シーケンスパラメータセット中でなど、ビットストリームから、各コンテキストに関連するウィンドウサイズ(たとえば、Mの値)を復号し得る。たとえば、各コンテキストのためのデフォルトウィンドウサイズが最初にあらかじめ定義され得る。各それぞれのコンテキストについて、エントロピー復号ユニット70は、デフォルトウィンドウサイズがそれぞれのコンテキストのために使用されるかどうかを示す、それぞれのシンタックス要素(たとえば、フラグ)を復号し得る。デフォルトウィンドウサイズがそれぞれのコンテキストのために使用されない場合、エントロピー復号ユニット70は、デフォルトウィンドウサイズに基づいて、実際の使用されるウィンドウサイズを差分復号し得る。いくつかの例では、すべてのコンテキストの(すなわち、デフォルトウィンドウサイズが使用されるかどうかを示す)シンタックス要素が一緒に編成され得、エントロピー復号ユニット70は、これらのシンタックス要素を復号するためにランレングスコーディングを利用し得る。いくつかの例では、コンテキストモデラ220は、実際に使用されるウィンドウサイズとデフォルトウィンドウサイズとの間の差分をコーディングするとき、マッピングテーブルを利用し得る。たとえば、デフォルトのM値が6に等しい場合、可能なM値は、4、5、6、および7である。マッピングテーブルは次のように定義され得る。
【0175】
[0164] いくつかの例では、エントロピー復号ユニット70は、各コンテキストについて実際のウィンドウサイズとデフォルトウィンドウサイズとの間の差分を直接復号し得る。たとえば、デフォルトM値が4である場合、エントロピー復号ユニット70は、各コンテキストについてM−4の値を復号し得る。
【0176】
[0165] いくつかの例では、エントロピー復号ユニット70は、現在スライス中のコンテキストのためのすべてのウィンドウサイズが、前にコーディングされたスライス中の対応するコンテキストのための継承されたウィンドウサイズである(すなわち、前にコーディングされたスライス中の対応するコンテキストのためのウィンドウサイズに等しく設定される)かどうかを示す、第1のシンタックス要素を復号し得る。一例では、「前に復号されたスライス」は、現在スライスと同じスライスタイプ、または同じスライスタイプと量子化パラメータの両方、または同じスライスタイプと時間レイヤの両方、および/あるいは同じ初期化された量子化パラメータを有する、前にコーディングされたスライスとして定義され得る。いくつかの例では、前のスライスは、DPB中に存在するピクチャに属することが必要であり得、参照ピクチャとして現在ピクチャのために使用され得、特に、HEVCベースプラットフォームの場合のように、前のスライスは、参照ピクチャセット(RPS)中のピクチャ、さらには、RPSの以下のサブセット、すなわち、RefPicSetStCurrBefore、RefPicSetStCurrAfter、およびRefPicSetLtCurrのうちの1つ中のピクチャに属することが必要とされ得る。
【0177】
[0166] いくつかの例では、エントロピー復号ユニット70は、デフォルトウィンドウサイズが(たとえば、現在スライス中の)複数のコンテキストのために使用されるかどうかを示す第1のシンタックス要素を復号し得る。デフォルトウィンドウサイズが複数のコンテキストのために使用されない場合、エントロピー復号ユニット70は、コンテキストのためのウィンドウサイズを示す第2のシンタックス要素を復号し得る。たとえば、エントロピー復号ユニット70は、コンテキストのためのウィンドウサイズとデフォルトウィンドウサイズとの間の差分を示す第2のシンタックス要素を復号し得る。
【0178】
[0167] 別の例では、エントロピー復号ユニット70は、たとえば、前のスライスまたはピクチャからのコード化情報に基づいて、ウィンドウサイズを導出し得る。たとえば、エントロピー復号ユニット70は、1つのコンテキストが追跡されるに関連する前のスライス中の復号されたビンを追跡し得る。可能なウィンドウサイズの各候補について、エントロピー復号ユニット70は、これらのビンをコーディングするために消費されるビットを取得し得る。エントロピー復号ユニット70は、これらのビンをコーディングするための最小ビットを生じるウィンドウサイズを、このコンテキストのためのウィンドウサイズとして選択し得る。エントロピー復号ユニット70は、後続のスライス/ピクチャを復号するために、選択されたウィンドウサイズを使用し得る。
【0179】
[0168] いくつかの例では、算術コーダにおいて次の確率状態または確率更新速度を決定するために使用される「ウィンドウサイズ」はシンタックス要素固有であり得る。たとえば、シンタックス要素のビンを符号化するためにコンテキストを使用するとき、コンテキストモデラ220は、シンタックス要素タイプに基づいてコンテキストのためのウィンドウサイズを決定し得る。一例として、コーディングユニットスプリットシンタックス要素のビンと、コーディングユニットスキップフラグシンタックス要素のビンとをコーディングするときの、コンテキストを更新するために使用されるウィンドウサイズは同じ、たとえば、16(すなわち、M=4)であり得る。
【0180】
[0169] いくつかの例では、上記の(1つまたは複数の)技法は特定のコンテキストに適用可能であり得る。すなわち、コンテキストのサブセットは、デフォルトウィンドウサイズではなく更新された「ウィンドウサイズ」を使用し得る。いくつかの例では、上記の(1つまたは複数の)技法は特定のスライスタイプに適用可能であり得る。
【0181】
[0170] ビンが通常復号エンジン224によって復号された後、逆方向バイナライザ(reverse binarizer)230は、ビンを非バイナリ値シンタックス要素の値に変換するために逆方向マッピング(reverse mapping)を実行し得る。
【0182】
[0171]
図6に戻ると、いくつかの例では、エントロピー復号ユニット70(または逆量子化ユニット76)は、ビデオエンコーダ20のエントロピー符号化ユニット56(または量子化ユニット54)によって使用された走査モードをミラーリングする走査を使用して受信値を走査し得る。係数の走査は逆量子化ユニット76において実行され得るが、走査は、例示のために、エントロピー復号ユニット70によって実行されるものとして説明される。さらに、説明しやすいように別個の機能ユニットとして示されているが、エントロピー復号ユニット70、逆量子化ユニット76、およびビデオデコーダ30の他のユニットの構造および機能は互いに高度に統合され得る。
【0183】
[0172] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、たとえば、HEVCのまたはH.264復号規格によって定義されたいくつかの例と同様の、従来のプロセスを含み得る。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、CUについてビデオエンコーダ20によって計算される量子化パラメータ(quantization parameter)QPの使用を含み得る。逆量子化ユニット76は、係数が1次元アレイから2次元アレイに変換される前または変換された後に変換係数を逆量子化し得る。
【0184】
[0173] 逆変換処理ユニット78は、逆量子化された変換係数に逆変換を適用する。いくつかの例では、逆変換処理ユニット78は、ビデオエンコーダ20からのシグナリングに基づいて、あるいはブロックサイズ、コーディングモードなどの1つまたは複数のコーディング特性から変換を推論することによって、逆変換を決定し得る。いくつかの例では、逆変換処理ユニット78は、現在ブロックを含むLCUのための4分木のルートノードにおけるシグナリングされた変換に基づいて、現在ブロックに適用すべき変換を決定し得る。代替的に、変換は、LCU4分木中のリーフノードCUのためのTU4分木のルートにおいてシグナリングされ得る。いくつかの例では、逆変換処理ユニット78は、逆変換処理ユニット78が、復号されている現在ブロックの変換係数に2つまたはそれ以上の逆変換を適用する、カスケード逆変換(cascaded inverse transform)を適用し得る。
【0185】
[0174] さらに、逆変換処理ユニットは、本開示の上記で説明された技法に従って、変換ユニットパーティションを生成するために逆変換を適用し得る。
【0186】
[0175] イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在フレームの、前に復号されたブロックからのデータとに基づいて、現在フレームの現在ブロックのための予測データを生成し得る。取り出された動き予測方向と、基準フレームインデックスと、計算された現在動きベクトル(たとえば、マージモードに従って隣接ブロックからコピーされた動きベクトル)とに基づいて、動き補償ユニットは現在部分のための動き補償ブロックを生成する。これらの動き補償ブロックは、本質的に、残差データを生成するために使用される予測ブロックを再現する。
【0187】
[0176] 動き補償ユニット72は、場合によっては、補間フィルタに基づく補間を実行して、動き補償ブロックを生成し得る。サブピクセル精度をもつ動き推定のために使用されるべき補間フィルタのための識別子が、シンタックス要素中に含まれ得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
【0188】
[0177] さらに、動き補償ユニット72およびイントラ予測処理ユニット74は、HEVCの例では、符号化ビデオシーケンスの(1つまたは複数の)フレームを符号化するために使用されたLCUのサイズを決定するために、(たとえば、4分木によって与えられる)シンタックス情報の一部を使用し得る。動き補償ユニット72およびイントラ予測処理ユニット74はまた、符号化ビデオシーケンスのフレームの各CUがどのように分割されるか(および、同様に、サブCUがどのように分割されるか)を記述する分割情報を決定するために、シンタックス情報を使用し得る。シンタックス情報はまた、各分割がどのように符号化されるかを示すモード(たとえば、イントラ予測またはインター予測、およびイントラ予測の場合はイントラ予測符号化モード)と、各インター符号化PUについての1つまたは複数の参照フレーム(および/またはそれらの参照フレームの識別子を含んでいる参照リスト)と、符号化ビデオシーケンスを復号するための他の情報とを含み得る。
【0189】
[0178] 加算器80は、復号ブロックを形成するために、残差ブロックを、動き補償ユニット72またはイントラ予測処理ユニット74によって生成される対応する予測ブロックと合成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。復号ビデオブロックは、次いで、参照ピクチャメモリ82に記憶され、参照ピクチャメモリ82は、参照ブロックを後続の動き補償に与え、また、(
図1のディスプレイデバイス31などの)ディスプレイデバイス上での提示のために復号ビデオを生成する。
【0190】
[0179]
図8は、通常コーディングモードを使用する所与のビン値binValのためのバイナリ算術符号化プロセスを示す。算術符号化エンジンの内部状態は、通常通り、2つの量、すなわち、現在の間隔範囲Rおよび現在のコード間隔のベース(下側端点)Lによって特徴づけられる。しかしながら、(通常モードとバイパスモードの両方において)これらのレジスタをCABACエンジンに記憶するために必要とされる精度は、それぞれ9ビットおよび10ビットまで低減され得ることに留意されたい。確率状態インデックスδをもつコンテキストにおいて観測される所与のバイナリ値binValおよびMPS(δ%2)の値の符号化は、以下のように4つの基本ステップのシーケンスにおいて実行される。
【0191】
[0180] 第1の主要なステップにおいて、現在の間隔が、所与の確率推定値に従って再分割される。この間隔再分割プロセスは、
図8中の流れ図の最上のボックスに示されているように3つの基本演算を伴う。最初に、現在の間隔範囲Rが、4つのセルへの全範囲2
8≦R≦2
9の等区分を使用して、量子化された値Q(R)によって近似される。しかし、CABACエンジンにおいて対応する代表的な量子化された範囲値Q
0、Q
1、Q
2、およびQ
3を明示的に使用する代わりに、すなわち、以下の式(14)に従って、シフト演算とビットマスキング演算との組合せによって効率的に計算され得る、それの量子化器インデックスρのみによって対処される。
【0193】
[0181] 次いで、このインデックスρおよび確率状態インデックスδが、
図8に示されているように、(近似)LPS関係のサブ間隔範囲R
LPSを決定するために、2DテーブルTabRangeLPS中のエントリとして使用される。ここで、テーブルTabRangeLPSは、8ビット精度での、0≦(δ>>1)≦63および0≦ρ≦3である場合の、p
σ・Q
ρのためのすべての64×4個のあらかじめ計算された積値(pre-computed product value)を含んでいる。
【0194】
[0182] MPSのためのデュアルサブ間隔範囲が与えられれば、所与のビン値binValに対応するサブ間隔が、符号化プロセスの第2のステップにおいて選定される。binValがMPS値に等しい場合、Lが不変であるように、下側サブ間隔が選定され(
図8中の分岐の右経路)、そうでない場合、R
LPSに等しい範囲をもつ上側サブ間隔が選択される(
図8中の左分岐)。通常算術符号化プロセスの第3のステップにおいて、確率状態の更新が、(たとえば、式(2)を使用して)上記で説明されたように実行され(
図8中のグレーの影付きボックス)、最終的に、第4のステップは、Marpeによって説明されたようにレジスタLおよびRの再正規化(
図8中の「RenormE」ボックス)からなる。
【0195】
[0183] 2DテーブルTabRangeLPSは以下のように定義され得る。
【0197】
[0184] 例示的なCABAC復号プロセスは、HEVC規格のセクション9.3.4.3.2.2において見つけられ得る。
【0198】
[0185]
図9は、残差4分木に基づく変換方式を示す概念図である。残差ブロックの様々な特性を適応させるために、HEVCでは残差4分木(RQT)を使用する変換コーディング構造が適用され、これは、
http://www.hhi.fraunhofer.de/departments/video-coding-analytics/research-groups/image-video-coding/hevc-high-efficiency-video-coding/transform-coding-using-the-residual-quadtree-rqt.html
に手短に記載されている。
【0199】
[0186] 各ピクチャが、特定のタイルまたはスライスについてラスタ走査順序でコーディングされるコーディングツリーユニット(CTU:coding tree unit)に分割される。CTUは、正方形ブロックであり、4分木、すなわち、コーディングツリーのルートを表す。CTUサイズは8×8から64×64ルーマサンプルにわたり得るが、一般に64×64が使用される。各CTUは、さらに、コーディングユニット(CU)と呼ばれるより小さい正方形ブロックにスプリットされ得る。CTUがCUに再帰的にスプリットされた後、各CUはPUおよびTUにさらに分割される。TUへのCUの区分は、4分木手法に基づいて再帰的に行われ、したがって、各CUの残差信号は、ツリー構造、すなわち、残差4分木(RQT)によってコーディングされる。RQTは、4×4から32×32ルーマサンプルまでのTUサイズを可能にする。
図9は、CUが、文字a〜jで標示された10個のTUを含む一例と、対応するブロック区分とを示す。RQTの各ノードは、実際は変換ユニット(TU)である。個々のTUは、深度優先トラバーサル(depth-first traversal)による再帰的Z走査に従う、アルファベット順として図に示された深度優先ツリートラバーサル順序で処理される。4分木手法は、残差信号の変動する空間周波数特性に対する変換の適応を可能にする。一般に、より大きい空間サポートを有するより大きい変換ブロックサイズは、より良い周波数解像度を与える。しかしながら、より小さい空間サポートを有するより小さい変換ブロックサイズは、より良い空間解像度を与える。その2つ、すなわち、空間解像度と周波数解像度との間のトレードオフは、たとえばレートひずみ最適化技法に基づいて、エンコーダモード決定によって選定される。レートひずみ最適化技法は、各コーディングモード(たとえば、特定のRQTスプリッティング構造)についてコーディングビットと再構成ひずみとの加重和、すなわち、レートひずみコストを計算し、最小レートひずみコストをもつコーディングモードを最良のモードとして選択する。
【0200】
[0187] 3つのパラメータ、すなわち、ツリーの最大深度(maximum depth of the tree)、最小許容変換サイズ(minimum allowed transform size)および最大許容変換サイズ(maximum allowed transform size)がRQTにおいて定義される。HEVCのいくつかの例では、最小および最大変換サイズは、前の段落で述べられたサポートされるブロック変換に対応する、4×4から32×32サンプルまでの範囲内で変動することがある。RQTの最大許容深度はTUの数を制限する。0に等しい最大深度は、各含まれたTUが最大許容変換サイズ、たとえば、32×32に達した場合、CTUがこれ以上スプリットされ得ないことを意味する。
【0201】
[0188] すべてのこれらのパラメータは、相互作用し、RQT構造に影響を及ぼす。ルートCTUサイズが64×64であり、最大深度が0に等しく、最大変換サイズが32×32に等しい場合について考える。この場合、CTUは、さもなければ、それが、許容されない64×64TUにつながることになるので、少なくとも1回区分されなければならない。RQTパラメータ、すなわち、最大RQT深度、最小および最大変換サイズは、シーケンスパラメータセットレベルにおいてビットストリーム中で送信される。RQT深度に関して、イントラコード化CUとインターコード化CUとについて異なる値が指定され、シグナリングされ得る。
【0202】
[0189] 4分木変換は、イントラ残差ブロックとインター残差ブロックの両方のために適用される。一般に、現在の残差4分木パーティションの同じサイズのDCT−II変換が残差ブロックのために適用される。しかしながら、現在の残差4分木ブロックが4×4であり、イントラ予測によって生成される場合、上記の4×4DST−VII変換が適用される。
【0203】
[0190] HEVCでは、より大きいサイズの変換、たとえば、64×64変換は、主に、および比較的より小さい解像度のビデオに対する比較的高い複雑さを考慮して、それらの限られた利益により、採用されない。
【0204】
[0191]
図10は、係数グループに基づく例示的な係数走査を示す概念図である。TUサイズかかわらず、変換ユニットの残差は、各々がTUの4×4ブロックの係数を含んでいる非重複係数グループ(CG:coefficient group)でコーディングされる。たとえば、32×32TUは全体として64個のCGを有し、16×16TUは全体として16個のCGを有する。TU内のCGは、あるあらかじめ定義された走査順序に従ってコーディングされ得る。各CGをコーディングするとき、現在CG内の係数は、4×4ブロックについて、あるあらかじめ定義された走査順序に従って走査され、コーディングされる。
図10は、4つのCGを含んでいる8×8TUについての係数走査を示す。
【0205】
[0192] シンタックス要素テーブルは以下のように定義される。
【0207】
[0193] 各色成分について、現在TUが少なくとも1つの非0係数を有するかどうかを示すために、1つのフラグが最初にシグナリングされ得る。少なくとも1つの非0係数がある場合、TU中の係数走査順序(coefficient scan order)における最後有意係数(last significant coefficient)の位置が、変換ユニットの左上隅に対する座標を用いて明示的にコーディングされる。座標の垂直または水平成分は、それのプレフィックスおよびサフィックスによって表され、ここにおいて、プレフィックスは短縮ライス(TR:truncated rice)を用いて2値化され、サフィックスは固定長を用いて2値化される。
【0208】
[0194] セマンティクス:
[0195] last_sig_coeff_x_prefixは、変換ブロック内の走査順序における最後有意係数の列位置のプレフィックスを指定する。last_sig_coeff_x_prefixの値は、両端値を含む、0〜(log2TrafoSize<<1)−1の範囲内にあるものとする。
【0209】
[0196] last_sig_coeff_y_prefixは、変換ブロック内の走査順序における最後有意係数の行位置のプレフィックスを指定する。last_sig_coeff_y_prefixの値は、両端値を含む、0〜(log2TrafoSize<<1)−1の範囲内にあるものとする。
【0210】
[0197] last_sig_coeff_x_suffixは、変換ブロック内の走査順序における最後有意係数の列位置のサフィックスを指定する。last_sig_coeff_x_suffixの値は、両端値を含む、0〜(1<<((last_sig_coeff_x_prefix>>1)−1))−1の範囲内にあるものとする。
【0211】
[0198] 変換ブロックLastSignificantCoeffX内の走査順序における最後有意係数の列位置は、以下のように導出される。
− last_sig_coeff_x_suffixが存在しない場合、以下が適用される。
【0213】
− そうでない場合(last_sig_coeff_x_suffixが存在する)、以下が適用される。
【0215】
[0199] last_sig_coeff_y_suffixは、変換ブロック内の走査順序における最後有意係数の行位置のサフィックスを指定する。last_sig_coeff_y_suffixの値は、両端値を含む、0〜(1<<((last_sig_coeff_y_prefix>>1)−1))−1の範囲内にあるものとする。
【0216】
[0200] 変換ブロックLastSignificantCoeffY内の走査順序における最後有意係数の行位置は、以下のように導出される。
− last_sig_coeff_y_suffixが存在しない場合、以下が適用される。
【0218】
− そうでない場合(last_sig_coeff_y_suffixが存在する)、以下が適用される。
【0220】
[0201] scanIdxが2に等しいとき、座標は以下のようにスワップされる。
【0222】
[0202] コーディングされたそのような位置、またCGの係数走査順序とともに、(走査順序における)最後CGを除くCGのために、それが非0係数を含んでいるかどうかを示す1つのフラグがさらにシグナリングされる。
【0223】
[0203] CGフラグのコンテキストモデリング。1つのCGが非0係数を有するかどうか、すなわち、CGフラグ(HEVC仕様におけるcoded_sub_block_flag)をコーディングするとき、隣接CGの情報が、コンテキストを構築するために利用される。より具体的に言えば、CGフラグをコーディングするためのコンテキスト選択は次のように定義される。
【0225】
[0204] ここで、右および下CGは、現在CGに近接する2つの隣接CGである。たとえば、
図10では、左上4×4ブロックをコーディングするとき、右CGは右上4×4ブロックとして定義され、下CGは左下4×4ブロックとして定義される。
【0226】
[0205] クロマおよびルーマは、コンテキストの異なるセットを使用するが、それらのうちの1つを選択するための同じルールを用いることに留意されたい。
【0227】
[0206] コンテキストインデックス増分の導出の詳細は、HEVCの9.3.4.2.4において見つけられ得る。
【0228】
[0207] 1つのCG内での変換係数コーディング。非0係数を含んでいることがあるCGについて、有意フラグ(significant_flag)、(coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flagおよびcoeff_abs_level_remainingを含む)係数の絶対値および符号情報(coeff_sign_flag)が、あらかじめ定義された4×4係数走査順序に従って各係数についてさらにコーディングされ得る。変換係数レベルのコーディングは複数の走査パスに分離される。
【0229】
[0208] 1)第1のビンコーディングの第1のパス。このパスにおいて、特定の変換係数が0に等しいことが導出され得ることを除いて、1つのCG内の各位置における変換係数のすべての第1のビン(またはビンインデックス0、bin0)がコーディングされる。
【0230】
[0209] 変数sigCtxは、現在TUの左上postionに対する現在ロケーションと、色成分インデックスcIdxと、変換ブロックサイズと、シンタックス要素coded_sub_block_flagの前に復号されたビンとに依存する。異なるルールがTUサイズに応じて適用される。コンテキストインデックス増分の選択の例示的な詳細は、HEVCの9.3.4.2.5において定義されている。
【0231】
[0210] 2)第2のビンコーディングの第2のパス。coeff_abs_level_greater1_flagのコーディングがこのパスにおいて適用される。コンテキストモデリングは、色成分インデックスと、現在サブブロック走査インデックスと、現在サブブロック内の現在係数走査インデックスとに依存する。コンテキストインデックス増分の選択の例示的な詳細は、HEVCの9.3.4.2.6において定義されている。
【0232】
[0211] 3)第3のビンコーディングの第3のパス。coeff_abs_level_greater2_flagのコーディングがこのパスにおいて適用される。コンテキストモデリングは、coeff_abs_level_greater1_flagによって使用されるものと同様である。コンテキストインデックス増分の選択の例示的な詳細は、HEVCの9.3.4.2.7において定義されている。
【0233】
[0212] スループットを改善するために、第2および第3のパスはCG中のすべての係数を処理するとは限らないことに留意されたい。CG中の最初の8つのcoeff_abs_level_greater1_flagが通常モードでコーディングされる。その後、値は、シンタックスcoeff_abs_level_remainingによって第5のパスにおいてバイパスモードでコーディングされるために残される。同様に、1よりも大きい値をもつCG中の第1の係数のためのcoeff_abs_level_greater2_flagのみがコーディングされる。CGの1よりも大きい値をもつ係数の残りは、値をコーディングするためにcoeff_abs_level_remainingを使用する。この方法は、係数レベルのための通常ビンの数を、CGごとに最大9つ、すなわち、coeff_abs_level_greater1_flagについて8つおよびcoeff_abs_level_greater2_flagについて1つに制限する。
【0234】
[0213] 4)符号情報の第4のパス。HEVCのいくつかの例では、各非0係数の符号は、バイパスモードで第4の走査パスにおいてコーディングされる。各CGについて、および基準に応じて、(逆方向走査順序における)最後非0係数(last nonzero coefficient)の符号を符号化することは、符号データヒッディング(SDH:sign data hidding)を使用するとき、単に省略される。代わりに、符号値は、偶数が「+」に対応し、奇数が「−」に対応するという、あらかじめ定義された規約を使用してCGのレベルの和のパリティ中に埋め込まれる。SDHを使用するための基準は、CGの第1の非0係数と最後非0係数との間の走査順序における距離である。この距離が4に等しいかまたはそれよりも大きい場合、SDHが使用される。4のこの値は、それがHEVCテストシーケンスに対して最も大きい利得を与えるので選定された。
【0235】
[0214] 5)残りのビンの最後のパス。残りのビンが、さらなる走査パスにおいてコーディングされる。係数のbaseLevelが次のように定義されるとする。
【0237】
[0215] ここで、フラグは、0または1の値を有し、存在しない場合、0であると推論される。その場合、係数の絶対値は単に以下の通りである。
【0239】
[0216] ライスパラメータ(Rice parameter)は、各CGの最初に0に設定され、それは、以下のようにパラメータの前の値と現在の絶対レベルとに応じて条件付きで更新される。
【0241】
[0217] シンタックス要素coeff_abs_level_remainingはバイパスモードでコーディングされ得る。さらに、HEVCのいくつかの例は、小さい値についてはゴロムライスコード(Golomb-Rice code)を採用し、より大きい値については指数ゴロムコード(Exp-Golomb code)に切り替わる。コード間の遷移点は、一般に、単項コード長が4に等しいときである。パラメータ更新プロセスは、2値化が、分布において大きい値が観測されたとき、係数統計値に適応することを可能にする。
【0242】
[0218] inter_pred_idcのコンテキストモデリング。inter_pred_idcは、現在予測ユニットのためにlist0が使用されるのか、list1が使用されるのか、双予測が使用されるのかを指定する。シンタックス要素は、その両方がCABACコンテキストコーディングされる、最高2つのビンを有する。2値化されたビンストリングは以下のように定義される。
【0244】
[0219] ここにおいて、nPbWおよびnPbHは、それぞれ、現在ルーマ予測ブロック幅および高さを表す。
【0245】
[0220] 各インターコード化スライス、たとえば、PスライスまたはBスライスについて、コンテキスト選択は以下のルールに基づく。
【0246】
− (nPbW+nPbH)が12に等しくない場合、第1のビンは、4つのコンテキストを使用してコーディングされ、第2のビンは、1つのコンテキストを用いてコーディングされる。第1のビンのコンテキスト選択は現在CU深度従う。HEVCでは、CU深度は、両端値を含む、0〜3の範囲内にある。
【0247】
[0221]
図11は、本開示の1つまたは複数の技法による、異なるウィンドウサイズでコンテキストベースエントロピー符号化を実行するための例示的なプロセスを示すフローチャートである。
図11の技法は、
図1および
図4に示されたビデオエンコーダ20など、ビデオエンコーダによって実行され得る。説明の目的で、
図11の技法は、
図1および
図4のビデオエンコーダ20のコンテキスト内で説明されるが、ビデオエンコーダ20の構成とは異なる構成を有するビデオエンコーダが
図11の技法を実行し得る。
【0248】
[0222] ビデオエンコーダ20は、コンテキストベースエントロピーコーディングを使用して符号化されるべきビンストリング(たとえば、1次元バイナリベクトル)を取得する(1102)。たとえば、ビデオエンコーダ20のエントロピー符号化ユニット56は、ビデオエンコーダ20の予測処理ユニット42から受信されたシンタックス要素を2値化することによってビンストリングを取得し得る。いくつかの例では、コンテキストベースエントロピーコーディングはコンテキスト適応型バイナリ算術コーディング(CABAC)を備え得る。
【0249】
[0223] 本開示の1つまたは複数の技法によれば、ビデオエンコーダ20は、複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定する(1104)。いくつかの例では、ビデオエンコーダ20は、コンテキストのための所定のウィンドウサイズに基づいてウィンドウサイズを決定し得る。いくつかの例では、ビデオエンコーダ20は、いくつかの候補ウィンドウサイズのコーディング効率を分析することによってウィンドウサイズを決定し、最良のコーディング効率をもつ候補ウィンドウサイズをコンテキストのためのウィンドウサイズとして選択し得る。
【0250】
[0224] たとえば、各コンテキストについて、エントロピー符号化ユニット56は、異なるウィンドウサイズで、記録されたビンストリングをコーディングするビットを計算し、最小ビットをもつ1つのウィンドウサイズを選択し得る。いくつかの例では、エントロピー符号化ユニット56によって使用される異なるウィンドウサイズは、あらかじめ定義され得る。いくつかの例示的なあらかじめ定義されたウィンドウサイズは、16、32、64、および128であるが、他のウィンドウサイズが企図される。
【0251】
[0225] いくつかの例では、エントロピー符号化ユニット56は、ビットストリングを符号化するために使用されるウィンドウサイズを示す1つまたは複数のシンタックス要素を符号化し得る。たとえば、エントロピー符号化ユニット56は、各コンテキストについて、デフォルトウィンドウサイズが使用されるのか、更新されたウィンドウサイズが使用されるのかを示す第1のフラグを、現在スライスのスライスヘッダ中で符号化し得る。一例として、エントロピー符号化ユニット56が、デフォルトウィンドウサイズ以外のウィンドウサイズに関連するコンテキストを使用して現在スライスの1つまたは複数のビットストリングをコーディングした場合、エントロピー符号化ユニット56は、1つまたは複数のビットストリングが、デフォルトウィンドウサイズ以外のウィンドウサイズを使用してコーディングされた現在スライスのものであることを示すために、現在スライスのスライスヘッダ中で第1のフラグを符号化し得る。同様に、エントロピー符号化ユニット56が、デフォルトウィンドウサイズに関連するコンテキストを使用してスライスのビットストリングのすべてをコーディングした場合、エントロピー符号化ユニット56は、現在スライスのビットストリングのすべてが、デフォルトウィンドウサイズを使用してコーディングされることを示すために、現在スライスのスライスヘッダ中で第1のフラグを符号化し得る。いくつかの例では、第1のフラグは、以下でより詳細に説明されるように、default_updating_speed_flagと呼ばれることがある。
【0252】
[0226] いくつかの例では、エントロピー符号化ユニット56が、1つまたは複数のビットストリングが、デフォルトウィンドウサイズ以外のウィンドウサイズを使用してコーディングされたスライスのものであることを示す第1のフラグを、現在スライスのスライスヘッダ中で符号化する場合、エントロピー符号化ユニット56は、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示す第2のフラグを、現在スライスのスライスヘッダ中で符号化し得る。いくつかの例では、前にコーディングされたスライスは、同じスライスタイプおよび同じ初期化されたQPなど、現在スライスと共通する1つまたは複数のパラメータを有する最も最近コーディングされたスライスであり得る。いくつかの例では、第1のフラグは、以下でより詳細に説明されるように、inheritance_from_previous_flagと呼ばれることがある。
シンタックス
【0254】
[0227] 上記で説明されたシンタックス要素のためのいくつかの例示的なセマンティクスが以下で与えられる。
【0255】
[0228] 1に等しいdefault_updating_speed_flagは、デフォルトウィンドウサイズがすべてのコンテキストのために使用され、inheritance_from_previous_flagがスライスヘッダ中に存在しないことを指定し得る。0に等しいdefault_updating_speed_flagは、inheritance_from_previous_flagがスライスヘッダ中に存在することを指定し得る。
【0256】
[0229] 1に等しいinheritance_from_previous_flagは、コンテキストに関連するウィンドウサイズが、同じスライスタイプと同じ初期化されたQPとをもつ、前にコーディングされたスライスから継承されることを指定し得る。0に等しいinheritance_from_previous_flagは、コンテキストに関連するウィンドウサイズがビットストリーム中でシグナリングされ、bit_map_run_length_coding()およびspeed_index_level_codingが存在することを指定し得る。
【0257】
[0230] いくつかの例では、使用されるべきピクチャは明示的に指定され得る。ピクチャが複数のスライスを含んでいる場合、第1のスライスが使用され得るか、またはそのピクチャのスライスのidが明示的に指定され得る。いくつかの例では、1に等しいinheritance_from_previous_flagは、コンテキストに関連するウィンドウサイズが、同じスライスタイプをもつ、前にコーディングされたスライスから継承されることを指定し得る。
【0258】
[0231] いくつかの例では、エントロピー符号化ユニット56が、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズが、前にコーディングされたスライスから継承されないことを示すために、第2のフラグを符号化する場合、エントロピー符号化ユニット56は、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズを示すために1つまたは複数のシンタックス要素をコーディングし得る。たとえば、エントロピー符号化ユニット56は、異なるウィンドウサイズの使用を示す1つのビットマップ(bit map)をコーディングし、ビットが新しいウィンドウサイズを示すとき、新しいウィンドウサイズインデックス(window size index)をコーディングし得る。いくつかの例では、エントロピー符号化ユニット56は、以下で説明されるように、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズを示すために、1つまたは複数のシンタックス要素を符号化し得る。
【0260】
[0232] 代替的に、以下のテーブルが定義され得る。
【0263】
[0233] 上記で説明されたシンタックス要素のためのいくつかの例示的なセマンティクスが以下で与えられる。
【0264】
[0234] run[i]は、デフォルト更新速度を使用する連続するコンテキストの数を示し得る。
【0265】
[0235] ctxUpdatedSpeedFlagは、totalCtxNr個のエントリをもつアレイであり得る。各エントリについて、それは、1つのスライスを復号する前に0であるように設定され得、これは、各コンテキストが、デフォルト確率更新速度、すなわち、デフォルトウィンドウサイズを使用することを示す。一例では、デフォルトウィンドウサイズは64に等しい。
【0266】
[0236] 一例では、totalCtxNrは、現在スライス中で使用され得るコンテキストの総数を表し得る。別の例では、totalCtxNrは、すべてのスライス中で使用され得るコンテキストの総数を表し得る。別の例では、totalCtxNrは、あらかじめ定義された選択されたコンテキストの総数を表し得る。
【0267】
[0237] ctx_idx_differenceは、デフォルトウィンドウサイズと比較したウィンドウサイズのインデックスの差分を示し得る。
【0268】
[0238] 一例では、デフォルトウィンドウサイズは64に等しいことがある。ctx_idx_differenceが2に等しいときなど、いくつかの例では、ウィンドウサイズは128に設定され得る。ctx_idx_differenceが0または1に等しいときなど、いくつかの例では、ウィンドウサイズは(1<<(ctx_idx_difference+4))に等しく設定され得る。すなわち、4つのウィンドウサイズ、すなわち、16、32、64、および128がサポートされ得るが、追加のまたはより少数のウィンドウサイズをもつ例が企図される。いくつかの例では、エントロピー符号化ユニット56は、アクティブパラメータセット中で上記の情報の一部または全部をシグナリングし得る。
【0269】
[0239] デコーダ側において、各スライスヘッダについて、各コンテキストについてデフォルトウィンドウサイズまたは更新されたウィンドウサイズの使用を示し得る第1のフラグが最初に復号され得る。いくつかの例では、第1のフラグが1(すなわち、更新されたウィンドウサイズを使用すること)に等しい場合、前にコーディングされたピクチャからの継承、または更新されたウィンドウサイズの追加のシグナリングを示し得る、第2のフラグがさらに復号され得る。ウィンドウサイズのシグナリングが必要とされる場合、異なるウィンドウサイズの使用を示すために、ビットマップが最初にシグナリングされ、ビットが新しいウィンドウサイズを示すとき、新しいウィンドウサイズインデックスをシグナリングし得る。
【0270】
[0240] いずれの場合も、ビデオエンコーダ20は、ビデオビットストリーム中でおよびコンテキストの確率状態に基づいて、ビンストリングのビンを符号化する(1106)。たとえば、エントロピー符号化ユニット56は、コンテキストの最終コード化確率間隔内の確率に対する値またはポインタを表すバイナリストリームを出力し得る。
【0271】
[0241] ビデオエンコーダ20は、決定されたウィンドウサイズに基づいてコンテキストモデルの確率状態を更新する(1108)。たとえば、i番目のコンテキストモデルに関連する決定されたウィンドウサイズW
iが与えられれば、エントロピー符号化ユニット56は、以下の式(15)に従ってi番目のコンテキストモデルの確率状態を更新し得、ここで、kは確率の精度を表し得る。一例では、kは15に等しい。
【0273】
[0242] W
iが(1<<M
i)に等しいとき、エントロピー符号化ユニット56によって実行される確率更新プロセスは、以下の式(16)に示されているように書き直され得る。
【0275】
[0243] ビデオエンコーダ20は、ビデオビットストリーム中でおよびコンテキストの更新された確率状態に基づいて、別のビンを符号化する(1106)。いくつかの例では、符号化される他のビンは、ビンストリングの第2のビンであり得る。
【0276】
[0244]
図12は、本開示の1つまたは複数の技法による、異なるウィンドウサイズでコンテキストベースエントロピー復号を実行するための例示的なプロセスを示すフローチャートである。
図12の技法は、
図1および
図6に示されたビデオデコーダ30など、ビデオデコーダによって実行され得る。説明の目的で、
図12の技法は、
図1および
図6のビデオデコーダ30のコンテキスト内で説明されるが、ビデオデコーダ30の構成とは異なる構成を有するビデオデコーダが
図12の技法を実行し得る。
【0277】
[0245] ビデオデコーダ30は、ビデオビットストリームから、コンテキストベースエントロピーコーディングを使用して復号されるべきビンストリング(たとえば、1次元バイナリベクトル)を取得する(1202)。たとえば、ビデオデコーダ30のエントロピー復号ユニット70は、ビデオデータメモリ69からビンストリングを取得し得る。いくつかの例では、コンテキストベースエントロピーコーディングはコンテキスト適応型バイナリ算術コーディング(CABAC)を備え得る。
【0278】
[0246] 本開示の1つまたは複数の技法によれば、ビデオデコーダ30は、複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定する(1204)。いくつかの例では、ビデオデコーダ30は、コンテキストのための所定のウィンドウサイズに基づいてウィンドウサイズを決定し得る。いくつかの例では、ビデオデコーダ30は、いくつかの候補ウィンドウサイズのコーディング効率を分析することによってウィンドウサイズを決定し、最良のコーディング効率をもつ候補ウィンドウサイズをコンテキストのためのウィンドウサイズとして選択し得る。
【0279】
[0247] いくつかの例では、エントロピー復号ユニット70は、ビットストリングを符号化するために使用されるウィンドウサイズを示す1つまたは複数のシンタックス要素を符号化し得る。たとえば、エントロピー復号ユニット70は、各コンテキストについて、デフォルトウィンドウサイズが使用されるのか、更新されたウィンドウサイズが使用されるのかを示す第1のフラグを、現在スライスのスライスヘッダから復号し得る。一例として、エントロピー復号ユニット70が、デフォルトウィンドウサイズ以外のウィンドウサイズに関連するコンテキストを使用して現在スライスの1つまたは複数のビットストリングを復号した場合、エントロピー復号ユニット70は、1つまたは複数のビットストリングが、デフォルトウィンドウサイズ以外のウィンドウサイズを使用してコーディングされた現在スライスのものであることを示す第1のフラグを、現在スライスのスライスヘッダから復号し得る。同様に、エントロピー復号ユニット70が、デフォルトウィンドウサイズに関連するコンテキストを使用してスライスのビットストリングのすべてを復号した場合、エントロピー復号ユニット70は、現在スライスのビットストリングのすべてが、デフォルトウィンドウサイズを使用してコーディングされることを示す第1のフラグを、現在スライスのスライスヘッダから復号し得る。いくつかの例では、第1のフラグは、上記でより詳細に説明されたように、default_updating_speed_flagと呼ばれることがある。
【0280】
[0248] いくつかの例では、エントロピー符号化ユニット56が、1つまたは複数のビットストリングが、デフォルトウィンドウサイズ以外のウィンドウサイズを使用してコーディングされたスライスのものであることを示す第1のフラグを、現在スライスのスライスヘッダ中で符号化する場合、エントロピー符号化ユニット56は、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示す第2のフラグを、現在スライスのスライスヘッダ中で符号化し得る。いくつかの例では、前にコーディングされたスライスは、同じスライスタイプおよび同じ初期化されたQPなど、現在スライスと共通する1つまたは複数のパラメータを有する最も最近コーディングされたスライスであり得る。いくつかの例では、第1のフラグは、
図11を参照しながら上記でより詳細に説明されたように、inheritance_from_previous_flagと呼ばれることがある。
【0281】
[0249] いくつかの例では、使用されるべきピクチャは明示的に指定され得る。ピクチャが複数のスライスを含んでいる場合、第1のスライスが使用され得るか、またはそのピクチャのスライスのidが明示的に指定され得る。いくつかの例では、1に等しいinheritance_from_previous_flagは、コンテキストに関連するウィンドウサイズが、同じスライスタイプをもつ、前にコーディングされたスライスから継承されることを指定し得る。
【0282】
[0250] いくつかの例では、第2のフラグが、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズが、前にコーディングされたスライスから継承されないことを示す場合、エントロピー復号ユニット70は、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズを示す1つまたは複数のシンタックス要素を復号し得る。たとえば、エントロピー復号ユニット70は、異なるウィンドウサイズの使用を示す1つのビットマップを復号し、ビットが新しいウィンドウサイズを示すとき、新しいウィンドウサイズインデックスを復号し得る。いくつかの例では、エントロピー復号ユニット70は、
図11を参照しながら上記で説明されたように、現在スライスをコーディングするために使用されるコンテキストに関連するウィンドウサイズを示すために、1つまたは複数のシンタックス要素を復号し得る。
【0283】
[0251] いずれの場合も、ビデオデコーダ30は、コンテキストの確率状態に基づいて、ビンストリングのビンを復号する(1206)。ビデオデコーダ30は、決定されたウィンドウサイズと復号されたビンとに基づいてコンテキストモデルの確率状態を更新する(1208)。たとえば、i番目のコンテキストモデルに関連する決定されたウィンドウサイズW
iが与えられれば、エントロピー復号ユニット70は、上記の式(15)に従ってi番目のコンテキストモデルの確率状態を更新し得る。
【0284】
[0252] ビデオデコーダ30は、コンテキストの更新された確率状態に基づいて、別のビンを復号する(1206)。いくつかの例では、符号化される他のビンは、ビンストリングの第2のビンであり得る。
【0285】
[0253] 以下の番号付けされた例は、本開示の1つまたは複数の態様を示し得る。
【0286】
[0254] 例1.ビデオデータのエントロピーコーディングのための方法であって、本方法が、ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型エントロピーコーディングプロセスにおいて使用される複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することと、コンテキストの確率状態に基づいて、シンタックス要素のための値のビンをエントロピーコーディングすることと、ウィンドウサイズとコーディングされたビンとに基づいてコンテキストの確率状態を更新することとを備える、方法。
【0287】
[0255] 例2.コンテキスト適応型エントロピーコーディングプロセスが、コンテキスト適応型バイナリ算術コーディング(CABAC)プロセス、またはコンテキスト適応型可変長コーディング(CAVLC)プロセスを備える、請求項1に記載の方法。
【0288】
[0256] 例3.更新された確率状態に基づいて、同じコンテキストに関連する別のビンをエントロピーコーディングすることをさらに備える、請求項1に記載の方法。
【0289】
[0257] 例4.コンテキストが第1のコンテキストであり、本方法が、複数のコンテキストのうちの第2のコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することをさらに備え、ここにおいて、第2のコンテキストのウィンドウサイズが第1のコンテキストのウィンドウサイズとは異なる、請求項1に記載の方法。
【0290】
[0258] 例5.第1のコンテキストのためのウィンドウサイズと第2のコンテキストのためのウィンドウサイズとが、コーディングされたビンを含むビットストリーム中でシグナリングされない(not signaled)、請求項4に記載の方法。
【0291】
[0259] 例6.複数のウィンドウサイズが、ウィンドウサイズのあらかじめ定義されたセットを備える、請求項1に記載の方法。
【0292】
[0260] 例7.エントロピーコーディングすることがエントロピー符号化することを備え、ここにおいて、ウィンドウサイズを決定することが、ウィンドウサイズのあらかじめ定義されたセットのそれぞれのウィンドウサイズについて、シンタックス要素のためのビン値を含む特定のビンストリングをエントロピー符号化するために使用されるビットのそれぞれの量を決定することと、特定のビンストリングをエントロピー符号化するために、ビットの最も小さい量に対応する、ウィンドウサイズのあらかじめ定義されたセットのうちのウィンドウサイズをコンテキストのためのウィンドウサイズとして選択することとを備える、請求項6に記載の方法。
【0293】
[0261] 例8.デフォルトウィンドウサイズが複数のコンテキストのために使用されるかどうかを示す第1のシンタックス要素をコーディングすることをさらに備える、請求項1に記載の方法。
【0294】
[0262] 例9.デフォルトウィンドウサイズが複数のコンテキストのために使用されないことを示す第1のシンタックス要素に基づいて、コンテキストのためのウィンドウサイズを示す第2のシンタックス要素をコーディングすることをさらに備える、請求項8に記載の方法。
【0295】
[0263] 例10.コンテキストのためのウィンドウサイズを示すために、第2のシンタックス要素が、コンテキストのためのウィンドウサイズとデフォルトウィンドウサイズとの間の差分を示す、請求項9に記載の方法。
【0296】
[0264] 例11.第1のシンタックス要素をコーディングすることが、第1のシンタックス要素を含む現在スライスのスライスヘッダをコーディングすることを備え、ここにおいて、第1のシンタックス要素は、現在スライスのビンをエントロピーコーディングするとき、デフォルトウィンドウサイズが複数のコンテキストのために使用されるかどうかを示す、請求項8に記載の方法。
【0297】
[0265] 例12.現在スライスのスライスヘッダ中で、複数のコンテキストのためのウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示すシンタックス要素をコーディングすることをさらに備える、請求項1に記載の方法。
【0298】
[0266] 例13.コンテキストのためのウィンドウサイズを決定することが、シンタックス要素のタイプに基づいて、コンテキストのためのウィンドウサイズを決定することを備える、請求項1に記載の方法。
【0299】
[0267] 例14.エントロピーコーディングすることがエントロピー復号することを備え、本方法が、コード化ビデオビットストリーム(coded video bitstream)から、コンテキストのためのウィンドウサイズを示す1つまたは複数のシンタックス要素を復号することをさらに備える、請求項1に記載の方法。
【0300】
[0268] 例15.ビデオデータのエントロピーコーディングのための装置であって、本装置が、ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型エントロピーコーディングプロセスにおいて使用される複数のコンテキストを記憶するように構成されたメモリと、例1から14の任意の組合せに記載の方法を実行するように構成された1つまたは複数のプロセッサとを備える、装置。
【0301】
[0269] 例16.本装置が、集積回路、マイクロプロセッサ、またはワイヤレス通信デバイス(wireless communication device)のうちの少なくとも1つを備える、例15に記載の装置。
【0302】
[0270] 例17.復号ビデオデータを表示するように構成されたディスプレイ(display)をさらに備える、例15から16の任意の組合せに記載の装置。
【0303】
[0271] 例18.ビデオデータをキャプチャするように構成されたカメラ(camera)をさらに備える、例15から17の任意の組合せに記載の装置。
【0304】
[0272] 例19.ビデオデータのエントロピーコーディングのための装置であって、本装置が、例1から14の任意の組合せに記載の方法を実行するための手段を備える、装置。
【0305】
[0273] 例20.実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、例1から14の任意の組合せに記載の方法を実行させる命令を記憶するコンピュータ可読記憶媒体。
【0306】
[0274] 例21.ビデオ復号デバイスによって処理されたとき、ビデオ復号デバイスの1つまたは複数のプロセッサに、シンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型コーディングプロセスにおいて使用される複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することと、コンテキストの確率状態に基づいて、シンタックス要素のための値のビンをエントロピーコーディングすることと、ウィンドウサイズとコーディングされたビンとに基づいてコンテキストの確率状態を更新することと、コンテキストモデルの更新された確率状態に基づいて、同じコンテキストをもつ次のビンをエントロピーコーディングすることとを行わせるビデオデータを記憶するコンピュータ可読記憶媒体。
【0307】
[0275] 例22.1つまたは複数のプロセッサに、例1から14の任意の組合せに記載の方法を実行させる命令をさらに記憶する、例21に記載のコンピュータ可読記憶媒体。
【0308】
[0276] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0309】
[0277] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0310】
[0278] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
【0311】
[0279] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC:integrated circuit)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【0312】
[0280] 様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータのエントロピーコーディングのための方法であって、前記方法が、
前記ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型エントロピーコーディングプロセスにおいて使用される複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することと、
前記コンテキストの確率状態に基づいて、前記シンタックス要素のための前記値のビンをエントロピーコーディングすることと、
前記ウィンドウサイズと前記コーディングされたビンとに基づいて前記コンテキストの前記確率状態を更新することとを備える、方法。
[C2] 前記コンテキスト適応型エントロピーコーディングプロセスが、コンテキスト適応型バイナリ算術コーディング(CABAC)プロセス、またはコンテキスト適応型可変長コーディング(CAVLC)プロセスを備える、C1に記載の方法。
[C3] 前記更新された確率状態に基づいて、同じコンテキストに関連する別のビンをエントロピーコーディングすることをさらに備える、C1に記載の方法。
[C4] 前記コンテキストが第1のコンテキストであり、前記方法が、
前記複数のコンテキストのうちの第2のコンテキストのための前記複数のウィンドウサイズのうちのウィンドウサイズを決定することをさらに備え、ここにおいて、前記第2のコンテキストの前記ウィンドウサイズが前記第1のコンテキストの前記ウィンドウサイズとは異なる、C1に記載の方法。
[C5] 前記第1のコンテキストのための前記ウィンドウサイズと前記第2のコンテキストのための前記ウィンドウサイズとが、前記コーディングされたビンを含むビットストリーム中でシグナリングされない、C4に記載の方法。
[C6] 前記複数のウィンドウサイズが、ウィンドウサイズのあらかじめ定義されたセットを備える、C1に記載の方法。
[C7] エントロピーコーディングすることがエントロピー符号化することを備え、ここにおいて、前記ウィンドウサイズを決定することが、
ウィンドウサイズの前記あらかじめ定義されたセットのそれぞれのウィンドウサイズについて、前記シンタックス要素のための前記ビン値を含む特定のビンストリングをエントロピー符号化するために使用されるビットのそれぞれの量を決定することと、
前記特定のビンストリングをエントロピー符号化するために、ビットの最も小さい量に対応する、ウィンドウサイズの前記あらかじめ定義されたセットのうちの前記ウィンドウサイズを前記コンテキストのための前記ウィンドウサイズとして選択することとを備える、C6に記載の方法。
[C8] デフォルトウィンドウサイズが前記複数のコンテキストのために使用されるかどうかを示す第1のシンタックス要素をコーディングすることをさらに備える、C1に記載の方法。
[C9] 前記デフォルトウィンドウサイズが前記複数のコンテキストのために使用されないことを示す前記第1のシンタックス要素に基づいて、前記コンテキストのための前記ウィンドウサイズを示す第2のシンタックス要素をコーディングすることをさらに備える、C8に記載の方法。
[C10] 前記コンテキストのための前記ウィンドウサイズを示すために、前記第2のシンタックス要素が、前記コンテキストのための前記ウィンドウサイズと前記デフォルトウィンドウサイズとの間の差分を示す、C9に記載の方法。
[C11] 前記第1のシンタックス要素をコーディングすることが、前記第1のシンタックス要素を含む現在スライスのスライスヘッダをコーディングすることを備え、ここにおいて、前記第1のシンタックス要素は、前記現在スライスのビンをエントロピーコーディングするとき、前記デフォルトウィンドウサイズが前記複数のコンテキストのために使用されるかどうかを示す、C8に記載の方法。
[C12] 現在スライスのスライスヘッダ中で、前記複数のコンテキストのためのウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示すシンタックス要素をコーディングすることをさらに備える、C1に記載の方法。
[C13] 前記コンテキストのための前記ウィンドウサイズを決定することが、
前記シンタックス要素のタイプに基づいて、前記コンテキストのための前記ウィンドウサイズを決定することを備える、C1に記載の方法。
[C14] エントロピーコーディングすることがエントロピー復号することを備え、前記方法が、
コード化ビデオビットストリームから、前記コンテキストのための前記ウィンドウサイズを示す1つまたは複数のシンタックス要素を復号することをさらに備える、C1に記載の方法。
[C15] ビデオデータのエントロピーコーディングのための装置であって、前記装置が、
前記ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型エントロピーコーディングプロセスにおいて使用される複数のコンテキストを記憶するように構成されたメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することと、
コンテキストモデルの確率状態に基づいて、前記シンタックス要素のための前記値のビンをエントロピーコーディングすることと、
前記ウィンドウサイズ前記コーディングされたビンに基づいて前記コンテキストモデルの前記確率状態を更新することと
を行うように構成された、装置。
[C16] 前記1つまたは複数のプロセッサが、
前記更新された確率状態に基づいて、同じコンテキストに関連する別のビンをエントロピーコーディングするようにさらに構成された、C15に記載の装置。
[C17] 前記コンテキストモデルが第1のコンテキストであり、ここにおいて、前記1つまたは複数のプロセッサが、
前記複数のコンテキストのうちの第2のコンテキストのための前記複数のウィンドウサイズのうちのウィンドウサイズを決定するようにさらに構成され、ここにおいて、前記第2のコンテキストの前記ウィンドウサイズが前記第1のコンテキストの前記ウィンドウサイズとは異なる、C16に記載の装置。
[C18] 前記第1のコンテキストのための前記ウィンドウサイズと前記第2のコンテキストのための前記ウィンドウサイズとが、前記コーディングされたビンを含むビットストリーム中でシグナリングされない、C17に記載の装置。
[C19] 前記複数のウィンドウサイズが、ウィンドウサイズのあらかじめ定義されたセットを備える、C16に記載の装置。
[C20] エントロピーコーディングするために、前記1つまたは複数のプロセッサがエントロピー符号化するように構成され、ここにおいて、前記ウィンドウサイズを決定するために、前記1つまたは複数のプロセッサが、
ウィンドウサイズの前記あらかじめ定義されたセットのそれぞれのウィンドウサイズについて、前記シンタックス要素のための前記ビン値を含む特定のビンストリングをエントロピー符号化するために使用されるビットのそれぞれの量を決定することと、
前記特定のビンストリングをエントロピー符号化するために、前記コンテキストのための前記ウィンドウサイズとして、ビットの最も小さい量に対応する、ウィンドウサイズの前記あらかじめ定義されたセットのうちの前記ウィンドウサイズを選択することとを行うように構成された、C19に記載の装置。
[C21] 前記1つまたは複数のプロセッサが、
デフォルトウィンドウサイズが前記複数のコンテキストのために使用されるかどうかを示す第1のシンタックス要素をコーディングするようにさらに構成された、C15に記載の装置。
[C22] 前記デフォルトウィンドウサイズが前記複数のコンテキストのために使用されないことを示す前記第1のシンタックス要素に基づいて、前記1つまたは複数のプロセッサが、
前記コンテキストのための前記ウィンドウサイズを示す第2のシンタックス要素をコーディングするようにさらに構成された、C21に記載の装置。
[C23] 前記コンテキストのための前記ウィンドウサイズを示すために、前記第2のシンタックス要素が、前記コンテキストのための前記ウィンドウサイズと前記デフォルトウィンドウサイズとの間の差分を示す、C22に記載の装置。
[C24] 前記第1のシンタックス要素をコーディングするために、前記1つまたは複数のプロセッサが、前記第1のシンタックス要素を含む現在スライスのスライスヘッダをコーディングするように構成され、ここにおいて、前記第1のシンタックス要素は、前記現在スライスのビンをエントロピーコーディングするとき、前記デフォルトウィンドウサイズが複数のコンテキストモデルのために使用されるかどうかを示す、C21に記載の装置。
[C25] 前記1つまたは複数のプロセッサが、
現在スライスのスライスヘッダ中で、前記複数のコンテキストのためのウィンドウサイズが、前にコーディングされたスライスから継承されるかどうかを示すシンタックス要素をコーディングするようにさらに構成された、C15に記載の装置。
[C26] 前記コンテキストのための前記ウィンドウサイズを決定するために、前記1つまたは複数のプロセッサが、
前記シンタックス要素のタイプに基づいて、前記コンテキストのための前記ウィンドウサイズを決定するように構成された、C15に記載の装置。
[C27] 前記装置が、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイスのうちの少なくとも1つを備える、C15に記載の装置。
[C28] 復号ビデオデータを表示するように構成されたディスプレイをさらに備える、C27に記載の装置。
[C29] 前記ビデオデータをキャプチャするように構成されたカメラをさらに備える、27 15に記載の装置。
[C30] エントロピーコーディングするために、前記1つまたは複数のプロセッサが、前記シンタックス要素の前記値をエントロピー復号するように構成された、C15に記載の装置。
[C31] ビデオデータのエントロピーコーディングのための装置であって、前記装置が、
前記ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型コーディングプロセスにおいて使用される複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定するための手段と、
前記コンテキストの確率状態に基づいて、前記シンタックス要素のための前記値のビンをエントロピーコーディングするための手段と、
前記ウィンドウサイズと前記コーディングされたビンとに基づいて前記コンテキストの前記確率状態を更新するための手段とを備える、装置。
[C32] 実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、
ビデオデータのシンタックス要素のための値をエントロピーコーディングするために、コンテキスト適応型コーディングプロセスにおいて使用される複数のコンテキストのうちのコンテキストのための複数のウィンドウサイズのうちのウィンドウサイズを決定することと、
前記コンテキストの確率状態に基づいて、前記シンタックス要素のための前記値のビンをエントロピーコーディングすることと、
前記ウィンドウサイズと前記コーディングされたビンとに基づいて前記コンテキストの前記確率状態を更新することとを行わせる命令を記憶するコンピュータ可読記憶媒体。