(57)【特許請求の範囲】
【請求項１】
ビデオデータを処理する方法であって、
ブロックレベルシンタックス要素の値を決定することと、ここにおいて、前記ブロックレベルシンタックス要素は、複数のサンプルを含む前記ビデオデータのブロックの全体に対応し、前記ブロックレベルシンタックス要素の前記値は、前記ブロックに含まれる前記複数のサンプルの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色値のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値を使用してコーディングされるかどうかを示し、
前記ブロックレベルシンタックス要素の前記値に基づいてビデオデータの前記ブロックをコーディングすることと、
を備え、
前記ブロックレベルシンタックス要素の前記値を決定することは、前記ブロックの少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされるかどうかを示すブロックレベルエスケープフラグの値を決定することを備え、
前記ブロックレベルエスケープフラグをコーディングするかどうかが、前記ブロックのサイズに基づいて決定される、方法。
【請求項２】
前記ビデオデータの前記ブロックは前記ビデオデータのコーディングユニット（ＣＵ）を備え、前記ブロックレベルエスケープフラグの前記値を決定することは、前記ＣＵのための前記ブロックレベルエスケープフラグの前記値を決定することを備える、請求項１に記載の方法。
【請求項３】
前記ＣＵのための前記パレットの前記色値に関連付けられるパレットエントリーをコーディングすることと、
前記パレットの前記色値に関連付けられる前記パレットエントリーをコーディングした後で、前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングすることと、
をさらに備える、請求項２に記載の方法。
【請求項４】
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングすることと、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングした後で、前記ＣＵのための前記パレットの前記色値に関連付けられるパレットエントリーをコーディングすることと、
をさらに備える、請求項２に記載の方法。
【請求項５】
前記ＣＵのサイズに基づいて、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングすることをさらに備え、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングすることは、前記ＣＵの前記サイズが閾値のサイズを超えるとき、前記ブロックレベルエスケープフラグをコーディングすることのみを備える、請求項２に記載の方法。
【請求項６】
前記ブロックレベルシンタックス要素の前記値に基づいて、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルが前記パレットの前記色値に従ってコーディングされることを決定することと、
前記ブロックのための色値の前記パレットに含まれるパレットインデックスの数を示すパレットサイズが１に等しいことを決定することと、
前記決定されたパレットサイズが１に等しいことに基づいて、前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットの前記１つのインデックスに基づいて前記ブロックのすべてのサンプルをコーディングすることと、
をさらに備える、請求項１に記載の方法。
【請求項７】
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングすることは、前記ブロックをコーディングすることに関連付けられるパレットモードを示すデータ、前記ブロックのための色値の前記パレットのインデックス値を示すデータ、または前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングすることを備える、請求項６に記載の方法。
【請求項８】
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズが０に等しいことを決定することと、
前記決定されたパレットサイズが０に等しいことに基づいて、少なくとも部分的に、前記ブロックレベルシンタックス要素の前記値を推測することによって、前記ブロックレベルシンタックス要素の前記値を決定することと、ここにおいて、前記ブロックレベルシンタックス要素の前記値を推測することは、前記ブロックレベルシンタックス要素をコーディングすることなく、前記ブロックレベルシンタックス要素の前記値を決定することを備え、前記ブロックレベルシンタックス要素の前記推測される値は、前記ブロックのすべてのサンプルが前記パレットに含まれない色値情報に基づいてコーディングされることを示す、
をさらに備える、請求項１に記載の方法。
【請求項９】
前記ビデオデータの前記ブロックをコーディングすることは、前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ビデオデータの前記ブロックのための色値の前記パレットのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットに含まれない前記色値情報を使用して前記ブロックに含まれる前記複数のサンプルのすべてのサンプルをコーディングすることを備える、請求項８に記載の方法。
【請求項１０】
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングすることは、前記ブロックをコーディングすることに関連付けられるパレットモードを示すデータ、前記ブロックのための色値の前記パレットのパレットインデックスを示すデータ、または前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングすることを備える、請求項９に記載の方法。
【請求項１１】
前記ビデオデータの前記ブロックをコーディングすることは前記ビデオデータの前記ブロックを符号化することを備え、前記ブロックレベルシンタックス要素の前記値に基づいて前記ビデオデータの前記ブロックを符号化することは、
前記ブロックに含まれる前記複数のサンプルの前記少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値を使用して符号化されるべきであることを、前記ブロックレベルシンタックス要素の前記決定された値が示すことに基づいて、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルのためのそれぞれのインデックス値をエントロピー符号化することと、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを識別し、前記それぞれのインデックス値のうちの１つは、色の前記パレットに含まれない前記色値を使用して符号化されるべきエスケープサンプルを示し、
符号化されるビットストリームの中で前記パレットの前記それぞれのインデックス値をシグナリングすることと、
を備える、請求項１に記載の方法。
【請求項１２】
前記ビデオデータの前記ブロックをコーディングすることは前記ビデオデータの前記ブロックを復号することを備え、前記ブロックレベルシンタックス要素の前記値に基づいて前記ビデオデータの前記ブロックを復号することは、
符号化されたビットストリームから、前記ビデオデータの前記ブロックに含まれる前記複数のサンプルのために、前記ブロックのための色値のパレットのそれぞれのインデックス値を取得することと、ここにおいて、前記それぞれのインデックス値の各々は、色値の前記パレットのそれぞれのエントリーを識別し、
前記ブロックに含まれる前記複数のサンプルの前記少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値を使用して復号されるべきであることを、前記ブロックレベルシンタックス要素の前記決定された値が示すことに基づいて、
前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合することによって、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルの値をエントロピー復号することと、
色値の前記パレットに含まれないそれぞれの色値を使用して、前記少なくとも１つのサンプルをエントロピー復号することと、
を備える、請求項１に記載の方法。
【請求項１３】
ビデオデータを処理するためのデバイスであって、
ビデオデータのブロックを記憶するように構成されるメモリと、前記ブロックは、複数のサンプルを含み、
前記メモリと通信する１つまたは複数のプロセッサと、を備え、前記１つまたは複数のプロセッサは、
ブロックレベルシンタックス要素の値を決定し、ここにおいて、前記ブロックレベルシンタックス要素は、複数のサンプルを含む前記ビデオデータのブロックの全体に対応し、前記ブロックレベルシンタックス要素の前記値は、前記メモリに記憶された前記ビデオデータの前記ブロックに含まれる前記複数のサンプルの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色値のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値を使用してコーディングされるかどうかを示し、
前記ブロックレベルシンタックス要素の前記値に基づいて前記メモリに記憶されたビデオデータの前記ブロックをコーディングする
ように構成され、
前記ブロックレベルシンタックス要素の前記値を決定するために、前記１つまたは複数のプロセッサは、前記メモリに記憶された前記ビデオデータに含まれる前記複数のサンプルの少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされるかどうかを示すブロックレベルエスケープフラグの値を決定するように構成され、
前記ブロックレベルエスケープフラグをコーディングするかどうかが、前記ブロックのサイズに基づいて決定される、デバイス。
【請求項１４】
前記メモリに記憶された前記ビデオデータの前記ブロックは、前記メモリに記憶された前記ビデオデータのコーディングユニット（ＣＵ）を備え、前記ブロックレベルエスケープフラグの前記値を決定するために、前記１つまたは複数のプロセッサは、前記ＣＵのための前記ブロックレベルエスケープフラグの前記値を決定するように構成される、請求項１３に記載のデバイス。
【請求項１５】
前記１つまたは複数のプロセッサはさらに、
前記ＣＵのための前記パレットの前記色値に関連付けられるパレットエントリーをコーディングし、
前記パレットの前記色値に関連付けられる前記パレットエントリーをコーディングした後で、前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングする
ように構成される、請求項１４に記載のデバイス。
【請求項１６】
前記１つまたは複数のプロセッサはさらに、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングし、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングした後で、前記ＣＵのための前記パレットのパレットエントリーをコーディングする
ように構成される、請求項１４に記載のデバイス。
【請求項１７】
前記１つまたは複数のプロセッサはさらに、前記ＣＵのサイズに基づいて、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングするように構成され、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングするために、前記１つまたは複数のプロセッサは、前記ＣＵの前記サイズが閾値のサイズを超えるとき、前記ブロックレベルエスケープフラグをコーディングすることのみを行うように構成される、請求項１４に記載のデバイス。
【請求項１８】
前記１つまたは複数のプロセッサはさらに、
前記ブロックレベルシンタックス要素の前記値に基づいて、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルが色値の前記パレットの前記色値に従ってコーディングされることを決定し、
前記ブロックのための色値の前記パレットに含まれるパレットインデックスの数を示すパレットサイズが１に等しいことを決定し、
前記決定されたパレットサイズが１に等しいことに基づいて、前記メモリに記憶された前記ビデオデータの前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットの前記１つのインデックスに基づいて前記ブロックに含まれる前記複数のサンプルのすべてのサンプルをコーディングする
ように構成される、請求項１３に記載のデバイス。
【請求項１９】
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックをコーディングすることに関連付けられるパレットモードを示すデータ、前記メモリに記憶された前記ビデオデータの前記ブロックのための色値の前記パレットのインデックス値を示すデータ、または前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングするように構成される、請求項１８に記載のデバイス。
【請求項２０】
前記１つまたは複数のプロセッサはさらに、
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズが０に等しいことを決定する
ように構成され、
前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ブロックレベルシンタックス要素の前記値を決定するために、前記１つまたは複数のプロセッサは、前記ブロックレベルシンタックス要素をコーディングすることなく、前記ブロックレベルシンタックス要素の前記値を決定することを含む、前記ブロックレベルシンタックス要素の前記値を推測するように構成され、前記ブロックレベルシンタックス要素の前記推測される値は、前記ブロックのすべてのサンプルが前記パレットに含まれない色値情報に基づいてコーディングされることを示す、請求項１３に記載のデバイス。
【請求項２１】
前記メモリに記憶された前記ビデオデータの前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記決定されたパレットサイズが０のインデックスであることに基づいて、前記決定されたパレットサイズが０のインデックスであることに基づいて、前記メモリに記憶された前記ビデオデータの前記ブロックのための色値の前記パレットのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットに含まれない前記色値情報を使用して前記ブロックに含まれる前記複数のサンプルのすべてのサンプルをコーディングするように構成される、請求項２０に記載のデバイス。
【請求項２２】
前記ブロックのためのパレットインデックスを示す前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックをコーディングすることに関連付けられるパレットモードを示すデータ、前記ブロックのための色値の前記パレットのパレットインデックスを示すデータ、または前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングするように構成される、請求項２１に記載のデバイス。
【請求項２３】
前記メモリに記憶された前記ビデオデータの前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記メモリに記憶された前記ビデオデータの前記ブロックを符号化するように構成され、前記ブロックレベルシンタックス要素の前記値に基づいて前記ビデオデータの前記ブロックを符号化するために、前記１つまたは複数のプロセッサは、
前記ブロックに含まれる前記複数のサンプルの前記少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値を使用して符号化されるべきであることを、前記ブロックレベルシンタックス要素の前記決定された値が示すことに基づいて、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルのためのそれぞれのインデックス値をエントロピー符号化し、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを識別し、前記それぞれのインデックス値のうちの１つは、色の前記パレットに含まれない前記色値を使用して符号化されるべきエスケープサンプルを示し、
符号化されるビットストリームの中で前記それぞれのインデックス値をシグナリングする
ように構成される、請求項１３に記載のデバイス。
【請求項２４】
前記メモリに記憶された前記ビデオデータの前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記メモリに記憶された前記ビデオデータの前記ブロックを復号するように構成され、前記ブロックレベルシンタックス要素の前記値に基づいて前記ビデオデータの前記ブロックを復号するために、前記１つまたは複数のプロセッサは、
符号化されたビットストリームから、前記ブロックに含まれる前記複数のサンプルのために前記ブロックのための色値のパレットのそれぞれのインデックス値を取得し、ここにおいて、前記それぞれのインデックス値の各々は、色値の前記パレットのそれぞれのエントリーを識別し、
前記ブロックに含まれる前記複数のサンプルの前記少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値を使用して復号されるべきであることを、前記ブロックレベルシンタックス要素の前記決定された値が示すことに基づいて、
前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合することによって、前記ブロックに含まれる前記複数のサンプルのすべてのサンプルの値をエントロピー復号し、
色値の前記パレットに含まれないそれぞれの色値を使用して、前記少なくとも１つのサンプルをエントロピー復号する
ように構成される、請求項１３に記載のデバイス。
【請求項２５】
前記復号されたブロックを表示するように構成されるディスプレイをさらに備える、請求項２４に記載のデバイス。
【請求項２６】
前記デバイスは、
集積回路、
マイクロプロセッサ、
１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、
１つまたは複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、
デスクトップコンピュータ、
ラップトップコンピュータ、
タブレットコンピュータ、
電話
テレビジョン、
カメラ、
ディスプレイデバイス、
デジタルメディアプレーヤ、
ビデオゲームコンソール、
ビデオゲームデバイス、
ビデオストリーミングデバイス、または
ワイヤレス通信デバイス
の少なくとも１つを備える、請求項１３に記載のデバイス。
【請求項２７】
ビデオデータを処理するための装置であって、
ブロックレベルシンタックス要素の値を決定するための手段と、ここにおいて、前記ブロックレベルシンタックス要素は、複数のサンプルを含む前記ビデオデータのブロックの全体に対応し、前記ブロックレベルシンタックス要素の前記値は、前記ブロックに含まれる前記複数のサンプルの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色値のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値を使用してコーディングされるかどうかを示し、
前記ブロックレベルシンタックス要素の前記値に基づいてビデオデータの前記ブロックをコーディングするための手段と、
を備え、
前記ブロックレベルシンタックス要素の前記値を決定するための手段は、前記ブロックの少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされるかどうかを示すブロックレベルエスケープフラグの値を決定するための手段を備え、
前記ブロックレベルエスケープフラグをコーディングするかどうかが、前記ブロックのサイズに基づいて決定される、装置。
【請求項２８】
実行されると、ビデオコーディングデバイスの１つまたは複数のプロセッサに、
ブロックレベルシンタックス要素の値を決定させ、ここにおいて、前記ブロックレベルシンタックス要素は、複数のサンプルを含むビデオデータのブロックの全体に対応し、前記ブロックレベルシンタックス要素の前記値は、前記ブロックに含まれる前記複数のサンプルの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色値のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値を使用してコーディングされるかどうかを示し、
前記ブロックレベルシンタックス要素の前記値に基づいてビデオデータの前記ブロックをコーディングさせる
命令を記憶し、
前記ブロックレベルシンタックス要素の前記値を決定することは、前記ブロックの少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされるかどうかを示すブロックレベルエスケープフラグの値を決定することを備え、
前記ブロックレベルエスケープフラグをコーディングするかどうかが、前記ブロックのサイズに基づいて決定される、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、２０１４年５月２２日に出願された米国仮出願第６２／００２，０５４号、２０１４年６月１０日に出願された米国仮出願第６２／０１０，３１３号、２０１４年６月２０日に出願された米国仮出願第６２／０１５，２４０号、２０１４年７月３１日に出願された米国仮出願第６２／０３１，７６６号、２０１４年８月２２日に出願された米国仮出願第６２／０４０，９７８号、２０１５年２月１０日に出願された米国仮出願第６２／１１４，５３３号、および２０１５年２月１１日に出願された米国仮出願第６２／１１５，０９９号の利益を主張し、これらの各々の内容全体が本明細書に参考として組み込まれる。
【技術分野】
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中のＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などの、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされるブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に２次元アレイで構成される量子化された係数は、係数の１次元ベクトルを生成するために走査されることがあり、なお一層の圧縮を達成するためにエントロピーコーディングが適用されることがある。
【発明の概要】
【０００６】
[0006]本開示の技法は、パレットベースのビデオコーディングに関する。たとえば、パレットベースのコーディングでは、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして「パレット」を形成し得る。パレットベースのコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。実際のピクセル値（またはそれらの残差）をコーディングするのではなく、ビデオコーダは、ピクセルの色を表すパレット中のエントリーにピクセルを関連付ける、ピクセルの１つまたは複数のパレットインデックスをコーディングすることができる。本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、およびパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。
【０００７】
[0007]ある例では、ビデオデータを処理する方法は、ビデオデータの１つのブロックのすべてのサンプルに対して、そのブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータのそのブロックをコーディングするための色のパレットに含まれていない少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定することと、その値に基づいてビデオデータのブロックをコーディングすることとを含む。
【０００８】
[0008]別の例では、ビデオデータを処理するためのデバイスは、ビデオデータのサンプルのブロックを記憶するように構成されるメモリと、ビデオデータのブロックのすべてのサンプルに対して、そのブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータのそのブロックをコーディングするための色のパレットに含まれていない少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定し、その値に基づいてビデオデータのブロックをコーディングするように構成される、１つまたは複数のプロセッサと、を含む。
【０００９】
[0009]別の例では、ビデオデータを処理するための装置は、ビデオデータのブロックのすべてのサンプルに対して、そのブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータのそのブロックをコーディングするための色のパレットに含まれていない少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定するための手段と、その値に基づいてビデオデータのブロックをコーディングするための手段とを含む。
【００１０】
[0010]別の例では、非一時的コンピュータ可読媒体は、実行されると、１つまたは複数のプロセッサに、ビデオデータのブロックのすべてのサンプルに対して、そのブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータのそのブロックをコーディングするための色のパレットに含まれていない少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定させ、その値に基づいてビデオデータのブロックをコーディングさせる、命令を記憶している。
【００１１】
[0011]別の例では、ビデオデータを処理する方法は、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータと、のうちの少なくとも１つをコーディングすることと、そのデータに従ってビデオデータのブロックをコーディングすることとを含む。
【００１２】
[0012]別の例では、ビデオデータを処理するためのデバイスは、ビデオデータのブロックを記憶するように構成されるメモリと、１つまたは複数のプロセッサとを含み、当該１つまたは複数のプロセッサは、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータと、のうちの少なくとも１つをコーディングし、ビットストリームからコーディングされるデータに従ってビデオデータのブロックをコーディングするように構成される。
【００１３】
[0013]別の例では、ビデオデータを処理するための装置は、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータと、のうちの少なくとも１つをコーディングするための手段と、そのデータに従ってビデオデータのブロックをコーディングするための手段とを含む。
【００１４】
[0014]別の例では、非一時的コンピュータ可読媒体は、実行されると、１つまたは複数のプロセッサに、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータと、のうちの少なくとも１つをコーディングさせ、そのデータに従ってビデオデータのブロックをコーディングさせる、命令を記憶している。
【００１５】
[0015]別の例では、ビデオデータをコーディングする方法は、ピクセルをコーディングするために使用される色のパレット中の色値に該ピクセルの値を関連付けるパレットインデックスに関連付けられる該ピクセルに対して、該ピクセルの該パレットインデックスを用いてコーディングされる（複数の）パレットインデックスの（１つの）ランのランレングスを決定することと、該ピクセルの該パレットインデックスを用いてコーディングされることが可能である（複数の）パレットインデックスの最大のランに対する最大ランレングスを決定することと、決定された最大ランレングスに基づいて、ランレングスを示すデータをコーディングすることと、を含む。
【００１６】
[0016]別の例では、ビデオデータをコーディングするためのデバイスは、ピクセルをコーディングするために使用される色のパレット中の色値に該ピクセルの値を関連付けるパレットインデックスに関連付けられる、ビデオデータの該ピクセルを記憶するように構成されるメモリと、該ピクセルに対して、該ピクセルのパレットインデックスを用いてコーディングされる（複数の）パレットインデックスのランのランレングスを決定し、該ピクセルの該パレットインデックスを用いてコーディングされることが可能である（複数の）パレットインデックスの最大のランに対する最大ランレングスを決定し、決定された最大ランレングスに基づいて該ランレングスを示すデータをコーディングするように構成される、１つまたは複数のプロセッサと、を含む。
【００１７】
[0017]別の例では、ビデオデータを処理するための装置は、ピクセルをコーディングするために使用される色のパレット中の色値に該ピクセルの値を関連付けるパレットインデックスに関連付けられる該ピクセルに対して、該ピクセルの該パレットインデックスを用いてコーディングされる（複数の）パレットインデックスの（１つの）ランのランレングスを決定するための手段と、該ピクセルの該パレットインデックスを用いてコーディングされることが可能である（複数の）パレットインデックスの最大のランに対する最大ランレングスを決定するための手段と、決定された最大ランレングスに基づいて該ランレングスを示すデータをコーディングするための手段とを含む。
【００１８】
[0018]別の例では、非一時的コンピュータ可読媒体は、実行されると、１つまたは複数のプロセッサに、ピクセルをコーディングするために使用される色のパレット中の色値に該ピクセルの値を関連付けるパレットインデックスに関連付けられる該ピクセルに対して、該ピクセルのパレットインデックスを用いてコーディングされる（複数の）パレットインデックスの（１つの）ランのランレングスを決定させ、該ピクセルの該パレットインデックスを用いてコーディングされることが可能である（複数の）パレットインデックスの最大のランに対する最大ランレングスを決定させ、決定された最大ランレングスに基づいて該ランレングスを示すデータをコーディングさせる、命令を記憶している。
【００１９】
[0019]本開示の１つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００２０】
【図１】本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【図３】本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。
【図４】本開示の技法に従った、パレットベースのビデオコーディングのためのパレットエントリーを決定する例を示す概念図。
【図５】本開示の技法に従った、ピクセルのブロックのためのパレットに対するパレットインデックスを決定する例を示す概念図。
【図６】本開示の技法に従った、ピクセルのブロックに対する最大ランレングスを決定する例を示す概念図。
【図７】本開示の技法に従った、ブロックのいずれかのサンプルがエスケープサンプルとして符号化されるかどうかを示す１つまたは複数のブロックレベルシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャート。
【図８】本開示の技法に従った、ブロックのいずれかのサンプルがエスケープサンプルとして復号されるかどうかを示す１つまたは複数のブロックレベルシンタックス要素に基づいてビデオデータのブロックを復号するための例示的なプロセスを示すフローチャート。
【図９】本開示の技法に従った、最大パレットサイズと最大パレット予測子サイズとを示す１つまたは複数のシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャート。
【図１０】本開示の技法に従った、最大パレットサイズと最大パレット予測子サイズとを示す１つまたは複数のシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャート。
【図１１】本開示の技法に従った、最大可能ランレングスに基づいてピクセルのランのランレングスを示すデータをコーディング（符号化または復号）するための例示的なプロセスを示すフローチャート。
【発明を実施するための形態】
【００２１】
[0031]本開示の態様は、ビデオコーディングおよびビデオ圧縮のための技法を対象とする。具体的には、本開示は、ビデオデータのパレットベースのコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
【００２２】
[0032]しかしながら、リモートデスクトップ、共同作業用ディスプレイおよびワイヤレスディスプレイのような適用例では、コンピュータで生成されたスクリーンコンテンツが、圧縮されるべき支配的なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法は、そのコンテンツを圧縮するための効率的な方法ではないことがある。
【００２３】
[0033]本開示は、スクリーンにより生成されたコンテンツのコーディング（たとえば、スクリーンコンテンツコーディング（ＳＣＣ））に特に好適であり得る、パレットベースのコーディングを説明する。ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
【００２４】
[0034]いくつかの例では、パレットベースのコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発された新しいビデオコーディング規格である。最近のＨＥＶＣテキスト仕様ドラフトは、Ｂｒｏｓｓ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０  （ｆｏｒ  ＦＤＩＳ  ＆  Ｃｏｎｓｅｎｔ）」、ＪＣＶＣ−Ｌ１００３＿ｖ１３、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ  ３およびＩＳＯ／ＩＥＣ  ＪＣＴ  １／ＳＣ  ２９／ＷＧ  １１のＪＣＴ−ＶＣの第１２回会合、２０１３年１月１４〜２３日（「ＨＥＶＣ  Ｄｒａｆｔ  １０」）に記載されている。
【００２５】
[0035]ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００２６】
[0036]パレットベースのコーディングでは、ビデオデータの特定のエリアが、比較的少数の色を有すると仮定される。ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００２７】
[0037]上の例では、ビデオエンコーダは、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ、ピクセル値をパレットに関連付けるピクセルのためのパレットインデックス（パレットインデックス値とも呼ばれる）を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのパレットインデックスを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのパレットインデックスをパレットのエントリーに関連付けることができる。ピクセル（および／またはピクセル値を示す関連するパレットインデックス）は一般に、サンプルと呼ばれ得る。
【００２８】
[0038]ブロック中のサンプルは、水平方向のラスター走査順序を使用して処理される（たとえば、走査される）と仮定される。たとえば、ビデオエンコーダは、水平方向のラスター走査順序を使用してパレットインデックスを走査することによって、パレットインデックスの２次元ブロックを１次元アレイに変換することができる。同様に、ビデオデコーダは、水平方向のラスター走査順序を使用してパレットインデックスのブロックを再構築することができる。したがって、本開示は、ブロック中の現在コーディングされているサンプルに走査順序において先行するサンプルのことを、以前のサンプルと呼び得る。垂直方向のラスター走査順序などの水平方向のラスターサン以外の走査も適用可能であり得ることを、理解されたい。上の例は意図されるは、パレットベースのコーディングの全般的な説明を与える。
【００２９】
[0039]パレットは通常、インデックスによって番号を付けられた、色の成分（たとえば、ＲＧＢ、ＹＵＶなど）の値または強度を表すエントリーを含む。ビデオエンコーダとビデオデコーダの両方が、パレットエントリーの数と、各パレットエントリーのための色成分値と、現在のブロックのためのパレットエントリーの正確な順序とを決定する。本開示では、各パレットエントリーがサンプルのすべての色成分の値を指定すると仮定される。しかしながら、本開示の概念は、各色成分に対して別々のパレットを使用することに適用可能である。
【００３０】
[0040]いくつかの例では、パレットは、以前にコーディングされたブロックからの情報を使用して合成され得る。すなわち、パレットは、以前のブロックをコーディングするために使用されたパレットから予測される、予測されたパレットエントリーを含み得る。たとえば、規格提案文書、Ｗｅｉ  Ｐｕ他、「ＡＨＧ１０：  Ｓｕｇｇｅｓｔｅｄ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｃｏｄｉｎｇ  ｂａｓｅｄ  ｏｎ  ＲＥｘｔ６．０」、ＪＣＴＶＣ−Ｑ００９４、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後ＪＣＴＶＣ−Ｑ００９４）に記述されるように、パレットは、予測子パレットから複製されるエントリーを含み得る。予測子パレットは、パレットモードを使用して以前にコーディングされたブロックからの、または他の再構築されたサンプルからのパレットエントリーを含み得る。予測子パレット中の各エントリーに対して、バイナリフラグが、そのフラグと関連付けられるエントリーが現在のパレットに複製されるかどうかを示す（たとえば、フラグ＝１によって示される）ようにコーディングされ得る。バイナリフラグの列は、バイナリパレット予測ベクトルと呼ばれ得る。現在のブロックをコーディングするためのパレットはまた、いくつかの新たなパレットエントリーを含んでよく、これらは明示的に（たとえば、パレット予測ベクトルとは別に）コーディングされ得る。新たなエントリーの数のインジケーションもコーディングされ得る。予測されるエントリーと新たなエントリーの合計は、ブロックの全体のパレットサイズを示し得る。
【００３１】
[0041]提案されるＪＣＴＶＣ−Ｑ００９４のように、パレットベースのコーディングモードを用いてコーディングされるブロック中の各サンプルは、以下に記載されるような３つのパレットモードの１つを使用してコーディングされ得る。
・Ｅｓｃａｐｅモード：このモードでは、サンプル値がパレットエントリーとしてパレットに含められず、量子化されたサンプル値がすべての色成分に対して明示的にシグナリングされる。新たなパレットエントリーのシグナリングに似ているが、新たなパレットエントリーに対しては、色成分値は量子化されない。
・ＣｏｐｙＦｒｏｍＴｏｐモード（ＣｏｐｙＡｂｏｖｅモードとも呼ばれる）：このモードでは、現在のサンプルのためのパレットエントリーインデックスが、ブロック中ですぐ上に位置するサンプルから複製される。
・Ｖａｌｕｅモード（Ｉｎｄｅｘモードとも呼ばれる）：このモードでは、パレットエントリーインデックスの値が明示的にシグナリングされる。
【００３２】
[0042]本明細書で説明されるように、パレットエントリーインデックスは、パレットインデックスまたは単にインデックスと呼ばれ得る。これらの用語が、本開示の技法を説明するために交換可能に使用され得る。加えて、以下でより詳細に説明されるように、パレットインデックスは、１つまたは複数の関連する色または強度の値を有し得る。たとえば、パレットインデックスは、ピクセルの単一の色または強度の成分と関連付けられる、単一の関連する色または強度の値を有し得る（たとえば、ＲＧＢデータのＲｅｄ成分、ＹＵＶデータのＹ成分など）。別の例では、パレットインデックスは、複数の関連する色または強度の値を有し得る。いくつかの事例では、パレットベースのコーディングは、モノクロのビデオをコーディングするために適用され得る。したがって、「色値」は一般に、ピクセル値を生成するために使用される任意の色成分または非色成分を指し得る。
【００３３】
[0043]ＣｏｐｙＦｒｏｍＴｏｐモードおよびＶａｌｕｅモードでは、ラン値（単にランとも呼ばれ得る）もシグナリングされ得る。ラン値は、一緒にコーディングされるパレットコーディングされるブロック中の、特定の走査順序にある連続するサンプルの数（たとえば、複数のサンプルの１つのラン）を示し得る。いくつかの事例では、該複数のサンプルの１つのランは（複数の）パレットインデックスの（１つの）ランとも呼ばれることがあり、それは、該ランの各サンプルがパレットに対する関連するインデックスを有するからである。
【００３４】
[0044]ラン値は、同じパレットコーディングモードを使用してコーディングされる複数のパレットインデックスの１つのランを示し得る。たとえば、Ｖａｌｕｅモードに関して、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、パレットインデックス（パレットインデックス値または単にインデックス値とも呼ばれる）と、同じパレットインデックスを有しそのパレットインデックスを用いてコーディングされる、ある走査順序にある連続するサンプルの数を示すラン値とを、コーディングすることができる。ＣｏｐｙＦｒｏｍＴｏｐモードに関して、ビデオコーダは、上側の隣接サンプル（たとえば、ブロック中の現在コーディングされているサンプルの上に位置するサンプル）のインデックスと、上側の隣接サンプルからパレットインデックスを同様に複製しそのパレットインデックスを用いてコーディングされている、ある走査順序にある連続するサンプルの数を示すラン値とに基づいて、現在のサンプル値のためのインデックスが複製されることを示すインジケーション（indication）をコーディングすることができる。したがって、上の例では、パレットインデックスのランは、同じ値を有するパレットインデックスのラン、または上側の隣接パレットインデックスから複製されるパレットインデックスのランを指す。
【００３５】
[0045]したがって、ランは、所与のモードに対して、同じモードに属する後続のサンプルの数を指定し得る。いくつかの事例では、インデックスとラン値とをシグナリングすることは、ランレングスコーディングと似ていることがある。説明を目的とする例では、ブロックの連続するパレットインデックスの列は、０、２、２、２、２、５であり得る（たとえば、ここで各インデックスはブロック中のサンプルに対応する）。この例では、ビデオコーダは、Ｖａｌｕｅモードを使用して第２のサンプル（たとえば、２つのパレットインデックスのうちの最初のパレットインデックス）をコーディングすることができる。２に等しいインデックスをコーディングした後で、ビデオコーダは３というランをコーディングすることができ、これは、３つの後続のサンプルも２という同じパレットインデックスを有することを示す。同様の方式で、ＣｏｐｙＦｒｏｍＴｏｐモードを使用してインデックスをコーディングした後で４つのパレットインデックスのランをコーディングすることは、全体で５つのパレットインデックスが、現在コーディングされているサンプル位置の上の行の中の対応するパレットインデックスから複製されることを示し得る。
【００３６】
[0046]本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、およびパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。いくつかの例では、本開示の技法は、ＪＣＴＶＣ−Ｑ００９４に存在するパレットモード、パレットインデックス、ラン、およびパレットサイズのシグナリング（ならびに投稿ＪＣＴＶＣ−Ｑ００９４とともにアップロードされたパレットモードを実装する参照ソフトウェア）と関連付けられる潜在的な冗長性を解決するために使用され得る。したがって、以下でより詳細に説明されるように、本開示の技法は、いくつかの事例では、パレットモードを使用してビデオデータをコーディングするときの効率性を向上させビットレートを向上させ得る。
【００３７】
[0047]本開示のいくつかの態様は、パレットベースのコーディングモードをシグナリングすること、具体的には、エスケープサンプルをシグナリングすることと関連付けられる技法を対象とする。たとえば、エスケープサンプル（エスケープピクセルとも呼ばれる）は、ブロックをコーディングするためのパレット中で表される対応する色を有しないブロックのサンプル（またはピクセル）であり得る。したがって、エスケープサンプルは、パレットから色のエントリー（またはピクセル値）を使用して再構築されないことがある。代わりに、エスケープサンプルのための色値は、パレットの色値とは別にビットストリームにおいてシグナリングされる。
【００３８】
[0048]以下でより詳細に説明されるように、ビデオコーダ（たとえば、ビデオエンコーダおよびビデオデコーダは、パレットコーディングされるブロックのサンプルが、そのブロックのためのパレットに含まれていないサンプルの色に基づいて、たとえば上の「Ｅｓｃａｐｅモード」と呼ばれるプロセスを使用してコーディングされるかどうかを示す、サンプルごとのデータをコーディングし得る。一例では、ビデオコーダは、サンプルがたとえばＥｓｃａｐｅモードを使用してエスケープサンプルとしてコーディングされるかどうかを示す、各サンプルのためのフラグをコーディングし得る（本明細書では暗黙的エスケープシグナリングと呼ばれる）。別の例では、ビデオコーダは、サンプルがたとえばＥｓｃａｐｅモードを使用してエスケープサンプルとしてコーディングされることを示す、サンプルのための他のシンタックス（以下で説明されるような追加のパレットインデックスなど）をコーディングし得る（本明細書では明示的エスケープシグナリングと呼ばれる）。
【００３９】
[0049]本開示の態様によれば、パレットコーディングされるブロックに対して、１つまたは複数のシンタックス要素は、ブロックレベル（たとえば、ＣＵレベルまたはＬＣＵレベル）において、ブロックのいずれかのサンプルがパレットに含まれていないサンプルの色値に基づいてコーディングされるかどうか、たとえばエスケープサンプルとしてコーディングされるかどうかを示し得る。当該１つまたは複数のシンタックス要素は、ブロックレベルエスケープシンタックスと呼ばれ得る。たとえば、ブロックレベルシンタックスは、ＣＵまたはＬＣＵなどのビデオデータのブロックをコーディングする間にコーディングまたは決定されるシンタックスを指し得る。ブロックレベルシンタックスは、ヘッダに含まれることがあり、または、ブロックと関連付けられる他のデータ（たとえば、ブロックの特性を記述するブロックの前または後にコーディングされるデータ）とともに存在することがある。対照的に、ブロックレベルシンタックスではない他のシンタックスは、スライスヘッダに含まれることがあり、またはビデオデータの個々のピクセルとともに存在することがある。
【００４０】
[0050]一例では、ビデオコーダは、ブロックのいずれかのサンプルがパレットに含まれていない色値に基づいてコーディングされるかどうかを示す、フラグ（ブロックレベルエスケープフラグと呼ばれ得る）をコーディングおよび／または決定するように構成され得る。たとえば、０というフラグ値は、ブロックのサンプルのいずれもがＥｓｃａｐｅモードを使用してコーディングされないことを示し得る。すなわち、ブロックのすべてのサンプルの値が、そのブロックをコーディングするためのパレットに含まれている色値に基づいて決定され得る。１というフラグ値は、ブロックの少なくとも１つのサンプルがＥｓｃａｐｅモードを使用してコーディングされることを示し得る。すなわち、少なくとも１つのサンプルの値は、ブロックをコーディングするためのパレットに含まれておらず、別個にシグナリングされ得る。したがって、このフラグは、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのサンプルがブロックをコーディングするためのパレットに含まれていない色値を有するかどうかを示し得る。
【００４１】
[0051]以下でより詳細に説明されるように、ブロックレベルエスケープシンタックスは、いくつかの事例ではビットの節約をもたらし得る。たとえば、ブロック全体のいずれかのサンプルがエスケープサンプルとしてコーディングされるかどうかを決定することによって、ビデオコーダは、エスケープサンプルと関連付けられるいくつかのシンタックス要素のコーディングをスキップすることが可能であり得る。すなわち、サンプルがエスケープサンプルとしてコーディングされないことをシンタックスが示す事例では、ビデオコーダは、ブロックのためのエスケープサンプルと関連付けられるいずれの他のシンタックス（上で述べられたサンプルごとのシンタックスなど）もコーディングしなくてよい。以下でより詳細に説明されるように、ビデオコーダはまた、あるシンタックスのコーディングを、コーディングされているブロックのためのパレットのサイズに基づいてブロックの少なくとも１つのサンプルがエスケープサンプルとしてコーディングされることをそのシンタックスが示すとき、スキップすることができる。したがって、本開示の技法は、パレットベースのコーディングを使用してビデオデータをコーディングするとき、ビットレートとコーディング効率とを向上させることができる。
【００４２】
[0052]本開示の他の態様は、パレットモードのための最大パレットパラメータをコーディングすることを対象とする。たとえば、パレットの最大パレットサイズは通常、ビデオエンコーダとビデオデコーダの両方において定義される不変の値であり得る。同様に、パレット予測子（以下でより詳細に説明されるように、パレットを予測するために使用される）の最大サイズも、ビデオエンコーダとビデオデコーダの両方において定義される不変の値であり得る。したがって、コーディングされているビデオデータの具体的な特性とは無関係に、これらの最大パレットパラメータは変更されないことがある。
【００４３】
[0053]本開示の態様によれば、ビデオコーダは、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータをコーディングするように構成され得る。たとえば、本開示の態様によれば、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータは、シーケンスパラメータセット（ＳＰＳ）などのパラメータセットに含まれ得る。したがって、ビデオコーダは、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータとの少なくとも１つをコーディングし得る。
【００４４】
[0054]最大パレットサイズおよび／または最大パレット予測子サイズを示すデータをコーディングすることは柔軟性をもたらすことがあり、これによりコーディング効率が向上することがある。たとえば、本技法は、ビデオコーダが、コーディングされているビデオデータの特性に基づいて（たとえば、データのビット深度、ブロックサイズ、データと関連付けられるプロファイルまたはレベルなどに基づいて）異なるサイズのパレットとパレット予測子とを使用することを可能にし得る。したがって、比較的大きい最大パレットパラメータが、そのようなパラメータによる利益を受け得るブロックに対して定義され得るように、最大パレットパラメータは、コーディングされるビデオデータに対して適合され得る。加えて、比較的大きいパラメータによる利益を受ける可能性がより低いブロックのためにパレットを構築することと関連付けられる複雑さを減らすために、比較的小さい最大パレットパラメータが定義され得る。
【００４５】
[0055]本開示の他の態様は、パレットベースのビデオコーディングのための様々なシンタックス要素をコーディングする技法を対象とする。たとえば、本開示の技法は、パレットインデックスのラン値（ランレングス値とも呼ばれる）、パレット予測ベクトル、または他のパレット関連のシンタックスなどの、パレットコーディングのためのシンタックスを、コーディングされるシンタックスの最大の可能な値を考慮する符号を使用してコーディングすることを含む。いくつかの事例では、本開示の態様によれば、シンタックスは、以下でより詳細に説明されるように、ある形の指数ゴロム符号を使用してコーディングされ得る。本技法は、いくつかの事例では、パレット関連のシンタックスを表すために必要とされるビットの数を減らし得る。
【００４６】
[0056]図１は、本開示の技法を利用できる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００４７】
[0057]図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス１４はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００４８】
[0058]ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００４９】
[0059]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化されたビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、高周波（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などのワイヤレスおよび／または有線の通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などのパケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００５０】
[0060]別の例では、チャネル１６は、ソースデバイス１２によって生成された、符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００５１】
[0061]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、送信先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【００５２】
[0062]宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００５３】
[0063]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００５４】
[0064]図１に示されるビデオコーディングシステム１０は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および／または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【００５５】
[0065]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００５６】
[0066]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【００５７】
[0067]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して、符号化されたビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【００５８】
[0068]ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアなどの、様々な適切な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶することができ、本開示の技法を実行するために１つまたは複数のプロセッサを使用してハードウェア内でそれらの命令を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれることがある。
【００５９】
[0069]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化のときに符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに起こり得るなど、ある時間の長さにわたって起こることがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【００６０】
[0070]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣドラフト１０に記載されるＨＥＶＣ規格などの、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
【００６１】
[0071]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと表記される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロであることがあり、ルーマサンプルのアレイしか含まないことがある。
【００６２】
[0072]ビデオエンコーダ２０は、ピクチャの符号化された表現を生成するために、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００６３】
[0073]コーディングされたＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するように、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実行することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイと、ＣｂサンプルアレイおよびＣｒサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００６４】
[0074]ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成することができる。
【００６５】
[0075]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００６６】
[0076]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０は、ＣＵのＣｂ残差ブロックを生成することができる。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのＣｒ残差ブロックを生成することもできる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００６７】
[0077]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを、１つまたは複数のルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックと関連付けられ得る。ＴＵと関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００６８】
[0078]ビデオエンコーダ２０は、ＴＵのルーマ変換ブロックに１回または複数回の変換を適用して、ＴＵのルーマ係数ブロックを生成することができる。係数ブロックは変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１回または複数回の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００６９】
[0079]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後で、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を実行し得る。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリームに出力することができる。
【００７０】
[0080]ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）ユニットを備え得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプ符号を示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプ符号は、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、ＲＢＳＰは０ビットを含む。
【００７１】
[0081]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコーディングされたスライスのためのＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットはＳＥＩのためのＲＢＳＰをカプセル化することができ、以下同様である。ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれ得る。
【００７２】
[0082]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するためにビットストリームを構文解析（parse）し得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ３０は、現在のＣＵのＰＵの予測ブロックを決定するために、ＰＵのＭＶを使用することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ３０は、現在のＣＵのＰＵの予測ブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構築することができる。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築することができる。
【００７３】
[0083]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングすることができる。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００７４】
[0084]上の例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ（locate）、ピクセル値をパレットに関連付けるピクセルのためのパレットインデックスを用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのパレットインデックスを取得することができる。ビデオデコーダ３０は、ブロックのピクセル値を再構築するために、ピクセルのパレットインデックスをパレットのエントリーに関連付けることができる。
【００７５】
[0085]上で述べられたように、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットのパレットインデックスをコーディングするために異なる数のパレットコーディングモードを使用することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのパレットインデックスをコーディングするために、Ｅｓｃａｐｅモード、ＣｏｐｙＦｒｏｍＴｏｐモード（ＣｏｐｙＡｂｏｖｅモードとも呼ばれる）、またはＶａｌｕｅモード（Ｉｎｄｅｘモードとも呼ばれる）を使用することができる。一般に、「Ｅｓｃａｐｅモード」を使用してサンプルをコーディングすることは一般に、ブロックをコーディングするためのパレット中で表される対応する色を有しないブロックのサンプルをコーディングすることを指し得る。上で述べられたように、そのようなサンプルは、エスケープサンプルまたはエスケープピクセルと呼ばれ得る。
【００７６】
[0086]別の例示的なパレットコーディングモードが、Ｙｕ−Ｗｅｎ  Ｈｕａｎｇ他、「Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  Ｓｃｒｅｅｎ  Ｃｏｎｔｅｎｔ  Ｃｏｒｅ  Ｅｘｐｅｒｉｍｅｎｔ  ３  （ＳＣＣＥ３）：  Ｐａｌｅｔｔｅ  Ｍｏｄｅ」、ＪＣＴＶＣ−Ｑ１１２３、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後Ｑ１１２３）において記述されるような、第３のｓｃｒｅｅｎ  ｃｏｎｔｅｎｔ  ｃｏｄｉｎｇ  ｃｏｒｅ  ｅｘｐｅｒｉｍｅｎｔ、ｓｕｂｔｅｓｔ  Ｂ．６において記述されており、別のモードが、２０１４年５月２６日にＣａｎｏｎによって発表されたソフトウェアに導入された。このモードのためのマクロは「ＣＡＮＯＮ＿ＮＥＷ＿ＲＵＮ＿ＬＡＳＴ＿ＴＲＡＮＳＩＴＩＯＮ」であり、本明細書ではＴｒａｎｓｉｔｉｏｎ  Ｒｕｎモードと呼ばれ得る。Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎは、ビデオエンコーダ２０またはビデオデコーダ３０が、インデックス値と、それに続いて同じパレットインデックスを有する後続のサンプルの数を指定するランとをコーディングし得るという点で、Ｖａｌｕｅモードに類似し得る。
【００７７】
[0087]ＶａｌｕｅモードとＴｒａｎｓｉｔｉｏｎ  Ｒｕｎモードの違いは、ｔｒａｎｓｉｔｉｏｎ  ｒｕｎモードのパレットインデックスはビットストリームにおいてシグナリングされないということである。そうではなく、ビデオエンコーダ２０およびビデオデコーダ３０が、パレットインデックスを推測し得る。本明細書で説明されるように、値を推測することは、ビットストリームにおいてコーディングされる値を表す専用のシンタックスを参照することなく値を決定することを指し得る。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、ビットストリームにおいて値のための専用のシンタックス要素をコーディングすることなく値を推測することができる。推測されるインデックスは、遷移（transition）インデックスと呼ばれ得る。
【００７８】
[0088]いくつかの例では、パレットモードをシグナリングする２つの方法があり得る。パレットモードをシグナリングするための第１の技法は、明示的エスケープシグナリングと呼ばれ得る。たとえば、ＪＣＴＶＣ−Ｑ００９４では、マクロ「ＰＬＴ＿ＲＥＭＯＶＥ＿ＥＳＣＡＰＥ＿ＦＬＡＧ」が０である場合、ビデオエンコーダ２０は、ブロック中のコーディングされているサンプルがＥｓｃａｐｅモードでコーディングされるかどうかを示すために、ブロックの各サンプルのためのエスケープフラグを明示的に符号化することができる。サンプルがＥｓｃａｐｅモードを用いてコーディングされない場合、ビデオエンコーダ２０は、モードがＣｏｐｙＦｒｏｍＴｏｐであるかＶａｌｕｅであるかを示すために、追加のデータを符号化することができる。いくつかの事例では、追加のデータは、ＳＰｏｉｎｔフラグと本明細書で呼ばれるフラグであり得る（たとえば、０というＳＰｏｉｎｔフラグの値はＣｏｐｙＦｒｏｍＴｏｐモードを示してよく、１というＳＰｏｉｎｔフラグの値はＶａｌｕｅモードを示してよく、またはその逆であってよい）。
【００７９】
[0089]したがって、明示的エスケープシグナリングでは、ＳＰｏｉｎｔフラグは、示されるモードと関連付けられるピクセル値のランのための特定のランタイプを示すために使用され得る。たとえば、ビデオエンコーダ２０は、現在コーディングされているインデックスおよびランにおいてコーディングされている後続のパレットインデックスのランが、ＣｏｐｙＦｒｏｍＴｏｐモードを使用してコーディングされるかＶａｌｕｅモードを使用してコーディングされるかを示すように、ＳＰｏｉｎｔフラグを符号化することができる。ビデオエンコーダ２０は、後続のランサンプルのためのエスケープフラグ（たとえば、「ＰＬＴ＿ＲＥＭＯＶＥ＿ＥＳＣＡＰＥ＿ＦＬＡＧ」）とＳＰｏｉｎｔフラグ（必要なとき）とを符号化しない。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、ランに含まれるサンプルのためのエスケープフラグとＳＰｏｉｎｔフラグの値を推測することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ランに含まれるサンプルのためのエスケープフラグとＳＰｏｉｎｔフラグの値を、ビットストリーム中のそのような値を表す専用のシンタックスを参照することなく決定することができる。
【００８０】
[0090]パレットモードをシグナリングするための第２の技法は、暗黙的エスケープシグナリングと呼ばれ得る。たとえば、ＪＣＴＶＣ−Ｑ００９４からのマクロ「ＰＬＴ＿ＲＥＭＯＶＥ＿ＥＳＣＡＰＥ＿ＦＬＡＧ」が１である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、いずれのパレットエントリーにも対応しないパレットに対する特別なインデックスを収容するために、パレットのパレットエントリーの数を１だけ増やすように構成され得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、所与のブロックのための増やされたパレット中の最後のパレットインデックスとして、追加のインデックスを含め得る。追加のインデックスは、Ｅｓｃａｐｅモードのインジケーションとして使用され得る。
【００８１】
[0091]暗黙的エスケープシグナリングを実行するとき、ビデオエンコーダ２０は、ブロックの特定のサンプル値に対して、追加のサンプルがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされることを示すために、追加のインデックスを表すデータを符号化することができる。ビデオエンコーダ２０はまた、エスケープサンプルの色値を符号化することができる。したがって、暗黙的エスケープシグナリングの場合、明示的なシンタックスを使用してシグナリングされることになる、可能なモードは２つしかない（たとえば、ＣｏｐｙＦｒｏｍＴｏｐモードまたはＶａｌｕｅモード（Ｉｎｄｅｘモードとも呼ばれる））。たとえば、ＳＰｏｉｎｔフラグだけが、これらのモードを区別するためにシグナリングされ得る。サンプルがＶａｌｕｅモードでコーディングされ、Ｖａｌｕｅモードのためのインデックスがエスケープインデックス（たとえば、パレットに対する上で述べられた追加のインデックス）に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、エスケープサンプルとしてコーディングされるべきであるものとしてサンプルを推測することができる。この場合、ランはシグナリングされない。Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードを用いた暗黙的エスケープシグナリングを使用するとき、ＳＰｏｉｎｔフラグは、値０（たとえば、Ｖａｌｕｅモード）、１（たとえば、ＣｏｐｙＦｒｏｍＴｏｐモード）、または２（たとえば、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモード）をとり得る。
【００８２】
[0092]本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、およびパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。いくつかの例では、本開示の技法は、ＪＣＴＶＣ−Ｑ００９４に存在するパレットモード、パレットインデックス、ラン、およびパレットサイズのシグナリング（ならびに投稿ＪＣＴＶＣ−Ｑ００９４とともにアップロードされたパレットモードを実装する参照ソフトウェア）と関連付けられる潜在的な冗長性を解決するために使用され得る。
【００８３】
[0093]ＪＣＴＶＣ−Ｑ００９４で説明される技法と関連付けられるソフトウェアでは、ある程度のシグナリングの冗長性がすでに考慮され、なくされている。たとえば、ＪＣＴＶＣ−Ｑ００９４では、ＳＰｏｉｎｔフラグはブロックの最初の行のサンプルに対してはシグナリングされず、それは、パレットモードを用いてコーディングされたブロックは通常、現在のブロックを予測するために上側の隣接ブロックからの再構築されたサンプルを使用できないからである。上側の隣接ブロックは一般に、あるブロックに隣接しその上に位置するブロックを指し得る。同様に、現在コーディングされているサンプルに先行するサンプルのためのモードがＣｏｐｙＦｒｏｍＴｏｐである場合、現在のピクセルのためのモードはＣｏｐｙＦｒｏｍＴｏｐではあり得ない。
【００８４】
[0094]しかしながら、本開示は、他のシグナリングの冗長性および／または非効率性を認識しており、これらが全体的に、または選択的になくされ得る。以下でより詳細に説明されるように、本技法は、大きく歪みを引き起こすことなく、ビデオコーディングのビットレートの効率性を向上させる。一例として、現在のサンプルのすぐ上にあるサンプルがエスケープサンプルである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードを使用して現在のサンプルをコーディングしないように構成され得る。この場合、ビデオエンコーダ２０はサンプルのためのＳＰｏｉｎｔをシグナリングしなくてよく、ビデオエンコーダ２０およびビデオデコーダ３０は、必要であれば、Ｖａｌｕｅモードに等しいものとしてＳＰｏｉｎｔフラグを推測することができる。
【００８５】
[0095]別の例では、本開示の技法によれば、以前のサンプルも、ブロック中で現在のサンプルのすぐ上にあるサンプルもエスケープサンプルではなく、以前のサンプルおよび上のサンプルが同じパレットインデックスを有する場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードを使用して現在のサンプルをコーディングしないように構成される。これは、ＣｏｐｙＦｒｏｍＴｏｐモードでは、現在のサンプルのインデックスが以前のサンプルと同じであるからである。以前のサンプルのモードがＶａｌｕｅモードであれば、Ｖａｌｕｅモードと関連付けられるランは、現在のサンプルを組み込むように１だけ延長されていたであろう。一方、以前のサンプルのモードがＣｏｐｙＦｒｏｍＴｏｐであった場合、ビデオエンコーダ２０およびビデオデコーダ３０は、上で述べられたように、ＣｏｐｙＦｒｏｍＴｏｐモードを使用して現在のサンプルをコーディングしないように構成され得る。したがって、この場合、ビデオエンコーダ２０は現在のサンプルのためのＳＰｏｉｎｔフラグをシグナリングしなくてよく、ビデオエンコーダ２０およびビデオデコーダ３０は、必要であれば、Ｖａｌｕｅモードに等しいものとしてＳＰｏｉｎｔフラグを推測することができる。
【００８６】
[0096]別の例では、本開示の技法によれば、以前のランが、コーディングされているブロックの幅から１を引いたもの以上である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードを使用して現在のサンプルをコーディングしないように構成され得る。上で説明されたように、ＣｏｐｙＦｒｏｍＴｏｐモードはＣｏｐｙＦｒｏｍＴｏｐモードの後に来ることができないので、ビデオエンコーダ２０およびビデオデコーダ３０は、以前のサンプルと関連付けられるモードがＣｏｐｙＦｒｏｍＴｏｐモードを使用してコーディングされる場合、現在のサンプルからのモードはＣｏｐｙＦｒｏｍＴｏｐモードを使用してコーディングされ得ないと推測し得る。以前のランがＶａｌｕｅモードを使用してコーディングされ、以前のランがブロックの幅から１を引いたもの以上であった場合、ビデオエンコーダ２０およびビデオデコーダ３０は、（上で説明された例と同様の方式で）以前のサンプルのためのパレットインデックスおよび現在のサンプルのすぐ上のサンプルのためのパレットインデックスが同じであると決定するように構成され得る。この場合、現在のサンプルが同じインデックスを有し得なければ、ＣｏｐｙＦｒｏｍＴｏｐモードを不可能にする。したがって、この場合、ビデオエンコーダ２０は現在のサンプルのためのＳＰｏｉｎｔフラグをシグナリングしなくてよく、ビデオエンコーダ２０およびビデオデコーダ３０は、必要であれば、Ｖａｌｕｅモードに等しいものとしてＳＰｏｉｎｔフラグを推測することができる。
【００８７】
[0097]別の例では、本開示の態様によれば、明示的エスケープシグナリングを使用するとき、コーディングされているブロックに対してパレットサイズが１である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、２０１３年７月１２日に出願された米国仮出願第６１／８４５，８２４号、２０１３年１１月１日に出願された米国仮出願第６１／８９９，０４８号、または２０１３年１２月６日に出願された米国仮出願第６１／９１３，０４０号において説明されるパレットインデックスなどの、いくつかのパレットインデックスをコーディングしないように構成され得る。加えて、ビデオエンコーダ２０はＳＰｏｉｎｔフラグをコーディングしないように構成されてよく、それは、ビデオエンコーダ２０およびビデオデコーダ３０が、必要であれば、Ｖａｌｕｅモードに等しいものとしてＳＰｏｉｎｔフラグを推測することができるからである。これは、現在のサンプルがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされない場合、現在のサンプルのためのパレットインデックスはすでに知られており、（唯一の可能なパレットインデックスとして）０に等しく導出される。この場合、ランだけがシグナリングされる。ＣｏｐｙＦｒｏｍＴｏｐモードとＶａｌｕｅモードを区別することは必要ではなく、それは両方のモードが同一の結果を与えるからである。同様に、暗黙的エスケープシグナリングでは、パレットサイズが２であるとき、ビデオエンコーダ２０は、ＶａｌｕｅモードとＥｓｃａｐｅモードを区別するためにパレットインデックスをシグナリングし得るが、ＳＰｏｉｎｔフラグのシグナリングは上と同じ理由で必要ではない。
【００８８】
[0098]本開示の技法はまた、Ｖａｌｕｅモードと、ＣｏｐｙＦｒｏｍＴｏｐモードと、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードとを使用するときの冗長性をなくすために使用され得る。したがって、本技法は、歪みを大きく引き起こすことなくビデオコーディングのビットレートの効率性を向上させ得る。説明を目的とする例では、現在のサンプルはＶａｌｕｅモードでコーディングされ、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードは使用が可能ではない（たとえば、ＣｏｐｙＦｒｏｍＡｂｏｖｅモードおよびＶａｌｕｅモードだけが利用可能である）。この例では、以前のサンプルのモードがＶａｌｕｅであるとき、現在のサンプルのインデックスは以前のサンプルのインデックスと同じではあり得ず、それ以外のとき、現在のサンプルは以前のＶａｌｕｅモードに含められ、Ｖａｌｕｅモードのためのランは１だけインクリメントされる。同様に、以前のサンプルのモードがＣｏｐｙＦｒｏｍＴｏｐであるとき、コーディングされるべき現在のサンプルのインデックスは上のサンプルと同じではあり得ず、それ以外のとき、現在のサンプルはＣｏｐｙＦｒｏｍＴｏｐモードを用いてコーディングされ、場合によってはＣｏｐｙＦｒｏｍＴｏｐモードのためのランは１だけインクリメントされる。
【００８９】
[0099]上で説明された関係に留意して、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のサンプルのインデックスが以前のサンプルのインデックスより大きいとき（たとえば、以前のサンプルがＶａｌｕｅモードにある場合）、または一番上のサンプルのインデックスより大きいとき（たとえば、以前のサンプルがＣｏｐｙＦｒｏｍＴｏｐモードにある場合）、現在のサンプルのインデックスを１だけ減らすことができる。このプロセスは、Ｃ．Ｇｉｓｑｕｅｔ他、「ＡＨＧ１０：  Ｐａｌｅｔｔｅ  Ｉｎｄｅｘ  Ｃｏｄｉｎｇ」、ＪＣＴＶＣ−Ｑ００６４、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後ＪＣＴＶＣ−Ｑ００６４）において記述されている。また、以前の条件が真である（現在のインデックスが以前の左または上のパレットインデックスよりも大きい）かどうかとは無関係に、最大の可能なパレットインデックスの数は１だけ減らされ得る。たとえば、インデックスをコーディングするために可変長符号（たとえば、トランケーテッド・バイナリ符号（truncated binary code）など）を使用するとき、パレットエントリーの数は１だけ減らされ得る。
【００９０】
[0100]本開示の態様によれば、上で説明されたプロセスの代わりに、またはそれに加えて、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードを使用するとき、Ｖａｌｕｅモードにおけるインデックス調整プロセスがさらに修正され得る。たとえば、本開示の態様によれば、サンプルがブロック中の最初のサンプルではなく、以前のサンプルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、以下で説明されるインデックス調整プロセスを実行することができる。
【００９１】
[0101]本開示の態様によれば、以前のサンプルがＶａｌｕｅモードまたはＴｒａｎｓｉｔｉｏｎ  Ｒｕｎモードでコーディングされる場合、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットエントリーの数を１だけ減らすように構成され得る。加えて、インデックス値が以前のサンプルのインデックス値（インデックスまたは遷移インデックス）以上である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のインデックス値を１だけ減らすように構成され得る。本開示は、このデクリメントされた値を調整されたインデックス値と呼び得る。次いで、以前のサンプルのインデックス値が遷移インデックスに等しくなく、パレットエントリーの数が１より大きい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、変数「ｕｐｄａｔｅ」を１に設定し、それ以外の場合は「ｕｐｄａｔｅ」を０に設定するように構成され得る。ｕｐｄａｔｅが１に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０はさらに、パレットエントリーの数を１だけ減らすことができる。本開示は、パレットエントリーのデクリメントされた数を、調整されたパレットサイズと呼び得る。
【００９２】
[0102]加えて、遷移インデックスが以前のサンプルのインデックス値以上である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、遷移インデックスを１だけ減らすように構成され得る。本開示は、デクリメントされた遷移インデックスを調整された遷移インデックス値と呼び得る。ｕｐｄａｔｅが１に等しく、調整されたインデックス値が調整された遷移インデックス値より大きい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、調整されたインデックス値を１だけさらに減らすように構成され得る。加えて、ビデオエンコーダ２０およびビデオデコーダ３０は、調整されたパレットサイズが１より大きい場合にだけ、最後のインデックス調整を実行するように構成され得る。これは、調整されたパレットサイズが１より大きい場合、調整されたインデックス値がシグナリングされるだけであり得るからである。
【００９３】
[0103]調整されたパレットサイズが１より大きい場合、ビデオエンコーダ２０は、調整されたインデックス値のインジケーションを符号化し、パレットインデックスの最大の可能な数が調整されたパレットサイズに等しい可能性があることを考慮し得る。この場合、ビデオエンコーダ２０およびビデオデコーダ３０は、本明細書で説明されるトランケーテッド・バイナリ・コーディング（truncated binary coding）などの、トランケーテッド・バイナライゼーション（truncated binarization）をコーディングのために使用するように構成され得る。
【００９４】
[0104]いくつかの例では、本開示の態様によれば、上で説明されたプロセスと同様のプロセスが、現在のサンプルのすぐ上のピクセルのために使用されるピクセル値とモードとを確認することによって、実行され得る。すなわち、現在のピクセルの左に位置するピクセルに関して上で説明されたプロセスが代わりに、上側の隣接ピクセルのために実行されてよく、ここで、上で説明された左のサンプル値およびモードは上のピクセル値およびモードと置き換えられる。
【００９５】
[0105]たとえば、サンプルが最初の行になく、以前のサンプルがＣｏｐｙＦｒｏｍＴｏｐモードでコーディングされ、上のサンプルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットエントリーの数を１だけ減らすように構成され得る。加えて、現在のインデックス値がすぐ上のサンプルのインデックス値以上である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のインデックス値を１だけ減らすように構成され得る。やはり、このデクリメントされたインデックス値は調整されたインデックス値と呼ばれ得る。次いで、すぐ上のサンプルのインデックス値が遷移インデックスに等しくなく、パレットエントリーの数が１より大きい場合、ビデオエンコーダ２０は、変数ｕｐｄａｔｅを１に設定し、それ以外の場合はｕｐｄａｔｅを０に設定することができる。
【００９６】
[0106]ｕｐｄａｔｅが１に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットエントリーの数を１だけさらに減らすように構成されてよく、これは、調整されたパレットサイズと呼ばれ得る。加えて、遷移インデックスが上のサンプルのインデックス値以上である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、遷移インデックスを１だけ減らすように構成されてよく、これは、調整された遷移インデックス値と呼ばれ得る。ｕｐｄａｔｅが０に等しく、調整されたインデックス値が調整された遷移インデックス値より大きい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、調整されたインデックス値を１だけ減らすように構成され得る。加えて、調整されたパレットサイズが１より大きい場合にだけ、最後のインデックス調整が実行されてよく、それは、調整されたパレットサイズが１より大きい場合、調整されたインデックス値だけが通常はシグナリングされるからである。
【００９７】
[0107]調整されたパレットサイズが１より大きい場合、ビデオエンコーダ２０は、調整されたインデックス値のインジケーションを符号化するように構成されてよく、いくつかの例では、調整されたパレットサイズに等しいパレットインデックスの最大の可能な数を考慮することができる。この場合、ビデオエンコーダ２０およびビデオデコーダ３０は、本明細書で説明されるトランケーテッド・バイナリ・コーディング（truncated binary coding）などの、トランケーテッド・バイナライゼーション（truncated binarization）を使用するように構成され得る。
【００９８】
[0108]Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードに関連するパレットインデックスのシグナリングにおける冗長性の除去が、上で説明された。しかしながら、これらの技法は、以下で、ならびに、２０１４年５月２３日に出願された米国仮出願第６２／００２，７１７号および２０１４年６月９日に出願された米国仮出願第６２／００９，７７２号において説明されるような、Ｌｉｍｉｔｅｄ  Ｒｕｎ方法と組み合わされ得る。この場合、あるパレットインデックス値を超えると、ランは常に０に等しいので、そうしたパレットインデックスに対しては、ビデオエンコーダ２０は、ラン値のインジケーションを符号化しないように構成され得る。むしろ、ビデオエンコーダ２０およびビデオデコーダ３０は、ラン値を０に等しいものとして導出するように構成され得る。この組合せでは、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードに関して上で説明された技法は変更されないままである。すなわち、たとえば、上で説明された冗長性除去技法は、Ｌｉｍｉｔｅｄ  Ｒｕｎモードでも使用され得る。
【００９９】
[0109]加えて、または代わりに、本開示の技法は、規格提案文書、Ｇｕｉｌｌａｕｍｅ  Ｌａｒｏｃｈｅ他、「ＡＨＧ１０：  Ｒｕｎ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｍｏｄｅ」、ＪＣＴＶＣ−Ｑ００６６、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後ＪＣＴＶＣ−Ｑ００６６）において提案されるような、Ｌｉｍｉｔｅｄ  Ｒｕｎ技法とも組み合わされ得る。この例では、制限インデックスも指定される。しかしながら、上で説明されたｌｉｍｉｔｅｄ  ｒｕｎ技法との１つの違いは、制限インデックスよりも大きいパレットインデックスも１以上のランを有し得るということである。しかしながら、ビデオエンコーダ２０はランをシグナリングしなくてよい。この第２のＬｉｍｉｔｅｄ  Ｒｕｎ技法を実施するとき、本開示の冗長性除去技法は、以前のピクセルのインデックス値が制限インデックス値以下である場合、または、上のピクセルのインデックス値が制限インデックス値以下である場合にのみ適用され得る。
【０１００】
[0110]上で説明された技法は全般に、ビデオエンコーダ（ビデオエンコーダ２０など）に関して説明される。（たとえば、ビデオデコーダ３０によって実装されるような）デコーダ側では、エンコーダ側と同じ条件を使用して、ビデオデコーダ３０も、パレットエントリーの数と遷移インデックスとを調整することができる。ビデオデコーダ３０は次いで、調整された数のパレットエントリーを使用してインデックスを復号することができる。復号されたインデックスは、エンコーダ側と同じ条件を使用して、（デクリメントされる代わりに）インクリメントされ得る。
【０１０１】
[0111]説明されるいくつかの技法は、ＣｏｐｙＦｒｏｍＴｏｐモードが可能ではない事例において冗長性を減らすので、ＳＰｏｉｎｔフラグのシグナリングは、ビデオエンコーダ２０およびビデオデコーダ３０がＶａｌｕｅモードを推測し得るように修正され得る。本開示の態様によれば、冗長性低減技法は、Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎモードも使用されている場合に拡張され得る。この場合、ＣｏｐｙＦｒｏｍＴｏｐモードは、以下の条件のいずれかが真であれば可能ではない。
１．サンプルが最初の行にある。
２．以前のサンプルのモードがＣｏｐｙＦｒｏｍＴｏｐである。
３．上のピクセルがＥｓｃａｐｅモードでコーディングされ、サンプルが最初の行になく、以前のサンプルがＣｏｐｙＦｒｏｍＴｏｐモードでコーディングされない。
４．上のサンプルおよび以前のサンプルが同じインデックスを有し、以前のサンプルがＥｓｃａｐｅモードでコーディングされない。
【０１０２】
[0112]本開示の技法はまた、Ｅｓｃａｐｅパレットモードのためのエスケープフラグを明示的にシグナリングするための代替形態を提供する。たとえば、明示的エスケープシグナリングを用いてＳＰｏｉｎｔフラグの前にエスケープフラグをシグナリングする代わりに、本開示の態様によれば、フラグのセマンティクスを変更しながら、フラグの順序も交換され得る。この場合、ビデオエンコーダ２０は、ビットストリームにおいてＳＰｏｉｎｔフラグを最初にシグナリングし得る。この例では、１に等しいＳＰｏｉｎｔフラグはＶａｌｕｅモードを示し得るが、０に等しいＳＰｏｉｎｔフラグは、現在のサンプルのためのパレットモードがＣｏｐｙＦｒｏｍＴｏｐまたはＥｓｃａｐｅのいずれかであることを示し得る。加えて、ＳＰｏｉｎｔフラグが１に等しいとき、ビデオエンコーダ２０は、ＣｏｐｙＦｒｏｍＴｏｐモードとＥｓｃａｐｅモードを区別するためにエスケープフラグをシグナリングし得る。
【０１０３】
[0113]上の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で説明されたフラグの少なくとも１つまたは上で説明されたフラグ（たとえば、ＳＰｏｉｎｔフラグまたはエスケープフラグ）の両方をコーディングするために、ＣＡＢＡＣを使用するように構成され得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、コンテキストコーディングされるビンの数を減らすために、ＣＡＢＡＣバイパスモードを使用してそのようなフラグをコーディングするように構成され得る。
【０１０４】
[0114]上で説明されたように、ＣｏｐｙＦｒｏｍＴｏｐモードは、ある条件のもとでは可能ではないことがある。そのような場合、代替的なシグナリング方法（たとえば、フラグを交換することなど）を使用するとき、ビデオエンコーダ２０は、エスケープフラグをシグナリングすることなくＳＰｏｉｎｔフラグだけをシグナリングするように構成され得る。この場合、ＳＰｏｉｎｔフラグは異なるセマンティクスを有し得る。たとえば、１に等しいＳＰｏｉｎｔフラグはまだ、モードがＶａｌｕｅモードであることを示し得るが、０に等しいＳＰｏｉｎｔフラグは、Ｅｓｃａｐｅモードを示し得る。ＳＰｏｉｎｔフラグがＣＡＢＡＣを使用してコンテキストコーディングされる場合、ＣｏｐｙＦｒｏｍＴｏｐモードが不可能であるときにＳＰｏｉｎｔフラグの値をコーディングするために、追加の別のコンテキストが使用され得る。パレットサイズが１でありｅｓｃａｐｅモードが使用される場合、上で説明されたように、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的なシグナリング方法を使用するとき、ＳＰｏｉｎｔフラグのコーディングをスキップするように構成され得る。
【０１０５】
[0115]本開示の技法はまた、Ｅｓｃａｐｅパレットモードのためのエスケープフラグをシグナリングするための、（たとえば、ＪＣＴＶＣ−Ｑ００９４に代わる）別の代替的なシグナリング技法を提供する。たとえば、ＪＣＴＶＣ−Ｑ００９４では、参照ソフトウェアにおいてある程度のシグナリングの冗長性が考慮され、なくされている。一例として、現在のサンプルをコーディングするとき、以前のサンプルのパレットモードがＣｏｐｙＦｒｏｍＴｏｐである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードを使用して現在のピクセルをコーディングできない。同様に、以前のサンプルのモードがパレットインデックス「Ｘ」を伴うＶａｌｕｅモードである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、同じパレットインデックス「Ｘ」を伴うＶａｌｕｅモードを使用して現在のピクセルをコーディングできない。構文解析の段階において（たとえば、ビデオデコーダ３０において符号化されたビットストリームからのシンタックス要素を構文解析するとき）、ビデオデコーダ３０は、ビットストリームを適切に読み取るためにどのシンタックス要素が許可されているかを決定するために、上で述べられた条件を確認する。多数のそのような条件が確認されるべきである場合、この確認プロセスは負担になり得る。
【０１０６】
[0116]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、Ｅｓｃａｐｅモードを暗黙的にシグナリングするための上で述べられた冗長性を「再使用」するように構成され得る。たとえば、ブロックの現在のサンプルをコーディングするとき、以前のサンプルがＣｏｐｙＦｒｏｍＴｏｐモードを使用してコーディングされ、現在のピクセルのモードもＣｏｐｙＦｒｏｍＴｏｐとしてシグナリングされる場合、ビデオデコーダ３０は、現在のブロックのモードがＥｓｃａｐｅモードであると推測し得る。すなわち、ビデオエンコーダ２０は、Ｅｓｃａｐｅモードをシグナリングするために、行の中の２つのサンプルがＣｏｐｙＦｒｏｍＴｏｐモードを用いてコーディングされているという冗長性を使用し得る。同様に、以前のサンプルから現在コーディングされているサンプルまでのモードがパレットインデックス「Ｘ」を伴うＶａｌｕｅモードであり、シグナリングされるモードが同じパレットインデックス「Ｘ」を伴うＶａｌｕｅモードである場合、ビデオデコーダ３０は、現在のブロックのモードをＥｓｃａｐｅモードとして推測し得る。同様に、上で説明された他の冗長性もこの方法で利用され得る。
【０１０７】
[0117]上で説明された例では、冗長性に基づいてＥｓｃａｐｅモードをシグナリングすることは、ビデオエンコーダ２０がＥｓｃａｐｅモードをシグナリングし得る可能な状況のすべてを含むとは限らない。したがって、これらの技法は、Ｅｓｃａｐｅモードをシグナリングするための補助的な方法として使用され得る。他の例では、本技法はビットストリームに対して課され得るので、Ｅｓｃａｐｅモードはこれらの制約された状況だけにおいてシグナリングされ得る。
【０１０８】
[0118]本開示の技法はまた、０に等しいパレットサイズに対してサンプルがエスケープサンプルであることをシグナリングすることに関する。たとえば、本開示の態様によれば、現在コーディングされているブロックと関連付けられるパレットのパレットサイズが、明示的エスケープシグナリングを使用するとき０に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロック中のサンプルのすべてがエスケープサンプルとしてコーディングされると推測するように構成され得る。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、ビットストリームにおいてＥｓｃａｐｅモードを表す専用のシンタックスを符号化または復号することなく、ブロック中のすべてのサンプルがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされると決定するように構成され得る。同様に、現在コーディングされているブロックと関連付けられるパレットのパレットサイズが、暗黙的エスケープシグナリングを使用するときに１に等しい（たとえば、上で説明されたように、パレットの唯一のインデックスが、Ｅｓｃａｐｅモードをシグナリングするために使用される追加のインデックスである）場合、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロック中のサンプルのすべてがエスケープサンプルとしてコーディングされると推測するように構成され得る。
【０１０９】
[0119]上で説明された例の両方において（たとえば、明示的エスケープシグナリングと暗黙的エスケープシグナリングの両方に対して）、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックの残りのためのいくつかのパレットベースのシンタックスのコーディングをスキップすることができる。たとえば、明示的エスケープシグナリングでは、ビデオエンコーダ２０は、ブロックのサンプルのためのエスケープフラグをシグナリングしなくてよい。加えて、明示的エスケープシグナリングと暗黙的エスケープシグナリングの両方に対して、ビデオエンコーダ２０は、（暗黙的エスケープシグナリングと明示的エスケープシグナリングの両方に対する）ＳＰｏｉｎｔフラグをシグナリングしなくてよい。すなわち、ブロックのためのすべてのサンプルがエスケープサンプルであると推測され得るので、ビデオエンコーダ２０は、ＣｏｐｙＦｒｏｍＴｏｐモードとＶａｌｕｅモードを区別するためにＳＰｏｉｎｔフラグをシグナリングする必要がない。ビデオデコーダ３０は同様に、そのようなシンタックスの復号をスキップすることができ、これは、ビットレートとコーディングの効率を向上させ得る。
【０１１０】
[0120]代替的な例では、ビデオエンコーダ２０およびビデオデコーダ３０は、規範的な方式でパレットサイズを少なくとも１となるように制約し得る。この例では、ビデオエンコーダ２０は、（パレットサイズ−１）がシグナリングされるように、パレットサイズのシグナリングを修正するように構成され得る。たとえば、（たとえば、図４の例に関してより詳細に説明されるように）パレット予測子が使用されるとき、パレット予測子の各エントリーに対して、ビデオエンコーダ２０は、それぞれのパレット予測子エントリーが現在のブロックのパレットに含まれるかどうかを示すために、１ビットのフラグを符号化することができる。これらのエントリーは、予測されるパレットエントリーと呼ばれ、パレット予測バイナリベクトル（たとえば、１ビットのフラグの列）によって示される。ビデオエンコーダ２０はまた、予測されるエントリーに後続する新たなパレットエントリーの数をシグナリングすることができる。他の例では、ビデオエンコーダ２０は、予測されるエントリーの前の新たなパレットエントリーの数をシグナリングすることができる。いずれの場合も、予測されるパレットエントリーの数が０である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなパレットエントリーの数をコーディングする代わりに、（新たなパレットエントリーの数−１）を示すデータをコーディングするように構成され得る。
【０１１１】
[0121]別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズが０に等しくならないように、パレットモードを制約するように構成され得る。たとえば、この制約は、ビットストリーム制約として実現されてよく、すなわち、ビットストリームは、パレットサイズが０に等しいパレットコーディングされたブロックを含んではならない。
【０１１２】
[0122]本開示の技法はまた、パレットサイズをシグナリングすることに関する。たとえば、現在のブロック（たとえば、ビデオエンコーダ２０またはビデオデコーダ３０によって現在コーディングされているＣＵ）のパレットサイズは、（たとえば、２０１４年４月３日に出願された米国出願第１４／２４４，６８８号および２０１４年４月３日に出願された米国出願第１４／２４４，７１１号において開示されるように）明示的にシグナリングされ得る。そのような例では、パレットサイズは、予測されたパレットエントリー（たとえば、パレット予測子を使用して決定される）と新たなパレットエントリー（たとえば、ビットストリームにおいて明示的にシグナリングされるような）の両方を含む。
【０１１３】
[0123]本開示の態様によれば、パレットサイズがシグナリングされる場合、新たなエントリーの数をシグナリングする必要はないことがあり、それは、ビデオエンコーダ２０およびビデオデコーダ３０が、予測されるエントリーの数およびパレットサイズから１つのブロックのための新たなパレットエントリーの数を導出するように構成され得るからである（たとえば、パレットサイズ−予測されたエントリーの数＝新たなエントリーの数）。加えて、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズがシグナリングされ、現在のブロックのためのパレットを構築するときにそのシグナリングされた数に達したとき、以前のパレットのエントリーの予測を終了するように構成され得る。
【０１１４】
[0124]いくつかの例では、パレットサイズは以前のパレットから予測されてよく、ビデオエンコーダ２０は差分のみをシグナリングするように構成されてよい。ビデオエンコーダ２０およびビデオデコーダ３０は、指数ゴロム符号、トランケーテッド・ユーナリー（truncated unary）符号または固定長符号を使用して、あるブロックのパレットサイズと予測されるパレットサイズとの差をコーディングするように構成され得る。いくつかの事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、コーディングされているブロックサイズに予測が依存するようにする（たとえば、それに基づくようにする）ように構成され得る。たとえば、８×８のブロックでは、パレットサイズは、パレットモードを使用してコーディングされた最新の８×８のブロック（たとえば、走査順序において現在のブロックよりも前にある直近にコーディングされた８×８）と関連付けられるパレットから予測され得る。同様に、ビデオエンコーダ２０およびビデオデコーダ３０は、以前にコーディングされた１６×１６のブロックからのパレットに基づいて、１６×１６のブロックのパレットサイズを予測するように構成されてよく、同様の関係は他のサイズのブロックに拡張されてよい。代替的に、別の例では、パレットサイズは、現在のブロックのサイズ以下のサイズを用いてコーディングされた最新のブロックから予測され得る。
【０１１５】
[0125]本開示の技法はまた、最大パレットサイズおよび／または最大パレット予測子サイズをシグナリングすることに関する。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータをコーディングするように構成され得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＳＰＳからそのようなデータをコーディングするように構成され得る。最大パレットサイズおよび／または最大パレット予測子サイズを示すデータをコーディングすることで柔軟性をもたらすことができ、たとえば、ビデオエンコーダ２０およびビデオデコーダ３０が、異なるプロファイル、レベル、ビット深度、ブロックサイズなどに対して異なるサイズのパレットとパレット予測子とを使用することが可能になる。ビデオコーディング規格の文脈では、プロファイルは、アルゴリズム、機能、またはツール、およびそれらに適用される制約のサブセットに対応し得る。たとえば、プロファイルは、ある項目によって指定されたビットストリームシンタックス全体のサブセットであり得る。レベルは、たとえば、ピクチャの解像度、ビットレート、およびブロック処理レートに関連し得る、デコーダメモリおよび計算などの、デコーダのリソース消費の制限に対応し得る。プロファイルはｐｒｏｆｉｌｅ＿ｉｄｃ（プロファイルインジケータ）値でシグナリングされ得るが、レベルはｌｅｖｅｌ＿ｉｄｃ（レベルインジケータ）値でシグナリングされ得る。
【０１１６】
[0126]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、たとえば新たなパレットエントリーの数をシグナリングする際に、パレットモードと関連付けられる要素とフラグとを決定するために、最大パレットサイズに関する情報を使用するように構成され得る。ある例として、最大の可能なパレットサイズはＭＡＸ＿ＰＬＴ＿ＳＩＺＥによって示されてよく、これはビデオエンコーダ２０によって符号化され、ビデオデコーダ３０によって復号され得る。同様に、パレット予測子ベクトルの最大の可能なサイズはＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥによって示されてよく、これはビデオエンコーダ２０およびビデオデコーダ３０によるデコーダによって符号化され得る。
【０１１７】
[0127]別の例として、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測バイナリベクトル（たとえば、これは、現在のブロックをコーディングするためのパレットに複製されるパレット予測子からのエントリーの数を表し得る）において「１（ones）」の数を示すデータをコーディングし得る。いくつかの事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、予測されたパレットエントリーの数を示すためにシンタックス要素ｎｕｍＰｒｅｄＰａｌｅｔｔｅをコーディングするように構成され得る。ｎｕｍＰｒｅｄＰａｌｅｔｔｅの値がＭＡＸ＿ＰＬＴ＿ＳＩＺＥ（すなわち、最大パレットサイズ）の値に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなパレットエントリーの数のコーディング全体をスキップするように構成され得る。そうではなく、ｎｕｍＰｒｅｄＰａｌｅｔｔｅの値がＭＡＸ＿ＰＬＴ＿ＳＩＺＥの値未満である場合、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなエントリーの数を示すデータをコーディングするために、新たなパレットエントリーの数の最大の可能な値である（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−ｎｕｍＰｒｅｄＰａｌｅｔｔｅ）に基づくトランケーテッド・バイナライゼーション（truncated binarization）を使用することができる。
【０１１８】
[0128]一般に、トランケーテッド・バイナライゼーションは、一意な復号可能性を維持しながらパラメータの二進化方法において使用される一部のコードワードの長さを減らすことによって、シグナリングされる特定のパラメータ（新たなパレットエントリーの数など）の最大の可能な値についての情報を使用する任意の技法を含み得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、所与のパラメータ（たとえば、新たなパレットエントリーの数など）の最大値を使用して、トランケーテッド・バイナリ符号を構築するように構成され得る。トランケーテッド・バイナリ・コーディングのための例示的な技法は、ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｔｒｕｎｃａｔｅｄ＿ｂｉｎａｒｙ＿ｅｎｃｏｄｉｎｇにおいて記述されている。
【０１１９】
[0129]同様に、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなパレットエントリーの数の最大の可能な値に基づいて、新たなパレットエントリーの数をシグナリングして復号するために、トランケーテッド・ユーナリー符号または指数ゴロム符号またはゴロム−ライス符号を使用することができる。たとえば、（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−ｎｕｍＰｒｅｄＰａｌｅｔｔｅ）＝３である場合、ビデオエンコーダ２０は、トランケーテッド・ユーナリー符号を使用して、３を、（たとえば、通常のユーナリー符号を使用するときにシグナリングされるような）０００１ではなく、０００としてシグナリングすることができる。トランケーテッド指数ゴロム符号またはトランケーテッドゴロム−ライス符号の場合、ビデオエンコーダ２０およびビデオデコーダ３０は、最大値を含む間隔のためのプレフィックスの長さを１だけ減らすように構成され得る。したがって、ビデオエンコーダ２０およびビデオデコーダ３０は、０００．．．００１から０００．．．０００へとプレフィックスを変更するように構成され得る。同様に、ビデオエンコーダ２０およびビデオデコーダ３０は、最大値に応じて、その間隔のための二進化方法においてサフィックスビットの数を減らすように構成され得る。
【０１２０】
[0130]大きいブロック（および／または大きいＣＵ）では、パレットサイズは最大パレットサイズである傾向がある。したがって、いくつかの場合、ビデオエンコーダ２０およびビデオデコーダ３０は、通常の方法の逆で、すなわち、より短いコードワード長が（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−ｎｕｍＰｒｅｄＰａｌｅｔｔｅ）のより大きい値に割り当てられ、より長いコードワード長が（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−ｎｕｍＰｒｅｄＰａｌｅｔｔｅ）のより小さい値に割り当てられるようにして、（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−ｎｕｍＰｒｅｄＰａｌｅｔｔｅ）の二進化をマッピングするように構成され得る。いくつかの例では、ユーナリー／トランケーテッド・ユーナリ符号をシグナリングするために１の前に０を使用する代わりに、または、ゴロム−ライス符号もしくは指数ゴロム符号もしくは連結されたゴロム−ライス符号と指数ゴロム符号の符号のファミリのプレフィックスとして、ビデオエンコーダ２０およびビデオデコーダ３０は、０の前に１を使用するように構成され得る。
【０１２１】
[0131]さらに、他の変形が可能である。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなエントリーの数が０であるか０ではないかを示すためのフラグとして、そのような符号中の最初のビットを解釈するように構成され得る。ビデオエンコーダ２０およびビデオデコーダ３０は、新たなパレットエントリーの数から１を引いたものとして、残りのビットを解釈するように構成され得る。説明を目的とする例では、新たなパレットエントリーの最大値は８であり、新たなパレットエントリーの数は３である。トランケーテッド・ユーナリー符号を使用して、ビデオエンコーダ２０およびビデオデコーダ３０は、二進化を０００１であるものとして決定するように構成され得る。ビデオエンコーダ２０およびビデオデコーダ３０が最初のビットを１つのフラグ（たとえば、０：１つまたは複数の新たなパレットエントリー、１：０個の新たなパレットエントリー）として解釈するように構成される場合、ビットの残り（００１）は２つの新たなパレットエントリーがあることを示す。トランケーテッド符号を使用するとき、ビデオエンコーダ２０およびビデオデコーダ３０は、最大値を下方に１だけ調整するように構成され得る。
【０１２２】
[0132]他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で説明されたフラグを逆に解釈するように構成され得る。この場合、ビデオエンコーダ２０およびビデオデコーダ３０は、１というフラグ値を１つまたは複数の新たなパレットエントリーとして解釈し、０というフラグ値を０個の新たなパレットエントリーとして解釈するように構成され得る。そのような場合、最大値が８である３つの新たなパレットエントリーをシグナリングするためのビットは、１００１である。
【０１２３】
[0133]他の例では、上で説明されたフラグの概念は、指数ゴロム、ゴロム−ライスなどの他の符号に拡張され得る。たとえば、新たなパレットエントリーの最大値が０ではないとき、ビデオエンコーダ２０は、０ではない新たなエントリーがあるかどうかを示すフラグをシグナリングするように構成され得る。０ではない新たなエントリーがあることをフラグが示す場合、新たなエントリーの数から１メイビーを引いたものが、指数ゴロム符号、ゴロム−ライス符号、指数ゴロム符号とゴロム−ライス符号の連結、または同様の符号もしくはそれらのトランケーテッド（truncated）・バージョンを使用してシグナリングされる。トランケーテッド・バージョンが使用されるとき、最大値は１だけ下方に調整され得る。
【０１２４】
[0134]いくつかの例では、フラグはＣＡＢＡＣを使用してコンテキストコーディングされ得るが、（たとえば、新たなパレットエントリー−１に対する）ビンの残りはバイパスコーディングされ得る。代替的に、フラグ、ならびに（新たなパレットエントリー−１に対する）ビンの残りはすべて、バイパスコーディングされ得る。いくつかの事例では、新たなパレットエントリー−１のための符号からの固定された数のプレフィックスビンがＣＡＢＡＣを使用してコンテキストコーディングされてよく、ビンの残りがバイパスコーディングされてよい。
【０１２５】
[0135]本開示の態様によれば、上で述べられたように、シンタックス要素ＭＡＸ＿ＰＬＴ＿ＳＩＺＥは、ＳＰＳなどのパラメータセットにおいてシグナリングされ得る。他の例では、シンタックス要素ＭＡＸ＿ＰＬＴ＿ＳＩＺＥは、ＶＰＳにおいて、ピクチャパラメータセット（ＰＰＳ）において、スライスヘッダにおいて、ブロックレベル（たとえば、ＬＣＵまたはＣＵのためにシグナリングされるシンタックスを用いて）で、または他の箇所でシグナリングされ得る。いくつかの例では、本開示の態様によれば、異なる最大パレットサイズが異なるブロックサイズに対して指定され得る。他の例では、最大パレットサイズは、コーディングされているビデオデータのプロファイルまたはビット深度に依存し得る。たとえば、より大きい入力ビット深度（またはプロファイルビット深度）に対しては、シンタックス要素ＭＡＸ＿ＰＬＴ＿ＳＩＺＥが、比較的大きい最大パレットサイズを指定するために使用され得る。さらに他の例では、最大パレットサイズは、追加で、または代替的に、コーディングされているビデオデータのクロマフォーマットに依存し得る。たとえば、シンタックス要素ＭＡＸ＿ＰＬＴ＿ＳＩＺＥは、４：２：０のクロマサブサンプリングフォーマットよりもモノクロ入力に対して比較的小さい最大パレットサイズを指定するために使用されてよく、そして、４：２：０のクロマサブサンプリングフォーマットは、４：４：４のクロマサブサンプリングでフォーマットされた入力よりもサイズが小さいことがある。
【０１２６】
[0136]本開示の態様によれば、上で説明された方式でシンタックス要素ＭＡＸ＿ＰＬＴ＿ＳＩＺＥをシグナリングする代わりに、（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−１）を示すデータがシグナリングされてよく、それは、パレットを完全にディセーブルにすることが原因で、０に等しいＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素が無効であり得るからである。
【０１２７】
[0137]別の例では、パレットモードをイネーブル／ディセーブルにするために、ＶＰＳ、ＳＰＳ、ＰＰＳ、またはスライスヘッダレベルで別のフラグをシグナリングする代わりに、ビデオエンコーダ２０は、ＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素だけをシグナリングするように構成され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、０というＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素を、パレットモードをディセーブルにするものとして解釈するように構成され得る。すなわち、パレットサイズシンタックス要素（たとえば、ＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素）を受信すると、ビデオデコーダ３０は、パレットモードがディセーブルにされていることをそのシンタックス要素に基づいて決定することができる。ＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素または（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ−１）は、固定長符号（ＭＡＸ＿ＰＬＴ＿ＳＩＺＥに対する規範的な制限を仮定する）またはゴロム−ライス符号または指数ゴロム符号を使用してシグナリングされ得る。
【０１２８】
[0138]上で述べられたように、本開示の技法はまた、最大パレット予測子サイズを示すデータをコーディングすることを含む。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズを示すＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥシンタックス要素を、ＶＰＳ、ＳＰＳ、ＰＰＳ、スライスヘッダ、ブロックレベル、または他の箇所においてコーディングするように構成され得る。いくつかの例では、ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥシンタックス要素をシグナリングする代わりに、（ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥ−１）がシグナリングされ得る。さらに他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズを示す他のデータをコーディングするように構成され得る。
【０１２９】
[0139]本明細書で説明される特定の例では、ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥシンタックス要素または（ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥ−１）は、固定長符号（ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥに対する規範的な制限を仮定する）またはゴロム−ライス符号または指数ゴロム符号を使用してシグナリングされ得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥシンタックス要素によって示されるサイズが（たとえば、ＭＡＸ＿ＰＬＴ＿ＳＩＺＥシンタックス要素によって示されるような）最大パレットサイズ以上であると仮定する（たとえば、自動的に決定する）ように構成され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、固定長符号またはゴロム−ライス符号または指数ゴロム符号を使用して（ＭＡＸ＿ＰＬＴ＿ＰＲＥＤＩＣＴＯＲ＿ＳＩＺＥ−ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ）をコーディングするように構成され得る。したがって、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズと最大パレットサイズとのデルタ（たとえば、差分）を示すデータをコーディングするように構成され得る。
【０１３０】
[0140]最大パレットサイズおよび最大パレット予測子サイズがＳＰＳレベルにおいてシグナリングされる例では、ビデオエンコーダ２０およびビデオデコーダ３０は、トランケーテッド・ユーナリー符号を使用して新たなエントリーの数を示すデータをコーディングするように構成され得る。新たなエントリーの数と、パレット予測子から予測されるエントリーの数はともに、ＳＰＳにおいてシグナリングされる最大パレットサイズを超えてはならない。しかしながら、ＳＰＳにおいてシグナリングされる最大パレットサイズが比較的大きい場合、新たなエントリーの数が３１を超えることがある。この事例では、トランケーテッド・ユーナリー符号が３２ビットの長さを超え、これはソフトウェアおよびハードウェアの実装に望ましくないことがある。
【０１３１】
[0141]これに対処するために、本開示の態様によれば、一例では、ビデオエンコーダ２０およびビデオデコーダ３０は、新たなエントリーの数をシグナリングするための符号の長さが３２を超えないように新たなエントリーの数を制約するように構成され得る。たとえば、ユーナリ符号またはトランケーテッド・ユーナリー符号が新たなエントリーの数をシグナリングするために使用される場合、新たなエントリーの数は３１に制約され得る。３２という長さの制約は一例にすぎないことを理解されたい（たとえば、他の長さの制約が代わりに使用されてよい）。
【０１３２】
[0142]ＨＥＶＣスクリーンコンテンツコーディング拡張テキスト仕様ドラフト２、Ｒａｊａｎ  Ｊｏｓｈｉ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｓｃｒｅｅｎ  Ｃｏｎｔｅｎｔ  Ｃｏｄｉｎｇ：  Ｄｒａｆｔ  ２」、ＪＣＴＶＣ−Ｓ１００５、札幌、日本、２０１４年６月３０日〜７月９日（以後ＪＣＴＶＣ−Ｓ１００５）では、トランケーテッド・ユーナリー符号が、ＳＰＳにおいてシグナリングされる最大パレットサイズ（ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅ）に最大値が等しい新たなパレットエントリーの数から、パレット予測子から予測されるパレットエントリーの数を引いたものをシグナリングするために使用される。提案される制約を使用すると、最大値は、ＳＰＳにおいてシグナリングされる最大パレットサイズ（ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅ）とパレット予測子から予測されるパレットエントリーの数との差分と、３２のうちの小さい方となるように修正され得る。最大値に対するそのような修正が実行され、ＪＣＴＶＣ−Ｓ１００５のトランケーテッド・ユーナリ・コーディングが使用される場合、新たなパレットエントリーの最大の数は、３２ビットを超える符号の長さを伴うことなく（３１ではなく）３２になり得る。
【０１３３】
[0143]いくつかの例では、トランケーテッド・ユーナリー符号の代わりに、ビデオエンコーダ２０およびビデオデコーダ３０が指数ゴロムまたはそのトランケーテッド・バージョンなどの構成された使用別の符号である場合、最大の許容可能な新たなパレットエントリーは、長さが３２を超えないように適切に修正され得る。３２というコードワード長を有するいくつかの値がある場合、ビデオエンコーダ２０およびビデオデコーダ３０は、そのような値の最高値を、新たなパレットエントリーの数に対する最大の許容可能な値となるように選ぶように構成され得る。
【０１３４】
[0144]最大の数の新たなパレットエントリーに対する本明細書で説明される制約は、規範的な制約にされ得る。たとえば、ビデオエンコーダ２０はその制約とともにビットストリームを生成するように構成されてよく、ビデオデコーダ３０は適合するビットストリームにおいてその制約を利用するように構成されてよい。
【０１３５】
[0145]本開示の態様によれば、一例では、ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｅｄ＿ｅｎｔｒｉｅｓシンタックス要素のセマンティクスは、ＪＣＴＶＣ−Ｓ１００５から次のように変更され得る。すなわち、シンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｅｄ＿ｅｎｔｒｉｅｓは、明示的にシグナリングされる現在のパレット中のエントリーの数を指定する。シンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｅｄ＿ｅｎｔｒｉｅｓの値は、両端を含めて０から３１の範囲にあるものとする。シンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｅｄ＿ｅｎｔｒｉｅｓが存在しないとき、それは０に等しいと推測される。
【０１３６】
[0146]加えて、変数ＣｕｒｒｅｎｔＰａｌｅｔｔｅＳｉｚｅの値は、現在のパレットのサイズを指定し、次のように導出される。
ｐａｌｅｔｔｅ＿ｓｈａｒｅ＿ｆｌａｇ［ｘ０］［ｙ０］が１に等しい場合、
CurrentPaletteSize=PreviousPalettesize （７−７１）
そうではない場合（ｐａｌｅｔｔｅ＿ｓｈａｒｅ＿ｆｌａｇ［ｘ０］［ｙ０］が０に等しい場合）、
CurrentPaletteSize=paletteNumPredictedEntries+
palette_num_signaled_entries  （７−７２）
[0147]上の例では、ＣｕｒｒｅｎｔＰａｌｅｔｔｅＳｉｚｅの値は、両端を含めて０からｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅの範囲にあるものとする。
【０１３７】
[0148]本開示の態様によれば、最大値が上で説明された方式で修正される場合、シンタックス要素ｐａｌｅｔｔｅ＿ｎｕｍ＿ｓｉｇｎａｌｅｄ＿ｅｎｔｒｉｅｓの値は、値が両端を含めて０から３２の範囲にあるように修正され得る。
【０１３８】
[0149]別の例では、最大パレットサイズは、ＳＰＳにおいてシグナリングされてよく、３１に制限されてよい。サイズを制限することは、ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素のセマンティクスにおいてｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素に対する上限を課すことによって実現され得るので、ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素は最大の許容されるパレットサイズを指定する。ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素の値は、両端を含めて０から３１の範囲にあるものとする。存在しないとき、ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素の値は０であるものと推測される。いくつかの例では、値は３１ではなく３２に制約され得る。
【０１３９】
[0150]いくつかの例では、ｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅシンタックス要素の最大値は、新たなパレットエントリーの数がｐａｌｅｔｔｅ＿ｍａｘ＿ｓｉｚｅに等しくなるように制約されてよく、ビデオエンコーダ２０およびビデオデコーダ３０は、３２ビットを超えない符号を使用して新たなパレットエントリーの数をコーディングするように構成され得る。さらに別の例では、新たなパレットエントリーの数の最大値は、最大値をコーディングするために使用される符号とは無関係に、常に３１に制限され得る。さらに別の例では、最大値は３２に制限され得る。
【０１４０】
[0151]本開示の技法はまた、（たとえば、ＣＵまたはＬＣＵのための）ブロックレベルエスケープシグナリングを関連付ける。たとえば、本開示の態様によれば、１つまたは複数のシンタックス要素は、ブロックレベル（たとえば、ＣＵレベル）において、ブロックのサンプルのいずれかがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされるかどうかを示し得る。上で述べられたように、１つまたは複数のシンタックス要素は、ブロックレベルエスケープシンタックスと呼ばれ得る。やはり、ブロックレベルのシンタックスは、スライスヘッダに、またはビデオデータの個々のピクセルとともに含まれ得るシンタックスではなく、ＣＵまたはＬＣＵなどの、ビデオデータのブロックを用いてコーディングまたは決定されるシンタックスを指し得る。
【０１４１】
[0152]パレットコーディングを使用してコーディングされるサンプルのブロック中の少なくとも１つのサンプルがエスケープサンプルとしてコーディングされる事例では、本開示の技法は、そのようなモードの存在をシグナリングするために使用され得る。説明を目的とする例では、ビデオエンコーダ２０およびビデオデコーダ３０は、コーディングされているブロックのサンプルのいずれかがエスケープサンプルとしてコーディングされるかどうかを示すフラグ（ブロックレベルのエスケープフラグと呼ばれ得る）をコーディングするように構成され得る。いくつかの事例では、０というフラグ値は、ブロックのサンプルまたはピクセルのいずれもがエスケープサンプルとしてコーディングされないことを示し得る。１というフラグ値は、ブロックの少なくとも１つのサンプルまたはピクセルがエスケープサンプルとしてコーディングされることを示し得る。したがって、ブロックレベルエスケープシンタックスは、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのサンプルがブロックのための色値のパレットに対するインデックスをウィズウィズアウト使用してコーディングされるかどうか、たとえばＥｓｃａｐｅモードを使用してコーディングされるかどうかを示し得る。
【０１４２】
[0153]本開示の態様によれば、上で説明されたシンタックスは、ブロックレベルの指示を伴わずにエスケープサンプルをシグナリングする技法よりも、ビットの節約を実現し得る。たとえば、ブロックのどのサンプルもエスケープサンプルとしてコーディングされないことをシンタックスが示す（たとえば、上で説明されたフラグが０である）事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのためのエスケープサンプルと関連付けられるいずれの他のシンタックスもコーディングしなくてよい。たとえば、本明細書で説明される明示的エスケープシグナリングに関して、ビデオエンコーダ２０およびビデオデコーダ３０は、サンプルレベルのエスケープモードフラグのコーディングをスキップすることができる。暗黙的エスケープシグナリングに関して、ビデオエンコーダ２０およびビデオデコーダ３０は、エスケープサンプルを示すパレットのための追加のインデックスのコーディングをスキップすることができる。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードとＶａｌｕｅモードを区別するために、ＳＰｏｉｎｔフラグをコーディングするだけであり得る。
【０１４３】
[0154]いくつかの例では、上で説明されたフラグは、現在コーディングされているブロックまたはＣＵのためのパレットエントリーの前にシグナリングされ得る。他の例では、上で説明されたフラグは、現在コーディングされているブロックまたはＣＵのためのパレットエントリーの後にシグナリングされ得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で説明されたフラグをコンテキストコーディングするように構成され得る。そのような例では、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のブロックまたはＣＵのための、ブロックまたはＣＵのサイズおよび／またはパレットサイズに基づいて、コンテキストを決定することができる。
【０１４４】
[0155]いくつかの事例では、エスケープサンプルの使用量はブロックサイズごとに変動し得る。たとえば、エスケープサンプルの使用は、比較的小さいブロックではあまり行われないことがある。そのような事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックがエスケープサンプルを含まず上で説明されたフラグのコーディングをスキップすると決定するように構成されてよく、それによりビットの節約を実現する。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、８×８のブロックのためのブロックレベルフラグをコーディングしなくてよく、ここでエスケープサンプルは、より大きいブロックサイズの場合よりも使用される確率がはるかに低い。同様に、大きいブロックサイズ（たとえば、６４×６４以上のピクセルのブロック）では、ビデオエンコーダ２０およびビデオデコーダ３０は、エスケープサンプルとしてコーディングされるサンプルが常にあると決定するように構成され得る。そのような事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのためのブロックレベルエスケープフラグが１に等しい（たとえば、少なくとも１つのサンプルがエスケープサンプルである）と推測し、ブロックレベルエスケープフラグのコーディングをスキップすることができる（たとえば、ブロックレベルエスケープフラグの指示がビットストリームに含まれない）。
【０１４５】
[0156]本開示の技法はまた、ブロックのいずれかのサンプルがエスケープサンプルとしてコーディングされるかどうかに基づいて、サンプルのブロックをコーディングすることに関する。たとえば、上で述べられたように、本開示の技法は、パレットコーディングされたブロックのエスケープサンプルとしていずれかのサンプルがコーディングされるかどうかを示すために使用され得る。ブロックがエスケープサンプルを含まない事例では、およびパレットのサイズが１であるとき、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのすべてのサンプルが同じインデックス値（たとえば、パレットの唯一のエントリー）を有すると自動的に決定するように構成され得る。したがって、ビデオエンコーダ２０およびビデオデコーダ３０はまた、ブロックのパレットインデックスを決定するために使用される他のすべての他のデータのコーディングをスキップすることができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ＳＰｏｉｎｔフラグ、インデックスシグナリング、およびパレットインデックスのランと関連付けられるデータのコーディングをスキップすることができる。
【０１４６】
[0157]説明を目的とする例では、ビデオデコーダ３０は、エスケープサンプルとしてコーディングされるサンプルが現在のブロック中にないことを示すブロックレベルエスケープフラグを復号することができる（たとえば、フラグは０に等しい）。ビデオデコーダ３０はまた、ブロックのためのパレットが単一のエントリーを有することを示すデータ（たとえば、パレットサイズが１であることを示すデータ）を復号し、または、単一のエントリーを有するパレットを復号することができる。この例では、両方の条件が真であると評価された（たとえば、サンプルがエスケープサンプルではなく、パレットサイズが１である）ことに基づいて、ビデオデコーダ３０は、ブロックのパレットインデックスのすべてがパレットに含まれる単一のエントリーに等しいと自動的に決定することができる。ビデオデコーダ３０はまた、ブロックのパレットインデックスを決定するために使用される他のデータ（たとえば、ＳＰｏｉｎｔフラグ、パレットインデックス、およびラン情報など）の復号をスキップすることができる。
【０１４７】
[0158]別の例では、本開示の態様によれば、パレットサイズが１であるとき、パレットインデックス０を用いてコーディングされるサンプルのランは、エスケープサンプルによって終了され得る。すなわち、パレットインデックスのランは、エスケープサンプルとしてコーディングされる位置によって中断され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＳＰｏｉｎｔフラグのコーディングをスキップするように構成され得る。加えて、この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットインデックスのためのモードがＶａｌｕｅモードであることと、Ｖａｌｕｅモードのインデックスとを推測するように構成され得る（たとえば、パレット中に１つのエントリーしかなければ、Ｖａｌｕｅモードのインデックスをシグナリングする必要はないことがある）。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ランの直後のサンプルがエスケープサンプルとしてコーディングされると推測し、エスケープ関連のシンタックスのコーディングをスキップすることができる。
【０１４８】
[0159]本開示の技法はまた、パレットコーディングにおけるパレットインデックスのランのラン値を示すデータをコーディングすることに関する。たとえば、上で述べられたように、ラン値は、一緒にコーディングされるパレットコーディングされるブロック中の、特定の走査順序にある連続するサンプルの数（たとえば、サンプルのラン）を示し得る。いくつかの事例では、サンプルのランはパレットインデックスのランとも呼ばれることがあり、それは、ランの各サンプルがパレットに対する関連するインデックスを有するからである。
【０１４９】
[0160]ラン値は、同じパレットコーディングモードを使用してコーディングされるパレットインデックスのランを示し得る。たとえば、Ｖａｌｕｅモードに関して、ビデオエンコーダ２０およびビデオデコーダ３０は、あるインデックス値と、同じインデックス値を有しそのインデックス値を用いてコーディングされている、ある走査順序にある連続するサンプルの数を示すラン値とを、コーディングすることができる。ＣｏｐｙＦｒｏｍＴｏｐモードに関して、ビデオエンコーダ２０およびビデオデコーダ３０は、上側の隣接サンプル（たとえば、ブロック中の現在コーディングされているサンプルの上に位置するサンプル）のインデックスと、上側の隣接サンプルからインデックス値を同様に複製しそのインデックス値を用いてコーディングされている、ある走査順序にある連続するサンプルの数を示すラン値とに基づいて、現在のサンプル値のためのインデックスが複製されることを示すものをコーディングすることができる。
【０１５０】
[0161]たとえば、本開示の態様によれば、ビデオデータのブロック中のパレットインデックスのランを示すデータは、ブロックのための最大の可能なラン値に基づいてコーディングされ得る。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセルの値をパレット中の色値に関連付けるパレットインデックスと関連付けられるピクセルに対して、ピクセルのパレットインデックスを用いてコーディングされているパレットインデックスのランのランレングスを決定することができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、ピクセルのパレットインデックスを用いてコーディングされることが可能である、パレットインデックスの最大のランの最大ランレングスを決定することができる。ビデオエンコーダ２０およびビデオデコーダ３０は次いで、決定された最大ランレングスに基づいてランレングスを示すデータをコーディングし得る。
【０１５１】
[0162]説明を目的とする例では、ビデオデータのブロック中のサンプルの総数はＮであってよく、サンプルの各々は０から（Ｎ−１）までインデックスを付けられてよい。位置ｊのサンプルについて、ビデオエンコーダ２０およびビデオデコーダ３０は、（Ｎ−ｊ−１）として最大の可能なラン値を決定することができる。ラン値は、現在のサンプルと同じパレットコーディングモード（たとえば、ＶａｌｕｅモードまたはＣｏｐｙＦｒｏｍＴｏｐモード）を用いてコーディングされている後続のサンプルの数を示すことに、留意されたい。本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、トランケーテッド・バイナライゼーションを使用してラン値を示すデータをコーディングし、最大の可能なラン値を考慮するように構成され得る。一般に、トランケーテッド・バイナライゼーションは、一意な復号可能性を維持しながらパラメータの二進化方法において使用される一部のコードワードの長さを減らすことによって、シグナリングされている特定のパラメータ（新たなパレットエントリーの数など）の最大の可能な値についての情報を使用する任意の技法を含み得る。たとえば、ランの最大の可能な値に基づくトランケーテッド・バイナリ符号が使用され得る。同様に、トランケーテッド・ユーナリー符号または指数ゴロム符号またはゴロムライス符号が、ランの最大の可能な値に基づいて、ラン値をコーディングし復号するために使用され得る。いくつかの例では、トランケーテッド・バイナライゼーション、指数ゴロム符号とゴロム−ライス符号の組合せであり得る。
【０１５２】
[0163]たとえば、ｋ次の指数ゴロム（ＥＧｋ）コードワードは、プレフィックスおよびサフィックスという２つの部分から構成される。所与の無符号の整数ｘについて、ＥＧｋコードワードのプレフィックス部分は、次式の値に対応するユーナリー符号からなる。
【０１５３】
【数１】
0006594903.tif 000002
【０１５４】
サフィックス部分は、ｋ＋ｌ（ｘ）ビットを使用するｘ−２k（２l(x)−１）というバイナリ表現として計算される。
【０１５５】
[0164]ある例として、以下の表１は、ＥＧ０のためのいくつかのコードワードを含む。
【０１５６】
【表１】
0006594903.tif 000003
【０１５７】
[0165]２０１４年６月２０日に出願された米国仮出願第６２／０１９，２２３号では、ラン値は２次の指数ゴロム符号を使用してコーディングされる。
【０１５８】
[0166]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、トランケーテッド指数ゴロム符号を使用してラン値を示すデータをコーディングするように構成され得る。たとえば、ｋ次のトランケーテッド指数ゴロム（ＴＥＧｋ）コードワードはまた、プレフィックスおよびサフィックスという２つの部分から構成される。プレフィックスはユーナリー・プレフィックスであってよく、サフィックスはバイナリ・サフィックスであってよい。たとえば、所与の無符号の整数ｘおよびその最大の可能なラン値Ｘｍａｘ（たとえば、最大ランレングス）について、ＥＧｋコードワードのプレフィックス部分は、次式の値に対応するトランケーテッド・ユーナリー符号からなる。
【０１５９】
【数２】
0006594903.tif 000004
【０１６０】
具体的には、ユーナリー符号の「トレイリング１（trailing one）」は、
【０１６１】
【数３】
0006594903.tif 000005
【０１６２】
であれば回避され得る。
【０１６３】
[0167]プレフィックスがトランケートされる（truncated）場合、すなわち、
【０１６４】
【数４】
0006594903.tif 000006
【０１６５】
である場合、ＴＥＧｋのサフィックス部分は、ｋ＋ｌ（ｘ）ビットまたはｋ＋ｌ（ｘ）−１ビットを使用するｘ−２k（２l(x)−１）というトランケーテッド・バイナリ表現として計算される。トランケーテッド・バイナリ符号の入力のための最大シンボル値は、Ｘｍａｘ−２k（２l(x)−１）である。
【０１６６】
[0168]プレフィックスがトランケートされない場合、ＴＥＧｋのサフィックス部分はＥＧｋと同じ、すなわち、ｋ＋ｌ（ｘ）ビットを使用するｘ−２k（２l(x)−１）というバイナリ表現である。ある例として、以下の表１は、ＴＥＧ０のためのいくつかのコードワードを含む。
【０１６７】
【表２】
0006594903.tif 000007
【０１６８】
上の表２の例は、トレイリング１の前にある０（たとえば、００．．．１）の数としてそのプレフィックスを示すが、他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、トレイリング０の前にある１（たとえば、１１．．．０）の数をコーディングし得ることを理解されたい。
【０１６９】
[0169]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、上で説明されたＴＥＧｋ符号を使用してラン値をコーディングし得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロック（またはＣＵ）中の現在のピクセル位置に対して、式（Ｘｍａｘ＝現在のＣＵ中のピクセルの数−走査順序での現在の位置−１）に基づいて最大ラン値Ｘｍａｘを決定することができる。
【０１７０】
[0170]別の例では、ラン値がトランケーテッド・ユーナリー・プレフィックスを使用して最初にコーディングされる場合、ビデオエンコーダ２０およびビデオデコーダ３０は、たとえばトランケートされた値に基づいて、最大ラン値を相応に調整するように構成され得る。たとえば、いくつかの事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、０より大きい、１より大きい、および２より大きいという、一連の３つのフラグとしてラン値をコーディングするように構成され得る。この例では、シグナリングされたランが２より大きい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、場合によっては、上で説明された指数ゴロム符号およびゴロム−ライス符号またはＴＥＧｋ符号の組合せなどの別の二進化方法を用いて、残りの値（たとえば、ラン値−３）をコーディングすることができる。
【０１７１】
[0171]しかしながら、（Ｎ−ｊ−１）が０に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０はランをコーディングしない。同様に、（Ｎ−ｊ−１）が１に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、１以上フラグをコーディングするだけであり得る。同様に、（Ｎ−ｊ−１）が２に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、１以上フラグと２以上フラグとをコーディングするだけであり得る。同様に、（Ｎ−ｊ−１）が３に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０は、０より大きいフラグと、１より大きいフラグと、２より大きいフラグとをコーディングするだけであり得る。（Ｎ−ｊ−１）が３より大きい場合、０より大きいフラグ、１より大きいフラグ、および２より大きいフラグに加えて、ビデオエンコーダ２０およびビデオデコーダ３０は、（Ｎ−ｊ−４）という最大値まで、残りの値をコーディングし得る。同様の方法で、説明されるプロセスは、３以外のフラグの数字、たとえば、数Ｍよりも大きいシグナリングされる値を示すフラグを使用するように拡張されてよく、ここでＭは０から開始する非負の値であり得る。
【０１７２】
[0172]本開示の態様によれば、上の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で説明されたＴＥＧｋ符号を使用して残りのランレングスをコーディングすることができ、最大のラン値は（現在のＣＵ中のピクセルの数−走査順序における現在の位置−４）に等しい。別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ラン値が０より大きいかどうかを示すフラグをコーディングし、ランレングス−１としての残りの値をコーディングするように構成され得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、０より大きいフラグをコーディングし得る。ビデオエンコーダ２０およびビデオデコーダ３０はまた、最大値が最大ランレングス−１に等しく設定されたＴＥＧｋ符号を使用して、ランレングス−１を示すデータをコーディングし得る。一例では、ビデオエンコーダ２０およびビデオデコーダ３０は０に等しくｋを設定し得るので、ＴＥＧｋ符号はＴＥＧ０符号である。
【０１７３】
[0173]他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコーディングのためのシンタックス要素をコーディングするために、上で説明されたＴＥＧ符号の任意の順序を使用することができる。ある例では、ビデオエンコーダ２０およびビデオデコーダ３０は２に等しくｋを設定し得るので、ＴＥＧｋ符号はＴＥＧ２符号である。
【０１７４】
[0174]上の例はパレットコーディングにおいてラン値をコーディングすることに関して説明されたが、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコーディングのための他のシンタックスをコーディングするために（ＴＥＧｋ符号などの）符号を使用するように構成され得る。たとえば、以下でより詳細に説明されるように、ビデオエンコーダ２０およびビデオデコーダ３０は、バイナリパレット予測ベクトル、ＣｏｐｙＡｂｏｖｅランレングス、または他の値をコーディングするために、上で説明された符号を使用することができる。
【０１７５】
[0175]Ｊｏｓｈｉ他、「Ｎｏｎ−ＳＣＣＥ３：  Ｃｏｎｔｅｘｔｓ  ｆｏｒ  ｃｏｄｉｎｇ  ｉｎｄｅｘ  ｒｕｎｓ」、ＩＴＵ−Ｔ  ＳＧ  １６  ＷＰ  ３およびＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２９／ＷＧ  １１のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）、第１８回会合、札幌、日本、２０１４年６月３０日〜７月９日、ＪＣＴＶＣ−Ｒ０１７４（以後ＪＣＴＶＣ−Ｒ０１７４）において、著者らは、ＣｏｐｙＬｅｆｔモード（ＣｏｐｙＦｒｏｍＴｏｐモードと同様の方式で動作し得る）が使用される場合、ランレングスコードワードのコンテキストがインデックスに依存するようにすることを提案した。しかしながら、本開示の例によれば、現在のランモードがＣｏｐｙＦｒｏｍＡｂｏｖｅである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、現在コーディングされているピクセルの上に位置するピクセルのインデックス値に基づいて、ランをＣＡＢＡＣコーディングするためのコンテキストを決定することができる。この例では、上側の隣接ピクセルが現在のＣＵの外にあり、ビデオエンコーダ２０およびビデオデコーダ３０は、対応するインデックスが事前に定められた定数ｋに等しいと決定することができる。いくつかの例では、定数ｋは０に等しくてよい。
【０１７６】
[0176]いくつかの例では、現在のピクセルをコーディングするためのパレットモードがＣｏｐｙＦｒｏｍＡｂｏｖｅモードである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、上側の隣接ピクセルが０に等しいインデックスを有するかどうかに基づいて、ランレングスコードワードの最初のビンをコーディングするために、２つのＣＡＢＡＣコンテキスト候補の１つを選択することができる。別の例として、現在のピクセルをコーディングするためのパレットモードがＣｏｐｙＰｒｅｖｉｏｕｓモードである場合、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックスが０に等しいか、１に等しいか、２に等しいか、または２より大きいかに基づいて、ランレングスコードワードの最初のビンをコーディングするために、４つのＣＡＢＡＣコンテキスト候補の１つを選択することができる。
【０１７７】
[0177]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングの文脈において、ビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１７８】
[0178]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセル位置の少なくともいくつかをパレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【０１７９】
[0179]図２の例では、ビデオエンコーダ２０は、予測処理ユニット１００と、ビデオデータメモリ１０１と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示されず）を含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１８０】
[0180]ビデオデータメモリ１０１は、ビデオエンコーダ２０のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ１０１内に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１０１は、ビデオエンコーダ２０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【０１８１】
[0181]ビデオエンコーダ２０は、ビデオデータを受信することができる。ビデオエンコーダ２０は、ビデオデータのピクチャのスライス内の各ＣＴＵを符号化することができる。ＣＴＵの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）と、対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、４分木区分を実行して、ＣＴＵのＣＴＢを徐々により小さいブロックに分割することができる。より小さいブロックはＣＵのコーディングブロックであり得る。たとえば、予測処理ユニット１００は、ＣＴＵと関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区画することができ、サブブロックの１つまたは複数を４つの等しいサイズのサブサブブロックに区画することができ、以下同様である。
【０１８２】
[0182]ビデオエンコーダ２０は、ＣＵの符号化された表現（すなわち、コーディングされたＣＵ）を生成するために、ＣＴＵのＣＵを符号化することができる。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵと関連付けられたコーディングブロックを区分化することができる。したがって、各ＰＵは、ルーマ予測ブロックおよび対応するクロマ予測ブロックと関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートすることができる。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測の場合は２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズのための非対称区分をサポートすることができる。
【０１８３】
[0183]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによって、ＰＵのための予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックとＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、またはＢスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されたブロックでは、予測ブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【０１８４】
[0184]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域と関連付けられた参照場所との間の空間変位を示すＭＶを生成することができる。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照場所における実際のまたは補間されたサンプルに基づいて、ＰＵの予測ブロックを生成することができる。
【０１８５】
[0185]ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を実行することができる。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵの予測ブロックと参照領域に関連付けられた参照場所との間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【０１８６】
[0186]ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照場所とＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【０１８７】
[0187]本開示の様々な例によれば、ビデオエンコーダ２０は、パレットベースのコーディングを実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【０１８８】
[0188]パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成される。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１８９】
[0189]本開示の態様によれば、パレットベースの符号化ユニット１２２は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、本開示の態様によれば、パレットベースの符号化ユニット１２２は、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのそれぞれのサンプルが第１のパレットモードを用いてコーディングされるかどうかを示すシンタックス要素の値を決定することができ、第１のパレットモードは、ブロックのための色値のパレットに対するインデックスを使用することなく、ブロックのそれぞれのサンプルをコーディングすることを含む。たとえば、パレットベースの符号化ユニット１２２は、ブロックの任意のサンプルがエスケープサンプルとして（ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプルとして）符号化されるかどうかを示す、ブロックレベルのシンタックス要素の値を決定することができる。いくつかの例では、パレットベースの符号化ユニット１２２は、ブロックの任意のサンプルがエスケープサンプルとして符号化されるかどうかを示す、ブロックのためのエスケープフラグを決定することができる。
【０１９０】
[0190]加えて、または代替的に、パレットベースの符号化ユニット１２２は、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータと、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータとの少なくとも１つを決定することができる。たとえば、パレットベースの符号化ユニット１２２は、ＳＰＳなどのパラメータセットにそのようなデータを含め得る。
【０１９１】
[0191]加えて、または代替的に、パレットベースの符号化ユニット１２２は、ピクセルをコーディングするための色のパレット中の色値にピクセルの値を関連付けるパレットインデックスと関連付けられるピクセルに対して、ピクセルのパレットインデックスを用いてコーディングされているパレットインデックスのランのランレングスを決定することができる。すなわち、パレットベースの符号化ユニット１２２は、特定のサンプルのためのインデックス値が、他の後続のパレットインデックスのランを用いて符号化されていると決定することができる。パレットベースの符号化ユニット１２２はまた、ピクセルのパレットインデックスを用いて符号化されることが可能である、パレットインデックスの最大のランの最大ランレングスを決定することができる。エントロピー符号化ユニット１１８に関して以下でより詳細に説明されるように、ビデオエンコーダ２０は、決定された最大ランレングスに基づいてランレングスを示すデータを符号化することができる。
【０１９２】
[0192]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵ用の予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対してイントラ予測を実行し得る。
【０１９３】
[0193]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、ＰＵの予測データの複数のセットを生成するために、複数のイントラ予測モードを使用することができる。イントラ予測処理ユニット１２６は、ＰＵの予測ブロックを生成するために、隣接ＰＵのサンプルブロックからのサンプルを使用し得る。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はＰＵと関連付けられた領域のサイズに依存し得る。
【０１９４】
[0194]予測処理ユニット１００は、ＰＵのためにインター予測処理ユニット１２０によって生成された予測データ、またはＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵのための予測データを選択することができる。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／歪み測定基準に基づいて、ＣＵのＰＵの予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
【０１９５】
[0195]残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック、ならびにＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成することができる。たとえば、残差生成ユニット１０２は、残差ブロックの中の各サンプルが、ＣＵのコーディングブロックの中のサンプルと、ＣＵのＰＵの対応する選択された予測ブロックの中の対応するサンプルとの差分に等しい値を有するように、ＣＵの残差ブロックを生成し得る。
【０１９６】
[0196]変換処理ユニット１０４は、ＣＵと関連付けられる残差ブロックをＣＵのＴＵと関連付けられる変換ブロックに区分するために、４分木区分を実行することができる。したがって、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックと関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々と関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【０１９７】
[0197]変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして処理され得る。
【０１９８】
[0198]量子化ユニット１０６は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の一部またはすべての関連付けられたビット深度を低減し得る。たとえば、ｎビットの変換係数は量子化の間にｍビットの変換係数へとまるめられ（rounded）得、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵと関連付けられたＱＰ値を調整することによって、ＣＵと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は、情報の喪失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも精度が低いことがある。
【０１９９】
[0199]逆量子化ユニット１０８および逆変換処理ユニット１１０は、それぞれ、係数ブロックから残差ブロックを再構築するために、係数ブロックに逆量子化および逆変換を適用することができる。再構築ユニット１１２は、ＴＵと関連付けられる再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測ブロックからの対応するサンプルに加算することができる。このようにＣＵの各ＴＵのための変換ブロックを再構築することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構築することができる。
【０２００】
[0200]フィルタユニット１１４は、ＣＵと関連付けられたコーディングブロックの中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を実行し得る。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット１２０は、他のピクチャのＰＵに対してインター予測を実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用することができる。加えて、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ中の他のＰＵに対してイントラ予測を実行するために、復号ピクチャバッファ１１６中の再構築されたコーディングブロックを使用することができる。
【０２０１】
[0201]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受け取ることができ、予測処理ユニット１００からシンタックス要素を受け取ることができる。エントロピー符号化ユニット１１８は、このデータに対して１つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームはＣＵのＲＱＴを表すデータを含み得る。
【０２０２】
[0202]本開示の態様によれば、エントロピー符号化ユニット１１８は、図１の例に関して上で説明されたように、ＴＥＧｋ符号を使用してパレットデータをコーディングするように構成され得る。具体的には、本開示の態様によれば、エントロピー符号化ユニット１１８は、決定された最大ランレングスに基づいてパレットインデックスのランのランレングスを示すデータを符号化することができる。いくつかの例では、エントロピー符号化ユニット１１８は、ＴＥＧ２符号を使用して、ランレングスを符号化することができる。
【０２０３】
[0203]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明の目的で与えられており、本開示において広く例示され説明される技法に対する限定ではない。説明の目的で、本開示は、ＨＥＶＣコーディングの文脈において、ビデオデコーダ３０を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【０２０４】
[0204]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなどの、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ３０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
【０２０５】
[0205]図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、ビデオデータメモリ１５１と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成された、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０２０６】
[0206]ビデオデータメモリ１５１は、ビデオデコーダ３０のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ１５１に記憶されるビデオデータは、たとえば、チャネル１６から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ１５１は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１５１は、ビデオデコーダ３０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【０２０７】
[0207]コーディングされたピクチャのバッファ（ＣＰＢ）は、ビットストリームの符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ＣＰＢから符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、ＮＡＬユニットを解析（パース）してシンタックス要素を復号することができる。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。
【０２０８】
[0208]本開示の態様によれば、エントロピー復号ユニット１５０は、図１の例に関して上で説明されたように、ＴＥＧｋ符号を使用してパレットデータを復号するように構成され得る。具体的には、本開示の態様によれば、エントロピー復号ユニット１５０は、決定された最大ランレングスに基づいて、パレットインデックスのラン（たとえば、同じ値を有するインデックスのランまたは上側の隣接インデックスから複製されるインデックスのラン）のランレングスを示すデータを復号することができる。いくつかの例では、エントロピー復号ユニット１５０は、ＴＥＧ２符号を使用して、ランレングスを復号することができる。
【０２０９】
[0209]予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コーディングされたスライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０２１０】
[0210]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実行し得る。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行することができる。ＣＵの各ＴＵに対して再構築動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築することができる。
【０２１１】
[0211]ＣＵのＴＵに対して再構築動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵと関連付けられた係数ブロックを逆量子化（ｉｎｖｅｒｓｅ  ｑｕａｎｔｉｚｅ）、すなわち逆量子化（ｄｅ−ｑｕａｎｔｉｚｅ）することができる。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵと関連付けられたＱＰ値を使用することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、利用されるエントロピーコーディングの方法に依存し得る。
【０２１２】
[0212]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵと関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用することができる。
【０２１３】
[0213]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵ用の予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成するために、イントラ予測モードを使用することができる。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定することができる。
【０２１４】
[0214]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵの動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【０２１５】
[0215]再構築ユニット１５８は、ＣＵのＴＵと関連付けられたルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック、ならびにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。たとえば、再構築ユニット１５８は、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックの対応するサンプルに加算して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。
【０２１６】
[0216]フィルタユニット１６０は、デブロッキング動作を実行して、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロックと関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ３０は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを、復号ピクチャバッファ１６２に記憶することができる。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測動作またはインター予測動作を実行し得る。
【０２１７】
[0217]本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット１６５は、たとえば、パレットベースの復号モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセル位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０２１８】
[0218]パレットベースの復号ユニット１６５は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、ビデオデコーダ３０は、たとえば、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなどの非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号することができる。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。
【０２１９】
[0219]本開示の態様によれば、パレットベースの復号ユニット１６５は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、本開示の態様によれば、パレットベースの復号ユニット１６５は、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのそれぞれのサンプルが第１のパレットモードを用いてコーディングされるかどうかを示すシンタックス要素の値を決定することができ、第１のパレットモードは、ブロックのための色値のパレットに対するインデックスを使用することなく、ブロックのそれぞれのサンプルをコーディングすることを含む。たとえば、パレットベースの復号ユニット１６５は、ブロックのいずれかのサンプルがエスケープサンプル（パレットからの色エントリーを使用して再構築され得ないサンプル）として復号されるべきかどうかを示す、ブロックレベルシンタックス要素の値を決定することができる。いくつかの例では、パレットベースの復号ユニット１６５は、ブロックのいずれかのサンプルがエスケープサンプルとして復号されるべきかどうかを示す、ブロックのための１ビットのエスケープフラグを決定することができる。
【０２２０】
[0220]加えて、または代替的に、パレットベースの復号ユニット１６５は、ビデオデータのブロックをコーディングするための色値のパレットの最大パレットサイズを示すデータ、または、色値のパレットを決定するためのパレット予測子の最大パレット予測子サイズを示すデータの少なくとも１つを決定することができる。たとえば、パレットベースの復号ユニット１６５は、ＳＰＳなどのパラメータセットからのそのようなデータを復号し得る。
【０２２１】
[0221]加えて、または代替的に、パレットベースの復号ユニット１６５は、ピクセルをコーディングするための色のパレット中の色値にピクセルの値を関連付けるパレットインデックスと関連付けられるピクセルに対して、ピクセルのパレットインデックスを用いて一緒にコーディングされているパレットインデックスのラン（たとえば、同じ値を有するインデックスのランまたは上側の隣接インデックスから複製されるインデックスのラン）のランレングスを決定することができる。すなわち、パレットベースの復号ユニット１６５は、特定のサンプルのためのインデックス値が、他の後続のパレットインデックスのランを用いて復号されると決定することができる。パレットベースの復号ユニット１６５はまた、ピクセルのパレットインデックスを用いて復号されることが可能である、パレットインデックスの最大のランの最大ランレングスを決定することができる。エントロピー復号ユニット１５０に関して上で述べられたように、ビデオデコーダ３０は、決定された最大ランレングスに基づいてランレングスを示すデータを復号することができる。
【０２２２】
[0222]図４は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図４の例は、第１のパレット１８４と関連付けられる第１のコーディングユニット（ＣＵ）１８０と第２のパレット１９２と関連付けられる第２のＣＵ１８８とを有するピクチャ１７８を含む。下でより詳細に説明されるように、本開示の技法によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８はまた、イントラ予測コーディングモードによりコーディングされるブロック１９６と、インター予測コーディングモードによりコーディングされるブロック２００とを含む。
【０２２３】
[0223]図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）の状況において、説明を目的としてＨＥＶＣビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０２２４】
[0224]一般に、パレットは、現在コーディングされているＣＵ、図４の例ではＣＵ１８８について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０のような）は、ＣＵの各々の色成分に対して別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのさらに別のパレットとを符号化することができる。この例では、ＹパレットのエントリーはＣＵのピクセルのＹの値を表すことができ、ＵパレットのエントリーはＣＵのピクセルのＵの値を表すことができ、ＶパレットのエントリーはＣＵのピクセルのＶの値を表すことができる。
【０２２５】
[0225]他の例では、ビデオエンコーダ２０は、ＣＵのすべての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、三重の値であるｉ番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしての第１のパレット１８４および１９２の表現は、一例にすぎず、限定することは意図されない。
【０２２６】
[0226]図４の例では、第１のパレット１８４は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０２〜２０６を含む。エントリー２０２〜２０６は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｃをそれぞれ含むピクセル値に、パレットインデックスを関連付ける。本明細書で説明されるように、第１のＣＵ１８０の実際のピクセル値をコーディングするのではなく、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０など）は、パレットインデックス１〜３を使用してブロックのピクセルをコーディングするために、パレットベースのコーディングを使用することができる。すなわち、第１のＣＵ１８０の各ピクセル位置に対して、ビデオエンコーダ２０はピクセルのインデックス値を符号化することができ、インデックス値は、第１のパレット１８４の１つまたは複数の中のピクセル値と関連付けられる。ビデオデコーダ３０は、ビットストリームからパレットインデックスを取得し、パレットインデックスと第１のパレット１８４の１つまたは複数とを使用してピクセル値を再構築することができる。したがって、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。
【０２２７】
[0227]本開示の態様によれば、最大パレットサイズが第１のパレット１８４のためにシグナリングされ得る。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、たとえば第１のパレット１８４に含まれ得るエントリーの数に関して、最大パレットサイズを示すデータをコーディングするように構成され得る。いくつかの例では、最大パレットサイズを示す１つまたは複数のシンタックス要素（たとえば、ＭＡＸ＿ＰＬＴ＿ＳＩＺＥ）は、ＣＵ１８０に対して有効なＳＰＳに含まれ得る。他の例では、最大パレットサイズを示す１つまたは複数のシンタックス要素は、ＶＰＳもしくはＰＰＳなどの別のパラメータセットに、または、スライスヘッダデータもしくは、ＬＣＵもしくはＣＵと関連付けられるデータなどのヘッダデータに含まれ得る。
【０２２８】
[0228]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレットサイズを示す１つまたは複数のシンタックス要素を使用して、変化することがあり、最大パレットサイズは、コーディングされているビデオデータの特定のプロファイル、レベル、またはビット深度に基づき得る。他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレットサイズを示す１つまたは複数のシンタックス要素を使用して、変化することがあり、最大パレットサイズは、ＣＵ１８０などのコーディングされているブロックのサイズに基づき得る。
【０２２９】
[0229]説明を目的とする例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣＵ１８０のための第１のパレット１８４を構築するとき、最大パレットサイズを示すデータを使用することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、データによって示される最大パレットサイズに達するまで、エントリーを第１のパレット１８４に追加し続けることができる。ビデオエンコーダ２０およびビデオデコーダ３０は次いで、構築された第１のパレット１８４を使用してＣＵ１８０をコーディングすることができる。
【０２３０】
[0230]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測パレット、この例では第１のパレット１８４が決定される際に参照する、１つまたは複数のブロックを位置特定することができる。予測の目的で使用されているエントリーの組合せは、予測子パレットと呼ばれ得る。
【０２３１】
[0231]図４の例では、第２のパレット１９２は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０８〜２１２を含む。エントリー２０８〜２１２は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｄをそれぞれ含むピクセル値に、パレットインデックスを関連付ける。この例では、ビデオエンコーダ２０は、第１のパレット１８４（予測子パレットを表す、ただし予測子パレットはいくつかのブロックのエントリーを含み得る）のどのエントリーが第２のパレット１９２に含まれるかを示す１つまたは複数のシンタックス要素をコーディングし得る。
【０２３２】
[0232]図４の例では、１つまたは複数のシンタックス要素は、ベクトル２１６として示される。ベクトル２１６は、いくつかの関連するビン（またはビット）を有し、各ビンは、そのビンと関連付けられたパレット予測子が現在のパレットのエントリーを予測するために使用されるかどうかを示す。たとえば、ベクトル２１６は、第１のパレット１８４の最初の２つのエントリー（２０２および２０４）が、第２のパレット１９２中に含まれる（ベクトル２１６中の「１」の値）一方で、第１のパレット１８４の第３のエントリーが、第２のパレット１９２中に含まれない（ベクトル２１６中の「０」の値）ことを示す。図４の例では、ベクトルは、ブールベクトル（Boolean vector）である。このベクトルはパレット予測ベクトルと呼ばれることがある。
【０２３３】
[0233]いくつかの例では、上で述べられたように、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測を実行するとき、（パレット予測子テーブルまたはパレット予測子リストとも呼ばれ得る）パレット予測子を決定することができる。パレット予測子は、現在のブロックをコーディングするためのパレットの１つまたは複数のエントリーを予測するために使用される１つまたは複数の隣接ブロックのパレットからのエントリーを含み得る。ビデオエンコーダ２０およびビデオデコーダ３０は、同じ方式でリストを構築し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測子のどのエントリーが現在のブロックをコーディングするためのパレットに複製されるべきかを示すために、データ（ベクトル２１６など）をコーディングし得る。
【０２３４】
[0234]したがって、いくつかの例では、以前に復号されたパレットエントリーは、パレット予測子として使用するためにリストに記憶される。このリストは、現在のパレットモードＣＵにおいてパレットエントリーを予測するために使用され得る。リスト中のどのエントリーが現在のパレットにおいて再使用されるかを示すために、バイナリ予測ベクトルがビットストリームにおいてシグナリングされ得る。２０１４年６月２７日に出願された米国仮出願第６２／０１８，４６１号では、バイナリパレット予測子を圧縮するために、ランレングスコーディングが使用される。ある例では、ランレングス値は、０次の指数ゴロム符号を使用してコーディングされる。
【０２３５】
[0235]本開示の態様によれば、いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０（たとえば、エントロピー符号化ユニット１１８およびエントロピー復号ユニット１５０）は、図１の例に関して上で説明されたように、ｋ次のトランケーテッド指数ゴロム（ＴＥＧｋ）符号を使用して、ブロックのパレットのためのバイナリパレット予測ベクトルをコーディング（たとえば、それぞれ符号化および復号）するように構成され得る。
【０２３６】
[0236]いくつかの事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、規格提案文書、Ｓｅｒｅｇｉｎ他、「Ｎｏｎ−ＳＣＣＥ３：  Ｒｕｎ−Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｐｒｅｄｉｃｔｏｒ」、ＪＣＴＶＣ−Ｒ０２２８、札幌、日本、２０１４年６月３０日〜７月９日（以後ＪＣＴＶＣ−Ｒ０２２８）において記述される技法とともに、ＴＥＧｋ符号を使用して、バイナリパレット予測ベクトルをコーディングするように構成され得る。ＪＣＴＶＣ−Ｒ０２２８において、ランレングスコーディングは、以下の条件およびステップを用いてバイナリベクトル中の０の要素をコーディングするために使用される。
・１に等しいランレングス値は予測の終了を示す
・予測の終了は、バイナリベクトル中の最後の１に対してはシグナリングされない
・先行する０の要素の数が、バイナリベクトル中の各々の１に対してコーディングされる
・０の要素の数が０より多い場合、１というエスケープ値のために、その数に１を足したものがシグナリングされる
・０次の指数ゴロム符号を使用してランレングス値がコーディングされる
説明を目的とする例では、バイナリパレット予測ベクトルは｛１１００１０００１００００｝に等しくてよく、パレット予測子の４つのエントリー（４つの１によって示される）が現在のブロックをコーディングするためのパレットに複製されることを示す。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、０−０−３−４−１としてベクトルをコーディングし得る。
【０２３７】
[0237]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、バイナリパレット予測ベクトルを、そのベクトルのための最大ラン値Ｘを使用してコーディングすることができ、最大ラン値Ｘは、パレット予測子リスト中のパレットエントリーの数  マイナス  走査順序における現在の位置  マイナス  １  に等しくてよい）。一例によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、ラン値をコーディングするためにＴＥＧ０符号を使用する。
【０２３８】
[0238]本開示の技法はまた、最大パレット予測子サイズをシグナリングすることに関する。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、たとえばベクトル２１６に含まれ得るビットの数に関して、最大パレット予測子サイズを示すデータをコーディングするように構成され得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、１つまたは複数の他の値に対して最大パレット予測子サイズを示すデータをコーディングし得る。たとえば、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズと最大パレットサイズとのデルタ（たとえば、差分）として最大パレット予測子サイズを示すデータをコーディングするように構成され得る。いくつかの事例では、ビデオエンコーダおよびビデオデコーダ３０は、固定長符号、ゴロム−ライス符号、または指数ゴロム符号の少なくとも１つを使用して、デルタをコーディングし得る。
【０２３９】
[0239]いくつかの例では、最大パレット予測子サイズを示すシンタックス要素は、ＳＰＳに含まれ得る。他の例では、最大パレット予測子サイズを示すシンタックス要素は、ＶＰＳもしくはＰＰＳなどの別のパラメータセットに、または、スライスヘッダデータもしくは、ＬＣＵもしくはＣＵと関連付けられるデータなどのヘッダデータに含まれ得る。
【０２４０】
[0240]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズを示すシンタックス要素を使用して、変化することがあり、最大パレット予測子サイズは、コーディングされているビデオデータの特定のプロファイル、レベル、またはビット深度に基づき得る。他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、最大パレット予測子サイズを示すシンタックス要素を使用して、変化することがあり、最大パレット予測子サイズは、コーディングされているブロックのサイズに基づき得る。
【０２４１】
[0241]説明を目的とする例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣＵ１８８をコーディングするための第２のパレット１９２を構築するとき、最大パレット予測子サイズに関するデータを使用することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、データによって示されるような最大パレット予測子サイズに達するまで、エントリーを予測子パレットに（たとえば、およびビットをベクトル２１６に）追加し続けることができる。ビデオエンコーダ２０およびビデオデコーダ３０は次いで、ＣＵ１８８のための第２のパレット１９２を構築するために、ベクトル２１６を使用することができる。
【０２４２】
[0242]図５は、本開示の技法に従った、ピクセルのブロックのためのパレットに対するパレットインデックスを決定する例を示す概念図である。たとえば、図５は、パレットインデックスと関連付けられるピクセルのそれぞれの位置をパレット２４４のエントリーに関連付ける、パレットインデックスのマップ２４０を含む。たとえば、インデックス１は値Ａと関連付けられ、インデックス２は値Ｂと関連付けられ、インデックス３は値Ｃと関連付けられる。加えて、エスケープサンプルが暗黙的エスケープシグナリングを使用して示されるとき、ビデオエンコーダ２０およびビデオデコーダ３０はまた、インデックス４として図５に示される追加のインデックスをパレット２４４に追加することができ、これは、インデックス４と関連付けられるマップ２４０のサンプルがエスケープサンプルであることを示し得る。この場合、ビデオエンコーダ２０は、ピクセル値がパレット２４４に含まれない場合、マップ２４０の中のある位置に対する実際のピクセル値（またはその量子化されたバージョン）を示すものを符号化することができる（および、ビデオデコーダ３０は、符号化されたビットストリームからそれを取得することができる）。
【０２４３】
[0243]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのピクセル位置がパレットインデックスと関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の（ｉ，ｊ）のエントリーがＣＵの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー（すなわち、各ピクセル位置）のための１つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の場所におけるピクセル値がパレット２４４の中の値の１つであることを示すように、１という値を有するフラグを符号化することができる。
【０２４４】
[0244]そのような例では、ビデオエンコーダ２０はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするように、パレットインデックス（値１〜３として図５の例では示される）を符号化することができる。
【０２４５】
[0245]パレット２４４が単一のエントリーと関連付けられるピクセル値とを含む例では、ビデオエンコーダ２０は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の位置におけるピクセル値がパレット２４４の中の値の１つではないことを示すように、０という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ２０はまた、ピクセル値を再構築する際にビデオデコーダ３０によって使用するために、ピクセル値の指示を符号化することができる。いくつかの例では、ピクセル値は不可逆方式（lossy manner）でコーディングされ得る。
【０２４６】
[0246]ＣＵの１つの位置におけるピクセルの値は、ＣＵの他の位置における１つまたは複数の他のピクセルの値の指示を提供することができる。たとえば、ＣＵの隣接するピクセル位置が同じピクセル値を有すること、または、（１つより多いピクセル値が単一のインデックス値にマッピングされ得る、不可逆コーディングの場合において）ＣＵの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
【０２４７】
[0247]したがって、ビデオエンコーダ２０は、一緒にコーディングされる、所与の走査順序にある連続するピクセルまたはパレットインデックスの数を示す１つまたは複数のシンタックス要素を符号化することができる。上で述べられたように、パレットインデックスの列（またはパレットインデックスによって示されるピクセル値）は、本明細書ではランと呼ばれ得る。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じピクセル値またはインデックス値を有する連続する場所の数を決定することができる。
【０２４８】
[0248]上で述べられたように、ランは、ＣｏｐｙＦｒｏｍＴｏｐモードまたはＶａｌｕｅモードとともに使用され得る。説明を目的とする例では、マップ２４０の行２６４と２６８とを考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」という３個のパレットインデックスと、「２」という２個のパレットインデックスと、「３」という３個のパレットインデックスとを含む。行２６８は、「１」という５個のパレットインデックスと、「３」という２個のパレットインデックスと、パレット２４４に含まれない１個のサンプル（インデックス４によって表される、ただしサンプルレベルエスケープフラグが明示的エスケープシグナリングのために使用され得る）とを含み、この１個のサンプルはエスケープサンプルと呼ばれ得る。
【０２４９】
[0249]この例では、ビデオエンコーダ２０は、行２６８のためのデータを符号化するために、ＣｏｐｙＦｒｏｍＴｏｐモードを使用し得る。たとえば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、行２６８の中の走査方向の２つの連続するエントリーの次のランが行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。
【０２５０】
[0250]行２６４の第１の位置を示す１つまたは複数のシンタックス要素と、（上で述べられた）２つのエントリーのランとを符号化した後で、ビデオエンコーダ２０は、Ｖａｌｕｅモードを使用して、（左から右に）行２６８の中の第４の位置と第５の位置とを符号化することができる。たとえば、ビデオエンコーダ２０は、第４の位置に対して１という値を示す１つまたは複数のシンタックス要素と、１というランを示す１つまたは複数のシンタックス要素とを符号化することができる（たとえば、Ｖａｌｕｅモード）。したがって、ビデオエンコーダ２０は、別のラインを参照することなくこれらの２つの位置を符号化する。
【０２５１】
[0251]ビデオエンコーダ２０は次いで、上の行２６４に対してＣｏｐｙＦｒｏｍＴｏｐモードを使用して、行２６８の中の３というインデックス値を有する第１の位置を符号化することができる。たとえば、ビデオエンコーダ２０は、ＣｏｐｙＦｒｏｍＴｏｐモードと、１というランとをシグナリングすることができる。したがって、ビデオエンコーダ２０は、たとえばランを使用して、ラインのピクセル値またはパレットインデックスを、該ラインの他の値に対してコーディングすること、ラインのピクセル値または別のライン（または列）の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。ビデオエンコーダ２０は、いくつかの例では、この選択を行うために、レート／歪みの最適化を実行することができる。
【０２５２】
[0252]ビデオエンコーダ２０は次いで、（左から右に）行２６８の最後のサンプルのためのエスケープサンプルを符号化することができ、これは第１のパレット２４４に含まれない。たとえば、ビデオエンコーダ２０は、行２６８の最後の位置をエスケープサンプルとして符号化することができる。すなわち、ビデオエンコーダ２０は、行２６８の最後の位置がエスケープサンプル（たとえば、インデックス４）であるという指示、ならびにサンプル値の指示を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから上で説明されたシンタックスを取得し、そのようなシンタックスを使用して行２６８を再構築することができる。
【０２５３】
[0253]上で述べられたように、エスケープサンプルをコーディングするための２つの技法があり得る。たとえば、明示的エスケープシグナリングでは、ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０の各サンプル位置のための明示的なサンプルごとのＥｓｃａｐｅモードフラグをコーディングすることができる。特定のサンプル（行２６８の最後のサンプルなど）がエスケープサンプルとしてコーディングされる場合、ビデオエンコーダ２０およびビデオデコーダ３０は、その特定のサンプルのための色値を示すデータをコーディングすることができる。サンプルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、モードがＣｏｐｙＦｒｏｍＴｏｐであるかＶａｌｕｅであるかを示すために、ＳＰｏｉｎｔフラグなどの追加のデータをコーディングすることができる。
【０２５４】
[0254]暗黙的エスケープシグナリングでは、ビデオエンコーダ２０およびビデオデコーダ３０は、追加のインデックスをパレット２４４に追加することができる（エントリーインデックス４）。ビデオエンコーダ２０およびビデオデコーダ３０は、サンプルがエスケープサンプルとしてコーディングされることを示すために、パレット２４４に対する追加のインデックス、たとえばインデックス４を使用することができる。しかしながら、追加のインデックスは、関連する色値を有しない。むしろ、ビデオエンコーダ２０およびビデオデコーダ３０はまた、追加のインデックスと関連付けられる各サンプルのための色値をコーディングする。サンプルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、モードがＣｏｐｙＦｒｏｍＴｏｐであるかＶａｌｕｅであるかを示すために、ＳＰｏｉｎｔフラグなどのデータをコーディングすることができる。
【０２５５】
[0255]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのサンプルがそのブロックのための色のパレットに含まれていない色値に基づいてコーディングされるかどうかを示す、１つまたは複数のブロックレベルシンタックス要素をコーディングするように構成され得る。図５の例に関して、ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０の少なくとも１つのサンプルがエスケープサンプル、すなわち行２６８の最後のサンプルとしてコーディングされることを示す、マップ２４０と関連付けられる１つまたは複数のシンタックス要素をコーディングすることができる。
【０２５６】
[0256]ある例では、１つまたは複数のシンタックス要素は、ブロックレベルエスケープフラグ（単に「エスケープフラグ」と以下では呼ばれる）であり得る。たとえば、ビデオエンコーダ２０は、マップ２４０がエスケープサンプルとしてコーディングされるサンプルを含むことを示すために、１という値を有するエスケープフラグを符号化することができる。同様に、ビデオデコーダ３０は、マップ２４０がエスケープサンプルとしてコーディングされるサンプルを含むことを示す、１という値を有するエスケープフラグを復号することができる。したがって、エスケープフラグに従って、ビデオエンコーダ２０はマップ２４０を符号化することができ、ビデオデコーダ３０はマップ２４０を復号することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックス４を第１のパレット２４４に追加することができ、これは、エスケープサンプルとしてコーディングされるサンプルを表すために使用され得る。ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０のコーディングの間、この追加のインデックスを使用することができる。
【０２５７】
[0257]本開示の態様によれば、ビデオエンコーダ２０メイビデオデコーダ３０は、エスケープフラグと、特定のブロックをコーディングするために使用されるパレットのサイズとに基づいて、あるシンタックスのコーディングをスキップするように構成され得る。すなわち、図５の例は３つのエントリーを有する第１のパレット２４４を示すが、いくつかの事例では、ビデオデータのブロックをコーディングするためのパレットは、単一のエントリーを含み得る。そのような事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットが単一のエントリーを有することと、ブロックのサンプルがエスケープサンプルとしてコーディングされないことを示すエスケープフラグとに基づいて、あるエスケープ関連のシンタックスのコーディングをスキップするように構成され得る。
【０２５８】
[0258]たとえば、ブロックのサンプルがエスケープサンプルではないことをエスケープフラグが示す事例のように、およびパレットのサイズが１であるとき、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのすべてのサンプルが同じインデックス値（たとえば、パレットの唯一のエントリー）を有すると推測するように構成され得る。したがって、ビデオエンコーダ２０およびビデオデコーダ３０はまた、ブロックのパレットインデックスを決定するために使用される他のすべての他のデータのコーディングをスキップすることができる。
【０２５９】
[0259]上の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックレベルエスケープシンタックスを明示的にコーディングすることができる（たとえば、ビデオエンコーダ２０はビットストリームにおいてエスケープフラグを符号化することができ、ビデオデコーダ３０はビットストリームからそのようなフラグを復号することができる）。しかしながら、いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０をコーディングするために使用されるパレット２４４のサイズに基づいて、ブロックレベルエスケープシンタックス要素の値を推測する（たとえば、上で述べられたシンタックス要素を符号化または復号することなく決定する）ことができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックレベルエスケープフラグの値を決定するために、パレットサイズに関する予備的な決定を行うことができる。ブロックレベルエスケープシンタックス要素は、パレットサイズが０より大きいときだけビットストリームにおいてコーディングされ得る。
【０２６０】
[0260]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、ビデオデータのブロックをコーディングするためのパレットのサイズを最初に決定することができる。パレットのサイズが０であることに基づいて、ビデオエンコーダ２０およびビデオデコーダ３０は、エスケープフラグが１に等しいことと、ブロックのすべてのサンプルがエスケープサンプルとしてコーディングされることとを決定することができ、それは、サンプルをコーディングするために利用可能な他のパレットエントリーがないからである。
【０２６１】
[0261]たとえば、パレットサイズが０である事例のように、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのすべてのサンプルが同じインデックス値（たとえば、エスケープサンプルを示すことと関連付けられるパレットの追加のエントリー）を有すると自動的に決定するように構成され得る。したがって、ビデオエンコーダ２０およびビデオデコーダ３０はまた、エスケープフラグのコーディング、ならびに、ブロックのパレットインデックスを決定するために使用されるすべての他のデータのコーディングをスキップすることができる。
【０２６２】
[0262]図６は、本開示の技法に従った、ラスター走査順序を仮定した、ＣｏｐｙＦｒｏｍＡｂｏｖｅモードのための最大ランレングスを決定する例を示す概念図である。上で述べられたように、本開示の技法は、コーディングされているシンタックスの最大の可能な値を考慮する符号を使用したパレットコーディングのためのシンタックスをコーディングすることを含む。
【０２６３】
[0263]説明を目的とする例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットインデックスのラン（たとえば、同じ値を有するインデックスのランまたは上側の隣接インデックスから複製されるインデックスのラン）のランレングスをコーディングすることができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のパレットコーディングされたサンプルに対して、現在のサンプルとともにコーディングされているパレットインデックスのランのランレングスを決定することができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、ピクセルのパレットインデックスを用いてコーディングされることが可能である、パレットインデックスの最大のランの最大ランレングスを決定することができる。ビデオエンコーダ２０およびビデオデコーダ３０は次いで、決定された最大ランレングスに基づいてランレングスを示すデータをコーディングし得る。
【０２６４】
[0264]いくつかの事例では、本開示の態様によれば、シンタックスは、本明細書で説明されるＴＥＧｋ符号などのある形の指数ゴロム符号を使用してコーディングされ得る。ＴＥＧｋ符号を使用するために、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のＣＵ中のピクセルの数から走査順序における現在の位置を引き、さらに１を引いたものとして、最大ランレングスを決定することができる。
【０２６５】
[0265]いくつかのパレットコーディング技法では、ＣｏｐｙＦｒｏｍＡｂｏｖｅモード（このモードではビデオコーダは現在のピクセルの上のピクセルのインデックスを複製する）と関連付けられるピクセルのランは、エスケープピクセルを含むことが許容されない。すなわち、ビデオコーダは、現在のピクセルの上側の隣接ピクセルがエスケープサンプルとしてコーディングされるピクセルである場合、ＣｏｐｙＦｒｏｍＡｂｏｖｅのランを停止しなければならない。したがって、最大のＣｏｐｙＦｒｏｍＡｂｏｖｅのランレングスは、現在のピクセル位置と、走査順序においてエスケープされる上側の隣接ピクセルを有する位置との間の距離によって拘束される。
【０２６６】
[0266]説明を目的とする例では、走査順序におけるＣｏｐｙＦｒｏｍＡｂｏｖｅのランの開始位置はＡであり、位置Ａ＋Ｌ（Ｌ＞０）（またはいくつかの例ではＡ＋Ｌ（Ｌ＞１））にあるピクセルに対する上側の隣接ピクセルはエスケープサンプルとしてコーディングされ、位置Ａ＋ｌ（ｌ＜Ｌ）にあるピクセルに対する上側の隣接ピクセルはエスケープサンプルとしてコーディングされない。そのようなピクセルＬが存在しない場合、ビデオエンコーダ２０は、走査順序においてブロックの中で最後のピクセルの後の位置にＬを割り当てることができる。本開示の技法によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、最大のコーディングされるランレングスがＬ−１より長くないという制約のもとで、ＣｏｐｙＦｒｏｍＡｂｏｖｅモードのためのランレングスをコーディングするためにＴＥＧｋを使用することができる。代替的に、０より大きい、１より大きい、および２より大きいといったユーナリー・プレフィックスがランレングスをコーディングするときに使用される場合、ビデオエンコーダ２０またはビデオデコーダ３０は、ＴＥＧｋを使用してコーディングされるべきインデックスマップのランの最大ランレングスを、Ｌ−４に設定することができる。
【０２６７】
[0267]ビデオデコーダ３０またはビデオエンコーダ２０が、ある位置のピクセルがエスケープピクセルに対応するか否かを決定できない事例では、ビデオエンコーダ２０およびビデオデコーダ３０は、そのピクセルを、エスケープサンプルとしてコーディングされないかのように処理することができ、すなわち、最大のコーディングされるランレングスは停止しない。図６の例では、破線２８０により包含されるピクセルのいずれもがエスケープサンプルとしてコーディングされない場合、最大の可能なランレングスは３５（すなわち、影付きではないピクセル位置の数）である。破線２８０内のピクセルの１つまたは複数がエスケープサンプルとしてコーディングされる場合、エスケープサンプルとしてマークされるピクセル（「Ｘ」を伴うピクセル位置）が走査順序において破線２８０内で最初のエスケープピクセルであると仮定すると、最大の可能なコーディングされるｃｏｐｙ  ａｂｏｖｅのランレングスは５である。
【０２６８】
[0268]いくつかの例では、ビデオデコーダ３０は、破線２８０内のピクセルのためのランモード（たとえば、ピクセルがコーディングされるパレットモード）を決定するだけであり得る。したがって、最悪の場合、ビデオデコーダ３０は、ＢｌｏｃｋＷｉｄｔｈ−１個のピクセルに対する決定を行う。いくつかの例では、ビデオデコーダ３０は、ランモードが確認されるピクセルの数の最大値に関するいくつかの制約を実施するように構成され得る。たとえば、ビデオデコーダ３０は、ピクセルが現在のピクセルと同じ行の中にある場合にだけ、破線２８０内のピクセルを確認することができる。ビデオデコーダ３０は、破線２８０内のすべての他のピクセルがエスケープサンプルとしてコーディングされないと推測することができる。図６の例は、ラスター走査順序を仮定する。しかしながら、本技法は、垂直、水平横行、垂直横行などの他の走査順序に適用され得る。
【０２６９】
[0269]図７は、本開示の技法に従った、ブロックのいずれかのサンプルがエスケープサンプルとして符号化されるかどうかを示す１つまたは複数のブロックレベルシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャートである。図７のプロセスは全般に、説明を目的にビデオエンコーダ２０によって実行されるものとして説明されるが、様々な他のプロセッサも図７に示されるプロセスを実行し得る。
【０２７０】
[0270]図７の例では、ビデオエンコーダ２０は、ビデオデータのブロックを符号化するためのパレットを決定する（３００）。いくつかの例では、ビデオエンコーダ２０は、たとえばパレット予測子を使用して、１つまたは複数の以前に符号化されたブロックのパレットベースのパレットを決定することができる。ビデオエンコーダ２０はまた、パレットのサイズを決定することができる（３０２）。たとえば、ビデオエンコーダ２０は、決定されたパレット中のエントリーの数を決定することができる。
【０２７１】
[0271]ビデオエンコーダ２０は、パレットサイズが０であるかどうかを決定することができる（３０４）。パレットサイズが０に等しいことに基づいて（ステップ３０４のｙｅｓの分岐）、ビデオエンコーダ２０は、ブロックの少なくとも１つのサンプルがエスケープサンプルであることを示すブロックレベルエスケープシンタックスを決定することができる（３０６）。一例では、ビデオエンコーダ２０は、ブロックレベルエスケープフラグが１に等しいと決定することができる。ビデオエンコーダ２０は次いで、ブロックのための他のシンタックス要素を符号化することなく、ブロックのすべてのサンプルをエスケープサンプルとして符号化する（３０８）。たとえば、ビデオエンコーダ２０は、ブロックレベルエスケープフラグを示すものを符号化しなくてよく、それは、ブロックレベルエスケープシンタックス要素が、パレットサイズが０より大きいときにだけビットストリームにおいて符号化され得るからである。加えて、ビデオエンコーダ２０は、パレットモード（たとえば、ＶａｌｕｅまたはＣｏｐｙＦｒｏｍＴｏｐモード）を示すシンタックス、ランを決定することと関連付けられるシンタックス、パレットインデックスと関連付けられるシンタックス、および任意の他の関連するシンタックスなどの、ブロックのパレットインデックスのための他のデータを符号化しなくてよい。
【０２７２】
[0272]パレットサイズが０ではない場合（ステップ３０４のｎｏの分岐）、ビデオエンコーダ２０は、ブロックのいずれかのサンプルがエスケープサンプルとして符号化されるかどうかを決定することができる（３１０）。ブロックの少なくとも１つのサンプルがエスケープサンプルとして符号化されると決定したことに基づいて（ステップ３１０のｙｅｓの分岐）、ビデオエンコーダ２０は、ブロックの少なくとも１つのサンプルがエスケープサンプルとして符号化されることを示すブロックレベルエスケープシンタックスを決定し、ブロックとともにビットストリームにおいてブロックレベルシンタックスを示すものを符号化することができる（３１２）。たとえば、ビデオエンコーダ２０は、ブロックレベルエスケープフラグを１に等しく設定し、ビットストリームにおいてエスケープフラグを示すものを符号化することができる。ビデオエンコーダ２０はまた、パレットコーディングモードを用いてブロックを符号化し、これはブロックの少なくとも１つのピクセルをエスケープサンプルとして符号化することを含む（３１４）。
【０２７３】
[0273]サンプルがエスケープサンプルとして符号化されないことに基づいて（ステップ３１０のｎｏの分岐）、ビデオエンコーダ２０は、ブロックのためのパレットのパレットサイズが１に等しいかどうかを決定することができる（３１６）。パレットサイズが１に等しくないと決定したことに基づいて（ステップ３１６のｎｏの分岐）、ビデオエンコーダ２０は、ブロックのサンプルがエスケープサンプルとして符号化されないことを示すブロックレベルエスケープシンタックスを決定し、ビットストリームにおいてブロックレベルエスケープシンタックスを示すものを符号化することができる（３１８）。たとえば、ビデオエンコーダ２０は、ブロックレベルエスケープフラグを０に等しく設定し、ビットストリームにおいてエスケープフラグを示すものを符号化することができる。ビデオエンコーダ２０はまた、パレットコーディングモードを使用してブロックを符号化するが、エスケープサンプルを符号化することはない（３２０）。たとえば、ビデオエンコーダ２０は、ＣｏｐｙＦｒｏｍＴｏｐモードまたはＶａｌｕｅモードを使用してブロックのパレットインデックスを符号化し、そのようなモードの使用と関連付けられるシンタックス、たとえば、モード、パレットインデックス、ランなどを示すシンタックスを符号化することができる。
【０２７４】
[0274]パレットサイズが１に等しいと決定したことに基づいて（ステップ３１６のｙｅｓの分岐）、ビデオエンコーダ２０は、ブロックのサンプルがエスケープサンプルとしてコーディングされないことを示すブロックレベルエスケープシンタックスを決定し、ビットストリームにおいてブロックレベルエスケープシンタックスを示すものを符号化することができる（３２２）。たとえば、ビデオエンコーダ２０は、ブロックレベルエスケープフラグを０に等しく設定し、ビットストリームにおいてエスケープフラグを示すものを符号化することができる。ビデオエンコーダ２０はまた、他のシンタックスを符号化することなく、ブロックのすべてのサンプルが同じインデックス値を有することを示すものを符号化する（３２４）。たとえば、ビデオエンコーダ２０は、パレットモードの使用と関連付けられるシンタックス、たとえば、モード、パレットインデックス、ランなどを示すシンタックスの符号化をスキップすることができる。
【０２７５】
[0275]図８は、本開示の技法に従った、ブロックのいずれかのサンプルがエスケープサンプルとして復号されるかどうかを示す１つまたは複数のブロックレベルシンタックス要素に基づいてビデオデータのブロックを復号するための例示的なプロセスを示すフローチャートである。図８のプロセスは全般に、説明を目的にビデオデコーダ３０によって実行されるものとして説明されるが、様々な他のプロセッサも図８に示されるプロセスを実行し得る。
【０２７６】
[0276]図８の例では、ビデオデコーダ３０は、ビデオデータのブロックを復号するためのパレットを決定する（３４０）。いくつかの例では、ビデオデコーダ３０は、たとえば復号されているビットストリームにおいてシグナリングされるパレット予測子を使用して、１つまたは複数の以前に符号化されたブロックのパレットベースのパレットを決定することができる。ビデオデコーダ３０はまた、パレットのサイズを決定することができる（３４２）。たとえば、ビデオデコーダ３０は、決定されたパレット中のエントリーの数を決定することができる。
【０２７７】
[0277]ビデオデコーダ３０は、パレットサイズが０であるかどうかを決定することができる（３４４）。パレットサイズが０に等しいことに基づいて（ステップ３４４のｙｅｓの分岐）、ビデオデコーダ３０は、ブロックの少なくとも１つのサンプルがエスケープサンプルとして符号化されることを示すブロックレベルエスケープシンタックスを決定することができる（３４６）。一例では、ビデオデコーダ３０は、ブロックレベルエスケープフラグが１に等しいと決定することができる。たとえば、ビデオデコーダ３０は、ビットストリームからフラグを復号することなくブロックレベルエスケープフラグが１に等しいと推測することができ、それは、ブロックレベルエスケープシンタックス要素が、パレットサイズが０より大きいときにだけビットストリームにおいてコーディングされ得るからである。ビデオデコーダ３０は次いで、ブロックのための他のシンタックス要素（たとえば、エスケープサンプルと関連付けられる色値以外の）を復号することなく、エスケープサンプルと関連付けられる色を使用してブロックのすべてのサンプルを復号する（３４８）。たとえば、上で述べられたように、ビデオデコーダ３０は、ブロックレベルエスケープフラグを示すものを復号しなくてよい。加えて、ビデオデコーダ３０は、パレットモード（たとえば、ＶａｌｕｅまたはＣｏｐｙＦｒｏｍＴｏｐ）を示すシンタックス、インデックス値を示すシンタックス、ランを決定することと関連付けられるシンタックス、および任意の他の関連するシンタックスなどの、ブロックのパレットインデックスのための他のデータを復号しなくてよい。
【０２７８】
[0278]パレットサイズが０ではない場合（ステップ３４４のｎｏの分岐）、ビデオデコーダ３０は、ビットストリームからブロックレベルエスケープシンタックスを復号し、ブロックレベルシンタックスの値を決定することができる（３５０）。たとえば、ビデオデコーダ３０は、ブロックレベルエスケープフラグを復号し、値が０に等しいか１に等しいかを決定することができる。
【０２７９】
[0279]ビデオデコーダ３０は次いで、たとえば復号されるシンタックスに基づいて、ブロックのいずれかのサンプルがエスケープサンプルとしてコーディングされるかどうかを決定することができる（３５２）。ブロックの少なくとも１つのサンプルがエスケープサンプルとして符号化されていると決定したことに基づいて（ステップ３５２のｙｅｓの分岐）、ビデオデコーダ３０は、パレットコーディングモードを用いてブロックを復号することができ、これは、ブロックの少なくとも１つのサンプルをエスケープサンプルとして復号することを含む（３５４）。ビデオデコーダ３０はまた、エスケープサンプルに対応する少なくとも１つの色値を復号することができる。
【０２８０】
[0280]サンプルがエスケープサンプルとして符号化されていないことに基づいて（ステップ３５２のｎｏの分岐）、ビデオデコーダ３０は、ブロックのためのパレットのパレットサイズが１に等しいかどうかを決定することができる（３５６）。パレットサイズが１に等しくないと決定したことに基づいて（ステップ３５６のｎｏの分岐）、ビデオデコーダ３０は、パレットコーディングモードを使用してブロックを復号することができるが、エスケープサンプルを復号することはない（３５８）。たとえば、ビデオデコーダ３０は、ＣｏｐｙＦｒｏｍＴｏｐモードまたはＶａｌｕｅモードを使用してブロックのパレットインデックスを復号し、そのようなモードの使用と関連付けられるシンタックス、たとえば、モード、パレットインデックス、ランなどを示すシンタックスを復号することができる。
【０２８１】
[0281]パレットサイズが１に等しいと決定したことに基づいて（ステップ３５６のｙｅｓの分岐）、ビデオデコーダ３０は、他のシンタックスを復号することなく、パレットのパレットエントリー（たとえば、パレット中に存在する唯一のエントリー）を使用してブロックを復号することができる（３６０）。たとえば、ビデオデコーダ３０は、パレットモードの使用と関連付けられるシンタックス、たとえば、モード、パレットインデックス、ランなどを示すシンタックスの復号をスキップすることができる。
【０２８２】
[0282]図９は、本開示の技法に従った、最大パレットサイズと最大パレット予測子サイズとを示す１つまたは複数のシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャートである。図９のプロセスは全般に、説明を目的にビデオエンコーダ２０によって実行されるものとして説明されるが、様々な他のプロセッサも図９に示されるプロセスを実行し得る。
【０２８３】
[0283]図９の例では、ビデオエンコーダ２０ツーは、パレットモードにおいてビデオデータの現在のブロックを符号化するためのパレットの最大サイズを決定することができる（３８０）。たとえば、ビデオエンコーダ２０は、符号化されているビデオデータの特性に基づいて、最大パレットサイズを決定するように構成され得る。いくつかの例では、ビデオエンコーダ２０は、データのビット深度（たとえば、入力ビット深度またはプロファイルビット深度）、ブロックのブロックサイズ、ビデオデータと関連付けられるプロファイルまたはレベルなどに基づいて、最大パレットサイズを決定することができる。
【０２８４】
[0284]ビデオエンコーダ２０はまた、現在のブロックのパレットを作成するためのパレット予測子の最大パレット予測子サイズを決定することができる（３８２）。たとえば、ビデオエンコーダ２０は、符号化されているビデオデータの特性に基づいて、最大パレット予測子サイズを決定するように構成され得る。いくつかの例では、ビデオエンコーダ２０は、データのビット深度（たとえば、入力ビット深度またはプロファイルビット深度）、ブロックのブロックサイズ、ビデオデータと関連付けられるプロファイルまたはレベルなどに基づいて、最大パレット予測子サイズを決定することができる。
【０２８５】
[0285]ビデオエンコーダ２０はまた、現在のブロックを含むビットストリームにおいて、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータを符号化する（３８６）。いくつかの例では、ビデオエンコーダ２０は、１つまたは複数の他の値に対する相対的な最大パレットサイズおよび／または最大パレット予測子サイズを示すデータを符号化することができる。たとえば、本開示の態様によれば、ビデオエンコーダ２０は、最大パレット予測子サイズと最大パレットサイズとのデルタ（たとえば、差分）として最大パレット予測子サイズを示すデータをコーディングするように構成され得る。
【０２８６】
[0286]本開示の態様によれば、ビデオエンコーダ２０は、ＳＰＳにおいて最大パレットサイズおよび／または最大パレット予測子サイズを示す１つまたは複数のシンタックス要素を符号化することができる。他の例では、ビデオエンコーダ２０は、別のパラメータセット（たとえば、ＰＰＳ）において、現在のブロックを含むスライスのスライスヘッダにおいて、またはビットストリーム中の他の箇所でそのようなシンタックスを符号化することができる。
【０２８７】
[0287]ビデオエンコーダ２０はまた、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータに従って現在のブロックを符号化する（３８８）。たとえば、ビデオエンコーダ２０は、最大パレットサイズによって制限されるパレットおよび／または最大パレット予測子サイズによって制限されるパレット予測子を決定することができる。
【０２８８】
[0288]図１０は、本開示の技法に従った、最大パレットサイズと最大パレット予測子サイズとを示す１つまたは複数のシンタックス要素に基づいてビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャートである。図１０のプロセスは全般に、説明を目的にビデオデコーダ３０によって実行されるものとして説明されるが、様々な他のプロセッサも図１０に示されるプロセスを実行し得る。
【０２８９】
[0289]図１０の例では、ビデオデコーダ３０は、パレットモードで復号されている現在のブロックを含むビットストリームから、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータを復号する（４００）。いくつかの例では、ビデオエンコーダ２０は、１つまたは複数の他の値に対する相対的な最大パレットサイズおよび／または最大パレット予測子サイズを示すデータを符号化することができる。たとえば、本開示の態様によれば、ビデオエンコーダ２０は、最大パレット予測子サイズと最大パレットサイズとのデルタ（たとえば、差分）として最大パレット予測子サイズを示すデータをコーディングするように構成され得る。
【０２９０】
[0290]本開示の態様によれば、ビデオデコーダ３０は、ＳＰＳから最大パレットサイズおよび／または最大パレット予測子サイズを示す１つまたは複数のシンタックス要素を復号することができる。他の例では、ビデオデコーダ３０は、別のパラメータセット（たとえば、ＰＰＳ）から、現在のブロックを含むスライスのスライスヘッダから、またはビットストリーム中の他の箇所でそのようなシンタックスを復号することができる。
【０２９１】
[0291]ビデオデコーダ３０は、復号されたデータに基づいて、現在のブロックを復号するためのパレットの最大サイズを決定することができる（４０２）。ビデオデコーダ３０はまた、データに基づいて、現在のブロックのためのパレットを作成するためのパレット予測子の最大パレット予測子サイズを決定することができる（４０４）。ビデオデコーダ３０はまた、最大パレットサイズおよび／または最大パレット予測子サイズを示すデータに従って現在のブロックを復号する（４０８）。たとえば、ビデオデコーダ３０は、最大パレットサイズによって制限されるパレットおよび／または最大パレット予測子サイズによって制限されるパレット予測子を決定することができる。
【０２９２】
[0292]図１１は、本開示の技法に従った、最大可能ランレングスに基づいてピクセルのランのランレングスを示すデータをコーディング（符号化または復号）するための例示的なプロセスを示すフローチャートである。図１１のプロセスは全般に、説明を目的にビデオエンコーダ２０またはビデオデコーダ３０などのビデオコーダによって実行されるものとして説明されるが、様々な他のプロセッサも図１１に示されるプロセスを実行し得る。
【０２９３】
[0293]図１１の例では、ビデオコーダは、現在のピクセルをコーディングするためのパレットモードを決定することができる（４２０）。たとえば、ビデオコーダは、現在のピクセルがＣｏｐｙＦｒｏｍＴｏｐモードを使用してコーディングされるか、Ｖａｌｕｅモードを使用してコーディングされるか、または別のパレットベースのコーディングモードを使用してコーディングされるかを決定することができる。ビデオコーダはまた、現在のピクセルのためのランのランレングスを決定する（４２２）。たとえば、ビデオコーダは、現在のピクセルのパレットインデックスを用いてコーディングされているパレットインデックスの数を決定する。
【０２９４】
[0294]ビデオコーダはまた、ランのための最大ランレングスを決定する（４２４）。たとえば、ビデオコーダは、現在のピクセルのパレットインデックスを用いてコーディングされることが可能である、パレットインデックスの最大のランの最大ランレングスを決定することができる。ある例では、ビデオコーダは、ピクセルを含むビデオデータのブロック中のピクセルの数を決定することができる。ビデオコーダはまた、パレットインデックスを走査するために使用される走査順序に基づいて、ブロック中の現在のピクセルの位置を決定することができる。ビデオコーダは次いで、ブロック中のピクセルの数から現在のピクセルのピクセル位置を引き、さらに１を引いたものとして、最大ランレングスを決定する。
【０２９５】
[0295]ビデオコーダはまた、決定された最大ランレングスに基づいてランのランレングスを示すデータをコーディングする（４２６）。たとえば、本開示の態様によれば、ビデオコーダは、ＴＥＧｋ符号を使用してランレングスを示すデータをコーディングすることができる。
【０２９６】
[0296]例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なる順序で実行されてよく、全体的に追加され、統合され、または完全に除外され得る（たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。その上、いくつかの例では、行為またはイベントは、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを用いて、連続的にではなく同時に実行され得る。加えて、本開示の特定の態様は、明快にするために、単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技術は、ビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２９７】
[0297]本開示のいくつかの態様は、説明を目的に、開発中のＨＥＶＣ規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
【０２９８】
[0298]上で説明された技法は、ビデオエンコーダ２０（図１および図２）ならびに／またはビデオデコーダ３０（図１および図３）によって実行されてよく、ビデオエンコーダ２０とビデオデコーダ３０の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指し得る。
【０２９９】
[0299]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
【０３００】
[0300]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって処理され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、および／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０３０１】
[0301]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０３０２】
[0302]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素において完全に実装され得る。
【０３０３】
[0303]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々なコンポーネント、モジュール、またはユニットが説明されたが、それらは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
【０３０４】
[0304]様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを処理する方法であって、
ビデオデータのブロックのすべてのサンプルに対して、前記ブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定することと、
前記値に基づいてビデオデータの前記ブロックをコーディングすることと、
を備える方法。
［Ｃ２］
前記ブロックレベルシンタックス要素の前記値を決定することは、少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされることを示すブロックレベルエスケープフラグの値を決定することを備える、Ｃ１に記載の方法。
［Ｃ３］
ビデオデータの前記ブロックはビデオデータのコーディングユニット（ＣＵ）を備え、前記ブロックレベルエスケープフラグの前記値を決定することは、前記ＣＵのための前記ブロックレベルエスケープフラグの前記値を決定することを備える、Ｃ２に記載の方法。
［Ｃ４］
前記ＣＵのための前記パレットのパレットエントリーをコーディングすることと、
前記パレットの前記パレットエントリーをコーディングした後で、前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングすることと、
をさらに備える、Ｃ３に記載の方法。
［Ｃ５］
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングすることと、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングした後で、前記ＣＵのための前記パレットのパレットエントリーをコーディングすることと、
をさらに備える、Ｃ３に記載の方法。
［Ｃ６］
前記ＣＵのサイズに基づいて、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングすることをさらに備え、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングすることは、前記ＣＵの前記サイズが閾値のサイズを超えるとき、前記ブロックレベルエスケープフラグをコーディングすることのみを備える、Ｃ３に記載の方法。
［Ｃ７］
前記ブロックレベルシンタックス要素の前記決定された値は、前記ブロックのすべてのサンプルが前記パレットの少なくとも１つの色を用いてコーディングされることを示し、
前記方法は、
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズを決定することをさらに備え、
前記決定されたパレットサイズが１つのインデックスであることに基づいて、前記ブロックをコーディングすることは、前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記１つのインデックスに基づいて前記ブロックのすべてのサンプルをコーディングすることを備える、Ｃ１に記載の方法。
［Ｃ８］
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングすることは、前記ブロックのサンプルのパレットモードを示すデータ、前記ブロックのための前記パレットのインデックス値を示すデータ、および前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングすることを備える、Ｃ７に記載の方法。
［Ｃ９］
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズを決定することをさらに備え、
前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ブロックレベルシンタックス要素の前記値を決定することは、前記シンタックス要素の前記値を推測することを備え、前記ブロックレベルシンタックス要素の前記値を推測することは、前記ブロックレベルシンタックス要素の前記をコーディングすることなく、前記ブロックレベルシンタックス要素の前記値を決定することを備え、前記シンタックス要素の前記推測される値は、前記ブロックのすべてのサンプルが前記パレットに含まれない前記色に基づいてコーディングされることを示す、Ｃ１に記載の方法。
［Ｃ１０］
前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ブロックをコーディングすることは、前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットに含まれない前記色値を用いて前記ブロックのすべてのサンプルをコーディングすることを備える、Ｃ９に記載の方法。
［Ｃ１１］
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングすることは、前記ブロックのサンプルのパレットモードを示すデータ、前記ブロックのための前記パレットのパレットインデックスを示すデータ、および前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングすることを備える、Ｃ１０に記載の方法。
［Ｃ１２］
コーディングすることは符号化することを備え、前記値に基づいてビデオデータの前記ブロックを符号化することは、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて符号化されないことを、前記決定された値が示すことに基づいて、前記ブロックの前記サンプルのためのそれぞれのインデックス値を決定することと、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを特定し、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて符号化されることを、前記決定された値が示すことに基づいて、前記ブロックの前記サンプルのためのそれぞれのインデックス値を決定することと、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを識別し、前記それぞれのインデックス値のうちの１つはエスケープサンプルを示し、
符号化されるビットストリームの中で前記それぞれのインデックス値を符号化することと、
を備える、Ｃ１に記載の方法。
［Ｃ１３］
コーディングすることは復号することを備え、前記値に基づいてビデオデータの前記ブロックを復号することは、
符号化されたビットストリームから、前記ブロックのサンプルのためのそれぞれのインデックス値を取得することと、ここにおいて、前記それぞれのインデックス値は前記パレットのエントリーを特定し、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて復号されないことを、前記決定された値が示すことに基づいて、前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合することによって、前記サンプルの値を決定することと、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて復号されることを、前記決定された値が示すことに基づいて、前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合し、色の前記パレットに含まれない前記色値のための少なくとも１つの色値を復号することによって、前記サンプルの値を決定することと、
を備える、Ｃ１に記載の方法。
［Ｃ１４］
ビデオデータを処理するためのデバイスであって、
ビデオデータのサンプルのブロックを記憶するように構成されるメモリと、
１つまたは複数のプロセッサと、を備え、前記１つまたは複数のプロセッサは、
ビデオデータのブロックのすべてのサンプルに対して、前記ブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定し、
前記値に基づいてビデオデータの前記ブロックをコーディングする
ように構成される、デバイス。
［Ｃ１５］
前記ブロックレベルシンタックス要素の前記値を決定するために、前記１つまたは複数のプロセッサは、少なくとも１つのそれぞれのサンプルがエスケープサンプルとしてコーディングされることを示すブロックレベルエスケープフラグの値を決定するように構成される、Ｃ１４に記載のデバイス。
［Ｃ１６］
ビデオデータの前記ブロックはビデオデータのコーディングユニット（ＣＵ）を備え、前記ブロックレベルエスケープフラグの前記値を決定するために、前記１つまたは複数のプロセッサは、前記ＣＵのための前記ブロックレベルエスケープフラグの前記値を決定するように構成される、Ｃ１５に記載のデバイス。
［Ｃ１７］
前記１つまたは複数のプロセッサはさらに、
前記ＣＵのための前記パレットのパレットエントリーをコーディングし、
前記パレットの前記パレットエントリーをコーディングした後で、前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングするように構成される、Ｃ１６に記載のデバイス。
［Ｃ１８］
前記１つまたは複数のプロセッサはさらに、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングし、
前記ＣＵのための前記ブロックレベルエスケープフラグをコーディングした後で、前記ＣＵのための前記パレットのパレットエントリーをコーディングするように構成される、Ｃ１６に記載のデバイス。
［Ｃ１９］
前記１つまたは複数のプロセッサはさらに、前記ＣＵのサイズに基づいて、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングするように構成され、前記ＣＵのための前記ブロックレベルエスケープフラグを条件的にコーディングするために、前記１つまたは複数のプロセッサは、前記ＣＵの前記サイズが閾値のサイズを超えるとき、前記ブロックレベルエスケープフラグをコーディングすることのみを行うように構成される、Ｃ１６に記載のデバイス。
［Ｃ２０］
前記ブロックレベルシンタックス要素の前記決定された値は、前記ブロックのすべてのサンプルが前記パレットの少なくとも１つの色を用いてコーディングされることを示し、前記１つまたは複数のプロセッサはさらに、
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズを決定するように構成され、
前記決定されたパレットサイズが１のインデックスであることに基づいて、前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記１のインデックスに基づいて前記ブロックのすべてのサンプルをコーディングするように構成される、Ｃ１４に記載のデバイス。
［Ｃ２１］
前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックのサンプルのパレットモードを示すデータ、前記ブロックのための前記パレットのインデックス値を示すデータ、および前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングするように構成される、Ｃ２０に記載のデバイス。
［Ｃ２２］
前記１つまたは複数のプロセッサはさらに、
前記ブロックのための前記パレットのパレットインデックスの数を示すパレットサイズを決定するように構成され、
前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ブロックレベルシンタックス要素の前記値を決定するために、前記１つまたは複数のプロセッサは、前記ブロックレベルシンタックス要素の前記をコーディングすることなく、前記ブロックレベルシンタックス要素の前記値を決定することを含む、前記シンタックス要素の前記値を推測するように構成され、前記シンタックス要素の前記推測される値は、前記ブロックのすべてのサンプルが前記パレットに含まれない前記色に基づいてコーディングされることを示す、Ｃ１４に記載のデバイス。
［Ｃ２３］
前記決定されたパレットサイズが０のインデックスであることに基づいて、前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックのためのパレットインデックスを示す、前記ブロックのためのいずれの他のシンタックスもコーディングすることなく、前記パレットに含まれない前記色値を用いて前記ブロックのすべてのサンプルをコーディングするように構成される、Ｃ２２に記載のデバイス。
［Ｃ２４］
前記ブロックのためのパレットインデックスを示す前記ブロックのためのいずれの他のシンタックスもコーディングすることなく前記ブロックをコーディングするために、前記１つまたは複数のプロセッサは、前記ブロックのサンプルのパレットモードを示すデータ、前記ブロックのための前記パレットのパレットインデックスを示すデータ、および前記パレットのパレットインデックスのランを示すデータのうちの少なくとも１つをコーディングすることなく、前記ブロックをコーディングするように構成される、Ｃ２３に記載のデバイス。
［Ｃ２５］
コーディングするために、前記１つまたは複数のプロセッサは符号化するように構成され、前記値に基づいてビデオデータの前記ブロックを符号化するために、前記１つまたは複数のプロセッサは、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて符号化されないことを、前記決定された値が示すことに基づいて、前記ブロックの前記サンプルのためのそれぞれのインデックス値を決定し、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを特定し、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて符号化されることを、前記決定された値が示すことに基づいて、前記ブロックの前記サンプルのためのそれぞれのインデックス値を決定し、ここにおいて、前記それぞれのインデックス値は前記パレットのそれぞれのエントリーを識別し、前記それぞれのインデックス値のうちの１つはエスケープサンプルを示し、
符号化されるビットストリームの中で前記それぞれのインデックス値を符号化するように構成される、Ｃ１４に記載のデバイス。
［Ｃ２６］
コーディングするために、前記１つまたは複数のプロセッサは復号するように構成され、前記値に基づいてビデオデータの前記ブロックを復号するために、前記１つまたは複数のプロセッサは、
符号化されたビットストリームから、前記ブロックのサンプルのためのそれぞれのインデックス値を取得し、ここにおいて、前記それぞれのインデックス値は前記パレットのエントリーを特定し、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて復号されないことを、前記決定された値が示すことに基づいて、前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合することによって、前記サンプルの値を決定し、
前記ブロックの少なくとも１つのそれぞれのサンプルが、色の前記パレットに含まれていない前記少なくとも１つのそれぞれのサンプルの前記色値に基づいて復号されることを、前記決定された値が示すことに基づいて、前記それぞれのインデックス値を前記パレットの前記エントリーの少なくとも１つと照合し、色の前記パレットに含まれない前記色値のための少なくとも１つの色値を復号することによって、前記サンプルの値を決定するように構成される、Ｃ１４に記載のデバイス。
［Ｃ２７］
前記復号されたブロックを表示するように構成されるディスプレイをさらに備える、Ｃ２６に記載のデバイス。
［Ｃ２８］
前記デバイスは、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイスの少なくとも１つを備える、Ｃ１４に記載のデバイス。
［Ｃ２９］
ビデオデータを処理するための装置であって、
ビデオデータのブロックのすべてのサンプルに対して、前記ブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定するための手段と、
前記値に基づいてビデオデータの前記ブロックをコーディングするための手段と、
を備える、装置。
［Ｃ３０］
実行されると、１つまたは複数のプロセッサに、
ビデオデータのブロックのすべてのサンプルに対して、前記ブロックの少なくとも１つのそれぞれのサンプルが、ビデオデータの前記ブロックをコーディングするための色のパレットに含まれていない前記少なくとも１つのそれぞれのサンプルの色値に基づいてコーディングされるかどうかを示す、ブロックレベルシンタックス要素の値を決定させ、
前記値に基づいてビデオデータの前記ブロックをコーディングさせる命令を記憶した、非一時的コンピュータ可読媒体。
【図１】
0006594903.tif 000008
【図２】
0006594903.tif 000009
【図３】
0006594903.tif 000010
【図４】
0006594903.tif 000011
【図５】
0006594903.tif 000012
【図６】
0006594903.tif 000013
【図７】
0006594903.tif 000014
【図８】
0006594903.tif 000015
【図９】
0006594903.tif 000016
【図１０】
0006594903.tif 000017
【図１１】
0006594903.tif 000018