(57)【特許請求の範囲】
【請求項１】
変換係数を復号化する方法であって、
入力圧縮ビットストリームの連続したビットを復号化するステップと、
前記復号化されたビットの数を用いて第１のシンボル値を計算するステップと、
前記復号化されたビットの総数が指定されるビットカウントよりも少ない場合は、前記第１のシンボル値を返すステップと、
前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、第２のシンボル値を計算するステップと、
前記第２のシンボル値を返すステップと
を有し、
前記連続したビットを復号化するステップは、
前記入力圧縮ビットストリームにおいて連続した最確シンボルビットの最小連続数を計算するステップと、
前記連続した最確シンボルビットにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進めるステップと
を有する、方法。
【請求項２】
前記第１のシンボル値を計算するステップは、
前記復号化されたビットの総数に１を加えるステップ
を更に有する、請求項１に記載の方法。
【請求項３】
前記第２のシンボル値を計算するステップは、
指数ゴロム符号を用いて前記入力圧縮ビットストリームを復号化するステップと、
前記指数ゴロム符号による復号化によって生成される結果に前記第１のシンボル値を加えるステップと
を更に有する、請求項１に記載の方法。
【請求項４】
前記入力圧縮ビットストリームは、復号化されたＣＡＢＡＣビットストリームである、
請求項１に記載の方法。
【請求項５】
前記連続したビットを復号化するステップは、
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取るステップと、
前記レンジ値及び前記オフセット値を用いてサブレンジ値を計算し、前記連続した最確シンボルビットの最小連続数が前記サブレンジ値、前記レンジ値及び前記オフセット値を用いて計算されるようにするステップと、
前記最小連続数が零よりも多い場合は、最確シンボル値に等しい値を有する解凍出力ビットを返すステップと、
前記最小連続数が零である場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返すステップと
を更に有する、請求項１に記載の方法。
【請求項６】
前記最確シンボル値に等しい値を有する解凍出力ビットを返すステップは、
前記レンジ値から前記サブレンジ値を減じることによって新たなレンジ値を計算するステップと、
繰り込み処理を行うステップと、
前記繰り込み処理の完了時に、零ビットが前記連続した最確シンボルビットにおいてあるかどうかを確認するステップと、
零ビットがない場合は、前記連続した最確シンボルビットにおける夫々のビットについて、前記ＣＡＢＡＣデコーダの前記状態機械を繰り返し進めるステップと、
零ビットがあるか又は指定されるビットカウントが達成される場合は、前記復号化されたビットの総数を返すステップと
を更に有する、請求項５に記載の方法。
【請求項７】
前記繰り込み処理を行うステップは、
前記レンジ値が所定のレンジ値より大きいか又は等しくなるまで、前記入力圧縮ビットストリームから連続して新たなビットを読み出すステップ
を有する、請求項６に記載の方法。
【請求項８】
コンピュータによって実行される場合に変換係数を復号化する方法を実施する命令を記憶したコンピュータ可読媒体であって、前記方法は、
入力圧縮ビットストリームの連続したビットを復号化するステップと、
前記復号化されたビットの数を用いて第１のシンボル値を計算するステップと、
前記復号化されたビットの総数が指定されるビットカウントよりも少ない場合は、前記第１のシンボル値を返すステップと、
前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、第２のシンボル値を計算するステップと、
前記第２のシンボル値を返すステップと
を有し、
前記連続したビットを復号化するステップは、
前記入力圧縮ビットストリームにおいて連続した最確シンボルビットの最小連続数を計算するステップと、
前記連続した最確シンボルビットにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進めるステップと
を有する、コンピュータ可読媒体。
【請求項９】
変換係数を復号化するデコーダであって、
入力圧縮ビットストリームの連続したビットを復号化するＣＡＢＡＣデコーダと、
前記復号化されたビットの数に１を加えることによって第１のシンボル値を計算する第１の加算器と、
前記復号化されたビットの総数が指定されるビットカウントに等しいかどうかを決定するコンパレータと、
前記復号化されたビットの総数が指定されるビットカウントに等しい場合は、前記入力圧縮ビットストリームを復号化する指数ゴロム符号デコーダと、
前記指数ゴロム符号デコーダによって生成された結果に前記第１のシンボル値を加えることによって第２のシンボル値を生成する第２の加算器と
を有し、
前記ＣＡＢＡＣデコーダは更に、
前記入力圧縮ビットストリームにおいて連続した最確シンボルビットの最小連続数を計算し、
前記連続した最確シンボルビットにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進める
よう構成される、デコーダ。
【請求項１０】
前記ＣＡＢＡＣデコーダは更に、同じＣＡＢＡＣコンテクストを用いて同じ値を有する複数のビットを復号化するよう構成される、請求項９に記載のデコーダ。
【請求項１１】
前記ＣＡＢＡＣデコーダは更に、
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取り、
前記レンジ値及び前記オフセット値を用いてサブレンジ値を計算し、前記連続した最確シンボルビットの最小連続数が前記サブレンジ値、前記レンジ値及び前記オフセット値を用いて計算されるようにし、
前記最小連続数が零よりも多い場合は、最確シンボル値に等しい値を有する解凍出力ビットを返し、
前記最小連続数が零である場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返す
よう構成される、請求項９に記載のデコーダ。
【請求項１２】
前記最確シンボル値に等しい値を有する解凍出力ビットを返すことは、
前記レンジ値から前記サブレンジ値を減じることによって新たなレンジ値を計算することと、
繰り込み処理を行うことと、
前記繰り込み処理の完了時に、零ビットが前記連続した最確シンボルビットにおいてあるかどうかを確認することと、
零ビットがない場合は、前記連続した最確シンボルビットにおける夫々のビットについて、前記ＣＡＢＡＣデコーダの前記状態機械を繰り返し進めることと、
零ビットがあるか又は指定されるビットカウントが達成される場合は、前記復号化されたビットの総数を返すことと
を更に有する、請求項１１に記載のデコーダ。
【請求項１３】
前記繰り込み処理を行うことは、
前記レンジ値が所定のレンジ値より大きいか又は等しくなるまで、前記入力圧縮ビットストリームから連続して新たなビットを読み出すこと
を有する、請求項１２に記載のデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、ビデオデータデコーダ及びエンコーダに関し、より具体的に、そのようなデコーダ及びエンコーダを最適化する技術に関する。
【背景技術】
【０００２】
従来の技術において、最近の取り組みは、プロセッシングタスク、特に、ビデオプロセッシングタスクを並列処理にするために行われている。これは、一方では、ビデオプロセッシングが非常に計算的に費用がかかるために、しかし他方では、単一プロセッサのプロセッシング能力が更に高められ得ないために、重要なタスクになっている。最たるものは、２００８年３月にＩＴＵ−Ｔによって公開されたＨ．２６４ビデオ標準（以降“Ｈ．２６４標準”）である。高度な応用をサポートするために、Ｈ．２６４に従うデコーダ及びエンコーダは並列処理にされなければならない。並列化は、通常、単一タスクを複数のサブタスクにすることと、サブタスクを同時に処理することとを含む。
【０００３】
しかし、Ｈ．２６４デコーダ／エンコーダの実行は、ＣＡＢＡＣ（context-adaptive  binary  data  arithmetic  coding）により完全には並列処理にされ得ない。ＣＡＢＡＣは、Ｈ．２６４ビデオデコーダによって実行されるデータ圧縮／符号化処理である。ＣＡＢＡＣ処理は全く順次的である。すなわち、処理ステップごとに、必要とされる入力データは前のステップからの出力データに依存する。この依存性により、圧縮データの塊のＣＡＢＡＣ復号化処理は、サブタスクに分けられて並列プロセッサで実行され得ない。
【０００４】
１つのそのようなＣＡＢＡＣ復号化処理は、１６又は６４個の変換係数のアレイがＣＡＢＡＣデータストリームから解凍される変換係数復号化処理の間に行われる。この変換係数復号化処理の間に４×４又は８×８のサブマクロブロックアレイを復号化する動作の全体の順序は、次のステップを含む：１）非零の変換係数の総数を復号化するステップ；２）最後の非零の変換係数のインデックス値を復号化するステップ；３）全ての非零の変換係数のインデックス値を与えるバイナリマップを復号化するステップ；及び４）マップ内の夫々の非零の変換係数について、零ビットにぶつかるか又は指定された数Ｉ（例えば、Ｉ＝１４）のビットが復号化されるまで１度に１ビットを復号化し、指定された数のビットが復号化された場合は、バイパス符号化（解凍）指数ゴロム符号を用いて係数値を復号化するステップ。
【０００５】
最後のステップ（４）は、通常、指定されたビットカウント又は零ビットにぶつかるまで汎用のＣＡＢＡＣビット復号化関数においてループを実行することによって、実施される。このステップを実行する擬似コードは、次のように表され得る：
do{
bit=decode_binary_decision(CABAC,bitstream,context);
symbol=symbol+1;
}while((bit==1)&&(symbol<(unary_max-1)));
decode_binary_decisionは、その入力パラメータがＣＡＢＡＣオブジェクトと、復号化されるべき圧縮ビットストリームを復号化と、復号化データのタイプに関連するコンテクストとである汎用のＣＡＢＡＣビット復号化関数である。圧縮データストリームに含まれるデータは多種多様に存在する。例えば、そのようなデータタイプは、運動ベクトル、マクロブロックモード、予測タイプ、及びフラグを含む。夫々異なったタイプのデータは、それ自体の所定のコンテクストをＣＡＢＡＣデコーダにおいて使用する。デコーダは、夫々のビットをそのコンテクストに基づき復号化する。
【０００６】
結果として、並列プロセッシングハードウェアにおいて実行されるよう設計される高性能Ｈ．２６４ビデオデコーダについて、ＣＡＢＡＣ復号化は、多くの場合にビデオデコーダの全体的な性能を左右する性能ネックである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、ＣＡＢＡＣ復号化処理の実行を加速させる解決法を提供することが有利である。
【課題を解決するための手段】
【０００８】
本発明の特定の実施形態は、変換係数復号化処理を実行する方法を含む。当該方法は、入力圧縮ビットストリームの連続したビットを復号化するステップと、前記復号化されたビットの数を用いて第１のシンボル値を計算するステップと、前記復号化されたビットの総数が指定されるビットカウントよりも少ない場合は、前記第１のシンボル値を返すステップと、前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、第２のシンボル値を計算するステップと、前記第２のシンボル値を返すステップとを有する。
【０００９】
本発明の特定の実施形態はまた、変換係数を復号化するデコーダを含む。当該デコーダは、入力圧縮ビットストリームの連続したビットを復号化するＣＡＢＡＣデコーダと、前記復号化されたビットの数に１を加えることによって第１のシンボル値を計算する第１の加算器と、前記復号化されたビットの総数が指定されるビットカウントに等しいかどうかを決定するコンパレータと、前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、前記入力圧縮ビットストリームを復号化する指数ゴロム符号デコーダと、前記指数ゴロム符号デコーダによって生成された結果に前記第１のシンボル値を加えることによって第２のシンボル値を生成する第２の加算器とを有する。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に従って実施される変換係数復号化処理を最適化する方法を表すフローチャートである。
【図２】本発明の実施形態に従って実施される同じコンテクストを有するビットを復号化する処理を表すフローチャートである。
【図３】本発明の実施形態に従って実施される連続したビットを復号化する処理を表すフローチャートである。
【図４】本発明の実施形態に従って構成されるデコーダのブロック図である。
【発明を実施するための形態】
【００１１】
本発明と見なされる対象は、特許請求の範囲において特に指し示され、はっきりと請求される。本発明の上記の及び他の特徴及び利点は、添付の図面に関連して理解される以下の詳細な説明から明らかであろう。
【００１２】
本発明によって開示される実施形態は、単に、ここでは革新的な教示の多くの有利な使用の例である点に留意することが重要である。一般に、本願の明細書でなされている記述は、必ずしも、様々な請求される発明のいずれも制限しない。更に、幾つかの記述は、一部の発明特徴に当てはまり、他に当てはまらないことがある。一般に、別なふうに示されない限り、単数の要素は、一般性を損なうことなく複数であってよく、又その逆もある。図面において、同じ参照符号は、複数の図を通して同じ部分を参照する。
【００１３】
本発明の原理に従って、ここで開示される技術は、１６又は６４個の変換係数のアレイがＣＡＢＡＣビットストリームから解凍されるところのＨ．２６４標準において定義される変換係数復号化処理の間に行われる。具体的に、開示される技術は、零ビットにぶつかるか又は指定されたビットカウントに達するまで１度に１ビットを復号化するサブ処理を最適化するよう設計される。このサブ処理は、夫々の非零変換係数について行われる。
【００１４】
本発明の原理に従って、方法は、指定されるビットカウント又は零ビットにぶつかるまで、同じＣＡＢＡＣコンテクストを用いて、同じ値を有する連続したビットを復号化することによって達成される。この機能性は、次の擬似コードを用いて提示され得る：
symbol=1+decode_consecutive(cabac,bitstream,context,1,unary_max-1)
２段階の最適化がこのアプローチを用いて達成されることが認識されるべきである。第１段階は、汎用のＣＡＢＡＣビット復号化関数（decode_binary_decision）への反復呼び出しを除くことによって実行オーバヘッドを減らすことであり、最適化の第２段階は、同じ値を有する連続したビットを復号化することによって達成される。
【００１５】
図１は、本発明の実施形態に従って実施される変換係数復号化処理を最適化する方法を表す例となる限定されないフローチャート１００を示す。Ｓ１１０で、同じコンテクスト値を有する連続したビットを復号化する処理（decode_consecutive）が実行される。この処理は、３つの入力パラメータ、すなわち、ビットが復号化されるコンテクストへの参照と、アッシュビットストリームへの参照と、レンジ及びオフセット整数値を含むＣＡＢＡＣデコーダオブジェクトへの参照とを受け取る。ステップ１１０は、解凍ビットストリームを生成し、復号化されたビットの数を返す。本発明の実施形態に従って、decode_consecutive処理は、各繰り返しで、同じコンテクストを用いて復号化ＣＡＢＡＣビットストリームから複数の同じ値のビットを復号化する。他の実施形態に従って、decode_consecutive処理は、最小数の連続した最確シンボル（ＭＰＳ；most  probable  symbol）を計算して、タイトループにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進めることに基づく。Ｓ１１０の実行は、図２及び図３を参照して以下でより詳細に記載される。
【００１６】
Ｓ１２０で、シンボル値は、decode_consecutive処理による復号化されたビットの総数に１をプラスしたものとして計算される。すなわち、シンボル値＝総ビット＋１（Symbol_val=1+total-bits）。Ｓ１３０で、復号化されたビットの総数が指定されるビットカウント（Ｉ）に等しいかどうかが確認される。そうである場合は、実行はＳ１４０に続き、そうでない場合は、シンボル値は返され（Ｓ１６０）、実行は終了する。
【００１７】
Ｓ１４０で、圧縮ビットストリームは指数ゴロム符号（Exponetial-Golomb  code）を用いて復号化される。Ｓ１５０で、シンボル値は、Ｓ１２０で計算されたシンボル値をＳ１４０で生成された復号化されたビットストリームに加えることによって、計算される。その後、実行はＳ１６０に続く。先の記載及びフローチャート１００から理解され得るように、処理decode_consecutiveはビットストリーム内のビットごとにではなく１度しか呼び出されず、それにより変換係数復号化処理の実行を加速させる。
【００１８】
図２は、本発明の実施形態に従って実施される同じコンテクストを有するビットを復号化するdecode_consecutive処理を表す例となる限定されないフローチャートＳ１１０を示す。上述されたように、処理の入力パラメータは、コンテクストと、ビットストリームと、レンジ及びオフセット整数値を含むＣＡＢＡＣデコーダオブジェクトとである。処理は、解凍ビットストリームを生成し、復号化されたビットの数を返す。
【００１９】
ビットストリームのデータタイプは、ＣＡＢＡＣデコーダにおいてそれ自体のコンテクストを用いる。ＣＡＢＡＣデコーダにおける夫々のコンテクストは、２つの状態情報パラメータ、すなわち、コンテクストについて‘１’又は‘０’のいずれかである最確シンボル（ＭＰＳ）の値と、最確シンボルの相対的確率を示す状態整数とを有する。‘０’又は‘１’よりもむしろ、ＭＰＳ又はＬＰＳのいずれかとしてバイナリ決定を特定するために、ＭＰＳと最も確からしくないシンボル（ＬＰＳ；least  probable  symbol）とを区別することが有用である。ＣＡＢＡＣデコーダは、２つの更なるパラメータ、すなわち、コンテクストにかかわらずあらゆるビットを復号化するのに必要とされるレンジ整数及びオフセット整数を保持する。レンジ値及びオフセット値は、ＣＡＢＡＣデコーダに関する最低水準の状態情報を要約する。これら２つの値は対として使用されるべきであり、他方がなければ意味がない。
【００２０】
Ｓ２０５で、サブレンジ値は、コンテクストの状態パラメータ及びＣＡＢＡＣのレンジパラメータと用いて計算される。このステップは、粗レンジ値を計算し、その粗レンジ値及びコンテクスト状態値を用いてルックアップテーブルにおいてサブレンジ値を見つけることを含む。ステップＳ２０５のための１つの可能な実施は、Ｈ．２６４標準の２３８頁において見つけられ得る。特定のＣＡＢＡＣコンテクストの状態が最確シンボルへと大いに偏っている場合に、サブレンジ値の値は比較的小さい点に留意すべきである。Ｓ２１０で、新たなレンジ値は、サブレンジ値をＣＡＢＡＣデコーダのレンジ値から減じることによって計算される（すなわち、range=range-sub-range）。
【００２１】
Ｓ２１５で、ＣＡＢＡＣデコーダのオフセット値が計算された新たなレンジ値よりも小さいかどうかを決定するよう確認が行われる。そうである場合は、Ｓ２２０で、ＭＰＳ値と等しい値を有する解凍出力ビットが返される。次いで、Ｓ２３０で、コンテクストの状態パラメータは、例えば、状態パラメータの値を増大させることによって、最確シンボルが更に確からしいと示すよう更新される。
【００２２】
Ｓ２１５が否定的な答え（‘Ｎｏ’）となる場合は、実行はＳ２３５に続き、ＬＰＳ値と等しい値を有する解凍出力ビットが返される（すなわち、ＬＰＳ値＝１−ＭＰＳ値）。その後、Ｓ２４０で、コンテクストの状態パラメータは、最確シンボルが前よりも確からしくないと示すよう更新され、最確シンボルの値は反転されてよい。Ｓ２４５で、新たなオフセット値は、レンジ値をオフセット値から減じることによって計算される。更に、レンジ値はサブレンジ値に設定される。当業者には明らかなように、ステップＳ２１５、Ｓ２２０及びＳ２３５は算術符号化（arithmetic  coding）に基づき、これは、オフセット値及びレンジ値並びにＭＰＳ及びＬＰＳの既知の確率を用いてビットを復号化することを可能にする。
【００２３】
Ｓ２５０で、新たなレンジ値が所定のレンジ値（ＰＲＶ）よりも小さいかどうかを決定するよう確認が行われる。そうである場合は、Ｓ２５５で、レンジ値及びオフセット値は両方とも２を乗じられ、オフセット値には更に、圧縮ビットストリームから読み出された新たなビットが加えられる。その後、実行はＳ２５０に戻る。一実施形態において、ＰＲＶは、Ｈ．２６４標準において定義されるように２５６に設定される。ステップＳ２５０及びＳ２５５は、ＣＡＢＡＣデコーダによって実行される繰り込み（renormalization）処理の一部である点に留意すべきである。
【００２４】
Ｓ２５０が否定的な答え（‘Ｎｏ’）となる場合は、Ｓ２６０で、零ビットがあるかどうかを決定するよう確認が行われる。そうである場合は、Ｓ２６５で、復号化されたビットの総数が返される。更に、ＣＡＢＡＣデコーダのレンジ及びオフセットパラメータ並びにコンテクストの最確シンボル及び状態は、それらの計算された値に更新されてよい。零ビットがなかった場合は、Ｓ２７０で、復号化されたビットの総数は１だけインクリメントされる。Ｓ２７５で、復号化されるべきビットの数から１を引いたもの（例えば、Ｉ−１）について、ビットの総数が指定されるビットカウント（Ｉ）に等しいかどうかが確認され、そうである場合は、実行はＳ２６５に続き、そうでない場合は、実行はＳ２０５に戻る。
【００２５】
図３は、本発明の他の実施形態に従って実施されるdecode_consecutive処理を表す例となる限定されないフローチャートＳ１１０を示す。処理は、解凍ビットストリームを生成し、復号化されたビットの数を返す。この実施形態では、復号化は、最小数の連続した最確シンボルビットを計算して、タイトループにおける夫々のビットについて、夫々のビットの値を確認する必要なしに、ＣＡＢＡＣデコーダの状態機械を進めることに基づく。
【００２６】
Ｓ３０２で、コンテクスト並びにその状態及びＭＰＳパラメータを含む入力パラメータと、圧縮ビットストリームと、レンジ及びオフセット整数値を含むＣＡＢＡＣデコーダオブジェクトとが受け取られる。Ｓ３０５で、サブレンジ値は、ＣＡＢＡＣデコーダのレンジパラメータ及びコンテクストの状態パラメータの値を用いて計算される。Ｓ３１０で、入力ビットストリームにおける最小数の連続した最確シンボルビット（mpbits）は、サブレンジ、レンジ及びオフセット値を用いて計算される。一実施形態において、mpbitsは、次の式を用いて計算される：
mpbits={(range-offset)-1}/sub-range
Ｓ３１５で、mpbitsが０よりも大きいかどうか、すなわち、ビットストリームにおいて少なくとも１つの最確シンボルビットが存在するかどうかを決定するよう確認が行われる。そうである場合には、実行はＳ３２０に続き、そうでない場合は、Ｓ３３０で、ビットストリームにおけるビットは、ＬＰＳ値に従って、１度にビット毎に復号化される。
【００２７】
具体的に、ステップＳ３３０は、ＬＰＳ値に等しい値を有する解凍出力ビットを返すこと（Ｓ３３１）と、最確シンボルが前よりも確からしくないことを示すようコンテクストの状態及びＭＰＳ値を更新すること（Ｓ３３２）と、レンジ値をオフセット値から減じることによって新たなオフセット値を計算し、レンジ値をサブレンジ値に設定すること（Ｓ３３３）と、繰り込み処理を行うこと（Ｓ３３４及びＳ３３５）と、繰り込み処理が完了された場合に、零ビットがあるかどうかを確認すること（Ｓ３３６）と、零ビットがあった場合は、復号化されたビットの総数が返されるＳ３７０に進むことと、零ビットがなかった場合は、復号化されたビットの総数を１だけインクリメントすること（Ｓ３３７）と、復号化されたビットの総数が、復号化されるべきビットの数（Ｉ）から１を引いた指定されるビットの数に等しいかどうかを確認すること（Ｓ３３８）と、そうである場合にはＳ３７０に続き、そうでない場合にはＳ３０５に戻ることとを含む。
【００２８】
最確シンボル（ＭＰＳ）値を有する少なくとも１つのビットが存在する場合に、実行はＳ３２０に到達する。よって、ＭＰＳ値に等しい値を有する解凍出力ビットが返される。更に、Ｓ３２０で、新たなレンジ値が計算される。Ｓ３２５で、コンテクストの状態パラメータは、例えば、状態パラメータの値を増大させることによって、最確シンボルが更に確からしいことを示すよう更新される。Ｓ３４０及びＳ３４５で、繰り込み処理が上述されるように行われる。
【００２９】
新たなレンジ値よりがＰＲＶに等しいか又はそれより大きい場合は、Ｓ３５０で、零ビットがあるかどうかを決定するよう確認が行われる。そうである場合は、Ｓ３７０で、復号化されたビットの総数が返される。更に、ＣＡＢＡＣデコーダのレンジ及びオフセットパラメータ並びにコンテクストの最確シンボル及び状態は、それらの計算された値に更新されてよい。零ビットがなかった場合は、実行はＳ３６０に続き、同じ値を有するＭＰＳ連続ビットを扱う内部ループプロシージャが実行される。
【００３０】
具体的に、Ｓ３６０は、ＭＰＳ連続ビットにおける夫々のビットについて、夫々のビットの値を確認することなく、ＣＡＢＡＣデコーダの状態機械を進めることを可能にする。これは、特に、大きな値の変換係数が単身符号（unary  codes）により符号化される場合に有用である。そのような場合に、夫々のビットは、‘１’である高い確率と、‘０’である低い確率とを有する。例えば、１０の値を有する変換係数が単身符号により符号化される場合に、結果として得られるバイナリデータは１１１１１１１１１０である。Ｓ３６０の実行の間、ＣＡＢＡＣデコーダは、１のビットを復号化せずに進められ、それにより、ビットストリーム全体を復号化するのに必要とされる時間を大いに削減する。
【００３１】
Ｓ３６０の実行は、復号化されたビットの総数を１だけインクリメントし、mpbitsの値を１だけデクリメントすること（Ｓ３６１）と、復号化されたビットの総数が、復号化されるべきビットの数（Ｉ）から１を引いた指定されるビットカウントに等しいかどうかを確認すること（Ｓ３６２）と、そうである場合はＳ３７０に続き、そうでない場合は、mpbitsの値が０よりも大きいかどうかを確認すること（Ｓ３６３）と、mpbitsの値が０よりも大きい場合は、レンジ値及び状態値を用いてサブレンジ値を計算すること（Ｓ３６４）と、サブレンジ値をレンジ値から減じることによって新たなレンジ値を計算すること（Ｓ３６５）と、最確シンボルが更に確からしいことを示すようコンテクストの状態パラメータを更新すること（Ｓ３６６）と、繰り込み処理を行うこと（Ｓ３６７，Ｓ３６８）と、新たなレンジ値がＰＲＶより大きいか又は等しい場合にＳ３６１に戻ることとを含む。
【００３２】
ここで記載される最適化技術は、特に、Ｈ．２６４高品位ビデオ応用において有用であることが認識されるべきである。これは、そのような応用では、ビデオストリームが高ビットレートで符号化されるためである。符号化ストリームは、残りのデータにおいて多くの大きな値の変換係数を含む。この残りのデータは、高品位ビットストリームにおいて符号化された全データの大部分を占める。更に、大きな値の変換係数は単身符号により符号化され、各ビットは‘１’である高い確率と、‘０’である低い確率とを有する。先により詳細に述べられたように、ステップＳ３６０は、単身符号の、それにより大きな値の変換係数の復号化を加速させるよう設計された。
【００３３】
図４は、本発明の実施形態に従って実施される変換係数を復号化するデコーダ４００の例となる限定されない図である。デコーダ４００は、入力圧縮ビットストリームの連続したビットを復号化するＣＡＢＡＣデコーダ４１０を有する。ＣＡＢＣデコーダ４１０は、先の詳細に記載されたdecode_consecutiveを実行する。ＣＡＢＡＣデコーダ４１０は、２つのモードにおいて動作することができる。第１のモードは、同じコンテクストを用いて復号化ＣＡＢＡＣビットストリームから複数の同じ値のビットを復号化することを含む。第２のモードは、最小数の連続した最確シンボル（ＭＰＳ）ビットを計算して、タイトループにおける夫々のビットについて、夫々のビットの値を確認することなく、ＣＡＢＡＣデコーダの状態機械を進めることを含む。
【００３４】
デコーダ４００は、ＣＡＢＡＣデコーダ４１０によって復号化された復号化されたビットの総数に整数１を加えることによって第１のシンボル値を計算する第１の加算器４３０と、復号化されたビットの総数が指定されるビットカウントに等しいかどうかを決定するコンパレータ４２０と、復号化されたビットの総数が指定されるビットカウントに等しい場合に入力圧縮ビットストリームを復号化する指数ゴロム符号デコーダ４３０と、指数ゴロム符号デコーダ４３０によって生成された結果に第１のシンボル値を加えることによって第２のシンボル値を生成する第２の加算器４４０とを更に有する。
【００３５】
前述の記載は、本発明がとることができる多くの形態の幾つかを挙げている。前述の詳細な記載は、本発明の定義に対する限定としてではなく、本発明がとることができる選択された形態の例示として理解されるべきであると意図される。本発明の定義に対する限定は、本発明の適用範囲を定義するよう意図される全ての均等を含む特許請求の範囲のみである。
【００３６】
より望ましくは、本発明の原理は、ハードウェア、ファームウェア及びソフトウェアのあらゆる組み合わせとして実施される。更に、ソフトウェアは、望ましくは、プログラム記憶ユニット又はコンピュータ可読媒体において有形に具現されるアプリケーションプログラムとして実施される。当業者には明らかなように、“機械可読媒体”は、データを記憶することができる媒体であり、デジタル回路、アナログ回路又はそれらの組み合わせの形をとることができる。アプリケーションプログラムは、如何なる適切なアーキテクチャも有する機械にアップロードされて機械によって実行されてよい。望ましくは、機械は、１又はそれ以上の中央演算処理ユニット（ＣＰＵ）、メモリ、及び入出力インタフェースのようなハードウェアを備えるコンピュータプラットフォームで実施される。コンピュータプラットフォームは、オペレーティングシステム及びマイクロインストラクションコードを更に有してよい。ここで記載される様々な処理及び機能は、マイクロインストラクションコードの部分若しくはアプリケーションプログラムの部分のいずれか、又はそれらの組み合わせであってよく、ＣＰＵによって、そのようなコンピュータ又はプロセッサ明示的に示されていようとなかろうと、実行されてよい。更に、様々な他の周辺ユニット、例えば、データ記憶ユニット及び印刷ユニットがコンピュータプラットフォームへ接続されてよい。  
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
変換係数を復号化する方法であって、
入力圧縮ビットストリームの連続したビットを復号化するステップと、
前記復号化されたビットの数を用いて第１のシンボル値を計算するステップと、
前記復号化されたビットの総数が指定されるビットカウントよりも少ない場合は、前記第１のシンボル値を返すステップと、
前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、第２のシンボル値を計算するステップと、
前記第２のシンボル値を返すステップと
を有する方法。
（付記２）
前記第１のシンボル値を計算するステップは、
前記復号化されたビットの総数に１を加えるステップ
を更に有する、付記１に記載の方法。
（付記３）
前記第２のシンボル値を計算するステップは、
指数ゴロム符号を用いて前記入力圧縮ビットストリームを復号化するステップと、
前記指数ゴロム符号による復号化によって生成される結果に前記第１のシンボル値を加えるステップと
を更に有する、付記１に記載の方法。
（付記４）
前記入力圧縮ビットストリームは、復号化されたＣＡＢＡＣビットストリームである、
付記１に記載の方法。
（付記５）
前記連続したビットを復号化するステップは、
同じＣＡＢＡＣコンテクストを用いて同じ値を有する複数のビットを復号化するステップ
を更に有する、付記４に記載の方法。
（付記６）
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取るステップと、
サブレンジ値を計算するステップと、
前記サブレンジ値を前記レンジ値から減じることによって新たなレンジ値を計算するステップと、
前記オフセット値が前記新たなレンジ値より小さいかどうかを確認するステップと、
前記オフセット値が前記新たなレンジ値より小さい場合は、最確シンボルに等しい値を有する解凍出力ビットを返すステップと、
前記オフセット値が前記新たなレンジ値より大きいか又は等しい場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返すステップと
を更に有する付記５に記載の方法。
（付記７）
繰り込み処理を行うステップと、
零ビットがあるかどうかを確認するステップと、
零ビットがある場合は、前記復号化されたビットの総数を返すステップと、
零ビットがない場合は、前記復号化されたビットの総数をカウントするカウンタをインクリメントするステップと、
指定される最大数のビットが復号化された場合に、前記復号化されたビットの総数を返すステップと
を更に有する付記６に記載の方法。
（付記８）
前記繰り込み処理を行うステップは、
レンジ値が所定のレンジ値より大きいか又は等しくなるまで、前記入力圧縮ビットストリームから連続して新たなビットを読み出すステップ
を有する、付記７に記載の方法。
（付記９）
前記連続したビットを復号化するステップは、
前記入力圧縮ビットストリームにおいて最小数の連続した最確シンボルビットを計算するステップと、
前記連続した最確シンボルビットにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進めるステップと
を有する、付記１に記載の方法。
（付記１０）
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取るステップと、
前記レンジ値及び前記オフセット値を用いてサブレンジ値を計算するステップと、
前記入力圧縮ビットストリームにおいて最小数の連続した最確シンボルビットを計算するステップと、
前記最小数の連続した最確シンボルビットが零よりも多い場合は、最確シンボル値に等しい値を有する解凍出力ビットを返すステップと、
前記最小数の連続した最確シンボルビットが零である場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返すステップと
を更に有する付記９に記載の方法。
（付記１１）
前記最確シンボル値に等しい値を有する解凍出力ビットを返すステップは、
前記レンジ値から前記サブレンジ値を減じることによって新たなレンジ値を計算するステップと、
正規化処理を行うステップと、
前記正規化処理の完了時に、零ビットが前記連続した最確シンボルビットにおいてあるかどうかを確認するステップと、
零ビットがない場合は、前記連続した最確シンボルビットにおける夫々のビットについて、前記ＣＡＢＡＣデコーダの前記状態機械を繰り返し進めるステップと、
零ビットがあるか又は指定されるビットカウントが達成される場合は、前記復号化されたビットの総数を返すステップと
を更に有する、付記１０に記載の方法。
（付記１２）
コンピュータによって実行される場合に変換係数を復号化する方法を実施する命令を記憶したコンピュータ可読媒体であって、前記方法は、
入力圧縮ビットストリームの連続したビットを復号化するステップと、
前記復号化されたビットの数を用いて第１のシンボル値を計算するステップと、
前記復号化されたビットの総数が指定されるビットカウントよりも少ない場合は、前記第１のシンボル値を返すステップと、
前記復号化されたビットの総数が前記指定されるビットカウントに等しい場合は、第２のシンボル値を計算するステップと、
前記第２のシンボル値を返すステップと
を有する、コンピュータ可読媒体。
（付記１３）
変換係数を復号化するデコーダであって、
入力圧縮ビットストリームの連続したビットを復号化するＣＡＢＡＣデコーダと、
前記復号化されたビットの数に１を加えることによって第１のシンボル値を計算する第１の加算器と、
前記復号化されたビットの総数が指定されるビットカウントに等しいかどうかを決定するコンパレータと、
前記復号化されたビットの総数が指定されるビットカウントに等しい場合は、前記入力圧縮ビットストリームを復号化する指数ゴロム符号デコーダと、
前記指数ゴロム符号デコーダによって生成された結果に前記第１のシンボル値を加えることによって第２のシンボル値を生成する第２の加算器と
を有するデコーダ。
（付記１４）
前記ＣＡＢＡＣデコーダは更に、同じＣＡＢＡＣコンテクストを用いて同じ値を有する複数のビットを復号化するよう構成される、付記１３に記載のデコーダ。
（付記１５）
前記ＣＡＢＡＣデコーダは更に、
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取り、
サブレンジ値を計算し、
前記サブレンジ値を前記レンジ値から減じることによって新たなレンジ値を計算し、
前記オフセット値が前記新たなレンジ値より小さいかどうかを確認し、
前記オフセット値が前記新たなレンジ値より小さい場合は、最確シンボルに等しい値を有する解凍出力ビット返し、
前記オフセット値が前記新たなレンジ値より大きいか又は等しい場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返す
よう構成される、付記１４に記載のデコーダ。
（付記１６）
前記ＣＡＢＡＣデコーダは更に、
繰り込み処理を行い、
零ビットがあるかどうかを確認し、
零ビットがある場合は、前記復号化されたビットの総数を返し、
零ビットがない場合は、前記復号化されたビットの総数をカウントするカウンタをインクリメントし、
指定される最大数のビットが復号化された場合に、前記復号化されたビットの総数を返す
よう構成される、付記１５に記載のデコーダ。
（付記１７）
前記繰り込み処理を行うことは、
レンジ値が所定のレンジ値より大きいか又は等しくなるまで、前記入力圧縮ビットストリームから連続して新たなビットを読み出すこと
を有する、付記１６に記載のデコーダ。
（付記１８）
前記ＣＡＢＡＣデコーダは更に、
前記入力圧縮ビットストリームにおいて最小数の連続した最確シンボルビットを計算し、
前記連続した最確シンボルビットにおける夫々のビットについて、夫々のビットの値を確認することなしに、ＣＡＢＡＣデコーダの状態機械を進める
よう構成される、付記１３に記載のデコーダ。
（付記１９）
前記ＣＡＢＡＣデコーダは更に、
コンテクスト値と、前記入力圧縮ビットストリームと、レンジ値及びオフセット値を含むＣＡＢＡＣデコーダオブジェクトとを受け取り、
前記レンジ値及び前記オフセット値を用いてサブレンジ値を計算し、
前記入力圧縮ビットストリームにおいて最小数の連続した最確シンボルビットを計算し、
前記最小数の連続した最確シンボルビットが零よりも多い場合は、最確シンボル値に等しい値を有する解凍出力ビットを返し、
前記最小数の連続した最確シンボルビットが零である場合は、最も確からしくないシンボルに等しい値を有する解凍出力ビットを返す
よう構成される、付記１８に記載のデコーダ。
（付記２０）
前記最確シンボル値に等しい値を有する解凍出力ビットを返すことは、
前記レンジ値から前記サブレンジ値を減じることによって新たなレンジ値を計算することと、
正規化処理を行うことと、
前記正規化処理の完了時に、零ビットが前記連続した最確シンボルビットにおいてあるかどうかを確認することと、
零ビットがない場合は、前記連続した最確シンボルビットにおける夫々のビットについて、前記ＣＡＢＡＣデコーダの前記状態機械を繰り返し進めることと、
零ビットがあるか又は指定されるビットカウントが達成される場合は、前記復号化されたビットの総数を返すことと
を更に有する、付記１９に記載のデコーダ。
【図１】
0005815113.tif 000002
【図２】
0005815113.tif 000003
【図３】
0005815113.tif 000004
【図４】
0005815113.tif 000005