[0001]本出願は、2014年10月6日に出願された米国仮出願第62/060,419号の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4,Part10,アドバンスト・ビデオコーディング(AVC:Advanced Video Coding)、ITU−T H.265、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などの、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶し得る。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)がビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロック(predictive block)をもたらす。
[0005]残差データ(residual data)は、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分(pixel differences)を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。
[0006]全般に、本開示は、現在のピクセルの対角方向に位置する(located diagonal to)ピクセルのパレットインデックスを現在のピクセルのパレットインデックスとして利用するための、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)のための技法に関する。たとえば、現在のピクセルがcopy aboveモードでパレットモードコーディングされる(palette mode coded)こと(たとえば、水平方向の走査順序(horizontal scan order)の場合は上のピクセル(above pixel)からインデックスを複製すること(copying)、または垂直方向の走査順序(vertical scan order)の場合は左のピクセルからインデックスを複製すること)が可能ではなく、現在のピクセルがcopy indexモードでパレットモードコーディングされる(水平方向の走査順序の場合は左もしくは右のピクセルからインデックスを複製する、または垂直方向の走査順序の場合は上もしくは下のピクセルからインデックスを複製する)べきではない場合、ビデオコーダは、対角方向のピクセルのパレットインデックスに基づいて、現在のモードのパレットインデックスを決定することができる。
[0007]いくつかの例では、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではない場合でも、現在のピクセルがcopy aboveモードでコーディングされるか、またはcopy indexモードでコーディングされるかを示すシンタックス要素を、ビデオエンコーダがシグナリングすることがあり、ビデオデコーダが受信することがある。この場合、現在のピクセルはcopy aboveモードでパレットモードコーディングされることは可能ではないが、現在のピクセルが対角方向のピクセルのパレットインデックスを使用してパレットモードコーディングされるべきである場合、ビデオエンコーダは、copy aboveモードが復号のために使用されるべきであることを示すシンタックス要素をシグナリングすることができる。この場合、ビデオデコーダは、現在のピクセルがcopy aboveモードを使用して復号されることが可能ではないと決定することができ、現在のピクセルがcopy aboveモードを使用して復号されるべきであることを示すシンタックス要素が実際には、現在のピクセルが対角方向のピクセルのパレットインデックスを使用して復号されるべきであることを示していると、決定することができる。
[0008]一例では、本開示は、ビデオデータをコーディングする方法を説明し、この方法は、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する(located perpendicular to)隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと決定することと、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することと、決定されたパレットインデックスに基づいて現在のピクセルをパレットモードコーディングすることとを備える。
[0009]一例では、本開示は、ビデオデータをコーディングするためのデバイスを説明し、このデバイスは、パレットのパレット値を記憶するように構成されるメモリと、ビデオコーダとを備える。ビデオコーダは、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと決定し、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定し、決定されたパレットインデックスに基づいて現在のピクセルをパレットモードコーディングするように構成される。
[0010]一例では、本開示は、ビデオデータをコーディングするためのデバイスを説明し、このデバイスは、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと決定するための手段と、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定するための手段と、決定されたパレットインデックスに基づいて現在のピクセルをパレットモードコーディングするための手段とを備える。
[0011]一例では、本開示は、実行されると、ビデオデータをコーディングするためのデバイスの1つまたは複数のプロセッサに、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと決定させ、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定させ、決定されたパレットインデックスに基づいて現在のピクセルをパレットモードコーディングさせる、命令を記憶した非一時的コンピュータ可読記憶媒体を説明する。
[0012]本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
[0013]本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
[0014]現在のピクセルが存在するライン(line)における走査順序が左から右であると仮定した、コーディングすべき現在のピクセルを示す概念図。
[0015]現在のピクセルの走査順序が左から右である、現在のピクセルのための対角方向の複製(diagonal copy)の例を示す概念図。
[0016]現在のピクセルのための対角方向の複製の別の例を示す概念図。
[0017]走査順序が右から左である場合の、現在のピクセルのための隣接位置(neighbor positions)を示す概念図。
[0018]本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。
[0019]本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。
[0020]パレットベースのビデオコーディングのためのパレットエントリーを決定する例を示す概念図。
[0021]ピクセルのブロックのためのパレットに対するインデックスを決定する例を示す概念図。
[0022]本開示で説明される1つまたは複数の例による、ビデオデータをコーディングする方法を示すフローチャート。
詳細な説明
[0023]本開示は、ビデオコーディングおよび圧縮のための技法について説明する。具体的には、本開示は、ビデオデータのパレットベースのコーディング(たとえば、パレットモードでブロックを予測またはコーディングすること)のための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的(continuous-tone)であり空間的に滑らかである自然な画像であると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
[0024]しかしながら、リモートデスクトップ、共同作業用ディスプレイおよびワイヤレスディスプレイのような適用例では、コンピュータで生成されたスクリーンコンテンツが、圧縮されるべき有力なコンテンツ(dominant content)であり得る。このタイプのコンテンツは、不連続な色調を有する傾向があり、鋭利なラインと高コントラストのオブジェクト境界とを特徴とする。連続的な色調および滑らかさという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法は、そのコンテンツを圧縮するための効率的な方法ではないことがある。
[0025]本開示は、パレットベースのコーディングを説明し、これは、スクリーンで生成されたコンテンツのコーディングに特に適していることがある。しかしながら、本開示で説明される技法は、スクリーンで生成されたコンテンツのコーディングに限定されるものと見なされるべきではない。スクリーンで生成されるコンテンツのコーディングは、単なる例として説明される。本開示で説明される技法は、他のタイプのビデオデータにも適していることがある。
[0026]パレットコーディングでは、ビデオデータのある特定の領域が、比較的少数の色を有すると仮定する。ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆる「パレット(palette)」をコーディング(符号化または復号)し得る。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。したがって、パレットモードでは、パレットは、ブロックサンプルのための予測子として、または最終的な再構築されたブロックサンプルとして使用され得る、色成分値を表すインデックスによって番号を付けられたエントリーを含み得る。パレット中の各エントリーは、使用されている具体的な実装形態に応じて、1つの色成分(たとえば、ルーマ値)、2つの色成分(たとえば、2つのクロマ値)、または3つの色成分(たとえば、RGB、YUVなど)を含み得る。
[0027]上記の例では、ビデオエンコーダは、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ(locate)、ピクセル値をパレットに関連付けるピクセルのためのインデックス値を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのインデックス値を取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。上記の例は、パレットベースのコーディングの全般的な説明を与えることが意図されている。
[0028]いくつかの例では、パレットの1つまたは複数のエントリーは、別のパレット(たとえば、コーディングの間に以前に使用されたパレット)から予測され得る。たとえば、パレットは、予測子パレット(predictor palette)から複製されるエントリーを含み得る。予測子パレットは、パレットモードを使用して以前にコーディングされたブロックからの、または他の再構築されたサンプルからのパレットエントリーを含み得る。予測子パレット中の各エントリーに対して、そのエントリーが現在のパレットに複製される(フラグ=1によって示される)かどうかを示すために、二進フラグが符号化されたビデオビットストリームに含まれ得る。それぞれのパレットエントリーのための一連の二進フラグは、二進パレット予測ベクトル(binary palette prediction vector)と呼ばれ得る。加えて、現在のパレットは、明示的にシグナリングされる新たなエントリーを含み得る。新たなエントリーの数もシグナリングされ得る。
[0029]いくつかの例では、ブロック中のサンプルは、水平方向のラスター走査順序を使用して処理され得る。しかしながら、垂直方向のラスター走査順序などの他の走査も適用可能である。走査パターンは、水平方向であっても垂直方向であっても、蛇状の横行走査(snake-like traverse scanning)であり得る。上記で言及されたように、パレットは、たとえば以前のブロックをコーディングするために使用されるパレットから予測される、予測されたパレットエントリーと、現在のブロックに対して固有であることがあり明示的にシグナリングされる新たなエントリーとを含むことがある。ビデオエンコーダおよびビデオデコーダは予測されるパレットエントリーと新たなパレットエントリーの数を知っていることがあり、それらの合計がブロックにおける総パレットサイズを示し得る。
[0030]いくつかの例では、パレットを用いてコーディングされたブロック中の各サンプルは、3つのモードのうちの1つに属し得る。たとえば、パレットモードCUの中のピクセルは、次のように詳述される3つのランモードを用いてコーディングされる。
・Escapeモード:このモードでは、サンプル値はパレットエントリーとしてパレット中に存在しない。量子化されたサンプル値が、すべての色成分に対して明示的にシグナリングされる。まず現在のピクセルがescapeモードにあることを示すために、たとえば切捨てられた二進符号(truncated binary code)を使用して所定のインデックス値がシグナリングされ、量子化されたピクセル値がそれに続く。最新の設計では、所定のインデックスは最大のパレットインデックスに1を足したものに等しい。
・Copy Aboveモード:このモードでは、現在のサンプルのためのパレットエントリーインデックスは、水平方向の走査についてはブロック中の現在のサンプルのすぐ上に位置するサンプルから複製され、垂直方向の走査についてはブロック中の現在のサンプルのすぐ左に位置するサンプルから複製される。いくつかの態様によれば、複製の長さ(たとえば、ランレングス(run length))を指定するシンタックス要素だけがビットストリームにおいてシグナリングされる。
・Copy Leftモード。このモードでは、パレットエントリーインデックスの値が、切捨てられた二進符号を使用して明示的にシグナリングされ、走査順序において後続するどれだけのピクセルがシグナリングされたピクセルと同じインデックスを共有するか(ランレングス)を指定する別のシンタックス要素が続く。いくつかの事例では、Copy Leftモードは、「Value」モードまたはCopy Indexモードとも呼ばれることがある。
[0031]本明細書で説明されるように、パレットエントリーインデックスは、パレットインデックスまたは単にインデックスと呼ばれ得る。これらの用語が、本開示の技法を説明するために交換可能に使用され得る。
[0032]また、上記は、copy aboveモードとcopy leftモード(copy indexモード)とを含むものとして、ランモードの例を説明する。たとえば、水平方向の左から右または右から左の走査のためのcopy aboveモードでは、現在のピクセルの上のピクセルのインデックスが、現在のピクセルのインデックスとして複製される。垂直方向の上から下または下から上の走査のためのcopy aboveモードでは、現在のピクセルの左のピクセルのインデックスが、現在のピクセルのインデックスとして複製される。この場合、「copy aboveモード」という語句は、すべての事例において上のピクセルのインデックスが複製されることを文字通りには意味しない。むしろ、水平方向の走査については、copy aboveモードにおいて、上のピクセルのインデックスが複製されるが、垂直方向の走査については、copy aboveモードであっても、現在のピクセルの左のピクセルのインデックスが複製される。
[0033]一般に、copy aboveモードは、走査順序に対して現在のピクセルの直交方向にある隣接ピクセルのパレットインデックスを使用する、パレットコーディングモードを意味する。たとえば、水平方向の走査では、現在のピクセルの上のピクセルのインデックスがcopy aboveモードにおいて使用され、現在のピクセルの上のピクセルは水平方向の走査に対して直交方向にある。垂直方向の走査では、現在のピクセルの左のピクセルのインデックスがcopy aboveモードにおいて使用され、現在のピクセルの左のピクセルは垂直方向の走査に対して直交方向にある。
[0034]水平方向の左から右への走査(horizontal left-to-right scan)のためのcopy indexモード(またはcopy leftモード)では、現在のピクセルの左のピクセルのインデックスが、現在のピクセルのインデックスとして複製される。しかし、水平方向の右から左への走査では、現在のピクセルの右のピクセルのインデックスが、copy indexモードのための現在のピクセルのインデックスとして複製される。垂直方向の上から下への走査(vertical top-to-bottom scan)では、現在のピクセルの上のピクセルのインデックスが、copy indexモードのための現在のピクセルのインデックスとして複製される。垂直方向の下から上への走査では、現在のピクセルの下のピクセルのインデックスが、copy indexモードのための現在のピクセルのインデックスとして複製される。したがって、copy aboveモードのように、copy leftモードまたはcopy indexモードは、どのピクセルからインデックスが複製されるかを示すための一般的な語句であり、copy leftモードという語句は、左のピクセルを使用することを文字通り要求するものと解釈されるべきではない。
[0035]一般に、copy leftモードまたはcopy indexモードは、走査順序において最後の近くにある隣接ピクセルからインデックスを複製することを指す。たとえば、copy leftモードまたはcopy indexモードでは、走査順序に平行な隣接ピクセルのインデックスが、現在のピクセルのインデックスを決定するために使用される。ある例として、水平方向の左から右への走査では、現在のピクセルの左のピクセルが、走査順序において最後の近くにある隣接ピクセルであり、左から右への走査順序に平行であり、現在のピクセルのためのインデックスを決定するために使用される。水平方向の右から左への走査では、現在のピクセルの右のピクセルが、走査順序において最後の近くにある隣接ピクセルであり、右から左への走査順序に平行であり、現在のピクセルのためのインデックスを決定するために使用される。垂直方向の上から下への走査では、現在のピクセルの上のピクセルが、走査順序において最後の近くにある隣接ピクセルであり、上から下への走査順序に平行であり、現在のピクセルのためのインデックスを決定するために使用される。垂直方向の下から上への走査では、現在のピクセルの下のピクセルが、走査順序において最後の近くにある隣接ピクセルであり、上から下への走査順序に平行であり、現在のピクセルのためのインデックスを決定するために使用される。
[0036]さらに、蛇状の横行走査では、水平方向の走査は最初の行では左から右への順序であることがあり、続いて次の行では右から左であり、その次の行では左から右の順序であり、その次の行では右から左の順序であり、以下同様であり得る。蛇状の横行走査では、垂直方向の走査は、最初の列では上から下への順序であり、続いて次の行では下から上であり、以下同様であり得る。したがって、水平方向の走査が左から右であるとき、copy indexモードは左のピクセルを使用するが、水平方向の走査が右から左であるときは、copy indexモードは右のピクセルを使用する。同様に、垂直方向の走査が上から下であるとき、copy indexモードは上部のピクセルを使用するが、垂直方向の走査が下から上であるときは、copy indexモードは下部のピクセルを使用する。これらの例において、copy indexモード(または場合によってはcopy leftモード)では、走査順序において最後の近くにある隣接ピクセルのパレットインデックスが、現在のピクセルのためのパレットインデックスとして複製される。
[0037]混乱を避けるために、本開示は、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するパレットコーディングモード(たとえば、copy aboveモード)を指すために、「第1のモード」という用語を使用する。たとえば、走査順序が水平方向である場合、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルは上のピクセルである(たとえば、上のピクセルは現在のピクセルに対して垂直方向にあり、水平方向の走査に対して直交方向にある)。走査順序が垂直方向である場合、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルは左のピクセルである(たとえば、左のピクセルは現在のピクセルに対して水平方向にあり、垂直方向の走査に対して直交方向にある)。
[0038]本開示は、走査順序に対して現在のピクセルに沿って位置する(located in line with)隣接ピクセル(たとえば、走査順序において最後の近くにある隣接ピクセル)のパレットインデックスを使用するパレットコーディングモードを指すために、「第2のモード」という用語を使用する。たとえば、走査順序が水平方向である場合、走査順序に対して現在のピクセルに沿って位置する隣接ピクセルは(水平方向に左から右であるかまたは右から左であるかに基づいて)左のピクセルまたは右のピクセルである(たとえば、左または右のピクセルは現在のピクセルに対して水平方向にあり、水平方向の走査に沿っている)。この場合、第2のモードはcopy leftモード(またはcopy rightモード)である。走査順序が垂直方向である場合、走査順序に対して現在のピクセルに沿って位置する隣接ピクセルは(垂直方向に上から下であるかまたは下から上であるかに基づいて)上のピクセルまたは下のピクセルである(たとえば、上または下のピクセルは現在のピクセルに対して垂直方向にあり、垂直方向の走査に沿っている)。
[0039]既存のパレットコーディング技法にはいくつかの問題がある。たとえば、現在のピクセルは、以下で説明される要因により、第1のモード(たとえば、copy aboveモード)を使用してパレットモードコーディングされることを制限されることがある。現在のピクセルは第1のモードを使用してパレットモードコーディングされる(たとえば、符号化または復号される)のを制限されることがあるが、それでもビデオエンコーダは、現在のピクセルが第1のモードを使用してパレットモードコーディングされるか第2のモード(たとえば、copy indexモード)を使用してパレットモードコーディングされるかを示すシンタックス要素をシグナリングすることがある。
[0040]このシンタックス要素のシグナリングは、現在のピクセルがパレットモードコーディングされることが可能ではないときには、冗長または不必要であることがあり、帯域幅と処理時間とを無駄にする。たとえば、ビデオデコーダは、現在のピクセルが第1のモードを使用してパレットモードコーディングされることが可能ではないと決定することが可能であり得るが、それでもビットストリームは、現在のピクセルが第1のモードを使用してコーディングされるかどうかを示すシンタックス要素を含み、ビデオデコーダは依然としてこのシンタックス要素を構文解析する(parse)必要がある。
[0041]本開示で説明される例示的な技法では、現在のピクセルが第1のモード(たとえば、copy aboveモード)を使用してパレットモードコーディングされることが可能ではないとき、現在のピクセルのパレットモードコーディングのモードを第2のモード(または場合によってはビデオエンコーダがパレットインデックスをビデオデコーダにシグナリングするインデックスモード)に制限する代わりに、本技法は異なるパレットコーディングモードを利用する。たとえば、現在のピクセルが現在のピクセルの対角方向に位置するピクセル(たとえば、現在のピクセルと同じ行または列の中にないピクセル)のパレットインデックスに基づいて、パレットモードコーディングされ得る。
[0042]いくつかの例では、ビデオエンコーダおよびビデオデコーダは、対角方向のピクセルのパレットインデックスが現在のピクセルのパレットインデックスを決定するために使用されるべきであることを示すために、第1のモードまたは第2のモードを示すために使用されるのと同じシンタックス要素を再使用することができる。たとえば、以下で説明される様々な例示的な基準に基づいて、ビデオエンコーダおよびビデオデコーダはともに、それぞれ、現在のピクセルが第1のモードを使用してパレットモード符号化またはパレットモード復号されることが可能ではないと決定することができる。この場合、ビデオエンコーダはそれでも、現在のピクセルが第1のモードまたは第2のモードを使用して符号化されるかどうかを示すシンタックス要素をシグナリングすることがあり、より具体的には、現在のピクセルが第1のモードを使用して符号化されることを示すことがある。しかしながら、ビデオデコーダはすでに、現在のピクセルが第1のモードを使用して復号されることが可能ではないことを決定しているので、ビデオデコーダは、現在のピクセルが第1のモードを使用して復号されるべきであることをシンタックス要素が示しても、現在のピクセルが対角方向のピクセルのパレットインデックスに基づいて復号されるべきであると決定することができる。
[0043]本開示で説明される技法では、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用する第1のモード(たとえば、copy aboveモード)でパレットモードコーディング(たとえば、符号化または復号)されることが可能ではなく、走査順序に対して現在のピクセルに沿って位置する隣接ピクセルのパレットインデックスを使用する第2のモード(たとえば、copy indexモードまたはcopy leftモード)でパレットモードコーディングされるべきではないと、決定することができる。現在のピクセルが第1のモードでパレットモードコーディングされることが可能ではなく、第2のモードでパレットモードコーディングされるべきではないと決定したことに応答して、ビデオコーダは、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる。
[0044]ビデオコーダは、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモードコーディングすることができる。たとえば、ビデオコーダは、現在のピクセルのための決定されたパレットインデックスに基づいてパレットのパレット値を決定し、決定されたパレット値に基づいて現在のピクセルをコーディングすることができる。
[0045]図1は、本開示の技法を利用できる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)におけるCUまたはPUなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモード(inter-predictive temporal coding modes)またはイントラ予測空間コーディングモード(intra-predictive spatial coding modes)を指し得る。
[0046]いくつかの例では、パレットベースのコーディング技法は、1つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、HEVCは、ITU−T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって開発された新しいビデオコーディング規格である。最近のHEVCテキスト仕様ドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v13.zip.から利用可能である、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)」、JCVC−L1003_v13、ITU−T SG16 WP 3およびISO/IEC JCT 1/SC 29/WG 11のJCT−VCの第12回会合、2013年1月14〜23日(“HEVC Draft 10”)に記載されている。HEVCの別のドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v14.zipから入手可能である。2015年4月付けのHEVC規格は、http://www.itu.int/rec/T−REC−H.265−201504−I/enから入手可能である。ITU−T H.265、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)は、「SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services−Coding of moving video」、High Efficiency Video Coding、ITU−T H.265、2013年4月にも記述されている。
[0047]図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス14はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0048]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ワイヤレス通信デバイス(たとえば、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ)、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載用コンピュータなどを含む、広範囲のデバイスを備え得る。
[0049]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化されたビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14に送信することができる。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などのワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などのパケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
[0050]別の例では、チャネル16は、ソースデバイス12によって生成された、符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
[0051]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、送信先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
[0052]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0053]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送(over-the-air television broadcasts)、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0054]図1に示されるビデオコーディングシステム10は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および/または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0055]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
[0056]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0057]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して、符号化されたビデオデータを受信することができる。ディスプレイデバイス32は、宛先デバイス14と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
[0058]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなどの、様々な適切な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶することができ、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェア内でそれらの命令を実行することができる。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれもが、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれることがある。
[0059]本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化のときに符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに起こり得るなど、ある時間の長さにわたって起こることがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0060]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上記で言及されたHEVC規格などの、ビデオ圧縮規格に従って動作する。基本的なHEVC規格に加えて、HEVCのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードが、HEVC規格の拡張のために、または次世代のビデオコーディング規格のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、他のビデオコーディング規格または将来の規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
[0061]たとえば、HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
[0062]HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCbおよびSCrと表記される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロであることがあり、ルーマサンプルのアレイしか含まないことがある。
[0063]ビデオエンコーダ20は、ピクチャの符号化された表現を生成するために、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0064]コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するように、CTUのコーディングツリーブロックに対して4分木区分(quad-tree partitioning)を再帰的に実行することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイと、CbサンプルアレイおよびCrサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの1つのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロックであり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの2つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックのために、予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0065]ビデオエンコーダ20は、PUの予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成することができる。
[0066]ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために単予測または双予測(uni-prediction or bi-prediction)を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV:motion vector)を有し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
[0067]ビデオエンコーダ20がCUの1つまたは複数のPUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成した後、ビデオエンコーダ20は、CUのルーマ残差ブロックを生成することができる。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つの中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ20は、CUのCb残差ブロックを生成することができる。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20は、CUのCr残差ブロックを生成することもできる。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0068]さらに、ビデオエンコーダ20は、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを、1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解するために、4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックと関連付けられ得る。TUと関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
[0069]ビデオエンコーダ20は、TUのルーマ変換ブロックに1回または複数回の変換を適用して、TUのルーマ係数ブロックを生成することができる。係数ブロックは変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUのCb係数ブロックを生成するために、TUのCb変換ブロックに1回または複数回の変換を適用し得る。ビデオエンコーダ20は、TUのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0070]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は一般に、変換係数を表すために使用されるデータの量を低減することを意図して変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後で、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリームに出力することができる。
[0071]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ(NAL:network abstraction layer)ユニットを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプ符号を示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプ符号は、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPは0ビットを含む。
[0072]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS:picture parameter set)のためのRBSPをカプセル化することができ、第2のタイプのNALユニットはコーディングされたスライスのためのRBSPをカプセル化することができ、第3のタイプのNALユニットはSEIのためのRBSPをカプセル化することができ、以下同様である。ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
[0073]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を復号するためにビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在のCUのPUの予測ブロックを決定するために、PUの動きベクトル(MV)を使用することができる。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ30は、現在のCUのPUの予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築することができる。ピクチャの各CUのためのコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築することができる。
[0074]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上記で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングすることができる。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
[0075]上記の例では、ビデオエンコーダ20は、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーを見つけ、ピクセル値をパレットに関連付けるピクセルのためのインデックス値を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのインデックス値を取得することができる。ビデオデコーダ30は、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
[0076]パレットモードコーディング技法を使用して、ピクチャの1つまたは複数のブロックを、ビデオエンコーダ20は符号化し、ビデオデコーダ30は復号することができる。しかしながら、ピクチャ中のあらゆる単一のブロックがパレットモードコーディング技法を使用して符号化/復号されることは必要ではない。ピクチャのいくつかのブロックは、インター予測モード、イントラ予測モード、またはイントラブロック複製モード(intra-block copy mode)を使用して符号化/復号され得る。すべてのブロックがパレットモードコーディングを使用して予測されることも可能であり得る。
[0077]いくつかの例では、ビデオエンコーダ20は、同じピクセル値(たとえば、同じパレットインデックス)を有する所与の走査順序において連続するピクセルの数を示す1つまたは複数のシンタックス要素を符号化し得る。ピクセル値の列(string)は、本明細書では「ラン(run)」と呼ばれることがある。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得し、パレットコーディング技法に従ったビデオコーディングの目的でそのデータを使用することができる。
[0078]上記で説明されたコーディングモードでは、値の「ラン」は一般に、一緒にコーディングされるピクセル値の列を指し得る。ランは一般に、ランに含まれ一緒にコーディングされる要素の数、たとえばランレングス(run length)に関連して説明され得る。説明を目的とする例では、所与の走査順序の2つの連続するピクセルが異なる値(たとえば、異なるパレットインデックス)を有する場合、ランレングスは0に等しい。所与の走査順序における2つの連続するピクセルが同じ値(たとえば、同じパレットインデックス)を有するが、その走査順序の3番目のピクセルが異なる値を有する場合、ランレングスは1に等しく、以下同様である。いくつかの例では、ランは同様の値のピクセル値を含み得る。たとえば、Indexモードにおけるランは、(上記で述べられたような)同じエスケープ値を有する値の列を示し得る。他の例では、上記で述べられたように、Copy from Aboveモードにおけるランレングスは、上側の隣接ピクセルと同じ値を共有するピクセル値の列を示し得る。この例では、コーディングされている位置の上のサンプル値が現在のサンプルと同じであれば、ラン内の値は異なることがある(たとえば、現在の行がインデックス値1 2 2 2 4を有し、現在の行の上の行がインデックス値1 2 2 2 4を有する場合、ランは4である)。
[0079]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、マップの1つまたは複数のエントリーに対してラインの複製(line copying)を実行することができる。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリーに対するピクセル値が、その特定のエントリーの上のラインの中のエントリーに等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリーの上のラインの中のエントリーに等しい、走査順序におけるインデックスの数を、ランとして示すことができる。この例では、ビデオエンコーダ20またはビデオデコーダ30は、規定された隣接するラインから、および、現在コーディングされているマップのラインに対する規定された数のエントリーから、インデックス値を複製することができる。
[0080]しかしながら、本開示で説明されるいくつかの例示的な技法では、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクセルのすぐ上のエントリーからではなく、対角方向の隣接ピクセルから現在のピクセルのためのインデックス値を複製することができる。対角方向の隣接ピクセルは、現在のピクセルと同じ行および列の中にないが現在のピクセルに隣接するピクセル(たとえば、上右のピクセル、上左のピクセル、左上のピクセル(これは上右のピクセルと同じである)、および左下のピクセル)を指す。
[0081]ビデオエンコーダ20およびビデオデコーダ30は、ランのために対角方向の隣接ピクセルからインデックス値を複製することができる。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、ランの現在のピクセルだけのために対角方向の隣接ピクセルからインデックス値を複製し、ラン中の他のピクセルのためにそれぞれの上部のピクセルからインデックス値を複製することができる。対角方向の隣接ピクセルのロケーション(location)は、走査順序(たとえば、水平方向または垂直方向の走査順序)、走査パターン(たとえば、蛇状の横行走査)、および/または走査方向(たとえば、左から右への走査、右から左への走査、上から下への走査、または下から上への走査)に基づき得る。いくつかの例では、現在のピクセルのためのパレットインデックス値は、インデックス値が水平方向の隣接ピクセルと異なるように、デフォルト値に基づき得る。
[0082]たとえば、ビデオエンコーダ20およびビデオデコーダ30は、パレットコーディングのための様々なモードを実行するように構成され得る。1つの例はcopy aboveモードである。copy aboveモードでは、パレットインデックスが使用されるピクセルは、水平方向の走査では現在のピクセルの上にあり、または垂直方向の走査では現在のピクセルの左にあり得るので、本開示はcopy aboveモードを指すために「第1のモード」という用語を使用する。たとえば、第1のモードでは、現在のピクセルのためのパレットインデックスは、走査順序に対して現在のピクセルの直交方向にある隣接ピクセルのパレットインデックスから複製される(たとえば、上のピクセルは現在のピクセルに対して垂直方向にあり、水平方向の走査順序に対して直交方向にあり、または左のピクセルは現在のピクセルに対して水平方向にあり、垂直方向の走査順序に対して直交方向にある)。
[0083]別の例は、パレットモードコーディングされている現在のピクセルを含む行の水平方向の走査に対するcopy leftモードまたはcopy rightモードである。別の例は、パレットモードコーディングされている現在のピクセルを含む列の垂直方向の走査に対するcopy aboveモードまたはcopy belowモードである。本開示では、水平方向の走査に対するcopy leftモードもしくはcopy rightモード、または垂直方向の走査に対するcopy aboveモードもしくはcopy belowモードのいずれかを指すために、「第2のモード」またはcopy indexモードという用語が使用される。たとえば、第2のモードでは、現在のピクセルのためのパレットインデックスは、走査順序に対して現在のピクセルに沿っている隣接ピクセルのパレットインデックスから複製される(たとえば、左もしくは右のピクセルは現在のピクセルに対して水平方向にあり、水平方向の走査順序に沿っており、または上もしくは下のピクセルは現在のピクセルに対して垂直方向にあり、垂直方向の走査順序に沿っている)。言い換えると、第2のモードでは、現在のピクセルのためのパレットインデックスは、走査順序において最後の近くにある隣接ピクセルのパレットインデックスから複製される。
[0084]いくつかの例では、現在のピクセルは、第1のモード(たとえば、copy aboveモード)においてパレットモードコーディングされることが可能ではないことがある。たとえば、様々な要因により、第1のモードでのパレットモードコーディングが現在のピクセルに対して利用不可能になることがある。
[0085]図2は、現在のピクセルが存在するラインにおける走査順序が水平方向に左から右であると仮定した、コーディングすべき現在のピクセルを示す概念図である。図2に示されるように、Xがコーディングすべき現在のピクセルであると仮定する。また、Xの走査順序が左から右であることが仮定される。現在のパレット設計では、ピクセルAのパレットインデックスがピクセルBのパレットインデックスに等しい場合(およびいくつかの場合には、しかしすべての場合に限定されず、それらはescapeモードにない)、ピクセルXのモードは「Copy Above」ではあり得ない(たとえば、第1のモードでパレットモードコーディングされることが可能ではない)。
[0086]その理由は、Xのモードが「Copy Above」である場合、「Copy Above」が「Copy Above」の後に来ないという規則により、ピクセルBは「Copy Left」モード(たとえば、copy indexモード)であるべきである(たとえば、そうでなければならない)からである。しかしながら、Xが「Copy Above」モードであるという仮定によって、XのインデックスはAに等しく、したがってBに等しい。したがって、XはピクセルBの「Copy Left」ランへと含められるべきである。
[0087]現在のパレット設計では、上記の事例が発生する場合、Xのモードが「Copy Above」ではない(すなわち、Xのモードが「Index Copy」である)ことが推測され得るとしても、ビデオエンコーダ20は、ビデオデコーダ30が受信するフラグをシグナリングし得る。たとえば、「Copy Above」モードであるか「Copy Leftモード」であるかを示すために、上記の事例でもフラグをシグナリングするビデオエンコーダ20が、「HEVC Screen Content Coding Draft Text 1」、JCTVC−R1005、Section 7.3.8.8、palette_mode[xC][yC])において記述されている。The JCTVC−R1005文書は、Joshi他による、ITU−T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on Video Coding(JCT−VC)、第18回会議、札幌、日本、2014年6月30日〜7月9日のためのものであり、http://phenix.int−evry.fr/jct/doc_end_user/current_document.php?id=9471から入手可能である。
[0088]上記で説明されたように、現在のピクセルの上の隣接ピクセルと、走査順序において現在のピクセルの最後の隣接ピクセルとの両方が、同じパレットインデックスを有する場合、現在のピクセルは、copy aboveモードでパレットモードコーディングされることを制約される。copy aboveモードに対するこの制約は、水平方向の走査順序のためのものであり、現在のピクセルは左から右に走査されるラインの中に存在する。水平方向の走査順序が右から左であれば、現在のピクセルの上の隣接ピクセルと、走査順序において現在のピクセルの最後の隣接ピクセルとの両方が、同じパレットインデックスを有する場合、現在のピクセルは、copy aboveモードでパレットモードコーディングされることを制約される。
[0089]垂直方向の走査順序では、現在のピクセルの左の隣接ピクセルと、走査順序において最後の隣接ピクセルとの両方が、同じパレットインデックスを有する場合、現在のピクセルは、copy aboveモードでパレットモードコーディングされることを制約される。copy aboveモードに対するこの制約は、上から下への垂直方向のライン走査順序(vertical line scan order)のためのものである。垂直方向のライン走査順序が下から上であれば、現在のピクセルの左の隣接ピクセルと、走査順序において最後の隣接ピクセルとの両方が、同じパレットインデックスを有する場合、現在のピクセルは、copy aboveモードでパレットモードコーディングされることを制約される。やはり、copy aboveモードは、走査順序に対して直交方向(例えば、水平方向の走査では上、垂直方向の走査では左)にある隣接ピクセルのパレットインデックスを複製することを指し、すべての事例において上のピクセルのパレットインデックスが複製されることを文字通り要求することに限定されるものと見なされるべきではない。
[0090]したがって、ビデオエンコーダ20およびビデオデコーダ30は、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセル(たとえば、水平方向の走査では上のピクセルまたは垂直方向の走査では左のピクセル)が、走査順序に対して現在のピクセルの最後の隣接ピクセルと同じパレットインデックスを有する場合、現在のピクセルは第1のモードでパレットモードコーディングされることが可能ではないと決定することができる。しかしながら、ビデオエンコーダ20はそれでも、現在のピクセルが第1のモード(たとえば、copy aboveモード)でパレットモードコーディングされるか第2のモード(たとえば、copy indexモード)でパレットモードコーディングされるかを示す、palette_mode[xC][yC]シンタックス要素をシグナリングすることがある。
[0091]現在のピクセルが第1のモードを使用して符号化されることが可能ではないとビデオエンコーダ20が決定するときでも、palette_mode[xC][yC]シンタックス要素をそのようにシグナリングすることは、冗長または不要であり得る。たとえば、palette_mode[xC][yC]シンタックス要素は、現在のピクセルが第1のモードを使用して符号化されるか第2のモードを使用して符号化されるかを示すが、第1のモードは利用不可能であるとすでに決定されている。
[0092]本開示は、ピクセルのためのパレットインデックスを決定するための例示的な技法を説明する。いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在のピクセルの対角方向に位置するピクセルのためのパレットインデックス値に基づいて現在のピクセルのためのパレットインデックス値を決定することができる(たとえば、対角方向のピクセルのためのパレットインデックス値が現在のピクセルのためのパレットインデックス値として複製される)。いくつかの例では、ビデオコーダは、デフォルト値に基づいて現在のピクセルのためのパレットインデックス値を決定することができ、デフォルト値は隣接ピクセルのパレットインデックス値に基づく。
[0093]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、対角方向のピクセルのパレットインデックスに基づいて現在のピクセルが符号化される、または復号されるべきであることを特定する(identify)ために、palette_mode[xC][yC]シンタックス要素を使用することができる。たとえば、palette_mode[xC][yC]がフラグ(たとえば、0または1)であり、0という値が、現在のピクセルが第1のモードを使用してパレットモード符号化される(たとえば、水平方向の走査では上のピクセルから複製し、または垂直方向の走査では左のピクセルから複製する)ことを示し、1という値が、現在のピクセルが走査順序において最後の近くにある隣接ピクセルから複製する第2のモード(たとえば、水平方向の左から右への走査ではcopy left、水平方向の右から左への走査ではcopy right、垂直方向の上から下への走査ではcopy above、または下から上への走査ではcopy below)を使用してパレットモード符号化されることを示すと、仮定する。また、現在のピクセルのためのパレットインデックスが対角方向のピクセルのパレットインデックスから決定されるべきであることをビデオエンコーダ20が決定したと、仮定する。
[0094]ビデオエンコーダ20とビデオデコーダ30の両方が、現在のピクセルがcopy aboveモードで符号化または復号されることが可能ではないと決定しても、上記の理由で、ビデオエンコーダ20は依然として、copy aboveモードであることを示すpalette_mode[xC][yC]シンタックス要素フラグの値をシグナリングすることがあり、ビデオデコーダ30は、palette_mode[xC][yC]シンタックス要素フラグをcopy aboveモードのインジケータとして構文解析することがある。この場合、現在のピクセルがcopy aboveモードにおいてパレットモードコーディングされることをpalette_mode[xC][yC]シンタックス要素フラグが示しても、ビデオデコーダ30は、現在のピクセルが実際には対角方向のピクセルのパレットインデックスを使用してパレットモード復号されるべきであると決定することがある。
[0095]この例では、palette_mode[xC][yC]シンタックス要素は、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないとき、冗長にはならない。むしろ、palette_mode[xC][yC]シンタックス要素は、現在のピクセルのためのパレットインデックスが対角方向のピクセルからのものであることを示す。
[0096]ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法などの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明されるように、エンコーダもしくはデコーダ、または組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースのコーディングを実行するように構成され得る。
[0097]本開示では、上記で説明されたように、パレットインデックスを予測するための新たな対角方向の予測方法が説明される。このモードは、すでに存在する「Copy Above」モード(たとえば、第1のモード)または「Copy Left」(Copy Indexとも呼ばれる)モード(たとえば、第2のモード)に加えて、選択またはシグナリングされ得る。加えて、または代替的に、対角方向の予測は、既存のピクセルモードのシグナリングが冗長であるいくつかの場合に使用され得る。
[0098]たとえば、上記の例はpalette_mode[xC][yC]シンタックス要素が冗長である場合にそれを再使用することを説明するが、本開示で説明される技法はそのようには限定されないことがある。いくつかの例では、palette_mode[xC][yC]シンタックス要素を再使用するのではなく、本技法は、現在のピクセルが対角方向のピクセルのパレットインデックスに基づいて復号されるべきであることを示すために、別個のシグナリングに依存することがある。
[0099]また、いくつかの事例では、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないというだけで、現在のピクセルが対角方向のピクセルのパレットインデックスに基づいてパレットモードコーディングされるべきであるとは限らない。たとえば、ビデオエンコーダ20およびビデオデコーダ30は各々、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと、それぞれ決定することがある。しかしながら、ビデオエンコーダ20は、現在のピクセルがインデックスモードでパレットモードコーディングされるべきである(たとえば、ビデオエンコーダ20が現在のピクセルのパレットインデックスをシグナリングする場合)こと、または、copy indexモード(たとえば、水平方向の走査ではcopy leftもしくはcopy right、または垂直方向の走査ではcopy aboveもしくはcopy below)でパレットモードコーディングされるべきであること、を決定することがある。したがって、いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではなく、copy indexモードでパレットモードコーディングされるべきではなく、indexモードでパレットモードコーディングされるべきではないと決定したことに応答して、対角方向のピクセルのパレットインデックスに基づいて現在のピクセルのためのパレットインデックスを決定することができる。
[0100]上記で説明されたように、ビデオエンコーダ20およびビデオデコーダ30は、対角方向のピクセルのパレットインデックスに基づいて、現在のピクセルをパレットモード符号化またはパレットモード復号する(たとえば、対角方向のピクセルのパレットインデックスに基づいて現在のピクセルのパレットインデックスを決定する)ことができる。以下では、本開示で説明される対角方向の複製技法のための例示的な実装形態(異なる実装形態、または互いに連携して使用され得る複数の実装形態)を説明する。
[0101]いくつかの例では、図3に関して以下で説明されるように、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランのためのパレットのパレットインデックスを決定することができる。いくつかの例では、図4に関して以下で説明されるように、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランのためのパレットのパレットインデックスを決定することができる。
[0102]図3は、現在のピクセルの走査順序が左から右である、現在のピクセルのための対角方向の複製の例を示す概念図である。図3に示される一例では、ピクセルXに対して、それの隣接ピクセルAおよびBがエスケープピクセルではなく、それらのパレットインデックスが等しく、Xが「Copy Above」モードにある場合、Xのインデックスは、それの上のピクセルAの代わりにそれの対角方向のピクセルDから複製される。図3は、対角方向の複製方法のそのような例を示し、Xの走査順序はB→X→G→H…である。たとえば、図3では、ビデオエンコーダ20またはビデオデコーダ30は、現在のピクセルのラン中のそれぞれのピクセルの対角方向に位置するそれぞれのピクセルに基づいて(たとえば、XについてはDから、GについてはEから、HについてはFから、以下同様)、現在のピクセルのラン中のピクセルのためのパレットインデックスを決定することができる。
[0103]図3は、走査順序が水平方向および左から右である場合を示す。この場合、対角方向のピクセルは現在のピクセルの右上である。しかしながら、対角方向のピクセルは必ずしも、現在のピクセルの右上のピクセルである必要はない。たとえば、図5に関してより詳細に説明されるように、右から左への水平方向の走査順序では、対角方向のピクセルは現在のピクセルの左上のピクセルである。
[0104]一般に、対角方向のピクセルは、現在のピクセルに隣接し(たとえば、隣接ピクセルと現在のピクセルとの間に、それらが隣接する角度において他のピクセルがない)、現在のピクセルと異なる列および行の中にあるピクセルであり得る。現在のピクセルの対角方向に位置するピクセルの例は、走査順序が水平方向に左から右であること基づく現在のピクセルの右上に位置する(located above-right)ピクセル、走査順序が水平方向に右から左であること基づく現在のピクセルの左上に位置する(located above-left)ピクセル、走査順序が垂直方向に下から上であること基づく左下部に位置する(located left-bottom)ピクセル、および、走査順序が垂直方向に上から下であること基づく左上部に位置する(located left-top)ピクセルを含む。
[0105]図4は現在のピクセルのための対角方向の複製の別の例を示す概念図である。図3のように常に複製する代わりに、ラン中の最初のピクセル(たとえば、最初のピクセルだけ)に対して対角方向から複製することを許可することが提案される。一例が図4に示される。代替的に、または加えて、ピクセルXのためのパレットインデックス値は、右から左下へと対角方向に沿って(図4に示されないインデックスBの上のロケーション)複製され得る。
[0106]図4では、ビデオエンコーダ20またはビデオデコーダ30は、現在のピクセルの対角方向に位置するピクセルに基づいて、ラン中の現在のピクセルだけのためのパレットインデックス値を決定することができ、ラン中のそれぞれの他のピクセルの対角方向に位置しないそれぞれのピクセルに基づいて(たとえば、DからX、DからG、EからH、以下同様)、ラン中の他のピクセルのためのパレットインデックス値を決定することができる。図4に示されるように、ビデオエンコーダ20およびビデオデコーダ30は、それぞれの上のピクセルに基づいて、現在のピクセルのラン中のそれぞれのピクセルのためのパレットインデックスを決定することができる。垂直方向の走査が使用された場合、現在のピクセルのラン中のそれぞれのピクセルのためのパレットインデックスは、それぞれの左のピクセルに基づく。
[0107]したがって、図3に示される例では、ビデオエンコーダ20またはビデオデコーダ30は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランのためのパレットのパレットインデックスを決定するように構成され得る。図4に示される例では、ビデオエンコーダ20またはビデオデコーダ30は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランのためのパレットのパレットインデックスを決定するように構成され得る。
[0108]いくつかの例では、ビデオエンコーダ20またはビデオデコーダ30は、インデックスDを参照することなく、ピクセルX(たとえば、現在のピクセル)のためのパレットインデックス値をデフォルトのパレットインデックス値に設定することができる。デフォルトのパレットインデックス値の一例は0である。いくつかの例では、ビデオエンコーダ20またはビデオデコーダ30は、デフォルト値がインデックスA(またはB)に等しくない場合、ピクセルXのためのパレットインデックス値をデフォルト値(0など)に等しく設定することができる。それ以外の場合、ビデオエンコーダ20またはビデオデコーダ30は、ピクセルXのためのパレットインデックス値を、たとえば以前のデフォルト値に(1などを)足したものまたは1を引いたものなどの、異なるデフォルト値に等しく設定することができる。一例として、ビデオエンコーダ20またはビデオデコーダ30は、インデックスBが0に等しい場合、ピクセルXのためのパレットインデックス値を1に等しく設定し、インデックスBが0に等しくない場合、ピクセルXのためのパレットインデックス値を0に等しく設定することができる。
[0109]いくつかの例では、ビデオエンコーダ20またはビデオデコーダ30は、インデックスA(またはB)が0に等しくない場合、ピクセルXのためのパレットインデックス値をインデックスA(またはB)から1を引いたものに設定することができる。それ以外の場合、ビデオエンコーダ20またはビデオデコーダ30は、ピクセルXのためのパレットインデックス値をインデックスA(またはB)に1を足したものに等しく設定することができ、またはその逆も同様であり、ここで、インデックス0の代わりに最大インデックスに対する確認(すなわち、インデックスに1を足したものが最大インデックスより大きくないことの確認)が行われる。一般に、インデックスXは、左および上からの近隣パレットインデックスの関数として設定され得る。
[0110]上記で説明されたように、対角方向は走査パターンに依存し得る。いくつかの例では、走査順序はPUまたはCUのすべての行または列に対して同じであり得るが、走査方向は行ごとまたは列ごとに異なり(different row-to-row or column-to-column)得る。
[0111]たとえば、ビデオエンコーダ20またはビデオデコーダ30は、最初の行では左から右の順序、続いて次の行では右から左などの、または最初の列では上から下の順序、続いて次の列では下から上の順序などの、何らかの蛇状の横行走査を利用することができる。そのような例では、対角方向のピクセルの方向は、行における走査順序または行インデックスに依存し得る。一例では、対角方向は、すべての奇数の行インデックスに対しては左から右下であり、偶数の行インデックスに対しては右から左下であってよく、またはその逆であってよい。
[0112]水平方向の走査に関して上記で説明された技法は、垂直方向の走査にも適用可能であり得る。たとえば、水平方向の走査順序について説明されたのと同様の方法が、垂直方向の走査、垂直方向の蛇状の走査などの、垂直の方向を向いた走査パターンに対して使用されることが可能であり、この場合、行が列によって置き換えられる。
[0113]水平方向の走査と垂直方向の走査の両方が可能であるので、本開示は、走査順序に対して相対的な、ピクセルのロケーションとパレットコーディングモードとを説明する。たとえば、上記で説明されたように、第1のモード(たとえば、copy aboveモード)は、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用する、パレットコーディングモードである。
[0114]第2のモード(たとえば、copy indexモード)は、走査順序に対して現在のピクセルに沿って位置する隣接ピクセル(たとえば、走査順序において最後の近くにある隣接ピクセル)のパレットインデックスを使用するパレットコーディングモードである。走査順序が水平方向の走査である場合、第2のモードでは、左または右のピクセルのパレットインデックスが複製される。走査順序が垂直方向の走査である場合、第2のモードでは、上または下のピクセルのパレットインデックスが複製される。
[0115]図5は、走査順序が右から左である場合の、現在のピクセルのための隣接位置を示す概念図である。X(現在のピクセル)の走査順序が右から左である場合、それ自体(ピクセルX)とそれの近隣との間の相対的な配置が図5に示されている。この場合にも、上記で説明された対角方向の複製方法が直接適用され得る。たとえば、図3と同様に、いくつかの例では、現在のピクセルのラン中のピクセルおよび現在のピクセルのためのパレットのパレットインデックスは、対角方向のピクセルのそれぞれのパレットインデックスである(ピクセルXのためのパレットインデックスはピクセルDからのものであり、ピクセルGのためのパレットインデックスはピクセルEからのものであり、ピクセルHのためのパレットインデックスはピクセルFからのものである)。いくつかの例では、図4と同様に、現在のピクセルのためのパレットのパレットインデックスは、対角方向のピクセルからのものであり、および現在のピクセルのラン中のピクセルに対して、パレットインデックスは、対角方向に位置しないピクセル(たとえば、上のピクセル)からのものである。たとえば、図5において破線矢印で示されるように、ピクセルXのためのパレットインデックスはピクセルDからのものであり、ピクセルGのためのパレットインデックスはピクセルDからのものであり、ピクセルHのためのパレットインデックスはピクセルEからのものである。
[0116]図3、図4、および図5の例などのいくつかの例では、現在のピクセルの対角方向に位置するピクセルに基づいてブロックの現在のピクセルのためのパレットインデックス値を決定するために、ビデオエンコーダ20およびビデオデコーダ30は、複数の隣接ピクセルのためのパレットインデックス値が同じである(たとえば、隣接ピクセルAおよびBがエスケープピクセルではなく、それらのインデックス値が等しい)という決定に基づいて、現在のピクセルの対角方向に位置するピクセルに基づいてブロックの現在のピクセルのためのパレットインデックス値を決定するように構成され得る。図3、図4、および図5の例などのいくつかの例では、現在のピクセルの対角方向に位置するピクセルに基づいてブロックの現在のピクセルのためのパレットインデックス値を決定するために、ビデオエンコーダ20およびビデオデコーダ30は、Copy Diagonalモードが有効にされているという決定、またはCopy Aboveモードが現在のピクセルに対して有効にされているという決定に基づいて、および現在のピクセルの対角方向に位置するピクセルに基づいてブロックの現在のピクセルのためのパレットインデックス値を決定するように構成され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、新しいcopy diagonalモードを利用し得る。別の例として、現在のピクセルがCopy Aboveモードにあるべきである場合、ビデオエンコーダ20およびビデオデコーダ30は、(たとえば、(一例として)AおよびBなどの複数の隣接ピクセルのためのインデックス値が同じであり、Copy Aboveモードが現在のピクセルXに対して有効にされている状況において)対角方向のピクセルからパレットインデックス値を複製することができる。
[0117]いくつかの例では、ビデオエンコーダ20が、その後に「Copy Above」が続く「Copy Above」でビットストリームを生成しない(すなわち、Bが「Copy Above」モードにある場合、上記の対角方向の複製方法は無効にされる)という、ビデオエンコーダ20に対する規範的な制約が課されることがある。そのような例では、対角方向の複製が利用可能ではないのでpalette_mode[xC][yC]の冗長なシグナリングはない可能性があり、したがって、ビデオエンコーダ20は、現在のピクセルが第1のモードでパレットモードコーディングされることが可能ではない場合、palette_mode[xC][yC]シンタックス要素をシグナリングすらしないことがある。
[0118]いくつかの場合、追加の制約により、ピクセルのパレットインデックスが対角方向のピクセルのパレットインデックス以外の何らかの値になることがある。上記の例は、現在のピクセルに適用されるものとして技法を説明した。混乱を避けるために、以下の説明は第2のピクセルに基づく。たとえば、これらの例ではピクセルXは第2のピクセルであると仮定する。
[0119]ビデオエンコーダ20またはビデオデコーダ30は、第2のピクセルが第1のモード(たとえば、copy aboveモード)でパレットモードコーディングされることが可能ではないと決定することができ、走査順序に対して第2のピクセルの直交方向に位置する隣接ピクセル、および走査順序に対して第2のピクセルに沿って位置する隣接ピクセル、と同じパレットインデックスを、第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有するとさらに決定することができる。たとえば、ピクセルXが第2のピクセルであり、ビデオエンコーダ20またはビデオデコーダ30がピクセルAのためのパレットインデックスがピクセルBのパレットインデックスに等しく、ピクセルBのパレットインデックスがピクセルDのパレットインデックスに等しいと決定することができることを仮定する。
[0120]この場合、第2のピクセルが第1のモードでパレットモードコーディングされることが可能ではなく、走査順序に対して第2のピクセルの直交方向に位置する隣接ピクセル、および走査順序に対して第2のピクセルに沿って位置する隣接ピクセルと同じパレットインデックスを、第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有すると決定したことに応答して、ビデオエンコーダ20またはビデオデコーダ30は、デフォルトのパレットインデックスに基づいて、第2のピクセルのためのパレットのパレットインデックスを決定することができる。ビデオエンコーダ20またはビデオデコーダ30は、第2のピクセルのための決定されたパレットインデックスに基づいてパレット値を決定し、決定されたパレット値に基づいて第2のピクセルをパレットモードコーディングすることができる。
[0121]たとえば、ピクセルインデックスA==インデックスB==インデックスDである場合、ビデオエンコーダ20またはビデオデコーダ30は、ピクセルDのインデックスの代わりに、対角方向の複製において事前に定められた値をXに割り当てる。ある例として、ピクセルインデックスA==B==Dである場合、Dのインデックスが0に等しい場合、ビデオエンコーダ20またはビデオデコーダ30は、対角方向の複製においてインデックス1をXに割り当てる。Dのインデックスが0に等しくない場合、ビデオエンコーダ20またはビデオデコーダ30は、対角方向の複製においてインデックス0をXに割り当てることができ、または、デフォルトのパレットインデックス値のための方法の1つまたは複数が上記で説明されたように使用される。
[0122]ピクセルのパレットインデックスを対角方向のピクセルのパレットインデックス以外の何らかの値にさせ得る追加の制約の別の例として、ビデオエンコーダ20またはビデオデコーダ30は、第2のピクセルが第1のモード(たとえば、copy aboveモード)でパレットモードコーディングされることが可能ではないと決定することがあり、第2のピクセルがブロック境界(たとえば、PUまたはCUの境界)に位置するとさらに決定することがある。この場合、第2のピクセルが第1のモードでパレットモードコーディングされることが可能ではなく、ブロック境界に位置すると決定したことに応答して、ビデオエンコーダ20またはビデオデコーダ30は、デフォルトのパレットインデックスに基づいて第2のピクセルのためのパレットのパレットインデックスを決定することができる。ビデオエンコーダ20またはビデオデコーダ30は、第2のピクセルのための決定されたパレットインデックスに基づいてパレット値を決定し、決定されたパレット値に基づいて第2のピクセルをパレットモードコーディングすることができる。
[0123]たとえば、ピクセルDがXと一緒に用いられる(collocate with)(すなわち、Xが最初のラインを除くラインの始点である(ラインインデックスは0から開始する))ときの境界条件では、対角方向の複製方法は無効にされることがあり、または、ビデオエンコーダ20もしくはビデオデコーダ30は、上記で説明されたデフォルトのパレットインデックス値のための方法の1つまたは複数を使用して、Bのインデックス値と異なる事前に定められた値を割り当てることができる。たとえば、ビデオエンコーダ20またはビデオデコーダ30は、ピクセルインデックスA==インデックスB==インデックスDである場合から第2のピクセルが境界のピクセルである場合まで、上記で説明された技法と同じ技法を利用することができる。
[0124]図6は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図6は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングの文脈において、ビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0125]ビデオエンコーダ20は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ20は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
[0126]ビデオエンコーダ20は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションのピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセルロケーションの少なくともいくつかをパレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ30によって使用され得る。
[0127]図6の例では、ビデオエンコーダ20は、予測処理ユニット100と、ビデオデータメモリ101と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構築ユニット112と、フィルタユニット114と、復号ピクチャバッファ(decoded picture buffer)116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニットと(図示されず)を含む。ビデオエンコーダ20はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
[0128]ビデオデータメモリ101は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ101内に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101および復号ピクチャバッファ116は、ダイナミックランダムアクセスメモリ(DRAM)(同期DRAM(SDRAM)を含む)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ101は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
[0129]ビデオエンコーダ20は、ビデオデータを受信することができる。ビデオエンコーダ20は、ビデオデータのピクチャのスライス内の各CTUを符号化することができる。CTUの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック(CTB)と、対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割することができる。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUと関連付けられたCTBを4つの等しいサイズのサブブロックに区画することができ、サブブロックの1つまたは複数を4つの等しいサイズのサブブロックに区画することができ、以下同様である。
[0130]ビデオエンコーダ20は、CUの符号化された表現(すなわち、コーディングされたCU)を生成するために、CTUのCUを符号化することができる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUと関連付けられたコーディングブロックを区分化することができる。したがって、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックと関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートすることができる。上記で示されたように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズを2N×2Nと仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合は2N×2NまたはN×NのPUサイズをサポートすることができ、インター予測の場合は2N×2N、2N×N、N×2N、N×N、または同様の対称のPUサイズをサポートすることができる。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測の場合は2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズのための非対称区分をサポートすることができる。
[0131]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによって、PUのための予測データを生成することができる。PUのための予測データは、PUの予測ブロックとPUの動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUに対して異なる動作を実行することができる。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120は、PUに対してインター予測を実行しない。したがって、Iモードで符号化されたブロックでは、予測されるブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。
[0132]PUがPスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUの参照領域について参照ピクチャのリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索することができる。PUの参照領域は、PUのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、PUの参照領域を含んでいる参照ピクチャのRefPicList0中での位置(position)を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、PUのコーディングブロックと、参照領域と関連付けられた参照ロケーション(reference location)との間の空間変位を示すMVを生成することができる。たとえば、MVは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として、参照インデックスとMVとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成することができる。
[0133]PUがBスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUについての単予測または双予測を実行することができる。PUについての単予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを探索することができる。動き推定ユニットは、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMVと、参照ピクチャがRefPicList0中にあるかRefPicList1中にあるかを示す1つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成することができる。
[0134]PUについての双方向インター予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0中の参照ピクチャを探索することができ、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照ロケーションとPUのサンプルブロックとの間の空間変位を示すMVを生成することができる。PUの動き情報は、PUの参照インデックスとMVとを含み得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成することができる。
[0135]本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースのコーディングを実行するように構成され得る。HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードの状況において(本開示全体で)本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
[0136]パレットベースの符号化ユニット122は、たとえば、パレットベースの符号化モードがたとえばCUまたはPUのために選択されるとき、パレットベースの符号化を実行することができる。たとえば、パレットベースの符号化ユニット122は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット122によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0137]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PU用の予測データを生成することができる。PUのための予測データは、PUの予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対してイントラ予測を実行し得る。
[0138]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、PUの予測データの複数のセットを生成するために、複数のイントラ予測モードを使用することができる。イントラ予測処理ユニット126は、PUの予測ブロックを生成するために、隣接PUのサンプルブロックからのサンプルを使用し得る。隣接PUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上(above and to the right)、左上(above and to the left)、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば33個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はPUと関連付けられた領域のサイズに依存し得る。
[0139]予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成された予測データ、またはPUのためにイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUのための予測データを選択することができる。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪み測定基準(rate/distortion metrics)に基づいて、CUのPUの予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
[0140]残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを生成することができる。たとえば、残差生成ユニット102は、残差ブロックの中の各サンプルが、CUのコーディングブロックの中のサンプルと、CUのPUの対応する選択された予測ブロックの中の対応するサンプルとの差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0141]変換処理ユニット104は、CUと関連付けられる残差ブロックをCUのTUと関連付けられる変換ブロックに区分するために、4分木区分を実行することができる。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックと関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差4分木(residual quad-tree)」(RQT)として知られる4分木構造は、領域の各々と関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
[0142]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUのための変換係数ブロックを生成し得る。変換処理ユニット104は、TUと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換(a directional transform)、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
[0143]量子化ユニット106は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の一部またはすべてと関連付けられたビット深度(bit depth)を低減し得る。たとえば、nビットの変換係数は量子化の間にmビットの変換係数へと切り捨てられてよく、ただし、nはmよりも大きい。量子化ユニット106は、CUと関連付けられた量子化パラメータ(QP:quantization parameter)値に基づいて、CUのTUと関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は、情報の喪失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも精度が低いことがある。
[0144]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックから残差ブロックを再構築するために、係数ブロックに逆量子化および逆変換を適用することができる。再構築ユニット112は、TUと関連付けられる再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算することができる。このようにCUの各TUのための変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築することができる。
[0145]フィルタユニット114は、CUと関連付けられたコーディングブロックの中のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング動作を実行し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構築されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用することができる。加えて、イントラ予測処理ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116中の再構築されたコーディングブロックを使用することができる。
[0146]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受け取ることができ、予測処理ユニット100からシンタックス要素を受け取ることができる。エントロピー符号化ユニット118は、このデータに対して1つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)演算、CABAC演算、変数−変数(V2V:variable-to-variable)レングスコーディング(length coding)演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロム符号化演算(Exponential-Golomb encoding operation)、または別のタイプのエントロピー符号化演算をそのデータに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームはCUのRQTを表すデータを含み得る。
[0147]本開示の態様によれば、パレットベースの符号化ユニット122は、ビデオを符号化するための本開示で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、パレットベースの符号化ユニット122は、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用する第1のモード(たとえば、copy aboveモード)でパレットモード符号化されることが可能ではないと、決定するように構成され得る。
[0148]走査順序が水平方向の走査である例では、パレットベースの符号化ユニット122は、現在のピクセルが、現在のピクセルの上のピクセルと、同じパレットインデックスを有する現在のピクセルに水平方向に隣接するピクセル(たとえば、ピクセルAおよびBはパレットの同じパレットインデックスを有する)とに基づいて、copy aboveモードでパレットモード符号化されることが可能ではないと、決定することができる。走査順序が垂直方向の走査である例では、パレットベースの符号化ユニット122は、現在のピクセルが、現在のピクセルの左のピクセルと、同じパレットインデックスを有する現在のピクセルに垂直方向に隣接するピクセルとに基づいて、copy aboveモードでパレットモード符号化されることが可能ではないと、決定することができる。
[0149]たとえば、ピクセルAおよびBがパレットの同じパレットインデックスを有する場合、AとBが同じインデックスを有するのでピクセルXがピクセルAと同じインデックスを有していればピクセルXがピクセルB上のランの一部であるから、ピクセルXはcopy aboveではあり得ない。したがって、いくつかの例では、ピクセルXのインデックスは、ピクセルAのインデックスとは異なるべきであり、copy aboveモードでパレットモード符号化されることが可能ではない。したがって、ピクセルAおよびBが同じインデックスを有するとき、パレットベースの符号化ユニット122は、ピクセルXがcopy aboveモードでパレットモード符号化されることが可能ではないと決定することができる。
[0150]現在のピクセルが第1のモード(たとえば、copy aboveモード)でパレットモード符号化されることが可能ではないと決定したことに応答して、パレットベースの符号化ユニット122は、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる(たとえば、ピクセルXのパレットインデックスはピクセルDのパレットインデックスから複製される)。加えて、パレットベースの符号化ユニット122は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。別の例として、パレットベースの符号化ユニット122は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置しない(たとえば、ラン中のピクセルの上または左の)ピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。
[0151]パレットベースの符号化ユニット122は、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモード符号化することができる。たとえば、パレットベースの符号化ユニット122は、現在のピクセルの決定されたパレットインデックスに基づいてパレットのパレット値を決定することができ、決定されたパレット値に基づいて現在のピクセルをパレットモード符号化することができる。加えて、いくつかの例では、現在のピクセルが第1のモードでパレットモード符号化されることが可能ではなくても、パレットベースの符号化ユニット122は依然として、ビデオエンコーダ20に、現在のピクセルが第1のモードでパレットモード符号化されることを示すシンタックス要素(たとえば、palette_mode[xC][yC])をシグナリングさせることがある。現在のピクセルが第1のモードで符号化または復号されることが可能ではないので、ビデオデコーダ30は対角方向のピクセルを特定するためにこの情報を使用する。
[0152]図7は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図7は、説明の目的で与えられており、本開示において広く例示され説明される技法に対する限定ではない。説明の目的で、本開示は、HEVCコーディングの文脈において、ビデオデコーダ30を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
[0153]ビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオデコーダ30は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUなどの、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ30は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリーと関連付ける情報を受信し、その情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
[0154]図7の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、ビデオデータメモリ151と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構築ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。ビデオデコーダ30はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成された、パレットベースの復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
[0155]ビデオデータメモリ151は、ビデオデコーダ30のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ151に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ(CPB:coded picture buffer)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ151および復号ピクチャバッファ162は、ダイナミックランダムアクセスメモリ(DRAM)(同期DRAM(SDRAM)を含む)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
[0156]コーディングされたピクチャのバッファ(CPB)は、ビットストリームの符号化されたビデオデータ(たとえば、NALユニット)を受け取り、記憶することができる。エントロピー復号ユニット150は、CPBから符号化されたビデオデータ(たとえば、NALユニット)を受け取り、NALユニットを構文解析してシンタックス要素を復号することができる。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0157]ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたPPSを識別するシンタックス要素を含み得る。
[0158]ビデオデコーダ30は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないCUに対して再構築動作を実行し得る。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構築動作を実行することができる。CUの各TUに対して再構築動作を実行することによって、ビデオデコーダ30はCUの残差ブロックを再構築することができる。
[0159]CUのTUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de−quantize)することができる。逆量子化ユニット154は、量子化の程度を決定するために、また同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定するために、TUのCUと関連付けられたQP値を使用することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、利用されるエントロピーコーディングの方法に依存し得る。
[0160]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、逆回転変換、逆方向変換(inverse directional transform)、または別の逆変換を、係数ブロックに適用することができる。
[0161]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、PUの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット166は、空間的に隣接するPUの予測ブロックに基づいて、PU用の予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成するために、イントラ予測モードを使用することができる。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定することができる。
[0162]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを構築することができる。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を抽出することができる。動き補償ユニット164は、PUの動き情報に基づいて、PUのための1つまたは複数の参照領域を決定することができる。動き補償ユニット164は、PUの1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0163]再構築ユニット158は、CUのTUと関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを、適宜使用して、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを再構築することができる。たとえば、再構築ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを再構築することができる。
[0164]フィルタユニット160は、デブロッキング動作を実行して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックと関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ30は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを、復号ピクチャバッファ162に記憶することができる。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示、のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。
[0165]本開示の様々な例によれば、ビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット165は、たとえば、パレットベースの復号モードがたとえばCUまたはPUのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット165は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリーと関連付ける情報を受信し、その情報に基づいてパレット中のエントリーと関連付けられたピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。様々な機能がパレットベースの復号ユニット165によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0166]パレットベースの復号ユニット165は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、予測処理ユニット152は、たとえば、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードなどの非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードのうちの1つを備え得るか、または単一のパレットベースのコーディングモードがあり得る。
[0167]本開示の態様によれば、パレットベースの復号ユニット165は、ビデオを復号するための本開示で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、パレットベースの復号ユニット165は、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用する第1のモード(たとえば、copy aboveモード)でパレットモード復号されることが可能ではないと、決定するように構成され得る。
[0168]走査順序が水平方向の走査である例では、パレットベースの復号ユニット165は、現在のピクセルが、現在のピクセルの上のピクセルと、同じパレットインデックスを有する現在のピクセルに水平方向に隣接するピクセル(たとえば、ピクセルAおよびBはパレットの同じパレットインデックスを有する)とに基づいて、copy aboveモードでパレットモード復号されることが可能ではないと、決定することができる。走査順序が垂直方向の走査である例では、パレットベースの復号ユニット165は、現在のピクセルが、現在のピクセルの左のピクセルと、同じパレットインデックスを有する現在のピクセルに垂直方向に隣接するピクセルとに基づいて、copy aboveモードでパレットモード復号されることが可能ではないと、決定することができる。
[0169]たとえば、ピクセルAおよびBがパレットの同じパレットインデックスを有する場合、AとBが同じインデックスを有するのでピクセルXがピクセルAと同じインデックスを有していればピクセルXがピクセルB上のランの一部であるから、ピクセルXはcopy aboveではあり得ない。したがって、いくつかの例では、ピクセルXのインデックスは、ピクセルAのインデックスとは異なるべきであり、copy aboveモードでパレットモード符号化されることが可能ではない。したがって、ピクセルAおよびBが同じインデックスを有するとき、パレットベースの復号ユニット165は、ピクセルXがcopy aboveモードでパレットモード復号されることが可能ではないと決定することができる。
[0170]現在のピクセルが第1のモード(たとえば、copy aboveモード)でパレットモード復号されることが可能ではないと決定したことに応答して、パレットベースの復号ユニット165は、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる(たとえば、ピクセルXのパレットインデックスはピクセルDのパレットインデックスから複製される)。加えて、パレットベースの復号ユニット165は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。別の例として、パレットベースの復号ユニット165は、現在のピクセルのランのそれぞれのピクセルの対角方向に位置しない(たとえば、ラン中のピクセルの上または左の)ピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。
[0171]パレットベースの復号ユニット165は、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモード復号することができる。たとえば、パレットベースの復号ユニット165は、現在のピクセルの決定されたパレットインデックスに基づいてパレットのパレット値を決定することができ、決定されたパレット値に基づいて現在のピクセルをパレットモード復号することができる。
[0172]加えて、いくつかの例では、現在のピクセルが第1のモードでパレットモード符号化されることが可能ではなくても、パレットベースの復号ユニット165は依然として、現在のピクセルが第1のモードでパレットモード復号されるべきであることを示すシンタックス要素(たとえば、palette_mode[xC][yC])をビデオエンコーダ20から受信することがある。この例では、パレットベースの復号ユニット165は、現在のピクセルが第1のモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、および、現在のピクセルが第1のモードでパレットモードコーディングされるべきであることを示すシンタックス要素を受信したことに応答して、現在のピクセルの対角方向に位置するピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる。
[0173]図8は、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図8の例は、第1のパレット184と関連付けられる第1のコーディングユニット(CU)180と、第2のパレット192と関連付けられる第2のCU188とを有するピクチャ178を含む。第1のCU180および第2のCU188は、パレットモード(PAL:palette mode)を使用してコーディングされる。いくつかの例では、第2のパレット192は第1のパレット184に基づき得る。ピクチャ178はまた、イントラ予測コーディングモードによりコーディングされるブロック196と、インター予測コーディングモードによりコーディングされるブロック200とを含む。
[0174]図8の技法は、ビデオエンコーダ20(図1および図6)とビデオデコーダ30(図1および図7)の状況において、説明を目的としてHEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを、理解されたい。
[0175]一般に、パレットは、現在コーディングされているCU、図8の例ではCU188、について支配的(dominant)である、および/またはそのCUを表現する、いくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むものとして示されている。いくつかの例では、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、CUの各々の色成分に対して別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレットと、CUのクロマ(U)成分のための別のパレットと、CUのクロマ(V)成分のためのさらに別のパレットとを符号化することができる。この例では、YパレットのエントリーはCUのピクセルのYの値を表すことができ、UパレットのエントリーはCUのピクセルのUの値を表すことができ、VパレットのエントリーはCUのピクセルのVの値を表すことができる。
[0176]他の例では、ビデオエンコーダ20は、CUのすべての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ20は、Yiと、Uiと、Viとを含む、三重の値(triple value)であるi番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184およびパレット192の表現は、一例にすぎず、限定することは意図されない。
[0177]図8の例では、第1のパレット184の各々は、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3をそれぞれ有する、3つのエントリー202〜206を含む。エントリー202〜206は、ピクセル値A、ピクセル値B、およびピクセル値Cをそれぞれ含むピクセル値に、インデックス値を関連付ける。本明細書で説明されるように、第1のCU180の実際のピクセル値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、インデックス1〜3を使用してブロックのピクセルをコーディングするために、パレットベースのコーディングを使用することができる。すなわち、第1のCU180の各ピクセル位置に対して、ビデオエンコーダ20はピクセルのインデックス値を符号化することができ、インデックス値は、第1のパレット184の1つまたは複数の中のピクセル値と関連付けられる。ビデオデコーダ30は、ビットストリームからインデックス値を取得し、インデックス値と第1のパレット184の1つまたは複数とを使用してピクセル値を再構築することができる。したがって、第1のパレット184は、パレットベースの復号におけるビデオデコーダ30による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ20によって送信される。
[0178]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定することができる。しかしながら、本開示で説明される技法はそのように限定されず、第2のパレット192は第1のパレット184を伴わずに決定され得る。第2のパレット192が第1のパレット184に基づいて決定される例では、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレットが、この例では第1のパレット184が、1つまたは複数のブロックから決定される、その1つまたは複数のブロックを位置特定する(locate)ことができる。いくつかの例では、図8に示される例のように、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188のための予測パレットを決定するとき、左の隣接CU(第1のCU180)などの、前にコーディングされたCUを位置特定し得る。
[0179]図8の例では、第2のパレット192は、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3をそれぞれ有する、3つのエントリー208〜212を含む。エントリー208、210、212は、インデックス値をそれぞれ、ピクセル値A、ピクセル値B、およびピクセル値Dを含むピクセル値に関連付ける。この例では、ビデオエンコーダ20は、第1のパレット184のどのエントリーが第2のパレット192に含まれるかを示す1つまたは複数のシンタックス要素をコーディングし得る。図8の例では、1つまたは複数のシンタックス要素は、ベクトル216として示される。ベクトル216は、いくつかの関連するビン(またはビット)を有し、各ビンは、そのビンと関連付けられたパレット予測子が現在のパレットのエントリーを予測するために使用されるかどうかを示す。たとえば、ベクトル216は、第1のパレット184の最初の2つのエントリー(202および204)が、第2のパレット192中に含まれる(ベクトル216中の「1」の値)一方で、第1のパレット184の第3のエントリーが、第2のパレット192中に含まれない(ベクトル216中の「0」の値)ことを示す。図8の例では、ベクトルは、ブールベクトル(Boolean vector)である。
[0180]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレット予測を実行するとき、(パレット予測子テーブルとも呼ばれ得る)パレット予測子リストを決定することができる。パレット予測子リストは、現在のブロックをコーディングするためのパレットの1つまたは複数のエントリーを予測するために使用される1つまたは複数の隣接ブロックのパレットからのエントリーを含み得る。ビデオエンコーダ20およびビデオデコーダ30は、同じ方式でこのリストを構築し得る。ビデオエンコーダ20およびビデオデコーダ30は、パレット予測子リストのどのエントリーが現在のブロックをコーディングするためのパレットに含まれるべきかを示すために、データ(ベクトル216など)をコーディングし得る。
[0181]図9は、本開示の技法に従った、ピクセルのブロックのためのパレットに対するインデックスを決定する例を示す概念図である。たとえば、図9は、インデックス値と関連付けられるピクセルのそれぞれの位置をパレット244のエントリーに関連付ける、インデックス値(値1、2、および3)のマップ240を含む。
[0182]マップ240は、各ピクセル位置に対するインデックス値を含むものとして図9の例において示されるが、他の例では、すべてのピクセル位置が、ピクセル値をパレット244のエントリーに関連付けるインデックス値と関連付けられ得るとは限らないことを理解されたい。すなわち、上記で述べられたように、いくつかの例では、ビデオエンコーダ20は、ピクセル値がパレット244に含まれない場合、マップ240の中のある位置に対する実際のピクセル値(またはそれの量子化されたバージョン)の指示を符号化することができる(および、ビデオデコーダ30は、符号化されたビットストリームからその指示を取得することができる)。
[0183]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値と関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i,j)のエントリーがCUの(i,j)の位置に対応すると仮定する。ビデオエンコーダ20は、関連付けられるインデックス値をエントリーが有するかどうかを示す、マップの各エントリー(すなわち、各ピクセル位置)のための1つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、CU中の(i,j)のロケーションにおけるピクセル値がパレット244の中の値の1つであることを示すように、1という値を有するフラグを符号化することができる。
[0184]そのような例では、ビデオエンコーダ20はまた、パレット中のその対応するピクセル値を示すために、およびビデオデコーダがそのピクセル値を再構築することを可能にするために、パレットインデックス(値1〜3として図9の例では示される)を符号化することができる。パレット244が単一のエントリーと、関連付けられるピクセル値とを含む例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ20は、CU中の(i,j)のロケーションにおけるピクセル値がパレット244の中の値の1つではないことを示すように、0という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ20はまた、ピクセル値を再構築する際にビデオデコーダ30によって使用するために、ピクセル値の指示を符号化することができる。たとえば、ビデオエンコーダ20はピクセル値を明示的にコーディングし得る。いくつかの例では、ピクセル値は損失の多い方式(lossy manner)でコーディングされ得る。
[0185]CUの1つの位置におけるピクセルの値は、CUの他の位置における1つまたは複数の他のピクセルの値の指示を提供することができる。たとえば、CUの隣接ピクセル位置が同じピクセル値を有すること、または、(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る、損失の多いコーディングの場合において)CUの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
[0186]上記で述べられたように、ランは、Copy AboveまたはCopy Leftモードとともに使用され得る。説明を目的とする例では、マップ240の行264と268とを考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という3個のインデックス値と、「2」という2個のインデックス値と、「3」という3個のインデックス値とを含む。行268は、「1」という5個のインデックス値と、「3」という3個のインデックス値とを含む。この例では、ビデオエンコーダ20は、行268のためのデータを符号化するとき(たとえば、Copy Aboveモード)に、その後にランが続く行264の特定のエントリーを特定することができる。たとえば、ビデオエンコーダ20は、行268の第1番目の位置(行268の一番左の位置)が行264の第1番目の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向における2つの連続するエントリーの次のランが行264の第1番目の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。
[0187]しかしながら、本開示で説明されるように、ビデオエンコーダ20およびビデオデコーダ30は、上部のピクセルのためのパレットインデックス値を使用することに限定されないことがあり、代わりに、対角方向のピクセル(すなわち、現在のピクセルから対角方向に位置するピクセル)のパレットインデックス値を使用することがある。対角方向のピクセルは、走査順序または走査パターンなどの様々な要因に基づき得る。いくつかの例では、対角方向のピクセルが選択されるべきであるかどうかは、(水平方向の左から右への走査を仮定すると)上部のピクセルおよび左のピクセルなどの前のピクセルのパレットインデックス値に基づき得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットインデックス値のためのデフォルト値を利用することができる。
[0188]行264の第1番目の位置を示す1つまたは複数のシンタックス要素と、(上記で述べられた)2つのエントリーのランとを符号化した後で、ビデオエンコーダ20は、(左から右に)ライン268の中の第4番目の位置および第5番目の位置に対して、第4番目の位置に対して1という値を示す1つまたは複数のシンタックス要素と、1というランを示す1つまたは複数のシンタックス要素とを符号化することができる(たとえば、Copy Leftモード)。したがって、ビデオエンコーダ20は、別のラインを参照することなくこれらの2つの位置を符号化する。いくつかの例では、Copy Leftモードは、「Value」モードまたはCopy Indexモードとも呼ばれることがある。
[0189]ビデオエンコーダ20は次いで、上の行264に対する、行268の中の3というインデックス値を有する第1番目の位置を符号化することができる(たとえば、上の行264からの複製と、同じインデックス値を有する走査順序における連続する位置のランとを示す)。したがって、ビデオエンコーダ20は、たとえばランを使用してラインのピクセルまたはインデックス値をラインの他の値に対してコーディングすること、ラインのピクセルまたはインデックス値を別のライン(または列)の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。ビデオエンコーダ20は、いくつかの例では、この選択を行うために、レート/歪みの最適化を実行することができる。
[0190]ビデオデコーダ30は、上記で説明されたシンタックス要素を受け取り、行268を再構築することができる。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置に対する関連するインデックス値を複製する際に元となる、隣接する行の中の特定のロケーションを示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序における連続する位置の数を示すデータを取得することができる。水平方向の走査順序に関して説明されるが、本開示の技法はまた、垂直方向または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)の走査方向などの、別の走査方向に適用され得る。
[0191]本開示のいくつかの態様は、説明を目的に、開発中のHEVC規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
[0192]上記で説明された技法は、その両方が一般にビデオコーダと呼ばれることがある、ビデオエンコーダ20(図1および図6)および/またはビデオデコーダ30(図1および図7)によって実行され得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
[0193]図10は、本開示で説明される1つまたは複数の例による、ビデオデータをコーディングする方法を示すフローチャートである。ビデオエンコーダ20およびビデオデコーダ30は、図10に示される例を実行するように構成され得る。したがって、図10に示される例は、現在のピクセルをパレットモードコーディング(たとえば、パレットモード符号化またはパレットモード復号)するビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)に関して説明される。
[0194]ビデオコーダは、ビデオデータの現在のピクセルが、走査順序に対して現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと、決定するように構成され得る(300)。たとえば、左から右への水平方向の走査では、現在のピクセルの上のピクセルおよび現在のピクセルの左のピクセルが同じインデックスを有する場合、現在のピクセルが上のピクセルと同じインデックスを有するとすれば、現在のピクセルは左のピクセルのランの中にあるであろう。現在のピクセルが左のピクセルのランではない場合、現在のピクセルのパレットインデックスが上のピクセルのパレットインデックスと異なることを意味する。したがって、この場合、ビデオコーダは、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定することができる。
[0195]走査順序が水平方向の走査である例では、ビデオコーダは、現在のピクセルの上のピクセルと、同じパレットインデックスを有する現在のピクセルに水平方向に隣接するピクセル(たとえば、ピクセルAおよびBはパレットの同じパレットインデックスを有する)とに基づいて、現在のピクセルが、copy aboveモードでパレットモード復号されることが可能ではないと、決定することができる。走査順序が垂直方向の走査である例では、ビデオコーダは、現在のピクセルの左のピクセルと、同じパレットインデックスを有する現在のピクセルに垂直方向に隣接するピクセルとに基づいて、現在のピクセルが、copy aboveモードでパレットモードコーディングされることが可能ではないと、決定することができる。
[0196]現在のピクセルがcopy aboveモードでパレットモード復号されることが可能ではないと決定したことに応答して、ビデオコーダは、現在のピクセルの対角方向に位置するビデオデータのピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる(たとえば、ピクセルXのパレットインデックスはピクセルDのパレットインデックスから複製される)(302)。上記で説明されたように、対角方向のピクセルは隣接ピクセルであり(たとえば、対角方向のピクセルと現在のピクセルとの間に一列に並ぶピクセル(pixel inline between)はない)、対角方向のピクセルは現在のピクセルとは異なる行および列の中にある。
[0197]走査が水平方向の左から右への走査である場合、対角方向のピクセルは、現在のピクセルに対して1ピクセル位置だけ上にあり、1ピクセル位置だけ右にある。走査が水平方向の右から左への走査である場合、対角方向のピクセルは、現在のピクセルに対して1ピクセル位置だけ上にあり1ピクセル位置だけ左にある。走査が垂直方向の上から下への走査である場合、対角方向のピクセルは、現在のピクセルに対して1ピクセル位置だけ左にあり1ピクセル位置だけ上部にある。走査が垂直方向の下から上への走査である場合、対角方向のピクセルは、現在のピクセルに対して1ピクセル位置だけ左にあり1ピクセル位置だけ下部にある。
[0198]加えて、ビデオコーダは、現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。別の例として、ビデオコーダは、現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセル(たとえば、ラン中のピクセルの上または左)のそれぞれのパレットインデックスに基づいて、現在のピクセルのピクセルのランからパレットのパレットインデックスを決定することができる。
[0199]ビデオコーダは、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモードコーディングすることができる(304)。たとえば、ビデオコーダは、現在のピクセルの決定されたパレットインデックスに基づいてパレットのパレット値を決定することができ、決定されたパレット値に基づいて現在のピクセルをパレットモードコーディングすることができる。
[0200]ビデオコーダがビデオデコーダ30である例では、ビデオデコーダ30は、現在のピクセルがcopy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素を受信するように構成され得る。また、現在のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、および、現在のピクセルがcopy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素を受信したことに応答して、ビデオデコーダ30は、現在のピクセルの対角方向に位置するピクセルのためのパレットインデックスに基づいて、現在のピクセルのためのパレットのパレットインデックスを決定することができる。ビデオデコーダ30は、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモード復号することができる。
[0201]ビデオコーダがビデオエンコーダ20である例では、ビデオエンコーダ20は、現在のピクセルがcopy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素をシグナリングする。ビデオエンコーダ20は、決定されたパレットインデックスに基づいて、現在のピクセルをパレットモード符号化することができる。
[0202]上記は、現在のピクセルのパレットインデックスが対角方向のピクセルのパレットインデックスに基づく場合を説明する。しかしながら、いくつかの場合、何らかの追加の制約があるときには、ピクセルのパレットインデックスは対角方向のピクセルに基づかないことがある。
[0203]混乱を避けるために、上記の例は現在のピクセルに関して説明され、以下の例は第2のピクセルに関して説明される。たとえば、ビデオコーダは、第2のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定し、走査順序に対して第2のピクセルの直交方向に位置する隣接ピクセル、および走査順序に対して第2のピクセルに沿って位置する隣接ピクセルと同じパレットインデックスを、第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有すると決定することができる。
[0204]この例では、第2のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではなく、走査順序に対して第2のピクセルの直交方向に位置する隣接ピクセル、および走査順序に対して第2のピクセルに沿って位置する隣接ピクセルと同じパレットインデックスを、第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有すると決定したことに応答して、ビデオコーダは、デフォルトのパレットインデックス(たとえば、ビデオエンコーダ20およびビデオデコーダ30によって記憶されている事前に定められたパレットインデックス値)に基づいて、第2のピクセルのためのパレットのパレットインデックスを決定することができる。ビデオコーダは、第2のピクセルのための決定されたパレットインデックスに基づいてパレット値を決定し、決定されたパレット値に基づいて第2のピクセルをパレットモードコーディングすることができる。
[0205]別の例として、ビデオコーダは、第2のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではないと決定し、第2のピクセルがブロック境界に位置すると決定することができる。この例では、第2のピクセルがcopy aboveモードでパレットモードコーディングされることが可能ではなく、ブロック境界に位置すると決定したことに応答して、ビデオコーダは、デフォルトのパレットインデックスに基づいて第2のピクセルのためのパレットのパレットインデックスを決定し、第2のピクセルのための決定されたパレットインデックスに基づいてパレット値を決定し、決定されたパレット値に基づいて第2のピクセルをパレットモードコーディングすることができる。
[0206]本明細書で説明された技法のすべてが、個々にまたは組合せで使用され得ることを理解されたい。本開示は、ブロックサイズ、パレットサイズ、スライスタイプなどの、いくつかの要因に応じて変化し得るいくつかのシグナリング方法を含む。シンタックス要素をシグナリングまたは推測することにおけるそのような変化は、エンコーダおよびデコーダに先験的に知られ得るか、またはタイルレベルで(at a tile level)もしくは他の場所で、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ中で明示的にシグナリングされ得る。
[0207]例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なる順序で実行されてよく、全体的に追加され、統合され、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを用いて、連続的にではなく同時に実行され得る。加えて、本開示の特定の態様は、明快にするために、単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技術は、ビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
[0208]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
[0209]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって処理され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0210]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0211]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
[0212]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々なコンポーネント、モジュール、またはユニットが説明されたが、それらは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
[0213]様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。
[0213]様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、
前記ビデオデータの現在のピクセルが、走査順序に対して前記現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと、決定することと、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、前記現在のピクセルの対角方向に位置する前記ビデオデータのピクセルのためのパレットインデックスに基づいて、前記現在のピクセルのためのパレットのパレットインデックスを決定することと、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモードコーディングすることと
を備える、方法。
[C2]
前記走査順序が水平方向の走査を備え、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することが、前記現在のピクセルの上のピクセルと、同じパレットインデックスを有する前記現在のピクセルに水平方向に隣接するピクセルとに基づいて、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することを備える、C1に記載の方法。
[C3]
前記走査順序が垂直方向の走査を備え、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することが、前記現在のピクセルの左のピクセルと、同じパレットインデックスを有する前記現在のピクセルに垂直方向に隣接するピクセルとに基づいて、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することを備える、C1に記載の方法。
[C4]
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定することをさらに備える、C1に記載の方法。
[C5]
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定することをさらに備える、C1に記載の方法。
[C6]
前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が水平方向に左から右であることに基づいて前記現在のピクセルの右上に位置するピクセルを備え、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が水平方向に右から左であることに基づいて前記現在のピクセルの左上に位置するピクセルを備え、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が垂直方向に下から上であることに基づいて左下部に位置するピクセルを備え、または、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が垂直方向に上から下であることに基づいて左上部に位置するピクセルを備える、C1に記載の方法。
[C7]
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素を受信することをさらに備え、
前記現在のピクセルの対角方向に位置する前記ピクセルのための前記パレットインデックスに基づいて前記現在のピクセルのための前記パレットの前記パレットインデックスを決定することが、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、および、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされるべきであることを示す前記シンタックス要素を受信したことに応答して、前記現在のピクセルの対角方向に位置する前記ピクセルのための前記パレットインデックスに基づいて、前記現在のピクセルのための前記パレットの前記パレットインデックスを決定することを備え、
前記現在のピクセルをパレットモードコーディングすることが、前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモード復号することを備える、C1に記載の方法。
[C8]
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることを示すシンタックス要素をシグナリングすることをさらに備え、
前記現在のピクセルをパレットモードコーディングすることが、前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモード符号化することを備える、C1に記載の方法。
[C9]
前記現在のピクセルが第1のピクセルを備え、前記方法は、
第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することと、
前記走査順序に対して前記第2のピクセルの直交方向に位置する隣接ピクセル、および前記走査順序に対して前記第2のピクセルに沿って位置する隣接ピクセルと同じパレットインデックスを、前記第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有すると決定することと、
前記第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと、および、前記走査順序に対して前記第2のピクセルの直交方向に位置する前記隣接ピクセル、および前記走査順序に対して前記第2のピクセルに沿って位置する前記隣接ピクセル、と同じパレットインデックスを、前記第2のピクセルの対角方向に位置する前記ピクセルの前記パレットインデックスが有すると、決定したことに応答して、デフォルトのパレットインデックスに基づいて、前記第2のピクセルのための前記パレットのパレットインデックスを決定することと、
前記第2のピクセルのための前記決定されたパレットインデックスに基づいてパレット値を決定することと、
前記決定されたパレット値に基づいて前記第2のピクセルをパレットモードコーディングすることと
をさらに備える、C1に記載の方法。
[C10]
前記現在のピクセルが第1のピクセルを備え、前記方法は、
第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定することと、
前記第2のピクセルがブロック境界に位置すると決定することと、
前記第2のピクセルが、前記copy aboveモードでパレットモードコーディングされることが可能ではなく、前記ブロック境界に位置すると決定したことに応答して、デフォルトのパレットインデックスに基づいて前記第2のピクセルのための前記パレットのパレットインデックスを決定することと、
前記第2のピクセルのための前記決定されたパレットインデックスに基づいてパレット値を決定することと、
前記決定されたパレット値に基づいて前記第2のピクセルをパレットモードコーディングすることと
をさらに備える、C1に記載の方法。
[C11]
前記現在のピクセルのための前記決定されたパレットインデックスに基づいて前記パレットのパレット値を決定することをさらに備え、
前記現在のピクセルをパレットモードコーディングすることが、前記決定されたパレット値に基づいて前記現在のピクセルをパレットモードコーディングすることを備える、C1に記載の方法。
[C12]
ビデオデータをコーディングするためのデバイスであって、
パレットのパレット値を記憶するように構成されるメモリと、
ビデオコーダとを備え、前記ビデオコーダが、
前記ビデオデータの現在のピクセルが、走査順序に対して前記現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと、決定し、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、前記現在のピクセルの対角方向に位置する前記ビデオデータのピクセルのためのパレットインデックスに基づいて、前記現在のピクセルのための前記パレットのパレットインデックスを決定し、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモードコーディングする
ように構成される、デバイス。
[C13]
前記走査順序が水平方向の走査を備え、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定するために、前記ビデオコーダが、前記現在のピクセルの上のピクセルと、同じパレットインデックスを有する前記現在のピクセルに水平方向に隣接するピクセルとに基づいて、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定するように構成される、C12に記載のデバイス。
[C14]
前記走査順序が垂直方向の走査を備え、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定するために、前記ビデオコーダが、前記現在のピクセルの左のピクセルと、同じパレットインデックスを有する前記現在のピクセルに垂直方向に隣接するピクセルとに基づいて、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定するように構成される、C12に記載のデバイス。
[C15]
前記ビデオコーダが、
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定するように構成される、C12に記載のデバイス。
[C16]
前記ビデオコーダが、
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定するように構成される、C12に記載のデバイス。
[C17]
前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が水平方向に左から右であることに基づいて前記現在のピクセルの右上に位置するピクセルを備え、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が水平方向に右から左であることに基づいて前記現在のピクセルの左上に位置するピクセルを備え、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が垂直方向に下から上であることに基づいて左下部に位置するピクセルを備え、または、前記現在のピクセルの対角方向に位置する前記ピクセルが、前記走査順序が垂直方向に上から下であることに基づいて左上部に位置するピクセルを備える、C12に記載のデバイス。
[C18]
前記ビデオコーダがビデオデコーダを備え、前記ビデオデコーダが、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素を受信し、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、および、前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされるべきであることを示す前記シンタックス要素を受信したことに応答して、前記現在のピクセルの対角方向に位置する前記ピクセルのための前記パレットインデックスに基づいて、前記現在のピクセルのための前記パレットの前記パレットインデックスを決定し、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモード復号するように構成される、C12に記載のデバイス。
[C19]
前記ビデオコーダがビデオエンコーダを備え、前記ビデオエンコーダが、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされるべきであることを示すシンタックス要素をシグナリングし、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモード符号化するように構成される、C12に記載のデバイス。
[C20]
前記現在のピクセルが第1のピクセルを備え、前記ビデオコーダが、
第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定し、
前記走査順序に対して前記第2のピクセルの直交方向に位置する隣接ピクセル、および前記走査順序に対して前記第2のピクセルに沿って位置する隣接ピクセルと同じパレットインデックスを、前記第2のピクセルの対角方向に位置するピクセルのパレットインデックスが有すると決定し、
前記第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと、および、前記走査順序に対して前記第2のピクセルの直交方向に位置する前記隣接ピクセル、および前記走査順序に対して前記第2のピクセルに沿って位置する前記隣接ピクセル、と同じパレットインデックスを、前記第2のピクセルの対角方向に位置する前記ピクセルの前記パレットインデックスが有すると、決定したことに応答して、デフォルトのパレットインデックスに基づいて、前記第2のピクセルのための前記パレットのパレットインデックスを決定し、
前記第2のピクセルのための前記決定されたパレットインデックスに基づいてパレット値を決定し、
前記決定されたパレット値に基づいて前記第2のピクセルをパレットモードコーディングするように構成される、C12に記載のデバイス。
[C21]
前記現在のピクセルが第1のピクセルを備え、前記ビデオコーダが、
第2のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定し、
前記第2のピクセルがブロック境界に位置すると決定し、
前記第2のピクセルが、前記copy aboveモードでパレットモードコーディングされることが可能ではなく、前記ブロック境界に位置すると決定したことに応答して、デフォルトのパレットインデックスに基づいて前記第2のピクセルのための前記パレットのパレットインデックスを決定し、
前記第2のピクセルのための前記決定されたパレットインデックスに基づいてパレット値を決定し、
前記決定されたパレット値に基づいて前記第2のピクセルをパレットモードコーディングするように構成される、C12に記載のデバイス。
[C22]
前記ビデオコーダが、
前記現在のピクセルのための前記決定されたパレットインデックスに基づいて前記パレットのパレット値を決定するように構成され、
前記現在のピクセルをパレットモードコーディングするために、前記ビデオコーダが、前記決定されたパレット値に基づいて前記現在のピクセルをパレットモードコーディングするように構成される、C12に記載のデバイス。
[C23]
前記デバイスが、
集積回路(IC)、
マイクロプロセッサ、または
前記現在のピクセルを表示するためのディスプレイまたは前記現在のピクセルをキャプチャするためのカメラのうちの少なくとも1つを備えるワイヤレス通信デバイス
のうちの1つを備える、C12に記載のデバイス。
[C24]
ビデオコーディングのためのデバイスであって、
ビデオデータの現在のピクセルが、走査順序に対して前記現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと、決定するための手段と、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、前記現在のピクセルの対角方向に位置する前記ビデオデータのピクセルのためのパレットインデックスに基づいて、前記現在のピクセルのためのパレットのパレットインデックスを決定するための手段と、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモードコーディングするための手段と
を備える、デバイス。
[C25]
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定するための手段をさらに備える、C24に記載のデバイス。
[C26]
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定するための手段をさらに備える、C24に記載のデバイス。
[C27]
命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令が、実行されると、ビデオコーディングのためのデバイスの1つまたは複数のプロセッサに、
ビデオデータの現在のピクセルが、走査順序に対して前記現在のピクセルの直交方向に位置する隣接ピクセルのパレットインデックスを使用するcopy aboveモードでパレットモードコーディングされることが可能ではないと、決定させ、
前記現在のピクセルが前記copy aboveモードでパレットモードコーディングされることが可能ではないと決定したことに応答して、前記現在のピクセルの対角方向に位置する前記ビデオデータのピクセルのためのパレットインデックスに基づいて、前記現在のピクセルのためのパレットのパレットインデックスを決定させ、
前記決定されたパレットインデックスに基づいて、前記現在のピクセルをパレットモードコーディングさせる、
非一時的コンピュータ可読記憶媒体。
[C28]
1つまたは複数のプロセッサに、
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置するピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定させる命令をさらに備える、C27に記載の非一時的コンピュータ可読記憶媒体。
[C29]
1つまたは複数のプロセッサに、
前記現在のピクセルのランのそれぞれのピクセルの対角方向に位置しないピクセルのそれぞれのパレットインデックスに基づいて、前記現在のピクセルのピクセルの前記ランのための前記パレットのパレットインデックスを決定させる命令をさらに備える、C27に記載の非一時的コンピュータ可読記憶媒体。