(57)【要約】  ビデオデータをコーディングするためのデバイスは、ビデオデータを記憶するメモリと、1つまたは複数のプロセッサを含むビデオコーダとを含み、1つまたは複数のプロセッサが、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定し、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングすることによって、コーディングユニットのためのパレットを決定するように構成される。
2018507613.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
前記ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定するステップと、
前記コーディングユニットのためのパレットを決定するステップであって、
前記パレットの第1のエントリに対して、前記コーディングユニットの再構築された隣接ブロックから予測子サンプルを選ぶステップと、
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との差分を復号するステップと、
前記復号された残差データおよび前記予測子サンプルに基づいて、前記現在のコーディングユニットのための前記パレットの前記第1のパレットエントリを決定するステップと
備える、ステップと、
前記現在のコーディングユニットのサンプルに対して、インデックス値を受信するステップであって、前記インデックス値が前記パレットからのエントリを特定する、ステップと、
前記第1のエントリと関連付けられる1つまたは複数の色値を前記サンプルに割り当てて、再構築されたコーディングユニットを決定するステップと、
前記再構築されたコーディングユニットを備える復号されたビデオデータのピクチャを出力するステップとを備える、方法。
【請求項２】
前記予測子サンプルが3つの成分を備える、請求項1に記載の方法。
【請求項３】
前記現在のコーディングユニットのための前記予測子サンプルを選ぶステップが、前記現在のコーディングユニットの上の行の中心の場所に対応するサンプルの位置を特定するステップを備える、請求項1に記載の方法。
【請求項４】
前記パレットの前記第1のエントリに対するフラグを受信するステップをさらに備え、前記フラグの第1の値が、前記パレットの前記第1のエントリが前記予測子サンプルから予測されることを示す、請求項1に記載の方法。
【請求項５】
前記パレットの第2のエントリに対する前記フラグを受信するステップをさらに備え、前記フラグの第2の値が、前記パレットの前記第2のエントリがいずれの予測子サンプルからも予測されないことを示す、請求項4に記載の方法。
【請求項６】
前記パレットの前記第2のエントリに対する前記第2の値を有する前記フラグを受信したことに応答して、前記第2のエントリに対する前記色値の指示を受信するステップをさらに備える、請求項5に記載の方法。
【請求項７】
前記第2のエントリに対する前記色値の前記指示が、固定長のコーディングされた符号語を備える、請求項6に記載の方法。
【請求項８】
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との前記差分を復号するステップが、ゴロムコーディングプロセスを使用して1つまたは複数の差分値を復号するステップを備える、請求項1に記載の方法。
【請求項９】
ビデオデータを符号化する方法であって、
前記ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定するステップと、
前記コーディングユニットのためのパレットを決定するステップと、
前記パレットの第1のエントリに対して、前記コーディングユニットの再構築された隣接ブロックから予測子サンプルを選ぶステップと、
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との差分を決定するステップと、
ビデオデータの符号化されたビットストリームに含めるために、前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との差分を示す1つまたは複数のシンタックス要素を生成するステップとを備える、方法。
【請求項１０】
前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との前記差分を決定するステップが、前記第1のエントリの各色値を前記予測子サンプルの対応する色値と比較するステップを備える、請求項9に記載の方法。
【請求項１１】
前記第1のエントリおよび前記予測子サンプルが各々、3つの成分に対する色値を備える、請求項9に記載の方法。
【請求項１２】
前記現在のコーディングユニットのための前記予測子サンプルを選ぶステップが、前記現在のコーディングユニットの上の線の中心の場所に対応するサンプルの位置を特定するステップを備える、請求項9に記載の方法。
【請求項１３】
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との前記差分を符号化するステップが、ゴロムコーディングプロセスを使用して1つまたは複数の差分値を符号化するステップを備える、請求項9に記載の方法。
【請求項１４】
ビデオデータをコーディングするためのデバイスであって、
ビデオデータを記憶するメモリと、
1つまたは複数のプロセッサを備えるビデオコーダとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定し、
前記コーディングユニットのためのパレットを決定するように構成され、前記パレットを決定するために、前記1つまたは複数のプロセッサがさらに、
前記パレットの第1のエントリに対して、前記コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との差分をコーディングする
ように構成される、デバイス。
【請求項１５】
前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との前記差分をコーディングするために、前記1つまたは複数のプロセッサが、前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との前記差分を示す1つまたは複数のシンタックス要素を生成することによって、残差データを符号化する、請求項14に記載のデバイス。
【請求項１６】
前記第1のエントリと予測子サンプルとの前記差分をコーディングするために、前記1つまたは複数のプロセッサが、前記第1のエントリの色値と前記予測子サンプルの色値との前記差分を決定するために残差データを復号し、前記1つまたは複数のプロセッサがさらに、
前記復号された残差データおよび前記予測子サンプルに基づいて、前記現在のコーディングユニットのための前記パレットの前記第1のエントリを決定するように構成される、請求項14に記載のデバイス。
【請求項１７】
前記1つまたは複数のプロセッサがさらに、
前記現在のコーディングユニットのサンプルに対して、インデックス値を受信し、前記インデックス値が前記パレットからのエントリを特定し、
前記第1のエントリと関連付けられる1つまたは複数の色値を前記サンプルに割り当てて、再構築されたコーディングユニットを決定するように構成される、請求項16に記載のデバイス。
【請求項１８】
前記予測子サンプルが3つの成分を備える、請求項14に記載のデバイス。
【請求項１９】
前記現在のコーディングユニットのための前記予測子サンプルを選ぶために、前記1つまたは複数のプロセッサが、前記現在のコーディングユニットの上の行の中心の場所に対応するサンプルの位置を特定するように構成される、請求項14に記載のデバイス。
【請求項２０】
前記1つまたは複数のプロセッサがさらに、
前記パレットの前記第1のエントリに対するフラグを受信するように構成され、前記フラグの第1の値が、前記パレットの前記第1のエントリが前記予測子サンプルから予測されることを示す、請求項14に記載のデバイス。
【請求項２１】
前記1つまたは複数のプロセッサがさらに、
前記パレットの第2のエントリに対する前記フラグを受信するように構成され、前記フラグの第2の値が、前記パレットの前記第2のエントリがいずれの予測子サンプルからも予測されないことを示す、請求項20に記載のデバイス。
【請求項２２】
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との前記差分をコーディングするために、前記1つまたは複数のプロセッサがさらに、ゴロムコーディングプロセスを使用して1つまたは複数の差分値をコーディングするように構成される、請求項14に記載のデバイス。
【請求項２３】
前記デバイスが、
集積回路、
マイクロプロセッサ、または
前記ビデオコーダを備えるワイヤレス通信デバイスの1つまたは複数を備える、請求項14に記載のデバイス。
【請求項２４】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令が、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定させ、
前記コーディングユニットのためのパレットを決定させ、前記コーディングユニットのための前記パレットを決定するために、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記パレットの第1のエントリに対して、前記コーディングユニットの再構築された隣接ブロックから予測子サンプルを選ばせ、
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との差分をコーディングさせる
命令をさらに記憶する、コンピュータ可読記憶媒体。
【請求項２５】
前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との前記差分をコーディングするために、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、前記第1のエントリの前記1つまたは複数の色値と前記予測子サンプルの前記1つまたは複数の色値との前記差分を示す1つまたは複数のシンタックス要素を生成することによって、残差データを符号化させる命令をさらに記憶する、請求項24に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記第1のエントリと予測子サンプルとの前記差分をコーディングするために、前記1つまたは複数のプロセッサが、前記第1のエントリの色値と前記予測子サンプルの色値との前記差分を決定するために残差データを復号し、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記復号された残差データおよび前記予測子サンプルに基づいて、前記現在のコーディングユニットのための前記パレットの前記第1のエントリを決定させる命令をさらに記憶する、請求項24に記載のコンピュータ可読記憶媒体。
【請求項２７】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記現在のコーディングユニットのサンプルに対して、インデックス値を受信させ、前記インデックス値が前記パレットからのエントリを特定し、
前記第1のエントリと関連付けられる1つまたは複数の色値を前記サンプルに割り当てさせて、再構築されたコーディングユニットを決定させる命令をさらに記憶する、請求項24に記載のコンピュータ可読記憶媒体。
【請求項２８】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記パレットの前記第1のエントリに対するフラグを受信させる命令をさらに記憶し、前記フラグの第1の値が、前記パレットの前記第1のエントリが前記予測子サンプルから予測されることを示す、請求項24に記載のコンピュータ可読記憶媒体。
【請求項２９】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記パレットの第2のエントリに対する前記フラグを受信させる命令をさらに記憶し、前記フラグの第2の値が、前記パレットの前記第2のエントリがいずれの予測子サンプルからも予測されないことを示す、請求項28に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記第1のエントリの1つまたは複数の色値と前記予測子サンプルの1つまたは複数の色値との前記差分をコーディングするために、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、ゴロムコーディングプロセスを使用して1つまたは複数の差分値をコーディングさせる命令を記憶する、請求項24に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参考として本明細書に組み込まれる、2015年1月30日に出願された米国仮特許出願第62/110,221号の利益を主張する。
【０００２】
本開示は、ビデオコーディングに関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(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)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を実行する。ブロックベースのビデオコーディングのために、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)がビデオブロックに区分されることがあり、ビデオブロックは、ツリーブロック、コーディングユニット(CU:coding unit)、および/またはコーディングノードと呼ばれることもある。ピクチャのイントラコーディングされる(I)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされる(PまたはB)スライスの中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャは、フレームと呼ばれることがあり、参照ピクチャは、参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間の画素差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、画素領域から変換領域に変換され、残差変換係数をもたらすことがあり、その残差変換係数は、次いで量子化され得る。最初に2次元アレイに配置される量子化された変換係数は、変換係数の1次元ベクトルを生成するために走査されることがあり、エントロピーコーディングが、さらなる圧縮を実現するために適用されることがある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の態様は、ビデオデータのブロックのためのパレットモードコーディングに関する。本明細書において説明される技法は、High Efficiency Video Coding (HEVC)規格、その拡張、または任意の今後のビデオコーデックに適合するコーデックなどの、様々な既存のビデオコーデックのいずれにも適用され得る。
【０００７】
一例では、ビデオデータを復号する方法は、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定するステップと、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を復号し、復号された残差データおよび予測子サンプルに基づいて、現在のコーディングユニットのためのパレットの第1のエントリを決定することによって、コーディングユニットのためのパレットを決定するステップと、現在のコーディングユニットのサンプルに対して、インデックス値を受信するステップであって、インデックス値がパレットからのエントリを特定する、ステップと、再構築されたコーディングユニットを決定するために第1のエントリと関連付けられる1つまたは複数の色値をそのサンプルに割り当てるステップと、再構築されたコーディングユニットを備える復号されたビデオデータのピクチャを出力するステップとを含む。
【０００８】
別の例では、ビデオデータを符号化する方法は、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定するステップと、コーディングユニットのためのパレットを決定するステップと、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選ぶステップと、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を決定するステップと、ビデオデータの符号化されたビットストリームに含めるために、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を示す1つまたは複数のシンタックス要素を生成するステップとを含む。
【０００９】
別の例では、ビデオデータをコーディングするためのデバイスは、ビデオデータを記憶するメモリと、1つまたは複数のプロセッサを備えるビデオコーダとを含み、1つまたは複数のプロセッサは、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定し、コーディングユニットのためのパレットを決定するように構成され、ここでパレットを決定するために、1つまたは複数のプロセッサがさらに、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングするように構成される。
【００１０】
別の例では、コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定させ、コーディングユニットのためのパレットを決定させる、命令を記憶し、ここでコーディングユニットのためのパレットを決定するために、コンピュータ可読記憶媒体がさらに、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選ばせ、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングさせる、命令を記憶する。
【００１１】
1つまたは複数の例の詳細が、以下の添付の図面および説明において述べられる。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】本開示において説明される技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】本開示の技法による、ビデオデータをコーディングするためのパレットを決定することの例を示す概念図である。
【図３】本開示の技法による、ビデオブロックのためのパレットに対するインデックスを決定することの例を示す概念図である。
【図４】本開示の技法による、クロマ成分に対して適応的にダウンサンプリングされたルーマ成分のためのパレットインデックスのランを使用して、ビデオブロックの幾何学的な辺を決定することの例を示す概念図である。
【図５】本開示の技法を示すフローチャートである。
【図６】本開示において説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図である。
【図７】本開示において説明される技法を実施し得る例示的なビデオデコーダを示すブロック図である。
【図８】本開示の技法を示すフローチャートである。
【図９】本開示の技法を示すフローチャートである。
【図１０】本開示の技法を示すフローチャートである。
【発明を実施するための形態】
【００１３】
本開示は、ビデオコーディング(たとえば、ビデオ符号化およびビデオ復号)および圧縮のための技法について説明する。具体的には、本開示は、ビデオデータのパレットベースのビデオコーディングのための技法について説明する。パレットベースのビデオコーディングでは、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、画素のブロックのためのパレットテーブル(単に「パレット」とも呼ばれる)を導出し、パレットテーブル中の各エントリは、パレットテーブルへのインデックスによって特定される色値を含む。
【００１４】
パレットモードでブロックをコーディングすることの一部として、ブロックのために使用されるべきパレットエントリが最初にコーディングされ得る。次いで、パレットからのどのエントリが画素(サンプル)を予測または再構築するために使用されるべきかを示すために、ブロックの各画素(またはサンプル)のためのパレットインデックスがコーディングされ得る。本開示は全般に、パレットを生成するための、すなわちパレットのパレットエントリを決定するための技法を対象とする。
【００１５】
以下でより詳細に説明されるように、パレットモードコーディングされるブロックは、予測されるパレットまたは新しいパレットのいずれかを使用してコーディングされ得る。予測されるパレットに対して、ビデオデコーダは、現在のブロックのために使用されるべきパレットが以前に使用されたパレットのコピーであることを示す少数のビットのみを受信する。新しいパレットに対して、ビデオデコーダは通常、予測されるパレットの場合よりも大量のデータを受信し、それは、新しいパレットに対しては、ビデオデコーダが以前に使用されたパレットを単にコピーせず、代わりに新しいパレットを生成しているからである。新しいパレットを生成するとき、ビデオデコーダは、エントリごとに新しいパレットのエントリを生成する。各エントリに対して、ビデオデコーダは、エントリが以前のパレットのエントリから複製されるべきかどうか、またはエントリが新しいエントリかどうかを示すフラグを受信する。既存の技法によれば、新しいエントリに対して、ビデオデコーダは、新しいエントリの各成分について色値を受信する。この色値は通常、ビデオデータのために使用されるビット深度でシグナリングされる。したがって、8ビットのビデオのパレットエントリに対して輝度と2つの色度の値をシグナリングするために、ビデオデコーダは3つの8ビット値を受信する。
【００１６】
本開示の技法によれば、新しいエントリをシグナリングするために必要とされるビットを減らすために、ビデオデコーダは、再構築されるサンプルを位置特定し、新しいパレットエントリのための予測子として再構築されたサンプルの色値を使用し得る。したがって、新しいパレットエントリの色値を示す3つの8ビット値を受信する代わりに、ビデオデコーダは代わりに、新しいパレットの色値と予測子サンプルとの差分を示す残差データを受信し得る。予測子サンプルと新しいパレットエントリの色値との差分は頻繁に色値自体よりも小さくなり得るので、この差分は、色値を直接シグナリングするのに必要とされるビットよりも少数のビットを使用してシグナリングされることが可能であり得る。新しいパレットの新しいエントリをシグナリングするために必要とされるビットの数を減らすことによって、パレットモードコーディングの全体的なコーディング効率が改善され得る。
【００１７】
図1は、本開示において説明される技法を利用し得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されるように、システム10は、宛先デバイス14によって後の時間に復号されるべき符号化されたビデオデータを生成する、ソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
【００１８】
宛先デバイス14は、リンク16を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、高周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレス通信媒体または有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、または、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【００１９】
代替的に、符号化されたデータは、出力インターフェース22から記憶デバイス26に出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイス26からアクセスされ得る。記憶デバイス26は、ハードドライブ、Blu-ray（登録商標）ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または、符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたは局所的にアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイス26は、ソースデバイス12によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間記憶デバイスに相当し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイス26からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。このことは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。記憶デバイス26からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００２０】
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途などの、様々なマルチメディア用途のうちのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２１】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組合せなどの、ソースを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ電話またはビデオ電話を形成し得る。しかしながら、本開示において説明される技法は、ビデオコーディング全般に適用可能であることがあり、ワイヤレス用途および/または有線用途に適用され得る。
【００２２】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータで生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化されたビデオデータはまた(または、代替的に)、復号および/または再生のための、宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス26に記憶され得る。
【００２３】
宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を通じて符号化されたビデオデータを受信する。リンク16を通じて通信された、または記憶デバイス26上に提供された符号化されたビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信された、記憶媒体に記憶された、またはファイルサーバに記憶された符号化されたビデオデータとともに含まれ得る。
【００２４】
ディスプレイデバイス32は、宛先デバイス14と一体であることがあり、または宛先デバイス14の外部にあることがある。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含むことがあり、外部のディスプレイデバイスとインターフェースするようにも構成されることがある。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
【００２５】
ビデオエンコーダ20およびビデオデコーダ30は、最近完成したHigh Efficiency Video Coding (HEVC)規格などのビデオ圧縮規格に従って動作することがあり、HEVC Test Model (HM)に準拠することがある。ビデオエンコーダ20およびビデオデコーダ30はまた、HEVCに加えて、MPEG-4、Part 10、Advanced Video Coding (AVC)と代替的に呼ばれるITU-T H.264規格、またはそのような規格の拡張などの、他の独自規格または業界規格に従って動作することがある。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
【００２６】
本開示の技法は、説明を容易にするためにHEVC用語を利用することがある。しかしながら、本開示の技法はHEVCに限定されることが想定されるべきではなく、実際には、本開示の技法がHEVCの後継の規格とその拡張、ならびに他の未来のコーデック設計および規格において実装され得ることが明確に企図される。
【００２７】
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体であることがあり、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含むことがある。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【００２８】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な適切なエンコーダ回路のいずれかとして実装され得る。技法がソフトウェアで部分的に実装されるとき、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、これらのいずれもが、それぞれのデバイス内の複合エンコーダ/デコーダ(コーデック)の一部として統合されることがある。
【００２９】
上で紹介されたように、JCT-VCは、HEVC規格の開発を最近完了した。HEVC規格化の取組みは、HEVC Test Model (HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいた。HMは、たとえば、ITU-T H.264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の機能を仮定する。たとえば、H.264は、9個のイントラ予測符号化モードを提供するが、HMは、35個ものイントラ予測符号化モードを提供し得る。
【００３０】
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと表記される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであることがあり、ルーマサンプルのアレイだけを含むことがある。
【００３１】
ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、CTUは、単一のコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。コーディングツリーブロックは、サンプルのNxNブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概ね類似していることがある。しかしながら、CTUは、必ずしも特定のサイズに限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序において連続的に順序付けられた整数個のCTUを含み得る。
【００３２】
コーディングされたCTUを生成するために、ビデオエンコーダ20がCTUのコーディングツリーブロック上で4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割することができ、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのNxNブロックであり得る。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロック、およびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロック、およびコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。
【００３３】
ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、矩形(すなわち、正方形または非正方形)のブロックである。CUの予測ユニット(PU:prediction unit)は、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに対して、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【００３４】
ビデオエンコーダ20は、PUの予測ブロックを生成するために、イントラ予測、インター予測、またはパレットコーディングなどの別のコーディングモードを使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャ以外の1つまたは複数のピクチャの復号されるサンプルに基づいて、PUの予測ブロックを生成し得る。
【００３５】
ビデオエンコーダ20がCUの1つまたは複数のPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CUのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロックの中の各サンプルは、CUの予測ルーマブロックのうちの1つの中のルーマサンプルと、CUの元のルーマコーディングブロックの中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUのCb残差ブロックを生成し得る。CUのCb残差ブロックの中の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルと、CUの元のCbコーディングブロックの中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUのCr残差ブロックを生成し得る。CUのCr残差ブロックの中の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルと、CUの元のCrコーディングブロックの中の対応するサンプルとの間の差分を示し得る。
【００３６】
さらに、ビデオエンコーダ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のルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUのCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUのCr係数ブロックを生成し得る。
【００３８】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は一般に、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型二値算術コーディング(CABAC)を実行し得る。
【００３９】
ビットエンコーダ20は、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、NALユニットのシーケンスを備え得る。NALユニットは、NALユニットの中のデータのタイプの指示を含むシンタックス構造、および必要に応じてエミュレーション防止ビットを組み入れられたRBSPの形態でそのデータを含むバイトである。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をカプセル化することがあり、以下同様である。ビデオコーディングデータのためのRBSP(パラメータセットおよびSEIメッセージのためのRBSPではなく)をカプセル化するNALユニットは、VCL NALユニットと呼ばれることがある。
【００４１】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも一部基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられる係数ブロックを逆量子化し得る。ビデオデコーダ30は、係数ブロックに対して逆変換を実行して、現在のCUのTUと関連付けられる変換ブロックを再構築し得る。ビデオデコーダ30は、現在のCUのPUの予測ブロックのサンプルを、現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャのCUごとにコーディングブロックを再構築することによって、ビデオデコーダ30は、ピクチャを再構築し得る。
【００４２】
上で紹介されたように、HEVCおよび他のコーディング規格に対する拡張は、イントラ予測およびインター予測以外のコーディングモードを実装し得る。1つのそのようなコーディングモードはパレットモードであり、パレットモードでは、ビデオエンコーダ20とビデオデコーダ30の両方が、画素のブロックのためのパレットを導出することができ、パレットテーブル中の各エントリは、パレットテーブルへのインデックスによって特定される色値を含む。ビデオエンコーダ20は次いで、パレットモード符号化されたブロックのサンプルに対して、パレットのどのエントリがブロックの様々なサンプルのための色値に対応するかを示す、インデックス値を符号化し得る。ビデオデコーダ30は、インデックス値を受信し、インデックス値に基づいてブロックを再構築する。
【００４３】
図2は、本開示の技法による、ビデオデータをコーディングするためのパレットを決定することの例を示す概念図である。図2の例は、第1のパレットのセット(すなわち、第1のパレット184)と関連付けられる第1のコーディングユニット(CU)180と、第2のパレットのセット(すなわち、第2のパレット192)と関連付けられる第2のCU188とを有するピクチャ178を含む。以下でより詳細に説明されるように、本開示の技法の1つまたは複数によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードを用いてコーディングされたブロック196、およびインター予測コーディングモードを用いてコーディングされたブロック200を含む。
【００４４】
図2の技法は、説明のために、ビデオエンコーダ20(図1および図6)およびビデオデコーダ30(図1および図7)の文脈において、HEVCビデオコーディング規格に関して説明される。HEVCフレームワークに関して、一例として、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおけるPUモードまたはTUモードとして使用されるように構成され得る。したがって、CUモードの文脈において説明される、以下の開示されるプロセスのすべてが、付加的または代替的に、PUまたはTUに適用され得る。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【００４５】
一般に、パレットは、現在コーディングされているCU(たとえば、図2の例における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の表現は、一例にすぎず限定的であることは意図されていない。別様に述べられている場合を除き、図2に関して以下で説明される技法は、単一の値を使用するパレットに対して適用可能であるのと同等に、3つの値を使用するパレットに適用可能である。
【００４７】
図2の例では、第1のパレット184の各々は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する、3つのエントリ202〜206を含む。エントリ202〜206は、インデックス値を、それぞれ、画素値A、画素値B、および画素値Cを含む画素値と関連付ける。第1のパレット184の各々は、インデックスおよび列ヘッダを実際には含まず、画素値A、B、およびCのみを含み、パレット中のエントリを特定するためにインデックスが使用されることに留意されたい。
【００４８】
本明細書において説明されるように、第1のCU180の実際の画素値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30などの)は、パレットベースのコーディングを使用して、インデックス1〜3を使用してブロックの画素をコーディングし得る。すなわち、第1のCU180の画素場所ごとに、ビデオエンコーダ20は、画素のインデックス値を符号化することができ、その場合、インデックス値は、第1のパレット184の1つまたは複数の中の画素値と関連付けられる。ビデオデコーダ30は、インデックス値をビットストリームから取得することができ、インデックス値および第1のパレット184の1つまたは複数を使用して、画素値を再構築することができる。言い換えると、ブロックの各々のそれぞれのインデックス値に対して、ビデオデコーダ30は、第1のパレット184の1つの中のエントリを決定することができる。ビデオデコーダ30は、パレット中の決定されたエントリによって指定される画素値で、ブロック中のそれぞれのインデックス値を置き換えることができる。パレットベースの復号の際にビデオデコーダ30によって使用するために、ビデオエンコーダ20は、第1のパレット184を符号化されたビデオデータビットストリームの中で送信することができる。一般に、1つまたは複数のパレットが、CUごとに送信されることがあり、または異なるCUの間で共有されることがある。
【００４９】
ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20は、CUのためのパレットが、(空間的に、または走査順序に基づいて)隣接するCUまたは因果的近隣の最も頻度が高いサンプルなどの、1つまたは複数の他のCUと関連付けられる1つまたは複数のパレットから予測されるかどうかを示すために、CU(一例として、第2のCU188を含む)ごとにpred_palette_flagを符号化し得る。たとえば、そのようなフラグの値が1に等しいとき、ビデオデコーダ30は、第2のCU188のための第2のパレット192が1つまたは複数のすでに復号されたパレットから予測されると決定することができ、したがって、第2のCU188のための新しいパレットは、pred_palette_flagを含むビットストリームに含まれない。そのようなフラグが0に等しいとき、ビデオデコーダ30は、第2のCU188のためのパレット192が新しいパレットとしてビットストリームに含まれると決定することができる。いくつかの例では、pred_palette_flagは、CUの異なる色成分ごとに別個にコーディングされ得る(たとえば、YUVビデオのCUに対して3つのフラグ、すなわち、Yに対して1つ、Uに対して1つ、およびVに対して1つ)。他の例では、CUのすべての色成分に対して単一のpred_palette_flagがコーディングされ得る。
【００５０】
上の例では、pred_palette_flagは、現在のCUのためのパレットが以前のCUのためのパレットと同じであるかどうかを示すために、CUごとにシグナリングされる。pred_palette_flagの値が真である場合、第2のパレット192は第1のパレット184と同一であり、追加の情報はシグナリングされない。他の例では、1つまたは複数のシンタックス要素が、エントリごとにシグナリングされ得る。すなわち、パレット予測子のエントリごとに、そのエントリが現在のパレットの中に存在するかどうかを示すためにフラグがシグナリングされ得る。上で述べられたように、パレットエントリが予測されない場合、パレットエントリは、明示的にシグナリングされ得る。他の例では、これらの2つの方法が組み合わされ得る。たとえば、まずpred_palette_flagがシグナリングされる。フラグが0である場合、エントリごとの予測フラグがシグナリングされ得る。加えて、新しいエントリの数およびエントリの明示的な値がシグナリングされ得る。以下でより詳細に説明されるように、本開示の技法によれば、新しいエントリの値は、新しいエントリの実際の値と予測子サンプルの値との差分情報としてシグナリングされ得る。
【００５１】
第2のパレット192を第1のパレット184に対して決定する(たとえば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では第1のパレット184がそこから決定される1つまたは複数のブロックの位置を特定し得る。予測パレットは、現在コーディングされているCU、すなわち、第2のCU188の、1つまたは複数の隣接CU(たとえば、(空間的に、または走査順序に基づいて)隣接するCU、または因果的近隣の最も頻度が高いサンプル)と関連付けられ得る。1つまたは複数の隣接CUのパレットは、予測子パレットと関連付けられ得る。図2に示される例などのいくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188のための予測パレットを決定するとき、左の隣接CU、すなわち第1のCU180の位置を特定し得る。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のCU、すなわちCU196などの第2のCU188に対して、他の場所にある1つまたは複数のCUの位置を特定し得る。別の例では、パレットモードを使用した、走査順序において最後のCUのためのパレットが、予測パレットとして使用され得る。
【００５２】
ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づくパレット予測のためにCUを決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために、最初に左の隣接CU、すなわち第1のCU180を特定し得る。左の隣接CUが予測のために利用可能ではない(たとえば、左の隣接CUが、イントラ予測モードもしくはイントラ予測モードなどのパレットベースコーディングモード以外のモードを用いてコーディングされているか、またはピクチャもしくはスライスの一番左の端に位置している)場合、ビデオエンコーダ20および/またはビデオデコーダ30は、上の隣接CU、すなわちCU196を特定し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUの位置を特定するまで、利用可能なCUを位置の所定の順序に従って探索し続け得る。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロック、および/または隣接ブロックの再構築されたサンプルに基づいて、予測パレットを決定し得る。
【００５３】
図2の例は単一のCU(すなわち、第1のCU180)からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接CUの組合せから予測のためのパレットの位置を特定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、1つまたは複数の式、関数、規則などを適用して、複数の(空間的にまたは走査順序において)隣接するCUの1つまたは組合せのパレットに基づいて予測パレットを生成し得る。
【００５４】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構築し得る。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在のCUがその中から選択される(たとえば、パレットをコピーする)リストの中の候補CUを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ30は、同様の方法で候補リストを構築し、インデックスを復号し、復号されたインデックスを、現在のCUと一緒に使用するための対応するCUのパレットを選択するために使用することができる。別の例では、リスト中の示される候補CUのパレットは、現在のCUのための現在のパレットのエントリごとの予測のための予測パレットとして使用され得る。
【００５５】
一例では、説明を目的に、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているCUの上に位置する1つのCUと、現在コーディングされているCUの左に位置する1つのCUとを含む、候補リストを構築し得る。この例では、ビデオエンコーダ20は、候補の選択を示すために、1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの左に位置するCUからコピーされていることを示すために、0という値を有するフラグを符号化し得る。ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの上に位置するCUからコピーされていることを示すために、1という値を有するフラグを符号化し得る。ビデオデコーダ30は、そのフラグを復号し、パレット予測のために適切なCUを選択する。別の例では、フラグは、上の隣接CUのパレットが予測パレットとして使用されるか、または左の隣接CUのパレットが予測パレットとして使用されるかを示し得る。そして、予測パレット中の各エントリに対して、現在のCUのためのパレットにおいてそのエントリが使用されるかどうかが示され得る。
【００５６】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレットに含まれるサンプル値が1つまたは複数の隣接CUにおいて出現する頻度に基づいて、現在コーディングされているCUのためのパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のCUのコーディングの間に最も頻繁に使用されるインデックス値と関連付けられる色を追跡し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、最も頻繁に使用される色を、現在コーディングされているCUのためのパレットに含め得る。
【００５７】
上で述べられたように、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダは、現在のCUをコーディングするための隣接CUからパレット全体をコピーし得る。加えて、または代替的に、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリ方向ベースのパレット予測を実行し得る。たとえば、ビデオエンコーダ20は、パレットの各エントリに対して、それぞれのエントリが予測パレット(たとえば、別のCUのパレット)に基づいて予測されるかどうかを示す1つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ20は、エントリが予測パレット(たとえば、隣接CUと関連付けられるパレットの対応するエントリ)からの予測された値であるとき、所与のエントリに対して1という値を有するフラグを符号化し得る。ビデオエンコーダ20は、特定のエントリが別のCUのパレットから予測されないことを示すために、特定のエントリに対して0という値を有するフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、予測されないパレットエントリの値を示す追加のデータを符号化し得る。
【００５８】
本開示は、現在のCUのためのパレットを予測するためのいくつかの代替的な技法について説明する。一例では、1つまたは複数の以前にコーディングされた隣接CUからのパレットエントリを含む予測パレットは、ある数(N個)のエントリを含む。この場合、ビデオエンコーダ20はまず、予測パレットのサイズ、すなわちサイズNと同じサイズを有する二値ベクトルVをビデオデコーダ30に送信する。二値ベクトル中の各エントリは、予測パレット中の対応するエントリが現在のCUのためのパレットに対して再使用またはコピーされるかどうかを示す。たとえば、V(i)=1は、隣接CUのための予測パレット中のi番目のエントリが、現在のCUのためのパレットに対して再使用またはコピーされることを意味し、それは、現在のCUにおいて異なるインデックスを有し得る。
【００５９】
加えて、ビデオエンコーダ20は、現在のCUのためのパレットにどれだけの新しいパレットエントリが含まれるかを示す数Mを送信することができ、次いで、新しいパレットエントリの各々の画素値をビデオデコーダ30に送信する。この例では、現在のCUのためのパレットの最終的なサイズは、M+Sに等しいものとして導出されることがあり、ここでSは、現在のCUのためのパレットに対して再使用またはコピーされ得る(すなわち、V(i)=1)予測パレット中のエントリの数である。現在のCUのためのパレットを生成するために、ビデオデコーダ30は、送信された新しいパレットエントリと、予測パレットから再使用されるコピーされたパレットエントリとを統合し得る。いくつかの場合、この統合は、現在のCUのためのパレット中のエントリがパレットインデックスとともに増える(または減る)ように、画素値に基づき得る。他の場合、この統合は、エントリの2つのセット、すなわち、新しいパレットエントリおよびコピーされるパレットエントリの連結であり得る。
【００６０】
別の例では、ビデオエンコーダ20はまず、現在のCUのためのパレットのサイズNを示すものをビデオデコーダ30に送信する。ビデオエンコーダ20は次いで、現在のCUのためのパレットと同じサイズ、すなわちサイズNを有するベクトルVをビデオデコーダ30に送信する。ベクトル中の各エントリは、現在のCUのためのパレット中の対応するエントリがビデオエンコーダ20によって明示的に送信されるか、または予測パレットからコピーされるかを示す。たとえば、V(i)=1は、ビデオエンコーダ20がパレット中のi番目のエントリをビデオデコーダ30に送信することを意味し、V(i)=0は、パレット中のi番目のエントリが予測パレットからコピーされることを意味する。予測パレットからコピーされるエントリに対して(すなわち、V(i)=0)、ビデオエンコーダ20は、予測パレット中のどのエントリが現在のCUのためのパレットにおいて使用されるかをシグナリングするために、様々な方法を使用し得る。いくつかの場合、ビデオエンコーダ20は、予測パレットからコピーされるべきエントリのパレットインデックスを、現在のCUのためのパレットにシグナリングし得る。他の場合、ビデオエンコーダ20は、現在のCUのためのパレット中のインデックスと予測パレット中のインデックスとの差分である、インデックスオフセットをシグナリングし得る。
【００６１】
2つの上の例では、現在のCUのためのパレットの予測のために使用される予測パレットを生成するために使用される、1つまたは複数の以前にコーディングされた隣接CUが、現在のCUに対する上の隣接(すなわち、上側の)CUまたは左の隣接CUであり得る。いくつかの例では、隣接CUの候補リストが構築されることがあり、ビデオエンコーダ20は、どの候補隣接CUおよび関連するパレットが現在のCUのためのパレット予測に使用されるかを示すための、インデックスを送信する。いくつかのCU、たとえば、スライスの最初に位置するCU、または他のスライスの境界に位置するCU、またはビデオデータのスライスもしくはピクチャ中の一番左のCUに対しては、パレット予測が無効にされ得る。
【００６２】
追加の例では、ビデオエンコーダ20は、現在のCUのためのパレットに含まれるエントリの数を示すものをビデオデコーダ30に送信する。次いで、パレットエントリの各々に対して、ビデオエンコーダ20は、パレットエントリがビデオエンコーダ20によって明示的に送信されるか、または以前に再構築された画素から導出されるかを示すための、フラグまたは他のシンタックス要素を送信する。たとえば、1に等しく設定される1ビットのフラグは、ビデオエンコーダ20がパレットエントリを明示的に送信することを意味することがあり、0に等しく設定される1ビットのフラグは、パレットエントリが以前に再構築された画素から導出されることを意味することがある。以前に再構築された画素から導出されるパレットエントリの各々に対して、ビデオエンコーダ20は、パレットエントリに対応する現在のCUまたは隣接CUにおける再構築された画素の画素位置に関する別の指示を送信する。いくつかの場合、再構築された画素位置の指示は、現在のCUの左上の場所に対する変位ベクトルであり得る。他の場合、再構築された画素位置の指示は、現在のCUのためのパレットエントリを指定するために使用され得る、再構築された画素のリストへのインデックスであり得る。たとえば、このリストは、HEVCにおいて通常のイントラ予測のために使用され得るすべての参照画素を含み得る。
【００６３】
図2の例では、第2のパレット192は、それぞれ、エントリインデックス値1、エントリインデックス値2、エントリインデックス値3、およびエントリインデックス4を有する4つのエントリ208〜214を含む。エントリ208〜214は、それぞれ、画素値A、画素値B、画素値C、および画素値Dを含む画素値に、インデックス値を関連付ける。本開示の1つまたは複数の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、上で説明された技法のいずれかを使用して、第2のCU188をコーディングするために、パレット予測の目的で第1のCU180の位置を特定するとともに第1のパレット184のエントリ1〜3を第2のパレット192のエントリ1〜3にコピーし得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。加えて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含められるべきエントリ4のためのデータをコーディングし得る。そのような情報は、予測パレットから予測されていないパレットエントリの数、およびそれらのパレットエントリに対応する画素値を含み得る。
【００６４】
いくつかの例では、本開示の態様によれば、1つまたは複数のシンタックス要素は、第2のパレット192などのパレットが完全に予測パレット(第1のパレット184として図2に示されるが、1つまたは複数のブロックからのエントリからなることがある)から予測されるかどうか、または第2のパレット192の特定のエントリが予測されるかどうかを示し得る。たとえば、エントリのすべてが予測されるかどうかを、最初のシンタックス要素が示し得る。エントリのすべてが予測されるとは限らないことを最初のシンタックス要素が示す場合(たとえば、0という値を有するフラグ)、第2のパレット192のどのエントリが予測パレットから予測されるかを、1つまたは複数の追加のシンタックス要素が示し得る。
【００６５】
本開示のいくつかの態様によれば、パレット予測と関連付けられるいくつかの情報が、コーディングされているデータの1つまたは複数の特性から推測され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化する(およびビデオデコーダ30がそのようなシンタックス要素を復号する)のではなく、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいてパレット予測を実行し得る。
【００６６】
ある例では、説明を目的として、上で説明されたpred_palette_flagの値は、例として、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidの1つまたは複数から推測され得る。すなわち、例としてCUのサイズに関して、ビデオエンコーダ20および/またはビデオデコーダ30は、上で説明されたpred_palette_flagが、所定のサイズを超える、またはそれ未満である任意のCUに対して1に等しいと決定し得る。この例では、pred_palette_flagは、符号化されたビットストリームにおいてシグナリングされる必要はない。
【００６７】
pred_palette_flagに関して上では説明されたが、ビデオエンコーダ20および/またはビデオデコーダ30はさらに、または代替的に、パレットがそこからの予測のために使用される候補CU、またはパレット予測候補を構築するための規則などの、パレット予測と関連付けられる他の情報を、コーディングされているデータの1つまたは複数の特性に基づいて推測し得る。
【００６８】
本開示の他の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、オンザフライでパレットを構築し得る。たとえば、第2のCU188を最初にコーディングするとき、パレット192中にエントリはない。ビデオエンコーダ20およびビデオデコーダ30は第2のCU188の画素の新しい値をコーディングするので、各々の新しい値はパレット192に含まれる。すなわち、たとえば、CU188の中の場所に対して画素値が生成およびシグナリングされるにつれて、ビデオエンコーダ20は画素値をパレット192に追加する。ビデオエンコーダ20がCUの中で比較的後の画素を符号化するにつれて、ビデオエンコーダ20は、画素値をシグナリングするのではなくインデックス値を使用して、パレットにすでに含まれているものと同じ値を有する画素を符号化し得る。同様に、ビデオデコーダ30が、第2のCU188の中のある場所に対する新しい画素値(たとえば、ビデオエンコーダ20によってシグナリングされる)を受信すると、ビデオデコーダ30は、パレット192にその画素値を含める。第2のCU188の中の比較的後に復号された画素場所が第2のパレット192に追加された画素値を有するとき、ビデオデコーダ30は、たとえば、第2のCU188の中の画素値の再構築のために、第2のパレット192の中の対応する画素値を特定する、インデックス値などの情報を受信し得る。
【００６９】
いくつかの例では、以下でより詳細に説明されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット184および192を最大パレットサイズ以下に維持し得る。本開示の態様によれば、最大パレットサイズに到達した場合、たとえば、第2のパレット192が動的にオンザフライで構築されるにつれて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192のエントリを除去するために同じプロセスを実行し得る。パレットエントリを除去するための1つの例示的なプロセスは、ビデオエンコーダ20およびビデオデコーダ30がパレットの最も古いエントリを除去する、first-in-first-out (FIFO)技法である。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、最も使用される頻度の低いパレットエントリをパレットから除去し得る。さらに別の例では、ビデオエンコーダ20およびビデオデコーダ30は、FIFOと使用頻度の両方のプロセスに重みを付けて、どのエントリを除去すべきかを決定し得る。すなわち、エントリの除去は、エントリがどれだけ古いかということと、エントリがどれだけ頻繁に使用されるかということとに基づき得る。
【００７０】
いくつかの態様によれば、あるエントリ(画素値)がパレットから除去され、コーディングされているCUの中の後の場所においてその画素値が再び現れる場合、ビデオエンコーダ20は、エントリをパレットに含めてインデックスを符号化する代わりに、その画素値を符号化し得る。加えて、または代替的に、ビデオエンコーダ20は、たとえばビデオエンコーダ20およびビデオデコーダ30がCU中の場所を走査するにつれて、除去された後でパレットエントリをパレットに再入力することができる。
【００７１】
いくつかの例では、パレットをオンザフライで導出するための技法は、パレットを決定するための1つまたは複数の他の技法と組み合わされ得る。具体的には、ある例として、ビデオエンコーダ20およびビデオデコーダ30は、第2のパレット192を(たとえば、第1のパレット184から第2のパレット192を予測するためにパレット予測を使用して)最初にコーディングすることができ、第2のCU188の画素をコーディングするときに第2のパレット192を更新することができる。たとえば、初期パレットを送信すると、ビデオエンコーダ20は、値を初期パレットに追加することができ、またはCUの中の追加の位置の画素値が走査されるにつれて、初期パレットの中の値を変更することができる。同様に、初期パレットを受信すると、ビデオデコーダ30は、値を初期パレットに追加する(すなわち、含める)ことができ、またはCUの中の追加の位置の画素値が走査されるにつれて、初期パレットの中の値を変更することができる。
【００７２】
いくつかの例では、ビデオエンコーダ20は、現在のCUが、パレット全体の送信を使用するか、オンザフライのパレット生成を使用するか、または初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかを、シグナリングすることができる。いくつかの例では、初期パレットは最大パレットサイズのフルパレットであることがあり、この場合、初期パレット中の値は変更され得る。他の例では、初期パレットは最大パレットサイズよりも小さいことがあり、この場合、ビデオエンコーダ20およびビデオデコーダ30は、値を初期パレットの値に追加し、かつ/または初期パレットの値を変更することができる。
【００７３】
本開示の1つまたは複数の態様によれば、たとえば、パレットに含まれる画素値の数の観点での、第1のパレット184および第2のパレット192などのパレットのサイズは、固定されていることがあり、または、符号化されたビットストリームにおいて1つまたは複数のシンタックス要素を使用してシグナリングされることがある。たとえば、いくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、単項符号または切捨て単項符号(たとえば、パレットサイズの最大の限度において切り捨てる符号)を使用し得る。他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、指数ゴロム符号またはライスゴロム符号を使用し得る。
【００７４】
さらに他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットの各エントリの後で、パレットのサイズを示すデータをコーディングし得る。例として、第2のパレット192に関して、ビデオエンコーダ20は、エントリ208〜214の各々の後で、停止フラグを符号化し得る。この例では、1に等しい停止フラグは、現在コーディングされているエントリが第2のパレット192の最後のエントリであることを指定することができ、一方、0に等しい停止フラグは、第2のパレット192の中に追加のエントリがあることを示すことができる。したがって、ビデオエンコーダ20は、エントリ208〜212の各々の後で0という値を有する停止フラグと、エントリ214の後で1という値を有する停止フラグとを符号化することがある。いくつかの事例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリームに含まれないことがある。上の例はパレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報(たとえば、上で述べられたような、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidなどの特性情報)に基づいて、条件的に送信または推測され得る。
【００７５】
本開示の技法は、無損失でデータをコーディングすること、または代替的に、何らかの損失を伴ってデータをコーディングすること(非可逆コーディング)を含む。たとえば、非可逆コーディングに関して、ビデオエンコーダ20は、パレットの画素値をCU中の実際の画素値に対して厳密に照合することなく、CUの画素をコーディングし得る。本開示の技法が非可逆コーディングに適用されるとき、パレットに対して何らかの制約が適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184および第2のパレット192などのパレットを量子化し得る。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、エントリの画素値が互いに所定の範囲内にあるとき、パレットのエントリを統合または合成(すなわち、量子化)し得る。言い換えると、新しいパレット値の誤差マージンの範囲内にあるパレット値がすでにある場合、新しいパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なる画素値が、単一のパレットエントリに、または等価的に、単一のパレット画素値にマッピングされ得る。
【００７６】
ビデオデコーダ30は、特定のパレットが可逆であるか非可逆であるかにかかわらず、同じ方式で画素値を復号し得る。一例として、ビデオデコーダ30は、パレットが可逆であるか非可逆であるかにかかわらず、コーディングされるブロック中の所与の画素場所のためにビデオエンコーダ20によって送信されたインデックス値を使用して、その画素場所のためのパレット中のエントリを選択することができる。この例では、パレットエントリの画素値が、それが元の画素値と厳密に一致するかどうかにかかわらず、コーディングされるブロック中の画素値として使用される。
【００７７】
非可逆コーディングの例では、説明を目的として、ビデオエンコーダ20が、デルタ値と呼ばれる誤差の限界を決定し得る。候補画素値エントリPlt_candは、CUまたはPUなどの、コーディングされるべきブロック中の場所における画素値に対応し得る。パレットの構築の間、ビデオエンコーダ20は、候補画素値エントリPlt_candと、パレット中の既存の画素値エントリのすべてとの絶対的な差分を決定する。候補画素値エントリPlt_candとパレット中の既存の画素値エントリとの絶対的な差分のすべてがデルタ値よりも大きい場合、ビデオエンコーダ20は、画素値候補をエントリとしてパレットに追加し得る。画素値エントリPlt_candとパレット中の少なくとも1つの既存の画素値エントリとの絶対的な差分がデルタ値以下である場合、ビデオエンコーダ20は、候補画素値エントリPlt_candをパレットに追加しなくてよい。したがって、画素値エントリPlt_candをコーディングするとき、ビデオエンコーダ20は、画素値エントリPlt_candに最も近い画素値を有するエントリを選択することがあり、これによって、ある程度の損失がシステムにもたらされる。パレットが複数の成分(たとえば、3色の成分)から構成されるとき、個々の成分値の絶対的な差分の合計が、デルタ値との比較のために使用され得る。代替的に、または加えて、各成分値に対する絶対的な差分は、第2のデルタ値と比較され得る。
【００７８】
いくつかの例では、上で述べられたパレット中の既存の画素値エントリは、同様のデータ比較プロセスを使用して追加されている可能性がある。他の例では、パレット中の既存の画素値は、他のプロセスを使用して追加されている可能性がある。たとえば、パレットを構築するデルタ比較プロセスを開始するために、(デルタ比較を伴わずに)1つまたは複数の初期画素値エントリがパレットに追加され得る。上で説明されたプロセスは、ルーマパレットおよび/またはクロマパレットを生成するために、ビデオエンコーダ20および/またはビデオデコーダ30によって実装され得る。
【００７９】
パレット構築に関して上で説明された技法はまた、画素コーディングの間にビデオエンコーダ20およびビデオデコーダ30によって使用され得る。たとえば、画素値の符号化のとき、ビデオエンコーダ20は、画素の値をパレット中のエントリの画素値と比較し得る。画素の値とパレット中のエントリの1つとの間の絶対的な画素値差分がデルタ値以下である場合、ビデオエンコーダ20は、パレットのエントリとして画素値を符号化し得る。すなわち、この例では、ビデオエンコーダ20は、画素値がパレットエントリに対して(たとえば、所定の範囲内の)十分に小さい絶対的な差分を生み出すとき、パレットのエントリの1つを使用して画素値を符号化する。
【００８０】
いくつかの例では、ビデオエンコーダ20は、画素値を符号化するために、(コーディングされる画素値と比較して)最小の絶対的な画素値差分を生み出すパレットエントリを選択し得る。ある例として、ビデオエンコーダ20は、画素値のために使用されるであろうパレットエントリ、たとえば、ビデオデコーダ30においてコーディングされた画素値を再構築するために使用されるであろうパレット画素値を示すために、インデックスを符号化し得る。画素の値とパレット中のエントリのすべてとの絶対的な画素値差分がデルタよりも大きい場合、エンコーダは、画素値を符号化するためにパレットエントリの1つを使用しないことがあり、代わりに、画素の画素値(場合によっては量子化後の)をビデオデコーダ30に送信し得る(および、場合によっては画素値をエントリとしてパレットに追加し得る)。
【００８１】
別の例では、ビデオエンコーダ20は、画素値を符号化するためのパレットのエントリを選択し得る。ビデオエンコーダ20は、選択されたエントリを予測画素値として使用し得る。すなわち、ビデオエンコーダ20は、実際の画素値と選択されたエントリとの差分を表す残差値を決定し、残差を符号化し得る。ビデオエンコーダ20は、パレットのエントリによって予測されるブロック中の画素の残差値を生成することができ、画素のブロックのためのそれぞれの残差画素値を含む残差ブロックを生成することができる。ビデオエンコーダ20は続いて、(図2に関して上で述べられたような)変換および量子化を残差ブロックに適用し得る。このようにして、ビデオエンコーダ20は、量子化された残差変換係数を生成し得る。別の例では、残差は、可逆的に(変換および量子化を伴わずに)、または変換を伴わずにコーディングされ得る。
【００８２】
ビデオデコーダ30は、変換係数を逆変換し、逆量子化して、残差ブロックを再生成することができる。ビデオデコーダ30は次いで、予測パレットエントリ値および画素値の残差値を使用して、画素値を再構築し得る。たとえば、ビデオデコーダ30は、残差値をパレットエントリ値と組み合わせて、コーディングされた画素値を再構築し得る。
【００８３】
いくつかの例では、デルタ値は、異なるCUサイズ、ピクチャサイズ、色空間、または異なる色成分に対して異なり得る。デルタ値は、様々なコーディング条件に基づいて、事前に決定されることがあり、または決定されることがある。たとえば、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスなどの、高水準のシンタックスを使用して、デルタ値をビデオデコーダ30にシグナリングし得る。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、同じ固定されたデルタ値を使用するように事前に構成され得る。さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、サイド情報(たとえば、上で述べられたような、CUサイズ、色空間、色成分など)に基づいて、デルタ値を適応的に導出し得る。
【００８４】
いくつかの例では、非可逆コーディングパレットモードは、HEVCコーディングモードとして含まれ得る。たとえば、コーディングモードは、イントラ予測モード、インター予測モード、可逆コーディングパレットモード、および非可逆コーディングパレットモードを含み得る。HEVCコーディングでは、図2および図3に関して上で述べられたように、量子化パラメータ(QP)は、許容される歪みを制御するために使用される。パレットベースのコーディングのためのデルタの値は、QPの関数として計算され、または別様に決定され得る。
【００８５】
本開示において説明される非可逆コーディング技法を使用したパレットの生成は、ビデオエンコーダ20、ビデオデコーダ30、または両方によって実行され得る。たとえば、ビデオエンコーダ20は、上で説明されたデルタ比較技法を使用してCUのためのパレット中のエントリを生成し、ビデオデコーダ30が使用するためのパレットの構築のための情報をシグナリングし得る。すなわち、ビデオエンコーダ20は、CUのためのパレット中のエントリの画素値を示す情報をシグナリングし、次いで、そのようなパレットエントリと関連付けられる画素値を使用して画素値を符号化するように構成され得る。ビデオデコーダ30は、そのような情報を使用してパレットを構築することができ、次いで、エントリを使用してコーディングされたブロックの画素値を復号することができる。いくつかの例では、ビデオエンコーダ20は、コーディングされたブロックの1つまたは複数の画素場所のためのパレットエントリを特定するインデックス値をシグナリングすることができ、ビデオデコーダ30は、インデックス値を使用して、パレットから関連する画素値エントリを取り出すことができる。
【００８６】
他の例では、ビデオデコーダ30は、上で説明されたデルタ比較技法を適用することによって、パレットを構築するように構成され得る。たとえば、ビデオデコーダ30は、コーディングされたブロック内の場所のための画素値を受信することができ、画素値とパレット中の既存の画素値エントリとの絶対的な差分がデルタ値よりも大きいかどうかを決定することができる。デルタ値よりも大きい場合、ビデオデコーダ30は、たとえば、ビデオエンコーダ20によってシグナリングされる対応するインデックス値を使用したブロックの他の画素場所のための画素値のパレットベースの復号において後で使用するために、画素値をパレット中のエントリとして追加することができる。この場合、ビデオエンコーダ20およびビデオデコーダ30は、同じまたは同様のプロセスを適用してパレットを生成することができる。デルタ値よりも大きくない場合、ビデオデコーダ30は、画素値をパレットに追加しなくてよい。
【００８７】
説明を目的とする例では、ビデオデコーダ30は、ブロック中の様々な画素場所のためのインデックス値または画素値を受信することができる。インデックス値が画素場所のために受信される場合、たとえば、ビデオデコーダ30は、インデックス値を使用してパレット中のエントリを特定し、パレットエントリの画素値を画素場所のために使用することができる。画素値が画素場所のために受信される場合、ビデオデコーダ30は、画素場所のための受信された画素値を使用することができ、デルタ比較を適用して、画素値がパレットに追加され次いでパレットコーディングのために後で使用されるべきであるかどうかを決定することもできる。
【００８８】
エンコーダ側では、ブロック中の場所のための画素値が、画素値とパレット中の既存の画素値エントリとの間の、デルタ値以下である絶対的な差分を生成する場合、ビデオエンコーダ20は、インデックス値を送信して、その場所のための画素値を再構築する際に使用するためのパレット中のエントリを特定することができる。ブロック中の場所のための画素値が、画素値とパレット中の既存の画素値エントリとの間の、すべてがデルタ値以上である絶対的な差分を生成する場合、ビデオエンコーダ20は、画素値を送信することができ、画素値をパレット中の新しいエントリとして追加することができる。パレットを構築するために、ビデオデコーダ30は、たとえば上で説明されたように、エンコーダによってシグナリングされるデルタ値を使用し、固定されたデルタ値もしくは既知のデルタ値に依拠し、または、デルタ値を推測もしくは導出することができる。
【００８９】
上で述べられたように、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータをコーディングするとき、イントラ予測モード、インター予測モード、可逆コーディングパレットモード、および非可逆コーディングパレットモードを含む、コーディングモードを使用し得る。本開示のいくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングが有効であるかどうかを示す1つまたは複数のシンタックス要素をコーディングし得る。たとえば、各CUにおいて、ビデオエンコーダ20は、フラグPLT_Mode_flagなどのシンタックス要素を符号化し得る。PLT_Mode_flagまたは他のシンタックス要素は、パレットベースのコーディングモードが所与のCU(または他の例ではPU)のために使用されるべきかどうかを示し得る。たとえば、このフラグは、CUレベルで符号化されたビデオビットストリームにおいてシグナリングされ、次いで、符号化されたビデオビットストリームを復号するとビデオデコーダ30によって受信され得る。
【００９０】
この例では、このPLT_Mode_flagの1に等しい値は、パレットベースのコーディングモードを使用して現在CUが符号化されることを指定し得る。この場合、ビデオデコーダ30は、CUを復号するためにパレットベースのコーディングモードを適用し得る。いくつかの例では、シンタックス要素が、CUのための複数の異なるパレットベースのコーディングモード(たとえば、非可逆または可逆)の1つを示し得る。このPLT_Mode_flagの0に等しい値は、パレットモード以外のモードを使用して現在のCUが符号化されることを指定し得る。たとえば、様々なインター予測モード、イントラ予測モード、または他のコーディングモードのいずれかが使用され得る。PLT_Mode_flagの値が0であるとき、ビデオエンコーダ20は、それぞれのCUを符号化するために使用される特定のモード(たとえば、HEVCコーディングモード)を示すために、追加のデータを符号化することもできる。PLT_Mode_flagの使用が例として説明される。しかしながら、他の例では、CU(または、他の例ではPU)のためにパレットベースのコーディングモードが使用されるべきかどうかを示すために、または複数のモードのうちのいずれがコーディングのために使用されるべきかを示すために、マルチビットコードなどの他のシンタックス要素が使用され得る。
【００９１】
いくつかの例では、上で説明されたフラグまたは他のシンタックス要素は、CU(またはPU)レベルよりも高いレベルで送信され得る。たとえば、ビデオエンコーダ20は、スライスレベルでそのようなフラグをシグナリングし得る。この場合、1に等しい値は、スライス中のCUのすべてがパレットモードを使用して符号化されることを示す。この例では、たとえばパレットモードまたは他のモードのために、CUレベルにおいて追加のモード情報がシグナリングされない。別の例では、ビデオエンコーダ20は、PPS、SPS、またはVPSにおいてそのようなフラグをシグナリングし得る。
【００９２】
本開示のいくつかの態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、特定のスライス、ピクチャ、シーケンスなどに対してパレットモードが有効であるか無効であるかを指定する1つまたは複数のシンタックス要素(たとえば、上で説明されたフラグなど)を、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルの1つにおいてコーディングし得るが、PLT_Mode_flagは、パレットベースのコーディングモードが各CUのために使用されるかどうかを示す。この場合、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルにおいて送信されたフラグまたは他のシンタックス要素が、パレットコーディングモードが無効であることを示す場合、いくつかの例では、CUごとにPLT_Mode_flagをシグナリングする必要がないことがある。あるいは、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルにおいて送信されたフラグまたは他のシンタックス要素が、パレットコーディングモードが有効であることを示す場合、パレットベースコーディングモードが使用されるべきかどうかを示すために、CUごとにPLT_Mode_flagがさらにシグナリングされることがある。やはり、上述のように、CUのパレットベースのコーディングを示すためにこれらの技法を適用することは、付加的または代替的に、PUのパレットベースのコーディングを示すために使用され得る。
【００９３】
いくつかの例では、上で説明されたシンタックス要素は、ビットストリームにおいて条件的にシグナリングされ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、シンタックス要素を符号化または復号するだけであり得る。
【００９４】
上で説明された例は、たとえばビットストリーム中に1つまたは複数のシンタックス要素を伴う明示的なシグナリングに関するが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットコーディングモードが特定のブロックをコーディングするためにアクティブであるかどうか、かつ/または使用されるかどうかを暗黙的に決定し得る。ビデオエンコーダ20およびビデオデコーダ30は、たとえば、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、パレットベースのコーディングがブロックのために使用されるかどうかを決定し得る。
【００９５】
図2の技法はCU(HEVC)の文脈において上で説明されるが、技法が予測ユニット(PU)または他のビデオコーディングプロセスおよび/もしくは規格にも適用され得ることを理解されたい。
【００９６】
図3は、本開示の技法による、ビデオブロックのためのパレットに対するインデックスを決定することの例を示す概念図である。たとえば、図3は、インデックス値と関連付けられる画素のそれぞれの場所をパレット244のエントリと関連付けるインデックス値(値1、2、および3)のマップ240を含む。パレット244は、図2に関して上で説明された第1のパレット184および第2のパレット192と同様の方法で決定され得る。
【００９７】
再び、図3の技法は、説明を目的に、ビデオエンコーダ20(図1および図6)およびビデオデコーダ30(図1および図7)の文脈において、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【００９８】
図3の例では、マップ240は各画素場所のインデックス値を含むものとして示されるが、他の例では、ブロックの画素値を指定するパレット244のエントリを示すインデックス値と、すべての画素場所が関連付けられるとは限らないことを理解されたい。すなわち、上で述べられたように、いくつかの例では、ビデオエンコーダ20は、画素値がパレット244に含まれない場合、マップ240の中のある場所に対する実際の画素値(またはその量子化されたバージョン)を示すものを、符号化する(かつビデオデコーダ30が符号化されたビットストリームからそれを取得する)ことができる。
【００９９】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どの画素場所がインデックス値と関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップの中の(i,j)のエントリがCUの(i,j)の場所に対応すると仮定する。ビデオエンコーダ20は、マップの各エントリ(すなわち、各画素場所)に対して、関連するインデックス値をエントリが有するかどうかを示す1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、CUの中の(i,j)の位置における画素値がパレット244の中の値のうちの1つであることを示すために、1という値を有するフラグを符号化し得る。ビデオエンコーダ20はまた、そのような例では、パレットの中の画素値を示すために、かつビデオデコーダが画素値を再構築することを可能にするために、パレットインデックス(図3の例では値1〜3として示される)を符号化し得る。パレット244が単一のエントリおよび関連する画素値を含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップし得る。ビデオエンコーダ20は、CUの中の(i,j)の位置における画素値がパレット244の中の値の1つではないことを示すために、0という値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、画素値を再構築する際にビデオデコーダ30によって使用するための画素値の指示を符号化し得る。いくつかの事例では、画素値は、非可逆方式でコーディングされ得る。
【０１００】
CUの1つの場所における画素の値は、CUの他の場所における1つまたは複数の他の画素の値の指示を与え得る。たとえば、CUの隣接する画素場所が、同じ画素値を有すること、または(2つ以上の画素値が単一のインデックス値にマッピングされ得る非可逆コーディングの場合)同じインデックス値にマッピングされ得ることの、比較的高い確率があり得る。
【０１０１】
本開示の態様によれば、ビデオエンコーダ20は、同じ画素値またはインデックス値を有する所与の走査順序における連続する画素またはインデックス値の数を示す、1つまたは複数のシンタックス要素を符号化し得る。上で述べられたように、同様の値の画素またはインデックス値の列は本明細書ではランと呼ばれることがある。説明を目的とする例では、所与の走査順序における2つの連続する画素またはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序における2つの連続する画素またはインデックスが同じ値を有するが、走査順序における第3の画素またはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続するインデックスまたは画素の場合、ランは2であり、以下同様である。ビデオデコーダ30は、ランを示すシンタックス要素を符号化されたビットストリームから取得することができ、そのデータを使用して、同じ画素またはインデックス値を有する連続する位置の数を決定することができる。
【０１０２】
いくつかの例では、現在のCUのためのパレット中にある画素値を有する、現在のCU中のすべての画素位置は、連続する画素位置における画素値の「ラン」が後に続くパレットインデックスを用いて符号化される。パレット中に1つのエントリしかない場合、パレットインデックスまたは「ラン」の送信は、現在のCUに対してスキップされ得る。現在のCU中の画素位置の1つにおける画素値がパレット中の画素値と厳密に一致しない場合、ビデオエンコーダ20は、最も近い画素値を有するパレットエントリの1つを選択することができ、元の画素値とパレットに含まれる予測画素値との間の予測誤差または残差値を計算することができる。ビデオエンコーダ20は、画素位置の残差値を符号化して、ビデオデコーダ30に送信する。ビデオデコーダ30は次いで、対応する受信されたパレットインデックスに基づいて、画素位置における画素値を導出することができ、次いで、現在のCU中の画素位置における元の画素値を予測するために、導出された画素値および残差値が使用される。一例では、残差値は、RQTを適用して残差値を変換し、変換係数を量子化し、量子化された変換係数をエントロピー符号化することなどの、HEVCの方法を使用して符号化され得る。場合によっては、上の例は可逆コーディングと呼ばれ得る。
【０１０３】
説明を目的とする例では、マップ240の線248を考える。水平方向の左から右への走査方向を仮定すると、線248は、「2」という5つのインデックス値および「3」という3つのインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向における線248の最初の場所に対して2というインデックス値を符号化し得る。加えて、ビデオエンコーダ20は、シグナリングされるインデックス値と同じインデックス値を有する、走査方向における連続する値のランを示す、1つまたは複数のシンタックス要素を符号化し得る。線248の例では、ビデオエンコーダ20は、4というランをシグナリングすることができ、これによって、走査方向における後続の4つの場所のインデックス値が、シグナリングされるインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ20は、線248の中の次の異なるインデックス値に対して同じプロセスを実行し得る。すなわち、ビデオエンコーダ20は、3というインデックス値と、2というランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値を示すシンタックス要素と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを取得し得る。
【０１０４】
上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向(たとえば、ブロックに対して対角方向に45度または135度)であり得る。いくつかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す1つまたは複数のシンタックス要素を各ブロックに対して符号化し得る。加えて、または代替的に、走査方向は、たとえば、ブロックサイズ、色空間、および/または色成分などのいわゆるサイド情報に基づいて、シグナリングまたは推測され得る。ビデオエンコーダ20は、ブロックの各色成分に対する走査を指定し得る。代替的に、ある指定された走査が、ブロックのすべての色成分に適用され得る。
【０１０５】
たとえば、列ベースの走査に関して、マップ240の列252を考える。垂直方向の上から下への走査方向を仮定すると、列252は、「1」という1つのインデックス値、「2」という5つのインデックス値、および「3」という2つのインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向における線252の最初の場所(列252の相対的な先頭)に対して1というインデックス値を符号化し得る。加えて、ビデオエンコーダ20は、0というランをシグナリングすることがあり、これによって、走査方向における後続の場所のインデックス値が異なることを示す。ビデオエンコーダ20は次いで、走査方向における次の場所に対する2というインデックス値と、4というラン、すなわち、走査方向における後続の4つの場所のインデックス値がシグナリングされたインデックス値と同じインデックス値を共有することを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオエンコーダ20は次いで、走査方向における次の異なるインデックス値に対する3というインデックス値と、1というランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値を示すシンタックス要素と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを取得し得る。
【０１０６】
本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、マップ240の1つまたは複数のエントリのための線のコピーを、追加的または代替的に実行することができる。線のコピーは、いくつかの例では走査方向に依存し得る。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリのための画素値またはインデックス値が、(水平方向の走査については)特定のエントリの上の線の中の画素値もしくはインデックス値に等しく、または(垂直方向の走査については)特定のエントリの左の列の中の画素値もしくはインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリの上の線または左の列の中のエントリに等しい、走査順序における画素値またはインデックス値の数を、ランとして示し得る。この例では、ビデオエンコーダ20および/またはビデオデコーダ30は、指定された隣接する線から、また現在コーディングされているマップの行のための指定された数のエントリから、画素値またはインデックス値をコピーすることができる。
【０１０７】
説明を目的とする例では、マップ240の列256および260を考える。垂直方向の上から下への走査方向を仮定すると、列256は、「1」という3つのインデックス値、「2」という3つのインデックス値、および「3」という2つのインデックス値を含む。列260は、走査方向において同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、列260全体が列256からコピーされることを示す、列260のための1つまたは複数のシンタックス要素を符号化し得る。1つまたは複数のシンタックス要素は、マップ240の相対的な先頭にある列260の最初のエントリと関連付けられ得る。ビデオデコーダ30は、線のコピーを示すシンタックス要素を取得し、列260を復号するときに列260のために列256のインデックス値をコピーし得る。
【０１０８】
本開示の態様によれば、いわゆるエントリのランをコーディングするための技法が、上で説明された線のコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ20は、マップ中のエントリの値がパレットから取得されるかどうか、または、マップ中のエントリの値がマップ240中の以前にコーディングされた行から取得されるかどうかを示す、1つまたは複数のシンタックス要素(たとえば、フラグ)を符号化し得る。ビデオエンコーダ20はまた、パレットのインデックス値または線(行または列)の中でのエントリの位置を示す1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20はまた、同じ値を共有する連続するエントリの数を示す1つまたは複数のシンタックス要素を符号化し得る。ビデオデコーダ30は、符号化されたビットストリームからそのような情報を取得することができ、その情報を使用してマップおよびブロックの画素値を再構築することができる。
【０１０９】
説明を目的とする例では、マップ240の行264および268を考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という5つのインデックス値および「3」という3つのインデックス値を含む。行268は、「1」という3つのインデックス値、「2」という2つのインデックス値、および「3」という3つのインデックス値を含む。この例では、ビデオエンコーダ20は、行268のためのデータを符号化するとき、ランが後に続く行264の特定のエントリを特定することができる。たとえば、ビデオエンコーダ20は、行268の最初の場所(行268の一番左の場所)が行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向における2つの連続するエントリの次のランが行264の最初の場所と同じであることを示す1つまたは複数のシンタックス要素を符号化することができる。
【０１１０】
いくつかの例では、ビデオエンコーダ20はまた、別の行(または列)の中の場所に対して現在の画素値もしくはインデックス値をコーディングすべきか、または、ランシンタックス要素を使用して現在の画素値もしくはインデックス値をコーディングすべきかを、決定することができる。たとえば、行264の最初の場所および2つのエントリのラン(上で述べられた)を示す1つまたは複数のシンタックス要素を符号化した後で、ビデオエンコーダ20は、行268の中の(左から右の順序での)4番目と5番目の場所に対して、4番目の場所に対して2という値を示す1つまたは複数のシンタックス要素と、1というランを示す1つまたは複数のシンタックス要素とを符号化することができる。したがって、ビデオエンコーダ20は、別の線(または列)を参照することなくこれらの2つの場所を符号化する。ビデオエンコーダ20は次いで、上側の行264に対して、行268の中の3というインデックス値を有する最初の場所をコーディングし得る(たとえば、上側の行264からのコピーと、同じインデックス値を有する走査順序において連続する場所のランとを示す)。したがって、本開示の態様によれば、ビデオエンコーダ20は、行(または列)の画素値もしくはインデックス値を行(または列)の他の値に対してコーディングすること、たとえば、ランを使用すること、行(または列)の画素値もしくはインデックス値を別の行(または列)の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。いくつかの例では、ビデオエンコーダ20は、レート/歪みの最適化を実行してこの選択を行うことができる。
【０１１１】
ビデオデコーダ30は、上で説明されたシンタックス要素を受信することができ、行268を再構築することができる。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の場所に対する関連するインデックス値のコピー元とすべき、隣接する行の中の特定の位置を示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序における連続する場所の数を示すデータを取得し得る。
【０１１２】
いくつかの事例では、エントリのコピー元の行は、(図3の例に示されるように)現在コーディングされている行のエントリのすぐ隣であり得る。しかしながら、他の例では、マップのいくつかの行は、そのうちのいずれもが現在コーディングされているマップの行のための予測エントリとして使用され得るように、ビデオエンコーダ20および/またはビデオデコーダ30によってバッファリングされ得る。したがって、いくつかの例では、エントリの画素値は、現在の行のすぐ上の行(または左の列)、または現在の行の2つ以上上の行(または左の列)の中のエントリの画素値に等しいものとして、シグナリングされ得る。
【０１１３】
説明を目的とする例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリの現在の行をコーディングする前に、エントリの以前のn行を記憶するように構成され得る。この例では、ビデオエンコーダ20は、切捨て単項符号または他の符号を用いて、ビットストリームにおいて予測行(エントリのコピー元の行)を示し得る。別の例では、ビデオエンコーダ20は、現在の線をコーディングするための基準として使用される、現在の行とマップ240の予測行との間の変位値を符号化し得る(およびビデオデコーダ30はそれを復号し得る)。すなわち、ビデオエンコーダ20は、インデックス値のコピー元の特定の線(または列)の指示を符号化し得る。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、c[0]、c[1]、…、をマップ240の現在の線のインデックスを表記するものとし、u[0]、u[1]、u[2]、…、を、上側の隣接する線などのマップ240の予測線のインデックスを表記するものとする。この例では、変位ベクトルがdであるとすると、c[i]のインデックス値は、u[i+d]から予測されることがあり、またはdが負の値をとるのを避けるためにu[i-d]から予測されることがある。dの値は、単項符号、切捨て単項符号、指数ゴロム符号、またはゴロムライス符号を使用してコーディングされ得る。
【０１１４】
別の例として、ビデオエンコーダ20は、「上の線の左半分からコピーする」または「上の線の右半分からコピーする」などの命令をシグナリングすることがあり、現在コーディングされているマップの線にコピーすべき、隣接する線と、隣接する線のエントリの数または部分とを示す。追加の例として、インデックス値のマップは、コーディングの前に並べ変えられることがある。たとえば、インデックス値のマップは、コーディングの効率を改善するために、90度、180度、もしくは270度回転されることがあり、または、上下または左右が反転されることがある。
【０１１５】
他の例では、ビデオエンコーダ20は、マップ240の同様の値のインデックス値のランをビデオデコーダ30に送信しないことがある。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの値を暗黙的に導出し得る。一例では、ランの値は、たとえば4、8、16などの定数値であり得る。別の例では、ランの値は、たとえばブロックサイズ、量子化パラメータ(QP)、フレームタイプ、色成分、色フォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在のブロックのための他のタイプの特性情報などの、コーディングされているビデオデータの現在のブロックのためのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの半分の幅(または半分の高さ)、現在のブロックの幅および/もしくは高さの分数、または、現在のブロックの幅および/もしくは高さの倍数に等しいことがある。別の例では、ビデオエンコーダ20は、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、および/またはスライスヘッダ中のシンタックスなどの、高水準のシンタックスを使用してビデオデコーダ30にランの値をシグナリングし得る。
【０１１６】
加えて、または代替的に、ビデオエンコーダ20は、マップ240をビデオデコーダ30に送信する必要すらないことがある。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップ240に含まれるインデックス値の各ランの開始場所または位置を暗黙的に導出し得る。一例では、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されるビデオコーディング規格は、いくつかの位置においてのみランが開始できることを決定し得る。たとえば、ランは、コーディングされている現在のブロックの各行の先頭、またはN行ごとの先頭においてのみ開始し得る。開始位置は、異なる走査方向に対しては異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、現在のブロックの列の先頭、またはN列ごとの先頭においてのみ開始し得る。
【０１１７】
別の例では、開始位置は、たとえばブロックサイズ、QP、フレームタイプ、色成分、色フォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在のブロックのための他のタイプの特性情報などの、現在のブロックのためのサイド情報に依存して導出され得る。ランの開始位置がブロックサイズに依存する場合、開始位置は、各行および/もしくは各列の中点、または各行および/もしくは各列の分数(たとえば、1/n、2/n、…(n-1)/n)であり得る。別の例では、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスなどの、高水準のシンタックスを使用して、開始場所をビデオデコーダ30にシグナリングし得る。
【０１１８】
いくつかの例では、各々上で説明された、暗黙的な開始場所の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップの同様の値のインデックス値のランが2つの隣接する開始場所の間の距離に等しいと決定し得る。開始場所が現在のブロックの各行の先頭(すなわち、第1の場所)である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの長さが現在のブロックの行全体の長さに等しいと決定し得る。
【０１１９】
図4は、本開示の技法による、クロマ成分に対して適応的にダウンサンプリングされたルーマ成分のためのパレットインデックスのランを使用して、ビデオブロックの幾何学的な辺270、272、または274を決定することの例を示す概念図である。図4では、ルーマサンプルは中空の円として示されており、クロマサンプルはx印が重畳されたルーマサンプルの1つとして示されている。図4は、ビデオブロックの幾何学的な辺270、272、または274の位置に基づく、ルーマ成分およびクロマ成分に対する異なるラン値の例を示す。
【０１２０】
いくつかの場合、現在のブロック中の複数の色成分に対して1つのパレットが生成および共有され、他の場合、色成分の1つまたは複数に対して別個のパレットが生成される。ある場合、ルーマ成分に対して1つのパレットが生成されることがあり、両方のクロマ成分に対して別のパレットが生成されることがある。いずれの場合でも、幾何学的情報が複数の色成分の間で共有され得る。通常は、併置されたブロックのそれぞれの辺の位置の間には、異なる色成分について高い相関があり、それは、クロマ成分が、4:2:2または4:2:0のサンプリングなどの、事前に定められた方法でルーマ成分からダウンサンプリングされている可能性があるからである。
【０１２１】
たとえば、パレットベースのコーディングでは、現在のブロックの辺がランを終わらせるので、現在のブロックの幾何学的情報を示すために、ランコーディングが使用され得る。4:4:4のクロマフォーマットの場合、ランは一度生成され、すべての色成分に対して使用され得る。ランは色成分の1つに基づいて生成されることがあり、または、ランは色成分の2つ以上を使用して生成されることがある。4:2:2のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のために、2という係数によって水平方向にダウンサンプリングされ得る。4:2:0のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のために、2という係数によって水平方向および垂直方向にダウンサンプリングされ得る。
【０１２２】
いくつかの場合、ランのダウンサンプリング方法は、クロマのダウンサンプリング方法に対して適応的であり得る。この場合、クロマ成分のためのダウンサンプリングされたラン値は、図4に示されるようなビデオブロックの辺、たとえば辺270、272、または274の位置に従って、異なるように計算され得る。第1の例では、図4は、ルーマ成分のためのランが左側のブロックにおいて値「1」を有し右側のブロックにおいて「3」という値を有するように配置された、2つの隣接するビデオブロックの間の幾何学的な辺270を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックと右側のブロックの両方において「1」という値を有する。第2の例では、図4は、ルーマ成分のためのランが左側のブロックと右側のブロックの両方において値「2」を有するように配置された、2つの隣接するビデオブロックの間の幾何学的な辺272を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックと右側のブロックの両方において「1」という値を有する。第3の例では、図4は、ルーマ成分のためのランが左側のブロックにおいて値「3」を有し右側のブロックにおいて「1」という値を有するように配置された、2つの隣接するビデオブロックの間の幾何学的な辺274を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックにおいて「2」という値を、右側のブロックにおいて「0」という値を有する。
【０１２３】
幾何学的情報に加えて、すべての色成分の画素値に対して単一のパレットを有することも可能であり得る。たとえば、現在のブロック中の各画素位置に対して、3つの色成分(たとえば、Yルーマ成分およびUクロマ成分とVクロマ成分の両方)の画素値は、ベクトル(すなわち、色ベクトル)を形成し得る。次いで、現在のブロックを表すためにある数のベクトルを選択することによって、パレットが形成され得る。ルーマ成分に対して画素値の1つのパレットが、およびクロマ成分に対して画素値の別のパレットが存在することが可能であり得る。いくつかの場合、幾何学的情報を共有する方法と、色ベクトルを使用して画素値の単一のパレットを有する方法との2つの方法を組み合わせることも可能であり得る。
【０１２４】
いくつかの例では、本開示の他の箇所でより詳細に説明される行のコピーも、単一のパレットとともに機能し得る。この場合、各画素位置のパレットインデックスは、走査が水平方向である場合には上の行の、または走査が垂直方向である場合には左の列のパレットインデックスに等しいものとしてシグナリングされ、パレットインデックスの関連するランは、以前の行または列からもコピーされる。共有されるパレットにより、パレットエントリは(Y, U, V)のトリプレットになり得るので、Y、U、Vの値は後でパレットインデックスから再構築され得る。再構築された値は、復号された画素値として機能することがあり、または、復号された画素値を導出するために残差値と組み合わされる予測値として機能することがある。4:2:2のクロマフォーマットおよび4:2:0のクロマフォーマットでは、クロマ成分は、ルーマ成分と比較してダウンサンプリングされている。2:1のダウンサンプリングの例では、ルーマの場所は0、1、2、…にあることがあり、クロマの場所は1、3、5、…にあることがあり、または0、2、4、…にあることがある。クロマ成分が存在しない場所に対して、パレットエントリ中のU成分およびV成分は廃棄され得る。
【０１２５】
図5は、本開示の技法に従ってビデオデコーダ30がどのようにパレットを決定し得るかを示すフロー図である。ビデオデコーダ30は、CUレベルのシンタックス要素の値を受信または推測し得る。このシンタックス要素に基づいて、ビデオデコーダは、現在のCUのために使用されるべきパレットとして以前に決定されたパレット全体をコピーすべきかどうかを決定し得る(502)。パレット全体がコピーされるべきであることをシンタックス要素の値が示す場合(502、YES)、ビデオデコーダ30は、以前のパレット全体をコピーし、現在のCUに対して同じパレットを使用する(504)。パレット全体がコピーされるべきではないことをシンタックス要素の値が示す場合(502、NO)、ビデオデコーダ30は、新しいパレットを生成する。ボックス506のステップは、そのような新しいパレットがどのように生成され得るかの例を示す。ボックス506のステップは、たとえば、新しいパレット中の各パレットエントリに対して実行され得る。
【０１２６】
第1のパレットエントリに対して、ビデオデコーダ30は、以前のパレットのエントリから第1のエントリがコピーされるべきかどうかを示すフラグを受信する(508)。フラグの値が真である場合(510、YES)、これは以前のパレットのエントリから第1のエントリがコピーされるべきであることを示し、ビデオデコーダ30は、以前のパレットのエントリから新しいパレットのための第1のエントリをコピーする(512)。フラグの値が偽である場合(510、NO)、これは以前のパレットのエントリから第1のエントリがコピーされるべきではないことを示し、ビデオデコーダ30は、新しいパレットのための新しいエントリを決定する。新しいエントリを決定することの一部として、ビデオデコーダ30は、新しいパレットのための新しいエントリが予測子サンプルに基づいて予測されるかどうかを示すフラグを受信する(514)。新しいエントリが予測子サンプルから予測されるべきであることをフラグの値が示す場合(516、YES)、ビデオデコーダ30は、予測子サンプルを決定し(518)、第1のパレットエントリの色値と予測子サンプルの色値との差分を示す差分値を受信する(520)。新しいエントリが予測子サンプルから予測されるべきではないことをフラグの値が示す場合(516、NO)、ビデオデコーダ30は、第1のパレットエントリの色値を示す値を受信する(522)。新しいパレットを生成するために、ビデオデコーダは、パレットに含まれる様々なエントリに対してボックス506のステップを複数回実行し得る。
【０１２７】
図5の技法は、パレットモードコーディングにおいて使用されるパレットを決定するためのより大きいスキームへと本開示の技法がどのように実装され得るかの一例にすぎない。いくつかの例では、決定ブロック514のフラグは除外されることがあり、この場合、ボックス510の「no」の経路はボックス518へと直接つながってよく、ボックス514、516、および522はまとめて除外されてよい。
【０１２８】
本開示は、コーディングパレットエントリに関する、より具体的には、予測されない新しいパレットエントリのコーディングに関する技法について説明する。この文脈では、「予測されない」とは、パレットエントリがすでに使用されているパレットからコピーされないことを意味する。既存の技法によれば、コーディングユニットのためのパレットが別のコーディングユニットから予測される(すなわち、完全にコピーされる)か、または新しいパレットがコーディングユニットのために生成されるかのいずれかである。上で説明されたように、新しいパレットが生成されるときでも、新しいパレットのいくつかのエントリは依然として、以前のコーディングユニットのパレットから予測(すなわち、コピー)され得る。しかしながら、新しいパレット中の他のエントリは、以前のパレットから予測されない新しいエントリであり得る。本開示は、新しいパレットを生成するための、より具体的には、新しいパレットのための新しいエントリを決定するための技法について説明する。パレットコーディングの様々な既存の実装形態では、新しいパレットエントリは、現在のシーケンス内のサンプルのビット深度に応じた長さを有する、固定長符号を使用してコーディングされる。新しいパレットを生成することの一部として、本開示の技法は、パレットの新しいパレットエントリのための予測子の値を決定するステップを含み得る。しかしながら、予測子の値のこの使用は、パレット全体の直接のコピーを伴うpred_palette_flagシンタックス要素によって制御される予測のタイプとは別個であり、異なっている。
【０１２９】
新しいパレットエントリが空間的な隣接サンプルに関して何らかの相関を示すことが観察され、あらゆる冗長性が除去されるように新しいパレットエントリをコーディングするのが効率的であろう。しかしながら、現在の(本出願の出願日の時点での)SCC WDでは、新しいパレットエントリは、隣接サンプルを考慮せずに固定長符号を使用してコーディングされ、これは非効率的であり得る。
【０１３０】
この文書では、予測されない新しいパレットエントリのコーディング(符号化および復号)のためのいくつかの態様が説明される。これらの態様は、独立に、または様々な組合せで一緒に機能し得る。
【０１３１】
以下の例では、サンプルは3つの成分(YUV/RGB)からなり、すべての動作が各成分に対して独立に実行される。同様に、PLTエントリは3つの成分からなる。
【０１３２】
予測されない新しいPLTエントリをコーディングするために(すなわち、パレットがコピーされないことをシンタックス要素pred_palette_flagが示す)、新しいPLTエントリが予測子から予測されるかどうかを示すために、被バイパスコーディングフラグがシグナリングされる。予測されない場合、新しいPLTエントリは、シーケンス中のサンプルのビット深度に基づく長さを有する、固定長のバイパス符号を使用してコーディングされる。
【０１３３】
新しいPLTエントリが予測子から予測されるとき、例示的なコーディングシステムは以下の技法の1つまたは複数を適切な組合せで含み得る。
【０１３４】
一技法によれば、予測子サンプルは、現在のコーディングユニットの再構築された隣接サンプルから選ばれ得る。予測子サンプルは3つの成分(YUV/RGB)を含むことがあり、新しいエントリの各成分は、残差を決定するために対応する予測子サンプルから差し引かれることがある。
【０１３５】
別の技法によれば、予測子サンプルは、上の線の中心の場所に対応するサンプル、上の線のサンプル場所の1つに対応するサンプル、上の線のサンプルの平均に対応するサンプル、左の線の中心の場所に対応するサンプル、左の線のサンプル場所の1つに対応するサンプル、左の線のサンプルの平均に対応するサンプル、上と左の線のサンプルの平均に対応するサンプルの、1つまたは組合せを決定することによって、暗黙的に導出され得る。別の例では、隣接サンプルからの複数の候補は予測子として特定されることがあり、特定される複数の候補の中からの予測子候補がシグナリングされることがある。隣接サンプルが利用可能ではないとき、デフォルトの予測子は、0または128などの別のデフォルト値であると考えられ得る。加えて、または代替的に、予測子が利用可能ではない(フレーム、スライス、タイルの外側にある)場合、予測は無効であることがあり、フラグは、シグナリングされる必要がないことがあり、または0としてシグナリングされるものとし、代わりに何らかのデフォルトの予測、たとえば128を使用する必要があり得る。予測子は、たとえばCIPのためのパディングの後で、イントラ参照から使用され得る。
【０１３６】
残差は、次数が4の切捨て指数ゴロム符号を使用してコーディングされ得る。残差の符号は、1ビットの固定長バイパス符号を使用してコーディングされ得る。符号は、残差が0である場合にはコーディングされない。代替的に、残差は、(0, 1, 2, 3, 4, 5...)などの他の次数の切捨て指数ゴロム符号を使用してコーディングされ得る。代替的に、残差は、(0, 1, 2, 3, 4, 5, 6...)などの次数の切捨てゴロム符号を使用してコーディングされ得る。
【０１３７】
代替的に、ゴロム符号群、たとえば、ゴロムライス符号、指数ゴロム符号、単項符号、またはゴロムライス符号と指数ゴロム符号の連結が、残差を表すために使用されることが提案される。
【０１３８】
以下の表は、本開示において説明される技法の1つまたは複数を実装するために使用され得るシンタックスを示す。以下の例では、下線付きのテキストは、本開示の技法を実装するために使用され得る追加のシンタックスを表す。
【０１３９】
【表１】
2018507613.tif 000003
【０１４０】
palette_predicted_entryは、palette_entryが予測されるかどうかを指定する。存在しないとき、それは0に等しいと推測される。
delta_palette_entryは、現在のパレットのためのパレットエントリ中の成分の残差を指定する。
delta_palette_entry_sign_flagは、現在のパレットのためのパレットエントリ中の成分の残差の符号を指定する。
palette_entryは、現在のパレットのためのパレットエントリ中の成分の値を指定する。
変数PredictorPaletteEntries[ cIdx ][ i ]は、色成分cIdxのための予測子パレット中のi番目の要素を指定する。
変数CurrentPaletteEntries[ cIdx ][ i ]は、色成分cIdxのための現在のパレット中のi番目の要素を指定し、次のように導出される。
palette_share_flag [ x0 ][ y0 ]が1に等しいとき、CurrentPaletteEntriesは次のように導出される。
- palette_share_flag [ x0 ][ y0 ]が1に等しい場合、
for( cIdx = 0; cIdx < 3; cIdx++ )
for( i = 0; i < PreviousPaletteSize; i++ )                             (7-73)
CurrentPaletteEntries[ cIdx ][ i ] = PredictorPaletteEntries[ cIdx ][ i ]
- それ以外の場合(palette_share_flag [ x0 ][ y0 ]が0に等しい)
numPredictedPaletteEntries = 0
for( i = 0; i < PredictorPaletteSize; i++ )
if( PalettePredictorEntryReuseFlag[ i ] = = 1 ) {
for( cIdx = 0; cIdx < 3; cIdx++ )
CurrentPaletteEntries[ cIdx ][ numPredictedPaletteEntries ] = 
PredictorPaletteEntries[ cIdx ][ i ]
numPredictedPaletteEntries++
}
for( i = 0; i < num_signalled_palette_entries ; i++ )                     (7-74)
for( cIdx = 0; cIdx < 3; cIdx++ )
if(palette_predicted_entry)
CurrentPaletteEntries[ cIdx ][ numPredictedPaletteEntries + i ] = 
delta_palette_entry *(1-2 * delta_palette_entry_sign_flag + pred[ cIdx ]
else
CurrentPaletteEntries[ cIdx ][ numPredictedPaletteEntries + i ] = palette_entry
【０１４１】
【表２】
2018507613.tif 000004
【０１４２】
図6は、本開示において説明される技法を実施し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために空間的予測に依存する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または除去するために時間的予測に依存する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。片方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
【０１４３】
図6の例では、ビデオエンコーダ20は、ビデオデータメモリ33と、区分ユニット35と、予測処理ユニット41と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、パレットベース符号化ユニット42と、インター予測処理ユニット44と、イントラ予測ユニット46とを含む。ビデオブロック再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62と、フィルタユニット64と、復号ピクチャバッファ(DPB)66とを含む。
【０１４４】
図6に示されるように、ビデオエンコーダ20はビデオデータを受信し、受信されたビデオデータをビデオデータメモリ33に記憶する。ビデオデータメモリ33は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ33に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。DPB66は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ33およびDPB66は、同期ダイナミックランダムアクセスメモリ(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM（登録商標）)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ33およびDPB66は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ33は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであることがあり、または、これらのコンポーネントに対してオフチップであることがある。
【０１４５】
区分ユニット35はビデオデータメモリ33からビデオデータを取り出して、ビデオデータをビデオブロックに区分する。この区分はまた、スライス、タイル、または他のより大きい単位への区分、ならびに、たとえば、LCUおよびCUの4分木構造に従ったビデオブロック区分を含み得る。ビデオエンコーダ20は一般に、符号化されるべきビデオスライス内のビデオブロックを符号化するコンポーネントを示す。スライスは、複数のビデオブロックに(および、あるいは、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、エラー結果(たとえば、コーディングレートおよび歪みのレベル)に基づいて、現在のビデオブロックのための、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードのうちの1つなどの、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、残差ブロックデータを生成するために加算器50に、および、参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器62に、得られたイントラコーディングまたはインターコーディングされたブロックを提供し得る。
【０１４６】
予測処理ユニット41内のイントラ予測ユニット46は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する、現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内のインター予測処理ユニット44は、時間的圧縮を提供するために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ブロックに対する、現在のビデオブロックのインター予測コーディングを実行する。
【０１４７】
インター予測処理ユニット44は、ビデオシーケンスのための所定のパターンに従って、ビデオスライスのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスとして指定し得る。インター予測処理ユニット44によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。
【０１４８】
予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分の尺度によって決定され得る画素差分の観点で、コーディングされるべきビデオブロックのPUと密接に一致することが見出されるブロックである。いくつかの例では、ビデオエンコーダ20は、DPB66に記憶された参照ピクチャのサブ整数画素場所のための値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの4分の1画素場所の値、8分の1画素場所の値、または他の分数画素場所の値を補間し得る。したがって、インター予測処理ユニット44は、フル画素場所および分数画素場所に対する動き探索を実行することができ、分数画素精度で動きベクトルを出力することができる。
【０１４９】
インター予測処理ユニット44は、参照ピクチャの予測ブロックの場所とPUの場所とを比較することによって、インターコーディングされたスライス中のビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、その各々がDPB66に記憶された1つまたは複数の参照ピクチャを特定する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。インター予測処理ユニット44は、計算された動きベクトルをエントロピー符号化ユニット56に送る。
【０１５０】
インター予測処理ユニット44によって実行される動き補償は、場合によっては、サブ画素精度への補間を実行する動き推定によって決定された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得る。現在のビデオブロックのPUの動きベクトルを決定すると、インター予測処理ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックの画素値から予測ブロックの画素値を減算し、画素差分値を形成することによって、残差ビデオブロックを形成する。画素差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数のコンポーネントを表す。インター予測処理ユニット44はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30によって使用するための、ビデオブロックおよびビデオスライスと関連付けられるシンタックス要素を生成し得る。
【０１５１】
予測処理ユニット41はまた、本開示において説明されるパレットベースのコーディング技法の様々な態様を実行するように構成されるパレットベース符号化ユニット42を含む。パレットベース符号化ユニット42は、たとえば、パレットベースの復号を、たとえば、CUまたはPUに対して、パレットベースの符号化モードが選択されたときに実行することができる。たとえば、パレットベース符号化ユニット42は、画素値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの場所の画素値を表すためのパレットの中の画素値を選択し、ビデオデータのブロックの場所の少なくともいくつかを、選択された画素値にそれぞれ対応するパレットの中のエントリと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット42によって実行されるものとして説明されるが、そのような機能の一部またはすべてが、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１５２】
パレットベース符号化ユニット42は、パレットのためのエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を示す1つまたは複数のシンタックス要素を生成することを含めて、本明細書において説明される様々なシンタックス要素のいずれかを生成するように構成され得る。したがって、ビデオエンコーダ20は、本開示において説明されるようなパレットベース符号モードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化し、または、たとえば、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードなどの異なるモードを使用して、ビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオエンコーダ20は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを符号化し、パレットベースコーディングモードを用いて他のブロックを復号し得る。
【０１５３】
予測処理ユニット41が、イントラ予測、インター予測、またはパレットモードコーディングのいずれかを介して現在のビデオブロックの予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって、残差ビデオブロックを形成する。しかしながら、一部のコーディングモードでは、ビデオエンコーダ20は残差ブロックを符号化しないことがある。残差ブロックの中の残差ビデオデータは、生成されると、1つまたは複数のTUに含められ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、画素領域から周波数領域などの変換領域に、残差ビデオデータを変換し得る。
【０１５４】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてと関連付けられるビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【０１５５】
量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型二値算術コーディング(CABAC)、シンタックスベースコンテキスト適応型二値算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法もしくは技術を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化されたビットストリームは、ビデオデコーダ30に送信されることがあり、または、ビデオデコーダ30による後の送信もしくは検索のためにアーカイブされることがある。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスの動きベクトルおよび他のシンタックス要素を符号化し得る。
【０１５６】
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ、逆量子化および逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するための、画素領域における残差ブロックを再構築する。インター予測処理ユニット44は、参照ピクチャリストの1つの中の参照ピクチャの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。インター予測処理ユニット44はまた、動き推定において使用するためのサブ整数画素値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、再構築されたブロックを生成するために、インター予測処理ユニット44によって生成された動き補償された予測ブロックに再構築された残差ブロックを加算する。
【０１５７】
フィルタユニット64は、再構築されたブロック(たとえば、加算器62の出力)をフィルタリングし、フィルタリングされた再構築されたブロックを参照ブロックとして使用するためにDPB66に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャの中のブロックをインター予測するための参照ブロックとして、インター予測処理ユニット44によって使用され得る。フィルタユニット64は、デブロッキングフィルタリング、サンプル適応オフセット(SAO)フィルタリング、適応ループフィルタリング(ALF)、または他のタイプのループフィルタリングの1つまたは複数を適用し得る。フィルタユニット64は、再構築されたビデオからブロッキネスアーティファクトを除去するために、デブロッキングフィルタリングをフィルタブロックの境界に適用することができ、全体のコーディング品質を改善するために他のタイプのフィルタリングを適用することができる。追加のループフィルタ(ループ内またはループ後)も使用され得る。
【０１５８】
本開示の技法によれば、予測処理ユニット41は、コーディングユニットがパレットモードでコーディングされると決定し得る。予測処理ユニット41は、たとえば、様々な異なるコーディングモードで、様々な異なる符号化パラメータとともにCUを符号化することによってそのような決定を行い、パレットモードがコーディングユニットに対する望ましいレート-歪みのトレードオフをもたらすと決定し得る。パレットモードでコーディングユニットを符号化することの一部として、パレットベース符号化ユニット42は、コーディングユニットのためのパレットを決定し得る。パレットを決定するために、パレットベース符号化ユニット42は、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングし得る。パレットベース符号化ユニット42は、たとえば、上で説明された技法のいずれかを使用して、現在のコーディングユニットのための予測子サンプルを選び得る。
【０１５９】
第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングすることの一部として、パレットベース符号化ユニット42は、現在のコーディングユニットのためのパレットの第1のエントリを決定し、パレットの第1のエントリを予測子サンプルと比較して、パレットの第1のエントリと予測子サンプルとの差分を決定し得る。パレットベース符号化ユニット42は、たとえば、第1のエントリの各色値を予測子サンプルの対応する色値と比較することができ、第1のパレットエントリおよび予測子サンプルは各々、3つの成分(たとえば、YUV成分またはRGB成分)の色値を含む。パレットベース符号化ユニットは、エントロピー符号化ユニット56とともに、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を示す1つまたは複数のシンタックス要素を生成することによって、残差データを符号化し得る。エントロピー符号化ユニット56は、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を、切捨て指数ゴロム符号または切捨てゴロム符号などのゴロムコーディングプロセスを使用してエントロピー符号化し得る。
【０１６０】
図7は、本開示において説明される技法を実施し得る例示的なビデオデコーダ30を示すブロック図である。図7の例では、ビデオデコーダ30は、ビデオデータメモリ78と、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、DPB94とを含む。予測処理ユニット81は、パレットベース復号ユニット82と、動き補償ユニット(MCU)83と、イントラ予測ユニット84とを含む。ビデオデコーダ30は、いくつかの例では、図6からのビデオエンコーダ20に関して説明された符号化パスと全体的に逆の復号パスを実行し得る。
【０１６１】
復号プロセスの間、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、受信された符号化されたビデオビットストリームをビデオデータメモリ78に記憶する。ビデオデータメモリ78は、ビデオデコーダ30のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ78に記憶されたビデオデータは、たとえば、記憶デバイス26から、またはカメラなどのローカルビデオソースから、または物理的データ記憶媒体にアクセスすることによって、リンク16を介して取得され得る。ビデオデータメモリ78は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ(CPB)を形成し得る。DPB94は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ78およびDPB94は、DRAM、SDRAM、MRAM、RRAM（登録商標）、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ78およびDPB94は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ78は、ビデオデコーダ30の他のコンポーネントとともにオンチップであってよく、または、それらのコンポーネントに対してオフチップであってよい。
【０１６２】
ビデオデコーダ30のエントロピー復号ユニット80は、量子化された係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビデオデータメモリ78に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット80は、予測処理ユニット81に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
【０１６３】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックの予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされるとき、予測処理ユニット81の動き補償ユニット83は、エントロピー復号ユニット80から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックの予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成され得る。ビデオデコーダ30は、DPB94に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
【０１６４】
動き補償ユニット83は、動きベクトルおよび他のシンタックス要素を構文解析することによって、現在のビデオスライスのビデオブロックの予測情報を決定し、復号されている現在のビデオブロックの予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット83は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスのための1つまたは複数の参照ピクチャリストのための構築情報と、スライスの各々のインター符号化されたビデオブロックの動きベクトルと、スライスの各々のインターコーディングされたビデオブロックのインター予測状態と、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
【０１６５】
動き補償ユニット83はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット83は、参照ブロックのサブ整数画素のための補間された値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されるように補間フィルタを使用し得る。この場合、動き補償ユニット83は、受信されたシンタックス要素からビデオエンコーダ20によって使用される補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用し得る。
【０１６６】
逆量子化ユニット86は、ビットストリームにおいて提供されエントロピー復号ユニット80によって復号される量子化された変換係数を逆量子化する(inverse quantize)、すなわち逆量子化する(de-quantize)。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックのための、ビデオエンコーダ20によって計算された量子化パラメータの使用を含み得る。逆変換処理ユニット88は、画素領域における残差ブロックを生成するために、変換係数に逆変換を、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【０１６７】
本開示の様々な例によれば、ビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。パレットベース復号ユニット82は、たとえば、パレットベースの復号を、たとえば、CUまたはPUに対してパレットベース復号モードが選択されたときに実行し得る。たとえば、パレットベース復号ユニット82は、残差データを復号してパレットエントリの色値と予測子サンプルの色値との差分を決定することによって、画素値を示すエントリを有するパレットを生成するように構成され得る。復号された残差データおよび予測子サンプルに基づいて、パレットベース復号ユニット82はパレットエントリを決定することができる。上で説明されたように、パレットの一部の他のエントリは同じ技法を使用して決定され得るが、パレットの他のエントリは異なる技法を使用して決定される。
【０１６８】
さらに、この例では、パレットベース復号ユニット82は、ビデオデータのブロックの少なくともいくつかの場所をパレット中のエントリと関連付ける情報を受信し得る。この例では、パレットベース復号ユニット82は、この情報に基づいてパレット中の画素値を選択し得る。加えて、この例では、パレットベース復号ユニット82は、選択された画素値に基づいてブロックの画素値を再構築し得る。様々な機能がパレットベース復号ユニット82によって実行されるものとして説明されるが、そのような機能の一部またはすべてが、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１６９】
パレットベース復号ユニット82は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット82は、たとえば、HEVCインター予測コーディングモードまたはHEVCイントラ予測コーディングモードなどの、非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオデコーダ30は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを復号し、パレットベースコーディングモードを用いて他のブロックを復号し得る。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードの1つを備えることがあり、または単一のパレットベースコーディングモードしかないことがある。
【０１７０】
予測処理ユニットが、たとえばイントラ予測またはインター予測を使用して現在のビデオブロックの予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット88からの残差ブロックを、動き補償ユニット83によって生成された対応する予測ブロックと加算することによって、再構築されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数のコンポーネントを表す。フィルタユニット92は、たとえば、デブロッキングフィルタリング、SAOフィルタリング、ALFフィルタリング、または他のタイプのフィルタリングの1つまたは複数を使用して、再構築されたビデオブロックをフィルタリングする。(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタも、画素の遷移を滑らかにするために、または別様にビデオ品質を改善するために使用され得る。次いで、所与のフレームまたはピクチャ中の復号されたビデオブロックは、DPB94に記憶され、DPB94は、後続の動き補償のために使用される参照ピクチャを記憶する。DPB94は、図1のディスプレイデバイス32などのディスプレイデバイス上で後に提示するための復号されたビデオを記憶する追加のメモリの一部であることがあり、またはそれとは別個であることがある。
【０１７１】
本開示の技法によれば、予測処理ユニット81は、現在のコーディングユニットがパレットモードでコーディングされると決定し得る。パレットベース復号ユニット82は、コーディングユニットのためのパレットを決定し得る。パレットを決定するために、パレットベース復号ユニット82は、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディング(すなわち、復号)し得る。パレットベース復号ユニット82は、たとえば、上で説明された技法のいずれかを使用して、現在のコーディングユニットのための予測子サンプルを選び得る。
【０１７２】
第1のパレットエントリと予測子サンプルとの差分をコーディングするために、パレットベース復号ユニット82は、残差データを復号して第1のパレットエントリの色値と予測子サンプルの色値との差分を決定し得る。復号された残差データおよび予測子サンプルに基づいて、パレットベース復号ユニット82は、現在のコーディングユニットのための第1のパレットエントリを決定し得る。パレットベース復号ユニット82は、たとえば、予測子サンプルの色値に残差データを加算して、パレットエントリを決定し得る。第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を復号するために、エントロピー復号ユニット80は、切捨て指数ゴロム符号または切捨てゴロム符号などのゴロムコーディングプロセスを使用して、1つまたは複数の差分値を復号し得る。
【０１７３】
パレットベース復号ユニット82は、パレットの第1のエントリに対するフラグを受信することがあり、フラグの第1の値は、パレットの第1のエントリが予測子サンプルから予測されることを示す。パレットベース復号ユニット82は、パレットの第2のエントリに対するフラグの第2のインスタンスを受信することがあり、フラグの第2の値は、パレットの第2のエントリがいずれの予測子サンプルからも予測されないことを示す。パレットの第2のエントリに対する第2の値を有するフラグを受信したことに応答して、パレットベース復号ユニット82は、第2のエントリに対する色値の指示を受信し得る。第2のエントリに対する色値の指示は、たとえば、固定長のコーディングされた符号語であり得る。この例では、第1および第2のエントリはパレットの異なるエントリを表すことが意図されているだけであり、第1および第2という用語は2つのエントリの間のどのような種類の順序的な関係も表さない。
【０１７４】
パレットベース復号ユニット82が現在のコーディングユニットのために使用されるべきパレットを生成した後で、パレットベース復号ユニット82は、現在のコーディングユニットのサンプルに対して、パレットからのエントリを特定するインデックス値を受信する。パレットベース復号ユニット82は、エントリと関連付けられる1つまたは複数の色値をサンプルに割り当てる。再構築されたコーディングユニットを決定することの一部として、パレットベース復号ユニット82は、コーディングユニット中の追加のサンプルのためのインデックス値を受信し得る。ビデオデコーダ30は、再構築されたコーディングユニットを含むビデオデータのフレームを出力し、たとえば、それを表示し、またはディスプレイに送信し得る。
【０１７５】
図8は、本開示の技法を示すフローチャートである。図8の技法は、汎用ビデオコーダに関して説明される。汎用ビデオコーダは、たとえば、図1および図6のビデオエンコーダ20、図1および図7のビデオデコーダ30に相当し得るが、本開示の技法はいずれの特定のタイプのビデオコーダにも限定されない。図8の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在のコーディングユニットがパレットモードでコーディングされると決定する(802)。ビデオコーダは次いで、コーディングユニットのためのパレットを決定する。たとえば、ビデオコーダは、パレットのエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び、エントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分をコーディングし得る(804)。
【０１７６】
予測子サンプルは、たとえば、YUV成分またはRGB成分などの3つの成分を含み得る。他の例では、予測子サンプルは、異なる数の成分または異なる成分を含み得る。図8の例では、ビデオコーダは、パレットエントリの3つの成分の値と予測子サンプルの3つの成分の値との差分をコーディングし得る。そのような例では、差分をコーディングするために、ビデオコーダは、3つの別個の差分値、すなわち各成分に対して1つの差分値をコーディングし得る。
【０１７７】
図9は、本開示の技法を示すフローチャートである。図9の技法は、汎用ビデオデコーダに関して説明される。汎用ビデオデコーダは、たとえば、図1および図7のビデオデコーダ30に相当し得るが、本開示の技法はいずれの特定のタイプのビデオデコーダにも限定されない。図9の例では、ビデオデコーダ(たとえば、ビデオデコーダ30)は、ビデオデータの現在のCUがパレットモードでコーディングされると決定し得る(902)。ビデオデコーダは、CUのためのパレットを決定し得る(904)。パレットを決定するために、ビデオデコーダは、パレットの第1のエントリに対して、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び(906)、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を復号し(908)、復号された残差データおよび予測子サンプルに基づいて、現在のコーディングユニットのためのパレットの第1のエントリを決定し得る(910)。
【０１７８】
ボックス904において示されるステップ、ならびにボックス904には示されない追加のステップの複数の繰返しを含み得る、ビデオデコーダがパレットを構築した後で、ビデオデコーダは、パレットを使用してCUのサンプルの色値を決定することができる(912)。パレットを使用してCUのサンプルの色値を決定するために、ビデオデコーダは、912のボックスのステップならびにボックス912に示されない追加のステップの複数の繰返しを実行し得る。CUのサンプルの色値を決定するためにパレットを使用することの一部として、ビデオデコーダは、現在のコーディングユニットのサンプルに対してインデックス値を受信し、ここでインデックス値はパレットからのエントリを特定し(914)、第1のエントリと関連付けられる1つまたは複数の色値をサンプルに割り当てて再構築されたコーディングユニットを決定し(916)、再構築されたコーディングユニットを含む復号されたビデオデータのピクチャを出力し得る(918)。
【０１７９】
図10は、本開示の技法を示すフローチャートである。図10の技法は、汎用ビデオエンコーダに関して説明される。汎用ビデオエンコーダは、たとえば、図1および図6のビデオエンコーダ20に相当し得るが、本開示の技法はいずれの特定のタイプのビデオエンコーダにも限定されない。図10の例では、ビデオエンコーダ(たとえば、ビデオエンコーダ20)は、ビデオデータの現在のコーディングユニットがパレットモードでコーディングされると決定し得る(1002)。ビデオエンコーダは、コーディングユニットのためのパレットを決定し得る(1004)。パレットの第1のエントリに対して、ビデオエンコーダは、コーディングユニットの再構築された隣接ブロックから予測子サンプルを選び得る(1006)。ビデオエンコーダは、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を決定し得る(1008)。ビデオエンコーダは、ビデオデータの符号化されたビットストリームに含めるために、第1のエントリの1つまたは複数の色値と予測子サンプルの1つまたは複数の色値との差分を示す1つまたは複数のシンタックス要素を生成し得る(1010)。
【０１８０】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示において説明される技法の実装のための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１８１】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続も厳密にはコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray（登録商標）ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【０１８２】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくは個別論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、前述の構造、または本明細書において説明される技法の実装に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書において説明された機能は、専用のハードウェア内で、ならびに/または符号化および復号のために構成された、もしくは複合コーデックに組み込まれたソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実施され得る。
【０１８３】
本開示の技法は、ワイヤレス送受話器、集積回路(IC)、また1組のIC(たとえば、チップセット)を含む、様々なデバイスもしくは装置において実施され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的側面を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されているが、それらは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて結合されることがあり、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供されることがある。
【０１８４】
様々な例が説明されてきた。これらの例および他の例は以下の特許請求の範囲内に入る。
【符号の説明】
【０１８５】
10  ビデオ符号化および復号システム
12  ソースデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
26  記憶デバイス
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
33  ビデオデータメモリ
35  区分ユニット
41  予測処理ユニット
42  パレットベース符号化ユニット
44  インター予測処理ユニット
46  イントラ予測処理ユニット
50  加算器
52  変換処理ユニット
54  量子化ユニット
56  エントロピー符号化ユニット
58  逆量子化ユニット
60  逆変換処理ユニット
62  加算器
64  フィルタユニット
78  ビデオデータメモリ
80  エントロピー復号ユニット
81  予測処理ユニット
82  パレットベース復号ユニット
83  MCU
84  イントラ予測処理ユニット
86  逆量子化ユニット
88  逆変換処理ユニット
90  加算器
92  フィルタユニット
94  DPB
178  ピクチャ
180  CU
184  第1のパレット
188  CU
192  第2のパレット
196  イントラ予測コーディングモードを用いてコーディングされたブロック
200  インター予測コーディングモードを用いてコーディングされたブロック
202  エントリ
204  エントリ
206  エントリ
208  エントリ
210  エントリ
212  エントリ
214  エントリ
240  マップ
244  パレット
248  線
252  列
256  列
260  列
264  行
268  行
270  辺
272  辺
274  辺
【図１】
2018507613.tif 000005
【図２】
2018507613.tif 000006
【図３】
2018507613.tif 000007
【図４】
2018507613.tif 000008
【図５】
2018507613.tif 000009
【図６】
2018507613.tif 000010
【図７】
2018507613.tif 000011
【図８】
2018507613.tif 000012
【図９】
2018507613.tif 000013
【図１０】
2018507613.tif 000014
【国際調査報告】
2018507613.tif 000015
2018507613.tif 000016
2018507613.tif 000017