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