(57)【要約】  パレットベースのコーディングでは、ビデオコーダは、所与のブロックのビデオデータを表す色のテーブルとして、いわゆる「パレット」を形成することができる。ビデオコーダは、ビデオデータの現在のブロックの１つまたは複数のピクセル値についてのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すパレット中のエントリーを示す。本技法によれば、ビデオデコーダは、現在のパレットにコピーされる予測パレット中の１つまたは複数のパレットエントリーと、現在のパレットに含まれる、予測パレット中にはない新たなパレットエントリーの数とを決定する。ビデオコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成する。
2016529783.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することとを備える、方法。
【請求項２】
前記予測パレットを生成することが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成することを備える、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序において隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、請求項２に記載の方法。
【請求項４】
前記現在のパレットにコピーされる前記予測パレット中の前記１つまたは複数のパレットエントリーを決定することが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す１つまたは複数のシンタックス要素をコーディングすることを備える、請求項１に記載の方法。
【請求項５】
前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項４に記載の方法。
【請求項６】
前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項４に記載の方法。
【請求項７】
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を決定することが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素をコーディングすることを備え、前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの１つを使用してコーディングされる、請求項１に記載の方法。
【請求項８】
前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることをさらに備える、請求項１に記載の方法。
【請求項９】
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することが、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結することを備える、請求項１に記載の方法。
【請求項１０】
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記１つまたは複数のパレットエントリーのコピーを無効にすることをさらに備える、請求項１に記載の方法。
【請求項１１】
前記現在のブロックの前記１つまたは複数のピクセル値のための前記インデックス値を決定することが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中に対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、請求項１に記載の方法。
【請求項１２】
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を決定することが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、請求項１に記載の方法。
【請求項１３】
ビデオデータをコーディングする前記方法がビデオデータを復号する方法を備え、前記方法が、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を受け取ることとを備える、請求項１に記載の方法。
【請求項１４】
ビデオデータをコーディングする前記方法がビデオデータを符号化する方法を備え、前記方法が、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を送信することとを備える、請求項１に記載の方法。
【請求項１５】
ビデオデータをコーディングするための装置であって、
ビデオデータを記憶するメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を行うように構成される、装置。
【請求項１６】
前記プロセッサが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成するように構成される、請求項１５に記載の装置。
【請求項１７】
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序で隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、請求項１６に記載の装置。
【請求項１８】
前記プロセッサが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す、１つまたは複数のシンタックス要素をコーディングするように構成される、請求項１５に記載の装置。
【請求項１９】
前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項１８に記載の装置。
【請求項２０】
前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項１８に記載の装置。
【請求項２１】
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素をコーディングするように構成され、前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの１つを使用してコーディングされる、請求項１５に記載の装置。
【請求項２２】
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングするように構成される、請求項１５に記載の装置。
【請求項２３】
前記プロセッサが、前記現在のパレットを生成するために、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結するように構成される、請求項１５に記載の装置。
【請求項２４】
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記プロセッサが、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記１つまたは複数のパレットエントリーのコピーを無効にするように構成される、請求項１５に記載の装置。
【請求項２５】
前記プロセッサが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中の対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項１５に記載の装置。
【請求項２６】
前記プロセッサが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項１５に記載の装置。
【請求項２７】
前記装置が、ビデオデータを復号するためのビデオ復号デバイスを備え、前記プロセッサが、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を受け取ることと、を行うように構成される、請求項１５に記載の装置。
【請求項２８】
ビデオデータを符号化するためのビデオ符号化デバイスを備え、前記プロセッサが、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を送信することと、を行うように構成される、請求項１５に記載の装置。
【請求項２９】
ビデオデータをコーディングするための装置であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定するための手段と、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定するための手段と、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算するための手段と、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成するための手段と、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定するための手段とを備える、装置。
【請求項３０】
非一時的コンピュータ可読媒体であって、実行されたときに、１つまたは複数のプロセッサに、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を実行させる命令を記憶している、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１３年７月１２日に出願された米国仮出願第６１／８４５，８２４号、２０１３年１１月１日に出願された米国仮出願第６１／８９９，０４８号、および２０１３年１２月６日に出願された米国仮出願第６１／９１３，０４０号の利益を主張する。
【０００２】
[0002]本開示は、ビデオの符号化および復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ  １０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中のＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているもののような、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実施することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および／または記憶することができる。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライスにおけるビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データ（residual data）は、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差を示す残差データに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に２次元アレイで構成される量子化された係数は、係数の１次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコーディングが適用されてよい。
【０００６】
[0006]マルチビューコーディングビットストリームは、たとえば、複数の視点からのビューを符号化することによって生成され得る。マルチビューコーディング態様を利用するいくつかの３次元（３Ｄ）ビデオ規格が開発されている。たとえば、異なるビューは、３Ｄビデオをサポートするために左目のビューと右目のビューとを伝えることができる。あるいは、いくつかの３Ｄビデオコーディング処理は、いわゆるマルチビュープラス深度コーディング（multiview plus depth coding）を適用することができる。マルチビュープラス深度コーディングでは、３Ｄビデオビットストリームは、テクスチャビュー成分だけではなく深度ビュー成分も含み得る。たとえば、各ビューは、１つのテクスチャビュー成分と１つの深度ビュー成分とを備え得る。
【発明の概要】
【０００７】
[0007]本開示の技法は、パレットベースのビデオコーディングに関する。パレットベースのコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、特定の領域（たとえば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆる「パレット（palette）」を形成することができる。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の１つまたは複数のためのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。ビデオデータの現在のブロックのための現在のパレットは、明示的に符号化されてビデオデコーダに送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
【０００８】
[0008]現在のブロックのための現在のパレットを生成するための本開示で説明される技法によれば、ビデオデコーダはまず、現在のパレットにコピーされる予測パレット中の１つまたは複数のパレットエントリーを決定し、次いで、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、ビデオデコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダは、現在のブロックのための現在のパレットを生成するために、同様の技法を実行することができる。加えて、ビデオエンコーダは、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダに送ることができる。本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。
【０００９】
[0009]一例では、本開示はビデオデータをコーディングする方法を対象とし、この方法は、ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの１つまたは複数を決定することと、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定することと、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算することと、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成することとを備える。方法はさらに、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することを備える。
【００１０】
[0010]別の例では、本開示はビデオデータをコーディングするための装置を対象とし、この装置は、ビデオデータを記憶するメモリと、１つまたは複数のプロセッサとを備え、１つまたは複数のプロセッサは、ピクセル値を示すパレットエントリーを含む予測パレットを生成し、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの１つまたは複数を決定し、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定し、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成するように構成される。プロセッサはさらに、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定するように構成される。
【００１１】
[0011]別の例では、本開示はビデオデータをコーディングするための装置を対象とし、この装置は、ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの１つまたは複数を決定するための手段と、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定するための手段と、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算するための手段と、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成するための手段と、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定するための手段とを備える。
【００１２】
[0012]さらなる例では、本開示は命令を記憶した非一時的コンピュータ可読媒体を対象とし、この命令は、実行されると、１つまたは複数のプロセッサに、ピクセル値を示すパレットエントリーを含む予測パレットを生成させ、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの１つまたは複数を決定させ、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定させ、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算させ、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成させ、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定させる。
【００１３】
[0013]本開示の１つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】[0014]本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】[0015]本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【図３】[0016]本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。
【図４】[0017]本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図。
【図５】[0018]本開示の技法に従った、ビデオブロックのためのパレットに対するインデックスを決定する例を示す概念図。
【図６】[0019]本開示の技法に従った、クロマ成分のために適応的にダウンサンプリングされたルーマ成分に対するパレットインデックスのランを使用してビデオブロックの幾何学的エッジを決定することの例を示す、概念図。
【図７】[0020]本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを符号化するための例示的なプロセスを示すフローチャート。
【図８】[0021]本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを復号するための例示的なプロセスを示すフローチャート。
【図９】[0022]本開示の技法に従った、パレットベースのコーディングのためのパレットを生成するための例示的なプロセスを示すフローチャート。
【発明を実施するための形態】
【００１５】
[0023]本開示は、ビデオコーディングおよび圧縮のための技法を含む。具体的には、本開示は、ビデオデータのパレットベースのコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
【００１６】
[0024]しかしながら、リモートデスクトップ、協調作業、およびワイヤレスディスプレイのような用途では、コンピュータにより生成されたスクリーンコンテンツ（たとえば、テキストまたはコンピュータグラフィックスのような）は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【００１７】
[0025]本開示は、スクリーンにより生成されたコンテンツのコーディングに特に好適であり得る、パレットベースのコーディングを説明する。たとえば、ビデオデータのある特定の領域が、比較的少数の色を有すると仮定すると、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定の領域（たとえば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆる「パレット」を形成することができる。たとえば、パレットは、所与のブロック中の最も支配的なピクセル値を含み得る。いくつかの場合、最も支配的なピクセル値は、ブロック内で最も頻繁に現れる１つまたは複数のピクセル値を含み得る。加えて、いくつかの場合、あるピクセル値がブロック中の最も支配的なピクセル値の１つとして含まれるかどうかを定義するために、閾値が適用され得る。本開示によれば、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の１つまたは複数を示すインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。
【００１８】
[0026]たとえば、ビデオエンコーダは、ブロックのためのパレットを決定し（たとえば、パレットを明示的にコーディングする、パレットを予測する、またはこれらの組合せ）、ピクセル値の１つまたは複数を表すためのパレット中のエントリーを見つけ、ブロックのピクセル値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。いくつかの例では、ビデオエンコーダは、符号化されたビットストリーム中でインデックス値をシグナリングすることができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
【００１９】
[0027]上の例は、パレットベースのコーディングの全般的な説明を与えることが意図されている。様々な例では、本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、または、パレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコーディングの効率を改善することができ、たとえば、スクリーンにより生成されたコンテンツを表すためにより少数のビットしか必要としない。
【００２０】
[0028]たとえば、ビデオデータの現在のブロックのための現在のパレットは、明示的に符号化されてビデオデコーダに送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。現在のブロックのための現在のパレットを生成するための本開示で説明される技法によれば、ビデオデコーダはまず、現在のパレットにコピーされる予測パレット中の１つまたは複数のパレットエントリーを決定し、次いで、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、ビデオデコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダは、現在のブロックのための現在のパレットを生成するために、同様の技法を実行することができる。加えて、ビデオエンコーダは、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダに送ることができる。
【００２１】
[0029]本開示のいくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、ビデオデータのインター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。いくつかの例では、パレットベースのコーディング技法は、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）の１つまたは複数のコーディングユニット（ＣＵ）モードにおいて使用するために構成され得る。他の例では、パレットベースのコーディング技法は、独立に、あるいは、他の既存のまたは今後のシステムまたは規格の一部として使用され得る。
【００２２】
[0030]High Efficiency Video Coding（ＨＥＶＣ）は、ITU-T Video Coding Experts Group（ＶＣＥＧ）およびISO/IEC Motion Picture Experts Group（ＭＰＥＧ）のJoint Collaboration Team on Video Coding（ＪＣＴ−ＶＣ）によって開発された新しいビデオコーディング規格である。「ＨＥＶＣ  Ｄｒａｆｔ  １０」または「ＷＤ１０」と呼ばれるＨＥＶＣ規格の最近のドラフトは、
http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipから入手可能である、文書ＪＣＴＶＣ−Ｌ１００３ｖ３４、Ｂｒｏｓｓ他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Last Call)」、Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11、第１２回会合：ジュネーブ、スイス、２０１３年１月１４〜２３日に記述されている。
【００２３】
[0031]ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、ＣＵモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００２４】
[0032]図１は、本開示の技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００２５】
[0033]図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス１４は、ソースデバイス１２によって生成された符号化されたビデオデータを復号することができる。したがって、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００２６】
[0034]ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００２７】
[0035]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信することができる。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化されたビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルのような通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、高周波（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路のような、ワイヤレスおよび／または有線の通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）のような、パケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００２８】
[0036]別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体のような、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００２９】
[0037]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶する、ファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【００３０】
[0038]宛先デバイス１４は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００３１】
[0039]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００３２】
[0040]図１に示されるビデオコーディングシステム１０は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および／または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【００３３】
[0041]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
【００３４】
[0042]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために、記憶媒体またはファイルサーバに記憶され得る。
【００３５】
[0043]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化されたビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４と一体化されてよく、またはその外部にあってよい。一般に、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスのような様々なディスプレイデバイスを備え得る。
【００３６】
[0044]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時に符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生し得るなど、ある時間の長さにわたって発生することがあり、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。したがって、ビデオデコーダ３０は、ある情報を「受信する」ものとして呼ばれ得るが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで発生するとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【００３７】
[0045]ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアのような、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス中の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれることがある。
【００３８】
[0046]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣドラフト１０に記載されるＨＥＶＣ規格のような、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
【００３９】
[0047]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCb、およびＳCrと示される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルとも呼ばれ得る。他の例では、ピクチャは、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
【００４０】
[0048]ピクチャの符号化された表現を生成するために、ビデオエンコーダ２０はコーディングツリーユニット（ＣＴＵ）のセットを生成し得る。各ＣＴＵは、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするのに使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎのブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）とも呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣのような、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。コーディングされたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコーディングされたＣＴＵを含み得る。
【００４１】
[0049]本開示は、サンプルの１つまたは複数のブロックのサンプルをコーディングするために使用される１つまたは複数のサンプルブロックとシンタックス構造とを指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックは、ＣＴＵ、ＣＵ、ＰＵ、変換ユニット（ＴＵ）、マクロブロック、マクロブロック区分などを含み得る。いくつかの状況では、ＰＵの論述は、マクロブロックまたはマクロブロック区分の論述と交換され得る。
【００４２】
[0050]コーディングされたＣＴＵを生成するために、ビデオエンコーダ２０は、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのＮ×Ｎのブロックである。ＣＵは、ルーマサンプルアレイと、ＣｂサンプルアレイおよびＣｒサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００４３】
[0051]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するために、イントラ予測またはインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成することができる。
【００４４】
[0052]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成することができる。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用することができる。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００４５】
[0053]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測ブロック（たとえば、予測ルーマブロック、Ｃｂブロック、およびＣｒブロック）を生成した後で、ビデオエンコーダ２０は、ＣＵのための残差ブロックを生成することができる。ＣＵの残差ブロック中の各サンプルは、ＣＵのＰＵの予測ブロック中のサンプルと、ＣＵのコーディングブロック中の対応するサンプルとの差を示し得る。たとえば、ビデオエンコーダ２０は、ＣＵのためのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの差を示す。さらに、ビデオエンコーダ２０はＣＵのＣｂ残差ブロックを生成することができる。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの差を示し得る。ビデオエンコーダ２０はまた、ＣＵのＣｒ残差ブロックを生成することができる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの差を示し得る。
【００４６】
[0054]さらに、ビデオエンコーダ２０は、４分木区分を使用して、ＣＵの残差ブロック（たとえば、ルーマ残差ブロック、Ｃｂ残差ブロック、およびＣｒ残差ブロック）を、１つまたは複数の変換ブロック（たとえば、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック）に分解することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するのに使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロックと関連付けられ得る。ＴＵと関連付けられたルーマ変換ブロックは、ＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００４７】
[0055]ビデオエンコーダ２０は、変換ブロックに１回または複数回の変換を適用して、ＴＵの係数ブロックを生成することができる。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。たとえば、ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、１つまたは複数の変換をＴＵのルーマ変換ブロックに適用することができる。ビデオエンコーダ２０は、ＴＵのＣｂ変換ブロックに１回または複数回の変換を適用して、ＴＵのＣｂ係数ブロックを生成することができる。ビデオエンコーダ２０は、ＴＵのＣｒ変換ブロックに１回または複数回の変換を適用して、ＴＵのＣｒ係数ブロックを生成することができる。
【００４８】
[0056]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化することができる。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を実行することができる。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。ビットストリームはまた、エントロピー符号化されないシンタックス要素を含み得る。
【００４９】
[0057]ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連付けられるデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）ユニットを備え得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって規定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの例では、ＲＢＳＰは０ビットを含む。
【００５０】
[0058]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコーディングされたスライスのためのＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットは補足エンハンスメント情報（ＳＥＩ）のためのＲＢＳＰをカプセル化することができ、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰではなく）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれ得る。
【００５１】
[0059]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信することができる。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を取得することができる。たとえば、ビデオデコーダ３０は、ビットストリームを解析して、ビットストリームからシンタックス要素を復号することができる。ビデオデコーダ３０は、ビットストリームから取得された（たとえば、復号された）シンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築することができる。ビデオデータを再構築するための処理は、全般に、ビデオエンコーダ２０によって実行される処理の逆であり得る。たとえば、ビデオデコーダ３０は、ＰＵのＭＶを使用して、現在のＣＵのＰＵの予測サンプルブロック（すなわち、予測ブロック）を決定することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ３０は、現在のＣＵのＰＵの予測サンプルブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構築することができる。ピクチャの各ＣＵのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築することができる。
【００５２】
[0060]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定の領域（たとえば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆるパレットをコーディングすることができる。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の１つまたは複数のためのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。
【００５３】
[0061]一例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定し、ブロックの１つまたは複数のピクセルの値を表す値を有するパレット中のエントリーを見つけ、ブロックの１つまたは複数のピクセル値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。いくつかの例では、ビデオエンコーダ２０は、符号化されたビットストリームにおいてインデックス値をシグナリングすることができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
【００５４】
[0062]別の例では、ビデオエンコーダ２０は、ブロックのための予測残差値を決定し、ブロックのためのパレットを決定し、予測残差値の１つまたは複数の値を表す値を有するパレット中のエントリーを見つけ、ブロックのための予測残差値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレット、さらにはブロックの予測残差値のためのインデックス値を取得することができる。ビデオデコーダ３０は、ブロックの予測残差値を再構築するために、予測残差値のインデックス値をパレットのエントリーと関連付けることができる。予測残差値は、ブロックのピクセル値を再構築するために、（たとえば、イントラ予測またはインター予測を使用して取得された）予測値に加算され得る。
【００５５】
[0063]以下でより詳細に説明されるように、パレットベースのコーディングの基本的な考えは、コーディングされるべきビデオデータの所与のブロックについて、現在のブロック中の最も支配的なピクセル値を含むパレットが導出されるというものである。たとえば、パレットは、現在のＣＵに対して支配的である、および／またはそれを表すと考えられる、いくつかのピクセル値を指し得る。ビデオエンコーダ２０はまず、パレットのサイズと要素とをビデオデコーダ３０に送信することができる。ビデオエンコーダ２０は、ある走査順序に従って、所与のブロック中のピクセル値を符号化することができる。所与のブロック中の各ピクセルロケーションについて、ビデオエンコーダ２０は、そのピクセルロケーションにおけるピクセル値がパレットに含まれるかどうかを示すために、フラグまたは他のシンタックス要素を送信することができる。そのピクセル値がパレット中にある（すなわち、そのピクセル値を規定するパレットエントリーが存在する）場合、ビデオエンコーダ２０は、所与のブロック中のピクセルロケーションのためのピクセル値と関連付けられるインデックス値を、またそれに続いて、所与のブロック中の同様の値の連続的なピクセル値の「ラン（run）」をシグナリングすることができる。この場合、ビデオエンコーダ２０は、「ラン（run）」によって包含される後続のピクセルロケーションのためのフラグまたはパレットインデックスを送信せず、それは、それらがすべて同じピクセル値を有するからである。
【００５６】
[0064]ピクセル値がパレット中にない（すなわち、ピクセル値を規定するパレットエントリーが存在しない）場合、ビデオエンコーダ２０は、所与のブロック中の所与のピクセルロケーションのためのピクセル値または残差値（またはそれらの量子化されたバージョン）を送信することができる。ビデオデコーダ３０はまず、ビデオエンコーダ２０から受け取られた情報に基づいてパレットを決定することができる。ビデオデコーダ３０は次いで、所与のブロックのピクセル値を再構築するために、所与のブロック中のピクセルロケーションと関連付けられる受け取られたインデックス値をパレットのエントリーにマッピングすることができる。
【００５７】
[0065]パレットベースのコーディングは、ある量のシグナリングオーバーヘッドを有し得る。たとえば、パレットのサイズのようなパレットの特性、さらにはパレット自体をシグナリングするために、いくつかのビットが必要とされ得る。加えて、ブロックのピクセルのインデックス値をシグナリングするために、いくつかのビットが必要とされ得る。本開示の技法は、いくつかの例では、そのような情報をシグナリングするために必要とされるビットの数を減らすことができる。たとえば、本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、または、パレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。本開示の特定の技法は、ビデオエンコーダ２０および／またはビデオデコーダ３０において実施され得る。
【００５８】
[0066]本開示の態様はパレット予測を対象とする。たとえば、本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第１のピクセル値を示す第１のセットのエントリーを有する第１のパレットを決定することができる。ビデオエンコーダ２０および／またはビデオデコーダ３０は次いで、第１のパレットの第１のセットのエントリーに基づいて、第２のパレットの第２のピクセル値を示す第２のセットのエントリーを決定することができる。ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、第２のパレットを使用して（たとえば、ピクセル値の第２のセットを使用して）ビデオデータのブロックのピクセルをコーディングすることができる。
【００５９】
[0067]第１のセットのエントリーに基づいて第２のパレットの第２のセットのエントリーを決定するとき、ビデオエンコーダ２０は、第２のパレットを再構築するためにビデオデコーダ３０によって使用され得る、様々なシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ２０は、パレット全体（または、別々のパレットを有するビデオデータの各々の色成分、たとえば、Ｙ、Ｃｂ、Ｃｒ、またはＹ、Ｕ、Ｖ、またはＲ、Ｇ、Ｂの場合、複数のパレット）が現在コーディングされているブロックの１つまたは複数の隣接ブロックから予測される（たとえば、コピーされる）ことを示すように、ビットストリーム中の１つまたは複数のシンタックス要素を符号化することができる。
【００６０】
[0068]現在のブロックの現在のパレットのエントリーが予測される際に元となる（たとえば、コピー元の）パレットは、予測パレットと呼ばれ得る。予測パレットは、空間的に隣接するブロックおよび／またはブロックの特定の走査順序で隣接するブロックを含む、１つまたは複数の隣接ブロックからのパレットのエントリーを含み得る。たとえば、隣接ブロックは、現在コーディングされているブロックの左（左の隣接ブロック）または上（上の隣接ブロック）に空間的に位置し得る。別の例では、ビデオエンコーダ２０は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコーディングするために使用される特定の走査順序に従って、現在コーディングされているブロックに隣接し得る。すなわち、隣接ブロックは、走査順序において現在のブロックの前にコーディングされる１つまたは複数のブロックであり得る。ビデオエンコーダ２０は、パレットがコピーされる際に元となる隣接ブロックのロケーションを示すように、１つまたは複数のシンタックス要素を符号化することができる。
【００６１】
[0069]いくつかの例では、パレット予測はエントリーごとに実行され得る。たとえば、ビデオエンコーダ２０は、予測パレットの各エントリーについて、所与のパレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０が現在のブロックのための現在のパレットのエントリーを埋めるために予測を使用しない場合、ビデオエンコーダ２０は、現在のブロックのための現在のパレット中の予測されないエントリー、さらにはそのようなエントリーの数を規定するために、１つまたは複数の追加のシンタックス要素を符号化することができる。
【００６２】
[0070]上で説明されたように、現在のブロック、たとえばＣＵまたはＰＵについて、そのパレット中のエントリーは、１つまたは複数の以前にコーディングされた隣接ブロックからのパレットエントリーを含む予測パレット中のエントリーから予測され得る。本開示は、現在のブロックのためのパレットを予測するためのいくつかの代替的な技法を説明する。
【００６３】
[0071]一例では、予測パレットは、ある数の、すなわちＮ個のエントリーを含む。この例では、ビデオエンコーダ２０はまず、予測パレットと同じサイズを有するバイナリベクトルＶ、すなわちサイズＮのベクトルを、ビデオデコーダ３０に送信する。バイナリベクトル中の各エントリーは、予測パレット中の対応するエントリーが現在のブロックのための現在のパレットに対して再使用またはコピーされるかどうかを示す。たとえば、ビデオエンコーダ２０は、バイナリベクトルを含む１つまたは複数のシンタックス要素を符号化することができる。いくつかの場合には、ビデオエンコーダ２０は、それぞれのパレットエントリーが現在のパレットにコピーされるかどうかを示す予測パレット中のパレットエントリーの各々に対する１ビットのフラグを含む、バイナリベクトルを符号化する。他の場合には、ビデオエンコーダ２０は、バイナリベクトル中のエントリーに関するインジケーションが１ビットフラグとして個々に送られる代わりに一緒に圧縮または結合される、無損失で圧縮されたバイナリベクトルを符号化する。このようにして、ビデオデコーダ３０は、現在のパレットにコピーされる予測パレット中のパレットエントリーの１つまたは複数を決定する。
【００６４】
[0072]加えて、ビデオエンコーダ２０は、どれだけの新たなエントリーが現在のブロックのためのパレットに含まれるかを示す数Ｍを送信し、次いで、新たなエントリーのためのピクセル値をビデオデコーダ３０に送信する。たとえば、ビデオエンコーダ２０は、単進コード（unary codes）、切り捨てられた単進コード（truncated unary codes）、指数ゴロム符号（Exponential-Golomb codes）、またはゴロムライス符号（Golomb-Rice codes）のうちの１つを使用して、現在のパレットに含まれる新たなパレットエントリーの数を示す１つまたは複数のシンタックス要素を符号化することができる。このようにして、ビデオデコーダ３０は、予測パレットには含まれないが現在のブロックのための現在のパレットには含まれる新たなパレットエントリーの数を決定する。
【００６５】
[0073]この例では、現在のブロックのための現在のパレットの最終的なサイズは、Ｍ＋Ｓに等しいものとして導出されてよく、Ｓは現在のブロックのためのパレットにおいて再使用される予測パレット中のエントリーの数である。ビデオデコーダ３０は、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計に等しいものとして、現在のパレットのサイズを計算することができる。現在のパレットのサイズが決定されると、ビデオデコーダ３０は、予測パレットからのコピーされたパレットエントリーとビデオエンコーダ２０から明示的にシグナリングされる新たなエントリーとを含む現在のパレットを生成する。
【００６６】
[0074]現在のブロックのためのパレットを生成するために、ビデオデコーダ３０は、受け取られたＭ個の新たなパレットエントリーと、予測パレットから再使用されているＳ個のコピーされたパレットエントリーとを統合することができる。いくつかの場合には、この統合はピクセル値に基づき得るので、たとえば別々のパレットが各成分について使用されるときには、現在のブロックのためのパレット中のエントリーはパレットインデックスとともに増大（または減少）し得る。他の場合には、この統合は、エントリーの２つのセット、すなわちコピーされたパレットエントリーおよび新たなパレットエントリーの連結であってよい。
【００６７】
[0075]別の例では、ビデオエンコーダ２０はまず、現在のブロックのためのパレットのサイズＮのインジケーションをビデオデコーダ３０に送信する。ビデオエンコーダ２０は次いで、現在のブロックのためのパレットと同じサイズを有するベクトルＶ、すなわちサイズＮのベクトルを、ビデオデコーダ３０に送信する。ベクトル中の各エントリーは、現在のブロックのためのパレット中の対応するエントリーがビデオエンコーダ２０によって明示的に送信されるかどうか、または予測パレットからコピーされるかどうかを示す。予測パレットからコピーされるエントリーについて、ビデオエンコーダ２０は、予測パレット中のどのエントリーが現在のブロックのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用することができる。いくつかの場合には、ビデオエンコーダ２０は、現在のブロックのためのパレットへと予測パレットからコピーされるべきエントリーを示す、パレットインデックスをシグナリングすることができる。他の場合には、ビデオエンコーダ２０はインデックスオフセットをシグナリングすることができ、インデックスオフセットは、現在のブロックのためのパレット中のインデックスと予測パレット中のインデックスとの差である。
【００６８】
[0076]２つの上の例では、現在のブロックのための現在のパレットの予測のために使用される予測パレットが形成される元である、１つまたは複数の以前にコーディングされた隣接ブロックは、現在のブロックの空間的な隣接ブロックおよび／またはブロックの特定の走査順序における現在のブロックの隣接ブロックであり得る。たとえば、隣接ブロックは、現在のブロックの上（すなわち、上の隣接ブロック）または左（すなわち、左の隣接ブロック）に空間的に位置し得る。いくつかの例では、隣接ブロックの候補リストが構築されてよく、ビデオエンコーダ２０は候補隣接ブロックの１つまたは複数を示すためにインデックスを送信し、関連付けられるパレットが予測パレットを形成するために使用される。
【００６９】
[0077]いくつかのブロック、たとえば、スライスの始端もしくは他のスライス境界にあるＣＵ、またはビデオデータのスライスもしくはピクチャの最も左のＣＵについて、パレット予測は無効にされ得る。たとえば、ビデオデータの現在のブロックが、ビデオデータのスライス中の最初のブロック、またはビデオデータのスライスもしくはピクチャの最も左のブロックのうちの１つを備えるときには、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のブロックのための現在のパレットへの予測パレット中のパレットエントリーのコピーを無効にすることができる。
【００７０】
[0078]追加の例では、ビデオエンコーダ２０は、現在のブロックのためのパレットに含まれるエントリーの数のインジケーションをビデオデコーダ３０に送信する。次いで、パレットエントリーの各々について、ビデオエンコーダ２０は、現在のブロックのためのパレットのパレットエントリーがビデオエンコーダ２０によって明示的に送信されるかどうか、またはパレットエントリーが以前に再構築されたピクセルから導出されるかどうかを示すために、フラグまたは他のシンタックス要素を送信する。以前に再構築されたピクセルから導出される現在のブロックのためのパレットのパレットエントリーの各々について、ビデオエンコーダ２０は、現在のブロック中の再構築されたピクセルのピクセルロケーションまたはパレットエントリーに対応する隣接ブロック中の再構築されたピクセルのピクセルロケーションに関する別のインジケーションを送信する。いくつかの場合には、再構築されたピクセルロケーションのインジケーションは、現在のブロックの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーションのインジケーションは、現在のブロックのためのパレットエントリーを規定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、ＨＥＶＣにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
【００７１】
[0079]いくつかの例では、パレット全体を予測するための技法は、パレットの１つまたは複数のエントリーを予測するための技法と組み合わされ得る。たとえば、ビデオエンコーダ２０は、現在のパレットが予測パレット（たとえば、最後のパレットコーディングされたブロックのためのパレット）から完全にコピーされるかどうかを示すように、ビットストリーム中の１つまたは複数のシンタックス要素を符号化することができる。これが当てはまらない場合、ビデオエンコーダ２０は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の１つまたは複数のシンタックス要素を符号化することができる。
【００７２】
[0080]いくつかの例では、パレットのサイズは、ビデオエンコーダ２０およびビデオデコーダ３０によって適用されるビデオコーディング規格において規定される不変の値であってよく、または、ビデオエンコーダ２０からビデオデコーダ３０にシグナリングされてよい。色成分の各々が別々のパレットを有する場合、ビデオエンコーダ２０は異なるパレットのサイズを別々にシグナリングすることができる。すべての色成分に対する単一のパレットの場合、ビデオエンコーダ２０はその単一のパレットの単一のサイズを符号化することができる。別の例では、エントリーの数とパレット値とをシグナリングする代わりに、ビデオエンコーダ２０は、各パレット値をシグナリングした後で、シグナリングされたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すために、フラグをシグナリングすることができる。ビデオエンコーダ２０は、パレットがすでにある最大のサイズに達している場合、そのような「エンドオブパレット（end of palette）」フラグをシグナリングしなくてよい。
【００７３】
[0081]ビデオエンコーダ２０は、パレット予測が有効にされるかどうか、および／またはアクティブであるかどうかを示すように、１つまたは複数のシンタックス要素を符号化することができる。例示を目的とする例では、ビデオエンコーダ２０は、各ブロック（たとえば、ＣＵまたはＰＵ）について、ビデオエンコーダ２０がそれぞれのブロックのためのパレットを予測するためにパレット予測を使用するかどうかを示すように、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを符号化することができる。いくつかの例では、ビデオエンコーダは、各々の色成分について別々のフラグ（たとえば、各ブロックについて３つのフラグ）をシグナリングすることができる。他の例では、ビデオエンコーダ２０は、ブロックのすべての色成分に適用可能である単一のフラグをシグナリングすることができる。
【００７４】
[0082]ビデオデコーダ３０は、符号化されたビットストリームから上で特定された情報を取得することができ、その情報を使用してパレットを再構築することができる。たとえば、ビデオデコーダ３０は、特定のパレットが別のパレットから予測されるかどうかを示すデータと、さらには、ビデオデコーダ３０が適切な予測パレットのエントリーを使用することを可能にする情報とを受信することができる。
【００７５】
[0083]いくつかの例では、追加で、または代替的に、ビデオエンコーダ２０および／またはビデオデコーダ３０は、「オンザフライ（on-the-fly）」で、すなわち動的に、パレットを構築することができる。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、コーディングの間にエントリーを空のパレットに追加することができる。すなわち、ビデオエンコーダ２０は、ピクセル値がブロック中の位置のために生成され送信されるにつれて、ピクセル値をパレットに追加することができる。ブロック中で相対的により後でコーディングされるピクセル（たとえば、以前に追加されパレット内でインデックスを付けられた値を有するピクセル）は、パレットのより前に追加されたエントリーを指してよく、たとえば、インデックス値はピクセル値を送信する代わりにピクセル値と関連付けられる。同様に、ブロック中のある位置のための新たなピクセル値を受信すると、ビデオデコーダ３０は、ビデオエンコーダ２０と同じプロセスをたどり、ピクセル値をパレットに含めることができる。このようにして、ビデオデコーダ３０は、ビデオエンコーダ２０と同じパレットを構築する。ビデオデコーダ３０は、パレットにすでに含まれている値を有するピクセルについて、ピクセル値を特定するインデックス値を受信することができる。ビデオデコーダ３０は、受信された情報、たとえばパレットに対するピクセル値とインデックス値とを使用して、ブロックのピクセルを再構築することができる。
【００７６】
[0084]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、固定されたサイズのパレットを保持し得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、最新の再構築されたピクセル値をパレットに追加することができる。パレットに追加される各エントリーについて、最も早くパレットに追加されたエントリーは棄却される。これは、First-in-First-out（ＦＩＦＯ）と呼ばれることがある。パレットを更新するこのプロセスは、パレットモードを使用してコーディングされるブロックのみに対して、または、コーディングモードとは無関係にすべてのブロックに対して適用され得る。
【００７７】
[0085]上で説明された技法は一般に、ビデオエンコーダ２０およびビデオデコーダ３０がパレットベースのコーディングのためのパレットを構築および／または送信することに関する。本開示の他の態様は、ビデオエンコーダ２０および／またはビデオデコーダ３０がピクセル値を決定することを可能にするマップを構築および／または送信することに関する。たとえば、本開示の他の態様は、ビデオデータのブロックのピクセル値を規定するパレット中のエントリーを示すインデックスのマップを構築および／または送信することに関する。
【００７８】
[0086]いくつかの例では、ビデオエンコーダ２０は、ブロックのピクセルがパレット中の対応する値を有するかどうかを示し得る。例示を目的とする例において、マップの（ｉ，ｊ）のエントリーがビデオデータのブロック中の（ｉ，ｊ）のピクセル位置に対応すると仮定する。この例では、ビデオエンコーダ２０は、ブロックの各ピクセル位置についてのフラグを符号化することができる。ビデオエンコーダ２０は、（ｉ，ｊ）ロケーションにおけるピクセル値がパレット中の値の１つであることを示すように、（ｉ，ｊ）のエントリーに対して１に等しいフラグを設定することができる。ピクセル値がパレットに含まれる（すなわち、フラグが１に等しい）とき、ビデオエンコーダ２０はまた、ピクセル値を規定するパレット中の対応するエントリーを特定する、（ｉ，ｊ）のエントリーに対するパレットインデックスを示すデータを符号化することができる。ピクセル値がパレットに含まれていない（すなわち、フラグが０に等しい）とき、ビデオエンコーダ２０はまた、ピクセルに対する（場合によっては量子化された）サンプル値を示すデータを符号化することができる。いくつかの場合には、パレットに含まれないピクセルは「エスケープピクセル（escape pixel）」と呼ばれる。
【００７９】
[0087]ビデオデコーダ３０は、符号化されたビットストリームから上で説明されたデータを取得し、そのデータを使用して、ブロック中の特定のロケーションに対するパレットインデックスおよび／またはピクセル値を決定することができる。たとえば、ビデオデコーダ３０は、現在のブロックのピクセル値の各々が現在のパレット中に対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素を復号し、現在のパレット中に対応するピクセル値を有する現在のブロックの１つまたは複数のピクセル値のためのインデックス値を示す１つまたは複数のシンタックス要素を復号し、現在のパレット中に対応するピクセル値を有しない現在のブロックの１つまたは複数のピクセル値のためのピクセル値を示す１つまたは複数のシンタックス要素を復号することができる。
【００８０】
[0088]いくつかの例では、所与の位置におけるピクセルがマッピングされるパレットインデックスと、隣接ピクセルが同じパレットインデックスにマッピングされる確率との相関であり得る。すなわち、ピクセルが特定のパレットインデックスにマッピングされるとき、１つまたは複数の（空間的なロケーションに関する）隣接ピクセルが同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
【００８１】
[0089]本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータのあるブロックの１つまたは複数のインデックスを、ビデオデータの同じブロックの１つまたは複数のインデックスに対して、決定しコーディングすることができる。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータのブロック中の第１のピクセルと関連付けられる第１のインデックス値を決定するように構成されてよく、第１のインデックス値は、第１のピクセルの値をパレットのエントリーに関連付ける。ビデオエンコーダ２０および／またはビデオデコーダ３０はまた、第１のインデックス値に基づいて、ビデオデータのブロック中の１つまたは複数の第２のピクセルと関連付けられる１つまたは複数の第２のインデックス値を決定し、ビデオデータのブロックの第１のピクセルと１つまたは複数の第２のピクセルとをコーディングするように構成され得る。したがって、この例では、マップのインデックスは、マップの１つまたは複数の他のインデックスに対してコーディングされ得る。
【００８２】
[0090]いくつかの例では、ビデオエンコーダ２０は、同じインデックス値にマッピングされる所与の走査順序の連続するピクセルの数を示す１つまたは複数のシンタックス要素を符号化することができる。同様の値のインデックス値の列は、本明細書では「ラン（run）」と呼ばれ得る。いくつかの例では、ピクセル値は、パレット中のちょうど１つのインデックス値と関連付けられ得る。したがって、いくつかの例では、値のランは、同様の値のピクセル値の列も指し得る。他の例では、下で有損失コーディングに関して説明されるように、２つ以上のピクセル値が、パレット中の同じインデックス値にマッピングされ得る。そのような例では、値のランは、同様の値のインデックス値を指す。このシナリオでは、デコーダ側で、同様の値のインデックス値のランが、インデックス値に対応するランのピクセル値のランに対応し得る。
【００８３】
[0091]例示を目的とする例では、所与の走査順序の２つの連続するインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するインデックスが同じ値を有するが、その走査順序の３番目のインデックスが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得することができ、シンタックス要素によって示されるデータを使用して、同じインデックス値を有する連続するピクセルロケーションの数を決定することができる。
【００８４】
[0092]いくつかの例では、現在のブロックのためのパレット中にあるピクセル値を有する現在のブロック中のすべてのピクセルロケーションは、連続的なピクセルロケーションにおいてピクセル値の「ラン」が後に続くパレットインデックスとともに符号化される。パレット中に１つのエントリーしかない場合、パレットインデックスまたは「ラン」の送信は、現在のブロックについては飛ばされ得る。現在のブロック中のピクセルロケーションの１つにおけるピクセル値がパレット中のピクセル値に対して厳密に一致しない場合、ビデオエンコーダ２０は、最も近いピクセル値を有するパレットエントリーの１つを選択し、元のピクセル値とパレットに含まれる予測ピクセル値との間の予測誤差または残差値を計算することができる。ビデオエンコーダ２０は、そのピクセルロケーションのための残差値を量子化し、符号化し、ビデオデコーダ３０に送信することができる。
【００８５】
[0093]ビデオデコーダ３０は次いで、対応する受け取られたパレットインデックスに基づいて、そのピクセルロケーションにおけるピクセル値を導出することができる。導出されたピクセル値および（ビデオエンコーダ２０から受け取られた）残差値は次いで、現在のブロック中のそのピクセルロケーションにおけるピクセル値を予測するために使用される。一例では、残差値は、ＨＥＶＣ  ｄｒａｆｔ  １０によって規定されるＨＥＶＣ方法を使用して、たとえば、残差４分木（ＲＱＴ）を適用して残差値を変換し、変換係数を量子化し、量子化された変換係数をエントロピー符号化して、符号化される。いくつかの場合には、残差値は変換を適用することなく直接量子化され得る。ある例として、ビデオデコーダ３０は、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を示す１つまたは複数のシンタックス要素を復号することができ、インデックス値は、予測ピクセル値として現在のパレット中の対応するピクセル値を特定し、現在のブロックの１つまたは複数のピクセル値と現在のパレット中の特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素を復号する。いくつかの場合には、上の例は有損失コーディングと呼ばれ得る。
【００８６】
[0094]追加で、または代替的に、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、マップの１つまたは複数のエントリーに対して線のコピーを実行することができる。エントリーはまた、マップのエントリーとブロックのピクセル位置との関係により、「位置（positions）」とも呼ばれ得る。線のコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ２０は、ブロック中の特定の位置に対するピクセル値またはインデックスマップ値が、（水平方向の走査では）その特定の位置の上の（たとえば、先行する）線における、または（垂直方向の走査では）その特定の位置の左の（たとえば、先行する）列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定の位置の線の上または左の列のピクセル値もしくはインデックスに等しい、走査順序の中のピクセル値またはインデックスの数を、ランとして示すことができる。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、規定された隣接する線（または垂直方向の走査のための列）から、および、現在コーディングされているブロックの線（または垂直方向の走査のための列）に対する規定された数のエントリーのために、ピクセル値またはインデックス値をコピーすることができる。
【００８７】
[0095]いくつかの例では、値のコピー元の線（または垂直方向の走査のための列）は、現在コーディングされている位置の線（または垂直方向の走査のための列）に直接隣接していてよく、たとえばその線の上または左にあってよい。他の例では、ブロックのある数の線が、ビデオエンコーダ２０および／またはビデオデコーダ３０によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コーディングされているマップの線のための予測値として使用され得る。同様の技法が、垂直方向の走査について、前の列に適用され得る。例示を目的とする例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ピクセルの現在の行をコーディングする前に、インデックスまたはピクセル値の以前の４つの行を記憶するように構成され得る。この例では、予測行（インデックスまたはピクセル値のコピー元の行）は、切り捨てられた単進コードまたは単進コードのような他のコードによって、ビットストリームにおいて示され得る。切り捨てられた単進コードに関して、ビデオエンコーダ２０および／またはビデオデコーダ３０は、水平方向の走査のための最大の行の計算値（たとえば、ｒｏｗ＿ｉｎｄｅｘ−１）または垂直方向の走査のための最大の列の計算値（たとえば、ｃｏｌｕｍｎ＿ｉｎｄｅｘ−１）に基づいて、切り捨てられた単進コードの最大値を決定することができる。加えて、コピーされる予測行からの位置の数のインジケーションも、ビットストリームに含まれ得る。いくつかの例では、現在の位置の予測元の線（または垂直方向の走査の場合は列）が別のブロック（たとえば、ＣＵまたＣＴＵ）に属する場合、そのような予測は無効にされ得る。
【００８８】
[0096]別の例として、ビデオエンコーダ２０は、「上の線の左半分からコピー」または「上の線の右半分からコピー」のような、現在コーディングされているマップの線にコピーすべき、隣接する線と隣接する線のエントリーの数または部分とを示す、命令をシグナリングすることができる。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、９０度、１８０度、もしくは２７０度回転されてよく、または上下もしくは左右が反転されてよい。したがって、ピクセル値またはインデックス値の２次元配列を１次元配列に変換するために、任意の走査が使用され得る。
【００８９】
[0097]エントリーのいわゆるランをコーディングするための技法が、上で説明された線のコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ２０は、マップ中のエントリーの値がパレットから取得されるかどうか、または、マップ中のエントリーの値がマップ中の以前にコーディングされた線から取得されるかどうかを示す、１つまたは複数のシンタックス要素（たとえば、フラグ）を符号化することができる。ビデオエンコーダ２０はまた、パレットのインデックス値または線（行または列）の中のエントリーのロケーションを示す１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、同じ値を共有する連続するエントリーの数を示す１つまたは複数のシンタックス要素を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップとピクセル値とを再構築することができる。
【００９０】
[0098]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向（たとえば、ブロックにおいて対角方向に４５度または１３５度）であり得る。いくつかの例では、ビデオエンコーダ２０は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する１つまたは複数のシンタックス要素を符号化することができる。加えて、または代替的に、走査方向は、一定値であり得るか、または、たとえばブロックサイズ、色空間、および／または色成分のようないわゆるサイド情報に基づいてシグナリングまたは推測され得る。ビデオエンコーダ２０は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックのすべての色成分に適用され得る。
【００９１】
[0099]いくつかの例では、ビデオエンコーダ２０は、所与の走査順序で同様の値のインデックス値のランをビデオデコーダ３０に送信しなくてよい。代わりに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップのエントリーを決定するために、ランの値を暗黙的に導出することができる。この場合、ビデオエンコーダ２０は、所与のインデックス値のランが現れることをビデオデコーダ３０にシグナリングすることができるが、ランの値はシグナリングしなくてよい。たとえば、ランの値は定数値であってよく、または、たとえばブロックサイズのようなコーディングされているビデオデータの現在のブロックのサイド情報に基づいて導出され得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分（高さの半分）、現在のブロックの幅および／もしくは高さの分数、または現在のブロックの幅および／もしくは高さの倍数に等しくてよい。いくつかの例では、ビデオエンコーダ２０は、高レベルのシンタックスを使用して、ランの値をビデオデコーダ３０にシグナリングすることができる。いくつかの例では、「高レベルのシンタックス」という語句は、たとえば、ピクチャパラメータセット（ＰＰＳ）、シーケンスパラメータセット（ＳＰＳ）、およびビデオパラメータセット（ＶＰＳ）のようなパラメータセット中のシンタックス、ならびにスライスヘッダ中のシンタックスを指す。
【００９２】
[0100]加えて、または代替的に、ビデオエンコーダ２０は、マップをビデオデコーダ３０に送信する必要もないことがある。代わりに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップに含まれるインデックス値の各々のランの開始の位置またはロケーションを暗黙的に導出することができる。一例では、ビデオエンコーダ２０および／またはビデオデコーダ３０によって適用されるビデオコーディング規格は、ランがある特定のロケーションにおいてのみ開始し得ると決定することができる。たとえば、ランは、各行の始端、または現在のブロックのＮ行ごとの始端においてのみ開始してよい。開始ロケーションは、異なる走査順序に対しては異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在のブロックのＮ列ごとの始端においてのみ開始してよい。別の例では、開始ロケーションは、現在のブロックのサイド情報に依存して導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、現在のブロックの各行および／もしくは各列の中間点、または現在のブロックの各行および／もしくは各列の分数であり得る。いくつかの例では、ビデオエンコーダ２０は、高レベルのシンタックスを使用して、開始位置をビデオデコーダ３０にシグナリングすることができる。
【００９３】
[0101]いくつかの例では、各々上で説明された、暗黙的な開始位置の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップ中の同様の値のインデックス値のランが２つの隣接する開始位置の間の距離に等しいと決定することができる。開始位置が現在のブロックの各行の始端（すなわち、最初の位置）である場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランの長さが現在のブロックの全体の行の長さに等しいと決定することができる。
【００９４】
[0102]以下でより詳細に説明されるいくつかの場合には、１つのパレットが、現在のブロック中の複数の色成分に対して生成され共有される。たとえば、現在のブロック中の各ピクセルロケーションについて、３つの色成分（たとえば、Ｙルーマ成分とＵクロマ成分およびＶクロマ成分の両方）中のピクセル値がベクトル（すなわち、色ベクトル）を形成し得る。次いで、現在のブロックを表すためにある数のベクトルを選択することによって、パレットが形成され得る。ルーマ成分のためにピクセル値のあるパレットを有し、クロマ成分のためにピクセル値の別のパレットを有することが可能であり得る。上でより詳細に説明された線のコピーも、単一のパレットとともに機能し得る。共有されたパレットによって、パレットエントリーは、（Ｙ，Ｕ，Ｖ）または（Ｙ，Ｃｂ，Ｃｒ）または（Ｒ，Ｇ，Ｂ）という３つの要素からなる組であり得る。この場合、各ピクセルロケーションのためのパレットインデックスは、走査が水平方向であれば上の行の、または走査が垂直方向であれば左の列のパレットインデックスと等しいものとしてシグナリングされ、そして、関連付けられる数のパレットインデックスがランに基づいて前の行または列からコピーされる。
【００９５】
[0103]２つ以上の色空間に対してパレットが共有される場合、または色空間の各々に対してパレットが別個である場合のいずれでも、色空間の間で幾何学的情報が共有され得る。クロマ成分は、４：２：２または４：２：０のサンプリングのような、事前に定義された方法でルーマ成分からダウンサンプリングされている可能性があるので、通常は、異なる色成分の中のコロケートされた（collocated）ブロックのエッジロケーションの間には高い相関がある。
【００９６】
[0104]たとえば、パレットベースのコーディングでは、現在のブロックのエッジがランを乱す（break the run）ので、現在のブロックの幾何学的情報を示すために、ランコーディング（run coding）が使用され得る。４：４：４のクロマフォーマットの場合、ランは１度だけ生成され、すべての色成分に対して使用され得る。ランは色成分の１つに基づいて生成されてよく、またはランは色成分の２つ以上を使用して生成されてよい。４：２：２のクロマフォーマットまたは４：２：０のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のためにダウンサンプリングされ得る。
【００９７】
[0105]本開示の技法はまた、パレットベースのコーディングの他の態様を含む。たとえば、本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットコーディングモードを使用してブロックがコーディングされることを示すように、各ブロックに対する１つまたは複数のシンタックス要素をコーディングすることができる。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０が、パレットベースのコーディングモードが特定のブロックをコーディングするために使用されるべきかどうかを示すように、パレットモードフラグ（ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇ）をコーディングすることができる。この例では、ビデオエンコーダ２０は、現在符号化されているブロック（「現在のブロック」）がパレットモードを使用して符号化されることを規定するために、１に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを符号化することができる。０に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、現在のブロックがパレットモードを使用して符号化されないことを規定する。この場合、ビデオデコーダ３０は、符号化されたビットストリームからＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを取得し、パレットベースのコーディングモードを適用してブロックを復号することができる。２つ以上の利用可能なパレットベースのコーディングモードがある（たとえば、コーディングのために利用可能な２つ以上のパレットベースの技法がある）例では、１つまたは複数のシンタックス要素は、ブロックのために複数の異なるパレットモードの１つを示すことができる。
【００９８】
[0106]いくつかの例では、ビデオエンコーダ２０は、現在のブロックがパレットモードを使用して符号化されないことを規定するために、０に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを符号化することができる。そのような例では、ビデオエンコーダ２０は、様々なインター予測モード、イントラ予測モード、または他のコーディングモードのいずれかを使用して、ブロックを符号化することができる。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇが０に等しいとき、ビデオエンコーダ２０は、それぞれのブロックを符号化するために使用される特定のモードを示すために、追加の情報（たとえば、シンタックス要素）を送信することができる。いくつかの例では、以下で説明されるように、モードは、ＨＥＶＣコーディングモード、たとえばＨＥＶＣ規格における通常のインター予測モードまたはイントラ予測モードであり得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの使用が、例を目的に説明される。他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコーディングモードが１つまたは複数のブロックのために使用されるべきかどうかを示すために、または、複数のモードのいずれが使用されるべきかを示すために、使用され得る。
【００９９】
[0107]パレットベースのコーディングモードが使用されるとき、パレットは、たとえば、本明細書で説明される技法の１つまたは複数を使用して、ビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリームの中で、ビデオエンコーダ２０によって送信される。パレットは、各ブロックについて送信されてよく、またはいくつかのブロックの間で共有されてよい。パレットは、ブロックについて支配的な、および／またはブロックを表現する、いくつかのピクセル値を指し得る。
【０１００】
[0108]たとえば、パレットに含まれるピクセル値の数によるパレットのサイズは、固定されていてよく、または、符号化されたビットストリーム中の１つまたは複数のシンタックス要素を使用してシグナリングされてよい。下でより詳細に説明されるように、ピクセル値は、たとえばコーディングのために使用される色空間に応じて、いくつかのサンプルから構成され得る。たとえば、ピクセル値は、ルーマサンプルとクロミナンスサンプル（たとえば、ルーマ、ＵクロミナンスおよびＶクロミナンス（ＹＵＶ）サンプル、または、ルーマ、Ｃｂクロミナンス、およびＣｒクロミナンス（ＹＣｂＣｒ）サンプル）とを含み得る。別の例では、ピクセル値は、赤、緑、および青（ＲＧＢ）のサンプルを含み得る。本明細書で説明されるように、ピクセル値という用語は一般に、ピクセルに寄与するサンプルの１つまたは複数を指し得る。すなわち、ピクセル値という用語は、ピクセルに寄与するすべてのサンプルを必ずしも指すとは限らず、ピクセルに寄与する単一のサンプル値を記述するために使用され得る。
【０１０１】
[0109]いくつかの例では、パレットは、特定のブロックの各々の色成分に対して別々に送信され得る。たとえば、ＹＵＶ色空間では、Ｙ成分（Ｙ値を表す）に対するパレット、Ｕ成分（Ｕ値を表す）に対する別のパレット、およびＶ成分（Ｖ値を表す）に対するさらに別のパレットがあってよい。別の例では、パレットは、特定のブロックのすべての成分を含み得る。この例では、パレット中のｉ番目のエントリーは３つの値（たとえば、Ｙi、Ｕi、Ｖi）を含み得る。本開示の態様によれば、１つまたは複数のシンタックス要素は、各成分（たとえば、Ｙ、Ｕ、Ｖなど）に対するパレットのサイズを別々に示し得る。他の例では、１つまたは複数のシンタックス要素がすべての成分のサイズを示すように、すべての成分に対して単一のサイズが使用され得る。
【０１０２】
[0110]ビデオエンコーダ２０および／またはビデオデコーダ３０は、有損失または無損失の方式で、パレットベースのコーディングを実行することができる。すなわち、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックのピクセル値と一致するパレットのエントリーを使用して（または、ピクセル値がパレットの中に含まれていない場合、実際のピクセル値を送ることによって）、ブロックのためのビデオデータを無損失でコーディングすることができる。他の例では、下で図５に関してより詳細に説明されるように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ブロックのピクセル値と厳密に一致しないパレットのエントリーを使用して、ブロックのためのビデオデータをコーディングすることができる（有損失コーディング）。同様に、実際のピクセル値がパレットに含まれない場合、実際のピクセル値は有損失の方式で量子化され得る。
【０１０３】
[0111]本開示で説明される技法によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測されるビデオブロックのパレットベースのコーディングを実行することができる。一例では、ビデオエンコーダ２０はまず、現在のブロック中のピクセル値に基づいて現在のブロックのためのパレットを導出し、現在のブロック中のピクセル値を符号化のためのパレットインデックスにマッピングする。このマッピングは、１対１（すなわち、無損失コーディングの場合）または複数対１（すなわち、有損失コーディングの場合）であってよい。ビデオエンコーダ２０はまた、現在のブロック中のピクセル値を予測するために使用される、以前にコーディングされたブロック中の参照ピクセル値をマッピングする。現在のブロックのピクセル値がパレットインデックスにマッピングされると、ビデオエンコーダ２０は、通常の符号化方法、たとえばＨＥＶＣ規格における通常のイントラコーディングを使用して、パレットインデックスを伴う現在のブロックを符号化することができる。
【０１０４】
[0112]上の例では、パレットインデックスを伴う現在のブロックは、ピクセル値を伴う元のブロックであるかのように扱われる。同様に、参照ピクセルのパレットインデックスは、パレットインデックスを伴う現在のブロックに対して通常のイントラ予測を実行するために使用される。ビデオエンコーダ２０は、予測誤差または残差値をビデオデコーダ３０に送信する。現在のブロックを符号化した後で、ビデオエンコーダ２０は、参照ピクセル、予測ピクセル、および残差値のインデックスを、現在のブロックの再構築および今後のブロックの普通の予測のために、ピクセル値へと変換し戻す。ビデオデコーダ３０は、ビットストリームから現在のブロックのための符号化された残差値を取得し、パレットインデックスを伴う現在のブロックを取得するために通常の復号方法を使用して現在のブロックを復号することができる。ビデオデコーダ３０は次いで、パレットインデックスと関連付けられるパレット中のピクセル値に基づいて、現在のブロックのピクセル値を決定することができる。
【０１０５】
[0113]別の例では、ビデオエンコーダ２０は、現在のブロックのためのパレットを生成することができ、このパレットは、所与のブロックのための予測残差値を示すエントリーを含む。所与のブロックのための予測残差値は、任意の予測モード、たとえばＨＥＶＣ規格における通常のインター予測またはイントラ予測を使用して生成され得る。所与のブロックのための予測残差値は、残差ピクセル値または残差変換係数値であり得る。いずれの場合でも、予測残差値は量子化され得る。この例では、ビデオエンコーダ２０は、現在のブロックのための予測残差値を、現在のブロックのための予測残差値を表すために使用される現在のブロックのためのパレット中のエントリーを示すインデックス値にマッピングし、インデックス値を使用して予測残差値を符号化する。ビデオデコーダ３０は、ビットストリームからインデックス値のブロックを取得し、インデックス値によって特定されるパレット中の対応する予測残差値に基づいて、現在のブロックのための予測残差値を決定することができる。ビデオデコーダ３０は次いで、予測残差値および以前にコーディングされた参照ピクセル値に基づいて、通常の復号方法を使用して現在のブロックのピクセル値を再構築することができる。
【０１０６】
[0114]いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、イントラ予測モードを適用することによって、ビデオブロック予測を伴うパレットベースのビデオコーディングを実行することができる（すなわち、予測は現在のピクチャ中の以前にコーディングされたピクセル情報のみを使用する）。他の場合には、ビデオエンコーダ２０および／またはビデオデコーダ３０は、インター予測モードを適用することができる（すなわち、予測は以前にコーディングされたピクチャ中のピクセルからのものである）。いくつかの場合には、ビデオエンコーダ２０および／またはビデオデコーダ３０は、インター予測モードとイントラ予測モードのいずれかに対する予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。
【０１０７】
[0115]別の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のブロックのための予測を実行しなくてよい。この場合、ビデオエンコーダ２０は代わりに、ピクセル値をパレットインデックスにマッピングし、予測を伴わずにエントロピーコーディングを使用してインデックスを符号化する。追加の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットインデックス値にマッピングされる現在のブロックのピクセル値を使用して、残差差分パルス符号変調（ＲＤＰＣＭ）を実行することができる。この例では、現在のブロックの外側のピクセルからの予測は使用されず、水平方向または垂直方向の予測が現在のＣＵ内のインデックス値を線コピーするために使用され得る。
【０１０８】
[0116]いくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
【０１０９】
[0117]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明のために提供されるものであり、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングの状況においてビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１１０】
[0118]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、ビデオエンコーダ２０は、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すために、パレット中のピクセル値を選択することができる。この例では、ビデオエンコーダ２０は、ビデオデータのブロックの位置の少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングすることができる。ビデオデコーダ３０は、ビデオデータを復号するために、シグナリングされた情報を使用することができる。
【０１１１】
[0119]図２の例では、ビデオエンコーダ２０は、ビデオデータメモリ９８と、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニット（図示されず）とを含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１１２】
[0120]ビデオデータメモリ９８は、ビデオエンコーダ２０のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ９８に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ９８は、ビデオエンコーダ２０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【０１１３】
[0121]ビデオエンコーダ２０はビデオデータを受信することができる。ビデオエンコーダ２０はビデオデータのピクチャのスライス中の各ＣＴＵを符号化することができる。ＣＴＵの各々は、等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）と、ピクチャの対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、４分木区分を実行して、ＣＴＵのＣＴＢを徐々により小さいブロックに分割することができる。より小さいブロックはＣＵのコーディングブロックであり得る。たとえば、予測処理ユニット１００は、ＣＴＵと関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分し、サブブロックの１つまたは複数を、４つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【０１１４】
[0122]ビデオエンコーダ２０は、ＣＴＵのＣＵを符号化して、ＣＵの符号化された表現（すなわち、コーディングされたＣＵ）を生成することができる。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵと関連付けられたコーディングブロックを区分することができる。したがって、各ＰＵは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートし得る。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測のために、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズに対する非対称区分化をサポートすることができる。
【０１１５】
[0123]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによってＰＵの予測データを生成することができる。ＰＵの予測データは、ＰＵの１つまたは複数の予測サンプルブロックと、ＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されるブロックでは、予測ブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【０１１６】
[0124]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域と関連付けられた参照ロケーションとの間の空間変位を示すＭＶを生成することができる。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、ＰＵの予測サンプルブロックを生成することができる。
【０１１７】
[0125]ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を実行することができる。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵのサンプルブロックと参照領域と関連付けられた参照ロケーションとの間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも一部基づいて、ＰＵの予測サンプルブロックを生成することができる。
【０１１８】
[0126]ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照ロケーションとＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成することができる。
【０１１９】
[0127]本開示の技法によれば、ビデオエンコーダ２０は、パレットベースのコーディングを実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、ＣＵモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵの状況において（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵモードに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【０１２０】
[0128]パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１２１】
[0129]パレットベースの符号化ユニット１２２は、本明細書で説明される様々なシンタックス要素のいずれをも生成するように構成され得る。したがって、ビデオエンコーダ２０は、本開示で説明されるようなパレットベースのコードモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ２０は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化し、または、たとえばＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードのような異なるモードを使用してビデオデータのブロックを符号化することができる。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。ビデオエンコーダ２０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードによっていくつかのブロックを符号化し、パレットベースのコーディングモードによって他のブロックを復号することができる。
【０１２２】
[0130]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵの予測データを生成することができる。ＰＵの予測データは、ＰＵの予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライス中のＰＵに対してイントラ予測を実行することができる。
【０１２３】
[0131]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、複数のイントラ予測モードを使用して、ＰＵの予測データの複数のセットを生成することができる。ＰＵのための予測データのセットを生成するためにいくつかのイントラ予測モードを使用するとき、イントラ予測処理ユニット１２６は、そのイントラ予測モードと関連付けられた方向へ、ＰＵの予測ブロック全体にわたって、隣接するＰＵのサンプルブロックからのサンプルの値を延ばすことができる。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はＰＵと関連付けられた領域のサイズに依存し得る。
【０１２４】
[0132]予測処理ユニット１００は、ＰＵのためにインター予測処理ユニット１２０によって生成された予測データ、またはＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵの予測データを選択することができる。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／歪みの尺度に基づいて、ＣＵのＰＵの予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれ得る。
【０１２５】
[0133]残差生成ユニット１０２は、ＣＵのコーディングブロック（たとえば、ルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック）、ならびにＣＵのＰＵの選択された予測サンプルブロック（たとえば、予測ルーマブロック、Ｃｂブロック、およびＣｒブロック）に基づいて、ＣＵの残差ブロック（たとえば、ルーマ残差ブロック、Ｃｂ残差ブロック、およびＣｒ残差ブロック）を生成することができる。たとえば、残差生成ユニット１０２は、残差ブロック中の各サンプルがＣＵのコーディングブロック中のサンプルとＣＵのＰＵの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差に等しい値を有するように、ＣＵの残差ブロックを生成することができる。
【０１２６】
[0134]変換処理ユニット１０４は、４分木区分を実行して、ＣＵと関連付けられた残差ブロックをＣＵのＴＵと関連付けられた変換ブロックに区分することができる。したがって、いくつかの例では、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックと関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木（residual quad-tree）」（ＲＱＴ）として知られる４分木構造は、各領域と関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【０１２７】
[0135]変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵに対して変換係数ブロックを生成することができる。変換処理ユニット１０４は、ＴＵと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
【０１２８】
[0136]量子化ユニット１０６は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数のいくつかまたはすべてと関連付けられたビット深度を低減することができる。たとえば、ｎビット変換係数は量子化の間にｍビットの変換係数に切り捨てられてよく、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化することができる。ビデオエンコーダ２０は、ＣＵと関連付けられたＱＰ値を調整することによって、ＣＵと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも低い精度を有することがある。
【０１２９】
[0137]逆量子化ユニット１０８および逆変換処理ユニット１１０は、それぞれ、係数ブロックに逆量子化と逆変換とを適用して、係数ブロックから残差ブロックを再構築することができる。再構築ユニット１１２は、再構築された残差ブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測サンプルブロックからの対応するサンプルに追加して、ＴＵと関連付けられる再構築された変換ブロックを生成することができる。ビデオエンコーダ２０は、このようにＣＵの各ＴＵのための変換ブロックを再構築することによって、ＣＵのコーディングブロックを再構築することができる。
【０１３０】
[0138]フィルタユニット１１４は、１つまたは複数のデブロッキング動作を実行して、ＣＵと関連付けられたコーディングブロック中のブロッキングアーティファクトを低減することができる。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット１２０は、再構築されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのＰＵに対してインター予測を実行することができる。加えて、イントラ予測処理ユニット１２６は、復号ピクチャバッファ１１６中の再構築されたコーディングブロックを使用して、ＣＵと同じピクチャ中の他のＰＵに対してイントラ予測を実行することができる。
【０１３１】
[0139]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受け取ることができる。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受け取ることができ、予測処理ユニット１００からシンタックス要素を受け取ることができる。エントロピー符号化ユニット１１８は、このデータに対して１つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット１１８は、ＣＡＢＡＣ演算、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。たとえば、ビットストリームはＣＵのＲＱＴを表すデータを含み得る。
【０１３２】
[0140]いくつかの例では、残差コーディングはパレットコーディングとともに実行されない。したがって、ビデオエンコーダ２０は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を実行しなくてよい。加えて、ビデオエンコーダ２０は、残差データとは別に、パレットコーディングモードを使用して生成されたデータをエントロピー符号化することができる。
【０１３３】
[0141]本開示の技法の１つまたは複数によれば、ビデオエンコーダ２０、および具体的にはパレットベースの符号化ユニット１２２は、予測されたビデオブロックのパレットベースのビデオコーディングを実行することができる。上で説明されたように、ビデオエンコーダ２０によって生成されたパレットは、明示的に符号化されてビデオデコーダ３０に送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
【０１３４】
[0142]一例では、ビデオエンコーダ２０のパレットベースの符号化ユニット１２２は、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中の１つまたは複数のパレットエントリーを決定し、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、パレットベースのビデオエンコーダ２０は、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダ２０は、コピーされたパレットエントリーおよび新たなパレットエントリーに関する決定された情報をビデオデコーダ３０に送信することができる。加えて、ビデオエンコーダ２０は、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダ３０に送信することができる。ビデオエンコーダ２０のパレットベースの符号化ユニット１２２は次いで、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することによって、現在のブロックを符号化することができる。
【０１３５】
[0143]本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。
【０１３６】
[0144]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明の目的で、本開示は、ＨＥＶＣコーディングの状況においてビデオデコーダ３０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１３７】
[0145]ビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオデコーダ３０は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。一例では、ビデオデコーダ３０は、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、ビデオデコーダ３０は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリーと関連付ける情報を受信し得る。この例では、ビデオデコーダ３０は、情報に基づいてパレット中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構築し得る。
【０１３８】
[0146]図３の例では、ビデオデコーダ３０は、ビデオデータメモリ１４８と、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１３９】
[0147]ビデオデータメモリ１４８は、ビデオエンコーダ３０のコンポーネントによって復号されるべき、符号化されたビデオビットストリームのようなビデオデータを記憶することができる。ビデオデータメモリ１４８に記憶されたビデオデータは、たとえば、コンピュータ可読媒体１６から、たとえば、カメラのようなローカルビデオソースから、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１４８は、符号化されたビデオビットストリームからの符号化ビデオデータを記憶するコーディング済ピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１４８は、ビデオデコーダ３０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【０１４０】
[0148]ビデオデータメモリ１４８、すなわち、ＣＰＢは、ビットストリームの符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ビデオデータメモリ１４８から符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取ることができ、ＮＡＬユニットを解析してシンタックス要素を復号することができる。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから取得された（たとえば、抽出された）シンタックス要素に基づいて、復号されたビデオデータを生成することができる。
【０１４１】
[0149]ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コーディングされたスライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号することができる。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１４２】
[0150]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実行することができる。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行することができる。ＣＵの各ＴＵに対して再構築動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築することができる。
【０１４３】
[0151]ＣＵのＴＵに対して再構築動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵと関連付けられた係数ブロックを逆量子化（inverse quantize）、すなわち逆量子化（de-quantize）することができる。逆量子化ユニット１５４は、ＴＵのＣＵと関連付けられたＱＰの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
【０１４４】
[0152]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵと関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用することができる。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用することができる。
【０１４５】
[0153]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、イントラ予測を実行して、ＰＵの予測ブロックを生成することができる。イントラ予測処理ユニット１６６は、イントラ予測モードを使用して、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのイントラ予測モードを決定することができる。
【０１４６】
[0154]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵの動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ブロック（たとえば、予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロック）を生成することができる。
【０１４７】
[0155]再構築ユニット１５８は、ＣＵのＴＵと関連付けられた変換ブロック（たとえば、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック）、ならびにＣＵのＰＵの予測ブロック（たとえば、予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロック）を、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、ＣＵのコーディングブロック（たとえば、ルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック）を再構築することができる。たとえば、再構築ユニット１５８は、変換ブロック（たとえば、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック）のサンプルを予測ブロック（たとえば、予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロック）の対応するサンプルに加算して、ＣＵのコーディングブロック（たとえば、ルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック）を再構築することができる。
【０１４８】
[0156]フィルタユニット１６０は、デブロッキング動作を実行して、ＣＵのコーディングブロック（たとえば、ルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック）と関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ３０は、ＣＵのコーディングブロック（たとえば、ルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック）を、復号ピクチャバッファ１６２に記憶することができる。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２のようなディスプレイデバイス上での提示のために、参照ピクチャを提供することができる。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のブロック（たとえば、ルーマブロック、Ｃｂブロック、およびＣｒブロック）に基づいて、他のＣＵのＰＵに対してイントラ予測演算またはインター予測演算を実行することができる。このようにして、ビデオデコーダ３０は、有意な係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力することができる。
【０１４９】
[0157]本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット１６５は、たとえば、パレットベースの復号モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、パレットベースの復号ユニット１６５は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリーと関連付ける情報を受け取ることができる。この例では、パレットベースの復号ユニット１６５は、その情報に基づいてパレット中のピクセル値を選択することができる。加えて、この例では、パレットベースの復号ユニット１６５は、選択されたピクセル値に基づいてブロックのピクセル値を再構築することができる。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１５０】
[0158]パレットベースの復号ユニット１６５は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベースの復号ユニット１６５は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードのような非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。ビデオデコーダ３０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードによっていくつかのブロックを復号し、パレットベースのコーディングモードによって他のブロックを復号することができる。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードの１つを備えてよく、または単一のパレットベースのコーディングモードがあってよい。
【０１５１】
[0159]本開示の技法の１つまたは複数によれば、ビデオデコーダ３０、および具体的にはパレットベースの復号ユニット１６５は、予測されたビデオブロックのパレットベースのビデオ復号を実行することができる。上で説明されたように、ビデオデコーダ３０によって生成されたパレットは、ビデオエンコーダ２０によって明示的に符号化されてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
【０１５２】
[0160]一例では、ビデオデコーダ３０のパレットベースの復号ユニット１６５は、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中の１つまたは複数のパレットエントリーを決定し、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。ビデオデコーダ３０は、コピーされたパレットエントリーおよび新たなパレットエントリーに関する情報をビデオエンコーダ２０から受信することができる。加えて、ビデオデコーダ３０は、ビデオエンコーダ２０から送信される、新たなパレットエントリーのための明示的に符号化されたピクセル値を受信することができる。この情報に基づいて、パレットベースの復号ユニット１６５は、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオデコーダ３０のパレットベースの復号ユニット１６５は次いで、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することによって、現在のブロックを復号することができる。
【０１５３】
[0161]本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、１つまたは複数の様々な組合せのための技法を含み得る。
【０１５４】
[0162]上で説明されたように、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測されたビデオブロックのパレットベースのコーディングを実行することができる。一例では、ビデオエンコーダ２０はまず、現在のブロック中のピクセル値に基づいて現在のブロックのためのパレットを導出し、現在のブロック中のピクセル値を符号化のためのパレットインデックスにマッピングする。このマッピングは、１対１（すなわち、無損失コーディングの場合）または複数対１（すなわち、有損失コーディングの場合）であってよい。ビデオエンコーダ２０はまた、現在のブロック中のピクセル値を予測するために使用され得る、以前にコーディングされたブロック中の参照ピクセル値をマッピングすることができる。ビデオエンコーダ２０が現在のブロックのピクセル値をパレットインデックスにマッピングすると、ビデオエンコーダ２０は、通常の符号化方法、たとえばＨＥＶＣ規格における通常のイントラコーディングを使用して、現在のブロックを符号化する。
【０１５５】
[0163]上の例では、パレットインデックスを伴う現在のブロックは、ピクセル値を伴う元のブロックであるかのように扱われる。同様に、参照ピクセルのパレットインデックスは、パレットインデックスを伴う現在のブロックに対して通常のイントラ予測を実行するために使用される。ビデオエンコーダ２０は、予測誤差または残差値をビデオデコーダ３０に送信することができる。いくつかの場合には、予測誤差または残差値は、変換されてよく、量子化されてよく、ビットストリームにエントロピー符号化されてよい。他の場合には、変換および量子化はパレットコーディングモードでは無効にされることも可能である。現在のブロックを符号化した後で、ビデオエンコーダ２０は、参照ピクセル、予測ピクセル、および／または残差値のインデックスを、現在のブロックの再構築および今後のブロックの普通の予測のために、ピクセル値へと変換し戻すことができる。ビデオデコーダ３０は、ビットストリームから現在のブロックのための符号化された残差値を取得することができる。さらに、ビデオデコーダ３０は、パレットインデックスを伴う現在のブロックを取得するための通常の復号方法を使用して、現在のブロックを復号することができる。ビデオデコーダ３０は次いで、パレットインデックスと関連付けられるパレット中のピクセル値に基づいて、現在のブロックのピクセル値を決定することができる。
【０１５６】
[0164]別の例では、ビデオエンコーダ２０は、現在のブロックのためのパレットを生成することができる。パレットは、所与のブロックのための予測残差値を示すエントリーを含み得る。所与のブロックのための予測残差値は、任意の予測モード、たとえばＨＥＶＣ規格における通常のインター予測またはイントラ予測を使用して生成され得る。所与のブロックのための予測残差値は、残差ピクセル値（場合によっては量子化された）または残差変換係数値（場合によっては量子化された）であり得る。この例では、ビデオエンコーダ２０は、現在のブロックのための予測残差値を、現在のブロックのための予測残差値を表すために使用される現在のブロックのためのパレット中のエントリーを示すインデックス値にマッピングする。この例では、ビデオエンコーダ２０は、現在のブロック中の１つまたは複数の位置に対するインデックス値を符号化することができ、このインデックス値は、現在のブロックのための予測残差値を規定する現在のブロックのためのパレット中のエントリーを示す。ビデオデコーダ３０は、ビットストリームからインデックス値の符号化されたブロックを取得し、インデックス値によって特定されるパレット中の対応する予測残差値に基づいて、現在のブロックのための予測残差値を決定することができる。ビデオデコーダ３０は次いで、予測残差値および以前にコーディングされた参照ピクセル値に基づいて、通常の復号方法を使用して現在のブロックのピクセル値を再構築することができる。
【０１５７】
[0165]いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、イントラ予測モードを適用することによって、ビデオブロック予測を伴うパレットベースのビデオコーディングを実行することができる（すなわち、予測は現在のピクチャ中の以前にコーディングされたピクセル情報のみを使用する）。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、インター予測モードを適用することができる（すなわち、予測は以前にコーディングされたピクチャ中のピクセルからのものである）。一例では、現在のブロックのための予測残差値は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から計算される現在のブロックのための残差ピクセル値であり得る。この残差ピクセル値は量子化され得る。別の例では、現在のブロックのための予測残差値は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から計算され、次いで変換され場合によっては量子化される、現在のブロックのための残差変換係数値であり得る。
【０１５８】
[0166]いくつかの場合には、ビデオエンコーダ２０および／またはビデオデコーダ３０は、インター予測モードとイントラ予測モードのいずれかに対する予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。たとえば、イントラ予測モードの場合、ＤＣ予測プロセス、水平方向の予測プロセス、および／または垂直方向の予測プロセスが有効にされ得るが、他のイントラ予測モードプロセスは無効にされ得る。この無効にされたプロセスは、イントラ予測モードにおけるフィルタリング、たとえば、モード依存イントラ平滑化（ＭＤＩＳ：mode-dependent intra-smoothing）、１／３２ペル双線形補間、エッジフィルタ、および／またはＤＣフィルタの１つまたは複数を含んでよく（背景の紹介は、「Adaptive Filter Control for Intra Prediction in Video Coding」という表題の、２０１３年１０月１４日に出願された米国仮出願第６１／８９０，８４４号、出願人参照番号１２１２−６７１ＵＳＰ３／１３４９６０Ｐ３において見出され得る）、この例では無効にされる。さらなる例として、インター予測モードの場合、ピクセルの平均化のプロセス、たとえば、加重予測、双予測、またはサブペル補間の１つまたは複数が無効にされ得る。
【０１５９】
[0167]別の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のブロックのための予測を実行しなくてよい。この場合、ビデオエンコーダ２０は代わりに、ピクセル値をパレットインデックスにマッピングし、予測を伴わずにエントロピーコーディングを使用してインデックスを符号化する。追加の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットインデックス値にマッピングされる現在のブロックのピクセル値を使用して、残差差分パルス符号変調（ＲＤＰＣＭ）を実行することができる。この場合、現在のブロックの外側のピクセルからの予測は使用されず、水平方向または垂直方向の予測が現在のＣＵ内のインデックス値を線コピーするために使用され得る。たとえば、垂直方向の予測を使用するとき、現在のブロックの最初の行の中のロケーションは予測されず、後続の行の中のロケーションは以前の行の中の値を使用して予測されてよく、たとえば、ｘ（ｉ，ｊ）に等しい行ｉ（ｉ＞０）の中の値はｘ（ｉ−１，ｊ）を使用して予測される。水平方向の予測を使用するとき、現在のブロックの第１の列の中のロケーションは予測されず、後続の列の中のロケーションは以前の列の中の値を使用して予測され得る。
【０１６０】
[0168]いくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
【０１６１】
[0169]図４は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図４の例は、第１のセットのパレット（すなわち、第１のパレット１８４）と関連付けられる第１のコーディングユニット（ＣＵ）１８０と第２のセットのパレット（すなわち、第２のパレット１９２）と関連付けられる第２のＣＵ  １８８とを有するピクチャ１７８を含む。下でより詳細に説明されるように、本開示の技法のうちの１つまたは複数によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８はまた、イントラ予測コーディングモードによりコーディングされるブロック１９６と、インター予測コーディングモードによりコーディングされるブロック２００とを含む。
【０１６２】
[0170]図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）の状況において、説明を目的としてＨＥＶＣビデオコーディング規格に関して説明される。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、ＣＵモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードまたはＴＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵまたはＴＵに適用され得る。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０１６３】
[0171]一般に、パレットは、現在コーディングされているＣＵ（たとえば、図４の例ではＣＵ  １８８）について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０のような）は、ＣＵの各々の色成分について別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのさらに別のパレットとを符号化することができる。この例では、ＹパレットのエントリーはＣＵのピクセルのＹの値を表すことができ、ＵパレットのエントリーはＣＵのピクセルのＵの値を表すことができ、ＶパレットのエントリーはＣＵのピクセルのＶの値を表すことができる。
【０１６４】
[0172]他の例では、ビデオエンコーダ２０は、ＣＵのすべての色成分について単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙiと、Ｕiと、Ｖiとを含む、三重の値であるｉ番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット１８４および１９２の表現は、一例にすぎず、限定することは意図されない。
【０１６５】
[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]ビデオエンコーダ２０は、いくつかの例では、現在のＣＵがパレット全体の送信を使用するか、またはオンザフライのパレット生成を使用するか、または、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかを、シグナリングすることができる。いくつかの例では、初期パレットは最大パレットサイズにある満杯のパレットであることがあり、この場合、初期パレット中の値は変更され得る。他の例では、初期パレットは最大パレットサイズより小さいことがあり、この場合、ビデオエンコーダ２０およびビデオデコーダ３０は、初期パレットの値に値を追加し、および／または初期パレットの値を変更することができる。
【０１９１】
[0199]本開示の１つまたは複数の態様によれば、たとえばパレットに含まれるピクセル値の数による、第１のパレット１８４および第２のパレット１９２のようなパレットのサイズは、固定されていてよく、または、符号化されたビットストリーム中の１つまたは複数のシンタックス要素を使用してシグナリングされてよい。たとえば、いくつかの態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズをコーディングするために、単進コードまたは切り捨てられた単進コード（たとえば、最大限のパレットサイズにおいて切り捨てるコード）を使用することができる。他の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズをコーディングするために、指数ゴロム符号またはライスゴロム符号を使用することができる。
【０１９２】
[0200]さらに他の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットの各エントリーの後でパレットのサイズを示すデータをコーディングすることができる。例として、第２のパレットの１９２に関して、ビデオエンコーダ２０は、エントリー２０８〜２１４の各々の後で停止フラグを符号化することができる。この例では、１に等しい停止フラグは、現在コーディングされているエントリーが第２のパレット１９２の最後のエントリーであることを規定し得るが、０に等しい停止フラグは、第２のパレット１９２に追加のエントリーがあることを示し得る。したがって、ビデオエンコーダ２０は、エントリー２０８〜２１２の各々の後で０という値を有する停止フラグを符号化し、エントリー２１４の後で１という値を有する停止フラグを符号化することができる。いくつかの例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリームに含まれなくてよい。上の例はパレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報（たとえば、上で述べられたような、コーディングされているＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤｉｄ、またはマルチビューコーディングにおけるビューｉｄのような特性情報）に基づいて、条件的に送信または推測され得る。
【０１９３】
[0201]本開示の技法は、無損失で、または代替的にはいくらかの損失を伴って（有損失コーディング）、データをコーディングすることを含む。たとえば、有損失コーディングに関して、ビデオエンコーダ２０は、パレットのピクセル値を厳密にＣＵ中の実際のピクセル値と厳密に照合することなく、ＣＵのピクセルをコーディングすることができる。本開示の技法が有損失コーディングに適用されるとき、いくつかの制約がパレットに適用され得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４および第２のパレット１９２のようなパレットを量子化することができる。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、エントリーのピクセル値が互いに所定の範囲内にあるとき、パレットのエントリーを統合するまたは組み合わせる（すなわち、量子化する）ことができる。言い換えると、新たなパレット値の誤差の限度内にあるパレット値がすでにある場合、新たなパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なるピクセル値が、単一のパレットのエントリーに、または等価的に、単一のパレットのピクセル値にマッピングされ得る。
【０１９４】
[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]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、追加で、または代替的に、マップ２４０の１つまたは複数のエントリーについて線のコピー（line copying）を実行することができる。線のコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ２０は、マップ中の特定のエントリーに対するピクセル値またはインデックス値が、（水平方向の走査では）その特定のエントリーの上の線における、または（垂直方向の走査では）その特定のエントリーの左の列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリーの上の線、または特定のエントリーの左の列の中のエントリーに等しい、走査順序の中のピクセル値またはインデックス値の数を、ランとして示すことができる。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、規定された隣接する線から、および、現在コーディングされているマップの線に対する規定された数のエントリーから、ピクセル値またはインデックス値をコピーすることができる。
【０２２５】
[0233]例示を目的とする例では、マップ２４０の列２５６と２６０とを考える。垂直方向の上から下への走査方向を仮定すると、列２５６は、「１」という３個のインデックス値と、「２」という３個のインデックス値と、「３」という２個のインデックス値とを含む。列２６０は、走査方向に同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ２０は、列２６０の全体が列２５６からコピーされることを示す、列２６０のための１つまたは複数のシンタックス要素を符号化することができる。１つまたは複数のシンタックス要素は、マップ２４０の相対的な上部（relative top）において列２６０の第１のエントリーと関連付けられ得る。ビデオデコーダ３０は、線のコピーを示すシンタックス要素を取得し、列２６０を復号するときに列２６０のための列２５６のインデックス値をコピーすることができる。
【０２２６】
[0234]本開示の態様によれば、エントリーのいわゆるランをコーディングするための技法が、上で説明された線のコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ２０は、マップ中のエントリーの値がパレットから取得されるかどうか、または、マップ中のエントリーの値がマップ２４０中の以前にコーディングされた線から取得されるかどうかを示す、１つまたは複数のシンタックス要素（たとえば、フラグ）を符号化することができる。ビデオエンコーダ２０はまた、パレットのインデックス値または線（行または列）の中のエントリーのロケーションを示す１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、同じ値を共有する連続するエントリーの数を示す１つまたは複数のシンタックス要素を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームからそのような情報を取得することができ、その情報を使用して、ブロックに対するマップとピクセル値とを再構築することができる。
【０２２７】
[0235]例示を目的とする例では、マップ２４０の行２６４と２６８とを考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」という５個のインデックス値と、「３」という３個のインデックス値とを含む。行２６８は、「１」という３個のインデックス値と、「２」という２個のインデックス値と、「３」という３個のインデックス値とを含む。この例では、ビデオエンコーダ２０は、行２６８のためのデータを符号化するときにランの前にある行２６４の特定のエントリーを特定することができる。たとえば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、行２６８の中の走査方向の２つの連続するエントリーの次のランが行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。
【０２２８】
[0236]いくつかの例では、ビデオエンコーダ２０はまた、別の行（または列）の中のある位置に対する現在のピクセル値もしくはインデックス値をコーディングするかどうか、または、ランシンタックス要素を使用して現在のピクセル値もしくはインデックス値をコーディングするかどうかを決定することができる。たとえば、（上で述べられたように）行２６４の第１の位置と２つのエントリーのランとを示す１つまたは複数の要素を符号化した後で、ビデオエンコーダ２０は、行２６８の中の第４の位置および第５の位置について（左から右に）、第４の位置に対する２という値と、１というランを示す１つまたは複数のシンタックス要素とを示す、１つまたは複数のシンタックス要素を符号化することができる。したがって、ビデオエンコーダ２０は、別の線（または列）を参照することなくこれらの２つの位置を符号化する。ビデオエンコーダ２０は次いで、上の行２６４に対する、行２６８の中の３というインデックス値を有する第１の位置をコーディングすることができる（たとえば、上の行２６４からのコピーと、同じインデックス値を有する、走査順序の連続する位置のランとを示す）。したがって、本開示の態様によれば、ビデオエンコーダ２０は、たとえばランを使用して線（または列）のピクセル値またはインデックス値を線（または列）の他の値に対してコーディングすること、線（または列）のピクセル値またはインデックス値を別の線（または列）の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。いくつかの例では、ビデオエンコーダ２０は、この選択を行うために、レート／歪みの最適化を実行することができる。
【０２２９】
[0237]ビデオデコーダ３０は、上で説明されたシンタックス要素を受け取ることができ、行２６８を再構築することができる。たとえば、ビデオデコーダ３０は、現在コーディングされているマップ２４０の位置に対する関連付けられるインデックス値をコピーする際に元となる、隣接する行の中の特定のロケーションを示すデータを取得することができる。ビデオデコーダ３０はまた、同じインデックス値を有する、走査順序の連続する位置の数を示すデータを取得することができる。
【０２３０】
[0238]いくつかの例では、エントリーのコピー元の線は、（図５の例において示されるように）現在コーディングされている線のエントリーに直接隣接していてよい。しかしながら、他の例では、ある数の線が、ビデオエンコーダ２０および／またはビデオデコーダ３０によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コーディングされているマップの線のための予測エントリーとして使用され得る。したがって、いくつかの例では、エントリーに対するピクセル値は、現在の行のすぐ上の行（もしくはすぐ左の列）、または現在の行の２つ以上上の行（もしくは２つ以上左の列）の中のエントリーのピクセル値に等しくなるようにシグナリングされ得る。
【０２３１】
[0239]例示を目的とする例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、エントリーの現在の行をコーディングする前に、エントリーの以前のｎ個の行を記憶するように構成され得る。この例では、ビデオエンコーダ２０は、切り捨てられた単進コードまたは他のコードによって、ビットストリーム中で予測行（エントリーのコピー元の行）を示すことができる。別の例では、ビデオエンコーダ２０は、現在の線と、現在の線をコーディングするために参照として使用されるマップ２４０の予測線との間の、変位値を符号化することができる（およびビデオデコーダ３０は変位値を復号することができる）。すなわち、ビデオエンコーダ２０は、インデックス値のコピー元の特定の線（または列）のインジケーションを符号化することができる。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、ｃ［０］、ｃ［１］、．．．、を、マップ２４０の現在の線のインデックスを示すものとし、ｕ［０］、ｕ［１］、ｕ［２］、．．．、を、上の隣接線のようなマップ２４０の予測線のインデックスを示すものとする。この例では、変位ベクトルがｄであるとすると、ｃ［ｉ］に対するインデックス値は、ｄが負の値となることを避けるために、ｕ［ｉ＋ｄ］またはｕ［ｉ−ｄ］から予測され得る。ｄの値は、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号を使用してコーディングされ得る。
【０２３２】
[0240]別の例として、ビデオエンコーダ２０は、「上の線の左半分からコピー」または「上の線の右半分からコピー」のような、現在コーディングされているマップの線にコピーすべき、隣接する線と隣接する線のエントリーの数または部分とを示す、命令をシグナリングすることができる。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、９０度、１８０度、もしくは２７０度回転されてよく、または上下もしくは左右が反転されてよい。
【０２３３】
[0241]他の例では、ビデオエンコーダ２０は、マップ２４０の同様の値のインデックス値のランをビデオデコーダ３０に送信しなくてよい。この場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランの値を暗黙的に導出することができる。一例では、ランの値は、定数値、たとえば４，８，１６などであってよい。別の例では、ランの値は、たとえば、ブロックサイズ、量子化パラメータ（ＱＰ）、フレームタイプ、色成分、カラーフォーマット（たとえば、４：４：４、４：２：２、または４：２：０）、色空間（たとえば、ＹＵＶまたはＲＧＢ）、走査方向、および／または現在のブロックのための他のタイプの特性情報のような、コーディングされているビデオデータの現在のブロックのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分（高さの半分）、現在のブロックの幅および／もしくは高さの分数、または現在のブロックの幅および／もしくは高さの倍数に等しくてよい。別の例では、ビデオエンコーダ２０は、ピクチャパラメータセット（ＰＰＳ）、シーケンスパラメータセット（ＳＰＳ）、ビデオパラメータセット（ＶＰＳ）、および／またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、ランの値をビデオデコーダ３０にシグナリングすることができる。
【０２３４】
[0242]加えて、または代替的に、ビデオエンコーダ２０は、マップ２４０をビデオデコーダ３０に送信する必要もないことがある。代わりに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップ２４０に含まれるインデックス値の各々のランの開始の位置またはロケーションを暗黙的に導出することができる。一例では、ビデオエンコーダ２０および／またはビデオデコーダ３０によって適用されるビデオコーディング規格は、ランがあるロケーションにおいてのみ開始し得ると決定することができる。たとえば、ランは、各行の始端、またはコーディングされている現在のブロックのＮ行ごとの始端においてのみ開始してよい。開始ロケーションは、異なる走査順序に対しては異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在のブロックのＮ列ごとの始端においてのみ開始してよい。
【０２３５】
[0243]別の例では、開始ロケーションは、ブロックサイズ、ＱＰ、フレームタイプ、色成分、カラーフォーマット（たとえば、４：４：４、４：２：２、または４：２：０）、色空間（たとえば、ＹＵＶまたはＲＧＢ）、走査方向、および／または現在のブロックのための他のタイプの特性情報のような、現在のブロックのサイド情報に依存して導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、各行および／もしくは各列の中間点、または各行および／もしくは各列の分数（たとえば、１／ｎ、２／ｎ、．．．（ｎ−１）／ｎ）であり得る。別の例では、ビデオエンコーダ２０は、ＰＰＳ、ＳＰＳ、ＶＰＳ、および／またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、開始位置をビデオデコーダ３０にシグナリングすることができる。
【０２３６】
[0244]いくつかの例では、各々上で説明された、暗黙的な開始位置の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップの同様の値のインデックス値のランが２つの隣接する開始位置の間の距離に等しいと決定することができる。開始位置が現在のブロックの各行の始まり（すなわち、最初の位置）である場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランの長さが現在のブロックの各行の長さに等しいと決定することができる。
【０２３７】
[0245]図６は、本開示の技法に従った、クロマ成分のために適応的にダウンサンプリングされたルーマ成分に対するパレットインデックスのランを使用してビデオブロックの幾何学的エッジ２７０、２７２、または２７４を決定することの例を示す、概念図である。図６において、ルーマサンプルは中空の丸として示されており、クロマサンプルはｘ記号が重畳されたルーマサンプルの１つとして示されている。図６は、ビデオブロックの幾何学的エッジ２７０、２７２、または２７４のロケーションに基づく、ルーマ成分およびクロマ成分に対する異なるランの値の例を示す。
【０２３８】
[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]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（compact disc）（ＣＤ）、レーザーディスク（登録商標）（laser disc）、光ディスク（optical disc）、デジタル多用途ディスク（digital versatile disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（floppy disk）、およびＢｌｕ−ｒａｙディスク（Blu-ray disc）を含み、ここでディスク（disk）は通常、磁気的にデータを再生するが、ディスク（disc）はレーザを用いて光学的にデータを再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。
【０２７０】
[0278]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路などの１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造または本明細書で説明される技法の実装形態に適した任意の他の構造のいずれをも指し得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアおよび／もしくはソフトウェアモジュール内に設けられてよく、または複合コーデックに組み込まれてよい。また、技法は、１つまたは複数の回路または論理素子の中で完全に実施され得る。
【０２７１】
[0279]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む多種多様なデバイスまたは装置において実施され得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を実行するように構成されるデバイスの機能上の態様を強調するために、本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で述べられたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、または、上で説明された１つまたは複数のプロセッサを含む、適切なソフトウェアおよび／またはファームウェアとともに相互動作可能なハードウェアユニットの集合体よって提供され得る。
【０２７２】
[0280]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
【図１】
2016529783.tif 000003
【図２】
2016529783.tif 000004
【図３】
2016529783.tif 000005
【図４】
2016529783.tif 000006
【図５】
2016529783.tif 000007
【図６】
2016529783.tif 000008
【図７】
2016529783.tif 000009
【図８】
2016529783.tif 000010
【図９】
2016529783.tif 000011
【手続補正書】
【提出日】平成28年3月9日(2016.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記予測パレット中の前記パレットエントリーのうちのどれが前記ビデオデータの現在のブロックのための現在のパレットにコピーされるべきかを決定することと、ここにおいて、コピーされるべき前記パレットエントリーを決定することは、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す１つまたは複数のシンタックス要素をコーディングすることを含む、
前記現在のブロックのための前記現在のパレットに含まれるべき新たなパレットエントリーの数を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記現在のパレット中に含まれるべき前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記計算されたサイズを有する前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することとを備える、方法。
【請求項２】
前記予測パレットを生成することが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成することを備える、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序において隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、請求項２に記載の方法。
【請求項４】
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるべきかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項１に記載の方法。
【請求項５】
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるべきかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項１に記載の方法。
【請求項６】
前記現在のパレットに含まれるべき前記新たなパレットエントリーの数を示す前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの少なくとも１つを使用してコーディングされる、請求項１に記載の方法。
【請求項７】
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することが、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結することを備える、請求項１に記載の方法。
【請求項８】
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記方法が、前記現在のブロックのための前記現在のパレットへの前記予測パレット中のパレットエントリーのコピーを無効にすることをさらに備える、請求項１に記載の方法。
【請求項９】
前記現在のブロックの前記１つまたは複数のピクセル値のための前記インデックス値を決定することが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中に対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、請求項１に記載の方法。
【請求項１０】
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を決定することが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、請求項１に記載の方法。
【請求項１１】
ビデオデータをコーディングする前記方法がビデオデータを復号する方法を備え、前記方法が、
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素を復号することと、
前記現在のパレットに含まれるべき前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素を復号することと、
前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素を復号することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素を復号することとを備える、請求項１に記載の方法。
【請求項１２】
ビデオデータをコーディングする前記方法がビデオデータを符号化する方法を備え、前記方法が、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素を符号化することと、
前記現在のパレットに含まれるべき前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素を符号化することと、
前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素を符号化することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素を符号化することとを備える、請求項１に記載の方法。
【請求項１３】
ビデオデータをコーディングするための装置であって、
ビデオデータを記憶するメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記予測パレット中の前記パレットエントリーのうちのどれが前記ビデオデータの現在のブロックのための現在のパレットにコピーされるべきかを決定することと、を行うように構成され、ここにおいて、前記１つまたは複数のプロセッサは、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す１つまたは複数のシンタックス要素をコーディングするように構成され、前記１つまたは複数のプロセッサは、さらに、
前記現在のブロックのための前記現在のパレットに含まれるべき新たなパレットエントリーの数を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記現在のパレット中に含まれるべき前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記計算されたサイズを有する前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を行うように構成される、装置。
【請求項１４】
前記プロセッサが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成するように構成される、請求項１３に記載の装置。
【請求項１５】
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序で隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、請求項１４に記載の装置。
【請求項１６】
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるべきかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項１３に記載の装置。
【請求項１７】
前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるべきかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項１３に記載の装置。
【請求項１８】
前記現在のパレットに含まれるべき前記新たなパレットエントリーの数を示す前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの少なくとも１つを使用してコーディングされる、請求項１３に記載の装置。
【請求項１９】
前記プロセッサが、前記現在のパレットを生成するために、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結するように構成される、請求項１３に記載の装置。
【請求項２０】
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記プロセッサが、前記現在のブロックのための前記現在のパレットへの前記予測パレット中のパレットエントリーのコピーを無効にするように構成される、請求項１３に記載の装置。
【請求項２１】
前記プロセッサが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中の対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項１３に記載の装置。
【請求項２２】
前記プロセッサが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項１３に記載の装置。
【請求項２３】
前記装置が、ビデオデータを復号するためのビデオ復号デバイスを備え、前記プロセッサが、
前記予測パレット中の前記パレットエントリーの前記１つまたは複数の各々が前記現在のパレットにコピーされるべきかどうかを示す１つまたは複数のシンタックス要素を復号することと、
前記現在のパレットに含まれるべき前記新たなパレットエントリーの前記数を示す前記１つまたは複数のシンタックス要素を復号することと、
前記新たなパレットエントリーの各々についてのピクセル値を示す前記１つまたは複数のシンタックス要素を復号することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素を復号することと、を行うように構成される、請求項１３に記載の装置。
【請求項２４】
前記装置が、ビデオデータを符号化するためのビデオ符号化デバイスを備え、前記プロセッサが、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記予測パレット中の前記パレットエントリーの前記１つまたは複数の各々が前記現在のパレットにコピーされるべきかどうかを示す前記１つまたは複数のシンタックス要素を符号化することと、
前記現在のパレットに含まれるべき前記新たなパレットエントリーの前記数を示す前記１つまたは複数のシンタックス要素を符号化することと、
前記新たなパレットエントリーの各々についてのピクセル値を示す前記１つまたは複数のシンタックス要素を符号化することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素を符号化することと、を行うように構成される、請求項１３に記載の装置。
【請求項２５】
ビデオデータをコーディングするための装置であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、
前記予測パレット中の前記パレットエントリーのうちのどれが前記ビデオデータの現在のブロックのための現在のパレットにコピーされるかを決定するための手段と、ここにおいて、コピーされるべき前記パレットエントリーを決定するための手段は、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す１つまたは複数のシンタックス要素をコーディングするための手段を備える、
前記現在のブロックのための前記現在のパレットに含まれるべき新たなパレットエントリーの数を示す１つまたは複数のシンタックス要素をコーディングための手段と、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記現在のパレット中に含まれるべき前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングするための手段と、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算するための手段と、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記計算されたサイズを有する前記現在のパレットを生成するための手段と、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定するための手段とを備える、装置。
【請求項２６】
命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、実行されたときに、１つまたは複数のプロセッサに、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記予測パレット中の前記パレットエントリーのうちのどれが前記ビデオデータの現在のブロックのための現在のパレットにコピーされるべきかを決定することとを実行させ、ここにおいて、前記命令は、前記１つまたは複数のプロセッサに、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるべきかどうかを示す１つまたは複数のシンタックス要素をコーディングすることを実行させ、前記命令はさらに、前記１つまたは複数のプロセッサに、
前記現在のブロックのための前記現在のパレットに含まれるべき新たなパレットエントリーの数を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記現在のパレット中に含まれるべき前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を実行させる、非一時的コンピュータ可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２７２
【補正方法】変更
【補正の内容】
【０２７２】
[0280]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータをコーディングする方法であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値のためのインデックス値を決定することとを備える、方法。
［Ｃ２］
前記予測パレットを生成することが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成することを備える、上記Ｃ１に記載の方法。
［Ｃ３］
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序において隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、上記Ｃ２に記載の方法。
［Ｃ４］
前記現在のパレットにコピーされる前記予測パレット中の前記１つまたは複数のパレットエントリーを決定することが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す１つまたは複数のシンタックス要素をコーディングすることを備える、上記Ｃ１に記載の方法。
［Ｃ５］
前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、上記Ｃ４に記載の方法。
［Ｃ６］
前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、上記Ｃ４に記載の方法。
［Ｃ７］
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を決定することが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素をコーディングすることを備え、前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの１つを使用してコーディングされる、上記Ｃ１に記載の方法。
［Ｃ８］
前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることをさらに備える、上記Ｃ１に記載の方法。
［Ｃ９］
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することが、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結することを備える、上記Ｃ１に記載の方法。
［Ｃ１０］
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記１つまたは複数のパレットエントリーのコピーを無効にすることをさらに備える、上記Ｃ１に記載の方法。
［Ｃ１１］
前記現在のブロックの前記１つまたは複数のピクセル値のための前記インデックス値を決定することが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中に対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、上記Ｃ１に記載の方法。
［Ｃ１２］
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を決定することが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることとを備える、上記Ｃ１に記載の方法。
［Ｃ１３］
ビデオデータをコーディングする前記方法がビデオデータを復号する方法を備え、前記方法が、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を受け取ることとを備える、上記Ｃ１に記載の方法。
［Ｃ１４］
ビデオデータをコーディングする前記方法がビデオデータを符号化する方法を備え、前記方法が、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を送信することとを備える、上記Ｃ１に記載の方法。
［Ｃ１５］
ビデオデータをコーディングするための装置であって、
ビデオデータを記憶するメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を行うように構成される、装置。
［Ｃ１６］
前記プロセッサが、前記ビデオデータの１つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成するように構成される、上記Ｃ１５に記載の装置。
［Ｃ１７］
前記１つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序で隣接するブロックとのうちの少なくとも１つを含む、前記現在のブロックの隣接ブロックを備える、上記Ｃ１６に記載の装置。
［Ｃ１８］
前記プロセッサが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す、１つまたは複数のシンタックス要素をコーディングするように構成される、上記Ｃ１５に記載の装置。
［Ｃ１９］
前記１つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、上記Ｃ１８に記載の装置。
［Ｃ２０］
前記１つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、上記Ｃ１８に記載の装置。
［Ｃ２１］
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す１つまたは複数のシンタックス要素をコーディングするように構成され、前記１つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの１つを使用してコーディングされる、上記Ｃ１５に記載の装置。
［Ｃ２２］
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す１つまたは複数のシンタックス要素をコーディングするように構成される、上記Ｃ１５に記載の装置。
［Ｃ２３］
前記プロセッサが、前記現在のパレットを生成するために、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結するように構成される、上記Ｃ１５に記載の装置。
［Ｃ２４］
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの１つを備え、前記プロセッサが、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記１つまたは複数のパレットエントリーのコピーを無効にするように構成される、上記Ｃ１５に記載の装置。
［Ｃ２５］
前記プロセッサが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中の対応するピクセル値を有するかどうかを示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記１つまたは複数のピクセル値についての前記ピクセル値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、上記Ｃ１５に記載の装置。
［Ｃ２６］
前記プロセッサが、
前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を示す１つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記１つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す１つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、上記Ｃ１５に記載の装置。
［Ｃ２７］
前記装置が、ビデオデータを復号するためのビデオ復号デバイスを備え、前記プロセッサが、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を受け取ることと、を行うように構成される、上記Ｃ１５に記載の装置。
［Ｃ２８］
ビデオデータを符号化するためのビデオ符号化デバイスを備え、前記プロセッサが、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記１つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記１つまたは複数のピクセル値についての前記インデックス値を送信することと、を行うように構成される、上記Ｃ１５に記載の装置。
［Ｃ２９］
ビデオデータをコーディングするための装置であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定するための手段と、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定するための手段と、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算するための手段と、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成するための手段と、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定するための手段とを備える、装置。
［Ｃ３０］
非一時的コンピュータ可読媒体であって、実行されたときに、１つまたは複数のプロセッサに、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの１つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの１つまたは複数のピクセル値についてのインデックス値を決定することと、
を実行させる命令を記憶している、非一時的コンピュータ可読媒体。
【国際調査報告】
2016529783.tif 000012
2016529783.tif 000013
2016529783.tif 000014
2016529783.tif 000015