[0024]本開示は、ビデオコーディング(たとえば、ビデオ符号化およびビデオ復号)ならびに圧縮のための技法について説明する。特に、本開示は、ビデオデータのパレットベースコーディングのための技法について説明する。パレットベースビデオコーディングでは、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、ピクセルのブロックについての(単に「パレット」とも呼ばれる)パレットテーブルを導出し、ここで、パレットテーブル中の各エントリは、パレットテーブルへのインデックスによって識別される色値を含む。
[0025]パレットモードでブロックをコーディングすることの一部として、ビデオコーダは、最初に、ブロックのために使用されるべきパレットテーブルを決定する。次いで、パレットからのどのエントリがピクセル(サンプル)を予測または再構築するために使用されるべきであるかを示すために、ブロックの各ピクセル(またはサンプル)のためのパレットインデックスがコーディングされ得る。本開示は、一般に、パレットを生成するための技法、すなわち、パレットのパレットエントリを決定するための技法を対象とする。より詳細には、本開示は、パレット予測子を初期化するための技法を対象とする。パレット予測子を初期化することは、一般に、ピクチャ、スライス、タイル、またはビデオブロックの他のそのようなグルーピングの第1のブロックのためのパレット予測子を生成するプロセスを指す。以下でより詳細に説明されるように、後続のブロックのためのパレット予測子は、典型的には、前に使用されたパレット予測子を更新することによって生成される。しかしながら、第1のブロックについて、前に使用されたパレット予測子は利用可能でなく、したがって、パレット予測子は初期化される必要がある。
[0026]パレットエントリをシグナリングするために必要とされるビットを低減するために、ビデオデコーダは、新しいパレットエントリを決定するためのパレット予測子を利用し得る。パレット予測子は、たとえば、前に使用されたパレットからのエントリを含み得る。いくつかの実装形態では、パレット予測子は、最も最近使用されたパレットに等しく設定され、最も最近使用されたパレットのすべてのエントリを含み得るが、他の実装形態では、パレット予測子は、最も最近使用されたパレットからのすべてのエントリよりも少ないエントリを含み得る。パレット予測子は、最も最近使用されたパレットだけのほかに、他の前に使用されたパレットからのエントリをも含み得る。パレット予測子は、コーディングブロックのために使用されるパレットと同じサイズであり得るか、またはコーディングブロックのために使用されるパレットよりも大きいかまたは小さいことがある。
[0027]パレット予測子を利用するビデオデータのブロックのためのパレットを生成するために、ビデオデコーダは、たとえば、パレット予測子の各エントリのための1ビットフラグを受信し得、フラグについての第1の値は、パレット予測子の関連付けられたエントリがパレット中に含まれることを示し、フラグについての第2の値は、パレット予測子の関連付けられたエントリがパレット中に含まれないことを示す。パレット予測子が、ビデオデータのブロックのために使用されるパレットよりも大きい事例では、次いで、ビデオデコーダは、パレットについての最大サイズが達せられると、フラグを受信することを停止し得る。
[0028]パレットのいくつかのエントリは、パレット予測子を使用して決定されるのではなく、直接シグナリングされ得る。そのようなエントリの場合、ビデオデコーダは、たとえば、エントリに関連付けられたルーマ成分と2つのクロマ成分とについての色値を示す3つの別個のmビット値を受信し得、ただし、mはビデオデータのビット深度を表す。パレット予測子から導出されたパレットエントリが、直接シグナリングされたエントリのために必要とされる複数の(multiple)mビット値と比較して1ビットフラグのみを必要とするので、パレット予測子を使用して一部または全部のパレットエントリをシグナリングすることは、新しいパレットのエントリをシグナリングするために必要とされるビット数を低減し、その結果、パレットモードコーディングのコーディング効率全体を改善し得る。
[0029]上記で説明されたように、多くの事例では、1つのブロックのためのパレット予測子は、1つまたは複数のすでにコーディングされたブロックをコーディングするために使用されるパレットに基づいて決定される。しかしながら、スライスまたはタイル中の第1のコーディングツリーユニットをコーディングするときなど、いくつかのコーディングシナリオでは、前にコーディングされたブロックのパレットは利用不可能であり得、したがって、パレット予測子は、前に使用されたパレットのエントリを使用して生成されないことがある(cannot)。そのような事例では、パレット予測子初期化子はシーケンスパラメータセット(SPS:sequence parameter set)および/またはピクチャパラメータセット(PPS)中でシグナリングされ得る。パレット予測子初期化子は、前に使用されたパレットが利用可能でないとき、パレット予測子を生成するために使用され得る値である。
[0030]PPSは、一般に、各スライスセグメントヘッダ中に見られるシンタックス要素によって決定されるような0個以上のコード化ピクチャ全体に適用されるシンタックス要素を含んでいるシンタックス構造を参照する。SPSは、一般に、各スライスセグメントヘッダ中に見られるシンタックス要素によって参照されるPPS中に見られるシンタックス要素のコンテンツによって決定されるような0個以上のCVS全体に適用されるシンタックス要素を含んでいるシンタックス構造を参照する。したがって、SPSは、一般に、PPSよりも高いレベルのシンタックス構造であると見なされ、それは、SPS中に含まれるシンタックス要素が、一般に、PPS中に含まれるシンタックス要素と比較してより低い頻度で変化し、ビデオのより大きい部分に適用されることを意味する。
[0031]パレットモードコーディングの既存の実装形態では、パレット予測子初期化がSPSレベルにおいて有効にされる場合、PPSレベルシンタックスは、(本明細書では、SPSレベルパレット予測子初期化子とも呼ばれる)SPSレベルパレット予測子エントリを使用してパレット予測子を生成することと、(本明細書では、PPSレベルパレット予測子初期化子とも呼ばれる)PPSレベルパレット予測子エントリを使用してパレット予測子を生成することとの間で選択するためにビデオデコーダを有効にするにすぎない。パレットモードコーディングの既存の実装形態は、SPSレベルにおいて有効にされると、パレット予測子初期化がPPSレベルにおいて無効にされることを可能にしない。本開示は、パレット予測子のサイズを0に設定することによってPPSレベルにおいてパレット予測子初期化を無効にするための技法を導入する。
[0032]さらに、パレットモードコーディングの既存の実装形態では、ビデオデコーダは、SPSパレット予測子初期化子またはPPSパレット予測子初期化子のいずれかに基づいてパレット予測子を初期化する。本開示の技法によれば、ビデオデコーダは、SPSパレット予測子初期化子とPPSパレット予測子初期化子の両方に基づいてパレット予測子を初期化し得る。たとえば、パレット予測子は、SPSパレット予測子エントリおよび後続の(followed by)PPSパレット予測子エントリ、またはその逆を含むことによって初期化され得る。他の例示的な実装形態では、ビデオデコーダは、SPSパレット予測子初期化子のうちのいくつかのみを使用し得、SPSパレット予測子初期化子のすべてを使用するとは限らない。たとえば、パレット予測子を初期化するとき、SPSパレット予測子エントリのどのエントリがパレット予測子初期化のために再利用されるべきであるかを示すために、再利用フラグがエントリごとにシグナリングされ得る。
[0033]ビデオコーダは、たとえば、スライスまたはタイル中の第1のブロック(たとえば、HEVCにおけるコーディングユニットまたはコーディングツリーユニット、あるいは異なるコーディング規格における異なるタイプのブロック)のためのパレット予測子を決定、たとえば、初期化し得る。次いで、ブロックのためのパレットテーブルがパレット予測子から決定され得る。第1のブロックのためにパレット予測子が初期化された後、次いで、第1のブロックのためのパレット予測子は、第2のブロックのための新しいパレット予測子を決定するために更新され得る。
[0034]図1は、本開示で説明される技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0035]宛先デバイス14は、リンク16を介して復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が、符号化ビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0036]代替的に、符号化データは、出力インターフェース22からストレージデバイス26に出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイス26からアクセスされ得る。ストレージデバイス26は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス26は、ソースデバイス12によって生成された符号化ビデオを保持し得る、ファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス26から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイス26からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0037]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0038]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0039]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化ビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス26上に記憶され得る。
[0040]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。場合によっては、入力インターフェース28は受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化ビデオデータを受信する。リンク16を介して通信され、またはストレージデバイス26上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ記憶される符号化ビデオデータとともに含まれ得る。
[0041]ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0042]ビデオエンコーダ20およびビデオデコーダ30は、最近確定された高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM:HEVC Test Model)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例としては、MPEG−2およびITU−T H.263がある。ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、それのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264およびITU−T H.265/HEVCを含む。
[0043]最近、動きがあるテキストおよびグラフィックスなど、スクリーンコンテンツ材料のための新しいコーディングツールの調査が要求され、スクリーンコンテンツのためのコーディング効率を改善する技術が提案されている。この活動は現在進行中であり、H.265/HEVCスクリーンコンテンツコーディング(SCC:screen content coding)拡張として完了されることが予想される。JCTVC−U1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第21回会合:ワルシャワ、ポーランド、2015年6月19日〜6月26日はHEVC SCC Working Draft 4(WD4)JCTVC−U1005を記載しており、http://phenix.int-evry.fr/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U1005-v2.zipにおいて入手可能であり、その内容全体は、参照により本明細書に組み込まれる。
[0044]本開示の技法は、説明を簡単にするためにHEVC用語を利用し得る。しかしながら、本開示の技法がHEVCに限定されると仮定されるべきでなく、実際は、本開示の技法が、HEVCの後継規格およびその拡張、ならびに他の将来の規格またはプロセスにおいて実装され得ることが明示的に企図される。
[0045]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0046]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0047]上記で紹介されたように、JCT−VCはHEVC規格の開発を最近確定した。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいていた。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを与えるが、HMは35個ものイントラ予測符号化モードを与え得る。
[0048]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbはCbクロミナンスサンプルの2次元アレイである。SCrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0049]ピクチャの符号化表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0050]コード化CTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するためにCTUのコーディングツリーブロックに対して4分木区分を再帰的に実行し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックであり得る。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0051]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックのための予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0052]ビデオエンコーダ20は、PUのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
[0053]ビデオエンコーダ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コーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0054]さらに、ビデオエンコーダ20は、CUのルーマ残差ブロックとCb残差ブロックとCr残差ブロックとを1つまたは複数のルーマ変換ブロックとCb変換ブロックとCr変換ブロックとに分解するために4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0055]ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0056]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実施し得る。
[0057]ビデオエンコーダ20は、コード化ピクチャと関連データとの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、NALユニットのシーケンスを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在させられたRBSPの形態でそのデータを含んでいるバイトとを含んでいる、シンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
[0058]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはPPSのためのRBSPをカプセル化し得、第2のタイプのNALユニットはコード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットはSEIメッセージのためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、VCL NALユニットと呼ばれることがある。
[0059]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。さらに、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構築するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構築し得る。ピクチャの各CUのためのコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
[0060]図2は、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。図2の例は、パレットの第1のセット(すなわち、第1のパレット184)に関連付けられた第1のブロック180と、パレットの第2のセット(すなわち、第2のパレット192)に関連付けられた第2のブロック188とを有するピクチャ178を含む。以下でより詳細に説明されるように、第2のパレット192は第1のパレット184に基づき得る。ピクチャ178は、イントラ予測コーディングモードを用いてコーディングされるブロック196と、インター予測コーディングモードを用いてコーディングされるブロック200とをも含む。
[0061]図2の技法は、ビデオエンコーダ20(図1および図2)とビデオデコーダ30(図1および図3)のコンテキストにおいて説明される。パレットベースコーディング技法は、たとえば、ビデオデータのブロックのためのコーディングモードとして使用され得る。図2に関して説明される様々なブロックは、たとえば、HEVCのコンテキストにおいて理解されるようにCTU、CU、PU、またはTUに対応し得るが、図2で説明されるブロックは、任意の特定のコーディング規格のブロック構造に限定されず、HEBCとは異なるブロックフォーマットを利用する将来のコーディング規格に適合し得る。
[0062]概して、パレットは、現在コーディングされているブロック(たとえば、図2の例ではブロック188)について支配的である、および/またはそのブロックを表現する、いくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むものとして示されている。いくつかの例では、(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、ブロックの各色成分について別々にパレットをコーディングし得る。たとえば、ビデオエンコーダ20は、ブロックのルーマ(Y)成分のためのパレットと、ブロックのクロマ(U)成分のための別のパレットと、ブロックのクロマ(V)成分のためのまた別のパレットとを符号化し得る。この例では、YパレットのエントリはブロックのピクセルのY値を表し得、UパレットのエントリはブロックのピクセルのU値を表し得、VパレットのエントリはブロックのピクセルのV値を表し得る。
[0063]他の例では、ビデオエンコーダ20は、ブロックのすべての色成分について単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yiと、Uiと、Viとを含む、トリプル値であるi番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々についての値を含む。したがって、複数の個々のパレットを有するパレットのセットとしての第1のパレット184および第2のパレット192の表現は、一例にすぎず、限定することは意図されない。
[0064]図2の例では、第1のパレット184の各々は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する3つのエントリ202〜206を含む。エントリ202〜206は、それぞれ、ピクセル値A、ピクセル値B、およびピクセル値Cを含むピクセル値に、インデックス値を関係付ける。第1のパレット184の各々は、実際にインデックスと列ヘッダとを含まないが、ピクセル値A、B、およびCのみを含み、インデックスは、パレット中のエントリを識別するために使用されることに留意されたい。
[0065]本明細書で説明されるように、第1のブロック180の実際のピクセル値を直接コーディングするのではなく、(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、インデックス1〜3を使用してブロックのピクセルをコーディングするためにパレットベースコーディングを使用し得る。すなわち、第1のブロック180の各ピクセル位置について、ビデオエンコーダ20はピクセルについてのインデックス値を符号化し得、インデックス値は、第1のパレット184のうちの1つまたは複数の中のピクセル値に関連付けられる。ビデオデコーダ30は、ビットストリームからインデックス値を取得し得、インデックス値と第1のパレット184のうちの1つまたは複数とを使用してピクセル値を再構築し得る。言い換えれば、ブロックについてのそれぞれのインデックス値ごとに、ビデオデコーダ30は、第1のパレット184のうちの1つの中のエントリを決定し得る。ビデオデコーダ30は、ブロック中のそれぞれのインデックス値を、パレット中の決定されたエントリによって指定されたピクセル値と交換し得る。ビデオエンコーダ20は、パレットベース復号におけるビデオデコーダ30による使用のために、符号化ビデオデータビットストリーム中で第1のパレット184を送信し得る。一般に、1つまたは複数のパレットが、各ブロックのために送信され得るか、または異なるブロックの間で共有され得る。
[0066]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、1つまたは複数のパレット予測子に基づいて第2のパレット192を決定し得る。パレット予測子は、たとえば、第1のパレット184のエントリの一部または全部を含み、場合によっては、他のパレットからのエントリをも含み得る。いくつかの例では、パレット予測子は、第1のパレット184のエントリをパレット予測子に追加すると、パレット予測子を最大サイズ以下に保つために、現在、パレット予測子中の最も古いエントリが抹消される(expunged)、先入れ先出し方法を使用して生成され得る。他の例では、パレット予測子は、異なる技法を使用して更新および/または維持され得る。本開示の技法は、一般に、パレット予測子を初期化することを対象とし、パレット予測子を更新および維持するための多数の異なる技法とともに使用され得る。
[0067]本開示の技法は、一般に、パレット予測子に基づいてパレットを生成することを対象とし、より詳細には、パレット予測子の初期化を制御するための技法を対象とするが、本開示の技法は、パレットを生成するための他の技法とともに使用され得る。一例として、ビデオエンコーダ20は、(空間的な、または走査順序に基づく)隣接ブロック、または原因となるネイバーの最も頻繁なサンプルなど、1つまたは複数の他のブロックに関連付けられた1つまたは複数のパレットから、ブロックのためのパレットが予測されるかどうかを示すために、(一例として、第2のブロック188を含む)各ブロックのためのpred_palette_flagを符号化し得る。たとえば、そのようなフラグの値が1に等しいとき、ビデオデコーダ30は、第2のブロック188のための第2のパレット192が1つまたは複数のすでに復号されたパレットから予測され、したがって、第2のブロック188のための新しいパレットがpred_palette_flagを含んでいるビットストリーム中に含まれないと決定し得る。そのようなフラグが0に等しいとき、ビデオデコーダ30は、第2のブロック188のための第2のパレット192が新しいパレットとしてビットストリーム中に含まれると決定し得る。いくつかの例では、pred_palette_flagは、ブロックの各異なる色成分について別々にコーディングされ得る(たとえば、YUVビデオにおけるブロックの場合、3つのフラグ、すなわち、Yのために1つ、Uのために1つ、およびVのために1つ)。他の例では、単一のpred_palette_flagは、ブロックのすべての色成分についてコーディングされ得る。
[0068]上記の例では、現在のブロックのためのパレットのエントリのいずれかが予測されるかどうかを示すために、pred_palette_flagがブロックごとにシグナリングされる。これは、第2のパレット192が第1のパレット184と同等であり、追加の情報がシグナリングされないことを意味する。他の例では、1つまたは複数のシンタックス要素はエントリごとにシグナリングされ得る。すなわち、現在のパレット中にエントリが存在するかどうかを示すために、フラグがパレット予測子の各エントリについてシグナリングされ得る。上述のように、パレットのエントリが予測されない場合、パレットのエントリは明示的にシグナリングされ得る。他の例では、これらの2つの方法が組み合わせられ得る。たとえば、最初に、pred_palette_flagがシグナリングされる。フラグが0である場合、エントリごとの予測フラグがシグナリングされ得る。さらに、新しいエントリの数およびそれらの明示的な値がシグナリングされ得る。
[0069]第1のパレット184に対して第2のパレット192を決定する(たとえば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレットが、この例では第1のパレット184が、それから決定される1つまたは複数のブロックの位置を特定し得る。予測パレットは、(たとえば、(空間的な、または走査順序に基づく)隣接ブロック、または原因となるネイバーの最も頻繁なサンプルなど)現在コーディングされているブロックの1つまたは複数の隣接ブロック、すなわち第2のブロック188に関連付けられ得る。1つまたは複数の隣接ブロックのパレットは予測パレットに関連付けられ得る。図2に示されている例など、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のブロック188のための予測パレットを決定するとき、左側隣接ブロック、すなわち、第1のブロック180の位置を特定し得る。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のブロック、すなわち、ブロック196など、第2のブロック188に対して他の位置にある1つまたは複数のブロックの位置を特定し得る。別の例では、パレットモードを使用した走査順序中の最後のブロックのためのパレットが、予測パレットとして使用され得る。
[0070]ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づいてパレット予測のためのブロックを決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、最初に、パレット予測のために、左側隣接ブロック、すなわち、第1のブロック180を識別し得る。左側隣接ブロックが予測のために利用可能でない(たとえば、左側隣接ブロックが、イントラ予測モードまたはイントラ予測モードなど、パレットベースコーディングモード以外のモードでコーディングされるか、あるいはピクチャまたはスライスの左端に位置する)場合、ビデオエンコーダ20および/またはビデオデコーダ30は、上側隣接ブロック、すなわち、ブロック196を識別し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するブロックの位置を特定するまで、ロケーションの所定の順序に従って利用可能なブロックを探索し続け得る。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロック、および/または隣接ブロックの再構築されたサンプルに基づいて予測パレットを決定し得る。
[0071]図2の例は、単一のブロック(すなわち、第1のブロック180)からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接ブロックの組合せから予測のためのパレットの位置を特定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、複数の(空間的な、または走査順序での)隣接ブロックの1つまたは組合せのパレットに基づいて予測パレットを生成するために、1つまたは複数の式、関数、ルールなどを適用し得る。
[0072]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構築し得る。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在ブロックがそこから選択される(たとえば、パレットをコピーする)リスト中の候補ブロックを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ30は、同じ方式で候補リストを構築し、インデックスを復号し、現在ブロックとともに使用するための対応するブロックのパレットを選択するために、復号されたインデックスを使用し得る。別の例では、リスト中の示された候補ブロックのパレットは、現在ブロックのための現在のパレットのエントリごとの予測のための予測パレットとして使用され得る。
[0073]説明の目的のための一例では、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているブロックの上に配置された1つのブロックと、現在コーディングされているブロックの左に配置された1つのブロックとを含む、候補リストを構築し得る。この例では、ビデオエンコーダ20は、候補選択を示すために1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、現在ブロックのためのパレットが現在ブロックの左に配置されたブロックからコピーされることを示すために、0の値を有するフラグを符号化し得る。ビデオエンコーダ20は、現在ブロックのためのパレットが現在ブロックの上に配置されたブロックからコピーされることを示すために、1の値を有するフラグを符号化し得る。ビデオデコーダ30はフラグを復号し、パレット予測のために適切なブロックを選択する。別の例では、フラグは、上または左隣接ブロックのパレットが予測パレットとして使用されるかどうかを示し得る。次いで、予測パレット中の各エントリについて、そのエントリが現在ブロックのためのパレット中で使用されるかどうかが示され得る。
[0074]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレット中に含まれるサンプル値が1つまたは複数の隣接ブロックの中で現れる頻度に基づいて、現在コーディングされているブロックのためのパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のブロックのコーディング中に最も頻繁に使用されるインデックス値に関連付けられた色を追跡し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、現在コーディングされているブロックのためのパレットに、最も頻繁に使用される色を含め得る。
[0075]上述のように、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダは、現在ブロックをコーディングするために、隣接ブロックからパレット全体をコピーし得る。追加、または代替として、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリごとの(entry-wise based)パレット予測を実行し得る。たとえば、ビデオエンコーダ20は、予測パレット(たとえば、別のブロックのパレット)に基づいて、それぞれのエントリが予測されるかどうかを示す、パレットの各エントリのための1つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ20は、エントリが予測パレットからの予測された値(たとえば、隣接ブロックに関連付けられたパレットの対応するエントリ)であるとき、所与のエントリのための1の値を有するフラグを符号化し得る。ビデオエンコーダ20は、特定のエントリが別のブロックのパレットから予測されないことを示すために、その特定のエントリのための0の値を有するフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、予測されないパレットエントリの値を示す追加のデータを符号化し得る。
[0076]本開示は、現在のブロックのためのパレットを予測するためのいくつかの代替的な技法について説明する。一例では、1つまたは複数の前にコーディングされた隣接ブロックからのパレットエントリを含む予測パレットは、エントリの数、Nを含む。この場合、ビデオエンコーダ20は、最初に、予測パレットと同じサイズ、すなわち、サイズNを有するバイナリベクトルVをビデオデコーダ30に送信する。バイナリベクトル中の各エントリは、予測パレット中の対応するエントリが現在ブロックのためのパレットに対して再利用またはコピーされることになるかどうかを示す。たとえば、V(i)=1は、隣接ブロックのための予測パレット中のi番目のエントリが、現在ブロック中に異なるインデックスを有し得る、現在ブロックのためのパレットに対して再利用またはコピーされることになることを意味する。
[0077]さらに、ビデオエンコーダ20は、いくつの新しいパレットエントリが現在ブロックのためのパレット中に含まれるかを示す数Mを送信し得、次いで、新しいパレットエントリの各々についてのピクセル値をビデオデコーダ30に送信する。この例では、現在ブロックのためのパレットの最終的なサイズは、M+Sに等しいものとして導出され得、ただし、Sは、現在ブロックのためのパレットに対して再利用またはコピーされ得る(すなわち、V(i)=1)予測パレット中のエントリの数である。現在ブロックのためのパレットを生成するために、ビデオデコーダ30は、送信された新しいパレットエントリと、予測パレットから再利用されるコピーされたパレットエントリとをマージし得る。場合によっては、マージはピクセル値に基づき得、したがって、現在ブロックのためのパレット中のエントリは、パレットインデックスとともに増加(または減少)し得る。他の場合には、マージは、エントリの2つのセット、すなわち、新しいパレットエントリおよびコピーされたパレットエントリの連結であり得る。
[0078]別の例では、ビデオエンコーダ20は、最初に、現在ブロックのためのパレットのサイズNの指示をビデオデコーダ30に送信する。次いで、ビデオエンコーダ20は、現在ブロックのためのパレットと同じサイズ、すなわち、サイズNを有するベクトルVをビデオデコーダ30に送信する。ベクトル中の各エントリは、現在ブロックのためのパレット中の対応するエントリがビデオエンコーダ20によって明示的に送信されるか、または予測パレットからコピーされるかを示す。たとえば、V(i)=1は、ビデオエンコーダ20がパレット中のi番目のエントリをビデオデコーダ30に送信することを意味し、V(i)=0は、パレット中のi番目のエントリが予測パレットからコピーされることを意味する。予測パレットからコピーされる(すなわち、V(i)=0)エントリの場合、ビデオエンコーダ20は、予測パレット中のどのエントリが現在ブロックのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用し得る。場合によっては、ビデオエンコーダ20は、現在ブロックのためのパレットに予測パレットからコピーされるべきエントリのパレットインデックスをシグナリングし得る。他の場合には、ビデオエンコーダ20は、インデックスオフセットをシグナリングし得、インデックスオフセットは、現在ブロックのためのパレット中のインデックスと予測パレット中のインデックスとの間の差分である。
[0079]2つの上記の例では、現在ブロックのためのパレットの予測のために使用される予測パレットを生成するために使用される1つまたは複数の前にコーディングされた隣接ブロックは、現在ブロックに対して上の隣接(すなわち、上の)ブロックまたは左の隣接ブロックであり得る。いくつかの例では、隣接ブロックの候補リストが構築され得、ビデオエンコーダ20は、どの候補隣接ブロックおよび関連付けられたパレットが現在ブロックのためのパレット予測のために使用されるかを示すために、インデックスを送信する。いくつかのブロック、たとえば、スライスの始端もしくは他のスライス境界に配置されたブロック、またはビデオデータのスライスもしくはピクチャ中の最も左のブロックについて、パレット予測は無効にされ得る。
[0080]追加の例では、ビデオエンコーダ20は、現在ブロックのためのパレット中に含まれるエントリの数の指示をビデオデコーダ30に送信する。次いで、パレットエントリの各々について、ビデオエンコーダ20は、パレットエントリがビデオエンコーダ20によって明示的に送信されるかどうか、またはパレットエントリが前に再構築されたピクセルから導出されるかどうかを示すために、フラグまたは他のシンタックス要素を送信する。たとえば、1に等しく設定された1ビットのフラグは、ビデオエンコーダ20がパレットエントリを明示的に送ることを意味し得、0に等しく設定された1ビットのフラグは、パレットエントリが前に再構築されたピクセルから導出されることを意味し得る。前に再構築されたピクセルから導出されるパレットエントリの各々について、ビデオエンコーダ20は、パレットエントリに対応する現在ブロックまたは隣接CU中の再構築されたピクセルのピクセルロケーションに関する別の指示を送信する。場合によっては、再構築されたピクセルロケーション指示は、現在ブロックの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーション指示は、現在ブロックのためのパレットエントリを指定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、HEVCにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
[0081]図2の例では、第2のパレット192は、エントリインデックス値1、エントリインデックス値2、エントリインデックス値3、およびエントリインデックス4をそれぞれ有する、4つのエントリ208〜214を含む。エントリ208〜214は、インデックス値を、ピクセル値A、ピクセル値B、ピクチャ値C、およびピクセル値Dをそれぞれ含むピクセル値に関係付ける。本開示の1つまたは複数の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測の目的で第1のブロック180の位置を特定し、第1のパレット184のエントリ1〜3を、第2のブロック188をコーディングするための第2のパレット192のエントリ1〜3にコピーするために、上記で説明された技法のいずれかを使用し得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。さらに、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含まれるべきエントリ4のためのデータをコーディングし得る。そのような情報は、予測パレットから予測されないパレットエントリの数と、それらのパレットエントリに対応するピクセル値とを含み得る。
[0082]いくつかの例では、本開示の態様によれば、1つまたは複数のシンタックス要素は、第2のパレット192などのパレットが(図2では第1のパレット184として示されているが、1つまたは複数のブロックからのエントリから構成され得る)予測パレットから完全に予測されるかどうか、または第2のパレット192の特定のエントリが予測されるかどうかを示し得る。たとえば、初期シンタックス要素は、エントリのすべてが予測されるかどうかを示し得る。初期シンタックス要素が、エントリのすべてが予測されるとは限らないことを示す(たとえば、0の値を有するフラグ)場合、1つまたは複数の追加のシンタックス要素が、第2のパレット192のどのエントリが予測パレットから予測されるかを示し得る。
[0083]本開示のいくつかの態様によれば、パレット予測に関連付けられたいくつかの情報は、コーディングされているデータの1つまたは複数の特性から推論され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化する(および、ビデオデコーダ30がそのようなシンタックス要素を復号する)のではなく、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいてパレット予測を実行し得る。
[0084]一例では、説明の目的で、上記で説明されたpred_palette_flagの値は、例として、コーディングされているブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、および/またはマルチビューコーディングにおけるビューidのうちの1つまたは複数から推論され得る。すなわち、一例として、ブロックのサイズに関して、ビデオエンコーダ20および/またはビデオデコーダ30は、上記で説明されたpred_palette_flagが、所定のサイズを超えるかまたはそれ未満である任意のブロックについて1に等しいと決定し得る。この例では、pred_palette_flagは、符号化ビットストリーム中でシグナリングされる必要はない。
[0085]pred_palette_flagに関して上記で説明されたが、ビデオエンコーダ20および/またはビデオデコーダ30は、同じくまたは代替的に、コーディングされているデータの1つまたは複数の特性に基づいて、そこからパレットが予測のために使用される候補ブロック、またはパレット予測候補を構築するためのルールなど、パレット予測に関連付けられた他の情報を推論し得る。
[0086]本開示の他の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、オンザフライでパレットを構築し得る。たとえば、第2のブロック188を最初にコーディングするとき、第2のパレット192中にエントリはない。ビデオエンコーダ20およびビデオデコーダ30が第2のブロック188のピクセルのための新しい値をコーディングするにつれて、各新しい値が第2のパレット192中に含められる。すなわち、たとえば、ビデオエンコーダ20は、ピクセル値がブロック188の中の位置のために生成およびシグナリングされるにつれて、ピクセル値を第2のパレット192に追加する。ビデオエンコーダ20はブロックにおいて相対的により後でピクセルを符号化するので、ビデオエンコーダ20は、ピクセル値をシグナリングするのではなく、インデックス値を使用して、パレット中にすでに含まれるものと同じ値を有するピクセルを符号化し得る。同様に、ビデオデコーダ30が第2のブロック188の中の位置のための(たとえば、ビデオエンコーダ20によってシグナリングされる)新しいピクセル値を受信するとき、ビデオデコーダ30は、ピクセル値を第2のパレット192中に含める。第2のブロック188において相対的により後で復号されるピクセル位置が、第2のパレット192に追加されているピクセル値を有するとき、ビデオデコーダ30は、第2のブロック188のピクセル値の再構築のために、第2のパレット192中の対応するピクセル値を識別する情報、たとえばインデックス値などを受信し得る。
[0087]いくつかの例では、以下でより詳細に説明されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184および第2のパレット192を最大パレットサイズ以下に維持し得る。本開示の態様によれば、最大パレットサイズが達せられる場合、たとえば、第2のパレット192がオンザフライで動的に構築されるにつれて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192のエントリを除去するために同じプロセスを実行する。パレットエントリを除去するための1つの例示的なプロセスは、ビデオエンコーダ20およびビデオデコーダ30がパレットの最も古いエントリを除去する先入れ先出し(FIFO)技法である。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットから最も使用頻度の低いパレットエントリを除去し得る。さらに別の例では、ビデオエンコーダ20およびビデオデコーダ30は、どのエントリを除去すべきかを決定するために、FIFOプロセスと使用頻度のプロセスの両方を重視し得る。すなわち、エントリの除去は、エントリがどのくらい古いか、およびエントリがどのくらい頻繁に使用されるかに基づき得る。
[0088]いくつかの態様によれば、エントリ(ピクセル値)がパレットから除去され、ピクセル値がコーディングされているブロック中のより後の位置において再び現れる場合、ビデオエンコーダ20は、パレットにエントリを含めてインデックスを符号化する代わりに、ピクセル値を符号化し得る。追加または代替として、ビデオエンコーダ20は、除去された後で、たとえば、ビデオエンコーダ20およびビデオデコーダ30がブロック中の位置を走査するとき、パレットエントリをパレットに再び入れ得る。
[0089]いくつかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための1つまたは複数の他の技法と組み合わせられ得る。具体的には、一例として、ビデオエンコーダ20およびビデオデコーダ30は、(たとえば、第1のパレット184から第2のパレット192を予測するためにパレット予測を使用して)第2のパレット192を最初にコーディングし得、第2のブロック188のピクセルをコーディングするときに第2のパレット192を更新し得る。たとえば、初期パレットを送信すると、ビデオエンコーダ20は、ブロック中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加するか、または初期パレット中の値を変更し得る。同様に、初期パレットを受信すると、ビデオデコーダ30は、ブロックの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加する(すなわち、含める)か、または初期パレット中の値を変更し得る。
[0090]ビデオエンコーダ20は、いくつかの例では、現在ブロックがパレット全体の送信を使用するのか、オンザフライのパレット生成を使用するのか、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するのかをシグナリングし得る。いくつかの例では、初期パレットは、最大パレットサイズの完全なパレットであり得、その場合、初期パレット中の値は変更され得る。他の例では、初期パレットは、最大パレットサイズよりも小さくなり得、その場合、ビデオエンコーダ20およびビデオデコーダ30は、初期パレットの値に値を追加し、および/または初期パレットの値を変更し得る。
[0091]本開示の1つまたは複数の態様によれば、たとえば、パレット中に含まれるピクセル値の数に関する、第1のパレット184および第2のパレット192などのパレットのサイズは、固定され得るか、または符号化ビットストリーム中の1つまたは複数のシンタックス要素を使用してシグナリングされ得る。たとえば、いくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、単項コードまたは切捨て単項コード(たとえば、最大限のパレットサイズにおいて切り捨てるコード)を使用し得る。他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、指数ゴロム(exponential Golomb)コードまたはライス−ゴロム(Rice-Golomb)コードを使用し得る。
[0092]さらに他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットの各エントリの後でパレットのサイズを示すデータをコーディングし得る。一例として、第2のパレット192に関して、ビデオエンコーダ20は、エントリ208〜214の各々の後で停止フラグを符号化し得る。この例では、1に等しい停止フラグは、現在コーディングされているエントリが第2のパレット192の最後のエントリであることを指定し得るが、0に等しい停止フラグは、第2のパレット192中に追加のエントリがあることを示し得る。したがって、ビデオエンコーダ20は、エントリ208〜212の各々の後で0の値を有する停止フラグを符号化し、エントリ214の後で1の値を有する停止フラグを符号化し得る。いくつかの事例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリーム中に含まれないことがある。上記の例は、パレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報(たとえば、上述のように、コーディングされているブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidなど、特性情報)に基づいて、条件的に送信または推論され得る。
[0093]本開示の技法は、可逆的にデータをコーディングすること、または代替的に、いくらかの損失を伴ってデータをコーディングすること(不可逆コーディング)を含む。たとえば、不可逆コーディングに関して、ビデオエンコーダ20は、パレットのピクセル値を厳密にCU中の実際のピクセル値と厳密に照合することなく、CUのピクセルをコーディングし得る。本開示の技法が不可逆コーディングに適用されるとき、いくつかの制限がパレットに適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184および第2のパレット192など、パレットを量子化し得る。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、エントリのピクセル値が互いの所定の範囲内にあるとき、パレットのエントリをマージしまたは組み合わせ得る(すなわち、量子化し得る)。言い換えれば、新しいパレット値の誤差マージン内にあるパレット値がすでにある場合、新しいパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なるピクセル値が、単一のパレットエントリに、または等価的に、単一のパレットピクセル値にマッピングされ得る。
[0094]ビデオデコーダ30は、特定のパレットが可逆的であるか不可逆的であるかにかかわらず、同じ様式でピクセル値を復号し得る。一例として、ビデオデコーダ30は、コード化ブロック中の所与のピクセル位置のためにビデオエンコーダ20によって送信されるインデックス値を使用して、パレットが可逆的であるか不可逆的であるかを顧慮せずに、そのピクセル位置についてパレット中のエントリを選択し得る。この例では、パレットエントリのピクセル値は、それが元のピクセル値と厳密に一致するかどうかにかかわらず、コード化ブロック中のピクセル値として使用される。
[0095]不可逆コーディングの例では、説明の目的で、ビデオエンコーダ20は、デルタ値と呼ばれる誤差限界を決定し得る。候補ピクセル値エントリPlt_candは、CUまたはPUなどのコーディングされるべきブロック中のある位置におけるピクセル値に対応し得る。パレットの構築中に、ビデオエンコーダ20は、候補ピクセル値エントリPlt_candとパレット中の既存のピクセル値エントリのすべてとの間の絶対差分を決定する。候補ピクセル値エントリPlt_candとパレット中の既存のピクセル値エントリとの間の絶対差分のすべてが、デルタ値よりも大きい場合、ビデオエンコーダ20は、ピクセル値候補をエントリとしてパレットに追加し得る。ピクセル値エントリPlt_candとパレット中の少なくとも1つの既存のピクセル値エントリとの間の絶対差分が、デルタ値に等しいかまたはそれよりも小さい場合、ビデオエンコーダ20は、候補ピクセル値エントリPlt_candをパレットに追加しないことがある。したがって、ピクセル値エントリPlt_candをコーディングするとき、ビデオエンコーダ20は、ピクセル値エントリPlt_candに最も近いピクセル値をもつエントリを選択し、それによって、いくらかの損失をシステムにもたらし得る。パレットが複数の成分(たとえば、3つの色成分)から構成されるとき、個々の成分値の絶対差分の合計が、デルタ値に対する比較のために使用され得る。代替または追加として、各成分値についての絶対差分は、第2のデルタ値に対して比較され得る。
[0096]いくつかの例では、上述されたパレット中の既存のピクセル値エントリが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存のピクセル値が、他のプロセスを使用して追加されていることがある。たとえば、1つまたは複数の初期ピクセル値エントリが、パレットを構築するデルタ比較プロセスを開始するために(デルタ比較なしに)パレットに追加され得る。上記で説明されたプロセスは、ルーマパレットおよび/またはクロマパレットを生成するために、ビデオエンコーダ20および/またはビデオデコーダ30によって実装され得る。
[0097]パレット構築に関して上記で説明された技法も、ピクセルコーディング中にビデオエンコーダ20およびビデオデコーダ30によって使用され得る。たとえば、ピクセル値を符号化するとき、ビデオエンコーダ20は、ピクセルの値をパレット中のエントリのピクセル値と比較し得る。ピクセルの値とパレット中のエントリのうちの1つとの間の絶対ピクセル値差分が、デルタ値に等しいかまたはそれよりも小さい場合、ビデオエンコーダ20は、パレットのエントリとしてピクセル値を符号化し得る。すなわち、この例では、ビデオエンコーダ20は、ピクセル値がパレットエントリに対して十分に小さい(たとえば、所定の範囲内の)絶対差分を生じるとき、パレットのエントリのうちの1つを使用して、ピクセル値を符号化する。
[0098]いくつかの例では、ビデオエンコーダ20は、ピクセル値を符号化するために、(コーディングされているピクセル値と比較して)最小の絶対ピクセル値差分を生じるパレットエントリを選択し得る。一例として、ビデオエンコーダ20は、ピクセル値のために使用されることになるパレットエントリ、たとえば、ビデオデコーダ30においてコード化ピクセル値を再構築するために使用されることになるパレットピクセル値エントリを示すために、インデックスを符号化し得る。ピクセルの値とパレット中のエントリのすべてとの間の絶対ピクセル値差分が、デルタよりも大きい場合、エンコーダは、ピクセル値を符号化するためにパレットエントリのうちの1つを使用しないことがあり、代わりに、ビデオデコーダ30に(場合によっては、量子化後に)ピクセルのピクセル値を送信し得る(および場合によっては、ピクセル値をエントリとしてパレットに追加)し得る。
[0099]別の例では、ビデオエンコーダ20は、ピクセル値を符号化するためにパレットのエントリを選択し得る。ビデオエンコーダ20は、予測ピクセル値として、選択されたエントリを使用し得る。すなわち、ビデオエンコーダ20は、実際のピクセル値と選択されたエントリとの間の差分を表す残差値を決定し、残差を符号化し得る。ビデオエンコーダ20は、パレットのエントリによって予測されるブロック中のピクセルのための残差値を生成し得、ピクセルのブロックのためのそれぞれの残差ピクセル値を含む残差ブロックを生成し得る。ビデオエンコーダ20は、その後、(図2に関して上述されたような)変換と量子化とを残差ブロックに適用し得る。このようにして、ビデオエンコーダ20は、量子化された残差変換係数を生成し得る。別の例では、残差は、可逆的に(変換および量子化なしに)、または変換なしにコーディングされ得る。
[0100]ビデオデコーダ30は、残差ブロックを再生するために、変換係数を逆変換し、逆量子化し得る。ビデオデコーダ30は、次いで、予測パレットエントリ値とピクセル値のための残差値とを使用して、ピクセル値を再構築し得る。たとえば、ビデオデコーダ30は、コード化ピクセル値を再構築するために、残差値をパレットエントリ値と組み合わせ得る。
[0101]いくつかの例では、デルタ値は、異なるブロックサイズ、ピクチャサイズ、色空間、または異なる色成分に対して異なり得る。デルタ値は、様々なコーディング条件に基づいてあらかじめ決定されるか、または決定され得る。たとえば、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、デルタ値をビデオデコーダ30にシグナリングし得る。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、同じ固定されたデルタ値を使用するように事前構成され得る。さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、(たとえば、上述されたように、ブロックサイズ、色空間、色成分など)サイド情報に基づいてデルタ値を適応的に導出し得る。
[0102]いくつかの例では、不可逆コーディングパレットモードはHEVCコーディングモードとして含まれ得る。たとえば、コーディングモードは、イントラ予測モード、インター予測モード、可逆コーディングパレットモード、および不可逆コーディングパレットモードを含み得る。HEVCコーディングでは、図2および図3に関して上述されたように、量子化パラメータ(QP:quantization parameter)が、許容されるひずみを制御するために使用される。パレットベースコーディングのためのデルタの値は、QPの関数として計算され得るか、または場合によっては決定され得る。たとえば、上記で説明されたデルタ値は、1<<(QP/6)または1<<((QP+d)/6)であり得、ただし、dは定数であり、「<<」はビットごとの左シフト演算子を表す。
[0103]本開示で説明される不可逆コーディング技法を使用するパレットの生成は、ビデオエンコーダ20、ビデオデコーダ30、またはその両方によって実行され得る。たとえば、ビデオエンコーダ20は、上記で説明されたデルタ比較技法を使用してブロックのためのパレット中のエントリを生成し、ビデオデコーダ30による使用のためにパレットの構築のための情報をシグナリングし得る。すなわち、ビデオエンコーダ20は、ブロックのためのパレット中のエントリのためのピクセル値を示す情報をシグナリングし、次いで、そのようなパレットエントリに関連付けられたピクセル値を使用してピクセル値を符号化するように構成され得る。ビデオデコーダ30は、そのような情報を使用してパレットを構築し得、次いで、コード化ブロックのピクセル値を復号するためにエントリを使用し得る。いくつかの例では、ビデオエンコーダ20は、コード化ブロックの1つまたは複数のピクセル位置のためのパレットエントリを識別するインデックス値をシグナリングし得、ビデオデコーダ30は、パレットから関連するピクセル値エントリを取り出すためにインデックス値を使用し得る。
[0104]他の例では、ビデオデコーダ30は、上記で説明されたデルタ比較技法を適用することによってパレットを構築するように構成され得る。たとえば、ビデオデコーダ30は、コード化ブロック内の位置についてのピクセル値を受信し得、ピクセル値とパレット中の既存のピクセル値エントリとの間の絶対差分がデルタ値よりも大きいかどうかを決定し得る。大きい場合、ビデオデコーダ30は、たとえば、ビデオエンコーダ20によってシグナリングされた対応するインデックス値を使用したブロックの他のピクセル位置についてのピクセル値のパレットベースの復号において後で使用するために、ピクセル値をエントリとしてパレット中に追加し得る。この場合、ビデオエンコーダ20およびビデオデコーダ30は、パレットを生成するために同じまたは同様のプロセスを適用する。大きくない場合、ビデオデコーダ30は、ピクセル値をパレットに追加しないことがある。
[0105]例示を目的とする一例では、ビデオデコーダ30は、ブロック中の様々なピクセル位置についてのインデックス値またはピクセル値を受信し得る。ピクセル位置のためにインデックス値が受信された場合、たとえば、ビデオデコーダ30は、パレット中のエントリを識別するためにインデックス値を使用し、ピクセル位置のためにパレットエントリのピクセル値を使用し得る。ピクセル位置のためにピクセル値が受信された場合、ビデオデコーダ30は、ピクセル位置のための受信されたピクセル値を使用し得、また、ピクセル値がパレットに追加され次いでパレットコーディングのために後で使用されるべきであるかどうかを決定するために、デルタ比較を適用し得る。
[0106]エンコーダ側では、ブロック中の位置についてのピクセル値が、ピクセル値と、デルタ値よりも小さいかまたはそれに等しいパレット中の既存のピクセル値エントリとの間の絶対差分を生じる場合、ビデオエンコーダ20は、その位置についてのピクセル値を再構築する際に使用するためのパレット中のエントリを識別するために、インデックス値を送り得る。ブロック中の位置についてのピクセル値が、ピクセル値と、すべてがデルタ値よりも大きいパレット中の既存のピクセル値エントリとの間の絶対差分値を生じる場合、ビデオエンコーダ20はピクセル値を送り得、ピクセル値をパレット中の新しいエントリとして追加し得る。パレットを構築するために、ビデオデコーダ30は、たとえば、上記で説明されたように、エンコーダによってシグナリングされたデルタ値を使用し、固定のまたは既知のデルタ値に依拠し、あるいはデルタ値を推論または導出し得る。
[0107]上述のように、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータをコーディングするとき、イントラ予測モードと、インター予測モードと、可逆コーディングパレットモードと、不可逆コーディングパレットモードとを含む、コーディングモードを使用し得る。本開示のいくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングが有効にされるかどうかを示す1つまたは複数のシンタックス要素をコーディングし得る。たとえば、各ブロックにおいて、ビデオエンコーダ20は、フラグPLT_Mode_flagなどのシンタックス要素を符号化し得る。PLT_Mode_flagまたは他のシンタックス要素は、パレットベースコーディングモードが所与のブロック(たとえば、CUまたはPU)のために使用されるべきであるかどうかを示し得る。たとえば、このフラグは、ブロックレベル(たとえば、CUレベル)で符号化ビデオビットストリーム中でシグナリングされ得、次いで、符号化ビデオビットストリームを復号すると、ビデオデコーダ30によって受信され得る。
[0108]この例では、1に等しいこのPLT_Mode_flagの値は、パレットベースコーディングモードを使用して現在ブロックが符号化されることを指定し得る。この場合、ビデオデコーダ30は、ブロックを復号するためにパレットベースコーディングモードを適用し得る。いくつかの例では、シンタックス要素は、ブロックのための複数の異なるパレットベースコーディングモードのうちの1つ(たとえば、不可逆または可逆)を示し得る。0に等しいこのPLT_Mode_flagの値は、パレットモード以外のモードを使用して現在ブロックが符号化されることを指定し得る。たとえば、様々なインター予測コーディングモード、イントラ予測コーディングモード、または他のコーディングモードのいずれもが使用され得る。PLT_Mode_flagの値が0であるとき、ビデオエンコーダ20はまた、それぞれのブロックを符号化するために使用される特定のモード(たとえば、HEVCコーディングモード)を示すように追加のデータを符号化し得る。PLT_Mode_flagの使用が例として説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースコーディングモードがブロック(たとえば、CUまたはPU)のために使用されるべきであるかどうかを示すために、または複数のモードのいずれがコーディングのために使用されるべきであるかを示すために使用され得る。
[0109]いくつかの例では、上記で説明されたフラグまたは他のシンタックス要素は、ブロックレベルよりも高いレベルで送信され得る。たとえば、ビデオエンコーダ20は、そのようなフラグをスライスレベルでシグナリングし得る。この場合、1に等しい値は、スライス中のブロックのすべてがパレットモードを使用して符号化されることを示す。この例では、たとえばパレットモードまたは他のモードのための、追加のモード情報がブロックレベルでシグナリングされない。別の例では、ビデオエンコーダ20は、そのようなフラグを、PPS、SPS、またはVPSにおいてシグナリングし得る。
[0110]本開示のいくつかの態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットモードが特定のスライス、ピクチャ、シーケンスなどのために有効にされるのか無効にされるのかを指定する1つまたは複数のシンタックス要素(たとえば、上記で説明されたフラグなど)を、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルのうちの1つにおいてコーディングし得、一方、PLT_Mode_flagは、パレットベースコーディングモードが各ブロックのために使用されるかどうかを示す。この場合、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが無効にされることを示す場合、いくつかの例では、各ブロックのためにPLT_Mode_flagをシグナリングする必要はないことがある。代替的に、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが有効にされることを示す場合、パレットベースコーディングモードが各ブロックのために使用されるべきであるかどうかを示すために、PLT_Mode_flagがさらにシグナリングされ得る。
[0111]いくつかの例では、上記で説明されたシンタックス要素は、ビットストリーム中で条件付きでシグナリングされ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、および/またはマルチビューコーディングにおけるビューidに基づいて、シンタックス要素をそれぞれ符号化または復号するにすぎない。
[0112]上記で説明された例は、たとえば、ビットストリーム中の1つまたは複数のシンタックス要素をもつ明示的なシグナリングに関するが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットコーディングモードがアクティブであるかどうか、および/または特定のブロックをコーディングするために使用されるかどうかを暗黙的に決定し得る。ビデオエンコーダ20およびビデオデコーダ30は、たとえば、ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、および/またはマルチビューコーディングにおけるビューidに基づいて、パレットベースコーディングがブロックのために使用されるかどうかを決定し得る。
[0113]図3は、本開示の技法に従って、ビデオブロックのためのパレットへのインデックスを決定することの例を示す概念図である。たとえば、図3は、インデックス値に関連付けられたピクセルのそれぞれの位置をパレット244のエントリに関係付ける、インデックス値(値1、2、および3)のマップ240を含む。パレット244は、図2に関して上記で説明された第1のパレット184および第2のパレット192と同様の様式で決定され得る。
[0114]この場合も、図3の技法は、ビデオエンコーダ20(図1および図4)とビデオデコーダ30(図1および図5)のコンテキストにおいて、説明の目的でHEVCビデオコーディング規格に関して、説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを理解されたい。
[0115]マップ240は、各ピクセル位置のためのインデックス値を含むものとして図3の例に示されているが、他の例では、すべてのピクセル位置が、ブロックのピクセル値を指定するパレット244のエントリを示すインデックス値に関連付けられ得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ビデオエンコーダ20は、ピクセル値がパレット244中に含まれない場合、マップ240中の位置についての実際のピクセル値(またはそれの被量子化バージョン)の指示を符号化し得る(および、ビデオデコーダ30は、符号化ビットストリームからその指示を取得し得る)。
[0116]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値に関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i,j)のエントリがブロックの(i,j)の位置に対応すると仮定する。ビデオエンコーダ20は、エントリが、関連付けられたインデックス値を有するかどうかを示す、マップの各エントリ(すなわち、各ピクセル位置)のための1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、ブロック中の(i,j)のロケーションにおけるピクセル値がパレット244中の値のうちの1つであることを示すために、1の値を有するフラグを符号化し得る。そのような例では、ビデオエンコーダ20はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするために、(値1〜3として図3の例に示されている)パレットインデックスを符号化し得る。パレット244が単一のエントリと関連付けられたピクセル値とを含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップし得る。ビデオエンコーダ20は、ブロック中の(i,j)のロケーションにおけるピクセル値がパレット244中の値のうちの1つではないことを示すために、0の値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、ピクセル値を再構築する際にビデオデコーダ30によって使用するために、ピクセル値の指示を符号化し得る。いくつかの事例では、ピクセル値は不可逆様式でコーディングされ得る。
[0117]ブロックの1つの位置におけるピクセルの値は、ブロックの他の位置における1つまたは複数の他のピクセルの値の指示を与え得る。たとえば、ブロックの隣接ピクセル位置が、同じピクセル値を有するか、または(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る、不可逆コーディングの場合)同じインデックス値にマッピングされ得る確率が比較的高くなり得る。
[0118]したがって、本開示の態様によれば、ビデオエンコーダ20は、同じピクセル値またはインデックス値を有する所与の走査順序での連続するピクセルまたはインデックス値の数を示す1つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセル値またはインデックス値のストリングは、本明細書ではラン(run)と呼ばれることがある。説明の目的のための一例では、所与の走査順序での2つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序での2つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序での3番目のピクセルまたはインデックスが異なる値を有する場合、ランは1に等しい。同じ値をもつ3つの連続するインデックスまたはピクセルでは、ランは2であり、以下同様である。ビデオデコーダ30は、符号化ビットストリームからランを示すシンタックス要素を取得し、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定するためにそのデータを使用し得る。
[0119]いくつかの例では、現在ブロックのためのパレット中にあるピクセル値を有する現在ブロック中のすべてのピクセルロケーションは、パレットインデックスと、連続的なピクセルロケーションにおいて後続のピクセル値の「ラン」とともに符号化される。パレット中に1つのエントリしかない場合、パレットインデックスまたは「ラン」の送信は、現在ブロックについてスキップされ得る。現在ブロック中のピクセルロケーションのうちの1つにおけるピクセル値が、パレット中のピクセル値に対して厳密な一致を有しない場合、ビデオエンコーダ20は、最も近いピクセル値を有するパレットエントリのうちの1つを選択し得、元のピクセル値とパレット中に含まれる予測ピクセル値との間の予測誤差または残差値を計算し得る。ビデオエンコーダ20は、ピクセルロケーションについての残差値を符号化し、ビデオデコーダに送信する。ビデオデコーダ30は、次いで、対応する受信されたパレットインデックスに基づいてピクセルロケーションにおけるピクセル値を導出し得、次いで、導出されたピクセル値および残差値は、現在ブロック中のピクセルロケーションにおける元のピクセル値を予測するために使用される。一例では、残差値は、残差値を変換し、変換係数を量子化し、量子化変換係数をエントロピー符号化するために、RQTを適用することなど、HEVCドラフト10によって規定されたHEVC方法を使用して符号化される。場合によっては、上記の例は不可逆コーディングと呼ばれることがある。
[0120]説明の目的のための一例では、マップ240のライン248について考える(consider)。水平方向の左から右への走査方向を仮定すると、ライン248は、「2」の5つのインデックス値と、「3」の3つのインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向におけるライン248の第1の位置について2のインデックス値を符号化し得る。加えて、ビデオエンコーダ20は、シグナリングされたインデックス値と同じインデックス値を有する、走査方向における連続する値のランを示す1つまたは複数のシンタックス要素を符号化し得る。ライン248の例では、ビデオエンコーダ20は、4のランをシグナリングし、それによって、走査方向における後続の4つの位置のインデックス値が、シグナリングされたインデックス値と同じインデックス値を共有することを示し得る。ビデオエンコーダ20は、ライン248中の次の異なるインデックス値について同じプロセスを実行し得る。すなわち、ビデオエンコーダ20は、3のインデックス値と、2のランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを示す、シンタックス要素を取得し得る。
[0121]上述のように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)であり得る。いくつかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックについて1つまたは複数のシンタックス要素を符号化し得る。追加または代替として、走査方向は、たとえば、ブロックサイズ、色空間、および/または色成分など、いわゆるサイド情報に基づいて、シグナリングまたは推論され得る。ビデオエンコーダ20は、ブロックの各色成分のための走査を指定し得る。代替的に、指定された走査は、ブロックのすべての色成分に適用され得る。
[0122]たとえば、列ベースの走査に関して、マップ240の列252について考える。垂直方向の上から下への走査方向を仮定すると、列252は、「1」の1つのインデックス値と、「2」の5つのインデックス値と、「3」の2つのインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、(列252の相対的な上部における)走査方向における列252の第1の位置について1のインデックス値を符号化し得る。さらに、ビデオエンコーダ20は、0のランをシグナリングし、それによって、走査方向において後続の位置のインデックス値が異なることを示し得る。ビデオエンコーダ20は、次いで、走査方向における次の位置について2のインデックス値と、4のラン、すなわち、走査方向における後続の4つの位置のインデックス値が、シグナリングされたインデックス値と同じインデックス値を共有することを示す、1つまたは複数のシンタックス要素とを符号化し得る。次いで、ビデオエンコーダ20は、走査方向における次の異なるインデックス値について3のインデックス値と、1のランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを示す、シンタックス要素を取得し得る。
[0123]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、追加または代替として、マップ240の1つまたは複数のエントリのためのラインコピー(line copying)を実行し得る。ラインコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリのためのピクセル値またはインデックス値が、(水平方向の走査の場合)特定のエントリの上のラインにおける、または(垂直方向の走査の場合)特定のエントリの左の列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリの上のライン、または特定のエントリの左の列におけるエントリに等しい、走査順序でのピクセル値またはインデックス値の数を、ランとして示し得る。この例では、ビデオエンコーダ20およびまたはビデオデコーダ30は、指定された隣接ラインから、および、現在コーディングされているマップのラインのための指定された数のエントリから、ピクセル値またはインデックス値をコピーし得る。
[0124]説明の目的のための一例では、マップ240の列256および260について考える。垂直方向の上から下への走査方向を仮定すると、列256は、「1」の3つのインデックス値と、「2」の3つのインデックス値と、「3」の2つのインデックス値とを含む。列260は、走査方向において同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、列260全体が列256からコピーされることを示す、列260のための1つまたは複数のシンタックス要素を符号化し得る。1つまたは複数のシンタックス要素は、マップ240の相対的な上部において列260の第1のエントリに関連付けられ得る。ビデオデコーダ30は、ラインコピーを示すシンタックス要素を取得し、列260を復号するときに列260のための列256のインデックス値をコピーし得る。
[0125]本開示の態様によれば、エントリのいわゆるランをコーディングするための技法が、上記で説明されたラインコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ20は、マップ中のエントリの値がパレットから取得されるのか、またはマップ中のエントリの値がマップ240中の前にコーディングされたラインから取得されるのかを示す、1つまたは複数のシンタックス要素(たとえば、フラグ)を符号化し得る。ビデオエンコーダ20はまた、パレットのインデックス値、またはライン(行または列)中のエントリのロケーションを示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20はまた、同じ値を共有する連続するエントリの数を示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオデコーダ30は、符号化ビットストリームからそのような情報を取得し得、ブロックのためのマップとピクセル値とを再構築するために、その情報を使用し得る。
[0126]説明の目的のための一例では、マップ240の行264および268について考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」の5つのインデックス値と、「3」の3つのインデックス値とを含む。行268は、「1」の3つのインデックス値と、「2」の2つのインデックス値と、「3」の3つのインデックス値とを含む。この例では、ビデオエンコーダ20は、行264の特定のエントリを識別し、その後、行268のためのデータを符号化するときにランを識別し得る(may identify particular entries of row 264 followed by a run when encoding data for row 268)。たとえば、ビデオエンコーダ20は、行268の第1の位置(行268の一番左の位置)が行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20はまた、行268中の走査方向での2つの連続するエントリの次のランが行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。
[0127]いくつかの例では、ビデオエンコーダ20はまた、別の行(または列)中のある位置に対する現在のピクセル値またはインデックス値をコーディングすべきなのか、ランシンタックス要素を使用して現在のピクセル値またはインデックス値をコーディングすべきなのかを決定し得る。(上述の)行264の第1の位置と2つのエントリのランとを示す1つまたは複数のシンタックス要素を符号化した後に、ビデオエンコーダ20は、(左から右に)ライン268中の第4および第5の位置について、第4の位置についての2の値を示す1つまたは複数のシンタックス要素と、1のランを示す1つまたは複数のシンタックス要素とを符号化し得る。したがって、ビデオエンコーダ20は、別のライン(または列)と無関係にこれらの2つの位置を符号化する。ビデオエンコーダ20は、次いで、上の行264に対する(たとえば、上の行264からのコピーと、同じインデックス値を有する、走査順序での連続する位置のランとを示す)行268中の3のインデックス値を有する第1の位置をコーディングし得る。したがって、本開示の態様によれば、ビデオエンコーダ20は、たとえば、ランを使用して、ライン(または列)のピクセルまたはインデックス値をライン(または列)の他の値に対してコーディングすること、ライン(または列)のピクセルまたはインデックス値を別のライン(または列)の値に対してコーディングすること、あるいはそれらの組合せの間で選択し得る。いくつかの例では、ビデオエンコーダ20は、選択を行うためにレート/ひずみ最適化を実行し得る。
[0128]ビデオデコーダ30は、上記で説明されたシンタックス要素を受信し得、行268を再構築し得る。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置についての関連付けられたインデックス値をそこからコピーするための、隣接する行中の特定のロケーションを示すデータを取得し得る。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序での連続する位置の数を示すデータを取得し得る。
[0129]いくつかの事例では、エントリがそこからコピーされるラインは、(図3の例に示されているように)現在コーディングされているラインのエントリに直接隣接し得る。しかしながら、他の例では、マップのいくつかのラインのいずれかが、現在コーディングされているマップのラインのための予測エントリとして使用され得るように、いくつかのラインが、ビデオエンコーダ20および/またはビデオデコーダ30によってバッファされ得る。したがって、いくつかの例では、エントリについてのピクセル値は、現在の行のすぐ上の行(または左の列)、あるいは現在の行の2つ以上上の行(または左の列)の中のエントリのピクセル値に等しくなるようにシグナリングされ得る。
[0130]例示を目的とする例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリの現在の行をコーディングするより前に、エントリの以前のn個の行を記憶するように構成され得る。この例では、ビデオエンコーダ20は、切捨て単項コードまたは他のコードを用いて、ビットストリーム中で予測行(そこからエントリがコピーされる行)を示し得る。別の例では、ビデオエンコーダ20は、現在のラインと、現在のラインをコーディングするために参照として使用されるマップ240の予測ラインとの間の変位値を符号化し得る(および、ビデオデコーダ30はそれを復号し得る)。すなわち、ビデオエンコーダ20は、そこからインデックス値がコピーされる特定のライン(または列)の指示を符号化し得る。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、c[0]、c[1]、...、を、マップ240の現在のラインのインデックスを示すものとし、u[0]、u[1]、u[2]、...、を、上の隣接ラインなど、マップ240の予測ラインのインデックスを示すものとする。この例では、変位ベクトルがdであるとすると、c[i]のためのインデックス値は、dが負の値をとることを避けるために、u[i+d]またはu[i−d]から予測され得る。dの値は、単項コード、切捨て単項コード、指数ゴロムコード、またはゴロム−ライス(Golomb-Rice)コードを使用してコーディングされ得る。
[0131]別の例として、ビデオエンコーダ20は、「上のラインの左半分からコピー」または「上のラインの右半分からコピー」など、現在コーディングされているマップのラインにコピーすべき、隣接ラインと隣接ラインのエントリの数または部分とを示す、命令をシグナリングし得る。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、90度、180度、または270度回転されるか、あるいは上下または左右が反転され得る。
[0132]他の例では、ビデオエンコーダ20は、マップ240の同様の値のインデックス値のランをビデオデコーダ30に送信しないことがある。この場合、ビデオエンコーダ20および/またはビデオデコーダ30はランの値を暗黙的に導出し得る。一例では、ランの値は、定数値、たとえば、4、8、16などであり得る。別の例では、ランの値は、たとえば、ブロックサイズ、量子化パラメータ(QP)、フレームタイプ、色成分、色フォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在のブロックについての他のタイプの特性情報など、コーディングされているビデオデータの現在のブロックのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分(高さの半分)、現在のブロックの幅および/または高さの分数、あるいは現在のブロックの幅および/または高さの倍数に等しくなり得る。別の例では、ビデオエンコーダ20は、VPS、SPS、PPSおよび/またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、ランの値をビデオデコーダ30にシグナリングし得る。
[0133]追加または代替として、ビデオエンコーダ20は、マップ240をビデオデコーダ30に送信することさえ必要ないことがある。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップ240中に含まれるインデックス値の各ランの開始の位置またはロケーションを暗黙的に導出し得る。一例では、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されるビデオコーディング規格は、ランがあるロケーションにおいてのみ開始することができると決定し得る。たとえば、ランは、各行の始端、またはコーディングされている現在ブロックのN行ごとの始端においてのみ開始し得る。開始ロケーションは、異なる走査方向について異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在ブロックのN列ごとの始端においてのみ開始し得る。
[0134]別の例では、開始ロケーションは、たとえば、ブロックサイズ、QP、フレームタイプ、色成分、色フォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在ブロックについての他のタイプの特性情報など、現在ブロックのためのサイド情報に応じて導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、各行および/または各列の中間点、あるいは各行および/または各列の分数(たとえば、1/n、2/n、...(n−1)/n)であり得る。別の例では、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスなど、高レベルのシンタックスを使用して、開始位置をビデオデコーダ30にシグナリングし得る。
[0135]いくつかの例では、各々上記で説明された、暗黙的な開始位置の導出と暗黙的なランの導出とは組み合わせられ得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップの同様の値のインデックス値のランが2つの隣接開始位置の間の距離に等しいと決定し得る。開始位置が現在ブロックの各行の始端(すなわち、最初の位置)である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの長さが現在ブロックの行全体の長さに等しいと決定し得る。
[0136]HEVC SCC拡張のための様々な提案は、現在ブロックのためのパレットを導出するためにパレット予測子を使用するパレットモードを含む。ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているブロックのためのパレットテーブルを決定するより前にパレット予測子を更新し得る。前に使用されたパレット予測子が利用可能でない第1のブロックの場合、ビデオエンコーダ20およびビデオデコーダ30は、それぞれPPSおよびSPS中でシグナリングされるパレット予測子エントリからのこの初期化を有効にするために、2つのフラグ、すなわちpps_palette_predictor_initializer_present_flagおよびsps_palette_predictor_initializer_present_flagを使用して、PPSレベルにおいてまたはSPSレベルにおいてのいずれかでパレット予測子を初期化し得る。PPSパレット予測子およびSPSパレット予測子のサイズは、それぞれ、シンタックス要素pps_num_palette_predictor_initializer_minus1およびsps_num_palette_predictor_initializer_minus1によって定義される。いくつかの提案されたシグナリング機構の下で、PPSまたはSPS中でシグナリングされるパレット予測子の最小サイズは1である。
[0137]パレット予測子が初期化され得る1つの例示的な順序がWD4セクション9.3.2.3に記載されている。
pps_palette_predictor_initializer_present_flagが1に等しい場合、パレット予測子はPPS予測子に基づいて初期化され、
他の場合(pps_palette_predictor_initializer_present_flagが0に等しい)場合、sps_palette_predictor_initializer_present_flagが1に等しい場合、パレット予測子はSPS予測子から初期化され、
他の場合(両方のフラグが0に等しいとき)、パレット予測子サイズは0に設定される。
[0138]上記で説明された初期化ルールからわかるように、sps_palette_predictor_initializer_present_flagが有効にされた場合、ピクチャごとに、パレット予測子サイズを0に設定するためのものである、パレット予測子を無効にするための方法がない。パレット予測子サイズを0に設定するための能力は、SPS中でシグナリングされるパレット予測子が、あるピクチャ中のパレットエントリを予測するのに関係しない場合、望ましいことがあり、PPS中でそれらを送ることは、多くの割合を消費し得る。別の潜在的問題は、PPSパレット予測子とSPSパレット予測子の両方が存在するとき、PPSパレット予測子とSPSパレット予測子とが多くの共通パレットエントリを有し得るので、現在のシグナリングが冗長であり得るということである。
[0139]本開示は、パレット予測子初期化制御に関する様々な技法を導入する。上記で導入された第1の問題に潜在的に対処するために、本開示は、パレット予測子初期化を制御するために使用され得る新しいシンタックス要素palette_predictor_initialization_flagを追加するための技法について説明する。このフラグの値が1に等しいとき、パレット予測子初期化が使用される。他の場合、パレット予測子サイズは0に等しく設定される。このフラグは、VPS、SPS、PPS、スライスヘッダまたはそれの拡張などの任意のパラメータセット中で、あるいは他の場所でシグナリングされ得る。一例では、フラグはPPS中でシグナリングされ得る。そのようなフラグを使用することの潜在的な利点は、SPSパレット予測子初期化子がシグナリングされるとき、フラグがパレット予測子を無効にする(パレット予測子サイズを0に設定する)ための能力を与えるということである。
[0140]2つのパレット初期化子(たとえば、PPS中に1つ、およびSPS中に別の1つ)があり得ると、およびpalette_predictor_initialization_flagが1つのパラメータセット中でのみシグナリングされるとき、ビットストリームコンフォーマンス(bitstream conformance)ルールは、パラメータセットパーシング依存性を回避するために、およびpalette_predictor_initialization_flagが1に等しく設定され、パレット予測子が任意のパラメータセット中でシグナリングされない場合に導入され得る。ビットストリームコンフォーマンス制限は、以下のように表され得る。コンフォーマントビットストリーム(conformant bitstream)は、palette_predictor_initialization_flagが1に等しいとき、1に等しいpps_palette_predictor_initializer_present_flagおよびsps_palette_predictor_initializer_present_flagのうちの少なくとも1つを含んでいるものとする(shall)。このルールは、現在のシンタックス要素がいくつかの他のシンタックス要素によって変更または交換され得るとき、同様の問題を解決するためにも適用可能であり得るので、既存のおよび示唆されたシンタックス要素に制限されるように意図されるものではなく、同様の役割を果たす。
[0141]代替解決策では、ビデオエンコーダ20は、PPS中で0に等しいパレット予測子初期化子をシグナリングすることを可能にされ得る。この場合、サフィックス「minus1」はシンタックス要素pps_num_palette_predictor_initializer_minus1から除去され得る。さらに、セマンティクスは、パレット予測子初期化子サイズが0であり得ることを反映するために変更され得る。したがって、既存の初期化ルールは、PPS中で0パレット予測子を有することを可能にするために変更され得る。そのような場合、PPS中のパレット予測子サイズを0に等しく設定することは、たとえば、0に等しいpps_num_palette_predictor_initializerとともに1に等しいpps_palette_predictor_initializer_present_flagをシグナリングすることによって、SPSパレット予測子初期化子がシグナリングされるときでも、パレット予測子初期化をオフに切り替えるために使用され得る。すなわち、ビデオデコーダ30が、PPS中で、PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを示すpps_num_palette_predictor_initializerについての値を受信する場合、ビデオデコーダ30は、ブロックが関連付けられたSPSが、有効にされたパレット予測子初期化を有するにもかかわらず(even though)、PPSに関連付けられたビデオブロックについて、パレット予測子初期化が無効にされると決定するように構成され得る。
[0142]さらに、新たに導入されたシンタックス要素、pps_num_palette_predictor_initializer値は、初期化子サイズが0に等しいときにそれらのシンタックス要素が必要とされないので、monochrome_palette_flag、luma_bit_depth_entry_minus8、およびchroma_bit_depth_entry_minus8など、パレット予測子初期化子エントリに固有の(specific to)シンタックス要素のための新しいゲーティングフラグとして使用され得る。したがって、PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを示すシンタックス要素pps_num_palette_predictor_initializerに基づいて、ビデオデコーダ30は、シンタックス要素monochrome_palette_flag、luma_bit_depth_entry_minus8、およびchroma_bit_depth_entry_minus8がPPS中に存在しないと決定し得る。
[0143]たとえば、PPSシグナリングは、変更が下線および取消し線を用いて以下に示される場合、以下のように修正され得る。
[0144]シンタックス要素pps_num_palette_predictor_initializerは、ピクチャパレット予測子初期化子中のエントリの数を指定する。pps_num_palette_predictor_initializerのための値が、PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを示すとビデオデコーダ30が決定した場合、ビデオデコーダ30は、パレット予測子初期化がPPSのために無効にされると決定し得る。
[0145]pps_num_palette_predictor_initializerの値が、両端値を含む、0〜PaletteMaxPredictorSizeの範囲内にあることは、ビットストリームコンフォーマンスの要件であり得る。
[0146]シンタックス要素pps_palette_predictor_initializers[comp][i]は、アレイPredictorPaletteEntriesを初期化するために使用されるi番目のパレットエントリのcomp番目の成分の値を指定する。両端値を含む、0〜pps_num_palette_predictor_initializer−1の範囲内のiの値の場合、pps_palette_predictor_initializers[0][i]の値は、両端値を含む、0〜(1<<BitDepthEntryY)−1の範囲内にあるものとし、pps_palette_predictor_initializers[1][i]およびpps_palette_predictor_initializers[2][i]の値は、両端値を含む、0〜(1<<BitDepthEntryC)−1の範囲内にあるものとする。
[0147]初期化ルールは相応に変更され得る。
このプロセスの出力は、初期化されたパレット予測子変数PredictorPaletteSizeおよびPredictorPaletteEntriesである。
変数numCompsは、以下のように導出される。
−pps_palette_predictor_initializer_present_flagが1に等しい場合、以下が適用される。
−PredictorPaletteSizeは、pps_num_palette_predictor_initializerに等しく設定される。
−アレイPredictorPaletteEntriesは、以下のように導出される。
−他の場合(pps_palette_predictor_initializer_present_flagが0に等しい)、sps_palette_predictor_initializer_present_flagが1に等しい場合、以下が適用される。
−PredictorPaletteSizeは、sps_num_palette_predictor_initializer_minus1+1に等しく設定される。
−アレイPredictorPaletteEntriesは、以下のように導出される。
−他の場合(pps_palette_predictor_initializer_present_flagが0に等しく、sps_palette_predictor_initializer_present_flagが0に等しい)、PredictorPaletteSizeは0に等しく設定され、PredictorPaletteSizeは0に等しく設定される。
[0148]本開示はまた、パレット予測子初期化予測に関する技法について説明する。考えられる冗長エントリを用いて上記で紹介された第2の問題を潜在的に解決するために、本開示は、既存の技法ではなく、パレット予測子初期化のためのSPSパレット予測子初期化子とPPSパレット予測子初期化子の両方を使用するための技法について説明し、ただし、一度に1つの予測子のみが使用され得る。したがって、パレット予測子を初期化するときに、ビデオデコーダ30は、SPSレベルパレット予測子初期化子またはPPSレベルパレット予測子初期化子のうちの1つのみではなく、パレット予測子中にSPSレベルパレット予測子初期化子とPPSレベルパレット予測子初期化子の両方を含め得る。
[0149]一例では、パレット予測子は、SPSパレット予測子エントリおよび後続のPPSパレット予測子エントリ、またはその逆を含むことによって初期化され得る。より一般的な手法では、SPSパレット予測子全体を使用する代わりに、再利用されるフラグは、どのエントリがパレット予測子初期化のために使用されることになるかを示すためにエントリごとにシグナリングされ得る。
[0150]SPS初期化子とPPS初期化子の両方が使用されるとき、組み合わせられた初期化子のサイズが最大パレット予測子サイズよりも大きい場合、いくつかのエントリが廃棄されなければならず、この余分のシグナリングに関連付けられたビットが浪費され得るので、SPS初期化子とPPS初期化子とのサイズが合わせて最大パレット予測子サイズよりも小さいかまたはそれに等しいなど、追加の制約が、組み合わせられた初期化子のシグナリングされたサイズの合計に課され得る。別のより単純な代替策では、PPS初期化子サイズおよびSPS初期化子サイズは、最大パレット予測子サイズの半分に上限を定められ得る(can be capped to)。
[0151]例示的な一実装形態では、シンタックス要素pps_palette_predictor_initializer_present_flagが1に等しいとき、SPSパレット予測子中の各エントリについて、そのエントリがパレット予測子を初期化するために使用されるかどうかをシグナリングするために、1つのフラグが送られる。シグナリング方法は、PalettePredictorEntryReuseFlagsをシグナリングするためにWD4のセクション7.3.8.13において使用されているものと同じであり得る。その後、追加のパレット予測子初期化子エントリの数がシグナリングされる。これは値0を取り得る。この後に、実際のPPSパレット予測子エントリが続く。
[0152]SPSとPPSとの間の依存性を回避するために、シンタックス要素pps_palette_predictor_initializer_present_flagが1に等しいとき、sps_palette_initializer_reuseフラグが送られ得る。このフラグの値が1に等しいとき、SPSパレット予測子エントリの数がシグナリングされる。この後に、各SPSパレット予測子エントリのための再利用フラグ、追加のパレット予測子エントリの数、および最終的に、実際のPPSパレット予測子エントリのシグナリングが続く。シグナリングされるSPSパレット予測子エントリの数は、sps_num_palette_predictor_initializer_minus1+1よりも小さいかまたはそれに等しいことがある。たとえば、sps_num_palette_predictor_initializer_minus1が10に等しく、PPS中でシグナリングされるSPSパレット予測子エントリの数が6である場合、再利用フラグは、最初の6つのSPSパレット予測子エントリのためにのみ送られ、最後の4つのSPSパレット予測子エントリは、現在のPPSを指すピクチャのためのパレット予測子初期化において使用されないことがある。
[0153]最後の例に続いて、パレット予測子初期化再利用フラグは、PPSまたはSPSからの少なくとも1つのパレット予測子初期化子、あるいはその両方から構成され得るデフォルトパレット予測子初期化子から、どのエントリが再利用されるかを示すために、スライスヘッダ中でシグナリングされ得る。
[0154]たとえば、SPSパレット予測子初期化子は通常使用されるパレットエントリを含んでいることがあり、PPSパレット予測子初期化子は、ピクチャに固有であり、SPSエントリとは異なるエントリのみを有し得る。PPS初期化子とSPS初期化子の両方からのパレット予測子を初期化することは、WD4設計に反して、すべてのシグナリングされたPPSにわたって同じであり得るPPS中での初期化子エントリの追加のシグナリングを回避し得、ただし、そのような共通エントリは、各PPSパレット予測子初期化子とともに繰り返しシグナリングされる。
[0155]同様にして、パレット予測子初期化子は、以前の送られたPPSおよび/またはSPSから組み合わせられ得る。たとえば、上記で説明されたようにSPSではなく、以前の送られたPPSからの他のパレット予測子エントリがパレット予測子初期化子に追加され得る。一例では、パレット予測子初期化子は、SPS初期化子から1つまたは複数のエントリを継承することの代わりに、またはそれに加えて、前にシグナリングされたPPS初期化子から1つまたは複数のエントリを継承し得る。一例として前にシグナリングされたPPS初期化子に関して上記で説明されたが、本開示の技法はまた、1つまたは複数の前にシグナリングされたSPS初期化子からの1つまたは複数のエントリの継承を有効にし得ることが諒解されよう。たとえば、エントリは、前にシグナリングされたSPS初期化子から、前にシグナリングされたPPS初期化子から、または前にシグナリングされたSPS初期化子と前にシグナリングされたPPS初期化子の両方の組合せから継承され得る。
[0156]別の例では、パレット予測子初期化子は更新されるだけであり得る。たとえば、それは、最初に、第1のシグナリングされたSPS初期化子、PPS初期化子、またはその両方の初期化子から構成され得、このパレット予測子は、新たにシグナリングされたPPSまたはSPSのエントリをパレット予測子初期化子に挿入することによって更新され得る。エントリは、パレット予測子初期化子の始端に、終端において、または基本的に任意のロケーションにおいて挿入され得る。挿入する間に予測子サイズを超えるエントリは、無視され得る。たとえば、そのような更新が初期化子が予測子サイズ限界を超えることを引き起こした場合、サイズ限界を満たした後に処理される更新されたエントリは、無視、廃棄、または除外され得る。
[0157]説明される手法の1つの特定の例では、パレット予測子初期化子は、SPS、またはPPS、またはその両方のセットからの新たにシグナリングされたエントリ+新しいエントリに続く前のパレット予測子初期化子の古いエントリを含んでいることがある。
[0158]本開示はまた、スケーリングリスト更新に関する技法について説明する。組み合わせられたパレット予測子初期化子の同様のアイデアは、変換のためのスケーリングリストまたは量子化行列に適用され得る。シグナリングされるSPSスケーリングリストおよびPPSスケーリングリストがあり得、PPSリストまたはSPSリストのいずれかのみを使用するのではなく、特定のピクチャのために使用されるスケーリングリストは、PPS中でシグナリングされるリストによって更新または付加されるSPSスケーリングリストから構成され得る。たとえば、4×4、8×8、16×16、および32×32変換サイズのためのスケーリングリストがSPS中でシグナリングされることについて考える。PPSは、あるスケーリングリストのみ、たとえば、8×8および16×16変換サイズに関連付けられたスケーリングリストをシグナリングし得る。次いで、ピクチャのために使用される最終スケーリングリストは、以下のようになり得る。SPSからの4×4、PPSからの8×8、PPSからの16×16、およびSPSからの32×32。
[0159]別の例では、SPSスケーリングリストは、たとえば、変換深度またはサイズがPPSにおいて定義されているとき、セット全体を含んでいるとは限らない。この場合、SPSは、基本または共通スケーリングリストのみを有し、必ずしもPPSと重複されるとは限らず、ピクチャのための特定のスケーリングリストはPPS中でシグナリングされ得、SPSスケーリングリストとPPSスケーリングリストとの後で組み合わせられたセットは、ピクチャのために使用される。
[0160]図4は、本開示で説明される技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベース圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベース圧縮モードのいずれかを指すことがある。
[0161]図4の例では、ビデオエンコーダ20は、ビデオデータメモリ33と、区分ユニット35と、予測処理ユニット41と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、パレットベース符号化ユニット42と、インター予測処理ユニット44と、イントラ予測ユニット46とを含む。ビデオブロック再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62と、フィルタユニット64と、復号ピクチャバッファ(DPB:decoded picture buffer)66とを含む。
[0162]図4に示されているように、ビデオエンコーダ20はビデオデータを受信し、ビデオデータをビデオデータメモリ33に記憶する。ビデオデータメモリ33は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ33に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。DPB66は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ33およびDPB66は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ33およびDPB66は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ33は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0163]区分ユニット35はビデオデータメモリ33からビデオデータを取り出し、ビデオデータをビデオブロックに区分する。この区分はまた、たとえば、LCUおよびCUの4分木構造に従って、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分を含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤差結果(たとえばコーディングレートおよびひずみレベル)に基づいて現在ビデオブロックについて、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構築するために加算器62に与え得る。
[0164]予測ユニット41内のイントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して現在ビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内のインター予測処理ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在ビデオブロックのインター予測コーディングを実行する。
[0165]インター予測処理ユニット44は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスとして指定し得る。インター予測処理ユニット44によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。
[0166]予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、DPB66に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、インター予測処理ユニット44は、全ピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度をもつ動きベクトルを出力し得る。
[0167]インター予測処理ユニット44は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、DPB66に記憶された1つまたは複数の参照ピクチャを識別する。インター予測処理ユニット44は、計算された動きベクトルをエントロピー符号化ユニット56に送る。
[0168]インター予測処理ユニット44によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実行することを伴い得る。現在ビデオブロックのPUのための動きベクトルを決定すると、インター予測処理ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。インター予測処理ユニット44はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
[0169]予測処理ユニット41は、本開示で説明されるパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース符号化ユニット42をも含む。パレットベース符号化ユニット42は、たとえば、パレットベース符号化モードが、たとえば、CUまたはPUなどのブロックのために選択されるとき、パレットベース復号を実行し得る。たとえば、パレットベース符号化ユニット42は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能が、パレットベース符号化ユニット42によって実行されるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0170]パレットベース符号化ユニット42は、本明細書で説明される様々なシンタックス要素のいずれかを生成するように構成され得る。したがって、ビデオエンコーダ20は、本開示で説明されるパレットベースコードモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化するか、または、たとえば、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードなど、異なるモードを使用してビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであり得る。ビデオエンコーダ20は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードを用いていくつかのブロックを符号化し、パレットベースコーディングモードを用いて他のブロックを復号し得る。
[0171]予測処理ユニット41が、イントラ予測、インター予測、またはパレットモードコーディングのいずれかを介して、現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。しかしながら、いくつかのコーディングモードの場合、ビデオエンコーダ20は残差ブロックを符号化しないことがある。生成されたとき、残差ブロック中の残差ビデオデータは、1つまたは複数のTU中に含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT:discrete cosine transform)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0172]変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[0173]量子化の後に、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングあるいは別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームはビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在ビデオスライスのための動きベクトルと、上記で説明された様々なパレットモードシンタックス要素を含む、他のシンタックス要素とをエントロピー符号化し得る。
[0174]逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。インター予測処理ユニット44は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。インター予測処理ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、再構築されたブロックを生成するために、再構築された残差ブロックを、インター予測処理ユニット44によって生成された動き補償予測ブロックに加算する。
[0175]フィルタユニット64は、再構築されたブロック(たとえば、加算器62の出力)をフィルタ処理し、参照ブロックとして使用するために、フィルタ処理された再構築されたブロックをDPB66に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、インター予測処理ユニット44によって参照ブロックとして使用され得る。フィルタユニット64は、デブロッキングフィルタ処理、サンプル適応オフセット(SAO:sample adaptive offset)フィルタ処理、適応ループフィルタ処理(ALF:adaptive loop filtering)、または他のタイプのループフィルタ処理のうちの1つまたは複数を適用し得る。フィルタユニット64は、再構築されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタ処理するデブロッキングフィルタ処理を適用し得、コーディング品質全体を改善するために他のタイプのフィルタ処理を適用し得る。(ループ中またはループ後の)追加のループフィルタも使用され得る。
[0176]図5は、本開示で説明される技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図5の例では、ビデオデコーダ30は、ビデオデータメモリ78と、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、DPB94とを含む。予測処理ユニット81は、パレットベース復号ユニット82と、動き補償ユニット(MCU)83と、イントラ予測ユニット84とを含む。ビデオデコーダ30は、いくつかの例では、図4からのビデオエンコーダ20に関して説明された符号化パスに概して相反する(reciprocal to)復号パスを実行し得る。
[0177]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30は、受信された符号化ビデオビットストリームをビデオデータメモリ78に記憶する。ビデオデータメモリ78は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ78に記憶されたビデオデータは、たとえば、リンク16を介して、ストレージデバイス26から、またはカメラなどのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ78は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。DPB94は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ78およびDPB94は、DRAM、SDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ78およびDPB94は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ78は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0178]ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数、動きベクトル、および他のシンタックス要素を生成するために、ビデオデータメモリ78に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット80は、動きベクトルと、上記で説明された様々なパレットモードシンタックス要素を含む他のシンタックス要素とを予測処理ユニット81にフォワーディングする。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルのシンタックス要素を受信し得る。
[0179]ビデオスライスがイントラコード化(I)スライスとしてコーディングされたとき、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット83は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、DPB94に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構築し得る。
[0180]動き補償ユニット83は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット83は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
[0181]動き補償ユニット83はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット83は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット83は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
[0182]逆量子化ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された量子化変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0183]本開示の様々な例によれば、ビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。パレットベース復号ユニット82は、たとえば、パレットベース復号モードが、CUまたはPUなどのブロックのために選択されるとき、パレットベース復号を実行し得る。たとえば、パレットベース復号ユニット82は、ピクセル値を示すエントリを有するパレットを生成するように構成され得る。さらに、この例では、パレットベース復号ユニット82は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリに関連付ける情報を受信し得る。この例では、パレットベース復号ユニット82は、その情報に基づいてパレット中のピクセル値を選択し得る。さらに、この例では、パレットベース復号ユニット82は、選択されたピクセル値に基づいてブロックのピクセル値を再構築し得る。様々な機能が、パレットベース復号ユニット82によって実行されるものとして説明されたが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0184]パレットベース復号ユニット82は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット82は、たとえば、HEVCインター予測またはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであり得る。ビデオデコーダ30は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードを用いていくつかのブロックを復号し、パレットベースコーディングモードを用いて他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの1つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
[0185]予測処理ユニットが、たとえば、イントラまたはインター予測を使用して現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット83によって生成された対応する予測ブロックと加算することによって、再構築されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。フィルタユニット92は、たとえば、デブロッキングフィルタ処理、SAOフィルタ処理、ALFフィルタ処理または他のタイプのフィルタ処理のうちの1つまたは複数を使用して、再構築されたビデオブロックをフィルタ処理する。ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために、(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタも使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶するDPB94に記憶される。DPB94は、図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために復号ビデオを記憶する追加メモリの一部であるか、または追加メモリとは別個であり得る。
[0186]ビデオデコーダ30は、たとえば、シンタックス要素を受信し、シンタックス要素に従ってパレット予測子初期化プロセスを実行するように構成され得る。シンタックス要素の第1の値は、たとえば、パレット予測子初期化が使用されることを示し得、シンタックス要素の第2の値は、パレット予測子サイズが0に等しく設定されることを示す。シンタックス要素は、たとえば、SPSまたはPPS中でシグナリングされ得る。
[0187]追加または代替として、ビデオデコーダ30は、PPS中で、第1のパレット予測子初期化子シンタックス要素を受信し、SPS中で、第2のパレット予測子初期化子シンタックス要素を受信するように構成され得る。第1のパレット予測子初期化子シンタックス要素と第2のパレット予測子初期化子シンタックス要素とに基づいて、ビデオデコーダ30はパレット予測子を生成し得る。パレット予測子を生成するために、ビデオデコーダ30は、パレット予測子中に、SPS中で識別されたパレットエントリ、およびPPS中で識別された後続のパレットエントリを含むか、またはその逆の順序で含み得る。パレット予測子を生成するために、ビデオデコーダ30は、追加または代替として、パレット予測子のエントリごとに1つまたは複数の再利用フラグを受信し得る。
[0188]追加または代替として、ビデオデコーダ30は、PPS中で第1のスケーリングリストを受信し、SPS中で第2のスケーリングリストを受信するように構成され得る。第1のスケーリングリストと第2のスケーリングリストとに基づいて、ビデオデコーダ30はピクチャのためのスケーリングリストを生成し得る。
[0189]追加または代替として、ビデオデコーダ30は、第1のパラメータセット中で、パレット予測子初期化子エントリの第1のセットを受信するように構成され得る。第1のパラメータセットを受信した後に(Subsequent to)、ビデオデコーダ30は、第2のパラメータセット中で、パレット予測子初期化子エントリの第2のセットを受信し得る。ビデオデコーダ30は、パレット予測子初期化子エントリの第1のセットの少なくとも一部分を使用してパレット予測子初期化を実行し得る。パレット予測子初期化を実行するために、ビデオデコーダ30は、たとえば、パレット予測子初期化子エントリの第1のセットの上記部分(the portion of)に加えて、パレット予測子初期化子エントリの第2のセットの少なくとも一部分を使用し得る。いくつかの例では、第1のパラメータセットはPPSであり得、第2のパラメータセットはSPSであり得る。
[0190]追加または代替として、ビデオデコーダ30はまた、パレット予測子初期化子エントリの第1のセットの上記部分を使用してパレット予測子初期化子を形成し、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子エントリの第2のセットの上記部分をパレット予測子初期化子に追加するように構成され得る。更新されたパレット予測子初期化子を形成するために、パレット予測子初期化子エントリの第2のセットの上記部分をパレット予測子初期化子に追加するために、ビデオデコーダ30は、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子の始端においてパレット予測子初期化子エントリの第2のセットの上記部分を追加するように構成され得る。
[0191]更新されたパレット予測子初期化子が備えるを形成するために、パレット予測子初期化子エントリの第2のセットの上記部分をパレット予測子初期化子に追加するために、ビデオデコーダ30は、更新されたパレット予測子初期化子を形成するためにパレット予測子初期化子の終端においてパレット予測子初期化子エントリの第2のセットの上記部分を追加するように構成され得る。ビデオデコーダ30はまた、パレット予測子エントリの第2のセットの上記部分の全体を追加することが初期化子サイズ限界を超えると決定し、決定に基づいて、更新されたパレット予測子初期化子から、パレット予測子エントリの第2のセットの上記部分の1つまたは複数のエントリを除外するように構成され得る。更新されたパレット予測子初期化子は、パレット予測子エントリの第1のセットの上記部分のサブ部分と、パレット予測子エントリの第2のセットの上記部分のサブ部分の両方を含み得る。
[0192]図6は、本開示の技法による、ビデオエンコーダの例示的な動作を示すフローチャートである。図6のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図6で説明される動作は、上記で説明されたビデオエンコーダ20などのビデオエンコーダによって実行され得るが、図6の動作はビデオエンコーダの任意の特定のタイプに限定されない。
[0193]図6の例では、ビデオエンコーダはビデオデータを符号化する。ビデオエンコーダは、符号化ビデオデータのビットストリーム中のSPSシンタックス構造中に含めるために、第1のシンタックス要素を生成する(100)。第1のシンタックス要素は、たとえば、パレット予測子初期化が有効にされることを示すsps_palette_predictor_initializer_present_flagなどの1ビットフラグであり得る。ビデオエンコーダは、SPSシンタックス構造中に含めるために、1つまたは複数のSPSレベルパレット予測子初期化子を生成する(102)。ビデオエンコーダは、符号化ビデオデータのビットストリーム中のPPSシンタックス構造中に含めるために、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第2のシンタックス要素を生成する(104)。第2のシンタックス要素は、たとえば、上記で説明されたpps_palette_predictor_initializer_present_flagなどの1ビットフラグであり得る。第2のシンタックス要素は、パレット予測子がSPSレベルパレット予測子初期化子のいずれをも使用せずに生成されるべきであることをさらに示し得る。ビデオエンコーダは、PPSシンタックス構造中に含めるために、PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを示す第3のシンタックス要素を生成する(106)。第3のシンタックス要素は、たとえば、上記で説明されたpps_num_palette_predictor_initializerシンタックス要素であり得る。ビデオエンコーダはまた、SPSシンタックス構造中に含めるために、SPS中に含まれるSPSレベルパレット予測子初期化子の数を示す第4のシンタックス要素を生成する。第4のシンタックス要素は、たとえば、上記で説明されたシンタックス要素sps_num_palette_predictor_initializer_minus1であり得る。
[0194]図7は、本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。図7のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図7で説明される動作は、上記で説明されたビデオデコーダ30などのビデオデコーダによって実行され得るが、図7の動作はビデオデコーダの特定のタイプに限定されない。
[0195]図7の例では、ビデオデコーダはビデオデータを復号する。ビデオデコーダは、SPS中で、パレット予測子初期化が有効にされることを示す第1のシンタックス要素を受信する(120)。第1のシンタックス要素は、たとえば、上記で説明されたシンタックス要素sps_palette_predictor_initializer_present_flagなどの1ビットフラグであり得る。ビデオデコーダは、SPS中で、1つまたは複数のSPSレベルパレット予測子初期化子を受信する(122)。ビデオデコーダは、PPS中で、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第2のシンタックス要素を受信する(124)。第2のシンタックス要素は、たとえば、上記で説明されたシンタックス要素pps_palette_predictor_initializer_present_flagなどの1ビットフラグであり得る。第2のシンタックス要素は、パレット予測子がSPSレベルパレット予測子初期化子のいずれをも使用せずに生成されるべきであることをさらに示し得る。ビデオデコーダは、PPS中で、PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを示す第3のシンタックス要素を受信する(126)。第3のシンタックス要素は、たとえば、上記で説明されたシンタックス要素pps_num_palette_predictor_initializerであり得る。
[0196]PPS中に含まれるPPSレベルパレット予測子初期化子の数が0に等しいことを第3のシンタックス要素が示すときにパレットテーブルを生成するために、ビデオデコーダは1つまたは複数のパレットテーブルエントリ値を受信し、パレットテーブル中に1つまたは複数の受信されたパレットテーブルエントリ値を含めることによって、パレットテーブルを生成し得る。したがって、パレットテーブルのためのエントリの一部または全部を決定するためにパレット予測子を使用してパレットを生成するのではなく、ビデオデコーダは、パレットテーブルのためのすべてのパレットエントリを直接受信する。ビデオデータのブロックのサンプルの場合、ビデオデコーダはインデックスを受信し、サンプルのためのインデックスに対応するパレットテーブルエントリを使用してビデオデータのブロックを再構築する。
[0197]図8は、本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。図8のフローチャートは、一例として与えられる。他の例では、フローチャートは、より多数の、より少数の、または異なるステップを含み得る。図8で説明される動作は、上記で説明されたビデオデコーダ30などのビデオデコーダによって実行され得るが、図8の動作はビデオデコーダの特定のタイプに限定されない。
[0198]図8の例では、ビデオデコーダはビデオデータを復号する。ビデオデコーダは、SPS中で第1のパレット予測子初期化データを受信する(140)。第1のパレット予測子初期化データに基づいて、ビデオデコーダはSPSパレット予測子初期化子を決定する(142)。ビデオデコーダは、PPS中で第2のパレット予測子初期化データを受信する(144)。第2のパレット予測子初期化データに基づいて、ビデオデコーダはPPSパレット予測子初期化子を決定する(146)。ビデオデコーダは、SPSパレット予測子初期化子とPPSパレット予測子初期化子とに基づいてパレット予測子を生成する(148)。パレット予測子を生成するために、ビデオデコーダは、たとえば、パレット予測子中に少なくとも1つのPPSパレット予測子エントリを含め、パレット予測子中に少なくとも1つのSPSパレット予測子エントリを含め得る。
[0199]ビデオデコーダはまた、ビデオデータのブロックのために使用されるべきパレットとパレット予測子との間の差分を示す残差データを受信し得る。したがって、パレット予測子と残差データとに基づいて、ビデオデコーダは、ビデオデータのブロックのために使用されるべきパレットを決定することができる。
[0200]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0201]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0202]命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0203]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0204]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、前記方法は、
ピクチャパラメータセット(PPS)中で、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第1のシンタックス要素を受信することと、
前記PPS中で、前記PPS中に含まれる前記PPSレベルパレット予測子初期化子の数が0に等しいことを示す第2のシンタックス要素を受信することと、
前記第1のシンタックス要素と前記第2のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を備える、方法。
[C2]
シーケンスパラメータセット(SPS)中で、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を受信することと、
前記SPS中で、1つまたは複数のSPSレベルパレット予測子初期化子を受信することと
をさらに備える、C1に記載の方法。
[C3]
前記SPS中で、前記SPS中に含まれるSPSレベルパレット予測子初期化子の数を示す第4のシンタックス要素を受信すること
をさらに備える、C2に記載の方法。
[C4]
前記第1のシンタックス要素は、前記パレット予測子がSPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C2に記載の方法。
[C5]
前記第3のシンタックス要素が1ビットフラグを備える、C2に記載の方法。
[C6]
前記第1のシンタックス要素が1ビットフラグを備える、C1に記載の方法。
[C7]
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに応答して、1つまたは複数のパレットテーブルエントリ値を受信することと、
前記1つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
をさらに備える、C1に記載の方法。
[C8]
ビデオデータの前記ブロックのサンプルのために、インデックスを受信することと、 前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの1つを使用してビデオデータの前記ブロックを再構築することと
をさらに備える、C7に記載の方法。
[C9]
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに基づいて、(1)パレット予測子がモノクロームエントリを含むかどうかの指示、(2)ルーマパレット予測子エントリのためのビット深度の指示、または(3)クロマパレット予測子エントリのためのビット深度の指示のうちの1つまたは複数が前記PPS中に存在しないと決定すること
をさらに備える、C1に記載の方法。
[C10]
ビデオデータを符号化する方法であって、前記方法は、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット(PPS)シンタックス構造中に含めるために、パレット予測子がPPSレベルパレット予測子エントリを使用して生成されるべきであることを示す第1のシンタックス要素を生成することと、 前記PPSシンタックス構造中に含めるために、前記PPS中に含まれるPPSレベルパレット予測子エントリの数が0に等しいことを示す第2のシンタックス要素を生成することと、
前記第1のシンタックス要素と前記第2のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することと
を備える、方法。
[C11]
符号化ビデオデータのビットストリーム中のシーケンスパラメータセット(SPS)シンタックス構造中に含めるために、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を生成することと、
前記SPSシンタックス構造中に含めるために、1つまたは複数のSPSレベルパレット予測子エントリを生成することと
をさらに備える、C10に記載の方法。
[C12]
前記第1のシンタックス要素は、前記パレット予測子が前記SPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C11に記載の方法。
[C13]
前記SPSシンタックス構造中に含めるために、前記SPS中に含まれるSPSレベルパレット予測子エントリの数を示す第4のシンタックス要素を生成すること
をさらに備える、C11に記載の方法。
[C14]
前記第3のシンタックス要素が1ビットフラグを備える、C11に記載の方法。
[C15]
前記第1のシンタックス要素が1ビットフラグを備える、C10に記載の方法。
[C16]
ビデオデータを復号するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
ピクチャパラメータセット(PPS)中で、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第1のシンタックス要素を受信することと、
前記PPS中で、前記PPS中に含まれる前記PPSレベルパレット予測子初期化子の数が0に等しいことを示す第2のシンタックス要素を受信することと、
前記第1のシンタックス要素と前記第2のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を行うように構成された、デバイス。
[C17]
前記1つまたは複数のプロセッサは、
シーケンスパラメータセット(SPS)中で、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を受信することと、
前記SPS中で、1つまたは複数のSPSレベルパレット予測子初期化子を受信することと
を行うようにさらに構成された、C16に記載のデバイス。
[C18]
前記1つまたは複数のプロセッサが、
前記SPS中で、前記SPS中に含まれるSPSレベルパレット予測子初期化子の数を示す第4のシンタックス要素を受信する
ようにさらに構成された、C17に記載のデバイス。
[C19]
前記第1のシンタックス要素は、前記パレット予測子が前記SPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C17に記載のデバイス。
[C20]
前記第3のシンタックス要素が1ビットフラグを備える、C17に記載のデバイス。
[C21]
前記第1のシンタックス要素が1ビットフラグを備える、C16に記載のデバイス。
[C22]
前記1つまたは複数のプロセッサは、
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに応答して、1つまたは複数のパレットテーブルエントリ値を受信することと、
前記1つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
を行うようにさらに構成された、C16に記載のデバイス。
[C23]
前記1つまたは複数のプロセッサが、
ビデオデータの前記ブロックのサンプルのために、インデックスを受信することと、 前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの1つを使用してビデオデータの前記ブロックを再構築することと
を行うようにさらに構成された、C22に記載のデバイス。
[C24]
前記1つまたは複数のプロセッサは、
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに基づいて、(1)パレット予測子がモノクロームエントリを含むかどうかの指示、(2)ルーマパレット予測子エントリのためのビット深度の指示、または(3)クロマパレット予測子エントリのためのビット深度の指示のうちの1つまたは複数が前記PPS中に存在しないと決定する
ようにさらに構成された、C16に記載のデバイス。
[C25]
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
符号化ビデオデータのビットストリーム中のピクチャパラメータセット(PPS)シンタックス構造中に含めるために、パレット予測子がPPSレベルパレット予測子エントリを使用して生成されるべきであることを示す第1のシンタックス要素を生成することと、
前記PPSシンタックス構造中に含めるために、前記PPS中に含まれるPPSレベルパレット予測子エントリの数が0に等しいことを示す第2のシンタックス要素を生成することと、
前記第1のシンタックス要素と前記第2のシンタックス要素とを含む符号化ビデオデータのビットストリームを出力することと
を行うように構成された、デバイス。
[C26]
前記1つまたは複数のプロセッサは、
符号化ビデオデータのビットストリーム中のシーケンスパラメータセット(SPS)シンタックス構造中に含めるために、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を生成することと、
前記SPSシンタックス構造中に含めるために、1つまたは複数のSPSレベルパレット予測子エントリを生成することと
を行うようにさらに構成された、C25に記載のデバイス。
[C27]
前記第1のシンタックス要素は、前記パレット予測子が前記SPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C26に記載のデバイス。
[C28]
前記SPSシンタックス構造中に含めるために、前記SPS中に含まれるSPSレベルパレット予測子エントリの数を示す第4のシンタックス要素を生成する
をさらに備える、C26に記載のデバイス。
[C29]
前記第3のシンタックス要素が1ビットフラグを備える、C26に記載のデバイス。
[C30]
前記第1のシンタックス要素が1ビットフラグを備える、C25に記載のデバイス。
[C31]
ビデオデータを復号するための装置であって、前記装置は、
ピクチャパラメータセット(PPS)中で、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第1のシンタックス要素を受信するための手段と、
前記PPS中で、前記PPS中に含まれる前記PPSレベルパレット予測子初期化子の数が0に等しいことを示す第2のシンタックス要素を受信する手段と、
前記第1のシンタックス要素と前記第2のシンタックス要素とに基づいてビデオデータのブロックを復号する手段と
を備える、装置。
[C32]
シーケンスパラメータセット(SPS)中で、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を受信する手段と、
前記SPS中で、1つまたは複数のSPSレベルパレット予測子初期化子を受信する手段と
をさらに備える、C31に記載の装置。
[C33]
前記SPS中で、前記SPS中に含まれるSPSレベルパレット予測子初期化子の数を示す第4のシンタックス要素を受信する手段
をさらに備える、C32に記載の装置。
[C34]
前記第1のシンタックス要素は、前記パレット予測子がSPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C32に記載の装置。
[C35]
前記第3のシンタックス要素が1ビットフラグを備える、C32に記載の装置。
[C36]
前記第1のシンタックス要素が1ビットフラグを備える、C31に記載の装置。
[C37]
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに応答して、1つまたは複数のパレットテーブルエントリ値を受信する手段と、
前記1つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成する手段と
をさらに備える、C31に記載の装置。
[C38]
ビデオデータの前記ブロックのサンプルのためのインデックスを受信する手段と、
前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの1つを使用してビデオデータの前記ブロックを再構築する手段と
をさらに備える、C37に記載の装置。
[C39]
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに基づいて、(1)パレット予測子がモノクロームエントリを含むかどうかの指示、(2)ルーマパレット予測子エントリのためのビット深度の指示、または(3)クロマパレット予測子エントリのためのビット深度の指示のうちの1つまたは複数が前記PPS中に存在しないと決定するための手段
をさらに備える、C31に記載の装置。
[C40]
1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
ピクチャパラメータセット(PPS)中で、パレット予測子がPPSレベルパレット予測子初期化子を使用して生成されるべきであることを示す第1のシンタックス要素を受信することと、
前記PPS中で、前記PPS中に含まれる前記PPSレベルパレット予測子初期化子の数が0に等しいことを示す第2のシンタックス要素を受信することと、
前記第1のシンタックス要素と前記第2のシンタックス要素とに基づいてビデオデータのブロックを復号することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
[C41]
実行されたとき、前記1つまたは複数のプロセッサに、
シーケンスパラメータセット(SPS)中で、パレット予測子初期化が有効にされることを示す第3のシンタックス要素を受信することと、
前記SPS中で、1つまたは複数のSPSレベルパレット予測子初期化子を受信することと
を行わせる命令をさらに記憶する、C40に記載のコンピュータ可読記憶媒体。
[C42]
実行されたとき、前記1つまたは複数のプロセッサに、
前記SPS中で、前記SPS中に含まれるSPSレベルパレット予測子初期化子の数を示す第4のシンタックス要素を受信すること
を行わせる命令をさらに記憶する、C41に記載のコンピュータ可読記憶媒体。
[C43]
前記第1のシンタックス要素は、前記パレット予測子がSPSレベルパレット予測子エントリのいずれをも使用せずに生成されるべきであることをさらに示す、C41に記載のコンピュータ可読記憶媒体。
[C44]
前記第3のシンタックス要素が1ビットフラグを備える、C41に記載のコンピュータ可読記憶媒体。
[C45]
前記第1のシンタックス要素が1ビットフラグを備える、C40に記載のコンピュータ可読記憶媒体。
[C46]
実行されたとき、前記1つまたは複数のプロセッサに、
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに応答して、1つまたは複数のパレットテーブルエントリ値を受信することと、
前記1つまたは複数のパレットテーブルエントリ値を含むパレットテーブルを生成することと
を行わせる命令をさらに記憶する、C40に記載のコンピュータ可読記憶媒体。
[C47]
ビデオデータの前記ブロックのサンプルのために、インデックスを受信すると、
前記サンプルのための前記インデックスに対応する前記パレットテーブルエントリのうちの1つを使用してビデオデータの前記ブロックを再構築すると
をさらに備える、C46に記載のコンピュータ可読記憶媒体。
[C48]
前記第2のシンタックス要素が、前記PPS中に含まれるPPSレベルパレット予測子初期化子の前記数が0に等しいことを示すことに基づいて、(1)パレット予測子がモノクロームエントリを含むかどうかの指示、(2)ルーマパレット予測子エントリのためのビット深度の指示、または(3)クロマパレット予測子エントリのためのビット深度の指示のうちの1つまたは複数が前記PPS中に存在しないと決定する
をさらに備える、C40に記載のコンピュータ可読記憶媒体。