(57)【特許請求の範囲】
【請求項１】
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングする方法であって、前記方法は、
可能な走査順序のセットから前記ブロックのための最確走査順序を選択することと、ここにおいて、前記選択することは、前記可能な走査順序のセット内の前記最確走査順序に前記ブロックに関連する予測モードおよび前記ブロックに関連するサイズをマッピングすることを備える、およびここにおいて、前記可能な走査順序のセットのそれぞれは各決まった走査順序を備える、
前記ブロックに関連する走査順序が前記最確走査順序であるかどうかの指示をコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序であることに応答して、前記最確走査順序を使用して前記ブロックをコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記最確走査順序とは異なる、異なる走査順序を使用して前記ブロックをコーディングすることと、
前記ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報をコーディングした後に、前記ブロック内の各有効係数の絶対値(coeff_abs_level_minus1)および符号(coeff_sign_flag)をコーディングすることと、
を備える、方法。
【請求項２】
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングすることが、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、請求項１に記載の方法。
【請求項３】
前記異なる走査順序を使用して前記ブロックをコーディングすることが、前記ブロックに関連する前記走査順序の追加の指示を受信することなしに前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用することを備える、請求項１に記載の方法。
【請求項４】
前記異なる走査順序を使用して前記ブロックをコーディングすることが、前記ブロックに関連する前記走査順序の追加の指示をコーディングすることを備える、請求項１に記載の方法。
【請求項５】
前記ブロックに関連する前記走査順序の前記追加の指示をコーディングすることが、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する前記予測モードと、前記ブロックに関連する前記サイズとのうちの１つを含む、請求項４に記載の方法。
【請求項６】
前記ブロックのための前記最確走査順序を判断することが、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定することを備える、請求項１に記載の方法。
【請求項７】
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、請求項１に記載の方法。
【請求項８】
前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングすることをさらに備える、請求項１に記載の方法。
【請求項９】
前記ブロック内の非０係数の位置を識別する情報をコーディングすることをさらに備える、請求項１に記載の方法。
【請求項１０】
コーディングすることが、符号化することを備える、請求項１に記載の方法。
【請求項１１】
コーディングすることが、復号することを備える、請求項１に記載の方法。
【請求項１２】
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするための装置であって、前記装置は、
前記ビデオデータを格納するように構成されたメモリと、
可能な走査順序のセットから前記ブロックのための最確走査順序を選択することと、ここにおいて、前記最確走査順序を選択するために、ビデオコーダは、前記可能な走査順序のセット内の前記最確走査順序に前記ブロックに関連する予測モードおよび前記ブロックに関連するサイズをマッピングするように構成される、およびここにおいて、前記可能な走査順序のセットのそれぞれは各決まった走査順序を備える、
前記ブロックに関連する走査順序が前記最確走査順序であるかどうかの指示をコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序であることに応答して、前記最確走査順序を使用して前記ブロックをコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記最確走査順序とは異なる、異なる走査順序を使用して前記ブロックをコーディングすることと
前記ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報をコーディングした後に、前記ブロック内の各有効係数の絶対値(coeff_abs_level_minus1)および符号(coeff_sign_flag)をコーディングすることと、
を行うように構成されたビデオコーダを備える、装置。
【請求項１３】
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングするために、前記ビデオコーダは、前記ビデオコーダが少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するように構成され、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、請求項１２に記載の装置。
【請求項１４】
前記ビデオコーダが、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記ブロックに関連する前記走査順序の追加の指示を受信することなしに前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用する
ようにさらに構成された、請求項１２に記載の装置。
【請求項１５】
前記ビデオコーダが、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記ブロックに関連する前記走査順序の追加の指示をコーディングする
ようにさらに構成された、請求項１２に記載の装置。
【請求項１６】
前記ブロックに関連する前記走査順序の前記追加の指示をコーディングするために、前記ビデオコーダは、前記ビデオコーダが少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するように構成され、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する前記予測モードと、前記ブロックに関連する前記サイズとのうちの１つを含む、請求項１５に記載の装置。
【請求項１７】
前記ブロックのための前記最確走査順序を判断するために、前記ビデオコーダが、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定するように構成された、請求項１２に記載の装置。
【請求項１８】
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、請求項１２に記載の装置。
【請求項１９】
前記ビデオコーダが、前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングするようにさらに構成された、請求項１２に記載の装置。
【請求項２０】
前記ビデオコーダが、前記ブロック内の非０係数の位置を識別する情報をコーディングするようにさらに構成された、請求項１２に記載の装置。
【請求項２１】
前記装置が、
集積回路と、
マイクロプロセッサと、
前記ビデオコーダを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、請求項１２に記載の装置。
【請求項２２】
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするためのデバイスであって、前記デバイスは、
可能な走査順序のセットから前記ブロックのための最確走査順序を選択するための手段と、ここにおいて、前記選択するための手段は、前記可能な走査順序のセット内の前記最確走査順序に前記ブロックに関連する予測モードおよび前記ブロックに関連するサイズをマッピングするための手段を備える、およびここにおいて、前記可能な走査順序のセットのそれぞれは各決まった走査順序を備える、
前記ブロックに関連する走査順序が前記最確走査順序であるかどうかの指示をコーディングするための手段と、
前記ブロックに関連する前記走査順序が前記最確走査順序であることに応答して、前記最確走査順序を使用して前記ブロックをコーディングするための手段と、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記最確走査順序とは異なる、異なる走査順序を使用して前記ブロックをコーディングするための手段と
前記ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報をコーディングした後に、前記ブロック内の各有効係数の絶対値(coeff_abs_level_minus1)および符号(coeff_sign_flag)をコーディングするための手段と、
を備える、デバイス。
【請求項２３】
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングするための前記手段が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するための手段を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、請求項２２に記載のデバイス。
【請求項２４】
前記異なる走査順序を使用して前記ブロックをコーディングするための前記手段が、前記ブロックに関連する前記走査順序の追加の指示を受信することなしに前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用するための手段を備える、請求項２２に記載のデバイス。
【請求項２５】
前記異なる走査順序を使用して前記ブロックをコーディングするための前記手段が、前記ブロックに関連する前記走査順序の追加の指示をコーディングするための手段を備える、請求項２２に記載のデバイス。
【請求項２６】
前記ブロックに関連する前記走査順序の前記追加の指示をコーディングする前記手段が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するための手段を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する前記予測モードと、前記ブロックに関連する前記サイズとのうちの１つを含む、請求項２５に記載のデバイス。
【請求項２７】
前記ブロックのための前記最確走査順序を判断するための前記手段が、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定するための手段を備える、請求項２２に記載のデバイス。
【請求項２８】
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、請求項２２に記載のデバイス。
【請求項２９】
前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングするための手段をさらに備える、請求項２２に記載のデバイス。
【請求項３０】
前記ブロック内の非０係数の位置を識別する情報をコーディングするための手段をさらに備える、請求項２２に記載のデバイス。
【請求項３１】
実行されたとき、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングすることを１つまたは複数のプロセッサに行わせる命令を備えるコンピュータ可読媒体であって、前記命令は、可能な走査順序のセットから前記ブロックのための最確走査順序を選択することと、ここにおいて、前記最確走査順序を選択するために、前記命令は、前記可能な走査順序のセット内の前記最確走査順序に前記ブロックに関連する予測モードおよび前記ブロックに関連するサイズをマッピングすることを前記プロセッサに行わせる、およびここにおいて、前記可能な走査順序のセットのそれぞれは各決まった走査順序を備える、
前記ブロックに関連する走査順序が前記最確走査順序であるかどうかの指示をコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序であることに応答して、前記最確走査順序を使用して前記ブロックをコーディングすることと、
前記ブロックに関連する前記走査順序が前記最確走査順序でないことに応答して、前記最確走査順序とは異なる、異なる走査順序を使用して前記ブロックをコーディングすることと
前記ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報をコーディングした後に、前記ブロック内の各有効係数の絶対値(coeff_abs_level_minus1)および符号(coeff_sign_flag)をコーディングすることと、
を前記１つまたは複数のプロセッサに行わせる、コンピュータ可読媒体。
【請求項３２】
実行されたとき、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することによって、前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングすることを前記１つまたは複数のプロセッサに行わせる命令をさらに備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する前記予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
実行されたとき、前記ブロックに関連する前記走査順序の追加の指示を受信することなしに前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用することを備える、前記異なる走査順序を使用して前記ブロックをコーディングすることを前記１つまたは複数のプロセッサに行わせる命令をさらに備える、請求項３１に記載のコンピュータ可読媒体。
【請求項３４】
実行されたとき、前記異なる走査順序を使用して前記ブロックをコーディングすることを前記１つまたは複数のプロセッサに行わせる命令をさらに備える、請求項３１に記載のコンピュータ可読媒体。
【請求項３５】
実行されたとき、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを前記１つまたは複数のプロセッサに行わせる命令をさらに備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する前記予測モードと、前記ブロックに関連する前記サイズとのうちの１つを含む、請求項３４に記載のコンピュータ可読媒体。
【請求項３６】
実行されたとき、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定することを前記１つまたは複数のプロセッサに行わせる命令をさらに備える、請求項３１に記載のコンピュータ可読媒体。
【請求項３７】
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、請求項３１に記載のコンピュータ可読媒体。
【請求項３８】
実行されたとき、前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングすることを前記１つまたは複数のプロセッサに行わせる命令をさらに備える、請求項３１に記載のコンピュータ可読媒体。
【請求項３９】
実行されたとき、前記ブロック内の非０係数の位置を識別する情報をコーディングすることを前記１つまたは複数のプロセッサに行わせる命令をさらに備える、請求項３１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１０年１２月２２日に出願された米国仮出願第６１／４２６，４３１号、２０１０年１２月２２日に出願された米国仮出願第６１／４２６，４２６号、および２０１１年１０月１４日に出願された米国仮出願第６１／５４７，５３０号の利益を主張する。
【０００２】
本開示は、ビデオコーディングに関し、より詳細には、ビデオブロックの係数に関係するシンタックス情報のコーディングに関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部）はビデオブロックに区分され得、これらのビデオブロックは、ツリーブロック、コーディングユニット（ＣＵ：coding unit）および／またはコーディングノードと呼ばれることがある。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
空間的または時間的予測の結果として、コーディングされるべきブロックのための予測ブロックがもたらされる。残差データは、コーディングされるべき元のブロックと、予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され得、結果として、その後量子化され得る残差変換係数がもたらされる。最初は２次元アレイに構成される量子化変換係数は、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
本開示は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報をコーディングするための技法を含む、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするための技法について説明する。本開示の技法は、特定のブロックのための最確走査順序を識別する情報を使用してブロックの走査順序情報をコーディングすることによって、ビデオデータのブロックをコーディングするために使用されるブロックの走査順序情報のコーディングの効率を改善し得る。言い換えれば、本技法は、ブロックの走査順序情報がコーディングされるとき、その情報の圧縮を改善し得る。
【０００７】
一例では、コーディング効率は、ビデオデータのブロックのための最確走査順序を判断することと、ブロックに関連する走査順序、すなわち、ブロックをコーディングするために使用される走査順序が最確走査順序であるかどうかの指示をコーディングすることとによって改善され得る。この例では、ブロックに関連する走査順序が最確走査順序である場合、ブロックについてさらなる走査順序情報はコーディングされなくてよい。しかしながら、ブロックに関連する走査順序が最確走査順序でない場合、本技法は、ブロックに関連する走査順序の指示をコーディングすることをさらに含み得る。定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用されることになるので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされない。その結果、ブロックについての走査順序情報は、他の技法を使用したときよりも、たとえば、ブロック全体の走査順序情報を常にコーディングしたときよりも少ない情報を使用してコーディングされ得る。
【０００８】
別の例として、コーディング効率は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することによって改善され得る。この場合も、定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用されることになるので、ブロックに関連する走査順序が最確走査順序であるかどうかの初期指示は、数多くの場合、ブロック全体の走査順序情報を示すことになり、さらなる走査順序情報をコーディングする必要はなくなる。さらに、ブロックに関連する走査順序が最確走査順序でない場合、ブロックを効率的にコーディングするためには、ブロックに関連する走査順序の指示をコーディングするのではなく、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することで十分であり得る。たとえば、係数をより効率的に走査し得る別の走査順序を使用するのではなく、係数をコーディングするためにジグザグ走査順序を使用することの悪影響を、上記で説明したブロックについての走査順序情報のコーディングの低減が上回り得る。
【０００９】
さらに別の例として、コーディング効率は、ブロックのための最確走査順序にジグザグ走査順序を指定することによって改善され得る。この例では、ジグザグ走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用され得るので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされないことがある。さらに、最確走査順序にジグザグ走査順序を指定することによって、コーディング効率は、上記で説明したように、ブロックのための実際の最確走査順序を判断することを回避することにより、改善され得る。
【００１０】
上記で説明した例の各々では、コーディング効率は、ブロックについての走査順序情報、すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とのうちの１つまたは複数をエントロピー符号化することによってさらに改善され得る。たとえば、走査順序情報は、コンテキスト適応型エントロピーコーディングプロセス、たとえば、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを実行することによってエントロピー符号化され得る。上記で説明した例では、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得、それにより、コンテキストモデル内に含まれる確率推定値は、他の技法を使用して判断された確率推定値よりも正確になり得る。その結果、ブロックの走査順序情報はより効率的にコーディングされ得る。たとえば、この情報は、他の技法を使用したときよりも、たとえば、この情報をコーディングするために他のあまり正確でない確率推定値を使用したときよりも少ないビットを使用してコーディングされ得る。
【００１１】
本開示の技法は、いくつかの例では、ＣＡＢＡＣ、確率間隔区分エントロピーコーディング（ＰＩＰＥ：probability interval partitioning entropy coding）、または別のコンテキスト適応型エントロピーコーディング方法を含む、任意のコンテキスト適応型エントロピーコーディング方法とともに使用され得る。ＣＡＢＡＣは、本開示においては、本開示で広く説明する技法に関する限定なしに、説明のために記載している。また、本技法は、たとえば、ビデオデータに加えて、一般に他のタイプのデータのコーディングに適用され得る。
【００１２】
したがって、本開示の技法は、ビデオデータの１つまたは複数のブロックについての走査順序情報をコーディングするとき、他の方法よりも効率的なコーディング方法を使用することを可能にし得る。このようにして、本開示の技法を使用すると、この情報を含むコード化ビットストリームについての相対的なビット節約があり得る。
【００１３】
一例では、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングする方法は、ブロックに関連する走査順序を識別する情報をコーディングすることであって、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを含む、コーディングすることを含む。
【００１４】
別の例では、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするための装置が、ブロックに関連する走査順序を識別する情報をコーディングするように構成されたビデオコーダを含み、ブロックに関連する走査順序を識別する情報をコーディングするために、ビデオコーダは、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを行うように構成される。
【００１５】
別の例では、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするためのデバイスは、ブロックに関連する走査順序を識別する情報をコーディングするための手段であって、ブロックのための最確走査順序を判断するための手段と、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングするための手段とを含む、コーディングするための手段を含む。
【００１６】
本開示において説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。ハードウェアで実装する場合、装置は、集積回路、プロセッサ、ディスクリート論理、またはそれらの任意の組合せとして実現され得る。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはデジタル信号プロセッサ（ＤＳＰ）など、１つまたは複数のプロセッサで実行され得る。本技法を実行するソフトウェアは、最初に有形コンピュータ可読媒体に記憶され、プロセッサにロードされて実行され得る。
【００１７】
したがって、本開示はまた、実行されたとき、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングすることをプロセッサに行わせる命令を備えるコンピュータ可読媒体を企図し、これらの命令は、ブロックに関連する走査順序を識別する情報をコーディングすることをプロセッサに行わせ、ブロックに関連する走査順序を識別する情報をコーディングすることをプロセッサに行わせる命令は、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとをプロセッサに行わせる命令を備える。
【００１８】
１つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１９】
【図１】本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための技法を実装し得るビデオ符号化および復号システムの一例を示すブロック図。
【図２】本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的に符号化するために最確走査順序を使用するための技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】本開示の技法に一致する、ビデオデータのブロックについての符号化された走査順序情報を効率的に復号するために最確走査順序を使用するための技法を実装し得るビデオデコーダの一例を示すブロック図。
【図４Ａ】ビデオデータのブロックの一例を示す概念図。
【図４Ｂ】対応する有効係数位置情報の一例を示す概念図。
【図４Ｃ】対応する最後有効係数位置情報の一例を示す概念図。
【図５Ａ】ジグザグ走査順序を使用して走査されるビデオデータのブロックの例を示す概念図。
【図５Ｂ】水平走査順序を使用して走査されるビデオデータのブロックの例を示す概念図。
【図５Ｃ】垂直走査順序を使用して走査されるビデオデータのブロックの例を示す概念図。
【図６Ａ】本開示の技法に一致する、様々なサイズを有するブロックビデオデータの例を示す概念図。
【図６Ｂ】本開示の技法に一致する、予測データを生成するために様々な予測モードが使用されるビデオデータのブロックの例を示す概念図。
【図７】本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための方法の一例を示すフローチャート。
【図８】本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的に符号化するために最確走査順序を使用するための方法の一例を示すフローチャート。
【図９】本開示の技法に一致する、ビデオデータのブロックについての符号化された走査順序情報を効率的に復号するために最確走査順序を使用するための方法の一例を示すフローチャート。
【発明を実施するための形態】
【００２０】
本開示は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報をコーディングするための技法を含む、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするための技法について説明する。本開示の技法は、特定のブロックのための最確走査順序を識別する情報を使用してブロックの走査順序情報をコーディングすることによって、ビデオデータのブロックをコーディングするために使用されるブロックの走査順序情報のコーディングの効率を改善し得る。言い換えれば、本技法は、ブロックの走査順序情報がコーディングされるとき、走査順序情報の圧縮を改善し得る。
【００２１】
本開示では、「コーディング」という用語は、エンコーダにおいて行われる符号化、またはデコーダにおいて行われる復号を指す。同様に、コーダという用語は、一般に、エンコーダ、デコーダ、または複合エンコーダ／デコーダ（コーデック）を指す。コーダ、エンコーダ、デコーダおよびコーデックという用語はすべて、本開示に一致する、ビデオデータのコーディング（符号化および／または復号）のために設計された特定の機械を指す。
【００２２】
概して、これらの技法の開発において実行された経験的テストにより、ビデオデータのブロックに関連する予測モードおよびサイズと、そのブロックに関連する走査順序、すなわち、そのブロックをコーディングするために使用される走査順序との間の相関が証明されている。たとえば、ブロックに関連する走査順序は、ブロックの予測データを生成するために使用される予測モードと、ブロックのサイズとに依存し得る。言い換えれば、特定の走査順序は、ブロックに関連する予測モードおよびサイズに応じて、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用され得る。
【００２３】
ビデオデータのブロックをコーディングするために使用されるブロックについての走査順序情報のコーディングのコーディング効率は、上記で説明した相関を利用することによって改善され得る。特に、コーディング効率は、特定のブロックのための最確走査順序を識別する情報を使用してそのブロックの走査順序情報をコーディングすることによって改善され得る。いくつかの例では、特定のブロックのための最確走査順序は、そのブロックに関連するイントラ予測モードおよびサイズに基づいて判断され得る。たとえば、エンコーダおよびデコーダは、両方とも、ブロックに関連するイントラ予測モードおよびサイズに基づいてブロックのための最確走査順序を定義するようにプログラムされ得、エンコーダによってブロックを符号化するために最確走査順序が実際に使用されたかどうかをデコーダに示すための情報がエンコーダによってシグナリングされ得る。
【００２４】
一例では、コーディング効率は、ビデオデータのブロックのための最確走査順序を判断することと、ブロックに関連する走査順序、すなわち、ブロックをコーディングするために使用される走査順序が最確走査順序であるかどうかの指示をコーディングすることとによって改善され得る。この例では、ブロックに関連する走査順序が最確走査順序である場合、ブロックについてさらなる走査順序情報はコーディングされなくてよい。しかしながら、ブロックに関連する走査順序が最確走査順序でない場合、本技法は、ブロックに関連する走査順序の指示をコーディングすることをさらに含み得る。定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用されることになるので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされない。その結果、ブロックについての走査順序情報は、他の技法を使用したときよりも、たとえば、ブロック全体の走査順序情報を常にコーディングしたときよりも少ない情報を使用してコーディングされ得る。
【００２５】
別の例として、コーディング効率は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することによって改善され得る。この場合も、定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用されることになるので、ブロックに関連する走査順序が最確走査順序であるかどうかの初期指示は、数多くの場合、ブロック全体の走査順序情報を示すことになり、さらなる走査順序情報をコーディングする必要はなくなる。さらに、ブロックに関連する走査順序が最確走査順序でない場合、ブロックを効率的にコーディングするためには、ブロックに関連する走査順序の指示をコーディングするのではなく、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することで十分であり得る。たとえば、係数をより効率的に走査し得る別の走査順序を使用するのではなく、係数をコーディングするためにジグザグ走査順序を使用することの悪影響を、上記で説明したブロックについての走査順序情報のコーディングの低減が上回り得る。
【００２６】
さらに別の例として、コーディング効率は、ブロックのための最確走査順序にジグザグ走査順序を指定することによって改善され得る。この例では、ジグザグ走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用され得るので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされないことがある。さらに、最確走査順序にジグザグ走査順序を指定することによって、コーディング効率は、上記で説明したように、ブロックのための実際の最確走査順序を判断することを回避することにより、改善され得る。
【００２７】
上記で説明した例の各々では、コーディング効率は、ブロックについての走査順序情報、すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とのうちの１つまたは複数をエントロピー符号化することによってさらに改善され得る。たとえば、走査順序情報は、コンテキスト適応型エントロピーコーディングプロセス、たとえば、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）プロセスを実行することによってエントロピー符号化され得る。上記で説明した例では、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得、それにより、コンテキストモデル内に含まれる確率推定値は、他の技法を使用して判断された確率推定値よりも正確になり得る。その結果、ブロックの走査順序情報はより効率的にコーディングされ得る。たとえば、この情報は、他の技法を使用したときよりも、たとえば、この情報をコーディングするために他のあまり正確でない確率推定値を使用したときよりも少ないビットを使用してコーディングされ得る。
【００２８】
上記で説明した方法でビデオデータの１つまたは複数のブロックについての走査順序情報をコーディングすることにより、他の方法よりも効率的なコーディング方法を使用することが可能になり得る。このようにして、本開示の技法を使用すると、この情報を含むコード化ビットストリームについての相対的なビット節約があり得る。
【００２９】
本開示の技法は、いくつかの例では、ＣＡＢＡＣ、確率間隔区分エントロピーコーディング（ＰＩＰＥ）、または別のコンテキスト適応型エントロピーコーディング方法を含む、任意のコンテキスト適応型エントロピーコーディング方法とともに使用され得る。ＣＡＢＡＣは、本開示においては、本開示で広く説明する技法に関する限定なしに、説明のために記載している。また、本技法は、たとえば、ビデオデータに加えて、一般に他のタイプのデータのコーディングに適用され得る。
【００３０】
図１は、本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための技法を実装し得るビデオ符号化および復号システム１０の一例を示すブロック図である。図１に示すように、システム１０は、通信チャネル１６を介して符号化ビデオを宛先デバイス１４に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１４は、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス１２および宛先デバイス１４は、ワイヤレスハンドセット、いわゆるセルラー無線電話または衛星無線電話などのワイヤレス通信デバイスを備えるか、あるいは、通信チャネル１６を介してビデオ情報を通信することができ、その場合、通信チャネル１６がワイヤレスである、任意のワイヤレスデバイスを備え得る。
【００３１】
ただし、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用することに関係する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。これらの技法は、概して、オーバージエアテレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、ストリーミングインターネットビデオ送信、記憶媒体上に符号化されるか、または記憶媒体から取り出されて復号される符号化デジタルビデオを含む、符号化または復号が実行される任意のシナリオ、あるいは他のシナリオに適用され得る。したがって、通信チャネル１６は必要とされず、本開示の技法は、たとえば、符号化デバイスと復号デバイスとの間にいかなるデータ通信もなしに、符号化が適用される、または復号が適用される設定に適用され得る。
【００３２】
図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器（モデム）２２と、送信機２４とを含む。宛先デバイス１４は、受信機２６と、モデム２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。本開示によれば、ソースデバイス１２のビデオエンコーダ２０および／または宛先デバイス１４のビデオデコーダ３０は、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス１２は、外部カメラなどの外部ビデオソース１８からビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００３３】
図１の図示のシステム１０は一例にすぎない。ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が宛先デバイス１４に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス１２、１４は、デバイス１２、１４の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのために、ビデオデバイス１２とビデオデバイス１４との間の一方向または双方向のビデオ送信をサポートし得る。
【００３４】
ソースデバイス１２のビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および／またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオ情報は、次いで、通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００３５】
宛先デバイス１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８はその情報を復調する。この場合も、上記で説明したビデオ符号化プロセスは、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するために本明細書で説明する技法のうちの１つまたは複数を実装し得る。チャネル１６を介して通信される情報は、同じくビデオデコーダ３０によって使用される、ビデオエンコーダ２０によって定義されたシンタックス情報を含み得、そのシンタックス情報は、ビデオデータのブロック（たとえば、マクロブロック、またはコーディングユニット）の特性および／または処理、たとえば、ブロックの走査順序情報、および他の情報を記述するシンタックス要素を含む。ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３６】
図１の例では、通信チャネル１６は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル１６は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス１２から宛先デバイス１４に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１６は、ソースデバイス１２から宛先デバイス１４への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。他の例では、符号化または復号デバイスは、そのようなデバイス間で通信することなく本開示の技法を実装し得る。たとえば、符号化デバイスは、本開示の技法に一致して符号化ビットストリームを符号化および記憶し得る。代替的に、復号デバイスが、符号化ビットストリームを受信するかまたは取り出し、本開示の技法と一致してビットストリームを復号し得る。
【００３７】
ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、アドバンストビデオコーディング（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、ＭＰＥＧ−２、ＩＴＵ−Ｔ  Ｈ．２６３、および現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格がある。概して、本開示の技法について、ＨＥＶＣに関して説明するが、これらの技法は、他のビデオコーディング規格と併せて同様に使用され得ることを理解されたい。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３８】
ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよびデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。
【００３９】
ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャのグループ（ＧＯＰ）は、概して、一連の１つまたは複数のビデオフレームを備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのフレームを記述するシンタックスデータを、ＧＯＰのヘッダ中、ＧＯＰの１つまたは複数のフレームのヘッダ中、または他の場所に含み得る。各フレームは、それぞれのフレームのための符号化モードを記述するフレームシンタックスデータを含み得る。ビデオエンコーダ、たとえば、ビデオエンコーダ２０は、一般に、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ＩＴＵ−Ｔ  Ｈ．２６４規格によれば、ビデオブロックは、マクロブロックまたはマクロブロックのパーティションに対応し得る。他の規格、たとえば、下記でより詳細に説明するＨＥＶＣによれば、ビデオブロックは、コーディングユニット（たとえば、最大コーディングユニット）、またはコーディングユニットのパーティションに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは、複数のスライス、すなわち、ビデオフレームの部分を含み得る。各スライスは複数のビデオブロックを含み得、それらのビデオブロックは、サブブロックとも呼ばれるパーティションに構成され得る。
【００４０】
指定のコーディング規格に応じて、ビデオブロックは、１６×１６、８×８、４×４、２×２など、様々な「Ｎ×Ｎ」サブブロックサイズに区分され得る。本開示では、「Ｎ×（x）Ｎ」と「Ｎ×（by）Ｎ」は、垂直寸法および水平寸法に関するブロックのピクセル寸法、たとえば、１６×（x）１６ピクセルまたは１６×（by）１６ピクセルを指すために互換的に使用され得る。一般に、１６×１６ブロックは、垂直方向に１６ピクセルを有し（ｙ＝１６）、水平方向に１６ピクセルを有する（ｘ＝１６）。同様に、Ｎ×Ｎブロックは、一般に、垂直方向にＮピクセルを有し、水平方向にＮピクセルを有し、ただし、Ｎは非負整数値を表す。ブロック中のピクセルは行と列に構成され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはＮ×Ｍピクセルを備え得、ただし、Ｍは必ずしもＮに等しいとは限らない。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格では、サイズが１６×１６ピクセルであるブロックはマクロブロックと呼ばれることがあり、１６×１６ピクセルよりも小さいブロックは、１６×１６マクロブロックのパーティションと呼ばれることがある。他の規格、たとえば、ＨＥＶＣでは、ブロックはより一般的にそれらのサイズに関連して、たとえば、各々が固定サイズではなく可変サイズを有するコーディングユニットおよびそのパーティションとして定義され得る。
【００４１】
ビデオブロックは、ピクセル領域中のピクセルデータのブロックを備え得、あるいは、たとえば、所与のビデオブロックのための残差データへの離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得、残差データは、ブロックのビデオデータと、ブロックのために生成される予測データとの間のピクセル差分を表す。場合によっては、ビデオブロックは、変換領域中に量子化変換係数のブロックを備え得、所与のビデオブロックのための残差データへの変換の適用後に、得られた変換係数も量子化される。
【００４２】
ブロック区分は、ブロックベースのビデオコーディング技法において重要な目的を果たす。ビデオデータをコーディングするためにより小さいブロックを使用すると、高レベルのディテールを含むビデオフレームのロケーションに関するデータの予測がより良好になり得、したがって、残差データとして表される生じる誤差（すなわち、ソースビデオデータからの予測データの偏差）が低減し得る。残差データを低減する可能性がある一方、そのような技法は、しかしながら、ビデオフレームに対してブロックがどれだけより小さく区分されるかを示す追加のシンタックス情報を必要とし得、結果としてコード化ビデオビットレートが増加し得る。したがって、いくつかの技法では、ブロック区分は、追加のシンタックス情報に起因するコード化ビデオデータのビットレートの生じる増加に対して、残差データの望ましい低減の釣り合いをとることに依存し得る。
【００４３】
概して、ブロック、およびその様々なパーティション（すなわち、サブブロック）は、ビデオブロックと見なされ得る。加えて、スライスは、複数のビデオブロック（たとえば、マクロブロック、もしくはコーディングユニット）、および／またはサブブロック（マクロブロックのパーティション、もしくはサブコーディングユニット）であると見なされ得る。各スライスはビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、またはフレームの他の部分が復号可能なユニットとして定義され得る。さらに、シーケンスとも呼ばれるＧＯＰが復号可能なユニットとして定義され得る。
【００４４】
高効率ビデオコーディング（ＨＥＶＣ）と現在呼ばれる、新しいビデオコーディング規格を開発するための取り組みが現在進行中である。新生のＨＥＶＣ規格はＨ．２６５と呼ばれることもある。この規格化の取り組みは、ＨＥＶＣテストモデル（ＨＭ：HEVC Test Model）と呼ばれるビデオコーディングデバイスのモデルに基づく。ＨＭは、たとえば、ＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣによるデバイスに勝るビデオコーディングデバイスのいくつかの能力を仮定する。たとえば、Ｈ．２６４は９つのイントラ予測符号化モードを与えるが、ＨＭは、たとえば、イントラ予測コーディングされるブロックのサイズに基づいて、３５個ものイントラ予測符号化モードを与える。
【００４５】
ＨＭでは、ビデオデータのブロックをコーディングユニット（ＣＵ）と呼ぶ。ＣＵは、圧縮のために様々なコーディングツールが適用される基本ユニットとしての役割を果たす矩形の画像領域を指し得る。Ｈ．２６４では、これはマクロブロックと呼ばれることもある。ビットストリーム内のシンタックスデータは、ピクセルの数に関して最大ＣＵである最大コーディングユニット（ＬＣＵ：largest coding unit）を定義し得る。概して、ＣＵは、ＣＵがサイズの差異を有しないことを除いて、Ｈ．２６４のマクロブロックと同様の目的を有する。したがって、ＣＵはサブＣＵに区分、または「分割」され得る。
【００４６】
ＬＣＵは、ＬＣＵがどのように区分されるかを示す４分木データ構造に関連し得る。概して、４分木データ構造は、ＬＣＵのＣＵごとに１つのノードを含み、ルートノードがＬＣＵに対応し、他のノードはＬＣＵのサブＣＵに対応する。所定のＣＵが４つのサブＣＵに分割された場合、分割されたＣＵに対応する４分木中のノードは４つの子ノードを含み、子ノードの各々はサブＣＵのうちの１つに対応する。４分木データ構造の各ノードは、対応するＣＵのシンタックス情報を与え得る。たとえば、４分木のノードは、そのノードに対応するＣＵが４つのサブＣＵに分割されるかどうかを示す、ＣＵの分割フラグを含み得る。所与のＣＵのシンタックス情報は、再帰的に定義され得、ＣＵがサブＣＵに分割されるかどうかに依存し得る。
【００４７】
分割されないＣＵ（すなわち、所与の４分木の末端、または「リーフ」ノードに対応するＣＵ）は、１つまたは複数の予測ユニット（ＰＵ：prediction unit）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分を表し、ＣＵの予測を実行するためにそのＰＵの参照サンプルを取り出すためのデータを含む。たとえば、ＣＵがイントラモード符号化されるとき、ＰＵは、ＰＵのイントラ予測モードを記述するデータを含み得る。別の例として、ＣＵがインターモード符号化されるとき、ＰＵは、ＰＵの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度（たとえば、１／４ピクセル精度もしくは１／８ピクセル精度）、動きベクトルがポイントする参照フレーム、および／または動きベクトルの参照リスト（たとえば、リスト０もしくはリスト１）を記述し得る。ＣＵの１つまたは複数のＰＵを定義するＣＵのデータはまた、たとえば、ＣＵを１つまたは複数のＰＵに区分することを記述し得る。区分モードは、ＣＵがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかとの間で異なり得る。
【００４８】
１つまたは複数のＰＵを有するＣＵはまた、１つまたは複数の変換ユニット（ＴＵ：transform unit）を含み得る。上記で説明したように、１つまたは複数のＰＵを使用してＣＵを予測した後に、ビデオエンコーダは、１つまたは複数のＰＵに対応するＣＵのそれぞれの部分について１つまたは複数の残差ブロックを計算し得る。残差ブロックは、ＣＵのビデオデータと、１つまたは複数のＰＵのための予測データとの間のピクセル差分を表し得る。残差値のセットは、変換され、走査され、量子化されて、量子化変換係数のセットが定義され得る。ＴＵは、ＣＵに関して上記で説明した４分木データ構造と実質的に同様である変換係数のパーティション情報を示すパーティションデータ構造を定義し得る。ＴＵは、必ずしもＰＵのサイズに制限されるとは限らない。したがって、ＴＵは、同じＣＵの対応するＰＵよりも大きいことも小さいこともある。いくつかの例では、ＴＵの最大サイズは、対応するＣＵのサイズに対応し得る。一例では、ＣＵに対応する残差サンプルが、「残差４分木」（ＲＱＴ：residual quad tree）として知られる４分木構造を使用してより小さいユニットに再分割され得る。この場合、ＲＱＴのリーフノードは、ＴＵとして参照され得、これについて対応する残差サンプルが変換され、量子化され得る。
【００４９】
予測データと残差データとを生成するためのイントラ予測符号化またはインター予測符号化の後に、および変換係数を生成するための（Ｈ．２６４／ＡＶＣにおいて使用される４×４または８×８整数変換、あるいは離散コサイン変換ＤＣＴなどの）任意の変換の後に、変換係数の量子化が実行され得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にｎビット値がｍビット値に切り捨てられ得、ただし、ｎはｍよりも大きい。
【００５０】
量子化後に、量子化データ（すなわち、量子化変換係数）のエントロピーコーディングが実行され得る。エントロピーコーディングは、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用することに関して本開示の技法に準拠し得、また、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、ＣＡＢＡＣ、ＰＩＰＥ、または別のエントロピーコーディング方法など、他のエントロピーコーディング技法を使用し得る。たとえば、量子化変換係数の絶対値および対応する符号（たとえば、「＋１」または「−１」）として表される係数値が、エントロピーコーディング技法を使用して符号化され得る。
【００５１】
上記で説明した予測、変換、および量子化は、指定のコーディング規格に応じて、ビデオデータの任意のブロックについて、たとえば、ＣＵのＰＵおよび／またはＴＵ、あるいはマクロブロックに対して実行され得ることに留意されたい。したがって、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用することに関係する本開示の技法は、ビデオデータの任意のブロック、たとえば、マクロブロック、またはＣＵのＴＵを含む、量子化変換係数の任意のブロックに適用され得る。さらに、ビデオデータのブロック（たとえば、マクロブロック、またはＣＵのＴＵ）は、対応するビデオデータのルミナンス成分（Ｙ）、第１のクロミナンス成分（Ｕ）、および第２のクロミナンス成分（Ｖ）の各々を含み得る。したがって、本開示の技法は、ビデオデータの所与のブロックのＹ、Ｕ、およびＶ成分の各々に対して実行され得る。
【００５２】
上記で説明したようにビデオデータのブロックを符号化するために、所与のブロック内の有効係数の位置に関する情報も、生成および符号化され得る。その後、有効係数の値は、上記で説明したように符号化され得る。Ｈ．２６４／ＡＶＣおよび新生のＨＥＶＣ規格では、コンテキスト適応型エントロピーコーディングプロセス、たとえば、ＣＡＢＡＣプロセスを使用するとき、ビデオデータのブロック内の有効係数の位置は、有効係数の値を符号化するより前に符号化され得る。ブロック内のすべての有効係数の位置を符号化するプロセスは、有効性マップ（ＳＭ：significance map）符号化と呼ばれることがある。下記でより詳細に説明する図４Ａ〜図４Ｃは、量子化変換係数の４×４ブロックおよび対応するＳＭデータの例を示す概念図である。
【００５３】
典型的なＳＭ符号化プロシージャは、次のように説明され得る。ビデオデータの所与のブロックについて、ＳＭは、ブロック内に少なくとも１つの有効係数がある場合にのみ符号化され得る。ビデオデータの所与のブロック内に有効係数が存在することは、コード化ブロックパターンにおいて（たとえば、シンタックス要素「coded_block_pattern」すなわちＣＢＰを使用して）示され得、これは、ビデオデータ中のピクセル領域に関連する（ルミナンスブロックおよびクロミナンスブロックなどの）ブロックのセットに対してコーディングされるバイナリ値である。ＣＢＰ中の各ビットは、（たとえば、シンタックス要素「coded_block_flag」に対応する）コード化ブロックフラグと呼ばれ、それの対応するブロック内に少なくとも１つの有効係数があるかどうかを示すために使用される。言い換えれば、コード化ブロックフラグは、変換係数の単一ブロックの内部に有効係数があるかどうかを示す１ビットシンボルであり、ＣＢＰは、関連するビデオデータブロックのセットのためのコード化ブロックフラグのセットである。
【００５４】
コード化ブロックフラグが、対応するブロック内に有効係数がない（たとえば、フラグが「０」に等しい）ことを示す場合、そのブロックについてさらなる情報は符号化されないことがある。しかしながら、コード化ブロックフラグが、対応するブロック内に少なくとも１つの有効係数が存在することを示す（たとえば、フラグが「１」に等しい）場合、そのブロックに関連する係数走査順序に従うことによって、そのブロックについてＳＭが符号化され得る。走査順序は、ブロック内の各係数の有効性が符号化される順序をＳＭ符号化の一部として定義し得る。言い換えれば、走査は、係数の有効性を求めるために、係数の２次元ブロックを１次元表現に直列化し得る。様々な走査順序（たとえば、ジグザグ、水平、および垂直）が使用され得る。同じく下記でより詳細に説明する図５Ａ〜図５Ｃは、８×８ブロックのビデオデータのために使用され得る様々な走査順序のうちのいくつかの例を示す。ただし、本開示の技法は、対角走査順序と、ジグザグ、水平、垂直、および／または対角走査順序の組合せである走査順序と、部分的にジグザグ、部分的に水平、部分的に垂直、および／または部分的に対角である走査順序とを含む、多種多様な他の走査順序に対しても適用され得る。加えて、本開示の技法はまた、ビデオデータの前にコーディングされたブロック（たとえば、現在コーディングされているブロックと同じブロックサイズまたはコーディングモードを有するブロック）に関連する統計値に基づいて、それ自体が適応的である走査順序を考慮し得る。たとえば、適応走査順序は、場合によっては、最確走査順序であり得る。
【００５５】
所与のブロック内に少なくとも１つの有効係数が存在することを示すコード化ブロックフラグ、およびそのブロックに関する走査順序が与えられれば、そのブロックのＳＭは次のように符号化され得る。最初に、量子化変換係数の２次元ブロックが、走査順序を使用して１次元アレイにマッピングされ得る。アレイ中の係数ごとに、走査順序に従って、（たとえば、シンタックス要素「significant_coeff_flag」に対応する）１ビット有効係数フラグが符号化され得る。すなわち、アレイ中の各位置にバイナリ値が割り当てられ得、バイナリ値は、対応する係数が有効である場合には「１」に設定され、有効でない（すなわち、ゼロである）場合には「０」に設定され得る。
【００５６】
所与の有効係数フラグが、対応する係数が有効であることを示す「１」に等しい場合、（たとえば、シンタックス要素「last_significant_coeff_flag」に対応する）追加の１ビットの最後有効係数フラグも符号化され得、これは、対応する係数がアレイ内の（すなわち、走査順序を与えられているブロック内の）最後有効係数であるかどうかを示し得る。具体的には、各最後有効係数フラグは、対応する係数がアレイ内の最後有効係数である場合は「１」に設定され、そうでない場合は「０」に設定され得る。このようにして最後のアレイ位置に達し、ＳＭ符号化プロセスが「１」に等しい最後有効係数フラグによって終了しなかった場合、アレイ（したがって、走査順序を与えられているブロック）中の最後の係数は有効であることが推測され得、その最後のアレイ位置について最後有効係数フラグは符号化されない場合がある。
【００５７】
図４Ｂ〜図４Ｃは、アレイ形式ではなくマップで表された、図４Ａに示すブロックのＳＭデータに対応する有効係数フラグおよび最後有効係数フラグのセットの例をそれぞれ示す概念図である。上記で説明した有効係数フラグおよび最後有効係数フラグは、他の例では異なる値に設定され得る（たとえば、有効係数フラグは、対応する係数が有効である場合は「０」に設定され、対応する係数が有効でない場合は「１」に設定され得、最後有効係数フラグは、対応する係数が最後有効係数である場合は「０」に設定され、対応する係数が最後有効係数でない場合は「１」に設定され得る）ことに留意されたい。
【００５８】
上記で説明したように、ＳＭが符号化された後、ブロック中の各有効係数の値（すなわち、たとえば、それぞれシンタックス要素「coeff_abs_level_minus1」および「coeff_sign_flag」によって示される、各有効係数の絶対値および符号）も符号化され得る。
【００５９】
いくつかの技法によれば、上記で説明したように、ビデオデータのブロックをコーディングするために、固定走査順序、たとえば、ジグザグ走査順序が使用され得る。他の技法によれば、ブロックをコーディングするために複数の走査順序が使用され得る。いくつかの例では、走査順序が経時的に適応され、所与の時間に係数の特定のブロックをコーディングするために現在適応されている走査順序が使用される、「適応係数走査」（ＡＣＳ：adaptive coefficient scanning）が使用され得る。さらに他の技法では、ビデオエンコーダ２０は、１つまたは複数の圧縮効率メトリックに基づいていくつかの走査順序をテストし、ブロックを符号化するために最良の走査順序を選択し得る。さらに、ビデオエンコーダ２０は、（たとえば、ジグザグ走査順序ではインデックス０、水平走査順序では１、垂直走査順序では２を使用して）いくつかの走査順序のうちのいずれか１つを表し得るＡＣＳインデックスを符号化することによって、ビデオデコーダ３０に走査順序を示し得る。
【００６０】
いくつかの技法によれば、ビデオエンコーダ２０は、最後有効係数が走査順序において（「ＤＣ」位置と通常呼ばれるブロック内の左上位置に対応する）最初の位置にないときのみ、ＡＣＳインデックスを符号化し得る。以下で同じくより詳細に説明する図５に示すように、すべての可能な走査順序はＤＣ位置から開始し得るので、ブロック内の最後（唯一）有効係数がＤＣ位置にある場合、ビデオデコーダ３０は、ビデオエンコーダ２０によって使用された走査順序の指示を必要としないので、ビデオエンコーダ２０はこのようにしてＡＣＳインデックスを符号化し得る。
【００６１】
ブロック内の最後有効係数がＤＣ位置にない場合、ビデオエンコーダ２０は以下の方法でＡＣＳインデックスを符号化し得る。ビデオエンコーダ２０は、走査順序がジグザグ走査順序であるか（たとえば、ｂｉｎ１＝「０」）否か（たとえば、ｂｉｎ１＝「１」）を示す第１の信号（たとえば、「ｂｉｎ１」）を符号化し得る。走査順序がジグザグ走査順序でない場合、ビデオエンコーダ２０は、走査順序が水平走査順序であるか（たとえば、ｂｉｎ２＝「０」）垂直走査順序であるか（たとえば、ｂｉｎ２＝「１」）を示す第２の信号（たとえば、「ｂｉｎ２」）を符号化し得る。同様に、ビデオデコーダ３０は、ＡＣＳインデックスを判断するために、第１の信号と第２の信号とを受信し、復号し得る。したがって、ＡＣＳインデックスを常にコーディングするのではなく、ビデオエンコーダ２０および／またはビデオデコーダ３０は、最後有効係数がＤＣ位置にないときのみ、ＡＣＳインデックスをコーディングし得る。
【００６２】
上記で説明した技法の１つの欠点は、ビデオデータのブロックの走査順序情報をコーディングするとき、ビデオエンコーダ２０および／またはビデオデコーダ３０が常にこの情報を全体としてコーディングし得ることである。言い換えれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序、すなわち、ブロックをコーディングするために使用される走査順序に応じて、たとえば、１〜２ビットまたは「ビン」を使用して、常にブロックの走査順序情報全体をコーディングし得る。さらに、ビデオエンコーダ２０および／またはビデオデコーダ３０がブロックの走査順序情報をコーディングするとき、上記で説明した技法は、ブロックに関連する予測モードおよびサイズと、ブロックに関連する走査順序、すなわち、ブロックをコーディングするために使用される走査順序との間の相関を利用することができない。これらの場合、常にブロックの走査順序情報を全体としてコーディングし、上記で説明した相関を利用することなしにこの情報をコーディングすると、他の技法を使用してその情報をコーディングするときよりも、たとえば、より多くのビンを使用して、その情報をコーディングする際の効率が低くなり得る。
【００６３】
上記で説明した技法の別の欠点は、ビデオエンコーダ２０および／またはビデオデコーダ３０が、コンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって、たとえば、１〜２個のビンを使用して表される、ブロックの走査順序情報をさらにエントロピーコーディングするとき、本技法は、他の方法を使用して判断された確率推定値よりも正確でない確率推定値を含んでいるコンテキストモデルを使用し得ることである。そのような確率推定値を使用してブロックの走査順序情報をエントロピー符号化すると、この場合も、他の技法を使用して、たとえば、より正確な確率推定値を使用してその情報をエントロピーコーディングするときよりも、たとえば、より多くのビットを使用して、その情報をコーディングする際の効率が低くなり得る。
【００６４】
したがって、本開示では、他の技法よりも効率的にビデオデータのブロックについての走査順序情報をコーディングすることを可能にし得る技法について説明する。一例として、走査順序情報は、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序、すなわち、ブロックをコーディングするために使用される走査順序が最確走査順序であるかどうかの指示をコーディングすることとによって、より効率的にコーディングされ得る。ブロックに関連する走査順序が最確走査順序である場合、ブロックについてさらなる走査順序情報はコーディングされなくてよい。しかしながら、ブロックに関連する走査順序が最確走査順序でない場合、本技法は、ブロックに関連する走査順序の指示をコーディングすることをさらに含み得る。定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするため使用されることになるので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされない。その結果、ブロックの走査順序情報は、他の技法を使用したときよりも少ない情報を使用してコーディングされ得る。
【００６５】
別の例として、走査順序情報は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することよってより効率的にコーディングされ得る。この場合も、定義によれば、ビデオデータの特定のブロックのための最確走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用されることになるので、ブロックに関連する走査順序が最確走査順序であるかどうかの初期指示は、数多くの場合、ブロック全体の走査順序情報を示すことになり、さらなる走査順序情報をコーディングする必要はなくなる。さらに、ブロックに関連する走査順序が最確走査順序でない場合、ブロックを効率的にコーディングするためには、ブロックに関連する走査順序の指示をコーディングするのではなく、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用することで十分であり得る。たとえば、係数をより効率的に走査し得る別の走査順序を使用するのではなく、係数をコーディングするためにジグザグ走査順序を使用することの悪影響を、上記で説明したブロックについての走査順序情報のコーディングの低減が上回り得る。
【００６６】
さらに別の例として、走査順序情報は、ブロックのための最確走査順序にジグザグ走査順序を指定することによってより効率的にコーディングされ得る。この例では、ジグザグ走査順序は、平均すると、ブロックをコーディングするために同じく使用され得る他の走査順序よりも頻繁にブロックをコーディングするために使用され得るので、ブロックに関連する走査順序の追加の指示は、数多くの場合、コーディングされなくてよい。さらに、最確走査順序にジグザグ走査順序を指定することによって、コーディング効率は、上記で説明したように、ブロックのための実際の最確走査順序を判断することを回避することにより、改善され得る。
【００６７】
上記で説明した例の各々において、走査順序情報は、ブロックの走査順序情報、すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とのうちの１つまたは複数をさらにエントロピー符号化することによって、より効率的にコーディングされ得る。たとえば、走査順序情報は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってエントロピー符号化され得る。上記で説明した例では、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得、それにより、コンテキストモデル内に含まれる確率推定値は、他の技法を使用して判断された確率推定値よりも正確になり得る。その結果、ブロックの走査順序情報はより効率的にコーディングされ得る。たとえば、この情報は、他の技法を使用したときよりも、たとえば、この情報をコーディングするために他のあまり正確でない確率推定値を使用したときよりも少ないビットを使用してコーディングされ得る。
【００６８】
上記で説明した例では、最確走査順序は、ブロックをコーディングするために使用されるコーディングモードと、ブロックに関連するサイズとに基づいて、エンコーダおよびデコーダにおいて定義され得る。コーディングモードは、イントラ予測モードおよびインター予測モードのうちの１つであり得るが、これらの技法は、イントラ予測モードを使用してコーディングされるブロックに最も適用可能であり得る。したがって、いくつかの例では、最確走査順序の判断は、ブロックをコーディングするために複数のイントラ予測モードのうちのどれが使用されるかに基づき得る。ブロックに関連するサイズは、ブロックに関連する、ＣＵサイズ、ＰＵサイズ、ＴＵサイズ、あるいは場合によってはＣＵ、ＰＵおよび／またはＴＵサイズのいくつかの組合せさえをも指し得る。
【００６９】
本開示の技法は、上記で説明したＳＭコーディングのための技法、ならびに走査順序情報をコーディングするための他の技法を含む、ビデオデータのブロックについての走査順序情報をコーディングする任意の方法に適用可能であることに留意されたい。たとえば、本開示の技法は、ブロックのＳＭデータ（すなわち、最後有効係数位置情報および有効係数位置情報）とは無関係に、本明細書で説明する方法でビデオデータのブロックについての走査順序情報をコーディングすることを含み得る。一例として、本技法は、ブロックについて、最後有効係数位置情報をコーディングした後に、および有効係数位置情報をコーディングする前に走査順序情報をコーディングすることを含み得る。
【００７０】
いくつかの例では、ソースデバイス１２のビデオエンコーダ２０は、ビデオデータのいくつかのブロック（たとえば、１つまたは複数のマクロブロック、あるいはＣＵのＴＵ）を符号化するように構成され得、宛先デバイス１４のビデオデコーダ３０は、ビデオエンコーダ２０から、たとえば、モデム２８および受信機２６から符号化されたビデオデータを受信するように構成され得る。本開示の技法によれば、一例として、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報をコーディングするように構成され得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを行うように構成され得る。この例では、ブロックに関連する走査順序と、最確走査順序との各々は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。この場合も、ジグザグ走査順序、水平走査順序、および垂直走査順序は例にすぎず、本開示の技法に一致する他の走査順序も定義または使用され得る。
【００７１】
ブロックのための最確走査順序を判断するために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、図６Ａ〜図６Ｂを参照しながら以下でより詳細に説明するように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断するように構成され得る。
【００７２】
さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【００７３】
別の例では、ブロックの走査順序情報をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する走査順序の指示をコーディングするようにさらに構成され得る。
【００７４】
この例では、ブロックに関連する走査順序の指示をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、この場合も、ビデオエンコーダ２０および／またはビデオデコーダ３０が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、この場合も、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【００７５】
したがって、この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序が最確走査順序であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示をコーディングすることによってブロックの走査順序情報をコーディングするように構成され得る。
【００７６】
別の例では、ブロックの走査順序情報をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数をコーディングするためにジグザグ走査順序を使用するようにさらに構成され得る。したがって、この例では、ブロックのための最確走査順序を判断し、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングした後に、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックについての追加の走査順序情報をコーディングしないように構成され得る。
【００７７】
さらに別の例では、ブロックのための最確走査順序を判断するために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックのための最確走査順序にジグザグ走査順序を指定するように構成され得る。この例では、上記で説明したのと同様の方法で、ブロックの走査順序情報をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序が最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）でない場合、ブロックに関連する走査順序の指示をコーディングするようにさらに構成され得る。言い換えれば、この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、たとえば、前にコーディングされたブロックの走査順序情報を使用して、ブロックのための最確走査順序の実際の判断を実行するのではなく、ジグザグ走査順序がブロックのための最確走査順序であると仮定するように構成され得る。
【００７８】
この例では、ブロックに関連する走査順序の指示をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、この場合も、ビデオエンコーダ２０および／またはビデオデコーダ３０が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、この場合も、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【００７９】
したがって、この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序がジグザグ走査順序であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示をコーディングすることによってブロックの走査順序情報をコーディングするように構成され得る。
【００８０】
この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序に従うブロック内の最後非０係数の位置を識別する情報、すなわち、ブロックの最後有効係数位置情報をコーディングするようにさらに構成され得る。さらに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロック内のすべての他の非０係数の位置を識別する情報、すなわち、ブロックの有効係数位置情報をコーディングするようにさらに構成され得る。前に説明したように、ブロックについての最後有効係数位置情報および有効係数位置情報は、ブロックについてのＳＭデータと総称されることがある。
【００８１】
いずれの場合も、上記で説明した方法で、ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報、すなわち、ＳＭデータをコーディングした後に、ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、ブロック内の各有効係数の値（たとえば、それぞれシンタックス要素「coeff_abs_level_minus1」および「coeff_sign_flag」によって示される、各有効係数の絶対値および符号）をコーディングし得る。
【００８２】
したがって、本開示の技法により、ビデオエンコーダ２０および／またはビデオデコーダ３０は、他の方法を使用したときよりも効率的にブロックの走査順序情報をコーディングすることが可能になり得る。このようにして、本開示の技法を使用すると、走査順序情報を含むコード化ビットストリームについての相対的なビット節約があり得る。
【００８３】
ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、適用可能なとき、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ／デコーダ（コーデック）の一部として統合され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０を含む装置は、集積回路、マイクロプロセッサ、および／またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【００８４】
図２は、本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的に符号化するために最確走査順序を使用するための技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、マクロブロック、ＣＵ、およびそれらのパーティションまたはサブパーティションを含む、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースの圧縮モードのいずれかを指し、単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
【００８５】
図２に示すように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内のビデオデータの現在ブロックを受信する。図２の例では、ビデオエンコーダ２０は、動き補償ユニット４４と、動き推定ユニット４２と、メモリ６４と、加算器５０と、変換モジュール５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換モジュール６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理することになる。
【００８６】
符号化プロセス中に、ビデオエンコーダ２０は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間圧縮を行うために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して所与の受信ビデオブロックのインター予測コーディングを実行し得る。イントラ予測モジュール４６は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して所与の受信ビデオブロックのイントラ予測コーディングを実行し得る。
【００８７】
モード選択ユニット４０は、コーディング結果（たとえば、得られたコーディングレートおよびひずみレベル）に基づいて、およびコーディングされている所与の受信ブロックを含むフレームまたはスライスについてのフレームまたはスライスタイプに基づいて、コーディングモードのうちの１つ、すなわち、１つのモードまたは複数のイントラもしくはインターコーディングモードを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器５０に供給し、参照フレームまたは参照スライス中で使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器６２に供給し得る。概して、イントラ予測は、隣接する、前にコーディングされたブロックに対して現在ブロックを予測することを伴い、一方、インター予測は、現在ブロックを時間的に予測するために動き推定および動き補償を伴う。
【００８８】
動き推定ユニット４２および動き補償ユニット４４は、ビデオエンコーダ２０のインター予測要素を表す。動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム（または他のコード化ユニット）内でコーディングされている現在ブロックに対する予測参照フレーム（または他のコード化ユニット）内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、ブロックのパーティションの変位を指示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。
【００８９】
動き推定ユニット４２は、ビデオブロックをメモリ６４中の参照フレームのビデオブロックと比較することによってインターコード化フレームのビデオブロックの動きベクトルを計算し得る。動き補償ユニット４４はまた、この比較のために、参照フレーム、たとえば、ＩフレームまたはＰフレームのサブ整数ピクセルを補間し得る。一例として、ＩＴＵ  Ｈ．２６４規格には、符号化されている現在フレームよりも前の表示順序を有する参照フレームを含むリスト０、および符号化されている現在フレームよりも後の表示順序を有する参照フレームを含むリスト１という２つのリストが記載されている。したがって、メモリ６４に記憶されたデータは、これらのリストに従って編成され得る。
【００９０】
動き推定ユニット４２は、メモリ６４からの１つまたは複数の参照フレームのブロックを、現在フレーム、たとえば、ＰフレームまたはＢフレームの符号化されるべきブロックと比較し得る。メモリ６４中の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット４２によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット４２および／または動き補償ユニット４４はまた、サブ整数ピクセル位置の値がメモリ６４に記憶されていない場合、メモリ６４に記憶された参照フレームのサブ整数ピクセル位置の値を計算するように構成され得る。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送り得る。動きベクトルによって識別される参照フレームブロックは、インター予測ブロック、または、より一般的に、予測ブロックと呼ばれることがある。動き補償ユニット４４は、予測ブロックに基づいて予測データを計算し得る。
【００９１】
イントラ予測モジュール４６は、上記で説明したように、動き推定ユニット４２と動き補償ユニット４４とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測モジュール４６は、現在ブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測モジュール４６は、たとえば、別々の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測モジュール４６（または、いくつかの例では、モード選択ユニット４０）は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測モジュール４６は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ（または誤差）の量、ならびに符号化されたブロックを生成するために使用されるビットレート（すなわち、ビット数）を判断する。イントラ予測モジュール４６は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化されたブロックについてのひずみおよびレートから比率を計算し得る。
【００９２】
たとえば、イントラ予測またはインター予測を使用して、現在ブロックを予測した後に、ビデオエンコーダ２０は、コーディングされている元のビデオブロックから、動き補償ユニット４４またはイントラ予測モジュール４６によって計算された予測データを減算することによって残差ビデオブロックを形成し得る。加算器５０は、この減算演算を実行し得る１つまたは複数の構成要素を表す。変換モジュール５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用して、残差変換係数値を備えるビデオブロックを生成し得る。変換モジュール５２は、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義された変換などの他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換モジュール５２は、変換を残差ブロックに適用して、残差変換係数のブロックを生成し得る。変換は、残差情報をピクセル領域から周波数領域などの変換領域に変換し得る。量子化ユニット５４は、ビットレートをさらに低減するために残差変換係数を量子化し得る。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。
【００９３】
量子化の後に、エントロピー符号化ユニット５６は、ＣＡＶＬＣ、ＣＡＢＡＣ、ＰＩＰＥ、または別のエントロピーコーディング技法を含み得る、量子化変換係数をエントロピー符号化し得る。エントロピー符号化ユニット５６によるエントロピーコーディングの後に、符号化されたビデオは、別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
【００９４】
場合によっては、エントロピー符号化ユニット５６またはビデオエンコーダ２０の別のユニットは、上記で説明したエントロピーコーディング量子化変換係数に加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット５６は、符号化ビデオビットストリーム中で送信するのに適切なシンタックス要素を用いて、ブロック（たとえば、マクロブロック、ＣＵ、またはＬＣＵ）あるいはブロックを含んでいるビデオフレームについてのヘッダ情報を構築し得る。いくつかのコーディング規格によれば、そのようなシンタックス要素は、前に説明したように、ブロックの走査順序情報を含み得る。同じく前に説明したように、走査順序情報は、非効率的にコーディングされた場合、全体的な圧縮ビデオビットレートのうちの高いパーセンテージを消費し得る。したがって、本開示では、他の方法を使用したときよりも効率的にブロックの走査順序情報をコーディングすることを可能にし得る技法について説明する。
【００９５】
いくつかの例として、ビデオエンコーダ２０のエントロピー符号化ユニット５６は、ビデオデータのいくつかのブロック（たとえば、１つまたは複数のマクロブロック、あるいはＣＵのＴＵ）を符号化するように構成され得る。本開示の技法によれば、一例として、エントロピー符号化ユニット５６は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を符号化するように構成され得る。たとえば、エントロピー符号化ユニット５６は、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を符号化することとを行うように構成され得る。この例では、ブロックに関連する走査順序と、最確走査順序との各々は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。この場合も、ジグザグ走査順序、水平走査順序、および垂直走査順序は例にすぎず、本開示の技法に一致する他の走査順序も定義または使用され得る。
【００９６】
ブロックのための最確走査順序を判断するために、エントロピー符号化ユニット５６は、図６Ａ〜図６Ｂを参照しながら以下でより詳細に説明するように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断するように構成され得る。たとえば、エントロピー符号化ユニット５６は、前に符号化されたブロック、たとえば、現在符号化されているブロックと同じ関連する予測モードおよびサイズをもつブロックについての走査順序情報を使用して最確走査順序を判断し得る。
【００９７】
さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を符号化するために、エントロピー符号化ユニット５６は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【００９８】
さらに、指示は単一ビットまたは「ビン」を備え得る。たとえば、エントロピー符号化ユニット５６は、走査順序が最確走査順序であるか（たとえば、ｂｉｎ＝「０」）そうでないか（たとえば、ｂｉｎ＝「１」）を示すようにビンを符号化し得る。
【００９９】
別の例では、ブロックの走査順序情報を符号化するために、エントロピー符号化ユニット５６は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する走査順序の指示を符号化するようにさらに構成され得る。
【０１００】
この例では、ブロックに関連する走査順序の指示を符号化するために、エントロピー符号化ユニット５６は、この場合も、エントロピー符号化ユニット５６が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【０１０１】
さらに、ブロックに関連する走査順序の指示はまた、単一のビンを備え得る。たとえば、エントロピー符号化ユニット５６は、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）を示すようにビンを符号化するように構成され得る。この例では、第１の走査順序および第２の走査順序は、ビデオエンコーダ２０とビデオデコーダ３０とを備える対応するコーディングシステム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー符号化ユニット５６は、他の技法を使用して、たとえば、複数のビンを使用して、ブロックに関連する走査順序の指示を符号化するように構成され得る。
【０１０２】
したがって、この例では、エントロピー符号化ユニット５６は、ブロックに関連する走査順序が最確走査順序であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示を符号化することによってブロックの走査順序情報を符号化するように構成され得る。
【０１０３】
以下は、上記で説明した例に一致する、本開示の技法を実行するために使用され得るコンピュータコードの一例である。たとえば、このコンピュータコードは、ビデオデータのブロックのための最確走査順序に対応する走査順序インデックスの２次元アレイを構成するためのアルゴリズムを含む。この例では、特定のブロックのための最確走査順序は、そのブロックに関連するイントラ予測モードおよびサイズに基づいて判断される。したがって、２次元アレイの各行は、ビデオデータのブロックに関連するサイズに対応し、アレイの各列は、ブロックに関連するイントラ予測モードに対応する。言い換えれば、２次元アレイ内の各位置は、特定のイントラ予測モードおよびサイズに関連しているビデオデータのブロックのための最確走査順序を示す。たとえば、２次元アレイによって示されるブロックのための最確走査順序は、前に符号化されたブロックに対応する走査順序情報を使用して判断され得る。
【０１０４】
この例では、特定のブロックのための最確走査順序は、３つの走査順序インデックス、すなわち、「０」、「１」、および「２」のうちの１つを使用して示される。一例として、走査順序インデックスはそれぞれ、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを表し得る。他の例では、走査順序インデックスは、他の走査順序を表し得、より多いまたはより少ないインデックスを備え得る。
【０１０５】
コンピュータコードはまた、ブロックの走査順序情報を符号化するために（上記で説明した２次元アレイを使用してブロックに関連するイントラ予測モードおよびサイズに基づいて判断される）特定のブロックのための最確走査順序を使用する符号化アルゴリズムを含む。たとえば、このアルゴリズムは、１つと２つとの間のビンを使用してブロックの走査順序情報を符号化し、各ビンは、最確走査順序とイントラ予測モードとサイズとを含むコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって符号化される。前に説明したように、コンテキストは、特定のビンを符号化するためのコンテキストモデル内の確率推定値を選択するために使用される。特に、確率推定値は、ビンが所与の値（たとえば、「０」または「１」）を有する可能性を示す。
【数１】
0005852133.tif 000002
【０１０６】
別の例では、ブロックの走査順序情報をコーディングするために、エントロピー符号化ユニット５６は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数を符号化するためにジグザグ走査順序を使用するようにさらに構成され得る。したがって、この例では、ブロックのための最確走査順序を判断し、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を符号化した後に、エントロピー符号化ユニット５６は、ブロックについての追加の走査順序情報を符号化しないように構成され得る。
【０１０７】
さらに別の例では、ブロックのための最確走査順序を判断するために、エントロピー符号化ユニット５６は、ブロックのための最確走査順序にジグザグ走査順序を指定するように構成され得る。この例では、上記で説明したのと同様の方法で、ブロックの走査順序情報を符号化するために、エントロピー符号化ユニット５６は、ブロックに関連する走査順序が最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）でない場合、ブロックに関連する走査順序の指示を符号化するようにさらに構成され得る。言い換えれば、この例では、エントロピー符号化ユニット５６は、たとえば、前に符号化されたブロックの走査順序情報を使用して、ブロックのための最確走査順序の実際の判断を実行するのではなく、ジグザグ走査順序がブロックのための最確走査順序であると仮定するように構成され得る。
【０１０８】
この例では、ブロックに関連する走査順序の指示を符号化するために、エントロピー符号化ユニット５６は、この場合も、エントロピー符号化ユニット５６が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【０１０９】
ブロックに関連する走査順序の指示は、この場合も、単一のビンを備え得る。たとえば、エントロピー符号化ユニット５６は、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）を示すようにビンを符号化し得る。この例では、第１の走査順序および第２の走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー符号化ユニット５６は、他の技法を使用して、たとえば、複数のビンを使用して、ブロックに関連する走査順序の指示を符号化し得る。
【０１１０】
したがって、この例では、エントロピー符号化ユニット５６は、ブロックに関連する走査順序が最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示を符号化することによってブロックの走査順序情報を符号化するように構成され得る。
【０１１１】
以下は、上記で説明した例に一致する、本開示の技法を実行するために使用されるコンピュータコードの別の例である。たとえば、このコンピュータコードは、ビデオデータのブロックのためのコンテキストインデックスの２次元アレイを構成するためのアルゴリズムを含む。この例では、特定のブロックのための各コンテキストインデックスは、ブロックに関連するイントラ予測モードおよびサイズに基づいて判断される。したがって、２次元アレイの各行は、ビデオデータのブロックに関連するサイズに対応し、アレイの各列は、ブロックに関連するイントラ予測モードに対応する。言い換えれば、２次元アレイ内の各位置は、特定のイントラ予測モードおよびサイズに関連しているビデオデータのブロックのためのコンテキストインデックスを含む。
【０１１２】
この例では、特定のブロックのための各コンテキストインデックスは、３つのインデックス、すなわち、「０」、「１」、および「２」のうちの１つを備える。他の例では、コンテキストインデックスはより多いまたはより少ないインデックスを備え得る。
【０１１３】
コンピュータコードはまた、ブロックの走査順序情報を符号化するために（上記で説明した２次元アレイを使用してブロックに関連するイントラ予測モードおよびサイズに基づいて判断される）特定のブロックのためのコンテキストインデックスを使用する符号化アルゴリズムを含む。たとえば、このアルゴリズムは、１つと２つとの間のビンを使用してブロックの走査順序情報を符号化し、各ビンは、コンテキストインデックスとイントラ予測モードとサイズとを含むコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって符号化される。前に説明したように、コンテキストは、特定のビンを符号化するためのコンテキストモデル内の確率推定値を選択するために使用される。特に、確率推定値は、ビンが所与の値（たとえば、「０」または「１」）を有する可能性を示す。
【数２】
0005852133.tif 000003
【０１１４】
上記で説明したコンテキスト適応型エントロピーコーディングプロセスを使用して各ビン（すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とを表すために使用される各ビン）を符号化するために、対応するコンテキストモデルは、ビンが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。エントロピー符号化ユニット５６は、コンテキスト適応型エントロピーコーディングプロセスを実行することによってビンを符号化するためにビンのための確率推定値を使用し得る。いくつかの例では、エントロピー符号化ユニット５６は、ビデオデータの前に符号化されたブロック、たとえば、現在符号化されているブロックと同じ関連する予測モードおよびサイズをもつブロックのための対応するビンの値を使用して確率推定値を判断し得る。他の例では、エントロピー符号化ユニット５６はまた、ビンが所与の値を備える確率を反映するためにビンの値を使用して確率推定値を更新し得る。たとえば、エントロピー符号化ユニット５６は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して符号化されるブロックの走査順序情報を符号化し得る。
【０１１５】
この例では、エントロピー符号化ユニット５６は、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を識別する情報、すなわち、ブロックの最後有効係数位置情報を符号化するようにさらに構成され得る。たとえば、ブロックの最後有効係数位置情報は、前に説明したように、最後有効係数フラグのシーケンスを使用して表され得る。さらに、エントロピー符号化ユニット５６は、ブロック内のすべての他の有効係数の位置を識別する情報、すなわち、ブロックの有効係数位置情報を符号化するようにさらに構成され得る。たとえば、ブロックの有効係数位置情報は、前に説明したように、同じく有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー符号化ユニット５６は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってそれぞれのシーケンスの各フラグを符号化することによって最後有効係数位置情報と有効係数位置情報とを符号化し得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１１６】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー符号化ユニット５６は、ビデオデータの前に符号化されたブロックのための対応する最後有効係数フラグと有効係数フラグとの値を使用して確率推定値を判断し得る。他の例では、エントロピー符号化ユニット５６はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー符号化ユニット５６は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して符号化されるブロックについての最後有効係数位置情報と有効係数位置情報とを符号化し得る。他の例では、エントロピー符号化ユニット５６は、他の技法を使用してブロックの最後有効係数位置情報と有効係数位置情報とを符号化し得ることに留意されたい。
【０１１７】
いずれの場合も、上記で説明した方法で、ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報、すなわち、ＳＭデータを符号化した後に、エントロピー符号化ユニット５６はまた、ブロック内の各有効係数の値（たとえば、それぞれシンタックス要素「coeff_abs_level_minus1」および「coeff_sign_flag」によって示される、各有効係数の絶対値および符号）を符号化し得る。
【０１１８】
したがって、本開示の技法により、エントロピー符号化ユニット５６は、他の方法を使用したときよりも効率的にブロックの走査順序情報を符号化することが可能になり得る。このようにして、本開示の技法を使用すると、走査順序情報を含むコード化ビットストリームについての相対的なビット節約があり得る。
【０１１９】
逆量子化ユニット５８および逆変換モジュール６０は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックをメモリ６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、メモリ６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【０１２０】
このように、ビデオエンコーダ２０は、ビデオデータのブロックに関連する走査順序を識別する情報をコーディングするように構成されたビデオコーダの一例を表し、ブロックに関連する走査順序を識別する情報をコーディングするために、ビデオコーダは、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを行うように構成される。
【０１２１】
図３は、本開示の技法に一致する、ビデオデータのブロックについての符号化された走査順序情報を効率的に復号するために最確走査順序を使用するための技法を実装し得るビデオデコーダ３０の一例を示すブロック図である。図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２と、イントラ予測モジュール７４と、逆量子化ユニット７６と、逆変換モジュール７８と、メモリ８２と、加算器８０とを含む。ビデオデコーダ３０は、いくつかの例では、ビデオエンコーダ２０（図２）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルに基づいて予測データを生成し得る。
【０１２２】
いくつかの例では、ビデオデコーダ３０は、ビデオエンコーダ２０から符号化ビデオデータ（たとえば、１つまたは複数のマクロブロック、またはＣＵのＴＵ）を受信するように構成され得る。本開示の技法によれば、一例として、エントロピー復号ユニット７０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を復号するように構成され得る。たとえば、エントロピー復号ユニット７０は、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を復号することとを行うように構成され得る。この例では、ブロックに関連する走査順序と、最確走査順序との各々は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。この場合も、ジグザグ走査順序、水平走査順序、および垂直走査順序は例にすぎず、本開示の技法に一致する他の走査順序も定義または使用され得る。
【０１２３】
ブロックのための最確走査順序を判断するために、エントロピー復号ユニット７０は、図６Ａ〜図６Ｂを参照しながら以下でより詳細に説明するように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断するように構成され得る。
【０１２４】
さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を復号するために、エントロピー復号ユニット７０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【０１２５】
さらに、指示は単一のビンを備え得る。たとえば、エントロピー復号ユニット７０は、符号化された走査順序データを受信し、その走査順序データを復号して、走査順序が最確走査順序であるか（たとえば、ｂｉｎ＝「０」）そうでないか（たとえば、ｂｉｎ＝「１」）をビンが示すようにビンを判断し得る。
【０１２６】
別の例では、ブロックの走査順序情報を復号するために、エントロピー復号ユニット７０は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する走査順序の指示を復号するようにさらに構成され得る。
【０１２７】
この例では、ブロックに関連する走査順序の指示を復号するために、エントロピー復号ユニット７０は、この場合も、エントロピー復号ユニット７０が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【０１２８】
さらに、ブロックに関連する走査順序の指示はまた、単一のビンを備え得る。たとえば、エントロピー復号ユニット７０は、追加の符号化された走査順序データを受信し、その追加の走査順序データを復号して、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）をビンが示すようにビンを判断するように構成され得る。この例では、第１の走査順序および第２の走査順序は、ビデオエンコーダ２０とビデオデコーダ３０とを備える対応するコーディングシステム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー復号ユニット７０は、他の技法を使用して、たとえば、複数のビンを判断するために追加の走査順序データを復号して、ブロックに関連する走査順序の指示を復号するように構成され得る。
【０１２９】
したがって、この例では、エントロピー復号ユニット７０は、ブロックに関連する走査順序が最確走査順序であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示を復号することによってブロックの走査順序情報を復号するように構成され得る。
【０１３０】
別の例では、ブロックの走査順序情報を復号するために、エントロピー復号ユニット７０は、ブロックに関連する走査順序が最確走査順序でない場合、ブロックに関連する係数を復号するためにジグザグ走査順序を使用するようにさらに構成され得る。したがって、この例では、ブロックのための最確走査順序を判断し、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を復号した後に、エントロピー復号ユニット７０は、ブロックについての追加の走査順序情報を復号しないように構成され得る。
【０１３１】
さらに別の例では、ブロックのための最確走査順序を判断するために、エントロピー復号ユニット７０は、ブロックのための最確走査順序にジグザグ走査順序を指定するように構成され得る。この例では、上記で説明したのと同様の方法で、ブロックの走査順序情報を復号するために、エントロピー復号ユニット７０は、ブロックに関連する走査順序が最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）でない場合、ブロックに関連する走査順序の指示を復号するようにさらに構成され得る。言い換えれば、この例では、エントロピー復号ユニット７０は、たとえば、前に復号されたブロックの走査順序情報を使用して、ブロックのための最確走査順序の実際の判断を実行するのではなく、ジグザグ走査順序がブロックのための最確走査順序であると仮定するように構成され得る。
【０１３２】
この例では、ブロックに関連する走査順序の指示を復号するために、エントロピー復号ユニット７０は、この場合も、エントロピー復号ユニット７０が少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するように構成され得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。
【０１３３】
ブロックに関連する走査順序の指示は、この場合も、単一のビンを備え得る。たとえば、エントロピー復号ユニット７０は、追加の符号化された走査順序データを受信し、その追加の走査順序データを復号して、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）をビンが示すようにビンを判断し得る。この例では、第１の走査順序および第２の走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー復号ユニット７０は、他の技法を使用して、たとえば、複数のビンを判断するために追加の走査順序データを復号して、ブロックに関連する走査順序の指示を復号し得る。
【０１３４】
したがって、この例では、エントロピー復号ユニット７０は、ブロックに関連する走査順序が最確走査順序（すなわち、この特定の例では、ジグザグ走査順序）であるかどうかの指示、および、場合によっては、ブロックに関連する走査順序の指示を復号することによってブロックの走査順序情報を復号するように構成され得る。
【０１３５】
上記で説明したコンテキスト適応型エントロピーコーディングプロセスを使用して各ビン（すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とを表すために使用される各ビン）を復号するために、対応するコンテキストモデルは、ビンが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。エントロピー復号ユニット７０は、コンテキスト適応型エントロピーコーディングプロセスを実行することによってビンを復号するためにビンのための確率推定値を使用し得る。いくつかの例では、エントロピー復号ユニット７０は、ビデオデータの前に復号されたブロック、たとえば、現在復号されているブロックと同じ関連する予測モードおよびサイズをもつブロックのための対応するビンの値を使用して確率推定値を判断し得る。他の例では、エントロピー復号ユニット７０はまた、ビンが所与の値を備える確率を反映するためにビンの値を使用して確率推定値を更新し得る。たとえば、エントロピー復号ユニット７０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して復号されるブロックの走査順序情報を復号し得る。
【０１３６】
この例では、エントロピー復号ユニット７０は、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を識別する情報、すなわち、ブロックの最後有効係数位置情報を復号するようにさらに構成され得る。たとえば、ブロックの最後有効係数位置情報は、前に説明したように、最後有効係数フラグのシーケンスを使用して表され得る。さらに、エントロピー復号ユニット７０は、ブロック内のすべての他の有効係数の位置を識別する情報、すなわち、ブロックの有効係数位置情報を復号するようにさらに構成され得る。たとえば、ブロックの有効係数位置情報は、前に説明したように、同じく有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー復号ユニット７０は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってそれぞれのシーケンスの各フラグを復号することによって最後有効係数位置情報と有効係数位置情報とを復号し得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１３７】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー復号ユニット７０は、ビデオデータの前に復号されたブロックのための対応する最後有効係数フラグと有効係数フラグとの値を使用して確率推定値を判断し得る。他の例では、エントロピー復号ユニット７０はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー復号ユニット７０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して復号されるブロックについての最後有効係数位置情報と有効係数位置情報とを復号し得る。他の例では、エントロピー復号ユニット７０は、他の技法を使用してブロックの最後有効係数位置情報と有効係数位置情報とを復号し得ることに留意されたい。
【０１３８】
いずれの場合も、上記で説明した方法で、ブロックについての走査順序情報、ならびに最後有効係数位置情報および有効係数位置情報、すなわち、ＳＭデータを復号した後に、エントロピー復号ユニット７０はまた、ブロック内の各有効係数の値（たとえば、それぞれシンタックス要素「coeff_abs_level_minus1」および「coeff_sign_flag」によって示される、各有効係数の絶対値および符号）を復号し得る。
【０１３９】
したがって、本開示の技法により、エントロピー復号ユニット７０は、他の方法を使用したときよりも効率的にブロックの走査順序情報を復号することが可能になり得る。このようにして、本開示の技法を使用すると、走査順序情報を含むコード化ビットストリームについての相対的なビット節約があり得る。
【０１４０】
動き補償ユニット７２は、ビットストリーム中で受信された動きベクトルを使用して、メモリ８２中の参照フレーム中の予測ブロックを識別し得る。イントラ予測モジュール７４は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。
【０１４１】
イントラ予測モジュール７４は、たとえば、隣接する、前に復号されたブロックのピクセルを使用して、符号化されたブロックをイントラ予測するために、符号化されたブロックのイントラ予測モードの指示を使用し得る。ブロックがインター予測モード符号化される例では、動き補償ユニット７２は、符号化されたブロックについての動き補償予測データを取り出すために、動きベクトルを定義する情報を受信し得る。いずれの場合も、動き補償ユニット７２またはイントラ予測モジュール７４は、予測ブロックを定義する情報を加算器８０に供給し得る。
【０１４２】
逆量子化ユニット７６は、ビットストリーム中で与えられ、エントロピー復号ユニット７０によって復号された量子化ブロック係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、たとえば、Ｈ．２６４復号規格によって定義される、またはＨＥＶＣテストモデルによって実行されるなど、従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を判断するための、各ブロックについてビデオエンコーダ２０によって計算される量子化パラメータＱＰYの使用を含み得る。
【０１４３】
逆変換モジュール７８は、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。動き補償ユニット７２は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット７２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
【０１４４】
動き補償ユニット７２は、符号化ブロックのためのシンタックス情報のいくつかを使用して、符号化ビデオシーケンスの（１つまたは複数の）フレームを符号化するために使用されるブロックのサイズと、符号化ビデオシーケンスのフレームまたはスライスの各ブロックがどのように区分されるかを記述するパーティション情報と、各パーティションがどのように符号化されるかを示すモードと、各インター符号化ブロックまたはパーティションのための１つまたは複数の参照フレーム（および参照フレームリスト）と、符号化ビデオシーケンスを復号するための他の情報とを判断する。イントラ予測モジュール７４はまた、たとえば、上記で説明したように、隣接する、前に復号されたブロックのピクセルを使用して、符号化ブロックをイントラ予測するために、符号化ブロックのシンタックス情報を使用し得る。
【０１４５】
加算器８０は、残差ブロックを、動き補償ユニット７２またはイントラ予測モジュール７４によって生成された対応する予測ブロックと合計して、復号ブロックを形成する。必要に応じて、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して復号ブロックをフィルタ処理し得る。復号ビデオブロックは、次いで、メモリ８２に記憶され、メモリ８２は、参照ブロックを後続の動き補償に供給し、また、（図１のディスプレイデバイス３２などの）ディスプレイデバイス上での提示のために復号ビデオを生成する。
【０１４６】
このように、ビデオデコーダ３０は、ビデオデータのブロックに関連する走査順序を識別する情報をコーディングするように構成されたビデオコーダの一例を表し、ブロックに関連する走査順序を識別する情報をコーディングするために、ビデオコーダは、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを行うように構成される。
【０１４７】
図４Ａ〜図４Ｃは、ビデオデータのブロックと、対応する有効係数位置情報および最後有効係数位置情報との一例を示す概念図である。図４Ａに示すように、ビデオデータのブロック、たとえば、マクロブロック、またはＣＵのＴＵは、量子化変換係数を含み得る。たとえば、図４Ａに示すように、ブロック４００は、前に説明した予測、変換、および量子化技法を使用して生成される量子化変換係数を含み得る。この例では、ブロック４００は２Ｎ×２Ｎのサイズを有し、Ｎは２に等しいと仮定する。したがって、同じく図４Ａに示すように、ブロック４００は４×４のサイズを有し、１６個の量子化変換係数を含む。さらに、ブロック４００に関連する走査順序は、下記でより詳細に説明する図５Ａに示すようにジグザグ走査順序であると仮定する。
【０１４８】
この例では、ジグザグ走査順序に従うブロック４００内の最後有効係数は、ブロック４００内の位置４０６に位置する「１」に等しい量子化変換係数である。他の例では、上記で説明したように、ブロックは、ブロック４００のサイズよりも小さいかまたは大きいサイズを有し得、ブロック４００よりも多いかまたは少ない量子化変換係数を含み得る。さらに他の例では、ブロック４００に関連する走査順序は異なる走査順序、たとえば、水平走査順序、垂直走査順序、対角走査順序、または別の走査順序であり得る。
【０１４９】
図４Ｂは、有効係数フラグデータ、すなわち、前に説明したようにマップまたはブロック形式で表される有効係数フラグの一例を示す。図４Ｂの例では、ブロック４０２は、図４Ａに示すブロック４００に対応し得る。言い換えれば、ブロック４０２の有効係数フラグは、ブロック４００の量子化変換係数に対応し得る。図４Ｂに示すように、ブロック４０２の「１」に等しい有効係数フラグは、ブロック４００の有効係数に対応する。同様に、ブロック４０２の「０」に等しい有効係数フラグは、ブロック４００のゼロまたは非有効係数に対応する。
【０１５０】
この例では、ジグザグ走査順序に従うブロック４００内の最後有効係数に対応するブロック４０２の有効係数フラグは、ブロック４０２内の位置４０８に位置する「１」に等しい有効係数フラグである。他の例では、有効係数または非有効係数を示すために使用される有効係数フラグの値は異なり得る（たとえば、「０」に等しい有効係数フラグが有効係数に対応し得、「１」に等しい有効係数フラグが非有効係数に対応し得る）。
【０１５１】
図４Ｃは、最後有効係数フラグデータ、すなわち、同じく前に説明したようにマップまたはブロック形式で表される最後有効係数フラグの一例を示す。図４Ｃの例では、ブロック４０４は、それぞれ図４Ａおよび図４Ｂに示すブロック４００およびブロック４０２に対応し得る。言い換えれば、ブロック４０４の最後有効係数フラグは、ブロック４００の量子化変換係数と、ブロック４０２の有効係数フラグとに対応し得る。
【０１５２】
図４Ｃに示すように、ブロック４０４内の位置４１０に位置するブロック４０４の「１」に等しい最後有効係数フラグは、ジグザグ走査順序に従う、ブロック４００の最後有効係数と、ブロック４０２の「１」に等しい有効係数フラグのうちの最後のものとに対応する。同様に、ブロック４０４の「０」に等しい最後有効係数フラグ（すなわち、すべての残りの最後有効係数フラグ）は、ブロック４００のゼロまたは非有効係数と、ブロック４０２の「１」に等しいすべての有効係数フラグの、ジグザグ走査順序に従うそのような有効係数フラグの最後のもの以外のものとに対応する。
【０１５３】
走査順序に従う最後有効係数を示すために使用される最後有効係数フラグの値は異なり得る（たとえば、「０」に等しい最後有効係数フラグが、走査順序に従う最後有効係数に対応し得、「１」に等しい最後有効係数フラグがすべての残りの係数に対応し得る）。いずれの場合も、ブロック４０２の有効係数フラグと、ブロック４０４の最後有効係数フラグとは、ブロック４００のＳＭデータと総称されることがある。
【０１５４】
上記で説明したように、ビデオデータのブロックについての有効係数位置情報は、ブロックに関連する走査順序を使用して、ブロックの有効係数フラグを、図４Ｂに示すブロック４０２に示されるような２次元ブロック表現から１次元アレイに直列化することによって示され得る。図４Ａ〜図４Ｂに示すブロック４００〜４０２の例では、再びジグザグ走査順序を仮定すると、ブロック４００の有効係数位置情報は、ブロック４０２の有効係数フラグを１次元アレイに直列化することによって示され得る。すなわち、ブロック４００の有効係数位置情報は、ジグザグ走査順序に従ってブロック４０２の有効係数フラグのシーケンスを生成することによって示され得る。
【０１５５】
この例では、生成されるシーケンスは、ジグザグ走査順序に従うブロック４０２の最初の６つの有効係数フラグを表す値「１１１１１１」に対応し得る。生成されるシーケンスは、ジグザグ走査順序における最初のブロック位置（すなわち、ＤＣ位置）から開始して、ジグザグ走査順序に従うブロック４００の最後有効係数に対応する（すなわち、ブロック４０４の「１」に等しい最後有効係数フラグに対応する）ブロック位置で終わる、ブロック４００内のブロック位置の範囲に対応する有効係数フラグを含んでいることがあることに留意されたい。
【０１５６】
同じく上記で説明したように、ブロックの最後有効係数位置情報は、ブロックに関連する走査順序を使用して、ブロックの最後有効係数フラグを、図４Ｃに示すブロック４０４に示されるような２次元ブロック表現から１次元アレイに直列化することによって示され得る。図４Ａ〜図４Ｃに示すブロック４００〜４０４の例では、再びジグザグ走査順序を仮定すると、ブロック４００の最後有効係数位置情報は、ブロック４０４の最後有効係数フラグを１次元アレイに直列化することによって示され得る。すなわち、ブロック４００の最後有効係数位置情報は、ジグザグ走査順序に従ってブロック４０４の最後有効係数フラグのシーケンスを生成することによって示され得る。この例では、生成されるシーケンスは、ジグザグ走査順序に従うブロック４０４の最初の６つの最後有効係数フラグを表す値「０００００１」に対応し得る。
【０１５７】
この場合も、生成されるシーケンスは、ジグザグ走査順序における最初のブロック位置から開始して、ジグザグ走査順序に従うブロック４００の最後有効係数に対応する（すなわち、ブロック４０４の「１」に等しい最後有効係数フラグに対応する）ブロック位置で終わる、ブロック４００内のブロック位置の範囲に対応する最後有効係数フラグを含んでいることがあることに留意されたい。したがって、この例では、ジグザグ走査順序に従う「１」に等しい最後有効係数フラグに続く最後有効係数フラグは、シーケンス中に含まれない。概して、ビデオデータのブロックに関連する走査順序に従う「１」に等しい最後有効係数フラグに続く最後有効係数フラグは、ブロックの最後有効係数位置情報を示すことを必要とされないことがあり得る。したがって、いくつかの例では、これらのフラグは、この情報を指示するために使用される最後有効係数フラグの生成されるシーケンスから省略される。
【０１５８】
上記で説明したように、最後有効係数が走査順序に従う最後のブロック位置（たとえば、右下のブロック位置）内に位置する場合には、最後のブロック位置はブロックの最後有効係数を含んでいると推測され得るので、生成されるシーケンスはその位置に対応する最後有効係数フラグを含まないことがあることにも留意されたい。したがって、この例では、生成されるシーケンスは、「０００００００００００００００」の値に対応し得、最後のブロック位置に対応する最後有効係数フラグはこのシーケンス中に含まれておらず、「１」に等しいと推測される。
【０１５９】
図５Ａ〜図５Ｃは、それぞれジグザグ走査順序、水平走査順序、および垂直走査順序を使用して走査されるビデオデータのブロックの例を示す概念図である。図５Ａ〜図５Ｃに示すように、ビデオデータの８×８ブロック、たとえば、マクロブロック、またはＣＵのＴＵは、円を用いて示されている、対応するブロック位置中の６４個の量子化変換係数を含み得る。たとえば、ブロック５００〜５０４はそれぞれ、この場合も、前に説明した予測、変換、および量子化技法を使用して生成される６４個の量子化変換係数を含み得、各対応するブロック位置が円を用いて示されている。この例では、ブロック５００〜５０４は２Ｎ×２Ｎのサイズを有し、Ｎは４に等しいと仮定する。したがって、ブロック５００〜５０４は８×８のサイズを有する。
【０１６０】
図５Ａに示すように、ブロック５００に関連する走査順序はジグザグ走査順序である。ジグザグ走査順序は、ブロック５００の量子化変換係数を、図５Ａの矢印によって示されるように対角様式で走査する。同様に、図５Ｂおよび図５Ｃに示すように、ブロック５０２および５０４に関連する走査順序は、それぞれ水平走査順序および垂直走査順序である。同じく図５Ｂおよび図５Ｃの矢印によって示されるように、水平走査順序は、ブロック５０２の量子化変換係数を、水平線ごとに、または「ラスタ」様式で走査し、一方、垂直走査順序は、ブロック５０４の量子化変換係数を、垂直線ごとに、または「回転ラスタ」様式で走査する。
【０１６１】
他の例では、上記で説明したように、ブロックは、ブロック５００〜５０４のサイズよりも小さいかまたは大きいサイズを有し得、より多いまたはより少ない量子化変換係数および対応するブロック位置を含み得る。これらの例では、ブロックに関連する走査順序は、ブロックの量子化変換係数を、図５Ａ〜図５Ｃの８×８ブロック５００〜５０４の例において示したのと実質的に同様の方法で走査し得、たとえば、４×４ブロック、または１６×１６ブロックが、前に説明した走査順序のいずれかに従って走査され得る。
【０１６２】
前に説明したように、本開示の技法は、対角走査順序と、ジグザグ、水平、垂直、および／または対角走査順序の組合せである走査順序と、部分的にジグザグ、部分的に水平、部分的に垂直、および／または部分的に対角である走査順序とを含む、多種多様な他の走査順序に対しても適用され得る。
【０１６３】
図６Ａ〜図６Ｂは、本開示の技法に一致する、様々なサイズを有するブロックビデオデータの例と、予測データを生成するために様々な予測モードが使用されるビデオデータのブロックの例とを示す概念図である。図６Ａに示すように、ブロック６００、たとえば、ビデオデータのマクロブロック、またはＣＵのＴＵは、特定のサイズを有し得る。この例では、ブロック６００のサイズが２Ｎ×２Ｎであり、Ｎは３２に等しいと仮定する。したがって、ブロック６００は６４×６４のサイズを有する。さらに、ブロック６００は、図１を参照しながら前に説明したように、同じく図６Ａに示されているブロック６０２〜６０８を含む、より小さいブロックに再帰的に区分または分割されると仮定する。たとえば、ブロック６０２は３２×３２のサイズを有し、ブロック６０４は１６×１６のサイズを有し、ブロック６０６は８×８のサイズを有し、ブロック６０８は４×４のサイズを有すると仮定する。他の例では、ブロック６００は、ブロック６０２〜６０８よりも多いかまたは少ないより小さいブロックに区分され得る。さらに他の例では、ブロック６００およびそれの任意のパーティションは、ブロック６００〜６０８のサイズとは異なるサイズを有し得る。
【０１６４】
図６Ｂに示すように、ブロック６１０Ａ〜６１０Ｉはそれぞれ、様々な予測モードのうちの１つを使用してコーディングされ得る。図６Ｂの様々な図は、様々な図に示す方向性矢印に従って隣接ピクセルデータから予測データが取得または導出され得る、様々な方向性予測モードを示している。ＤＣモード、平面モード、または他の方向性予測モードなど、他のイントラ予測モードも使用されることができる。場合によっては、３３個の異なるイントラ予測モードがサポートされ得る。いずれの場合も、図６Ｂに示すように、ブロック６１０Ａ〜６１０Ｉの各々は、ブロック６１０Ａ〜６１０Ｉの各々について示されているように一意のイントラ予測モードを使用してコーディングされ得、それぞれのブロックのピクセルを予測するためにビデオデータの隣接ブロックのピクセルが使用される。他の例では、ブロック６１０Ａ〜６１０Ｉは、図６Ｂに示されていない他の予測モードを使用してコーディングされ得る。
【０１６５】
したがって、本開示の技法によれば、図６Ａに示すブロック６００〜６０８に関連するブロックサイズと、図６Ｂに示すブロック６１０Ａ〜６１０Ｉに関連する予測モードとのうちの少なくとも１つがそれぞれ、前に説明したように、ブロック６００〜６０８および６１０Ａ〜６１０Ｉのうちの特定の１つについての走査順序情報をコーディングするためにコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行するときにコンテキストとして使用され得る。
【０１６６】
図７は、本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用するための例示的な方法を示すフローチャートである。図７の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図７の技法について、ビデオエンコーダ２０（図１および図２）および／またはビデオデコーダ３０（図１および図３）に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図７に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
【０１６７】
初めに、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０が、ビデオデータのブロックに関連する走査順序に従うブロック内の最後有効係数の位置を示す情報、すなわち、ブロックの最後有効係数位置情報をコーディングする（７００）。たとえば、ブロックは、前に説明したように、マクロブロック、またはＣＵのＴＵであり得る。さらに、ブロックに関連する走査順序は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。このようにして、図７の例示的な方法は、ビデオデータのブロックをコーディングするために複数の走査順序を使用する任意のコーディングシステムに適用可能であり得る。
【０１６８】
いくつかの例では、ブロックの最後有効係数位置情報は、前に説明したように、最後有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってシーケンスの各最後有効係数フラグをコーディングすることによって最後有効係数位置情報をコーディングし得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１６９】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータの前にコーディングされたブロックの対応する最後有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続してコーディングされるブロックの最後有効係数位置情報をコーディングし得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、他の技法を使用してブロックの最後有効係数位置情報をコーディングし得ることに留意されたい。
【０１７０】
ビデオエンコーダ２０および／またはビデオデコーダ３０は、さらに、ブロックのための最確走査順序を判断する（７０２）。たとえば、ブロックのための最確走査順序を判断するために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、図６Ａ〜図６Ｂを参照しながら前に説明したように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断し得る。一例として、ビデオエンコーダ２０および／またはビデオデコーダ３０は、前にコーディングされたブロック、たとえば、現在コーディングされているブロックと同じ関連する予測モードおよびサイズをもつブロックの走査順序情報を使用してこの判断を行い得る。最確走査順序はまた、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。
【０１７１】
ビデオエンコーダ２０および／またはビデオデコーダ３０は、さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングする（７０４）。たとえば、ビデオエンコーダ２０は、図８の例示的な方法においてより詳細に説明するようにこの指示を符号化し得、ビデオデコーダ３０は、図９の例示的な方法においてより詳細に説明するようにこの指示を復号し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示をコーディングし得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。指示は単一ビットまたは「ビン」を備え得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、走査順序が最確走査順序であるか（たとえば、ｂｉｎ＝「０」）そうでないか（たとえば、ｂｉｎ＝「１」）を示すようにビンをコーディングし得る。
【０１７２】
ブロックに関連する走査順序が最確走査順序である場合（７０６）、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報をコーディングすることを停止する（７１０）。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素のコーディングに進み得る。
【０１７３】
しかしながら、ブロックに関連する走査順序が最確走査順序でない場合（７０６）、ビデオエンコーダ２０および／またはビデオデコーダ３０は、さらに、ブロックに関連する走査順序の指示をコーディングする（７０８）。この場合も、ビデオエンコーダ２０および／またはビデオデコーダ３０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示をコーディングし得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。ブロックに関連する走査順序の指示はまた、単一のビンを備え得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）を示すようにビンをコーディングし得る。この例では、第１の走査順序および第２の走査順序は、ビデオエンコーダ２０とビデオデコーダ３０とを備える対応するコーディングシステム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、他の技法を使用して、たとえば、複数のビンを使用して、ブロックに関連する走査順序の指示をコーディングし得る。
【０１７４】
上記で説明したコンテキスト適応型エントロピーコーディングプロセスを使用して各ビン（すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とを表すために使用される各ビン）をコーディングするために、対応するコンテキストモデルは、ビンが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、コンテキスト適応型エントロピーコーディングプロセスを実行することによってビンをコーディングするためにビンのための確率推定値を使用し得る。いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータの前にコーディングされたブロック、たとえば、現在コーディングされているブロックと同じ関連する予測モードおよびサイズをもつブロックのための対応するビンの値を使用して確率推定値を判断し得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、ビンが所与の値を備える確率を反映するためにビンの値を使用して確率推定値を更新し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続してコーディングされるブロックの走査順序情報をコーディングし得る。
【０１７５】
いずれの場合も、ブロックに関連する走査順序の指示をコーディングした後に（７０８）、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報をコーディングすることを停止する（７１０）。この場合も、たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素のコーディングに進み得る。
【０１７６】
いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、さらに、ブロック内のすべての他の有効係数の位置を示す情報、すなわち、ブロックの有効係数位置情報をコーディングする（７１２）。たとえば、ブロックの有効係数位置情報は、前に説明したように、有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってシーケンスの各有効係数フラグをコーディングすることによって有効係数位置情報をコーディングし得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１７７】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータの前にコーディングされたブロックの対応する有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続してコーディングされるブロックの有効係数位置情報をコーディングし得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、他の技法を使用してブロックの有効係数位置情報をコーディングし得ることに留意されたい。
【０１７８】
このように、図７の方法は、ビデオデータのブロックに関連する走査順序を識別する情報をコーディングする方法であって、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを含む、方法の一例を表す。
【０１７９】
図８は、本開示の技法に一致する、ビデオデータのブロックについての走査順序情報を効率的に符号化するために最確走査順序を使用するための例示的な方法を示すフローチャートである。図８の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図８の技法について、エントロピー符号化ユニット５６（図２）に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図８に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
【０１８０】
最初に、エントロピー符号化ユニット５６が、ビデオデータのブロックを受信し得る（８００）。たとえば、ブロックは、前に説明したように、マクロブロック、またはＣＵのＴＵであり得る。いくつかの例では、エントロピー符号化ユニット５６は、さらに、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を示す情報、すなわち、ブロックの最後有効係数位置情報を符号化する（８０２）。たとえば、ブロックに関連する走査順序は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。このようにして、図８の例示的な方法は、ビデオデータのブロックをコーディングするために複数の走査順序を使用する任意のコーディングシステムに適用可能であり得る。
【０１８１】
いくつかの例では、ブロックの最後有効係数位置情報は、前に説明したように、最後有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー符号化ユニット５６は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってシーケンスの各最後有効係数フラグを符号化することによって最後有効係数位置情報を符号化し得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１８２】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー符号化ユニット５６は、ビデオデータの前に符号化されたブロックのための対応する最後有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、エントロピー符号化ユニット５６はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー符号化ユニット５６は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して符号化されるブロックの最後有効係数位置情報を符号化し得る。他の例では、エントロピー符号化ユニット５６は、他の技法を使用してブロックの最後有効係数位置情報を符号化し得ることに留意されたい。
【０１８３】
エントロピー符号化ユニット５６は、さらに、ブロックのための最確走査順序を判断する（８０４）。たとえば、ブロックのための最確走査順序を判断するために、エントロピー符号化ユニット５６は、図６Ａ〜図６Ｂを参照しながら前に説明したように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断し得る。一例として、エントロピー符号化ユニット５６は、前に符号化されたブロック、たとえば、現在符号化されているブロックと同じ関連する予測モードおよびサイズをもつブロックの走査順序情報を使用してこの判断を行い得る。最確走査順序はまた、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。
【０１８４】
エントロピー符号化ユニット５６は、さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を符号化する（８０６）。エントロピー符号化ユニット５６は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示を符号化し得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。指示は単一のビンを備え得る。たとえば、エントロピー符号化ユニット５６は、走査順序が最確走査順序であるか（たとえば、ｂｉｎ＝「０」）そうでないか（たとえば、ｂｉｎ＝「１」）を示すようにビンを符号化し得る。
【０１８５】
ブロックに関連する走査順序が最確走査順序である場合（８０８）、エントロピー符号化ユニット５６は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を符号化することを停止する（８１６）。たとえば、エントロピー符号化ユニット５６は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素の符号化に進み得る。
【０１８６】
しかしながら、ブロックに関連する走査順序が最確走査順序でない場合（８０８）、エントロピー符号化ユニット５６は、さらに、ブロックに関連する走査順序の指示を符号化する（８１０）。この場合も、エントロピー符号化ユニット５６は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示をコーディングし得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。ブロックに関連する走査順序の指示はまた、単一のビンを備え得る。たとえば、エントロピー符号化ユニット５６は、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）を示すようにビンを符号化し得、第１の走査順序および第２の走査順序は、ビデオエンコーダ２０とビデオデコーダ３０とを備える対応するコーディングシステム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の走査順序を備える。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー符号化ユニット５６は、他の技法を使用して、たとえば、複数のビンを使用して、ブロックに関連する走査順序の指示を符号化し得る。
【０１８７】
上記で説明したコンテキスト適応型エントロピーコーディングプロセスを使用して各ビン（すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とを表すために使用される各ビン）を符号化するために、対応するコンテキストモデルは、ビンが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。エントロピー符号化ユニット５６は、コンテキスト適応型エントロピーコーディングプロセスを実行することによってビンを符号化するためにビンのための確率推定値を使用し得る。いくつかの例では、エントロピー符号化ユニット５６は、ビデオデータの前に符号化されたブロック、たとえば、現在コーディングされているブロックと同じ関連する予測モードおよびサイズをもつブロックのための対応するビンの値を使用して確率推定値を判断し得る。他の例では、エントロピー符号化ユニット５６はまた、ビンが所与の値を備える確率を反映するためにビンの値を使用して確率推定値を更新し得る。たとえば、エントロピー符号化ユニット５６は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して符号化されるブロックの走査順序情報を符号化し得る。
【０１８８】
いずれの場合も、ブロックに関連する走査順序の指示を符号化した後に（８１０）、エントロピー符号化ユニット５６は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を符号化することを停止する（８１２）。この場合も、たとえば、エントロピー符号化ユニット５６は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素の符号化に進み得る。
【０１８９】
いくつかの例では、エントロピー符号化ユニット５６は、さらに、ブロック内のすべての他の有効係数の位置を示す情報、すなわち、ブロックの有効係数位置情報を符号化する（８１４）。たとえば、ブロックの有効係数位置情報は、前に説明したように、有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー符号化ユニット５６は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによってシーケンスの各有効係数フラグを符号化することによって有効係数位置情報を符号化し得る。たとえば、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１９０】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー符号化ユニット５６は、ビデオデータの前に符号化されたブロックのための対応する有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、エントロピー符号化ユニット５６はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー符号化ユニット５６は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して符号化されるブロックの有効係数位置情報を符号化し得る。他の例では、エントロピー符号化ユニット５６は、他の技法を使用してブロックの有効係数位置情報を符号化し得ることに留意されたい。
【０１９１】
最後に、エントロピー符号化ユニット５６は、ブロックを符号化することを停止する（８１６）。たとえば、エントロピー符号化ユニット５６は、上記で説明したように、他のコーディングタスク、たとえば、後続のブロックの符号化に進み得る。
【０１９２】
このように、図８の方法は、ビデオデータのブロックに関連する走査順序を識別する情報を符号化する方法であって、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示をコーディングすることとを含む、方法の一例を表す。
【０１９３】
図９は、本開示の技法に一致する、ビデオデータのブロックについての符号化された走査順序情報を効率的に復号するために最確走査順序を使用するための例示的な方法を示すフローチャートである。図９の技法は、概して、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せのいずれで実装されるかにかかわらず、任意の処理ユニットまたはプロセッサによって実行され得、ソフトウェアまたはファームウェアで実装されるとき、ソフトウェアまたはファームウェアのための命令を実行するために、対応するハードウェアが提供され得る。例として、図９の技法について、エントロピー復号ユニット７０（図３）に関して説明するが、他のデバイスが同様の技法を実行するように構成され得ることを理解されたい。その上、図９に示すステップは、異なる順序でまたは並列に実行され得、本開示の技法から逸脱することなく、追加のステップが追加され、いくつかのステップが省略され得る。
【０１９４】
初めに、エントロピー復号ユニット７０は、ビデオデータのブロックについての符号化された有効性データを受信する（９００）。たとえば、ブロックは、前に説明したように、マクロブロック、またはＣＵのＴＵであり得る。エントロピー復号ユニット７０は、さらに、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を示す情報、すなわち、ブロックの最後有効係数位置情報を判断するために有効性データを復号する（９０２）。たとえば、ブロックに関連する走査順序は、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。このようにして、図９の例示的な方法は、ビデオデータのブロックをコーディングするために複数の走査順序を使用する任意のコーディングシステムに適用可能であり得る。
【０１９５】
いくつかの例では、ブロックの最後有効係数位置情報は、前に説明したように、最後有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー復号ユニット７０は、シーケンスの各最後有効係数フラグを生成するために有効性データを復号することによって最後有効係数位置情報を判断するために有効性データを復号し得る。たとえば、エントロピー復号ユニット７０は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行し得、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０１９６】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー復号ユニット７０は、ビデオデータの前に復号されたブロックのための対応する最後有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、エントロピー復号ユニット７０はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー復号ユニット７０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して復号されるブロックの最後有効係数位置情報を復号し得る。他の例では、エントロピー復号ユニット７０は、他の技法を使用してブロックの最後有効係数位置情報を復号し得ることに留意されたい。
【０１９７】
エントロピー復号ユニット７０は、さらに、ブロックのための最確走査順序を判断する（９０４）。たとえば、ブロックのための最確走査順序を判断するために、エントロピー復号ユニット７０は、図６Ａ〜図６Ｂを参照しながら前に説明したように、ブロックに関連する予測モードおよびサイズに基づいてブロックのための最確走査順序を判断し得る。一例として、エントロピー復号ユニット７０は、前に復号されたブロック、たとえば、現在復号されているブロックと同じ関連する予測モードおよびサイズをもつブロックの走査順序情報を使用してこの判断を行い得る。最確走査順序はまた、ジグザグ走査順序と、水平走査順序と、垂直走査順序とのうちの１つを備え得る。
【０１９８】
エントロピー復号ユニット７０は、さらに、ブロックについての符号化された走査順序データを受信する（９０６）。エントロピー復号ユニット７０は、さらに、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を判断するために走査順序データを復号する（９０８）。エントロピー復号ユニット７０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示を判断するために走査順序データを復号し得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。指示は単一のビンを備え得る。たとえば、エントロピー復号ユニット７０は、走査順序データを復号して、走査順序が最確走査順序であるか（たとえば、ｂｉｎ＝「０」）そうでないか（たとえば、ｂｉｎ＝「１」）をビンが示すようにビンを判断し得る。
【０１９９】
ブロックに関連する走査順序が最確走査順序である場合（９１０）、エントロピー復号ユニット７０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を復号することを停止する（９１６）。たとえば、エントロピー復号ユニット７０は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素の復号に進み得る。
【０２００】
しかしながら、ブロックに関連する走査順序が最確走査順序でない場合（９１０）、エントロピー復号ユニット７０は、さらに、ブロックについての追加の符号化された走査順序データを受信する（９１２）。エントロピー復号ユニット７０は、さらに、ブロックに関連する走査順序の指示を判断するためにこの追加の走査順序データを復号する（９１４）。この場合も、エントロピー復号ユニット７０は、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行することによって指示を判断するために追加の走査順序データを復号し得る。たとえば、少なくとも１つのコンテキストは、最確走査順序と、ブロックに関連する予測モードと、ブロックに関連するサイズとのうちの１つを含み得る。ブロックに関連する走査順序の指示はまた、単一のビンを備え得る。たとえば、エントロピー復号ユニット７０は、追加の走査順序データを復号して、走査順序が第１の走査順序であるか（たとえば、ｂｉｎ＝「０」）第２の走査順序であるか（たとえば、ｂｉｎ＝「１」）をビンが示すようにビンを判断し得る。この例では、第１の走査順序および第２の走査順序は、ビデオエンコーダ２０とビデオデコーダ３０とを備える対応するコーディングシステム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の走査順序を備え得る。他の例では、ブロックに関連する走査順序は、システム１０内でビデオデータのブロックをコーディングするために同じく使用される、最確走査順序以外の、より多数（たとえば、３つ、４つ、５つ、．．．など）の走査順序のうちの１つを備え得ることに留意されたい。したがって、他の例では、エントロピー復号ユニット７０は、他の技法を使用して、たとえば、複数のビンを使用して、ブロックに関連する走査順序の指示を判断するために追加の走査順序データを復号し得る。
【０２０１】
上記で説明したコンテキスト適応型エントロピーコーディングプロセスを使用して各ビン（すなわち、ブロックに関連する走査順序が最確走査順序であるかどうかの指示と、ブロックに関連する走査順序の指示とを表すために使用される各ビン）を判断するために、対応するコンテキストモデルは、ビンが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。エントロピー復号ユニット７０は、コンテキスト適応型エントロピーコーディングプロセスを実行することによってビンを判断するためにビンのための確率推定値を使用し得る。いくつかの例では、エントロピー復号ユニット７０は、ビデオデータの前に復号されたブロック、たとえば、現在コーディングされているブロックと同じ関連する予測モードおよびサイズをもつブロックのための対応するビンの値を使用して確率推定値を判断し得る。他の例では、エントロピー復号ユニット７０はまた、ビンが所与の値を備える確率を反映するためにビンの値を使用して確率推定値を更新し得る。たとえば、エントロピー復号ユニット７０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して復号されるブロックの走査順序情報を復号し得る。
【０２０２】
いずれの場合も、ブロックに関連する走査順序の指示を判断するために追加の走査順序データを復号した後に（９１４）、エントロピー復号ユニット７０は、ブロックに関連する走査順序を識別する情報、すなわち、ブロックの走査順序情報を復号することを停止する（９１６）。この場合も、たとえば、エントロピー復号ユニット７０は、上記で説明したように、他のコーディングタスク、たとえば、当該のブロックまたは後続のブロックのための他のシンタックス要素の復号に進み得る。
【０２０３】
いくつかの例では、エントロピー復号ユニット７０は、さらに、ブロックについての残りの符号化された有効性データを受信する（９１８）。エントロピー復号ユニット７０は、さらに、ブロック内のすべての他の有効係数の位置を示す情報、すなわち、ブロックの有効係数位置情報を判断するために残りの有効性データを復号する（９２０）。たとえば、ブロックの有効係数位置情報は、前に説明したように、有効係数フラグのシーケンスを使用して表され得る。同じく前に説明したように、エントロピー復号ユニット７０は、シーケンスの各有効係数フラグを生成するために残りの有効性データを復号することによって有効係数位置情報を判断するために残りの有効性データを復号し得る。たとえば、エントロピー復号ユニット７０は、コンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセス（たとえば、ＣＡＢＡＣプロセス）を実行し得、コンテキストは、ブロックに関連する走査順序に従うブロック内のフラグの位置を含み得る。
【０２０４】
これらの例では、コンテキストモデルは、各フラグが所与の値（たとえば、「０」または「１」）を備える確率を示す確率推定値を含み得る。いくつかの例では、エントロピー復号ユニット７０は、ビデオデータの前に復号されたブロックのための対応する有効係数フラグの値を使用して確率推定値を判断し得る。他の例では、エントロピー復号ユニット７０はまた、フラグが所与の値を備える確率を反映するために各フラグの値を使用して確率推定値を更新し得る。たとえば、エントロピー復号ユニット７０は、更新された確率推定値を使用して、上記で説明した方法でビデオデータの後続して復号されるブロックの有効係数位置情報を復号し得る。他の例では、エントロピー復号ユニット７０は、他の技法を使用してブロックの有効係数位置情報を復号し得ることに留意されたい。
【０２０５】
最後に、エントロピー復号ユニット７０は、ブロックを復号することを停止する（９２２）。たとえば、エントロピー復号ユニット７０は、上記で説明したように、他のコーディングタスク、たとえば、後続のブロックの復号に進み得る。
【０２０６】
このように、図９の方法は、ビデオデータのブロックに関連する走査順序を識別する情報を復号する方法であって、ブロックのための最確走査順序を判断することと、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を復号することとを含む、方法の一例を表す。
【０２０７】
したがって、本開示の技法によれば、符号化ビットストリームは、ビデオデータのブロックについての走査順序情報、すなわち、ブロックに関連する係数を備え得る。具体的には、ビデオエンコーダ２０は、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を符号化し得る。いくつかの例では、ブロックに関連する走査順序が最確走査順序でない場合、ビデオエンコーダ２０は、さらに、ブロックに関連する走査順序の指示を符号化し得る。同様に、ビデオデコーダ３０は、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を復号し得る。いくつかの例では、ブロックに関連する走査順序が最確走査順序でない場合、ビデオデコーダ３０は、さらに、ブロックに関連する走査順序の指示を復号し得る。
【０２０８】
したがって、本開示はまた、符号化ビットストリームを含む、その上に記憶されたデータ構造を備えるコンピュータ可読媒体を企図する。コンピュータ可読媒体に記憶された符号化ビットストリームは、特定のフォーマットを使用して符号化されたビデオデータと、１つまたは複数の指示を使用して表される、ビデオデータのブロックに関連する走査順序を識別する符号化情報（すなわち、ブロックの走査順序情報）とを備え得る。ビットストリーム内でブロックの走査順序情報が符号化される特定のフォーマットは、ブロックに関連する走査順序がブロックのための最確走査順序であるかどうかに依存する。より具体的には、ビットストリームは、ブロックに関連する走査順序が最確走査順序であるかどうかの指示を含み得る。いくつかの例では、走査順序が最確走査順序を備えない場合、ビットストリームは、さらに、ブロックに関連する走査順序の指示を含み得る。
【０２０９】
１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２１０】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２１１】
命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０２１２】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０２１３】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
「Ｃ１」
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングする方法であって、前記方法は、
前記ブロックに関連する走査順序を識別する情報をコーディングすることであって、前記ブロックのための最確走査順序を判断することと、前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの指示をコーディングすることとを含む、コーディングすること
を備える、方法。
［Ｃ２］
前記ブロックのための前記最確走査順序を判断することが、前記ブロックに関連する予測モードおよびサイズに基づいて前記ブロックのための最確走査順序を判断することを備える、Ｃ１に記載の方法。
［Ｃ３］
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングすることが、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ１に記載の方法。
［Ｃ４］
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用すること
をさらに備える、Ｃ１に記載の方法。
［Ｃ５］
前記ブロックに関連する前記走査順序を識別する前記情報をコーディングすることは、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記走査順序の指示をコーディングすること
をさらに含む、Ｃ１に記載の方法。
［Ｃ６］
前記ブロックに関連する前記走査順序の前記指示をコーディングすることが、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ５に記載の方法。
［Ｃ７］
前記ブロックのための前記最確走査順序を判断することが、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定することを備える、Ｃ１に記載の方法。
［Ｃ８］
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、Ｃ１に記載の方法。
［Ｃ９］
前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングすることをさらに備える、Ｃ１に記載の方法。
［Ｃ１０］
前記ブロック内の非０係数の位置を識別する情報をコーディングすることをさらに備える、Ｃ１に記載の方法。
［Ｃ１１］
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするための装置であって、前記装置が、
前記ブロックに関連する走査順序を識別する情報をコーディングするように構成されたビデオコーダを備え、前記ブロックに関連する前記走査順序を識別する前記情報をコーディングするために、前記ビデオコーダは、前記ブロックのための最確走査順序を判断することと、前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの指示をコーディングすることとを行うように構成された、装置。
［Ｃ１２］
前記ブロックのための前記最確走査順序を判断するために、前記ビデオコーダが、前記ブロックに関連する予測モードおよびサイズに基づいて前記ブロックのための最確走査順序を判断するように構成された、Ｃ１１に記載の装置。
［Ｃ１３］
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングするために、前記ビデオコーダは、前記ビデオコーダが少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するように構成され、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ１１に記載の装置。
［Ｃ１４］
前記ビデオコーダは、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用する
ようにさらに構成された、Ｃ１１に記載の装置。
［Ｃ１５］
前記ブロックに関連する前記走査順序を識別する前記情報をコーディングするために、前記ビデオコーダは、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記走査順序の指示をコーディングする
ようにさらに構成された、Ｃ１１に記載の装置。
［Ｃ１６］
前記ブロックに関連する前記走査順序の前記指示をコーディングするために、前記ビデオコーダは、前記ビデオコーダが少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するように構成され、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ１５に記載の装置。
［Ｃ１７］
前記ブロックのための前記最確走査順序を判断するために、前記ビデオコーダが、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定するように構成された、Ｃ１１に記載の装置。
［Ｃ１８］
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、Ｃ１１に記載の装置。
［Ｃ１９］
前記ビデオコーダが、前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングするようにさらに構成された、Ｃ１１に記載の装置。
［Ｃ２０］
前記ビデオコーダが、前記ブロック内の非０係数の位置を識別する情報をコーディングするようにさらに構成された、Ｃ１１に記載の装置。
［Ｃ２１］
前記装置が、
集積回路と、
マイクロプロセッサと、
前記ビデオコーダを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、Ｃ１１に記載の装置。
［Ｃ２２］
ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングするためのデバイスであって、前記デバイスは、
前記ブロックに関連する走査順序を識別する情報をコーディングするための手段であって、前記ブロックのための最確走査順序を判断するための手段と、前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの指示をコーディングするための手段とを含む、コーディングするための手段
を備える、デバイス。
［Ｃ２３］
前記ブロックのための前記最確走査順序を判断するための前記手段が、前記ブロックに関連する予測モードおよびサイズに基づいて前記ブロックのための最確走査順序を判断するための手段を備える、Ｃ２２に記載のデバイス。
［Ｃ２４］
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングするための前記手段が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するための手段を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ２２に記載のデバイス。
［Ｃ２５］
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用するための手段
をさらに備える、Ｃ２２に記載のデバイス。
［Ｃ２６］
前記ブロックに関連する前記走査順序を識別する前記情報をコーディングするための前記手段は、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記走査順序の指示をコーディングするための手段
をさらに含む、Ｃ２２に記載のデバイス。
［Ｃ２７］
前記ブロックに関連する前記走査順序の前記指示をコーディングするための前記手段が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行するための手段を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ２６に記載のデバイス。
［Ｃ２８］
前記ブロックのための前記最確走査順序を判断するための前記手段が、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定するための手段を備える、Ｃ２２に記載のデバイス。
［Ｃ２９］
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、Ｃ２２に記載のデバイス。
［Ｃ３０］
前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングするための手段をさらに備える、Ｃ２２に記載のデバイス。
［Ｃ３１］
前記ブロック内の非０係数の位置を識別する情報をコーディングするための手段をさらに備える、Ｃ２２に記載のデバイス。
［Ｃ３２］
実行されたとき、ビデオコーディングプロセス中にビデオデータのブロックに関連する係数をコーディングすることをプロセッサに行わせる命令を備えるコンピュータ可読媒体であって、前記命令が、
前記ブロックに関連する走査順序を識別する情報をコーディングすることを前記プロセッサに行わせ、前記ブロックに関連する前記走査順序を識別する前記情報をコーディングすることを前記プロセッサに行わせる前記命令は、前記ブロックのための最確走査順序を判断することと、前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの指示をコーディングすることとを前記プロセッサに行わせる命令を備える、コンピュータ可読媒体。
［Ｃ３３］
前記ブロックのための前記最確走査順序を判断することを前記プロセッサに行わせる前記命令が、前記ブロックに関連する予測モードおよびサイズに基づいて前記ブロックのための最確走査順序を判断することを前記プロセッサに行わせる命令を備える、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ３４］
前記ブロックに関連する前記走査順序が前記最確走査順序であるかどうかの前記指示をコーディングすることを前記プロセッサに行わせる前記命令が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを前記プロセッサに行わせる命令を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、［Ｃ３２］に記載のコンピュータ可読媒体。
［Ｃ３５］
前記ビデオコーディングプロセス中に前記ブロックに関連する前記係数をコーディングすることを前記プロセッサに行わせる前記命令は、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記係数をコーディングするためにジグザグ走査順序を使用すること
を前記プロセッサにさらに行わせる、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ３６］
前記ブロックに関連する前記走査順序を識別する前記情報をコーディングすることを前記プロセッサに行わせる前記命令は、
前記ブロックに関連する前記走査順序が前記最確走査順序でない場合、前記ブロックに関連する前記走査順序の指示をコーディングすること
を前記プロセッサに行わせる命令をさらに備える、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ３７］
前記ブロックに関連する前記走査順序の前記指示をコーディングすることを前記プロセッサに行わせる前記命令が、少なくとも１つのコンテキストに基づいてコンテキストモデルを適用することを含むコンテキスト適応型エントロピーコーディングプロセスを実行することを前記プロセッサに行わせる命令を備え、前記少なくとも１つのコンテキストが、前記最確走査順序と、前記ブロックに関連する予測モードと、前記ブロックに関連するサイズとのうちの１つを含む、Ｃ３６に記載のコンピュータ可読媒体。
［Ｃ３８］
前記ブロックのための前記最確走査順序を判断することを前記プロセッサに行わせる前記命令が、前記ブロックのための前記最確走査順序にジグザグ走査順序を指定することを前記プロセッサに行わせる命令を備える、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ３９］
前記ブロックに関連する前記走査順序と、前記最確走査順序との各々が、ジグザグ走査順序と、水平走査順序と、垂直走査順序と、対角走査順序とのうちの１つを備える、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ４０］
前記ビデオコーディングプロセス中に前記ブロックに関連する前記係数をコーディングすることを前記プロセッサに行わせる前記命令が、
前記ブロックに関連する前記走査順序に従う前記ブロック内の最後非０係数の位置を識別する情報をコーディングすること
を前記プロセッサにさらに行わせる、Ｃ３２に記載のコンピュータ可読媒体。
［Ｃ４１］
前記ビデオコーディングプロセス中に前記ブロックに関連する前記係数をコーディングすることを前記プロセッサに行わせる前記命令が、
前記ブロック内の非０係数の位置を識別する情報をコーディングすること
を前記プロセッサにさらに行わせる、Ｃ３２に記載のコンピュータ可読媒体。 
【図１】
0005852133.tif 000004
【図２】
0005852133.tif 000005
【図３】
0005852133.tif 000006
【図４Ａ】
0005852133.tif 000007
【図４Ｂ】
0005852133.tif 000008
【図４Ｃ】
0005852133.tif 000009
【図５Ａ】
0005852133.tif 000010
【図５Ｂ】
0005852133.tif 000011
【図５Ｃ】
0005852133.tif 000012
【図６Ａ】
0005852133.tif 000013
【図６Ｂ】
0005852133.tif 000014
【図７】
0005852133.tif 000015
【図８】
0005852133.tif 000016
【図９】
0005852133.tif 000017