(57)【特許請求の範囲】
【請求項１】
ビットストリームの中で提供されるビデオデータを復号するための方法であって、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、前記方法が、
前記ビットストリームの中で提供される、前記ＣＵに関連するパレットをパースすることと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、前記インデックス値が、前記ＣＵに関連する前記ランレングスのすべての後にある、前記ビットストリームの中の第１の連続した位置からパースされ、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、ここにおいて、前記エスケープピクセル値が、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にある、前記ビットストリームの中の第２の連続した位置からパースされ、
前記パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、前記ＣＵを復号することと、
を備える、方法。
【請求項２】
前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットすることをさらに備える、請求項１に記載の方法。
【請求項３】
前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する前記エスケープピクセル値が並行してパースされる、請求項１に記載の方法。
【請求項４】
前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットすることをさらに備える、請求項１に記載の方法。
【請求項５】
前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する前記インデックス値が並行してパースされる、請求項１に記載の方法。
【請求項６】
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
をさらに備える、請求項１に記載の方法。
【請求項７】
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、請求項１に記載の方法。
【請求項８】
ビットストリームの中で提供されるビデオデータを復号するための装置であって、
前記ビットストリームに関連するビデオデータを記憶するように構成されたメモリと、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、
前記メモリと通信しており、
前記ビットストリームの中で提供される、前記ＣＵに関連するパレットをパースすることと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連する連続した位置の数を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、前記インデックス値が、前記ＣＵに関連する前記ランレングスのすべての後にある、前記ビットストリームの中の第１の連続した位置からパースされ、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、ここにおいて、前記エスケープピクセル値が、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にある、前記ビットストリームの中の第２の連続した位置からパースされ、
前記パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、前記ＣＵを復号することと、
を行うように構成された、プロセッサと、
を備える、装置。
【請求項９】
前記プロセッサが、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットするようにさらに構成される、請求項８に記載の装置。
【請求項１０】
前記プロセッサが、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する前記エスケープピクセル値を並行してパースするように構成される、請求項８に記載の装置。
【請求項１１】
前記プロセッサが、前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットするようにさらに構成される、および／または
前記プロセッサが、前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する前記インデックス値を並行してパースするように構成される、および／または
前記プロセッサが、
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
を行うようにさらに構成される、および／または
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、請求項８に記載の装置。
【請求項１２】
ビットストリームの中のビデオデータを符号化するための方法であって、
コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、
前記ＣＵの中の前記複数のピクセルに基づいて、パレットを生成することと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、
前記生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、前記ＣＵを符号化することと、ここにおいて、前記インデックス値が、前記ＣＵに関連するすべての前記ランレングスの後にある、前記ビットストリームの中の第１の連続した位置において符号化され、前記エスケープピクセル値が、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にある、前記ビットストリームの中の第２の連続した位置において符号化され、
を備える、方法。
【請求項１３】
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
をさらに備える、および／または
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、および／または
前記ＣＵに関連する前記インデックス値の中で最も早い位置を有するインデックス値に対応する、前記ビットストリームの中の位置を示す第１のオフセットを決定することをさらに備える、および／または
前記ＣＵに関連する前記エスケープピクセル値の中で最も早い位置を有するエスケープピクセル値に対応する、前記ビットストリームの中の位置を示す第２のオフセットを決定することをさらに備える、請求項１２に記載の方法。
【請求項１４】
ビットストリームの中のビデオデータを符号化するための装置であって、
前記ビットストリームに関連するビデオデータを記憶するように構成されたメモリと、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、
前記メモリと通信しており、
コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、
前記ＣＵの中の前記複数のピクセルに基づいて、パレットを生成することと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、
前記生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、前記ＣＵを符号化することと、ここにおいて、前記インデックス値が、前記ＣＵに関連するすべての前記ランレングスの後にある、前記ビットストリームの中の第１の連続した位置において符号化され、前記エスケープピクセル値が、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にある、前記ビットストリームの中の第２の連続した位置において符号化され、
を行うように構成された、プロセッサと、
を備える、装置。
【請求項１５】
前記プロセッサが、
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
を行うようにさらに構成される、および／または
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、および／または
前記プロセッサが、前記ＣＵに関連する前記インデックス値の中で最も早い位置を有するインデックス値に対応する、前記ビットストリームの中の位置を示す第１のオフセットを決定するようにさらに構成される、および／または
前記ＣＵに関連する前記エスケープピクセル値の中で最も早い位置を有するエスケープピクセル値に対応する、前記ビットストリームの中の位置を示す第２のオフセットを決定することをさらに備える、請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、ビデオコーディングおよび圧縮の分野に関し、詳細には、スクリーンコンテンツコーディングに関する。
【背景技術】
【０００２】
[0002]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ムービングピクチャエキスパートグループ−２（ＭＰＥＧ−２）、ＭＰＥＧ−４、国際電信連合−電気通信標準化部門（ＩＴＵ−Ｔ）Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０、アドバンストビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているものなどの、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００３】
[0003]高速インターネットアクセスの普及に伴い、リモートデスクトップシェアリング、仮想デスクトップインフラストラクチャ、およびワイヤレスディスプレイなどの新興のビデオ適用例が、スクリーンコンテンツの高い圧縮効率を必要としている。しかしながら、さらなるイントラビデオコーディングツールおよびインタービデオコーディングツールは、主に自然コンテンツのために設計された。スクリーンコンテンツは、自然コンテンツと比較して著しく異なる特性（たとえば、シャープエッジ、およびほとんどまたはまったくない雑音）を有し、そのことが、それらの従来のコーディングツールをさほど十分でないものにしている。
【発明の概要】
【０００４】
[0004]本開示のシステム、方法、およびデバイスは、いくつかの発明的態様をそれぞれ有し、それらの態様は、１つとして、本明細書で開示する望ましい属性を単独で担うものではない。
【０００５】
[0005]一態様では、ビットストリームの中のビデオデータを復号する方法であって、ここで、ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含む、方法は、ビットストリームの中で提供されるＣＵに関連するパレットをパースすることと、パレットが、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示し、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、パレットの中にないピクセル値を示し、ここにおいて、エスケープピクセル値が、ビットストリームの中の連続した位置からパースされ、連続した位置が、ビットストリームの中で、ＣＵに関連するランレングスおよびインデックス値のすべての後にあり、パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、ＣＵを復号することとを含む。
【０００６】
[0006]別の態様では、ビットストリームの中で提供されるビデオデータを復号するための装置は、メモリと、メモリと通信しているプロセッサとを含む。メモリは、ビットストリームに関連するビデオデータを記憶するように構成され、ビットストリームは、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含む。プロセッサは、ビットストリームの中で提供されるＣＵに関連するパレットをパースすることと、パレットが、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示し、ビットストリームの中で提供される、ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、パレットの中にないピクセル値を示し、ここにおいて、エスケープピクセル値が、ビットストリームの中の連続した位置からパースされ、連続した位置が、ビットストリームの中で、ＣＵに関連するランレングスおよびインデックス値のすべての後にあり、パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、ＣＵを復号することとを行うように構成される。
【０００７】
[0007]一態様では、ビットストリームの中のビデオデータを符号化する方法は、コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、ＣＵの中の複数のピクセルに基づいて、パレットを生成することと、パレットが、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、ビットストリームの中のＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、ビットストリームの中のＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示し、ビットストリームの中のＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、パレットの中にないピクセル値を示し、生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、ＣＵを符号化することと、ここにおいて、エスケープピクセル値が、ビットストリームの中の連続した位置において符号化され、連続した位置が、ビットストリームの中で、ＣＵに関連するランレングスおよびインデックス値のすべての後にあり、を含む。
【０００８】
[0008]別の態様では、ビットストリームの中のビデオデータを符号化するための装置は、メモリと、メモリと通信しているプロセッサとを含む。メモリは、ビットストリームに関連するビデオデータを記憶するように構成され、ビットストリームは、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含む。プロセッサは、コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、ＣＵの中の複数のピクセルに基づいて、パレットを生成することと、パレットが、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、ビットストリームの中のＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、ビットストリームの中のＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示し、ビットストリームの中のＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、パレットの中にないピクセル値を示し、生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、ＣＵを符号化することと、ここにおいて、エスケープピクセル値が、ビットストリームの中の連続した位置において符号化され、連続した位置が、ビットストリームの中で、ＣＵに関連するランレングスおよびインデックス値のすべての後にあり、を行うように構成される。
【図面の簡単な説明】
【０００９】
【図１Ａ】[0009]本開示で説明する態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図１Ｂ】[0010]本開示で説明する態様による技法を実行し得る別の例示的なビデオ符号化および復号システムを示すブロック図。
【図２】[0011]本開示で説明する態様による技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】[0012]本開示で説明する態様による技法を実装し得るビデオデコーダの一例を示すブロック図。
【図４】[0013]入力ＣＵと、インデックスブロックと、エスケープピクセルと、ＣＵに関連するパレットとを示すブロック図。
【図５】[0014]本開示で説明する態様による、ビットストリームの中のビデオデータをコーディングするための方法を示すフローチャート。
【図６】[0015]本開示で説明する態様による、ビットストリームの中のビデオデータを復号するための方法を示すフローチャート。
【図７】[0016]本開示で説明する態様による、ビットストリームの中のビデオデータを復号するための別の方法を示すフローチャート。
【図８】[0017]本開示で説明する態様による、ビットストリームの中のビデオデータをコーディングするための別の方法を示すフローチャート。
【図９】[0018]本開示で説明する態様による、ビットストリームの中のビデオデータを符号化するための方法を示すフローチャート。
【発明を実施するための形態】
【００１０】
[0019]スクリーンコンテンツコーディングの既存の実装形態では、ビットストリームの中にいくつかの冗長性がある場合がある。これらの冗長性は、いくつかの条件が満たされているときにいくつかのシンタックス要素シグナリングをスキップすることによって除去され得る。さらに、いくつかのシンタックス要素は、パーシング依存関係を導入する場合がある。たとえば、ランモードがインデックスコピーモード（たとえば、左コピーモード）であるとデコーダが推定し得るので、現在のピクセルがブロックの最初のラインにある場合、ランモードを示すためのシンタックス要素はシグナリングされる必要がない場合がある。さらに、デコーダがインデックス値を最初に復号する事例では、復号されたインデックス値に応じて、デコーダは、モードがインデックスコピーモードであるのか、それともエスケープモードであるのかを決定する（たとえば、インデックス値がエスケープインデックス値を表すか否かに基づいて）。モードがインデックスコピーモードであるとデコーダが決定する場合、デコーダパーサ（decoder parser）は、引き続きランレングスをパースする。モードがエスケープモードであるとデコーダが決定する場合、デコーダパーサは、引き続きエスケープ値および／またはランレングスをパースし得る。パーサが、通常、デコーダよりもずっと高速に動作するので、復号エンジンとパーシングエンジンとの間のそのような依存関係は、パーサのスループットに影響を及ぼすことがある（たとえば、パーシングエンジンは、パースされたビットを復号エンジンが復号するのを待つ必要があり得るので）。したがって、パレットコーディングモードでコーディングされたブロックを処理する、改善された方法が望まれる。本出願では、パレットモードでのパーシング依存関係を回避または低減するように、パレット要素をビットストリームの中で編成するためのいくつかの新規の方法が説明される。
【００１１】
[0020]以下の説明では、いくつかの実施形態に関係するＨ．２６４／アドバンストビデオコーディング（ＡＶＣ）技法が記載され、ＨＥＶＣ規格および関係する技法も説明される。ＨＥＶＣ規格および／またはＨ．２６４規格のコンテキストにおいて、いくつかの実施形態が本明細書に記載されるが、本明細書で開示されるシステムおよび方法が任意の適切なビデオコーディング規格に適用可能であり得ることを、当業者なら諒解されよう。たとえば、本明細書で開示する実施形態は、次の規格、すなわち、国際電気通信連合（ＩＴＵ）電気通信標準化部門（ＩＴＵ−Ｔ）Ｈ．２６１、国際標準化機構／国際電気標準会議（ＩＳＯ／ＩＥＣ）ＭＰＥＧ−１ビジュアル、ＩＴＵ−Ｔ  Ｈ．２６２もしくはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２ビジュアル、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４ビジュアル、および範囲拡張を含むＩＴＵ−Ｔ  Ｈ．２６４（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとも呼ばれる）のうちの、１つまたは複数に適用可能であり得る。
【００１２】
[0021]ＨＥＶＣは、概して、多くの点で、前のビデオコーディング規格のフレームワークに従う。ＨＥＶＣにおける予測の単位は、いくつかの前のビデオコーディング規格における予測の単位（たとえば、マクロブロック）とは異なる。事実上、マクロブロックの概念は、いくつかの前のビデオコーディング規格において理解されているように、ＨＥＶＣ中に存在しない。マクロブロックは、他の考えられる利益の中でも高いフレキシビリティを与え得る、４分木方式に基づく階層構造と置き換えられる。たとえば、ＨＥＶＣ方式内で、コーディングユニット（ＣＵ）、予測ユニット（ＰＵ：Prediction Unit）、および変換ユニット（ＴＵ：Transform Unit）という３つのタイプのブロックが定義される。ＣＵは領域分割の基本単位を指すことがある。ＣＵはマクロブロックの概念に類似するとみなされてよいが、ＨＥＶＣは、ＣＵの最大サイズを制限せず、コンテンツ適応性を改善するために４つの等しいサイズのＣＵへの再帰的（recursive）分割を可能にし得る。ＰＵは、インター／イントラ予測の基本単位とみなされることがあり、単一のＰＵは、不規則なイメージパターンを効率的にコーディングするために、複数の任意形状区分を含み得る。ＴＵは、変換の基本単位とみなされることがある。ＴＵはＰＵとは無関係に定義され得るが、ＴＵのサイズはＴＵが属するＣＵのサイズに限定されることがある。３つの異なる概念へのブロック構造のこの分離は、各ユニットがそのユニットのそれぞれの役割に従って最適化されることを可能にし得、このことはコーディング効率の改善をもたらし得る。
【００１３】
ビデオコーディング規格
[0022]ビデオ画像、ＴＶ画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像などの、デジタル画像は、水平ラインおよび垂直ラインで構成されたピクセルまたはサンプルを含み得る。単一の画像中のピクセルの数は一般に数万個である。各ピクセルは、一般に、ルミナンス情報とクロミナンス情報とを含んでいる。圧縮がなければ、画像エンコーダから画像デコーダに搬送されるべき情報の純粋な量は、リアルタイム画像伝送を実行不可能にすることになる。送信されるべき情報の量を低減するために、ＪＰＥＧ、ＭＰＥＧおよびＨ．２６３規格など、いくつかの異なる圧縮方法が開発された。
【００１４】
[0023]ビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１と、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１ビジュアルと、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２ビジュアルと、ＩＴＵ−Ｔ  Ｈ．２６３と、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４ビジュアルと、（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとも呼ばれる）ＩＴＵ−Ｔ  Ｈ．２６４と、範囲拡張を含むＨＥＶＣとを含む。
【００１５】
[0024]さらに、ビデオコーディング規格、すなわち、ＨＥＶＣが、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ：Video Coding Experts Group）とＩＳＯ／ＩＥＣ  ＭＰＥＧとのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaboration Team on Video Coding）によって開発されている。ＨＥＶＣドラフト１０についての完全引用は、文書ＪＣＴＶＣ−Ｌ１００３、Ｂｒｏｓｓら、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）、第１２回会合：ジュネーブ、スイス、２０１３年１月１４日〜２０１３年１月２３日である。ＨＥＶＣへの範囲拡張も、ＪＣＴ−ＶＣによって、開発されている。
【００１６】
ビデオコーディングシステム
[0025]新規のシステム、装置、および方法の様々な態様は、これ以降、添付図面を参照しながら、より十分に説明される。しかしながら、本開示は、多くの異なる形態で実施可能であり、本開示の全体を通して示される任意の特定の構造または機能に限定されるものと解釈されるべきでない。むしろ、本開示が、入念で完全であり、本開示の範囲を当業者に十分に伝達するように、これらの態様が提供される。本明細書の教示に基づいて、本開示の範囲は、本開示の他の態様と無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載される任意の数の態様を使用して装置が実装されることがあり、または方法が実施されることがある。さらに、本開示の範囲は、本明細書に記載する本開示の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示する任意の態様は、特許請求の範囲の１つまたは複数の要素により実施され得ることを理解されたい。
【００１７】
[0026]特定の態様について本明細書で説明するが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好ましい態様のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、使用、または目的に限定されることを意図しない。むしろ、本開示の態様は、異なるワイヤレス技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能なものであり、そのうちのいくつかが図面および好ましい態様の以下の説明において例として示される。詳細な説明および図面は、限定的ではなく、本開示の例示にすぎず、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００１８】
[0027]添付の図面は、例を示す。添付の図面内で参照番号によって指示される要素は、以下の説明において同様の参照番号で指示される要素に対応する。本開示では、序数語（たとえば、「第１の」、「第２の」、「第３の」など）で始まる名前を有する要素は、必ずしもそれらの要素が特定の順序を有することを暗示するとは限らない。むしろ、そのような序数語は、同じまたは同様のタイプの、異なる要素を指すために使用されるにすぎない。
【００１９】
[0028]図１Ａは、本開示で説明する態様による技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用し説明する「ビデオコーダ」または「コーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化とビデオ復号とを総称的に指すことがある。ビデオエンコーダおよびビデオデコーダに加えて、本出願に記載される態様は、トランスコーダ（たとえば、ビットストリームを復号し別のビットストリームを再符号化することができるデバイス）およびミドルボックス（たとえば、ビットストリームを修正、変換、および／または別のやり方で操作することができるデバイス）などの、他の関係するデバイスに拡張され得る。
【００２０】
[0029]図１Ａに示すように、ビデオコーディングシステム１０は、宛先デバイス１４によって後で復号されるべき符号化されたビデオデータを生成するソースデバイス１２を含む。図１Ａの例では、ソースデバイス１２および宛先デバイス１４は別個のデバイスを構成する。しかしながら、ソースデバイス１２および宛先デバイス１４が、図１Ｂの例に示すように、同じデバイス上にある場合があり、または同じデバイスの部分である場合があることに留意されたい。
【００２１】
[0030]もう一度図１Ａを参照すると、ソースデバイス１２および宛先デバイス１４はそれぞれ、デスクトップコンピュータ、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。様々な実施形態では、ソースデバイス１２および宛先デバイス１４はワイヤレス通信のために装備され得る。
【００２２】
[0031]宛先デバイス１４は、リンク１６を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを動かすことが可能な任意のタイプの媒体またはデバイスを備え得る。図１Ａの例では、リンク１６は、ソースデバイス１２が、符号化されたビデオデータをリアルタイムで宛先デバイス１４に送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などの、任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするために有用であり得る、任意の他の機器を含み得る。
【００２３】
[0032]代替的に、符号化されたデータは出力インターフェース２２から、（随意に存在する）記憶デバイス３１に出力され得る。同様に、符号化されたデータは、たとえば、宛先デバイス１４の入力インターフェース２８によって、記憶デバイス３１からアクセスされ得る。記憶デバイス３１は、ハードドライブ、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたは局所的にアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイス３１は、ソースデバイス１２によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間記憶デバイスに相当し得る。宛先デバイス１４は、記憶されているビデオデータに、記憶デバイス３１からストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することができ、その符号化されたビデオデータを宛先デバイス１４に送信することができる、任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ（たとえば、ウェブサイト用の）、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル（たとえば、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）接続）、ワイヤード接続（たとえば、デジタル加入者回線（ＤＳＬ）、ケーブルモデムなど）、またはその両方の組合せを含み得る。記憶デバイス３１からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００２４】
[0033]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信（たとえば、動的適応ストリーミングオーバーハイパーテキスト転送プロトコル（ＨＴＴＰ）など）、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００２５】
[0034]図１Ａの例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。場合によっては、出力インターフェース２２は変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、図１Ｂの例に示すように、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆる「カメラ付き電話」または「ビデオ電話」を形成し得る。しかしながら、本開示に記載される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスアプリケーションおよび／またはワイヤードアプリケーションに適用され得る。
【００２６】
[0035]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化されたビデオデータは、ソースデバイス１２の出力インターフェース２２を介して、宛先デバイス１４に送信され得る。符号化されたビデオデータは、さらに（または代替的に）、復号および／または再生のための宛先デバイス１４または他のデバイスによる後のアクセスのために、記憶デバイス３１上に記憶され得る。図１Ａおよび図１Ｂに示すビデオエンコーダ２０は、図２に示すビデオエンコーダ２０または本明細書に記載される任意の他のビデオエンコーダを備え得る。
【００２７】
[0036]図１Ａの例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。場合によっては、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、符号化されたビデオデータを、リンク１６を介しておよび／または記憶デバイス３１から受信し得る。リンク１６を介して通信され、または記憶デバイス３１上に提供された符号化されたビデオデータは、ビデオデータを復号する際のビデオデコーダ３０などのビデオデコーダによる使用のために、ビデオエンコーダ２０によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、またはファイルサーバに記憶される符号化されたビデオデータに含まれ得る。図１Ａおよび図１Ｂに示すビデオデコーダ３０は、図３に示すビデオデコーダ３０、または本明細書に記載される任意の他のビデオデコーダを備え得る。
【００２８】
[0037]ディスプレイデバイス３２は、宛先デバイス１４と一体化されるか、またはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体型ディスプレイデバイスを含み得、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４はディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００２９】
[0038]関係する態様では、図１Ｂは、例示的なビデオコーディングシステム１０’を示し、ここにおいて、ソースデバイス１２および宛先デバイス１４は、デバイス１１上にあり、またはその部分である。デバイス１１は、「スマート」フォンなどの電話ハンドセットであり得る。デバイス１１は、ソースデバイス１２および宛先デバイス１４と動作可能に通信している（随意に存在する）コントローラ／プロセッサデバイス１３を含み得る。図１Ｂのビデオコーディングシステム１０’およびその構成要素は、図１Ａのビデオコーディングシステム１０およびその構成要素と場合によっては類似である。
【００３０】
[0039]ビデオエンコーダ２０およびビデオデコーダ３０は、ＨＥＶＣなど、ビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ）に準拠し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４，Ｐａｒｔ１０，ＡＶＣと呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、他の独自の規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３を含む。
【００３１】
[0040]図１Ａおよび図１Ｂの例に示されないが、ビデオエンコーダ２０およびビデオデコーダ３０は各々、オーディオエンコーダおよびオーディオデコーダと統合されることがあり、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３２】
[0041]ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、適切な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し得、本開示の技法を実行するために、１つまたは複数のプロセッサを使用して、命令をハードウェアで実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダの一部として統合され得る。
【００３３】
ビデオコーディングプロセス
[0042]上記で簡略に述べられたように、ビデオエンコーダ２０はビデオデータを符号化する。ビデオデータは、１つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャは、ビデオ「フレーム」と呼ばれることがある。ビデオエンコーダ２０がビデオデータを符号化するとき、ビデオエンコーダ２０は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコーディングされた表現を形成するビットのシーケンスを含み得る。ビットストリームは、コード化ピクチャと、関連するデータとを含み得る。コード化ピクチャは、ピクチャのコーディングされた表現である。
【００３４】
[0043]ビットストリームを生成するために、ビデオエンコーダ２０は、ビデオデータ中の各ピクチャに対して符号化演算を実行し得る。ビデオエンコーダ２０がピクチャに対して符号化演算を実行するとき、ビデオエンコーダ２０は、一連のコード化ピクチャと、関連するデータとを生成し得る。関連するデータは、ビデオパラメータセット（ＶＰＳ：video parameter set）と、シーケンスパラメータセット（ＳＰＳ）と、ピクチャパラメータセット（ＰＰＳ）と、適応パラメータセット（ＡＰＳ）と、他のシンタックス構造とを含み得る。ＳＰＳは、ピクチャの０個以上のシーケンスに適用可能なパラメータを含み得る。ＰＰＳは、０個以上のピクチャに適用可能なパラメータを含み得る。ＡＰＳは、０個以上のピクチャに適用可能なパラメータを含み得る。ＡＰＳ中のパラメータは、ＰＰＳ中のパラメータよりも変化する可能性が高いパラメータであり得る。
【００３５】
[0044]コード化ピクチャを生成するために、ビデオエンコーダ２０は、ピクチャを等しいサイズのビデオブロックに区分し得る。ビデオブロックはサンプルの２次元アレイであり得る。ビデオブロックの各々は、ツリーブロックに関連付けられる。いくつかの事例では、ツリーブロックは、最大コーディングユニット（ＬＣＵ：largest coding unit）と呼ばれることがある。ＨＥＶＣのツリーブロックは、Ｈ．２６４／ＡＶＣのような従来の規格のマクロブロックに、広い意味で類似し得る。しかしながら、ツリーブロックは、特定のサイズに必ずしも限定されず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。ビデオエンコーダ２０は、ツリーブロックのビデオブロックを、ＣＵに関連付けられたビデオブロックに区分するために、４分木区分を使用し得、したがって、「ツリーブロック」という名前である。
【００３６】
[0045]いくつかの例では、ビデオエンコーダ２０は、ピクチャを複数のスライスに区分し得る。スライスの各々は、整数個のＣＵを含み得る。いくつかの事例では、スライスは、整数個のツリーブロックを備える。他の事例では、スライスの境界は、ツリーブロック内にあり得る。
【００３７】
[0046]ピクチャに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ピクチャの各スライスに対して符号化演算を実行し得る。ビデオエンコーダ２０がスライスに対して符号化演算を実行するとき、ビデオエンコーダ２０は、スライスに関連付けられた符号化されたデータを生成し得る。スライスに関連付けられた符号化されたデータは、「コード化スライス」と呼ばれることがある。
【００３８】
[0047]コード化スライスを生成するために、ビデオエンコーダ２０は、スライス中の各ツリーブロックに対して符号化演算を実行し得る。ビデオエンコーダ２０がツリーブロックに対して符号化演算を実行するとき、ビデオエンコーダ２０は、コーディングされたツリーブロックを生成し得る。コーディングされたツリーブロックは、ツリーブロックの符号化されたバージョンを表すデータを備え得る。
【００３９】
[0048]ビデオエンコーダ２０がコード化スライスを生成するとき、ビデオエンコーダ２０は、ラスタ走査順序に従って、スライス中のツリーブロックに対して符号化演算を実行（たとえば、符号化）し得る。たとえば、ビデオエンコーダ２０は、スライス中のツリーブロックの一番上の行にわたって左から右に進み、次いでツリーブロックの次の下の行にわたって左から右に進み、以下同様に進む順序で、ビデオエンコーダ２０がスライス中のツリーブロックの各々を符号化するまで、スライスのツリーブロックを符号化し得る。
【００４０】
[0049]ラスタ走査順序に従ってツリーブロックを符号化した結果として、所与のツリーブロックの上および左のツリーブロックは符号化されていることがあるが、所与のツリーブロックの下および右のツリーブロックはまだ符号化されていない。したがって、ビデオエンコーダ２０は、所与のツリーブロックを符号化するとき、所与のツリーブロックの上および左のツリーブロックを符号化することによって生成される情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ２０は、所与のツリーブロックを符号化するとき、所与のツリーブロックの下および右のツリーブロックを符号化することによって生成される情報にアクセスできないことがある。
【００４１】
[0050]コーディングされたツリーブロックを生成するために、ビデオエンコーダ２０は、ビデオブロックを徐々により小さいビデオブロックに分割するために、ツリーブロックのビデオブロック上で４分木区分を再帰的に実行し得る。より小さいビデオブロックの各々は、異なるＣＵに関連付けられ得る。たとえば、ビデオエンコーダ２０は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロックに区分し得、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。区分されたＣＵは、そのビデオブロックが他のＣＵに関連付けられたビデオブロックに区分されているＣＵであり得る。区分されていないＣＵは、そのビデオブロックが他のＣＵに関連付けられたビデオブロックに区分されていないＣＵであり得る。
【００４２】
[0051]ビットストリーム中の１つまたは複数のシンタックス要素は、ビデオエンコーダ２０がツリーブロックのビデオブロックを区分し得る最大の回数を示し得る。ＣＵのビデオブロックは形状が正方形であり得る。ＣＵのビデオブロックのサイズ（たとえば、ＣＵのサイズ）は、８×８のピクセルから、最大で６４×６４以上のピクセルを有するツリーブロックのビデオブロックのサイズ（たとえば、ツリーブロックのサイズ）までわたり得る。
【００４３】
[0052]ビデオエンコーダ２０は、ｚ走査順序に従って、ツリーブロックの各ＣＵに対して符号化演算を実行（たとえば、符号化）し得る。言い換えれば、ビデオエンコーダ２０は、左上のＣＵと、右上のＣＵと、左下のＣＵと、次いで右下のＣＵとを、その順序で符号化し得る。ビデオエンコーダ２０が、区分されているＣＵに対して符号化演算を実行するとき、ビデオエンコーダ２０は、ｚ走査順序に従って、区分されているＣＵのビデオブロックのサブブロックに関連付けられたＣＵを符号化し得る。言い換えれば、ビデオエンコーダ２０は、左上のサブブロックに関連付けられたＣＵと、右上のサブブロックに関連付けられたＣＵと、左下のサブブロックに関連付けられたＣＵと、次いで右下のサブブロックに関連付けられたＣＵとを、その順序で符号化し得る。
【００４４】
[0053]ｚ走査順序に従ってツリーブロックのＣＵを符号化した結果として、所与のＣＵの上、左上、右上、左、および左下のＣＵは符号化されていることがある。所与のＣＵの下または右のＣＵはまだ符号化されていない。したがって、ビデオエンコーダ２０は、所与のＣＵを符号化するとき、所与のＣＵに隣接するいくつかのＣＵを符号化することによって生成される情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ２０は、所与のＣＵを符号化するとき、所与のＣＵに隣接する他のＣＵを符号化することによって生成される情報にアクセスできないことがある。
【００４５】
[0054]ビデオエンコーダ２０が、区分されていないＣＵを符号化するとき、ビデオエンコーダ２０は、ＣＵに対する１つまたは複数の予測ユニット（ＰＵ）を生成し得る。ＣＵのＰＵの各々は、ＣＵのビデオブロック内の異なるビデオブロックに関連付けられ得る。ビデオエンコーダ２０は、ＣＵの各ＰＵに対して予測されたビデオブロックを生成し得る。ＰＵの予測されたビデオブロックは、サンプルのブロックであり得る。ビデオエンコーダ２０は、ＰＵのための予測されたビデオブロックを生成するために、イントラ予測またはインター予測を使用し得る。
【００４６】
[0055]ビデオエンコーダ２０がＰＵの予測されたビデオブロックを生成するためにイントラ予測を使用するとき、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号されたサンプルに基づいて、ＰＵの予測されたビデオブロックを生成し得る。ビデオエンコーダ２０がＣＵのＰＵの予測されたビデオブロックを生成するためにイントラ予測を使用する場合、ＣＵはイントラ予測されたＣＵである。ビデオエンコーダ２０がＰＵの予測されたビデオブロックを生成するためにインター予測を使用するとき、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測されたビデオブロックを生成し得る。ビデオエンコーダ２０がＣＵのＰＵの予測されたビデオブロックを生成するためにインター予測を使用する場合、ＣＵはインター予測されたＣＵである。
【００４７】
[0056]さらに、ビデオエンコーダ２０がＰＵのための予測されたビデオブロックを生成するためにインター予測を使用するとき、ビデオエンコーダ２０は、ＰＵのための動き情報を生成し得る。ＰＵのための動き情報は、ＰＵの１つまたは複数の参照ブロックを示し得る。ＰＵの各参照ブロックは、参照ピクチャ内のビデオブロックであり得る。参照ピクチャは、ＰＵに関連付けられたピクチャ以外のピクチャであり得る。いくつかの事例では、ＰＵの参照ブロックは、ＰＵの「参照サンプル」と呼ばれることもある。ビデオエンコーダ２０は、ＰＵの参照ブロックに基づいて、ＰＵのための予測されたビデオブロックを生成し得る。
【００４８】
[0057]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測されたビデオブロックを生成した後、ビデオエンコーダ２０は、ＣＵのＰＵのための予測されたビデオブロックに基づいて、ＣＵに対する残差データを生成し得る。ＣＵの残差データは、ＣＵのＰＵのための予測されたビデオブロック中のサンプルと、ＣＵの元のビデオブロック中のサンプルとの間の差分を示し得る。
【００４９】
[0058]さらに、区分されていないＣＵに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ＣＵの残差データを、ＣＵの変換ユニット（ＴＵ）に関連付けられた残差データの１つまたは複数のブロック（たとえば、残差ビデオブロック）に区分するために、ＣＵの残差データに対して再帰的な４分木区分を実行し得る。ＣＵの各ＴＵは、異なる残差ビデオブロックに関連付けられ得る。
【００５０】
[0059]ビデオエンコーダ２０は、ＴＵに関連付けられた変換係数ブロック（たとえば、変換係数のブロック）を生成するために、ＴＵに関連付けられた残差ビデオブロックに１つまたは複数の変換を適用し得る。概念的に、変換係数ブロックは変換係数の２次元（２Ｄ）行列であり得る。
【００５１】
[0060]変換係数ブロックを生成した後、ビデオエンコーダ２０は、変換係数ブロックに対して量子化プロセスを実行し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中に、ｎビット変換係数はｍビット変換係数に切り捨てられ得、ここで、ｎはｍよりも大きい。
【００５２】
[0061]ビデオエンコーダ２０は、各ＣＵを、量子化パラメータ（ＱＰ）値に関連付け得る。ＣＵに関連付けられたＱＰ値は、ビデオエンコーダ２０が、ＣＵに関連付けられた変換係数ブロックをどのように量子化するかを決定し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰ値を調整することによって、ＣＵに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。
【００５３】
[0062]ビデオエンコーダ２０が変換係数ブロックを量子化した後、ビデオエンコーダ２０は、量子化された変換係数ブロックの中で変換係数を表すシンタックス要素のセットを生成し得る。ビデオエンコーダ２０は、これらのシンタックス要素のうちのいくつかに、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context Adaptive Binary Arithmetic Coding）演算などのエントロピー符号化演算を適用し得る。コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context adaptive variable length coding）、確率間隔区分エントロピー（ＰＩＰＥ：probability interval partitioning entropy）コーディング、または他のバイナリ算術コーディングなど、他のエントロピーコーディング技法も使用され得る。
【００５４】
[0063]ビデオエンコーダ２０によって生成されるビットストリームは、一連のネットワークアブストラクションレイヤ（ＮＡＬ：Network Abstraction Layer）ユニットを含み得る。ＮＡＬユニットの各々は、ＮＡＬユニット中のデータのタイプの指示と、データを含むバイトとを含む、シンタックス構造であり得る。たとえば、ＮＡＬユニットは、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、コード化スライス、ＳＥＩ、アクセスユニットデリミタ、フィラーデータ、または別のタイプのデータを表すデータを含み得る。ＮＡＬユニット中のデータは、様々なシンタックス構造を含み得る。
【００５５】
[0064]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。ビットストリームは、ビデオエンコーダ２０によって符号化されたビデオデータのコーディングされた表現を含み得る。ビデオデコーダ３０がビットストリームを受信すると、ビデオデコーダ３０は、ビットストリームに対してパーシング動作（a parsing operation）を実行し得る。ビデオデコーダ３０がパーシング動作を実行するとき、ビデオデコーダ３０は、ビットストリームからシンタックス要素を抽出し得る。ビデオデコーダ３０は、ビットストリームから抽出されたシンタックス要素に基づいて、ビデオデータのピクチャを再構成し得る。シンタックス要素に基づいてビデオデータを再構成するためのプロセスは、一般に、シンタックス要素を生成するためにビデオエンコーダ２０によって実行されるプロセスの逆であり得る。
【００５６】
[0065]ビデオデコーダ３０がＣＵに関連付けられたシンタックス要素を抽出した後、ビデオデコーダ３０は、シンタックス要素に基づいて、ＣＵのＰＵのための予測されたビデオブロックを生成し得る。さらに、ビデオデコーダ３０は、ＣＵのＴＵに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、ＣＵのＴＵに関連付けられた残差ビデオブロックを再構成するために、変換係数ブロックに対して逆変換を実行し得る。予測されたビデオブロックを生成し、残差ビデオブロックを再構成した後、ビデオデコーダ３０は、予測されたビデオブロックおよび残差ビデオブロックに基づいて、ＣＵのビデオブロックを再構成し得る。このようにして、ビデオデコーダ３０は、ビットストリーム中のシンタックス要素に基づいて、ＣＵのビデオブロックを再構成し得る。
【００５７】
ビデオエンコーダ
[0066]図２は、本開示で説明する態様による技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、ＨＥＶＣの場合など、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオエンコーダ２０は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ２０の様々な構成要素間で共有され得る。いくつかの例では、追加または代替として、プロセッサ（図示せず）が、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。
【００５８】
[0067]説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。図２に示す例は、シングルレイヤコーデックのためのものである。しかしながら、いくつかの実施形態では、ビデオエンコーダ２０の一部または全部は、マルチレイヤコーデックの処理のために複製され得る。
【００５９】
[0068]ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレーム内またはピクチャ内のビデオの時間的冗長性を低減または除去するために時間予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースのコーディングモードのいずれかを参照し得る。単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを参照し得る。
【００６０】
[0069]図２の例では、ビデオエンコーダ２０は複数の機能構成要素を含む。ビデオエンコーダ２０の機能構成要素は、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換ユニット１１０と、再構成ユニット１１２と、フィルタユニット１１３と、復号されたピクチャバッファ１１４と、エントロピー符号化ユニット１１６とを含む。予測処理ユニット１００は、インター予測ユニット１２１と、動き推定ユニット１２２と、動き補償ユニット１２４と、イントラ予測ユニット１２６と、レイヤ間予測ユニット１２８とを含む。他の例では、ビデオエンコーダ２０は、より多いか、より少ないか、または異なる機能構成要素を含み得る。さらに、動き推定ユニット１２２および動き補償ユニット１２４は、高度に統合され得るが、図２の例では、説明の目的で別々に表されている。
【００６１】
[0070]ビデオエンコーダ２０は、ビデオデータを受信し得る。ビデオエンコーダ２０は、様々なソースからビデオデータを受信し得る。たとえば、ビデオエンコーダ２０は、ビデオソース１８（たとえば、図１Ａまたは図１Ｂに示す）または別のソースからビデオデータを受信し得る。ビデオデータは、一連のピクチャを表し得る。ビデオデータを符号化するために、ビデオエンコーダ２０は、ピクチャの各々に対して符号化演算を実行し得る。ピクチャに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ピクチャの各スライスに対して符号化演算を実行し得る。スライスに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、スライス中のツリーブロックに対して符号化演算を実行し得る。
【００６２】
[0071]ツリーブロックに対して符号化演算を実行することの一部として、予測処理ユニット１００は、ビデオブロックを徐々により小さいビデオブロックに分割するために、ツリーブロックのビデオブロックに対して４分木区分を実行し得る。より小さいビデオブロックの各々は、異なるＣＵに関連付けられ得る。たとえば、予測処理ユニット１００は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロックに区分し得、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【００６３】
[0072]ＣＵに関連付けられたビデオブロックのサイズは、８×８サンプルから、最大で６４×６４サンプル以上のツリーブロックのサイズにまでわたり得る。本開示では、「Ｎ×Ｎ」および「Ｎ  ｂｙ  Ｎ」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのサンプルの寸法（dimensions）、たとえば、１６×１６サンプルまたは１６  ｂｙ  １６サンプルを指すために、互換的に使用され得る。一般に、１６×１６のビデオブロックは、垂直方向に１６個のサンプルを有し（ｙ＝１６）、水平方向に１６個のサンプルを有する（ｘ＝１６）。同様に、Ｎ×Ｎのブロックは、一般に、垂直方向にＮ個のサンプルを有し、水平方向にＮ個のサンプルを有し、ここで、Ｎは非負整数値を表す。
【００６４】
[0073]さらに、ツリーブロックに対して符号化演算を実行することの一部として、予測処理ユニット１００は、ツリーブロック用の階層的な４分木データ構造を生成し得る。たとえば、ツリーブロックは、４分木データ構造のルートノードに対応し得る。予測処理ユニット１００がツリーブロックのビデオブロックを４つのサブブロックに区分する場合、ルートノードは、４分木データ構造中に４つの子ノードを有する。子ノードの各々は、サブブロックのうちの１つに関連付けられたＣＵに対応する。予測処理ユニット１００がサブブロックのうちの１つを４つのサブサブブロックに区分する場合、サブブロックに関連付けられたＣＵに対応するノードは、サブサブブロックのうちの１つに関連付けられたＣＵに各々が対応する、４つの子ノードを有し得る。
【００６５】
[0074]４分木データ構造の各ノードは、対応するツリーブロックまたはＣＵのシンタックスデータ（たとえば、シンタックス要素）を含み得る。たとえば、４分木の中のノードは、そのノードに対応するＣＵのビデオブロックが４つのサブブロックに区分（たとえば、分割）されているかどうかを示すスプリットフラグを含み得る。ＣＵのためのシンタックス要素は、再帰的に定義され得、ＣＵのビデオブロックがサブブロックに分割されているかどうかに依存し得る。ビデオブロックが区分されていないＣＵは、４分木データ構造におけるリーフノードに対応し得る。コーディングされたツリーブロックは、対応するツリーブロック用の４分木データ構造に基づくデータを含み得る。
【００６６】
[0075]ビデオエンコーダ２０は、ツリーブロックの区分されていない各ＣＵに対して符号化演算を実行し得る。ビデオエンコーダ２０が、区分されていないＣＵに対して符号化演算を実行するとき、ビデオエンコーダ２０は、区分されていないＣＵの符号化された表現を表すデータを生成する。
【００６７】
[0076]ＣＵに対して符号化演算を実行することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの中で、ＣＵのビデオブロックを区分し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なＰＵサイズをサポートし得る。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×２ＮまたはＮ×ＮのＰＵサイズ、および２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、２Ｎ×ｎＵ、ｎＬ×２Ｎ、ｎＲ×２Ｎ、または同様の対称ＰＵサイズでのインター予測とをサポートし得る。ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズに対する非対称区分もサポートし得る。いくつかの例では、予測処理ユニット１００は、ＣＵのビデオブロックのサイドに直角に接触しない境界に沿ってＣＵのＰＵの間でＣＵのビデオブロックを区分するように、幾何学的な区分を実行し得る。
【００６８】
[0077]インター予測ユニット１２１は、ＣＵの各ＰＵに対してインター予測を実行し得る。インター予測は、時間圧縮を実現し得る。ＰＵに対してインター予測を実行するために、動き推定ユニット１２２は、ＰＵのための動き情報を生成し得る。動き補償ユニット１２４は、動き情報およびＣＵに関連付けられたピクチャ以外のピクチャ（たとえば、参照ピクチャ）の復号されたサンプルに基づいて、ＰＵのための予測されたビデオブロックを生成し得る。本開示では、動き補償ユニット１２４によって生成される予測されたビデオブロックは、インター予測されたビデオブロックと呼ばれることがある。
【００６９】
[0078]スライスは、Ｉスライス、Ｐスライス、またはＢスライスであり得る。動き推定ユニット１２２および動き補償ユニット１２４は、ＰＵがＩスライス中にあるのか、Ｐスライス中にあるのか、それともＢスライス中にあるのかに応じて、ＣＵのＰＵのための異なる演算を実行し得る。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、動き推定ユニット１２２および動き補償ユニット１２４は、ＰＵに対してインター予測を実行しない。
【００７０】
[0079]ＰＵがＰスライス中にある場合、ＰＵを含むピクチャは、「リスト０」と呼ばれる参照ピクチャのリストに関連付けられる。リスト０中の参照ピクチャの各々は、他のピクチャのインター予測のために使用され得るサンプルを含む。動き推定ユニット１２２がＰスライス中のＰＵに関して動き推定演算を実行するとき、動き推定ユニット１２２は、ＰＵのための参照ブロックについて、リスト０中の参照ピクチャを探索し得る。ＰＵの参照ブロックは、ＰＵのビデオブロック中のサンプルに最も密接に対応するサンプルのセット、たとえば、サンプルのブロックであり得る。動き推定ユニット１２２は、参照ピクチャ中のサンプルのセットがどの程度密接にＰＵのビデオブロック中のサンプルに対応するかを決定するために、様々なメトリックを使用し得る。たとえば、動き推定ユニット１２２は、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって、参照ピクチャ中のサンプルのセットがどの程度密接にＰＵのビデオブロック中のサンプルに対応するかを決定し得る。
【００７１】
[0080]Ｐスライス中のＰＵの参照ブロックを識別した後、動き推定ユニット１２２は、参照ブロックを含んでいる、リスト０中の参照ピクチャを示す参照インデックスと、ＰＵと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。様々な例において、動き推定ユニット１２２は、動きベクトルを異なる精度に生成し得る。たとえば、動き推定ユニット１２２は、１／４サンプル精度、１／８サンプル精度、または他の分数のサンプル精度で動きベクトルを生成し得る。分数のサンプル精度の場合、参照ブロック値は、参照ピクチャ中の整数位置のサンプル値から補間され得る。動き推定ユニット１２２は、ＰＵの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット１２４は、ＰＵの動き情報によって識別された参照ブロックに基づいて、ＰＵの予測されたビデオブロックを生成し得る。
【００７２】
[0081]ＰＵがＢスライス中にある場合、ＰＵを含むピクチャは、「リスト０」および「リスト１」と呼ばれる参照ピクチャの２つのリストに関連付けられ得る。いくつかの例では、Ｂスライスを含むピクチャは、リスト０とリスト１の組合せである、リストの組合せと関連付けられ得る。
【００７３】
[0082]さらに、ＰＵがＢスライス中にある場合、動き推定ユニット１２２は、ＰＵのための単方向予測または双方向予測を実行し得る。動き推定ユニット１２２がＰＵのための単方向予測を実行するとき、動き推定ユニット１２２は、ＰＵのための参照ブロックについて、リスト０またはリスト１の参照ピクチャを探索し得る。動き推定ユニット１２２は、次いで、参照ブロックを含む、リスト０またはリスト１中の参照ピクチャを示す参照インデックスと、ＰＵと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット１２２は、ＰＵの動き情報として、参照インデックスと、予測方向インジケータと、動きベクトルとを出力し得る。予測方向インジケータは、参照インデックスが、リスト０中の参照ピクチャを示すのか、それともリスト１中の参照ピクチャを示すのかを示し得る。動き補償ユニット１２４は、ＰＵの動き情報によって示された参照ブロックに基づいて、ＰＵの予測ビデオブロックを生成し得る。
【００７４】
[0083]動き推定ユニット１２２がＰＵのための双方向予測を実行するとき、動き推定ユニット１２２は、ＰＵのための参照ブロックについて、リスト０中の参照ピクチャを探索し得、また、ＰＵのための別の参照ブロックについて、リスト１中の参照ピクチャを探索し得る。動き推定ユニット１２２は、次いで、参照ブロックを含む、リスト０およびリスト１中の参照ピクチャを示す参照インデックスと、参照ブロックとＰＵとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット１２２は、ＰＵの動き情報として、ＰＵの参照インデックスと動きベクトルとを出力し得る。動き補償ユニット１２４は、ＰＵの動き情報によって示された参照ブロックに基づいて、ＰＵの予測されたビデオブロックを生成し得る。
【００７５】
[0084]いくつかの事例では、動き推定ユニット１２２は、ＰＵのための動き情報のフルセットをエントロピー符号化ユニット１１６に出力しない。そうではなく、動き推定ユニット１２２は、別のＰＵの動き情報を参照して、ＰＵの動き情報をシグナリングし得る。たとえば、動き推定ユニット１２２は、ＰＵの動き情報が、隣接ＰＵの動き情報と十分に類似していると決定し得る。この例では、動き推定ユニット１２２は、ＰＵに関連付けられたシンタックス構造において、ＰＵが隣接ＰＵと同じ動き情報を有することをビデオデコーダ３０に示す値を示し得る。別の例では、動き推定ユニット１２２は、ＰＵに関連付けられたシンタックス構造において、隣接ＰＵと動きベクトル差分（ＭＶＤ）とを識別し得る。動きベクトル差分は、ＰＵの動きベクトルと、示される隣接ＰＵの動きベクトルとの間の差分を示す。ビデオデコーダ３０は、ＰＵの動きベクトルを決定するために、示された隣接ＰＵの動きベクトルと、動きベクトル差分とを使用し得る。第２のＰＵの動き情報をシグナリングするときに第１のＰＵの動き情報を参照することによって、ビデオエンコーダ２０は、より少数のビットを使用して、第２のＰＵの動き情報をシグナリングすることが可能であり得る。
【００７６】
[0085]ＣＵに対して符号化演算を実行することの一部として、イントラ予測ユニット１２６は、ＣＵのＰＵに対してイントラ予測を実行し得る。イントラ予測は、空間圧縮を実現し得る。イントラ予測ユニット１２６がＰＵに対してイントラ予測を実行するとき、イントラ予測ユニット１２６は、同じピクチャ中の他のＰＵｓの復号されたサンプルに基づいて、ＰＵのための予測データを生成し得る。ＰＵのための予測データは、予測されたビデオブロックと様々なシンタックス要素とを含み得る。イントラ予測ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライス中のＰＵに対してイントラ予測を実行し得る。
【００７７】
[0086]ＰＵに対してイントラ予測を実行するために、イントラ予測ユニット１２６は、ＰＵのための予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測ユニット１２６がＰＵのための予測データのセットを生成するためにイントラ予測モードを使用するとき、イントラ予測ユニット１２６は、イントラ予測モードと関連する方向および／または勾配で、隣接ＰＵｓのビデオブロックからＰＵのビデオブロックにわたってサンプルを延ばし得る。ＰＵｓ、ＣＵｓ、およびツリーブロックについて左から右、上から下の符号化順序を仮定すると、隣接ＰＵｓは、ＰＵの上、右上、左上、または左にあり得る。イントラ予測ユニット１２６は、ＰＵのサイズに応じて、様々な数のイントラ予測モード、たとえば、３３個の方向性イントラ予測モードを使用し得る。
【００７８】
[0087]予測処理ユニット１００は、動き補償ユニット１２４によってＰＵのために生成された予測データ、またはイントラ予測ユニット１２６によってＰＵのために生成された予測データの中から、ＰＵのための予測データを選択し得る。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／ひずみメトリックに基づいて、ＰＵのための予測データを選択する。
【００７９】
[0088]予測処理ユニット１００がイントラ予測ユニット１２６によって生成された予測データを選択する場合、予測処理ユニット１００は、ＰＵｓのための予測データを生成するために使用されたイントラ予測モード、たとえば、選択されたイントラ予測モードをシグナリングし得る。予測処理ユニット１００は、選択されたイントラ予測モードを様々な方法でシグナリングし得る。たとえば、選択されたイントラ予測モードは、隣接ＰＵのイントラ予測モードと同じであることが起こり得る。言い換えれば、隣接ＰＵのイントラ予測モードは、現在のＰＵに対して最確（most probable）モードであり得る。したがって、予測処理ユニット１００は、選択されたイントラ予測モードが隣接ＰＵのイントラ予測モードと同じであることを示すためのシンタックス要素を生成し得る。
【００８０】
[0089]上記で説明したように、ビデオエンコーダ２０は、レイヤ間予測ユニット１２８を含み得る。レイヤ間予測ユニット１２８は、ＳＨＶＣにおいて利用可能である１つまたは複数の異なるレイヤ（たとえば、ベースレイヤまたは参照レイヤ）を使用して、現在のブロック（たとえば、ＥＬ中の現在のブロック）を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれることがある。レイヤ間予測ユニット１２８は、レイヤ間冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測と、レイヤ間動き予測と、レイヤ間残差予測とを含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤの中でコロケートされているブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動きを予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。
【００８１】
[0090]予測処理ユニット１００がＣＵのＰＵｓのための予測データを選択した後、残差生成ユニット１０２は、ＣＵのビデオブロックからＣＵのＰＵｓの予測されたビデオブロックを差し引くこと（たとえば、マイナス符号によって示される）によって、ＣＵの残差データを生成し得る。ＣＵの残差データは、ＣＵのビデオブロック中のサンプルの異なるサンプル成分に対応する２Ｄ残差ビデオブロックを含み得る。たとえば、残差データは、ＣＵのＰＵｓの予測されたビデオブロック中のサンプルのルミナンス成分と、ＣＵの元のビデオブロック中のサンプルのルミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。さらに、ＣＵの残差データは、ＣＵのＰＵｓの予測されたビデオブロック中のサンプルのクロミナンス成分と、ＣＵの元のビデオブロック中のサンプルのクロミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。
【００８２】
[0091]予測処理ユニット１００は、ＣＵの残差ビデオブロックをサブブロックに区分するために、４分木区分を実行し得る。分割されていない各残差ビデオブロックは、ＣＵの異なるＴＵに関連付けられ得る。ＣＵのＴＵに関連付けられる残差ビデオブロックのサイズおよび位置は、ＣＵのＰＵｓに関連付けられたビデオブロックのサイズおよび位置に基づくこともあり、または基づかないこともある。「残差４分木」（ＲＱＴ）と呼ばれる４分木構造は、残差ビデオブロックの各々に関連付けられたノードを含み得る。ＣＵのＴＵｓは、ＲＱＴのリーフノードに対応し得る。
【００８３】
[0092]変換処理ユニット１０４は、ＴＵに関連付けられた残差ビデオブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための１つまたは複数の変換係数ブロックを生成し得る。変換係数ブロックの各々は、変換係数の２Ｄ行列であり得る。変換処理ユニット１０４は、ＴＵに関連付けられた残差ビデオブロックに様々な変換を適用し得る。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向変換、または概念的に類似の変換を、ＴＵに関連付けられた残差ビデオブロックに適用し得る。
【００８４】
[0093]変換処理ユニット１０４が、ＴＵに関連付けられた変換係数ブロックを生成した後、量子化ユニット１０６は、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット１０６は、ＣＵに関連付けられたＱＰ値に基づいて、ＣＵのＴＵに関連付けられた変換係数ブロックを量子化し得る。
【００８５】
[0094]ビデオエンコーダ２０は、様々な方法でＱＰ値をＣＵに関連付け得る。たとえば、ビデオエンコーダ２０は、ＣＵに関連付けられたツリーブロックに対して、レートひずみ分析を実行し得る。レートひずみ分析では、ビデオエンコーダ２０は、ツリーブロックに対して符号化演算を複数回実行することによって、ツリーブロックの複数のコーディングされた表現を生成し得る。ビデオエンコーダ２０が、ツリーブロックの異なる符号化された表現を生成するとき、ビデオエンコーダ２０は、異なるＱＰ値をＣＵに関連付け得る。最小のビットレートおよびひずみメトリックを有するツリーブロックのコーディングされた表現で所与のＱＰ値がＣＵに関連付けられるとき、ビデオエンコーダ２０は、所与のＱＰ値がＣＵに関連付けられることをシグナリングし得る。
【００８６】
[0095]逆量子化ユニット１０８および逆変換ユニット１１０は、変換係数ブロックから残差ビデオブロックを再構成するために、それぞれ、逆量子化と逆変換とを変換係数ブロックに適用し得る。再構成ユニット１１２は、ＴＵに関連付けられた再構成されたビデオブロックを生成するために、再構成された残差ビデオブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測されたビデオブロックからの対応するサンプルに追加し得る。このようにＣＵの各ＴＵについてビデオブロックを再構成することによって、ビデオエンコーダ２０は、ＣＵのビデオブロックを再構成し得る。
【００８７】
[0096]再構成ユニット１１２がＣＵのビデオブロックを再構成した後、フィルタユニット１１３は、ＣＵに関連付けられたビデオブロックにおけるブロッキングアーティファクトを低減するために、デブロッキング演算を実行し得る。１つまたは複数のデブロッキング演算を実行した後、フィルタユニット１１３は、ＣＵの再構成されたビデオブロックを復号されたピクチャバッファ１１４に記憶し得る。動き推定ユニット１２２および動き補償ユニット１２４は、後続のピクチャのＰＵｓに対してインター予測を実行するために、再構成されたビデオブロックを含む参照ピクチャを使用し得る。さらに、イントラ予測ユニット１２６は、ＣＵと同じピクチャ中の他のＰＵｓに対してイントラ予測を実行するために、復号されたピクチャバッファ１１４の中の再構成されたビデオブロックを使用し得る。
【００８８】
[0097]エントロピー符号化ユニット１１６は、ビデオエンコーダ２０の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット１１６は、量子化ユニット１０６から変換係数ブロックを受信し得、予測処理ユニット１００からシンタックス要素を受信し得る。エントロピー符号化ユニット１１６がデータを受信するとき、エントロピー符号化ユニット１１６は、エントロピー符号化されたデータを生成するために、１つまたは複数のエントロピー符号化演算を実行し得る。たとえば、ビデオエンコーダ２０は、ＣＡＶＬＣ演算、ＣＡＢＡＣ演算、変数間（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ）コーディング演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。エントロピー符号化ユニット１１６は、エントロピー符号化されたデータを含むビットストリームを出力し得る。
【００８９】
[0098]データに対してエントロピー符号化演算を実行することの一部として、エントロピー符号化ユニット１１６は、コンテキストモデルを選択し得る。エントロピー符号化ユニット１１６がＣＡＢＡＣ演算を実行している場合、コンテキストモデルは、特定の値を有する特定のビンの確率の推定値を示し得る。ＣＡＢＡＣのコンテキストでは、「ビン」という用語は、シンタックス要素の２値化されたバージョンのビットを指すために使用される。
【００９０】
ビデオデコーダ
[0099]図３は、本開示で説明する態様による技法を実装し得るビデオデコーダ３０の一例を示すブロック図である。ビデオデコーダ３０は、ＨＥＶＣの場合など、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオデコーダ３０は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明する技法は、ビデオデコーダ３０の様々な構成要素の間で共有され得る。いくつかの例では、追加または代替として、プロセッサ（図示せず）が、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。
【００９１】
[0100]説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図３に示す例は、シングルレイヤコーデックのためのものである。しかしながら、いくつかの実装形態では、ビデオデコーダ３０の一部または全部は、マルチレイヤコーデックの処理のために複製され得る。
【００９２】
[0101]図３の例では、ビデオデコーダ３０は複数の機能構成要素を含む。ビデオデコーダ３０の機能構成要素は、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換ユニット１５６と、再構成ユニット１５８と、フィルタユニット１５９と、復号されたピクチャバッファ１６０とを含む。予測処理ユニット１５２は、動き補償ユニット１６２と、イントラ予測ユニット１６４と、レイヤ間予測ユニット１６６とを含む。いくつかの例では、ビデオデコーダ３０は、図２のビデオエンコーダ２０に関して説明された符号化経路とは全般に逆の復号経路を実行し得る。他の例では、ビデオデコーダ３０は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
【００９３】
[0102]ビデオデコーダ３０は、符号化されたビデオデータを備えるビットストリームを受信し得る。ビットストリームは、複数のシンタックス要素を含み得る。ビデオデコーダ３０がビットストリームを受信すると、エントロピー復号ユニット１５０は、ビットストリームに対してパーシング動作を実行し得る。ビットストリームに対してパーシング動作を実行した結果として、エントロピー復号ユニット１５０は、ビットストリームからシンタックス要素を抽出し得る。パーシング動作を実行することの一部として、エントロピー復号ユニット１５０は、ビットストリーム中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換ユニット１５６、再構成ユニット１５８、およびフィルタユニット１５９は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成する再構成演算を実行し得る。
【００９４】
[0103]上記で説明したように、ビットストリームは、一連のＮＡＬユニットを備え得る。ビットストリームのＮＡＬユニットは、ビデオパラメータセットＮＡＬユニット、シーケンスパラメータセットＮＡＬユニット、ピクチャパラメータセットＮＡＬユニット、ＳＥＩ  ＮＡＬユニットなどを含み得る。ビットストリームに対してパーシング動作を実行することの一部として、エントロピー復号ユニット１５０は、シーケンスパラメータセットＮＡＬユニットからのシーケンスパラメータセット、ピクチャパラメータセットＮＡＬユニットからのピクチャパラメータセット、ＳＥＩ  ＮＡＬユニットからのＳＥＩデータなどを抽出しエントロピー復号する、パーシング動作を実行し得る。
【００９５】
[0104]さらに、ビットストリームのＮＡＬユニットは、コード化スライスＮＡＬユニットを含み得る。ビットストリームに対してパーシング動作を実行することの一部として、エントロピー復号ユニット１５０は、コード化スライスＮＡＬユニットからコード化スライスを抽出しエントロピー復号する、パーシング動作を実行し得る。コード化スライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャに関連付けられたピクチャパラメータセットを識別するシンタックス要素を含み得る。エントロピー復号ユニット１５０は、スライスヘッダを復元するために、コード化スライスヘッダ中のシンタックス要素に対してＣＡＢＡＣ復号演算などのエントロピー復号演算を実行し得る。
【００９６】
[0105]コード化スライスＮＡＬユニットからスライスデータを抽出することの一部として、エントロピー復号ユニット１５０は、スライスデータ中のコーディングされたＣＵからシンタックス要素を抽出するパーシング動作を実行し得る。抽出されたシンタックス要素は、変換係数ブロックに関連付けられたシンタックス要素を含み得る。エントロピー復号ユニット１５０は、次いで、シンタックス要素のうちのいくつかに対してＣＡＢＡＣ復号演算を実行し得る。
【００９７】
[0106]エントロピー復号ユニット１５０が、区分されていないＣＵに対してパーシング動作を実行した後、ビデオデコーダ３０は、区分されていないＣＵに対して再構成演算を実行し得る。区分されていないＣＵに対して再構成演算を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構成演算を実行し得る。ＣＵの各ＴＵについて再構成演算を実行することによって、ビデオデコーダ３０は、ＣＵに関連付けられた残差ビデオブロックを再構成し得る。
【００９８】
[0107]ＴＵに対して再構成演算を実行することの一部として、逆量子化ユニット１５４は、ＴＵに関連付けられた変換係数ブロックを逆量子化（inverse quantize）、たとえば、逆量子化（de-quantize）し得る。逆量子化ユニット１５４は、ＨＥＶＣのために提案された、またはＨ．２６４復号規格によって定義された逆量子化処理と同様の方法で、変換係数ブロックを逆量子化し得る。逆量子化ユニット１５４は、量子化の程度を決定し、同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、変換係数ブロックのＣＵに関してビデオエンコーダ２０によって計算される量子化パラメータＱＰを使用し得る。
【００９９】
[0108]逆量子化ユニット１５４が変換係数ブロックを逆量子化した後、逆変換ユニット１５６は、変換係数ブロックに関連付けられたＴＵのための残差ビデオブロックを生成し得る。逆変換ユニット１５６は、ＴＵのための残差ビデオブロックを生成するために、変換係数ブロックに逆変換を適用し得る。たとえば、逆変換ユニット１５６は、変換係数ブロックに、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ：Karhunen-Loeve transform）、逆回転変換、逆方向変換、または別の逆変換を適用し得る。いくつかの例では、逆変換ユニット１５６は、ビデオエンコーダ２０からのシグナリングに基づいて、変換係数ブロックに適用すべき逆変換を決定し得る。そのような例では、逆変換ユニット１５６は、変換係数ブロックに関連付けられたツリーブロックの４分木のルートノードにおいてシグナリングされた変換に基づいて、逆変換を決定し得る。他の例では、逆変換ユニット１５６は、ブロックサイズ、コーディングモードなど、１つまたは複数のコーディング特性から逆変換を推定し得る。いくつかの例では、逆変換ユニット１５６はカスケード逆変換を適用し得る。
【０１００】
[0109]いくつかの例では、動き補償ユニット１６２は、補間フィルタに基づく補間を実行することによって、ＰＵの予測されたビデオブロックを改良し得る。サブサンプル精度を有する動き補償のために使用されるべき補間フィルタ用の識別子は、シンタックス要素に含まれ得る。動き補償ユニット１６２は、参照ブロックのサブ整数サンプルについての補間された値を計算するために、ＰＵの予測されたビデオブロックの生成中にビデオエンコーダ２０によって使用された同じ補間フィルタを使用し得る。動き補償ユニット１６２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを決定し得、予測ビデオブロックを生成するためにその補間フィルタを使用し得る。
【０１０１】
[0110]ＰＵが、イントラ予測を使用して符号化される場合、イントラ予測ユニット１６４は、ＰＵのための予測されたビデオブロックを生成するためにイントラ予測を実行し得る。たとえば、イントラ予測ユニット１６４は、ビットストリーム中のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定し得る。ビットストリームは、ＰＵのイントラ予測モードを決定するためにイントラ予測ユニット１６４が使用し得るシンタックス要素を含み得る。
【０１０２】
[0111]いくつかの事例では、イントラ予測ユニット１６４が現在のＰＵのイントラ予測モードを決定するために別のＰＵのイントラ予測モードを使用するべきであることを、シンタックス要素が示し得る。たとえば、現在のＰＵのイントラ予測モードが隣接ＰＵのイントラ予測モードと同じであることが起こり得る。言い換えれば、隣接ＰＵのイントラ予測モードは、現在のＰＵに対して最確モードであり得る。したがって、この例では、ビットストリームは、ＰＵのイントラ予測モードが隣接ＰＵのイントラ予測モードと同じであることを示す、小さいシンタックス要素を含み得る。イントラ予測ユニット１６４は、次いで、空間的に隣接するＰＵｓのビデオブロックに基づいてＰＵのための予測データ（たとえば、予測されたサンプル）を生成するために、イントラ予測モードを使用し得る。
【０１０３】
[0112]上記で説明したように、ビデオデコーダ３０もレイヤ間予測ユニット１６６を含み得る。レイヤ間予測ユニット１６６は、ＳＨＶＣにおいて利用可能である１つまたは複数の異なるレイヤ（たとえば、ベースレイヤまたは参照レイヤ）を使用して、現在のブロック（たとえば、エンハンスメントレイヤ中の現在ブロック）を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれることがある。レイヤ間予測ユニット１６６は、レイヤ間冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測と、レイヤ間動き予測と、レイヤ間残差予測とを含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤの中でコロケートされているブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。レイヤ間予測方式の各々について、以下でより詳細に説明する。
【０１０４】
[0113]再構成ユニット１５８は、ＣＵのビデオブロックを再構成するために、ＣＵのＴＵに関連付けられた残差ビデオブロックおよびＣＵのＰＵｓの予測されたビデオブロック、たとえば、適用可能なとき、イントラ予測データまたはインター予測データのいずれかを使用し得る。したがって、ビデオデコーダ３０は、ビットストリーム中のシンタックス要素に基づいて予測されたビデオブロックと残差ビデオブロックとを生成し得、予測されたビデオブロックと残差ビデオブロックとに基づいてビデオブロックを生成し得る。
【０１０５】
[0114]再構成ユニット１５８がＣＵのビデオブロックを再構成した後、フィルタユニット１５９は、ＣＵに関連したブロッキングアーティファクトを低減するためにデブロッキング演算を実行し得る。フィルタユニット１５９が、ＣＵに関連したブロッキングアーティファクトを低減するためにデブロッキング演算を実行した後、ビデオデコーダ３０は、ＣＵのビデオブロックを復号されたピクチャバッファ１６０に記憶し得る。復号されたピクチャバッファ１６０は、次の動き補償、イントラ予測、および図１Ａまたは図１Ｂのディスプレイデバイス３２などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ３０は、復号されたピクチャバッファ１６０の中のビデオブロックに基づいて、他のＣＵのＰＵｓに対して、イントラ予測演算またはインター予測演算を実行し得る。
【０１０６】
パレットコーディングモード
[0115]異なるコーディングユニット間の冗長性を主に除去する従来のイントラ予測およびインター予測と対照的に、パレットコーディングは、コーディングユニット内の反復的なピクセル値／パターンの冗長性をターゲットにする。パレットコーディングモードでは、ピクセル値をテーブルインデックス（パレットインデックスとも呼ばれる）にマッピングする、パレットと呼ばれるルックアップテーブルが最初にシグナリングされる。いくつかの実装形態では、パレットは、規定された最大サイズ（たとえば、３２個のピクセル値）を有する。パレットは、ブロックサンプル用の予測子として、または最終的な再構成されたブロックサンプルとして使用され得る、カラー成分（たとえば、ＲＧＢ、ＹＵＶなど）値または強度を表すテーブルインデックスによって番号付けされたエントリを含む。いくつかの実装形態では、パレットブロックの中のサンプルは、３つのランモード、すなわち、「左コピーモード」（または、ランモード）、「上コピーモード」、および「エスケープモード」（または、ピクセルモード）を使用してコーディングされる。
【０１０７】
[0116]左コピーモードでコーディングされているパレットブロックの中の位置の場合、パレットインデックスが最初にシグナリングされ、「ｒｕｎ＿ｌｅｎｇｔｈ」（または、「ｐａｌｅｔｔｅ＿ｒｕｎ」）（たとえば、Ｍ）が後続する。パレットブロックの中の現在位置および後続するＭ個の位置が、現在位置に対してシグナリングされている同じパレットインデックスを有するので、パレットブロックの中の現在位置および後続するＭ個の位置に対して、追加の情報がシグナリングされる必要がない。パレットインデックス（たとえば、ｉ）が、すべての３つのカラー成分によって共有され、そのことは、再構成されたピクセル値が（Ｙ，Ｕ，Ｖ）＝（ｐａｌｅｔｔｅY［ｉ］，ｐａｌｅｔｔｅU［ｉ］，ｐａｌｅｔｔｅV［ｉ］）であることを意味する（色空間がＹＵＶであると仮定して）。
【０１０８】
[0117]上コピーモードでコーディングされているパレットブロックの中の位置の場合、パレットブロックの中の後続するＮ個の位置（現在の位置を含む、合計でＮ＋１個の位置）にとってパレットインデックスがパレットブロックの中のすぐ上にある位置のパレットインデックスに等しいことを示すために、値「ｒｕｎ＿ｌｅｎｇｔｈ」（または、「ｃｏｐｙ＿ｒｕｎ」）（たとえば、Ｎ）がシグナリングされる。
【０１０９】
[0118]エスケープモード（または、ピクセルモード）でコーディングされているパレットブロックの中の位置の場合、パレットブロックの中の現在位置に対応するピクセル値がシグナリングされる。エスケープモードは、エスケープフラグ（たとえば、１としてのフラグ値が、現在位置がエスケープモードでコーディングされていることを示す）またはパレットインデックス（たとえば、パレットエントリのいずれにも対応しないインデックス値、またはパレットサイズ以上であるインデックス値）を使用してシグナリングされ得る。
【０１１０】
パレットビットストリーム
[0119]既存の実装形態では、パレットビットストリーム（たとえば、パレットコーディングモードでコーディングされたコーディングユニットを含むビットストリーム）は、次のように編成される。
【表１】
0006553181.tif 000002
【０１１１】
[0120]ｐａｌｅｔｔｅ＿ｅｎｔｒｉｅｓは、テーブルインデックスにそれぞれマッピングされた１つまたは複数のピクセル値を含む。たとえば、所与のコーディングユニットが３つの一意のピクセル値（たとえば、赤、緑、および青）を含む場合、パレットエントリは、３つのエントリ、（０，赤）、（１，緑），および（２，青）を含み得る。ｐａｌｅｔｔｅ＿ｉｎｄｅｘ＿ｍａｐは、パレットエントリを使用してコーディングされた１つまたは複数のパレットブロックを含み、ここで、パレットテーブルインデックス（たとえば、上記の例では、０、１、および２）が、パレットブロックの中のピクセル値を示すために使用される。
【０１１２】
[0121]図４は、入力ＣＵ４１０、インデックスブロック４２０、エスケープピクセル４３０、およびパレット４４０の例示的な構成を示す。図４に示すように、入力ＣＵ４１０は、３つの一意のピクセル値、すなわち、白、グレー、黒を含む。白およびグレーの頻度に基づいて、白およびグレーのピクセル値だけがパレット４４０に含まれ、ここで、０としてのインデックス値は白のピクセル値に関連付けられ、１としてのインデックス値はグレーのピクセル値に関連付けられる。パレットに含まれない黒のピクセル値は、パレットとは無関係にコーディングされるエスケープピクセル４３０としてラベル付けされる。図４に示すように、インデックスブロック４２０は、ブロックの中の位置ごとにインデックス値を含む。インデックスブロック４２０の中の２つの位置は、（たとえば、パレットインデックス０または１を参照することなしに）エスケープモードであるものとしてコーディングされる。図４の例では１つだけのエスケープピクセルおよび２つだけのパレットエントリが使用されるが、本出願の実施形態はそのように限定されず、任意の数のエスケープピクセルおよびパレットエントリが使用され得る。いくつかの実施形態では、パレットサイズは３２個のエントリに限定され、３２個のエントリのうちの１つに関連付けられない任意のピクセル値がエスケープピクセルになる。最大パレットサイズは任意の数に設定され得る。さらに、ＣＵサイズは、８ピクセル×８ピクセルに限定されず、１６×１６または任意の他のサイズであり得る。
【０１１３】
パレットビットストリームの例示的なシンタックス
[0122]いくつかの実装形態では、パレットインデックスマップにおいて、パレットコーディングモードでコーディングされたブロックは、ビットストリームの中で以下の形をなし得る。
【表２】
0006553181.tif 000003
【０１１４】
[0123]表２に示す例では、ｒｕｎ＿ｍｏｄｅ＿ｆｌａｇの値に応じて、異なるシンタックス要素がビットストリームの中でシグナリングされる。パレットブロックの中の現在位置が上コピーモードでコーディングされていることをランモードフラグが示す場合、ラン本体は、ランレングス値（上記の「ｒｕｎ＿ｌｅｎｇｔｈ」としての第１のインスタンス）を含む。パレットブロックの中の現在位置が「左コピー」モードでコーディングされていることをランモードフラグが示す場合、ラン本体は、インデックス値がエスケープインデックスに対応しない限り、インデックス値（「ｉｎｄｅｘ」）と、後続のランレングス値（上記の「ｒｕｎ＿ｌｅｎｇｔｈ」としての第２のインスタンス）とを含み、その場合、量子化エスケープピクセル値（「ｅｓｃａｐｅ＿ｐｉｘｅｌ＿ｖａｌｕｅ」）がシグナリングされる。
【０１１５】
[0124]代替実装形態では、明示的なエスケープフラグが使用される。より詳細には、パレットインデックスマップは、ビットストリームの中で以下の形をなし得る。
【表３】
0006553181.tif 000004
【０１１６】
[0125]表３に示す例では、ｅｓｃａｐｅ＿ｆｌａｇの値に応じて、異なるシンタックス要素がビットストリームの中でシグナリングされる。エスケープフラグが１としての値を有する場合、ラン本体は、量子化されたエスケープピクセル値を含む。エスケープフラグが０としての値を有する場合、「上コピー」モードと「左コピー」モードとを区別するために、ランモードフラグがシグナリングされる。パレットブロックの中の現在位置が「左コピー」モードでコーディングされていることをランモードフラグが示す場合、ビットストリームは、インデックス値と、後続するランレングス値とを含む。そうでない場合、ランレングス値だけがビットストリームの中でシグナリングされる。
【０１１７】
[0126]図５は、本開示の態様による、ビットストリームの中の非自然ビデオデータをコーディングするための方法５００を示すフローチャートである。図５に示すステップは、ビデオエンコーダ（たとえば、ビデオエンコーダ２０）、ビデオデコーダ（たとえば、ビデオデコーダ３０）、または任意の他の構成要素によって実行され得る。便宜上、方法５００は、ビデオエンコーダ２０、ビデオデコーダ３０、または別の構成要素であり得る、ビデオコーダ（単にコーダとも呼ばれる）によって実行されるものとして説明される。
【０１１８】
[0127]方法５００は、ブロック５０１において開始する。ブロック５０５において、コーダは、ＣＵに関連するパレットに基づいて、複数のピクセルを有するコーディングユニット（ＣＵ）を処理する。上述されたように、エンコーダは、ＣＵの内容に基づいてパレットを導出し得、ＣＵに関連するパレットを使用してデコーダがＣＵを処理し得るように、パレットをビットストリームの中でシグナリングし得る。パレットは、インデックス値およびピクセル値にそれぞれ関連している複数のパレットエントリを含み得る。ピクセル値は、ＣＵの中のピクセルのうちの１つに関連し得る。いくつかの実施形態では、各パレットエントリは、ＣＵの中で見つけられる関連付けられた一意のピクセル値である。ブロック５０５は、図６〜８を参照しながら説明する１つまたは複数のステップおよび／または方法を備え得る。方法は、ブロック５１０において終了する。
【０１１９】
バイパスビンのグループ化
[0128]Ｈ．２６４、ＨＥＶＣ、および多くの他の現代のビデオコーディング規格では、シンタックス要素に対して、２値化の後、コンテキスト適応型バイナリ算術コーダ（ＣＡＢＡＣ）に０／１ビンストリームが供給され、ここで、確率モデル（「コンテキスト」と名付けられる）が適応的に選択され、非定常性確率分布を追跡するように更新される。特別な事例として、エントロピーコーダのスループットを改善するために、確率モデルが更新されないことがある。コンテキスト更新を伴わない、そのような簡略化された方法を使用してコーディングされたビンは、バイパスビンと呼ばれる。
【０１２０】
[0129]表２および表３の例では、ビットストリームの中にいくつかの冗長性がある場合がある。これらの冗長性は、いくつかの条件が満たされているときにいくつかのシンタックス要素をシグナリングすることをスキップすることによって除去され得る。さらに、いくつかのシンタックス要素は、パーシング依存関係を導入する場合がある。たとえば、表２において、ランモードがインデックスコピーモード（たとえば、左コピーモード）であるとデコーダが推定し得るので、現在のピクセルがブロックの最初のラインにある場合、シンタックス要素ｒｕｎ＿ｍｏｄｅ＿ｆｌａｇはシグナリングされる必要がない場合がある。さらに、表２の例では、デコーダは、インデックス値を最初に復号し、復号されたインデックス値に応じて、デコーダは、モードがインデックスコピーモードであるのか、それともエスケープモードであるのかを決定する（たとえば、インデックス値がエスケープインデックス値を表すか否かに基づいて）。モードがインデックスコピーモードであるとデコーダが決定する場合、デコーダパーサは、引き続きランレングスをパースする。モードがエスケープモードであるとデコーダが決定する場合、デコーダパーサは、引き続きエスケープ値および／またはランレングスをパースし得る。パーサが、通常、デコーダよりもずっと高速に動作するので、復号エンジンとパーシングエンジンとの間のそのような依存関係は、パーサのスループットに影響を及ぼすことがある（たとえば、パーシングエンジンは、パースされたビットを復号エンジンが復号するのを待つ必要があり得るので）。したがって、パレットコーディングモードでコーディングされたブロックを処理する、改善された方法が望まれる。本出願では、パレットモードでのパーシング依存関係を回避または低減するように、パレット要素をビットストリームの中で編成するためのいくつかの新規の方法が説明される。
【０１２１】
実施形態＃１：量子化されたエスケープピクセル値をパレットモードブロックの最後に置く
[0130]いくつかの実施形態では、すべての量子化されたエスケープピクセル値が、ビットストリームの中でパレットモードブロックの最後においてシグナリングされる。そのような実施形態では、（インデックス，ランレングス）コーディングの後、エントロピーコーダリセッティングが適用され得る。たとえば、ブロックの中の可能な（インデックス，ランレングス）ペアのすべてをコーディングした後、算術コーディングエンジンのｉｖｌＣｕｒｒＲａｎｇｅ変数（たとえば、現在の算術コーディングインターバルの範囲を規定する変数）が２５６に設定される。この方法を用いると、デコーダは、ビットストリームからビット（bits）を読み取り得、それらがＣＡＢＡＣコーダを起動する必要ないものとしてビットを扱い得る。変数を２５６にリセットするこの手順を用いないと、コンテキストは更新される必要がない場合があるが、デコーダは、バイナリ決定を行うために依然としてＣＡＢＡＣコーダを起動する必要があり得る。したがって、すべての（インデックス，ランレングス）ペアをパースおよび／または復号した後、量子化されたエスケープピクセル値は並行して（in parallel）パースされ得る。一実施形態では、エスケープピクセルが固定長コードを使用してコーディングされている場合、インデックスランブロックをパースした後、エスケープピクセルは並行してパースおよび復号され得る。
【０１２２】
[0131]別の実施形態では、エスケープピクセルが短縮バイナリコードを使用してコーディングされている場合、エスケープピクセルの各カラー成分は、その量子化強度に応じて「ｋ」または「ｋ＋１」ビットを取り得る。たとえば、短縮バイナリ符号化では、値Ｘを有するシンタックス要素に対して、その最大の可能な値Ｍａｘが知られていること、ならびにｎ＝Ｍａｘ＋１およびｋ＝ｆｌｏｏｒ（ｌｏｇ2（ｎ））であり、その結果、２k≦ｎ＜２k+1であると仮定し、ｕ＝２ｋ＋１−ｎとすると、Ｘ＜ｕの場合、短縮バイナリコードワードは、長さｋを有するＸのバイナリ表現によって規定される。そうでない場合、短縮バイナリコードワードは、長さｋ＋１を有するＸ＋ｕのバイナリ表現によって規定される。そのような実施形態では、現在のブロックの中のすべてのエスケープピクセルに対する各カラー成分の最初の「ｋ」ビットが一緒にグループ化され得、随意の（ｋ＋１）番目のビットが後続し得る。そのような編成を用いると、すべてのエスケープピクセルに対する各カラー成分の最初の「ｋ」ビットは、並行してパースおよび復号され得る。随意の（ｋ＋１）番目のビットをパースする際に、依然としていくつかの依存関係が存在し得る。
【０１２３】
[0132]図６は、本開示の態様による、ビットストリームの中の非自然ビデオデータを復号するための方法６００を示すフローチャートである。図６に示すステップは、ビデオデコーダ（たとえば、ビデオデコーダ３０）または任意の他の構成要素によって実行され得る。便宜上、方法６００は、ビデオデコーダ３０または別の構成要素であり得る、ビデオコーダ（単にコーダとも呼ばれる）によって実行されるものとして説明される。
【０１２４】
[0133]方法６００は、ブロック６０１において開始する。ブロック６０５において、コーダは、ビットストリームの中で提供されるｃｕに関連するパレットをパースする。パレットは、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み得る。パレットの一例は図４に示されている。
【０１２５】
[0134]ブロック６１０において、コーダは、ＣＵに関連する１つまたは複数のランレングスをパースする。上述されたように、各ランレングスは、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示す。
【０１２６】
[0135]ブロック６１５において、コーダは、ＣＵに関連する１つまたは複数のインデックス値をパースする。上述されたように、各インデックス値は、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示す。図４の例では、０としてのインデックス値はＣＵの中の現在位置が白のピクセル値を有することを示し、１としてのインデックス値はＣＵの中の現在位置がグレーのピクセル値を有することを示す。
【０１２７】
[0136]ブロック６２０において、コーダは、ＣＵに関連する１つまたは複数のエスケープピクセル値をパースする。上述されたように、各エスケープピクセル値は、ＣＵに関連するパレットの中にないピクセル値を示す。図４の例では、黒のピクセル値を有する、ＣＵの中の２つの位置が、エスケープモードでコーディングされ、コーダは、黒のピクセル値をビットストリームの中でエスケープピクセル値としてシグナリングする。いくつかの実施形態では、エスケープピクセル値は、ビットストリームの中の連続した位置から（たとえば、ＣＵに関連する、ビットストリームの部分の最後において）パースされる。たとえば、エスケープピクセル値の連続した位置は、ビットストリームの中で、ＣＵに関連するすべてのランレングスおよびインデックス値の後に現れる。そのような実施形態では、すべてのランレングスおよびインデックス値がパースされた後、エスケープピクセル値は並行して処理（たとえば、パース）され得る。ブロック６２５において、コーダは、パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、ＣＵを復号する。方法は、ブロック６３０において終了する。
【０１２８】
[0137]方法６００では、図６に示すブロックのうちの１つまたは複数は削除される（たとえば、実行されない）ことがあり、および／または方法が実行される順序は入れ替えられることがある。たとえば、ブロック６１０およびブロック６１５は、ＣＵに関連する各ランレングスおよびインデックス値のペアをパースするために一緒に実行され得る。いくつかの実施形態では、さらなるブロックが方法６００に追加され得る。本開示の実施形態は、図６に示す例に限定されず、または図６に示す例によって限定されず、他の変形が本開示の趣旨から逸脱することなく実施され得る。
【０１２９】
実施形態＃２：インデックス値をパレットモードブロックの最後に置く
[0138]いくつかの実施形態では、すべてのインデックス値が、ビットストリームの中でパレットモードブロックの最後においてシグナリングされる。一実施形態では、すべての量子化されたエスケープ値が、ビットストリームの中でパレットモードブロックの最後においてシグナリングされ、インデックス値のすべての出現のグループに後続する。別の実施形態では、すべてのインデックス値が、ビットストリームの中で量子化されたエスケープ値の直前でシグナリングされる。
【０１３０】
[0139]ランレングスコーディングの後、エントロピーコーダリセッティングが適用され得る。たとえば、ブロックの中の可能なランレングスのすべてをコーディングした後、算術コーディングエンジンのｉｖｌＣｕｒｒＲａｎｇｅ変数（たとえば、現在の算術コーディングインターバルの範囲を規定する変数）が２５６に設定される。したがって、パレットブロックの中のすべてのランレングスをパースおよび／または復号した後、インデックス値および／またはエスケープ値は並行してパースされ得る。一実施形態では、インデックス値が固定長コードを使用してコーディングされている場合、ランレングスブロックをパースした後、インデックス値は並行してパースおよび復号され得る。
【０１３１】
[0140]別の実施形態では、インデックス値が短縮バイナリコードを使用してコーディングされている場合、インデックスは、その値に応じて「ｋ」または「ｋ＋１」ビットを取り得る。そのような実施形態では、現在のブロックの中のすべてのインデックス値および／またはエスケープピクセルに対する各カラー成分の最初の「ｋ」ビットが一緒にグループ化され得、随意の（ｋ＋１）番目のビットが後続し得る。そのような編成を用いると、現在のブロックの中のすべてのインデックス値および／またはエスケープ値の最初の「ｋ」ビットは、並行してパースおよび復号され得る。随意の（ｋ＋１）番目のビットをパースする際に、依然としていくつかの依存関係が存在し得る。
【０１３２】
[0141]図７は、本開示の態様による、ビットストリームの中の非自然ビデオデータを復号するための方法７００を示すフローチャートである。図７に示すステップは、ビデオデコーダ（たとえば、ビデオデコーダ３０）または任意の他の構成要素によって実行され得る。便宜上、方法７００は、ビデオデコーダ３０または別の構成要素であり得る、ビデオコーダ（単にコーダとも呼ばれる）によって実行されるものとして説明される。
【０１３３】
[0142]方法７００は、ブロック７０１において開始する。ブロック７０５において、コーダは、ビットストリームの中で提供されるｃｕに関連するパレットをパースする。パレットは、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み得る。パレットの一例は図４に示されている。
【０１３４】
[0143]ブロック７１０において、コーダは、ＣＵに関連する１つまたは複数のランレングスをパースする。上述されたように、各ランレングスは、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示す。
【０１３５】
[0144]ブロック７１５において、コーダは、ＣＵに関連する１つまたは複数のインデックス値をパースする。上述されたように、各インデックス値は、ＣＵの中の現在位置に関連しているパレットの中のピクセル値を示す。図４の例では、０としてのインデックス値はＣＵの中の現在位置が白のピクセル値を有することを示し、１としてのインデックス値はＣＵの中の現在位置がグレーのピクセル値を有することを示す。図７の例では、インデックス値は、ビットストリームの中の連続した位置から（たとえば、ＣＵに関連するランレングスのすべての後）パースされ得る。そのような実施形態では、すべてのランレングスがパースされた後、インデックス値は並行して処理（たとえば、パース）され得る。たとえば、インデックス値は、ビットストリームの中でエスケープピクセル値の直前に提供され得る。
【０１３６】
[0145]ブロック７２０において、コーダは、ＣＵに関連する１つまたは複数のエスケープピクセル値をパースする。上述されたように、各エスケープピクセル値は、ＣＵに関連するパレットの中にないピクセル値を示す。図４の例では、黒のピクセル値を有する、ＣＵの中の２つの位置が、エスケープモードでコーディングされ、コーダは、黒のピクセル値をビットストリームの中でエスケープピクセル値としてシグナリングする。いくつかの実施形態では、エスケープピクセル値は、ビットストリームの中の連続した位置から（たとえば、ＣＵに関連する、ビットストリームの部分の最後において）パースされ得る。たとえば、エスケープピクセル値の連続した位置は、ビットストリームの中で、ＣＵに関連するすべてのランレングスおよびインデックス値の後に現れ得る。そのような実施形態では、すべてのランレングスおよびインデックス値がパースされた後、エスケープピクセル値は並行して処理（たとえば、パース）され得る。ブロック７２５において、コーダは、パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、ＣＵを復号する。方法は、ブロック７３０において終了する。
【０１３７】
[0146]方法７００では、図７に示すブロックのうちの１つまたは複数は削除される（たとえば、実行されない）ことがあり、および／または方法が実行される順序は入れ替えられることがある。いくつかの実施形態では、さらなるブロックが方法７００に追加され得る。本開示の実施形態は、図７に示す例に限定されず、または図７に示す例によって限定されず、他の変形が本開示の趣旨から逸脱することなく実施され得る。
【０１３８】
実施形態＃３：インデックス値およびエスケープピクセル値の位置を規定するためにオフセットを使用する
[0147]いくつかの実施形態では、ビットストリームの中でパレットモードブロックの開始において２つのオフセットがシグナリングされ得、ここで、２つのオフセットは、上記で説明した、たとえば、それぞれ、Ｓ０およびＳ１によって示されるインデックス値グループおよびエスケープピクセル値グループの開始位置を規定する。インデックス値グループがエスケープピクセル値グループの前方にある事例では、第２のオフセットに対して、２つの開始位置の間のデルタ値だけがシグナリングされ得る（たとえば、オフセットＳ０およびＳ１−Ｓ０がシグナリングされ得る）。２つのオフセットは、様々なエントロピーコーディング方法、たとえば、短縮ライス、指数ゴロム、短縮バイナリ、固定長、単項、短縮単項などを使用してシグナリングされ得る。いくつかの実施形態では、パレットモードブロックの最後を示すオフセット値Ｓ２もシグナリングされ得る。代替として、第２のオフセットとＳ２との間のデルタ値がシグナリングされてもよい（たとえば、Ｓ２−Ｓ１）。
【０１３９】
バイパスビンをグループ化する実装形態
[0148]上記で説明した実施形態＃１および＃３によれば、ｐａｌｅｔｔｅ＿ｉｎｄｅｘ＿ｍａｐビットストリームは次のように修正され得る。
【表４】
0006553181.tif 000005
【０１４０】
[0149]上記で説明した実施形態＃１、＃２、および＃３によれば、ｐａｌｅｔｔｅ＿ｉｎｄｅｘ＿ｍａｐビットストリームは次のように修正され得る。
【表５】
0006553181.tif 000006
【０１４１】
インデックス冗長性検査
[0150]いくつかの実施形態では、インデックス値をコーディングするとき、冗長性検査が適用され得る。たとえば、ラスタ走査順序における前の隣接位置（位置「ｘ−１」として示す）が左コピーランモードの最後である場合、現在のインデックス値は、それの前の隣接位置のインデックス値と同じになり得ない。言い換えれば、位置「ｘ−１」が有効である（たとえば、現在のブロック内にあるか、または現在のブロックの外側にあるが、たとえば、境界パディングを通じて確定的な値を有する）とともに左コピーランの最後である場合、位置「ｘ」に対するインデックス値は、位置「ｘ−１」におけるインデックス値に等しくなり得ない（事例１）。その理由は、２つのインデックス値が同じならば、それらがより長い左コピーランにマージされているはずであるということである。別の例では、ラスタ走査順序における前の隣接位置が上コピーランモードの最後である場合、および／または現在位置の上に隣接するものがエスケープピクセルでないという追加の制約が満たされている場合、現在の値は、それの上部に隣接するもののインデックス値と同じになり得ない。言い換えれば、位置「ｘ−１」が有効であるとともに上コピーランの最後である場合、および／または位置「ｘ」の上のピクセル値がエスケープピクセルでないという追加の制約が満たされている場合、位置「ｘ」に対するインデックス値は、それの上に隣接するもののインデックス値に等しくなり得ない（事例２）。その理由は、２つのインデックス値が同じならば、それらがより長い上コピーランにマージされているはずであるということである。したがって、これらの例は、エンコーダが「最長可能ラン」原理に従うことを前提とする。これらの事例のうちのいずれにおいても、範囲（たとえば、上記で説明したＭａｘ値）が１だけ低減され得、ビット節約が実現され得る。
【０１４２】
[0151]しかしながら、事例１の場合、位置「ｘ」におけるインデックス値の復号は、位置「ｘ−１」におけるインデックス値の再構成に依存する（たとえば、位置「ｘ」におけるどのインデックス値があり得ないのかを決定するために、デコーダが位置「ｘ−１」におけるインデックス値を知っている必要があるので）。しかしながら、位置「ｘ−１」に対するインデックス値は、位置「ｘ」におけるインデックス値が復号されている時間によってすぐに利用可能でない場合がある。したがって、この依存関係は、復号プロセスにおいていくらかの遅延を引き起こす場合がある。この依存関係を除去するために、いくつかの実施形態では、事例１に対する条件付き検査が無効化され得る。そのような実施形態のうちのいくつかでは、事例２に対する条件付き検査は依然として実行され得る（たとえば、現在のピクセルの上の位置のインデックス値が利用可能である可能性が高いので）。そのような実施形態では、事例１に対する条件付き検査は、完全に無効化される。代替として、事例１に対する条件付き検査は、特定の事例のみに対して無効化され得る。たとえば、事例１に対する条件付き検査は、「制限付きラン」機能が有効化されているときのみ無効化され得、ここで、ランレングスがそれに対してコーディングされる最大パレットインデックス値（または、ランレングスがそれに対してコーディングされない最小パレットインデックス値）が示される。
【０１４３】
[0152]事例２では、エスケープピクセルが左コピーランまたは上コピーランに入ることを許される場合、位置「ｘ」の上のピクセルがエスケープピクセルであるか否かという検査は除去され得る。たとえば、パレットの中になく、（たとえば、パレットの中のピクセル値とまったく同様に）それら自体のランを有する１つまたは複数のインデックス値が、エスケープピクセルに割り当てられ得る。同様に、位置「ｘ」の左のピクセルがエスケープピクセルであるか否かという検査（たとえば、エスケープピクセルが左からまたは上からコピーされるのを所与の実装形態が許容しない場合、位置ｘにおける現在のインデックス値をパースする前に実行される必要があり得るステップ）は、エスケープピクセルが左コピーランまたは上コピーランに入ることを許される場合、除去され得る。
【０１４４】
[0153]図８は、本開示の態様による、ビットストリームの中の非自然ビデオデータをコーディングするための方法８００を示すフローチャートである。図８に示すステップは、ビデオエンコーダ（たとえば、ビデオエンコーダ２０）、ビデオデコーダ（たとえば、ビデオデコーダ３０）、または任意の他の構成要素によって実行され得る。便宜上、方法８００は、ビデオエンコーダ２０、ビデオデコーダ３０、または別の構成要素であり得る、ビデオコーダ（単にコーダとも呼ばれる）によって実行されるものとして説明される。
【０１４５】
[0154]方法８００は、ブロック８０１において開始する。ブロック８０５において、コーダは、ＣＵの中の現在位置の左の位置が上コピーランの最後に関連していると決定する。上述されたように、ＣＵの中の１つまたは複数の位置が上コピーモードでコーディングされているとき、ＣＵの中の初期位置から始まるとともに初期位置を含む、上コピーモードに関連している連続した位置の数を示すランレングスがシグナリングされる。ランレングスに基づいて、コーダは、所与の位置（たとえば、ＣＵの中の現在位置の直前にくる位置）が上コピーランの最後であると決定し得る。
【０１４６】
[0155]ブロック８１０において、コーダは、現在位置の左の位置が上コピーランの最後に関連していると決定することに応答して、現在位置の上の位置がエスケープピクセル値に関連しているかどうかを決定することなく、現在位置に関連するインデックス値を決定する。上述されたように、通常、コーダは、現在のピクセルのインデックス値を決定する前に、現在位置の上の位置がエスケープピクセル値に関連しているかどうかを決定する必要がある（たとえば、現在位置の上の位置がエスケープピクセルに関連している場合、現在位置のインデックス値が現在位置の上の位置のインデックス値に等しくないという前提は、不正確になる場合がある）。しかしながら、本開示のいくつかの実施形態では、エスケープピクセルは、左コピーランまたは上コピーランの一部であり得る。したがって、現在位置の上の位置における別個の検査は必要でない。方法は、ブロック８１５において終了する。
【０１４７】
[0156]方法８００では、図８に示すブロックのうちの１つまたは複数は削除される（たとえば、実行されない）ことがあり、および／または方法が実行される順序は入れ替えられることがある。いくつかの実施形態では、さらなるブロックが方法８００に追加され得る。本開示の実施形態は、図８に示す例に限定されず、または図８に示す例によって限定されず、他の変形が本開示の趣旨から逸脱することなく実施され得る。
【０１４８】
インデックスビンの最大数を一定として保つこと
[0157]パレットモードコーディングのいくつかの実装形態では、パレットインデックスは、短縮バイナリコードを使用してコーディングされる。現在のＣＵの中の最大インデックスがＮである（たとえば、インデックス値が｛０，１，２，．．．，Ｎ｝から包括的に選ばれる）と仮定すると、これらの２つの値が等しくない場合、各インデックスをコーディングするためのビンの数は
【数１】
0006553181.tif 000007
または
【数２】
0006553181.tif 000008
であり得る。エスケープピクセルに最大インデックスが割り当てられるので（たとえば、パレットの中のすべてのピクセル値の後に、それらのインデックス値が割り当てられる）、エスケープピクセルをコーディングすることは
【数３】
0006553181.tif 000009
個のビンを取る。
【０１４９】
[0158]場合によっては、上記で説明した方法のように依存関係を活用することによって、現在のインデックスに対する最大シンボル値は、１だけ低減され得る。言い換えれば、エスケープピクセルは、冗長性除去条件が有効化されているか否かに応じて、
【数４】
0006553181.tif 000010
個または
【数５】
0006553181.tif 000011
個のビンを取り得る。その結果、デコーダは、インデックスを復号するためにいくつのビンが必要であるのかを決定するために、最大インデックスシンボル値がＮであるのか、それともＮ−１であるのかを最初に計算する必要があり得る。このことは、さらなるオンチップ遅延をもたらし、デコーダパイプライニング（decoder pipelining）への悪影響を有する。いくつかの実施形態では、この遅延と、デコーダパイプライニングへの任意の悪影響とを除去するために、この冗長性除去メカニズムが制限され得る。たとえば、インデックスコーディングのために使用されるビンの最大数は、定数に設定され得る。一例では、エスケープピクセルのインデックス値は、常にｃｅｉｌ（ｌｏｇ２（Ｎ＋１））個のビンを使用してよい。別の例では、ｃｅｉｌ（ｌｏｇ２（Ｎ＋１））がｃｅｉｌ（ｌｏｇ２（Ｎ））に等しい場合、エスケープピクセルに対する冗長性除去手順が有効化され、そうでない場合、エスケープピクセルに対する冗長性除去手順は無効化される。
【０１５０】
エンコーダ側フローチャート
[0159]図９は、本開示の態様による、ビットストリームの中のビデオデータを符号化するための方法９００を示すフローチャートである。たとえば、ビデオデータは、コンピュータ生成されたスクリーンコンテンツを含む非自然ビデオデータであり得る。図９に示すステップは、ビデオエンコーダ（たとえば、ビデオエンコーダ２０）または任意の他の構成要素によって実行され得る。便宜上、方法９００は、ビデオエンコーダ２０または別の構成要素であり得る、ビデオコーダ（単にコーダとも呼ばれる）によって実行されるものとして説明される。
【０１５１】
[0160]方法９００は、ブロック９０１において開始する。ブロック９０５において、コーダは、コーディングユニット（ＣＵ）の中の複数のピクセルを分析する。ＣＵの中の各ピクセルは、ピクセル値に関連し得る。たとえば、ＣＵの中の複数のピクセルが、同じピクセル値を有することがある。
【０１５２】
[0161]ブロック９１０において、コーダは、ＣＵの中の複数のピクセルに基づいてパレットを生成する。パレットは、インデックス値およびインデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み得る。パレットの一例は図４に示されている。
【０１５３】
[0162]ブロック９１５において、コーダは、ＣＵに関連する１つまたは複数のランレングスを決定する。上述されたように、各ランレングスは、ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示す。
【０１５４】
[0163]ブロック９２０において、コーダは、ＣＵに関連する１つまたは複数のインデックス値を決定する。上述されたように、各インデックス値は、ＣＵの中の現在位置に関連するパレットの中のピクセル値を示す。図４の例では、０としてのインデックス値はＣＵの中の現在位置が白のピクセル値を有することを示し、１としてのインデックス値はＣＵの中の現在位置がグレーのピクセル値を有することを示す。
【０１５５】
[0164]ブロック９２５において、コーダは、ＣＵに関連する１つまたは複数のエスケープピクセル値を決定する。上述されたように、各エスケープピクセル値は、ＣＵに関連するパレットの中にないピクセル値を示す。図４の例では、黒のピクセル値を有する、ＣＵの中の２つの位置が、エスケープモードでコーディングされ、コーダは、黒のピクセル値をビットストリームの中でエスケープピクセル値としてシグナリングする。
【０１５６】
[0165]ブロック９３０において、コーダは、生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、ＣＵを符号化する。いくつかの実施形態では、エスケープピクセル値は、ビットストリームの中の連続した位置において（たとえば、ＣＵに関連する、ビットストリームの部分の最後において）符号化される。たとえば、エスケープピクセル値の連続した位置は、ビットストリームの中で、ＣＵに関連するすべてのランレングスおよびインデックス値の後に現れる。そのような実施形態では、すべてのランレングスおよびインデックス値がデコーダによってパースされた後、エスケープピクセル値は並行して処理（たとえば、パース）され得る。方法は、ブロック９３５において終了する。
【０１５７】
[0166]方法９００では、図９に示すブロックのうちの１つまたは複数は削除される（たとえば、実行されない）ことがあり、および／または方法が実行される順序は入れ替えられることがある。いくつかの実施形態では、さらなるブロックが方法９００に追加され得る。本開示の実施形態は、図９に示す例に限定されず、または図９に示す例によって限定されず、他の変形が本開示の趣旨から逸脱することなく実施され得る。
【０１５８】
他の考慮事項
[0167]本明細書で開示された情報および信号は、多種多様な技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【０１５９】
[0168]本明細書で開示された実施形態に関して記載された様々な例示的な論理ブロック、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、およびステップが、概してそれらの機能に関して上記で説明されている。そのような機能性が、ハードウェアまたはソフトウェアのどちらとして実施されるのかは、特定の適用例と、システム全体に課せられる設計制約とに依存する。当業者は、特定の適用例ごとに様々な方法で記載された機能を実装し得るが、そのような実装の決定が、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【０１６０】
[0169]本明細書に記載された技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのいずれかにおいて実装され得る。デバイスまたは構成要素として記載された任意の特徴は、集積論理デバイス内で一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアに実装された場合、本技法は、実行されたとき、上記で説明された方法のうちの１つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリ、磁気または光学データ記憶媒体などの、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波などの、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および／または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１６１】
[0170]プログラムコードは、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、または他の等価の集積回路もしくはディスクリート論理回路を含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示に記載された技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書に記載された技法の実装に適した任意の他の構造もしくは装置のいずれかを指し得る。さらに、いくつかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のソフトウェアもしくはハードウェア内に提供され得るか、または複合ビデオエンコーダ／デコーダ（コーデック）に組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０１６２】
[0171]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置で実装され得る。様々なコンポーネント、またはユニットは、開示されている技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記で説明したように、様々なユニットが、適切なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１６３】
[0172]上記のことは様々な異なる実施形態に関して説明されたが、一実施形態からの特徴または要素は、本開示の教示から逸脱することなく他の実施形態と組み合わされ得る。ただし、それぞれの実施形態の間での特徴の組合せは、必ずしもそれに限定されるとは限らない。本開示の様々な実施形態について説明した。これらおよび他の実施形態は、以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビットストリームの中で提供されるビデオデータを復号するための方法であって、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、前記方法が、
前記ビットストリームの中で提供される、前記ＣＵに関連するパレットをパースすることと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、ここにおいて、前記エスケープピクセル値が、前記ビットストリームの中の連続した位置からパースされ、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にあり、
前記パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、前記ＣＵを復号することと、
を備える、方法。
［Ｃ２］
前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットすることをさらに備える、Ｃ１に記載の方法。
［Ｃ３］
前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する前記エスケープピクセル値が並行してパースされる、Ｃ１に記載の方法。
［Ｃ４］
前記ＣＵに関連する前記エスケープピクセル値の前であるが前記ＣＵに関連するすべての前記ランレングスの後にある、前記ビットストリームの中の前記連続した位置から前記インデックス値がパースされる、Ｃ１に記載の方法。
［Ｃ５］
前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットすることをさらに備える、Ｃ４に記載の方法。
［Ｃ６］
前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する前記インデックス値が並行してパースされる、Ｃ４に記載の方法。
［Ｃ７］
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ８］
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、Ｃ１に記載の方法。
［Ｃ９］
ビットストリームの中で提供されるビデオデータを復号するための装置であって、
前記ビットストリームに関連するビデオデータを記憶するように構成されたメモリと、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、
前記メモリと通信しており、
前記ビットストリームの中で提供される、前記ＣＵに関連するパレットをパースすることと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のランレングスをパースすることと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連する連続した位置の数を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のインデックス値をパースすることと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中で提供される、前記ＣＵに関連している１つまたは複数のエスケープピクセル値をパースすることと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、ここにおいて、前記エスケープピクセル値が、前記ビットストリームの中の連続した位置からパースされ、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にあり、
前記パースされたパレット、パースされたランレングス、パースされたインデックス値、およびパースされたエスケープ値に基づいて、前記ＣＵを復号することと、
を行うように構成された、プロセッサと、
を備える、装置。
［Ｃ１０］
前記プロセッサが、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットするようにさらに構成される、Ｃ９に記載の装置。
［Ｃ１１］
前記プロセッサが、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する前記エスケープピクセル値を並行してパースするように構成される、Ｃ９に記載の方法。
［Ｃ１２］
前記プロセッサが、前記ＣＵに関連する前記エスケープピクセル値の前であるが前記ＣＵに関連するすべての前記ランレングスの後にある、前記ビットストリームの中の前記連続した位置から前記インデックス値をパースするように構成される、Ｃ９に記載の方法。
［Ｃ１３］
前記プロセッサが、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべてをパースした後、前記ＣＵに関連する現在のインターバルの範囲を規定する算術コーディング変数をリセットするようにさらに構成される、Ｃ１２に記載の方法。
［Ｃ１４］
前記プロセッサが、前記ＣＵに関連する前記ランレングスのすべてをパースした後、前記ＣＵに関連する前記インデックス値を並行してパースするように構成される、Ｃ１２に記載の方法。
［Ｃ１５］
前記プロセッサが、
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
を行うようにさらに構成される、Ｃ９に記載の方法。
［Ｃ１６］
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、Ｃ９に記載の方法。
［Ｃ１７］
ビットストリームの中のビデオデータを符号化するための方法であって、
コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、
前記ＣＵの中の前記複数のピクセルに基づいて、パレットを生成することと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、
前記生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、前記ＣＵを符号化することと、ここにおいて、前記エスケープピクセル値が、前記ビットストリームの中の連続した位置において符号化され、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にあり、
を備える、方法。
［Ｃ１８］
前記インデックス値が、前記ビットストリームの中の連続した位置において符号化され、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記エスケープピクセル値の前であるが前記ＣＵに関連するすべての前記ランレングスの後にある、Ｃ１７に記載の方法。
［Ｃ１９］
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
をさらに備える、Ｃ１７に記載の方法。
［Ｃ２０］
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、Ｃ１７に記載の方法。
［Ｃ２１］
前記ＣＵに関連する前記インデックス値の中で最も早い位置を有するインデックス値に対応する、前記ビットストリームの中の位置を示す第１のオフセットを決定することをさらに備える、Ｃ１７に記載の方法。
［Ｃ２２］
前記ＣＵに関連する前記エスケープピクセル値の中で最も早い位置を有するエスケープピクセル値に対応する、前記ビットストリームの中の位置を示す第２のオフセットを決定することをさらに備える、Ｃ１７に記載の方法。
［Ｃ２３］
ビットストリームの中のビデオデータを符号化するための装置であって、
前記ビットストリームに関連するビデオデータを記憶するように構成されたメモリと、前記ビットストリームが、パレットモードでコーディングされたコーディングユニット（ＣＵ）を含み、
前記メモリと通信しており、
コーディングユニット（ＣＵ）の中の複数のピクセルを分析することと、各ピクセルが、それに関連するピクセル値を有し、
前記ＣＵの中の前記複数のピクセルに基づいて、パレットを生成することと、前記パレットが、インデックス値および前記インデックス値に関連するピクセル値にそれぞれ関連している複数のパレットエントリを含み、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のランレングスを決定することと、各ランレングスが、前記ＣＵの中の現在位置から始まるとともに現在位置を含む、左コピーモードまたは上コピーモードに関連している連続した位置の数を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のインデックス値を決定することと、各インデックス値が、前記ＣＵの中の前記現在位置に関連している前記パレットの中のピクセル値を示し、
前記ビットストリームの中の前記ＣＵに関連する１つまたは複数のエスケープピクセル値を決定することと、各エスケープピクセル値が、前記パレットの中にないピクセル値を示し、
前記生成されたパレット、決定されたランレングス、決定されたインデックス値、および決定されたエスケープピクセル値に基づいて、前記ＣＵを符号化することと、ここにおいて、前記エスケープピクセル値が、前記ビットストリームの中の連続した位置において符号化され、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記ランレングスおよび前記インデックス値のすべての後にあり、
を行うように構成された、プロセッサと、
を備える、装置。
［Ｃ２４］
前記プロセッサが、前記ビットストリームの中の連続した位置において前記インデックス値を符号化するように構成され、前記連続した位置が、前記ビットストリームの中で、前記ＣＵに関連する前記エスケープピクセル値の前であるが前記ＣＵに関連するすべての前記ランレングスの後にある、Ｃ２３に記載の装置。
［Ｃ２５］
前記プロセッサが、
前記現在位置の直前にくる前記ＣＵの中の第１の位置が、上コピーランの最後に関連していると決定することと、
前記ＣＵの中の前記第１の位置が上コピーランの最後に関連していると決定することに応答して、前記ＣＵの中の前記現在位置のすぐ上にある第２の位置がエスケープピクセル値に関連しているかどうかを決定することなく、前記現在位置に関連するインデックス値を決定することと、
を行うようにさらに構成される、Ｃ２３に記載の装置。
［Ｃ２６］
前記ＣＵが、エスケープピクセル値を含む上コピーランまたは左コピーランのうちの１つを含む、Ｃ２３に記載の装置。
［Ｃ２７］
前記プロセッサが、前記ＣＵに関連する前記インデックス値の中で最も早い位置を有するインデックス値に対応する、前記ビットストリームの中の位置を示す第１のオフセットを決定するようにさらに構成される、Ｃ２３に記載の装置。
［Ｃ２８］
前記ＣＵに関連する前記エスケープピクセル値の中で最も早い位置を有するエスケープピクセル値に対応する、前記ビットストリームの中の位置を示す第２のオフセットを決定することをさらに備える、Ｃ２３に記載の装置。
【図１Ａ】
0006553181.tif 000012
【図１Ｂ】
0006553181.tif 000013
【図２】
0006553181.tif 000014
【図３】
0006553181.tif 000015
【図４】
0006553181.tif 000016
【図５】
0006553181.tif 000017
【図６】
0006553181.tif 000018
【図７】
0006553181.tif 000019
【図８】
0006553181.tif 000020
【図９】
0006553181.tif 000021