(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとして復号されるべきかどうかを示す第１のシンタックス要素を受信されたビットストリームから復号することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されるべきであることを示す前記第１のシンタックス要素に基づいて、
前記パレットコード化ブロックのパレットデルタ量子化パラメータ（ＱＰ）値を示す第２のシンタックス要素を前記受信されたビットストリームから復号することと、
前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて予測されたＱＰ値を調整することと、
エスケープピクセルの量子化された色値を前記受信されたビットストリームから復号することと、
前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を逆量子化することと、
を備える、方法。
【請求項２】
ビデオデータを符号化する方法であって、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとして符号化されるべきかどうかを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されるべきであるかどうかを示す第１のシンタックス要素をビットストリーム中で符号化することと、
エスケープピクセルとして符号化されるべき少なくとも１つのピクセルを含む前記コード化パレットブロックに基づいて、
前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、
前記パレットＱＰ値と予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定することと、
前記パレットコード化ブロックの前記パレットデルタＱＰ値を示す第２のシンタックス要素を前記ビットストリーム中で符号化することと、
前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化することと、
前記エスケープピクセルの前記量子化された色値を前記ビットストリーム中で符号化することと、
を備える、方法。
【請求項３】
前記パレットＱＰ値が、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを備える、請求項１または請求項２に記載の方法。
【請求項４】
前記予測されたＱＰ値が、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連するＱＰ値のうちの１つを備える、請求項１または請求項２に記載の方法。
【請求項５】
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記方法が、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定することと、
前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記クロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
をさらに備える、請求項１または請求項２に記載の方法。
【請求項６】
ビデオ復号デバイスであって、
ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信し、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとして復号されるべきかどうかを示す第１のシンタックス要素を受信されたビットストリームから復号することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されるべきことを示す前記第１のシンタックス要素に応じて、
前記パレットコード化ブロックのパレットデルタ量子化パラメータ（ＱＰ）値を示す第２のシンタックス要素を前記受信されたビットストリームから復号することと、
前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて予測されたＱＰ値を調整することと、
エスケープピクセルの量子化された色値を前記受信されたビットストリームから復号することと、
前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を逆量子化することと、
を行うように構成された、１つまたは複数のプロセッサと、
を備える、ビデオ復号デバイス。
【請求項７】
ビデオ符号化デバイスであって、
ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信し、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとして符号化されるべきかどうかを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されるべきであるかどうかを示す第１のシンタックス要素をビットストリーム中で符号化することと、
エスケープピクセルとして符号化されるべき少なくとも１つのピクセルを含む前記コード化パレットブロックに応じて、
前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、
前記パレットＱＰ値と予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定することと、
前記パレットコード化ブロックの前記パレットデルタＱＰ値を示す第２のシンタックス要素を前記ビットストリーム中で符号化することと、
前記パレットＱＰ値に従ってエスケープピクセルの前記色値を量子化することと、
前記エスケープピクセルの前記量子化された色値を前記ビットストリーム中で符号化することと、
を行うように構成された、１つまたは複数のプロセッサと、
を備える、ビデオ符号化デバイス。
【請求項８】
前記パレットＱＰ値が、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを備える、請求項６または請求項７に記載のビデオ処理デバイス。
【請求項９】
前記予測されたＱＰ値が、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連するＱＰ値のうちの１つを備える、請求項６または請求項７に記載のビデオ処理デバイス。
【請求項１０】
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定することと、
前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記クロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
を行うように構成される、請求項６または請求項７に記載のビデオ処理デバイス。
【請求項１１】
前記デバイスが、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
のうちの少なくとも１つを備える、請求項６または請求項７に記載のビデオ処理デバイス。
【請求項１２】
実行されたとき、１つまたは複数のプロセッサに、請求項１乃至５のいずれか一項に従った方法を実行することを行わせる、ビデオデータを処理するための命令を記憶した、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１４年６月１１日に出願された米国仮出願第６２／０１０，９７９号、２０１４年１０月２１日に出願された米国仮出願第６２／０６６，７９７号、および２０１４年１０月２１日に出願された米国仮出願第６２／０６６，８５１号の利益を主張する。
【０００２】
[0002]本開示は、ビデオ符号化および復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能（capabilities）は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、およびそのような規格の拡張に記述されているビデオ圧縮技法などのビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスにおいて固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロックにおける参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライスにおけるビデオブロックは、同じピクチャ中の隣接ブロックにおける参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャは、フレームと呼ばれることがあり、参照ピクチャは、参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測により、コーディングされるべきブロックのための予測ブロックが生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。量子化された係数は、最初は２次元アレイで構成され、係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]概して、本開示は、パレットベースのビデオコーディングのための技法を説明する。パレットベースのコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット」を形成し得る。パレットベースのコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。所与のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、ピクセルのうちの１つまたは複数のピクセルのインデックス値をコーディングし得る。インデックス値は、ピクセルの色を表すパレット中のエントリにピクセルをマッピングする。本開示では、ビデオエンコーダまたはビデオデコーダにおけるパレットコード化ブロックのピクセルのためのデブロッキングフィルタ処理の適用を決定するための技法が説明される。さらに、ビデオエンコーダまたはビデオデコーダにおけるパレットコード化ブロックのエスケープピクセル値を量子化するために使用される量子化パラメータ（ＱＰ）値およびデルタＱＰ値を決定するための技法が説明される。
【０００７】
[0007]一例では、本開示は、ビデオデータを処理する方法であって、ビデオデータの第１のブロックがパレットコード化ブロックであると決定することと、第１のブロックのためのパレットを決定することと、パレットに関して第１のブロック内のピクセルの色値を決定することと、第１のブロックのためのパレットと色値とに基づいてビデオデータの第１のブロックを再構築することと、第１のブロックがパレットコード化ブロックであることに基づいて、ビデオデータの再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第１のブロック内の第１のピクセルのためのデブロッキングフィルタ処理を無効化することと、再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において再構築された第２のブロック内の第２のピクセルのためのデブロッキングフィルタ処理を適用すべきかどうかを決定することと、を備える、方法に向けられる。
【０００８】
[0008]別の例では、本開示は、ビデオデータを記憶するように構成されたメモリと、メモリと通信する、１つまたは複数のプロセッサと、を備える、ビデオ処理デバイスに向けられる。１つまたは複数のプロセッサは、ビデオデータの第１のブロックがパレットコード化ブロックであると決定することと、第１のブロックのためのパレットを決定することと、パレットに関して第１のブロック内のピクセルの色値を決定することと、第１のブロックのためのパレットと色値とに基づいてビデオデータの第１のブロックを再構築することと、第１のブロックがパレットコード化ブロックであることに基づいて、ビデオデータの再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第１のブロック内の第１のピクセルのためのデブロッキングフィルタ処理を無効化することと、再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第２のブロック内の第２のピクセルのためのデブロッキングフィルタ処理を適用すべきかどうかを決定することと、を行うように構成される。
【０００９】
[0009]別の例では、本開示は、ビデオデータの第１のブロックがパレットコード化ブロックであると決定するための手段と、第１のブロックのためのパレットを決定するための手段と、パレットに関して第１のブロック内の１つまたは複数のピクセルの色値を決定するための手段と、第１のブロックのためのパレットと色値とに基づいてビデオデータの第１のブロックを再構築するための手段と、第１のブロックがパレットコード化ブロックであることに基づいて、ビデオデータの再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第１のブロック内の第１のピクセルのためのデブロッキングフィルタ処理を無効化するための手段と、再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第２のブロック内の第２のピクセルのためのデブロッキングフィルタ処理を適用すべきかどうかを決定するための手段と、を備える、ビデオ処理デバイスに向けられる。
【００１０】
[0010]さらなる一例では、本開示は、実行されたとき、１つまたは複数のプロセッサに、ビデオデータの第１のブロックがパレットコード化ブロックであると決定することと、第１のブロックのためのパレットを決定することと、パレットに関して第１のブロック内の１つまたは複数のピクセルの色値を決定することと、第１のブロックのためのパレットと色値とに基づいてビデオデータの第１のブロックを再構築することと、第１のブロックがパレットコード化ブロックであることに基づいて、ビデオデータの再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第１のブロック内の第１のピクセルのためのデブロッキングフィルタ処理を無効化することと、再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、再構築された第２のブロック内の第２のピクセルのためのデブロッキングフィルタ処理を適用すべきかどうかを決定することと、を行わせる、ビデオデータを処理するための命令を記憶した、非一時的コンピュータ可読媒体に向けられる。
【００１１】
[0011]一例では、本開示は、ビデオデータを処理する方法であって、１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがパレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、パレットＱＰ値が、予測されたＱＰ値から調整され、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレット中に含まれないエスケープピクセルの色値を決定することと、パレットＱＰ値に従ってエスケープピクセルの色値を量子化することと、を備える、方法に向けられる。
【００１２】
[0012]別の例では、本開示は、ビデオデータを記憶するように構成されたメモリと、メモリと通信する１つまたは複数のプロセッサと、を備える、ビデオ処理デバイスに向けられる。１つまたは複数のプロセッサは、１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがパレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、パレットＱＰ値が、予測されたＱＰ値から調整され、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレット中に含まれないエスケープピクセルの色値を決定することと、パレットＱＰ値に従ってエスケープピクセルの色値を量子化することと、を行うように構成される。
【００１３】
[0013]別の例では、本開示は、１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定するための手段と、パレットコード化ブロック内の少なくとも１つのピクセルがパレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定するための手段と、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定するための手段と、パレットＱＰ値が、予測されたＱＰ値から調整され、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレット中に含まれないエスケープピクセルの色値を決定することと、パレットＱＰ値に従ってエスケープピクセルの色値を量子化することと、を行うための手段と、を備える、ビデオ処理デバイスに向けられる。
【００１４】
[0014]さらなる一例では、本開示は、実行されたとき、１つまたは複数のプロセッサに、１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがパレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、パレットＱＰ値が、予測されたＱＰ値から調整され、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレット中に含まれないエスケープピクセルの色値を決定することと、パレットＱＰ値に従ってエスケープピクセルの色値を量子化することと、を行わせる、ビデオデータを処理するための命令を記憶した、非一時的コンピュータ可読媒体に向けられる。
【００１５】
[0015]本開示の１つまたは複数の例の詳細が添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１６】
【図１】[0016]図１は、本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】[0017]図２は、本開示で説明される技法を実装し得る例示的なビデオエンコーダを示すブロック図である。
【図３】[0018]図３は、本開示で説明される技法を実装し得る例示的なビデオデコーダを示すブロック図である。
【図４】[0019]図４は、２つの隣接するブロック間に形成される４ピクセル長の垂直ブロック境界（a four-pixel long vertical block boundary）の一例を示す概念図である。
【図５】[0020]図５は、少なくとも１つのパレットコード化ブロックによって形成されるブロック境界に沿ったピクセルにデブロッキングフィルタ処理を適用すべきかどうかを決定するビデオコーダの例示的な動作を示すフローチャートである。
【図６】[0021]図６は、パレットコード化ブロックのエスケープピクセル値を量子化するために使用されるパレット量子化パラメータ（ＱＰ）値を決定するビデオコーダの例示的な動作を示すフローチャートである。
【発明を実施するための形態】
【００１７】
[0022]本開示は、ビデオコーディングおよび圧縮のための技法を説明する。特に、本開示は、ビデオコンテンツ、特にパレットベースのコーディングを用いるスクリーンコンテンツのコーディングをサポートするための技法を説明する。本開示は、パレットベースのコーディングの複数の技術的態様を説明する。いくつかの例では、本開示は、パレットコード化ブロックのピクセルのためのループ内フィルタ処理（たとえば、デブロッキングフィルタ処理および／またはサンプル適応オフセット（ＳＡＯ：sample adaptive offset）フィルタ処理）の設計および適用を決定するための技法を説明する。より詳細には、ビデオエンコーダまたはビデオデコーダにおける少なくとも１つのパレットコード化ブロックによって形成されるブロック境界に沿ったピクセルのためのデブロッキングフィルタ処理の適用を決定するための技法が説明される。他の例では、本開示は、ビデオエンコーダまたはビデオデコーダにおけるパレットコード化ブロックのエスケープピクセル値を量子化するために使用される量子化パラメータ（ＱＰ）値およびデルタＱＰ値を決定するための技法を説明する。
【００１８】
[0023]従来のビデオコーディングでは、画像は、色調が連続的であり（be continuous-tone）空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタ処理などのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。ただし、リモートデスクトップ、協調作業（collaborative work）、およびワイヤレスディスプレイのような用途では、コンピュータにより生成されたスクリーンコンテンツ（たとえば、テキストまたはコンピュータグラフィックスのような）は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【００１９】
[0024]本開示は、スクリーンにより生成されたコンテンツのコーディングに特に好適であり得る、パレットベースのコーディングを説明する。たとえば、ビデオデータの特定のエリアが比較的少数の色を有すると仮定すると、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）が、特定のエリアのビデオデータを表すためのいわゆる「パレット」を形成し得る。パレットは、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして表され得る。たとえば、パレットは、所与のブロック中の最も支配的な色（たとえば、ピクセル値）を含み得る。いくつかの場合、最も支配的な色は、ブロック内で最も頻繁に現れる１つまたは複数の色を含み得る。さらに、いくつかの場合、ビデオコーダが、ある色がブロック中の最も支配的な色のうちの１つとして含まれるべきかどうかを決定するために、しきい値を適用し得る。パレットは、明示的に符号化されてビデオデコーダに送られるか、前のパレットエントリから予測されるか、またはそれらの組合せであり得る。パレットベースのコーディングの様々な態様によれば、ビデオコーダは、現在のブロックについて実際のピクセル値またはそれらの残差をコーディングする代わりに、現在のブロックのピクセルのうちの１つまたは複数を示すインデックス値をコーディングし得る。パレットベースのコーディングのコンテキストにおいて、インデックス値は、現在のブロックの個々のピクセルの色を表すのに使われる、パレット中のそれぞれのエントリを示す。
【００２０】
[0025]たとえば、ビデオエンコーダは、ブロックのためのパレットを決定することと、ブロックのピクセルのうちの１つまたは複数のピクセルの色を表すためにパレット中のエントリの位置を特定すること（locating）と、パレット中のエントリを示すインデックス値をもつブロックを符号化することと、によってビデオデータのブロックを符号化し得る。パレット中のエントリに対してマッピングする色値をもつブロックのそれらのピクセルに対して、ビデオエンコーダは、それぞれのピクセルに対するエントリのインデックス値を符号化し得る。パレット中のエントリに対してマッピングしない色値をもつブロックのそれらのピクセルに対して、ビデオエンコーダは、ピクセルに対する特別なインデックスを符号化し得、実際のピクセル値またはその残差値（またはそれらの量子化されたバージョン）を符号化し得る。これらのピクセルは、「エスケープピクセル」と呼ばれる。いくつかの例では、パレットは、色値がないことを表すゼロエントリを含み得る。この例では、ブロックのすべてのピクセルは、パレット中のエントリにマッピングしない色値を有し、したがって、エスケープピクセルとして符号化される。
【００２１】
[0026]いくつかの例では、ビデオエンコーダは、符号化ビットストリーム中でパレットと、インデックス値と、任意のエスケープピクセルと、をシグナリングし得る。次に、ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルの任意のインデックス値とブロックの任意のエスケープピクセルのピクセル値とを取得し得る。ビデオデコーダは、ブロックのピクセル値を再構築するために、インデックス値をパレットのエントリにマッピングして、エスケープピクセルを復号し得る。上の例は、パレットベースのコーディングの全般的な説明を与えることが意図されている。
【００２２】
[0027]ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、ビデオエンコーダもしくはビデオデコーダ、または複合エンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
【００２３】
[0028]いくつかの例では、パレットベースのコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、高効率ビデオコーディング（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発されたビデオコーディング規格である。以下「ＨＥＶＣバージョン１」と呼ぶ確定されたＨＥＶＣ規格は、「ＩＴＵ−Ｔ  Ｈ．２６５、ＳＥＲＩＥＳ  Ｈ：ＡＵＤＩＯＶＩＳＵＡＬ  ＡＮＤ  ＭＵＬＴＩＭＥＤＩＡ  ＳＹＳＴＥＭＳ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ｏｆ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ−Ｃｏｄｉｎｇ  ｏｆ  ｍｏｖｉｎｇ  ｖｉｄｅｏ−Ｈｉｇｈ  ｅｆｆｉｃｉｅｎｃｙ  ｖｉｄｅｏ  ｃｏｄｉｎｇ」、国際電気通信連合（ＩＴＵ）の電気通信標準化部門、２０１３年４月として公開されており、ｈｔｔｐ：／／ｗｗｗ．ｉｔｕ．ｉｎｔ／ｒｅｃ／Ｔ−ＲＥＣ−Ｈ．２６５−２０１３０４−Ｉから入手可能である。
【００２４】
[0029]ＨＥＶＣに対する機能拡張（Range Extensions）、すなわち、ＨＥＶＣ−Ｒｅｘｔが、ＪＣＴ−ＶＣによって開発されている。以下「ＲＥｘｔ  ＷＤ７」と呼ぶ、機能拡張の最近のワーキングドラフト（ＷＤ）が、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１７＿Ｖａｌｅｎｃｉａ／ｗｇ１１／ＪＣＴＶＣ−Ｑ１００５−ｖ４．ｚｉｐから入手可能である。ＪＣＴ−ＶＣはまた、ＨＥＶＣ−Ｒｅｘｔに基づく、ＨＥＶＣスクリーンコンテンツコーディング（ＳＣＣ：Screen Content Coding）を開発している。以下、ＳＣＣ  ＷＤ１．０と呼ぶ、ＨＥＶＣ  ＳＣＣ拡張の最近のＷＤが、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１８＿Ｓａｐｐｏｒｏ／ｗｇ１１／ＪＣＴＶＣ−Ｒ１００５−ｖ３．ｚｉｐから入手可能である。以下、ＳＣＣ  ＷＤ２．０と呼ぶ、ＨＥＶＣ  ＳＣＣ拡張のより最近のＷＤが、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１９＿Ｓｔｒａｓｂｏｕｒｇ／ｗｇ１１／ＪＣＴＶＣ−Ｓ１００５−ｖ１．ｚｉｐから入手可能である。
【００２５】
[0030]ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードのコンテキストにおいて説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００２６】
[0031]パレットベースのコーディングの基本的な考えは、ＣＵごとに、現在のＣＵ中の最も支配的な色（すなわち、ピクセル値）を含む、または場合によっては色を含まないパレットが導出されるというものである。パレットのパレットサイズおよびパレットエントリは、ビデオエンコーダからビデオデコーダに送信され得る。パレットのパレットサイズおよびパレットエントリは、１つまたは複数の隣接ＣＵ（たとえば、上および／または左のコード化ＣＵ）のためのパレットのサイズおよびエントリをそれぞれ使用して直接コーディングされるか、または予測コーディングされ得る。次いで、ＣＵのピクセルは、一定の走査順序に従ってパレットに基づいて符号化され得る。
【００２７】
[0032]ＣＵ中のピクセルロケーションごとに、ピクセルの色がパレット中に含まれるかどうかを示すためにフラグが送信され得る。パレット中のエントリにマッピングするピクセルについて、そのエントリに関連するパレットインデックスが、ＣＵ中の所与のピクセルロケーションのためにシグナリングされ得る。場合によっては、ランモードコーディング（run mode coding）は、ＣＵ中のピクセルロケーションに関連するパレットインデックスがシグナリングされ、その後にピクセル値の「ラン（run）」が続くように使用され得る。この場合、フラグもパレットインデックスも、「ラン」によって包含される後続のピクセルロケーションについて送信される必要はなく、というのは、それらがすべて同じピクセル値を有するからである。パレット中のエントリにマッピングしない色値をもつそれらのピクセル（すなわち、エスケープピクセル）について、特別なインデックスがピクセルに割り当てられ得、実際のピクセル値またはそれの残差値（またはそれらの量子化されたバージョン）が、ＣＵ中の所与のピクセルロケーションのために送信され得る。エスケープピクセル値は、スライスレベルの量子化パラメータ（ＱＰ）値または係数ＱＰ値に従って量子化され得る。エスケープピクセルは、固定長コーディング、単項コーディング（unary coding）など、任意の既存のエントロピーコーディング法を使ってコーディングされ得る。
【００２８】
[0033]パレットベースのコーディングの複数の異なる技術的態様が、パレットベースのコーディングモードを示すことと、所与のブロックのためのパレットを決定することと、所与のブロックのピクセル値を示すために使用されるパレットインデックス値を送信することと、パレットおよびパレットインデックス値のロッシーなコーディング（lossy coding）とを含め、以下でより詳細に説明される。
【００２９】
[0034]たとえば、現在のＣＵ（または、他の例では、ＰＵ）のためにパレットベースのコーディングモードが使用されるべきであるかどうかを示すためにフラグ「ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇ」または「ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇ」などのシンタックス要素が送信され得る。一例では、シンタックス要素ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇの値は、現在のＣＵがパレットベースのコーディングモードを使用して符号化されること、または現在のＣＵがパレットベースのコーディングモード以外のモードを使用して符号化されることを指定し得る。たとえば、現在のＣＵを復号するために、様々なインター予測コーディングモード、イントラ予測コーディングモード、または他のコーディングモードのいずれかが使用され得る。例として、ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇの使用が説明される。他の例では、ＣＵ（または、他の例では、ＰＵ）のためにパレットベースのコーディングモード、インター予測のコーディングモード、イントラ予測子のコーディングモード、または別のコーディングモードが使用されるべきであるのかを示すために、マルチビットコードなどの他のシンタックス要素が使用され得る。
【００３０】
[0035]いくつかの例では、パレットベースのコーディングモードを示すシンタックス要素が、符号化ビットストリームにおいてＣＵレベルでシグナリングされ、次いで、符号化されたビットストリームを復号するときにビデオデコーダによって受信され得る。他の例では、シンタックス要素は、ＣＵレベルよりも高いレベルで送信され得る。たとえば、スライス中のＣＵのすべてがパレットベースのコーディングモードを使用して符号化されるべきであるかどうかを示すために、パレットベースのコーディングモードを示すフラグがスライスレベルで送信され得る。他の例では、パレットベースのコーディングモードを示すフラグが、ピクチャパラメータセット（ＰＰＳ）レベル、シーケンスパラメータセット（ＳＰＳ）レベルまたはビデオパラメータセット（ＶＰＳ）レベルでシグナリングされ得る。
【００３１】
[0036]追加の例では、パレットベースのコーディングモードが特定のビデオシーケンス、ピクチャまたはスライスのために有効化されるかどうかを指定するシンタックス要素が、より高いレベルのうちの１つ、たとえば、ＳＰＳレベル、ＶＰＳレベル、ＰＰＳレベルまたはスライスレベルで送信され得、一方、ｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇが、パレットベースのコーディングモードが各ＣＵのために使用されるかどうかを示す。一例では、ＳＰＳレベル、ＶＰＳレベル、ＰＰＳレベル、またはスライスレベルで送られるフラグまたは他のシンタックス要素が、パレットベースのコーディングモードが無効化されることを示す場合、ＣＵごとにｐａｌｅｔｔｅ＿ｍｏｄｅ＿ｆｌａｇを付加的にシグナリングする必要がなくなり得る。やはり、上述のように、現在のＣＵのためのパレットベースのコーディングモードを示すためのこれらの技法の適用は、追加または代替として、ＰＵのためのパレットベースのコーディングモードを示すために使用され得る。
【００３２】
[0037]パレットベースのコーディングモードを示すシンタックス要素またはフラグは、同じくまたは代替的に、サイド情報に基づいて条件付きで送信または推論され得る。シンタックス要素を送信または推論するための条件として使用されるサイド情報は、たとえば、現在のＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤＩＤまたはマルチビューコーディングにおけるビューＩＤのうちの１つまたは複数であり得る。
【００３３】
[0038]パレットベースの符号化のためにビデオエンコーダによって使用されるパレットは、パレットベースの復号のためにビデオデコーダが使用するために符号化されたビットストリーム中でビデオエンコーダによって送信され得る。パレットは、ＣＵごとに送信されるか、または、場合によっては、異なるＣＵの間で共有され得る。一例では、パレットは、現在のＣＵの色成分ごとに別個に送信され得る。たとえば、現在のＣＵのルーマ（Ｙ）成分のためのパレットと、現在のＣＵの第１のクロマ（Ｕ）成分のための別のパレットと、現在のＣＵの第２のクロマ（Ｖ）成分のためのまた別のパレットとがあり得る。Ｙ成分のためのパレットでは、パレット中の各エントリは、現在のＣＵ中の代表的なルーマ値であり得る。Ｕ成分およびＶ成分のためのそれぞれのパレットの各々では、パレット中の各エントリは、現在のＣＵ中の代表的なクロマ値であり得る。別の例では、現在のＣＵの色成分のすべてのために単一のパレットが送信され得る。この例では、パレット中のｉ番目のエントリが、色成分の各々の値を示す三つ組（a triple）（Ｙｉ，Ｕｉ，Ｖｉ）として表され得る。また別の例では、現在のＣＵのＹ成分のためにルーマパレットが送信され得、一方、現在のＣＵのＵ成分およびＶ成分のためにクロマパレットが送信され得る。
【００３４】
[0039]パレットのサイズは、たとえば、含まれる色値の数の単位として、固定値であり得るか、または符号化されたビットストリーム中でエンコーダによってシグナリングされ得る。現在のＣＵの異なる色成分ごとに別個のパレットが定義される場合、パレットのサイズは、異なる色成分の各々のために別個にシグナリングされ得るか、または色成分のすべてのために単一のサイズがシグナリングされ得る。パレットのサイズを示すように定義されたシンタックス要素は、単項コード、（たとえば、パレットサイズの最大限度で切り捨てられる）切捨て単項コード、指数ゴロム、またはライス−ゴロムコード（Rice-Golomb codes）を使用してコーディングされ得る。いくつかの例では、パレットのサイズは、パレットのエントリをシグナリングした後に「停止」フラグをシグナリングすることによって示され得る。パレットのサイズは、サイド情報に基づいて条件付きで送信または推論され得る。
【００３５】
[0040]いくつかの例では、ＣＵごとに、現在のＣＵのためのパレットが予測されるか、または明示的に送信されるかを示すためにフラグが送信され得る。フラグは、異なる色成分の各々のために別個に送信され得る（たとえば、３つのフラグが、ＹＵＶ色成分の各々のために送信され得る）か、または色成分のすべてのために単一のフラグが送信され得る。いくつかの例では、現在のＣＵのパレットは、１つまたは複数の前にコーディングされた隣接ＣＵの予測子パレットからエントリの一部または全部をコピーすることによって予測され得る。たとえば、予測子パレットは、左側の隣接ＣＵまたは上側の隣接ＣＵのパレットであり得る。予測子パレットはまた、２つ以上の隣接ＣＵのパレットの組合せであり得る。たとえば、複数の隣接ＣＵのうちの２つ以上のパレットに基づいて予測子パレットを生成するために、１つまたは複数の公式、関数、ルールなどが適用され得る。候補リストが構築され得ること、および現在のＣＵのパレットが少なくとも部分的にコピーされるべきである１つまたは複数の候補ＣＵを示すために１つまたは複数のインデックスが送信され得ることも可能である。
【００３６】
[0041]いくつかの例では、現在のＣＵのパレットは、エントリごとに（on an entry-wise basis）予測され得る。一例では、現在のＣＵのパレット中のエントリごとに、それぞれのエントリが、たとえば、選択された隣接ＣＵあるいは１つまたは複数の隣接ＣＵの組合せの予測子パレット中の対応するエントリからコピーされるべきであるのか、あるいはビデオエンコーダからビデオデコーダに明示的に送信されるべきであるのかを示すためにフラグが送信される。別の例では、選択された隣接ＣＵあるいは１つまたは複数の隣接ＣＵの組合せの予測子パレット中のエントリごとに、それぞれのエントリが現在のＣＵのパレットにコピーされるべきであるかどうかを示すためにフラグが送信される。予測子パレットとしてパレットが使用される隣接ＣＵまたは２つ以上の隣接ＣＵの組合せから予測子パレットを構築するためのルールが、サイド情報に基づいて条件付きで送信または推論され得る。
【００３７】
[0042]パレットを明示的に送信または予測するその手法の代替は、パレットをオンザフライで（on-the-fly）構築することである。この場合、ＣＵの始めに、パレット中にエントリがなく、エンコーダが、ＣＵ中の位置についてピクセルの新しい値をシグナリングするので、これらの値がパレット中に含まれる。すなわち、色値がＣＵ中の位置について生成され、送信されるので、エンコーダはパレットに色値を追加する。次いで、同じ値を有するＣＵ中の後の位置は、エンコーダに色値を明示的に送信させる代わりに、たとえば、インデックス値を用いてパレット中の色値を参照し得る。同様に、デコーダは、ＣＵ中の位置について（たとえば、エンコーダによってシグナリングされた）新しい色値を受信するとき、それは、デコーダによって構築されたパレット中に色値を含める。ＣＵ中の後の位置が、パレットに追加されている色値を有するとき、デコーダは、ＣＵ中のピクセルの再構築のためにパレット中の対応する色値を識別するたとえば、インデックス値などの情報を受信し得る。
【００３８】
[0043]現在のＣＵのためのパレットが決定されると、ＣＵ内の１つまたは複数のピクセルのためのパレット中の色値にマッピングするインデックス値を選択および送信することによって、ＣＵがコーディング（すなわち、符号化または復号）され得る。たとえば、インデックス値マップ中のｉ番目のエントリは、ＣＵ中のｉ番目の位置に対応し得る。１に等しいインデックス値マップ中のｉ番目のエントリの値は、ＣＵ中のこのｉ番目のロケーションにおけるピクセルの色値がパレット中の色値のうちの１つであることを指定し得、ビデオデコーダがＣＵを再構築することができるように、パレット内の色値に対応するパレットインデックスがさらに送信される。パレット中に１つのエントリしかない場合、パレットインデックスの送信はスキップされ得る。０に等しいインデックス値マップ中のｉ番目のエントリの値は、ＣＵ中のｉ番目の位置におけるピクセルの色値がパレット中に含まれない（すなわち、ピクセルがエスケープピクセルである）ことを指定し得、エスケープピクセルの色値は、ビデオデコーダに明示的に送信される。
【００３９】
[0044]ＣＵ中の１つの位置における色値がパレット内の色値である場合、ＣＵ中の隣接位置が同じ色値を有する確率が高いことがわかる。この確率を利用するために、ＣＵ中の位置のためのパレットインデックス（たとえば、色値ｓに対応するインデックスｊ）を符号化した後に、走査が異なる色値に達する前にＣＵ中に含まれる同じ色値ｓを有する連続するピクセルの数を示すために、「ｒｕｎ」シンタックス要素が送信され得る。たとえば、ＣＵ中のすぐ次の位置がｓとは異なる値を有する場合、ｒｕｎ＝０が送信される。ＣＵ中の次の位置が値ｓを有するが、その次の位置が値ｓを有しない場合、ｒｕｎ＝１が送信される。
【００４０】
[0045]場合によっては、ｒｕｎが明示的に送信されない場合、ｒｕｎの値が位置の定数、たとえば、４、８、１６などになることが暗示され得るか、または、ｒｕｎの暗黙値もサイド情報に依存し得る。インデックス値マップが明示的に送信されないいくつかの追加の場合には、ｒｕｎのための開始位置が暗黙的に導出され得る。たとえば、ｒｕｎは、いくつかのロケーション、たとえば、各行の始端（beginning）、Ｎ行ごとの始端、走査方向に応じて、またはサイド情報に応じてのみ開始し得る。暗黙的開始位置導出と暗黙的ラン導出とが組み合わされる可能性もある。たとえば、ｒｕｎの値が２つの隣接する開始位置との間の距離に等しくなることが暗示され得る。
【００４１】
[0046]いくつかの例では、インデックス値マップは、線コピーをシグナリングすることによって送信され得る。ＣＵ中のピクセルの現在の線がＣＵ内の上または左側のピクセルの前の線と同じ色値を有する場合、ビデオエンコーダは、ピクセルの現在の線のインデックス値が、インデックス値マップ内の上または左側のピクセルの前の線のインデックス値からコピーされるべきであることを示し得る。一例として、インデックス値マップ内の前の４つの線が記憶され得、次いで、現在の線にどの前の線がコピーされるべきかと、その前の線の何個のエントリがコピーされるべきかとがシグナリングされ得る。
【００４２】
[0047]ビデオエンコーダは、パレット中のエントリとＣＵ中のピクセルの実際の色値との間の一致が厳密でないとき、ロスレスにあるいは若干のロスでパレットベースのコーディングを実行し得る。ビデオデコーダは、概して、ビデオエンコーダがロスレスなまたはロッシーなパレットベースのコーディングを実行するのにかかわらず、同じプロセスを適用し得る。ロッシーなパレットベースのコーディングの場合、近い色値をもつ２つ以上のエントリがパレット中で単一の値にマージ（すなわち量子化）され得るように、量子化されたパレットが使用され得る。一例では、新しい色値は、新しい色値とパレット中にすでに含まれている既存の色値の各々との間の絶対差がしきい値よりも大きいかどうかに基づいてパレットに追加され得る。絶対差がしきい値以下である場合、新しい色値は、パレットに追加されないことがあり、代わりに、ドロップされるか、あるいはパレット中に含まれている既存の色値とマージされる。
【００４３】
[0048]同様に、別の例では、符号化されるべき現在のＣＵ内のピクセルの色値が、パレット中のエントリの各々の色値と比較され得る。ピクセルの色値とパレット中のエントリのうちの１つとの間の絶対差がしきい値以下である場合、ピクセル値が、パレット中のエントリのうちの１つに対応するインデックス値として符号化され得る。いくつかの例では、ピクセルを符号化するために、ピクセルの色値との最小絶対差をもたらすパレットエントリが選択され得る。ピクセルの色値とパレット中のエントリのすべてとの間の絶対差がしきい値よりも大きい場合、ピクセルは、パレット中に含まれず、代わりに、明示的に送信される色値を有するエスケープピクセルとして符号化され得る。
【００４４】
[0049]ＨＥＶＣバージョン１では、ピクチャ再構築の後に、ビデオエンコーダまたはビデオデコーダにおけるデブロッキングフィルタプロセスは、コード化ブロック間に形成される境界におけるアーティファクトを検出し、境界に沿ったピクセルに選択されたデブロッキングフィルタを適用することによってアーティファクトを減衰させるように試みる。ビデオエンコーダまたはビデオデコーダは、ピクチャを８×８ピクセルまたはサンプルのブロックに分割するグリッド上にある４ピクセル長を有するブロック境界ごとに別個にデブロッキングフィルタ処理決定を行い得る。
【００４５】
[0050]図４は、２つの隣接するブロック１７０、１７２間に形成される４ピクセル長の垂直ブロック境界１７４の一例を示す概念図である。説明のために、第１のブロック１７０は、ブロックＰと呼ばれることがあり、第２のブロック１７２は、ブロックＱと呼ばれることがある。図４に示すように、第１のブロック１７０（Ｐ）は、４×４ピクセルを含み、各々がｐj,iと標示され、ｊは、ブロック境界１７４から順に列（column）番号０、３を示し、ｉは、第１のブロック１７０の上から順に行（row）番号０、３を示す。図４にさらに示すように、第２のブロック１７２（Ｑ）は、４×４ピクセルを含み、各々がｑj,iと標示され、ｊは、ブロック境界１７４から順に列番号０−３を示し、ｉは、第２のブロック１７２の上から順に行番号０−３を示す。
【００４６】
[0051]一例として、第１のブロック１７０と第２のブロック１７２とがルーマブロックである場合、ビデオエンコーダまたはビデオデコーダは、（１）ブロック境界１７４が予測ユニット（ＰＵ）境界または変換ユニット（ＴＵ）境界である、（２）ブロック境界１７４の境界強度値が０よりも大きい、および（３）ブロック境界１７４の両側のピクセルまたはサンプルの変動が指定されたしきい値を下回るという３つの基準が真であることに基づいて、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との各々中のルーマピクセルにデブロッキングフィルタ処理を適用し得る。以下で説明するいくつかの追加の条件も真である場合、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との各々中のピクセルに、通常のまたは弱いデブロッキングフィルタの代わりに、強いフィルタが適用され得る。
【００４７】
[0052]ブロック境界１７４の境界強度値Ｂｓは、以下の表１中に含まれる条件に従って決定され得る。
【表１】
0006542268.tif 000002
【００４８】
[0053]ブロック境界１７４がＰＵ境界またはＴＵ境界であり、境界強度値Ｂｓが正（すなわち、０よりも大きい）場合、デブロッキングフィルタ処理がブロック境界１７４のために有効化されるかどうかを決定するためにビデオエンコーダまたはビデオデコーダによってさらに使用されるピクセル変動基準は、以下の通りであり、ピクセル値は、図４に示すように示される。
【数１】
0006542268.tif 000003
【００４９】
[0054]デブロッキングフィルタ処理が、ブロック境界１７４のために有効化されることに基づいて、デブロッキングフィルタ処理のタイプ、すなわち、通常のタイプまたは強いタイプを決定するためにビデオエンコーダまたはビデオデコーダによって使用される追加の基準は、以下の通りであり、ピクセル値は、図４に示すように示され、ｉ＝０、３である。
【数２】
0006542268.tif 000004
【数３】
0006542268.tif 000005
【数４】
0006542268.tif 000006
【００５０】
[0055]強いデブロッキングフィルタが選択される場合、デブロッキングフィルタは、ブロック境界１７４の各サイドの３つのルーマピクセル、たとえば、ｐ2,i、ｐ1,i、ｐ0,i、ｑ0,i、ｑ1,i、ｑ2,iに適用され得る。通常のまたは弱いフィルタが選択される場合、デブロッキングフィルタは、ブロック境界１７４の各サイドの１つまたは２つのルーマピクセル、たとえば、ｐ0,iおよびｑ0,i、またはｐ1,i、ｐ0,i、ｑ0,i、ｑ1,iに適用され得る。
【００５１】
[0056]さらに、第１のブロック１７０と第２のブロック１７２とがクロマブロックである場合、ビデオエンコーダまたはビデオデコーダは、ブロック境界１７４の境界強度値が２に等しいことに基づいて、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との各々中のクロマピクセルにデブロッキングフィルタ処理を適用し得る。デブロッキングフィルタ処理が、ブロック境界１７４のために有効化されることに基づいて、デブロッキングフィルタは、ブロック境界１７４の各サイドの１つのクロマピクセル、たとえば、ｐ0,iおよびｑ0,iに適用され得る。
【００５２】
[0057]水平ブロック境界のためのデブロッキングフィルタ決定は、図４に関して上記で説明した垂直ブロック境界と同様に決定され得る。ＨＥＶＣにおけるデブロッキングフィルタ処理が、ＨＥＶＣバージョン１、ならびにＡ．Ｎｏｒｋｉｎ、Ｇ．  Ｂｊｏｎｔｅｇａａｒｄ、Ａ．Ｆｕｌｄｓｅｔｈ、Ｍ．Ｎａｒｒｏｓｃｈｋｅ、Ｍ．Ｉｋｅｄａ、Ｋ．Ａｎｄｅｒｓｓｏｎ、Ｍ．Ｚｈｏｕ、およびＧ．Ｖ．ｄｅｒ  Ａｕｗｅｒａ、「ＨＥＶＣ  ｄｅｂｌｏｃｋｉｎｇ  ｆｉｌｔｅｒ」、ＩＥＥＥ  ｔｒａｎｓ．Ｃｉｒｔ．＆Ｓｙｓ．Ｖｉｄｅｏ  Ｔｅｃｈｎｏｌ．、Ｖｏｌ．２２、ｎｏ．１２、２０１２年１２月により詳細に記載されている。
【００５３】
[0058]ＨＥＶＣバージョン１では、ピクチャ再構築の後に、ビデオエンコーダまたはビデオデコーダは、ＳＡＯフィルタ処理の２つの異なるクラス、すなわち、バンドオフセット（ＢＯ）およびエッジオフセット（ＥＯ）を適用し得る。一例では、システマティック量子化誤差を補償するために、バンドオフセットフィルタ処理が使用され得る。この例では、ビデオエンコーダまたはビデオデコーダは、ピクセル値をそれらの強度によって分類し、開始バンドを含む連続する４つのバンド中のピクセル値を補正するためにビットストリームにおいて１つの開始バンド位置と４つのオフセット値とをシグナリングし得る。
【００５４】
[0059]別の例では、量子化によるリンギングアーティファクト（ringing artifacts）を補償するために、エッジオフセットフィルタ処理が使用され得る。この例では、ビデオエンコーダまたはビデオデコーダは、現在のコーディングツリーユニット（ＣＴＵ）中の主要なリンギングアーティファクト方向に基づいて４つの候補（たとえば、水平、垂直、４５度の対角線（diagonal）、および１３５度の対角線）の中から１つのエッジオフセットクラスを選択し得る。エッジオフセットクラスを決定した後に、ビデオエンコーダまたはビデオデコーダは、選択されたエッジオフセットクラスの方向に沿ったネイバーピクセル（neighbor pixels）間の相対強度に基づいてＣＴＵ中のピクセルを５つのカテゴリーに分類し得る。５つのカテゴリーのうちの４つは、リンギングアーティファクトを低減するためにオフセットを適用することに関連付けられ得、第５のカテゴリーは、オフセットを適用しないこと、またはエッジオフセットフィルタ処理を無効化することに関連付けられ得る。
【００５５】
[0060]ＨＥＶＣバージョン１では、ビデオデータのスライス中のブロックを量子化するために、スライスレベルの量子化パラメータ（ＱＰ）が使用され得る。ビデオエンコーダまたはビデオデコーダは、現在の量子化グループ中に含まれる所与のブロックを少なくとも３つの異なる方法で量子化または逆量子化するために、スライスレベルのＱＰを調整し得る。概して、本開示で説明されるＱＰ値は、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを含み得る。たとえば、ＱＰ値は、ルーマ（Ｙ）成分のＱＰY値と、第１のクロマ（ＣｂまたはＵ）成分のＱＰCb値と、第２のクロマ（ＣｒまたはＶ）成分のＱＰCr値とを含み得る。
【００５６】
[0061]第１の例として、ビデオエンコーダまたはビデオデコーダは、量子化グループごとに多くて１回シグナリングされる（ＣｕＱｐＤｅｌｔａＶａｌと呼ばれることがある）デルタＱＰ値によってスライスレベルのＱＰを調整し得る。各量子化グループは、１つまたは複数のＣＵを含み得る。デルタＱＰ値は、１に等しいコード化ブロックフラグ（ＣＢＦ）をもつ第１のＴＵのためにシグナリングされ得る。ＣＢＦは、ルーマ（Ｙ）ＣＢＦまたはクロマ（ＣｂまたはＣｒ）ＣＢＦのどちらでもあり得る。概して、ＴＵのためのＣＢＦは、量子化され得る少なくとも１つの非ゼロ係数をＴＵが含むことを示すために、１に等しく設定される。したがって、デルタＱＰ値は、それぞれのＴＵがＴＵ中に少なくとも１つの量子化係数を含む場合にのみシグナリングされ得る。
【００５７】
[0062]デルタＱＰ値をシグナリングすることは、ビットストリームにおいてＣＵレベルでデルタＱＰ値の絶対レベルおよび符号をシグナリングすることを含み得る。いくつかの例では、デルタＱＰ値の絶対レベルおよび符号は、デルタＱＰ機構がｃｕ＿ｑｐ＿ｄｅｌｔａ＿ｅｎａｂｌｅｄ＿ｆｌａｇによってＣＵのために有効化される場合にシグナリングされ得る。ｃｕ＿ｑｐ＿ｄｅｌｔａ＿ｅｎａｂｌｅｄ＿ｆｌａｇは、デルタＱＰ値の絶対レベルおよび符号がビットストリームにおいてＴＵレベルでシグナリングされ得るようにデルタＱＰ値がＣＵのために有効化されるかどうかを示すためにビットストリーム中でＳＰＳ、ＶＰＳ、ＰＰＳ、またはスライスヘッダのうちの１つ中でシグナリングされ得る。
【００５８】
[0063]スライスレベルのＱＰ値または前の量子化グループ中のブロックに関連する前のＱＰ値であり得る予測されたＱＰ値は、以下の式に従ってデルタＱＰ値によって調整され得る。
【数５】
0006542268.tif 000007
上式で、ＱｐYは、変数であり、ｑＰY_PREDは、予測されたルーマＱＰ値であり、ＣｕＱｐＤｅｌｔａＶａｌは、デルタＱＰ値であり、ＱｐＢｄＯｆｆｓｅｔYは、ルーマサンプルのための入力ビット深度に基づくルーマ量子化パラメータ範囲オフセット値である。
【００５９】
[0064]第２の例として、ビデオエンコーダまたはビデオデコーダは、入力ビット深度を変化させることによりスライスレベルのＱＰ値をオフセットするためにＱｐＢｄＯｆｆｓｅｔ値によってスライスレベルのＱＰを調整し得る。たとえば、ルーマＱＰ値Ｑｐ’Yは、以下の式に従って決定され得る。
【数６】
0006542268.tif 000008
上式で、ＱｐYは、式（５）で決定される変数であり、ＱｐＢｄＯｆｆｓｅｔYは、ルーマサンプルのための入力ビット深度に基づくルーマ量子化パラメータ範囲オフセット値である。入力ビット深度は、Ｙ成分、Ｃｂ成分またはＣｒ成分の各々によって異なり得る。以下でより詳細に説明されるように、クロマＱＰ値は、クロマサンプルのための入力ビット深度に基づくクロマ量子化パラメータ範囲オフセット値ＱｐＢｄＯｆｆｓｅｔCに少なくとも部分的に基づいてルーマＱＰ値をさらに調整することによって決定され得る。
【００６０】
[0065]第３の例では、ビデオエンコーダまたはビデオデコーダは、クロマオフセット値に基づいてルーマＱＰ値に対するクロマＱＰ値を決定し得る。クロマオフセット値は、ＰＰＳレベルオフセット、たとえば、ｐｐｓ＿ｃｂ＿ｑｐ＿ｏｆｆｓｅｔおよびｐｐｓ＿ｃｒ＿ｑｐ＿ｏｆｆｓｅｔと、スライスレベルオフセット、たとえば、ｓｌｉｃｅ＿ｃｂ＿ｑｐ＿ｏｆｆｓｅｔおよびｓｌｉｃｅ＿ｃｒ＿ｑｐ＿ｏｆｆｓｅｔとを含み得る。クロマオフセット値は、さらに、クロマＱＰオフセット値、たとえば、ＣｕＱｐＯｆｆｓｅｔCbおよびＣｕＱｐＯｆｆｓｅｔCrを含み得る。いくつかの例では、クロマＱＰオフセット値は、クロマＱＰオフセット機構がｃｕ＿ｃｈｒｏｍａ＿ｑｐ＿ｏｆｆｓｅｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇによってＣＵのための有効化される場合にシグナリングされ得る。ｃｕ＿ｃｈｒｏｍａ＿ｑｐ＿ｏｆｆｓｅｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇは、クロマＱＰオフセット値がビットストリームにおいてＴＵレベルでシグナリングされ得るようにクロマＱＰオフセット値がＣＵのために有効化されるかどうかを示すためにビットストリーム中でＳＰＳ、ＶＰＳ、ＰＰＳ、またはスライスヘッダのうちの１つ中でシグナリングされ得る。
【００６１】
[0066]たとえば、クロマＱＰ値Ｑｐ’CbおよびＱｐ’Crは、以下の式に従って決定され得る。
【数７】
0006542268.tif 000009
【数８】
0006542268.tif 000010
【数９】
0006542268.tif 000011
【数１０】
0006542268.tif 000012
上式で、ｑＰｉCbおよびｑＰｉCrは、それぞれの変数ｑＰCbおよびｑＰCrを決定するために使用されるインデックスであり、ＱｐYは、式（５）中で決定される変数であり、ＱｐＢｄＯｆｆｓｅｔCは、クロマサンプルのための入力ビット深度に基づくクロマ量子化パラメータ範囲オフセット値である。
【００６２】
[0067]ビデオエンコーダおよびビデオデコーダは、入力クロマフォーマットに依存する非線形調整に基づいて高いＱＰ値（たとえば、３０より上）のためのルーマＱＰに対するクロマＱＰ値を決定し得る。変数ＱｐCを決定するために使用される非線形調整が以下の表２において指定されている。表２において指定されているように、ＣｈｒｏｍａＡｒｒａｙＴｙｐｅが１に等しくなる場合、変数ｑＰCbおよびｑＰCrは、インデックスｑＰｉが、それぞれ、ｑＰｉCbおよびｑＰｉCrに等しくなることに基づいてＱｐCの値に等しく設定される。色成分（すなわち、Ｙ、Ｃｂ、Ｃｒ）が特定のクロマフォーマット（たとえば、４：２：０）を使用して一緒にコーディングされる場合、変数ＣｈｒｏｍａＡｒｒａｙＴｙｐｅが１に等しく設定される。
【表２】
0006542268.tif 000013
【００６３】
[0068]ルーマ量子化パラメータ値Ｑｐ’Yとクロマ量子化パラメータ値Ｑｐ’CbおよびＱｐ’Crとがどのように導出されるかについての完全なプロセスが、ＨＥＶＣバージョン１により詳細に記載されている。場合によっては、ＱｐY値は、所与のＣＵ中のピクセルへのデブロッキングフィルタ処理の適用を決定するための量子化ステップとして使用され得る。デブロッキングフィルタ処理が、２つの異なるＣＵ中のピクセルに適用される場合、デブロッキングフィルタ処理決定のために、両方のＣＵ中の平均ＱｐYが使用され得る。
【００６４】
[0069]現在のＣＵが、パレットコード化ブロックとしてコーディングされる場合、ＨＥＶＣコーディングモードのために設計されたループ内フィルタ処理（たとえば、デブロッキングフィルタ処理および／またはＳＡＯフィルタ処理）プロセスは、パレットベースのコーディングモードを使用してコーディングされるスクリーンコンテンツに良好な結果をもたらさないことがある。従来、パレットコード化ブロックは、インターコード化ブロックと同様に扱われており、したがって、復号されたピクチャバッファ中に記憶されるより前に、フィルタ処理が、再構築されたブロックに自動的に適用された。パレットベースのコーディングモードに関連する信号特性に従ってループ内フィルタ処理プロセスを変更することが望ましいことがある。いくつかの例では、本開示は、パレットコード化ブロックのピクセルのためのループ内フィルタ処理（たとえば、デブロッキングフィルタ処理および／またはＳＡＯフィルタ処理）の設計および適用を決定するための技法を説明する。より詳細には、ビデオエンコーダまたはビデオデコーダにおける少なくとも１つのパレットコード化ブロックによって形成されるブロック境界に沿ったピクセルのためのデブロッキングフィルタ処理の適用を決定するための技法が説明される。
【００６５】
[0070]パレットコード化ブロックのピクセルのためのデブロッキングフィルタ処理の設計および適用を決定することの様々な例が、以下で説明される。以下の例の各々は、（それらが代替例として具体的に提示されない限り）他の例のいずれかと一緒にまたはそれとは別個に使用され得る。以下の例は、図４からの第１のブロック１７０と、第２のブロック１７２と、ブロック境界１７４とに関して説明される。
【００６６】
[0071]開示される技法の一例では、ブロック境界１７４に隣接する第１のブロック１７０がパレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、第１のブロック１７０がロスレスブロック（すなわち、ブロックに変換も量子化も適用されないようにｃｕ＿ｔｒａｎｓｑｕａｎｔ＿ｂｙｐａｓｓ＝１）としてコーディングされた場合と同様の方法でデブロッキングフィルタ処理を適用し得る。言い換えれば、開示される技法は、第２のブロック１７２とともに形成されるブロック境界１７４においてパレットコードコーディングされた第１のブロック１７０内のピクセルのためのデブロッキングフィルタ処理を無効化することによってパレットコーディングされた第１のブロック１７０をロスレスコーディングされたブロックと同様に扱うことを含む。
【００６７】
[0072]一例として、第１のブロック１７０と第２のブロック１７２とがルーマブロックを備える場合、デブロッキングフィルタ処理は、次のように第１のブロック１７０の再構築されたバージョン内の第１のルーマピクセルのために無効化され得る。ビデオエンコーダまたはビデオデコーダは、最初に、再構築された第１のブロック１７０と第２のブロック１７２の再構築されたバージョンとの間に形成されるブロック境界１７４のためにデブロッキングフィルタ処理が有効化されるかどうかを決定し得る。この決定は、デブロッキングフィルタ処理に関して上記で説明した３つの基準に基づき得る。デブロッキングフィルタ処理がブロック境界１７４のために有効化されることに基づいて、ビデオエンコーダまたはビデオデコーダは、次いで、デブロッキングフィルタ処理されるべき再構築された第１のブロック１７０内の第１のルーマピクセルの数を決定し得る。上記で説明されたように、デブロッキングフィルタ処理されるべき第１のルーマピクセルの数は、適用されるべきデブロッキングフィルタ処理の決定されたタイプ、すなわち、通常のタイプまたは強いタイプ、に依存し得る。
【００６８】
[0073]デブロッキングフィルタ処理されるべき第１のルーマピクセルの数が０よりも大きいことに基づいて、および第１のブロック１７０がパレットコード化ブロックであることに基づいて、ビデオエンコーダまたはビデオデコーダは、再構築された第１のブロック１７０内の第１のルーマピクセルのためのデブロッキングフィルタ処理を無効化するために、デブロッキングフィルタ処理されるべき第１のルーマピクセルの数を０に等しく設定し得る。これは、開示される技法に従って、ルーマパレットコード化ブロックがデブロッキングフィルタ処理のためにロスレスコード化ブロックと同様に扱われるように、ＨＥＶＣバージョン１においてロスレスコード化ブロックのルーマサンプルのためにデブロッキングフィルタ処理が無効化される方法と同様である。
【００６９】
[0074]別の例として、第１のブロック１７０と第２のブロック１７２とがクロマブロックを備える場合、デブロッキングフィルタ処理は、次のように再構築された第１のブロック１７０内の第１のクロマピクセルのために無効化され得る。ビデオエンコーダまたはビデオデコーダは、最初に、デブロッキングフィルタ処理がブロック境界１７４のために有効化されるかどうかを決定し得る。上記で説明されたように、この決定は、ブロック境界１７４の境界強度値が２に等しくなることに基づき得る。デブロッキングフィルタ処理がブロック境界１７４のために有効化されることに基づいて、ビデオエンコーダまたはビデオデコーダは、次いで、再構築された第１のブロック１７０内の第１のクロマピクセルのうちの１つまたは複数のクロマピクセルのデブロッキングフィルタ処理された値を決定し得る。
【００７０】
[0075]第１のブロック１７０がパレットコード化ブロックであることに基づいて、ビデオエンコーダまたはビデオデコーダは、再構築された第１のブロック１７０内の第１のクロマピクセルのためのデブロッキングフィルタ処理を無効化するために、第１のクロマピクセルのうちの１つまたは複数のクロマピクセルのデブロッキングフィルタ処理された値を、第１のクロマピクセルのうちの１つまたは複数のクロマピクセルの元の値に等しくなるように設定し得る。これは、開示される技法に従って、クロマパレットコード化ブロックがデブロッキングフィルタ処理のためにロスレスコード化ブロックと同様に扱われるように、ＨＥＶＣバージョン１においてロスレスコード化ブロックのクロマサンプルのためにデブロッキングフィルタ処理が無効化される方法と同様である。
【００７１】
[0076]開示される技法の別の例では、ブロック境界１７４に隣接する第１のブロック１７０と第２のブロック１７２とがどちらも、パレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との両方中のピクセルのためのデブロッキングフィルタ処理を無効化し得る。いくつかの例では、デブロッキングフィルタ処理は、第１のブロック１７０中のピクセルのためのデブロッキングフィルタ処理を無効化することに関して上記で説明された方法で第１のブロック１７０と第２のブロック１７２との各々のために無効化され得る。他の例では、デブロッキングフィルタ処理は、ブロック境界１７４の境界強度値を０に等しく設定することによって第１のブロック１７０と第２のブロック１７２との各々のために無効化され得る。このようにして、デブロッキングフィルタ処理は、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との中のルーマピクセルとクロマピクセルとの両方ために無効化される。
【００７２】
[0077]開示される技法のさらなる一例では、第１のブロック１７０がパレットコーディングモードを使用してコーディングされ、第２のブロック１７２が、非パレットコーディングモード、たとえば、インターコーディングモードまたはイントラコーディングモードなどを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、ブロック境界１７４に沿った第１のブロック１７０中のピクセルのためにのみデブロッキングフィルタ処理を無効化し得る。この例では、デブロッキングフィルタ処理は、ブロック境界１７４に沿った第２のブロック１７２中のピクセルに適用され得る。一例として、ビデオエンコーダまたはビデオデコーダは、再構築された第１のブロック１７０と再構築された第２のブロック１７２との間に形成されるブロック境界１７４のためにデブロッキングフィルタ処理が有効化されるかどうかを決定し得る。デブロッキングフィルタ処理がブロック境界１７４のために有効化されることに基づいて、ビデオエンコーダまたはビデオデコーダは、再構築された第２のブロック１７２内の第２のピクセルのためのデブロッキングフィルタ処理のタイプを決定し、再構築された第２のブロック１７２内の第２のピクセルのうちの１つまたは複数にデブロッキングフィルタ処理の決定されたタイプを適用し得る。デブロッキングフィルタ処理は、再構築された第１のブロック１７０内の第１のピクセルにデブロッキングフィルタ処理を適用することなしに第２の再構築ブロック１７２内の第２のピクセルに適用され得る。
【００７３】
[0078]開示される技法の別の例では、ブロック境界１７４に隣接する第１のブロック１７０がパレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、第２のブロック１７２をコーディングするために使用されるコーディングモードにかかわらず、ブロック境界１７４に隣接する第１のブロック１７０と第２のブロック１７２との両方内のピクセルのためのデブロッキングフィルタ処理を無効化し得る。たとえば、デブロッキングフィルタ処理は、ブロック境界１７４のための境界強度値を０に等しく設定することによって無効化され得る。このようにして、デブロッキングフィルタ処理は、ブロック境界１７４に沿った第１のブロック１７０と第２のブロック１７２との中のルーマピクセルとクロマピクセルとの両方のために無効化される。
【００７４】
[0079]開示される技法の追加の例では、ブロック境界１７４に隣接する第１のブロック１７０がパレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、パレットコードコーディングされた第１のブロック１７０のＱＰ値が０に等しく設定されることに基づいて、ブロック境界１７４の両サイド上のピクセルにデブロッキングフィルタ処理を適用すべきかどうかを決定し得る。
【００７５】
[0080]開示される技法のさらなる一例では、第１のブロック１７０のみがパレットコーディングモードを使用してコーディングされ、第２のブロック１７２が非パレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダは、ブロック境界１７４のいずれかのサイド上のピクセルのためにデブロッキングフィルタ処理が有効化され得るようにブロック境界１７４の境界強度値を正値に（すなわち、０よりも大きく）設定し得る。
【００７６】
[0081]この例のある場合には、第１のブロック１７０が、パレットコーディングモードを使用してコーディングされ、第２のブロック１７２が、イントラコーディングモードを使用してコーディングされる場合、ブロック境界１７４の境界強度値は、２に等しく設定され得る。したがって、パレットコーディングモードの場合、上記の表１中のルール１が依然として成り立つ（holds）。この例の別の場合には、第１のブロック１７０が、パレットコーディングモードを使用してコーディングされ、第２のブロック１７２が、イントラブロックコピー（ＩｎｔｒａＢＣ）コーディングモードを使用してコーディングされる場合、ブロック境界１７４の境界強度値は、１に等しく設定され得る。代替的に、いくつかの制限が適用され得る。たとえば、ＩｎｔｒａＢＣコーディングされた第２のブロック１７２に関連する動きベクトルが、しきい値よりも大きい絶対値（たとえば、整数ピクセルの単位で１）を有する場合、境界強度値は、１に等しく設定され得る。そうでない場合、境界強度値は０に等しく設定され得る。
【００７７】
[0082]この例のさらなる場合には、第１のブロック１７０が、パレットコーディングモードを使用してコーディングされ、第２のブロック１７２が、インターコーディングモードを使用してコーディングされる場合、ブロック境界１７４の境界強度値は、１に等しく設定され得る。代替的に、いくつかの制限が適用され得る。たとえば、インターコーディングされた第２のブロック１７２に関連する動きベクトルが、しきい値よりも大きい絶対値（たとえば、整数ピクセルの単位で１）を有する場合、境界強度値は、１に等しく設定され得る。そうでない場合、境界強度値は０に設定され得る。
【００７８】
[0083]開示される技法の別の例では、第１のブロック１７０（Ｐ）のみが、パレットコーディングモードを使用してコーディングされ、第２のブロック１７２（Ｑ）が、非パレットコーディングモードを使用してコーディングされる場合、ブロック境界１７４のためにデブロッキングフィルタ処理が有効化されるかどうかを決定するためにビデオエンコーダまたはビデオデコーダによって使用されるピクセル変動基準は、上記の式（１）から以下の式に変更され得る。
【数１１】
0006542268.tif 000014
上式で、ｃは、たとえば、０．５に等しく設定された定数であり、βは、非パレットコーディングされた第２のブロック１７２（Ｑ）のみのＱＰ値に依存するパラメータである。代替的に、パレットコーディングされた第１のブロック１７０（Ｐ）のＱＰ値が、上記の例のうちの１つの場合のように０に等しく設定されるなど明確に定義されている場合、βは、第１のブロック１７０と第２のブロック１７２との両方のＱＰ値に依存し得る。
【００７９】
[0084]同様に、デブロッキングフィルタ処理のタイプ、すなわち、通常のタイプまたは強いタイプを決定するためにビデオエンコーダまたはビデオデコーダによって使用される追加の基準は、上記の式（２）、（３）および（４）からｉ＝０、３をもつ以下の式に変更され得る。
【数１２】
0006542268.tif 000015
【数１３】
0006542268.tif 000016
【数１４】
0006542268.tif 000017
【００８０】
[0085]開示される技法のさらなる一例では、デブロッキングフィルタ処理を設計するために使用されるβおよびｔcパラメータを計算するために使用される、パレットベースのコーディングモードのＱＰ値は、次のように定義される。たとえば、第１のブロック１７０（Ｐ）のみが、パレットコーディングモードを使用してコーディングされ、第２のブロック１７２（Ｑ）が、非パレットコーディングモードを使用してコーディングされる場合、非パレットコーディングされた第２のブロック１７２（Ｑ）のＱＰ値は、ｑｐＱであると仮定され得、パレットコーディングされた第１のブロック１７０（Ｐ）のＱＰ値は、ｑｐＰ＝ｑｐＱ＋ｐｌｔＱＰＯｆｆｓｅｔとして定義され得る。パラメータｐｌｔＱＰＯｆｆｓｅｔは、あらかじめ定義された定数であるか、ＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダ中でシグナリングされる値であるか、あるいは暗黙的に導出され得る。いくつかの例では、パラメータｐｌｔＱＰＯｆｆｓｅｔは、デルタＱＰ値であり得る。代替的に、パレットコーディングされた第１のブロック１７０（Ｐ）のＱＰ値、すなわち、ｑｐＰはまた、１つまたは複数の他のネイバーブロックのＱＰ値から導出され得る。
【００８１】
[0086]開示される技法の別の例では、少なくとも１つのパレットコード化ブロック、たとえば、第１のブロック１７０に隣接するブロック境界１７４においてデブロッキングフィルタ処理が使用されるかどうかを示すために、ＳＰＳ、ＶＰＳ、ＰＰＳ、スライスヘッダ、ＣＴＵ、またはＣＵ中でフラグがシグナリングされ得る。
【００８２】
[0087]パレットコード化ブロックのためのＳＡＯフィルタ処理の設計および適用を決定することの様々な例が、以下で説明される。以下の例の各々は、（それらが代替例として具体的に提示されない限り）他の例のいずれかと一緒にまたはそれとは別個に使用され得る。
【００８３】
[0088]開示される技法の一例では、ＣＴＵ中のＣＵのすべてが、パレットコーディングモードを使用してコーディングされる場合、ビデオエンコーダまたはビデオデコーダ３０は、ＣＴＵ中のＣＵのすべてのためのＳＡＯフィルタ処理を無効化し得る。
【００８４】
[0089]開示される技法の代替例では、パレットコーディングモードを使用してコーディングされるＣＴＵ中のＣＵの割合がしきい値よりも高い場合、ビデオエンコーダまたはビデオデコーダは、ＣＴＵ中のＣＵのすべてのためのＳＡＯフィルタ処理を無効化し得る。ＣＴＵ中のパレットコーディングされたＣＵの割合は、ＣＴＵ中のピクセルの総数に対するパレットコーディングされたピクセルの数（the number of palette coded pixels over the overall number of pixels in the CTU）として、またはＣＴＵ中のＣＵの総数に対するパレットコーディングされたＣＵの数として、または何らかの他の基準に従って計算され得る。この代替例では、ＳＡＯフィルタ処理がＣＴＵ中で有効化される場合、パレットコーディングされたＣＵと非パレットコーディングされたＣＵとが異なるＳＡＯフィルタパラメータを有し得る可能性がある。たとえば、パレットコーディングされたＣＵと非パレットコーディングされたＣＵとが、異なるＳＡＯフィルタタイプ、異なるＳＡＯフィルタクラス、または異なるＳＡＯフィルタオフセットを有し得る。さらに、パレットコーディングされたＣＵの各々は、異なるＳＡＯフィルタパラメータを有し得る。
【００８５】
[0090]開示される技法の別の例では、パレットコード化ブロックのためのＳＡＯフィルタ処理プロセスは、次のように拡張され得る。ある場合には、パレットコード化ブロック中のエスケープピクセルと非エスケープピクセルとが異なるオフセット値を有し得る。たとえば、ＳＡＯフィルタ処理は、エスケープピクセルにのみ適用され得、一方、非エスケープピクセルは、０に等しく設定されたオフセット値を有する。追加の例として、バンドオフセットフィルタ処理のみがエスケープピクセルに適用され得る。いくつかの例では、４つのバンドが、バンドオフセット値によって補正され得る。他の例では、４つより多いかまたは４つより少ないバンドが、バンドオフセット値によって補正され得る。別の場合、スクリーンコンテンツは、一般に、強い水平および垂直パターンを有するので、エッジオフセットフィルタ処理は、水平および垂直方向のみに制限され得る。
【００８６】
[0091]さらなる場合では、色遷移が発生するときにオフセットを決定するために遷移オフセットテーブル、たとえば、｛（ｉｎｄｅｘ，ｏｆｆｓｅｔ＿ｉｎｄｅｘ）｝が使用される場合、トランジションエッジオフセットモードが適用され得る。この場合、パレットコーディングモードでの再構築された色インデックスブロックが、ラスタ走査順序でＩＮＤＥＸ［ｘ］として示されると仮定され得る。ＩＮＤＥＸ［ｘ−１］！＝ＩＮＤＥＸ［ｘ］である場合、遷移が、位置［ｘ］において発生し、（この値が遷移オフセットテーブル中に存在する場合）ｏｆｆｓｅｔ＿ＩＮＤＥＸ［ｘ］に等しいオフセットが位置［ｘ］において再構築されたピクセル値に適用される。オフセットは、ラスタ走査順序で後続のピクセルに伝搬し得る。言い換えれば、ＩＮＤＥＸ［ｘ＋ｋ］！＝ＩＮＤＥＸ［ｘ］となるまで、同じオフセットが、位置［ｘ＋１］，［ｘ＋２］，．．．［ｘ＋ｋ］においてピクセルに適用される。遷移オフセットテーブルは、パレットインデックスごとに、またはパレットインデックスのサブセットのためにのみシグナリングされ得る。たとえば、遷移オフセットは、コーディングされ、最初の４つのパレットインデックスまでのためにのみビットストリーム中でシグナリングされ得る。特定のインデックスのための遷移オフセットがシグナリングされない場合、デフォルト値、たとえば、０が使用され得る。３つの色成分（たとえば、Ｙ、Ｃｂ、Ｃｒ）は、同じオフセット値を共有するか、または個別のオフセット値を有し得る。
【００８７】
[0092]現在のＣＵがパレットコード化ブロックとしてコーディングされる場合、パレットコード化ブロックのエスケープピクセル値を量子化するためにＱＰ値が使用され得る。いくつかの例では、ＱＰ値および量子化も、新しいパレットエントリのコーディングに適用され得る。従来、パレットコーディングモードは、ＣＵごと、あるいは１つまたは複数のＣＵを含み得る量子化グループごとにスライスレベルのＱＰ値を調整するための機構を含まない。したがって、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックのエスケープピクセル値を量子化するために一定のＱＰで動作しなければならない。いくつかの例では、本開示は、パレットコード化ブロックのエスケープピクセル値を量子化するために使用されるＱＰ値およびデルタＱＰ値を決定するための技法を説明する。
【００８８】
[0093]パレットコード化ブロックのパレットＱＰ値を決定または導出することの様々な例が、以下で説明される。以下の例の各々は、（それらが代替例として具体的に提示されない限り）他の例のいずれかと一緒にまたはそれとは別個に使用され得る。
【００８９】
[0094]開示される技法の一例では、ビデオエンコーダまたはビデオデコーダは、予測されたＱＰ値から調整されるパレットコード化ブロックのパレットＱＰ（または対応する量子化ステップサイズ）値を決定し得る。パレットコード化ブロックは、他のパレットコード化ブロックと非パレットコード化ブロックとを含む１つまたは複数の他のブロックを含み得る現在の量子化グループ中に含まれ得る。予測されたＱＰ値は、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連付けられるＱＰ値によってメイする。スライスレベルのＱＰ値は、ＨＥＶＣバージョン１においてスライス内のブロックを量子化するために使用されるＱＰ値である。
【００９０】
[0095]たとえば、パレットコード化ブロックのスライスレベルのＱＰ値を使用する代わりに、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックのパレットＱＰ値をスライスレベルのＱＰ＋ｐｌｔＱＰＯｆｆｅｓｔとして定義し得る。他の例では、パレットＱＰ値は、前の量子化グループ中のブロックに関連するＱＰ値、またはパレットコード化ブロックをも含む現在の量子化グループ中の隣接ブロックに関連するＱＰ値から導出され得る。パラメータｐｌｔＱＰＯｆｆｓｅｔは、あらかじめ定義された定数であるか、ＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダ中でシグナリングされる値であるか、あるいは暗黙的に導出され得る。いくつかの例では、パラメータｐｌｔＱＰＯｆｆｓｅｔは、デルタＱＰ値であり得る。
【００９１】
[0096]開示される技法の別の例では、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックの２つの異なるＱＰ値または対応するオフセットを使用し得る。この例では、第１のｐｌｔＱＰＯｆｆｓｅｔ１は、パレットコード化ブロックのための任意の新しいパレットエントリの少なくとも一部分を量子化するために使用され得、第２のｐｌｔＱＰＯｆｆｓｅｔ２は、パレットコード化ブロック内のエスケープピクセルの少なくとも一部分を量子化するために使用され得る。ｐｌｔＱＰＯｆｆｓｅｔ１とｐｌｔＱＰＯｆｆｓｅｔ２との各々は、あらかじめ定義された定数であるか、ＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダ中でシグナリングされる値であるか、あるいは暗黙的に導出され得る。場合によっては、ｐｌｔＱＰＯｆｆｓｅｔ値のうちの少なくとも１つは、量子化が使用されない（すなわち、パレットコード化ブロックがロスレスにコーディングされる）ことを示し得る。
【００９２】
[0097]開示される技法のさらなる一例では、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックのいくつかの異なるＱＰ値または対応するオフセットを使用し得る。この例では、任意の追加の新しいパレットエントリを量子化するために第２のｐｌｔＱＰＯｆｆｓｅｔ２を使用し始めるスイッチポイントをフラグが示すことなどがあるまで、任意の新しいパレットエントリを量子化するために第１のｐｌｔＱＰＯｆｆｓｅｔ１が使用され得る。
【００９３】
[0098]開示される技法の追加の例では、インデックス値ごとに、またはパレットコード化ブロック内のピクセルのためにコーディングされたインデックス値のサブセットごとに、異なるＱＰ値または対応するオフセット、すなわち、ｐｌｔＱＰＯｆｆｓｅｔｓがシグナリングされるか、またはあらかじめ定義され得る。場合によっては、各異なるパレットランモードでピクセルに異なるｐｌｔＱＰＯｆｆｓｅｔも使用され得る。たとえば、「左側からコピー」ランモードでのピクセルは「上からコピー」ランモードでのピクセルとは異なるＱＰ値を有し得る。他の場合には、ｐｌｔＱＰＯｆｆｓｅｔもランレングスに依存し得る。
【００９４】
[0099]パレットコード化ブロックのパレットＱＰ値を決定または導出するために使用されるデルタＱＰ値を決定することの様々な例が、以下で説明される。以下の例の各々は、（それらが代替例として具体的に提示されない限り）他の例のいずれかと一緒にまたはそれとは別個に使用され得る。従来、パレットコーディングモードは、ＣＵごと、または量子化グループごとにスライスレベルのＱＰ値を調整するための機構を含まない。上記で説明されたように、非パレットコード化ブロックの場合、関連するＣＢＦが１に等しくなることによって示され得る、非パレットコード化ブロックが少なくとも１つの非ゼロ係数を含む場合、スライスレベルのＱＰ値は、ＣＵごとに、または量子化グループごとに１回シグナリングされるデルタＱＰ値に基づいて調整され得る。
【００９５】
[0100]開示される技法の一例では、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックのためのパレット中に含まれない色値を有するエスケープピクセルとしてパレットコード化ブロック内の少なくとも１つのピクセルがコーディングされるかどうかを決定し、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、パレットコード化ブロックを含む現在の量子化グループのデルタＱＰ値を決定し得る。ビデオエンコーダまたはビデオデコーダは、次いで、パレットコード化ブロックのパレットＱＰ値を決定するためにデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。パレットコード化ブロックは、現在の量子化グループ中に含まれ得る。予測されたＱＰ値は、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連付けられるＱＰ値によってメイする。
【００９６】
[0101]たとえば、（ＣｕＱｐＤｅｌｔａＶａｌと呼ばれることがある）デルタＱＰ値は、エスケープピクセル値としてコーディングされる少なくとも１つのピクセルを現在のＣＵが含むかどうかを示すＣＵレベルのエスケープフラグの値に応じてシグナリングされ得る。このＣＵレベルのエスケープフラグ、すなわち、ｐａｌｅｔｔｅ＿ｅｓｃａｐｅ＿ｖａｌ＿ｐｒｅｓｅｎｔ＿ｆｌａｇの一例が、２０１４年５月２２日に出願された米国仮出願第６２／００２，０５４号の利益を主張する、２０１５年５月２１日に出願された米国特許出願第１４／７１９，２１５号に記載されている。現在のＣＵが少なくとも１つのエスケープフラグを含むことをＣＵレベルのエスケープフラグが示す場合、デルタＱＰ値は、ＣＵレベルのエスケープフラグの直後にビットストリームにおいてＣＵレベルでシグナリングされ得る。別の例として、パレットコーディングモードを使用してコーディングされたＣＵ内のピクセルのために少なくとも１つのエスケープフラグが存在する場合、デルタＱＰ値がシグナリングされ得る。デルタＱＰ値は、第１のエスケープフラグがシグナリングされた直後に、またはＣＵの最後にシグナリングされ得る。デルタＱＰ値をシグナリングすることは、デルタＱＰ値の絶対レベルおよび符号をシグナリングすることを含み得る。
【００９７】
[0102]上記の例は、エスケープピクセルとしてコーディングされるルーマピクセルを量子化するために使用されるルーマパレットＱＰ値を決定するために使用され得る。さらに、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、ビデオエンコーダおよびビデオデコーダは、パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定し、パレットコード化ブロックのクロマパレットＱＰ値を決定するためにクロマＱＰオフセット値に基づいてパレットコード化ブロックのために決定されたルーマパレットＱＰ値を調整し得る。
【００９８】
[0103]開示される技法の別の例では、デルタＱＰ値がパレットコード化ブロックのために有効化されるかどうかを示すシンタックス要素の値に応じてパレットコーディングされたＣＵごとにデルタＱＰ値がシグナリングされ得る。この例では、シンタックス要素は、デルタＱＰ値がパレットコード化ブロックのためにＣＵレベルでシグナリングされるかどうかを示すためにＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダのうちの１つ中でシグナリングされ得る。ルーマピクセルの場合、ビットストリーム中でＳＰＳ、ＶＰＳ、ＰＰＳ、またはスライスヘッダのうちの１つ中でシグナリングされるｃｕ＿ｑｐ＿ｄｅｌｔａ＿ｅｎａｂｌｅｄ＿ｆｌａｇによってデルタＱＰ機構がＣＵのために有効化される場合、デルタＱＰ値がシグナリングされ得る。クロマピクセルの場合、ビットストリーム中でＳＰＳ、ＶＰＳ、ＰＰＳ、またはスライスヘッダのうちの１つ中でシグナリングされるｃｕ＿ｃｈｒｏｍａ＿ｑｐ＿ｏｆｆｓｅｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇによってクロマＱＰオフセット機構がＣＵのために有効化される場合、クロマＱＰオフセット値がシグナリングされ得る。
【００９９】
[0104]開示される技法のさらなる一例として、新しいパレットエントリの少なくとも一部分が量子化されるかどうかに応じて、デルタＱＰ値がパレットコーディングされたＣＵのためにシグナリングされ得る。
【０１００】
[0105]予測されたＱＰ値を使用してパレットコーディングブロックのパレットＱＰ値を決定することの様々な例が、以下で説明される。以下の例の各々は、（それらが代替例として具体的に提示されない限り）他の例のいずれかと一緒にまたはそれとは別個に使用され得る。
【０１０１】
[0106]開示される技法の一例では、ビデオエンコーダまたはビデオデコーダは、パレットコード化ブロックが現在の量子化グループ中の第１のブロックであるかどうかを決定すること、または現在の量子化グループ中のいずれかの前の非パレットコード化ブロックが非０係数を含むかどうかを決定することを行い得る。パレットコード化ブロックが、現在の量子化グループ中の第１のブロックであること、または現在の量子化グループ中の前の非パレットコード化ブロックのいずれも非ゼロ係数を含まないことに基づいて、ビデオエンコーダまたはビデオデコーダは、上記の式（５）からの予測されたＱＰ値、たとえば、ｑＰY_PREDから調整されたパレットコード化ブロックのパレットＱＰ値を決定し得る。パレットＱＰ値は、パレットコード化ブロック内のエスケープピクセルを量子化するために使用される、上記の式（６）および（１１）ならびに表２からのルーマＱＰ値およびクロマＱＰ値、すなわち、ＱｐY、Ｑｐ’Y、ＱｐC、Ｑｐ’CbおよびＱｐ’Crを含み得る。
【０１０２】
[0107]この例では、場合によっては、デルタＱＰ値が、パレットコード化ブロックのためにシグナリングされないことがあり、０に等しくなると仮定され得る。他の場合には、デルタＱＰ値は、パレットコード化ブロックのためにシグナリングされ得、パレットＱＰ値は、上記で説明された技法のうちの１つまたは複数に従って決定され得る。前の隣接量子化グループ中のブロックのＱＰ値からパレットコード化ブロックのパレットＱＰ値を導出するために、予測されたＱＰが使用され得る。この点において、パレットコード化ブロックは、非ゼロ係数のない（デルタＱＰ値がシグナリングされない）非パレットコーディングされたＴＵ、または非０係数のある（デルタＱＰ値がシグナリングされる）非パレットコーディングされたＴＵと同様の方法で扱われ得る。
【０１０３】
[0108]代替的に、パレットコード化ブロックが、現在の量子化グループ中の第１のブロックではないことと、現在の量子化グループ中の前の非パレットコード化ブロックのうちの少なくとも１つが非０係数を含むこととに基づいて、ビデオエンコーダまたはビデオデコーダは、現在の量子化グループ中の少なくとも１つの前の非パレットコード化ブロックのために前に決定された、ルーマＱＰ値とクロマＱＰ値とを含む量子化グループＱＰ値にパレットＱＰ値が等しくなると決定し得る。言い換えれば、現在の量子化グループ中の非０係数を有する少なくとも１つのＴＵの後にコーディングされる現在の量子化グループ中のパレットコード化ブロックについて、量子化グループのために決定されたルーマＱＰ値とクロマＱＰ値とがパレットコード化ブロックのために使用される。これらのルーマＱＰ値とクロマＱＰ値とは、量子化グループ中の他の非パレットコーディングされたＴＵのためにも使用されるＱＰ値であり得る。
【０１０４】
[0109]ルーマピクセルの場合、パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのためにデルタＱＰ値が前に決定されていなかった場合のみ、パレットコード化ブロックのためにパレットデルタＱＰ値がシグナリングされ得る。これは、パレットコード化ブロックが現在の量子化グループ中の第１のブロックである場合、または現在の量子化グループ中の前の非パレットコード化ブロックが非０係数を含まない場合に行われ得る。一例では、シンタックス要素、たとえば、ＩｓＣｕＱｐＤｅｌｔａＣｏｄｅｄは、ルーマブロックのデルタＱＰ値が現在の量子化グループのために以前にシグナリングされたかどうかを示し得る。デルタＱＰ値が現在の量子化グループのために前に決定されていなかった場合、ルーマパレットコード化ブロックのパレットデルタＱＰ値がシグナリングされる。ルーマパレットコード化ブロックのパレットデルタＱＰ値がシグナリングされない場合、それは、０に等しくなると明示的に導出され得る。
【０１０５】
[0110]クロマピクセルの場合、パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのためにクロマＱＰオフセット値が前に決定されていなかった場合のみ、パレットコード化ブロックのためにパレットクロマＱＰオフセット値がシグナリングされ得る。これは、パレットコード化ブロックが現在の量子化グループ中の第１のブロックである場合、または現在の量子化グループ中の前の非パレットコード化ブロックが非０係数を含まない場合に行われ得る。一例では、シンタックス要素、たとえば、ＩｓＣｕＣｈｒｏｍａＱＰＯｆｆｓｅｔＣｏｄｅｄは、クロマブロックのクロマＱＰオフセット値が現在の量子化グループのために以前にシグナリングされたかどうかを示し得る。クロマＱＰオフセット値が現在の量子化グループのために前に決定されていなかった場合、クロマパレットコード化ブロックのパレットクロマＱＰオフセット値がシグナリングされる。クロマパレットコード化ブロックのパレットクロマＱＰオフセット値がシグナリングされない場合、それは、０に等しくなると明示的に導出され得る。
【０１０６】
[0111]概して、パレットコード化ブロックのパレットＱＰ値は、上記で説明され、ＨＥＶＣバージョン１、ＨＥＶＣ  ＳＣＣ  ＷＤ１．０およびＨＥＶＣ  ＳＣＣ  ＷＤ２．０に記載されている量子化パラメータ導出プロセスに従って決定され得る。開示される技法の別の例では、パレットコード化ブロックについて、ビデオエンコーダまたはビデオデコーダは、明示的にシグナリングされたデルタＱＰ値に基づいてパレットＱＰ値を決定または導出することと、デルタＱＰ値なしに予測されたＱＰ値に基づいてパレットＱＰ値を決定または導出することとの間で切り替え得る。この切替えは、ＳＰＳ、ＶＰＳ、ＰＰＳ、またはスライスヘッダ中でシグナリングされるフラグを介して達成され得る。
【０１０７】
[0112]パレットコード化ブロックのためのｑＰｉに応じて（as a function of qPi）ＱｐCを指定することの様々な例が、以下で説明される。上記の表２に示されるように、クロマ成分のために使用されるＱＰ値は、ルーマ成分のために使用されるＱＰ値に応じて非線形的に調整され得る。パレットベースのコーディングモードがルーマ成分とクロマ成分とで異なる特性を有するので、非線形調整は、パレットベースのコーディングモードについて簡略化され得る。一例として、パレットコード化ブロックについて、変数ＱｐCがインデックスｑＰｉに等しく設定され得る。
【０１０８】
[0113]パレットコード化ブロック内のピクセルのためのデブロッキングフィルタ処理の適用を決定するために使用されるＱＰ値の様々な例が、以下で説明される。たとえば、パレットコード化ブロックのためのデブロッキングフィルタ処理の適用を決定するために採用されるＱＰ値として、上記で説明された様々なＱＰ値と様々な調整とが使用され得る。
【０１０９】
[0114]パレットコード化ブロックのための新しいパレットエントリの量子化を実行することの様々な例が、以下で説明される。開示される技法の一例では、現在のＣＵがパレットコード化ブロックとしてコーディングされる場合、パレットコード化ブロックのためのパレット中の新しいパレットエントリが量子化され得る。新しいパレットエントリを量子化するためのシグナリングおよびＱＰ値は、以下の通りであり得る。ある場合には、新しいパレットエントリのＱＰ値は、パレットコード化ブロック内のエスケープピクセル値を量子化するために決定されたＱＰ値とは異なり得る。たとえば、新しいパレットエントリのＱＰ値は、エスケープピクセルＱＰ値からのオフセットとして設定され得る。
【０１１０】
[0115]別の場合では、シンタックス要素、たとえば、フラグまたは位置インデックスは、パレットコード化ブロックのためのパレット中のどの新しいエントリが量子化され、どの新しいエントリが量子化されないかを示し得る。たとえば、新しいパレットエントリは、２つのサブセットに分割され得、第１のサブセットは、量子化されない（すなわち、ロスレスにコーディングされた）新しいエントリを含み、第２のサブセットは、量子化される新しいエントリを含む。フラグは、それが量子化されるか否かを示すために各新しいパレットエントリの後にシグナリングされ得る。代替的に、量子化されない各新しいパレットエントリの後にフラグがシグナリングされ得、一方、所与の新しいパレットエントリとすべての後続の新しいパレットエントリとが量子化されることを示すために別のフラグがシグナリングされ得る。新しいパレットエントリにいくつかの異なるレベルの量子化が適用され得る。
【０１１１】
[0116]図１は、本開示の技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣバージョン１によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。
【０１１２】
[0117]図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【０１１３】
[0118]ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【０１１４】
[0119]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動させることが可能な、１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２がリアルタイムで符号化されたビデオデータを直接宛先デバイス１４に送信することを可能にする、１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って符号化されたビデオデータを変調し得、変調されたビデオデータを宛先デバイス１４に送信し得る。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などの、ワイヤレスおよび／またはワイヤード通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などの、パケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【０１１５】
[0120]別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。
【０１１６】
[0121]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶する、ファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化ビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【０１１７】
[0122]宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【０１１８】
[0123]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体上に記憶するためのビデオデータの符号化、データ記憶媒体上に記憶されたビデオデータの復号、または他の用途などの、様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【０１１９】
[0124]図１に示されるビデオコーディングシステム１０は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および／またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【０１２０】
[0125]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
【０１２１】
[0126]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために、記憶媒体またはファイルサーバ上に記憶され得る。
【０１２２】
[0127]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化されたビデオデータを受信し得る。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか、またはその外部にあり得る。概して、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【０１２３】
[0128]ビデオエンコーダ２０およびビデオデコーダ３０は、各々、１つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のうちのいずれかとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、本開示の技法を実行するために、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【０１２４】
[0129]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指すことがある。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間（span）にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【０１２５】
[0130]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣバージョン１に記載されるＨＥＶＣ規格のような、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
【０１２６】
[0131]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは、一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと示される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【０１２７】
[0132]ピクチャの符号化された表現を生成するために、ビデオエンコーダ２０は、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎのブロックであり得る。ＣＴＵは、「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査において連続的に順序付けられた整数個のＣＴＵを含み得る。
【０１２８】
[0133]コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するように、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に（recursively）実行し得、したがって、「コーディングツリーユニット」という名称がある。コーディングブロックは、サンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイ、ＣｂサンプルアレイおよびＣｒサンプルアレイ、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロックとＣｂ予測ブロックとＣｒ予測ブロックとのための予測ルーマブロックと予測Ｃｂブロックと予測Ｃｒブロックとを生成し得る。
【０１２９】
[0134]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連するピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【０１３０】
[0135]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連するピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために、単予測または双予測を使用し得る。ビデオエンコーダ２０がＰＵのための予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０がＰＵのための予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【０１３１】
[0136]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵに関する予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵに関するルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０はＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０はまた、ＣＵのためのＣｒ残差ブロックを生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【０１３２】
[0137]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを、１つまたは複数のルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連するルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。
【０１３３】
[0138]ビデオエンコーダ２０は、ＴＵに関するルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは、変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【０１３４】
[0139]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を提供する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を実行し得る。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリームの中に出力し得る。
【０１３５】
[0140]ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワークアブストラクションレイヤ（ＮＡＬ：network abstraction layer）ユニットを備え得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ：raw byte sequence payload）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって規定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含む、シンタックス構造であり得る。いくつかの事例では、ＲＢＳＰは０ビットを含む。
【０１３６】
[0141]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）に関するＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコード化スライスに関するＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットはＳＥＩに関するＲＢＳＰをカプセル化し得、以下同様である。ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれることがある。
【０１３７】
[0142]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するためにビットストリームを解析し得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、全般に、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。
【０１３８】
[0143]たとえば、ビデオデコーダ３０は、現在のＣＵのＰＵの予測ブロックを決定するために、ＰＵのＭＶを使用し得る。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵに関連する変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵに関連する変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行し得る。ビデオデコーダ３０は、現在のＣＵのＰＵのための予測ブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに追加することによって現在のＣＵのコーディングブロックを再構築し得る。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築し得る。
【０１３９】
[0144]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリに関連付けられ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングし得る。
【０１４０】
[0145]上の例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定すること、各ピクセルの値を表すためのパレット中のエントリを位置特定すること、および、ピクセル値をパレットに関連付ける、ピクセルのインデックス値を用いてパレットを符号化することによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得し得る。ビデオデコーダ３０は、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリに関連付け得る。
【０１４１】
[0146]いくつかの例では、ビデオエンコーダ２０は、同じピクセル値を有する所与の走査順序の連続するピクセルの数を示す１つまたは複数のシンタックス要素を符号化し得る。同様の値のピクセル値のストリング（string）は、本明細書では「ラン」と呼ばれることがある。例示を目的とする例では、所与の走査順序の２つの連続するピクセルが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するピクセルが同じ値を有するが、その走査順序の３番目のピクセルが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続するピクセルロケーションの数を決定し得る。
【０１４２】
[0147]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックス値のマップの１つまたは複数のエントリに対する線コピーを実行し得る。たとえば、ビデオエンコーダ２０は、インデックスマップ中の特定のエントリに対するピクセル値が、特定のエントリの上の線（a line above）中のエントリに等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリの上の線の中のエントリに等しい走査順序におけるインデックスの数をランとして示し得る。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、規定された隣接する線から、および、現在コーディングされているマップの線に対する規定された数のエントリから、インデックス値をコピーし得る。
【０１４３】
[0148]本開示の技法によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロックのピクセルのためのループ内フィルタ処理（たとえば、デブロッキングフィルタ処理および／またはＳＡＯフィルタ処理）の設計および適用を決定し得る。より詳細には、ビデオエンコーダ２０およびビデオデコーダ３０は、少なくとも１つのパレットコード化ブロックによって形成されるブロック境界に沿ったピクセルのためのデブロッキングフィルタ処理の適用を決定し得る。さらに、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロックのエスケープピクセル値を量子化するために使用されるＱＰ値およびデルタＱＰ値を決定し得る。たとえば、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロックのパレットＱＰ値を決定し得、パレットＱＰ値は、予測されたＱＰ値から調整される。特に、いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、図４〜図６に関してより詳細に説明される本開示の技法を実行するように構成され得る。
【０１４４】
[0149]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいて、ビデオエンコーダ２０を説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１４５】
[0150]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を表す。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣバージョン１によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションのピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセルロケーションの少なくともいくつかを、パレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【０１４６】
[0151]図２の例では、ビデオエンコーダ２０は、ビデオデータメモリ９８と、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号されたピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示せず）を含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能的な構成要素を含み得る。
【０１４７】
[0152]ビデオデータメモリ９８は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ９８に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号されたピクチャバッファ１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ９８および復号されたピクチャバッファ１１６は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ９８および復号されたピクチャバッファ１１６は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ９８は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１４８】
[0153]ビデオエンコーダ２０はビデオデータを受信し得る。ビデオエンコーダ２０は、ビデオデータのピクチャのスライスの中の各ＣＴＵを符号化し得る。ＣＴＵの各々は、等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）とピクチャの対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、ＣＴＵのＣＴＢを徐々により小さいブロックに分割するために、４分木区分を実行し得る。より小さいブロックはＣＵのコーディングブロックであり得る。たとえば、予測処理ユニット１００は、ＣＴＵに関連するＣＴＢを４つの等しいサイズのサブブロックに区分し得、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【０１４９】
[0154]ビデオエンコーダ２０は、ＣＵの符号化された表現（すなわち、コーディングされたＣＵ）を生成するために、ＣＴＵのＣＵを符号化し得る。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵに関連するコーディングブロックを区分し得る。したがって、各ＰＵは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートし得る。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートし、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートし得る。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測の場合は２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズ向けの非対称区分をサポートし得る。
【０１５０】
[0155]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによって、ＰＵについての予測データを生成し得る。ＰＵについての予測データは、ＰＵの予測ブロックとＰＵについての動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行し得る。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されるブロックでは、予測されるブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【０１５１】
[0156]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャのリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索し得る。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成し得る。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域に関連する参照ロケーションとの間の空間変位を示すＭＶを生成し得る。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【０１５２】
[0157]ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を実行し得る。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索し得る。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵの予測ブロックと参照領域に関連する参照ロケーションとの間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかまたはＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成し得る。
【０１５３】
[0158]ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索し得、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索し得る。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域に関連する参照ロケーションとＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成し得る。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成し得る。
【０１５４】
[0159]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵについての予測データを生成し得る。ＰＵのための予測データは、ＰＵについての予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対してイントラ予測を実行し得る。
【０１５５】
[0160]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、ＰＵについての予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット１２６は、ＰＵの予測ブロックを生成するために隣接ＰＵのサンプルブロックからのサンプルを使用し得る。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、ＰＵに関連する領域のサイズに依存し得る。
【０１５６】
[0161]予測処理ユニット１００は、ＰＵに対してインター予測処理ユニット１２０によって生成された予測データ、またはＰＵに対してイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵについての予測データを選択し得る。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／ひずみメトリックに基づいて、ＣＵのＰＵについての予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれることがある。
【０１５７】
[0162]残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック、ならびにＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成し得る。たとえば、残差生成ユニット１０２は、残差ブロック中の各サンプルがＣＵのコーディングブロック中のサンプルとＣＵのＰＵの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差分に等しい値を有するようにＣＵの残差ブロックを生成し得る。
【０１５８】
[0163]変換処理ユニット１０４は、ＣＵに関連する残差ブロックをＣＵのＴＵに関連する変換ブロックに区分するために、４分木区分を実行し得る。したがって、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックに関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々に関連するノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【０１５９】
[0164]変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵに関する変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵに関連する変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向変換、または概念的に同様の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット１０４は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
【０１６０】
[0165]量子化ユニット１０６は、係数ブロック内の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、ｎビット変換係数は量子化の間にｍビットの変換係数に切り捨てられ得、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵに関連する量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵに関連する係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵに関連するＱＰ値を調整することによって、ＣＵに関連する係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得、したがって、量子化された変換係数は元の係数よりも低い精度を有し得る。
【０１６１】
[0166]逆量子化ユニット１０８および逆変換処理ユニット１１０は、係数ブロックから残差ブロックを再構築するために、それぞれ、係数ブロックに逆量子化と逆変換とを適用し得る。再構築ユニット１１２は、ＴＵに関連する再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測サンプルブロックからの対応するサンプルに追加し得る。このようにＣＵのＴＵごとに変換ブロックを再構築することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構築し得る。
【０１６２】
[0167]フィルタユニット１１４は、ＣＵに関連するコーディングブロックの中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を実行し得る。復号されたピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット１２０は、他のピクチャのＰＵに対してインター予測を実行するために、再構築されたコーディングブロックを含んでいる参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ内の他のＰＵに対してイントラ予測を実行するために、復号されたピクチャバッファ１１６内の再構築されたコーディングブロックを使用し得る。
【０１６３】
[0168]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能的な構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受信し得、予測処理ユニット１００からシンタックス要素を受信し得る。エントロピー符号化ユニット１１８は、エントロピー符号化されたデータを生成するために、データに対して１つまたは複数のエントロピー符号化動作（operations）を実行し得る。たとえば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）動作、ＣＡＢＡＣ動作、変数−変数（Ｖ２Ｖ：variable-to-variable）長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）動作、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化されたデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、ＣＵのためのＲＱＴを表すデータを含み得る。
【０１６４】
[0169]本開示の様々な例によれば、ビデオエンコーダ２０は、パレットベースのコーディングを実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードのコンテキストにおいて（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロックであっても、長方形のブロックであってもよく、さらには非長方形の領域であってもよい。
【０１６５】
[0170]パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの符号化を実行し得る。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションのピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセルロケーションの少なくともいくつかを、パレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１６６】
[0171]本開示の技法によれば、ビデオエンコーダ２０は、復号されたピクチャバッファ１１６中に再構築されたブロックを記憶するより前にフィルタユニット１１４によって再構築されたパレットコード化ブロックのピクセルのためのループ内フィルタ処理（たとえば、デブロッキングフィルタ処理および／またはＳＡＯフィルタ処理）の設計および適用を決定するように構成され得る。より詳細には、ビデオエンコーダ２０のパレットベースの符号化ユニット１２２は、少なくとも１つのパレットコード化ブロックによって形成されるブロック境界に沿ったピクセルのためのフィルタユニット１１４によるデブロッキングフィルタ処理の適用を決定するように構成され得る。たとえば、ビデオデータの第１のブロックがパレットコード化ブロックであることに基づいて、パレットベースの符号化ユニット１２２は、ビデオデータの再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において、第１のブロックの再構築されたバージョン内のピクセルのためのフィルタユニット１１４によるデブロッキングフィルタ処理を無効化し得る。パレットベースの符号化ユニット１２２はまた、再構築された第１のブロックと再構築された第２のブロックとの間に形成されるブロック境界において再構築された第２のブロック内のピクセルのためのフィルタユニット１１４によるデブロッキングフィルタ処理を適用すべきか否かを決定し得る。パレットコード化ブロックのデブロッキングフィルタ処理の適用を決定するための技法が、図４および図５に関してより詳細に説明される。
【０１６７】
[0172]本開示の技法にさらによれば、ビデオエンコーダ２０は、パレットコード化ブロックのエスケープピクセル値を量子化するために量子化ユニット１０６によって使用されるＱＰ値とデルタＱＰ値とを決定するように構成され得る。たとえば、ビデオエンコーダ２０は、パレットコード化ブロック内の少なくとも１つのピクセルがパレットコード化ブロックのためのパレット中に含まれない色値を有するエスケープピクセルとして符号化されるかどうかを示す第１のシンタックス要素をビットストリームにおいて符号化するように構成され得る。ビデオエンコーダ２０は、さらに、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、パレットコード化ブロックのパレットＱＰ値を決定すること、パレットＱＰ値は、予測されたＱＰ値から調整される、を行うように構成され得る。
【０１６８】
[0173]一例では、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、パレットコード化ブロックを含む現在の量子化グループのために前に決定されていなかった場合、ビデオエンコーダ２０は、パレットコード化ブロックのパレットＱＰ値を決定し、パレットＱＰ値と予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定し、およびパレットデルタＱＰ値を示す第２のシンタックス要素をビットストリームにおいて符号化し得る。ビデオエンコーダ２０は、次いで、パレットＱＰ値に従ってエスケープピクセルの色値を量子化し、ビットストリーム中にエスケープピクセルの量子化された色値を符号化し得る。パレットコード化ブロックのパレットＱＰ値を決定するための技法が、図６に関してより詳細に説明される。
【０１６９】
[0174]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明のために、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０を説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１７０】
[0175]ビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を表す。たとえば、ビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣバージョン１によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオデコーダ３０は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリに関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
【０１７１】
[0176]図３の例では、ビデオデコーダ３０は、ビデオデータメモリ１４８と、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号されたピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４と、イントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成された、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多いか、より少ないか、または異なる機能的な構成要素を含み得る。
【０１７２】
[0177]ビデオデータメモリ１４８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ１４８に記憶されるビデオデータは、たとえば、コンピュータ可読媒体１６から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１４８は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コード化ピクチャバッファ（ＣＰＢ）を形成し得る。復号されたピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１４８および復号されたピクチャバッファ１６２は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１４８および復号されたピクチャバッファ１６２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１４８は、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１７３】
[0178]ビデオデータメモリ１４８、すなわちＣＰＢは、ビットストリームの符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受信し、記憶し得る。エントロピー復号ユニット１５０は、ビデオデータメモリ１４８から符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受信し、シンタックス要素を復号するためにＮＡＬユニットを解析し得る。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて復号されたビデオデータを生成し得る。
【０１７４】
[0179]ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コード化スライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャに関連するＰＰＳを特定するシンタックス要素を含み得る。
【０１７５】
[0180]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実行し得る。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行し得る。ＣＵの各ＴＵに対して再構築動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築し得る。
【０１７６】
[0181]ＣＵのＴＵに対して再構築動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵに関連する係数ブロックを逆量子化（inverse quantize）、すなわち逆量子化し（de-quantize）得る。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵに関連するＱＰ値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、利用されるエントロピーコーディングの方法に依存し得る。
【０１７７】
[0182]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵに関連する残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用し得る。
【０１７８】
[0183]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵの予測ブロックを生成するためにイントラ予測を実行し得る。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵのための予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成するために、イントラ予測モードを使用し得る。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定し得る。
【０１７９】
[0184]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築し得る。さらに、ＰＵがインター予測を使用して符号化された場合、エントロピー復号ユニット１５０は、ＰＵについての動き情報を抽出し得る。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定し得る。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成し得る。
【０１８０】
[0185]再構築ユニット１５８は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築するために、ＣＵのＴＵに関連するルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック、ならびにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用し得る。たとえば、再構築ユニット１５８は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築するために、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックの対応するサンプルに加算し得る。
【０１８１】
[0186]フィルタユニット１６０は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロックに関連するブロッキングアーティファクトを低減するために、デブロッキング動作を実行し得る。ビデオデコーダ３０は、復号されたピクチャバッファ１６２中にＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを記憶し得る。復号されたピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ３０は、復号されたピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測演算またはインター予測演算を実行し得る。このようにして、ビデオデコーダ３０は、有意ルーマ係数ブロック（significant luma coefficient block）の変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換ブロックを生成するために変換係数レベルに変換を適用し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
【０１８２】
[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]本開示の技法によれば、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、ビデオデコーダ３０は、パレットコード化ブロックのパレットＱＰ値を決定し、パレットＱＰ値は、予測されたＱＰ値から調整される（２２６）。パレットコード化ブロックは、他のパレットコード化ブロックと非パレットコード化ブロックとを含む１つまたは複数の他のブロックを含み得る現在の量子化グループ中に含まれ得る。いくつかの例では、パレットＱＰ値を決定するために調整される予測されたＱＰ値は、スライスレベルのＱＰ値であり得る。他の例では、パレットＱＰ値を決定するために調整される予測されたＱＰ値は、前の量子化グループ中に含まれるブロックに関連付けられるＱＰ値であり得る。本開示では、主に、単数のパレットＱＰ値として説明されるが、パレットＱＰ値は、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを含み得る。たとえば、パレットＱＰ値は、パレットＱＰY値と、パレットＱＰCb値と、パレットＱＰCr値とを含み得る。
【０２０８】
[0213]一例では、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、ビデオデコーダ３０は、パレットコード化ブロックを含む現在の量子化グループのデルタＱＰ値を決定し、パレットコード化ブロックのパレットＱＰ値を決定するためにデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。
【０２０９】
[0214]場合によっては、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、ビデオデコーダ３０は、パレットコード化ブロックのパレットデルタＱＰ値を示すシンタックス要素を受信し、パレットコード化ブロックのパレットＱＰ値を決定するためにパレットデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。他の場合には、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、ビデオデコーダ３０は、パレットコード化ブロックのデルタＱＰ値を受信することなしにパレットコード化ブロックのパレットＱＰ値を決定するために前に決定されたデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。
【０２１０】
[0215]いくつかの例では、ビデオデコーダ３０は、デルタＱＰ値がパレットコード化ブロックのために有効化される場合のみ、パレットコード化ブロックのパレットデルタＱＰ値を示すシンタックス要素を受信し得る。たとえば、ビデオデコーダ３０は、ＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダのうちの１つ中で、デルタＱＰ値がパレットコード化ブロックのためにＣＵレベルでシグナリングされるかどうかを示すシンタックス要素を受信し得る。
【０２１１】
[0216]上記の例は、エスケープピクセルとして復号されるルーマピクセルを量子化するために使用されるルーマパレットＱＰ値を決定するために使用され得る。さらに、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、ビデオデコーダ３０は、パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定し、パレットコード化ブロックのクロマパレットＱＰ値を決定するためにクロマＱＰオフセット値に基づいてパレットコード化ブロックのために決定されたルーマパレットＱＰ値を調整し得る。
【０２１２】
[0217]場合によっては、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、クロマＱＰオフセット値が、パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、ビデオデコーダ３０は、パレットコード化ブロックのパレットクロマＱＰオフセット値を示すシンタックス要素を受信し、パレットコード化ブロックのクロマパレットＱＰ値を決定するためにパレットクロマＱＰオフセット値に基づいてルーマパレットＱＰ値を調整し得る。他の場合には、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、クロマＱＰオフセット値が、現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、ビデオデコーダ３０は、パレットコード化ブロックのクロマＱＰオフセット値を受信することなしにパレットコード化ブロックのクロマパレットＱＰ値を決定するために前に決定されたクロマＱＰオフセット値に基づいてルーマパレットＱＰ値を調整し得る。
【０２１３】
[0218]いくつかの例では、ビデオデコーダ３０は、クロマＱＰオフセット値がパレットコード化ブロックのために有効化される場合のみ、パレットコード化ブロックのパレットクロマＱＰオフセット値を示すシンタックス要素を受信し得る。たとえば、ビデオデコーダ３０は、ＳＰＳ、ＶＰＳ、ＰＰＳまたはスライスヘッダのうちの１つ中で、クロマＱＰオフセット値がパレットコード化ブロックのためにＣＵレベルでシグナリングされるかどうかを示すシンタックス要素を受信し得る。
【０２１４】
[0219]別の例として、パレットコード化ブロックのパレットＱＰ値を決定するために、ビデオデコーダ３０は、パレットコード化ブロックが現在の量子化グループ中の第１のブロックであるかどうかを決定すること、または現在の量子化グループ中のいずれかの前の非パレットコード化ブロックが非０係数を含むかどうかを決定することを行うように構成され得る。パレットコード化ブロックが、現在の量子化グループ中の第１のブロックであること、または現在の量子化グループ中の前の非パレットコード化ブロックのいずれも非０係数を含まないことに基づいて、ビデオデコーダ３０は、予測されたＱＰ値から調整される、ルーマおよびクロマＱＰ値を含むパレットＱＰ値を決定し得る。代替的に、パレットコード化ブロックが、現在の量子化グループ中の第１のブロックではないことと、現在の量子化グループ中の前の非パレットコード化ブロックのうちの少なくとも１つが非０係数を含むこととに基づいて、ビデオデコーダ３０は、現在の量子化グループ中の少なくとも１つの前の非パレットコード化ブロックのために前に決定された、ルーマＱＰ値とクロマＱＰ値とを含む量子化グループＱＰ値にパレットＱＰ値が等しくなると決定し得る。
【０２１５】
[0220]さらに、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、およびパレットコード化ブロックのパレットＱＰ値を決定すると、ビデオデコーダ３０は、パレット中に含まれないエスケープピクセルの色値を決定し、パレットＱＰ値に従ってエスケープピクセルの色値を量子化する（２２８）。より詳細には、ビデオデコーダ３０は、受信されたビットストリームから、エスケープピクセルの量子化された色値を復号し、パレットＱＰ値に従ってエスケープピクセルの色値を逆量子化する。
【０２１６】
[0221]ビデオデコーダ３０は、次いで、決定されたパレットと、決定されたインデックス値と、パレットコード化ブロックのためのエスケープピクセルの逆量子化された色値とに基づいてビデオデータのパレットコード化ブロックを再構築する。たとえば、ビデオデコーダ３０は、パレットコード化ブロックのピクセル値を再構築するために、決定されたインデックス値をパレットのエントリにマッピングし得る。ビデオデコーダ３０は、次いで、復号されたピクチャバッファ１６２中に再構築されたパレットコード化ブロックのビデオデータを記憶し、その後、表示のために再構築されたパレットコード化ブロックのビデオデータを出力し得る。
【０２１７】
[0222]図６の例示的な動作は、次に、ビデオエンコーダ２０に関して説明される。ビデオエンコーダ２０は、ビデオデータの各ブロックがパレットコード化ブロックであるか否かを示す少なくとも１つのシンタックス要素（たとえば、フラグ）を符号化されたビットストリームにおいてシグナリングし得る。他の例では、ビデオエンコーダ２０は、ビデオデータの各ブロックをコーディングするために使用されるコーディングのタイプ、たとえば、各ブロックがパレットコード化ブロックであるのか、インターコード化ブロックであるのか、またはイントラコード化ブロックであるのかなどを示す１つまたは複数のシンタックス要素を符号化されたビットストリームにおいてシグナリングし得る。
【０２１８】
[0223]現在のブロックがパレットコード化ブロックとして符号化されるべきであるとき、ビデオエンコーダ２０のパレットベースの符号化ユニット１２２は、パレットコード化ブロックのためのパレットを決定し、ここで、パレットは、１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含む（２２０）。パレットベースの符号化ユニット１２２は、パレットコード化ブロック内の少なくとも１つのピクセルがパレット中に含まれない色値を有するエスケープピクセルとして符号化されるかどうかを決定する（２２４）。いくつかの例では、ビデオエンコーダ２０は、パレットコード化ブロックが少なくとも１つのエスケープピクセルを含むか否かを示す少なくとも１つのシンタックス要素（たとえば、フラグ）をビットストリームにおいてＣＵレベルでシグナリングし得る。他の例では、ビデオエンコーダ２０は、ピクセルがパレットに基づいて符号化されるのか、またはエスケープピクセルとして符号化されるのかを示すシンタックス要素（たとえば、フラグ）をパレットコード化ブロック内のピクセルごとにシグナリングし得る。いくつかの例では、ビデオエンコーダ２０はまた、スライスレベルのＱＰ値を示すシンタックス要素をビットストリームにおいてシグナリングし得る。
【０２１９】
[0224]本開示の技法によれば、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、ビデオエンコーダ２０は、パレットコード化ブロックのパレットＱＰ値を決定し、パレットＱＰ値は、予測されたＱＰ値から調整される（２２６）。パレットコード化ブロックは、他のパレットコード化ブロックと非パレットコード化ブロックとを含む１つまたは複数の他のブロックを含み得る現在の量子化グループ中に含まれ得る。パレットＱＰ値を決定するために調整される予測されたＱＰ値は、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連付けられるＱＰ値であり得る。パレットＱＰ値は、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを含み得る。
【０２２０】
[0225]一例では、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、ビデオエンコーダ２０は、パレットコード化ブロックを含む現在の量子化グループのデルタＱＰ値を決定し、パレットコード化ブロックのパレットＱＰ値を決定するためにデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。
【０２２１】
[0226]場合によっては、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、ビデオエンコーダ２０は、パレットコード化ブロックのパレットＱＰ値を決定し、パレットＱＰ値と予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定し、パレットコード化ブロックのパレットデルタＱＰ値を示すシンタックス要素をシグナリングし得る。他の場合には、パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、ビデオエンコーダ２０は、パレットコード化ブロックのデルタＱＰ値をシグナリングすることなしにパレットコード化ブロックのパレットＱＰ値を決定するために前に決定されたデルタＱＰ値に基づいて予測されたＱＰ値を調整し得る。
【０２２２】
[0227]別の例では、パレットコード化ブロックのパレットＱＰ値を決定するために、ビデオエンコーダ２０は、パレットコード化ブロックが現在の量子化グループ中の第１のブロックであるかどうかを決定すること、または現在の量子化グループ中のいずれかの前の非パレットコード化ブロックが非０係数を含むかどうかを決定することを行うように構成され得る。パレットコード化ブロックが、現在の量子化グループ中の第１のブロックであること、または現在の量子化グループ中の前の非パレットコード化ブロックのいずれも非０係数を含まないことに基づいて、ビデオエンコーダ２０は、予測されたＱＰ値から調整される、ルーマＱＰ値およびクロマＱＰ値を含むパレットＱＰ値を決定し得る。代替的に、パレットコード化ブロックが、現在の量子化グループ中の第１のブロックでないことと、現在の量子化グループ中の前の非パレットコード化ブロックのうちの少なくとも１つが非０係数を含むこととに基づいて、ビデオエンコーダ２０は、現在の量子化グループ中の少なくとも１つの前の非パレットコード化ブロックのために前に決定された、ルーマＱＰ値とクロマＱＰ値とを含む量子化グループＱＰ値にパレットＱＰ値が等しくなると決定し得る。
【０２２３】
[0228]パレットコード化ブロック内の少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、およびパレットコード化ブロックのパレットＱＰ値を決定すると、ビデオエンコーダ２０は、パレット中に含まれないエスケープピクセルの色値を決定し、パレットＱＰ値に従ってエスケープピクセルの色値を量子化する（２２８）。より詳細には、ビデオエンコーダ２０は、パレットＱＰ値に従ってエスケープピクセルの色値を量子化し、ビットストリームにおいてエスケープピクセルの量子化された色値を符号化する。
【０２２４】
[0229]ビデオエンコーダ２０は、次いで、復号ループにおいて、決定されたパレットと、決定されたインデックス値と、パレットコード化ブロックのためのエスケープピクセルの逆量子化された色値とに基づいてビデオデータのパレットコード化ブロックを再構築する。たとえば、ビデオエンコーダ２０は、パレットコード化ブロックのピクセル値を再構築するために、決定されたインデックス値をパレットのエントリにマッピングし得る。ビデオエンコーダ２０は、次いで、復号されたピクチャバッファ１１６中に再構築されたパレットコード化ブロックのビデオデータを記憶し得る。
【０２２５】
[0230]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの動作またはイベントが、異なるシーケンスで実行され得、全体的に追加、マージ、または除外され得る（たとえば、すべての説明された動作またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。さらに、いくつかの例では、動作またはイベントは、順次にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して実行され得る。さらに、本開示のいくつかの態様は、明快にするために単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技法はビデオコーダに関連するユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２２６】
[0231]本開示のいくつかの態様は、説明のためにＨＥＶＣバージョン１ならびにＨＥＶＣ  ＳＣＣ  ＷＤ１．０およびＷＤ２．０に関して説明された。ただし、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０２２７】
[0232]上記で説明した技法は、その両方が一般にビデオコーダと呼ばれることがある、ビデオエンコーダ２０（図１および図２）および／またはビデオデコーダ３０（図１および図３）によって実行され得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０２２８】
[0233]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
【０２２９】
[0234]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２３０】
[0235]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体に向けられることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０２３１】
[0236]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０２３２】
[0237]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置で実装され得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実行するように構成されたデバイスの機能的態様を強調するように本開示において記載されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
【０２３３】
[0238]様々な例が説明された。これらおよび他の例は添付の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを処理する方法であって、
１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、前記パレットＱＰ値が、予測されたＱＰ値から調整され、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレット中に含まれない前記エスケープピクセルの前記色値を決定すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化することを行うことと、
を備える、方法。
［Ｃ２］
前記パレットＱＰ値が、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを備える、Ｃ１に記載の方法。
［Ｃ３］
前記パレットコード化ブロックが、現在の量子化グループ中に含まれ、前記予測されたＱＰ値が、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連するＱＰ値のうちの１つを備える、Ｃ１に記載の方法。
［Ｃ４］
前記パレットＱＰ値を決定することが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのデルタＱＰ値を決定することと、
前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記デルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
を備える、Ｃ１に記載の方法。
［Ｃ５］
前記パレットＱＰ値を決定することが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うことと、
を備える、Ｃ１に記載の方法。
［Ｃ６］
前記パレットコード化ブロックの前記パレットデルタＱＰ値を決定することが、
デルタＱＰ値がパレットコード化ブロックのために有効化されるかどうかを決定することと、
デルタＱＰ値がパレットコード化ブロックのために有効化されることに基づいて、前記パレットコード化ブロックの前記パレットデルタＱＰ値を決定することと、
を備える、Ｃ５に記載の方法。
［Ｃ７］
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記方法が、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定することと、
前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記クロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ８］
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記方法が、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、クロマＱＰオフセット値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記前に決定されたクロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、クロマＱＰオフセット値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットクロマＱＰオフセット値を決定すること、および前記パレットコード化ブロックの前記クロマパレットＱＰ値を決定するために、前記パレットクロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することを行うことと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ９］
前記パレットコード化ブロックの前記パレットクロマＱＰオフセット値を決定することが、
クロマＱＰオフセット値がパレットコード化ブロックのために有効化されるかどうかを決定することと、
クロマＱＰオフセット値がパレットコード化ブロックのために有効化されることに基づいて、前記パレットコード化ブロックの前記パレットクロマＱＰオフセット値を決定することと、
を備える、Ｃ８に記載の方法。
［Ｃ１０］
前記パレットＱＰ値を決定することが、
前記パレットコード化ブロックが現在の量子化グループ中の第１のブロックであるかどうか、または前記現在の量子化グループ中のいずれかの前の非パレットコード化ブロックが非０係数を含むかどうかを決定することと、
前記パレットコード化ブロックが、前記現在の量子化グループ中の前記第１のブロックであること、または前記現在の量子化グループ中の前記前の非パレットコード化ブロックのいずれも非０係数を含まないことに基づいて、前記予測されたＱＰ値から調整される前記パレットＱＰ値を決定することと、前記パレットＱＰ値が、ルーマおよびクロマパレットＱＰ値を含み、
前記パレットコード化ブロックが、前記現在の量子化グループ中の前記第１のブロックでないことと、前記現在の量子化グループ中の前記前の非パレットコード化ブロックのうちの少なくとも１つが、非ゼロ係数を含むこととに基づいて、前記現在の量子化グループ中の前記少なくとも１つの前の非パレットコード化ブロックのために前に決定された量子化グループＱＰ値に等しい前記パレットＱＰ値を決定することと、前記量子化グループＱＰ値が、ルーマおよびクロマＱＰ値を含み、
を備える、Ｃ１に記載の方法。
［Ｃ１１］
前記方法が、ビデオデコーダによってビデオデータを処理する方法を備え、前記方法が、
受信されたビットストリームから、前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されるべきであるかどうかを示す第１のシンタックス要素を復号することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、前記受信されたビットストリームから、前記パレットコード化ブロックのパレットデルタＱＰ値を示す第２のシンタックス要素を復号すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うことと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、前記現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、前記パレットコード化ブロックのデルタＱＰ値を復号することなしに前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、前記受信されたビットストリームから、前記エスケープピクセルの量子化された色値を復号すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を逆量子化することを行うことと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ１２］
前記方法が、ビデオエンコーダによってビデオデータを処理する方法を備え、前記方法が、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されるかどうかを示す第１のシンタックス要素をビットストリームにおいて符号化することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定すること、前記パレットＱＰ値と前記予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットデルタＱＰ値を示す第２のシンタックス要素を前記ビットストリームにおいて符号化することを行うことと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、前記現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、前記パレットコード化ブロックのデルタＱＰ値を符号化することなしに前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化すること、および前記ビットストリームにおいて前記エスケープピクセルの前記量子化された色値を符号化することを行うことと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ１３］
ビデオ処理デバイスであって、
ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信し、
１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、前記パレットＱＰ値が、予測されたＱＰ値から調整され、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレット中に含まれない前記エスケープピクセルの前記色値を決定すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化することを行うことと、
を行うように構成された、１つまたは複数のプロセッサと、
を備える、ビデオ処理デバイス。
［Ｃ１４］
前記パレットＱＰ値が、ルーマパレットＱＰ値と少なくとも１つのクロマパレットＱＰ値とを備える、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ１５］
前記パレットコード化ブロックが、現在の量子化グループ中に含まれ、前記予測されたＱＰ値が、スライスレベルのＱＰ値または前の量子化グループ中に含まれるブロックに関連するＱＰ値のうちの１つを備える、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ１６］
前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのデルタＱＰ値を決定することと、
前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記デルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ１７］
前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うことと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ１８］
前記１つまたは複数のプロセッサが、
デルタＱＰ値がパレットコード化ブロックのために有効化されるかどうかを決定することと、
デルタＱＰ値がパレットコード化ブロックのために有効化されることに基づいて、前記パレットコード化ブロックの前記パレットデルタＱＰ値を決定することと、
を行うように構成される、Ｃ１７に記載のビデオ処理デバイス。
［Ｃ１９］
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックを含む現在の量子化グループのクロマＱＰオフセット値を決定することと、
前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記クロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２０］
前記パレットＱＰ値が、ルーマパレットＱＰ値を備え、前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、クロマＱＰオフセット値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックのクロマパレットＱＰ値を決定するために、前記前に決定されたクロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、クロマＱＰオフセット値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットクロマＱＰオフセット値を決定すること、および前記パレットコード化ブロックの前記クロマパレットＱＰ値を決定するために、前記パレットクロマＱＰオフセット値に基づいて前記パレットコード化ブロックのために決定された前記ルーマパレットＱＰ値を調整することを行うことと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２１］
前記１つまたは複数のプロセッサが、
クロマＱＰオフセット値がパレットコード化ブロックのために有効化されるかどうかを決定することと、
クロマＱＰオフセット値がパレットコード化ブロックのために有効化されることに基づいて、前記パレットコード化ブロックの前記パレットクロマＱＰオフセット値を決定することと、
を行うように構成される、Ｃ２０に記載のビデオ処理デバイス。
［Ｃ２２］
前記１つまたは複数のプロセッサが、
前記パレットコード化ブロックが現在の量子化グループ中の第１のブロックであるかどうか、または前記現在の量子化グループ中のいずれかの前の非パレットコード化ブロックが非０係数を含むかどうかを決定することと、
前記パレットコード化ブロックが、前記現在の量子化グループ中の前記第１のブロックであること、または前記現在の量子化グループ中の前記前の非パレットコード化ブロックのいずれも非０係数を含まないことに基づいて、前記予測されたＱＰ値から調整される前記パレットＱＰ値を決定することと、前記パレットＱＰ値が、ルーマおよびクロマパレットＱＰ値を含み、
前記パレットコード化ブロックが、前記現在の量子化グループ中の前記第１のブロックでないことと、前記現在の量子化グループ中の前記前の非パレットコード化ブロックのうちの少なくとも１つが、非ゼロ係数を含むこととに基づいて、前記現在の量子化グループ中の前記少なくとも１つの前の非パレットコード化ブロックのために前に決定された量子化グループＱＰ値に等しい前記パレットＱＰ値を決定することと、前記量子化グループＱＰ値が、ルーマおよびクロマＱＰ値を含み、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２３］
前記方法が、ビデオデコーダによってビデオデータを処理する方法を備え、前記１つまたは複数のプロセッサが、
受信されたビットストリームから、前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されるべきであるかどうかを示す第１のシンタックス要素を復号することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、前記受信されたビットストリームから、前記パレットコード化ブロックのパレットデルタＱＰ値を示す第２のシンタックス要素を復号すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うことと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、デルタＱＰ値が、前記現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、前記パレットコード化ブロックのデルタＱＰ値を復号することなしに前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして復号されることに基づいて、前記受信されたビットストリームから、前記エスケープピクセルの量子化された色値を復号すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を逆量子化することを行うことと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２４］
前記方法が、ビデオエンコーダによってビデオデータを処理する方法を備え、前記１つまたは複数のプロセッサが、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されるかどうかを示す第１のシンタックス要素をビットストリームにおいて符号化することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックをも含む現在の量子化グループ中に含まれるブロックのために前に決定されていなかった場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定すること、前記パレットＱＰ値と前記予測されたＱＰ値との間の差分としてパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットデルタＱＰ値を示す第２のシンタックス要素を前記ビットストリームにおいて符号化することを行うことと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、デルタＱＰ値が、前記現在の量子化グループ中に含まれるブロックのために前に決定されていた場合、前記パレットコード化ブロックのデルタＱＰ値を符号化することなしに前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとして符号化されることに基づいて、前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化すること、および前記ビットストリームにおいて前記エスケープピクセルの前記量子化された色値を符号化することを行うことと、
を行うように構成される、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２５］
前記ビデオ処理デバイスが、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
のうちの少なくとも１つを備える、Ｃ１３に記載のビデオ処理デバイス。
［Ｃ２６］
ビデオ処理デバイスであって、
１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定するための手段と、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定するための手段と、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定するための手段と、前記パレットＱＰ値が、予測されたＱＰ値から調整され、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレット中に含まれない前記エスケープピクセルの前記色値を決定すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化することを行うための手段と、
を備える、ビデオ処理デバイス。
［Ｃ２７］
前記パレットコード化ブロックの前記パレットＱＰ値を決定するための前記手段が、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整するための手段と、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うための手段と、
をさらに備える、Ｃ２６に記載のビデオ処理デバイス。
［Ｃ２８］
実行されたとき、１つまたは複数のプロセッサに、
１つまたは複数のそれぞれの色値を示す０個以上のパレットエントリを含むパレットコード化ブロックのためのパレットを決定することと、
前記パレットコード化ブロック内の少なくとも１つのピクセルが、前記パレット中に含まれない色値を有するエスケープピクセルとしてコーディングされるかどうかを決定することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレットコード化ブロックのパレット量子化パラメータ（ＱＰ）値を決定することと、前記パレットＱＰ値が、予測されたＱＰ値から調整され、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、前記パレット中に含まれない前記エスケープピクセルの前記色値を決定すること、および前記パレットＱＰ値に従って前記エスケープピクセルの前記色値を量子化することを行うことと、
を行わせる、ビデオデータを処理するための命令を記憶した、非一時的コンピュータ可読媒体。
［Ｃ２９］
前記命令が、前記１つまたは複数のプロセッサに、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記パレットコード化ブロックを含む現在の量子化グループのために前に決定されていた場合、前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記前に決定されたデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することと、
前記パレットコード化ブロック内の前記少なくとも１つのピクセルがエスケープピクセルとしてコーディングされることに基づいて、デルタＱＰ値が、前記現在の量子化グループのために前に決定されていなかった場合、前記パレットコード化ブロックのパレットデルタＱＰ値を決定すること、および前記パレットコード化ブロックの前記パレットＱＰ値を決定するために、前記パレットデルタＱＰ値に基づいて前記予測されたＱＰ値を調整することを行うことと、
を行わせる、Ｃ２８に記載の非一時的コンピュータ可読媒体。
【図１】
0006542268.tif 000018
【図２】
0006542268.tif 000019
【図３】
0006542268.tif 000020
【図４】
0006542268.tif 000021
【図５】
0006542268.tif 000022
【図６】
0006542268.tif 000023