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