[0015] 本開示の技法は、復号(decoding)に関するレイテンシ(latency)を低減するために、並列処理技法を使用することによる算術コーディングベースのコーディング技法を使用して符号化された、ビデオデータを含むデータを復号するための、システムおよび方法に関する。詳細には、本明細書で説明するシステムおよび方法は、コード化データのブロックを一度に(たとえば、いくつかの復号シンボルを単一のクロックサイクル(single clock cycle)の中で)処理する算術復号技法(arithmetic decoding technique)に関し得、そうした技法は、「ブロック算術コーディング(block arithmetic coding)」と呼ばれることがある。そのような技法は、有利なことに、コード化データの復号レート(decoding rate)がコード化データの符号化(たとえば、圧縮)データシンボルレートに近似的に比例することを可能にし得、そのことは、符号化データシンボルのストリングを復号するのに必要とされるサイクルの数が符号化データシンボルの個数に近似的に等しいことを意味する。そのような低減されたレイテンシは、復号のためのより高速な計算をもたらすことができ、潜在的に時間とエネルギーとを節約する。本技法は、高効率ビデオコーディング(HEVC)などの既存のビデオコーデックのいずれにも適用されてよく、または未来のあらゆるビデオコーディング規格に対する効率的なコーディングツールであり得る。さらに、そのような技法は、乗算器なしのコーディング技法(multiplier-free coding technique)(たとえば、Qコーダ、MQコーダなど)および乗算器ベースのコーディング技法(multiplier based coding technique)に適合され得る。このことは、圧縮率(compression ratio)においていかなる負の影響もなくレイテンシが低減されたデコーダを有するための(たとえば、乗算器ベースのコーディング技法)、または圧縮率を計算の複雑さと交換できるための(たとえば、乗算器なしベースのコーディング技法)フレキシビリティを可能にする。さらに、そのような技法は、並列処理を実行するためにビットスタッフィング(bit-stuffing)を必要としない。本技法はビデオコーディングに関して説明されるが、当業者は、そのような技法が他のタイプのデータのコーディング(coding)のために使用され得ることを理解するだろう。
[0016] たとえば、デジタルデータのシリアル送信(serial transmission)は、一般に、低電力要件を向上させるためにさらなる圧縮を使用することによって改善され得る。そのようなシリアル送信は、同期リンクおよび/または非同期リンクに対して、本明細書で説明する技法に従って改善され得る。詳細には、本明細書で説明する圧縮技法は、同期リンクを介して送信されることを必要とするビットの総数を低減し得るだけでなく、デバイス間で送信されることが必要とされる同期したクロックの数も低減し得る。より一般的には、本明細書で説明する圧縮技法は、デジタルデータを圧縮(compress)および圧縮解除(decompress)するのに必要とされるクロックサイクルの数(the number of clock cycles)を低減し得、それによって、電力を節約するためにできる限り速やかにクロックがシャットダウンされることを許容することなどによって、実施するためにより低い電力を必要とする。
[0017] ビデオコーディングデバイスは、ビデオデータを効率的に符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間予測(たとえば、フレーム内予測、イントラ予測)、時間予測(たとえば、フレーム間予測、インター予測)、および/または他の予測技法を適用することを含み得る。ビデオエンコーダは通常、ビデオブロックまたはコーディングユニットと呼ばれる矩形の領域に、元のビデオシーケンスの各ピクチャを区分する。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
[0018] これらのビデオブロックは、本明細書でさらに説明されるように、より小さいビデオブロック(たとえば、予測ブロック(PB)、変換ブロック(TB))の1つまたは複数のグループに1つまたは複数の方法で分割され得、各グループはビデオブロック全体を個々に表す。したがって、概してブロックへの言及は、別段に規定されていない限り、当業者によって理解されることになるように、そのようなビデオブロック(たとえば、コーディングツリーブロック(CTB)、コーディングブロックなど)、予測ブロック、変換ブロック、または他の適切なブロックもしくはサブブロックを指すことがある。さらに、これらのブロックの各々はまた、本明細書では、互換的に「ユニット」(たとえば、コーディングツリーユニット(CTU)、コーディングユニット、予測ユニット(PU)、変換ユニット(TU)など)と呼ばれることがある。ユニットが、ビットストリームの中で符号化されるコーディング論理ユニットを示し得、一方ブロックが、プロセスがターゲットであるビデオフレームバッファの一部分を示し得ることを、当業者は認識するだろう。
[0019] インター予測モードでは、ビデオエンコーダは通常、参照フレームと呼ばれる別の時間的場所にあるフレームの中に符号化されているブロックに類似するブロックを探す。ビデオエンコーダは、符号化されるべきブロックからの一定の空間的変位に対する探索を制限し得る。水平方向の変位成分と垂直方向の変位成分とを含む2次元(2D)動きベクトルを使用して、ベストマッチが特定され得る。イントラ予測モードでは、ビデオエンコーダは、同じピクチャ内の以前に符号化された隣接ブロックからのデータに基づいて、空間予測技法を使用して予測されたブロックを形成することができる。
[0020] ビデオエンコーダは、予測誤差、すなわち、符号化されているブロック中のピクセル値と予測されたブロックとの差(残差とも呼ばれる)を決定することができる。ビデオエンコーダはまた、変換係数を生成するために、離散コサイン変換(DCT)などの変換を予測誤差に適用することができる。変換の後で、ビデオエンコーダは変換係数を量子化することができる。量子化された変換係数および動きベクトルは、シンタックス要素を使用して表されることがあり、制御情報とともに、ビデオシーケンスのコーディングされた表現を形成し得る。いくつかの事例では、ビデオエンコーダは、シンタックス要素をエントロピーコーディングすることができ、それによりそれらの表現に必要なビットの数をさらに減らす。
[0021] たとえば、算術コーディングは、シンタックス要素(syntax element)および/または制御情報をエントロピーコーディングするためにビデオエンコーダによって使用され得るエントロピーコーディングの形態である。詳細には、エントロピーコーディングでは、頻繁に使用される文字は、より少ないビットを用いて符号化および記憶され、同じくらい頻繁には使用されない文字は、より多くのビットを用いて符号化および記憶される。復号ビデオシーケンス(たとえば、シンタックス要素および/または制御情報)の表現は、シンボル(たとえば、ビット)の系列またはストリングとして表され得る。シンボルは、優勢シンボルと劣勢シンボルとを含む異なる値を有し得る。詳細には、あるシンボルは、別のシンボル(すなわち、劣勢シンボル)よりも、復号ストリングの中にある可能性がずっと高いことがある(すなわち、優勢シンボル)。たとえば、優勢シンボルが0であってよく、劣勢シンボルが1であってよい。ビデオエンコーダは、シンボルの復号ストリングを表す符号化シンボルのストリングを生成するために、シンボルのストリングを符号化するように構成され得る。ビデオデコーダは、シンボルの元の(すなわち、復号された)ストリングを取り出すために、符号化シンボルを復号するように構成され得る。
[0022] 区間スケーリング(interval-scaling)と整数演算()とを使用する算術符号化プロセス(arithmetic encoding process)の一例が、下の擬似コード(pseudo-code)に示される。
[0023] 一例では、符号化されるべきストリングは、200ビット(たとえば、シンボル)の長さを有し、そのため、変数Total_CountおよびCum_count(x)は、長さ8ビット(たとえば、最大で200の値を表すことができるための最小数のビット)のレジスタを表す。擬似コードが他の適切なレジスタサイズおよびストリング長に対して同様に適合され得ることを、当業者は理解するだろう。さらに、この例では、LおよびUは、
としての長さを有するレジスタを表し得、この例では10ビットであってよい。Scale3は、長さ
のレジスタであり得、この例では4ビットであってよい。さらに、レジスタは、次のように、すなわち、L=0、Scale3=0、Uはすべて1(すなわち、この例では1023)に設定、Total_Count=200(すなわち、符号化されるべきビット数を表す)、Cum_count(0)=0、Cum_count(1)=符号化されるべきストリングの中の優勢シンボル(たとえば、0)の合計カウント、およびCum_count(2)=200(すなわち、符号化されるべきビット数を表す)、のように初期化され得る。算術符号化(arithmetic encoding)は、符号化擬似コード(encoding pseudo code)Aに従って次のように実行され得る。
[0024] ビデオデコーダは、上で論じられたシンタックス要素と制御情報とを使用して、現在のフレームを復号するための予測データ(たとえば、予測ブロック)を構築することができる。たとえば、ビデオデコーダは、予測ブロックと圧縮予測誤差とを追加することができる。ビデオデコーダは、量子化された係数を使用して変換基底関数を重み付けることによって、圧縮された予測誤差を決定することができる。再構築されたフレームと元のフレームとの差分は、再構築誤差(reconstruction error)と呼ばれる。たとえば、ビデオデコーダは、シンタックス要素および/または制御情報を取り出すために、ビデオエンコーダから受信された、算術コーディングベースのコーディング技法(擬似コードAに基づくような)を使用して符号化された符号化シンボルのストリングを復号し得る。
[0025] 区間スケーリングと整数演算とを使用する算術復号プロセスの一例が、下の擬似コードBに示される。
[0026] 一例では、符号化されたストリングは、長さ200ビット(たとえば、シンボル)を有したが、そのため、変数Total_Count、Cum_count(x)、およびCount_0は、長さ8ビットの(すなわち、最大で200の値を表すことができるための)レジスタを表す。符号化された復号ストリングの長さの値、および符号化ストリング(encoded string)の中の優勢シンボルの個数のカウントは、たとえば、制御情報として、エンコーダから受信され得る。擬似コードが他の適切なレジスタサイズおよびストリング長に対して同様に適合され得ることを、当業者は理解するだろう。さらに、この例では、L、U、およびTは、
としての長さを有するレジスタを表し得、この例では10ビットであってよい。さらに、レジスタは、次のように、すなわち、L=0、Uはすべて1(すなわち、この例では1023)に設定、Total_Count=200(すなわち、符号化されるべきビット数を表す)、符号化ストリング(encoded string)の最初の
ビットをTの中へ読み取り(すなわち、Tは入力符号化ストリングを表す)、Cum_count(0)=0、Cum_count(1)=Count_0、Cum_count(2)=200(すなわち、符号化されるべきビット数を表す)、およびCount_0=符号化ストリングの中の優勢シンボルの合計カウント、のように初期化され得る。算術復号は、復号擬似コードBに従って次のように実行され得る。
[0027] 復号擬似コードBの第1のwhileループ(第2のwhileループの前)の第1の部分をセクションAとして、および第1のwhileループの中でネストされた第2のwhileループをセクションBとして参照すると、擬似コードBは復号アルゴリズムを表す。このアルゴリズムでは、セクションAが実行されるたびに、単一の出力シンボルが復号され、次いで、セクションBが実行される。セクションBでは、whileループは、セクションAに戻る前に1回または複数回実行し得る。擬似コードBからわかるように、セクションAが実行する回数は、データの復号ストリングの長さ(すなわち、シンボルの個数)に等しい(復号ストリングの長さは、エンコーダから受信されたデータの符号化ストリングの長さよりも長い)。したがって、復号アルゴリズムによるデータの符号化ストリングの復号のレート(rate)は、データの符号化ストリングのレートよりも高い。
[0028] 本明細書で説明する技法は、セクションBの条件が満たされず、復号のために新たなシンボルがTの中に読み取られることを必要としない場合、次のシンボルを復号するためにセクションAだけが実行されることに留意する。セクションBは、UおよびLが等しいか、あるいは区間
、
、または
の中に含まれる場合のみトリガされる。したがって、本明細書では、アルゴリズムのセクションBをトリガする前にできる限り多くのシンボルを復号するために、並列処理技法を使用する算術コーディング技法を使用して符号化された符号化ストリングを復号するための技法が説明される。これらのシンボルは、近似的に符号化シンボルレート(たとえば、符号化シンボル当り1クロックサイクル)で復号され得る。以下で説明する例は、優勢シンボルが「0」であり、したがって、いくつかの「0」を同時に復号するように設計されていると仮定する。並列処理技法を使用して別の値としてのいくつかの優勢シンボルを復号するために、類似の技法が使用され得ることに当業者は留意するだろう。
[0029] セクションAでは、復号シンボルが「0」である限りLの値は変化しない。したがって、Uの値は、次のように非再帰的(non-recursively)に復号され得る。
[0030] エンコーダアルゴリズムとデコーダアルゴリズムの両方に対して、フロア演算子(floor operator)が除去されると仮定する。
[0031] したがって、エンコーダ側とデコーダ側の両方において同じ式1が使用されるという条件で、UNは、上の式1を用いて近似され得る。したがって、決定すべき残された唯一の変数は、UNの式1における「N」の値を復号または決定すべき「0」の個数である。
[0032] Lが変化せず、復号されている入力シンボルが0であると仮定すると、Valの値は変化しない。したがって、セクションAのすべてのブロック復号に対して復号されるべき「0」の個数を決定するための並列比較(parallel comparison)のセットは、次のようになる。
[0033] 上の式2.1〜2.Nの各々は、並行して評価されてよく(たとえば、並列復号のブロック)、最初の無効な条件(すなわち、Nの最低値にとって無効な式)がNの値を与える。たとえば、式2.3が最初の無効な式である場合、N=3である。したがって、並行して動作させられてよい式2.Nの数(たとえば、そうした数は、使用される復号ハードウェアに依存し得、そうした復号ハードウェアは、説明される技法を実行するように設計および/またはプログラムされた任意の好適な形態の専用処理ハードウェアであってよい)に応じて、いくつかのシンボルが単一のクロックサイクルの中で復号され得る。詳細には、行の中の同数の連続する優勢シンボルと、後続の単一の劣勢シンボルが、単一のクロックサイクルの中で復号され得る。代替として、復号され得る行の中の連続する優勢シンボルの個数がハードウェア制約によって限定され、劣勢シンボルが到達されない(すなわち、比較のいずれも無効でない)場合、その最大個数の連続する優勢シンボルが復号される。したがって、セクションAのブロック反復の数(たとえば、並列比較が行われる回数)は、説明される技法に基づくと、連続的に符号化された優勢シンボルの個数に依存し、そのことは、シンボルを復号しセクションAを実行するレートが着信符号化シンボルのレートに近似的に比例し得ること(たとえば、符号化シンボルごとに、復号のために1クロックサイクル)を意味する。
[0034] さらに、擬似コードBに記載されるデコーダアルゴリズムのセクションBも、並行して評価され得る。詳細には、セクションBにおいて実行される計算は、値のビットシフト(bit shift)、補完(complement)、および比較(comparison)に限定される。したがって、並列ブロック(parallel block)(すなわち、並列計算論理(parallel computed logic))としてセクションBの計算を実行するために、組合せ論理(たとえば、説明される技法を実行するように設計および/またはプログラムされた任意の好適な形態の専用処理ハードウェア)が実装され得る。
[0035] たとえば、セクションBを計算するために2つの並列ブロックが使用される場合、セクションBを計算するための第1のブロックは、セクションBのwhileループの第1の動作を計算するように示されるような、セクションBのアルゴリズムを実装するための組合せ論理から作られることになる。セクションBを計算するための第2のブロックは、先読み論理(look ahead logic)を含むことになり、セクションBのwhileループの第2の動作に対するセクションBの、1)whileループの第1の動作によるUおよびLの1ビット左シフトを伴う、および2)whileループの第1の動作によるUおよびLの1ビット左シフトならびにU、L、およびTのMSBの補完も伴う、2つの可能な分岐を計算することになる。最終の結果として使用される、セクションBを計算するための第2のブロックの結果は、セクションBを計算するための第1のブロックの結果に基づくことになる(たとえば、キャリーチェーン論理(carry chain logic)と同様に)。したがって、セクションBの2つのパスの計算は、単一のクロックサイクルの中で実行され得る。
[0036] 同様に、単一のクロックサイクルの中で計算され得るセクションBのパスの数を増やすために、セクションBを計算するための任意の数の追加の並列ブロックが使用され得る。追加の並列ブロックは、whileループのその動作(すなわち、第1、第2、第3、第4などの)において可能な分岐のすべてを実行および計算するように構成されることになる。たとえば、セクションBを計算するための第3のブロックは、whileループの第3の動作に対応する4つの可能な分岐(すなわち、whileループの2つの可能な第2の動作の各々によるUおよびLの1ビット左シフトを伴う、およびwhileループの2つの可能な第2の動作の各々によるUおよびLの1ビット左シフトならびにU、L、およびTのMSBの補完も伴う)を計算することを必要とすることになる。計算される最終の並列ブロックの結果は、前の並列ブロックの結果に基づいて選択されることになる(すなわち、最終ブロックは前のブロックに基づいており、前のブロックは、その前のブロックに基づいているなど)。わかるように、セクションBを計算するために使用される並列ブロックの数を増やすために、引き続くブロックごとに論理が指数関数的に増大する(すなわち、第1のブロックの論理要件が1つと見なされると仮定すると、各ブロックの論理要件は2^xであり、ただし、xはブロック数1、2、3、4などである)。
[0037] さらに、セクションBを処理するために並列ブロックを使用することによって、セクションBの反復の総数は、復号されている符号化シンボルの個数に近似的に等しくなり得る。
[0038] セクションAのための並列比較および/またはセクションBにおけるブロックの並列処理を実行するために使用される論理の量(たとえば、ハードウェアにおける並列構成要素の量)が、ハードウェアコストと性能との間の適切な均衡を見つけるためのテストに基づいて選択され得ることに留意されたい。たとえば、論理の量は、実装のための技術(たとえば、DSP、FPGAなど)の選択およびコーディングされているデータのタイプに応じて変わり得る。
[0039] 上記の例では、レジスタUのビット幅は10ビットである。したがって、任意の時点において必要とされるセクションBの反復の数は、10未満であることになる。したがって、そのような実装形態におけるセクションBのための並列ブロックの数は、10以下に限定されてよく、より詳細には、7つの並列ブロックの使用を上回る著しい性能利点があり得ないとき、7に設定されてよい。
[0040] 復号について説明したブロック並列処理に基づくと、セクションBの反復の総数は、復号されるべき符号化シンボルの総数に等しい。したがって、セクションAと同様に、セクションBを実行するレートは、着信符号化シンボルのレートに近似的に比例し得る(たとえば、符号化シンボルごとに、実行のために1クロックサイクル)。したがって、組み合わせられたセクションAとセクションBにとって符号化シンボルの復号レートは、符号化シンボルレート(たとえば、復号されている符号化シンボルの個数)に近似的に正比例する。いくつかの実施形態では、セクションAとセクションBの両方の反復の計算は、単一のクロックサイクルの中で一緒に計算され得る。
[0041] 上記で説明した並列処理技法を使用することによる算術コーディングベースのコーディング技法を使用して符号化された、ビデオデータを含むデータを復号するための技法は、乗算器ベースのコーディング技法(multiplier based coding technique)に関して説明される。ただし、本明細書で説明するように、類似の技法が、倍数なしベースのコーディング技法(multiple-free based coding technique)に適用され得る。
[0042] 一例では、本明細書におけるデータを復号するための技法は、Qコーダベース乗算器なしの符号化方式(Q- coder based multiplier-free encoding scheme)を使用して符号化されたデータのために使用され得る。詳細には、上記で説明した擬似コードBの復号アルゴリズムのセクションAは、次のように計算され得る。
[0043] 上記で説明したように、セクションAでは、復号シンボルが「0」である限りLの値は変化しない。したがって、Uの値は、次のように非再帰的に復号され得る。
[0044] したがって、
[0045] 整数表現を得るためにUおよびLが2^kにスケーリングされるので、式3が書き直されてよく、ここで、UおよびLは、単位元にスケーリングされ、次いで、式の整数形式を有理形式に変換して、次の式4が導出され得る。
[0046] ただし、uおよびlは、UおよびLのスケーリングされていない値を示し、0と1との間で有界である。
[0047] Qコーダとしての類似の近似を適用すると、以下のことは真が成り立つ。
[0048] 式5の上記の条件をun+1に適用すると、以下のことが導出され得る。
[0049] 適応型Qコーダにおけるときにすべての反復に対してQが異なる場合、式6は、
となる。
[0050] これらの式6および式7の整数等価物は、次のようにTotal_Countによって(たとえば、シフト演算を実行することによって)スケーリングされることを必要とすることになる。
[0051] 乗算器ベースの手法を用いて説明したように、エンコーダ(encoder)とデコーダ(decoder)の両方においてLおよびUの整合されたトラッキングを保証するために、Unの近似は、エンコーダとデコーダの両方において適用される場合のみ有効であり得る。
[0052] Lが変化せず、復号されている入力シンボルが0であると仮定すると、Valの値は変化しない。
[0053] セクションAから、以下の比較が行われる。
[0054] さらに、
[0055] したがって、
[0056] 加えて、Qコーダ型近似を適用することによって、またUおよびLが整数表現についてのuおよびlのスケーリングされたバージョンであるので、以下のことは真が成り立つ。
[0057] したがって、セクションAのすべてのブロック復号に対して復号されるべき0の個数を決定するための並列比較のセットは、次のように行われる。
[0058] 変数Qに対して、比較は、
となる。
[0059] 上の式11.1〜11.nの各々は、並行して評価されてよく(たとえば、並列復号のブロック)、最初の無効な条件(すなわち、nの最低値にとって無効な式)がnの値を与える。たとえば、式11.3が最初の無効な式である場合、n=3である。したがって、並行して動作させられてよい式11.nの数(たとえば、そうした数は、使用される復号ハードウェアに依存し得、そうした復号ハードウェアは、説明される技法を実行するように設計および/またはプログラムされた任意の好適な形態の専用処理ハードウェアであってよい)に応じて、いくつかのシンボルが単一のクロックサイクルの中で復号され得る。詳細には、行の中の同数の連続する優勢シンボルと、後続の単一の劣勢シンボルが、単一のクロックサイクルの中で復号され得る。代替として、復号され得る行の中の連続する優勢シンボルの個数がハードウェア制約によって限定され、劣勢シンボルが到達されない(すなわち、比較のいずれも無効でない)場合、その最大個数の連続する優勢シンボルが復号される。したがって、セクションAのブロック反復の数(たとえば、並列比較が行われる回数)は、説明される技法に基づくと、連続的に符号化された優勢シンボルの個数に依存し、そのことは、シンボルを復号しセクションAを実行するレートが着信符号化シンボルのレートに近似的に比例し得ること(たとえば、符号化シンボルごとに、復号のために1クロックサイクル)を意味する。
[0060] 別の例では、本明細書におけるデータを復号するための技法は、適応型Qコーダベース乗算器なしの符号化方式(Adaptive Q- coder based multiplier-free encoding scheme)を使用して符号化されたデータのために使用され得る。たとえば、JPEG Qコーダは、事前計算されたQ値のテーブルを使用し、そうしたQ値は、区間の再正規化(たとえば、復号アルゴリズムのセクションBの実行)が行われるたびに使用される。JPEGによって使用されるテーブルは、112エントリを有し得る。
[0061] 本明細書で説明される技法によれば、テーブルにおいて、Qは、0.5に初期化されてよく、復号されるべきすべての新たな入力符号化シンボルに対して修正される代わりに、再正規化(re-normalization)(すなわち、セクションBの実行)が行われるたびに修正されてよい。符号化シンボルから優勢シンボルが復号された後、テーブルは、Qの値を減らすことによって、次の復号シンボルが優勢シンボルである尤度(likelihood)を変更する。符号化シンボルから劣勢シンボルが復号された後、テーブルは、次の復号シンボルが優勢シンボルである尤度を、Qの値を増やすことによって変更する。
[0062] 復号アルゴリズムのセクションBに入っているときしかQの値が更新されないので、このことは、セクションAだけを実行している間はQの値が変化しないことを暗示する。したがって、次の式12および式13は、適応型Qコーダベースの符号化シンボルを復号するために整数形式で使用され得る(ここで、UおよびLはTotal_Countだけスケーリングされる)。
[0063] これらは、Qコーダベースの符号化シンボルを復号することに関して説明した式8および式9と同じであり、したがって、式11.nを使用する同じ比較が、符号化シンボルを復号するためにセクションAを実行するために使用され得る。
[0064] 適応型QコーダおよびQコーダベースのコーディング技法に関して説明される例示的な復号技法のために使用されるQコーダ近似は、以下の分析に基づいて有効である。
[0065] 復号データストリングの中の劣勢シンボル(たとえば、1)としての真の確率をq、および乗算器なしの手法の例から並列処理技法を使用する算術復号(arithmetic decoding)への近似において使用される確率をQとする。したがって、乗算器なしの式6のスケーリングされていないバージョンは、次のようになる。
[0066] セクションAに入っている間の区間をAi、およびセクションAから出ているときの区間をAiiとすると、区間の変化は、式14に基づいて次のように計算される。
[0067] qが劣勢シンボルとしての真の確率であるので、セクションAの中にある間、シーケンスの中にn個の優勢シンボル0を有する確率Pmpsrは、式14に基づいて次のように計算され得る。
[0068] qとしての小さい値に対して、以下の近似が行われ得る。
[0069] 等しい数の優勢シンボルおよび劣勢シンボルの再正規化がある場合、Pmpsr=0.5である。したがって、
[0070] 式17および式19を使用し、Qについて解くと、以下のことが導出される。
[0071] ΔAが、通常、 .75未満(すなわち、約 .639またはln(2))であると仮定すると、理論的にQ≒qであり、近似は、したがって、近似は真が成り立つ。
[0072] ΔAの大きさは再正規化のタイプに依存するので、最後に優勢シンボルの再正規化が生じた場合、ΔAは0.75に近い。さらに、最後に劣勢シンボルが出現した場合、ΔAは、通常、0.75よりもいくぶん小さい。さらに、Qが大きすぎる場合、Pmpsrも大きく、アルゴリズムは、Qとしてのもっと小さい値に移動する傾向がある。反対に、Qが小さすぎる場合、Pmpsrは小さく、アルゴリズムは、Qとしてのもっと大きい値に移動する傾向がある。したがって、アルゴリズムは、Q≒qという場合に適合し、そうした場合に近似的に近く均衡する。
[0073] 本開示に基づいて当業者が理解するように、符号化技法および復号技法が、本明細書で説明されるようなシステムおよび方法の異なる実施形態において実装され得ることに留意されたい。さらに、実装される符号化技法および復号技法は、擬似コードAおよび擬似擬似コードBに関係し本明細書で説明される例(たとえば、乗算器ベースの手法、乗算器なしベースの手法)のいずれか、または任意の類似のコーディング技法に基づいてよく、システムおよび方法は、1つまたは複数の符号化シンボルに基づいて複数の並列数値比較を実行することによって、1つまたは複数の復号シンボルの系列の中の連続する優勢シンボルの個数を決定する。
[0074] 図1は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法を利用および実装し得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。ビデオデータは、擬似コードAなどによる算術コーディングベースのコーディング技法または類似のコーディング技法を用いて、本明細書で説明されるように符号化され得る。ビデオデータは、擬似コードBなどによる算術コーディングベースのコーディング技法または類似のコーディング技法を用いて、本明細書で説明されるように復号され得る。具体的には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
[0075] 宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が宛先デバイス14にリアルタイムで符号化されたビデオデータを直接送信することを可能にする通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信標準規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、任意のワイヤレスまたは有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0076] いくつかの例では、符号化されたデータは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、記憶デバイスから入力インターフェースによってアクセスされ得る。記憶デバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することができ、その符号化されたビデオデータを宛先デバイス14に送信することができる、任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワークアタッチストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した、両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0077] 本開示の技法は、ワイヤレスの適用例または設定に必ずしも限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話などの応用をサポートするために、一方向または両方向のビデオ送信をサポートするように構成され得る。
[0078] 図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、擬似コードAに関して説明されたものと類似の符号化技法などの、本明細書で説明される算術コーディングのための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0079] 図1の示されるシステム10は一例にすぎない。本明細書で説明される算術コーディング技法を利用するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法は、ビデオ符号化デバイスによって実行されるが、本技法は、「コーデック」と通常は呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はまた、ビデオプリプロセッサ、または、さらにビデオデータに限定されない全般的なエンコーダ/デコーダによって実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14への送信のためのコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス12とビデオデバイス14との間で一方向または双方向のビデオ送信をサポートし得る。
[0080] ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータにより生成されたビデオとの組合せを生成し得る。いくつかの場合には、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ電話を形成し得る。しかしながら、上述のように、本開示で説明される技法は、全般にビデオコーディング、またはコーディングにさえ適用可能であることがあり、ワイヤレスおよび/または有線の適用例に適用されることがある。各々の場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、その後、出力インターフェース22によってコンピュータ可読媒体16に出力され得る。
[0081] コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくは有線ネットワーク送信などの一時媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示されず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備などの、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを含んでいるディスクを製造し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0082] 宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、ビデオエンコーダ20によって定義されビデオデコーダ30によっても使用される、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
[0083] 図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合されることがあり、共通のデータストリームまたは別個のデータストリームの中でオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0084] ビデオエンコーダ20およびビデオデコーダ30(または、並列処理技法を使用する算術コーディングベースのコーディング技法に関する、本明細書で説明される技法を実装する任意のエンコーダもしくはデコーダ)は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、適切な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されることがある。
[0085] 本開示は、一般に、ビデオエンコーダ20が、ビデオデコーダ30などの別のデバイスにある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、全般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで発生し得る。代替として、そのような通信は、符号化時に符号化されたビットストリームにおいてシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間の長さにわたって行われることがあり、次いで、シンタックス要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出されることがある。
[0086] ビデオエンコーダ20およびビデオデコーダ30は、ビデオコーディング規格に従って動作し得る。Joint Collaboration Team on Video Coding (JCT−VC)、ならびにITU−T Video Coding Experts Group (VCEG)およびISO/IEC Motion Picture Experts Group (MPEG)のJoint Collaboration Team on 3D Video Coding Extension Development (JCT−3V)によって開発された例示的なビデオコーディング規格は、その範囲拡張と、マルチビュー拡張(MV−HEVC)とスケーラブル拡張(SHVC)とを含む、高効率ビデオコーディング(HEVC)またはITU−T H.265を含む。完成したHEVC規格文書は、「ITU−T H.265、SERIES H:AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services−Coding of moving video−High efficiency video coding」、国際電気通信連合(ITU)の電気通信標準化部門、2013年4月として公開されている。代わりに、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)と拡張を含む、ISO/IEC MPEG−4 VisualおよびITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られている)などの、他のプロプライエタリ規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。たとえば、本開示の技法は、ITU−T H.266などの、様々な他のプロプライエタリもしくは非プロプライエタリビデオコーディング技法または後続の規格とともに使用され得る。
[0087] 図2は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法を利用および実装し得る、ビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースコーディングモードのいずれかを指すことがある。
[0088] 図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、ビデオデータメモリ38と、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット(entropy encoding unit)56とを含む。そして、モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、分割ユニット48とを含む。ビデオブロックの再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構築されたビデオからブロッキネスアーティファクト(blockiness artifact)を除去するためにブロック境界をフィルタリングするための、(図2に示されていない)デブロッキングフィルタ(deblocking filter)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタリングする。追加のフィルタ(ループ内またはループ後)もデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
[0089] 符号化プロセスの間に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。ビデオデータメモリ38は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ38に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、たとえば、イントラコーディングモードまたはインターコーディングモードで、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する、DPBと呼ばれることがある。ビデオデータメモリ38および参照ピクチャメモリ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ38および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ38は、ビデオエンコーダ20の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[0090] 動き推定ユニット42および動き補償ユニット44は、時間的予測を行う(provide)ために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代わりに、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータの各ブロックに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0091] その上、区分ユニット48は、以前のコーディングパスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUをサブCUに区分することを示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0092] モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモード、イントラまたはインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器50に提供し、参照フレームとして使用するための符号化されたブロックを再構築するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器62に提供し得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素を、エントロピー符号化ユニット56に与える。
[0093] 動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコーディングされたユニット)内でコーディングされている現在のブロックに対する相対的な、参照フレーム(または他のコーディングされたユニット)内の予測ブロックに対する相対的な現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分尺度(difference metrics)によって決定され得るピクセル差分に関して、コーディングされるべきブロックとよく一致することが判明しているブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数のピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0094] 動き推定ユニット42は、PUの位置を参照ピクチャの予測的ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されることがあり、それらの各々が、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを特定する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送る。
[0095] 動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUの動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックを位置特定し得る。加算器50は、以下で説明されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方について、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際のビデオデコーダ30による使用のために、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
[0096] イントラ予測ユニット46は、上で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択することができる。
[0097] たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析(rate-distortion analysis)を使用してレートひずみ値を計算し、テストされたモードの間で最も良好なレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに、符号化されたブロックを生成するために使用されるビットレート(bitrate)(すなわち、ビット数(a number of bits))を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比を計算し得る。
[0098] ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックのための符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを、送信されるビットストリームに含め得る。
[0099] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似する変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTに概念的に類似する他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプ変換も使用され得る。いずれの場合でも、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、ピクセル値領域からの残差情報を、周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてと関連付けられるビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を実行し得る。代わりに、エントロピー符号化ユニット56が走査を実行し得る。
[0100] 量子化の後に、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、Qコーディング(Q-coding)、適応型Qコーディング、算術コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。詳細には、いくつかの実施形態では、エントロピー符号化ユニット(entropy encoding unit)56は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法に従って、ビデオデータ(たとえば、量子化変換係数)をコーディングするように構成され得る。たとえば、いくつかの実施形態では、エントロピー符号化ユニット56は、本明細書で説明されるような擬似コードAに基づいて算術コーディング技法を実装するように構成される。エントロピー符号化ユニット56は、エントロピー符号化ユニット56および対応するデコーダにおけるレジスタ値の整合されたトラッキングを保証するために、擬似コードAなどにおけるいくつかの値または式を近似するためのいくつかの式を使用するように構成され得る。たとえば、エントロピー符号化ユニット56は、式1、式8、式9、式10、式12、および式13のうちの1つまたは複数を利用または実装するように構成され得る。
[0101] エントロピー符号化ユニット56によるエントロピーコーディングに続いて、1つまたは複数の符号化シンボル(たとえば、劣勢シンボルおよび優勢シンボル)のストリングを備える符号化ビットストリームが、別のデバイス(たとえば、ビデオデコーダ30)へ送信されてよく、または後で送信もしくは取出しができるようにアーカイブされてよい。
[0102] 逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構築する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のフレームのうちの1つの予測ブロックに加えることによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構築されたビデオブロックを生成するために、動き補償ユニット44によって生成された動き補償予測ブロックに、再構築された残差ブロックを加える。再構築されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0103] 図3は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法を利用および実装し得る、ビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、ビデオデータメモリ68と、エントロピー復号ユニット(entropy decoding unit)70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて、予測データを生成することができるが、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて、予測データを生成することができる。
[0104] 復号プロセス中、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックと関連するシンタックス要素とを表す1つまたは複数の符号化シンボル(たとえば、劣勢シンボルおよび優勢シンボル)のストリングを備える符号化ビデオビットストリームを、ビデオエンコーダ20から受信する。ビデオデータメモリ68に記憶されるビデオデータは、たとえば、コンピュータ可読媒体から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ68は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コーディング済みピクチャバッファ(CPB:coded picture buffer)を形成し得る。参照ピクチャメモリ82は、たとえば、イントラコーディングモードまたはインターコーディングモードで、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する、DPBと呼ばれることがある。ビデオデータメモリ68および参照ピクチャメモリ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ68および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ68は、ビデオデコーダ30の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[0105] ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。詳細には、いくつかの実施形態では、エントロピー復号ユニット(entropy decoding unit)70は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法に従って、ビットストリームを復号するように構成され得る。たとえば、いくつかの実施形態では、エントロピー復号ユニット70は、本明細書で説明されるような擬似コードBに基づいて算術復号技法を実装するように構成される。エントロピー復号ユニット70は、エントロピー復号ユニット70および対応するエントロピー符号化ユニット56におけるレジスタ値の整合したトラッキングを保証するために、擬似コードBなどにおけるいくつかの値または式を近似するためのいくつかの式を使用するように構成され得る。たとえば、エントロピー復号ユニット70は、式1、式8、式9、式10、式12、および式13のうちの1つまたは複数を利用または実装するように構成され得る。さらに、エントロピー復号ユニット70は、ビットストリームを復号するために、擬似コードBなどに関する、本明細書で説明されるような並列処理技法を使用するように構成され得る。たとえば、エントロピー復号ユニット70は、復号されるべき連続する優勢シンボルの個数をビットストリームに基づいて決定するために、複数の並列数値比較(たとえば、式2.Nおよび/または11.n)を実行するように構成され得る。したがって、エントロピー復号ユニット70は、近似的にビットストリームのデータレートで、擬似コードBのセクションAに従ってシンボルを復号するように構成され得る。
[0106] 追加または代替として、エントロピー復号ユニット70は、本明細書で説明されるような擬似コードBのセクションBに従って、復号すべきシンボルを選択する(たとえば、復号のためにビットストリームから追加のシンボルを読み取る)ために並列ブロックを実装するように構成される。したがって、エントロピー復号ユニット70は、近似的にビットストリームのデータレートで、擬似コードBのセクションBを実行するように構成され得る。さらに、エントロピー復号ユニット70は、セクションAおよびセクションBの並列処理の反復を単一のクロックサイクルの中で実行するように構成され得る。
[0107] エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0108] ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックの予測データを生成し得る。ビデオフレームが、インターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックの予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づくデフォルトの構築技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
[0109] 動き補償ユニット72は、動きベクトルと他のシンタックス要素とを構文解析することによって現在のビデオスライスのビデオブロックの予測情報を決定し、この予測情報を使用して、復号されている現在のビデオブロックの予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数に対する構築情報と、スライスの各々のインター符号化されたビデオブロックの動きベクトルと、スライスの各々のインターコーディングされたビデオブロックのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0110] 動き補償ユニット72は、補間フィルタに基づいて補間を実行することもできる。動き補償ユニット72は、参照ブロックのサブ整数ピクセルの補間された値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ20によって使用された補間フィルタを使用することができる。この場合に、動き補償ユニット72は、受け取られたシンタックス要素から、ビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用することができる。
[0111] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化された変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックに対してビデオデコーダ30によって計算される量子化パラメータQPYを使用することを含み得る。
[0112] 逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0113] 動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックの予測ブロックを生成した後に、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタリングする、デブロッキングフィルタも適用され得る。他のループフィルタ(コーディングループの中、またはコーディングループの後のいずれかにおける)も、ピクセルの遷移を平滑化し、または場合によってはビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ内の復号されたビデオブロックは次いで、参照ピクチャメモリ82内に記憶され、参照ピクチャメモリ82は、後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で提示するための、復号されたビデオを記憶する。
[0114] 図4は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法を利用および実装し得る、デコーダ400の一例を示すブロック図である。たとえば、デコーダ400は、エントロピー復号ユニット70の一例であり得る。
[0115] 図示のように、デコーダ400は、バッファ(buffer)405(または、他のタイプの適切なメモリ)を含む。図示のように、バッファ405は、先入れ先出し(FIFO)バッファである。バッファ405は、算術コーディングベースのコーディング技法を使用して符号化された符号化シンボルのストリングを備える符号化データストリームのクロックサイクルごとに、M個のシンボル(たとえば、ビット)を受信するように構成され得る(たとえば、擬似コードAに基づいて、またバッファ405はレジスタTに相当し得る)。符号化シンボルのストリングは、1つまたは複数の復号シンボルの系列を表し得、1つまたは複数の復号シンボルの各々は、優勢シンボル(たとえば、0)および劣勢シンボル(たとえば、1)のうちの一方を備える。
[0116] デコーダ400は、並列比較ユニット(parallel comparison unit)410と、平行シフトおよび補完ユニット(parallel shift and complement unit)415とをさらに含み得る。並列比較ユニット410は、擬似コードBのセクションAに従ってデータを復号するための1つもしくは複数の並列処理技法、または類似の並列処理技法を実装するように構成され得る。平行シフトおよび補完ユニット415は、本明細書で説明されるような擬似コードBのセクションB、または類似の並列処理技法に従ってシンボルを復号するための、並列ブロックを実装するように構成され得る。
[0117] たとえば、並列比較ユニット410は、バッファ405からの符号化シンボル、ならびにレジスタからの変数および値(たとえば、擬似コードBからの、説明されたように初期化され得るL、U、Cum_count()、Count_0、Total_Countなど)を含む入力を、入力として受信するように構成され得る。並列比較ユニット410は、(たとえば、式2.Nおよび/または11.nなどにおける)複数の並列数値比較を実行することによって、1つまたは複数の復号シンボルの系列の中の連続する優勢シンボルの個数を決定するために、受信された入力を使用するように構成され得る。並列比較ユニット410は、複数の並列数値比較に基づいて、1つまたは複数の復号シンボルの系列のシンボルのグループを出力するために符号化シンボルのうちの1つまたは複数を復号するように構成され得、シンボルのグループは、その個数の連続する優勢シンボルを含む。シンボルのグループはまた、式2.Nおよび式11.nに関して説明されたように、その個数の連続する優勢シンボルに後続する1つの劣勢シンボルを含み得る。
[0118] 並列比較ユニット410はまた、擬似コードBのセクションAのレジスタの中の値(たとえば、LおよびU)を更新するための他の計算を実行するように構成され得る。平行シフトおよび補完ユニット415は、本明細書で説明されるような擬似コードBのセクションBに従って、復号すべきシンボルを選択する(たとえば、復号のために符号化データストリームから追加のシンボルを読み取る)ための並列ブロックを実装するために、更新されたレジスタ値、およびバッファ405からの入力を、入力として受信するように構成され得る。並列比較ユニット410ならびに平行シフトおよび補完ユニット415は、両方が(並列比較(parallel comparison)ならびに並列ブロックシフト(parallel block shift)および補完(complement)を実行することを含む)単一の反復を単一のクロックサイクルの中で一緒に実行するように構成され得る。したがって、デコーダ400は、本明細書で説明されるような並列処理技法を使用することによる算術コーディングベースのコーディング技法を使用して符号化されたデータを復号するように構成される。
[0119] 図5は、圧縮データを復号するためのプロセス500のフローチャートの図である。プロセス500は、本明細書で説明されるデコーダ400などの任意の好適なデコーダにおいて実装され得る。図示のように、ブロック505において、デコーダは、算術コーディングベースのコーディング技法を使用して符号化された符号化シンボルのストリングを備えるデータストリームの少なくとも一部分を、バッファの中に受信する。符号化シンボルのストリングは、1つまたは複数の復号シンボルの系列を表す。1つまたは複数の復号シンボルの各々は、優勢シンボルおよび劣勢シンボルのうちの一方を備える。
[0120] さらに、ブロック510において、デコーダは、符号化シンボルのうちの1つまたは複数に基づいて、(たとえば、式2.Nおよび/または11.nなどにおける、また擬似コードBのセクションAに関して説明されたような)複数の並列数値比較を実行することによって、1つまたは複数の復号シンボルの系列の中の連続する優勢シンボルの個数を決定する。
[0121] 引き続き、ブロック515において、デコーダは、複数の並列数値比較に基づいて、1つまたは複数の復号シンボルの系列のシンボルのグループを復号する。シンボルのグループは、その個数の連続する優勢シンボルを備える。シンボルのグループはまた、式2.Nおよび式11.nに関して説明されたように、その個数の連続する優勢シンボルに後続する1つの劣勢シンボルを含み得る。
[0122] さらに、ブロック520において、デコーダは、レジスタの中の値を更新するための他の計算を実行する(たとえば、擬似コードBのセクションAに関して説明されたように)。
[0123] ブロック525において、デコーダは、復号すべきもっと多くの任意の符号化シンボルがデータストリームの中にあるかどうかを決定する。ブロック525において、復号すべき追加の符号化シンボルがないと決定される場合、プロセスは終了する。ブロック525において、復号すべき追加の符号化シンボルがあると決定される場合、プロセスはブロック530に進む。
[0124] ブロック530において、デコーダは、レジスタの中の値を更新するとともに追加の符号化シンボルをデータストリームからバッファの中に読み取るために、並列処理(parallel processing)を使用する。たとえば、デコーダは、いくつかのレジスタ値のシフトおよび補完を実行し得、追加の符号化シンボルをデータストリームからバッファの中にどのように読み取るべきかを決定するために、いくつかの基準が満たされるかどうかをレジスタ値に基づいてチェックし得る(たとえば、擬似コードBのセクションBに関して説明されたように)。プロセス500は、次いで、ブロック510に戻り得る。
[0125] 上記で説明されたように、算術コーディング技法に基づいて復号のための並列処理技法を実装するデコーダに対して、擬似コードBのセクションAとセクションBとを実装するための並列化の程度は、コスト、効率改善、および本技法を実装するために使用されるハードウェアのタイプに基づく設計選択である。たとえば、デコーダ400において、バッファ405のサイズ、並列比較ユニット410が並行して行うように構成されている比較の数、平行シフトおよび補完ユニット415が並行して行うように構成されている並列ブロック反復の数に関して、選択が行われ得る。これらの選択は、データを復号するのに必要とされるクロックサイクル(clock cycle)の数に影響を及ぼし得る。
[0126] いくつかの実施形態では、並列比較ユニット410が並行して行うように構成されている比較の数は6に設定され、平行シフトおよび補完ユニット415が並行して行うように構成されている並列ブロック反復の数は7に設定され、並列比較ユニット410ならびに平行シフトおよび補完ユニット415は、単一のクロックサイクルの中で動作するように構成される。したがって、良好な復号レートを依然として達成しながら、バッファ405のサイズが低減され得る。さらに、入力シンボルレートは、クロックサイクル当り単一の入力シンボルであってよく、またはクロックサイクル当り2つの入力シンボルであってよい(たとえば、デュアルデータレート(DDR)システムにおいて)。いくつかの実施形態では、並列比較ユニット410の複雑さを低減するために、並列比較ユニット410が並行して行うように構成されている比較の数は4に設定される。さらに、ハードウェアの複雑さおよびコスト対性能は、依然として良好な性能をもたらし得る。他の設計選択が行われてよいが、これらの特定の設計選択または類似の設計選択が、性能対複雑さに関していくつかの利点を与え得ることを、当業者は認識するだろう。
[0127] 例に応じて、本明細書で説明された技法のうちのいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行されることがあり、追加され、統合され、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて同時に実行され得る。
[0128] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベース処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0129] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
[0130] 命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積された論理回路もしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内で与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0131] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられ得るか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
[0132] 様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内にある。