(57)【要約】  ビデオデコーダは、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得し得る。ブロックは一連のランを備え、これらの各々は1つの画素または2つ以上の連続する画素からなり得る。さらに、ビデオデコーダは、ランの1つまたは複数の長さを示すパレットランレングスシンタックス要素のセットを取得し得る。ビデオデコーダは、シンタックス要素に基づいて、パレットランレングスシンタックス要素が最初のランの長さを示すパレットランレングスシンタックス要素を含まないと決定し得る。むしろ、ビデオデコーダは、パレットランシンタックス要素のセットによって示される長さに基づいて、最初のランの長さを決定する。ビデオデコーダは、画素のパレットサンプルモードに基づいて、各々がパレットの中のエントリーを示す画素のパレットインデックスを決定することができる。
2017535166.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
前記ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得するステップであって、前記ブロックが一連のランを備え、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得するステップであって、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示す、ステップと、
前記シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素の前記セットが前記一連のランの最初のランの長さを示していないと決定するステップと、
前記ブロック中の画素の数およびパレットランレングスシンタックス要素の前記セットによって示される前記長さに基づいて、前記一連のランの前記最初のランの前記長さを決定するステップと、
前記ブロックの前記画素の前記パレットサンプルモードに基づいて、前記ブロックの非エスケープコーディングされた画素のパレットインデックスを決定するステップであって、前記ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、前記それぞれの非エスケープコーディングされた画素の前記それぞれのパレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、
前記ブロックの前記非エスケープコーディングされた画素の前記パレットインデックスに基づいて、前記ブロックの前記非エスケープコーディングされた画素の値を決定するステップとを備える、方法。
【請求項２】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記特定の値が第1の値であり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2のシンタックス要素が前記第1の値と異なる第2の値を有することに基づいて、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの最後のランの長さを示していないと決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最後のランの前記長さを決定するステップと、
前記第2のブロックの前記画素の前記パレットサンプルモードに基づいて、前記第2のブロックの前記画素のパレットインデックスを決定するステップと、
前記第2のブロックの前記画素の前記パレットインデックスに基づいて、前記第2のブロックの画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項３】
(1)前記パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記ビットストリームが前記シンタックス要素を含んでいると決定するステップをさらに備える、請求項1に記載の方法。
【請求項４】
前記シンタックス要素が第1のシンタックス要素であり、
パレットランレングスシンタックス要素の前記セットが前記最初のランの前記長さを示していないと決定したことに応じて、(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、前記ビットストリームから第2のシンタックス要素を取得するステップをさらに備え、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、前記特定のランのランタイプが前記Copy AboveランタイプまたはIndex Copyランタイプのうちの1つであることを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じである、請求項1に記載の方法。
【請求項５】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2のシンタックス要素が前記特定の値を有することに基づいて、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの最初のランの長さを示していないと決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最初のランの前記長さを決定するステップと、
パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの前記最初のランの前記長さを示していないと決定したこと、および、現在の画素が走査順序において前記第2のブロックの最初の画素であると決定したことに応じて、前記第2の一連のランの前記最初のランがCopy Aboveランタイプを有すると推測するステップであって、前記現在の画素が前記ブロックの最初の行の中にあり、前記最初のランの最初の画素であり、前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが前記それぞれの画素のすぐ上の画素のパレットインデックスと同じである、ステップと、
前記第2のブロックの前記画素の前記パレットサンプルモードに基づいて、前記第2のブロックの前記画素のパレットインデックスを決定するステップと、
前記第2のブロックの前記画素の前記パレットインデックスに基づいて、前記第2のブロックの画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項６】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2のシンタックス要素が前記特定の値を有することに基づいて、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの最初のランの長さを示していないと決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最初のランの前記長さを決定するステップと、
パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの前記最初のランの前記長さを示していないと決定したこと、および現在の画素が走査順序において前記第2のブロックの前記最初の画素ではなく以前のランのランタイプがCopy Aboveランタイプであると決定したことに応じて、前記第2の一連のランの特定のランがIndex Copyランタイプを有すると推測する、ステップであって、
前記現在の画素が、前記ブロックの前記最初の行の中にあり、前記特定のランの前記最初の画素であり、
前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じであり、
前記第2のブロックの前記画素の前記パレットサンプルモードに基づいて、前記第2のブロックの前記画素のパレットインデックスを決定するステップと、
前記第2のブロックの前記画素の前記パレットインデックスに基づいて、前記第2のブロックの画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項７】
前記ビットストリームから、1つまたは複数のランタイプシンタックス要素のセットを取得するステップであって、ランタイプシンタックス要素の前記セットの各々のそれぞれのランタイプシンタックス要素が前記一連のランの中のそれぞれのランのランタイプを示す、ステップと、
パレットランレングスシンタックス要素の前記セットが前記一連のランの前記最初のランの前記長さを示していないと決定したことに応じて、ならびに、前記一連のランの前記最初のランの前記長さが0に等しいこと、および/または前記一連のランの最後のランの長さが0に等しいことを決定したことに応じて、ランタイプシンタックス要素の前記セットが前記一連のランの中の前記最後のランのランタイプを示すランタイプシンタックス要素を含まないと決定するステップとをさらに備える、請求項1に記載の方法。
【請求項８】
前記シンタックス要素が第1のシンタックス要素であり、
前記ビットストリームから第2のシンタックス要素を取得するステップであって、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じである、ステップと、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示していると決定したことに応じて、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短いと決定するステップとをさらに備える、請求項1に記載の方法。
【請求項９】
前記ブロックが第1のブロックであり、
第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップをさらに備え、
Copy Aboveランタイプを有する前記第2の一連のランの各ランが0より大きい長さを有するという要件に、前記ビットストリームが従うことと、
前記シンタックス要素が第1のシンタックス要素であり、前記ビットストリームが、前記Copy Aboveランタイプを有する前記第2の一連のランのすべてのランが0より大きい長さを有することを示す第2のシンタックス要素を含むこと
のうちの1つが当てはまり、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記ビットストリームから、前記第2の一連のランの特定のランが前記Copy Aboveランタイプを有することを示すランタイプシンタックス要素と、前記特定のランの長さが0であることを示すパレットランレングスシンタックス要素の前記第2のセットのうちのあるパレットランレングスシンタックス要素とを取得したことに応じて、前記特定のランが実際にはIndex Copyランタイプを有することと、前記特定のランの前記長さが実際には、前記第2のブロック中の画素の総数から、前記第2の一連のランの各々の他のランの前記長さおよび前記第2の一連のランの中のランの数を引いたものに等しいこととを決定するステップをさらに備え、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じである、請求項1に記載の方法。
【請求項１０】
複数のコンテキストからあるコンテキストを選択するステップであって、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく、ステップと、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を復号するステップとをさらに備える、請求項1に記載の方法。
【請求項１１】
ビデオデータを符号化する方法であって、
前記ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定するステップであって、前記ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、前記それぞれの非エスケープコーディングされた画素の前記パレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、
前記ブロック中の一連のランを特定するステップであって、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
1つまたは複数のパレットランレングスシンタックス要素のセットを生成するステップであって、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示す、ステップと、
パレットランレングスシンタックス要素の前記セットが前記一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成するステップとを備える、方法。
【請求項１２】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記一連のランが第1の一連のランであり、前記パレットが第1のパレットであり、前記特定の値が第1の値であり、
前記ビデオデータの第2のブロックの画素のパレットインデックスを決定するステップであって、前記第2のブロックの各々のそれぞれの画素に対して、前記それぞれの画素の前記パレットインデックスが第2のパレット中のエントリーを示し、前記第2のパレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、
第2の一連のランを特定するステップであって、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
1つまたは複数のパレットランレングスシンタックス要素の第2のセットを生成するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
第2のシンタックス要素を生成するステップであって、前記第2のシンタックス要素が、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの最後のランの長さを示していないことを示す第2の値を有し、前記第2の値が前記第1の値と異なる、ステップとをさらに備える、請求項11に記載の方法。
【請求項１３】
前記シンタックス要素を生成するステップが、(1)前記パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記シンタックス要素を生成するステップを備える、請求項11に記載の方法。
【請求項１４】
前記シンタックス要素が第1のシンタックス要素であり、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、第2のシンタックス要素を生成するステップをさらに備え、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、前記特定のランのランタイプがCopy AboveまたはIndex Copyのうちの1つであることを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じである、請求項11に記載の方法。
【請求項１５】
1つまたは複数のランタイプシンタックス要素のセットを生成するステップをさらに備え、ランタイプシンタックス要素の前記セットの各々のそれぞれのランタイプシンタックス要素が前記一連のランの中のそれぞれのランのランタイプを示し、
パレットランレングスシンタックス要素の前記セットが前記一連のランの前記最初のランの前記長さを示していないとき、ならびに、前記一連のランの前記最初のランの前記長さが0に等しいこと、および/または前記一連のランの最後のランの前記長さが0に等しいことを決定したことに応じて、ランタイプシンタックス要素の前記セットが前記一連のランの中の前記最後のランのランタイプを示すランタイプシンタックス要素を含まない、請求項11に記載の方法。
【請求項１６】
前記シンタックス要素が第1のシンタックス要素であり、
第2のシンタックス要素を生成するステップをさらに備え、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示しているとき、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短い、請求項11に記載の方法。
【請求項１７】
複数のコンテキストからあるコンテキストを選択するステップであって、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく、ステップと、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を符号化するステップとをさらに備える、請求項11に記載の方法。
【請求項１８】
ビデオデータを復号するためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得し、前記ブロックが一連のランを備え、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示し、
前記シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素の前記セットが前記一連のランの最初のランの長さを示していないと決定し、
前記ブロック中の画素の数およびパレットランレングスシンタックス要素の前記セットによって示される前記長さに基づいて、前記一連のランの前記最初のランの前記長さを決定し、
前記ブロックの非エスケープコーディングされた画素の前記パレットサンプルモードに基づいて、前記ブロックの前記非エスケープコーディングされた画素のパレットインデックスを決定し、前記ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、前記それぞれの非エスケープコーディングされた画素の前記それぞれのパレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、
前記ブロックの前記非エスケープコーディングされた画素の前記パレットインデックスに基づいて、前記ブロックの前記非エスケープコーディングされた画素の値を決定する
ように構成される、デバイス。
【請求項１９】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記特定の値が第1の値であり、前記1つまたは複数のプロセッサが、
前記ビットストリームから、第2のシンタックス要素を取得し、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得し、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示し、
前記第2のシンタックス要素が前記第1の値と異なる第2の値を有することに基づいて、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの最後のランの長さを示していないと決定し、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最後のランの前記長さを決定し、
前記第2のブロックの前記画素の前記パレットサンプルモードに基づいて、前記第2のブロックの前記画素のパレットインデックスを決定し、
前記第2のブロックの前記画素の前記パレットインデックスに基づいて、前記第2のブロックの画素の値を決定するように構成される、請求項18に記載のデバイス。
【請求項２０】
(1)前記パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記ビットストリームが前記シンタックス要素を含んでいると前記1つまたは複数のプロセッサが決定するように、前記1つまたは複数のプロセッサが構成される、請求書18に記載のデバイス。
【請求項２１】
前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットが前記最初のランの前記長さを示していないと決定したことに応じて、前記1つまたは複数のプロセッサが、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、前記ビットストリームから第2のシンタックス要素を取得するように、前記1つまたは複数のプロセッサが構成され、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、前記特定のランのランタイプが前記Copy AboveランタイプまたはIndex Copyランタイプのうちの1つであることを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じである、請求項18に記載のデバイス。
【請求項２２】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサがさらに、
前記ビットストリームから第2のシンタックス要素を取得し、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示していると決定したことに応じて、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短いと決定する
ように構成される、請求項18に記載のデバイス。
【請求項２３】
前記1つまたは複数のプロセッサが、
複数のコンテキストからあるコンテキストを選択し、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づき、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を復号するように構成される、請求項18に記載のデバイス。
【請求項２４】
ビデオデータを符号化するためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定し、前記ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、前記それぞれの画素の前記パレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、
前記ブロック中の一連のランを特定し、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
1つまたは複数のパレットランレングスシンタックス要素のセットを生成し、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示し、
パレットランレングスシンタックス要素の前記セットが前記一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成する
ように構成される、デバイス。
【請求項２５】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記一連のランが第1の一連のランであり、前記パレットが第1のパレットであり、前記特定の値が第1の値であり、前記1つまたは複数のプロセッサが、
前記ビデオデータの第2のブロックの画素のパレットインデックスを決定し、前記第2のブロックの各々のそれぞれの画素に対して、前記それぞれの画素の前記パレットインデックスが第2のパレットの中のエントリーを示し、前記第2のパレットの中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、
第2の一連のランを特定し、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
1つまたは複数のパレットランレングスシンタックス要素の第2のセットを生成し、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示し、
第2のシンタックス要素を生成し、前記第2のシンタックス要素が、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの前記最後のランの長さを示していないことを示す第2の値を有し、前記第2の値が前記第1の値と異なる
ように構成される、請求項24に記載のデバイス。
【請求項２６】
(1)前記パレットのサイズが1に等しくないこと、または前記ブロックの中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記1つまたは複数のプロセッサが前記シンタックス要素を生成するように構成される、請求書24に記載のデバイス。
【請求項２７】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサが、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、第2のシンタックス要素を生成するように構成され、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が前記ブロックの最初の行のパレットサンプルモードを示し、前記パレットサンプルモードがCopy AboveまたはIndex Copyのうちの1つであり、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ左の画素のパレットインデックスと同じである、請求項24に記載のデバイス。
【請求項２８】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサが、
第2のシンタックス要素を生成するように構成され、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、前記それぞれの画素のすぐ上の画素のパレットインデックスと同じであり、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示しているとき、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短い、請求項24に記載のデバイス。
【請求項２９】
前記1つまたは複数のプロセッサが、
複数のコンテキストからあるコンテキストを選択し、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロックの中に存在するかどうか、および前記ブロックの中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づき、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を符号化するように構成される、請求項24に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2014年10月10日に出願された米国仮特許出願第62/062,627号、および2015年5月21日に出願された米国仮特許出願第62/165,064号の利益を主張するものであり、これらの各々の内容全体が、参照により本明細書に組み込まれている。
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)は、ビデオブロックに区分され得る。ピクチャのイントラコーディングされる(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされる(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャは、フレームと呼ばれることもある。
【０００５】
空間予測または時間予測は、コーディングされるブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間の画素差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは画素領域から変換領域に変換されてよく、結果として残差係数をもたらし、残差係数は次いで量子化され得る。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Bross他、High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)、CVC-L1003_v13
【非特許文献２】Rajan Joshi他、High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 2、JCTVC-S1005
【非特許文献３】Non-CE6: Escape color signaling、JCTVC-S0055
【発明の概要】
【課題を解決するための手段】
【０００７】
全般に、本出願は、パレットモードを使用してビデオデータを符号化し復号するための技法を説明する。本明細書で説明されるように、パレットは複数のエントリーを含む。エントリーの各々は、1つまたは複数のサンプル値を指定し得る。パレットコーディングされるブロックの各画素は、パレット中のエントリーを示すパレットインデックスと関連付けられる。連続する画素は頻繁に、画素の左または上にある画素と同じパレットインデックスを有する。したがって、各画素のパレットインデックスをシグナリングするのではなく、ビデオエンコーダは、画素の「ラン」の長さをシグナリングし得る。画素のランの各々のそれぞれの画素は、それぞれの画素の上から複製され、またはそれぞれの画素の左にある画素から複製され得る。本開示の技法によれば、ビデオエンコーダは、ブロックの最初または最後のランの長さをシグナリングするのを省略し得る。
【０００８】
一例では、本開示は、ビデオデータを復号する方法を説明し、この方法は、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得するステップであって、ブロックが一連のランを備え、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得するステップであって、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示す、ステップと、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定するステップと、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定するステップと、ブロックの画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定するステップであって、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定するステップとを備える。
【０００９】
別の例では、本開示は、ビデオデータを符号化する方法を説明し、この方法は、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定するステップであって、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、ブロック中の一連のランを特定するステップであって、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、1つまたは複数のパレットランレングスシンタックス要素のセットを生成するステップであって、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示す、ステップと、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成するステップとを備える。
【００１０】
別の例では、本開示は、ビデオデータを復号するためのデバイスを説明し、このデバイスは、ビデオデータを記憶するように構成されるメモリと、1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得し、ブロックが一連のランを備え、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示し、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定し、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定し、ブロックの非エスケープコーディングされた画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定し、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定するように構成される。
【００１１】
別の例では、本開示は、ビデオデータを符号化するためのデバイスを説明し、このデバイスは、ビデオデータを記憶するように構成されるメモリと、1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定し、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの画素のパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、ブロック中の一連のランを特定し、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、1つまたは複数のパレットランレングスシンタックス要素のセットを生成し、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示し、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成するように構成される。
【００１２】
別の例では、本開示は、ビデオデータを復号するためのデバイスを説明し、このデバイスは、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得するための手段であって、ブロックが一連のランを備え、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、手段と、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得するための手段であって、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示す、手段と、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定するための手段と、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定するための手段と、ブロックの画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定するための手段であって、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、手段と、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定するための手段とを備える。
【００１３】
別の例では、本開示は、ビデオデータを符号化するためのデバイスを説明し、このデバイスは、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定するための手段であって、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、手段と、ブロック中の一連のランを特定するための手段であって、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、手段と、1つまたは複数のパレットランレングスシンタックス要素のセットを生成するための手段であって、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示す、手段と、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成するための手段とを備える。
【００１４】
別の例では、本開示は、命令を記憶したデータ記憶媒体を説明し、この命令は、実行されると、ビデオデータを復号するためのデバイスに、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得させ、ブロックが一連のランを備え、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得させ、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示し、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定させ、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定させ、ブロックの画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定させ、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定させる。
【００１５】
別の例では、本開示は、命令を記憶したデータ記憶媒体を説明し、この命令は、実行されると、ビデオデータを符号化するためのデバイスに、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定させ、ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のパレットインデックスがパレット中のエントリーを示し、パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、ブロック中の一連のランを特定させ、一連のランが2つ以上のランを含み、一連のランの各々のそれぞれのランがブロックの1つの画素または2つ以上の連続する画素からなり、一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、1つまたは複数のパレットランレングスシンタックス要素のセットを生成させ、1つまたは複数のパレットランレングスシンタックス要素が一連のランの中の1つまたは複数のランの長さを示し、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成させる。
【００１６】
本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、その説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１７】
【図１】本開示において説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図である。
【図３】本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図である。
【図４】本開示の技法による、パレットベースのビデオコーディングのためのパレットエントリーを決定することの例を示す概念図である。
【図５】本開示の技法による、画素のブロックのためのパレットに対するインデックスを決定することの例を示す概念図である。
【図６Ａ】本開示の技法による、ビデオエンコーダの例示的な動作を示すフローチャートである。
【図６Ｂ】本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
本開示は、ビデオコーディングおよびビデオ圧縮のための技法を説明する。具体的には、本開示は、ビデオデータのパレットベースのコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、階調が連続的であり空間的に滑らかであるものと想定される。これらの想定に基づいて、ブロックベースの変換、フィルタリングなどの様々なツールが開発されており、そのようなツールは、自然なコンテンツのビデオに対しては良好な性能を示してきた。
【００１９】
しかしながら、リモートデスクトップ、共同作業用ディスプレイ、およびワイヤレスディスプレイのような適用例では、コンピュータにより生成されるスクリーンコンテンツが、圧縮されるべき主要コンテンツであることがある。このタイプのコンテンツは、階調が離散的であり、鋭い線および高コントラストのオブジェクト境界を有する傾向がある。連続的な階調および滑らかさという想定はもはや当てはまらないことがあり、したがって従来のビデオコーディング技法は、コンピュータにより生成されたスクリーンコンテンツを圧縮するには非効率な方法であることがある。
【００２０】
本開示は、パレットベースのコーディングを説明し、これは、スクリーンで生成されるコンテンツのコーディング(たとえば、スクリーンコンテンツコーディング(SCC))に特に適していることがある。ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法などの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明されるように、エンコーダもしくはデコーダ、または組み合わされたエンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースのコーディングを実行するように構成され得る。
【００２１】
パレットベースのコーディングでは、ビデオデータの特定のエリアが、相対的に少数の色を有すると想定され得る。ビデオコーダ(すなわち、ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディングし得る。各画素は、画素の色を表すパレットの中のエントリーと関連付けられ得る。したがって、パレットベースのコーディングでは、パレットは、それぞれのインデックスによって番号を付けられ色成分(たとえば、RGB、YUVなど)の値および/または強度を表すエントリーを備えることがあり、それらが、ブロックのための予測子または最終的な再構築されるブロックサンプルとして使用され得る。たとえば、ビデオコーダは、画素をパレット中の適切な値と関連付けるインデックス(すなわち、「パレットインデックス」または「パレットエントリーインデックス」)をコーディングすることができ、ここでその値は色成分および/または強度成分を示す。
【００２２】
上の例では、ビデオエンコーダは、ブロックのためのパレットを決定することと、各画素の値を表すためのパレット中のエントリーを探し出すことと、画素値をパレットと関連付ける、画素に対するインデックス値とともにパレットを符号化することとによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、ブロックのためのパレット、ならびにブロックの画素に対するインデックス値を決定することができる。たとえば、ビデオデコーダは、ブロックのためのパレット、ならびにブロックの画素に対するインデックス値を、符号化されたビットストリームから取得することができる。ビデオデコーダは、ブロックの画素値を再構築するために、画素のインデックス値をパレットのエントリーと関連付けることができる。上の例は、パレットベースのコーディングの一般的な説明を提供することを意図する。
【００２３】
たとえば、パレットインデックスは、画素の単一の色成分または強度成分(たとえば、RGBデータのRed成分、YUVデータのY成分など)と関連付けられる、単一の関連する色または強度の値を有し得る。別の例では、パレットインデックスは、複数の関連する色または強度の値を有し得る。たとえば、パレット中の各エントリーは、1つの色成分(たとえば、ルーマ値)または2つの成分(たとえば、2つのクロマ値)または3つの色成分(たとえば、RGB、YUVなど)を含むことがある。いくつかの事例では、パレットベースのコーディングは、モノクロビデオをコーディングするために適用されることがある。したがって、「色値」という用語は全般に、画素値を生成するために使用される任意の色成分または非色成分を指し得る。
【００２４】
パレットコーディングされたブロック中の各サンプルは、以下に記載されるように、3つのモード(すなわち、パレットサンプルモード)のうちの1つに属し得る。
・Escapeモード。このモードでは、サンプル値はパレットエントリーとしてパレットに含まれず、量子化されたサンプル値がすべての色成分に対して明示的にシグナリングされる。Escapeモードは新たなパレットエントリーのシグナリングに似ているが、いくつかの例では、新たなパレットエントリーに対しては、色成分の値が量子化されない。そのようなサンプルは、エスケープサンプルまたはエスケープ画素と呼ばれ得る。
・「Copy Left Run」モード(「Index Copyパレットサンプルモード」、「Copy Indexパレットサンプルモード」、または「Valueパレットサンプルモード」とも呼ばれる)。このモードでは、パレットインデックスが最初にシグナリングされ、その後に値Mが続いてよく、これは、後続のM個のパレットインデックスがシグナリングされたパレットインデックスと同じであることを意味する。
・「Copy Above Run」モード(「Copy Aboveパレットサンプルモード」、または「CopyFromTopパレットサンプルモード」とも呼ばれる)。このモードでは、後続のN個のパレットインデックスが、それぞれ、それらの上方の隣接するものと同じであることを示すために、値Nが送信され得る。
【００２５】
ランは、1つの画素、または同じパレットサンプルモードを有する2つ以上の連続する画素のセットであり得る。さらに2つのランタイプが規定される。すなわち、Copy Aboveランタイプ(すなわち、「COPY_ABOVEランタイプ」)およびCopy Indexランタイプ(すなわち、「INDEX_COPYランタイプ」)である。COPY Aboveランタイプを有するランは、Copy Aboveランと本明細書では呼ばれ得る。COPY Indexランタイプを有するランは、Copy IndexランまたはIndex Copyランと本明細書では呼ばれ得る。いくつかの例では、Copy Aboveランタイプを有するランの中の各画素は、Copy Aboveパレットサンプルモードを有する。Copy Indexランタイプを有するランの中の各画素は、Copy IndexパレットサンプルモードまたはEscapeパレットサンプルモードを有し得る。したがって、Copy Indexランは、左側の隣接サンプルから複製されるパレットインデックスを有するサンプルのランを備え得る。エスケープ画素が特別なパレットインデックスによって示される事例では、最初の画素が特別なパレットインデックスを有する場合、Copy Indexランはエスケープ画素のランであり得る。
【００２６】
ランレングス値は各ランに対してシグナリングされ得る。ランレングス値は「ラン値」とも呼ばれ得る。インデックスおよびランレングスの値をシグナリングすることは、ランレングスコーディングと似ている。ランレングス値は、同じパレットサンプルモードに属する後続の画素の数を指定する。たとえば、連続するパレットインデックスが0、2、2、2、2、5である場合、2番目の画素に対して、Copy Indexモードがシグナリングされ得る。この例では、上の例において2に等しいパレットインデックスをシグナリングした後で、3つの後続の画素も同じパレットインデックス(すなわち、2)を有することを意味する3というランレングス値がシグナリングされる。同様に、Copy Aboveモードに続く4というランレングス値は、合計で5つのインデックスが上の対応するパレットインデックスから複製されることを意味する。
【００２７】
ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法などの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、エンコーダもしくはデコーダ、または組み合わされたエンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースのコーディングを実行するように構成され得る。
【００２８】
通常、ビデオエンコーダは、ブロックの各ランに対してランレングスシンタックス要素をシグナリングする。言い換えると、ランレングスシンタックス要素の数とブロックのランの数との間には1対1の関係がある。各々のそれぞれのランレングスシンタックス要素は、それぞれのランの長さを示す。言い換えると、各々のそれぞれのランレングスシンタックス要素は、それぞれのランレングス値を示す。
【００２９】
本開示は、ブロックの各々のそれぞれのランに対してランレングスシンタックス要素をシグナリングする必要のない技法を説明する。たとえば、いくつかの状況では、ビデオデコーダは、ブロックの画素の数および他のランの長さに基づいて、最初または最後のランの長さを示すランレングスシンタックス要素をシグナリングすることなく、ブロックの最初または最後のランの長さを決定することが可能であり得る。したがって、少なくともいくつかの状況では、最初または最後のランの長さを示すランレングスシンタックス要素をビデオエンコーダがシグナリングすることは必要ではない。
【００３０】
一般に、より長いランを示すランレングスシンタックス要素を表すには、より多くのビンが必要とされる。したがって、最初のランの長さが最後のランの長さより長い場合、最初のランの長さを示すランレングスシンタックス要素のシグナリングをスキップすることが有利であり得る。逆に、最後のランの長さが最初のランの長さより長い場合、最後のランの長さを示すランレングスシンタックス要素のシグナリングをスキップすることが有利であり得る。したがって、本開示の例示的な技法によれば、ビデオエンコーダは、最初または最後のランのためのランレングスシンタックス要素が省略されるかどうかを示すシンタックス要素をシグナリングし得る。
【００３１】
したがって、本開示の例示的な技法によれば、ビデオエンコーダは、ビデオデータのブロックの画素のパレットインデックスを決定することができる。ブロックの各々のそれぞれの画素に対して、それぞれの画素のパレットインデックスは、パレット中のエントリーを示す。パレット中の各々のそれぞれのエントリーは、サンプル値のそれぞれのセットを示す。さらに、この例では、ビデオエンコーダは、ブロック中の一連のランを特定することができる。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモードを有し得る。この例では、ビデオエンコーダは、一連のランの1つまたは複数のランの長さを示す1つまたは複数のパレットランレングスシンタックス要素のセットを生成し得る。さらに、この例では、ビデオエンコーダは、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成し得る。
【００３２】
同様の例において、ビデオデコーダは、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得し得る。ブロックは一連のランを備える。一連のランは2つ以上のランを含む。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモードを有する。さらに、この例では、ビデオデコーダは、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し得る。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。この例では、ビデオデコーダは、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定し得る。ビデオデコーダは、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定し得る。さらに、この例では、ビデオデコーダは、ブロックの画素のパレットサンプルモードに基づいて、ブロックの画素のパレットインデックスを決定し得る。ブロックの各々のそれぞれの画素に対して、それぞれの画素のそれぞれのパレットインデックスは、パレット中のエントリーを示す。パレット中の各々のそれぞれのエントリーは、サンプル値のそれぞれのセットを示す。ビデオデコーダは、ブロックの画素のパレットインデックスに基づいて、ブロックの画素の値を決定し得る。
【００３３】
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。
【００３４】
図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００３５】
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、ワイヤレス通信デバイスなどを含む、広範囲のデバイスを備え得る。
【００３６】
宛先デバイス14は、符号化されたビデオデータをソースデバイス12からチャネル16を介して受信し得る。チャネル16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12がリアルタイムで符号化されたビデオデータを宛先デバイス14に直接送信することを可能にする、1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14へ送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
【００３７】
別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、ローカルにアクセスされる様々なデータ記憶媒体を含み得る。
【００３８】
さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化されたビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶するとともに符号化されたビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
【００３９】
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするために適切である、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
【００４０】
本開示の技法は、ワイヤレスの適用例または設定に限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００４１】
図1に示されるビデオコーディングシステム10は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含まないビデオコーディングの設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データは、ローカルメモリからの取り出し、ネットワークを介したストリーミングなどが行われる。ビデオ符号化デバイスがデータを符号化してメモリに記憶することができ、かつ/または、ビデオ復号デバイスがメモリからデータ(たとえば、ビデオデータ)を取り出して復号することができる。多くの例では、互いに通信しないが、単にデータをメモリへと符号化し、かつ/またはメモリからデータを取り出して復号するデバイスによって、符号化および復号が実行される。
【００４２】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオデータをビデオコンテンツプロバイダから受信するためのビデオフィードインターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００４３】
ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、符号化されたビデオデータを宛先デバイス14へ出力インターフェース22を介して直接送信する。他の例では、復号および/または再生のために宛先デバイス14が後でアクセスするために、符号化されたビデオデータはまた、記憶媒体またはファイルサーバへ記憶され得る。
【００４４】
図1の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、符号化されたビデオデータをチャネル16を介して受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、または宛先デバイス14の外部にあってもよい。一般に、ディスプレイデバイス32は復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備え得る。
【００４５】
ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、High Efficiency Video Coding(HEVC)規格におけるようなコーディングユニット(CU)または予測ユニット(PU)などのビデオデータの様々なブロックを、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、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)」、CVC-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」)によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実施される場合、本開示の技法を実行するために、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読記憶媒体に記憶することができ、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行することができる。前述のもの(ハードウェア、ソフトウェア、ハードウェアとソフトウェア
の組合せなどを含む)のいずれもが、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、組み合わされたエンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中で一体化されてよい。
【００４６】
本開示は、全般に、ある情報をビデオデコーダ30などの別のデバイスへ「シグナリング」または「送信」するビデオエンコーダ20に言及し得る。「シグナリングすること」または「送信すること」という用語は、全般に、シンタックス要素、および/または圧縮されたビデオデータを復号するために使用される他のデータの通信を指し得る。そのような通信は、リアルタイムで、またはほぼリアルタイムで発生し得る。代替的に、そのような通信は、ある時間の範囲にわたって、たとえば、符号化の時点において符号化されたビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生することがあり、次いで、シンタックス要素が、この媒体に記憶された後の任意の時点において復号デバイスによって取り出され得る。
【００４７】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、High Efficiency Video Coding (HEVC)などの、ビデオ圧縮規格に従って動作する。HEVCは、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group (MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発されている新しいビデオコーディング規格である。HEVC Draft 10が、最近のHEVCテキスト仕様ドラフトである。
【００４８】
ベースのHEVC規格に加えて、HEVC向けのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を制作するための取組みが進行中である。加えて、たとえば、本開示で説明されるようなパレットベースのコーディングモードは、HEVC規格の拡張のために提供され得る。たとえば、パレットベースのコーディング技法は、Rajan Joshi他、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 2」、JCTVC-S1005、札幌、日本、2014年6月30日〜7月9日(以後「SCC Draft 2」)において説明されている。SCC Draft 2のコピーが、http://phenix.int-evry.fr/jct/doc_end_user/documents/19_Strasbourg/wg11/JCTVC-S1005-v1.zipにおいて入手可能である。いくつかの例では、パレットベースのコーディングのための本開示で説明される技法は、ITU-T-H.264/AVC規格などの他のビデオコーディング規格または将来の規格に従って動作するように構成されたエンコーダおよびデコーダに適用され得る。したがって、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングに対するパレットベースのコーディングモードの適用は、例として説明される。
【００４９】
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは1つまたは複数のサンプルアレイを含み得る。たとえば、ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロであってよく、ルーマサンプルのアレイだけを含んでよい。
【００５０】
ピクチャの符号化された表現を生成するために、ビデオエンコーダ20が、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概ね類似していることがある。しかしながら、CTUは、必ずしも特定のサイズに限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査において連続的に順序付けられた整数個のCTUを含み得る。
【００５１】
コーディングされたCTUを生成するために、ビデオエンコーダ20がCTUのコーディングツリーブロック上で4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割することができ、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、ならびにそれらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００５２】
ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、長方形(すなわち、正方形または非正方形)のブロックであり得る。CUの予測ユニット(PU)は、ピクチャのルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックのための、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを備え得る。
【００５３】
ビデオエンコーダ20は、PUの予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【００５４】
ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャ以外の1つまたは複数のピクチャの復号されるサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために、単予測または双予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV)を有し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
【００５５】
ビデオエンコーダ20がCUの1つまたは複数のPUに対して予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成した後、ビデオエンコーダ20は、CUの残差ブロックを生成し得る。CUの残差ブロック中の各サンプルは、CUのPUの予測ブロック中のサンプルとCUのコーディングブロック中の対応するサンプルとの間の差分を示す。たとえば、ビデオエンコーダ20は、CUのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUのPUの予測ルーマブロック中のルーマサンプルとCUのルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUのPUの予測Cbブロック中のCbサンプルとCUのCbコーディングブロック中の対応するサンプルとの間の差分を示す。ビデオエンコーダ20はまた、CUのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUのPUの予測Crブロック中のCrサンプルとCUのCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００５６】
さらに、ビデオエンコーダ20は、4分木区分を使用して、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に区分し得る。変換ブロックは、同じ変換が適用されるサンプルの、長方形のブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックと関連付けられ得る。TUと関連付けられるルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００５７】
ビデオエンコーダ20は、1つまたは複数の変換をTUの変換ブロックに適用して、TUの係数ブロックを生成し得る。たとえば、ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUのルーマ係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUのCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUのCr係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。
【００５８】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は一般に、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリームの中に出力し得る。
【００５９】
ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含み得る。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)を封入する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内に封入された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、0個のビットを含む。
【００６０】
異なるタイプのNALユニットは、異なるタイプのRBSPを封入し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPを封入することがあり、第2のタイプのNALユニットはコーディングされたスライスのためのRBSPを封入することがあり、第3のタイプのNALユニットは補足強化情報(SEI)のためのRBSPを封入することがあり、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPを封入するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
【００６１】
図1の例では、ビデオデコーダ30は、ビデオエンコーダ20によって生成されるビットストリームを受信する。加えて、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームからシンタックス要素を取得し得る。シンタックス要素を取得することの一部として、ビデオデコーダ30は、CABAC復号を特定のシンタックス要素に適用し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも一部基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、イントラ予測またはインター予測を使用して、現在のCUのPUの予測ブロックを決定し得る。加えて、ビデオデコーダ30は、現在のCUのTUの係数ブロックを逆量子化し得る。ビデオデコーダ30は、係数ブロックに対して逆変換を実行して、現在のCUのTUの変換ブロックを再構築し得る。ビデオデコーダ30は、現在のCUのPUの予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャのCUごとにコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
【００６２】
上で示されたように、ビデオエンコーダ20およびビデオデコーダ30はCABACコーディングを適用し得る。CABAC符号化をシンタックス要素に適用するために、ビデオエンコーダ20は、シンタックス要素をバイナリ化して「ビン」と呼ばれる一連の1つまたは複数のビットを形成し得る。加えて、ビデオエンコーダ20は、コーディングコンテキストを特定し得る。コーディングコンテキストは、特定の値を有するビンをコーディングすることの確率を特定し得る。たとえば、コーディングコンテキストは、値0のビンをコーディングすることの0.7の確率、および値1のビンをコーディングすることの0.3の確率を示し得る。コーディングコンテキストを特定した後、ビデオエンコーダ20は、区間を下位の部分区間および上位の部分区間に分割し得る。部分区間の一方は値0と関連付けられてよく、他方の部分区間は値1と関連付けられてよい。部分区間の幅は、特定されたコーディングコンテキストによって、関連する値について示される確率に比例し得る。シンタックス要素のビンが下位の部分区間と関連付けられる値を有する場合、符号化される値は、下位の部分区間の下方の境界に等しくてよい。シンタックス要素の同じビンが上位の部分区間と関連付けられる値を有する場合、符号化される値は、上位の部分区間の下方の境界に等しくてよい。シンタックス要素の次のビンを符号化するために、ビデオエンコーダ20は、符号化されるビットの値と関連付けられる部分区間である区間を用いて、これらのステップを繰り返してよい。ビデオエンコーダ20が次のビンのためにこれらのステップを繰り返すとき、ビデオエンコーダ20は、特定されたコーディングコンテキストによって示される確率および符号化されるビンの実際の値に基づいて、修正された確率を使用し得る。
【００６３】
ビデオデコーダ30がCABAC復号をシンタックス要素に対して実行するとき、ビデオデコーダ30は、コーディングコンテキストを特定し得る。ビデオデコーダ30は次いで、区間を下位の部分区間および上位の部分区間に分割し得る。部分区間の一方は値0と関連付けられてよく、他方の部分区間は値1と関連付けられてよい。部分区間の幅は、特定されたコーディングコンテキストによって、関連する値について示される確率に比例し得る。符号化された値が下位の部分区間内にある場合、ビデオデコーダ30は、下位の部分区間と関連付けられる値を有するビンを復号し得る。符号化された値が上位の部分区間内にある場合、ビデオデコーダ30は、上位の部分区間と関連付けられる値を有するビンを復号し得る。シンタックス要素の次のビンを復号するために、ビデオデコーダ30は、符号化された値を含む部分区間である区間を用いて、これらのステップを繰り返してよい。ビデオデコーダ30が次のビンのためにこれらのステップを繰り返すとき、ビデオデコーダ30は、特定されたコーディングコンテキストによって示される確率および復号されたビンに基づいて、修正された確率を使用し得る。ビデオデコーダは次いで、ビンを非バイナリ化してシンタックス要素を復元し得る。
【００６４】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングし得る。したがって、画素は、画素の色を表すパレットの中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、画素をパレットの中の適切な値と関連付けるインデックスをコーディングし得る。
【００６５】
ビデオエンコーダ20は、ブロックのためのパレットを決定することと、各画素の値を表すためのパレット中のエントリーを探し出すことと、画素値をパレットに関連付ける画素のためのインデックス値とともにパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、ブロックのためのパレット、ならびにブロックの画素のためのインデックス値を、符号化されたビットストリームから取得し得る。ビデオデコーダ30は、ブロックの画素値を再構築するために、画素のインデックス値をパレットのエントリーと関連付け得る。
【００６６】
本開示では、各パレットエントリーが画素のすべての色成分の値を規定することが仮定される。しかしながら、本開示の概念は、各色成分に対して別のパレットを使用することに適用可能である。また、ブロック中のサンプルは、水平方向のラスター走査順序を使用して処理されると仮定される。たとえば、ビデオエンコーダは、水平方向のラスター走査順序を使用してインデックスを走査することによって、インデックスの2次元ブロックを1次元のアレイに変換することができる。同様に、ビデオデコーダは、水平方向のラスター走査順序を使用してインデックスのブロックを再構築することができる。したがって、本開示は、走査順序においてブロック中の現在コーディングされているサンプルよりも前にあるサンプルのことを、以前のサンプルと呼び得る。垂直方向のラスター走査順序などの、水平方向のラスター走査以外の走査も適用可能であり得ることを理解されたい。上の例は、パレットベースのコーディングの一般的な説明を提供することを意図する。しかしながら、垂直方向のラスター走査順序などの他の走査も適用可能である。
【００６７】
パレットベースのコーディング技法は、1つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、HEVCフレームワークに関して、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードの文脈において説明される、以下の開示されるプロセスのすべてが、付加的または代替的に、PUに適用され得る。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
【００６８】
パレットベースのコーディングモードを用いてコーディングされるブロック中の各サンプルは、escapeモード、Copy Above runモード、およびIndex Copy runモードという、3つのパレットサンプルモードの1つを使用してコーディングされ得る。Copy Above runモードおよびIndex Copy runモードでは、その値がランレングスを示すシンタックス要素もシグナリングされ得る。ランレングス値は、一緒にコーディングされるパレットコーディングされるブロック中の、特定の走査順序の中の1つのサンプルまたは2つ以上の連続するサンプル(たとえば、サンプルのラン)の数を示し得る。
【００６９】
ランレングス値は、同じパレットコーディングモードを使用してコーディングされるインデックスのランの長さを示し得る。たとえば、Index Copy runモードに関して、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、パレットインデックスおよびランレングス値をコーディングし得る。この例では、ランレングス値は、同じパレットサンプルモードを有する、走査順序の中の1つのサンプルまたは2つ以上の連続するサンプルの数を示す。たとえば、ランレングス値は、同じインデックス値を有しそのインデックス値を用いてコーディングされる、走査順序の中の1つのサンプルまたは2つ以上の連続するサンプルの数を示し得る。
【００７０】
Copy Above runモードに関して、ビデオコーダは、ランタイプインジケータおよびランレングスインジケータをコーディングし得る。ランタイプインジケータは、あるサンプルのためのパレットインデックスが上側の隣接サンプル(たとえば、現在コーディングされているサンプルのすぐ上に位置するサンプル)のパレットインデックスから複製されることを示すものである。ランレングスインジケータは、それぞれの上側の隣接サンプルからパレットインデックスを同様に複製する、走査順序の中の1つのサンプル(または画素)または2つ以上の連続するサンプル(または画素)の数を示す。
【００７１】
SCC Draft 2では、シグナリングされるパレットインデックスの数を示すシンタックス要素がまずシグナリングされ、それに続いて、各々の個々のパレットインデックス値がシグナリングされる。パレットランタイプを指定するシンタックス要素、たとえばCOPY_ABOVEまたはINDEX_COPYが次いで、パレットランレングスシンタックス要素とともにインターリーブされたパターンでシグナリングされる。
【００７２】
具体的には、SCC Draft 2は、CUを指定し、パレットコーディングに関するシンタックス要素を含むpalette_codingシンタックス構造を含み得る。下のTable 1(表1)は、palette_codingシンタックス構造のためのSCC Draft 2において定義されるシンタックスを示す。
【００７３】
【表１Ａ】
2017535166.tif 000003
【００７４】
【表１Ｂ】
2017535166.tif 000004
【００７５】
Table 1(表1)において、太字のテキストはシンタックス要素を示す。シンタックス要素palette_run_type_flag[xC][yC]はランタイプインジケータである。SCC Draft 2において記述されるように、COPY_ABOVE_MODEに等しいpalette_run_type_flag[xC][yC]は、場所[xC][yC]にあるサンプルのためのパレットインデックスが上の行の同じ位置におけるパレットインデックスに等しいことを規定する。COPY_INDEX_MODEに等しいpalette_run_type_flag[xC][yC]は、サンプルのパレットインデックスの指示がビットストリームにおいてコーディングされることを規定する。アレイインデックスxC、yCは、ピクチャの左上のルーマサンプルに対するサンプルの位置(xC,yC)を規定する。palette_run_type_flagが存在しないとき、それはCOPY_INDEX_MODEに等しいと推測される。さらに、Table 1(表1)において、シンタックス要素palette_index_idcは、パレットエントリーインデックスを規定する。SCC Draft 2において記述されるように、palette_index_idcは、currentPaletteEntriesによって表されるアレイに対するインデックスの指示である。
【００７６】
Table 1(表1)では、2つのシンタックス要素palette_run_msb_id_plus1およびpalette_run_refinement_bitsがランレングスを示すために使用され得る。SCC Draft Text 2に記載されるように、変数paletteRunは、palette_run_type_flagがCOPY_ABOVE_MODEに等しいときは上の行の中の場所と同じパレットインデックスを伴う連続する位置の数から1を引いたものを規定し、または、palette_run_type_flagがCOPY_INDEX_MODEに等しいときは同じパレットインデックスを伴う連続する位置の数から1を引いたものを規定する。さらに、SCC Draft Text 2において、palette_run_msb_id_plus1から1を引いたものは、paletteRunのバイナリ表現における最上位ビットを規定する。palette_run_refinement_bitsは、paletteRunのバイナリ表現における精緻化ビットを規定する。palette_run_refinement_bitsが存在しないとき、それは0に等しいと推測される。変数paletteRunは、次のように導出される。
-  indexMaxが0より大きい場合、
○  palette_run_msb_id_plus1が1より大きい場合、
paletteRun=(1<<(palette_run_msb_id_plus1-1))+palette_run_refinement_bits(7-80)
○  それ以外の(palette_run_msb_id_plus1が1に等しい)場合、paletteRunは(palette_run_msb_id_plus1-1)に設定される。
-  それ以外の場合、paletteRunは(nCbS * nCbS-1)に設定される。
nCbSは、現在のCUのコーディングブロックの高さまたは幅を示す。したがって、palette_run_msb_id_plus1シンタックス要素およびpalette_run_refinement_bitsシンタックス要素はともに、パレットランレングスを示し得る。
【００７７】
さらに、Table 1(表1)において、シンタックス要素palette_escape_valは、ある成分に対する、量子化されたエスケープコーディングされたサンプル値を規定する。変数PaletteEscapeVal[cIdx][xC][yC]は、paletteSampleMode[xC][yC]がESCAPE_MODEに等しいサンプルのエスケープ値を指定する。アレイインデックスcIdxは色成分を規定する。前のように、アレイインデックスxC、yCは、ピクチャの左上のルーマサンプルに対するサンプルの位置(xC,yC)を規定する。したがって、Table 1(表1)において、エスケープ画素はCOPY_INDEXのランにおいてシグナリングされる。
【００７８】
本開示は、パレットランレングスをシグナリングし、かつ/または概略的に示しながら、コーディング効率を改善するためにいくつかのランレングスシンタックス要素のシグナリングをバイパスする(すなわち、シグナリングしない)ための、方法、装置、および技法を説明する。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、ブロックの最初に送信される、シグナリングされたパレットインデックスの数に対して、本開示のパレットラン隠匿技法を実施するように構成され得る。本開示の他の例では、ビデオエンコーダ20およびビデオデコーダ30は、使用されるべきパレットインデックスの数の値がビデオデータのブロックのコーディング特性に関する何らかの他の既知の情報を使用して導出され得るような技法を実施するように構成され得る。たとえば、パレットランタイプを示すシンタックス値がシグナリングされる場合、シグナリングされるパレットインデックスの数は、本開示の技法に従って導出され得る。以下で説明される本開示の様々な技法は、個々に、または任意の組合せで使用され得る。
【００７９】
本開示の1つまたは複数の例では、ビデオエンコーダ20およびビデオデコーダ30は、ビデオコーディングの効率を改善するために、パレットベースのビデオコーディングにおいて使用されるいくつかのシンタックス要素のシグナリングおよび/または受信をバイパスするために使用され得るパレットラン隠匿技法を実施する。
【００８０】
本開示の技法は、パレットベースのビデオコーディングに関する。たとえば、パレットベースのコーディングでは、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして「パレット」を形成し得る。パレットベースのコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。実際の画素値(またはそれらの残差)をコーディングするのではなく、ビデオコーダは、画素を画素の色を表すパレットの中のエントリーと関連付ける、画素の1つまたは複数のためのインデックス値をコーディングすることができる。本開示で説明される技法は、パレットラン隠匿のための技法を含み得る。
【００８１】
本開示の第1の例では、ビデオエンコーダ20は、ブロックにおけるパレットランレングスシンタックス要素の最初の存在がシグナリングされないかどうかを示すために、ブロックレベルシンタックス要素(たとえば、フラグ)をシグナリングするように構成され得る。本開示は、このブロックレベルシンタックス要素を「ランレングススキップシンタックス要素」と呼び得る。別の例では、ビデオエンコーダ20は、ブロックにおけるパレットランレングスシンタックス要素の最後の存在がシグナリングされないかどうかを示すために、ブロックレベルシンタックス要素をシグナリングするように構成され得る。SCC Draft 2の文脈では、palette_run_msb_id_plus1およびpalette_run_refinement_bitsがパレットランレングスシンタックス要素である。
【００８２】
したがって、この例では、ビデオエンコーダ20は、ビデオデータのブロック(たとえば、CUのコーディングブロック)の画素のパレットインデックスを決定し得る。本開示では、画素の議論はサンプルに当てはまることがあり、またはサンプルの議論が画素に当てはまることがある。ブロックの各々のそれぞれの画素に対して、それぞれの画素のパレットインデックスは、パレット中のエントリーを示す。パレット中の各エントリーは、サンプル値のセットを示す。ビデオエンコーダ20は、ブロック中の一連のランを特定し得る。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモード(たとえば、escapeモード、Copy Aboveモード、Copy Indexモード)を有し得る。さらに、この例では、ビデオエンコーダ20は、1つまたは複数のパレットランレングスシンタックス要素のセットを生成し得る。この例では、1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。さらに、この例では、ビデオエンコーダ20は、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するランレングススキップシンタックス要素を生成し得る。この例では、特定の値(たとえば、第2の値)以外の値を有するランレングススキップシンタックス要素は、パレットランレングスシンタックス要素のセットが一連のランの最後のランの長さを示していないことを示し得る。
【００８３】
同様の例において、ビデオデコーダ30は、ビデオデータのブロックの符号化された表現を備えるビットストリームからランレングススキップシンタックス要素を取得し得る。この例では、ブロックは一連のランを備える。一連のランは2つ以上のランを含み得る。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモード(たとえば、escapeモード、Copy Aboveモード、Index Copyモード)を有し得る。さらに、この例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し得る。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。この例では、ビデオデコーダ30は、ランレングススキップシンタックス要素が特定の値(たとえば、第1の値)を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定する。さらに、この例では、ビデオデコーダ30は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定する。加えて、この例では、ビデオデコーダ30は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの画素のパレットインデックスを決定する。ブロックの各々のそれぞれの画素に対して、それぞれの画素のそれぞれのパレットインデックスは、パレット中のエントリーを示す。パレット中の各々のそれぞれのエントリーは、サンプル値のそれぞれのセットを示す。さらに、この例では、ビデオデコーダ30は、ブロックの画素のパレットインデックスに基づいて、ブロックの画素の値を決定し得る。
【００８４】
この例では、ランレングススキップシンタックス要素が特定の値(たとえば、第2の値)以外の値を有する場合、ビデオデコーダ30は、ランレングススキップシンタックス要素が第2の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最後のランの長さを示していないと決定し得る。この例では、ビデオデコーダ30は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最後のランの長さを決定し得る。この例では、ビデオデコーダ30は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの画素のパレットインデックスを決定し得る。さらに、この例では、ビデオデコーダ30は、ブロックの画素のパレットインデックスに基づいて、ブロックの画素の値を決定し得る。
【００８５】
一例では、ビデオエンコーダ20は、現在のブロックのパレットサイズが1でありブロック中にエスケープ画素がない場合、上で説明されたランレングススキップシンタックス要素のシグナリングをバイパスする(すなわち、シグナリングしない)ように構成され得る。ビデオエンコーダ20はさらに、現在のブロックのパレットサイズが0である場合、このランレングススキップシンタックス要素のシグナリングをバイパスする(すなわち、シグナリングしない)ように構成され得る。これらの事例の各々において、ビデオデコーダ30は、ランレングスをビデオデータのブロック全体のサイズであるものとして推測するように構成され得る。したがって、この例では、ビデオエンコーダ20は、(1)パレットのサイズが1に等しくないこと、またはブロック中にエスケープ画素があること、および(2)パレットのサイズが0ではないことを決定したことに応じて、ランレングススキップシンタックス要素を生成し得る。同様に、この例では、ビデオデコーダ30は、(1)パレットのサイズが1に等しくないこと、またはブロック中にエスケープ画素があること、および(2)パレットのサイズが0ではないことを決定したことに応じて、ビットストリームがシンタックス要素を含んでいると決定し得る。
【００８６】
いくつかの例では、上で説明されたランレングススキップシンタックス要素は、コンテキストを伴うCABACを使用してコーディングされ得る。使用されるコンテキストは、ビデオブロックサイズ、ビデオブロックのパレットサイズ、エスケープ画素の存在、シグナリングおよび/または推測されるパレットインデックスの数、または他の特性の1つまたは複数に基づき得る。したがって、1つのそのような例では、ビデオエンコーダ20は、複数のコンテキストからあるコンテキストを選択し得る。この例では、この選択は、ブロックのブロックサイズ、パレットサイズ、エスケープ画素がブロック中に存在するかどうか、およびブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく。さらに、この例では、ビデオエンコーダ20は、CABACにおいて選択されたコンテキストを使用して、ランレングススキップシンタックス要素を符号化する。同様の例では、ビデオデコーダ30は、複数のコンテキストからあるコンテキストを選択する。この例では、この選択は、ブロックのブロックサイズ、パレットサイズ、エスケープ画素がブロック中に存在するかどうか、およびブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく。さらに、この例では、ビデオデコーダ30は、CABACにおいて選択されたコンテキストを使用して、ランレングススキップシンタックス要素を復号する。
【００８７】
ビデオデコーダ30において、ブロックにおけるパレットランレングスシンタックス要素の最初の存在がスキップされる(すなわち、ビットストリームにおいて受信されない)ことを上で説明されたランレングススキップシンタックス要素が示している場合、ビデオデコーダ30は、0に等しい疑似ランレングスを第1のランレングスに一時的に割り当てることができ、最後のランレングスが復号されるまで復号手順は続く。言い換えると、パレットランレングスシンタックス要素のセットがブロックの最初のランの長さを示していないことをランレングススキップシンタックス要素が示している場合、ビデオデコーダ30は、最初のランの長さが0であると最初に仮定し得る。ビデオデコーダ30はその後、ブロック中の画素の総数から、最後の画素を復号した後のブロックにおける場所を引いたものに等しい値で、最初のランレングスを置き換え得る。
【００８８】
たとえば、4×4のブロックサイズが(6,2,5)という3つのシグナリングされるランレングスを有すると仮定する。この例では、最初のランレングスが隠される(すなわち、シグナリングされない)場合、ビデオデコーダ30は、0という疑似ランレングス値を第1のランレングスに最初に割り当てる。最後のランレングス5を復号した後で、4×4のブロックにおける現在の場所は、1(画素の場所)+0(疑似ラン)+1(画素の場所)+2(復号されたランレングス)+1(画素の場所)+5+(復号されたランレングス)=10に等しい。この例では、ランレングスは、ランの中の各画素と同じパレットサンプルモードを有する、ある画素の後の画素の場所の数を示す。したがって、最初のランレングスは16-10=6として復元され、それは、16が4×4のブロックにおける画素の総数であり、10が最後の画素を復号した後のブロックにおける場所であるからである。
【００８９】
SCC Draft 2では、ブロックの最初の行(たとえば、一番上の行)の中の画素がランの最初の画素である場合、ビデオエンコーダ20は、ランのランタイプ情報をシグナリングしない。たとえば、ビデオエンコーダ20は、ランがCopy AboveランであるかCopy Indexランであるかをシグナリングしない。言い換えると、SCC Draft 2では、ランタイプ情報は、画素がブロックの最初の行になければシグナリングされない。この場合、ビデオデコーダ30は、ランタイプをCopy Indexであるものと推測し得る。しかしながら、本開示のいくつかの例では、最初のランレングスがバイパスされることをランレングススキップシンタックス要素が示している場合、ビデオエンコーダ20は、以下の条件のいずれかが真である場合を除き、ブロックの最初の行の中の現在の画素において開始するランのパレットランタイプをシグナリングし得る。
・現在の画素が、走査順序においてブロック中の最初の画素である。この場合、ビデオデコーダ30は、ランタイプをCOPY_ABOVEであるものと推測し得る。
・現在の画素がブロックにおける最初の画素ではなく、以前のランタイプがCOPY_ABOVEである。いくつかの例では、COPY_ABOVEランの後に別のCOPY_ABOVEランが来てはならないという規範的な制約があり得るので、現在のランタイプはINDEX_COPYであると推測され得ることに留意されたい。
【００９０】
したがって、1つのそのような例では、パレットランレングスシンタックス要素のセットがブロックの最初のランの長さを示していないとき、ビデオエンコーダ20は、(1)現在の画素が走査順序においてブロックの最初の画素である場合を除き、または(2)現在の画素がブロックの最初の画素ではなく以前のランのランタイプがCopy Aboveランタイプである場合を除き、ある特定のランのためのパレットランタイプシンタックス要素(たとえば、palette_run_type_flagシンタックス要素)を生成する。この例では、現在の画素は、ブロックの最初の行の中にあり、その特定のランの最初の画素である。現在の画素がブロックの最初の画素ではなく、以前のランが存在するとき、その特定のランはその以前のランの後にあり、その特定のランと以前のランとの間に他のランはない。さらに、この例では、ランタイプシンタックス要素は、その特定のランのためのパレットサンプルモードを示し、そのパレットサンプルモードは、Copy AboveまたはCopy Indexのうちの1つである。Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、それぞれの画素のパレットインデックスは、それぞれの画素のすぐ上の画素のパレットインデックスと同じである。Index Copyランタイプを有するランの各々のそれぞれの画素に対して、それぞれの画素のパレットインデックスは、それぞれの画素のすぐ左の画素のパレットインデックスと同じである。
【００９１】
同様の例において、パレットランレングスシンタックス要素のセットがブロックの最初のランの長さを示していないと決定したことに応じて、ビデオデコーダ30は、(1)現在の画素が走査順序においてブロックの最初の画素である場合を除き、または(2)現在の画素がブロックの最初の画素ではなく以前のランのランタイプがCopy Aboveランタイプである場合を除き、ビットストリームからランタイプシンタックス要素を取得する。この例では、現在の画素は、ブロックの最初の行の中にあり、その特定のランの最初の画素である。さらに、この例では、現在の画素がブロックの最初の画素ではなく、以前のランが存在するとき、その特定のランはその以前のランの後に続き、その特定のランと以前のランとの間に他のランはない。その上、この例では、パレットランタイプシンタックス要素は、特定のランのランタイプがCopy AboveランタイプまたはIndex Copyランタイプのうちの1つであることを示す。
【００９２】
1つのそのような例では、ビデオデコーダ30は、ビットストリームからランレングススキップシンタックス要素を取得する。この例では、ブロックは一連のランを備え、一連のランは2つ以上のランを含む。さらに、この例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得する。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。さらに、この例では、ビデオデコーダ30は、ランレングススキップシンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定する。加えて、この例では、ビデオデコーダ30は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定する。さらに、この例では、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定したこと、および現在の画素が走査順序においてブロックの最初の画素であると決定したことに応じて、ビデオデコーダ30は、一連のランの最初のランがCopy Aboveランタイプを有すると推測する。この例では、現在の画素は、ブロックの最初の行の中にあり、最初のランの最初の画素である。本開示の他の箇所において説明されるように、Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、それぞれの画素がCopy Aboveパレットサンプルモードを有するので、それぞれの画素のパレットインデックスは、それぞれの画素のすぐ上の画素のパレットインデックスと同じである。この例では、ビデオデコーダ30は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの画素のパレットインデックスを決定する。この例では、ビデオデコーダ30は、ブロックの画素のパレットインデックスに基づいて、ブロックの画素の値を決定する。
【００９３】
別のそのような例では、ビデオデコーダ30は、ビットストリームからランレングススキップシンタックス要素を取得する。この例では、ブロックは2つ以上のランを含む一連のランを備える。さらに、この例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得する。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。さらに、ビデオデコーダ30は、ランレングススキップシンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定する。この例では、ビデオデコーダ30は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定する。さらに、この例では、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定したこと、および現在の画素が走査順序においてブロックの最初の画素ではなく以前のランのランタイプがCopy Aboveランタイプであると決定したことに応じて、ビデオデコーダ30は、一連のランの最初のランがIndex Copyランタイプを有すると推測する。この例では、現在の画素は、ブロックの最初の行の中にあり、その特定のランの最初の画素である。この例では、特定のランは以前のランの後にあり、特定のランと以前のランとの間に他のランはない。この例では、ビデオデコーダ30は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの画素のパレットインデックスを決定する。加えて、この例では、ビデオデコーダ30は、ブロックの画素のパレットインデックスに基づいて、ブロックの画素の値を決定する。
【００９４】
本開示のいくつかの例によれば、最初のランレングスがバイパスされ(すなわち、ビデオビットストリームにおいてシグナリングされず)、実際の最初のランレングスおよび/または最後のランレングスが0に等しいとき、ビデオエンコーダ20は、最後のランのランタイプをシグナリングしないように構成され得る。この場合、ビデオデコーダ30はランタイプを推測するように構成され得る。
【００９５】
1つのそのような例では、ビデオエンコーダ20は、1つまたは複数のランタイプシンタックス要素のセットを生成し得る。この例では、ランタイプシンタックス要素のセットの各々のそれぞれのランタイプシンタックス要素は、一連のランの中のそれぞれのランのランタイプを示す。それぞれのランのランタイプは、それぞれのランの画素のパレットサンプルモードを示す。この例では、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないとき、ならびに、一連のランの最初のランの長さが0に等しいこと、および/または一連のランの最後のランの長さが0に等しいことを決定したことに応じて、ランタイプシンタックス要素のセットは、一連のランの中の最後のランのランタイプを示すランタイプシンタックス要素を含まない。
【００９６】
同様に、1つのそのような例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のランタイプシンタックス要素のセットを取得する。この例では、ランタイプシンタックス要素のセットの各々のそれぞれのランタイプシンタックス要素は、一連のランの中のそれぞれのランのランタイプを示す。それぞれのランのランタイプは、それぞれのランの画素のパレットサンプルモードを示す。さらに、この例では、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定したことに応じて、ならびに、一連のランの最初のランの長さが0に等しいこと、および/または一連のランの最後のランの長さが0に等しいことを決定したことに応じて、ビデオデコーダ30は、ランタイプシンタックス要素のセットが一連のランの中の最後のランのランタイプを示すランタイプシンタックス要素を含まないと決定する。
【００９７】
本開示のいくつかの例では、ビデオエンコーダ20は、COPY_ABOVEランレングスが0より大きくなければならないことを要求する規範的なビットストリーム制約に従って、シンタックス要素をシグナリングするように構成され得る。ビデオデコーダ30は、この規範的な制約に従ってシンタックス要素を受信して構文解析するように構成される。一例では、Lに等しいCOPY_ABOVEランレングスをコーディングするとき、Lを符号化する代わりに、ビデオエンコーダ20は、L-1を符号化するように構成され得る。最大の可能なランレングスの必要とされるパラメータも、1だけ減らされ得る。たとえば、SCC Draft 2のいくつかの提案において、ビデオエンコーダ20は、最大の実現可能なランレングス(ブロックにおける現在の画素の場所に応じた)を指定するパラメータMを用いてLを符号化することができる。本開示の技法によれば、ビデオエンコーダ20は、パラメータM-1を用いてL-1を符号化するように構成され得る。
【００９８】
上の例に対する代替として、ビデオエンコーダ20は、現在のブロック中のCOPY_ABOVEランレングスのすべてが0より大きいかどうかを示すシンタックス要素(たとえば、フラグ)をシグナリングするように構成され得る。大きい場合、実際のCOPY_ABOVEランレングスRをシグナリングする代わりに、ビデオエンコーダ20はR-1をシグナリングし得る。この例のシンタックス要素は、現在のブロックのパレットサイズが1であり、ブロック中にエスケープ画素がない場合、または、現在のブロックのパレットサイズが0である場合、バイパスされることがある(すなわち、シグナリングされないことがある)。そのような場合、ランレングスはブロック全体であると推測され得る。現在のブロック中のCOPY_ABOVEランレングスのすべてが0より大きいかどうかを示すシンタックス要素は、コンテキストを伴うCABACを使用してコーディングされ得る。使用されるコンテキストは、ビデオブロックサイズ、ビデオブロックのパレットサイズ、エスケープ画素の存在、シグナリングおよび/または推測されるパレットインデックスの数、または他の特性の1つまたは複数に基づき得る。
【００９９】
したがって、1つのそのような例では、ブロックは一連のランを有し得る。この例では、ビデオエンコーダ20は、Copy Aboveランタイプを有する一連のランのすべてのランが0より大きい長さを有するかどうかを示すシンタックス要素を生成する。この例では、Copy Aboveランタイプを有する一連のランのすべてのランが0より大きい長さを有することをシンタックス要素が示しているとき、Copy Aboveランタイプを有する一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素のセットのそれぞれのパレットランレングスシンタックス要素は、それぞれのランの実際の長さより1だけ短い。
【０１００】
同様の例において、ブロックは一連のランを有する。この例では、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得する。この例では、シンタックス要素は、Copy Aboveランタイプを有する一連のランのすべてのランが0より大きい長さを有するかどうかを示す。この例では、Copy Aboveランタイプを有する一連のランのすべてのランが0より大きい長さを有することをシンタックス要素が示していると決定したことに応じて、ビデオデコーダ30は、Copy Aboveランタイプを有する一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素のセットのそれぞれのパレットランレングスシンタックス要素は、それぞれのランの実際の長さより1だけ短いと決定する。
【０１０１】
SCC Draft 2に対するいくつかの提案によれば、現在のブロック中のCOPY_ABOVEランレングスのすべてが0より大きい場合、組合せ(ランタイプ,ランレングス)=(COPY_ABOVE,0)は現在のブロックにおいて無効である。したがって、本開示は、現在のINDEX_COPYランレングスがバイパスされる(たとえば、シグナリングされない)ことを示すために、この組合せ(すなわち、(ランタイプ,ランレングス)=(COPY_ABOVE,0))を使用することを提案する。たとえば、ブロックサイズが4×4であり、(6,2,5)である3つのシグナリングされるINDEX_COPYランレングスがあると仮定する。ビデオデコーダ30が組合せ(INDEX_COPY,6)、(COPY_ABOVE,0)、(INDEX_COPY,5)を受信する場合、ビデオデコーダ30は、(INDEX_COPY,6)(INDEX_COPY,16-3-5-6),(INDEX_COPY,5)として実際のシーケンスを復元するように構成され得る。この例では、値3はシグナリングされるランの数から導き出され得る。
【０１０２】
したがって、1つのそのような例では、ブロックは2つ以上のランを含む一連のランを備える。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモードを有する。この例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得する。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。この例では、以下のうちの1つが当てはまる。
・Copy Aboveランタイプを有する一連のランの各ランが0より大きい長さを有するという要件に、ビットストリームが従う。
・ビットストリームが、Copy Aboveランタイプを有する一連のランのすべてのランが0より大きい長さを有することを示すシンタックス要素を含む。
この例では、ビットストリームから、一連のランの特定のランを示すランタイプシンタックス要素がCopy Aboveランタイプを有することを示すランタイプシンタックス要素と、特定のランの長さが0であることを示すパレットランレングスシンタックス要素のセットのうちのあるパレットランレングスシンタックス要素とを取得したことに応じて、ビデオデコーダ30は、特定のランが実際にはIndex Copyランタイプを有することと、特定のランの長さが実際には、ブロック中の画素の総数から、一連のランの各々の他のランの長さおよび一連のランの中のランの数を引いたものに等しいこととを決定する。
【０１０３】
上の技法は組合せで適用され得る。たとえば、上で論じられた方法では(COPY_ABOVE,0)という多くても1つの組合せしかないので、ビデオデコーダ30が組合せ(COPY_ABOVE,0)を復号した後、上で論じられる規範的な制約に関する技法が適用され得る。
【０１０４】
上で説明されたように、パレットモードでは、パレットは、ブロックサンプルのための予測子または最終的な再構築されたブロックサンプルとして使用され得る色成分値を表すインデックスによって番号付けされたエントリーを含む。さらに、上で簡単に説明されたように、パレットブロック中のサンプルは、3つのランモード、すなわち、Copy-Left(すなわち、Index Copy)、Copy Above、およびescape、またはこれらの等価物を使用してコーディングされ得る。ビデオエンコーダ20は、モードがCOPY_ABOVEランモードであるかどうかを示すために、ビットストリームにおいて1ビンのpalette_modeフラグをシグナリングし得る。モードがCOPY_ABOVEランモードではない場合、ビデオエンコーダ20は、palette_indexシンタックス要素をシグナリングする。palette_indexが予備のパレットインデックス値に等しい場合、現在の画素はエスケープ画素である。たとえば、palette_indexがpalette_sizeに等しい場合、現在の画素はエスケープ画素である。それ以外の場合、現在の画素はINDEXランモード(すなわち、Index Copyランモード)の開始場所である。「Non-CE6: Escape color signaling」、文書番号JCTVC-S0055(以後、JCTVC-S0055)は、エスケープ画素を(palette_mode=COPY_ABOVEおよびpalette_run=0)というペアとしてコーディングすることを提案した。現在の画素がCOPY_ABOVEランの最初である場合、palette_runの値は、デコーダがCOPY_ABOVEとESCAPEを区別できるように、1と実際のランレングスを足したものである。いくつかの事例では、JCTVC-S0055の技法は、現在の画素がエスケープ画素であることを示すために必要とされるビットの数を減らすことができる。
【０１０５】
しかしながら、COPY_ABOVEランモードでは、0というランレングスが最も可能性の高い場合であるので、ESCAPEのために0というランレングスを確保することはコーディング効率の損失をもたらし得る。たとえば、一例では、JCTVC-S0055の技法では、0で終わる単項値を使用してpalette_runシンタックス要素の値が表される場合、エスケープ画素は単項値0を使用して表されるpalette_runシンタックス要素を用いてシグナリングされ、0というランレングスは単項値10を使用して表されるpalette_runシンタックス要素を用いてシグナリングされる。しかしながら、0というランレングスはエスケープ画素よりも一般的であり得る。したがって、この例では、JCTVC-S0055の技法の結果は、ビデオエンコーダが、0に等しい単項値を使用して表されるpalette_runシンタックス要素よりも10に等しい単項値を使用して表されるpalette_runシンタックス要素を多くシグナリングするというものであることがあり、コーディング効率の損失をもたらす。
【０１０６】
本開示の1つまたは複数の技法によれば、ビデオエンコーダ20は、
palette_mode=COPY_ABOVE、およびpalette_runが0より大きい所定の値に等しいというペアとして、escapeモードをシグナリングする。いくつかの例では、palette_run=1または2である。
【０１０７】
いくつかの例では、0より大きい所定の値(たとえば、1または2)以上の長さを有するCOPY_ABOVEランは、エスケープ画素よりも一般的ではないことがあり、かつ/または、0に等しい長さを伴うCOPY_ABOVEランよりも一般的ではないことがある。したがって、そのような例では、COPY_ABOVEに等しいpalette_modeおよび所定の値に等しいpalette_runとしてエスケープ画素をシグナリングすることで、JCTVC-S0055の技法と比較してコーディング効率を向上させることができる。
【０１０８】
本開示の技法の例として、escapeモードがCOPY_ABOVEおよびpalette_run=1としてシグナリングされる場合、実際のCOPY_ABOVEモードでは、palette_runシンタックスは次のようにマッピングされる。
ランレングスが0に等しい場合、palette_run=0である。
ランレングスが1より大きい場合、palette_run=ランレングス+1である。
【０１０９】
本開示の技法の別の例として、escapeモードがCOPY_ABOVEおよびpalette_run=2としてシグナリングされる場合、実際のCOPY_ABOVEモードでは、palette_runシンタックスは次のようにマッピングされる。
ランレングスが0に等しい場合、palette_run=0である。
ランレングスが1に等しい場合、palette_run=1である。
ランレングスが1より大きい場合、palette_run=ランレングス+1である。
【０１１０】
したがって、本開示の1つまたは複数の技法によれば、ビデオデコーダ30は、ビデオデータの符号化された表現を備えるビットストリームから、第1のシンタックス要素(たとえば、palette_mode)および第2のシンタックス要素(たとえば、run_length)を取得することができる。第1のシンタックス要素が第1の値に等しく、第2のシンタックス要素が0より大きい所定の値に等しいとき、ビデオデータの現在の画素はエスケープ画素であると決定される。少なくともいくつかの例では、現在の画素がエスケープ画素である場合、現在の画素の値はパレットに含まれない。現在の画素がエスケープ画素ではない場合、現在の画素の値はパレットに含まれる。さらに、この例では、第1のシンタックス要素が第1の値に等しく、第2のシンタックス要素が所定の値に等しくないとき、ビデオデコーダ30は、現在の画素の値が現在のピクチャにおいて現在の画素のすぐ上の画素の値に等しいと決定することができる。加えて、第1のシンタックス要素が第1の値に等しく、第2のシンタックス要素が所定の値に等しくないとき、ビデオデコーダ30は、第2のシンタックス要素の値に基づいて、上側の隣接画素と同じ値を有する、現在のブロックの中の現在の画素に復号順序において後続する画素の数を示すランレングスを決定することができる。
【０１１１】
いくつかの例では、第1のシンタックス要素の値が第2の異なる値に等しいとき、ビデオデコーダ30は、ビットストリームから第3のシンタックス要素を取得することができ、第3のシンタックス要素はパレットに対するインデックスを示す。加えて、第1のシンタックス要素が第2の値に等しいとき、ビデオデコーダ30は、現在の画素の値がインデックスに対応するパレット中のエントリーによって指定される値に等しいと決定することができる。
【０１１２】
上で示されるように、ビデオデコーダ30は、第2のシンタックス要素(たとえば、run_length)の値に基づいてランレングスを決定することができる。いくつかの例では、第2のシンタックス要素の値が所定の値より小さいとき、ビデオデコーダ30は、ランレングスが第2のシンタックス要素の値に等しいと決定することができる。この例では、第2のシンタックス要素の値が所定の値より大きいとき、ビデオデコーダ30は、ランレングスが第2のシンタックス要素の値に1を足したものに等しいと決定することができる。
【０１１３】
たとえば、一例では、所定の値は1に等しい。この例では、第2のシンタックス要素の値が0に等しいとき、ビデオデコーダ30は、ランレングスが0に等しいと決定することができる。第2のシンタックス要素の値が1より大きいとき、ビデオデコーダ30は、ランレングスが第2のシンタックス要素の値に1を足したものに等しいと決定することができる。
【０１１４】
別の例では、所定の値は2に等しい。この例では、第2のシンタックス要素の値が0に等しいとき、ビデオデコーダ30は、ランレングスが0に等しいと決定することができる。第2のシンタックス要素の値が1に等しいとき、ビデオデコーダ30は、ランレングスが1に等しいと決定することができる。第2のシンタックス要素の値が2より大きいとき、ビデオデコーダ30は、ランレングスが第2のシンタックス要素の値に1を足したものに等しいと決定することができる。
【０１１５】
さらに、本開示の1つまたは複数の技法によれば、ビデオエンコーダ20は、ビデオデータの符号化された表現を備えるビットストリームに、第1のシンタックス要素(たとえば、palette_mode)および第2のシンタックス要素(たとえば、run_length)を含めることができる。ビデオデータの現在の画素がエスケープ画素であるとき、第1のシンタックス要素は第1の値に等しく、第2のシンタックス要素は0より大きい所定の値に等しい。現在の画素がエスケープ画素である場合、現在の画素の値はパレットに含まれない。現在の画素がエスケープ画素ではない場合、現在の画素の値はパレットに含まれる。現在の画素の値が現在のピクチャ中の現在の画素のすぐ上の画素の値に等しいとき、第1のシンタックス要素は第1の値に等しく、第2のシンタックス要素は所定の値に等しくない。さらに、現在の画素の値が現在のピクチャ中の現在の画素のすぐ上の画素の値に等しいとき、ランレングスは第2のシンタックス要素の値から(たとえば、ビデオデコーダ30によって)決定可能であり、ランレングスは、上側の隣接画素と同じ値を有する、復号順序において現在の画素に後続する画素の数を示す。
【０１１６】
さらに、いくつかの例では、第1のシンタックス要素が第2の異なる値に等しいとき、ビデオエンコーダ20は、ビットストリームからの第3のシンタックス要素を含めることができ、第3のシンタックス要素はパレットに対するインデックスを示す。現在の画素の値は、インデックスに対応するパレット中のエントリーによって指定される値に等しい。
【０１１７】
いくつかの例では、第2のシンタックス要素(たとえば、run_length)の値が所定の値より小さいとき、ランレングスは第2のシンタックス要素の値に等しい。そのような例では、第2のシンタックス要素の値が所定の値より大きいとき、ランレングスは第2のシンタックス要素の値に1を足したものに等しい。たとえば、一例では、所定の値は1に等しい。この例では、第2のシンタックス要素の値が0に等しいとき、ランレングスは0に等しい。第2のシンタックス要素の値が1より大きいとき、ランレングスは第2のシンタックス要素の値に1を足したものに等しい。
【０１１８】
別の例では、所定の値は2に等しい。この例では、第2のシンタックス要素の値が0に等しいとき、ランレングスは0に等しい。第2のシンタックス要素の値が1に等しいとき、ランレングスは1に等しい。第2のシンタックス要素の値が2より大きいとき、ランレングスは第2のシンタックス要素の値に1を足したものに等しい。
【０１１９】
palette_modeがCOPY_ABOVEに等しいときのpalette_runのコンテキストは、palette_escape_val_present_flagおよび/またはpalette_sizeおよび/またはCUサイズに依存し得る。palette_escape_val_present_flagは、現在のブロック(たとえば、CU、PU)におけるエスケープサンプルの存在を示し得る。シンタックスpalette_escape_valのすべてが、構文解析の依存関係を減らすために、現在のCUの終わりにシグナリングされ得る。palette_escape_valシンタックス要素は、エスケープ画素の値を示し得る。
【０１２０】
したがって、いくつかの例では、ビデオデコーダ30は、エスケープ画素が現在のブロック中に存在するかどうかを指定するシンタックス要素の値に基づいて、エントロピーコーディングのコンテキストを選択することができる。ビデオデコーダ30は、選択されたエントロピーコーディングのコンテキストを使用して、第1のシンタックス要素をエントロピー復号する(たとえば、CABAC復号する)ことができる。同様に、ビデオエンコーダ20は、エスケープ画素が現在のブロック中に存在するかどうかに基づいて、エントロピーコーディングのコンテキストを選択することができる。ビデオエンコーダ20は、選択されたエントロピーコーディングのコンテキストを使用して、第1のシンタックス要素をエントロピー符号化する(たとえば、CABAC符号化する)ことができる。
【０１２１】
図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は説明のために提供され、広く例示されるとともに本開示で説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングの文脈でビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１２２】
ビデオエンコーダ20は、本開示で説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ20は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVC Draft 10によって指定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。一例では、ビデオエンコーダ20は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックにおける少なくともいくつかの画素位置の画素値を表すためのパレットの中の画素値を選択し、ビデオデータのブロックにおける画素位置のうちの少なくともいくつかを、パレットの中の選択された画素値にそれぞれ対応するパレットの中のエントリーと関連付ける情報をシグナリングするように構成される。シグナリングされた情報は、ビデオデコーダ30によって、ビデオデータを復号するために使用され得る。
【０１２３】
図2の例では、ビデオエンコーダ20は、予測処理ユニット100、ビデオデータメモリ101、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構築ユニット112、フィルタユニット114、復号ピクチャバッファ116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。ビデオエンコーダ20はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成されるパレットベース符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１２４】
ビデオデータメモリ101は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶するように構成される。ビデオデータメモリ101に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101および復号ピクチャバッファ116は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ101は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであってよく、または、これらのコンポーネントに対してオフチップであってよい。
【０１２５】
ビデオエンコーダ20は、ビデオデータを受信する。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB)、および対応するCTBと関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUと関連付けられるCTBを4つの等しいサイズのサブブロックに区分することができ、サブブロックの1つまたは複数を4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【０１２６】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(すなわち、コーディングされた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サイズのための非対称区分をサポートし得る。
【０１２７】
インター予測処理ユニット120は、インター予測をCUの各PUに対して実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックおよびPUの動き情報を含み得る。インター予測処理ユニット120は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUに対して異なる動作を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120は、インター予測をPUに対して実行しない。したがって、Iモードで符号化されるブロックの場合、予測されるブロックは、同じフレーム内で以前符号化された隣接ブロックからの空間予測を使用して形成される。PUがPスライス中にある場合、インター予測処理ユニット120は、単方向インター予測を使用してPUの予測ブロックを生成することができる。
【０１２８】
本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースのコーディングを実行するように構成され得る。HEVCフレームワークに関して、一例として、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードの文脈において(本開示全体にわたって)本明細書で説明される、開示されるプロセスのすべては、付加的または代替的に、PUに適用され得る。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
【０１２９】
パレットベース符号化ユニット122は、たとえば、パレットベースの復号を、たとえば、CUまたはPUに対して、パレットベースの符号化モードが選択されたときに実行することができる。たとえば、パレットベース符号化ユニット122は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの場所の画素値を表すためのパレットの中の画素値を選択し、ビデオデータのブロックの場所の少なくともいくつかを、選択された画素値にそれぞれ対応するパレットの中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット122によって実行されるものとして説明されるが、そのような機能の一部またはすべてが、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１３０】
本開示の態様によれば、パレットベース符号化ユニット122は、以下で図4〜図5を参照して説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、パレットベース符号化ユニット122は、本明細書で説明されるパレットラン隠匿のための技法の任意の組合せを実行するように構成され得る。
【０１３１】
さらに、本開示の例示的な技法によれば、パレットベース符号化ユニット122は、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定することができる。さらに、パレットベース符号化ユニット122は、ブロック中の一連の2つ以上のランを特定し得る。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素を含み得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモードを有し得る。加えて、パレットベース符号化ユニット122は、1つまたは複数のパレットランレングスシンタックス要素のセットを生成し得る。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示し得る。パレットベース符号化ユニット122は、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成し得る。
【０１３２】
イントラ予測処理ユニット126は、イントラ予測をPUに対して実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【０１３３】
イントラ予測をPUに対して実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUの予測データの複数のセットを生成し得る。イントラ予測処理ユニット126は、隣接PUのサンプルブロックからのサンプルを使用して、PUの予測ブロックを生成し得る。PU、CU、およびCTUに対して左から右、上から下への符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左であってよい。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUと関連付けられる領域のサイズに依存し得る。
【０１３４】
予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成される予測データ、またはPUのためにイントラ予測処理ユニット126によって生成される予測データの中から、CUのPUの予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪みの尺度に基づいて、CUのPUの予測データを選択する。選択される予測データの予測ブロックは、選択予測ブロックと本明細書で呼ばれることがある。
【０１３５】
残差生成ユニット102は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)およびCUのPUの選択された予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)に基づいて、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を生成し得る。たとえば、残差生成ユニット102は、残差ブロックの中の各サンプルがCUのコーディングブロックの中のサンプルとCUのPUの対応する選択された予測ブロックの中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
【０１３６】
変換処理ユニット104は、4分木区分を実行して、CUと関連付けられた残差ブロックをCUのTUと関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックと関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび場所は、CUのPUの予測ブロックのサイズおよび場所に基づいてもよく、基づかなくてもよい。「残差4分木」(RQT)と呼ばれる4分木構造が、領域の各々と関連付けられるノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
【０１３７】
変換処理ユニット104は、1つまたは複数の変換をTUの変換ブロックに適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUと関連付けられたブロックを変換するために、様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
【０１３８】
量子化ユニット106は、係数ブロックの中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部またはすべての関連付けられるビット深度を低減し得る。たとえば、nビットの変換係数は、量子化においてmビットの変換係数に切り捨てられてよく、nはmよりも大きい。量子化ユニット106は、CUと関連付けられる量子化パラメータ(QP)値に基づいて、CUのTUと関連付けられる係数ブロックを量子化し得る。ビデオエンコーダ20は、CUと関連付けられるQP値を調整することによって、CUと関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化が情報の損失をもたらすことがあり、したがって、量子化された変換係数の精度は元の精度よりも低いことがある。
【０１３９】
逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、逆量子化および逆変換を係数ブロックに適用して、係数ブロックから残差ブロックを再構築し得る。再構築ユニット112は、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに、再構築された残差ブロックを加算して、TUと関連付けられ再構築された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
【０１４０】
フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUと関連付けられるコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット114が1つまたは複数のデブロッキング動作を再構築されたコーディングブロックに対して実行した後、復号ピクチャバッファ116は、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、インター予測を他のピクチャのPUに対して実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャの中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116の中の再構築されたコーディングブロックを使用し得る。
【０１４１】
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受け取り得る。たとえば、エントロピー符号化ユニット118は、係数ブロックを量子化ユニット106から受け取ることができ、シンタックス要素を予測処理ユニット100から受け取ることができる。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、1つまたは複数のエントロピー符号化動作をデータに対して実行し得る。たとえば、エントロピー符号化ユニット118は、CABAC動作、コンテキスト適応型可変長コーディング(CAVLC)動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成された、エントロピー符号化されたデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUに対するRQTを表すデータを含み得る。
【０１４２】
図3は、本開示の技法を実施するように構成される例示的なビデオデコーダ30を示すブロック図である。図3は説明のために提供され、広く例示されるとともに本開示で説明されるような技法を限定するものではない。説明のために、本開示は、HEVCコーディングの文脈においてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１４３】
ビデオデコーダ30は、本開示で説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的に復号するように構成され得る。非パレットベースコーディングモードは、HEVC Draft 10によって指定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ30は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかの画素位置をパレットの中のエントリーと関連付ける情報を受信し、情報に基づいてパレットの中の画素値を選択し、パレット中の選択された画素値に基づいてブロックの画素値を再構築するように構成され得る。
【０１４４】
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150、ビデオデータメモリ151、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、フィルタユニット160、および復号ピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。ビデオデコーダ30はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成されるパレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１４５】
ビデオデータメモリ151は、ビデオデコーダ30のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどの符号化されたビデオデータを記憶するように構成される。ビデオデータメモリ151に記憶されるビデオデータは、たとえば、チャネル16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ(CPB:coded picture buffer)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードおよび/もしくは出力またはインターコーディングモードおよび/もしくは出力において、たとえば、ビデオデコーダ30によってビデオデータを復号する際に使用するための、復号された(たとえば、参照)ビデオデータを記憶するように構成される参照ピクチャメモリであり得る。ビデオデータメモリ151および復号ピクチャバッファ162は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他のコンポーネントとともにオンチップであってよく、または、それらのコンポーネントに対してオフチップであってよい。
【０１４６】
ビデオデータメモリ151は、ビットストリームの符号化されたビデオデータ(たとえば、NALユニット)を受信し記憶する。エントロピー復号ユニット150は、符号化されたビデオデータ(たとえば、NALユニット)をCPBから受信し、NALユニットを構文解析して、シンタックス要素を取得し得る。エントロピー復号ユニット150は、NALユニットの中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。エントロピー復号ユニット150は、エントロピー符号化ユニット118のプロセスとは全般に逆のプロセスを実行し得る。
【０１４７】
ビットストリームを復号することの一部として、エントロピー復号ユニット150は、シンタックス要素をコーディングされたスライスNALユニットから抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャと関連付けられたPPSを特定するシンタックス要素を含み得る。
【０１４８】
シンタックス要素をビットストリームから取得することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構築動作を実行し得る。CUに対して再構築動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構築動作を実行し得る。CUのTUごとに再構築動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構築し得る。
【０１４９】
CUのTUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、逆量子化ユニット154が適用するべき量子化の程度と、同様に逆量子化の程度とを決定するために、TUのCUと関連付けられるQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスおよび圧縮されたシーケンスを表すために使用されるビット数の比が、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
【０１５０】
逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【０１５１】
PUがイントラ予測を使用して符号化されている場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUの予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するブロックのサンプルに基づいて、PUの予測ブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいて、PUのイントラ予測モードを決定し得る。
【０１５２】
PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を決定し得る。動き補償ユニット164は、PUの動き情報に基づいて、1つまたは複数の参照ブロックを決定し得る。動き補償ユニット164は、1つまたは複数の参照ブロックに基づいて、PUの予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成し得る。
【０１５３】
予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構築し得る。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUの1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUの1つまたは複数の参照領域におけるサンプルに基づいて、PUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【０１５４】
再構築ユニット158は、CUのためのコーディングブロックを再構築するために、適宜、CUのTUのための変換ブロックおよびCUのPUの予測ブロックを、すなわち、イントラ予測データとインター予測データのいずれかを、使用することができる。たとえば、再構築ユニット158は、予測ブロックの対応するサンプルに変換ブロックのサンプルを加算して、CUのコーディングブロックを再構築し得る。
【０１５５】
フィルタユニット160は、デブロッキング動作を実行して、CUのコーディングブロックと関連付けられるブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロックに基づいて、他のCUのPUのためにイントラ予測動作またはインター予測動作を実行し得る。
【０１５６】
ビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベース復号ユニット165は、パレットベース復号を、たとえば、CUまたはPUに対して、パレットベース復号モードが選択されたときに実行することができる。たとえば、パレットベース復号ユニット165は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかの画素位置をパレットの中のエントリーと関連付ける情報を受信し、情報に基づいてパレットの中の画素値を選択し、パレット中の選択された画素値に基づいてブロックの画素値を再構築することができる。様々な機能がパレットベース復号ユニット165によって実行されるものとして説明されるが、そのような機能の一部またはすべてが、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１５７】
パレットベース復号ユニット165は、パレットサンプルモード情報を受信し、パレットサンプルモードがブロックに適用されることをパレットサンプルモード情報が示しているとき、上の動作を実行することができる。パレットサンプルモードがブロックに適用されないことをパレットサンプルモード情報が示しているとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット165は、たとえば、HEVCインター予測コーディングモードまたはHEVCイントラ予測コーディングモードなどの、非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードの1つを備えることがあり、または、単一のパレットベースのコーディングモードしか存在しないことがある。
【０１５８】
本開示のいくつかの例によれば、パレットベース復号ユニット165は、上で論じられたラン隠匿技法を実行するように構成され得る。たとえば、エントロピー復号ユニット150は、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得し得る。ブロックは一連のランを備えることがあり、一連のランは1つまたは複数のランを含む。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。さらに、エントロピー復号ユニット150は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し得る。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。パレットベース復号ユニット165は、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定することができる。加えて、パレットベース復号ユニット165は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定し得る。さらに、パレットベース復号ユニット165は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定することができる。ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスは、パレット中のエントリーを示す。パレット中の各々のそれぞれのエントリーは、サンプル値のそれぞれのセットを示し得る。さらに、パレットベース復号ユニット165は、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定することができる。
【０１５９】
本開示の態様によれば、パレットベース復号ユニット165は、以下で図4〜図5を参照して説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。
【０１６０】
図4は、本開示の技法による、ビデオデータをコーディングするためのパレットを決定することの例を示す概念図である。図4の例は、第1のパレット184と関連付けられた第1のCU180と、第2のパレット192と関連付けられた第2のCU188とを有する、ピクチャ178を含む。以下でより詳細に説明されるように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードを用いてコーディングされたブロック196、およびインター予測コーディングモードを用いてコーディングされたブロック200を含む。
【０１６１】
図4の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)の文脈において、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０１６２】
一般に、パレットは、現在コーディングされているCU、図4の例ではCU188にとって支配的および/または代表的ないくつかの画素値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むものとして示される。いくつかの例では、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、パレットをCUの色成分ごとに別個にコーディングし得る。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレット、CUのクロマ(U)成分のための別のパレット、およびCUのクロマ(V)成分のためのさらに別のパレットを符号化し得る。この例では、YパレットのエントリーがCUの画素のY値を表すことができ、UパレットのエントリーがCUの画素のU値を表すことができ、VパレットのエントリーがCUの画素のV値を表すことができる。
【０１６３】
他の例では、ビデオエンコーダ20は、CUのすべての色成分に対して単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yi、Ui、およびViを含む3つの値であるi番目のエントリーを有するパレットを符号化し得る。この場合、パレットは、画素の成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず限定を意図しない。
【０１６４】
図4の例では、第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つまたは複数を使用して、画素値を再構築し得る。したがって、パレットベースの復号の際にビデオデコーダ30によって使用するために、第1のパレット184が、ビデオエンコーダ20によって、符号化されたビデオデータビットストリームの中で送信される。
【０１６５】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、最大パレットサイズを示す1つまたは複数のシンタックス要素を使用し得る。いくつかの例では、最大パレットサイズは、コーディングされているビデオデータの特定のプロファイル、レベル、またはビット深度に基づき得る。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、最大パレットサイズを示す1つまたは複数のシンタックス要素を使用することができ、最大パレットサイズは、CU180などのコーディングされているブロックのサイズに基づき得る。
【０１６６】
説明を目的とするある例では、ビデオエンコーダ20およびビデオデコーダ30は、CU180のための第1のパレット184を構築するとき、最大パレットサイズを示すデータを使用し得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、データによって示される最大パレットサイズに達するまで、エントリーを第1のパレット184に足し続け得る。ビデオエンコーダ20およびビデオデコーダ30は次いで、構築された第1のパレット184を使用してCU180をコーディングし得る。
【０１６７】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では、第1のパレット184がそこから決定される1つまたは複数のブロックを探し出し得る。予測の目的で使用されているエントリーの組合せは、予測子パレットと呼ばれ得る。図4に示される例などのいくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188のための予測パレットを決定するとき、左側の隣接CU(第1のCU180)などの以前にコーディングされたCUを探し出し得る。
【０１６８】
図4の例では、第2のパレット192は、それぞれ、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3を有する、3つのエントリー208〜212を含む。エントリー208〜212は、インデックス値を、それぞれ、画素値A、画素値B、および画素値Dを含む画素値と関連付ける。この例では、ビデオエンコーダ20は、(予測子パレットを表す、ただしこの予測子パレットはいくつかのブロックのエントリーを含み得る)第1のパレット184のどのエントリーが第2のパレット192に含まれるかを示す1つまたは複数のシンタックス要素をコーディングし得る。
【０１６９】
図5は、本開示の技法による、画素のブロックのためのパレットに対するインデックスを決定することの例を示す概念図である。たとえば、図5は、インデックス値と関連付けられる画素のそれぞれの場所をパレット244のエントリーと関連付けるインデックス値(値1、2、および3)のマップ240を含む。
【０１７０】
たとえば、インデックス1は値Aと関連付けられ、インデックス2は値Bと関連付けられ、インデックス3は値Cと関連付けられる。加えて、エスケープサンプルが暗黙的なエスケープシグナリングを使用して示されるとき、ビデオエンコーダ20およびビデオデコーダ30はまた、図5においてインデックス4として示される追加のインデックスをパレット244に足すことができ、これは、インデックス4と関連付けられるマップ240のサンプルがエスケープサンプルであることを示し得る。
【０１７１】
図5の例では、マップ240は各画素の場所のインデックス値を含むものとして示されるが、他の例では、画素値をパレット244のエントリーと関連付けるインデックス値と、すべての画素の場所が関連付けられるとは限らないことを理解されたい。すなわち、上で述べられたように、いくつかの例では、ビデオエンコーダ20は、画素値がパレット244に含まれない場合、マップ240の中のある場所に対する実際の画素値(またはその量子化されたバージョン)を示すものを、符号化する(かつビデオデコーダ30が符号化されたビットストリームからそれを取得する)ことができる。
【０１７２】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どの画素の場所がインデックス値と関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i,j)のエントリーがCUの(i,j)の場所に対応すると仮定する。ビデオエンコーダ20は、エントリーが関連するインデックス値を有するかどうかを示す、マップの各エントリー(すなわち、各画素の場所)のための1つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、CUの中の(i,j)の位置における画素値がパレット244の中の値の1つであることを示すために、1という値を有するフラグを符号化することができる。
【０１７３】
ビデオエンコーダ20は、そのような例では、パレット中の画素値を示すために、かつ、ビデオデコーダが画素値を再構築することを可能にするために、パレットインデックス(図5の例では値1〜3として示される)を符号化することもできる。パレット244が単一のエントリーおよび関連する画素値を含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ20は、CUの中の(i,j)の位置における画素値がパレット244の中の値の1つではないことを示すために、0という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ20はまた、画素値を再構築する際、ビデオデコーダ30による使用のために画素値を示すものを符号化することができる。いくつかの事例では、画素値は有損失の方式でコーディングされ得る。
【０１７４】
CUの1つの場所における画素の値は、CUの他の場所における1つまたは複数の他の画素の値を示すものを提供し得る。たとえば、CUの隣接する画素の場所が同じ画素値を有すること、または(2つ以上の画素値が単一のインデックス値にマッピングされ得る、有損失コーディングの場合に)同じインデックス値をマッピングされ得ることは、比較的確率が高い。
【０１７５】
したがって、ビデオエンコーダ20は、同じ画素値またはインデックス値を有する、所与の走査順序の中の1つの画素または2つ以上の連続する画素もしくはインデックスの値の数を示す、1つまたは複数のシンタックス要素を符号化することができる。上で述べられたように、同じパレットサンプルモードを有する画素の列(たとえば、escapeモード、Copy Above、Index Copy)は、本明細書ではランと呼ばれ得る。説明を目的とする例では、所与の走査順序の中の2つの連続する画素が異なるインデックス値を有する場合、ランは0に等しい。所与の走査順序の中の2つの連続する画素が同じインデックス値を有するが、走査順序の中の3番目の画素が異なるインデックス値を有する場合、タイプIndex Copyのランは1に等しい。同じインデックス値を伴う3つの連続する画素では、ランは2であり、以下同様である。ビデオデコーダ30は、ランを示すシンタックス要素を符号化されたビットストリームから取得し、そのデータを使用して、同じパレットサンプルモードを有する連続する位置の数を決定することができる。
【０１７６】
上で述べられたように、ランは、CopyFromTop(すなわち、COPY_ABOVE)またはValue(すなわち、INDEX_COPY)モードとともに使用され得る。説明を目的とする例では、マップ240の行264および268を考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という3つのインデックス値、「2」という2つのインデックス値、および「3」という3つのインデックス値を含む。行268は、「1」という5つのインデックス値、「3」という2つのインデックス値、およびパレット244に含まれない1つのサンプル(インデックス4によって表される、しかし明示的なエスケープシグナリングのためにサンプルレベルのエスケープフラグが使用され得る)を含み、このサンプルはエスケープサンプルと呼ばれ得る。この例では、ビデオエンコーダ20は、行268のデータを符号化するとき、ランが後に続く行264の特定のエントリーを特定することができる(たとえば、CopyFromTopモード)。たとえば、ビデオエンコーダ20は、行268の最初の場所(行268の一番左の場所)が行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向における2つの連続するエントリーの次のランが行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。
【０１７７】
この例では、ビデオエンコーダ20は、行268のためのデータを符号化するためにCopyFromTopモードを使用することができる。たとえば、ビデオエンコーダ20は、行268の最初の場所(行268の一番左の場所)が行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向における2つの連続するエントリーの次のランが行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。
【０１７８】
行264の最初の場所および2つのエントリーのラン(上で述べられた)を示す1つまたは複数のシンタックス要素を符号化した後で、ビデオエンコーダ20は、行268の中の(左から右の順序での)4番目と5番目の場所に対して、4番目の場所に対して1という値を示す1つまたは複数のシンタックス要素と、1というランを示す1つまたは複数のシンタックス要素とを符号化することができる(たとえば、Valueモード)。したがって、ビデオエンコーダ20は、別の行を参照することなくこれらの2つの場所を符号化する。
【０１７９】
ビデオエンコーダ20は次いで、行268の中の3というインデックス値を有する最初の場所を、上の行264に対するCopyFromTopモードを使用して符号化することができる。たとえば、ビデオエンコーダ20は、CopyFromTopモードおよび1というランをシグナリングすることができる。したがって、ビデオエンコーダ20は、行の画素値もしくはインデックス値を行の他の値に対してコーディングすること、たとえば、ランを使用すること、行の画素値もしくはインデックス値を別の行(または列)の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。いくつかの例では、ビデオエンコーダ20は、この選択を行うためにレート/歪みの最適化を実行することができる。
【０１８０】
ビデオエンコーダ20は次いで、第1のパレット244に含まれない行268の(左から右の順序での)最後のサンプルのエスケープサンプルを符号化することができる。たとえば、ビデオエンコーダ20は、行268の最後の場所をエスケープサンプルとして符号化することができる。すなわち、ビデオエンコーダ20は、行268の最後の場所がエスケープサンプル(たとえば、インデックス4)であることを示すもの、さらに、サンプル値を示すものを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームから上で説明されたシンタックスを取得し、そのようなシンタックスを使用して行268を再構築することができる。
【０１８１】
ビデオデコーダ30は、上で説明されたシンタックス要素を受信し、行268を再構築することができる。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の場所に対する関連するインデックス値の複製元とすべき、隣接する行の中の特定の位置を示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する走査順序の中の連続する場所(たとえば、1つの場所または2つ以上の連続する場所)の数を示すデータを取得することができる。水平方向の走査順序に関して説明されるが、本開示の技法は、垂直方向または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)の走査順序などの、別の走査順序にも適用され得る。
【０１８２】
本開示の技法によれば、図5の例では、ビデオエンコーダ20は、マップ240の最初のランまたは最後のランの長さのシグナリングがスキップされるかどうかを示す、ランレングススキップシンタックス要素をシグナリングすることができる。
【０１８３】
図6Aは、本開示の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。本開示のフローチャートは、例として与えられる。本開示の技法による他の例示的な動作は、より多数の、より少数の、または異なる活動を含み得る。さらに、本開示の技法による他の例示的な動作は、異なる順序の、または並列の活動を含み得る。
【０１８４】
図6Aの例では、ビデオエンコーダ20は、ビデオデータのブロックの非エスケープコーディングされた画素のパレットインデックスを決定する(300)。ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のパレットインデックスは、パレット中のエントリーを示す。パレット中の各エントリーは、1つまたは複数のサンプル値のセットを示す。非エスケープコーディングされた画素は、escapeモード以外のパレットサンプルモード(たとえば、Copy AboveモードまたはIndex Copyモード)を使用して符号化された画素である。
【０１８５】
さらに、図6Aの例では、ビデオエンコーダ20は、ブロック中の一連のランを特定する(302)。一連のランは2つ以上のランを含み得る。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモード(たとえば、escapeモード、Copy Aboveモード、Index Copyモード)を有し得る。
【０１８６】
加えて、図6Aの例では、ビデオエンコーダ20は、1つまたは複数のパレットランレングスシンタックス要素のセットを生成する(304)。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。さらに、図6Aの例では、ビデオエンコーダ20は、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないことを示す特定の値を有するシンタックス要素を生成する(306)。
【０１８７】
図6Bは、本開示の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図6Bの例では、ビデオデコーダ30は、ビデオデータのブロックの符号化された表現を備えるビットストリームからシンタックス要素を取得する(350)。ブロックは一連のランを備える。一連のランは2つ以上のランを含み得る。一連のランの中の各々のそれぞれのランは、ブロックの1つの画素または2つ以上の連続する画素からなり得る。さらに、一連のランの各々のそれぞれのランの各画素は、同じパレットサンプルモード(たとえば、escapeモード、Copy Aboveモード、Index Copyモード)を有する。加えて、図6Bの例では、ビデオデコーダ30は、ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得する(352)。1つまたは複数のパレットランレングスシンタックス要素は、一連のランの中の1つまたは複数のランの長さを示す。
【０１８８】
さらに、図6Bの例では、ビデオデコーダ30は、シンタックス要素が特定の値を有することに基づいて、パレットランレングスシンタックス要素のセットが一連のランの最初のランの長さを示していないと決定する(354)。さらに、図6Bの例では、ビデオデコーダ30は、ブロック中の画素の数およびパレットランレングスシンタックス要素のセットによって示される長さに基づいて、一連のランの最初のランの長さを決定する(356)。
【０１８９】
加えて、図6Bの例では、ビデオデコーダ30は、ブロックの画素のパレットサンプルモードに基づいて、ブロックの非エスケープコーディングされた画素のパレットインデックスを決定する(358)。ブロックの各々のそれぞれの非エスケープコーディングされた画素に対して、それぞれの非エスケープコーディングされた画素のそれぞれのパレットインデックスは、パレット中のエントリーを示す。パレット中の各々のそれぞれのエントリーは、1つまたは複数のサンプル値のそれぞれのセットを示す。図6Bの例では、ビデオデコーダ30は、ブロックの非エスケープコーディングされた画素のパレットインデックスに基づいて、ブロックの非エスケープコーディングされた画素の値を決定する(360)。
【０１９０】
以下は、本開示のいくつかの例の段落のリストである。
【実施例１】
【０１９１】
ビデオデータを処理する方法であって、この方法は、色値のパレットと1つまたは複数のパレットランレングスシンタックス要素とを使用してビデオデータのブロックをコーディングするステップであって、パレットランレングスシンタックス要素が同じパレットインデックスを使用するブロック中のいくつかの画素のランレングスを示す、ステップと、1つまたは複数のパレットランレングスシンタックス要素の特定の1つがシグナリングされないかどうかを示す第1のシンタックス要素をコーディングするステップとを備える。
【実施例２】
【０１９２】
1つまたは複数のパレットランレングスシンタックス要素の特定の1つが、ビデオデータのブロック中の最初のパレットランレングスシンタックス要素である、実施例1の方法。
【実施例３】
【０１９３】
最初のパレットランレングスシンタックス要素がシグナリングされないことを第1のシンタックス要素が示し、最初のパレットランレングスシンタックス要素のランレングスが0という一時的なランレングスであると推測するステップと、ビデオデータのブロックに対する後で受信されるパレットランレングスシンタックス要素に基づいて実際のランレングスを計算することによって、0という一時的なランレングスを置き換えるステップとをさらに備える、実施例2の方法。
【実施例４】
【０１９４】
最初のパレットランレングスシンタックス要素がシグナリングされないことを第1のシンタックス要素が示し、ビデオデータのブロックをコーディングするステップがさらに、パレットランタイプに従ってビデオデータのブロックをコーディングするステップを備え、ビデオデータのブロックの最初の行の中の現在コーディングされている画素が走査順序において最初の画素ではない場合、ビデオデータのブロックの最初の行のパレットランタイプを示す第2のシンタックス要素をコーディングするステップと、ビデオデータのブロックの最初の行の中の現在コーディングされている画素が走査順序において最初の画素である場合、パレットランタイプをCOPY_ABOVEランタイプであるものとして示す第2のシンタックス要素の値を推測するステップとをさらに備える、実施例2の方法。
【実施例５】
【０１９５】
最初のパレットランレングスシンタックス要素がシグナリングされないことを第1のシンタックス要素が示し、ビデオデータのブロックをコーディングするステップがさらに、パレットランタイプに従ってビデオデータのブロックをコーディングするステップを備え、ビデオデータのブロックの最初の行の中の現在コーディングされている画素がブロック中の最初の画素であり、以前のパレットランタイプがCOPY_ABOVEランタイプではない場合に、ビデオデータのブロックの最初の行のパレットランタイプを示す第2のシンタックス要素をコーディングするステップと、ビデオデータのブロックの最初の行の中の現在コーディングされている画素がブロック中の最初の画素ではなく、以前のパレットランタイプがCOPY_ABOVEランタイプである場合に、パレットラインタイプを示す第2のシンタックス要素の値をINDEX_COPYランタイプであるものとして推測するステップとをさらに備える、実施例2の方法。
【実施例６】
【０１９６】
COPY_ABOVEランレングスが、0より大きい長さを有するものとして定義される、実施例1の方法。
【実施例７】
【０１９７】
ビデオデータのブロックに対するすべてのCOPY_ABOVEランレングスが0より大きいかどうかを示す第3のシンタックス要素をコーディングするステップをさらに備える、実施例6の方法。
【実施例８】
【０１９８】
ビデオデータのブロックに対するすべてのCOPY_ABOVEランレングスが0より大きいことを第3のシンタックス要素が示している場合、COPY_ABOVEランタイプと0というランレングスとの組合せをコーディングしてINDEX_COPYランレングスを示すステップをさらに備える、実施例7の方法。
【実施例９】
【０１９９】
1つまたは複数のパレットランレングスシンタックス要素の特定の1つが、ビデオデータのブロック中の最後のパレットランレングスシンタックス要素である、実施例1の方法。
【実施例１０】
【０２００】
色値のパレットが1というサイズを有し、ビデオデータのブロックをコーディングするステップがエスケープ画素の使用を伴わない場合に、第1のシンタックス要素の値を推測するステップと、ビデオデータのブロック全体に対するランレングスを推測するステップとをさらに備える、実施例1の方法。
【実施例１１】
【０２０１】
色値のパレットが0というサイズを有する場合に、第1のシンタックス要素の値を推測するステップと、ビデオデータのブロック全体に対するランレングスを推測するステップとをさらに備える、実施例1の方法。
【実施例１２】
【０２０２】
コンテキスト適応バイナリ算術コーディング(CABAC)を使用して第1のシンタックス要素をコーディングするステップをさらに備える、実施例1の方法。
【実施例１３】
【０２０３】
実施例1〜12の技法の任意の組合せを実行するように構成される、ビデオエンコーダ。
【実施例１４】
【０２０４】
実施例1〜12の技法の任意の組合せを実行するように構成される、ビデオデコーダ。
【実施例１５】
【０２０５】
実施例1〜12の技法の任意の組合せを実行するための手段を備える、装置。
【実施例１６】
【０２０６】
実施例1〜12の技法の任意の組合せを備える、方法。
【実施例１７】
【０２０７】
実行されると、1つまたは複数のプロセッサに、実施例1〜12の技法の任意の組合せを実行させる命令を記憶するコンピュータ可読記憶媒体。
【０２０８】
本明細書で説明される技法のすべてが、個別に、または組み合わせて使用され得ることを理解されたい。例に応じて、本明細書で説明される技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理またはマルチプロセッサを通じて同時に実行されることがある。加えて、明快のために本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダと関連したユニットまたはモジュールの組合せによって実行されてもよいことを理解されたい。
【０２０９】
本開示の特定の態様は、説明を目的にHEVC規格に関して説明されている。しかしながら、本開示で説明される技法は、まだ開発されていない他の標準的なまたは独自のビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０２１０】
上で説明された技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、それらの両方が一般にビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０２１１】
技法の様々な態様の組合せが上で説明されたが、これらの組合せは単に本開示において説明される技法の例を示すために与えられている。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示において説明される技法の様々な態様の考えられる組合せを包含し得る。
【０２１２】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２１３】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【０２１４】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくはディスクリート論理回路のような、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明される技法の実装に適した任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で与えられてよく、あるいは複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装されてよい。
【０２１５】
本開示の技法は、ワイヤレス送受話器、集積回路(IC)、また1組のIC(たとえば、チップセット)を含む、様々なデバイスもしくは装置において実施され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的側面を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されているが、それらは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて結合されてもよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供されてもよい。
【０２１６】
様々な例が説明されてきた。これらの例および他の例は以下の特許請求の範囲内に入る。
【符号の説明】
【０２１７】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
16  チャネル
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
100  予測処理ユニット
101  ビデオデータメモリ
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換処理ユニット
112  再構築ユニット
114  フィルタユニット
116  復号ピクチャバッファ
118  エントロピー符号化ユニット
120  インター予測処理ユニット
122  パレットベース符号化ユニット
126  イントラ予測処理ユニット
150  エントロピー復号ユニット
151  ビデオデータメモリ
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット
158  再構築ユニット
160  フィルタユニット
162  復号ピクチャバッファ
164  動き補償ユニット
165  パレットベース復号ユニット
166  イントラ予測処理ユニット
178  ピクチャ
180  第1のCU
184  第1のパレット
188  第2のCU
192  第2のパレット
196  イントラ予測コーディングモードを用いてコーディングされたブロック
200  インター予測コーディングモードを用いてコーディングされたブロック
202  エントリー
204  エントリー
206  エントリー
208  エントリー
210  エントリー
212  エントリー
240  マップ
244  パレット
264  行
268  行
【図１】
2017535166.tif 000005
【図２】
2017535166.tif 000006
【図３】
2017535166.tif 000007
【図４】
2017535166.tif 000008
【図５】
2017535166.tif 000009
【図６Ａ】
2017535166.tif 000010
【図６Ｂ】
2017535166.tif 000011
【手続補正書】
【提出日】平成29年4月11日(2017.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
前記ビデオデータの符号化されたピクチャの表現を形成するビットのシーケンスを備えるビットストリームからシンタックス要素を取得するステップであって、前記シンタックス要素がブロックレベルシンタックス要素であり、前記ピクチャの1つのブロックが一連のランを備え、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの中の特定の走査順序における1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得するステップであって、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示す、ステップと、
前記一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記シンタックス要素が示していると決定するステップと、
前記ブロック中の画素の数およびパレットランレングスシンタックス要素の前記セットによって示される前記長さに基づいて、前記一連のランの前記最初のランの前記長さを決定するステップであって、
画素がCopy Aboveモードを使用してコーディングされる、前記一連のランの各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスがそれぞれの上側の隣接サンプルから複製され、
画素がIndex Copyモードを使用してコーディングされる、前記一連のランの各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスの値が、シグナリングされる値であり、
画素が前記Copy Aboveモードまたは前記Index Copyモードを使用してコーディングされる、各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素の前記それぞれのパレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示す、ステップと、
前記画素の前記パレットインデックスに基づいて、前記ブロックの前記画素の値を決定するステップとを備える、方法。
【請求項２】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、前記第2のシンタックス要素が第2のブロックレベルシンタックス要素であり、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2の一連のランの最後のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記第2のシンタックス要素が示していると決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最後のランの前記長さを決定するステップと、
前記第2のブロックの画素のパレットインデックスに基づいて、前記第2のブロックの前記画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項３】
(1)前記パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記ビットストリームが前記シンタックス要素を含んでいると決定するステップをさらに備える、請求項1に記載の方法。
【請求項４】
前記シンタックス要素が第1のシンタックス要素であり、
前記第1の一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記シンタックス要素が示していると決定したことに応じて、(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランが前記Copy Aboveランタイプを有する場合を除き、前記ビットストリームから第2のシンタックス要素を取得するステップをさらに備え、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、前記特定のランのランタイプが前記Copy AboveランタイプまたはIndex Copyランタイプのうちの1つであることを示す、請求項1に記載の方法。
【請求項５】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、前記第2のシンタックス要素が第2のブロックレベルシンタックス要素であり、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2の一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記第2のシンタックス要素が示していると決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最初のランの前記長さを決定するステップと、
前記第2の一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないと決定したこと、および、現在の画素が走査順序において前記第2のブロックの最初の画素であると決定したことに応じて、前記第2の一連のランの前記最初のランが前記Copy Aboveランタイプを有すると推測するステップであって、前記現在の画素が前記ブロックの最初の行の中にあり、前記最初のランの最初の画素である、ステップと、
前記第2のブロックの画素のパレットインデックスに基づいて、前記第2のブロックの前記画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項６】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、
前記ビットストリームから、第2のシンタックス要素を取得するステップであって、前記第2のシンタックス要素が第2のブロックレベルシンタックス要素であり、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
前記第2の一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記第2のシンタックス要素が示していると決定するステップと、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最初のランの前記長さを決定するステップと、
前記第2の一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないと決定したこと、および現在の画素が走査順序において前記第2のブロックの前記最初の画素ではなく以前のランのランタイプが前記Copy Aboveランタイプであると決定したことに応じて、前記第2の一連のランの特定のランが前記Index Copyランタイプを有すると推測する、ステップであって、
前記現在の画素が、前記ブロックの前記最初の行の中にあり、前記特定のランの前記最初の画素であり、
前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがない、ステップと、
前記第2のブロックの画素のパレットインデックスに基づいて、前記第2のブロックの前記画素の値を決定するステップとをさらに備える、請求項1に記載の方法。
【請求項７】
前記ビットストリームから、1つまたは複数のランタイプシンタックス要素のセットを取得するステップであって、ランタイプシンタックス要素の前記セットの各々のそれぞれのランタイプシンタックス要素が前記一連のランの中のそれぞれのランのランタイプを示す、ステップと、
前記一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないと決定したことに応じて、ならびに、前記一連のランの前記最初のランの前記長さが0に等しいこと、および/または前記一連のランの最後のランの長さが0に等しいことを決定したことに応じて、ランタイプシンタックス要素の前記セットが前記一連のランの中の前記最後のランのランタイプを示すランタイプシンタックス要素を含まないと決定するステップとをさらに備える、請求項1に記載の方法。
【請求項８】
前記シンタックス要素が第1のシンタックス要素であり、
前記ビットストリームから第2のシンタックス要素を取得するステップであって、前記第2のシンタックス要素が、前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示す、ステップと、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示していると決定したことに応じて、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短いと決定するステップとをさらに備える、請求項1に記載の方法。
【請求項９】
前記ブロックが第1のブロックであり、
第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップをさらに備え、
前記Copy Aboveランタイプを有する前記第2の一連のランの各ランが0より大きい長さを有するという要件に、前記ビットストリームが従うことと、
前記シンタックス要素が第1のシンタックス要素であり、前記ビットストリームが、前記Copy Aboveランタイプを有する前記第2の一連のランのすべてのランが0より大きい長さを有することを示す第2のシンタックス要素を含むこと
のうちの1つが当てはまり、
前記ビットストリームから、前記第2の一連のランの特定のランが前記Copy Aboveランタイプを有することを示すランタイプシンタックス要素と、前記特定のランの長さが0であることを示すパレットランレングスシンタックス要素の前記第2のセットのうちのあるパレットランレングスシンタックス要素とを取得したことに応じて、前記特定のランが実際には前記Index Copyランタイプを有することと、前記特定のランの前記長さが実際には、前記第2のブロック中の画素の総数から、前記第2の一連のランの各々の他のランの前記長さおよび前記第2の一連のランの中のランの数を引いたものに等しいこととを決定するステップをさらに備える、請求項1に記載の方法。
【請求項１０】
複数のコンテキストからあるコンテキストを選択するステップであって、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく、ステップと、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を復号するステップとをさらに備える、請求項1に記載の方法。
【請求項１１】
ビデオデータを符号化する方法であって、
前記ビデオデータのブロック中の一連のランを特定するステップであって、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの中の特定の走査順序における1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
1つまたは複数のパレットランレングスシンタックス要素のセットを生成するステップであって、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示す、ステップと、
前記一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が、前記ビデオデータの符号化されたピクチャの表現を形成するビットのシーケンスを備えるビットストリームにおいてシグナリングされないことを示す、シンタックス要素を生成するステップであって、前記シンタックス要素がブロックレベルシンタックス要素である、ステップとを備える、方法。
【請求項１２】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記一連のランが第1の一連のランであり、前記パレットが第1のパレットであり、
第2の一連のランを特定するステップであって、前記第2の一連のランの各々のそれぞれのランが前記ビデオデータの第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有する、ステップと、
1つまたは複数のパレットランレングスシンタックス要素の第2のセットを生成するステップであって、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示す、ステップと、
第2のシンタックス要素を生成するステップであって、前記第2のシンタックス要素が、前記第2の一連のランの最後のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを示す、ステップとをさらに備える、請求項11に記載の方法。
【請求項１３】
前記シンタックス要素を生成するステップが、(1)パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記シンタックス要素を生成するステップを備える、請求項11に記載の方法。
【請求項１４】
前記シンタックス要素が第1のシンタックス要素であり、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、第2のシンタックス要素を生成するステップをさらに備え、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、Copy AboveまたはIndex Copyのうちの1つであるものとして前記特定のランのランタイプを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、それぞれの上側の隣接サンプルから複製され、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、シグナリングされる値である、請求項11に記載の方法。
【請求項１５】
1つまたは複数のランタイプシンタックス要素のセットを生成するステップをさらに備え、ランタイプシンタックス要素の前記セットの各々のそれぞれのランタイプシンタックス要素が前記一連のランの中のそれぞれのランのランタイプを示し、
前記一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないとき、ならびに、前記一連のランの前記最初のランの前記長さが0に等しいこと、および/または前記一連のランの最後のランの前記長さが0に等しいことを決定したことに応じて、前記一連のランの中の前記最後のランのランタイプを示すランタイプシンタックス要素が前記ビットストリームにおいてシグナリングされない、請求項11に記載の方法。
【請求項１６】
前記シンタックス要素が第1のシンタックス要素であり、
第2のシンタックス要素を生成するステップをさらに備え、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、それぞれの上側の隣接サンプルから複製され、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示しているとき、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短い、請求項11に記載の方法。
【請求項１７】
複数のコンテキストからあるコンテキストを選択するステップであって、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づく、ステップと、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を符号化するステップとをさらに備える、請求項11に記載の方法。
【請求項１８】
ビデオデータを復号するためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータの符号化されたピクチャの表現を形成するビットのシーケンスを備えるビットストリームからシンタックス要素を取得し、前記シンタックス要素がブロックレベルシンタックス要素であり、前記ピクチャの1つのブロックが一連のランを備え、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの中の特定の走査順序における1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素のセットを取得し、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示し、
前記一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記シンタックス要素が示していると決定し、
前記ブロック中の画素の数およびパレットランレングスシンタックス要素の前記セットによって示される前記長さに基づいて、前記一連のランの前記最初のランの前記長さを決定し、
画素がCopy Aboveモードを使用してコーディングされる、前記一連のランの各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスがそれぞれの上側の隣接サンプルから複製され、
画素がIndex Copyモードを使用してコーディングされる、前記一連のランの各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスの値が、シグナリングされる値であり、
画素が前記Copy Aboveモードまたは前記Index Copyモードを使用してコーディングされる、各々のそれぞれのランの各々のそれぞれの画素に対して、前記それぞれの画素の前記それぞれのパレットインデックスがパレット中のエントリーを示し、前記パレット中の各々のそれぞれのエントリーがサンプル値のそれぞれのセットを示し、
前記ブロックの前記画素の前記パレットインデックスに基づいて、前記ブロックの前記画素の値を決定するように構成される、デバイス。
【請求項１９】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記1つまたは複数のプロセッサが、
前記ビットストリームから、第2のシンタックス要素を取得し、前記第2のシンタックス要素が第2のブロックレベルシンタックス要素であり、第2のブロックが第2の一連のランを備え、前記第2の一連のランが2つ以上のランを含み、前記第2の一連のランの各々のそれぞれのランが前記第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
前記ビットストリームから、1つまたは複数のパレットランレングスシンタックス要素の第2のセットを取得し、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示し、
前記第2の一連のランの最後のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記第2のシンタックス要素が示していると決定し、
前記第2のブロック中の画素の数およびパレットランレングスシンタックス要素の前記第2のセットによって示される前記長さに基づいて、前記第2の一連のランの前記最後のランの前記長さを決定し、
前記第2のブロックの画素のパレットインデックスに基づいて、前記第2のブロックの前記画素の値を決定するように構成される、請求項18に記載のデバイス。
【請求項２０】
(1)前記パレットのサイズが1に等しくないこと、または前記ブロック中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記ビットストリームが前記シンタックス要素を含んでいると前記1つまたは複数のプロセッサが決定するように、前記1つまたは複数のプロセッサが構成される、請求書18に記載のデバイス。
【請求項２１】
前記シンタックス要素が第1のシンタックス要素であり、前記一連のランの前記最初のランの前記長さを示す前記パレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを前記シンタックス要素が示していると決定したことに応じて、前記1つまたは複数のプロセッサが、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランが前記Copy Aboveランタイプを有する場合を除き、前記ビットストリームから第2のシンタックス要素を取得するように、前記1つまたは複数のプロセッサが構成され、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が、前記Copy AboveランタイプまたはIndex Copyランタイプのうちの1つであるものとして前記特定のランのランタイプを示す、請求項18に記載のデバイス。
【請求項２２】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサがさらに、
前記ビットストリームから第2のシンタックス要素を取得し、前記第2のシンタックス要素が、前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示していると決定したことに応じて、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短いと決定する
ように構成される、請求項18に記載のデバイス。
【請求項２３】
前記1つまたは複数のプロセッサが、
複数のコンテキストからあるコンテキストを選択し、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロック中に存在するかどうか、および前記ブロック中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づき、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を復号するように構成される、請求項18に記載のデバイス。
【請求項２４】
ビデオデータを符号化するためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータのブロック中の一連のランを特定し、前記一連のランが2つ以上のランを含み、前記一連のランの各々のそれぞれのランが前記ブロックの中の特定の走査順序における1つの画素または2つ以上の連続する画素からなり、前記一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
1つまたは複数のパレットランレングスシンタックス要素のセットを生成し、前記1つまたは複数のパレットランレングスシンタックス要素が前記一連のランの中の1つまたは複数のランの長さを示し、
前記一連のランの最初のランの長さを示すパレットランレングスシンタックス要素が、前記ビデオデータの符号化されたピクチャの表現を形成するビットのシーケンスを備えるビットストリームにおいてシグナリングされないことを示す、シンタックス要素を生成し、前記シンタックス要素がブロックレベルシンタックス要素である
ように構成される、デバイス。
【請求項２５】
前記ブロックが第1のブロックであり前記シンタックス要素が第1のシンタックス要素であり、パレットランレングスシンタックス要素の前記セットがパレットランレングスシンタックス要素の第1のセットであり、前記一連のランが第1の一連のランであり、前記パレットが第1のパレットであり、前記1つまたは複数のプロセッサが、
第2の一連のランを特定し、前記第2の一連のランの各々のそれぞれのランが前記ビデオデータの第2のブロックの1つの画素または2つ以上の連続する画素からなり、前記第2の一連のランの各々のそれぞれのランの各画素が同じパレットサンプルモードを有し、
1つまたは複数のパレットランレングスシンタックス要素の第2のセットを生成し、パレットランレングスシンタックス要素の前記第2のセットが前記第2の一連のランの1つまたは複数のランの長さを示し、
第2のシンタックス要素を生成し、前記第2のシンタックス要素が、前記第2の一連のランの最後のランの長さを示すパレットランレングスシンタックス要素が前記ビットストリームにおいてシグナリングされないことを示す
ように構成される、請求項24に記載のデバイス。
【請求項２６】
(1)パレットのサイズが1に等しくないこと、または前記ブロックの中にエスケープ画素があること、および(2)前記パレットの前記サイズが0ではないことを決定したことに応じて、前記1つまたは複数のプロセッサが前記シンタックス要素を生成するように構成される、請求書24に記載のデバイス。
【請求項２７】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサが、
(1)現在の画素が走査順序において前記ブロックの最初の画素である場合を除き、または(2)前記現在の画素が前記ブロックの前記最初の画素ではなく以前のランがCopy Aboveランタイプを有する場合を除き、第2のシンタックス要素を生成するように構成され、
前記現在の画素が、前記ブロックの最初の行の中にあり、特定のランの最初の画素であり、
前記現在の画素が前記ブロックの前記最初の画素ではなく、前記以前のランが存在するとき、前記特定のランが前記以前のランの後にあり、前記特定のランと前記以前のランとの間に他のランがなく、
前記第2のシンタックス要素が前記ブロックの最初の行のパレットサンプルモードを示し、前記パレットサンプルモードがCopy AboveまたはIndex Copyのうちの1つであり、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、それぞれの上側の隣接サンプルから複製され、
前記Index Copyランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、シグナリングされる値である、請求項24に記載のデバイス。
【請求項２８】
前記シンタックス要素が第1のシンタックス要素であり、前記1つまたは複数のプロセッサが、
第2のシンタックス要素を生成するように構成され、前記第2のシンタックス要素が、Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有するかどうかを示し、
前記Copy Aboveランタイプを有するランの各々のそれぞれの画素に対して、前記それぞれの画素のパレットインデックスが、それぞれの上側の隣接サンプルから複製され、
前記Copy Aboveランタイプを有する前記一連のランのすべてのランが0より大きい長さを有することを前記第2のシンタックス要素が示しているとき、前記Copy Aboveランタイプを有する前記一連のランの各々のそれぞれのランに対して、パレットランレングスシンタックス要素の前記セットのそれぞれのパレットランレングスシンタックス要素が、前記それぞれのランの実際の長さより1だけ短い、請求項24に記載のデバイス。
【請求項２９】
前記1つまたは複数のプロセッサが、
複数のコンテキストからあるコンテキストを選択し、前記選択が、前記ブロックのブロックサイズ、パレットサイズ、エスケープ画素が前記ブロックの中に存在するかどうか、および前記ブロックの中のシグナリングされるパレットインデックスの数の、少なくとも1つに基づき、
コンテキスト適応バイナリ算術コーディング(CABAC)において前記選択されたコンテキストを使用して前記シンタックス要素を符号化するように構成される、請求項24に記載のデバイス。
【国際調査報告】
2017535166.tif 000012
2017535166.tif 000013