(57)【特許請求の範囲】
【請求項１】
ビデオ復号プロセスにおいて係数を復号する方法であって、
係数グループの複数の異なるカテゴリーの各々について残差ビデオデータの、前に復号された係数のための係数レベルの統計値を決定することと、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義され、前記前に復号された係数は、前記残差ビデオデータの変換ブロック中の現在の係数グループより前に復号される、
前記現在の係数グループ中のいずれかの係数を復号することに先立って前記統計値に基づいて前記現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータの前記初期値によって定義されるコードを使用して前記現在の係数グループ中の前記係数のうちの少なくとも１つのための係数レベルの残りの絶対値を復号することと、
前記ライスパラメータの前記初期値に基づいてコードを使用して前記現在の係数グループ中の他の係数のための係数レベルの残りの絶対値を復号することとを備える、方法。
【請求項２】
前記統計値は、前記前に復号された係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの１つの統計値を備える、請求項１に記載の方法。
【請求項３】
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの１つまたは複数中に含まれる、前の係数グループ中の前記前に復号された係数のための前記係数レベルの統計値を備える、請求項１に記載の方法。
【請求項４】
前記統計値を決定することは、
前記前に復号された係数のうちの少なくとも１つのための係数レベルを前記統計値の関数の結果と比較することと、
前記比較に基づいて前記統計値の値を増加させるべきか減少させるべきかを決定することとを備える、請求項１に記載の方法。
【請求項５】
前記統計値の前記関数は、第２の一定値で除算された前記統計値の値だけ左シフトされた第１の一定値を備える、請求項４に記載の方法。
【請求項６】
前記統計値を決定することは、係数グループごとに１回前記統計値を決定することを備える、請求項１に記載の方法。
【請求項７】
係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信することをさらに備え、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのためのシーケンスパラメータセット（ＳＰＳ）またはピクチャパラメータセット（ＰＰＳ）のうちの１つにおいて受信される、請求項１に記載の方法。
【請求項８】
前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することをさらに備え、ここにおいて、前記ライスパラメータの前記初期値を決定することは、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することを備える、請求項１に記載の方法。
【請求項９】
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することは、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングすることを備える、請求項１に記載の方法。
【請求項１０】
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、請求項９に記載の方法。
【請求項１１】
前記現在の係数グループ中の前記係数のうちの前記少なくとも１つのための前記係数レベルの前記残りの絶対値を復号した後に、前記ライスパラメータの前記初期値と、前記現在の係数グループ中の前記係数の前記少なくとも１つのための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新することと、
前記ライスパラメータの前記更新された値によって定義されるコードを使用して前記現在の係数グループ中の前記係数のうちの別の１つのための係数レベルの残りの絶対値を復号することと、
をさらに備える、請求項１に記載の方法。
【請求項１２】
ビデオ符号化プロセスにおいて係数を符号化する方法であって、
係数グループの複数の異なるカテゴリーの各々について残差ビデオデータの、前に符号化された係数のための係数レベルの統計値を決定することと、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義され、前記前に符号化された係数は、前記残差ビデオデータの変換ブロック中の現在の係数グループより前に符号化される、
前記現在の係数グループ中のいずれかの係数を符号化することに先立って前記統計値に基づいて前記現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータの前記初期値によって定義されるコードを使用して前記現在の係数グループ中の前記係数のうちの少なくとも１つのための係数レベルの残りの絶対値を符号化することと、
前記ライスパラメータの前記初期値に基づいてコードを使用して前記現在の係数グループ中の他の係数のための係数レベルの残りの絶対値を符号化することとを備える、方法。
【請求項１３】
ビデオデータを記憶するように構成されるメモリと、
係数グループの複数の異なるカテゴリーの各々について残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義され、前記前にコーディングされた係数は、前記残差ビデオデータの変換ブロック中の現在の係数グループより前にコーディングされる、
前記現在の係数グループ中のいずれかの係数をコーディングすることに先立って前記統計値に基づいて前記現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータの前記初期値によって定義されるコードを使用して前記現在の係数グループ中の前記係数のうちの少なくとも１つのための係数レベルの残りの絶対値をコーディングすることと、
前記ライスパラメータの前記初期値に基づいてコードを使用して前記現在の係数グループ中の他の係数のための係数レベルの残りの絶対値をコーディングすることと
を行うように構成される１つまたは複数のプロセッサとを備えるビデオコーディングデバイス。
【請求項１４】
ビデオコーディングデバイスの１つまたは複数のプロセッサによって実行されたとき、請求項１−１２のいずれかに記載の方法に従ったステップを実行することを前記プロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]  本出願は、２０１３年７月１２日に出願された米国仮特許出願第６１／８４５，８５０号、２０１３年７月１５日に出願された米国仮特許出願第６１／８４６，５１２号、２０１３年９月２５日に出願された米国仮特許出願第６１／８８２，５３６号、２０１３年１１月１日に出願された米国仮特許出願第６１／８９８，９６８号、２０１３年１１月２２日に出願された米国仮特許出願第６１／９０７，６９３号、および２０１３年１２月１２日に出願された米国仮特許出願第６１／９１５，３３７号の利益を主張するもので、その各々の内容全体が参照により本明細書に組み込まれる。
【技術分野】
【０００２】
[0002]  本開示は、ビデオコーディングに関し、より詳細には、変換係数をコーディングするための技法に関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信、受信および記憶するための、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）によって定義された規格、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。
【０００４】
[0004]  ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス、すなわち、ビデオフレームまたはビデオフレームの一部分）がブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャの中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。インターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]  空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コーディングされたブロックと予測ブロックとの差分を示す残差データとに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その残差変換係数は、次いで量子化され得る。最初は２次元アレイで構成される量子化された変換係数は、変換係数の１次元ベクトルを生成するために特定の順序で走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]  概して、本開示は、ビデオコーディングプロセスにおいて係数レベルコーディングのためのコードを定義するために使用されるライスパラメータの初期化のための技法について説明する。特に、本開示は、係数のための係数レベルの残りの絶対値(remaining absolute values)をコーディングするためのコード、例えば、ゴロムライスコードまたは指数ゴロムコードを定義するために使用されるライスパラメータの初期値を決定するための技法について説明し、ここで、有意係数(significant coefficients)、１よりも大きい係数レベル、および２よりも大きい係数レベルの指示をコーディングするためにコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：context adaptive binary arithmetic coding）が使用される。いくつかの例では、本技法が、高効率ビデオコーディング（ＨＥＶＣ）規格の範囲拡張における係数レベルコーディングのためのライスパラメータ初期化に適用され得る。
【０００７】
[0007]  本開示で説明する技法は、ビデオデータの、前にコーディングされた係数について収集される係数レベルの統計値に基づいて、ビデオデータの変換ブロック中の現在の係数グループ（ＣＧ：coefficient group）、すなわち、係数のブロックのためのライスパラメータの初期値を決定する。ＣＧは、ロッシーコーディング(lossy coding)の場合、変換係数を含むか、あるいは変換スキップモードにおけるロスレスコーディング(lossless coding)またはロッシーコーディングの場合、変換がそれに適用されない係数を含み得る。統計値は、前にコーディングされた係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。統計値の値は、ビデオデータの各スライスの開始において０に初期化され得、統計値は、スライスの各ＣＧ中でコーディングされる１つまたは複数の係数レベルに基づいて更新され得る。一例では、第１の係数レベルがＣＧ中でコーディングされるとき、統計値がＣＧごとに１回更新され得る。場合によっては、統計値は、ＣＧを含む変換ブロックの特性に基づいて定義されるＣＧの複数の異なるカテゴリーの各々について別々に収集され得る。本開示の技法によれば、変換ブロック中の現在のＣＧの開始において、統計値の値は、現在のＣＧのためのライスパラメータの初期値にマッピングされる。
【０００８】
[0008]  一例では、本開示が、ビデオ復号プロセスにおいて係数を復号する方法に向けられて、本方法が、残差ビデオデータ(residual video data)の、前に復号された係数のための係数レベルの統計値を決定することと、統計値に基づいて残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータ(Rice parameter)の初期値を決定することと、ライスパラメータによって定義されるコードを使用して現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値を復号することとを備える。
【０００９】
[0009]  別の例では、本開示が、ビデオ符号化プロセスにおいて係数を符号化する方法に向けられ、本方法が、残差ビデオデータの、前に符号化された係数のための係数レベルの統計値を決定することと、統計値に基づいて残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、ライスパラメータによって定義されるコードを使用して現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値を符号化することとを備える。
【００１０】
[0010]  さらなる一例では、本開示が、ビデオデータを記憶するように構成されるメモリと、残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、統計値に基づいて残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、ライスパラメータによって定義されるコードを使用して現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングすることとを行うように構成される１つまたは複数のプロセッサとを備えるビデオコーディングデバイスに向けられる。
【００１１】
[0011]  別の例では、本開示が、残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定するための手段と、統計値に基づいて残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定するための手段と、ライスパラメータの初期値によって定義されるコードを使用して現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングするための手段とを備えるビデオコーディングデバイスに向けられる。
【００１２】
[0012]  さらなる一例では、本開示が、ビデオコーディングデバイスの１つまたは複数のプロセッサによって実行されたとき、残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、統計値に基づいて残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、ライスパラメータによって定義されるコードを使用して現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングすることとをプロセッサに行わせる命令を備えるコンピュータ可読記憶媒体に向けられる。
【００１３】
[0013]  １つまたは複数の例の詳細が、添付の図面および以下の説明において述べられる。他の特徴、目的、および利点は、その説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】本開示で説明する係数レベルをコーディングするための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】係数レベルコーディングのための例示的な逆方向走査順序を示す概念図である。
【図３】係数グループ（ＣＧ）の係数レベルコーディングのための例示的なサブブロックベースの逆方向対角走査順序を示す概念図である。
【図４】ＣＧのための係数レベルをコーディングするための例示的な逆方向対角走査順序を示す概念図である。
【図５】本開示で説明する係数レベルを符号化するための技法を実装し得る例示的なビデオエンコーダを示すブロック図である。
【図６】本開示で説明する係数レベルを復号するための技法を実装し得る例示的なビデオデコーダを示すブロック図である。
【図７】本開示で説明する技法に従って係数レベルのエントロピー符号化中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。
【図８】本開示で説明する技法に従って係数レベルのエントロピー復号中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。
【図９】本開示で説明する技法に従って係数レベルのエントロピーコーディング中に前にコーディングされた係数のための係数レベルの統計値を決定する例示的な動作を示すフローチャートである。
【図１０】本開示で説明する技法に従って、決定された統計値に基づいて現在の係数グループのためのライスパラメータの初期値を決定する例示的な動作を示すフローチャートである
【発明を実施するための形態】
【００１５】
[0024]  本開示は、ビデオコーディングプロセスにおいて残差データに関連する係数をコーディングするための技法について説明する。本技法は、ビデオコーディングプロセスにおいて係数レベルコーディングのためのコードを定義するために使用されるライスパラメータの初期化のために構成される。特に、本開示は、係数のブロックのための係数レベルの残りの絶対値をコーディングするためのコード、例えば、ゴロムライスコード(Golomb-Rice codes)または指数ゴロムコード(Exponential-Golomb codes)を定義するために使用されるライスパラメータの初期値を決定するための技法について説明し、ここで、有意係数、１よりも大きい係数レベル、および２よりも大きい係数レベルの指示をコーディングするためにコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）が使用される。係数レベルは、ロッシーコーディングの場合、変換係数のレベルであるか、あるいは変換スキップモードにおけるロスレスコーディングまたはロッシーコーディングの場合、変換がそれに適用されない係数（すなわち、残差ピクセル値）のレベルであり得る。いくつかの例では、本技法が、高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格の範囲拡張における係数レベルコーディングのためのライスパラメータ初期化に適用され得る。
【００１６】
[0025]  ライスパラメータは、ゴロムコードのファミリー、例えば、ゴロムライスコードまたは指数ゴロムコードからコードワードセットを選択するために使用される調節可能な値である。ライスパラメータによって定義されるコードは、係数グループ（ＣＧ）、すなわち、係数のブロック中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングするために使用され得る。ＨＥＶＣの例では、ＣＧの各々が、ビデオデータの４×４変換ブロック、または変換ブロックの４×４サブブロックを備え得る。ＣＧは、ロッシーコーディングの場合、変換係数を含むか、あるいは変換スキップモードにおけるロスレスコーディングまたはロッシーコーディングの場合、変換がそれに適用されない係数を含み得る。いくつかのプロセスでは、ライスパラメータの初期値が、各ＣＧの開始において０に等しく設定され、ＣＧ中の係数レベルの残りの絶対値をコーディングした後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各ＣＧについてライスパラメータの値を０に初期化することは最適でないことがある。
【００１７】
[0026]  本開示で説明する技法は、各ＣＧをコーディング（例えば、符号化または復号）するために、全ての場合についてライスパラメータの初期値を０に設定するのではなく、ライスパラメータの初期値を適応的に設定する。特に、本開示は、前にコーディングされた係数について収集される係数レベルの統計値に基づいて現在のＣＧのためのライスパラメータの初期値を決定するための技法について説明する。本開示ではまた、ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定するための技法について説明する。
【００１８】
[0027]  統計値は、前にコーディングされた係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。統計値の値は、ビデオデータの各スライスの開始において０に初期化され得、統計値は、スライスの各ＣＧ中でコーディングされる１つまたは複数の係数レベルに基づいて更新され得る。場合によっては、統計値は、ＣＧにおいて係数レベルの第１の絶対値または係数レベルの第１の残りの絶対値がコーディングされるとき、ＣＧごとに１回更新され得る。他の場合には、統計値は、例えば、ＣＧにおいて係数レベルの最後の絶対値または係数レベルの最後の残りの絶対値がコーディングされるとき、より頻繁にまたは異なる係数レベルに基づいて収集され得る。
【００１９】
[0028]  一例として、統計値は、所与の前にコーディングされた係数のための係数レベルを統計値の予め定義された関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって決定され得る。統計値を更新するために使用される統計値の予め定義された関数は、第２の一定値で除算された統計値の値だけ左シフトされた第１の一定値に基づき得る。他の例では、統計値が、異なる技法に従って決定され得る。
【００２０】
[0029]  場合によっては、統計値は、ＣＧを含む変換ブロックの特性に基づいて定義されるＣＧの複数の異なるカテゴリーの各々について別々に収集され得る。この場合、変換ブロック中の現在のＣＧのカテゴリーは、変換ブロックの特性に基づいて決定され得、ライスパラメータは、現在のＣＧについて、決定されたカテゴリーの統計値に基づいて初期化され得る。一例では、変換ブロックがルーマブロック(luma blocks)であるか否かと、変換ブロックが変換スキップブロックであるか否かとに基づいて、４つの異なるカテゴリーの各々について別々の統計値が収集され得る。他の例では、統計値が、異なるタイプの変換ブロック特性に基づいて定義される異なる数のカテゴリーに区分され得る。
【００２１】
[0030]  本開示の技法によれば、現在のＣＧの開始において、統計値の値は、現在のＣＧのためのライスパラメータの初期値にマッピングされる。いくつかの例では、統計値の値が、統計値の関数に従って初期ライスパラメータ値にマッピングされ得る。ライスパラメータを初期化するために使用される統計値の関数は、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づき得る。他の例では、統計値の値が、異なる関数に従ってまたは記憶されたテーブルに従ってライスパラメータの初期値にマッピングされ得る。現在のＣＧのためのライスパラメータの初期値は、現在のＣＧ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングするためのコード、例えば、ゴロムライスコードまたは指数ゴロムコードを定義するために使用される。
【００２２】
[0031]  いくつかの例では、ビデオエンコーダが、ビデオデコーダまたは記憶デバイスへの送信のために残差ビデオデータに関連付けられる係数の係数レベルをビットストリーム(bitstream)中に符号化し得る。符号化されたビストリーム（bistream）を受信すると、ビデオデコーダは、ビデオエンコーダとは逆の様式で残差ビデオデータの係数レベルを復号し得る。ロッシービデオコーディングの場合、係数は、量子化された変換係数であり得る。この場合、量子化変換係数は、例えば、残差ビデオデータに離散コサイン変換（ＤＣＴ）などの変換を適用し、次いで、変換係数に量子化を適用することによって生成され得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、係数は、残差ビデオデータのピクセル値であり得、大きい絶対値をもつ係数レベル、すなわちピクセル値を有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、係数のための係数レベルの大きい絶対値が生じる。
【００２３】
[0032]  本開示で説明するライスパラメータ初期化方式は、現在のＣＧがスクリーンコンテンツを含むかあるいは変換スキッピングまたはバイパスを伴ってコーディングされる場合に発生し得る大きい係数値にライスパラメータが迅速および効率的に適応するために、現在のＣＧの開始においてライスパラメータの初期値が非０値に設定されることを可能にする。本技法によれば、ライスパラメータの初期値は、前にコーディングされた係数のための係数レベルの統計値に基づいて決定され得る。このようにして、ライスパラメータは、スクリーンコンテンツおよび／または変換もしくは量子化されていない係数のスライスまたはコーディングユニットに適応するために非０値に初期化され得るが、自然コンテンツのスライスまたはコーディングユニットの場合は依然として０に初期化され得る。例えば、前にコーディングされた係数のための大きい係数レベルが大きい値の統計値を生じるとき、現在のＣＧ中におそらく発生する大きい係数値により迅速に適応するために、ライスパラメータの初期値は、大きい値の統計値に従って非０値に等しく設定され得る。
【００２４】
[0033]  図１は、本開示で説明する係数レベルをコーディングするための技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示されているように、システム１０は、通信チャネル１６を介して符号化ビデオを宛先デバイス１４に送信するソースデバイス１２を含む。符号化ビデオデータはまた、記憶媒体３４またはファイルサーバ３６に記憶され得、所望に応じて宛先デバイス１４によってアクセスされ得る。記憶媒体またはファイルサーバに記憶されたとき、ビデオエンコーダ２０は、コード化ビデオデータを記憶媒体に記憶するための、ネットワークインターフェース、コンパクトディスク（ＣＤ）、Ｂｌｕ−ｒａｙ（登録商標）またはデジタルビデオディスク（ＤＶＤ）バーナーまたはスタンピングファシリティデバイス、あるいは他のデバイスなど、別のデバイスにコード化ビデオデータを与え得る。同様に、ネットワークインターフェース、ＣＤまたはＤＶＤリーダーなど、ビデオデコーダ３０とは別個のデバイスが、記憶媒体からコード化ビデオデータを取り出し得、取り出されたデータをビデオデコーダ３０に与えた。
【００２５】
[0034]  ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。多くの場合、そのようなデバイスはワイヤレス通信のために装備され得る。従って、通信チャネル１６は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。同様に、ファイルサーバ３６は、インターネット接続を含む任意の標準的なデータ接続を通じて宛先デバイス１４によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。
【００２６】
[0035]  本開示の例による、係数レベルをコーディングするための技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０が、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
【００２７】
[0036]  図１の例では、ソースデバイス１２が、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器２２と、送信機２４とを含む。ソースデバイス１２において、ビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／または、ソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得、これらは、例えば、スマートフォンまたはタブレットコンピュータ内に与えられ得る。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤード適用例、あるいは符号化ビデオデータがローカルディスクに記憶された適用例に適用され得る。
【００２８】
[0037]  キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化されたビデオ情報は、ワイヤード通信プロトコルまたはワイヤレス通信プロトコルなどの通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器と、フィルタと、ワイヤレス通信の場合には１つまたは複数のアンテナとを含む、データを送信するために設計された回路を含み得る。
【００２９】
[0038]  ビデオエンコーダ２０によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体３４またはファイルサーバ３６に記憶され得る。記憶媒体３４は、Ｂｌｕ−ｒａｙディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体３４に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス１４によってアクセスされ得る。図１には示されていないが、いくつかの例では、記憶媒体３４および／またはファイルサーバ３６が送信機２４の出力を記憶し得る。
【００３０】
[0039]  ファイルサーバ３６は、符号化ビデオを記憶すること、およびその符号化ビデオを宛先デバイス１４に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、（例えば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、ローカルディスクドライブ、または、符号化ビデオデータを記憶することおよび符号化ビデオデータを宛先デバイスに送信することが可能な任意の他のタイプのデバイスを含む。ファイルサーバ３６からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。ファイルサーバ３６は、インターネット接続を含む任意の標準的なデータ接続を通じて宛先デバイス１４によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム、イーサネット（登録商標）、ＵＳＢなど）、または両方の組合せを含み得る。
【００３１】
[0040]  宛先デバイス１４は、図１の例で、受信機２６と、モデム２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。宛先デバイス１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８は、その情報を復調して、ビデオデコーダ３０のための復調されたビットストリームを生成する。チャネル１６を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ３０が使用する、ビデオエンコーダ２０によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体３４またはファイルサーバ３６に記憶される符号化ビデオデータとともに含まれ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、ビデオデータを符号化または復号することが可能であるそれぞれのエンコーダデコーダ（コーデック）の一部を形成し得る。
【００３２】
[0041]  ディスプレイデバイス３２は、宛先デバイス１４と一体化されるか、または宛先デバイス１４の外部にあり得る。いくつかの例では、宛先デバイス１４が、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４がディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３３】
[0042]  図１の例では、通信チャネル１６が、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル１６は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス１２から宛先デバイス１４に送信するための任意の好適な通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１６は、ソースデバイス１２から宛先デバイス１４への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【００３４】
[0043]  ビデオエンコーダ２０およびビデオデコーダ３０は、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ：Video Coding Experts Group）とＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ：Motion Picture Experts Group）とのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaboration Team on Video Coding）によって開発された高効率ビデオコーディング（ＨＥＶＣ）規格など、ビデオ圧縮規格に従って動作し得る。文書ＪＣＴＶＣ−Ｌ１００３ｖ３４、Ｂｒｏｓｓら、「Ｈｉｇｈ  ｅｆｆｉｃｉｅｎｃｙ  ｖｉｄｅｏ  ｃｏｄｉｎｇ  （ＨＥＶＣ）  ｔｅｘｔ  ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｄｒａｆｔ  １０」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ ＪＴＣ１／ＳＣ２９／ＷＧ１１とのジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）、第１２回会合：ジュネーブ、スイス、２０１３年１月１４〜２３日におけるＨＥＶＣ規格のドラフトは、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１２＿Ｇｅｎｅｖａ／ｗｇ１１／ＪＣＴＶＣ−Ｌ１００３−ｖ３４．ｚｉｐから入手可能である。
【００３５】
[0044]  図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０が、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットが、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３６】
[0045]  ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読媒体に記憶し、１つまたは複数のプロセッサを使用して命令をハードウェアで実行して本開示の技法を行い得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００３７】
[0046]  ビデオエンコーダ２０は、ビデオ符号化プロセスにおいて係数レベルを符号化するために本開示の技法のいずれかまたは全てを実装し得る。同様に、ビデオデコーダ３０は、ビデオ復号プロセスにおいて係数レベルを復号するためにこれらの技法のいずれかのまたは全てを実装し得る。本開示で説明するビデオコーダは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングユニットはビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングはビデオ符号化またはビデオ復号を指し得る。
【００３８】
[0047]  デジタルビデオデバイスは、デジタルビデオ情報をより効率的に符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（フレーム内）予測および／または時間的（フレーム間）予測技法を適用し得る。上で説明されたＨＥＶＣ規格は、ＨＥＶＣテストモデル（ＨＭ）と呼ばれるビデオコーディングデバイスの発展的モデルに基づいている。ＨＭは、例えばＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の能力を仮定する。例えば、Ｈ．２６４は、９つのイントラ予測符号化モードを提供するが、ＨＥＶＣ  ＨＭは、３３個ものイントラ予測符号化モードを提供し得る。以下のセクションは、ＨＭのいくつかの態様についてより詳細に説明する。
【００３９】
[0048]  ＨＥＶＣ規格に従うビデオコーディングの場合、ビデオフレームはコーディングユニットに区分され得る。コーディングユニット（ＣＵ：coding unit）は、概して、ビデオ圧縮のために様々なコーディングツールが適用される基本ユニットとして働く画像領域を指す。ＣＵは通常、Ｙとして示されるルミナンス成分と、ＵおよびＶとして示される２つのクロマ成分(chroma components)とを有する。ビデオサンプリングフォーマットに応じて、Ｕ成分とＶ成分とのサイズは、サンプル数に関して、Ｙ成分のサイズと同じであるか、またはＹ成分のサイズとは異なり得る。
【００４０】
[0049]  ＣＵは、一般に正方形であり、例えば、ＩＴＵ−Ｔ  Ｈ．２６４などの他のビデオコーディング規格の下でのいわゆるマクロブロックと同様であると見なされ得る。開発中のＨＥＶＣ規格の現在提案されている態様のいくつかに従うコーディングが本願で例示のために、説明される。ただし、本開示で説明する技法は、Ｈ．２６４または他の規格に従って定義されるビデオコーディングプロセスあるいはプロプライエタリビデオコーディングプロセス(proprietary video coding processes)など、他のビデオコーディングプロセスのために有用であり得る。
【００４１】
[0050]  ＨＭによれば、ＣＵは、１つもしくは複数の予測ユニット（ＰＵ：prediction unit）および／または１つもしくは複数の変換ユニット（ＴＵ：transform unit）を含み得る。ビットストリーム内のシンタックスデータは、ピクセルの数に関して最大ＣＵである最大コーディングユニット（ＬＣＵ：largest coding unit）を定義し得る。概して、ＣＵは、ＣＵがサイズの差異を有しないことを除いて、Ｈ．２６４のマクロブロックと同様の目的を有する。従って、ＣＵはサブＣＵに分割され得る。概して、本開示におけるＣＵへの言及は、ピクチャの最大コーディングユニットまたはＬＣＵのサブＣＵを指すことがある。ＬＣＵはサブＣＵに分割され得、各サブＣＵはさらにサブＣＵに分割され得る。ビットストリームのためのシンタックスデータは、ＣＵ深度と呼ばれる、ＬＣＵが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット（ＳＣＵ：smallest coding unit）をも定義し得る。本開示ではまた、ＣＵ、ＰＵ、またはＴＵのいずれかを指すために「ブロック」または「部分」という用語を使用する。概して、「部分」は、ビデオフレームの任意のサブセットを指すことがある。
【００４２】
[0051]  ＬＣＵは４分木データ構造に関連付けられ得る。概して、４分木データ構造はＣＵごとに１つのノードを含み、ルートノードはＬＣＵに対応する。ＣＵが４つのサブＣＵに分割される場合、ＣＵに対応するノードは４つのリーフノードを含み、その各々は、サブＣＵのうちの１つに対応する。４分木データ構造の各ノードは、対応するＣＵのシンタックスデータを提供し得る。例えば、４分木のノードは、そのノードに対応するＣＵがサブＣＵに分割されるかどうかを示す分割フラグを含み得る。ＣＵのためのシンタックス要素は、再帰的に定義され得、ＣＵがサブＣＵに分割されるかどうかに依存し得る。ＣＵがさらに分割されない場合、そのＣＵはリーフＣＵと呼ばれる。本開示では、元のリーフＣＵの明示的な分割が存在しなくても、リーフＣＵの４つのサブＣＵがリーフＣＵとも呼ばれる。例えば、１６×１６サイズのＣＵがさらに分割されない場合、この１６×１６ＣＵが決して分割されなくても、４つの８×８サブＣＵがリーフＣＵとも呼ばれる。
【００４３】
[0052]  リーフＣＵは、１つまたは複数の予測ユニット（ＰＵ）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分を表し、そのＰＵの参照サンプルを取り出すためのデータを含み得る。例えば、ＰＵがインターモード符号化されるとき、ＰＵは、ＰＵの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度（例えば、１／４ピクセル精度もしくは１／８ピクセル精度）、動きベクトルが指す参照フレーム、および／または動きベクトルの参照リスト（例えば、リスト０もしくはリスト１）を記述し得る。ＰＵを定義するリーフＣＵのデータはまた、例えば、ＣＵを１つまたは複数のＰＵに区分することを記述し得る。区分モードは、ＣＵがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかに応じて異なり得る。イントラコーディングの場合、ＰＵは、以下で説明するリーフ変換ユニットと同じように扱われ得る。
【００４４】
[0053]  新生のＨＥＶＣ規格は、ＣＵごとに異なり得る変換ユニット（ＴＵ）に従う変換を可能にする。ＴＵは、通常、区分されたＬＣＵについて定義された所与のＣＵ内のＰＵのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。ＴＵは、通常、ＰＵと同じサイズであるか、またはＰＵよりも小さい。いくつかの例では、ＣＵに対応する残差サンプルが、「残差４分木」（ＲＱＴ：residual quad tree）と呼ばれる４分木構造を使用して、より小さいユニットにさらに分割され得る。ＲＱＴのリーフノードは変換ユニット（ＴＵ）と呼ばれることがある。ＴＵに関連付けられたピクセル差分値は、変換係数を生成するために変換され得、その変換係数は量子化され得る。ＴＵは、１つのルーマ変換ブロック(luma transform block)と、２つのクロマ変換ブロック(chroma transform blocks)とを含む。従って、ＴＵに適用される後述の任意のコーディングプロセスは、実際には、ルーマおよびクロマの変換ブロックに適用され得る。
【００４５】
[0054]  概して、ＰＵは、予測プロセスに関係するデータを指す。例えば、ＰＵがイントラモード符号化されるとき、ＰＵは、ＰＵのイントラ予測モードを記述するデータを含み得る。別の例として、ＰＵがインターモード符号化されるとき、ＰＵは、ＰＵの動きベクトルを定義するデータを含み得る。
【００４６】
[0055]  概して、ＴＵは、変換プロセスと量子化プロセスとのために使用される。１つまたは複数のＰＵを有する所与のＣＵは、１つまたは複数の変換ユニット（ＴＵ）をも含み得る。予測に続いて、ビデオエンコーダ２０は、ＰＵに従ってコーディングノードによって識別されたビデオブロックから残差値を計算し得る。コーディングノードは、次いで、元のビデオブロックではなく、残差値を参照するように更新される。残差値はピクセル差分値を備え、ピクセル差分値は、エントロピーコーディングのためのシリアル化変換係数（serialized transform coefficient）を生成するためにＴＵ中で指定された変換および他の変換情報を使用して変換係数に変換され、量子化され、走査され得る。コーディングノードは、これらのシリアル化変換係数を参照するように、もう一度更新され得る。本開示は、一般に、ＣＵのコーディングノードを指すために「ビデオブロック」という用語を使用する。いくつかの特定の場合において、本開示は、コーディングノードならびにＰＵおよびＴＵを含む、ツリーブロック、すなわち、ＬＣＵまたはＣＵを指すためにも「ビデオブロック」という用語を使用し得る。
【００４７】
[0056]  ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ（ＧＯＰ：group of pictures）は、概して、ビデオピクチャのうちの一連の１つまたは複数を備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのピクチャを記述するシンタックスデータを、ＧＯＰのヘッダ中、ピクチャのうちの１つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ２０は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックは、ＣＵ内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
【００４８】
[0057]  ブロック（例えば、ビデオデータの予測ユニット）をコーディングするために、ブロックの予測子(predictor)が最初に導出される。予測ブロックとも呼ばれる予測子は、イントラ（Ｉ）予測（すなわち、空間的予測）またはインター（ＰもしくはＢ）予測（すなわち時間的予測）のいずれかを通じて導出され得る。従って、いくつかの予測ユニットは、同じフレーム（またはスライス）中の隣接参照ブロック中の参照サンプルに対する空間的予測を使用してイントラコーディング（Ｉ）され得、他の予測ユニットは、他の以前にコーディングされたフレーム（またはスライス）中の参照サンプルのブロックに対して単方向にインターコーディング（Ｐ）されるかまたは双方向にインターコーディング（Ｂ）され得る。各場合において、参照サンプルは、コーディングされるべきブロックの予測ブロックを形成するために使用され得る。
【００４９】
[0058]  予測ブロックの識別時に、元のビデオデータブロック中のピクセルとそれの予測ブロック中のピクセルとの間の差分が決定される。この差分は予測残差データと呼ばれることがあり、コーディングされるべきブロック中のピクセル値と、コード化ブロックを表すように選択された予測ブロック中のピクセル値との間のピクセル差分を示す。より良好な圧縮を実現するために、予測残差データは、例えば、離散コサイン変換（ＤＣＴ：discrete cosine transform）、離散サイン変換（ＤＳＴ：discrete sine transform）、整数変換、カルーネンレーベ（Ｋ−Ｌ）変換、または変換係数を生成するための別の変換を使用して変換され得る。
【００５０】
[0059]  ＴＵなどの変換ブロック中の残差データは、空間的ピクセル領域中に存在するピクセル差分値の２次元（２Ｄ）アレイで構成され得る。変換は、周波数領域などの変換領域において残差ピクセル値を変換係数の２次元アレイに変換する。さらなる圧縮のために、変換係数は、エントロピーコーディングに先立って量子化され得る。ロスレスコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシーコーディングなど、いくつかの例では、係数について変換プロシージャと量子化プロシージャの両方がスキップされ得る。
【００５１】
[0060]  次いで、エントロピーコーダは、係数に、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：Context Adaptive Variable Length Coding）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、確率間隔区分エントロピーコーディング（ＰＩＰＥ：Probability Interval Partitioning Entropy Coding）などのエントロピーコーディングを適用する。いくつかの例では、ビデオエンコーダ２０が、エントロピー符号化され得るシリアル化ベクトルを生成するために、係数を走査するために予め定義された走査順序を利用し得る。他の例では、ビデオエンコーダ２０が適応走査を行い得る。係数を走査して１次元ベクトルを形成した後に、ビデオエンコーダ２０は、１次元ベクトルをエントロピー符号化し得る、ビデオエンコーダ２０はまた、ビデオデータを復号する際にビデオデコーダ３０が使用するための、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
【００５２】
[0061]  本開示は、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）エントロピーコーダ、あるいは確率間隔区分エントロピーコーディング（ＰＩＰＥ）または関係するコーダなど、他のエントロピーコーダとともにバイパスコーディングするための技法に関する。算術コーディングは、シンボルを非整数長さコードワードにマッピングすることが可能であるので、高いコーディング効率を有する多くの圧縮アルゴリズムにおいて使用されるエントロピーコーディングの形態である。算術コーディングアルゴリズムの一例はコンテキストベースバイナリ算術コーディング（ＣＡＢＡＣ）である。
【００５３】
[0062]  概して、ＣＡＢＡＣを使用してデータシンボルをエントロピーコーディングすることは、以下のステップのうちの１つまたは複数を伴う。
【００５４】
（１）２値化：コーディングされるべきシンボルが非２進値化された場合、そのシンボルは、いわゆる「ビン」のシーケンスにマッピングされる。各ビンは「０」または「１」の値を有することができる。
【００５５】
（２）コンテキスト割当て：各ビン（標準モードにおいて）はコンテキストに割り当てられる。コンテキストモデルは、以前に符号化されたシンボルの値またはビン数など、ビンについて利用可能な情報に基づいて所与のビンのコンテキストがどのように計算されるかを決定する。
【００５６】
（３）ビン符号化：ビンは算術エンコーダを用いて符号化される。ビンを符号化するために、算術エンコーダは、入力として、ビンの値の確率、すなわち、ビンの値が「０」に等しい確率と、ビンの値が「１」に等しい確率とを必要とする。各コンテキストの推定された確率は、「コンテキスト状態」と呼ばれる整数値によって表される。各コンテキストはある状態を有し、従って、その状態（すなわち、推定された確率）は、１つのコンテキストに割り当てられたビンに対して同じであり、コンテキスト間で異なる。
【００５７】
（４）状態更新：選択されたコンテキストの確率状態は、ビンの実際のコード化値に基づいて更新される（例えば、ビン値が「１」であった場合、「１」の確率が増加される）。
【００５８】
[0063]  バイパスモードにおいてＣＡＢＡＣを使用してデータシンボルをエントロピーコーディングする場合、コーディングされるべきシンボルは、ビンのシーケンスに２値化され、固定等確率モデルを用いて（例えば、指数ゴロムコードまたはゴロムライスコードを用いて）算術的にコーディングされる。バイパスモードは、コンテキスト割当てまたは確率状態更新を必要としない。例えば、本開示は、ライスパラメータによって定義されるコードを使用する、係数のための係数レベルの残りの絶対値のバイパスコーディングのための技法について説明する。確率間隔区分エントロピーコーディング（ＰＩＰＥ）は、算術コーディングの原理と同様の原理を使用し、従って、本開示の技法をも利用できることに留意されたい。
【００５９】
[0064]  Ｈ．２６４／ＡＶＣおよびＨＥＶＣにおけるＣＡＢＡＣは状態を使用し、各状態は暗黙的に確率に関係する。シンボル（「０」または「１」）の確率が直接使用される、すなわち、確率または確率の整数バージョンが状態である、ＣＡＢＡＣの変形態が存在する。例えば、ＣＡＢＡＣのそのような変形態は、以下において「ＪＣＴＶＣ−Ａ１１４」と呼ぶ、「Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  ｖｉｄｅｏ  ｃｏｄｉｎｇ  ｔｅｃｈｎｏｌｏｇｙ  ｐｒｏｐｏｓａｌ  ｂｙ  Ｆｒａｎｃｅ  Ｔｅｌｅｃｏｍ，  ＮＴＴ，  ＮＴＴ  ＤＯＣＯＭＯ，  Ｐａｎａｓｏｎｉｃ  ａｎｄ  Ｔｅｃｈｎｉｃｏｌｏｒ」、ＪＣＴＶＣ−Ａ１１４、第１回ＪＣＴ−ＶＣ会合、ドレスデン、ドイツ、２０１０年４月、および、以下において「ＪＣＴＶＣ−Ｆ２５４」と呼ぶ、Ａ．ＡｌｓｈｉｎおよびＥ．Ａｌｓｈｉｎａ、「Ｍｕｌｔｉ−ｐａｒａｍｅｔｅｒ  ｐｒｏｂａｂｉｌｉｔｙ  ｕｐｇｒａｄｅ  ｆｏｒ  ＣＡＢＡＣ」、ＪＣＴＶＣ−Ｆ２５４、第６回ＪＣＴ−ＶＣ会合、トリノ、イタリア、２０１１年７月に記載されている。
【００６０】
[0065]  変換され量子化されるのかまたは変換も量子化もされないのかにかかわらず、係数のブロックをエントロピーコーディングするために、ブロック中の係数の２次元（２Ｄ）アレイが、特定の走査順序に従って係数の順序付き１次元（１Ｄ）アレイ、すなわちベクトルに再構成されるように、通常、走査プロセスが行われる。次いで、係数のベクトルにエントロピーコーディングが適用される。変換ユニット中の係数の走査は、エントロピーコーダのために係数の２Ｄアレイをシリアル化する。有意（すなわち、非０(non-zero)）係数の位置を示すための有意性マップ(significance map)が生成され得る。走査は、有意（すなわち、非０(nonzero)）係数のレベルを走査するために、および／または有意係数の符号をコーディングするために適用され得る。
【００６１】
[0066]  ＨＥＶＣ規格では、有意変換係数の位置情報（例えば、有意性マップ）が、走査順序内の非０係数および最後の非０係数のロケーションを示すために、変換ブロックについて最初にコーディングされる。有意性マップおよびレベル情報（すなわち、係数の絶対値と符号）は、逆方向走査順序で係数ごとにコーディングされる。
【００６２】
[0067]  図２は、係数レベルコーディングのための例示的な逆方向走査順序を示す概念図である。Ｈ．２６４規格はジグジグ（zig-zig）走査を定義している。ＨＥＶＣ規格は、サブブロック対角走査、サブブロック水平走査、およびサブブロック垂直走査という、３つの異なる走査を定義している。図２は、逆方向ジグザグ走査パターン２９と、逆方向垂直走査パターン３１と、逆方向水平走査パターン３３と、逆方向対角走査パターン３５とを示しており、それぞれ変換ブロックの８×８サブブロックに適用される。逆方向対角走査パターン３５と、逆方向ジグザグ走査パターン２９と、逆方向垂直走査パターン３１と、逆方向水平走査パターン３３との各々は、変換ブロックの右下隅におけるより高い周波数の係数から変換ブロックの左上隅におけるより低い周波数の係数に進むことに留意されたい。
【００６３】
[0068]  サブブロック対角走査パターン３５と、サブブロック水平走査パターン３３と、サブブロック垂直走査パターン３１とは、ＨＥＶＣ規格の４×４および８×８変換ブロックに適用され得る。サブブロック対角走査パターン３５はまた、ＨＥＶＣ規格で、１６×１６および３２×３２変換ブロックに適用され得る。いくつかの例では、サブブロック対角走査パターン３５がまた、８×８ＴＵに適用され得る。サブブロックベースの走査では、より大きい変換ブロックのある４×４サブブロックが、そのより大きい変換ブロック内の別の４×４サブブロックに進む前に走査される。他の例では、「サブブロック」が、使用される走査順序によるいくつかの連続的に走査される係数からなり得る。例えば、「サブブロック」は、対角走査順序に沿った１６個の連続的に走査される係数からなり得る。
【００６４】
[0069]  図３は、係数グループ（ＣＧ）の係数レベルコーディングのための例示的なサブブロックベースの逆方向対角走査順序を示す概念図である。図３は、４つの４×４サブブロック（３７Ａ、３７Ｂ、３７Ｃ、３７Ｄ）からなる８×８変換ブロック３８を示している。図３に示されているように、サブブロック３７Ｄにおける係数が走査され、その後、サブブロック３７Ｃにおける係数を走査する。次いで走査は、サブブロック３７Ｃからサブブロック３７Ｂに進み、最後にサブブロック３７Ａに進む。図３は、各サブブロックにおいて逆方向対角走査順序を示している。他の例では、どんな走査順序でも使用され得る（例えば、水平、垂直、ジグザグなど）。いくつかの例では、各サブブロック内で順方向走査順序が使用され得る。
【００６５】
[0070]  ＨＥＶＣ規格では、係数がチャンクまたはサブセットにグループ化され得る。係数の有意性マップおよびレベル情報（すなわち、絶対値および符号）は、サブセットごとにコーディングされる。係数のサブセットは、本開示では係数グループ（ＣＧ：coefficient group）と呼ばれることがある。ＣＧは、４×４サブブロックに対応し得る、変換ブロックのための走査順序でｎ個（例えば、ｎ＝１６）の連続する係数として定義され得る。一例では、サブセットが、４×４変換ブロックと８×８変換ブロックとのための走査順序（例えば、順方向または逆方向の対角走査順序、水平走査順序、または垂直走査順序）に沿った１６個の連続する係数からなる。１６×１６および３２×３２変換ブロックの場合、そのより大きい変換ブロック内の係数の４×４サブブロックはサブセットとして扱われる。図３の例では、サブブロック３７の各々がＣＧであり得る。
【００６６】
[0071]  ＣＧ内の係数レベル情報を表すために、以下で説明するシンボルがコーディングされる。一例では、全てのシンボルが逆方向走査順序でコーディングされる。シンボルの各々は、その逆方向走査順序に従ってＣＧの別個の走査においてコーディングされ得る。以下のシンボルは「フラグ」と呼ばれることがある。本開示で説明する「フラグ」のいずれもバイナリシンボルに限定される必要はなく、複数のビットシンタックス要素としても実装され得ることに留意されたい。
【００６７】
[0072]  ｓｉｇＭａｐＦｌａｇとも呼ばれるｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇは、サブセットにおける各係数の有意性を示す。０を超える絶対値をもつ係数は有意であると見なされる。一例として、０のｓｉｇＭａｐＦｌａｇは、係数が有意でないこと、すなわち、０以下であることを示し、一方、１の値は、係数が有意であること、すなわち、０よりも大きいことを示す。このフラグは概して、有意性フラグと呼ばれ得る。ｓｉｇｎＦｌａｇとも呼ばれるｃｏｅｆｆ＿ｓｉｇｎ＿ｆｌａｇは、任意の非０係数（すなわち、ｓｉｇＭａｐＦｌａｇを１としてもつ係数）についての符号情報を示す。例えば、このフラグの０は正の符号を示し、一方、１は負の符号を示す。
【００６８】
[0073]  ｇｒ１Ｆｌａｇとも呼ばれるｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１＿ｆｌａｇは、任意の非０係数（すなわち、ｓｉｇＭａｐＦｌａｇを１としてもつ係数、またはｓｉｇＭａｐＦｌａｇが暗黙的に１として導出される場合）について、係数の絶対値が１よりも大きいかどうかを示す。一例として、０のｇｒ１Ｆｌａｇ値は、係数が１よりも大きい絶対値を有しないことを示し、一方、１のｇｒ１Ｆｌａｇ値は、係数が１よりも大きい絶対値を有することを示す。このフラグは概して、１超フラグ(greater-than-one flag)と呼ばれることがある。
【００６９】
[0074]  ｇｒ２Ｆｌａｇとも呼ばれるｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２＿ｆｌａｇは、１よりも大きい絶対値をもつ任意の係数（すなわち、ｇｒ１Ｆｌａｇを１としてもつ係数）について、係数の絶対値が２よりも大きいかどうかを示す。一例として、０のｇｒ２Ｆｌａｇ値は、係数が２よりも大きい絶対値を有しないことを示し、一方、１のｇｒ２Ｆｌａｇ値は、係数が２よりも大きい絶対値を有することを示す。このフラグは概して、２超フラグ(greater-than-two flag)と呼ばれることがある。ｓｉｇＭａｐＦｌａｇ、ｇｒ１Ｆｌａｇ、およびｇｒ２Ｆｌａｇはそれぞれ、ＣＡＢＡＣを使用してコーディングされ得る。
【００７０】
[0075]  ｌｅｖｅｌＲｅｍシンタックス要素とも呼ばれるｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇシンタックス要素は、前のフラグによってコーディングされた値よりも大きい絶対値をもつ任意の係数について、係数レベルの残りの絶対値を示す。概して、ｌｅｖｅｌＲｅｍシンタックス要素の場合、２よりも大きい絶対値を有する係数（すなわち、ｇｒ２Ｆｌａｇを１としてもつ係数）ごとに、係数レベルの絶対値から３を差し引いた値（すなわち、ａｂｓ（ｌｅｖｅｌ）−３）がコーディングされる。いくつかの例では、現在のＣＧについてｇｒ１Ｆｌａｇおよび／またはｇｒ２Ｆｌａｇの最大数に達したとき、２以下の絶対値をもつ係数レベルをコーディングするためにｌｅｖｅｌＲｅｍシンタックス要素が使用され得る。ｌｅｖｅｌＲｅｍシンタックス要素は、ライスパラメータ、例えばゴロムライスコードまたは指数ゴロムコードの値によって定義されるコードを使用してコーディングされ得る。
【００７１】
[0076]  図４は、ＣＧ３９のための係数レベルをコーディングするための例示的な逆方向対角走査順序を示す概念図である。ＣＧ３９は、４×４変換ブロックであり得るか、あるいは８×８、１６×１６または３２×３２変換ブロック中の４×４サブブロックであり得る。逆方向走査順序で走査される図４に示された係数の符号化シンボルが、表１に要約されている。表１において、ｓｃａｎ＿ｐｏｓは、図４に示されたＣＧ３９の逆方向対角走査パターンに沿った係数の位置を指す。ｓｃａｎ＿ｐｏｓ１５が、走査される最初の係数であり、ＣＧ３９の右下隅にある。ｓｃａｎ＿ｐｏｓ１５における係数は、０の絶対値を有する。ｓｃａｎ＿ｐｏｓ０が、走査される最後の係数であり、ＣＧ３９の左上隅にある。ｓｃａｎ＿ｐｏｓ０における量子化係数は、１０の絶対値を有する。４×４変換ブロック、またはより大きい変換ブロック中の最後の４×４サブブロックの場合、最後の非０係数の位置が知られているので、最初の４つのｓｉｇＭａｐＦｌａｇはコーディングされる必要がない。すなわち、ｓｉｇＭａｐＦｌａｇのコーディングは、最後の非０係数（この例で、ｓｃａｎ＿ｐｏｓ１１における係数）で始まり得る。
【００７２】
【表１】
0006445001.tif 000002
【００７３】
[0077]  これらのシンボルのうち、ｓｉｇＭａｐＦｌａｇ、ｇｒ１Ｆｌａｇおよびｇｒ２Ｆｌａｇのビンは、適応コンテキストモデルを用いて、例えば、ＣＡＢＡＣを使用して符号化される。ｓｉｇｎＦｌａｇと、ｌｅｖｅｌＲｅｍの２値化されたビンとは、固定等確率モデル（例えば、指数ゴロムコードまたはゴロムライスコード）でバイパスモードを通して符号化される。
【００７４】
[0078]  上で説明されたように、ＨＥＶＣ規格におけるシンタックス要素ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇ（すなわち、ｌｅｖｅｌＲｅｍ）は、係数のための係数レベルの残りの絶対値が、係数コーディングのための前の走査パスにおいてコーディングされた値よりも大きい場合、その係数のための係数レベルの残りの絶対値を示す。このシンタックス要素は、スループットを増加させるためにバイパスモードでコーディングした。ＨＥＶＣ規格は、小さい値のためにはゴロムライスコーディングを採用し、より大きい値のためには指数ゴロム（Ｅｘｐ−Ｇｏｌｏｍｂ）コーディングに切り替わる。ゴロムライスコードと指数ゴロムコードとの間の遷移点(transition point)は、単項コード長(unary code length)が４に等しいときである。ライスパラメータは、ゴロムコードのファミリーからコードワードセットを選択するための調節可能な値(tunable value)である。
【００７５】
[0079]  例えば、ゴロムライスコードはゴロムコードのサブセットであり、調節可能なライスパラメータｍを仮定すれば、商ｑ＝ｆｌｏｏｒ（ｎ／ｍ）および剰余ｒ＝ｎ−ｑ×ｍとして値ｎ＞＝０を表し、ただし、ｍは２のべき乗である。商ｑはプレフィックスであり、単項コード表現を有する。剰余ｒはサフィックスであり、固定長表現を有する。指数ゴロムコードで、コード構造は、固定長サフィックスが後続する単項プレフィックスによって同様に形成されるが、サフィックス部分におけるコードワードの数は、単項コード中の各ビットの後に２倍になる。指数ゴロムコードは、従って、コードワード長のより遅い増大を有する。概して、ライスパラメータの値が大きくなるほど、コードの増大は遅くなり、それにより、大きい係数値をコーディングするときのより大きい効率が可能になる。ライスパラメータに関するさらなる詳細は、Ｊ．Ｓｏｌｅ、Ｒ．Ｊｏｓｈｉ、Ｍ．Ｋａｒｃｚｅｗｉｃｚ、Ｎ．Ｎｇｕｙｅｎ、Ｔ．Ｊｉ、Ｇ．Ｃｌａｒｅ、Ｆ．Ｈｅｎｒｙ、Ａ．Ｄｕｅｎａｓによる、Ｔｒａｎｓｆｏｒｍ  Ｃｏｅｆｆｉｃｉｅｎｔ  Ｃｏｄｉｎｇ  ｉｎ  ＨＥＶＣ、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｖｉｄｅｏ  Ｔｒａｎｓｍｉｓｓｉｏｎ（ＨＥＶＣに関する特別号）、２０１２年１２月において見つけられよう。
【００７６】
[0080]  ＨＥＶＣ規格において、ライスパラメータは、各係数グループ（ＣＧ）の開始においてゼロの初期値に等しく設定され、以下のように、ライスパラメータの値と、コーディングされている現在の係数のための係数レベルの絶対値とに応じてＣＧのコーディング中に条件付きで更新される。
【００７７】
【数１】
0006445001.tif 000003
【００７８】
ただし、ｃＲｉｃｅＰａｒａｍはライスパラメータであり、ａｂｓＣｏｅｆｆＬｅｖｅｌは現在の係数のための係数レベルの絶対値であり、ｍｉｎ（  ）は最小値を選択する関数である。ＨＥＶＣライスパラメータ更新方式により、２値化プロセスは、分布において大きい絶対値が観測されたとき、係数統計値に漸進的に適応することが可能になる。
【００７９】
[0081]  上述のように、ＨＥＶＣ規格では、ライスパラメータが、前のＣＧ中の係数の残りの絶対値をコーディングした後に、ビデオデータの変換ブロック中の現在のＣＧについて０の初期値にリセットされる。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、ライスパラメータの値を０に初期化することは最適でないことがある。本開示の技法は、ライスパラメータを常に０にリセットする代わりに、各ＣＧの開始においてライスパラメータの初期値を適応的に設定する。本技法によれば、現在のＣＧのためのライスパラメータの初期値は、非０値に等しく設定され得る。いくつかの例では、ライスパラメータの初期値が、特にスクリーンコンテンツおよびロスレスコーディングについて、より良いコーディング性能を提供するためにビデオデータの統計値に基づいて決定され得る。
【００８０】
[0082]  ライスパラメータ初期化方式の一例では、ライスパラメータが、前のＣＧをコーディングした後にリセットされないことがある。現在のＣＧのためのライスパラメータの初期値は、代わりに、前のＣＧのコーディングの終了においてライスパラメータについて取得されたのと同じ値に設定され得る。ＨＥＶＣ初期化方式の場合のように、初期値は、現在のＣＧの開始において０に等しく設定され得る。しかしながら、ＨＥＶＣ方式とは異なり、ライスパラメータの初期値は０に設定される必要はない。
【００８１】
[0083]  ライスパラメータ初期化方式の別の例では、現在のＣＧのためのライスパラメータの初期値が、前のＣＧをコーディングした後のライスパラメータの値に基づく値に設定され得る。特定の例では、各ＣＧの開始におけるライスパラメータが次のように初期化され得る。
【００８２】
【数２】
0006445001.tif 000004
【００８３】
上記の例では、ライスパラメータの値が、前のＣＧをコーディングした後に、０またはライスパラメータの値の減少のいずれかの最大値の選択に基づいて、現在のＣＧについて初期化される。いくつかの他の例では、ライスパラメータの初期値が、以下の例におけるように上限を定められ得る。
【００８４】
【数３】
0006445001.tif 000005
【００８５】
この例では、ライスパラメータの初期値が２よりも大きくならないように上限を定められる。
【００８６】
[0084]  いくつかの例では、ライスパラメータの前の値から１ではなく２（すなわち、ｎは２に等しい）を減算することを含めて、ライスパラメータの前の値を低減するために１以外の値（例えば、値ｎ）が使用され得る。例えば、変換がそれに適用される変換ブロック中に現在のＣＧが含まれるかどうかに基づいて、ライスパラメータを初期化するための減少の値は変動し得る。例示的な式は以下の通りであり得る。
【００８７】
【数４】
0006445001.tif 000006
【００８８】
上記の例では、変換ブロックが変換スキップブロックである場合（すなわち、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ＝１）、ライスパラメータの値は、前のＣＧをコーディングした後に、０またはライスパラメータの値の１だけの減少のいずれかの最大値の選択に基づいて、現在のＣＧについて初期化される。一方、変換ブロックが変換スキップブロックである場合（すなわち、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ＝０）、ライスパラメータの値は、前のＣＧをコーディングした後に、０またはライスパラメータの値の２だけの減少のいずれかの最大値の選択に基づいて、現在のＣＧについて初期化される。
【００８９】
[0085]  本開示で説明するライスパラメータ初期化方式の例示的な場合は、全ての変換ブロック中に含まれるＣＧに適用され得るか、または、変換ブロックに変換が適用されるかどうかに基づいてＣＧに適用され得る。例えば、変換スキッピングまたは変換バイパスを伴う変換ブロックの場合、ライスパラメータ値は、変換ブロック中の現在のＣＧについて０にリセットされないことがあるが、変換がそれに適用されている変換ブロックについては、ライスパラメータは変換ブロック中の現在のＣＧについて０にリセットされ得る。
【００９０】
[0086]  例えば、変換スキップモードでのロッシーコーディングの場合、現在のＣＧについて初期化されるライスパラメータの値の減少は、変換スキップブロック中のＣＧのみに適用され得る。例示的な式は以下の通りであり得る。
【００９１】
【数５】
0006445001.tif 000007
【００９２】
上記の例では、変換ブロックが変換スキップブロックである場合（すなわち、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ＝１）、ライスパラメータの値が、前のＣＧをコーディングした後に、０またはライスパラメータの値の１だけの減少のいずれかの最大値の選択に基づいて、現在のＣＧについて初期化される。一方、変換ブロックが変換スキップブロックである場合（すなわち、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ＝０）、ライスパラメータの値は、ＨＥＶＣ初期化方式の場合のように、現在のＣＧについて０に初期化される。
【００９３】
[0087]  ライスパラメータ初期化方式のさらなる一例では、現在のＣＧのためのライスパラメータの初期値が、前に復号された係数のための係数レベルの統計値に基づいて決定され得る。係数レベルの統計値は、前にコーディングされた係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。初期化方式は、現在のＣＧと同じ変換ブロック中に含まれるＣＧ中の前にコーディングされた係数、および／または現在のＣＧを含む変換ブロックに対して前にある異なる変換ブロック中に含まれるＣＧ中の前にコーディングされた係数に依存し得る。
【００９４】
[0088]  場合によっては、統計値ベースのライスパラメータ初期化方式は、変換ブロックタイプと、変換ブロックサイズと、変換ブロック中のＣＧの位置と、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するかと、変換ブロックの色成分と、変換ブロックのビット深度とのうちの１つまたは複数に依存し得る。さらに、統計値ベースのライスパラメータ初期化方式は、前のおよび現在の変換ブロック中の前にコーディングされた係数の残りの絶対レベルに依存し得る。例えば、ライスパラメータ初期化方式は、前のＣＧ中の係数レベルの最後のコーディングされた絶対値または係数レベルの最後のコーディングされた残りの絶対値に、前のＣＧ中の前にコーディングされた係数のための係数レベルの合計または他の統計値に、あるいは、より単純に、前のＣＧ中でコーディングされる第１の係数の係数レベルに依存し得る。
【００９５】
[0089]  以下で、統計値ベースのライスパラメータ初期化方式のために使用される統計値収集(statistics gathering)のいくつかの例について説明する。本開示では、「ｓｔａｔＣｏｅｆｆ」という用語および「ｍ＿ｓｕｍＣｏｅｆｆ」という用語が、統計値を示すために互換的に使用され、「ｕｉＬｅｖｅｌ」という用語が、前にコーディングされた係数の係数レベルの絶対値または残りの絶対値を示すために使用される。
【００９６】
[0090]  一例では、統計値が、ビデオデータのスライスまたはコーディングユニット（ＣＵ）にわたって、前のコーディングされた係数の係数レベルの絶対値または残りの絶対値の平均または移動平均(running average)または同様の統計値を計算することによって決定され得る。コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）コンテキストと同様の様式で、この平均または移動平均は、ビデオデータのスライスの開始において初期化され、スライスの各ＣＧにおいて、ＣＧ中の現在のコーディングされた係数レベルに基づいて更新され得る。係数レベルの残りの絶対値（すなわち、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇ値）は、ライスパラメータによって定義されるコード、例えば、ゴロムライスコードまたは指数ゴロムコードを使用してバイパスコーディングされることを理解されたい。理解を助けるのみのために、ＣＡＢＡＣ、およびＣＡＢＡＣコンテキストの初期化との比較について説明を行う。
【００９７】
[0091]  別の例では、統計値が、所与の前にコーディングされた係数のための係数レベルを統計値の値と直接比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することによって決定され得る。例えば、統計値は、以下の条件式に従って決定され得る。
【００９８】
【数６】
0006445001.tif 000008
【００９９】
上記の式において、統計値（ｓｔａｔＣｏｅｆｆ）の値は、現在の係数レベル（ｕｉＬｅｖｅｌ）が前のｓｔａｔＣｏｅｆｆよりも大きい場合は増加されるか、現在の係数レベルがｓｔａｔＣｏｅｆｆよりも小さい場合は減少されるか、または現在の係数レベルが前のｓｔａｔＣｏｅｆｆに等しい場合は不変のままにされる。ｓｔａｔＣｏｅｆｆの値は、ＣＡＢＡＣコンテキストが初期化されるとき、すなわち、コーディングされているビデオデータの各スライスの開始におけるコーディングプロセス中の同じポイントにおいて０に初期化され得る。
【０１００】
[0092]  別の例では、統計値が、所与の前にコーディングされた係数のための係数レベルを統計値の予め定義された関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって決定され得る。同じく、この例では、統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の値が、ビデオデータの各スライスの開始において０にリセットされ得る。統計値の予め定義された関数は、第２の一定値で除算された統計値の値だけ左シフトされた第１の一定値に基づき得る。統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の関数の一例は次のように与えられる。
【０１０１】
【数７】
0006445001.tif 000009
【０１０２】
上記の擬似コード(pseudo-code)において、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇおよびｈはパラメータであり、＜＜は左シフト演算を示す。
【０１０３】
[0093]  以下は、パラメータａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇおよびｈの例示的な値を使用する上記の式のいくつかの例である。ａ＝３、ｄ＝２、第１の一定値（ｈ）が１に等しく、第２の一定値（ｆ）が４に等しく、残りのパラメータが０に等しく設定される場合、統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の関数は次のように与えられる。
【０１０４】
【数８】
0006445001.tif 000010
【０１０５】
[0094]  ａ＝１、ｄ＝１、第１の一定値（ｈ）が１に等しく、第２の一定値（ｆ）が４に等しく、残りのパラメータが０に等しく設定される場合、統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の関数は次のように与えられる。
【０１０６】
【数９】
0006445001.tif 000011
【０１０７】
[0095]  いくつかの例では、係数レベルの統計値の関数が、スライスの開始において０に初期化された以後に統計値に適用される更新の総数に関係する変数を含み得る。総カウンタ変数（ｍ＿ｔｏｔａｌ＿ｃｏｕｎｔｅｒ）を含む統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の関数の一例は次のように与えられる。
【０１０８】
【数１０】
0006445001.tif 000012
【０１０９】
上記の擬似コードにおいて、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇおよびｈはパラメータであり、＜＜は左シフト演算を示し、ｍ＿ｔｏｔａｌ＿ｃｏｕｎｔｅｒは、統計値（ｍ＿ｓｕｍＣｏｅｆｆ）が増加されるか減少されるかにかかわらず、統計値の各更新の後に増加する。
【０１１０】
[0096]  上で説明された統計値収集は、予め定義された頻度に従って統計値ベースのライスパラメータ初期化方式について行われ得る。一例では、統計値が、ＣＧ中の係数レベルの各絶対値をコーディングした後に、またはＣＧ中の係数レベルの各残りの絶対値をコーディングした後に更新され得る。別の例では、複雑さの増加を制限するために、統計値が、ＣＧごとにまたは変換ブロックごとに１回のみ更新され得る。この手法では、各コード化係数レベルについて統計値を更新することが不要であり得るが、代わりに、統計値が、変換ブロックごとにまたはＣＧごとに１回更新され得る（これは、ＨＥＶＣでは１６個の係数ごとに１回である）。
【０１１１】
[0097]  場合によっては、統計値は、ＣＧ中の係数レベルの第１の絶対値がコーディングされるときのみ更新され得る。他の場合には、統計値は、ＣＧ中の係数レベルの第１の残りの絶対値がコーディングされるときのみ更新され得る。以下の擬似コードは、上で説明された統計値収集式に関するこの制限を示し、ここで、第１のコード化係数レベル（ｕｉＬｅｖｅｌ）の値は、統計値（ｓｔａｔＣｏｅｆｆ）の値と直接比較される。
【０１１２】
【数１１】
0006445001.tif 000013
【０１１３】
上記の式において、「ｆｉｒｓｔＧｏｌｏｍｂＣｏｅｆｆｉｎＣＧ」という用語は、現在のコード化係数レベルがＣＧ中の第１の残りの絶対値であるかどうかを示すために使用され、「ｓｔａｔＣｏｅｆｆ」という用語は、統計値を示すために使用され、「ｕｉＬｅｖｅｌ」という用語は、前にコーディングされた係数の係数レベルの第１の絶対値または第１の残りの絶対値を示すために使用される。
【０１１４】
[0098]  頻度制限が、上で説明された統計値収集式に同様に適用され得、ここで、第１のコード化係数レベル（ｕｉＬｅｖｅｌ）の値は、以下の擬似コードに示されているように、統計値（ｓｔａｔＣｏｅｆｆ）の予め定義された関数と比較される。
【０１１５】
【数１２】
0006445001.tif 000014
【０１１６】
[0099]  場合によっては、上で説明された統計値収集は、ＣＧを含む変換ブロックの特性に基づいて定義されるＣＧの複数の異なるカテゴリーの各々について別々に行われ得る。この場合、変換ブロック中の現在のＣＧのカテゴリーは、変換ブロックの特性に基づいて決定され得、ライスパラメータは、現在のＣＧについて、決定されたカテゴリーの統計値に基づいて初期化され得る。以下で、統計値ベースのライスパラメータ初期化方式のために使用される統計値を区分するいくつかの例について説明する。
【０１１７】
[0100]  統計値を区分またはカテゴリー分類するために使用される変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるかと、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するかどうかと、変換ブロックのサイズと、変換ブロック内のＣＧの位置とのうちの１つまたは複数を含み得る。変換ブロック内のＣＧの位置の特性は、現在のＣＧが変換ブロック中の左上４×４サブブロックであるか否かを示し得る。さらに、特性は、変換ブロックが変換スキップブロックとしてコーディングされるか否か、または変換ブロックが変換量子化バイパスブロックとしてコーディングされるかどうかを含み得る。統計値は、従って、上記の特性のうちの１つまたは複数に応じて別々に保持され得る。別々の統計値が、ＣＧまたは変換ブロックの各タイプまたはカテゴリーについて決定され得る。別々の統計値は、統計値ベースのライスパラメータ初期化方式のためにより正確な推定を提供するが、より多くのストレージリソースも必要とし得る。
【０１１８】
[0101]  第１の例として、変換ブロックがルーマブロックであるか否かと、ＣＧが変換ブロック中の左上サブブロックであるか否かとに依存する変数ＴＹＰＥに基づいて統計値の区分またはカテゴリーを決定するために、以下の関数が使用され得る。
【０１１９】
【数１３】
0006445001.tif 000015
【０１２０】
上記の関数によれば、変数ＴＹＰＥは、変換ブロックがルーマブロックである（ｉｓＬｕｍａ＝１）かクロマブロックである（ｉｓＬｕｍａ＝０）かと、ＣＧが左上サブブロックである（ｉＳｕｂＳｅｔ＝＝０）か否（ｉＳｕｂＳｅｔ＞０）かとに応じて、４つの値を有することができる。
【０１２１】
[0102]  別の例では、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに、統計値の区分またはカテゴリーが依存する。
【０１２２】
【数１４】
0006445001.tif 000016
【０１２３】
この関数によれば、変数ＴＹＰＥは、変換ブロックがルーマブロックである（ｉｓＬｕｍａ＝１）かクロマブロックである（ｉｓＬｕｍａ＝０）かと、変換ブロックが変換スキップモードでコーディングされる（ｉｓＴｒａｎｓｆｏｒｍＳｋｉｐ＝１）か否（ｉｓＴｒａｎｓｆｏｒｍＳｋｉｐ＝０）かとに応じて、４つの値を有することができる。
【０１２４】
[0103]  別の例では、変換ブロックがルーマブロックであるか否かと、ＣＧが変換ブロック中の左上サブブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに、統計値の区分またはカテゴリーが依存する。
【０１２５】
【数１５】
0006445001.tif 000017
【０１２６】
この関数によれば、変数ＴＹＰＥは、変換ブロックがルーマブロックである（ｉｓＬｕｍａ＝１）かクロマブロックである（ｉｓＬｕｍａ＝０）かと、変換ブロックが変換スキップモードでコーディングされる（ｉｓＴｒａｎｓｆｏｒｍＳｋｉｐ＝１）か否（ｉｓＴｒａｎｓｆｏｒｍＳｋｉｐ＝０）かと、ＣＧが左上サブブロックである（ｉＳｕｂＳｅｔ＝＝０）か否（ｉＳｕｂＳｅｔ＞０）かとに応じて、８つの値を有することができる。
【０１２７】
[0104]  別の例では、変換ブロックが変換量子化バイパスとしてコーディングされるか否か、すなわち、変換プロセスと量子化プロセスの両方がロスレスコーディングについてバイパスされるか否かに、統計値の区分またはカテゴリーが依存する。
【０１２８】
[0105]  上で説明されたいくつかの例のうちの１つに従って定義されるＴＹＰＥ変数を使用すると、ならびに、このＴＹＰＥ変数を、第１のコード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｓｔａｔＣｏｅｆｆ）の値と直接比較されるという上で説明された統計値収集式、およびＣＧ中の第１の係数レベル（ｆｉｒｓｔＧｏｌｏｍｂＣｏｅｆｆｉｎＣＧ）がコーディングされるときのみ統計値が更新されるという上で説明された統計値収集頻度制限と組み合わせると、この合成手法は次のようになり得る。
【０１２９】
【数１６】
0006445001.tif 000018
【０１３０】
上記の擬似コードにおいて、「ｓｔａｔＣｏｅｆｆ［ＴＹＰＥ]  」という用語は、変数ＴＹＰＥによって示されるＣＧのカテゴリーについて収集される統計値を示す。
【０１３１】
[0106]  第１のコード化係数レベル（ｕｉＬｅｖｅｌ）の値が、統計値（ｓｔａｔＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集式を使用する合成手法の別の例は、次のようになり得る。
【０１３２】
【数１７】
0006445001.tif 000019
【０１３３】
この場合も、上記の擬似コードにおいて、「ｓｔａｔＣｏｅｆｆ［ＴＹＰＥ]  」という用語は、変数ＴＹＰＥによって示されるＣＧのカテゴリーについて収集される統計値を示す。
【０１３４】
[0107]  いくつかの例では、コーデック（すなわち、ビデオエンコーダ／デコーダ）が、ＣＧのためのＴＹＰＥ変数を決定するために複数の方法をサポートし得る。例えば、コーデックは、ＴＹＰＥ変数について上で説明された例示的な関数のうちの２つ以上をサポートし得る。この場合、コーデックは、コーディングまたは導出された指示に基づいて統計値ベースのライスパラメータ初期化方式のために使用される統計値を区分すべき様式を決定するための方法のうちの１つを選択し得る。複数の方法の場合のための例示的な擬似コードが以下に与えられる。
Ｍｅｔｈｏｄ１：
【０１３５】
【数１８】
0006445001.tif 000020
【０１３６】
Ｍｅｔｈｏｄ２：
【０１３７】
【数１９】
0006445001.tif 000021
【０１３８】
[0108]  ある場合には、シンタックス要素は、ＣＧの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すために、コード化ビットストリーム中でシグナリングされ得る。シンタックス要素は、残差ビデオデータのためのシーケンスパラメータセット（ＳＰＳ）またはピクチャパラメータセット（ＰＰＳ）のうちの１つ中に含まれるフラグを備え得る。一例として、ビデオエンコーダ２０は、コード化ビットストリーム中で高レベルシンタックスでフラグ（例えば、ｍｅｔｈｏｄ＿ｆｌａｇ）をシグナリングし得、ビデオデコーダ３０は、ｍｅｔｈｏｄ＿ｆｌａｇを受信するためにコード化ビットストリームをパースし得る。この例で、ｍｅｔｈｏｄ＿ｆｌａｇ＝０は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに基づいて統計値のカテゴリーを決定するためにＭｅｔｈｏｄ１が使用されることを示す。ｍｅｔｈｏｄ＿ｆｌａｇ＝１は、変換ブロックが変換スキップモードでコーディングされるか否かのみに基づいて統計値のカテゴリーを決定するためにＭｅｔｈｏｄ２が使用されることを示す。コーデックによってサポートされる３つ以上の方法がある場合、シンタックス要素は、バイナリフラグの代わりに、選択された方法を示すためのインデックス値を備え得る。
【０１３９】
[0109]  別の場合には、コーデックは、ビデオデータのカラーフォーマットに基づいてＣＧの様々なカテゴリーを定義するために使用される方法のうちの１つを選択し得、その場合、方法を示すために追加のシンタックス要素がビットストリーム中でシグナリングされる必要はない。例えば、ビデオデータのＣＧのためのＴＹＰＥ変数を決定するために使用される方法は、ビデオデータをコーディングするためにＹＵＶカラーフォーマットが使用されるかＲＧＢカラーフォーマットが使用されるかに基づいて選択され得る。一例として、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに基づいて統計値のカテゴリーを決定するＭｅｔｈｏｄ１は、コーディングされるビデオデータがＹＵＶカラーフォーマットであるときに使用される。変換ブロックが変換スキップモードでコーディングされるか否かのみに基づいて統計値のカテゴリーを決定するＭｅｔｈｏｄ２は、コーディングされるビデオデータがＲＧＢカラーフォーマットであるときに使用される。ビデオエンコーダ２０とビデオデコーダ３０とがビデオデータのカラーフォーマットを検出することが可能である場合、選択された方法を示すシンタックス要素、例えば、方法フラグまたは方法インデックス）は、ビットストリーム中でシグナリングされない。
【０１４０】
[0110]  本開示で説明する技法によれば、統計値ベースのライスパラメータ初期化方式は、上で説明された例のいずれかの組合せに従って、前にコーディングされた係数について収集される係数レベル統計値に基づいて現在のＣＧのためのライスパラメータの初期値を決定する。収集された統計値の値を現在のＣＧのためのライスパラメータの初期値にマッピングするいくつかの例示的な技法について以下で説明する。ライスパラメータの初期値への統計値のマッピングは、各ＣＧ（例えば、４×４変換ブロック、または変換ブロックの４×４サブブロック）について行われ得るか、あるいは各ＴＵについて（例えば、ＴＵの開始において）１回のみ行われ得る。
【０１４１】
[0111]  一例では、統計値の値が、記憶されたテーブルに従って初期ライスパラメータにマッピングされ得る。マッピングテーブルの入力は統計値の値であり得、テーブルの出力はライスパラメータの初期値であり得る。場合によっては、マッピングテーブルへの入力として、統計値のクリッピングされたバージョンが使用され得る。例えば、最大ライスパラメータが５であり、統計値が０と３１との間にクリッピングされる場合、マッピングテーブルは次のように与えられ得る。
【０１４２】
【数２０】
0006445001.tif 000022
【０１４３】
各ＣＧの開始において、収集された統計値に基づいてライスパラメータの初期値を決定するために、上記のテーブルが使用され得る。他の例では、収集された統計値に基づいてライスパラメータの初期値を決定するために、異なるマッピングテーブルが使用され得る。
【０１４４】
[0112]  統計値収集の３つの主要な例示的な方法が上で説明され、ここで、「ｓｔａｔＣｏｅｆｆ」および「ｍ＿ｓｕｍＣｏｅｆｆ」という記法が次の統計値を示すために互換的に使用され得る。（１）コード化係数レベル（ｕｉＬｅｖｅｌ）値が統計値（ｓｔａｔＣｏｅｆｆ）の値と直接比較される統計値収集、（２）コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較される統計値収集、および（３）コード化係数レベル（ｕｉＬｅｖｅｌ）の値が、総カウンタ変数（ｍ＿ｔｏｔａｌ＿ｃｏｕｎｔｅｒ）を含む統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較される、統計値収集。
【０１４５】
[0113]  統計値収集の特定の例示的な方法のうちの１つと、上で説明されたマッピングテーブルとを使用すると、変数ＴＹＰＥによって示されるＣＧのカテゴリーについて収集される統計値に基づくライスパラメータ初期化は、次のように行われ得る。
【０１４６】
【数２１】
0006445001.tif 000023
【０１４７】
[0114]  他の例では、統計値の値が、マッピングを行う関数に従ってライスパラメータの初期値にマッピングされ得る。場合によっては、マッピング関数は、収集される統計値の関数であり得る。マッピング関数を使用することにより、マッピングテーブルのさらなるストレージ消費が回避し得る。
【０１４８】
[0115]  一例として、ライスパラメータは、以下に与えられるように、一定値だけ右シフトされた収集される統計値に基づいて初期化され得る。
【０１４９】
【数２２】
0006445001.tif 000024
【０１５０】
上記の式において、「＞＞」は右シフト演算を示し、Ｒはパラメータである。場合によっては、ライスパラメータの最大値を、４よりも大きいかまたはそれに等しい整数値であり得るＭＡＸ＿ＲＩＣＥに制限することが望ましいことがある。この場合、関数は次のように与えられ得る。
【０１５１】
【数２３】
0006445001.tif 000025
【０１５２】
[0116]  別の例として、ライスパラメータは、以下に与えられるように、収集された統計値の線形関数に基づいて初期化され得る。
【０１５３】
【数２４】
0006445001.tif 000026
【０１５４】
上記の式において、ａ、ｂ、ｃおよびｄはパラメータ値である。
【０１５５】
[0117]  さらなる一例として、ライスパラメータは、収集された統計値の区分線形関数に基づいて初期化され得る。区分線形関数の２つの特定の例は次のように与えられる。
【０１５６】
【数２５】
0006445001.tif 000027
【０１５７】
[0118]  別の例では、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法に基づいてライスパラメータが初期化され得る。この場合、収集された統計値の値は、統計値の関数に従ってライスパラメータの初期値にマッピングされる。一例では、ライスパラメータを初期化するために使用される統計値の関数が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づき得る。
【０１５８】
[0119]  マッピング関数の一例は次のように与えられる。
【０１５９】
【数２６】
0006445001.tif 000028
【０１６０】
上記の式において、ＤＥＬＡＹは一定値であり、ＭＡＸ＿ＲＩＣＥ＿ＰＡＲＡＭ＿ＩＮＩＴはライスパラメータの最大値である。場合によっては、ライスパラエムタ（paraemter）の最大値は、４よりも大きいかまたはそれに等しくなり得る。一定値はユーザ定義のパラメータであり得る。ＤＥＬＡＹ＝４でのマッピング関数の一例は次のように与えられる。
【０１６１】
【数２７】
0006445001.tif 000029
【０１６２】
上記の例において、「ｓｔａｔＣｏｅｆｆ」という用語は、「ｍ＿ｓｕｍＣｏｅｆｆ」の代わりに統計値の値を示すために使用され、ｍａｘＲｉｃｅＰａｒａは、ＭＡＸ＿ＲＩＣＥ＿ＰＡＲＡＭ＿ＩＮＩＴの代わりにライスパラメータの最大値を示すために使用される。
【０１６３】
[0120]  さらなる一例では、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が、総カウンタ変数（ｍ＿ｔｏｔａｌ＿ｃｏｕｎｔｅｒ）を含む統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法に基づいてライスパラメータが初期化され得る。この場合、収集された統計値の値が、統計値の関数に従ってライスパラメータの初期値にマッピングされる。マッピング関数の一例は次のように与えられる。
【０１６４】
【数２８】
0006445001.tif 000030
【０１６５】
上記の式において、「ｔｈｒｅｓ０」という用語は第１のしきい値を示し、「ｔｈｒｅｓ１」は第２のしきい値を示し、ｋ０およびｋ１はパラメータである。この関数によれば、統計値更新の総数で除算された統計値の値がｔｈｒｅｓ０よりも大きい場合、ライスパラメータの初期値は、ｋ０だけ増分されたライスパラメータの前の値に等しく設定される。統計値更新の総数で除算された統計値の値がｔｈｒｅｓ１よりも小さい場合、ライスパラメータの初期値は、ｋ１だけ増分されたライスパラメータの前の値に等しく設定される。
【０１６６】
[0121]  いくつかの例では、初期ライスパラメータが、最小値と最大値との間にクリッピングされ得る。この場合、ライスパラメータを初期化するために使用されるマッピング関数に余分のクリッピング関数が追加されることになる。クリッピングされたマッピング関数の一例は次のように与えられる。
【０１６７】
【数２９】
0006445001.tif 000031
【０１６８】
上記の式において、ＭＩＮ＿ＲＩＣＥはライスパラメータの最小値であり、ＭＡＸ＿ＲＩＣＥはライスパラメータの最大値である。一例では、ＭＩＮ＿ＲＩＣＥの値が０に等しくなり得、ＭＡＸ＿ＲＩＣＥの値が、４よりも大きいかまたはそれに等しい整数値であり得る。ＭＩＮ＿ＲＩＣＥとＭＡＸ＿ＲＩＣＥとの値は、ビット深度、プロファイル、カラーフォーマット、コーディングモード（すなわち、ロスレスコーディングまたはロッシーコーディング）、および他のタイプのサイド情報のうちの１つまたは複数など、サイド情報に依存し得る。
【０１６９】
[0122]  上で説明されたように、ＨＥＶＣでは、ライスパラメータの値が、ＣＧ中の係数レベルの各残りの絶対値をコーディングした後に更新され得る。いくつかの例では、ライスパラメータの更新された値に、同様のクリッピングが適用され得る。範囲（すなわち、ミニナム（mininum）値および最大値）は、更新プロシージャで、初期化プロシージャのためのものと異なり得るか、または範囲は、初期化のために使用される範囲と同じであり得る。同様に、範囲は、ビット深度、プロファイル、カラーフォーマット、コーディングモード（すなわち、ロスレスコーディングまたはロッシーコーディング）、および他のサイド情報のうちの１つまたは複数に依存し得る。
【０１７０】
[0123]  統計値をライスパラメータの初期値にマッピングする４つの追加の例が以下に与えられる。
【０１７１】
[0124]  第１の例では、ｍ＿ｓｕｍＣｏｅｆｆおよびｍ＿ｓｕｍＣｏｅｆｆ２と呼ばれる２つの統計値が使用される。ｍ＿ｓｕｍＣｏｅｆｆの値は、次のように、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。
【０１７２】
【数３０】
0006445001.tif 000032
【０１７３】
[0125]  ｍ＿ｓｕｍＣｏｅｆｆ２の値は、次のように、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ２）の値と直接比較されるという上で説明された統計値収集の方法を使用して導出され得る。
【０１７４】
【数３１】
0006445001.tif 000033
【０１７５】
[0126]  この第１の例では、ライスパラメータの初期値への統計値のマッピングが、変換コード化ブロックで、変換スキップブロックのためのものと異なり得る。変換スキップブロックの場合、初期化関数は次のように与えられ得る。
【０１７６】
【数３２】
0006445001.tif 000034
【０１７７】
変換コード化ブロックの場合、初期化関数は次のように与えられ得る。
【０１７８】
【数３３】
0006445001.tif 000035
【０１７９】
上記のセドゥオ（pseduo）コードにおいて、「Ｔｈ」はしきい値である。Ｔｈの例示的な値は（１＜＜ｕｉＧｏＲｉｃｅＰａｒａｍ）であり得る。
【０１８０】
[0127]  第２の例で、ｍ＿ｓｕｍＣｏｅｆｆと呼ばれる統計値は、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第２の例では、ライスパラメータの初期値への統計値のマッピングが、変換コード化ブロックで、変換スキップブロックのためのものと異なり得る。変換スキップブロックの場合、初期化関数は次のように与えられ得る。
【０１８１】
【数３４】
0006445001.tif 000036
【０１８２】
変換コード化ブロックの場合、初期化関数は次のように与えられ得る。
【０１８３】
【数３５】
0006445001.tif 000037
【０１８４】
上記のセドゥオコードにおいて、「Ｔｈ」はしきい値である。Ｔｈの例示的な値はＭＡＸ＿ＲＩＣＥ＿ＰＡＲＡＭ＿ＩＮＩＴ／２−２であり得る。
【０１８５】
[0128]  第３の例で、ｍ＿ｓｕｍＣｏｅｆｆと呼ばれる統計値は、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第３の例では、ライスパラメータの初期値への統計値のマッピングが次のように与えられ得る。
【０１８６】
【数３６】
0006445001.tif 000038
【０１８７】
上記のセドゥオコードにおいて、「Ｔｈ」はしきい値であり、「ｄ」はパラメータである。
【０１８８】
[0129]  第４の例で、ｍ＿ｓｕｍＣｏｅｆｆと呼ばれる統計値は、コード化係数レベル（ｕｉＬｅｖｅｌ）の値が統計値（ｍ＿ｓｕｍＣｏｅｆｆ）の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第４の例では、ライスパラメータの初期値への統計値のマッピングが次のように与えられ得る。
【０１８９】
【数３７】
0006445001.tif 000039
【０１９０】
上記のセドゥオコードにおいて、「Ｔｈ」はしきい値であり、「ｄ」、ＤＥＬＡＹ０およびＤＥＬＡＹ１はパラメータである。この第４の例で、統計値の値がしきい値（Ｔｈ）に等しいとき、上記の式のいずれかを使用して導出されるライスパラメータの初期値（ｕｉＧｏＲｉｃｅＰａｒａｍ）は同じである。
【０１９１】
[0130]  いくつかの例では、ライスパラメータの初期値としきい値とを決定するために使用されるマッピング関数が固定であり、ビデオエンコーダ２０とビデオデコーダ３０の両方に知られ得る。他の例では、ライスパラメータの初期値としきい値とを決定するために使用されるマッピング関数が、サイド情報に基づいて適応的に決定され得る。サイド情報は、ビデオエンコーダ２０とビデオデコーダ３０との各々によって独立して導出され得るか、あるいはサイド情報は、ＳＰＳまたはＰＰＳのいずれかにおいて高レベルシンタックスを使用してビデオエンコーダ２０からビデオデコーダ３０にシグナリングされ得るか、あるいは、サイド情報を決定するために導出とシグナリングとの何らかの組合せが使用され得る。例えば、サイド情報は、フレームサイズ、フレームタイプ、ＣＵサイズ、ＴＵサイズ、ＴＵタイプ（例えば、変換スキップモードまたは変換モード）、色成分、イントラまたはインター予測モード、量子化パラメータ（ＱＰ）、ビット深度、カラーフォーマット（例えば、４４４／４２２／４２０）、有意係数フラグ（数と配信の両方）、１超過（すなわち、１よりも大きい）フラグ（数と配信の両方）、および２超過（すなわち、２よりも大きい）フラグ（数と配信の両方）のうちの１つまたは複数を含み得る。それらはまた、明示的にシグナリングされ得る。
【０１９２】
[0131]  現在のＣＧのためのライスパラメータを初期化した後に、ライスパラメータの初期値は、ライスパラメータによって定義されるコード、例えば、ゴロムライスコードまたは指数ゴロムコードを使用して現在のＣＧ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングした後に更新され得る。統計値ベースのライスパラメータ初期化方式のための統計値は、ライスパラメータの値を更新する前または更新した後のいずれかに、現在のＣＧ中の１つまたは複数の係数レベルに基づいて決定され得る。
【０１９３】
[0132]  いくつかの例では、統計値が、現在のＣＧ中のコード化係数レベルと、現在のＣＧのためのライスパラメータの現在値との比較または計算に基づき得る。係数レベルとライスパラメータ値とに基づく統計値の一例は次のように与えられる。
【０１９４】
【数３８】
0006445001.tif 000040
【０１９５】
上記の擬似コードにおいて、「ＵｎｄｅｒｓｈｏｏｔＣｎｔ」、「ＯｖｅｒｓｈｏｏｔＣｎｔ」および「ＴｏｔａｌＣｎｔ」は、ライスパラメータを初期化するために使用されることになる統計値を示す。さらに、「ｕｉＧｏＲｉｃｅＰａｒａｍ」はライスパラメータの値を示し、「ｓ」はパラメータであり、ａｂｓＣｏｅｆｆ［ｉｄｘ]  は、インデックスｉｄｘにおける係数のための係数レベルの絶対値である。
【０１９６】
[0133]  いくつかの例では、統計値が、ライスパラメータの値を更新する前に決定され得る。この場合、統計値を決定するために使用される比較または計算において、ライスパラメータの更新されていない値が使用される。係数レベルと、ライスパラメータの更新されていない値とに基づいて統計値を決定し、次いで、ライスパラメータの値を更新する例示的な組合せは次のように与えられる。
【０１９７】
【数３９】
0006445001.tif 000041
【０１９８】
上記の擬似コードにおいて、「ＭＡＸ＿ＲＩＣＥ＿ＰＡＲＡＭ」はライスパラメータの最大値を示し、ｍｉｎ＜ＵＩｎｔ＞（ ）は、最小値を選択する関数である。いくつかの例では、ライスパラメータの最大値が、少なくとも４の整数値に等しくなり得る。他の例では、統計値が、ライスパラメータの値を更新した後に決定され得る。この場合、統計値を決定するために使用される比較または計算において、ライスパラメータの更新された値が使用される。
【０１９９】
[0134]  いくつかの例では、上で説明された統計値ベースのライスパラメータ初期化方式のための統計値の更新が、ライスパラメータの更新と統合され得る。上で説明されたように、ＨＥＶＣでは、ライスパラメータの初期値が、ライスパラメータの初期値と、現在の係数グループ中でコーディングされている係数のための係数レベルの絶対値とに基づいて、条件付きで更新され得る。ライスパラメータの値は、現在のＣＧ中の係数のための各残りの絶対レベルをコーディングした後に、条件付きで更新され続け得る。ＨＥＶＣ条件付き更新方式は次のように与えられる。
【０２００】
【数４０】
0006445001.tif 000042
【０２０１】
上記の擬似コードにおいて、「ｕｉＧｏＲｉｃｅＰａｒａｍ」はライスパラメータの値を示し、ａｂｓＣｏｅｆｆ［ｉｄｘ]は、インデックスｉｄｘにおける係数のための係数レベルの絶対値であり、「ＭＡＸ＿ＲＩＣＥ＿ＰＡＲＡＭ」はライスパラメータの最大値を示し、ｍｉｎ＜ＵＩｎｔ＞（ ）は、最小値を選択する関数である。
【０２０２】
[0135]  いくつかの例では、後続のＣＧの開始においてライスパラメータの値を初期化するために使用される統計値の更新が、現在のＣＧの係数レベルに基づくライスパラメータ更新と統合され得る。統計値とライスパラメータ値との統合された更新の一例は次の通りある。
【０２０３】
【数４１】
0006445001.tif 000043
【０２０４】
上記の擬似コードにおいて、「ＵｎｄｅｒｓｈｏｏｔＣｎｔ＋＋」は統計値の更新を示す。
【０２０５】
[0136]  いくつかの例では、次のコーディングユニット（例えば、４×４ＣＧ、ＴＵ、またはＣＵ）についてのライスパラメータ（または、予測子、例えば、ライスパラメータの現在値と比較されるΔ値）の更新された値が、統計値のために使用されるパラメータの一部または全部に基づいて計算される。例えば、一例では、ＯｖｅｒｓｈｏｏｔＣｎｔの値が高くなるほど、更新されたライスパラメータの値がより小さくなる。別の例では、ＵｎｄｅｒｓｈｏｏｔＣｎｔの値が高くなるほど、更新されたライスパラメータの値がより大きくなる。
【０２０６】
[0137]  ビデオデータのビット深度または別の特性に基づいて各ＣＧについてライスパラメータを初期化するいくつかの例について以下で説明する。これらの例では、各ＣＧについてのライスパラメータの初期化が、収集される統計値に依存しない。上で説明された統計値ベースのライスパラメータ初期化方式の場合のように、ライスパラメータ初期化は、各ＣＧ（例えば、４×４変換ブロック、または変換ブロックの４×４サブブロック）について行われ得るか、あるいは各ＴＵについて（例えば、ＴＵの開始において）１回のみ行われ得る。
【０２０７】
[0138]  一例では、ライスパラメータの初期値が、代わりに、ビデオデータのビット深度に基づき得る。以下は、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値が、ＣＧの現在の成分（例えば、ルーマ成分、またはクロマ成分のうちの１つ）のビット深度の関数である例である。
【０２０８】
【数４２】
0006445001.tif 000044
【０２０９】
上記の式において、ｂｉｔＤｅｐｔｈは現在の成分のビット深度であり、ｎはパラメータである。一例では、パラメータｎが９に等しく設定され得る。
【０２１０】
[0139]  別の例では、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値が、ＣＧの成分タイプ（例えば、ルーマまたはクロマ）に依存し得る。別の例で、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値は、現在のブロックが、変換と量子化の両方がスキップされる変換量子化バイパスモードでコーディングされるか否かに依存し得る。別の例で、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値は、現在のブロックが、変換がスキップされるが量子化が適用され得る変換スキップモードでコーディングされるか否かに依存し得る。別の例で、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値は、ＴＵの量子化パラメータ（ＱＰ）に依存し得る。別の例で、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値は、ビデオデータの色成分および／または色空間に依存し得る。
【０２１１】
[0140]  別の例で、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値は、ＣＵサイズ、ＴＵサイズ、フレーム解像度、フレームレート、予測モード（例えば、イントラ、インター、イントラＢＣ（イントラブロックコピー））、フレームタイプ、ならびにクロス成分残余予測のモードおよび重みのうちの１つまたは複数に依存し得る。クロス成分残余予測のモードおよび重みの例は、２０１３年７月１５日に出願された米国仮出願第６１／８４６，５８１号、２０１３年７月１８日に出願された米国仮出願第６１／８４７，８３９号、２０１３年５月２２日に出願された米国仮出願第６１／８２６，３９６号、および２０１３年６月２１日に出願された米国仮出願第６１／８３８，１５２号に記載されている。
【０２１２】
[0141]  以下で、一例としてＨＥＶＣを使用して、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１フラグとｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２フラグとに関する若干の背景情報を提供する。ＨＥＶＣでは、ＣＧ（例えば、４×４サブブロック）について、非０係数レベルをもつ係数の位置を示すために有意性マップが最初にコーディングされる。次いで、有意係数を有する位置について、係数の絶対値が１よりも大きいかどうかを示すためにｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１フラグが符号化され得る。ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１＝１をもつ位置について、係数の絶対値が２よりも大きいかどうかを示すためにｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２フラグが符号化され得る。
【０２１３】
[0142]  いくつかの例では、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値が、０もしくは１のいずれかに等しいｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１フラグのコーディングによって示され得る、有意（すなわち、非０）値をもつ、前にコーディングされた係数レベルの数、および／または、０もしくは１のいずれかに等しいｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２フラグをコーディングすることによって示され得る、１よりも大きい値をもつ、前にコーディングされた係数レベルの数に依存し得る。他の例では、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値が、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１＝１をコーディングすることによって示される、１よりも大きい値を有する、前にコーディングされた係数レベルの数、および／または、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ２＝１をコーディングすることによって示される、２よりも大きい値を有する、前にコーディングされた係数レベルの数に依存し得る。
【０２１４】
[0143]  別の例では、各ＣＧについてのライスパラメータｃＲｉｃｅＰａｒａｍの初期値が、上記の例の任意の組合せに依存し得る。ビデオデータのビット深度に基づいてライスパラメータの初期値を決定する２つの詳細な例が以下に与えられる。
【０２１５】
[0144]  例１：
【０２１６】
【数４３】
0006445001.tif 000045
【０２１７】
上記の擬似コードにおいて、ｉＱＰはＱＰ値であり、ＢＤはビデオデータのビット深度である。この第１の例で、ライスパラメータの初期値は、変換スキップモードまたは変換量子化バイパスモードのいずれかでコーディングされる変換ブロック中にＣＧが含まれるときは、第１の式に基づいて設定され、変換コード化ブロック中にＣＧが含まれるときは、第２の式に基づいて設定される。いずれの場合も、初期値は、ビデオデータのビット深度（ＢＤ）に基づいて決定される。
【０２１８】
[0145]  例２：
【０２１９】
【数４４】
0006445001.tif 000046
【０２２０】
上記の擬似コードにおいて、Ｇｒ１は、コーディングされたｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｇｒｅａｔｅｒ１フラグの数であり、ＢＤはビデオデータのビット深度である。この第２の例で、ライスパラメータの初期値は、変換スキップモードまたは変換量子化バイパスモードのいずれかでコーディングされる変換ブロック中にＣＧが含まれるときは、第１の式に基づいて設定され、変換コード化ブロック中にＣＧが含まれるときは、第２の式に基づいて設定される。いずれの場合も、初期値は、ビデオデータのビット深度（ＢＤ）に基づいて決定される。
【０２２１】
[0146]  上で説明された例の任意の組合せによる各ＣＧについてのライスパラメータ初期化を、オフセット値の明示的シグナリングと組み合わせる、ハイブリッド方式の一例について以下で説明する。例えば、ＣＧの開始においてライスパラメータを初期化するために使用されるオフセットは、（１）一定オフセットおよび（２）適応オフセットという、２つの部分の和に分解され得る。適応オフセットは、本開示で説明する例示的な技法のうちの１つまたは複数を使用して導出され得る。一定オフセットは、ビデオエンコーダ２０からビデオデコーダ３０にビットストリーム中でシグナリングされ得る。
【０２２２】
[0147]  別の例として、明示的ライスパラメータシグナリングを、本開示で説明する初期ライスパラメータ導出プロセスと組み合わせるために、ライスパラメータをシグナリングすべきかどうかの決定は、ビデオエンコーダ２０において初期ライスパラメータの導出された値に依存し得る。例えば、初期ライスパラメータの導出された値が、予め定義された値と同様である（例えば、導出された値としきい値との間の差がしきい値よりも小さい）場合、ライスパラメータは、ビデオデコーダ３０にシグナリングされないことがあるが、代わりに、上で説明されたように導出され得る。この場合、導出された値または予め定義された値のいずれかがライスパラメータの初期値として使用され得る。そうでない場合、ライスパラメータの初期値はシグナリングされ得るか、または、ライスパラメータの初期値と予め定義された値との間の差がシグナリングされ得る。シグナリング技法のいくつかの追加の例は、２０１３年８月２６日に出願された米国仮出願第６１／８７０，１２０号、２０１３年９月２０日に出願された米国仮出願第６１／８８０，６１６号、および２０１３年１０月１１日に出願された米国仮出願第６１／８８９，６５４号において見つけられ得る。
【０２２３】
[0148]  ライスパラメータ初期化方式の上で説明された例に関するいくつかの追加の例および考慮事項について以下で説明する。本開示の技法について、主として、個々におよび／または他の技法との特定の組合せの一部として説明されていることがあるが、本開示で説明する技法のうちのどの２つ以上も、互いに組み合わされ得る。さらに、本開示で説明する技法のうちのどの１つも、別々に実装されることが可能であり得る。
【０２２４】
[0149]  ロッシーコーディングの場合、統計値ベースのライスパラメータ初期化方式は、次の条件式に示されているように、変換スキップブロックのみに適用され得る。一方、変換ブロックに変換が適用されるとき、ライスパラメータは、ＨＥＶＣ初期化方式に従って０に初期化される。
【０２２５】
【数４５】
0006445001.tif 000047
【０２２６】
他の例では、統計値ベースのライスパラメータ初期化方式が変換スキップブロックのみに適用され得るが、次の式に示されているように、ブロックに変換が適用されるとき、ライスパラメータを０に自動的に初期化することは不要であり得る。
【０２２７】
【数４６】
0006445001.tif 000048
【０２２８】
[0150]  いくつかの例では、ＣＧ内で行われるＨＥＶＣライスパラメータ更新方式が無効にされ得る。代わりに、ライスパラメータの初期値は、上で説明された例示的な技法の任意の組合せに従って決定され得、ライスパラメータの初期値は、次いで、ブロック全体にわたって使用され得る。他の例では、異なるライスパラメータ更新方式がＣＧ内で行われ得る。場合によっては、上で説明された例示的な技法のうちの１つまたは複数は、ブロック全体にわたって、所与の順序に従ってまたは統合された方法としてライスパラメータ更新と統計値更新とを行うために使用され得る。また、場合によっては、上で説明された例示的な技法のうちの１つまたは複数は、ブロック全体にわたってライスパラメータのビット深度依存の初期化を行うために使用され得る。
【０２２９】
[0151]  ライスパラメータの初期値を決定する例示的な方法について、上記では別々に説明したが、本開示の技法はそのように限定されない。概して、上で説明された例示的な技法の様々な組合せが可能であり得る。上で説明された例示的な方法はまた、別々に実装され得る。さらに、上で説明された方法の全てまたはそれらの組合せは、全ての変換ブロック内のＣＧに適用されるか、あるいは変換がそれについてスキップまたはバイパスされる変換ブロックのみに適用され得る。
【０２３０】
[0152]  図５は、本開示で説明する係数レベルを符号化するための技法を実装し得る例示的なビデオエンコーダを示すブロック図である。ビデオエンコーダ２０について、例示のためにＨＥＶＣコーディングのコンテキストにおいて説明するが、変換係数の走査を必要とし得る他のコーディング規格または方法に関して本開示を限定するものではない。ビデオエンコーダ２０は、ビデオフレーム内のＣＵのイントラコーディングおよびインターコーディングを行い得る。イントラコーディングは、所与のビデオフレーム内のビデオデータの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの現在のフレームと以前にコーディングされたフレームとの間の時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースのビデオ圧縮モードのいずれかを指し得る。単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースのビデオ圧縮モードのいずれかを指し得る。
【０２３１】
[0153]  図５に示されているように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図５の例では、ビデオエンコーダ２０が、モード選択ユニット４０と、ビデオデータメモリ４１と、動き補償ユニット４４と、動き推定ユニット４２と、イントラ予測処理ユニット４６と、復号ピクチャバッファ（ＤＰＢ）６４と、加算器５０と、変換処理ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。図５に示された変換処理ニット５２は、残差データのブロックに実際の変換または変換の組合せを適用するユニットであり、ＣＵの変換ユニット（ＴＵ）と呼ばれることもある変換係数のブロックと混同されるべきでない。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換処理ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するために、デブロッキングフィルタ（図５に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器６２の出力をフィルタ処理することになる。
【０２３２】
[0154]  ビデオデータメモリ４１は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ４１に記憶されたビデオデータは、例えば、ビデオソース１８から取得され得る。復号ピクチャバッファ６４は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ４１および復号ピクチャバッファ６４は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ４１および復号ピクチャバッファ６４は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ４１が、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０２３３】
[0155]  符号化プロセス中に、ビデオエンコーダ２０は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロック、例えば、最大コーディングユニット（ＬＣＵ）に分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間圧縮を行うために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを行う。イントラ予測処理ニット４６は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを行い得る。
【０２３４】
[0156]  モード選択ユニット４０は、例えば、各モードについての誤差（すなわち、ひずみ）結果に基づいて、コーディングモードのうちの１つ、すなわち、イントラまたはインターを選択し得、得られたイントラまたはインター予測ブロック（例えば、予測ユニット（ＰＵ））を、残差ブロックデータを生成するために加算器５０に与え、参照フレーム中で使用する符号化ブロックを再構成するために加算器６２に与える。加算器６２は、以下でより詳細に説明するように、予測ブロックを、そのブロックについての、逆変換処理ユニット６０からの逆量子化され逆変換されたデータと合成して、符号化ブロックを再構成する。いくつかのビデオフレームはＩフレームに指定され得、Ｉフレーム中の全てのブロックはイントラ予測モードで符号化される。場合によっては、例えば、動き推定ユニット４２によって行われた動き探索によって得られたブロックの予測が不十分であったとき、イントラ予測処理ユニット４６は、ＰフレームまたはＢフレーム中のブロックのイントラ予測符号化を行い得る。
【０２３５】
[0157]  動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定（または動き探索）は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレームの参照サンプルに対する、現在のフレーム中の予測ユニットの変位を示し得る。動き推定ユニット４２は、予測ユニットを復号ピクチャバッファ６４に記憶された参照ピクチャの参照サンプルと比較することによってインターコード化フレームの予測ユニットの動きベクトルを計算する。参照サンプルは、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of squared difference）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされているＰＵを含むＣＵの部分にぴったり一致することがわかるブロックであり得る。参照サンプルは、参照フレームまたは参照スライス内のどこにでも発生し得、必ずしも、参照フレームまたはスライスのブロック（例えば、コーディングユニット）境界において発生するとは限らない。いくつかの例では、参照サンプルが分数ピクセル位置において発生し得る。
【０２３６】
[0158]  動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。動きベクトルによって識別される参照フレームの部分は参照サンプルと呼ばれることがある。動き補償ユニット４４は、例えば、ＰＵの動きベクトルによって識別される参照サンプルを取り出すことによって、現在のＣＵの予測ユニットについての予測値を計算し得る。
【０２３７】
[0159]  イントラ予測処理ユニット４６は、動き推定ユニット４２と動き補償ユニット４４とによって行われるインター予測の代替として、受信ブロックをイントラ予測し得る。イントラ予測処理ユニット４６は、隣接する、以前にコーディングされたブロック、例えば、ブロックについての左から右へ、上から下への符号化順序を仮定すると、現在のブロックの上、右上、左上、または左のブロックに対して受信ブロックを予測し得る。イントラ予測処理ユニット４６は多種多様なイントラ予測モードで構成され得る。例えば、イントラ予測処理ユニット４６は、符号化されているＣＵのサイズに基づいて、一定数の方向性予測モード、例えば、３３個の方向性予測モードで構成され得る。
【０２３８】
[0160]  イントラ予測処理ユニット４６は、例えば、様々なイントラ予測モードの誤差値を計算し、最も低い誤差値を生じるモードを選択することによって、イントラ予測モードを選択し得る。方向性予測モードは、空間的に隣接するピクセルの値を合成し、その合成された値をＰＵ中の１つまたは複数のピクセル位置に適用するための機能を含み得る。ＰＵ中の全てのピクセル位置の値が計算されると、イントラ予測処理ユニット４６は、ＰＵと符号化されるべき受信ブロックとの間のピクセル差分に基づいて予測モードの誤差値を計算し得る。イントラ予測処理ユニット４６は、許容できる誤差値を生じるイントラ予測モードが発見されるまでイントラ予測モードをテストし続け得る。イントラ予測処理ユニット４６は、次いで、ＰＵを加算器５０に送り得る。
【０２３９】
[0161]  ビデオエンコーダ２０は、コーディングされている元のビデオブロックから、動き補償ユニット４４またはイントラ予測処理ユニット４６によって計算された予測データを減算することによって残差ブロックを形成する。加算器５０は、この減算動作を行う１つまたは複数の構成要素を表す。残差ブロックはピクセル差分値の２次元行列に対応し得、ここで、残差ブロック中の値の数は、残差ブロックに対応するＰＵ中のピクセルの数と同じである。残差ブロック中の値は、ＰＵ中と、コーディングされるべき元のブロック中とのコロケートピクセルの値の差分、すなわち、誤差に対応し得る。差分は、コーディングされるブロックのタイプに応じてクロマ差分またはルーマ差分であり得る。
【０２４０】
[0162]  変換処理ユニット５２は、残差ブロックから１つまたは複数の変換ユニット（ＴＵ）を形成し得る。変換処理ユニット５２は、複数の変換の中から変換を選択する。例えば、変換処理ユニット５２は、変換係数を生成するために離散コサイン変換（ＤＣＴ）、離散サイン変換（ＤＳＴ）、整数変換、カルーネンレーベ（Ｋ−Ｌ）変換、または別の変換のうちの１つを選択し得る。変換は、ブロックサイズ、コーディングモードなど、１つまたは複数のコーディング特性に基づいて選択され得る。変換処理ユニット５２は、次いで、選択された変換をＴＵに適用して、変換係数の２次元アレイを備えるビデオブロックを生成する。変換処理ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、次いで、その変換係数を量子化し得る。
【０２４１】
[0163]  エントロピー符号化ユニット５６が、次いで、走査モードに従って行列中の係数の走査を行い得る。ロッシーコーディングの場合、係数は、量子化された変換係数であり得る。ロスレスコーディングあるいは変換スキッピングまたはバイパスを伴うロッシーコーディングの場合、係数は、変換または量子化されていない係数であり得る。本開示は、エントロピー符号化ユニット５６が走査を行うものとして説明する。ただし、他の例では、量子化ユニット５４などの他の処理ユニットが走査を行い得ることを理解されたい。
【０２４２】
[0164]  変換係数が１次元アレイに走査されると、エントロピー符号化ユニット５６は、ＣＡＢＡＣ、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）、確率間隔区分エントロピー（ＰＩＰＥ）、または別のエントロピーコーディング方法などのエントロピーコーディングを係数に適用し得る。エントロピー符号化ユニット５６は、本開示の技法に従って係数をコーディングするように構成され得る。ＣＡＢＡＣの例では、エントロピー符号化ユニット５６が、通常コーディングモードまたはバイパスモードのいずれかを使用して係数を符号化し得る。ＣＡＢＡＣを行うために、エントロピー符号化ユニット５６は、送信されるべきシンボルを符号化するためのあるコンテキストを適用するためにコンテキストモデルを選択し得る。コンテキストは、例えば、隣接値が非０であるか否かに関係し得る。エントロピー符号化ユニット５６は、コンテキストモデル選択のために使用される要因の中でも、例えば、イントラ予測モードのためのイントラ予測方向、シンタックス要素に対応する係数の走査位置、ブロックタイプ、および／または変換タイプに基づいて、これらのシンボルを符号化するために使用されるコンテキストモデルを選択し得る。
【０２４３】
[0165]  エントロピー符号化ユニット５６は、ビデオデコーダまたは記憶デバイスへの送信のために残差ビデオデータの係数レベルをビットストリーム中に符号化し得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、符号化されるべき係数は、大きい絶対値をもつ係数レベルを有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、符号化されるべき係数のための係数レベルの大きい絶対値が生じる。
【０２４４】
[0166]  エントロピー符号化ユニット５６は、ライスパラメータによって定義されるコードを使用してＣＡＢＡＣまたは別のエントロピーコーディングエンジンのバイパスモードで現在の係数グループ（ＣＧ）中の少なくとも１つの係数のための係数レベルの残りの絶対値（例えば、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇまたはｌｅｖｅｌＲｅｍ）を符号化する。本開示の技法によれば、エントロピー符号化ユニット５６は、前に符号化された係数のための係数レベルの統計値に基づいて現在のＣＧのためのライスパラメータの初期値を決定するように構成される。統計値は、前にコーディングされた係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。本開示で説明する統計値ベースのライスパラメータ初期化方式は、スクリーンコンテンツのブロックと変換スキッピングまたはバイパスを伴うブロックとにおいて生じ得る大きい係数値にライスパラメータが迅速におよび効率的に適応することを可能にする。
【０２４５】
[0167]  一例では、エントロピー符号化ユニット５６が、所与の前に符号化された係数のための係数レベルを統計値の関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって、統計値を決定するように構成され得る。統計値の値は、ビデオデータの各スライスの開始において０に初期化され得、エントロピー符号化ユニット５６は、スライスのＣＧごとに統計値を１回更新し得る。いくつかの例では、エントロピー符号化ユニット５６が、ＣＧの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され得る。カテゴリーは、例えば、変換ブロックがルーマブロックであるか否か、および変換ブロックが変換スキップブロックであるか否かなど、ＣＧを含む変換ブロックの特性に基づいて定義され得る。
【０２４６】
[0168]  現在のＣＧの開始において、エントロピー符号化ユニット５６は、統計値の値を現在のＣＧのためのライスパラメータの初期値にマッピングするように構成される。一例では、エントロピー符号化ユニット５６が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく統計値の関数に従って、統計値の値を初期ライスパラメータ値にマッピングし得る。ライスパラメータ初期化方式のための統計値収集、統計値区分、および統計値マッピングプロシージャを表す例示的な式については、上記でより詳細に説明される。
【０２４７】
[0169]  エントロピー符号化ユニット５６によるエントロピーコーディングの後に、得られた符号化ビデオは、ビデオデコーダ３０などの別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。場合によっては、エントロピー符号化ユニット５６またはビデオエンコーダ２０の別のユニットは、エントロピーコーディングに加えて、他のコーディング機能を行うように構成され得る。
【０２４８】
[0170]  逆量子化ユニット５８および逆変換処理ユニット６０は、それぞれ逆量子化および逆変換を適用して、例えば参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを復号ピクチャバッファ６４の参照ピクチャのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、復号ピクチャバッファ６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット４２および動き補償ユニット４４によって使用され得る。
【０２４９】
[0171]  図６は、本開示で説明する係数レベルを復号するための技法を実装し得るビデオデコーダ３０の一例を示すブロック図である。図６の例では、ビデオデコーダ３０が、エントロピー復号ユニット７０と、ビデオデータメモリ７１と、動き補償ユニット７２と、イントラ予測処理ユニット７４と、逆量子化ユニット７６と、逆変換処理ユニット７８と、復号ピクチャバッファ（ＤＰＢ）８２と、加算器８０とを含む。ビデオデコーダ３０は、いくつかの例で、ビデオエンコーダ２０（図５参照）に関して説明した符号化パスとは概して逆の復号パスを行い得る。
【０２５０】
[0172]  ビデオデータメモリ７１は、ビデオエンコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ７１に記憶されたビデオデータは、例えば、コンピュータ可読媒体１６から、例えば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ７１は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ８２は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ７１および復号ピクチャバッファ８２は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ７１および復号ピクチャバッファ８２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ７１が、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０２５１】
[0173]  エントロピー復号ユニット７０は、残差ビデオデータ係数の１次元アレイを取り出すために、符号化ビットストリームに対してエントロピー復号プロセスを行う。使用されるエントロピー復号プロセスは、ビデオエンコーダ２０によって使用されたエントロピーコーディング（例えば、ＣＡＢＡＣ）に依存する。エンコーダによって使用されたエントロピーコーディングプロセスは、符号化ビットストリーム中でシグナリングされるか、または所定のプロセスであり得る。エントロピー復号ユニット７０は、本開示の技法に従って係数を復号するように構成され得る。ＣＡＢＡＣの例では、エントロピー復号ユニット７０が、通常コーディングモードまたはバイパスモードのいずれかを使用して係数を復号し得る。
【０２５２】
[0174]  いくつかの例では、エントロピー復号ユニット７０が、ビデオエンコーダ２０のエントロピー符号化ユニット５６によって使用された走査モードをミラーリングする走査を使用して受信値を走査し得る。係数の走査は逆量子化ユニット７６において行われ得るが、走査については、例示のために、エントロピー復号ユニット７０によって実施されるものとして説明する。さらに、説明しやすいように別個の機能ユニットとして示されているが、ビデオデコーダ３０のエントロピー復号ユニット７０、逆量子化ユニット７６、および他のユニットの構造および機能は、互いに高度に統合され得る。
【０２５３】
[0175]  エントロピー復号ユニット７０は、ビデオエンコーダ２０とは逆の様式でビットストリームからの残差ビデオデータ係数の係数レベルを復号する。ロッシービデオコーディングの場合、復号されるべき係数は、量子化された変換係数であり得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、復号されるべき係数は、符号化されたピクセル値であり得、大きい絶対値をもつ係数レベル（すなわち、ピクセル値）を有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、復号されるべき係数のための係数レベルの大きい絶対値が生じる。
【０２５４】
[0176]  エントロピー復号ユニット７０は、ライスパラメータによって定義されるコードを使用して係数グループ（ＣＧ）中の少なくとも１つの係数のための係数レベルの残りの絶対値を復号する。本開示の技法によれば、エントロピー復号ユニット７０は、前に復号された係数のための係数レベルの統計値に基づいて現在のＣＧのためのライスパラメータの初期値を決定するように構成される。統計値は、前に復号された係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。本開示で説明する統計値ベースのライスパラメータ初期化方式は、スクリーンコンテンツのブロックと変換スキッピングまたはバイパスを伴うブロックとにおいて生じ得る大きい係数値にライスパラメータが迅速におよび効率的に適応することを可能にする。
【０２５５】
[0177]  一例では、エントロピー復号ユニット７０が、所与の前に復号された係数のための係数レベルを統計値の関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって、統計値を決定するように構成され得る。統計値の値は、ビデオデータの各スライスの開始において０に初期化され得、エントロピー復号ユニット７０は、スライスのＣＧごとに統計値を１回更新し得る。いくつかの例では、エントロピー復号ユニット７０が、ＣＧの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され得る。カテゴリーは、例えば、変換ブロックがルーマブロックであるか否か、および変換ブロックが変換スキップブロックであるか否かなど、ＣＧを含む変換ブロックの特性に基づいて定義され得る。
【０２５６】
[0178]  現在のＣＧの開始において、エントロピー復号ユニット７０は、統計値の値を現在のＣＧのためのライスパラメータの初期値にマッピングするように構成される。一例では、エントロピー復号ユニット７０が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく統計値の関数に従って、統計値の値を初期ライスパラメータ値にマッピングし得る。ライスパラメータ初期化方式のための統計値収集、統計値区分、および統計値マッピングプロシージャを表す例示的な式については、上記でより詳細に説明される。
【０２５７】
[0179]  逆量子化ユニット７６は、ビットストリーム中で与えられ、エントロピー復号ユニット７０によって復号された、量子化された変換係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、例えば、ＨＥＶＣのために提案されたプロセスまたはＨ．２６４復号規格によって定義されたプロセスと同様の、従来のプロセスを含み得る。逆量子化処理は、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ＣＵについてビデオエンコーダ２０によって計算される量子化パラメータＱＰの使用を含み得る。逆量子化ユニット７６は、係数が１次元アレイから２次元アレイに変換される前または変換された後に変換係数を逆量子化し得る。
【０２５８】
[0180]  逆変換処理ユニット７８は、逆量子化された変換係数に逆変換を適用する。例えば、逆変換処理ユニット７８は、残差データを生成するために離散コサイン変換（ＤＣＴ）、離散サイン変換（ＤＳＴ）、整数変換、カルーネンレーベ（Ｋ−Ｌ）変換、または別の変換のうちの１つを適用し得る。いくつかの例では、逆変換処理ユニット７８が、ビデオエンコーダ２０からのシグナリングに基づいて、あるいはブロックサイズ、コーディングモードなどの１つまたは複数のコーディング特性から変換を推測することによって、逆変換を決定し得る。いくつかの例では、逆変換処理ユニット７８が、現在のブロックを含むＬＣＵのための４分木のルートノードにおけるシグナリングされた変換に基づいて、現在のブロックに適用すべき変換を決定し得る。代替的に、変換は、ＬＣＵ４分木中のリーフノードＣＵのためのＴＵ４分木のルートにおいてシグナリングされ得る。いくつかの例では、逆変換処理ユニット７８が、逆変換処理ユニット７８が、復号されている現在のブロックの変換係数に２つ以上の逆変換を適用する、カスケード逆変換を適用し得る。
【０２５９】
[0181]  イントラ予測処理ユニット７４は、シグナリングされたイントラ予測モードと、現在のフレームについて以前に復号されたブロックからのデータとに基づいて、現在のフレームの現在のブロックについての予測データを生成し得る。
【０２６０】
[0182]  動き補償ユニット７２は、符号化ビットストリームから、動きベクトルと、動き予測方向と、参照インデックスとを取り出し得る。参照予測方向は、インター予測モードが単方向である（例えば、Ｐフレーム）か、双方向である（Ｂフレーム）かを示す。参照インデックスは、候補動きベクトルがどの参照フレームに基づくかを示す。取り出された動き予測方向と、参照フレームインデックスと、動きベクトルとに基づいて、動き補償ユニット７２は、現在の部分についての動き補償ブロックを生成する。これらの動き補償ブロックは、本質的に、残差データを生成するために使用される予測ブロックを再現する。
【０２６１】
[0183]  動き補償ユニット７２は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を行い得る。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット７２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【０２６２】
[0184]  さらに、動き補償ユニット７２およびイントラ予測処理ユニット７４は、ＨＥＶＣの例で、（例えば、４分木によって与えられる）シンタックス情報の一部を使用して、符号化ビデオシーケンスのフレームを符号化するために使用されるＬＣＵのサイズを決定し得る。動き補償ユニット７２およびイントラ予測処理ユニット７４はまた、シンタックス情報を使用して、符号化ビデオシーケンスのフレームの各ＣＵがどのように分割されるか（および、同様に、サブＣＵがどのように分割されるか）を記述する分割情報を決定し得る。シンタックス情報はまた、各分割がどのように符号化されるかを示すモード（例えば、イントラまたはインター予測、およびイントラ予測の場合はイントラ予測符号化モード）と、各インター符号化ＰＵについての１つまたは複数の参照フレーム（および／またはそれらの参照フレームの識別子を含んでいる参照リスト）と、符号化ビデオシーケンスを復号するための他の情報とを含み得る。
【０２６３】
[0185]  加算器８０は、残差ブロックを、動き補償ユニット７２またはイントラ予測処理ユニット７４によって生成された対応する予測ブロックと合成して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタ処理するために、デブロッキングフィルタも適用され得る。復号されたビデオブロックは、次いで、復号ピクチャバッファ８２に記憶され、復号ピクチャバッファ８２は、参照ブロックを後続の動き補償のために与え、また、（図１のディスプレイデバイス３２などの）ディスプレイデバイス上での提示のために復号されたビデオを生成する。
【０２６４】
[0186]  図７は、本開示で説明する技法に従って係数レベルのエントロピー符号化中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。例示的な動作について、図５からのエントロピー符号化ユニット５６を含むビデオエンコーダ２０に関して説明する。
【０２６５】
[0187]  エントロピー符号化ユニット５６は、ビデオデコーダ３０への送信のためにあるいは記憶媒体３４またはファイルサーバ３６上の記憶のために、ビットストリーム中に符号化されるべき残差ビデオデータの係数を受信する。残差ビデオデータ係数は係数グループ（ＣＧ）中に含まれ得、ＣＧの各々は変換ブロックのサブブロック（例えば、図４に示されている４×４サブブロック）である。ＣＧ中の係数の符号化中に、エントロピー符号化ユニット５６は、前に符号化された係数のための係数レベルの統計値を決定する（１００）。図９に関して以下でより詳細に説明する例において、前に符号化された係数のための係数レベルの統計値を決定することは、統計値の関数への、前に符号化された係数のうちの１つまたは複数のための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかを決定することを備え得る。統計値の値は、残差ビデオデータの各スライスの開始において０に初期化され得る。
【０２６６】
[0188]  いくつかの例では、前に符号化された係数のための係数レベルの統計値を決定することが、残差ビデオデータのスライスまたはコーディングユニット（ＣＵ）にわたって係数レベルの平均または移動平均を計算することを備え得る。他の例では、前に符号化された係数のための係数レベルの統計値を決定することが、統計値の値への、前に符号化された係数のうちの１つのための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することを備え得る。
【０２６７】
[0189]  係数レベルの統計値は、前に符号化された係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。係数レベルの統計値は、同じ変換ブロック中に全て含まれるＣＧ中の前に符号化された係数について収集されるか、または２つ以上の異なる変換ブロック中に含まれるＣＧ中の前に符号化された係数について収集され得る。
【０２６８】
[0190]  いくつかの例では、エントロピー符号化ユニット５６が、係数グループごとに、前に符号化された係数のための係数レベルの統計値を１回決定し得る。統計値収集の頻度については、図９に関して以下でより詳細に説明する。例えば、エントロピー符号化ユニット５６は、前のＣＧの各々において係数レベルの第１の絶対値が符号化されるときに統計値を決定し得る。代替的に、エントロピー符号化ユニット５６は、前のＣＧの各々において係数レベルの第１の残りの絶対値が符号化されるときに統計値を決定し得る。他の例では、エントロピー符号化ユニット５６が、係数の各々を符号化するときに、前に符号化された係数のための係数レベルの統計値を決定し得る。
【０２６９】
[0191]  さらに、図９に関して以下でより詳細に説明するように、エントロピー符号化ユニット５６は、ＣＧの複数の異なるカテゴリーの各々について別々の統計値を決定し得る。カテゴリーは、ＣＧを含む変換ブロックの特性に基づいて定義され得る。例えば、変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるか、変換ブロックが変換スキップブロックとして符号化されるか変換量子化バイパスブロックとして符号化されるか、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および／または変換ブロック内のＣＧの位置を含み得る。
【０２７０】
[0192]  符号化されるべき残差ビデオデータの変換ブロック中の現在のＣＧについて、エントロピー符号化ユニット５６は、前に符号化された係数のための係数レベルの収集された統計値に基づいてライスパラメータの初期値を決定する（１０２）。従来、ライスパラメータの値は、各ＣＧの開始において０に初期化され、ＣＧ中の係数レベルの残りの絶対値を符号化した後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各ＣＧについてライスパラメータの値を０に初期化することは最適でないことがある。本開示の技法は、ライスパラメータの値を０に自動的にリセットする代わりに、収集された統計値に基づいて各ＣＧの開始においてライスパラメータの値を設定することについて説明する。
【０２７１】
[0193]  図１０に関して以下でより詳細に説明する一例では、エントロピー符号化ユニット５６が、統計値の関数に従って、収集された統計値の値をライスパラメータの初期値にマッピングすることによって現在のＣＧのためのライスパラメータの初期値を決定する。他の例では、エントロピー符号化ユニット５６が、記憶されたテーブルに従って、収集された統計値の値をライスパラメータの初期値にマッピングし得る。
【０２７２】
[0194]  上記でより詳細に説明したように、エントロピー符号化ユニット５６は、現在のＣＧ中の係数の係数レベルを符号化するために、逆方向走査順序に従って現在のＣＧについて１つまたは複数の走査を行い得る。例えば、エントロピー符号化ユニット５６は、通常コーディングモードでコンテキストモデルを使用して、係数が、１よりも大きい絶対値をもつ係数レベルを有するか、または２よりも大きい絶対値をもつ係数レベルを有するかを示すためのフラグまたはシンタックス要素を符号化し得る。エントロピー符号化ユニット５６は、次いで、ライスパラメータによって定義されるコードを使用して現在のＣＧ中の係数のうちの少なくとも１つのための係数レベルの残りの絶対値を示すためのフラグまたはシンタックス要素を符号化する（１０４）。例えば、エントロピー符号化ユニット５６は、バイパスモードで２よりも大きい係数レベルをもつ係数の全てのための係数レベルの残りの絶対値を示すシンタックス要素を符号化し得る。いくつかの例では、現在のＣＧ中の係数レベルの第１の残りの絶対値を符号化するときに、エントロピー符号化ユニット５６が、符号化された係数の係数レベルに基づいて統計値を更新し得る。
【０２７３】
[0195]  場合によっては、エントロピー符号化ユニット５６は、ライスパラメータの初期値と、現在のＣＧ中で符号化されている係数のための係数レベルの絶対値とに基づいて、ライスパラメータの初期値を条件付きで更新し得る。エントロピー符号化ユニット５６は、現在のＣＧ中の係数のための各残りの絶対レベルを符号化した後に、ライスパラメータの値を条件付きで更新し続け得る。現在のＣＧの終了において、エントロピー符号化ユニット５６は、現在のＣＧ中に含まれる最近符号化された係数を含む、前に符号化された係数のための係数レベルの統計値に基づいて、後続のＣＧのためのライスパラメータの初期値を決定し得る。
【０２７４】
[0196]  図８は、本開示で説明する技法に従って係数レベルのエントロピー復号中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。例示的な動作について、図６からのエントロピー復号ユニット７０を含むビデオデコーダ３０に関して説明する。
【０２７５】
[0197]  ビデオデコーダ３０は、ビデオエンコーダ２０から、あるいは記憶媒体３４またはファイルサーバ３６などの記憶デバイスから符号化ビデオビットストリームを受信する。受信されたビデオビストリームは、復号されるべき残差ビデオデータの係数を表す。残差ビデオデータ係数は係数グループ（ＣＧ）中に含まれ得、ＣＧの各々は変換ブロックのサブブロック（例えば、図４に示されている４×４サブブロック）である。ＣＧ中の係数の復号中に、エントロピー復号ユニット７０は、前に復号された係数のための係数レベルの統計値を決定する（１１０）。図９に関して以下でより詳細に説明する例において、前に復号された係数のための係数レベルの統計値を決定することは、統計値の関数への、前に復号された係数のうちの１つまたは複数のための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかを決定することを備え得る。統計値の値は、残差ビデオデータの各スライスの開始において０に初期化され得る。
【０２７６】
[0198]  いくつかの例では、前に復号された係数のための係数レベルの統計値を決定することが、残差ビデオデータのスライス、コーディングユニット（ＣＵ）、または変換ユニット（ＴＵ）にわたって係数レベルの平均または移動平均を計算することを備え得る。他の例では、前に復号された係数のための係数レベルの統計値を決定することが、統計値の値への、前に符号化された係数のうちの１つのための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することを備え得る。
【０２７７】
[0199]  係数レベルの統計値は、前に復号された係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。係数レベルの統計値は、同じ変換ブロック中に全て含まれるＣＧ中の前に復号された係数について収集されるか、または２つ以上の異なる変換ブロック中に含まれるＣＧ中の前に復号された係数について収集され得る。
【０２７８】
[0200]  いくつかの例では、エントロピー復号ユニット７０が、係数グループごとに、前に復号された係数のための係数レベルの統計値を１回決定し得る。統計値収集の頻度については、図９に関して以下でより詳細に説明する。例えば、エントロピー復号ユニット７０は、前のＣＧの各々において係数レベルの第１の絶対値が復号されるときに統計値を決定し得る。代替的に、エントロピー復号ユニット７０は、前のＣＧの各々において係数レベルの第１の残りの絶対値が復号されるときに統計値を決定し得る。他の例では、エントロピー復号ユニット７０が、係数の各々を復号するときに、前に復号された係数のための係数レベルの統計値を決定し得る。
【０２７９】
[0201]  さらに、図９に関して以下でより詳細に説明するように、エントロピー復号ユニット７０は、ＣＧの複数の異なるカテゴリーの各々について別々の統計値を決定し得る。カテゴリーは、ＣＧを含む変換ブロックの特性に基づいて定義され得る。例えば、変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるか、変換ブロックが変換スキップブロックとして復号されるか変換量子化バイパスブロックとして復号されるか、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および／または変換ブロック内のＣＧの位置を含み得る。
【０２８０】
[0202]  復号されるべき残差ビデオデータの変換ブロック中の現在のＣＧについて、エントロピー復号ユニット７０は、前に復号された係数のための係数レベルの収集された統計値に基づいてライスパラメータの初期値を決定する（１１２）。いくつかのプロセスでは、ライスパラメータの値が、各ＣＧの開始において０に初期化され、ＣＧ中の係数レベルの残りの絶対値を復号した後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各ＣＧについてライスパラメータの値を０に初期化することは最適でないことがある。本開示の技法は、ライスパラメータの値を０に自動的にリセットする代わりに、収集された統計値に基づいて各ＣＧの開始においてライスパラメータの値を設定することについて説明する。
【０２８１】
[0203]  図１０に関して以下でより詳細に説明する一例では、エントロピー復号ユニット７０が、統計値の関数に従って、収集された統計値の値をライスパラメータの初期値にマッピングすることによって現在のＣＧのためのライスパラメータの初期値を決定する。他の例では、エントロピー復号ユニット７０が、記憶されたテーブルに従って、収集された統計値の値をライスパラメータの初期値にマッピングし得る。
【０２８２】
[0204]  上記でより詳細に説明したように、エントロピー復号ユニット７０は、現在のＣＧ中の係数の係数レベルを復号するために、逆方向走査順序に従って現在のＣＧについて１つまたは複数の走査を行い得る。例えば、エントロピー復号ユニット７０は、フラグまたはシンタックス要素を復号して、係数が、通常コーディングモードでコンテキストモデルを使用して、１よりも大きいまたは２よりも大きい絶対値をもつ係数レベルを有するかどうかを示し得る。エントロピー復号ユニット７０は次いで、フラグまたはシンタックス要素を復号して、ライスパラメータによって定義されるコードを使用して現在のＣＧ中の係数のうちの少なくとも１つのための係数レベルの残りの絶対値を示す（１１４）。例えば、エントロピー復号ユニット７０は、バイパスモードで２よりも大きい係数レベルをもつ係数の全てのための係数レベルの残りの絶対値を示すシンタックス要素を復号し得る。いくつかの例では、現在のＣＧ中の係数レベルの第１の残りの絶対値を復号するときに、エントロピー復号ユニット７０が、復号された係数の係数レベルに基づいて統計値を更新し得る。
【０２８３】
[0205]  場合によっては、エントロピー復号ユニット７０は、ライスパラメータの初期値と、現在のＣＧ中で復号されている係数のための係数レベルの絶対値とに基づいて、ライスパラメータの初期値を条件付きで更新し得る。エントロピー復号ユニット７０は、現在のＣＧ中の係数のための各残りの絶対レベルを復号した後に、ライスパラメータの値を条件付きで更新し続け得る。現在のＣＧの終了において、エントロピー復号ユニット７０は、現在のＣＧ中に含まれる最近復号された係数を含む、前に復号された係数のための係数レベルの統計値に基づいて、後続のＣＧのためのライスパラメータの初期値を決定し得る。
【０２８４】
[0206]  図９は、本開示で説明する技法に従って係数レベルのエントロピーコーディング中に前にコーディングされた係数のための係数レベルの統計値を決定する例示的な動作を示すフローチャートである。図示された動作は、図７からのステップ１００または図８からのステップ１１０の一例であり得る。例示的な動作について、図６からのエントロピー復号ユニット７０を含むビデオデコーダ３０に関して説明する。他の例では、この動作が、図５からのビデオエンコーダ２０のエントロピー符号化ユニット５６によって行われ得る。
【０２８５】
[0207]  エントロピー復号ユニット７０が、変換ブロック中に含まれるＣＧ中の係数のための係数レベルを復号する（１２０）。係数レベルは、係数レベルの絶対値または係数レベルの残りの絶対値のいずれかを備え得る。復号された係数レベルがＣＧ中の第１の係数レベルでない場合（１２２のいいえ(ＮＯ)分岐）、エントロピー復号ユニット７０は、復号された係数レベルに基づいて統計値を更新しない（１２４）。この例では、統計値は、ＣＧの各々において係数レベルの第１の絶対値または係数レベルの第１の残りのアブソリューション(remaining absolution value)値がコーディングされるとき、ＣＧごとに１回のみ更新される。他の例では、統計値が、より頻繁にまたは異なる係数レベルのコーディングに基づいて更新され得る。
【０２８６】
[0208]  復号された係数レベルがＣＧ中の第１の係数レベルである場合（１２２のはい(ＹＥＳ)分岐）、エントロピー復号ユニット７０は、変換ブロックの特性に基づいてＣＧのカテゴリーを決定する（１２６）。一例で、ＣＧのカテゴリーを決定するために使用される変換ブロックの特性は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップブロックであるか否かとを含む。他の例で、ＣＧのカテゴリーを決定するために使用される特性は異なり、例えば、変換ブロックが変換量子化バイパスブロックであるか否か、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および／または変換ブロック内の現在のＣＧの位置であり得る。いくつかの例で、ビデオデコーダ３０は、ＣＧの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信し得る。
【０２８７】
[0209]  エントロピー復号ユニット７０は、次いで、ＣＧ中の第１の係数レベルを、決定されたカテゴリーのための統計値の関数と比較する（１２８）。一例では、統計値を更新するために使用される統計値の関数が、第２の一定値で除算された統計値の値だけ左シフトされた第１の一定値に基づく。他の例では、統計値が、ビデオデータのスライスまたはコーディングユニット（ＣＵ）にわたって係数レベルの平均または移動平均を計算すること、あるいはＣＧ中の係数レベルを統計値の値と直接比較することなど、異なる技法に従って決定され得る。
【０２８８】
[0210]  ＣＧ中の第１の係数レベルが統計値の関数の結果よりも大きいかまたはそれに等しい場合（１３０のＹＥＳ分岐）、エントロピー復号ユニット７０は、決定されたカテゴリーについて統計値の値を増加させる（１３２）。ＣＧ中の第１の係数レベルが統計値の関数の結果よりも小さい場合（１３０のＮＯ分岐）、エントロピー復号ユニット７０は、決定されたカテゴリーについて統計値の値を減少させる（１３４）。いずれの場合も、エントロピー復号ユニット７０は、図１０に関して以下でより詳細に説明するように、決定されたカテゴリーの後続のＣＧのためのライスパラメータの初期値を決定するために、更新された統計値を使用し得る。
【０２８９】
[0211]  図９の例では、統計値を決定するための動作が、ＣＧごとに１回のみ統計値を更新し、ＣＧの複数の異なるカテゴリーについて別々の統計値を収集する。他の例では、統計値を決定するための動作が、ＣＧ中の係数レベルのための残りの絶対値をコーディングした後に統計値を更新し得る。追加の例では、統計値を決定するための動作が、統計値の１つのカテゴリーのみを収集し得る。
【０２９０】
[0212]  図１０は、本開示で説明する技法に従って、決定された統計値に基づいて現在の係数グループのためのライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。図示された動作は、図７からのステップ１０２または図８からのステップ１１２の一例であり得る。例示的な動作について、図６からのエントロピー復号ユニット７０を含むビデオデコーダ３０に関して説明する。他の例では、この動作が、図５からのビデオエンコーダ２０のエントロピー符号化ユニット５６によって行われ得る。
【０２９１】
[0213]  変換ブロック中の現在のＣＧの開始において（１４０）、エントロピー復号ユニット７０が、現在のＣＧを含む変換ブロックの特性に基づいて現在のＣＧのカテゴリーを決定する（１４２）。一例で、現在のＣＧのカテゴリーを決定するために使用される変換ブロックの特性は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップブロックであるか否かとを含む。他の例で、現在のＣＧのカテゴリーを決定するために使用される特性は異なる場合があり、例えば、変換ブロックが変換量子化バイパスブロックであるか否か、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および／または変換ブロック内の現在のＣＧの位置であり得る。いくつかの例で、ビデオデコーダ３０は、ＣＧの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信し得る。
【０２９２】
[0214]  エントロピー復号ユニット７０は、次いで、統計値の関数に従って、決定されたカテゴリーのための統計値の値を現在のＣＧのためのライスパラメータの初期値にマッピングする（１４４）。一例で、ライスパラメータを初期化するために使用される統計値の関数は、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく。他の例で、ライスパラメータの初期値は、一定値だけ統計値の値を右シフトすること、あるいは統計値の線形関数または区分線形関数を適用することなど、異なる技法に従って統計値から決定され得る。さらに他の例で、エントロピー復号ユニット７０は、予め定義されたレンジ内の統計値の各値が、ライスパラメータの最大値までライスパラメータの値にマッピングされた、記憶されたテーブルに従って、統計値の値をライスパラメータの初期値にマッピングし得る。
【０２９３】
[0215]  １つまたは複数の例では、説明された機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技術の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２９４】
[0216]  限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２９５】
[0217]  命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能が、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素において完全に実装され得る。
【０２９６】
[0218]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。様々な構成要素、モジュール、またはユニットについて、開示する技術を行うように構成されたデバイスの機能的態様を強調するために本開示で説明したが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
【０２９７】
[0219]  様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲内にある。
以下に、本願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオ復号プロセスにおいて係数を復号する方法であって、
残差ビデオデータの、前に復号された係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値を復号することとを備える、方法。
［Ｃ２］
前記統計値は、前記前に復号された係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの１つの統計値を備える、Ｃ１に記載の方法。
［Ｃ３］
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの１つまたは複数中に含まれる、前の係数グループ中の前記前に復号された係数のための前記係数レベルの統計値を備える、Ｃ１に記載の方法。
［Ｃ４］
前記統計値を決定することは、
前記前に復号された係数のうちの少なくとも１つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを備える、Ｃ１に記載の方法。
［Ｃ５］
前記統計値の前記関数は、第２の一定値で除算された前記統計値の値だけ左シフトされた第１の一定値を備える、Ｃ４に記載の方法。
［Ｃ６］
前記残差ビデオデータの各スライスの開始において前記統計値の値を０に初期化することをさらに備える、Ｃ１に記載の方法。
［Ｃ７］
前記統計値を決定することは、係数グループごとに１回前記統計値を決定することを備える、Ｃ１に記載の方法。
［Ｃ８］
係数グループごとに１回前記統計値を決定することは、複数の前の係数グループの各々において係数レベルの第１の絶対値または係数レベルの第１の残りの絶対値のうちの１つが復号されるときに前記統計値を決定することを備える、Ｃ７に記載の方法。
［Ｃ９］
前記統計値を決定することは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定することを備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、Ｃ１に記載の方法。
［Ｃ１０］
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、Ｃ９に記載の方法。
［Ｃ１１］
係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信することをさらに備え、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのためのシーケンスパラメータセット（ＳＰＳ）またはピクチャパラメータセット（ＰＰＳ）のうちの１つにおいて受信される、Ｃ９に記載の方法。
［Ｃ１２］
前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することをさらに備え、ここにおいて、前記ライスパラメータの前記初期値を決定することは、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することを備える、Ｃ９に記載の方法。
［Ｃ１３］
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することは、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングすることを備える、Ｃ１に記載の方法。
［Ｃ１４］
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、Ｃ１３に記載の方法。
［Ｃ１５］
前記ライスパラメータの前記初期値と、前記現在の係数グループ中で復号されている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新することをさらに備える、Ｃ１に記載の方法。
［Ｃ１６］
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの１つを備える、Ｃ１に記載の方法。
［Ｃ１７］
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、Ｃ１に記載の方法。
［Ｃ１８］
ビデオ符号化プロセスにおいて係数を符号化する方法であって、
残差ビデオデータの、前に符号化された係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値を符号化することとを備える、方法。
［Ｃ１９］
前記統計値は、前記前に符号化された係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの１つの統計値を備える、Ｃ１８に記載の方法。
［Ｃ２０］
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの１つまたは複数中に含まれる、前の係数グループ中の前記前に符号化された係数のための前記係数レベルの統計値を備える、Ｃ１８に記載の方法。
［Ｃ２１］
前記統計値を決定することは、
前記前に符号化された係数のうちの少なくとも１つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを備える、Ｃ１８に記載の方法。
［Ｃ２２］
前記統計値の前記関数は、第２の一定値で除算された前記統計値の値だけ左シフトされた第１の一定値を備える、Ｃ２１に記載の方法。
［Ｃ２３］
前記残差ビデオデータの各スライスの開始において前記統計値の値を０に初期化することをさらに備える、Ｃ１８に記載の方法。
［Ｃ２４］
前記統計値を決定することは、係数グループごとに１回前記統計値を決定することを備える、Ｃ１８に記載の方法。
［Ｃ２５］
係数グループごとに１回前記統計値を決定することは、複数の前の係数グループの各々において係数レベルの第１の絶対値または係数レベルの第１の残りの絶対値のうちの１つが符号化されるときに前記統計値を決定することを備える、Ｃ２４に記載の方法。
［Ｃ２６］
前記統計値を決定することは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定することを備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、Ｃ１８に記載の方法。
［Ｃ２７］
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、Ｃ２６に記載の方法。
［Ｃ２８］
係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を生成することをさらに備え、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのためのシーケンスパラメータセット（ＳＰＳ）またはピクチャパラメータセット（ＰＰＳ）のうちの１つにおいて生成される、Ｃ２６に記載の方法。
［Ｃ２９］
前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することをさらに備え、ここにおいて、前記ライスパラメータの前記初期値を決定することは、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することを備える、Ｃ２６に記載の方法。
［Ｃ３０］
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することは、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングすることを備える、Ｃ１８に記載の方法。
［Ｃ３１］
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、Ｃ３０に記載の方法。
［Ｃ３２］
前記ライスパラメータの前記初期値と、前記現在の係数グループ中で符号化されている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新することをさらに備える、Ｃ１８に記載の方法。
［Ｃ３３］
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの１つを備える、Ｃ１８に記載の方法。
［Ｃ３４］
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、Ｃ１８に記載の方法。
［Ｃ３５］
ビデオデータを記憶するように構成されるメモリと、
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングすることと
を行うように構成される１つまたは複数のプロセッサとを備えるビデオコーディングデバイス。
［Ｃ３６］
前記統計値は、前記前にコーディングされた係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの１つの統計値を備える、Ｃ３５に記載のデバイス。
［Ｃ３７］
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの１つまたは複数中に含まれる、前の係数グループ中の前記前にコーディングされた係数のための前記係数レベルの統計値を備える、Ｃ３５に記載のデバイス。
［Ｃ３８］
前記プロセッサは、
前記前にコーディングされた係数のうちの少なくとも１つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを行うように構成される、Ｃ３５に記載のデバイス。
［Ｃ３９］
前記統計値の前記関数は、第２の一定値で除算された前記統計値の値だけ左シフトされた第１の一定値を備える、Ｃ３８に記載のデバイス。
［Ｃ４０］
前記残差ビデオデータの各スライスの開始において前記統計値の値が０に初期化される、Ｃ３５に記載のデバイス。
［Ｃ４１］
前記統計値を決定することは、係数グループごとに１回前記統計値を決定することを備える、Ｃ３５に記載のデバイス。
［Ｃ４２］
前記プロセッサは、複数の前の係数グループの各々において係数レベルの第１の絶対値または係数レベルの第１の残りの絶対値のうちの１つがコーディングされるときに前記統計値を決定するように構成される、Ｃ４１に記載のデバイス。
［Ｃ４３］
前記プロセッサは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、Ｃ３５に記載のデバイス。
［Ｃ４４］
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、Ｃ４３に記載のデバイス。
［Ｃ４５］
前記プロセッサは、係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を決定するように構成され、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのシーケンスパラメータセット（ＳＰＳ）またはピクチャパラメータセット（ＰＰＳ）のうちの１つ中に含まれる、Ｃ４３に記載のデバイス。
［Ｃ４６］
前記プロセッサは、前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することと、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することとを行うように構成される、Ｃ４３に記載のデバイス。
［Ｃ４７］
前記プロセッサは、前記統計値の関数に従って前記統計値の値を前記現在の係数グループのための前記ライスパラメータの前記初期値にマッピングするように構成される、Ｃ３５に記載のデバイス。
［Ｃ４８］
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、Ｃ４７に記載のデバイス。
［Ｃ４９］
前記プロセッサは、前記ライスパラメータの前記初期値と、前記現在の係数グループ中でコーディングされている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新するように構成される、Ｃ３５に記載のデバイス。
［Ｃ５０］
前記ビデオコーディングデバイスはビデオ復号デバイスを備え、前記ビデオ復号デバイスの前記プロセッサは、前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の前記係数のための前記係数レベルの前記残りの絶対値を復号するように構成される、Ｃ３５に記載のデバイス。
［Ｃ５１］
前記ビデオコーディングデバイスはビデオ符号化デバイスを備え、前記ビデオ符号化デバイスの前記プロセッサは、前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の前記係数のための前記係数レベルの前記残りの絶対値を符号化するように構成される、Ｃ３５に記載のデバイス。
［Ｃ５２］
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの１つを備える、Ｃ３５に記載のデバイス。
［Ｃ５３］
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、Ｃ３５に記載のデバイス。
［Ｃ５４］
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定するための手段と、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定するための手段と、
前記ライスパラメータの前記初期値によって定義されるコードを使用して前記現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングするための手段とを備えるビデオコーディングデバイス。
［Ｃ５５］
前記統計値を決定するための前記手段は、
前記前にコーディングされた係数のうちの少なくとも１つのための係数レベルを前記統計値の関数と比較するための手段と、ここにおいて、前記統計値の前記関数は、第２の一定値で除算された前記統計値の値だけ左シフトされた第１の一定値を備える、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定するための手段とを備える、Ｃ５４に記載のデバイス。
［Ｃ５６］
前記統計値を決定するための前記手段は、複数の前の係数グループの各々において係数レベルの第１の絶対値または係数レベルの第１の残りの絶対値のうちの１つがコーディングされるとき、係数グループごとに１回前記統計値を決定するための手段を備える、Ｃ５４に記載のデバイス。
［Ｃ５７］
前記統計値を決定するための前記手段は、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定するための手段を備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義され、およびここにおいて、前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、Ｃ５４に記載のデバイス。
［Ｃ５８］
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定するための前記手段は、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングするための手段を備え、ここにおいて、前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、Ｃ５４に記載のデバイス。
［Ｃ５９］
ビデオコーディングデバイスの１つまたは複数のプロセッサによって実行されたとき、
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも１つの係数のための係数レベルの残りの絶対値をコーディングすることとを前記プロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。
【図１】
0006445001.tif 000049
【図２】
0006445001.tif 000050
【図３】
0006445001.tif 000051
【図４】
0006445001.tif 000052
【図５】
0006445001.tif 000053
【図６】
0006445001.tif 000054
【図７】
0006445001.tif 000055
【図８】
0006445001.tif 000056
【図９】
0006445001.tif 000057
【図１０】
0006445001.tif 000058