(57)【要約】      （修正有）【課題】パレットベースコーディングモードに従ってコンテンツを符号化および復号する方法を提供する。【解決手段】ビデオデータを符号化する方法は、サイズを有するビデオデータのブロックを受信することと、ビデオデータのブロックのサイズを決定することと、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化することと、を備える。【選択図】図７
2020162144.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、前記方法が、
サイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することと
を備える、方法。
【請求項２】
パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限すること
をさらに備える、請求項１に記載の方法。
【請求項３】
前記第２のサイズが６４×６４である、請求項２に記載の方法。
【請求項４】
前記第１のサイズが３２×３２である、請求項２に記載の方法。
【請求項５】
前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、請求項２に記載の方法。
【請求項６】
パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限すること
をさらに備える、請求項１に記載の方法。
【請求項７】
前記最大変換ユニットの前記サイズが３２×３２である、請求項６に記載の方法。
【請求項８】
ビデオデータの前記ブロックを複数の４×４サブブロックに分割することと、
パレットモードを使用して、前記複数の４×４サブブロックを符号化することと
をさらに備える、請求項１に記載の方法。
【請求項９】
パレットモード符号化における任意のランレングス値を最大ランレングス値に制限すること
をさらに備える、請求項１に記載の方法。
【請求項１０】
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することは、パレットモードコーディングにおける前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、パレットモード符号化を無効化することを備える、請求項９に記載の方法。
【請求項１１】
前記最大ランレングスが最大変換ユニットのサイズに基づく、請求項９に記載の方法。
【請求項１２】
前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、請求項９に記載の方法。
【請求項１３】
前記最大ランレングス値が３２×３２−１である、請求項１２に記載の方法。
【請求項１４】
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信しているビデオエンコーダと
を備え、前記ビデオエンコーダが、
前記メモリからサイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することと
を行うように構成された、
デバイス。
【請求項１５】
前記ビデオエンコーダが、
パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限する
ように構成された、請求項１４に記載のデバイス。
【請求項１６】
前記第２のサイズが６４×６４である、請求項１５に記載のデバイス。
【請求項１７】
前記第１のサイズが３２×３２である、請求項１５に記載のデバイス。
【請求項１８】
前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、請求項１５に記載のデバイス。
【請求項１９】
前記ビデオエンコーダが、
パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限する
ように構成された、請求項１４に記載のデバイス。
【請求項２０】
前記最大変換ユニットの前記サイズが３２×３２である、請求項１９に記載のデバイス。
【請求項２１】
前記ビデオエンコーダが、
ビデオデータの前記ブロックを複数の４×４サブブロックに分割することと、
パレットモードを使用して、前記複数の４×４サブブロックを符号化することと
を行うように構成された、請求項１４に記載のデバイス。
【請求項２２】
前記ビデオエンコーダが、
パレットモード符号化における任意のランレングス値を最大ランレングス値に制限する
ように構成された、請求項１４に記載のデバイス。
【請求項２３】
前記ビデオエンコーダは、パレットモード符号化における前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するように構成された、請求項２２に記載のデバイス。
【請求項２４】
前記最大ランレングスが最大変換ユニットのサイズに基づく、請求項２２に記載のデバイス。
【請求項２５】
前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、請求項２２に記載のデバイス。
【請求項２６】
前記最大ランレングス値が３２×３２−１である、請求項２５に記載のデバイス。
【請求項２７】
ビデオデータを符号化するための装置であって、前記装置が、
サイズを有するビデオデータのブロックを受信するための手段と、
ビデオデータの前記ブロックの前記サイズを決定するための手段と、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するための手段と
を備える、装置。
【請求項２８】
パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限するための手段
をさらに備える、請求項２７に記載の装置。
【請求項２９】
前記第２のサイズが６４×６４である、請求項２８に記載の装置。
【請求項３０】
前記第１のサイズが３２×３２である、請求項２８に記載の装置。
【請求項３１】
前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、請求項２８に記載の装置。
【請求項３２】
パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限するための手段
をさらに備える、請求項２７に記載の装置。
【請求項３３】
前記最大変換ユニットの前記サイズが３２×３２である、請求項３２に記載の装置。
【請求項３４】
ビデオデータの前記ブロックを複数の４×４サブブロックに分割するための手段と、
パレットモードを使用して、前記複数の４×４サブブロックを符号化するための手段と
をさらに備える、請求項２７に記載の装置。
【請求項３５】
パレットモード符号化における任意のランレングス値を最大ランレングス値に制限するための手段
をさらに備える、請求項２７に記載の装置。
【請求項３６】
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するための手段は、パレットモードコーディングにおける前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、パレットモード符号化を無効化するための手段を備える、請求項３５に記載の装置。
【請求項３７】
前記最大ランレングスが最大変換ユニットのサイズに基づく、請求項３５に記載の装置。
【請求項３８】
前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、請求項３５に記載の装置。
【請求項３９】
前記最大ランレングス値が３２×３２−１である、請求項３８に記載の装置。
【請求項４０】
実行されたとき、１つまたは複数のプロセッサに、
サイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することと
を行わせる命令を記憶した非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本出願は２０１５年２月１０日に出願された米国仮特許出願第６２／１１４，５３７号の利益を主張するもので、その全体が参照により本明細書に組み込まれる。
【０００２】
[0002]  本開示は、コンテンツを符号化および復号することに関し、より詳細には、パレットベースコーディングモードに従ってコンテンツを符号化および復号することに関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記載されるものなどの、ビデオ圧縮技法を実施する。ビデオデバイスは、そのようなビデオ圧縮技法を実施することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]  ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間（イントラピクチャ）予測および／または時間（インターピクチャ）予測を行う。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]  空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データはコード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差係数が生じ得、その残差係数は、次いで量子化され得る。量子化された係数は、最初は２次元アレイで構成され、係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【０００６】
[0006]  画像など、コンテンツは、パレットモードを使用して符号化および復号され得る。概して、パレットモードは、コンテンツを表すための色値(color values)のパレットの使用を伴う技法である。コンテンツは、コンテンツが、パレット中の色値に対応する値を含むインデックスマップによって表されるように、符号化され得る。インデックスマップは、コンテンツを再構成するための色値を取得するために復号され得る。
【発明の概要】
【０００７】
[0007]  本開示の技法は、パレットベースコンテンツコーディングに関する。例えば、パレットベースコンテンツコーディングでは、コンテンツコーダ（例えば、ビデオエンコーダまたはビデオデコーダなど、コンテンツコーダ）が、特定のエリア（例えば、所与のブロック）のビデオデータを表すための色のテーブルとして、「パレット」を形成し得る。パレットベースコンテンツコーディングは、例えば、比較的少数の色を有するビデオデータのエリアをコーディングするために特に有用であり得る。実際のピクセル値（またはそれらの残差）をコーディングするのではなく、コンテンツコーダは、ピクセルの色を表すパレット中のエントリにピクセルを関係付ける、ピクセルのうちの１つまたは複数のためのパレットインデックス（例えば、インデックス値）をコーディングし得る。本開示で説明される技法は、パレットベースコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、送信されないシンタックス要素の値を導出すること、パレットベースコーディングマップおよび他のシンタックス要素を送信すること、パレットエントリを予測すること、パレットインデックスのランをコーディングすること、パレット情報をエントロピーコーディングすること、並びに様々な他のパレットコーディング技法のうちの１つまたは複数の様々な組合せのための技法を含み得る。
【０００８】
[0008]  一例では、本開示は、サイズを有するビデオデータのブロックを受信することと、ビデオデータのブロックのサイズを決定することと、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化する(disabling)こととを備える方法について説明する。
【０００９】
[0009]  一例では、本開示は、ビデオデータを記憶するように構成されたメモリと、メモリと通信しているビデオエンコーダとを備え、ビデオエンコーダが、メモリからサイズを有するビデオデータのブロックを受信することと、ビデオデータのブロックのサイズを決定することと、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化する(disable)こととを行うように構成された、デバイスについて説明する。
【００１０】
[0010]  一例では、本開示は、サイズを有するビデオデータのブロックを受信するための手段と、ビデオデータのブロックのサイズを決定するための手段と、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化するための手段とを備える装置について説明する。
【００１１】
[0011]  一例では、本開示は、実行されたとき、１つまたは複数のプロセッサに、サイズを有するビデオデータのブロックを受信することと、ビデオデータのブロックのサイズを決定することと、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化することとを行わせる命令を記憶した非一時的コンピュータ可読記憶媒体について説明する。
【００１２】
[0012]  本開示の１つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。本開示の他の特徴、目的、および利点は、説明および図面、並びに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１３】
【図１】本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】本開示で説明される技法を行い得る例示的なビデオエンコーダを示すブロック図。
【図３】本開示で説明される技法を行い得る例示的なビデオデコーダを示すブロック図。
【図４】本開示の技法に従って、パレットベースビデオコーディングのためのパレットエントリを決定することの一例を示す概念図。
【図５】本開示の技法に従って、ピクセルのブロックについてのパレットへのインデックスを決定することの一例を示す概念図。
【図６】本開示の技法に従って、ラスタ走査順序を仮定して最大コピーアバブランレングスを決定することの一例を示す概念図。
【図７】本開示のパレットベースビデオコーディングのための技法に従ってビデオデータを処理するための例示的なプロセスを示すフローチャート。
【発明を実施するための形態】
【００１４】
[0020]  本開示の態様は、コンテンツコーディング（例えば、ビデオコーディング）およびコンテンツデータ圧縮（例えば、ビデオデータ圧縮）のための技法を対象とする。特に、本開示は、コンテンツデータ（例えば、ビデオデータ）のパレットベースコーディングのための技法について説明する。本開示の様々な例では、本開示の技法は、以下でより詳細に説明されるように、コーディング効率を改善し、および／またはコーデック複雑さを低減するために、パレットモードにおいてブロックを予測またはコーディングすることのプロセスを対象とし得る。例えば、本開示は、パレットモードのためのパレットブロックサイズを制限することに関係する技法について説明する。
【００１５】
[0021]  本明細書で使用される「コンテンツ」という用語の事例は、「ビデオ」という用語に変更され得、「ビデオ」という用語の事例は、「コンテンツ」という用語に変更され得る。これは、「コンテンツ」または「ビデオ」という用語が形容詞として使用されているのか、名詞として使用されているのか、他の品詞として使用されているのかにかかわらず当てはまる。例えば、「コンテンツコーダ」への言及は「ビデオコーダ」への言及をも含み、「ビデオコーダ」への言及は「コンテンツコーダ」への言及をも含む。同様に、「コンテンツ」への言及は「ビデオ」への言及をも含み、「ビデオ」への言及は「コンテンツ」への言及をも含む。
【００１６】
[0022]  本明細書で使用される「コンテンツ」は任意のタイプのコンテンツを指す。例えば、「コンテンツ」は、ビデオ、スクリーンコンテンツ、画像、任意のグラフィカルコンテンツ、任意の表示可能コンテンツ、またはそれに対応する任意のデータ（例えば、ビデオデータ、スクリーンコンテンツデータ、画像データ、グラフィカルコンテンツデータ、表示可能コンテンツデータなど）を指し得る。
【００１７】
[0023]  本明細書で使用される「ビデオ」という用語は、スクリーンコンテンツ、可動コンテンツ、シーケンス中で提示され得る複数の画像、またはそれに対応する任意のデータ（例えば、スクリーンコンテンツデータ、可動コンテンツデータ、ビデオデータ、画像データなど）を指し得る。
【００１８】
[0024]  本明細書で使用される「画像」という用語は、単一の画像、１つまたは複数の画像、ビデオに対応する複数の画像の中の１つまたは複数の画像、ビデオに対応しない複数の画像の中の１つまたは複数の画像、ビデオに対応する複数の画像（例えば、ビデオに対応する画像の全てまたはビデオに対応する画像の全てよりも少ない画像）、単一の画像のサブ部分、単一の画像の複数のサブ部分、複数の画像に対応する複数のサブ部分、１つまたは複数のグラフィックスプリミティブ、画像データ、グラフィカルデータなどを指し得る。
【００１９】
[0025]  旧来のビデオコーディングでは、画像は、連続トーンであり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベース変換、フィルタ処理、および他のコーディングツールなどの様々なツールが開発されており、そのようなツールは、自然コンテンツビデオ対して良好な性能を示している。しかしながら、リモートデスクトップ、協調作業、およびワイヤレスディスプレイのような適用例では、コンピュータ生成スクリーンコンテンツが、圧縮されるべき主要なコンテンツであり得る。このタイプのスクリーンコンテンツは、離散トーン、鋭いライン、および高コントラストオブジェクト境界を有する傾向がある。連続トーンおよび滑らかさの仮定はもはや適用されないことがあり、従って、旧来のビデオコーディング技法は、コンテンツ（例えば、スクリーンコンテンツ）を圧縮する際に非効率的であり得る。
【００２０】
[0026]  パレットベースビデオコーディングの一例では、ビデオエンコーダは、ブロックのためのパレットを決定すること（例えば、パレットを明示的にコーディングすること、パレットを予測すること、またはそれらの組合せ）と、１つまたは複数のピクセルの値を表すためのパレット中のエントリの位置を特定することと、ブロックのピクセル値を表すために使用されるパレット中のエントリを示すインデックス値を用いてパレットとブロックの両方を符号化することとによって、ビデオデータのブロックを符号化し得る。いくつかの例では、ビデオエンコーダは、符号化ビットストリーム中でパレットおよび／またはインデックス値をシグナリングし得る。次に、ビデオデコーダは、符号化ビットストリームから、ブロックのためのパレット、並びにブロックの個々のピクセルのためのインデックス値を取得し得る。ビデオデコーダは、ブロックの様々なピクセル値を再構成するために、ピクセルのインデックス値をパレットのエントリに関係付け得る。
【００２１】
[0027]  例えば、ビデオデータの特定のエリアが比較的少数の色を有すると仮定され得る。ビデオコーダ（例えば、ビデオエンコーダまたはビデオデコーダ）は、特定のエリアのビデオデータを表すために、いわゆる「パレット」をコーディング（例えば、符号化または復号）し得る。パレットは、特定のエリア（例えば、所与のブロック）のビデオデータを表す色またはピクセル値のインデックス（例えば、テーブル）として表され得る。ビデオコーダは、１つまたは複数のピクセル値をパレット中の適切な値に関係付けるインデックスをコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリに関連付けられ得る。例えば、パレットは、所与のブロック中の最も支配的なピクセル値を含み得る。いくつかの場合には、最も支配的なピクセル値は、ブロック内で最も頻繁に生じる１つまたは複数のピクセル値を含み得る。さらに、いくつかの場合には、ビデオコーダは、あるピクセル値がブロック中の最も支配的なピクセル値の１つとして含まれるべきであるかどうかを決定するために、しきい値を適用し得る。パレットベースコーディングの様々な態様によれば、ビデオコーダは、ビデオデータの現在ブロックについて実際のピクセル値またはそれらの残差をコーディングするのではなく、現在ブロックのピクセル値のうちの１つまたは複数を示すインデックス値をコーディングし得る。パレットベースコーディングのコンテキストにおいて、インデックス値は、現在ブロックの個々のピクセル値を表すために使用される、パレット中のそれぞれのエントリを示す。上記の説明は、パレットベースビデオコーディングの概略的な説明を与えることを意図されている。
【００２２】
[0028]  スクリーン生成コンテンツコーディング、または１つまたは複数の旧来のコーディングツールが非効率的である他のコンテンツに特に好適であり得る、パレットベースコーディング。ビデオデータのパレットベースコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法など、１つまたは複数の他のコーディング技法とともに使用され得る。例えば、以下でより詳細に説明されるように、エンコーダまたはデコーダ、あるいは複合エンコーダデコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディング、並びにパレットベースコーディングを行うように構成され得る。
【００２３】
[0029]  いくつかの例では、パレットベースコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。例えば、高効率ビデオコーディング（ＨＥＶＣ）は、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ：Video Coding Experts Group）とＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ：Motion Picture Experts Group）とのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaboration Team on Video Coding）によって開発されている新しいビデオコーディング規格である。確定されたＨＥＶＣ規格文書は、「ITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video - High Efficiency Video Coding」、国際電気通信連合（ＩＴＵ）の電気通信標準化部門、２０１３年４月として公開されている。
【００２４】
[0030]  スクリーン生成コンテンツのより効率的なコーディングを行うために、ＪＣＴ−ＶＣは、ＨＥＶＣスクリーンコンテンツコーディング（ＳＣＣ）規格と呼ばれる、ＨＥＶＣ規格に対する拡張を展開している。「ＨＥＶＣ  ＳＣＣドラフト２」または「ＷＤ２」と呼ばれるＨＥＶＣ  ＳＣＣ規格の最近のワーキングドラフトが、文書ＪＣＴＶＣ−Ｓ１００５、Ｒ．ＪｏｓｈｉおよびＪ．Ｘｕ、「HEVC screen content coding draft text 2」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３とＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１とのジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaborative Team on Video Coding）、第１９回会議：ストラスブール、フランス、２０１４年１０月１７〜２４日に記載される。
【００２５】
[0031]  ＨＥＶＣフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、ＨＥＶＣのフレームワーク中で予測ユニット（ＰＵ）モードとして使用されるように構成され得る。従って、ＣＵモードのコンテキストにおいて説明される以下の開示されるプロセスの全てが、追加または代替として、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースコーディング技法が、独立して、あるいは他の既存のまたはまだ開発されていないシステム／規格の一部として動作するように適用され得るので、そのような技法の制限または限定であると見なされるべきではない。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、矩形ブロック、さらには非矩形形状の領域であり得る。
【００２６】
[0032]  いくつかの例では、パレットは、１つまたは複数のＣＵ、ＰＵ、またはデータの任意の領域（例えば、データの任意のブロック）のために導出され得る。例えば、パレットは、現在ＣＵ中の最も支配的なピクセル値を備え得（およびそれらからなり得）、ここで、ＣＵは、この特定の例のためのデータの領域である。パレットのサイズおよび要素は、最初に、ビデオエンコーダからビデオデコーダに送信される。コーディングされている現在ＣＵのためのパレットのサイズおよび／または要素は、現在ＣＵに隣接するＣＵ、すなわち、隣接ＣＵ（例えば、ここで、隣接ＣＵのものは、現在ＣＵの上および／または現在ＣＵの左のＣＵを含み得る）中のパレットのサイズおよび／または要素を使用して、直接コーディングされるかまたは予測コーディングされ得る。その後、ＣＵ中のピクセル値は、ある走査順序に従ってパレットに基づいて符号化される。ＣＵ中の各ピクセルロケーションについて、ピクセル値がパレット中に含まれるかどうかを示すために、フラグ、例えば、ｐａｌｅｔｔｅ＿ｆｌａｇが、最初に送信される。パレット中のエントリにマッピングするピクセル値について、そのエントリに関連付けられたパレットインデックスが、ＣＵ中の所与のピクセルロケーションのためにシグナリングされる。パレット中に存在しないピクセル値について、特別なインデックスがピクセルに割り当てられ得、実際のピクセル値が、ＣＵ中の所与のピクセルロケーションのために送信され得る。これらのピクセルは「エスケープピクセル」と呼ばれる。エスケープピクセルは、固定長コーディング、単項コーディングなど、任意の既存のエントロピーコーディング方法を使用してコーディングされ得る。
【００２７】
[0033]  ビデオデータのブロック中のサンプルが、水平ラスタ走査順序または他の走査順序を使用して処理され（例えば、走査され）得る。例えば、ビデオエンコーダは、水平ラスタ走査順序を使用してパレットインデックスを走査することによって、パレットインデックスの２次元ブロックを１次元アレイに変換し得る。同様に、ビデオデコーダは、水平ラスタ走査順序を使用してパレットインデックスのブロックを再構成し得る。従って、本開示は、走査順序でブロック中の現在コーディングされているサンプルに先行するサンプルを、前のサンプルと呼び得る。垂直ラスタ走査順序など、水平ラスタ走査以外の走査も適用可能であり得ることを諒解されたい。上記の例、並びに本開示で説明される他の例は、パレットベースビデオコーディングの概略的な説明を与えることを意図されている。
【００２８】
[0034]  図１は、本開示の技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースビデオコーディングのための技法を行うように構成され得るデバイスの例を表す。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなど、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、ＨＥＶＣ規格によって規定される様々なコーディングモードなど、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００２９】
[0035]  図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は符号化ビデオデータを生成する。従って、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化ビデオデータを復号し得る。従って、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００３０】
[0036]  ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（例えば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲にわたるデバイスを備え得る。
【００３１】
[0037]  宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化ビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス１４に送信し得る。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線路など、ワイヤレスおよび／またはワイヤード通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（例えば、インターネット）など、パケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を可能にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００３２】
[0038]  別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、例えば、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオデータを記憶するための他の好適なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００３３】
[0039]  さらなる一例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、（例えば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブがある。
【００３４】
[0040]  宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続としては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００３５】
[0041]  ソースデバイス１２および宛先デバイス１４は、本開示に従ってパレットベースコーディングを行うように構成され得る。但し、パレットベースコーディングのための本開示の技法はワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００３６】
[0042]  図１に示されるビデオコーディングシステム１０は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定（例えば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスがデータを符号化し、メモリに記憶し得、および／またはビデオ復号デバイスがメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、単にメモリにデータを符号化し、および／またはメモリからデータを取り出し、復号するデバイスによって行われる。
【００３７】
[0043]  図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、ビデオキャプチャデバイス、例えば、ビデオカメラ、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／またはビデオデータを生成するためのコンピュータグラフィクスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
【００３８】
[0044]  ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータは、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上にも記憶され得る。
【００３９】
[0045]  図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化ビデオデータを受信し得る。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るかまたはその外部にあり得る。概して、ディスプレイデバイス３２は復号ビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスを備え得る。
【００４０】
[0046]  本開示は、概して、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０などの別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリングすること」または「送信すること」という用語は、概して、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指すことがある。そのような通信は、リアルタイムまたはほぼリアルタイムに行われ得る。代替的に、そのような通信は、符号化時に符号化ビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。従って、ビデオデコーダ３０は、ある情報を「受信する」ものと呼ばれることがあるが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで行われるとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【００４１】
[0047]  ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実施され得る。本技法が部分的にソフトウェアで実施される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、本開示の技法を行うために１つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組合せなどを含む）上記のいずれも、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００４２】
[0048]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上記で述べられ、ＨＥＶＣ規格に記載されるＨＥＶＣ規格など、ビデオ圧縮規格に従って動作する。ベースＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。さらに、例えば、本開示で説明されるようなパレットベースコーディングモードが、ＨＥＶＣ規格の拡張のために与えられ得る。いくつかの例では、パレットベースコーディングのための本開示で説明される技法が、他のビデオコーディング規格に従って動作に構成されたエンコーダおよびデコーダに適用され得る。従って、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースコーディングモードの適用が、例として説明される。
【００４３】
[0049]  ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと示される３つのサンプルアレイを含み得る。ＳLはルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbはＣｂクロミナンスサンプルの２次元アレイである。ＳCrはＣｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００４４】
[0050]  ピクチャの符号化表現を生成するために、ビデオエンコーダ２０はコーディングツリーユニット（ＣＴＵ：coding tree unit）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ：largest coding unit）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査において連続的に順序付けられた整数個のＣＴＵを含み得る。コード化スライスはスライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスに関する情報を与えるシンタックス要素を含むシンタックス構造であり得る。スライスデータはスライスのコード化ＣＴＵを含み得る。
【００４５】
[0051]  本開示は、１つまたは複数のサンプルブロックと、サンプルの１つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」、または「ビデオブロック」、または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックは、ＣＴＵ、ＣＵ、ＰＵ、変換ユニット（ＴＵ）、マクロブロック、マクロブロック区分などを含み得る。ＨＥＶＣの例では、コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するためにＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に行い得、従って「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイ、ＣｂサンプルアレイおよびＣｒサンプルアレイ、並びにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を有するピクチャのルーマサンプルのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ピクチャのルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロックとＣｂ予測ブロックとＣｒ予測ブロックとのための予測ルーマブロックと予測Ｃｂブロックと予測Ｃｒブロックとを生成し得る。
【００４６】
[0052]  ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号サンプルに基づいてＰＵの予測ブロックを生成し得る。
【００４７】
[0053]  ビデオエンコーダ２０が、ＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ：motion vector）を有し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００４８】
[0054]  ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測ブロック（例えば、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック）を生成した後、ビデオエンコーダ２０は、ＣＵのための残差ブロックを生成し得る。ＣＵの残差ブロック中の各サンプルは、ＣＵのＰＵの予測ブロック中のサンプルと、ＣＵのコーディングブロック中の対応するサンプルとの間の差分を示し得る。例えば、ビデオエンコーダ２０はＣＵのためのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つ中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０はＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つ中のＣｂサンプルとＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのためのＣｒ残差ブロックをも生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つ中のＣｒサンプルとＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００４９】
[0055]  さらに、ビデオエンコーダ２０は、ＣＵの残差ブロック（例えば、ルーマ残差ブロック、Ｃｂ残差ブロックおよびＣｒ残差ブロック）を１つまたは複数の変換ブロック（例えば、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック）に分解するために４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。従って、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００５０】
[0056]  ビデオエンコーダ２０は、ＴＵのための係数ブロックを生成するために、変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。例えば、ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００５１】
[0057]  係数ブロック（例えば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、被量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオエンコーダ２０は、被量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を行い得る。
【００５２】
[0058]  一例としてＣＡＢＡＣに関して、ビデオエンコーダ２０およびビデオデコーダ３０は、コンテキストに基づいてビデオデータのブロックに関連するシンボルをコーディングするために（コンテキストモデルとも呼ばれる）確率モデルを選択し得る。例えば、コンテキストモデル（Ｃｔｘ）は、その各々が特定の確率モデルに対応し得る複数の異なるコンテキストのうちの１つを選択するために適用されるインデックスまたはオフセットであり得る。従って、異なる確率モデルは、一般に各コンテキストのために定義される。ビンを符号化または復号した後、確率モデルは、ビンのための最新の確率推定値を反映するために、ビンの値に基づいてさらに更新される。例えば、確率モデルは、有限状態機械中の状態として維持され得る。各特定の状態は特定の確率値に対応し得る。確率モデルの更新に対応する次の状態は、現在のビン（例えば、現在コーディングされているビン）の値に依存し得る。従って、確率モデルの選択は、前にコーディングされたビンの値が、少なくとも部分的に、所与の値を有するビンの確率を示すので、その値によって影響を及ぼされ得る。上記で説明されたコンテキストコーディングプロセスは、概して、コンテキスト適応型コーディングモードと呼ばれることがある。
【００５３】
[0059]  従って、ビデオエンコーダ２０は、確率モデルを使用してターゲットシンボルを符号化し得る。同様に、ビデオデコーダ３０は、確率モデルを使用してターゲットシンボルをパースし得る。いくつかの事例では、ビデオエンコーダ２０は、コンテキスト適応型コーディングと非コンテキスト適応型コーディングとの組合せを使用してシンタックス要素をコーディングし得る。例えば、ビデオエンコーダ２０は、ビンをコーディングするためにコンテキスト上で動作する確率モデルまたは「コンテキストモデル」を選択することによって、ビンをコンテキストコーディングし得る。対照的に、ビデオエンコーダ２０は、ビンをコーディングするときに通常の算術コーディングプロセスをバイパスまたは省略することによって、ビンをバイパスコーディングし得る。そのような例では、ビデオエンコーダ２０は、ビンをバイパスコーディングするために固定確率モデルを使用し得る。すなわち、バイパスコーディングされたビンは、コンテキスト更新または確率更新を含まない。
【００５４】
[0060]  ビデオエンコーダ２０は、エントロピー符号化シンタックス要素を含むビットストリームを出力し得る。ビットストリームはまた、エントロピー符号化されないシンタックス要素を含み得る。ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワークアブストラクションレイヤ（ＮＡＬ）ユニットのシーケンスを備え得る。ＮＡＬユニットの各々はＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、ＲＢＳＰはゼロビットを含む。
【００５５】
[0061]  異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。例えば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ：picture parameter set）のためのＲＢＳＰをカプセル化し得、第２のタイプのＮＡＬユニットは、コード化スライスのためのＲＢＳＰをカプセル化し得、第３のタイプのＮＡＬユニットは補足エンハンスメント情報（ＳＥＩ：supplemental enhancement information）のためのＲＢＳＰをカプセル化し得、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれることがある。
【００５６】
[0062]  ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するために、ビットストリームをパースし得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するための処理は、概して、ビデオエンコーダ２０によって行われるプロセスの逆であり得る。例えば、ビデオデコーダ３０は、現在ＣＵのＰＵのための予測ブロックを決定するためにＰＵのＭＶを使用し得る。加えて、ビデオデコーダ３０は、現在ＣＵのＴＵに関連する変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在ＣＵのＴＵに関連する変換ブロックを再構成するために、変換係数ブロックに対して逆変換を行い得る。ビデオデコーダ３０は、現在ＣＵのＰＵのための予測ブロックのサンプルを現在ＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在ＣＵのコーディングブロックを再構成し得る。ピクチャの各ＣＵのためのコーディングブロックを再構成することによって、ビデオデコーダ３０はピクチャを再構成し得る。
【００５７】
[0063]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースコーディングを行うように構成され得る。例えば、パレットベースコーディングでは、上記で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を行うのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（例えば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆるパレットをコーディングし得る。このようにして、ビデオデータの現在ブロックのための実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在ブロックのピクセル値のうちの１つまたは複数のためのインデックス値をコーディングし得、ここで、インデックス値は、現在ブロックのピクセル値を表すために使用されるパレット中のエントリを示す。
【００５８】
[0064]  例えば、ビデオエンコーダ２０は、ブロックのためのパレットを決定することと、各ピクセルの値を表すためのパレット中のエントリの位置を特定することと、パレットとピクセル値をパレットに関係付けるピクセルのためのインデックス値とを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ３０は、符号化ビットストリームから、ブロックのためのパレット、並びにブロックのピクセルのためのインデックス値を取得し得る。ビデオデコーダ３０は、ブロックのピクセル値を再構成するために、個々のピクセルのインデックス値をパレットのエントリと照合し得る。個々のピクセルに関連付けられたインデックス値が、ブロックのための対応するパレットのどのインデックス値にも一致しない事例では、ビデオデコーダ３０は、そのようなピクセルを、パレットベースコーディングの目的のために、エスケープピクセルとして識別し得る。
【００５９】
[0065]  別の例では、ビデオエンコーダ２０は、以下の動作に従ってビデオデータのブロックを符号化し得る。ビデオエンコーダ２０は、ブロックの個々のピクセルについての予測残差値を決定し、ブロックのためのパレットを決定し、個々のピクセルの予測残差値のうちの１つまたは複数の値を表す値を有する、パレット中のエントリ（例えば、インデックス値）の位置を特定し得る。さらに、ビデオエンコーダ２０は、ブロックの各個々のピクセルについての対応する予測残差値を表すために使用される、パレット中のエントリを示すインデックス値でブロックを符号化し得る。ビデオデコーダ３０は、ソースデバイス１２によってシグナリングされた符号化ビットストリームから、ブロックのためのパレット、並びにブロックの個々のピクセルに対応する予測残差値のためのインデックス値を取得し得る。説明されたように、インデックス値は、現在ブロックに関連付けられたパレット中のエントリに対応し得る。次に、ビデオデコーダ３０は、ブロックの予測残差値を再構成するために、予測残差値のインデックス値をパレットのエントリに関係付け得る。予測残差値は、ブロックのピクセル値を再構成するために、（例えば、イントラ予測またはインター予測を使用して取得された）予測値に加算され得る。
【００６０】
[0066]  以下でより詳細に説明されるように、パレットベースコーディングの基本的な考えは、コーディングされるべきビデオデータの所与のブロックについて、ビデオエンコーダ２０が、現在ブロック中の最も支配的なピクセル値を含むパレットを導出し得るというものである。例えば、パレットは、現在ＣＵについて支配的である、および／またはそれを表すと決定または仮定される、いくつかのピクセル値を指し得る。ビデオエンコーダ２０は、最初に、パレットのサイズと要素とをビデオデコーダ３０に送信し得る。さらに、ビデオエンコーダ２０は、ある走査順序に従って、所与のブロック中のピクセル値を符号化し得る。所与のブロック中に含まれる各ピクセルについて、ビデオエンコーダ２０は、ピクセル値を、パレット中の対応するエントリにマッピングするインデックス値をシグナリングし得る。ピクセル値がパレット中に含まれない（すなわち、パレットコード化ブロックの特定のピクセル値を指定するパレットエントリが存在しない）場合、そのようなピクセルは「エスケープピクセル」として定義される。パレットベースコーディングに従って、ビデオエンコーダ２０は、エスケープピクセルのために予約されたインデックス値を符号化し、シグナリングし得る。いくつかの例では、ビデオエンコーダ２０はまた、所与のブロック中に含まれるエスケープピクセルについてのピクセル値または残差値（あるいはそれの被量子化バージョン）を符号化し、シグナリングし得る。
【００６１】
[0067]  ビデオエンコーダ２０によってシグナリングされた符号化ビデオビットストリームを受信すると、ビデオデコーダ３０は、最初に、ビデオエンコーダ２０から受信された情報に基づいてパレットを決定し得る。ビデオデコーダ３０は、次いで、所与のブロックのピクセル値を再構成するために、所与のブロック中のピクセルロケーションに関連付けられる、受信されたインデックス値をパレットのエントリにマッピングし得る。いくつかの事例では、ビデオデコーダ３０は、エスケープピクセルのために予約されたインデックス値を用いてピクセルがパレットコーディングされていると決定することなどによって、パレットコード化ブロックのピクセルがエスケープピクセルであると決定し得る。ビデオデコーダ３０がパレットコード化ブロック中のエスケープピクセルを識別する事例では、ビデオデコーダ３０は、所与のブロック中に含まれるエスケープピクセルについてのピクセル値または残差値（あるいはそれの被量子化バージョン）を受信し得る。ビデオデコーダ３０は、個々のピクセル値を対応するパレットエントリにマッピングすることによって、およびパレットコード化ブロック中に含まれるエスケープピクセルを再構成するためにピクセル値または残差値（あるいはそれの被量子化バージョン）を使用することによって、パレットコード化ブロックを再構成し得る。
【００６２】
[0068]  上述のように、例示的なパレットコーディングモードでは、パレットは、インデックスによって番号を付けられたエントリを含み得る。各エントリは、ブロックのための予測子としてまたは最終再構成済みブロックサンプルとして使用され得る、（例えば、ＹＣｂＣｒ、ＲＧＢ、ＹＵＶ、ＣＭＹＫ、または他のフォーマットなど、色空間中の）色成分値(color component values) または強度(intensities)を表し得る。規格提案ドキュメントＪＣＴＶＣ−Ｑ００９４（Ｗｅｉ  Ｐｕら、「AHG10: Suggested Software for Palette Coding based on RExt6.0」、ＪＣＴＶＣ−Ｑ００９４、バレンシア、スペイン、２０１４年３月２７日〜４月４日）に記載されるように、パレットは、予測子パレットからコピーされたエントリを含み得る。予測子パレットは、パレットモードを使用して前にコーディングされたブロックまたは他の再構成済みサンプルからのパレットエントリを含み得る。予測子パレット中の各エントリについて、そのエントリが現在パレットにコピーされる（フラグ＝１によって示される）かどうかを示すために、バイナリフラグが送られる。これは、バイナリパレット予測ベクトルと呼ばれる。さらに、現在パレットは、明示的にシグナリングされる新しいエントリを備え（例えば、それからなり）得る。新しいエントリの数もシグナリングされ得る。
【００６３】
[0069]  別の例として、パレットモードでは、パレットは、ブロックサンプルのための予測子としてまたは最終再構成済みブロックサンプルとして使用され得る色成分値を表すインデックスによって番号を付けられたエントリを含み得る。パレット中の各エントリは、例えば、１つのルーマ成分（例えば、ルーマ値）、２つのクロマ成分（例えば、２つのクロマ値）、または３つの色成分（例えば、ＲＧＢ、ＹＵＶなど）を含んでいることがある。前に復号されたパレットエントリがリストに記憶され得る。このリストは、例えば、現在パレットモードＣＵにおいてパレットエントリを予測するために使用され得る。リスト中のどのエントリが現在パレット中で再利用されるかを示すためのバイナリ予測ベクトルがビットストリーム中でシグナリングされ得る。いくつかの例では、バイナリパレト予測子を圧縮するために、ランレングスコーディングが使用され得る。例えば、ランレングス値は、０次指数ゴロムコード(0th order Exp-Golomb code)を使用してコーディングされ得る。
【００６４】
[0070]  本開示では、各パレットエントリがサンプルの全ての色成分のための値を指定すると仮定される。但し、本開示の概念は、色成分ごとに別個のパレットおよび／または別個のパレットエントリを使用することに適用可能である。また、ブロック中のサンプルは、水平ラスタ走査順序を使用して処理されると仮定される。しかしながら、垂直ラスタ走査順序など、他の走査も適用可能である。上述のように、パレットは、例えば、前の（１つまたは複数の）ブロックをコーディングするために使用される（１つまたは複数の）パレットから予測される、予測されたパレットエントリと、現在ブロックのために固有であり得、明示的にシグナリングされる新しいエントリとを含んでいることがある。エンコーダおよびデコーダは、予測されたパレットエントリおよび新しいパレットエントリの数を知り得、それらの和は、ブロック中の総パレットサイズを示し得る。
【００６５】
[0071]  上記のＪＣＴＶＣ−Ｑ００９４の例において提案されたように、パレットを用いてコーディングされるブロック中の各サンプルは、以下に記載するように、３つのモードのうちの１つに属し得る。    
・エスケープモード。このモードでは、サンプル値がパレットエントリとしてパレットに含まれず、被量子化サンプル値が全ての色成分について明示的にシグナリングされる。それは、新しいパレットエントリのシグナリングと同様であるが、新しいパレットエントリについて、色成分値が量子化されない。    
・ＣｏｐｙＡｂｏｖｅモード（ＣｏｐｙＦｒｏｍＴｏｐモードまたはコピーモードとも呼ばれる）。このモードでは、現在サンプルのためのパレットエントリインデックスが、サンプルのブロック中の現在サンプルのすぐ上に位置するサンプルからコピーされる。他の例では、コピーアバブモードの場合、ビデオデータのブロックが、そのブロックの上のサンプルが実際にブロックの左のサンプルであるように転置され得る。    
・値モード（インデックスモードまたはランモードとも呼ばれる）。このモードでは、パレットエントリインデックスの値が明示的にシグナリングされる。
【００６６】
[0072]  本明細書で説明されるように、パレットエントリインデックスは、パレットインデックスまたは単にインデックスと呼ばれることがある。これらの用語は、本開示の技法について説明するために同義で使用され得る。さらに、以下でより詳細に説明されるように、パレットインデックスは、１つまたは複数の関連する色値または強度値を有し得る。例えば、パレットインデックスは、ピクセルの単一の色成分または強度成分（例えば、ＲＧＢデータの赤成分、ＹＵＶデータのＹ成分など）に関連する単一の関連する色値または強度値を有し得る。別の例では、パレットインデックスは、複数の関連する色値または強度値を有し得る。いくつかの事例では、パレットベースビデオコーディングは、モノクロームビデオをコーディングするために適用され得る。従って、「色値」は、概して、ピクセル値を生成するために使用される任意の色成分または非色成分を指し得る。
【００６７】
[0073]  ラン値(run value)は、同じパレットコーディングモードを使用してコーディングされるパレットインデックス値のランを示し得る。例えば、値モードに関して、ビデオコーダ（例えば、ビデオエンコーダ２０またはビデオデコーダ３０）は、インデックス値と、同じインデックス値を有し、パレットインデックスを用いてコーディングされている、走査順序での連続するサンプルの数を示すラン値とをコーディングし得る。ＣｏｐｙＡｂｏｖｅモードに関して、ビデオコーダは、現在サンプル値のためのインデックス値が上隣接サンプル（例えば、ブロック中で現在コーディングされているサンプルの上に位置するサンプル）のインデックス値と同じであるという指示と、上隣接サンプルからのインデックス値をもコピーし、パレットインデックスを用いてコーディングされている、走査順序での連続するサンプルの数を示すラン値とをコーディングし得る。従って、上記の例では、パレットインデックス値のランは、同じ値を有するパレット値のラン、または上隣接サンプルからコピーされたインデックス値のランを指す。
【００６８】
[0074]  従って、ランは、所与のモードについて、同じモードに属する後続のサンプルの数を指定し得る。いくつかの事例では、インデックス値とラン値とをシグナリングすることはランレングスコーディングと同様であり得る。説明の目的のための一例では、ビデオデータのブロックに対応するインデックスブロックの連続するパレットインデックス値のストリングは、０、２、２、２、２、５であり得る。いくつかの例では、インデックスブロックは、１つまたは複数のエスケープピクセル値を含み得る。インデックスブロック中の各インデックス値は、ビデオデータのブロック中のサンプルに対応し得る。この例では、ビデオコーダは、値モードを使用して第２のサンプル（例えば、「２」の第１のパレットインデックス値）をコーディングし得る。２のインデックス値をコーディングした後、ビデオコーダは、３つの後続のサンプルも２の同じパレットインデックス値を有することを示す、３のランをコーディングし得る。同様にして、ＣｏｐｙＡｂｏｖｅモードを使用してインデックスをコーディングした後に４つのパレットインデックスのランをコーディングすることは、合計５つのパレットインデックスが、現在コーディングされているサンプル位置の上の行中の対応するパレットインデックスからコピーされることを示し得る。
【００６９】
[0075]  パレットを使用して、ビデオエンコーダ２０および／またはビデオデコーダ３０は、サンプルのブロック（例えば、ビデオデータのブロック）をインデックスブロックにコーディングするように構成され得、ここで、インデックスブロックは、例えば、各サンプルについて、１つまたは複数のパレットエントリにサンプルをマッピングする、インデックス値を含み、いくつかの例では、１つまたは複数のエスケープピクセル値を含むブロックである。ビデオデータのブロックのあらゆるピクセルが、ランモード、コピーモードまたはエスケープモードを用いてコーディングされ得る。いくつかの例では、ビデオデータのブロックの第１の行中のピクセルは、ランモードまたはエスケープモードのみを使用してコーディングされ得る。
【００７０】
[0076]  シンタックス要素ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇは、ランモードが使用されるのかコピーモードが使用されるのかを示す。例えば、ビデオエンコーダ２０は、ビデオデータのブロックのサンプルについてｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇシンタックス要素に対応する値を符号化ビットストリームに符号化することによって、シンタックス要素ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇをシグナリングするように構成され得る。ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇシンタックス要素に対応する符号化値を備える符号化ビットストリームを受信するように構成され得る。ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇシンタックス要素に対応する値を決定し、従って、ビデオデータのブロックのサンプルのためにランモードが使用されるのかコピーモードが使用されるのかを決定するために、符号化値を復号するように構成され得る。例えば、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇの値が第１の値であるとき、ランモードがビデオデータのブロックのサンプルのために使用され得る。別の例として、ｐａｌｅｔｔｅ＿ｒｕｎ＿ｔｙｐｅ＿ｆｌａｇの値が第２の値であるとき、コピーモードがビデオデータのブロックのサンプルのために使用され得る。
【００７１】
[0077]  いくつかの例では、ランモードまたはコピーモードが使用されるとき、ｐａｌｅｔｔｅ＿ｉｎｄｅｘシンタックス要素がｐａｌｅｔｔｅ＿ｒｕｎシンタックス要素とともにシグナリングされ得る。例えば、ビデオエンコーダ２０は、ｐａｌｅｔｔｅ＿ｉｎｄｅｘに対応する値（例えば、インデックス値）と、ｐａｌｅｔｔｅ＿ｒｕｎに対応する値（例えば、ラン値）とを符号化ビットストリームに符号化することによって、ｐａｌｅｔｔｅ＿ｉｎｄｅｘおよびｐａｌｅｔｔｅ＿ｒｕｎシンタックスｅｌｅｍｅｎｔｒｓをシグナリングするように構成され得る。ビデオデコーダ３０し得るは、ｐａｌｅｔｔｅ＿ｉｎｄｅｘシンタックス要素に対応する符号化値と、ｐａｌｅｔｔｅ＿ｒｕｎシンタックス要素に対応する符号化値とを備える符号化ビットストリームを受信するように構成され得る。ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｉｎｄｅｘに対応する値（例えば、インデックス値）と、ｐａｌｅｔｔｅ＿ｒｕｎに対応する値（例えば、ラン値）とをそれぞれ決定するために、ｐａｌｅｔｔｅ＿ｉｎｄｅｘに対応する符号化値と、ｐａｌｅｔｔｅ＿ｒｕｎに対応する符号化値とを復号するように構成され得る。
【００７２】
[0078]  ランモードが使用されるとき、ラン値は、同じパレットインデックスを有するピクセルの数を示す。しかしながら、コピーモードが使用されるとき、ラン値は、パレットインデックス（例えば、インデックス値）が各ピクセルにそれぞれの別の（例えば、各それぞれのピクセルのすぐ上の）ピクセルからコピーされる、ピクセルの数を示す。
【００７３】
[0079]  いくつかの例では、エスケープモードは、このモードを示すために特定のパレットインデックスが使用され得る、ランモード内でコーディングされる。エスケープモードを示すために使用されるパレットインデックスは、いくつかの例によれば現在ブロックのパレットサイズに等しい。エスケープモードでは、エスケープモードが単一のピクセル（例えば、ピクセルトリプレット（Ｙ、Ｕ、およびＶ））に適用され、ここで、単一のピクセルのための（１つまたは複数の）色成分の（１つまたは複数の）値がｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌとして明示的にシグナリングされるので、ラン値がコーディングされないことがある。いくつかの例では、同じブロックに属する第１の行の上のピクセルがないので、コピーモードがブロック中の第１の行のために有効化され(enabled)ないことがある。
【００７４】
[0080]  エスケープピクセルの使用を示すために、フラグｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇがブロックごとにシグナリングされ得る。１に等しいこのフラグは、パレットコード化ブロック中に少なくとも１つのエスケープピクセルがあることを示し、他の場合、フラグは０に等しい。例えば、ビデオエンコーダ２０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇシンタックス要素に対応する値を符号化ビットストリームに符号化することによって、シンタックス要素ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇをシグナリングするように構成され得る。ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇシンタックス要素に対応する符号化値を備える符号化ビットストリームを受信するように構成され得る。ビデオデコーダ３０はｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇシンタックス要素に対応する値を決定し、従って、少なくとも１つのエスケープピクセルがパレットコード化ブロック中にあるかどうかを決定するために、符号化値を復号するように構成され得る。
【００７５】
[0081]  いくつかの例では、パレットサイズは、０からｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅまでの範囲内に制限され、後者がシグナリングされる。パレットモードを用いてコーディングされたブロックについて、パレットは、いくつかの例では、１つまたは複数の前にパレットコーディングされたブロックのパレットエントリから予測され得る。パレットは、１つまたは複数の新しいエントリとして現在ブロックのために明示的にシグナリングされ得る。他の例では、前にコーディングされたブロックのパレットが現在ブロックのために完全に再利用され（例えば、コピーされ）得、これは、パレット共有モードと呼ばれる。いくつかの例では、前のブロックのパレット全体が現在ブロックのためにそのまま変更なしに再利用されることを示すために、フラグｐａｌｅｔｔｅ＿ｓｈａｒｅ＿ｆｌａｇがシグナリングされ得る。
【００７６】
[0082]  パレットモードを使用してビデオのブロックをコーディングするとき、ピクセル走査パターン（例えば、走査順序）は、例えば、垂直トラバース走査または水平トラバース（スネーク状）走査を含み得る。ブロック中で使用される走査パターンは、ブロックユニットごとにシグナリングされるフラグｐａｌｅｔｔｅ＿ｔｒａｎｓｐｏｓｅ＿ｆｌａｇに従って導出され得る。
【００７７】
[0083]  パレットモードコーディング中に、パレットインデックス調整プロセスが適用され得る。現在ブロック中の第２のピクセルから開始して、走査順序での前のピクセルのパレットモードが検査され（例えば、決定され）得る。いくつかの例では、最大パレットインデックスサイズが最初に１だけ低減され得る。走査順序での前のピクセルのためのパレットモードがランモードに等しい場合（すなわち、走査順序での前のピクセルが、ランモードを使用してコーディングされたかまたはコーディングされるべきである場合）、現在ピクセルのためのパレットインデックス（例えば、インデックス値）は、インデックス値が走査順序での前のピクセルのためのインデックス値よりも大きいかまたはそれに等しい場合、１だけ低減され得る。同様に、走査順序での前のピクセルのためのパレットモードがコピーモードに等しい場合（すなわち、走査順序での前のピクセルがコピーモードを使用してコーディングされたかまたはコーディングされるべきである場合）、現在ピクセルのためのパレットインデックス（例えば、インデックス値）は、インデックスが上のパレットインデックスよりも大きい場合、１だけ低減され得る。
【００７８】
[0084]  ビデオエンコーダ２０は、インデックスブロックを圧縮するために、インデックスブロックをエントロピー符号化するように構成され得る。同様に、ビデオデコーダ３０は、ビデオデコーダ３０がそれからサンプルのブロック（例えば、エンコーダ２０によって符号化されたビデオデータのブロック）を生成し得るインデックスブロックを生成するために、符号化インデックスブロックをエントロピー復号するように構成され得る。例えば、インデックスブロックを圧縮および復元するために、ランレングスベースエントロピーコーディングが使用され得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ＣＡＢＡＣを使用してインデックスブロック中のインデックス値をそれぞれエントロピー符号化およびエントロピー復号するように構成され得る。
【００７９】
[0085]  情報（例えば、シンタックス要素、インデックスブロックのインデックス値など、インデックスブロック、または他の情報）にＣＡＢＡＣコーディングを適用するために、ビデオコーダ（例えば、ビデオエンコーダ２０およびビデオデコーダ３０）は、情報に対して２値化を行い得る。２値化は、情報を一連の１つまたは複数のビットに変換するプロセスを指す。各一連の１つまたは複数のビットは、「ビン」と呼ばれることがある。２値化は、ロスレスプロセス(lossless process)であり、以下のコーディング技法、すなわち、固定長コーディング、単項コーディング(unary coding)、切頭単項コーディング(truncated unary coding)、切頭ライスコーディング(truncated Rice coding)、ゴロムコーディング、指数ゴロムコーディング、ゴロム−ライスコーディング、任意の形式のゴロムコーディング、任意の形式のライスコーディング、および任意の形式のエントロピーコーディングのうちの１つまたは組合せを含み得る。例えば、２値化は、５の整数値を、８ビット固定長技法を使用して０００００１０１として表すことまたは単項コーディング技法を使用して１１１１０として表すことを含み得る。
【００８０】
[0086]  ２値化の後、ビデオコーダは、コーディングコンテキストを識別し得る。コーディングコンテキストは、特定の値を有するビンをコーディングする確率を識別し得る。例えば、コーディングコンテキストは、０の値のビンをコーディングする０．７の確率と、１の値のビンをコーディングする０．３の確率とを示し得る。コーディングコンテキストを識別した後、ビデオコーダは、そのビンをコンテキストに基づいて算術コーディングし得、これは、コンテキストモードコーディングとして知られる。ＣＡＢＡＣコンテキストモードコーディングを使用してコーディングされたビンは、「コンテキストビン」と呼ばれることがある。
【００８１】
[0087]  さらに、全てのビンに対してコンテキストモードコーディングを行う代わりに、ビデオコーダ（例えば、ビデオエンコーダ２０およびビデオデコーダ３０）は、バイパスＣＡＢＡＣコーディング（例えば、バイパスモードコーディング）を使用していくつかのビンをコーディングし得る。バイパスモードコーディングは、ＣＡＢＡＣコーダのバイパスモードを指し、ここで、バイパスコーディングは、適応コンテキスト（例えば、コーディングコンテキスト）を使用せずにビンを算術コーディングするプロセスである。すなわち、バイパスコーディングエンジンが、コンテキストを選択せず、両方のシンボル（０および１）について０．５の確率を仮定し得る。バイパスモードコーディングはコンテキストモードコーディングほど帯域幅効率的でないことがあるが、ビンに対してコンテキストモードコーディングを行うのではなく、ビンに対してバイパスモードコーディングを行うことは、計算コストがあまり高くないことがある。さらに、バイパスモードコーディングを行うことは、より高度の並列化およびスループットを可能にし得る。バイパスモードコーディングを使用してコーディングされたビンは、「バイパスビン」と呼ばれることがある。
【００８２】
[0088]  ビデオエンコーダ２０およびビデオデコーダ３０は、ＣＡＢＡＣコーダ（例えば、それぞれ、ＣＡＢＡＣエンコーダおよびＣＡＢＡＣデコーダ）で構成され得る。ＣＡＢＡＣコーダは、ＣＡＢＡＣコンテキストモードコーディングを行うためのコンテキストモードコーディングエンジンと、バイパスモードコーディングを行うためのバイパスモードコーディングエンジンとを含み得る。ビンがコンテキストモードコーディングされる場合、このビンをコーディングするために、コンテキストモードコーディングエンジンが使用される。コンテキストモードコーディングエンジンは、単一のビンをコーディングするために３つ以上の処理サイクルを必要とし得る。しかしながら、適切なパイプライン設計を用いると、コンテキストモードコーディングエンジンは、ｎ個のビンを符号化するためにｎ＋Ｍサイクルのみを必要とし得、ここで、Ｍはパイプラインを開始するためのオーバーヘッドである。Ｍは通常０よりも大きい。
【００８３】
[0089]  ＣＡＢＡＣコーディングプロセスの開始時に（すなわち、バイパスモードからコンテキストモードへのおよびその逆の切替えごとに）、パイプラインオーバーヘッドが導入される。ビンがバイパスモードコーディングされる場合、このビンをコーディングするために、バイパスモードコーディングエンジンが使用される。バイパスモードコーディングエンジンは、ｎビット情報をコーディングするために、１つのサイクルのみを必要とすることが予想され得、ここで、ｎは１よりも大きいことがある。従って、セット内のバイパスビンの全てが一緒に（例えば、インターリーブされたコンテキストコード化ビンなしに順次）コーディングされる場合、およびセット内のコンテキストビンの全てが一緒に（例えば、インターリーブされたバイパスコード化ビンなしに順次）コーディングされる場合、バイパスビンとコンテキストビンのセットをコーディングするためのサイクルの総数が低減され得る。詳細には、コンテキストモードコーディングに遷移する前または遷移した後、バイパスビンを一緒にコーディングすることは、コンテキストモードコーディングエンジンを再開するために必要とされるオーバーヘッドを節約することができる。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットモードを使用してビデオデータのブロックをそれぞれ符号化または復号する間、一連のバイパスコード化ビンおよびコンテキストコード化ビンにわたって、１回、バイパスモードからコンテキストモードに（または他の例ではコンテキストモードからバイパスモードに）切り替わるように構成され得る。別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットモードを使用してビデオデータのブロックを符号化または復号するとき、符号化プロセスまたは復号プロセスがバイパスモードからコンテキストモードに（およびコンテキストモードからバイパスモードに）切り替わる回数を低減するように構成され得る。
【００８４】
[0090]  本開示で説明される技法は、パレットベースビデオコーディングモードをシグナリングすること、パレットを送信すること、パレットを導出すること、走査順序をシグナリングすること、走査順序を導出すること、並びにパレットベースビデオコーディングマップおよび他のシンタックス要素を送信することのうちの１つまたは複数の様々な組合せのための技法を含み得る。例えば、本開示の技法は、パレット情報をエントロピーコーディングすることを対象とし得る。いくつかの例では、本開示の技法は、特に、パレットベースビデオコーディングに関連するコーディング効率を増加させ、コーディング非効率性を低減するために使用され得る。従って、以下でより詳細に説明されるように、本開示の技法は、いくつかの事例では、パレットモードを使用してビデオデータをコーディングするときの効率を改善し、ビットレートを改善し得る。
【００８５】
[0091]  本明細書で説明される技法、態様、および／または例は、任意の組合せで一緒にまたは互いに別々に利用され得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、本明細書で説明される技法、態様、および／または例のうちの１つまたは複数のうちのいずれか１つまたは任意の好適な組合せを行うように構成され得る。
【００８６】
[0092]  例示的なコーディングシステムの問題は、２０１５年２月１０日にＪＣＴ−ＶＣドキュメント管理システムにアップロードされたドキュメント、Ｔｚｕ−Ｄｅｒ  Ｃｈｕａｎｇら、「CE-1 related: Index Map scan for 64 x 64 palette coding block」、ＪＣＴＶＣ−Ｔ００５８バージョン３（以下、「ＪＣＴＶＣ−Ｔ００５８」）に記載されるもので、パレットブロックサイズが６４×６４ほど大きくなり得、走査パターンが６４×６４ほど大きくなり得るが、例えば、係数走査が適用される、最も大きい変換ブロックサイズが３２×３２であることである。従って、この場合、その実施形態でのパイプラインは、パレットモードがない場合は必要とされない、６４×６４のブロックサイズに増加され、従って、パレットモードのための特殊な場合を提示する。ＪＣＴＶＣ−Ｔ００５８は、６４×６４のトラバース走査を４つの３２×３２トラバース走査に変更することによって、パレットモードにおける６４×６４ブロックを４つの３２×３２のサブブロックとしてコーディングすることを記載した。しかしながら、そうすることは、６４×６４のパレットブロックの場合にのみ固有である、パレットモードコーディングの変更を必要とし、従って、例えば、パレットモードコーディングへの非一様性を導入するであろう。
【００８７】
[0093]  本開示の様々な例では、本開示の技法は、例えば、６４×６４ブロックがパレットモードを使用してコーディングされるべきであるとしても、それがどのようにコーディングされるべきであるかに対処することによって、コーディング効率を改善し、および／またはコーデック複雑さを低減するために、パレットモードにおいてブロックを予測またはコーディングすることのプロセスを対象とし得る。
【００８８】
[0094]  本開示のいくつかの例では、６４×６４またはそれ以上のサイズを有するパレットブロックのためのパレットモードコーディングが無効化され得る。他の例では、パレットモードコーディングは、６４×６４よりも小さいサイズを有するパレットブロックに制限され得、これは、パレットモードコーディングが６４×６４よりも小さいサイズを有するパレットブロックについて、有効化されるかまたはさもなければ使用され得ることを意味する。他の例では、最大パレットブロックサイズが、最大変換ユニットサイズに規範的に制限されるなど、最大変換ユニットサイズに基づいて規範的に制限され得る。パレットモードコーディングは、最大変換ユニットサイズを超えるかまたはさもなければそれよりも大きいパレットブロックサイズについて無効化され得る。そのような例では、最大パレットブロックサイズは、最大パレットブロックサイズが最大変換ユニットサイズに規範的に制限されるという点で、最大変換ユニットサイズに基づき得ることを理解されたい。例えば、ビデオエンコーダ２０は、パレットモードを使用して符号化され得る最大パレットブロックサイズを最大変換ユニットサイズに規範的に制限するように構成され得る。この例では、ビデオエンコーダ２０は、ビデオエンコーダ２０が符号化するように構成された最大変換ユニットサイズよりも大きいサイズを有するパレットブロックについて、パレットモードを無効化するかまたはさもなければパレットモードを使用しないように構成され得る。
【００８９】
[0095]  例えば、ビデオエンコーダ２０が符号化するように構成された最大変換ユニットサイズが３２×３２である場合、ビデオエンコーダ２０は、最大パレットブロックサイズを３２×３２に規範的に制限するように構成され得る。そのような例では、ビデオエンコーダ２０は、３２×３２よりも大きいサイズを有するパレットブロックについて、パレットモードを無効化するかまたはさもなければパレットモードを使用しないように構成され得る。また、そのような例では、ビデオエンコーダ２０は、３２×３２よりも小さいかまたはそれに等しいサイズを有するパレットブロックについて、パレットモードを有効化する(enable)かまたはさもなければパレットモードを使用するように構成され得ることを理解されたい。３２×３２よりも大きいサイズを有するパレットブロックの例としては、例えば、６４×６４、６４×１６、１６×６４、６４×３２、および３２×６４がある。
【００９０】
[0096]  別の例として、ビデオエンコーダ２０が符号化するように構成された最大変換ユニットサイズが１６×１６である場合、ビデオエンコーダ２０は、最大パレットブロックサイズを１６×１６に規範的に制限するように構成され得る。そのような例では、ビデオエンコーダ２０は、１６×１６よりも大きいサイズを有するパレットブロックについて、パレットモードを無効化するかまたはさもなければパレットモードを使用しないように構成され得る。また、そのような例では、ビデオエンコーダ２０は、１６×１６よりも小さいかまたはそれに等しいサイズを有するパレットブロックについて、パレットモードを有効化するかまたはさもなければパレットモードを使用するように構成され得ることを理解されたい。
【００９１】
[0097]  他の例では、ビデオエンコーダ２０が符号化するように構成された最大変換ユニットサイズは、Ｍ×Ｎのブロックサイズに規範的に制限され得、ここで、ＭおよびＮは、正の整数であり、互いに等しいことも等しくないこともある。いくつかの例では、Ｍおよび／またはＮは、最大変換ユニットサイズに基づき得る。例えば、最大変換ユニットサイズが３２×３２である場合、ＭおよびＮは両方とも３２に等しいであろう。しかしながら、最大変換ユニットサイズが３２×１６である一例では、Ｍは３２に等しく、Ｎは１６に等しいであろう。そのような例では、３２×１６よりも大きいサイズを有するパレットブロックの例としては、例えば、６４×６４、６４×１６、１６×６４、６４×３２、３２×６４、３２×３２、および１６×３２がある。
【００９２】
[0098]  いくつかの例では、ビデオエンコーダ２０は、特定のデータセットのために最大変換ユニットサイズをシグナリングするように構成され得る。そのような例では、ビデオエンコーダ２０は、シグナリングされた最大変換ユニットサイズよりも大きいブロックサイズを有する特定のデータセットに関連するパレットブロックについて、パレットモードを無効化するかまたはさもなければパレットモードを使用しないように構成され得る。従って、本明細書で使用される最大変換ユニットは、ビデオエンコーダ２０が符号化するように構成された最大変換ユニットを指すことがあり、または特定のデータセット（例えば、ビデオデータの１つまたは複数のブロック）についてのシグナリングされた最大変換ユニットを指すことがある。例えば、最大変換ユニットサイズが３２×３２であり得るが、ビデオエンコーダ２０は、特定のデータセットについて、最大変換ユニットサイズが１６×１６であることをシグナリングし得る。従って、この例におけるこの特定のデータセットについて、最大変換ユニットサイズは１６×１６である。
【００９３】
[0099]  従って、ビデオエンコーダ２０は、最大変換ユニットサイズに基づいて、パレットモードを動的に無効化するように構成され得るかまたはさもなければパレットモードを使用しないように構成され得ることを理解されたい。同様に、ビデオエンコーダ２０は、最大変換ユニットよりも大きいサイズを有するパレットブロックについて、パレットモードを動的に無効化するように構成され得るかまたはさもなければパレットモードを使用しないように構成され得ることを理解されたい。従って、また、ビデオエンコーダ２０は、最大変換ユニットに等しくないかまたはそれよりも小さいサイズを有するパレットブロックについて、パレットモードを動的に無効化するように構成され得るかまたはさもなければパレットモードを使用しないように構成され得ることを理解されたい。従って、さらに、ビデオエンコーダ２０は、ビデオデータのブロックが、ビデオエンコーダ２０が符号化するように構成され得る最大変換ユニットを超えないサイズを有するときのみ、パレットモードを使用してビデオデータのブロックを符号化するように構成され得ることを理解されたい。同様に、ビデオエンコーダ２０は、ビデオデータのブロックが最大変換ユニットを超えないサイズを有するときのみ、ビデオデータのブロックのためのパレットモードコーディングを有効化するように構成され得る。
【００９４】
[0100]  同様に、従って、ビデオデコーダ３０は、最大変換ユニットに等しくないかまたはそれよりも小さいサイズを有するパレットブロックについて、パレットモードを動的に無効化するように構成され得るかまたはさもなければパレットモードを使用しないように構成され得ることを理解されたい。従って、さらに、ビデオデコーダ３０は、ビデオデータのブロックが、ビデオエンコーダ２０が符号化するように構成され得るおよび／またはビデオデコーダ３０が復号するように構成され得る最大変換ユニットを超えないサイズを有するときのみ、パレットモードを使用してビデオデータのブロックを復号するように構成され得ることを理解されたい。同様に、ビデオデコーダ３０は、ビデオデータのブロックが最大変換ユニットを超えないサイズを有するときのみ、ビデオデータのブロックのためのパレットモードコーディングを有効化するように構成され得る。他の例では、ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇのシンタックス要素のための値など、パレットモードフラグに対応する値に基づいて、パレットモードが有効化されるのか無効化するのかを決定するように構成され得る。
【００９５】
[0101]  別の例として、ビデオデコーダ３０は、ビデオデータのブロックを受信するように構成され得る。ビデオデコーダ３０は、最大変換ユニットサイズに対してブロックビデオデータのサイズを決定するように構成され得る。ビデオデコーダ３０は、ビデオデータの受信されたブロックが最大変換ユニットサイズのサイズよりも大きいとき、ビデオの受信されたブロックがパレットモード符号化されないと決定するように構成され得る。
【００９６】
[0102]  本明細書に記載のように、最大パレットブロックサイズは規範的に制限され得る。例えば、最大パレットブロックサイズは、最大変換ユニットサイズに規範的に制限されるなど、最大変換ユニットサイズに基づき得る。いくつかの例では、ビデオエンコーダ２０は、パレットモードがいつ無効化され、有効化され、またはさもなければ使用されるかを制御することを生じる、本明細書で説明されるパレットブロックサイズ制限を実施するために、コンフォーマンスビットストリーム制約（conformance bitstream constraint）を用いて構成され得る。例えば、コンフォーマントビットストリーム制約（conformant bitstream constraint）は、コンフォーマントビットストリームが、パレットモードを用いてコーディングされた、あるサイズを超えるブロックを有しないものとすることであり得る。別の例として、コンフォーマントビットストリーム制約は、コンフォーマントビットストリームが、パレットモードを用いてコーディングされたブロックがあるサイズに等しいかまたはそれよりも小さい場合のみ、そのブロックを有するものとすることであり得る。両方の例では、参照されるあるサイズは、３２×３２または他のＭ×Ｎサイズであり得、ここで、ＭおよびＮは、正の整数であり、互いに等しいことも等しくないこともある。但し、他の例では、上記の両方の例における参照されるあるサイズは、最大変換ユニットサイズに基づき得る。そのような例では、コンフォーマントビットストリーム制約は、例えば、コンフォーマントビットストリームが、最大変換ユニットを超えるブロックを有しないものとすることであり得る。別の例として、コンフォーマントビットストリーム制約は、コンフォーマントビットストリームが、本明細書で説明される１つまたは複数の規範的制限に準拠しなければならないことであり得る。
【００９７】
[0103]  本明細書で説明されるコンフォーマントビットストリーム制約に関して、ビデオエンコーダ２０は、パレットモードがビデオデータのブロックのために、いつ無効化され、有効化され、またはさもなければ使用されるかを制御するために、任意の組合せで（１つまたは複数の）そのような制約を用いて構成され得ることを理解されたい。
【００９８】
[0104]  他の例では、ビデオエンコーダ２０は、ビデオデータのブロック全体がＭ×Ｎサブブロックによって表されるように、パレットモードコーディングされるべきビデオデータのブロックをＭ×Ｎサブブロックに分割するように構成されることによって、本明細書で説明されるパレットブロックサイズ制限を実施するように構成され得、ここで、ＭおよびＮは、正の整数であり、互いに等しいことも等しくないこともある。ビデオデータのブロック全体を分割することは、ビデオデータのブロックの各ピクセル（例えば、サンプル）がＭ×Ｎサブブロックの一部であることを意味する。サブブロックのサイズは、１つまたは複数の基準に依存し得る。例えば、Ｍ×Ｎサブブロックのサイズは、パレットモードコーディングを変換係数コーディングと整合させるために、変換係数コーディングにおいて使用されるブロックのサイズ（例えば、ＴＵ中の変換ブロックのサイズ）に依存し得る。そのような例では、ビデオエンコーダ２０が、サイズが４×４のブロックを使用して変換係数コーディングするように構成された場合、ビデオエンコーダ２０は、パレットモードコーディングされるべきビデオデータのブロックを４×４のサブブロックに分割するように構成され得、ここで、ＭおよびＮは両方とも４に等しい。例えば、パレットモードを使用して６４×６４ブロックをコーディングする代わりに、ビデオエンコーダ２０は、６４×６４ブロックを複数の４×４サブブロックに分割するように構成され、この例では２５６個の４×４サブブロックを生じ、各サブブロックがパレットモードを使用して個々にコーディングされ得る。
【００９９】
[0105]  別の例では、１つまたは複数の基準に依存するのではなく、Ｍ×Ｎサブブロックのサイズは、６４×６４よりも小さいデフォルトサイズであり得る。例えば、Ｍ×Ｎサブブロックのデフォルトサイズは、４×４、８×８、１６×１６、３２×３２、または６４×６４よりも小さい他のサイズであり得る。この例では、ビデオエンコーダ２０は、パレットモードコーディングされるべきビデオデータのブロックを、それぞれ、４×４、８×８、１６×１６、３２×３２、または６４×６４よりも小さい他のサイズなど、デフォルトサイズに分割するように構成されることによって、本明細書で説明されるパレットブロックサイズ制限を実施するように構成され得る。
【０１００】
[0106]  いくつかの例では、Ｍ×Ｎサブブロックは、任意の走査順序に従って走査され得る。例えば、ビデオエンコーダ２０は、ジグザグ走査順序、水平走査順序、垂直走査順序、「スネーク状」走査順序（すなわち、トラバース走査順序）、または他の走査順序を使用して、Ｍ×Ｎサブブロックを走査するように構成され得る。
【０１０１】
[0107]  他の例では、ビデオエンコーダ２０は、６４×６４のサイズを有するブロックのために（例えば、ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇのシンタックス要素のための値をシグナリングすることによって）パレットモードをシグナリングするように構成されるだけでなく、６４×６４よりも小さいＭ×Ｎサブブロックサイズのために他のパレット関係情報（例えば、再利用されるパレットエントリ、新しいパレットエントリ、パレットテーブルサイズなど）をシグナリングするように構成されることによって、本明細書で説明されるパレットブロックサイズ制限を実施するように構成され得、ここで、ＭおよびＮは、正の整数であり、互いに等しいことも等しくないこともある。例えば、Ｍ×Ｎサブブロックサイズは３２×３２であり得る。いくつかの例では、Ｍ×Ｎサブブロックサイズは、３２×３２が最大変換ユニットのサイズに対応するので、３２×３２であり得る。そのような例では、ビデオエンコーダ２０は、６４×６４のサイズを有するブロックのためのパレットモードをシグナリングするように構成されるだけでなく、３２×３２サブブロックサイズ（または他のＭ×Ｎサブブロックサイズ）において他のパレット関係情報をシグナリングするように構成されることによって、本明細書で説明されるパレットブロックサイズ制限を実施するように構成され得る。これは、ビデオエンコーダ２０がパレットモードブロックサイズを変換ユニットブロックサイズと調和させるように構成され得る、本明細書で説明される一例である。いくつかの例では、Ｍおよび／またはＮは、最大変換ユニットサイズに基づき得る。例えば、最大変換ユニットサイズが３２×３２である場合、ＭおよびＮは両方とも３２に等しいであろう。６４×６４パレットブロックサイズのための走査順序は、Ｍ×Ｎブロックの各々のための走査順序と同じであり得る。
【０１０２】
[0108]  ６４×６４のパレットブロックサイズを伴う一例では、ビデオエンコーダは、この６４×６４サイズのパレットブロックのためのパレットモードをシグナリングするように構成され得る。ビデオエンコーダは、次いで、各Ｍ×Ｎサブブロックのための他のパレット関係情報をシグナリングするように構成され得る。例えば、ビデオエンコーダ２０は、各Ｍ×Ｎサブブロックのためのｍａｘ＿ｐａｌｅｔｔｅ＿ｓｉｚｅをシグナリングするように構成され得る。
【０１０３】
[0109]  他の例では、ビデオエンコーダ２０は、インデックス値および／またはエスケープ値の最長ランレングスをＴのしきい値よりも小さくなるように制限するように構成されることによって、本明細書で説明されるパレットブロックサイズ制限を実施するように構成され得る。そのような例では、６４×６４パレットブロックをサブブロックにスプリットするのではなく、ビデオエンコーダ２０は、最大ランレングスをＴのしきい値よりも小さくなるように制限するように構成され得る。最大ランレングス値を制限することによって、ビデオエンコーダ２０は、パレットブロックをサブブロックに分割することなしにパレットブロックサイズ制限を実施するように構成され得る。
【０１０４】
[0110]  いくつかの例では、Ｔは、最大変換ユニットサイズに等しくなり得る。例えば、最大変換ユニットサイズが３２×３２である場合、Ｔは３２×３２に等しくなり得る。６４×６４パレットブロックと３２×３２のＴ値とのための水平トラバース走査順序を伴う一例が次に説明される。この例では３２×３２象限におけるパレットブロック（例えば、インデックス値と、その後に続く、３２×３２−１など、Ｔよりも小さいランレングス）を処理するのではなく、ビデオエンコーダ２０は、６４×６４パレットブロックをそのまま処理するが、３２×３２−１など、Ｔの値よりも小さい値に最大ランレングスを制限し得る。
【０１０５】
[0111]  いくつかの例では、ビデオエンコーダ２０は、本明細書で説明されるパレットブロックサイズ制限を実施するために、コンフォーマンスビットストリーム制約を用いて構成され得る。例えば、コンフォーマントビットストリーム制約は、コンフォーマントビットストリームが、Ｔのしきい値に等しいかまたはそれよりも大きいランレングス値を含まないものとすることであり得る。
【０１０６】
[0112]  図２は、本開示の技法を実施し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０について説明する。但し、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１０７】
[0113]  ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースコーディングのための技法を行うように構成され得るデバイスの一例を表す。
【０１０８】
[0114]  図２の例では、ビデオエンコーダ２０は、ブロック符号化ユニット１００と、ビデオデータメモリ１０１と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構成ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。ブロック符号化ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットとを含む（図示せず）。ビデオエンコーダ２０は、本開示で説明されるパレットベースコーディング技法の様々な態様を行うように構成された、パレットベース符号化ユニット１２２をも含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１０９】
[0115]  ビデオデータメモリ１０１は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ１０１に記憶されるビデオデータは、例えば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗性ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ１０１および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ１０１は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１１０】
[0116]  ビデオエンコーダ２０はビデオデータを受信し得る。ビデオエンコーダ２０はビデオデータのピクチャのスライス中の各ＣＴＵを符号化し得る。ＣＴＵの各々は、等しいサイズのルーマコーディングツリーブロック（ＣＴＢ：coding tree block）と、ピクチャの対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、ブロック符号化ユニット１００は、ＣＴＵのＣＴＢを徐々により小さいブロックに分割するために４分木区分を行い得る。より小さいブロックはＣＵのコーディングブロックであり得る。例えば、ブロック符号化ユニット１００は、ＣＴＵに関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分し、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【０１１１】
[0117]  ビデオエンコーダ２０は、ＣＵの符号化表現（すなわち、コーディングされたＣＵ）を生成するためにＣＴＵのＣＵを符号化し得る。ＣＵを符号化することの一部として、ブロック符号化ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵに関連付けられたコーディングブロックを区分し得る。従って、各ＰＵは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートし得る。上記のように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測用の２Ｎ×２ＮまたはＮ×ＮのＰＵサイズと、インター予測用の２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称ＰＵサイズとをサポートし得る。ビデオエンコーダ２０およびビデオデコーダ３０は、インター予測用の２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズに対する非対称区分をもサポートし得る。
【０１１２】
[0118]  インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を行うことによって、ＰＵのための予測データを生成し得る。ＰＵのための予測データは、ＰＵの予測ブロックとＰＵのための動き情報とを含み得る。インター予測処理ユニット１２０は、ＰＵがＩスライス中にあるのか、Ｐスライス中にあるのか、Ｂスライス中にあるのかに応じて、ＣＵのＰＵに対して異なる動作を行い得る。Ｉスライス中では、全てのＰＵがイントラ予測される。従って、ＰＵがＩスライス中にある場合、インター予測処理ユニット１２０はＰＵに対してインター予測を行わない。従って、Ｉモードで符号化されたブロックの場合、予測ブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間予測を使用して形成される。
【０１１３】
[0119]  ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャのリスト（例えば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索し得る。ＰＵのための参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含んでいる、参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵのための参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニットは、ＰＵのコーディングブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すＭＶを生成し得る。例えば、ＭＶは、現在の復号ピクチャ中の座標から参照ピクチャ中の座標までのオフセットを与える２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【０１１４】
[0120]  ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を行い得る。ＰＵについての単予測を行うために、動き推定ユニットは、ＰＵのための参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索し得る。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるのかＲｅｆＰｉｃＬｉｓｔ１中にあるのかを示す１つまたは複数の予測方向インジケータとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成し得る。
【０１１５】
[0121]  ＰＵについての双方向インター予測を行うために、動き推定ユニットは、ＰＵのための参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索し得、ＰＵのための別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャをも探索し得る。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照ピクチャインデックスを生成し得る。さらに、動き推定ユニットは、参照領域に関連付けられた参照ロケーションとＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成し得る。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成し得る。
【０１１６】
[0122]  本開示の様々な例によれば、ビデオエンコーダ２０は、パレットベースコーディングを行うように構成され得る。ＨＥＶＣフレームワークに関して、一例として、パレットベースコーディング技法は、ＣＵレベルにおいて使用されるように構成され得る。他の例では、パレットベースコーディング技法は、ＰＵレベルにおいて使用されるように構成され得る。他の例では、パレットベースコーディング技法は、サブ予測ユニット（サブＰＵ）レベル（例えば、予測ユニットのサブブロック）において使用されるように構成され得る。従って、ＣＵレベルのコンテキストにおいて（本開示全体にわたって）本明細書で説明される開示されるプロセスの全てが、追加または代替として、ＰＵレベルまたはサブＰＵレベルに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースビデオコーディング技法が、独立して、あるいは他の既存のまたはまだ開発されていないシステム／規格の一部として動作するように適用され得るので、そのような技法の制限または限定であると見なされるべきではない。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、矩形ブロック、さらには非矩形形状の領域であり得る。
【０１１７】
[0123]  パレットベース符号化ユニット１２２は、例えば、パレットベース符号化モードが、例えば、ＣＵまたはＰＵのために選択されるとき、パレットベース復号を行い得る。例えば、パレットベース符号化ユニット１２２は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能が、パレットベース符号化ユニット１２２によって行われるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって行われ得る。
【０１１８】
[0124]  本開示の態様によれば、パレットベース符号化ユニット１２２は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを行うように構成され得る。
【０１１９】
[0125]  例えば、パレットベース符号化ユニット１２２は、６４×６４またはそれ以上のサイズを有するパレットブロックのためのパレットモードコーディングを無効化するように構成され得る。他の例では、パレットベース符号化ユニット１２２は、パレットモードコーディングを、６４×６４よりも小さいサイズを有するパレットブロックに制限するように構成され得、これは、パレットモードコーディングが６４×６４よりも小さいサイズを有するパレットブロックについて、有効化されるかまたはさもなければ使用され得ることを意味する。他の例では、パレットベース符号化ユニット１２２は、最大変換ユニットサイズに基づいて、最大パレットブロックサイズを規範的に制限するように構成され得る。別の例では、パレットベース符号化ユニット１２２は、最大変換ユニットサイズを超えるかまたはさもなければそれよりも大きいサイズを有するパレットブロックのためのパレットモードコーディングを無効化するように構成され得る。パレットベース符号化ユニット１２２は、同様に、本明細書で説明されるパレットコーディングのための他の技法を行うように構成され得る。
【０１２０】
[0126]  イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を行うことによって、ＰＵのための予測データを生成し得る。ＰＵのための予測データは、ＰＵのための予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライス中のＰＵに対してイントラ予測を行い得る。
【０１２１】
[0127]  ＰＵに対してイントラ予測を行うために、イントラ予測処理ユニット１２６は、ＰＵのための予測データの複数のセットを生成するために複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット１２６は、ＰＵのための予測ブロックを生成するために隣接ＰＵのサンプルブロックからのサンプルを使用し得る。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、例えば、３３個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、ＰＵに関連付けられた領域のサイズに依存し得る。
【０１２２】
[0128]  ブロック符号化ユニット１００は、ＰＵのためにインター予測処理ユニット１２０によって生成された予測データ、またはＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中からＣＵのＰＵのための予測データを選択し得る。いくつかの例では、ブロック符号化ユニット１００は、予測データのセットのレート／ひずみメトリックに基づいて、ＣＵのＰＵのための予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
【０１２３】
[0129]  残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロックと、ＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックとに基づいて、ＣＵのルーマ残差ブロック、Ｃｂ残差ブロックおよびＣｒ残差ブロックを生成し得る。例えば、残差生成ユニット１０２は、残差ブロック中の各サンプルが、ＣＵのコーディングブロック中のサンプルとＣＵのＰＵの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、ＣＵの残差ブロックを生成し得る。
【０１２４】
[0130]  変換処理ユニット１０４は、ＣＵに関連付けられた残差ブロックをＣＵのＴＵに関連付けられた変換ブロックに区分するために、４分木区分を行い得る。従って、いくつかの例では、ＴＵは、ルーマ変換ブロックと２つのクロマ変換ブロックとに関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックとクロマ変換ブロックとのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ：residual quad-tree）として知られる４分木構造は、領域の各々に関連付けられたノードを含み得る。ＣＵのＴＵはＲＱＴのリーフノードに対応し得る。
【０１２５】
[0131]  変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵに関連付けられた変換ブロックに様々な変換を適用し得る。例えば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例では、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
【０１２６】
[0132]  量子化ユニット１０６は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。例えば、量子化中にｎビットの変換係数がｍビットの変換係数に切り捨てられることがあり、ここで、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵに関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰ値を調整することによって、ＣＵに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得、従って、被量子化変換係数は、元の係数よりも低い精度を有し得る。
【０１２７】
[0133]  逆量子化ユニット１０８および逆変換処理ユニット１１０は、係数ブロックから残差ブロックを再構成するために、それぞれ、係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット１１２は、ＴＵに関連付けられた再構成済み変換ブロックを生成するために、再構成済み残差ブロックを、ブロック符号化ユニット１００によって生成された１つまたは複数の予測ブロックからの対応するサンプルに加算し得る。このようにＣＵの各ＴＵについて変換ブロックを再構成することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構成し得る。
【０１２８】
[0134]  フィルタユニット１１４は、ＣＵに関連付けられたコーディングブロック内のブロッキングアーティファクトを低減するために１つまたは複数のデブロッキング演算を行い得る。フィルタユニット１１４は、サンプル適応オフセット（ＳＡＯ：sample adaptive offset）フィルタ処理および／または適応ループフィルタ処理（ＡＬＦ：adaptive loop filtering）を含む、他のフィルタ処理演算を行い得る。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構成済みコーディングブロックに対して１つまたは複数のデブロッキング演算を行った後、再構成済みコーディングブロックを記憶し得る。インター予測処理ユニット１２０は、他のピクチャのＰＵに対してインター予測を行うために、再構成済みコーディングブロックを含んでいる参照ピクチャを使用し得る。さらに、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャの中の他のＰＵに対してイントラ予測を行うために、復号ピクチャバッファ１１６中の再構成済みコーディングブロックを使用し得る。
【０１２９】
[0135]  エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能構成要素からデータを受信し得る。例えば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受信し得、ブロック符号化ユニット１００からシンタックス要素を受信し得る。エントロピー符号化ユニット１１８は、エントロピー符号化データを生成するために、データに対して１つまたは複数のエントロピー符号化演算を行い得る。例えば、エントロピー符号化ユニット１１８は、ＣＡＢＡＣ演算、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）演算、可変対可変（Ｖ２Ｖ：variable-to-variable）長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算など、コンテキスト適応型コーディング演算をデータに対して行い得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。例えば、ビットストリームは、ＣＵのためのＲＱＴを表すデータを含み得る。
【０１３０】
[0136]  いくつかの例では、残差コーディングはパレットコーディングとともに行われない。従って、ビデオエンコーダ２０は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を行わないことがある。さらに、ビデオエンコーダ２０は、残差データとは別個に、パレットコーディングモードを使用して生成されたデータをエントロピー符号化し得る。
【０１３１】
[0137]  本開示の技法のうちの１つまたは複数によれば、ビデオエンコーダ２０、および詳細にはパレットベース符号化ユニット１２２は、予測されるビデオブロックのパレットベースビデオコーディングを行い得る。上記で説明されたように、ビデオエンコーダ２０によって生成されたパレットは、明示的に符号化されるか、ビデオデコーダ３０に送られるか、前のパレットエントリから予測されるか、前のピクセル値から予測されるか、またはそれらの組合せであり得る。
【０１３２】
[0138]  図３は、本開示の技法を行うように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０について説明する。但し、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１３３】
[0139]  エンコーダ２０に関して上記で説明されたパレットコーディングの詳細は、デコーダ３０に関してここで繰り返されないが、デコーダ３０は、エンコーダ２０に関して本明細書で説明される符号化プロセスに対する逆の復号プロセスを行い得ることを理解されたい。
【０１３４】
[0140]  例えば、ビデオデコーダ３０は、最大変換ユニットに等しくないかまたはそれよりも小さいサイズを有するパレットブロックについて、パレットモードを動的に無効化するように構成され得るかまたはさもなければパレットモードを使用しないように構成され得ることを理解されたい。さらに、ビデオデコーダ３０は、ビデオデータのブロックが、ビデオエンコーダ２０が符号化するように構成され得るおよび／またはビデオデコーダ３０が復号するように構成され得る最大変換ユニットを超えないサイズを有するときのみ、パレットモードを使用してビデオデータのブロックを復号するように構成され得ることを理解されたい。同様に、ビデオデコーダ３０は、ビデオデータのブロックが最大変換ユニットを超えないサイズを有するときのみ、ビデオデータのブロックのためのパレットモードコーディングを有効化するように構成され得る。他の例では、ビデオデコーダ３０は、ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇのシンタックス要素のための値など、パレットモードフラグに対応する値に基づいて、パレットモードが有効化されるのか無効化するのかを決定するように構成され得る。
【０１３５】
[0141]  別の例として、ビデオデコーダ３０は、ビデオデータのブロックを受信するように構成され得る。ビデオデコーダ３０は、最大変換ユニットサイズに対してブロックビデオデータのサイズを決定するように構成され得る。ビデオデコーダ３０は、ビデオデータの受信されたブロックが最大変換ユニットサイズのサイズよりも大きいとき、ビデオの受信されたブロックがパレットモード符号化されないと決定するように構成され得る。
【０１３６】
[0142]  ビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースコーディングおよびエントロピーコーディング（例えば、ＣＡＢＡＣ）のための技法を行うように構成され得るデバイスの一例を表す。
【０１３７】
[0143]  図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、ビデオデータメモリ１５１と、ブロック復号ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構成ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。ブロック復号ユニット１５２は、動き補償ユニット１６４と、イントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０は、本開示で説明されるパレットベースコーディング技法の様々な態様を行うように構成された、パレットベース復号ユニット１６５をも含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１３８】
[0144]  ビデオデータメモリ１５１は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ１５１に記憶されるビデオデータは、例えば、コンピュータ可読媒体から、例えば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１５１は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ１６２は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗性ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ１５１および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ１５１は、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１３９】
[0145]  コード化ピクチャバッファ（ＣＰＢ）は、ビットストリームの符号化ビデオデータ（例えば、ＮＡＬユニット）を受信し、記憶し得る。エントロピー復号ユニット１５０は、ＣＰＢから符号化ビデオデータ（例えば、ＮＡＬユニット）を受信し、シンタックス要素を復号するためにＮＡＬユニットをパースし得る。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化シンタックス要素をエントロピー復号し得る。ブロック復号ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構成ユニット１５８、およびフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。
【０１４０】
[0146]  ビデオデコーダ３０は、本明細書で説明されるビデオエンコーダ２０のプロセスとは概して逆のプロセスを行うように構成され得る。同様に、ビデオエンコーダ２０は、本明細書で説明されるビデオデコーダ３０のプロセスとは概して逆のプロセスを行うように構成され得る。例えば、ビデオデコーダ３０がビットストリーム中の符号化シンタックス要素を復号するように構成され得るという開示は、同様に、ビデオエンコーダ２０がそのシンタックス要素をそのビットストリーム中に符号化するように構成され得ることを必然的に開示する。
【０１４１】
[0147]  別の例として、エントロピー復号ユニット１５０は、本明細書で説明されるエントロピー符号化ユニット１１８のプロセスとは概して逆のプロセスを行うように構成され得る。本開示の態様によれば、エントロピー復号ユニット１５０は、エントロピー符号化ユニット１１８によって生成されたコードワードをエントロピー復号するように構成され得る。
【０１４２】
[0148]  ビットストリームのＮＡＬユニットはコード化スライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コード化スライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含んでいることがある。スライスヘッダ中のシンタックス要素は、スライスを含んでいるピクチャに関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１４３】
[0149]  ビットストリームからシンタックス要素を復号することに加えて、ビデオデコーダ３０は、区分されていないＣＵに対して再構成演算を行い得る。区分されていないＣＵに対して再構成演算を行うために、ビデオデコーダ３０はＣＵの各ＴＵに対して再構成演算を行い得る。ＣＵの各ＴＵに対して再構成演算を行うことによって、ビデオデコーダ３０はＣＵの残差ブロックを再構成し得る。
【０１４４】
[0150]  ＣＵのＴＵに対して再構成演算を行うことの一部として、逆量子化ユニット１５４は、ＴＵに関連付けられた係数ブロックを逆量子化、すなわち、量子化解除し得る。逆量子化ユニット１５４は、量子化の程度を決定し、同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵに関連付けられたＱＰ値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
【０１４５】
[0151]  逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵに関連付けられた残差ブロックを生成するために係数ブロックに１つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ：Karhunen-Loeve transform）、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【０１４６】
[0152]  イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵのための予測ブロックを生成するためにイントラ予測を行い得る。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵの予測ブロックに基づいてＰＵのための予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックを生成するためにイントラ予測モードを使用し得る。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいてＰＵのためのイントラ予測モードを決定し得る。
【０１４７】
[0153]  ブロック復号ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構成し得る。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０はＰＵのための動き情報を抽出し得る。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定し得る。動き補償ユニット１６４は、ＰＵのための１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵのための予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックを生成し得る。
【０１４８】
[0154]  再構成ユニット１５８は、ＣＵのルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロックを再構成するために、適用可能なとき、ＣＵのＴＵに関連付けられたルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック、並びにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック、すなわち、イントラ予測データまたはインター予測データのいずれかを使用し得る。例えば、再構成ユニット１５８は、ＣＵのルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロックを再構成するために、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロックのサンプルを、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックの対応するサンプルに加算し得る。
【０１４９】
[0155]  フィルタユニット１６０は、ＣＵのルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロックに関連付けられたブロッキングアーティファクトを低減するためにデブロッキング演算を行い得る。ビデオデコーダ３０は、ＣＵのルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロックを復号ピクチャバッファ１６２に記憶し得る。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために、参照ピクチャを与え得る。例えば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測演算またはインター予測演算を行い得る。
【０１５０】
[0156]  本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースコーディングを行うように構成され得る。パレットベース復号ユニット１６５は、例えば、パレットベース復号モードが、例えば、ＣＵまたはＰＵのために選択されるとき、パレットベース復号を行い得る。例えば、パレットベース復号ユニット１６５は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリに関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。様々な機能が、パレットベース復号ユニット１６５によって行われるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって行われ得る。
【０１５１】
[0157]  パレットベース復号ユニット１６５は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を行い得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット１６５は、例えば、ＨＥＶＣインター予測またはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、例えば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの１つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
【０１５２】
[0158]  本開示の態様によれば、パレットベース復号ユニット１６５は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを行うように構成され得る。エンコーダ２０に関して上記で説明されたパレットコーディングの詳細は、デコーダ３０に関してここで繰り返されないが、デコーダ３０は、エンコーダ２０に関して本明細書で説明されるパレットベース符号化プロセスに対する逆のパレットベース復号プロセスを行い得ることを理解されたい。
【０１５３】
[0159]  図４は、本開示の技法に従って、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。図４の例は、第１のパレット１８４に関連付けられる第１のＰＡＬ（パレット）コーディングユニット（ＣＵ）１８０と第２のパレット１９２に関連付けられる第２のＰＡＬ  ＣＵ１８８とを有するピクチャ１７８を含む。以下でより詳細に説明されるように、および本開示の技法によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８は、イントラ予測コーディングモードを用いてコーディングされるブロック１９６と、インター予測コーディングモードを用いてコーディングされるブロック２００とをも含む。
【０１５４】
[0160]  図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）のコンテキストにおいて、説明の目的でＨＥＶＣビデオコーディング規格に関して、説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０１５５】
[0161]  概して、パレットは、現在コーディングされているＣＵ、図４の例ではＣＵ１８８について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。（インデックス１８４と呼ばれることもある）第１のパレット１８４および（インデックス１９２と呼ばれることもある）第２のパレット１９２は、（複数のインデックスと呼ばれることもある）複数のパレットを含むものとして示される。いくつかの例では、本開示の態様によれば、（ビデオエンコーダ２０またはビデオデコーダ３０などの）ビデオコーダは、ＣＵの各色成分について別々にパレット（例えば、インデックス）をコーディングし得る。例えば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのまた別のパレットとを符号化し得る。この例では、ＹパレットのエントリはＣＵのピクセルのＹ値を表し得、ＵパレットのエントリはＣＵのピクセルのＵ値を表し得、ＶパレットのエントリはＣＵのピクセルのＶ値を表し得る。
【０１５６】
[0162]  他の例では、ビデオエンコーダ２０は、ＣＵの全ての色成分について単一のパレットを符号化し得る。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、トリプル値であるｉ番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々についての値を含む。従って、複数の個々のパレットを有するパレットのセットとしてのパレット１８４および１９２の表現は、一例にすぎず、限定することは意図されない。
【０１５７】
[0163]  図４の例では、第１のパレット１８４は、それぞれ、エントリインデックス値１、エントリインデックス値２、およびエントリインデックス値３を有する３つのエントリ２０２〜２０６を含む。第１のパレット１８４は、インデックス値（例えば、第１のパレット１８４の左列に示される値）をピクセル値に関係付ける。例えば、図４に示されるように、第１のパレット１８４のうちの１つは、それぞれ、インデックス値１、２、および３をピクセル値Ａ、Ｂ、およびＣに関係付ける。本明細書で説明されるように、第１のＣＵ１８０の実際のピクセル値をコーディングするのではなく、（ビデオエンコーダ２０またはビデオデコーダ３０などの）ビデオコーダは、（インデックス値１〜３として表されることもある）インデックス１〜３を使用してブロックのピクセルをコーディングするためにパレットベースコーディングを使用し得る。すなわち、第１のＣＵ１８０の各ピクセル位置について、ビデオエンコーダ２０はピクセルについてのインデックス値を符号化し得、インデックス値は、第１のパレット１８４のうちの１つまたは複数の中のピクセル値に関連付けられる。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し、インデックス値と第１のパレット１８４のうちの１つまたは複数とを使用してピクセル値を再構成し得る。従って、第１のパレット１８４は、パレットベース復号におけるビデオデコーダ３０による使用のために、符号化ビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。
【０１５８】
[0164]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。例えば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、１つまたは複数のブロックの位置を特定し得、そのブロックから、予測パレット、この例では第１のパレット１８４が決定される。図４に示される例など、いくつかの例では、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第２のＣＵ１８８のための予測パレットを決定するとき、左の隣接ＣＵ（第１のＣＵ１８０）など、前にコーディングされたＣＵの位置を特定し得る。
【０１５９】
[0165]  図４の例では、第２のパレット１９２は、それぞれ、エントリインデックス値１、エントリインデックス値２、およびエントリインデックス値３を有する３つのエントリ２０８〜２１２を含む。第２のパレット１９２は、インデックス値（例えば、第１のパレット１９２の左列に示される値）をピクセル値に関係付ける。例えば、図４に示されるように、第２のパレット１９２のうちの１つは、それぞれ、インデックス値１、２、および３をピクセル値Ａ、Ｂ、およびＤに関係付ける。この例では、ビデオエンコーダ２０は、第１のパレット１８４のどのエントリが第２のパレット１９２中に含まれるかを示す１つまたは複数のシンタックス要素をコーディングし得る。図４の例では、１つまたは複数のシンタックス要素は、ベクトル２１６として示される。ベクトル２１６は、いくつかの関連するビン（またはビット）を有し、各ビンは、そのビンに関連付けられたパレット予測子が現在パレットのエントリを予測するために使用されるかどうかを示す。例えば、ベクトル２１６は、第１のパレット１８４の最初の２つのエントリ（２０２および２０４）が、第２のパレット１９２中に含まれる（ベクトル２１６中の「１」の値）が、第１のパレット１８４の第３のエントリが、第２のパレット１９２中に含まれない（ベクトル２１６中の「０」の値）ことを示す。図４の例では、ベクトルは、ブールベクトル(Boolean vector)である。
【０１６０】
[0166]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測を行うとき、（パレット予測子テーブルと呼ばれることもある）パレット予測子リストを決定し得る。パレット予測子リストは、現在ブロックをコーディングするためのパレットの１つまたは複数のエントリを予測するために使用される１つまたは複数の隣接ブロックのパレットからのエントリを含み得る。ビデオエンコーダ２０およびビデオデコーダ３０は、同様の方法でリストを構成し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測子リストのどのエントリが現在ブロックをコーディングするためのパレット中に含まれるべきかを示すために、（ベクトル２１６などの）データをコーディングし得る。
【０１６１】
[0167]  図５は、本開示の技法に従って、ピクセルのブロックについてのパレットへのインデックスを決定することの一例を示す概念図である。例えば、図５は、パレット２４４のエントリへのインデックス値（例えば、値１、２、および３）に関連付けられたピクセルのそれぞれの位置に関係するインデックス値を含む、（マップ２４０またはインデックスマップ２４０と呼ばれることもある）インデックスブロック２４０を含む。
【０１６２】
[0168]  インデックスブロック２４０は、各ピクセル位置についてのインデックス値を含むものとして図５の例に示されるが、他の例では、全てのピクセル位置が、ピクセル値をパレット２４４のエントリに関係付けるインデックス値に関連付けられ得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ビデオエンコーダ２０は、ピクセル値がパレット２４４中に含まれない場合、インデックスブロック２４０中の位置についての実際のピクセル値（またはそれの被量子化バージョン）の指示を符号化し得る（および、ビデオデコーダ３０は、符号化ビットストリームからその指示を取得し得る）。
【０１６３】
[0169]  いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのピクセル位置がどのインデックス値に関連付けられるかを示す追加のマップをコーディングするように構成され得る。例えば、インデックスブロック２４０中の（ｉ，ｊ）のエントリがＣＵの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリが、関連付けられたインデックス値を有するかどうかを示す、インデックスブロックの各エントリ（すなわち、各ピクセル位置）のための１つまたは複数のシンタックス要素を符号化し得る。例えば、ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４中の値のうちの１つであることを示すために、１の値を有するフラグを符号化し得る。
【０１６４】
[0170]  ビデオエンコーダ２０は、そのような例では、（２４４として図５の例に示される）パレットをも符号化し得る。パレット２４４が単一のエントリと関連するピクセル値とを含む事例では、ビデオエンコーダ２０は、インデックス値のシグナリングをスキップし得る。ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４中の値のうちの１つではないことを示すために、０の値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ２０はまた、ピクセル値を再構成する際にビデオデコーダ３０によって使用するために、ピクセル値の指示を符号化し得る。いくつかの事例では、ピクセル値は不可逆様式でコーディングされ得る。
【０１６５】
[0171]  ＣＵの１つの位置におけるピクセルの値は、ＣＵの他の位置における１つまたは複数の他のピクセルの値の指示を与え得る。例えば、ＣＵの隣接ピクセル位置が、同じピクセル値を有するか、または（２つ以上のピクセル値が単一のインデックス値にマッピングされ得る、不可逆コーディングの場合）同じインデックス値にマッピングされ得る確率が比較的高くなり得る。
【０１６６】
[0172]  従って、ビデオエンコーダ２０は、同じピクセル値またはインデックス値を有する所与の走査順序での連続するピクセルまたはインデックス値の数を示す１つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセル値またはインデックス値のストリングは、本明細書では「ラン」と呼ばれることがある。説明の目的のための一例では、所与の走査順序での２つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序での２つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序での３番目のピクセルまたはインデックスが異なる値を有する場合、ランは１に等しい。同じ値をもつ３つの連続するインデックスまたはピクセルでは、ランは２であり、以下同様である。ビデオデコーダ３０は、符号化ビットストリームからランを示すシンタックス要素を取得し、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定するためにそのデータを使用し得る。
【０１６７】
[0173]  本開示の技法によるいくつかの例では、エントロピー符号化ユニット１１８およびエントロピー復号ユニット１５０は、インデックスブロック２４０をエントロピーコーディングするように構成され得る。例えば、符号化ユニット１１８およびエントロピー復号ユニット１５０は、パレットモードにおけるインデックスブロックに関係するランレングス（例えば、ランレングス値またはランレングスコード）および／またはバイナリパレット予測ベクトルをエントロピーコーディングするように構成され得る。
【０１６８】
[0174]  図６は、本開示の技法に従って、ラスタ走査順序の一例を仮定して最大コピーアバブランレングスを決定することの一例を示す概念図である。図６の例では、破線２８０によって囲まれるピクセルのいずれもエスケープサンプルとしてコーディングされない場合、最大可能ランレングスは３５（すなわち影なしピクセル位置の数）である。破線２８０内のピクセルのうちの１つまたは複数がエスケープサンプルとしてコーディングされる場合、エスケープピクセルとしてマークされるピクセル（「Ｘ」のピクセル位置）が走査順序での破線２８０内の第１のエスケープピクセルであると仮定すると、最大可能コード化コピーアバブランレングスは５である。
【０１６９】
[0175]  いくつかの例では、ビデオデコーダ３０は、破線２８０内のピクセルのためのランモード（例えば、ピクセルがコーディングされるパレットモード）のみを決定し得る。従って、最悪の場合、ビデオデコーダ３０は、ＢｌｏｃｋＷｉｄｔｈ−１個のピクセルに対する決定を行う。いくつかの例では、ビデオデコーダ３０は、ランモードが検査されるピクセルの数の最大値に関するいくつかの制限を実施するように構成され得る。例えば、ビデオデコーダ３０は、ピクセルが現在ピクセルと同じ行中にある場合、破線２８０内のピクセルのみを検査し得る。ビデオデコーダ３０は、破線２８０内の全ての他のピクセルがエスケープサンプルとしてコーディングされないと推論し得る。図６の例は、ラスタ走査順序を仮定する。但し、本技法は、垂直、水平トラバース、垂直トラバースなどの他の走査順序に適用され得る。
【０１７０】
[0176]  図７は、本開示の技法に従ってビデオデータを符号化するための例示的なプロセスを示すフローチャートである。図７のプロセスは、概して、説明の目的でビデオエンコーダ（例えば、ビデオエンコーダ２０）によって行われるものとして説明されるが、様々な他のプロセッサも、図７に示されるプロセスを行い得る。いくつかの例では、ブロック符号化ユニット１００、パレットベース符号化ユニット１２２、および／またはエントロピー符号化ユニット１１８は、図７に示される１つまたは複数のプロセスを行い得る。
【０１７１】
[0177]  図７の例では、ビデオエンコーダ（例えば、ビデオエンコーダ２０）は、サイズを有するビデオデータのブロックを受信するように構成され得る（７００）。ビデオエンコーダは、ビデオデータのブロックのサイズを決定するように構成され得る（７０２）。ビデオエンコーダは、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのためのパレットモード符号化を無効化するように構成され得る（７０４）。
【０１７２】
[0178]  いくつかの例では、ビデオエンコーダは、パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータのブロックに制限するように構成され得る。いくつかの例では、第１のサイズは３２×３２であり得る。いくつかの例では、第２のサイズは６４×６４であり得る。そのような例では、ビデオエンコーダは、パレットモードを、６４×６４よりも小さい第１のサイズを有するビデオデータのブロックに制限するように構成され得る。いくつかの例では、第１のサイズは３２×３２であり得、第２のサイズは６４×６４であり得る。
【０１７３】
[0179]  いくつかの例では、ビデオエンコーダは、パレットモード符号化を、ビデオデータのために指定された最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータのブロックに制限するように構成され得る。最大変換ユニットのサイズは３２×３２であり得る。そのような例では、ビデオエンコーダは、パレットモードコーディングを、３２×３２よりも小さいかまたはそれに等しい第１のサイズを有するビデオデータのブロックに制限するように構成され得る。
【０１７４】
[0180]  いくつかの例では、ビデオエンコーダは、ビデオデータのブロックを複数の４×４サブブロックに分割するように構成され得る。そのような例では、ビデオエンコーダは、パレットモードを使用して、複数の４×４サブブロックを符号化するように構成され得る。
【０１７５】
[0181]  いくつかの例では、ビデオエンコーダは、パレットモード符号化におけるランレングス値が最大ランレングス値に制限されない場合のみ、パレットモード符号化が、ビデオデータのブロックの決定されたサイズに基づいて、ビデオデータのブロックのために無効化されるように、パレットモード符号化におけるランレングス値を最大ランレングス値に制限するように構成され得る。一例では、最大ランレングス値は３２×３２−１である。別の例では、最大ランレングスは最大変換ユニットのサイズに基づく。この例では、最大変換ユニットのサイズが３２×３２である場合、最大ランレングスは、３２×３２−１など、３２×３２よりも小さくなり得る。別の例では、最大ランレングスは最大変換ユニット中の係数の数に基づく。
【０１７６】
[0182]  本明細書で説明された技法の全てが、個々にまたは組合せで使用され得ることを理解されたい。例えば、ビデオエンコーダ２０および／またはそれの１つまたは複数の構成要素並びにビデオデコーダ３０および／またはそれの１つまたは複数の構成要素は、本開示で説明される技法を任意の組合せで行い得る。
【０１７７】
[0183]  上記例に応じて、本明細書で説明された技法のうちのいずれかのいくつかの行為またはイベントが、異なるシーケンスで行われ得、追加、マージ、または完全に除外され得る（例えば、全ての説明された行為またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に行われ得る。さらに、本開示のいくつかの態様は、明快のために単一のモジュールまたはユニットによって行われるものとして説明されたが、本開示の技法は、ビデオコーダに関連付けられたユニットまたはモジュールの組合せによって行われ得ることを理解されたい。
【０１７８】
[0184]  本開示のいくつかの態様は、説明の目的で、開発中のＨＥＶＣ規格に関して説明された。但し、本開示で説明された技法は、まだ開発されていない他の規格またはプロプライエタリビデオコーディングプロセスを含む、他のビデオコーディングプロセスのために有用であり得る。
【０１７９】
[0185]  上記で説明された技法は、その両方が一般にビデオコーダと呼ばれることがある、ビデオエンコーダ２０（図１および図２）および／またはビデオデコーダ３０（図１および図３）によって行われ得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０１８０】
[0186]  本開示によれば、コンテキストが別段に規定しない場合、「または」という用語は「および／または」として割り込まれ得る。さらに、「１つまたは複数の」または「少なくとも１つの」などの句が、本明細書で開示されるいくつかの特徴のために使用され、他の特徴のために使用されていないことがあるが、そのような言い回しがそれのために使用されなかった特徴は、コンテキストが別段に規定しない場合、そのような暗示される意味を有するものと解釈され得る。
【０１８１】
[0187]  技法の様々な態様の特定の組合せが上記で説明されたが、これらの組合せは、本開示で説明された技法の例を示すために与えられたにすぎない。従って、本開示の技法は、これらの例示的な組合せに限定されるべきでなく、本開示で説明された技法の様々な態様の任意の考えられる組合せを包含し得る。
【０１８２】
[0188]  １つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施され得る。ソフトウェアで実施される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実施のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１８３】
[0189]  限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１８４】
[0190]  命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明された技法の実施に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実施され得る。
【０１８５】
[0191]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、多種多様なデバイスまたは装置で実施され得る。本開示では、開示される技法を行うように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１８６】
[0192]  様々な例が本明細書で説明された。説明されたシステム、動作、機能、または例の任意の組合せが企図される。これらおよび他の例は以下の特許請求の範囲内に入る。
【図１】
2020162144.tif 000003
【図２】
2020162144.tif 000004
【図３】
2020162144.tif 000005
【図４】
2020162144.tif 000006
【図５】
2020162144.tif 000007
【図６】
2020162144.tif 000008
【図７】
2020162144.tif 000009
【手続補正書】
【提出日】令和2年6月19日(2020.6.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、前記方法が、
サイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することと
を備える、方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１８６
【補正方法】変更
【補正の内容】
【０１８６】
[0192]  様々な例が本明細書で説明された。説明されたシステム、動作、機能、または例の任意の組合せが企図される。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]  ビデオデータを符号化する方法であって、前記方法が、
サイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することとを備える、方法。
[Ｃ２]  パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限することをさらに備える、Ｃ１に記載の方法。
[Ｃ３]  前記第２のサイズが６４×６４である、Ｃ２に記載の方法。
[Ｃ４]  前記第１のサイズが３２×３２である、Ｃ２に記載の方法。
[Ｃ５]  前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、Ｃ２に記載の方法。
[Ｃ６]  パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限することをさらに備える、Ｃ１に記載の方法。
[Ｃ７]  前記最大変換ユニットの前記サイズが３２×３２である、Ｃ６に記載の方法。
[Ｃ８]  ビデオデータの前記ブロックを複数の４×４サブブロックに分割することと、
パレットモードを使用して、前記複数の４×４サブブロックを符号化することとをさらに備える、Ｃ１に記載の方法。
[Ｃ９]  パレットモード符号化における任意のランレングス値を最大ランレングス値に制限することをさらに備える、Ｃ１に記載の方法。
[Ｃ１０]  ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することは、パレットモードコーディングにおける前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、パレットモード符号化を無効化することを備える、Ｃ９に記載の方法。
[Ｃ１１]  前記最大ランレングスが最大変換ユニットのサイズに基づく、Ｃ９に記載の方法。
[Ｃ１２]  前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、Ｃ９に記載の方法。
[Ｃ１３]  前記最大ランレングス値が３２×３２−１である、Ｃ１２に記載の方法。
[Ｃ１４]  ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信しているビデオエンコーダとを備え、前記ビデオエンコーダが、
前記メモリからサイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することとを行うように構成された、デバイス。
[Ｃ１５]  前記ビデオエンコーダが、
パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限するように構成された、Ｃ１４に記載のデバイス。
[Ｃ１６]  前記第２のサイズが６４×６４である、Ｃ１５に記載のデバイス。
[Ｃ１７]  前記第１のサイズが３２×３２である、Ｃ１５に記載のデバイス。
[Ｃ１８]  前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、Ｃ１５に記載のデバイス。
[Ｃ１９]  前記ビデオエンコーダが、
パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限するように構成された、Ｃ１４に記載のデバイス。
[Ｃ２０]  前記最大変換ユニットの前記サイズが３２×３２である、Ｃ１９に記載のデバイス。
[Ｃ２１]  前記ビデオエンコーダが、
ビデオデータの前記ブロックを複数の４×４サブブロックに分割することと、
パレットモードを使用して、前記複数の４×４サブブロックを符号化することとを行うように構成された、Ｃ１４に記載のデバイス。
[Ｃ２２]  前記ビデオエンコーダが、
パレットモード符号化における任意のランレングス値を最大ランレングス値に制限するように構成された、Ｃ１４に記載のデバイス。
[Ｃ２３]  前記ビデオエンコーダは、パレットモード符号化における前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するように構成された、Ｃ２２に記載のデバイス。
[Ｃ２４]  前記最大ランレングスが最大変換ユニットのサイズに基づく、Ｃ２２に記載のデバイス。
[Ｃ２５]  前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、Ｃ２２に記載のデバイス。
[Ｃ２６]  前記最大ランレングス値が３２×３２−１である、Ｃ２５に記載のデバイス。
[Ｃ２７]  ビデオデータを符号化するための装置であって、前記装置が、
サイズを有するビデオデータのブロックを受信するための手段と、
ビデオデータの前記ブロックの前記サイズを決定するための手段と、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するための手段とを備える、装置。
[Ｃ２８]  パレットモード符号化を、第２のサイズよりも小さい第１のサイズを有するビデオデータの任意のブロックに制限するための手段をさらに備える、Ｃ２７に記載の装置。
[Ｃ２９]  前記第２のサイズが６４×６４である、Ｃ２８に記載の装置。
[Ｃ３０]  前記第１のサイズが３２×３２である、Ｃ２８に記載の装置。
[Ｃ３１]  前記第１のサイズが３２×３２であり、前記第２のサイズが６４×６４である、Ｃ２８に記載の装置。
[Ｃ３２]  パレットモード符号化を、最大変換ユニットのサイズよりも小さいかまたはそれに等しい第１のサイズを有するビデオデータの任意のブロックに制限するための手段をさらに備える、Ｃ２７に記載の装置。
[Ｃ３３]  前記最大変換ユニットの前記サイズが３２×３２である、Ｃ３２に記載の装置。
[Ｃ３４]  ビデオデータの前記ブロックを複数の４×４サブブロックに分割するための手段と、
パレットモードを使用して、前記複数の４×４サブブロックを符号化するための手段とをさらに備える、Ｃ２７に記載の装置。
[Ｃ３５]  パレットモード符号化における任意のランレングス値を最大ランレングス値に制限するための手段をさらに備える、Ｃ２７に記載の装置。
[Ｃ３６]  ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化するための手段は、パレットモードコーディングにおける前記ランレングス値が前記最大ランレングス値に制限されない場合のみ、パレットモード符号化を無効化するための手段を備える、Ｃ３５に記載の装置。
[Ｃ３７]  前記最大ランレングスが最大変換ユニットのサイズに基づく、Ｃ３５に記載の装置。
[Ｃ３８]  前記最大ランレングス値が前記最大変換ユニットの前記サイズよりも小さい、Ｃ３５に記載の装置。
[Ｃ３９]  前記最大ランレングス値が３２×３２−１である、Ｃ３８に記載の装置。
[Ｃ４０]  実行されたとき、１つまたは複数のプロセッサに、
サイズを有するビデオデータのブロックを受信することと、
ビデオデータの前記ブロックの前記サイズを決定することと、
ビデオデータの前記ブロックの前記決定されたサイズに基づいて、ビデオデータの前記ブロックのためのパレットモード符号化を無効化することとを行わせる命令を記憶した非一時的コンピュータ可読記憶媒体。
【外国語明細書】
2020162144000001.pdf