[0025]本開示は、ビデオコード化及び圧縮のための技法を含む。具体的には、本開示は、ビデオデータのパレットベースのコード化のための技法を説明する。従来のビデオコード化では、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
[0026]しかしながら、リモートデスクトップ、協調作業、及びワイヤレス表示のような用途では、コンピュータにより生成されたスクリーンコンテンツ(例えば、テキスト又はコンピュータグラフィックスのような)は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調及び滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコード化技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
[0027]本開示は、スクリーンにより生成されたコンテンツのコード化に特に好適であり得る、パレットベースのコード化を説明する。例えば、ビデオデータのある特定の領域が、比較的少数の色を有すると仮定する。ビデオコーダ(ビデオエンコーダ又はビデオデコーダ)は、特定の領域(例えば、所与のブロック)のビデオデータを表すための色のテーブルとして、所謂「パレット」を形成することができる。各画素は、画素の色を表すパレット中のエントリーと関連付けられ得る。例えば、ビデオコーダは、画素値をパレット中の適切な値に関連付けるインデックスをコード化することができる。
[0028]上の例では、ビデオエンコーダは、ブロックのためのパレットを決定すること(例えば、パレットを明示的にコード化すること、パレットを予測すること、又はこれらの組合せ)、各画素の値を表すためのパレット中のエントリーを位置特定すること、及び、画素値をパレットに関連付ける画素のインデックス値によってブロックを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、更にはブロックの画素のインデックス値とを取得することができる。ビデオデコーダは、ブロックの画素値を再構成するために、画素のインデックス値をパレットのエントリーに関連付けることができる。
[0029]上の例は、パレットベースのコード化の全般的な説明を与えることが意図されている。様々な例では、本開示で説明される技法は、パレットベースのコード化モードを信号伝達すること、パレットを送信すること、パレットを予測すること、パレットを導出すること、及び、パレットベースのコード化マップと他のシンタックス要素とを送信することの、1つ又は複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコード化の効率を改善することができ、例えば、スクリーンにより生成されたコンテンツを表すためにより少数のビットしか必要としない。
[0030]ビデオデータのパレットベースのコード化のための技法は、インター予測コード化又はイントラ予測コード化のための技法のような、1つ又は複数の他のコード化技法とともに使用され得る。例えば、下でより詳細に説明されるように、エンコーダ又はデコーダ、又は組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コード化及びイントラ予測コード化と、更にはパレットベースのコード化とを実行するように構成され得る。
[0031]幾つかの例では、パレットベースのコード化技法は、1つ又は複数のビデオコード化規格とともに使用するために構成され得る。例えば、High Efficiency Video Coding(HEVC)は、ITU−T Video Coding Experts Group(VCEG)及びISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって開発された新しいビデオコード化規格である。最近のHEVCテキスト仕様ドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v13.zip.から利用可能である、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)」、JCVC−L1003_v13、ITU−T SG16 WP 3及びISO/IEC JCT 1/SC 29/WG 11のJCT−VCの第12回会合、2013年1月14〜23日(“HEVC Draft 10”)に記載されている。
[0032]HEVCフレームワークに関して、例として、パレットベースのコード化技法は、コード化単位(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコード化技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。従って、CUモードの状況において説明される以下の開示されるプロセスの全てが、追加で、又は代替的に、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコード化技法の制約又は制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、又はそれらの一部として機能するように適用され得るからである。これらの場合、パレットコード化のためのユニットは、正方形のブロック、長方形のブロック、又は非長方形の領域であってもよい。
[0033]図1は、本開示の技法を利用し得る例示的なビデオコード化システム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコード化(video coding)」又は「コード化(coding)」という用語は、ビデオ符号化(video encoding)又はビデオ復号(video decoding)を総称的に指し得る。ビデオコード化システム10のビデオエンコーダ20及びビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオエンコーダ20及びビデオデコーダ30は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、HEVCコード化におけるCU又はPUのような、ビデオデータの様々なブロックを選択的にコード化するように構成され得る。非パレットベースのコード化モードは、HEVCドラフト10によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。
[0034]図1に示されるように、ビデオコード化システム10は、発信源機器12と宛先機器14とを含む。発信源機器12は、符号化されたビデオデータを生成する。従って、発信源機器12は、ビデオ符号化機器又はビデオ符号化装置と呼ばれ得る。宛先機器14は、発信源機器12によって生成された符号化されたビデオデータを復号することができる。従って、宛先機器14は、ビデオ復号機器又はビデオ復号装置と呼ばれ得る。発信源機器12及び宛先機器14は、ビデオコード化機器又はビデオコード化装置の例であり得る。
[0035]発信源機器12及び宛先機器14は、デスクトップコンピュータ、モバイルコンピューティング機器、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、所謂「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲の機器を備え得る。
[0036]宛先機器14は、チャネル16を介して発信源機器12から符号化されたビデオデータを受信することができる。チャネル16は、発信源機器12から宛先機器14に符号化されたビデオデータを移動することが可能な1つ又は複数の媒体又は機器を備え得る。一例では、チャネル16は、発信源機器12が符号化されたビデオデータを宛先機器14にリアルタイムで直接送信することを可能にする1つ又は複数の通信媒体を備え得る。この例では、発信源機器12は、ワイヤレス通信プロトコルのような通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先機器14に送信することができる。1つ又は複数の通信媒体は、高周波(RF)スペクトル又は1つ以上の物理伝送線路のような、ワイヤレス及び/又は有線の通信媒体を含み得る。1つ又は複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はグローバルネットワーク(例えば、インターネット)のような、パケットベースネットワークの一部を形成し得る。1つ又は複数の通信媒体は、発信源機器12から宛先機器14への通信を容易にする、ルータ、スイッチ、基地局、又は他の機器を含み得る。
[0037]別の例では、チャネル16は、発信源機器12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先機器14は、ディスクアクセス又はカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、又は符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体のような、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
[0038]更なる例では、チャネル16は、発信源機器12によって生成された符号化されたビデオデータを記憶する、ファイルサーバ又は別の中間記憶装置を含み得る。この例では、宛先機器14は、ストリーミング又はダウンロードを介して、ファイルサーバ又は他の中間記憶装置に記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先機器14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続記憶(NAS)装置、及びローカルディスクドライブを含む。
[0039]宛先機器14は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、有線接続(例えば、DSL、ケーブルモデムなど)、又はその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又は両方の組合せであり得る。
[0040]本開示の技法は、ワイヤレスの用途又は設定に限定されない。本技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、又は他の用途などの様々なマルチメディア用途をサポートするビデオコード化に適用され得る。幾つかの例では、ビデオコード化システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、及び/又はビデオ電話などの用途をサポートするために、単方向又は双方向のビデオ送信をサポートするように構成され得る。
[0041]図1は例にすぎず、本開示の技法は、符号化機器と復号機器との間のデータ通信を必ずしも含むとは限らないビデオコード化環境(例えば、ビデオ符号化又はビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化機器はデータを符号化し、メモリに記憶することができ、及び/又は、ビデオ復号機器はメモリからデータを取り出し、復号することができる。多くの例では、符号化及び復号は、互いに通信しないが、メモリにデータを符号化し、及び/又はメモリからデータを取り出して復号するだけである機器によって実行される。
[0042]図1の例では、発信源機器12は、ビデオ発信源18と、ビデオエンコーダ20と、出力インターフェース22とを含む。幾つかの例では、出力インターフェース22は、変調器/復調器(モデム)及び/又は送信機を含み得る。ビデオ発信源18は、例えばビデオカメラなどの撮像装置、以前に撮影されたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、及び/又はビデオデータを生成するためのコンピュータグラフィックスシステム、若しくはビデオデータのそのような発信源の組合せを含み得る。
[0043]ビデオエンコーダ20は、ビデオ発信源18からのビデオデータを符号化することができる。幾つかの例では、発信源機器12は、出力インターフェース22を介して宛先機器14に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号及び/又は再生のための宛先機器14による後のアクセスのために、記憶媒体又はファイルサーバに記憶され得る。
[0044]図1の例では、宛先機器14は、入力インターフェース28と、ビデオデコーダ30と、表示装置32とを含む。幾つかの例では、入力インターフェース28は、受信機及び/又はモデムを含む。入力インターフェース28は、チャネル16を介して符号化されたビデオデータを受信することができる。表示装置32は、宛先機器14と一体化されてよく、又はその外部にあってよい。一般に、表示装置32は、復号されたビデオデータを表示する。表示装置32は、液晶表示器(LCD)、プラズマ表示器、有機発光ダイオード(OLED)表示器、又は別のタイプの表示装置のような様々な表示装置を備え得る。
[0045]本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30のような別の機器に「信号伝達すること」又は「送信すること」に言及することがある。「信号伝達(signaling)」又は「送信(transmitting)」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素及び/又は他のデータの通信を指し得る。そのような通信は、リアルタイム又はほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時に符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生し得るなど、ある時間の長さにわたって発生することがあり、これらの要素は、この媒体に記憶された後の任意の時間に復号機器によって取り出され得る。従って、ビデオデコーダ30は、ある情報を「受信する」ものとして呼ばれ得るが、情報の受信は、必ずしもリアルタイム又はほぼリアルタイムで発生するとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
[0046]ビデオエンコーダ20及びビデオデコーダ30は各々、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアのような、様々な好適な回路のいずれか、又はそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、機器は、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、1つ又は複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実行することができる。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれもが、1つ又は複数のプロセッサであると見なされ得る。ビデオエンコーダ20及びビデオデコーダ30の各々は、1つ又は複数のエンコーダ又はデコーダに含まれることがあり、両者のいずれかがそれぞれの機器中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれることがある。
[0047]幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、上で言及されHEVCドラフト10に記載されるHEVC規格のような、ビデオ圧縮規格に従って動作する。基本的なHEVC規格に加えて、HEVCのためのスケーラブルビデオコード化拡張、マルチビュービデオコード化拡張、及び3Dコード化拡張を作成するための作業が進行中である。加えて、例えば本開示で説明されるような、パレットベースのコード化モードは、HEVC規格の拡張のために提供され得る。幾つかの例では、パレットベースのコード化のために本開示で説明される技法は、ITU−T−H.264/AVC規格又は将来の規格のような、他のビデオコード化規格に従って動作するように構成される、エンコーダ及びデコーダに適用され得る。従って、HEVCコーデックにおけるコード化単位(CU)又は予測単位(PU)のコード化のためのパレットベースのコード化モードの適用が、例として説明される。
[0048]HEVC及び他のビデオコード化規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、及びSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(即ち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルとも呼ばれ得る。他の例では、ピクチャは、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
[0049]ピクチャの符号化された表現を生成するために、ビデオエンコーダ20はコード化ツリー単位(CTU)のセットを生成し得る。各CTUは、ルーマサンプルのコード化ツリーブロック、クロマサンプルの2つの対応するコード化ツリーブロック、及びコード化ツリーブロックのサンプルをコード化するのに使用されるシンタックス構造であり得る。コード化ツリーブロックは、サンプルのN×Nのブロックであり得る。CTUは「ツリーブロック」又は「最大コード化単位」(LCU)とも呼ばれることもある。HEVCのCTUは、H.264/AVCのような、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つ又は複数のコード化単位(CU)を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0050]コード化されたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコード化されたCTUを含み得る。
[0051]本開示は、サンプルの1つ又は複数のブロックのサンプルをコード化するために使用される1つ又は複数のサンプルブロックとシンタックス構造とを指すために、「ビデオ単位」又は「ビデオブロック」又は「ブロック」という用語を使用し得る。例示的なタイプのビデオ単位又はブロックは、CTU、CU、PU、変換単位(TU)、マクロブロック、マクロブロック区分などを含み得る。幾つかの状況では、PUの論述は、マクロブロック区分のマクロブロックの論述と交換され得る。
[0052]コード化されたCTUを生成するために、ビデオエンコーダ20は、CTUのコード化ツリーブロックに対して4分木区分を再帰的に実行して、コード化ツリーブロックをコード化ブロックに分割することができ、従って「コード化ツリー単位」という名称である。コード化ブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイと、Cbサンプルアレイ及びCrサンプルアレイと、コード化ブロックのサンプルをコード化するのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの1つのコード化ブロック及びクロマサンプルの2つの対応するコード化ブロックであり得る。ビデオエンコーダ20は、CUのコード化ブロックを1つ又は複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形(即ち、正方形又は非正方形)ブロックであり得る。CUの予測単位(PU)は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの2つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、及びCr予測ブロックのために、予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0053]ビデオエンコーダ20は、PUのための予測ブロックを生成するために、イントラ予測又はインター予測を使用することができる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成することができる。
[0054]ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つ又は複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成することができる。ビデオエンコーダ20は、PUの予測ブロックを生成するために単予測又は双予測を使用することができる。ビデオエンコーダ20が、PUのための予測ブロックを生成するために単予測を使用するとき、PUは単一のMVを有し得る。ビデオエンコーダ20が、PUのための予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
[0055]ビデオエンコーダ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コード化ブロック中の対応するサンプルとの差を示し得る。
[0056]更に、ビデオエンコーダ20は、4分木区分を使用して、CUのルーマ残差ブロック、Cb残差ブロック、及びCr残差ブロックを、1つ又は複数のルーマ変換ブロック、Cb変換ブロック、及びCr変換ブロックに分解することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。CUの変換単位(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、及び変換ブロックサンプルを変換するのに使用されるシンタックス構造であり得る。従って、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック及びCr変換ブロックと関連付けられ得る。TUと関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。
[0057]ビデオエンコーダ20は、TUのルーマ変換ブロックに1回又は複数回の変換を適用して、TUのルーマ係数ブロックを生成することができる。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TUのCb変換ブロックに1回又は複数回の変換を適用して、TUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、TUのCr変換ブロックに1回又は複数回の変換を適用して、TUのCr係数ブロックを生成することができる。
[0058]係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロック又はCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、更なる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化された変換係数を示す符号化シンタックス要素をエントロピーすることができる。例えば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コード化(CABAC)を実行することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。
[0059]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化されたピクチャ及び関連付けられるデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ(NAL)単位を備え得る。NAL単位の各々は、NAL単位ヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NAL単位ヘッダは、NAL単位タイプコードを示すシンタックス要素を含み得る。NAL単位のNAL単位ヘッダによって規定されるNAL単位タイプコードは、NAL単位のタイプを示す。RBSPは、NAL単位内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。幾つかの例では、RBSPは0ビットを含む。
[0060]異なるタイプのNAL単位は、異なるタイプのRBSPをカプセル化し得る。例えば、第1のタイプのNAL単位はピクチャパラメータセット(PPS)のためのRBSPをカプセル化することができ、第2のタイプのNAL単位はコード化されたスライスのためのRBSPをカプセル化することができ、第3のタイプのNAL単位はSEIのためのRBSPをカプセル化することができ、以下同様である。(パラメータセット及びSEIメッセージのためのRBSPではなく)ビデオコード化データのためのRBSPをカプセル化するNAL単位は、ビデオコード化レイヤ(VCL)NAL単位と呼ばれ得る。
[0061]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。加えて、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームからシンタックス要素を復号することができる。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成することができる。ビデオデータを再構成するための処理は、全般に、ビデオエンコーダ20によって実行される処理の逆であり得る。
[0062]例えば、ビデオデコーダ30は、PUのMVを使用して、現在のCUのPUの予測サンプルブロックを決定することができる。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ30は、現在のCUのTUと関連付けられる変換ブロックを再構成するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ30は、現在のCUのPUの予測サンプルブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコード化ブロックを再構成することができる。ピクチャの各CUのコード化ブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成することができる。
[0063]幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、パレットベースのコード化を実行するように構成され得る。例えば、パレットベースのコード化では、上で説明されたイントラ予測コード化技法又はインター予測コード化技法を実行するのではなく、ビデオエンコーダ20及びビデオデコーダ30は、特定の領域(例えば、所与のブロック)のビデオデータを表すための色のテーブルとして、所謂パレットをコード化することができる。各画素は、画素の色を表すパレット中のエントリーと関連付けられ得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、画素値をパレット中の適切な値と関連付けるインデックスをコード化することができる。
[0064]上の例では、ビデオエンコーダ20は、ブロックのためのパレットを決定すること、各画素の値を表すためのパレット中のエントリーを位置特定すること、及び、画素値をパレットに関連付ける、画素のインデックス値によってパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームから、ブロックのためのパレットと、更にはブロックの画素のインデックス値とを取得することができる。ビデオデコーダ30は、ブロックの画素値を再構成するために、画素のインデックス値をパレットのエントリーに関連付けることができる。
[0065]パレットベースのコード化は、ある量の信号伝達オーバーヘッドを有し得る。例えば、パレットのサイズのようなパレットの特性、更にはパレット自体を信号伝達するために、幾つかのビットが必要とされ得る。加えて、ブロックの画素のインデックス値を信号伝達するために、幾つかのビットが必要とされ得る。本開示の技法は、幾つかの例では、そのような情報を信号伝達するために必要とされるビットの数を減らすことができる。例えば、本開示で説明される技法は、パレットベースのコード化モードを信号伝達すること、パレットを送信すること、パレットを予測すること、パレットを導出すること、及び、パレットベースのコード化マップと他のシンタックス要素とを送信することの、1つ又は複数の様々な組合せのための技法を含み得る。
[0066]本開示の態様はパレット予測を対象とする。例えば、本開示の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、第1の画素値を示す第1のエントリーを有する第1のパレットを決定することができる。ビデオエンコーダ20及び/又はビデオデコーダ30は次いで、第1のパレットの第1のエントリーに基づいて、第2のパレットの第2の画素値を示す1つ又は複数の第2のエントリーを決定することができる。ビデオエンコーダ20及び/又はビデオデコーダ30はまた、第2のパレットを使用して、ビデオデータのブロックの画素をコード化することができる。
[0067]第1のエントリーに基づいて第2のパレットの第2のエントリーを決定するとき、ビデオエンコーダ20は、第2のパレットを再構成するためにビデオデコーダによって使用され得る、様々なシンタックス要素を符号化することができる。例えば、ビデオエンコーダ20は、パレット全体(又は、別々のパレットを有するビデオデータの各々の色成分、例えば、Y、Cb、Cr、又はY、U、V、又はR、G、Bの場合、複数のパレット)が現在コード化されているブロックの1つ又は複数の隣接ブロックからコピーされることを示すように、ビットストリーム中の1つ又は複数のシンタックス要素を符号化することができる。現在のブロックの現在のパレットのエントリーが予測される際に元となる(例えば、コピー元の)パレットは、予測パレットと呼ばれ得る。予測パレットは、空間的に隣接するブロック及び/又はブロックの特定の走査順序で隣接するブロックを含む、1つ又は複数の隣接ブロックからのパレットのエントリーを含み得る。例えば、隣接ブロックは、現在コード化されているブロックの左(左の隣接ブロック)又は上(上の隣接ブロック)に空間的に位置し得る。別の例では、ビデオエンコーダ20は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコード化するために使用される特定の走査順序に従って、現在コード化されているブロックに隣接し得る。即ち、隣接ブロックは、走査順序において現在のブロックの前にコード化される1つ又は複数のブロックであり得る。ビデオエンコーダ20は、パレットがコピーされる際に元となる隣接ブロックの場所を示すように、1つ又は複数のシンタックス要素を符号化することができる。
[0068]幾つかの例では、パレット予測はエントリーごとに実行され得る。例えば、ビデオエンコーダ20は、予測パレットの各エントリーに対して、パレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、1つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ20が現在のブロックのためのパレットのエントリーを予測しない場合、ビデオエンコーダ20は、予測されないエントリーと、更にはそのようなエントリーの数とを規定するように、1つ又は複数の追加のシンタックス要素を符号化することができる。
[0069]幾つかの例では、パレット全体を予測するための技法は、パレットの1つ又は複数のエントリーを予測するための技法と組み合わされ得る。例えば、ビデオエンコーダ20は、現在のパレットが予測パレットから完全にコピーされるかどうかを示すように、ビットストリーム中の1つ又は複数のシンタックス要素を符号化することができる。これが当てはまらない場合、ビデオエンコーダ20は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の1つ又は複数のシンタックス要素を符号化することができる。
[0070]別の例では、エントリーの数とパレット値とを信号伝達する代わりに、ビデオエンコーダ20は、各パレット値を信号伝達した後で、信号伝達されたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すために、フラグを信号伝達することができる。ビデオエンコーダ20は、パレットがすでにある最大のサイズに達している場合、そのような「パレットの終了」フラグを信号伝達しなくてよい。
[0071]本開示の態様によれば、ビデオエンコーダ20は、パレット予測が有効にされるかどうか、及び/又はアクティブであるかどうかを示すように、1つ又は複数のシンタックス要素を符号化することができる。例示を目的とする例では、ビデオエンコーダ20は、各ブロック(例えば、CU又はPU)に対して、ビデオエンコーダ20がそれぞれのブロックのためのパレットを予測するためにパレット予測を使用するかどうかを示すように、pred_palette_flagを符号化することができる。幾つかの例では、ビデオエンコーダは、各々の色成分に対して別々のフラグ(例えば、各ブロックに対して3つのフラグ)を信号伝達することができる。他の例では、ビデオエンコーダ20は、ブロックの全ての色成分に適用可能である単一のフラグを信号伝達することができる。
[0072]ビデオデコーダ30は、符号化されたビットストリームから上で特定された情報を取得し、そのデータを使用してパレットを再構成することができる。例えば、ビデオデコーダ30は、特定のパレットが別のパレットから予測されるかどうかを示すデータと、更には、ビデオデコーダ30が適切な予測パレットのエントリーを使用することを可能にする情報とを受信することができる。
[0073]幾つかの例では、追加で、又は代替的に、ビデオエンコーダ20及び/又はビデオデコーダ30は、オンザフライで、即ち動的にパレットを構築することができる。例えば、ビデオエンコーダ20及び/又はビデオデコーダ30は、コード化の間にエントリーを空のパレットに追加することができる。即ち、ビデオエンコーダ20は、画素値がブロック中の位置のために生成され送信されるにつれて、画素値をパレットに追加することができる。ブロック中で相対的に後にコード化される画素は、画素値を送信する代わりに、例えばインデックス値を伴う、パレットのより前に追加されたエントリーを参照し得る。同様に、ブロック中のある位置のための新たな画素値を受信すると、ビデオデコーダ30は、ビデオエンコーダ20と同じプロセスをたどり、画素値をパレットに含めることができる。このようにして、ビデオデコーダ30は、ビデオエンコーダ20と同じパレットを構築する。ビデオデコーダ30は、パレットにすでに含まれている値を有する画素に対して、その値を特定するインデックス値を受信することができる。ビデオデコーダ30は、受信された情報、例えばパレットに対する画素値とインデックス値とを使用して、ブロックの画素を再構成することができる。
[0074]幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、固定されたサイズのパレットを保持し得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、再構成されるような最新の再構成された画素値パレットを追加することができる。パレットに追加される各エントリーについて、最も早くパレットに追加されたエントリーは棄却される。これは、First−in−First−out(FIFO)と呼ばれることがある。パレットを更新するこのプロセスは、パレットモードを使用してコード化されるブロックのみに対して、又は、コード化モードとは無関係に全てのブロックに対して適用され得る。
[0075]上で説明された技法は一般に、ビデオエンコーダ20及びビデオデコーダ30がパレットベースのコード化のためのパレットを構築及び/又は送信することに関する。本開示の他の態様は、ビデオエンコーダ20及び/又はビデオデコーダ30が画素値を決定することを可能にするマップを構築及び/又は送信することに関する。例えば、本開示の他の態様は、特定の画素をパレットのエントリーに関連付けるインデックスのマップを構築及び/又は送信することに関する。
[0076]幾つかの例では、ビデオエンコーダ20は、ブロックの画素がパレット中の対応する値を有するかどうかを示し得る。例示を目的とする例において、マップの(i,j)のエントリーがビデオデータのブロック中の(i,j)の画素位置に対応すると仮定する。この例では、ビデオエンコーダ20は、ブロックの各画素位置に対するフラグを符号化することができる。ビデオエンコーダ20は、(i,j)の場所における画素値がパレット中の値の1つであることを示すように、(i,j)のエントリーに対して1に等しいフラグを設定することができる。色がパレットに含まれる(即ち、フラグが1に等しい)とき、ビデオエンコーダ20はまた、パレット中の色を特定する、(i,j)のエントリーに対するパレットインデックスを示すデータを符号化することができる。画素の色がパレットに含まれていない(即ち、フラグが0に等しい)とき、ビデオエンコーダ20はまた、画素に対するサンプル値を示すデータを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームから上で説明されたデータを取得し、そのデータを使用して、ブロック中の特定の場所に対するパレットインデックス及び/又は画素値を決定することができる。
[0077]幾つかの例では、所与の位置における画素がマッピングされるパレットインデックスと、隣接画素が同じパレットインデックスにマッピングされる確率との相関であり得る。即ち、画素が特定のパレットインデックスにマッピングされるとき、1つ又は複数の(空間的な場所に関する)隣接画素が同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
[0078]本開示の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、ビデオデータのあるブロックの1つ又は複数のインデックスを、ビデオデータの同じブロックの1つ又は複数のインデックスに対して、決定しコード化することができる。例えば、ビデオエンコーダ20及び/又はビデオデコーダ30は、ビデオデータのブロック中の第1の画素と関連付けられる第1のインデックス値を決定するように構成されてよく、第1のインデックス値は、第1の画素の値をパレットのエントリーに関連付ける。ビデオエンコーダ20及び/又はビデオデコーダ30はまた、第1のインデックス値に基づいて、ビデオデータのブロック中の1つ又は複数の第2の画素と関連付けられる1つ又は複数の第2のインデックス値を決定し、ビデオデータのブロックの第1の画素と1つ又は複数の第2の画素とをコード化するように構成され得る。従って、この例では、マップのインデックスは、マップの1つ又は複数の他のインデックスに対してコード化され得る。
[0079]幾つかの例では、ビデオエンコーダ20は、同じインデックス値にマッピングされる所与の走査順序の幾つかの連続する画素を示す1つ又は複数のシンタックス要素を符号化することができる。同様の値のインデックス値の列は、本明細書では「ラン」と呼ばれ得る。幾つかの例では、画素値は、パレット中の丁度1つのインデックス値と関連付けられ得る。従って、幾つかの例では、値のランは、同様の値の画素値の列も指し得る。他の例では、下で非可逆コード化に関して説明されるように、2つ以上の画素値が、パレット中の同じインデックス値にマッピングされ得る。そのような例では、値のランは、同様の値のインデックス値を指す。
[0080]例示を目的とする例では、所与の走査順序の2つの連続するインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続するインデックスが同じ値を有するが、その走査順序の3番目のインデックスが異なる値を有する場合、ランは1に等しい。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続する画素の場所の数を決定することができる。
[0081]追加で、又は代替的に、本開示の態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、マップの1つ又は複数のエントリーに対して線のコピーを実行することができる。エントリーはまた、マップのエントリーとブロックの画素位置との関係により、「位置」とも呼ばれ得る。線のコピーは、幾つかの例では、走査方向に依存し得る。例えば、ビデオエンコーダ20は、ブロック中の特定の位置に対する画素値又はインデックスマップ値が、(水平方向の走査では)その特定の位置の上の線における、又は(垂直方向の走査では)その特定の位置の左の列における、画素値又はインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定の位置の上の対応する画素値又はインデックス、若しくは特定の位置の左の列に等しい、走査順序の中の画素値又はインデックスの数を、ランとして示すことができる。この例では、ビデオエンコーダ20及び又はビデオデコーダ30は、規定された隣接する線から、及び、現在コード化されているブロックの線に対する規定された数のエントリーから、画素値又はインデックス値をコピーすることができる。
[0082]幾つかの例では、値のコピー元の線は、現在コード化されている位置の線に直接隣接していてよく、例えばその線の上又は左にあってよい。他の例では、ブロックのある数の線が、ビデオエンコーダ20及び/又はビデオデコーダ30によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コード化されているマップの線のための予測値として使用され得る。例示を目的とする例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、画素の現在の行をコード化する前に、インデックス又は画素値の以前の4つの行を記憶するように構成され得る。この例では、予測行(インデックス又は画素値のコピー元の行)は、切り捨てられた単項コード(truncated unary code)又は単項コードのような他のコードによって、ビットストリームにおいて示され得る。切り捨てられた単項コードに関して、ビデオエンコーダ20及び/又はビデオデコーダ30は、最大の行の計算値(例えば、row_index−1)又は最大の列の計算値(例えば、column_index−1)に基づいて、切り捨てられた単項コードの最大値を決定することができる。加えて、コピーされる予測行からの位置の数の指示も、ビットストリームに含まれ得る。幾つかの例では、現在の位置の予測元の線又は列が別のブロック(例えば、CUまたCTU)に属する場合、そのような予測は無効にされ得る。
[0083]本開示の態様によれば、エントリーの所謂ランをコード化するための技法が、上で説明された線のコピーのための技法とともに使用され得る。例えば、ビデオエンコーダ20は、マップ中のエントリーの値がパレットから取得されるかどうか、又は、マップ中のエントリーの値がマップ中の以前にコード化された線から取得されるかどうかを示す、1つ又は複数のシンタックス要素(例えば、フラグ)を符号化することができる。ビデオエンコーダ20はまた、パレットのインデックス値又は線(行又は列)の中のエントリーの場所を示す1つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、同じ値を共有する幾つかの連続するエントリーを示す1つ又は複数のシンタックス要素を符号化することができる。ビデオデコーダ30は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップと画素値とを再構成することができる。
[0084]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、又は対角方向(例えば、ブロックにおいて対角方向に45度又は135度)であり得る。幾つかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する1つ又は複数のシンタックス要素を符号化することができる。加えて、又は代替的に、走査方向は、例えばブロックサイズ、色空間、及び/又は色成分のような所謂サイド情報に基づいて信号伝達又は推測され得る。ビデオエンコーダ20は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックの全ての色成分に適用され得る。
[0085]本開示の技法はまた、パレットベースのコード化の他の態様を含む。例えば、本開示の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、パレットコード化モードを使用してブロックがコード化されることを示すように、各ブロックに対する1つ又は複数のシンタックス要素をコード化することができる。例えば、ビデオエンコーダ20及び/又はビデオデコーダ30が、パレットベースのコード化モードが特定のブロックをコード化するために使用されるべきかどうかを示すように、パレットモードフラグ(PLT_Mode_flag)をコード化することができる。この例では、ビデオエンコーダ20は、現在符号化されているブロック(「現在のブロック」)がパレットモードを使用して符号化されることを規定するために、1に等しいPLT_Mode_flagを符号化することができる。0に等しいPLT_Mode_flagの値は、現在のブロックがパレットモードを使用して符号化されないことを規定する。この場合、ビデオデコーダ30は、符号化されたビットストリームからPLT_Mode_flagを取得し、パレットベースのコード化モードを適用してブロックを復号することができる。2つ以上の利用可能なパレットベースのコード化モードがある(例えば、コード化のために利用可能な2つ以上のパレットベースの技法がある)例では、1つ又は複数のシンタックス要素は、ブロックのために複数の異なるパレットモードの1つを示すことができる。
[0086]幾つかの例では、ビデオエンコーダ20は、現在のブロックがパレットモードを使用して符号化されないことを規定するために、0に等しいPLT_Mode_flagを符号化することができる。そのような例では、ビデオエンコーダ20は、様々なインター予測モード、イントラ予測モード、又は他のコード化モードのいずれかを使用して、ブロックを符号化することができる。PLT_Mode_flagが0に等しいとき、ビデオエンコーダ20は、それぞれのブロックを符号化するために使用される特定のモードを示すために、追加の情報(例えば、シンタックス要素)を送信することができる。幾つかの例では、下で説明されるように、モードはHEVCコード化モードであり得る。PLT_Mode_flagの使用が、例を目的に説明される。他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコード化モードが1つ又は複数のブロックのために使用されるべきかどうかを示すために、又は、複数のモードのいずれが使用されるべきかを示すために、使用され得る。
[0087]パレットベースのコード化モードが使用されるとき、パレットは、例えば、本明細書で説明される技法の1つ又は複数を使用して、ビデオデコーダ30による使用のために、符号化されたビデオデータビットストリームの中で、ビデオエンコーダ20によって送信される。パレットは、各ブロックに対して送信されてよく、又は幾つかのブロックの間で共有されてよい。パレットは、ブロックについて支配的な、及び/又はブロックを表現する、幾つかの画素値を指し得る。
[0088]本開示の態様によれば、例えば、パレットに含まれる画素値の数によるパレットのサイズは、固定されていてよく、又は、符号化されたビットストリーム中の1つ又は複数のシンタックス要素を使用して信号伝達されてよい。下でより詳細に説明されるように、画素値は、例えばコード化のために使用される色空間に応じて、幾つかのサンプルから構成され得る。例えば、画素値は、ルーマサンプルとクロミナンスサンプル(例えば、ルーマ、Uクロミナンス及びVクロミナンス(YUV)サンプル、又は、ルーマ、Cbクロミナンス、及びCrクロミナンス(YCbCr)サンプル)とを含み得る。別の例では、画素値は、赤、緑、及び青(RGB)のサンプルを含み得る。本明細書で説明されるように、画素値という用語は一般に、画素に寄与するサンプルの1つ又は複数を指し得る。即ち、画素値という用語は、画素に寄与する全てのサンプルを必ずしも指すとは限らず、画素に寄与する単一のサンプル値を記述するために使用され得る。
[0089]本開示の態様によれば、パレットは、特定のブロックの各々の色成分に対して別々に送信され得る。例えば、YUV色空間では、Y成分(Y値を表す)に対するパレット、U成分(U値を表す)に対する別のパレット、及びV成分(V値を表す)に対する更に別のパレットがあってよい。別の例では、パレットは、特定のブロックの全ての成分を含み得る。この例では、パレット中のi番目のエントリーは3つの値(例えば、Yi、Ui、Vi)を含み得る。本開示の態様によれば、1つ又は複数のシンタックス要素は、各成分(例えば、Y、U、Vなど)に対するパレットのサイズを別々に示し得る。他の例では、1つ又は複数のシンタックス要素が全ての成分のサイズを示すように、全ての成分に対して単一のサイズが使用され得る。
[0090]本開示の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダは、非可逆又は可逆の方式で、パレットベースのコード化を実行することができる。即ち、幾つかの例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、ブロックの画素値と一致するパレットのエントリーを使用して(又は、画素値がパレットの中に含まれていない場合、実際の画素値を送ることによって)、ブロックのためのビデオデータを可逆でコード化することができる。他の例では、下で図5に関してより詳細に説明されるように、ビデオエンコーダ20及び/又はビデオデコーダ30は、ブロックの画素値と厳密に一致しないパレットのエントリーを使用して、ブロックのためのビデオデータをコード化することができる(非可逆コード化)。
[0091]幾つかの例では、ビデオデータのパレットベースのコード化のための技法は、インター予測コード化又はイントラ予測コード化のための技法のような、1つ又は複数の他のコード化技法とともに使用され得る。例えば、下でより詳細に説明されるように、エンコーダ又はデコーダ、又は組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コード化及びイントラ予測コード化と、更にはパレットベースのコード化とを実行するように構成され得る。
[0092]図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は、説明のために提供されるものであり、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコード化の状況においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコード化規格又は方法に適用可能であり得る。
[0093]ビデオエンコーダ20は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオエンコーダ20は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、HEVCコード化におけるCU又はPUのような、ビデオデータの様々なブロックを選択的にコード化するように構成され得る。非パレットベースのコード化モードは、HEVCドラフト10によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。ビデオエンコーダ20は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロックの位置の少なくとも幾つかを選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報を信号伝達するように構成され得る。信号伝達された情報は、ビデオデータを復号するためにビデオデコーダ30によって使用され得る。
[0094]図2の例では、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニット(図示されず)とを含む。ビデオエンコーダ20はまた、本開示で説明されるパレットベースのコード化技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、又は異なる機能コンポーネントを含み得る。
[0095]ビデオエンコーダ20はビデオデータを受信することができる。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化することができる。CTUの各々は、等しいサイズのルーマコード化ツリーブロック(CTB)と、ピクチャの対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割することができる。より小さいブロックはCUのコード化ブロックであり得る。例えば、予測処理ユニット100は、CTUと関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックの1つ又は複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
[0096]ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(即ち、コード化されたCU)を生成することができる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つ又は複数のPUの間でCUと関連付けられたコード化ブロックを区分することができる。従って、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20及びビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上で示されたように、CUのサイズはCUのルーマコード化ブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズを2N×2Nと仮定すると、ビデオエンコーダ20及びビデオデコーダ30は、イントラ予測の場合は2N×2N又はN×NのPUサイズをサポートすることができ、インター予測の場合は2N×2N、2N×N、N×2N、N×N、又は同様の対称のPUサイズをサポートすることができる。ビデオエンコーダ20及びビデオデコーダ30はまた、インター予測のために、2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズに対する非対称区分化をサポートすることができる。
[0097]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成することができる。PUの予測データは、PUの予測サンプルブロックと、PUの動き情報とを含み得る。インター予測ユニット121は、PUがIスライス中にあるか、Pスライス中にあるか、Bスライス中にあるかに応じて、CUのPUに対して異なる動作を実行することができる。Iスライス中では、全てのPUがイントラ予測される。従って、PUがIスライス中にある場合、インター予測ユニット121は、PUに対してインター予測を実行しない。従って、Iモードで符号化されるブロックでは、予測されるブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
[0098]PUがPスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUの参照領域について参照ピクチャリスト(例えば、「RefPicList0」)中の参照ピクチャを探索することができる。PUの参照領域は、PUのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、PUの参照領域を含んでいる参照ピクチャのRefPicList0中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、PUのコード化ブロックと、参照領域と関連付けられた参照場所との間の空間変位を示すMVを生成することができる。例えば、MVは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として、参照インデックスとMVとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照場所における実際の又は補間されたサンプルに基づいて、PUの予測サンプルブロックを生成することができる。
[0099]PUがBスライス中にある場合、動き推定ユニットは、PUについての単予測又は双予測を実行することができる。PUについての単予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0又は第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを探索することができる。動き推定ユニットは、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0又はRefPicList1中の位置を示す参照インデックスと、PUのサンプルブロックと参照領域と関連付けられた参照場所との間の空間変位を示すMVと、参照ピクチャがRefPicList0中にあるかRefPicList1中にあるかを示す1つ又は複数の予測方向インジケータとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際の又は補間されたサンプルに少なくとも一部基づいて、PUの予測サンプルブロックを生成することができる。
[0100]PUについての双方向インター予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0中の参照ピクチャを探索することができ、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのRefPicList0及びRefPicList1中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照場所とPUのサンプルブロックとの間の空間変位を示すMVを生成することができる。PUの動き情報は、PUの参照インデックスとMVとを含み得る。動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のサンプル又は補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成することができる。
[0101]本開示の技法によれば、ビデオエンコーダ20は、パレットベースのコード化を実行するように構成され得る。HEVCフレームワークに関して、例として、パレットベースのコード化技法は、コード化単位(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコード化技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。従って、CUの状況において(本開示全体で)本明細書で説明される開示されるプロセスの全てが、追加で、又は代替的に、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコード化技法の制約又は制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格又はまだ開発されていないシステム/規格とは独立に、又はそれらの一部として機能するように適用され得るからである。これらの場合、パレットコード化のための単位は、正方形のブロック、長方形のブロック、又は非長方形の領域であってもよい。
[0102]パレットベースの符号化ユニット122は、例えば、パレットベースの符号化モードが例えばCU又はPUのために選択されるとき、パレットベースの復号を実行することができる。例えば、パレットベースの符号化ユニット122は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロックの位置の少なくとも幾つかを選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報を信号伝達するように構成することができる。様々な機能がパレットベースの符号化ユニット122によって実行されるものとして説明されるが、そのような機能の幾つか又は全ては、他の処理ユニット、又は異なる処理ユニットの組合せによって実行され得る。
[0103]パレットベースの符号化ユニット122は、本明細書で説明される様々なシンタックス要素のいずれをも生成するように構成され得る。従って、ビデオエンコーダ20は、本開示で説明されるようなパレットベースのコードモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコード化モードを使用してビデオデータのブロックを選択的に符号化し、又は、例えばHEVCインター予測コード化モード又はイントラ予測コード化モードのような異なるモードを使用してビデオデータのブロックを符号化することができる。ビデオデータのブロックは、例えば、HEVCコード化プロセスに従って生成されるCU又はPUであり得る。ビデオエンコーダ20は、インター予測時間予測コード化モード又はイントラ予測空間コード化モードによって幾つかのブロックを符号化し、パレットベースのコード化モードによって他のブロックを復号することができる。
[0104]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUの予測データを生成することができる。PUの予測データは、PUの予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、及びBスライス中のPUに対してイントラ予測を実行することができる。
[0105]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUの予測データの複数のセットを生成することができる。イントラ予測モードを使用してPUの予測データのセットを生成するために、イントラ予測処理ユニット126は、そのイントラ予測モードと関連付けられた方向へ、PUのサンプルブロック全体にわたって、隣接PUのサンプルブロックからのサンプルを延ばすことができる。隣接PUは、PU、CU、及びCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、又は左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、例えば33個の方向のイントラ予測モードを使用することができる。幾つかの例では、イントラ予測モードの数はPUと関連付けられた領域のサイズに依存し得る。
[0106]予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成された予測データ、又はPUのためにイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUの予測データを選択することができる。幾つかの例では、予測処理ユニット100は、予測データのセットのレート/歪みの尺度に基づいて、CUのPUの予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれ得る。
[0107]残差生成ユニット102は、CUのルーマコード化ブロック、Cbコード化ブロック、及びCrコード化ブロック、並びにCUのPUの選択された予測ルーマブロック、予測Cbブロック、及び予測Crブロックに基づいて、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを生成することができる。例えば、残差生成ユニット102は、残差ブロック中の各サンプルがCUのコード化ブロック中のサンプルとCUのPUの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差に等しい値を有するように、CUの残差ブロックを生成することができる。
[0108]変換処理ユニット104は、4分木区分を実行して、CUと関連付けられた残差ブロックをCUのTUと関連付けられた変換ブロックに区分することができる。従って、TUは、ルーマ変換ブロック及び2つのクロマ変換ブロックと関連付けられ得る。CUのTUのルーマ変換ブロック及びクロマ変換ブロックのサイズ及び位置は、CUのPUの予測ブロックのサイズ及び位置に基づくことも基づかないこともある。「残差4分木」(RQT)として知られる4分木構造は、各領域と関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
[0109]変換処理ユニット104は、TUの変換ブロックに1つ又は複数の変換を適用することによって、CUの各TUに対して変換係数ブロックを生成することができる。変換処理ユニット104は、TUと関連付けられた変換ブロックに様々な変換を適用することができる。例えば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、又は概念的に同様の変換を変換ブロックに適用することができる。幾つかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
[0110]量子化ユニット106は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の幾つか又は全てと関連付けられたビット深度を低減することができる。例えば、nビット変換係数は量子化の間にmビットの変換係数に切り捨てられてよく、ただし、nはmよりも大きい。量子化ユニット106は、CUと関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUと関連付けられた係数ブロックを量子化することができる。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらすことがあり、従って、量子化された変換係数は、元の係数よりも低い精度を有することがある。
[0111]逆量子化ユニット108及び逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化と逆変換とを適用して、係数ブロックから残差ブロックを再構成することができる。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つ又は複数の予測サンプルブロックからの対応するサンプルに追加して、TUと関連付けられる再構成された変換ブロックを生成することができる。ビデオエンコーダ20は、このようにCUの各TUのための変換ブロックを再構成することによって、CUのコード化ブロックを再構成することができる。
[0112]フィルタユニット114は、1つ又は複数のデブロッキング動作を実行して、CUと関連付けられたコード化ブロック中のブロック歪み(blocking artifacts)を低減することができる。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコード化ブロックに対して1つ又は複数のデブロッキング動作を実行した後、再構成されたコード化ブロックを記憶することができる。インター予測処理ユニット120は、再構成されたコード化ブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行することができる。加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116中の再構成されたコード化ブロックを使用して、CUと同じピクチャ中の他のPUに対してイントラ予測を実行することができる。
[0113]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受け取ることができる。例えば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受け取ることができ、予測処理ユニット100からシンタックス要素を受け取ることができる。エントロピー符号化ユニット118は、このデータに対して1つ又は複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。例えば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コード化(CAVLC)演算、CABAC演算、変数−変数(V2V:variable-to-variable)レングスコード化演算、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コード化演算、指数ゴロム符号化演算、又は別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。例えば、ビットストリームはCUのRQTを表すデータを含み得る。
[0114]幾つかの例では、残差コード化はパレットコード化とともに実行されない。従って、ビデオエンコーダ20は、パレットコード化モードを使用してコード化するとき、変換又は量子化を実行しなくてよい。加えて、ビデオエンコーダ20は、残差データとは別に、パレットコード化モードを使用して生成されたデータをエントロピー符号化することができる。
[0115]図3は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図3は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明の目的で、本開示は、HEVCコード化の状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコード化規格又は方法に適用可能であり得る。
[0116]ビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオデコーダ30は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、HEVCコード化におけるCU又はPUのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコード化モードは、HEVCドラフト10によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。ビデオデコーダ30は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中の画素値を選択し、選択された画素値に基づいてブロックの画素値を再構成するように構成され得る。
[0117]図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。ビデオデコーダ30はまた、本開示で説明されるパレットベースのコード化技法の様々な態様を実行するように構成される、パレットベースの復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、又は異なる機能コンポーネントを含み得る。
[0118]コード化されたピクチャのバッファ(CPB)は、ビットストリームの符号化されたビデオデータ(例えば、NAL単位)を受け取り、記憶することができる。エントロピー復号ユニット150は、CPBから符号化されたビデオデータ(例えば、NAL単位)を受け取り、NAL単位を解析してシンタックス要素を復号することができる。エントロピー復号ユニット150は、NAL単位中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、及びフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成することができる。
[0119]ビットストリームのNAL単位は、コード化されたスライスNAL単位を含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コード化されたスライスNAL単位からシンタックス要素を抽出し、エントロピー復号することができる。コード化されたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたPPSを識別するシンタックス要素を含み得る。
[0120]ビデオデコーダ30は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないCUに対して再構成動作を実行することができる。区分されていないCUに対して再構成動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実行することができる。CUの各TUに対して再構成動作を実行することによって、ビデオデコーダ30はCUの残差ブロックを再構成することができる。
[0121]CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆の量子化(inverse quantize)、即ち逆量子化(de-quantize)することができる。逆量子化ユニット154は、TUのCUと関連付けられたQPの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定することができる。つまり、圧縮比、即ち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコード化の方法に依存し得る。
[0122]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、係数ブロックに1つ又は複数の逆変換を適用することができる。例えば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、又は別の逆変換を、係数ブロックに適用することができる。
[0123]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUの予測ブロックを生成することができる。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。イントラ予測処理ユニット166は、ビットストリームから復号された1つ又は複数のシンタックス要素に基づいて、PUのイントラ予測モードを決定することができる。
[0124]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを構築することができる。更に、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を抽出することができる。動き補償ユニット164は、PUの動き情報に基づいて、PUのための1つ又は複数の参照領域を決定することができる。動き補償ユニット164は、PUの1つ又は複数の参照ブロックにおけるサンプルブロックに基づいて、PUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0125]再構成ユニット158は、CUのTUと関連付けられたルーマ変換ブロック、Cb変換ブロック、及びCr変換ブロック、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、及び予測Crブロックを、即ち、イントラ予測データ又はインター予測データのいずれかを適宜使用して、CUのルーマコード化ブロックと、Cbコード化ブロックと、Crコード化ブロックとを再構成することができる。例えば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、及びCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、及び予測Crブロックの対応するサンプルに加算して、CUのルーマコード化ブロックと、Cbコード化ブロックと、Crコード化ブロックとを再構成することができる。
[0126]フィルタユニット160は、デブロッキング動作を実行して、CUのルーマコード化ブロック、Cbコード化ブロック、及びCrコード化ブロックと関連付けられたブロック歪みを低減することができる。ビデオデコーダ30は、CUのルーマコード化ブロックと、Cbコード化ブロックと、Crコード化ブロックとを、復号ピクチャバッファ162に記憶することができる。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、及び図1の表示装置32のような表示装置上での提示のために、参照ピクチャを提供することができる。例えば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、及びCrブロックに基づいて、他のCUのPUに対してイントラ予測演算又はインター予測演算を実行することができる。このようにして、ビデオデコーダ30は、有意なルーマ係数ブロック(significant luma coefficient block)の変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコード化ブロックを生成し、コード化ブロックを表示のために出力することができる。
[0127]本開示の様々な例によれば、ビデオデコーダ30は、パレットベースのコード化を実行するように構成され得る。パレットベースの復号ユニット165は、例えば、パレットベースの復号モードが例えばCU又はPUのために選択されるとき、パレットベースの復号を実行することができる。例えば、パレットベースの復号ユニット165は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中の画素値を選択し、選択された画素値に基づいてブロックの画素値を再構成するように構成することができる。様々な機能がパレットベースの復号ユニット165によって実行されるものとして説明されるが、そのような機能の幾つか又は全ては、他の処理ユニット、又は異なる処理ユニットの組合せによって実行され得る。
[0128]パレットベースの復号ユニット165は、パレットコード化モード情報を受け取り、パレットコード化モードがブロックに適用されることをパレットコード化モード情報が示すとき、上の動作を実行することができる。パレットコード化モードがブロックに適用されないことをパレットコード化モード情報が示すとき、又は、他のモード情報が異なるモードの使用を示すとき、パレットベースの復号ユニット165は、パレットコード化モードがブロックに適用されないことをパレットコード化モード情報が示すとき、HEVCインター予測コード化モード又はイントラ予測コード化モードのような非パレットベースのコード化モードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、例えば、HEVCコード化プロセスに従って生成されるCU又はPUであり得る。ビデオデコーダ30は、インター予測時間予測コード化モード又はイントラ予測空間コード化モードによって幾つかのブロックを復号し、パレットベースのコード化モードによって他のブロックを復号することができる。パレットベースのコード化モードは、複数の異なるパレットベースのコード化モードの1つを備えてよく、又は単一のパレットベースのコード化モードがあってよい。
[0129]パレットベースの復号ユニット165によって受け取られるパレットコード化モード情報は、フラグのようなパレットモードシンタックス要素を備え得る。パレットモードシンタックス要素の第1の値は、パレットコード化モードがブロックに適用されることを示し、パレットモードシンタックス要素の第2の値は、パレットコード化モードがビデオデータのブロックに適用されないことを示す。パレットベースの復号ユニット165は、予測単位レベル、コード化単位レベル、スライスレベル、又はピクチャレベルの1つ又は複数において、(例えばビデオエンコーダ20から)パレットコード化モード情報を受け取ることができ、又は、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、又はビデオパラメータセット(VPS)の少なくとも1つにおいてパレットコード化モードが有効にされるかどうかの指示を受け取ることができる。
[0130]幾つかの例では、パレットベースの復号ユニット165は、ビデオデータのブロックと関連付けられる、コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidの1つ又は複数に基づいて、パレットコード化モード情報を推測することができる。
[0131]パレットベースの復号ユニット165はまた、ビデオデータとともにパレット中のエントリーの少なくとも幾つかを定義する情報を受け取り、受け取られた情報に少なくとも一部基づいてパレットを生成するように構成され得る。パレットのサイズは固定されていてよく、又は可変であってよい。幾つかの場合には、パレットのサイズは可変であり、ビデオデータとともに信号伝達される情報に基づいて調整可能である。信号伝達される情報は、パレット中のエントリーがパレット中の最後のエントリーであるかどうかを規定することができる。また、幾つかの場合には、パレットは最大のサイズを有し得る。パレットのサイズはまた、条件的に送信されてよく、又は推測されてよい。その条件は、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidであり得る。
[0132]パレットは、ブロックのルーマ成分及びクロマ成分の画素値を示すエントリーを含む、単一のパレットであり得る。この場合、パレット中の各エントリーは、ルーマ成分及び2つのクロマ成分の画素値を示す三重のエントリーである。代替的に、パレットは、ブロックのルーマ成分の画素値を示すエントリーを含むルーマパレットと、ブロックのそれぞれのクロマ成分の画素値を示すエントリーを含むクロマパレットとを含む。
[0133]幾つかの例では、パレットベースの復号ユニット165は、以前に処理されたデータに基づいてパレット中のエントリーを予測することによって、パレットを生成することができる。以前に処理されたデータは、以前に復号された隣接ブロックのための、パレット又はパレットからの情報を含み得る。パレットベースの復号ユニット165は、パレット中のエントリーが予測されるべきかどうかを示す予測シンタックス要素を受け取ることができる。予測シンタックス要素は、ルーマ成分及びクロマ成分のためのパレット中のエントリーが予測されるべきかどうかをそれぞれ示す、複数の予測シンタックス要素を含み得る。
[0134]予測パレットに関して、例えば、予測パレットは、空間的に隣接するブロック及び/又はブロックの特定の走査順序で隣接するブロックを含む、1つ又は複数の隣接ブロックからのパレットのエントリーを含み得る。ある例では、隣接ブロックは、現在コード化されているブロックの左(左の隣接ブロック)又は上(上の隣接ブロック)に空間的に位置し得る。別の例では、パレットベースの復号ユニット165は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコード化するために使用される特定の走査順序に従って、現在コード化されているブロックに隣接し得る。即ち、隣接ブロックは、走査順序において現在のブロックの前にコード化される1つ又は複数のブロックであり得る。パレットベースの復号ユニット165は、パレットのコピー元の隣接ブロックの場所を示すように、1つ又は複数のシンタックス要素を復号することができる。
[0135]従って、ある例では、パレットベースの復号ユニット165は、幾つかの例では、スライス又はピクチャ中の左の隣接ブロック又は上の隣接ブロックのためのパレット中のエントリーに基づいて、パレット中のエントリーの少なくとも幾つかを予測することができる。この場合、左の隣接ブロックのためのパレットと上の隣接ブロックのためのパレットのいずれかの中のエントリーに基づいて予測されるパレット中のエントリーは、予測のための左の隣接ブロック又は上の隣接ブロックの選択を示すシンタックス要素に基づいて、パレットベースの復号ユニット165によって予測され得る。シンタックス要素は、予測のための左の隣接ブロック又は上の隣接ブロックの選択を示す値を有するフラグであり得る。
[0136]幾つかの例では、パレットベースの復号ユニット165は、パレット中の少なくとも幾つかの選択されるエントリーがエントリーごとに予測されるべきかどうかを示す1つ又は複数の予測シンタックス要素を受け取り、それに従ってエントリーを生成することができる。例えば、パレットベースの復号ユニット165は、予測パレットの各エントリーに対して、パレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、1つ又は複数のシンタックス要素を復号することができる。エントリーが予測されない場合、パレットベースの復号ユニット165は、予測されないエントリーと、更にはそのようなエントリーの数とを規定するように、1つ又は複数の追加のシンタックス要素を復号することができる。従って、パレットベースの復号ユニット165は、エントリーの幾つかを予測し、追加のエントリーの数を含む、パレット中の他のエントリーを直接規定する情報を受け取ることができる。
[0137]幾つかの例では、パレット全体を予測するための技法は、パレットの1つ又は複数のエントリーを予測するための技法と組み合わされ得る。例えば、パレットベースの復号ユニット165は、現在のパレットが予測パレットから完全にコピーされるかどうかを示すように、ビットストリーム中の1つ又は複数のシンタックス要素を復号することができる。これが当てはまらない場合、パレットベースの復号ユニット165は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の1つ又は複数のシンタックス要素を復号することができる。
[0138]別の例では、エントリーの数とパレット値とを受け取る代わりに、パレットベースの復号ユニット165は、各パレット値の後で、信号伝達されたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すためのフラグを受け取ることができる。パレットベースの復号ユニット165は、パレットがすでにある最大のサイズに達している場合、そのような「パレットの終了」フラグを受け取らなくてよい。
[0139]パレットベースの復号ユニット165によって受け取られ、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報は、ブロック中の位置の少なくとも幾つかのためのパレットインデックス値を含むマップ情報を備えてよく、パレットインデックス値の各々はパレット中のエントリーの1つに対応する。マップ情報は、同じパレットインデックス値を有するブロック中の幾つかの連続する位置を各々示す、1つ又は複数のランシンタックス要素を含み得る。
[0140]幾つかの例では、パレットベースの復号ユニット165は、線のコピーを示す情報を受け取ることができ、これによって、ブロック中の位置の線に対する画素値又はインデックス値が、ブロック中の位置の別の線に対する画素値又はインデックス値からコピーされる。パレットベースの復号ユニット165は、この情報を使用して線のコピーを実行して、ブロックの様々な位置に対するパレット中の画素値又はエントリーを決定することができる。位置の線は、ブロックの位置の行、行の一部分、列、又は列の一部分を備え得る。
[0141]パレットベースの復号ユニット165は、一部には、ブロックの1つ又は複数の位置の画素値を受け取り、パレット中のエントリーに画素値を追加してパレットの少なくとも一部分をオンザフライで動的に生成することによって、パレットを生成することができる。画素値を追加することは、画素値を、エントリーの初期セットを備える初期パレットに、又はエントリーの初期セットを含まない空のパレットに追加することを備え得る。幾つかの例では、追加することは、エントリーの初期セットを備える初期パレットに新たなエントリーを追加するために、又は初期パレット中の既存のエントリーを埋めるために、画素値を追加すること、若しくは、初期パレット中のエントリーの画素値を置換又は変更することを備える。
[0142]幾つかの例では、パレットベースの復号ユニット165は、パレットの固定された最大のサイズを決定することができる。最大のサイズに達すると、パレットベースの復号ユニット165は、パレットの1つ又は複数のエントリーを除去することができる。一例では、パレットベースの復号ユニット165は、例えばFIFOキューを使用して、パレットの最も古いエントリーを除去することができる。別の例では、パレットベースの復号ユニット165は、最も使用されることの少ないエントリーを除去することができる。更に別の例では、パレットベースの復号ユニット165は、除去されるべきエントリーの候補がパレットにいつ追加されたか、及びそのエントリーの相対的な使用量に基づいて、どのエントリーを除去すべきかに関する重み付けられた決定を行うことができる。
[0143]幾つかの例では、パレットは量子化されたパレットであってよく、量子化されたパレットでは、ブロック中の位置の1つに対するパレットから選択された画素値がブロック中の位置の実際の画素値とは異なるので、復号プロセスは非可逆である。例えば、異なる実際の画素値を有する2つの異なる位置に対して、同じ画素値がパレットから選択され得る。
[0144]図4は、本開示の技法に従った、ビデオデータをコード化するためのパレットを決定する例を示す概念図である。図4の例は、第1のパレット184と関連付けられる第1のコード化単位(CU)180と第2のパレット192と関連付けられる第2のCU 188とを有するピクチャ178を含む。下でより詳細に説明されるように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コード化モードによりコード化されるブロック196と、インター予測コード化モードによりコード化されるブロック200とを含む。
[0145]図4の技法は、ビデオエンコーダ20(図1及び図2)とビデオデコーダ30(図1及び図3)の状況において、説明を目的としてHEVCビデオコード化規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコード化プロセス及び/又は規格において他のビデオコード化プロセッサ及び/又は機器によって適用され得ることを、理解されたい。
[0146]一般に、パレットは、現在コード化されているCU、図4の例ではCU 188について支配的である、及び/又はそのCUを表現する、幾つかの画素値を指す。第1のパレット184及び第2のパレット192は、複数のパレットを含むものとして示されている。幾つかの例では、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30のような)は、CUの各々の色成分に対して別々にパレットをコード化することができる。例えば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレットと、CUのクロマ(U)成分のための別のパレットと、CUのクロマ(V)成分のための更に別のパレットとを符号化することができる。この例では、YパレットのエントリーはCUの画素のYの値を表すことができ、UパレットのエントリーはCUの画素のUの値を表すことができ、VパレットのエントリーはCUの画素のVの値を表すことができる。
[0147]他の例では、ビデオエンコーダ20は、CUの全ての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ20は、Yiと、Uiと、Viとを含む、三重の値であるi番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、画素の成分の各々の値を含む。従って、複数の個々のパレットを有するパレットのセットとしてのパレット184及び192の表現は、一例にすぎず、限定することは意図されない。
[0148]図4の例では、第1のパレット184は、エントリーインデックス値1、エントリーインデックス値2、及びエントリーインデックス値3をそれぞれ有する、3つのエントリー202〜206を含む。エントリー202〜206は、画素値A、画素値B、及び画素値Cをそれぞれ含む画素値に、インデックス値を関連付ける。本明細書で説明されるように、第1のCU 180の実際の画素値をコード化するのではなく、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30のような)は、パレットベースのコード化を使用して、インデックス1〜3を使用してブロックの画素をコード化することができる。即ち、第1のCU 180の各画素位置に対して、ビデオエンコーダ20は画素のインデックス値を符号化することができ、インデックス値は、第1のパレット184の1つ又は複数の中の画素値と関連付けられる。ビデオデコーダ30は、ビットストリームからインデックス値を取得し、インデックス値と第1のパレット184の1つ又は複数とを使用して画素値を再構成することができる。従って、第1のパレット184は、パレットベースの復号におけるビデオデコーダ30による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ20によって送信される。一般に、1つ又は複数のパレットは、各CUに対して送信されてよく、又は異なるCUの間で共有されてよい。
[0149]本開示の態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定することができる。例えば、ビデオエンコーダ20は、(空間的に、又は走査順序に基づいて)隣接するCU又は原因となる隣接物の最頻のサンプルのような、1つ又は複数の他のCUと関連付けられる1つ又は複数のパレットからCUのためのパレットが予測されるかどうかを示すために、各CU(例として、第2のCU 188を含む)のためのpred_palette_flagを符号化することができる。例えば、そのようなフラグの値が1に等しいとき、ビデオデコーダ30は、第2のCU 188のための第2のパレット192が1つ又は複数のすでに復号されているパレットから予測され、従って第2のCU 188のための新たなパレットがpred_palette_flagを含むビットストリームに含まれないと、決定することができる。そのようなフラグが0に等しいとき、ビデオデコーダ30は、第2のCU 188のためのパレット192が新たなパレットとしてビットストリームに含まれると決定することができる。幾つかの例では、pred_palette_flagは、CUの各々の異なる色成分に対して別々にコード化され得る(例えば、YUVビデオにおけるCUについては、Yに対して1つ、Uに対して1つ、及びVに対して1つの3つのフラグ)。他の例では、単一のpred_palette_flagは、CUの全ての色成分に対しコード化され得る。
[0150]上の例では、現在のブロックのためのパレットのエントリーのいずれかが予測されるかどうかを示すために、pred_palette_flagがCUごとに信号伝達される。幾つかの例では、1つ又は複数のシンタックス要素は、エントリーごとに信号伝達され得る。それはフラグであるは、現在のパレット中にエントリーが存在するかどうかを示すために、パレット予測子の各エントリーに対して信号伝達され得る。上で述べられたように、パレットのエントリーが予測されない場合、パレットのエントリーは明示的に信号伝達され得る。
[0151]第1のパレット184に対して第2のパレット192を決定する(例えば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20及び/又はビデオデコーダ30は、予測パレット、この例では第1のパレット184が決定される際に元となる、1つ又は複数のブロックを位置特定することができる。予測パレットは、現在コード化されているCUの1つ又は複数の隣接CU(例えば、(空間的に、又は走査順序に基づいて)隣接するCU、又は原因となる隣接物の最頻のサンプル)、即ち第2のCU 188と関連付けられ得る。1つ又は複数の隣接CUのパレットは、予測子パレットと関連付けられ得る。幾つかの例では、図4に示される例のように、ビデオエンコーダ20及び/又はビデオデコーダ30は、第2のCU 188のための予測パレットを決定するとき、左の隣接CUである第1のCU 180を位置特定することができる。他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、上のCUであるCU 196のような、第2のCU 188に対して他の位置にある1つ又は複数のCUを位置特定することができる。
[0152]ビデオエンコーダ20及び/又はビデオデコーダ30は、階層に基づいて、パレット予測のためのCUを決定することができる。例えば、ビデオエンコーダ20及び/又はビデオデコーダ30は最初に、パレット予測のために、左の隣接CUである第1のCU 180を特定することができる。左の隣接CUが予測のために利用可能ではない場合(例えば、左の隣接CUが、イントラ予測モア又はイントラ予測モードのようなパレットベースのコード化モード以外のモードによりコード化される、又はピクチャ若しくはスライスの左端に位置する)、ビデオエンコーダ20及び/又はビデオデコーダ30は、上の隣接CUであるCU 196を特定することができる。ビデオエンコーダ20及び/又はビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUを位置特定するまで、所定の場所の順序に従って利用可能なCUを探し続けることができる。幾つかの例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、複数のブロック及び/又は隣接ブロックの再構成されたサンプルに基づいて予測パレットを決定することができる。
[0153]図4の例は単一のCUである第1のCU 180からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、隣接CUの組合せから予測のためのパレットを位置特定することができる。例えば、ビデオエンコーダ20及び/又はビデオデコーダは、複数の隣接CUの1つ又は組合せのパレットに基づいてパレットを生成するために、1つ又は複数の式、関数、規則などを適用することができる。
[0154]更に他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、パレット予測のための幾つかの可能性のある候補含む候補リストを構築することができる。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在のCUが選択される(パレットをコピーする)際に元となるリスト中のCUの候補を示すために、候補リストに対するインデックスを符号化することができる。ビデオデコーダ30は、同じ方式で候補リストを構築し、インデックスを復号し、復号されたインデックスを使用して現在のCUとともに使用するための対応するCUのパレットを選択することができる。
[0155]例示を目的とする例では、ビデオエンコーダ20及びビデオデコーダ30は、現在コード化されているCUの上に配置されている1つのCUと、現在コード化されているCUの左に配置されている1つのCUとを含む、候補リストを構築することができる。この例では、ビデオエンコーダ20は、候補の選択を示すように1つ又は複数のシンタックス要素を符号化することができる。例えば、ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの左に配置されているCUからコピーされることを示すために、0という値を有するフラグを符号化することができる。ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの上に配置されているCUからコピーされることを示すために、1という値を有するフラグを符号化することができる。ビデオデコーダ30は、フラグを復号し、パレット予測のために適切なCUを選択する。
[0156]更に他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、1つ又は複数の他のパレットに含まれるサンプル値が1つ又は複数の隣接CUの中で現れる頻度に基づいて、現在コード化されているCUのためのパレットを決定する。例えば、ビデオエンコーダ20及び/又はビデオデコーダ30は、所定の数のCUのコード化の間に最も頻繁に使用されるインデックス値と関連付けられる色を記録することができる。ビデオエンコーダ20及び/又はビデオデコーダ30は、現在のコード化されているCUのためのパレットに、その最も頻繁に使用される色を含めることができる。
[0157]上で述べられたように、幾つかの例では、ビデオエンコーダ20及び/又はビデオデコーダは、現在のCUをコード化するために、隣接CUからパレット全体をコピーすることができる。追加で、又は代替的に、ビデオエンコーダ20及び/又はビデオデコーダ30は、エントリーごとのパレット予測を実行することができる。例えば、ビデオエンコーダ20は、予測パレット(例えば、別のCUのパレット)に基づいて、それぞれのエントリーが予測されるかどうかを示す、パレットの各エントリーのための1つ又は複数のシンタックス要素を符号化することができる。この例では、ビデオエンコーダ20は、エントリーが予測パレットからの予測された値(例えば、隣接CUと関連付けられるパレットの対応するエントリー)であるとき、所与のエントリーに対して1に等しい値を有するフラグを符号化することができる。ビデオエンコーダ20は、特定のエントリーが別のCUのパレットから予測されないことを示すために、その特定のエントリーに対して0に等しい値を有するフラグを符号化することができる。この例では、ビデオエンコーダ20は、予測されないパレットのエントリーの値を示す追加のデータも符号化することができる。
[0158]図4の例では、第2のパレット192は、エントリーインデックス値1、エントリーインデックス値2、エントリーインデックス値3、及びエントリーインデックス値4をそれぞれ有する、4つのエントリー208〜214を含む。エントリー208〜214は、画素値A、画素値B、ピクチャ値C、及び画素値Dをそれぞれ含む画素値に、インデックス値を関連付ける。本開示の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、上で説明された技法のいずれかを使用して、パレット予測の目的で第1のCU 180を位置特定し、第1のパレット184のエントリー1〜3を、第2のCU 188をコード化するための第2のパレット192のエントリー1〜3にコピーすることができる。このようにして、ビデオエンコーダ20及び/又はビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定することができる。加えて、ビデオエンコーダ20及び/又はビデオデコーダ30は、第2のパレット192とともに含まれるべきエントリー4のためのデータをコード化することができる。そのような情報は、予測子パレットから予測されないパレットのエントリーの数と、それらのパレットのエントリーに対応する画素値とを含み得る。
[0159]幾つかの例では、本開示の態様によれば、1つ又は複数のシンタックス要素は、第2のパレット192のようなパレットが予測パレット(図4では第1のパレット184として示されるが、1つ又は複数のブロックからのエントリーから構成されていてよい)から完全に予測されるかどうか、又は第2のパレット192の特定のエントリーが予測されるかどうかを示し得る。例えば、初期シンタックス要素は、エントリーの全てが予測されるかどうかを示し得る。エントリーの全てが予測されるのではないことを初期シンタックス要素が示す(例えば、フラグが0という値を有する)場合、1つ又は複数の追加のシンタックス要素が、第2のパレット192のどのエントリーが予測パレットから予測されるかを示し得る。
[0160]本開示の幾つかの態様によれば、パレット予測と関連付けられる幾つかの情報は、コード化されているデータの1つ又は複数の特性から推測され得る。即ち、ビデオエンコーダ20がシンタックス要素を符号化するのではなく(及びビデオデコーダ30がそのようなシンタックス要素を復号するのではなく)、ビデオエンコーダ20及びビデオデコーダ30は、コード化されているデータの1つ又は複数の特性に基づいて、パレット予測を実行することができる。
[0161]ある例では、例示を目的として、上で説明されたpred_palette_flagの値は、例として、コード化されているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidの1つ又は複数から推測され得る。即ち、例としてCUのサイズに関して、ビデオエンコーダ20及び/又はビデオデコーダ30は、上で説明されたpred_palette_flagが所定のサイズを超える任意のCUに対して1に等しいと、決定することができる。この例では、pred_palette_flagは、符号化されるビットストリームにおいて信号伝達される必要はない。
[0162]上ではpred_palette_flagに関して説明されたが、ビデオエンコーダ20及び/又はビデオデコーダ30は、加えて、又は代替的に、パレットが予測のために使用される際に元となるCUの候補、又はパレット予測の候補を構成するための規則のような、パレット予測と関連付けられる他の情報を、コード化されているデータの1つ又は複数の特性に基づいて推測することができる。
[0163]本開示の他の態様によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、オンザフライでパレットを構成することができる。例えば、第2のCU 188を最初にコード化するとき、パレット192にはエントリーはない。ビデオエンコーダ20及びビデオデコーダ30が第2のCU 188の画素の新たな値をコード化するにつれて、各々の新たな値がパレット192に含められる。即ち、例えば、ビデオエンコーダ20は、画素値がCU 188の中の位置のために生成され信号伝達されるにつれて、画素値をパレット192に追加する。ビデオエンコーダ20はCUにおいて相対的により後で画素を符号化するので、ビデオエンコーダ20は、画素値を信号伝達するのではなくインデックス値を使用して、パレットにすでに含まれているものと同じ値を有する画素を符号化することができる。同様に、ビデオデコーダ30が第2のCU 188の中の位置に対する新たな画素値(例えば、ビデオエンコーダ20によって信号伝達される)を受け取るとき、ビデオデコーダ30は、画素値をパレット192に含める。第2のCU 188において相対的により後で復号される画素位置が、第2のパレット192に追加されている画素値を有するとき、ビデオデコーダ30は、第2のCU 188の画素値の再構成のために第2のパレット192の中の対応する画素値を特定する情報、例えばインデックス値などを受け取ることができる。
[0164]幾つかの例では、下でより詳細に説明されるように、ビデオエンコーダ20及び/又はビデオデコーダ30は、パレット184と192とを最大パレットサイズ以下に維持することができる。本開示の態様によれば、最大パレットサイズに達すると、例えば、第2のパレット192がオンザフライで動的に構成されるにつれて、ビデオエンコーダ20及び/又はビデオデコーダ30は、第2のパレット192のエントリーを除去するために同じプロセスを実行する。パレットのエントリーを除去するための1つの例示的なプロセスは、ビデオエンコーダ20及びビデオデコーダ30がパレットの最も古いエントリーを除去するfirst−in−first−out(FIFO)技法である。別の例では、ビデオエンコーダ20及びビデオデコーダ30は、パレットから最も使用頻度の低いパレットのエントリーを除去することができる。更に別の例では、ビデオエンコーダ20及びビデオデコーダ30は、どのエントリーを除去するかを決定するために、FIFOプロセスと使用頻度のプロセスの両方を重視することができる。即ち、エントリーの除去は、エントリーがどれだけ古いか、及びエントリーがどれだけ頻繁に使用されるかに基づき得る。
[0165]幾つかの態様によれば、エントリー(画素値)がパレットから除去され、画素値がコード化されているCU中のより後の位置において再び現れる場合、ビデオエンコーダ20は、パレットにエントリーを含めてインデックスを符号化する代わりに、画素値を符号化することができる。追加で、又は代替的に、ビデオエンコーダ20は、例えばビデオエンコーダ20及びビデオデコーダ30がCUの中の位置を走査するにつれて、エントリーを除去された後でパレットに再び入れることができる。
[0166]幾つかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための1つ又は複数の他の技法と組み合わされ得る。具体的には、例として、ビデオエンコーダ20及びビデオデコーダ30は、(例えば、パレット184から第2のパレット192を予測するためにパレット予測を使用して)第2のパレット192を最初にコード化することができ、第2のCU 188の画素をコード化するときに第2のパレット192を更新することができる。例えば、初期パレットを送信すると、ビデオエンコーダ20は、CUの中の追加の場所の画素値が走査されるにつれて、値を初期パレットに追加し、又は初期パレット中の値を変更することができる。同様に、初期パレットを受信すると、ビデオデコーダ30は、CUの中の追加の場所の画素値が走査されるにつれて、値を初期パレットに追加し、又は初期パレット中の値を変更することができる。
[0167]ビデオエンコーダ20は、幾つかの例では、現在のCUがパレット全体の送信を使用するか、又はオンザフライのパレット生成を使用するか、又は、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかを、信号伝達することができる。幾つかの例では、初期パレットは最大パレットサイズにある満杯のパレットであることがあり、この場合、初期パレット中の値は変更され得る。他の例では、初期パレットは最大パレットサイズより小さいことがあり、この場合、ビデオエンコーダ20及びビデオデコーダ30は、初期パレットの値に値を追加し、及び/又は初期パレットの値を変更することができる。
[0168]本開示の態様によれば、例えばパレットに含まれる画素値の数による、第1のパレット184及び第2のパレット192のようなパレットのサイズは、固定されていてよく、又は、符号化されたビットストリーム中の1つ又は複数のシンタックス要素を使用して信号伝達されてよい。例えば、幾つかの態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、パレットサイズをコード化するために、単項コード又は切り捨てられた単項コード(例えば、最大限のパレットサイズにおいて切り捨てるコード)を使用することができる。他の態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、パレットサイズをコード化するために、指数ゴロム符号又はライスゴロム符号を使用することができる。
[0169]更に他の態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、パレットの各エントリーの後でパレットのサイズを示すデータをコード化することができる。例として、第2のパレットの192に関して、ビデオエンコーダ20は、エントリー208〜214の各々の後で停止フラグを符号化することができる。この例では、1に等しい停止フラグは、現在コード化されているエントリーが第2のパレット192の最後のエントリーであることを規定し得るが、0に等しい停止フラグは、第2のパレット192に追加のエントリーがあることを示し得る。従って、ビデオエンコーダ20は、エントリー208〜212の各々の後で0という値を有する停止フラグを符号化し、エントリー214の後で1という値を有する停止フラグを符号化することができる。幾つかの例では、停止フラグは、構成されたパレットが最大パレットサイズの限度に達すると、ビットストリームに含まれなくてよい。上の例はパレットのサイズを明示的に信号伝達するための技法を開示するが、他の例では、パレットのサイズはまた、所謂サイド情報(例えば、上で述べられたような、コード化されているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidのような特性情報)に基づいて、条件的に送信又は推測され得る。
[0170]本開示の技法は、可逆的に、又は代替的にはいくらかの損失を伴って(非可逆コード化(lossy coding))、データをコード化することを含む。例えば、非可逆コード化に関して、ビデオエンコーダ20は、パレットの画素値を厳密にCU中の実際の画素値と厳密に照合することなく、CUの画素をコード化することができる。本開示の技法が非可逆コード化に適用されるとき、幾つかの制約がパレットに適用され得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、第1のパレット184及び第2のパレット192のようなパレットを量子化することができる。即ち、ビデオエンコーダ20及びビデオデコーダ30は、エントリーの画素値が互いに所定の範囲内にあるとき、パレットのエントリーを統合する(量子化する)ことができる。言い換えると、新たなパレット値の誤差の限度内にあるパレット値がすでにある場合、新たなパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なる画素値が、単一のパレットのエントリーに、又は等価的に、単一のパレットの画素値にマッピングされ得る。
[0171]ビデオデコーダ30は、特定のパレットが可逆(lossless)であるか非可逆(lossy)であるかにかかわらず、同じ方式で画素値を復号することができる。一例として、ビデオデコーダ30は、コード化されたブロック中の所与の画素位置のためにビデオエンコーダ20によって送信されるインデックス値を使用して、パレットが可逆であるか非可逆であるかに関係なく、その画素位置のためのパレット中のエントリーを選択することができる。この例では、パレットのエントリーの画素値は、それが元の画素値と厳密に一致するかどうかにかかわらず、コード化されたブロック中の画素値として使用される。
[0172]例示を目的として、非可逆コード化の例では、ビデオエンコーダ20は、デルタ値と呼ばれる誤差の限界を決定することができる。画素値のエントリーの候補Plt_candは、CU又はPUのようなコード化されるべきブロック中のある位置における画素値に対応し得る。パレットの構築の間、ビデオエンコーダ20は、画素値のエントリーの候補Plt_candとパレット中の既存の画素値のエントリーの全てとの間の、絶対的な差を決定する。画素値のエントリーの候補Plt_candとパレット中の既存の画素値のエントリーとの間の絶対的な差の全てがデルタ値より大きい場合、ビデオエンコーダ20は画素値の候補をエントリーとしてパレットに追加することができる。画素値のエントリーPlt_candとパレット中の少なくとも1つの既存の画素値のエントリーとの間の絶対的な差がデルタ値以下である場合、ビデオエンコーダ20は、画素値のエントリーの候補Plt_candをパレットに追加しなくてよい。従って、画素値のエントリーPlt_candをコード化するとき、ビデオエンコーダ20は、画素値のエントリーPlt_candに最も近い画素値を伴うエントリーを選択することができ、これによっていくらかの損失をシステムにもたらす。パレットが複数の成分(例えば、3つの色成分)から構成されるとき、個々の成分値の絶対的な差の合計が、デルタ値との比較のために使用され得る。代替的に、又は追加で、各成分値の絶対的な差は、第2のデルタ値に対して比較され得る。
[0173]幾つかの例では、上で述べられたパレット中の既存の画素値のエントリーが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存の画素値が、他のプロセスを使用して追加されていることがある。例えば、1つ又は複数の初期画素値のエントリーが、パレットを構築するデルタ比較プロセスを開始するために(デルタ比較を伴わずに)パレットに追加され得る。上で説明されたプロセスは、ルーマパレット及び/又はクロマパレットを生成するために、ビデオエンコーダ20及び/又はビデオデコーダ30によって実施され得る。
[0174]パレット構築に関して上で説明された技法も、画素コード化の間にビデオエンコーダ20及びビデオデコーダ30によって使用され得る。例えば、画素値を符号化するとき、ビデオエンコーダ20は、画素の値をパレット中のエントリーの画素値と比較することができる。画素の値とパレット中のエントリーの1つとの間の絶対的な画素値の差がデルタ値以下である場合、ビデオエンコーダ20は、パレットのエントリーとして画素値を符号化することができる。即ち、この例では、ビデオエンコーダ20は、画素値がパレットのエントリーに対して十分に小さい(例えば、所定の範囲内にある)絶対的な差を生成するとき、パレットのエントリーの1つを使用して画素値を符号化する。
[0175]幾つかの例では、ビデオエンコーダ20は、画素値を符号化するために、(コード化されている画素値と比較した)最小の絶対的な画素値の差を生むパレットのエントリーを選択することができる。ある例として、ビデオエンコーダ20は、画素値のために使用されるパレットのエントリー、例えば、ビデオデコーダ30においてコード化された画素値を再構成するために使用されるパレットの画素値のエントリーを示すために、インデックスを符号化することができる。画素の値とパレット中のエントリーの全てとの間の絶対的な画素値の差がデルタより大きい場合、エンコーダは、画素値を符号化するためにパレットのエントリーの1つを使用しなくてよく、代わりに、コード化されるべき画素の画素値をビデオデコーダ30に送信する(及び場合によっては画素値をエントリーとしてパレットに追加する)ことができる。
[0176]別の例では、ビデオエンコーダ20は、画素値を符号化するためにパレットのエントリーを選択することができる。ビデオエンコーダ20は、予測画素値として選択されたエントリーを使用することができる。即ち、ビデオエンコーダ20は、実際の画素値と選択されたエントリーとの差を表す残差値を決定し、残差を符号化することができる。ビデオエンコーダ20は、パレットのエントリーによって予測されるブロック中の画素に対する残差値を生成することができ、画素のブロックに対するそれぞれの残差画素値を含む残差ブロックを生成することができる。ビデオエンコーダ20はその後、(図2に関して上で述べられたような)送信と量子化とを残差ブロックに適用することができる。このようにして、ビデオエンコーダ20は、量子化された残差変換係数を生成することができる。
[0177]ビデオデコーダ30は、残差ブロックを再生成するために、変換係数を逆変換し逆量子化することができる。ビデオデコーダ30は次いで、予測パレットのエントリー値と画素値に対する残差値とを使用して、画素値を再構成することができる。例えば、ビデオデコーダ30は、残差値をパレットのエントリー値と組み合わせて、コード化された画素値を再構成することができる。
[0178]幾つかの例では、デルタ値は、異なるCUサイズ、ピクチャサイズ、色空間、又は異なる色成分に対しては異なり得る。デルタ値は、様々なコード化条件に基づいて事前に決定されてよく、又は決定されてよい。例えば、ビデオエンコーダ20は、PPS、SPS、VPS、及び/又はスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、デルタ値をビデオデコーダ30に信号伝達することができる。他の例では、ビデオエンコーダ20及びビデオデコーダ30は、同じ固定されたデルタ値を使用するように事前に構成され得る。更に他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、サイド情報(例えば、上で述べられたような、CUサイズ、色空間、色成分などのような)に基づいて、デルタ値を適応的に導出することができる。
[0179]幾つかの例では、非可逆コード化パレットモードはHEVCコード化モードとして含まれ得る。例えば、コード化モードは、イントラ予測モードと、インター予測モードと、可逆コード化パレットモードと、非可逆コード化パレットモードとを含み得る。HEVCコード化では、図2及び図3に関して上で述べられたように、量子化パラメータ(QP)が、許容される歪みを制御するために使用される。パレットベースのコード化のためのデルタの値は、QPの関数として計算されてよく、又は別様に決定されてよい。例えば、上で説明されたデルタ値は、1<<(QP/6)又は1<<((QP+d)/6)であってよく、ここでdは定数であり、「<<」はビットごとの左シフトの演算子を表す。
[0180]本開示で説明される非可逆コード化技法を使用したパレットの生成は、ビデオエンコーダ20、ビデオデコーダ30、又は両方によって実行され得る。例えば、ビデオエンコーダ20は、上で説明されたデルタ比較技法を使用してCUのためのパレット中のエントリーを生成し、ビデオデコーダ30による使用のためにパレットの構築のための情報を信号伝達することができる。即ち、ビデオエンコーダ20は、CUのためのパレット中のエントリーに対する画素値を示す情報を信号伝達し、次いで、そのようなパレットのエントリーと関連付けられる画素値を使用して画素値を符号化するように構成され得る。ビデオデコーダ30は、そのような情報を使用してパレットを構築し、次いで、エントリーを使用してコード化されたブロックの画素値を復号することができる。幾つかの例では、ビデオエンコーダ20は、コード化されたブロックの1つ又は複数の画素位置に対するパレットのエントリーを特定するインデックス値を信号伝達することができ、ビデオデコーダ30は、インデックス値を使用して、パレットから関連する画素値のエントリーを取り出すことができる。
[0181]他の例では、ビデオデコーダ30は、上で説明されたデルタ比較技法を適用することによって、パレットを構築するように構成され得る。例えば、ビデオデコーダ30は、コード化されたブロック内の位置に対する画素値を受け取り、画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差がデルタ値より大きいかどうかを決定することができる。大きい場合、ビデオデコーダ30は、例えば、ビデオエンコーダ20によって信号伝達された対応するインデックス値を使用したブロックの他の画素位置に対する画素値のパレットベースの復号において後で使用するために、画素値をエントリーとしてパレットに追加することができる。この場合、ビデオエンコーダ20及びビデオデコーダ30は、パレットを生成するために同じ又は同様のプロセスを適用することができる。大きくない場合、ビデオデコーダ30は、画素値をパレットに追加しなくてよい。
[0182]例示を目的とする例では、ビデオデコーダ30は、ブロック中の様々な画素位置に対するインデックス値又は画素値を受け取ることができる。インデックス値が画素位置に対して受け取られる場合、例えば、ビデオデコーダ30は、パレット中のエントリーを特定するためにインデックス値を使用し、その画素位置に対してパレットのエントリーの画素値を使用することができる。画素値がその画素値に対して受け取られる場合、ビデオデコーダ30は、画素位置に対して受け取られた画素値を使用し、また、デルタ比較を適用して、画素値がパレットに追加され次いでパレットのコード化のために後で使用されるべきかどうかを決定することができる。
[0183]エンコーダ側では、ブロック中の位置に対する画素値が、デルタ値以下の、その画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差を生成する場合、ビデオエンコーダ20は、その位置に対する画素値を再構成する際に使用するためのパレット中のエントリーを特定するために、インデックス値を送ることができる。ブロック中の位置に対する画素値が、全てがデルタ値より大きい、その画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差の値を生成する場合、ビデオエンコーダ20は、その画素値を送り、その画素値をパレット中の新たなエントリーとして追加することができる。パレットを構築するために、ビデオデコーダ30は、例えば上で説明されたように、エンコーダによって信号伝達されるデルタ値を使用し、固定された又は既知のデルタ値に依存し、又は、デルタ値を推測若しくは導出することができる。
[0184]上で述べられたように、ビデオエンコーダ20及び/又はビデオデコーダ30は、ビデオデータをコード化するとき、イントラ予測モードと、インター予測モードと、可逆コード化パレットモードと、非可逆コード化パレットモードとを含む、コード化モードを使用することができる。本開示の幾つかの態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、パレットベースのコード化が有効にされるかどうかを示す1つ又は複数のシンタックス要素をコード化することができる。例えば、各CUにおいて、ビデオエンコーダ20は、フラグPLT_Mode_flagのようなシンタックス要素を符号化することができる。PLT_Mode_flag又は他のシンタックス要素は、パレットベースのコード化モードが所与のCU(又は他の例ではPU)のために使用されるべきかどうかを示し得る。例えば、このフラグは、CUレベルで符号化されたビデオビットストリームの中で信号伝達されてよく、次いで、符号化されたビデオビットストリームを復号するとビデオデコーダ30によって受け取られ得る。
[0185]この例では、1に等しいこのPLT_Mode_flagの値は、パレットベースのコード化モードを使用して現在のCUが符号化されることを規定し得る。この場合、ビデオデコーダ30は、パレットベースのコード化モードを適用してCUを復号することができる。幾つかの例では、シンタックス要素は、CUのための複数の異なるパレットベースのコード化モードの1つ(例えば、非可逆又は可逆)を示し得る。0に等しいこのPLT_Mode_flagの値は、パレットモード以外のモードを使用して現在のCUが符号化されることを規定し得る。例えば、様々なインター予測コード化モード、イントラ予測コード化モード、又は他のコード化モードのいずれもが使用され得る。PLT_Mode_flagの値が0であるとき、ビデオエンコーダ20はまた、それぞれのCUを符号化するために使用される特定のモード(例えば、HEVCコード化モード)を示すように、追加のデータを符号化することができる。PLT_Mode_flagの使用が、例を目的に説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコード化モードがCU(又は他の例ではPU)のために使用されるべきかどうかを示すために、又は、複数のモードのいずれがコード化のために使用されるべきかを示すために、使用され得る。
[0186]幾つかの例では、上で説明されたフラグ又は他のシンタックス要素は、CU(又はPU)レベルよりも高いレベルで送信され得る。例えば、ビデオエンコーダ20は、そのようなフラグをスライスレベルで信号伝達することができる。この場合、1に等しい値は、スライス中のCUの全てがパレットモードを使用して符号化されることを示す。この例では、例えばパレットモード又は他のモードのために、追加のモード情報はCUレベルで信号伝達されない。別の例では、ビデオエンコーダ20は、そのようなフラグを、PPS、SPS、又はVPSにおいて信号伝達することができる。
[0187]本開示の幾つかの態様によれば、ビデオエンコーダ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のパレットベースのコード化を示すために使用され得る。
[0188]幾つかの例では、上で説明されたシンタックス要素は、ビットストリーム中で条件的に信号伝達され得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidに基づいて、シンタックス要素をそれぞれ符号化するだけでよく、又は復号するだけでよい。
[0189]上で説明された例は、例えばビットストリーム中の1つ又は複数のシンタックス要素を伴う明示的な信号伝達に関するが、他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、パレットコード化モードがアクティブであるかどうか、及び/又は特定のブロックをコード化するために使用されるかどうかを暗黙的に決定することができる。ビデオエンコーダ20及びビデオデコーダ30は、例えば、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidに基づいて、パレットベースのコード化がブロックのために使用されるかどうかを決定することができる。
[0190]図4の技法はCU(HEVC)の状況において上で説明されるが、この技法は、予測単位(PU)にも、又は、他のビデオコード化プロセス及び/又は規格においても適用され得ることを理解されたい。
[0191]図5は、本開示の技法に従った、画素のブロックのためのパレットに対するインデックスを決定する例を示す概念図である。例えば、図5は、インデックス値と関連付けられる画素のそれぞれの位置をパレット244のエントリーに関連付ける、インデックス値(値1、2、及び3)のマップ240を含む。パレット244は、図4に関して上で説明された第1のパレット184及び第2のパレット192と同様の方式で決定され得る。
[0192]やはり、図5の技法は、ビデオエンコーダ20(図1及び図2)とビデオデコーダ30(図1及び図3)の状況において、説明を目的としてHEVCビデオコード化規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコード化プロセス及び/又は規格において他のビデオコード化プロセッサ及び/又は機器によって適用され得ることを、理解されたい。
[0193]マップ240は、各画素位置に対するインデックス値を含むものとして図5の例において示されるが、他の例では、全ての画素位置が、画素値をパレット244のエントリーに関連付けるインデックス値と関連付けられ得るとは限らないことを理解されたい。即ち、上で述べられたように、幾つかの例では、ビデオエンコーダ20は、画素値がパレット244に含まれない場合、マップ240の中のある位置に対する実際の画素値(又はその量子化されたバージョン)の指示を符号化することができる(及び、ビデオデコーダ30は、符号化されたビットストリームからその指示を取得することができる)。
[0194]幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、どの画素位置がインデックス値と関連付けられるかを示す追加のマップをコード化するように構成され得る。例えば、マップ中の(i,j)のエントリーがCUの(i,j)の位置に対応すると仮定する。ビデオエンコーダ20は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー(即ち、各画素位置)のための1つ又は複数のシンタックス要素を符号化することができる。例えば、ビデオエンコーダ20は、CU中の(i,j)の場所における画素値がパレット244の中の値の1つであることを示すように、1という値を有するフラグを符号化することができる。そのような例では、ビデオエンコーダ20はまた、パレット中のその画素値を示し、ビデオデコーダが画素値を再構成することを可能にするように、パレットインデックス(値1〜3として図5の例では示される)を符号化することができる。パレット244が単一のエントリーと関連付けられる画素値とを含む例では、ビデオエンコーダ20は、インデックス値の信号伝達を省略することができる。ビデオエンコーダ20は、CU中の(i,j)の場所における画素値がパレット244の中の値の1つではないことを示すように、0という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ20はまた、画素値を再構成する際にビデオデコーダ30によって使用するために、画素値の指示を符号化することができる。幾つかの例では、画素値は非可逆の方式でコード化され得る。
[0195]CUの1つの位置における画素の値は、CUの他の位置における1つ又は複数の他の画素の値の指示を提供することができる。例えば、CUの隣接画素位置が同じ画素値を有すること、又は、(2つ以上の画素値が単一のインデックス値にマッピングされ得る、非可逆コード化の場合において)CUの隣接画素位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
[0196]従って、本開示の態様によれば、ビデオエンコーダ20は、同じ画素値又はインデックス値を有する、所与の走査順序の幾つかの連続する画素値又はインデックス値を示す1つ又は複数のシンタックス要素を符号化することができる。上で述べられたように、同様の値の画素値又はインデックス値の列は、本明細書ではランと呼ばれ得る。例示を目的とする例では、所与の走査順序の2つの連続する画素又はインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続する画素又はインデックスが同じ値を有するが、その走査順序の3番目の画素又はインデックスが異なる値を有する場合、ランは1に等しい。同じ値を伴う3つの連続するインデックス又は画素では、ランは2であり、以下同様である。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じ画素値又はインデックス値を有する連続する場所の数を決定することができる。
[0197]例示を目的とする例では、マップ240の線248を考える。水平方向の左から右への走査方向を仮定すると、線248は、「2」という5個のインデックス値と「3」という3個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向にある線248の第1の位置のために2というインデックス値を符号化することができる。加えて、ビデオエンコーダ20は、信号伝達されたインデックス値と同じインデックス値を有する、同じ方向にある連続する値のランを示す1つ又は複数のシンタックス要素を符号化することができる。線248の例では、ビデオエンコーダ20は4というランを信号伝達することができ、これによって、走査方向にある後続の4つの位置のインデックス値が信号伝達されたインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ20は、線248の中の次の異なるインデックス値に対して同じプロセスを実行することができる。即ち、ビデオエンコーダ20は、3というインデックス値と、2というランを示す1つ又は複数のシンタックス要素とを符号化することができる。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数(ラン)とを示す、シンタックス要素を取得することができる。
[0198]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、又は対角方向(例えば、ブロックにおいて対角方向に45度又は135度)であり得る。幾つかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する1つ又は複数のシンタックス要素を符号化することができる。加えて、又は代替的に、走査方向は、例えばブロックサイズ、色空間、及び/又は色成分のような所謂サイド情報に基づいて信号伝達又は推測され得る。ビデオエンコーダ20は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックの全ての色成分に適用され得る。
[0199]例えば、列ベースの走査に関して、マップ240の列252を考える。垂直方向の上から下への走査方向を仮定すると、列252は、「2」という6個のインデックス値と「3」という2個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、(列252の相対的な上部における)走査方向にある線の第1の位置のために2というインデックス値を符号化することができる。加えて、ビデオエンコーダ20は5というランを信号伝達することができ、これによって、走査方向にある後続の5つの位置のインデックス値が信号伝達されたインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ20はまた、走査方向の次の位置に対する3というインデックス値と、1というランを示す1つ又は複数のシンタックス要素とを符号化することができる。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数(ラン)とを示す、シンタックス要素を取得することができる。
[0200]本開示の態様によれば、ビデオエンコーダ20及びビデオデコーダ30は、追加で、又は代替的に、マップ240の1つ又は複数のエントリーに対して線のコピーを実行することができる。線のコピーは、幾つかの例では、走査方向に依存し得る。例えば、ビデオエンコーダ20は、マップ中の特定のエントリーに対する画素値又はインデックス値が、(水平方向の走査では)その特定のエントリーの上の線における、又は(垂直方向の走査では)その特定のエントリーの左の列における、画素値又はインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリーの上の線、又は特定のエントリーの左の列の中のエントリーに等しい、走査順序の中の画素値又はインデックス値の数を、ランとして示すことができる。この例では、ビデオエンコーダ20及び又はビデオデコーダ30は、規定された隣接する線から、及び、現在コード化されているマップの線に対する規定された数のエントリーから、画素値又はインデックス値をコピーすることができる。
[0201]例示を目的とする例では、マップ240の列256と260とを考える。垂直方向の上から下への走査方向を仮定すると、列256は、「1」という3個のインデックス値と、「2」という3個のインデックス値と、「3」という2個のインデックス値とを含む。列260は、走査方向に同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、列260の全体が列256からコピーされることを示す、列260のための1つ又は複数のシンタックス要素を符号化することができる。1つ又は複数のシンタックス要素は、マップ240の相対的な上部において列260の第1のエントリーと関連付けられ得る。ビデオデコーダ30は、線のコピーを示すシンタックス要素を取得し、列260を復号するときに列260のための列256のインデックス値をコピーすることができる。
[0202]本開示の態様によれば、エントリーの所謂ランをコード化するための技法が、上で説明された線のコピーのための技法とともに使用され得る。例えば、ビデオエンコーダ20は、マップ中のエントリーの値がパレットから取得されるかどうか、又は、マップ中のエントリーの値がマップ240中の以前にコード化された線から取得されるかどうかを示す、1つ又は複数のシンタックス要素(例えば、フラグ)を符号化することができる。ビデオエンコーダ20はまた、パレットのインデックス値又は線(行又は列)の中のエントリーの場所を示す1つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、同じ値を共有する幾つかの連続するエントリーを示す1つ又は複数のシンタックス要素を符号化することができる。ビデオデコーダ30は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップと画素値とを再構成することができる。
[0203]例示を目的とする例では、マップ240の行264と268とを考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という3個のインデックス値と、「2」という2個のインデックス値と、「3」という3個のインデックス値とを含む。行268は、「1」という5個のインデックス値と「3」という3個のインデックス値とを含む。この例では、ビデオエンコーダ20は、行268のためのデータを符号化するときにランの前にある行264の特定のエントリーを特定することができる。例えば、ビデオエンコーダ20は、行268の第1の位置(行268の一番左の位置)が行264の第1の位置と同じであることを示す、1つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向の2つの連続するエントリーの次のランが行264の第1の位置と同じであることを示す、1つ又は複数のシンタックス要素を符号化することができる。
[0204]幾つかの例では、ビデオエンコーダ20はまた、別の行(又は列)の中のある位置に対する現在の画素値又はインデックス値をコード化するかどうか、若しくは、ランシンタックス要素を使用して現在の画素値又はインデックス値をコード化するかどうかを決定することができる。例えば、(上で述べられたように)行264の第1の位置と2つのエントリーのランとを示す1つ又は複数の要素を符号化した後で、ビデオエンコーダ20は、行268の中の第4の位置及び第5の位置に対して(左から右に)、第4の位置に対する1という値と、1というランを示す1つ又は複数のシンタックス要素とを示す、1つ又は複数のシンタックス要素を符号化することができる。従って、ビデオエンコーダ20は、別の線(又は列)を参照することなくこれらの2つの位置を符号化する。ビデオエンコーダ20は次いで、上の行264に対する、行268の中の3というインデックス値を有する第1の位置をコード化することができる(例えば、上の行264からのコピーと、同じインデックス値を有する、走査順序の連続する位置のランとを示す)。従って、本開示の態様によれば、ビデオエンコーダ20は、例えばランを使用して線(又は列)の画素値又はインデックス値を線(又は列)の他の値に対してコード化すること、線(又は列)の画素値又はインデックス値を別の線(又は列)の値に対してコード化すること、又はこれらの組合せの中から選択することができる。ビデオエンコーダ20は、幾つかの例では、この選択を行うために、レート/歪みの最適化を実行することができる。
[0205]ビデオデコーダ30は、上で説明されたシンタックス要素を受け取り、行268を再構成することができる。例えば、ビデオデコーダ30は、現在コード化されているマップ240の位置に対する関連付けられるインデックス値をコピーする際に元となる、隣接する行の中の特定の場所を示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序の連続する位置の数を示すデータを取得することができる。
[0206]幾つかの例では、エントリーのコピー元の線は、(図5の例において示されるように)現在コード化されている線のエントリーに直接隣接していてよい。しかしながら、他の例では、ある数の線が、ビデオエンコーダ20及び/又はビデオデコーダ30によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コード化されているマップの線のための予測エントリーとして使用され得る。従って、幾つかの例では、エントリーに対する画素値は、現在の行のすぐ上の行(又はすぐ左の列)、若しくは現在の行の2つ以上上の行(又は2つ以上左の列)の中のエントリーの画素値に等しくなるように信号伝達され得る。
[0207]例示を目的とする例では、ビデオエンコーダ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の値は、単項コード、切り捨てられた単項コード、指数ゴロム符号、又はゴロムライス符号を使用してコード化され得る。
[0208]図6は、本開示の技法に従った、パレットコード化モードを使用してビデオデータをコード化するための例示的なプロセスを示すフローチャートである。図6の方法は、ビデオエンコーダ20(図1及び図2)又はビデオデコーダ30(図1及び図3)のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。
[0209]ビデオエンコーダ及び/又はビデオデコーダ30のようなビデオコーダは最初に、ビデオデータの現在のブロックをコード化するためのモードがパレットベースのコード化モードであるかどうかを決定することができる(280)。上で述べられたように、現在のブロックのコード化モードを示す1つ又は複数のシンタックス要素(例えば、PLT_Mode_flagシンタックス要素)がビットストリームに含まれ得る。他の例では、ビデオコーダは、上で述べられたように、所謂サイド情報に基づいて決定を行うことができる。
[0210]いずれの場合でも、パレットベースのコード化モードが現在コード化されているブロックのために使用されない場合(ステップ280の「いいえ」の分岐)、ビデオコーダは、パレットベースのコード化モード以外のモードを使用してビデオデータのブロックをコード化することができる(282)。例えば、ビデオコーダは、イントラモード、インターモード、又は別のコード化モードのような、非パレットベースのモードを使用してビデオデータのブロックをコード化することができる。
[0211]パレットベースのコード化モードが現在コード化されているブロックのために使用される場合(ステップ280の「はい」の分岐)、ビデオコーダは、現在のブロックをコード化するためのパレットを決定することができる(284)。下で図7及び図8に関して説明されるように、幾つかの例では、ビデオコーダは、ビデオデータの1つ又は複数の他の以前にコード化されたブロックと関連付けられるパレットに基づいて、現在のブロックのためのパレットを決定することができる。
[0212]ビデオコーダはまた、現在コード化されているブロックのためのインデックス値を決定することができる(286)。例えば、下で図9に関してより詳細に説明されるように、ビデオコーダは、画素の位置を関連付けられる画素値を有する決定されたパレットのエントリーに関連付けるインデックス値を使用して、ブロックのどの画素位置がコード化されるかを示すマップを決定することができる。幾つかの例では、ビデオコーダは、ブロックの他のインデックス値に対する1つ又は複数のインデックス値を決定することができる。例えば、ビデオコーダは、ブロックの別の線又は列の中に位置するインデックス値に基づいて、インデックス値のラン及び/又は1つのインデックス値を決定することができる。
[0213]ビデオコーダは次いで、決定されたパレットとインデックス値とを使用して、ブロックのビデオデータをコード化する(280)。例えば、ビデオエンコーダ20に関して、ビデオエンコーダ20は、パレットとともにインデックス値を示すデータを、符号化されたビットストリームの中で符号化することができる。ビデオエンコーダ20はまた、決定されたパレット中の対応する画素を有しない任意の画素位置に対して、そのような位置における実際の画素値又はそれらの量子化されたバージョンを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームからのパレットと、インデックス値と、画素値とを解析して復号し、そのデータを使用してビデオデータのブロックを再構成することができる。
[0214]図7は、本開示の技法に従った、パレットベースのコード化においてパレットを決定するための例示的なプロセスを示すフローチャートである。図7の方法は、ビデオエンコーダ20(図1及び図2)又はビデオデコーダ30(図1及び図3)のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。幾つかの例では、図7の技法は、図6のステップ284の間に実行され得る。
[0215]図7の例では、ビデオコーダはパレットのサイズを決定することができる(300)。幾つかの例では、パレットのサイズは固定されていてよい。他の例では、パレットのサイズは、(例えば、パレットにエントリーを追加すること、又はパレットからエントリーを除去することによって)コード化の間に動的に調整され得る。ビデオコーダは、パレットのサイズを示す1つ又は複数のシンタックス要素をコード化することができる。
[0216]ビデオコーダは、現在のブロックをコード化するためのパレットが1つ又は複数の他の以前にコード化されたパレットから予測されるかどうかを決定することができる(302)。パレットが予測される場合(ステップ302のはいの分岐)、ビデオコーダは予測パレットを決定することができる(304)。例えば、ビデオエンコーダ20は、現在のブロックのためのパレットが1つ又は複数の以前に符号化されたパレットに基づくことを示すデータと、更には、予測パレットと関連付けられるブロックの場所を示す(又は予測パレット自体を特定する)データとを符号化することができる。同様に、ビデオデコーダ30は、符号化されたビットストリームからそのようなデータを取得することができる。図4に関して上で説明されたように、予測パレットは、現在コード化されているブロックの隣接ブロックと関連付けられ得る。
[0217]ビデオコーダは、決定された予測パレットの1つ又は複数のエントリーに基づいて、現在のブロックをコード化するためのパレットの1つ又は複数のエントリーを決定することができる(306)。幾つかの例では、ビデオコーダは、現在のブロックをコード化するために、別のブロックからパレット全体をコピーすることができる。他の例では、ビデオコーダは、別のパレットからエントリーを選択的にコピーすることができる。パレット予測は、幾つかの例では、パレットのエントリーが1つ又は複数の以前にコード化されたブロックにおいて使用される頻度に基づいて、基づき得る。
[0218]ビデオコーダはまた、パレットの1つ又は複数の予測されないエントリーを決定することができる(308)。例えば、幾つかの例では、パレットの一部分のみが、他の以前にコード化されたパレットから予測され得る。他の例では、パレットはまったく予測的にコード化されなくてよい。そのような例では、ビデオコーダは、本明細書で説明されるパレット予測技法を実行することなく(又は実行した後で)、パレットのエントリーを決定することができる。
[0219]図8は、本開示の技法に従った、ビデオデータのブロックのインデックスを決定するための例示的なプロセスを示すフローチャートである。図8の方法は、ビデオエンコーダ20(図1及び図2)又はビデオデコーダ30(図1及び図3)のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。幾つかの例では、図8の技法は、図6のステップ286の間に実行され得る。
[0220]ビデオコーダは最初に、例えば、パレットベースのコード化においてインデックス値のマップを走査するための、走査方向を決定することができる(320)。幾つかの例では、図5の例に関して上で述べられたように、ビデオコーダは、特定の走査方向を使用するように事前に構成され得る。他の例では、ビデオコーダは、走査方向を示す1つ又は複数のシンタックス要素をコード化し、シンタックス要素に基づいて走査方向を決定することができる。更に他の例では、ビデオコーダは、所謂サイド情報に基づいて走査方向を決定することができる。
[0221]ビデオコーダはまた、パレットの関連付けられるインデックス値を有する、現在コード化されているビデオデータのブロックの位置のマップを決定することができる。例えば、現在コード化されているブロックの1つ又は複数の画素値は、ブロックからのパレット中で表されなくてよい。そのような例では、ビデオコーダは、(パレット中の画素値を特定するインデックス値をコード化するのではなく)画素値を直接コード化することができる。マップは、どの画素位置がインデックス値と関連付けられるかと、どの画素位置がインデックス値と関連付けられないかを示し得る。
[0222]ビデオコーダは、1つ又は複数の第1のインデックス値を決定する(324)。ブロック中の所与の画素に対して、ビデオコーダは、所与の画素の画素値をブロックのためのパレット中のエントリーに関連付ける、インデックス値を決定することができる。
[0223]ビデオコーダはまた、第1のインデックス値に基づいて、1つ又は複数の第2のインデックス値を決定する(326)。例えば、図5に関して上で説明されたように、ビデオコーダは、他のすでにコード化されているインデックス値に対する1つ又は複数のインデックス値を決定することができる。幾つかの例では、ビデオコーダは、連続する同じ値のインデックス値のランに基づいて、第2のインデックス値を決定することができる。他の例では、ビデオコーダは、現在コード化されている画素の線以外の異なる線に含まれる1つ又は複数の第1のインデックス値に基づいて、第2のインデックス値を決定することができる。他の例では、ビデオコーダは、第2のインデックス値を決定するために技法の組合せを適用することができる。
[0224]例に応じて、本明細書で説明される技法のいずれもの幾つかの動作又はイベントは、異なる順序で実行されてよく、全体的に追加され、結合され、又は除外されてよいことが、認識されるべきである(例えば、説明される活動又は事象の全てが、この技法の実践のために必要であるとは限らない)。その上、幾つかの例では、動作又はイベントは、連続的にではなく、同時に、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを通じて実行され得る。更に、本開示の幾つかの態様は、明快にするために単一のモジュール又はユニットによって実行されるものとして説明されているが、本開示の技法はビデオコーダと関連付けられるユニット又はモジュールの組合せによって実行され得ることを理解されたい。
[0225]本開示の幾つかの態様が、説明のために開発中のHEVC規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格又はまだ開発されていないプロプライエタリビデオコード化処理を含む、他のビデオコード化処理のために有用であり得る。
[0226]上で説明された技法は、ビデオエンコーダ20(図1及び図2)及び/又はビデオデコーダ30(図1及び図3)によって実行されてよく、ビデオエンコーダ20とビデオデコーダ30の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコード化は、適宜、ビデオ符号化又はビデオ復号を指し得る。
[0227]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。従って、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
[0228]1つ又は複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つ又は複数の命令又はコードとしてコンピュータ可読媒体上に記憶されるか、又はコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、例えば、データ記憶媒体などの有形媒体、又は、例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体又は(2)信号又はキャリア波のような通信媒体に相当し得る。データ記憶媒体は、本開示で説明される技法の実施のために、1つもしくは複数のコンピュータ又は1つもしくは複数のプロセッサによって、命令、コード及び/又はデータ構造を取り出すためにアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0229]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、フラッシュメモリ、又は、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、又は他のリモート発信源から送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)及びディスク(disc)は、コンパクトディスク(compact disc)(CD)、レーザーディスク(登録商標)(laser disc)、光ディスク(optical disc)、デジタル多用途ディスク(digital versatile disc)(DVD)、フロッピー(登録商標)ディスク(floppy disk)、及びBlu−rayディスク(Blu-ray disc)を含み、ここでディスク(disk)は通常、磁気的にデータを再生するが、ディスク(disc)はレーザを用いて光学的にデータを再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。
[0230]命令は、1つ又は複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又は他の等価な集積回路若しくはディスクリート論理回路などの1つ又は複数のプロセッサによって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、前述の構造又は本明細書で説明される技法の実装形態に適した任意の他の構造のいずれをも指し得る。加えて、幾つかの態様では、本明細書で説明される機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内に設けられてよく、又は複合コーデックに組み込まれてよい。また、技法は、1つ又は複数の回路又は論理素子の中で完全に実施され得る。
[0231]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む多種多様な機器又は装置において実施され得る。様々なコンポーネント、モジュール、又はユニットは、開示された技法を実行するように構成される機器の機能上の態様を強調するために、本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で述べられたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、又は、上で説明された1つ又は複数のプロセッサを含む、適切なソフトウェア及び/又はファームウェアとともに相互動作可能なハードウェアユニットの集合体よって提供され得る。
[0232]様々な例が説明されてきた。これら及び他の例は、以下の特許請求の範囲の範囲内にある。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[1] ビデオデータをコード化する方法であって、前記ビデオデータのブロック中の第1の画素と関連付けられる第1のインデックス値を決定することと、ここにおいて、前記第1のインデックス値は前記第1の画素の位置を画素値のパレットのエントリーに関連付ける、前記第1のインデックス値に基づいて、ビデオデータの前記ブロック中の1つ以上の第2の画素と関連付けられる1つ以上の第2のインデックス値を決定することと、ここにおいて、前記第2のインデックス値は、前記1つ以上の第2の画素の前記位置を画素値の前記パレットの1つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第1の画素と前記1つ以上の第2の画素とをコード化することとを備える、方法。
[2] 前記1つ以上の第2のインデックス値が複数の第2のインデックスを備え、前記第1のインデックス値に基づく、前記複数の第2のインデックス中の幾つかのインデックスのランを示す1つ以上のシンタックス要素をコード化することを更に備える、[1]に記載の方法。
[3] 前記複数の第2のインデックスが、所定の走査方向の複数の連続する第2のインデックスを備える、[2]に記載の方法。
[4] 前記第1のインデックス値と前記1つ以上の第2のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定することと、前記ブロック中の1つ以上のそれぞれの画素位置の1つ以上の画素値が画素値の前記パレットに含まれるかどうかを示す、1つ以上のシンタックス要素をコード化することとを更に備える、[1]に記載の方法。
[5] 前記第1のインデックス値に基づいて前記1つ以上の第2のインデックス値を決定することが、前記第1のインデックス値を含むビデオデータの前記ブロックの画素位置の線を示す1つ以上のシンタックス要素をコード化することを備える、[1]に記載の方法。
[6] 画素位置の前記線が、ビデオデータの前記ブロックの画素位置の行、行の一部分、列、又は列の一部分を備える、[5]に記載の方法。
[7] 前記線を示す前記1つ以上のシンタックス要素をコード化することが、ビデオデータの前記ブロック中の前記線の場所を特定するデータをコード化することを備える、[5]に記載の方法。
[8] 前記線の前記場所を特定する前記データが、ビデオデータの前記ブロック中の前記行を特定する変位値を備える、[7]に記載の方法。
[9] 前記線を示す前記1つ以上のシンタックス要素をコード化することが、単項コードと切り捨てられた単項コードのうちの1つを使用して前記1つ以上のシンタックス要素をコード化することを備える、[7]に記載の方法。
[10] 前記1つ以上の第2のインデックス値が前記第1のインデックス値に基づき、前記線がコード化されることを前記1つ以上のシンタックス要素が示すとき、前記第1のインデックス値に基づく幾つかのインデックスのランを示すデータをコード化することと、前記第1のインデックス値に基づかない1つ以上の第3のインデックス値を決定することとを更に備え、前記決定することが、前記1つ以上の第3のインデックス値のための前記パレット中のエントリーを示す1つ以上のシンタックス要素をコード化することと、前記パレット中の前記エントリーに基づく、幾つかのインデックスのランを示すデータをコード化することとを含む、[5]に記載の方法。
[11] 前記第1のインデックス値と前記1つ以上の第2のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定することと、前記マップの前記インデックス値をコード化するための走査方向を示すデータをコード化することとを更に備える、[1]に記載の方法。
[12] ビデオデータの前記ブロックがパレットコード化モードによってコード化されることを示すデータをコード化することと、前記コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidの1つ以上に基づいて、パレットコード化モード情報を推測することとの1つ以上に基づいて、パレットコード化モードを使用してビデオデータの前記ブロックがコード化されると決定することを更に備える、[1]に記載の方法。
[13] 前記ブロックの前記第1の画素と1つ以上の第2の画素とをコード化することが、前記画素を復号することを備え、ここにおいて、前記画素を復号することが、前記第1の画素及び1つ以上の第2の画素のそれぞれのインデックス値を前記パレットの少なくとも1つのエントリーと照合することによって、前記もう1つの画素の値を決定することを備える、[1]に記載の方法。
[14] 前記ブロックの前記第1の画素と1つ以上の第2の画素とをコード化することが、前記画素を符号化することを備え、ここにおいて、前記画素を符号化することが、符号化されたビットストリームの中で前記第1のインデックス値と1つ以上の第2のインデックス値とを符号化することを備える、[1]に記載の方法。
[15] ビデオデータをコード化するための装置であって、前記ビデオデータを記憶するメモリと、1つ以上のプロセッサとを備え、前記1つ以上のプロセッサが、 前記ビデオデータのブロック中の第1の画素と関連付けられる第1のインデックス値を決定し、ここにおいて、前記第1のインデックス値は前記第1の画素の位置を画素値のパレットのエントリーに関連付ける、 前記第1のインデックス値に基づいて、ビデオデータの前記ブロック中の1つ以上の第2の画素と関連付けられる1つ以上の第2のインデックス値を決定し、ここにおいて、前記第2のインデックス値は、前記1つ以上の第2の画素の前記位置を画素値の前記パレットの1つ以上のエントリーに関連付ける、 ビデオデータの前記ブロックの前記第1の画素と前記1つ以上の第2の画素とをコード化する
ように構成される、装置。
[16] 前記1つ以上の第2のインデックス値が複数の第2のインデックスを備え、前記1つ以上のプロセッサが更に、前記第1のインデックス値に基づく、前記複数の第2のインデックスの幾つかのインデックスのランを示す1つ以上のシンタックス要素をコード化するように構成される、[15]に記載の装置。
[17] 前記複数の第2のインデックスが、所定の走査方向の複数の連続する第2のインデックスを備える、[16]に記載の装置。
[18] 前記1つ以上のプロセッサが更に、前記第1のインデックス値と前記1つ以上の第2のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定し、前記ブロック中の1つ以上のそれぞれの画素位置の1つ以上の画素値が画素値の前記パレットに含まれるかどうかを示す、1つ以上のシンタックス要素をコード化するように構成される、[15]に記載の装置。
[19] 前記第1のインデックス値に基づいて前記1つ以上の第2のインデックス値を決定するために、前記1つ以上のプロセッサが、前記第1のインデックス値を含むビデオデータの前記ブロックの画素位置の線を示す1つ以上のシンタックス要素をコード化するように構成される、[15]に記載の装置。
[20] 画素位置の前記線が、ビデオデータの前記ブロックの画素位置の行、行の一部分、列、又は列の一部分を備える、[19]に記載の装置。
[21] 前記線を示す前記1つ以上のシンタックス要素をコード化するために、前記1つ以上のプロセッサが、ビデオデータの前記ブロック中の前記線の場所を特定するデータをコード化するように構成される、[19]に記載の装置。
[22] 前記線の前記場所を特定する前記データが、ビデオデータの前記ブロック中の前記行を特定する変位値を備える、[21]に記載の装置。
[23] 前記線を示す前記1つ以上のシンタックス要素をコード化するために、前記1つ以上のプロセッサが、単項コードと切り捨てられた単項コードのうちの1つを使用して前記1つ以上のシンタックス要素をコード化するように構成される、[21]に記載の装置。
[24] 前記1つ以上のプロセッサが更に、前記1つ以上の第2のインデックス値が前記第1のインデックス値に基づき、前記線がコード化されることを前記1つ以上のシンタックス要素が示すとき、前記第1のインデックス値に基づく幾つかのインデックスのランを示すデータをコード化し、前記第1のインデックス値に基づかない1つ以上の第3のインデックス値を決定するように構成され、前記決定することが、前記1つ以上の第3のインデックス値のための前記パレット中のエントリーを示す1つ以上のシンタックス要素をコード化することと、前記パレット中の前記エントリーに基づく、幾つかのインデックスのランを示すデータをコード化することとを含む、[19]に記載の装置。
[25] 前記1つ以上のプロセッサが更に、前記第1のインデックス値と前記1つ以上の第2のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定し、前記マップの前記インデックス値をコード化するための走査方向を示すデータをコード化するように構成される、[15]に記載の装置。
[26] 前記1つ以上のプロセッサが更に、ビデオデータの前記ブロックがパレットコード化モードによってコード化されることを示すデータをコード化することと、前記コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤid、又はマルチビューコード化におけるビューidの1つ以上に基づいて、パレットコード化モード情報を推測することとの1つ以上に基づいて、パレットコード化モードを使用してビデオデータの前記ブロックがコード化されると決定するように構成される、[15]に記載の装置。
[27] 前記ブロックの前記第1の画素と1つ以上の第2の画素とをコード化するために、前記1つ以上のプロセッサが、前記画素を復号するように構成され、前記画素を復号するために、前記1つ以上のプロセッサが、前記第1の画素及び1つ以上の第2の画素のそれぞれのインデックス値を前記パレットの少なくとも1つのエントリーと照合することによって、前記もう1つの画素の値を決定するように構成される、[15]に記載の装置。
[28] 前記ブロックの前記第1の画素と1つ以上の第2の画素とをコード化するために、前記1つ以上のプロセッサが、前記画素を符号化するように構成され、前記画素を符号化するために、前記1つ以上のプロセッサが、符号化されたビットストリームの中で前記第1のインデックス値と1つ以上の第2のインデックス値とを符号化するように構成される、[15]に記載の装置。
[29] ビデオデータをコード化するための装置であって、前記ビデオデータのブロック中の第1の画素と関連付けられる第1のインデックス値を決定するための手段と、ここにおいて、前記第1のインデックス値は前記第1の画素の位置を画素値のパレットのエントリーに関連付ける、前記第1のインデックス値に基づいて、ビデオデータの前記ブロック中の1つ以上の第2の画素と関連付けられる1つ以上の第2のインデックス値を決定するための手段と、ここにおいて、前記第2のインデックス値は、前記1つ以上の第2の画素の前記位置を画素値の前記パレットの1つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第1の画素と前記1つ以上の第2の画素とをコード化するための手段とを備える、装置。
[30] 実行されると、1つ以上のプロセッサに、前記ビデオデータのブロック中の第1の画素と関連付けられる第1のインデックス値を決定させ、ここにおいて、前記第1のインデックス値は前記第1の画素の位置を画素値のパレットのエントリーに関連付ける、前記第1のインデックス値に基づいて、ビデオデータの前記ブロック中の1つ以上の第2の画素と関連付けられる1つ以上の第2のインデックス値を決定させ、ここにおいて、前記第2のインデックス値は、前記1つ以上の第2の画素の前記位置を画素値の前記パレットの1つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第1の画素と前記1つ以上の第2の画素とをコード化させる、命令を記憶した非一時的コンピュータ可読媒体。