(57)【要約】ビデオデータを復号する例示的な方法は、ブロックを復号するためのパレットを決定することと、パレットが、それぞれのパレットインデックスをそれぞれ有するエントリを含む、ブロックの第１のピクセルのためのパレットインデックスの参照ランを決定することと、参照ランに基づいて、ブロックの第２のピクセルのためのパレットインデックスの現在のランを決定することとを含む。第２の複数のパレットインデックスを決定することは、参照ランの参照インデックスを位置特定することと、参照インデックスが、現在のランの最初のインデックスから少なくとも１つのライン離間する、参照ランのランレングスを決定することと、参照ランの最後のインデックスが、現在のランの最初のインデックスから少なくとも１つのインデックスだけ離れる、参照ランのパレットインデックスをパレットインデックスの現在のランとしてコピーすることと、パレットを使用して、コピーされた現在のランのピクセルを復号することとを含む。【選択図】図６
2017525230.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を備える、方法。
【請求項２】
前記参照インデックスを位置特定することが、前記ブロックの探索範囲内で前記参照インデックスを位置特定することを備える、請求項１に記載の方法。
【請求項３】
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、請求項２に記載の方法。
【請求項４】
前記探索範囲を表すコードワードを復号することによって前記探索範囲を取得することをさらに備える、請求項２に記載の方法。
【請求項５】
前記コードワードが切捨単項フォーマットで表された、請求項４に記載の方法。
【請求項６】
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、請求項１に記載の方法。
【請求項７】
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することとをさらに備え、
前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、
請求項１に記載の方法。
【請求項８】
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、
請求項７に記載の方法。
【請求項９】
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、請求項７に記載の方法。
【請求項１０】
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、
請求項９に記載の方法。
【請求項１１】
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値を受信することをさらに備える、請求項１０に記載の方法。
【請求項１２】
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
ビデオデータの前記ブロックを受信するように構成される受信機と
を備える、請求項１に記載の方法。
【請求項１３】
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、請求項１２に記載の方法。
【請求項１４】
ビデオデータを符号化する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを符号化することと
を備える、方法。
【請求項１５】
前記参照インデックスを位置特定することが、前記ブロックの探索範囲内で前記参照インデックスを位置特定することを備える、請求項１４に記載の方法。
【請求項１６】
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、請求項１５に記載の方法。
【請求項１７】
前記探索範囲を表すコードワードを符号化することと、
符号化ビデオビットストリーム中で前記符号化コードワードをシグナリングすることと
をさらに備える、請求項１５に記載の方法。
【請求項１８】
前記コードワードを符号化することが、前記コードワードを切捨単項フォーマットで符号化することを備える、請求項１７に記載の方法。
【請求項１９】
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、請求項１４に記載の方法。
【請求項２０】
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することとをさらに備え、
ここにおいて、前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、
請求項１４に記載の方法。
【請求項２１】
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、
請求項２０に記載の方法。
【請求項２２】
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、請求項２０に記載の方法。
【請求項２３】
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、
請求項２２に記載の方法。
【請求項２４】
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値をシグナリングすることをさらに備える、請求項２３に記載の方法。
【請求項２５】
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
前記ブロックを表す符号化ビデオデータを送信するように構成される送信機と
を備える、請求項１４に記載の方法。
【請求項２６】
前記ワイヤレス通信デバイスがセルラー電話であり、前記符号化ビデオデータが前記送信機によって送信され、セルラー通信規格に従って変調される、請求項２５に記載の方法。
【請求項２７】
符号化ビデオデータを記憶するように構成されるメモリと、
１つまたは複数のプロセッサと
を備えるビデオ復号デバイスであって、前記１つまたは複数のプロセッサは、
前記符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを行うように構成され、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記１つまたは複数のプロセッサは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行うように構成される、ビデオ復号デバイス。
【請求項２８】
前記ビデオ復号デバイスがワイヤレス通信デバイスであり、前記ビデオ復号デバイスが、前記符号化ビデオデータの前記ブロックを受信するように構成される受信機をさらに備える、請求項２７に記載のビデオ復号デバイス。
【請求項２９】
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、請求項２８に記載のビデオ復号デバイス。
【請求項３０】
命令で符号化された非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、
符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを行わせ、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記命令は、実行されたとき、前記１つまたは複数のプロセッサに、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行わせ、それらを行うように構成される、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本出願は、２０１４年６月２０日に出願された米国仮出願第６２／０１５，１７７号、２０１４年６月２７日に出願された米国仮出願第６２／０１８，４７７号、および２０１４年１０月０６日に出願された米国仮出願第６２／０６０，４８５号の利益を主張するもので、これらの各々の全内容が参照により本明細書に組み込まれる。
【０００２】
[0002]  本開示は、ビデオコーディングおよび圧縮に関し、特定の例においてパレットベースビデオ／画像コーディング方法(palette-based video/image coding methods)に関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格、およびそのような規格の拡張によって定義された規格に記載されたものなどのビデオコーディング技法を実施する。ビデオデバイスは、そのようなビデオコーディング技法を実施することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]  ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（ピクチャ内）予測(spatial (intra-picture) prediction)および／または時間的（ピクチャ間）予測( temporal (inter-picture) prediction)を含む。ブロックベースビデオコーディング(block-based video coding)では、１つのビデオスライス（例えば、ビデオフレームまたはビデオフレームの一部分）が、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれることもある複数のビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライス(an intra-coded (I) slice)中のビデオブロックは、同じピクチャ中の近隣ブロック(neighboring blocks)中の参照サンプル(reference samples)に対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス(an inter-coded (P or B) slice)中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]  空間的または時間的予測は、コード化されるべきブロックのための予測ブロック(predictive block)を生じる。残差データ(Residual data)は、コード化されるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコード化ブロック(intra-coded block)は、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データはピクセル領域(pixel domain)から変換領域(transform domain)に変換されて残差変換係数(quantized transform coefficients)が得られ得、その残差変換係数は、次いで量子化され得る。最初に２次元アレイで構成される量子化された変換係数は、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディング(entropy coding)が適用され得る。
【発明の概要】
【０００６】
[0006]  一般に、本開示の技法は、パレットベースビデオコーディング(palette-based video coding)に関する。パレットベースのコーディングにおいて、ビデオコーダ（例えば、ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（例えば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆる「パレット」を形成し得る。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の１つまたは複数のための色またはパレットインデックス値(color or palette index values)をコーディングし得、ここで、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリを示す。ビデオデータの現在のブロックについてのパレットインデックス値のマップは、所与の走査順序(scan order)とランレングスコーディング(run-length coding)技法とを使用して、ラインごとに(line-by-line)コード化され(coded)得る。マップの所与のライン中のインデックス値の各々は、明示的にコード化されるか、または所与のラインの左モードインデックス(left-mode index)から予測されるか、または所与のラインの上方のライン中のコロケートされたインデックス(collocated index)から予測され得る。
【０００７】
[0007]  本開示の様々な技法は、既存のパレットベースコーディング(palette-based coding)技法を強化することを意図する。いくつかの態様において、本開示は、ビデオコーディングデバイスが、コード化されている現在のピクセルの複数の行上方に配置された参照ピクセルからパレットインデックスをコピーすることを可能にする、（本明細書では「前の行からのコピー(copy from previous rows)」モードと呼ぶ）パレットベースコーディングモードを追加することを意図する。本開示はまた、切捨単項コード(truncated unary code)を使用してモード識別情報をコーディングするための技法を含む。例えば、本技法は、ビデオコーディングデバイスが、本明細書で説明する前の行からのコピーモードを含めて、様々なパレットコーディングモードの各々を識別するためにユニークな切捨単項コードワード(unique truncated unary codeword)を使用することを可能にする。
【０００８】
[0008]  別の例において、本開示は、符号化ビデオデータ(encoded video data)を記憶するように構成されるメモリと、１つまたは複数のプロセッサとを含むビデオ復号デバイスについて説明する。１つまたは複数のプロセッサは、符号化ビデオデータのブロック(a block of the encoded video data)を復号するためのパレット(a palette)を決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリ(palette entries)を含む、ビデオデータのブロックの第１のピクセル(first pixels of the block of video data)のための第１の複数のパレットインデックス(a first plurality of palette indices)を決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセル(second pixels of the block of video data)のための第２の複数のパレットインデックス(a second plurality of palette indices)を決定することとを行うように構成される。第２の複数のパレットインデックスを決定するために、１つまたは複数のプロセッサは、第１の複数のパレットインデックス中に含まれる参照インデックス(a reference index)を位置特定する(locate)ことと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのラン(a run of the first plurality of indices)のランレングス(a run length)を決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを復号することとを行うように構成される。
【０００９】
[0009]  別の例において、本開示は、命令で符号化されたコンピュータ可読記憶媒体について説明し、命令は、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを行わせる。第２の複数のパレットインデックスを決定するために、命令は、実行されたとき、１つまたは複数のプロセッサに、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを復号することとを行わせ、それらを行うように構成される。
【００１０】
[0010]  一例において、本開示は、ビデオデータを復号する方法について説明し、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを含む。第２の複数のパレットインデックスを決定することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを復号することとを含む。
【００１１】
[0011]  別の例において、本開示は、ビデオデータを符号化する方法について説明し、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを含む。第２の複数のパレットインデックスを決定することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを符号化することとを含む。
【００１２】
[0012]  別の例において、本開示は、ビデオデータを復号する方法について説明し、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して復号されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを復号することとを含む。
【００１３】
[0013]  別の例において、本開示は、ビデオデータを符号化する方法について説明し、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して符号化されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを符号化することとを含む。
【００１４】
[0014]  別の例において、本開示は、符号化ビデオデータを記憶するように構成されるメモリと、１つまたは複数のプロセッサとを含む、符号化ビデオデータを復号するためのデバイスについて説明する。１つまたは複数のプロセッサは、符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して復号されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを復号することとを行うように構成される。
【００１５】
[0015]  別の例において、本開示は、命令で符号化されたコンピュータ可読記憶媒体について説明し、命令は、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して復号されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを復号することとを行わせる。
【００１６】
[0016]  １つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、これらの説明および図面、並びに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１７】
【図１】ビデオコーディングにおける深度指向ビュー間動きベクトル予測(depth oriented inter-view motion vector prediction)のための.パレットベースビデオコーディングのための本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】パレットベースビデオコーディングのための本開示で説明する技法を利用し得るビデオエンコーダの一例を示すブロック図である。
【図３】パレットベースビデオコーディングのための本開示で説明する技法を利用し得るビデオデコーダの一例を示すブロック図である。
【図４】本開示の技法に合致する、モード識別シンボルのビン(bins of a mode-identifying symbol)のためのコンテキストコーディング割当ての一例を示す表である。
【図５】本開示の技法に合致する、例示的なパレットコード化ブロック(an example palette-coded block)を示す概念図である。
【図６】ビデオ復号デバイスが本開示の１つまたは複数のパレットベース復号技法(one or more palette-based decoding techniques)を行い得る例示的なプロセスを示すフローチャートである。
【図７】ビデオ符号化デバイスが本開示の１つまたは複数のパレットベース符号化技法(one or more palette-based encoding techniques)を行い得る例示的なプロセスを示すフローチャートである。
【図８】ビデオエンコーダおよび／またはビデオデコーダが本開示の前の行からのコピーモードを使用してコーディングし得るブロックの別の例を示す概念図である。
【図９】ビデオ復号デバイスが本開示の１つまたは複数のパレットベース復号技法を行い得る例示的なプロセスを示すフローチャートである。
【図１０】ビデオ符号化デバイスが本開示の１つまたは複数のパレットベース符号化技法を行い得る例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１８】
[0027]  本開示は、ビデオコーディングおよび圧縮のための技法を含む。特に、本開示は、ビデオデータのパレットベースコーディングのための技法について説明する。従来のビデオコーディングにおいて、画像(images)は、連続的色調(continuous-tone)で空間的に滑らか(spatially smooth)であると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタ処理など、様々なツールが開発されており、そのようなツールは、自然コンテンツビデオに対して良好な性能を示している。
【００１９】
[0028]  しかしながら、リモートデスクトップ、協調ワークおよびワイヤレスディスプレイのような用途では、（例えば、テキストまたはコンピュータグラフィックスなどの）コンピュータ生成されたスクリーンコンテンツが、圧縮されるべき支配的コンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利なラインと高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあり、従って、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【００２０】
[0029]  本開示は、１つまたは複数の従来のコーディングツールが非効率的であるスクリーン生成されたコンテンツコーディングまたは他のコンテンツに特に好適であり得るパレットベースコーディング(palette-based coding)について説明するものである。ビデオデータのパレットベースコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディング(inter- or intra-predictive coding)のための技法など、１つまたは複数の他のコーディング技法とともに使用され得る。例えば、以下でより詳細に説明されるように、エンコーダもしくはデコーダ、または複合エンコーダデコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディング、並びにパレットベースコーディングを行うように構成され得る。
【００２１】
[0030]  いくつかの例において、パレットベースコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。例えば、高効率ビデオコーディング（ＨＥＶＣ）は、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ）とＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ）とのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ）によって開発されている新しいビデオコーディング規格である。最近のＨＥＶＣテキスト仕様ドラフトは、Ｂｒｏｓｓ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０  （ｆｏｒ  ＦＤＩＳ  ＆  Ｃｏｎｓｅｎｔ）」、ＪＣＶＣ−Ｌ１００３＿ｖ１３、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ  ３とＩＳＯ／ＩＥＣ  ＪＣＴ  １／ＳＣ  ２９／ＷＧ  １１とのＪＣＴ−ＶＣの第１２回会合、２０１３年１月１４〜２３日（「ＨＥＶＣ  Ｄｒａｆｔ  １０」）に記載されている。
【００２２】
[0031]  ＨＥＶＣフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット（ＣＵ：coding unit）モードとして使用されるように構成され得る。他の例において、パレットベースコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。従って、ＣＵモードのコンテキストにおいて説明する以下の開示するプロセスの全ては、追加または代替として、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明するパレットベースコーディング技法の制約または制限であると見なされるべきではなく、なぜなら、そのような技法は、他の既存のシステム／規格またはまだ開発されていないシステム／規格とは独立にまたはそれらの一部として働くように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、またはさらには非長方形形状の領域であり得る。
【００２３】
[0032]  パレットベースコーディングにおいて、ビデオデータの特定のエリアは比較的少数の色を有すると仮定され得る。ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（例えば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリに関連付けられ得る。例えば、ビデオコーダは、ピクセル値をパレット中の適切な値に関係付けるインデックスをコーディングし得る。
【００２４】
[0033]  上記の例において、ビデオエンコーダは、ブロックのためのパレットを決定することと、各ピクセルの値を表すためのパレット中のエントリを位置特定することと、ピクセル値をパレットに関係付けるピクセルのインデックス値でパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダは、符号化ビットストリームから、ブロックのためのパレット、並びにブロックのピクセルのインデックス値を取得し得る。ビデオデコーダは、ブロックのピクセル値を再構成するために、ピクセルのインデックス値をパレットのエントリに関係付け得る。ピクセル（および／またはピクセル値を示す関係するインデックス値）は、一般にサンプルと呼ばれることがある。
【００２５】
[0034]  ブロック中のサンプルは、水平ラスタ走査順序(horizontal raster scanning order)を使用して処理される（例えば、走査される）と仮定される。例えば、ビデオエンコーダは、水平ラスタ走査順序を使用してインデックスを走査することによってインデックスの２次元ブロックを１次元アレイに変換し得る。同様に、ビデオデコーダは、水平ラスタ走査順序を使用してインデックスのブロックを再構成(reconstruct)し得る。従って、本開示は、走査順序でブロック中の現在コード化されているサンプルに先行するサンプルとして前のサンプルを参照し得る。垂直ラスタ走査順序など、水平ラスタサン（horizontal raster san）以外の走査も適用可能であり得ることを諒解されたい。上記の例は、パレットベースコーディングの全般的な説明を与えるを意図される。
【００２６】
[0035]  パレットは、典型的には、インデックスで番号付けされ（例えば、少なくともＲＧＢ、ＹＵＶなどの１つの成分上の）少なくとも１つの色成分値または強度を表すエントリを含む。ビデオエンコーダとビデオデコーダの両方は、パレットエントリの数と、各パレットエントリの色成分値と、現在のブロックのためのパレットエントリの正確な順序付けとを決定する。本開示では、各パレットエントリがサンプルの全ての色成分のための値を指定すると仮定される。但し、本開示の概念は、色成分ごとに別個のパレットを使用することに適用可能である。
【００２７】
[0036]  いくつかの例において、パレットは、以前コード化されたブロックまたは以前コード化されたパレットからの情報を使用して作成され得る。すなわち、パレットは、前のブロックをコーディングするために使用されるパレットから予測される予測パレットエントリ(predicted palette entries)を含んでいることがある。例えば、標準サブミッション文書、Ｗｅｉ  Ｐｕら、「ＡＨＧ１０：  Ｓｕｇｇｅｓｔｅｄ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｐａｌｅｔｔｅ  Ｃｏｄｉｎｇ  ｂａｓｅｄ  ｏｎ  ＲＥｘｔ６．０」、ＪＣＴＶＣ−Ｑ００９４、バレンシア、スペイン、２０１４年３月２７日〜４月４日（以下、ＪＣＴＶＣ−Ｑ００９４）に記載されているように、パレットは、予測子パレット(predictor palette)からコピーされたエントリを含み得る。予測子パレットは、パレットモードを使用して以前コード化されたブロックまたは他の再構成されたサンプルからのパレットエントリを含み得る。予測子パレットは、以前コード化されたパレットの全部もしくは一部を使用し得るか、またはいくつかの以前コード化されたパレットのエントリから作成され得る。
【００２８】
[0037]  いくつかの例では、予測子パレット中の各エントリについて、フラグに関連するエントリが現在のパレットにコピーされる（例えば、フラグ＝１によって示される）かどうかを示すためにバイナリフラグがコード化され得る。バイナリフラグのストリングはバイナリパレット予測ベクトルと呼ばれることがある。現在のブロックをコーディングするためのパレットはまた、（例えば、パレット予測ベクトルとは別個に）明示的にコード化され得る、新しいパレットエントリの数を含み得る。新しいエントリの数の指示もコーディングされ得る。予測エントリと新しいエントリとの和はブロックの全パレットサイズを示し得る。
【００２９】
[0038]  提案されたＪＣＴＶＣ−Ｑ００９４のように、パレットベースコーディングモードでコード化されるブロック中の各サンプルは、以下に記載されるように、３つのパレットモードのうちの１つを使用してコード化され得る。
エスケープモード：このモードにおいて、サンプル値はパレットエントリとしてパレット中に含められず、量子化されたサンプル値が全ての色成分について明示的にシグナリングされる。それは新しいパレットエントリのシグナリングと同様であるが、新しいパレットエントリについて、色成分値は量子化されない。
コピーモード（ＣｏｐｙＦｒｏｍＴｏｐモードまたはＣｏｐｙＡｂｏｖｅモードとも呼ばれる）：このモードにおいて、現在のサンプルのためのパレットエントリインデックスは、ブロック中で直接上方に位置するサンプルからコピーされる。
ランモード（インデックスモード、値モード、または左からのコピーモードとも呼ばれる）：このモードにおいて、パレットエントリインデックスの値は明示的にシグナリングされる。同じ値を有する後続の連続するインデックスの数の数のランもシグナリングされ得る。
【００３０】
[0039]  本明細書で説明するパレットエントリインデックス(palette entry index)は、パレットインデックスと呼ばれるかまたは単にインデックスと呼ばれることがある。これらの用語は、本開示の技法について説明するために同義で使用され得る。さらに、以下でより詳細に説明するように、パレットインデックスは、１つまたは複数の関連する色値または強度値を有し得る。例えば、パレットインデックスは、ピクセルの単一の色成分または強度成分（例えば、ＲＧＢデータの赤成分、ＹＵＶデータのＹ成分など）に関連する単一の関連する色値または強度値を有し得る。別の例において、パレットインデックスは、複数の関連する色値または強度値を有し得る。いくつかの事例において、パレットベースコーディングはモノクロームビデオをコーディングするために適用され得る。従って、「色値」は、一般に、ピクセル値を生成するために使用されるどんな色成分または非色成分をも指し得る。
【００３１】
[0040]  コピーモードおよびランモードでは、ラン値（単にランと呼ばれることもある）もシグナリングされ得る。ラン値は、一緒にコード化される、パレットコード化ブロック(palette-coded block)中の特定の走査順序で連続するサンプル（例えば、サンプルのラン）の数を示し得る。いくつかの事例において、ランの各サンプルはパレットへの関連するインデックスを有するので、サンプルのランはパレットインデックスのランと呼ばれることもある。
【００３２】
[0041]  ラン値は、同じパレットコーディングモードを使用してコード化されるパレットインデックスのラン(a run of palette indices)を示し得る。例えば、ランモードに関して、ビデオコーダ（ビデオエンコーダまたはビデオデコーダ）は、パレットインデックス（パレットインデックス値または単にインデックス値とも呼ばれる）と、同じパレットインデックスを有しそのパレットインデックスでコード化されている、走査順序で連続するサンプルの数を示すラン値とをコーディングし得る。コピーモードに関して、ビデオコーダは、上方に近隣するサンプル（例えば、ブロック中の現在コード化されているサンプルの上方にあるサンプル）のインデックスと、上方に近隣するサンプルからパレットインデックスをやはりコピーしそのパレットインデックスでコード化されている、走査順序で連続するサンプルの数を示すラン値とに基づいて、現在のサンプル値のためのインデックスがコピーされるという指示をコーディングし得る。従って、上記の例において、パレットインデックスのランは、同じ値を有するパレットインデックスのラン、または上方に近隣するパレットインデックス(above-neighboring palette indices)からコピーされたパレットインデックスのランを指す。
【００３３】
[0042]  従って、ランは、所与のモードについて、同じモードに属する後続のサンプルの数を指定し得る。いくつかの事例において、インデックスとラン値とをシグナリングすることはランレングスコーディング(run length coding)と同様であり得る。説明のための一例において、ブロックの連続するインデックスのストリングは０、２、２、２、２、５であり得る（例えば、ここで、各インデックスはブロック中のサンプルに対応する）。この例において、ビデオコーダは、ランモードを使用して第２のサンプル（例えば、２の第１のインデックス値）をコーディングし得る。２に等しいインデックスをコーディングした後に、ビデオコーダは、３つの後続のサンプルも２の同じインデックス値を有することを示す、３のランをコーディングし得る。同様にして、コピーモードを使用してインデックスをコーディングした後に４のランをコーディングすることは、現在コード化されているサンプル位置の上方の行中の対応するインデックスから合計５つのインデックスがコピーされることを示し得る。
【００３４】
[0043]  以下でより詳細に説明するように、ビデオコーダ（例えば、ビデオエンコーダおよびビデオデコーダ）は、サンプルがサンプルごとにエスケープサンプル(escape samples)としてコード化される(coded)かどうかを示すデータを符号化(encode)または復号(decode)し得る。エスケープサンプル（エスケープピクセル(escape pixels)とも呼ばれる）は、ブロックをコーディングするためのパレット中に表される対応する色を有しないブロックのサンプル（またはピクセル）であり得る。従って、エスケープサンプルは、パレットからの色エントリ（またはピクセル値）を使用して再構成されないことがある。代わりに、エスケープサンプルの色値は、パレットの色値とは別個にビットストリーム中でシグナリングされる。一般に、「エスケープモード」を使用してサンプルをコーディングすることは、一般に、ブロックをコーディングするためのパレット中に表される対応する色を有しないブロックのサンプルをコーディングすることを指し得る。上述したように、そのようなサンプルはエスケープサンプルまたはエスケープピクセルと呼ばれることがある。
【００３５】
[0044]  いくつかの例において、ビデオコーダは、サンプルがエスケープサンプルとしてコード化されるかどうかを示す各サンプルのためのフラグ（この技法は明示的エスケープシグナリングと呼ばれることがある）と、それに続いてエスケープサンプル値とをコーディングし得る。別の例において、ビデオコーダは、特定のサンプルがエスケープサンプルとしてコード化されることを示すためのパレットのための追加のインデックス値をコーディングし得る（この技法は暗黙的エスケープシグナリング(implicit escape signaling)と呼ばれることがある）。
【００３６】
[0045]  本開示は、パレットベースビデオコーディングに関係する様々な技法について説明する。いくつかの態様において、本開示は、パレットベースコーディングの新しいモード、すなわち、「前の行からのコピー」モードのための技法を含む。例えば、本開示は、パレットベースビデオコーディングの既存のモード（例えば、ランモード、コピーモードまたはエスケープモードなどが上記で説明する）に前の行からのコピーモードを追加することをサポートし得る。本明細書で説明する前の行からのコピーモードは、既存のパレットベースコーディングモードと比較して拡張されたパレットベースコーディング能力を（ビデオエンコーダまたはビデオデコーダなどの）ビデオコーディングデバイスに提供し得る。
【００３７】
[0046]  例えば、上述の前の行からのコピーモードは、ビデオコーダ（例えば、ビデオエンコーダまたはビデオデコーダ）が、ブロック中で現在コード化されているインデックスのラインに直接隣接しないインデックスのラインから１つまたは複数のインデックスをコピーすることを可能にし得る。一例において、ビデオコーディングデバイスは、ビデオデータのブロック(a block of video data)を復号するためのパレット(a palette)を決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセル(first pixels of the block of video data)のためのパレットインデックスの参照ラン(a reference run of palette indices)を決定することと、参照ランに基づいてビデオデータのブロックの第２のピクセル(second pixels of the block of video data)のためのパレットインデックスの現在のラン(a current run of palette indices)を決定することとを行い得る。より具体的には、現在のランを決定するために、ビデオコーディングデバイスは、参照インデックス(a reference index)が現在のランの最初のインデックス(the initial index of the current run)から少なくとも１つのライン離間するように、参照ラン中に含まれる参照インデックスを位置特定し得る。さらに、ビデオコーディングデバイスは参照ランのランレングス(a run length of the reference run)を決定し得、ここで、参照ランの最後のインデックス(a final index of the reference run)は、ブロック中で現在のランの最初のインデックスから少なくとも１つのインデックスだけ離れる。ビデオコーディングデバイスは、参照ラン中に含まれるインデックスをパレットインデックスの現在のランとしてコピーし、パレットを使用してパレットインデックスのコピーされた現在のランにマッピングされたブロックのピクセルをコーディングし得る。
【００３８】
[0047]  従って、いくつかの例において、前の行からのコピーモード(the copy from previous rows mode)は、インデックスをコーディングするときの追加のフレキシビリティを提供し得、それによりコーディング効率が改善され得る。いくつかの例において、本明細書で説明する技法は、コピーモードによって提供される潜在的参照ピクセル(potential reference pixels)上の冗長性を低減するかまたは潜在的になくすために、潜在的参照ピクセルの範囲（または「ダイナミックレンジ」）を制約し得る。例えば、本技法は、以前コード化されたピクセルの特定の行が、現在のピクセルのための全ての可能な参照ピクセルランとは異なるランに属する状況を識別し得る。この例において、本技法は、コーディングデバイスが、参照インデックスの探索範囲(a search range for the reference index)から特定の行を先制してなくす(preemptively eliminate)ことを可能にし、それにより、プロセッサクロックサイクルおよびメモリアクセスなどのコンピューティングリソースが節約され得る。従って、本開示の技法は、ビデオコーディングデバイスがコンピューティングリソースを効率的な方法で利用することを可能にしながら既存のパレットベースコーディング技術を改善し得る。
【００３９】
[0048]  本開示の他の態様は、ピクセルのために使用される特定のパレットコーディングモードを識別する情報をコーディングするための技法を含む。例えば、本技法は、ビデオコーディングデバイスが、本明細書で説明する前の行からのコピーモードを含めて、様々なパレットコーディングモードの各々を識別するためにユニーク切捨単項コードワード(a unique truncated unary codeword)を使用することを可能にする。本明細書で開示する技法の様々な実施形態によれば、ビデオコーディングデバイスは、パレットコード化ブロックのピクセル(a pixel of a palette-coded block)のために使用される特定のパレットベースコーディングモード(a particular palette-based coding mode)を識別するためにコード化される切捨単項コードワードの１つまたは複数のビンに対応するコンテキストを導出し得る。
【００４０】
[0049]  いくつかの例において、本技法は、ビデオコーディングデバイスが、パレットコード化ブロックのためにいくつの異なる切捨単項コードワードがコード化されるべきかを決定するためにブロックのためのパレットのサイズを使用することを可能にし得る。パレットサイズが所定のしきい値サイズ内であるシナリオにおいて、ビデオコーディングデバイスは、シングルビットで表され得る範囲内になるように切捨単項コードワードの数を限定するように本技法を実施し得る。このようにして、本技法は、ビデオコーディングデバイスが、パレットコード化ブロックのためのパレットのサイズに基づいてコンピューティングリソースを節約し、ビットレート要件を低減することを可能にし得る。
【００４１】
[0050]  本開示のいくつかの態様は、パレットインデックスのランレングスコーディングの効率を高めることを意図する。例えば、既存のパレットベースコーディング技法によれば、ランレングスは明示的にコード化され、符号化ビデオビットストリーム中でシグナリングされ得る。しかしながら、ランレングスの明示的シグナリングは潜在的な非効率性を生じ得る。例えば、比較的長いランレングスは、明示的にシグナリングするために比較的大きいビット数を必要とし得る。ランレングスコーディングに関連するビットレート要件を緩和するために、本開示の技法は、ランレングスをコーディングするときにランレングス制約を課すことを含み得る。ランレングス制約は、特定のパレットモードと併せて適用され得る。例えば、本技法は、参照ランと現在のランとの間のマッチングランレングスがランレングスしきい値を満たすか否かに基づいて、パレットベースビデオコーディングのために特定のパレットモード（例えば、本明細書で説明する前の行からのコピーモード）を有効化することを含み得る。
【００４２】
[0051]  説明のための一例において、ビデオコーディングデバイスは、モードのランレングスがしきい値に等しいかまたはそれよりも大きいと決定することに基づいて、前の行からのコピーモードを有効化し得る。この例において、ビデオエンコーダは、実際のマッチングランレングスとしきい値との間の差分を符号化し、送信し得る。以下でさらに詳細に説明するように、最小のランしきい値が変数「Ｔ」によって示される場合、ビデオエンコーダは、「Ｋ」によって示される差分値をビットストリーム中で１つまたは複数のビデオデコーダに送信し得る。この例において、Ｋ＝（Ｎ−Ｔ）、ここで、Ｎは実際のマッチングランレングスである。対応して、Ｋの値を受信したビデオデコーダは、以下の式を解くことによって、実際のマッチングランレングスＮを導出し得る：Ｎ＝Ｋ＋Ｔ。従って、上記の例では、ランレングスを示すために（例えば、しきい値なしのコーディングに対して）より少ないビット数が使用され得る。従って、本開示の技法は、いくつかの例において、以下でより詳細に説明するように、いくつかのパレットコーディングモードでランレングスをコーディングするときの効率を改善し得る。
【００４３】
[0052]  公開された米国特許出願公開第２０１４／０３０１４７５号およびそれの相対物である国際特許出願第ＰＣＴ／ＵＳ２０１４／３３０１９号は、パレットベースビデオコーディング技法について説明している。いくつかの例において、本開示の技法は、そのような文献において説明されている１つまたは複数の技法の拡張として使用され得る。
【００４４】
[0053]  図１は、本開示の技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示において、「ビデオコーディング」または「コーディング」という用語は、総称的にビデオ符号化またはビデオ復号を指すことがある。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明する様々な例に従ってパレットベースビデオコーディングのための技法を行うように構成され得るデバイスの例を表す。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵなど、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、ＨＥＶＣドラフト１０によって規定される様々なコーディングモードなど、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００４５】
[0054]  図１に示されているように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は符号化ビデオデータを生成する。従って、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化ビデオデータを復号し得る。従って、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００４６】
[0055]  ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（例えば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００４７】
[0056]  宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化ビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動することが可能な１つまたは複数の媒体またはデバイスを備え得る。一例において、チャネル１６は、ソースデバイス１２が符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする１つまたは複数の通信媒体を備え得る。この例において、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス１４に送信し得る。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路など、ワイヤレスおよび／またはワイヤード通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（例えば、インターネット）など、パケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を可能にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００４８】
[0057]  別の例において、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例において、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００４９】
[0058]  さらなる例において、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例において、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、（例えば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブがある。
【００５０】
[0059]  宛先デバイス１４は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続としては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００５１】
[0060]  本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例において、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの適用例をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００５２】
[0061]  図１に示されているビデオコーディングシステム１０は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定（例えば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および／またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例において、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって行われる。
【００５３】
[0062]  図１の例において、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例において、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、例えばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００５４】
[0063]  ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化し得る。いくつかの例において、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化ビデオデータを直接送信する。他の例において、符号化ビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【００５５】
[0064]  図１の例において、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例において、入力インターフェース２８は受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化ビデオデータを受信し得る。ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るか、またはその外部にあり得る。一般に、ディスプレイデバイス３２は復号ビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスを備え得る。
【００５６】
[0065]  本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０などの別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで行われ得る。代替的に、そのような通信は、符号化時に符号化ビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。従って、ビデオデコーダ３０は、ある情報を「受信する」ものとして参照され得るが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで行われるとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【００５７】
[0066]  ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェア、またはそれらの任意の組合せなどの様々な好適な回路のいずれかとして実施され得る。本技法が部分的にソフトウェアで実施される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を行い得る。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組合せなどを含む）上記のいずれも、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００５８】
[0067]  いくつかの例において、ビデオエンコーダ２０およびビデオデコーダ３０は、上記で言及されＨＥＶＣドラフト１０に記載されたＨＥＶＣ規格など、ビデオ圧縮規格に従って動作する。ベースＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。さらに、例えば本開示で説明するような、パレットベースコーディングモードが、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例において、パレットベースコーディングのための本開示で説明する技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格または将来の規格など、他のビデオコーディング規格に従う動作のために構成されるエンコーダおよびデコーダに適用され得る。従って、例として、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースコーディングモードの適用例について説明する。
【００５９】
[0068]  ＨＥＶＣおよび他のビデオコーディング規格において、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと示される、３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例において、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００６０】
[0069]  ピクチャの符号化表現を生成するために、ビデオエンコーダ２０は、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの２つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。コーディングツリーブロックはサンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）と呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなどの他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査において連続的に順序付けられた整数個のＣＴＵを含み得る。コード化スライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコード化ＣＴＵを含み得る。
【００６１】
[0070]  本開示は、サンプルの１つまたは複数のブロックのサンプルをコーディングするために使用される１つまたは複数のサンプルブロックとシンタックス構造とを指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックとしては、ＣＴＵ、ＣＵ、ＰＵ、変換ユニット（ＴＵ）、マクロブロック、マクロブロックパーティションなどがあり得る。いくつかのコンテキストにおいて、ＰＵの説明は、マクロブロックまたはマクロブロックパーティションの説明と交換され得る。
【００６２】
[0071]  コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するために、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に行い得、従って「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイ、ＣｂサンプルアレイおよびＣｒサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロックと、クロマサンプルの２つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの長方形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ピクチャのルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、それらの予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロックおよびＣｒ予測ブロックのための予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックを生成し得る。
【００６３】
[0072]  ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号サンプルに基づいてＰＵの予測ブロックを生成し得る。
【００６４】
[0073]  ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいてＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測または双予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために単予測を使用するとき、ＰＵは単一の動きベクトル（ＭＶ）を有し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００６５】
[0074]  ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測ブロック（例えば、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック）を生成した後に、ビデオエンコーダ２０は、ＣＵの残差ブロックを生成し得る。ＣＵの残差ブロック中の各サンプルは、ＣＵのＰＵの予測ブロック中のサンプルと、ＣＵのコーディングブロック中の対応するサンプルとの間の差分を示し得る。例えば、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つの中のルーマサンプルと、ＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０は、ＣＵのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０はまた、ＣＵのＣｒ残差ブロックを生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００６６】
[0075]  さらに、ビデオエンコーダ２０は、ＣＵの残差ブロック（例えば、ルーマ残差ブロック、Ｃｂ残差ブロックおよびＣｒ残差ブロック）を１つまたは複数の変換ブロック（例えば、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック）に分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの長方形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。従って、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００６７】
[0076]  ビデオエンコーダ２０は、ＴＵのための係数ブロックを生成するために、変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは、変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。例えば、ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００６８】
[0077]  係数ブロック（例えば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は係数ブロックを量子化し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素をエントロピー符号化得る。例えば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を行い得る。ビデオエンコーダ２０は、エントロピー符号化シンタックス要素をビットストリーム中に出力し得る。ビットストリームはまた、エントロピー符号化されないシンタックス要素を含み得る。
【００６９】
[0078]  ビデオエンコーダ２０は、エントロピー符号化シンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワークアブストラクションレイヤ（ＮＡＬ：network abstraction layer）ユニットのシーケンスを備え得る。ＮＡＬユニットの各々はＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ：raw byte sequence payload）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例において、ＲＢＳＰは０ビットを含む。
【００７０】
[0079]  異なるタイプのＮＡＬユニットは異なるタイプのＲＢＳＰをカプセル化し得る。例えば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ：picture parameter set）のためのＲＢＳＰをカプセル化し得、第２のタイプのＮＡＬユニットは、コード化スライスのためのＲＢＳＰをカプセル化し得、第３のタイプのＮＡＬユニットは補足エンハンスメント情報（ＳＥＩ：supplemental enhancement information）のためのＲＢＳＰをカプセル化し得、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰではなく）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれることがある。
【００７１】
[0080]  ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ３０は、ビットストリームからシンタックス要素を取得し得る。例えば、ビデオデコーダ３０は、ビットストリームをパースして、ビットストリームからシンタックス要素を復号し得る。ビデオデコーダ３０は、ビットストリームから取得（例えば、復号）されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、一般に、ビデオエンコーダ２０によって行われるプロセスの逆であり得る。
【００７２】
[0081]  例えば、ビデオデコーダ３０は、現在のＣＵのＰＵのための予測サンプルブロック（すなわち、予測ブロック）を決定するためにＰＵのＭＶを使用し得る。さらに、ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられる変換ブロックを再構成するために、変換係数ブロックに対して逆変換を行い得る。ビデオデコーダ３０は、現在のＣＵのＰＵのための予測サンプルブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構成し得る。ピクチャの各ＣＵのコーディングブロックを再構成することによって、ビデオデコーダ３０はピクチャを再構成し得る。
【００７３】
[0082]  いくつかの例において、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースコーディングを行うように構成され得る。例えば、パレットベースコーディングにおいて、上記で説明したイントラ予測コーディング技法またはインター予測コーディング技法を行うのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定のエリア（例えば、所与のブロック）のビデオデータを表す色またはピクセル値のテーブルとして、いわゆるパレットをコーディングし得る。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の１つまたは複数のためのインデックス値をコーディングし得、ここで、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリを示す。
【００７４】
[0083]  例えば、ビデオエンコーダ２０は、ブロックのためのパレットを決定することと、ブロックの１つまたは複数の個々のピクセルの値を表す値を有するパレット中のエントリを位置特定することと、ブロックの１つまたは複数の個々のピクセル値を表すために使用されるパレット中のエントリを示すインデックス値でブロックを符号化することとによって、ビデオデータのブロックを符号化し得る。さらに、ビデオエンコーダ２０は、符号化ビットストリーム中でインデックス値をシグナリングし得る。次に、ビデオ復号デバイス（例えば、ビデオデコーダ３０）は、符号化ビットストリームから、ブロックのためのパレット、並びにパレットを使ってブロックの様々な個々のピクセルを決定するために使用されるインデックス値を取得し得る。ビデオデコーダ３０は、ブロックのピクセル値を再構成するために、個々のピクセルのインデックス値をパレットのエントリとマッチングし得る。個々のピクセルに関連付けられたインデックス値が、ブロックのための対応するパレットのどのインデックス値ともマッチングしない事例において、ビデオデコーダ３０は、そのようなピクセルを、パレットベースコーディングの目的のために、エスケープピクセルとして識別し得る。
【００７５】
[0084]  別の例において、ビデオエンコーダ２０は、以下の動作に従ってビデオデータのブロックを符号化し得る。ビデオエンコーダ２０は、ブロックの個々のピクセルについての予測残差値を決定し、ブロックのためのパレットを決定し、個々のピクセルの予測残差値のうちの１つまたは複数の値を表す値を有する、パレット中のエントリ（例えば、インデックス値）を位置特定し得る。さらに、ビデオエンコーダ２０は、ブロックの各個々のピクセルについての対応する予測残差値を表すために使用される、パレット中のエントリを示すインデックス値でブロックを符号化し得る。ビデオデコーダ３０は、ソースデバイス１２によってシグナリングされた符号化ビットストリームから、ブロックのためのパレット、並びにブロックの個々のピクセルに対応する予測残差値のためのインデックス値を取得し得る。説明したように、インデックス値は、現在のブロックに関連付けられたパレット中のエントリに対応し得る。次に、ビデオデコーダ３０は、ブロックの予測残差値を再構成するために、予測残差値のインデックス値をパレットのエントリに関連付け得る。予測残差値は、ブロックのピクセル値を再構成するために、（例えば、イントラ予測またはインター予測を使用して取得された）予測値に加算され得る。
【００７６】
[0085]  ビデオエンコーダ２０は、現在のブロック中で最も支配的なピクセル値を含むパレットを導出し得る。例えば、パレットは、現在のＣＵについて支配的でありおよび／またはそれを表すと決定または仮定される、いくつかのピクセル値を指し得る。ビデオエンコーダ２０は、最初に、パレットのサイズと要素とをビデオデコーダ３０に送信し得る。さらに、ビデオエンコーダ２０は、ある走査順序に従って、所与のブロック中のピクセル値を符号化し得る。所与のブロック中に含まれる各ピクセルについて、ビデオエンコーダ２０は、ピクセル値をパレット中の対応するエントリにマッピングするインデックス値をシグナリングし得る。ピクセル値がパレット中に含まれない（すなわち、パレットコード化ブロックの特定のピクセル値を指定するパレットエントリが存在しない）場合、そのようなピクセルは「エスケープピクセル」として定義される。パレットベースコーディングに従って、ビデオエンコーダ２０は、エスケープピクセルのために予約されたインデックス値を符号化し、シグナリングし得る。いくつかの例において、ビデオエンコーダ２０はまた、所与のブロック中に含まれるエスケープピクセルについてのピクセル値もしくは残差値（またはそれの量子化バージョン）を符号化し、シグナリングし得る。
【００７７】
[0086]  ビデオエンコーダ２０によってシグナリングされた符号化ビデオビットストリームを受信すると、ビデオデコーダ３０は、最初に、ビデオエンコーダ２０から受信された情報に基づいてパレットを決定し得る。ビデオデコーダ３０は、次いで、所与のブロックのピクセル値を再構成するために、所与のブロック中のピクセルロケーションに関連付けられる、受信されたインデックス値をパレットのエントリにマッピングし得る。いくつかの事例において、ビデオデコーダ３０は、エスケープピクセルのために予約されたインデックス値でピクセルがパレットコード化されていると決定することなどによって、パレットコード化ブロックのピクセルがエスケープピクセルであると決定し得る。ビデオデコーダ３０が、パレットコード化ブロック中のエスケープピクセルを識別する事例において、ビデオデコーダ３０は、所与のブロック中に含まれるエスケープピクセルについてのピクセル値もしくは残差値（またはそれの量子化バージョン）を受信し得る。ビデオデコーダ３０は、個々のピクセル値を対応するパレットエントリにマッピングすることによって、およびパレットコード化ブロック中に含まれるいずれかのエスケープピクセルを再構成するためにピクセル値もしくは残差値（またはそれの量子化バージョン）を使用することによって、パレットコード化ブロックを再構成し得る。
【００７８】
[0087]  いくつかの例において、ビデオエンコーダ２０は、一緒にコード化される、所与の走査順序のいくつかの連続するピクセルを示す１つまたは複数のシンタックス要素を符号化し得る。例えば、上述したように、ラン値は、一緒にコード化される、パレットコード化ブロック中の特定の走査順序の、連続するサンプル（例えば、サンプルのラン）の数、または連続するインデックス（例えば、インデックスのラン）の数、またはサンプルとインデックスとの任意の組合せを示し得る。いくつかの事例において、ラン値は、同じパレットコーディングモードを使用してコード化されるパレットインデックスのランを示し得る。
【００７９】
[0088]  いくつかの例において、ピクセル値は、パレット中のちょうど１つのインデックス値に関連付けられ得る。従って、いくつかの事例において、値のランは、同様の値のピクセル値のストリングをも指し得る。他の例では、以下で不可逆コーディングに関して説明するように、２つ以上のピクセル値が、パレット中の同じインデックス値にマッピングされ得る。そのような例において、値のランは、同様の値のインデックス値を指す。
【００８０】
[0089]  説明のための一例では、所与の走査順序の２つの連続するインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するインデックスが同じ値を有するが、その走査順序の３番目のインデックスが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化ビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続するピクセルロケーションの数を決定し得る。
【００８１】
[0090]  追加または代替として、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、マップの１つまたは複数のエントリについてラインコピーを行い得る。エントリはまた、マップのエントリとブロックのピクセル位置との関係により、「位置」と呼ばれることもある。ラインコピーは、いくつかの例において、走査方向に依存し得る。本明細書で説明する「ライン」は、一般に、ブロックの走査順序に応じて、ブロックの行またはブロックの列を指し得る。
【００８２】
[0091]  例えば、ビデオエンコーダ２０は、ブロック中の特定の位置のためのピクセル値またはインデックスマップ値が、（水平方向の走査では）その特定の位置の上方のラインにおける、または（垂直方向の走査では）その特定の位置の左側の列における、ピクセルまたはインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定の位置の上方または左側の列の対応するピクセル値またはインデックス、に等しい、走査順序でのピクセル値またはインデックスの数を、ランとして示し得る。この例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、規定された近隣するラインから、および現在コード化されているブロックのラインのための規定数のエントリから、ピクセルまたはインデックス値をコピーし得る。
【００８３】
[0092]  いくつかの事例において、本開示の態様によれば、値のコピー元のラインは、現在コード化されている位置のラインに直接隣接し得、例えばそのラインの上方または左側にあり得る。他の例では、本開示の態様によれば、ブロックのある数のラインが、ビデオエンコーダ２０および／またはビデオデコーダ３０によってバッファリングされ得、従って、マップのその数のラインのいずれかが、現在コード化されているマップのラインのための予測値として使用され得る。説明のための一例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ピクセルの現在の行をコーディングする前に、インデックスまたはピクセル値の以前の４つの行を記憶するように構成され得る。この例において、予測行（インデックスまたはピクセル値のコピー元の行）は、切捨単項コードまたは単項コードなどの他のコードによって、ビットストリームにおいて示され得る。切捨単項コードに関して、ビデオエンコーダ２０および／またはビデオデコーダ３０は、最大行計算（例えば、ｒｏｗ＿ｉｎｄｅｘ−１）または最大列計算（例えば、ｃｏｌｕｍｎ＿ｉｎｄｅｘ−１）に基づいて、切捨単項コードの最大値を決定し得る。さらに、コピーされる、予測行からの位置の数の指示も、ビットストリーム中に含まれ得る。いくつかの例では、現在の位置の予測元のラインまたは列が別のブロック（例えば、ＣＵまたＣＴＵ）に属する場合、そのような予測は無効にされ得る。
【００８４】
[0093]  本開示の技法は、パレットベースビデオコーディングモード、すなわち、上記で導入された前の行からのコピーモードを提供することを意図する。より具体的には、本明細書で説明する技法は、ビデオエンコーダ２０およびビデオデコーダ３０が、パレットベースビデオコーディングのラン、コピー、およびエスケープモードをサポートすることとともに、前の行からのコピーモードをサポートすることを可能にする。パレットベースコーディングモードの既存のグループに関して、本開示の技法は、前の行からのコピーモードを含む、パレットベースコーディングモードの「拡張」セットを提供し得る。本開示のいくつかの態様は、パレットベースコーディングの前の行からのコピーモードのためのコーディングおよび導出技法を対象とし、他の態様は、前の行からのコピーモードを識別するための情報をサポートするモード識別情報のシグナリングを意図する。
【００８５】
[0094]  本開示の前の行からのコピーモードは、ビデオ符号化デバイス２０および／またはビデオ復号デバイス３０が、コード化されているピクセル（「現在」のピクセル）の複数の行上方に配置された参照ピクセルを活用するように前の行からのコピーモードを実施し得るという点で、既存のコピーモードとは異なる。さらに、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在コード化されているブロック中のピクセルの総数よりも小さい任意の数になるようにマッチングレングス(matching length)を決定し得る。
【００８６】
[0095]  前の行からのコピーモードに従ってパレットコード化ブロックのピクセルを符号化するために、ビデオエンコーダ２０は、現在のピクセルの複数の行上方に配置された参照ピクセルからパレットインデックスをコピーし得る。前の行からのコピーモードに従って符号化するいくつかの例において、ビデオエンコーダ２０は、参照ピクセルを、現在のピクセルと同じ列中にあり、現在のピクセルの複数の行上方に配置されたものとして識別し得る。言い換えれば、前の行からのコピーモードを使用してピクセルを符号化するために、ビデオエンコーダ２０は、現在のピクセルと同じ列中にあり、現在のピクセルの２つ以上の行上方に配置された参照ピクセルのインデックスをコピーし得る。
【００８７】
[0096]  さらに、パレットベースコーディングのための前の行からのコピーモードに従って、ビデオエンコーダ２０は、行インデックスを符号化し、行インデックスをビットストリーム（例えば、チャネル１６を介してシグナリングされる符号化ビデオビットストリーム）中に含め得る。従って、ビデオエンコーダ２０は、どの前の行が、前の行からのコピーモードに従って符号化された現在のピクセルのための参照ピクセルを含むのかをビデオデコーダ３０に示し得る。いくつかの例において、ビデオエンコーダ２０は、参照ピクセルにおいて開始して、ランレングスの指示を符号化し、そのランレングスをビデオデコーダ３０にシグナリングし得る。このようにして、ビデオエンコーダ２０は、ビデオデコーダ３０が、（参照ピクセルにおいて開始する）ラン全体の参照パレットインデックスを（現在のピクセルにおいて開始する）対応するランにコピーすることを可能にし得る。この例の態様について、参照ピクセルランのランと現在のピクセルのランとの間の「マッチングレングス」関して、以下でさらに詳細に説明する。
【００８８】
[0097]  次に、ビデオデコーダ３０は、ビデオエンコーダ２０によってシグナリングされた行インデックスを使用して前の行からのコピーモードに従って符号化されたピクセルを再構成し得る。例えば、ビデオデコーダ３０は、参照ピクセルを含む（例えば、再構成されているピクセルの行の２つ以上の行上方に配置された）行を識別するためにビデオエンコーダ２０によってシグナリングされた行インデックスを使用し得る。さらに、ビデオデコーダ３０は、現在のピクセルの左から右へのカウント（または列番号）が参照ピクセルの列番号にマッチングすると決定し得る。ビデオデコーダ３０は、参照ピクセルを識別するために行インデックスと列番号との交差を位置特定し得る。次に、ビデオデコーダ３０は、再構成されている現在のピクセルの色情報を決定するために、識別された参照ピクセルのパレットインデックスをコピーし得る。このようにして、ビデオエンコーダ２０およびビデオデコーダ３０は、単にブロック中の近隣するラインから近隣するインデックス値をコピーすることに対して、現在のピクセルのパレットインデックスのコピー元の潜在的参照ピクセルのより大きいプールを活用するように本開示の前の行からのコピーモードを実施し得る。
【００８９】
[0098]  いくつかの実施形態によれば、ビデオエンコーダ２０は、本開示の前の行からのコピーモードに従って、参照ピクセルを識別するために可能な行の数を制約し得る。参照ピクセルを識別するために可能な行の数は、本明細書では「範囲」または「ダイナミックレンジ」と呼ばれる。ビデオエンコーダ２０は、現在のピクセルのための参照ピクセルを識別するために前の行のダイナミックレンジを探索し得る。例えば、ビデオエンコーダ２０は、現在のピクセルが、変数「Ｔ」によって示される行中に配置されていると決定し得る。このシナリオにおいて、現在のピクセルのための許容できる行探索範囲は行０から行Ｔ−２にわたり、ここで、Ｔは２よりも大きいかまたはそれに等しい。この場合に探索されるべき行のダイナミックレンジは［０，Ｔ−２]によって示される。説明する例において、行０は、現在のブロック中のピクセルの最初の（または最上の）行を示し、行Ｔ−２は、現在符号化されているピクセルを含む行の２つの行上方に配置された行を示す。
【００９０】
[0099]  上記で説明したように、ビデオエンコーダ２０は、参照ピクセルを含むパレットコード化ブロックの特定の行を識別するために、（「ｉ」によって示される）行インデックスを符号化し得る。前の行からのコピーモードに従って符号化されたピクセルのための参照ピクセルがダイナミックレンジ［０，Ｔ−２］中にあるので、ｉは、［０，Ｔ−２］の範囲中に含んだ整数値を示す。ビデオエンコーダ２０は、行インデックスに対応するシンボル値を（Ｔ−２−ｉ）として符号化し得る。例えば、ビデオエンコーダ２０エンコーダ３０は、切捨単項コードワード、固定長コードワード、ゴロムライスコードワード、または指数ゴロムコードワードのいずれかを使用してシンボル値（Ｔ−２−ｉ）を符号化し得る。ゴロムライスコードワードの一例において、ビデオエンコーダ２０は、３のゴロムライスパラメータ値を使用し得る。ダイナミックレンジを限定することおよび／または特定のコードワードを使用して行インデックスの指示をコーディングすることによって、本開示の技法は、ひずみを実質的に生じることなしにビデオコーディングビットレート効率を改善し得る。
【００９１】
[0100]  ビデオデコーダ３０は、現在のピクセルを再構成するために逆の動作を行い得る。例えば、ビデオデコーダ３０は、上記で説明したように、符号化ビデオビットストリーム中でシンボル値（Ｔ−２−ｉ）を受信し、そのシンボル値を使用して、再構成されるべきピクセルのための参照ピクセルを位置特定し得る。次に、ビデオデコーダ３０は、参照ピクセルのパレットインデックスを使用して、現在のピクセルをそれで再構成すべきパレットエントリを選択し得る。シンボル値（Ｔ−２−ｉ）のための最大可能値はＴの値に関係する（例えば、直接比例する）。上記で説明した例において、シンボル値の最大値は、Ｔが２よりも大きいかまたはそれに等しい場合、Ｔ−２である。例えば、Ｔが２以上の値を有するとすれば、さらに、行インデックス「ｉ」が０のそれの最小可能値を有する場合、すると、（Ｔ−２−ｉ）のシンボル値計算はＴ−２に達する。
【００９２】
[0101]  他の例において、ビデオエンコーダ２０は、行のダイナミックレンジ（または「許容探索範囲」）を、［０，Ｔ−２］によって表されるより広い範囲のサブセットに制約し得る。例えば、ビデオエンコーダ２０は、ダイナミックレンジを行タプル［Ｎ１，Ｎ２］内に制約し得、ここで、Ｎ１およびＮ２の各々は、パレットコード化ブロック中のピクセルのそれぞれの行を表し、０＜＝Ｎ１＜＝Ｎ２＜＝Ｔ−２。言い換えれば、この例において、Ｎ２は（Ｔ−２）の値よりも小さいかまたはそれに等しく、Ｎ２はＮ１よりも大きいかまたはそれに等しい。Ｎ１は、今度は、この例では０よりも大きいかまたはそれに等しい。この例において、ビデオエンコーダ２０は、現在のピクセルから上向きに０番目の行に横断する許容探索行が、行Ｎ２から行（Ｎ１＋１）に進むようにダイナミックレンジを制約する。一例において、許容行範囲は行タプル［Ｎ１，Ｎ２］にわたり、ここで、Ｎ１は０に等しく、Ｎ２は０より大きく、（Ｔ−２）はＮ２よりも大きい（Ｎ１＝０およびＮ１＜Ｎ２＜Ｔ−２として表される）。
【００９３】
[0102]  本開示の態様による様々な例において、ビデオエンコーダ２０は、許容探索行のダイナミックレンジをビデオデコーダ３０にシグナリングし得る。上記で説明した行タプル［Ｎ１，Ｎ２］の例において、ビデオエンコーダ２０は、ビデオデータの様々なレベルで行Ｎ２から行（Ｎ１＋１）にわたるダイナミックレンジをシグナリングし得る。いくつかの非限定的な例として、ビデオエンコーダ２０は、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、スライスパラメータセットのうちの１つもしくは複数中で、またはコーディングユニット（ＣＵ）中でダイナミックレンジ情報をシグナリングし得る。ｉが［Ｎ１，Ｎ２］のダイナミックレンジ内の整数値を表す場合、行インデックスｉは、対応するシンボル値（Ｎ２−ｉ）を有する。ビデオエンコーダ２０は、固定長コードワード(fixed length codeword)、切捨単項コードワード(truncated unary codeword)、切捨バイナリコードワード(truncated binary codeword)、ゴロムライスコードワード(Golomb-Rice codeword)、または指数ゴロムコードワード(exponential Golomb codeword)のいずれかを使用してシンボル値（Ｎ２−１）を送信し得る。
【００９４】
[0103]  以下の表１は、Ｎ１＝０およびＮ２＝６のシナリオにおいて［Ｎ１，Ｎ２］のダイナミックレンジ内の行インデックスを符号化するためにビデオエンコーダ２０が使用し得る切捨単項コードワードの例を示す。いくつかの例において、参照行が現在の行（例えば、符号化されているピクセルを含む行）に比較的より近い場合、ビデオエンコーダ２０は、参照行インデックスを符号化するために比較的より短いコードワードを使用し得る。
【００９５】
【表１】
2017525230.tif 000003
【００９６】
[0104]  代替的に、ビデオエンコーダ２０は、行インデックスｉの値を示す情報をシグナリングするために切捨バイナリコードを使用し得る。切捨バイナリコードは、有限のアルファベットをもつ均一な確率分布のためにしばしば使用され、「ｎ」によって示される数の全サイズとともにアルファベットによってパラメータ化される。切捨バイナリコードは、ｎの値が２のべき乗でない場合、バイナリ符号化の一般化された形式として記述され得る。ｎが実際に２のべき乗である場合、０≦ｘ＜ｎのコード化値は、長さｌｏｇ2（ｎ）のｘのための単純なバイナリコードである。そうでない場合、２ｋ≦ｎ＜（２ｋ＋１）およびｕ＝２ｋ＋（１−ｎ）であるように、ｋ＝ｆｌｏｏｒ（ｌｏｇ2（ｎ））であり、ここで、ｕはｎの値よりも小さい値を表す。
【００９７】
[0105]  切捨バイナリコードに従って、ビデオエンコーダ２０またはビデオデコーダ３０などのコーディングデバイスは、最初のｕ個のシンボルに長さｋのコードワードを割り当て、次いで、残りの（ｎ−ｕ）個のシンボルに長さ（ｋ＋１）の最後の（ｎ−ｕ）個のコードワードを割り当てる。以下の表２は、ビデオエンコーダ２０が使用し得る切捨バイナリコードワードを示し、ｉ、ｎ＝５の一例。
【００９８】
【表２】
2017525230.tif 000004
【００９９】
[0106]  本開示の態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、行インデックス情報の冗長性を検出し、緩和（または潜在的に除去）し得る。例えば、参照行インデックスを符号化する際に、ビデオエンコーダ２０は、前の行からのコピーモードを使用して符号化された前のピクセルと比較して何らかの冗長な参照行インデックス情報を検出し得る。一例において、ビデオエンコーダ２０は、前のピクセルを、水平ラスタ走査順序で現在のピクセルの直前にくるピクセルとして識別し得る。ビデオエンコーダ２０が、識別された前のピクセルが本開示の前の行からのコピーモードに従って符号化されたと決定した場合、ビデオエンコーダ２０は、現在のピクセルについての参照行インデックス情報が、前のピクセルについての参照行インデックス情報に対して冗長であるかどうかを決定し得る。
【０１００】
[0107]  以下では、前のピクセルが、前の行からのコピーモードを使用して符号化され、対応する参照行インデックスのための（Ｎ２，ｐｒｅｖ−ｉｐｒｅｖ）のコード化シンボルを有する例について説明する。この例において、ビデオエンコーダ２０は、現在のピクセルが、前の行からのコピーモードに従って符号化された場合、それの参照行インデックスのために同じコード化シンボルを有することができないと決定し得る。言い換えれば、ビデオエンコーダ２０は、現在のピクセルも前の行からのコピーモードに従って符号化されるとすれば、現在のピクセルのための参照行インデックスコード化シンボル（Ｎ２，ｃｕｒ−ｉｃｕｒ）が、前のピクセルのための参照行インデックス（Ｎ２，ｐｒｅｖ−ｉｐｒｅｖ）とは異なると決定し得る。
【０１０１】
[0108]  変数「ｉｐｒｅｖ」および「ｉｃｕｒ」は、上記で説明した例において、現在のブロック中の実際の参照行インデックス値を表す。このようにして、ビデオエンコーダ２０は、前の行からのコピーモードを使用して現在のピクセルと前のピクセルの両方が符号化される場合、現在のブロックの参照行インデックスコーディング中に１つの可能な行インデックスを除外し得る。より具体的には、現在のピクセルのための参照行インデックスを符号化する際に、ビデオエンコーダ２０は、前のピクセルに割り当てられた参照行インデックス、すなわち、シンボル値（Ｎ２，ｐｒｅｖ−ｉｐｒｅｖ）によって記述される参照行インデックスを除外し得る。前の行からのコピーモードに従って現在のピクセルのための参照行インデックスをビデオエンコーダ２０がそれによって符号化し得る技法の特定の実施形態について以下で説明する。
【０１０２】
[0109]  本明細書で説明する冗長性低減技法のいくつかの実施形態によれば、ビデオエンコーダ２０は、現在のピクセルと前の（水平ラスタ走査順序で直前の）ピクセルの両方が前の行からのコピーモードで符号化される場合、現在のピクセルのための参照行インデックスをコーディングするために以下の手順を行い得る。
【０１０３】
[0110]  ビデオエンコーダ２０は、前のピクセルのためのコード化参照行シンボルを示すためにＲｅｆＣｏｄｅｄＲｏｗＩｄｘ＝（Ｎ２，ｐｒｅｖ−ｉｐｒｅｖ）を符号化し得、現在のピクセルのための利用可能な参照行の数を示すためにＴｏｔａｌＲｏｗＮｕｍ＝（Ｎ２，ｃｕｒ−Ｎ１，ｃｕｒ＋１）を符号化し得る。さらに、ビデオエンコーダ２０は、以下のコードに従って、ＣｕｒＣｏｄｅｄＲｏｗＩｄｘとして示される、現在のピクセルのためのコード化行インデックスシンボルを導出し得る。
【０１０４】
【数１】
2017525230.tif 000005
【０１０５】
ここで、ＥｎｔｒｏｐｙＣｏｄｉｎｇＦｕｎｃｔｉｏｎ（ＣｕｒＣｏｄｅｄＲｏｗＩｄｘ，ＴｏｔａｌＲｏｗＮｕｍ）は、例えば、切捨バイナリ、または切捨単項、または固定長、または指数ゴロムを利用するエントロピーコーディング方法である。
【０１０６】
[0111]  ビデオデコーダ３０も本開示の冗長性低減技法を実施し得る。例えば、ビデオデコーダ３０が、再構成されるべき現在のピクセル、並びに前の（一例として、水平ラスタ走査順序で直前の）ピクセルの両方が前の行からのコピーモードに従って符号化されると決定した場合、ビデオデコーダ３０は、以下で説明する非限定的で例示的な実施形態に従って現在のピクセルの参照行インデックスを復号し得る。
【０１０７】
[0112]  ビデオデコーダ３０は、ＲｅｆＣｏｄｅｄＲｏｗＩｄｘ、前のピクセルのための既に復号された参照行シンボルを符号化し得、現在のピクセルのための可能な利用可能な参照行の数としてＴｏｔａｌＲｏｗＮｕｍ＝（Ｎ２，ｃｕｒ−Ｎ１，ｃｕｒ＋１）を符号化し得る。さらに、ビデオデコーダ３０は、ＣｕｒＣｏｄｅｄＲｏｗＩｄｘとして示される、現在のピクセルのための行インデックスシンボルを導出し得、以下のコードに従って導出される。
【０１０８】
【数２】
2017525230.tif 000006
【０１０９】
ここで、ＥｎｔｒｏｐｙＤｅｃｏｄｉｎｇＦｕｎｃｔｉｏｎ（ＣｕｒＣｏｄｅｄＲｏｗＩｄｘ，ＴｏｔａｌＲｏｗＮｕｍ）は、シンボルを復号するために切捨バイナリ、または切捨単項、または固定長、または指数ゴロムを利用するエントロピー復号方法である。参照行インデックスは、値ｉｃｕｒ＝Ｎ２，ｃｕｒ−ＣｕｒＣｏｄｅｄＲｏｗＩｄｘを使用して取得される。
【０１１０】
[0113]  ビデオエンコーダ２０は、前の行からのコピーモードを使用して符号化されたパレットコード化ブロックのためのマッチングレングスを符号化し得る。いくつかの例において、ビデオエンコーダ２０は、ビットストリーム中でマッチングレングスをシグナリングし得、それにより、ビデオデコーダ３０は、パレットコード化ブロックのためのマッチングレングスを取得することが可能になる。本明細書で使用する、パレットコード化ブロックのマッチングレングスは、ピクセル差分に関して、まだコード化されていない連続するピクセルにマッチングする連続する参照ピクセル（以前コード化された領域中の）の数を指す。一例において、以前コード化された領域は、参照ピクセルのための以下の一連の値を含み得る：［２３，２５，６８，２３３］。この例において、まだ符号化されていないピクセルの領域は、「現在」のピクセルのための以下の一連の値を含む：［１１，２３，２５，６８，２３３，１５］。
【０１１１】
[0114]  示されているように、現在のピクセルシリーズの４つの連続するピクセルは、一連の以前コード化された参照ピクセルに（値および順序において）マッチングする。従って、ビデオエンコーダ２０は、現在のパレットコード化ブロックのマッチングレングスが４に等しいと決定し得る。一般に、ブロックのマッチングレングスは、異なる一連の参照マッチングピクセルが現在のストリングと重複し得るので、現在のブロック中のピクセルの数よりも小さい任意の値であり得る。
【０１１２】
[0115]  「前の行からのコピー」の一例が、以下でさらに詳細に説明する図５に示されている。本開示の前の行からのコピーモードに従って、ビデオエンコーダ２０は、現在のピクセルの「まっすぐ上方に」または直接上方に配置された参照ピクセルを使用してマッチング基準を決定し得る。言い換えれば、ビデオエンコーダ２０は、参照ピクセルが現在のブロック中で現在のピクセルと同じ水平位置を有するような参照ピクセルを識別し得る。従って、この例によれば、参照ピクセルは現在のピクセルとは異なる（例えば、２つ以上だけ先行する）行中に配置されるが、参照ピクセルは、必ず現在のピクセルと同じ列中に配置される。
【０１１３】
[0116]  ピクセルの現在のストリング（または「ラン」）が、前の行からのコピーモードを使用して、さらにマッチングレングス情報のエントロピー符号化中に符号化される場合、ビデオエンコーダ２０は、ランが０よりも大きいか、または１よりも大きいか、または２よりも大きい場合、ランを符号化するために３つの追加のコンテキストを使用し得る。現在のストリングが「前の行からのコピー」を使用するとき、上記に記載した３つの値シナリオはそれぞれシンボル（Ｇｒ０）、（Ｇｒ１）、および（Ｇｒ２）によって示される。
【０１１４】
[0117]  ビデオ符号化デバイス２０は、パレットコード化ブロックのマッチングレングスの値が制約される（または「制約」を有する）と決定し得る。例えば、ビデオエンコーダ２０は、（「ＭａｔｃｈｉｎｇＬｅｎ」という用語によって示される）マッチングレングスの値が、ある最小値（例えば、「Ｔ」によって示される値）を有すると決定し得る。この場合、パレットコード化ブロックのマッチングレングスに関する制約は、数学的にＭａｔｃｈｉｎｇＬｅｎ＞＝Ｔとして表される。
【０１１５】
[0118]  本明細書で説明する技法のいくつかの実施形態によれば、ビデオエンコーダ２０は、既存のパレットベースコーディング技法の場合のように（ＭａｔｃｈｉｎｇＬｅｎ−１）の値の代わりに、（ＭａｔｃｈｉｎｇＬｅｎ−Ｔ）の値を示す情報を符号化し、シグナリングし得る。従って、本明細書で説明する技法のこれらの態様によれば、ビデオエンコーダ２０は、ブロックの実際のマッチングレングスと、マッチングレングスの値に関する検出された制約との間の差分または「Δ」を符号化し、シグナリングし得る。このように（ＭａｔｃｈｉｎｇＬｅｎ−Ｔ）の値を符号化し、シグナリングすることによって、ビデオエンコーダ２０は、ビデオデコーダ３０にマッチングレングス情報を提供する際のビットレート要件および帯域幅消費を潜在的に節約し得る。
【０１１６】
[0119]  潜在的なビットレートおよび帯域幅節約の非限定的な例について本明細書で説明する。制約Ｔの値が３である場合、ビデオエンコーダ２０は、（ＭａｔｃｈｉｎｇＬｅｎ−３）の値を符号化し、ビデオデコーダ３０にシグナリングし得る。この例において、ＭａｔｃｈｉｎｇＬｅｎ変数の生の値に応じて、３だけの低減は、ビデオエンコーダ２０が、既存のパレットベースコーディング技法の場合にあり得るように（ＭａｔｃｈｉｎｇＬｅｎ−１）の値を符号化するよりも少ないビットを使用することを潜在的に可能にし得る。
【０１１７】
[0120]  次に、ビデオデコーダ３０は、現在のパレットコード化ブロックのマッチングレングスを取得するために、受信された（ＭａｔｃｈｉｎｇＬｅｎ−Ｔ）値を復号し得る。より具体的には、ビデオデコーダ３０は、（ＭａｔｃｈｉｎｇＬｅｎ−Ｔ）の受信された値を復号し、受信された値を制約Ｔだけ増分するために既存の技法を実施し得る。ＭａｔｃｈｉｎｇＬｅｎの値を取得するためにビデオデコーダ３０が適用し得る例示的な手順が以下のコードに記述されている。
【０１１８】
【数３】
2017525230.tif 000007
【０１１９】
[0121]  以下でより詳細に説明するように、図５は、行０を基準としてもつ、前の行からのコピーの一例を示している。
【０１２０】
[0122]  本開示のいくつかの態様によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットインデックスのランレングスコーディングのための効率を高めるために本開示の１つまたは複数の技法を実施し得る。いくつかの例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランレングスをコーディングするときにランレングス制約を課すために本開示のいくつかの技法を実施し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、特定のパレットモードと併せてランレングス制約を適用し得る。例えば、ビデオエンコーダ２０またはビデオデコーダ３０は、ランレングスしきい値に基づいてパレットベースビデオコーディングのための特定のパレットモードを有効化し得、ここで、ランレングスしきい値は、パレットモードとともにグループとして処理されているブロックのピクセルの数に関連付けられる。説明のための一例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、ランレングスがしきい値を満たす（例えば、しきい値よりも大きいかまたはそれに等しい）場合、本開示の前の行からのコピーモードを有効化し得る。
【０１２１】
[0123]  いくつかの例において、本開示のパレットベースコーディングのための前の行からのコピーモードに従ってビデオデータのブロックを符号化する際に、ビデオエンコーダ２０は、ランレングスが、対応するしきい値を満たすかまたは超えるように、参照ランと現在コード化されているランとのランレングス（または「マッチングランレングス」）に関して制約を課し得る。さらに、ビデオエンコーダ２０は、マッチングランレングスがしきい値に等しいかまたはそれよりも大きいとき、前の行からのコピーモードを有効化し得る。様々な実施形態によれば、しきい値は、あらかじめ定義された定数、または（例えば、ケースバイケースで導出される）適応数であり得る。例えば、ビデオエンコーダ２０は、参照行オフセット、パレットサイズ、または現在のランの開始ピクセルのパレットインデックスのうちの１つまたは複数を含む、ファクタの様々な組合せに基づいて適応しきい値を導出し得る。
【０１２２】
[0124]  以下でさらに詳細に説明するように、本開示によるいくつかのシナリオにおいて、ビデオエンコーダ２０およびビデオデコーダ３０は両方とも、無関係にしきい値を取得するように構成され得、それにより、ビデオエンコーダ２０がしきい値をビデオデコーダ３０にシグナリングする必要がなくなる。また、以下でさらに詳細に説明するように、本開示によるいくつかの例において、ビデオエンコーダ２０はしきい値をビデオデコーダ３０にシグナリングし得、それにより、ビデオデコーダ３０は、しきい値をパラメータまたはオペランドとして使用してマッチングランレングスを導出することが可能になる。ビデオエンコーダ２０がしきい値をシグナリングする例において、ビデオエンコーダ２０は、シーケンスパラメータセット（ＳＰＳ）ヘッダ中でまたはピクチャパラメータセット（ＰＰＳ）ヘッダ中でなど、パラメータセットのヘッダ中でなど、様々なレベルにおいてしきい値をシグナリングし得る。いくつかの例において、ビデオエンコーダ２０は、ＬＣＵレベルにおいてまたはＣＵレベルにおいてなど、ビットストリーム中で明示的にしきい値をシグナリングし得る。
【０１２３】
[0125]  ビデオエンコーダ２０は、符号化ビデオビットストリーム中で実際のランレングスとしきい値との間の差分をシグナリングし得る。例えば、ビデオエンコーダ２０は、差分（本明細書ではシンボル「Ｋ」によって示される）をシグナリングし得る。より具体的には、差分は式Ｋ＝（Ｎ−Ｔ）によって表され得、ここで、Ｎは実際のマッチングランレングスを示し、およびここで、Ｔは最小ランしきい値を示す。
【０１２４】
[0126]  対応して、ビデオデコーダ３０は、Ｋによって示されるシグナリングされた差分を使用して実際のランレングスＮを導出し得る。ビデオデコーダ３０は、前の行からのコピーモードに従って符号化された、パレットコード化ブロックの部分のための実際のマッチングランレングスを取得するために、Ｋの受信された値にしきい値を加算し得る。より具体的には、ビデオデコーダ３０は、以下の数学演算を行うことによって実際のマッチングランレングスＮを取得し得：Ｋ＋Ｔ、ここで、Ｋの値は符号化ビデオビットストリーム中で受信された。上記で説明したように、Ｋは数式（Ｎ−Ｔ）を表す。従って、ＫにＴの値を加算することによって、ビデオデコーダ３０は、数学演算（Ｎ−Ｔ＋Ｔ）を効果的に行い、それによりＮの値が生じる。上記で説明したように、Ｎは、ラン中の要素の実際の数（すなわち、ランレングス）を表す。
【０１２５】
[0127]  このようにして、ビデオエンコーダ２０およびビデオデコーダ３０は、本開示の態様に従って、ビットレート要件を低減するように構成され得る。例えば、差分値（上記の式中のＫ）をシグナリングすることによって、ビデオエンコーダ２０は、マッチングランレングス（上記の式中のＮ）よりも小さい値をシグナリングし、潜在的に符号化ビデオビットストリーム中でより少数のビットを消費し得る。特に、前の行からのコピーモードに従ってコード化されるランの様々な事例においてあり得るように、マッチングランレングスが比較的大きい値である事例において、ビデオエンコーダ２０はビットレート要件を緩和し得る。対応して、ビデオデコーダ３０も、最小しきい値（上記の式中のＴ）を活用することによって、マッチングランレングス（上記の式中のＮ）を導出するために、より少数のシグナリングされたビットを必要とし得る。従って、ビデオエンコーダ２０およびビデオデコーダ３０は、コーディング精度を維持しながらビットレートを節約するために、本明細書で説明するしきい値ベースの制約を使用し得る。
【０１２６】
[0128]  上記で説明したように、本開示の態様による様々なシナリオにおいて、最小ランしきい値Ｔは定数であり得る。そのようなシナリオにおいて、ビデオエンコーダ２０とビデオデコーダ３０の両方は、前の行からのコピーモードによるパレットベースコーディングのための最小ラン制約に準拠するように構成され得る。今度は、ビデオエンコーダ２０とビデオデコーダ３０の両方が一定のしきい値に準拠して前の行からのコピーモードを実施するように構成されるので、しきい値ベースの制約は、ビデオエンコーダ２０がしきい値をビデオデコーダ３０にシグナリングする必要をなくし得る。具体的には、ビデオデコーダ３０が、現在のピクセルのためのパレットベースコーディングモードが前の行からのコピーモードであると決定した場合、ビデオデコーダ３０は、Ｋの受信された差分値を使用して実際のランレングスを決定し得る。一例において、ビデオデコーダ３０は、しきい値Ｔを３になるように決定し得る（例えば、Ｔ＝３）。ビデオエンコーダ２０から受信されたＫの値を使用して、ビデオデコーダ３０は、マッチングランレングスＮを取得するために、Ｋの受信された値に３の値を加算し得る。この特定の例において、ビデオデコーダ３０は、演算（Ｎ−３＋３）を行うことによってＮの値を取得し得る。
【０１２７】
[0129]  本開示の態様による他のシナリオによれば、ビデオエンコーダ２０およびビデオデコーダ３０は、２つのファクタ上で使用して最小ランしきい値Ｔを適応的に導出し得る。これらのシナリオにおいて、２つのファクタは、参照行オフセット（例えば、現在コード化されている行と、インデックスのコピー元の参照行との間の行の数）と、現在のランの開始ピクセルのためのパレットインデックスとである。例えば、参照行オフセットを符号化するために、ビデオエンコーダ２０は、切捨バイナリコードのバイナリ化において「Ａ」によって示されるビット数を必要とし得る。さらに、ランの開始ピクセルのパレットインデックスを符号化するために、ビデオエンコーダ２０は、切捨バイナリコードのバイナリ化において「Ｎ」によって示されるビット数を必要とし得る。これらの例において、ビデオエンコーダ２０とビデオデコーダ３０の両方は、以下の式に従って最小ランしきい値Ｔを導出し得る。
【０１２８】
【数４】
2017525230.tif 000008
【０１２９】
ビデオエンコーダ２０とビデオデコーダ３０の両方はＴを導出するために（上記に示された）同じ関数を適用するように構成されるので、ビデオエンコーダ２０は、ビットストリームを介してＴの値をビデオデコーダ３０に明示的にシグナリングすることが不要であり得る。
【０１３０】
[0130]  本開示の態様によるさらに他の例によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、参照行オフセットの値と、現在のラン（または現在の「ストリング」）の開始ピクセルのためのパレットインデックスとを仮定すれば、ルックアップテーブルから最小ランしきい値Ｔを取得し得る。他の例において、ビデオエンコーダ２０およびビデオデコーダ３０は、参照行オフセットのバイナリ化ビットと、現在のランのための開始ピクセルのパレットインデックスとを仮定すれば、ルックアップテーブルから最小ランしきい値Ｔを取得し得る。一例として、しきい値を導出するために以下のルックアップテーブルＲｕｎＣｏｎｓｔｒａｉｎｔ［９］［６］が使用され得、ここで、ＲｕｎＣｏｎｓｔｒａｉｎｔ［］［］中の第１のインデックスは、参照行オフセットを符号化するために使用されるビット数を表し、およびここで、第２のインデックスは、パレットインデックスを符号化するために使用されるビット数を表す。上記のルックアップテーブルの例示的な導出は次のように表され得る。
【０１３１】
【数５】
2017525230.tif 000009
【０１３２】
ルックアップテーブルベースの導出の例において、ビデオエンコーダ２０とビデオデコーダ３０の両方は、無関係にしきい値Ｔを導出し得る。従って、本開示のルックアップテーブルベースのしきい値導出技法は、ビデオエンコーダ２０がしきい値をビデオデコーダ３０にシグナリングする必要をなくし得る。
【０１３３】
[0131]  本開示の態様による他の例において、ビデオエンコーダ２０は、本開示の前の行からのコピーモードに従って符号化されたパレットコード化ブロックのための最小しきい値ランレングスＴを符号化し、明示的にシグナリングし得る。いくつかのそのような例において、ビデオエンコーダ２０は、ブロックのために使用されるパレットコーディングモードにかかわらず、パレットコード化ブロックのためのＴの値を符号化し、明示的にシグナリングし得る。次に、ビデオデコーダ３０は、符号化ビデオビットストリーム中で差分値Ｋ並びに最小ランレングスしきい値Ｔを受信し得る。ビデオデコーダ３０は、ＫとＴとの受信された値を加算することによって現在のラン（または現在の「ストリング」）のためのランレングスＮを導出するためにＫとＴとの受信された値を使用し得る。様々な例において、ビデオエンコーダ２０は、切捨単項コード、指数ゴロムコードを使用して、またはランコーディングのための様々なコーディング技法を使用して、パレットコード化ブロックのための最小ランレングスしきい値Ｔを符号化し得る。
【０１３４】
[0132]  ビデオエンコーダ２０がしきい値Ｔをシグナリングする例において、ビデオエンコーダ２０は、シーケンスパラメータセット（ＳＰＳ）ヘッダ中でまたはピクチャパラメータセット（ＰＰＳ）ヘッダ中でなど、パラメータセットのヘッダ中でなど、様々なレベルにおいてしきい値をシグナリングし得る。いくつかの例において、ビデオエンコーダ２０は、ＬＣＵレベルにおいてまたはＣＵレベルにおいてなど、ビットストリーム中で明示的にしきい値をシグナリングし得る。ビデオエンコーダ２０がＴの値をビデオデコーダ３０にシグナリングする場合、本開示の技法は、ＫとＴとの値が、Ｎの値をシグナリングするために必要とされるであろうよりも少数のビットを必要とし得るという点で、ビットレート要件の低減を潜在的に提供する。上記で説明したように、Ｎの値は、様々なシナリオにおいて、相応して大きいビット数をシグナリングする必要がある比較的大きい数であり得る。
【０１３５】
[0133]  いくつかの例において、ビデオエンコーダ２０およびビデオデコーダ３０は、前の行からのコピーモードを別個のランモードとして扱い得る。いくつかの例において、本開示の態様によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、前の行からのコピーモードを上方コピーモードとマージし得る。例えば、シンタックス要素ｐａｌｅｔｔｅ＿ｍｏｄｅフラグをシグナリングするとき、ビデオエンコーダは、以下の組合せの間で区別するためにただ１つのビンを使用し得る：（上方コピー、前方コピー）または（左コピー、エスケープ）。例えば、ビデオエンコーダ２０は、上方コピーモードまたは前の行コピーモードを示すために１のｐａｌｅｔｔｅ＿ｍｏｄｅフラグ値を使用し得、左コピーモードまたはエスケープモードを示すために０のｐａｌｅｔｔｅ＿ｍｏｄｅフラグ値を使用し得る。これらの例では、ビデオエンコーダ２０がｐａｌｅｔｔｅ＿ｍｏｄｅフラグを１の値に設定した場合、ビデオエンコーダ２０は、現在のピクセルのためのパレットインデックスのコピー元である参照行を示すために、「ｙＯｆｆｓｅｔ」によって表されるシンタックス要素をシグナリングし得る。ビデオエンコーダ２０は、上方コピーモードと前の行からのコピーモードとに関してｙＯｆｆｓｅｔの特殊コードワードを符号化するために本開示の技法を実施し得る。例えば、ビデオエンコーダ２０は、次のようにｙＯｆｆｓｅｔコードワードのための可変長コード（ＶＬＣ：variable-length code）を取得し得る。
【０１３６】
０−上方コピーモード
１＋ｙＯｆｆｓｅｔの切捨バイナリコード−前の行コピーモード
[0134]  本開示の態様はまた、ピクセルのためのパレットコーディングモードを識別する情報の符号化、シグナリング、および復号を対象とし、ここで、可能なパレットベースコーディングモードのプールは、上記で説明した前の行からのコピーモードを含む。様々な例において、ビデオエンコーダ２０は、切捨単項コードを使用してモード識別情報を符号化し、適用可能なモードのための切捨単項コードをビデオデコーダ３０にシグナリングし得る。次に、ビデオデコーダ３０は、パレットコード化ブロックの対応するピクセルに適用可能なパレットベースコーディングモードを決定するために、モード識別切捨単項コードを復号するように構成され得る。
【０１３７】
[0135]  いくつかの事例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、可能なモードのための切捨単項コードを決定する際に最大シンボル値を使用し得る。一実施形態によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、２に等しい最大シンボル値で、全ての事例において、モードをコーディングし得る。シングルビットを使用して表される値に切捨単項コードを制約し得る、既存のパレットベースコーディング技術とは対照的に、この実施形態のモード識別技法は、ビデオエンコーダ２０およびビデオデコーダ３０が、シングルビットを使用して表され得る値で、または表されるために２ビットを必要とする値でパレットベースコーディングモードを識別することを可能にする。
【０１３８】
[0136]  １つのそのような実施形態によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックスコーディングを使用するエスケープピクセルのコーディングを含む、ランモードの使用を表すために単一の切捨単項コードワードを使用し得る。より具体的には、この例において、単一の切捨単項コードワードは、ピクセルのためのランモードの使用、並びにエスケープピクセルのための「予約済み」パレットインデックスの使用を表し得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセルのためのランモードの使用またはエスケープピクセルのための予約済みパレットインデックスの使用を示すために（切捨単項コードワード０によって表される）シンボル０を使用し得る。この例において、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロック中のピクセルのためのコピーモードの使用を示すために（切捨単項コードワード１０によって表される）シンボル１を使用し得る。さらに、この例によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロック中のピクセルのための前の行からのコピーモードの使用を示すために（切捨単項コードワード１１によって表される）シンボルを使用し得る。以下の表３は、上記で説明した実施形態による、対応する切捨単項コードワードへのシンボルのマッピングを示す。
【０１３９】
【表３】
2017525230.tif 000010
【０１４０】
[0137]  パレットベースコーディング技法のいくつかの例によれば、ビデオエンコーダ２０は、パレットコード化ブロック中のピクセルがエスケープピクセルであることを示すようにフラグを設定し得る。いくつかのそのような例において、ビデオエンコーダ２０は、エスケープピクセルの色情報を符号化し、符号化された色情報をビデオデコーダ３０にシグナリングし得る。次に、ビデオデコーダ３０は、パレットコード化ブロック中のピクセルをエスケープピクセルとして識別するためにビットストリーム中の有効化フラグを復号し得る。さらに、ビデオデコーダ３０は、エスケープピクセルを再構成するために、シグナリングされた色情報を使用し得る。
【０１４１】
[0138]  １つのそのような実施形態によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ピクセルのためのランモードの使用を表すために単一の切捨単項コードワードを使用し得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセルのためのランモードの使用またはエスケープピクセルのための予約済みパレットインデックスの使用を示すために（切捨単項コードワード０によって表される）シンボル０を使用し得る。この例において、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロック中のピクセルのためのコピーモードの使用を示すために（切捨単項コードワード１０によって表される）シンボル１を使用し得る。さらに、この例によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコード化ブロック中のピクセルのための前の行からのコピーモードの使用を示すために（切捨単項コードワード１１によって表される）シンボルを使用し得る。以下の表４は、上記で説明した実施形態による、対応する切捨単項コードワードへのシンボルのマッピングを示す。
【０１４２】
【表４】
2017525230.tif 000011
【０１４３】
[0139]  本明細書で説明する技法のいくつかの例示的な実施形態において、ビデオエンコーダ２０およびビデオデコーダ３０は、異なるシナリオでは別様に最大シンボル値を設定し得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のピクセルをコーディングするために利用可能である可能なモードの数を低減するために、パレットコード化ブロック中の現在のピクセルの位置を示す情報と、現在のピクセルの近隣ピクセルがコード化されるモードを示す情報とを活用し得る。可能なモードの数を低減することによって、ビデオエンコーダ２０およびビデオデコーダ３０は、既存のパレットベースコーディング技術から生じる冗長性問題に対処するか、それを緩和するか、または潜在的になくすために本開示の技法を実施し得る。
【０１４４】
[0140]  パレットベースコーディングに関連するいくつかの冗長性問題に対処するために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のピクセルが、パレットコード化ブロックの第１の行中に配置されると決定するか、または現在のピクセルの左側近隣ピクセルがコピーモードを使用してコード化されると決定する。そのような例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、最大シンボル値が２ではなく１になるように、モード識別シンボル値の低減されたセットを使用し得る。ビデオエンコーダ２０および／またはビデオデコーダ３０は、前の行からのコピーモードが、パレットコード化ブロック中の第３の行から開始する使用のために利用可能であると決定し得る。従って、現在のピクセルが、パレットコード化ブロックの第１または第２の行中にある場合、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のピクセルのための可能なモードとして前の行からのコピーモードを排除し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、それにより、ピクセルのための可能なパレットベースコーディングモードのプールをランモードおよびコピーモード、すなわち合計２つの可能なモードのみに低減し得る。従って、ビデオエンコーダ２０およびビデオデコーダ３０は、最大シンボル値を１だけ低減して１の値にし得る。
【０１４５】
[0141]  パレットベースコーディングモードを識別するための最大シンボル値が０である場合、ビデオエンコーダ２０は、シンボル値を明示的に送信する代わりに、モード情報を推論し得る。同様に、ビデオデコーダ３０は、最大シンボル値が０である事例ではモード情報を推論し得る。以下の擬似コードは、ビデオエンコーダ２０がモード識別シンボルを生成する際に実施し得る冗長性除去技法の一例を表す。
【０１４６】
【数６】
2017525230.tif 000012
【０１４７】
[0142]  本明細書で説明する技法のいくつかの実施形態によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、切捨単項コードを符号化するためのコンテキストが、以前コード化された近隣ピクセルのモードに依存するように、そのコンテキストを導出し得る。具体的には、ビデオエンコーダ２０および／またはビデオデコーダ３０は、モード識別シンボルを符号化するためにいくつかのコンテキストを使用し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、以前コード化された左側近隣ピクセルのために使用されるパレットコーディングモードに応じて、または以前コード化された上方近隣ピクセルのために使用されるパレットコーディングモードに応じてコンテキストをコーディングし得る。左側近隣ピクセルと上方近隣ピクセルとの各々について、可能なコーディングモードは、ランモードと、コピーモードと、前の行からのコピーモードとを含む。
【０１４８】
[0143]  一例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のピクセルのための切捨単項コードワードの第１のビンをコーディングするために、左側近隣ピクセルまたは上方近隣ピクセルのいずれかのコンテキストを使用し得る。代替的に、別の例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のピクセルのための切捨単項コードワードのビンの全てをコーディングするために、左側近隣ピクセルまたは上方近隣ピクセルのいずれかのコンテキストを使用し得る。代替的にさらに、別の例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、現在のピクセルのためのモードを示すために、切捨単項コードワードの第１のビンをコーディングするために、左側近隣ピクセルまたは上方近隣ピクセルのうちの一方のコンテキストを使用し、残りのビンをコーディングするために、左側近隣ピクセルまたは上方近隣ピクセルのうちの他方のコンテキストを使用し得る。
【０１４９】
[0144]  本明細書で説明する技法のいくつかの実施形態によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、利用可能なコンテキストのいくつかが、以前コード化された近隣ピクセルについてのモード情報に依存し、コンテキストの他のものが、以前コード化された近隣ピクセルのいずれについてのモード情報にも依存しないと決定し得る。特定の例では、ビデオエンコーダ２０および／またはビデオデコーダ３０が、以前コード化された（例えば上方または左側）近隣ピクセルに応じて第１のビンをコーディングし得る、２つの可能なコンテキストがある。より具体的には、ビデオエンコーダ２０および／またはビデオデコーダ３０は、それぞれの近隣ピクセルのために使用されるパレットベースコーディングモード（例えば、ランモード、コピーモード、または前の行からのコピーモードのうちの１つ）に基づいて、それらの２つの利用可能なコンテキストからコンテキストを選択し得る。
【０１５０】
[0145]  いくつかの例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセルのために使用されたコーディングモードに基づいて、動的に切捨単項コードワードの第１のビンのコンテキストを決定し得る。例えば、以前コード化された近隣ピクセルはランモードを使用してコード化され、ビデオエンコーダ２０および／またはビデオデコーダ３０は、本明細書で「コンテキストＡ」と呼ばれる単一のＣＡＢＡＣコンテキストを使用して第１のビンをコーディングし得る。一方、以前コード化された近隣ピクセルが、本開示のコピーモードまたは前の行からのコピーモードのいずれかを使用してコード化された場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、本明細書で「コンテキストＢ」と呼ばれる別のＣＡＢＡＣコンテキストを使用して第１のビンをコーディングし得る。
【０１５１】
[0146]  第２のビンをコーディングするために、（適用可能な場合、切捨単項コードワードに関して）ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセル（すなわち、上方ネイバーおよび左ネイバー）のいずれかのために使用されるパレットベースコーディングモードに依存しないコンテキストを使用し得る。従って、ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセルのいずれかに関係するモード識別情報とは無関係に切捨単項コードワードの第２のビンをコーディングし得る。例えば、第２のビンは、以前コード化された近隣ピクセルのいずれかに関係する変化するモード情報に鑑みて不変のままであり得る。ビデオエンコーダ２０および／またはビデオデコーダ３０が切捨単項コードワードの第２のビンをコーディングするために使用し得るＣＡＢＡＣコンテキストは、本明細書では「コンテキストＣ」と呼ばれる。上記で説明したように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、コード化されている現在のピクセルより以前コード化された近隣ピクセルのために使用されるパレットベースコーディングモードにかかわらず、切捨単項コードワードの第２のビンをコーディングするためにコンテキストＣを使用し得る。
【０１５２】
[0147]  いくつかの実施形態によれば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、モード情報冗長性に対処するためにシンボル（例えば切捨単項コードワード）が修正される事例において、上記で説明したコンテキスト割当て方式を組み合わせ得る。例えば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、パレットのサイズがしきい値を満たすかまたは超える場合のみ、パレットベースコーディングの前の行からのコピーモードを有効化し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、前の行からのコピーモードをそれにおいてアクティブにすべきしきい値パレットサイズを示すためにＱＣ＿ＣＯＰＹ＿ＰＲＥＶ＿ＲＯＷ＿ＰＬＴ＿ＳＩＺＥシンボルを使用し得る。いくつかの事例において、ＱＣ＿ＣＯＰＹ＿ＰＲＥＶ＿ＲＯＷ＿ＰＬＴ＿ＳＩＺＥは２のパレットサイズに対応し得る。
【０１５３】
[0148]  さらに、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のパレットコード化ブロック中のピクセルの第３の行において開始して、第３の行の下方にある後続の行に進む、前の行からのコピーモードを有効化し得る。より具体的には、前の行からのコピーモードは、現在のピクセルの複数（すなわち、少なくとも２つ）の行上方に配置された参照ピクセルからインデックスをコピーすることを伴う。従って、ビデオエンコーダ２０およびビデオデコーダ３０は、２つの最上行の複数の行上方にはピクセルがおそらく配置され得ないことにより、ブロックの２つの最上行中に配置されたピクセルに関して可能なパレットベースコーディングモードとして前の行からのコピーモードを排除し得る。さらに、いくつかの事例において、ビデオエンコーダ２０およびビデオデコーダ３０は、左側近隣ピクセルがコピーモードを使用してコード化された場合、現在のピクセルについてコピーモードを無効化し得る。
【０１５４】
[0149]  上記で説明した制約のいずれかを実施する事例において、ビデオエンコーダ２０およびビデオデコーダ３０は、いくつかの場合、ピクセルについて、３つの可能なモードではなく、ただ１つまたは２つのパレットベースコーディングモードが可能であると決定し得る。より具体的には、上記で説明した各制約に従って、ビデオエンコーダ２０およびビデオデコーダ３０は、所与のピクセルについて可能なパレットベースコーディングモードの数を２に低減し得る。上記で説明した制約のうちの１つまたは複数を使用してモード冗長性が対処されるとき、ビデオデコーダ３０は、パレットモード情報を復号するために以下の擬似コードによって表される技法を実施し得る。
【０１５５】
【数７】
2017525230.tif 000013
2017525230.tif 000014
【０１５６】
[0150]  ビデオエンコーダ２０は、同様に、説明する制約のうちの１つまたは複数を実施するために対応する技法を実施し得る。上記で説明した制約のうちのいずれか１つまたは複数を適用することによって、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクチャ精度を維持しながら、ビットレート要件を低減しコンピューティングリソースを節約するために、本開示の様々な技法を実施し得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０がピクセルのための可能なパレットコーディングモードの数を２に制約する場合、モードをシグナリングするために必要とされるビット数はシングルビットに低減される。より具体的には、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコーディングの（本開示の前の行からのコピーモードを含む）３つのモードを依然としてサポートしながら、モードを識別するためにシングルビットシナリオを利用するように制約を実施し得る。
【０１５７】
[0151]  図２は、本開示の様々な技法を実施し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明のために与えられており、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明のために、本開示では、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０について説明する。但し、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１５８】
[0152]  図２の例において、ビデオエンコーダ２０は、ビデオデータメモリ９８と、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構成ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示せず）を含む。ビデオエンコーダ２０はまた、本開示で説明するパレットベースコーディング技法の様々な態様を行うように構成されるパレットベース符号化ユニット１２２を含む。他の例において、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１５９】
[0153]  ビデオデータメモリ９８は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ９８に記憶されたビデオデータは、例えば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例において、ビデオデータメモリ９８は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１６０】
[0154]  ビデオエンコーダ２０はビデオデータを受信し得る。ビデオエンコーダ２０はビデオデータのピクチャのスライス中の各ＣＴＵを符号化し得る。ＣＴＵの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）と、対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、ＣＴＵのＣＴＢを徐々により小さいブロックに分割するために、４分木区分を行い得る。より小さいブロックはＣＵのコーディングブロックであり得る。例えば、予測処理ユニット１００は、ＣＴＵに関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分し得、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【０１６１】
[0155]  ビデオエンコーダ２０は、ＣＵの符号化表現（すなわち、コード化ＣＵ）を生成するために、ＣＴＵのＣＵを符号化し得る。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵに関連付けられたコーディングブロックを区分し得る。従って、各ＰＵは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートし得る。上記で示したように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測に関して２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートし得、インター予測に関して２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートし得る。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測のための２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズに関して非対称区分をサポートし得る。
【０１６２】
[0156]  インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を行うことによって、ＰＵのための予測データを生成し得る。ＰＵの予測データは、ＰＵの１つまたは複数の予測サンプルブロックと、ＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、またはＢスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を行い得る。Ｉスライス中では、全てのＰＵがイントラ予測される。従って、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を行わない。従って、Ｉモードで符号化されたブロックに対して、予測ブロックは、同じフレーム内の以前に符号化された近隣ブロックからの空間的予測を使用して形成される。
【０１６３】
[0157]  ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャのリスト（例えば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索し得る。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含んでいる、参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域に関連付けられた参照ロケーションとの間の空間変位を示すＭＶを生成し得る。例えば、ＭＶは、現在の復号ピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として参照インデックスとＭＶとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、ＰＵの予測サンプルブロックを生成し得る。
【０１６４】
[0158]  ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについて単予測または双予測を行い得る。ＰＵについて単予測を行うために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索し得る。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵのサンプルブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかまたはＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力し得る。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成し得る。
【０１６５】
[0159]  ＰＵについて双方向インター予測を行うために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索し得、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索し得る。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照ピクチャインデックスを生成し得る。さらに、動き推定ユニットは、参照領域に関連付けられた参照ロケーションとＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成し得る。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成し得る。
【０１６６】
[0160]  本開示の様々な例によれば、ビデオエンコーダ２０は、パレットベースコーディングを行うように構成され得る。ＨＥＶＣフレームワークに関して、一例として、パレットベースコーディング技法は、ＣＵモードとして使用されるように構成され得る。他の例において、パレットベースコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。従って、ＣＵのコンテキストにおいて（本開示全体で）本明細書で説明する開示されるプロセスの全てが、追加または代替として、ＰＵモードに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明するパレットベースコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として働くように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、またはさらには非長方形形状の領域であり得る。
【０１６７】
[0161]  パレットベース符号化ユニット１２２は、例えば、パレットベース符号化モードが例えばＣＵまたはＰＵのために選択されたとき、パレットベースの復号を行い得る。例えば、パレットベース符号化ユニット１２２は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット１２２によって行われるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって行われ得る。
【０１６８】
[0162]  パレットベース符号化ユニット１２２は、本明細書で説明する様々なシンタックス要素のいずれかを生成するように構成され得る。従って、ビデオエンコーダ２０は、本開示で説明するパレットベースコードモードを使用してビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ２０は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化するか、または、例えばＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなど、異なるモードを使用してビデオデータのブロックを符号化し得る。ビデオデータのブロックは、例えば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。ビデオエンコーダ２０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードでいくつかのブロックを符号化し、パレットベースコーディングモードで他のブロックを復号し得る。
【０１６９】
[0163]  イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を行うことによって、ＰＵのための予測データを生成し得る。ＰＵのための予測データは、ＰＵのための予測サンプルブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライス中のＰＵに対してイントラ予測を行い得る。
【０１７０】
[0164]  ＰＵに対してイントラ予測を行うために、イントラ予測処理ユニット１２６は、ＰＵのための予測データの複数のセットを生成するために複数のイントラ予測モードを使用し得る。ＰＵのための予測データのセットを生成するためにいくつかのイントラ予測モードを使用するとき、イントラ予測処理ユニット１２６は、そのイントラ予測モードに関連付けられた方向へ、ＰＵの予測ブロックにわたって、近隣ＰＵのサンプルブロックからサンプルの値を延ばし得る。近隣ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、例えば、３３個の方向性イントラ予測モードを使用し得る。いくつかの例において、イントラ予測モードの数は、ＰＵに関連付けられた領域のサイズに依存し得る。
【０１７１】
[0165]  予測処理ユニット１００は、ＰＵについてインター予測処理ユニット１２０によって生成された予測データ、またはＰＵについてイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵのための予測データを選択し得る。いくつかの例において、予測処理ユニット１００は、予測データのセットのレート／ひずみメトリックに基づいて、ＣＵのＰＵのための予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書において、選択された予測サンプルブロックと呼ばれることがある。
【０１７２】
[0166]  残差生成ユニット１０２は、ＣＵのコーディングブロック（例えば、ルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロック）と、ＣＵのＰＵの選択された予測サンプルブロック（例えば、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック）とに基づいて、ＣＵの残差ブロック（例えば、ルーマ残差ブロック、Ｃｂ残差ブロックおよびＣｒ残差ブロック）を生成し得る。例えば、残差生成ユニット１０２は、残差ブロック中の各サンプルが、ＣＵのコーディングブロック中のサンプルと、ＣＵのＰＵの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差分に等しい値を有するようにＣＵの残差ブロックを生成し得る。
【０１７３】
[0167]  変換処理ユニット１０４は、ＣＵに関連付けられる残差ブロックをＣＵのＴＵに関連付けられる変換ブロックに区分するために、４分木区分を行い得る。従って、いくつかの例において、ＴＵは、ルーマ変換ブロックと、２つのクロマ変換ブロックとに関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックとクロマ変換ブロックとのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づくことも、または基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々に関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【０１７４】
[0168]  変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵについて変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵに関連付けられた変換ブロックに様々な変換を適用し得る。例えば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例において、変換ブロックは、変換係数ブロックとして扱われ得る。
【０１７５】
[0169]  量子化ユニット１０６は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全てに関連付けられたビット深度を低減し得る。例えば、ｎビット変換係数は、量子化中にｍビット変換係数に切り捨てられ得、ここで、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵに関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰ値を調整することによって、ＣＵに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、従って、量子化された変換係数は、元の係数よりも低い精度を有し得る。
【０１７６】
[0170]  逆量子化ユニット１０８および逆変換処理ユニット１１０は、それぞれ、係数ブロックから残差ブロックを再構成するために、係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット１１２は、ＴＵに関連付けられた再構成された変換ブロックを生成するために、予測処理ユニット１００によって生成された１つまたは複数の予測サンプルブロックからの対応するサンプルに、再構成された残差ブロックを加算し得る。このようにＣＵの各ＴＵのための変換ブロックを再構成することによって、ビデオエンコーダ２０は、ＣＵのコーディングブロックを再構成し得る。
【０１７７】
[0171]  フィルタユニット１１４は、ＣＵに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を行い得る。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構成されたコーディングブロックに対して１つまたは複数のデブロッキング動作を行った後に、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット１２０は、他のピクチャのＰＵに対してインター予測を行うために、再構成されたコーディングブロックを含んでいる参照ピクチャを使用し得る。さらに、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ中の他のＰＵに対してイントラ予測を行うために、復号ピクチャバッファ１１６中の再構成されたコーディングブロックを使用し得る。
【０１７８】
[0172]  エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能構成要素からデータを受信し得る。例えば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受信し得、予測処理ユニット１００からシンタックス要素を受信し得る。エントロピー符号化ユニット１１８は、エントロピー符号化データを生成するために、データに対して１つまたは複数のエントロピー符号化演算を行い得る。例えば、エントロピー符号化ユニット１１８は、ＣＡＢＡＣ演算、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）演算、可変対可変（Ｖ２Ｖ：variable-to-variable）長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して行い得る。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。例えば、ビットストリームは、ＣＵのためのＲＱＴを表すデータを含み得る。
【０１７９】
[0173]  いくつかの例において、残差コーディングは、パレットコーディングとともに行われない。従って、ビデオエンコーダ２０は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を行わないことがある。さらに、ビデオエンコーダ２０は、残差データとは別個に、パレットコーディングモードを使用して生成されたデータをエントロピー符号化し得る。
【０１８０】
[0174]  図３は、本開示の技法を実施するように構成される例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために与えられており、本開示において広く例示され説明される技法を限定するものではない。説明のために、本開示では、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０について説明する。但し、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１８１】
[0175]  図３の例において、ビデオデコーダ３０は、ビデオデータメモリ１４８と、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構成ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４と、イントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明するパレットベースコーディング技法の様々な態様を行うように構成されるパレットベース復号ユニット１６５を含む。他の例において、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１８２】
[0176]  ビデオデータメモリ１４８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ１４８に記憶されるビデオデータは、例えば、コンピュータ可読媒体１６から、例えば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１４８は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ（ＣＰＢ：coded picture buffer）を形成し得る。復号ピクチャバッファ１６２は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例において、ビデオデータメモリ１４８は、ビデオデコーダ３０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【０１８３】
[0177]  ビデオデータメモリ１４８、すなわち、ＣＰＢは、ビットストリームの符号化ビデオデータ（例えば、ＮＡＬユニット）を受信し、記憶し得る。エントロピー復号ユニット１５０は、ビデオデータメモリ１４８から符号化ビデオデータ（例えば、ＮＡＬユニット）を受信し、ＮＡＬユニットをパースしてシンタックス要素を復号し得る。エントロピー復号ユニット１５０は、ＮＡＬユニット中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構成ユニット１５８、およびフィルタユニット１６０は、ビットストリームから取得（例えば、抽出）されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
【０１８４】
[0178]  ビットストリームのＮＡＬユニットは、コード化スライスＮＡＬユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コード化スライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含んでいることがある。スライスヘッダ中のシンタックス要素は、スライスを含んでいるピクチャに関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１８５】
[0179]  ビットストリームからのシンタックス要素を復号することに加えて、ビデオデコーダ３０は、区分されていないＣＵに対して再構成動作を行い得る。区分されていないＣＵに対して再構成動作を行うために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構成動作を行い得る。ＣＵの各ＴＵについて再構成動作を行うことによって、ビデオデコーダ３０は、ＣＵの残差ブロックを再構成し得る。
【０１８６】
[0180]  ＣＵのＴＵに対して再構成動作を行うことの一部として、逆量子化ユニット１５４は、ＴＵに関連付けられた係数ブロックを逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）し得る。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵに関連付けられたＱＰ値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
【０１８７】
[0181]  逆量子化ユニット１５４が係数ブロックを逆量子化した後に、逆変換処理ユニット１５６は、ＴＵに関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ：Karhunen-Loeve transform）、逆回転変換、逆方向性変換、または別の逆変換を係数ブロックに適用し得る。
【０１８８】
[0182]  イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵのための予測ブロックを生成するためにイントラ予測を行い得る。イントラ予測処理ユニット１６６は、イントラ予測モードを使用して、空間的に近接するＰＵの予測ブロックに基づいてＰＵのための予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックを生成し得る。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定し得る。
【０１８９】
[0183]  予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構成し得る。さらに、インター予測を使用してＰＵが符号化された場合、エントロピー復号ユニット１５０は、ＰＵについての動き情報を抽出し得る。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つまたは複数の参照領域を決定し得る。動き補償ユニット１６４は、ＰＵのための１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵのための予測ブロック（例えば、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック）を生成し得る。
【０１９０】
[0184]  再構成ユニット１５８は、ＣＵのコーディングブロック（例えば、ルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロック）を再構成するために、適用可能なとき、ＣＵのＴＵに関連付けられた変換ブロック（例えば、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック）と、ＣＵのＰＵの予測ブロック（例えば、ルーマブロック、ＣｂブロックおよびＣｒブロック）とを、すなわち、イントラ予測データまたはインター予測データのいずれかを使用し得る。例えば、再構成ユニット１５８は、ＣＵのコーディングブロック（例えば、ルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロック）を再構成するために、変換ブロック（例えば、ルーマ変換ブロック、Ｃｂ変換ブロックおよびＣｒ変換ブロック）のサンプルを、予測ブロック（例えば、予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロック）の対応するサンプルに加算し得る。
【０１９１】
[0185]  フィルタユニット１６０は、ＣＵのコーディングブロック（例えば、ルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロック）に関連付けられたブロッキングアーティファクトを低減するために、デブロッキング演算を行い得る。ビデオデコーダ３０は、ＣＵのコーディングブロック（例えば、ルーマコーディングブロック、ＣｂコーディングブロックおよびＣｒコーディングブロック）を復号ピクチャバッファ１６２に記憶し得る。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のための、参照ピクチャを提供し得る。例えば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のブロック（例えば、ルーマブロック、ＣｂブロックおよびＣｒブロック）に基づいて、他のＣＵのＰＵに対してイントラ予測演算またはインター予測演算を行い得る。このようにして、ビデオデコーダ３０は、有意係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換ブロックを生成するため、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成するため、およびコーディングブロックを表示のために出力するために、変換係数レベルに変換を適用し得る。
【０１９２】
[0186]  本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースコーディングを行うように構成され得る。パレットベース復号ユニット１６５は、例えば、パレットベース復号モードが、例えばＣＵまたはＰＵのために選択されたとき、パレットベースの復号を行い得る。例えば、パレットベース復号ユニット１６５は、ピクセル値を示すエントリを有するパレットを生成するように構成され得る。さらに、この例において、パレットベース復号ユニット１６５は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリに関連付ける情報を受信し得る。この例において、パレットベース復号ユニット１６５は、その情報に基づいてパレット中のピクセル値を選択し得る。さらに、この例において、パレットベース復号ユニット１６５は、選択されたピクセル値に基づいてブロックのピクセル値を再構成し得る。様々な機能がパレットベース復号ユニット１６５によって行われるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって行われ得る。
【０１９３】
[0187]  パレットベース復号ユニット１６５は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を行い得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット１６５は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、例えば、ＨＥＶＣインター予測コーディングモードまたはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、例えば、ＨＥＶＣコーディングプロセスに従って生成されるＣＵまたはＰＵであり得る。ビデオデコーダ３０は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードでいくつかのブロックを復号し、パレットベースコーディングモードで他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの１つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
【０１９４】
[0188]  本開示の技法のうちの１つまたは複数によれば、ビデオデコーダ３０、具体的にはパレットベース復号ユニット１６５は、パレットコード化ビデオブロックのパレットベースビデオ復号を行い得る。上記で説明したように、ビデオデコーダ３０によって復号されたパレットは、ビデオエンコーダ２０によって明示的に符号化およびシグナリングされるか、受信されたパレットコード化ブロックに関してビデオデコーダ３０によって再構成されるか、前のパレットエントリから予測されるか、以前のピクセル値から予測されるか、またはこれらの組合せであり得る。
【０１９５】
[0189]  図４は、ビデオエンコーダ２０およびビデオデコーダ３０が本開示の前の行からのコピーモードをサポートする場合における、モード識別シンボルの２つのビンのためのコンテキストコーディング割当ての一例を示す表２００である。図４に示されているシナリオにおいて、現在のピクセルの上方近隣ピクセルは、ランモードに従って以前コード化された。さらに、図４に示されている例において、ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセルのために使用されたコーディングモードに基づいて、動的に切捨単項コードワードの第１のビンのコンテキストを決定し得る。例えば、以前コード化された近隣ピクセルがランモードを使用してコード化された場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、本明細書で「コンテキストＡ」と呼ばれる単一のＣＡＢＡＣコンテキストを使用して第１のビンをコーディングし得る。図４に示されているように、コンテキストＡは、ランモードと、コピーモードと、前の行からのコピーモードとの各々について可能なコンテキストを含む。表２００の特定の例において、ビデオエンコーダ２０およびビデオデコーダ３０は、コピーモードと前の行からのコピーモードの両方について共有されたコンテキスト、すなわち１の値を使用する。
【０１９６】
[0190]  対照的に、切捨単項コードワードの第２のビンをコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセルのために使用されるパレットベースコーディングモードに依存しないコンテキストを使用し得る。従って、ビデオエンコーダ２０および／またはビデオデコーダ３０は、以前コード化された近隣ピクセルのいずれかに関係するモード識別情報とは無関係に切捨単項コードワードの第２のビンをコーディングし得る。例えば、第２のビンは、以前コード化された近隣ピクセルのいずれかに関係する変化するモード情報に鑑みて不変のままであり得る。ビデオエンコーダ２０および／またはビデオデコーダ３０が切捨単項コードワードの第２のビンをコーディングするために使用し得るＣＡＢＡＣコンテキストは、本明細書では「コンテキストＣ」と呼ばれる。
【０１９７】
[0191]  表２００の特定の例において、以前コード化された上方近隣ピクセルは、ランモードに従ってコード化された。この例において、ビデオエンコーダ２０およびビデオデコーダ３０は、切捨単項コードワードの第２のビンをコーディングするために可能なコンテキストを決定する際にランモードを排除し得る。図４に示されているように、表２００は、ランモードに対応するためのコンテキストＣの値を含まない。
【０１９８】
[0192]  図５は、概念図であり、ビデオエンコーダ２０およびビデオデコーダ３０が本明細書で説明する制約のうちの１つまたは複数を実施し得る例示的なパレットコード化ブロック３００を示す。パレットコード化ブロック３００は、現在の開始ピクセル３０２と、参照開始ピクセル３０４と、以前コード化されたネイバーピクセル３０６と、左ネイバー参照ピクセル３０８とを含む。参照開始ピクセル３０４は、対応するランの１番目のピクセルであり、ランの残りのピクセルは、図５において参照開始ピクセル３０４と共通の陰影図式で示されている。現在の開始ピクセル３０２は、対応するランの１番目のピクセルであり、ランの残りのピクセルは、図５において現在の開始ピクセル３０２と共通の陰影図式で示されている。
【０１９９】
[0193]  例えば、ビデオデコーダ３０は、パレットコード化ブロック３００を復号するためのパレットを決定し得、ここで、パレットは、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む。さらに、ビデオデコーダ３０は、参照開始ピクセル３０４において開始し、所定のランレングスの最後に終了する、パレットコード化ブロック３００のそれらのピクセルのためのパレットインデックスの参照ランを決定し得る。ビデオデコーダ３０は、パレットコード化ブロック３００内でパレットインデックスの現在のランを決定するためにパレットインデックスの参照ランを使用し得、ここで、現在のランは、現在の開始ピクセル３０２において開始し、所定のランレングスの最後に終了する。
【０２００】
[0194]  より具体的には、現在のランを決定するために、ビデオデコーダ３０は、参照ランを開始する参照開始ピクセル３０４のためのパレットインデックスを位置特定し得る。図示のように、参照開始ピクセル３０４のインデックスは、現在の開始ピクセル３０２から少なくとも１つのライン離間する。さらに、ビデオデコーダ３０は参照ランのランレングスを決定し得、ここで、参照ランの最後のインデックスは、ブロック中で現在の開始ピクセル３０２のインデックスから少なくとも１つのインデックスだけ離れる。ビデオデコーダ３０デバイスは、参照ラン中に含まれるインデックスをパレットインデックスの現在のランとしてコピーし、パレットを使用してパレットインデックスのコピーされた現在のランにマッピングされたブロックのピクセルを復号し得る。
【０２０１】
[0195]  いくつかの例において、ビデオエンコーダ２０およびビデオデコーダ３０は、ネイバーピクセル３０６が前の行からのコピーモードでコード化され、左ネイバーピクセル３０６のためのパレットインデックスがネイバー参照ピクセル３０８からコピーされたと決定し得る。図示のように、パレットコード化ブロック３００の例において、ネイバー参照ピクセル３０８は、左側ネイバーピクセル３０６と現在の開始ピクセル３０２とを含む行の３つの行上方に配置される。より具体的には、左ネイバーピクセル３０６および現在の開始ピクセル３０２は、パレットコード化ブロック３００の（行番号４をもつ）５番目の行中に配置されるが、ネイバー参照ピクセル３０８は、パレットコード化ブロック３００の（行番号１をもつ）２番目の行中に配置される。
【０２０２】
[0196]  本開示の制約を適用すると、ビデオエンコーダ２０およびビデオデコーダ３０は、現在の開始ピクセル３０２が、前の行からのコピーモードに従ってコード化された場合、ネイバー参照ピクセル３０８を含む同じ（すなわち、２番目の）行からインデックスを引き継ぐことができないと決定し得る。例えば、ビデオエンコーダ２０およびビデオデコーダ３０は、現在の開始ピクセル３０２と同じ列中にある２番目の行のピクセルがネイバー参照ピクセル３０８と同じラン中にあると決定し得る。次に、ビデオエンコーダ２０およびビデオデコーダ３０は、ネイバー参照ピクセル３０８と同じラン中にある潜在的参照ピクセルが、現在の開始ピクセル３０２のために引き継ぐべきユニークパレットインデックスを提供しないと決定し得る。従って、ビデオエンコーダ２０およびビデオデコーダ３０は、現在の開始ピクセル３０２のための参照ピクセルが、ネイバー参照ピクセル３０８を含む行に先行する行中に配置されると決定し得る。
【０２０３】
[0197]  パレットコード化ブロック３００の特定の例において、ネイバー参照ピクセル３０８の行に先行する唯一の行は、パレットコード化ブロック３００の（行番号０をもつ）１番目の行である。従って、ビデオエンコーダ２０およびビデオデコーダ３０は、１番目の行と現在の開始ピクセル３０２を含む５番目の列との交差を位置特定することによって参照開始ピクセル３０４を識別し得る。このようにして、図５は、対応する参照ピクセル（この場合では参照開始ピクセル３０４）が行０中に含まれるように、現在のピクセル３０２が本開示の前の行からのコピーモードに従ってパレットコード化される一例を示している。
【０２０４】
[0198]  図５の特定の例において、参照ピクセルランと現在のピクセルランとのマッチングレングスは６つのピクセルである。ビデオエンコーダ２０は、参照開始ピクセル３０４のインデックスにおいて開始する６つの連続するインデックスを、現在の開始ピクセル３０２において開始する６つのピクセルの対応するランのためのインデックスにコピーし得る。それぞれのピクセルランのマッチングレングスを符号化し、ビデオデコーダ３０にシグナリングする。さらに、ビデオエンコーダ２０は、ビデオデコーダ３０に対して６のマッチングレングスを符号化し得る。
【０２０５】
[0199]  ビデオデコーダ３０は、パレットコード化ブロック３００を再構成するために、現在の開始ピクセル３０２が前の行からのコピーモードで符号化されたことを示すシグナリングされた情報、並びにシグナリングされたマッチングレングスを使用し得る。例えば、ビデオデコーダ３０は、参照開始ピクセル３０４において開始する６ピクセル長ランのインデックスを、現在の開始ピクセル３０２において開始する６ピクセル長ランにコピーし得る。いくつかの例において、ビデオエンコーダ２０は、減分された値としてマッチングレングスをシグナリングし得る。例えば、ビデオエンコーダ２０は、マッチングレングスの最小値だけマッチングレングスを減分し得る。そのような例において、ビデオデコーダ３０は、受信された値をマッチングレングスの所定の最小値だけ増分することによってマッチングレングスを再構成し得る。
【０２０６】
[0200]  参照ピクセルが現在のピクセルについてそれから選択され得る可能な行の数を説明した様式で制約することによって、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクチャ精度を維持しながらコンピューティングリソースを節約するように本開示の技法を実施し得る。より具体的には、ビデオエンコーダ２０およびビデオデコーダ３０は、探索されるべき行の数を限定し、それにより、メモリアクセスおよび処理クロックサイクル要件を低減し得る。さらに、上記で説明したように減分されたマッチングレングス値を使用することによって、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクチャ精度を維持しながら、マッチングレングスを取得するためのビットレートおよびコンピューティングリソースを節約するように本開示の技法を実施し得る。
【０２０７】
[0201]  図６は、ビデオ復号デバイスが本開示の１つまたは複数のパレットベース復号技法を行い得る例示的なプロセス３２０を示すフローチャートである。プロセス３２０は本開示の態様による様々なデバイスによって行われ得るが、プロセス３２０は、説明を容易にするために、ここでは図１および図３のビデオデコーダ３０に関して説明される。
【０２０８】
[0202]  図６の例において、ビデオデコーダ３０は、パレットコード化ブロックのためのパレットを決定する（３２２）。様々な例において、ビデオデコーダ３０は、ビットストリーム中で受信されるパレット符号化ブロックのためのパレットを独立して決定するか、別のパレットコード化ブロックからパレットをコピーするか、またはビットストリーム中でパレット自体を受信し得る。
【０２０９】
[0203]  さらに、ビデオデコーダ３０は、パレットコード化ブロック内で参照ランのためのパレットインデックスを決定し得る（３２４）。例えば、ビデオデコーダ３０は、最初の連続する一連のピクセルのためのパレットインデックスを再構成し得、これらは、今度は、１つまたは複数の後続の一連のピクセルのための参照ピクセルのランとして働き得る。
【０２１０】
[0204]  ビデオデコーダ３０は、参照インデックスが現在のランの開始インデックスの１つまたは複数のライン上方に離間したように、参照ラン中の参照インデックスを位置特定し得る（３２６）。例えば、現在復号されているピクセルのパレットインデックスは、現在のランの開始インデックスとして働き得る。さらに、参照ラン中の第１のピクセルのパレットインデックスは、参照インデックスとして働き得る。図５のパレットコード化ブロック３００の例に適用されると、ビデオデコーダ３０は、参照インデックスとして参照開始ピクセル３０８のパレットインデックスを識別し、現在のランの開始ピクセルとして現在の開始ピクセル３０２のパレットインデックスを識別し得る。
【０２１１】
[0205]  ビデオデコーダ３０は、参照ランのランレングスを決定し得る（３２８）。様々な例によれば、ビデオデコーダ３０は、現在のランにコピーすべき参照ランの連続するインデックスの数を決定するために、そのランレングスを使用し得る。例えば、ビデオデコーダ３０は、ランレングスが、ビデオエンコーダ２０から受信される符号化ビデオビットストリーム中でシグナリングされたマッチングレングスに等しいと決定し得る。次に、ビデオデコーダ３０は、参照インデックスにおいて開始しランレングスまでカウントアップして、参照ランのパレットインデックスを現在のランにコピーする（３３０）。より具体的には、ビデオデコーダ３０は、開始ピクセルにおいて開始し、決定されたランレングスまでカウントアップするように、現在のランを決定し得る。さらに、ビデオデコーダ３０は、それぞれのコピーされたパレットインデックスによって識別される色情報を使用して現在のランのピクセルを再構成し得る（３３２）。
【０２１２】
[0206]  このようにして、様々な例において、本開示は、ビデオデータを復号する方法を対象とし、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを含む。本方法のいくつかの実施形態によれば、第２の複数のパレットインデックスを決定することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを復号することとを含む。
【０２１３】
[0207]  本方法のいくつかの実施形態によれば、参照インデックスを位置特定することは、ブロックの探索範囲内で参照インデックスを位置特定することを含む。１つのそのような実施形態において、探索範囲は、ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを含む。別のそのような実施形態において、本方法は、探索範囲を表すコードワードを復号することによって探索範囲を取得することをさらに含む。いくつかの例によれば、コードワードは切捨単項フォーマットで表される。
【０２１４】
[0208]  本方法のいくつかの例示的な実施形態において、ランの最後のインデックスは、ブロック中で第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる。いくつかの例示的な実施形態によれば、本方法は、近隣インデックスに関連するパレットベースコーディングモードを決定することと、近隣インデックスが、第２の複数のパレットインデックスの最初のインデックスに隣接して配置される、近隣インデックスに関連するパレットベースコーディングモードが前の行からのコピーモードを含む場合、参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することとをさらに含み得、ここで、近隣インデックスはネイバー参照インデックスからコピーされる。１つのそのような例において、ネイバー参照インデックスは、近隣インデックスの少なくとも２つのライン上方に配置され、参照インデックスは、ネイバー参照インデックスの少なくとも１つのライン上方に配置される。別のそのような例において、本方法は、参照インデックスを位置特定すべきブロックの探索範囲を制約することをさらに含み得る。
【０２１５】
[0209]  いくつかの例において、ランレングスを決定することは、第１の複数のパレットインデックスと第２の複数のパレットインデックスとの間のマッチングレングスを決定することを含み、ランレングスは、第１の複数と第２の複数との間の連続するマッチングインデックスの数を示す。いくつかの例において、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることは、第１の複数のパレットインデックスと第２の複数のパレットインデックスとの間のマッチングレングスに基づいて第１の複数のパレットインデックスをコピーすることを含む。１つのそのような例によれば、本方法は、符号化ビデオビットストリーム中で、マッチングレングスの減分された値を受信することをさらに含む。
【０２１６】
[0210]  様々な例において、本方法はワイヤレス通信デバイス上で実行可能であり、本デバイスは、ビデオデータを記憶するように構成されるメモリと、メモリに記憶されたビデオデータを処理するための命令を実行するように構成されるプロセッサと、ビデオデータのブロックを受信するように構成される受信機とを含む。いくつかの例において、ワイヤレス通信デバイスはセルラー電話であり、復号されるべきビデオデータのブロックは受信機によって受信され、セルラー通信規格に従って変調される。本明細書で説明する復号技法は、様々な例において、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行わせる命令で符号化されたコンピュータ可読記憶媒体またはコンピュータ可読記憶デバイスによって実施され得る。本明細書で説明する復号技法は、様々な例において、符号化ビデオデータを記憶するように構成されるメモリと、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行うように構成される１つまたは複数のプロセッサとを含むデバイスによって実施され得る。
【０２１７】
[0211]  図７は、ビデオ符号化デバイスが本開示の１つまたは複数のパレットベース復号技法を行い得る例示的なプロセス３５０を示すフローチャートである。プロセス３５０は本開示の態様による様々なデバイスによって行われ得るが、プロセス３５０は、説明を容易にするために、ここでは図１および図２のビデオエンコーダ２０に関して説明される。
【０２１８】
[0212]  図７の例において、ビデオエンコーダ２０は、パレットコード化ブロックのためのパレットを決定する（３５２）。様々な例において、ビデオエンコーダ２０は、パレット符号化ブロックのための新しいパレットを構成するか、または別のパレットコード化ブロックからパレットをコピーするか、またはパレットベースビデオコーディング技法に合致する他の方法でパレットを決定し得る。
【０２１９】
[0213]  さらに、ビデオエンコーダ２０は、パレットコード化ブロック内で参照ランのためのパレットインデックスを決定し得る（３５４）。例えば、ビデオエンコーダ２０は、最初の連続する一連のピクセルのためのパレットインデックスを割り当て得、これらは、今度は、１つまたは複数の後続の一連のピクセルのための参照ピクセルのランとして働き得る。
【０２２０】
[0214]  ビデオエンコーダ２０は、参照インデックスが現在のランの開始インデックスの１つまたは複数のライン上方に離間したように、参照ラン中の参照インデックスを位置特定し得る（３５６）。例えば、現在符号化されているピクセルのパレットインデックスは、現在のランの開始インデックスとして働き得る。さらに、参照ラン中の第１のピクセルのパレットインデックスは、参照インデックスとして働き得る。図５のパレットコード化ブロック３００の例を適用すると、ビデオエンコーダ２０は、参照インデックスとして参照開始ピクセル３０８のパレットインデックスを識別し、現在のランの開始ピクセルとして現在の開始ピクセル３０２のパレットインデックスを識別し得る。
【０２２１】
[0215]  ビデオエンコーダ２０は、参照ランのランレングスを決定し得る（３５８）。様々な例によれば、ビデオエンコーダ２０は、現在のランにコピーすべき参照ランの連続するインデックスの数を決定するために、そのランレングスを使用し得る。次に、ビデオエンコーダ２０は、参照インデックスにおいて開始しランレングスまでカウントアップして、参照ランのパレットインデックスを現在のランにコピーする（３６０）。より具体的には、ビデオエンコーダ２０は、開始ピクセルにおいて開始し、決定されたランレングスまでカウントアップするように、現在のランを決定し得る。ビデオエンコーダ２０は、パレットを使用して各それぞれのピクセルの色情報を識別するために、参照ランからパレットインデックスをコピーすることによって現在のランのピクセルを符号化し得る（３６２）。さらに、ビデオエンコーダ２０は、（例えば、切捨単項コードワードの形態の）コーディングモードをビデオデコーダ３０にシグナリングし得る（３６４）。パレットベースコーディングモードを識別する情報をシグナリングすることによって、ビデオエンコーダ２０は、ビデオデコーダ３０が現在のランを再構成するために逆の技法を実施することを可能にし得る。例えば、ビデオエンコーダ２０が、現在の開始ピクセルについて前の行からのコピーモードを識別するためのコードワードをシグナリングした場合、ビデオデコーダ３０は、そのシグナリングされた情報を使用して参照ランのパレットインデックスを現在のランにコピーし、それにより、コーディング精度を維持しながらコーディング効率を改善し得る。
【０２２２】
[0216]  いくつかの例において、本開示は、ビデオデータを符号化する方法を開示し、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに基づいてビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することとを含む。これらの例示的な方法によれば、第２の複数のパレットインデックスを決定することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを符号化することとを含む。
【０２２３】
[0217]  いくつかの例において、参照インデックスを位置特定することは、ブロックの探索範囲内で参照インデックスを位置特定することを含む。１つのそのような例によれば、探索範囲は、ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを含む。いくつかの例において、本方法は、探索範囲を表すコードワードを符号化することと、符号化ビデオビットストリーム中で符号化コードワードをシグナリングすることとをさらに含む。１つのそのような例によれば、コードワードを符号化することは、コードワードを切捨単項フォーマットで符号化することを含む。
【０２２４】
[0218]  本方法のいくつかの例示的な実施形態によれば、ランの最後のインデックスは、ブロック中で第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる。いくつかの例において、本方法は、近隣インデックスに関連するパレットベースコーディングモードを決定することと、近隣インデックスが、第２の複数のパレットインデックスの最初のインデックスに隣接して配置される、近隣インデックスに関連するパレットベースコーディングモードが前の行からのコピーモードを含む場合、参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することとをさらに含み得、ここで、近隣インデックスはネイバー参照インデックスからコピーされる。１つのそのような例において、ネイバー参照インデックスは、近隣インデックスの少なくとも２つのライン上方に配置され、参照インデックスは、ネイバー参照インデックスの少なくとも１つのライン上方に配置される。他のそのような例において、本方法は、参照インデックスを位置特定すべきブロックの探索範囲を制約することをさらに含み得る。１つのそのような例によれば、ランレングスを決定することは、第１の複数のパレットインデックスと第２の複数のパレットインデックスとの間のマッチングレングスを決定することを含み、ランレングスは、第１の複数と第２の複数との間の連続するマッチングインデックスの数を示し、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることは、第１の複数のパレットインデックスと第２の複数のパレットインデックスとの間のマッチングレングスに基づいて第１の複数のパレットインデックスをコピーすることを含む。一実施形態によれば、本方法は、符号化ビデオビットストリーム中で、マッチングレングスの減分された値をシグナリングすることをさらに含む。
【０２２５】
[0219]  様々な例において、本方法はワイヤレス通信デバイス上で実行可能であり得、本デバイスは、ビデオデータを記憶するように構成されるメモリと、メモリに記憶されたビデオデータを処理するための命令を実行するように構成されるプロセッサと、ブロックを表す符号化ビデオデータを送信するように構成される送信機とを含む。１つのそのような例において、ワイヤレス通信デバイスはセルラー電話であり、符号化ビデオデータは送信機によって送信され、セルラー通信規格に従って変調される。本明細書で説明する符号化技法は、様々な例において、実行されたとき、ビデオ符号化デバイスの１つまたは複数のプロセッサに、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行わせる命令で符号化されたコンピュータ可読記憶媒体またはコンピュータ可読記憶デバイスによって実施され得る。本明細書で説明する符号化技法は、様々な例において、ビデオデータを記憶するように構成されるメモリと、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行うように構成される１つまたは複数のプロセッサとを含むデバイスによって実施され得る。
【０２２６】
[0220]  図８は、ビデオエンコーダ２０および／またはビデオデコーダ３０が本開示の前の行からのコピーモードを使用してコーディングし得るブロックの別の例を示す概念図である。現在のＣＵ４００は、ｒｏｗ＿０  ４０２とｒｏｗ＿４  ４０４とを含む、ピクセルのいくつかの行を含む。図示のように、ｒｏｗ＿４  ４０４は、（×でマークされ、参照ピクセル４１０で開始する）参照ランと呼ばれる、ｒｏｗ＿０  ４０２の４つの以前コード化されたピクセルに対して、（×でマークされ、ピクセル４０８で開始する）現在コード化されている４つのピクセルのランを含む。いくつかの例において、現在のＣＵ４００をコーディングするために、ビデオエンコーダ２０および／またはビデオデコーダ３０は、参照ピクセル４１０で開始するｒｏｗ＿０  ４０２中の参照ランのためのパレットインデックスを、ピクセル４０８で開始する現在のランの対応するピクセルにコピーし得る。.図８の特定の例において、参照ランと現在のランとの間のマッチングランレングスは４であり、これは、現在のＣＵ４００をコーディングするために、ビデオエンコーダ２０およびビデオデコーダ３０が、４つの連続するパレットインデックスのストリングを参照ランから現在のランにコピーし得ることを意味する。
【０２２７】
[0221]  従って、図８の例において、ビデオエンコーダ２０およびビデオデコーダ３０は、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックス、例えば、ｒｏｗ＿０  ４０２の４つのマークされたピクセルに関連付けられたインデックスを決定すること得る。さらに、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のラン（ピクセル４０８において開始する４つのピクセルのラン）のランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモード（例えば、上方からのコピーモード）を有効化し得る。図８に示されている例において、ランレングスしきい値は４であり得、従って、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のランについてパレットコーディングモードを使用し得るが、比較的より短いランについてパレットコーディングモードを無効化し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して現在のランをコーディングし得る。
【０２２８】
[0222]  図９は、ビデオ復号デバイスが本開示の１つまたは複数のパレットベース復号技法を行い得る例示的なプロセス４２０を示すフローチャートである。プロセス４２０は本開示の態様による様々なデバイスによって行われ得るが、プロセス４２０は、説明を容易にするために、ここでは図１および図３のビデオデコーダ３０に関して説明される。
【０２２９】
[0223]  図９の例において、ビデオデコーダ３０は、パレットコード化ブロックのためのパレットを決定する（４２２）。様々な例において、ビデオデコーダ３０は、ビットストリーム中で受信されるパレット符号化ブロックのためのパレットを独立して決定するか、別のパレットコード化ブロックからパレットをコピーするか、またはビットストリーム中でパレット自体を受信し得る。
【０２３０】
[0224]  さらに、ビデオデコーダ３０は、パレットコード化ブロック内で参照ランのためのパレットインデックスを決定し得る（４２４）。例えば、ビデオデコーダ３０は、最初の連続する一連のピクセルのためのパレットインデックスを再構成し得、これらは、今度は、１つまたは複数の後続の一連のピクセルのための参照ピクセルのランとして働き得る。
【０２３１】
[0225]  ビデオデコーダ３０は、現在のランのランレングスに基づいて特定のパレットコーディングモードを有効化し得る（４２６）。例えば、ランレングスがしきい値ランレングスを満たす（例えば、それよりも大きくそれに等しい）場合、ビデオデコーダ３０は、現在のランに関して前の行からのコピーモードを有効化し得る。ビデオデコーダ３０は、有効化されたパレットコーディングモードを使用して現在のランのピクセルを復号し得る（４２８）。例えば、有効化されたモードが前の行からのコピーモードである場合、ビデオデコーダ３０は、図６に示されたプロセス３２０に従って現在のランを復号し得る。
【０２３２】
[0226]  このようにして、様々な例において、本開示は、ビデオデータを復号する方法を対象とし、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して復号されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを復号することとを含む。いくつかの例では、本方法は、ランレングスとランレングスしきい値との間の差分を決定することと、ランのランレングスを決定するために差分をランレングスしきい値に加算することとをさらに含み得る。１つのそのような例において、差分を決定することは、符号化ビデオビットストリームから差分を表す１つまたは複数のシンタックス要素を復号することを含む。別のそのような例において、ランレングスしきい値は、符号化ビットストリーム中でシンタックス要素によって示されない一定のランレングスしきい値を含む。
【０２３３】
[0227]  いくつかの例示的な実施形態によれば、本方法は、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとに基づいてルックアップテーブルを使用してランレングスしきい値を決定することをさらに含む。いくつかの例では、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを復号することは、第１の複数のパレットインデックスを第２の複数のパレットインデックスとしてコピーすることを含む。
【０２３４】
[0228]  いくつかの例において、本方法は、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたバイナリ化ビットのそれぞれの数に基づいてランレングスしきい値を取得することをさらに含む。１つのそのような例によれば、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたバイナリ化ビットのそれぞれの数に基づいてランレングスしきい値を取得することは、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたそれぞれのバイナリ化ビットの商に所定の一定値を加算することによってランレングスしきい値を計算することを含む。
【０２３５】
[0229]  いくつかの例によれば、パレットモードは前の行からのコピーモードである。１つのそのような例において、前の行からのコピーモードを使用して第２の複数のパレットインデックスに対して第１の複数のパレットインデックスを復号することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることとを含む。いくつかの例において、本方法は、第２の複数のパレットインデックスに関連するパレットベースコーディングモードを示すデータを受信することと、０の値を示す受信されたデータに基づいて、パレットベースコーディングモードが上方からのコピーモードまたは前の行からのコピーモードのうちの１つを含むと決定することとをさらに含む。
【０２３６】
[0230]  様々な例において、本方法はワイヤレス通信デバイス上で実行可能であり、本デバイスは、ビデオデータを記憶するように構成されるメモリと、メモリに記憶されたビデオデータを処理するための命令を実行するように構成されるプロセッサと、ビデオデータのブロックを受信するように構成される受信機とを含む。いくつかの例において、ワイヤレス通信デバイスはセルラー電話であり、復号されるべきビデオデータのブロックは受信機によって受信され、セルラー通信規格に従って変調される。本明細書で説明する復号技法は、様々な例において、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行わせる命令で符号化されたコンピュータ可読記憶媒体またはコンピュータ可読記憶デバイスによって実施され得る。本明細書で説明する復号技法は、様々な例において、符号化ビデオデータを記憶するように構成されるメモリと、本技法のうちのいずれか１つもしくは複数、またはそれらの任意の組合せを行うように構成される１つまたは複数のプロセッサとを含むデバイスによって実施され得る。
【０２３７】
[0231]  図１０は、ビデオ符号化デバイスが本開示の１つまたは複数のパレットベース復号技法を行い得る例示的なプロセス４４０を示すフローチャートである。プロセス４４０は本開示の態様による様々なデバイスによって行われ得るが、プロセス４４０は、説明を容易にするために、ここでは図１および図２のビデオエンコーダ２０に関して説明される。
【０２３８】
[0232]  図１０の例において、ビデオエンコーダ２０は、パレットコード化ブロックのためのパレットを決定する（４４２）。様々な例において、ビデオエンコーダ２０は、パレット符号化ブロックのためのパレットを独立して決定するか、別のパレットコード化ブロックからパレットをコピーするか、またはパレットベースコーディングの様々な他の技法従ってパレットを決定し得る。
【０２３９】
[0233]  さらに、ビデオエンコーダ２０は、パレットコード化ブロック内で参照ランのためのパレットインデックスを決定し得る（４４４）。例えば、ビデオエンコーダ２０は、最初の連続する一連のピクセルのためのパレットインデックスを符号化し得、これらは、今度は、１つまたは複数の後続の一連のピクセルのための参照ピクセルのランとして働き得る。
【０２４０】
[0234]  ビデオエンコーダ２０は、現在のランのランレングスに基づいて特定のパレットコーディングモードを有効化し得る（４４６）。例えば、ランレングスがしきい値ランレングスを満たす（例えば、それよりも大きくそれに等しい）場合、ビデオエンコーダ２０は、現在のランに関して前の行からのコピーモードを有効化し得る。ビデオエンコーダ２０は、有効化されたパレットコーディングモードを使用して現在のランのピクセルを符号化し得る（４４８）。例えば、有効化されたモードが前の行からのコピーモードである場合、ビデオエンコーダ２０は、図７に示されたプロセス３５０に従って現在のランを符号化し得る。
【０２４１】
[0235]  このようにして、様々な例において、本開示は、ビデオデータを符号化する方法を対象とし、本方法は、ビデオデータのブロックを復号するためのパレットを決定することと、ここで、パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、ビデオデータのブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、第１の複数のパレットインデックスに対して符号化されているビデオデータのブロックの第２のピクセルのための第２の複数のパレットインデックスのランのランレングスがランレングスしきい値を満たすことに基づいて、パレットコーディングモードを有効化することと、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを符号化することとを含む。いくつかの例において、本方法は、ランレングスとランレングスしきい値との間の差分を決定することと、符号化ビデオビットストリーム中で差分を表すシンタックス要素をシグナリングすることとをさらに含む。
【０２４２】
[0236]  いくつかの例において、ランレングスしきい値は、符号化ビットストリーム中でシンタックス要素によって示されない一定のランレングスしきい値を含む。いくつかの例示的な実施形態によれば、本方法は、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとに基づいてルックアップテーブルを使用してランレングスしきい値を決定することを含む。いくつかの例において、パレットコーディングモードを使用して第１の複数のパレットインデックスに対して第２の複数のパレットインデックスのランを符号化することは、第１の複数のパレットインデックスを第２の複数のパレットインデックスとしてコピーすることを含む。
【０２４３】
[0237]  いくつかの例示的な実施形態によれば、本方法は、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたバイナリ化ビットのそれぞれの数に基づいてランレングスしきい値を取得することをさらに含む。１つのそのような実施形態において、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたバイナリ化ビットのそれぞれの数に基づいてランレングスしきい値を取得することは、参照行オフセットと第２の複数のパレットインデックスの開始パレットインデックスとの各々に関連付けられたそれぞれのバイナリ化ビットの商に所定の一定値を加算することによってランレングスしきい値を計算することを含む。
【０２４４】
[0238]  いくつかの事例において、本方法は、符号化ビデオビットストリーム中でランレングスしきい値をシグナリングすることをさらに含む。いくつかの例によれば、パレットモードは前の行からのコピーモードである。１つのそのような例において、前の行からのコピーモードを使用して第２の複数のパレットインデックスに対して第１の複数のパレットインデックスを符号化することは、第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここで、参照インデックスが、第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、第１の複数のインデックスのランのランレングスを決定することと、ここで、ランの最後のインデックスが、ブロック中で第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのインデックスだけ離れる、ラン中に含まれる第１の複数のインデックスを第２の複数のパレットインデックスとしてコピーすることと、パレットを使用して、コピーされた第２の複数のパレットインデックスに関連するブロックの複数のピクセルを符号化することとを含む。いくつかの例において、本方法は、第２の複数のパレットインデックスのためのパレットベースコーディングモードが上方からのコピーモードまたは前の行からのコピーモードのうちの１つを含むと決定することと、パレットベースコーディングモードが上方からのコピーモードまたは前の行からのコピーモードのうちの１つを含むと決定したことに基づいて、０の値を有するようにパレットコーディングモードを示すデータを符号化することとをさらに含む。
【０２４５】
[0239]  本開示のいくつかの態様について、説明のために開発中のＨＥＶＣ規格に関して説明した。但し、本開示で説明する技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
【０２４６】
[0240]  上記で説明した技法は、ビデオエンコーダ２０（図１および図２）および／またはビデオデコーダ３０（図１および図３）によって行われ得、ビデオエンコーダ２０とビデオデコーダ３０の両方はビデオコーダと総称され得る。同様に、ビデオコーディングは、適用な可能なとき、ビデオ符号化またはビデオ復号を指し得る。さらに、ビデオ符号化およびビデオ復号は、ビデオデータを「処理すること」と総称され得る。
【０２４７】
[0241]  本明細書で説明した技法の全ては、個々にまたは組合せで使用され得ることを理解されたい。本開示は、ブロックサイズ、パレットサイズ、スライスタイプなど、いくつかのファクタに応じて変化し得るいくつかのシグナリング方法を含む。シンタックス要素をシグナリングまたは推論することにおけるそのような変形形態は、エンコーダおよびデコーダにアプリオリに知られ得るか、またはタイルレベルでもしくは他の場所で、ビデオパラメータセット（ＶＰＳ）、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、スライスヘッダ中で明示的にシグナリングされ得る。
【０２４８】
[0242]  例によっては、本明細書で説明した技法のうちのいずれかの、いくつかの動作またはイベントは、異なる順序で行われ得、追加、マージ、または完全に除外され得る（例えば、全ての説明した動作またはイベントが、本技法の実施のために必要であるとは限らない）ことを認識されたい。その上、いくつかの例において、動作またはイベントは、連続的にではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に行われ得る。
【０２４９】
[0243]  １つまたは複数の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれの任意の組合せで実施され得る。ソフトウェアで実施される場合、機能は、１つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コードおよび／またはデータ構造を取り出すために、１つもしくは複数のコンピュータまたは１つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０２５０】
[0244]  限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【０２５１】
[0245]  命令は、１つもしくは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、上記の構造または本明細書で説明した技法の実施に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様において、本明細書で説明した機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素において完全に実施され得る。
【０２５２】
[0246]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、多種多様なデバイスまたは装置において実施され得る。本開示において、様々な構成要素、モジュール、またはユニットについて、開示する技法を行うように構成されるデバイスの機能的態様を強調するように説明したが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作するハードウェアユニットの集合によって提供され得る。
【０２５３】
[0247]  様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
【図１】
2017525230.tif 000015
【図２】
2017525230.tif 000016
【図３】
2017525230.tif 000017
【図４】
2017525230.tif 000018
【図５】
2017525230.tif 000019
【図６】
2017525230.tif 000020
【図７】
2017525230.tif 000021
【図８】
2017525230.tif 000022
【図９】
2017525230.tif 000023
【図１０】
2017525230.tif 000024
【手続補正書】
【提出日】平成29年3月10日(2017.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を備える、方法。
【請求項２】
前記参照インデックスを位置特定すべき探索範囲を決定することをさらに備え、ここにおいて、前記参照インデックスが、前記ブロック内になるように制約され、前記参照インデックスを位置特定することが、前記ブロック内の前記探索範囲内で前記参照インデックスを位置特定することを備える、請求項１に記載の方法。
【請求項３】
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、請求項２に記載の方法。
【請求項４】
前記探索範囲を決定することが、前記探索範囲を表すコードワードを復号することによって前記探索範囲を取得することを備える、請求項２に記載の方法。
【請求項５】
前記コードワードが切捨単項フォーマットで表された、請求項４に記載の方法。
【請求項６】
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、請求項１に記載の方法。
【請求項７】
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することと
をさらに備え、
前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、
請求項１に記載の方法。
【請求項８】
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、
請求項７に記載の方法。
【請求項９】
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、請求項７に記載の方法。
【請求項１０】
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、
請求項９に記載の方法。
【請求項１１】
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値を受信することをさらに備える、請求項１０に記載の方法。
【請求項１２】
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
ビデオデータの前記ブロックを受信するように構成される受信機と
を備える、請求項１に記載の方法。
【請求項１３】
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、請求項１２に記載の方法。
【請求項１４】
ビデオデータを符号化する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを符号化することと
を備える、方法。
【請求項１５】
前記参照インデックスを位置特定すべき探索範囲を決定することをさらに備え、ここにおいて、前記参照インデックスが、前記ブロック内になるように制約され、前記参照インデックスを位置特定することが、前記ブロック内の前記探索範囲内で前記参照インデックスを位置特定することを備える、請求項１４に記載の方法。
【請求項１６】
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、請求項１５に記載の方法。
【請求項１７】
前記探索範囲を表すコードワードを符号化することと、
符号化ビデオビットストリーム中で前記符号化コードワードをシグナリングすることと
をさらに備える、請求項１５に記載の方法。
【請求項１８】
前記コードワードを符号化することが、前記コードワードを切捨単項フォーマットで符号化することを備える、請求項１７に記載の方法。
【請求項１９】
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、請求項１４に記載の方法。
【請求項２０】
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することと
をさらに備え、
ここにおいて、前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、
請求項１４に記載の方法。
【請求項２１】
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、請求項２０に記載の方法。
【請求項２２】
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、請求項２０に記載の方法。
【請求項２３】
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、
請求項２２に記載の方法。
【請求項２４】
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値をシグナリングすることをさらに備える、請求項２３に記載の方法。
【請求項２５】
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
前記ブロックを表す符号化ビデオデータを送信するように構成される送信機と
を備える、請求項１４に記載の方法。
【請求項２６】
前記ワイヤレス通信デバイスがセルラー電話であり、前記符号化ビデオデータが前記送信機によって送信され、セルラー通信規格に従って変調される、請求項２５に記載の方法。
【請求項２７】
符号化ビデオデータを記憶するように構成されるメモリと、
１つまたは複数のプロセッサと
を備えるビデオ復号デバイスであって、前記１つまたは複数のプロセッサは、
前記符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を行うように構成され、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記１つまたは複数のプロセッサは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行うように構成される、ビデオ復号デバイス。
【請求項２８】
前記ビデオ復号デバイスがワイヤレス通信デバイスであり、前記ビデオ復号デバイスが、前記符号化ビデオデータの前記ブロックを受信するように構成される受信機をさらに備える、請求項２７に記載のビデオ復号デバイス。
【請求項２９】
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、請求項２８に記載のビデオ復号デバイス。
【請求項３０】
命令で符号化された非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、
符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を行わせ、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記命令は、実行されたとき、前記１つまたは複数のプロセッサに、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行わせるように構成される、非一時的コンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２５３
【補正方法】変更
【補正の内容】
【０２５３】
[0247]  様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを復号する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を備える、方法。
［Ｃ２］
前記参照インデックスを位置特定することが、前記ブロックの探索範囲内で前記参照インデックスを位置特定することを備える、Ｃ１に記載の方法。
［Ｃ３］
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、Ｃ２に記載の方法。
［Ｃ４］
前記探索範囲を表すコードワードを復号することによって前記探索範囲を取得することをさらに備える、Ｃ２に記載の方法。
［Ｃ５］
前記コードワードが切捨単項フォーマットで表された、Ｃ４に記載の方法。
［Ｃ６］
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、Ｃ１に記載の方法。
［Ｃ７］
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することと
をさらに備え、
前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、Ｃ１に記載の方法。
［Ｃ８］
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、Ｃ７に記載の方法。
［Ｃ９］
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、Ｃ７に記載の方法。
［Ｃ１０］
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、Ｃ９に記載の方法。
［Ｃ１１］
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値を受信することをさらに備える、Ｃ１０に記載の方法。
［Ｃ１２］
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
ビデオデータの前記ブロックを受信するように構成される受信機と
を備える、Ｃ１に記載の方法。
［Ｃ１３］
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、Ｃ１２に記載の方法。
［Ｃ１４］
ビデオデータを符号化する方法であって、
ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を備え、ここにおいて、前記第２の複数のパレットインデックスを決定することは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを符号化することと
を備える、方法。
［Ｃ１５］
前記参照インデックスを位置特定することが、前記ブロックの探索範囲内で前記参照インデックスを位置特定することを備える、Ｃ１４に記載の方法。
［Ｃ１６］
前記探索範囲が、前記ブロックの少なくとも２つのラインに対応するパレットインデックスのサブセットを備える、Ｃ１５に記載の方法。
［Ｃ１７］
前記探索範囲を表すコードワードを符号化することと、
符号化ビデオビットストリーム中で前記符号化コードワードをシグナリングすることと
をさらに備える、Ｃ１５に記載の方法。
［Ｃ１８］
前記コードワードを符号化することが、前記コードワードを切捨単項フォーマットで符号化することを備える、Ｃ１７に記載の方法。
［Ｃ１９］
前記ランの前記最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの最初のインデックスからインデックスの少なくとも１つのラインだけ離れる、Ｃ１４に記載の方法。
［Ｃ２０］
近隣インデックスに関連するパレットベースコーディングモードを決定することと、前記近隣インデックスが、前記第２の複数のパレットインデックスの前記最初のインデックスに隣接して配置される、
前記近隣インデックスに関連する前記パレットベースコーディングモードが前の行からのコピーモードを備える場合、前記参照インデックスがネイバー参照インデックスから少なくとも１つのライン離間すると決定することと
をさらに備え、
ここにおいて、前記近隣インデックスが前記ネイバー参照インデックスからコピーされる、Ｃ１４に記載の方法。
［Ｃ２１］
前記ネイバー参照インデックスが、前記近隣インデックスの少なくとも２つのライン上方に配置され、
前記参照インデックスが前記ネイバー参照インデックスの少なくとも１つのライン上方に配置される、Ｃ２０に記載の方法。
［Ｃ２２］
前記参照インデックスを位置特定すべき前記ブロックの探索範囲を制約することをさらに備える、Ｃ２０に記載の方法。
［Ｃ２３］
前記ランレングスを決定することが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間のマッチングレングスを決定することを備え、前記ランレングスが、前記第１の複数と前記第２の複数との間の連続するマッチングインデックスの数を示す、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることが、前記第１の複数のパレットインデックスと前記第２の複数のパレットインデックスとの間の前記マッチングレングスに基づいて前記第１の複数のパレットインデックスをコピーすることを備える、Ｃ２２に記載の方法。
［Ｃ２４］
符号化ビデオビットストリーム中で、前記マッチングレングスの減分された値をシグナリングすることをさらに備える、Ｃ２３に記載の方法。
［Ｃ２５］
ワイヤレス通信デバイス上で実行可能であり、ここにおいて、前記デバイスが、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されるプロセッサと、
前記ブロックを表す符号化ビデオデータを送信するように構成される送信機と
を備える、Ｃ１４に記載の方法。
［Ｃ２６］
前記ワイヤレス通信デバイスがセルラー電話であり、前記符号化ビデオデータが前記送信機によって送信され、セルラー通信規格に従って変調される、Ｃ２５に記載の方法。
［Ｃ２７］
符号化ビデオデータを記憶するように構成されるメモリと、
１つまたは複数のプロセッサと
を備えるビデオ復号デバイスであって、前記１つまたは複数のプロセッサは、
前記符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を行うように構成され、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記１つまたは複数のプロセッサは、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行うように構成される、ビデオ復号デバイス。
［Ｃ２８］
前記ビデオ復号デバイスがワイヤレス通信デバイスであり、前記ビデオ復号デバイスが、前記符号化ビデオデータの前記ブロックを受信するように構成される受信機をさらに備える、Ｃ２７に記載のビデオ復号デバイス。
［Ｃ２９］
前記ワイヤレス通信デバイスがセルラー電話であり、復号されるべきビデオデータの前記ブロックが前記受信機によって受信され、セルラー通信規格に従って変調される、Ｃ２８に記載のビデオ復号デバイス。
［Ｃ３０］
命令で符号化された非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオ復号デバイスの１つまたは複数のプロセッサに、
符号化ビデオデータのブロックを復号するためのパレットを決定することと、ここにおいて、前記パレットが、それぞれのパレットインデックスをそれぞれ有する１つまたは複数のパレットエントリを含む、
ビデオデータの前記ブロックの第１のピクセルのための第１の複数のパレットインデックスを決定することと、
前記第１の複数のパレットインデックスに基づいてビデオデータの前記ブロックの第２のピクセルのための第２の複数のパレットインデックスを決定することと
を行わせ、ここにおいて、前記第２の複数のパレットインデックスを決定するために、前記命令は、実行されたとき、前記１つまたは複数のプロセッサに、
前記第１の複数のパレットインデックス中に含まれる参照インデックスを位置特定することと、ここにおいて、前記参照インデックスが、前記第２の複数のパレットインデックスの最初のインデックスから少なくとも１つのライン離間する、
前記第１の複数のインデックスのランのランレングスを決定することと、ここにおいて、前記ランの最後のインデックスが、前記ブロック中で前記第２の複数のパレットインデックスの前記最初のインデックスから少なくとも１つのインデックスだけ離れる、
前記ラン中に含まれる前記第１の複数のインデックスを前記第２の複数のパレットインデックスとしてコピーすることと、
前記パレットを使用して前記コピーされた第２の複数のパレットインデックスに関連する前記ブロックの複数のピクセルを復号することと
を行わせ、それらを行うように構成される、非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2017525230.tif 000025
2017525230.tif 000026
2017525230.tif 000027