本開示は、ビデオコーディングおよび圧縮のための技法を含む。特に、本開示は、パレットベースコーディングによるビデオコンテンツ、特にスクリーンコンテンツのコーディングをサポートするための技法について説明する。本開示は、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックをコーディングするための技法を含む、パレットベースコーディングの複数の技術的態様について説明する。
本開示で説明する技法によれば、ブロックが単一カラー値を有する場合、ビデオエンコーダは、単一カラー値を示す単一パレットエントリを含むブロック用のパレットを生成し、パレットに関して単一カラーモードを使用してブロックを符号化し、符号化ビットストリームの中で、単一カラーモードを使用してブロックが符号化されていることを示すシンタックス要素をシグナリングする。いくつかの例では、ビデオエンコーダはまた、予測されないパレットエントリとして、またはパレット予測子からの予測されるエントリとして、符号化ビットストリームの中で単一カラー値をシグナリングすることができる。
さらに、開示する技法によれば、単一カラーモードを使用してブロックが復号されるべきであることを示す符号化ビットストリームの中のシンタックス要素を受信すると、ビデオデコーダは、単一カラー値を示す単一パレットエントリを含むパレットを生成し、パレットに関してブロックを復号し、それによりブロック内のすべてのピクセルが、パレットに示される単一カラー値を有するようにする。いくつかの例では、ビデオデコーダは、予測されないパレットエントリとして符号化ビットストリームの中の単一カラー値を受信することと、パレットの中の単一パレットエントリとして予測されないパレットエントリを使用することとに基づいて、ブロック用のパレットを生成することができる。他の例では、ビデオデコーダは、パレットの中の単一パレットエントリとなるように、単一カラー値を示すパレット予測子の中のエントリを選択することに基づいて、ブロック用のパレットを生成することができる。
このようにして、単一カラー値を有するブロックが、パレットコーディングモードの通常モードと比較して低減された数のビットにより、パレットコーディングモードの単一カラーモードを使用してコーディングされ得る。たとえば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は現在のブロックを、パレットを生成するために使用されるバイナリパレット予測子ベクトル、パレットに含まれるいくつかの予測されないパレットエントリおよびそれらの対応する値、パレットに含まれないカラーを有するエスケープピクセルがブロックに存在するかどうかを示すためのフラグ、またはブロック内のピクセルに関するカラー値を示すパレットエントリに対応する任意のインデックス値をコーディングする必要なく、パレットコーディングモードの単一カラーモードを使用してコーディングすることができる。
従来のビデオコーディングでは、画像は、連続階調かつ空間的に滑らかであるものと想定される。これらの想定に基づいて、ブロックベースの変換、フィルタ処理などの様々なツールが開発されており、そのようなツールは、自然コンテンツビデオにとって良好な性能を示してきた。しかしながら、リモートデスクトップ、共同作業およびワイヤレスディスプレイのような適用例では、コンピュータ生成スクリーンコンテンツが、圧縮されるべき主要コンテンツであることがある。このタイプのコンテンツは、離散階調を有するとともに鋭い線および高コントラストのオブジェクト境界を特徴とする傾向がある。連続階調および滑らかさという想定はもはや当てはまらない場合があり、したがって従来のビデオコーディング技法は、コンテンツを圧縮する非効率的方法となることがある。
本開示は、限定はしないが、スクリーンコンテンツコーディングに特に適していることのあるパレットベースコーディングについて説明する。たとえば、ビデオデータの特定のエリアが比較的少数のカラーを有すると想定すると、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、特定のエリアのビデオデータを表すためのいわゆる「パレット」をコーディングすることができる。パレットは、特定のエリア(たとえば、所与のブロック)のビデオデータを表すカラーのテーブルとして表現され得る。たとえば、パレットは、所与のブロックの中の最も支配的なカラー(すなわち、ピクセル値)を含み得る。場合によっては、最も支配的なカラーは、ブロック内で最も頻繁に発生する1つまたは複数のカラーを含み得る。また、場合によっては、ビデオコーダは、あるカラーがブロックの中で最も支配的なカラーのうちの1つとして含まれるべきかどうかを判断するために、しきい値を適用することができる。パレットベースコーディングの様々な態様によれば、ビデオコーダは、現在のブロックに関する実際のピクセル値またはそれらの残差をコーディングする代わりに、現在のブロックのピクセルのうちの1つまたは複数を示すインデックス値をコーディングすることができる。パレットベースコーディングのコンテキストでは、インデックス値は、現在のブロックの個々のピクセルのカラーを表すために使用されるパレットの中のそれぞれのエントリを示す。
たとえば、ビデオエンコーダは、ブロック用のパレットを決定することと、ブロックの1つまたは複数のピクセルのカラーを表すエントリをパレットの中に配置することと、パレットの中のエントリを示すインデックス値とともにブロックを符号化することとによって、ビデオデータのブロックを符号化することができる。パレットの中のエントリにマッピングするカラー値を有するブロックのピクセルの場合、ビデオエンコーダは、それぞれのピクセルに関するエントリのインデックス値を符号化することができる。パレットの中のエントリにマッピングしないカラー値を有するブロックのピクセルの場合、ビデオエンコーダは、ピクセルに関する特別なインデックスを符号化し、実際のピクセル値またはそれの残差値(あるいはそれらの量子化バージョン)を符号化することができる。これらのピクセルは、「エスケープピクセル」と呼ばれ得る。いくつかの例では、パレットは、カラー値なしを表す0個のエントリを含むことがある。この例では、ブロックのすべてのピクセルは、パレットの中のエントリにマッピングしないカラー値を有し、したがって、エスケープピクセルとして符号化される。
いくつかの例では、ビデオエンコーダは、符号化ビットストリームの中でパレット、インデックス値、および任意のエスケープピクセルをシグナリングすることができる。そして、ビデオデコーダは、符号化ビットストリームから、ブロック用のパレット、ブロックのピクセルのうちの1つまたは複数に関する1つまたは複数のインデックス値、およびブロックの任意のエスケープピクセルに関するピクセル値を取得することができる。ビデオデコーダは、パレットのエントリにインデックス値をマッピングし、エスケープピクセルを復号して、ブロックのピクセル値を再構成することができる。上記の例は、パレットベースコーディングの一般的な説明を提供することを意図する。
ビデオデータのパレットベースコーディングのための技法は、インター予測コーディング技法またはイントラ予測コーディング技法などの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明するように、ビデオエンコーダもしくはビデオデコーダ、または複合エンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースコーディングを実行するように構成され得る。
いくつかの例では、パレットベースコーディング技法は、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バージョン1」と呼ぶ、確定されたHEVC規格は、「ITU-T H.265, SERIES H:AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services-Coding of moving video - High efficiency video coding」、Telecommunication Standardization Sector of International Telecommunication Union (ITU)、2013年4月として公表されており、2014年10月に別のバージョンが公表されている。
HEVCに対する範囲拡張、すなわちHEVC-RextがJCT-VCによって開発中である。以下「RExt WD7」と呼ぶ、範囲拡張の最近のワーキングドラフト(WD)がhttp://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zipから入手可能である。JCT-VCはまた、HEVC-Rextに基づくHEVCスクリーンコンテンツコーディング(SCC)を開発中である。以下SCC WD1.0と呼ぶ、HEVC SCC拡張の最近のWDがhttp://phenix.int-evry.fr/jct/doc_end_user/documents/18_Sapporo/wg11/JCTVC-R1005-v3.zipから入手可能である。以下SCC WD2.0と呼ぶ、HEVC SCC拡張のより最近のWDがhttp://phenix.int-evry.fr/jct/doc_end_user/documents/19_Strasbourg/wg11/JCTVC-S1005-v1.zipから入手可能である。
HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明される、以下の開示されるプロセスのすべては、付加的または代替的に、PUに適用され得る。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるべきシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
パレットベースコーディングの基本的考えは、CUごとに、現在のCUの中の最も支配的な1つまたは複数のカラー(すなわち、ピクセル値)を含むパレットが導出されることである。場合によっては、カラーを含まないパレットが導出され得る。パレットのパレットサイズおよびパレットエントリがビデオエンコーダからビデオデコーダに送信され得る。パレットのパレットサイズおよびエントリは、1つまたは複数の隣接CU(たとえば、上または左のコード化CU)用のパレットの、それぞれサイズおよびエントリを使用して、直接コーディングまたは予測コーディングされ得る。
ビデオコーダが現在のCU用のパレットを生成すると、ある走査順序に従ってパレットに基づいて、現在のCUのピクセルがコーディングされ得る。CUの中のピクセルロケーションごとに、ピクセルのカラーがパレットに含まれるかどうかを示すために、フラグが送信され得る。パレットの中のエントリにマッピングするピクセルの場合、CUの中の所与のピクセルロケーションに関して、そのエントリに関連するパレットインデックスがシグナリングされ得る。場合によっては、CUの中のピクセルロケーションに関連するパレットインデックスがシグナリングされ、その後にピクセル値の「run」が続くように、ランモードコーディングが使用され得る。この場合、「run」によってカバーされる後続のピクセルロケーションに関しては、それらがすべて同じピクセル値を有するので、フラグもパレットインデックスも送信される必要はない。パレットの中のエントリにマッピングしないカラー値を有するピクセル(すなわち、エスケープピクセル)の場合、特別なインデックスがピクセルに割り当てられ得、CUの中の所与のピクセルロケーションに関して、実際のピクセル値またはそれの残差値(あるいはそれらの量子化バージョン)が送信され得る。エスケープピクセルは、固定長コーディング、単項コーディングなどのような任意の既存のエントロピーコーディング方法を使用してコーディングされ得る。
本開示は、パレットコーディングモードを使用してビデオデータのブロックをコーディングする、より具体的には、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックをコーディングするための技法について説明する。パレットコーディングモードでは、パレットは、インデックスによって番号付けされ、ブロックのための予測子として、またはブロックの最終再構成ピクセルもしくはサンプルとして使用され得る1つまたは複数の色成分(たとえば、RGB、YUVなど)に関するカラー値または強度を表す1つまたは複数のエントリを含む。いくつかの例では、所与のパレットの中の各パレットエントリは、ピクセルまたはサンプルのすべての色成分に関するカラー値を指定する(たとえば、YUV用の単一のパレット)。他の例では、所与のパレットの中の各パレットエントリは、ピクセルまたはサンプルの所与の色成分に関するカラー値を指定する(たとえば、Y用の別個のパレット、U用の別個のパレット、およびV用の別個のパレット)。
パレットは、パレットコーディングモードを使用してコーディングされる現在のCUのためにシグナリングされるビットの比較的大きい部分を占めることができる。したがって、ビデオコーダは、パレット予測子テーブルまたはパレット予測子リストとも呼ばれ得るパレット予測子の1つまたは複数のエントリに基づいて、現在のCUをコーディングするためのパレットの1つまたは複数のエントリを予測することができる。Wei Puら、「AHG10:Suggested Software for Palette Coding based on REext6.0」、JCTVC-Q0094、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)、第17回会合:バレンシア、スペイン、2014年3月27日〜4月4日で説明されているように、パレットは、パレット予測子からコピーされた1つまたは複数のエントリを含むことができる。パレット予測子は、以前コーディングされた隣接ブロックまたは他の再構成サンプルの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含むことができる。
ビデオコーダは、コーディングされている現在のCU用のパレットの中の1つまたは複数のエントリを予測するためにパレット予測子の中のエントリの各々が使用されるのか(それとも、使用されないのか)を示すために、バイナリパレット予測ベクトルを使用し得る。たとえば、(たとえば、図4の例に関してより詳細に説明するように)パレット予測子が使用されるとき、パレット予測子の中のエントリごとに、ビデオコーダは、(たとえば、フラグ=1によって示される)パレット予測子からのそれぞれのエントリが現在のCU用のパレットにコピーされるべきかどうかを示すバイナリフラグをシグナリングする(たとえば、ビデオデコーダによって復号されるべき符号化ビットストリームの中でビデオエンコーダによってコーディングされる)ことができる。パレット予測子の中のすべてのエントリに関するバイナリフラグのセットは、バイナリパレット予測ベクトルと呼ばれ得る。また、現在のCU用のパレットは、たとえば、パレット予測子からコピーされた予測されるエントリに加えて、新しいエントリを含むことができる。ビデオコーダは、パレットの中の新しいエントリのカラー値を明示的にシグナリングすることができ、ビデオコーダはまた、現在のCU用のパレットに含まれるいくつかの新しいエントリをシグナリングすることができる。
いくつかの例では、パレット予測子の中のエントリのすべては、以前コーディングされたCU用の単一のパレットから導出され得る。しかしながら、以前コーディングされたCUが現在のCUから空間的に遠く離れている場合、以前コーディングされたCUと現在のCUとの間のパレット相関は比較的弱いことがある。一般に、複数の以前コーディングされたCU用の2つ以上のパレットからのより多くのエントリを含むようにパレット予測子を拡大することは、現在のCUのパレットエントリのためにより正確な予測子を提供することによって役に立つことがあり、結果として効率性が向上し得る。しかしながら、比較的大きいパレット予測子を決定および使用することは、比較的長いバイナリパレット予測子ベクトルをもたらす。
2014年3月25日に出願された米国仮特許出願第61/970,257号の利益を主張する2015年3月24日に出願された米国出願第14/667,411号では、バイナリパレット予測子ベクトルをコーディングするための2分木ベースのシグナリング方法および末尾位置ベースのシグナリング方法が説明されている。2014年5月23日に出願された米国仮出願第62/002,741号では、バイナリパレット予測子ベクトルをコーディングするためのグループベースのシグナリング方法が説明されている。また、2014年6月20日に出願された米国仮特許出願第62/015,327号の利益を主張する2015年3月24日に出願された米国出願第14/667,411号では、バイナリパレット予測ベクトルをコーディングするためのランレングスベースのシグナリング方法が説明されている。
本開示では、シグナリングされるか、または送られるか、またはさもなければ一般に提供されるアイテムは、符号化ビットストリームの中のビデオエンコーダによってコーディングされ得る(すなわち、符号化され得る)アイテムを指す。符号化ビットストリームは、ビデオデコーダによってコーディングされ得(すなわち、復号され得)、符号化ビットストリームの中でシグナリングされるアイテムは、ビデオ復号プロセスにおいて使用され得る。コーディングという用語は一般に、ビデオ符号化またはビデオ復号を指すことがある。同様に、ビデオコーダは、ビデオエンコーダまたはビデオデコーダを指すことがある。コーディングのいくつかの態様は、エンコーダ側におけるシグナリングおよび符号化を含むことができる。コーディングのいくつかの態様は、デコーダ側における受信および復号を含むことができる。
本開示は、たった1つのパレットエントリを含むパレットに関して、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオブロックをコーディングするための技法について説明する。この場合、パレットをコーディングするためのシグナリングオーバーヘッド、すなわち、使用されるビット数は、パレットコーディングモードの通常モードと比較して効果的に低減され得る。
現在のブロック全体を予測するための候補として現在のブロックの隣接ピクセルのうちの1つを使用する、単一カラーモードとも呼ばれる別のツールが、PoLin Laiら、「Description of screen content coding technology proposals by MediaTek」、JCTVC-Q0033、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)、第17回会合:バレンシア、スペイン、2014年3月27日〜4月4日、およびYi-Wen Chenら、「Single color intra mode for screen content coding」、JCTVC-Q0093、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)、第17回会合:バレンシア、スペイン、2014年3月27日〜4月4日に説明されている。パレットコーディングモードのサブモードとしての単一カラーモードに関して本開示で説明する技法と、JCTVC-0033およびJCTVC-Q0093において説明される単一カラーモードツールとの間の1つの差は、本開示では、現在のブロックを予測するために使用される候補が、現在のブロックの隣接ピクセルではなくパレット予測子から選択されることである。
従来のパレットコーディングモード設計に伴ういくつかの問題について、以下で説明する。1つの例示的なパレットコーディングモード設計では、コーディングされるべきブロック全体がたった1つのカラーを有する(すなわち、ブロックの中のすべてのピクセルが同じカラー値を有する)場合、後続ビットが符号化ビットストリームの中へコーディングされる必要が依然としてあり得る。第一に、ブロック用のパレットを生成するために使用されるバイナリパレット予測ベクトルが、符号化ビットストリームの中でコーディングされる。バイナリパレット予測ベクトルをコーディングするために使用されるビット数は、パレット予測子サイズ、パレット予測子分散(palette predictor distribution)、および圧縮アルゴリズムに応じて変わり得る。バイナリパレット予測ベクトルをコーディングするために、一般に5個以上のビットが使用され得る。第二に、ブロック用のパレットに含まれるいくつかの予測されないパレットエントリおよびそれらの対応する値が、符号化ビットストリームの中でコーディングされる。第三に、パレットに含まれるカラー値を有するエスケープピクセルがブロックに存在するかどうかを示すためのフラグが、符号化ビットストリームの中でコーディングされる。第四に、ブロック内のピクセルに関するカラー値および対応するランレングス(すなわち、ブロックサイズ-1)を示すパレットエントリに対応する第1のインデックス値が、符号化ビットストリームの中でコーディングされる。
スクリーンコンテンツコーディングでは、単一カラーブロックが頻繁に発生し得る。一例では、従来のパレットコーディングモード設計において使用される上述のビットは、上記のJCTVC-0033およびJCTVC-Q0093において説明される隣接ピクセル単一カラーモードツールを使用することによって、単一カラーブロックのために低減され得る。隣接ピクセル単一カラーモードツールは、従来のパレットコーディングモードと競合し得るCUコーディングモードであり得る。隣接ピクセル単一カラーモードツールでは、単一カラーブロックを予測するために使用される候補カラーリストは、単一カラーブロックの1つもしくは複数の以前コーディングされた隣接ピクセルのカラー値および/または以前コーディングされたピクチャもしくはスライスからのカラー値を含むことができる。候補カラーリストの中のエントリに加えて、いくつかの定常候補(constant candidate)も、単一カラーブロックを予測するために使用され得る。たとえば、導出された候補が候補カラーリストの中で入手できず、単一カラーブロックのビット深度がNである場合、単一カラーブロックを予測するための候補としてYUVカラー値(2N-1、2N-1、2N-1)が使用され得る。
別の例として、1つもしくは複数の以前コーディングされた隣接ピクセルのカラー値および/または以前のピクチャもしくはスライスからのカラー値を含む候補カラーリストは、重複するカラー値を候補カラーリストから除去するために、またいくつかのルールに従って候補カラーリストの中のカラー値を順序付けるためにプルーニングされ得る。場合によっては、候補カラーリストに含まれる以前コーディングされた隣接ピクセル候補の最大数は制限され得る。
いくつかの例では、単一カラー情報が、符号化ビットストリームの中でスライスヘッダ、ピクチャパラメータセット(PPS)、またはシーケンスパラメータセット(SPS)のうちの1つまたは複数においてシグナリングされ得る。一例では、単一カラーブロックの元の画像を使用して、単一カラーブロックのために最も頻繁に使用されるカラーを導出することができ、次いで、最も頻繁に使用されるカラーがスライスヘッダの中でシグナリングされ得る。従来のパレットモードコーディング設計では、下のTable 1(表1)における例示的なCUシンタックスによって示されるように、スキップモードを使用してブロックが符号化されていないことを示すスキップモードフラグ(たとえば、cu_skip_flag)をシグナリングした後、イントラブロックコピーモードを使用して単一カラーブロックが符号化されていないことを示すイントラブロックコピーモードフラグ(たとえば、intra_bc_flag)をシグナリングした後、および(たとえば、MODE_INTRAによって示されるように)イントラ予測モードを使用して単一カラーブロックが符号化されていることを示す予測モードフラグ(たとえば、pred_mode_flag)をシグナリングした後、パレットモードフラグ(たとえば、palette_mode_flag)がシグナリングされる。
本開示の技法の詳細について、以下でより詳細に説明する。概して、本開示は、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックをコーディングするための技法について説明する。
従来のパレットコーディングモードと競合する上述の隣接ピクセル単一カラーモードツールとは異なり、開示する単一カラーモードは、パレットコーディングモードのサブモードを含むことができる。開示する技法によれば、パレットコーディングモードの単一カラーモードは、単一カラー値を示す単一パレットエントリを含むパレットに関して、単一カラー値を有するブロックをコーディングするために使用され得る。さらに、パレットコーディングモードの単一カラーモードは、従来のパレットコーディングモード設計において使用される上述のビットと比較して低減された数のビットを使用して、単一カラー値を有するブロックをコーディングするために使用され得る。
開示する技法のいくつかの例では、単一カラーモードは、パレットコーディングモードのサブモードであり得る。この場合には、現在のブロックが単一カラーモードでコーディングされるのか、それともパレットコーディングモードでコーディングされるのかを示すために、パレットモードブロックに関連するシンタックス要素またはフラグ(たとえば、single_color_palette_flag)が使用され得る。単一カラーパレットフラグは、コンテキストとして隣接ブロックに関する単一カラーパレットフラグを使用してバイパスコーディングまたはコンテキストコーディングされ得る。
たとえば、現在のブロック内のすべてのピクセルが単一カラー値を有する場合に、ビデオエンコーダは、符号化ビットストリームの中で単一カラーパレットフラグをシグナリングすることができ、ビデオデコーダは、パレットコーディングモードの単一カラーモードを使用してビデオデータの現在のブロックがコーディングされることを示す、符号化ビットストリームの中の単一カラーパレットフラグを受信することができる。現在のブロック内のピクセルのすべてが単一カラー値を有しない場合に、ビデオエンコーダは、符号化ビットストリームの中で別のシンタックス要素またはフラグ(たとえば、normal_palette_flag)をシグナリングすることができ、ビデオデコーダは、パレットコーディングモードの通常モードを使用して現在のブロックがコーディングされるかどうかを示す、符号化ビットストリームの中の通常パレットフラグを受信することができる。この例では、単一カラーモードと通常モードの両方は、パレットコーディングモードのサブモードであり得る。
他の例として、ビデオエンコーダは、符号化ビットストリームの中で第1のシンタックス要素をシグナリングすることができ、ビデオデコーダは、パレットコーディングモードを使用してビデオデータの現在のブロックが符号化されているかどうかを示す、符号化ビットストリームの中の第1のシンタックス要素を受信することができる。パレットコーディングモードを使用して現在のブロックが符号化されている場合に、ビデオエンコーダは、符号化ビットストリームの中で第2のシンタックス要素をシグナリングすることができ、ビデオデコーダは、パレットコーディングモードの単一カラーモードを使用して現在のブロックが符号化されているかどうかを示す、符号化ビットストリームの中の第2のシンタックス要素を受信することができる。
開示する技法の別の例では、パレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされる場合に、ビデオエンコーダおよびビデオデコーダの各々は、現在のブロックに関する単一カラー値を示す単一パレットエントリを含む現在のブロック用のパレットを生成し、パレットに関して現在のブロックをそれぞれ符号化および復号する。単一パレットエントリを含むパレットを生成し、パレットに関してブロックをコーディングすることのいくつかの異なる例について、以下で説明する。
ある場合には、ビデオエンコーダは、予測されないパレットエントリとして、符号化ビットストリームの中へ現在のブロックに関する単一カラー値を直接シグナリングすることができる。ビデオデコーダは、予測されないパレットエントリとして単一カラー値を受信し、現在のブロック用のパレットの中の単一パレットエントリとして、予測されないパレットエントリを使用することができる。
別の場合には、現在のブロックに関する単一カラー値は、パレット予測子から予測され得る。上述したように、パレット予測子は、現在のブロック用のパレットの中の単一パレットエントリを予測するために使用され得る、以前コーディングされたブロックの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含む。たとえば、ビデオエンコーダは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用されるパレット予測子の中の選択されたエントリに対応するインデックス値を符号化ビットストリームの中でシグナリングすることができる。次いでビデオデコーダは、単一カラー値を示すパレット予測子の中のエントリに対応する符号化ビットストリームの中のインデックス値を受信し、ブロック用のパレットの中の単一パレットエントリとなるように、パレット予測子から対応するエントリを選択することができる。
一例として、パレット予測子は、複数のエントリを含む、たとえば、5個のエントリを含む、対応するインデックス値1〜5が異なるカラー値を示す、ビデオデコーダにおけるバッファとして動作することができる。現在のブロックに関する単一カラー値がパレット予測子の第2のエントリから予測される場合、2に等しいインデックス値が符号化ビットストリームの中でシグナリングされ得、次いでビデオデコーダは、現在のブロックに関する単一カラー値を示すパレットの中の単一パレットエントリとして、バッファの中で第2のエントリを使用する。
この場合、パレット予測子の中の各エントリが現在のブロック用のパレットにコピーされるかどうかを示すために、符号化ビットストリームの中でバイナリパレット予測ベクトルがシグナリングされる必要はないことがある。代わりに、パレットコーディングモードの単一カラーモードでは、本開示の技法は、現在のブロック用のパレットの中の単一パレットエントリとして使用されるべきパレット予測子からのエントリを示すために、パレット予測子の中の単一カラー値のみの位置(すなわち、インデックス値)を符号化ビットストリームの中でシグナリングすることを可能にする。パレット予測子の中の単一カラー値の位置またはインデックス値は、指数ゴロム符号、切り捨てライス(Truncated-Rice)符号、または切り捨て単項(Truncated Unary)符号を使用してコーディングされ得る。一例では、パレット予測子の中の単一カラー値の位置またはインデックス値は、0次指数ゴロム符号を使用してコーディングされ得る。
さらなる場合、現在のブロックに関する単一カラー値がパレット予測子から予測され得るが、パレット予測子の最大サイズ(すなわち、エントリまたは候補の最大数)に関して制限が適用され得る。パレット予測子の最大サイズ、たとえば、整数値Mが事前定義されることがあり、またはそれが符号化ビットストリームの中でSPS、PPSもしくはスライスヘッダにおいてシグナリングされることがある。たとえば、パレット予測子の最大サイズがMに制限されると想定すると、パレット予測子の中の最大M個までのエントリである最初のエントリのみが、パレットコーディングモードの単一カラーモードでコーディングされる現在のブロックの単一カラー値の候補として使用され得る。
一例として、ビデオエンコーダとビデオデコーダの両方は、パレット予測子が第1のエントリのみを含むように、パレット予測子の最大サイズを1に等しくなる(たとえば、M=1)ように設定することができる。次いでビデオデコーダは、現在のブロックに関する単一カラー値を示すパレットの中の単一パレットエントリとして、パレット予測子からの第1かつ唯一のエントリを使用する。この例では、パレット予測子が第1のエントリのみを有するので、ビデオエンコーダは、符号化ビットストリームの中でパレット予測子の中の第1のエントリに対応するインデックス値をシグナリングする必要がなく、ビデオデコーダは、符号化ビットストリームからパレット予測子の中の第1のエントリに対応するインデックス値を受信する必要がない。
上記で説明したように、パレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされることを単一カラーパレットフラグが示す(たとえば、single_color_palette_flag[x0][y0]==1)場合、現在のブロック内のピクセルのすべてが、同じ単一カラー値を共有する。パレット予測子が1つのエントリのみを含むようなM=1の例では、単一カラー値は、パレット予測子の1つのエントリ(たとえば、色成分cIdxのpreviousPaletteEntries[cIdx][0])から予測され得る。
たとえば、M=1の場合、パレットコーディングモードの単一カラーモードのシグナリングは、下のTable 2(表2)のように指定されることがあり、Table 2(表2)では、上記のSCC WD1.0に対する追加がイタリック体の文字によって示されている。Table 2(表2)に示すように、M=1およびsingle_color_palette_flag[x0][y0]==1の場合、現在のブロックに関する単一カラー値は、パレット予測子の中の1つのエントリから予測され、符号化ビットストリームの中で追加のシンタックス要素がシグナリングされる必要はない。M=1およびパレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされないこと示すsingle_color_palette_flag[x0][y0]==0の場合、従来のパレットコーディングモード設計の場合の追加のシンタックス要素(たとえば、palette_transpose_flagおよびpalette_share_flag)が符号化ビットストリームの中でシグナリングされ得る。
代替例では、M=1の場合、パレットコーディングモードの単一カラーモードのシグナリングは、下のTable 3(表3)のように指定されることがあり、Table 3(表3)では、上記のSCC WD1.0に対する追加がイタリック体の文字によって示されており、削除が、一重角括弧の中でREMOVEDという用語と、それに続く削除された文字とによって示されている。Table 3(表3)に示すように、M=1およびsingle_color_palette_flag[x0][y0]==1の場合、現在のブロックに関する単一カラー値は、パレット予測子の中の1つのエントリから予測され、符号化ビットストリームの中で追加のシンタックス要素がシグナリングされる必要はない。M=1およびパレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされないこと示すsingle_color_palette_flag[x0][y0]==0の場合、従来のパレットコーディングモード設計の場合の追加のシンタックス要素が符号化ビットストリームの中でシグナリングされ得る。Table 3(表3)では、palette_transpose_flagの前にpalette_share_flagがシグナリングされるように、追加のシンタックス要素の順序は変更されている。
別の例として、ビデオエンコーダとビデオデコーダの両方は、パレット予測子が最初のM個のエントリを含むように、パレット予測子の最大サイズをMに等しくなるように設定することができ、Mは1よりも大きい整数値(すなわち、M>1)である。この例では、パレット予測子は2つ以上のエントリを含むので、ビデオエンコーダは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用されるパレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値をシグナリングすることができる。ビデオデコーダは、パレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値を受信し、現在のブロックに関する単一カラー値を示すパレットの中の単一パレットエントリとして、パレット予測子からの最初のM個のエントリのうちの対応する1つを使用する。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
追加の例では、現在のブロックに関する単一カラー値がパレット予測子から予測されるパレットコーディングモードの単一カラーモードでは、ビデオエンコーダとビデオデコーダの両方は、現在のブロックに関する予測される単一パレットエントリを、後にコーディングされる隣接ブロックに関するパレットエントリを予測する際に使用するためにパレット予測子の第1の位置に移動させないことを決定し得る。これは、現在のブロックに関する予測されるパレットエントリが、後にコーディングされる隣接ブロック用のパレットの中のパレットエントリを予測するために使用される高い確率を有するので、パレット予測子の最初に移動し得るパレットコーディングモードの通常モードとは異なる。パレットコーディングモードの単一カラーモードでは、このルールは適用されなくてよい。このようにして、本開示の技法によれば、パレットコーディングモードの単一カラーモードの実施はできるだけ単純である。
開示する技法のさらに他の例では、現在のブロックに関する単一カラー値は、パレット予測子から予測され得るが、パレットコーディングモードの単一カラーモードでコーディングされる現在のブロックの単一カラー値の候補の数を低減するために、パレット予測子にプルーニングが適用され得る。たとえば、ビデオエンコーダとビデオデコーダの両方は、少なくとも1つのエントリを、少なくとも1つのエントリと現在のブロックの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレット予測子からプルーニングまたは除去することができる。
ある場合には、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の平均値であり得る。再構成ピクセルの上側隣接ラインは、現在のブロックの上側隣接ブロックに含まれる隣接行の中のすべてのピクセルを含み得る。再構成ピクセルの左側隣接ラインは、現在のブロックの左側隣接ブロックに含まれる隣接列の中のすべてのピクセルを含み得る。隣接ピクセルの平均値とパレット予測子の中の所与のパレットエントリとの間の差がしきい値よりも大きい場合、所与のパレットエントリは、パレットコーディングモードの単一カラーモードの候補として扱われず、ビデオエンコーダおよびビデオデコーダは、所与のエントリをパレット予測子からプルーニングまたは除去することができる。
別の場合には、上記で説明したように隣接ピクセルの平均値を使用するのではなく、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の中央値であり得る。隣接ピクセルの中央値とパレット予測子の中の所与のパレットエントリとの間の差がしきい値よりも大きい場合、所与のパレットエントリは、パレットコーディングモードの単一カラーモードの候補として扱われず、ビデオエンコーダおよびビデオデコーダは、所与のエントリをパレット予測子からプルーニングまたは除去することができる。
さらに別の場合には、上記で説明したように隣接ピクセルの平均値または中央値のうちの1つを使用するのではなく、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのいずれかにおける1つのピクセルのカラー値であり得る。一例では、比較のために使用される隣接ピクセルの1つのピクセルは、位置(0,0)の左上隅を有する現在のブロックに対する位置(-1,-1)のピクセルであり得る。別の例では、比較のために使用される隣接ピクセルの1つのピクセルは、位置(0,0)の現在のブロックの左上隅に隣接する位置(-1,0)の左側隣接ピクセルであり得る。さらなる例では、比較のために使用される隣接ピクセルの1つのピクセルは、位置(0,0)の現在のブロックの左上隅に隣接する位置(0,-1)の上側隣接ピクセルであり得る。
ビデオエンコーダおよびビデオデコーダは、パレット予測子の中のエントリの各々に対して、パレット予測子が1つまたは複数の残存エントリを含むように上述のプルーニングを実行することができる。次いでビデオエンコーダは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用されるパレット予測子の中の残存エントリのうちの1つに対応するインデックス値をシグナリングすることができる。ビデオデコーダは、パレット予測子の中の残存エントリのうちの1つに対応するインデックス値を受信し、現在のブロックに関する単一カラー値を示すパレットの中の単一パレットエントリとして、パレット予測子からの残存エントリのうちの対応する1つを使用する。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の残存エントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
開示する技法のまた別の例では、ビデオエンコーダは、スキップモードを使用して現在のブロックがコーディングされないことを示すスキップフラグ(たとえば、cu_skip_flag)をシグナリングした後、かつ予測モードフラグ(たとえば、pred_mode_flag)をシグナリングする前に、パレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされるべきかどうかを示すシンタックス要素(たとえば、single_color_palette_flag)をシグナリングすることができ、予測モードフラグは、現在のブロックが、パレットコーディングモードを使用してブロックが符号化されていない場合に、インター予測モードを使用してコーディングされるのか、それともイントラ予測モードを使用してコーディングされるのかを示す。他の場合には、上のTable 1(表1)に関して説明した従来のパレットコーディングモードと同様に、ビデオエンコーダは、現在のブロックがイントラ予測モードを使用してコーディングされることを示す予測モードフラグをシグナリングした後、単一カラーパレットフラグをシグナリングすることができる。たとえば、下のTable 4(表4)にイタリック体の文字によって示されるように、ビデオエンコーダは、スキップモードを使用して現在のブロックがコーディングされない(たとえば、!cu_skip_mode)場合に、符号化ビットストリームの中で単一カラーパレットフラグ(たとえば、single_color_palette_flag)をシグナリングすることができる。
下のTable 4(表4)にさらに示すように、現在のブロック内のすべてのピクセルが単一カラー値を有する場合に、ビデオエンコーダは、符号化ビットストリームの中で単一カラーパレットフラグ(たとえば、single_color_palette_flag)をシグナリングすることができ、ビデオデコーダは、パレットコーディングモードの単一カラーモードを使用してビデオデータの現在のブロックがコーディングされることを示す、符号化ビットストリームの中の単一カラーパレットフラグを受信することができる。現在のブロック内のピクセルのすべてが単一カラー値を有せず、パレットコーディングモードの単一カラーモードを使用して現在のブロックがコーディングされない(たとえば、!single_color_palette_flag)場合に、ビデオエンコーダは、符号化ビットストリームの中で別のフラグ(たとえば、normal_palette_flag)をシグナリングすることができ、ビデオデコーダは、パレットコーディングモードの通常モードを使用して現在のブロックがコーディングされるかどうかを示す、符号化ビットストリームの中の通常パレットフラグを受信することができる。この例では、単一カラーモードと通常モードの両方は、パレットコーディングモードのサブモードであり得る。
パレットコーディングモードの通常モードを使用して現在のブロックがコーディングされる場合、ビデオデコーダは、2つ以上のパレットエントリを含み得るパレットに関して、パレットコーディングモードの通常モードを使用して現在のブロックを復号することができる。いくつかの例では、通常パレットフラグは、従来のパレットモードコーディング設計において使用されるパレットモードフラグと実質的に同様となるように定義され得る。
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指す場合がある。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVCバージョン1によって指定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。本開示に従って説明するパレットベースコーディングモードに加えて、様々な非パレットベースコーディングモードについて以下で説明する。
図1に示すように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化ビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、ワイヤレス通信デバイス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータなどを含む、広範囲のデバイスを備え得る。
宛先デバイス14は、符号化ビデオデータをソースデバイス12からチャネル16を介して受信し得る。チャネル16は、符号化ビデオデータをソースデバイス12から宛先デバイス14に移動させることが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12がリアルタイムで符号化ビデオデータを宛先デバイス14に直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14へ送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、ワイヤレスおよび/またはワイヤードの通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体などの、ローカルにアクセスされる様々なデータ記憶媒体を含み得る。
さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化ビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶するとともに符号化ビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて符号化ビデオデータにアクセスし得る。データ接続の例示的なタイプは、ファイルサーバに記憶されている符号化ビデオデータにアクセスするために適切である、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
本開示の技法は、ワイヤレスの適用例または設定に限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオテレフォニーなどの用途をサポートするために、片方向または双方向のビデオ送信をサポートするように構成され得る。
図1に示すビデオコーディングシステム10は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間に必ずしもデータ通信を含まないビデオコーディングのセッティング(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データは、ローカルメモリから、ネットワークを介してストリーミングされて、または類似のやり方で取り出される。ビデオ符号化デバイスがデータを符号化するとともにメモリに記憶してよく、かつ/またはビデオ復号デバイスがメモリからデータを取り出すとともに復号してもよい。多くの例では、互いに通信しないが、単にデータをメモリへ符号化し、かつ/またはメモリからデータを取り出すとともに復号するデバイスによって、符号化および復号が実行される。
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前キャプチャされたビデオデータを含むビデオアーカイブ、ビデオデータをビデオコンテンツプロバイダから受信するためのビデオフィードインターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、符号化ビデオデータを宛先デバイス14へ出力インターフェース22を介して直接送信する。他の例では、復号および/または再生のために宛先デバイス14によって後でアクセスできるように、符号化ビデオデータはまた、記憶媒体またはファイルサーバへ記憶され得る。
図1の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、符号化ビデオデータをチャネル16を介して受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、または宛先デバイス14の外部にあってもよい。概して、ディスプレイデバイス32は復号ビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備え得る。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実施される場合、本開示の技法を実行するために、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読記憶媒体に記憶し得、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行し得る。前述のもののいずれか(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)は、1つまたは複数のプロセッサであると見なされてよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として一体化されてよい。
本開示は、概して、ある種の情報をビデオデコーダ30などの別のデバイスへ「シグナリングする」または「送信する」ビデオエンコーダ20に言及することがある。「シグナリングすること」または「送信すること」という用語は、概して、シンタックス要素、および/または圧縮ビデオデータを復号するために使用される他のデータの通信を指すことがある。そのような通信は、リアルタイムで、またはほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時点において符号化ビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶し、次いで、シンタックス要素が、この媒体に記憶された後の任意の時点において復号デバイスによって取り出され得るときに発生し得るような、時間の範囲にわたって発生することもある。したがって、ビデオデコーダ30がある種の情報を「受信する」と呼ばれることがあるが、情報の受信は、必ずしもリアルタイムで、またはほぼリアルタイムで発生するとは限らず、記憶後のある時点で媒体から取り出されることがある。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実施される場合、本開示の技法を実行するために、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読記憶媒体に記憶し得、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行し得る。前述のもののいずれか(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)は、1つまたは複数のプロセッサであると見なされてよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として一体化されてよい。
本開示は、概して、ある種の情報をビデオデコーダ30などの別のデバイスへ「シグナリングする」または「送信する」ビデオエンコーダ20に言及することがある。「シグナリングすること」または「送信すること」という用語は、概して、シンタックス要素、および/または圧縮ビデオデータを復号するために使用される他のデータの通信を指すことがある。そのような通信は、リアルタイムで、またはほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時点において符号化ビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶し、次いで、シンタックス要素が、この媒体に記憶された後の任意の時点において復号デバイスによって取り出され得るときに発生し得るような、時間の範囲にわたって発生することもある。
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上述のHEVC規格などの、HEVCバージョン1において記載されているビデオ圧縮規格に従って動作する。ベースのHEVC規格に加えて、HEVC向けのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を制作するための取組みが進行中である。加えて、たとえば、本開示で説明するようなパレットベースコーディングモードは、HEVC規格の拡張のために提供され得る。いくつかの例では、パレットベースコーディングのための本開示で説明する技法は、ITU-T-H.264/AVC規格などの他のビデオコーディング規格または将来の規格に従って動作するように構成されたエンコーダおよびデコーダに適用され得る。したがって、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングのためのパレットベースコーディングモードの適用例は、例として説明される。
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロであってよく、ルーマサンプルのアレイだけを含んでよい。
ピクチャの符号化表現を生成するために、ビデオエンコーダ20が、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概して類似であり得る。しかしながら、CTUは、必ずしも特定のサイズに限定されず、1つまたは複数のコーディングユニット(CU)を含んでよい。スライスは、ラスタ走査において連続的に順序付けられた整数個のCTUを含み得る。
コード化CTUを生成するために、ビデオエンコーダ20がCTUのコーディングツリーブロック上で4分木区分を再帰的に実行してコーディングツリーブロックをコーディングブロックに分割してよく、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロック、およびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、長方形(すなわち、正方形または非正方形)のブロックであってよい。CUの予測ユニット(PU)は、ピクチャの、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに対して、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
ビデオエンコーダ20は、PUに関する予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために、単予測または双予測を使用し得る。ビデオエンコーダ20がPUに関する予測ブロックを生成するために単予測を使用するとき、PUは単一のMVを有し得る。ビデオエンコーダ20がPUに関する予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
ビデオエンコーダ20がCUの1つまたは複数のPUに対して予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CUに関するルーマ残差ブロックを生成し得る。CUのルーマ残差ブロックの中の各サンプルは、CUの予測ルーマブロックのうちの1つの中のルーマサンプルとCUの元のルーマコーディングブロックの中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUに関するCb残差ブロックを生成し得る。CUのCb残差ブロックの中の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルとCUの元のCbコーディングブロックの中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUに関するCr残差ブロックを生成し得る。CUのCr残差ブロックの中の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルとCUの元のCrコーディングブロックの中の対応するサンプルとの間の差分を示し得る。
さらに、ビデオエンコーダ20は、4分木区分を使用して、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解し得る。変換ブロックは、同じ変換が適用されるサンプルの長方形ブロックであってもよい。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUに関するルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUに関するCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUに関するCr係数ブロックを生成し得る。
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化とは、概して、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリームの中に出力し得る。
ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化ピクチャの表現および関連するデータを形成するビットのシーケンスを含み得る。ビットストリームは、ネットワークアブストラクションレイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、0個のビットを含む。
異なるタイプのNALユニットが、異なるタイプのRBSPをカプセル化してよい。たとえば、第1のタイプのNALユニットがピクチャパラメータセット(PPS)用のRBSPをカプセル化してよく、第2のタイプのNALユニットがコード化スライス用のRBSPをカプセル化してよく、第3のタイプのNALユニットがSEI用のRBSPをカプセル化してよく、以下同様である。(パラメータセット用およびSEIメッセージ用のRBSPではなく)ビデオコーディングデータ用のRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、シンタックス要素をビットストリームから復号するために、ビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスと相反であり得る。
たとえば、ビデオデコーダ30は、PUのMVを使用して、現在のCUのPUに関する予測サンプルブロックを決定し得る。加えて、ビデオデコーダ30は、現在のCUのTUに関連する変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、変換係数ブロックに対して逆変換を実行して、現在のCUのTUに関連する変換ブロックを再構成し得る。ビデオデコーダ30は、現在のCUのPUに関する予測サンプルブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構成し得る。ピクチャのCUごとにコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。たとえば、パレットベースコーディングでは、上記で説明したイントラ予測またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すためのカラーのテーブルとして、いわゆるパレットをコーディングし得る。各ピクセルは、ピクセルのカラーを表すパレットの中のエントリに関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ピクセル値をパレットの中の適切な値に関連付けるインデックスをコーディングし得る。
上記の例では、ビデオエンコーダ20は、ブロック用のパレットを決定することと、各ピクセルの値を表すためのエントリをパレットの中に配置することと、ピクセル値をパレットに関連付けるピクセルに関するインデックス値とともにパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、ブロック用のパレット、ならびにブロックのピクセルに関するインデックス値を、符号化ビットストリームから取得し得る。ビデオデコーダ30は、ブロックのピクセル値を再構成するために、ピクセルのインデックス値をパレットのエントリに関連付け得る。
いくつかの例では、ビデオエンコーダ20は、同じピクセル値を有する所与の走査順序でのいくつかの連続するピクセルを示す1つまたは複数のシンタックス要素を符号化することができる。同様の値のピクセル値のストリングは本明細書では「run」と呼ばれ得る。例示のための例では、所与の走査順序での2つの連続するピクセルが異なる値を有する場合、runはゼロに等しい。所与の走査順序での2つの連続するピクセルが同じ値を有するが、走査順序での第3のピクセルが異なる値を有する場合、runは1に等しい。ビデオデコーダ30は、runを示すシンタックス要素を符号化ビットストリームから取得し、そのデータを使用して、同じインデックス値を有する連続するピクセルロケーションの数を判断することができる。
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、マップの1つまたは複数のエントリのためのラインコピーを実行することができる。たとえば、ビデオエンコーダ20は、マップの中の特定のエントリに関するピクセル値が、特定のエントリの上にあるラインの中のエントリに等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリの上にあるラインの中のエントリに等しい走査順序でのインデックスの数を、runとして示し得る。この例では、ビデオエンコーダ20およびビデオデコーダ30は、指定された隣接ラインからの、また現在コーディングされているマップのラインのための指定された数のエントリからのインデックス値をコピーすることができる。
本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックをコーディングするための技法を含む、本開示で説明するパレットコーディングのための技法の任意の組合せを実行することができる。開示する技法は、単一カラー値を有するブロックを、パレットコーディングモードの通常モードと比較して低減された数のビットによりコーディングすることを可能にする。特に、いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、図5〜図6に関してより詳細に説明する本開示の技法を実行するように構成され得る。
図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は説明のために提供され、広く例示されるとともに本開示で説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングのコンテキストにおけるビデオエンコーダ20について説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
ビデオエンコーダ20は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオエンコーダ20は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVCバージョン1によって指定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオエンコーダ20は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すパレットの中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレットの中のエントリに関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデコーダ30によって、ビデオデータを復号するために使用され得る。
図2の例では、ビデオエンコーダ20は、ビデオデータメモリ98と、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。ビデオエンコーダ20は最初に、ビデオデータメモリ(図示せず)にビデオデータを記憶することができる。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。ビデオエンコーダ20はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成されたパレットベース符号化ユニット122を含む。パレットベース符号化ユニット122は、パレットベースコーディングを実行することと、パレットベースコーディングモードおよび/またはパレット予測子をシグナリングするためにシンタックス要素を生成することとができる。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能構成要素を含んでよい。
ビデオデータメモリ98は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶してもよい。ビデオデータメモリ98に記憶されるビデオデータは、たとえば、ビデオソース18から取得されてもよい。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ98および復号ピクチャバッファ116は、ダイナミックランダムアクセスメモリ(DRAM)(同期DRAM(SDRAM)を含む)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成されてもよい。ビデオデータメモリ98および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。様々な例では、ビデオデータメモリ98は、ビデオエンコーダ20の他の構成要素とともにオンチップであってもよく、または、それらの構成要素に対してオフチップであってもよい。
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB)、および対応するCTBに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連するCTBを4つの等しいサイズのサブブロックに区分し得、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの中でCUに関連付けられるコーディングブロックを区分し得る。したがって、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。先に示したように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測に対して2N×2NまたはN×NとしてのPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似のものとしての対称のPUサイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測に対して2N×nU、2N×nD、nL×2N、およびnR×2NとしてのPUサイズ向けの非対称区分をサポートし得る。
インター予測処理ユニット120は、インター予測をCUの各PUに対して実行することによって、PUに関する予測データを生成し得る。PUに関する予測データは、PUの予測サンプルブロックおよびPUに関する動き情報を含み得る。インター予測ユニット120は、PUがIスライスの中にあるのか、Pスライスの中にあるのか、それともBスライスの中にあるのかに応じて、CUのPUのための異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライスの中にある場合、インター予測ユニット120は、インター予測をPUに対して実行しない。したがって、Iモードで符号化されるブロックの場合、予測されるブロックは、同じフレーム内で以前符号化された隣接ブロックからの空間予測を使用して形成される。
PUがPスライスの中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUに関する参照領域を求めて参照ピクチャのリスト(たとえば、「RefPicList0」)の中の参照ピクチャを検索し得る。PUに関する参照領域は、PUのサンプルブロックに最も密に対応するサンプルブロックを含む、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUに関する参照領域を含む参照ピクチャのRefPicList0の中での位置を示す参照インデックスを生成し得る。加えて、動き推定ユニットは、PUのコーディングブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMVを生成し得る。たとえば、MVは、現在の復号ピクチャの中の座標から参照ピクチャの中の座標までのオフセットを提供する2次元ベクトルであってよい。動き推定ユニットは、PUの動き情報として参照インデックスおよびMVを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照ロケーションにおける実際のサンプルまたは補間されたサンプルに基づいて、PUの予測サンプルブロックを生成し得る。
PUがBスライスの中にある場合、動き推定ユニットは、PUに対して単予測または双予測を実行し得る。PUに対して単予測を実行するために、動き推定ユニットは、PUに関する参照領域を求めてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを検索し得る。動き推定ユニットは、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1の中での位置を示す参照インデックス、PUのサンプルブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMV、および参照ピクチャがRefPicList0の中にあるのか、それともRefPicList1の中にあるのかを示す1つまたは複数の予測方向インジケータを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
PUに対して双方向インター予測を実行するために、動き推定ユニットは、PUに関する参照領域を求めてRefPicList0の中の参照ピクチャを検索し得、また、PUに関する別の参照領域を求めてRefPicList1の中の参照ピクチャを検索し得る。動き推定ユニットは、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1の中での位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域に関連付けられた参照ロケーションとPUのサンプルブロックとの間の空間変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスおよびMVを含み得る。動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
イントラ予測処理ユニット126は、イントラ予測をPUに対して実行することによって、PUに関する予測データを生成し得る。PUに関する予測データは、PUに関する予測サンプルブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
イントラ予測をPUに対して実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUに関する予測データの複数のセットを生成し得る。イントラ予測モードを使用してPUのための予測データのセットを生成するために、イントラ予測処理ユニット126は、イントラ予測モードに関連付けられる方向で、隣接PUのサンプルブロックからPUのサンプルブロックにわたってサンプルを延ばし得る。PU、CU、およびCTUに対して左から右、上から下への符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左であってよい。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連する領域のサイズに依存し得る。
予測処理ユニット100は、PUに対してインター予測処理ユニット120によって生成される予測データ、またはPUに対してイントラ予測処理ユニット126によって生成される予測データの中から、CUのPUに関する予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいて、CUのPUに関する予測データを選択する。選択される予測データの予測サンプルブロックは、選択予測サンプルブロックと本明細書で呼ばれることがある。
残差生成ユニット102は、CUのルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロックと、CUのPUの選択予測ルーマブロック、選択予測Cbブロックおよび選択予測Crブロックとに基づいて、CUのルーマ残差ブロック、Cb残差ブロックおよびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、CUの残差ブロックを、残差ブロックの中の各サンプルがCUのコーディングブロックの中のサンプルとCUのPUの対応する選択予測サンプルブロックの中の対応するサンプルとの間の差分に等しい値を有するように、生成し得る。
変換処理ユニット104は、4分木区分を実行して、CUに関連付けられた残差ブロックをCUのTUに関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づいてもよく、基づかなくてもよい。「残差4分木」(RQT)と呼ばれる4分木構造が、領域の各々に関連するノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
変換処理ユニット104は、1つまたは複数の変換をTUの変換ブロックに適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられたブロックを変換するために、様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
量子化ユニット106は、係数ブロックの中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、nビット変換係数は、量子化中にmビット変換係数に切り捨てられてよく、nはmよりも大きい。量子化ユニット106は、CUのTUに関連する係数ブロックを、CUに関連する量子化パラメータ(QP)値に基づいて量子化することができる。ビデオエンコーダ20は、CUに関連するQP値を調整することによって、CUに関連する係数ブロックに適用される量子化の程度を調整し得る。量子化が情報の損失をもたらすことがあり、したがって、量子化変換係数の精度は元の精度よりも低い場合がある。
逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、逆量子化および逆変換を係数ブロックに適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測サンプルブロックからの対応するサンプルに加算して、TUに関連付けられた再構成された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成し得る。
フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUに関連するコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット114が1つまたは複数のデブロッキング動作を再構成されたコーディングブロックに対して実行した後、復号ピクチャバッファ116は、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、インター予測を他のピクチャのPUに対して実行するために、再構成されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャの中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116の中の再構成されたコーディングブロックを使用し得る。
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、係数ブロックを量子化ユニット106から受信し得、シンタックス要素を予測処理ユニット100から受信し得る。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、1つまたは複数のエントロピー符号化動作をデータに対して実行し得る。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成された、エントロピー符号化されたデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUに関するRQTを表すデータを含み得る。
本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースコーディングを実行するように構成され得る。HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて(本開示全体にわたって)本明細書で説明される、開示されるプロセスのすべては、付加的または代替的に、PUに適用され得る。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるべきシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
パレットベース符号化ユニット122は、たとえば、パレットベース符号化を、たとえば、CUまたはPUに関して、パレットベース符号化モードが選択されたときに実行することができる。たとえば、パレットベース符号化ユニット122は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックにおける少なくともいくつかのピクセルロケーションのピクセル値を表すパレットの中のピクセル値を選択し、ビデオデータのブロックにおけるピクセルロケーションのうちの少なくともいくつかを、パレットの中の選択されたピクセル値にそれぞれ対応するパレットの中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット122によって実行されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
本開示の技法によれば、ビデオエンコーダ20は、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックを符号化するように構成され得る。本開示で説明する技法によれば、ブロック内のすべてのピクセルが、パレットコーディングモードの単一カラーモードを使用してブロックが符号化されるべきであるような単一カラー値を有する場合に、ビデオエンコーダ20のパレットベース符号化ユニット122は、単一カラー値を示す単一パレットエントリを含むブロック用のパレットを生成する。次いでパレットベース符号化ユニット122は、パレットに関して単一カラーモードを使用してブロックを符号化し、符号化ビットストリームの中で、単一カラーモードを使用してブロックが符号化されていることを示すシンタックス要素をシグナリングする。いくつかの例では、パレットベース符号化ユニット122はまた、予測されないパレットエントリとして、またはパレット予測子からの予測されるエントリとして、符号化ビットストリームの中で単一カラー値をシグナリングすることができる。
このようにして、単一カラー値を有するブロックが、パレットコーディングモードの通常モードと比較して低減された数のビットにより、パレットコーディングモードの単一カラーモードを使用して符号化され得る。たとえば、ビデオエンコーダ20は現在のブロックを、パレットを生成するために使用されるバイナリパレット予測子ベクトル、パレットに含まれるいくつかの予測されないパレットエントリおよびそれらの対応する値、パレットに含まれないカラーを有するエスケープピクセルがブロックに存在するかどうかを示すためのフラグ、またはブロック内のピクセルに関するカラー値を示すパレットエントリに対応する任意のインデックス値を符号化する必要なく、パレットコーディングモードの単一カラーモードを使用して符号化することができる。パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックを符号化するための技法については、図5に関してより詳細に説明する。
図3は、本開示の技法を実施するように構成されている例示的なビデオデコーダ30を示すブロック図である。図3は説明のために提供され、広く例示されるとともに本開示で説明されるような技法の限定でない。説明のために、本開示は、HEVCコーディングのコンテキストにおけるビデオデコーダ30について説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
ビデオデコーダ30は、本開示で説明する様々な例による、パレットベースビデオコーディングのための技法を実行し、符号化ビットストリームの中でシグナリングされるようなパレット予測子に関連する情報に基づいてパレットを生成するように構成され得るデバイスの一例を表す。ビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的に復号するように構成され得る。非パレットベースコーディングモードは、HEVCバージョン1によって指定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオデコーダ30は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。
図3の例では、ビデオデコーダは、ビデオデータメモリ148と、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。ビデオデコーダ30はまた、パレット予測子に関連する情報を復号するための技法を含む、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成されたパレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含んでよい。
ビデオデータメモリ148は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶してもよい。ビデオデータメモリ148に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得されてもよい。ビデオデータメモリ148は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成してもよい。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ148および復号ピクチャバッファ162は、ダイナミックランダムアクセスメモリ(DRAM)(同期DRAM(SDRAM)を含む)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成されてもよい。ビデオデータメモリ148および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。様々な例では、ビデオデータメモリ148は、ビデオデコーダ30の他の構成要素とともにオンチップであってもよく、または、それらの構成要素に対してオフチップであってもよい。
ビデオデータメモリ148、すなわちCPBは、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信および記憶し得る。エントロピー復号ユニット150は、符号化ビデオデータ(たとえば、NALユニット)をビデオデータメモリ148から受信するとともにNALユニットを構文解析して、シンタックス要素を復号し得る。エントロピー復号ユニット150は、NALユニットの中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、シンタックス要素をコード化スライスNALユニットから抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関係しているシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャに関連付けられたPPSを識別するシンタックス要素を含み得る。
シンタックス要素をビットストリームから復号することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構成動作を実行し得る。区分されていないCUに対して再構成動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実行し得る。CUのTUごとに再構成動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構成し得る。
CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、逆量子化ユニット154が適用するべき量子化の程度と、同様に逆量子化の程度とを決定するために、TUのCUに関連するQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスおよび圧縮されたシーケンスを表すために使用されるビット数の比が、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUに関連付けられた残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
PUがイントラ予測を使用して符号化されている場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUに関する予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUに関する予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUに対するイントラ予測モードを決定し得る。
予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、PUがインター予測を使用して符号化されている場合、エントロピー復号ユニット150は、PUに関する動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUに関する1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUに関する1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUに関する予測ルーマブロック、予測Cbブロックおよび予測Crブロックを生成し得る。
再構成ユニット158は、CUのTUに関連付けられたルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック、ならびにCUのPUの予測ルーマブロック、予測Cbブロックおよび予測Crブロック、すなわち、適用可能なとき、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロックのサンプルを、予測ルーマブロック、予測Cbブロックおよび予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロックを再構成し得る。
フィルタユニット160は、デブロッキング動作を実行して、CUのルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロックに関連するブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162の中のルーマブロック、CbブロックおよびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。このようにして、ビデオデコーダ30は、ビットストリームから、有意ルーマ係数ブロックの変換係数レベルを抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、表示用にコーディングブロックを出力することができる。
本開示の様々な例によれば、ビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。パレットベース復号ユニット165は、たとえば、パレットベース復号を、たとえば、CUまたはPUに関して、パレットベース復号モードが選択されたときに実行することができる。たとえば、パレットベース復号ユニット165は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。また、パレットベース復号ユニット165は、パレット予測子に関連する符号化ビデオデータビットストリームからの情報を復号し、そのような情報を使用して、ビデオデータを復号する際に使用するためのパレットを予測するように構成され得る。様々な機能がパレットベース復号ユニット165によって実行されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
本開示の技法によれば、ビデオデコーダ30は、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックを復号するように構成され得る。開示する技法によれば、パレットコーディングモードの単一カラーモードを使用してブロックが復号されるべきであることを示す符号化ビットストリームの中のシンタックス要素を受信すると、パレットベース復号ユニット165は、単一カラー値を示す単一パレットエントリを含むブロック用のパレットを生成し、パレットに関してブロックを復号し、それによりブロック内のすべてのピクセルが、パレットに示される単一カラー値を有するようにする。
いくつかの例では、パレットベース復号ユニット165は、予測されないパレットエントリとして符号化ビットストリームの中の単一カラー値を受信することと、パレットの中の単一パレットエントリとして予測されないパレットエントリを使用することとに基づいて、ブロック用のパレットを生成することができる。他の例では、パレットベース復号ユニット165は、パレットの中の単一パレットエントリとなるように、単一カラー値を示すパレット予測子の中のエントリを選択することに基づいて、ブロック用のパレットを生成することができる。概して、パレット予測子は、以前復号されたブロックの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含むことができる。
このようにして、単一カラー値を有するブロックが、パレットコーディングモードの通常モードと比較して低減された数のビットにより、パレットコーディングモードの単一カラーモードを使用して復号され得る。たとえば、ビデオデコーダ30は現在のブロックを、パレットを生成するために使用されるバイナリパレット予測子ベクトル、パレットに含まれるべきいくつかの予測されないパレットエントリおよびそれらの対応する値、パレットに含まれないカラーを有するエスケープピクセルがブロックに存在するかどうかを示すためのフラグ、またはブロック内のピクセルに関するカラー値を示すパレットエントリに対応する任意のインデックス値を復号する必要なく、パレットコーディングモードの単一カラーモードを使用して復号することができる。パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有するビデオデータのブロックを復号するための技法については、図6に関してより詳細に説明する。
図4は、本開示で説明する技法によるパレットベースビデオコーディングのためのパレットエントリを決定することの一例を示す概念図である。図4の例は、第1のパレット184に関してパレットコーディングモードを用いてコーディングされた第1のコーディングユニット(CU)180と、第2のパレット192に関してパレットコーディングモードを用いてコーディングされた第2のCU188とを有するピクチャ178を含む。以下でより詳細に説明されるように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードを用いてコーディングされたブロック196、およびインター予測コーディングモードを用いてコーディングされたブロック200を含む。
図4の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのようにして限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
概して、パレットは、現在コーディングされているCU、すなわち、図4の例ではCU188にとって支配的かつ/または代表的ないくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むように示される。いくつかの例では、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、パレットをCUの色成分ごとに別個にコーディングし得る。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分用のパレット、CUの第1のクロマ(U)成分用の別のパレット、およびCUの第2のクロマ(V)成分用のさらに別のパレットを符号化し得る。この例では、YパレットのエントリがCUのピクセルのY値を表し得、UパレットのエントリがCUのピクセルのU値を表し得、VパレットのエントリがCUのピクセルのV値を表し得る。
他の例では、ビデオエンコーダ20は、CUのすべての色成分用の単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yi、Ui、およびViを含むトリプル値であるi番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々に関する値を含む。したがって、複数の個々のパレットを有するパレットのセットとしての第1のパレット184および第2のパレット192の表現は、一例にすぎず限定を意図しない。
図4の例では、第1のパレット184は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する、3つのエントリ202〜206を含む。エントリ202〜206は、パレットインデックスを、それぞれ、ピクセル値A、ピクセル値B、およびピクセル値Cを含むピクセル値に関連付ける。本明細書で説明するように、第1のCU180の実際のピクセル値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、パレットインデックス1〜3を使用してブロックのピクセルをコーディングするために、パレットベースコーディングを使用し得る。すなわち、第1のCU180のピクセル位置ごとに、ビデオエンコーダ20は、ピクセルに関するインデックス値を符号化し得、その場合、インデックス値は、第1のパレット184のうちの1つまたは複数の中のピクセル値に関連付けられる。ビデオデコーダ30は、パレットインデックスをビットストリームから取得し得、パレットインデックスおよび第1のパレット184のうちの1つまたは複数を使用して、ピクセル値を再構成し得る。
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、以前のパレット、この例では、第1のパレット184がそこから決定される1つまたは複数のブロックの位置を特定し得る。予測の目的のために使用されているエントリの組合せは、パレット予測子と呼ばれ得る。
図4の例では、第2のパレット192は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する、3つのエントリ208〜212を含む。エントリ208〜212は、パレットインデックスを、それぞれ、ピクセル値A、ピクセル値B、およびピクセル値Dを含むピクセル値に関連付ける。この例では、ビデオエンコーダ20は、(パレット予測子はいくつかのブロックのエントリを含み得るが、パレット予測子を表す)第1のパレット184のどのエントリが第2のパレット192に含まれるのかを示す1つまたは複数のシンタックス要素をコーディングし得る。
図4の例では、1つまたは複数のシンタックス要素が、ベクトル216として示される。ベクトル216は、いくつかの関連付けられたビン(または、ビット)を有し、各ビンは、パレット予測子の中の対応するエントリが現在のパレットのエントリを予測するために使用されるかどうかを示す。たとえば、ベクトル216は、第1のパレット184の最初の2つのエントリ(202および204)が第2のパレット192の最初の2つのエントリ(208および210)に含まれる(ベクトル216の中の「1」としての値)一方、第1のパレット184の第3のエントリ206が第2のパレット192に含まれない(ベクトル216の中の「0」としての値)ことを示す。この例では、第2のパレット192の第3のエントリ212によって示されるピクセル値Dは、符号化ビットストリームの中で明示的にシグナリングされ得る。図4の例では、ベクトルはブールベクトルである。ベクトルは、バイナリパレット予測ベクトルと呼ばれ得る。
いくつかの例では、上述のように、ビデオエンコーダ20およびビデオデコーダ30は、パレット予測を実行するとき、パレット予測子(パレット予測子テーブルまたはパレット予測子リストと呼ばれることもある)を決定し得る。パレット予測子は、現在のブロックをコーディングするためのパレットの1つまたは複数のエントリを予測するために使用される、以前コーディングされた隣接ブロックの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含み得る。ビデオエンコーダ20およびビデオデコーダ30は、同じ方式でパレット予測子を構成し得る。ビデオエンコーダ20およびビデオデコーダ30は、パレット予測子の中のどのエントリが現在のブロックをコーディングするためのパレットにコピーされるべきであるのかを示すためのデータ(ベクトル216など)をコーディングし得る。
したがって、いくつかの例では、以前コーディングされたCU用のパレットエントリは、パレット予測子リストに記憶され得る。このリストは、現在のCU用のパレットの中のパレットエントリを予測するために使用され得る。いくつかの例では、現在のCUに関する予測されるパレットエントリは、後にコーディングされる隣接CU用のパレットの中のパレットエントリを予測するために使用される高い確率を有するので、パレット予測子リストの最初に移動し得る。リストの中のどのエントリが現在のパレットの中で再使用されるかを示すために、ビットストリームの中でバイナリパレット予測ベクトルがシグナリングされ得る。2015年3月24日に出願された米国出願第14/667,411号では、2分木ベースのシグナリング方法および末尾位置ベースのシグナリング方法が、バイナリパレット予測ベクトルをコーディングするために使用され、ランレングスコーディングが、バイナリパレット予測ベクトルを圧縮するために使用される。一例では、ランレングス値は、0次指数ゴロム符号を使用してコーディングされる。2014年5月23日に出願された米国仮出願第62/002,741号では、グループベースのシグナリング方法が、バイナリパレット予測ベクトルをコーディングするために使用される。
本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、単一カラー値を示す単一パレットエントリのみを含むパレットに関して、パレットコーディングモードのサブモードとして単一カラーモードを使用して、単一カラー値を有する現在のCUをコーディングする(たとえば、それぞれ符号化および復号する)ように構成され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、単一カラー値を示す単一パレットエントリを含むように、現在の単一カラーCU用のパレットを生成することができる。いくつかの例では、現在のCU用のパレットの単一パレットエントリによって示される単一カラー値は、たとえば、第2のパレット192の第3のエントリ212の中のピクセル値Dと同様の、予測されないパレットエントリとして、符号化ビットストリームの中で明示的にシグナリングされ得る。他の例では、現在のCU用のパレットの単一パレットエントリによって示される単一カラー値は、パレット予測子から予測され得る。現在のCU用のパレットの中の単一パレットエントリを予測することのいくつかの具体例について、以下で説明する。
一例では、単一カラー値を示すパレット予測子の中のエントリに対応するインデックス値が、符号化ビットストリームの中でシグナリングされ得、ビデオデコーダ30は、現在のCU用のパレットの中の単一パレットエントリとして、パレット予測子からの対応するエントリを使用し得る。別の例では、パレット予測子が、単一カラー値を示す第1のエントリ、たとえば、パレット予測子を表す第1のパレット184の第1のエントリ202のみを含むように、パレット予測子の最大サイズが1に等しく設定され得る。この場合、ビデオデコーダ30は、符号化ビットストリームの中で第1のエントリのインデックス値を受信する必要なく、現在の単一カラーCU用のパレットの中の単一パレットエントリとして、パレット予測子からの第1かつ唯一のエントリを使用することができる。
さらなる例では、パレット予測子が最初のM個のエントリ、たとえば、M=2の場合にパレット予測子を表す第1のパレット184の第1のエントリ202および第2のエントリ204を含むように、パレット予測子の最大サイズが、1よりも大きい整数値であるMに等しく設定され得る。この例では、単一カラー値を示すパレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値が、符号化ビットストリームの中でシグナリングされ得、ビデオデコーダ30は、現在の単一カラーCU用のパレットの中の単一パレットエントリとして、最初のM個のエントリのうちの対応する1つを使用し得る。
別の例では、少なくとも1つのエントリが、少なくとも1つのエントリと現在のCUの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレット予測子からプルーニングまたは除去され、その場合に隣接ピクセルの値は、隣接ピクセルの平均値、隣接ピクセルの中央値、または隣接ピクセルのうちの1つのカラー値であり得る。この例では、単一カラー値を示すパレット予測子の中の1つまたは複数の残存エントリのうちの1つに対応するインデックス値が、符号化ビットストリームの中でシグナリングされ得、ビデオデコーダ30は、現在の単一カラーCU用のパレットの中の単一パレットエントリとして、残存エントリのうちの対応する1つを使用し得る。前述の2つの例のいずれにおいても、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、パレット予測子のインデックス値をシグナリングするために必要なビット数を低減することができる。
さらに、パレットコーディングモードの通常モードとは異なり、現在の単一カラーCU用のパレットの中の予測される単一パレットエントリは、後にコーディングされる隣接CUに関するパレットエントリを予測する際に使用するためにパレット予測子の第1の位置に移動しなくてよい。このようにして、本開示の技法によれば、パレットコーディングモードの単一カラーモードの実施はできるだけ単純である。
図5は、パレットコーディングモードのサブモードとして単一カラーモードを使用してビデオデータのブロックを符号化するビデオエンコーダの例示的な動作を示すフローチャートである。図5に示す例示的な動作は、図2からのビデオエンコーダ20によって実行され得る。
本開示で説明する技法によれば、ビデオエンコーダ20は、ビデオデータのブロック内のすべてのピクセルが、パレットコーディングモードのサブモードとして単一カラーモードを使用してブロックが符号化されるべきであるような単一カラー値を有するかどうかを判断する(220)。パレットコーディングモードの単一カラーモードを使用してブロックが符号化されるべきである場合、ビデオエンコーダ20のパレットベース符号化ユニット122は、単一カラー値を示す単一パレットエントリを含む現在のブロック用のパレットを生成する(222)。現在のブロック用のパレットを生成すると、パレットベース符号化ユニット122は、パレットに関してパレットコーディングモードの単一カラーモードを使用して、現在のブロックを符号化する(224)。
たとえば、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は、予測されないパレットエントリとしてパレットの中の単一パレットエントリによって示される単一カラー値をシグナリングすることができる。別の例として、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用されるパレット予測子の中のエントリを選択することができる。図4に関して上記で説明したように、パレット予測子は、現在のブロック用のパレットの中の単一パレットエントリを予測するために使用され得る、以前符号化されたブロックの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含む。単一パレットエントリを予測することのいくつかの具体例について、以下で説明する。
一例として、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用されるパレット予測子の中の選択されたエントリに対応するインデックス値をシグナリングすることができる。
別の例では、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は、パレット予測子が第1のエントリのみを含むように、パレット予測子の最大サイズを1に等しくなるように設定することができ、第1のエントリは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用される選択されたエントリである。この例では、パレットベース符号化ユニット122は、符号化ビットストリームの中でパレット予測子の中の第1のエントリに対応するインデックス値をシグナリングする必要なく、現在のブロック用のパレットの中の単一パレットエントリを予測するために、パレット予測子からの第1かつ唯一のエントリを使用することができる。
追加の例では、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は、パレット予測子が最初のM個のエントリを含むように、パレット予測子の最大サイズをMに等しくなるように設定することができ、Mは1よりも大きい整数値である。次いでパレットベース符号化ユニット122は、パレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値をシグナリングすることができ、最初のM個のエントリのうちの1つは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用される選択されたエントリである。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
別の例では、単一カラーモードを使用して現在のブロックを符号化するために、パレットベース符号化ユニット122は少なくとも1つのエントリを、少なくとも1つのエントリと現在のブロックの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレット予測子からプルーニングまたは除去することができる。場合によっては、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の平均値であり得る。他の場合には、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の中央値であり得る。さらに他の場合には、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのいずれかにおける再構成ピクセルのうちの1つのカラー値であり得る。パレット予測子からの所与のエントリと現在のブロックの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレットベース符号化ユニット122は、所与のエントリをパレット予測子からプルーニングまたは除去することができる。
パレットベース符号化ユニット122は、パレット予測子の中のエントリの各々に対して、パレット予測子が1つまたは複数の残存エントリを含むように上述のエントリ除去判定を実行することができる。次いでパレットベース符号化ユニット122は、パレット予測子の中の残存エントリのうちの1つに対応するインデックス値をシグナリングすることができ、残存エントリのうちの1つは、単一カラー値を示すパレットの中の単一パレットエントリを予測するために使用される選択されたエントリである。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の残存エントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
さらに、パレット予測子の中の選択されたエントリから予測される単一パレットエントリを含むブロック用のパレットに関して、パレットコーディングモードの単一カラーモードを使用して現在のブロックを符号化した後、パレットベース符号化ユニット122は、現在のブロックに関する予測される単一パレットエントリを、後に符号化される隣接ブロックに関するパレットエントリを予測する際に使用するためにパレット予測子の第1の位置に移動させないことを決定し得る。これは、現在のブロックに関する予測されるパレットエントリが、後にコーディングされる隣接ブロック用のパレットの中のパレットエントリを予測するために使用される高い確率を有するので、パレット予測子の最初に移動し得るパレットコーディングモードの通常モードとは異なる。このようにして、本開示の技法によれば、パレットコーディングモードの単一カラーモードの実施はできるだけ単純である。
さらに本開示で説明する技法によれば、ビデオエンコーダ20のパレットベース符号化ユニット122は、パレットコーディングモードの単一カラーモードを使用して現在のブロックが符号化されていることを示すシンタックス要素をシグナリングする(226)。
いくつかの例では、ビデオエンコーダ20は、パレットコーディングモードの単一カラーモードを使用してビデオデータの現在のブロックが符号化されているかどうかを示すシンタックス要素(たとえば、フラグ)を符号化ビットストリームの中でシグナリングすることができる。現在のブロック内のピクセルのすべてが、パレットコーディングモードの単一カラーモードを使用してブロックが符号化されるべきではないような単一カラー値を有しない場合、ビデオエンコーダ20は、パレットコーディングモードの通常モードを使用して現在のブロックが符号化されているかどうかを示す別のシンタックス要素(たとえば、フラグ)を符号化ビットストリームの中でシグナリングすることができる。この例では、単一カラーモードと通常モードの両方は、パレットコーディングモードのサブモードであり得る。
他の例では、ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータの現在のブロックが符号化されているかどうかを示す第1シンタックス要素(たとえば、フラグ)を符号化ビットストリームの中でシグナリングし、パレットコーディングモードを使用して現在のブロックが符号化されている場合、パレットコーディングモードの単一カラーモードを使用して現在のブロックが符号化されているかどうかを示す第2のシンタックス要素(たとえば、フラグ)を符号化ビットストリームの中でシグナリングすることができる。
場合によっては、ビデオエンコーダ20は、スキップモードを使用して現在のブロックが符号化されていないことを示すスキップフラグをシグナリングした後、かつ予測モードフラグをシグナリングする前に、パレットコーディングモードの単一カラーモードを使用して現在のブロックが符号化されているかどうかを示すシンタックス要素をシグナリングすることができ、予測モードフラグは、現在のブロックが、パレットコーディングモードを使用してブロックが符号化されていない場合に、インター予測モードを使用して符号化されているのか、それともイントラ予測モードを使用して符号化されているのかを示す。他の場合には、ビデオエンコーダ20は、現在のブロックがイントラ予測モードを使用して符号化されていることを示す予測モードフラグをシグナリングした後、シンタックス要素をシグナリングすることができる。
図6は、パレットコーディングモードのサブモードとして単一カラーモードを使用してビデオデータのブロックを復号するビデオデコーダの例示的な動作を示すフローチャートである。図6に示す例示的な動作は、図3からのビデオデコーダ30によって実行され得る。
ビデオデコーダ30は、ビデオエンコーダ20などのビデオエンコーダから符号化ビットストリームを受信する。符号化ビットストリームは、少なくとも1つのピクチャに関するビデオデータの符号化ブロックの表現およびビデオデータに関連する1つまたは複数のシンタックス要素を含む。本開示で説明する技法によれば、ビデオデコーダ30は、パレットコーディングモードのサブモードとして単一カラーモードを使用してビデオデータのブロックが復号されるべきかどうかを示すシンタックス要素を受信することができる(230)。
いくつかの例では、ビデオデコーダ30は、パレットコーディングモードの単一カラーモードを使用してビデオデータの現在のブロックが復号されるべきかどうかを示すビットストリームの中のシンタックス要素(たとえば、フラグ)を受信し、単一カラーモードを使用して現在のブロックが復号されるべきではない場合に、パレットコーディングモードの通常モードを使用して現在のブロックが復号されるべきかどうかを示すビットストリームの中の別のシンタックス要素(たとえば、フラグ)を受信することができる。この例では、単一カラーモードと通常モードの両方は、パレットコーディングモードのサブモードであり得る。
他の例では、ビデオデコーダ30は、パレットコーディングモードを使用してビデオデータの現在のブロックが復号されるべきかどうかを示すビットストリームの中の第1のシンタックス要素(たとえば、フラグ)を受信し、パレットコーディングモードを使用して現在のブロックが復号されるべきである場合に、パレットコーディングモードの単一カラーモードを使用して現在のブロックが復号されるべきかどうかを示すビットストリームの中の第2のシンタックス要素(たとえば、フラグ)を受信することができる。
場合によっては、ビデオデコーダ30は、スキップモードを使用して現在のブロックが復号されるべきではないことを示すスキップフラグを受信した後、かつ予測モードフラグを受信する前に、パレットコーディングモードの単一カラーモードを使用して現在のブロックが復号されるべきかどうかを示すシンタックス要素を受信することができ、予測モードフラグは、現在のブロックが、パレットコーディングモードを使用してブロックが復号されるべきではない場合に、インター予測モードを使用して復号されるべきか、それともイントラ予測モードを使用して復号されるべきかを示す。他の場合には、ビデオデコーダ30は、現在のブロックがイントラ予測モードを使用して復号されるべきであることを示す予測モードフラグを受信した後、シンタックス要素を受信することができる。
パレットコーディングモードの単一カラーモードを使用して現在のブロックが復号されるべきである場合、ビデオデコーダ30のパレットベース復号ユニット165は、単一カラー値を示す単一パレットエントリを含む現在のブロック用のパレットを生成する(232)。現在のブロック用のパレットを生成すると、パレットベース復号ユニット165は、パレットに関してパレットコーディングモードの単一カラーモードを使用してブロックを復号し、それにより復号されたブロック内のすべてのピクセルが、ブロック用のパレットに示される単一カラー値を有するようにする(234)。
たとえば、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は、予測されないパレットエントリとして単一カラー値を受信し、現在のブロック用のパレットの中の単一パレットエントリとして、予測されないパレットエントリを使用することができる。別の例として、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は、現在のブロック用のパレットの中の単一パレットエントリとなるように、単一カラー値を示すパレット予測子からのエントリを選択することができる。図4に関して上記で説明したように、パレット予測子は、現在のブロック用のパレットの中の単一パレットエントリを予測するために使用され得る、以前復号されたブロックの1つまたは複数のパレットからの1つまたは複数のパレットエントリを含む。単一パレットエントリを予測することのいくつかの具体例について、以下で説明する。
一例では、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は、単一カラー値を示すパレット予測子の中のエントリに対応するインデックス値を受信し、ブロック用のパレットの中の単一パレットエントリとなるように、パレット予測子から対応するエントリを選択することができる。
別の例では、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は、パレット予測子が第1のエントリのみを含むように、パレット予測子の最大サイズを1に等しくなるように設定することができ、第1のエントリは、単一カラー値を示すエントリであり、そして、パレットベース復号ユニット165は、ブロック用のパレットの中の単一パレットエントリとなるように、パレット予測子から第1のエントリを選択することができる。この例では、パレットベース復号ユニット165は、符号化ビットストリームからパレット予測子の中の第1のエントリに対応するインデックス値を受信する必要なく、現在のブロック用のパレットの中の単一パレットエントリとして、パレット予測子からの第1かつ唯一のエントリを使用することができる。
追加の例では、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は、パレット予測子が最初のM個のエントリを含むように、パレット予測子の最大サイズをMに等しくなるように設定することができ、Mは1よりも大きい整数値である。次いでパレットベース復号ユニット165は、パレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値を受信することができ、最初のM個のエントリのうちの1つは、単一カラー値を示すエントリであり、そして、パレットベース復号ユニット165は、ブロック用のパレットの中の単一パレットエントリとなるように、パレット予測子から最初のM個のエントリのうちの対応する1つを選択することができる。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の最初のM個のエントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
別の例では、現在のブロック用のパレットを生成するために、パレットベース復号ユニット165は少なくとも1つのエントリを、少なくとも1つのエントリと現在のブロックの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレット予測子からプルーニングまたは除去することができる。場合によっては、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の平均値であり得る。他の場合には、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのうちの1つまたは複数におけるカラー値の中央値であり得る。さらに他の場合には、現在のブロックの隣接ピクセルの値は、再構成ピクセルの上側隣接ラインまたは再構成ピクセルの左側隣接ラインのいずれかにおける再構成ピクセルのうちの1つのカラー値であり得る。パレット予測子からの所与のエントリと現在のブロックの隣接ピクセルの値との間の差がしきい値よりも大きいことに基づいて、パレットベース復号ユニット165は、所与のエントリをパレット予測子からプルーニングまたは除去することができる。
パレットベース復号ユニット165は、パレット予測子の中のエントリの各々に対して、パレット予測子が1つまたは複数の残存エントリを含むように上述のエントリ除去判定を実行することができる。次いでパレットベース復号ユニット165は、パレット予測子の中の残存エントリのうちの1つに対応するインデックス値を受信することができ、残存エントリのうちの1つは、単一カラー値を示すエントリであり、そして、パレットベース復号ユニット165は、ブロック用のパレットの中の単一パレットエントリとなるように、パレット予測子から残存エントリのうちの対応する1つを選択することができる。この例では、パレットコーディングモードの通常モードと比較して低減されたサイズのパレット予測子により、符号化ビットストリームの中でパレット予測子の中の残存エントリのうちの1つに対応するインデックス値をシグナリングするために必要なビット数を低減することができる。
さらに、パレットコーディングモードの単一カラーモードでは、パレット予測子から予測される単一パレットエントリを含む現在のブロック用のパレットを生成した後、パレットベース復号ユニット165は、現在のブロックに関する予測される単一パレットエントリを、後に復号される隣接ブロックに関するパレットエントリを予測する際に使用するためにパレット予測子の第1の位置に移動させないことを決定し得る。これは、現在のブロックに関する予測されるパレットエントリが、後にコーディングされる隣接ブロック用のパレットの中のパレットエントリを予測するために使用される高い確率を有するので、パレット予測子の最初に移動し得るパレットコーディングモードの通常モードとは異なる。このようにして、本開示の技法によれば、パレットコーディングモードの単一カラーモードの実施はできるだけ単純である。
本開示では、技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのようにして限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
本開示で説明するように、ビデオエンコーダ20および/またはビデオデコーダ30は、本開示で説明する様々な技法を単独で、または任意の組合せで使用して、パレットモードを用いて予測またはコーディングし、パレット予測ベクトルをコーディングするように構成され得る。いくつかの例では、パレット予測ベクトルをコーディングするためのそのような技法は、コーディング効率を促進し得る。本開示で説明する技法はCU(HEVC)のコンテキストにおいて説明されているが、技法が予測ユニット(PU)に、または他のビデオコーディングプロセスおよび/もしくは規格においても適用され得ることを理解されたい。
例に応じて、本明細書で説明する技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理またはマルチプロセッサを通じて同時に実行されてもよい。加えて、明快のために本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダに関連するユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
例示のために、本開示のいくつかの態様は開発中のHEVC規格に関して説明された。しかしながら、本開示で説明する技法は、まだ開発されていない他の標準的なまたは独自のビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
上述された技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、それらの両方が概してビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
技法の様々な態様の特定の組合せについて上記で説明しているが、これらの組合せは、本開示で説明する技法の例を示すためにのみ提供されている。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明する技法の様々な態様のあらゆる考えられる組合せを包含することができる。
1つまたは複数の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応する場合がある。データ記憶媒体は、本開示で説明する技法を実装するための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。また、いかなる接続も適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せは、コンピュータ可読媒体の範囲内に同じく含まれるものとする。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくは離散論理回路のような、1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に適した任意の他の構造のいずれかを指す場合がある。さらに、いくつかの態様では、本明細書で説明する機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられてよく、あるいは複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素に完全に実装されてもよい。
本開示の技法は、ワイヤレス通信デバイス、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装されてもよい。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて本開示で説明したが、これらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。そうではなくて、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて結合されてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、前述のような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
様々な例が説明されてきた。これらの例および他の例は以下の特許請求の範囲内に入る。