(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、前記方法は、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、
前記第１のシンタックス要素が、前記パレット予測子が前記ＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示すことに応答して、前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信することと、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと、
前記パレットテーブルに基づいてビデオデータのブロックを復号することと
を備える、方法。
【請求項２】
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信することと、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信することと
をさらに備える、請求項１に記載の方法。
【請求項３】
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信すること
をさらに備える、請求項２に記載の方法。
【請求項４】
前記第１のシンタックス要素は、前記パレット予測子が前記ＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、請求項２に記載の方法。
【請求項５】
ビデオデータを符号化する方法であって、前記方法は、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、
前記パレット予測子が前記ＰＰＳレベルパレット予測子初期化子を使用して生成されることに応答して、前記ＰＰＳシンタックス構造中に含めるために、前記ＰＰＳシンタックス構造中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、
前記ＰＰＳシンタックス構造中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことに応答して、前記ＰＰＳシンタックス構造中に含めるために、１つまたは複数のパレットテーブルエントリ値を生成することと、
前記第１のシンタックス要素、前記第２のシンタックス要素、および前記１つまたは複数のパレットテーブルエントリ値を含む符号化ビデオデータのビットストリームを出力することと
を備える、方法。
【請求項６】
ビデオデータを復号するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、
前記第１のシンタックス要素が、前記パレット予測子が前記ＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示すことに応答して、前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信することと、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと、
前記パレットテーブルに基づいてビデオデータのブロックを復号することと
を行うように構成された、デバイス。
【請求項７】
前記１つまたは複数のプロセッサは、
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信することと、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信することと
を行うようにさらに構成された、請求項６に記載のデバイス。
【請求項８】
前記１つまたは複数のプロセッサが、
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信する
ようにさらに構成された、請求項７に記載のデバイス。
【請求項９】
前記第１のシンタックス要素は、前記パレット予測子が前記ＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、請求項７に記載のデバイス。
【請求項１０】
前記第３のシンタックス要素が１ビットフラグを備える、請求項７に記載のデバイス。
【請求項１１】
前記第１のシンタックス要素が１ビットフラグを備える、請求項６に記載のデバイス。
【請求項１２】
前記１つまたは複数のプロセッサが、
ビデオデータの前記ブロックのサンプルのために、インデックスを受信することと、
前記サンプルのための前記インデックスに対応する前記１つまたは複数のパレットテーブルエントリ値のうちの１つを使用してビデオデータの前記ブロックを再構築することと
を行うようにさらに構成された、請求項７に記載のデバイス。
【請求項１３】
前記１つまたは複数のプロセッサは、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに基づいて、
（ｉ）パレット予測子がモノクロームエントリを含むかどうかの指示、
（ｉｉ）ルーマパレット予測子エントリのためのビット深度の指示、および
（ｉｉｉ）クロマパレット予測子エントリのためのビット深度の指示、
のうちの１つまたは複数が前記ＰＰＳ中に存在しないと決定する
ようにさらに構成された、請求項６に記載のデバイス。
【請求項１４】
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、
前記パレット予測子が前記ＰＰＳレベルパレット予測子初期化子を使用して生成されることに応答して、前記ＰＰＳシンタックス構造中に含めるために、前記ＰＰＳシンタックス構造中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、
前記ＰＰＳシンタックス構造中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことに応答して、前記ＰＰＳシンタックス構造中に含めるために、１つまたは複数のパレットテーブルエントリ値を生成することと、
前記第１のシンタックス要素、前記第２のシンタックス要素、および前記１つまたは複数のパレットテーブルエントリ値を含む符号化ビデオデータのビットストリームを出力することと
を行うように構成された、デバイス。
【請求項１５】
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、請求項１〜請求項５のうちのいずれかに記載の方法を実行させる命令を記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、各々の内容全体が参照により本明細書に組み込まれる、２０１５年９月１４に出願された米国仮特許出願第６２／２１８，４９７号、および２０１５年１０月６日に出願された米国仮特許出願第６２／２３７，９５２号の利益を主張する。
【０００２】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、最近確定されたＩＴＵ−Ｔ  Ｈ．２６５，高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間（イントラピクチャ）予測および／または時間（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）が、ツリーブロック、コーディングユニット（ＣＵ：coding unit）および／またはコーディングノードと呼ばれることもあるビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。最初に２次元アレイで構成される量子化された変換係数は、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するために、エントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]本開示は、ビデオコーディング（たとえば、ビデオ符号化およびビデオ復号）ならびに圧縮のための技法について説明する。特に、本開示は、ビデオデータのパレットベースコーディングのための技法について説明し、より詳細には、本開示は、パレット予測子（palette predictor）を初期化するための技法について説明する。
【０００７】
[0007]一例では、ビデオデータを復号する方法は、ピクチャパラメータセット（ＰＰＳ：picture parameter set）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子（PPS-level palette predictor initializer）を使用して生成されるべきであることを示す（indicating）第１のシンタックス要素を受信することと、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、第１のシンタックス要素と第２のシンタックス要素とに基づいてビデオデータのブロックを復号することとを含む。
【０００８】
[0008]別の例では、ビデオデータを符号化する方法は、符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、ＰＰＳシンタックス構造中に含めるために、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、第１のシンタックス要素と第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することとを含む。
【０００９】
[0009]別の例によれば、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、１つまたは複数のプロセッサとを含み、１つまたは複数のプロセッサは、ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、第１のシンタックス要素と第２のシンタックス要素とに基づいてビデオデータのブロックを復号することとを行うように構成される。
【００１０】
[0010]別の例では、ビデオデータを符号化するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、１つまたは複数のプロセッサとを含み、１つまたは複数のプロセッサは、符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、ＰＰＳシンタックス構造中に含めるために、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、第１のシンタックス要素と第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することとを行うように構成される。
【００１１】
[0011]別の例では、ビデオデータを復号するための装置は、ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信するための手段と、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信する手段と、第１のシンタックス要素と第２のシンタックス要素とに基づいてビデオデータのブロックを復号する手段とを含む。
【００１２】
[0012]別の例では、ビデオデータを符号化するための装置は、符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成するための手段と、ＰＰＳシンタックス構造中に含めるために、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成するための手段と、第１のシンタックス要素と第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力するための手段とを含む。
【００１３】
[0013]別の例では、コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、第１のシンタックス要素と第２のシンタックス要素とに基づいてビデオデータのブロックを復号することとを行わせる命令を記憶する。
【００１４】
[0014]別の例では、コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、ＰＰＳシンタックス構造中に含めるために、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、第１のシンタックス要素と第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することとを行わせる命令を記憶する。
【００１５】
[0015]本開示の１つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１６】
【図１】[0016]本開示で説明される技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】[0017]本開示の技法に従って、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図。
【図３】[0018]本開示の技法に従って、ビデオブロックのためのパレットへのインデックスを決定することの例を示す概念図。
【図４】[0019]本開示で説明される技法を実装し得る例示的なビデオエンコーダを示すブロック図。
【図５】[0020]本開示で説明される技法を実装し得る例示的なビデオデコーダを示すブロック図。
【図６】[0021]本開示の１つまたは複数の技法による、ビデオエンコーダの例示的な動作を示すフローチャート。
【図７】[0022]本開示の１つまたは複数の技法による、ビデオデコーダの例示的な動作を示すフローチャート。
【図８】[0023]本開示の１つまたは複数の技法による、ビデオデコーダの例示的な動作を示すフローチャート。
【発明を実施するための形態】
【００１７】
[0024]本開示は、ビデオコーディング（たとえば、ビデオ符号化およびビデオ復号）ならびに圧縮のための技法について説明する。特に、本開示は、ビデオデータのパレットベースコーディングのための技法について説明する。パレットベースビデオコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、ピクセルのブロックについての（単に「パレット」とも呼ばれる）パレットテーブルを導出し、ここで、パレットテーブル中の各エントリは、パレットテーブルへのインデックスによって識別される色値を含む。
【００１８】
[0025]パレットモードでブロックをコーディングすることの一部として、ビデオコーダは、最初に、ブロックのために使用されるべきパレットテーブルを決定する。次いで、パレットからのどのエントリがピクセル（サンプル）を予測または再構築するために使用されるべきであるかを示すために、ブロックの各ピクセル（またはサンプル）のためのパレットインデックスがコーディングされ得る。本開示は、一般に、パレットを生成するための技法、すなわち、パレットのパレットエントリを決定するための技法を対象とする。より詳細には、本開示は、パレット予測子を初期化するための技法を対象とする。パレット予測子を初期化することは、一般に、ピクチャ、スライス、タイル、またはビデオブロックの他のそのようなグルーピングの第１のブロックのためのパレット予測子を生成するプロセスを指す。以下でより詳細に説明されるように、後続のブロックのためのパレット予測子は、典型的には、前に使用されたパレット予測子を更新することによって生成される。しかしながら、第１のブロックについて、前に使用されたパレット予測子は利用可能でなく、したがって、パレット予測子は初期化される必要がある。
【００１９】
[0026]パレットエントリをシグナリングするために必要とされるビットを低減するために、ビデオデコーダは、新しいパレットエントリを決定するためのパレット予測子を利用し得る。パレット予測子は、たとえば、前に使用されたパレットからのエントリを含み得る。いくつかの実装形態では、パレット予測子は、最も最近使用されたパレットに等しく設定され、最も最近使用されたパレットのすべてのエントリを含み得るが、他の実装形態では、パレット予測子は、最も最近使用されたパレットからのすべてのエントリよりも少ないエントリを含み得る。パレット予測子は、最も最近使用されたパレットだけのほかに、他の前に使用されたパレットからのエントリをも含み得る。パレット予測子は、コーディングブロックのために使用されるパレットと同じサイズであり得るか、またはコーディングブロックのために使用されるパレットよりも大きいかまたは小さいことがある。
【００２０】
[0027]パレット予測子を利用するビデオデータのブロックのためのパレットを生成するために、ビデオデコーダは、たとえば、パレット予測子の各エントリのための１ビットフラグを受信し得、フラグについての第１の値は、パレット予測子の関連付けられたエントリがパレット中に含まれることを示し、フラグについての第２の値は、パレット予測子の関連付けられたエントリがパレット中に含まれないことを示す。パレット予測子が、ビデオデータのブロックのために使用されるパレットよりも大きい事例では、次いで、ビデオデコーダは、パレットについての最大サイズが達せられると、フラグを受信することを停止し得る。
【００２１】
[0028]パレットのいくつかのエントリは、パレット予測子を使用して決定されるのではなく、直接シグナリングされ得る。そのようなエントリの場合、ビデオデコーダは、たとえば、エントリに関連付けられたルーマ成分と２つのクロマ成分とについての色値を示す３つの別個のｍビット値を受信し得、ただし、ｍはビデオデータのビット深度を表す。パレット予測子から導出されたパレットエントリが、直接シグナリングされたエントリのために必要とされる複数の（multiple）ｍビット値と比較して１ビットフラグのみを必要とするので、パレット予測子を使用して一部または全部のパレットエントリをシグナリングすることは、新しいパレットのエントリをシグナリングするために必要とされるビット数を低減し、その結果、パレットモードコーディングのコーディング効率全体を改善し得る。
【００２２】
[0029]上記で説明されたように、多くの事例では、１つのブロックのためのパレット予測子は、１つまたは複数のすでにコーディングされたブロックをコーディングするために使用されるパレットに基づいて決定される。しかしながら、スライスまたはタイル中の第１のコーディングツリーユニットをコーディングするときなど、いくつかのコーディングシナリオでは、前にコーディングされたブロックのパレットは利用不可能であり得、したがって、パレット予測子は、前に使用されたパレットのエントリを使用して生成されないことがある（cannot）。そのような事例では、パレット予測子初期化子はシーケンスパラメータセット（ＳＰＳ：sequence parameter set）および／またはピクチャパラメータセット（ＰＰＳ）中でシグナリングされ得る。パレット予測子初期化子は、前に使用されたパレットが利用可能でないとき、パレット予測子を生成するために使用され得る値である。
【００２３】
[0030]ＰＰＳは、一般に、各スライスセグメントヘッダ中に見られるシンタックス要素によって決定されるような０個以上のコード化ピクチャ全体に適用されるシンタックス要素を含んでいるシンタックス構造を参照する。ＳＰＳは、一般に、各スライスセグメントヘッダ中に見られるシンタックス要素によって参照されるＰＰＳ中に見られるシンタックス要素のコンテンツによって決定されるような０個以上のＣＶＳ全体に適用されるシンタックス要素を含んでいるシンタックス構造を参照する。したがって、ＳＰＳは、一般に、ＰＰＳよりも高いレベルのシンタックス構造であると見なされ、それは、ＳＰＳ中に含まれるシンタックス要素が、一般に、ＰＰＳ中に含まれるシンタックス要素と比較してより低い頻度で変化し、ビデオのより大きい部分に適用されることを意味する。
【００２４】
[0031]パレットモードコーディングの既存の実装形態では、パレット予測子初期化がＳＰＳレベルにおいて有効にされる場合、ＰＰＳレベルシンタックスは、（本明細書では、ＳＰＳレベルパレット予測子初期化子とも呼ばれる）ＳＰＳレベルパレット予測子エントリを使用してパレット予測子を生成することと、（本明細書では、ＰＰＳレベルパレット予測子初期化子とも呼ばれる）ＰＰＳレベルパレット予測子エントリを使用してパレット予測子を生成することとの間で選択するためにビデオデコーダを有効にするにすぎない。パレットモードコーディングの既存の実装形態は、ＳＰＳレベルにおいて有効にされると、パレット予測子初期化がＰＰＳレベルにおいて無効にされることを可能にしない。本開示は、パレット予測子のサイズを０に設定することによってＰＰＳレベルにおいてパレット予測子初期化を無効にするための技法を導入する。
【００２５】
[0032]さらに、パレットモードコーディングの既存の実装形態では、ビデオデコーダは、ＳＰＳパレット予測子初期化子またはＰＰＳパレット予測子初期化子のいずれかに基づいてパレット予測子を初期化する。本開示の技法によれば、ビデオデコーダは、ＳＰＳパレット予測子初期化子とＰＰＳパレット予測子初期化子の両方に基づいてパレット予測子を初期化し得る。たとえば、パレット予測子は、ＳＰＳパレット予測子エントリおよび後続の（followed by）ＰＰＳパレット予測子エントリ、またはその逆を含むことによって初期化され得る。他の例示的な実装形態では、ビデオデコーダは、ＳＰＳパレット予測子初期化子のうちのいくつかのみを使用し得、ＳＰＳパレット予測子初期化子のすべてを使用するとは限らない。たとえば、パレット予測子を初期化するとき、ＳＰＳパレット予測子エントリのどのエントリがパレット予測子初期化のために再利用されるべきであるかを示すために、再利用フラグがエントリごとにシグナリングされ得る。
【００２６】
[0033]ビデオコーダは、たとえば、スライスまたはタイル中の第１のブロック（たとえば、ＨＥＶＣにおけるコーディングユニットまたはコーディングツリーユニット、あるいは異なるコーディング規格における異なるタイプのブロック）のためのパレット予測子を決定、たとえば、初期化し得る。次いで、ブロックのためのパレットテーブルがパレット予測子から決定され得る。第１のブロックのためにパレット予測子が初期化された後、次いで、第１のブロックのためのパレット予測子は、第２のブロックのための新しいパレット予測子を決定するために更新され得る。
【００２７】
[0034]図１は、本開示で説明される技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示されているように、システム１０は、宛先デバイス１４によって後で復号されるべき符号化ビデオデータを生成するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００２８】
[0035]宛先デバイス１４は、リンク１６を介して復号されるべき符号化ビデオデータを受信し得る。リンク１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク１６は、ソースデバイス１２が、符号化ビデオデータをリアルタイムで宛先デバイス１４に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【００２９】
[0036]代替的に、符号化データは、出力インターフェース２２からストレージデバイス２６に出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイス２６からアクセスされ得る。ストレージデバイス２６は、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス２６は、ソースデバイス１２によって生成された符号化ビデオを保持し得る、ファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ストレージデバイス２６から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス１４に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、（たとえば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブがある。宛先デバイス１４は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ストレージデバイス２６からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００３０】
[0037]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００３１】
[0038]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。場合によっては、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤード適用例に適用され得る。
【００３２】
[0039]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオデータは、ソースデバイス１２の出力インターフェース２２を介して宛先デバイス１４に直接送信され得る。符号化ビデオデータは、さらに（または代替的に）、復号および／または再生のための宛先デバイス１４または他のデバイスによる後のアクセスのためにストレージデバイス２６上に記憶され得る。
【００３３】
[0040]宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。場合によっては、入力インターフェース２８は受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、リンク１６を介して符号化ビデオデータを受信する。リンク１６を介して通信され、またはストレージデバイス２６上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ３０など、ビデオデコーダが使用するためのビデオエンコーダ２０によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ記憶される符号化ビデオデータとともに含まれ得る。
【００３４】
[0041]ディスプレイデバイス３２は、宛先デバイス１４と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４はディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号ビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３５】
[0042]ビデオエンコーダ２０およびビデオデコーダ３０は、最近確定された高効率ビデオコーディング（ＨＥＶＣ）規格などのビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ：HEVC Test Model）に準拠し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４，Ｐａｒｔ１０，アドバンストビデオコーディング（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例としては、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。ビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、それのスケーラブルビデオコーディング（ＳＶＣ）拡張とマルチビュービデオコーディング（ＭＶＣ）拡張とを含む、（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＴＵ−Ｔ  Ｈ．２６４およびＩＴＵ−Ｔ  Ｈ．２６５／ＨＥＶＣを含む。
【００３６】
[0043]最近、動きがあるテキストおよびグラフィックスなど、スクリーンコンテンツ材料のための新しいコーディングツールの調査が要求され、スクリーンコンテンツのためのコーディング効率を改善する技術が提案されている。この活動は現在進行中であり、Ｈ．２６５／ＨＥＶＣスクリーンコンテンツコーディング（ＳＣＣ：screen content coding）拡張として完了されることが予想される。ＪＣＴＶＣ−Ｕ１００５、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１とのジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）、第２１回会合：ワルシャワ、ポーランド、２０１５年６月１９日〜６月２６日はＨＥＶＣ  ＳＣＣ  Ｗｏｒｋｉｎｇ  Ｄｒａｆｔ  ４（ＷＤ４）ＪＣＴＶＣ−Ｕ１００５を記載しており、http://phenix.int-evry.fr/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U1005-v2.zipにおいて入手可能であり、その内容全体は、参照により本明細書に組み込まれる。
【００３７】
[0044]本開示の技法は、説明を簡単にするためにＨＥＶＣ用語を利用し得る。しかしながら、本開示の技法がＨＥＶＣに限定されると仮定されるべきでなく、実際は、本開示の技法が、ＨＥＶＣの後継規格およびその拡張、ならびに他の将来の規格またはプロセスにおいて実装され得ることが明示的に企図される。
【００３８】
[0045]図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３９】
[0046]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために１つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００４０】
[0047]上記で紹介されたように、ＪＣＴ−ＶＣはＨＥＶＣ規格の開発を最近確定した。ＨＥＶＣ規格化の取り組みは、ＨＥＶＣテストモデル（ＨＭ）と呼ばれるビデオコーディングデバイスの発展的モデルに基づいていた。ＨＭは、たとえば、ＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、Ｈ．２６４は９つのイントラ予測符号化モードを与えるが、ＨＭは３５個ものイントラ予測符号化モードを与え得る。
【００４１】
[0048]ＨＥＶＣおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCb、およびＳCrと示される３つのサンプルアレイを含み得る。ＳLはルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbはＣｂクロミナンスサンプルの２次元アレイである。ＳCrはＣｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００４２】
[0049]ピクチャの符号化表現を生成するために、ビデオエンコーダ２０はコーディングツリーユニット（ＣＴＵ：coding tree unit）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの２つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＴＵは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ：largest coding unit）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００４３】
[0050]コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するためにＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実行し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのＮ×Ｎブロックであり得る。ＣＵは、ルーマサンプルアレイとＣｂサンプルアレイとＣｒサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの２つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＵは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００４４】
[0051]ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックである。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＰＵは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのための予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを生成し得る。
【００４５】
[0052]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号サンプルに基づいてＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０が、ＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【００４６】
[0053]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを生成した後、ビデオエンコーダ２０は、ＣＵのためのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つ中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０はＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つ中のＣｂサンプルとＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差を示し得る。ビデオエンコーダ２０はＣＵのためのＣｒ残差ブロックをも生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つ中のＣｒサンプルとＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００４７】
[0054]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックとＣｂ残差ブロックとＣｒ残差ブロックとを１つまたは複数のルーマ変換ブロックとＣｂ変換ブロックとＣｒ変換ブロックとに分解するために４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形（たとえば、正方形または非正方形）ブロックである。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＴＵは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００４８】
[0055]ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００４９】
[0056]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を実施し得る。
【００５０】
[0057]ビデオエンコーダ２０は、コード化ピクチャと関連データとの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、ＮＡＬユニットのシーケンスを備え得る。ＮＡＬユニットは、ＮＡＬユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在させられたＲＢＳＰの形態でそのデータを含んでいるバイトとを含んでいる、シンタックス構造である。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ＲＢＳＰをカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、ＲＢＳＰは０ビットを含む。
【００５１】
[0058]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはＰＰＳのためのＲＢＳＰをカプセル化し得、第２のタイプのＮＡＬユニットはコード化スライスのためのＲＢＳＰをカプセル化し得、第３のタイプのＮＡＬユニットはＳＥＩメッセージのためのＲＢＳＰをカプセル化し得、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ＶＣＬ  ＮＡＬユニットと呼ばれることがある。
【００５２】
[0059]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ３０は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ３０は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、概して、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。さらに、ビデオデコーダ３０は、現在ＣＵのＴＵに関連付けられた係数ブロックを逆量子化（inverse quantize）し得る。ビデオデコーダ３０は、現在ＣＵのＴＵに関連付けられた変換ブロックを再構築するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ３０は、現在ＣＵのＰＵのための予測ブロックのサンプルを現在ＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在ＣＵのコーディングブロックを再構築し得る。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築し得る。
【００５３】
[0060]図２は、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。図２の例は、パレットの第１のセット（すなわち、第１のパレット１８４）に関連付けられた第１のブロック１８０と、パレットの第２のセット（すなわち、第２のパレット１９２）に関連付けられた第２のブロック１８８とを有するピクチャ１７８を含む。以下でより詳細に説明されるように、第２のパレット１９２は第１のパレット１８４に基づき得る。ピクチャ１７８は、イントラ予測コーディングモードを用いてコーディングされるブロック１９６と、インター予測コーディングモードを用いてコーディングされるブロック２００とをも含む。
【００５４】
[0061]図２の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）のコンテキストにおいて説明される。パレットベースコーディング技法は、たとえば、ビデオデータのブロックのためのコーディングモードとして使用され得る。図２に関して説明される様々なブロックは、たとえば、ＨＥＶＣのコンテキストにおいて理解されるようにＣＴＵ、ＣＵ、ＰＵ、またはＴＵに対応し得るが、図２で説明されるブロックは、任意の特定のコーディング規格のブロック構造に限定されず、ＨＥＢＣとは異なるブロックフォーマットを利用する将来のコーディング規格に適合し得る。
【００５５】
[0062]概して、パレットは、現在コーディングされているブロック（たとえば、図２の例ではブロック１８８）について支配的である、および／またはそのブロックを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、（ビデオエンコーダ２０またはビデオデコーダ３０などの）ビデオコーダは、ブロックの各色成分について別々にパレットをコーディングし得る。たとえば、ビデオエンコーダ２０は、ブロックのルーマ（Ｙ）成分のためのパレットと、ブロックのクロマ（Ｕ）成分のための別のパレットと、ブロックのクロマ（Ｖ）成分のためのまた別のパレットとを符号化し得る。この例では、ＹパレットのエントリはブロックのピクセルのＹ値を表し得、ＵパレットのエントリはブロックのピクセルのＵ値を表し得、ＶパレットのエントリはブロックのピクセルのＶ値を表し得る。
【００５６】
[0063]他の例では、ビデオエンコーダ２０は、ブロックのすべての色成分について単一のパレットを符号化し得る。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、トリプル値であるｉ番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々についての値を含む。したがって、複数の個々のパレットを有するパレットのセットとしての第１のパレット１８４および第２のパレット１９２の表現は、一例にすぎず、限定することは意図されない。
【００５７】
[0064]図２の例では、第１のパレット１８４の各々は、それぞれ、エントリインデックス値１、エントリインデックス値２、およびエントリインデックス値３を有する３つのエントリ２０２〜２０６を含む。エントリ２０２〜２０６は、それぞれ、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｃを含むピクセル値に、インデックス値を関係付ける。第１のパレット１８４の各々は、実際にインデックスと列ヘッダとを含まないが、ピクセル値Ａ、Ｂ、およびＣのみを含み、インデックスは、パレット中のエントリを識別するために使用されることに留意されたい。
【００５８】
[0065]本明細書で説明されるように、第１のブロック１８０の実際のピクセル値を直接コーディングするのではなく、（ビデオエンコーダ２０またはビデオデコーダ３０などの）ビデオコーダは、インデックス１〜３を使用してブロックのピクセルをコーディングするためにパレットベースコーディングを使用し得る。すなわち、第１のブロック１８０の各ピクセル位置について、ビデオエンコーダ２０はピクセルについてのインデックス値を符号化し得、インデックス値は、第１のパレット１８４のうちの１つまたは複数の中のピクセル値に関連付けられる。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し得、インデックス値と第１のパレット１８４のうちの１つまたは複数とを使用してピクセル値を再構築し得る。言い換えれば、ブロックについてのそれぞれのインデックス値ごとに、ビデオデコーダ３０は、第１のパレット１８４のうちの１つの中のエントリを決定し得る。ビデオデコーダ３０は、ブロック中のそれぞれのインデックス値を、パレット中の決定されたエントリによって指定されたピクセル値と交換し得る。ビデオエンコーダ２０は、パレットベース復号におけるビデオデコーダ３０による使用のために、符号化ビデオデータビットストリーム中で第１のパレット１８４を送信し得る。一般に、１つまたは複数のパレットが、各ブロックのために送信され得るか、または異なるブロックの間で共有され得る。
【００５９】
[0066]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、１つまたは複数のパレット予測子に基づいて第２のパレット１９２を決定し得る。パレット予測子は、たとえば、第１のパレット１８４のエントリの一部または全部を含み、場合によっては、他のパレットからのエントリをも含み得る。いくつかの例では、パレット予測子は、第１のパレット１８４のエントリをパレット予測子に追加すると、パレット予測子を最大サイズ以下に保つために、現在、パレット予測子中の最も古いエントリが抹消される（expunged）、先入れ先出し方法を使用して生成され得る。他の例では、パレット予測子は、異なる技法を使用して更新および／または維持され得る。本開示の技法は、一般に、パレット予測子を初期化することを対象とし、パレット予測子を更新および維持するための多数の異なる技法とともに使用され得る。
【００６０】
[0067]本開示の技法は、一般に、パレット予測子に基づいてパレットを生成することを対象とし、より詳細には、パレット予測子の初期化を制御するための技法を対象とするが、本開示の技法は、パレットを生成するための他の技法とともに使用され得る。一例として、ビデオエンコーダ２０は、（空間的な、または走査順序に基づく）隣接ブロック、または原因となるネイバーの最も頻繁なサンプルなど、１つまたは複数の他のブロックに関連付けられた１つまたは複数のパレットから、ブロックのためのパレットが予測されるかどうかを示すために、（一例として、第２のブロック１８８を含む）各ブロックのためのｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを符号化し得る。たとえば、そのようなフラグの値が１に等しいとき、ビデオデコーダ３０は、第２のブロック１８８のための第２のパレット１９２が１つまたは複数のすでに復号されたパレットから予測され、したがって、第２のブロック１８８のための新しいパレットがｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを含んでいるビットストリーム中に含まれないと決定し得る。そのようなフラグが０に等しいとき、ビデオデコーダ３０は、第２のブロック１８８のための第２のパレット１９２が新しいパレットとしてビットストリーム中に含まれると決定し得る。いくつかの例では、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、ブロックの各異なる色成分について別々にコーディングされ得る（たとえば、ＹＵＶビデオにおけるブロックの場合、３つのフラグ、すなわち、Ｙのために１つ、Ｕのために１つ、およびＶのために１つ）。他の例では、単一のｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、ブロックのすべての色成分についてコーディングされ得る。
【００６１】
[0068]上記の例では、現在のブロックのためのパレットのエントリのいずれかが予測されるかどうかを示すために、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇがブロックごとにシグナリングされる。これは、第２のパレット１９２が第１のパレット１８４と同等であり、追加の情報がシグナリングされないことを意味する。他の例では、１つまたは複数のシンタックス要素はエントリごとにシグナリングされ得る。すなわち、現在のパレット中にエントリが存在するかどうかを示すために、フラグがパレット予測子の各エントリについてシグナリングされ得る。上述のように、パレットのエントリが予測されない場合、パレットのエントリは明示的にシグナリングされ得る。他の例では、これらの２つの方法が組み合わせられ得る。たとえば、最初に、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇがシグナリングされる。フラグが０である場合、エントリごとの予測フラグがシグナリングされ得る。さらに、新しいエントリの数およびそれらの明示的な値がシグナリングされ得る。
【００６２】
[0069]第１のパレット１８４に対して第２のパレット１９２を決定する（たとえば、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇが１に等しい）とき、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測パレットが、この例では第１のパレット１８４が、それから決定される１つまたは複数のブロックの位置を特定し得る。予測パレットは、（たとえば、（空間的な、または走査順序に基づく）隣接ブロック、または原因となるネイバーの最も頻繁なサンプルなど）現在コーディングされているブロックの１つまたは複数の隣接ブロック、すなわち第２のブロック１８８に関連付けられ得る。１つまたは複数の隣接ブロックのパレットは予測パレットに関連付けられ得る。図２に示されている例など、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第２のブロック１８８のための予測パレットを決定するとき、左側隣接ブロック、すなわち、第１のブロック１８０の位置を特定し得る。他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、上のブロック、すなわち、ブロック１９６など、第２のブロック１８８に対して他の位置にある１つまたは複数のブロックの位置を特定し得る。別の例では、パレットモードを使用した走査順序中の最後のブロックのためのパレットが、予測パレットとして使用され得る。
【００６３】
[0070]ビデオエンコーダ２０および／またはビデオデコーダ３０は、階層に基づいてパレット予測のためのブロックを決定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、最初に、パレット予測のために、左側隣接ブロック、すなわち、第１のブロック１８０を識別し得る。左側隣接ブロックが予測のために利用可能でない（たとえば、左側隣接ブロックが、イントラ予測モードまたはイントラ予測モードなど、パレットベースコーディングモード以外のモードでコーディングされるか、あるいはピクチャまたはスライスの左端に位置する）場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、上側隣接ブロック、すなわち、ブロック１９６を識別し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレット予測のために利用可能なパレットを有するブロックの位置を特定するまで、ロケーションの所定の順序に従って利用可能なブロックを探索し続け得る。いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、複数のブロック、および／または隣接ブロックの再構築されたサンプルに基づいて予測パレットを決定し得る。
【００６４】
[0071]図２の例は、単一のブロック（すなわち、第１のブロック１８０）からの予測パレットとして第１のパレット１８４を示すが、他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、隣接ブロックの組合せから予測のためのパレットの位置を特定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダは、複数の（空間的な、または走査順序での）隣接ブロックの１つまたは組合せのパレットに基づいて予測パレットを生成するために、１つまたは複数の式、関数、ルールなどを適用し得る。
【００６５】
[0072]さらに他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構築し得る。そのような例では、ビデオエンコーダ２０は、パレット予測のために使用される現在ブロックがそこから選択される（たとえば、パレットをコピーする）リスト中の候補ブロックを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ３０は、同じ方式で候補リストを構築し、インデックスを復号し、現在ブロックとともに使用するための対応するブロックのパレットを選択するために、復号されたインデックスを使用し得る。別の例では、リスト中の示された候補ブロックのパレットは、現在ブロックのための現在のパレットのエントリごとの予測のための予測パレットとして使用され得る。
【００６６】
[0073]説明の目的のための一例では、ビデオエンコーダ２０およびビデオデコーダ３０は、現在コーディングされているブロックの上に配置された１つのブロックと、現在コーディングされているブロックの左に配置された１つのブロックとを含む、候補リストを構築し得る。この例では、ビデオエンコーダ２０は、候補選択を示すために１つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ２０は、現在ブロックのためのパレットが現在ブロックの左に配置されたブロックからコピーされることを示すために、０の値を有するフラグを符号化し得る。ビデオエンコーダ２０は、現在ブロックのためのパレットが現在ブロックの上に配置されたブロックからコピーされることを示すために、１の値を有するフラグを符号化し得る。ビデオデコーダ３０はフラグを復号し、パレット予測のために適切なブロックを選択する。別の例では、フラグは、上または左隣接ブロックのパレットが予測パレットとして使用されるかどうかを示し得る。次いで、予測パレット中の各エントリについて、そのエントリが現在ブロックのためのパレット中で使用されるかどうかが示され得る。
【００６７】
[0074]さらに他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、１つまたは複数の他のパレット中に含まれるサンプル値が１つまたは複数の隣接ブロックの中で現れる頻度に基づいて、現在コーディングされているブロックのためのパレットを決定する。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、所定の数のブロックのコーディング中に最も頻繁に使用されるインデックス値に関連付けられた色を追跡し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在コーディングされているブロックのためのパレットに、最も頻繁に使用される色を含め得る。
【００６８】
[0075]上述のように、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダは、現在ブロックをコーディングするために、隣接ブロックからパレット全体をコピーし得る。追加、または代替として、ビデオエンコーダ２０および／またはビデオデコーダ３０は、エントリごとの（entry-wise based）パレット予測を実行し得る。たとえば、ビデオエンコーダ２０は、予測パレット（たとえば、別のブロックのパレット）に基づいて、それぞれのエントリが予測されるかどうかを示す、パレットの各エントリのための１つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ２０は、エントリが予測パレットからの予測された値（たとえば、隣接ブロックに関連付けられたパレットの対応するエントリ）であるとき、所与のエントリのための１の値を有するフラグを符号化し得る。ビデオエンコーダ２０は、特定のエントリが別のブロックのパレットから予測されないことを示すために、その特定のエントリのための０の値を有するフラグを符号化し得る。この例では、ビデオエンコーダ２０はまた、予測されないパレットエントリの値を示す追加のデータを符号化し得る。
【００６９】
[0076]本開示は、現在のブロックのためのパレットを予測するためのいくつかの代替的な技法について説明する。一例では、１つまたは複数の前にコーディングされた隣接ブロックからのパレットエントリを含む予測パレットは、エントリの数、Ｎを含む。この場合、ビデオエンコーダ２０は、最初に、予測パレットと同じサイズ、すなわち、サイズＮを有するバイナリベクトルＶをビデオデコーダ３０に送信する。バイナリベクトル中の各エントリは、予測パレット中の対応するエントリが現在ブロックのためのパレットに対して再利用またはコピーされることになるかどうかを示す。たとえば、Ｖ（ｉ）＝１は、隣接ブロックのための予測パレット中のｉ番目のエントリが、現在ブロック中に異なるインデックスを有し得る、現在ブロックのためのパレットに対して再利用またはコピーされることになることを意味する。
【００７０】
[0077]さらに、ビデオエンコーダ２０は、いくつの新しいパレットエントリが現在ブロックのためのパレット中に含まれるかを示す数Ｍを送信し得、次いで、新しいパレットエントリの各々についてのピクセル値をビデオデコーダ３０に送信する。この例では、現在ブロックのためのパレットの最終的なサイズは、Ｍ＋Ｓに等しいものとして導出され得、ただし、Ｓは、現在ブロックのためのパレットに対して再利用またはコピーされ得る（すなわち、Ｖ（ｉ）＝１）予測パレット中のエントリの数である。現在ブロックのためのパレットを生成するために、ビデオデコーダ３０は、送信された新しいパレットエントリと、予測パレットから再利用されるコピーされたパレットエントリとをマージし得る。場合によっては、マージはピクセル値に基づき得、したがって、現在ブロックのためのパレット中のエントリは、パレットインデックスとともに増加（または減少）し得る。他の場合には、マージは、エントリの２つのセット、すなわち、新しいパレットエントリおよびコピーされたパレットエントリの連結であり得る。
【００７１】
[0078]別の例では、ビデオエンコーダ２０は、最初に、現在ブロックのためのパレットのサイズＮの指示をビデオデコーダ３０に送信する。次いで、ビデオエンコーダ２０は、現在ブロックのためのパレットと同じサイズ、すなわち、サイズＮを有するベクトルＶをビデオデコーダ３０に送信する。ベクトル中の各エントリは、現在ブロックのためのパレット中の対応するエントリがビデオエンコーダ２０によって明示的に送信されるか、または予測パレットからコピーされるかを示す。たとえば、Ｖ（ｉ）＝１は、ビデオエンコーダ２０がパレット中のｉ番目のエントリをビデオデコーダ３０に送信することを意味し、Ｖ（ｉ）＝０は、パレット中のｉ番目のエントリが予測パレットからコピーされることを意味する。予測パレットからコピーされる（すなわち、Ｖ（ｉ）＝０）エントリの場合、ビデオエンコーダ２０は、予測パレット中のどのエントリが現在ブロックのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用し得る。場合によっては、ビデオエンコーダ２０は、現在ブロックのためのパレットに予測パレットからコピーされるべきエントリのパレットインデックスをシグナリングし得る。他の場合には、ビデオエンコーダ２０は、インデックスオフセットをシグナリングし得、インデックスオフセットは、現在ブロックのためのパレット中のインデックスと予測パレット中のインデックスとの間の差分である。
【００７２】
[0079]２つの上記の例では、現在ブロックのためのパレットの予測のために使用される予測パレットを生成するために使用される１つまたは複数の前にコーディングされた隣接ブロックは、現在ブロックに対して上の隣接（すなわち、上の）ブロックまたは左の隣接ブロックであり得る。いくつかの例では、隣接ブロックの候補リストが構築され得、ビデオエンコーダ２０は、どの候補隣接ブロックおよび関連付けられたパレットが現在ブロックのためのパレット予測のために使用されるかを示すために、インデックスを送信する。いくつかのブロック、たとえば、スライスの始端もしくは他のスライス境界に配置されたブロック、またはビデオデータのスライスもしくはピクチャ中の最も左のブロックについて、パレット予測は無効にされ得る。
【００７３】
[0080]追加の例では、ビデオエンコーダ２０は、現在ブロックのためのパレット中に含まれるエントリの数の指示をビデオデコーダ３０に送信する。次いで、パレットエントリの各々について、ビデオエンコーダ２０は、パレットエントリがビデオエンコーダ２０によって明示的に送信されるかどうか、またはパレットエントリが前に再構築されたピクセルから導出されるかどうかを示すために、フラグまたは他のシンタックス要素を送信する。たとえば、１に等しく設定された１ビットのフラグは、ビデオエンコーダ２０がパレットエントリを明示的に送ることを意味し得、０に等しく設定された１ビットのフラグは、パレットエントリが前に再構築されたピクセルから導出されることを意味し得る。前に再構築されたピクセルから導出されるパレットエントリの各々について、ビデオエンコーダ２０は、パレットエントリに対応する現在ブロックまたは隣接ＣＵ中の再構築されたピクセルのピクセルロケーションに関する別の指示を送信する。場合によっては、再構築されたピクセルロケーション指示は、現在ブロックの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーション指示は、現在ブロックのためのパレットエントリを指定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、ＨＥＶＣにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
【００７４】
[0081]図２の例では、第２のパレット１９２は、エントリインデックス値１、エントリインデックス値２、エントリインデックス値３、およびエントリインデックス４をそれぞれ有する、４つのエントリ２０８〜２１４を含む。エントリ２０８〜２１４は、インデックス値を、ピクセル値Ａ、ピクセル値Ｂ、ピクチャ値Ｃ、およびピクセル値Ｄをそれぞれ含むピクセル値に関係付ける。本開示の１つまたは複数の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレット予測の目的で第１のブロック１８０の位置を特定し、第１のパレット１８４のエントリ１〜３を、第２のブロック１８８をコーディングするための第２のパレット１９２のエントリ１〜３にコピーするために、上記で説明された技法のいずれかを使用し得る。このようにして、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。さらに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第２のパレット１９２とともに含まれるべきエントリ４のためのデータをコーディングし得る。そのような情報は、予測パレットから予測されないパレットエントリの数と、それらのパレットエントリに対応するピクセル値とを含み得る。
【００７５】
[0082]いくつかの例では、本開示の態様によれば、１つまたは複数のシンタックス要素は、第２のパレット１９２などのパレットが（図２では第１のパレット１８４として示されているが、１つまたは複数のブロックからのエントリから構成され得る）予測パレットから完全に予測されるかどうか、または第２のパレット１９２の特定のエントリが予測されるかどうかを示し得る。たとえば、初期シンタックス要素は、エントリのすべてが予測されるかどうかを示し得る。初期シンタックス要素が、エントリのすべてが予測されるとは限らないことを示す（たとえば、０の値を有するフラグ）場合、１つまたは複数の追加のシンタックス要素が、第２のパレット１９２のどのエントリが予測パレットから予測されるかを示し得る。
【００７６】
[0083]本開示のいくつかの態様によれば、パレット予測に関連付けられたいくつかの情報は、コーディングされているデータの１つまたは複数の特性から推論され得る。すなわち、ビデオエンコーダ２０がシンタックス要素を符号化する（および、ビデオデコーダ３０がそのようなシンタックス要素を復号する）のではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、コーディングされているデータの１つまたは複数の特性に基づいてパレット予測を実行し得る。
【００７７】
[0084]一例では、説明の目的で、上記で説明されたｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇの値は、例として、コーディングされているブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤｉｄ、および／またはマルチビューコーディングにおけるビューｉｄのうちの１つまたは複数から推論され得る。すなわち、一例として、ブロックのサイズに関して、ビデオエンコーダ２０および／またはビデオデコーダ３０は、上記で説明されたｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇが、所定のサイズを超えるかまたはそれ未満である任意のブロックについて１に等しいと決定し得る。この例では、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、符号化ビットストリーム中でシグナリングされる必要はない。
【００７８】
[0085]ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇに関して上記で説明されたが、ビデオエンコーダ２０および／またはビデオデコーダ３０は、同じくまたは代替的に、コーディングされているデータの１つまたは複数の特性に基づいて、そこからパレットが予測のために使用される候補ブロック、またはパレット予測候補を構築するためのルールなど、パレット予測に関連付けられた他の情報を推論し得る。
【００７９】
[0086]本開示の他の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、オンザフライでパレットを構築し得る。たとえば、第２のブロック１８８を最初にコーディングするとき、第２のパレット１９２中にエントリはない。ビデオエンコーダ２０およびビデオデコーダ３０が第２のブロック１８８のピクセルのための新しい値をコーディングするにつれて、各新しい値が第２のパレット１９２中に含められる。すなわち、たとえば、ビデオエンコーダ２０は、ピクセル値がブロック１８８の中の位置のために生成およびシグナリングされるにつれて、ピクセル値を第２のパレット１９２に追加する。ビデオエンコーダ２０はブロックにおいて相対的により後でピクセルを符号化するので、ビデオエンコーダ２０は、ピクセル値をシグナリングするのではなく、インデックス値を使用して、パレット中にすでに含まれるものと同じ値を有するピクセルを符号化し得る。同様に、ビデオデコーダ３０が第２のブロック１８８の中の位置のための（たとえば、ビデオエンコーダ２０によってシグナリングされる）新しいピクセル値を受信するとき、ビデオデコーダ３０は、ピクセル値を第２のパレット１９２中に含める。第２のブロック１８８において相対的により後で復号されるピクセル位置が、第２のパレット１９２に追加されているピクセル値を有するとき、ビデオデコーダ３０は、第２のブロック１８８のピクセル値の再構築のために、第２のパレット１９２中の対応するピクセル値を識別する情報、たとえばインデックス値などを受信し得る。
【００８０】
[0087]いくつかの例では、以下でより詳細に説明されるように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第１のパレット１８４および第２のパレット１９２を最大パレットサイズ以下に維持し得る。本開示の態様によれば、最大パレットサイズが達せられる場合、たとえば、第２のパレット１９２がオンザフライで動的に構築されるにつれて、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第２のパレット１９２のエントリを除去するために同じプロセスを実行する。パレットエントリを除去するための１つの例示的なプロセスは、ビデオエンコーダ２０およびビデオデコーダ３０がパレットの最も古いエントリを除去する先入れ先出し（ＦＩＦＯ）技法である。別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットから最も使用頻度の低いパレットエントリを除去し得る。さらに別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのエントリを除去すべきかを決定するために、ＦＩＦＯプロセスと使用頻度のプロセスの両方を重視し得る。すなわち、エントリの除去は、エントリがどのくらい古いか、およびエントリがどのくらい頻繁に使用されるかに基づき得る。
【００８１】
[0088]いくつかの態様によれば、エントリ（ピクセル値）がパレットから除去され、ピクセル値がコーディングされているブロック中のより後の位置において再び現れる場合、ビデオエンコーダ２０は、パレットにエントリを含めてインデックスを符号化する代わりに、ピクセル値を符号化し得る。追加または代替として、ビデオエンコーダ２０は、除去された後で、たとえば、ビデオエンコーダ２０およびビデオデコーダ３０がブロック中の位置を走査するとき、パレットエントリをパレットに再び入れ得る。
【００８２】
[0089]いくつかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための１つまたは複数の他の技法と組み合わせられ得る。具体的には、一例として、ビデオエンコーダ２０およびビデオデコーダ３０は、（たとえば、第１のパレット１８４から第２のパレット１９２を予測するためにパレット予測を使用して）第２のパレット１９２を最初にコーディングし得、第２のブロック１８８のピクセルをコーディングするときに第２のパレット１９２を更新し得る。たとえば、初期パレットを送信すると、ビデオエンコーダ２０は、ブロック中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加するか、または初期パレット中の値を変更し得る。同様に、初期パレットを受信すると、ビデオデコーダ３０は、ブロックの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加する（すなわち、含める）か、または初期パレット中の値を変更し得る。
【００８３】
[0090]ビデオエンコーダ２０は、いくつかの例では、現在ブロックがパレット全体の送信を使用するのか、オンザフライのパレット生成を使用するのか、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するのかをシグナリングし得る。いくつかの例では、初期パレットは、最大パレットサイズの完全なパレットであり得、その場合、初期パレット中の値は変更され得る。他の例では、初期パレットは、最大パレットサイズよりも小さくなり得、その場合、ビデオエンコーダ２０およびビデオデコーダ３０は、初期パレットの値に値を追加し、および／または初期パレットの値を変更し得る。
【００８４】
[0091]本開示の１つまたは複数の態様によれば、たとえば、パレット中に含まれるピクセル値の数に関する、第１のパレット１８４および第２のパレット１９２などのパレットのサイズは、固定され得るか、または符号化ビットストリーム中の１つまたは複数のシンタックス要素を使用してシグナリングされ得る。たとえば、いくつかの態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズをコーディングするために、単項コードまたは切捨て単項コード（たとえば、最大限のパレットサイズにおいて切り捨てるコード）を使用し得る。他の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットサイズをコーディングするために、指数ゴロム（exponential Golomb）コードまたはライス−ゴロム（Rice-Golomb）コードを使用し得る。
【００８５】
[0092]さらに他の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットの各エントリの後でパレットのサイズを示すデータをコーディングし得る。一例として、第２のパレット１９２に関して、ビデオエンコーダ２０は、エントリ２０８〜２１４の各々の後で停止フラグを符号化し得る。この例では、１に等しい停止フラグは、現在コーディングされているエントリが第２のパレット１９２の最後のエントリであることを指定し得るが、０に等しい停止フラグは、第２のパレット１９２中に追加のエントリがあることを示し得る。したがって、ビデオエンコーダ２０は、エントリ２０８〜２１２の各々の後で０の値を有する停止フラグを符号化し、エントリ２１４の後で１の値を有する停止フラグを符号化し得る。いくつかの事例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリーム中に含まれないことがある。上記の例は、パレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報（たとえば、上述のように、コーディングされているブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤｉｄ、またはマルチビューコーディングにおけるビューｉｄなど、特性情報）に基づいて、条件的に送信または推論され得る。
【００８６】
[0093]本開示の技法は、可逆的にデータをコーディングすること、または代替的に、いくらかの損失を伴ってデータをコーディングすること（不可逆コーディング）を含む。たとえば、不可逆コーディングに関して、ビデオエンコーダ２０は、パレットのピクセル値を厳密にＣＵ中の実際のピクセル値と厳密に照合することなく、ＣＵのピクセルをコーディングし得る。本開示の技法が不可逆コーディングに適用されるとき、いくつかの制限がパレットに適用され得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４および第２のパレット１９２など、パレットを量子化し得る。すなわち、ビデオエンコーダ２０およびビデオデコーダ３０は、エントリのピクセル値が互いの所定の範囲内にあるとき、パレットのエントリをマージしまたは組み合わせ得る（すなわち、量子化し得る）。言い換えれば、新しいパレット値の誤差マージン内にあるパレット値がすでにある場合、新しいパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なるピクセル値が、単一のパレットエントリに、または等価的に、単一のパレットピクセル値にマッピングされ得る。
【００８７】
[0094]ビデオデコーダ３０は、特定のパレットが可逆的であるか不可逆的であるかにかかわらず、同じ様式でピクセル値を復号し得る。一例として、ビデオデコーダ３０は、コード化ブロック中の所与のピクセル位置のためにビデオエンコーダ２０によって送信されるインデックス値を使用して、パレットが可逆的であるか不可逆的であるかを顧慮せずに、そのピクセル位置についてパレット中のエントリを選択し得る。この例では、パレットエントリのピクセル値は、それが元のピクセル値と厳密に一致するかどうかにかかわらず、コード化ブロック中のピクセル値として使用される。
【００８８】
[0095]不可逆コーディングの例では、説明の目的で、ビデオエンコーダ２０は、デルタ値と呼ばれる誤差限界を決定し得る。候補ピクセル値エントリＰｌｔ＿ｃａｎｄは、ＣＵまたはＰＵなどのコーディングされるべきブロック中のある位置におけるピクセル値に対応し得る。パレットの構築中に、ビデオエンコーダ２０は、候補ピクセル値エントリＰｌｔ＿ｃａｎｄとパレット中の既存のピクセル値エントリのすべてとの間の絶対差分を決定する。候補ピクセル値エントリＰｌｔ＿ｃａｎｄとパレット中の既存のピクセル値エントリとの間の絶対差分のすべてが、デルタ値よりも大きい場合、ビデオエンコーダ２０は、ピクセル値候補をエントリとしてパレットに追加し得る。ピクセル値エントリＰｌｔ＿ｃａｎｄとパレット中の少なくとも１つの既存のピクセル値エントリとの間の絶対差分が、デルタ値に等しいかまたはそれよりも小さい場合、ビデオエンコーダ２０は、候補ピクセル値エントリＰｌｔ＿ｃａｎｄをパレットに追加しないことがある。したがって、ピクセル値エントリＰｌｔ＿ｃａｎｄをコーディングするとき、ビデオエンコーダ２０は、ピクセル値エントリＰｌｔ＿ｃａｎｄに最も近いピクセル値をもつエントリを選択し、それによって、いくらかの損失をシステムにもたらし得る。パレットが複数の成分（たとえば、３つの色成分）から構成されるとき、個々の成分値の絶対差分の合計が、デルタ値に対する比較のために使用され得る。代替または追加として、各成分値についての絶対差分は、第２のデルタ値に対して比較され得る。
【００８９】
[0096]いくつかの例では、上述されたパレット中の既存のピクセル値エントリが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存のピクセル値が、他のプロセスを使用して追加されていることがある。たとえば、１つまたは複数の初期ピクセル値エントリが、パレットを構築するデルタ比較プロセスを開始するために（デルタ比較なしに）パレットに追加され得る。上記で説明されたプロセスは、ルーマパレットおよび／またはクロマパレットを生成するために、ビデオエンコーダ２０および／またはビデオデコーダ３０によって実装され得る。
【００９０】
[0097]パレット構築に関して上記で説明された技法も、ピクセルコーディング中にビデオエンコーダ２０およびビデオデコーダ３０によって使用され得る。たとえば、ピクセル値を符号化するとき、ビデオエンコーダ２０は、ピクセルの値をパレット中のエントリのピクセル値と比較し得る。ピクセルの値とパレット中のエントリのうちの１つとの間の絶対ピクセル値差分が、デルタ値に等しいかまたはそれよりも小さい場合、ビデオエンコーダ２０は、パレットのエントリとしてピクセル値を符号化し得る。すなわち、この例では、ビデオエンコーダ２０は、ピクセル値がパレットエントリに対して十分に小さい（たとえば、所定の範囲内の）絶対差分を生じるとき、パレットのエントリのうちの１つを使用して、ピクセル値を符号化する。
【００９１】
[0098]いくつかの例では、ビデオエンコーダ２０は、ピクセル値を符号化するために、（コーディングされているピクセル値と比較して）最小の絶対ピクセル値差分を生じるパレットエントリを選択し得る。一例として、ビデオエンコーダ２０は、ピクセル値のために使用されることになるパレットエントリ、たとえば、ビデオデコーダ３０においてコード化ピクセル値を再構築するために使用されることになるパレットピクセル値エントリを示すために、インデックスを符号化し得る。ピクセルの値とパレット中のエントリのすべてとの間の絶対ピクセル値差分が、デルタよりも大きい場合、エンコーダは、ピクセル値を符号化するためにパレットエントリのうちの１つを使用しないことがあり、代わりに、ビデオデコーダ３０に（場合によっては、量子化後に）ピクセルのピクセル値を送信し得る（および場合によっては、ピクセル値をエントリとしてパレットに追加）し得る。
【００９２】
[0099]別の例では、ビデオエンコーダ２０は、ピクセル値を符号化するためにパレットのエントリを選択し得る。ビデオエンコーダ２０は、予測ピクセル値として、選択されたエントリを使用し得る。すなわち、ビデオエンコーダ２０は、実際のピクセル値と選択されたエントリとの間の差分を表す残差値を決定し、残差を符号化し得る。ビデオエンコーダ２０は、パレットのエントリによって予測されるブロック中のピクセルのための残差値を生成し得、ピクセルのブロックのためのそれぞれの残差ピクセル値を含む残差ブロックを生成し得る。ビデオエンコーダ２０は、その後、（図２に関して上述されたような）変換と量子化とを残差ブロックに適用し得る。このようにして、ビデオエンコーダ２０は、量子化された残差変換係数を生成し得る。別の例では、残差は、可逆的に（変換および量子化なしに）、または変換なしにコーディングされ得る。
【００９３】
[0100]ビデオデコーダ３０は、残差ブロックを再生するために、変換係数を逆変換し、逆量子化し得る。ビデオデコーダ３０は、次いで、予測パレットエントリ値とピクセル値のための残差値とを使用して、ピクセル値を再構築し得る。たとえば、ビデオデコーダ３０は、コード化ピクセル値を再構築するために、残差値をパレットエントリ値と組み合わせ得る。
【００９４】
[0101]いくつかの例では、デルタ値は、異なるブロックサイズ、ピクチャサイズ、色空間、または異なる色成分に対して異なり得る。デルタ値は、様々なコーディング条件に基づいてあらかじめ決定されるか、または決定され得る。たとえば、ビデオエンコーダ２０は、ＰＰＳ、ＳＰＳ、ＶＰＳ、および／またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、デルタ値をビデオデコーダ３０にシグナリングし得る。他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、同じ固定されたデルタ値を使用するように事前構成され得る。さらに他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、（たとえば、上述されたように、ブロックサイズ、色空間、色成分など）サイド情報に基づいてデルタ値を適応的に導出し得る。
【００９５】
[0102]いくつかの例では、不可逆コーディングパレットモードはＨＥＶＣコーディングモードとして含まれ得る。たとえば、コーディングモードは、イントラ予測モード、インター予測モード、可逆コーディングパレットモード、および不可逆コーディングパレットモードを含み得る。ＨＥＶＣコーディングでは、図２および図３に関して上述されたように、量子化パラメータ（ＱＰ：quantization parameter）が、許容されるひずみを制御するために使用される。パレットベースコーディングのためのデルタの値は、ＱＰの関数として計算され得るか、または場合によっては決定され得る。たとえば、上記で説明されたデルタ値は、１＜＜（ＱＰ／６）または１＜＜（（ＱＰ＋ｄ）／６）であり得、ただし、ｄは定数であり、「＜＜」はビットごとの左シフト演算子を表す。
【００９６】
[0103]本開示で説明される不可逆コーディング技法を使用するパレットの生成は、ビデオエンコーダ２０、ビデオデコーダ３０、またはその両方によって実行され得る。たとえば、ビデオエンコーダ２０は、上記で説明されたデルタ比較技法を使用してブロックのためのパレット中のエントリを生成し、ビデオデコーダ３０による使用のためにパレットの構築のための情報をシグナリングし得る。すなわち、ビデオエンコーダ２０は、ブロックのためのパレット中のエントリのためのピクセル値を示す情報をシグナリングし、次いで、そのようなパレットエントリに関連付けられたピクセル値を使用してピクセル値を符号化するように構成され得る。ビデオデコーダ３０は、そのような情報を使用してパレットを構築し得、次いで、コード化ブロックのピクセル値を復号するためにエントリを使用し得る。いくつかの例では、ビデオエンコーダ２０は、コード化ブロックの１つまたは複数のピクセル位置のためのパレットエントリを識別するインデックス値をシグナリングし得、ビデオデコーダ３０は、パレットから関連するピクセル値エントリを取り出すためにインデックス値を使用し得る。
【００９７】
[0104]他の例では、ビデオデコーダ３０は、上記で説明されたデルタ比較技法を適用することによってパレットを構築するように構成され得る。たとえば、ビデオデコーダ３０は、コード化ブロック内の位置についてのピクセル値を受信し得、ピクセル値とパレット中の既存のピクセル値エントリとの間の絶対差分がデルタ値よりも大きいかどうかを決定し得る。大きい場合、ビデオデコーダ３０は、たとえば、ビデオエンコーダ２０によってシグナリングされた対応するインデックス値を使用したブロックの他のピクセル位置についてのピクセル値のパレットベースの復号において後で使用するために、ピクセル値をエントリとしてパレット中に追加し得る。この場合、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットを生成するために同じまたは同様のプロセスを適用する。大きくない場合、ビデオデコーダ３０は、ピクセル値をパレットに追加しないことがある。
【００９８】
[0105]例示を目的とする一例では、ビデオデコーダ３０は、ブロック中の様々なピクセル位置についてのインデックス値またはピクセル値を受信し得る。ピクセル位置のためにインデックス値が受信された場合、たとえば、ビデオデコーダ３０は、パレット中のエントリを識別するためにインデックス値を使用し、ピクセル位置のためにパレットエントリのピクセル値を使用し得る。ピクセル位置のためにピクセル値が受信された場合、ビデオデコーダ３０は、ピクセル位置のための受信されたピクセル値を使用し得、また、ピクセル値がパレットに追加され次いでパレットコーディングのために後で使用されるべきであるかどうかを決定するために、デルタ比較を適用し得る。
【００９９】
[0106]エンコーダ側では、ブロック中の位置についてのピクセル値が、ピクセル値と、デルタ値よりも小さいかまたはそれに等しいパレット中の既存のピクセル値エントリとの間の絶対差分を生じる場合、ビデオエンコーダ２０は、その位置についてのピクセル値を再構築する際に使用するためのパレット中のエントリを識別するために、インデックス値を送り得る。ブロック中の位置についてのピクセル値が、ピクセル値と、すべてがデルタ値よりも大きいパレット中の既存のピクセル値エントリとの間の絶対差分値を生じる場合、ビデオエンコーダ２０はピクセル値を送り得、ピクセル値をパレット中の新しいエントリとして追加し得る。パレットを構築するために、ビデオデコーダ３０は、たとえば、上記で説明されたように、エンコーダによってシグナリングされたデルタ値を使用し、固定のまたは既知のデルタ値に依拠し、あるいはデルタ値を推論または導出し得る。
【０１００】
[0107]上述のように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ビデオデータをコーディングするとき、イントラ予測モードと、インター予測モードと、可逆コーディングパレットモードと、不可逆コーディングパレットモードとを含む、コーディングモードを使用し得る。本開示のいくつかの態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースコーディングが有効にされるかどうかを示す１つまたは複数のシンタックス要素をコーディングし得る。たとえば、各ブロックにおいて、ビデオエンコーダ２０は、フラグＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇなどのシンタックス要素を符号化し得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇまたは他のシンタックス要素は、パレットベースコーディングモードが所与のブロック（たとえば、ＣＵまたはＰＵ）のために使用されるべきであるかどうかを示し得る。たとえば、このフラグは、ブロックレベル（たとえば、ＣＵレベル）で符号化ビデオビットストリーム中でシグナリングされ得、次いで、符号化ビデオビットストリームを復号すると、ビデオデコーダ３０によって受信され得る。
【０１０１】
[0108]この例では、１に等しいこのＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、パレットベースコーディングモードを使用して現在ブロックが符号化されることを指定し得る。この場合、ビデオデコーダ３０は、ブロックを復号するためにパレットベースコーディングモードを適用し得る。いくつかの例では、シンタックス要素は、ブロックのための複数の異なるパレットベースコーディングモードのうちの１つ（たとえば、不可逆または可逆）を示し得る。０に等しいこのＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、パレットモード以外のモードを使用して現在ブロックが符号化されることを指定し得る。たとえば、様々なインター予測コーディングモード、イントラ予測コーディングモード、または他のコーディングモードのいずれもが使用され得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値が０であるとき、ビデオエンコーダ２０はまた、それぞれのブロックを符号化するために使用される特定のモード（たとえば、ＨＥＶＣコーディングモード）を示すように追加のデータを符号化し得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの使用が例として説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースコーディングモードがブロック（たとえば、ＣＵまたはＰＵ）のために使用されるべきであるかどうかを示すために、または複数のモードのいずれがコーディングのために使用されるべきであるかを示すために使用され得る。
【０１０２】
[0109]いくつかの例では、上記で説明されたフラグまたは他のシンタックス要素は、ブロックレベルよりも高いレベルで送信され得る。たとえば、ビデオエンコーダ２０は、そのようなフラグをスライスレベルでシグナリングし得る。この場合、１に等しい値は、スライス中のブロックのすべてがパレットモードを使用して符号化されることを示す。この例では、たとえばパレットモードまたは他のモードのための、追加のモード情報がブロックレベルでシグナリングされない。別の例では、ビデオエンコーダ２０は、そのようなフラグを、ＰＰＳ、ＳＰＳ、またはＶＰＳにおいてシグナリングし得る。
【０１０３】
[0110]本開示のいくつかの態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットモードが特定のスライス、ピクチャ、シーケンスなどのために有効にされるのか無効にされるのかを指定する１つまたは複数のシンタックス要素（たとえば、上記で説明されたフラグなど）を、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、またはＶＰＳレベルのうちの１つにおいてコーディングし得、一方、ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇは、パレットベースコーディングモードが各ブロックのために使用されるかどうかを示す。この場合、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、またはＶＰＳレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが無効にされることを示す場合、いくつかの例では、各ブロックのためにＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇをシグナリングする必要はないことがある。代替的に、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、またはＶＰＳレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが有効にされることを示す場合、パレットベースコーディングモードが各ブロックのために使用されるべきであるかどうかを示すために、ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇがさらにシグナリングされ得る。
【０１０４】
[0111]いくつかの例では、上記で説明されたシンタックス要素は、ビットストリーム中で条件付きでシグナリングされ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤｉｄ、および／またはマルチビューコーディングにおけるビューｉｄに基づいて、シンタックス要素をそれぞれ符号化または復号するにすぎない。
【０１０５】
[0112]上記で説明された例は、たとえば、ビットストリーム中の１つまたは複数のシンタックス要素をもつ明示的なシグナリングに関するが、他の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットコーディングモードがアクティブであるかどうか、および／または特定のブロックをコーディングするために使用されるかどうかを暗黙的に決定し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、たとえば、ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤｉｄ、および／またはマルチビューコーディングにおけるビューｉｄに基づいて、パレットベースコーディングがブロックのために使用されるかどうかを決定し得る。
【０１０６】
[0113]図３は、本開示の技法に従って、ビデオブロックのためのパレットへのインデックスを決定することの例を示す概念図である。たとえば、図３は、インデックス値に関連付けられたピクセルのそれぞれの位置をパレット２４４のエントリに関係付ける、インデックス値（値１、２、および３）のマップ２４０を含む。パレット２４４は、図２に関して上記で説明された第１のパレット１８４および第２のパレット１９２と同様の様式で決定され得る。
【０１０７】
[0114]この場合も、図３の技法は、ビデオエンコーダ２０（図１および図４）とビデオデコーダ３０（図１および図５）のコンテキストにおいて、説明の目的でＨＥＶＣビデオコーディング規格に関して、説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを理解されたい。
【０１０８】
[0115]マップ２４０は、各ピクセル位置のためのインデックス値を含むものとして図３の例に示されているが、他の例では、すべてのピクセル位置が、ブロックのピクセル値を指定するパレット２４４のエントリを示すインデックス値に関連付けられ得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ビデオエンコーダ２０は、ピクセル値がパレット２４４中に含まれない場合、マップ２４０中の位置についての実際のピクセル値（またはそれの被量子化バージョン）の指示を符号化し得る（および、ビデオデコーダ３０は、符号化ビットストリームからその指示を取得し得る）。
【０１０９】
[0116]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのピクセル位置がインデックス値に関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の（ｉ，ｊ）のエントリがブロックの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリが、関連付けられたインデックス値を有するかどうかを示す、マップの各エントリ（すなわち、各ピクセル位置）のための１つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ２０は、ブロック中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４中の値のうちの１つであることを示すために、１の値を有するフラグを符号化し得る。そのような例では、ビデオエンコーダ２０はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするために、（値１〜３として図３の例に示されている）パレットインデックスを符号化し得る。パレット２４４が単一のエントリと関連付けられたピクセル値とを含む事例では、ビデオエンコーダ２０は、インデックス値のシグナリングをスキップし得る。ビデオエンコーダ２０は、ブロック中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４中の値のうちの１つではないことを示すために、０の値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ２０はまた、ピクセル値を再構築する際にビデオデコーダ３０によって使用するために、ピクセル値の指示を符号化し得る。いくつかの事例では、ピクセル値は不可逆様式でコーディングされ得る。
【０１１０】
[0117]ブロックの１つの位置におけるピクセルの値は、ブロックの他の位置における１つまたは複数の他のピクセルの値の指示を与え得る。たとえば、ブロックの隣接ピクセル位置が、同じピクセル値を有するか、または（２つ以上のピクセル値が単一のインデックス値にマッピングされ得る、不可逆コーディングの場合）同じインデックス値にマッピングされ得る確率が比較的高くなり得る。
【０１１１】
[0118]したがって、本開示の態様によれば、ビデオエンコーダ２０は、同じピクセル値またはインデックス値を有する所与の走査順序での連続するピクセルまたはインデックス値の数を示す１つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセル値またはインデックス値のストリングは、本明細書ではラン（run）と呼ばれることがある。説明の目的のための一例では、所与の走査順序での２つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序での２つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序での３番目のピクセルまたはインデックスが異なる値を有する場合、ランは１に等しい。同じ値をもつ３つの連続するインデックスまたはピクセルでは、ランは２であり、以下同様である。ビデオデコーダ３０は、符号化ビットストリームからランを示すシンタックス要素を取得し、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定するためにそのデータを使用し得る。
【０１１２】
[0119]いくつかの例では、現在ブロックのためのパレット中にあるピクセル値を有する現在ブロック中のすべてのピクセルロケーションは、パレットインデックスと、連続的なピクセルロケーションにおいて後続のピクセル値の「ラン」とともに符号化される。パレット中に１つのエントリしかない場合、パレットインデックスまたは「ラン」の送信は、現在ブロックについてスキップされ得る。現在ブロック中のピクセルロケーションのうちの１つにおけるピクセル値が、パレット中のピクセル値に対して厳密な一致を有しない場合、ビデオエンコーダ２０は、最も近いピクセル値を有するパレットエントリのうちの１つを選択し得、元のピクセル値とパレット中に含まれる予測ピクセル値との間の予測誤差または残差値を計算し得る。ビデオエンコーダ２０は、ピクセルロケーションについての残差値を符号化し、ビデオデコーダに送信する。ビデオデコーダ３０は、次いで、対応する受信されたパレットインデックスに基づいてピクセルロケーションにおけるピクセル値を導出し得、次いで、導出されたピクセル値および残差値は、現在ブロック中のピクセルロケーションにおける元のピクセル値を予測するために使用される。一例では、残差値は、残差値を変換し、変換係数を量子化し、量子化変換係数をエントロピー符号化するために、ＲＱＴを適用することなど、ＨＥＶＣドラフト１０によって規定されたＨＥＶＣ方法を使用して符号化される。場合によっては、上記の例は不可逆コーディングと呼ばれることがある。
【０１１３】
[0120]説明の目的のための一例では、マップ２４０のライン２４８について考える（consider）。水平方向の左から右への走査方向を仮定すると、ライン２４８は、「２」の５つのインデックス値と、「３」の３つのインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ２０は、走査方向におけるライン２４８の第１の位置について２のインデックス値を符号化し得る。加えて、ビデオエンコーダ２０は、シグナリングされたインデックス値と同じインデックス値を有する、走査方向における連続する値のランを示す１つまたは複数のシンタックス要素を符号化し得る。ライン２４８の例では、ビデオエンコーダ２０は、４のランをシグナリングし、それによって、走査方向における後続の４つの位置のインデックス値が、シグナリングされたインデックス値と同じインデックス値を共有することを示し得る。ビデオエンコーダ２０は、ライン２４８中の次の異なるインデックス値について同じプロセスを実行し得る。すなわち、ビデオエンコーダ２０は、３のインデックス値と、２のランを示す１つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ３０は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数（ラン）とを示す、シンタックス要素を取得し得る。
【０１１４】
[0121]上述のように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向（たとえば、ブロックにおいて対角方向に４５度または１３５度）であり得る。いくつかの例では、ビデオエンコーダ２０は、ブロックのインデックスを走査するための走査方向を示す、各ブロックについて１つまたは複数のシンタックス要素を符号化し得る。追加または代替として、走査方向は、たとえば、ブロックサイズ、色空間、および／または色成分など、いわゆるサイド情報に基づいて、シグナリングまたは推論され得る。ビデオエンコーダ２０は、ブロックの各色成分のための走査を指定し得る。代替的に、指定された走査は、ブロックのすべての色成分に適用され得る。
【０１１５】
[0122]たとえば、列ベースの走査に関して、マップ２４０の列２５２について考える。垂直方向の上から下への走査方向を仮定すると、列２５２は、「１」の１つのインデックス値と、「２」の５つのインデックス値と、「３」の２つのインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ２０は、（列２５２の相対的な上部における）走査方向における列２５２の第１の位置について１のインデックス値を符号化し得る。さらに、ビデオエンコーダ２０は、０のランをシグナリングし、それによって、走査方向において後続の位置のインデックス値が異なることを示し得る。ビデオエンコーダ２０は、次いで、走査方向における次の位置について２のインデックス値と、４のラン、すなわち、走査方向における後続の４つの位置のインデックス値が、シグナリングされたインデックス値と同じインデックス値を共有することを示す、１つまたは複数のシンタックス要素とを符号化し得る。次いで、ビデオエンコーダ２０は、走査方向における次の異なるインデックス値について３のインデックス値と、１のランを示す１つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ３０は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数（ラン）とを示す、シンタックス要素を取得し得る。
【０１１６】
[0123]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、追加または代替として、マップ２４０の１つまたは複数のエントリのためのラインコピー（line copying）を実行し得る。ラインコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ２０は、マップ中の特定のエントリのためのピクセル値またはインデックス値が、（水平方向の走査の場合）特定のエントリの上のラインにおける、または（垂直方向の走査の場合）特定のエントリの左の列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリの上のライン、または特定のエントリの左の列におけるエントリに等しい、走査順序でのピクセル値またはインデックス値の数を、ランとして示し得る。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、指定された隣接ラインから、および、現在コーディングされているマップのラインのための指定された数のエントリから、ピクセル値またはインデックス値をコピーし得る。
【０１１７】
[0124]説明の目的のための一例では、マップ２４０の列２５６および２６０について考える。垂直方向の上から下への走査方向を仮定すると、列２５６は、「１」の３つのインデックス値と、「２」の３つのインデックス値と、「３」の２つのインデックス値とを含む。列２６０は、走査方向において同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ２０は、列２６０全体が列２５６からコピーされることを示す、列２６０のための１つまたは複数のシンタックス要素を符号化し得る。１つまたは複数のシンタックス要素は、マップ２４０の相対的な上部において列２６０の第１のエントリに関連付けられ得る。ビデオデコーダ３０は、ラインコピーを示すシンタックス要素を取得し、列２６０を復号するときに列２６０のための列２５６のインデックス値をコピーし得る。
【０１１８】
[0125]本開示の態様によれば、エントリのいわゆるランをコーディングするための技法が、上記で説明されたラインコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ２０は、マップ中のエントリの値がパレットから取得されるのか、またはマップ中のエントリの値がマップ２４０中の前にコーディングされたラインから取得されるのかを示す、１つまたは複数のシンタックス要素（たとえば、フラグ）を符号化し得る。ビデオエンコーダ２０はまた、パレットのインデックス値、またはライン（行または列）中のエントリのロケーションを示す、１つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ２０はまた、同じ値を共有する連続するエントリの数を示す、１つまたは複数のシンタックス要素を符号化し得る。ビデオデコーダ３０は、符号化ビットストリームからそのような情報を取得し得、ブロックのためのマップとピクセル値とを再構築するために、その情報を使用し得る。
【０１１９】
[0126]説明の目的のための一例では、マップ２４０の行２６４および２６８について考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」の５つのインデックス値と、「３」の３つのインデックス値とを含む。行２６８は、「１」の３つのインデックス値と、「２」の２つのインデックス値と、「３」の３つのインデックス値とを含む。この例では、ビデオエンコーダ２０は、行２６４の特定のエントリを識別し、その後、行２６８のためのデータを符号化するときにランを識別し得る（may identify particular entries of row 264 followed by a run when encoding data for row 268）。たとえば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ２０はまた、行２６８中の走査方向での２つの連続するエントリの次のランが行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化し得る。
【０１２０】
[0127]いくつかの例では、ビデオエンコーダ２０はまた、別の行（または列）中のある位置に対する現在のピクセル値またはインデックス値をコーディングすべきなのか、ランシンタックス要素を使用して現在のピクセル値またはインデックス値をコーディングすべきなのかを決定し得る。（上述の）行２６４の第１の位置と２つのエントリのランとを示す１つまたは複数のシンタックス要素を符号化した後に、ビデオエンコーダ２０は、（左から右に）ライン２６８中の第４および第５の位置について、第４の位置についての２の値を示す１つまたは複数のシンタックス要素と、１のランを示す１つまたは複数のシンタックス要素とを符号化し得る。したがって、ビデオエンコーダ２０は、別のライン（または列）と無関係にこれらの２つの位置を符号化する。ビデオエンコーダ２０は、次いで、上の行２６４に対する（たとえば、上の行２６４からのコピーと、同じインデックス値を有する、走査順序での連続する位置のランとを示す）行２６８中の３のインデックス値を有する第１の位置をコーディングし得る。したがって、本開示の態様によれば、ビデオエンコーダ２０は、たとえば、ランを使用して、ライン（または列）のピクセルまたはインデックス値をライン（または列）の他の値に対してコーディングすること、ライン（または列）のピクセルまたはインデックス値を別のライン（または列）の値に対してコーディングすること、あるいはそれらの組合せの間で選択し得る。いくつかの例では、ビデオエンコーダ２０は、選択を行うためにレート／ひずみ最適化を実行し得る。
【０１２１】
[0128]ビデオデコーダ３０は、上記で説明されたシンタックス要素を受信し得、行２６８を再構築し得る。たとえば、ビデオデコーダ３０は、現在コーディングされているマップ２４０の位置についての関連付けられたインデックス値をそこからコピーするための、隣接する行中の特定のロケーションを示すデータを取得し得る。ビデオデコーダ３０はまた、同じインデックス値を有する、走査順序での連続する位置の数を示すデータを取得し得る。
【０１２２】
[0129]いくつかの事例では、エントリがそこからコピーされるラインは、（図３の例に示されているように）現在コーディングされているラインのエントリに直接隣接し得る。しかしながら、他の例では、マップのいくつかのラインのいずれかが、現在コーディングされているマップのラインのための予測エントリとして使用され得るように、いくつかのラインが、ビデオエンコーダ２０および／またはビデオデコーダ３０によってバッファされ得る。したがって、いくつかの例では、エントリについてのピクセル値は、現在の行のすぐ上の行（または左の列）、あるいは現在の行の２つ以上上の行（または左の列）の中のエントリのピクセル値に等しくなるようにシグナリングされ得る。
【０１２３】
[0130]例示を目的とする例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、エントリの現在の行をコーディングするより前に、エントリの以前のｎ個の行を記憶するように構成され得る。この例では、ビデオエンコーダ２０は、切捨て単項コードまたは他のコードを用いて、ビットストリーム中で予測行（そこからエントリがコピーされる行）を示し得る。別の例では、ビデオエンコーダ２０は、現在のラインと、現在のラインをコーディングするために参照として使用されるマップ２４０の予測ラインとの間の変位値を符号化し得る（および、ビデオデコーダ３０はそれを復号し得る）。すなわち、ビデオエンコーダ２０は、そこからインデックス値がコピーされる特定のライン（または列）の指示を符号化し得る。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、ｃ［０］、ｃ［１］、．．．、を、マップ２４０の現在のラインのインデックスを示すものとし、ｕ［０］、ｕ［１］、ｕ［２］、．．．、を、上の隣接ラインなど、マップ２４０の予測ラインのインデックスを示すものとする。この例では、変位ベクトルがｄであるとすると、ｃ［ｉ］のためのインデックス値は、ｄが負の値をとることを避けるために、ｕ［ｉ＋ｄ］またはｕ［ｉ−ｄ］から予測され得る。ｄの値は、単項コード、切捨て単項コード、指数ゴロムコード、またはゴロム−ライス（Golomb-Rice）コードを使用してコーディングされ得る。
【０１２４】
[0131]別の例として、ビデオエンコーダ２０は、「上のラインの左半分からコピー」または「上のラインの右半分からコピー」など、現在コーディングされているマップのラインにコピーすべき、隣接ラインと隣接ラインのエントリの数または部分とを示す、命令をシグナリングし得る。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、９０度、１８０度、または２７０度回転されるか、あるいは上下または左右が反転され得る。
【０１２５】
[0132]他の例では、ビデオエンコーダ２０は、マップ２４０の同様の値のインデックス値のランをビデオデコーダ３０に送信しないことがある。この場合、ビデオエンコーダ２０および／またはビデオデコーダ３０はランの値を暗黙的に導出し得る。一例では、ランの値は、定数値、たとえば、４、８、１６などであり得る。別の例では、ランの値は、たとえば、ブロックサイズ、量子化パラメータ（ＱＰ）、フレームタイプ、色成分、色フォーマット（たとえば、４：４：４、４：２：２、または４：２：０）、色空間（たとえば、ＹＵＶまたはＲＧＢ）、走査方向、および／または現在のブロックについての他のタイプの特性情報など、コーディングされているビデオデータの現在のブロックのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分（高さの半分）、現在のブロックの幅および／または高さの分数、あるいは現在のブロックの幅および／または高さの倍数に等しくなり得る。別の例では、ビデオエンコーダ２０は、ＶＰＳ、ＳＰＳ、ＰＰＳおよび／またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、ランの値をビデオデコーダ３０にシグナリングし得る。
【０１２６】
[0133]追加または代替として、ビデオエンコーダ２０は、マップ２４０をビデオデコーダ３０に送信することさえ必要ないことがある。代わりに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップ２４０中に含まれるインデックス値の各ランの開始の位置またはロケーションを暗黙的に導出し得る。一例では、ビデオエンコーダ２０および／またはビデオデコーダ３０によって適用されるビデオコーディング規格は、ランがあるロケーションにおいてのみ開始することができると決定し得る。たとえば、ランは、各行の始端、またはコーディングされている現在ブロックのＮ行ごとの始端においてのみ開始し得る。開始ロケーションは、異なる走査方向について異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在ブロックのＮ列ごとの始端においてのみ開始し得る。
【０１２７】
[0134]別の例では、開始ロケーションは、たとえば、ブロックサイズ、ＱＰ、フレームタイプ、色成分、色フォーマット（たとえば、４：４：４、４：２：２、または４：２：０）、色空間（たとえば、ＹＵＶまたはＲＧＢ）、走査方向、および／または現在ブロックについての他のタイプの特性情報など、現在ブロックのためのサイド情報に応じて導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、各行および／または各列の中間点、あるいは各行および／または各列の分数（たとえば、１／ｎ、２／ｎ、．．．（ｎ−１）／ｎ）であり得る。別の例では、ビデオエンコーダ２０は、ＰＰＳ、ＳＰＳ、ＶＰＳ、および／またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、開始位置をビデオデコーダ３０にシグナリングし得る。
【０１２８】
[0135]いくつかの例では、各々上記で説明された、暗黙的な開始位置の導出と暗黙的なランの導出とは組み合わせられ得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、マップの同様の値のインデックス値のランが２つの隣接開始位置の間の距離に等しいと決定し得る。開始位置が現在ブロックの各行の始端（すなわち、最初の位置）である場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランの長さが現在ブロックの行全体の長さに等しいと決定し得る。
【０１２９】
[0136]ＨＥＶＣ  ＳＣＣ拡張のための様々な提案は、現在ブロックのためのパレットを導出するためにパレット予測子を使用するパレットモードを含む。ビデオエンコーダ２０およびビデオデコーダ３０は、現在コーディングされているブロックのためのパレットテーブルを決定するより前にパレット予測子を更新し得る。前に使用されたパレット予測子が利用可能でない第１のブロックの場合、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれＰＰＳおよびＳＰＳ中でシグナリングされるパレット予測子エントリからのこの初期化を有効にするために、２つのフラグ、すなわちｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇおよびｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇを使用して、ＰＰＳレベルにおいてまたはＳＰＳレベルにおいてのいずれかでパレット予測子を初期化し得る。ＰＰＳパレット予測子およびＳＰＳパレット予測子のサイズは、それぞれ、シンタックス要素ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１およびｓｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１によって定義される。いくつかの提案されたシグナリング機構の下で、ＰＰＳまたはＳＰＳ中でシグナリングされるパレット予測子の最小サイズは１である。
【０１３０】
[0137]パレット予測子が初期化され得る１つの例示的な順序がＷＤ４セクション９．３．２．３に記載されている。
【０１３１】
ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しい場合、パレット予測子はＰＰＳ予測子に基づいて初期化され、
他の場合（ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０に等しい）場合、ｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しい場合、パレット予測子はＳＰＳ予測子から初期化され、
他の場合（両方のフラグが０に等しいとき）、パレット予測子サイズは０に設定される。
【０１３２】
[0138]上記で説明された初期化ルールからわかるように、ｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが有効にされた場合、ピクチャごとに、パレット予測子サイズを０に設定するためのものである、パレット予測子を無効にするための方法がない。パレット予測子サイズを０に設定するための能力は、ＳＰＳ中でシグナリングされるパレット予測子が、あるピクチャ中のパレットエントリを予測するのに関係しない場合、望ましいことがあり、ＰＰＳ中でそれらを送ることは、多くの割合を消費し得る。別の潜在的問題は、ＰＰＳパレット予測子とＳＰＳパレット予測子の両方が存在するとき、ＰＰＳパレット予測子とＳＰＳパレット予測子とが多くの共通パレットエントリを有し得るので、現在のシグナリングが冗長であり得るということである。
【０１３３】
[0139]本開示は、パレット予測子初期化制御に関する様々な技法を導入する。上記で導入された第１の問題に潜在的に対処するために、本開示は、パレット予測子初期化を制御するために使用され得る新しいシンタックス要素ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚａｔｉｏｎ＿ｆｌａｇを追加するための技法について説明する。このフラグの値が１に等しいとき、パレット予測子初期化が使用される。他の場合、パレット予測子サイズは０に等しく設定される。このフラグは、ＶＰＳ、ＳＰＳ、ＰＰＳ、スライスヘッダまたはそれの拡張などの任意のパラメータセット中で、あるいは他の場所でシグナリングされ得る。一例では、フラグはＰＰＳ中でシグナリングされ得る。そのようなフラグを使用することの潜在的な利点は、ＳＰＳパレット予測子初期化子がシグナリングされるとき、フラグがパレット予測子を無効にする（パレット予測子サイズを０に設定する）ための能力を与えるということである。
【０１３４】
[0140]２つのパレット初期化子（たとえば、ＰＰＳ中に１つ、およびＳＰＳ中に別の１つ）があり得ると、およびｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚａｔｉｏｎ＿ｆｌａｇが１つのパラメータセット中でのみシグナリングされるとき、ビットストリームコンフォーマンス（bitstream conformance）ルールは、パラメータセットパーシング依存性を回避するために、およびｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚａｔｉｏｎ＿ｆｌａｇが１に等しく設定され、パレット予測子が任意のパラメータセット中でシグナリングされない場合に導入され得る。ビットストリームコンフォーマンス制限は、以下のように表され得る。コンフォーマントビットストリーム（conformant bitstream）は、ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚａｔｉｏｎ＿ｆｌａｇが１に等しいとき、１に等しいｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇおよびｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇのうちの少なくとも１つを含んでいるものとする（shall）。このルールは、現在のシンタックス要素がいくつかの他のシンタックス要素によって変更または交換され得るとき、同様の問題を解決するためにも適用可能であり得るので、既存のおよび示唆されたシンタックス要素に制限されるように意図されるものではなく、同様の役割を果たす。
【０１３５】
[0141]代替解決策では、ビデオエンコーダ２０は、ＰＰＳ中で０に等しいパレット予測子初期化子をシグナリングすることを可能にされ得る。この場合、サフィックス「ｍｉｎｕｓ１」はシンタックス要素ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１から除去され得る。さらに、セマンティクスは、パレット予測子初期化子サイズが０であり得ることを反映するために変更され得る。したがって、既存の初期化ルールは、ＰＰＳ中で０パレット予測子を有することを可能にするために変更され得る。そのような場合、ＰＰＳ中のパレット予測子サイズを０に等しく設定することは、たとえば、０に等しいｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒとともに１に等しいｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングすることによって、ＳＰＳパレット予測子初期化子がシグナリングされるときでも、パレット予測子初期化をオフに切り替えるために使用され得る。すなわち、ビデオデコーダ３０が、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示すｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒについての値を受信する場合、ビデオデコーダ３０は、ブロックが関連付けられたＳＰＳが、有効にされたパレット予測子初期化を有するにもかかわらず（even though）、ＰＰＳに関連付けられたビデオブロックについて、パレット予測子初期化が無効にされると決定するように構成され得る。
【０１３６】
[0142]さらに、新たに導入されたシンタックス要素、ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ値は、初期化子サイズが０に等しいときにそれらのシンタックス要素が必要とされないので、ｍｏｎｏｃｈｒｏｍｅ＿ｐａｌｅｔｔｅ＿ｆｌａｇ、ｌｕｍａ＿ｂｉｔ＿ｄｅｐｔｈ＿ｅｎｔｒｙ＿ｍｉｎｕｓ８、およびｃｈｒｏｍａ＿ｂｉｔ＿ｄｅｐｔｈ＿ｅｎｔｒｙ＿ｍｉｎｕｓ８など、パレット予測子初期化子エントリに固有の（specific to）シンタックス要素のための新しいゲーティングフラグとして使用され得る。したがって、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示すシンタックス要素ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒに基づいて、ビデオデコーダ３０は、シンタックス要素ｍｏｎｏｃｈｒｏｍｅ＿ｐａｌｅｔｔｅ＿ｆｌａｇ、ｌｕｍａ＿ｂｉｔ＿ｄｅｐｔｈ＿ｅｎｔｒｙ＿ｍｉｎｕｓ８、およびｃｈｒｏｍａ＿ｂｉｔ＿ｄｅｐｔｈ＿ｅｎｔｒｙ＿ｍｉｎｕｓ８がＰＰＳ中に存在しないと決定し得る。
【０１３７】
[0143]たとえば、ＰＰＳシグナリングは、変更が下線および取消し線を用いて以下に示される場合、以下のように修正され得る。
【０１３８】
【表１】
0006768795.tif 000002
【０１３９】
[0144]シンタックス要素ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒは、ピクチャパレット予測子初期化子中のエントリの数を指定する。ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒのための値が、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示すとビデオデコーダ３０が決定した場合、ビデオデコーダ３０は、パレット予測子初期化がＰＰＳのために無効にされると決定し得る。
【０１４０】
[0145]ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒの値が、両端値を含む、０〜ＰａｌｅｔｔｅＭａｘＰｒｅｄｉｃｔｏｒＳｉｚｅの範囲内にあることは、ビットストリームコンフォーマンスの要件であり得る。
【０１４１】
[0146]シンタックス要素ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒｓ［ｃｏｍｐ］［ｉ］は、アレイＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＥｎｔｒｉｅｓを初期化するために使用されるｉ番目のパレットエントリのｃｏｍｐ番目の成分の値を指定する。両端値を含む、０〜ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ−１の範囲内のｉの値の場合、ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒｓ［０］［ｉ］の値は、両端値を含む、０〜（１＜＜ＢｉｔＤｅｐｔｈＥｎｔｒｙＹ）−１の範囲内にあるものとし、ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒｓ［１］［ｉ］およびｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒｓ［２］［ｉ］の値は、両端値を含む、０〜（１＜＜ＢｉｔＤｅｐｔｈＥｎｔｒｙＣ）−１の範囲内にあるものとする。
【０１４２】
[0147]初期化ルールは相応に変更され得る。
【０１４３】
このプロセスの出力は、初期化されたパレット予測子変数ＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＳｉｚｅおよびＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＥｎｔｒｉｅｓである。
【０１４４】
変数ｎｕｍＣｏｍｐｓは、以下のように導出される。
【０１４５】
【数１】
0006768795.tif 000003
【０１４６】
−ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しい場合、以下が適用される。
【０１４７】
−ＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＳｉｚｅは、ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒに等しく設定される。
【０１４８】
−アレイＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＥｎｔｒｉｅｓは、以下のように導出される。
【０１４９】
【数２】
0006768795.tif 000004
【０１５０】
−他の場合（ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０に等しい）、ｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しい場合、以下が適用される。
【０１５１】
−ＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＳｉｚｅは、ｓｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１＋１に等しく設定される。
【０１５２】
−アレイＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＥｎｔｒｉｅｓは、以下のように導出される。
【０１５３】
【数３】
0006768795.tif 000005
【０１５４】
−他の場合（ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０に等しく、ｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが０に等しい）、ＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＳｉｚｅは０に等しく設定され、ＰｒｅｄｉｃｔｏｒＰａｌｅｔｔｅＳｉｚｅは０に等しく設定される。
【０１５５】
[0148]本開示はまた、パレット予測子初期化予測に関する技法について説明する。考えられる冗長エントリを用いて上記で紹介された第２の問題を潜在的に解決するために、本開示は、既存の技法ではなく、パレット予測子初期化のためのＳＰＳパレット予測子初期化子とＰＰＳパレット予測子初期化子の両方を使用するための技法について説明し、ただし、一度に１つの予測子のみが使用され得る。したがって、パレット予測子を初期化するときに、ビデオデコーダ３０は、ＳＰＳレベルパレット予測子初期化子またはＰＰＳレベルパレット予測子初期化子のうちの１つのみではなく、パレット予測子中にＳＰＳレベルパレット予測子初期化子とＰＰＳレベルパレット予測子初期化子の両方を含め得る。
【０１５６】
[0149]一例では、パレット予測子は、ＳＰＳパレット予測子エントリおよび後続のＰＰＳパレット予測子エントリ、またはその逆を含むことによって初期化され得る。より一般的な手法では、ＳＰＳパレット予測子全体を使用する代わりに、再利用されるフラグは、どのエントリがパレット予測子初期化のために使用されることになるかを示すためにエントリごとにシグナリングされ得る。
【０１５７】
[0150]ＳＰＳ初期化子とＰＰＳ初期化子の両方が使用されるとき、組み合わせられた初期化子のサイズが最大パレット予測子サイズよりも大きい場合、いくつかのエントリが廃棄されなければならず、この余分のシグナリングに関連付けられたビットが浪費され得るので、ＳＰＳ初期化子とＰＰＳ初期化子とのサイズが合わせて最大パレット予測子サイズよりも小さいかまたはそれに等しいなど、追加の制約が、組み合わせられた初期化子のシグナリングされたサイズの合計に課され得る。別のより単純な代替策では、ＰＰＳ初期化子サイズおよびＳＰＳ初期化子サイズは、最大パレット予測子サイズの半分に上限を定められ得る（can be capped to）。
【０１５８】
[0151]例示的な一実装形態では、シンタックス要素ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しいとき、ＳＰＳパレット予測子中の各エントリについて、そのエントリがパレット予測子を初期化するために使用されるかどうかをシグナリングするために、１つのフラグが送られる。シグナリング方法は、ＰａｌｅｔｔｅＰｒｅｄｉｃｔｏｒＥｎｔｒｙＲｅｕｓｅＦｌａｇｓをシグナリングするためにＷＤ４のセクション７．３．８．１３において使用されているものと同じであり得る。その後、追加のパレット予測子初期化子エントリの数がシグナリングされる。これは値０を取り得る。この後に、実際のＰＰＳパレット予測子エントリが続く。
【０１５９】
[0152]ＳＰＳとＰＰＳとの間の依存性を回避するために、シンタックス要素ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇが１に等しいとき、ｓｐｓ＿ｐａｌｅｔｔｅ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｒｅｕｓｅフラグが送られ得る。このフラグの値が１に等しいとき、ＳＰＳパレット予測子エントリの数がシグナリングされる。この後に、各ＳＰＳパレット予測子エントリのための再利用フラグ、追加のパレット予測子エントリの数、および最終的に、実際のＰＰＳパレット予測子エントリのシグナリングが続く。シグナリングされるＳＰＳパレット予測子エントリの数は、ｓｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１＋１よりも小さいかまたはそれに等しいことがある。たとえば、ｓｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１が１０に等しく、ＰＰＳ中でシグナリングされるＳＰＳパレット予測子エントリの数が６である場合、再利用フラグは、最初の６つのＳＰＳパレット予測子エントリのためにのみ送られ、最後の４つのＳＰＳパレット予測子エントリは、現在のＰＰＳを指すピクチャのためのパレット予測子初期化において使用されないことがある。
【０１６０】
[0153]最後の例に続いて、パレット予測子初期化再利用フラグは、ＰＰＳまたはＳＰＳからの少なくとも１つのパレット予測子初期化子、あるいはその両方から構成され得るデフォルトパレット予測子初期化子から、どのエントリが再利用されるかを示すために、スライスヘッダ中でシグナリングされ得る。
【０１６１】
[0154]たとえば、ＳＰＳパレット予測子初期化子は通常使用されるパレットエントリを含んでいることがあり、ＰＰＳパレット予測子初期化子は、ピクチャに固有であり、ＳＰＳエントリとは異なるエントリのみを有し得る。ＰＰＳ初期化子とＳＰＳ初期化子の両方からのパレット予測子を初期化することは、ＷＤ４設計に反して、すべてのシグナリングされたＰＰＳにわたって同じであり得るＰＰＳ中での初期化子エントリの追加のシグナリングを回避し得、ただし、そのような共通エントリは、各ＰＰＳパレット予測子初期化子とともに繰り返しシグナリングされる。
【０１６２】
[0155]同様にして、パレット予測子初期化子は、以前の送られたＰＰＳおよび／またはＳＰＳから組み合わせられ得る。たとえば、上記で説明されたようにＳＰＳではなく、以前の送られたＰＰＳからの他のパレット予測子エントリがパレット予測子初期化子に追加され得る。一例では、パレット予測子初期化子は、ＳＰＳ初期化子から１つまたは複数のエントリを継承することの代わりに、またはそれに加えて、前にシグナリングされたＰＰＳ初期化子から１つまたは複数のエントリを継承し得る。一例として前にシグナリングされたＰＰＳ初期化子に関して上記で説明されたが、本開示の技法はまた、１つまたは複数の前にシグナリングされたＳＰＳ初期化子からの１つまたは複数のエントリの継承を有効にし得ることが諒解されよう。たとえば、エントリは、前にシグナリングされたＳＰＳ初期化子から、前にシグナリングされたＰＰＳ初期化子から、または前にシグナリングされたＳＰＳ初期化子と前にシグナリングされたＰＰＳ初期化子の両方の組合せから継承され得る。
【０１６３】
[0156]別の例では、パレット予測子初期化子は更新されるだけであり得る。たとえば、それは、最初に、第１のシグナリングされたＳＰＳ初期化子、ＰＰＳ初期化子、またはその両方の初期化子から構成され得、このパレット予測子は、新たにシグナリングされたＰＰＳまたはＳＰＳのエントリをパレット予測子初期化子に挿入することによって更新され得る。エントリは、パレット予測子初期化子の始端に、終端において、または基本的に任意のロケーションにおいて挿入され得る。挿入する間に予測子サイズを超えるエントリは、無視され得る。たとえば、そのような更新が初期化子が予測子サイズ限界を超えることを引き起こした場合、サイズ限界を満たした後に処理される更新されたエントリは、無視、廃棄、または除外され得る。
【０１６４】
[0157]説明される手法の１つの特定の例では、パレット予測子初期化子は、ＳＰＳ、またはＰＰＳ、またはその両方のセットからの新たにシグナリングされたエントリ＋新しいエントリに続く前のパレット予測子初期化子の古いエントリを含んでいることがある。
【０１６５】
[0158]本開示はまた、スケーリングリスト更新に関する技法について説明する。組み合わせられたパレット予測子初期化子の同様のアイデアは、変換のためのスケーリングリストまたは量子化行列に適用され得る。シグナリングされるＳＰＳスケーリングリストおよびＰＰＳスケーリングリストがあり得、ＰＰＳリストまたはＳＰＳリストのいずれかのみを使用するのではなく、特定のピクチャのために使用されるスケーリングリストは、ＰＰＳ中でシグナリングされるリストによって更新または付加されるＳＰＳスケーリングリストから構成され得る。たとえば、４×４、８×８、１６×１６、および３２×３２変換サイズのためのスケーリングリストがＳＰＳ中でシグナリングされることについて考える。ＰＰＳは、あるスケーリングリストのみ、たとえば、８×８および１６×１６変換サイズに関連付けられたスケーリングリストをシグナリングし得る。次いで、ピクチャのために使用される最終スケーリングリストは、以下のようになり得る。ＳＰＳからの４×４、ＰＰＳからの８×８、ＰＰＳからの１６×１６、およびＳＰＳからの３２×３２。
【０１６６】
[0159]別の例では、ＳＰＳスケーリングリストは、たとえば、変換深度またはサイズがＰＰＳにおいて定義されているとき、セット全体を含んでいるとは限らない。この場合、ＳＰＳは、基本または共通スケーリングリストのみを有し、必ずしもＰＰＳと重複されるとは限らず、ピクチャのための特定のスケーリングリストはＰＰＳ中でシグナリングされ得、ＳＰＳスケーリングリストとＰＰＳスケーリングリストとの後で組み合わせられたセットは、ピクチャのために使用される。
【０１６７】
[0160]図４は、本開示で説明される技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベース圧縮モードのいずれかを指すことがある。単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベース圧縮モードのいずれかを指すことがある。
【０１６８】
[0161]図４の例では、ビデオエンコーダ２０は、ビデオデータメモリ３３と、区分ユニット３５と、予測処理ユニット４１と、加算器５０と、変換処理ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。予測処理ユニット４１は、パレットベース符号化ユニット４２と、インター予測処理ユニット４４と、イントラ予測ユニット４６とを含む。ビデオブロック再構築のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換処理ユニット６０と、加算器６２と、フィルタユニット６４と、復号ピクチャバッファ（ＤＰＢ：decoded picture buffer）６６とを含む。
【０１６９】
[0162]図４に示されているように、ビデオエンコーダ２０はビデオデータを受信し、ビデオデータをビデオデータメモリ３３に記憶する。ビデオデータメモリ３３は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ３３に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。ＤＰＢ６６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ３３およびＤＰＢ６６は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗性ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ３３およびＤＰＢ６６は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ３３は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１７０】
[0163]区分ユニット３５はビデオデータメモリ３３からビデオデータを取り出し、ビデオデータをビデオブロックに区分する。この区分はまた、たとえば、ＬＣＵおよびＣＵの４分木構造に従って、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分を含み得る。ビデオエンコーダ２０は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに（および、場合によっては、タイルと呼ばれるビデオブロックのセットに）分割され得る。予測処理ユニット４１は、誤差結果（たとえばコーディングレートおよびひずみレベル）に基づいて現在ビデオブロックについて、複数のイントラコーディングモードのうちの１つ、または複数のインターコーディングモードのうちの１つなど、複数の可能なコーディングモードのうちの１つを選択し得る。予測処理ユニット４１は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器５０に与え、参照ピクチャとして使用するための符号化ブロックを再構築するために加算器６２に与え得る。
【０１７１】
[0164]予測ユニット４１内のイントラ予測処理ユニット４６は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して現在ビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット４１内のインター予測処理ユニット４４は、時間圧縮を行うために、１つまたは複数の参照ピクチャ中の１つまたは複数の予測ブロックに対して現在ビデオブロックのインター予測コーディングを実行する。
【０１７２】
[0165]インター予測処理ユニット４４は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをＰスライスまたはＢスライスとして指定し得る。インター予測処理ユニット４４によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在ビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。
【０１７３】
[0166]予測ブロックは、絶対差分和（ＳＡＤ）、２乗差分和（ＳＳＤ）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのＰＵにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ２０は、ＤＰＢ６６に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ２０は、参照ピクチャの１／４ピクセル位置、１／８ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、インター予測処理ユニット４４は、全ピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度をもつ動きベクトルを出力し得る。
【０１７４】
[0167]インター予測処理ユニット４４は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得、それらの参照ピクチャリストの各々は、ＤＰＢ６６に記憶された１つまたは複数の参照ピクチャを識別する。インター予測処理ユニット４４は、計算された動きベクトルをエントロピー符号化ユニット５６に送る。
【０１７５】
[0168]インター予測処理ユニット４４によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実行することを伴い得る。現在ビデオブロックのＰＵのための動きベクトルを決定すると、インター予測処理ユニット４４は、動きベクトルが参照ピクチャリストのうちの１つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ２０は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。インター予測処理ユニット４４はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ３０が使用するためのビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【０１７６】
[0169]予測処理ユニット４１は、本開示で説明されるパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース符号化ユニット４２をも含む。パレットベース符号化ユニット４２は、たとえば、パレットベース符号化モードが、たとえば、ＣＵまたはＰＵなどのブロックのために選択されるとき、パレットベース復号を実行し得る。たとえば、パレットベース符号化ユニット４２は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能が、パレットベース符号化ユニット４２によって実行されるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１７７】
[0170]パレットベース符号化ユニット４２は、本明細書で説明される様々なシンタックス要素のいずれかを生成するように構成され得る。したがって、ビデオエンコーダ２０は、本開示で説明されるパレットベースコードモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ２０は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化するか、または、たとえば、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなど、異なるモードを使用してビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されたＣＵまたはＰＵであり得る。ビデオエンコーダ２０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードを用いていくつかのブロックを符号化し、パレットベースコーディングモードを用いて他のブロックを復号し得る。
【０１７８】
[0171]予測処理ユニット４１が、イントラ予測、インター予測、またはパレットモードコーディングのいずれかを介して、現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ２０は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。しかしながら、いくつかのコーディングモードの場合、ビデオエンコーダ２０は残差ブロックを符号化しないことがある。生成されたとき、残差ブロック中の残差ビデオデータは、１つまたは複数のＴＵ中に含まれ、変換処理ユニット５２に適用され得る。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ：discrete cosine transform）または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット５２は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
【０１７９】
[0172]変換処理ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット５４は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット５６が走査を実行し得る。
【０１８０】
[0173]量子化の後に、エントロピー符号化ユニット５６は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット５６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディングあるいは別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット５６によるエントロピー符号化の後に、符号化ビットストリームはビデオデコーダ３０に送信されるか、あるいはビデオデコーダ３０が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット５６はまた、コーディングされている現在ビデオスライスのための動きベクトルと、上記で説明された様々なパレットモードシンタックス要素を含む、他のシンタックス要素とをエントロピー符号化し得る。
【０１８１】
[0174]逆量子化ユニット５８および逆変換処理ユニット６０は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。インター予測処理ユニット４４は、残差ブロックを参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。インター予測処理ユニット４４はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに１つまたは複数の補間フィルタを適用し得る。加算器６２は、再構築されたブロックを生成するために、再構築された残差ブロックを、インター予測処理ユニット４４によって生成された動き補償予測ブロックに加算する。
【０１８２】
[0175]フィルタユニット６４は、再構築されたブロック（たとえば、加算器６２の出力）をフィルタ処理し、参照ブロックとして使用するために、フィルタ処理された再構築されたブロックをＤＰＢ６６に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、インター予測処理ユニット４４によって参照ブロックとして使用され得る。フィルタユニット６４は、デブロッキングフィルタ処理、サンプル適応オフセット（ＳＡＯ：sample adaptive offset）フィルタ処理、適応ループフィルタ処理（ＡＬＦ：adaptive loop filtering）、または他のタイプのループフィルタ処理のうちの１つまたは複数を適用し得る。フィルタユニット６４は、再構築されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタ処理するデブロッキングフィルタ処理を適用し得、コーディング品質全体を改善するために他のタイプのフィルタ処理を適用し得る。（ループ中またはループ後の）追加のループフィルタも使用され得る。
【０１８３】
[0176]図５は、本開示で説明される技法を実装し得る例示的なビデオデコーダ３０を示すブロック図である。図５の例では、ビデオデコーダ３０は、ビデオデータメモリ７８と、エントロピー復号ユニット８０と、予測処理ユニット８１と、逆量子化ユニット８６と、逆変換処理ユニット８８と、加算器９０と、ＤＰＢ９４とを含む。予測処理ユニット８１は、パレットベース復号ユニット８２と、動き補償ユニット（ＭＣＵ）８３と、イントラ予測ユニット８４とを含む。ビデオデコーダ３０は、いくつかの例では、図４からのビデオエンコーダ２０に関して説明された符号化パスに概して相反する（reciprocal to）復号パスを実行し得る。
【０１８４】
[0177]復号プロセス中に、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化ビデオスライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ３０は、受信された符号化ビデオビットストリームをビデオデータメモリ７８に記憶する。ビデオデータメモリ７８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ７８に記憶されたビデオデータは、たとえば、リンク１６を介して、ストレージデバイス２６から、またはカメラなどのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ７８は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ（ＣＰＢ）を形成し得る。ＤＰＢ９４は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ７８およびＤＰＢ９４は、ＤＲＡＭ、ＳＤＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ７８およびＤＰＢ９４は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ７８は、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１８５】
[0178]ビデオデコーダ３０のエントロピー復号ユニット８０は、量子化係数、動きベクトル、および他のシンタックス要素を生成するために、ビデオデータメモリ７８に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット８０は、動きベクトルと、上記で説明された様々なパレットモードシンタックス要素を含む他のシンタックス要素とを予測処理ユニット８１にフォワーディングする。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルのシンタックス要素を受信し得る。
【０１８６】
[0179]ビデオスライスがイントラコード化（Ｉ）スライスとしてコーディングされたとき、予測処理ユニット８１のイントラ予測ユニット８４は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化（すなわち、ＢまたはＰ）スライスとしてコーディングされたとき、予測処理ユニット８１の動き補償ユニット８３は、エントロピー復号ユニット８０から受信された動きベクトルおよび他のシンタックス要素に基づいて現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、ＤＰＢ９４に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト０とリスト１とを構築し得る。
【０１８７】
[0180]動き補償ユニット８３は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット８３は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（たとえば、イントラまたはインター予測）と、インター予測スライスタイプ（たとえば、Ｂスライス、Ｐスライス、またはＧＰＢスライス）と、スライスのための参照ピクチャリストのうちの１つまたは複数のための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【０１８８】
[0181]動き補償ユニット８３はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット８３は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット８３は、受信されたシンタックス要素からビデオエンコーダ２０によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
【０１８９】
[0182]逆量子化ユニット８６は、ビットストリーム中で与えられ、エントロピー復号ユニット８０によって復号された量子化変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ２０によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット８８は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【０１９０】
[0183]本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースコーディングを実行するように構成され得る。パレットベース復号ユニット８２は、たとえば、パレットベース復号モードが、ＣＵまたはＰＵなどのブロックのために選択されるとき、パレットベース復号を実行し得る。たとえば、パレットベース復号ユニット８２は、ピクセル値を示すエントリを有するパレットを生成するように構成され得る。さらに、この例では、パレットベース復号ユニット８２は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリに関連付ける情報を受信し得る。この例では、パレットベース復号ユニット８２は、その情報に基づいてパレット中のピクセル値を選択し得る。さらに、この例では、パレットベース復号ユニット８２は、選択されたピクセル値に基づいてブロックのピクセル値を再構築し得る。様々な機能が、パレットベース復号ユニット８２によって実行されるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１９１】
[0184]パレットベース復号ユニット８２は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット８２は、たとえば、ＨＥＶＣインター予測またはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されたＣＵまたはＰＵであり得る。ビデオデコーダ３０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードを用いていくつかのブロックを復号し、パレットベースコーディングモードを用いて他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの１つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
【０１９２】
[0185]予測処理ユニットが、たとえば、イントラまたはインター予測を使用して現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ３０は、逆変換処理ユニット８８からの残差ブロックを動き補償ユニット８３によって生成された対応する予測ブロックと加算することによって、再構築されたビデオブロックを形成する。加算器９０は、この加算演算を実行する１つまたは複数の構成要素を表す。フィルタユニット９２は、たとえば、デブロッキングフィルタ処理、ＳＡＯフィルタ処理、ＡＬＦフィルタ処理または他のタイプのフィルタ処理のうちの１つまたは複数を使用して、再構築されたビデオブロックをフィルタ処理する。ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために、（コーディングループ中またはコーディングループ後のいずれかの）他のループフィルタも使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶するＤＰＢ９４に記憶される。ＤＰＢ９４は、図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために復号ビデオを記憶する追加メモリの一部であるか、または追加メモリとは別個であり得る。
【０１９３】
[0186]ビデオデコーダ３０は、たとえば、シンタックス要素を受信し、シンタックス要素に従ってパレット予測子初期化プロセスを実行するように構成され得る。シンタックス要素の第１の値は、たとえば、パレット予測子初期化が使用されることを示し得、シンタックス要素の第２の値は、パレット予測子サイズが０に等しく設定されることを示す。シンタックス要素は、たとえば、ＳＰＳまたはＰＰＳ中でシグナリングされ得る。
【０１９４】
[0187]追加または代替として、ビデオデコーダ３０は、ＰＰＳ中で、第１のパレット予測子初期化子シンタックス要素を受信し、ＳＰＳ中で、第２のパレット予測子初期化子シンタックス要素を受信するように構成され得る。第１のパレット予測子初期化子シンタックス要素と第２のパレット予測子初期化子シンタックス要素とに基づいて、ビデオデコーダ３０はパレット予測子を生成し得る。パレット予測子を生成するために、ビデオデコーダ３０は、パレット予測子中に、ＳＰＳ中で識別されたパレットエントリ、およびＰＰＳ中で識別された後続のパレットエントリを含むか、またはその逆の順序で含み得る。パレット予測子を生成するために、ビデオデコーダ３０は、追加または代替として、パレット予測子のエントリごとに１つまたは複数の再利用フラグを受信し得る。
【０１９５】
[0188]追加または代替として、ビデオデコーダ３０は、ＰＰＳ中で第１のスケーリングリストを受信し、ＳＰＳ中で第２のスケーリングリストを受信するように構成され得る。第１のスケーリングリストと第２のスケーリングリストとに基づいて、ビデオデコーダ３０はピクチャのためのスケーリングリストを生成し得る。
【０１９６】
[0189]追加または代替として、ビデオデコーダ３０は、第１のパラメータセット中で、パレット予測子初期化子エントリの第１のセットを受信するように構成され得る。第１のパラメータセットを受信した後に（Subsequent to）、ビデオデコーダ３０は、第２のパラメータセット中で、パレット予測子初期化子エントリの第２のセットを受信し得る。ビデオデコーダ３０は、パレット予測子初期化子エントリの第１のセットの少なくとも一部分を使用してパレット予測子初期化を実行し得る。パレット予測子初期化を実行するために、ビデオデコーダ３０は、たとえば、パレット予測子初期化子エントリの第１のセットの上記部分（the portion of）に加えて、パレット予測子初期化子エントリの第２のセットの少なくとも一部分を使用し得る。いくつかの例では、第１のパラメータセットはＰＰＳであり得、第２のパラメータセットはＳＰＳであり得る。
【０１９７】
[0190]追加または代替として、ビデオデコーダ３０はまた、パレット予測子初期化子エントリの第１のセットの上記部分を使用してパレット予測子初期化子を形成し、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子エントリの第２のセットの上記部分をパレット予測子初期化子に追加するように構成され得る。更新されたパレット予測子初期化子を形成するために、パレット予測子初期化子エントリの第２のセットの上記部分をパレット予測子初期化子に追加するために、ビデオデコーダ３０は、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子の始端においてパレット予測子初期化子エントリの第２のセットの上記部分を追加するように構成され得る。
【０１９８】
[0191]更新されたパレット予測子初期化子が備えるを形成するために、パレット予測子初期化子エントリの第２のセットの上記部分をパレット予測子初期化子に追加するために、ビデオデコーダ３０は、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子の終端においてパレット予測子初期化子エントリの第２のセットの上記部分を追加するように構成され得る。ビデオデコーダ３０はまた、パレット予測子エントリの第２のセットの上記部分の全体を追加することが初期化子サイズ限界を超えると決定し、決定に基づいて、更新されたパレット予測子初期化子から、パレット予測子エントリの第２のセットの上記部分の１つまたは複数のエントリを除外するように構成され得る。更新されたパレット予測子初期化子は、パレット予測子エントリの第１のセットの上記部分のサブ部分と、パレット予測子エントリの第２のセットの上記部分のサブ部分の両方を含み得る。
【０１９９】
[0192]図６は、本開示の技法による、ビデオエンコーダの例示的な動作を示すフローチャートである。図６のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図６で説明される動作は、上記で説明されたビデオエンコーダ２０などのビデオエンコーダによって実行され得るが、図６の動作はビデオエンコーダの任意の特定のタイプに限定されない。
【０２００】
[0193]図６の例では、ビデオエンコーダはビデオデータを符号化する。ビデオエンコーダは、符号化ビデオデータのビットストリーム中のＳＰＳシンタックス構造中に含めるために、第１のシンタックス要素を生成する（１００）。第１のシンタックス要素は、たとえば、パレット予測子初期化が有効にされることを示すｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇなどの１ビットフラグであり得る。ビデオエンコーダは、ＳＰＳシンタックス構造中に含めるために、１つまたは複数のＳＰＳレベルパレット予測子初期化子を生成する（１０２）。ビデオエンコーダは、符号化ビデオデータのビットストリーム中のＰＰＳシンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第２のシンタックス要素を生成する（１０４）。第２のシンタックス要素は、たとえば、上記で説明されたｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇなどの１ビットフラグであり得る。第２のシンタックス要素は、パレット予測子がＳＰＳレベルパレット予測子初期化子のいずれをも使用せずに生成されるべきであることをさらに示し得る。ビデオエンコーダは、ＰＰＳシンタックス構造中に含めるために、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第３のシンタックス要素を生成する（１０６）。第３のシンタックス要素は、たとえば、上記で説明されたｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒシンタックス要素であり得る。ビデオエンコーダはまた、ＳＰＳシンタックス構造中に含めるために、ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を生成する。第４のシンタックス要素は、たとえば、上記で説明されたシンタックス要素ｓｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｍｉｎｕｓ１であり得る。
【０２０１】
[0194]図７は、本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。図７のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図７で説明される動作は、上記で説明されたビデオデコーダ３０などのビデオデコーダによって実行され得るが、図７の動作はビデオデコーダの特定のタイプに限定されない。
【０２０２】
[0195]図７の例では、ビデオデコーダはビデオデータを復号する。ビデオデコーダは、ＳＰＳ中で、パレット予測子初期化が有効にされることを示す第１のシンタックス要素を受信する（１２０）。第１のシンタックス要素は、たとえば、上記で説明されたシンタックス要素ｓｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇなどの１ビットフラグであり得る。ビデオデコーダは、ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信する（１２２）。ビデオデコーダは、ＰＰＳ中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第２のシンタックス要素を受信する（１２４）。第２のシンタックス要素は、たとえば、上記で説明されたシンタックス要素ｐｐｓ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒ＿ｐｒｅｓｅｎｔ＿ｆｌａｇなどの１ビットフラグであり得る。第２のシンタックス要素は、パレット予測子がＳＰＳレベルパレット予測子初期化子のいずれをも使用せずに生成されるべきであることをさらに示し得る。ビデオデコーダは、ＰＰＳ中で、ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第３のシンタックス要素を受信する（１２６）。第３のシンタックス要素は、たとえば、上記で説明されたシンタックス要素ｐｐｓ＿ｎｕｍ＿ｐａｌｅｔｔｅ＿ｐｒｅｄｉｃｔｏｒ＿ｉｎｉｔｉａｌｉｚｅｒであり得る。
【０２０３】
[0196]ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の数が０に等しいことを第３のシンタックス要素が示すときにパレットテーブルを生成するために、ビデオデコーダは１つまたは複数のパレットテーブルエントリ値を受信し、パレットテーブル中に１つまたは複数の受信されたパレットテーブルエントリ値を含めることによって、パレットテーブルを生成し得る。したがって、パレットテーブルのためのエントリの一部または全部を決定するためにパレット予測子を使用してパレットを生成するのではなく、ビデオデコーダは、パレットテーブルのためのすべてのパレットエントリを直接受信する。ビデオデータのブロックのサンプルの場合、ビデオデコーダはインデックスを受信し、サンプルのためのインデックスに対応するパレットテーブルエントリを使用してビデオデータのブロックを再構築する。
【０２０４】
[0197]図８は、本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。図８のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図８で説明される動作は、上記で説明されたビデオデコーダ３０などのビデオデコーダによって実行され得るが、図８の動作はビデオデコーダの特定のタイプに限定されない。
【０２０５】
[0198]図８の例では、ビデオデコーダはビデオデータを復号する。ビデオデコーダは、ＳＰＳ中で第１のパレット予測子初期化データを受信する（１４０）。第１のパレット予測子初期化データに基づいて、ビデオデコーダはＳＰＳパレット予測子初期化子を決定する（１４２）。ビデオデコーダは、ＰＰＳ中で第２のパレット予測子初期化データを受信する（１４４）。第２のパレット予測子初期化データに基づいて、ビデオデコーダはＰＰＳパレット予測子初期化子を決定する（１４６）。ビデオデコーダは、ＳＰＳパレット予測子初期化子とＰＰＳパレット予測子初期化子とに基づいてパレット予測子を生成する（１４８）。パレット予測子を生成するために、ビデオデコーダは、たとえば、パレット予測子中に少なくとも１つのＰＰＳパレット予測子エントリを含め、パレット予測子中に少なくとも１つのＳＰＳパレット予測子エントリを含め得る。
【０２０６】
[0199]ビデオデコーダはまた、ビデオデータのブロックのために使用されるべきパレットとパレット予測子との間の差分を示す残差データを受信し得る。したがって、パレット予測子と残差データとに基づいて、ビデオデコーダは、ビデオデータのブロックのために使用されるべきパレットを決定することができる。
【０２０７】
[0200]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０２０８】
[0201]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０２０９】
[0202]命令は、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０２１０】
[0203]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０２１１】
[0204]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを復号する方法であって、前記方法は、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、
前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、
前記第１のシンタックス要素と前記第２のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を備える、方法。
［Ｃ２］
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信することと、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ３］
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信すること
をさらに備える、Ｃ２に記載の方法。
［Ｃ４］
前記第１のシンタックス要素は、前記パレット予測子がＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ２に記載の方法。
［Ｃ５］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ２に記載の方法。
［Ｃ６］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ１に記載の方法。
［Ｃ７］
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信することと、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ８］
ビデオデータの前記ブロックのサンプルのために、インデックスを受信することと、  前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの１つを使用してビデオデータの前記ブロックを再構築することと
をさらに備える、Ｃ７に記載の方法。
［Ｃ９］
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに基づいて、（１）パレット予測子がモノクロームエントリを含むかどうかの指示、（２）ルーマパレット予測子エントリのためのビット深度の指示、または（３）クロマパレット予測子エントリのためのビット深度の指示のうちの１つまたは複数が前記ＰＰＳ中に存在しないと決定すること
をさらに備える、Ｃ１に記載の方法。
［Ｃ１０］
ビデオデータを符号化する方法であって、前記方法は、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、  前記ＰＰＳシンタックス構造中に含めるために、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、
前記第１のシンタックス要素と前記第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することと
を備える、方法。
［Ｃ１１］
符号化ビデオデータのビットストリーム中のシーケンスパラメータセット（ＳＰＳ）シンタックス構造中に含めるために、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を生成することと、
前記ＳＰＳシンタックス構造中に含めるために、１つまたは複数のＳＰＳレベルパレット予測子エントリを生成することと
をさらに備える、Ｃ１０に記載の方法。
［Ｃ１２］
前記第１のシンタックス要素は、前記パレット予測子が前記ＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ１１に記載の方法。
［Ｃ１３］
前記ＳＰＳシンタックス構造中に含めるために、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子エントリの数を示す第４のシンタックス要素を生成すること
をさらに備える、Ｃ１１に記載の方法。
［Ｃ１４］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ１１に記載の方法。
［Ｃ１５］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ１０に記載の方法。
［Ｃ１６］
ビデオデータを復号するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、
前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、
前記第１のシンタックス要素と前記第２のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を行うように構成された、デバイス。
［Ｃ１７］
前記１つまたは複数のプロセッサは、
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信することと、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信することと
を行うようにさらに構成された、Ｃ１６に記載のデバイス。
［Ｃ１８］
前記１つまたは複数のプロセッサが、
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信する
ようにさらに構成された、Ｃ１７に記載のデバイス。
［Ｃ１９］
前記第１のシンタックス要素は、前記パレット予測子が前記ＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ１７に記載のデバイス。
［Ｃ２０］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ１７に記載のデバイス。
［Ｃ２１］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ１６に記載のデバイス。
［Ｃ２２］
前記１つまたは複数のプロセッサは、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信することと、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
を行うようにさらに構成された、Ｃ１６に記載のデバイス。
［Ｃ２３］
前記１つまたは複数のプロセッサが、
ビデオデータの前記ブロックのサンプルのために、インデックスを受信することと、  前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの１つを使用してビデオデータの前記ブロックを再構築することと
を行うようにさらに構成された、Ｃ２２に記載のデバイス。
［Ｃ２４］
前記１つまたは複数のプロセッサは、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに基づいて、（１）パレット予測子がモノクロームエントリを含むかどうかの指示、（２）ルーマパレット予測子エントリのためのビット深度の指示、または（３）クロマパレット予測子エントリのためのビット深度の指示のうちの１つまたは複数が前記ＰＰＳ中に存在しないと決定する
ようにさらに構成された、Ｃ１６に記載のデバイス。
［Ｃ２５］
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット（ＰＰＳ）シンタックス構造中に含めるために、パレット予測子がＰＰＳレベルパレット予測子エントリを使用して生成されるべきであることを示す第１のシンタックス要素を生成することと、
前記ＰＰＳシンタックス構造中に含めるために、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子エントリの数が０に等しいことを示す第２のシンタックス要素を生成することと、
前記第１のシンタックス要素と前記第２のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することと
を行うように構成された、デバイス。
［Ｃ２６］
前記１つまたは複数のプロセッサは、
符号化ビデオデータのビットストリーム中のシーケンスパラメータセット（ＳＰＳ）シンタックス構造中に含めるために、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を生成することと、
前記ＳＰＳシンタックス構造中に含めるために、１つまたは複数のＳＰＳレベルパレット予測子エントリを生成することと
を行うようにさらに構成された、Ｃ２５に記載のデバイス。
［Ｃ２７］
前記第１のシンタックス要素は、前記パレット予測子が前記ＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ２６に記載のデバイス。
［Ｃ２８］
前記ＳＰＳシンタックス構造中に含めるために、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子エントリの数を示す第４のシンタックス要素を生成する
をさらに備える、Ｃ２６に記載のデバイス。
［Ｃ２９］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ２６に記載のデバイス。
［Ｃ３０］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ２５に記載のデバイス。
［Ｃ３１］
ビデオデータを復号するための装置であって、前記装置は、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信するための手段と、
前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信する手段と、
前記第１のシンタックス要素と前記第２のシンタックス要素とに基づいてビデオデータのブロックを復号する手段と
を備える、装置。
［Ｃ３２］
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信する手段と、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信する手段と
をさらに備える、Ｃ３１に記載の装置。
［Ｃ３３］
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信する手段
をさらに備える、Ｃ３２に記載の装置。
［Ｃ３４］
前記第１のシンタックス要素は、前記パレット予測子がＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ３２に記載の装置。
［Ｃ３５］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ３２に記載の装置。
［Ｃ３６］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ３１に記載の装置。
［Ｃ３７］
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信する手段と、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成する手段と
をさらに備える、Ｃ３１に記載の装置。
［Ｃ３８］
ビデオデータの前記ブロックのサンプルのためのインデックスを受信する手段と、
前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの１つを使用してビデオデータの前記ブロックを再構築する手段と
をさらに備える、Ｃ３７に記載の装置。
［Ｃ３９］
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに基づいて、（１）パレット予測子がモノクロームエントリを含むかどうかの指示、（２）ルーマパレット予測子エントリのためのビット深度の指示、または（３）クロマパレット予測子エントリのためのビット深度の指示のうちの１つまたは複数が前記ＰＰＳ中に存在しないと決定するための手段
をさらに備える、Ｃ３１に記載の装置。
［Ｃ４０］
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
ピクチャパラメータセット（ＰＰＳ）中で、パレット予測子がＰＰＳレベルパレット予測子初期化子を使用して生成されるべきであることを示す第１のシンタックス要素を受信することと、
前記ＰＰＳ中で、前記ＰＰＳ中に含まれる前記ＰＰＳレベルパレット予測子初期化子の数が０に等しいことを示す第２のシンタックス要素を受信することと、
前記第１のシンタックス要素と前記第２のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
［Ｃ４１］
実行されたとき、前記１つまたは複数のプロセッサに、
シーケンスパラメータセット（ＳＰＳ）中で、パレット予測子初期化が有効にされることを示す第３のシンタックス要素を受信することと、
前記ＳＰＳ中で、１つまたは複数のＳＰＳレベルパレット予測子初期化子を受信することと
を行わせる命令をさらに記憶する、Ｃ４０に記載のコンピュータ可読記憶媒体。
［Ｃ４２］
実行されたとき、前記１つまたは複数のプロセッサに、
前記ＳＰＳ中で、前記ＳＰＳ中に含まれるＳＰＳレベルパレット予測子初期化子の数を示す第４のシンタックス要素を受信すること
を行わせる命令をさらに記憶する、Ｃ４１に記載のコンピュータ可読記憶媒体。
［Ｃ４３］
前記第１のシンタックス要素は、前記パレット予測子がＳＰＳレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、Ｃ４１に記載のコンピュータ可読記憶媒体。
［Ｃ４４］
前記第３のシンタックス要素が１ビットフラグを備える、Ｃ４１に記載のコンピュータ可読記憶媒体。
［Ｃ４５］
前記第１のシンタックス要素が１ビットフラグを備える、Ｃ４０に記載のコンピュータ可読記憶媒体。
［Ｃ４６］
実行されたとき、前記１つまたは複数のプロセッサに、
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに応答して、１つまたは複数のパレットテーブルエントリ値を受信することと、
前記１つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
を行わせる命令をさらに記憶する、Ｃ４０に記載のコンピュータ可読記憶媒体。
［Ｃ４７］
ビデオデータの前記ブロックのサンプルのために、インデックスを受信すると、
前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの１つを使用してビデオデータの前記ブロックを再構築すると
をさらに備える、Ｃ４６に記載のコンピュータ可読記憶媒体。
［Ｃ４８］
前記第２のシンタックス要素が、前記ＰＰＳ中に含まれるＰＰＳレベルパレット予測子初期化子の前記数が０に等しいことを示すことに基づいて、（１）パレット予測子がモノクロームエントリを含むかどうかの指示、（２）ルーマパレット予測子エントリのためのビット深度の指示、または（３）クロマパレット予測子エントリのためのビット深度の指示のうちの１つまたは複数が前記ＰＰＳ中に存在しないと決定する
をさらに備える、Ｃ４０に記載のコンピュータ可読記憶媒体。
【図１】
0006768795.tif 000006
【図２】
0006768795.tif 000007
【図３】
0006768795.tif 000008
【図４】
0006768795.tif 000009
【図５】
0006768795.tif 000010
【図６】
0006768795.tif 000011
【図７】
0006768795.tif 000012
【図８】
0006768795.tif 000013