(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化または復号する方法であって、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピー符号化またはエントロピー復号するためのコンテキストを決定することであって、
前記関数が、前記ビンの前記インデックスを値ｋ右シフトし、オフセット値に前記値ｋ右シフトされた前記インデックスを加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数１】
0006042526.tif 000043
前記値ｋが次式に従って決定され、
【数２】
0006042526.tif 000044
前記値ｎが次式に従って決定され、
【数３】
0006042526.tif 000045
前記値ｂｌｏｃｋ＿ｓｉｚｅが前記ブロックのサイズを示す値を備える、
決定することと、
前記決定されたコンテキストを使用して前記ビンを符号化または復号することと
を備える方法。
【請求項２】
前記コンテキストを決定することが前記関数を実行することを備える、請求項１に記載の方法。
【請求項３】
前記関数が線形関数を備える、請求項１に記載の方法。
【請求項４】
前記関数が非線形関数を備える、請求項１に記載の方法。
【請求項５】
前記関数が、前記ビンの前記インデックスを１つ右シフトすることによって前記コンテキストのためのコンテキストインデックスを生成する、請求項１に記載の方法。
【請求項６】
ユーザから前記関数を受信することをさらに備える、請求項１に記載の方法。
【請求項７】
前記関数を定義するシンタックスデータを受信することをさらに備える、請求項１に記載の方法。
【請求項８】
前記ビンを符号化または復号することが、前記ビンの値を再生するために前記決定されたコンテキストを使用して符号化データをエントロピー復号することを備える、請求項１に記載の方法。
【請求項９】
前記ビンを符号化または復号することが、前記決定されたコンテキストを使用して前記ビンをエントロピー符号化することを備える、請求項１に記載の方法。
【請求項１０】
ビデオデータを符号化または復号するためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピー符号化またはエントロピー復号するためのコンテキストを決定することであって、
前記関数が、前記ビンの前記インデックスを値ｋ右シフトし、オフセット値に前記値ｋ右シフトされた前記インデックスを加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数４】
0006042526.tif 000046
前記値ｋが次式に従って決定され、
【数５】
0006042526.tif 000047
前記値ｎが次式に従って決定され、
【数６】
0006042526.tif 000048
前記値ｂｌｏｃｋ＿ｓｉｚｅが前記ブロックのサイズを示す値を備える、
決定することと、
前記決定されたコンテキストを使用して前記ビンを符号化または復号することと
を行うように構成された１つまたは複数のプロセッサと
を備えるデバイス。
【請求項１１】
前記１つまたは複数のプロセッサが、前記関数を実行することに少なくとも部分的によって前記コンテキストを決定するように構成された、請求項１０に記載のデバイス。
【請求項１２】
前記１つまたは複数のプロセッサが、前記関数を定義するシンタックスデータを受信することを行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１３】
前記１つまたは複数のプロセッサが、前記ビンの値を再生するために前記決定されたコンテキストを使用して符号化データをエントロピー復号することに少なくとも部分的によって前記ビンを符号化または復号するように構成された、請求項１０に記載のデバイス。
【請求項１４】
前記１つまたは複数のプロセッサが、前記決定されたコンテキストを使用して前記ビンをエントロピー符号化することに少なくとも部分的によって前記ビンを符号化または復号するように構成された、請求項１０に記載のデバイス。
【請求項１５】
前記デバイスが、
集積回路と、
マイクロプロセッサと、
ビデオコーダを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、請求項１０に記載のデバイス。
【請求項１６】
ビデオデータを符号化または復号するためのデバイスであって、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピー符号化またはエントロピー復号するためのコンテキストを決定するための手段であって、
前記関数が、前記ビンの前記インデックスを値ｋ右シフトし、オフセット値に前記値ｋ右シフトされた前記インデックスを加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数７】
0006042526.tif 000049
前記値ｋが次式に従って決定され、
【数８】
0006042526.tif 000050
前記値ｎが次式に従って決定され、
【数９】
0006042526.tif 000051
前記値ｂｌｏｃｋ＿ｓｉｚｅが前記ブロックのサイズを示す値を備える、
決定するための手段と、
前記決定されたコンテキストを使用して前記ビンを符号化または復号するための手段と
を備えるデバイス。
【請求項１７】
前記コンテキストを決定するための前記手段が前記関数を実行するための手段を備える、請求項１６に記載のデバイス。
【請求項１８】
前記関数を定義するシンタックスデータを受信するための手段をさらに備える、請求項１６に記載のデバイス。
【請求項１９】
実行されたとき、コンピューティングデバイスのプログラマブルプロセッサに、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピー符号化またはエントロピー復号するためのコンテキストを決定することであって、
前記関数が、前記ビンの前記インデックスを値ｋ右シフトし、オフセット値に前記値ｋ右シフトされた前記インデックスを加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数１０】
0006042526.tif 000052
前記値ｋが次式に従って決定され、
【数１１】
0006042526.tif 000053
前記値ｎが次式に従って決定され、
【数１２】
0006042526.tif 000054
前記値ｂｌｏｃｋ＿ｓｉｚｅが前記ブロックのサイズを示す値を備える、
決定することと、
前記決定されたコンテキストを使用して前記ビンを符号化または復号することと
を行わせる命令で符号化されたコンピュータ可読記憶媒体。
【請求項２０】
前記プログラマブルプロセッサに前記コンテキストを決定させる前記命令が、前記関数を実行することを前記プログラマブルプロセッサに行わせる命令をさらに含む、請求項１９に記載のコンピュータ可読記憶媒体。
【請求項２１】
実行されたとき、前記プログラマブルプロセッサに、前記関数を定義するシンタックスデータを受信することを行わせる命令でさらに符号化される、請求項１９に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１２年３月２２日に出願された米国仮出願第６１／６１４，１７８号、２０１２年４月４日に出願された米国仮出願第６１／６２０，２７３号、および２０１２年６月２９日に出願された米国仮出願第６１／６６６，３１６号の利益を主張する。
【０００２】
[0002]本開示は、ビデオコーディングに関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ  １０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス（たとえば、ビデオフレームまたはビデオフレームの一部分）が、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれることもあるビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その残差変換係数は、次いで量子化され得る。量子化変換係数は、最初は２次元アレイで構成され、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するために、エントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]概して、本開示では、１つまたは複数の関数を使用してビデオデータに関連するシンタックス要素をコーディングするための技法について説明する。たとえば、デバイスは、（変換ユニットまたは「ＴＵ」などの）ビデオデータのブロックの最後有意係数の位置を示す値をコーディングするために本技法のうちの１つまたは複数を実装し得る。その値をコーディングするために、デバイスは、最後有意係数に対応する２値化値中の各ビット（または「ビン」）のインデックスの関数を使用し得、インデックスは、２値化値を表すビンのアレイにおけるビンの位置を示す。
【０００７】
[0007]一例では、方法は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを含む。
【０００８】
[0008]別の例では、ビデオデータをコーディングするためのデバイスは、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを行うように構成されたビデオコーダを含む。
【０００９】
[0009]別の例では、デバイスは、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定するための手段と、決定されたコンテキストを使用してビンをコーディングするための手段とを含む。
【００１０】
[0010]別の例では、コンピュータ可読記憶媒体が命令で符号化される。実行されたとき、命令は、ピンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとをコンピューティングデバイスのプログラマブルプロセッサに行わせる。
【００１１】
[0011]１つまたは複数の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、その説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】[0012]ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】[0013]ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】[0014]ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を実装し得るビデオデコーダの一例を示すブロック図。
【図４】[0015]ビデオデータの現在のブロックを符号化するための例示的な方法を示すフローチャート。
【図５】[0016]ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャート。
【発明を実施するための形態】
【００１３】
[0017]概して、本開示の技法はビデオコーディングに関する。ビデオコーディングでは、ピクチャのシーケンスは、空間予測（イントラ予測）または時間的予測（インター予測）のいずれかを使用して個々にコーディングされる。特に、ビデオコーダは、イントラ予測またはインター予測を使用してピクチャの個別のブロックをコーディングする。ビデオコーダはまた、ブロックについての残差データをコーディングし、残差データは、予測データと生のコーディングされていないデータとの間のピクセルごとの差分を表す残差ブロックに概して対応する。ビデオコーダは、残差データを変換し、量子化して、残差ブロックのための量子化変換係数を生成し得る。ビデオコーダは、さらに、係数が有意であるか（たとえば、０よりも大きい絶対値を有するか）どうか、有意係数のロケーション、走査順序での最後有意係数のロケーション、および有意係数のレベル値など、シンタックスデータをコーディングする。
【００１４】
[0018]本開示では、変換ユニット（ＴＵ）などのビデオデータのブロック中の最後有意係数を示す値をコーディングするための技法について説明する。特に、ブロック中の最後有意係数を示す値などのシンタックス要素をコーディングするために、ビデオコーダは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を適用するように構成され得る。ＣＡＢＡＣコーディングは、２値化された列の個別のビット（または「ビン」）が特定の値（たとえば、０または１）を有することになる可能性を概して示す、コンテキストインデックスによって示される様々なコンテキストの使用を伴う。詳細には、ブロック中の最後有意係数を示す値のビンをコーディングするためのコンテキストは、その値のビンごとに個々に決定され、すなわち、その値中のビンのロケーション（たとえば、値がビンのアレイとして表されると仮定して、ビンのインデックス）に基づく。
【００１５】
[0019]特定のビンをコーディングするために使用すべきコンテキストのためのコンテキストインデックスの指示を与えるマッピングテーブルを使用するのではなく、本開示の技法は、ビンをコーディングするために使用すべきコンテキストのコンテキストインデックスを決定するために関数を使用することを含む。特に、関数は、ビンのインデックスの関数であり得る。たとえば、ビンがコーディングされている値のｉ番目のビンであると仮定すると、関数はｆ（ｉ）として定義され得、ここで、ｆ（ｉ）は、２値化値のビンｉをコーディングするために使用すべきコンテキストに対応するコンテキストインデックス値を戻す。コンテキストは、上記で説明したように、ビンｉが特定の値、たとえば、０または１を有する可能性を示し得る。
【００１６】
[0020]このようにして、本開示では、最後有意係数位置（最後の位置）のＣＡＢＡＣコーディングの技法について説明する。符号化されるべき最後の位置のビンについて、それのＣＡＢＡＣコンテキストのインデックスは、最後の位置のビンとＣＡＢＡＣコンテキストとの間のマッピングテーブルが保存され得る（たとえば、記憶されない）ように関数を使用して導出され得る。ＣＡＢＡＣコーディングは、概して、２値化とＣＡＢＡＣコーディングとの２つの部分を含む。２値化プロセスは、ブロックの最後有意係数のロケーションを２進列、たとえば、ビンのアレイに変換するために実行される。高効率ビデオコーディングテストモデル（ＨＭ：High Efficiency Video Coding Test Model）中で使用される２値化方法は短縮単項＋固定長符号化である。短縮単項コード部分については、ビンは、ＣＡＢＡＣコンテキストを使用して符号化される。固定長部分については、ビンは、（コンテキストなしに）バイパスモードを使用して符号化される。３２×３２のＴＵ（変換ユニット／変換ブロック）の例を以下の表１に示す。
【表１】
0006042526.tif 000002
【００１７】
[0021]以下の表２は、従来のＨＭにおいて使用される例示的なコンテキストマッピングテーブルを示す。表２は、異なるロケーションにある最後の位置が同じコンテキストを共有することができることを示す。いくつかビン、たとえば、８×８ブロックのビン６〜７では、上記の表１に示すように、それらがコンテキストなしに（バイパスモード）符号化されているので、コンテキストが割り当てられていない。
【表２】
0006042526.tif 000003
【００１８】
[0022]従来のＨＭは、最後の位置値（すなわち、ビデオデータのブロック中の最後有意係数の位置を示す値）のビンをコーディングするためのコンテキストを決定するために表２などのテーブルを使用するが、本開示の技法は、最後の位置値のビンをコーディングするためのコンテキストを決定するために関数の使用を含む。したがって、表２と同様のテーブルは、本開示の技法に従って構成されたビデオコーダ中に存在する必要はない。このようにして、最後の位置コーディングにおけるビンのためのＣＡＢＡＣコンテキストインデックスを導出するために関数が使用され得、したがって、マッピングテーブル（表２）は除去され得る。シンタックス要素のビンをコーディングするためのコンテキストを決定するために関数を実行するように構成されたコーディングデバイスの様々な例について以下でより詳細に説明する。
【００１９】
[0023]図１は、ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、宛先デバイス１４によって後で復号されるべき符号化ビデオデータを与えるソースデバイス１２を含む。特に、ソースデバイス１２は、コンピュータ可読媒体１６を介してビデオデータを宛先デバイス１４に与える。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００２０】
[0024]宛先デバイス１４は、コンピュータ可読媒体１６を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動させることができる任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体１６は、ソースデバイス１２が、符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【００２１】
[0025]いくつかの例では、符号化データは、出力インターフェース２２からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、ブルーレイ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス１２によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介してストレージデバイスから、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス１４に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む、任意の標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【００２２】
[0026]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーＨＴＴＰ（ＤＡＳＨ：dynamic adaptive streaming over HTTP）などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２３】
[0027]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。本開示によれば、ソースデバイス１２のビデオエンコーダ２０は、ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス１２は、外部カメラなど、外部ビデオソース１８からビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００２４】
[0028]図１の図示のシステム１０は一例にすぎない。ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。さらに、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が宛先デバイス１４に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス１２、１４は、デバイス１２、１４の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャストまたはビデオ電話のための、ビデオデバイス１２とビデオデバイス１４との間の一方向または双方向のビデオ送信をサポートし得る。
【００２５】
[0029]ソースデバイス１２のビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、および／またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ２０によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース２２によってコンピュータ可読媒体１６上に出力され得る。
【００２６】
[0030]コンピュータ可読媒体１６は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体（すなわち、非一時的記憶媒体）を含み得る。いくつかの例では、ネットワークサーバ（図示せず）は、たとえば、ネットワーク送信を介して、ソースデバイス１２から符号化されたビデオデータを受信し、宛先デバイス１４に符号化されたビデオデータを与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス１２から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、様々な例では、コンピュータ可読媒体１６は、様々な形態の１つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【００２７】
[0031]宛先デバイス１４の入力インターフェース２８は、コンピュータ可読媒体１６から情報を受信する。コンピュータ可読媒体１６の情報は、ビデオエンコーダ２０によって定義され、またビデオデコーダ３０によって使用される、ブロックおよび他のコード化ユニット、たとえば、ＧＯＰの特性および／または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００２８】
[0032]ビデオエンコーダ２０およびビデオデコーダ３０は、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格などのビデオコーディング規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ）に準拠し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４，Ｐａｒｔ  １０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００２９】
[0033]ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）とともにＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって策定された。いくつかの態様では、本開示で説明する技法は、Ｈ．２６４規格に概して準拠するデバイスに適用され得る。Ｈ．２６４規格は、ＩＴＵ−Ｔ  Ｓｔｕｄｙ  Ｇｒｏｕｐによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ」に記載されており、本明細書ではＨ．２６４規格もしくはＨ．２６４仕様、またはＨ．２６４／ＡＶＣ規格もしくは仕様と呼ぶことがある。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張に取り組み続けている。
【００３０】
[0034]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００３１】
[0035]ＪＣＴ−ＶＣは、ＨＥＶＣ規格の開発に取り組んでいる。ＨＥＶＣ規格化の取り組みは、ＨＥＶＣテストモデル（ＨＭ）と呼ばれるビデオコーディングデバイスの発展的モデルに基づく。ＨＭは、たとえば、ＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、Ｈ．２６４は９つのイントラ予測符号化モードを提供するが、ＨＭは３３個ものイントラ予測符号化モードを提供し得る。
【００３２】
[0036]概して、ＨＭの作業モデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット（ＬＣＵ：largest coding unit）に分割され得ることを記載している。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるＬＣＵのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、１つまたは複数のスライスに区分され得る。各ツリーブロックは、４分木に従ってコーディングユニット（ＣＵ）に分割され得る。概して、４分木データ構造はＣＵごとに１つのノードを含み、ルートノードはツリーブロックに対応する。ＣＵが４つのサブＣＵに分割された場合、ＣＵに対応するノードは４つのリーフノードを含み、リーフノードの各々はサブＣＵのうちの１つに対応する。
【００３３】
[0037]４分木データ構造の各ノードは、対応するＣＵのシンタックスデータを与え得る。たとえば、４分木のノードは、そのノードに対応するＣＵがサブＣＵに分割されるかどうかを示す分割フラグを含み得る。ＣＵのシンタックス要素は、再帰的に定義され得、かつＣＵがサブＣＵに分割されるかどうかに依存し得る。ＣＵがさらに分割されない場合、そのＣＵはリーフＣＵと呼ばれる。本開示では、元のリーフＣＵの明示的分割が存在しない場合でも、リーフＣＵの４つのサブＣＵをリーフＣＵとも呼ぶ。たとえば、１６×１６サイズのＣＵがさらに分割されない場合、この１６×１６ＣＵが決して分割されなくても、４つの８×８サブＣＵをリーフＣＵとも呼ぶ。
【００３４】
[0038]ＣＵは、ＣＵがサイズの差異を有さないことを除いて、Ｈ．２６４規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、４つの子ノード（サブＣＵとも呼ばれる）に分割され得、各子ノードは、今度は親ノードとなり、別の４つの子ノードに分割され得る。４分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフＣＵとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大ＣＵ深さと呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット（ＳＣＵ：smallest coding unit）をも定義し得る。本開示では、ＨＥＶＣのコンテキストにおけるＣＵ、ＰＵ、もしくはＴＵ、または他の規格のコンテキストにおける同様のデータ構造（たとえば、Ｈ．２６４／ＡＶＣにおけるマクロブロックおよびそれのサブブロック）のいずれかを指すために「ブロック」という用語を使用する。
【００３５】
[0039]ＣＵは、コーディングノードと、コーディングノードに関連する予測ユニット（ＰＵ：prediction unit）および変換ユニット（ＴＵ：transform unit）とを含む。ＣＵのサイズは、コーディングノードのサイズに対応し、かつ形状が方形でなければならない。ＣＵのサイズは、８×８ピクセルから最大６４×６４以上のピクセルを有するツリーブロックのサイズまでに及び得る。各ＣＵは、１つまたは複数のＰＵと、１つまたは複数のＴＵとを含み得る。ＣＵに関連するシンタックスデータは、たとえば、ＣＵを１つまたは複数のＰＵに区分することを記述し得る。区分モードは、ＣＵが、スキップモード符号化もしくはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかによって異なり得る。ＰＵは、形状が非方形になるように区分され得る。ＣＵに関連するシンタックスデータは、たとえば、４分木に従って、ＣＵを１つまたは複数のＴＵに区分することも記述し得る。ＴＵは、形状が方形または非方形（たとえば、矩形）であり得る。
【００３６】
[0040]ＨＥＶＣ規格は、ＣＵごとに異なり得るＴＵに従う変換を可能にする。ＴＵは、一般に、区分されたＬＣＵについて定義された所与のＣＵ内のＰＵのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。ＴＵは、一般にＰＵと同じサイズであるかまたはＰＵよりも小さい。いくつかの例では、ＣＵに対応する残差サンプルは、「残差クワッドツリー」（ＲＱＴ：residual quad tree）として知られるクワッドツリー構造を使用して、より小さいユニットに再分割され得る。ＲＱＴのリーフノードは変換ユニット（ＴＵ）と呼ばれることがある。ＴＵに関連するピクセル差分値は、量子化され得る変換係数を生成するために変換され得る。
【００３７】
[0041]リーフＣＵは、１つまたは複数の予測ユニット（ＰＵ）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分に対応する空間的エリアを表し、そのＰＵの参照サンプルを取り出すためのデータを含み得る。その上、ＰＵは、予測に関係するデータを含む。たとえば、ＰＵがイントラモード符号化されるとき、ＰＵについてのデータは、ＰＵに対応するＴＵについてのイントラ予測モードを記述するデータを含み得る残差４分木（ＲＱＴ）中に含まれ得る。別の例として、ＰＵがインターモード符号化されるとき、ＰＵは、ＰＵのための１つまたは複数の動きベクトルを定義するデータを含み得る。ＰＵの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度（たとえば、１／４ピクセル精度または１／８ピクセル精度）、動きベクトルが指す参照ピクチャ、および／または動きベクトルの参照ピクチャリスト（たとえば、リスト０、リスト１、またはリストＣ）を記述し得る。
【００３８】
[0042]１つまたは複数のＰＵを有するリーフＣＵはまた、１つまたは複数の変換ユニット（ＴＵ）を含み得る。変換ユニットは、上記で説明したように、（ＴＵ４分木構造とも呼ばれる）ＲＱＴを使用して指定され得る。たとえば、分割フラグは、リーフＣＵが４つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらに、さらなるサブＴＵに分割され得る。ＴＵがさらに分割されないとき、そのＴＵはリーフＴＵと呼ばれることがある。概して、イントラコーディングの場合、リーフＣＵに属するすべてのリーフＴＵは同じイントラ予測モードを共有する。すなわち、概して、リーフＣＵのすべてのＴＵの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフＴＵの残差値をＴＵに対応するＣＵの一部と元のブロックとの間の差分として計算し得る。ＴＵは、必ずしもＰＵのサイズに制限されるとは限らない。したがって、ＴＵはＰＵよりも大きくまたは小さくなり得る。イントラコーディングの場合、ＰＵは、同じＣＵの対応するリーフＴＵとコロケートされ得る。いくつかの例では、リーフＴＵの最大サイズは、対応するリーフＣＵのサイズに対応し得る。
【００３９】
[0043]さらに、リーフＣＵのＴＵはまた、残差４分木（ＲＱＴ）と呼ばれる、それぞれの４分木データ構造に関連付けられ得る。すなわち、リーフＣＵは、リーフＣＵがどのようにＴＵに区分されるかを示す４分木を含み得る。ＴＵ４分木のルートノードは概してリーフＣＵに対応し、ＣＵ４分木のルートノードは概してツリーブロック（またはＬＣＵ）に対応する。分割されないＲＱＴのＴＵはリーフＴＵと呼ばれる。概して、本開示では、特に明記しない限り、リーフＣＵおよびリーフＴＵに言及するためにそれぞれＣＵおよびＴＵという用語を使用する。
【００４０】
[0044]ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ（ＧＯＰ）は、概して、ビデオピクチャのうちの一連の１つまたは複数を備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのピクチャを記述するシンタックスデータを、ＧＯＰのヘッダ中、ピクチャのうちの１つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ２０は、一般に、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、ＣＵ内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、かつ指定のコーディング規格に応じてサイズが異なり得る。
【００４１】
[0045]一例として、ＨＭは、様々なＰＵサイズでの予測をサポートする。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ＨＭは、２Ｎ×２ＮまたはＮ×ＮのＰＵサイズでのイントラ予測をサポートし、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、またはＮ×Ｎの対称的なＰＵサイズでのインター予測をサポートする。ＨＭはまた、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズでのインター予測のための非対称区分をサポートする。非対称区分では、ＣＵの一方向は区分されないが、他の方向は２５％と７５％とに区分される。２５％の区分に対応するＣＵの部分は、「ｎ」とその後ろに付く「Ｕｐ」、「Ｄｏｗｎ」、「Ｌｅｆｔ」、または「Ｒｉｇｈｔ」という表示によって示される。したがって、たとえば、「２Ｎ×ｎＵ」は、上部の２Ｎ×０．５Ｎ  ＰＵと下部の２Ｎ×１．５Ｎ  ＰＵとで水平方向に区分された２Ｎ×２Ｎ  ＣＵを指す。
【００４２】
[0046]本開示では、「Ｎ×Ｎ（NxN）」および「Ｎ×Ｎ（N by N）」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、１６×１６（16x16）ピクセルまたは１６×１６（16 by 16）ピクセルを指すために互換的に使用され得る。概して、１６×１６ブロックは、垂直方向に１６ピクセルを有し（ｙ＝１６）、水平方向に１６ピクセルを有する（ｘ＝１６）。同様に、Ｎ×Ｎブロックは、概して、垂直方向にＮピクセルを有し、水平方向にＮピクセルを有し、ただし、Ｎは非負整数値を表す。ブロック中のピクセルは行と列で構成され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはＮ×Ｍピクセルを備え得、ただし、Ｍは必ずしもＮに等しいとは限らない。
【００４３】
[0047]ＣＵのＰＵを使用したイントラ予測コーディングまたはインター予測コーディングの後、ビデオエンコーダ２０は、ＣＵのＴＵのための残差データを計算し得る。ＰＵは、（ピクセル領域とも呼ばれる）空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、ＴＵは、変換、たとえば、残差ビデオデータへの離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、ＰＵに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ２０は、ＣＵのための残差データを含むＴＵを形成し、次いで、ＴＵを変換して、ＣＵの変換係数を生成し得る。
【００４４】
[0048]変換係数を生成するための任意の変換の後に、ビデオエンコーダ２０は、変換係数の量子化を実行し得る。量子化は、概して、さらなる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にｎビット値がｍビット値に切り捨てられ得、ただし、ｎはｍよりも大きい。
【００４５】
[0049]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む２次元行列から１次元ベクトルを生成し得る。走査は、より高いエネルギー（したがってより低い周波数）の係数をアレイの前方に配置し、より低いエネルギー（したがってより高い周波数）の係数をアレイの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ２０は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ２０は適応型走査を実行し得る。量子化変換係数を走査して１次元ベクトルを形成した後に、ビデオエンコーダ２０は、たとえば、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：context-adaptive binary arithmetic coding）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング、または別のエントロピー符号化方法に従って１次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ２０はまた、ビデオデータを復号する際にビデオデコーダ３０が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
【００４６】
[0050]ＣＡＢＡＣを実行するために、ビデオエンコーダ２０は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非０であるか否かに関係し得る。ＣＡＶＬＣを実行するために、ビデオエンコーダ２０は、送信されるべきシンボルのための可変長コードを選択し得る。ＶＬＣにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、ＶＬＣの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率判断は、シンボルに割り当てられたコンテキストに基づき得る。
【００４７】
[0051]本開示の技法によれば、ビデオエンコーダ２０は、ビデオデータのブロックの最後有意係数の位置を表す値のビンの１つまたは複数の関数を使用して決定されるコンテキストを使用してその値を符号化し得る。同様に、ビデオデコーダ３０は、ビデオデータのブロックの最後有意係数を表す値のビンの１つまたは複数の関数を使用して決定されるコンテキストを使用してその値を復号し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、本開示の技法を実行するために、以下でより詳細に説明する関数（１）〜（１２）のいずれかまたは概念的に同様の関数を実行するように構成され得る。このようにして、ビデオエンコーダ２０およびビデオデコーダ３０は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを行うように構成されたビデオコーダの例を表す。
【００４８】
[0052]一例として、「Ｃｔｘ＿ｉ」は、「最後の位置」の２進列におけるｉ番目のビンを符号化するためにビデオエンコーダ２０によって使用されるコンテキストのインデックスを示し得る。ビデオエンコーダ２０は、以下の式を使用してＣｔｘ＿ｉを導出し得る。
【数１】
0006042526.tif 000004
【００４９】
[0053]ｆ（ｉ）によって示される関数は線形または非線形であり得る。さらに、ｆ（ｉ）は、ビデオエンコーダ２０とビデオデコーダ３０の両方にとってアクセス可能である定義済関数であり得る。代替的に、ｆ（ｉ）は、ユーザによってまたはビデオエンコーダ２０によって選択され、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、適応パラメータセット（ＡＰＳ）、フレームヘッダ、スライスヘッダ、シーケンスヘッダ、または他のそのようなシンタックスシグナリングなど、１つまたは複数のタイプの高レベルシンタックスシグナリングを使用してビデオデコーダ３０に送信され得る。ビデオエンコーダ２０が実行し得る１つのそのような関数の例としては以下がある。
【数２】
0006042526.tif 000005
【００５０】
ここで、「＞＞」は、二項右シフト演算子を示す。次に、ｆ（ｉ）の結果はＣｔｘ＿ｉに対応し得る。すなわち、ビデオエンコーダ２０は、ｆ（ｉ）を実行して、Ｃｔｘ＿ｉの値に等しい出力を生成し得る。より詳細には、ビデオエンコーダ２０は、ｆ（ｉ）を実行して、ｉ番目のビンをエントロピーコーディングするために使用されるべきコンテキストのコンテキストインデックスを生成し得る。
【００５１】
[0054]以下の表３に、上記で説明した例示的な関数（１）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用し得るコンテキストインデックスの一例を示す。表３が例示的な関数（１）の結果の説明のために与えられているが、表３などのテーブルがソースデバイス１２および／または宛先デバイス１４などのビデオコーディングデバイスに記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記の関数（１）を実行して、様々なビンインデックスに基づいて表３に示す結果を生成し得る。
【表３】
0006042526.tif 000006
【００５２】
[0055]別の例として、ビデオエンコーダ２０は、ビンインデックス（ｉ）と対応するブロック（たとえば、ＴＵ）のサイズの両方に依存する関数を実行し得る。対応するブロックは、最後有意係数値によって記述される係数を含むブロックであり得る。一例として、コンテキストインデックスは、以下のような関数によって生成され得る。
【００５３】
Ｃｔｘ＿ｉ＝ｆ（ｉ，ＴＵＢｌｋＳｉｚｅ）、ここで、「ＴＵＢｌｋＳｉｚｅ」はブロックサイズを示す値である。本開示では、「ＴＵＢｌｋＳｉｚｅ」および「ｂｌｏｃｋ＿ｓｉｚｅ」という用語は、ブロックサイズを示すために互換的に使用され得る。
【００５４】
一例として、関数は以下の通りであり得る。
【数３】
0006042526.tif 000007
【００５５】
[0056]以下の表４に、例示的な関数（２）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用するであろうコンテキストインデックスの一例を示す。表４が例示的な関数（２）の結果の説明のために与えられているが、表４などのテーブルがソースデバイス１２および／または宛先デバイス１４などのビデオコーディングデバイスに記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記で説明した例示的な関数（２）を実行して、表４に示す結果を生成し得る。
【表４】
0006042526.tif 000008
【００５６】
[0057]別の例として、ビデオエンコーダ２０は、Ｃｔｘ＿ｉを導出するために以下の関数を実行し得る。
【数４】
0006042526.tif 000009
【００５７】
[0058]以下の表５に、例示的な関数（３）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用し得るコンテキストインデックスの一例を示す。表５が例示的な関数（３）の結果の説明のために与えられているが、表５などのテーブルがソースデバイス１２および／または宛先デバイス１４に記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記で説明した例示的な関数（３）を実行して、表５に示す結果を生成し得る。
【表５】
0006042526.tif 000010
【００５８】
[0059]さらに別の例として、ビデオエンコーダ２０は、Ｃｔｘ＿ｉを導出するために以下の関数を実行し得る。
【数５】
0006042526.tif 000011
【００５９】
[0060]以下の表６に、例示的な関数（４）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用し得るコンテキストインデックスの一例を示す。表６が関数の結果の説明のために与えられているが、表６などのテーブルがソースデバイス１２および／または宛先デバイス１４などのビデオコーディングデバイスに記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記で説明した例示的な関数（４）を実行して、表６に示す結果を生成し得る。
【表６】
0006042526.tif 000012
【００６０】
[0061]別の例として、関数は以下の通りであり得る。
【数６】
0006042526.tif 000013
【００６１】
ここで、
【数７】
0006042526.tif 000014
【数８】
0006042526.tif 000015
【数９】
0006042526.tif 000016
【００６２】
代替的に、例示的な関数（８）は、本開示では、ｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）のように表され得る。
【００６３】
[0062]以下の表７に、例示的な関数（５）〜（８）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用し得るコンテキストインデックスの一例を示す。表７が関数の結果の説明のために与えられているが、表７などのテーブルがソースデバイス１２および／または宛先デバイス１４などのビデオコーディングデバイスに記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記の例示的な関数（５）〜（８）を実行して、表７に示す結果を生成し得る。
【表７】
0006042526.tif 000017
【００６４】
[0063]以下の表８および表９に、ビデオエンコーダ２０および／またはビデオデコーダ３０が、統合された方法でのルーマ成分およびクロマ成分への「最後の位置」コーディングにおけるビンのための本開示の１つまたは複数の式ベースのコンテキスト導出技法を適用し得る別の例を示す。特に、表８に、様々なサイズのルーマＴＵのためのビンインデックスを示し、一方、表９に、様々なサイズのクロマＴＵのためのビンインデックスを与える。
【表８】
0006042526.tif 000018
【表９】
0006042526.tif 000019
【００６５】
[0064]表８に従うルーマＴＵの最後の位置コーディングおよび表９に従うクロマＴＵの最後の位置コーディングにおけるビンのためのコンテキストを導出するためにビデオエンコーダ２０および／またはビデオデコーダ３０が使用し得る関数の一例は以下の通りである。
【数１０】
0006042526.tif 000020
【００６６】
ここで、ルーマおよびクロマは同じ値ｋを共有し、ｋ＝（ｎ＋３）＞＞２であり、ここで、ｎ＝（ｌｏｇ2（ＴＵＢｌｋＳｉｚｅ）−２）である。
【００６７】
[0065]ビデオエンコーダ２０および／またはビデオデコーダ３０は、様々な関数を使用してＴＵがルーマＴＵであるのかまたはクロマＴＵであるのかに基づいて関数（９）の変数「ｏｆｆｓｅｔ」の値を決定し得る。そのような関数の例としては以下がある。
【数１１】
0006042526.tif 000021
【数１２】
0006042526.tif 000022
【００６８】
[0066]このようにして、関数（９）は、ビデオエンコーダ２０および／またはビデオデコーダ３０がコンテキストインデックスを生成するために実行し得る関数の一例を表す。次に、コンテキストインデックスは、ビンのインデックス（ｉ）とブロックのサイズを示す値（ｌｏｇ2（ＴＵＢｌｋＳｉｚｅ）−２であるｎに基づいて計算されるｋ）との関数としてビデオデータのブロックの最後有意係数を示す値のビンをコーディングするためのコンテキストを示し得る。この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、例示的な関数（９）を実行して、たとえば、関数（１０）および（１１）に示すように、ブロックがクロマブロックであるのかまたはルーマブロックであるのかに基づいて決定されたオフセット値に基づいてコンテキストインデックスを生成し得る。
【００６９】
[0067]別の例として、ビデオエンコーダ２０は、ｉ番目のビンをエントロピーコーディングするために使用されるべきコンテキストのコンテキストインデックスを導出するためにステップ関数を実装し得る。より詳細には、ステップ関数は、たとえば、ビンインデックスｉの値に応じて２つ以上の部分を有する関数を表し得る。したがって、ビデオエンコーダ２０および／またはビデオデコーダ３０は、最後の位置値中のビンを異なるサブセット、たとえば、Ｓｕｂｓｅｔ０、Ｓｕｂｓｅｔ１などに分割し得る。さらに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、異なるサブセットに対して異なる関数を適用し得る（たとえば、Ｓｕｂｓｅｔ０に対してＦ０（）、Ｓｕｂｓｅｔ１に対してＦ１（）など）。たとえば、そのような関数は以下の通りであり得る。
【数１３】
0006042526.tif 000023
【００７０】
[0068]いくつかの実装形態では、サブセットは、あらかじめ定義され得、サブセットの定義は、ビデオエンコーダ２０とビデオデコーダ３０の両方にとってアクセス可能であり得る。代替的に、ビデオエンコーダ２０（またはソースデバイス１２のユーザ）はサブセットを選択し得、出力インターフェース２２は、ＳＰＳ、ＰＰＳ、ＡＰＳ、フレームヘッダ、スライスヘッダ、シーケンスヘッダ、または他のそのようなシンタックスシグナリングなどの１つまたは複数の高レベルシンタックスシグナリング技法を使用して宛先デバイス１４のビデオデコーダ３０に選択されたサブセットを送信し得る。サブセットの定義はまた、ブロックサイズ（たとえば、ＴＵサイズ）、ブロックに対応する残差４分木（ＲＱＴ）深度、ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのか、ブロックを含むフレームのための（たとえば、ピクセル解像度での）フレームサイズ、ブロックに対応する動き補償ブロック（たとえば、予測ユニット（ＰＵ））のための動き補償ブロックサイズ、ブロックを含むフレームのためのフレームタイプ（Ｉ／Ｐ／Ｂ）、対応する動き補償ブロックのためのインター予測方向、対応する動き補償ブロックのための動きベクトル振幅、および／または対応する動き補償ブロックの動きベクトルのための動きベクトル差分振幅など、様々な他のタイプの情報に依存し得る。
【００７１】
[0069]以下の表１０に、例示的な関数（１２）を使用して様々なブロック（たとえば、ＴＵ）サイズのための様々なビンインデックスにおいてビンをコーディングするためにビデオエンコーダ２０が使用し得るコンテキストインデックスの一例を示す。表１０が関数の結果の説明のために与えられているが、表１０などのテーブルがソースデバイス１２および／または宛先デバイス１４などのビデオコーディングデバイスに記憶される必要はないことを諒解されよう。代わりに、ビデオエンコーダ２０とビデオデコーダ３０の一方または両方は、上記で説明した例示的な関数（１２）を実行して、表１０に示す結果を生成し得る。
【表１０】
0006042526.tif 000024
【００７２】
[0070]上記で説明した例示的な関数（１）〜（１２）は、サイド情報の１つまたは複数の要素に少なくとも部分的に依存し得る。一例として、関数は、サイド情報を引数として受け入れ得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、対応するサイド情報に基づいて異なる関数を選択し得る。サイド情報は、ブロックサイズ（たとえば、ＴＵサイズ）、ブロックに対応する残差４分木（ＲＱＴ）深度、ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのか、ブロックを含むフレームのための（たとえば、ピクセル解像度での）フレームサイズ、ブロックに対応する動き補償ブロック（たとえば、予測ユニット（ＰＵ））のための動き補償ブロックサイズ、ブロックを含むフレームのためのフレームタイプ（Ｉ／Ｐ／Ｂ）、対応する動き補償ブロックのためのインター予測方向、対応する動き補償ブロックのための動きベクトル振幅、および／または対応する動き補償ブロックの動きベクトルのための動きベクトル差分振幅のいずれかまたはすべてを含み得る。一例として、ビデオエンコーダ２０および／またはビデオデコーダ３０は、クロミナンスブロックに対してルミナンスブロックの最後有意係数位置を示す値のビンをコーディングするときに適用すべきコンテキストを導出するために異なる関数を選択し得る。
【００７３】
[0071]ビデオエンコーダ２０は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびＧＯＰベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはＧＯＰヘッダ中でビデオデコーダ３０に送り得る。ＧＯＰシンタックスデータは、それぞれのＧＯＰ中のいくつかのフレームを記述し得、かつフレームシンタックスデータは、対応するフレームを符号化するために使用される符号化／予測モードを示し得る。
【００７４】
[0072]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、適用可能なとき、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダまたはデコーダ回路のいずれかとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ／デコーダ（コーデック）の一部として統合され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０を含むデバイスは、集積回路、マイクロプロセッサ、および／またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【００７５】
[0073]このようにして、ビデオエンコーダ２０およびビデオデコーダ３０は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを行うように構成されたビデオコーダの例を表す。
【００７６】
[0074]図２は、ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
【００７７】
[0075]図２に示すように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図２の例では、ビデオエンコーダ２０は、モード選択ユニット４０と、参照フレームメモリ６４と、加算器５０と、変換処理ユニット５２と、量子化ユニット５４と、エントロピーエンコーディングユニット５６とを含む。モード選択ユニット４０は、今度は、動き補償ユニット４４と、動き推定ユニット４２と、イントラ予測ユニット４６と、パーティションユニット４８とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理することになる。また、デブロッキングフィルタに加えて追加のフィルタ（ループ内またはループ後）が使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、（ループ内フィルタとして）加算器５０の出力をフィルタ処理し得る。
【００７８】
[0076]符号化プロセス中に、ビデオエンコーダ２０は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間的予測を行うために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して、受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット４６は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ２０は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【００７９】
[0077]その上、パーティションユニット４８は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット４８は、初めにフレームまたはスライスをＬＣＵに区分し、レートひずみ分析（たとえば、レートひずみ最適化）に基づいてＬＣＵの各々をサブＣＵに区分し得る。モード選択ユニット４０は、ＬＣＵをサブＣＵに区分することを示す４分木データ構造をさらに生成し得る。４分木のリーフノードＣＵは、１つまたは複数のＰＵおよび１つまたは複数のＴＵを含み得る。
【００８０】
[0078]モード選択ユニット４０は、たとえば、誤差結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの１つを選択することができ、残差ブロックデータを生成するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器５０に与え、かつ参照フレームとして使用するための符号化されたブロックを復元するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器６２に与える。モード選択ユニット４０はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット５６に与える。
【００８１】
[0079]動き推定ユニット４２および動き補償ユニット４４は、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット４２によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム（または他のコード化ユニット）内でコーディングされている現在のブロックに対する参照フレーム（または他のコード化ユニット）内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。予測ブロックは、絶対値差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ２０は、参照フレームメモリ６４に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ２０は、参照ピクチャの１／４ピクセル位置、１／８ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【００８２】
[0080]動き推定ユニット４２は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得、それらの参照ピクチャリストの各々は、参照フレームメモリ６４に記憶された１つまたは複数の参照ピクチャを識別する。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。
【００８３】
[0081]動き補償ユニット４４によって実行される動き補償は、動き推定ユニット４２によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット４２および動き補償ユニット４４は機能的に統合され得る。現在のビデオブロックのＰＵについての動きベクトルを受信すると、動き補償ユニット４４は、動きベクトルが参照ピクチャリストのうちの１つにおいて指す予測ブロックの位置を特定し得る。加算器５０は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット４２はルーマ成分に対して動き推定を実行し、かつ動き補償ユニット４４は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット４０はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ３０が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【００８４】
[0082]イントラ予測ユニット４６は、上記で説明したように、動き推定ユニット４２および動き補償ユニット４４によって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット４６は、現在のブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測ユニット４６は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット４６（または、いくつかの例では、モード選択ユニット４０）は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
【００８５】
[0083]たとえば、イントラ予測ユニット４６は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ（または誤差）の量、ならびに符号化ブロックを生成するために使用されるビットレート（すなわち、ビット数）を判断する。イントラ予測ユニット４６は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
【００８６】
[0084]ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット４６は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット５６に提供し得る。エントロピー符号化ユニット５６は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ２０は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル（コードワードマッピングテーブルとも呼ばれる）と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
【００８７】
[0085]ビデオエンコーダ２０は、コーディングされている元のビデオブロックから、モード選択ユニット４０からの予測データを減算することによって残差ビデオブロックを形成する。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット５２は、ＤＣＴと概念的に同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット５２は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット５４は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット５６が走査を実行し得る。
【００８８】
[0086]量子化の後、エントロピー符号化ユニット５６は、量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット５６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングの場合、コンテキストは、隣接するブロックに基づき得る。エントロピーコーディングユニット５６によるエントロピーコーディングの後、符号化されたビットストリームは、別のデバイス（たとえば、ビデオデコーダ３０）に送信されるか、または後で送信するかまたは取り出すためにアーカイブされ得る。
【００８９】
[0087]特に、エントロピー符号化ユニット５６は、量子化ユニット５４から、ＴＵに関連する量子化変換係数のセットを受信し得る。次に、エントロピー符号化ユニット５６は、量子化変換係数のセットを走査し、走査された各係数が有意係数を含むかどうか、すなわち、係数が０値を有するのかまたは０でない値を有するのかを決定し得る。非ゼロ値は、特定の量子化変換係数が「有意」係数であることを示し得る。エントロピー符号化ユニット５６が有意係数を検出する場合、エントロピー符号化ユニット５６は、係数に関連する特定の値（たとえば、１、２など）を表すデータをコーディングし得る。そのようなデータは、たとえば、係数の符号の指示、係数の絶対値が１よりも大きいかどうか、および係数の絶対値が１よりも大きいとき、係数の絶対値が２よりも大きいかどうかを含み得る。さらに、有意係数が２よりも大きい絶対値を有する場合、エントロピー符号化ユニット５６は、係数の絶対値から２を減算し、それによって、係数が２を超える値を取得し、この値をコーディングし得る。
【００９０】
[0088]量子化ユニット５４から受信した量子化変換係数の全セットを走査することによって、エントロピー符号化ユニット５６はまた、特定のＴＵに関連する（すなわち、走査順序で）最後有意係数を検出および識別し得る。さらに、エントロピー符号化ユニット５６は、対応するＴＵ内での最後有意係数の位置を決定し得る。たとえば、エントロピー符号化ユニット５６は、ＴＵ内での最後有意係数の水平座標（ｘ座標）および垂直座標（ｙ座標）を識別し得る。
【００９１】
[0089]さらに、エントロピー符号化ユニット５６は、２進値をまだ有していないシンタックス要素を２値化するように構成され得る。すなわち、シンタックス要素が２進列によってまだ表されていないとき、エントロピー符号化ユニット５６は、シンタックス要素の値を表す２進列を決定し得る。２進列または２値化値は、概して、ビットのアレイに対応し、その各々が「０」または「１」の値を有し得る。アレイは０インデクシングされ得、したがって、アレイの順序第１のビットが位置０で生じ、アレイの順序第２のビットが位置１で生じ、以下同様である。したがって、エントロピー符号化ユニット５６は、Ｎビットの長さを有する２値化値Ｂ［Ｎ］を形成し、各ビットは、それぞれの位置Ｂ［ｉ］で生じ、ここで、０≦ｉ≦Ｎ−１である。
【００９２】
[0090]次に、エントロピー符号化ユニット５６は、最後有意係数のｘ座標およびｙ座標を表すデータをエントロピー符号化し得る。たとえば、エントロピー符号化ユニット５６は、全体として、ＨＥＶＣでは、最後有意係数のｘ座標およびｙ座標を走査順序で表す、シンタックス要素ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｘ＿ｐｒｅｆｉｘ、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｙ＿ｐｒｅｆｉｘ、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｘ＿ｓｕｆｆｉｘおよび／またはｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｙ＿ｓｕｆｆｉｘをエントロピー符号化するように構成され得る。エントロピー符号化ユニット５６は、ｆ（ｉ）によって示される関数を使用して最後有意係数の座標を表すデータをエントロピー符号化するために、本開示の１つまたは複数の技法を実装し得る。たとえば、エントロピー符号化ユニット５６は、対応するシンタックス要素を表す値のビンの１つまたは複数の関数を使用して決定されたコンテキストを使用して、量子化ユニット５４から受信した量子化変換係数のためのシンタックス要素および／またはＴＵの最後有意係数を表す値（たとえば、上記で説明したシンタックス要素）など、様々なシンタックス要素をエントロピー符号化し得る。
【００９３】
[0091]たとえば、「Ｃｔｘ＿ｉ」は、表１〜表２および表８〜表９に関して上記で説明したように、最後有意係数の位置を表す２値化値中のｉ番目のビンを符号化するためにエントロピー符号化ユニット５６によって使用されるコンテキストのインデックスを示し得る。ｃｔｘ＿ｉによってインデックス付けされるコンテキストは、概して、優勢シンボル（たとえば、「１」または「０」）ならびに優勢シンボルの確率を示す。エントロピー符号化ユニット５６は、式Ｃｔｘ＿ｉ＝ｆ（ｉ）を使用してＣｔｘ＿ｉの値を導出し得、ここで、ｆ（ｉ）は、エントロピー符号化ユニット５６にとってアクセス可能な定義済関数であるか、またはユーザによって選択される関数であり得る。さらに、エントロピー符号化ユニット５６は、ビデオデコーダ３０が、関数ｆ（ｉ）についてのデータを復号し、ｆ（ｉ）を使用してＣｔｘ＿ｉの値を取得し得るように、ｆ（ｉ）を表すデータを符号化し得る。このようにして、エントロピー符号化ユニット５６は、ビンインデックス、すなわち、シンタックス要素を表す２値化値（すなわち、２進列）中のビンの位置の関数を使用して２値化シンタックス要素の特定のビンのためのコンテキストを決定することができる。
【００９４】
[0092]いくつかの例では、エントロピー符号化ユニット５６は、上記で説明した式（５）〜（８）を使用して最後有意係数位置を表すデータのビンをコーディングするためのコンテキストを決定するように構成される。すなわち、エントロピー符号化ユニット５６は、ｆ（ｉ）をＣｔｘ＿ｉｄｘ＝ｏｆｆｓｅｔ＋（ｉ＞＞ｋ）のように計算し得る。さらに、エントロピー符号化ユニット５６は、以下の式を使用してｆ（ｉ）中で使用されるオフセット値およびｋの値を導出し得る。
【数１４】
0006042526.tif 000025
【００９５】
[0093]他の実装形態では、エントロピー符号化ユニット５６は、ＴＵの最後有意係数の位置を表すデータのビンをエントロピー符号化するためのコンテキストを決定するときに、式（５）〜（８）に加えて、またはその代替として、例示的な関数（１）〜（４）および関数（９）〜（１２）のうちの１つまたは複数を使用し得る。このようにして、ビデオエンコーダ２０およびエントロピー符号化ユニット５６などのそれの構成要素は、１つまたは複数の関数を使用して最後有意係数を表すデータを符号化するために本開示の技法を実装し得る。そのような関数は、テーブルよりもビデオエンコーダ２０およびビデオデコーダ３０のメモリ中により効率的に記憶され得る。したがって、本開示の技法は、たとえば、通常ならばテーブルに専用となるであろうメモリを他のデータに割り振ることによって、またはビデオエンコーダまたはビデオデコーダのために必要とされるメモリの量を減少させることによって、より効率的にメモリを利用するビデオエンコーダおよびビデオデコーダを実現し得る。
【００９６】
[0094]逆量子化ユニット５８および逆変換ユニット６０は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを参照フレームメモリ６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、参照フレームメモリ６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【００９７】
[0095]このようにして、図２のビデオエンコーダ２０は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを行うように構成されたビデオエンコーダの一例を表す。さらに、ビデオエンコーダ２０はまた、ビンのインデックスを値ｋ右シフトし、オフセット値に右シフト値を加算することによって関数がコンテキストのためのコンテキストインデックスを生成するビデオエンコーダの一例を表し、オフセット値は、式ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）に従って決定され、値ｋは、式ｋ＝（ｎ＋３）＞＞２に従って決定され、値ｎは、式ｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）に従って決定される。
【００９８】
[0096]図３は、ビデオデータのブロックの最後有意係数を表す値をコーディングするために使用すべきコンテキストを決定するための技法を実装し得るビデオデコーダ３０の一例を示すブロック図である。図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２と、イントラ予測ユニット７４と、逆量子化ユニット７６と、逆変換ユニット７８と、参照フレームメモリ８２と、加算器８０とを含む。ビデオデコーダ３０は、いくつかの例では、ビデオエンコーダ２０（図２）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット７４は、エントロピー復号ユニット７０から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【００９９】
[0097]復号プロセス中に、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ３０のエントロピー復号ユニット７０は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット７０は、動きベクトルと他の予測シンタックス要素とを動き補償ユニット７２に転送する。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。
【０１００】
[0098]エントロピー復号ユニット７０は、符号化ビデオビットストリームをエントロピー復号し、エントロピー復号された量子化係数をブロックに走査順序でポピュレートすることによって量子化係数のブロック（たとえば、ＴＵ）を生成し得る。たとえば、エントロピー復号ユニット７０は、生成されるべきブロック中の有意係数のロケーションを決定するために、符号化ビデオビットストリームのシンタックス要素をエントロピー復号し得る。ブロックのロケーションが有意係数でない係数に対応する場合、エントロピー復号ユニット７０は、ブロック中のそのロケーションにおける係数の値を０に設定し得る。一方、エントロピー復号ユニット７０は、特定の量子化係数が有意係数であると決定する場合、エントロピー復号ユニット７０は、ビデオエンコーダ２０によって符号化ビデオビットストリーム中に与えられたデータに基づいて有意係数の値を設定し得る。
【０１０１】
[0099]さらに、以下で説明するように、エントロピー復号ユニット７０は、最後有意係数のｘ座標およびｙ座標を示すシンタックス要素に基づいてブロック中の最後有意係数の位置を決定し得る。本開示の技法によれば、以下でより詳細に説明するように、エントロピー復号ユニット７０は、最後有意係数のｘ座標およびｙ座標を表す値のビンをエントロピー復号するためのコンテキストを決定するために関数を使用し得る。ビットストリームのデータが後続のシンタックス要素、すなわち、再生されているブロックのデータを表さないシンタックス要素を表すとき、ビデオデコーダ３０は、決定するために最後有意係数の位置の指示を使用し得る。
【０１０２】
[0100]エントロピー復号ユニット７０は、符号化ビデオビットストリーム中で与えられるデータに基づいて、各有意係数の符号と各有意係数のレベル値を表すデータとを決定し得る。たとえば、エントロピー復号ユニット７０は、符号を表すシンタックス要素、たとえば、ｃｏｅｆｆ＿ｓｉｇｎ＿ｆｌａｇをエントロピー復号することを通して有意係数の符号を決定し得る。さらに、エントロピー復号ユニット７０は、各有意係数のレベル値を表す１つまたは複数のシンタックス要素、たとえば、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１＿ｆｌａｇ、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２＿ｆｌａｇ、およびｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇを復号し得る。概して、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１＿ｆｌａｇは、有意係数の絶対値が１よりも大きいかどうかを示し、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２＿ｆｌａｇは、有意係数の絶対値が２よりも大きいかどうかを示し、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇは、２を減じた有意係数の絶対値を示す。
【０１０３】
[0101]エントロピー復号ユニット７０はまた、再生されているブロック（たとえば、ＴＵ）の最後有意係数の位置を決定し得る。より詳細には、エントロピー復号ユニット７０は、符号化ビデオビットストリームに関連するＴＵ内での最後有意係数の位置を（たとえば、ｘ座標およびｙ座標を表すコード化シンタックス要素に基づいて）識別し得る。最後有意係数の位置を識別することに基づいて、エントロピー復号ユニット７０は、走査順序にあるＴＵ中の残りの係数の値を０に設定し得る。すなわち、ビデオデコーダ３０は、最後有意係数以外に係数のためのいかなるシンタックス要素も受信する必要はなく、さらに、これらの係数に対して０の値を推論し得る。
【０１０４】
[0102]さらに、エントロピー復号ユニット７０は、概してｆ（ｉ）によって示される関数、ただし、ｉは２値化値中のビンの位置に対応する、を使用して最後有意係数の位置のｘ座標およびｙ座標を表す２値化値のビンを復号するために本開示の１つまたは複数の技法を実装し得る。いくつかの例では、エントロピー復号ユニット７０は、ビンの値、たとえば、「０」または「１」を再生するために、決定されたコンテキスト使用して符号化データを復号し得る。最後有意係数位置に対応するものとして説明したが、本開示の技法は、他のシンタックス要素をエントロピー復号することにも適用され得る。たとえば、エントロピー復号ユニット７０は、対応するシンタックス要素を表す値のビンインデックスの１つまたは複数の関数を使用して決定されるコンテキストを使用して、動き補償ユニット７２とイントラ予測ユニット７４の一方または両方に送られる量子化係数のためのシンタックス要素、量子化変換係数を表すシンタックス要素、および／または符号化ビデオビットストリームに関連するＴＵの最後有意係数を表す値など、様々なシンタックス要素をエントロピー復号し得る。
【０１０５】
[0103]たとえば、「Ｃｔｘ＿ｉ」は、表１〜表２および表８〜表９に関して上記で説明したように、最後有意係数の位置を表す２値化値中のｉ番目のビンを復号するためにエントロピー復号ユニット７０によって使用されるコンテキストのインデックスを示し得る。この例では、エントロピー復号ユニット７０は、式Ｃｔｘ＿ｉ＝ｆ（ｉ）を使用してＣｔｘ＿ｉの値を導出し得、ここで、ｆ（ｉ）は、（たとえば、ソースデバイス１２によって通信される）エントロピー復号ユニット７０にとってアクセス可能な定義済関数であるか、またはユーザによって選択される関数であり得る。さらに、エントロピー復号ユニット７０は、Ｃｔｘ＿ｉの値を取得するためにｆ（ｉ）を表すデータを使用するために、ｆ（ｉ）を表すデータを復号し得る。
【０１０６】
[0104]いくつかの例では、エントロピー復号ユニット７０は、上記で説明した式（５）〜（８）を使用して最後有意係数位置を表すデータのビンを復号するためのコンテキストを決定するように構成される。すなわち、エントロピー復号ユニット７０は、ｆ（ｉ）をＣｔｘ＿ｉｄｘ＝ｏｆｆｓｅｔ＋（ｉ＞＞ｋ）のように計算し得る。さらに、エントロピー復号ユニット７０は、以下の式を使用してｆ（ｉ）中で使用されるオフセット値およびｋの値を導出し得る。
【数１５】
0006042526.tif 000026
【０１０７】
[0105]他の実装形態では、エントロピー復号ユニット７０は、符号化ビデオビットストリームによって表されるＴＵの最後有意係数を復号する際に、例示的な式（１）〜（４）および（９）〜（１２）のうちの１つまたは複数にｆ（ｉ）を設定し得る。このようにして、ビデオデコーダ３０およびエントロピー復号ユニット７０などのそれの構成要素は、１つまたは複数の関数を使用して最後有意係数を復号するために本開示の技法を実装し得る。そのような関数は、テーブルよりもビデオエンコーダ２０およびビデオデコーダ３０のメモリ中により効率的に記憶され得る。したがって、本開示の技法は、たとえば、通常ならばテーブルに専用となるであろうメモリを他のデータに割り振ることによって、またはビデオエンコーダまたはビデオデコーダのために必要とされるメモリの量を減少させることによって、より効率的にメモリを利用するビデオエンコーダおよびビデオデコーダを実現し得る。
【０１０８】
[0106]ビデオスライスがイントラコード化（Ｉ）スライスとしてコーディングされるとき、イントラ予測ユニット７４は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化（すなわち、Ｂ、ＰまたはＧＰＢ）スライスとしてコーディングされるとき、動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、参照フレームメモリ８２に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト０およびリスト１を構成し得る。
【０１０９】
[0107]動き補償ユニット７２は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を判断し、その予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット７２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（たとえば、イントラまたはインター予測）と、インター予測スライスタイプ（たとえば、Ｂスライス、Ｐスライス、またはＧＰＢスライス）と、スライスの参照ピクチャリストのうちの１つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを判断するために、受信されたシンタックス要素のいくつかを使用する。
【０１１０】
[0108]動き補償ユニット７２はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット７２は、受信されたシンタックス要素からビデオエンコーダ２０によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
【０１１１】
[0109]逆量子化ユニット７６は、ビットストリーム中で与えられ、エントロピー復号ユニット７０によって復号された量子化変換係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を判断するための、ビデオスライス中のビデオブロックごとにビデオデコーダ３０によって計算される量子化パラメータＱＰYの使用を含み得る。
【０１１２】
[0110]逆変換ユニット７８は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【０１１３】
[0111]動き補償ユニット７２が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ３０は、逆変換ユニット７８からの残差ブロックを動き補償ユニット７２によって生成された対応する予測ブロックに加算することによって、復号されたビデオブロックを形成する。加算器８０は、この加算演算を実行する１つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、他のループフィルタも（コーディングループ中またはコーディングループ後のいずれかで）使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ８２に記憶される。参照フレームメモリ８２はまた、図１のディスプレイデバイス３２などのディスプレイデバイス上での後の表示のための、復号されたビデオを記憶する。
【０１１４】
[0112]このようにして、図３のビデオデコーダ３０は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを行うように構成されたビデオデコーダの一例を表す。さらに、ビデオデコーダ３０はまた、ビンのインデックスを値ｋ右シフトし、オフセット値に右シフト値を加算することによって関数がコンテキストのためのコンテキストインデックスを生成するビデオデコーダの一例を表し、オフセット値は、式ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）に従って決定され、値ｋは、式ｋ＝（ｎ＋３）＞＞２に従って決定され、値ｎは、式ｎ＝（ｌｏｇ２（ｂｌｏｃｋ＿ｓｉｚｅ）−２）に従って決定される。
【０１１５】
[0113]図４は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは、現在のＣＵまたは現在のＣＵの一部分を備え得る。ビデオエンコーダ２０（図１および図２）に関して説明されるが、他のデバイスが図４の方法と同様の方法を実行するように構成され得ることを理解されたい。さらに、図４の例示的な方法は、これらの技法を使用してビデオブロックの最後有意係数の位置に関係するシンタックス要素をコーディングすることについて詳細に説明するが、これらの技法が他のシンタックス要素をコーディングすることにも適用され得ることを理解されたい。
【０１１６】
[0114]この例では、ビデオエンコーダ２０は、初めに、現在のブロックを予測する（１５０）。たとえば、ビデオエンコーダ２０は、現在のブロックのための１つまたは複数の予測ユニット（ＰＵ）を計算し得る。ビデオエンコーダ２０は、次いで、たとえば、変換ユニット（ＴＵ）を生成するために、現在のブロックのための残差ブロックを計算し得る（１５２）。残差ブロックを計算するために、ビデオエンコーダ２０は、元のコーディングされていないブロックと現在のブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ２０は、次いで、残差ブロックの係数を変換し、量子化し得る（１５４）。次に、ビデオエンコーダ２０は、残差ブロックの量子化変換係数を走査し得る（１５６）。走査中に、または走査の後に、ビデオエンコーダ２０は、係数をエントロピー符号化し得る（１５８）。たとえば、ビデオエンコーダ２０は、ＣＡＶＬＣまたはＣＡＢＡＣを使用して係数を符号化し得る。
【０１１７】
[0115]ビデオエンコーダ２０はまた、ＴＵ中の最後有意係数の位置の値を決定し得る（１６０）。その値は、たとえば、上記の表１に関して説明したように、たとえば、最後有意係数の位置を表す２値化値を備え得る。その値のビンの最大数はＣＡＢＡＣを使用してコーディングされ得、一方、最大数を超える他のビンは、やはり表１に関して説明したように、バイパスコーディングされ得る。特に、本開示の技法によれば、ビデオエンコーダ２０は、関数を使用してその値のビンのためのコンテキストを決定し得る（１６２）。上記で説明したように、コンテキストは、特定の値、たとえば、「０」または「１」を有するビンの確率を記述し得る。関数は、上記で説明した関数（１）〜（１２）のうちの１つまたは概念的に同様の関数に対応し得る。
【０１１８】
[0116]関数（５）〜（８）の例に関して、ビデオエンコーダ２０は、式ｏｆｆｓｅｔ＋（ｉ＞＞ｋ）、ただし、ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）、ｋ＝（ｎ＋３）＞＞２、およびｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）を使用して、最後有意係数の位置を表す２値化値の位置ｉにおけるビンのためのコンテキストｃｔｘ＿ｉｄｘを決定し得る。すなわち、ビデオエンコーダ２０は、エントロピー符号化されるべき各ビンにわたって反復し、上記に示した関数を実行して、現在反復のビンをコーディングするためのコンテキストを決定し得る。ビデオエンコーダ２０は、次いで、決定されたコンテキストを使用してその値のビン（たとえば、ビンの最大数を上回っていないビン）を符号化し得る（１６４）。同様に、ビデオエンコーダ２０は、その値の任意の残りのビンをバイパスコーディングし得る（１６６）。
【０１１９】
[0117]このようにして、図４の方法は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを含む方法の一例を表す。さらに、関数は、ビンのインデックスを値ｋ右シフトし、オフセット値に右シフト値を加算することによってコンテキストのためのコンテキストインデックスを生成し得、オフセット値は、式ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）に従って決定され、値ｋは、式ｋ＝（ｎ＋３）＞＞２に従って決定され、値ｎは、式ｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）に従って決定される。
【０１２０】
[0118]図５は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは、現在のＣＵまたは現在のＣＵの一部分を備え得る。ビデオデコーダ３０（図１および図３）に関して説明されるが、他のデバイスが図５の方法と同様の方法を実行するように構成され得ることを理解されたい。さらに、図４の例示的な方法は、これらの技法を使用してビデオブロックの最後有意係数の位置に関係するシンタックス要素をコーディングすることについて詳細に説明するが、これらの技法が他のシンタックス要素をコーディングすることにも適用され得ることを理解されたい。
【０１２１】
[0119]ビデオデコーダ３０は、現在のブロックのための予測ブロックを計算するために、たとえば、イントラまたはインター予測モードを使用して現在のブロックを予測し得る（２００）。ビデオデコーダ３０はまた、現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータなど、現在のブロックについてのエントロピーコーディングされたデータを受信し得る（２０２）。ビデオデコーダ３０は、残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る（２０４）。
【０１２２】
[0120]本開示の技法によれば、ビデオデコーダ３０は、ＴＵ中の最後有意係数の位置を示す符号化値を受信し得る（２０６）。その値のビンの最大数はＣＡＢＡＣを使用して復号され得、一方、最大数を超える他のビンは、表１に関して説明したように、バイパス復号され得る。特に、本開示の技法によれば、ビデオデコーダ３０は、関数を使用してその値のビンのためのコンテキストを決定し得る（２０８）。上記で説明したように、コンテキストは、特定の値、たとえば、「０」または「１」を有するビンの確率を記述し得る。関数は、上記で説明した関数（１）〜（１２）のうちの１つまたは概念的に同様の関数に対応し得る。
【０１２３】
[0121]関数（５）〜（８）の例に関して、ビデオデコーダ３０は、復号されている２値化値の位置ｉにおけるビンのためのコンテキストｃｔｘ＿ｉｄｘを決定し得、ただし、２値化値は、式ｏｆｆｓｅｔ＋（ｉ＞＞ｋ）、ただし、ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）、ｋ＝（ｎ＋３）＞＞２、およびｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）を使用して、最後有意係数の位置を表す。すなわち、ビデオデコーダ３０は、エントロピー復号されるべき各ビンを反復して復号し、上記に示した関数を実行して、現在反復のビンをコーディングするためのコンテキストを決定し得る。ビデオデコーダ３０は、次いで、決定されたコンテキストを使用してその値のビン（たとえば、ビンの最大数を上回っていないビン）を復号し得る（２１０）。たとえば、ビデオデコーダ３０は、その値のビンを再生するか、またはさもなければ取得するために決定されたコンテキストを使用してビデオエンコーダ２０から受信した符号化データを復号し得る。同様に、ビデオデコーダ３０は、その値の残りのビンをバイパス復号し得る（２１２）。
【０１２４】
[0122]ビデオデコーダ３０は、次いで、量子化変換係数のブロックを作成するために、最後有意係数の位置に基づいて再生係数を逆走査し得る（２１４）。すなわち、ビデオデコーダ３０は、最後有意係数の位置において開始し、概してエンコーダによって使用される走査順序に対応する走査順序で続けてＴＵ中の復号係数を配置し得る。ビデオデコーダ３０は、次いで、残差ブロックを生成するために係数を逆量子化し、逆変換し得る（２１６）。ビデオデコーダ３０は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在のブロックを復号し得る（２１８）。
【０１２５】
[0123]このようにして、図５の方法は、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値のビンをエントロピーコーディングするためのコンテキストを決定することと、決定されたコンテキストを使用してビンをコーディングすることとを含む方法の一例を表す。さらに、関数は、ビンのインデックスを値ｋ右シフトし、オフセット値に右シフト値を加算することによってコンテキストのためのコンテキストインデックスを生成し得、オフセット値は、式ｏｆｆｓｅｔ＝３＊ｎ＋（（ｎ＋１）＞＞２）に従って決定され、値ｋは、式ｋ＝（ｎ＋３）＞＞２に従って決定され、値ｎは、式ｎ＝（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ）−２）に従って決定される。
【０１２６】
[0124]例によっては、本明細書で説明された技法のうちいずれかの、いくつかの行為またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る（たとえば、すべての説明した作用またはイベントが、本技法の実施のために必要であるとは限らない）ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して、同時に実行され得る。
【０１２７】
[0125]１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つもしくは複数のコンピュータまたは１つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１２８】
[0126]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１２９】
[0127]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路などの１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび／もしくはソフトウェアモジュール内に与えられ得、または複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素において十分に実装され得る。
【０１３０】
[0128]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０１３１】
[0129]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータをコーディングする方法であって、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピーコーディングするためのコンテキストを決定することと、
前記決定されたコンテキストを使用して前記ビンをコーディングすることと
を備える方法。
［Ｃ２］
前記関数が、前記ビンの前記インデックスを値ｋ、右シフトし、オフセット値に前記右シフト値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数１６】
0006042526.tif 000027
前記値ｋが次式に従って決定され、
【数１７】
0006042526.tif 000028
前記値ｎが次式に従って決定される、
【数１８】
0006042526.tif 000029
Ｃ１に記載の方法。
［Ｃ３］
前記コンテキストを決定することが前記関数を実行することを備える、Ｃ１に記載の方法。
［Ｃ４］
前記関数が線形関数を備える、Ｃ１に記載の方法。
［Ｃ５］
前記関数が非線形関数を備える、Ｃ１に記載の方法。
［Ｃ６］
前記関数が、前記ビンの前記インデックスを１つ右シフトすることによって前記コンテキストのためのコンテキストインデックスを生成する、Ｃ１に記載の方法。
［Ｃ７］
前記関数が、前記ビンの前記インデックスと前記ブロックのサイズを示す値との両方の関数を備える、Ｃ１に記載の方法。
［Ｃ８］
前記ブロックの前記サイズを示す前記値がｂｌｏｃｋ＿ｓｉｚｅを備え、前記関数が、前記ビンの前記インデックスを（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ−２））に対応する値、右シフトすることによって前記コンテキストのためのコンテキストインデックスを生成する、Ｃ７に記載の方法。
［Ｃ９］
前記関数が、前記ビンの前記インデックスよりも１つ大きい値である値を１つ右シフトし、ブロックサイズオフセット値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、前記ブロックの前記サイズを示す前記値がｂｌｏｃｋ＿ｓｉｚｅを備え、ブロックサイズオフセット値が式［（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ−２）＊（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ＋１）／２））］に従って決定される、Ｃ７に記載の方法。
［Ｃ１０］
前記関数が、前記ビンの前記インデックスを１つ右シフトし、ブロックサイズオフセット値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、前記ブロックの前記サイズを示す前記値がｂｌｏｃｋ＿ｓｉｚｅを備え、ブロックサイズオフセット値が式［（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ−２）＊（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ＋１）／２））］に従って決定される、Ｃ７に記載の方法。
［Ｃ１１］
前記関数は、
前記ビンが、前記ブロックの前記最後有意係数を示す前記値の最後のビンであるとき、前記コンテキストインデックスを１０に等しくなるように設定することと、
前記ビンが、前記ブロックの前記最後有意係数を示す前記値の最後のビンでないとき、前記ビンの前記インデックスを１つ右シフトし、ブロックサイズオフセット値を加算することによって、前記コンテキストインデックスを決定することであって、前記ブロックの前記サイズを示す前記値がｂｌｏｃｋ＿ｓｉｚｅを備え、ブロックサイズオフセット値が式［（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ−２）＊（ｌｏｇ2（ｂｌｏｃｋ＿ｓｉｚｅ−１）／２））］に従って決定される、決定することと
を行うことによって前記コンテキストのためのコンテキストインデックスを生成する、Ｃ７に記載の方法。
［Ｃ１２］
前記ブロックの前記サイズを示す前記値がｂｌｏｃｋ＿ｓｉｚｅを備え、前記関数が、前記ビンの前記インデックスを値ｋ、右シフトし、オフセット値に前記右シフト値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
値ｎが次式に従って決定され、
【数１９】
0006042526.tif 000030
前記値ｋが次式に従って決定され、
【数２０】
0006042526.tif 000031
前記ブロックがルミナンスブロックを備えるとき、前記オフセット値が次式に従って決定され、
【数２１】
0006042526.tif 000032
前記ブロックがクロミナンスブロックを備えるとき、前記オフセット値が次式に従って決定される
【数２２】
0006042526.tif 000033
Ｃ７に記載の方法。
［Ｃ１３］
前記関数が、前記ブロックの区分の深度と、前記ブロックを含むピクチャのサイズと、前記ブロックに対応する動き補償ブロックのサイズと、前記ブロックを含む前記ピクチャのためのフレームタイプと、前記ブロックに対応する前記動き補償ブロックのためのインター予測方向と、前記ブロックに対応する前記動き補償ブロックのための動きベクトルの振幅と、前記ブロックに対応する前記動き補償ブロックのための前記動きベクトルの動きベクトル差分値の振幅と、前記ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのかとのうちの少なくとも１つに基づいて変化する、Ｃ１に記載の方法。
［Ｃ１４］
ユーザから前記関数を受信することをさらに備える、Ｃ１に記載の方法。
［Ｃ１５］
前記関数を定義するシンタックスデータを受信することをさらに備える、Ｃ１に記載の方法。
［Ｃ１６］
前記関数が、引数として前記ビンの前記インデックスを含む、Ｃ１に記載の方法。
［Ｃ１７］
前記ビンをコーディングすることが、前記ビンの値を再生するために前記決定されたコンテキストを使用して符号化データをエントロピー復号することを備える、Ｃ１に記載の方法。
［Ｃ１８］
前記ビンをコーディングすることが、前記決定されたコンテキストを使用して前記ビンをエントロピー符号化することを備える、Ｃ１に記載の方法。
［Ｃ１９］
ビデオデータをコーディングするためのデバイスであって、ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピーコーディングするためのコンテキストを決定することと、前記決定されたコンテキストを使用して前記ビンをコーディングすることとを行うように構成されたビデオコーダを備えるデバイス。
［Ｃ２０］
前記関数が、前記ビンの前記インデックスを値ｋ、右シフトし、オフセット値に前記右シフト値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数２３】
0006042526.tif 000034
前記値ｋが次式に従って決定され、
【数２４】
0006042526.tif 000035
前記値ｎが次式に従って決定される、
【数２５】
0006042526.tif 000036
Ｃ１９に記載のデバイス。
［Ｃ２１］
前記ビデオコーダが、前記関数を実行することに少なくとも部分的によって前記コンテキストを決定するように構成された、Ｃ１９に記載のデバイス。
［Ｃ２２］
前記関数が、前記ビンの前記インデックスと前記ブロックのサイズを示す値との両方の関数を備える、Ｃ１９に記載のデバイス。
［Ｃ２３］
前記関数が、前記ブロックの区分の深度と、前記ブロックを含むピクチャのサイズと、前記ブロックに対応する動き補償ブロックのサイズと、前記ブロックを含む前記ピクチャのためのフレームタイプと、前記ブロックに対応する前記動き補償ブロックのためのインター予測方向と、前記ブロックに対応する前記動き補償ブロックのための動きベクトルの振幅と、前記ブロックに対応する前記動き補償ブロックのための前記動きベクトルの動きベクトル差分値の振幅と、前記ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのかとのうちの少なくとも１つに基づいて変化する、Ｃ１９に記載のデバイス。
［Ｃ２４］
前記ビデオコーダが、前記関数を定義するシンタックスデータを受信することを行うようにさらに構成された、Ｃ２０に記載のデバイス。
［Ｃ２５］
前記ビデオコーダが、前記ビンの値を再生するために前記決定されたコンテキストを使用して符号化データをエントロピー復号することに少なくとも部分的によって前記ビンをコーディングするように構成された、Ｃ１９に記載のデバイス。
［Ｃ２６］
前記ビデオコーダが、前記決定されたコンテキストを使用して前記ビンをエントロピー符号化することに少なくとも部分的によって前記ビンをコーディングするように構成された、Ｃ１９に記載のデバイス。
［Ｃ２７］
前記デバイスが、
集積回路と、
マイクロプロセッサと、
前記ビデオコーダを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、Ｃ１９に記載のデバイス。
［Ｃ２８］
ビデオデータをコーディングするためのデバイスであって、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピーコーディングするためのコンテキストを決定するための手段と、
前記決定されたコンテキストを使用して前記ビンをコーディングするための手段と
を備えるデバイス。
［Ｃ２９］
前記関数が、前記ビンの前記インデックスを値ｋ、右シフトし、オフセット値に前記右シフト値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数２６】
0006042526.tif 000037
前記値ｋが次式に従って決定され、
【数２７】
0006042526.tif 000038
前記値ｎが次式に従って決定される、
【数２８】
0006042526.tif 000039
Ｃ２８に記載のデバイス。
［Ｃ３０］
前記コンテキストを決定するための前記手段が前記関数を実行するための手段を備える、Ｃ２８に記載のデバイス。
［Ｃ３１］
前記関数が、前記ビンの前記インデックスと前記ブロックのサイズを示す値との両方の関数を備える、Ｃ２８に記載のデバイス。
［Ｃ３２］
前記関数が、前記ブロックの区分の深度と、前記ブロックを含むピクチャのサイズと、前記ブロックに対応する動き補償ブロックのサイズと、前記ブロックを含む前記ピクチャのためのフレームタイプと、前記ブロックに対応する前記動き補償ブロックのためのインター予測方向と、前記ブロックに対応する前記動き補償ブロックのための動きベクトルの振幅と、前記ブロックに対応する前記動き補償ブロックのための前記動きベクトルの動きベクトル差分値の振幅と、前記ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのかとのうちの少なくとも１つに基づいて変化する、Ｃ２８に記載のデバイス。
［Ｃ３３］
前記関数を定義するシンタックスデータを受信するための手段をさらに備える、Ｃ２８に記載のデバイス。
［Ｃ３４］
実行されたとき、コンピューティングデバイスのプログラマブルプロセッサに、
ビンのインデックスの関数を使用してビデオデータのブロックの最後有意係数を示す値の前記ビンをエントロピーコーディングするためのコンテキストを決定することと、
前記決定されたコンテキストを使用して前記ビンをコーディングすることと
を行わせる命令で符号化されたコンピュータ可読記憶媒体。
［Ｃ３５］
前記関数が、前記ビンの前記インデックスを値ｋ、右シフトし、オフセット値に前記右シフト値を加算することによって、前記コンテキストのためのコンテキストインデックスを生成し、
前記オフセット値が次式に従って決定され、
【数２９】
0006042526.tif 000040
前記値ｋが次式に従って決定され、
【数３０】
0006042526.tif 000041
前記値ｎが次式に従って決定される、
【数３１】
0006042526.tif 000042
Ｃ３４に記載のコンピュータ可読記憶媒体。
［Ｃ３６］
前記プログラマブルプロセッサに前記コンテキストを決定させる前記命令が、前記関数を実行することを前記プログラマブルプロセッサに行わせる命令をさらに含む、Ｃ３４に記載のコンピュータ可読記憶媒体。
［Ｃ３７］
前記関数が、前記ビンの前記インデックスと前記ブロックのサイズを示す値との両方の関数を備える、Ｃ３４に記載のコンピュータ可読記憶媒体。
［Ｃ３８］
前記関数が、前記ブロックの区分の深度と、前記ブロックを含むピクチャのサイズと、前記ブロックに対応する動き補償ブロックのサイズと、前記ブロックを含む前記ピクチャのためのフレームタイプと、前記ブロックに対応する前記動き補償ブロックのためのインター予測方向と、前記ブロックに対応する前記動き補償ブロックのための動きベクトルの振幅と、前記ブロックに対応する前記動き補償ブロックのための前記動きベクトルの動きベクトル差分値の振幅と、前記ブロックがルミナンス成分に対応するのかまたはクロミナンス成分に対応するのかとのうちの少なくとも１つに基づいて変化する、Ｃ３４に記載のコンピュータ可読記憶媒体。
［Ｃ３９］
実行されたとき、前記プログラマブルプロセッサに、前記関数を定義するシンタックスデータを受信することを行わせる命令でさらに符号化される、Ｃ３４に記載のコンピュータ可読記憶媒体。
【図１】
0006042526.tif 000055
【図２】
0006042526.tif 000056
【図３】
0006042526.tif 000057
【図４】
0006042526.tif 000058
【図５】
0006042526.tif 000059