(57)【特許請求の範囲】
【請求項１】
データをコーディングする方法であって、
複数のコーディングサイクルをもつコンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすること、を備え、各コーディングサイクルはビンの前記シーケンスのうちの１つのビンをコーディングし、
現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて第１の確率モデルを選択することと、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新されており、
前記ビンをコーディングするために前記第１の確率モデルを適用することと、
前記第１の確率モデルを更新することと、
を含み、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより１コーディングサイクル前にコーディングされた前のビンの値に基づいて更新される、方法。
【請求項２】
前記第１の確率モデルはコンテキストバッファに記憶され、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記第１の確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記第１の確率モデルを選択することを備える、請求項１に記載の方法。
【請求項３】
ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、請求項１に記載の方法。
【請求項４】
ビンの前記シーケンスのうちの前記ビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記方法は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化すること、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含み、
前記初期ビンは、前記現在のコーディングサイクルよりも少なくとも２コーディングサイクル前にコーディングされる、請求項１に記載の方法。
【請求項５】
ビンの前記シーケンスは、有効性ビンとレベルビンとを含み、
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、前記有効性ビンをコンテキスト適応型コーディングすることと、前記レベルビンのコーディングをバイパスすることと、を備える、請求項１に記載の方法。
【請求項６】
ビンの前記シーケンスは第１のパーティションのビンの第１のシーケンスと、第２のパーティションのビンの第２のシーケンスとを備え、前記方法は、前記第１のパーティションのビンの前記第１のシーケンスのコーディングと並列に前記コンテキスト適応型エントロピーコーディングプロセスを使用して前記第２のパーティションのビンの前記第２のシーケンスをコーディングすることをさらに備える、請求項１に記載の方法。
【請求項７】
前記現在のコーディングサイクルより前記少なくとも２コーディングサイクル前に対応するビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングすることをさらに備える、請求項１に記載の方法。
【請求項８】
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、請求項１に記載の方法。
【請求項９】
ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを符号化することを備える、請求項１に記載の方法。
【請求項１０】
ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの１つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を２値化することと、
をさらに備える、請求項９に記載の方法。
【請求項１１】
ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを復号することを備える、請求項１に記載の方法。
【請求項１２】
変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
をさらに備える、請求項１１に記載の方法。
【請求項１３】
データをコーディングするための装置であって、
複数のコーディングサイクルをもつコンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするように構成された１つまたは複数のプロセッサを備え、各コーディングサイクルはビンの前記シーケンスのうちの１つのビンをコーディングし、
現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて第１の確率モデルを選択することと、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新されており、
前記ビンをコーディングするために前記第１の確率モデルを適用することと、
前記第１の確率モデルを更新することと、
を含み、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより１コーディングサイクル前にコーディングされた前のビンの値に基づいて更新される、装置。
【請求項１４】
前記装置は、前記第１の確率モデルを記憶するコンテキストバッファをさらに備え、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記第１の確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記第１の確率モデルを選択することを備える、請求項１３に記載の装置。
【請求項１５】
ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、請求項１３に記載の装置。
【請求項１６】
ビンの前記シーケンスのうちの前記ビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化することと、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含み、
前記初期ビンは、前記現在のコーディングサイクルよりも少なくとも２コーディングサイクル前にコーディングされる、請求項１３に記載の装置。
【請求項１７】
ビンの前記シーケンスは、有効性ビンとレベルビンとを含み、
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、前記有効性ビンをコンテキスト適応型コーディングすることと、前記レベルビンのコーディングをバイパスすることと、を備える、請求項１３に記載の装置。
【請求項１８】
ビンの前記シーケンスは第１のパーティションのビンの第１のシーケンスと、第２のパーティションのビンの第２のシーケンスとを備え、前記１つまたは複数のプロセッサは、前記第１のパーティションのビンの前記第１のシーケンスのコーディングと並列に前記コンテキスト適応型エントロピーコーディングプロセスを使用して前記第２のパーティションのビンの前記第２のシーケンスをコーディングするようにさらに構成された、請求項１３に記載の装置。
【請求項１９】
前記１つまたは複数のプロセッサは、前記現在のコーディングサイクルより前記少なくとも２コーディングサイクル前に対応するビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングするようにさらに構成された、請求項１３に記載の装置。
【請求項２０】
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、請求項１３に記載の装置。
【請求項２１】
前記１つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するように構成された、請求項１３に記載の装置。
【請求項２２】
前記１つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの１つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を２値化することと、
を行うようにさらに構成された、請求項２１に記載の装置。
【請求項２３】
前記１つまたは複数のプロセッサは、ビンの前記シーケンスを復号するように構成された、請求項１３に記載の装置。
【請求項２４】
前記１つまたは複数のプロセッサは、
変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
を行うようにさらに構成された、請求項２３に記載の装置。
【請求項２５】
データをコーディングするための装置であって、
複数のコーディングサイクルをもつコンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングする手段を備え、各コーディングサイクルはビンの前記シーケンスのうちの１つのビンをコーディングし、
現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて第１の確率モデルを選択することと、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新されており、
前記ビンをコーディングするために前記第１の確率モデルを適用することと、
前記第１の確率モデルを更新することと、
を含み、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより１コーディングサイクル前にコーディングされた前のビンの値に基づいて更新される、装置。
【請求項２６】
前記装置は、前記第１の確率モデルを記憶する手段をさらに備え、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記第１の確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に、前記第１の確率モデルを記憶する手段に記憶された前記第１の確率モデルを選択することを備える、請求項２５に記載の装置。
【請求項２７】
ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、請求項２５に記載の装置。
【請求項２８】
ビンの前記シーケンスのうちの前記ビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化する手段をさらに備え、前記初期化する手段は、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含み、
前記初期ビンは、前記現在のコーディングサイクルよりも少なくとも２コーディングサイクル前にコーディングされる、請求項２５に記載の装置。
【請求項２９】
ビンの前記シーケンスは第１のパーティションのビンの第１のシーケンスと、第２のパーティションのビンの第２のシーケンスとを備え、前記コーディングする手段は、前記第１のパーティションのビンの前記第１のシーケンスのコーディングと並列に前記コンテキスト適応型エントロピーコーディングプロセスを使用して前記第２のパーティションのビンの前記第２のシーケンスをコーディングするようにさらに構成された、請求項２５に記載の装置。
【請求項３０】
前記コーディングする手段は、前記現在のコーディングサイクルより前記少なくとも２コーディングサイクル前に対応するビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングするようにさらに構成された、請求項２５に記載の装置。
【請求項３１】
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、請求項２５に記載の装置。
【請求項３２】
命令を記憶したコンピュータ可読記憶媒体であって、実行されたとき、１つまたは複数のプロセッサに、
複数のコーディングサイクルをもつコンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングさせる命令を備え、各コーディングサイクルはビンの前記シーケンスのうちの１つのビンをコーディングし、
現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて第１の確率モデルを選択することと、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新されており、
前記ビンをコーディングするために前記第１の確率モデルを適用することと、
前記第１の確率モデルを更新することと、
を含み、前記第１の確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより１コーディングサイクル前にコーディングされた前のビンの値に基づいて更新される、コンピュータ可読記憶媒体。
【請求項３３】
前記命令は、さらに、前記１つまたは複数のプロセッサに、コンテキストバッファに前記第１の確率モデルを記憶させ、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記第１の確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記第１の確率モデルを選択することを備える、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３４】
ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３５】
ビンの前記シーケンスのうちの前記ビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記命令は、さらに、前記１つまたは複数のプロセッサに、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化させ、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含み、
前記初期ビンは、前記現在のコーディングサイクルよりも少なくとも２コーディングサイクル前にコーディングされる、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３６】
ビンの前記シーケンスは、有効性ビンとレベルビンとを含み、
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、前記有効性ビンをコンテキスト適応型コーディングすることと、前記レベルビンのコーディングをバイパスすることと、を備える、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３７】
ビンの前記シーケンスが第１のパーティションのビンの第１のシーケンスと、第２のパーティションのビンの第２のシーケンスとを備え、前記命令は、前記１つまたは複数のプロセッサに、前記第１のパーティションのビンの前記第１のシーケンスのコーディングと並列に前記コンテキスト適応型エントロピーコーディングプロセスを使用して前記第２のパーティションのビンの前記第２のシーケンスをコーディングさせる、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３８】
前記命令は、前記１つまたは複数のプロセッサに、前記現在のコーディングサイクルより前記少なくとも２コーディングサイクル前に対応するビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングさせる、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３９】
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、請求項３２に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、それらすべての内容全体が全体として参照により本明細書に組み込まれる、２０１１年６月３日に出願された米国仮特許出願第６１／４９３，３７１号、２０１１年６月３０日に出願された米国仮特許出願第６１／５０３，５３７号、２０１１年１０月２８日に出願された米国仮特許出願第６１／５５２，９２１号、２０１１年１１月１日に出願された米国仮特許出願第６１／５５４，４０８号、および２０１１年１１月２０日に出願された米国仮特許出願第６１／５６１，９２１号の優先権を主張する。
【技術分野】
【０００２】
本開示は、ビデオコーディングに関し、より詳細には、ビデオコーディングプロセスによって生成された残差変換係数のブロックをコーディングすることに関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部）はビデオブロックに区分され得、これらのビデオブロックは、ツリーブロック、コーディングユニット（ＣＵ：coding unit）および／またはコーディングノードと呼ばれることがある。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと、予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その残差変換係数は、次いで量子化され得る。量子化変換係数は、最初は２次元アレイで構成され、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]本開示の技法は、概して、ビデオデータをエントロピーコーディングすることに関する。たとえば、エントロピーコーディング中に、ビデオコーダは、変換係数を２進形態に変換し、それによって、１つまたは複数のビットまたは「ビン」を生成し得る。ビデオコーダは、次いで、ビンが所与の２進値を有する可能性を示し得る、各ビンの確率推定値を使用してビデオデータのブロックの各ビンをコーディングし得る。確率推定値は、「コンテキストモデル」とも呼ばれる確率モデル内に含まれ得る。ビデオコーダは、ビンのコンテキストを決定することによってコンテキストモデルを選択し得る。シンタックス要素のビンのコンテキストは、前にコーディングされたシンタックス要素の関係するビンの値を含み得る。ビンをコーディングした後に、ビデオコーダは、最新の確率推定値を反映するために、ビンの値に基づいてコンテキストモデルを更新し得る。
【０００７】
[0007]本開示のいくつかの技法は、概して、エントロピーコーディング中の確率更新に関係する。すなわち、いくつかの例では、ビデオコーダが、各ビンをコーディングした後に確率モデルを更新し得る。そのような例では、確率は比較的正確であり得るが、更新プロセスに関連するレイテンシが存在し得る。他の例では、ビデオコーダは、ビン値に関連する統計値を記憶し、ビデオデータの全ブロックをコーディングした後に確率モデルを更新し得る。そのような技法によってレイテンシは低減し得るが、ブロックのコーディング中の確率があまり正確でないことにより、パフォーマンスも低下し得る。本開示の態様は、各ビン後に確率モデルを更新することなしに、確率モデルがビデオデータの全ブロック後よりも頻繁に更新され得るように、確率更新プロセスの粒度を増加させることに関係する。たとえば、本開示の態様は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後に確率を更新することに関係する。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
【０００８】
[0008]本開示のいくつかの態様はまた、並列化エントロピーコーディングのための他の技法に関係する。たとえば、本開示の技法はまた、１つまたは複数の前のビンをコーディングするより前に更新された確率モデルを使用してデータのビンをコーディングすることを含む。すなわち、確率モデルは、現在のビンをコーディングより少なくとも２コーディング反復またはサイクル前に更新され得る。したがって、本開示の技法は、複数の連続するビンが同じ確率モデルを使用してコーディングされるとき、そのモデルを使用して１つのビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。いくつかの例では、そのような技法は、ビデオデータのブロックのビンを並列にコーディングするために適用され得る。
【０００９】
[0009]一例では、本開示の態様は、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすることを含む、データをコーディングする方法に関係する。ビンのシーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた、前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
【００１０】
[0010]別の例では、本開示の態様は、データをコーディングするための装置であって、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするように構成された１つまたは複数のプロセッサを含む装置に関係する。ビンのシーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
【００１１】
[0011]別の例では、本開示の態様は、データをコーディングするための装置であって、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするための手段を含む装置に関係する。ビンのシーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
【００１２】
[0012]別の例では、本開示の態様は、実行されたとき、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすることを１つまたは複数のプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体に関係する。ビンのシーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
【００１３】
[0013]別の例では、本開示の態様は、ビデオコーディングプロセスにおいて残差ビデオデータに関連する変換係数をコーディングする方法であって、変換係数の複数のサブセットのうちの第１のサブセットをコーディングすることと、第１のサブセットをコーディングすることは、１つまたは複数の確率モデルを使用して第１のサブセットをコンテキスト適応型コーディングすることを備え、変換係数の第１のサブセットをコーディングしながら、１つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、第１のサブセットの最終係数をコーディングした後に、記憶された確率モデル統計値に基づいて確率モデルを更新することと、更新された１つまたは複数の確率モデルを使用して変換係数の第２のサブセットをコーディングすることとを含む方法に関係する。
【００１４】
[0014]別の例では、本開示の態様は、残差ビデオデータに関連する変換係数をコーディングするための装置であって、変換係数の複数のサブセットのうちの第１のサブセットをコーディングすることと、第１のサブセットをコーディングすることは、１つまたは複数の確率モデルを使用して第１のサブセットをコンテキスト適応型コーディングすることを備え、変換係数の第１のサブセットをコーディングしながら、１つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、第１のサブセットの最終係数をコーディングした後に、記憶された確率モデル統計値に基づいて確率モデルを更新することと、更新された１つまたは複数の確率モデルを使用して変換係数の第２のサブセットをコーディングすることとを行うように構成された１つまたは複数のプロセッサを含む装置に関係する。
【００１５】
[0015]本開示の１つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１６】
【図１】本開示の技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】本開示の技法のいずれかまたはすべてを実装し得るビデオエンコーダの一例を示すブロック図。
【図３】符号化されたビデオシーケンスを復号するビデオデコーダの一例を示すブロック図。
【図４Ａ】例示的な４分木（quadtree）を示す概念図。
【図４Ｂ】対応する最大コーディングユニット（ＬＣＵ：largest coding unit）を示す概念図。
【図５Ａ】ビデオデータのブロックの変換係数を走査するための例示的な順方向対角走査パターンを示す概念図。
【図５Ｂ】ビデオデータのブロックの変換係数を走査するための例示的な逆方向対角走査パターンを示す概念図。
【図６Ａ】変換係数のブロックをサブセットに分割することを示す例示的な概念図。
【図６Ｂ】変換係数のブロックをサブセットに分割することを示す別の例示的な概念図。
【図７Ａ】ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す例示的な概念図。
【図７Ｂ】ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す別の例示的な概念図。
【図８】コンテキスト適応型コーディング技法を使用して有効性マップをコーディングする一例を示す流れ図。
【図９】サブセットをコーディングした後にコンテキストが更新され得る、修正されたコンテキスト適応型コーディングプロセスの一例を示す流れ図。
【図１０】ビデオデータのブロックをエントロピーコーディングする例示的な技法を示す流れ図。
【図１１】遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする一例を示す概念図。
【図１２】遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする例示的な技法を示す図。
【発明を実施するための形態】
【００１７】
[0031]ビデオコーディングデバイスは、空間的冗長性または時間的冗長性を利用することによってビデオデータを圧縮することを試み得る。たとえば、ビデオエンコーダは、隣接する、前にコーディングされたブロックに対してブロックをコーディングすることによって空間的冗長性を利用し得る。同様に、ビデオエンコーダは、前にコーディングされたフレームのデータに対してブロックをコーディングすることによって時間的冗長性を利用し得る。特に、ビデオエンコーダは、空間的ネイバーのデータから、または前にコーディングされたフレームのデータから現在のブロックを予測し得る。ビデオエンコーダは、次いで、ブロックの残差を、ブロックの実際のピクセル値と、ブロックの予測ピクセル値との間の差分として計算し得る。したがって、ブロックの残差は、ピクセル（または空間的）領域におけるピクセルごとの差分値を含み得る。
【００１８】
[0032]ビデオエンコーダは、次いで、残差の値に変換を適用して、ピクセル値のエネルギーを周波数領域における比較的小さい数の変換係数に圧縮し得る。ビデオエンコーダは、次いで、変換係数を量子化し得る。ビデオエンコーダは、量子化変換係数を走査して、量子化変換係数の２次元行列を、量子化変換係数を含む１次元ベクトルに変換し得る。係数を走査するプロセスは、係数を直列化することと呼ばれることがあるある。
【００１９】
[0033]ビデオエンコーダは、次いで、走査された係数をエントロピー符号化するためにエントロピーコーディングプロセスを適用し得る。例示的なエントロピーコーディングプロセスは、たとえば、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディングまたは他のエントロピー符号化方法を含み得る。ビデオエンコーダはまた、ビデオデータを復号する際にビデオデコーダが使用するために、符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
【００２０】
[0034]ビデオデコーダは、ビデオエンコーダによって実行される符号化技法とは概して逆の技法を実行し得る。概して逆であるが、ビデオデコーダは、場合によっては、ビデオエンコーダビデオデコーダによって実行される技法と同様の技法を実行し得る。ビデオデコーダはまた、ビデオエンコーダに関して説明するデータを含む受信ビットストリーム中に含まれているシンタックス要素または他のデータに依拠し得る。
【００２１】
[0035]一例として（ＣＡＢＡＣ）に関して、ビデオコーダ（ビデオエンコーダおよび／またはビデオデコーダ）は、ビデオデータのブロックに関連するシンボルをコーディングするためにコンテキストに作用する確率モデルまたは「コンテキストモデル」を選択し得る。たとえば、エンコーダにおいて、確率モデルを使用することによってターゲットシンボルがコーディングされ得る。デコーダにおいて、確率モデルを使用することによってターゲットシンボルがパースされ得る。コンテキストは、たとえば、現在コーディングされているシンボルに隣接するシンボルについて値が０であるのか非０であるのかに関係し得る。
【００２２】
[0036]いくつかの例によれば、ビデオブロック中の有効係数（すなわち、非０変換係数）の位置は、変換係数の「レベル」と呼ばれることがある、変換係数の値より前に符号化され得る。有効係数のロケーションをコーディングするプロセスは、有効性マップコーディングと呼ばれることがある。有効性マップ（ＳＭ：significance map）は、有効係数のロケーションを示す２進値の２次元アレイを含む。
【００２３】
[0037]たとえば、ビデオデータのブロックについてのＳＭは、１および０の２次元アレイを含み得、１は、ブロック内の有効変換係数の位置を示し、０は、ブロック内の非有効（０値）変換係数の位置を示す。１および０は「有効係数フラグ」と呼ばれる。さらに、いくつかの例では、ＳＭは１および０の別の２Ｄアレイを含み得、１は、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を示し、０は、ブロック内のすべての他の係数の位置を示す。この場合、１および０は「最後有効係数フラグ」と呼ばれる。他の例では、そのような最後有効係数フラグは使用されない。むしろ、ブロック中の最後有効係数は、ＳＭの残りを送る前に最初にコーディングされ得る。いずれの場合も、ビデオデータのブロックのためのＳＭコーディングは、ブロックをコーディングするために使用されるビデオビットレートのかなりの割合を消費し得る。
【００２４】
[0038]ＳＭがコーディングされた後に、ビデオコーダは、各変換係数のレベルをエントロピーコーディングし得る。たとえば、ビデオコーダは、各非０変換係数の絶対値を２進形態に変換し得る。このようにして、各非０変換係数は、たとえば、１つまたは複数のビットまたは「ビン」を備える単項コードを使用して、「２値化」され得る。さらに、ビデオデコーダがビデオデータを復号することを可能にするために、いくつかの他の２値化されたシンタックス要素が含まれ得る。
【００２５】
[0039]ビデオコーダは、ブロックの変換係数に対応するのかシンタックス情報に対応するのかにかかわらず、ビデオデータのブロックのための各ビンの確率推定値を使用して各ビンをコーディングし得る。確率推定値は、ビンが所与の２進値（たとえば、「０」または「１」）を有する可能性を示し得る。確率推定値は、「コンテキストモデル」とも呼ばれる確率モデル内に含まれ得る。ビデオコーダは、ビンのコンテキストを決定することによって確率モデルを選択し得る。シンタックス要素のビンのコンテキストは、前にコーディングされた隣接シンタックス要素の関係するビンの値を含み得る。
【００２６】
[0040]一例として、ブロックの各有効係数フラグのコンテキストは、ブロックのタイプ（たとえば、ブロックサイズ）と、ブロックに関連する走査順序に従うブロック内のそれぞれのフラグに対応する係数の位置とを含む。別の例として、ブロックの２値化された残差変換係数絶対値の各ビンのためのコンテキストは、絶対値を表す単項（unary）コードワード内のビンの位置と、ブロックの、前にコーディングされた係数の値とを含む。他の例では、シンタックス要素（たとえば、コード化ブロックパターン（coded block pattern）、または「ＣＢＰ」）のビンのコンテキストは、たとえば、現在のシンタックス要素の上部および左側にある、前にコーディングされた隣接シンタックス要素の関係するビンの値を含む。いずれの場合も、コンテキストごとに異なる確率モデルが定義される。ビンをコーディングした後に、確率モデルは、最新の確率推定値を反映するために、ビンの値に基づいてさらに更新される。
【００２７】
[0041]ビデオデータのブロックに関連するビンは、１つまたは複数のコーディング「パス」においてコーディングされ得る。たとえば、第１のパス中に、ビデオコーダがＳＭをエントロピーコーディングし得る。第２のパス中に、ビデオコーダは、変換係数レベルの第１のビンをエントロピーコーディングし得る。ビデオコーダは、ブロックの変換係数に関連する情報のすべてがコーディングされるまで、コーディングパスを実行し続け得る。いくつかの例では、ビデオコーダは、コンテキスト適応型コーディングと非コンテキスト適応型コーディングとの組合せを使用してビデオデータのブロックのビンをコーディングし得る。たとえば、１つまたは複数のパスについて、ビデオコーダは、標準算術コーディングプロセスをバイパスまたは省略するためにバイパスモードを使用し得る。そのような場合、バイパスコード化ビンをコーディングするために固定の等確率モデルが使用され得る。バイパスコード化ビンは、コンテキスト更新または確率更新を含まない。
【００２８】
[0042]コンテキスト適応型コーディングを実行するとき、いくつかの例では、複数のフィードバックループに起因する比較的高い直列依存性があり得る。たとえば、ビンをコーディングするための特定の確率モデルを示すコンテキストは、前にコーディングされたビン、たとえば、前にコーディングされたシンタックス要素の関係するビンの値によって影響され得る。さらに、ビンをコーディングするために使用される確率モデルも、前にコーディングされたビンの値によって影響され得る。すなわち、確率モデルは、有限状態機械における状態として維持され得る。各特定の状態は特定の確率値に対応し得る。確率モデルの更新に対応する次の状態は、現在のビン（たとえば、現在コーディングされているビン）の値に依存し得る。
【００２９】
[0043]したがって、前にコーディングされたビンの値は、少なくとも部分的に、ビンが所与の値を有する確率を示すので、確率モデル内の確率推定値は、前にコーディングされたビンの値によって影響され得る。その結果、コンテキスト適応型コーディング（たとえば、ＣＡＢＡＣ）は直列方式で、たとえば、ビン単位で実行される。たとえば、特定のコンテキストがそれに対し決定される現在のビンをコーディングした後に、そのコンテキストに対応する確率モデルは、同じコンテキストがそれに対し決定され、したがって、同じ確率モデルに対応する、次のビンをコーディングする前に更新されなければならない。
【００３０】
[0044]一例として、ビデオデータのブロックのビンのシーケンス（たとえば、ビン（０）、ビン（１）、．．．ビン（ｎ））が、同じ確率モデル（たとえば、確率モデルＡ）を使用して連続してコーディングされ得る。言い換えれば、（たとえば、コンテキストインデックスｃｔｘ（０）、ｃｔｘ（１）、．．．ｃｔｘ（ｎ）を使用して示される）ビンについて導出されるコンテキストが、それぞれのビンをコーディングするために使用される同じ確率モデルにそれぞれ対応し得る。この例では、ビンのうちの所与の１つをコーディングした後に、確率モデルは、後続のビンをコーディングするために確率モデルが使用され得る前に、ビンの値に基づいて更新されなければならない。確率モデルを更新することにより、所与の値を有するモデルを使用してコーディングされたビンの最新の確率を反映するモデルが得られる。したがって、上記で説明したように、ブロックについて、前のコーディングサイクル、すなわち、前のビンのコーディングの完了後に更新された確率モデルを使用してビデオデータのブロックのための特定のビンをコーディングすることにより、連続するコーディングサイクル間に遅延が生じ得る。特に、前のビンをコーディングした直後に、特定のビンをコーディングするために、確率モデルが直ちに利用できないことがある。その結果、ビンのシーケンスのコーディングは、他の方法を使用したシーケンスのコーディングほど合理的でないことがある。これらの場合、コーディング効率が悪くなり得る。
【００３１】
[0045]さらに、上述のように、特定の確率モデルは、特定の確率値に対応する各特定の状態とともに、有限状態機械における状態として維持され得る。確率モデルの更新に対応する次の状態は、現在のビンの値に依存し得る。状態更新と呼ばれることがあるそのようなフィードバックループは、計算ボトルネックを提示し得る。たとえば、フィードバックループにおける依存性によりスループットを増加させることが困難であり得る。すなわち、あるビンは、前のビンからの確率モデルが更新されるまで処理されないことがある。いくつかの例では、同じコンテキストインデックスが高い頻度で連続的に（ビンごとに）呼び出され得る。一例では、コーダによって符号化される全ビンの２５％から３５％まで表現し得る、有効性フラグコーディングのためのコンテキストが連続的に呼び出され得る。同じコンテキストを繰り返し呼び出し、各ビン後にモデルを更新するのを待つことにより、全コーダのスループットのボトルネックが提示され得る。
【００３２】
[0046]上記で説明したコンテキスト更新ボトルネックを回避するために、いくつかの例では、ビデオコーダは、いくつかの統計値を記憶し、ビデオデータのブロック全体をコーディングした後に１つまたは複数のコンテキストを更新し得る。たとえば、各ビンをコーディングするためのコンテキストを更新するのではなく、ビデオコーダは、各コンテキストに関連する確率の確率統計値をビデオデータのブロックのためのメモリに記憶し得る。したがって、ブロックの各ビンをコーディングするための確率は変化せず、ブロックループ内で更新された確率への依存性がない。ブロックのコーディング後に、ブロックのコーディング中に更新された記憶されている確率（たとえば、コンテキストの状態）は、次のブロックのための現在の確率に設定される。このようにして、各ビン後にコンテキスト確率を更新する代わりに、現在のブロックのためのビンのコーディングにおいて使用されたコンテキストの確率モデルが、現在のブロックの終わりに１回更新される。ただし、確率はビンごとに更新されず、したがってあまり正確でないことがあるので、全体的なコーディング性能は低下し得る。
【００３３】
[0047]本開示の態様は、各ビン後に確率モデルを更新することなしに、確率モデルがビデオデータの全ブロック後よりも頻繁に更新され得るように、確率更新プロセスの粒度を増加させることに関係する。たとえば、本開示の態様は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後に確率を更新することに関係する。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、１つのサブセットのビンの並列処理を可能にし得る。
【００３４】
[0048]一例では、ビデオコーダが、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。サブセットを決定した後に、ビデオコーダは、各サブセットに対して（たとえば、ＣＡＢＡＣ、ＰＩＰＥ、または別のコーディング方法などの）コンテキスト適応型コーディングを実行し得る。すなわち、たとえば、ビデオコーダは、第１のサブセットの変換係数の有効性マップと、係数レベルと、係数符号とをコーディングするためのコーディングパスを実行し得る。ビデオコーダは、次いで、次のサブセットに移り、コーディングプロセスを繰り返し得る。ビデオコーダは、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。
【００３５】
[0049]本開示の態様によれば、コンテキストに関連する確率を更新することは、各サブセットのコーディングにリンクされ得る。たとえば、ビデオコーダは、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、ビデオコーダは、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。ビデオコーダは、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、ビデオコーダは、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。
【００３６】
[0050]ビデオコーダは、サブセットを様々な方法で決定し得る。一例では、サブセットは、所定の数のビンを走査順序（たとえば、ビデオデータのブロックの変換係数が直列化される順序）で含み得る。説明のための一例では、８×８ブロックの変換係数（たとえば、６４個の総係数）の場合、第１のサブセットは、第１の１６個の係数を走査順序で含み得、第２のサブセットは、第２の１６個の係数を走査順序で含み得、第３のサブセットは、第３の１６個の係数を走査順序で含み得、第４のサブセットは、ブロックの最後の１６個の係数を走査順序で含み得る。ビデオコーダは、走査方向／順序（たとえば、水平、垂直、対角、ジグザグ、適応型など）にかかわらず、このようにしてサブセットを決定し得る。この例では、本開示の態様によれば、ビデオコーダは、各サブセットのすべてのビンを走査順序でコーディングした後に確率を更新し得る。
【００３７】
[0051]別の例では、ビデオコーダは、変換係数のブロックを複数のサブブロックに分割することによってサブセットを決定し得る。説明のための一例では、ビデオコーダは、８×８ブロックの変換係数（たとえば、６４個の総係数）を４つの４×４サブブロックに分割し得る。ビデオコーダは、特定の走査順序（たとえば、水平、垂直、対角、ジグザグ、適応型など）を使用してサブブロックの各々を走査し得る。走査順序は、サブブロックの各々について同じであるかまたは異なり得る。この例では、ビデオコーダは、各サブブロックのすべてのビンをコーディングした後に確率を更新し得る。
【００３８】
[0052]特定のサブセットのビンのすべてがコーディングされた後まで確率を更新するのを待つのではなく、本開示の態様によれば、別の例では、ビデオコーダは、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオコーダは、サブセット内の１つのパスの確率モデルの更新プロセスを、サブセットの他のパスと並列化し得る。たとえば、ビデオコーダは、変換係数のサブセットのための有効性情報のビンの確率を更新しながら、当該サブセットの別のコーディングパス中に係数レベルのビン１をコーディングし得る。この例では、あるパスのコンテキストは、サブセット内の他のパスをコーディングするために使用され得ない。
【００３９】
[0053]他の例では、ビデオコーダは、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオコーダは、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオコーダは、有効性マップをコーディングし、有効性マップをコーディングした後に確率を更新し得る。ビデオコーダは、次いで、変換係数に関連する残りの情報（たとえば、符号、レベルなど）をコーディングし得る。ビデオコーダがlast_xシンタックス要素とlast_yシンタックス要素の両方をコーディングする例では、ビデオコーダは、最後有効係数のlast_xとlast_yの両方をコーディングした後に確率を更新するか、またはビデオエンコーダは、last_xとlast_yとの各々をコーディングした後に確率を更新し得る。
【００４０】
[0054]本開示の技法は、（たとえば、変換係数の各フルブロックの後にのみコンテキストを更新することと比較して）コーディング性能を維持しながら、（たとえば、各ビンの後にコンテキストを更新することと比較して）ビンを並列に処理する能力を高めるために適用され得る。たとえば、本開示の技法は、１つのサブセットの２つ以上のビンが並列にコーディングされ得るので、コーディング並列化を向上させ得る。本開示の技法はまた、各サブセット後に更新される確率が、ブロックの終わりに更新される確率よりも、１つのブロックのいくつかの変換係数をコーディングするために正確であり得るので、コーディング効率を促進し得る。
【００４１】
[0055]本開示のいくつかの態様はまた、並列化エントロピーコーディングのための技法に関係する。たとえば、本開示の技法は、前のビンをコーディングするより前に更新された確率モデルを使用してデータのビンをコーディングすることを含む。すなわち、確率モデルは、現在のビンをコーディングするより少なくとも２コーディング反復またはサイクル前に更新され得る。したがって、本開示の技法は、複数の連続するビンが同じ確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。いくつかの例では、そのような技法は、ビデオデータのブロックのビンを並列にコーディングするために適用され得る。たとえば、本開示の技法は、確率更新を比較的正確な確率のために依然として維持しながら、変換係数のフルブロックをコーディングした後になど、より低い頻度で確率モデルを更新することに関連する性能劣化を回避し得る。
【００４２】
[0056]説明のための一例では、ビデオデータのブロックのビンのシーケンス、たとえば、ビン（０）、ビン（１）、．．．、ビン（ｎ−１）、およびビン（ｎ）が、コンテキスト適応型エントロピーコーディングプロセス、たとえば、ＣＡＢＡＣプロセスを実行することによって連続してコーディングされると仮定する。この例では、ビンのうちのいずれか１つについて決定されるコンテキストに対応する確率モデルは、コンテキストバッファまたは「ｃｔｘＢｕｆｆｅｒ」中に含まれる。ビン（ｎ）について決定されるコンテキストに対応する確率モデルがｃｔｘＢｕｆｆｅｒ（ｎ）中に含まれるとする。確率モデルは、初期状態によって定義され得、前に説明したように、前にコーディングされたビン、すなわちビン（０）、ビン（１）、．．．、ビン（ｎ−１）によって影響され得る。
【００４３】
[0057]本開示の態様によれば、ビデオコーダは、ビン（ｎ）をコーディングするために、ｃｔｘＢｕｆｆｅｒ（ｎ−Ｋ）中に含まれる確率モデルを使用し得る。インデックス「Ｋ」は、任意の正の非０整数値に等しくなり得る。たとえば、「１」の「Ｋ」値について、コンテキストバッファｃｔｘＢｕｆｆｅｒ（ｎ−１）は、現在のコーディングサイクルより２コーディングサイクル前に更新された確率モデルを含む。特に、ｃｔｘＢｕｆｆｅｒ（ｎ−１）中に含まれる確率モデルは、ビン（ｎ−２）をコーディングした後に更新されたｃｔｘＢｕｆｆｅｒ（ｎ−２）中に含まれる確率モデルである。このように確率モデルを更新することは、確率更新の間に遅延の１つまたは複数のサイクルが導入されるので、遅延状態更新と呼ばれることがある。
【００４４】
[0058]上記で説明した例では、ｃｔｘＢｕｆｆｅｒ（ｎ−１）中に含まれる確率モデルは、更新により、ビン（ｎ−１）をコーディングするために直ちに利用できないが、モデルは、１コーディングサイクル後にビン（ｎ）をコーディングするために利用可能である（たとえば、ビン（ｎ）がコーディングされる時間までには更新が完了する）。したがって、コーダは、ビン（ｎ）をコーディングするために、ｃｔｘＢｕｆｆｅｒ（ｎ−１）中に含まれる確率モデルが、前のコーディングサイクル中にコーディングされたビン（ｎ−１）に基づいてさらに更新されるまで待つ必要がない。したがって、本開示の態様は、確率更新に関連する遅延を回避し、２つ以上のビンが並列にコーディングされることを可能にし得る。
【００４５】
[0059]いくつかの例では、シーケンスの第１および第２のビンをコーディングするために初期確率モデルが使用される。たとえば、所与のシーケンスのビン（０）とビン（１）が両方ともｃｔｘＢｕｆｆｅｒ（０）を使用してコーディングされ得る。ビン（０）は、前に更新された確率モデルが存在しないので、このようにコーディングされ得る。ビン（１）は、ビン（０）の値に基づいてｃｔｘＢｕｆｆｅｒ（０）中に含まれる確率モデルを更新することに起因し得る、上記で説明した確率更新遅延を回避するために、このようにコーディングされ得る。
【００４６】
[0060]さらに、コンテキスト区分が使用される例では、本開示の技法はコンテキストパーティションごとに適用され得る。たとえば、シンタックス区分において、ビンがシンタックス要素に基づいてグループ化され、異なるパーティション中に入れられ、次いで、それらのパーティションが、（たとえば、V. SzeおよびA. P. Chandrakasan、「A high throughput CABAC algorithm using syntax element partitioning」、IEEE International Conference on Image Processing、pp. 773-776、2009に記載されているように）並列に処理される。そのような場合、状態更新を遅延させる概念は各パーティションに適用される。たとえば、１つのパーティションが、残差変換係数コーディングのために使用されるすべてのコンテキストを含んでおり、別のパーティションが残りのコンテキストを含んでいる場合、遅延コンテキスト更新は、この例では、各パーティションに別々に適用され得る。
【００４７】
[0061]上記で説明した、遅延状態更新に関する本開示の態様は、１つまたは複数のタイプのビンに適用され得る。たとえば、遅延状態更新技法は、変換係数レベルをコーディングするために使用されるコンテキストのためにのみ適用され得る。別の例では、遅延状態更新技法は、有効性マップコーディングのためにのみ使用され得る。
【００４８】
[0062]したがって、本開示の技法は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。さらに、本開示の技法は、変換係数のフルブロックをコーディングした後になど、より低い頻度で確率モデルを更新することに関連する性能劣化を回避し得る。いくつかの例では、本開示で説明する技法は、独立して使用され得るかまたは任意の組合せで一緒に使用され得る。
【００４９】
[0063]上記ではバイナリビデオコーディングに関して説明したが、遅延状態更新技法は、概して、他のデータの他の算術コーディングに適用され得ることを理解されたい。
【００５０】
[0064]たとえば、確率モデル中に３つ以上のシンボルが含まれる事例では、単純な状態更新を実行することが実現可能でないことがある。したがって、遅延状態更新を実行するのではなく、本開示の態様は、遅延確率更新を実行することを含む。
【００５１】
[0065]一例として、説明のために、シンボルのシーケンス、たとえば、シンボル（０）、シンボル（１）、．．．、シンボル（ｎ）などが符号化または復号されていると仮定する。シンボルは、ビデオデータ、オーディオデータ、または任意の他のデータによって生成され得る。さらに、各シンボルは、Ａ、Ｂ、Ｃ、およびＤによって示される４つの値を取り得ると仮定する。さらに、各シンボルに異なるコンテキストモデルが関連付けられ得るが、説明のために、すべてのシンボルが同じコンテキストを使用すると仮定する。さらに、コンテキストごとに別個の確率モデル（たとえば、Ａ、Ｂ、Ｃ、およびＤのための確率）が維持されると仮定する。通常、シンボル（０）がコーディングされた後に、コンテキスト（０）の確率モデルは、シンボル（０）の実際値を考慮するために更新され得る。ただし、本開示の態様によれば、確率モデル更新プロセスは、１つまたは複数の将来のシンボルがコーディングされるようになるまで遅延され得る。たとえば、１の遅延について、（たとえば、シンボル（０）をコーディングした後に）更新されたモデルは、シンボル（２）をコーディングするために利用可能である。
【００５２】
[0066]したがって、いくつかの例では、バイナリコーディングに関して、より詳細にはビデオデータのＣＡＢＡＣコーディングに関して説明することがあるが、本開示の技法は、より一般に算術コーディングに適用可能である。すなわち、上記で説明した遅延状態および／または確率更新技法は、コンテキスト適応型であることもないこともあり得る、多値算術コーディング方式に全般的に適用され得る。
【００５３】
[0067]図１は、コンテキスト適応型コーディングのための本開示で説明する技法を利用するように構成され得る、例示的なビデオ符号化および復号システム１０を示すブロック図である。図１の例に示すように、システム１０は、宛先デバイス１４によって復号するための符号化ビデオを生成するソースデバイス１２を含む。ソースデバイス１２は、通信チャネル１６を介して宛先デバイス１４に符号化ビデオを送信するか、あるいは、必要に応じて符号化ビデオが宛先デバイス１４によってアクセスされ得るように記憶媒体３４またはファイルサーバ３６に符号化ビデオを記憶し得る。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。
【００５４】
[0068]多くの場合、そのようなデバイスはワイヤレス通信が可能であり得る。したがって、通信チャネル１６は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。たとえば、通信チャネル１６は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル１６は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス１２から宛先デバイス１４に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１６は、ソースデバイス１２から宛先デバイス１４への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【００５５】
[0069]本開示で説明する技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００５６】
[0070]図１の例にさらに示すように、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器（モデム）２２と、送信機２４とを含む。ソースデバイス１２において、ビデオソース１８は、ビデオキャプチャデバイスなどのソースを含み得る。ビデオキャプチャデバイスは、例として、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムのうちの１つまたは複数を含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らず、ビデオ符号化および／または復号機能を含む非ワイヤレスデバイスに適用され得る。ソースデバイス１２および宛先デバイス１６は、本明細書で説明する技法をサポートすることができるコーディングデバイスの例にすぎない。
【００５７】
[0071]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオ情報は、ワイヤレス通信プロトコルなどの通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００５８】
[0072]また、ビデオエンコーダ２０によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、後の消費のために記憶媒体３４またはファイルサーバ３６上に記憶され得る。記憶媒体３４は、ブルーレイ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体３４に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス１４によってアクセスされ得る。
【００５９】
[0073]ファイルサーバ３６は、符号化ビデオを記憶することと、その符号化ビデオを宛先デバイス１４に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、ローカルディスクドライブ、または符号化ビデオデータを記憶し、それを宛先デバイスに送信することが可能な任意の他のタイプのデバイスを含む。ファイルサーバ３６は、インターネット接続を含む任意の標準データ接続を通して宛先デバイス１４によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。ファイルサーバ３６からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００６０】
[0074]本開示では、概して、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０などの別のデバイスに「シグナリング」することに言及し得る。ただし、ビデオエンコーダ２０は、いくつかのシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ２０は、いくつかのシンタックス要素をビデオデータの様々な符号化部分のヘッダに記憶することによってデータを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ３０によって受信され、復号されるより前に、符号化され、記憶され得る（たとえば、記憶媒体３４またはファイルサーバ３６に記憶され得る）。したがって、「シグナリング」という用語は、通信が、リアルタイムまたはほぼリアルタイムで行われるか、あるいは、符号化時に媒体にシンタックス要素を記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得る、ある時間期間にわたって行われるかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
【００６１】
[0075]宛先デバイス１４は、図１の例では、受信機２６と、モデム２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。宛先デバイス１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８は、その情報を復調して、ビデオデコーダ３０のための復調されたビットストリームを生成する。チャネル１６を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ３０が使用する、ビデオエンコーダ２０によって生成された様々なシンタックス情報を含み得る。また、そのようなシンタックスは、記憶媒体３４またはファイルサーバ３６に記憶された符号化ビデオデータに含まれ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、ビデオデータを符号化または復号することが可能である、それぞれのエンコーダデコーダ（コーデック）の一部を形成し得る。
【００６２】
[0076]ディスプレイデバイス３２は、宛先デバイス１４と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体型ディスプレイデバイスを含み得、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４はディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号ビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００６３】
[0077]ビデオエンコーダ２０およびビデオデコーダ３０は、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格などのビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ：HEVC Test Model）に準拠し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、アドバンストビデオコーディング（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。
【００６４】
[0078]ＨＥＶＣ規格では、ビデオデータのブロックをコーディングユニット（ＣＵ）と呼ぶ。概して、ＣＵは、ＣＵがサイズ差異を有しないことを除いて、Ｈ．２６４に従ってコーディングされたマクロブロックと同様の目的を有する。したがって、ＣＵはサブＣＵに分割され得る。概して、本開示におけるＣＵへの言及は、ピクチャの最大コーディングユニット（ＬＣＵ）またはＬＣＵのサブＣＵを指すことがある。たとえば、ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットであるＬＣＵを定義し得る。ＬＣＵはサブＣＵに分割され得、各サブＣＵはサブＣＵに分割され得る。ビットストリームのシンタックスデータは、最大ＣＵ深さと呼ばれる、ＬＣＵが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット（ＳＣＵ：smallest coding unit）をも定義し得る。
【００６５】
[0079]ＬＣＵは階層４分木データ構造に関連付けられ得る。概して、４分木データ構造はＣＵごとに１つのノードを含み、ルートノードがＬＣＵに対応する。ＣＵが４つのサブＣＵに分割された場合、ＣＵに対応するノードは４つのリーフノードを含み、リーフノードの各々はサブＣＵのうちの１つに対応する。４分木データ構造の各ノードは、対応するＣＵのシンタックスデータを与え得る。たとえば、４分木のノードは、そのノードに対応するＣＵがサブＣＵに分割されるかどうかを示す分割フラグを含み得る。ＣＵのシンタックス要素は、再帰的に定義され得、ＣＵがサブＣＵに分割されるかどうかに依存し得る。
【００６６】
[0080]分割されないＣＵは、１つまたは複数の予測ユニット（ＰＵ：prediction unit）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分を表し、そのＰＵの参照サンプルを取り出すためのデータを含む。たとえば、ＰＵがイントラモード符号化されるとき、ＰＵは、ＰＵのイントラ予測モードを記述するデータを含み得る。別の例として、ＰＵがインターモード符号化されるとき、ＰＵは、ＰＵの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度（たとえば、１／４ピクセル精度もしくは１／８ピクセル精度）、動きベクトルが指す参照フレーム、および／または動きベクトルの参照リスト（たとえば、リスト０もしくはリスト１）を記述し得る。（１つまたは複数の）ＰＵを定義するＣＵのデータはまた、たとえば、ＣＵを１つまたは複数のＰＵに区分することを記述し得る。区分モードは、ＣＵがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかの間で異なり得る。
【００６７】
[0081]１つまたは複数のＰＵを有するＣＵはまた、１つまたは複数の変換ユニット（ＴＵ：transform unit）を含み得る。ＰＵを使用した予測の後に、ビデオエンコーダは、ＰＵに対応するＣＵの部分の残差値を計算し得る。残差値は変換され、量子化され、走査され得る。ＴＵは、必ずしもＰＵのサイズに制限されるとは限らない。したがって、ＴＵは、同じＣＵの対応するＰＵよりも大きいことも小さいこともある。いくつかの例では、ＴＵの最大サイズは、対応するＣＵのサイズであり得る。本開示ではまた、ＣＵ、ＰＵ、またはＴＵのいずれかを指すために「ブロック」という用語を使用する。
【００６８】
[0082]上記で説明したように、概して、符号化ビデオデータは予測データと残差データとを含み得る。ビデオエンコーダ２０は、イントラ予測モードまたはインター予測モード中に予測データを生成し得る。イントラ予測は、概して、あるピクチャのブロック中のピクセル値を、同じピクチャの隣接する、前にコーディングされたブロック中の参照サンプルに対して予測することを伴う。インター予測は、概して、あるピクチャのブロック中のピクセル値を、前にコーディングされたピクチャのデータに対して予測することを伴う。
【００６９】
[0083]イントラ予測またはインター予測の後に、ビデオエンコーダ２０はブロックの残差ピクセル値を計算し得る。残差値は、概して、ブロックの予測ピクセル値データと、ブロックの真のピクセル値データとの間の差分に対応する。たとえば、残差値は、コード化ピクセルと予測ピクセルとの間の差分を示すピクセル差分値を含み得る。いくつかの例では、コード化ピクセルは、コーディングされるべきピクセルのブロックに関連し得、予測ピクセルは、コード化ブロックを予測するために使用されるピクセルの１つまたは複数のブロックに関連し得る。
【００７０】
[0084]ブロックの残差値をさらに圧縮するために、残差値は、（「エネルギー」とも呼ばれる）できるだけ多くのデータをできるだけ少数の係数に構成する変換係数のセットに変換され得る。変換技法は、離散コサイン変換（ＤＣＴ）プロセスまたは概念的に同様のプロセス、整数変換、ウェーブレット変換、または他のタイプの変換を備え得る。その変換は、ピクセルの残差値を空間領域から変換領域に変換する。変換係数は、元のブロックと通常同じサイズである係数の２次元行列に対応する。言い換えれば、残差データの元のブロック中のピクセルとちょうど同数の変換係数がある。ただし、変換により、変換係数の多くは、０に等しい値を有し得る。
【００７１】
[0085]ビデオエンコーダ２０は、次いで、ビデオデータをさらに圧縮するために変換係数を量子化し得る。量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。より詳細には、量子化は、量子化中に変換係数に適用される量子化器ステップサイズにインデックス付けされ得る、量子化パラメータ（ＱＰ：quantization parameter）に従って適用され得る。
【００７２】
[0086]量子化の後に、ビデオエンコーダ２０は、変換係数を走査して、量子化変換係数を含む２次元行列から１次元ベクトルを生成し得る。ビデオエンコーダ２０は、次いで、データをなお一層圧縮するために、得られたアレイをエントロピー符号化し得る。概して、エントロピーコーディングは、量子化変換係数のシーケンスおよび／または他のシンタックス情報をまとめて圧縮する、１つまたは複数のプロセスを備える。たとえば、ΔＱＰ、予測ベクトル、コーディングモード、フィルタ、オフセット、または他の情報など、シンタックス要素はまた、エントロピーコード化ビットストリーム中に含まれ得る。走査された係数は、次いで、たとえば、ＣＡＶＬＣ、ＣＡＢＡＣ、ＰＩＰＥ、または別のエントロピーコーディングプロセスを介して、任意のシンタックス情報とともにエントロピーコーディングされる。
【００７３】
[0087]ＣＡＶＬＣを実行するために、ビデオエンコーダ２０は、送信されるべきシンボルの可変長コードを選択し得る。ＶＬＣのコードワードは、相対的により短いコードがより可能性が高いシンボルに対応し、より長いコードがより可能性が低いシンボルに対応するように構築され得る。このようにして、ＶＬＣを使用することにより、たとえば、送信されるべきシンボルごとに等長コードワードを使用する場合よりもビットレート節約が達成され得る。
【００７４】
[0088]ＣＡＢＡＣを実行するために、ビデオエンコーダ２０は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。コンテキストは、たとえば、隣接値が非０であるか否かに関係し得る。ビデオエンコーダ２０はまた、適応型走査を実行するときに生成される有効係数フラグおよび最後係数フラグなど、シンタックス要素をエントロピー符号化し得る。
【００７５】
[0089]概して、ビデオデコーダ３０によって実行されるビデオ復号プロセスは、ビデオエンコーダ２０によって実行される符号化技法とは逆の技法を含み得る。概して逆であるが、ビデオデコーダ３０は、場合によっては、ビデオエンコーダ２０によって実行される技法と同様の技法を実行することがある。ビデオデコーダ３０はまた、ビデオエンコーダ２０に関して説明したデータを含む受信ビットストリーム中に含まれているシンタックス要素または他のデータに依拠し得る。
【００７６】
[0090]本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後にエントロピーコーディング中に使用される確率モデルを更新し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、各サブセットをコーディングした後に、コンテキストに関連する確率を更新し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、ビデオエンコーダ２０および／またはビデオデコーダ３０は、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、ビデオエンコーダ２０および／またはビデオデコーダ３０は、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
【００７７】
[0091]他の例では、本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンをコーディングし得る。すなわち、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のビンをコーディングするより少なくとも２コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、ビデオエンコーダ２０および／またはビデオデコーダ３０は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
【００７８】
[0092]図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００７９】
[0093]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００８０】
[0094]図２は、コンテキスト適応型コーディングのための本開示の技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。図２のいくつかの構成要素は、概念的な目的のために単一の構成要素に関して図示および説明されることがあるが、１つまたは複数の機能ユニットを含み得ることを理解されたい。さらに、図２のいくつかの構成要素は、単一の構成要素に関して図示および説明されることがあるが、そのような構成要素は、物理的に１つまたは２つ以上の個別および／または一体型ユニットから構成され得る。
【００８１】
[0095]図２に示すように、ビデオエンコーダ２０は、符号化されるべきビデオピクチャ内の現在ビデオブロックを受信する。図２の例では、ビデオエンコーダ２０は、動き補償ユニット４４と、動き推定ユニット４２と、参照フレームストア６４と、加算器５０と、変換ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理することになる。
【００８２】
[0096]符号化プロセス中に、ビデオエンコーダ２０は、コーディングされるべきビデオピクチャまたはスライスを受信する。ピクチャまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディングを実行する。すなわち、動き推定ユニット４２は、異なる時間インスタンスの１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディング、たとえば、同じビューの１つまたは複数の参照フレームを使用した動き推定を実行し得る。さらに、動き推定ユニット４２は、同じ時間インスタンスの１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディング、たとえば、異なるビューの１つまたは複数の参照フレームを使用した動き視差を実行し得る。
【００８３】
[0097]イントラ予測ユニット４６は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して受信ビデオブロックのイントラ予測コーディングを実行し得る。モード選択ユニット４０は、たとえば誤差結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの１つを選択し得、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器５０に与え、参照フレーム中で使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器６２に与える。
【００８４】
[0098]動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム（または、他のコード化ユニット）内でコーディングされている現在ブロックに対する予測参照フレーム（または、他のコード化ユニット）内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定ユニット４２によって決定された動きベクトル（または変位ベクトル）に基づいて予測ブロックをフェッチまたは生成することを伴い得る。この場合も、いくつかの例では、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。
【００８５】
[0099]動き推定ユニット４２は、ビデオブロックを参照フレームストア６４中の参照フレームのビデオブロックと比較することによってインターコード化ピクチャのビデオブロックの動きベクトルを計算し得る。動き補償ユニット４４はまた、参照フレーム、たとえば、ＩフレームまたはＰフレームのサブ整数ピクセルを補間し得る。ＩＴＵ−Ｔ  Ｈ．２６４規格では、参照フレームの「リスト」、たとえば、リスト０およびリスト１に言及する。リスト０は、現在ピクチャよりも前の表示順序を有する参照フレームを含むが、リスト１は、現在ピクチャよりも後の表示順序を有する参照フレームを含む。他のコーディング方式では、単一のリストが維持され得る。
【００８６】
[0100]動き推定ユニット４２は、参照フレームストア６４からの１つまたは複数の参照フレームのブロックを、現在ピクチャ、たとえば、ＰピクチャまたはＢピクチャの符号化されるべきブロックと比較する。参照フレームストア６４中の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット４２によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。動き補償ユニット４４は、参照フレームの予測ブロックの残差誤差値を計算する。
【００８７】
[0101]変換ユニット５２は、離散コサイン変換（ＤＣＴ）、整数変換、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換ユニット５２は、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット５２は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換ユニット５２は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
【００８８】
[0102]量子化ユニット５４は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。たとえば、量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。ビデオエンコーダは、あらかじめ定義されたアルゴリズムに従って量子化パラメータ（ＱＰ）を適用することによって変換係数を量子化し得る。ビデオエンコーダは、ＱＰを調整することによって、変換係数値に適用される量子化の程度を変更し得る。
【００８９】
[0103]量子化の後に、エントロピー符号化ユニット５６は、量子化変換係数を走査し、エントロピーコーディングする。エントロピー符号化ユニット５６は、ＣＡＶＬＣ、ＣＡＢＡＣ、ＰＩＰＥ、または別のエントロピーコーディング技法を実行し得る。エントロピー符号化ユニット５６は、エントロピーコーディングを実行するとき、本開示の技法のいずれかを実行し得る。
【００９０】
[0104]たとえば、本開示の態様によれば、エントロピー符号化ユニット５６は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後にエントロピーコーディング中に使用される確率モデルを更新し得る。たとえば、エントロピー符号化ユニット５６は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。エントロピー符号化ユニット５６は、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。本開示の態様によれば、エントロピー符号化ユニット５６は、各サブセットをコーディングした後に、コンテキストに関連する確率を更新し得る。たとえば、エントロピー符号化ユニット５６は、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、エントロピー符号化ユニット５６は、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。エントロピー符号化ユニット５６は、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、エントロピー符号化ユニット５６は、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
【００９１】
[0105]追加または代替として、本開示の態様によれば、エントロピー符号化ユニット５６は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、エントロピー符号化ユニット５６は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンをコーディングし得る。すなわち、エントロピー符号化ユニット５６は、現在のビンをコーディングするより少なくとも２コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、エントロピー符号化ユニット５６は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
【００９２】
[0106]場合によっては、エントロピー符号化ユニット５６またはビデオエンコーダ２０の別のユニットはまた、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット５６は、ＣＵおよび／またはＰＵのためのコード化ブロックパターン（ＣＢＰ）値を決定するように構成され得る。また、場合によっては、エントロピー符号化ユニット５６は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。エントロピー符号化ユニット５６はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。
【００９３】
[0107]逆量子化ユニット５８および逆変換ユニット６０は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを参照フレームストア６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、参照フレームストア６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【００９４】
[0108]図３は、符号化ビデオシーケンスを復号するビデオデコーダ３０の一例を示すブロック図である。図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１３０と、動き補償ユニット１３２と、イントラ予測ユニット１３４と、逆量子化ユニット１３６と、逆変換ユニット１３８と、参照フレームストア１４２と、加算器１４０とを含む。
【００９５】
[0109]エントロピー復号ユニット１３０は、受信されたビットストリームをエントロピー復号し得る。たとえば、エントロピー復号ユニット１３０は、直列化された変換係数を受信し、変換係数を逆走査して変換係数の２次元アレイを生成し得る。エントロピー復号ユニット１３０は本開示の技法のいずれかを実装し得る。
【００９６】
[0110]たとえば、本開示の態様によれば、エントロピー復号ユニット１３０は、ビデオデータのブロックに関連する変換係数の所定のサブセットを復号した後にエントロピー復号中に使用される確率モデルを更新し得る。たとえば、エントロピー復号ユニット１３０は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。エントロピー復号ユニット１３０は、ブロック全体が復号されるまで、ブロックの各サブセットを復号し続け得る。本開示の態様によれば、エントロピー復号ユニット１３０は、各サブセットを復号した後に、コンテキストに関連する確率を更新し得る。たとえば、エントロピー復号ユニット１３０は、変換係数のサブセットを復号しながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットを復号した後に、エントロピー復号ユニット１３０は、記憶された確率統計値を使用してサブセットの復号中に使用される各コンテキストの確率モデルを更新し得る。エントロピー復号ユニット１３０は、変換係数の次のサブセットを復号するために、更新された確率を使用し得る。このようにして、エントロピー復号ユニット１３０は、サブセットの復号中に確率を更新することなしに各サブセットの変換係数を復号し得る。このようにして、本開示の技法は、コーディング性能と復号速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
【００９７】
[0111]追加または代替として、本開示の態様によれば、エントロピー復号ユニット１３０は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、エントロピー復号ユニット１３０は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンを復号し得る。すなわち、エントロピー復号ユニット１３０は、現在のビンを復号するより少なくとも２コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、エントロピー復号ユニット１３０は、複数の連続するビンが確率モデルを使用して復号されるとき、そのモデルを使用してビンを復号した後にそのモデルを更新することに起因する遅延を回避し得る。
【００９８】
[0112]動き補償ユニット１３２は、エントロピー復号ユニット１３０から受信された動きベクトルに基づいて予測データを生成し得る。動き補償ユニット１３２は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア１４２中の参照フレーム中の予測ブロックを識別し得る。イントラ予測ユニット１３４は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。
【００９９】
[0113]逆量子化ユニット１３６は、ビットストリーム中で与えられ、エントロピー復号ユニット１３０によって復号された量子化ブロック係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。本開示のいくつかの態様によれば、逆量子化ユニット１３６は、図２の例に示すビデオエンコーダ２０に関して上記で説明した量子化ユニット５４の方法とは概して逆の方法で動作するように構成され得る。
【０１００】
[0114]逆変換ユニット１５８は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。動き補償ユニット１３２は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット１３２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルのための補間値を計算し得る。動き補償ユニット１３２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【０１０１】
[0115]動き補償ユニット１３２は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの（１つまたは複数の）フレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための１つまたは複数の参照フレーム（またはリスト）と、符号化ビデオシーケンスを復号するための他の情報と、を決定する。
【０１０２】
[0116]加算器１４０は、残差ブロックを、動き補償ユニット１３２またはイントラ予測ユニットによって生成される対応する予測ブロックと加算して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。復号ビデオブロックは、次いで、参照フレームストア１４２に記憶され、参照フレームストア１４２は、参照ブロックを後続の動き補償に与え、また、（図１のディスプレイデバイス３２などの）ディスプレイデバイス上での提示のために復号ビデオを生成する。
【０１０３】
[0117]図４Ａおよび図４Ｂは、例示的な４分木１５０と、対応する最大コーディングユニット１７２とを示す概念図である。図４Ａは、階層式に構成されたノードを含む、例示的な４分木１５０を示している。４分木１５０は、たとえば、提案されているＨＥＶＣ規格に従ってツリーブロックに関連付けられ得る。４分木１５０など、４分木中の各ノードは、子をもたないリーフノードであるか、または４つの子ノードを有し得る。図４Ａの例では、４分木１５０はルートノード１５２を含む。ルートノード１５２は、リーフノード１５６Ａ〜１５６Ｃ（リーフノード１５６）とノード１５４とを含む、４つの子ノードを有する。ノード１５４はリーフノードでないので、ノード１５４は、この例ではリーフノード１５８Ａ〜１５８Ｄ（リーフノード１５８）である、４つの子ノードを含む。
【０１０４】
[0118]４分木１５０は、この例ではＬＣＵ１７２など、対応する最大コーディングユニット（ＬＣＵ）の特性を記述するデータを含み得る。たとえば、４分木１５０は、それの構造により、サブＣＵへのＬＣＵの分割を記述し得る。ＬＣＵ１７２が２Ｎ×２Ｎのサイズを有すると仮定する。ＬＣＵ１７２は、この例では、４つのサブＣＵ１７６Ａ〜１７６Ｃ（サブＣＵ１７６）および１７４を有し、各々はＮ×Ｎサイズである。サブＣＵ１７４はさらに４つのサブＣＵ１７８Ａ〜１７８Ｄ（サブＣＵ１７８）に分割され、各々はサイズＮ／２×Ｎ／２である。この例では、４分木１５０の構造はＬＣＵ１７２の分割に対応する。すなわち、ルートノード１５２はＬＣＵ１７２に対応し、リーフノード１５６はサブＣＵ１７６に対応し、ノード１５４はサブＣＵ１７４に対応し、リーフノード１５８はサブＣＵ１７８に対応する。
【０１０５】
[0119]４分木１５０のノードのデータは、ノードに対応するＣＵが分割されるかどうかを記述し得る。ＣＵが分割される場合、４分木１５０中に４つの追加のノードが存在し得る。いくつかの例では、４分木のノードは以下の擬似コードと同様に実装され得る。
【数１】
0005937206.tif 000002
【０１０６】
split_flag値は、現在のノードに対応するＣＵが分割されるかどうかを表す１ビット値であり得る。ＣＵが分割されない場合、split_flag値は「０」であり得るが、ＣＵが分割される場合、split_flag値は「１」であり得る。４分木１５０の例に関して、分割フラグ値のアレイは１０１００００００であり得る。
【０１０７】
[0120]いくつかの例では、サブＣＵ１７６およびサブＣＵ１７８の各々は、同じイントラ予測モードを使用してイントラ予測符号化され得る。したがって、ビデオエンコーダ２０は、ルートノード１５２においてイントラ予測モードの指示を与え得る。
【０１０８】
[0121]図４ＡではＣＵ４分木の一例を示したが、同様の４分木がリーフノードＣＵのＴＵに適用され得ることを理解されたい。すなわち、リーフノードＣＵは、ＣＵのためのＴＵの区分を記述するＴＵ４分木を含み得る。ＴＵ４分木は、ＴＵ４分木がＣＵのＴＵのイントラ予測モードを個々にシグナリングし得ることを除いて、概してＣＵ４分木に似ていることがある。
【０１０９】
[0122]図５Ａおよび図５Ｂに、概して、エントロピーコーディング中にビデオデータのブロックに関連する変換係数を走査するための対角走査パターンを示す。すなわち、たとえば、走査パターンは、変換係数の２次元アレイを直列化するときに（ビデオエンコーダ２０などの）ビデオエンコーダによって使用され得る。別の例では、走査パターンは、コーディングされた変換係数の受信された直列化アレイからビデオデータのブロックを再構成するときに、（ビデオデコーダ３０などの）ビデオデコーダによって使用され得る。
【０１１０】
[0123]たとえば、図５Ａは、ビデオデータのブロックの変換係数（たとえば、ＴＵに関連する変換係数）を走査するための順方向対角走査パターン１８０を示している。概して、順方向対角走査パターン１８０は、左から右に、および上から下に４５度の角度でブロックを通過する。すなわち、図５Ａに示す例では、第１の係数１８２はブロックの左上隅に位置するＤＣ成分であり、走査されるべき最後係数１８４はブロックの右下隅に位置する。
【０１１１】
[0124]図５Ｂは、ビデオデータのブロックの変換係数（たとえば、ＴＵに関連する変換係数）を走査するための逆方向対角走査パターン１８６を示している。概して、逆方向対角走査パターン１８６は、右から左に、および下から上に４５度の角度でブロックを通過する。すなわち、図５Ｂに示す例では、第１の係数１８８はブロックの右下隅に位置するＤＣ成分であり、走査されるべき最後係数１９０はブロックの左上隅に位置する。
【０１１２】
[0125]図５Ａおよび図５Ｂに示す走査パターンは説明のために与えたものにすぎないことを理解されたい。たとえば、図５Ａおよび図５Ｂは対角走査パターンを示しているが、ジグザグパターン、適応型走査順序、水平パターン、および垂直パターンなど、他の走査パターンが利用可能であり得る。さらに、異なる配向および／または方向のパターンを使用して、変換係数に関連する異なる成分（たとえば、有効性、符号、レベルなど）が走査され得る。たとえば、いくつかの事例では、有効性情報（たとえば、有効性マップ）が、変換係数レベルの反対方向に走査され得る。他の事例では、有効性情報と変換係数レベルとが同じ方向に走査されるような、ユニファイド走査パターンが実装され得る。
【０１１３】
[0126]図６Ａおよび図６Ｂに、概して、本開示の態様による、変換係数のブロックをサブセットに分割することを示す。図６Ａおよび図６Ｂではビデオデコーダ３０（図１および図３）に関して説明するが、本開示の技法は、ビデオエンコーダ２０（図１および図２）、他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
【０１１４】
[0127]図６Ａに関して、本開示の態様によれば、ビデオデコーダ３０は、ブロック２００を復号しながら、ブロック２００をサブセット２０２、２０４、２０６、および２０８に走査順序で分割し得る。図６Ａに示す例では、第１のサブセット２０２は、第１の１６個の変換係数を走査順序で含み、第２のサブセット２０４は、次の１６個の変換係数を走査順序で含み、第３のサブセット２０６は、次の１６個の変換係数を走査順序で含み、第４のサブセット２０８は、最後の１６個の変換係数を走査順序で含む。
【０１１５】
[0128]本開示の態様によれば、ビデオデコーダ３０は、コンテキスト適応型コーディングプロセスに関連する確率更新をサブセット２０２〜２０８にリンクし得る。たとえば、ブロック２００の復号中に、ビデオデコーダ３０は、初めに、確率モデルの第１のセットを使用してサブセット２０２を復号し得る。確率モデルの第１のセットは、サブセット２０２のコーディング中に更新されず、その結果、ビデオデコーダ３０は確率モデルの第１のセットを使用してサブセット２０２全体を復号し得る。さらに、ビデオデコーダ３０は、サブセット２０２を復号しながら、適用される確率モデルの第１のセットに関連する統計値を収集し、記憶し得る。たとえば、上述のように、ビンをコーディングするための特定の確率モデルを示すコンテキストは、前にコーディングされたビン、たとえば、前にコーディングされたシンタックス要素の関係するビンの値によって影響され得る。さらに、ビンをコーディングするために使用される確率モデルも、前にコーディングされたビンの値によって影響され得る。本開示の態様によれば、直列方式で、たとえば、ビン単位で確率モデルを更新するのではなく、ビデオデコーダ３０は、コーディングされたビンに基づいてコンテキストの更新状態を記憶し得る。
【０１１６】
[0129]本開示の態様によれば、サブセット２０２を復号した後に、ビデオデコーダ３０は、記憶された確率統計値を使用して確率モデルの第１のセットを更新し得る。ビデオデコーダ３０は、次いで、変換係数の第２のサブセット２０４を復号するために、この更新された確率モデルの第２のセットを使用し得る。ビデオデコーダ３０は、ブロック２００が復号されるまで、ブロック２００をこのように復号し続け得る。すなわち、第２のサブセット２０４を復号した後に、ビデオデコーダ３０は、第２のサブセットの復号中に記憶された統計値を使用して確率モデルを更新し、更新された確率モデルを使用して第３のサブセット２０６を復号し得る。その上、ビデオデコーダ３０は、第４のサブセット２０８を復号するために同じプロセスを実行し得る。
【０１１７】
[0130]いくつかの例では、特定のサブセットのビンのすべてがコーディングされた後まで確率モデルを更新するのを待つのではなく、ビデオデコーダ３０は、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオデコーダ３０は、サブセット内のあるパスの確率モデルの更新プロセスをサブセットの他のパスと並列化し得る。たとえば、ビデオコーダは、変換係数のサブセットのための有効性情報のビンの確率を、当該サブセットの別のコーディングパス中に係数レベルのビン１をコーディングしながら、更新し得る。この例では、あるパスのコンテキストは、サブセット内の他のパスをコーディングするために使用され得ない。
【０１１８】
[0131]他の例では、ビデオデコーダ３０は、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオデコーダ３０は、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオデコーダ３０は、有効性マップを復号し、有効性マップを復号した後に確率を更新し得る。ビデオデコーダ３０は、次いで、変換係数に関連する残りの情報（たとえば、符号、レベルなど）を復号し得る。ビデオデコーダ３０がlast_xシンタックス要素とlast_yシンタックス要素の両方を復号する例では、ビデオデコーダ３０は、最後有効係数のlast_xとlast_yの両方を復号した後に確率を更新するか、またはlast_xとlast_yとの各々を復号した後に確率を更新し得る。
【０１１９】
[0132]図６Ａに関して説明したのと同様の方法で、ビデオデコーダ３０は、図６Ｂのブロック２１０をサブセット２１２、２１４、２１６、および２１８に走査順序で分割し得る。すなわち、図６Ｂに示す例では、第１のサブセット２１２は、第１の１６個の変換係数を走査順序で含み、第２のサブセット２１４は、次の１６個の変換係数を走査順序で含み、第３のサブセット２１６は、次の１６個の変換係数を走査順序で含み、第４のサブセット２１８は、最後の１６個の変換係数を走査順序で含む。ビデオデコーダ３０は、次いで、図６Ａに関して説明したのと同様の確率モデル更新プロセスを実行し得る。
【０１２０】
[0133]図６Ａおよび図６Ｂに示す例は概して対角走査パターンを示したが、図５Ａおよび図５Ｂに関して上述したように、ジグザグパターン、適応型走査順序、水平パターン、垂直パターンなど、様々な他の走査パターンが使用され得る。
【０１２１】
[0134]さらに、図６Ａおよび図６Ｂに示す例は、１６個の変換係数を含むサブセットをもつ８×８ブロックの変換係数を示したが、本開示の技法は、他のサイズのブロック、および任意の数の変換係数を有するサブセットに適用され得ることを理解されたい。たとえば、サブセットは、変換ユニット（ＴＵ）のｎ個の変換係数の任意のセットであり得、ただし、ｎは、ＴＵの変換係数の数よりも小さい何らかの数である。説明のための他の例では、３２×３２ブロックの変換係数が３２個のサブセットに分割され得、各サブセットが３２個の変換係数を有するか、または、８×８ブロックの変換係数が２つのサブセットに分割され得、各サブセットが３２個の変換係数を有する。他の例も可能である。
【０１２２】
[0135]たとえば、サブセットは、１６個の連続する係数を任意の連続走査順序（たとえば、水平、垂直、対角、適応型、または何らかの他の走査順序）で含み得る。
【０１２３】
[0136]図７Ａおよび図７Ｂに、概して、本開示の態様による、ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す。図７Ａおよび図７Ｂではビデオデコーダ３０（図１および図３）に関して説明するが、本開示の技法は、ビデオエンコーダ２０（図１および図２）、他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
【０１２４】
[0137]図７Ａに関して、本開示の態様によれば、ビデオデコーダ３０は、ブロック２２０を復号しながら、ブロック２２０をサブブロック２２２Ａ、２２２Ｂ、２２２Ｃ、および２２２Ｄ（総称してサブブロック２２２）に分割し得る。図７Ａに示す例では、第１のサブブロック２２２Ａは、ブロック２２０の左上隅に位置する４×４ブロックの変換係数を含み、第２のサブブロック２２２Ｂは、ブロック２２０の左下隅に位置する４×４ブロックの変換係数を含み、第３のサブブロック２２２Ｃは、ブロック２２０の右上隅に位置する４×４ブロックの変換係数を含み、第４のサブブロック２２２Ｄは、ブロック２２０の右下隅に位置する４×４ブロックの変換係数を含む。
【０１２５】
[0138]いくつかの例では、ビデオデコーダ３０は、サブブロック２２２の変換係数を走査するためにユニファイド（unified）走査を使用し得る。たとえば、ビデオデコーダ３０は、図７Ａに示す対角走査を使用して有効性情報（たとえば、有効性マップ）と係数レベルとを走査し得る。他の例では、ビデオデコーダ３０は、逆方向走査または他の配向を有する走査を使用して変換係数の成分（たとえば、有効性、符号、レベルなど）を走査し得る。たとえば、ビデオデコーダ３０は、順方向ジグザグ走査を使用することによって、各方形（または矩形）８×８ブロックおよびそれ以上の変換係数レベルマップの絶対値を４×４サブブロックの順序セット（たとえば、ベクトル）上にマッピングし得る。ビデオデコーダ３０は、次いで、逆方向ジグザグ走査で各４×４サブブロック内の変換係数レベルを処理して、変換係数レベルのベクトルを生成し得る。
【０１２６】
[0139]いくつかの例では、サブブロック２２２をコーディングするために、ビデオデコーダ３０は、有効性情報をコーディングする第１のパスを実行し得る。ビデオデコーダ３０は、次いで、変換係数レベルのビン１を復号する別のパスと、変換係数レベルの残りのビンを復号する別のパスと、変換係数レベルの符号を復号する別のパスとを実行し得る。サブブロック２２２のうちの１つを完了すると、ビデオデコーダ３０は、ブロック２２０が完全に復号されるまで、次のサブブロックの復号パスを実行し得る。他の例では、別の数のコーディングパスが実装され得る。
【０１２７】
[0140]本開示の態様によれば、ビデオデコーダ３０は、コンテキスト適応型コーディングプロセスに関連する確率更新をサブブロック２２２にリンクし得る。たとえば、ブロック２２０の復号中に、ビデオデコーダ３０は、初めに、確率モデルの第１のセットを使用してサブブロック２２２Ａを復号し得る。ビデオデコーダ３０が確率モデルの第１のセットを使用してサブブロック２２２Ａ全体を復号するように、確率モデルの第１のセットは、サブブロック２２２Ａの復号中に更新され得ない。さらに、ビデオデコーダ３０は、サブブロック２２２Ａを復号しながら、適用される確率モデルの第１のセットに関連する統計値（たとえば、コンテキストの状態）を収集し、記憶し得る。
【０１２８】
[0141]本開示の態様によれば、サブブロック２２２Ａをコーディングした後に、ビデオデコーダ３０は、記憶された確率統計値を使用して確率モデルの第１のセットを更新し得る。ビデオデコーダ３０は、次いで、変換係数の第２のサブブロック２２２Ｂを復号するために、この更新された確率モデルの第２のセットを使用し得る。ビデオデコーダ３０は、ブロック２２０が復号されるまで、ブロック２２０をこのように復号し続け得る。すなわち、第２のサブブロック２２２Ｂを復号した後に、ビデオデコーダ３０は、第２のサブブロックの復号中に記憶された統計値を使用して確率モデルを更新し、更新された確率モデルを使用して第３のサブブロック２２２Ｃを復号し得る。その上、ビデオデコーダ３０は、第４のサブブロック２２２Ｄを復号するために同じプロセスを実行し得る。
【０１２９】
[0142]いくつかの例では、特定のサブセットのビンのすべてがコーディングされた後まで確率モデルを更新するのを待つのではなく、ビデオデコーダ３０は、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオデコーダ３０は、サブセット内のあるパスの確率モデルの更新プロセスをサブセットの他のパスと並列化し得る。
【０１３０】
[0143]他の例では、ビデオデコーダ３０は、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオデコーダ３０は、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオデコーダ３０は、有効性マップを復号し、有効性マップをコーディングした後に確率を更新し得る。ビデオデコーダ３０は、次いで、変換係数に関連する残りの情報（たとえば、符号、レベルなど）を復号し得る。ビデオデコーダ３０がlast_xシンタックス要素とlast_yシンタックス要素の両方を復号する例では、ビデオデコーダ３０は、最後有効係数のlast_xとlast_yの両方を復号した後に確率を更新するか、またはlast_xとlast_yとの各々を復号した後に確率を更新し得る。
【０１３１】
[0144]図７Ａに関して説明したのと同様の方法で、ビデオデコーダ３０は、ブロック２２０を復号しながら、図７Ｂのブロック２２４をサブブロック２２６Ａ、２２６Ｂ、２２６Ｃ、および２２６Ｄに分割し得る。図７Ｂに示す例では、第１のサブブロック２２６Ａは、ブロック２２４の右下隅に位置する４×４ブロックの変換係数を含み、第２のサブブロック２２６Ｂは、ブロック２２４の右上隅に位置する４×４ブロックの変換係数を含み、第３のサブブロック２２６Ｃは、ブロック２２４の左下隅に位置する４×４ブロックの変換係数を含み、第４のサブブロック２２６Ｄは、ブロック２２４の左上隅に位置する４×４ブロックの変換係数を含む。
【０１３２】
[0145]（図７Ａに関して）図７Ｂに示す逆走査を可能にするために、いくつかの例では、ビデオデコーダ３０は、最初にブロック２２４の最後有効係数を識別し得る。最後有効係数を識別した後に、ビデオコーダ３０は、図７Ｂに示す走査を適用し得、次いで、図７Ａに関して説明したのと同様の確率モデル更新プロセスを実行し得る。
【０１３３】
[0146]図７Ａおよび図７Ｂに示す例は概して対角走査パターンを示したが、図５Ａおよび図５Ｂに関して上述したように、ジグザグパターン、適応型走査順序、水平パターン、垂直パターンなど、様々な他の走査パターンが使用され得る。
【０１３４】
[0147]さらに、図７Ａおよび図７Ｂに示す例は、４×４サブブロックをもつ８×８ブロックの変換係数を示したが、本開示の技法は、他のサイズのブロック、ならびに他のサイズのサブブロックに適用され得ることを理解されたい。たとえば、サブブロックは、変換ユニット（ＴＵ）の変換係数の任意のｎ×ｎブロックを含み得、ただし、ｎ×ｎはＴＵのサイズよりも小さい。さらに、図７Ａおよび図７Ｂに示す、等しいサイズのサブブロックは、ハードウェア効率を達成するための助けにいくらかなり得る（たとえば、ハードウェアが、静的サブブロックサイズで動作するように最適化され得る）。ただし、他の例では、本開示の技法は、サイズが異なるサブブロックに適用され得る。
【０１３５】
[0148]その上、図７Ａおよび図７Ｂは、概してジグザグパターンで走査されるサブブロック２２２およびサブブロック２２６を示している。すなわち、図７Ａに示す例では、サブブロック２２２Ａの走査の後にサブブロック２２２Ｂの走査が続き、その後にサブブロック２２２Ｃおよび２２２Ｄの走査が続く。図７Ｂに示す例では、サブブロック２２６Ａの走査の後にサブブロック２２６Ｂの走査が続き、その後にサブブロック２２６Ｃおよび２２６Ｄの走査が続く。ただし、図７Ａおよび図７Ｂは、例として与えたものにすぎないことを理解されたい。すなわち、他の例では、サブブロック２２２およびサブブロック２２６は異なる順序で走査され得る。説明のための一例では、図７Ａに関して、サブブロック２２２Ａの走査の後にサブブロック２２２Ｃまたはサブブロック２２２Ｄが続き得る。
【０１３６】
[0149]さらに、サブブロック２２２または２２６自体が走査されるより前に、サブブロック２２２またはサブブロック２２６のうちの２つ以上が完全にコーディングされ得る。すなわち、サブブロック２２２およびサブブロック２２６をコーディングした後に、サブブロック自体が特定の走査順序に従って走査され得る。いくつかの例では、サブブロック２２２またはサブブロック２２６は対角的に走査され得るが、ジグザグ、水平、および垂直など、他の走査も使用され得る。サブブロック内で走査するために、ならびにサブブロック自体を走査するために使用される特定の走査は、変換係数の残差データを生成するために使用されるイントラモードに依存し得る。
【０１３７】
[0150]図８に、概して、ＣＡＢＡＣなどのコンテキスト適応型コーディング技法を使用して有効性マップをコーディングすることを示す。図８では概してビデオデコーダ３０（図１および図３）に関して説明するが、本開示の技法は、ビデオエンコーダ２０（図１および図２）、他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
【０１３８】
[0151]図８に示す例によれば、ビデオデコーダ３０は、初めに、２値化された変換係数の特定のビンを復号するためのコンテキストを選択する（２４０）。上述のように、シンタックス要素のビンのコンテキストは、前にコーディングされたシンタックス要素の関係するビンの値を含み得る。コンテキストは、たとえば、現在コーディングされているシンボルに隣接するシンボルについて値が０であるのか非０であるのかに関係し得る。
【０１３９】
[0152]ビデオデコーダ３０は、次いで、選択されたコンテキストに対応する確率（たとえば、コンテキストの状態）をロードする（「コンテキストロード」（２４２））。すなわち、ビデオデコーダ３０は、確率モデルに関連するコンテキストの状態を決定する。ビデオデコーダ３０は、次いで、ロードされた確率を使用して現在のビンを復号する（「ビンコーディング」（２４４））。図８に示す例によれば、ビデオデコーダ３０は、算術コーダの範囲を直列方式で、たとえば、ビン単位で更新する。したがって、特定のビンをコーディングした後に、ビデオデコーダ３０は、次いで、特定のビンの値を用いて算術コーダの範囲を更新する（「範囲更新」（２４６））。
【０１４０】
[0153]図８に示す範囲更新（２４６）は復号プロセスに直列依存性を導入する。すなわち、後続のビンが、動作「ビン復号」（２４４）に対して直列依存性を有する。すなわち、「ビン復号」は、後続のビンを復号する前に完了する必要がある。さらに、ビデオデコーダ３０は、復号されたビンに基づいて確率を更新する（「現在の状態に基づくコンテキスト更新」（２４８））。図８に示す例では、ビデオデコーダ３０は、更新されたコンテキストを使用して次のビンを復号する（「コンテキスト更新」（２５０））。したがって、後続のビンは、動作「現在の状態に基づくコンテキスト更新」に対する直列依存性をも有する。すなわち、「現在の状態に基づくコンテキスト更新」（２４８）ステップは、後続のビンを復号する前に完了する必要がある。ビデオデコーダ３０は、特定のブロックのすべてのビンがコーディングされるまでこのようにし続ける。ビデオデコーダ３０は、次いで、ビデオデータの次のブロックに移る（「ブロックループ」（２５２））。
【０１４１】
[0154]説明のための一例では、ビデオデコーダ３０は、同じ確率モデル（たとえば、確率モデルＡ）を使用してビデオデータのブロックのビンのシーケンス（たとえば、ビン（０）、ビン（１）、．．．ビン（ｎ））を連続して復号し得る。言い換えれば、（たとえば、コンテキストインデックスｃｔｘ（０）、ｃｔｘ（１）、．．．ｃｔｘ（ｎ）を使用して示される）ビンについて導出されるコンテキストが、それぞれのビンをコーディングするために使用される同じ確率モデルにそれぞれ対応し得る。この例では、ビンのうちの所与の１つを復号した後に、ビデオデコーダ３０は、後続のビンを復号するために確率モデルが使用され得る前に、現在のビンの値に基づいて確率モデルを更新しなければならない（ステップ２４８）。確率モデルを更新することにより、モデルを使用してコーディングされたビンが所与の値を有する最新の確率をモデルが反映することが可能になる。したがって、前の復号サイクル、すなわち、前のビンの復号の完了後に更新された確率モデルを使用してビデオデータのブロックのための特定のビンを復号することにより、連続するコーディングサイクル間の遅延が生じ得る。特に、特定のビンをコーディングするために、前のビンを復号した直後に確率モデルが直ちに利用できないことがある。その結果、ビンのシーケンスのコーディングは、他の方法を使用したシーケンスの復号ほど合理的でないことがある。
【０１４２】
[0155]したがって、「範囲更新」および「コンテキスト更新」のステップは、エンコーダとデコーダの両方においてフィードバックループを含む。そのようなフィードバックループは、フィードバックループにおける依存性によりスループットを増加させることが困難であり得るので、計算ボトルネックを提示し得る。すなわち、あるビンは、前のビンからの確率モデルが更新されるまで処理されないことがある。現在提案されているＨＥＶＣによれば、同じコンテキストインデックスが高い頻度で連続的に（ビンごとに）呼び出され得る。一例では、コーディングされる全ビンの２５％から３５％まで表現し得る、有効性フラグコーディングのためのコンテキストが連続的に呼び出され得る。同じコンテキストを繰り返し呼び出し、各ビン後にモデルを更新するのを待つことにより、ビデオデコーダ３０のスループットのボトルネックが提示され得る。
【０１４３】
[0156]いくつかの例では、そのようなボトルネックを回避するために、ビデオデコーダ３０は、何らかの統計値（たとえば、コンテキストの状態）を記憶し、ビデオデータのブロック全体をコーディングした後に１つまたは複数のコンテキストを更新し得る。このようにして、後続のブロックは、現在のブロックによって更新された確率を使用し、コンテキストを更新することに関連する遅延はブロックごとに１回のみ生じる。ただし、確率はビンごとに更新されず、したがってあまり正確でないことがあるので、全体的なコーディング性能は低下し得る。
【０１４４】
[0157]上述のように、ビデオデコーダ３０を用いてデータを復号することに関して説明したが、図８において説明した技法と同様のまたは同じ技法は、ビデオエンコーダ２０など、別のビデオコーダを用いて実行され得る。
【０１４５】
[0158]図９に、概して、本開示の態様による、サブセットをコーディングした後にコンテキストが更新され得る、修正されたコンテキスト適応型コーディングプロセスを示す。図９では概してビデオデコーダ３０（図１および図３）に関して説明するが、本開示の技法は、ビデオエンコーダ２０（図１および図２）、他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
【０１４６】
[0159]図９に示す例では、ビデオデコーダ３０は、最初に、すべての関係するコンテキストの現在の状態をメモリに記憶する（２８０）。一例として、変換係数コーディングのために、変換係数コーディングにおいて使用されるコンテキストの状態のみが記憶され得る。ビデオデコーダ３０は、次いで、２値化された変換係数の特定のビンを復号するためのコンテキストを選択する（２８２）。ビデオデコーダ３０は、次いで、選択されたコンテキストに対応する確率（たとえば、コンテキストの状態）をロードする（「コンテキストロード」（２８４））。ビデオデコーダ３０は、次いで、ロードされた確率を使用して現在のビンを復号する（「ビンコーディング」（２８６））。ビデオデコーダ３０はまた、算術コーダの範囲をビン単位で更新する（「範囲更新」（２８８））。
【０１４７】
[0160]本開示の態様によれば、（たとえば、図８に示すように）次のビンをコーディングするためにコンテキストを更新するのではなく、ビデオデコーダ３０は、ビンのコーディング中に使用されるコンテキストに関連する確率の確率統計値を記憶する（２９０）。すなわち、ビデオデコーダ３０は、コーディングされたビンに基づいてコンテキストの更新状態を記憶し得る。したがって、次のビンをコーディングするための確率は変化せず、ブロックループ内で更新された確率への依存性がない。むしろ、ビデオデコーダ３０は、サブセットのすべてのビンをコーディングし続ける（「サブセットループ」（２９２））。
【０１４８】
[0161]サブセットの復号後に、本開示の態様によれば、ビデオデコーダ３０は、次のサブセットをコーディングするために、記憶されたコンテキストを現在のコンテキストに設定する（２９４）。すなわち、ビデオデコーダ３０は、前のサブセットの復号中に収集された、記憶された確率統計値に基づいて、１つまたは複数の確率モデルを更新し得る。したがって、ビデオデコーダ３０は、更新された確率を使用して後続のサブセットを復号し得る。更新および記憶の動作はサブセットループの外で実行されるので、これらの動作は各ビン後に遅延を生じない。むしろ、コンテキストを更新することに関連する遅延はサブセットごとに１回のみ生じる。図９に示す例では、ブロックの復号中にコンテキスト状態更新を記憶するために必要なメモリは、復号されているビンのコンテキストサイズに等しくなり得る。たとえば、ビデオデコーダが、ビデオデータのブロックに関連する変換係数を復号している場合、変換係数コーディング中に使用されるコンテキストが記憶される必要があり得る。
【０１４９】
[0162]上述のように、ビデオデコーダ３０を用いてデータを復号することに関して説明したが、図９において説明した技法と同様のまたは同じ技法は、ビデオエンコーダ２０など、別のビデオコーダを用いて実行され得る。
【０１５０】
[0163]図１０は、本開示の態様による、ビデオデータのブロックをエントロピーコーディングする例示的な技法を示す流れ図である。図１０に示す例は、概して、ビデオコーダによって実行されるものとして説明する。すなわち、たとえば、ビデオコーダがビデオエンコーダである例では、エンコーダは、確率モデルを使用してターゲットシンボルをコーディングし得る。ビデオコーダがビデオデコーダである例では、デコーダは、確率モデルを使用してターゲットシンボルをパースし得る。したがって、図１０に関して図示および説明する技法は、ビデオエンコーダ２０（図１および図２）、ビデオデコーダ３０（図１および図３）、または様々な他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットによって行われ得ることを理解されたい。
【０１５１】
[0164]図１０に示す例では、ビデオコーダが、１つまたは複数の確率モデルとともにコンテキスト適応型コーディングを使用して、変換係数の第１のサブセットをコーディングする（３０２）。たとえば、ビデオコーダは、変換係数の第１のサブセットをＣＡＢＡＣコーディングし得る。上述のように、第１のサブセットは、所定の数の変換係数を走査順序で含むか、または変換係数のサブブロックを含み得る。したがって、ビデオデータのブロックは、概して、ｎ／ｍ個のサブセットを含み得、ただし、ｎは変換係数の数を表し、ｍは各サブセット中の変換係数の数を表す。
【０１５２】
[0165]変換係数の第１のサブセットをコーディングしながら、ビデオコーダは、第１のサブセットをコーディングするために使用される確率モデルに関連する確率モデル統計値を記憶する（３０２）。たとえば、ビデオコーダは、第１のサブセットの各ビンをコーディングした後にコンテキストの状態を記憶し得る。コンテキストの状態は、コーディングされているビンの値に基づいて特定の確率を示し得る。ビデオコーダはまた、確率を生成するために実際のビン値を記憶し得る。
【０１５３】
[0166]次いで、第１のサブセットの最終係数をコーディングした後に、ビデオコーダは、記憶された確率モデル統計値に基づいて確率モデルを更新する（３０４）。ビデオコーダは、次いで、更新された確率モデルを使用して変換係数の第２のサブセットをコーディングする（３０６）。図１０に関して説明する技法は変換係数のビンのサブセットに対して実行され得ることを理解されたい。すなわち、サブセットのいくつかのビンは、コンテキスト適応型コーディングを使用してコーディングされるのではなく、確率を更新することなしに、バイパスモードでコーディングされ得る。
【０１５４】
[0167] 図１０において説明する技法は、スループットを増加させることと、正確な確率との間のバランスをとり得る。たとえば、図１０において説明する技法は、（たとえば、複数のビンが並列にコーディングされることを可能にして）各サブセットの並列化を向上させながら、その後にコーディングされるサブセットのためにより正確な確率をも使用し得る。
【０１５５】
[0168]また、図１０に関して図示および説明するステップは一例として与えたものにすぎないことを理解されたい。すなわち、図１０の方法のステップは必ずしも図１０に示す順序で実行される必要があるとは限らず、より少数の、追加の、または代替のステップが実行され得る。
【０１５６】
[0169]図１１は、本開示の態様による、遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンス３２０をコーディングすることを示す概念図である。図１１では概してビデオデコーダ３０（図１および図３）に関して説明するが、本開示の技法は、ビデオエンコーダ２０（図１および図２）、他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
【０１５７】
[0170]図１１に示すように、ビデオデコーダ３０が、ビン（０）〜ビン（Ｎ）３２２〜３３０のビンを含む、ビンのシーケンス３２０を復号し得る。ビン（０）〜ビン（Ｎ）３２２〜３３０のビンはそれぞれ、コンテキストバッファＣＴＸＢ（０）〜ＣＴＸＢ（Ｎ）３３２〜３４０に記憶された確率モデルに対応するコンテキストインデックスに関連付けられる。ここで、ビン（Ｋ−１）が復号され、ビン（Ｋ−１）に対応するコンテキスト状態が更新された後に、コンテキストバッファＣＴＸＢ（Ｋ）は、すべてのコンテキストに対応する状態を記憶する。図１１の例では、復号サイクルを初期化する一部として、ビデオデコーダ３０は、コンテキストバッファＣＴＸＢ（０）３３２に記憶された（初期「リビジョン」と呼ばれることがある）初期確率モデルを使用してビン（０）３２２を復号し得る。
【０１５８】
[0171]本開示の態様によれば、ビデオデコーダ３０は、後続のビン、すなわち、ビン（１）〜ビン（Ｎ）３２４〜３３０を、コンテキストバッファＣＴＸＢ（０）〜ＣＴＸＢ（Ｎ−１）に記憶され得るそれらのそれぞれのコーディングサイクルより少なくとも２コーディングサイクル前に対応する確率モデルリビジョンを使用して復号し得る。たとえば、ビデオデコーダ３０は、ビン（１）〜ビン（Ｎ）３２４〜３３０の各々を、それの現在のコーディングサイクルに対して前のコーディングサイクルより前に生じた確率モデルリビジョンを使用して復号し得る。
【０１５９】
[0172]説明のための一例では、ビデオデコーダ３０は、ＣＴＸＢ（０）３３２に記憶された初期確率モデルリビジョンを使用してビン（１）３２４を復号し得る。この初期確率モデルリビジョンは、ビン（０）３２２を復号するより前に存在した、または「生じた」。同様に、ビデオデコーダ３０は、ビン（１）３２４を復号するより前に存在した、ＣＴＸＢ（１）に記憶された確率モデルリビジョンを使用してビン（２）３２６をコーディングし得る。
【０１６０】
[0173]図１１に示す例は概して２サイクル状態遅延を示しているが、本開示の技法は、概して、追加の遅延サイクルを有する遅延状態更新に適用可能である。たとえば、本開示の態様によれば、ビデオデコーダ３０は、ＣＴＸＢ（０）に記憶された確率モデルリビジョンを使用してビン（２）３２６をコーディングし得る（たとえば、３サイクル遅延）。追加の遅延状態サイクルも実装され得る（たとえば、４サイクル遅延、５サイクル遅延など）。
【０１６１】
[0174]遅延サイクルの数は、いくつかの例では、並列にコーディングされるべきビンの数に対応し得る。たとえば、図１１に示す例は、概して、ビン間で確率を更新することに関連する遅延を生じることなしに、２つのビンが並列に復号されることを可能にし得る。すなわち、ビンはすでに決定された確率モデルリビジョンを使用するので、ビデオデコーダ３０は、状態更新に関連する遅延を生じることなしに、ビン（１）３２４とビン（２）３２６とを並列に復号し得る。追加の遅延サイクルにより、より多くのビンが並列に復号されることが可能になり得る。
【０１６２】
[0175]図１１に関して図示および説明する技法は、ＣＡＶＬＣ、ＣＡＢＡＣ、ＰＩＰＥ、または別のコンテキスト適応型エントロピーコーディング方法を含む、任意のコンテキスト適応型エントロピーコーディング方法とともに使用され得る。その上、図１１に関して図示および説明する技法は、概して、他のデータ（たとえば、オーディオデータまたは様々な他のデータ）の他の算術コーディングに適用され得る。たとえば、図１１の技法は、遅延確率更新を実行するために使用され得る。
【０１６３】
[0176]一例として、説明のために、シンボルのシーケンス、たとえば、シンボル（０）、シンボル（１）、．．．、シンボル（ｎ）などが符号化または復号されていると仮定する。シンボルは、ビデオデータ、オーディオデータ、または任意の他のデータによって生成され得る。さらに、各シンボルは、Ａ、Ｂ、Ｃ、およびＤによって示される４つの値を取り得ると仮定する。さらに、各シンボルに異なるコンテキストモデルが関連付けられ得るが、説明のために、すべてのシンボルが同じコンテキストを使用すると仮定する。さらに、コンテキストごとに別個の確率モデル（たとえば、Ａ、Ｂ、Ｃ、およびＤのための確率）が維持されると仮定する。通常、シンボル（０）がコーディングされた後に、コンテキスト（０）の確率モデルは、シンボル（０）の実際値を考慮するために更新され得る。しかしながら、図１１に示すように、本開示の技法は、１つまたは複数の将来のシンボルがコーディングされるようになるまで確率モデル更新処理が遅延されるように確率モデル更新遅延を実装することを含み得る。たとえば、１の遅延について、（たとえば、シンボル（０）をコーディングした後に）更新されたモデルは、シンボル（２）をコーディングするために利用可能である。この例では、確率モデルを記憶するために、（上記で説明したコンテキストバッファＣＴＸＢと同様の）バッファが使用され得る。
【０１６４】
[0177]図１２に、本開示の態様による、遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする例示的な技法を示す。図１２に示す例は、概して、ビデオコーダによって実行されるものとして説明する。すなわち、たとえば、ビデオコーダがビデオエンコーダである例では、エンコーダは、確率モデルを使用してターゲットシンボル（たとえば、ビン）をコーディングし得る。ビデオコーダがビデオデコーダである例では、デコーダは、確率モデルを使用してターゲットシンボル（たとえば、ビン）を復号し得る。したがって、図１０に関して図示および説明する技法は、ビデオエンコーダ２０（図１および図２）、ビデオデコーダ３０（図１および図３）、または様々な他のプロセッサ、処理ユニット、エンコーダ／デコーダ（コーデック）などのハードウェアベースのコーディングユニットによって行われ得ることを理解されたい。
【０１６５】
[0178]図１２に示す例では、ビデオコーダが、初めに、エントロピーコーディングサイクル中にビンのコンテキストを決定する（３６０）。上述のように、エントロピーコーディングサイクルは、概して、ビンをコーディングするために使用される確率モデルに対応するコンテキストを決定し、確率モデルを適用してビンをコーディングすることを含む。
【０１６６】
[0179]ビデオコーダは、次いで、コンテキストに基づいて確率モデルを選択し、確率モデルは、現在のコーディングサイクルより少なくとも２サイクル前にコーディングされた、前にコーディングされたビンの値に基づいて更新される（３６２）。たとえば、概して、ビン、たとえば、ビン（ｎ）のコンテキストは、確率モデルに対応するコンテキストインデックス、たとえば、ｃｔｘ（ｎ）を使用して示され得る。しかしながら、本開示の技法によれば、ビデオコーダは、ビデオデータのブロックの前のビンをコーディングする前に、すなわち、現在のビンをコーディングするより少なくとも２コーディング反復またはサイクル前に更新された確率モデルを使用して、ブロックの特定のビンをコーディングし得る。したがって、以下でより詳細に説明するように、ビデオコーダは、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
【０１６７】
[0180]説明のための一例では、ビデオデータのブロックのビンのシーケンス、たとえば、ビン（０）、ビン（１）、．．．、ビン（ｎ−１）、およびビン（ｎ）が、ＣＡＢＡＣプロセスを実行することによって連続してコーディングされると仮定する。この例では、ビン（０）、ビン（１）、．．．、ビン（ｎ−１）、およびビン（ｎ）をコーディングするために使用されるコンテキストが、ｃｔｘ（０）、ｃｔｘ（１）、．．．、ｃｔｘ（ｎ−１）、およびｃｔｘ（ｎ）によって示されると仮定する。さらに、すべてのコンテキストに対応する確率モデル（または状態）が、ｃｔｘＢｕｆｆｅｒ（０）、ｃｔｘＢｕｆｆｅｒ（１）、．．．、ｃｔｘＢｕｆｆｅｒ（ｎ−１）、およびｃｔｘＢｕｆｆｅｒ（ｎ）に記憶されると仮定する。ここで、ビン（Ｋ−１）がコーディングされ、ビン（Ｋ−１）に対応するコンテキスト状態が更新された後に、コンテキストバッファｃｔｘＢｕｆｆｅｒ（Ｋ）は、すべてのコンテキストに対応する状態を記憶する。そのようなバッファの使用は、ビンをコーディングするために使用される確率モデルの複数のバージョンまたは「リビジョン」を維持するために必要とされ得る。確率モデルは、初期状態によって定義され得、前に説明したように、前にコーディングされたビン、すなわちビン（０）、ビン（１）、．．．、ビン（ｎ−１）によって影響され得る。新生のＨＥＶＣおよびＨ．２６４規格によれば、ビン（ｎ）をコーディングするために以下のステップが実行される。
【０１６８】
１．ビン（ｎ）をコーディングするために使用されることになるコンテキストｃｔｘ（ｎ）を決定する。
【０１６９】
２．コンテキストバッファｃｔｘＢｕｆｆｅｒ（ｎ）からｃｔｘ（ｎ）のための確率モデルを取り出す。
【０１７０】
３．確率モデルを使用してビン（ｎ）を符号化する。
【０１７１】
４．ビン（ｎ）に基づいて確率モデルを更新する。更新された確率モデルはｃｔｘＢｕｆｆｅｒ（ｎ＋１）中に含まれる。
【０１７２】
[0181]上記に示したプロセスによって示されるように、ＣＡＢＡＣプロセスは、ステップのすべてが完了するまで次のビン、たとえば、ビン（ｎ＋１）をコーディングすることに進むことができず、これにより、コーディングプロセスに遅延が生じ得る。本開示の態様によれば、ビデオコーダは、ｃｔｘＢｕｆｆｅｒ（ｎ−Ｋ）中に含まれる確率モデルを使用してビン（ｎ）をコーディングし得る。すなわち、たとえば、本開示の態様は、ビデオコーダがコンテキストバッファｃｔｘＢｕｆｆｅｒ（ｎ−Ｋ）からｃｔｘ（ｎ）のための確率モデルを取り出すように上記のプロセスのステップ２を修正することを含む。「ｎ」が「Ｋ」以下である例では、ビデオコーダはｃｔｘＢｕｆｆｅｒ（０）を使用し得る。
【０１７３】
[0182]インデックス「Ｋ」は、任意の正の非０整数値に等しくなり得る。たとえば、「Ｋ」の値「１」について、コンテキストバッファｃｔｘＢｕｆｆｅｒ（ｎ−１）は、現在のコーディングサイクルより２コーディングサイクル前に更新された確率モデルを含む。特に、ｃｔｘＢｕｆｆｅｒ（ｎ−１）中に含まれる確率モデルは、ビン（ｎ−２）をコーディングした後に更新されたｃｔｘＢｕｆｆｅｒ（ｎ−２）中に含まれる確率モデルに対応し得る。
【０１７４】
[0183]本開示の態様によれば、ビデオコーダは、初期確率モデルを使用して、シーケンスの第１のビンと第２のビンとをコーディングし得る。たとえば、ビデオコーダは、ｃｔｘＢｕｆｆｅｒ（０）を使用して、所与のシーケンスのビン（０）とビン（１）の両方をコーディングし得る。ビン（０）は、前に更新された確率モデルが存在しないので、このようにコーディングされ得る。ビン（１）は、ｃｔｘＢｕｆｆｅｒ（１）中に含まれるべきビン（０）の値に基づいてｃｔｘＢｕｆｆｅｒ（０）中に含まれる確率モデルを更新することに起因し得る状態更新遅延を回避するために、このようにコーディングされ得る。したがって、いくつかの例では、ステップ３６２は、所定の数のビンをコーディングした後に実行され得る。
【０１７５】
[0184]確率モデルを選択した後に（３６２）、ビデオコーダは、ビンをコーディングするために確率モデルを適用する（３６４）。ビデオコーダは、次いで、ビンの値に基づいて確率モデルを更新する（３６６）。コンテキスト適応型コーディングにおける状態更新に関連する遅延を回避することによって、図１２に関して図示および説明する態様は、ビデオコーディングにおいてＣＡＢＡＣプロセスを実行するとき、ビデオデータのブロックの残差変換係数の効率的なコーディングを可能にし得る。さらに、コンテキスト区分が使用される例では、本開示の技法はコンテキストパーティションごとに適用され得る。
【０１７６】
[0185]図１１に関して上述したように、上記ではバイナリビデオコーディングに関して説明したが、遅延状態更新技法は、概して、他のデータの他の算術コーディングに適用され得ることを理解されたい。さらに、図１２に関して図示および説明するステップは一例として与えたものにすぎないことをも理解されたい。すなわち、図１２の方法のステップは必ずしも図１２に示す順序で実行される必要があるとは限らず、より少数の、追加の、または代替のステップが実行され得る。
【０１７７】
[0186]例に応じて、本明細書で説明した方法のうちのいずれかのいくつかの行為またはイベントは、異なるシーケンスで実行され得、互いに付加、マージ、または除外され得る（たとえば、すべての説明した行為またはイベントが、方法の実施のために必要であるとは限らない）ことを理解されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して、同時に実行され得る。
【０１７８】
[0187]１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。
【０１７９】
[0188]このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１８０】
[0189]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【０１８１】
[0190]ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１８２】
[0191]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１８３】
[0192]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０１８４】
[0193]本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］  データをコーディングする方法であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすること、を備え、
ビンの前記シーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、方法。
［２］  前記確率モデルはコンテキストバッファに記憶され、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、［１］に記載の方法。
［３］  ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、［１］に記載の方法。
［４］  ビンの前記シーケンスのうちの前記少なくとも１つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記方法は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化すること、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、［１］に記載の方法。
［５］  前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記方法は、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングすることをさらに備える、［１］に記載の方法。
［６］  ビンの前記シーケンスは第１のパーティションを備え、前記方法は、前記第１のパーティションと並列に第２のパーティションのビンの第２のシーケンスをコーディングすることをさらに備える、［１］に記載の方法。
［７］  ビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングすることをさらに備える、［１］に記載の方法。
［８］  前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、［１］に記載の方法。
［９］  ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを符号化することを備える、［１］に記載の方法。
［１０］  ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの１つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を２値化することと、
をさらに備える、［９］に記載の方法。
［１１］  ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを復号することを備える、［１］に記載の方法。
［１２］  変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
をさらに備える、［１１］に記載の方法。
［１３］  データをコーディングするための装置であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするように構成された１つまたは複数のプロセッサを備え、
ビンの前記シーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、装置。
［１４］  前記装置は、前記確率モデルを記憶するコンテキストバッファをさらに備え、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、［１３］に記載の装置。
［１５］  ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、［１３］に記載の装置。
［１６］  ビンの前記シーケンスのうちの前記少なくとも１つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化することと、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、［１３］に記載の装置。
[１７]  前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記装置は、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングすることをさらに備える、［１３］に記載の装置。
［１８］  ビンの前記シーケンスは第１のパーティションを備え、前記１つまたは複数のプロセッサは、前記第１のパーティションと並列に第２のパーティションのビンの第２のシーケンスをコーディングするようにさらに構成された、［１３］に記載の装置。
［１９］  前記１つまたは複数のプロセッサは、ビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングするようにさらに構成された、［１３］に記載の装置。
［２０］  前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、［１３］に記載の装置。
［２１］  前記１つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するように構成された、［１３］に記載の装置。
［２２］  前記１つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの１つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を２値化することと、
を行うようにさらに構成された、［２１］に記載の装置。
［２３］  前記１つまたは複数のプロセッサは、ビンの前記シーケンスを復号するように構成された、［１３］に記載の装置。
［２４］  前記１つまたは複数のプロセッサは、
変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
を行うようにさらに構成された、［２３］に記載の装置。
［２５］  データをコーディングするための装置であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングする手段を備え、
ビンの前記シーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、装置。
［２６］  前記装置は、前記確率モデルを記憶する手段をさらに備え、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に、前記確率モデルを記憶する手段に記憶された前記確率モデルを選択することを備える、［２５］に記載の装置。
［２７］  ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、［２５］に記載の装置。
［２８］  ビンの前記シーケンスのうちの前記少なくとも１つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化する手段をさらに備え、前記初期化する手段は、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、［２５］に記載の装置。
［２９］  ビンの前記シーケンスは第１のパーティションを備え、前記コーディングする手段は、前記第１のパーティションと並列に第２のパーティションのビンの第２のシーケンスをコーディングするようにさらに構成された、［２５］に記載の装置。
［３０］  前記コーディングする手段は、ビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングするようにさらに構成された、［２５］に記載の装置。
［３１］  前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、［２５］に記載の装置。
［３２］  命令を記憶したコンピュータ可読記憶媒体であって、実行されたとき、１つまたは複数のプロセッサに、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングさせる命令を備え、
ビンの前記シーケンスのうちの少なくとも１つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも２コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、コンピュータ可読記憶媒体。
［３３］  前記命令は、さらに、前記１つまたは複数のプロセッサに、コンテキストバッファに前記確率モデルを記憶させ、前記少なくとも２コーディングサイクルはＫサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも（Ｋ＋１）サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、［３２］に記載のコンピュータ可読記憶媒体。
［３４］  ビンの前記シーケンスのうちの２つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記２つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、［３２］に記載のコンピュータ可読記憶媒体。
［３５］  ビンの前記シーケンスのうちの前記少なくとも１つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記命令は、さらに、前記１つまたは複数のプロセッサに、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化させ、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、［３２］に記載のコンピュータ可読記憶媒体。
［３６］  前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記コンピュータ可読記憶媒体は、さらに、前記１つまたは複数のプロセッサに、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングさせる命令を備える、［３２］に記載のコンピュータ可読記憶媒体。
［３７］  ビンの前記シーケンスが第１のパーティションを備え、前記命令は、前記１つまたは複数のプロセッサに、前記第１のパーティションと並列に第２のパーティションのビンの第２のシーケンスをコーディングさせる、［３２］に記載のコンピュータ可読記憶媒体。
［３８］  前記命令は、前記１つまたは複数のプロセッサに、ビンの前記シーケンスのうちの少なくとも２つのビンを並列にコーディングさせる、［３２］に記載のコンピュータ可読記憶媒体。
［３９］  前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを備える、［３２］に記載のコンピュータ可読記憶媒体。
［４０］  ビデオコーディングプロセスにおいて残差ビデオデータに関連する変換係数をコーディングする方法であって、
変換係数の複数のサブセットのうちの第１のサブセットをコーディングすることと、前記第１のサブセットをコーディングすることは、１つまたは複数の確率モデルを使用して前記第１のサブセットをコンテキスト適応型コーディングすることを備え、
変換係数の前記第１のサブセットをコーディングしながら、前記１つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
前記第１のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
前記更新された１つまたは複数の確率モデルを使用して前記変換係数の第２のサブセットをコーディングすることと、
を備える、方法。
［４１］  変換係数の前記第２のサブセットをコーディングしながら、前記１つまたは複数の確率モデルに関連する第２の確率モデル統計値を記憶することと、
前記第２のサブセットの最終係数をコーディングした後に、前記記憶された第２の確率モデル統計値に基づいて前記確率モデルを更新することと、
前記第２のサブセットから前記更新された確率モデルを使用して前記複数のサブセットのうちの第３のサブセットをコーディングすることと、
をさらに備える、［４０］に記載の方法。
［４２］  前記第１のサブセットをコーディングすることは、前記第１のサブセットの前記変換係数に関連する有効性マップをコーディングすることを備える、［４０］に記載の方法。
［４３］  前記サブセットは変換係数のサブブロックを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、［４０］に記載の方法。
［４４］  前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、［４０］に記載の方法。
［４５］  第１の走査において前記第１のサブセットをコーディングすることは、第１の走査において前記第１のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、１つまたは複数の追加の走査において、前記第１のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることとを備える、
確率モデル統計値を記憶することは、各走査中に前記確率モデル統計値を記憶することを備え、
前記確率モデルを更新することは、各走査後に前記確率モデルを更新することを備える、
［４０］に記載の方法。
［４６］  前記複数のサブセットのうちの少なくとも１つの他のサブセットと並列に前記第１のサブセットをコーディングすることをさらに備える、［４０］に記載の方法。
［４７］  前記変換係数をコーディングすることは、前記変換係数を符号化することを備える、［４０］に記載の方法。
［４８］  前記変換係数をコーディングすることは、前記変換係数を復号することを備える、［４０］に記載の方法。
［４９］  残差ビデオデータに関連する変換係数をコーディングするための装置であって、
変換係数の複数のサブセットのうちの第１のサブセットをコーディングすることと、前記第１のサブセットをコーディングすることは、１つまたは複数の確率モデルを使用して前記第１のサブセットをコンテキスト適応型コーディングすることを備え、
変換係数の前記第１のサブセットをコーディングしながら、前記１つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
前記第１のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
前記更新された１つまたは複数の確率モデルを使用して前記変換係数の第２のサブセットをコーディングすることと、
を行うように構成された１つまたは複数のプロセッサを備える、装置。
［５０］  前記１つまたは複数のプロセッサは、
変換係数の前記第２のサブセットをコーディングしながら、前記１つまたは複数の確率モデルに関連する第２の確率モデル統計値を記憶することと、
前記第２のサブセットの最終係数をコーディングした後に、前記記憶された第２の確率モデル統計値に基づいて前記確率モデルを更新することと、
前記第２のサブセットから前記更新された確率モデルを使用して前記複数のサブセットのうちの第３のサブセットをコーディングすることと、
を行うようにさらに構成された、［４９］に記載の装置。
［５１］  前記第１のサブセットをコーディングするために、前記１つまたは複数のプロセッサは、前記第１のサブセットの前記変換係数に関連する有効性マップをコーディングするように構成された、［４９］に記載の装置。
［５２］  前記サブセットは変換係数のサブブロックを備え、前記１つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、［４９］に記載の装置。
［５３］  前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記１つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、［４９］に記載の装置。
［５４］  前記１つまたは複数のプロセッサは、
第１の走査において前記第１のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、１つまたは複数の追加の走査において、前記第１のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることと、を備える、第１の走査において前記第１のサブセットをコーディングすることと、
各走査中に前記確率モデル統計値を記憶することを備える、確率モデル統計値を記憶することと、
各走査後に前記確率モデルを更新することを備える、前記確率モデルを更新することと、
を行うように構成された、［４９］に記載の装置。
［５５］  前記１つまたは複数のプロセッサは、前記複数のサブセットのうちの少なくとも１つの他のサブセットと並列に前記第１のサブセットをコーディングするように構成された、［４９］に記載の装置。
［５６］  前記１つまたは複数のプロセッサはビデオエンコーダを備える、［４９］に記載の装置。
［５７］  前記１つまたは複数のプロセッサはビデオデコーダを備える、［４９］に記載の装置。
【図１】
0005937206.tif 000003
【図２】
0005937206.tif 000004
【図３】
0005937206.tif 000005
【図４Ａ】
0005937206.tif 000006
【図４Ｂ】
0005937206.tif 000007
【図５Ａ】
0005937206.tif 000008
【図５Ｂ】
0005937206.tif 000009
【図６Ａ】
0005937206.tif 000010
【図６Ｂ】
0005937206.tif 000011
【図７Ａ】
0005937206.tif 000012
【図７Ｂ】
0005937206.tif 000013
【図８】
0005937206.tif 000014
【図９】
0005937206.tif 000015
【図１０】
0005937206.tif 000016
【図１１】
0005937206.tif 000017
【図１２】
0005937206.tif 000018