(57)【要約】ビデオエンコーダなどのコンピューティングデバイスは、係数ブロックの係数についての初期量子化レベルを決定し、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定する。係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、コンピューティングデバイスは、係数を当該係数についての初期量子化レベル、初期量子化レベルマイナス１、および場合によっては０になるように量子化するレートひずみコストを決定する。コンピューティングデバイスは、計算されたレートひずみコストに少なくとも部分的に基づいて、係数についての実際の量子化レベルを決定し、係数ブロックの量子化バージョンに実際の量子化レベルを含める。【選択図】  図６
2015516761.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記計算されたレートひずみコストに少なくとも部分的に基づいて、前記係数について実際の量子化レベルを決定することと、
を備える、方法。
【請求項２】
前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定することをさらに備える、請求項１に記載の方法。
【請求項３】
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記係数を前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト決定することと、
をさらに備える、請求項１に記載の方法。
【請求項４】
前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、請求項１に記載の方法。
【請求項５】
最終有意係数を決定することをさらに備え、前記最終有意係数は逆走査順序で前記係数ブロックの前記第１の非ゼロ係数である、請求項１に記載の方法。
【請求項６】
前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
をさらに備える、請求項１に記載の方法。
【請求項７】
前記実際の量子化レベルを決定することは、最も低いレートひずみコストをもたらす実際の量子化レベルを選択することを備える、請求項１に記載の方法。
【請求項８】
前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成することをさらに備える、請求項７に記載の方法。
【請求項９】
前記係数についての前記初期量子化レベルを決定することは、
【数１】
2015516761.tif 000034
を計算することを備え、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは量子化ステップであり、
【数２】
2015516761.tif 000035
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）は前記係数の前記初期値の符号を返す関数である、請求項１に記載の方法。
【請求項１０】
前記方法は、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
をさらに備え、
前記レートひずみコストを決定することは、前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１に量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することを備える、
請求項１に記載の方法。
【請求項１１】
ビデオデータを符号化するコンピューティングデバイスであって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記計算されたレートひずみコストに基づいて、前記係数について実際の量子化レベルを決定することと、
を行うように構成された１つまたは複数のプロセッサを備える、コンピューティングデバイス。
【請求項１２】
前記１つまたは複数のプロセッサは、前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定するようにさらに構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記１つまたは複数のプロセッサは、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１４】
前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、請求項１１に記載のコンピューティングデバイス。
【請求項１５】
前記１つまたは複数のプロセッサは、最終有意係数を決定するようにさらに構成され、前記最終有意係数は逆走査順序で前記第１の非ゼロ係数である、請求項１１に記載のコンピューティングデバイス。
【請求項１６】
前記１つまたは複数のプロセッサは、
前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
を行うようにさらに構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１７】
前記１つまたは複数のプロセッサは、少なくとも部分的に最も低いレートひずみコストをもたらす実際の量子化レベルを選択することによって、前記実際の量子化レベルを決定するように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１８】
前記１つまたは複数のプロセッサは、前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成するようにさらに構成された、請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記１つまたは複数のプロセッサは、
【数３】
2015516761.tif 000036
を計算することによって前記係数についての前記初期量子化レベルを決定するようにさらに構成され、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは量子化ステップであり、
【数４】
2015516761.tif 000037
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）が前記係数の前記初期値の符号を返す関数である、請求項１１に記載のコンピューティングデバイス。
【請求項２０】
前記１つまたは複数のプロセッサは、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項２１】
係数ブロックの係数用の初期量子化レベルを決定するための手段と、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記計算されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定するための手段と、
を備える、コンピューティングデバイス。
【請求項２２】
コンピューティングデバイスの１つまたは複数のプロセッサによって実行されるとき、
係数ブロックの係数についての初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することと、
前記計算されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定することと、
を行うように前記コンピューティングデバイスを構成する命令を記憶する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１２年４月１３日に出願された米国仮特許出願第６１／６２３，９２９号、２０１２年４月１３日に出願された米国仮特許出願第６１／６２３，９４８号、および２０１２年４月１３日に出願された米国仮特許出願第６１／６２４，１１６号の利益を主張する。
【技術分野】
【０００２】
本開示は、ビデオコーディングと圧縮とに関し、詳細には、ビデオコーディングにおけるレートひずみ最適量子化の実装に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶することができる。
【０００４】
[0004]ビデオ圧縮技法は、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行して、ビデオシーケンスに固有の冗長性を低減または除去する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部）は、ビデオブロックに区分化され得、ビデオブロックは、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれる場合もある。ピクチャのイントラコーディングされた（Ｉ）スライス内のビデオブロックは、同じピクチャの中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス内のビデオブロックは、同じピクチャの中の隣接ブロック内の参照サンプルに対する空間的予測、または他の参照ピクチャの中の参照サンプルに対する時間的予測を使用することができる。ピクチャはフレームと呼ばれる場合があり、参照ピクチャは参照フレームと呼ばれる場合がある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックに対し予測ブロックをもたらす。残差データは、コーディングされるべきオリジナルのブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差係数がもたらされ得、残差係数は、次いで量子化され得る。量子化された係数は、最初は２次元アレイで構成され、係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]一般に、本開示は量子化技法を記載する。いくつかの例では、ビデオエンコーダなどのコンピューティングデバイスは、係数ブロックの係数についての初期量子化レベルを決定し、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定する。係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、コンピューティングデバイスは、係数を係数についての初期量子化レベルなるように量子化するレートひずみコスト、係数を初期量子化レベルマイナス１になるように量子化するレートひずみコスト、および場合によっては係数を０になるように量子化するレートひずみコストを決定する。コンピューティングデバイスは、計算されたレートひずみコストに少なくとも部分的に基づいて、係数についての実際の量子化レベルを決定する。コンピューティングデバイスは、係数ブロックの量子化バージョン内に実際の量子化レベルを含める。
【０００７】
[0007]一例では、本開示は、ビデオデータを符号化する方法を記載する。方法は、係数ブロックの係数についての初期量子化レベルを決定することを備える。方法はまた、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することを備える。さらに、方法は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することを備える。加えて、方法は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、計算されたレートひずみコストに少なくとも部分的に基づいて、係数についての実際の量子化レベルを決定することを備える。
【０００８】
[0008]別の例では、本開示は、ビデオデータを符号化するコンピューティングデバイスを記載する。コンピューティングデバイスは、係数ブロックの係数についての初期量子化レベルを決定するように構成された１つまたは複数のプロセッサを備える。１つまたは複数のプロセッサはまた、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定するように構成される。１つまたは複数のプロセッサは、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、１つまたは複数のプロセッサは係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定するように構成される。さらに、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、１つまたは複数のプロセッサは、計算されたレートひずみコストに基づいて、係数についての実際の量子化レベルを決定する。
【０００９】
[0009]別の例では、本開示は、係数ブロックの係数についての初期量子化レベルを決定する手段を備えるコンピューティングデバイスを記載する。加えて、コンピューティングデバイスは、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定する手段を備える。さらに、コンピューティングデバイスは、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定する手段を備える。コンピューティングデバイスはまた、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、計算されたレートひずみコストに基づいて、係数についての実際の量子化レベルを決定する手段を備える。
【００１０】
[0010]別の例では、本開示は、コンピューティングデバイスの１つまたは複数のプロセッサによって実行されるとき、コンピューティングデバイスに係数ブロックの係数についての初期量子化レベルを決定させる命令を記憶する、コンピュータ可読記憶媒体を記載する。命令はまた、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定するように、コンピューティングデバイスを構成する。命令はまた、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定するように、コンピューティングデバイスを構成する。さらに、命令は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、コンピューティングデバイスが計算されたレートひずみコストに基づいて係数についての実際の量子化レベルを決定するように、コンピューティングデバイスを構成する。
【００１１】
[0011]本開示の１つまたは複数の例の詳細が、添付の図面および下記の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】本開示に記載される技法を利用できる例示的なビデオコーディングシステムを示すブロック図。
【図２】本開示に記載される技法を実装できる例示的なビデオエンコーダを示すブロック図。
【図３】本開示に記載される技法を実装できる例示的なビデオデコーダを示すブロック図。
【図４】デッドゾーンによるスカラー量子化を示す概念図。
【図５】量子化オフセットとレベル決定とを示す概念図。
【図６】本開示の１つまたは複数の技法により、係数を量子化する例示的な動作を示すフローチャート。
【図７】本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する例示的な動作を示すフローチャート。
【図８】図７の動作の例示的な一部を示すフローチャート。
【図９】本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する別の例示的な動作を示すフローチャート。
【図１０】本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する別の例示的な動作を示すフローチャート。
【図１１】本開示の技法による、別の例示的な符号化動作を示すフローチャート。
【図１２】本開示の技法による、別の例示的なコーディング動作を示すフローチャート。
【発明を実施するための形態】
【００１３】
[0024]ビデオエンコーダは、ビデオ符号化中に係数を量子化することができる。係数を量子化すると、係数のビット深度を削減することができる。高効率ビデオコーディング（ＨＥＶＣ）では、ビデオエンコーダは、デッドゾーン技法によるスカラー量子化を使用して、またはレートひずみ最適量子化（ＲＤＯＱ）技法を使用して量子化を実行することができる。ＲＤＯＱ技法は、デッドゾーン技法によるスカラー量子化に比べて、著しいパフォーマンス向上を実現することができる。しかしながら、ＲＤＯＱ技法は、デッドゾーン技法によるスカラー量子化よりも著しく複雑である。
【００１４】
[0025]本開示の技法は、ＲＤＯＱ技法の複雑さを低減することができる。たとえば、ＲＤＯＱは、係数の量子化レベル（Ｌｅｖｅｌ）、Ｌｅｖｅｌ−１、および０のレートひずみ（ＲＤ）コストを決定することに関与することができる。本開示のいくつかの技法は、係数の計算された値がＬｅｖｅｌと量子化ステップサイズの値との積よりも小さい場合、係数についての量子化レベル（Ｌｅｖｅｌ）、Ｌｅｖｅｌ−１、および０のＲＤコストを決定するだけで、ＲＤＯＱ技法の複雑さを低減することができる。この条件が満足されたときこれらのＲＤコストのみを決定することによって、ＲＤＯＱ技法を実施する複雑さが低減され得る。別の例では、本開示のいくつかの技法は、これらの技法を実装しているビデオエンコーダが、量子化オフセット参照テーブル内で量子化オフセットを参照し、これらの量子化オフセットを使用して係数を量子化することができるという点で、ＲＤＯＱ技法の複雑さを低減することができる。量子化オフセット参照テーブル内で量子化オフセットを参照することによって、各係数についてＬｅｖｅｌ、Ｌｅｖｅｌ−１、および０のＲＤコストを決定する必要がない場合がある。Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０のＲＤコストの決定を除去すると、ＲＤＯＱ技法の複雑さを低減することができる。別の例では、ＲＤＯＱ技法の複雑さは、ＲＤＯＱ技法内の様々なＲＤコストを計算するときにビデオエンコーダが使用できる乗算テーブルを生成することによって、低減され得る。
【００１５】
[0026]添付の図面は、例を示す。添付の図面内で参照番号によって示される要素は、以下の説明において同様の参照番号によって示される要素に対応する。本開示では、序数語（たとえば、「第１の」、「第２の」、「第３の」など）で始まる名称を有する要素は、それらの要素が特定の順序を有することを必ずしも意味するとは限らない。むしろ、そのような序数語は、同じまたは同様のタイプの異なる要素を指すために使用されるにすぎない。
【００１６】
[0027]図１は、本開示の技法を利用できる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書に記載されるように、「ビデオコーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、総称的にビデオ符号化またはビデオ復号を指す場合がある。
【００１７】
[0028]図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれる場合がある。宛先デバイス１４は、ソースデバイス１２によって生成された、符号化されたビデオデータを復号することができる。したがって、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれる場合がある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備えることができる。
【００１８】
[0029]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信することができる。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な１つまたは複数の媒体および／またはデバイスを備えることができる。一例では、チャネル１６は、ソースデバイス１２が符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備えることができる。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などのワイヤレスおよび／または有線の通信媒体を含む場合がある。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などのパケットベースネットワークの一部を形成する場合がある。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含む場合がある。
【００１９】
[0030]別の例では、チャネル１６は、ソースデバイス１２によって生成された、符号化されたビデオデータを記憶する記憶媒体を含む場合がある。この例では、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスすることができる。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの様々なローカルアクセスデータ記憶媒体を含む場合がある。
【００２０】
[0031]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された、符号化されたビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含む場合がある。この例では、送信先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶すること、および符号化されたビデオデータを宛先デバイス１４に送信することが可能な、あるタイプのサーバであり得る。例示的なファイルサーバには、（たとえば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブが含まれる。
【００２１】
[0032]宛先デバイス１４は、インターネット接続などの標準的なデータ接続を介して、符号化されたビデオデータにアクセスすることができる。例示的なタイプのデータ接続には、ファイルサーバに記憶された、符号化されたビデオデータにアクセスするのに適切である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せが含まれる。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００２２】
[0033]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、単方向または双方向のビデオ送信をサポートして、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするように構成され得る。
【００２３】
[0034]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含む場合がある。ビデオソース１８は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するビデオフィードインターフェース、および／もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはそのようなビデオデータのソースの組合せを含む場合がある。
【００２４】
[0035]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。符号化されたビデオデータは、復号および／または再生のために宛先デバイス１４が後でアクセスするために、記憶媒体またはファイルサーバ上に記憶される場合もある。
【００２５】
[0036]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して、符号化されたビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４と一体であり得るか、またはその外部にあり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備える場合がある。
【００２６】
[0037]ビデオエンコーダ２０およびビデオデコーダ３０は、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格などのビデオ圧縮規格に従って動作することができ、ＨＥＶＣテストモデル（ＨＭ）に準拠することができる。「ＨＥＶＣ  Ｗｏｒｋｉｎｇ  Ｄｒａｆｔ  ６」または「ＷＤ６」と呼ばれる次回のＨＥＶＣ規格のドラフトは、文書ＪＣＴＶＣ−Ｈ１００３、Ｂｒｏｓｓらの「Ｈｉｇｈ  ｅｆｆｉｃｉｅｎｃｙ  ｖｉｄｅｏ  ｃｏｄｉｎｇ（ＨＥＶＣ）  ｔｅｘｔ  ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｄｒａｆｔ  ６」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）、第８回会議：米国カリフォルニア州サンホセ、２０１２年２月に記載されており、これは２０１３年２月２１日の時点で、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／８＿Ｓａｎ％２０Ｊｏｓｅ／ｗｇ１１／ＪＣＴＶＣ−Ｈ１００３−ｖ２２．ｚｉｐからダウンロード可能であり、その内容全体は参照により本明細書に組み込まれる。「ＨＥＶＣ  Ｗｏｒｋｉｎｇ  Ｄｒａｆｔ  ９」と呼ばれる次回のＨＥＶＣ規格の別のドラフトは、Ｂｒｏｓｓらの「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）  ｔｅｘｔ  ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｄｒａｆｔ  ９」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）、第１１回会議：中国、上海、２０１２年１０月に記載されており、これは２０１３年２月２１日の時点で、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１１＿Ｓｈａｎｇｈａｉ／ｗｇ１１／ＪＣＴＶＣ−Ｋ１００３−ｖ８．ｚｉｐからダウンロード可能であり、その内容全体は参照により本明細書に組み込まれる。
【００２７】
[0038]代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、そのスケーラブルビデオコーディング（ＳＶＣ）およびマルチビュービデオコーディング（ＭＶＣ）の拡張版を含む、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１ビジュアル、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２ビジュアル、ＩＴＵ−Ｔ  Ｈ．２６３、（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４ビジュアルおよびＩＴＵ−Ｔ  Ｈ．２６４を含む、他のプロプライエタリな標準または業界標準に従って動作することができる。しかしながら、本開示の技法は、いかなる特定のコーディング規格またはコーディング技法にも限定されない。
【００２８】
[0039]この場合も、図１は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含むとは限らないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用することができる。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。符号化デバイスはデータを符号化し、メモリに格納することができ、かつ／または、復号デバイスはデータをメモリから取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、データをメモリに符号化し、かつ／またはデータをメモリから取り出し、復号するだけのデバイスによって実行される。
【００２９】
[0040]ビデオエンコーダ２０およびビデオデコーダ３０は、各々１つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実施することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれも、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれる場合があり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれる場合がある。
【００３０】
[0041]本開示は、概して、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０などの別のデバイスに「シグナリング」することに言及する場合がある。「シグナリング」という用語は、概して、符号化されたビデオデータを表すシンタックス要素および／または他のデータの通信を指す場合がある。そのような通信は、リアルタイムまたはほぼリアルタイムで行われ得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム内でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われる場合があるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【００３１】
[0042]上記で簡略に述べられたように、ビデオエンコーダ２０はビデオデータを符号化する。ビデオデータは、１つまたは複数のピクチャを備える場合がある。ピクチャの各々は静止画像であり得る。場合によっては、ピクチャはビデオ「フレーム」と呼ばれる場合がある。ビデオエンコーダ２０は、ビデオデータのコード化表現を形成するビット列を含むビットストリームを生成することができる。ビデオデータのコード化表現は、コード化ピクチャと関連データとを含む場合がある。コード化ピクチャはピクチャのコード化表現である。関連データには、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、および他のシンタックス構造が含まれ得る。ＳＰＳは、ゼロ以上のピクチャのシーケンスに適用可能なパラメータを含む場合がある。ＰＰＳは、ゼロ以上のピクチャに適用可能なパラメータを含む場合がある。シンタックス構造は、指定された順序でビットストリーム内に一緒に存在するゼロ以上のシンタックス要素のセットであり得る。
【００３２】
[0043]ピクチャの符号化表現を生成するために、ビデオエンコーダ２０はピクチャをコーディングツリーブロック（ＣＴＢ）のグリッドに区分化することができる。こうして、各ＣＴＢはピクチャの領域に関連付けられ得る。場合によっては、ＣＴＢは、「ツリーブロック」、「最大コーディングユニット」（ＬＣＵ）、または「コーディングツリーユニット」と呼ばれる場合がある。ＨＥＶＣのＣＴＢは、Ｈ．２６４／ＡＶＣなどの以前の規格のマクロブロックに広い意味で類似する場合がある。しかしながら、ＣＴＢは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含む場合がある。
【００３３】
[0044]ＣＴＢの各々は、ＣＴＢに関連付けられた領域内のピクセルに対応する、ルミナンス（ルーマ）サンプルのブロックおよびクロミナンス（クロマ）サンプルの２つのブロックに関連付けられ得る。説明を簡単にするために、本開示は、サンプルの２次元アレイをサンプルブロックと呼ぶ場合がある。ビデオエンコーダ２０は、四分木区分化を使用して、ＣＴＢに関連付けられた領域を、今後「コーディングツリーブロック」という名称の、ＣＵに関連付けられた領域に区分化することができる。
【００３４】
[0045]ピクチャのＣＴＢは、１つまたは複数のスライスにグループ化される場合がある。いくつかの例では、スライスの各々は整数個のＣＴＢを含む。ピクチャを符号化することの一部として、ビデオエンコーダ２０はピクチャの各スライスの符号化表現（すなわち、コード化スライス）を生成することができる。コード化スライスを生成するために、ビデオエンコーダ２０はスライスの各ＣＴＢを符号化して、スライスの各ＣＴＢの符号化表現（すなわち、コード化ＣＴＢ）を生成することができる。
【００３５】
[0046]コード化ＣＴＢを生成するために、ビデオエンコーダ２０は、ＣＴＢに関連付けられた領域に対して再帰的に四分木区分化を実行して、領域を漸進的により小さい領域に分割することができる。より小さい領域はＣＵに関連付けられ得る。より小さい領域の各々は、ルーマサンプルのブロックおよびクロマサンプルの２つのブロックに関連付けられ得る。したがって、ＣＵは、ルーマサンプルのブロックおよびクロマサンプルの２つのブロックに関連付けられ得る。区分化されたＣＵは、その領域が他のＣＵに関連付けられた領域に区分化されたＣＵであり得る。区分化されていないＣＵは、その領域が他のＣＵに関連付けられた領域に区分化されていないＣＵであり得る。
【００３６】
[0047]ビデオエンコーダ２０は、区分化されていないＣＵごとに１つまたは複数の予測ユニット（ＰＵ）を生成することができる。ＣＵの各ＰＵは、そのＣＵの領域内の異なる領域に関連付けられ得る。ビデオエンコーダ２０は、ＣＵのＰＵごとに予測サンプルブロックを生成することができる。
【００３７】
[0048]ビデオエンコーダ２０は、イントラ予測またはインター予測を使用して、１つのＰＵについて複数の予測サンプルブロックを生成することができる。ビデオエンコーダ２０がイントラ予測を使用してＰＵの予測サンプルブロックを生成する場合、ビデオエンコーダ２０は、当該ＰＵに関連付けられたピクチャの復号されたサンプルに基づいて、当該ＰＵの予測サンプルブロックを生成することができる。ビデオエンコーダ２０がインター予測を使用してＰＵの予測サンプルブロックを生成する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００３８】
[0049]ビデオエンコーダ２０は、１つのＣＵの複数のＰＵの予測サンプルブロックに基づいて、当該ＣＵについて残差サンプルブロックを生成することができる。ＣＵについての残差サンプルブロックは、ＣＵのＰＵについての予測サンプルブロック内のサンプルとＣＵのオリジナルのサンプルブロック内の対応するサンプルとの間の差分を示すことができる。
【００３９】
[0050]さらに、区分化されていないＣＵを符号化することの一部として、ビデオエンコーダ２０はＣＵの残差サンプルブロックに対して再帰的四分木区分化を実行して、ＣＵの残差サンプルブロックをＣＵの変換ユニット（ＴＵ）に関連付けられた１つまたは複数のより小さい残差サンプルブロックに区分化することができる。ＣＵのサンプルブロックは、ルーマサンプルの１つのブロックとクロマサンプルの２つのブロックとを含むことができるので、ＴＵの各々は、ルーマサンプルの１つの残差サンプルブロックおよびクロマサンプルの２つの残差サンプルブロックに関連付けられ得る。
【００４０】
[0051]ビデオコーダ２０は、ＴＵに関連付けられた残差サンプルブロックに１つまたは複数の変換を適用して、係数ブロック（すなわち、係数のブロック）を生成することができる。ビデオエンコーダ２０は、係数ブロックの各々に対して量子化プロセスを実行することができる。量子化は、一般に、係数を量子化して、係数を表すために使用されるデータの量をできるだけ削減することにより、さらなる圧縮を実現する処理を指す。
【００４１】
[0052]ビデオエンコーダ２０は、これらのシンタックス要素の少なくとも一部に、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）演算などのエントロピー符号化演算を適用することができる。係数ブロックのシンタックス要素をエントロピー符号化することに加えて、ビデオエンコーダ２０は、変換ブロックに逆量子化と逆変換とを適用して、変換ブロックから残差サンプルブロックを復元することができる。ビデオエンコーダ２０は、復元された残差サンプルブロックを１つまたは複数の予測サンプルブロックからの対応するサンプルに追加して、復元されたサンプルブロックを生成することができる。このようにしてＣＵのＴＵごとにサンプルブロックを復元することによって、ビデオエンコーダ２０は、ＣＵのサンプルブロックを復元することができる。
【００４２】
[0053]ビデオエンコーダ２０がＣＵのサンプルブロックを復元した後、ビデオエンコーダ２０は、デブロッキング動作を実行して、ＣＵに関連付けられたブロッキングアーティファクトを低減することができる。これらの動作を実行した後、ビデオエンコーダ２０は、他のＣＵのＰＵ用の予測サンプルブロックを生成する際に使用するために、ＣＵの復元されたサンプルブロックを復号ピクチャバッファに記憶することができる。
【００４３】
[0054]ビデオデコーダ３０はビットストリームを受信することができる。ビットストリームは、ビデオエンコーダ２０によって符号化されたビデオデータのコード化表現を含むことができる。ビデオデコーダ３０は、ビットストリームを構文解析して、ビットストリームからシンタックス要素を抽出することができる。ビットストリームから少なくともいくつかのシンタックス要素を抽出することの一部として、ビデオデコーダ３０は、ビットストリーム内のデータをエントロピー復号することができる。
【００４４】
[0055]ビデオデコーダ３０は、ビットストリームから抽出されたシンタックス要素に基づいて、ビデオデータのピクチャを復元することができる。シンタックス要素に基づいてビデオデータを復元するプロセスは、一般に、シンタックス要素を生成するためにビデオエンコーダ２０によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ３０は、ＣＵに関連付けられたシンタックス要素に基づいて、ＣＵのＰＵ用の予測サンプルブロックを生成することができる。加えて、ビデオデコーダ３０は、ＣＵのＴＵに関連付けられた係数ブロックを逆量子化することができる。ビデオデコーダ３０は、係数ブロックに対して逆変換を実行して、ＣＵのＴＵに関連付けられた残差サンプルブロックを復元することができる。ビデオデコーダ３０は、予測サンプルブロックおよび残差サンプルブロックに基づいて、ＣＵのサンプルブロックを復元することができる。
【００４５】
[0056]上記で説明されたように、ビデオエンコーダ２０は残差サンプルブロックを生成することができる。残差サンプルブロック内の各サンプルは、サンプルブロックのオリジナルのバージョン内の対応するサンプルと同じサンプルブロックの予測バージョンとの間の差分を示すことができる。残差サンプルブロックを生成した後、ビデオエンコーダ２０は、残差サンプルブロックに１つまたは複数の変換を適用することができる。残差サンプルブロックに１つまたは複数の変換を適用することによって、ビデオエンコーダ２０は、残差サンプルブロックをサンプル領域から周波数領域に変換することができる。結果は、変換係数のブロック（すなわち、「変換係数ブロック」または「係数ブロック」）である。いくつかの例では、変換の目的は、信号を様々な周波数成分に非相関化することである。さらに、いくつかの例では、ビデオエンコーダ２０は、残差サンプルブロックに変換を適用しない。そのような例では、ビデオエンコーダ２０は、係数ブロックと同じ方法で残差サンプルブロックを扱うことができる。説明を簡単にするために、係数ブロックの本開示内の説明は、ビデオエンコーダ２０が１つまたは複数の変換を適用しない残差サンプルブロックに適用することができる。
【００４６】
[0057]さらに、上記で説明されたように、係数ブロックを生成した後、ビデオエンコーダ２０は、係数ブロックの係数を量子化することができる。係数を量子化すると、係数のビット深度を削減することができる。量子化は、符号化にひずみをもたらす可能性があるプロセスである。その後、量子化された係数は、ＣＡＢＡＣなどの可変長コーディングを使用して符号化される。ＨＥＶＣでは、量子化用の２つの技法が存在する。１番目の量子化技法は、デッドゾーンによるスカラー量子化である。２番目の量子化技法は、レートひずみ最適量子化（ＲＤＯＱ）である。
【００４７】
[0058]デッドゾーン技法によるスカラー量子化では、ビデオエンコーダ２０は、下記等式（１）を使用して、係数を個別の量子化レベルにマッピングする。
【数１】
2015516761.tif 000003
【００４８】
等式（１）では、
【数２】
2015516761.tif 000004
【００４９】
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）は入力信号Ｗの符号を返す関数である。Δは量子化ステップであり、ｆは量子化オフセットである。等式（１）では、量子化オフセットｆは、デッドゾーンのサイズを制御する。デッドゾーンは、０にマッピングする間隔である。量子化オフセットｆはまた、０にマッピングする間隔の中心から離れるように復元レベルをシフトする。ｚは量子化レベルの値を示す。
【００５０】
[0059]復号の間、ビデオデコーダ３０は、下記等式（２）を使用して、変換係数を逆量子化することができる
【数３】
2015516761.tif 000005
【００５１】
等式（２）では、Ｗ’は逆量子化された係数を表し、Δは量子化ステップであり、Ｚは受信された量子化レベルである。
【００５２】
[0060]ＲＤＯＱ技法は、レート（すなわち、符号化されたビデオデータのビットレート）とひずみとの間のトレードオフを最適化するように試みる。一般に、ビデオエンコーダ２０は、以下のステップを実行することによって、ＲＤＯＱ技法を実施することができる。第１に、ビデオエンコーダ２０は、コンテキストを初期化することができる：Ｃ１＝１、Ｃ２＝０。第２に、ビデオエンコーダ２０は、逆対角走査順序で係数ブロックの係数を走査することができる。ビデオエンコーダ２０が各係数を走査するとき、ビデオエンコーダ２０は、１／２の量子化オフセットを使用して係数を量子化することができる。第３に、ビデオエンコーダ２０は、係数ブロック内の係数用の最適レベルを決定することができる。第４に、ビデオエンコーダ２０は、最適な最終有意係数を決定することができる。
【００５３】
[0061]前の段落の第３ステップで係数用の最適レベルを決定するために、ビデオエンコーダ２０は、以下のステップを実行することができる。第１に、ビデオエンコーダ２０は、最終有意係数を決定することができる。逆対角走査順序で係数を走査するとき、最終有意係数はゼロでないレベルに量子化されている最初に遭遇した係数である。第２に、残りの非ゼロ係数ごとに、ビデオエンコーダ２０は、係数についての量子化レベルのレートひずみ（ＲＤ）コストに基づいて、最適レベルを選択することができる。残りの係数は、逆対角走査順序に従って最終有意係数の後に存在する係数である。
【００５４】
[0062]係数（すなわち、現在の係数）用の最適な量子化レベルを選択するために、ビデオエンコーダ２０は、現在の係数用の量子化レベルが３よりも小さいかどうかを決定し得る。現在の係数用の量子化レベルが３よりも小さい場合、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌと取り換えることから生じるはずのＲＤコストを計算し得、ここで、Ｌｅｖｅｌは上記で計算された現在の係数用の量子化レベルを表す。さらに、現在の係数用の量子化レベルが３よりも小さい場合、ビデオエンコーダ２０は、現在の係数をＬｅｖｅｌ−１と取り換えることから生じるはずのＲＤコストを計算し得る。加えて、現在の係数用の量子化レベルが３よりも小さい場合、ビデオエンコーダ２０は、現在の係数を値０と取り換えることから生じるはずのＲＤコストを計算し得る。
【００５５】
[0063]現在の係数用の量子化レベルが３以上である場合、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌと取り換えることから生じるはずのＲＤコストを計算し得る。さらに、現在の係数用の量子化レベルが３以上である場合、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌ−１と取り換えることから生じるはずのＲＤコストを計算し得る。
【００５６】
[0064]さらに、ビデオエンコーダ２０が現在の係数用の最適な量子化レベルを選択するとき、ビデオエンコーダ２０は、係数ブロックのすべての係数を（コーディングされていないブロックでもたらされる）０に量子化するＲＤコストを更新することができる。ビデオエンコーダ２０はまた、係数ブロックの各係数を符号化するＲＤコストを更新する。加えて、ビデオエンコーダ２０は、係数ブロックの有意性マップを符号化するコストを更新する。係数ブロックの有意性マップは、係数ブロックのどの係数がゼロでないかを示す。
【００５７】
[0065]加えて、ビデオエンコーダ２０は、現在の係数の最適な量子化（Ｌopt）に基づいて、コンテキストを更新する。ビデオエンコーダ２０は、最も低いＲＤコストを有する現在の係数用の量子化レベル（すなわち、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、または０）としてＬoptを決定することができる。ビデオエンコーダ２０は、コンテキストを使用して、次の係数のレベル決定を実行することができる。たとえば、ビデオエンコーダ２０は、コンテキストに少なくとも部分的に基づいて、次の係数に関連する様々なＲＤコストを決定することができる。
【００５８】
[0066]上記のように、ビデオエンコーダ２０は、ＲＤＯＱ技法を実施することの一部として、最適な最終有意係数を決定し得る。最適な最終有意係数を決定するために、ビデオエンコーダ２０は、以下のステップを実行し得る。第１に、ビデオエンコーダ２０は、現在のブロックがコーディングされていない場合、ＲＤコストに等しくなるように値（ｄ６４ＢｅｓｔＣｏｓｔ）を初期化し得る。第２に、ビデオエンコーダ２０がその量子化レベルが１よりも大きい係数に遭遇するまで、ビデオエンコーダ２０は、逆対角走査に従って係数ブロックの係数を走査し得る。
【００５９】
[0067]ビデオエンコーダ２０が係数（すなわち、現在の係数）を走査するとき、ビデオエンコーダ２０は、以下のステップを実行する。第１に、ビデオエンコーダ２０は、現在の係数が最終有意係数であると見なされる場合生じるはずの合計ブロックコスト（ｔｏｔａｌＣｏｓｔ）を計算し得る。第２に、ｔｏｔａｌＣｏｓｔがｄ６４ＢｅｓｔＣｏｓｔよりも小さい場合、ビデオエンコーダ２０は、現在の係数の係数ブロック内の位置を示すように最良の最終位置インジケータ（ｉＢｅｓｔＬａｓｔＩｄｘＰ１）を設定することができ、ｄ６４ＢｅｓｔＣｏｓｔをｔｏｔａｌＣｏｓｔに等しく設定することができる。
【００６０】
[0068]上述されたＲＤＯＱ技法では、ビデオエンコーダ２０は、いくつかのＲＤコストを計算する。ビデオエンコーダ２０は、Ｄ＋λ＊ＲとしてＲＤコストを計算し得る。Ｄは、係数ブロックのオリジナルの係数と係数ブロックの復元された係数との間の平均二乗誤差を表す。Ｒは、対応するコンテキストモデルのエントロピーを表す。ビデオエンコーダ２０は、係数ブロック用のＲＤＯＱを実施する前、または、ＨＥＶＣにおける変換および量子化の基本単位であるＴＵの任意の係数ブロック用のＲＤＯＱを実施する前に、Ｒを推定し得る。すなわち、シンボルのレートＲは、ＲＤＯＱの前に（またはＴＵごとに）いつも、対応するコンテキストモデルのエントロピーとして推定され得る。
【００６１】
[0069]ＴＵごとにレートＲ（すなわち、量子化レベルと有意性マップおよび最終有意係数の位置などの関連情報とを符号化するレート）を推定するために、ビデオエンコーダ２０は、ＣＡＢＡＣコンテキストモデルのエントロピーを計算し得る。理論上、ＣＡＢＡＣは圧縮の限度を近似することができる。すなわち、ＣＡＢＡＣによって生成された平均コードワード長は、理論上、ソースのエントロピーを近似することができる。ビデオエンコーダ２０がＣＡＢＡＣを使用してデータシンボルを符号化するとき、データシンボルは最初に２値化される。２値化されたデータシンボルは「ビン」と呼ばれる場合がある。
【００６２】
[0070]次いで、ビデオエンコーダ２０は、コンテキストモデルを選択することができる。コンテキストモデルは、最近コーディングされたデータシンボルの統計データを定義し得る。たとえば、１の量子化レベルを符号化する場合、コンテキストモデルは、１に量子化された以前の係数の数として定義され得る。このようにして、コンテキストモデルは、現在のシンボルについての条件付き確率を定義することができる。すなわち、コンテキストモデルは、以前コーディングされたシンボルが与えられれば、現在のシンボルの確率を示すことができる。さらに、コンテキストモデルは、ビンが「１」または「０」である確率を定義することができる。ビデオエンコーダ２０がＣＡＢＡＣを実行するとき、ビデオエンコーダ２０は、選択されたコンテキストモデル（すなわち、「確率モデル」）に従って、２値化されたデータシンボル（すなわち、ビン）を符号化し得る。
【００６３】
[0071]２値化されたデータシンボルを符号化した後、ビデオエンコーダ２０は、実際のコーディングされた値に少なくとも部分的に基づいて、選択されたコンテキストモデルを更新する。ＣＡＢＡＣ符号化が進行中である限り、ビデオエンコーダ２０は、コンテキストモデルの更新を継続し得る。ビデオエンコーダ２０がＲＤＯＱを実施する前に、ビデオエンコーダ２０は、あらゆるコンテキストの現在の確率（すなわち、コンテキスト）モデルをロードし、ビデオエンコーダ２０は、対応するエントロピーを計算し得る。ビデオエンコーダ２０は、エントロピーを使用して、対応するコンテキスト用のシンボルを符号化するビットの数を推定する。言い換えれば、ビデオエンコーダ２０は、コンテキストのエントロピーを使用して、当該コンテキストがシンボルを符号化するために使用された場合に、いくつのビットがシンボルの符号化されたバージョン内に存在するかを推定する。シンボルを符号化するためのビットの数を推定することは、本明細書では「ビット推定」と呼ばれる場合がある。
【００６４】
[0072]したがって、ビデオエンコーダ２０が上述されたＲＤＯＱ技法を実施するとき、ビデオエンコーダ２０は、以下のステップを実行し得る。
【００６５】
１．コンテキストを初期化する：Ｃ１＝１、Ｃ２＝０。
【００６６】
２．逆対角走査順序で１／２のオフセットを用いて係数を量子化する。
【００６７】
３．最適レベルの決定。
【００６８】
Ｉ．最終有意係数を固定する：逆対角走査で非ゼロに量子化された第１の係数。
【００６９】
ＩＩ．逆対角走査で残りの非ゼロ係数について、ＲＤコストに基づいて最適レベルを選択する。
【００７０】
ａ．最良のレベルＬoptを選択する。
【００７１】
ｉ．Ｌｅｖｅｌ＜３の場合、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０のＲＤコスト（Ｄ＋λ・ＲLevel）を計算する。
【００７２】
ｉｉ．Ｌｅｖｅｌ＞＝３の場合、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１のＲＤコスト（Ｄ＋λ・ＲLevel）を計算する。
【００７３】
ｂ．符号化コストを更新する。
【００７４】
ｉ．（コーディングされていないブロックについて）０への量子化のコスト。
【００７５】
ｉｉ．各係数を符号化するコスト。
【００７６】
ｉｉｉ．有意性マップを符号化するコスト（λ・Ｒsig_map）。
【００７７】
ｃ．決定されたレベルＬoptに基づいてコンテキストを更新する。コンテキストは、次の係数のレベル決定によって使用され得る。
【００７８】
ＩＩＩ．次の係数を処理し、ステップＩＩに進む。
【００７９】
４．最適な最終有意係数の決定。
【００８０】
１）現在のブロックがコーディングされていない場合、ＲＤコストになるようにｄ６４ＢｅｓｔＣｏｓｔを初期化する。
【００８１】
２）現在の係数が最終有意係数である場合、逆対角走査で、合計ブロックコストｔｏｔａｌＣｏｓｔを計算する。すなわち、λ・ＲpositionX＋λ・ＲpositionYは加算される必要があり、有意性マップと対応するコストは調整されるべきである。
【００８２】
３）ｔｏｔａｌＣｏｓｔ＜ｄ６４ＢｅｓｔＣｏｓｔの場合、新しい最良の最終位置（ｉＢｅｓｔＬａｓｔＩｄｘＰ１）は現在位置であり、ｄ６４ＢｅｓｔＣｏｓｔ＝ｔｏｔａｌＣｏｓｔにする。
【００８３】
４）ＬｅｖｅｌｏｆＣｕｒＣｏｅｆｆ＞１まで反復する。
【００８４】
[0073]デッドゾーン技法によるスカラー量子化と比較して、ＲＤＯＱ技法は、著しいパフォーマンス向上を実現し得る。しかしながら、これらの向上は、ビデオエンコーダ２０についての著しく増加した複雑さを犠牲にして成り立つ。下記の表１〜表４は、ＲＤＯＱオフ（すなわち、デッドゾーンによるスカラー量子化）対ＲＤＯＱのＨＥＶＣのパフォーマンスを示す。表１〜表４に示されたように、デッドゾーンによるスカラー量子化と比較して、ＲＤＯＱは、３．４％から５．７％のパフォーマンス向上を実現することができる。
【表１】
2015516761.tif 000006
【表２】
2015516761.tif 000007
【表３】
2015516761.tif 000008
【表４】
2015516761.tif 000009
【００８５】
[0074]本開示の技法は、係数用の最適な量子化レベルを選択するＲＤＯＱ内のステップ（上記の説明のステップ（３））を簡略化することができる。上記のＲＤＯＱの説明の第３ステップ（すなわち、最適レベルの決定）から、複数のレベルのＲＤコストは、最適レベルを選択するために計算され得る。すなわち、ビデオエンコーダ２０は、ＲＤＯＱの第３ステップ内のＲＤコストに基づいて、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、または０から最適レベルを選択することができる。
【００８６】
[0075]本開示の技法によれば、ビデオエンコーダ２０は、係数ブロックの係数ごとに、係数の値が係数の復元された値よりも小さい場合のみ、係数の量子化レベルとしてＬｅｖｅｌと、Ｌｅｖｅｌ−１と、０とを使用するＲＤコストを計算し得る。係数の復元された値は、係数についての量子化レベルを生成する際に使用されるステップサイズによって乗算された係数についての量子化レベル（Ｌｅｖｅｌ）に等しい。言い換えれば、係数の値が係数の復元された値以上であることをビデオエンコーダ２０が決定した場合、ビデオエンコーダ２０は、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０についてＲＤコストを計算しないが、代わりに、係数についての量子化レベルとしてＬｅｖｅｌを単に選択し得、このことは、係数についての最適な量子化レベルの選択を簡略化し得る。言い換えれば、ビデオエンコーダ２０は、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、または０になるように係数を量子化するためのレートひずみコストを決定せずに、係数が初期量子化レベル（すなわち、Ｌｅｖｅｌ）と量子化ステップサイズの値との積よりも小さいとの決定に応答して、係数についての実際の量子化レベルが係数についての初期量子化レベルであると決定し得る。
【００８７】
[0076]係数の値が係数の復元された値よりも小さい場合のみ、係数についての量子化レベルとしてＬｅｖｅｌと、Ｌｅｖｅｌ−１と、０とを使用することのＲＤコストを計算することは、ビデオエンコーダが実行する乗算演算の数を削減することができる。同時に、ビットレートが過剰に増大しない。
【００８８】
[0077]したがって、本開示の技法によれば、ビデオエンコーダ２０は、以下のステップを実行することによって、本開示のＲＤＯＱ技法を実施し得る。第１に、ビデオエンコーダ２０は、コンテキストを初期化し得る：Ｃ１＝１、Ｃ２＝０。第２に、ビデオエンコーダ２０は、逆対角走査順序で係数ブロックの係数を走査し得る。ビデオエンコーダ２０が各係数を走査するとき、ビデオエンコーダ２０は、１／２のオフセットを用いて係数を量子化し得る。第３に、ビデオエンコーダ２０は、係数ブロック内の係数についての最適レベルを決定し得る。第４に、ビデオエンコーダ２０は、最適な最終有意係数を決定し得る。ビデオエンコーダ２０は、上述されたＲＤＯＱの第１ステップと、第２ステップと、第４ステップとを実行し得る。
【００８９】
[0078]しかしながら、第３ステップで係数用の最適レベルを決定するために、ビデオエンコーダ２０は、以下のステップを実行し得る。第１に、ビデオエンコーダ２０は、最終有意係数を決定し得る。逆対角走査順序で係数を走査する（すなわち、一般に、最も高い周波数の係数から最も低い周波数の係数まで進む）とき、最終有意係数は０でないレベルに量子化されている最初に遭遇した係数である。第２に、残りの非ゼロ係数ごとに、ビデオエンコーダ２０は、係数についての量子化レベルのＲＤコストに基づいて、最適レベルを選択し得る。残りの係数は、逆対角走査順序に従って最終有意係数の後に存在する係数である。
【００９０】
[0079]係数（すなわち、現在の係数）についての最適な量子化レベルを選択するために、本開示の技法によれば、ビデオエンコーダ２０は、以下のステップを実行し得る。第１に、ビデオエンコーダ２０は、現在の係数の値がＬｅｖｅｌ＊ＳｔｅｐＳｉｚｅよりも小さいかどうかを決定し得、ここで、Ｌｅｖｅｌはステップ（２）で決定された現在の係数用の量子化レベルであり、ＳｔｅｐＳｉｚｅは現在の係数を量子化するために使用される量子化ステップΔのサイズである。言い換えれば、ビデオエンコーダ２０は、現在の係数の値が現在の係数の復元された値よりも小さいかどうかを決定し得る。現在の係数の値が現在の係数の復元された値よりも小さい場合、ビデオエンコーダ２０は、現在の係数用の量子化レベルが３よりも小さいかどうかを決定し得る。
【００９１】
[0080]現在の係数が３よりも小さいとの決定に応答して、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌと取り換えることから生じるはずのＲＤコストを計算し得、ここで、Ｌｅｖｅｌは現在の係数についての量子化レベルを表す。さらに、現在の係数が３よりも小さいとの決定に応答して、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌ−１と取り換えることから生じるはずのＲＤコストを計算し得る。現在の係数が３よりも小さいとの決定に応答して、ビデオエンコーダ２０はまた、現在の係数を値０と取り換えることから生じるはずのＲＤコストを決定し得る。
【００９２】
[0081]現在の係数用の量子化レベルが３以上であるとの決定に応答して、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌと取り換えることから生じるはずのＲＤコストを計算し得る。さらに、ビデオエンコーダ２０は、現在の係数を値Ｌｅｖｅｌ−１と取り換えることから生じるはずのＲＤコストを計算し得る。
【００９３】
[0082]ビデオエンコーダ２０は、最も低いＲＤコストを有するバージョンとして現在の係数の最適な量子化レベルＬoptを選択し得る。さらに、ビデオエンコーダ２０は、最適な最終有意係数を決定する際に使用されるＲＤコストを更新し得る。すなわち、ビデオエンコーダ２０は、係数ブロックのすべての係数を０に量子化すること（コーディングされていないブロックとなる）のＲＤコストを０に更新し得る。加えて、ビデオエンコーダ２０は、係数ブロックの各係数を符号化するコストを更新し得る。ビデオエンコーダ２０はまた、係数ブロックの有意性マップを符号化するコストを更新し得る。ビデオエンコーダ２０は、現在の係数についての決定された最適な量子化レベル（Ｌopt）に基づいて、コンテキストを更新し得る。ビデオエンコーダ２０は、係数ブロック内の次の係数のレベル決定においてコンテキストを使用することができる。
【００９４】
[0083]このようにして、ビデオエンコーダ２０は、係数ブロックの係数についての初期量子化レベルを決定し得る。加えて、ビデオエンコーダ２０は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定し得る。変換係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、ビデオエンコーダ２０は、係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定し得る。さらに、変換係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、ビデオエンコーダ２０は、計算されたレートひずみコストに基づいて、係数についての実際の量子化レベルを決定し得る。加えて、ビデオエンコーダ２０は、係数ブロックの量子化バージョン内に実際の量子化レベルを含め得る。
【００９５】
[0084]上述されたように、ＲＤＯＱアルゴリズムは２つの主要なパスを有する。１番目のパスは、個別の係数のＲＤコストに基づいて、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０の中から最適な量子化レベルを選択することである。固定された量子化ステップの場合、ビデオエンコーダ２０は、常に、量子化レベルがＲＤＯＱアルゴリズムによって決定されたレベルに等しいように量子化オフセットを選択し得る。２番目のパスは、ブロックのＲＤコストに基づいて、最適な最終有意係数を選択することである。本開示のさらなる技法は、ＲＤＯＱアルゴリズムの第１ステップを取り換えることによって、ＲＤＯＱアルゴリズムを簡略化することができる。すなわち、本開示のさらなる技法は、係数についての最適な量子化レベルを選択するＲＤＯＱ内のステップを簡略化することができる。詳細には、量子化レベルがＲＤＯＱの１番目のパスで決定された最適レベルに等しいように量子化オフセットが調整された場合、１番目のパスのレベル決定に関わる複雑さは低減され得る。
【００９６】
[0085]ＲＤＯＱのパフォーマンスを近似することができる量子化オフセットを決定するために、ＲＤＯＱの（最終有意係数の決定において、いくつかのレベルが０に設定される）ステップ３およびステップ４でＬｅｖｅｌ、Ｌｅｖｅｌ−１、または０が選択される回数は、周波数の係数ごとに収集され得る。このようにして、選択されているＬｅｖｅｌ、Ｌｅｖｅｌ−１、または０のランクは、各々の異なる周波数での係数ごとに取得され得る。量子化オフセットが１／２、１／３、および１／６に限定される場合、ビデオエンコーダ２０は、下記の表５に示されたように量子化オフセットを選択し得る。下記の表５は、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、または０がＲＤＯＱで選択された回数のランクに基づく量子化オフセットの例示的な決定を示す。いくつかの例では、表５はテストビデオデータに基づいて生成される。他の例では、表５はビデオエンコーダ２０によって動的に生成される。
【表５】
2015516761.tif 000010
【００９７】
たとえば、Ｌｅｖｅｌが係数ブロックの位置（Ｉ，Ｊ）にある係数について最も頻繁に選択された場合、量子化オフセット１／２が、位置（Ｉ，Ｊ）に設定され得る。そうではなく、Ｌｅｖｅｌ−１または０がＲＤＯＱで最も頻繁に選択された場合、量子化オフセットは１／３または１／６に設定され得る。このようにして、ほぼ最適な量子化オフセットテーブルが生成され得る。
【００９８】
[0086]したがって、本開示のさらなる技法によれば、参照テーブルが生成される。いくつかの例では、ビデオエンコーダ２０は参照テーブルを生成する。参照テーブルは、変換係数の位置を量子化オフセットにマッピングし得る。参照テーブルは、従来のＲＤＯＱ技法が係数ブロック内の様々な位置にある係数についての量子化オフセットを使用するレートに基づいて生成され得る。量子化オフセットの例には、１／２、１／３、および１／６が含まれ得る。すなわち、参照テーブルは、３つの可能な量子化オフセットの値：１／２、１／３、および１／６のうちの１つに係数の位置をマッピングし得る。ビデオエンコーダ２０は、係数ブロック内のそれぞれの係数のそれぞれの位置を使用して、参照テーブル内でそれぞれの係数用のそれぞれの量子化オフセットを参照することができる。さらに、ビデオエンコーダ２０は、１つまたは複数のそれぞれの係数についてのそれぞれの量子化オフセットに少なくとも部分的に基づいて、それぞれの係数についてのそれぞれの量子化レベルを決定することができる。
【００９９】
[0087]ビデオエンコーダ２０が参照テーブルを使用して係数（すなわち、現在の係数）についての量子化オフセットを参照した後、ビデオエンコーダ２０は、下記に再掲された等式（１）を使用して、現在の係数用の最適な量子化レベル（Ｌopt）を決定し得る。
【数４】
2015516761.tif 000011
【０１００】
言い換えれば、値Ｌｅｖｅｌを使用するか、Ｌｅｖｅｌ−１を使用するか、または０を使用するかを決定した後、ビデオエンコーダ２０は、表５と同様の表に従って上記の等式（１）の中のｆについての値を選択し得る。このようにして、ビデオエンコーダ２０は、現在の係数用の量子化レベル（すなわち、関数（１）に従って計算されるｚの値）を計算し得る。ビデオエンコーダ２０は、量子化係数ブロック内の現在の係数についての量子化レベルを使用し得る。
【０１０１】
[0088]ＲＤＯＱ技法では、ビデオエンコーダ２０はＲＤコストを計算する。ＲＤコストを計算することは、いくつかのダブルポイント（double point）の加算および乗算を必要とする場合がある。ダブルポイントの加算および乗算は、倍精度型のデータ（たとえば、浮動小数点数）を含む数の加算および乗算を必要とする演算である。ダブルポイントの乗算は、他のタイプの計算動作よりも多くの計算時間がかかる場合がある。その結果、係数ごとのＲＤＯＱ技法用の主要な計算は、第３ステップ（すなわち、係数用の最適レベルの決定）において行われる場合がある。ＲＤＯＱ技法の第３ステップにおけるダブルポイントの乗算は、以下を含む。
【０１０２】
・復元エラーＤについての２つのダブルポイントの乗算。Ｄ＝ｄＥｒｒｏｒ＊ｄＥｒｒｏｒ＊ｄＴｅｍｐ、ここで、ｄＥｒｒｏｒはオリジナルの係数と復元された係数との差分であり、ｄＴｅｍｐはスケーリングファクタである。
【０１０３】
・λ・Ｒlevelについての１つのダブルポイントの乗算、ここで、Ｒlevelは量子化レベルを符号化するために推定されたビットの数である。
【０１０４】
・λ・Ｒsig_mapについての１つのダブルポイントの乗算、ここで、Ｒsig_mapは現在の係数についての有意性マップを符号化するために推定されたビットの数である。
【０１０５】
・現在の係数が０に量子化された場合引き起こされるひずみについての２つのダブルポイントの乗算。
【０１０６】
さらに、ＲＤＯＱ技法の第４ステップ（すなわち、最適な最終有意係数の決定）における主要な計算は、λ・ＲpositionX＋λ・ＲpositionYについての２つのダブルポイントの乗算を含み、ここで、ＲpositionXおよびＲpositionYは、最終有意係数の位置を符号化するために推定されたビットの数である。λは定数であるが、Ｒがコンテキストモデルを更新するエントロピーとして推定されるので、ビデオエンコーダ２０はλ・Ｒを計算する必要があり得る。
【０１０７】
[0089]時間的に隣接するピクチャは、通常、大いに相関する。すなわち、隣接ピクチャは互いに似ている可能性がある。したがって、本開示の１つまたは複数の技法によれば、ビデオエンコーダ２０は、現在のフレーム内のシンボル用のビット推定として、前のフレームのコンテキストモデルのエントロピーを使用することができる。このようにして、ビデオエンコーダ２０がＲＤＯＱを実施するたびに、ビデオエンコーダ２０がコンテキストモデルのエントロピーをロードする必要はない場合がある。同様に、ビデオエンコーダ２０がＴＵごとにコンテキストモデルのエントロピーをロードする必要はない場合がある。むしろ、ビデオエンコーダ２０が新しいフレームの符号化を開始するたびに、ビデオエンコーダ２０は、コンテキストモデルのエントロピーをロードする場合がある。言い換えれば、ビデオエンコーダ２０は、１フレーム当たり一度、ビット推定を実行し得る。言い換えれば、ビデオエンコーダ２０は、１フレーム当たり一度、現在のフレーム内のシンボルについてビットの数を推定し得る。
【０１０８】
[0090]λは定数なので、ビデオエンコーダ２０は、各々の新しいフレームを符号化する最初に乗算テーブルを構築することによって、ダブルポイント乗算を回避することができる。乗算テーブルは参照テーブルであり得る。ビデオエンコーダ２０は、インデックスとしてコンテキストを使用して、乗算テーブル内のλ・Ｒの値を参照し得る。ＲＤＯＱにおけるＲＤコスト計算の間、ビデオエンコーダ２０は、乗算テーブル内のＲＤコストを参照し得る。現在のコンテキストモデルと前のフレームのコンテキストモデルとの間に不一致が存在する可能性があるので、ＲＤコスト内のビット推定は、正確ではない場合がある。しかしながら、時間的に隣接するビデオフレームが大いに相関するという事実により、不一致によってもたらされるパフォーマンス低下は比較的小さい可能性がある。
【０１０９】
[0091]図２は、本開示に記載される技法を実装できる例示的なビデオエンコーダを示すブロック図である。図２は、説明の目的で提供され、本開示において広く例示され、記載される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法にも適用可能であり得る。
【０１１０】
[0092]図２の例では、ビデオエンコーダ２０は、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、復元ユニット１１２と、フィルタユニット１１３と、復号ピクチャバッファ１１４と、エントロピー符号化ユニット１１６とを含む。エントロピー符号化ユニット１１６は、正規ＣＡＢＡＣコーディングエンジン１１８と、バイパスコーディングエンジン１２０とを含む。予測処理ユニット１００は、インター予測処理ユニット１２１と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２１は、動き推定ユニット１２２と、動き補償ユニット１２４とを含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能構成要素を含む場合がある。
【０１１１】
[0093]ビデオエンコーダ２０は、ビデオデータを受信する。ピクチャを符号化することの一部として、ビデオエンコーダ２０はスライス内の各コーディングツリーブロック（ＣＴＢ）を符号化することができる。ＣＴＢを符号化することの一部として、予測処理ユニット１００は、ＣＴＢに関連付けられた領域に対して四分木区分化を実行して、領域を漸進的により小さい領域に分割することができる。より小さい領域はＣＵに関連付けられ得る。たとえば、予測処理ユニット１００は、ＣＴＢの領域を４つの等しいサイズのサブ領域に区分化し、サブ領域のうちの１つまたは複数を４つの等しいサイズのサブサブ領域に区分化することができ、以下同様である。
【０１１２】
[0094]ビデオエンコーダ２０は、ピクチャ内のＣＴＢのＣＵを符号化して、ＣＵの符号化表現（すなわち、コード化ＣＵ）を生成することができる。ビデオエンコーダ２０は、ｚ走査順序に従ってＣＴＢのＣＵを符号化することができる。言い換えれば、ビデオエンコーダ２０は、左上のＣＵと、右上のＣＵと、左下のＣＵと、次いで右下のＣＵとを、その順序で符号化することができる。ビデオエンコーダ２０が区分化されたＣＵを符号化するとき、ビデオエンコーダ２０は、ｚ走査順序に従って、区分化されたＣＵのサンプルブロックのサブブロックに関連付けられたＣＵを符号化することができる。
【０１１３】
[0095]さらに、ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの中で、ＣＵのサンプルブロックを区分化することができる。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なＰＵサイズをサポートすることができる。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測用の２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズ用の非対称区分化をサポートすることができる。
【０１１４】
[0096]インター予測処理ユニット１２１は、ＣＵの各ＰＵに対してインター予測を実行することによって、ＰＵ用の予測データを生成することができる。ＰＵ用の予測データは、そのＰＵに対応する予測サンプルブロックと、そのＰＵについての動き情報とを含むことができる。スライスは、Ｉスライス、Ｐスライス、またはＢスライスであり得る。インター予測ユニット１２１は、ＰＵがＩスライス内にあるか、Ｐスライス内にあるか、またはＢスライス内にあるかに応じて、ＣＵのＰＵについて異なる演算を実行することができる。Ｉスライスでは、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス内にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。
【０１１５】
[0097]ＰＵがＰスライス内にある場合、動き推定ユニット１２２は、ＰＵ用の参照ブロックについて参照ピクチャのリスト（たとえば、「リスト０」）内の参照ピクチャを検索し得る。参照ピクチャ用のデータは、復号ピクチャバッファ１１４に記憶され得る。ＰＵの参照ブロックは、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックであり得る。動き推定ユニット１２２は、ＰＵの参照ブロックを含む、リスト０内の参照ピクチャを示す参照ピクチャインデックスと、ＰＵのサンプルブロックと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット１２２は、ＰＵの動き情報として、参照ピクチャインデックスと動きベクトルとを出力し得る。動き補償ユニット１２４は、ＰＵの動き情報によって示される参照ブロックに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成し得る。
【０１１６】
[0098]ＰＵがＢスライス内にある場合、動き推定ユニット１２２は、ＰＵについて単方向インター予測または双方向インター予測を実行することができる。ＰＵについて単方向インター予測を実行するために、動き推定ユニット１２２は、ＰＵ用の参照ブロックを求めて、第１の参照ピクチャリスト（「リスト０」）または第２の参照ピクチャリスト（「リスト１」）の参照ピクチャを検索し得る。動き推定ユニット１２２は、参照ブロックを含む参照ピクチャのリスト０またはリスト１内の位置を示す参照ピクチャインデックスと、ＰＵのサンプルブロックと参照ブロックとの間の空間的変位を示す動きベクトルと、参照ピクチャがリスト０内にあるか、またはリスト１内にあるかを示す予測方向インジケータとを、ＰＵの動き情報として出力し得る。
【０１１７】
[0099]ＰＵについて双方向インター予測を実行するために、動き推定ユニット１２２は、ＰＵ用の参照ブロックを求めてリスト０内の参照ピクチャを検索し得、ＰＵ用の別の参照ブロックを求めてリスト１内の参照ピクチャを検索することもできる。動き推定ユニット１２２は、これらの参照ブロックを含む参照ピクチャのリスト０およびリスト１内の位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニット１２２は、参照ブロックとＰＵのサンプルブロックとの間の空間的変位を示す動きベクトルを生成し得る。ＰＵの動き情報は、ＰＵの参照ピクチャインデックスと動きベクトルとを含み得る。動き補償ユニット１２４は、ＰＵの動き情報によって示される参照ブロックに基づいて、ＰＵの予測サンプルブロックを生成し得る。
【０１１８】
[0100]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵ用の予測データを生成し得る。ＰＵ用の予測データは、ＰＵ用の予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス内、Ｐスライス内、およびＢスライス内のＰＵに対してイントラ予測を実行し得る。
【０１１９】
[0101]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、複数のイントラ予測モードを使用して、ＰＵ用の予測データの複数のセットを生成し得る。イントラ予測モードを使用してＰＵ用の予測データのセットを生成するために、イントラ予測処理ユニット１２６は、そのイントラ予測モードに関連付けられた方向にＰＵのサンプルブロック全体にわたって、隣接ＰＵのサンプルブロックからのサンプルを拡張し得る。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＢについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左であり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、ＰＵのサンプルブロックのサイズに依存する場合がある。
【０１２０】
[0102]予測処理ユニット１００は、ＰＵのためにインター予測処理ユニット１２１によって生成された予測データ、またはＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵ用の予測データを選択し得る。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／ひずみ測定基準に基づいて、ＣＵのＰＵ用の予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれる場合がある。
【０１２１】
[0103]残差生成ユニット１０２は、ＣＵのサンプルブロックおよびＣＵのＰＵの選択された予測サンプルブロックに少なくとも部分的に基づいて、ＣＵの残差サンプルブロックを生成し得る。たとえば、残差生成ユニット１０２は、残差サンプルブロック内の各サンプルが、ＣＵのサンプルブロック内のサンプルとＣＵのＰＵの選択された予測サンプルブロック内の対応するサンプルとの間の差分に等しい値を有するように、ＣＵの残差サンプルブロックを生成することができる。
【０１２２】
[0104]予測処理ユニット１００は、四分木区分化を実行して、ＣＵの残差サンプルブロックをサブブロックに区分化し得る。各々の分割されていない残差サンプルブロックは、ＣＵのＴＵに関連付けられ得る。ＣＵのＴＵに関連付けられた残差サンプルブロックのサイズおよび位置は、ＣＵのＰＵのサンプルブロックのサイズおよび位置に基づいても、基づかなくてもよい。
【０１２３】
[0105]ＣＵは、ルーマサンプルの１つのブロックおよびクロマサンプルの２つのブロックに関連付けられるので、ＴＵの各々は、ルーマサンプルのブロックおよびクロマサンプルの２つのブロックに関連付けられ得る。変換処理ユニット１０４は、ＴＵに関連付けられた残差サンプルブロックに１つまたは複数の変換を適用することによって、ＣＵのＴＵごとに係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵに関連付けられた残差サンプルブロックに様々な変換を適用し得る。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を残差サンプルブロックに適用し得る。
【０１２４】
[0106]量子化ユニット１０６は、係数ブロック内の係数を量子化し得る。量子化プロセスは、係数の一部または全部に関連するビット深度を削減することができる。たとえば、ｎビットの係数は、量子化の間にｍビットの係数に端数を切り捨てられ得、ここで、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵに関連付けられた量子化パラメータ（ＱＰ）の値に少なくとも部分的に基づいて、ＣＵのＴＵに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰの値を調整することによって、ＣＵに関連付けられた係数ブロックに適用される量子化の程度を調整することができる。本開示の技法によれば、量子化ユニット１０６は、図１に関して上記で説明されたように、参照テーブルを使用して、かつ／または修正されたＲＤＯＱプロセスに従って、係数用の量子化レベルの値を選択するように構成され得る。
【０１２５】
[0107]逆量子化ユニット１０８と逆変換処理ユニット１１０は、係数ブロックにそれぞれ逆量子化と逆変換とを適用して、係数ブロックから残差サンプルブロックを復元し得る。復元ユニット１１２は、復元された残差サンプルブロックのサンプルを、予測処理ユニット１００によって生成された１つまたは複数の予測サンプルブロックからの対応するサンプルに追加して、ＴＵに関連付けられた復元サンプルブロックを生成し得る。このようにしてＣＵのＴＵごとにサンプルブロックを復元することによって、ビデオエンコーダ２０は、ＣＵのサンプルブロックを復元し得る。
【０１２６】
[0108]フィルタユニット１１３は、デブロッキング動作を実行して、ＣＵに関連付けられたサンプルブロック内のブロッキングアーティファクトを低減することができる。復号ピクチャバッファ１１４は、復元サンプルブロックを記憶することができる。インター予測ユニット１２１は、復元サンプルブロックを含む参照ピクチャを使用して、他のピクチャのＰＵに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット１２６は、復号ピクチャバッファ１１４内の復元サンプルブロックを使用して、ＣＵと同じピクチャ内の他のＰＵに対してイントラ予測を実行し得る。
【０１２７】
[0109]エントロピー符号化ユニット１１６は、ビデオエンコーダ２０の他の機能構成要素からデータを受け取ることができる。たとえば、エントロピー符号化ユニット１１６は、量子化ユニット１０６から係数ブロックを受け取り、予測処理ユニット１００からシンタックス要素を受け取る。エントロピー符号化ユニット１１６は、このデータに対して１つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化データを生成し得る。たとえば、エントロピー符号化ユニット１１６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、可変長−可変長（Ｖ２Ｖ）コーディング演算、シンタックスベースのコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）演算、確率間隔区分化エントロピー（ＰＩＰＥ）コーディング演算、または別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ２０は、エントロピー符号化ユニット１１６によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。
【０１２８】
[0110]図３は、本開示の技法を実装できる例示的なビデオデコーダ３０を示すブロック図である。図３は、説明の目的で提供され、本開示において広く例示され、記載される技法に対する限定ではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法にも適用可能であり得る。
【０１２９】
[0111]図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、復元ユニット１５８と、フィルタユニット１５９と、復号ピクチャバッファ１６０とを含む。予測処理ユニット１５２は、動き補償ユニット１６２と、イントラ予測処理ユニット１６４とを含む。エントロピー復号ユニット１５０は、正規ＣＡＢＡＣコーディングエンジン１６６と、バイパスコーディングエンジン１６８とを含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能構成要素を含む場合がある。
【０１３０】
[0112]ビデオデコーダ３０はビットストリームを受信することができる。エントロピー復号ユニット１５０は、ビットストリームをパース（parse）して、ビットストリームからシンタックス要素を抽出することができる。加えて、エントロピー復号ユニット１５０は、ビットストリーム内のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、復元ユニット１５８、およびフィルタユニット１５９は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１３１】
[0113]加えて、ビデオデコーダ３０は、区分化されていないＣＵに対して復元動作を実行することができる。区分化されていないＣＵに対して復元動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して復元動作を実行し得る。ＣＵのＴＵごとに復元動作を実行することによって、ビデオデコーダ３０は、ＣＵの残差サンプルブロックを復元し得る。
【０１３２】
[0114]ＣＵのＴＵに対して復元動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵに関連付けられた係数ブロックを逆量子化（inverse quantize）、すなわち逆量子化（de-quantize）し得る。逆量子化ユニット１５４は、ＴＵのＣＵに関連付けられたＱＰの値を使用して、量子化の程度を決定し、同様に、逆量子化ユニット１５４が適用するための逆量子化の程度を決定し得る。逆量子化ユニット１５４は、従来の逆量子化プロセスに従って係数を逆量子化し得、ＲＤＯＱプロセスまたは参照テーブルを利用して、係数用の逆量子化値を決定する必要がない。このようにして、本開示の技法は、ビデオデコーダ３０が修正なしに復号できる標準準拠のビットストリームを生成するために使用され得る。
【０１３３】
[0115]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵに関連付けられた残差サンプルブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用し得る。
【０１３４】
[0116]ＰＵがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット１６４は、イントラ予測を実行してＰＵ用の予測サンプルブロックを生成し得る。イントラ予測処理ユニット１６４は、イントラ予測モードを使用して、空間的に隣接するＰＵのサンプルブロックに基づいて、ＰＵ用の予測サンプルブロックを生成し得る。イントラ予測処理ユニット１６４は、ビットストリームからパースされた１つまたは複数のシンタックス要素に基づいて、ＰＵ用のイントラ予測モードを決定し得る。
【０１３５】
[0117]動き補償ユニット１６２は、ビットストリームから抽出されたシンタックス要素に少なくとも部分的に基づいて、第１の参照ピクチャリスト（リスト０）と第２の参照ピクチャリスト（リスト１）とを構築し得る。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵ用の動き情報を抽出し得る。動き補償ユニット１６２は、ＰＵの動き情報に基づいて、ＰＵ用の１つまたは複数の参照ブロックを決定し得る。動き補償ユニット１６２は、ＰＵ用の１つまたは複数の参照ブロックに少なくとも部分的に基づいて、ＰＵ用の予測サンプルブロックを生成し得る。
【０１３６】
[0118]復元ユニット１５８は、ＣＵのＴＵに関連付けられた残差サンプルブロックと、ＣＵのＰＵの予測サンプルブロック、すなわち適用可能な場合イントラ予測データまたはインター予測データとを使用して、ＣＵのサンプルブロックを復元し得る。詳細には、復元ユニット１５８は、残差サンプルブロックのサンプルを予測サンプルブロックの対応するサンプルに追加して、ＣＵのサンプルブロックを復元し得る。
【０１３７】
[0119]フィルタユニット１５９は、デブロッキング動作を実行して、ＣＴＢのＣＵのサンプルブロックに関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ３０は、復号ピクチャバッファ１６０にＣＵのサンプルブロックを記憶することができる。復号ピクチャバッファ１６０は、次の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上の提示のために、参照ピクチャを提供することができる。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６０内のサンプルブロックに少なくとも部分的に基づいて、他のＣＵのＰＵに対してイントラ予測動作またはインター予測動作を実行し得る。
【０１３８】
[0120]図４は、デッドゾーンによるスカラー量子化を示す概念図である。図４の例では、各円は復元値Ｗ’を示し、各垂直線は決定レベルを示す。図４からわかるように、量子化オフセットｆは、デッドゾーン（すなわち、０にマッピングする間隔）のサイズを制御する。量子化オフセットｆはまた、間隔の中心から離れるように復元レベルをシフトする。
【０１３９】
[0121]図４の例は、ｆ＝Δ／２およびｆ＝Δ／３であるケースを示し、ここで、ｆは上述された公式（１）による量子化オフセットを表す。量子化オフセットがｆ＝Δ／２からｆ＝Δ／３に減少したとき、デッドゾーンは増大し、復元レベルは０に向かってシフトすることが、図４の例から観察され得る。復元エラーを最小化するために、復元された値は、変換された係数の分布に対する間隔の平均に等しい場合がある。変換された係数の分布は、ラプラス分布としてモデル化され得る。すなわち、最小の復元エラーを与える量子化オフセットｆは、Δ／２よりも小さくなるべきである。加えて、量子化オフセットｆをΔ／２よりも小さくすることによって、元々レベルｎに量子化された係数は、ｎ−１に量子化され得る。ＨＥＶＣでは、量子化オフセットｆは、経験的に、イントラモードの場合Δ／３に、インターモードの場合Δ／６に設定される。
【０１４０】
[0122]図５は、量子化オフセットとレベル決定とを示す概念図である。言い換えれば、図５は、量子化オフセットと結果として生じたレベルとの間の関係を示す。図５の例では、垂直バー２５０は、量子化オフセットがΔ／２であるときの決定レベルを示す。（破線の垂直バーとして図５に示されたように）量子化オフセットが変化するにつれて、値がどこに入るかに応じて、値はレベルｎまたはレベルｎ−１として量子化され得る。値がｎ・Δから（ｎ＋１／２）・Δまでの範囲に入った場合、量子化オフセットが何であれ、量子化レベルは、ゾーン２５２によって図５に示されたように、ｎのままであり得る。値が（ｎ−１／２）・Δからｎ・Δからまでの範囲（ゾーン２５４）に入った場合、量子化オフセットおよび値がどこに入ったかに応じて、量子化レベルはｎまたはｎ−１であり得る。
【０１４１】
[0123]図６は、本開示の１つまたは複数の技法により、係数を量子化する例示的な動作３００を示すフローチャートである。図６の例では、量子化ユニット１０６は、係数ブロックの係数用の初期量子化レベルを決定し得る（３０２）。係数は、係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在し得る。さらに、量子化ユニット１０６は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定し得る（３０４）。
【０１４２】
[0124]変換係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定（３０４の「はい」）に応答して、量子化ユニット１０６は、初期量子化レベルが３よりも小さいかどうかを決定し得る（３０５）。初期量子化レベルが３よりも小さいとの決定（３０５の「はい」）に応答して、量子化ユニット１０６は、係数を該係数についての初期量子化レベルになるように量子化するレートひずみコスト、該係数を初期量子化レベルマイナス１になるように量子化するレートひずみコスト、および該係数をゼロになるように量子化するレートひずみコストを決定する（３０６）。したがって、初期量子化レベルが３よりも小さいとの決定に応答して、量子化ユニット１０６は、係数を該係数についての初期量子化レベルに量子化するレートひずみコスト、該係数を初期量子化レベルマイナス１になるように量子化するレートひずみコスト、および該係数をゼロになるように量子化するレートひずみコストを決定することができる。さらに、初期量子化レベルが３よりも小さくないとの決定（３０５の「いいえ」）に応答して、量子化ユニット１０６は、係数を初期量子化レベルになるように量子化するレートひずみコスト、および該係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することができる（３０８）。すなわち、初期量子化レベルが３以上であることの決定に応答して、量子化ユニット１０６は、係数を初期量子化レベルになるように量子化するレートひずみコスト、および該係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することができる。より一般的には、量子化ユニット１０６は、係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定し得る。変換係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さいとの決定に応答して、量子化ユニット１０６は、係数を初期量子化レベルになるように量子化するレートひずみコスト、および係数を初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定し得る。
【０１４３】
[0125]アクション３０６またはアクション３０８を実行した後、量子化ユニット１０６は、計算されたレートひずみコストに少なくとも部分的に基づいて、係数用の実際の量子化レベルを決定し得る（３１０）。アクション３０６もしくはアクション３０８とアクション３１０とを実行した後、または係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さくないとの決定（３０４の「いいえ」）に応答して、量子化ユニット１０６は、係数ブロックの量子化バージョンに実際の量子化レベルを含め得る（３１２）。係数が初期量子化レベルと量子化ステップサイズの値との積よりも小さくない場合、実際の量子化レベルは、係数用の初期量子化レベルであり得る。加えて、量子化ユニット１０６は、実際の量子化レベルをエントロピー符号化（たとえば、ＣＡＢＡＣ符号化）し得る（３１４）。量子化ユニット１０６は、エントロピー符号化された実際の量子化レベルを含むビットストリームを出力し得る（３１６）。
【０１４４】
[0126]図７は、本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する例示的な動作３５０を示すフローチャートである。図７の動作３５０は、図６の動作３００の技法と同様の技法を実施することができる。図７の例では、量子化ユニット１０６は、Ｃ１＝１、Ｃ２＝０などのコンテキストを初期化し得る（３５２）。量子化ユニット１０６は、ＲＤコストを決定する際にコンテキストを使用し得る。さらに、量子化ユニット１０６は、逆対角走査順序で係数ブロックの係数を走査し、１／２の量子化オフセットを使用して係数ブロック内の係数を量子化し得る（３５４）。次に、量子化ユニット１０６は、係数ブロックの最終有意係数を決定し得る（３５６）。最終有意係数は、逆走査順序で最初の非ゼロ変換係数であり得る。逆対角走査順序で係数を走査する（すなわち、一般に、最も高い周波数の係数から最も低い周波数の係数まで進む）とき、最終有意係数はゼロでないレベルに量子化されている最初に遭遇した係数である。
【０１４５】
[0127]係数ブロックの最終有意係数を決定した後、量子化ユニット１０６は、図８に示された動作３５０の一部を実行し得る。図８は、本開示で後で詳細に記載される。量子化ユニット１０６が図８に示された動作３５０の一部を実行するとき、量子化ユニット１０６は、それぞれの残りの非ゼロ係数ごとに、それぞれの残りの非ゼロ係数用の最適レベルを決定することができる。図８に関して下記に記載されるように、量子化ユニット１０６は、それぞれの残りの非ゼロ係数用の量子化レベルのＲＤコストに少なくとも部分的に基づいて、それぞれの残りの非ゼロ係数用の最適レベルを決定し得る。残りの係数は、逆対角走査順序に従って最終有意係数の後に存在する係数である。
【０１４６】
[0128]図８に示された動作３５０の一部を実行した後、量子化ユニット１０６は、現在のブロックがコーディングされていない場合、ＲＤコストに等しくなるように最良コード値を初期化し得る（３５８）。すなわち、量子化ユニット１０６は、係数ブロックの各係数を０に量子化することからもたらされるはずのＲＤコストを決定し得る。量子化ユニット１０６は、このＲＤコストに等しくなるように最良コード値を設定し得る。
【０１４７】
[0129]加えて、量子化ユニット１０６は、現在の係数インジケータを初期化し得る（３６０）。いくつかの例では、量子化ユニット１０６は、係数ブロックの最後の係数（たとえば、右下の係数）を示すように現在の係数インジケータを初期化し得る。現在の係数インジケータは、係数ブロック内の係数を示す。本開示は、現在の係数インジケータによって示される係数を現在の係数と呼ぶ場合がある。
【０１４８】
[0130]次に、量子化ユニット１０６は、現在の係数が１よりも大きい量子化レベルを有するかどうかを決定し得る（３６２）。現在の係数が１よりも大きい量子化レベルを有するとの決定（３６２の「はい」）に応答して、量子化ユニット１０６は、動作３５０を終了し得る。一方、現在の係数が１よりも大きい量子化レベルを有していないとの決定（３６２の「いいえ」）に応答して、量子化ユニット１０６は、現在の係数が最終有意係数である場合もたらされるはずの合計ブロックＲＤコストを計算し得る（３６４）。ここで、合計ブロックＲＤコストは、次のように計算され得る。
【数５】
2015516761.tif 000012
【０１４９】
ここで、Ｎは現在のＴＵ内の係数の合計数であり、ＣiはＴＵ内の係数ｉであり、λは定数であり、Ｒiは係数Ｃiの量子化レベルを符号化するビットの数であり、Ｒposx、Ｒposy は、最終有意係数用の位置ｘとｙとを符号化するビットの数であり、Ｒsignificance_mapは、有意性マップを符号化するビットの数である。
【０１５０】
[0131]さらに、量子化ユニット１０６は、計算された合計ブロックＲＤコストが最良コスト値よりも小さいかどうかを決定し得る（３６６）。計算された合計ブロックＲＤコストが最良コスト値よりも小さいとの決定（３６６の「はい」）に応答して、量子化ユニット１０６は、最良の最終位置インジケータを現在の位置に設定し得、最良コスト値を計算された合計ブロックＲＤコストに設定し得る（３６８）。現在の位置は、現在の係数の係数ブロック内の位置である。
【０１５１】
[0132]最良の最終位置インジケータと最良コスト値とを設定した後、または計算された合計ブロックＲＤコストが最良コスト値よりも小さいくないと決定した（３６６の「いいえ」）後、量子化ユニット１０６は、現在の係数インジケータが逆対角走査順序に従って係数ブロック内の次の係数を示すように、現在の係数インジケータを更新し得る（３７０）。次いで、量子化ユニット１０６は、現在の係数が１よりも大きい量子化レベルを有するかどうかを再び決定し得る（３６２）。このようにして、量子化ユニット１０６がその量子化レベルが１よりも大きい係数に遭遇するまで、量子化ユニット１０６は、逆対角走査順序に従って係数ブロックの係数を走査し得る。
【０１５２】
[0133]図８は、図７の動作３５０の例示的な一部を示すフローチャートである。図８の例で示されたように、量子化ユニット１０６は、係数ブロック内にいくつかの残りの非ゼロ係数が存在するがどうかを決定し得る（４００）。係数ブロック内に残りの非ゼロ数が存在しないとの決定（４００の「いいえ」）に応答して、量子化ユニット１０６は、係数ブロック内の各係数の最適値を決定した可能性があり、したがって、図７に示された動作３５０の一部の実行を継続することができる。
【０１５３】
[0134]一方、係数ブロック内に１つまたは複数の残りの非ゼロ係数が存在するとの決定（４００の「はい」）に応答して、量子化ユニット１０６は、現在の係数の現在の値が現在の係数の復元された値よりも小さいかどうかを決定し得る（４０２）。現在の係数の現在の値は、量子化より前の現在の係数の値であり得る。現在の係数の復元された値は、Ｌｅｖｅｌ＊ＳｔｅｐＳｉｚｅに等しく、ここで、Ｌｅｖｅｌは、図７のアクション３５４で決定されたように、現在の係数についての量子化レベルである。ＳｔｅｐＳｉｚｅは、現在の係数を量子化するために使用される量子化ステップΔのサイズである。
【０１５４】
[0135]現在の係数の現在の値が現在の係数の復元された値よりも小さいとの決定（４０２の「はい」）に応答して、量子化ユニット１０６は、現在の係数の量子化レベル（Ｌｅｖｅｌ）が３よりも小さいかどうかを決定し得る（４０４）。現在の係数用の量子化レベルが３よりも小さいとの決定（４０４の「はい」）に応答して、量子化ユニット１０６は、現在の係数を０と取り換えるためのＲＤコストを決定し得る（４０６）。現在の係数を０と取り換えるためのＲＤコストを決定した後、または現在の係数用の量子化レベルが３よりも小さくないとの決定（４０４の「いいえ」）に応答して、量子化ユニット１０６は、現在の係数を現在の係数用の量子化レベル（すなわち、Ｌｅｖｅｌ）と取り換えるためのＲＤコストを決定し得る（４０８）。加えて、量子化ユニット１０６は、現在の係数を現在の係数用の量子化レベル（すなわち、Ｌｅｖｅｌ−１）と交換するためのＲＤコストを決定し得る（４１０）。さらに、量子化ユニット１０６は、現在の係数用の最適な量子化レベルを、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０のうちの最も低いＲＤコストを有しているいずれかとして選択し得る（４１２）。このようにして、量子化ユニット１０６は、最も低いレートひずみコストをもたらす実際の量子化レベルを選択し得る。
【０１５５】
[0136]現在の係数用の最適な量子化レベルを選択した後、または現在の係数の現在の値が現在の係数の復元された値よりも小さくないとの決定（４０２の「いいえ」）に応答して、量子化ユニット１０６は、係数ブロックのすべての係数を０に量子化するＲＤコストを更新し得る（４１４）。加えて、量子化ユニット１０６は、係数ブロックの各係数を符号化するＲＤコストを更新し得る（４１６）。量子化ユニット１０６は、係数ブロックの以前処理された係数のＲＤコストの現行の総和に現在の係数のＲＤコストを加算することによって、係数ブロックの各係数を符号化するＲＤコストを更新し得る。さらに、量子化ユニット１０６は、係数ブロックの有意性マップを符号化するＲＤコストを更新し得る（４１８）。量子化ユニット１０６は、係数ブロックのすべての係数を０に量子化するＲＤコスト、係数ブロックの各係数を符号化するＲＤコスト、および係数ブロックの有意性マップを符号化するＲＤコストに少なくとも部分的に基づいて、現在のブロックの最終有意係数の最適値を決定し得る。
【０１５６】
[0137]加えて、量子化ユニット１０６は、現在の係数用の決定された最適な量子化レベルに基づいて、コンテキストを更新し得る（４２０）。量子化ユニット１０６は、係数ブロック内の次の係数のレベル決定においてコンテキストを使用し得る。コンテキストを更新した後、量子化ユニット１０６は、いくつかの残りの非ゼロ係数が存在するかどうかを再び決定し得る（４００）。このようにして、量子化ユニット１０６は、係数ブロック内の係数の各々の最適値を決定し得る。
【０１５７】
[0138]こうして、図７および図８の動作３５０では、ＲＤＯＱ技法の第３ステップ（すなわち、係数用の最適レベルの決定）は、以下のように簡略化され得る。
【０１５８】
３．最適レベルの決定
Ｉ．最終有意係数を固定する：逆対角走査で非ゼロに量子化された最初の係数。
【０１５９】
ＩＩ．逆対角走査で残っている非ゼロ係数について、ＲＤコストに基づいて最適レベルを選択する。
【０１６０】
ａ．ｃｕｒｒｅｎｔＶａｌｕｅ＜Ｌｅｖｅｌ＊ＳｔｅｐＳｉｚｅ、すなわちｃｕｒｒｅｎｔＶａｌｕｅ＜ｒｅｃｏｎｓｔｒｕｃｔｅｄＶａｌｕｅの場合、最良レベルＬLoptを選択する。
【０１６１】
ｉ．Ｌｅｖｅｌ＜３の場合、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、および０のＲＤコストを計算する。
【０１６２】
ｉｉ．Ｌｅｖｅｌ＞＝３の場合、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１のＲＤコストを計算する。
【０１６３】
ｂ．符号化コストを更新する。
【０１６４】
ｉ．（コーディングされていないブロックの場合）０に量子化するコスト。
【０１６５】
ｉｉ．各係数を符号化するコスト。
【０１６６】
ｉｉｉ．有意性マップを符号化するコスト。
【０１６７】
ｃ．決定されたレベルＬoptに基づいてコンテキストを更新する。コンテキストは、次の係数のレベル決定によって使用される。
【０１６８】
ＩＩＩ．次の係数を符号化し、ステップＩＩに進む。
【０１６９】
[0139]図６〜図８の例示的な技法のパフォーマンスが下記表６〜表９に示される。表６〜表９に示されたように、図６〜図８の技法を実施することによって被るＲＤパフォーマンス低下はほとんどない。さらに、レベル決定の節約Ｌｅｖｅｌsaveが計算され得る。Ｌｅｖｅｌsaveは次のように定義される。
【数６】
2015516761.tif 000013
【０１７０】
上記の等式では、
【数７】
2015516761.tif 000014
【０１７１】
は、ｎ・Δから（ｎ＋１／２）・Δまでの範囲に入る値の数であり、Ｎtotalは、レベル決定が実行された値の合計数である。実験結果は、Ｌｅｖｅｌsaveが６０％と８０％との間であることを示す。すなわち、レベル決定の６０％から８０％はスキップされ得、ＲＤＯＱに関与する計算は削減されている。
【表６】
2015516761.tif 000015
【表７】
2015516761.tif 000016
【表８】
2015516761.tif 000017
【表９】
2015516761.tif 000018
【０１７２】
[0140]図９は、本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する例示的な動作４５０を示すフローチャートである。ビデオエンコーダ２０は、図６の動作３００または図７および図８の動作３５０を実行することの代替として、動作４５０を実行することができる。
【０１７３】
[0141]図９の例に示されたように、変換処理ユニット１０４は、係数ブロックを生成するために、残差サンプルブロックに１つまたは複数の変換を適用することができる（４５２）。加えて、変換処理ユニット１０４は、係数ブロック内のそれぞれの係数のそれぞれの位置を使用して、参照テーブル内で、それぞれの係数についてそれぞれの量子化オフセットを参照し得る（４５４）。いくつかの例では、係数ブロック内のそれぞれの位置について、それぞれの位置についての参照テーブル内のエントリーは、ＲＤＯＱアルゴリズムが、他のテストデータの係数ブロック内でそれぞれの位置に配置された係数用の最適な量子化値として、Ｌｅｖｅｌ、Ｌｅｖｅｌ−１、または０をそれにより選択する周波数に少なくとも部分的に基づき、ここで、Ｌｅｖｅｌは係数用の初期量子化値を表す。
【０１７４】
[0142]さらに、量子化ユニット１０６は、１つまたは複数の係数についてのそれぞれの量子化オフセットに少なくとも部分的に基づいて、それぞれの係数についてのそれぞれの量子化レベルを決定し得る（４５６）。量子化ユニット１０６は、１つまたは複数の係数についての量子化レベルに関連付けられたコストに少なくとも部分的に基づいて、最適な最終有意係数を決定し得る（４５８）。エントロピー符号化ユニット１１６は、最適な最終有意係数に少なくとも部分的に基づいて、係数ブロックの有意性マップをエントロピー符号化し得る（４６０）。加えて、エントロピー符号化ユニット１１６は、最適な最終有意係数の係数ブロック内の位置の前にある係数ブロック内の位置を有する係数用の量子化レベルをエントロピー符号化し得る（４６２）。さらに、ビデオエンコーダ２０は、エントロピー符号化された実際の量子化レベルを含むビットストリームを出力し得る（４６４）。
【０１７５】
[0143]図１０は、本開示の１つまたは複数の技法により、係数ブロックの係数を量子化する別の例示的な動作５００を示すフローチャートである。動作５００は、図９の動作４５０における技法と同様の技法を使用することができる。
【０１７６】
[0144]図１０の例に示されたように、量子化ユニット１０６は、コンテキストを初期化し得る（５０２）。前述のように、量子化ユニット１０６は、ＲＤコストを決定する際にコンテキストを使用し得る。加えて、量子化ユニット１０６は、現在の係数インジケータを初期化し得る（５０４）。いくつかの例では、量子化ユニット１０６は、係数ブロックの最後の係数（たとえば、右下の係数）を示すように現在の係数インジケータを初期化し得る。現在の係数インジケータは、係数ブロック内の係数を示す。本開示は、現在の係数インジケータによって示された係数を現在の係数と呼ぶ場合がある。
【０１７７】
[0145]次に、本開示の技法によれば、量子化ユニット１０６は、参照テーブルを使用して現在の係数用の量子化オフセットを決定し得る（５０６）。したがって、量子化ユニット１０６は、現在の係数の位置を使用して現在の係数用の量子化オフセットを参照し得る。いくつかの例では、参照テーブルは、係数ブロック内の位置ごとに量子化オフセットを含むことができる。そのような例では、係数ブロック内のそれぞれの位置について、それぞれの位置についての参照テーブル内の量子化オフセットは、他の係数ブロック内でそれぞれの位置にある係数がＬｅｖｅｌ、Ｌｅｖｅｌ−１、または０に量子化される周波数に少なくとも部分的に基づき、ここで、Ｌｅｖｅｌは係数用の初期量子化レベルである。
【０１７８】
[0146]いくつかの例では、量子化ユニット１０６は、それぞれの係数ごとに、
【数８】
2015516761.tif 000019
【０１７９】
を決定し、ここで、ｚはそれぞれの係数用の量子化レベルであり、Ｗはそれぞれの係数の初期値であり、ｆは係数用の量子化オフセットであり、Δは量子化ステップであり、
【数９】
2015516761.tif 000020
【０１８０】
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）はそれぞれの係数の初期値の符号を返す関数である。
【０１８１】
[0147]さらに、量子化ユニット１０６は、決定された量子化オフセットに少なくとも部分的に基づいて、現在の係数についての量子化レベル（Ｌｅｖｅｌ）を決定し得る（５０８）。量子化ユニット１０６は、上記の等式（１）を使用して現在の係数用の量子化レベルを決定し得る。
【０１８２】
[0148]次いで、量子化ユニット１０６は、係数ブロックのすべての係数を０に量子化するＲＤコストを更新し得る（５１０）。加えて、量子化ユニット１０６は、係数ブロックの各係数を符号化するＲＤコストを更新し得る（５１２）。さらに、量子化ユニット１０６は、係数ブロックの有意性マップを符号化するＲＤコストを更新し得る（５１４）。量子化ユニット１０６は、係数ブロックのすべての係数を０に量子化するＲＤコスト、係数ブロックの各係数を符号化するＲＤコスト、および係数ブロックの有意性マップを符号化するＲＤコストに少なくとも部分的に基づいて、現在のブロックの最終有意係数の最適値を決定し得る。
【０１８３】
[0149]次いで、量子化ユニット１０６は、係数ブロック内にいくつかの残りの係数が存在するかどうかを決定し得る（５１６）。係数ブロック内に１つまたは複数の残りの係数が存在するとの決定（５１６の「はい」）に応答して、量子化ユニット１０６は、現在の係数インジケータが逆対角走査順序に従って係数ブロック内の次の係数を示すように、現在の係数インジケータを更新し得る（５１８）。次いで、量子化ユニット１０６は、再び参照テーブルを使用して、新しい現在の係数用の量子化オフセットを決定し得る（５０６）。このようにして、量子化ユニット１６０は、逆対角走査順序で係数用の量子化レベルを決定し得る。さらに、このようにして、量子化ユニット１０６は、係数ブロック内のそれぞれの残りの係数について、参照テーブルを使用してそれぞれの残りの係数についての量子化レベルを決定し、それぞれの残りの係数についての量子化レベルに少なくとも部分的に基づいて、それぞれの残りの係数についての量子化レベルを決定することができる。
【０１８４】
[0150]一方、係数ブロック内に残りの係数がこれ以上存在しないとの決定（５１６の「いいえ」）に応答して、量子化ユニット１０６は、現在のブロックがコーディングされていない場合、ＲＤコストに等しくなるように最良コード値を初期化し得る（５２０）。加えて、量子化ユニット１０６は、現在の係数インジケータを初期化することができる（５２２）。いくつかの例では、量子化ユニット１０６は、係数ブロックの最後の係数（たとえば、右下の係数）を示すように現在の係数インジケータを初期化し得る。現在の係数インジケータは、係数ブロック内の係数を示す。本開示は、現在の係数インジケータによって示された係数を現在の係数と呼ぶ場合がある。
【０１８５】
[0151]次に、量子化ユニット１０６は、現在の係数が１よりも大きい量子化レベルを有するかどうかを決定し得る（５２４）。現在の係数が１よりも大きい量子化レベルを有するとの決定（５２４の「はい」）に応答して、量子化ユニット１０６は、動作５００を終了し得る。一方、現在の係数が１よりも大きい量子化レベルを有していないとの決定（５２４の「いいえ」）に応答して、量子化ユニット１０６は、現在の係数が最終有意係数である場合もたらされるはずの合計ブロックＲＤコストを計算し得る（５２６）。
【０１８６】
[0152]さらに、量子化ユニット１０６は、計算された合計ブロックＲＤコストが最良コスト値よりも小さいかどうかを決定し得る（５２８）。計算された合計ブロックＲＤコストが最良コスト値よりも小さいとの決定（５２８の「はい」）に応答して、量子化ユニット１０６は、最良の最終位置インジケータを現在の位置に設定し、最良コスト値を計算された合計ブロックＲＤコストに設定し得る（５３０）。現在の位置は、係数ブロック内の現在の係数の位置である。
【０１８７】
[0153]最良の最終位置インジケータと最良コスト値とを設定した後、または計算された合計ブロックＲＤコストが最良コスト値よりも小さいくないと決定した（５２８の「いいえ」）後、量子化ユニット１０６は、現在の係数インジケータが逆対角走査順序に従って係数ブロック内の次の係数を示すように、現在の係数インジケータを更新し得る（５３２）。次いで、量子化ユニット１０６は、現在の係数が１よりも大きい量子化レベルを有するかどうかを再び決定し得る（５２４）。このようにして、量子化ユニット１０６が量子化レベルが１よりも大きい係数に遭遇するまで、量子化ユニット１０６は、逆対角走査順序に従って係数ブロックの係数を走査し得る。さらに、このようにして、１つまたは複数の係数用の量子化レベルに関連付けられたコストは、最終有意係数として１つまたは複数の係数のうちの各々を選択することに関連付けられたレートひずみコストを含む。
【０１８８】
[0154]こうして、図１０の動作は、以下の簡略化されたＲＤＯＱアルゴリズムを実施することができる。
【０１８９】
１．コンテキストを初期化する：Ｃ１＝１、Ｃ２＝０。
【０１９０】
２．量子化オフセットテーブルを参照し、逆対角走査順序で量子化テーブルからのオフセットを用いて係数を量子化する。
【０１９１】
３．ステップ５における最終有意係数の決定のためのコスト計算。
【０１９２】
１）（コーディングされていないブロックの場合）０に量子化するコスト。
【０１９３】
２）各係数を符号化するコスト。
【０１９４】
３）有意性マップを符号化するコスト。
【０１９５】
４．次の係数を処理し、ステップ２に進む。
【０１９６】
５．最適な最終有意係数の決定。
【０１９７】
１）現在のブロックがコーディングされていない場合、ＲＤコストになるようにｄ６４ＢｅｓｔＣｏｓｔを初期化する。
【０１９８】
２）現在の係数が最終有意係数である場合、逆対角走査で、合計ブロックコストｔｏｔａｌＣｏｓｔを計算する。
【０１９９】
３）ｔｏｔａｌＣｏｓｔ＜ｄ６４ＢｅｓｔＣｏｓｔの場合、新しい最良の最終位置（ｉＢｅｓｔＬａｓｔＩｄｘＰ１）は現在位置であり、ｄ６４ＢｅｓｔＣｏｓｔ＝ｔｏｔａｌＣｏｓｔ。
【０２００】
４）ＬｅｖｅｌｏｆＣｕｒＣｏｅｆｆ＞１まで反復する。
【０２０１】
[0155]下記の表１０〜表１３は、ＲＤＯＱがオンであるビデオエンコーダのパフォーマンスと比較して、スキップされたレベル決定（すなわち、ＲＤＯＱの第３ステップ）と最適な最終有意係数とともに、１／２である量子化オフセットを有する、図９および図１０の動作の例示的なパフォーマンスを示す。図９および図１０の簡略化されたＲＤＯＱアルゴリズムとオリジナルのＲＤＯＱアルゴリズムとを比較すると、ＲＤの最適レベルの選択は、ここで、オフセットによる量子化と交換される。これにより、ＲＤのパフォーマンス低下が小さくなり、ＲＤＯＱの複雑さが低減され得る。たとえば、ビデオエンコーダ２０が１／２の量子化オフセットを選択し、レベル決定（すなわち、ＲＤＯＱの第３ステップ）が省略された場合、ＲＤＯＱと比較された図９および図１０の技法のパフォーマンスは、表１０〜表１３に示されたように、１％から３％のＲＤパフォーマンス低下を示す。
【表１０】
2015516761.tif 000021
【表１１】
2015516761.tif 000022
【表１２】
2015516761.tif 000023
【表１３】
2015516761.tif 000024
【０２０２】
[0156]下記の表１４〜表１７は、スキップされたレベル決定と最適な最終有意係数とを伴い、イントラの場合１／３、インターの場合１／６である量子化オフセットを有する、図９および図１０の動作の例示的なパフォーマンスを示し、ここで、アンカーはＲＤＯＱオンを有する。すなわち、量子化オフセットがイントラモードの場合１／３、インターモードの場合１／６であるように選択された場合、表１４〜表１７は、ＲＤパフォーマンス低下が１．９％から３．６％であることを示す。
【表１４】
2015516761.tif 000025
【表１５】
2015516761.tif 000026
【表１６】
2015516761.tif 000027
【表１７】
2015516761.tif 000028
【０２０３】
[0157]下記の表１８〜表２１は、スキップされたレベル決定と最適な最終有意係数とを伴い、イントラの場合１／２、インターの場合１／６である量子化オフセットをもつ図９および図１０の動作の例示的なパフォーマンスを示し、ここで、アンカーはＲＤＯＱオンを有する。すなわち、量子化オフセットがイントラモードの場合１／２、インターモードの場合１／６であるように選択された場合、ＲＤパフォーマンス低下は、１％から２．５％であり得る。
【表１８】
2015516761.tif 000029
【表１９】
2015516761.tif 000030
【表２０】
2015516761.tif 000031
【表２１】
2015516761.tif 000032
【０２０４】
[0158]図１１は、本開示の１つまたは複数の技法による、例示的な符号化動作６５０を示すフローチャートである。図１１は、主にＲＤＯＱに関与するモジュールを示す目的用である。したがって、いくつかのプロセスは図１１の例から省略され、「中間処理」および「他の処理」などのブロックとして簡略化される。いくつかのビデオエンコーダは、ＴＵごとに、ＣＵ／ＰＵ分割、モード決定、インター／イントラ予測などのいくつかの中間処理を実行した後、各コンテキストモデルのエントロピーを計算することによって、ビット推定を実行し得る。次いで、従来のビデオエンコーダは、推定されたビットを使用してＲＤＯＱを実施し得る。したがって、そのようなビデオエンコーダは、ＴＵごとにビット推定を実行し、ＲＤＯＱの間レートのコスト（λ・Ｒ）は常に計算される必要があり得る。
【０２０５】
[0159]対照的に、ビデオエンコーダ２０は、図１１の動作６５０を実行するとき、ピクチャの符号化の最初に一度だけビット推定を実行し得る。次いで、ビデオエンコーダ２０は、コンテキストモデルの各々について（λ・Ｒについての）乗算テーブルを生成し得る。後で、ビデオエンコーダ２０がＲＤＯＱアルゴリズムを実施するとき、ビデオエンコーダ２０は、乗算テーブル内の値を参照してＲＤコストを計算し得る。
【０２０６】
[0160]図１１の例では、ビデオエンコーダ２０は、現在のフレームが最後のフレームであるかどうかを決定し得る（６５２）。現在のフレームが最後のフレームではないとの決定（６５２の「いいえ」）に応答して、ビデオエンコーダ２０は、ビット推定動作を実行し得る（６５４）。ビデオエンコーダ２０がビット推定動作を実行するとき、ビデオエンコーダ２０は、前のフレームで使用されたコンテキストモデルのエントロピーに少なくとも部分的に基づいて、現在のフレームで使用される各コンテキストモデルのエントロピーを決定し得る。現在のフレームで使用されるそれぞれのコンテキストモデルについて、ビデオエンコーダ２０は、それぞれのコンテキストモデルのエントロピーを使用して、適用可能な量子化レベル、有意性マップフラグ、最終有意係数（ＬＳＣ）の位置ＸおよびＬＳＣの位置Ｙのそれぞれについて、Ｒlevelの値と、Ｒsig_mapの値と、ＲpositionXの値と、ＲpositionYの値とをそれぞれ決定し得る。上述されたように、Ｒlevelは、量子化レベルを符号化するために推定されたビットの数である。Ｒsig_mapは、係数の有意性マップを符号化するために推定されたビットの数である。ＲpositionXおよびＲpositionYは、最終有意係数の位置を符号化するために推定されたビットの数である。
【０２０７】
[0161]ビット推定動作を実行した後、ビデオエンコーダ２０は、乗算テーブルを生成し得る（６５６）。乗算テーブルは、コンテキストと量子化レベルの値との各組合せに対し、λ・Ｒlevelの値を指定し得る。加えて、乗算テーブルは、コンテキストと有意性マップフラグの値との各組合せに対し、λ・Ｒsig_mapの値を指定し得る。乗算テーブルはまた、コンテキストとＬＳＣのＸ座標との各組合せに対し、λ・ＲpositionXの値を指定し得る。乗算テーブルはまた、コンテキストとＬＳＣのＹ座標との各組合せに対し、λ・ＲpositionYの値を指定し得る。
【０２０８】
[0162]乗算テーブルの生成に続いて、ビデオエンコーダ２０は中間処理を実行し得る（６５８）。中間処理は、現在のフレームをＣＵに区分化することと、ＣＵをＰＵおよびＴＵに区分化することと、ＰＵについてインター予測モードまたはイントラ予測モードを選択することなどを含み得る。
【０２０９】
[0163]次いで、ビデオエンコーダ２０は、現在のフレームのあらゆるＴＵが処理されたかどうかを決定し得る（６６０）。現在のフレームのあらゆるＴＵが処理されていないとの決定（６６０の「いいえ」）に応答して、ビデオエンコーダ２０は、現在のＴＵについてＴＵ処理を実行し得る（６６２）。ビデオエンコーダ２０が現在のＴＵについてＴＵ処理を実行するとき、ビデオエンコーダ２０は、ＴＵの残差サンプルブロックに１つまたは複数の変換を適用し得る。
【０２１０】
[0164]次いで、ビデオエンコーダ２０は、現在のＴＵの係数ブロックに対してＲＤＯＱを実施し得る（６６４）。ビデオエンコーダ２０が現在のＴＵの係数ブロックに対してＲＤＯＱを実施するとき、ビデオエンコーダ２０は、係数ブロックの係数ごとに最適な量子化値を決定し得る。特定の係数用の最適な量子化値を決定するとき、ビデオエンコーダ２０は、乗算テーブルを使用して、現在の量子化レベルのコンテキストおよび特定の係数についての量子化レベルについて、λ・Ｒlevelの値を参照し得る。さらに、特定の係数についての最適な量子化値を決定するとき、ビデオエンコーダ２０は、乗算テーブルを使用して、当該特定の係数についての有意性マップフラグの値および現在の有意性マップフラグコンテキストについてのλ・Ｒsig_mapの値を調べる。加えて、最適な最終有意係数を決定するとき、ビデオエンコーダ２０は、乗算テーブルを使用して、ＬＳＣの現在のＬＳＣのｘ座標コンテキストおよびＬＳＣのｘ座標について、λ・ＲpositionXの値を調べる。最適な最終有意係数を決定するとき、ビデオエンコーダ２０は、乗算テーブルを使用して、ＬＳＣの現在のＬＳＣのｙ座標コンテキストおよびＬＳＣのｙ座標について、λ・ＲpositionYの値を調べる。図１１の例の中の破線矢印は、ＲＤＯＱの間の乗算テーブルの使用を示す。ダブルポイント乗算を実行してλ・Ｒlevelの値と、λ・Ｒsig_mapの値と、λ・ＲpositionXの値と、λ・ＲpositionYの値とを決定する代わりに、ＲＤＯＱを実施するときλ・Ｒlevelの値と、λ・Ｒsig_mapの値と、λ・ＲpositionXの値と、λ・ＲpositionYの値とを調べることによって、ＲＤＯＱを実施する計算時間が減少され得る。
【０２１１】
[0165]現在のＴＵの係数ブロックに対してＲＤＯＱを実施した後、ビデオエンコーダ２０は、任意の残りのＴＵ処理を実行し得る（６６６）。残りのＴＵ処理は、現在のＴＵの係数の量子化値を示すシンタックス要素をＣＡＢＡＣ符号化することを含む場合がある。次いで、ビデオエンコーダ２０は、現在のフレームのあらゆるＴＵが処理されたかどうかを再び決定し得る（６６０）。現在のフレームについてあらゆるＴＵが処理されたとの決定（６６０の「はい」）に応答して、ビデオエンコーダ２０は、現在のフレームについて他の処理を実行し得る（６６８）。現在のフレームについての他の処理には、ループフィルタリング、ビットストリーム生成、および次のフレームの予測用の復元フレームを生成することなどが含まれ得る。現在のフレームについての他の処理を実行した後、ビデオエンコーダ２０は、現在のフレームが最後のフレームであるかどうかを再び決定し得る（６５２）。現在のフレームが最後のフレームではない場合（６５２の「いいえ」）、ビデオエンコーダ２０は、次のフレームに関してアクション６５４〜６６８を実行し得る。そうではなく、現在のフレームが最後のフレームであるとの決定（６５２の「はい」）に応答して、ビデオエンコーダ２０は、動作６５０を終了し得る。
【０２１２】
[0166]このようにして、量子化ユニット１０６は、前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、コンテキストモデル用のレート値を決定し得る。さらに、量子化ユニット１６０は、コンテキストモデルの各々について、当該コンテキストモデルについてのレート値によって乗算されたλの値を示すテーブルを生成し、ここで、λは固定値である。係数を該係数についての初期量子化レベルになるように量子化することのレートひずみコスト、該係数を初期量子化レベルマイナス１になるように量子化することのレートひずみコスト、および該係数をゼロになるように量子化することのレートひずみコストを決定することは、テーブル内の値に少なくとも部分的に基づいて、係数を、該係数についての初期量子化レベル、初期量子化レベルマイナス１、およびゼロになるように量子化することのレートひずみコストを決定することを備える場合がある。
【０２１３】
[0167]図１２は、本開示の技法による、例示的なコーディング動作７００を示すフローチャートである。ビデオエンコーダ２０は、オールイントラ（ＡＩ）モード、ランダムアクセス（ＲＡ）モード、低遅延Ｂ（ＬＢ）モード、および低遅延Ｐ（ＬＰ）モードなどの、様々なコーディングモードで動作し得る。オールイントラ構成（すなわち、イントラのみの構成）では、ビデオシーケンス内の各ピクチャは、瞬時復号リフレッシュ（ＩＤＲ）ピクチャとして符号化される。ＩＤＲピクチャはＩスライスのみを含んでいる。
【０２１４】
[0168]ＲＡ構成では、イントラピクチャは、周期的にビットストリームに挿入される。さらに、ＲＡ構成では、ビデオシーケンスの第１のイントラピクチャはＩＤＲピクチャとして符号化され、他のイントラピクチャは非ＩＤＲピクチャとして符号化される。ＲＡ構成では、表示順序で連続するイントラピクチャの間に位置するピクチャは、Ｂピクチャとして符号化される。生成されたＰおよびＢ（ＧＰＢ）のピクチャは、最も低い時間レイヤとして使用され、インター予測用のＩピクチャまたはＧＰＢピクチャと呼ぶことができる。２番目および３番目の時間レイヤは、参照Ｂピクチャから構成され得、最も高い時間レイヤは、非参照Ｂピクチャのみを含んでいる。各インターコーディングされたピクチャのＱＰは、時間レイヤに応じてイントラコーディングされたピクチャのＱＰにオフセットを加算することによって導出され得る。参照ピクチャリストの組合せは、参照ピクチャインデックスの管理およびエントロピーコーディングに使用され得る。
【０２１５】
[0169]低遅延構成（すなわち、低遅延Ｂ構成および低遅延Ｐ構成）では、ビデオシーケンス内の最初のピクチャのみがＩＤＲピクチャとして符号化される。低遅延Ｂ構成では、他の連続するピクチャは、Ｂピクチャとして符号化される。低遅延Ｐ構成では、他の連続するピクチャは、Ｐピクチャとして符号化される。ＢピクチャまたはＰピクチャ（すなわち、生成されたＰまたはＢ（ＧＰＢ）のピクチャ）は、参照ピクチャのみを使用し、参照ピクチャのピクチャ順序カウント（ＰＯＣ）値の各々は、現在のピクチャのＰＯＣよりも小さい（すなわち、ＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１の中のすべての参照ピクチャは、現在のピクチャに対して表示順序で時間的に前である）。低遅延Ｂ構成および低遅延Ｐ構成では、ＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１の内容は同一である。
【０２１６】
[0170]図１２の例では、（ビデオエンコーダ２０またはビデオデコーダ３０などの）ビデオコーダは、ビデオエンコーダがオールイントラ構成で動作しているか、ランダムアクセス構成で動作しているか、または低遅延構成で動作しているかに少なくとも部分的に基づいて、量子化オフセットを決定し得る（７０２）。さらに、ビデオコーダは、量子化オフセットに少なくとも部分的に基づいて、係数についてのそれぞれの量子化レベルを決定し得る（７０４）。
【０２１７】
[0171]いくつかの例では、ビデオエンコーダがオールイントラ構成またはランダムアクセス構成で動作しているとき、量子化オフセットは１／２に等しい。そのような例では、ビデオエンコーダが低遅延構成で動作しており、係数がイントラスライスに関連付けられるとき、量子化オフセットは１／２に等しい。さらに、そのような例では、ビデオエンコーダが低遅延構成で動作しており、係数がインタースライスに関連付けられるとき、量子化オフセットは１／６に等しい。
【０２１８】
[0172]下記の表２２は、オールイントラ（ＡＩ）、ランダムアクセス（ＲＡ）、低遅延Ｂ（ＬＢ）、および低遅延Ｐ（ＬＰ）などのＨＥＶＣの様々な構成で、様々なオフセットおよびＲＤＯＱオフについての例示的なパフォーマンス比較を示す。すなわち、下記の表２２は、様々な量子化オフセットおよびＲＤＯＱオフのパフォーマンスを比較する。表２２から、量子化オフセットを生成する別の方法が取得される。ＡＩ構成およびＲＡ構成の場合、最良のパフォーマンスを与えることができるものとして、量子化オフセット１／２が使用される。ＬＢ構成およびＬＰ構成の場合、最良のパフォーマンスを与えるので、イントラスライスは量子化オフセット１／２を使用すべきであり、インタースライスは量子化オフセット１／６を使用すべきである。表１０〜表２２は、適切な量子化オフセットを選択することによって、ＲＤパフォーマンスは複雑さが低減されたＲＤＯＱのパフォーマンスを近似できることを示す。
【表２２】
2015516761.tif 000033
【０２１９】
[0173]１つまたは複数の例では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装され得る。ソフトウェアに実装される場合、機能は、１つもしくは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、データ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含む場合がある。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応する場合がある。データ記憶媒体は、本開示に記載された技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つもしくは複数のコンピュータまたは１つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含む場合がある。
【０２２０】
[0174]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２２１】
[0175]命令は、１つもしくは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載された技法の実施に適した任意の他の構造のいずれかを指す場合がある。加えて、いくつかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のハードウェアおよび／もしくはソフトウェアモジュール内に提供され得、または複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素に完全に実装され得る。
【０２２２】
[0176]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置に実装され得る。開示された技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示に記載されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現される必要があるとは限らない。むしろ、上述されたように、様々なユニットが、適切なソフトウェアおよび／またはファームウェアとともに、上述された１つまたは複数のプロセッサを含む、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって提供され得る。
【０２２３】
[0177]様々な例が記載された。これらおよび他の例は、以下の特許請求の範囲内に入る。
【図１】
2015516761.tif 000038
【図２】
2015516761.tif 000039
【図３】
2015516761.tif 000040
【図４】
2015516761.tif 000041
【図５】
2015516761.tif 000042
【図６】
2015516761.tif 000043
【図７】
2015516761.tif 000044
【図８】
2015516761.tif 000045
【図９】
2015516761.tif 000046
【図１０】
2015516761.tif 000047
【図１１】
2015516761.tif 000048
【図１２】
2015516761.tif 000049
【手続補正書】
【提出日】平成26年12月11日(2014.12.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記決定されたレートひずみコストに少なくとも部分的に基づいて、前記係数について実際の量子化レベルを決定することと、
を備える、方法。
【請求項２】
前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定することをさらに備える、請求項１に記載の方法。
【請求項３】
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記係数を前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト決定することと、
をさらに備える、請求項１に記載の方法。
【請求項４】
前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、請求項１に記載の方法。
【請求項５】
最終有意係数を決定することをさらに備え、前記最終有意係数は逆走査順序で前記係数ブロックの前記第１の非ゼロ係数である、請求項１に記載の方法。
【請求項６】
前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
をさらに備える、請求項１に記載の方法。
【請求項７】
前記実際の量子化レベルを決定することは、最も低いレートひずみコストをもたらす実際の量子化レベルを選択することを備える、請求項１に記載の方法。
【請求項８】
前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成することをさらに備える、請求項７に記載の方法。
【請求項９】
前記係数についての前記初期量子化レベルを決定することは、
【数１】
2015516761.tif 000050
を計算することを備え、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは前記量子化ステップの値であり、
【数２】
2015516761.tif 000051
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）は前記係数の前記初期値の符号を返す関数である、請求項１に記載の方法。
【請求項１０】
前記方法は、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
をさらに備え、
前記レートひずみコストを決定することは、前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１に量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することを備える、
請求項１に記載の方法。
【請求項１１】
ビデオデータを符号化するコンピューティングデバイスであって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記決定されたレートひずみコストに基づいて、前記係数について実際の量子化レベルを決定することと、
を行うように構成された１つまたは複数のプロセッサを備える、コンピューティングデバイス。
【請求項１２】
前記１つまたは複数のプロセッサは、前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定するようにさらに構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記１つまたは複数のプロセッサは、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１４】
前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、請求項１１に記載のコンピューティングデバイス。
【請求項１５】
前記１つまたは複数のプロセッサは、最終有意係数を決定するようにさらに構成され、前記最終有意係数は逆走査順序で前記第１の非ゼロ係数である、請求項１１に記載のコンピューティングデバイス。
【請求項１６】
前記１つまたは複数のプロセッサは、
前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
を行うようにさらに構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１７】
前記１つまたは複数のプロセッサは、少なくとも部分的に最も低いレートひずみコストをもたらす実際の量子化レベルを選択することによって、前記実際の量子化レベルを決定するように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項１８】
前記１つまたは複数のプロセッサは、前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成するようにさらに構成された、請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記１つまたは複数のプロセッサは、
【数３】
2015516761.tif 000052
を計算することによって前記係数についての前記初期量子化レベルを決定するようにさらに構成され、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは前記量子化ステップの値であり、
【数４】
2015516761.tif 000053
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）が前記係数の前記初期値の符号を返す関数である、請求項１１に記載のコンピューティングデバイス。
【請求項２０】
前記１つまたは複数のプロセッサは、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、請求項１１に記載のコンピューティングデバイス。
【請求項２１】
係数ブロックの係数用の初期量子化レベルを決定するための手段と、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記決定されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定するための手段と、
を備える、コンピューティングデバイス。
【請求項２２】
コンピューティングデバイスの１つまたは複数のプロセッサによって実行されるとき、
係数ブロックの係数についての初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することと、
前記決定されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定することと、
を行うように前記コンピューティングデバイスを構成する命令を記憶する、コンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２２３
【補正方法】変更
【補正の内容】
【０２２３】
[0177]様々な例が記載された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］  ビデオデータを符号化する方法であって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記計算されたレートひずみコストに少なくとも部分的に基づいて、前記係数について実際の量子化レベルを決定することと、
を備える、方法。
［２］  前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定することをさらに備える、［１］に記載の方法。
［３］  前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記係数を前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト決定することと、
をさらに備える、［１］に記載の方法。
［４］  前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、［１］に記載の方法。
［５］  最終有意係数を決定することをさらに備え、前記最終有意係数は逆走査順序で前記係数ブロックの前記第１の非ゼロ係数である、［１］に記載の方法。
［６］  前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
をさらに備える、［１］に記載の方法。
［７］  前記実際の量子化レベルを決定することは、最も低いレートひずみコストをもたらす実際の量子化レベルを選択することを備える、［１］に記載の方法。
［８］  前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成することをさらに備える、［７］に記載の方法。
［９］  前記係数についての前記初期量子化レベルを決定することは、
【数１０】
2015516761.tif 000054
を計算することを備え、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは量子化ステップであり、
【数１１】
2015516761.tif 000055
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）は前記係数の前記初期値の符号を返す関数である、［１］に記載の方法。
［１０］  前記方法は、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
をさらに備え、
前記レートひずみコストを決定することは、前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１に量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することを備える、
［１］に記載の方法。
［１１］  ビデオデータを符号化するコンピューティングデバイスであって、
係数ブロックの係数について初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
前記計算されたレートひずみコストに基づいて、前記係数について実際の量子化レベルを決定することと、
を行うように構成された１つまたは複数のプロセッサを備える、コンピューティングデバイス。
［１２］  前記１つまたは複数のプロセッサは、前記レートひずみコストを決定せずに、前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さくないとの決定に応答して、前記係数についての前記実際の量子化レベルが前記係数についての前記初期量子化レベルであると決定するようにさらに構成された、［１１］に記載のコンピューティングデバイス。
［１３］  前記１つまたは複数のプロセッサは、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記初期量子化レベルが３よりも小さいとの決定に応答して、前記係数を前記係数についての前記初期量子化レベルになるように量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
前記初期量子化レベルが３以上であるとの決定に応答して、前記初期量子化レベルに量子化する前記レートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、［１１］に記載のコンピューティングデバイス。
［１４］  前記係数は、前記係数ブロック内の逆走査順序で第１の非ゼロ係数の後に存在する、［１１］に記載のコンピューティングデバイス。
［１５］  前記１つまたは複数のプロセッサは、最終有意係数を決定するようにさらに構成され、前記最終有意係数は逆走査順序で前記第１の非ゼロ係数である、［１１］に記載のコンピューティングデバイス。
［１６］  前記１つまたは複数のプロセッサは、
前記実際の量子化レベルをエントロピー符号化することと、
前記エントロピー符号化された実際の量子化レベルを含むビットストリームを出力することと、
を行うようにさらに構成された、［１１］に記載のコンピューティングデバイス。
［１７］  前記１つまたは複数のプロセッサは、少なくとも部分的に最も低いレートひずみコストをもたらす実際の量子化レベルを選択することによって、前記実際の量子化レベルを決定するように構成された、［１１］に記載のコンピューティングデバイス。
［１８］  前記１つまたは複数のプロセッサは、前記実際の量子化レベルを前記量子化ステップサイズの値と乗算することによって、前記係数の復元された値を生成するようにさらに構成された、［１７］に記載のコンピューティングデバイス。
［１９］  前記１つまたは複数のプロセッサは、
【数１２】
2015516761.tif 000056
を計算することによって前記係数についての前記初期量子化レベルを決定するようにさらに構成され、ここで、ｚは前記係数についての前記初期量子化レベルであり、Ｗは前記係数の初期値であり、ｆは前記係数についての量子化オフセットであり、Δは量子化ステップであり、
【数１３】
2015516761.tif 000057
は、マイナス無限大に向かって最も近い整数への丸めを表し、ｓｉｇｎ（）が前記係数の前記初期値の符号を返す関数である、［１１］に記載のコンピューティングデバイス。
［２０］  前記１つまたは複数のプロセッサは、
前のフレームのコンテキストモデルのエントロピーに少なくとも部分的に基づいて、前記コンテキストモデルについてのレート値を決定することと、
前記コンテキストモデルの各々について、前記コンテキストモデルについての前記レート値によって乗算されたλの値を示すテーブルを生成することと、ここで、λは固定値であり、
前記テーブル内の前記値に少なくとも部分的に基づいて、前記係数を前記係数についての前記初期量子化レベルに量子化する前記レートひずみコスト、前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコスト、および前記係数をゼロになるように量子化する前記レートひずみコストを決定することと、
を行うように構成された、［１１］に記載のコンピューティングデバイス。
［２１］  係数ブロックの係数用の初期量子化レベルを決定するための手段と、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化する前記レートひずみコストを決定するための手段と、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、前記計算されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定するための手段と、
を備える、コンピューティングデバイス。
［２２］  コンピューティングデバイスの１つまたは複数のプロセッサによって実行されるとき、
係数ブロックの係数についての初期量子化レベルを決定することと、
前記係数が前記初期量子化レベルと量子化ステップサイズの値との積よりも小さいかどうかを決定することと、
前記係数が前記初期量子化レベルと前記量子化ステップサイズの値との積よりも小さいとの決定に応答して、
前記係数を前記初期量子化レベルになるように量子化するレートひずみコスト、および前記係数を前記初期量子化レベルマイナス１になるように量子化するレートひずみコストを決定することと、
前記計算されたレートひずみコストに基づいて、前記係数についての実際の量子化レベルを決定することと、
を行うように前記コンピューティングデバイスを構成する命令を記憶する、コンピュータ可読記憶媒体。
【国際調査報告】
2015516761.tif 000058
2015516761.tif 000059
2015516761.tif 000060