【文献】
Rajan Joshi, et al.,High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 2,JCTVC-S1005, [online],ITU-T ,2014年 7月,pp. 207-216,インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/19_Strasbourg/wg11/JCTVC-S1005-v1.zip>
(58)【調査した分野】(Int.Cl.,DB名)
前記最大量子化値を決定することは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定することを備え、前記方法は、ルックアップテーブルから、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを決定することをさらに備える、請求項2に記載の方法。
前記最大量子化値を決定することは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すことを備える、請求項2に記載の方法。
前記ビデオデコーダは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定するように構成され、前記ビデオデコーダは、ルックアップテーブルから、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを決定するようにさらに構成される、請求項11に記載のデバイス。
前記ビデオデコーダは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すように構成される、請求項11に記載のデバイス。
前記最大量子化値を決定することは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定することを備え、前記方法は、ルックアップテーブルからの、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを表す値を符号化することをさらに備える、請求項25に記載の方法。
前記最大量子化値を決定することは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すことを備える、請求項25に記載の方法。
前記少なくとも一部分は前記値の第2の部分を備え、前記方法は、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化することをさらに備える、請求項24に記載の方法。
前記ビデオエンコーダは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定するように構成され、前記ビデオエンコーダは、ルックアップテーブルからの、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを表す値を符号化するようにさらに構成される、請求項34に記載のデバイス。
前記ビデオエンコーダは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すように構成される、請求項34に記載のデバイス。
前記少なくとも一部分は前記値の第2の部分を備え、前記ビデオエンコーダは、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化するようにさらに構成される、請求項33に記載のデバイス。
前記少なくとも一部分は第2の部分を備え、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化するための手段をさらに備える、請求項41に記載のデバイス。
前記少なくとも一部分は、前記エスケープピクセルについての前記値の第2の部分を備え、前記プロセッサに、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化させる命令をさらに備える、請求項44に記載の非一時的コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0018】
[0024]本開示は、パレットコーディングのためのエスケープピクセルコーディング、より詳細には、最大量子化エスケープピクセル値を導出することを対象とする技法を提供する。いくつかの例では、本開示において提案される技法は、1つまたは複数の、エンコーダ依存パラメータを使用する計算および/または最大量子化エスケープピクセル値を導出するための除算演算をなくす(remove)か、または排除することができる。いくつかの例では、本開示は新たなコードワードを提供し、これ(which)は、最大量子化エスケープピクセル値に依存せずに設計され得る。
【0019】
[0025]いくつかの例では、本開示の技法は、デコーダにおいて最大量子化エスケープピクセル値を導出するのに、エンコーダ依存パラメータを使用しなくてよい。代わりに、本開示の技法は、パラメータ導出において量子化ステップサイズを使用するだけでよい。さらに、いくつかの例では、本開示の技法は、最大量子化エスケープピクセル値を導出する間、除算演算の代わりに、加算と比較とを使用することができる。
【0020】
[0026]いくつかの例では、本開示の技法は、デコーダにおいて最大量子化エスケープ値を導出するために、エンコーダパラメータを使用することができる。したがって、本開示の技法は、エンコーダ関連パラメータを、デコーダ側におけるルックアップテーブルに記憶し得る。さらに、本開示の技法は、量子化エスケープ値を表すための最大ビット数を導出するために、ループまたはシフト演算を使用することができる。
【0021】
[0027]いくつかの例では、本開示の技法は、クリッピングおよび除算演算なしで最大量子化エスケープ値を導出するために、エンコーダパラメータを使用し得る。したがって、本開示の技法は、エンコーダ関連パラメータを、デコーダ側におけるルックアップテーブルに記憶し得る。本開示にさらに記載されるように、いくつかの例では、本開示の技法は、量子化パラメータqPと色成分bitDepthとを使用して、最大量子化エスケープピクセル値を導出することができる。具体的には、本開示の技法は、qPおよびbitDepthをもつルックアップテーブルを使用して、cMax値を取得することができる。
【0022】
[0028]従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタ処理など、様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。しかしながら、リモートデスクトップ、協調作業およびワイヤレスディスプレイのような用途では、(たとえば、テキストまたはコンピュータグラフィックスなどの)コンピュータ生成されたスクリーンコンテンツが、圧縮されるべき支配的コンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利なラインと高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあり、したがって、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【0023】
[0029]本開示では、スクリーン生成されたコンテンツコーディングに特に好適であり得る、パレットベースコーディングについて説明する。たとえば、ビデオデータの特定のエリアが比較的少数の色を有し、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)が、特定のエリアのビデオデータを表すためのいわゆる「パレット」を形成し得ると仮定する。パレットは、特定のエリア(たとえば、所与のブロック)のビデオデータを表す色または画素値のテーブルとして表され得る。たとえば、パレットは、所与のブロック中の最も支配的なピクセル値を含み得る。いくつかの場合、最も支配的なピクセル値は、ブロック内で最も頻繁に現れる1つまたは複数のピクセル値を含み得る。さらに、いくつかの場合、ビデオコーダが、あるピクセル値がブロック中の最も支配的なピクセル値の1つとして含まれるべきかどうかを決定するために、閾値を適用し得る。パレットベースコーディングの様々な態様によると、ビデオコーダは、ビデオデータの現在のブロックについて実際のピクセル値またはそれらの残差をコーディングするのではなく、現在のブロックのピクセル値のうちの1つまたは複数を示すインデックス値をコーディングし得る。パレットベースコーディングのコンテキストにおいて、インデックス値は、現在のブロックの個々のピクセル値を表すのに使われる、パレット中のそれぞれのエントリを示す。
【0024】
[0030]たとえば、ビデオエンコーダは、ブロックのためのパレットを決定し(たとえば、パレットを明示的にコーディングする、パレットを予測する、またはこれらの組合せ)、ピクセル値の1つまたは複数を表すためのパレット中のエントリを見つけ(locating)、ブロックのピクセル値を表すために使用されるパレット中のエントリを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。いくつかの例では、ビデオエンコーダは、符号化ビットストリーム中でパレットおよび/またはインデックス値をシグナリングすることができる。さらに(In turn,)、ビデオデコーダは、符号化ビットストリームから、ブロックのためのパレットと、さらにはブロックの個々のピクセルのインデックス値とを取得することができる。ビデオデコーダは、ブロックの様々なピクセル値を再構成するために、ピクセルのインデックス値をパレットのエントリに関連付けることができる。
【0025】
[0031]より詳細には、パレットモードを使用してコーディングされたブロックのピクセルは、パレットへの参照を使用してピクセルがコーディングされる「インデックス」モード、または上に隣接するピクセルへの参照を使用してピクセルがコーディングされる上方コピーモード(copy from above mode)を使用してコーディングされ得る。第3の選択肢は、ピクセルをエスケープピクセルとしてコーディングすることである。この場合、ピクセルの値(またはピクセル用の(for)量子化値)は直接シグナリングされる。
【0026】
[0032]本開示の技法によると、ビデオコーダ(たとえば、ビデオエンコーダおよびビデオデコーダ)は、エントロピーコーディングモードの組合せを使用して、エスケープピクセル用の量子化値をエントロピーコーディングするように構成され得る。具体的には、一例では、ビデオコーダは、ゴロムライスコーディングを使用してエスケープピクセル用の量子化値の第1の部分を、およびパラメータ3を伴う指数ゴロムを使用して量子化値の第2の部分をコーディングする。多くのシンタックス要素向けに、パラメータ3を伴う指数ゴロムは、比較的乏しい性能をもたらしているが、経験則テストは、パラメータ3を伴う指数ゴロムを使用してエスケープピクセル用の量子化値をエントロピーコーディングするとき、予想外に高い性能を明らかにしている。
【0027】
[0033]したがって、ビデオエンコーダは最初に、パレットモードを使用してピクセルのブロック(たとえば、コーディングユニット(CU)または予測ユニット(PU))を符号化することを決定し得る。ビデオエンコーダは、ブロックのためのパレットを形成するためにピクセルを分析し、次いで、各ピクセル用のピクセルベースのコーディングモードを決定するためにピクセルを走査すれ(scan)ばよい。たとえば、ビデオエンコーダは、ピクセルの値がパレット中に含まれる場合はピクセル用のインデックスモード、ピクセルが、上に隣接する(above-neighboring)ピクセルに等しい値を有する場合は上方コピーモード(copy-from-above mode)、またはピクセルがパレット中になく、上方からコピーすることができない場合はエスケープモードを選択すればよい。ビデオエンコーダが、エスケープモードを使用してピクセルがコーディングされるべきであると決定すると、ビデオエンコーダは、ピクセルの値を第1の部分および第2の部分としてエントロピー符号化してよく、第1の部分および第2の部分は、連結されると、ピクセルについての全値を表す。具体的には、ビデオエンコーダは、ゴロムライスコーディングを使用して第1の部分を、およびパラメータ3を伴う指数ゴロムを使用して第2の部分を符号化し得る。さらに、ビデオエンコーダは、ブロックのためのパレットのサイズに等しいインデックス値をシグナリングすることによって、ピクセルがエスケープモードを使用してコーディングされることをシグナリングし得る。ビデオエンコーダはまた、たとえば、前にコーディングされたブロックのパレットを参照パレットとして使用して、ブロックのためのパレットを符号化し得る。
【0028】
[0034]ビデオデコーダは、同様に、ブロック用の符号化データを受信し得る。符号化データは、パレットモードを使用してブロックが予測されることを示すデータと、パレットを表すデータ(たとえば、パレットの符号化バージョン)と、ブロックのピクセルの各々についての値と符号化モードとを表すデータとを含み得る。さらに、各エスケープモード符号化ピクセルについて、ビデオデコーダは、ゴロムライスコーディングを使用して、ピクセルの値の第1の部分を、およびパラメータ3を伴う指数ゴロムを使用して値の第2の部分をエントロピー復号し、次いで、ピクセルの値を再生するために第1および第2の部分を連結し得る。
【0029】
[0035]ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263、ISO/IEC MPEG−4 Visualと、それのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。
【0030】
[0036]最近では、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)の設計が、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのビデオコーディング共同研究部会(JCT−VC)によって確定された(finalized)。以降ではHEVCバージョン1と呼ばれる最新のHEVC仕様が、http://www.itu.int/rec/T−REC−H.265−201304−Iから入手可能なITU−T H.265に記載されている。HEVCに対する範囲拡張、すなわちHEVC−Rextも、JCT−VCによって開発されている。以降ではRExt WD7と呼ばれる、範囲拡張の最近の作業草案(WD)が、phenix.int−evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC−Q1005−v4.zipから入手可能である。
【0031】
[0037]最近では、JCT−VCは、HEVC−Rextに基づく、スクリーンコンテンツコーディング(SCC)の開発を開始し、いくつかの主要な技法が検討されている。HEVCスクリーンコンテンツコーディングについて記載する草案文書(R.Joshi、J.Xu、「HEVC Screen Content Coding Draft Text 2」、JCTVC−S1005)は、hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM−16.2+SCM−3.0で見ることができる。
【0032】
[0038]いくつかの例では、パレットベースコーディング技法は、HEVC規格またはHEVC SCC規格の1つまたは複数のコーディングモードにおいて使用するために構成され得る。他の例では、パレットベースコーディング技法は、独立して、または他の既存もしくは将来のシステムもしくは規格の一部として使用され得る。いくつかの例では、ビデオデータのパレットベースコーディングのための技法は、ビデオデータのインター予測コーディングまたはイントラ予測コーディングのための技法など、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明されるように、エンコーダもしくはデコーダ、または複合エンコーダデコーダ(コーデック)は、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースコーディングを実施するように構成され得る。
【0033】
[0039]HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおいて予測ユニット(PU)モードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明する以下の開示するプロセスのすべては、追加または代替として、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または制限であると見なされるべきではなく、なぜなら、そのような技法は、他の既存のシステム/規格またはまだ開発されていないシステム/規格とは独立にまたはそれらの一部として働くように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、またはさらには非長方形形状の領域であり得る。
【0034】
[0040]パレットベースコーディングの基本的な考えは、各コーディングユニット(CU)用に、現在のCU中の最も支配的なピクセル値を備える(およびそれらからなる)パレットが導出されるというものである。パレットのサイズおよび要素は最初に、ビデオエンコーダからビデオデコーダに送信される。パレットのサイズおよび/または要素は、直接コーディングされるか、または隣接CU(たとえば、上および/または左のコード化CU)中のパレットのサイズおよび/もしくは要素を使用して予測符号化され得る。その後、CU中のピクセル値は、一定の走査順序に従って、パレットに基づいて符号化される。CU中の各ピクセルロケーションについて、フラグ、たとえば、palette_flagが、ピクセル値がパレット中に含まれるかどうかを示すために最初に送信される。パレットの中のエントリにマッピングするピクセル値の場合、CUの中の所与のピクセルロケーションに関して、そのエントリに関連付けられたパレットインデックスがシグナリングされる。パレット中に存在しないピクセル値について、特別なインデックスがピクセルに割り当てられてよく、実際のピクセル値が、CU中の所与のピクセルロケーション向けに送信される。これらのピクセルは、「エスケープピクセル」と呼ばれる。「エスケープピクセル」は、たとえば固定長コーディング、単項(unary)コーディングなど、任意の既存のエントロピーコーディング方法を使用してコーディングされてもよい。
【0035】
[0041]本開示は、ビデオコンテンツ、特にパレットコーディングを伴うスクリーンコンテンツのコーディングをサポートするための方法を説明する。提案される方法は主に、パレットモードコーディングのためのエスケープピクセルコーディングに関する。
【0036】
[0042]スクリーンコンテンツビデオの特性に基づいて、JCTVC−M0323に記載されているSCC効率を改善するために、パレットコーディングが導入された。詳細には、パレットコーディングは、SCCにおいて、1つのCU内の色が、通常、数個のピーク値に集中するという事実に基づいて繰返しピクセル値を圧縮するために、ルックアップテーブル、すなわち、カラーパレットを導入する。特定のCUのためのパレットを仮定すれば、CU内のピクセルは、パレットインデックスにマッピングされる。第2の段では、インデックスブロックの繰返しパターンを効果的に圧縮するために、効果的な左からのコピー(copy from left)ランレングス方法が提案される。後に、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、JCTVC−N0249、第14回会合、オーストリア、ウィーン、2013年7月25日〜8月2日のGuoら、「Non−RCE3:Modified Palette Mode for Screen Content Coding」、JCT−VCにおいて、パレットインデックスコーディングモードが、ランレングスコーディングを用いる左からのコピーと上方コピー(copy from above)の両方に一般化された。変換プロセスが、シャープエッジを不鮮明にすることを回避するためにパレットコーディングのために呼び出されず、これがスクリーンコンテンツの視覚的品質に悪影響を与え得ることに留意されたい。
【0037】
[0043]パレットは、(インデックス、ピクセル値)ペアを記憶するデータ構造である。設計された(designed)パレットは、たとえば、現在のCUなど、ビデオデータの現在のブロック中のピクセル値のヒストグラムによって、エンコーダにおいて決定され得る。たとえば、ヒストグラム中のピーク値はパレット中に追加されるが、低度数ピクセル値(low frequency pixel values)はパレット中に含まれない。パレットサイズは、0〜max_palette_sizeの範囲内にあるように制限されてよく、これは31に等しくてよい。
【0038】
[0044]SCCについて、1つのスライス内のCUブロックは多くの支配的な色を共有し得る。したがって、(CU復号順序での)前のパレットモードCUのパレットを参照として使用して、現在ブロックのパレットを予測することが可能である。詳細には、0〜1バイナリベクトルが、参照パレット中のピクセル値が現在のパレットによって再利用されるかどうかを示すためにシグナリングされ得る。一例として、以下の表1および2では、参照パレットが6つの項目を有すると仮定される。ベクトル(1,0,1,1,1,1)が現在のパレットを用いてシグナリングされ、これは、v0、v2、v3、v4、およびv5は現在のパレット中で再利用されるが、v1は再利用されないことを示す。現在のパレットが参照パレットから予測可能でない色を含んでいる場合、これらのいくつかの予測されない色がコーディングされ、次いで、これらの色は直接シグナリングされる。たとえば、表1および2において、u0およびu1は、ビットストリームの中に直接シグナリングされる。
【0041】
[0045]パレットモードを用いてコーディングされたブロックでは、パレットが、前にパレットコーディングされたブロックのパレットエントリから予測され得、新しいエントリとして明示的にシグナリングされ得るか、または前にコーディングされたブロックのパレットが完全に再利用され得る。後者の場合はパレット共有と呼ばれ、前のブロックのパレット全体が変更なしにそのままで再利用されることを示すために、フラグpalette_share_flagがシグナリングされる。参照パレットおよび現在のパレットの例が、上の表1および2に示されている。具体的には、表1は例示的な参照パレットを示し、表2は、表1の参照パレットから予測され得る例示的な現在のパレットを示す。
【0042】
[0046]現在のSCM3.0参照ソフトウェアでは、規範的観点からの、パレットコーディングの2つの主要な態様は、パレットモードでコーディングされているブロック中の各サンプルについての、パレットのコーディングおよびパレットインデックスのコーディングである。パレットインデックスのコーディングは、「インデックス」モードおよび「上方コピー」モードという、2つの主要モードを使用して実施される。これは、palette_modeフラグをコーディングすることによってシグナリングされる。「インデックス」モードはまた、エスケープサンプル、すなわち、パレットに属さないサンプルを示すために使用される。現在の設計では、「上方コピー」モードは、パレットブロックの第1の行のためには可能でない。さらに、「上方コピー」モードは、別の「上方コピー」モードには続くことができない。これらの場合、「インデックス」モードが推論される。
【0043】
[0047]具体的には、パレットモードに対して、CU中のピクセルが、水平/垂直スネーク走査順序で次のように符号化される。
【0044】
1.「インデックス」モード:このモードでは、1つのパレットインデックスが最初にシグナリングされる。インデックスがパレットのサイズに等しい場合、これは、サンプルがエスケープサンプルであることを示す。この場合、各成分についてのサンプル値または量子化サンプル値がシグナリングされる。たとえば、パレットサイズが4の場合、非エスケープサンプルについて、パレットインデックスは範囲[0,3]内である。この場合、4というインデックス値はエスケープサンプルを示す(signifies)。インデックスが非エスケープサンプルを示す場合、ランレングスがシグナリングされ、これは、同じインデックスを共有する、走査順序での後続サンプルの数を、ランレングスを示す負でない値n−1によって指定し、これは、現在のピクセルを含む、以降のn個のピクセルが、最初にシグナリングされたものと同じピクセルインデックスを有することを意味する。
【0045】
2.「上方コピー」ランモード(CA):このモードでは、負でないランレングス値m−1のみが、現在のピクセルを含む、以降のm個のピクセルについて、パレットインデックスが、それぞれ、すぐ上にあるそれらのネイバーと同じであることを示すために送信される。このモードは、上方コピーランモードにおいて(within)パレットインデックスが異なる場合があるという意味で、「インデックス」モードとは異なることに留意されたい。
【0046】
[0048]現在の設計では、パレットモードはCUレベルでシグナリングされるが、それをPUレベルでシグナリングすることが可能であり得る。現在のブロック中のエスケープサンプルの存在を示すために、フラグ、すなわちpalette_esc_val_present_flagもシグナリングされる。
【0047】
[0049]パレットモードでは、ブロック中のピクセル走査は、2つのタイプ、すなわち、垂直横断走査または(ヘビ状の)水平横断走査であり得る。ブロック中で使用される走査パターンは、ブロックユニットごとにシグナリングされるフラグpalette_transpose_flagに従って導出される。
【0048】
[0050]パレットインデックスコーディング中に、パレットインデックス調節プロセスが適用され得る。ブロック中の第2のピクセルから始まり、これは、前にコーディングされたピクセルのパレットモードを調べることからなる。最初に、パレットサイズが1だけ低減され、左モードがランモードに等しい場合、コーディングされるべきパレットインデックスは、インデックスが左パレットインデックスよりも大きい場合、1だけ低減され、または左モードが、コーディングされるべきパレットインデックスよりもコピーモードである場合、コーディングされるべきパレットインデックスは、インデックスが上のパレットインデックスよりも大きい場合、1だけ低減される。この記述は、符号化側から与えられており、対応するプロセスは、デコーダ側においても逆順で実施され得る。
【0049】
[0051]SCM−3.0では、以下のシンタックス最適化が採用された。
パレットサイズが0の場合、すべてのエスケープスピクセルが導出され、どのエスケープ存在フラグ、パレットモード、パレットインデックス、パレットラン、およびパレット転置(transpose)フラグもシグナリングされず、エスケープ存在フラグは1に等しいと推論され、パレットモードはINDEXモードに等しいと推論され、パレットインデックスはESCAPEに等しく設定され、パレットラン値はブロックサイズに等しく設定され、パレット転置フラグは0に設定される。
パレットサイズが1であり、ブロック中でエスケープピクセルが使用されない場合、どのパレットモード、パレットラン、またはパレット転置フラグもシグナリングされず、パレットモードはINDEXモードに等しくなるように導出され、パレットインデックスは0に設定され、パレットラン値はブロックサイズに等しく設定され、パレット転置フラグは0に設定される。
【0050】
[0052]SCM3.0では、打切りバイナリ(TB)コードワードが、量子化エスケープピクセルをシグナリングするために使用される。このコードワードは、palette_escape_valシンタックス要素と呼ばれ得る。打切りバイナリを使用するために、可能な値の総数が必要とされる。たとえば、打切りバイナリコードワードが、N個の可能な値のセット{0,1,2,3,...,N−1}を示す(signify)ために使用される場合、Nは、打切りバイナリコードワードを構成するために使用される(N−1は最大値である)。同等に、最大値、すなわちこの例ではN−1(0から始まると仮定する)が知られているとき、対応する打切りバイナリコードワードは、同じやり方で構成され得る。最大量子化エスケープ値を得るために、SCM3.0において、以下の手順が使用される。
【0051】
1.量子化パラメータqPは、次のように導出される。
【0053】
2.量子化スケーリングファクタquantScale、右シフトオフセットrightShiftOffsetおよび右シフトパラメータrightShiftParamが、HEVC量子化ルックアップテーブルに基づいて次のように導出される。
【0055】
3.量子化ステップサイズパラメータqStepが次のように導出される。
【0057】
4.最大可能量子化値maxValueが次のように導出される。
【0059】
5.maxValueを表すための、ビンの数numBinsが、次のように導出される。
【0061】
6.打切りバイナリコードワード用の最大パラメータcMaxが、次のように導出される。
【0063】
[0053]現在のエスケープピクセル設計には、少なくとも2つの起こり得る問題が存在する。
【0064】
[0054]最初に、デコーダ側において、量子化スケールファクタ、右シフトオフセットおよびパラメータは利用可能でなく、というのは、これらのパラメータは、典型的なエンコーダパラメータであり、デコーダによって標準化されていないからである。異なるエンコーダは、異なるスケールファクタと、右シフトパラメータと、オフセットとを有する場合があり、したがって、異なるエンコーダとデコーダとの間で整合しないパラメータを使用すると、不正確なcMax計算を引き起こし得る。
【0065】
[0055]第2に、maxValueの導出は除算演算を伴い、これはデコーダにとって望ましくない。具体的には、異なるデコーダは、除算演算について異なる精度または解釈を有し、したがって、異なるデコーダプラットフォーム中では異なるmaxValue計算を有し得る。したがって、maxValueの整合しない計算は、エンコーダ/デコーダ不一致を引き起こし得る。
【0066】
[0056]本開示は、これらおよび他の問題に対する解決策を提供し得る様々な技法について記載する。本開示の様々な技法は、エンコーダ依存パラメータを使用する計算をなくすこと、および/または除算演算をなくすことを含む。
【0067】
[0057]追加または代替として、最大値に依存しなくてよい新たなコードワードが設計され得る。
【0068】
[0058]一例では、エンコーダ依存パラメータは、デコーダにおいて最大量子化エスケープピクセル値を導出するためには使用されない。代わりに、量子化ステップサイズのみが、パラメータ導出において使用される。さらに、最大量子化エスケープピクセル値の導出中、加算および比較が、除算演算の代わりに使用される。以下の手順が、最大量子化エスケープピクセル値を導出するために提案される。
【0069】
1.量子化パラメータqPが、色成分に基づいて導出される。異なる色成分は、異なる量子化パラメータを有し得る。以下は、それぞれ、異なる場合もまたは異ならない場合もある成分Y、CbおよびCrについて、Qp’
Y、Qp’
CbまたはQp’
Crを得るための例である。
【0071】
2.量子化ステップサイズパラメータqStepが、量子化パラメータqPを入力としてもつ公式を使用して導出される。以下の公式は、Round(.)が丸め演算子である例である。これは、Round(.)のみに限定されるとは限らないことに留意されたい。そうではなく、他の演算子、たとえば、フロア演算子
【0077】
3.量子化前の最大ピクセル値と、ループを使用するqStepとを与えられると、最大可能量子化値cMax(0として初期化される)が、次のように導出される(qStepTempは、qStepとして初期化される)。
【0079】
[0059]次いで、cMaxが、現在のコーディングユニット用の量子化エスケープピクセルをコーディングするための打切りバイナリコードワードを構成するために使用される。量子化エスケープピクセルはすべて、両端値を含む(inclusive)[0,cMax]の範囲に制約されることに留意されたい。
【0080】
[0060]代替として、ステップ3において、比較的正確でない、次のようなシフト演算を使用して、cMax(1として初期化される)が導出され得る。
【0082】
[0061]別の例では、エンコーダパラメータ(たとえば、量子化スケール値(quantScale)、右シフトオフセット値(rightShiftOffset)、および右シフトパラメータ(rightShiftParam)値)が、デコーダにおいて最大量子化エスケープ値を導出するために使用され得る。したがって、エンコーダ関連パラメータは、デコーダ側においてルックアップテーブル中に記憶され得る。さらに、ループまたはシフト演算が、量子化エスケープ値を表すための最大ビット数を導出するために使用され得る。以下の手順が、最大量子化エスケープピクセル値を導出するために使用され得る。
【0083】
1.量子化パラメータqPが、色成分に基づいて導出される。異なる色成分は、異なる量子化パラメータを有し得る。以下は、それぞれ、異なる場合もまたは異ならない場合もある、成分Y、CbおよびCrについてのQp’
Y、Qp’
CbまたはQp’
Crを得るための例である。
【0085】
2.量子化スケーリングファクタquantScale、右シフトオフセットrightShiftOffsetおよび右シフトパラメータrightShiftParamが、たとえば、デコーダにおいて記憶されたルックアップテーブルに基づいて導出される。
【0087】
3.量子化ステップサイズパラメータqStepが、量子化パラメータqPを入力としてもつ公式を使用して導出される。以下の公式は、qStepを導出するための例であり、ここでRound(.)は丸め演算子である。これは、Round(.)のみに限定されるとは限らないことに留意されたい。そうではなく、他の演算子、たとえば、フロア演算子
【0093】
4.最大可能量子化値maxValue(0として初期化される)が次のように導出される(qStepTempはqStepとして初期化される)。
【0095】
5.maxValueを表すための、ビンの数numBinsが、次のように導出される。
【0097】
6.打切りバイナリコードワード用の最大パラメータcMaxが、次のように導出される。
【0099】
[0062]この場合、量子化エスケープピクセルは、両端値を含む[0,cMax]の範囲内になるように制約されることに留意されたい。
【0100】
[0063]別の例では、エンコーダパラメータは、クリッピングおよび/または除算演算を実施せずに最大量子化エスケープ値を導出するために使用され得る。したがって、エンコーダ関連パラメータは、デコーダ側においてルックアップテーブル中に記憶される必要がある。以下の手順が、最大量子化エスケープピクセル値を導出するために使用され得る。
【0101】
1.量子化パラメータqPが、色成分に基づいて導出される。異なる色成分は、異なる量子化パラメータを有し得る。以下は、それぞれ、異なる場合もまたは異ならない場合もある、成分Y、CbおよびCrについてのQp’
Y、Qp’
CbまたはQp’
Crを得るための例である。
【0103】
2.量子化スケーリングファクタquantScale、右シフトオフセットrightShiftOffsetおよび右シフトパラメータrightShiftParamが、たとえば、デコーダにおいて記憶されたルックアップテーブルに基づいて導出される。
【0105】
3.打切りバイナリコードワード用の最大パラメータcMaxが、次のように導出される。
【0107】
[0064]この場合、量子化エスケープピクセルは、両端値を含む[0,cMax]の範囲内の制約であることに留意されたい。
【0108】
[0065]別の例では、最大量子化エスケープピクセル値は、ルックアップテーブルとともに、量子化パラメータqPと色成分bitDepthとを使用して導出され得る。具体的には、qPおよびbitDepthをもつループアップテーブルを使用して、cMaxが取得され得る。以下は、cMax導出の例である。
【0109】
1.量子化パラメータqPが、色成分に基づいて導出される。異なる色成分は、異なる量子化パラメータを有し得る。以下は、それぞれ、異なる場合もまたは異ならない場合もある、成分Y、CbおよびCrについてのQp’
Y、Qp’
CbまたはQp’
Crを得るための例である。
【0111】
2.ベース量子化パラメータbaseQpが、所与のbitDepthを用いて導出される。
【0113】
3.baseQpが0に等しいかまたはそれよりも大きい場合、cMaxは、baseQpが入力エントリとして与えられると、ルックアップテーブルを通して見つけられ得る
4.そうでない(baseQpが負である)場合、cMaxは次のように導出され得る。
【0117】
[0066]いくつかの例では、エンコーダまたはデコーダなどのコーディングシステムが、例によっては、共同で(jointly)、または別個に、ビット深度および量子化パラメータに基づいて、等式に基づく公式を使用して最大値を導出することができる。以下の手順は、ビット深度と量子化パラメータとを共同で検討するための一例である。
【0118】
[0067]量子化パラメータqPは、色成分に基づいて導出される。異なる色成分は、異なる量子化パラメータを有し得る。以下は、それぞれ、異なる場合もまたは異ならない場合もある、成分Y、CbおよびCrについてのQp’
Y、Qp’
CbまたはQp’
Crを得るための例である。
【0120】
[0068]量子化ベースパラメータqPBaseが、エンコーダとデコーダの両方においてあらかじめ規定され、もしくはSPS、PPS、スライスレベルなどのような、異なるレベルにおいてシグナリングされるか、または各qP値およびビット深度に基づいて、共同で、もしくは別個に適応的に導出される。以下は、qPBase用に固定数を使用するための例である。
【0122】
[0069]等式を使用して、またはエンコーダとデコーダの両方において記憶されたルックアップテーブルに基づいて、量子化ビット低減ファクタquantBitsが次のように導出される。ここで呼び出される演算は、以下の等式に示すフロア演算
【0124】
に限定されないことに留意されたい。シーリング演算
【0126】
が、フロア演算の代わりに使用され得る。
【0128】
[0070]最大ビットパラメータmaxBitが、ビット深度およびquantBitsに基づいて導出されてよく、以下が例である。
【0130】
[0071]打切りバイナリコードワード(または、可能最大値の計算を要求する他のコードワード、たとえば、固定長コードワード)用の最大パラメータcMaxは、次のように導出される
【0132】
[0072]この場合、量子化エスケープピクセルは、両端値を含む[0,cMax]の範囲内に制約されることに留意されたい。
【0133】
[0073]上の例は、現在のパレットモードが不可逆モード(lossy mode)で動作しているときの場合に対処することにも留意されたい。現在のパレットモードが可逆モードで動作しているとき、最大パラメータcMaxは、現在のSCM3.0でのように、cMax=((1<<bitDepth)−1)の形で不変に保たれ得る。
【0134】
[0074]さらに、上で論じた様々な例は、可変長コードワードに該当する(apply to)。固定長コードワードが、量子化エスケープピクセルをコーディングするために使用される場合、上の例におけるものと同様の手順が、最大量子化エスケープピクセル値を導出するために使用され得る。次いで、ループが、最大量子化エスケープピクセル値を提示するためのビットの数を決定するために使用され得る。
【0135】
[0075]本開示は、最大値制約に依存しないコードワードを設計するために使用され得る技法についても記載する。これらの技法は、単独で、または上で論じた様々な例と組み合わせて使用され得る。具体的には、最大値制約のないコードワードが、量子化エスケープピクセルコーディング中に使用され得る。一例では、ゴロムライスおよび指数ゴロムコードワードの連結が、量子化エスケープピクセルをコーディングするために使用される。代替として、単項コード、もしくはゴロムファミリーコードワードまたはそれらの組合せも、量子化エスケープピクセルをコーディングする間、ここで適用され得る。たとえば、エンコーダまたはデコーダは、ライスパラメータKを伴うゴロムライス、および/またはパラメータLを伴う指数ゴロムを使用することができ、ここでK、およびLは任意の整数、すなわち0、1、2、3...であり得る。パラメータ(L、K)の値は、ビット深度に依存し得る。量子化エスケープピクセルは、8ビット入力信号について15ビットの精度(プラス符号)に制約されてよく、精度は、max(15,bitDepth+6)として保たれ得る。たとえば、ゴロムライスコーディングは、エスケープピクセル値の第1の部分をコーディングするために使用されてよく、パラメータ3を伴う指数ゴロムは、エスケープピクセル値の第2の部分をコーディングするために使用されてよい。
【0136】
[0076]パラメータLコーディングを伴う指数ゴロムコーディングにおいて、コーディングされるべき値が2
Lで除算される。この除算の結果は、0次指数ゴロムコードワードを使用してコーディングされ、剰余(remainder)(すなわち、2
Lを法とする値(value modulo 2
L))はバイナリでコーディングされる。したがって、パラメータLは、剰余に含まれるビットの数に影響する。同じ値が、パラメータL用に異なる値を使用してコーディングされるとき、異なる長さを有する指数ゴロムコードワードを生じ得ることを理解されたい。さらに、いくつかの場合では、パラメータL用のより大きい値が、コーディングされるべき同じ値に対して、パラメータL用のより小さい値よりも、コーディングされるべき値についてのより短いコードワードを生じ得る。
【0137】
[0077]最大値制約に依存しないものとして記載されているが、ゴロムライス、およびパラメータ3を伴う指数ゴロムの組合せを使用してエスケープピクセル値をコーディングするための技法は、最大量子化エスケープピクセル値を決定するための、上で論じた他の技法のいずれとも組み合わせて使用され得る。たとえば、エスケープピクセル値は依然として打ち切られ得る(たとえば、1つのビットが削除され得る)。一例として、エスケープピクセル値の第2の部分(すなわち、上述した、パラメータ3を伴う指数ゴロムを使用してコーディングされた部分)は、上述したように、決定された最大量子化エスケープピクセル値に基づいて打ち切られ得る。
【0138】
[0078]本開示は、最大量子化エスケープピクセル値を導出する方法について記載する。本開示の技法によると、ビデオエンコーダおよび/またはビデオデコーダが、複数のピクセルを示すブロックを決定し、量子化パラメータに少なくとも部分的に基づいて最大量子化エスケープピクセル値を決定し、最大量子化エスケープピクセル値を使用してブロックをコーディングし得る。
【0139】
[0079]たとえば、本開示の技法は、デコーダにおいて最大量子化エスケープピクセル値を導出するのに、エンコーダ依存パラメータを使用しなくてよい。代わりに、本開示の技法は、パラメータ導出において量子化ステップサイズを使用するだけでよい。さらに、いくつかの例では、本開示の技法は、最大量子化エスケープピクセル値を導出する間、除算演算の代わりに、加算と比較とを使用することができる。
【0140】
[0080]別の例として、本開示の技法は、デコーダにおいて最大量子化エスケープ値を導出するために、エンコーダパラメータを使用することができる。したがって、本開示の技法は、エンコーダ関連パラメータを、デコーダ側におけるルックアップテーブルに記憶し得る。さらに、本開示の技法は、量子化エスケープ値を表すための最大ビット数を導出するために、ループまたはシフト演算を使用することができる。
【0141】
[0081]いくつかの例では、本開示の技法は、クリッピングおよび除算演算なしで最大量子化エスケープ値を導出するために、エンコーダパラメータを使用し得る。したがって、本開示の技法は、エンコーダ関連パラメータを、デコーダ側におけるルックアップテーブルに記憶し得る。本開示にさらに記載されるように、いくつかの例では、本開示の技法は、量子化パラメータqPと色成分bitDepthとを使用して、最大量子化エスケープピクセル値を導出することができる。具体的には、本開示の技法は、qPおよびbitDepthをもつループアップテーブルを使用して、cMax値を取得することができる。
【0142】
[0082]
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、総称的にビデオ符号化またはビデオ復号を指すことがある。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明する様々な例に従ってパレットベースのビデオコーディングのための技法を実施するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUなど、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなど、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【0143】
[0083]
図1に示されているように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【0144】
[0084]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【0145】
[0085]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、ワイヤレスおよび/またはワイヤード通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)など、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【0146】
[0086]別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【0147】
[0087]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブがある。
【0148】
[0088]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続としては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【0149】
[0089]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【0150】
[0090]
図1に示されているビデオコーディングシステム10は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および/またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって実施される。
【0151】
[0091]
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【0152】
[0092]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【0153】
[0093]
図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るか、またはその外部にあり得る。概して、ディスプレイデバイス32は復号ビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスを備え得る。
【0154】
[0094]本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、概して、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで行われ得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。したがって、ビデオデコーダ30は、ある情報を「受信する」ものとして参照され得るが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで行われるとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【0155】
[0095]ビデオエンコーダ20およびビデオデコーダ30は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェア、またはそれらの任意の組合せなどの様々な好適な回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実施し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0156】
[0096]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上記で言及されHEVCドラフト10に記載されたHEVC規格など、ビデオ圧縮規格に従って動作する。ベースHEVC規格に加えて、HEVCのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を作成するための作業が進行中である。さらに、たとえば本開示で説明するような、パレットベースコーディングモードが、HEVC規格の拡張のために提供され得る。いくつかの例では、パレットベースコーディングのための本開示で説明する技法は、ITU−T−H.264/AVC規格または将来の規格など、他のビデオコーディング規格に従う動作のために構成されたエンコーダおよびデコーダに適用され得る。したがって、例として、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングのためのパレットベースコーディングモードの適用例について説明する。
【0157】
[0097]HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、S
L、S
CbおよびS
Crと示される、3つのサンプルアレイを含み得る。S
Lは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。S
Cbは、Cbクロミナンスサンプルの2次元アレイである。S
Crは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【0158】
[0098]ピクチャの符号化表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査において連続的に順序付けられた整数個のCTUを含み得る。コーディングされたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコーディングされたCTUを含み得る。
【0159】
[0099]本開示は、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用される1つまたは複数のサンプルブロックとシンタックス構造とを指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックとしては、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロックパーティションなどがあり得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロックパーティションの説明と交換され得る。
【0160】
[0100]コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するために、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実施し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの長方形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ピクチャのルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロックおよびCr予測ブロックのための予測ルーマブロック、予測Cbブロックおよび予測Crブロックを生成し得る。
【0161】
[0101]ビデオエンコーダ20は、PUの予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。
【0162】
[0102]ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV)を有し得る。ビデオエンコーダ20がPUの予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
【0163】
[0103]ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)を生成した後に、ビデオエンコーダ20は、CUの残差ブロックを生成し得る。CUの残差ブロック中の各サンプルは、CUのPUの予測ブロック中のサンプルと、CUのコーディングブロック中の対応するサンプルとの間の差分を示し得る。たとえば、ビデオエンコーダ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コーディングブロック中の対応するサンプルとの間の差分を示し得る。
【0164】
[0104]さらに、ビデオエンコーダ20は、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロックおよびCr残差ブロック)を1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック)に分解するために、4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの長方形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
【0165】
[0105]ビデオエンコーダ20は、TUのための係数ブロックを生成するために、変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。たとえば、ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
【0166】
[0106]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実施し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。ビットストリームはまた、エントロピー符号化されないシンタックス要素を含み得る。
【0167】
[0107]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワークアブストラクションレイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々はNALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
【0168】
[0108]異なるタイプのNALユニットは異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS:picture parameter set)のためのRBSPをカプセル化し得、第2のタイプのNALユニットは、コーディングされたスライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは補足エンハンスメント情報(SEI:supplemental enhancement information)のためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
【0169】
[0109]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得し得る。たとえば、ビデオデコーダ30は、ビットストリームをパースして、ビットストリームからシンタックス要素を復号し得る。ビデオデコーダ30は、ビットストリームから取得(たとえば、復号)されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実施されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在のCUのPUのための予測サンプルブロック(すなわち、予測ブロック)を決定するためにPUのMVを使用し得る。さらに、ビデオデコーダ30は、現在のCUのTUに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUに関連付けられる変換ブロックを再構成するために、変換係数ブロックに対して逆変換を実施し得る。ビデオデコーダ30は、現在のCUのPUのための予測サンプルブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構成し得る。ピクチャの各CUのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
【0170】
[0110]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングを実施するように構成され得る。たとえば、パレットベースコーディングでは、上記で説明したイントラ予測コーディング技法またはインター予測コーディング技法を実施するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表す色またはピクセル値のテーブルとして、いわゆるパレットをコーディングし得る。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の1つまたは複数のためのインデックス値をコーディングし得、ここで、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリを示す。
【0171】
[0111]たとえば、ビデオエンコーダ20は、ブロックのためのパレットを決定することと、ブロックの1つまたは複数の個々のピクセルの値を表す値を有するパレット中のエントリを位置特定することと、ブロックの1つまたは複数の個々のピクセル値を表すために使用されるパレット中のエントリを示すインデックス値でブロックを符号化することとによって、ビデオデータのブロックを符号化し得る。さらに、ビデオエンコーダ20は、符号化ビットストリーム中でインデックス値をシグナリングし得る。次に、ビデオ復号デバイス(たとえば、ビデオデコーダ30)は、符号化ビットストリームから、ブロックのためのパレット、ならびにパレットを使ってブロックの様々な個々のピクセルを決定するために使用されるインデックス値を取得し得る。ビデオデコーダ30は、ブロックのピクセル値を再構成するために、個々のピクセルのインデックス値をパレットのエントリとマッチングし得る。個々のピクセルに関連付けられたインデックス値が、ブロックのための対応するパレットのどのインデックス値ともマッチングしない事例では、ビデオデコーダ30は、そのようなピクセルを、パレットベースコーディングの目的のために、エスケープピクセルとして識別し得る。
【0172】
[0112]別の例では、ビデオエンコーダ20は、以下の動作に従ってビデオデータのブロックを符号化し得る。ビデオエンコーダ20は、ブロックの個々のピクセルについての予測残差値を決定し、ブロックのためのパレットを決定し、個々のピクセルの予測残差値のうちの1つまたは複数の値を表す値を有する、パレット中のエントリ(たとえば、インデックス値)を位置特定し得る。さらに、ビデオエンコーダ20は、ブロックの各個々のピクセルについての対応する予測残差値を表すために使用される、パレット中のエントリを示すインデックス値でブロックのピクセルを符号化し得る。ビデオデコーダ30は、ソースデバイス12によってシグナリングされた符号化ビットストリームから、ブロックのためのパレット、ならびにブロックの個々のピクセルに対応する予測残差値のためのインデックス値を取得し得る。説明したように、インデックス値は、現在のブロックに関連付けられたパレット中のエントリに対応し得る。次に、ビデオデコーダ30は、ブロックの予測残差値を再構成するために、予測残差値のインデックス値をパレットのエントリに関連付け得る。予測残差値は、ブロックのピクセル値を再構成するために、(たとえば、イントラ予測またはインター予測を使用して取得された)予測値に加算され得る。
【0173】
[0113]以下でより詳細に説明されるように、パレットベースコーディングの基本的な考えは、コーディングされるべきビデオデータのブロックに対して、ブロック中の最も支配的なピクセル値を含むパレットを、ビデオエンコーダ20が導出し得るというものである。たとえば、パレットは、現在のCUについて支配的でありおよび/またはそれを表すと決定または仮定される、いくつかのピクセル値を指し得る。ビデオエンコーダ20は、パレットのサイズと要素とを表すデータを符号化し得る。さらに、ビデオエンコーダ20は、ある走査順序に従って、ブロック中のピクセル値を符号化し得る。ブロック中に含まれる各ピクセルについて、ビデオエンコーダ20は、ピクセルの値がパレット中に含まれているかどうか決定し得る。ピクセルがパレット中に含まれている場合、ビデオエンコーダ20は、ピクセル値をパレット中の対応するエントリにマッピングするインデックス値をシグナリングし得る。さらに、ビデオエンコーダ20は、インデックスがシグナリングされたピクセルに続く何個のピクセルが同じ値を有するかを示す「ラン」値をシグナリングし得る。代替として、一連のピクセルが、上の隣接ピクセルからの値と同じである値を有する場合、ビデオエンコーダ20は、「上方コピー」モードを使用してピクセルを符号化してよく、ここで、ラン値(ただし、インデックス値なし)は、上からのピクセルと値を共有するピクセルの数を示す。
【0174】
[0114]一方、ブロックの現在のピクセルの値がパレット中に含まれず(すなわち、パレットコード化ブロックの特定のピクセル値を指定するパレットエントリが存在しない)、ピクセルが、上に隣接するピクセルと値を共有しない場合、このようなピクセルは、「エスケープピクセル」と定義され得る。パレットベースコーディングに従って、ビデオエンコーダ20は、エスケープピクセルのために予約されたインデックス値を符号化し、シグナリングし得る。たとえば、エスケープピクセルを表すインデックス値は、パレットがゼロインデックス付けされると仮定すると、パレットのサイズであり得る。すなわち、ゼロ〜3とインデックス付けされた4つのエントリを有するパレットの場合、ビデオエンコーダ20は、ピクセルがエスケープピクセルとして符号化されていることを示すために、ピクセルについて4という値をシグナリングすればよい。いくつかの例では、ビデオエンコーダ20はまた、ブロック中に含まれるエスケープピクセルについてのピクセル値もしくは残差値(またはそれの量子化バージョン)を符号化し、シグナリングし得る。
【0175】
[0115]本開示の技法によると、ビデオエンコーダ20は、エスケープピクセルの値を2つのパート、すなわち第1の部分および第2の部分において符号化し得る。第1および第2の部分は、連結されると、エスケープピクセルの値を表し得る。ビデオエンコーダ20は、ゴロムライスコードワードを使用して第1の部分を、およびパラメータ3コードワードを伴う指数ゴロムを使用して第2の部分を符号化し得る。
【0176】
[0116]ビデオエンコーダ20によってシグナリングされた符号化ビデオビットストリームを受信すると、ビデオデコーダ30は、最初に、ビデオエンコーダ20から受信された情報に基づいてパレットを決定し得る。ビデオデコーダ30は、次いで、所与のブロックのピクセル値を再構成するために、所与のブロック中のピクセルロケーションに関連付けられる、受信されたインデックス値をパレットのエントリにマッピングし得る。いくつかの事例では、ビデオデコーダ30は、エスケープピクセルのために予約されたインデックス値でピクセルがパレットコーディングされていると決定することなどによって、パレットコーディングされたブロックのピクセルがエスケープピクセルであると決定し得る。ビデオデコーダ30が、パレットコーディングされたブロック中のエスケープピクセルを識別する事例では、ビデオデコーダ30は、所与のブロック中に含まれるエスケープピクセルについてのピクセル値もしくは残差値(またはそれの量子化バージョン)を受信し得る。ビデオデコーダ30は、個々のピクセル値を対応するパレットエントリにマッピングすることによって、およびパレットコーディングされたブロック中に含まれるいずれかのエスケープピクセルを再構成するためにピクセル値もしくは残差値(またはそれの量子化バージョン)を使用することによって、パレットコーディングされたブロックを再構成し得る。
【0177】
[0117]ビデオエンコーダ20および/ビデオデコーダ30は、最大量子化エスケープピクセル値を導出するために、本開示に記載される技法に従って動作するように構成され得る。たとえば、ビデオエンコーダ20および/ビデオデコーダ30は、複数のピクセルを示すブロックを決定し、量子化パラメータに少なくとも部分的に基づいて最大量子化エスケープピクセル値を決定し、最大量子化エスケープピクセル値を使用してブロックをコーディングし得る。
【0178】
[0118]いくつかの例では、最大量子化エスケープピクセル値を決定することは、色成分に基づいて量子化パラメータを決定することと、量子化パラメータに基づいて量子化ステップサイズを決定することと、量子化ステップサイズに基づいて最大可能量子化値を決定することと、最大量子化エスケープピクセル値に基づいて、量子化エスケープピクセルをコーディングするための打切りバイナリコードワードを生成することとをさらに備える。いくつかの例では、最大量子化エスケープピクセル値は、量子化ステップのみを使用して決定される。いくつかの例では、最大量子化エスケープピクセル値を決定することは、エンコーダ依存パラメータに基づかない。
【0179】
[0119]いくつかの例では、本開示の技法は、最大量子化エスケープピクセル値が除算演算を使用せずに実施されると決定することを含む。いくつかの例では、最大量子化エスケープピクセル値を決定することは、加算と比較とを使用して実施される。いくつかの例では、最大量子化エスケープピクセル値を決定することは、色成分に基づいて量子化パラメータを決定することと、量子化パラメータに基づいて、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つを決定することと、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つに基づいて、最大可能量子化値を決定することと、最大量子化エスケープピクセル値に基づいて、量子化エスケープピクセルをコーディングするための打切りバイナリコードワードを生成することとをさらに備える。
【0180】
[0120]いくつかの例では、本開示の技法は、量子化パラメータに基づいて量子化ステップサイズパラメータを決定することを含み、最大可能量子化値はさらに、量子化ステップサイズに基づいて決定される。いくつかの例では、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つはエンコーダパラメータである。いくつかの例では、本開示の技法は、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つをルックアップテーブル中に記憶することを含み、量子化パラメータに基づいて、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つを決定することは、量子化スケーリングファクタまたはシフトパラメータのうちの少なくとも1つを決定するために、ルックアップテーブル中でルックアップを実施することをさらに備える。
【0181】
[0121]いくつかの例では、最大量子化エスケープピクセル値を決定することは、色成分に基づいて量子化パラメータを決定することと、ビット深度に基づいてベース量子化パラメータを決定することと、ベース量子化パラメータが閾を満足するかどうか決定することと、ベース量子化パラメータが閾を満足するときは、ルックアップテーブルから、およびベース量子化パラメータに基づいて、最大可能量子化値を決定し、ベース量子化パラメータが閾を満足しないときは、ルックアップテーブルから、およびビット深度に基づいて、最大可能量子化値を決定することとをさらに含む。
【0182】
[0122]いくつかの例では、量子化エスケープピクセルは、固定長コードワード中でコーディングされる。いくつかの例では、最大量子化エスケープピクセル値を含むコードワードが、最大値制約なしで生成される。いくつかの例では、最大量子化エスケープピクセル値は、少なくとも、除算演算を実施せずに、またはエンコーダ依存パラメータを使用せずに決定される。
【0183】
[0123]
図2は、本開示の様々な技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。
図2は、説明のために与えられており、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明のために、本開示では、HEVCコーディングのコンテキストにおいてビデオエンコーダ20について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【0184】
[0124]
図2の例では、ビデオエンコーダ20は、ビデオデータメモリ98と、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニットと(図示せず)を含む。ビデオエンコーダ20はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実施するように構成されたパレットベース符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【0185】
[0125]ビデオデータメモリ98は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ98に記憶されたビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ98および復号ピクチャバッファ116は、同期DRAM(SDRAM)を含む、ダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ98および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ98は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0186】
[0126]ビデオエンコーダ20はビデオデータを受信し得る。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化し得る。CTUの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック(CTB)と、対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、CTUのCTBを徐々により小さいブロックに分割するために、4分木区分を実施し得る。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し得、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【0187】
[0127]ビデオエンコーダ20は、CUの符号化表現(すなわち、コーディングされたCU)を生成するために、CTUの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サイズに関して非対称区分をサポートし得る。
【0188】
[0128]インター予測処理ユニット120は、CUの各PUに対してインター予測を実施することによって、PUのための予測データを生成し得る。PUの予測データは、PUの1つまたは複数の予測サンプルブロックと、PUの動き情報とを含み得る。インター予測ユニット121は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUに対して異なる動作を実施し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測ユニット121は、PUに対してインター予測を実行しない。したがって、Iモードで符号化されたブロックに対して、予測ブロックは、同じフレーム内の以前に符号化された近隣ブロックからの空間的予測を使用して形成される。
【0189】
[0129]PUがPスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUの参照領域について参照ピクチャのリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索し得る。PUの参照領域は、PUのサンプルブロックに最も密接に対応するサンプルブロックを含んでいる、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUの参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニットは、PUのコーディングブロックと、参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMVを生成し得る。たとえば、MVは、現在の復号ピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として参照インデックスとMVとを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測サンプルブロックを生成し得る。
【0190】
[0130]PUがBスライス中にある場合、動き推定ユニットは、PUについて単予測または双予測を実施し得る。PUについて単予測を実施するために、動き推定ユニットは、PUの参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを探索し得る。動き推定ユニットは、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUのサンプルブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMVと、参照ピクチャがRefPicList0中にあるかまたはRefPicList1中にあるかを示す1つまたは複数の予測方向インジケータとを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
【0191】
[0131]PUについて双方向インター予測を実施するために、動き推定ユニットは、PUの参照領域についてRefPicList0中の参照ピクチャを探索し得、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニットは、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照ピクチャインデックスを生成し得る。さらに、動き推定ユニットは、参照領域に関連付けられた参照ロケーションとPUのサンプルブロックとの間の空間変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスとMVとを含み得る。動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
【0192】
[0132]本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースコーディングを実施するように構成され得る。HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUのコンテキストにおいて(本開示全体で)本明細書で説明する開示されるプロセスのすべてが、追加または代替として、PUモードに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、またはそれらの一部として働くように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、またはさらには非長方形形状の領域であり得る。
【0193】
[0133]パレットベース符号化ユニット122は、たとえば、パレットベース符号化モードがたとえばCUまたはPUのために選択されたとき、パレットベースの符号化を実施し得る。たとえば、パレットベース符号化ユニット122は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける、インデックス値などの情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット122によって実施されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実施され得る。
【0194】
[0134]パレットベース符号化ユニット122は、本明細書で説明する様々なシンタックス要素のいずれかを生成するように構成され得る。したがって、ビデオエンコーダ20は、本開示で説明するパレットベースコードモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化するか、または、たとえばHEVCインター予測コーディングモードまたはイントラ予測コーディングモードなど、異なるモードを使用してビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオエンコーダ20は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードでいくつかのブロックを符号化し、パレットベースコーディングモードで他のブロックを復号し得る。
【0195】
[0135]イントラ予測処理ユニット126は、PUに対してイントラ予測を実施することによって、PUのための予測データを生成し得る。PUのための予測データは、PUのための予測サンプルブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実施し得る。
【0196】
[0136]PUに対してイントラ予測を実施するために、イントラ予測処理ユニット126は、PUのための予測データの複数のセットを生成するために複数のイントラ予測モードを使用し得る。PUのための予測データのセットを生成するためにいくつかのイントラ予測モードを使用するとき、イントラ予測処理ユニット126は、そのイントラ予測モードに関連付けられた方向へ、PUの予測ブロックにわたって、近隣PUのサンプルブロックからサンプルの値を延ばし得る。近隣PUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連付けられた領域のサイズに依存し得る。
【0197】
[0137]予測処理ユニット100は、PUについてインター予測処理ユニット120によって生成された予測データ、またはPUについてイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUのための予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいて、CUのPUのための予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれることがある。
【0198】
[0138]残差生成ユニット102は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)と、CUのPUの選択された予測サンプルブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)とに基づいて、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロックおよびCr残差ブロック)を生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルと、CUのPUの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差分に等しい値を有するようにCUの残差ブロックを生成し得る。
【0199】
[0139]変換処理ユニット104は、CUに関連付けられる残差ブロックをCUのTUに関連付けられる変換ブロックに区分するために、4分木区分を実施し得る。したがって、いくつかの例では、TUは、ルーマ変換ブロックと、2つのクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックとクロマ変換ブロックとのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも、または基づかないこともある。「残差4分木」(RQT)として知られる4分木構造は、領域の各々に関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
【0200】
[0140]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUについて変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
【0201】
[0141]量子化ユニット106は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部またはすべてに関連付けられたビット深度を低減し得る。たとえば、nビット変換係数は、量子化中にmビット変換係数に切り捨てられ得、ここで、nはmよりも大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQP値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも低い精度を有し得る。
【0202】
[0142]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックから残差ブロックを再構成するために、係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット112は、TUに関連付けられた再構成された変換ブロックを生成するために、予測処理ユニット100によって生成された1つまたは複数の予測サンプルブロックからの対応するサンプルに、再構成された残差ブロックを加算し得る。このようにCUの各TUのための変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成し得る。
【0203】
[0143]フィルタユニット114は、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング動作を実施し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実施した後に、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実施するために、再構成されたコーディングブロックを含んでいる参照ピクチャを使用し得る。さらに、イントラ予測処理ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を実施するために、復号ピクチャバッファ116中の再構成されたコーディングブロックを使用し得る。
【0204】
[0144]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、エントロピー符号化データを生成するために、データに対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット118は、CABAC演算、コンテキスト適応型可変長コーディング(CAVLC)演算、可変対可変(V2V)長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)演算、確率間隔区分エントロピー(PIPE)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実施し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUのためのRQTを表すデータを含み得る。
【0205】
[0145]いくつかの例では、残差コーディングは、パレットコーディングとともに実施されない。したがって、ビデオエンコーダ20は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を実施しないことがある。さらに、ビデオエンコーダ20は、残差データとは別個に、パレットコーディングモードを使用して生成されたデータをエントロピー符号化し得る。
【0206】
[0146]本開示の技法の1つまたは複数によると、ビデオエンコーダ20、および具体的にはパレットベース符号化ユニット122は、予測ビデオブロックのパレットベースビデオコーディングを実施することができる。上で説明されたように、ビデオエンコーダ20によって生成されたパレットは、明示的に符号化されてよく、以前のパレットエントリから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
【0207】
[0147]具体的には、予測処理ユニット100は、インター予測、イントラ予測、またはパレットモードなど、ビデオデータのブロック(たとえば、CUまたはPU)用の符号化モードを決定することができる。パレットモードが選択されていると仮定すると、パレットベース符号化ユニット122は、ブロックについてのピクセル値の統計に基づいて、ブロックのためのパレットを形成することができる。ブロックの各ピクセルについて、パレットベース符号化ユニット122は、ピクセルがパレット中に対応する値を有するかどうか決定し、有する場合、パレット中へのインデックスを、ピクセルについての対応する値にシグナリングすればよい。パレットベース符号化ユニット122は、前のピクセルと同じ値を有するピクセルの数を表すラン値をシグナリングしてもよい。
【0208】
[0148]代替として、ピクセルのシーケンスが、上に隣接するピクセルと等しい値を有する場合、パレットベース符号化ユニット122は、「上方コピー」モード用のラン値をシグナリングすればよく、ランは、上に隣接するピクセルに等しい値を有するピクセルの数を表す。
【0209】
[0149]インデックスモードも上方コピーモードも、パレットモードコード化ブロックの現在のピクセルの値を適切に表さない場合、パレットベース符号化ユニット122は、ピクセルをエスケープピクセルとしてコーディングするための、本開示の技法を使用し得る。本開示の技法によると、ビデオエンコーダ20は、エスケープピクセルの値を2つのパート、すなわち第1の部分および第2の部分において符号化し得る。第1および第2の部分は、連結されると、エスケープピクセルの値を表し得る。エントロピー符号化ユニット118は、ゴロムライスコードワードを使用して第1の部分を、およびパラメータ3コードワードを伴う指数ゴロム(exponential Golomb with parameter 3 codeword)を使用して第2の部分を符号化し得る。さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パラメータ3を伴う指数ゴロムコーディングを使用して単一の値のみをコーディング(それぞれ、符号化または復号)すればよく、この値は、エスケープピクセルについての値全体(entire value)を表す。さらに他の例では、エントロピー符号化ユニット118は、パラメータ3を伴う指数ゴロムコーディングを使用して単一の値のみを符号化すればよく、この値は、エスケープピクセルについての値全体を表す。
【0210】
[0150]いくつかの例では、エントロピー符号化ユニット118は、打切り指数ゴロムコーディングを使用して第2の部分を符号化し得る。打切り指数ゴロムコーディングは、決定された最大量子化エスケープピクセル値に基づき得る。ビデオエンコーダ20(より詳細には、エントロピー符号化ユニット118)は、本明細書に記載される様々な技法のうちのいずれかを使用して、最大量子化エスケープピクセル値を決定し得る。
【0211】
[0151]たとえば、エントロピー符号化ユニット118は、上の公式(2)に従って、ブロック用の量子化パラメータに基づいて量子化ステップサイズ値を決定し、次いで、たとえば、上のプロセス(3)に従って、最大量子化エスケープピクセル値を決定するために量子化ステップサイズを使用し得る。具体的には、プロセス(3)において、一時的値(temporary value)が、公式(2)を使用して決定された量子化ステップ値に初期化される。次いで、一時的値が(1<<bitDepth)−1、すなわち、値1をビット深度だけ左シフトしたものマイナス1よりも小さい間、一時的値は、決定された量子化ステップ値だけ増大され、最大量子化エスケープピクセル値(1に初期化されている)は1だけ増大される。代替として、エントロピー符号化ユニット118は、上のプロセス(4)に従って最大量子化エスケープピクセル値を決定することができる。
【0212】
[0152]別の例として、ビデオエンコーダ20は、量子化スケール値(quantScale)、右シフトパラメータ値(rightShiftParam)、および右シフトオフセット値(rightShiftOffset)など、いくつかのエンコーダ変数についての値をシグナリングし得る。通常、これらの値は、ビデオエンコーダ20にとって利用可能になるだけであるが、この例では、ビデオエンコーダ20は、これらの要素についての値をビットストリーム中でシグナリングし、これらの値を、最大量子化エスケープピクセル値を決定するために使用することもできる。ビデオエンコーダ20は、これらの要素についての値を、1つまたは複数のルックアップテーブルを使用してシグナリングし得る。さらに、エントロピー符号化ユニット118は、上のプロセス(5)、(6)、および(7)を使用して最大量子化エスケープピクセル値を計算することができる。見るとわかるように、プロセス(7)は、quantScaleと、rightShiftOffsetと、rightShiftParamとを使用して最大量子化エスケープピクセル値cMaxを計算することを含む。代替として、エントロピー符号化ユニット118は、プロセス(8)を使用して最大量子化エスケープピクセル値を計算することができ、これは、quantScale、rightShiftOffset、およびrightShiftParam要素を使用し、クリッピングおよび除算演算は省く。
【0213】
[0153]さらに別の例として、エントロピー符号化ユニット118は、上のプロセス(9)を使用して最大量子化エスケープピクセル値を決定することができ、これは、量子化パラメータ(qP)およびビット深度に基づくルックアップテーブルを使用する。ルックアップテーブルは、表3もしくは4、または他のルックアップテーブルのいずれかに従って定義され得る。
【0214】
[0154]別の例として、エントロピー符号化ユニット118は、上のプロセス(10)〜(13)を使用して最大量子化エスケープピクセルを決定することができる。すなわち、エントロピー符号化ユニット118は、所定の値であり得るqPBase値を(プロセス(10)を使用して)決定することができる。エントロピー符号化ユニット118は次いで、プロセス(11)を使用して、量子化パラメータ(qP)およびqPBase値からquantBits値を決定し、ビット深度および決定されたquantBits値から、プロセス(12)に従ってmaxBit値を決定することができる。最終的に、エントロピー符号化ユニット118は、プロセス(13)に従って最大量子化エスケープピクセル値(cMax)を、1をmaxBit値だけ左シフトしたものマイナス1という値として決定することができる。
【0215】
[0155]上述したように、これらの様々な例示的技法のうちのどれが、最大量子化エスケープピクセル値を決定するために使用されてもよく、これは、エントロピー符号化ユニット118が、エスケープピクセル値の第2の部分の打切り指数ゴロムコーディングを実施するために使用し得る。代替として、エントロピー符号化ユニット118は、ゴロムライスコーディングおよびパラメータ3を伴う指数ゴロムコーディングの組合せを実施せずに、エスケープピクセル値の打切りバイナリコーディングを実施するために、これらの様々な技法のうちのいずれかを使用すればよい。
【0216】
[0156]このように、ビデオエンコーダ20は、ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定し、エスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを符号化するように構成されたビデオエンコーダの例を表し、指数ゴロムコードワードを符号化するために、ビデオエンコーダは、パラメータ3を伴う指数ゴロム符号化を使用するように構成される。
【0217】
[0157]
図3は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。
図3は、説明のために与えられており、本開示において広く例示され説明される技法を限定するものではない。説明のために、本開示では、HEVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【0218】
[0158]
図3の例では、ビデオデコーダ30は、ビデオデータメモリ148と、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164と、イントラ予測処理ユニット166とを含む。ビデオデコーダ30はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実施するように構成されたパレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【0219】
[0159]ビデオデータメモリ148は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ148に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ148は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ148および復号ピクチャバッファ162は、同期DRAM(SDRAM)を含む、ダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ148および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ148は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0220】
[0160]ビデオデータメモリ148、すなわち、CPBは、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶し得る。エントロピー復号ユニット150は、ビデオデータメモリ148から符号化ビデオデータ(たとえば、NALユニット)を受信し、NALユニットをパースしてシンタックス要素を復号し得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから取得(たとえば、抽出)されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
【0221】
[0161]ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含んでいることがある。スライスヘッダ中のシンタックス要素は、スライスを含んでいるピクチャに関連付けられたPPSを識別するシンタックス要素を含み得る。
【0222】
[0162]ビットストリームからのシンタックス要素を復号することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構成動作を実施し得る。区分されていないCUに対して再構成動作を実施するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実施し得る。CUの各TUについて再構成動作を実施することによって、ビデオデコーダ30は、CUの残差ブロックを再構成し得る。
【0223】
[0163]CUのTUに対して再構成動作を実施することの一部として、逆量子化ユニット154は、TUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、量子化の程度を決定するために、また同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定するために、TUのCUに関連付けられたQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
【0224】
[0164]逆量子化ユニット154が係数ブロックを逆量子化した後に、逆変換処理ユニット156は、TUに関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を係数ブロックに適用し得る。
【0225】
[0165]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、PUのための予測ブロックを生成するためにイントラ予測を実施し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に近接するPUの予測ブロックに基づいてPUのための予測ルーマブロック、予測Cbブロックおよび予測Crブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。
【0226】
[0166]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを構成し得る。さらに、インター予測を使用してPUが符号化された場合、エントロピー復号ユニット150は、PUについての動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUのための1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUのための予測ブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)を生成し得る。
【0227】
[0167]再構成ユニット158は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)を再構成するために、適用可能なとき、CUのTUに関連付けられた変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック)と、CUのPUの予測ブロック(たとえば、ルーマブロック、CbブロックおよびCrブロック)とを、すなわち、イントラ予測データまたはインター予測データのいずれかを使用し得る。たとえば、再構成ユニット158は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)を再構成するために、変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック)のサンプルを、予測ブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)の対応するサンプルに加算し得る。
【0228】
[0168]フィルタユニット160は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)に関連付けられたブロッキングアーティファクトを低減するために、デブロッキング演算を実施し得る。ビデオデコーダ30は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)を復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および
図1のディスプレイデバイス32などのディスプレイデバイス上での提示のための、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロック(たとえば、ルーマブロック、CbブロックおよびCrブロック)に基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実施し得る。このようにして、ビデオデコーダ30は、有意係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換ブロックを生成するため、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成するため、およびコーディングブロックを表示のために出力するために、変換係数レベルに変換を適用し得る。
【0229】
[0169]本開示の様々な例によれば、ビデオデコーダ30は、パレットベースコーディングを実施するように構成され得る。特に、ビデオデコーダ30は、パレットベースのコーディングを実施し得るパレットベース復号ユニット165を含む。たとえば、パレットベース復号ユニット165は、ピクセル値を示すエントリを有するパレットを生成するように構成され得る。さらに、この例では、パレットベース復号ユニット165は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリに関連付ける情報を受信し得る。この例では、パレットベース復号ユニット165は、その情報に基づいてパレット中のピクセル値を選択し得る。さらに、この例では、パレットベース復号ユニット165は、選択されたピクセル値に基づいてブロックのピクセル値を再構成し得る。様々な機能がパレットベース復号ユニット165によって実施されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実施され得る。
【0230】
[0170]パレットベース復号ユニット165は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実施し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット165は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、たとえば、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオデコーダ30は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードでいくつかのブロックを復号し、パレットベースコーディングモードで他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの1つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
【0231】
[0171]本開示の技法のうちの1つまたは複数によれば、ビデオデコーダ30、具体的にはパレットベース復号ユニット165は、パレットコーディングされたビデオブロックのパレットベースビデオ復号を実施し得る。上記で説明したように、ビデオデコーダ30によって復号されたパレットは、明示的に符号化およびシグナリングされるか、受信されたパレットコーディングされたブロックに関してビデオデコーダ30によって再構成されるか、前のパレットエントリから予測されるか、以前のピクセル値から予測されるか、またはこれらの組合せであり得る。
【0232】
[0172]具体的には、エントロピー復号ユニット150は、ビデオデータのブロック(たとえば、PUまたはCU)がパレットモードを使用してコーディングされていることを示す情報を復号することができる。エントロピー復号ユニット150は、ブロックの各ピクセルが、パレットモードを使用してどのようにコーディングされているかを表す情報をさらに復号することができる。たとえば、エントロピー復号ユニット150は、インデックス値とラン値とを、{インデックス,ラン}ペアとして復号し得る。インデックス値は、ブロックのためのパレットのエントリを表し、エントリはピクセル値を指定し、ラン値は、同じ値を有する現在のピクセルに加え、ピクセルの数を示す。
【0233】
[0173]インデックス値がパレットのサイズに等しい場合、エントロピー復号ユニット150は、現在のピクセルがエスケープピクセルであると決定し得る。したがって、本開示の技法によると、エントロピー復号ユニット150は、ビットストリームの2つの後続値、すなわち、ゴロムライスコーディングされた第1の値と、パラメータ3を伴う指数ゴロムコーディングをされた第2の値とを復号することができる。第1の値はエスケープピクセルの値の第1の部分を表し、第2の値はエスケープピクセルの値の第2の部分を表す。したがって、第1の値と第2の値とを復号した(それぞれ、第1の部分と第2の部分とを生じる(producing))後、エントロピー復号ユニット150は、エスケープピクセルの値を再生するために第1の部分と第2の部分とを連結し、エスケープピクセルの値をパレットベース復号ユニット165に与えればよい。代替として、エントロピー復号ユニット150は、第1の部分と第2の部分とをパレットベース復号ユニット165に与えてよく、これは、エスケープピクセルの値を再生するために、第1の部分と第2の部分とを連結し得る。さらに他の例では、エントロピー復号ユニット150は、パラメータ3を伴う指数ゴロムコーディングを使用して単一の値のみを復号すればよく、この値は、エスケープピクセルについての値全体を表す。
【0234】
[0174]いくつかの例では、エントロピー復号ユニット150は、打切り指数ゴロムコーディングを使用して第2の部分を復号し得る。打切り指数ゴロムコーディングは、決定された最大量子化エスケープピクセル値に基づき得る。ビデオデコーダ30(より詳細には、エントロピー復号ユニット150)は、本明細書に記載される様々な技法のうちのいずれかを使用して、最大量子化エスケープピクセル値を決定し得る。
【0235】
[0175]たとえば、エントロピー復号ユニット150は、上の公式(2)に従って、ブロック用の量子化パラメータに基づいて量子化ステップサイズ値を決定し、次いで、たとえば、上のプロセス(3)に従って、最大量子化エスケープピクセル値を決定するために量子化ステップサイズを使用し得る。具体的には、プロセス(3)において、一時的値が、公式(2)を使用して決定された量子化ステップ値に初期化される。次いで、一時的値が(1<<bitDepth)−1、すなわち、値1をビット深度だけ左シフトしたものマイナス1よりも小さい間、一時的値は、決定された量子化ステップ値だけ増大され、最大量子化エスケープピクセル値(1に初期化されている)は1だけ増大される。代替として、エントロピー復号ユニット150は、上のプロセス(4)に従って最大量子化エスケープピクセル値を決定することができる。
【0236】
[0176]別の例として、ビデオデコーダ30は、量子化スケール値(quantScale)、右シフトパラメータ値(rightShiftParam)、および右シフトオフセット値(rightShiftOffset)など、いくつかのエンコーダ変数についての値を受信し得る。通常、これらの値は、ビデオエンコーダにとって利用可能になるだけであるが、この例では、ビデオデコーダ30は、これらの要素についての値をビットストリームから復号し、これらの値を、最大量子化エスケープピクセル値を決定するために使用することもできる。ビデオデコーダ30は、インデックスを、これらのエンコーダ変数を表す1つまたは複数のルックアップテーブルの中に復号し得る。さらに、エントロピー復号ユニット150は、上のプロセス(5)、(6)、および(7)を使用して最大量子化エスケープピクセル値を計算することができる。見るとわかるように、プロセス(7)は、quantScaleと、rightShiftOffsetと、rightShiftParamとを使用して最大量子化エスケープピクセル値cMaxを計算することを含む。代替として、エントロピー復号ユニット150は、プロセス(8)を使用して最大量子化エスケープピクセル値を計算することができ、これは、quantScale、rightShiftOffset、およびrightShiftParam要素を使用し、クリッピングおよび除算演算は省く。
【0237】
[0177]さらに別の例として、エントロピー復号ユニット150は、上のプロセス(9)を使用して最大量子化エスケープピクセル値を決定することができ、これは、量子化パラメータ(qP)およびビット深度に基づくルックアップテーブルを使用する。ルックアップテーブルは、表3もしくは4、または他のルックアップテーブルのいずれかに従って定義され得る。
【0238】
[0178]別の例として、エントロピー復号ユニット150は、上のプロセス(10)〜(13)を使用して最大量子化エスケープピクセルを決定することができる。すなわち、エントロピー復号ユニット150は、所定の値であり得るqPBase値を(プロセス(10)を使用して)決定することができる。エントロピー復号ユニット150は次いで、プロセス(11)を使用して、量子化パラメータ(qP)およびqPBase値からquantBits値を決定し、次いで、ビット深度および決定されたquantBits値から、プロセス(12)に従ってmaxBit値を決定することができる。最終的に、エントロピー復号ユニット150は、プロセス(13)に従って最大量子化エスケープピクセル値(cMax)を、1をmaxBit値だけ左シフトしたものマイナス1という値として決定することができる。
【0239】
[0179]上述したように、これらの様々な例示的技法のうちのどれが、最大量子化エスケープピクセル値を決定するために使用されてもよく、これは、エントロピー復号ユニット150が、エスケープピクセル値の第2の部分の打切り指数ゴロムコーディングを実施するために使用し得る。代替として、エントロピー復号ユニット150は、ゴロムライスコーディングおよびパラメータ3を伴う指数ゴロムコーディングの組合せを実施せずに、エスケープピクセル値の打切りバイナリコーディングを実施するために、これらの様々な技法のうちのいずれかを使用すればよい。
【0240】
[0180]やはり(Again)、エントロピー復号ユニット150は、パレットのサイズに等しいパレットインデックス値によってシグナリングされたエスケープピクセル値を復号するために、上記のプロセスを実施し得る。代替として、エントロピー復号ユニット150は、ラン値のみを復号し得る。ラン値は、上方コピーモードを使用してコーディングされたピクセルの数を示す。エントロピー復号ユニット150は、復号されたラン値をパレットベース復号ユニット165に与えればよい。したがって、パレットベース復号ユニット165は、これらのピクセルの各々についての値を、それぞれの上に隣接するピクセルから取り出すことができる。
【0241】
[0181]このように、ビデオデコーダ30は、パレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号するように構成されたビデオデコーダの例を表し、ビデオデコーダは、パラメータ3を伴う指数ゴロム復号を使用して指数ゴロムコードワードを復号し、エスケープピクセルについての値を使用してブロックを復号するように構成される。
【0242】
[0182]
図4は、本開示の技法による、ビデオデータのブロックを符号化するための例示的な方法を示すフローチャートである。
図4の方法は、(たとえば、
図2に示される)ビデオエンコーダ20およびその構成要素によって実施され得る。
【0243】
[0183]この例では、予測処理ユニット100は最初に、ビデオデータのブロックを受信する(200)。ブロックは、たとえば、予測ユニット(PU)またはコーディングユニット(CU)であり得る。予測処理ユニット100は次いで、ブロック用のコーディングモードを決定する(202)。たとえば、予測処理ユニット100は、様々なコーディングモードをテストし、レートひずみ最適化(RDO)プロセスを使用してモードを比較すればよい。さらに、予測処理ユニット100は、RDOプロセスを使用して、様々なブロックサイズとブロック区分方式(block partitioning schemes)とを比較することもできる。
【0244】
[0184]予測処理ユニット100はイントラまたはインター予測モードを選択することができ、この場合、インター予測処理ユニット120またはイントラ予測処理ユニット126は、それぞれ予測ブロックを形成するイントラ予測またはインター予測を使用してブロックのピクセルを予測することができる(204)。ビデオエンコーダ20は次いで、ブロックの残差値を形成し、処理し得る(206)。たとえば、残差生成ユニット102は、予測ブロックから元のブロックをピクセル単位で減算して、残差ブロックを形成することができる。変換処理ユニット104は次いで、たとえば、DCTなどの変換を使用して残差ブロックを変換して、変換ブロックを形成することができる。量子化ユニット106は次いで、変換ブロックの変換係数を量子化し、量子化変換係数をエントロピー符号化ユニット118に与えればよい。予測処理ユニット100はまた、予測モードを表す情報(たとえば、イントラ/インター、イントラ予測が使用される場合は選択されたイントラモード、またはインター予測が使用される場合は動きパラメータ)をエントロピー符号化ユニット118に提供する。したがって、エントロピー符号化ユニット118は、予測情報と残差値(すなわち、量子化変換係数)とをエントロピー符号化する(208)。
【0245】
[0185]代替として、予測処理ユニット100は、ブロックをコーディングするためのパレットモードを選択することができ、この場合、パレットベース符号化ユニット122は、ブロックについてのピクセル統計を分析する(210)。たとえば、パレットベース符号化ユニット122は、頻繁に使用されるピクセル値を決定することができる。パレットベース符号化ユニット122は次いで、統計に基づいて、ブロックのためのパレットを形成する(212)。
図4には示されていないが、エントロピー符号化ユニット118は、パレットについてのデータをエントロピー符号化し得る。たとえば、パレットは、たとえば、表1および2に関して上述したように、前に使用されたパレットに相対して(relative to)予測コーディングされ(predictively coded)得る。
【0246】
[0186]パレットベース符号化ユニット122は次いで、ピクセルをどのようにしてコーディングするかを決定するために、ブロックのピクセルを走査し得る(214)。たとえば、パレットベース符号化ユニット122は、現在のピクセル値がパレット中に含まれるかどうか決定し得る。ピクセル値がパレット中に含まれる場合、パレットベース符号化ユニット122は、ピクセル値に対応する、パレットからのインデックスをエントロピー符号化ユニット118に与えてよく、これは、インデックス値をエントロピー符号化し得る(216)。その上、パレットベース符号化ユニット122は、同じ値を有する、前のピクセルに続く行中のピクセルの数を決定し、エントロピー符号化ユニット118に「ラン」値を与えればよく、これは、ラン値をエントロピー符号化し得る(218)。
【0247】
[0187]代替として、現在のピクセルがパレット中に値をもたない場合、パレットベース符号化ユニット122は、ピクセルについての値が、上に隣接するピクセル値と同じかどうか決定すればよい。いくつかの例では、この決定は、ピクセル値が、パレット中の値に対応するかどうか決定することに先立って行われ得る。いずれの場合にも、現在のピクセルが、上に隣接するピクセル値に等しい値を有する場合、パレットベース符号化ユニット122は、上に隣接するピクセルに等しい値を有するピクセルの数を記述するラン値をエントロピー符号化ユニット118に与えればよく、これは、ラン値をエントロピー符号化し得る(220)。
【0248】
[0188]現在のピクセルが、パレット中の値に対応せず、上に隣接するピクセルに等しい値をもたない場合、パレットベース符号化ユニット122は、ピクセルをエスケープピクセルとして符号化してよい。具体的には、パレットベース符号化ユニット122は、パレットのサイズに等しいインデックス値をエントロピー符号化ユニット118に与えればよく、これは、インデックス値をパレットのサイズとしてエントロピーコーディングし得る(222)。パレットのサイズに等しいインデックス値は、現在のピクセルがエスケープピクセルとして符号化されていることをシグナリングし得る。パレットベース符号化ユニット122は、エスケープピクセルの値をエントロピー符号化ユニット118にさらに与えてよい。
【0249】
[0189]本開示の技法によると、エントロピー符号化ユニット118は、エスケープピクセルの値を2つのパートにおいて符号化することができる。より詳細には、エントロピー符号化ユニット118は、エスケープピクセルの値を第1の部分および第2の部分に分割し(split)得る。エントロピー符号化ユニット118は、ピクセル値の第1の部分をゴロムライス符号化し(Golomb-rice encode)(224)、ピクセル値の第2の部分に、パラメータ3を伴う指数ゴロム符号化をし得る(226)。
図4には示されていないが、エントロピー符号化ユニット118は、決定された最大量子化エスケープピクセル値に基づいて、打切りパラメータ3を伴う指数ゴロムを使用して第2の部分をコーディングすることができる。
【0250】
[0190]ビデオエンコーダ20は、このプロセス(たとえば、ステップ216および218からなるシーケンス、ステップ220、またはステップ222〜226からなるシーケンスのうちの1つ)を、パレットモードコード化ブロックの各ピクセルについて実施することができる。
【0251】
[0191]このように、
図4の方法は、ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定することと、エスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを符号化することと、ここにおいて、指数ゴロムコードワードを符号化することは、パラメータ3を伴う指数ゴロム符号化を使用して指数ゴロムコードワードを符号化することを備える、を含む方法の例を表す。
【0252】
[0192]
図4の方法は、ゴロムライスコーディングを使用してエスケープピクセルの値の第1の部分と、指数ゴロムコーディングを使用してエスケープピクセルの値の第2の部分の両方を符号化することを含むが、他の例では、エスケープピクセルについての値全体が、指数ゴロムコーディングのみを使用して(たとえば、指数ゴロムコーディング用にパラメータ3を使用して、コーディングされ得ることを理解されたい。
【0253】
[0193]
図5は、本開示の技法による、ビデオデータのブロックを符号化するための別の例示的な方法を示すフローチャートである。
図5の方法は、(たとえば、
図2に示される)ビデオエンコーダ20およびその構成要素によって実施され得る。概して、
図5の方法は、実質的に
図4の方法に従う。ただし、
図5では、現在のピクセルが、パレット中の値に対応せず、上に隣接するピクセルに等しい値をもたないとき、パレットベース符号化ユニット122は、ピクセルをエスケープピクセルとして符号化し、具体的には、エスケープピクセルについての値を、パラメータ3を伴う指数ゴロムコーディングを使用して符号化すればよい(may)(228)。
【0254】
[0194]このように、
図5の方法は、ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定することと、エスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを符号化することと、ここにおいて、指数ゴロムコードワードを符号化することは、パラメータ3を伴う指数ゴロム符号化を使用して指数ゴロムコードワードを符号化することを備える、を含む方法の別の例を表す。
【0255】
[0195]
図6は、本開示の技法による、ビデオデータのブロックを復号するための例示的な方法を示すフローチャートである。
図6の方法は、(たとえば、
図3に示される)ビデオデコーダ30およびその構成要素によって実施され得る。
【0256】
[0196]最初に、エントロピー復号ユニット150は、ビデオデータのブロック用のコーディングモードを示すデータを復号し得る(250)。エントロピー復号ユニット150は、このデータを、ブロック用のコーディングモード、たとえば、イントラ予測、インター予測、またはパレットモードのうちの1つを決定するために使用することができる(252)。
【0257】
[0197]コーディングモードがイントラ予測またはインター予測である場合、エントロピー復号ユニット150は、予測情報(たとえば、イントラモードまたは動きパラメータ)を復号し、予測情報を予測処理ユニット152に与え得る。予測処理ユニット152は、予測情報を、イントラ予測またはインター予測を使用して、ブロックのピクセルを予測するために使用することができる(254)。たとえば、イントラ予測処理ユニット166は、ブロックに隣接ピクセルから(from neighboring pixels to the block)予測ブロックを構成するために、イントラ予測モードを使用し得る。別の例として、動き補償ユニット164は、復号ピクチャバッファ162の、前に復号されたピクチャから参照ブロックを取り出す(および、可能性としては、処理する、たとえば、フィルタリングする)ために、動きパラメータを使用し得る。
【0258】
[0198]さらに、ビデオデコーダ30は、ブロックの残差値を復号し、処理し得る(256)。たとえば、逆量子化ユニット154は量子化変換係数を逆量子化することができ、逆変換処理ユニット156は、残差ブロックを再構成するために、変換係数を逆変換することができる。再構成ユニット158は次いで、元の(original)ブロックを再構成するために、残差ブロックの残差値と、予測ブロックの予測値とを組み合わせればよい(258)。
【0259】
[0199]代替として、エントロピー復号ユニット150は、ブロック用のコーディングモードがパレットモードであると決定し得る。この場合、エントロピー復号ユニット150は、ブロックのためのパレットを復号することができる(260)。表1および2に関して上述したように、パレットは、前のパレットに相対して予測コーディングされ得る。したがって、エントロピー復号ユニット150は、パレット用の復号データをパレットベース復号ユニット165に与えればよく、これは、復号データを使用して、ブロックのためのパレットを再構成し得る。
【0260】
[0200]エントロピー復号ユニット150は、ブロックのピクセルについてのデータを復号することもできる(264)。たとえば、復号データは、パレットのサイズよりも小さいインデックス値に対応し得る。この場合、エントロピー復号ユニット150はまた、ラン値を復号し(266)、インデックスとラン値とをパレットベース復号ユニット165に与え得る。パレットベース復号ユニット165は、ピクセルと、ラン中のピクセルの各々との値を、インデックス値に対応する、パレットのピクセル値に等しく設定すればよい(268)。
【0261】
[0201]別の例として、復号データは、インデックス値をもたないラン値であってよい。このような、インデックス値をもたないラン値は、上方コピーモードを使用してコーディングされたピクセルの数を示し得る。この場合、エントロピー復号ユニット150はラン値をパレットベース復号ユニット165に与えればよく、これは、ラン中のピクセルの各々についての値を、それぞれの、上に隣接するピクセル値の値に等しく設定し得る。
【0262】
[0202]別の例として、復号データは、パレットのサイズに等しいインデックス値であり得る。この場合、エントロピー復号ユニット150は、ピクセル値の第1の部分に対応する第1の値をゴロムライス復号することができる(272)。エントロピー復号ユニット150は、ピクセル値の第2の部分に対応する第2の値に、パラメータ3を伴う指数ゴロム復号をすることもできる(274)。上述したように、エントロピー復号ユニット150は代替として、第2の値の、打切りパラメータ3を伴う指数ゴロム復号を実施するために、最大量子化エスケープピクセル値を決定し得る。エントロピー復号ユニット150(またはパレットベース復号ユニット165)は次いで、ピクセル値を再生するために、第1の部分と第2の部分とを連結し得る(276)。
【0263】
[0203]ビデオデコーダ30は、このプロセス(たとえば、ステップ266および268からなるシーケンス、ステップ270、またはステップ272〜276からなるシーケンスのうちの1つ)を、パレットモードコード化ブロックの各ピクセルについて実施することができる。
【0264】
[0204]このように、
図6の方法は、ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号することを含む方法の例を表し、指数ゴロムコードワードを復号することは、パラメータ3を伴う指数ゴロム復号を使用して、指数ゴロムコードワードを復号することと、エスケープピクセルについての値を使用してブロックを復号することとを備える。
【0265】
[0205]
図6の方法は、ゴロムライスコーディングを使用してエスケープピクセルの値の第1の部分と、指数ゴロムコーディングを使用してエスケープピクセルの値の第2の部分の両方を復号することを含むが、他の例では、エスケープピクセルについての値全体が、指数ゴロムコーディングのみを使用して(たとえば、指数ゴロムコーディング用にパラメータ3を使用して、コーディングされ得ることを理解されたい。
【0266】
[0206]
図7は、本開示の技法による、ビデオデータのブロックを復号するための別の例示的な方法を示すフローチャートである。
図7の方法は、(たとえば、
図3に示される)ビデオデコーダ30およびその構成要素によって実施され得る。概して、
図7の方法は、実質的に
図6の方法に従う。ただし、
図7では、インデックス値がパレットサイズに等しいとき、パレットベース復号ユニット165は、ピクセルをエスケープピクセルとして復号し、具体的には、パラメータ3を伴う指数ゴロムコーディングを使用して、エスケープピクセルについての値を復号し得る(278)。
【0267】
[0207]このように、
図7の方法は、ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号することを含む方法の例を表し、指数ゴロムコードワードを復号することは、パラメータ3を伴う指数ゴロム復号を使用して、指数ゴロムコードワードを復号することと、エスケープピクセルについての値を使用してブロックを復号することとを備える。
【0268】
[0208]例によっては、本明細書で説明した技法のうちのいずれかの、いくつかの動作またはイベントは、異なる順序で実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した動作またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、動作またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。加えて、本開示のいくつかの態様は、明確にするために、単一のモジュールまたはユニットによって実施されるものとして記載されているが、本開示の技法は、ビデオコーダに関連付けられたユニットまたはモジュールの組合せによって実施される場合があることを理解されたい。
【0269】
[0209]本開示のいくつかの態様について、説明のために開発中のHEVC規格に関して説明した。ただし、本開示で説明する技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
【0270】
[0210]上で説明された技法は、ビデオエンコーダ20(
図1および
図2)および/またはビデオデコーダ30(
図1および
図3)によって実施されてよく、その両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【0271】
[0211]技法の様々な態様の特定の組合せが上述されたが、これらの組合せは、本開示に記載された技法の例を単に示すために提供される。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきでなく、本開示で説明した技法の様々な態様の任意の想起可能な組合せを包含し得る。
【0272】
[0212]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれの任意の組合せで実施され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0273】
[0213]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【0274】
[0214]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造または本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【0275】
[0215]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、様々な構成要素、モジュール、またはユニットについて、開示する技法を実施するように構成されたデバイスの機能的態様を強調するように説明したが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
【0276】
[0216]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号することと、ここにおいて、前記指数ゴロムコードワードを復号することは、パラメータ3を伴う指数ゴロム復号を使用して、前記指数ゴロムコードワードを復号することを備える、
前記エスケープピクセルについての前記値を使用して前記ブロックを復号することとを備える方法。
[C2]
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定することと、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定することとをさらに備え、
前記指数ゴロムコードワードを復号することは、前記最大量子化値を使用して前記指数ゴロムコードワードを復号することを備える、C1に記載の方法。
[C3]
前記最大量子化値を決定することは、前記量子化ステップサイズ値のみに基づいて前記最大量子化値を決定することを備える、C2に記載の方法。
[C4]
前記最大量子化値を決定することは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定することを備え、前記方法は、ルックアップテーブルから、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを決定することをさらに備える、C2に記載の方法。
[C5]
前記最大量子化値を決定することは、クリッピング演算を実施せずに前記最大量子化値を決定することを備える、C4に記載の方法。
[C6]
前記最大量子化値を決定することは、除算演算を実施せずに前記最大量子化値を計算することを備える、C2に記載の方法。
[C7]
前記最大量子化値を決定することは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すことを備える、C2に記載の方法。
[C8]
前記エスケープピクセルを含む色成分に基づいて、前記量子化パラメータを決定することをさらに備える、C7に記載の方法。
[C9]
前記値の前記少なくとも一部分が前記値の第2の部分を備え、前記方法は、
前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを復号することと、
前記エスケープピクセルについての前記値を生じるために、前記第1の部分と前記第2の部分とを組み合わせることとをさらに備える、C1に記載の方法。
[C10]
ビデオデータを復号するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
ビデオデコーダとを備え、前記ビデオデコーダが、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号することと、ここにおいて、前記ビデオデコーダは、パラメータ3を伴う指数ゴロム復号を使用して、前記指数ゴロムコードワードを復号するように構成される、
前記エスケープピクセルについての前記値を使用して前記ブロックを復号することとを行うように構成される、デバイス。
[C11]
前記ビデオデコーダは、
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定し、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定するようにさらに構成され、
前記ビデオデコーダは、前記最大量子化値を使用して、前記指数ゴロムコードワードを復号するように構成される、C10に記載のデバイス。
[C12]
前記ビデオデコーダは、前記量子化ステップサイズ値のみに基づいて、前記最大量子化値を決定するように構成される、C11に記載のデバイス。
[C13]
前記ビデオデコーダは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定するように構成され、前記ビデオデコーダは、ルックアップテーブルから、前記量子化スケール値と、前記右シフトオフセット値と、前記右シフトパラメータ値とを決定するようにさらに構成される、C11に記載のデバイス。
[C14]
前記ビデオデコーダは、クリッピング演算を実施せずに前記最大量子化値を決定するように構成される、C13に記載のデバイス。
[C15]
前記ビデオデコーダは、除算演算を実施せずに前記最大量子化値を計算するように構成される、C11に記載のデバイス。
[C16]
前記ビデオデコーダは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すように構成される、C11に記載のデバイス。
[C17]
前記値の前記少なくとも一部分は前記値の第2の部分を備え、前記ビデオデコーダは、
前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを復号し、
前記エスケープピクセルについての前記値を生じるために、前記第1の部分と前記第2の部分とを組み合わせるようにさらに構成される、C10に記載のデバイス。
[C18]
ビデオデータを復号するためのデバイスであって、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の少なくとも一部分を表す指数ゴロムコードワードを復号するための手段と、ここにおいて、前記指数ゴロムコードワードを復号するための前記手段は、パラメータ3を伴う指数ゴロム復号を使用して、前記指数ゴロムコードワードを復号するための手段を備える、
前記エスケープピクセルについての前記値を使用して前記ブロックを復号するための手段とを備えるデバイス。
[C19]
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定するための手段と、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定するための手段とをさらに備え、
前記指数ゴロムコードワードを復号するための前記手段は、前記最大量子化値を使用して前記指数ゴロムコードワードを復号するための手段を備える、C18に記載のデバイス。
[C20]
前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを復号するための手段と、
前記エスケープピクセルについての前記値を生じるために、前記第1の部分と前記第2の部分とを組み合わせるための手段とをさらに備える、C18に記載のデバイス。
[C21]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
前記エスケープピクセルについての前記値の第2の部分を表す指数ゴロムコードワードを復号ことと、ここにおいて、前記プロセッサに前記指数ゴロムコードワードを復号させる前記命令は、前記プロセッサに、パラメータ3を伴う指数ゴロム復号を使用して前記指数ゴロムコードワードを復号させる命令を備える、
前記エスケープピクセルについての前記値を使用して前記ブロックを復号することとを行わせる、コンピュータ可読記憶媒体。
[C22]
前記プロセッサに、
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定することと、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定することとを行わせる命令をさらに備え、
前記プロセッサに前記指数ゴロムコードワードを復号させる前記命令は、前記プロセッサに、前記最大量子化値を使用して前記指数ゴロムコードワードを復号させる命令を備える、C21に記載のコンピュータ可読記憶媒体。
[C23]
前記値の前記少なくとも一部分は前記値の第2の部分を備え、前記プロセッサに、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値の第1の部分を表すゴロムライスコードワードを復号することと、
前記エスケープピクセルについての前記値を生じるために、前記第1の部分と前記第2の部分とを組み合わせることとを行わせる命令をさらに備える、C21に記載のコンピュータ可読記憶媒体。
[C24]
ビデオデータを符号化する方法であって、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定することと、
前記エスケープピクセルについての前記値の少なくとも一部分を表す指数ゴロムコードワードを符号化することと、ここにおいて、前記指数ゴロムコードワードを符号化することは、パラメータ3を伴う指数ゴロム符号化を使用して前記指数ゴロムを符号化することを備える、を備える方法。
[C25]
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定することと、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定することとをさらに備え、
前記指数ゴロムコードワードを符号化することは、前記最大量子化値を使用して前記指数ゴロムコードワードを符号化することを備える、C24に記載の方法。
[C26]
前記最大量子化値を決定することは、前記量子化ステップサイズ値のみに基づいて前記最大量子化値を決定することを備える、C25に記載の方法。
[C27]
前記最大量子化値を決定することは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定することを備え、前記方法は、ルックアップテーブルからの、前記量子化スケール値、前記右シフトオフセット値、および前記右シフトパラメータ値を表す値を符号化することをさらに備える、C25に記載の方法。
[C28]
前記最大量子化値を決定することは、クリッピング演算を実施せずに前記最大量子化値を決定することを備える、C27に記載の方法。
[C29]
前記最大量子化値を決定することは、除算演算を実施せずに前記最大量子化値を計算することを備える、C25に記載の方法。
[C30]
前記最大量子化値を決定することは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すことを備える、C25に記載の方法。
[C31]
前記エスケープピクセルを含む色成分に基づいて、前記量子化パラメータを決定することをさらに備える、C30に記載の方法。
[C32]
前記少なくとも一部分は前記値の第2の部分を備え、前記方法は、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化することをさらに備える、C24に記載の方法。
[C33]
ビデオデータを符号化するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
ビデオエンコーダとを備え、前記ビデオエンコーダが、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定することと、
前記エスケープピクセルについての前記値の少なくとも一部分を表す指数ゴロムコードワードを符号化することと、ここにおいて、前記ビデオエンコーダは、パラメータ3を伴う指数ゴロム符号化を使用して前記指数ゴロムコードワードを符号化するように構成される、を行うように構成される、デバイス。
[C34]
前記ビデオエンコーダは、
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定し、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定するようにさらに構成され、
前記ビデオエンコーダは、前記最大量子化値を使用して、前記指数ゴロムコードワードを符号化するように構成される、C33に記載のデバイス。
[C35]
前記ビデオエンコーダは、前記量子化ステップサイズ値のみに基づいて、前記最大量子化値を決定するように構成される、C33に記載のデバイス。
[C36]
前記ビデオエンコーダは、前記量子化ステップサイズ値、量子化スケール値、右シフトオフセット値、および右シフトパラメータ値に基づいて前記最大量子化値を決定するように構成され、前記ビデオエンコーダは、ルックアップテーブルからの、前記量子化スケール値、前記右シフトオフセット値、および前記右シフトパラメータ値を表す値を符号化するようにさらに構成される、C33に記載のデバイス。
[C37]
前記ビデオエンコーダは、クリッピング演算を実施せずに前記最大量子化値を決定するように構成される、C37に記載のデバイス。
[C38]
前記ビデオエンコーダは、除算演算を実施せずに前記最大量子化値を計算するように構成される、C33に記載のデバイス。
[C39]
前記ビデオエンコーダは、前記量子化パラメータによってインデックス付けされたルックアップテーブルから前記最大量子化値を取り出すように構成される、C33に記載のデバイス。
[C40]
前記少なくとも一部分は前記値の第2の部分を備え、前記ビデオエンコーダは、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化するようにさらに構成される、C33に記載のデバイス。
[C41]
ビデオデータを符号化するためのデバイスであって、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定するための手段と、
前記エスケープピクセルについての前記値の第2の部分を表す指数ゴロムコードワードを符号化するための手段と、ここにおいて、前記指数ゴロムコードワードを符号化するための前記手段は、パラメータ3を伴う指数ゴロム符号化を使用して前記指数ゴロムコードワードを符号化するための手段を備える、を備えるデバイス。
[C42]
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定するための手段と、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定するための手段とをさらに備え、
前記指数ゴロムコードワードを符号化するための前記手段は、前記最大量子化値を使用して前記指数ゴロムコードワードを符号化するための手段を備える、C41に記載のデバイス。
[C43]
前記少なくとも一部分は第2の部分を備え、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化するための手段をさらに備える、C41に記載のデバイス。
[C44]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
ビデオデータのパレットモードコード化ブロックのエスケープピクセルについての値を決定することと、
前記エスケープピクセルについての前記値の第2の部分を表す指数ゴロムコードワードを符号化することと、ここにおいて、前記プロセッサに前記指数ゴロムコードワードを符号化させる前記命令は、前記プロセッサに、パラメータ3を伴う指数ゴロム符号化を使用して前記指数ゴロムコードワードを符号化させる命令を備える、を行わせるコンピュータ可読記憶媒体。
[C45]
前記プロセッサに、
前記パレットモードコード化ブロック用の量子化パラメータを使用して、前記パレットモードコード化ブロック用の量子化ステップサイズ値を決定することと、
前記量子化ステップサイズ値に基づいて、前記パレットモードコード化ブロックの前記エスケープピクセル用の最大量子化値を決定することとを行わせる命令をさらに備え、
前記プロセッサに前記指数ゴロムコードワードを符号化させる前記命令は、前記プロセッサに、前記最大量子化値を使用して前記指数ゴロムコードワードを符号化させる命令を備える、C44に記載のコンピュータ可読記憶媒体。
[C46]
前記少なくとも一部分は、前記エスケープピクセルについての前記値の第2の部分を備え、前記プロセッサに、前記エスケープピクセルについての前記値の第1の部分を表すゴロムライスコードワードを符号化させる命令をさらに備える、C44に記載のコンピュータ可読記憶媒体。