(57)【要約】  ある例では、ビデオデータを処理する方法は、ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータのブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定することを含む。方法はまた、切捨て二進コードのプレフィックスをコーディングすることと、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することと、を含む。
2017532896.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを処理する方法であって、
ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータの前記ブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定することと、
前記切捨て二進コードのプレフィックスをコーディングすることと、
前記切捨て二進コードの前記プレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、前記ピクセルのためのパレットコーディングモードを決定することと、
を備える、方法。
【請求項２】
前記プレフィックスをコーディングすることが、すべてが０に等しいビンを有するプレフィックスをコーディングすることを備え、前記パレットコーディングモードを決定することが、すべてが０に等しいビンを前記プレフィックスが有することに基づいて、前記第１のパレットコーディングモードを決定することを備える、請求項１に記載の方法。
【請求項３】
前記第１のパレットコーディングモードがエスケープパレットコーディングモードであり、前記方法が、前記ピクセルのピクセル値をコーディングすることをさらに備える、請求項２に記載の方法。
【請求項４】
前記ピクセル値をコーディングすることが、前記切捨て二進コードの前記プレフィックスの後で前記ピクセル値をコーディングすることを備え、前記方法が、前記ピクセル値をコーディングした後で前記ピクセル値のためのサフィックスをコーディングすることをさらに備える、請求項３に記載の方法。
【請求項５】
前記パレットコーディングモードを決定することが前記第２のパレットコーディングモードを決定することを備え、前記方法が、前記ピクセルとともにコーディングされているピクセルのランレングスを示すデータをコーディングすることをさらに備える、請求項１に記載の方法。
【請求項６】
前記ランレングスを示す前記データをコーディングすることが、前記切捨て二進コードの前記プレフィックスをコーディングした後で前記ランレングスを示す前記データをコーディングすることを備え、前記方法が、前記ランレングスを示す前記データをコーディングした後で前記切捨て二進コードのためのサフィックスをコーディングすることをさらに備える、請求項５に記載の方法。
【請求項７】
前記パレットコーディングモードを決定することが前記第２のパレットコーディングモードを決定することを備え、前記方法が、前記ピクセルとともにコーディングされているピクセルのランレングスを示すデータをコーディングすることと並列に、前記切捨て二進コードのサフィックスをコーディングすることをさらに備える、請求項１に記載の方法。
【請求項８】
インデックスの前記数に基づいて前記切捨て二進コードのための前記入力パラメータを決定することが、インデックスの前記数だけに基づいて前記切捨て二進コードのための前記入力パラメータを決定することを備える、請求項１に記載の方法。
【請求項９】
インデックスの前記数だけに基づいて前記切捨て二進コードのための前記入力パラメータを決定することが、式Ｌ＝［ｌｏｇ２（Ｎ＋２）］に基づいて前記切捨て二進コードのための前記入力パラメータを決定することを備え、ここで、Ｌが前記入力パラメータであり、Ｎがインデックスの前記数である、請求項８に記載の方法。
【請求項１０】
前記プレフィックスだけに基づいて前記パレットコーディングモードを決定することが、前記切捨て二進コードのサフィックスをコーディングする前に前記パレットコーディングモードを決定することを備える、請求項１に記載の方法。
【請求項１１】
コーディングすることが符号化することを備え、前記切捨て二進コードのプレフィックスを符号化することが、前記切捨て二進コードの前記プレフィックスを含む符号化されたビットストリームを生成することを備える、請求項１に記載の方法。
【請求項１２】
コーディングすることが復号することを備え、前記切捨て二進コードの前記プレフィックスを復号することが、符号化されたビットストリームから前記切捨て二進コードの前記プレフィックスをパースすることを備える、請求項１に記載の方法。
【請求項１３】
ビデオデータを処理するためのデバイスであって、
ビデオデータのブロックを記憶するように構成されるメモリと、
前記ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータの前記ブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定することと、
前記切捨て二進コードのプレフィックスをコーディングすることと、
前記切捨て二進コードの前記プレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、前記ピクセルのためのパレットコーディングモードを決定することと、
を行うように構成される、ビデオコーダと、
を備える、デバイス。
【請求項１４】
前記プレフィックスをコーディングするために、前記ビデオコーダが、すべてが０に等しいビンを有するプレフィックスをコーディングするように構成され、前記パレットコーディングモードを決定することが、すべてが０に等しいビンを前記プレフィックスが有することに基づいて、前記第１のパレットコーディングモードを決定することを備える、請求項１３に記載のデバイス。
【請求項１５】
前記第１のパレットコーディングモードがエスケープパレットコーディングモードであり、前記ビデオコーダがさらに、前記ピクセルのピクセル値をコーディングするように構成される、請求項１４に記載のデバイス。
【請求項１６】
前記ピクセル値をコーディングするために、前記ビデオコーダが、前記切捨て二進コードの前記プレフィックスの後で前記ピクセル値をコーディングするように構成され、前記ビデオコーダがさらに、前記ピクセル値をコーディングした後で前記ピクセル値のためのサフィックスをコーディングするように構成される、請求項１５に記載のデバイス。
【請求項１７】
前記パレットコーディングモードを決定するために、前記ビデオコーダが、前記第２のパレットコーディングモードを決定するように構成され、前記ビデオコーダがさらに、前記ピクセルとともにコーディングされているピクセルのランレングスを示すデータをコーディングするように構成される、請求項１３に記載のデバイス。
【請求項１８】
前記ランレングスを示す前記データをコーディングするために、前記ビデオコーダが、前記切捨て二進コードの前記プレフィックスをコーディングした後で前記ランレングスを示す前記データをコーディングするように構成され、前記ビデオコーダがさらに、前記ランレングスを示す前記データをコーディングした後で前記切捨て二進コードのためのサフィックスをコーディングするように構成される、請求項１７に記載のデバイス。
【請求項１９】
前記パレットコーディングモードを決定するために、前記ビデオコーダが、前記第２のパレットコーディングモードを決定するように構成され、前記ビデオコーダがさらに、前記ピクセルとともにコーディングされているピクセルのランレングスを示すデータをコーディングすることと並列に、前記切捨て二進コードのサフィックスをコーディングするように構成される、請求項１３に記載のデバイス。
【請求項２０】
インデックスの前記数に基づいて前記切捨て二進コードのための前記入力パラメータを決定するために、前記ビデオコーダが、インデックスの前記数だけに基づいて前記切捨て二進コードのための前記入力パラメータを決定するように構成される、請求項１３に記載のデバイス。
【請求項２１】
インデックスの前記数だけに基づいて前記切捨て二進コードのための前記入力パラメータを決定するために、前記ビデオコーダが、式Ｌ＝［ｌｏｇ２（Ｎ＋２）］に基づいて前記切捨て二進コードのための前記入力パラメータを決定するように構成され、ここで、Ｌが前記入力パラメータであり、Ｎがインデックスの前記数である、請求項２０に記載のデバイス。
【請求項２２】
前記プレフィックスだけに基づいて前記パレットコーディングモードを決定するために、前記ビデオコーダが、前記切捨て二進コードのサフィックスをコーディングする前に前記パレットコーディングモードを決定するように構成される、請求項１３に記載のデバイス。
【請求項２３】
コーディングするために、前記ビデオコーダが符号化するように構成され、前記切捨て二進コードのプレフィックスを符号化するために、前記ビデオコーダが、前記切捨て二進コードの前記プレフィックスを含む符号化されたビットストリームを生成するように構成される、請求項１３に記載のデバイス。
【請求項２４】
コーディングするために、前記ビデオコーダが復号するように構成され、前記切捨て二進コードの前記プレフィックスを復号するために、前記ビデオコーダが、符号化されたビットストリームから前記切捨て二進コードの前記プレフィックスをパースするように構成される、請求項１３に記載のデバイス。
【請求項２５】
前記デバイスが、集積回路、マイクロプロセッサ、またはワイヤレス通信デバイスの少なくとも１つを備える、請求項１３に記載のデバイス。
【請求項２６】
ビデオデータの前記ブロックを含む画像をキャプチャするように構成されるカメラをさらに備える、請求項１３に記載のデバイス。
【請求項２７】
ビデオデータの前記ブロックを含む画像を表示するように構成されるディスプレイをさらに備える、請求項１３に記載のデバイス。
【請求項２８】
ビデオデータを処理するための装置であって、
ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータの前記ブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定するための手段と、
前記切捨て二進コードのプレフィックスをコーディングするための手段と、
前記切捨て二進コードの前記プレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、前記ピクセルのためのパレットコーディングモードを決定するための手段と、
を備える、装置。
【請求項２９】
実行されると、１つまたは複数のプロセッサに、
ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータの前記ブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定することと、
前記切捨て二進コードのプレフィックスをコーディングすることと、
前記切捨て二進コードの前記プレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、前記ピクセルのためのパレットコーディングモードを決定することと、
を行わせる命令を記憶した、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、２０１４年９月２６日に出願された米国仮出願第６２／０５６，２６５号の利益を主張し、これらの内容全体が参照により本明細書に組み込まれる。
【０００２】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中のＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などの、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。
【発明の概要】
【０００５】
[0005]本開示の技法は、パレットベースのビデオコーディングに関する。パレットベースのコーディングでは、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして「パレット」を形成し得る。パレットベースのコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。実際のピクセル値（またはそれらの残差）をコーディングするのではなく、ビデオコーダは、ピクセルの色を表すパレット中のエントリーにピクセルを関連付ける、ピクセルの１つまたは複数のパレットインデックスをコーディングすることができる。本開示で説明される技法は、複数のパレットモードからあるパレットモードを決定するための技法を含み得る。具体的には、この技法は、第１のパレットコーディングモードおよび第２のパレットコーディングモードのシンタックスと関連付けられるパースの依存性（a parsing dependency）をなくすことによって、第１のパレットコーディングモードおよび第２のパレットコーディングモードから選択するときの、効率の向上をもたらし得る。
【０００６】
[0006]ある例では、ビデオデータを処理する方法は、ブロックのためのパレット中のインデックスの数に基づいて、ビデオデータのブロックのピクセルのためのパレットインデックスを表す、切捨て二進コードのための入力パラメータを決定することを含む。方法はまた、切捨て二進コードのプレフィックスをコーディングすることと、切捨て二進コードのプレフィックスにだけ基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することと、を含む。
【０００７】
[0007]別の例では、ビデオデータを処理するためのデバイスは、ビデオデータのブロックを記憶するように構成されるメモリと、ブロックのためのパレット中のインデックスの数に基づいてビデオデータのブロックのピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することと、切捨て二進コードのプレフィックスをコーディングすることと、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することと、を行うように構成される、ビデオコーダと、を含む。
【０００８】
[0008]別の例では、ビデオデータを処理するための装置は、ブロックのためのパレット中のインデックスの数に基づいてビデオデータのブロックのピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定するための手段と、切捨て二進コードのプレフィックスをコーディングするための手段と、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定するための手段と、を含む。
【０００９】
[0009]別の例では、非一時的コンピュータ可読記憶媒体は、実行されると、１つまたは複数のプロセッサに、ブロックのためのパレット中のインデックスの数に基づいてビデオデータのブロックのピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することと、切捨て二進コードのプレフィックスをコーディングすることと、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することと、を行わせる命令を記憶している。
【００１０】
[0010]本開示の１つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】[0012]本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【図３】[0013]本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。
【図４】[0014]本開示の技法に従った、パレットベースのビデオコーディングのためのパレットエントリーを決定する例を示す概念図。
【図５】[0015]本開示の技法に従った、ピクセルのブロックのためのパレットに対するインデックスを決定する例を示す概念図。
【図６】[0016]本開示の技法に従った、パレットコーディングのためのデータを含む２つの例示的なビットストリームを示す概念図。
【図７】[0017]本開示の技法に従った、パレットコーディングされるデータをコーディングするためのプロセスを示すフローチャート。
【発明を実施するための形態】
【００１２】
[0018]本開示は、ビデオコーディングおよびビデオ圧縮のための技法を説明する。具体的には、本開示は、ビデオデータのパレットベースのコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的（continuous-tone）であり空間的に滑らかである自然な画像であると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
【００１３】
[0019]しかしながら、リモートデスクトップ、共同作業用ディスプレイおよびワイヤレスディスプレイのような適用例では、コンピュータで生成されたスクリーンコンテンツが、圧縮されるべき支配的なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法は、そのコンテンツを圧縮するための効率的な方法ではないことがある。
【００１４】
[0020]いくつかの例では、パレットベースのコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発された新しいビデオコーディング規格である。最近のＨＥＶＣテキスト仕様ドラフトは、Ｂｒｏｓｓ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０  （ｆｏｒ  ＦＤＩＳ  ＆  Ｃｏｎｓｅｎｔ）」、ＪＣＶＣ−Ｌ１００３＿ｖ１３、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ  ３およびＩＳＯ／ＩＥＣ  ＪＣＴ  １／ＳＣ  ２９／ＷＧ  １１のＪＣＴ−ＶＣの第１２回会合、２０１３年１月１４〜２３日（「ＨＥＶＣ  Ｄｒａｆｔ  １０」）に記載されている。
【００１５】
[0021]ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードのコンテキストにおいて説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のコーデック／システム／規格もしくはまだ開発されていないコーデック／システム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形の（rectangular）ブロック、または非長方形の（non-rectangular）領域であってもよい。
【００１６】
[0022]パレットベースのコーディングでは、ビデオデータの特定のエリアが、比較的少数の色を有すると仮定され得る。ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００１７】
[0023]上の例では、ビデオエンコーダは、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーの位置を特定し（locating）、ピクセル値をパレットに関連付けるピクセルのためのパレットインデックス（パレットインデックス値とも呼ばれる）を用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのパレットインデックスを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのパレットインデックスをパレットのエントリーに関連付けることができる。ピクセル（および／またはピクセル値を示す関連するパレットインデックス）は一般に、サンプルと呼ばれ得る。
【００１８】
[0024]ブロック中のサンプルは、水平方向のラスター走査順序を使用して処理される（たとえば、走査される）と仮定される。たとえば、ビデオエンコーダは、水平方向のラスター走査順序を使用してパレットインデックスを走査することによって、パレットインデックスの２次元ブロックを１次元アレイに変換することができる。同様に、ビデオデコーダは、水平方向のラスター走査順序を使用してパレットインデックスのブロックを再構築することができる。したがって、本開示は、ブロック中の現在コーディングされているサンプルに走査順序において先行するサンプルのことを、以前のサンプルと呼び得る。垂直方向のラスター走査順序などの水平方向のラスター走査以外の走査も適用可能であり得ることを、理解されたい。上の例は、パレットベースのコーディングの全般的な説明を与えることを意図される。
【００１９】
[0025]パレットは通常、インデックスによって番号を付けられた、色の成分（たとえば、ＲＧＢ、ＹＵＶなど）の値または強度（intensities）を表すエントリーを含む。ビデオエンコーダとビデオデコーダの両方が、パレットエントリーの数と、各パレットエントリーのための色成分値と、現在のブロックのためのパレットエントリーの正確な順序とを決定する。本開示では、各パレットエントリーがサンプルのすべての色成分の値を指定すると仮定される。しかしながら、本開示の概念は、各色成分に対して別々のパレットを使用することに適用可能である。
【００２０】
[0026]いくつかの例では、パレットは、以前にコーディングされたブロックからの情報を使用して合成され得る。すなわち、パレットは、（１つまたは複数の）以前のブロックをコーディングするために使用された（１つまたは複数の）パレットから予測される、予測されたパレットエントリーを含み得る。たとえば、規格提案文書、Ｗｅｉ  Ｐｕ他、「ＡＨＧ１０：  Ｓｕｇｇｅｓｔｅｄ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｃｏｄｉｎｇ  ｂａｓｅｄ  ｏｎ  ＲＥｘｔ６．０」、ＪＣＴＶＣ−Ｑ００９４、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以後ＪＣＴＶＣ−Ｑ００９４）に記述されるように、パレットは、予測子パレットからコピーされるエントリーを含み得る。予測子パレットは、パレットモードを使用して以前にコーディングされたブロックからの、または他の再構築されたサンプルからのパレットエントリーを含み得る。予測子パレット中の各エントリーに対して、二進フラグが、そのフラグと関連付けられるエントリーが現在のパレットにコピーされるかどうかを示す（たとえば、フラグ＝１によって示される）ようにコーディングされ得る。二進フラグの文字列（string）は、二進パレット予測ベクトルと呼ばれ得る。現在のブロックをコーディングするためのパレットはまた、いくつかの新たなパレットエントリーを含んでよく、これらは明示的に（たとえば、パレット予測ベクトルとは別に）コーディングされ得る。新たなエントリーの数のインジケーションもコーディングされ得る。予測されるエントリーと新たなエントリーの合計は、ブロックの全体のパレットサイズを示し得る。
【００２１】
[0027]いくつかの例では、パレットベースのコーディングモードを用いてコーディングされるブロック中の各サンプルは、以下に記載されるように、３つのパレットモードのうちの１つまたはそれらのサブセット（たとえば、Ｃｏｐｙ  ＴｏｐモードおよびＣｏｐｙ  Ｌｅｆｔモードのみ、または別のモードの組合せ）を使用してコーディングされ得る。
・Ｅｓｃａｐｅモード：このモードでは、サンプル値がパレットエントリーとしてパレットに含められず、量子化されたサンプル値がすべての色成分に対して明示的にシグナリングされる。新たなパレットエントリーのシグナリングに似ているが、新たなパレットエントリーに対しては、色成分値は量子化されない。
・Ｃｏｐｙ  Ｔｏｐモード（Ｃｏｐｙ  Ａｂｏｖｅモードとも呼ばれる）：このモードでは、現在のサンプルのためのパレットエントリーインデックスが、ブロック中ですぐ上に位置するサンプルからコピーされる。コピーの長さ（ランレングス（run length））を指定するシンタックス要素だけが、ビットストリームにおいてシグナリングされる。
・Ｃｏｐｙ  Ｌｅｆｔモード（ＩｎｄｅｘモードまたはＶａｌｕｅモードとも呼ばれる）：このモードでは、パレットエントリーインデックスの値が、切捨て二進コードを使用して明示的にシグナリングされ、走査順序において後続するどれだけのピクセルがシグナリングされたピクセルと同じインデックスを共有するか（ランレングス）を指定する別のシンタックス要素が、パレットエントリーインデックスの値に続く。
【００２２】
[0028]本明細書で説明されるように、パレットエントリーインデックスは、パレットインデックスまたは単にインデックスと呼ばれ得る。これらの用語が、本開示の技法を説明するために交換可能に使用され得る。加えて、以下でより詳細に説明されるように、パレットインデックスは、１つまたは複数の関連する色または強度の値を有し得る。たとえば、パレットインデックスは、ピクセルの単一の色または強度の成分と関連付けられる、単一の関連する色または強度の値を有し得る（たとえば、ＲＧＢデータのＲｅｄ成分、ＹＵＶデータのＹ成分など）。別の例では、パレットインデックスは、複数の関連する色または強度の値を有し得る。いくつかの事例では、パレットベースのコーディングは、モノクロのビデオをコーディングするために適用され得る。したがって、「色値」は一般に、ピクセル値を生成するために使用される任意の色成分または非色成分を指し得る。
【００２３】
[0029]Ｃｏｐｙ  ＴｏｐモードおよびＣｏｐｙ  Ｌｅｆｔモードでは、ラン値（a run value）（単にランとも呼ばれ得る）もシグナリングされ得る。ラン値は、一緒にコーディングされるパレットコーディングされるブロック中の、特定の走査順序にある連続するサンプルの数（たとえば、サンプルのラン）を示し得る。いくつかの事例では、サンプルのランはパレットインデックスのランとも呼ばれることがあり、それは、ランの各サンプルがパレットに対する関連するインデックスを有するからである。
【００２４】
[0030]ラン値は、同じパレットコーディングモードを使用してコーディングされるパレットインデックスのランを示し得る。たとえば、Ｃｏｐｙ  Ｌｅｆｔモードに関して、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、パレットインデックス（パレットインデックス値または単にインデックス値とも呼ばれる）と、同じパレットインデックスを有しそのパレットインデックスを用いてコーディングされている、ある走査順序において連続するサンプルの数を示すラン値とを、コーディングすることができる。Ｃｏｐｙ  Ｔｏｐモードに関して、ビデオコーダは、上側の隣接サンプル（たとえば、ブロック中の現在コーディングされているサンプルの上に位置するサンプル）のインデックスと、上側の隣接サンプルからパレットインデックスを同様にコピーしそのパレットインデックスを用いてコーディングされている、ある走査順序において連続するサンプルの数を示すラン値とに基づいて、現在のサンプル値のためのインデックスがコピーされることのインジケーションをコーディングすることができる。したがって、上の例では、パレットインデックスのランは、同じ値を有するパレットインデックスのラン、または上側の隣接パレットインデックスからコピーされるパレットインデックスのランを指す。
【００２５】
[0031]したがって、ランは、所与のモードに対して、同じモードに属する後続のサンプルの数を指定し得る。いくつかの事例では、インデックスとラン値とをシグナリングすることは、ランレングスコーディングと似ていることがある。説明を目的とする例では、ブロックの連続するパレットインデックスの文字列は、０、２、２、２、２、５であり得る（たとえば、ここで各インデックスはブロック中のサンプルに対応する）。この例では、ビデオコーダは、Ｃｏｐｙ  Ｌｅｆｔモードを使用して第２のサンプル（たとえば、２という値を有する最初のパレットインデックス）をコーディングすることができる。２に等しいインデックスをコーディングした後で、ビデオコーダは３というランをコーディングすることができ、これは、３つの後続のサンプルも２という同じパレットインデックスを有することを示す。同様の方式で、Ｃｏｐｙ  Ｔｏｐモードを使用してインデックスをコーディングした後で４つのパレットインデックスのランをコーディングすることは、全体で５つのパレットインデックスが、現在コーディングされているサンプル位置の上の行の中の対応するパレットインデックスからコピーされることを示し得る。
【００２６】
[0032]エスケープサンプル（エスケープピクセルとも呼ばれる）は、ブロックをコーディングするためのパレット中で表される対応する色を有しないブロックのサンプル（またはピクセル）であり得る。したがって、エスケープサンプルは、パレットから色のエントリー（またはピクセル値）を使用して再構築されないことがある。代わりに、エスケープサンプルのための色値は、パレットの色値とは別にビットストリームにおいてシグナリングされる。
【００２７】
[0033]ビデオコーダ（たとえば、ビデオエンコーダおよびビデオデコーダ）は、パレットコーディングされるブロックのサンプルが、そのブロックのためのパレットに含まれていないサンプルの色に基づいて、たとえば上の「Ｅｓｃａｐｅモード」と呼ばれるプロセスを使用してコーディングされるかどうかを示す、サンプルごとのデータをコーディングし得る。いくつかの例では、ビデオコーダは、いずれのパレットエントリーにも対応しないパレットに対する特別なインデックスを収容する（accommodate）ために、パレットのパレットエントリーの数を１だけ増やすように構成され得る。ビデオコーダは、所与のブロックのための増やされたパレット中の最後のパレットインデックスとして、追加のインデックスを含め得る。追加のインデックスは、Ｅｓｃａｐｅモードのインジケーションとして使用され得る。
【００２８】
[0034]上で説明された例では、ビデオコーダは、ブロックの特定のサンプル値に対して、追加のサンプルがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされることを示すために、追加のインデックスを表すデータをコーディングすることができる。ビデオコーダはまた、エスケープサンプルの（１つまたは複数の）色値をコーディングすることができる。この例では、明示的なシンタックスを使用してシグナリングされるべき、２つだけの可能なモード（たとえば、Ｃｏｐｙ  ＴｏｐモードまたはＣｏｐｙ  Ｌｅｆｔモード（ＩｎｄｅｘモードまたはＶａｌｕｅモードとも呼ばれる））がある。たとえば、サンプルがＣｏｐｙ  Ｌｅｆｔモードでコーディングされ、Ｃｏｐｙ  Ｌｅｆｔモードのためのインデックスがエスケープインデックス（たとえば、パレットに対する上で述べられた追加のインデックス）に等しい場合、ビデオコーダは、エスケープサンプルとしてコーディングされるべきであるものとしてサンプルを推測することができる。いくつかの事例では、エスケープサンプルとともにランはシグナリングされない。
【００２９】
[0035]パレットコーディングされるブロックに対して、１つまたは複数のシンタックス要素は、ブロックレベル（たとえば、ＣＵレベルまたはＬＣＵレベル）において、ブロックのいずれかのサンプルがパレットに含まれていないサンプルの色値に基づいてコーディングされるかどうか、たとえばエスケープサンプルとしてコーディングされるかどうかを示し得る。１つまたは複数のシンタックス要素は、ブロックレベルエスケープシンタックスと呼ばれ得る。たとえば、ブロックレベルシンタックスは、ＣＵまたはＬＣＵなどのビデオデータのブロックをコーディングする間にコーディングまたは決定されるシンタックスを指し得る。ブロックレベルシンタックスは、ヘッダに含まれることがあり、または、ブロックと関連付けられる他のデータ（たとえば、ブロックの特性を記述するブロックの前または後にコーディングされるデータ）とともに存在することがある。対照的に、ブロックレベルシンタックスではない他のシンタックスは、スライスヘッダに含まれることがあり、またはビデオデータの個々のピクセルとともに存在することがある。
【００３０】
[0036]一例では、ビデオコーダは、ブロックのいずれかのサンプルがパレットに含まれていない色値に基づいてコーディングされるかどうかを示す、フラグ（ブロックレベルエスケープフラグと呼ばれ得る）をコーディングおよび／または決定するように構成され得る。たとえば、０というフラグ値は、ブロックのサンプルのいずれもがＥｓｃａｐｅモードを使用してコーディングされないことを示し得る。すなわち、ブロックのすべてのサンプルの値が、そのブロックをコーディングするためのパレットに含まれている色値に基づいて決定され得る。１というフラグ値は、ブロックの少なくとも１つのサンプルがＥｓｃａｐｅモードを使用してコーディングされることを示し得る。すなわち、少なくとも１つのサンプルの値は、ブロックをコーディングするためのパレットに含まれておらず、別々にシグナリングされ得る。したがって、このフラグは、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのサンプルがブロックをコーディングするためのパレットに含まれていない色値を有するかどうかを示し得る。
【００３１】
[0037]したがって、いくつかの例では、現在のＣＵがエスケープピクセルを有し得るか否かを指定するＣＵレベルエスケープフラグが、ビットストリームにおいてシグナリングされ得る。たとえば、ＣＵレベルエスケープフラグは、エスケープ値が特定のＣＵに対して有効にされるかどうかを示し得る。上で述べられたように、ＣＵにおけるエスケープサンプルの存在は、ＣＵのためのパレットインデックスの数に影響を与え得る。たとえば、ＣＵのためのパレットは、たとえばインデックスが両端を含めて｛０，１，・・・，Ｎ｝から選ばれ得るように、最大のインデックスがＮであるいくつかのインデックスを有し得る。
【００３２】
[0038]しかしながら、いくつかの事例では、現在のブロック中にエスケープピクセルが存在し得ることをＣＵレベルエスケープフラグが示す場合、現在のブロック中のあり得るインデックス値は｛０，１，・・・，Ｎ，Ｎ＋１｝であることがあり、ここで、Ｎ＋１に等しいインデックスは、現在のピクセルがエスケープピクセルであることを示す。そのような事例では、コーディングされている特定のサンプルに対して、インデックスＮ＋１に後続するシンタックス要素は、量子化されたピクセル値であり得る。上で述べられたように、Ｎ＋１より小さいインデックスは、現在のピクセルがＣｏｐｙ  Ｌｅｆｔモードにあることを示すことがあり、後続のシンタックス要素は、Ｃｏｐｙ  Ｌｅｆｔモードに対するランレングスを示すことがある。
【００３３】
[0039]上の例では、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のピクセルをコーディングするための複数のパレットコーディングモードから、そのピクセルのためのパレットインデックスに基づいてあるパレットコーディングモードを決定することができる（たとえば、Ｎ＋１個のインデックスのうちのあるインデックスはＥｓｃａｐｅモードを示し、Ｎ＋１未満のうちのあるインデックスはＣｏｐｙ  Ｌｅｆｔモードを示す）。いくつかの事例では、ビデオコーダは、パレットのサイズに基づく入力パラメータを有する切捨て二進コードを使用するピクセルのためのパレットインデックスをコーディングし得る。しかしながら、いくつかのコーディングプロセスが、切捨て二進コードに対する入力パラメータ（the input parameter to the truncated binary code）に影響を与え得る。たとえば、規格提案文書ＪＣＴＶＣ−Ｒ００６５（「ＳＣＣＥ３：Ｔｅｓｔ  Ｂ．１２−Ｂｉｎａｒｉｚａｔｉｏｎ  ｏｆ  Ｅｓｃａｐｅ  Ｓａｍｐｌｅ  ａｎｄ  Ｐａｌｅｔｔｅ  Ｉｎｄｅｘ」、Ｗｅｉ  Ｐｕ他、ＪＣＴＶＣ−Ｒ００６５、札幌、日本、２０１４年６月３０日〜７月９日）において記述されている冗長性除去プロセスは、隣接ピクセルのパレットコーディングモードに基づいて入力パラメータを調整することを含む。
【００３４】
[0040]以下でより詳細に説明されるように、切捨て二進コードに対する入力パラメータ（および結果として得られるプレフィックスおよびサフィックスの値）をピクセルごとに変えることは、インデックスをコーディングするときのパースの依存性をもたらすことがあり、これは、シンタックスを並列にコーディングする能力に影響を与えることがある。たとえば、ビデオコーダはまず、現在のピクセルのためのインデックス値を決定する前に、入力パラメータが隣接ピクセルのパレットコーディングモードに基づいて調整されているかどうかを決定しなければならない。
【００３５】
[0041]本開示の態様は、シンタックス間の依存関係（inter syntax dependency）を減らし、パレットインデックス値をコーディングするための並列性（parallelism）を向上させるために使用され得る。たとえば、本開示の態様によれば、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、パレット中のインデックスの数に基づいて、ピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することができる。ビデオコーダはまた、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することができる。すなわち、ビデオコーダは、切捨て二進コードをコーディングしてパレットコーディングモードを決定する前に、入力パラメータを調整しないことがある。
【００３６】
[0042]いくつかの例では、本開示の態様によれば、特定の切捨て二進コードワードが、複数のパレットコーディングモードのうちの１つのパレットコーディングモードのために確保され（be reserved）得る。たとえば、本開示の態様によれば、すべてが０のコードワードが、ピクセルがエスケープコーディングされるサンプルであることを示すために確保され得る。この例では、ビデオコーダは、切捨て二進コードのプレフィックスを復号すると、ピクセルがエスケープサンプルとしてコーディングされると決定するように構成され得、ここでプレフィックスはすべてが０に等しいビン（all bins equal to zero）を有する。
【００３７】
[0043]加えて、または代替的に、本開示の態様によれば、パレットインデックスを表す切捨て二進コードのプレフィックスは、１つまたは複数の他のシンタックス値によって、ビットストリーム中の切捨て二進コードのサフィックスから分離され得る。たとえば、ビデオコーダは、ピクセルのためのパレットコーディングモードを決定するために、切捨て二進コードのプレフィックスをコーディングするように構成され得る。エスケープサンプルを示すために確保されているパレットインデックス以外のパレットインデックスにプレフィックスが対応する事例では、ビデオコーダは、現在のピクセルとともにコーディングされているピクセルのランのランレングスを示すデータをコーディングすることができる。ビデオコーダはまた、現在のピクセルのためのインデックス値を決定するために、切捨て二進コードのサフィックスをコーディングすることができ、ここでサフィックスは、ビットストリームにおいてランレングスを示すデータに後続する。
【００３８】
[0044]上の技法は、コーディングおよび／またはハードウェアの複雑さを下げるために使用されることがあり、それは、ビデオコーダが、現在のピクセルのためのインデックス値を示す切捨て二進コードのプレフィックスだけに基づいて（たとえば、インデックスを調整することなく）、現在のピクセルのためのパレットコーディングモードを区別し得るからである。その上、ビデオコーダは、インデックス値のコーディングおよびインデックス値と関連付けられるランレングスシンタックスのコーディングなどの、いくつかのコーディングプロセスを並列に実行することが可能であり得る。したがって、いくつかの例では、本開示の態様は、エスケープピクセルが現在コーディングされているブロック中に存在し得ることをブロックレベルエスケープシンタックスが示す事例において、Ｃｏｐｙ  ＬｅｆｔモードおよびＥｓｃａｐｅモードと関連付けられるデータをコーディングするとき、コーディングおよび／またはコーデックハードウェアの複雑さを下げることができる。
【００３９】
[0045]図１は、本開示の技法を利用できる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を表す。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵｓまたはＰＵｓなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００４０】
[0046]図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス１４はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００４１】
[0047]ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００４２】
[0048]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化されたビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などのワイヤレスおよび／またはワイヤード通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などのパケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００４３】
[0049]別の例では、チャネル１６は、ソースデバイス１２によって生成された、符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００４４】
[0050]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、送信先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【００４５】
[0051]宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバ上に記憶されている符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００４６】
[0052]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体上に記憶するためのビデオデータの符号化、データ記憶媒体上に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００４７】
[0053]図１に示されるビデオコーディングシステム１０は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および／または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【００４８】
[0054]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００４９】
[0055]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【００５０】
[0056]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して、符号化されたビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【００５１】
[0057]ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアなどの、様々な適切な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶することができ、本開示の技法を実行するために１つまたは複数のプロセッサを使用してハードウェア内でそれらの命令を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれることがある。
【００５２】
[0058]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリングすること」または「送信すること」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化のときに符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに起こり得るなど、ある時間の長さ（a span of time）にわたって起こることがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【００５３】
[0059]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣドラフト１０に記載されるＨＥＶＣ規格などの、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵｓ）または予測ユニット（ＰＵｓ）のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
【００５４】
[0060]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと表記される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャは、モノクロであることがあり、ルーマサンプルのアレイしか含まないことがある。
【００５５】
[0061]ビデオエンコーダ２０は、ピクチャの符号化された表現を生成するために、コーディングツリーユニット（ＣＴＵｓ）のセットを生成し得る。ＣＴＵｓの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）と呼ばれることもある。ＨＥＶＣのＣＴＵｓは、Ｈ．２６４／ＡＶＣなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵｓ）を含み得る。スライスは、ラスター走査において連続的に順序付けられた整数個のＣＴＵｓを含み得る。
【００５６】
[0062]コーディングされたＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するように、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に（recursively）実行することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイと、ＣｂサンプルアレイおよびＣｒサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（a rectangular）（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００５７】
[0063]ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成することができる。
【００５８】
[0064]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００５９】
[0065]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵｓの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０は、ＣＵのＣｂ残差ブロックを生成することができる。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのＣｒ残差ブロックを生成することもできる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００６０】
[0066]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを、１つまたは複数のルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックと関連付けられ得る。ＴＵと関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００６１】
[0067]ビデオエンコーダ２０は、ＴＵのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１回または複数回の変換を適用することができる。係数ブロックは変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１回または複数回の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００６２】
[0068]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は一般に、変換係数を表すために使用されるデータの量を低減することを意図して変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後で、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を実行し得る。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリームに出力することができる。
【００６３】
[0069]ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）ユニットを備え得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、ＲＢＳＰは０ビットを含む。
【００６４】
[0070]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコーディングされたスライスのためのＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットはＳＥＩのためのＲＢＳＰをカプセル化することができ、以下同様である。ビデオコーディングデータのためのＲＢＳＰｓをカプセル化するＮＡＬユニットは（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰｓとは対照的に）、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれ得る。
【００６５】
[0071]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するためにビットストリームをパースし得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ３０は、現在のＣＵのＰＵｓの予測ブロックを決定するために、ＰＵｓのＭＶｓを使用することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵｓと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵｓと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ３０は、現在のＣＵのＰＵｓの予測ブロックのサンプルを現在のＣＵのＴＵｓの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構築することができる。ピクチャの各ＣＵのためのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築することができる。
【００６６】
[0072]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングすることができる。各ピクセルは、ピクセルの色を表すパレット中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセル値をパレット中の適切な値に関連付けるインデックスをコーディングすることができる。
【００６７】
[0073]上の例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定し、各ピクセルの値を表すためのパレット中のエントリーの位置を特定し、ピクセル値をパレットに関連付けるピクセルのためのパレットインデックスを用いてパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのパレットインデックスを取得することができる。ビデオデコーダ３０は、ブロックのピクセル値を再構築するために、ピクセルのパレットインデックスをパレットのエントリーに関連付けることができる。
【００６８】
[0074]上で述べられたように、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットのパレットインデックスをコーディングするために異なる数のパレットコーディングモードを使用することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロックのパレットインデックスをコーディングするために、Ｅｓｃａｐｅモード、Ｃｏｐｙ  Ｔｏｐモード（Ｃｏｐｙ  Ａｂｏｖｅモードとも呼ばれる）、またはＣｏｐｙ  Ｌｅｆｔモード（ＩｎｄｅｘモードまたはＶａｌｕｅモードとも呼ばれる）を使用することができる。一般に、「Ｅｓｃａｐｅモード」を使用してサンプルをコーディングすることは一般に、ブロックをコーディングするためのパレット中で表される対応する色を有しないブロックのサンプルをコーディングすることを指し得る。上で述べられたように、そのようなサンプルは、エスケープサンプルまたはエスケープピクセルと呼ばれ得る。
【００６９】
[0075]エスケープシグナリングに関して、ビデオエンコーダ２０は、ブロックの特定のサンプル値に対して、追加のサンプルがエスケープサンプル（たとえば、ブロックをコーディングするためのパレットにおいて表される色値を有しないサンプル）としてコーディングされることを示すために、追加のパレットインデックスを表すデータを符号化することができる。ビデオエンコーダ２０はまた、エスケープサンプルの（１つまたは複数の）色値を符号化することができる。したがって、この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、Ｃｏｐｙ  ＴｏｐモードとＣｏｐｙ  Ｌｅｆｔモードを区別するためにシンタックスをコーディングし得る。加えて、ビデオエンコーダ２０およびビデオデコーダ３０は次いで、コーディングされているピクセルのインデックス値に基づいて（たとえば、インデックス値がパレット中のある数（Ｎ個）のエントリーに含まれるかどうか、または、インデックス値が追加のインデックスＮ＋１であるかどうかに基づいて）、エスケープコーディングされるピクセルとＣｏｐｙ  Ｌｅｆｔモード（またはＣｏｐｙ  Ｔｏｐモード）を区別することができる。
【００７０】
[0076]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットのサイズ、たとえばパレットのためのインデックスの数に基づいて、パレットのインデックス値を示すデータをコーディングすることができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、現在コーディングされているピクセルを含むＣＵのためのパレットのサイズに基づいて、インデックス値を示す切捨て二進コードに対する入力パラメータを決定することができる。この例では、得られる切捨て二進コードは、プレフィックス部分とサフィックス部分とを含み得る。
【００７１】
[0077]たとえば、切捨て二進コーディングは、ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｔｒｕｎｃａｔｅｄ＿ｂｉｎａｒｙ＿ｅｎｃｏｄｉｎｇ、および規格提案文書ＪＣＴＶＣ−Ｒ１００５（「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｓｃｒｅｅｎ  Ｃｏｎｔｅｎｔ  Ｃｏｄｉｎｇ  Ｄｒａｆｔ  Ｔｅｘｔ  １」、ＪＣＴＶＣ−Ｒ１００５、札幌、日本、２０１４年６月３０日〜７月９日）において、より詳細に説明され得る。一般に、切捨て二進コーディングは、有限アルファベットを伴う均一な確率分布のために使用され得る。切捨て二進コーディングは、全体のサイズが数ｎであるアルファベットによってパラメータ化され得る。たとえば、ｎが２のべき乗である場合、０≦ｘ＜ｎに対するコーディングされた値は、長さｌｏｇ2（ｎ）のｘに対する単純な二進コードである。それ以外の場合、２k≦ｎ＜２k+1となるようにｋ＝ｆｌｏｏｒ（ｌｏｇ2（ｎ））とし、ｕ＝２k+1−ｎとする。
【００７２】
[0078]切捨て二進コーディングは、長さｋのコードワード（コードとも呼ばれる）を最初のｕ個のシンボルに割り当て、次いで、長さｋ＋１の最後のｎ−ｕ個のコードワードを残りのｎ−ｕ個のシンボルに割り当てる。長さｋ＋１のすべてのコードワードは、「０」または「１」が付加された長さｋの割り当てられていないコードワードからなるので、得られるコードはプレフィックスコードである。説明を目的とする例では、アルファベット｛０，１，２，３，４｝に対して、ｎ＝５および２2≦ｎ＜２3であるので、ｋ＝２およびｕ＝２3−５であり、これによりｕ＝３となる。切捨て二進符号化は、すべて長さが２であるコードワード００と、０１と、１０とを、最初のｕ個のシンボルに割り当て、次いで、長さ３の最後の２つのコードワードであるコードワード１１０と１１１とを、最後のｎ−ｕ個のシンボルに割り当てる。下の例示的な表に示されるように、ｎが５である場合、単純な二進符号化および切捨て二進符号化は、以下のコードワードを割り振る（二重括弧［［］］の中に示されている桁は切捨て二進において送信されない）。
【表１】
2017532896.tif 000003
【００７３】
[0079]上の例では、標準的な二進符号化を使用してｎを符号化するのに３ビット必要であるので、２3−ｎ＝８であり、８−５＝３ビットが未使用である。数値的には、０≦ｘ＜ｎであり２k≦ｎ＜２k+1個のシンボルがある場合に値ｘを送信するために、アルファベットサイズが２の最も近いべき乗に切り上げられるときには、ｕ＝２k+1−ｎ個の未使用のエントリーがある。切捨て二進において数ｘを符号化するためのプロセスは次の通りである。ｘがｕより小さい場合、ｘをｋ個の二進ビットで符号化する。ｘがｕ以上である場合、値ｘ＋ｕをｋ＋１個の二進ビットで符号化する。したがって、特定の切捨て二進コードに対する入力パラメータに応じて、その切捨て二進コードのためにサフィックス部分が含まれることがある（または含まれないことがある）。
【００７４】
[0080]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット中のインデックスの数に基づいて、ピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することができる。ビデオエンコーダ２０およびビデオデコーダ３０は、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードと第２のパレットコーディングモードを区別することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、切捨て二進コードをコーディングしてパレットコーディングモードを決定する前に、入力パラメータを調整しないことがある。
【００７５】
[0081]説明を目的とする例では、ビデオデータのブロックの現在のピクセルをコーディングするために、ｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素などのＣｏｐｙ  ＡｂｏｖｅモードとＣｏｐｙ  Ｌｅｆｔモードを区別するシンタックス要素を、ビデオエンコーダ２０は符号化することができ、ビデオデコーダ３０は復号することができる。加えて、現在のピクセルのためのパレットモードがＣｏｐｙ  Ｌｅｆｔモード（または代替的には、Ｃｏｐｙ  Ａｂｏｖｅモード）であることをシンタックス要素が示す場合、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット中のインデックスの最大の数に基づいて、現在のピクセルのためのパレットインデックスを表す、切捨て二進コードに対する入力パラメータを決定することができる。本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット中のインデックスの最大の数を調整することなく、切捨て二進コードに対する入力パラメータを決定することができる。
【００７６】
[0082]加えて、上の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、切捨て二進コードのプレフィックスだけに基づいて、Ｃｏｐｙ  Ｌｅｆｔモード（または代替的には、Ｃｏｐｙ  Ａｂｏｖｅモード）とＥｓｃａｐｅモードを区別することができる。たとえば、本開示の態様によれば、すべてが０に等しいビンを有するプレフィックスコードなどの、ピクセルがエスケープピクセルとしてコーディングされることを示すための特定の切捨て二進コードが確保され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、すべてが０に等しいビンをプレフィックスが有するかどうかに基づいて、現在のピクセルがＣｏｐｙＬｅｆｔモードでコーディングされるかＥｓｃａｐｅモードでコーディングされるかを区別することが可能であり得る。
【００７７】
[0083]上の例について続けると、現在のピクセルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のピクセルとともにコーディングされているピクセルのランレングス、ならびに切捨て二進コードのサフィックスを示すデータを、そのようなサフィックスが存在する場合には、入力パラメータに基づいてコーディングするように構成され得る。いくつかの例では、切捨て二進コードのサフィックスは、ビットストリームにおいてランレングスを示すデータに後続し得る。
【００７８】
[0084]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいて、ビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００７９】
[0085]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を表す。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵｓまたはＰＵｓなどの、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーション（locations）のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロック中のピクセルロケーションの少なくともいくつかをパレット中の選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【００８０】
[0086]図２の例では、ビデオエンコーダ２０は、予測処理ユニット１００と、ビデオデータメモリ１０１と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号されたピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示されず）を含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【００８１】
[0087]ビデオデータメモリ１０１は、ビデオエンコーダ２０のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ１０１内に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号されたピクチャバッファ１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１０１および復号されたピクチャバッファ１１６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１０１および復号されたピクチャバッファ１１６は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１０１は、ビデオエンコーダ２０の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【００８２】
[0088]ビデオエンコーダ２０は、ビデオデータを受信することができる。ビデオエンコーダ２０は、ビデオデータのピクチャのスライス内の各ＣＴＵを符号化することができる。ＣＴＵｓの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック（ＣＴＢｓ）と、対応するＣＴＢｓとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、ＣＴＵのＣＴＢｓを徐々により小さいブロックに分割するために、４分木区分を実行することができる。より小さいブロックはＣＵｓのコーディングブロックであり得る。たとえば、予測処理ユニット１００は、ＣＴＵと関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分することができ、サブブロックの１つまたは複数を４つの等しいサイズのサブブロックに区分することができ、以下同様である。
【００８３】
[0089]ビデオエンコーダ２０は、ＣＵｓの符号化された表現（すなわち、コーディングされたＣＵｓ）を生成するために、ＣＴＵのＣＵｓを符号化することができる。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵｓの間でＣＵと関連付けられたコーディングブロックを区分することができる。したがって、各ＰＵは、ルーマ予測ブロックおよび対応するクロマ予測ブロックと関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵｓをサポートすることができる。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測の場合は２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズのための非対称区分をサポートすることができる。
【００８４】
[0090]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによって、ＰＵのための予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックとＰＵの動き情報とを含み得る。インター予測処理ユニット１２０は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、またはＢスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、すべてのＰＵｓがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測処理ユニット１２０は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されたブロックでは、予測されるブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【００８５】
[0091]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャのリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域と関連付けられた参照ロケーションとの間の空間変位を示すＭＶを生成することができる。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、ＰＵの予測ブロックを生成することができる。
【００８６】
[0092]ＰＵがＢスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵについての単予測または双予測を実行することができる。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【００８７】
[0093]ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照ロケーションとＰＵのサンプルブロックとの間の空間変位を示すＭＶｓを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶｓとを含み得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測ブロックを生成することができる。
【００８８】
[0094]ビデオエンコーダ２０は、パレットベースのコーディングを実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードのコンテキストにおいて（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００８９】
[0095]パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【００９０】
[0096]本開示の態様によれば、パレットベースの符号化ユニット１２２は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、パレットベースの符号化ユニット１２２は、パレット中のインデックスの数に基づいて、ピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することができる。パレットベースの符号化ユニット１２２は、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードと第２のパレットコーディングモードを区別することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセルのインデックスのための切捨て二進コードを符号化するとき、入力パラメータを調整しないことがある。
【００９１】
[0097]加えて、パレットベースの符号化ユニット１２２は、切捨て二進コードのプレフィックスだけを使用して、ピクセルのためのパレットコーディングモード（たとえば、ＥｓｃａｐｅモードまたはＣｏｐｙ  Ｌｅｆｔモード）を示すことができる。たとえば、本開示の態様によれば、すべてが０に等しいビンを有するプレフィックスコードなどの、ピクセルがエスケープピクセルとしてコーディングされることを示すための特定の切捨て二進コードが確保され得る。現在のピクセルがエスケープピクセルとして符号化されない場合、パレットベースの符号化ユニット１２２は、現在のピクセルとともにコーディングされているピクセルのランレングス、ならびに切捨て二進コードのサフィックスを示すデータを、そのようなサフィックスが存在する場合には、入力パラメータに基づいて符号化するように構成され得る。いくつかの例では、切捨て二進コードのサフィックスは、ビットストリームにおいてランレングスを示すデータに後続し得る。
【００９２】
[0098]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵ用の予測データを生成することができる。ＰＵのための予測データは、ＰＵの予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対してイントラ予測を実行し得る。
【００９３】
[0099]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、ＰＵの予測データの複数のセットを生成するために、複数のイントラ予測モードを使用することができる。イントラ予測処理ユニット１２６は、ＰＵの予測ブロックを生成するために、隣接ＰＵｓのサンプルブロックからのサンプルを使用し得る。隣接ＰＵｓは、ＰＵｓ、ＣＵｓ、およびＣＴＵｓについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はＰＵと関連付けられた領域のサイズに依存し得る。
【００９４】
[0100]予測処理ユニット１００は、ＰＵｓのためにインター予測処理ユニット１２０によって生成された予測データ、またはＰＵｓのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵｓのための予測データを選択することができる。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／歪み測定基準（metrics）に基づいて、ＣＵのＰＵｓの予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
【００９５】
[0101]残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック、ならびにＣＵのＰＵｓの選択された予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成することができる。たとえば、残差生成ユニット１０２は、残差ブロックの中の各サンプルが、ＣＵのコーディングブロックの中のサンプルと、ＣＵのＰＵの対応する選択された予測ブロックの中の対応するサンプルとの差分に等しい値を有するように、ＣＵの残差ブロックを生成し得る。
【００９６】
[0102]変換処理ユニット１０４は、ＣＵと関連付けられる残差ブロックをＣＵのＴＵｓと関連付けられる変換ブロックに区分するために、４分木区分を実行することができる。したがって、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックと関連付けられ得る。ＣＵのＴＵｓのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵｓの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々と関連付けられたノードを含み得る。ＣＵのＴＵｓは、ＲＱＴのリーフノードに対応し得る。
【００９７】
[0103]変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
【００９８】
[0104]量子化ユニット１０６は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の一部またはすべての関連付けられたビット深度を低減し得る。たとえば、ｎビットの変換係数は量子化の間にｍビットの変換係数へと切り捨てられてよく、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵと関連付けられたＱＰ値を調整することによって、ＣＵと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は、情報の喪失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも精度が低いことがある。
【００９９】
[0105]逆量子化ユニット１０８および逆変換処理ユニット１１０は、それぞれ、係数ブロックから残差ブロックを再構築するために、係数ブロックに逆量子化および逆変換を適用することができる。再構築ユニット１１２は、ＴＵと関連付けられる再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測ブロックからの対応するサンプルに加算することができる。このようにＣＵの各ＴＵのための変換ブロックを再構築することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構築することができる。
【０１００】
[0106]フィルタユニット１１４は、ＣＵと関連付けられたコーディングブロックの中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を実行し得る。復号されたピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット１２０は、他のピクチャのＰＵｓに対してインター予測を実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用することができる。加えて、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ中の他のＰＵｓに対してイントラ予測を実行するために、復号されたピクチャバッファ１１６中の再構築されたコーディングブロックを使用することができる。
【０１０１】
[0107]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受け取ることができ、予測処理ユニット１００からシンタックス要素を受け取ることができる。エントロピー符号化ユニット１１８は、エントロピー符号化されたデータを生成するために、このデータに対して１つまたは複数のエントロピー符号化演算を実行することができる。たとえば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化されたデータを含むビットストリームを出力し得る。たとえば、ビットストリームはＣＵのＲＱＴを表すデータを含み得る。
【０１０２】
[0108]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明の目的で与えられており、本開示において広く例示され説明される技法に対する限定ではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいて、ビデオデコーダ３０を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【０１０３】
[0109]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を表す。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵｓまたはＰＵｓなどの、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ３０は、一例では、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
【０１０４】
[0110]図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、ビデオデータメモリ１５１と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号されたピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成された、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１０５】
[0111]ビデオデータメモリ１５１は、ビデオデコーダ３０のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ１５１に記憶されるビデオデータは、たとえば、コンピュータ可読媒体から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ１５１は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ（ＣＰＢ）を形成し得る。復号されたピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１５１および復号されたピクチャバッファ１６２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）を含む）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１５１および復号されたピクチャバッファ１６２は、同じメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１５１は、ビデオデコーダ３０の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【０１０６】
[0112]コーディングされたピクチャのバッファ（ＣＰＢ）は、ビットストリームの符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ＣＰＢから符号化されたビデオデータ（たとえば、ＮＡＬユニット）を受け取り、シンタックス要素を復号するために、ＮＡＬユニットをパースすることができる。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１０７】
[0113]ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コーディングされたスライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１０８】
[0114]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実行し得る。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行することができる。ＣＵの各ＴＵに対して再構築動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築することができる。
【０１０９】
[0115]ＣＵのＴＵに対して再構築動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵと関連付けられた係数ブロックを逆量子化（inverse quantize）、すなわち逆量子化（de-quantize）することができる。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵと関連付けられたＱＰ値を使用することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、利用されるエントロピーコーディングの方法に依存し得る。
【０１１０】
[0116]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵと関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用することができる。
【０１１１】
[0117]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵｓの予測ブロックに基づいて、ＰＵ用の予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成するために、イントラ予測モードを使用することができる。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定することができる。
【０１１２】
[0118]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。さらに、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵの動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【０１１３】
[0119]再構築ユニット１５８は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築するために、ＣＵのＴＵと関連付けられたルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック、ならびにＣＵのＰＵｓの予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用することができる。たとえば、再構築ユニット１５８は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築するために、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックの対応するサンプルに加算することができる。
【０１１４】
[0120]フィルタユニット１６０は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロックと関連付けられたブロッキングアーティファクトを低減するために、デブロッキング動作を実行することができる。ビデオデコーダ３０は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを、復号されたピクチャバッファ１６２に記憶することができる。復号されたピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ３０は、復号されたピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵｓのＰＵｓに対してイントラ予測動作またはインター予測動作を実行し得る。
【０１１５】
[0121]ビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット１６５は、たとえば、パレットベースの復号モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１１６】
[0122]パレットベースの復号ユニット１６５は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、予測処理ユニット１５２は、たとえば、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなどの非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードの１つを備え得るか、または単一のパレットベースのコーディングモードがあり得る。
【０１１７】
[0123]本開示の態様によれば、パレットベースの復号ユニット１６５は、本明細書で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。たとえば、パレットベースの復号ユニット１６５は、パレット中のインデックスの数に基づいて、ピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することができる。パレットベースの復号ユニット１６５は、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードと第２のパレットコーディングモードを区別することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセルのインデックスのための切捨て二進コードを復号するとき、入力パラメータを調整しないことがある。
【０１１８】
[0124]加えて、パレットベースの復号ユニット１６５は、切捨て二進コードのプレフィックスだけに基づいて、ピクセルのためのパレットコーディングモード（たとえば、ＥｓｃａｐｅモードまたはＣｏｐｙ  Ｌｅｆｔモード）を決定することができる。たとえば、本開示の態様によれば、すべてが０に等しいビンを有するプレフィックスコードなどの、ピクセルがエスケープピクセルとしてコーディングされることを示すための特定の切捨て二進コードが確保され得る。現在のピクセルがエスケープピクセルとして復号されない場合、パレットベースの復号ユニット１６５は、現在のピクセルとともにコーディングされているピクセルのランレングス、ならびに切捨て二進コードのサフィックスを示すデータを、そのようなサフィックスが存在する場合には、入力パラメータに基づいて復号するように構成され得る。いくつかの例では、切捨て二進コードのサフィックスは、ビットストリームにおいてランレングスを示すデータに後続し得る。
【０１１９】
[0125]図４は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図４の例は、第１のパレット１８４と関連付けられる第１のコーディングユニット（ＣＵ）１８０と第２のパレット１９２と関連付けられる第２のＣＵ１８８とを有するピクチャ１７８を含む。第１のＣＵ１８０および第２のＣＵ１８８は、パレットモード（ＰＡＬ）を使用してコーディングされる。下でより詳細に説明されるように、本開示の技法によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８はまた、イントラ予測コーディングモードでコーディングされるブロック１９６と、インター予測コーディングモードでコーディングされるブロック２００とを含む。
【０１２０】
[0126]図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）のコンテキストにおいて、説明を目的としてＨＥＶＣビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０１２１】
[0127]一般に、パレットは、現在コーディングされているＣＵ、図４の例では第２のＣＵ１８８について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０のような）は、ＣＵの各々の色成分に対して別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのさらに別のパレットとを符号化することができる。この例では、ＹパレットのエントリーはＣＵのピクセルのＹ値（Y values）を表すことができ、ＵパレットのエントリーはＣＵのピクセルのＵ値（U values）を表すことができ、ＶパレットのエントリーはＣＵのピクセルのＶ値（V values）を表すことができる。
【０１２２】
[0128]他の例では、ビデオエンコーダ２０は、ＣＵのすべての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、三重の値（a triple value）であるｉ番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしての第１のパレット１８４および第２のパレット１９２の表現は、一例にすぎず、限定することは意図されない。
【０１２３】
[0129]図４の例では、第１のパレット１８４の各々は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０２〜２０６を含む。エントリー２０２〜２０６は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｃをそれぞれ含むピクセル値に、インデックス値を関連付ける。本明細書で説明されるように、第１のＣＵ１８０の実際のピクセル値をコーディングするのではなく、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０など）は、インデックス１〜３を使用してブロックのピクセルをコーディングするために、パレットベースのコーディングを使用することができる。すなわち、第１のＣＵ１８０の各ピクセル位置に対して、ビデオエンコーダ２０はピクセルのインデックス値を符号化することができ、ここで、インデックス値は、第１のパレット１８４の１つまたは複数の中のピクセル値と関連付けられる。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し、インデックス値と第１のパレット１８４の１つまたは複数とを使用してピクセル値を再構築することができる。したがって、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。
【０１２４】
[0130]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、予測パレット、この例では第１のパレット１８４が、そこから決定される１つまたは複数のブロックの位置を特定することができる。予測の目的で使用されているエントリーの組合せは、予測子パレットと呼ばれ得る。
【０１２５】
[0131]図４の例では、第２のパレット１９２は、エントリーインデックス値１、エントリーインデックス値２、およびエントリーインデックス値３をそれぞれ有する、３つのエントリー２０８〜２１２を含む。エントリー２０８〜２１２は、第１のパレット１８４のエントリー２０２〜２０６とわずかに異なり、インデックス１〜３をそれぞれ、ピクセル値Ａ、ピクセル値Ｂ，およびピクセル値Ｄを含むピクセル値に関連付ける。この例では、ビデオエンコーダ２０は、第１のパレット１８４（予測子パレットを表す、ただし予測子パレットはいくつかのブロックのエントリーを含み得る）のどのエントリーが第２のパレット１９２に含まれるかを示す１つまたは複数のシンタックス要素をコーディングし得る。
【０１２６】
[0132]図４の例では、１つまたは複数のシンタックス要素は、ベクトル２１６として示される。ベクトル２１６は、いくつかの関連するビン（またはビット）を有し、各ビンは、そのビンと関連付けられたパレット予測子が現在のパレットのエントリーを予測するために使用されるかどうかを示す。たとえば、ベクトル２１６は、第１のパレット１８４の最初の２つのエントリー（２０２および２０４）が、第２のパレット１９２中に含まれる（ベクトル２１６中の「１」の値）一方で、第１のパレット１８４の第３のエントリーが、第２のパレット１９２中に含まれない（ベクトル２１６中の「０」の値）ことを示す。図４の例では、ベクトルは、ブールベクトル（a Boolean vector）である。このベクトルはパレット予測ベクトルと呼ばれることがある。
【０１２７】
[0133]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測を実行するとき、（パレット予測子テーブルとも呼ばれ得る）パレット予測子リストを決定することができる。パレット予測子リストは、現在のブロックをコーディングするためのパレットの１つまたは複数のエントリーを予測するために使用される１つまたは複数の隣接ブロックのパレットからのエントリーを含み得る。ビデオエンコーダ２０およびビデオデコーダ３０は、同じ方式でリストを構築し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、パレット予測子リストのどのエントリーが現在のブロックをコーディングするためのパレットに含まれるべきかを示すために、データ（ベクトル２１６など）をコーディングし得る。
【０１２８】
[0134]図５は、本開示の技法に従った、ピクセルのブロックのためのパレットに対するパレットインデックスを決定する例を示す概念図である。たとえば、図５は、パレットインデックスと関連付けられるピクセルのそれぞれの位置をパレット２４４のエントリーに関連付ける、パレットインデックスのマップ２４０を含む。たとえば、インデックス１は値Ａと関連付けられ、インデックス２は値Ｂと関連付けられ、インデックス３は値Ｃと関連付けられる。加えて、エスケープサンプルが暗黙的エスケープシグナリングを使用して示されるとき、ビデオエンコーダ２０およびビデオデコーダ３０はまた、インデックス４として図５に示される追加のインデックスをパレット２４４に追加することができ、これは、インデックス４と関連付けられるマップ２４０のサンプルがエスケープサンプルであることを示し得る。この場合、ビデオエンコーダ２０は、ピクセル値がパレット２４４に含まれない場合、マップ２４０の中のある位置に対する実際のピクセル値（またはその量子化されたバージョン）のインジケーションを符号化することができる（および、ビデオデコーダ３０は、符号化されたビットストリームからそれを取得することができる）。
【０１２９】
[0135]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、どのピクセル位置がパレットインデックスと関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の（ｉ，ｊ）のエントリーがＣＵの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー（すなわち、各ピクセル位置）のための１つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４の中の値の１つであることを示すように、１という値を有するフラグを符号化することができる。そのような例では、ビデオエンコーダ２０はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするように、パレットインデックス（値１〜３として図５の例では示される）を符号化することができる。
【０１３０】
[0136]パレット２４４が単一のエントリーと、関連付けられるピクセル値とを含む事例では、ビデオエンコーダ２０は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）のロケーションにおけるピクセル値がパレット２４４の中の値の１つではないことを示すように、０という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ２０はまた、ピクセル値を再構築する際にビデオデコーダ３０によって使用するために、ピクセル値のインジケーションを符号化することができる。たとえば、ビデオエンコーダ２０はピクセル値を明示的にコーディングし得る。いくつかの事例では、ピクセル値は有損失の方式で（in a lossy manner）コーディングされ得る。
【０１３１】
[0137]ＣＵの１つの位置におけるピクセルの値は、ＣＵの他の位置における１つまたは複数の他のピクセルの値のインジケーションを提供することができる。たとえば、ＣＵの隣接ピクセル位置が同じピクセル値を有すること、または、（２つ以上のピクセル値が単一のインデックス値にマッピングされ得る、有損失コーディングの場合において）ＣＵの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
【０１３２】
[0138]したがって、ビデオエンコーダ２０は、一緒にコーディングされる、所与の走査順序において連続するピクセルまたはパレットインデックスの数を示す１つまたは複数のシンタックス要素を符号化することができる。上で述べられたように、パレットインデックスの文字列（またはパレットインデックスによって示されるピクセル値）は、本明細書ではランと呼ばれ得る。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定するために、そのデータを使用することができる。
【０１３３】
[0139]上で述べられたように、ランは、Ｃｏｐｙ  ＴｏｐモードまたはＣｏｐｙ  Ｌｅｆｔモードとともに使用され得る。説明を目的とする例では、マップ２４０の行２６４と２６８とを考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」という３個のパレットインデックスと、「２」という２個のパレットインデックスと、「３」という３個のパレットインデックスとを含む。行２６８は、「１」という５個のパレットインデックスと、「３」という２個のパレットインデックスと、パレット２４４に含まれない１個のサンプル（インデックス４によって表される）とを含み、この１個のサンプルはエスケープサンプルと呼ばれ得る。
【０１３４】
[0140]この例では、ビデオエンコーダ２０は、行２６８のためのデータを符号化するために、Ｃｏｐｙ  Ｔｏｐモードを使用し得る。たとえば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、行２６８の中の走査方向の２つの連続するエントリーの次のランが行２６４の第１の位置と同じであることを示す、１つまたは複数のシンタックス要素を符号化することができる。
【０１３５】
[0141]行２６４の第１の位置を示す１つまたは複数のシンタックス要素と、（上で述べられた）２つのエントリーのランとを符号化した後で、ビデオエンコーダ２０は、Ｖａｌｕｅモードを使用して、（左から右に）行２６８の中の第４の位置と第５の位置とを符号化することができる。たとえば、ビデオエンコーダ２０は、第４の位置に対して１という値を示す１つまたは複数のシンタックス要素と、１というランを示す１つまたは複数のシンタックス要素とを符号化することができる（たとえば、Ｖａｌｕｅモード）。したがって、ビデオエンコーダ２０は、別の線を参照することなくこれらの２つの位置を符号化する。
【０１３６】
[0142]ビデオエンコーダ２０は次いで、上の行２６４に対してＣｏｐｙ  Ｔｏｐモードを使用して、行２６８の中の３というインデックス値を有する第１の位置を符号化することができる。たとえば、ビデオエンコーダ２０は、Ｃｏｐｙ  Ｔｏｐモードと、１というランとをシグナリングすることができる。したがって、ビデオエンコーダ２０は、たとえばランを使用して線のピクセル値またはパレットインデックスを線の他の値に対してコーディングすること、線のピクセル値またはパレットインデックスを別の線（または列）の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。ビデオエンコーダ２０は、いくつかの例では、この選択を行うために、レート／歪みの最適化を実行することができる。
【０１３７】
[0143]ビデオエンコーダ２０は次いで、（左から右に）行２６８の最後のサンプルのためのエスケープサンプルを符号化することができ、これはパレット２４４に含まれない。たとえば、ビデオエンコーダ２０は、行２６８の最後の位置をエスケープサンプルとして符号化することができる。すなわち、ビデオエンコーダ２０は、行２６８の最後の位置がエスケープサンプル（たとえば、インデックス４）であるというインジケーション、ならびにサンプル値のインジケーションを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから上で説明されたシンタックスを取得し、そのようなシンタックスを使用して行２６８を再構築することができる。
【０１３８】
[0144]一例では、コードエスケープサンプルをシグナリングするために、ビデオエンコーダ２０およびビデオデコーダ３０は、追加のインデックスをパレット２４４に追加することができる（エントリーインデックス４）。ビデオエンコーダ２０およびビデオデコーダ３０は、サンプルがエスケープサンプルとしてコーディングされることを示すために、パレット２４４に対する追加のインデックス、たとえばインデックス４を使用することができる。しかしながら、追加のインデックスは、関連する色値を有しない。むしろ、ビデオエンコーダ２０およびビデオデコーダ３０はまた、追加のインデックスと関連付けられる各サンプルのための色値をコーディングする。サンプルがエスケープサンプルとしてコーディングされない場合、ビデオエンコーダ２０およびビデオデコーダ３０は、モードがＣｏｐｙ  ＴｏｐモードであるかＣｏｐｙ  Ｌｅｆｔモードであるかを示すために、ｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素などのデータをコーディングすることができる。
【０１３９】
[0145]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ビデオデータのブロックのすべてのサンプルに対して、ブロックの少なくとも１つのサンプルがそのブロックのための色のパレットに含まれていない色値に基づいてコーディングされるかどうかを示す、１つまたは複数のブロックレベルシンタックス要素をコーディングするように構成され得る。図５の例に関して、ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０の少なくとも１つのサンプルがエスケープサンプル、すなわち行２６８の最後のサンプルとしてコーディングされることを示す、マップ２４０と関連付けられる１つまたは複数のシンタックス要素をコーディングすることができる。
【０１４０】
[0146]ある例では、１つまたは複数のシンタックス要素は、ブロックレベルエスケープフラグであり得る。たとえば、ビデオエンコーダ２０は、マップ２４０がエスケープサンプルとしてコーディングされるサンプルを含むことを示すために、１という値を有するエスケープフラグを符号化することができる。同様に、ビデオデコーダ３０は、マップ２４０がエスケープサンプルとしてコーディングされるサンプルを含むことを示す、１という値を有するエスケープフラグを復号することができる。したがって、エスケープフラグに従って、ビデオエンコーダ２０はマップ２４０を符号化することができ、ビデオデコーダ３０はマップ２４０を復号することができる。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックス４をパレット２４４に追加することができ、これは、エスケープサンプルとしてコーディングされるサンプルを表すために使用され得る。ビデオエンコーダ２０およびビデオデコーダ３０は、マップ２４０のコーディングの間、この追加のインデックスを使用することができる。
【０１４１】
[0147]ある例として、ビデオデコーダ３０は、ビットストリームからマップ２４０と関連付けられるパレットコーディングされたブロックのためのデータをパースすることができる。ビデオデコーダ３０は、ブロックのためのブロックレベルエスケープフラグを復号することができ、これは、ブロック中の１つまたは複数のサンプルがエスケープピクセルとしてコーディングされ得るかどうかを示す。エスケープサンプルとしてコーディングされるサンプルが存在し得ることをブロックレベルエスケープフラグが示す場合、ビデオデコーダ３０は、インデックス４をパレット２４４に追加することができる。ビデオデコーダ３０はまた、他のサンプルのランの中のコーディングされないサンプル（たとえば、行２６４および行２６８に関して上で説明されたような、明示的にコーディングされているサンプル）に対して行い得、ビデオデコーダ３０は、パレットコーディングモードを示す１つまたは複数のシンタックス要素（たとえば、ｐａｌｅｔｔｅ＿ｍｏｄｅフラグなど）を復号することができる。
【０１４２】
[0148]上の例では、ビデオデコーダ３０はまた、サンプルのためのパレットインデックスを復号することができる。ビデオデコーダ３０は、復号されているサンプルに対するサンプル値をどのように復号するかを決定するために、復号されたパレットインデックスを使用することができる。たとえば、サンプルが４というインデックス（たとえば、エスケープサンプルと関連付けられるインデックス）を有する場合、ビデオデコーダ３０は、サンプルがエスケープコーディングされるサンプルであると決定することができ、サンプルのサンプル値を復号することができる。サンプルが４以外の任意のインデックスを有する場合、ビデオデコーダ３０は、復号されたインデックスに基づいて、パレット２４４から適切なサンプル値を決定することができる。ビデオデコーダ３０はまた、所与の走査順序において、現在のサンプルとともにコーディングされている他のサンプルのランを示す、１つまたは複数のシンタックス要素を復号することができる。ビデオデコーダ３０は、パレット２４４のサイズ、たとえば４つのインデックスに等しい入力パラメータを有する切捨て二進コードを使用して、インデックスを復号することができる。得られる切捨て二進コードは、プレフィックスとサフィックス（たとえば、後端の１または０）とを含み得る。
【０１４３】
[0149]本開示の態様によれば、ビデオデコーダ３０は、切捨て二進コードのプレフィックスだけに基づいて、復号されているサンプルが４というインデックスを有する（たとえば、サンプルがエスケープサンプルとして復号される）か、または、サンプルが別のパレットコーディングモードに従って復号されている（たとえば、サンプルがＣｏｐｙ  Ｌｅｆｔコーディングモードを使用して復号される）かを区別することができる。たとえば、ビデオデコーダ３０は、切捨て二進コードを復号することと切捨て二進コードのプレフィックスを復号することとの前に、入力パラメータを調整しないことがある。加えて、ビデオデコーダ３０は、切捨て二進コードの特定のコードワードにエスケープインデックス４を割り当てることができる。たとえば、ビデオデコーダ３０は、すべてが０に等しいビンを有するプレフィックスにエスケープインデックス４を割り当てることができる。
【０１４４】
[0150]上の例では、すべてが０に等しいビンを有するプレフィックスを復号した後で、ビデオデコーダ３０は、復号されているサンプルのインデックスがインデックス４であることを決定することができ、復号されているサンプルがエスケープサンプルであると決定することができる。したがって、ビデオデコーダ３０は、サンプルのサンプル値を復号することができる。任意の他の値を有するプレフィックスを復号した後で、ビデオデコーダ３０は、現在のサンプルとともに復号されているサンプルのランレングスを復号することができる。
【０１４５】
[0151]いくつかの事例では、本開示の態様によれば、ビデオデコーダ３０は、切捨て二進コードのプレフィックスと切捨て二進コードのサフィックスとの間で、そのようなサフィックスが存在する場合には、１つまたは複数のシンタックス要素を復号するように構成され得る。このようにして、ビデオデコーダ３０は、現在のサンプルとともに復号されているサンプルのランレングスを示すシンタックスなどの、他のシンタックスと並列にインデックスを復号することができる。たとえば、ビデオデコーダ３０は、現在のサンプルのためのインデックスを示す切捨て二進コードのプレフィックスを復号することができる。サンプルがエスケープサンプルとして復号されない（たとえば、サンプルが、Ｃｏｐｙ  ＴｏｐモードまたはＣｏｐｙ  Ｌｅｆｔモードなどの別のパレットコーディングモードを使用して復号される）ことをプレフィックスが示す事例では、ビデオデコーダ３０はランレングスシンタックスを復号することができ、これは、ビットストリームにおいて切捨て二進コードのプレフィックスに後続する。ビデオデコーダ３０はまた、ランレングスシンタックスに後続する切捨て二進コードのサフィックスを、ランレングスシンタックスと並列に復号することができる。
【０１４６】
[0152]図６は、本開示の技法に従った、パレットコーディングのためのデータを含む２つの例示的なビットストリーム示す概念図である。たとえば、図６は、パレットコーディングされたビデオデータを表すビットストリームに含まれ得るビット（ビン）の相対的な位置を示す。具体的には、図６の例は、Ｅｓｃａｐｅモードでピクセルをコーディングするためのビンの相対的な位置を示す第１のビットストリーム２８０と、Ｃｏｐｙ  Ｌｅｆｔモードでピクセルをコーディングするためのビンの相対的な位置を示す第２のビットストリーム２８４とを含む。
【０１４７】
[0153]上で説明されたように、ビデオエンコーダ（ビデオエンコーダ２０など）は、Ｅｓｃａｐｅモードが現在符号化されているＣＵ（現在のＣＵ）に対して有効にされるかどうかを指定するＣＵレベルエスケープフラグをビットストリームにおいて符号化することができる。たとえば、ビデオエンコーダ２０は、現在のＣＵがエスケープピクセルとしてコーディングされるピクセルを有し得るかどうかを示すフラグを設定することができる。
【０１４８】
[0154]現在のＣＵ内に含まれるピクセルに対して、ビデオエンコーダ２０は、ピクセルのためのパレットコーディングモードを示す１つまたは複数のシンタックス要素を符号化することができる。図６の例では、パレットコーディングモードがｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素（１ビン）によって表されることを示す１つまたは複数のシンタックス要素、これは、第１のビットストリーム２８０と第２のビットストリーム２８４の両方に対して有効にされる。
【０１４９】
[0155]いくつかの事例では、エスケープピクセルとして符号化されるピクセルおよびＣｏｐｙ  Ｌｅｆｔモードで符号化されるピクセルは、同じｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素の値を共有することができる。たとえば、０に等しいｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素は、現在のピクセルがＣｏｐｙ  Ａｂｏｖｅモードで符号化または復号されることを示し得るが、１に等しいｐａｌｅｔｔｅ＿ｍｏｄｅシンタックス要素は、現在のピクセルがＣｏｐｙ  ＬｅｆｔモードまたはＥｓｃａｐｅモードで符号化または復号されることを示し得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は次いで、現在のピクセルのパレットインデックスに基づいて、現在のピクセルがＣｏｐｙ  Ｌｅｆｔモードで符号化もしくは復号されるか、またはＥｓｃａｐｅモードで符号化もしくは復号されるかを決定することができる。
【０１５０】
[0156]たとえば、ビデオエンコーダ２０は、ＣＵのためのパレットインデックスの数を符号化することができ、最大のインデックスはＮである。Ｅｓｃａｐｅモードが有効にされない（たとえば、ピクセルがエスケープピクセルとして符号化されないことをＣＵレベルエスケープフラグが示す）事例では、ビデオエンコーダ２０は、両端を含めて、インデックスのセット（set）｛０，１，…，Ｎ｝からＣＵのピクセルをコーディングするためのインデックスを選択することができる。｛０，１，…，Ｎ｝というセットの中のインデックスを選択することによって、ビデオエンコーダ２０はまた、Ｃｏｐｙ  Ｌｅｆｔモードが現在のピクセルを符号化するために使用されることを暗黙的にシグナリングし、さらに、Ｃｏｐｙ  Ｌｅｆｔモードのためのランレングスを示す１つまたは複数のシンタックス要素を符号化する。ビデオデコーダ３０は、逆のプロセスを実行することができる（たとえば、パレットモードシンタックス要素をパースし、パレットインデックスをパースし、パレットモードを決定し、ピクセルならびにランのピクセルを復号することができる）。
【０１５１】
[0157]Ｅｓｃａｐｅモードが有効にされる（たとえば、現在のブロック中にエスケープピクセルが存在し得ることをＣＵレベルエスケープフラグが示す）事例では、ビデオエンコーダ２０は、インデックスのセット｛０，１，・・・，Ｎ，Ｎ＋１｝からＣＵのピクセルをコーディングするためのインデックスを選択することができ、ここでＮ＋１に等しいインデックスは、現在のピクセルがエスケープピクセルとしてコーディングされることを示す。そのような事例では、ビデオエンコーダ２０は、エスケープピクセルのための量子化されたピクセル値を示すために、いくつかの追加のシンタックス要素を符号化することができる。ビデオデコーダ３０は、ビットストリームから得られるインデックスがＮ＋１に等しいことを決定し、エスケープピクセルのためのピクセル値を復号することができる。
【０１５２】
[0158]上の例では、ビデオデコーダ３０は、復号されたインデックスがＮ＋１に等しいか否かに基づいて、異なるシンタックス要素をパースして復号する。たとえば、インデックスがＮ＋１に等しいとき、ビデオデコーダ３０は、エスケープピクセル値をパースして復号することができる。インデックスがＮ＋１に等しくないとき、ビデオデコーダ３０は、インデックス値と、インデックス値と関連付けられるランのインジケーションとを、パースして復号することができる。
【０１５３】
[0159]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、切捨て二進コードを使用して、（たとえば、インデックスがＮ＋１に等しいか、またはパレットの別のインデックスであるかを決定するために）パレットインデックスを符号化および復号することができる。ビデオエンコーダ２０およびビデオデコーダ３０は、現在符号化または復号されているピクセルのためのパレットのサイズに基づいて、インデックスを示す切捨て二進コードに対する入力パラメータを決定することができる。得られる切捨て二進コードは、プレフィックスとサフィックスとを含むことがあり、ここで、全体のコードワード長はｋまたはｋ＋１であり得る（ここで最後のビンは後端のビン（a trailing bin）と呼ばれ得る）。
【０１５４】
[0160]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、現在コーディングされているブロック（たとえば、現在のＣＵ）のためのエスケープピクセルが存在しない場合、最大のパレットエントリーインデックスＮに等しい、切捨て二進コードに対する入力パラメータＰを決定することができる。パラメータＰは、現在のブロック中にエスケープピクセルが存在し得る場合、パレットインデックスに１を足したもの（Ｎ＋１）に等しくてよい。
【０１５５】
[0161]しかしながら、ある冗長性除去および／または効率化のプロセスが、上で説明された入力パラメータＰに影響を与えることがある。たとえば、パレットインデックスを表すために必要とされるビットの数を減らすための、規格提案文書ＪＣＴＶＣ−Ｒ００６５において開発された冗長性除去プロセスは、現在のピクセルの隣接ピクセルの値が特定の条件を満たすかどうかを決定することを含む。この冗長性除去プロセスでは、特定の条件が満たされる場合、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックスを表すのに必要なビットの数を減らす（それによってビットの節約を実現する）ために、切捨て二進コードを決定するための入力パラメータＰを１だけ減らすことがある。
【０１５６】
[0162]上の例では、隣接ピクセル値に応じて、現在のブロックがエスケープピクセルを有し得る（たとえば、パレットのサイズがＮ＋１である）とき、入力パラメータＰの値には２つの可能性がある。１つの可能性（ケース１と呼ばれる）は、Ｎ＋１に等しい調整されていない入力パラメータＰである。別の可能性（ケース２と呼ばれる）は、Ｎに等しい低減された入力パラメータＰである。
【０１５７】
[0163]切捨て二進コーディングを使用するとき、エスケープピクセルインデックスは、ケース１では［ｌｏｇ２（Ｎ＋１）］個のビンを使用してコーディングされ、ケース２では［ｌｏｇ２Ｎ＋２］個のビンを使用してコーディングされる。このダイバージェンス（divergence）が、シンタックス要素を並列に符号化して復号するための能力に影響を与えることがある。たとえば、現在のピクセルのためのビンストリング（a bin string）（たとえば、第１のビットストリーム２８０および第２のビットストリーム２８４のビンストリングなど）を復号するために、ビデオデコーダ３０は、以下のプロセスを順次的に実行することができる。
・ステップ１：ケース１が生じるかケース２が生じるかに基づいて、ならびに、隣接ピクセル値および／またはインデックス値に基づいて、入力パラメータＰを決定する。
・ステップ２：ビットストリームから［ｌｏｇ２（Ｐ＋１）］個のビンをパースして、対応する値を復号する。
・ステップ３：復号された値に応じて、ビットストリーム中にもう１つの後端のビンが存在するかどうかを決定する。存在する場合、それをパースして、事前調整されたインデックス値を復号する。
・ステップ４：ケース１の場合、最終的な復号されたインデックス値を決定するために、事前調整されたインデックス値に必要な調整を行う。
・ステップ５：インデックス値がＮ＋１に等しい場合、（Ｅｓｃａｐｅモードのための）エスケープピクセルシンタックスをパースして復号する。それ以外の場合、（Ｃｏｐｙ  Ｌｅｆｔモードのための）ランレングスシンタックスをパースして復号する。
ステップ４およびステップ５は上の例では順次的に実行されるが、いくつかの事例では、プロセスのステップ４およびステップ５は並列に実行されることがあり、それは、事前調整されるインデックス値がＰに等しい（たとえば、可変長の、すべてが１であるコードワード「１１１．．．１１１」である）場合、現在のピクセルがエスケープモードであるからである。
【０１５８】
[0164]本開示の技法は、シンタックス間の依存関係を減らし、並列性を向上させるために使用され得る。たとえば、本開示の態様によれば、すべてが０のコードワードが、エスケープピクセルのために確保され得る。図６の例では、ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、第１のビットストリーム２８０のＴＢＣプレフィックス（Ｌビン）のためにすべてが０のコードワードを符号化および復号するように構成され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセルがエスケープピクセルとしてコーディングされることを示すインデックス（たとえば、上の例ではインデックスＮ＋１）を、すべてが０に等しいビンを有する切捨て二進コードのプレフィックスに割り当てるように構成され得る。したがって、ビデオデコーダ３０は、すべてが０に等しいビンを有する切捨て二進コードをパースして復号すると、特定のピクセルがエスケープピクセルとして符号化されることを特定することができる。
【０１５９】
[0165]加えて、または代替的に、本開示の態様によれば、コーディングされているピクセルのインデックスがエスケープピクセルのコーディングのためのインデックス以外のインデックスであり（たとえば、Ｎ＝２k−１、ｋ＝０，１，２，３，…であり）、現在のＣＵの中に１つまたは複数のエスケープピクセルが存在するとき、パレットインデックスのための切捨て二進コードに対する入力パラメータに影響を与え得るプロセスは無効にされ得る。図６の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、隣接ピクセルのピクセル値および／またはインデックスに基づいて、切捨て二進コードのための入力パラメータを調整することなく、第２のビットストリーム２８４のＴＢＣプレフィックス（Ｌビン）を決定するように構成され得る。この例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット中のインデックスの数だけに基づいて、ビデオデータのブロックのピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定するように構成され得る。
【０１６０】
[0166]１つの具体的な例として、ビデオエンコーダ２０およびビデオデコーダ３０は、入力パラメータを決定するとき、ＪＣＴＶＣ−Ｒ００６５において説明される冗長性除去プロセスを無効にするように構成され得る。そのような例では、切捨て二進コーディングのための入力パラメータはＮ＋１であり得る。他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセルのためのインデックス値を調整するためのＪＣＴＶＣ−Ｒ００６５のインデックス調整などの、インデックス調整プロセスを適用するように構成され得るが、切捨て二進コードを決定するための入力パラメータＰに対するあらゆる調整を無効にするように構成され得る。
【０１６１】
[0167]加えて、または代替的に、本開示の態様によれば、切捨て二進コードが後端のサフィックスビンを含むとき、ビデオエンコーダ２０およびビデオデコーダ３０は、ビットストリームの最後にサフィックス（たとえば、第２のビットストリーム２８４のＴＢＣサフィックス（１ビン、任意選択）など）を含めるように構成され得る。たとえば、［ｌｏｇ２（Ｐ＋１）］＋１が［ｌｏｇ２（Ｐ＋１）］に等しい場合、ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、ビンストリングの最後に、切捨て二進コードの後端のサフィックスビンを符号化または復号するように構成され得る。上の例では、第２のビットストリーム２８４によって示されるように、最後のビンＴＢＣサフィックス（１ビン、任意選択）は、存在するとき、Ｃｏｐｙ  Ｌｅｆｔモードにおけるランレングスシンタックスの後に含まれ得る。同様の方法で、第１のビットストリーム２８０に関して、量子化されたエスケープピクセル値の最後のビン（Ｙサフィックス、Ｕサフィックス、Ｖサフィックス）も、ビンストリングの最後に含まれ得る。
【０１６２】
[0168]本開示の態様によれば、上のプロセスを実行することによって、エスケープピクセルのインデックスは、長さＬ＝［ｌｏｇ２（Ｎ＋２）］のすべてが０のコードワード’０００．．．０００’を常に有し得る。たとえば、エスケープピクセルインデックス（たとえば、インデックスＮ＋１）に対する０の数は、［ｌｏｇ２（Ｎ＋２）］に等しいことがある。したがって、ビデオエンコーダ２０およびビデオデコーダ３０は、パレット中のインデックスの数に基づいてビデオデータのブロックのピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定し、切捨て二進コードのプレフィックスをコーディングし、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定することができる。
【０１６３】
[0169]第１のビットストリーム２８０および第２のビットストリーム２８４は、本開示の技法に適合する例示的なビットストリームを示す。ある例では、第１のビットストリーム２８０および第２のビットストリーム２８４は、ｐａｌｅｔｔｅ＿ｍｏｄｅ［ｘＣ］［ｙＣ］がＣｏｐｙ  Ａｂｏｖｅモードに等しくないとき、パレットコーディングされたピクセルを表すために使用され得る。上で説明されたように、図６の例では、Ｌは、パレットサイズのみに依存し得る既知の値である。すなわち、長さＬは隣接インデックス値に依存しない。
【０１６４】
[0170]本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、第１のビットストリーム２８０および第２のビットストリーム２８４のいくつかのシンタックス要素を並列に符号化および復号することができる。ある例として、ビデオデコーダ３０は、第１のビットストリーム２８０と第２のビットストリーム２８４とを復号するために、以下のステップを実行することができる。
・ステップ１：最初の［ｌｏｇ２（Ｎ＋２）］個のバイパスコーディングされたビン（ＴＢＣプレフィックス（Ｌビン））をパースして復号する。すべてのビンが０の値を有する場合、Ｅｓｃａｐｅモードでコーディングされるピクセルのための第１のビットストリーム２８０を復号するために、ステップ２．１へ行く。それ以外の場合、Ｃｏｐｙ  Ｌｅｆｔモードでコーディングされるピクセルのための第２のビットストリーム２８４を復号するために、ステップ２．２へ行く。
・ステップ２．１：３つの量子化されたエスケープピクセル値（Ｙ値（Ａビン）、Ｕ値（Ａビン）、およびＶ値（Ａビン））を並列にパースして復号する。次いで、切捨て二進コードの任意選択の後端のビンＹサフィックス（１ビン、任意選択）、Ｕサフィックス（１ビン、任意選択）、およびＶサフィックス（１ビン、任意選択）を復号する。
・ステップ２．２：ステップ２．２．１とステップ２．２．２とを並列に行う。
ステップ２．２．１：最初の［ｌｏｇ２（Ｎ＋２）］個のバイパスコーディングされたビンと入力パラメータＰとに応じて、ビットストリーム中にもう１つの後端のビン（ＴＢＣサフィックス（１ビン、任意選択））があるかどうかを決定する。後端のビンが存在する場合、そのビンをパースして、最終的なインデックス値を復号する。たとえば、ＴＢＣプレフィックスおよびＴＢＣサフィックスに基づいてピクセルのためのインデックスを決定する。後端のビンが存在しない（たとえば、切捨て二進コードが入力パラメータに基づくサフィックスビンを有しない）場合、ＴＢＣプレフィックスだけに基づいてインデックス値を決定する。
ステップ２．２．２：現在のピクセルとともに復号されているピクセルのランのランレングスを示すデータ（ランレングス）を復号する。
【０１６５】
[0171]上の技法は、エスケープピクセルの復号プロセスを簡単にし、デコーダのスループットを向上させることができる。たとえば、本開示の態様によれば、パレットコーディングモードは、現在コーディングされているブロックのためのパレットのサイズ（たとえば、インデックスの数のためのコードの長さ、これはパレット中のインデックスの量に基づき得る）だけに基づいて決定され得る。たとえば、インデックスの数Ｎを復号するために切捨て二進コーディングを使用するとき、ビデオデコーダ３０は、以下の式：Ｌ＝［ｌｏｇ２（Ｎ＋２）］に従って、インデックスの数Ｎだけに基づいて長さＬを決定することができる。加えて、本開示の態様によれば、パレットインデックス値（たとえば、Ｃｏｐｙ  Ｌｅｆｔモードのインデックス値）およびランレングスシンタックスは、並列に符号化または復号され得る。上で説明された技法は、ｋが所定の値より大きいときに有効にされてよく、ここでｋは、上で述べられたようにインデックスの数Ｎを示す。たとえば、条件はｋ＞０であることを要求し得る。
【０１６６】
[0172]図７は、本開示の技法に従った、パレットコーディングされるデータをコーディングするためのプロセスを示すフローチャートである。図７のプロセスは、ビデオコーダに関して説明され、ビデオコーダは、ビデオエンコーダ２０、ビデオデコーダ３０、または、ビデオデータを符号化もしくは復号するように構成される様々な他のプロセッサを含み得る。
【０１６７】
[0173]図７の例では、ビデオコーダは、パレット中のインデックスの数に基づいて、ピクセルのためのパレットインデックスを表す切捨て二進コードのための入力パラメータを決定することができる（２９０）。本開示の態様によれば、ビデオコーダは、パレット中のインデックスの数を調整することなく、切捨て二進コードのための入力パラメータを決定することができる。たとえば、エスケープピクセルとしてコーディングされる１つまたは複数のピクセルを含み得るブロックに対して、ビデオコーダは、Ｎ＋１に等しいパレットサイズに基づいてその入力パラメータを決定することができ、ここでＮは、対応する色値を有するブロックのためのパレットのインデックスの数である。
【０１６８】
[0174]ビデオコーダはまた、切捨て二進コードのプレフィックスをコーディング（符号化または復号）することができる（２９２）。たとえば、ビデオエンコーダ２０は、切捨て二進コードのプレフィックスを符号化することができる。同様に、ビデオデコーダ３０は、切捨て二進コードのプレフィックスを復号することができる。
【０１６９】
[0175]ビデオコーダは次いで、切捨て二進コードのプレフィックスだけに基づいて、第１のパレットコーディングモードおよび第２のパレットコーディングモードから、ピクセルのためのパレットコーディングモードを決定する（２９４）。ある例として、ビデオコーダは、現在コーディングされているピクセルがエスケープピクセルとして符号化される（たとえば、第１のパレットコーディングモードがＥｓｃａｐｅモードである）かどうか、または、ピクセルがＣｏｐｙ  Ｌｅｆｔモードを使用して符号化される（たとえば、第２のパレットコーディングモードがＣｏｐｙ  Ｌｅｆｔモードである）かどうかを、切捨て二進コードのプレフィックスだけに基づいて決定することができる。ＥｓｃａｐｅモードおよびＣｏｐｙ  Ｌｅｆｔモードは例として図７に関して説明されるが、他の例では他のパレットコーディングモードが適用可能であり得ることを理解されたい。
【０１７０】
[0176]本開示の態様によれば、ビデオコーダは、切捨て二進コードのプレフィックスが特定のコードワードに等しいこと、たとえばすべてが０に等しいビンをコードが有することに基づいて、パレットコーディングモードが第１のパレットコーディングモード（たとえば、Ｅｓｃａｐｅモード）であると決定することができる。ビデオコーダは、切捨て二進コードのプレフィックスが第１のパレットコーディングモードのために確保されているコードワード以外の値に等しいことに基づいて、パレットコーディングモードが第２のパレットコーディングモード（たとえば、Ｃｏｐｙ  Ｌｅｆｔモード）であると決定することができる。
【０１７１】
[0177]図７の例では、パレットコーディングモードが第１のパレットコーディングモードであるとビデオコーダが決定する場合（ステップ２９４の「ｙｅｓ」の分岐）、ビデオコーダは、ピクセルのエスケープピクセル値をコーディングすることができる（２９６）。たとえば、ビデオエンコーダ２０は、ピクセルのピクセル値を示す１つまたは複数のシンタックス要素を符号化することができる。同様に、ビデオデコーダ３０は、ピクセルのピクセル値を示す１つまたは複数のシンタックス要素を復号することができる。加えて、本開示の態様によれば、ビデオコーダは、エスケープ値のためのサフィックスをコーディングすることができる（２９８）。すなわち、ビデオエンコーダ２０は、ピクセル値をコーディングした後で、ピクセル値のためのサフィックスを符号化することができ（またはビデオデコーダ３０がそれを復号することができ）、ここでサフィックスはビットストリームにおいてピクセル値に後続する。
【０１７２】
[0178]パレットコーディングモードが第２のパレットコーディングモードであるとビデオコーダが決定する場合（ステップ２９４の「ｎｏ」の分岐）、ビデオコーダは、ピクセルとともにコーディングされるべきピクセルのランレングスを示す、１つまたは複数のシンタックス要素をコーディングすることができる（３００）。本開示の態様によれば、ビデオコーダは、切捨て二進コードのプレフィックスをコーディングした後でランレングスを示すデータをコーディングすることができ、ここで、ランレングスを示すデータはビットストリームにおいてプレフィックスに後続する。
【０１７３】
[0179]いくつかの事例では、ビデオコーダはまた、切捨て二進コードのためのサフィックスをコーディングすることができる（３０２）。たとえば、ビデオコーダは、ランレングスを示すデータをコーディングした後で、切捨て二進コードのためのサフィックスを、そのようなサフィックスが存在する場合にはコーディングすることができ、ここでサフィックスは、ビットストリームにおいてランレングスを示すデータに後続する。いくつかの例では、本開示の態様によれば、ビデオコーダは、現在のピクセルとともにコーディングされているピクセルのランレングスを示すデータと並列に、切捨て二進コードのサフィックスをコーディングすることができる。
【０１７４】
[0180]例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なる順序で実行されてよく、全体的に追加され、統合され、または完全に除外され得る（たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。その上、いくつかの例では、行為またはイベントは、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを用いて、連続的にではなく同時に実行され得る。加えて、本開示の特定の態様は、明快にするために、単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技法は、ビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０１７５】
[0181]本開示のいくつかの態様は、説明を目的に、開発中のＨＥＶＣ規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０１７６】
[0182]上で説明された技法は、ビデオエンコーダ２０（図１および図２）ならびに／またはビデオデコーダ３０（図１および図３）によって実行されてよく、ビデオエンコーダ２０とビデオデコーダ３０の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指し得る。
【０１７７】
[0183]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
【０１７８】
[0184]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、および／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１７９】
[0185]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１８０】
[0186]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素において完全に実装され得る。
【０１８１】
[0187]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々なコンポーネント、モジュール、またはユニットが説明されたが、それらは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
【０１８２】
[0188]様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。
【図１】
2017532896.tif 000004
【図２】
2017532896.tif 000005
【図３】
2017532896.tif 000006
【図４】
2017532896.tif 000007
【図５】
2017532896.tif 000008
【図６】
2017532896.tif 000009
【図７】
2017532896.tif 000010
【国際調査報告】
2017532896.tif 000011
2017532896.tif 000012