(57)【要約】複数のビデオサンプルを有するビデオ情報をコード化するための方法および装置が開示される。ビデオサンプルは、単一のクロックサイクル内での送信のためのグループへと区分化され、ここにおいて、これらのサンプルは、ビット長Ｂと関連付けられており、グループは、グループサイズＫを有する。サンプルグループは、コード番号にマッピングされ、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第１の部分と、このグループのサンプルを表す第２の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるＢ値およびＫ値に対して使用され得る。【選択図】図７
2019511865.tif 000002
【特許請求の範囲】
【請求項１】
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
１つのグループに配列される複数のビデオサンプルを記憶するように構成されたメモリと、各ビデオサンプルは、ビットサイズＢを有し、前記グループは、グループサイズＫを有する、
ハードウェアプロセッサと、前記プロセッサは、可変長コード化（ＶＬＣ）スキームを使用して、ベクトルベースコードを形成するために前記グループ中の前記複数の前記ビデオサンプルをコード化するように構成され、前記ベクトルベースコードは、少なくとも、前記ビットサイズＢまたは前記グループサイズＫのうちの少なくとも１つに対応するルックアップテーブルのタイプを識別する第１の部分と、前記グループ中の前記複数のビデオサンプルを表す第２の部分とを備える、
を備える装置。
【請求項２】
前記プロセッサは、
前記グループをインデックス値に変換することと、
前記グループに関連付けられた前記グループサイズＫまたは前記ビットサイズＢのうちの少なくとも１つに対応する前記タイプのルックアップテーブルを使用して、前記インデックス値をコード番号にマッピングすることと、
前記ＶＬＣスキームを使用して、前記ベクトルベースコードを形成するために前記コード番号を符号化することと
を行うようにさらに構成される、請求項１に記載の装置。
【請求項３】
前記プロセッサは、
可変長コード化（ＶＬＣ）スキームを使用して、コード番号を形成するために前記ベクトルベースコードを復号することと、
前記ベクトルベースコードの前記第１の部分によって識別される前記タイプのルックアップテーブルを使用して、前記コード番号をインデックス値にマッピングすることと、
前記インデックス値を前記グループの前記複数のビデオサンプルに変換することと
を行うようにさらに構成される、請求項１に記載の装置。
【請求項４】
前記第１の部分は、単項コードフォーマットを使用してコード化される、請求項１に記載の装置。
【請求項５】
前記複数のビデオサンプルは、２の補数表現を使用して表される、請求項１に記載の装置。
【請求項６】
前記プロセッサが、前記ベクトルベースコードを形成するために前記グループ中の前記複数のビデオサンプルの前記絶対値をコード化するように構成されるような、符号絶対値表現を使用した前記複数のビデオサンプル、請求項１に記載の装置。
【請求項７】
前記プロセッサ回路は、前記ビットサイズＢが閾値より小さいとき、前記ベクトルベースコードを供給するように構成される、請求項１に記載の装置。
【請求項８】
前記プロセッサ回路は、第２のＶＬＣスキームを使用して、前記ベクトルベースコードの前記第１の部分と、少なくとも前記第２の部分のプレフィックス部分とを符号化するようにさらに構成される、請求項１に記載の装置。
【請求項９】
前記タイプのルックアップテーブルは、可能なＫサイズのグループのセットのうちの前記グループの生起確率に少なくとも部分的に基づく、請求項１に記載の装置。
【請求項１０】
ビデオ情報をコード化するための方法であって、前記情報は、サンプルのセットを備え、前記方法は、
前記サンプルのセットを１つまたは複数のサンプルベクトルへと区分化することと、前記１つまたは複数のサンプルベクトルのうちの１つのサンプルベクトルは、ビットサイズＢに関連付けられたＫ個のサンプルを備える、
ルックアップテーブルを使用して、前記サンプルベクトルをコード番号にマッピングすることと、前記ルックアップテーブルは、可能な長さＫのサンプルベクトルのセットのうちの前記サンプルベクトルの生起確率に少なくとも部分的に基づく、
前記Ｋ個のサンプルを表す可変長コード化（ＶＬＣ）コードを生成するために、ＶＬＣスキームを使用して、前記コード番号をコード化することと、前記ＶＬＣコードは、少なくとも、前記ルックアップテーブルを識別する第１の部分と、前記サンプルベクトルの前記Ｋ個のサンプルを表す第２の部分とを備える、
を備える方法。
【請求項１１】
サンプルは、画素の色成分に対応する、請求項１０に記載の方法。
【請求項１２】
前記サンプルのセットは、ビデオ情報のブロックに関連付けられた量子化された残余に対応する、請求項１０に記載の方法。
【請求項１３】
前記ＶＬＣスキームは、ハフマン、算術、指数ゴロム（ＥＧ）、およびゴロムライス（ＧＲ）のうちの少なくとも１つを備える、請求項１０に記載の方法。
【請求項１４】
前記サンプルベクトルをコード番号にマッピングすることは、前記サンプルベクトルを、前記サンプルベクトルに対応する一意的なインデックス値に変換することと、前記ルックアップテーブルを使用して、前記インデックス値を前記コード番号にマッピングすることとを備える、請求項１０に記載の方法。
【請求項１５】
前記ＬＵＴは、前記ビットサイズＢまたは前記長さＫのうちの少なくとも１つに基づいて選択される、請求項１０に記載の方法。
【請求項１６】
前記第２の部分は、少なくともプレフィックス部分およびサフィックス部分を備え、前記方法は、ＶＬＣスキームを使用して、前記第１の部分および前記プレフィックス部分をコード化することをさらに備える、請求項１０に記載の方法。
【請求項１７】
前記第１の部分は、単項フォーマットで表される、請求項１０に記載の方法。
【請求項１８】
前記サンプルのセットは、２の補数表現を使用して表される、請求項１０に記載の方法。
【請求項１９】
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
送信のために複数のグループへと分けられる複数のビデオサンプルを記憶するように構成されたメモリと、各グループは、１つまたは複数のビデオサンプルを備える、
ハードウェアプロセッサと、前記プロセッサは、ビデオサンプルの前記複数のグループをコード化するように構成される、ここにおいて、前記複数のグループのうちの第１の複数のグループからのビデオサンプルは、符号絶対値フォーマットを使用してコード化され、前記複数のグループのうちの１つまたは複数の残りのグループは、２の補数フォーマットを使用してコード化される、
を備える装置。
【請求項２０】
前記複数のグループは、ｎ個のグループを備え、前記第１の複数のグループは、前記複数のグループのうちの最初のｎ−１個のグループを備える、請求項１９に記載の装置。
【請求項２１】
前記１つまたは複数の残りのグループは、前記第１の複数のグループの各グループの少なくとも１つのサンプル値が非ゼロ値に対応する場合にのみ、２の補数フォーマットを使用してコード化される、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、ビデオコード化および圧縮の分野に関し、特に、ディスプレイストリーム圧縮（ＤＳＣ）のような、ディスプレイリンクを介した送信のためのビデオ圧縮に関する。
【背景技術】
【０００２】
[0002]デジタルビデオ能力は、デジタルテレビ、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップモニタ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話、ビデオ電話会議デバイス、等を含む、広範囲のディスプレイに組み込まれることができる。ディスプレイリンクは、ディスプレイを好適なソースデバイスに接続するために使用される。ディスプレイリンクの帯域幅要件は、ディスプレイの解像度に比例し、ゆえに、高解像度ディスプレイは、広帯域幅のディスプレイリンクを必要とする。いくつかのディスプレイリンクは、高解像度ディスプレイをサポートする帯域幅を有さない。ビデオ圧縮を使用してこの帯域幅要件を低減することで、より低い帯域幅のディスプレイリンクが、高解像度ディスプレイにデジタルビデオを提供するのに使用されることができる。
【０００３】
[0003]画素データに対して画像圧縮を利用しようともした。しかしながら、そのようなスキームは、時に、視覚的にロスレスでないかまたは従来のディスプレイデバイスでインプリメントするのが困難かつ高価であり得る。
【０００４】
[0004]ＶＥＳＡ（Video Electronics Standards Association）は、ディスプレイリンクビデオ圧縮のための規格として、ディスプレイストリーム圧縮（ＤＳＣ）を開発してきた。ＤＳＣのようなディスプレイリンクビデオ圧縮技法は、とりわけ、視覚的にロスレスなピクチャ品質（例えば、圧縮がアクティブであることをユーザに悟られないような品質レベルを有するピクチャ）を提供するべきである。ディスプレイリンクビデオ圧縮技法はまた、従来のハードウェアでリアルタイムにインプリメントするのが容易かつ高価でないスキームを提供するべきである。
【発明の概要】
【０００５】
[0005]本開示のシステム、方法、およびデバイスは各々、いくつかの革新的な態様を有し、それらはいずれも、本明細書で開示される望ましい属性を単独で担うものではない。
【０００６】
[0006]一態様では、複数のビデオサンプルを有するビデオ情報をコード化するための方法および装置が開示される。ビデオサンプルは、単一のクロックサイクル内での送信のためにグループへと区分化され、ここにおいて、サンプルは、ビット長Ｂに関連付けられており、グループは、グループサイズＫを有する。サンプルグループは、コード番号にマッピングされ、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第１の部分と、このグループのサンプルを表す第２の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるＢ値およびＫ値に対して使用され得る。
【図面の簡単な説明】
【０００７】
【図１Ａ】[0007]図１Ａは、本開示で説明される態様に係る技法を利用し得る例示的なビデオ符号化および復号システムを例示するブロック図である。
【図１Ｂ】[0008]図１Ｂは、本開示で説明される態様に係る技法を実行し得る別の例となるビデオ符号化および復号システムを例示するブロック図である。
【図２Ａ】[0009]図２Ａは、本開示で説明される態様に係る技法をインプリメントし得るビデオエンコーダの例を例示するブロック図である。
【図２Ｂ】[0010]図２Ｂは、本開示で説明される態様に係る技法をインプリメントし得るビデオデコーダの例を例示するブロック図である。
【図３】[0011]図３は、量子化パラメータ（ＱＰ）調整値を決定することへの例示的なアプローチを示す。
【図４】[0012]図４は、Ｋ＝４個のサンプルを有するベクトルのためのＤＳＵ−ＶＬＣ構造を示す。
【図５】[0013]図５は、４個のサンプルの例示的なグループのためのＤＳＵ−ＶＬＣコードを例示する。
【図６】[0014]図６は、均一グループ化の例を例示し、ここで、２×８ブロックは、４つのグループへと区分化される。
【図７】[0015]図７は、ベクトルベースＥＣプロセスの例示的なブロック図を例示する。
【図８】[0016]図８は、Ｋ＝４のサンプルを含むグループをコード化するために使用され得るベクトルベースＥＣの構造を示し、ここで、使用されるＬＵＴのタイプは、明示的にシグナリングされる。
【図９】[0017]図９は、組み合わせられたＬＵＴタイプ信号およびＶＬＣコードプレフィックスを備えるコードを例示する。
【図１０Ａ】[0018]図１０Ａは、符号絶対値表現（sign-magnitude representation）を使用して複数のサンプルベクトルをエントロピーコード化する例を例示する。
【図１０Ｂ】図１０Ｂは、符号絶対値表現を使用して複数のサンプルベクトルをエントロピーコード化する例を例示する。
【図１１】[0019]図１１は、符号絶対値を使用してコード化されたサンプルベクトルをパースおよび復号するために必要とされ得る多数の（a number of）クロックサイクルを例示する例示的なグラフを例示する。
【図１２】[0020]図１２は、複数のサンプルベクトルのハイブリッドエントロピーコード化の例を例示する。
【図１３】[0021]図１３は、ハイブリッドコード化スキームを使用してコード化されたサンプルベクトルをパースおよび復号するために必要とされ得る多数のクロックサイクルを例示する例示的なグラフを例示する。
【図１４Ａ】[0022]図１４Ａは、サンプルベクトルデータを符号化／復号するためのプロセスのフローチャートを例示する。
【図１４Ｂ】図１４Ｂは、サンプルベクトルデータを符号化／復号するためのプロセスのフローチャートを例示する。
【図１５】[0023]図１５は、ハイブリッドコード化を使用してサンプルベクトルデータを符号化するための例示的なプロセスのフローチャートを例示する。
【発明の詳細な説明】
【０００８】
[0024]一般に、本開示は、ディスプレイストリーム圧縮（ＤＳＣ）のようなビデオ圧縮技法を改善する技法に関する。より具体的には、本開示は、ブロック値をサンプルベクトルへと区分化することで、１クロックサイクルあたりに複数のサンプル値を送信することと、サンプルベクトルの生起確率に少なくとも部分的に基づいてサンプルベクトルをコード化することとを行うためのシステムおよび方法に関する。
【０００９】
[0025]本明細書では特定の実施形態は、ＤＳＣ規格のコンテキストで説明されているが、当業者であれば、本明細書で開示されるシステムおよび方法が、任意の適切なビデオコード化規格に適用可能であり得ることは認識するであろう。例えば、本明細書で開示される実施形態は、国際電気通信連合（ＩＴＵ）電気通信標準化部門（ＩＴＵ−Ｔ）Ｈ．２６１、国際標準化機構／国際電気標準会議（ＩＳＯ／ＩＥＣ）ＭＰＥＧ−１（Moving Picture Experts Group-1）ビジュアル、ＩＴＵ−Ｔ Ｈ．２６２すなわちＩＳＯ／ＩＥＣ ＭＰＥＧ−２ビジュアル、ＩＴＵ−Ｔ Ｈ．２６３、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ビジュアル、（ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ ＡＶＣとしても知られている）ＩＴＵ−Ｔ Ｈ．２６４、高効率ビデオコーディング（ＨＥＶＣ）といった規格およびそのような規格に対する任意の拡張のうちの１つまたは複数に適用可能であり得る。本明細書で説明される技法は、固定ビットレート（ＣＢＲ）バッファモデルを組み込む規格に特に適用可能であり得る。また、本開示で説明される技法は、将来開発される規格の一部になり得る。換言すると、本開示で説明される技法は、前に開発されたビデオコード化規格、現在開発中のビデオコード化規格、および今度のビデオコード化規格に適用可能であり得る。
【００１０】
[0026]本開示の概念は、実質上視覚的にロスレスなパフォーマンスで様々なタイプのコンテンツを符号化／復号することを目的としているいくつかの要素および／またはモードを含むコーデック（例えば、ＤＳＣ）に統合され得るかそれの一部であり得る。本開示は、単一のクロックサイクル内での送信のためにグループへとビデオサンプルを区分化するためのシステムおよび方法を提供し、ここにおいて、サンプルは、ビット長Ｂに関連付けられており、グループは、グループサイズＫを有する。サンプルグループは、コード番号にマッピングされ得、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第１の部分と、このグループのサンプルを表す第２の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるＢ値およびＫ値に対して使用され得、これにより、より効率的なコード化が可能になる。
【００１１】
ビデオコード化規格
[0027]ビデオ画像、ＴＶ画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像のようなデジタル画像は、水平線および垂直線に配列された画素またはサンプルを含み得る。単一の画像中の画素数は典型的に数万である。各画素は典型的に、輝度およびクロミナンス情報を含む。圧縮なしの場合、画像エンコーダから画像デコーダに伝達されるべき膨大な量の情報は、リアルタイムの画像送信を実現困難なものするであろう。送信されることとなる情報の総量（the amount）を低減するために、ＪＰＥＧ、ＭＰＥＧ、およびＨ．２６３規格のような多数の異なる圧縮方法が開発されてきた。
【００１２】
[0028]ビデオコード化規格には、ＩＴＵ−Ｔ Ｈ．２６１、ＩＳＯ／ＩＥＣ ＭＰＥＧ−１ビジュアル、ＩＴＵ−Ｔ Ｈ．２６２すなわちＩＳＯ／ＩＥＣ ＭＰＥＧ−２ビジュアル、ＩＴＵ−Ｔ Ｈ．２６３、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ビジュアル、（ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ ＡＶＣとしても知られている）ＩＴＵ−Ｔ Ｈ．２６４、およびＨＥＶＣと、それらの規格の拡張とが含まれる。
【００１３】
[0029]加えて、ビデオコード化規格、すなわちＤＳＣ、は、ＶＥＳＡによって開発されてきた。ＤＳＣ規格は、ディスプレイリンクを介した送信のためにビデオを圧縮することができるビデオ圧縮規格である。ディスプレイの解像度が増加するにつれ、このディスプレイを駆動するのに必要とされるビデオデータの帯域幅が相応して増加する。いくつかのディスプレイリンクは、そのような解像度について、ビデオデータのすべてをディスプレイに送信するための帯域幅を有さない可能性がある。したがって、ＤＳＣ規格は、ディスプレイリンクを介した相互利用可能で視覚的にロスレスな圧縮のための圧縮規格を規定する。
【００１４】
[0030]ＤＳＣ規格は、Ｈ．２６４およびＨＥＶＣのような他のビデオコード化規格とは異なる。ＤＳＣは、イントラフレーム圧縮を含むがインターフレーム圧縮は含まず、つまり、ビデオデータをコード化する際に時間的情報がＤＳＣ規格によって使用されないであろうことを意味する。対照的に、他のビデオコード化規格は、それらのビデオコード化技法においてインターフレーム圧縮を用い得る。
【００１５】
ビデオコード化システム
[0031]新規なシステム、装置、および方法の様々な態様が、添付の図面を参照して以下でより十分に説明される。しかしながら、本開示は、多くの異なる形式で具現化され得、本開示全体にわたって提示される任意の特定の構造または機能に限定されるものとして解釈されるべきではない。むしろ、これらの態様は、本開示が徹底的かつ完全となり得、本開示の範囲を当業者に十分に伝達し得るように提供される。本明細書における教示に基づき、当業者は、本開示の範囲が、本明細書で開示される新規なシステム、装置、および方法の任意の態様を、本発明の任意の他の態様から独立してインプリメントされようとそれと組み合わせられようと、カバーするように意図されることは認識するはずである。例えば、本明細書で示される任意の数の態様を使用して、装置がインプリメントされ得るか、方法が実施され得る。加えて、本開示の範囲は、本明細書で示される開示の様々な態様に加えて、または、それ以外に、他の構造、機能性、または構造と機能性を使用して実施されるこのような装置または方法をカバーするように意図されている。本明細書で開示される任意の態様が、請求項の１つまたは複数の要素によって具現化され得ることは理解されるべきである。
【００１６】
[0032]特定の態様が本明細書で説明されるが、これらの態様の多くの変形および並替えは、本開示の範囲内である。好ましい態様のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、用途、または目的に限定されるように意図されるものではない。むしろ、本開示の態様は、いくつかが、図においておよび好ましい態様の以下の説明において例として例示される異なるワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるように意図される。詳細な説明および図面は、限定するものというよりはむしろ、本開示の単なる例にすぎず、本開示の範囲は、添付の特許請求の範囲およびそれらの同等物によって定義されている。
【００１７】
[0033]添付の図面は例を例示する。添付の図面において参照番号で示される要素は、以下の説明において同様の参照番号で示される要素に対応する。本開示では、順序を示す言葉（例えば、「第１の」、「第２の」、「第３の」、等）で始まる名前を有する要素は、必ずしも、それら要素が特定の順序を持つことを意味するものではない。むしろ、そのような順序を示す言葉は、単に、同じまたは同様のタイプの異なる要素を指すために使用される。
【００１８】
[0034]図１Ａは、本開示で説明される態様に係る技法を利用し得る例示的なビデオコード化システム１０を例示するブロック図である。本明細書で説明される使用される場合、「ビデオコーダ」または「コーダ」という用語は、概して、ビデオエンコーダおよびビデオデコーダの両方を指す。本開示では、「ビデオコード化」または「コード化」という用語は、概して、ビデオ符号化およびビデオ復号を指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本願で説明される態様は、トランスコーダ（例えば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス）およびミドルボックス（例えば、ビットストリームを修正、変換、および／または他の方法で操作することができるデバイス）のような他の関連デバイスに拡張され得る。
【００１９】
[0035]図１Ａに示されるように、ビデオコード化システム１０は、宛先デバイス１４によって後に復号されることとなる符号化済みビデオデータを生成するソースデバイス１２を含む。図１Ａの例では、ソースデバイス１２および宛先デバイス１４は、別個のデバイスを構成する。しかしながら、図１Ｂの例で示されるように、ソースデバイス１２および宛先デバイス１４が同じデバイス上にあり得ることまたは同じデバイスの一部であり得ることに留意されたい。
【００２０】
[0036]図１Ａを再度参照すると、ソースデバイス１２および宛先デバイス１４は、それぞれ、デスクトップコンピュータ、ノートブック（例えば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、車載コンピュータ、ビデオストリーミングデバイス、エンティティ内に配置されている、取り込まれている、または消費されること（consumed）ができるアイウェアおよび／またはウェアラブルなコンピュータ、デバイス、または装置のようなエンティティ（例えば、人間、動物、および／または別の被制御デバイス）によってウェアラブルな（または、それに取り外し可能に取り付けられている）デバイス、および／または同様のものを含む広範囲のデバイスのうちの任意のものを備え得る。様々な実施形態では、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信に対応し得る。
【００２１】
[0037]宛先デバイス１４は、復号されることとなる符号化済みビデオデータを、リンク１６を介して受け取り得る。リンク１６は、符号化済みビデオデータをソースデバイス１２から宛先デバイス１４に移動することができる任意のタイプの媒体またはデバイスを備え得る。図１Ａの例では、リンク１６は、ソースデバイス１２が符号化済みビデオデータを宛先デバイス１４に、リアルタイムに送信することを可能にする通信媒体を備え得る。符号化済みビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線のような任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはインターネットのようなグローバルネットワークといった、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするのに有益であり得る任意の他の機器を含み得る。
【００２２】
[0038]図１Ａの例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかのケースでは、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２では、ビデオソース１８は、例えば、ビデオカメラのようなビデオキャプチャデバイス、前に撮られたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェース、および／または、ソースビデオとしてコンピュータグラフィックデータを生成するためのコンピュータグラフィックシステムのようなソースまたはそのようなソースの組み合わせを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、図１Ｂの例で例示されるような、いわゆる「カメラ付電話」または「ビデオ電話」を形成し得る。しかしながら、本開示で説明される技法は、概して、ビデオコード化に適用可能であり得、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。
【００２３】
[0039]撮られた、事前に撮られた（pre-captured）、またはコンピュータにより生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化済みビデオデータは、ソースデバイス１２の出力インターフェース２２を介して、宛先デバイス１４に直接送信され得る。符号化済みビデオデータはまた（または、代替的に）、復号および／または再生のための宛先デバイス１４または他のデバイスによる後のアクセスのために記憶デバイス３１上に記憶され得る。図１Ａおよび１Ｂに例示されるビデオエンコーダ２０は、図２Ａに例示されるビデオエンコーダ２０または本明細書で説明される任意の他のビデオエンコーダを備え得る。
【００２４】
[0040]図１Ａの例では、宛先デバイス１４は、入力インターフェース２８、ビデオデコーダ３０、およびディスプレイデバイス３２を含む。いくつかのケースでは、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、リンク１６を介しておよび／または記憶デバイス３１から、符号化済みビデオデータを受け取り得る。リンク１６を介して通信される、または記憶デバイス３１上で提供される、符号化済みビデオデータは、ビデオデータを復号する際に、ビデオデコーダ３０のようなビデオデコーダによる使用のためにビデオエンコーダ２０によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、ファイルサーバに記憶される符号化済みビデオデータに含まれ得る。図１Ａおよび１Ｂに例示されるビデオデコーダ３０は、図２Ｂに例示されるビデオデコーダ３０または本明細書で説明される任意の他のビデオデコーダを備え得る。
【００２５】
[0041]ディスプレイデバイス３２は、宛先デバイス１４と統合され得るか、それに外付けであり得る。いくつかの例では、宛先デバイス１４は、統合されたディスプレイデバイスを含み得、同じく、外部のディスプレイデバイスとインターフェース接続するように構成され得る。他の例では、宛先デバイス１４は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのうちの任意のものを備え得る。
【００２６】
[0042]関連する態様では、図１Ｂは、例示的なビデオコード化システム１０’を示し、ここにおいて、ソースデバイス１２および宛先デバイス１４は、デバイス１１上にあるか、その一部である。デバイス１１は、「スマート」フォンのような電話ハンドセットまたは同様のものであり得る。デバイス１１は、ソースデバイス１２および宛先デバイス１４と動作可能に通信状態にある（オプションで存在する）プロセッサ／コントローラデバイス１３を含み得る。図１Ｂのビデオコード化システム１０’およびその構成要素は、他の点では（otherwise）、図１Ａのビデオコード化システム１０およびその構成要素に類似し得る。
【００２７】
[0043]ビデオエンコーダ２０およびビデオデコーダ３０は、ＤＳＣのような、ビデオ圧縮規格にしたがって動作し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、別名、ＭＰＥＧ−４，Ｐａｒｔ１０，ＡＶＣと呼ばれるＩＴＵ−Ｔ Ｈ．２６４規格、ＨＥＶＣ、またはそのような規格の拡張のような、他の専有または工業規格にしたがって動作し得る。しかしながら、本開示の技法は、いずれの特定のコード化規格にも限定されない。ビデオ圧縮規格の他の例には、ＭＰＥＧ−２およびＩＴＵ−Ｔ Ｈ．２６３が含まれる。
【００２８】
[0044]図１Ａおよび１Ｂの例では示されていないが、ビデオエンコーダ２０およびビデオデコーダ３０は、各々、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオおよびビデオの両方の符号化に対処するために、好適なＭＵＸ−ＤＥＭＵＸユニットまたは他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルに準拠し得る。
【００２９】
[0045]ビデオエンコーダ２０およびビデオデコーダ３０は、各々、１つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、様々な適切なエンコーダ回路の任意のものとしてインプリメントされ得る。本技法が部分的にソフトウェアでインプリメントされる場合、デバイスは、このソフトウェアのための命令を、適切で非一時的なコンピュータ読取可能な媒体に記憶し、１つまたは複数のプロセッサを使用してハードウェアで命令を実行して、本開示の技法を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれ得、それらのどちらも、それぞれのデバイスにおける複合エンコーダ／デコーダの一部として統合され得る。
【００３０】
ビデオコード化プロセス
[0046]簡単に上述したように、ビデオエンコーダ２０は、ビデオデータを符号化する。ビデオデータは、１つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャは、ビデオ「フレーム」と呼ばれ得る。ビデオエンコーダ２０がビデオデータを符号化するとき、ビデオエンコーダ２０は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコード化表現を形成するビットのシーケンスを含み得る。ビットストリームは、コード化されたピクチャと関連データとを含み得る。コード化されたピクチャは、ピクチャのコード化表現である。
【００３１】
[0047]ビットストリームを生成するために、ビデオエンコーダ２０は、ビデオデータ中の各ピクチャに対して符号化動作を実行し得る。ビデオエンコーダ２０がピクチャに対して符号化動作を実行するとき、ビデオエンコーダ２０は、一連のコード化されたピクチャと関連データとを生成し得る。関連データは、ＱＰのようなコード化パラメータのセットを含み得る。コード化されたピクチャを生成するために、ビデオエンコーダ２０は、ピクチャを、サイズが等しいビデオブロックへと区分化し得る。ビデオブロックは、２次元アレイのサンプルであり得る。コード化パラメータは、ビデオデータのすべてのブロックについてコード化オプション（例えば、コード化モード）を定義し得る。所望のレート−歪みパフォーマンス（desired rate-distortion performance）を達成するために、コード化オプションが選択され得る。
【００３２】
[0048]いくつかの例では、ビデオエンコーダ２０は、ピクチャを、複数のスライスへと区分化し得る。スライスの各々は、画像（例えば、フレーム）中に空間的に異なる領域を含み得、それは、この画像またはフレーム中の残りの領域からの情報なしに独立して復号されることができる。各画像またはビデオフレームが単一のスライスにおいて符号化され得るか、各画像またはビデオフレームがいくつかのスライスにおいて符号化され得る。ＤＳＣでは、各スライスを符号化するために割り振られるターゲットビットは、略一定であり得る。ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ２０は、ピクチャの各スライスに対して符号化動作を実行し得る。ビデオエンコーダ２０がスライスに対して符号化動作を実行するとき、ビデオエンコーダ２０は、このスライスに関連付けられた符号化済みデータを生成し得る。スライスに関連付けられた符号化済みデータは、「コード化済みスライス」と呼ばれ得る。
【００３３】
ＤＳＣビデオエンコーダ
[0049]図２Ａは、本開示で説明される態様に係る技法をインプリメントし得るビデオエンコーダ２０の例を例示するブロック図である。ビデオエンコーダ２０は、本開示の技法のうちのいくつかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオエンコーダ２０の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ（図示されない）は、本開示で説明される技法のうちのいくつかまたはすべてを実行するように構成され得る。
【００３４】
[0050]説明の目的のために、本開示は、ＤＳＣコード化のコンテキストにおいてビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコード化規格または方法に適用可能であり得る。
【００３５】
[0051]図２Ａの例では、ビデオエンコーダ２０は、複数の機能的な構成要素を含む。ビデオエンコーダ２０の機能的な構成要素は、色空間コンバータ１０５と、バッファ１１０と、平坦度検出器１１５と、レートコントローラ１２０と、予測器、量子化器、および再構築器構成要素１２５と、ラインバッファ１３０と、インデックス付き色履歴１３５と、エントロピーエンコーダ１４０と、サブストリームマルチプレクサ１４５と、レートバッファ１５０とを含む。他の例では、ビデオエンコーダ２０は、より多い、より少ない、または異なる機能的な構成要素を含み得る。
【００３６】
[0052]色空間１０５コンバータは、入力された色空間を、コード化インプリメンテーションで使用される色空間に変換し得る。例えば、１つの例示的な実施形態では、入力ビデオデータの色空間は、赤、緑、青（ＲＧＢ）色空間であり、コード化は、輝度Ｙ、クロミナンス緑Ｃｇ、およびクロミナンスオレンジＣｏ（ＹＣｇＣｏ）色空間においてインプリメントされる。色空間変換は、ビデオデータへの追加およびシフトを含む方法によって実行され得る。他の色空間にある入力ビデオデータが処理され得、他の色空間への変換が同じく実行され得ることに留意されたい。
【００３７】
[0053]関連する態様では、ビデオエンコーダ２０は、バッファ１１０、ラインバッファ１３０、および／またはレートバッファ１５０を含み得る。例えば、バッファ１１０は、ビデオエンコーダ２０の他の部分による使用より前、色空間変換されたビデオデータを保持し得る。別の例では、ビデオデータは、ＲＧＢ色空間で記憶され得、色空間変換は、色空間変換されたデータがより多くのビットを必要とされ得るため、必要に応じて実行され得る。
【００３８】
[0054]レートバッファ１５０は、ビデオエンコーダ２０においてレート制御メカニズムの一部として機能し得、これは、レートコントローラ１２０に関連して以下でより詳細に説明されるであろう。各ブロックを符号化するのに費やされるビットは、極めて実質的にこのブロックの性質に基づいて変動することができる。レートバッファ１５０は、圧縮ビデオにおけるレート変動を滑らかにすることができる。いくつかの実施形態では、固定ビットレートでバッファからビットが取り出されるＣＢＲバッファモデルが用いられる。ＣＢＲバッファモデルでは、ビデオエンコーダ２０が過度に多くのビットをビットストリームに追加する場合、レートバッファ１５０がオーバーフローし得る。他方で、ビデオエンコーダ２０は、レートバッファ１５０のアンダーフローを防ぐために、十分なビットを追加しなければならない。
【００３９】
[0055]ビデオデコーダ側では、ビットが、固定ビットレートでビデオデコーダ３０のレートバッファ１５５（以下でさらに詳細に説明される図２Ｂを参照）に追加され得、ビデオデコーダ３０は、ブロックごとにビットの変数（variable numbers）を取り除き得る。適切な復号を確実にするために、ビデオデコーダ３０のレートバッファ１５５は、圧縮ビットストリームの復号中、「アンダーフロー」も「オーバーフロー」もするべきではない。
【００４０】
[0056]いくつかの実施形態では、バッファフルネス（ＢＦ）は、バッファ中に現在あるビット数を表す値BufferCurrentSizeと、レートバッファ１５０のサイズを表すBufferMaxSize、例えば、任意の時点でレートバッファ１５０に記憶されることができる最大ビット数、とに基づいて定義され得る。ＢＦは、次のように算出され得る：
ＢＦ＝（（BufferCurrentSize×１００）／BufferMaxSize）
【００４１】
[0057]ＢＦを算出することへの上記アプローチが単なる例示であること、および、ＢＦが、特定のインプリメンテーションまたはコンテキストに依存して、任意の数の異なる方法で算出され得ることが留意されたい。
【００４２】
[0058]平坦度検出器１１５は、ビデオデータ中の複雑な（例えば、平坦でない）エリアからビデオデータ中の平坦な（例えば、単純なまたは均一の）エリアへの、および／または、その逆への変化を検出することができる。「複雑（な）」および「平坦（な）」という用語は、一般に、ビデオエンコーダ２０がビデオデータのそれぞれの領域を符号化することの難しさを示すために本明細書で使用されるであろう。ゆえに、複雑（な）という用語は、本明細書で使用される場合、一般に、ビデオデータの領域を、ビデオエンコーダ２０が符号化し辛いものとして説明し、例えば、テキスチャ化されたビデオデータ、高空間周波数、および／または符号化し辛い他の特徴を含み得る。平坦（な）という用語は、本明細書で使用される場合、一般に、ビデオデータの領域を、ビデオエンコーダ２０が符号化し易いものとして説明し、例えば、ビデオデータ中の滑らかな勾配、低空間周波数、および／または符号化し易い他の特徴を含み得る。符号化済みビデオデータ中の量子化アーティファクトを低減するために、複雑領域から平坦領域への遷移がビデオエンコーダ２０によって使用され得る。具体的には、レートコントローラ１２０および予測器、量子化器、および再構築器構成要素１２５は、複雑領域から平坦領域への遷移が識別されるときに、そのような量子化アーティファクトを低減することができる。同様に、現在ブロックをコード化するのに必要とされる予想レートを低減するためにＱＰを増加するため、平坦領域から複雑領域への遷移がビデオエンコーダ２０によって使用され得る。
【００４３】
[0059]レートコントローラ１２０は、コード化パラメータ、例えばＱＰ、のセットを決定する。ＱＰは、レートバッファ１５０がオーバーフローまたはアンダーフローしないことを確実にするターゲットビットレートのピクチャ品質を最大化するために、レートバッファ１５０のバッファフルネスとビデオデータの画像アクティビティ（例えば、複雑領域から平坦領域への遷移またはその逆）とに基づいて、レートコントローラ１２０によって調整され得る。レートコントローラ１２０はまた、最適なレート歪みパフォーマンスを達成するために、ビデオデータの各ブロックについて特定のコード化オプション（例えば、特定のモード）を選択する。レートコントローラ１２０は、ビットレート制約を満たすように、例えば、実際のコード化レート全体がターゲットビットレート内に収まるように、再構築画像の歪みを最小化する。ゆえに、レートコントローラ１２０の１つの目的は、レート歪みパフォーマンスを最大化しつつレートに対する瞬間的および平均的な制約を満たすために、ＱＰ、コード化モード、等のコード化パラメータのセットを決定することである。
【００４４】
[0060]予測器、量子化器、および再構築器構成要素１２５は、少なくとも、ビデオエンコーダ２０の３つの符号化動作を実行し得る。予測器、量子化器、および再構築器構成要素１２５は、多数の異なるモードで予測を実行し得る。１つの例となる断定モードは、中央値適応予測の修正バージョンである。中央値適応予測は、ロスレスなＪＰＥＧ規格（ＪＰＥＧ−ＬＳ）によってインプリメントされ得る。予測器、量子化器、および再構築器構成要素１２５によって実行され得る中央値適応予測の修正バージョンは、３つの連続したサンプル値の並行予測を可能にし得る。別の例となる予測モードは、ブロック予測である。ブロック予測では、上の線または同じ線の左にある、前に再構築された画素からサンプルが予測される。いくつかの実施形態では、ビデオエンコーダ２０およびビデオデコーダ３０は両方とも、再構築された画素に対して同一探索を実行して、ブロック予測用法を決定し得るため、ブロック予測モードではいずれのビットも送られる必要はない。他の実施形態では、ビデオエンコーダ２０は、探索を実行し、ビデオデコーダ３０が別個の探索を実行する必要がないように、ビットストリームにおいてブロック予測ベクトルをシグナリングし得る。構成要素範囲（component range）の中間点を使用してサンプルが予測される中間点予測モードもまたインプリメントされ得る。中間点予測モードは、ワーストケースのサンプルであっても、圧縮ビデオに必要とされるビット数の制限（bounding）を可能にし得る。
【００４５】
[0061]予測器、量子化器、および再構築器構成要素１２５もまた、量子化を実行する。例えば、量子化は、シフタを使用してインプリメントされ得る２のべき乗量子化器（power-of-2 quantizer）を介して実行され得る。２のべき乗量子化器の代わりに他の量子化技法がインプリメントされ得ることに留意されたい。予測器、量子化器、および再構築器構成要素１２５によって実行される量子化は、レートコントローラ１２０によって決定されるＱＰに基づき得る。最後に、予測器、量子化器、および再構築器構成要素１２５はまた、逆量子化残差を予測値に加えることと、その結果がサンプル値の有効範囲外にならないことを確実にすることとを含む再構築を実行する。
【００４６】
[0062]予測器、量子化器、および再構築器構成要素１２５によって実行される予測、量子化、および再構築への上述した例となるアプローチは単なる例示であること、および、他のアプローチがインプリメントされ得ることに留意されたい。予測器、量子化器、および再構築器構成要素１２５が、予測、量子化、および／または再構築を実行するための従属構成要素を含み得ることも留意されたい。予測、量子化、および／または再構築が、予測器、量子化器、および再構築器構成要素１２５の代わりに、いくつかの別個のエンコーダ構成要素によって実行され得ることにさらに留意されたい。
【００４７】
[0063]ラインバッファ１３０は、予測器、量子化器、および再構築器構成要素１２５とインデックス付き色履歴１３５とが、バッファされたビデオデータを使用することできるように、予測器、量子化器、および再構築器構成要素１２５からの出力を保持する。インデックス付き色履歴１３５は、最近使用された画素値を記憶する。これらの最近使用された画素値は、専用シンタックスを介して、ビデオエンコーダ２０によって直接参照されることができる。
【００４８】
[0064]エントロピーエンコーダ１４０は、インデックス付き色履歴１３５と、平坦度検出器１１５によって識別される平坦度遷移とに基づいて、予測器、量子化器、および再構築器構成要素１２５から受け取った予測残差および任意の他のデータ（例えば、予測器、量子化器、および再構築器構成要素１２５によって識別されるインデックス）を符号化する。いくつかの例では、エントロピーエンコーダ１４０は、サブストリームエンコーダにつき１クロックあたり３つのサンプルを符号化し得る。サブストリームマルチプレクサ１４５は、ヘッダーレスパケット多重化スキームに基づいて、ビットストリームを多重化し得る。これは、ビデオデコーダ３０が、並行して３つのエントロピーデコーダを稼働させることを可能にし、これは、１クロックあたり３つの画素の復号を容易にする。サブストリームマルチプレクサ１４５は、パケットがビデオデコーダ３０によって効率的に復号されることができるようにパケット順序を最適化し得る。エントロピーコード化への異なるアプローチがインプリメントされ得、これは、１クロックあたり２のべき乗個の画素（例えば、２画素／クロックまたは４画素／クロック）の復号を容易にし得ることに留意されたい。
【００４９】
ＤＳＣビデオデコーダ
[0065]図２Ｂは、本開示で説明される態様に係る技法をインプリメントし得るビデオデコーダ３０の例を例示するブロック図である。ビデオデコーダ３０は、本開示の技法のうちのいくつかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオデコーダ３０の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ（図示されない）は、本開示で説明される技法のうちのいくつかまたはすべてを実行するように構成され得る。
【００５０】
[0066]説明の目的のために、本開示は、ＤＳＣコード化のコンテキストにおいてビデオデコーダ３０を説明する。しかしながら、本開示の技法は、他のコード化規格または方法に適用可能であり得る。
【００５１】
[0067]図２Ｂの例では、ビデオデコーダ３０は、複数の機能的な構成要素を含む。ビデオデコーダ３０の機能的な構成要素は、レートバッファ１５５と、サブストリームデマルチプレクサ１６０と、エントロピーデコーダ１６５と、レートコントローラ１７０と、予測器、量子化器、および再構築器構成要素１７５と、インデックス付き色履歴１８０と、ラインバッファ１８５と、色空間コンバータ１９０とを含む。ビデオデコーダ３０の例示される構成要素は、図２Ａのビデオエンコーダ２０に関連して上で説明した対応する構成要素に類似する。このように、ビデオデコーダ３０の構成要素の各々は、上で説明したようなビデオエンコーダ２０の対応する構成要素と同様の方式で動作し得る。
【００５２】
ＱＰ算出
[0068]１つのアプローチでは、レートコントローラ１２０は、次の式に基づいて、ビデオデータの現在ブロックについてのＱＰ（currQPと表される）を導出または算出し得る：
currQP＝prevQ＋QpAdj＊（diffBits＞０？１：−１）
ここで、prevQＰは、前のブロックに関連付けられたＱＰであり、QpAdjは、diffBitsの大きさ（magnitude）に基づいて算出され得るＱＰオフセット値（例えば、ＱＰ調整値）である。diffBitsは、previousBlockBitsとtargetBitsとの間の差分を表し、ここで、previousBlockBitsは、前のブロックをコード化するために使用されるビット数を表し、targetBitsは、現在ブロックをコード化するためのターゲットビット数を表す。previousBlockBits＞targetBitsであるとき、diffBitsは正であり、レートコントローラ１２０は、オフセット値QpAdjをprevQＰ値に加算することで現在ブロックのＱＰ（currQP）を導出し得る。換言すると、ＱＰ値currQPは、diffBitsが正であるとき、prevQＰ値から値が減少しない。previousBlockBits≦targetBitsであるとき、diffBitsは負またはゼロであり、レートコントローラ１２０によって導出されるcurrQPは、prevQＰ値から増加しない。いくつかの実施形態では、レートコントローラ１２０は、QpAdjがdiffBitsの大きさの増加に伴って単調に増加するように、diffBitsの関数としてオフセット値QpAdjを算出し得ることに留意されたい。
【００５３】
[0069]図３は、ＱＰ調整値QpAdjを算出するための例示的な技法を描写するグラフ３００を例示する。グラフ３００は、ゼロから開始してdiffBitsの値がプロットされている水平軸３０２を例示する。いくつかのインプリメンテーションでは、diffBits＞０であるとき、diffBitsの値は、Ｋ個の閾値を使用してＫ＋１個の範囲へと分類され得る。図３では、Ｋ個の閾値は、閾値１、閾値２、閾値３…および閾値Ｋというラベルで例示され、Ｋ＋１個の範囲は、範囲１、範囲２、範囲３、…および範囲Ｋ＋１というラベルで例示されている。Ｋ＋１個の範囲の各範囲は、特定のQpAdj値に関連付けられ得る。例えば、レートコントローラ１２０は、diffBitsの値の範囲インデックスが増加するに伴い、QpAdj値を増加させ得る。いくつかの実施形態では、diffBits≦０であるとき、レートコントローラ１２０は、Ｊ個の閾値（図示されない）を使用してdiffBitsの絶対値をＪ＋１個の範囲へと分類し得、ここで、特定のQpAdj値が、Ｊ＋１個の範囲の各々に割り当てられている。
【００５４】
[0070]他の態様では、レートコントローラ１２０は、バッファ１１０のアンダーフローおよび／またはオーバーフローを防ぐために、図２Ａに例示されたバッファ１１０のフルネスに基づいてcurrQP値を調整し得る。バッファ１１０のフルネスは、算出されたバッファフルネスパラメータＢＦの観点から表され得る。特に、ＢＦが特定の閾値（例えば、Ｐ１）を超えるとき、レートコントローラ１２０は、currQPを、固定オフセット値（例えば、ｐ１）だけインクリメントし得る。例えば、currQPは、次のように調整され得る：currQP＋＝ｐ１。さらに、ＢＦが特定の閾値（例えば、Ｑ１）を下回るとき、レートコントローラ１２０は、固定値ｑ１だけcurrQPをデクリメントし得る、例えば、currQP−＝ｑ１。特定の態様では、図３のdiffBitsに関連して例示される閾値および範囲と同様に、ＢＦに対する複数の閾値が用いられ得る。例えば、ＢＦの各閾値は、currQPを調整するために、対応するオフセット値に関連付けられ得る。
【００５５】
デルタサイズ単位−可変長コード化
[0071]いくつかの実施形態では、コーダ（例えば、ビデオエンコーダ２０またはビデオデコーダ３０）は、低コストで固定レートの視覚的にロスレスな圧縮を提供するためにデルタサイズ単位（ＤＳＵ）コード化を使用し得る。コーダは、（ブロックサイズＰ×Ｑでの）ブロックベースアプローチに基づいて設計され、多数のコード化モードを備え得る。例えば、ビデオデータの各ブロックについてのコード化モードは、変換（例えば、ＤＣＴ、アダマール）、ブロック予測、ＤＰＣＭ、パターン、中間点予測（ＭＰＰ）、および中間点予測フォールバック（ＭＰＰＦ）モードを含み得るがそれらに限定されるわけではない。いくつかの実施形態では、異なるタイプのコンテンツまたは画像を効率的に圧縮するために、いくつかの異なるコード化モードがエンコーダ２０によってインプリメントされることができる。例えば、いくつかの実施形態では、エンコーダ２０は、パターンモードを使用してテキスト画像を、変換モードを使用して自然画像を圧縮し得る。
【００５６】
[0072]いくつかの実施形態では、エンコーダ２０は、レート制御メカニズム（例えば、図２Ａに例示されるようなレートコントローラ１２０）に基づいて、ビデオデータの各それぞれのブロックに対して複数のコード化モードから１つのコード化モードを選択する、選ぶ、または決定する。エンコーダ２０はまた、選択されたコード化モードをビデオデータビットストリームにおいてシグナリングし得、それにより、デコーダ３０は、このビットストリームを受信すると、ビデオデータをコード化するために使用されるコード化モードを決定することができ得る。レートコントローラ１２０は、各ブロックに対して効率的なコード化モードを、このモードのレートと歪みの両方を考慮することで、選択することを目的とし得る。レートコントローラ１２０は、（図２Ａに例示されるような）バッファ１１０または到来するブロックデータを記憶するための他のタイプのメモリに関連付けられたバッファモデルによってサポートされ得る。バッファ１１０は、バッファ１１０が一度も（例えば、バッファ中のゼロビットより少ない）アンダーフローの状態にも（例えば、バッファサイズが、設定された最大サイズを過ぎて増加している）オーバーフローの状態にもならないように、例えば、ＤＳＣのようなコーデックの要件にしたがって構成され得る。
【００５７】
[0073]上で述べたように、エンコーダ２０の予測器、量子化器、および再構築器構成要素１２５は、コード化されたビデオデータのブロックにおいてロスをもたらし得る量子化を実行し得、ここにおいて、ロスの総量は、ブロックの量子化パラメータ（ＱＰ）によって制御されることができる。例えば、いくつかの実施形態では、予測器、量子化器、および再構築器構成要素１２５は、１つまたは複数のビットプレーンをドロップすることで量子化を実行し得、ここにおいて、ドロップされるビットプレーンの数は、ブロックのＱＰに関連付けられた量子化ステップサイズによって示され得る。いくつかの実施形態では、エンコーダ２０が各ＱＰについての量子化ステップサイズを記憶する代わりに、エンコーダ２０は、ＱＰの関数としてスケーリングマトリックスを指定し得る。各ＱＰについての量子化ステップサイズは、このスケーリングマトリックスから導出されることができ、導出される値は、必ずしも２の累乗である必要はなく、例えば、導出される値は、２の累乗以外に等しい値でもあり得る。いくつかの実施形態では、エンコーダ２０によるスケーリングマトリックスの使用は、予測器、量子化器、および再構築器構成要素１２５が、単にビットプレーンを取り除くことより大きい粒度で量子化を実行し、潜在的にパフォーマンスを向上させることを可能し得る。
【００５８】
[0074]いくつかの実施形態では、ビデオデータの所与のブロック中の単一の構成要素（例えば、特定の色成分、ルーマまたはクロマ成分、等）のすべての値がゼロである場合、エンコーダ２０は、スキップモードを使用してこのブロックを効率的にコード化し得る。スキップモードコード化では、エンコーダ２０は、現在ブロックがスキップモードを使用してコード化される（成分のすべての値が現在ブロックについてゼロである場合）か、スキップモードでコード化されない（ブロック中の成分の少なくとも１つの値が非ゼロである場合）かを示す、デコーダ３０によって読み取られ得るシンタックス要素またはインジケータ（例えば、１ビットフラグ）をコード化し得る。
【００５９】
[0075]いくつかの実施形態では、エンコーダ２０は、プレフィックス部分およびサフィックス部分を使用して（「グループ」とも呼ばれる）長さＫのサンプルベクトル（K-length sample vector）の量子化された残差値をコード化するためにデルタサイズ単位−可変長コード化（ＤＳＵ−ＶＬＣ）を使用し得る。サンプルは、例えば、ＲＧＢ４４４の場合、単一の色成分中の値、を指すことができ、各画素は、３つのサンプルを有する。プレフィックス部分は、サフィックス部分に続く残差値のサイズ（例えば、ビットで表した長さ）（このサイズは、Ｂビットとして表される）を示し、サフィックス部分は、サンプルベクトル中のすべてのサンプルの実際の残差値を示す。いくつかの実施形態では、グループ中のＫ個の残差値の各々は、同じ数のビットを使用して、２の補数でコード化される。
【００６０】
[0076]図４は、いくつかの実施形態に係る、Ｋ＝４個のサンプルを有するサンプルベクトル４０２をコード化するためのＤＳＵ−ＶＬＣ構造４０４を示す。いくつかの実施形態では、ＤＳＵ−ＶＬＣ構造４０４は、図２Ａに例示されるようなエントロピーエンコーダ１４０に対応し得る。サンプルベクトル４０２は、ビデオデータの特定の色成分の残差値に各々対応する複数のサンプルを備え得る。図４に例示されるように、サンプルベクトル４０２は、４つのサンプル（Ｓ０、Ｓ１、Ｓ２、およびＳ３）を備え得る。ＤＳＵ−ＶＬＣ構造４０４は、受け取ったサンプルベクトル４０２をコード化して、ＤＳＵ−ＶＬＣコード４０６（以降、コード４０６）を形成し得る。コード４０６は、プレフィックス４０８およびサフィックス４１０を備える。サフィックス４１０は、サンプルベクトル４０２の受け取ったサンプル（例えば、Ｓ０、Ｓ１、等）に各々対応する複数のサフィックス部分（例えば、サフィックス１、サフィックス２、等）を備える。コード４０６のプレフィックス４０８およびサフィックス４１０のさらなる説明は、図５を参照して以下に説明される。
【００６１】
[0077]図５は、値［１，−２，−１，０］を有する４つのサンプルを備えるサンプルベクトル（図示されない）のためにエントロピーエンコーダ１４０によってコード化され得るコード５０２を例示する。コード５０２は、図４に例示さるコード４０６に対応し得る。加えて、コード５０２は、（それぞれ、図４のプレフィックス４０８およびサフィックス４１０に対応し得る）プレフィックス５０４およびサフィックス５０６を備える。サフィックス５０６は、サンプルベクトルのサンプル値に各々対応する４つのサフィックス部分を備え得る。
【００６２】
[0078]２の補数表現（two's complement representation）を使用して、エントロピーエンコーダ１４０は、サンプルベクトルのサンプルの各々をコード化するためにＢ＝２ビットを使用し得る。コード５０２において、プレフィックス５０４は、サフィックス５０６のコード化されたサフィックス部分の各々の長さが２ビットであることを示す単項コード‘００１’を使用して表され得る。サフィックス５０６は、各々２ビットを使用してコード化された、実際のコード化されたサンプル値サンプルベクトルをそれぞれ表す値［０１，１０，１１，００］によって表され得る。プレフィックス５０４の復号、これは通常単一クロックにおいて行われ得る、を行うことで、デコーダ３０は、サフィックス５０６の４つのシンボルすべてを並行して復号することができ得る。
【００６３】
グループ区分化
[0079]図６は、いくつかの実施形態に係る、ビデオデータの所与のＰ×Ｑブロックのサンプルを複数のサンプルベクトル（グループ）へと区分化する例を例示する。図６に例示されるように、ブロック６０２は、１６個のサンプルを備える２×８ブロックであり得る。ブロック６０２の各サンプルは、ブロック６０２に対応するビデオデータの特定の色成分の量子化された残差値に対応し得る。サンプルがＤＳＵ−ＶＬＣ構造４０４を使用してコード化される前に、エンコーダ２０は、サンプルを複数のグループへと区分化し得る。例えば、図６は、４つのサンプルを各々備える４つのサンプルベクトル６０４（例えば、サンプルベクトル６０４Ａ、６０４Ｂ、６０４Ｃ、および６０４Ｄ）へと区分化されるブロック６０２の１６個のサンプルを例示する。ＤＳＵ−ＶＬＣ構造４０４は、（例えば、図４に例示されるような）プレフィックスおよびサフィックスを各々有するコード（図示されない）を作り出するために、サンプルベクトル６０４Ａ−６０４Ｄをコード化し得る。上で説明したように、（図３に例示されるような）デコーダ３０は、これらコードの各コードのプレフィックスおよびサフィックスを並行して復号することができ得、これは、デコーダ３０が、１クロックサイクルあたり４つのサンプルを復号することを可能にする。
【００６４】
[0080]ブロック６０２のサンプルをグループへと区分化するためにエンコーダ２０を使用することで、コード化されたグループを復号するときに、１クロックあたり複数のサンプルというスループットがデコーダ３０によって達成されることができる。図６は、ブロック６０２のサンプルがサンプルベクトル６０４へと均一に区分化されていることを例示するが、エンコーダ２０が、サンプルのブロックをＮ個のサンプルベクトルへと均一にまたは不均一に区分化し得ることが理解される。均一のグループ化方法では、Ｎ個すべてのサンプルベクトル６０４は、同じ数のサンプルを有するであろう。他方で、不均一グループ化方法を使用するときは、各サンプルベクトル６０４中のサンプルの数が異なり得る。
【００６５】
[0081]いくつかの実施形態では、ブロック６０２の区分化が均一であるか不均一であるかは、このブロック６０２に関連付けられたコード化モードに基づき得る。例えば、エンコーダ２０は、ブロック予測モードでは均一のグループ化方法を使用し得、変換モードでは不均一グループ化方法を使用する。
【００６６】
ベクトルベースエントロピーコード化
[0082]図７は、図２Ａに例示されたエントロピーエンコーダ１４０に対応し得るコーダ７０２を使用してベクトルベースＥＣプロセスの例示的なブロック図を例示する。コーダ７０２は、サンプルベクトル７０４をコード化するために使用され得る。サンプルベクトル７０４は、図４に例示されたようなサンプルベクトル４０２および図６に例示されたようなサンプルベクトル６０４に類似し得る。
【００６７】
[0083]図７に例示されるように、サンプルベクトル７０４は、ベクトルサイズＫ（例えば、［Ｓ０，Ｓ１，・・・ＳＫ−１］）を有する。加えて、サンプルベクトル７０４は、Ｂビットという必要とされるサンプルサイズを有し得る（例えば、コーダ７０２は、グループ中の各サンプルを正確に表すために１サンプルあたりＢビットを必要とし得る）。所与のＫ値およびＢ値について、可能な（possible）長さＫのサンプルベクトルの合計数は２ＢＫである。例えば、Ｋ＝２およびＢ＝１であるとき、１ビットを使用して表されることができるサンプルを有する、可能なすべての長さ２のサンプルベクトルのセットは、４つ、すなわち、（２の補数表現を使用するとき）［−１，０］、［−１，−１］、［０，０］、［０，−１］である。図４−５に例示されたコード化スキームを使用して、コーダ７０２は、同じ数のビット（例えば、ＢＫビット、または２ビット）を使用して、これらのサンプルベクトルの各々に対応するサフィックスをコード化し得る。このように、Ｋ値およびＢ値の所与の組合せについて、サンプルベクトルをコード化するために使用されるビット数は、２ＢＫ個の可能なベクトルのセット中の長さＫのサンプルベクトルがコード化されているかにかかわらず、同じである。これは、セット中の各サンプルベクトルの生起確率を考慮に入れない。
【００６８】
[0084]しかしながら、画像情報をコード化するとき、特定のサンプルベクトル７０４は、長さＫのサンプルベクトルのセット中の他のサンプルベクトルと比べて、より確からしい（probable）傾向にあり得る。いくつかの実施形態では、２ＢＫ個のベクトルのセット中の長さＫのサンプルベクトルの分布が均一でない（例えば、セット中のすべてのベクトルが等しく確からしいとは限らない）とき、コーダ７０２は、生起確率に基づいて、長さＫのサンプルベクトル７０４を別々にコード化し得る。例えば、コーダ７０２は、より確からしくない長さＫのサンプルベクトル７０４と比べて、より少ない数のビットを使用して、より確からしい長さＫのサンプルベクトル７０４をコード化し得る。以下に説明される技法は、可能な長さＫのサンプルベクトル７０４のセットが不均一分布から引き出されるとき、長さＫのサンプルベクトル７０４をコード化するための効率的なコード化ストラテジを対象としている。
【００６９】
[0085]いくつかの実施形態では、コーダ７０２は、可能な長さＫのサンプルベクトル７０４のセットが不均一分布から引き出されるとき、長さＫのサンプルベクトル７０４をより効率的にコード化するためにベクトルベースエントロピーコード化（ＥＣ）方法を使用し得る。いくつかの実施形態では、コーダ７０２は、所与の長さＫのサンプルベクトル７０４を一意的な単一値（例えば、「インデックス」７０６）へと変換するために変換７１２を実行することで、グループ中の長さＫのサンプルベクトル７０４に対してベクトルベースＥＣを実行し得る。長さＫのサンプルベクトル７０４と「インデックス」７０６との間には１対１対応が存在し得る。
【００７０】
[0086]コーダ７０２は、算出されたインデックス値７０６を使用して、このインデックス値７０６を「codeNumber」７０８にマッピングするマッピング７１４を実行し得る。ＶＬＣコード７１６を使用して、コーダ７０２は、ビデオデータビットストリームの一部としてデコーダ１６５に送信され得るコード化されたビット７１０のシーケンスを形成するために、「codeNumber」７０８をコード化し得る。ＶＬＣコード７１６は、非構造化または構造化され得る。非構造化ＶＬＣコード７１６の例には、ハフマン、算術が含まれ、構造化ＶＬＣコード化には、指数ゴロム（ＥＧ）、ゴロム−ライス（ＧＲ）、またはＥＧとＧＲの混合が含まれ得る。デコーダ１６５において、コード化されたビット７１０の単一シーケンスをパースする（典型的に単一のクロックにおいて行われることができる）と、サンプルベクトル７０４中のすべてのＫ個のサンプルは、再構築されることができる。したがって、ベクトルベースＥＣの使用は、典型的にＫ個のサンプル／クロックという高いスループットを供給する。
【００７１】
[0087]いくつかの実施形態では、コーダ７０２は、算出された「インデックス」値７０６を「codeNumber」７０８にマッピングするために使用されることができるＬＵＴ（ルックアップテーブル、図示されない）を使用して、マッピング７１４を実行し得る。ＬＵＴは、所与のグループの長さＫのサンプルベクトル７０４の確率値（probability value）に基づいて構築されることができる。例えば、いくつかの実施形態では、ＬＵＴは、より確からしいと考えられるサンプルベクトル７０４が、より小さい値を有するかそうでなければより少ない数のビットを使用してコード化されることができるcodeNumberｓ７０８（例えば、より短いコード長を有するcodeNumberｓ７０８）にマッピングされるように構築され得る。例えば、より高い確率のサンプルベクトルのためのcodeNumberｓ７０８は、ＢＫビットより少ない数を使用してコード化され得る。いくつかの実施形態では、サンプルベクトル７０４をcodeNumberｓ７０８にマッピングするためのＬＵＴまたはデータ構造は、ＬＵＴまたはデータ構造中のサンプルベクトル７０４をルックアップするときに、より確からしいと考えられるサンプルベクトル７０４がより迅速にまたはより高い優先度でアクセスされ得るように構築され得、これは、デコーダ１６５によるより正確なアクセスを可能にする。
【００７２】
[0088]いくつかの実施形態では、エンコーダ２０は、ルーマ成分サンプルおよびクロマ成分サンプルの両方について同じＬＵＴを記憶し得、他の実施形態では、異なるＬＵＴが、ルーマ成分サンプルおよびクロマ成分サンプルをコード化するために使用され得る。加えて、デコーダ３０は、エンコーダ２０によって使用されるＬＵＴまたはデータ構造のそれ自体の複写を記憶し得る。例えば、デコーダ３０は、コード化されたビデオデータのビットストリームを受け取ることと、１つまたは複数のcodeNumberｓ７０８を復号することとに応答して、対応するサンプルベクトル７０４を決定するために、それ自体のＬＵＴを使用し得る。
【００７３】
[0089]いくつかの実施形態では、コーダ７０２は、すべてのサイズＢに対して単一のＬＵＴを使用する。他の実施形態では、コーダ７０２は、異なるサイズのＢに対して別個のＬＵＴを使用し得る。例えば、ある実施形態では、コーダ７０２は、Ｂ＝１であるときには第１のＬＵＴ１を、Ｂ＝２であるときには第２のＬＵＴ２を使用し得る。コーダ７０２がサイズＢに基づいて特定のＬＵＴを選択するとき、コーダ７０２は、使用されるＬＵＴのタイプが明示的にシグナリングされ得るように、コード化されたビット７１０のシーケンスをコード化し得る（例えば、Ｂ＝１のときにはＬＵＴタイプ＝１がシグナリングされ、Ｂ＝２のときには、ＬＵＴタイプ＝２がシグナリングされる、等）。コード化されたビット７１０においてＬＵＴのタイプをシグナリングすることで、デコーダ１６５は、ビット７１０のシーケンスを復号するときに使用されるべき対応するＬＵＴを識別することができるであろう。いくつかの実施形態では、シグナリングは、単項コードの形であり得る。代替的に、コード化されたビット７１０においてＬＵＴタイプをシグナリングすることは、固定長のコードを使用して行われ得る。他の実施形態では、コーダ７０２は、コード化されたビット７１０においてＬＵＴタイプをシグナリングするために、ハフマンまたは算術のようなＶＬＣコードを使用し得る。
【００７４】
[0090]図８は、コード化されたビット８０６のシーケンスを作り出すため、Ｋ＝４個のサンプルを含むサンプルベクトル４０２をコード化するためにベクトルベースＥＣを使用するコーダ７０２の例を示す。（図７に例示されたコード化されたビット７１０のシーケンスに対応し得る）コード化されたビット８０６は、ＬＵＴタイプ信号８０８と、ベクトルベースＶＬＣコード８１０とを備え得る。ＬＵＴタイプ信号８０８は、コード化されたビット８０６を生成するためにコーダ７０２によって使用された（例えば、図７に例示されるようなコード番号７０８へのインデックス値７０６のマッピングを実行するために使用される）ＬＵＴのタイプを明示的にシグナリングする。ベクトルベースＶＬＣコード８１０は、サンプルベクトル８０２中の４つすべてのサンプルを表す。いくつかの実施形態では、ＬＵＴタイプ信号８０８はまた、サンプルベクトル４０２のサンプルの値をコード化するのに必要とされるビット数（a number of bits）Ｂを示し得る。
【００７５】
[0091]いくつかの実施形態では、エンコーダ２０が、特定のコード化モード（例えば、変換モード）についてのサンプルベクトル４０２を構築するために不均一区分化方法（例えば、異なるＫ値）を適用するとき、別個のＬＵＴは、各サンプルベクトル中のサンプルの数Ｋが異なることにより異なるサンプルベクトルサイズＫに対して使用され得る。このように、異なるＢ値、異なるＫ値、または異なるＫおよびＢ値の組み合わせに対応する異なるＬＵＴが使用され得る。
【００７６】
[0092]インデックス値７０６を対応するcodeNumberｓ７０８にマッピングするためのＬＵＴのサイズは、サイズＢが増加するに伴い増加し得る。このように、いくつかの実施形態では、ベクトルベースＥＣは、サンプルベクトル４０２のサイズＢが特定の閾値より小さいとき、コーダ７０２によってのみ使用される。これは、エンコーダ２０およびデコーダ３０に、Ｂのより大きな値のためのより大きなサイズのＬＵＴを記憶させないことでメモリ要件を低減するために行われ得る。例えば、Ｂが閾値限界（threshold limit）を超えると、コーダ７０２は、非ベクトルベースコード化技法（例えば、図４−５に例示されたＤＳＵ−ＶＬＣコード化スキーム）を使用して、サンプルベクトル４０２をコード化し得る。例えば、閾値が４である実施形態では、コーダ７０２は、受け取ったサンプルベクトル７０４がサイズＢ＝１、２、または３であるときにのみベクトルベースＥＣを使用し、（図４−５に例示されるような）ＤＳＵ−ＶＬＣコード化は、サイズＢが４以上であるサンプルベクトル７０４に対して使用される。
【００７７】
[0093]本明細書で開示される技法は、ブロック予測（ＢＰ）、変換モード、ＢＰスキップモード、変換スキップ、ＭＰＰ、またはＭＰＰＦのような、ビデオデータのブロックをコード化するために使用される任意のコード化モードに適用されることができる。ベクトルベースエントロピーコーダ７０２が１つよりも多くのコード化モードに対してベクトルベースＥＣを適用する実施形態では、各コード化モードがそれ自体のＬＵＴに関連付けられ得るか、共通のＬＵＴが複数のモードに関連付けられ得る。共通のＬＵＴが使用されるか別個のＬＵＴが使用されるかは、メモリ要件とパフォーマンスとの間のトレードオフに基づいて決定され得る。例えば、いくつかの実施形態では、ＢＰおよび変換は、インデックス７０６をcodeNumberｓ７０８にマッピングするために、同じＬＵＴまたはデータ構造を使用し得、他の実施形態では、ＢＰおよび変換は、異なるＬＵＴまたはデータ構造を使用し得る。いくつかの実施形態では、コーダ７０２は、特定のモード（例えば、ＢＰモード）でのみベクトルベースＥＣを使用し得、他のコード化技法は、他のモード（例えば、ＢＰモード以外）で使用される。加えて、本明細書で開示される技法は、任意のタイプのサンプリングフォーマット、例えば、４：４：４、４：２：２、４：２：０に適用されることができる。
【００７８】
[0094]図９は、ＬＵＴタイプ信号８０８がＶＬＣコード８１０のプレフィックスと組み合わせられている、コード化されたビット８０６のシーケンスの例を例示する。（ＥＧ、ＧＲ、またはＥＧとＧＲの混合といった構造化ＶＬＣコードのような）codeNumber７０８をコード化するためにコーダ７０２によって使用され得るＶＬＣコード７１６のいくつかのタイプは、プレフィックス９０８およびサフィックス９１０を備えるＶＬＣコード８１０という結果になり得る。いくつかの実施形態では、ＶＬＣコード８１０のプレフィックス９０８は、単項コード、または、デコーダ（例えば、デコーダ１６５）が処理するのに時間のかかる何らかの他のコードフォーマットであり得、サフィックス９１０は、固定長であり得る。処理時間を低減するために、コーダ７０２は、プレフィックス９０８とＬＵＴタイプ信号８０８とを組み合わせて、単一のＶＬＣコード部分９１２にし得る。
【００７９】
[0095]例えば、図９に例示されるように、コーダ７０２は、ＶＬＣコード部分９１２を形成するために、ＶＬＣコード化の第２のステージ（図示されない）を通して、コード化されたビット８０６の可変長部分（例えば、ＬＵＴタイプ信号８０８およびプレフィックス９０８）を組み合わせ、コード化し得る。いくつかの実施形態では、ＶＬＣコード化の第２のステージは、図２Ａに例示されるように、エントロピーエンコーダ１４０によって実行され得る。ＬＵＴタイプ信号８０８およびＶＬＣコードプレフィックス９０８の両方が単項コードまたは何らかの他の処理が高価なフォーマットであるため、ＶＬＣコード化の第２のステージを実行することは、コード化されたビット８０６を受け取るデコーダ１６５がＬＵＴタイプ信号８０８およびＶＬＣコードプレフィックス９０８を処理するのに必要な処理量を減らすのに役立ち得る。いくつかの実施形態では、コーダ７０２は、ＬＵＴタイプ信号８０８およびプレフィックス９０８を単一のコード番号にマッピングするために第２の別個のＬＵＴ（図示されない）を使用し得る。次いで、コーダ７０２は、ＶＬＣコード部分９１２を形成するために、結果として得られるコード番号を（例えば、第２のステージのＶＬＣコードを使用して）コード化し得る。デコーダ１６５によって受け取られると、デコーダ１６５は、完全なコード化されたビット８０６のシーケンスを取得する目的で、完全なＶＬＣコード８１０のＬＵＴタイプ信号８０８およびプレフィックス９０８を決定するためにＶＬＣコード部分９１２を最初に復号し得る。いくつかの実施形態では、コード化されたビット８０６の可変長部分をコード化するために使用される第２のステージのＶＬＣコードは、コード化されたビット８０６のシーケンスを形成する目的でcodeNumber７０８をコード化するために使用されたのと同じタイプのＶＬＣコード７１６であり得る。他の実施形態では、第２のステージのＶＬＣコードは、ＶＬＣコード７１６とは異なり得る。
【００８０】
符号絶対値コード化
[0096]上で述べたように、サイズＢは、所与のグループ内のすべてのサンプル（例えば、サンプルベクトル４０２、６０４、または７０４）を正確に表すのに必要なビット数を表し得る。いくつかの実施形態では、Ｂの値は、２の補数表現に基づいて算出され得、ここで、−（２Ｂ−１）から＋（２Ｂ−１−１）までのサンプル値を表すのにＢビットが必要とされる。しかしながら、本明細書で開示される技法は、２の補数レジストレーションを使用した実施形態に限定されず、他のタイプの表現を使用して算出されたサンプル値に対して適用されることができる。例えば、いくつかの実施形態では、エンコーダ２０は、符号絶対値表現を使用してサンプル値をコード化し得、ここで、０から２Ｂ−１までの範囲にあるサンプル値を表すのにＢビットが必要とされる。
【００８１】
[0097]図１０Ａは、符号絶対値表現を使用して、（例えば、図６に例示されるような）例示的なサンプルベクトル６０４のエントロピーコード化の例を示す。符号絶対値表現が特定の実施形態において使用されるとき、コーダ７０２は、サンプルベクトル６０４中のサンプルの（大きさまたは絶対部分とも呼ばれる）絶対値をコード化し、サンプルベクトル６０４のサンプルの符号値に対応する符号ビットコード化が続き得る。
【００８２】
[0098]コーダ７０２は、コード化されたビット１００２のそれぞれのグループ（例えば、グループ１００２Ａ、１００２Ｂ、１００２Ｃ、および１００２Ｄ）を形成するために、サンプルベクトル６０４Ａ乃至６０４Ｄの各々をコード化し得る。コード化されたビット１００２の各グループは、プレフィックス部分１００４と、サフィックス部分１００６と、ゼロ以上の（zero or more）符号ビット１００８とを備える。プレフィックス部分１００２は、それぞれのサンプルベクトル６０４中のサンプルの最大絶対値をシグナリングするのに必要なビット数Ｂを示す。サフィックス部分１００６は、それぞれのサンプルベクトル６０４の各サンプルの絶対値を表す。最後に、符号ビット１００８は、それぞれのサンプルベクトル６０４の非ゼロサンプルについての符号値を表す。
【００８３】
[0099]例として、サンプルベクトル６０４Ａが、［１，−３，−１，０］の値を有する４つのサンプルを含むと仮定する。この例では、コード化されたビット１００２Ａのプレフィックス部分１００４は、Ｂ＝２の値を示す（これは、絶対値［１，３，１０］から算出される）。サフィックス部分１００６は、サンプルベクトル６０４Ａの絶対サンプル値に対応する部分（例えば、０１，１１，０１，００としてコード化される）を備え得る。符号ビット１００８は、サンプルベクトル６０４Ａの非ゼロサンプルの各々についての符号値を示し得る。例えば、符号ビット１００８は、「１００」としてシグナリングされ得、ここで、「１」は正を示し、「０」は負を示す。ゼロ値を有するサンプルベクトル６０４Ａのサンプルについての符号は、符号ビット１００８においてシグナリングされない。
【００８４】
[0100]いくつかの実施形態では、コーダ７０２は、サンプルベクトル６０４のサンプルの大きさまたは絶対部分に対して（例えば、図７−８に例示されるような）ベクトルベースエントロピーコード化を使用して、サンプルベクトル６０４Ａをコード化し得る。サンプルベクトル６０４Ａ中のサンプルの絶対値は、本明細書で開示されるベクトルベース技法を使用してコード化され得る。
【００８５】
[0101]例えば、４つのサンプルＳ０、Ｓ１、Ｓ８、およびＳ９を備えるサンプルベクトル６０４Ａの場合、ベクトルベースエントロピーコーダ７０２は、プレフィックス部分１００４およびサフィックス部分１００６を作り出すために、｜Ｓ０｜、｜Ｓ１｜、｜Ｓ８｜、｜Ｓ９｜のような、ベクトルベースＥＣをグループ中のサンプルの絶対値に適用し得る。プレフィックス部分１００４は、使用されるＬＵＴのタイプを示し得、サフィックス部分１００６は、サンプルベクトル６０４Ａのすべてのサンプルの絶対値が決定され得るcodeNumberに対応し得る。
【００８６】
[0102]他方で、コーダ７０２は、サンプルＳ０、Ｓ１、Ｓ８、およびＳ９の符号ビット１００８を、ベクトルベースエントロピーコード化を使用することなく、別々にシグナリングし得る。例えば、符号ビット１００８は、固定長のコードを使用してシグナリングされ得、ここで、非ゼロサンプルごとに１ビットが、このサンプルが正であるか負であるかを示すために、シグナリングされる。いくつかの実施形態では、符号ビットは、対応するサンプル値がゼロであるときシグナリングされない。
【００８７】
[0103]図１０Ｂは、いくつかの実施形態に係る、符号絶対値表現を使用してサンプルベクトル６０４をコード化するための代替の配列を例示する。いくつかの実施形態では、コーダ７０２は、複数のサンプルベクトル６０４Ａ乃至６０４Ｄの各々についてのプレフィックス部分１００４およびサフィックス部分１００６がコード化された後に、ビットストリームにおいて複数のサンプルベクトル６０４Ａ乃至６０４Ｄについての符号ビット１００８をコード化し得る。例えば、いくつかの実施形態では、コーダ７０２は、最初に、ビットストリームにおいてすべてのサンプルベクトル６０４Ａ−Ｄのプレフィックス部分１００４およびサフィックス部分１００６をコード化し得、すべてのグループ６０４Ａ−Ｄの符号ビット１００８は、すべてのプレフィックス部分１００４およびサフィックス部分１００６がコード化された後に、ビットストリームにおいてコード化され得る。
【００８８】
[0104]２の補数表現と比べて、符号絶対値表現がもたらす利点は、値がゼロであるシンボルについての符号情報がシグナリングされないことである。したがって、符号絶対値表現は、例えば、ブロック予測および変換モードのような、ゼロ値がより確からしいモードにおいて、優れたコード化パフォーマンスに帰着することができる。
【００８９】
[0105]上で説明したように、コーダ７０２は、サンプルベクトル６０４をコード化するために符号絶対値表現を使用し得、ここにおいて、ゼロの値に対応するサンプルベクトル６０４のサンプルのための符号ビットは、符号ビット１００８においてシグナリングされない。このように、デコーダ３０のパーサロジックは、ビットストリームから、サンプルベクトル６０４のサンプルの各々について符号ビット１００８からの符号情報を読み取るかどうかを知るために、（サフィックス部分１００６としてコード化された）サンプルベクトル６０４のサンプルを再構築または復号する必要があり得る。いくつかの実施形態では、デコーダ３０のパーサは、サブストリームデマルチプレクサ１６０の一部としてインプリメントされ得る。
【００９０】
[0106]換言すると、デコーダ３０のパーサロジックは、それがサンプルベクトル６０４についての符号ビット１００８をパースし得る前に、サンプルベクトル６０４の各サンプルがゼロ値を有するか非ゼロ値を有するかを知る必要がある。サンプル値が非ゼロである場合、デコーダ３０は、符号ビット１００８の一部としてビットストリームからサンプルについての符号情報をパースする。そうではなく、サンプル値がゼロである場合、符号ビットは、ビットストリームから読み取られない。デコーダ３０の（例えば、エントロピーデコーダ１６５としてインプリメントされた、サンプルを復号するための）復号機能とパース機能との間のこの依存性により、デコーダ３０の最大デコーダスループットは、いくつかの実施形態では低減され得る。
【００９１】
[0107]いくつかの実施形態では、ビデオデータビットストリームから、コード化されたサンプルベクトルを受け取ることに応答して、パーサは、単項コードであり得る、受け取ったコード化されたサンプルベクトルのプレフィックスを、このサンプルベクトルの各サフィックス部分の長さを決定するために、復号し得る。次いで、パーサは、エントロピーデコーダ１６５によって復号するために、サンプルベクトルのサフィックスに対応する固定数のビットを取り出し、次いで、次のクロックサイクル中に次のサンプルベクトルへと進み得る。
【００９２】
[0108]デコーダ（例えば、エントロピーデコーダ１６５）は、コード化されたサンプルベクトルのサフィックスに対応するビットをパーサから受け取る。次いで、デコーダ１６５は、codeNumber７０８を決定するために、受け取ったビットを復号し得る。次いで、デコーダ１６５は、ＬＵＴを使用して、codeNumber７０８をインデックス値７０６にマッピングし得、これは、次に、サンプルベクトルの実際のサンプル値を取得するために使用される。いくつかの実施形態では、この復号は、コード化されたサンプルベクトルをパーサがパースした後の次のクロックサイクル（例えば、パーサが後続のサンプルベクトルをパースしているのと同じクロックサイクル）において実行され得る。
【００９３】
[0109]図１１は、いくつかの実施形態に係る、符号絶対値を使用してコード化されたサンプルベクトル６０４Ａ−Ｄをパースおよび復号するために必要とされ得る多数のクロックサイクルを例示する例示的なグラフ１１００を例示する。いくつかの実施形態では、デコーダ３０は、（プレフィックス部分１００４が、サフィックス部分１００６中のビット数を直接識別するであろうことから）単一のクロックにおいて各サンプルベクトル６０４のプレフィックス部分１００４およびサフィックス部分１００６をパースすることができ得る。図１０Ａに例示されるようなサンプルベクトル６０４Ａ−６０４Ｄを考慮すると、いくつかの実施形態では、デコーダ３０は、４つのサンプルベクトル６０４Ａ乃至６０４Ｄをパースするのに少なくとも５つのクロックサイクルを必要とし得る。
【００９４】
[0110]クロックサイクル１において、デコーダ３０は、サンプルベクトル６０４Ａのプレフィックス部分およびサフィックス部分をパースする。クロックサイクル２において、デコーダ３０は、サンプルベクトル６０４Ｂのプレフィックス部分およびサフィックス部分をパースする。それと同時に、デコーダ３０は、サンプルベクトル６０４Ａの絶対サンプル値を復号し、サンプルベクトル６０４Ａについての符号ビットをパースする。クロックサイクル３において、デコーダ３０は、サンプルベクトル６０４Ｂの絶対サンプル値を復号し、サンプルベクトル６０４Ｂの符号ビットだけでなく、サンプルベクトル６０４Ｃのプレフィックス部分およびサフィックス部分をパースする。クロックサイクル４において、デコーダ３０は、サンプルベクトル６０４Ｃのサンプル値を復号し、サンプルベクトル６０４Ｃの符号ビットおよびサンプルベクトル６０４Ｄのプレフィックスおよびサフィックスをパースする。デコーダ３０がサンプルベクトル６０４Ｄの絶対値を復号して、サンプルベクトル６０４Ｄについての対応する符号情報をパースするのに、追加のクロックサイクル（クロックサイクル５）が必要とされる。したがって、図１０Ａに例示されるようなこの表現は、いくつかの実施形態では、デコーダ２０の達成可能な最大スループットを低減し得る。各サンプルベクトルの絶対サンプル値がベクトルエントロピーコード化を使用してコード化されるとき、同様の結果が導き出され得る。
【００９５】
[0111]いくつかの実施形態では、図１０Ｂに例示されたように、複数のサンプルベクトル６０４Ａ−Ｄに対応する符号ビット１００８は、ビットストリームにおいてグループ６０４Ａ−Ｄのプレフィックス部分１００４およびサフィックス部分１００６の後に位置付けられ得る。これらのケースでは、デコーダ３０は、複数のサンプルベクトルのうちの最後のサンプルベクトル（例えば、グループ６０４Ｄ）のプレフィックスおよびサフィックスをパースしてから１クロックサイクル後に、符号ビット１００８をパースし得る。このように、複数のサンプルベクトル６０４Ａ−Ｄのすべてのサンプルベクトルが、符号絶対値を使用してコード化されるとき、デコーダ３０は、サンプルベクトル６０４Ａ−Ｄのプレフィックスおよびサフィックスをパースした後に、符号ビット１００８をパースするために余分な（extra）クロックサイクル（例えば、クロックサイクル５）を必要とし得、これは、デコーダ１６５の達成可能な最大スループットを低減する可能性がある。例えば、ｎ個のグループ６０４をパースするために、デコーダ３０は、ｎ＋１個のクロックサイクルを必要とし得る。
【００９６】
[0112]図１２は、（例えば、図６に例示されるような）例示的なサンプルベクトル６０４のハイブリッドエントロピーコード化の例を例示す。いくつかの実施形態では、デコーダ３０のスループットを増やすために、コーダ７０２は、ハイブリッド法を使用し得る。例えば、コーダ７０２は、符号絶対値表現を使用して、初期数のサンプルベクトル６０４（例えば、サンプルベクトル６０４Ａ−Ｃ）をコード化し得る。他方では、コーダ７０２は、２の補数表現のような異なる表現を使用して、残りのサンプルベクトル（例えば、サンプルベクトル６０４Ｄ）をコード化し得る。コーダ７０２は、（図４−５に例示されるような）ＤＳＵ−ＶＬＣまたは（例えば、図７−９に例示されるような）ベクトルＥＣに基づいて、サンプルベクトル６０４Ａ−Ｄの各々をコード化し得る。例えば、２の補数表現のためのベクトルＥＣは、サンプルベクトル６０４のシンボルが単一のcodeNumber７０８にマッピングされる図８に基づき得る。他方で、符号絶対値表現では、コーダ７０２は、サンプルベクトル６０４についての符号ビット１００８がサンプルベクトル６０４の非ゼロシンボルごとに別々にシグナリングされ得るのと同時に、サンプルベクトル６０４の各シンボルの絶対値のセットを単一のcodeNumber７０８にマッピングし得る。
【００９７】
[0113]４つのサンプルベクトル６０４Ａ−Ｄをコード化するための１つの例示的な実施形態では、符号絶対値表現が、最初の３つのサンプルベクトル６０４Ａ−Ｃに対して使用され、２の補数表現が最後のサンプルベクトル６０４Ｄに対して使用される。図１３は、いくつかの実施形態に係る、図１２に例示されたハイブリッドコード化スキームを使用してコード化されたサンプルベクトル６０４Ａ−Ｄをパースおよび復号するのに必要とされ得る多数のクロックサイクルを例示する例示的なグラフ１３００を例示する。上で説明したようにパーサおよびシンボルデコーダ１６５をパイプラインすることで、第４のクロックサイクルの間に、サンプルベクトル６０４Ｃのサンプルが復号されるのと同時に、サンプルベクトル６０４Ｄのサンプルが、デコーダ１６５によってパースされる。サンプルベクトル６０４Ｄのサンプルは２の補数表現に基づいてコーダ７０２によって符号化されるため、デコーダ１６５が、サンプルベクトル６０４Ｄについての符号ビットをパースするためにサンプルベクトル６０４Ｄの絶対サンプル値を復号する必要はない。したがって、ハイブリッド法を使用すると、デコーダ３０が、４つのクロックサイクルにおいて４つすべてのサンプルベクトル６０４Ａ−Ｄをパースすることが可能であり得る。ゆえに、いくつかの実施形態では、ｎ個のサンプルベクトルをパースするときに余分なクロックサイクルが必要となるのを回避するために、コーダ７０２は、符号絶対値表現を使用して最初のｎ−１個のサンプルベクトルをコード化し、それと同時に、２の補数表現のような異なる表現を使用して最後のサンプルベクトルをコード化し得る。ゆえに、デコーダ３０は、ｎ個のクロックサイクルにおいてｎ個のサンプルベクトルをパースすることができ得る。
【００９８】
[0114]いくつかの実施形態では、コーダ７０２は、非ゼロサンプル値を有するサンプルベクトル６０４の数に基づいて、２の補数表現を使用するか符号絶対値表現を使用するかを決定し得る。一例では、コーダ７０２は、前のサンプルベクトル６０４Ａ乃至６０４Ｃの各々が少なくとも１つの非ゼロサンプル値を含む場合にのみ、最後のサンプルベクトル６０４Ｄに対して２の補数表現を使用し得る。それ以外の場合、コーダ７０２は、最後のサンプルベクトル６０４Ｄをコード化するために、符号絶対値表現を使用し得る。いくつかの実施形態では、最後のサンプルベクトル６０４Ｄをコード化するために２の補数を使用することは、圧縮効率のかなりのロスを伴い得る。３つのサンプルベクトル６０４Ａ乃至６０４Ｃの各々が少なくとも１つの非ゼロサンプル値を含むときにのみ２の補数で最後のサンプルベクトル６０４Ｄをコード化する（ゆえに、符号ビット１００８のコード化を必要とする）ことによって、２の補数の使用は、所望のスループットを達成するために、必要なときにのみそれを使用することで最小限にされ得る。例えば、３つのサンプルベクトル６０４Ａ乃至６０４Ｃのうちの１つでも少なくとも１つの非ゼロサンプル値を含まない場合、サンプルベクトルは、グループスキップモードを使用してコード化され得る。ゆえに、デコーダ３０は、サンプルベクトル６０４Ａ乃至６０４Ｃをより迅速にパースすることができ得、これにより、４つすべてのサンプルベクトルが４つのクロックサイクル内にパースされることができる。
【００９９】
[0115]上の例では、ＤＳＵ−ＶＬＣベースエントロピーコード化は、符号絶対値表現および２の補数表現の両方に対して使用される。しかしながら、同じ技法は、両方の表現についてのベクトルＥＣに拡張されることができる。
【０１００】
プロセスフロー
[0116]本開示の態様が、図２Ａのビデオエンコーダ２０のようなエンコーダまたは図８に例示されたベクトルベースエントロピーコーダ８０４のようなエンコーダの一部の観点から説明されていることは留意されるべきである。上で説明したものの逆動作が、例えば、図２Ｂのビデオデコーダ３０によって、生成されたビットストリームを復号するために適用され得る。
【０１０１】
[0117]例えば、図１４Ａは、サンプルベクトルデータを符号化するためのプロセスのフローチャートを例示し、図１４Ｂは、サンプルベクトルデータに対応する受け取ったビットシーケンスを復号するためのプロセスのフローチャートを例示する。例えば、図１４Ａのブロック１４０２において例示されるように、エンコーダは、受け取ったサンプルベクトルをインデックス値に変換する。いくつかの実施形態では、異なるサンプルベクトルが２つとして同じインデックス値を有することがないように、サンプルベクトルとインデックス値との間には１対１の対応が存在する。ブロック１４０４において、エンコーダは、ＬＵＴを使用して、インデックス値をコード番号にマッピングする。ＬＵＴは、可能なサンプルベクトルのグループのうちの所与のサンプルベクトルの生起確率に少なくとも部分的に基づいて構築され得る。いくつかの実施形態では、エンコーダは、サンプルベクトルをコード化するために使用されるコード化モード、サンプルベクトルの各サンプル値を表すのに必要なビット数、サンプルベクトル中のサンプル値の数（a number of）、および／または同様のものに基づいてＬＵＴを識別し得る。ブロック１４０６において、エンコーダは、ビットストリームの一部として記憶または送信されるべき、コード化されたビットのシーケンスを形成するために、ＶＬＣスキームを使用して、コード番号をコード化し得る。
【０１０２】
[0118]図１４Ｂのブロック１４１２に例示されるように、デコーダは、コード番号を形成するために、ＶＬＣスキームを使用して、（例えば、受け取ったビットストリームから）受け取ったビットのシーケンスを復号する。ブロック１４１４において、デコーダは、ＬＵＴを使用して、コード番号をインデックス値にマッピングする。いくつかの実施形態では、デコーダは、ビットのシーケンスの一部として（例えば、このシーケンスのプレフィックス部分として）受け取ったインジケーションに基づいて、このマッピングを実行するために使用されるＬＵＴタイプを識別する。ブロック１４１６において、デコーダは、インデックス値をサンプルベクトルについての値へと変換する。
【０１０３】
[0119]図１５は、ハイブリッドコード化を使用してサンプルベクトルデータを符号化するための例示的なプロセスのフローチャートを例示する。ブロック１５０２において、エンコーダは、複数のサンプル値を受け取り、受け取ったサンプル値をｎ個のサンプルベクトルへと分ける。ブロック１５０４において、エンコーダは、符号絶対値表現を使用して、ｎ個のサンプルベクトルの第１の部分をコード化する。いくつかの実施形態では、サンプルベクトルの第１の部分は、ｎ個のサンプルベクトルのうちの最初のｎ−１個のサンプルベクトルを備え得る。ブロック１５０６において、エンコーダは、２の補数表現を使用して、ｎ個のサンプルベクトルのうちの１つまたは複数の残りのサンプルベクトルをコード化し得る。いくつかの実施形態では、１つまたは複数の残りのサンプルベクトルは、ｎ個のサンプルベクトルのうちの最後のサンプルベクトル（the last sample vectors）を備え得る。いくつかの実施形態では、エンコーダは、サンプルベクトルの第１の部分の各々が、非ゼロ値を有する少なくとも１つのサンプルを含む場合にのみ、２の補数表現で、１つまたは複数の残りのサンプルベクトルをコード化する。ｎ個のサンプルベクトルのうちのサンプルベクトルの第１の部分を符号絶対値表現を使用しておよび残りのグループを２の補数表現を使用してコード化することで、ｎ個のサンプルベクトルのすべてのサンプル値の絶対値が復号された後に非ゼロサンプル値の符号ビットを復号することが必要となることで引き起こされ得るデコーダスループットの低減を回避しつつ、符号絶対値表現を使用してコード化することの利点が実現され得る。
【０１０４】
他の検討事項
[0120]本明細書で開示された情報および信号は、多種多様な技術および技法のうちの任意のものを使用して表され得る。例えば、上の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光粒子、またはこれらの任意の組合せによって表され得る。
【０１０５】
[0121]本明細書で開示された実施形態と関連して説明された実例となる様々な論理ブロックおよびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとしてインプリメントされ得る。このハードウェアとソフトウェアとの互換性を明確に例示するために、実例となる様々な構成要素、ブロック、およびステップが、概してそれらの機能性の観点から上で説明されている。このような機能性がハードウェアとしてインプリメントされるかソフトウェアとしてインプリメントされるかは、特定の用途とシステム全体に課せられる設計制約とに依存する。当業者は、説明された機能性を特定の用途ごとに様々な方法でインプリメントし得るが、このようなインプリメンテーションの決定は、本開示の範囲からの逸脱をさせるものとして解釈されるべきでない。
【０１０６】
[0122]本明細書で説明された技法は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、または、ワイヤレス通信デバイスハンドセット、自動車、電気器具、ウェアラブルなもの、および／または他のデバイスにおけるアプリケーションを含む複数の用途を有する集積回路デバイスのような様々なデバイスの任意のものでインプリメントされ得る。デバイスまたは構成要素として説明された任意の特徴は、１つの集積論理デバイスでまとめて、または、ディスクリートではあるが相互動作可能な複数の論理デバイスとして別々にインプリメントされ得る。ソフトウェアでインプリメントされる場合、本技法は、少なくとも部分的に、命令を含むプログラムコードを備えるコンピュータ読取可能なデータ記憶媒体によって実現され得、これらの命令は、実行されると、上で説明した方法のうちの１つまたは複数を実行する。コンピュータ読取可能なデータ記憶媒体は、パッケージングマテリアルを含み得る、コンピュータプログラム製品の一部を形成し得る。コンピュータ読取可能な媒体は、同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、不揮発ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ（登録商標））、ＦＬＡＳＨメモリ、磁気または光学データ記憶媒体、等のメモリまたはデータ記憶媒体を備え得る。本技法は、追加的にまたは代替的に、少なくとも部分的に、伝播される信号または波のような、コンピュータによってアクセス、読み取り、および／または実行されることができ、かつ、データ構造または命令の形式でプログラムコードを搬送または通信するコンピュータ読取可能な通信媒体によって実現され得る。
【０１０７】
[0123]プログラムコードは、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の同等の集積回路またはディスクリート論理回路のような１つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のうちの任意のものを実行するように構成され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、ＤＳＰと、１つのマイクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアに連結した１つまたは複数のマイクロプロセッサ、または任意の他のそのような構成との組合せとしてインプリメントされ得る。したがって、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造の任意のもの、前述の構造の任意の組合せ、または本明細書で説明された技法のインプリメンテーションに適した任意の他の構造または装置を指し得る。加えて、いくつかの態様では、本明細書で説明された機能性は、符号化および復号するために構成された専用のソフトウェアまたはハードウェア内に提供され得るか、または、複合ビデオエンコーダ−デコーダ（ＣＯＤＥＣ）に組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で完全にインプリメントされ得る。
【０１０８】
[0124]本開示の技法は、ワイヤレスハンドセット、ＩＣ、またはＩＣのセット（例えば、チップセット）を含む、幅広い種類のデバイスまたは装置でインプリメントされ得る。様々な構成要素またはユニットは、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するように本開示では説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上で説明したように、様々なユニットは、コデックハードウェアユニットへと組み合わせられるか、適切なソフトウェアおよび／またはファームウェアと併せて、上で説明した１つまたは複数のプロセッサを含む、相互動作するハードウェアユニットの集合体によって提供され得る。
【０１０９】
[0125]前述のものは、様々な異なる実施形態に関連して説明されているが、１つの実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられる。しかしながら、それぞれの実施形態間での特徴の組み合わせは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されている。これらのおよび他の実施形態は、以下の特許請求の範囲の範囲内である。
【図１Ａ】
2019511865.tif 000003
【図１Ｂ】
2019511865.tif 000004
【図２Ａ】
2019511865.tif 000005
【図２Ｂ】
2019511865.tif 000006
【図３】
2019511865.tif 000007
【図４】
2019511865.tif 000008
【図５】
2019511865.tif 000009
【図６】
2019511865.tif 000010
【図７】
2019511865.tif 000011
【図８】
2019511865.tif 000012
【図９】
2019511865.tif 000013
【図１０Ａ】
2019511865.tif 000014
【図１０Ｂ】
2019511865.tif 000015
【図１１】
2019511865.tif 000016
【図１２】
2019511865.tif 000017
【図１３】
2019511865.tif 000018
【図１４Ａ】
2019511865.tif 000019
【図１４Ｂ】
2019511865.tif 000020
【図１５】
2019511865.tif 000021
【手続補正書】
【提出日】平成30年11月7日(2018.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
グループに配列される複数のビデオサンプルを記憶するように構成されたメモリと、各ビデオサンプルは、ビットサイズＢを有し、前記グループは、グループサイズＫを有する、
ハードウェアプロセッサと、前記プロセッサは、可変長コード化（ＶＬＣ）スキームを使用して、ベクトルベースコードを形成するために前記グループ中の前記複数の前記ビデオサンプルをコード化するように構成され、前記ベクトルベースコードは、少なくとも、前記ビットサイズＢまたは前記グループサイズＫのうちの少なくとも１つに対応する、複数のタイプのルックアップテーブルの中の１つのタイプのルックアップテーブルを識別する第１の部分と、前記グループ中の前記複数のビデオサンプルを表す第２の部分とを備える、
を備える装置。
【請求項２】
前記プロセッサは、
前記グループをインデックス値に変換することと、
前記グループに関連付けられた前記グループサイズＫまたは前記ビットサイズＢのうちの少なくとも１つに対応する前記タイプのルックアップテーブルを使用して、前記インデックス値をコード番号にマッピングすることと、
前記ＶＬＣスキームを使用して、前記ベクトルベースコードを形成するために前記コード番号を符号化することと
を行うようにさらに構成される、請求項１に記載の装置。
【請求項３】
前記プロセッサは、
可変長コード化（ＶＬＣ）スキームを使用して、コード番号を形成するために前記ベクトルベースコードを復号することと、
前記ベクトルベースコードの前記第１の部分によって識別される前記タイプのルックアップテーブルを使用して、前記コード番号をインデックス値にマッピングすることと、
前記インデックス値を前記グループの前記複数のビデオサンプルに変換することと
を行うようにさらに構成される、請求項１に記載の装置。
【請求項４】
前記第１の部分は、単項コードフォーマットを使用してコード化される、請求項１に記載の装置。
【請求項５】
前記複数のビデオサンプルは、２の補数表現を使用して表される、請求項１に記載の装置。
【請求項６】
前記プロセッサが、前記ベクトルベースコードを形成するために前記グループ中の前記複数のビデオサンプルの前記絶対値をコード化するように構成されるような、符号絶対値表現を使用した前記複数のビデオサンプル、請求項１に記載の装置。
【請求項７】
前記プロセッサ回路は、前記ビットサイズＢが閾値より小さいとき、前記ベクトルベースコードを供給するように構成される、請求項１に記載の装置。
【請求項８】
前記プロセッサ回路は、第２のＶＬＣスキームを使用して、前記ベクトルベースコードの前記第１の部分と、少なくとも前記第２の部分のプレフィックス部分とを符号化するようにさらに構成される、請求項１に記載の装置。
【請求項９】
前記タイプのルックアップテーブルは、可能なＫサイズのグループのセットのうちの前記グループの生起確率に少なくとも部分的に基づく、請求項１に記載の装置。
【請求項１０】
ビデオ情報をコード化するための方法であって、前記情報は、サンプルのセットを備え、前記方法は、
前記サンプルのセットを１つまたは複数のサンプルベクトルへと区分化することと、前記１つまたは複数のサンプルベクトルのうちの１つのサンプルベクトルは、ビットサイズＢに関連付けられたＫ個のサンプルを備える、
ルックアップテーブルを使用して、前記サンプルベクトルをコード番号にマッピングすることと、前記タイプのルックアップテーブルは、可能な長さＫのサンプルベクトルのセットのうちの前記サンプルベクトルの生起確率に少なくとも部分的に基づいて、複数のタイプのルックアップテーブルの中から選択される、
前記Ｋ個のサンプルを表す可変長コード化（ＶＬＣ）コードを生成するために、ＶＬＣスキームを使用して、前記コード番号をコード化することと、前記ＶＬＣコードは、少なくとも、前記ルックアップテーブルを識別する第１の部分と、前記サンプルベクトルの前記Ｋ個のサンプルを表す第２の部分とを備える、
を備える方法。
【請求項１１】
サンプルは、画素の色成分に対応する、請求項１０に記載の方法。
【請求項１２】
前記サンプルのセットは、ビデオ情報のブロックに関連付けられた量子化された残余に対応する、請求項１０に記載の方法。
【請求項１３】
前記ＶＬＣスキームは、ハフマン、算術、指数ゴロム（ＥＧ）、およびゴロムライス（ＧＲ）のうちの少なくとも１つを備える、請求項１０に記載の方法。
【請求項１４】
前記サンプルベクトルをコード番号にマッピングすることは、前記サンプルベクトルを、前記サンプルベクトルに対応する一意的なインデックス値に変換することと、前記ルックアップテーブルを使用して、前記インデックス値を前記コード番号にマッピングすることとを備える、請求項１０に記載の方法。
【請求項１５】
前記ＬＵＴは、前記ビットサイズＢまたは前記長さＫのうちの少なくとも１つに基づいて選択される、請求項１０に記載の方法。
【請求項１６】
前記第２の部分は、少なくともプレフィックス部分およびサフィックス部分を備え、前記方法は、ＶＬＣスキームを使用して、前記第１の部分および前記プレフィックス部分をコード化することをさらに備える、請求項１０に記載の方法。
【請求項１７】
前記第１の部分は、単項フォーマットで表される、請求項１０に記載の方法。
【請求項１８】
前記サンプルのセットは、２の補数表現を使用して表される、請求項１０に記載の方法。
【請求項１９】
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
送信のために複数のグループへと分けられる複数のビデオサンプルを記憶するように構成されたメモリと、各グループは、１つまたは複数のビデオサンプルを備える、
ハードウェアプロセッサと、前記プロセッサは、ビデオサンプルの前記複数のグループをコード化するように構成される、ここにおいて、前記複数のグループのうちの第１の複数のグループからのビデオサンプルは、符号絶対値フォーマットを使用してコード化され、前記複数のグループのうちの１つまたは複数の残りのグループは、２の補数フォーマットを使用してコード化される、
を備える装置。
【請求項２０】
前記複数のグループは、ｎ個のグループを備え、前記第１の複数のグループは、前記複数のグループのうちの最初のｎ−１個のグループを備える、請求項１９に記載の装置。
【請求項２１】
前記１つまたは複数の残りのグループは、前記第１の複数のグループの各グループの少なくとも１つのサンプル値が非ゼロ値に対応する場合にのみ、２の補数フォーマットを使用してコード化される、請求項１９に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
[0125]前述のものは、様々な異なる実施形態に関連して説明されているが、１つの実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられる。しかしながら、それぞれの実施形態間での特徴の組み合わせは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されている。これらのおよび他の実施形態は、以下の特許請求の範囲の範囲内である。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
１つのグループに配列される複数のビデオサンプルを記憶するように構成されたメモリと、各ビデオサンプルは、ビットサイズＢを有し、前記グループは、グループサイズＫを有する、
ハードウェアプロセッサと、前記プロセッサは、可変長コード化（ＶＬＣ）スキームを使用して、ベクトルベースコードを形成するために前記グループ中の前記複数の前記ビデオサンプルをコード化するように構成され、前記ベクトルベースコードは、少なくとも、前記ビットサイズＢまたは前記グループサイズＫのうちの少なくとも１つに対応するルックアップテーブルのタイプを識別する第１の部分と、前記グループ中の前記複数のビデオサンプルを表す第２の部分とを備える、
を備える装置。
［Ｃ２］
前記プロセッサは、
前記グループをインデックス値に変換することと、
前記グループに関連付けられた前記グループサイズＫまたは前記ビットサイズＢのうちの少なくとも１つに対応する前記タイプのルックアップテーブルを使用して、前記インデックス値をコード番号にマッピングすることと、
前記ＶＬＣスキームを使用して、前記ベクトルベースコードを形成するために前記コード番号を符号化することと
を行うようにさらに構成される、Ｃ１に記載の装置。
［Ｃ３］
前記プロセッサは、
可変長コード化（ＶＬＣ）スキームを使用して、コード番号を形成するために前記ベクトルベースコードを復号することと、
前記ベクトルベースコードの前記第１の部分によって識別される前記タイプのルックアップテーブルを使用して、前記コード番号をインデックス値にマッピングすることと、
前記インデックス値を前記グループの前記複数のビデオサンプルに変換することと
を行うようにさらに構成される、Ｃ１に記載の装置。
［Ｃ４］
前記第１の部分は、単項コードフォーマットを使用してコード化される、Ｃ１に記載の装置。
［Ｃ５］
前記複数のビデオサンプルは、２の補数表現を使用して表される、Ｃ１に記載の装置。
［Ｃ６］
前記プロセッサが、前記ベクトルベースコードを形成するために前記グループ中の前記複数のビデオサンプルの前記絶対値をコード化するように構成されるような、符号絶対値表現を使用した前記複数のビデオサンプル、Ｃ１に記載の装置。
［Ｃ７］
前記プロセッサ回路は、前記ビットサイズＢが閾値より小さいとき、前記ベクトルベースコードを供給するように構成される、Ｃ１に記載の装置。
［Ｃ８］
前記プロセッサ回路は、第２のＶＬＣスキームを使用して、前記ベクトルベースコードの前記第１の部分と、少なくとも前記第２の部分のプレフィックス部分とを符号化するようにさらに構成される、Ｃ１に記載の装置。
［Ｃ９］
前記タイプのルックアップテーブルは、可能なＫサイズのグループのセットのうちの前記グループの生起確率に少なくとも部分的に基づく、Ｃ１に記載の装置。
［Ｃ１０］
ビデオ情報をコード化するための方法であって、前記情報は、サンプルのセットを備え、前記方法は、
前記サンプルのセットを１つまたは複数のサンプルベクトルへと区分化することと、前記１つまたは複数のサンプルベクトルのうちの１つのサンプルベクトルは、ビットサイズＢに関連付けられたＫ個のサンプルを備える、
ルックアップテーブルを使用して、前記サンプルベクトルをコード番号にマッピングすることと、前記ルックアップテーブルは、可能な長さＫのサンプルベクトルのセットのうちの前記サンプルベクトルの生起確率に少なくとも部分的に基づく、
前記Ｋ個のサンプルを表す可変長コード化（ＶＬＣ）コードを生成するために、ＶＬＣスキームを使用して、前記コード番号をコード化することと、前記ＶＬＣコードは、少なくとも、前記ルックアップテーブルを識別する第１の部分と、前記サンプルベクトルの前記Ｋ個のサンプルを表す第２の部分とを備える、
を備える方法。
［Ｃ１１］
サンプルは、画素の色成分に対応する、Ｃ１０に記載の方法。
［Ｃ１２］
前記サンプルのセットは、ビデオ情報のブロックに関連付けられた量子化された残余に対応する、Ｃ１０に記載の方法。
［Ｃ１３］
前記ＶＬＣスキームは、ハフマン、算術、指数ゴロム（ＥＧ）、およびゴロムライス（ＧＲ）のうちの少なくとも１つを備える、Ｃ１０に記載の方法。
［Ｃ１４］
前記サンプルベクトルをコード番号にマッピングすることは、前記サンプルベクトルを、前記サンプルベクトルに対応する一意的なインデックス値に変換することと、前記ルックアップテーブルを使用して、前記インデックス値を前記コード番号にマッピングすることとを備える、Ｃ１０に記載の方法。
［Ｃ１５］
前記ＬＵＴは、前記ビットサイズＢまたは前記長さＫのうちの少なくとも１つに基づいて選択される、Ｃ１０に記載の方法。
［Ｃ１６］
前記第２の部分は、少なくともプレフィックス部分およびサフィックス部分を備え、前記方法は、ＶＬＣスキームを使用して、前記第１の部分および前記プレフィックス部分をコード化することをさらに備える、Ｃ１０に記載の方法。
［Ｃ１７］
前記第１の部分は、単項フォーマットで表される、Ｃ１０に記載の方法。
［Ｃ１８］
前記サンプルのセットは、２の補数表現を使用して表される、Ｃ１０に記載の方法。
［Ｃ１９］
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
送信のために複数のグループへと分けられる複数のビデオサンプルを記憶するように構成されたメモリと、各グループは、１つまたは複数のビデオサンプルを備える、
ハードウェアプロセッサと、前記プロセッサは、ビデオサンプルの前記複数のグループをコード化するように構成される、ここにおいて、前記複数のグループのうちの第１の複数のグループからのビデオサンプルは、符号絶対値フォーマットを使用してコード化され、前記複数のグループのうちの１つまたは複数の残りのグループは、２の補数フォーマットを使用してコード化される、
を備える装置。
［Ｃ２０］
前記複数のグループは、ｎ個のグループを備え、前記第１の複数のグループは、前記複数のグループのうちの最初のｎ−１個のグループを備える、Ｃ１９に記載の装置。
［Ｃ２１］
前記１つまたは複数の残りのグループは、前記第１の複数のグループの各グループの少なくとも１つのサンプル値が非ゼロ値に対応する場合にのみ、２の補数フォーマットを使用してコード化される、Ｃ１９に記載の装置。
【国際調査報告】
2019511865.tif 000022
2019511865.tif 000023