(57)【要約】【課題】レベル・モードとラン・レングス／ラン・レベル・モードの間で符号化を適応させることによるエントロピー符号化を提供する。【解決手段】オーディオ符号器は、オーディオ・データの適応エントロピー符号化を行う。例えば、オーディオ符号器は、量子化されたオーディオ・データの直接レベルの可変ディメンション・ベクトル・ハフマン符号化と、量子化されたオーディオ・データのラン・レングスおよびレベルのラン・レベル符号化の間で切替えを行う。符号器は、例えば、ラン・レングスおよびレベルを符号化するためにコンテキスト・ベースの算術符号化を使用することができる。符号器は、顕著な値（例えば、ゼロ）を有する連続する係数をカウントすることによって複数の符号化モード間でいつ切替えを行うかを決定することができる。オーディオ復号器は、適応エントロピー復号化に応じて実行する。【選択図】図４
2010160517.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムにおいてオーディオ・データをベクトル・ハフマン符号化スキームで符号化する方法であって、
前記オーディオ・データのシンボルのベクトルを符号化するために使用するハフマン符号テーブルからのハフマン符号を、前記オーディオ・データのシンボルの値の合計に基づいて決定するステップと、
前記ハフマン符号を使用して、前記オーディオ・データのシンボルのベクトルを符号化するステップと
を備えることを特徴とする方法。
【請求項２】
前記ハフマン符号はエスケープ符号であり、前記オーディオ・データのシンボルのベクトルは、ｎ次元ベクトルであり、前記エスケープ符号は、前記ｎ次元ベクトルが、少なくとも１つの異なるハフマン符号テーブルを使用してｘ個のｎ／ｘ次元ベクトルとして符号化されるべきことを示すことを特徴とする請求項２に記載の方法。
【請求項３】
前記決定するステップは、前記値の合計をしきい値と比較するステップを含み、
前記しきい値は、前記ベクトル内のオーディオ・データのシンボルの数に依存することを特徴とする請求項１に記載の方法。
【請求項４】
前記オーディオ・データのシンボルの数は４であり、前記しきい値は６であることを特徴とする請求項３に記載の方法。
【請求項５】
前記オーディオ・データのシンボルの数は２であり、前記しきい値は１６であることを特徴とする請求項３に記載の方法。
【請求項６】
前記オーディオ・データのシンボルの数は１であり、前記しきい値は１００であることを特徴とする請求項３に記載の方法。
【請求項７】
コンピュータ・システムにおいてオーディオ・データをベクトル・ハフマン復号化スキームで復号化する方法であって、
前記オーディオ・データのシンボルのベクトルを復号化するために使用するハフマン符号を受け取るステップであって、前記ハフマン符号は、前記オーディオ・データのシンボルの値の合計に基づく符号化の間に、ハフマン符号テーブルから決定され、選択されているものであるステップと、
前記ハフマン符号を使用して、前記オーディオ・データのシンボルのベクトルを復号化するステップと
を備えることを特徴とする方法。
【請求項８】
前記ハフマン符号はエスケープ符号であり、前記エスケープ符号は、前記オーディオ・データのシンボルのベクトルが、少なくとも１つの異なるハフマン符号テーブルからの少なくとも１つの異なるハフマン符号を使用して復号化されるべきことを示すことを特徴とする請求項７に記載の方法。
【請求項９】
前記ハフマン符号は、少なくとも部分的に、前記符号化の間の前記値の合計としきい値との比較の結果に依存し、
前記しきい値は、前記ベクトル内のオーディオ・データのシンボルの数に依存することを特徴とする請求項７に記載の方法。
【請求項１０】
前記オーディオ・データのシンボルの数は４であり、前記しきい値は６であることを特徴とする請求項９に記載の方法。
【請求項１１】
前記オーディオ・データのシンボルの数は２であり、前記しきい値は１６であることを特徴とする請求項９に記載の方法。
【請求項１２】
前記オーディオ・データのシンボルの数は１であり、前記しきい値は１００であることを特徴とする請求項９に記載の方法。
【請求項１３】
請求項７に記載の方法をコンピュータに行わせるためのプログラムが記憶されたコンピュータ可読記憶媒体。
【請求項１４】
オーディオ・データをベクトル・ハフマン符号化スキームで符号化する方法をコンピュータに実行させるためのプログラムが記憶されたコンピュータ可読記憶媒体であって、前記方法は、
前記オーディオ・データのシンボルのベクトルを符号化するために使用するハフマン符号テーブルからのハフマン符号を、前記オーディオ・データのシンボルの値の合計に基づいて決定するステップと、
前記ハフマン符号を使用して、前記オーディオ・データのシンボルのベクトルを符号化するステップと
を備えることを特徴とするコンピュータ可読記憶媒体。
【請求項１５】
前記ハフマン符号はエスケープ符号であり、前記オーディオ・データのシンボルのベクトルは、ｎ次元ベクトルであり、前記エスケープ符号は、前記ｎ次元ベクトルが、少なくとも１つの異なるハフマン符号テーブルを使用してｘ個のｎ／ｘ次元ベクトルとして符号化されるべきことを示すことを特徴とする請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記決定するステップは、前記値の合計をしきい値と比較するステップを含み、
前記しきい値は、前記ベクトル内のオーディオ・データのシンボルの数に依存することを特徴とする請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記オーディオ・データのシンボルの数は４であり、前記しきい値は６であることを特徴とする請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記オーディオ・データのシンボルの数は２であり、前記しきい値は１６であることを特徴とする請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記オーディオ・データのシンボルの数は１であり、前記しきい値は１００であることを特徴とする請求項１６に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オーディオ・データの適応エントロピー符号化に関する。例えば、オーディオ符号器は、量子化されたオーディオ・データの直接レベルのハフマン符号化と、量子化されたオーディオ・データのラン・レングスおよびレベルの算術符号化の間で切替えを行う。
【背景技術】
【０００２】
コンパクト・ディスク、デジタル無線電話網、およびインターネットを介するオーディオの配信の導入とともに、デジタル・オーディオが一般的になっている。技術者は、様々なテクニック（technique；技術、方法）を使用して、デジタル・オーディオの品質を維持しながらも、デジタル・オーディオを効率的に処理している。これらのテクニックを理解することは、オーディオ情報がコンピュータにおいてどのように表わされ、処理されるかを理解することに役立つ。
【０００３】
Ｉ．コンピュータにおけるオーディオ情報の表現
コンピュータは、オーディオ情報を、オーディオ情報を表わす複数の数の連続として処理する。例えば、一つの数が、オーディオ・サンプルを表わすことが可能であり、それは、特定の時点における振幅値（すなわち、ラウドネス）である。サンプル深度（sample depth）、サンプリング・レート、およびチャネル・モードを含むいくつかのファクタ（factor）が、オーディオ情報の品質に影響を与える。
【０００４】
サンプル深度（または精度）は、サンプルを表わすのに使用される数の範囲を示す。サンプルに関して使用可能であるその値が多いほど、品質が高くなる。というのは、その数が、振幅のより微妙な変動をキャプチャすることができるからである。例えば、８ビットのサンプルは、２５６の使用可能な値を有するが、１６ビットのサンプルは、６５，５３６の使用可能な値を有する。
【０００５】
また、サンプリング・レート（通常、毎秒のサンプル数で測定される）も、品質に影響を与える。サンプリング・レートが高いほど、品質が高くなる。というのは、サウンドについてのより多くの周波数を表わすことができるからである。いくつかの一般的なサンプリング・レートは、毎秒８，０００サンプル、毎秒１１，０２５サンプル、毎秒２２，０５０サンプル、毎秒３２，０００サンプル、毎秒４４，１００サンプル、毎秒４８，０００サンプル、および毎秒９６，０００サンプルである。
【０００６】
表１は、異なる品質レベルを有するいくつかのオーディオ形式、ならびに対応する生のビットレート・コストを示している。
【０００７】
【表１】
2010160517.tif 000003
【０００８】
表１が示すとおり、ＣＤオーディオなどの高品質オーディオ情報の費用は、高いビット・レートである。高品質オーディオ情報は、大量のコンピュータ・ストレージおよび伝送容量を消費する（使い尽くす）。ただし、企業および消費者は、高品質のオーディオ・コンテンツを作成し、配信し、再生するのに、ますますコンピュータに頼っている。
【０００９】
ＩＩ．オーディオの圧縮および圧縮解除
多くのコンピュータおよびコンピュータ網は、生のデジタル・オーディオを処理するリソースを欠いている。圧縮（符号化またはコーディングとも呼ばれる）は、情報をより低いビット・レートの形態に変換することによって、オーディオ情報の記憶および伝送の費用を低減する。圧縮は、ロスレス(lossless：損失がない）（品質が低下しない）、またはロッシー（lossy：損失がある）（品質が低下するが、ロスレス圧縮を超えたビット・レート低減が、より著しい）とすることが可能である。圧縮解除（復号化とも呼ばれる）が、圧縮された形態から元の情報の再構成されたバージョンを取り出す。
【００１０】
一般に、オーディオ圧縮の目的は、可能な限り少量のビットで最大限の信号品質を提供するようにオーディオ信号をデジタル式に表わすことである。従来のオーディオ符号器／復号器［「コーデック」］システムは、サブバンド／変換符号化、量子化、速度制御、および可変長符号化を使用して圧縮を実現する。量子化およびその他のロッシー圧縮テクニックにより、聴き取られる可能性がある雑音がオーディオ信号に導入される。雑音の可聴性は、存在する雑音の量、また聴取者が知覚する雑音の量に依存する。第１のファクタは、主に客観的品質に関するが、第２のファクタは、サウンドの人間による知覚に依存する。したがって、従来のオーディオ符号器は、ビット・レートをさらに低下させるために、可変長符号化を使用して量子化されたデータを、損失なく、圧縮していた。
【００１１】
Ａ．オーディオ・データのロッシー圧縮および圧縮解除
従来、オーディオ符号器は、様々な異なるロッシーの圧縮テクニック技術を使用する。このロッシーの圧縮テクニックは、通常、周波数変換、知覚モデル化／重み付け、および量子化を必要とする。対応する圧縮解除には、逆量子化、逆重み付け、および逆周波数変換を必要とする。
【００１２】
周波数変換テクニックは、知覚的に重要な情報を知覚的に重要でない情報から分けることをより容易にする形態にデータを変換する。次に、それほど重要でない情報は、より損失の多い圧縮を受けるようにし、他方、より重要な情報は、保存されるようにして、所与のビット・レートに関して最良の知覚される品質を提供するようにすることができる。周波数変換器が、通常、オーディオ・サンプルを受け取り、ときとして周波数係数またはスペクトル係数と呼ばれる周波数領域のデータに、それを変換する。
【００１３】
会話や音楽などの自然のサウンドにおけるほとんどのエネルギーは、低周波数範囲に集中している。このことは、統計上、より高い周波数範囲におけるエネルギーの欠如を反映して、より高い周波数範囲がゼロまたはゼロに近い周波数係数をより多く有することになる、ことを意味する。
【００１４】
知覚モデル化は、所与のビット・レートで再構成されたオーディオ信号の知覚される品質を向上させるように、人間聴覚システムのモデルに従ってオーディオ・データを処理することに意味する。例えば、聴覚モデルは、通常、人間の聴力の範囲、および臨界帯域（critical bands）を考慮する。知覚モデル化の結果を使用して、符号器は、所与のビット・レートに対して雑音の可聴性を最小限に抑える目的にもかかわらず、オーディオ・データ中に雑音（例えば、量子化雑音）を成形する。符号器は、ときとして、ビット・レートを低下させるために、雑音（例えば、量子化雑音）を導入しなければならないが、重み付けにより、符号器は、雑音がそれほど聞き取れない帯域により多くの雑音を入れ、雑音がよく聞き取れる帯域にはより少ない雑音しか入れないことが可能になる。
【００１５】
量子化は、入力値それぞれの範囲それぞれを、複数の単一の値にマップして不可逆性の情報の損失つまり量子化雑音を導入するが、符号器が、出力の品質とビット・レートを調整することも可能にする。ときとして、符号器は、ビット・レートおよび／または品質を調整するために量子化を調整する速度コントローラと連携して、量子化を達成する。適応量子化および非適応量子化、スカラー量子化およびベクトル量子化、一様な量子化および一様でない量子化を含め、様々な種類の量子化が存在する。知覚重み付け（perceptual weighting）は、ある形態の一様でない量子化と考えることができる。
【００１６】
逆量子化および逆重み付けにより、重みが付けられて量子化された周波数係数データが、元の周波数係数データの近似値に再構成される。次に、逆周波数変換器が、再構成された周波数係数データを再構成された時間領域オーディオ・サンプルに変換する。
【００１７】
Ｂ．オーディオ・データのロスレス圧縮および圧縮解除
従来、オーディオ符号器は、様々な異なるロスレス圧縮テクニックの１つまたは複数を使用する。一般に、ロスレス圧縮テクニックには、ラン・レングス符号化、ハフマン符号化、および算術符号化が含まれる。対応する圧縮解除テクニックには、ラン・レングス復号化、ハフマン復号化、および算術復号化が含まれる。
【００１８】
ラン・レングス符号化は、カメラ・ビデオ、テキスト、およびその他のタイプのコンテンツに対して使用される単純な周知の圧縮テクニックである。一般に、ラン・レングス符号化は、同一の値を有する連続するシンボルのシーケンス（すなわち、ラン（run））をそのシーケンスの値および長さで置き換える。ラン・レングス復号化では、連続するシンボルのシーケンスが、ランの値およびランの長さ（run value and run length）から再構成される。ラン・レングス符号化／復号化の多数の変種が開発されている。ラン・レングス符号化／復号化、およびラン・レングス符号化／復号化の変種のいくつかに関するさらなる情報については、例えば、非特許文献１、非特許文献２、Ｍａｉｒｓ他に発行された特許文献１、Ｇｉｌｌ他に発行された特許文献２、およびＣｈａｄｄｈａに発行された特許文献３を参照されたい。
【００１９】
ラン・レベル符号化は、同一の値を有する連続するシンボルのランが、ランの長さで置き換えられることで、ラン・レングス符号化と同様である。ランの値は、データにおける顕著な値（例えば、０）であり、ランは、異なる値（例えば、ゼロでない値）を有する１つまたは複数のレベルによって隔てられる。
【００２０】
ラン・レングス符号化（例えば、ランの値およびランの長さ）またはラン・レベル符号化の結果をハフマン符号化して、さらにビット・レートを低下させることが可能である。これが行われた場合、ハフマン符号化されたデータは、ラン・レングス復号化に先立ってハフマン復号化される。
【００２１】
ハフマン符号化は、カメラ・ビデオ、テキスト、およびその他のタイプのコンテンツに対して使用される別の周知の圧縮テクニックである。一般に、ハフマン符号テーブルは、可変長のハフマン符号を一意的なシンボル値（または、値の一意的な組合せ）に関連付ける。より短い符号に、より確率の高いシンボル値が割り当てられ、より長い符号に、それほど確率の高くないシンボル値が割り当てられる。この確率は、いくつかの種類のコンテンツの典型的な例に対して計算される。あるいは、この確率は、符号化されたばかりのデータ、または符号化されるデータに関して計算され、その場合、ハフマン符号は、一意的なシンボル値に関する確率の変化に適応する。静的なハフマン符号化と比べて、適応ハフマン符号化は、通常、データに関するより正確な確率を組み込むことによって圧縮されたデータのビット・レートを低下させるが、ハフマン符号を指定する追加の情報も伝送される必要がある可能性がある。
【００２２】
シンボルを符号化するのに、ハフマン符号器は、シンボル値を、ハフマン符号テーブルの中でシンボル値に関連つけられた可変長のハフマン符号に置き換える。復号化するのに、ハフマン復号器は、ハフマン符号を、ハフマン符号に関連つけられたシンボル値に置き換える。
【００２３】
スカラー・ハフマン符号化では、ハフマン符号テーブルは、１つの値に、例えば、量子化されたデータ値の直接レベルに、単一のハフマン符号を関連付ける。ベクトル・ハフマン符号化では、ハフマン符号テーブルは、値の組合せに、例えば、特定の順序の量子化されたデータ値の一群の直接レベルに単一のハフマン符号を関連付ける。ベクトル・ハフマン符号化は、スカラー・ハフマン符号化より（例えば、符号器が、２進ハフマン符号における確率を分数として利用することを可能にすることにより）良好なビット・レート低下をもたらす可能性がある。他方、ベクトル・ハフマン符号化用のコードブックは、単一の符号が大きいグループのシンボルを表わす場合、またはシンボルが大きい範囲の可能な値を有する（可能な組合せの数が多いことにより）場合、極端に大きい可能性がある。例えば、アルファベット・サイズが２５６（シンボル当たり０ないし２５５の値として）であり、ベクトル当たりのシンボルの数が４である場合、可能な組合せの数は、２５６4＝４，２９４，９６７，２９６である。これは、コードブックを計算し、ハフマン符号を見つけ出す際に、メモリおよび処理資源（processing resources）を消費し（使い尽くし）、コードブックを伝送する際に伝送リソースを消費する（使い尽くす）。
【００２４】
ハフマン符号化／復号化の多数の変種が開発されている。ハフマン符号化／復号化、およびハフマン符号化／復号化の変種のいくつかに関するさらなる情報については、例えば、非特許文献１、非特許文献２を参照されたい。
【００２５】
Ｃｈｅｎ他に発行された特許文献４は、オーディオ・データのマルチ・レベル・ラン・レングス符号化を説明している。周波数変換は、一続きの周波数係数値をもたらす。顕著な値がゼロである周波数スペクトルの部分に関して、マルチ・レベル・ラン・レングス符号器は、ゼロ値のランを隣接するゼロでない値に統計的に相関させ、可変長の符号語を割り当てる。符号器は、ゼロ値を有するスペクトル係数の後にゼロでない係数が続く入力ランを受け取る確率に関して生成された、特殊化されたコードブックを使用する。対応する復号器は、可変長の符号語を、ゼロ値の係数と隣接するゼロでない値の係数のランに関連付ける。
【００２６】
Ｃｈｅｎ他に発行された特許文献５は、オーディオ・データの可変−可変長符号化を説明している。符号器は、周波数係数値の可変サイズのグループに可変長の符号を割り当てる。
【００２７】
Ｃｈｅｎ他に発行された特許文献６は、周波数領域オーディオ符号化に関するエントロピー符号モード切替えを説明している。周波数領域オーディオ符号器は、入力ストリームの特性に従って異なるエントロピー符号化モードのなかから選択を行う。詳細には、入力ストリームは、符号化されるべき典型的な入力または実際の入力の統計解析から導出された統計基準に従って複数の周波数範囲に区分される。各範囲には、その範囲のタイプのデータを符号化するように最適化されたエントロピー符号器が割り当てられる。符号化中および復号化中、モード選択器は、的確な方法を個々の周波数範囲に適用する。区分境界は、前もって決められ、復号器が、どの復号化方法が符号化されたデータに適用されるかを暗黙に知ることを可能にしている。あるいは、適応構成が使用されて、その構成において、出力ストリーム中で境界にフラグが設定されて、後続のデータに関する符号化モードの変更が示されるようにすることが可能である。例えば、区分境界は、主にゼロの量子化された周波数係数を、主にゼロでない量子化された係数から分離し、次に、そのようなデータに合わせて最適化された符号器を適用する。  
Ｃｈｅｎの特許に関するさらなる詳細については、特許自体を参照されたい。
【００２８】
算術符号化は、カメラ・ビデオ、およびその他のタイプのコンテンツに対して使用される別の周知の圧縮テクニックである。いくつかの個々の入力シンボルの間で統計上の相関が存在するケースで、算術符号化は、ときとして、所与の入力シンボルを符号化する最適なビット数が、分数のビット数である適用例において使用される。算術符号化は、一般に、入力シーケンスを所与の範囲内の単一の数として表わすことに関わる。通常、その数は、０と１の中間の分数である。入力シーケンス中のシンボルは、０と１の間の空間の部分を示す範囲に関連付けられる。この範囲は、特定のシンボルが入力シーケンスの中で生起する確率に基づいて計算される。入力シーケンスを表わすのに使用される分数は、その範囲に関連して構成される。したがって、入力シンボルの確率分布は、算術符号化スキームにおいて重要である。
【００２９】
コンテキスト・ベースの算術符号化では、入力シンボルの異なる確率分布が、異なるコンテキストに関連付けられる。入力シーケンスを符号化するのに使用される確率分布は、コンテキストが変化する際に変化する。コンテキストは、入力シーケンスの中で生起する特定の入力シンボルの確率に影響を与えると予期される異なるファクタを測定することによって計算することができる。算術符号化／復号化、および算術符号化の変種のいくつかに関するさらなる情報については、非特許文献３を参照されたい。
【００３０】
マイクロソフト・コーポレーションのＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ａｕｄｉｏ［「ＷＭＡ」］符号器および復号器のバージョンを含む様々なコーデック・システムおよびコーデック標準が、ロスレス圧縮および圧縮解除を使用している。他のコーデック・システムは、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ、Ａｕｄｉｏ  Ｌａｙｅｒ  ３［「ＭＰ３」］標準、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ２、Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ［「ＡＡＣ」］標準、およびドルビー（Dolby）ＡＣ３によって提供されるか、または規定されている。さらなる情報に関しては、それぞれの標準または技術刊行物を参照されたい。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】米国特許第６，３０４，９２８号明細書
【特許文献２】米国特許第５，８８３，６３３号明細書
【特許文献３】米国特許第６，２３３，０１７号明細書
【特許文献４】米国特許第６，２３３，１６２号明細書
【特許文献５】米国特許第６，３７７，９３０号明細書
【特許文献６】米国特許第６，３００，８８８号明細書
【非特許文献】
【００３２】
【非特許文献１】Bell et al., Text Compression, Prentice Hall PTR, pages 105-107, 1990
【非特許文献２】Gibson et al., Digital Compression for Multimedia, Morgan Kaufmann, pages 17-62, 1998
【非特許文献３】Nelson, The Data Compression Book, "Huffman One Better: Arithmetic Coding," Chapter 5, pp. 123-65(1992)
【発明の概要】
【発明が解決しようとする課題】
【００３３】
オーディオ・データのロスレス圧縮についての従来の技術およびシステムの利点がどのようなものであれ、従来のテクニックおよびシステムは、本発明の利点を有さない。
【課題を解決するための手段】
【００３４】
要約すると、詳細な説明は、オーディオ・データの適応エントロピー符号化および適応エントロピー復号化のための様々なテクニックおよびツールを対象としている。この様々なテクニックおよびツールは、組合せで、または独立して使用することができる。
【００３５】
一態様では、符号器は、オーディオ・データ・シーケンスの第１の部分を直接可変次元ベクトル・ハフマン符号化モード（variable-dimension vector Huffman encoding）で符号化し、切替えポイントでラン・レベル符号化モードに切り換わり、第２の部分をラン・レベル符号化モード（例えば、コンテキスト・ベースの算術符号化、ハフマン符号化、ベクトル・ハフマン符号化）で符号化する。例えば、第１の部分は、主にゼロでない量子化されたオーディオ係数から成り、第２の部分は、主にゼロ値の量子化されたオーディオ係数から成る。切替えポイントは、予め決定されていること（例えば、その切替えポイントを使用してシーケンスを符号化する効率を試験することにより）、または適応して（adaptively）決定することができる。符号器は、符号化されたビットストリームで、切替えポイントを示すフラグを送ることができる。
【００３６】
代替の態様では、復号器は、符号化されたシーケンスの第１の部分を直接可変次元ベクトル・ハフマン復号化モードで復号化し、切替えポイントでラン・レベル復号化モードに切り換わり、第２の部分をラン・レベル復号化モード（例えば、コンテキスト・ベースの算術復号化、ハフマン復号化、ベクトル・ハフマン復号化）で復号化する。切替えを行うのに先立ち、復号器は、切替えポイントを示すフラグを受け取ることができる。
【００３７】
別の態様では、符号器または復号器が、シーケンスの第１の部分を直接コンテキスト・ベースの算術モードで符号化または復号化し、切替えポイントでラン・レベル・モードに切り換わり、第２の部分をラン・レベル・モードで符号化または復号化する。ラン・レベル・モードは、コンテキスト・ベースの算術モードであることが可能である。
【００３８】
別の態様では、符号器が、第１のベクトルにおけるシンボルの数に基づいて１組の複数の符号テーブルから第１の符号テーブルを選択し、第１のベクトルを第１の符号テーブルからの符号で表わす。第１の符号テーブルは、そのシンボル数を有する可能性の高いベクトルを表わすための符号、およびそれほど可能性の高くないベクトルを表わすエスケープ符号を含むことが可能である。また、符号器は、異なるシンボル数を有する第２のベクトルも符号化する。例えば、第１のベクトルは、第２のベクトルより多い数のシンボルを有し、第２のベクトルより高い生起確率を有する。第２のベクトルを符号化するため、符号器は、第２のベクトルにおけるシンボルの数に基づいて第２の異なる符号テーブルを選択することができる。第２のベクトルが１つのシンボルを有する場合、符号器は、テーブルのない符号化テクニックを使用して第２のベクトルを表わすことができる。
【００３９】
別の態様では、復号器が、第１の符号を受け取り、第１の符号テーブルの中で第１の符号をルックアップすることによって第１のベクトルを復号化する。第１の符号がエスケープ符号である場合、復号器は、第１のテーブルの中に存在しない第２の符号を受け取って復号化する。第１の符号がエスケープ符号ではない場合、復号器は、第１のテーブルにおいて第１のベクトルに関するシンボル（複数）をルックアップし、そのシンボル（複数）を復号化されたデータストリームの中に含める。第１のベクトルにおけるシンボルの数は、第１の符号がエスケープ符号であるかどうかについての基準である。復号器は、第２の符号を第２のテーブルの中でルックアップすることによって第２の符号を復号化することができる。第２の符号がエスケープ符号である場合、復号器は、第２のテーブルの中に存在しない第１のベクトルを表わす第３の符号を受け取り、復号化する。第２の符号がエスケープ符号でない場合、復号器は、第２のテーブルの中で第１のベクトルに関するシンボルをルックアップし、そのシンボルを復号化されたデータストリームの中に含める。
【００４０】
別の態様では、符号器が、テーブルのない符号化テクニックを使用してオーディオ・データ係数を符号化する。係数が第１の値範囲（value range）内にある場合、符号器は、その係数を１ビット符号の後に８ビットの符号化された値が続く符号で符号化する。その他の値範囲の場合、符号器は、その係数を２ビット符号の後に１６ビットの符号化された値が続く符号、３ビット符号の後に２４ビットの符号化された値が続く符号、または異なる３ビット符号の後に３１ビットの符号化された値が続く符号で符号化する。
【００４１】
別の態様では、ベクトル・ハフマン符号化スキームにおいて、符号器が、一群のハフマン符号からベクトルを符号化するために使用するハフマン符号を決め、そのハフマン符号を使用してベクトルを符号化する。符号の決定は、ベクトルにおけるオーディオ・データのシンボルの値の合計に基づく。ハフマン符号がエスケープ符号である場合、ハフマン符号は、ｎ次元ベクトルが、少なくとも１つの異なる符号テーブルを使用してｘ個のｎ／ｘ次元のベクトルとして符号化されるべきことを示す。符号器は、その合計をベクトルにおけるシンボルの数に依存するしきい値と比較することができる。例えば、しきい値は、４つのシンボルに対して６であり、２つのシンボルに対して１６であり、あるいは１つのシンボルに対して１００である。
【００４２】
別の態様では、符号器が、オーディオ・データのシーケンスを受け取り、コンテキスト・ベースの算術符号化を使用してそのシーケンスの少なくとも一部を符号化する。復号器が、オーディオ・データ係数の符号化されたシーケンスを受け取り、コンテキスト・ベースの算術復号化を使用して符号化されたシーケンスの少なくとも一部を復号化する。
【００４３】
別の態様では、符号器が、コンテキスト・ベースの算術符号化を使用してオーディオ・データ係数を符号化する。１つまたは複数のコンテキストが、係数の確率を表わす関連する確率分布を有する。符号器は、現在の係数の表現のモードに少なくともある程度、基づいて現在の係数に関するコンテキストを、適応して（adaptively）特定し、そのコンテキストを使用して現在の係数を符号化する。例えば、表現のモードが直接である場合、符号器は、前の係数（例えば、現在の係数の直前の２つの係数）の直接レベルに少なくともある程度、基づいてコンテキストを、適応して（adaptively）特定する。表現のモードがラン・レベルである場合、符号器は、オーディオ入力シーケンス中のゼロ値係数の前のラン・レングス、ゼロ値係数のパーセンテージに少なくともある程度、基づいてコンテキストを、適応して（adaptively）特定する。表現のモードがラン・レベルであり、符号器が、ゼロ値係数の現在のラン・レングス、ゼロ値係数の前のラン・レングス、および前の係数の直接レベルに少なくともある程度、基づいてコンテキストを、適応して（adaptively）特定する。
【００４４】
別の態様では、符号器または復号器が、直接符号化または直接復号化を使用し、顕著な値（predominant value）（例えば、０）に等しい連続する係数のカウントを維持してオーディオ・データの第１の部分を符号化、または復号化する。カウントがしきい値を超えた場合、符号器または復号器は、ラン・レベル符号化またはラン・レベル復号化を使用してオーディオ・データの第２の部分を符号化、または復号化する。しきい値は、静的であること、または適応して（adaptively）決定されることが可能である。しきい値は、係数のブロックのサイズに依存することが可能である。例えば、しきい値は、２５６の係数のブロックに対して４であり、あるいは５１２の係数のブロックに対して８であることが可能である。
【００４５】
別の態様では、符号器または復号器が、第１の符号テーブルを使用してシーケンスの第１の部分を符号化、または復号化し、第２の符号テーブルを使用してシーケンスの第２の部分を符号化、または復号化する。第１のテーブルは、顕著な値（例えば、０）に等しい連続する係数のより長いランの可能性が高い場合に使用され、第２のテーブルは、等しい値の連続する係数のより短いランの可能性が高い場合に使用される。使用されるテーブルは、シグナル・ビットによって示されることが可能である。
【００４６】
適応エントロピー符号化テクニックおよび適応エントロピー復号化テクニックの特徴および利点は、添付の図面を参照して行われる様々な実施形態の以下の詳細な説明から明白となる。
【図面の簡単な説明】
【００４７】
【図１】説明する実施形態を実装することが可能な適切なコンピューティング環境を示すブロック図である。
【図２】説明する実施形態を実装することが可能なオーディオ符号器を示すブロック図である。
【図３】説明する実施形態を実装することが可能なオーディオ復号器を示すブロック図である。
【図４】一般化されたマルチ・モード・オーディオ符号化テクニックを示す流れ図である。
【図５】適応切替えポイント計算を伴うマルチ・モード・オーディオ符号化テクニックを示す流れ図である。
【図６】一般化されたマルチ・モード・オーディオ復号化テクニックを示す流れ図である。
【図７】一般化された可変次元ベクトル・ハフマン符号化テクニックを示す流れ図である。
【図８】可変次元ベクトル・ハフマン符号化を使用してオーディオ・データを符号化するための詳細なテクニックを示す流れ図である。
【図９】符号器がラン・レングスおよび信号レベルの符号化に変更するための切替えポイントを、適応して決定する態様の、直接信号レベルの可変次元ベクトル・ハフマン符号化のためのテクニックを示す流れ図である。
【図１０】一般化された可変次元ベクトル・ハフマン復号化テクニックを示す流れ図である。
【図１１】可変次元ベクトル・ハフマン符号化を使用して符号化されたベクトルを復号化するための詳細なテクニックを示す流れ図である。
【図１２】復号器がラン・レングスおよび信号レベルの復号化に変更するための切替えポイントを、適応して決定する態様の、直接信号レベルの可変次元ベクトル・ハフマン復号化のためのテクニックを示す流れ図である。
【図１３Ａ】コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。
【図１３Ｂ】コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。
【図１３Ｃ】コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。
【図１３Ｄ】コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。
【図１４Ａ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｂ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｃ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｄ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｅ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｆ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｇ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１４Ｈ】コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。
【図１５Ａ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｂ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｃ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｄ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｅ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｆ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｇ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１５Ｈ】コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。
【図１６】ラン・レングスおよびラン・レベルの符号化に変更するための切替えポイントが符号器によって適応して決められる態様の、係数の直接コンテキスト・ベースの算術符号化のためのテクニックを示す流れ図である。
【図１７】復号器がラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを、適応して決定する態様の、コンテキスト・ベースの算術復号化のテクニックを示す流れ図である。
【発明を実施するための形態】
【００４８】
説明される実施形態では、オーディオ符号器は、いくつかの適応エントロピー符号化テクニックを実行する。ビット・レートを低減し、かつ／または品質を向上させる適応エントロピー符号化テクニックは、符号器のパフォーマンスを改良する。復号器は、対応するエントロピー復号化テクニックを行う。これらのテクニックは、単一の統合されたシステムの一環としてところどころで説明しているが、これらのテクニックは、別々に、場合により、他のテクニックと組み合わせて適用することも可能である。
【００４９】
オーディオ符号器およびオーディオ復号器は、離散オーディオ信号を処理する。説明される実施形態では、オーディオ信号は、周波数変換されたオーディオ信号からの量子化された係数である。代替として、符号器および復号器は、別の種類の離散オーディオ信号、あるいはビデオまたは別の種類の情報を表わす離散信号を処理する。
【００５０】
一部の実施形態では、オーディオ符号器は、直接信号レベル（direct signal levels）の符号化と、ラン・レングスおよび信号レベルの符号化の間で、適応して切替えを行う。符号器は、スカラー・ハフマン符号化、ベクトル・ハフマン符号化、算術符号化、または別のテクニックを使用して直接信号レベルを符号化する。ラン・レングス／レベル符号化（ラン・レベル符号化とも呼ばれる）では、各ラン・レングスが、ゼロ、またはより多くのゼロのランを表わし、各信号レベルが、ゼロでない値を表わす。ラン・レベル・イベント空間において、符号器は、ハフマン符号化、算術符号化、または別のテクニックを使用してそのイベント空間内でラン・レングスおよびレベルを符号化する。復号器は、復号化中に、対応する適応切替えを行う。適応切替えは、ゼロ値レベルのしきい値数に達した際に行われる。代替として、符号器および復号器は、さらなる基準または他の基準に基づいて切替えを行う。
【００５１】
一部の実施形態では、オーディオ符号器は、可変次元ベクトル・ハフマン符号化を使用する。可変次元ベクトル・ハフマン符号化は、符号器が、シンボルのより確率の高い組合せをより大きい次元のベクトルを使用して表わし、シンボルのそれほど確率の高くない組合せをより小さい次元のベクトルまたはスカラーを使用して表わす、ハフマン符号を使用することができるようにする。復号器は、対応する可変次元のハフマン復号化を行う。
【００５２】
一部の実施形態では、オーディオ符号器は、コンテキスト・ベースの算術符号化を使用する。符号器によって使用されるコンテキストは、オーディオ・データの個々の種類についての効率的な圧縮を可能にする。復号器は、対応するコンテキスト・ベースの算術復号化を行う。
【００５３】
説明する実施形態では、オーディオ符号器およびオーディオ復号器は、様々なテクニックを実行する。これらのテクニックに関する動作は、通常、提示のため特定の順序で説明するが、この説明の仕方は、動作の順序のいくらかの並べ替えも包含するものと理解されたい。さらに簡明にするため、流れ図は、通常、特定のテクニックを他のテクニックと併せて使用することができる様々なやり方は示していない。
【００５４】
Ｉ．コンピューティング環境
図１は、説明する実施形態を実装することが可能な適切なコンピューティング環境（１００）の一般化された例を示している。コンピューティング環境（１００）は、本発明の使用または機能の範囲に関して何ら限定を示唆するものではない。というのは、本発明は、多種多様な汎用または特殊目的のコンピューティング環境において実装できるからである。
【００５５】
図１を参照すると、コンピューティング環境（１００）は、少なくとも１つの処理ユニット（１１０）およびメモリ（１２０）を含む。図１で、この最も基本的な構成（１３０）が、破線内に含まれている。処理ユニット（１１０）は、コンピュータ実行可能命令を実行し、現実のプロセッサまたは仮想プロセッサであることが可能である。多重処理システムでは、複数の処理ユニットが、コンピュータ実行可能命令を実行して処理能力を高める。メモリ（１２０）は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ等）、または揮発性メモリと不揮発性メモリの何らかの組合せであることが可能である。メモリ（１２０）は、オーディオ・データの適応エントロピー符号化／復号化を行うオーディオ符号器／復号器を実装するソフトウェア（１８０）を記憶する。
【００５６】
コンピューティング環境は、さらなる特徴を有することが可能である。例えば、コンピューティング環境（１００）は、ストレージ（１４０）と、１つまたは複数の入力デバイス（１５０）と、１つまたは複数の出力デバイス（１６０）と、１つまたは複数の通信接続（１７０）とを含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティング環境（１００）の構成要素を互いに接続する。通常、オペレーティング・システム・ソフトウェア（図示せず）は、コンピューティング環境（１００）において実行されている他のソフトウェアのための動作環境を提供し、コンピューティング環境（１００）の構成要素の活動を協調させる。
【００５７】
ストレージ（１４０）は、取外し可能、または取外し不可能であることが可能であり、磁気ディスク、磁気テープまたは磁気カセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、または情報を記憶するのに使用することができ、コンピューティング環境（１００）内でアクセスすることができる任意の他の媒体が含まれる。ストレージ（１４０）は、オーディオ・データの適応エントロピー符号化／復号化を行うオーディオ符号器／復号器を実装するソフトウェア（１８０）のための命令を記憶する。
【００５８】
入力デバイス（１５０）は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力デバイスであること、走査デバイス、ネットワーク・アダプタ、またはコンピューティング環境（１００）に入力を提供する別のデバイスであることが可能である。オーディオの場合、入力デバイス（１５０）は、サウンド・カードであること、またはアナログ形態またはデジタル形態でオーディオ入力を受け入れる同様のデバイスであること、またはオーディオ・サンプルをコンピューティング環境に提供するＣＤ−ＲＯＭ読取り装置であることが可能である。出力デバイス（１６０）は、ディスプレイ、プリンタ、スピーカ、ＣＤ／ＤＶＤ書込み装置、ネットワーク・アダプタ、またはコンピューティング環境（１００）から出力を提供する別のデバイスであることが可能である。
【００５９】
通信接続（１７０）は、通信媒体を介して別のコンピューティング・エンティティに対する通信を可能にする。通信媒体は、コンピュータ実行可能命令、圧縮されたオーディオ情報、または変調されたデータ信号中にその他のデータなどの情報を伝える。変調されたデータ信号とは、信号の中に情報を符号化するように特性の１つまたは複数が設定されている、または変更されている信号である。例として、限定としてではなく、通信媒体には、電気、光、ＲＦ、赤外線、音響、またはその他の搬送波を使用して実装される有線または無線のテクニックが含まれる。
【００６０】
本発明は、コンピュータ可読媒体の一般的な文脈で説明することができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスすることが可能な任意の可用な媒体である。例として、限定としてではなく、コンピューティング環境（１００）内で、コンピュータ可読媒体には、メモリ（１２０）、ストレージ（１４０）、通信媒体、および以上のいずれの組合せも含まれる。
【００６１】
本発明は、プログラム・モジュールの中に含まれ、コンピューティング環境において、目標の現実のプロセッサ上または仮想のプロセッサ上で実行されるコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールには、特定のタスクを行う、または特定の抽象データ・タイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、構成要素、データ構造等が含まれる。プログラム・モジュールの機能は、様々な実施形態において所望に応じて組み合わせること、またはプログラム・モジュールの間で分割することができる。プログラム・モジュールのためのコンピュータ実行可能命令は、ローカルのコンピューティング環境内で、または分散コンピューティング環境において実行することができる。
【００６２】
提示のため、詳細な説明では、コンピューティング環境におけるコンピュータ動作を説明するのに「解析する（analyze）」、「送る（send）」、「比較する（compare）」、および「調べる（check）」のような用語を使用する。これらの用語は、コンピュータによって行われる動作の高レベルの抽象化であり、人間によって行われる動作と混同してはならない。これらの用語に対応する実際のコンピュータ動作は、実装形態に応じて異なる。
【００６３】
ＩＩ．一般化されたオーディオ符号器およびオーディオ復号器
図２は、説明する実施形態を実装することが可能な一般化されたオーディオ符号器（２００）を示すブロック図である。符号器（２００）は、オーディオ・データの適応エントロピー符号化を行う。図３は、説明する実施形態を実装することができる一般化されたオーディオ復号器（３００）を示すブロック図である。復号器（３００）は、符号化されたオーディオ・データを復号化する。
【００６４】
符号器内部のモジュール間の関係、および復号器内部のモジュール間の関係は、例示的な符号器および例示的な復号器における情報の流れを示しており、他の関係は、簡明にするため、図示していない。実装形態に、および所望される圧縮のタイプに応じて、符号器または復号器のモジュールは、追加すること、省略すること、複数のモジュールに分割すること、他のモジュールと組み合わせること、および／または同様のモジュールで置き換えることができる。代替の実施形態では、異なるモジュールおよび／または他の構成を有する符号器または復号器が、オーディオ・データの適応エントロピー符号化、および適応エントロピー復号化を行う。
【００６５】
Ａ．一般化されたオーディオ符号器
一般化されたオーディオ符号器（２００）は、選択器（２０８）、マルチ・チャネル・プリ・プロセッサ（２１０）、区分器／タイル構成器（partitioner/tile configurer）（２２０）、周波数変換器（２３０）、知覚モデル化器（perception modeler）（２４０）、重み付け器（weighter）（２４２）、マルチ・チャネル変換器（２５０）、量子化器（２６０）、エントロピー符号器（２７０）、コントローラ（２８０）、複合／純粋（mixed／pure）ロスレス符号器（２７２）および関連するエントロピー符号器（２７４）、ならびにビットストリーム・マルチプレクサ［「ＭＵＸ」］（２９０）を含む。符号器（２００）のモジュールのいくつかについて以下に説明する。一部の実施形態における符号器（２００）のその他のモジュールに関する説明については、関連出願データのセクションで言及している出願を参照されたい。
【００６６】
符号器（２００）は、何らかのサンプリング深度およびサンプリング・レートで時系列の入力オーディオ・サンプル（２０５）をパルス符号変調された（pulse code modulated）［「ＰＣＭ」］形式で受け取る。入力オーディオサンプル（２０５）は、マルチ・チャネル・オーディオ（例えば、ステレオ・モード、サラウンド（surround））であること、またはモノラルであることが可能である。符号器（２００）は、オーディオ・サンプル（２０５）を圧縮し、符号器（２００）の様々なモジュールによって生成される情報を多重化して、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ａｕｄｉｏ［「ＷＭＡ」］形式またはＡｄｖａｎｃｅｄ  Ｓｔｒｅａｍｉｎｇ  Ｆｏｒｍａｔ［［ＡＳＦ］］などの形式でビットストリーム（２９５）を出力する。代替として、符号器（２００）は、他の入力形式および／または出力形式で機能する。
【００６７】
最初、選択器（２０８）が、オーディオ・サンプル（２０５）に対して複数の符号化モードのなかから選択を行う。図２で、選択器（２０８）は、２つのモード、すなわち、複合／純粋ロスレス符号化モード（mixed/pure lossless coding mode）とロッシー符号化モード（lossy coding mode）の間で切替えを行う。ロスレス符号化モードは、複合／純粋ロスレス符号器（２７２）を含み、通常、高品質（および高いビットレート）の圧縮のために使用される。ロッシー符号化モードは、重み付け器（２４２）や量子化器（２６０）などの構成要素を含み、通常、調整可能な品質（また規制されたビットレート）の圧縮のために使用される。選択器（２０８）における選択決定は、ユーザ入力（例えば、ユーザが、高品質のオーディオ・コピーを作成するためにロスレス符号化を選択すること）に、またはその他の基準に、依存する。その他の状況（例えば、ロッシー圧縮が、十分な品質をもたらすことができない場合、またはビットを過剰に生じさせる場合）では、符号器（２００）は、フレームまたは１組のフレームに関してロッシー符号化から複合／純粋ロスレス符号化に切り換わることが可能である。
【００６８】
周波数変換器（２３０）は、オーディオ・サンプル（２０５）を受け取り、オーディオ・サンプル（２０５）を周波数領域内のデータに変換する。周波数変換器（２３０）は、周波数係数データのブロックを重み付け器（２４２）に出力し、ブロックサイズなどの副次情報をＭＵＸ（２９０）に出力する。周波数変換器（２３０）は、周波数係数と副次情報をともに知覚モデル化器（２４０）に出力する。
【００６９】
知覚モデル化器（２４０）は、人間聴覚システムの特性をモデル化して、所与のビット・レートで再構成されるオーディオ信号の知覚される品質を向上させる。一般に、知覚モデル化器（２４０）は、聴覚モデルに従ってオーディオ・データを処理した後、オーディオ・データに関する重み付け係数を生成するのに使用することができる重み付け器（２４２）に情報を提供する。知覚モデル化器（２４０）は、様々な聴覚モデルのいずれかを使用し、励起パターン情報、またはその他の情報を重み付け器（２４２）に送る。
【００７０】
量子化バンド重み付け器として、重み付け器（２４２）は、知覚モデル化器（２４０）から受け取られた情報に基づいて量子化マトリックスのための重み付け係数を生成し、その重み付け係数を周波数変換器（２３０）から受け取られたデータに適用する。重み付け器（２４２）は、重み付け係数のセットなどの副次情報をＭＵＸ（２９０）に出力する。次に、チャネル重み付け器として、重み付け器（２４２）は、知覚モデル化器（２４０）から受け取られた情報に基づき、またローカルで再構成された信号の品質にも基づいてチャネル特有の重み付け係数を生成する。このスカラー重み（scalar weight）により、再構成されたチャネルが、ほぼ一様な品質を有することが可能になる。重み付け器（２４２）は、係数データの重み付けされたブロックをマルチ・チャネル変換器（２５０）に出力し、チャネル重み係数のセットなどの副次情報をＭＵＸ（２９０）に出力する。代替として、符号器（２００）は、別の形態の重み付けを使用するか、重み付けを省く。
【００７１】
マルチ・チャネル・オーディオ・データの場合、重み付け器（２４２）によって生成される雑音形状の周波数係数データについて複数のチャネルは、しばしば、相関する。この相関を活用するため、マルチ・チャネル変換器（２５０）は、オーディオ・データにマルチ・チャネル変換を適用することができる。マルチ・チャネル変換器（２５０）は、例えば、使用されたマルチ・チャネル変換、およびフレームのマルチ・チャネル変換された部分、を示す副次情報をＭＵＸ（２９０）に対して生成する。
【００７２】
量子化器（２６０）は、マルチ・チャネル変換器（２５０）の出力を量子化し、エントロピー符号器（２７０）への量子化された係数データを生成し、ＭＵＸ（２９０）への量子化ステップ・サイズを含む副次情報を生成する。量子化により、情報の不可逆な損失が導入されるが、コントローラ（２８０）と連携して出力ビットストリーム（２９５）の品質およびビット・レートを符号器（２００）が調整することも可能になる。一部の実施形態では、量子化器（２６０）は、適応型の、一様な、スカラー量子化器である。代替の実施形態では、量子化器は、一様でない量子化器、ベクトル量子化器、および／または適応型でない量子化器であるか、または適応型の、一様な、スカラー量子化の異なる形態を使用する。
【００７３】
エントロピー符号器（２７０）は、量子化器（２６０）から受け取られた量子化された係数データを損失なく圧縮する。一部の実施形態では、エントロピー符号器（２７０）は、以下のセクションで説明するとおり、適応型のエントロピー符号化を使用する。エントロピー符号器（２７０）は、オーディオ情報を符号化するのに費やされたビットの数を計算し、その情報を速度／品質コントローラ（２８０）に送ることができる。
【００７４】
コントローラ（２８０）は、量子化器（２６０）と協働して、符号器（２００）の出力のビット・レートおよび／または品質を調整する。コントローラ（２８０）は、符号器（２００）の他のモジュールから情報を受け取り、受け取られた情報を処理して、現行の条件に与えられた所望の量子化係数を決定する。コントローラ（２８０）は、品質制約および／またはビット・レート制約を満たす目標を使用して、その量子化ファクタ（quantization factors）を量子化器（２６０）に出力する。
【００７５】
複合ロスレス／純粋ロスレス符号器（２７２）および関連するエントロピー符号器（２７４）が、複合／純粋ロスレス符号化モードの間オーディオ・データを圧縮する。符号器（２００）は、シーケンス全体に関して複合／純粋ロスレス符号化モードを使用するか、またはフレームごとに、またはその他の基準で、符号化モード間で切替えを行う。
【００７６】
ＭＵＸ（２９０）が、オーディオ符号器（２００）のその他のモジュールから受け取られた副次情報を、エントロピー符号器（２７０）から受け取られたエントロピー符号化されたデータとともに多重化する。ＭＵＸ（２９０）は、その情報をＷＭＡ形式で、またはオーディオ復号器が認識する別の形式で出力する。ＭＵＸ（２９０）は、符号器（２００）によって出力されるビットストリーム（２９５）を記憶する仮想バッファを含む。バッファの現在の充満度（fullness）、バッファの充満度の変化の速度、およびバッファのその他の特性が、コントローラ（２８０）によって使用されて、個々の適用例に合わせて品質および／またはビット・レートが調整される（例えば、一定の品質／可変のビット・レートに、または一定のビット・レート／可変の品質に、またはそれを下回るように）ことが可能である。
【００７７】
Ｂ．一般化されたオーディオ復号器
図３を参照すると、一般化されたオーディオ復号器（３００）が、ビットストリーム・デマルチプレクサ［「ＤＥＭＵＸ」］（３１０）と、１つまたは複数の復号器（３２０）と、複合／純粋ロスレス復号器（３２２）と、タイル構成(tile configuration)復号器（３３０）と、逆マルチ/チャネル変換器（３４０）と、逆量子化器／逆重み付け器（３５０）と、逆周波数変換器（３６０）と、重ね合わせ器（overlapper）／追加器（adder）（３７０）と、マルチ・チャネル・ポスト・プロセッサ（３８０）とを含む。復号器（３００）は、速度／品質制御または知覚モデル化のためのモジュールを含まないため、符号器（３００）よりいくぶん単純である。復号器（３００）のモジュールのいくつかについて以下に説明する。一部の実施形態における復号器（３００）のその他のモジュールに関する説明については、関連出願データのセクションにおいて言及している出願を参照されたい。
【００７８】
復号器（３００）は、圧縮されたオーディオ情報のビットストリーム（３０５）をＷＭＡ形式または別の形式で受け取る。ビットストリーム（３０５）は、エントロピー符号化されたデータ、ならびに復号器（３００）がオーディオ・サンプル（３９５）を再構成する元にする副次情報、を含む。
【００７９】
ＤＥＭＵＸ（３１０）が、ビットストリーム（３０５）中の情報を構文解析し、情報を復号器（３００）の各モジュールに送る。ＤＥＭＵＸ（３１０）は、オーディオの複雑さの変動、ネットワーク・ジッタ、および／またはその他のファクタ、に起因するビット・レートの短期の変動を補償するように１つまたは複数のバッファを含む。
【００８０】
１つまたは複数のエントロピー復号器（３２０）が、ＤＥＭＵＸ（３１０）から受け取られたエントロピー符号を損失なく圧縮解除する。簡明にするため、１つのエントロピー復号器を図３に示しているが、異なるエントロピー復号器を、ロスレス符号化モードとロッシー符号化モードのために、または各モード内に、使用してもよい。また、簡明にするため、図３は、モード選択論理を示していない。エントロピー復号器（３２０）は、通常、符号器（２００）において使用されたエントロピー符号化テクニックの逆を適用する。ロッシー符号化モードで圧縮されたデータを復号化する際、エントロピー復号器（３２０）は、量子化された周波数係数データを生成する。
【００８１】
複合／純粋ロスレス復号器（３２２）および関連するエントロピー復号器（３２０）が、複合／純粋ロスレス符号化モードに関して符号化されたオーディオ・データを損失なく圧縮解除する。復号器（３００）は、シーケンス全体に関して特定の復号化モードを使用するか、あるいはフレームごとに、またはその他の基準で復号化モードを切り換える。
【００８２】
逆マルチ・チャネル変換器（３４０）が、エントロピー復号器（３２０）からのエントロピー復号化された量子化された周波数係数データ、ならびに例えば、使用されたマルチ・チャネル変換、およびフレームの変換された部分を示すＤＥＭＵＸ（３１０）からの副次情報を受け取る。
【００８３】
逆量子化器／逆重み付け器（３５０）は、ＤＥＭＵＸ（３１０）から量子化係数ならびに量子化マトリックスを受け取り、逆マルチ・チャネル変換器（３４０）から量子化された周波数係数データを受け取る。逆量子化器／重み付け器（３５０）は、受け取られた量子化係数／マトリックス情報を必要に応じて圧縮解除し、次に、逆量子化および逆重み付けを行う。
【００８４】
逆周波数変換器（３６０）が、逆量子化器／逆重み付け器（３５０）によって出力された周波数係数データ、ならびにＤＥＭＵＸ（３１０）からの副次情報を受け取る。逆周波数変換器（３６０）は、符号器において使用された周波数変換の逆を適用し、ブロックを重ね合わせ器／追加器（３７０）に出力する。
【００８５】
重ね合わせ器／追加器（３７０）は、逆周波数変換器（３６０）および／または複合／純粋ロスレス復号器（３２２）から復号化された情報を受け取る。重ね合わせ器／追加器（overlapper/adder）（３７０）は、必要に応じてオーディオ・データを重ね合わせ、追加し、異なるモードで符号化されたオーディオ・データのフレームまたはその他のシーケンスをインターリーブする。
【００８６】
ＩＩＩ．適応エントロピー符号化／復号化モード切替え（Adaptive Entropy Encoding/Decoding Mode Switching）
入力シーケンスが単一の値（例えば、０）の多数の生起を含む場合、ラン・レベル符号化法が、しばしば、レベルの直接符号化よりも効果的である。ただし、ゼロでない量子化された変換係数がオーディオ・データ入力シーケンスにおいて、特に低い方の周波数で、一般的であるため、ラン・レベル符号化は、周波数範囲全体にわたって有効なわけではない。さらに、より高い品質のオーディオでは、ゼロでない量子化された変換係数が、高い方の周波数においてさえも、より一般的になる。（より高い品質のオーディオでは、量子化レベルは、通常、より小さい。）したがって、一部の実施形態では、図２の符号器（２００）などの符号器が、オーディオ・データ入力シーケンスのある部分に関してラン・レベル符号化を使用し、そのシーケンスの別の部分に関してレベルの直接符号化を使用することができるマルチ・モード符号化テクニックを実施する。図３の復号器（３００）のような復号器が、対応するマルチ・モード復号化テクニックを実施する。
【００８７】
Ａ．適応エントロピー符号化モード切替え
図４を参照すると、マルチ・モード符号化テクニック（technique；技術、方法）４００において、符号器は、まず、入力ストリーム中の信号レベルを直接に符号化する（４１０）。例えば、符号器は、信号レベルに対して直接に可変次元ハフマン符号化、コンテキスト・ベースの算術符号化、または別のエントロピー符号化テクニックを実施する。
【００８８】
符号化中の切替えポイントにおいて、符号器は、符号化スキームを切り換える（４２０）。符号器は、予め決められた切替えポイントにおいて符号化スキーム（scheme；仕組み、方式）を切り換えること、または入力データを解析して符号化スキームを切り換える適切なポイントを決定することができる。例えば、符号器は、入力シーケンスを解析して、ラン・レベル符号化に切り換える最良のポイントを見つけ出し、その切替えポイントを出力ビットストリームの中で復号器に送ることができる。あるいは、符号器は、入力データ中の連続するゼロ（または代替として、別の顕著な値）をカウントすることによって切替えポイントを、適応して計算し、連続するゼロの特定のしきい値数がカウントされた場合にラン・レベル符号化に切り換えることができる。復号器も同じやり方で切替えポイントを計算することができ、したがって、切替えポイントは、ビットストリームに含められる必要がない。あるいは、符号器および復号器は、何らかの他の基準を使用して切替えポイントを決定する。
【００８９】
切替えポイント後、符号器は、残りの信号レベルをラン・レベル符号化を使用して符号化する（４３０）。例えば、符号器は、ラン・レングスおよび信号レベルに対してハフマン符号化、コンテキスト・ベースの算術符号化、または別のエントロピー符号化テクニックを実施する。符号器は、切替えポイントの前と後で同一のテクニック（例えば、コンテキスト・ベースの算術符号化）を使用しても、または異なるテクニックを使用してもよい。
【００９０】
さらに、図４、および適用例の様々な他の図は、単一の切替えポイントを示しているが、追加の切替えポイントを使用して入力データを２つより多くの部分に分割することもできる。例えば、連続するゼロのより高いしきい値に対して追加の適応切替えポイントを設定することができる。これにより、異なる符号化スキームを異なる部分に適用することができる。あるいは、符号器は、シーケンスにおける様々な分割ポイントを試して、異なる分割構成に関する符号化効率を、復号器にその異なる構成を通知する（signaling）費用を加え、評価することができる。
【００９１】
図５は、一実装形態による適応切替えポイント計算を伴うマルチ・モード符号化テクニック（５００）を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数それぞれの信号レベルである。実際には、切替えポイントの位置は、圧縮されている信号、および符号化のビット・レート／品質に依存する。代替として、入力データは、別の形態および／または編成のオーディオ・データである。
【００９２】
最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を０に設定し（５１０）、符号化状態変数を「直接（direct）」に設定する（５１２）。
【００９３】
符号器は、次の係数ＱＣを入力として受け取る（５２０）。次に、符号器は、その係数ＱＣがゼロであるかどうかを調べる（５３０）。係数ＱＣがゼロでない場合、符号器は、ラン・カウントをリセットする（５３８）。それ以外の場合（すなわち、係数ＱＣがゼロである場合）、符号器は、ラン・カウント変数を増分し（５３２）、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる（５３４）。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズなどのファクタに依存すること（例えば、２５６の係数のシーケンスに対して４のラン・カウントしきい値、５１２の係数のシーケンスに対して８のラン・カウントしきい値等）、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化(run-level encoding)［「ＲＬＥ」］に切り換える（５３６）。
【００９４】
次に、符号器は、適切な場合、係数ＱＣを符号化する（５４０）。（一部のケースでは、グループの係数が、ベクトル・ハフマン符号化などのテクニックを使用して一緒に符号化される。そのようなケースでは、符号器は、係数ＱＣを符号化することを延期することができる。）
【００９５】
次に、符号器は、符号化モードを切り換えるべきかどうかを調べる（５５０）。詳細には、符号器は、符号化状態を調べる。符号化状態がもはや直接ではない場合（例えば、ゼロ係数がしきい値数に達した結果として、符号器が符号化状態をＲＬＥに切り換えた場合）、符号器は、係数のラン・レベル符号化を開始する（５６０）。（やはり、係数のグループが一緒に符号化されるケースでは、符号器は、一群の係数に関して好都合なブレークポイントに達するまで、切替えの決定を延期することができる。）
【００９６】
符号器は、符号化モードを切り換えない場合、係数を符号化することを終えたかどうかを調べる（５７０）。終えている場合、符号器は、終了する。終えていない場合、符号器は、次の係数を入力して（５２０）符号化プロセスを続ける。
【００９７】
Ｂ．適合エントロピー復号化モード切替え
図６を参照すると、マルチ・モード復号化テクニック（６００）において、復号器は、符号化された信号レベルを直接に復号化する（６１０）。例えば、復号器は、符号化された信号レベルに対して直接に、可変次元ハフマン復号化、コンテキスト・ベースの算術復号化、または別のエントロピー復号化テクニックを実施する。
【００９８】
復号化中に切替えポイントにおいて、復号器は、復号化スキームを切り換える（６２０）。切替えポイントが予め決められている場合、復号器は、フラグまたは他の通知機構の形態で、復号化スキームをいつ切り換えるかを復号器に明示的に告げるデータを受け取ることができる。あるいは、復号器は、自らが受け取る入力データに基づいて復号化スキームをいつ切り換えるかを、適応して計算することができる。復号器は、切替えポイントを計算する場合、符号器によって使用されたのと同じ計算テクニックを使用して、復号化スキームが正しいポイントで切り換わることを確実にする。例えば、復号器は、連続するゼロ（または代替として、別の顕著な値）をカウントして切替えポイントを、適応して決定する。一実装形態では、復号器は、図５に示した符号器テクニックに対応する技術を使用する。あるいは、復号器は、何らかの他の基準を使用して切替えポイントを決定する。
【００９９】
切替えポイント後、復号器は、残りのラン・レベル符号化された信号レベルを復号化する（６３０）。例えば、復号器は、符号化されたラン・レングスおよび信号レベルに対して、ハフマン復号化技術、コンテキスト・ベースの算術復号化技術、または別のエントロピー復号化テクニックを実施する。復号器は、切替えポイントの前と後で同じテクニック（例えば、コンテキスト・ベースの算術復号化）を使用しても、または異なるテクニックを使用してもよい。
【０１００】
ＩＶ．可変次元ハフマン符号化および可変次元ハフマン復号化
直接信号レベルなどのシンボルを、スカラー・ハフマン符号化を使用して符号化することができるが、そのような手法は、シンボルを符号化するための最適なビット数が分数である場合、限界がある。また、スカラー・ハフマン符号化は、またスカラー・ハフマン符号がシンボル間の統計上の相関を考慮に入れることができないことによって、限界がある。ベクトル・ハフマン符号化は、スカラー・ハフマン符号化よりも良好なビット・レート低下をもたらす（例えば、符号器が、２進ハフマン符号における確率を分数として活用できるようにすることにより）。また、一般に、より高い次元のベクトルは、より小さい次元のベクトルより良好なビット・レート低下をもたらす。ただし、符号（code）がそれぞれ可能なシンボルの組合せに割り当てられる場合、ベクトル次元が増加するにつれてコードブック・サイズが指数関数的に増大する。例えば、３２ビットのシステムでは、４次元ベクトルに関する可能な組合せの数は、（２32）4である。また、ベクトルを照合して、ハフマン符号を見つけ出すのにかかる探索時間も、コードブック・サイズが増大するにつれて劇的に増加する。
【０１０１】
一部の実施形態では、コードブック・サイズを小さくするため、図２の符号器（２００）のような符号器が、可変次元ベクトル・ハフマン符号化テクニックを使用する。コードブック符号（codebook code）をそれぞれの可能なｎ次元の組合せに割り当てるのではなく、限られた数の最も確率の高いｎ次元ベクトルに符号が割り当てられる。特定のｎ次元ベクトルに符号（code）が割り当てられない場合、ｎ次元ベクトルは、代わりに、より小さい次元のベクトル（例えば、２つのｎ／２次元ベクトル）として、ハフマン符号を有するスカラーとして、または離散値を表わすために何らかのテーブルのないテクニックを使用するスカラーとして、符号化される。図３の復号器（３００）のような復号器が、ベクトルに対する符号を見つけ出し、関連する値を見つけ出すことによってベクトルを再構成する。
【０１０２】
例えば、シンボル当たり２５６の値が可能な４次元ベクトルの場合、符号器は、５００の最も確率の高い４次元ベクトルをハフマン符号を使用して符号化し、その他のベクトルを示すのにエスケープ符号を使用する。符号器は、そのような他のベクトルを２次元ベクトルに分割する。符号器は、５００の最も確率の高い２次元ベクトルをハフマン符号を使用して符号化し、その他のベクトルを示すのにエスケープ符号を使用し、このその他のベクトルは、分割されて、スカラー・ハフマン符号を使用して符号化される。したがって、符号器は、５０１＋５０１＋２５６個の符号を使用する。
【０１０３】
どのベクトルまたはどのスカラーがテーブル中のハフマン符号で表わされるかを決定することに関して、またハフマン符号自体をテーブルに割り当てることに関して、コードブック構成は、静的であること、以前に符号化されたデータに適応すること、または符号化されるべきデータに適応することが可能である。
【０１０４】
Ａ．可変次元ベクトル・ハフマン符号化
図７を参照すると、符号器が、可変次元ベクトル・ハフマン（variable-dimension vector Huffman）［「ＶＤＶＨ」］符号化テクニック（７００）を使用する。例えば、符号器は、このテクニック（７００）を使用して、オーディオ・データの周波数係数に関する信号レベルを直接に符号化する。代替として、符号器は、このテクニック（７００）を使用して別の形態のオーディオ・データを符号化する。簡明にするため、図７は、コードブック構成を示していない。コードブック構成は、静的であること、以前に符号化されたデータに適応すること、または符号化されるべきデータに適応することが可能である。
【０１０５】
符号器は、ｎ個のシンボルの次のベクトルを獲得する（７１０）。例えば、符号器は、次の４個のシンボルを順次に獲得する。
【０１０６】
符号器は、コードブックがそのベクトルに対する符号を含むかどうかを調べる（７２０）。含む場合、符号器は、単一のハフマン符号を使用して（７３０）そのベクトルを符号化する。例えば、ｎ次元ベクトルをどのように符号化するかを決定するのに、符号器は、そのベクトルに関連する符号に関してｎ次元ベクトル符号テーブルを調べる。より大きい次元のベクトルは、通常、より大幅なビット・レート節約をもたらすため、符号器は、最も確率の高いｎ次元ベクトルに対してハフマン符号を使用する。ただし、テーブルのサイズを制限するため、ｎ次元ベクトルの一部だけが、関連する符号を有する。
【０１０７】
コードブックがベクトルに対する符号を含まない場合、符号器は、そのベクトルをより小さいベクトルおよび／またはスカラーに分割し（７４０）、そのより小さいベクトルおよび／またはスカラーを符号化する。例えば、符号器は、ｎ個のシンボルのベクトルをｘ個のｎ／ｘシンボル・ベクトルに分割する。各ｎ／ｘシンボル・ベクトルに関して、符号器は、符号化テクニックを再帰的に繰り返し、ｎ／ｘシンボル・ベクトル、またはｎ／シンボル・ベクトルを構成するベクトル／スカラーが、ハフマン符号で、または（スカラーに関して）離散値を表わすために、テーブルのないテクニックを使用して符号化された時点で終了する。
【０１０８】
次に、符号器は、符号化されるべきさらなるベクトルが存在するかどうかを調べる（７５０）。存在しない場合、符号器は、終了する。存在する場合、符号器は、ｎ個のシンボルの次のベクトルを獲得する（７１０）。
【０１０９】
１．例としての実装形態
図８は、一実装形態におけるＶＤＶＨ符号化を使用してベクトルを符号化するための詳細なテクニック（８００）を示している。このテクニック（８００）では、符号器は、複数シンボルから成るベクトル中のシンボルの整数値を合計して、そのベクトルを単一のハフマン符号を使用して符号化するか、またはそのベクトルをより小さいベクトル／スカラーに分割するかを決定する。これにより、コードブック・サイズが実質的に制限され、符号の探索が迅速になる。
【０１１０】
ｎ次元［「ｎ−ｄｉｍ」］ベクトルに対するコードブック・テーブルは、Ｌ1個のｎ次元ベクトルに対するハフマン符号を含む。また、コードブック・テーブルは、エスケープ符号も含む。Ｌ1個の符号は、ベクトル成分（整数である）の合計が特定のしきい値Ｔ1を下回る各ベクトルに対するものである。例えば、ｎが４であり、４次元ベクトルに関するしきい値Ｔ1が６であるものと想定する。４次元ベクトルに関するそのコードブック・テーブルは、エスケープ符号および１２６個の符号を含み、それぞれの可能なベクトルの成分（例えば、成分の絶対値）の合計が６より小さい−（０，０，０，０）、（０，０，０，１）などである。ベクトルの成分合計に基づいてテーブルサイズを制限することは、一般に、最も確率の高いベクトルがより小さい成分合計を有するベクトルであるため、有効である。
【０１１１】
ｎ次元ベクトルに対するコードブック・テーブルが、特定のｎ次元ベクトルに対するハフマン符号を有さない場合、符号器は、出力ビットストリームにエスケープ符号を追加し、他のコードブック・テーブルの中でより小さい次元の複数のベクトルまたは複数のスカラーをルックアップして、そのｎ次元ベクトルをより小さい次元の複数のベクトルまたは複数のスカラーとして符号化する。例えば、より小さい次元は、ｎ／２が１でない限り、ｎ／２であり、ｎ／２が１である場合、ｎ次元ベクトルは、複数のスカラーに分割される。代替として、ｎ次元ベクトルは、何らかの別の仕方で分割される。
【０１１２】
より小さい次元のベクトルに対するコードブック・テーブルは、Ｌ2個のより小さい次元のベクトルに対するハフマン符号、ならびにエスケープ符号を含む。Ｌ2個の符号は、より小さい次元のテーブルに対してベクトル成分の合計が特定のしきい値Ｔ2を下回る各ベクトルに対する符号である。例えば、より小さい次元が２であり、２次元ベクトルに関するしきい値Ｔ2が１６であるものと想定する。２次元ベクトルに対するコードブック・テーブルは、エスケープ符号、および成分（例えば、成分の絶対値）の合計が１６を下回るそれぞれの可能なベクトルごとに１つの１３６個の符号、−（０，０），（０，１）、などを含む。
【０１１３】
より小さい次元のベクトルに対するコードブック・テーブルが特定のより小さい次元のベクトルに対するハフマン符号を有さない場合、符号器は、エスケープ符号を出力ビットストリームに追加し、他のコードブック・テーブルを使用してそのベクトルをさらに小さい次元のベクトルまたはスカラーとして符号化する。このプロセスは、スカラー・レベルに至るまで繰り返される。例えば、分割は、スカラー・レベルに至るまで２の累乗で行われる。代替として、ベクトルは、何らかの別の仕方で分割される。
【０１１４】
スカラー・レベルで、コードブック・テーブルは、Ｌ3個のスカラー、ならびにエスケープ符号を含む。Ｌ3個の符号は、特定のしきい値Ｔ3（小さい値の確率が高いと想定する）を下回る各スカラーに対するものである。例えば、スカラーに関するしきい値Ｔ3が１００であるものと想定する。スカラーに関するコードブック・テーブルは、１００個の符号、およびエスケープ符号を含む。スカラーは、スカラー符号テーブルの中で関連する符号を有さない場合、エスケープ符号、およびテーブルなしのテクニックによる値（例えば、リテラル（ｌｉｔｅｒａｌ））を使用して符号化される。このセクションで与えた数値的な例のすべてを使用すると、テーブルは、合計で１２６＋１＋１３６＋１＋１００＋１＝３６５個の符号を含む。
【０１１５】
テーブルの次元サイズ、ベクトル分割ファクタ、ベクトル成分合計に関するしきい値は、実装形態に依存する。その他の実装形態は、異なるベクトル・サイズ、異なる分割係数、および／または異なるしきい値を使用する。代替として、符号器は、ＶＤＶＨ符号化を行う際にベクトル成分合計以外の基準を使用してベクトル・サイズ／コードブック・テーブル切替えを行う。
【０１１６】
図８を参照すると、符号器はまず、ｎ次元ベクトルを獲得する（８１０）。ｎ次元ベクトルは、各シンボルが、例えば、オーディオ・データの周波数係数に関する量子化されたレベルを表わす値を有するｎ個のシンボルを含む。
【０１１７】
符号器は、ベクトル成分を合計して（８１２）、その合計をｎ次元ベクトルに関するしきい値と比較する（８２０）。合計がしきい値より小さいか、またはしきい値に等しい場合、符号器は、符号テーブルからのハフマン符号を使用してそのｎ次元ベクトルを符号化し（８２２）、符号化が完了するまで継続する（８２４）。合計がしきい値より大きい場合、符号器は、エスケープ符号を送り（８２６）、そのｎ次元ベクトルをｎ／２の次元を有する２つのより小さいベクトルに分割する（８３０）。
【０１１８】
符号器は、次のｎ／２次元ベクトルを獲得し（８４０）、そのｎ／２次元ベクトルの成分を合計する（８４２）。符号器は、ｎ／２次元ベクトルに関連するしきい値に対してその合計をチェックする（８５０）。合計がしきい値より小さいか、またはしきい値に等しい場合、符号器は、ｎ／２次元ベクトルに関する符号テーブルからのハフマン符号を使用してそのｎ／２次元ベクトルを符号化し（８５２）、符号器がｎ／２次元ベクトルを符号化することを終えていない場合（８５４）、次のｎ／２次元ベクトルを獲得する（８４０）。合計がｎ／２次元ベクトルに関するしきい値より大きい場合、符号器は、別のエスケープ符号を送る（８５６）。
【０１１９】
符号器は、一般に、ベクトルを処理する際にこのパターンに従い、各ベクトルを符号化するか、またはそのベクトルをより小さい次元のベクトルに分割する。符号器がベクトルを２つのスカラー（１次元）成分に分割する場合（８６０）、符号器は、次のスカラーを獲得し（８７０）、そのスカラーの値をスカラー値に関連するしきい値と比較する（８８０）。スカラー値がしきい値より小さいか、しきい値に等しい場合（８８０）、符号器は、スカラーに関する符号テーブル（８８２）からのハフマン符号を使用してスカラーを符号化する。スカラー値がしきい値より大きい場合、符号器は、テーブルのないテクニックを使用してそのスカラーを符号化する（８８４）。次に、符号器は、スカラーを処理するのを終えていない場合（８８６）、次のスカラーを獲得する（８７０）。
【０１２０】
代替として、符号器は、ＶＤＶＨ符号化を行う際に、異なる次元サイズを有するテーブルを使用し、ベクトルを２の累乗による以外の何らかの形で分割し、かつ／またはベクトル成分合計以外の基準を使用してベクトル・サイズ／コードブック・テーブルを切り換える。
【０１２１】
２．適応切替え
図９は、符号器が、ラン・レングスおよび信号レベルの符号化に切り換えるための切替えポイントを一実装形態に従って適応して決定する態様で、直接信号レベルの係数のＶＤＶＨ符号化をするテクニック（９００）を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、入力データは、別の形態および／または編成のオーディオ・データである。
【０１２２】
最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を０に設定し（９１０）、現在のベクトル変数を空（empty）に設定し（９１２）、符号化状態変数を直接可変次元ベクトル・ハフマン［「ＤＶＤＶＨ」］に設定する（９１４）。
【０１２３】
符号器は、次の係数ＱＣを入力として受け取る（９２０）。次に、符号器は、その係数がゼロであるかどうかを調べる（９３０）。係数ＱＣがゼロでない場合、符号器は、ラン・カウントをリセットし（９３８）、その係数ＱＣを現在のベクトルに追加する（９４０）。それ以外の場合（すなわち、係数ＱＣがゼロである場合）、符号器は、ラン・カウント変数を増分し（９３２）、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる（９３４）。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ（例えば、２５６個の係数の入力シーケンス中の４つのゼロ）などのファクタに依存すること、または何らかの他の形で適応することが可能である。例えば、しきい値は、入力シーケンス中の係数に関連して、または関連せずに増分、または減分することができる。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化［「ＲＬＥ」］に切り換え（９３６）、係数ＱＣは、現在のベクトルの成分として追加される（９４０）。
【０１２４】
係数ＱＣを現在のベクトルに追加することにより、ベクトルの次元が増分される。符号器は、現在のベクトル中の成分の数を現在のベクトルの最大次元と比較することにより、現在のベクトルが符号化される用意ができているかどうかを判定する（９５０）。用意ができている場合、符号器は、ＤＶＤＶＨ符号化を使用して現在のベクトルを符号化する（９６０）。現在のベクトルが最大次元より小さいが、係数ＱＣがシーケンスの最後である場合、符号器は、現在のベクトルに埋込みを行い、ＤＶＤＶＨ符号化を使用して現在のベクトルを符号化する（９６０）。最大次元は、実装形態に依存する。一実装形態では、最大次元は、８である。ただし、最大次元は、例えば、コードブックを作成する、記憶する、または伝送するのに利用可能なリソースの量に応じて、大きくする、または小さくすることができる。
【０１２５】
ベクトルを符号化した後、符号器は、符号化状態を調べる（９７０）。符号化状態がもはやＤＶＤＶＨではない場合（例えば、ゼロ係数のしきい値数を超えた結果、符号器が、符号化状態をＲＬＥに切り換えている場合）、符号器は、ラン・レングスおよびレベルとして係数の符号化を開始する（９８０）。ラン・レベル符号化は、例えば、ハフマン符号化、ベクトル・ハフマン符号化、またはコンテキスト・ベースの算術符号化を含め、いくつかの仕方で行うことができる。一部の実施形態では、ラン・レベル符号化は、１つのテーブルが、より短いランの可能性が高いデータを符号化するのに使用され、もう１つのテーブルが、より長いランの可能性が高いデータを符号化するために使用される２つのハフマン符号テーブルを有するハフマン符号化を使用して行われる。符号器は、各テーブルを試みて、どちらのテーブルを符号器が使用したかを示すシグナル・ビットと共に、ひとつのテーブルからの符号を選択する。
【０１２６】
符号化状態が切り換わっていない、または現在のベクトルが、符号化の用意ができていない場合、符号器は、符号化されるべきさらなる係数が存在するかどうかを判定する（９９０）。存在する場合、符号器は、次の係数を入力し（９２０）、符号化プロセスを続ける。
【０１２７】
Ｂ．可変次元ベクトル・ハフマン復号化
図１０は、図７に示したＶＤＶＨ符号化テクニック（７００）に対応するＶＤＶＨ復号化テクニック（１０００）を示している。例えば、復号器は、このテクニック（１０００）を使用して、オーディオ・データの周波数係数に関する符号化された信号レベルを直接に復号化する。代替として、復号器は、このテクニックを使用して別の形態のオーディオ・データを復号化する。
【０１２８】
復号器は、ｎ次元ベクトル・ハフマン符号テーブルに関する次のハフマン符号を獲得する（１０１０）。例えば、復号器は、シーケンス内の４つのシンボルの対する次のハフマン符号を獲得する。
【０１２９】
復号器は、ハフマン符号がｎ次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる（１０２０）。エスケープ符号ではない場合、復号器は、そのハフマン符号によって表わされるｎ個のシンボルを獲得する（１０３０）。例えば、復号器は、４次元ベクトル・ハフマン・コードブックの中でそのハフマン符号に関連する４つのシンボルを獲得する。
【０１３０】
符号がエスケープ符号である場合、ｎ次元のコードブックはそのベクトルに対する符号を含まず、復号器は、より小さいベクトルおよび／またはスカラーに対するハフマン符号を獲得する（１０４０）。例えば、復号器は、ｘ個のｎ／ｘシンボル・ベクトルに対する符号を獲得する。各ｎ／ｘシンボル・ベクトルに関して、復号器は、復号化テクニックを再帰的に繰り返し、ｎ／ｘシンボル・ベクトル、またはｎ／ｘシンボル・ベクトルを構成するベクトル／スカラーが復号化された時点で終了する。
【０１３１】
次に、復号器は、復号化されるべきｎ次元ベクトル・ハフマン符号テーブルに関するさらなる符号が存在するかどうかを調べる（１０５０）。存在しない場合、復号器は終了する。存在する場合、復号器は、次のそのようなハフマン符号を獲得する（１０１０）。
【０１３２】
１．例示的な実装形態
図１１は、一実装形態におけるＶＤＶＨ符号化を使用して符号化されたベクトルを復号化するための詳細なテクニック（１１００）を示している。この復号化テクニック（１１００）は、図８に示した符号化テクニック（８００）に対応する。
【０１３３】
図１１を参照すると、復号器は、ｎ次元ベクトル・ハフマン符号テーブルに関する次の符号を獲得する（１１１０）。復号器は、その符号が、ｎ次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる（１１２０）。エスケープ符号ではない場合、復号器は、ｎ次元ベクトルテーブルの中でその符号によって表わされるｎ個のシンボルを獲得する（１１２２）。復号器は、符号化されたデータを処理することを終えるまで継続する（１１２４）。
【０１３４】
符号がｎ次元ベクトル・ハフマン符号テーブルに関するエスケープ符号である場合、復号器は、ｎ／２次元ベクトル・ハフマン符号テーブルを使用して、そのｎ次元ベクトルを２つのｎ／２次元ベクトルとして復号化する。具体的には、復号器は、ｎ／２次元ベクトル・ハフマン符号テーブルに関する次の符号を獲得する（１１３０）。復号器は、符号がｎ／２次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる（１１４０）。エスケープ符号ではない場合、復号器は、ｎ／２次元ベクトル・ハフマン符号テーブルの中でその符号によって表わされるｎ／２個のシンボルを獲得する（１１４２）。復号器は、そのような符号の処理が完了するまで、ｎ／２次元ベクトル・ハフマン符号テーブルに関する符号を処理することを続ける（１１４４）。
【０１３５】
符号がｎ／２次元ベクトル・ハフマン符号テーブルに関するエスケープ符号である場合、復号器は、そのｎ／２次元ベクトルを２つのｎ／４次元ベクトルとして復号化する。この際、この２つのｎ／４次元ベクトルは、スカラーであることが可能であるといった具合である。
【０１３６】
復号器は、一般に、エスケープ符号が検出された場合、復号化されるべきベクトルがスカラー（１次元ベクトル）になるまで、より大きい次元のベクトルを２つのより小さい次元のベクトルとして復号化するこのパターンに従う。スカラーになった時点で、復号器は、スカラー・ハフマン符号テーブルに関する次の符号を獲得する（１１５０）。復号器は、その符号がスカラー・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる（１１６０）。エスケープ符号ではない場合、復号器は、スカラー・ハフマン符号テーブルの中でその符号によって表されるスカラーを獲得する（１１６２）。復号器は、そのような符号の処理が完了するまで、スカラーに対する符号を処理することを続ける（１１６４）。符号がスカラー・ハフマン符号テーブルに関するエスケープ符号であった場合、そのスカラーは、テーブルのないテクニックを使用して符号化され、復号器は、その値を獲得する（１１７０）。
【０１３７】
代替として、復号器は、ＶＤＶＨ復号化を行う際、異なる次元サイズを有するテーブルを使用し、かつ／または２の累乗による以外の何らかの別の形でベクトルを分割する。
【０１３８】
２．適応切替え
図１２は、復号器が、ラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを適応して決定する態様で、ＶＤＶＨ符号化を使用して符号化されたベクトルを、復号化するための一実装形態によるテクニック（１２００）を示している。適応切替えポイントは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルであるデータ中の連続するゼロ値係数のカウンタに依存する。代替として、データは、別の形態および／または編成のオーディオ・データである。
【０１３９】
最初に、復号器は、いくつかの変数を初期設定する。具体的には、復号器は、ラン・カウントを０に設定し（１２１０）、復号化状態をＤＶＤＶＨに設定する（１２１２）。
【０１４０】
復号器は、次のベクトルを、ハフマン符号テーブルの中でそのベクトルに対する符号をルックアップすることによって復号化する（１２２０）。例えば、復号器は、図１１に示した復号化テクニック（１１００）を行う。次に、復号器は、復号化されたベクトルに基づいてラン・カウントを更新する（１２３０）（具体的には、復号化されたベクトルにおけるゼロ値の数を使用して、ラン・カウントをリセットする、増分する、または別の仕方で調整する）。
【０１４１】
復号器は、ラン・カウントがしきい値を超えているかどうかを調べる（１２４０）。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ（例えば、２５６個の係数の入力シーケンス中の４つのゼロ）などのファクタに依存すること、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、復号器は、ラン・レベル復号化を使用して符号化されている係数を復号化することを開始する（１２５０）。ラン・レベル復号化は、例えば、ハフマン復号化、ベクトル・ハフマン復号化、またはコンテキスト・ベースの算術復号化を含むいくつかのやり方で行うことができる。
【０１４２】
一部の実施形態では、ラン・レベル復号化は、１つのテーブルが、より短いランの可能性が高いデータを復号化するために使用され、もう１つのテーブルが、より長いランの可能性が高いデータを復号化するために使用される、２つの可能なハフマン符号テーブルを有するハフマン復号化を使用して行われる。復号器が符号を受け取った際、その符号中のシグナル・ビットは、どちらのテーブルを符号器が使用したかを示し、復号器は、適切なテーブルの中でその符号をルックアップする。
【０１４３】
ラン・カウントがしきい値を超えていない場合、復号器は、復号化が終了するまでベクトルを処理することを続ける（１２６０）。
【０１４４】
Ｖ．コンテキスト・ベースの算術符号化およびコンテキスト・ベースの算術復号化
一部の実施形態では、図２の符号器（２００）のような符号器が、コンテキスト・ベースの算術（context-based arithmetic）［「ＣＢＡ」］符号化を使用してオーディオ・データのシーケンスを符号化する。ＣＢＡ符号化では、入力シンボルに関する異なる確率分布が、異なるコンテキストに関連付けられる。入力シーケンスを符号化するのに使用される確率分布は、コンテキストが変化した際に変化する。コンテキストは、入力シーケンスの中で出現する特定の入力シンボルの確率に影響を及ぼすと予期される様々なファクタを測定することによって計算することができる。図３の復号器（３００）のような復号器が、対応する算術復号化（arithmetic decoding）を行う。
【０１４５】
係数を直接に（すなわち、直接レベルとして）符号化する際、符号器は、シーケンス中の前の係数の値を含むファクタを使用してコンテキストを計算する。ラン・レベル符号化を使用して係数を符号化する際、符号器は、前の係数の値に加え、現在のランの長さおよび前のランの長さを含むファクタを使用してコンテキストを計算する。符号器は、計算されたコンテキストに関連する確率分布を使用して、そのデータに適切な算術符号を決定する。したがって、コンテキストを計算する際に様々なファクタを使用することにより、符号器は、データに対して、またそのデータの表現のモード（すなわち、直接、ランレベル）に対して適応するようにコンテキストを決定することができる。
【０１４６】
代替の実施形態では、符号器は、追加のファクタを使用すること、いくつかのファクタを省くこと、または前述したファクタを他の組合せで使用することができる。
【０１４７】
Ａ．コンテキストの例示的な実装形態
表２〜５および図１３Ａ〜１３Ｄ、１４Ａ〜１４Ｈ、および１５Ａ〜１５Ｈは、例示的な実装形態において、それぞれ、ＣＢＡ符号化を行う際、およびＣＢＡ復号化を行う際に使用されるコンテキストおよび確率分布を示している。代替として、ＣＢＡ符号化およびＣＢＡ復号化は、異なるコンテキストおよび／または異なる確率分布を使用する。
【０１４８】
以下の説明は、例示的な実装形態における符号器におけるコンテキスト計算を中心的に扱うが、復号器は、以前に復号化されたオーディオ・データを使用して復号化中に対応するコンテキスト計算を行う。
【０１４９】
前述したとおり、符号器は、直接レベルだけを符号化していても、またはラン・レングスおよび直接レベルを符号化していても、ＣＢＡ符号化を使用して係数を符号化することができる。ただし、一実装形態では、コンテキストを計算するためのテクニックは、符号器が直接レベルだけを符号化しているか、またはラン・レングスおよび直接レベルを符号化しているかに応じて異なる。さらに、ラン・レングスおよび直接レベルを符号化する際、符号器は、ラン・レングスを符号化しているか、または直接レベルを符号化しているかに応じて異なるコンテキストを使用する。
【０１５０】
符号器は、因果（関係を示す）コンテキスト（causal context）を使用する直接レベルの算術符号化中に、４コンテキスト・システムを、コンテキストを計算するために使用する。符号器は、前のレベル（Ｌ［ｎ−１］）の値、および前のレベルの直前のレベル（［Ｌ［ｎ−２］］）に基づいて現在のレベルＬ［ｎ］に関するコンテキストを計算する。このコンテキスト計算は、  
１）前のレベルが低である場合、現在のレベルは、低である可能性が高いという想定、および  
２）前の２つのレベルは、その他のレベルより良好な現在のレベルの予測因子（predictor）である可能性が高いという想定、  
に基づいている。表２は、４コンテキスト・システムにおける前の２つのレベルの値に関連するコンテキストを示している。図１３Ａ〜１３Ｄは、それらのコンテキストに関する現在のレベルに関する確率分布を示している。
【０１５１】
【表２】
2010160517.tif 000004
【０１５２】
図１３Ａ〜１３Ｄの確率分布は、前の２つのレベルがゼロか、またはゼロに近い場合、現在のレベルは、ゼロであるか、またはゼロに近い可能性がより高い、という傾向を示している。
【０１５３】
また、符号器は、レベルのラン・レングス符号化を行う際にもＣＢＡ符号化を使用することができる。ラン・レングスを符号化する際、コンテキストを計算するために符号器によって使用されるファクタには、入力シーケンス中のゼロのパーセンテージ（シーケンスの一部、またはすべてにわたるその時点までの合計（running total））、およびゼロの前のランの長さ（Ｒ［ｎ−１］）が含まれる。符号器は、表３で以下に示すとおり、入力シーケンス中のゼロのパーセンテージに基づいてゼロ・パーセンテージ指標を計算する。
【０１５４】
【表３】
2010160517.tif 000005
【０１５５】
符号器は、ゼロ・パーセンテージ指標を前のランの長さとともに使用して、表４に示すとおり、現在のラン・レングスを符号化するためのコンテキストを計算する。図１４Ａ〜１４Ｈは、それらのコンテキストに関連するラン・レングス値に関する確率分布を示している。
【０１５６】
【表４】
2010160517.tif 000006
【０１５７】
例えば、レベルの９１％がゼロである（０というゼロ・パーセンテージ指標をもたらす）入力シーケンスでは、ゼロの前のランの長さが１５であった場合、コンテキストは、４である。図１４Ａ〜１４Ｈの確率分布は、入力シーケンス中のゼロのパーセンテージがより高い場合、より長いラン・レングスの可能性が高いことを示している。また、その確率分布は、所与のゼロ・パーセンテージ指標の範囲内で、ゼロのラン・レングスに続くラン・レングスは、ゼロより大きいラン・レングスに続くラン・レングスより短い可能性が高い、という傾向を示している。
【０１５８】
ラン・レベル・データ中のレベルを符号化する際、コンテキストを計算するために符号器によって使用されるファクタには、現在のランの長さ（Ｒ［ｎ］）、前のランの長さ（Ｒ［ｎ−１］）、および前の２つのレベル（Ｌ［ｎ−１］およびＬ［ｎ−２］）の値が含まれる。このコンテキスト計算は、現在のレベルは、レベル間の間隔（すなわち、ランレングス）が大き過ぎない限り、２つの前のレベルに依存するという所見に基づいている。また、前のレベルが低い場合、および前のランが短い場合、現在のレベルは、低である可能性がより高い。前のランが長い場合、前のレベルは、現在のレベルに対してそれほど影響を有さない。
【０１５９】
現在のラン・レングスの値、前のラン・レングスの値、および前の２つのレベルの値に関連付けられたコンテキストを以下に表５で示している。図１５Ａ〜１５Ｈは、それらのコンテキストに関連するレベルに関する確率分布を示している。
【０１６０】
【表５】
2010160517.tif 000007
【０１６１】
例えば、ゼロの現在のランの長さが１であり、ゼロの前のランの長さが２であり、前のレベルが１である入力シーケンスでは、コンテキストは、１である。図１５Ａ〜１５Ｈの確率分布は、前のレベルが低い場合、および現在のラン・レングスおよび前のラン・レングスが短い場合、現在のレベルは、ゼロであるか、またはゼロに近い可能性がより高い。
【０１６２】
Ｂ．適応切替え
図１６は、符号器がラン・レングスおよび信号レベルの符号化に切り換えるための切替えポイントを、適応して決定する態様で、直接信号レベルの係数のＣＢＡ符号化のための一実装施形態によるテクニック（１６００）を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、入力データは、別の形態および／または編成のオーディオ・データである。
【０１６３】
最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を０に設定し（１６１０）、符号化状態変数を直接コンテキスト・ベースの算術（direct context-based arithmetic）（ＤＣＢＡ）に設定する（１６１２）。
【０１６４】
符号器は、次の係数ＱＣを入力として受け取る（１６２０）。次に、符号器は、その係数がゼロであるかどうかを調べる（１６３０）。係数ＱＣがゼロでない場合、符号器は、ラン・カウントをリセットし（１６３８）、ＤＣＢＡ符号化を使用してその係数を符号化する（１６４０）。
【０１６５】
それ以外の場合（すなわち、係数ＱＣがゼロである場合）、符号器は、ラン・カウント変数を増分し（１６３２）、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる（１６３４）。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ（例えば、２５６個の係数の入力シーケンス中の４つのゼロ）などのファクタに依存すること、または何らかの別の形で適応することが可能である。例えば、しきい値は、入力シーケンス中の係数の数に関連して、または関連せずに上げること、または下げることができる。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化［「ＲＬＥ」］に切り換える（１６３６）。次に、符号器は、ＤＣＢＡ符号化を使用してその係数を符号化する（１６４０）。
【０１６６】
係数を符号化した後、符号器は、符号化状態を調べる（１６５０）。符号化状態がもはやＤＣＢＡでない場合（例えば、ゼロ係数のしきい値数を超えた結果、符号器が、符号化状態をＲＬＥに切り換えた場合）、符号器は、ラン・レングスおよびレベルとして係数を符号化することを始める（１６６０）。ラン・レベル符号化は、例えば、ハフマン符号化、ベクトル・ハフマン符号化、またはＣＢＡ符号化（場合により、前述した以前のＣＢＡ符号化とは異なるコンテキストを伴う）を含むいくつかの仕方で行うことができる。一部の実施形態では、ラン・レベル符号化は、１つのテーブルが、より短いランの可能性が高いデータを符号化するのに使用され、もう１つのテーブルが、より長いランの可能性が高いデータを符号化するために使用される２つのハフマン符号テーブルを有するハフマン符号化を使用して行われる。符号器は、各テーブルを試みて、どちらのテーブルを符号器が使用したかを示すシグナル・ビットと共に、一つのテーブルからの符号を選択する。
【０１６７】
符号化状態が切り換わっていない場合、符号器は、符号化されるべきさらなる係数が存在するかどうかを判定する（１６７０）。存在する場合、符号器は、次の係数を入力し（１６２０）、符号化プロセスを続ける。
【０１６８】
Ｃ．コンテキスト・ベースの算術復号化
図１７は、復号器がラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを、適応して決定する態様で、ＣＢＡ符号化を使用して符号化された係数を復号化するため一実装形態によるテクニック（１７００）を示している。適応切替えポイントは、データ中の連続するゼロ値係数のカウントに依存し、この連続するゼロ値係数は、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、データは、別の形態および／または編成のオーディオ・データである。
【０１６９】
最初に、符号器は、いくつかの変数を初期設定する。具体的には、復号器は、ラン・カウントを０に設定し（１７１０）、復号化状態を直接コンテキスト・ベースの算術（ＤＣＢＡ）に設定する（１７１２）。
【０１７０】
復号器は、算術符号化において係数を表わすのに符号器が使用した数を参照し、その数から係数の値を抽出することにより、次の量子化された係数をＤＣＢＡを使用して復号化する（１７２０）。次に、復号器は、復号化された係数に基づいてラン・カウントを更新する（１７３０）（具体的には、復号化された係数がゼロ値であるかどうかに基づき、ラン・カウントをリセットするか、または増分する）。
【０１７１】
復号器は、ラン・カウントがしきい値を超えているかどうかを調べる（１７４０）。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ（例えば、２５６個の係数の入力シーケンス中の４つのゼロ）などのファクタに依存すること、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、復号器は、ラン・レベル復号化を使用して符号化された係数を復号化することを開始する（１７５０）。ラン・レベル復号化は、例えば、ハフマン復号化、ベクトル・ハフマン復号化、またはＣＢＡ復号化（場合により、前述した以前のＣＢＡ復号化とは異なるコンテキストを伴う）を含むいくつかの仕方で行われることが可能である。
【０１７２】
一部の実施形態では、ラン・レベル復号化は、１つのテーブルが、より短いランの可能性が高いデータを復号化するために使用され、もう１つのテーブルが、より長いランの可能性が高いデータを復号化するために使用される、２つの可能なハフマン符号テーブルを有するハフマン符号化を使用して行われる。復号器が符号を受け取った際、その符号中のシグナル・ビットは、どちらのテーブルを符号器が使用したかを示し、復号器は、適切なテーブルの中でその符号をルックアップする。  
ラン・カウントがしきい値を超えていない場合、復号器は、復号化が終わるまで係数を処理することを続ける（１７６０）。
【０１７３】
ＶＩ．テーブルのない符号化（table-less coding）
ハフマン符号化を使用する一部の実施形態では、図２の符号器（２００）のような符号器が、ハフマン符号テーブルに関するエスケープ符号を使用して、特定のシンボル（またはシンボルの組合せ）がテーブルの中で関連する符号を有さないことを示す。ときとして、エスケープ符号は、特定のシンボル（例えば、レベルに関するスカラー・ハフマン符号テーブルの中で表わされていないレベル、ラン・レングスに関するスカラー・ハフマン符号テーブルの中で表わされていないラン・レングス等に関するスカラー値）が、ハフマン・テーブルからの符号を使用せずに符号化されるべきことを示すのに使用される。言い換えれば、そのシンボルは、「テーブルのない（table-less）」符号化テクニックを使用して符号化されることになる。
【０１７４】
算術符号化を使用する一部の実施形態では、エスケープ符号は、ときとして、特定のシンボルが算術符号化されるべきでないことを示すのに使用される。そのシンボルは、ハフマン・テーブルからの符号を使用して符号化されることが可能であり、または「テーブルのない」符号化テクニックを使用して符号化されることも可能である。
【０１７５】
一部のテーブルのない符号化技術は、固定長の符号を使用してシンボルを表わす。ただし、固定長の符号を使用することは、不必要に長い符号をもたらす可能性がある。
【０１７６】
したがって、一部の実施形態では、テーブルのない符号化テクニックにおいて、量子化された変換係数などのシンボルが、それ以外で符号化されない場合、可変長の符号を使用して表わされる。図３の復号器（３００）のような復号器が、対応するテーブルのない復号化テクニックを実施する。
【０１７７】
例えば、テーブル６が、そのようなテーブルのない符号化テクニックの一実装形態に関する擬似コードを示している。
【０１７８】
テーブル６：一実装形態におけるテーブルのない符号化テクニックのための擬似コード  
If (value < 28) {  
Send “0”;  
Send value using 8 bits;  
}  
else if (value < 216) {  
Send “10”;  
Send value using 16 bits  
}  
else if (value < 224) {  
Send “110”;  
Send value using 24 bits;  
}  
else if (value < 231) {  
Send “111”;  
Send value using 31 bits;  
}
【０１７９】
係数を符号化するのに符号器が使用するビットの数は、その係数の値に依存する。符号器は、１ビットの値、２ビットの値、または３ビットの値を送って値を符号化するのに使用されるビットの数を示し、次に、８ビット、１６ビット、２４ビット、または３１ビットを使用して符号化された値自体を送る。係数を符号化するのに符号器が使用するビットの総数は、２8より小さい値に関する９ビットから、２24に等しいか、それより大きいが、２31より小さい値に対する３４ビットまでの範囲である。
【０１８０】
一続きの係数に関して、送られる平均のビットは、  
Ｐ（０≦Ｃ＜２8）*９＋Ｐ（２8≦Ｃ＜２16）*１８＋Ｐ（２16≦Ｃ＜２24）*２７＋Ｐ（２24≦Ｃ＜２31）*３４  
であり、ただし、Ｐ（ｍ≦Ｃ＜ｎ）は、入力シーケンスにおける示された範囲内の係数Ｃの生起確率である。したがって、係数の大きいパーセンテージが小さい（例えば、２16より小さい）場合、相当なビットの節約が可能である。
【０１８１】
代替として、符号器および復号器は、別のテーブルのない符号化テクニック／復号化テクニックを使用する。
【０１８２】
様々な前述の実施形態に関連して本発明の原理を説明し、例示してきたが、そのような原理を逸脱することなく、前述の実施形態の構成および詳細を変更できることが認められよう。本明細書で説明したプログラム、プロセス、または方法は、特に明記しない限り、いずれの特定のタイプのコンピューティング環境にも関連する、または限定されることはないことを理解されたい。様々なタイプの汎用コンピューティング環境または特殊化されたコンピューティング環境が、本明細書で説明した教示による動作とともに使用すること、またはその動作を行うことが可能である。ソフトウェアで示した前述の実施形態の要素は、ハードウェアで実装することができ、またその逆も該当する。
【０１８３】
本発明の原理を適用することができる多くの可能な実施形態に鑑みて、頭記の特許請求の範囲の範囲および趣旨に含まれる可能性があるようなすべての実施形態、ならびに等価形態を本発明として主張する。
【符号の説明】
【０１８４】
１００  コンピューティング環境
１１０  処理ユニット
１２０  メモリ
１３０  基本的構成
１４０  ストレージ
１５０  入力デバイス
１６０  出力デバイス
１７０  通信接続
１８０  ソフトウェア
【図１】
2010160517.tif 000008
【図２】
2010160517.tif 000009
【図３】
2010160517.tif 000010
【図４】
2010160517.tif 000011
【図５】
2010160517.tif 000012
【図６】
2010160517.tif 000013
【図７】
2010160517.tif 000014
【図８】
2010160517.tif 000015
【図９】
2010160517.tif 000016
【図１０】
2010160517.tif 000017
【図１１】
2010160517.tif 000018
【図１２】
2010160517.tif 000019
【図１３Ａ】
2010160517.tif 000020
【図１３Ｂ】
2010160517.tif 000021
【図１３Ｃ】
2010160517.tif 000022
【図１３Ｄ】
2010160517.tif 000023
【図１４Ａ】
2010160517.tif 000024
【図１４Ｂ】
2010160517.tif 000025
【図１４Ｃ】
2010160517.tif 000026
【図１４Ｄ】
2010160517.tif 000027
【図１４Ｅ】
2010160517.tif 000028
【図１４Ｆ】
2010160517.tif 000029
【図１４Ｇ】
2010160517.tif 000030
【図１４Ｈ】
2010160517.tif 000031
【図１５Ａ】
2010160517.tif 000032
【図１５Ｂ】
2010160517.tif 000033
【図１５Ｃ】
2010160517.tif 000034
【図１５Ｄ】
2010160517.tif 000035
【図１５Ｅ】
2010160517.tif 000036
【図１５Ｆ】
2010160517.tif 000037
【図１５Ｇ】
2010160517.tif 000038
【図１５Ｈ】
2010160517.tif 000039
【図１６】
2010160517.tif 000040
【図１７】
2010160517.tif 000041