(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信することと、
ビデオデータの前記第１のパレットモード符号化されたブロックのパレットサイズを決定することと、
ビデオデータの前記第１のパレットモード符号化されたブロックの前記パレットサイズに基づいて、前記第１のパレットモード符号化されたブロックについての存在しない第１のブロックレベルシンタックス要素の０という値を推測することと、ここにおいて、前記第１のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示す、
前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用して、ビデオデータの前記第１のパレットモード符号化されたブロックを復号することと、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信することと、
ビデオデータの前記第２のパレットモード符号化されたブロックのパレットサイズを決定することと、
ビデオデータの前記第２のパレットモード符号化されたブロックの前記パレットサイズに基づいて、０という値または１という値を有する第２のブロックレベルシンタックス要素を受信することと、ここにおいて、前記第２のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示し、１という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために前記転置処理が適用されるべきであることを示す、
前記第２のブロックレベルシンタックス要素のために受信された１という前記値または０という前記値を使用して、ビデオデータの前記第２のパレットモード符号化されたブロックを復号することと
を備える、方法。
【請求項２】
前記第１のブロックレベルシンタックス要素および前記第２のブロックレベルシンタックス要素が、各々、それぞれのｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇである、請求項１に記載の方法。
【請求項３】
前記第１のブロックレベルシンタックス要素の０という前記値を推測することは、前記第１のパレットモード符号化されたブロックの前記パレットサイズが０に等しいと決定することに基づく、請求項１に記載の方法。
【請求項４】
ビデオデータの前記第２のパレットモード符号化されたブロックの前記パレットサイズを決定することが、１より大きいパレットサイズを決定することを備える、請求項１に記載の方法。
【請求項５】
前記第１のパレットモード符号化されたブロックのためのｅｓｃａｐｅ  ｖａｌｕｅ  ｐｒｅｓｅｎｔ  ｆｌａｇの値を決定することをさらに備え、
ここにおいて、前記第１のブロックレベルシンタックス要素の０という前記値を推測することは、前記第１のパレットモード符号化されたブロックの前記パレットサイズが１に等しいこと、およびエスケープピクセルが前記第１のパレットモード符号化されたブロックのために使用されないことを前記ｅｓｃａｐｅ  ｖａｌｕｅ  ｐｒｅｓｅｎｔ  ｆｌａｇの前記値が示すこと、を決定することに基づく、請求項１に記載の方法。
【請求項６】
前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用してビデオの前記第１のパレットモード符号化されたブロックを復号することが、ビデオデータの前記第１のパレットモード符号化されたブロックのピクセル走査順序が非水平方向または非垂直方向のピクセル走査順序であるように、前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用してビデオの前記第１のパレットモード符号化されたブロックを復号することを備える、請求項１に記載の方法。
【請求項７】
ビデオデータを復号するためのデバイスであって、
ピクチャのビデオデータを記憶するように構成されるメモリと、
ビデオデコーダと
を備え、前記ビデオデコーダが、
前記ビデオデータの第１のパレットモード符号化されたブロックを受信し、
ビデオデータの前記第１のパレットモード符号化されたブロックのパレットサイズを決定し、
ビデオデータの前記第１のパレットモード符号化されたブロックの前記パレットサイズに基づいて、前記第１のパレットモード符号化されたブロックについての存在しない第１のブロックレベルシンタックス要素の０という値を推測し、ここにおいて、前記第１のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示す、
前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用して、ビデオデータの前記第１のパレットモード符号化されたブロックを復号し、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信し、
ビデオデータの前記第２のパレットモード符号化されたブロックのパレットサイズを決定し、
ビデオデータの前記第２のパレットモード符号化されたブロックの前記パレットサイズに基づいて、０という値または１という値を有する第２のブロックレベルシンタックス要素を受信し、ここにおいて、前記第２のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示し、１という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために前記転置処理が適用されるべきであることを示す、
前記第２のブロックレベルシンタックス要素のために受信された１という前記値または０という前記値を使用して、ビデオデータの前記第２のパレットモード符号化されたブロックを復号する
ように構成される、デバイス。
【請求項８】
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックの前記パレットサイズが０に等しいと決定することに応答して、前記第１のブロックレベルシンタックス要素の０という前記値を推測するように構成される、請求項７に記載のデバイス。
【請求項９】
前記ビデオデコーダが、前記第１のパレットモード符号化されたブロックのためのｅｓｃａｐｅ  ｖａｌｕｅ  ｐｒｅｓｅｎｔ  ｆｌａｇの値を決定するようにさらに構成され、
ここにおいて、前記第１のブロックレベルシンタックス要素の０という前記値を推測することは、前記第１のパレットモード符号化されたブロックの前記パレットサイズが１に等しいこと、およびエスケープピクセルが前記第１のパレットモード符号化されたブロックのために使用されないことを前記ｅｓｃａｐｅ  ｖａｌｕｅ  ｐｒｅｓｅｎｔ  ｆｌａｇの前記値が示すこと、を決定することに基づく、請求項７に記載のデバイス。
【請求項１０】
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックのピクセル走査順序が非水平方向または非垂直方向のピクセル走査順序であるように、前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用して、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するように構成される、請求項７に記載のデバイス。
【請求項１１】
実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、
ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信させ、
ビデオデータの前記第１のパレットモード符号化されたブロックのパレットサイズを決定させ、
ビデオデータの前記第１のパレットモード符号化されたブロックの前記パレットサイズに基づいて、前記第１のパレットモード符号化されたブロックについての存在しない第１のブロックレベルシンタックス要素の０という値を推測させ、ここにおいて、前記第１のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示す、
前記第１のブロックレベルシンタックス要素の０という前記推測された値を使用して、ビデオデータの前記第１のパレットモード符号化されたブロックを復号させ、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信させ、
ビデオデータの前記第２のパレットモード符号化されたブロックのパレットサイズを決定させ、
ビデオデータの前記第２のパレットモード符号化されたブロックの前記パレットサイズに基づいて、０という値または１という値を有する第２のブロックレベルシンタックス要素を受信させ、ここにおいて、前記第２のブロックレベルシンタックス要素の０という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために転置処理が適用されるべきではないことを示し、１という前記値が、ビデオデータの前記第２のパレットモード符号化されたブロックを復号するために前記転置処理が適用されるべきであることを示す、
前記第２のブロックレベルシンタックス要素のために受信された１という前記値または０という前記値を使用して、ビデオデータの前記第２のパレットモード符号化されたブロックを復号させる、命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項１２】
ビデオデータを符号化する方法であって、
ビデオデータのブロックがパレットモードを使用して符号化されるべきであると決定することと、
ビデオデータの前記ブロックのパレットサイズを決定することと、
パレットモードを使用してビデオデータの前記ブロックを符号化することと、
前記パレットサイズに基づいて、ビデオデータの第１のパレットモード符号化されたブロックを復号するために転置処理が適用されるか否かを表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することと、
前記パレットサイズが０という値に等しいとき、または前記パレットサイズが１という値に等しく、且つビデオデータのパレット符号化されたブロックが少なくとも１つのエスケープピクセル含まないとき、前記第１のブロックレベルシンタックス要素をシグナリングしないことと
を備える、方法。
【請求項１３】
前記第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することが、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含むかどうかに基づく、請求項１２に記載の方法。
【請求項１４】
前記第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することが、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含むかどうかを表す第２のブロックレベルシンタックス要素の値に基づく、請求項１２に記載の方法。
【請求項１５】
ビデオデータを符号化するためのデバイスであって、
ピクチャのビデオデータを記憶するように構成されるメモリと、
ビデオエンコーダと
を備え、前記ビデオエンコーダが、
前記ビデオデータのブロックがパレットモードを使用して符号化されるべきであると決定し、
ビデオデータの前記ブロックのパレットサイズを決定し、
パレットモードを使用してビデオデータの前記ブロックを符号化し、
前記パレットサイズに基づいて、ビデオデータの第１のパレットモード符号化されたブロックを復号するために転置処理が適用されるか否かを表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定し、
前記パレットサイズが０という値に等しいとき、または前記パレットサイズが１という値に等しく、且つビデオデータのパレット符号化されたブロックが少なくとも１つのエスケープピクセル含まないとき、前記第１のブロックレベルシンタックス要素をシグナリングしない
ように構成される、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]  本出願は、２０１４年８月４日に出願された米国仮出願第６２／０３３，０６７号、２０１４年８月２９日に出願された米国仮出願第６２／０４４，０８８号、および２０１４年１０月１０日に出願された米国仮出願第６２／０６２，６７４号の利益を主張し、これらの各々の内容全体が参照により本明細書に組み込まれる。
【０００２】
[0002]  本開示は、ビデオ符号化（video encoding）およびビデオ復号（video decoding）に関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中のＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などの、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化（encode）し、復号（decode）し、および／または記憶（store）し得る。
【０００４】
[0004]  ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャ（picture）はフレーム（frame）と呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]  空間的予測または時間的予測は、コーディングされるべきブロック（block）の予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に２次元アレイで構成される量子化された係数は、係数の１次元ベクトルを生成するために走査されることがあり、なお一層の圧縮を達成するためにエントロピーコーディングが適用されることがある。
【発明の概要】
【０００６】
[0006]  本開示の技法は、パレットベースのビデオコーディングに関する。たとえば、パレットベースのビデオコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダ（video encoder）またはビデオデコーダ（video decoder））は、特定のエリア（たとえば、所与のブロック）のビデオデータ（video data）を表すための色のテーブルとして「パレット（palette）」を形成し得る。パレットベースのビデオコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。実際のピクセル値（またはそれらの残差）をコーディングするのではなく、ビデオコーダは、ピクセルの色を表すパレット中のエントリーにピクセルを関連付ける、ピクセルの１つまたは複数のパレットインデックス（palette index）をコーディングすることができる。本開示で説明される技法は、パレットベースのビデオコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、送信されないシンタックス要素（syntax element）の値を導出すること、パレットベースのビデオコーディングマップ（palette-based video coding map）と他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。
【０００７】
[0007]  一例では、ビデオデータを復号する方法は、ピクチャのビデオデータの第１のパレットモード符号化されたブロック（first palette mode encoded block）を受信することを含み得る。方法は、第１のパレットモード符号化されたブロックのピクセル走査順序（pixel scan order）を表す値を有するブロックレベルシンタックス要素（block-level syntax element）を受信することなく、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測（infer）することを含み得る。方法は、推測されたピクセル走査順序を使用して、ビデオデータの第１のパレットモード符号化されたブロックを復号することを含み得る。方法は、ピクチャのビデオデータの第２のパレットモード符号化されたブロック（second palette mode encoded block）を受信することを含み得る。方法は、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することを含み得る。方法は、受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定することを含み得る。方法は、決定されたピクセル走査順序を使用して、ビデオデータの第２のパレットモード符号化されたブロックを復号することを含み得る。
【０００８】
[0008]  別の例では、デバイスは、ピクチャのビデオデータを記憶するように構成されるメモリを含み得る。デバイスは、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信するように構成されるビデオデコーダを含み得る。ビデオデコーダは、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。ビデオデコーダは、推測されたピクセル走査順序に基づいて、ビデオデータの第１のパレットモード符号化されたブロックを復号するように構成され得る。ビデオデコーダは、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信するように構成され得る。ビデオデコーダは、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信するように構成され得る。ビデオデコーダは、ビデオデータの第２のパレットモード符号化されたブロックのブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定するように構成され得る。ビデオデコーダは、決定されたピクセル走査順序に基づいて、ビデオデータの第２のパレットモード符号化されたブロックを復号するように構成され得る。
【０００９】
[0009]  別の例では、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイス（computing device）の１つまたは複数のプロセッサ（processor）に、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信させる命令を記憶している、非一時的コンピュータ可読記憶媒体（non-transitory computer-readable storage medium）。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、推測されたピクセル走査順序に基づいて、ビデオデータの第１のパレットモード符号化されたブロックを復号させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、ビデオデータの第２のパレットモード符号化されたブロックのブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、決定されたピクセル走査順序に基づいて、ビデオデータの第２のパレットモード符号化されたブロックを復号させる命令を記憶していることがある。
【００１０】
[0010]  別の例では、デバイスは、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信するための手段を含み得る。デバイスは、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するための手段を含み得る。デバイスは、推測されたピクセル走査順序を使用して、ビデオデータの第１のパレットモード符号化されたブロックを復号するための手段を含み得る。デバイスは、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信するための手段を含み得る。デバイスは、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信するための手段を含み得る。デバイスは、受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定するための手段を含み得る。デバイスは、決定されたピクセル走査順序を使用して、ビデオデータの第２のパレットモード符号化されたブロックを復号するための手段を含み得る。
【００１１】
[0011]  さらに別の例では、ビデオデータを符号化する方法は、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定することを含み得る。方法は、ビデオデータのブロックのパレットサイズ（palette size）を決定することを含み得る。方法は、ビデオデータのブロックのピクセル走査順序を決定することを含み得る。方法は、パレットモードを使用してビデオデータのブロックを符号化することを含み得る。方法は、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することを含み得る。
【００１２】
[0012]  さらに別の例では、デバイスは、ピクチャのビデオデータを記憶するように構成されるメモリを含み得る。デバイスは、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定するように構成されるビデオエンコーダを含み得る。ビデオエンコーダは、ビデオデータのブロックのパレットサイズを決定するように構成され得る。ビデオエンコーダは、ビデオデータのブロックのピクセル走査順序を決定するように構成され得る。ビデオエンコーダは、パレットモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダは、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定するように構成され得る。
【００１３】
[0013]  さらに別の例では、実行されると、ビデオデータを符号化するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定させる命令を記憶している、非一時的コンピュータ可読記憶媒体。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを符号化するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、ビデオデータのブロックのパレットサイズを決定させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを符号化するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、ビデオデータのブロックのピクセル走査順序を決定させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを符号化するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、パレットモードを使用してビデオデータのブロックを符号化させる命令を記憶していることがある。非一時的コンピュータ可読記憶媒体は、実行されると、ビデオデータを符号化するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定させる命令を記憶していることがある。
【００１４】
[0014]  さらに別の例では、デバイスは、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定するための手段を含み得る。デバイスは、ビデオデータのブロックのパレットサイズを決定するための手段を含み得る。デバイスは、ビデオデータのブロックのピクセル走査順序を決定するための手段を含み得る。デバイスは、パレットモードを使用してビデオデータのブロックを符号化するための手段を含み得る。デバイスは、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定するための手段を含み得る。
【００１５】
[0015]  本開示の１つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１６】
【図１】[0016]  本開示で説明されるパレットベースのビデオコーディングのための技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】[0017]  本開示で説明されるパレットベースのビデオコーディングのための技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【図３】[0018]  本開示で説明されるパレットベースのビデオコーディングのための技法を実施し得る例示的なビデオデコーダを示すブロック図。
【図４】[0019]  本開示の技法に従った、パレットベースのビデオコーディングのためのパレットエントリーを決定する例を示す概念図。
【図５】[0020]  本開示の技法に従った、ピクセルのブロックのためのパレットに対するインデックスを決定する例を示す概念図。
【図６Ａ】[0021]  ピクセル走査順序の一例を示す概念図。
【図６Ｂ】[0022]  ピクセル走査順序の一例を示す概念図。
【図７】[0023]  本開示のパレットベースのビデオコーディングのための技法に適合するビデオデータを復号するための例示的なプロセスを示すフローチャート。
【図８】[0024]  本開示のパレットベースのビデオコーディングのための技法に適合するビデオデータを符号化するための例示的なプロセスを示すフローチャート。
【図９】[0025]  本開示のパレットベースのビデオコーディングのための技法に適合するビデオデータのブロックの第１の行に対してＣｏｐｙモードを有効にする例を示す概念図。
【図１０】[0026]  本開示のパレットベースのビデオコーディングのための技法に適合するビデオデータを復号するための例示的なプロセスを示すフローチャート。
【図１１】[0027]  本開示のパレットベースのビデオコーディングのための技法に適合するビデオデータを符号化するための例示的なプロセスを示すフローチャート。
【発明を実施するための形態】
【００１７】
[0028]  本開示の態様は、ビデオコーディングおよびビデオデータ圧縮のための技法を対象とする。具体的には、本開示は、ビデオデータのパレットベースのビデオコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリング、および他のコーディングツールなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。しかしながら、リモートデスクトップ、共同作業用ディスプレイおよびワイヤレスディスプレイのような適用例では、コンピュータで生成されたスクリーンコンテンツが、圧縮されるべき支配的なコンテンツであり得る。このタイプのスクリーンコンテンツは、不連続な色調と、鋭利な線と、高コントラストのオブジェクト境界とを有する傾向がある。連続的な色調および滑らかさという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツを圧縮するのに効率的ではないことがある。
【００１８】
[0029]  本開示は、パレットベースのビデオコーディング技法を説明し、これは特に、コンピュータにより生成されたスクリーンコンテンツのコーディング（たとえば、スクリーンコンテンツコーディング（ＳＣＣ：screen content coding））、または、１つまたは複数の従来のコーディングツールが非効率である他のコンテンツに適していることがある。本開示で説明されるビデオデータのパレットベースのビデオコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法などの、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのビデオコーディングとを実行するように構成され得る。
【００１９】
[0030]  最近、新しいビデオコーディング規格、すなわちＨｉｇｈ−Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）の設計が、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって確定された。ＳＣＣと称するＨＥＶＣに対するスクリーンコンテンツコーディング拡張も、ＪＣＴ−ＶＣによって開発されている。パレットモードの記述を含むＳＣＣの最近のワーキングドラフト（ＷＤ）（ＳＣＣ  ＷＤ）は、ＪＣＴＶＣ−Ｒ０３４８「ＪＣＴＶＣ−Ｒ０３４８＿１８ｔｈＭｅｅｔｉｎｇＦｉｎａｌＰａｌｅｔｔｅＴｅｘｔＳｐｅｃｉｆｉｃａｔｉｏｎ．ｄｏｃ」において入手可能である。
【００２０】
[0031]  いくつかの例では、パレットベースのビデオコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。例示的なビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、およびＩＴＵ−Ｔ  Ｈ．２６４（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られている）を含む。Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発された新しいビデオコーディング規格である。最近のＨＥＶＣテキスト仕様ドラフトは、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１２＿Ｇｅｎｅｖａ／ｗｇ１１／ＪＣＴＶＣ−Ｌ１００３−ｖ１３．ｚｉｐから入手可能な、Ｂｒｏｓｓ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０  （ｆｏｒ  ＦＤＩＳ  ＆  Ｃｏｎｓｅｎｔ）」、ＪＣＶＣ−Ｌ１００３＿ｖ１３、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ  ３およびＩＳＯ／ＩＥＣ  ＪＣＴ  １／ＳＣ  ２９／ＷＧ  １１のＪＣＴ−ＶＣの第１２回会合、２０１３年１月１４〜２３日（「ＨＥＶＣ  Ｄｒａｆｔ  １０」）に記載されている。
【００２１】
[0032]  ＨＥＶＣフレームワークに関して、例として、本開示のパレットベースのビデオコーディング技法は、コーディングユニット（ＣＵ：coding unit）レベルで使用されるように構成され得る。ＨＥＶＣの他の例では、本開示のパレットベースのビデオコーディング技法は、予測ユニット（ＰＵ：prediction unit）レベルで使用されるように構成され得る。ＨＥＶＣの他の例では、本開示のパレットベースのビデオコーディング技法は、サブ予測ユニット（ｓｕｂ−ＰＵ）レベル（たとえば、予測ユニットのサブブロック）で使用されるように構成され得る。したがって、ＣＵレベルの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵレベルまたはサブＰＵレベルに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのビデオコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００２２】
[0033]  パレットベースのビデオコーディングでは、ビデオデータの特定のエリアが、比較的少数の色を有し得る。ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディング（すなわち、符号化または復号）し得る。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００２３】
[0034]  上の例では、ビデオエンコーダは、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ、ピクセル値をパレットに関連付けるピクセルのためのパレットインデックス（パレットインデックス値とも呼ばれる）を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのパレットインデックスを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのパレットインデックスをパレットのエントリーに関連付けることができる。ピクセル（および／またはピクセル値を示す関連するパレットインデックス）は一般に、サンプルと呼ばれ得る。
【００２４】
[0035]  ビデオデータのブロック中のサンプルは、水平方向のラスター走査順序（raster scanning order）または他の走査順序を使用して処理され（たとえば、走査され）得る。たとえば、ビデオエンコーダは、水平方向のラスター走査順序を使用してパレットインデックスを走査することによって、パレットインデックスの２次元ブロックを１次元アレイに変換することができる。同様に、ビデオデコーダは、水平方向のラスター走査順序を使用してパレットインデックスのブロックを再構築することができる。したがって、本開示は、ブロック中の現在コーディングされているサンプルに走査順序において先行するサンプルのことを、以前のサンプルと呼び得る。垂直方向のラスター走査順序などの水平方向のラスター走査以外の走査も適用可能であり得ることを、理解されたい。上の例、ならびに本開示で述べられる他の例は、パレットベースのビデオコーディングの全般的な説明を与えることが意図されている。
【００２５】
[0036]  パレットは通常、インデックスによって番号を付けられた、色の成分（たとえば、ＲＧＢ、ＹＵＶ、ＹＣｂＣｒなど）の値または強度を表すエントリーを含む。ビデオエンコーダとビデオデコーダの両方が、パレットエントリーの数と、各パレットエントリーのための色成分値と、現在のブロックのためのパレットエントリーの正確な順序とを決定する。本開示では、各パレットエントリーがサンプルのすべての色成分の値を指定すると仮定される。しかしながら、本開示の概念は、各色成分に対して別々のパレットを使用することに適用可能である。
【００２６】
[0037]  いくつかの例では、パレットは、以前にコーディングされたブロックからの情報を使用して合成され得る。すなわち、パレットは、以前のブロックをコーディングするために使用されたパレットから予測される、予測されたパレットエントリーを含み得る。たとえば、Ｗｅｉ  Ｐｕ他、「ＡＨＧ１０：  Ｓｕｇｇｅｓｔｅｄ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｃｏｄｉｎｇ  ｂａｓｅｄ  ｏｎ  ＲＥｘｔ６．０」、ＪＣＴＶＣ−Ｑ００９４、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後ＪＣＴＶＣ−Ｑ００９４）に記述されるように、パレットは、予測子パレットから複製されるエントリーを含み得る。予測子パレットは、パレットモードを使用して以前にコーディングされたブロックからの、または他の再構築されたサンプルからのパレットエントリーを含み得る。予測子パレット中の各エントリーに対して、二進フラグが、そのフラグと関連付けられるエントリーが現在のパレットに複製されるかどうかを示す（たとえば、フラグ＝１によって示される）ようにコーディングされ得る。二進フラグの列は、二進パレット予測ベクトルと呼ばれ得る。現在のブロックをコーディングするためのパレットはまた、いくつかの新たなパレットエントリーを含んでよく、これらは明示的に（たとえば、パレット予測ベクトルとは別に）コーディングされ得る。新たなエントリーの数を示すものもコーディングされ得る。予測されるエントリーと新たなエントリーの合計は、ブロックの全体のパレットサイズを示し得る。
【００２７】
[0038]  提案されるＪＣＴＶＣ−Ｑ００９４のように、パレットベースのビデオコーディングモードを用いてコーディングされるブロック中の各サンプルは、以下に記載されるような３つのパレットモードの１つを使用してコーディングされ得る。
・Ｅｓｃａｐｅモード：このモードでは、サンプル値がパレットエントリーとしてパレットに含められず、量子化されたサンプル値がすべての色成分に対して明示的にシグナリングされる。新たなパレットエントリーのシグナリングに似ているが、新たなパレットエントリーに対しては、色成分値は量子化されない。
・ＣｏｐｙＦｒｏｍＴｏｐモード（ＣｏｐｙＡｂｏｖｅモードまたはＣｏｐｙモードとも呼ばれる）：このモードでは、現在のサンプルのためのパレットエントリーインデックスが、ブロック中ですぐ上に位置するサンプルから複製される。
・Ｖａｌｕｅモード（Ｉｎｄｅｘモードとも呼ばれる）：このモードでは、パレットエントリーインデックスの値が明示的にシグナリングされる。
【００２８】
[0039]  いくつかの例では、ｅｓｃａｐｅモードは、ＣｏｐｙＡｂｏｖｅモードまたはＩｎｄｅｘモードと別のモードではない。むしろ、そのような例では、ｅｓｃａｐｅモードは、ＣｏｐｙモードまたはＩｎｄｅｘモードに含まれ得る。
【００２９】
[0040]  本明細書で説明されるように、パレットエントリーインデックスは、パレットインデックスまたは単にインデックスと呼ばれ得る。これらの用語が、本開示の技法を説明するために交換可能に使用され得る。加えて、以下でより詳細に説明されるように、パレットインデックスは、１つまたは複数の関連する色または強度の値を有し得る。たとえば、パレットインデックスは、ピクセルの単一の色または強度の成分と関連付けられる、単一の関連する色または強度の値を有し得る（たとえば、ＲＧＢデータのＲｅｄ成分、ＹＵＶデータのＹ成分など）。別の例では、パレットインデックスは、複数の関連する色または強度の値を有し得る。いくつかの事例では、パレットベースのビデオコーディングは、モノクロのビデオをコーディングするために適用され得る。したがって、「色値（color value）」は一般に、ピクセル値を生成するために使用される任意の色成分または非色成分を指し得る。
【００３０】
[0041]  ＣｏｐｙＦｒｏｍＴｏｐモードおよびＶａｌｕｅモードでは、ラン値（run value）（単にラン（run）とも呼ばれ得る）もシグナリングされ得る。ラン値は、一緒にコーディングされるパレットコーディングされるブロック中の、特定の走査順序にある連続するサンプルの数（たとえば、サンプルのラン）を示し得る。いくつかの事例では、サンプルのランはパレットインデックスのランとも呼ばれることがあり、それは、ランの各サンプルがパレットに対する関連するインデックスを有するからである。
【００３１】
[0042]  ラン値は、同じパレットコーディングモードを使用してコーディングされるパレットインデックスのランを示し得る。たとえば、Ｖａｌｕｅモードに関して、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、パレットインデックス（パレットインデックス値または単にインデックス値とも呼ばれる）と、同じパレットインデックスを有しそのパレットインデックスを用いてコーディングされている、ある走査順序にある連続するサンプルの数を示すラン値とを、コーディングすることができる。ＣｏｐｙＦｒｏｍＴｏｐモードに関して、ビデオコーダは、上側の隣接サンプル（たとえば、ブロック中の現在コーディングされているサンプルの上に位置するサンプル）のインデックスと、上側の隣接サンプルからパレットインデックスを同様に複製しそのパレットインデックスを用いてコーディングされている、ある走査順序にある連続するサンプルの数を示すラン値とに基づいて、現在のサンプル値のためのインデックスが複製されることを示すものをコーディングすることができる。したがって、上の例では、パレットインデックスのランは、同じ値を有するパレットインデックスのラン、または上側の隣接パレットインデックスから複製されるパレットインデックスのランを指す。
【００３２】
[0043]  したがって、ランは、所与のモードに対して、同じモードに属する後続のサンプルの数を指定し得る。いくつかの事例では、インデックスとラン値とをシグナリングすることは、ランレングスコーディング（run length coding）と似ていることがある。説明を目的とする例では、ブロックの連続するパレットインデックスの列は、０、２、２、２、２、５であり得る（たとえば、ここで各インデックスはブロック中のサンプルに対応する）。この例では、ビデオコーダは、Ｖａｌｕｅモードを使用して第２のサンプル（たとえば、２という最初のパレットインデックス値）をコーディングすることができる。２に等しいインデックス値をコーディングした後で、ビデオコーダは３というランをコーディングすることができ、これは、３つの後続のサンプルも２という同じパレットインデックス値を有することを示す。同様の方式で、ＣｏｐｙＦｒｏｍＴｏｐモードを使用してインデックスをコーディングした後で４つのパレットインデックスのランをコーディングすることは、全体で５つのパレットインデックスが、現在コーディングされているサンプル位置の上の行の中の対応するパレットインデックスから複製されることを示し得る。
【００３３】
[0044]  本開示で説明される技法は、パレットベースのビデオコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、走査順序をシグナリングすること、走査順序を導出すること、ビデオデータのブロック中の第１の行に対してＣｏｐｙモードを有効にすること、およびパレットベースのビデオコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。いくつかの例では、本開示の技法は、ＪＣＴＶＣ−Ｑ００９４に存在するパレットモード、パレットインデックス、ラン、およびパレットサイズのシグナリング（ならびに投稿ＪＣＴＶＣ−Ｑ００９４とともにアップロードされたパレットモードを実装する参照ソフトウェア）と関連付けられる潜在的な冗長性を解決するために使用され得る。いくつかの例では、本開示の技法は、とりわけ、走査順序のシグナリングと関連付けられる潜在的な冗長性を解決するために使用され得る。他の例では、本開示の技法は、とりわけ、走査順序の不必要なシグナリングをなくすために使用され得る。さらに他の例では、本開示の技法は、とりわけ、ビデオデータのブロック中の最初の行に対して、ビデオデータのそのブロック中のその行のすぐ上にピクセルがなくても、Ｃｏｐｙモードを有効にすることができる。したがって、以下でより詳細に説明されるように、本開示の技法は、いくつかの事例では、パレットモードを使用してビデオデータをコーディングするときの効率性を向上させビットレートを向上させ得る。
【００３４】
[0045]  図１は、本開示の技法を利用できる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ（video coder）」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング（video coding）」または「コーディング（coding）」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。
【００３５】
[0046]  図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス１４はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００３６】
[0047]  宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化されたビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、高周波（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などのワイヤレスおよび／または有線の通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などのパケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００３７】
[0048]  別の例では、チャネル１６は、ソースデバイス１２によって生成された、符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００３８】
[0049]  さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、送信先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【００３９】
[0050]  宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００４０】
[0051]  パレットベースのビデオコーディングのための本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００４１】
[0052]  図１に示されるビデオコーディングシステム１０は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および／または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【００４２】
[0053]  図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００４３】
[0054]  ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【００４４】
[0055]  図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して、符号化されたビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【００４５】
[0056]  ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアなどの、様々な適切な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶することができ、本開示の技法を実行するために１つまたは複数のプロセッサを使用してハードウェア内でそれらの命令を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれることがある。
【００４６】
[0057]  本開示の技法によれば、ビデオデコーダ３０は、ビデオデータのパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。たとえば、ビデオデコーダ３０は、ビデオデータの符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの符号化されたブロックのピクセル走査順序を推測するように構成され得る。別の例として、ビデオデコーダ３０は、ブロックレベルシンタックス要素が（ｉ）ビデオデコーダ３０に送信されなかったので、（ｉｉ）ビデオデコーダ３０によって受信されないので、または（ｉｉｉ）ビデオデコーダ３０によって受信されたが、ビデオデコーダ３０が受信されたブロックレベルシンタックス要素を参照せずにピクセル走査順序を推測するように構成されるので、ビデオデータの符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの符号化されたブロックのピクセル走査順序を推測するように構成され得る。
【００４７】
[0058]  たとえば、ビデオデコーダ３０は、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信するように構成され得る。ビデオデコーダ３０は、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。別の例では、ビデオデコーダ３０は、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに（それを受信されていてもいなくても）、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。ビデオデコーダ３０は、推測されたピクセル走査順序を使用して、ビデオデータの第１のパレットモード符号化されたブロックを復号するように構成され得る。
【００４８】
[0059]  いくつかの例では、ビデオデコーダ３０は、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信するように構成され得る。そのような例では、ビデオデコーダ３０は、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信するように構成され得る。ビデオデコーダ３０は、受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定するように構成され得る。ビデオデコーダ３０は、決定されたピクセル走査順序を使用して、ビデオデータの第２のパレットモード符号化されたブロックを復号するように構成され得る。
【００４９】
[0060]  本開示の技法による別の例では、ビデオエンコーダ２０は、ビデオデータのブロックの走査順序をシグナリングするかどうかを決定するように構成され得る。ビデオエンコーダ２０は、この決定に基づいて、ビデオデータのブロックの走査順序をシグナリングするように、またはシグナリングしないように構成され得る。たとえば、走査順序をシグナリングするかどうかを決定することは、ビデオデータのブロックのパレットサイズに基づき得る。
【００５０】
[0061]  たとえば、ビデオエンコーダ２０は、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定するように構成され得る。ビデオエンコーダ２０は、ビデオデータのブロックのパレットサイズを決定するように構成され得る。ビデオエンコーダ２０は、ビデオデータのブロックのピクセル走査順序を決定するように構成され得る。ビデオエンコーダ２０は、パレットモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ２０は、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定するように構成され得る。
【００５１】
[0062]  本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化のときに符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに起こり得るなど、ある時間の長さにわたって起こることがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【００５２】
[0063]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣドラフト１０に記載されるＨＥＶＣ規格などの、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのビデオコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのビデオコーディングのための本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースのビデオコーディングモードの適用が、例として説明される。
【００５３】
[0064]  ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと表記される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロであることがあり、ルーマサンプルのアレイしか含まないことがある。
【００５４】
[0065]  ビデオエンコーダ２０は、ピクチャの符号化された表現を生成するために、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００５５】
[0066]  コーディングされたＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するように、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実行することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイと、ＣｂサンプルアレイおよびＣｒサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００５６】
[0067]  ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成することができる。
【００５７】
[0068]  ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００５８】
[0069]  ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０は、ＣＵのＣｂ残差ブロックを生成することができる。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのＣｒ残差ブロックを生成することもできる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００５９】
[0070]  さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを、１つまたは複数のルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックと関連付けられ得る。ＴＵと関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００６０】
[0071]  ビデオエンコーダ２０は、ＴＵのルーマ変換ブロックに１回または複数回の変換を適用して、ＴＵのルーマ係数ブロックを生成することができる。係数ブロックは変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１回または複数回の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００６１】
[0072]  係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後で、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を実行し得る。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリームに出力することができる。
【００６２】
[0073]  ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）ユニットを備え得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプ符号を示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプ符号は、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、ＲＢＳＰは０ビットを含む。
【００６３】
[0074]  異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコーディングされたスライスのためのＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットはＳＥＩのためのＲＢＳＰをカプセル化することができ、以下同様である。ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれ得る。
【００６４】
[0075]  ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するためにビットストリームを構文解析し得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ３０は、現在のＣＵのＰＵの予測ブロックを決定するために、ＰＵのＭＶを使用することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ３０は、現在のＣＵのＰＵの予測ブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構築することができる。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築することができる。
【００６５】
[0076]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのビデオコーディングを実行するように構成され得る。たとえば、パレットベースのビデオコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングすることができる。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００６６】
[0077]  パレットベースのビデオコーディングの例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ、ピクセル値をパレットに関連付けるピクセルのためのインデックス値を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのインデックス値を取得することができる。ビデオデコーダ３０は、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
【００６７】
[0078]  本開示のいくつかの例では、ビデオエンコーダ２０は、同じピクセル値を有する所与の走査順序の中の連続するピクセルの数を示す１つまたは複数のシンタックス要素を符号化することができる。同様の値のピクセル値の列は、本明細書では「ラン」と呼ばれることがある。例示を目的とする例では、所与の走査順序の２つの連続するピクセルが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するピクセルが同じ値を有するが、その走査順序の３番目のピクセルが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続するピクセルの場所の数を決定することができる。
【００６８】
[0079]  本開示のいくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、マップの１つまたは複数のエントリーに対して線のコピーを実行することができる。たとえば、ビデオエンコーダ２０は、マップ中の特定のエントリーに対するピクセル値が、その特定のエントリーの上の線の中のエントリーに等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリーの上の線の中のエントリーに等しい走査順序におけるインデックスの数をランとして示すことができる。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、規定された隣接する線から、および、現在コーディングされているマップの線に対する規定された数のエントリーから、インデックス値をコピーすることができる。
【００６９】
[0080]  タイルおよび波面並列処理（ＷＰＰ）を含む、ＨＥＶＣベースのコーデックをより並列に適したものにするための、いくつかの提案が行われている。ＨＥＶＣ  ＷＤ１０は、タイルのコーディングツリーブロックラスター走査において連続的に順序付けられた、１つの列および１つの行の中に同時に存在する整数個のコーディングツリーブロックとしてタイルを定義する。各ピクチャをタイルに分割することは、区分と呼ばれる。タイルの数およびそれらの境界の位置は、シーケンス全体に対して定義されるか、またはピクチャごとに変更され得る。タイル境界は、スライス境界と同様に、タイルが独立に処理され得るように構文解析および予測の依存性を破壊するが、ループ内フィルタ（デブロッキングおよびサンプル適応オフセット（ＳＡＯ））はそれでもタイル境界にまたがることがある。ＨＥＶＣ  ＷＤ１０はまた、スライスとタイルの関係に対するいくつかの制約を規定する。
【００７０】
[0081]  本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、以下で図４〜図１１などに関して本明細書で説明されるパレットモードコーディングのための技法の任意の組合せを実行することができる。
【００７１】
[0082]  図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングの文脈において、ビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００７２】
[0083]  ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのビデオコーディングまたは非パレットベースのビデオコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのビデオコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセル位置の少なくともいくつかをパレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【００７３】
[0084]  図２の例では、ビデオエンコーダ２０は、ブロック符号化ユニット１００と、ビデオデータメモリ１０１と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。ブロック符号化ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示されず）を含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのビデオコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【００７４】
[0085]  ビデオデータメモリ１０１は、ビデオエンコーダ２０のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ１０１内に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号ピクチャバッファ（ＤＰＢ）１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１０１は、ビデオエンコーダ２０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【００７５】
[0086]  ビデオエンコーダ２０は、ビデオデータを受信することができる。ビデオエンコーダ２０は、ビデオデータのピクチャのスライス内の各ＣＴＵを符号化することができる。ＣＴＵの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）と、対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、ブロック符号化ユニット１００は、４分木区分を実行して、ＣＴＵのＣＴＢを徐々により小さいブロックに分割することができる。より小さいブロックはＣＵのコーディングブロックであり得る。たとえば、ブロック符号化ユニット１００は、ＣＴＵと関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区画することができ、サブブロックの１つまたは複数を４つの等しいサイズのサブサブブロックに区画することができ、以下同様である。
【００７６】
[0087]  ビデオエンコーダ２０は、ＣＵの符号化された表現（すなわち、コーディングされたＣＵ）を生成するために、ＣＴＵのＣＵを符号化することができる。ＣＵを符号化することの一部として、ブロック符号化ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵと関連付けられたコーディングブロックを区分化することができる。したがって、各ＰＵは、ルーマ予測ブロックおよび対応するクロマ予測ブロックと関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートすることができる。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測の場合は２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズのための非対称区分をサポートすることができる。
【００７７】
[0088]  インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによって、ＰＵのための予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックとＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、またはＢスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されたブロックでは、予測ブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【００７８】
[0089]  ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域と関連付けられた参照場所との間の空間変位を示すＭＶを生成することができる。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照場所における実際のまたは補間されたサンプルに基づいて、ＰＵの予測ブロックを生成することができる。
【００７９】
[0090]  ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を実行することができる。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵの予測ブロックと参照領域に関連付けられた参照場所との間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【００８０】
[0091]  ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照場所とＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【００８１】
[0092]  本開示の様々な例によれば、ビデオエンコーダ２０は、パレットベースのビデオコーディングを実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのビデオコーディング技法は、ＣＵレベルで使用されるように構成され得る。他の例では、パレットベースのビデオコーディング技法は、ＰＵレベルで使用されるように構成され得る。他の例では、パレットベースのビデオコーディング技法は、サブ予測ユニット（ｓｕｂ−ＰＵ）レベル（たとえば、予測ユニットのサブブロック）で使用されるように構成され得る。したがって、ＣＵレベルの状況において（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵレベルまたはサブＰＵレベルに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのビデオコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００８２】
[0093]  パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの符号化を実行することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【００８３】
[0094]  本開示の態様によれば、パレットベースの符号化ユニット１２２は、以下で図４〜図１１などに関して本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。
【００８４】
[0095]  たとえば、パレットベースの符号化ユニット１２２は、ビデオデータのブロックの走査順序をシグナリングするかどうかを決定するように構成され得る。パレットベースの符号化ユニット１２２は、この決定に基づいて、ビデオデータのブロックの走査順序をシグナリングするように、またはシグナリングしないように構成され得る。たとえば、走査順序をシグナリングするかどうかを決定することは、ビデオデータのブロックのパレットサイズに基づき得る。
【００８５】
[0096]  たとえば、パレットベースの符号化ユニット１２２は、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定するように構成され得る。パレットベースの符号化ユニット１２２は、ビデオデータのブロックのパレットサイズを決定するように構成され得る。パレットベースの符号化ユニット１２２は、ビデオデータのブロックのピクセル走査順序を決定するように構成され得る。パレットベースの符号化ユニット１２２は、パレットモードを使用してビデオデータのブロックを符号化するように構成され得る。パレットベースの符号化ユニット１２２は、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定するように構成され得る。
【００８６】
[0097]  別の例として、本開示の態様によれば、パレットベースの符号化ユニット１２２は、ビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを、ピクセルの複数の行のうちの他の行が第１の行の上にない場合に、Ｃｏｐｙモードを使用して符号化するように構成され得る。
【００８７】
[0098]  イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵ用の予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対してイントラ予測を実行し得る。
【００８８】
[0099]  ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、ＰＵの予測データの複数のセットを生成するために、複数のイントラ予測モードを使用することができる。イントラ予測処理ユニット１２６は、ＰＵの予測ブロックを生成するために、隣接ＰＵのサンプルブロックからのサンプルを使用し得る。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はＰＵと関連付けられた領域のサイズに依存し得る。
【００８９】
[0100]  ブロック符号化ユニット１００は、ＰＵのためにインター予測処理ユニット１２０によって生成された予測データ、またはＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵのための予測データを選択することができる。いくつかの例では、ブロック符号化ユニット１００は、予測データのセットのレート／歪み測定基準に基づいて、ＣＵのＰＵの予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
【００９０】
[0101]  残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック、ならびにＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成することができる。たとえば、残差生成ユニット１０２は、残差ブロックの中の各サンプルが、ＣＵのコーディングブロックの中のサンプルと、ＣＵのＰＵの対応する選択された予測ブロックの中の対応するサンプルとの差分に等しい値を有するように、ＣＵの残差ブロックを生成し得る。
【００９１】
[0102]  変換処理ユニット１０４は、ＣＵと関連付けられる残差ブロックをＣＵのＴＵと関連付けられる変換ブロックに区分するために、４分木区分を実行することができる。したがって、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックと関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々と関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【００９２】
[0103]  変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
【００９３】
[0104]  量子化ユニット１０６は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の一部またはすべての関連付けられたビット深度を低減し得る。たとえば、ｎビットの変換係数は量子化の間にｍビットの変換係数へと切り捨てられてよく、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵと関連付けられたＱＰ値を調整することによって、ＣＵと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は、情報の喪失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも精度が低いことがある。
【００９４】
[0105]  逆量子化ユニット１０８および逆変換処理ユニット１１０は、それぞれ、係数ブロックから残差ブロックを再構築するために、係数ブロックに逆量子化および逆変換を適用することができる。再構築ユニット１１２は、ＴＵと関連付けられる再構築された変換ブロックを生成するために、再構築された残差ブロックを、ブロック符号化ユニット１００によって生成された１つまたは複数の予測ブロックからの対応するサンプルに加算することができる。このようにＣＵの各ＴＵのための変換ブロックを再構築することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構築することができる。
【００９５】
[0106]  フィルタユニット１１４は、ＣＵと関連付けられたコーディングブロックの中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を実行し得る。フィルタユニット１１４は、サンプル適応オフセット（ＳＡＯ）フィルタリングおよび／または適応ループフィルタリング（ＡＬＦ）を含む他のフィルタリング動作を実行することができる。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット１２０は、他のピクチャのＰＵに対してインター予測を実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用することができる。加えて、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ中の他のＰＵに対してイントラ予測を実行するために、復号ピクチャバッファ１１６中の再構築されたコーディングブロックを使用することができる。
【００９６】
[0107]  エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受け取ることができ、ブロック符号化ユニット１００からシンタックス要素を受け取ることができる。エントロピー符号化ユニット１１８は、このデータに対して１つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームはＣＵのＲＱＴを表すデータを含み得る。
【００９７】
[0108]  本開示の態様によれば、エントロピー符号化ユニット１１８は、図１などの本開示の様々な図面に関して本明細書で説明されるように、ｋ次の切捨て指数ゴロム（ＴＥＧｋ）符号を使用してパレットデータをコーディングするように構成され得る。具体的には、本開示の態様によれば、エントロピー符号化ユニット１１８は、ビデオデータの符号化されたブロックのピクセルの第１の行の中の少なくとも１つのピクセルがＣｏｐｙモードを使用して符号化されたことを示すデータを符号化することができる。いくつかの例では、エントロピー符号化ユニット１１８は、ＴＥＧｋ符号を使用して、第１の行のＣｏｐｙモードが有効にされたデータを符号化することができる。
【００９８】
[0109]  図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明の目的で与えられており、本開示において広く例示され説明される技法に対する限定ではない。説明の目的で、本開示は、ＨＥＶＣコーディングの文脈において、ビデオデコーダ３０を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【００９９】
[0110]  ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのビデオコーディングまたは非パレットベースのビデオコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなどの、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのビデオコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ３０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
【０１００】
[0111]  図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、ビデオデータメモリ１５１と、ブロック復号ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。ブロック復号ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのビデオコーディング技法の様々な態様を実行するように構成された、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１０１】
[0112]  ビデオデータメモリ１５１は、ビデオデコーダ３０のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ１５１に記憶されるビデオデータは、たとえば、チャネル１６から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ１５１は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１５１は、ビデオデコーダ３０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【０１０２】
[0113]  コーディングされたピクチャのバッファ（ＣＰＢ）は、ビットストリームの符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ＣＰＢから符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、ＮＡＬユニットを解析してシンタックス要素を復号することができる。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。
【０１０３】
[0114]  本開示の態様によれば、エントロピー復号ユニット１５０は、図１の例に関して上で説明されたように、ＴＥＧｋ符号を使用してパレットデータを復号するように構成され得る。具体的には、本開示の態様によれば、エントロピー復号ユニット１５０は、ビデオデータの符号化されたブロックのピクセルの第１の行の中の少なくとも１つのピクセルがＣｏｐｙモードを使用して符号化されたことを示すデータを復号することができる。いくつかの例では、エントロピー復号ユニット１５０は、ＴＥＧｋ符号を使用して、第１の行のＣｏｐｙモードが有効にされたデータを復号することができる。
【０１０４】
[0115]  ブロック復号ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１０５】
[0116]  ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コーディングされたスライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１０６】
[0117]  ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実行し得る。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行することができる。ＣＵの各ＴＵに対して再構築動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築することができる。
【０１０７】
[0118]  ＣＵのＴＵに対して再構築動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵと関連付けられた係数ブロックを逆量子化（ｉｎｖｅｒｓｅ  ｑｕａｎｔｉｚｅ）、すなわち逆量子化（ｄｅ−ｑｕａｎｔｉｚｅ）することができる。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵと関連付けられたＱＰ値を使用することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、利用されるエントロピーコーディングの方法に依存し得る。
【０１０８】
[0119]  逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵと関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用することができる。
【０１０９】
[0120]  イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵ用の予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成するために、イントラ予測モードを使用することができる。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定することができる。
【０１１０】
[0121]  ブロック復号ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵの動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【０１１１】
[0122]  再構築ユニット１５８は、ＣＵのＴＵと関連付けられたルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック、ならびにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。たとえば、再構築ユニット１５８は、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックの対応するサンプルに加算して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。
【０１１２】
[0123]  フィルタユニット１６０は、デブロッキング動作を実行して、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロックと関連付けられたブロッキングアーティファクトを低減することができる。フィルタユニット１６０は、サンプル適応オフセット（ＳＡＯ）フィルタリングおよび／または適応ループフィルタリング（ＡＬＦ）を含む他のフィルタリング動作を実行することができる。ビデオデコーダ３０は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを、復号ピクチャバッファ１６２に記憶することができる。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測動作またはインター予測動作を実行し得る。
【０１１３】
[0124]  本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースのビデオコーディングを実行するように構成され得る。パレットベースの復号ユニット１６５は、たとえば、パレットベースの復号モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１１４】
[0125]  パレットベースの復号ユニット１６５は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、ビデオデコーダ３０は、たとえば、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなどの非パレットベースのビデオコーディングモードを使用して、ビデオデータのブロックを復号することができる。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。
【０１１５】
[0126]  本開示の態様によれば、パレットベースの復号ユニット１６５は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。
【０１１６】
[0127]  本開示の技法によれば、パレットベースの復号ユニット１６５は、ビデオデータのパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。たとえば、パレットベースの復号ユニット１６５は、ビデオデータの符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの符号化されたブロックのピクセル走査順序を推測するように構成され得る。別の例として、パレットベースの復号ユニット１６５は、ブロックレベルシンタックス要素が（ｉ）パレットベースの復号ユニット１６５に送信されなかったので、（ｉｉ）パレットベースの復号ユニット１６５によって受信されないので、または（ｉｉｉ）パレットベースの復号ユニット１６５によって受信されたが、パレットベースの復号ユニット１６５が受信されたブロックレベルシンタックス要素を参照せずにピクセル走査順序を推測するように構成されるので、ビデオデータの符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの符号化されたブロックのピクセル走査順序を推測するように構成され得る。
【０１１７】
[0128]  たとえば、パレットベースの復号ユニット１６５は、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信するように構成され得る。パレットベースの復号ユニット１６５は、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。別の例では、パレットベースの復号ユニット１６５は、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに（それが受信されていてもいなくても）、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測するように構成され得る。パレットベースの復号ユニット１６５は、推測されたピクセル走査順序を使用して、ビデオデータの第１のパレットモード符号化されたブロックを復号するように構成され得る。
【０１１８】
[0129]  いくつかの例では、パレットベースの復号ユニット１６５は、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信するように構成され得る。そのような例では、パレットベースの復号ユニット１６５は、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信するように構成され得る。パレットベースの復号ユニット１６５は、受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定するように構成され得る。パレットベースの復号ユニット１６５は、決定されたピクセル走査順序を使用して、ビデオデータの第２のパレットモード符号化されたブロックを復号するように構成され得る。
【０１１９】
[0130]  別の例として、本開示の態様によれば、パレットベースの復号ユニット１６５は、ビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを、ピクセルの複数の行のうちの他の行が第１の行の上にない場合に、Ｃｏｐｙモードを使用して復号するように構成され得る。
【０１２０】
[0131]  図４は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図４の例は、第１のパレット１８４と関連付けられる第１のパレットコーディングされた（ＰＡＬ）コーディングユニット（ＣＵ）１８０と第２のパレット１９２と関連付けられる第２のＰＡＬ  ＣＵ１８８とを有するピクチャ１７８を含む。下でより詳細に説明されるように、本開示の技法によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８はまた、イントラ予測コーディングモードによりコーディングされるブロック１９６と、インター予測コーディングモードによりコーディングされるブロック２００とを含む。
【０１２１】
[0132]  図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）の状況において、説明を目的としてＨＥＶＣビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０１２２】
[0133]  一般に、パレットは、現在コーディングされているＣＵ、図４の例ではＣＵ１８８について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０のような）は、ＣＵの各々の色成分に対して別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのさらに別のパレットとを符号化することができる。この例では、ＹパレットのエントリーはＣＵのピクセルのＹの値を表すことができ、ＵパレットのエントリーはＣＵのピクセルのＵの値を表すことができ、ＶパレットのエントリーはＣＵのピクセルのＶの値を表すことができる。
【０１２３】
[0134]  他の例では、ビデオエンコーダ２０は、ＣＵのすべての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、三重の値であるｉ番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット１８４および１９２の表現は、一例にすぎず、限定することは意図されない。
【０１２４】
[0135]  図４の例では、第１のパレット１８４は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０２〜２０６を含む。エントリー２０２〜２０６は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｃをそれぞれ含むピクセル値に、インデックス値を関連付ける。本明細書で説明されるように、第１のＣＵ１８０の実際のピクセル値をコーディングするのではなく、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０など）は、インデックス１〜３を使用してブロックのピクセルをコーディングするために、パレットベースのビデオコーディングを使用することができる。すなわち、第１のＣＵ１８０の各ピクセル位置に対して、ビデオエンコーダ２０はピクセルのインデックス値を符号化することができ、インデックス値は、第１のパレット１８４の１つまたは複数の中のピクセル値と関連付けられる。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し、インデックス値と第１のパレット１８４の１つまたは複数とを使用してピクセル値を再構築することができる。したがって、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。
【０１２５】
[0136]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測パレット、この例では第１のパレット１８４が決定される際に参照する、１つまたは複数のブロックを位置特定することができる。予測の目的で使用されているエントリーの組合せは、予測子パレットと呼ばれ得る。
【０１２６】
[0137]  図４の例では、第２のパレット１９２は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０８〜２１２を含む。エントリー２０８〜２１２は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｄをそれぞれ含むピクセル値に、インデックス値を関連付ける。この例では、ビデオエンコーダ２０は、第１のパレット１８４（予測子パレットを表す、ただし予測子パレットはいくつかのブロックのエントリーを含み得る）のどのエントリーが第２のパレット１９２に含まれるかを示す１つまたは複数のシンタックス要素をコーディングし得る。
【０１２７】
[0138]  図４の例では、１つまたは複数のシンタックス要素は、ベクトル２１６として示される。ベクトル２１６は、いくつかの関連するビン（またはビット）を有し、各ビンは、そのビンと関連付けられた予測子パレットが現在のパレットのエントリーを予測するために使用されるかどうかを示す。たとえば、ベクトル２１６は、第１のパレット１８４の最初の２つのエントリー（２０２および２０４）が、第２のパレット１９２中に含まれる（ベクトル２１６中の「１」の値）一方で、第１のパレット１８４の第３のエントリーが、第２のパレット１９２中に含まれない（ベクトル２１６中の「０」の値）ことを示す。図４の例では、ベクトルは、ブールベクトルである。このベクトルはパレット予測ベクトルと呼ばれることがある。
【０１２８】
[0139]  いくつかの例では、本明細書で述べられたように、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測を実行するとき、（予測子パレットテーブルまたは予測子パレットリストとも呼ばれ得る）予測子パレットを決定することができる。予測子パレットは、現在のブロックをコーディングするためのパレットの１つまたは複数のエントリーを予測するために使用される１つまたは複数の隣接ブロックのパレットからのエントリーを含み得る。ビデオエンコーダ２０およびビデオデコーダ３０は、同じ方式でリストを構築し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、予測子パレットのどのエントリーが現在のブロックをコーディングするためのパレットに複製されるべきかを示すために、データ（ベクトル２１６など）をコーディングし得る。
【０１２９】
[0140]  したがって、いくつかの例では、以前に復号されたパレットエントリーは、パレット予測子として使用するためにリストに記憶される。このリストは、現在のパレットモードＣＵにおいてパレットエントリーを予測するために使用され得る。リスト中のどのエントリーが現在のパレットにおいて再使用されるかを示すために、二進予測ベクトルがビットストリームにおいてシグナリングされ得る。２０１４年６月２７日に出願された米国仮出願第６２／０１８，４６１号では、二進パレット予測子を圧縮するために、ランレングスコーディングが使用される。ある例では、ランレングス値は、０次の指数ゴロム符号を使用してコーディングされる。
【０１３０】
[0141]  本開示の態様によれば、いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０（たとえば、エントロピー符号化ユニット１１８およびエントロピー復号ユニット１５０）は、図１の例に関して上で説明されたように、ｋ次の切捨て指数ゴロム（ＴＥＧｋ）符号を使用して、ブロックのパレットのための二進パレット予測ベクトルをコーディング（たとえば、それぞれ符号化および復号）するように構成され得る。
【０１３１】
[0142]  いくつかの事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、規格提案文書、Ｓｅｒｅｇｉｎ他、「Ｎｏｎ−ＳＣＣＥ３：  Ｒｕｎ−Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｐｒｅｄｉｃｔｏｒ」、ＪＣＴＶＣ−Ｒ０２２８、札幌、日本、２０１４年６月３０日〜７月９日（以後ＪＣＴＶＣ−Ｒ０２２８）において記述される技法とともに、ＴＥＧｋ符号を使用して、二進パレット予測ベクトルをコーディングするように構成され得る。ＪＣＴＶＣ−Ｒ０２２８において、ランレングスコーディングは、以下の条件およびステップを用いて二進ベクトル中の０の要素をコーディングするために使用される。
１に等しいランレングス値は予測の終了を示す
予測の終了は二進ベクトル中の最後の１に対してはシグナリングされない
先行する０の要素の数が二進ベクトル中の各々の１に対してコーディングされる
０の要素の数が０より多い場合、１というエスケープ値が原因で、その数に１を足したものがシグナリングされる
０次の指数ゴロム符号を使用してランレングス値がコーディングされる
[0143]  説明を目的とする例では、二進パレット予測ベクトルは｛１１００１０００１００００｝に等しくてよく、パレット予測子の４つのエントリー（４つの１によって示される）が現在のブロックをコーディングするためのパレットに複製されることを示す。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、０−０−３−４−１としてベクトルをコーディングし得る。
【０１３２】
[0144]  本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、二進パレット予測ベクトルを、そのベクトルのための最大ラン値Ｘを使用してコーディングすることができ、最大ラン値Ｘは、パレット予測子リスト中のパレットエントリーの数から走査順序における現在の位置を引き、さらに１を引いたものに等しくてよい）。一例によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、ラン値をコーディングするためにＴＥＧ０符号を使用する。
【０１３３】
[0145]  図５は、本開示の技法に従った、ピクセルのブロックのためのパレットに対するインデックスを決定する例を示す概念図である。たとえば、図５は、パレットインデックスと関連付けられるピクセルのそれぞれの位置をパレット２４４のエントリーに関連付ける、パレットインデックスのマップ２４０を含む。
【０１３４】
[0146]  たとえば、インデックス１は値Ａと関連付けられ、インデックス２は値Ｂと関連付けられ、インデックス３は値Ｃと関連付けられる。加えて、エスケープサンプルが暗黙的エスケープシグナリングを使用して示されるとき、ビデオエンコーダ２０およびビデオデコーダ３０はまた、インデックス４として図５に示される追加のインデックスをパレット２４４に追加することができ、これは、インデックス４と関連付けられるマップ２４０のサンプルがエスケープサンプルであることを示し得る。この場合、ビデオエンコーダ２０は、ピクセル値がパレット２４４に含まれない場合、マップ２４０の中のある位置に対する実際のピクセル値（またはその量子化されたバージョン）を示すものを符号化することができる（および、ビデオデコーダ３０は、符号化されたビットストリームからそれを取得することができる）。
【０１３５】
[0147]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのピクセル位置が関連するパレットインデックスであるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の（ｉ，ｊ）のエントリーがＣＵの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー（すなわち、各ピクセル位置）のための１つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の場所におけるピクセル値がパレット２４４の中の値の１つであることを示すように、１という値を有するフラグを符号化することができる。
【０１３６】
[0148]  そのような例では、ビデオエンコーダ２０はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするように、パレットインデックス（値１〜３として図５の例では示される）を符号化することができる。パレット２４４が単一のエントリーと関連付けられるピクセル値とを含む例では、ビデオエンコーダ２０は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の場所におけるピクセル値がパレット２４４の中の値の１つではないことを示すように、０という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ２０はまた、ピクセル値を再構築する際にビデオデコーダ３０によって使用するために、ピクセル値の指示を符号化することができる。いくつかの例では、ピクセル値は有損失の方式でコーディングされ得る。
【０１３７】
[0149]  ＣＵの１つの位置におけるピクセルの値は、ＣＵの他の位置における１つまたは複数の他のピクセルの値の指示を提供することができる。たとえば、ＣＵの隣接ピクセル位置が同じピクセル値を有すること、または、（２つ以上のピクセル値が単一のインデックス値にマッピングされ得る、有損失コーディングの場合において）ＣＵの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
【０１３８】
[0150]  したがって、ビデオエンコーダ２０は、同じピクセル値またはインデックス値を有する、所与の走査順序の中の連続するピクセル値またはインデックス値の数を示す１つまたは複数のシンタックス要素を符号化することができる。上で述べられたように、同様の値のピクセル値またはインデックス値の列は、本明細書ではランと呼ばれ得る。例示を目的とする例では、所与の走査順序の２つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序の３番目のピクセルまたはインデックスが異なる値を有する場合、ランは１に等しい。同じ値を伴う３つの連続するインデックスまたはピクセルでは、ランは２であり、以下同様である。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じピクセル値またはインデックス値を有する連続する場所の数を決定することができる。
【０１３９】
[0151]  上で述べられたように、ランは、ＣｏｐｙＦｒｏｍＴｏｐモードまたはＶａｌｕｅモードとともに使用され得る。説明を目的とする例では、マップ２４０の行２６４と２６８とを考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」という３個のパレットインデックスと、「２」という２個のパレットインデックスと、「３」という３個のパレットインデックスとを含む。行２６８は、「１」という５個のパレットインデックスと、「３」という２個のパレットインデックスと、パレット２４４に含まれない１個のサンプル（インデックス４によって表される、ただしサンプルレベルエスケープフラグが明示的エスケープシグナリングのために使用され得る）とを含み、この１個のサンプルはエスケープサンプルと呼ばれ得る。
【０１４０】
[0152]  この例では、ビデオエンコーダ２０は、行２６８のためのデータを符号化するために、ＣｏｐｙＦｒｏｍＴｏｐモードを使用し得る。たとえば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、行２６８の中の走査方向の２つの連続するエントリーの次のランが行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。
【０１４１】
[0153]  行２６４の第１の位置を示す１つまたは複数のシンタックス要素と、（上で述べられた）２つのエントリーのランとを符号化した後で、ビデオエンコーダ２０は、Ｖａｌｕｅモードを使用して、（左から右に）行２６８の中の第４の位置と第５の位置とを符号化することができる。たとえば、ビデオエンコーダ２０は、第４の位置に対して１という値を示す１つまたは複数のシンタックス要素と、１というランを示す１つまたは複数のシンタックス要素とを符号化することができる（たとえば、Ｖａｌｕｅモード）。したがって、ビデオエンコーダ２０は、別の線を参照することなくこれらの２つの位置を符号化する。
【０１４２】
[0154]  ビデオエンコーダ２０は次いで、上の行２６４に対してＣｏｐｙＦｒｏｍＴｏｐモードを使用して、行２６８の中の３というインデックス値を有する第１の位置を符号化することができる。たとえば、ビデオエンコーダ２０は、ＣｏｐｙＦｒｏｍＴｏｐモードと、１というランとをシグナリングすることができる。したがって、ビデオエンコーダ２０は、たとえばランを使用して線のピクセル値またはパレットインデックスを線の他の値に対してコーディングすること、線のピクセル値またはを別の線（または列）の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。ビデオエンコーダ２０は、いくつかの例では、この選択を行うために、レート／歪みの最適化を実行することができる。
【０１４３】
[0155]  ビデオエンコーダ２０は次いで、走査順序に従って（たとえば、左から右に）行２６８の最後のサンプルのためのエスケープサンプルを符号化することができ、これは第１のパレット２４４に含まれない。たとえば、ビデオエンコーダ２０は、行２６８の最後の位置をエスケープサンプルとして符号化することができる。すなわち、ビデオエンコーダ２０は、行２６８の最後の位置がエスケープサンプル（たとえば、インデックス４）であるという指示、ならびにサンプル値の指示を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから上で説明されたシンタックスを取得し、そのようなシンタックスを使用して行２６８を再構築することができる。
【０１４４】
[0156]  ビデオデコーダ３０は、上で説明されたシンタックス要素を受け取り、行２６８を再構築することができる。たとえば、ビデオデコーダ３０は、現在コーディングされているマップ２４０の場所に対する関連するインデックス値をコピーする際に元となる、隣接する行の中の特定の位置を示すデータを取得することができる。ビデオデコーダ３０はまた、同じインデックス値を有する、走査順序の中の連続する場所の数を示すデータを取得することができる。水平方向の走査順序に関して説明されるが、本開示の技法はまた、垂直方向または対角方向（たとえば、ブロックにおいて対角方向に４５度または１３５度）の走査順序または走査方向などの、別の走査順序または走査方向に適用され得る。
【０１４５】
[0157]  本開示の技法は、以下でより詳細に説明されるように、パレットサイズの定義を含むパレットベースのビデオコーディングの設計に関する。本開示の技法は、スクリーンコンテンツコーディングおよびＨＥＶＣに対する他の拡張、ならびに、スクリーンコンテンツコーディングを利用する他のビデオコーデックとともに使用され得る。
【０１４６】
[0158]  ＨＥＶＣパレットコーディングの一例では、ブロックのピクセルは、ＲｕｎモードまたはＥｓｃａｐｅモードだけが使用されるときのブロックの最初の行を除き、Ｒｕｎモード、Ｃｏｐｙモード、またはＥｓｃａｐｅモードの１つを用いてコーディングされ得る。Ｒｕｎモードが使用されるかＣｏｐｙモードが使用されるかを示すために、シンタックス要素ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇが生成され得る。ｒｕｎモードでは、パレットインデックス（ｐａｌｅｔｔｅ＿ｉｎｄｅｘ）がラン値（ｐａｌｅｔｔｅ＿ｒｕｎ）とともにシグナリングされる。ラン値は、同じパレットインデックスを有するピクセルの数を示す。Ｃｏｐｙモードでは、現在のピクセルのすぐ上に位置するピクセルからパレットインデックスがコピーされるピクセルの数を示す、ラン値だけがシグナリングされる。Ｅｓｃａｐｅモードは、特定のパレットインデックスがこのモードを示すために使用される場合、Ｒｕｎモード内でコーディングされる。あるパレットコーディングモードの提案では、その特定のパレットインデックスはパレットサイズに等しい。Ｅｓｃａｐｅモードでは、ラン値はコーディングされず、それは、Ｅｓｃａｐｅモードが単一のピクセルトリプレット（たとえば、ピクセルのＹ、Ｃｒ、およびＣｂ色成分）に適用されるからであり、ここで色成分の値はシンタックス要素ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌを使用して明示的にシグナリングされる。
【０１４７】
[0159]  エスケープピクセル（escape pixel）の使用を示すために、フラグ（たとえば、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇ）がブロックごとにシグナリングされ得る。１に等しいｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは、パレットコーディングされたブロック中に少なくとも１つのエスケープピクセルがあることを示し、それ以外の場合、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは０に等しい。
【０１４８】
[0160]  パレット中の値の数（すなわち、パレットサイズ）は、いくつかの値のうちの１つに設定されてよく、所定の最大サイズを有してよい。たとえば、ＨＥＶＣにおけるパレットコーディングの１つの提案では、パレットサイズは０からｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅ（一例では３１に等しい）の範囲内にあるように制約される。
【０１４９】
[0161]  あるパレットコーディングモードを用いてコーディングされるブロックについて、パレット中の値は、以前にパレットコーディングされたブロックのために使用されるパレットのパレットエントリーから予測され得る。いくつかの例では、パレットのエントリーは新たなエントリーとして明示的にシグナリングされ得る。他の例では、以前にコーディングされたブロックのパレットからのエントリーが、後続のパレットのために再使用され得る。このケースはパレット共有と呼ばれ、修正を伴わずに以前のブロックのパレット全体が再使用されることを示すために、フラグ（たとえば、ｐａｌｅｔｔｅ＿ｓｈａｒｅ＿ｆｌａｇ）がシグナリングされ得る。
【０１５０】
[0162]  パレットコーディングモードに対するいくつかの提案では、ブロックにおけるピクセル走査は、垂直横行走査または水平横行（たとえば、蛇状）走査という、２つのタイプであり得る。水平方向の走査順序の一例が図６Ａに示されており、図６Ａは、ピクセルのアレイ２７２を用いて図示されるビデオデータ２７０のブロックと、水平方向の走査順序２７４とを示している。垂直方向の走査順序の一例が図６Ｂに示されており、図６Ｂは、ピクセルのアレイ２７２を用いて図示されるビデオデータ２７０のブロックと、垂直方向の走査順序２７６とを示している。特定のブロックのために使用される走査パターンは、ブロック単位ごとにシグナリングされるフラグ（たとえば、ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇ）から導出され得る。
【０１５１】
[0163]  現在のパレットコーディングの設計には、以下の欠点がある。１つの例示的な欠点として、パレットコーディングに対するいくつかの提案において、ブロック中の最大パレットサイズは３１に等しいことがあり、これは、最大のパレットインデックスが３０に等しい可能性があり、３１に等しいパレットインデックスを用いてエスケープピクセルがシグナリングされることを意味する。言い換えると、シグナリングされ得る有効なパレットインデックスは３１に等しいことがあり、これは３２という最大パレットサイズに対応する。しかしながら、ブロック中にエスケープピクセルがないことをｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが示す場合、コーディングされ得る最大パレットインデックスは依然として３０であり、この場合、３１に等しいパレットインデックスは使用されない。同様に、パレット共有が使用されるとき、３０に等しいパレットインデックスまでは、現在のブロックにおけるエスケープピクセルの存在とは無関係に使用され得る。
【０１５２】
[0164]  別の欠点として、パレットコーディングに対するいくつかの提案において、０に等しいパレットサイズが使用され得る。この場合、ピクセルはＥｓｃａｐｅモードだけを用いてコーディングされ得る。結果として、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが、１に等しい値を用いて常にシグナリングされなければならず、０という値を有することができない。
【０１５３】
[0165]  別の欠点として、パレットコーディングに対するいくつかの提案において、パレットサイズが０に等しい場合、唯一の可能なピクセルモードはＥｓｃａｐｅモードである。この場合、ピクセルが処理される走査モードは、何ら影響を与えない（すなわち、垂直横行走査および水平横行走査が同じ結果を生み出す）。しかしながら、走査モードを示すためのフラグはまだシグナリングされる。同様に、パレットサイズが１に等しく、エスケープピクセルが使用されないとき、唯一の可能なモードは、パレットインデックスが０に等しいＲｕｎモードである。使用される走査順序は、この状況においても何ら影響を与えない。
【０１５４】
[0166]  別の欠点として、パレットコーディングに対するいくつかの提案において、ピクセルモードのシグナリングは、ブロックにおいて均一にシグナリングされない。これは、ブロックの最初の行に対しては、モードがＣｏｐｙモードになり得ないからである。したがって、ブロックの第１の行に対して、モードインデックスは、Ｒｕｎモード（または特定のパレットインデックス値に対してはＥｓｃａｐｅモード）に等しくなるように導出される。この導出プロセスは構文解析の間の確認をもたらし、それは、いくつかの場合には、モード値は構文解析されず、導出されるからである。
【０１５５】
[0167]  別の欠点として、パレットコーディングのためのＣｏｐｙモードに対するいくつかの提案において、Ｅｓｃａｐｅモードを用いてコーディングされる上のピクセル（すなわち、現在コーディングされているピクセルのすぐ上のピクセル）は、Ｃｏｐｙモードのラン値へと含められることがある。しかしながら、コピー処理は、エスケープコーディングされたピクセルに対して定義されず、それは、それらのピクセルが２つの情報（すなわち、パレットインデックスおよびエスケープ値）を含むからである。ビデオエンコーダ２０が、Ｃｏｐｙモードにおいて行われるように、上のピクセルからのパレットインデックス（これは、エスケープモードを表す特定のパレットインデックスである）を単にコピーするとしたら、現在のピクセルに対するエスケープ値は定義またはシグナリングされない。このことは、構文解析において問題を生むことがあり、それは、ビデオデコーダ３０がエスケープピクセルを復号することを試みるときに、シグナリングされることが予想されるエスケープ色値が存在しないからである。
【０１５６】
[0168]  別の欠点として、パレットコーディングに対するいくつかの提案において、現在のブロックのためのパレットを導出するために２つの一般的な方法がある。１つの方法は、新たなエントリーがシグナリングされ得ない場合に、以前のパレットコーディングされたブロックからのパレットを完全に再使用することを伴う（パレット共有）。２番目の方法は、パレット予測子バイナリベクトル（palette predictor binary vector）をシグナリングすることを伴う。パレット予測子バイナリベクトルは、新たなパレットエントリーとともに、以前のパレットコーディングされたブロックのパレットエントリーの指示を含む。現在の提案では、それらの２つのパレット導出方法の間にある何かをすること、すなわち、パレット予測子ベクトルをシグナリングせずに以前のパレットコーディングされたブロックのパレットを完全に再使用し、しかしそれでも新たなパレットエントリーを追加でシグナリングすることは、可能ではない。したがって、現在の提案は柔軟性を欠いている。
【０１５７】
[0169]  前述の欠点を考慮して、本開示は、パレットサイズの定義を含む、パレットコーディングの設計の方法と技法とを提案する。
【０１５８】
[0170]  本開示の一例では、改善されたパレットサイズの定義が提案される。この例では、パレットサイズは、パレットの最大の可能なインデックスがエスケープピクセルを表すインデックスを含むように定義される。現在のパレットコーディング技法のための上の例を参照すると、最大パレットサイズが３１であるとき、エスケープピクセルに対して最大パレットインデックスは３１である。本開示は、最大パレットサイズを３２に等しくし、最大の可能なシグナリングされるパレットインデックス値を３１とすることを提案する。またはより一般的には、最大の可能なシグナリングされるパレットインデックス値は、最大パレットサイズより１少ない。
【０１５９】
[0171]  本開示の例では、エスケープピクセルが現在のブロックにおいて使用されないとき（たとえば、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇフラグによって示されるように）、この例では空である３１に等しい以前のパレットインデックスが、Ｒｕｎモードにおいて使用され得る。ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇシンタックス要素は、１つまたは複数のビットによって定義され得る。例では、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが単一のビットである場合、１に等しい値は、現在のブロックがエスケープピクセルを含み得ること、または実際に含むことを規定し得る。０に等しい値は、現在のブロックがエスケープピクセルを含まないことがあること、または実際に含まないことを規定し得る。
【０１６０】
[0172]  Ｅｓｃａｐｅモードの指示は変更されないままであることがあり、すなわち、Ｅｓｃａｐｅモードの指示は、最大で３１という値である（すなわち０から３１という値の）最大パレットインデックスであり、Ｒｕｎモードにおけるパレットインデックスは、最大で３０（すなわち、０から３０という値）に等しくてよい。言い換えると、ｐａｌｅｔｔｅ＿ｓｉｚｅのパレット内に、エスケープコーディングされるピクセルのための余剰のパレットインデックスは確保されていないことがわかり得る。
【０１６１】
[0173]  より一般的な意味において、Ｒｕｎモードで使用される最大パレットインデックスは、ブロック中にエスケープコーディングされるピクセルがなければ、ｐａｌｅｔｔｅ＿ｓｉｚｅ−１であってよく、たとえばｐａｌｅｔｔｅ＿ｓｉｚｅ−１に等しいパレットインデックスによって示され得る少なくとも１つのエスケープコーディングされるピクセルがブロック中にあれば、ｐａｌｅｔｔｅ＿ｓｉｚｅ−２であってよい。
【０１６２】
[0174]  この場合、ｐａｌｅｔｔｅ＿ｓｉｚｅは常に０より大きく、再使用されるパレットエントリーの数とシグナリングされる新たなパレットエントリーの数の合計として導出されるｐａｌｅｔｔｅ＿ｓｉｚｅは、ｐａｌｅｔｔｅ＿ｓｉｚｅがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しくない場合、１だけ増やされる。
【０１６３】
[0175]  加えて、パレット共有が使用され、ｐａｌｅｔｔｅ＿ｓｉｚｅのパレット内のパレットインデックスがエスケープピクセルに対して利用不可能である、または別様に確保されていないとき、パレットサイズは単純に１だけ拡張されることが不可能であり、それは、パレットサイズがすでにｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しい可能性があるからである。この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットサイズの確認を実行することができ、共有されるパレットのｐａｌｅｔｔｅ＿ｓｉｚｅがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅより小さい場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇに基づいて現在のブロックのパレットサイズを変更する、または変えることができる。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、エスケープピクセルがブロックにおいて使用される場合（たとえば、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇによって示されるように）、現在のブロックのパレットサイズを１だけ増やす。しかしながら、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｓｉｚｅがすでにｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しいと決定することができ、それに応答して、現在のブロックのパレットサイズを変更する、または変えることができる。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、エスケープピクセルに対して現在のブロックのパレットサイズを１だけ増やす前に、現在のブロックのパレットサイズを１だけ減らすことができる。この例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅ−１に等しいパレットインデックスに関連する最後のエントリーに対して、再使用されるパレット予測子フラグを０に設定することができる。
【０１６４】
[0176]  別の例では、パレット共有が使用されず、パレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しい場合、エスケープピクセルはブロックにおいてコーディングされなくてよく、ビデオエンコーダ２０は０に等しい値を伴うｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングすることができる。ビデオエンコーダ２０は、パレットサイズに依存する対応する値（たとえば、０または１）を伴うｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇを条件的にシグナリングすることができる。別の例では、ビデオエンコーダ２０は、現在のブロックのパレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しい場合、パレット共有モードに依存する対応する値（たとえば、０または１）を伴うｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇを条件的にシグナリングすることができる。別の例では、パレット共有が有効にされた状態でパレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しいときにエスケープピクセルのシグナリングを有効にすることが望まれるとき、パレット共有が使用されない場合、ビデオエンコーダ２０はｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングしなくてよく、ビデオデコーダ３０はｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値を０に等しいものとして導出することができる。他の例では、ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇがビデオエンコーダ２０によってシグナリングされないとき、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値を１に等しいものとして導出することができる。
【０１６５】
[0177]  以下のセクションは、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値を導出するための技法を論じる。０に等しいパレットサイズに基づいて、ビデオエンコーダ２０は、Ｅｓｃａｐｅモードでコーディングされるピクセルだけが現在のブロックにおいて使用され得ると決定することができる。この例では、ビデオエンコーダは、１に等しい値を伴うｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングすることができ、またはそれを常にシグナリングする。ビデオエンコーダ２０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングしないことがあり、またはそれを常にシグナリングせず、それは、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値がこの例では一定であるからである。代わりに、ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値を１に等しいものとして推測するように構成され得る。他の例では、ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値を０に等しいものとして推測するように構成され得る。
【０１６６】
[0178]  ビデオエンコーダ２０は、ビデオデータの現在のブロックのパレットサイズに基づく対応する値を伴うｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇを条件的にシグナリングすることができる。たとえば、ビデオエンコーダ２０は、パレットサイズが０に等しいとビデオエンコーダ２０が決定したことに応答して、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングしなくてよい。別の例として、ビデオエンコーダ２０は、パレットインデックスをシグナリングしないように構成されてよく、それは、パレットインデックスが０に等しく導出されることもあるからである。この場合、パレットモードはイントラＰＣＭモードと類似している。しかしながら、ビデオエンコーダ２０は、この場合のエスケープ値に対するランをシグナリングし、そのランをＰＣＭとは異なるものにし、いくらかの信号の冗長性を捉えるように構成され得る。
【０１６７】
[0179]  たとえば、この方法は、ＳＣＣ  ＷＤに対して次のように実施されてよく、追加が下線付きのテキストによって表されている。
【０１６８】
【表１】
0006571162.tif 000002
【０１６９】
１に等しいｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは、現在のブロックがエスケープピクセルを含み得ることを規定する。０に等しいｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは、現在のブロック中にエスケープピクセルがないことを規定する。ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが存在しない場合、それは１に等しいと推測される。
【０１７０】
[0180]  別の例では、本開示の技法は、シンタックス要素に対する規範的な制約として次のように実装されてよく、ＳＣＣ  ＷＤへの追加が下線付きのテキストによって表されている。
１に等しいｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは、現在のブロックがエスケープピクセルを含み得ることを規定する。０に等しいｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは、現在のブロック中にエスケープピクセルがないことを規定する。ｐａｌｅｔｔｅ＿ｓｉｚｅが１に等しい場合、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇは１に等しいものとする。
【０１７１】
[0181]  この規則が破られる場合、そのようなビットストリームは規格に適合しないものと見なされる。
【０１７２】
[0182]  パレットサイズの定義およびｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの導出について上で説明された方法は、例として与えられる次の実装形態と一緒に組み合わされてよく、ＳＣＣ  ＷＤへの追加が下線付きのテキストによって表されている。
【０１７３】
【表２】
0006571162.tif 000003
【０１７４】
[0183]  上の表のイタリック体の条件は、パレット共有が有効にされるときにｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅに等しいパレットサイズを伴うパレットモードにエスケープピクセルが含まれ得ない場合、除去され得る。変数ｉｎｄｅｘＭａｘは、最大の可能なパレットインデックスを示し、これは、ＳＣＣ ＷＤにおけるｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇに基づく条件的な調整と対照的に、ｐａｌｅｔｔｅ＿ｓｉｚｅ−１として非条件的に設定され得る。
【０１７５】
[0184]  本開示のこのセクションは、走査順序のシグナリングを説明する。本開示のいくつかの例によれば、ピクチャ（たとえば、現在のＣＵ、ＰＵ、またはサブＰＵ）のビデオデータの現在のブロックのための走査順序（ｓｃａｎｎｉｎｇ  ｏｒｄｅｒ）のシグナリング（または走査順序（ｓｃａｎ  ｏｒｄｅｒ）のシグナリング）は、ビデオデータの現在のブロックのパレットサイズが０に等しいとき、またはパレットサイズが１に等しくエスケープピクセルがそのブロックにおいて使用されないときには必要とされず、それは、唯一の可能なピクセルモードがそれぞれ、ＥｓｃａｐｅモードまたはＲｕｎモードであるからである。
【０１７６】
[0185]  本開示は、走査順序が影響を与え得る場合（すなわち、異なる走査順序が異なる結果を生み出すとき）にだけ、たとえば、パレットサイズが０より大きくエスケープピクセルが使用されるとき、または、エスケープピクセルが使用されない場合にパレットサイズが１より大きいとき、ビデオエンコーダ２０が走査順序フラグをシグナリングすることを提案する。
【０１７７】
[0186]  ２つの例として、この方法は、ＳＣＣ  ＷＤに対して次のように実施されてよく、追加が下線付きのテキストによって表されている。
【０１７８】
【表３】
0006571162.tif 000004
【０１７９】
または
【０１８０】
【表４】
0006571162.tif 000005
【０１８１】
１に等しいｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇは、転置処理（transpose process）が現在のＣＵ（たとえば、符号化または復号されているピクチャのビデオデータの現在のブロック）の関連するパレットインデックスに適用されることを規定する。０に等しいｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇは、転置処理が現在のＣＵの関連するパレットインデックスに適用されないことを規定する。ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇが存在しない場合、それは０であると推測される。
【０１８２】
[0187]  存在しない場合にｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇの値が０に等しいとビデオデコーダ３０が推測する代わりに、他の例では他の事前に定められた走査順序が使用され得る。この方法はまた、３つ以上の走査パターンに拡張され得る。
【０１８３】
[0188]  走査順序をシグナリングするための本開示の技法の一例では、ビデオエンコーダ２０は、ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇの値をシグナリングする前に、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値をシグナリングしなければならない。
【０１８４】
[0189]  別の例では、ビデオエンコーダは、ビデオデータの現在のブロックのパレットサイズが０に等しいと決定することができ、結果として、ビデオエンコーダ２０は、各ピクセルをエスケープピクセルとしてコーディングすることができる。エンコーダのレート−歪みの最適化の観点からは、この事例は選ばれる可能性はより低い。したがって、パレットモードが選択される場合にはパレットサイズが１以上でなければならないという制約を、パレットモードに対して課すことが提案される。
【０１８５】
[0190]  このビットストリームの制約に基づいて、ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓシンタックス要素のセマンティクスは次の通りであり、ＳＣＣ  ＷＤに対する追加が下線付きのテキストによって表されている。
【０１８６】
【表５】
0006571162.tif 000006
【０１８７】
ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓは、ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅが０より大きい場合、現在のコーディングユニットのために明示的にシグナリングされるパレット中のエントリーの数を規定する。ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓは、ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅが０に等しい場合、現在のコーディングユニットのために明示的にシグナリングされるパレット中のエントリーの数から１を引いたものを規定する。
【０１８８】
[0191]  本開示の別の例では、ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅが０に等しいときにシンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓのセマンティクスを変える代わりに、シンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓの値の有効範囲だけが次のように変更され、ＳＣＣ  ＷＤに対する変更が下線付きのテキストによって表されている。
ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓは、現在のコーディングユニットのために明示的にシグナリングされるパレット中のエントリーの数を規定する。ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓの値は、次のように制約される。ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅが０より大きい場合、ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓは、両端を含めて０から（ｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅ−ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅ）の範囲内にあるものとする。それ以外の場合（すなわち、ｎｕｍＰｒｅｄＰｒｅｖｉｏｕｓＰａｌｅｔｔｅが０に等しい場合）、ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｌｅｄ＿ｅｎｔｒｉｅｓは、両端を含めて１からｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅの範囲内にあるものとする。
【０１８９】
[0192]  図７は、本開示の技法による、ビデオデータを復号するための例示的なプロセスを示すフローチャートである。図７のプロセスは全般に、例示を目的として、ビデオデコーダ３０によって実行されるものとして説明されるが、様々な他のプロセッサも図７に示されるプロセスを実行し得る。いくつかの例では、ブロック復号ユニット１５２および／またはパレットベースの復号ユニット１６５は、図７に示される１つまたは複数のプロセスを実行することができる。
【０１９０】
[0193]  図７の例では、ビデオデコーダ３０は、ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信することができる（２８０）。ビデオデコーダ３０は、第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測することができる（２８２）。いくつかの例では、ビデオデコーダ３０によって受信されないブロックレベルシンタックス要素は、ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇであり得る。ビデオデコーダ３０は、推測されたピクセル走査順序を使用して、ビデオデータの第１のパレットモード符号化されたブロックを復号することができる（２８４）。
【０１９１】
[0194]  いくつかの例では、ビデオデコーダ３０は、ビデオデータの第１のパレットモード符号化されたブロックを復号するためにビデオデータの第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに転置処理が適用されることになるように、または適用されないことになるように、第１のパレットモード符号化されたブロックのための第１のブロックレベルシンタックス要素の値を推測することによって、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測することができる。転置処理がビデオデータの第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに適用されることになる例では、ブロックレベルシンタックス要素の推測される値は１であり得る。転置処理がビデオデータの第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに適用されないことになる例では、ブロックレベルシンタックス要素の推測される値は０であり得る。いくつかの例では、ビデオデコーダ３０は、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序が非水平方向（non-horizontal）または非垂直方向（non-vertical）のピクセル走査順序（pixel scan order）であると推測されるように、ブロックレベルシンタックス要素の値を推測することによって、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測することができる。
【０１９２】
[0195]  いくつかの例では、ビデオデコーダ３０は、ビデオデータの第１のパレットモード符号化されたブロックのパレットサイズが、０という値に等しい、１という値に等しい、０という値より大きい、または１という値より大きいことに基づいて、ビデオデータの第１のパレットモード符号化されたブロックのピクセル走査順序を推測することができる。
【０１９３】
[0196]  ビデオデコーダ３０は、ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信することができる（２８６）。ビデオデコーダ３０は、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することができる（２８８）。いくつかの例では、受信されたブロックレベルシンタックス要素は、ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇであり得る。ビデオデコーダ３０は、受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの第２のパレットモード符号化されたブロックのピクセル走査順序を決定することができる（２９０）。ビデオデコーダ３０は、決定されたピクセル走査順序を使用して、ビデオデータの第２のパレットモード符号化されたブロックを復号することができる（２９２）。
【０１９４】
[0197]  図８は、本開示の技法による、ビデオデータを符号化するための例示的なプロセスを示すフローチャートである。図８のプロセスは全般に、例示を目的として、ビデオエンコーダ２０によって実行されるものとして説明されるが、様々な他のプロセッサも図７に示されるプロセスを実行し得る。いくつかの例では、ブロック符号化ユニット１００および／またはパレットベース符号化ユニット１２２は、図８に示される１つまたは複数のプロセスを実行することができる。
【０１９５】
[0198]  図８の例では、ビデオエンコーダ２０は、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定することができる（３００）。ビデオエンコーダ２０は、ビデオデータのブロックのパレットサイズを決定することができる（３０２）。ビデオエンコーダ２０は、ビデオデータのブロックのピクセル走査順序を決定することができる（３０４）。ビデオエンコーダ２０は、パレットモードを使用してビデオデータのブロックを符号化することができる（３０６）。ビデオエンコーダ２０は、パレットサイズに基づいて、ビデオデータのブロックのために使用されるピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することができる（３０８）。いくつかの例では、第１のブロックレベルシンタックス要素は、ｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇであり得る。
【０１９６】
[0199]  いくつかの例では、第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することは、パレットサイズが０という値に等しいこと、１という値に等しいこと、０という値より大きいこと、または１という値より大きいことに基づき得る。他の例では、第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することは、ビデオデータのパレット符号化されたブロック（palette encoded block）が少なくとも１つのエスケープピクセルを含むかどうかに基づき得る。他の例では、第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することは、ビデオデータのパレット符号化されたブロックが少なくとも１つのエスケープピクセルを含むかどうかを表す第２のブロックレベルシンタックス要素の値に基づき得る。
【０１９７】
[0200]  いくつかの例では、図８の例に示される方法は、パレットサイズが０という値に等しいとき、第１のブロックレベルシンタックス要素をシグナリングしないことを含み得る。別の例では、第１のブロックレベルシンタックス要素は、パレットサイズが１という値に等しく、ビデオデータのパレット符号化されたブロックが少なくとも１つのエスケープピクセルを含まないとき、シグナリングされなくてよい。別の例では、第１のブロックレベルシンタックス要素は、パレットサイズが１という値に等しく、ビデオデータのパレット符号化されたブロックが少なくとも１つのエスケープピクセルを含まないことを第２のブロックレベルシンタックス要素の値が表すとき、シグナリングされなくてよい。
【０１９８】
[0201]  図９は、ビデオデータのブロックの第１の行に対してＣｏｐｙモードを有効にする例を示す概念図である。パレットコーディングに対する現在の提案において、Ｃｏｐｙモードはブロック中の最初の行のために使用されず、それは、現在のブロックの内側に位置する第１の行のすぐ上にピクセルがないからでる。したがって、Ｃｏｐｙモードは第１の行に対してシグナリングされず、Ｒｕｎモードがパレットコーディングに対する現在の提案のもとでは導出される。このことは、構文解析の間の確認をもたらし、それは、ピクセルモードがシグナリングされずに導出されることがあるからである。
【０１９９】
[0202]  本開示の例示的な技法では、ビデオエンコーダ２０は、第１の行の中のＣｏｐｙモードを用いてコーディングされるピクセルのためのデフォルトのパレットインデックスに等しくパレットインデックスを設定することによって、ピクチャのビデオデータの現在のブロック中のピクセルの最初の行（たとえば、ビデオデータ３２０の現在のブロックの中において行０として図示されている）に対してＣｏｐｙモードを有効にすることができる。ビデオデータ３２０の現在のブロックは８×８のブロックとして示されているが、他の例では、ビデオデータ３２０の現在のブロックは任意の他のサイズであり得る。最初の行に関して、ピクセルの複数の行を含むビデオデータ３２０のブロックの他の行は、ビデオデータの現在のブロックの第１の行の上にないことを理解されたい。しかしながら、他のピクセルは、同じピクチャからのビデオデータの別のブロックに由来する、ビデオデータ３２０の現在のブロックの第１の行の中の任意のピクセルに隣接し得る（実装される走査順序に応じて、左、右、上、または対角方向にある）ことも理解されたい。「ビデオデータの現在のブロック」における用語「現在の」は、ビデオデータのブロックが、ビデオエンコーダ２０によって符号化されるビデオデータの現在のブロック、またはビデオデコーダ３０によって復号されるビデオデータの現在のブロックのいずれかであることを意味する。
【０２００】
[0203]  いくつかの例では、デフォルトのパレットインデックスは、少なくとも各ブロック、スライスヘッダ、ビデオパラメータセット（ＶＰＳ）、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）などの任意のパラメータセット、または他のもののための、固定されたインデックスまたはシグナリングされるインデックスであり得る。いくつかの例では、第１の行に対してＣｏｐｙモードを有効にすることは、ビデオデータのブロック中のピクセルの第１の行の中の少なくとも１つのピクセルがＣｏｐｙモードを使用して符号化されるように、パレットモードを使用してビデオデータのブロックを符号化することを可能にする。
【０２０１】
[0204]  デフォルトの（固定された）インデックスは、０からｐａｌｅｔｔｅ＿ｓｉｚｅ−１の範囲にある現在のブロックの有効なパレットインデックスの１つであり得る。たとえば、デフォルトのインデックスは常に０に等しくてよいが、他の値も可能である。デフォルトのインデックスは、第１の行においてシグナリングされる他のインデックス値に依存し得る。たとえば、第１のシグナリングされるインデックスが１であり、第２のシグナリングされるインデックスが２である場合、別のインデックスがあれば、インデックス１が再び現れる可能性が高い。したがって、デフォルトのインデックスは、第１の行に対してｃｏｐｙモードによって導かれるインデックス値であり得る。
【０２０２】
[0205]  いくつかの例では、デフォルトのパレットインデックスは、ビデオデータ３２０のブロックに対応するパレットインデックスの１つであり得る。他の例では、デフォルトのパレットインデックスは、ビデオデータのブロックに対応するパレットインデックスの中の第１のインデックスであり得る。デフォルトのパレットインデックスは、０という値（またはビデオデータの現在のブロックの別の有効なパレットインデックスに対応する任意の他の値）によって特定されてよく、ここで、パレットインデックス中の第１のインデックスは０という値によって特定される。さらに他の例では、デフォルトのパレットインデックスは、ビデオデータの現在のブロックに対応するパレットインデックスの１つではないことがある。そのような例では、デフォルトのパレットインデックスは、以前に符号化または復号されたビデオデータの別のブロックに対応するパレットインデックスからのインデックスであり得る。
【０２０３】
[0206]  第１の行に対して有効にされたＣｏｐｙモードのために、パレットインデックスおよびパレット最大インデックスは、ビデオデータ３２０の現在のブロック中の他の行のためのパレットインデックスに対して行われるのと同様に、シグナリングの前に調整され得る。加えて、（たとえば、以前に符号化または復号されたビデオデータの別のブロックからの）第１の行の上に位置するピクセルを含むビデオデータ３２０の現在のブロックの外側に位置する仮想ピクセルはエスケープコーディングされない、たとえばＣｏｐｙモードを用いてコーディングされないものとして定義されてよく、パレットインデックスはデフォルトのパレットインデックスに等しくてよい。この追加の定義は、パレットインデックスのシグナリングにおける冗長性を避けるために使用され得る。たとえば、最初のピクセルのピクセルモードは、パレットインデックスがデフォルトのパレットインデックスに等しいＲｕｎモードに等しくはなり得ず、それは、このピクセルがＣｏｐｙモードを用いてコーディングされるからである。
【０２０４】
[0207]  たとえば、実装形態は次の通りであり得る。
ピクセルがブロック中の最初のピクセルである場合、
〇  最大パレットインデックスは１だけ減らされる
〇  パレットインデックスは１だけ減らされる
そうではなく、走査順序において左側のコーディングされたピクセルのピクセルモードがＲｕｎモードである場合、以下が適用される：
〇  最大パレットインデックスは１だけ減らされる
〇  パレットインデックスが走査順序において左側のピクセルのパレットインデックスより大きい場合、パレットインデックスは１だけ減らされる
そうではなく、走査順序において左側のコーディングされたピクセルのピクセルモードがＣｏｐｙモードであり、現在のピクセルが第１の行の中に位置する場合、または、ピクセルが第１の行の中になく、すぐ上のピクセルのピクセルモードがＥｓｃａｐｅモードではない場合、以下が適用される：
〇  最大パレットインデックスは１だけ減らされる
〇  パレットインデックスが走査順序において上側のピクセルのパレットインデックスより大きい場合、または上側のピクセルがブロックの外側にある場合にはデフォルトのパレットインデックスに等しい場合、パレットインデックスは１だけ減らされる。
【０２０５】
[0208]  たとえば、この方法は、ＳＣＣ  ＷＤに対して次のように実施されてよく、追加が下線付きのテキストによって表されており、削除が取消線付きのテキストによって表されている。
【０２０６】
【表６】
0006571162.tif 000007
0006571162.tif 000008
【０２０７】
[0209]  本明細書で説明される技法では、２つ以上のデフォルトのインデックスが使用され得る。加えて、インデックスが使用される順序は異なるパターンを有し得る。使用されるパターンは、ビデオエンコーダ２０とビデオデコーダ３０の両方において固定され記憶されてよく、またはこのパターンは、デフォルトのインデックスに対して行われるのと同様に、ビデオエンコーダ２０からビデオデコーダ３０にシグナリングされてよい。
【０２０８】
[0210]  ピクセルモード（ＲｕｎモードまたはＣｏｐｙモード）のシグナリングは、Ｃｏｐｙモードが第１の行において有効にされるとき、ビデオデータ３２０の現在のブロックの第１の行のために追加され得る。いくつかの例では、ピクセルモードのシグナリングのためのシンタックス要素が、コンテキストのモデル化を使用してＣＡＢＡＣコーディングされ得る。第１の行の中のピクセルモードシンタックス要素のコンテキストは、ビデオデータ３２０の現在のブロックの他の行に対するピクセルモードシンタックス要素のためのコンテキストと共有され得る。たとえば、参照ピクセルがＣｏｐｙモードを用いてコーディングされた場合、コンテキスト０が使用されてよく、参照ピクセルがＲｕｎモードを用いてコーディングされた場合、コンテキスト１が使用されてよく、またはこの逆であってよい。
【０２０９】
[0211]  参照ピクセルは、現在のピクセルの左側のピクセルであってよく、第２の行以降では上側のピクセルであってよく、および／または、最初の行では（第１の行に上側のピクセルはないので）左側のピクセルであってよい。より一般的には、参照ピクセルは、ピクセルモード情報が利用可能である場合、すでにコーディングされているピクセルであり得る。最初のピクセルに対しては、利用可能な参照ピクセルがないことがある。この状況において、第１の行に対するシンタックス要素のためのコンテキストは、事前に定義され得る（たとえば、以前に使用されたコンテキストが選択されてよく、または別のコンテキストが使用されてよい）。
【０２１０】
[0212]  別の例では、単一のコンテキストだけが使用されてよく、第１の行の中のピクセルモードシンタックス要素をコーディングするためのコンテキストは、コンテキスト０またはコンテキスト１だけと共有され得る。
【０２１１】
[0213]  しかしながら、コンテキストを共有することはすべての状況において最良の選択肢であるとは限らず、それは、第１の行において特定のピクセルモードを使用することの統計が他の行における統計とは異なることがあるからであり、それは、パレットインデックスの選択が第１の行ではより限られている（たとえば、デフォルトの１つのインデックス／複数のインデックスだけが使用される）からである。したがって、別の例では、１つまたは複数の別のコンテキストが、第１の行におけるピクセルモードのためのピクセルモードシンタックス要素に対して割り当てられ得る。たとえば、別のコンテキストは、コンテキスト２などの単一の追加のコンテキストにすぎないことがあり、または別のコンテキストは、参照ピクセルのピクセルモードに依存することがある。たとえば、参照ピクセルがＣｏｐｙモード用いてコーディングされる場合、コンテキスト２がピクセルモードシンタックス要素をコーディングするために使用されてよく、参照ピクセルがＲｕｎモードにおいてコーディングされる場合、コンテキスト３がピクセルモードシンタックス要素をコーディングするために使用されてよい。最初のピクセルのためのシンタックス要素に対して、コンテキストは、コンテキスト２またはコンテキスト３に固定されてよく、または別の例では、別のコンテキスト４が使用されてよい。
【０２１２】
[0214]  第１の行に対してＣｏｐｙモードを有効にすることとともに使用され得る、またはそのことを伴わずに使用され得る、より一般的な手法として、ビデオエンコーダ２０および／またはビデオデコーダ３０は、Ｅｓｃａｐｅモードを含む参照ピクセルモードに従ってコンテキストを分割することができ、Ｅｓｃａｐｅモードのためのコンテキストは現在、Ｒｕｎモードと共有される。この場合、コンテキストの数は、Ｒｕｎモードに対して１つ、Ｃｏｐｙモードに対して１つ、およびＥｓｃａｐｅモードに対して１つの、少なくとも３つであることがあり、ここでモードは参照ピクセルのモードである。
【０２１３】
[0215]  同様に、Ｅｓｃａｐｅモードを含むコンテキストの拡張が、第１の行に対する有効にされたＣｏｐｙモードを用いて行われ得る。
【０２１４】
[0216]  図１０は、本開示の技法に適合する、ビデオデータを復号するための例示的なプロセスを示すフローチャートである。図１０のプロセスは全般に、例示を目的として、ビデオデコーダ３０によって実行されるものとして説明されるが、様々な他のプロセッサも図１０に示されるプロセスを実行し得る。いくつかの例では、ブロック復号ユニット１５２および／またはパレットベースの復号ユニット１６５は、図１０に示される１つまたは複数のプロセスを実行することができる。
【０２１５】
[0217]  図１０の例では、ビデオデコーダ３０は、パレットモードを使用してビデオデータのブロックが符号化されるべきであると決定することができる（３３０）。ビデオデコーダ３０は、ピクセルの複数の行を有するビデオデータのパレットモード符号化されたブロックを受信することができる（３３２）。ビデオデコーダ３０は、ビデオデータのパレットモード符号化されたブロックに対応するパレットインデックスを受信することができる（３３４）。ビデオデコーダ３０は、ビデオデータのパレットモード符号化されたブロックのピクセル走査順序を決定することができる（３３６）。ビデオデコーダ３０は、ピクセル走査順序を使用して、ビデオデータのパレットモード符号化されたブロックを復号することができる（３３８）。ビデオデコーダ３０は、ビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを、ピクセルの複数の行のうちの他の行が第１の行の上にない場合に、ｃｏｐｙモードを使用して復号することができる（３４０）。
【０２１６】
[0218]  いくつかの例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、ピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、ビデオデータの符号化されたブロックに対応するパレットインデックスの１つであるピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、パレットインデックス中の第１のインデックスであるピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。
【０２１７】
[0219]  さらに他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、０という値によって特定されるピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含んでよく、パレットインデックスの中の第１のインデックスは０という値によって特定される。さらに他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、ビデオデータのブロックに対応するパレットインデックスの１つではないピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。さらに他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、ビデオデータの別のブロックに対応するパレットインデックスからのインデックスであるピクセルの第１の行の中の少なくとも１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。さらに他の例では、ｃｏｐｙモードを使用してビデオデータのパレットモード符号化されたブロック中のピクセルの第１の行の中の少なくとも１つのピクセルを復号することは、少なくとも１つのピクセルより前に復号される１つまたは複数のピクセルの１つまたは複数のパレットインデックスに基づいて、ピクセルの第１の行の中の少なくとも１つのピクセルのためのパレットインデックスを使用することを含み得る。
【０２１８】
[0220]  図１１は、本開示の技法に従った、ビデオデータを符号化するための例示的なプロセスを示すフローチャートである。図１１のプロセスは全般に、説明を目的にビデオエンコーダ２０によって実行されるものとして説明されるが、様々な他のプロセッサも図１１に示されるプロセスを実行し得る。いくつかの例では、ブロック符号化ユニット１００および／またはパレットベース符号化ユニット１２２は、図１１に示される１つまたは複数のプロセスを実行することができる。
【０２１９】
[0221]  図１１の例では、ビデオエンコーダ２０は、パレットモードを使用してピクセルの複数の行を有するビデオデータのブロックが符号化されるべきであると決定することができる（３５０）。ビデオエンコーダ２０は、ビデオデータのブロックのパレットインデックスを生成することができる（３５２）。ビデオエンコーダ２０は、ビデオデータのブロック中のピクセルの第１の行の中の少なくとも１つのピクセルが、ピクセルの複数の行のうちの他の行が第１の行の上にない場合に、ｃｏｐｙモードを使用して符号化されるように、パレットモードを使用してビデオデータのブロックを符号化することができる（３５４）。
【０２２０】
[0222]  いくつかの例では、ｃｏｐｙモードを使用してビデオデータのブロック中のピクセルの第１の行の中の少なくとも１つのピクセルが符号化されるように、パレットモードを使用してビデオデータのブロックを符号化することは、ピクセルの第１の行の中の最小の１つのピクセルのためのデフォルトのパレットインデックスを使用することを含み得る。そのような例では、デフォルトのパレットインデックスは、ビデオデータのブロックに対応するパレットインデックスの１つであり得る。たとえば、デフォルトのパレットインデックスは、パレットインデックス中の第１のインデックス、またはパレットインデックス中の任意の他のインデックスであり得る。デフォルトのパレットインデックスは０という値によって特定されてよく、パレットインデックス中の第１のインデックスは０という値によって特定されてよい。いくつかの例では、デフォルトのパレットインデックスは、ビデオデータのブロックに対応するパレットインデックスの１つではないことがある。たとえば、デフォルトのパレットインデックスは、ビデオデータの別のブロックに対応するパレットインデックスから（たとえば、ビデオデータの以前に符号化されたブロックに由来するパレットインデックスから）のインデックスであり得る。いくつかの例では、ｃｏｐｙモードを使用してビデオデータのブロック中のピクセルの第１の行の中の少なくとも１つのピクセルが符号化されるように、パレットモードを使用してビデオデータのブロックを符号化することは、少なくとも１つのピクセルより前に符号化された１つまたは複数のピクセルの１つまたは複数のパレットインデックスに基づいて、ピクセルの第１の行の中の少なくとも１つのピクセルのためのパレットインデックスを使用することを含み得る。
【０２２１】
[0223]  以下のセクションは、エスケープピクセルとＣｏｐｙモードとを論じる。パレットコーディングに対する現在の提案では、上側のピクセルがＥｓｃａｐｅモードを用いてコーディングされるとき、コピー手順はエスケープコーディングされたピクセルに対して定義されない。解決法は、エスケープピクセルのためにコピー処理を定義すること、または、このケースが発生するのを規範的に禁止することとのいずれかであり得る。例として、この問題は、以下で説明される次のような方法の１つを使用して解決され得る。
【０２２２】
[0224]  ２０１４年７月２日に出願された米国仮出願第６２／０１９，２２３号において説明されるように、特定のパレットインデックスによって表されるエスケープモードだけが、現在のピクセルのためにコピーされる。トリプレットのためのエスケープ色値が、その後でシグナリングされる。
【０２２３】
[0225]  エスケープインデックスをコピーする代わりに、上側のピクセルがエスケープピクセルである場合、別のパレットインデックスが現在のピクセルのために割り当てられ得る。たとえば、パレットインデックスは、たとえば０などの現在のブロックのための有効なパレットインデックスの１つに等しい、固定され得るデフォルトのパレットインデックスであってよく、または、デフォルトのパレットインデックスは、各ブロック、スライスヘッダ、パラメータセット（ＶＰＳ、ＳＰＳ、ＰＰＳなど）のために少なくともシグナリングされ、または他の箇所でシグナリングされてよい。加えて、または代替的に、エスケープピクセルは、以前の非エスケープパレットインデックスによって置換され得る。たとえば、Ｃｏｐｙモードのためのインデックスは、走査順序において上側のピクセルの左側で最初に利用可能なようなエスケープではない最後のコピーされるインデックスであると考えられ、または、現在のピクセルの左側のインデックスであり得る。これは、固定されたインデックスと組み合わされ得る。たとえば、置換に用いるエスケープパレットインデックスがエスケープである場合、デフォルトのインデックスが使用され得る。たとえば、左側のピクセルがエスケープピクセルである場合、デフォルトのインデックス（たとえば、０）がコピーの目的でエスケープを置き換えるために使用され、それ以外の場合、左側のピクセルのインデックスが使用される。
【０２２４】
[0226]  別の例では、ビデオエンコーダ２０は、Ｃｏｐｙモードを用いてコーディングされたピクセルがＥｓｃａｐｅモードを用いてコーディングされた上側のピクセルを有し得るというケースを規範的に許容しないように構成され得る。これは、たとえば、以下で示されるように、ｐａｌｅｔｔｅ＿ｒｕｎシンタックス要素のセマンティクスにおいて実装され得る。この規則が破られる場合、ビットストリームは規格に適合しないものと見なされる。
【０２２５】
[0227]  シンタックス要素ｐａｌｅｔｔｅ＿ｒｕｎは、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇがＣＯＰＹ＿ＡＢＯＶＥ＿ＭＯＤＥに等しいときは、上の行の中での場所と同じパレットインデックスを伴う連続する位置の数から１を引いたものを示し、または、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇがＩＮＤＥＸ＿ＭＯＤＥに等しいときは、同じパレットインデックスを伴う連続する位置の数から１を引いたものを表す。ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇがＣＯＰＹ＿ＡＢＯＶＥ＿ＭＯＤＥに等しい場合、上の行の中に位置するｐａｌｅｔｔｅ＿ｒｕｎの値によって定義される連続するピクセルの１つは、ＥＳＣＡＰＥ＿ＰＩＸＥＬとしてコーディングされることが可能ではない。
【０２２６】
[0228]  以下のセクションは、いくつかの例による、エスケープピクセルを定義するための技法を論じる。パレットサイズの定義のための上で説明された技法が使用される場合、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの値に応じて、ある特定のインデックスがエスケープピクセルまたは非エスケープピクセルを示すことが起こり得る。たとえば、最大パレットサイズが３２であるとする。ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１である場合、インデックス値３１はエスケープピクセルを示す。一方、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０であるとき、３１というインデックス値は非エスケープピクセルに対して可能である。同様の状況が、０などの何らかの他の値がエスケープピクセルを示すために使用される場合に当てはまる。この場合、０というインデックス値は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１であるときはエスケープピクセルを表し得るが、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０であるときは非エスケープピクセルを表し得る。
【０２２７】
[0229]  したがって、いくつかの例によれば、本開示は、エスケープピクセルの定義を次のように変えることを提案する。ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しく、ピクセルがＲｕｎモードでコーディングされ、ある特定のパレットインデックス値を有する場合、ピクセルはエスケープピクセルとして定義される。その特定のインデックス値は、たとえば、パレットサイズもしくはパレットサイズ−１に等しくてよく、または０などの何らかの他の固定された値に等しくてよい。
【０２２８】
[0230]  本開示のこのセクションは、新たなパレットエントリーとのパレット共有を論じる。本開示では、新たなパレットエントリーをシグナリングするための能力を用いてパレット共有を拡張することが提案される。新たなエントリーの数および新たなエントリーの色値自体が、それらを含めるための余裕がパレットにある（たとえば、パレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅより小さい）とき、明示的にシグナリングされる。
【０２２９】
[0231]  本開示のパレット共有の拡張は、パレット共有のための現在の提案（すなわち、新たなエントリーの数がパレット共有のためにシグナリングされる、またはパレット導出の第３の方法として追加される）を置き換え得る。後者の場合、パレット予測子がシグナリングされず以前のブロックのパレットが再使用されることを示すために、新たなフラグが、場合によってはｐａｌｅｔｔｅ＿ｓｈａｒｅ＿ｆｌａｇの後で、および、パレット共有が使用されず以前のパレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅより小さい場合に条件的に、シグナリングされる。この場合、新たなエントリーの数が０であることは単なるパレット共有と同じであるので、新たなエントリーの数は０より大きく、よって、新たなエントリーの数から１を引いたものが代わりにシグナリングされ得る。
【０２３０】
[0232]  新たなパレットエントリーがビデオエンコーダ２０によってその後でシグナリングされ、パレット導出の第３の（このセクションで論じられる）方法のための、再使用されるパレットエントリーの後または再使用されるパレットエントリーの前に含められ得る。代替的に、新たなパレットエントリーは常に、すべてのパレット導出方法にわたってパレットの導出を均一にするために、再使用されるパレットエントリーの前に配置され得る。
【０２３１】
[0233]  再使用されるエントリーの前に新たなエントリーを含めることはより効率的であることがあり、それは、再使用されるエントリーまたは予測されるエントリーの役割を果たす以前のパレットのエントリーは、ブロックにおいてすべてが使用される新たなエントリーとは対照的に、すべてが使用されるとは限らず、パレットインデックスのシグナリングにおいていくらかの非効率性をもたらすからである。新たなエントリーを再使用されるパレットエントリーの前に配置する別の利点は、パレットサイズの制約が原因で、すべての再使用されるエントリーが追加されることが可能であるとは限らないということである。この場合、新たなエントリーがまず追加され、次いで、現在のパレットサイズがｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅより小さい間、以前のパレットのエントリーが追加される。
【０２３２】
[0234]  新たなパレットエントリーとのパレット共有を使用するとき、既存のシグナリングは次の方法で再使用されることが可能であり、ＳＣＣ  ＷＤへの追加が下線付きのテキストによって表されている。
【０２３３】
【表７】
0006571162.tif 000009
【０２３４】
[0235]  例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なる順序で実行されてよく、全体的に追加され、統合され、または完全に除外され得る（たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。その上、いくつかの例では、行為またはイベントは、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを用いて、連続的にではなく同時に実行され得る。加えて、本開示の特定の態様は、明快にするために、単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技術は、ビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２３５】
[0236]  本開示によれば、文脈が別段指示しない場合、用語「または」は「および／または」としてインターラプトされ得る。加えて、「１つまたは複数の」または「少なくとも１つの」などの語句が、本明細書で開示されるいくつかの特徴に対して使用されており、他の特徴に対して使用されていないことがあるが、そのような言葉が使用されなかった特徴は、文脈が別段指示しない場合、そのような暗示された意味を有するものと解釈され得る。
【０２３６】
[0237]  本開示のいくつかの態様は、説明を目的に、開発中のＨＥＶＣ規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
【０２３７】
[0238]  上で説明された技法は、ビデオエンコーダ２０（図１および図２）ならびに／またはビデオデコーダ３０（図１および図３）によって実行されてよく、ビデオエンコーダ２０とビデオデコーダ３０の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指し得る。
【０２３８】
[0239]  技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。本開示で説明される技法は、任意の組合せで一緒に使用され得る。
【０２３９】
[0240]  １つまたは複数の例では、本開示で説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって処理され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、および／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０２４０】
[0241]  限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２４１】
[0242]  命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素において完全に実装され得る。
【０２４２】
[0243]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々なコンポーネント、モジュール、またはユニットが説明されたが、それらは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
【０２４３】
[0244]  様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを復号する方法であって、
ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信することと、
前記第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することなく、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することと、
前記推測されたピクセル走査順序を使用して、ビデオデータの前記第１のパレットモード符号化されたブロックを復号することと、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信することと、
ビデオデータの前記第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信することと、
前記受信されたブロックレベルシンタックス要素に基づいて、ビデオデータの前記第２のパレットモード符号化されたブロックの前記ピクセル走査順序を決定することと、
前記決定されたピクセル走査順序を使用して、ビデオデータの前記第２のパレットモード符号化されたブロックを復号することとを備える、方法。
［Ｃ２］
前記第１または第２のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素が、値０または１を備えるｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇであり、０という前記値が、ビデオデータの前記第１または第２のパレットモード符号化されたブロックとそれぞれ関連付けられるパレットインデックスに転置処理が適用されるべきではないことを示し、１という前記値が、ビデオデータの前記第１または第２のパレットモード符号化されたブロックとそれぞれ関連付けられるパレットインデックスに転置処理が適用されるべきであることを示す、Ｃ１に記載の方法。
［Ｃ３］
ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することが、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するためにビデオデータの前記第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに転置処理が適用されることになるように、前記第１のパレットモード符号化されたブロックのための前記ブロックレベルシンタックス要素の前記値を推測することを備える、Ｃ１に記載の方法。
［Ｃ４］
前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記推測される値が１である、Ｃ３に記載の方法。
［Ｃ５］
ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することが、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するためにビデオデータの前記第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに転置処理が適用されないことになるように、前記第１のパレットモード符号化されたブロックのための前記ブロックレベルシンタックス要素の前記値を推測することを備える、Ｃ１に記載の方法。
［Ｃ６］
前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記推測される値が０である、Ｃ５に記載の方法。
［Ｃ７］
ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することが、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序が非水平方向または非垂直方向のピクセル走査順序であると推測されるように、前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記値を推測することを備える、Ｃ１に記載の方法。
［Ｃ８］
ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することが、ビデオデータの前記第１のパレットモード符号化されたブロックのパレットサイズが、０という値に等しい、１という値に等しい、０という値より大きい、または１という値より大きいことに基づいて、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測することを備える、Ｃ１に記載の方法。
［Ｃ９］
ビデオデータを復号するためのデバイスであって、
ピクチャのビデオデータを記憶するように構成されるメモリと、
ビデオデコーダとを備え、前記ビデオデコーダが、
前記ビデオデータの第１のパレットモード符号化されたブロックを受信し、
前記第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測し、
前記推測されたピクセル走査順序に基づいて、ビデオデータの前記第１のパレットモード符号化されたブロックを復号し、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信し、
ビデオデータの前記第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信し、
ビデオデータの前記第２のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素に基づいて、ビデオデータの前記第２のパレットモード符号化されたブロックの前記ピクセル走査順序を決定し、
前記決定されたピクセル走査順序に基づいて、ビデオデータの前記第２のパレットモード符号化されたブロックを復号する
ように構成される、デバイス。
［Ｃ１０］
前記第１または第２のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素が、値０または１を備えるｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇであり、０という前記値が、ビデオデータの前記第１または第２のパレットモード符号化されたブロックとそれぞれ関連付けられるパレットインデックスに転置処理が適用されるべきではないことを示し、１という前記値が、ビデオデータの前記第１または第２のパレットモード符号化されたブロックとそれぞれ関連付けられるパレットインデックスに転置処理が適用されるべきであることを示す、Ｃ９に記載のデバイス。
［Ｃ１１］
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するためにビデオデータの前記第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに転置処理が適用されることになるように、前記第１のパレットモード符号化されたブロックのための前記ブロックレベルシンタックス要素の前記値を推測するように構成されることによって、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測するように構成される、Ｃ９に記載のデバイス。
［Ｃ１２］
前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記推測される値が１である、Ｃ１１に記載のデバイス。
［Ｃ１３］
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックを復号するためにビデオデータの前記第１のパレットモード符号化されたブロックと関連付けられるパレットインデックスに転置処理が適用されないことになるように、前記第１のパレットモード符号化されたブロックのための前記ブロックレベルシンタックス要素の前記値を推測するように構成されることによって、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測するように構成される、Ｃ９に記載のデバイス。
［Ｃ１４］
前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記推測される値が０である、Ｃ１３に記載のデバイス。
［Ｃ１５］
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序が非水平方向または非垂直方向のピクセル走査順序であると推測されるように、前記第１のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素の前記値を推測するように構成されることによって、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測するように構成される、Ｃ９に記載のデバイス。
［Ｃ１６］
前記ビデオデコーダが、ビデオデータの前記第１のパレットモード符号化されたブロックのパレットサイズが、０という値に等しい、１という値に等しい、０という値より大きい、または１という値より大きいことに基づいて、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測するように構成されることによって、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測するように構成される、Ｃ９に記載のデバイス。
［Ｃ１７］
実行されると、ビデオデータを復号するように構成されるコンピューティングデバイスの１つまたは複数のプロセッサに、
ピクチャのビデオデータの第１のパレットモード符号化されたブロックを受信させ、
前記第１のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素に基づかずに、ビデオデータの前記第１のパレットモード符号化されたブロックの前記ピクセル走査順序を推測させ、
前記推測されたピクセル走査順序に基づいて、ビデオデータの前記第１のパレットモード符号化されたブロックを復号させ、
前記ピクチャのビデオデータの第２のパレットモード符号化されたブロックを受信させ、
ビデオデータの前記第２のパレットモード符号化されたブロックのピクセル走査順序を表す値を有するブロックレベルシンタックス要素を受信させ、
ビデオデータの前記第２のパレットモード符号化されたブロックの前記ブロックレベルシンタックス要素に基づいて、ビデオデータの前記第２のパレットモード符号化されたブロックの前記ピクセル走査順序を決定させ、
前記決定されたピクセル走査順序に基づいて、ビデオデータの前記第２のパレットモード符号化されたブロックを復号させる命令を記憶した、非一時的コンピュータ可読記憶媒体。
［Ｃ１８］
ビデオデータを符号化する方法であって、
ビデオデータのブロックがパレットモードを使用して符号化されるべきであると決定することと、
ビデオデータの前記ブロックのパレットサイズを決定することと、
ビデオデータの前記ブロックのピクセル走査順序を決定することと、
パレットモードを使用してビデオデータの前記ブロックを符号化することと、
前記パレットサイズに基づいて、ビデオデータの前記ブロックのために使用される前記ピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することとを備える、方法。
［Ｃ１９］
前記第１のブロックレベルシンタックス要素がｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇである、Ｃ１８に記載の方法。
［Ｃ２０］
前記第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することが、前記パレットサイズが０という値に等しいこと、１という値に等しいこと、０という値より大きいこと、または１という値より大きいことに基づく、Ｃ１８に記載の方法。
［Ｃ２１］
前記第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することが、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含むかどうかに基づく、Ｃ１８に記載の方法。
［Ｃ２２］
前記第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定することが、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含むかどうかを表す第２のブロックレベルシンタックス要素の値に基づく、Ｃ１８に記載の方法。
［Ｃ２３］
前記パレットサイズが０という値に等しいとき、前記パレットサイズが１という値に等しく、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含まないとき、または、前記パレットサイズが１という値に等しく、ビデオデータの前記パレット符号化されたブロックが少なくとも１つのエスケープピクセルを含まないことを第２のブロックレベルシンタックス要素の前記値が表すとき、前記第１のブロックレベルシンタックス要素をシグナリングしないことをさらに備える、Ｃ１８に記載の方法。
［Ｃ２４］
ビデオデータを符号化するためのデバイスであって、
ピクチャのビデオデータを記憶するように構成されるメモリと、
ビデオエンコーダとを備え、前記ビデオエンコーダが、
前記ビデオデータのブロックがパレットモードを使用して符号化されるべきであると決定し、
ビデオデータの前記ブロックのパレットサイズを決定し、
ビデオデータの前記ブロックのピクセル走査順序を決定し、
パレットモードを使用してビデオデータの前記ブロックを符号化し、
前記パレットサイズに基づいて、ビデオデータの前記ブロックのために使用される前記ピクセル走査順序を表す第１のブロックレベルシンタックス要素をシグナリングするかどうかを決定する
ように構成される、デバイス。
【図１】
0006571162.tif 000010
【図２】
0006571162.tif 000011
【図３】
0006571162.tif 000012
【図４】
0006571162.tif 000013
【図５】
0006571162.tif 000014
【図６Ａ】
0006571162.tif 000015
【図６Ｂ】
0006571162.tif 000016
【図７】
0006571162.tif 000017
【図８】
0006571162.tif 000018
【図９】
0006571162.tif 000019
【図１０】
0006571162.tif 000020
【図１１】
0006571162.tif 000021