(57)【要約】  適応コーディングおよび適応デコーディングで複数のエントロピモデルを選択的に使用する技法およびツールを開示する。例えば、複数のシンボルについて、オーディオエンコーダは、複数のエントロピモデルを含む第１モデルセットからエントロピモデルを選択する。複数のエントロピモデルのそれぞれは、１つまたは複数のエントロピモデルを含む第２モデルセットに切り替えるモデル切替点を含む。エンコーダは、選択されたエントロピモデルを使用して複数のシンボルを処理し、結果を出力する。エントロピモデルを生成する技法およびツールも開示する。
2009501943.tif 000002
【特許請求の範囲】
【請求項１】
複数のシンボルについて、複数のエントロピモデルを含む第１モデルセットからエントロピモデルを選択するステップであって、前記第１モデルセットの前記複数のエントロピモデルはそれぞれ、１つまたは複数のエントロピモデルを含む第２モデルセットに切り替えるモデル切替点を含む、選択するステップと、
前記選択されたエントロピモデルを使用して前記複数のシンボルを処理するステップと、
前記処理の結果を出力するステップと
を含むことを特徴とする方法。
【請求項２】
エンコーダは、前記選択、前記処理、および前記出力をエンコード中に実行し、前記処理は、エントロピコーディングを含むことを特徴とする請求項１に記載の方法。
【請求項３】
デコーダは、前記選択、前記処理、および前記出力をデコード中に実行し、前記処理は、エントロピデコーディングを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１モデルセットの前記複数のエントロピモデルおよび前記第２モデルセットの前記１つまたは複数のエントロピモデルは、算術コーディングおよび／または算術デコーディング用の確率分布であり、前記モデル切替点は、前記第１モデルセットの複数の前記確率分布でのモデル切替確率であることを特徴とする請求項１に記載の方法。
【請求項５】
前記第１モデルセットの前記複数のエントロピモデルは、それぞれ第１テーブルセットの複数のＶＬＣテーブル内で実施され、前記第２モデルセットの前記１つまたは複数のエントロピモデルは、それぞれ第２テーブルセットの１つまたは複数のＶＬＣテーブル内で実施され、前記モデル切替点は、エスケープコードであり、前記第１テーブルセットの前記複数のＶＬＣテーブルのそれぞれは、前記第２テーブルセットに切り替える前記エスケープコードを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１テーブルセットの前記複数のＶＬＣテーブルおよび前記第２テーブルセットの前記１つまたは複数のＶＬＣテーブルは、ハフマンコードテーブルであり、前記第２テーブルセットは、単一のハフマンコードテーブルを含み、前記単一のハフマンコードテーブルは、前記第１テーブルセットの前記複数のハフマンコードテーブルそれぞれを表すツリー内の共通の枝を表すようになっていることを特徴とする請求項５に記載の方法。
【請求項７】
前記第１テーブルセットの前記複数のＶＬＣテーブルは、可能性のより高いシンボル値を含む第１シンボル値セットに適合され、前記第２テーブルセットの前記１つまたは複数のＶＬＣテーブルは、可能性のより低いシンボル値を含む第２シンボル値セットに適合されることを特徴とする請求項５に記載の方法。
【請求項８】
前記第２テーブルセットは、単一のＶＬＣテーブルを含み、前記処理は、前記複数のシンボルのうちで前記可能性のより低いシンボル値を有するシンボルの２ステージ可変長コーディングまたは２ステージ可変長デコーディングに関することを特徴とする請求項７に記載の方法。
【請求項９】
前記第１モデルセットの前記複数のエントロピモデルおよび前記第２モデルセットの前記１つまたは複数のエントロピモデルを生成するステップをさらに含み、前記生成するステップは、
第１コストメトリックに従って確率分布をクラスタ化し、複数の予備クラスタをもたらすステップと、
前記第１コストメトリックと異なる第２コストメトリックに従って前記複数の予備クラスタを精密化し、複数の最終クラスタをもたらすステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２モデルセットは、単一のエントロピモデルを含み、前記方法は、前記第１モデルセットの前記複数のエントロピモデルおよび前記第２モデルセットの前記単一のエントロピモデルを生成するステップをさらに含み、前記生成するステップは、前記第２モデルセットの前記単一のエントロピモデルについて、確率分布にまたがって共通な条件付き分布を有するように可能性のより低いシンボル値を制約するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記第２モデルセットの前記１つまたは複数のエントロピモデルのそれぞれは、１つまたは複数のエントロピモデルを含む第３モデルセットに切り替える第２モデル切替点を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記第１モデルセットの前記複数のエントロピモデルのうちの少なくともいくつかについて、前記モデル切替点は、モデルによって異なる値を有することを特徴とする請求項１に記載の方法。
【請求項１３】
前記第１モデルセットの前記複数のエントロピモデルのそれぞれは、１つまたは複数のエントロピモデルを含む第３モデルセットに切り替える第２モデル切替点をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記複数のシンボルは、オーディオデータの量子化されたスペクトル係数のためのものであることを特徴とする請求項１に記載の方法。
【請求項１５】
前記選択は、順方向適応切替の一部であることを特徴とする請求項１に記載の方法。
【請求項１６】
前記選択は、逆方向適応切替の一部であることを特徴とする請求項１に記載の方法。
【請求項１７】
第１コストメトリックに従って確率分布をクラスタ化し、複数の予備クラスタをもたらすことと、
前記第１コストメトリックと異なる第２コストメトリックに従って前記複数の予備クラスタを精密化し、複数の最終クラスタをもたらすことと、
前記複数の最終クラスタに少なくとも部分的に基づいてエントロピモデルをセットすることと
によって前記エントロピモデルを生成する１つまたは複数のモジュールを含むことを特徴とするシステム。
【請求項１８】
前記第２コストメトリックは、相対エントロピであることを特徴とする請求項１７に記載のシステム。
【請求項１９】
シンボル値の確率分布を入手する手段と、
複数の可能性のより低いシンボル値を前記確率分布にまたがる共通の条件付き分布を有するように制約し、複数の可能性のより高いシンボル値をそのように制約せずにすることを含む、エントロピモデルを生成する手段と
を含むことを特徴とするシステム。
【請求項２０】
前記エントロピモデルは、それぞれ第１テーブルセットの複数のＶＬＣテーブル内および第２テーブルセットの単一のＶＬＣテーブル内で実施され、前記複数のＶＬＣテーブルは、前記複数の可能性のより高いシンボル値に適合され、前記単一のＶＬＣテーブルは、前記複数の可能性のより低いシンボル値に適合されることを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
適応コーディングおよび適応デコーディングで複数のエントロピモデルを選択的に使用する技法およびツールに関する。
【背景技術】
【０００２】
エンジニアは、デジタルオーディオの品質を維持しつつデジタルオーディオを効率的に処理するために、様々な技法を使用する。これらの技法を理解するために、オーディオ情報がコンピュータ内でどのように表現され、処理されるかを理解することが役立つ。
【０００３】
Ｉ．コンピュータでのオーディオ情報の表現
コンピュータは、オーディオ情報を表す数の系列としてオーディオ情報を処理する。例えば、一つの数は、１つのオーディオサンプルを表すことができ、このオーディオサンプルとは、特定の時刻の振幅値である。サンプル深さ、サンプリングレート、およびチャネルモードを含む複数の要因が、オーディオ情報の品質に影響する。
【０００４】
サンプル深さ（または精度）は、サンプルを表すのに使用される数の範囲を示す。サンプルについて可能な値が多いほど、数が振幅のより微妙な変動を取り込むことができるので、品質が高くなる。例えば、８ビットサンプルは、２５６個の可能な値を有するが、１６ビットサンプルは、６５５３６個の可能な値を有する。
【０００５】
サンプリングレート（通常は、サンプル数毎秒として測定される）も、品質に影響する。サンプリングレートが高いほど、サウンドのより多くの周波数を表現できるので、品質が高くなる。いくつかの一般的なサンプリングレートが、８０００サンプル／秒、１１０２５サンプル／秒、２２０５０サンプル／秒、３２０００サンプル／秒、４４１００サンプル／秒、４８０００サンプル／秒、および９６０００サンプル／秒である。
【０００６】
モノラルおよびステレオは、オーディオの２つの一般的なチャネルモードである。モノラルモードでは、オーディオ情報が１チャネルで表される。ステレオモードでは、オーディオ情報は、通常は左チャネルおよび右チャネルと呼ばれる２つのチャネルで表される。５．１チャネル、７．１チャネル、または９．１チャネルのサラウンドサウンド（「１」は、サブウーハー(sub woofer)または低周波数効果チャネルを示す）など、より多くのチャネルを有する他のモードも可能である。表１に、対応する生ビットレートコストと一緒に、異なる品質レベルを有するオーディオの複数のフォーマットを示す。
【０００７】
【表１】
2009501943.tif 000003
【０００８】
サラウンドサウンドオーディオは、通常は、さらに高い生ビットレートを有する。表１に示されているように、高品質オーディオ情報のコストは、高いビットレートである。高品質オーディオ情報は、大量のコンピュータストレージおよび大量の伝送容量を消費する。しかし、会社および消費者は、ますますコンピュータに依存して、高品質オーディオコンテンツを作成し、配布し、再生する。
【０００９】
ＩＩ．コンピュータでのオーディオ情報の処理
多くのコンピュータおよびコンピュータネットワークには、生デジタルオーディオを処理するリソースが欠けている。圧縮（エンコーディングまたはコーディングとも呼ばれる）は、オーディオ情報をより低ビットレートの形に変換することによって、その情報を格納し、伝送するコストを減らす。圧縮は、ロスレス（lossless:品質が損なわれない）またはロッシイ（lossy:品質は損なわれるが、後続ロスレス圧縮からのビットレート削減がより目覚しい）とすることができる。例えば、ロッシイ圧縮は、オリジナルのオーディオ情報を近似するのに使用され、その後、この近似が、ロスレス圧縮される。圧縮解除（デコーディングとも呼ばれる）は、オリジナルの情報の再構成されたバージョンを圧縮形式から抽出する。
【００１０】
オーディオ圧縮の１つの目標は、可能な最小の量のビットを用いて知覚される最大の信号品質を提供するようにオーディオ信号をデジタルに表現することである。この目標をターゲットとして、様々な現代オーディオコーディングシステムは、人間の知覚モデルを利用する。エンコーダシステムおよびデコーダシステムは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社のＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ａｕｄｉｏ（「ＷＭＡ」）エンコーダおよびＷＭＡデコーダならびにＷＭＡ  ＰｒｏエンコーダおよびＷＭＡ  Ｐｒｏデコーダのいくつかのバージョンを含む。他のシステムは、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ、Ａｕｄｉｏ  Ｌａｙｅｒ  ３（「ＭＰ３」）標準規格、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ２、Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ（「ＡＡＣ」）標準規格、およびＤｏｌｂｙ  ＡＣ３のいくつかのバージョンによって指定される。そのようなシステムは、通常、ロッシイとロスレスの組合せの圧縮および圧縮解除を使用する。
【００１１】
Ａ．ロッシイ圧縮および対応する圧縮解除
従来、オーディオエンコーダは、様々な異なるロッシイ圧縮技法を使用する。これらのロッシイ圧縮技法は、通常、周波数変換後の知覚モデリング／重み付けおよび量子化を用いる。対応する圧縮解除は、逆量子化、逆重み付け、および逆周波数変換を用いる。
【００１２】
周波数変換技法は、データを、知覚的に重要な情報を知覚的に重要でない情報から分離することをより容易にする形式に変換する。その後、所与のビットレートに関する最良の知覚される品質を提供するために、より重要でない情報をよりロッシイな圧縮の対象にすることができ、一方、より重要な情報は保存される。周波数変換は、通常、オーディオサンプルを受け取り、これらを、時々周波数係数またはスペクトル係数と呼ばれる周波数領域のデータに変換する。
【００１３】
知覚モデリングは、所与のビットレートに関する再構成されたオーディオ信号の知覚される品質を改善するために、人間の聴覚系のモデルに従ってオーディオデータを処理することを伴う。知覚モデリングの結果を使用することによって、エンコーダは、所与のビットレートに関するノイズの可聴性を最小にすることを目的に、オーディオデータ内のノイズ（例えば量子化ノイズ）を成形する。
【００１４】
量子化は、入力値の範囲を単一の値に写像し、情報の不可逆ロスを導入するが、エンコーダが出力の品質およびビットレートを規制することを可能にもする。時々、エンコーダは、ビットレートおよび／または品質を規制するために量子化を調整するレートコントローラと共に、量子化を実行する。適応および非適応、スカラおよびベクトル、均一および不均一を含む、様々な種類の量子化がある。知覚重み付けは、不均一量子化の一形態と考えることができる。
【００１５】
逆量子化および逆重み付けは、重み付けされ量子化された周波数係数データを、オリジナルの周波数係数データの近似値に再構成する。その後、逆周波数変換が、再構成された周波数係数データを、再構成された時間領域オーディオサンプルに変換する。
【００１６】
Ｂ．ロスレス圧縮およびロスレス圧縮解除
従来、オーディオエンコーダは、様々な異なるロスレス圧縮技法（エントロピコーディング技法とも呼ばれる）のうちの１つまたは複数を使用する。一般に、ロスレス圧縮技法は、ランレングス(run-length)エンコーディング、可変長エンコーディング、および算術(arithmetic)コーディングを含む。対応する圧縮解除技法（エントロピデコーディング技法とも呼ばれる）は、ランレングスデコーディング、可変長デコーディング、および算術デコーディングを含む。
【００１７】
ランレングスエンコーディングは、単純な周知の圧縮技法である。一般に、ランレングスエンコーディングは、同一の値を有する連続するシンボルのシーケンス（すなわち、ラン）を、値およびシーケンスの長さに置換する。ランレングスデコーディングでは、連続するシンボルのシーケンスが、ラン値およびランレングスから再構成される。ランレングスエンコーディング／デコーディングの多数の変形形態が開発されてきた。
【００１８】
ランレベルエンコーディングは、同一の値を有する連続するシンボルのランが、ランレングスに置換されるという点で、ランレングスエンコーディングに似ている。ランの値は、データの支配的な値（例えば、０）であり、ランは、異なる値（例えば、非０値）を有する１つまたは複数のレベルによって分離される。
【００１９】
ランレングスエンコーディングの結果（例えば、ラン値およびランレングス）またはランレベルエンコーディングの結果は、ビットレートをさらに下げるために可変長コーディングすることができる。その場合に、可変長コーディングされたデータは、ランレングスデコーディングの前に可変長デコーディングされる。
【００２０】
可変長コーディングは、もう１つの周知の圧縮技法である。一般に、可変長コード［「ＶＬＣ」］テーブルが、ＶＬＣを一意のシンボル値（または値の一意の組合せ）に関連付ける。ハフマン(Huffman)コードは、一般的なタイプのＶＬＣである。より短いコードが、より可能性の高いシンボル値に割り当てられ、より長いコードが、より可能性の低いシンボル値に割り当てられる。確率は、ある種類の内容の通常の例について計算される。あるいは、確率は、エンコードされたばかりのデータまたはこれからエンコードされるデータについて計算され、その場合には、ＶＬＣは、一意のシンボル値の変化する確率に適合される。静的可変長コーディングと比較して、適応可変長コーディングは、通常、データに関するより正確な確率を組み込むことによって圧縮データのビットレートを下げるが、ＶＬＣを指定する余分な情報をも伝送する必要がある場合がある。
【００２１】
シンボルをエンコードするために、可変長エンコーダは、シンボル値を、ＶＬＣテーブル内のそのシンボル値に関連するＶＬＣに置換する。デコードするために、可変長デコーダは、ＶＬＣをそのＶＬＣに関連するシンボル値に置換する。
【００２２】
スカラ可変長コーディングでは、ＶＬＣテーブルは、単一のＶＬＣを１つの値、例えば量子化されたデータ値の直接レベルに関連付ける。ベクトル可変長コーディングでは、ＶＬＣテーブルは、単一のＶＬＣを値の組合せ、例えば特定の順序の量子化されたデータ値の直接レベルのグループに関連付ける。ベクトル可変長エンコーディングは、スカラ可変長エンコーディングよりよいビットレート削減につながることができる（例えば、エンコーダがバイナリＶＬＣ内で断片的に確率を活用することを可能にすることによって）。その一方で、ベクトル可変長エンコーディングのＶＬＣテーブルは、単一のコードがシンボルの大きいグループを表す場合またはシンボルが潜在的な値の大きい範囲を有する（潜在的な組合せの個数が多いことに起因して）場合に、極端に大きくなる可能性があり、これは、ＶＬＣテーブルを計算する際およびＶＬＣを見つける際にメモリおよび処理リソースを消費する。可変長エンコーディング／デコーディングの多数の変形形態が開発されてきた。
【００２３】
算術コーディングは、もう１つの周知の圧縮技法である。算術コーディングは、所与の入力シンボルをエンコードするのに最適なビットの個数が、ビットの分数個数である応用例に、およびある個々の入力シンボルの間に統計的相関が存在する場合に、時々使用される。算術コーディングは、一般に、入力シーケンスを、所与の範囲内の単一の数として表すことを用いる。通常、この数は、０と１との間の分数である。入力シーケンス内のシンボルは、０と１との間の空間の諸部分を占める範囲に関連付けられる。この範囲は、その特定のシンボルが入力シーケンス内に現れる確率に基づいて計算される。入力シーケンスを表すのに使用される分数は、この範囲への参照を用いて構成される。したがって、入力シンボルの確率分布が、算術コーディング方式において重要である。
【００２４】
コンテキストベースの算術コーディングでは、入力シンボルの異なる確率分布が、異なるコンテキストに関連付けられる。入力シーケンスをエンコードするのに使用される確率分布は、コンテキストが変化する時に変化する。コンテキストは、特定の入力シンボルが入力シーケンスに現れる確率に影響すると期待される様々な要因を測定することによって計算することができる。
【発明の開示】
【発明が解決しようとする課題】
【００２５】
メディア処理の圧縮および圧縮解除の重要性を与えられれば、圧縮および圧縮解除が十分に開発された分野であることは、意外ではない。しかし、ロスレス圧縮およびロスレス圧縮解除の従来の技法およびシステムの利点が何であれ、それらは、本明細書で説明する技法およびシステムの様々な利点を有しない。
【課題を解決するための手段】
【００２６】
適応コーディングおよび適応デコーディングで複数のエントロピモデルを選択的に使用する技法およびツールを、本明細書で説明する。例えば、複数のエントロピモデルを選択的に使用することによって、複数の分布／ＶＬＣテーブルに関するリソース使用量を大幅に減らすことができる。それと同時に、複数の分布／ＶＬＣテーブルの使用に関連するエンコーディング利益の多くを達成することができる。
【００２７】
技法およびツールの第１組目によれば、エンコーダまたはデコーダなどのツールは、シンボルについて、複数のエントロピモデルを含む第１モデルセットからエントロピモデルを選択する。第１モデルセットの複数のエントロピモデルのそれぞれは、１つまたは複数のエントロピモデルを含む第２モデルセットに切り替えるモデル切替点を含む。このツールは、選択されたエントロピモデルを使用してシンボルを処理し、処理の結果を出力する。
【００２８】
第２モデルセットの１つまたは複数のエントロピモデルのそれぞれ自体が、別のモデルセットに切り替えるためのモデル切替点を含むことができる。さらに、第１モデルセットの複数のエントロピモデルのそれぞれは、別のモデルセットに切り替える第２モデル切替点をさらに含むことができる。より一般的に、第１モデルセットの複数のエントロピモデルのそれぞれは、他のモデルセットに切り替える０個以上のモデル切替点を含むことができる（他のモデルセットの各セット自体は、０個以上のモデル切替点を含む）。他のモデルセットの所与のモデルセットについても、そのモデルセットのエントロピモデルは、再帰的な形で、さらに別のモデルセットに切り替える０個以上のモデル切替点を含むことができ、以下同様である。
【００２９】
技法およびツールの第２組目によれば、システムは、エントロピモデルを生成する。このシステムは、第１コストメトリック（平均２乗誤差など）に従って確率分布をクラスタ化し、予備クラスタをもたらす。このシステムは、第１コストメトリックと異なる第２コストメトリック（相対エントロピなど）に従って予備クラスタを洗練し、最終クラスタをもたらす。次に、このシステムは、最終クラスタに少なくとも部分的に基づいてエントロピモデルをセットする。
【００３０】
技法およびツールの第３組目によれば、システムは、シンボル値の確率分布を入手する。このシステムは、エントロピモデルを生成する。それを行う際に、このシステムは、複数の可能性のより高いシンボル値をそのように制約せずに、確率分布にまたがる共通の条件付き分布を有するように複数の可能性のより低いシンボル値を制約する。
【００３１】
本発明の前述および他の目的、特徴、および利点は、次の詳細な説明からより明白になり、次の詳細な説明は、添付図面を参照して進行する。
【発明を実施するための最良の形態】
【００３２】
エントロピコーディング／デコーディングの様々な技法およびツールならびに関連する処理を説明する。これらの技法およびツールは、非常に低いビットレートであっても、高品質オーディオコンテンツの作成、配布、および再生を容易にする。
【００３３】
本明細書で説明する様々な技法およびツールは、独立に使用することができる。これらの技法およびツールのいくつかは、組み合わせて使用することができる（例えば、組み合わされたエンコーディングプロセスおよび／またはデコーディングプロセスの異なるフェーズで）。
【００３４】
様々な技法を、下で、処理行為の流れ図を参照して説明する。流れ図に示された様々な処理行為は、より少数の行為に合併するか、より多数の行為に分離することができる。説明を単純にするために、特定の流れ図に示された行為の、他所で説明される行為に対する関係は、しばしば、示されない。多くの場合に、流れ図の行為は、並べ換えることができる。
【００３５】
Ｉ．エンコーダおよび／またはデコーダの例のオペレーティング環境
図１に、説明される実施形態のうちの複数を実施できる適切なコンピューティング環境（１００）の一般化された例を示す。コンピューティング環境（１００）は、使用または機能性の範囲に関する限定を暗示することを意図するものではない。というのは、説明される技法およびツールを、別個の汎用のまたは特殊目的のコンピューティング環境で実施できるからである。
【００３６】
図１を参照すると、コンピューティング環境（１００）は、少なくとも１つの処理ユニット（１１０）およびメモリ（１２０）を含む。図１では、この最も基本的な構成（１３０）が、破線の中に示されている。処理ユニット（１１０）は、コンピュータ実行可能命令を実行し、実プロセッサまたは仮想プロセッサとすることができる。マルチプロセッシングシステムでは、処理能力を高めるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ（１２０）は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこの２つのある組合せとすることができる。メモリ（１２０）は、本明細書で説明する技法のうちの１つまたは複数を使用するエンコーダおよび／またはデコーダを実施するソフトウェア（１８０）を記憶する。
【００３７】
コンピューティング環境は、追加の特徴を有することができる。例えば、コンピューティング環境（１００）は、ストレージ（１４０）、１つまたは複数の入力デバイス（１５０）、１つまたは複数の出力デバイス（１６０）、および１つまたは複数の通信接続（１７０）を含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティング環境（１００）のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア（図示せず）が、コンピューティング環境（１００）内で実行中の他のソフトウェアのオペレーティング環境を提供し、コンピューティング環境（１００）のコンポーネントのアクティビティを調整する。
【００３８】
ストレージ（１４０）は、取外し可能または取外し不能とすることができ、磁気ディスク、磁気テープもしくは磁気カセット、ＣＤ−ＲＯＭ、ＤＶＤ、または情報を格納するのに使用できコンピューティング環境（１００）内でアクセスできる任意の他の媒体を含む。ストレージ（１４０）は、ソフトウェア（１８０）の命令を格納する。
【００３９】
１つまたは複数の入力デバイス（１５０）は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、あるいはコンピューティング環境（１００）に入力を提供できる別のデバイスとすることができる。オーディオエンコーディングまたはビデオエンコーディングに関して、１つまたは複数の入力デバイス（１５０）を、マイクロホン、サウンドカード、ビデオカード、ＴＶチューナカード、または、アナログ形式もしくはデジタル形式でオーディオ入力もしくはビデオ入力を受け入れる類似するデバイス、あるいは、コンピューティング環境（１００）にオーディオサンプルもしくはビデオサンプルを読み込むＣＤ−ＲＯＭもしくはＣＤ−ＲＷとすることができる。１つまたは複数の出力デバイス（１６０）は、ディスプレー、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境（１００）からの出力を供給する別のデバイスとすることができる。
【００４０】
１つまたは複数の通信接続（１７０）は、通信媒体を介する別のコンピューティング実体への通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオもしくはビデオの入力もしくは出力、または他のデータなどの情報を変調されたデータ信号内で伝える。変調されたデータ信号とは、信号内で情報をエンコードする形でその特性のうちの１つまたは複数をセットされまたは変更された信号である。限定ではなく例として、通信媒体は、電気搬送波、光搬送波、ＲＦ搬送波、赤外線搬送波、音響搬送波、または他の搬送波を用いて実施される有線または無線の技法を含む。
【００４１】
本技法およびツールを、コンピュータ可読媒体の全体的な文脈で説明することができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスできる任意の使用可能な媒体である。限定ではなく例として、コンピューティング環境（１００）に関して、コンピュータ可読媒体は、メモリ（１２０）、ストレージ（１４０）、通信媒体、および上記のいずれかの組合せを含む。
【００４２】
本技法およびツールを、コンピューティング環境内でターゲットの実プロセッサまたは仮想プロセッサ上で実行される、プログラムモジュールに含まれるものなどのコンピュータ実行可能命令の全体的な文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造体などを含む。プログラムモジュールの機能性を、様々な実施形態で望み通りに組み合わせ、またはプログラムモジュールの間で分割することができる。プログラムモジュールのコンピュータ実行可能命令を、ローカルコンピューティング環境または分散コンピューティング環境内で実行することができる。
【００４３】
提示のために、この詳細な説明では、「シグナリングする」、「決定する」、および「適用する」などの用語を使用して、コンピューティング環境でのコンピュータ動作を説明する。これらの用語は、コンピュータによって実行される動作の高水準の抽象であり、人間によって実行される行為と混同してはならない。これらの用語に対応する実際のコンピュータ動作は、実施態様に応じて変化する。
【００４４】
ＩＩ．例のエンコーダおよびデコーダ
図２に、１つまたは複数の説明される実施形態を実施できる第１のオーディオエンコーダ（２００）を示す。エンコーダ（２００）は、変換ベースの知覚オーディオエンコーダ（２００）である。図３に、対応するオーディオデコーダ（３００）を示す。
【００４５】
図４に、１つまたは複数の説明される実施形態を実施できる第２のオーディオエンコーダ（４００）を示す。エンコーダ（４００）は、変換ベースの知覚オーディオエンコーダであるが、エンコーダ（４００）は、マルチチャネルオーディオを処理する追加モジュールを含む。図５に、対応するオーディオデコーダ（５００）を示す。
【００４６】
図６に、１つまたは複数の説明される実施形態を実施できるより一般化されたメディアエンコーダ（６００）を示す。図７に、対応するメディアデコーダ（７００）を示す。
【００４７】
図２から７に示されたシステムは、一般化されているが、それぞれが、実世界のシステムに見られる特性を有する。どの場合でも、エンコーダおよびデコーダの中のモジュールの間に示される関係は、エンコーダおよびデコーダの中の情報の流れを示し、他の関係は、図を単純にするために図示されていない。望まれる圧縮の実施態様およびタイプに依存して、エンコーダまたはデコーダのモジュールを、追加し、省略し、複数のモジュールに分割し、他のモジュールと組み合わせ、かつ／または類似するモジュールと置換することができる。代替実施形態では、異なるモジュールおよび／または他の構成を有するエンコーダまたはデコーダが、１つまたは複数の説明される実施形態に従ってオーディオデータまたはある他のタイプのデータを処理する。例えば、スペクトル係数を処理する、図２から７のモジュールを使用して、ベースバンドまたはベース周波数サブ範囲（より低い周波数など）の係数だけを処理し、異なるモジュール（図示せず）が他の周波数サブ範囲（より高い周波数など）のスペクトル係数を処理するものとすることができる。
【００４８】
Ａ．第１のオーディオエンコーダ
全体的に、エンコーダ（２００）は、あるサンプリング深さおよびサンプリングレートで入力オーディオサンプル（２０５）の時系列を受け取る。入力オーディオサンプル（２０５）は、マルチチャネルオーディオ（例えば、ステレオ）またはモノラルオーディオである。エンコーダ（２００）は、オーディオサンプル（２０５）を圧縮し、エンコーダ（２００）の様々なモジュールによって作られた情報を多重化して、ＷＭＡフォーマット、Ａｄｖａｎｃｅｄ  Ｓｔｒｅａｍｉｎｇ  Ｆｏｒｍａｔ（「ＡＳＦ」）、または他のフォーマットなどのフォーマットでビットストリーム（２９５）を出力する。
【００４９】
周波数トランスフォーマ（２１０）は、オーディオサンプル（２０５）を受け取り、これをスペクトル領域のデータに変換する。例えば、周波数トランスフォーマ（２１０）は、オーディオサンプル（２０５）をブロックに分割し、これらのブロックは、可変時間分解能を可能にするために可変サイズを有することができる。ブロックは、そうでなければ後の量子化によって導入される可能性があるブロック間の知覚可能な不連続性を減らすために、オーバーラップすることができる。周波数トランスフォーマ（２１０）は、時間に伴って変化するＭｏｄｕｌａｔｅｄ  Ｌａｐｐｅｄ  Ｔｒａｎｓｆｏｒｍ（「ＭＬＴ」）、ｍｏｄｕｌａｔｅｄ  ＤＣＴ（「ＭＤＣＴ」）、ＭＬＴまたはＤＣＴのいくつかの他のバラエティ、または、変更されたもしくは変更されていない、オーバーラップするもしくはオーバーラップしない周波数変換のいくつかの他のタイプをブロックに適用し、あるいは、サブバンドコーディングまたはウェーブレットコーディングを使用する。周波数トランスフォーマ（２１０）は、スペクトル係数データのブロックを出力し、マルチプレクサ（「ＭＵＸ」）（２８０）にブロックサイズなどのサイド情報を出力する。
【００５０】
マルチチャネルオーディオデータについて、マルチチャネルトランスフォーマ（２２０）は、複数のオリジナルの独立にコーディングされたチャネルを共同でコーディングされたチャネルに変換することができる。あるいは、マルチチャネルトランスフォーマ（２２０）は、左右のチャネルを独立にコーディングされたチャネルとしてパススルーすることができる。マルチチャネルトランスフォーマ（２２０）は、使用されたチャネルモードを示すＭＵＸ（２８０）へのサイド情報を作る。エンコーダ（２００）は、マルチチャネル変換の後にオーディオデータのブロックにマルチチャネルリマトリクシング（ｍｕｌｔｉ−ｃｈａｎｎｅｌ  ｒｅｍａｔｒｉｘｉｎｇ）を適用することができる。
【００５１】
知覚モデラ（２３０）は、人間の聴覚系の特性をモデリングして、所与のビットレートの再構成されたオーディオ信号の知覚される品質を改善する。知覚モデラ（２３０）は、様々な聴覚モデルのいずれかを使用する。
【００５２】
知覚モデラ（２３０）は、ウエイタ（２４０）がノイズの可聴性を減らすためにオーディオデータ内のノイズを成形するのに使用する情報を出力する。例えば、様々な技法のいずれかを使用して、ウエイタ（２４０）は、受け取った情報に基づいて量子化行列（時々マスクと呼ばれる）の重み付け係数（時々スケール係数と呼ばれる）を生成する。次に、ウエイタ（２４０）は、マルチチャネルトランスフォーマ（２２０）から受け取った情報にその重み付け係数を適用する。重み付け係数の組を、より効率的な表現のために圧縮することができる。
【００５３】
クォンタイザ（２５０）は、ウエイタ（２４０）の出力を量子化し、エントロピエンコーダ（２６０）への量子化された係数データおよびＭＵＸ（２８０）への量子化ステップサイズを含むサイド情報を作る。図２では、クォンタイザ（２５０）は、適用均一スカラクォンタイザである。クォンタイザ（２５０）は、各スペクトル係数に同一の量子化ステップサイズを適用するが、量子化ステップサイズ自体は、量子化ループのある反復から次の反復で、エントロピエンコーダ（２６０）出力のビットレートに影響するために変化することができる。他の種類の量子化が、不均一ベクトル量子化および／または非適応量子化である。
【００５４】
エントロピエンコーダ（２６０）は、例えばランレベルコーディングおよびベクトル可変長コーディングを実行することによって、クォンタイザ（２５０）から受け取った量子化された係数データをロスレス圧縮する。いくつかの実施形態のエントロピコーディングの様々な機構（潜在的に前処理を含む）を、セクションＩＩＩからＶで詳細に説明する。代替案では、エントロピエンコーダ（２６０）は、エントロピコーディング機構のある他の形または組合せを使用する。エントロピエンコーダ（２６０）は、オーディオ情報をエンコードして消費されたビット数を計算し、この情報をレート／品質コントローラ（２７０）に渡すことができる。
【００５５】
コントローラ（２７０）は、エンコーダ（２００）の出力のビットレートおよび／または品質を規制するためにクォンタイザ（２５０）と共に働く。コントローラ（２７０）は、ビットレート制約および品質制約を満足することを目標に、クォンタイザ（２５０）に量子化ステップサイズを出力する。
【００５６】
さらに、エンコーダ（２００）は、オーディオデータのブロックにノイズ置換および／またはバンド切捨を適用することができる。
【００５７】
ＭＵＸ（２８０）は、オーディオエンコーダ（２００）の他のモジュールから受け取ったサイド情報を、エントロピエンコーダ（２６０）から受け取ったエントロピエンコードされたデータと一緒に多重化する。ＭＵＸ（２８０）は、エンコーダ（２００）によって出力されるビットストリーム（２９５）を格納する仮想バッファを含むことができる。
【００５８】
Ｂ．第１のオーディオデコーダ
全体的に、デコーダ（３００）は、エントロピエンコードされたデータならびにサイド情報を含む圧縮オーディオ情報のビットストリーム（３０５）を受け取り、このビットストリームから、デコーダ（３００）は、オーディオサンプル（３９５）を再構成する。
【００５９】
デマルチプレクサ（「ＤＥＭＵＸ」）（３１０）は、ビットストリーム（３０５）内の情報を解析し、情報をデコーダ（３００）のモジュールに送る。ＤＥＭＵＸ（３１０）は、オーディオの複雑さの変動、ネットワークジッタ、および／または他の要因に起因するビットレートの短期変動を補償するために１つまたは複数のバッファを含む。
【００６０】
エントロピデコーダ（３２０）は、ＤＥＭＵＸ（３１０）から受け取ったエントロピコードを圧縮解除し、量子化されたスペクトル係数データを作る。エントロピデコーダ（３２０）は、通常、エンコーダで使用されたエントロピエンコーディング技法の逆を適用する。いくつかの実施形態のエントロピデコーディングの様々な機構を、セクションＩＩＩからＶで詳細に説明する。
【００６１】
逆クォンタイザ（３３０）は、ＤＥＭＵＸ（３１０）から量子化ステップサイズを受け取り、エントロピデコーダ（３２０）から量子化されたスペクトル係数データを受け取る。逆クォンタイザ（３３０）は、量子化された周波数係数データに量子化ステップサイズを適用して、周波数係数データを部分的に再構成するか、他の形で逆量子化を実行する。
【００６２】
ノイズジェネレータ（３４０）は、ＤＥＭＵＸ（３１０）から、データのブロックのどのバンドがノイズ置換されるかならびにノイズの形に関するすべてのパラメータを示す情報を受け取る。ノイズジェネレータ（３４０）は、示されたバンドのパターンを生成し、その情報を逆ウエイタ（３５０）に渡す。
【００６３】
逆ウエイタ（３５０）は、ＤＥＭＵＸ（３１０）から重み付け係数を、ノイズジェネレータ（３４０）からすべてのノイズ置換されたバンドのパターンを、逆クォンタイザ（３３０）から部分的に再構成された周波数係数データを受け取る。必要に応じて、逆ウエイタ（３５０）は、重み付け係数を圧縮解除する。逆ウエイタ（３５０）は、ノイズ置換されなかったバンドの部分的に再構成された周波数係数データに重み付け係数を適用する。次に、逆ウエイタ（３５０）は、ノイズ置換されたバンドに関する、ノイズジェネレータ（３４０）から受け取ったノイズパターンを追加する。
【００６４】
逆マルチチャネルトランスフォーマ（３６０）は、逆ウエイタ（３５０）から再構成されたスペクトル係数データを、ＤＥＭＵＸ（３１０）からチャネルモード情報を受け取る。マルチチャネルオーディオが独立にコーディングされたチャネルにある場合に、逆マルチチャネルトランスフォーマ（３６０）は、チャネルをパススルーする。マルチチャネルデータが共同でコーディングされたチャネルにある場合に、逆マルチチャネルトランスフォーマ（３６０）は、データを独立にコーディングされたチャネルに変換する。
【００６５】
逆周波数トランスフォーマ（３７０）は、マルチチャネルトランスフォーマ（３６０）によって出力されたスペクトル係数データならびにＤＥＭＵＸ（３１０）からのブロックサイズなどのサイド情報を受け取る。逆周波数トランスフォーマ（３７０）は、エンコーダで使用された周波数変換の逆を適用し、再構成されたオーディオサンプル（３９５）のブロックを出力する。
【００６６】
Ｃ．第２のオーディオエンコーダ
図４を参照すると、エンコーダ（４００）は、あるサンプリング深さおよびサンプリングレートで入力オーディオサンプル（４０５）の時系列を受け取る。入力オーディオサンプル（４０５）は、マルチチャネルオーディオ（例えば、ステレオ、サラウンド）またはモノラルオーディオである。エンコーダ（４００）は、オーディオサンプル（４０５）を圧縮し、エンコーダ（４００）の様々なモジュールによって作られた情報を多重化して、ＷＭＡ  Ｐｒｏフォーマットまたは他のフォーマットなどのフォーマットでビットストリーム（４９５）を出力する。
【００６７】
エンコーダ（４００）は、オーディオサンプル（４０５）について複数のエンコーディングモードの間で選択する。図４では、エンコーダ（４００）は、混合／純ロスレスコーディングモードとロッシイコーディングモードとの間で切り替える。ロスレスコーディングモードは、混合／純ロスレスコーダ（４７２）を含み、通常は高品質（および高ビットレート）圧縮に使用される。ロッシイコーディングモードは、ウエイタ（４４２）およびクォンタイザ（４６０）などのコンポーネントを含み、通常は調整可能な品質（および制御されたビットレート）の圧縮に使用される。選択判断は、ユーザ入力または他の判断基準に依存する。
【００６８】
マルチチャネルオーディオデータのロッシイコーディングについて、マルチチャネルプリプロセッサ（４１０）は、オプションで、時間領域オーディオサンプル（４０５）をリマトリクシングする。いくつかの実施形態で、マルチチャネルプリプロセッサ（４１０）は、オーディオサンプル（４０５）を選択的にリマトリクシングして、エンコーダ（４００）で１つまたは複数のコーディングされたチャネルを捨てるか、チャネル間相関を増やし、なおかつデコーダ（５００）での再構成（ある形での）を可能にする。マルチチャネルプリプロセッサ（４１０）は、マルチチャネル後処理に関する命令などのサイド情報をＭＵＸ（４９０）に送ることができる。
【００６９】
ウィンドウイングモジュール（４２０）は、オーディオ入力サンプル（４０５）のフレームをサブフレームブロック（ウィンドウ）に区分する。ウィンドウは、時間的に変化するサイズおよびウィンドウ成形関数を有することができる。エンコーダ（４００）がロッシイコーディングを使用する時には、可変サイズウィンドウが、可変時間分解能を可能にする。ウィンドウイングモジュール（４２０）は、区分されたデータのブロックを出力し、ブロックサイズなどのサイド情報をＭＵＸ（４９０）に出力する。
【００７０】
図４では、タイルコンフィギュアラ（４２２）が、マルチチャネルオーディオのフレームをチャネルごとの基礎で区分する。タイルコンフィギュアラ（４２２）は、品質／ビットレートが許容する場合に、フレーム内の各チャネルを独立に区分する。例えば、タイルコンフィギュアラ（４２２）は、時間的に同一位置にある同一サイズのウィンドウを１つのタイルとしてグループ化する。
【００７１】
周波数トランスフォーマ（４３０）は、オーディオサンプルを受け取り、図２の周波数トランスフォーマ（２１０）について上で説明したものなどの変換を適用することによって、これらのオーディオサンプルを周波数領域のデータに変換する。周波数トランスフォーマ（４３０）は、スペクトル係数データのブロックをウエイタ（４４２）に出力し、ブロックサイズなどのサイド情報をＭＵＸ（４９０）に出力する。周波数トランスフォーマ（４３０）は、周波数係数とサイド情報との両方を知覚モデラ（４４０）に出力する。
【００７２】
知覚モデラ（４４０）は、人間の聴覚系の特性をモデリングし、聴覚モデルに従ってオーディオデータを処理する。
【００７３】
ウエイタ（４４２）は、知覚モデラ（４４０）から受け取った情報に基づいて量子化行列の重み付け係数を生成する。ウエイタ（４４２）は、この重み付け係数を、周波数トランスフォーマ（４３０）から受け取ったデータに適用する。ウエイタ（４４２）は、量子化行列およびチャネル重み係数などのサイド情報をＭＵＸ（４９０）に出力し、量子化行列は、圧縮することができる。
【００７４】
マルチチャネルオーディオデータについて、マルチチャネルトランスフォーマ（４５０）は、マルチチャネル変換を適用することができる。例えば、マルチチャネルトランスフォーマ（４５０）は、タイル内のチャネルおよび／または量子化バンドのすべてではなく一部にマルチチャネル変換を選択的に柔軟に適用する。マルチチャネルトランスフォーマ（４５０）は、事前定義の行列またはカスタム行列を選択的に使用し、効率的な圧縮をカスタム行列に適用する。マルチチャネルトランスフォーマ（４５０）は、例えば、使用されたマルチチャネル変換およびタイルのマルチチャネル変換された部分を示す、ＭＵＸ（４９０）へのサイド情報を作る。
【００７５】
クォンタイザ（４６０）は、マルチチャネルトランスフォーマ（４５０）の出力を量子化し、エントロピエンコーダ（４７０）への量子化された係数データおよびＭＵＸ（４９０）への量子化ステップサイズを含むサイド情報を作る。図４では、クォンタイザ（４６０）は、タイルごとに量子化係数を計算する適応均一スカラクォンタイザであるが、クォンタイザ（４６０）は、その代わりに、ある他の種類の量子化を実行することができる。
【００７６】
エントロピエンコーダ（４７０）は、全体的に図２のエントロピエンコーダ（２６０）を参照して上で説明したように、クォンタイザ（４６０）から受け取った量子化された係数データをロスレス圧縮する。いくつかの実施形態のエントロピコーディングの様々な機構（潜在的に前処理を含む）を、セクションＩＩＩからＶで詳細に説明する。
【００７７】
コントローラ（４８０）は、エンコーダ（４００）の出力のビットレートおよび／または品質を規制するためにクォンタイザ（４６０）と共に働く。コントローラ（４８０）は、品質制約およびビットレート制約を満足することを目標に、クォンタイザ（４６０）に量子化係数を出力する。
【００７８】
混合／純ロスレスコーダ（４７２）および関連するエントロピエンコーダ（４７４）は、混合／純ロスレスコーディングモードに関してオーディオデータを圧縮する。エンコーダ（４００）は、シーケンス全体に混合／純ロスレスコーディングモードを使用するか、フレームごと、ブロックごと、タイルごと、または他の基礎でコーディングモードの間で切り替えることができる。
【００７９】
ＭＵＸ（４９０）は、エンコーダ（４００）の他のモジュールから受け取ったサイド情報を、エントロピエンコーダ（４７０、４７４）から受け取ったエントロピエンコーディングされた情報と一緒に多重化する。ＭＵＸ（４９０）は、レート制御または他の目的のための１つまたは複数のバッファを含む。
【００８０】
Ｄ．第２のオーディオデコーダ
図５を参照すると、第２のオーディオデコーダ（５００）は、圧縮オーディオ情報のビットストリーム（５０５）を受け取る。ビットストリーム（５０５）は、エントロピエンコードされたデータならびにサイド情報を含み、このデータならびにサイド情報から、デコーダ（５００）はオーディオサンプル（５９５）を再構成する。
【００８１】
ＤＥＭＵＸ（５１０）は、ビットストリーム（５０５）内の情報を解析し、情報をデコーダ（５００）のモジュールに送る。ＤＥＭＵＸ（５１０）は、オーディオの複雑さの変動、ネットワークジッタ、および／または他の要因に起因するビットレートの短期変動を補償するために１つまたは複数のバッファを含む。
【００８２】
エントロピデコーダ（５２０）は、ＤＥＭＵＸ（５１０）から受け取ったエントロピコードを圧縮解除し、通常、エンコーダ（４００）で使用されたエントロピエンコーディング技法の逆を適用する。ロッシイコーディングモードで圧縮されたデータをデコードする時に、エントロピデコーダ（５２０）は、量子化されたスペクトル係数データを作る。いくつかの実施形態のエントロピデコーディングの様々な機構を、セクションＩＩＩからＶで詳細に説明する。
【００８３】
混合／純ロスレスデコーダ（５２２）および関連するエントロピデコーダ（５２０）は、混合／純ロスレスコーディングモードについて、ロスレスエンコードされたオーディオデータを圧縮解除する。
【００８４】
タイル構成デコーダ（５３０）は、フレームのタイルのパターンを示す情報をＤＥＭＵＸ（５９０）から受け取り、必要な場合にはこれをデコードする。タイルパターン情報は、エントロピエンコードされるか他の形でパラメータ化される場合がある。次に、タイル構成デコーダ（５３０）は、タイルパターン情報をデコーダ（５００）の様々な他のモジュールに渡す。
【００８５】
逆マルチチャネルトランスフォーマ（５４０）は、エントロピデコーダ（５２０）からの量子化されたスペクトル係数データならびにタイル構成デコーダ（５３０）からのタイルパターン情報と、例えば使用されたマルチチャネル変換およびタイルの変換された部分を示すＤＥＭＵＸ（５１０）からのサイド情報とを受け取る。この情報を使用して、逆マルチチャネルトランスフォーマ（５４０）は、必要に応じて変換行列を圧縮解除し、１つまたは複数の逆マルチチャネル変換をオーディオデータに選択的に柔軟に適用する。
【００８６】
逆クォンタイザ／ウエイタ（５５０）は、ＤＥＭＵＸ（５１０）からタイルおよびチャネル量子化係数ならびに量子化行列を受け取り、逆マルチチャネルトランスフォーマ（５４０）から量子化されたスペクトル係数データを受け取る。逆クォンタイザ／ウエイタ（５５０）は、受け取った量子化係数／行列情報を必要に応じて圧縮解除し、その後、逆量子化および重み付けを実行する。
【００８７】
逆周波数トランスフォーマ（５６０）は、逆クォンタイザ／ウエイタ（５５０）によって出力されたスペクトル係数データならびにＤＥＭＵＸ（５１０）からのサイド情報およびタイル構成デコーダ（５３０）からのタイルパターン情報を受け取る。逆周波数トランスフォーマ（５７０）は、エンコーダで使用された周波数変換の逆を適用し、ブロックをオーバーラッパー／アダー（５７０）に出力する。
【００８８】
タイル構成デコーダ（５３０）からタイルパターン情報を受け取るほかに、オーバーラッパー／アダー（５７０）は、逆周波数トランスフォーマ（５６０）および／または混合／純ロスレスデコーダ（５２２）から、デコードされた情報を受け取る。オーバーラッパー／アダー（５７０）は、必要に応じてオーディオデータをオーバーラップし、加算し、異なるモードを用いてエンコードされたオーディオデータのフレームまたは他のシーケンスをインターリーブする。
【００８９】
マルチチャネルポストプロセッサ（５８０）は、オプションで、オーバーラッパー／アダー（５７０）によって出力された時間領域オーディオサンプルをリマトリクシングする。ビットストリーム制御された後処理について、後処理変換行列は、経時的に変化し、シグナリングされ、またはビットストリーム（５０５）に含まれる。
【００９０】
Ｅ．一般化されたメディアエンコーダ
図６に、オーディオコンテンツ、ビデオコンテンツ、または他のメディアコンテンツをエンコードする一般化されたメディアエンコーダ（６００）の諸部分を示す。図を単純にするために、メディアコンテンツのタイプに依存する可能性がある、エンコーダ（６００）の多数のモジュールおよび多数のタイプのサイド情報は、図示されていない。
【００９１】
それぞれ図２および図４に示されたエンコーダ（２００、４００）に似て、エンコーダ（６００）は、図６に示された入力が量子化されていないスペクトル係数（６０５）である限り、変換ベースである。しかし、いくつかの実施形態で、本明細書で説明するエントロピエンコーディング機構（例えば、セクションＶで説明する機構）のうちの１つまたは複数が、いくつかの他の種類の入力について実行される。
【００９２】
クォンタイザ（６２０）は、係数（６０５）を量子化し、量子化された係数データを作る。例えば、クォンタイザ（６２０）は、適応均一スカラクォンタイザまたはある他の種類のクォンタイザとすることができる。
【００９３】
エントロピコーディングプリプロセッサ（６４０）は、エントロピコーディングの前に前処理を選択的に実行する。例えば、プリプロセッサ（６４０）は、セクションＩＩＩで説明するように、量子化されたスペクトル係数に対して係数予測を実行する。あるいは、プリプロセッサ（６４０）は、セクションＩＶで説明するように、量子化されたスペクトル係数を並べ換える。代替案では、プリプロセッサ（６４０）は、ある他のタイプの前処理を実行する。
【００９４】
前処理された係数のほかに、プリプロセッサ（６４０）は、前処理を記述するサイド情報を出力ビットストリーム（６９５）に出力する。例えば、このサイド情報は、セクションＩＩＩで説明する、係数予測で使用された予測係数を含む。あるいは、このサイド情報は、セクションＩＶで説明する、量子化されたスペクトル係数の並べ換えで使用された情報を含む。
【００９５】
エントロピエンコーダ（６６０）は、例えばランレベルコーディングおよびベクトル可変長コーディングを実行することによって、量子化された係数データをロスレス圧縮する。セクションＶで、適応エントロピコーディングの機構を説明する。代替案では、エントロピエンコーダ（６６０）は、エントロピコーディング機構のある他の形または組合せを使用する。
【００９６】
図６は、プリプロセッサ（６４０）が、エントロピエンコーダ（６６０）に入力を供給し、エントロピエンコーダ（６６０）からのフィードバックなしで前処理を実行することが単純に示されているが、代替案では、エントロピエンコーダ（６６０）が、プリプロセッサ（６４０）にフィードバックを供給し、プリプロセッサ（６４０）は、このフィードバックを使用して前処理を調整する。例えば、プリプロセッサ（６４０）は、エントロピエンコーダ（６６０）からのフィードバックに基づいて係数並べ換えを調整し、その結果、エントロピエンコーダ（６６０）への入力がエントロピエンコーディングモデルにより適するようにする。
【００９７】
Ｆ．一般化されたメディアデコーダ
図７に、オーディオコンテンツ、ビデオコンテンツ、または他のメディアコンテンツをデコードする一般化されたメディアデコーダ（７００）の諸部分を示す。図を単純にするために、メディアコンテンツのタイプに依存する可能性がある、デコーダ（７００）の多数のモジュールおよび多数のタイプのサイド情報は、図示されていない。
【００９８】
それぞれ図３および図５に示されたデコーダ（３００、５００）に似て、デコーダ（７００）は、図７に示された出力が再構成されたスペクトル係数（７０５）である限り、変換ベースである。しかし、いくつかの実施形態で、本明細書で説明するエントロピデコーディング機構（例えば、セクションＶで説明する機構）のうちの１つまたは複数が、いくつかの他の種類の出力について実行される。
【００９９】
エントロピデコーダ（７６０）は、例えばランレベルデコーディングおよびベクトル可変長デコーディングを実行することによって、量子化された係数データをロスレス圧縮解除する。セクションＶで、適応エントロピデコーディングの機構を説明する。代替案では、エントロピデコーダ（７６０）は、エントロピデコーディング機構のある他の形または組合せを使用する。
【０１００】
エントロピデコーディングポストプロセッサ（７４０）は、エントロピデコーディングの後に後処理を選択的に実行する。例えば、ポストプロセッサ（７４０）は、セクションＩＩＩで説明するように、量子化されたスペクトル係数に対して係数予測を実行する。あるいは、ポストプロセッサ（７４０）は、セクションＩＶで説明するように、量子化されたスペクトル係数を並べ換える。代替案では、ポストプロセッサ（７４０）は、ある他のタイプの後処理を実行する。
【０１０１】
エントロピデコードされた係数のほかに、ポストプロセッサ（７４０）は、後処理を記述するサイド情報をビットストリーム（７９５）から受け取る。例えば、このサイド情報は、セクションＩＩＩで説明する、係数予測で使用された予測係数を含む。あるいは、このサイド情報は、セクションＩＶで説明する、量子化されたスペクトル係数の並べ換えで使用された情報を含む。
【０１０２】
逆クォンタイザ（７２０）は、逆量子化を実行し、再構成された係数（７０５）データを作る。例えば、逆クォンタイザ（７２０）は、適応均一スカラ逆クォンタイザまたは他の種類のクォンタイザである。
【０１０３】
ＩＩＩ．コーディングおよびデコーディングに関するスペクトル領域の係数の予測
オーディオエンコーダは、しばしば、圧縮を達成するために、変換コーディングとそれに続く量子化およびエントロピコーディングを使用する。固定された変換が使用される場合に、オーディオ信号のいくつかのパターンについて、変換後に、隣接する係数の間に相関が残っている。そのような相関を活用してコーディング効率を高める様々な技法およびツールを、下で説明する。具体的に言うと、いくつかの実施形態で、図２、４、または６に示されたものなどのエンコーダが、エンコーディング中に、量子化されたスペクトル係数に対する係数予測を実行する。対応するデコーダ（図３、５、または７に示されたものなど）は、デコーディング中に、量子化されたスペクトル係数に対して係数予測を実行する。
【０１０４】
Ａ．例の問題領域
波形としてのオーディオを圧縮する通常のオーディオエンコーダでは、入力オーディオ信号が、可変ウィンドウサイズＭＤＣＴまたは可変サイズウィンドウを用いる他の変換を使用して変換される。例えば、図８ａに示されたステレオオーディオのウィンドウイング分析が、図８ｂに示されたウィンドウ構成をもたらすと仮定する。一般に、そのようなウィンドウ構成は、デコードされた信号のプリエコーおよびポストエコーを減らす（過渡セグメントにより短いウィンドウを使用することによって）と同時に、全体的なコーディング効率を容易にする（他のセグメントにより長いウィンドを使用することによって）。ウィンドウイング分析の１つのねらいは、任意の所与のウィンドウ内の信号がほぼ静止状態になるウィンドウ境界を識別することである。
【０１０５】
スペクトル係数は、チャネル変換の前後に量子化される。従来は、サブフレームまたは他のウィンドウのスペクトル係数は、その間に線形相関を一切有しないと仮定される。そうではなく、スペクトル係数は、通常、より高次の統計的関係を有すると仮定され、エンコーダは、エントロピコーディング中にその関係を活用することを試みる。
【０１０６】
実際には、そのようなエンコーディングに潜在的に含まれる複数の仮定は、様々な状況で成り立たない。例えば、オーディオ信号のある種のタイプおよびパターンに関して、サブフレームまたは他のウィンドウのスペクトル係数は、必ずしも無相関ではない。ウィンドウ内の信号が静止状態になり得ないことの同一の理由の多くについて（下を参照されたい）、スペクトル係数が、線形相関を示す可能性がある。現代の波形ベースのエンコーダは、エントロピコーディングにおいてそのような相関を利用することができない。
【０１０７】
もう１つの例として、ウィンドウイング分析が、いくつかのオーディオ信号に適用される時に、特定のウィンドウ内の信号は、必ずしも静止状態ではない。入力オーディオが、経時的に激しく変化する場合（例えば、音声信号の場合）に、短いウィンドウであっても、過渡セグメントを分離するのに不十分である場合がある。あるいは、レートコントローラ内のバッファが満杯の場合に、コントローラが、そうでなければより小さいウィンドウが使用されるはずの場合であっても、ビットレートを下げるためによりエンコーダが大きいウィンドウを使用することを強制する場合がある。あるいは、過渡が遅い場合に、ウィンドウイング分析が、その過渡を検出できず、より短いウィンドウが導入されなくなる場合がある。あるいは、ウィンドウイング分析が、フレーム内の他の過渡ではなく、フレームあたり１つの過渡だけによって導入されるプリエコーに対して保護する場合がある。あるいは、ウィンドウ内の信号が、ある他の理由から静止状態でない可能性がある。
【０１０８】
スケール係数は、歪みのスペクトル分布を制御するのを助けることができる。しかし、歪みの時間的分布に関して、スペクトルに対する単純な量子化は、１つの完全な変換ブロックにわたって一定の歪みを導入し、この歪みが、フレームの時間セグメント内で可聴歪みを引き起こす可能性がある。
【０１０９】
Ｔｅｍｐｏｒａｌ  Ｎｏｉｓｅ  Ｓｈａｐｉｎｇ（「ＴＮＳ」）は、経時的に量子化ノイズを成形するのに周波数領域で予測手法を使用するＭＰＥＧのある種の変形形態のテクノロジである。ＴＮＳでは、エンコーダは、時間ウィンドウ全体にまたがる量子化ノイズのスミアを制限するために、スペクトル係数に予測フィルタを適用し、フィルタリングされた信号を量子化する。図９および１０に、それぞれエンコーダおよびデコーダ内のＴＮＳを示す。
【０１１０】
図９を参照すると、エンコーダは、量子化されていないスペクトル係数（９０５）とプレディクタとの間の差を計算し、このプレディクタは、２つの以前に再構成された係数の組合せである。この組合せに関して、２つの再構成された時間遅延された係数（遅延９１０および９１２で）が、それぞれ、予測係数（９１１、９１３）を乗算され、一緒に加算される。予測係数（９１１、９１３）は、量子化され、ビットストリーム（９９５）に含められる。クォンタイザ（９７０）は、差値を量子化し、エントロピエンコーダ（９９０）は、ビットストリーム（９９５）で出力のために、量子化された差値をエントロピエンコードする。逆クォンタイザ（９８０）は、差値を再構成し、これをその係数（９０５）のプレディクタに加算する。これは、係数の再構成をもたらし、その係数は、後続係数（９０５）のプレディクタに寄与するために、第１遅延（９１０）内でバッファリングされ、その後に第２遅延（９１２）内でバッファリングされる。
【０１１１】
対応するデコーダでは、エントロピデコーダ（１０９０）が、ビットストリーム（１０９５）からの差値をエントロピデコードし、逆クォンタイザ（１０８０）が、差値を逆量子化する。デコーダは、差値をプレディクタと組み合わせて、再構成されたスペクトル係数（１００５）を作り、このプレディクタは、２つの以前に再構成された係数の組合せである。組合せの計算は、２つの遅延（１０１０、１０１２）および２つの予測係数（１０１１、１０１３）を使用し、これらの予測係数は、ビットストリーム（１０９５）から回復される。再構成されたスペクトル係数（１００５）は、後続の係数（１００５）のプレディクタに寄与するために、第１遅延（１０１０）内でバッファリングされ、その後に第２遅延（１０１２）内でバッファリングされる。
【０１１２】
ＭＰＥＧ  ＡＡＣのＴＮＳは、３つまでの別個の無限インパルス応答フィルタ（またはプレディクタ）を入力信号の異なるスペクトル領域に適用することを可能にする。フィルタ係数は、量子化され、ビットストリームに含められる。
【０１１３】
ＭＰＥＧ  ＡＡＣが、短いウィンドウの使用を許容する時であっても、ＴＮＳは、短いウィンドウ内では使用されない。というのは、プレディクタ記述情報に必要な情報全体が、比較的大きく、スペクトル値のためのビットの減少をもたらすからである。したがって、ＴＮＳは、ＭＰＥＧ  ＡＡＣでは長いウィンドウについてのみ許容され、これが、ＴＮＳの有用性を制限している。
【０１１４】
また、図９および１０に示されているように、ＴＮＳでの予測は、量子化されていない／再構成された領域で行われる。その結果、デコーダは、逆量子化および予測（およびおそらくはエントロピデコーディングさえ）の動作をインターリーブしなければならず、高められた複雑さがもたらされる。さらに、量子化されていない／再構成された領域での予測に関して、ＴＮＳ動作は、ＭＰＥＧ  ＡＡＣでは浮動小数点演算として指定され、これは、固定小数点実施態様で問題を引き起こす。
【０１１５】
ＴＮＳプレディクタは、２次プレディクタであり、各スペクトル係数での予測動作に２つの乗算を必要とする。エンコーダ側では、効果的なプレディクタの設計が、難しくなる可能性があり、不安定なプレディクタは、問題になる可能性がある。
【０１１６】
図９および１０に示されたものに似たアーキテクチャを、差分パルス符号変調に使用することができ、この場合に、エンコーダは、時間サンプルとプレディクタとの間の差を計算し、このプレディクタは、予測係数およびバッファリングされた逆量子化された時間サンプルに基づく。この予測は、通常は詳細なプレディクタを使用するが、これは、設計が難しく、しばしば不安定であり、大規模なシグナリングおよび再構成ロジックを必要とする。さらに、そのような方式の圧縮効率は、良くはない。
【０１１７】
要約すると、係数予測の技法およびツールによって対処できる、複数の問題を説明した。しかし、これらの問題のいずれかまたはすべてに対処するために、そのような係数予測の技法およびツールを適用する必要はない。
【０１１８】
Ｂ．係数予測の例のアーキテクチャ
いくつかの実施形態で、エンコーダは、エンコーディング中に、量子化されたスペクトル係数に対して係数予測を実行し、対応するデコーダは、デコーディング中に、量子化されたスペクトル係数に対して係数予測を実行する。コンテンツのある種のパターンおよびタイプに関して、係数予測は、後続エントロピコーディングの効率を改善するために、スペクトル係数の冗長性を減らす。この予測は、可逆である、すなわち、デコーディング中に、係数予測（エントロピデコーディングに続く）は、エンコーダでの係数予測の鏡像になる。
【０１１９】
図１１に、量子化されたスペクトル係数の予測を用いるエンコーダを示す。例えば、このエンコーダは、プレディクタおよび差値を計算するためにステージを追加された、図２または４に示されたエンコーダの修正版である。あるいは、このエンコーダは、エントロピコーディングの前の前処理として係数予測を有する、図６に示されたエンコーダのエンコーダの修正版である。
【０１２０】
図１１を参照すると、エンコーダは、量子化されたスペクトル係数（１１０５）とプレディクタとの間の差（予測残差とも呼ばれる）を計算する。プレディクタに関して、時間遅延された量子化されたスペクトル係数（遅延１１１０内で）が、予測係数（１１１１）をかけられる。予測係数（１１１１）は、ビットストリーム（１１９５）内でサイド情報としてシグナリングされる。エントロピエンコーダ（１１９０）は、ビットストリーム（１１９５）での出力のために、差値をエントロピエンコードする。量子化されたスペクトル係数（１１０５）は、後続の量子化されたスペクトル係数（１１０５）のプレディクタを計算するために、第１遅延（１１１０）内でもバッファリングされる。
【０１２１】
図１２に、量子化されたスペクトル係数の予測を用いる対応するデコーダを示す。例えば、このデコーダは、プレディクタを計算し、そのプレディクタを差値と組み合わせるためにステージを追加された、図３または５に示されたデコーダの修正版である。あるいは、このデコーダは、エントロピデコーディングの後の後処理として係数予測を有する、図７に示されたデコーダの修正版である。
【０１２２】
図１２を参照すると、エントロピデコーダ（１２９０）は、ビットストリーム（１２９５）から差値をデコードする。デコーダは、プレディクタを計算し、差値をプレディクタと組み合わせ、量子化されたスペクトル係数（１２０５）を作る。プレディクタに関して、時間遅延された量子化されたスペクトル係数（遅延１２１０内で）が、予測係数（１２１１）をかけられる。予測係数（１２１１）は、ビットストリーム（１２９５）から解析される。量子化されたスペクトル係数（１２０５）は、後続の量子化されたスペクトル係数（１２０５）のプレディクタを計算するために、第１遅延（１２１０）内でもバッファリングされる。
【０１２３】
図１１および１２では、エンコーダ内の予測動作および差演算と、デコーダ内の予測動作および合計演算とが、量子化された領域で行われる。これによって、動作および演算が同一領域内で行われる限り、エンコーダおよびデコーダの設計および複雑さが、単純になる。
【０１２４】
いくつかの実施態様では、予測動作、合計演算、および差演算が、整数値に対して行われる。これは、通常、実施態様を単純にする。というのは、これらの動作および演算を、浮動小数点演算ではなく整数演算を用いて実行できるからである。予測をさらに単純にするために、−１から１までの範囲内の予測係数を、０．２５の均一ステップサイズを使用して量子化することができる。その場合に、プレディクタの乗算演算を、２進シフト／加算演算を使用して実施することができる。
【０１２５】
図１１および１２では、プレディクタは、１次プレディクタであり、これは、やはり、エンコーダ／デコーダ（「コーデック」）システムの複雑さを減らす。適応１次プレディクタでは、予測係数が変化し、したがって、同一の予測係数を、長期にわたって使用する必要はない。１次プレディクタに関して、安定性のテストは、自明である。例えば、エンコーダは、両端を含めて−１から＋１までの範囲内になるように予測係数を単純に制約する。代替案では、プレディクタは、より高次のプレディクタである。例えば、プレディクタは、１６次プレディクタの場合に１６個までの予測係数を有する。
【０１２６】
適応係数予測に関して、エンコーダは、サブフレームごとにまたはある他の基礎で予測係数を変更する。例えば、エンコーダは、サブフレームを複数の均一なサイズのセグメントに分割し、セグメントごとに予測係数を計算する。シグナリングに関して、エンコーダは、サブフレームのセグメントの個数ならびに予測係数をシグナリングする。したがって、２０４８個のスペクトル係数を有するサブフレームが、１６個のセグメントに分割される場合に、エンコーダは、１２８個の係数のセグメントごとにセグメントの個数と１つの予測係数とをシグナリングする。サブフレームあたりのセグメントの個数は、１シーケンスについて１回、サブフレームごとに１回、またはある他の基礎でシグナリングされる。代替案では、セグメントが、可変長を有し、かつ／またはエンコーダが、予測係数をシグナリングするのに異なる機構を使用する（例えば、予測係数の変化だけをシグナリングするか、予測係数とその予測係数が使用されるセグメント数をシグナリングする）。
【０１２７】
いくつかの入力について、係数予測は、性能を改善しない。セグメントごとの基礎で係数予測をディスエーブルすること（下で説明する）のほかに、エンコーダおよびデコーダは、シーケンス全体について（例えば、シーケンスレイヤオン／オフフラグを用いて）またはある他のレベルで係数予測をディスエーブルすることができる。
【０１２８】
係数予測が、マルチチャネルオーディオに使用される場合に、係数予測は、量子化などがエンコーディング中にマルチチャネル変換より下流である時に、コーディングされたチャネルごとに行われる。デコーディング中にも、係数予測は、コーディングされたチャネルごとに行われる。したがって、そのようなマルチチャネルオーディオについて、セグメントごとまたはサブフレームごとにシグナリングされる予測情報は、通常、特定のコーディングされたチャネルのセグメントごとまたはサブフレームごとにシグナリングされる。係数予測は、シーケンスレベルまたはある他のレベルで、コーディングされたチャネルごとに選択的にディスエーブルすることができる。係数予測が、マルチチャネルオーディオに使用される時に、サブフレームごとのセグメントの個数を、コーディングされたチャネルごとに、コーディングされたチャネルのサブフレームごとに、またはある他のレベルでシグナリングすることができる。
【０１２９】
いくつかの場合に、係数予測は、主に低周波数および中間周波数のスペクトル係数に関してエンコーディング利益をもたらす。したがって、係数予測を、より高い周波数のスペクトル係数に関して自動的にディスエーブルすることができる。あるいは、係数予測からのエンコーディング利益が、主に特定の周波数サブ範囲内のスペクトル係数に関するものである場合に、係数予測を、これらの周波数サブ範囲内で選択的にイネーブルし、それ以外の範囲でディスエーブルすることができる。
【０１３０】
Ｃ．エンコーディング中の係数予測の例の技法
図１３に、エンコーディング中に量子化されたスペクトル係数を予測する技法（１３００）を示す。例えば、図１１に示されたものなどのエンコーダが、この技法（１３００）を実行する。代替案では、別のエンコーダが、この技法（１３００）を実行する。
【０１３１】
まず、エンコーダは、オーディオのセグメントの予測係数を計算する（１３１０）。一般に、エンコーダは、複数の技法のいずれかを使用して予測係数を計算する。例えば、１次プレディクタに関して、エンコーダは、可能な予測係数の網羅的探索を実行して、最終的な予測係数（例えば、最小エントロピのコーディングされたビットをもたらす予測係数）を見つける。あるいは、エンコーダは、セグメントの量子化されたスペクトル係数の相関定数（すなわち、Ｅ｛ｘ［ｉ−ｌ］ｘ［ｉ］｝／Ｅ｛ｘ［ｉ］ｘ［ｉ］｝）を計算して、予測係数を導出する。あるいは、より高次のプレディクタに関して、エンコーダは、線形予測係数アルゴリズム（例えば、自己相関および自己共分散の計算を用いる）を使用し、安定性は、要求されない。あるいは、フィルタの次数および精度が柔軟である場合に、エンコーダは、予測次数（１次、２次、３次など）、予測係数値、およびセグメントの精度を計算する。代替案では、エンコーダは、ある他の機構を使用して、予測係数を計算する。
【０１３２】
多くの場合に、量子化されたスペクトル係数は、サブフレームのスペクトル全体にまたがって均一な相関を示さない。そのような情況で予測を改善するために、エンコーダは、スペクトルセグメントごとの基礎で予測係数を変更することができる。例えば、エンコーダは、あるサブフレームの完全なスペクトル（またはスペクトル係数の他のブロック）を複数の均一なサイズのセグメントに分割し、セグメントごとに予測係数を計算する。代替案では、エンコーダは、サブフレームまたはスペクトル係数の他のブロックの全スペクトルである１セグメントの予測係数を計算し、あるいは、ある他の形でスペクトルを分割する。
【０１３３】
エンコーダは、セグメントの予測係数情報をシグナリングする（１３２０）。例えば、エンコーダは、予測係数を量子化し、これをビットストリーム内でシグナリングする。予測係数を、エントロピコーディングすることができる。エンコーダは、セグメントごとの基礎でデコーディング中に係数予測を選択的にディスエーブルするために、予測係数情報の一部としてオン／オフビットをシグナリングすることができる。表２に、−１から１までの範囲内の予測係数が０．２５の均一ステップサイズを使用して量子化される実施態様での予測係数のビット表現を示す。
【０１３４】
【表２】
2009501943.tif 000004
【０１３５】
代替案では、予測係数情報が、ある他の表現を使用してシグナリングされる。
【０１３６】
上で注記したように、すべてのセグメントがスペクトル係数予測から利益を得るわけではない場合がある。０の予測係数は、あるセグメントに関する予測を効果的にディスエーブルし、プレディクタは、重みを与えられず、計算される必要がない。表２に示されたコードを用いると、０の予測係数をシグナリングするのに使用される単一のビットシンボルは、影響されるセグメントのオン／オフビットとして働く。単一ビットを用いて０のプレディクタをシグナリングすることは、０のプレディクタが最も一般的な予測係数である時にビットを節約する。
【０１３７】
上で注記したように、より高次のプレディクタが許容される。より高次のプレディクタの予測係数情報のシグナリングに関して、例えば、エンコーダは、まず、プレディクタの次数および精度を送り、その後、予測係数を１つずつ送る。
【０１３８】
次に、エンコーダは、スペクトル係数予測がこのセグメントに使用されるか否かを判定する（１３３０）。そうである場合には、エンコーダは、このセグメントの１つまたは複数の量子化されたスペクトル係数を予測し（１３４０）、次に、予測コーディングされた係数をエントロピコーディングする（１３５０）。例えば、エンコーダは、係数予測に、図１１に示された遅延バッファおよび算術を使用する。代替案では、エンコーダは、ある他の予測機構を使用する（予測（１３４０）および後続のエントロピコーディング（１３５０）は、あるタイプのエントロピコーディング（１３５０）について反復的に進行する場合があるが、より通常、ベクトル可変長コーディング、ランレベルコーディング、またはある他のタイプのエントロピコーディングについてバッチ化される）。
【０１３９】
エンコーダが係数予測（１３４０）をスキップする場合に、エンコーダは、単純に、１つまたは複数の量子化されたスペクトル係数をエントロピコーディングする（１３５０）。代替案では、エンコーダは、予測係数が０である時に予測コーディング経路をたどる。
【０１４０】
次に、エンコーダは、次のセグメントに継続するのか、この技法（１３００）を終了するのかを判定する（１３６０）。エンコーダが継続する場合に、エンコーダは、次のセグメントの予測係数を計算する（１３１０）、予測係数情報をシグナリングする（１３２０）、などを行う。
【０１４１】
図１３は、セグメントの個数が事前に決定され、シグナリングされない場合の、セグメントごとの基礎での予測係数の計算およびシグナリングを示す。代替案では、予測係数が計算されシグナリングされるセグメントの個数が、柔軟である。これは、通常、セグメント情報を指定する際のビットオーバーヘッドの増加を犠牲にして、予測精度を高める。サブフレームまたは他のブロックについて、エンコーダは、均一のまたは不均一のセグメント化（例えば、最小個数のビットをもたらす）を見つけ、セグメントの総数および／または他のセグメント化情報が、ビットストリーム内でシグナリングされる。
【０１４２】
Ｄ．デコーディング中の係数予測の例の技法
図１４に、デコーディング中に量子化されたスペクトル係数を予測する技法（１４００）を示す。例えば、図１２に示されたものなどのデコーダが、この技法（１４００）を実行する。代替案では、別のデコーダが、この技法（１４００）を実行する。
【０１４３】
まず、デコーダは、オーディオのセグメントの予測係数情報を得る（１４１０）。例えば、デコーダは、ビットストリームから予測係数情報を解析し、予測係数を再構成する。予測係数がエントロピコーディングされている場合には、デコーダは、予測係数をエントロピデコードする。エンコーダが、デコーディング中に係数予測を選択的にイネーブル／ディスエーブルするために、予測係数情報の一部としてオン／オフビットをシグナリングする場合には、デコーダは、オン／オフビットを得る。したがって、デコーダは、スペクトルセグメントごとの基礎で予測係数を変更することができ、ここで、セグメントは、実施態様に応じて、サブフレームまたは他のブロックのスペクトル全体のすべてまたは一部であり、予測係数情報は、図１３に関して上で説明した機構のいずれかを使用してシグナリングされる。
【０１４４】
デコーダは、セグメントの１つまたは複数の量子化されたスペクトル係数の情報をエントロピデコードする（１４２０）。係数予測がエンコーディング中に使用された場合に、この情報は、量子化されたスペクトル係数の予測残差（差値）である。係数予測がエンコーディング中に使用されなかった（０のプレディクタ）場合に、この情報は、量子化されたスペクトル係数自体である。
【０１４５】
次に、デコーダは、スペクトル係数予測がこのセグメントについて使用されたか否かを判定する（１４３０）。そうである場合には、デコーダは、このセグメントの量子化されたスペクトル係数を予測する（１４４０）。例えば、デコーダは、係数予測に、図１２に示された遅延バッファおよび算術を使用する。代替案では、デコーダは、ある他の予測機構を使用する（エントロピデコーディング（１４２０）および予測（１４４０）は、あるタイプのエントロピデコーディング（１４２０）について反復的に進行する場合があるが、より通常、ベクトル可変長デコーディング、ランレベルデコーディング、またはある他のタイプのエントロピデコーディングについてバッチ化される）。
【０１４６】
いくつかの場合に、デコーダは、デコーディング中に係数予測をスキップし、量子化されたスペクトル係数を単純にエントロピデコードする（１４２０）。代替案では、デコーダは、予測係数が０である時に、予測デコーディング経路をたどる。
【０１４７】
次に、デコーダは、次のセグメントに継続するのか、この技法（１４００）を終了するのかを判定する（１４５０）。デコーダが継続する場合に、デコーダは、次のセグメントの予測係数情報を得る（１４１０）などを行う。
【０１４８】
図１４では、セグメントの個数が、事前に決定され、シグナリングされない。代替案では、セグメントの個数および予測係数が、柔軟であり、デコーダは、エンコーダによってシグナリングされたセグメント化情報を解析する。
【０１４９】
Ｅ．結果
一般に、量子化されたスペクトル係数の予測は、コンテンツのある種のタイプおよびパターンの後続エントロピエンコーディングの効率を改善する。例えば、予測は、隣接する係数の間の冗長性を減らし、後続ベクトル可変長コーディングおよび／またはランレベルコーディングをより効率的にする。対照的に、ＭＰＥＧ  ＴＮＳの目的は、歪みの時間的分布を制御することである。
【０１５０】
量子化されたスペクトル係数の予測に起因するコーディング効率の改善を測定するために、歌の大量のテストスイートを、係数予測を使用してエンコードした。通常の入力の歌について、歌のほとんどのサブフレームは、量子化された領域で係数予測を使用することによって利益をまったく得なかったが、一部のサブフレームは、非常に大きい利益を得た。例えば、いくつかのサブフレームについて作られるビット数は、量子化されたスペクトル係数の予測を用いて３０％も低下した。いくつかの歌について、係数予測に伴う総ビットレート削減は、３２Ｋｂ／ｓの公称ビットレートで動作する場合には３％であり、１２８Ｋｂ／ｓでは、総ビットレート削減は３．７５％であった。歌のスイート全体では、総ビットレート削減は、約０．５％であった。
【０１５１】
多数のタイプの予測が、コーディング利益を達成するためにより高次のプレディクタまたはより高い精度を使用するが、比較的低い精度（例えば、量子化された予測係数値あたり３ビット）を有する１次プレディクタは、ほとんどのシナリオで、量子化されたスペクトル係数に対してかなり良く動作する。量子化されたスペクトル係数は、通常は非常に小さい整数であり、したがって、予測係数精度を高めることは、予測される値を必ずしも変化させず、予測される値を必ずしもよりよいものにせず、残差値は、エントロピコーディングに関して整数であり、整数として予測値を計算することは、許容できる。さらに、スペクトル係数により高次の相関がある時であっても、そのより高次の相関は、通常、量子化によってゆがめられ、より高次のプレディクタは不要になる。
【０１５２】
しかし、いくつかのエンコーディングのシナリオで、量子化ステップサイズが小さく、量子化されたスペクトル係数が大きい振幅を有する場合に、より高次のプレディクタおよび／またはより高精度の予測係数が、エンコーディング効率のより大きい改善をもたらすことができる。上で説明した係数予測の技法およびツールは、高次プレディクタおよび高精度予測係数を一般的な形でサポートする。
【０１５３】
ＩＶ．スペクトル係数のインターリービングまたは並べ換え
前に注記したように、オーディオエンコーダは、しばしば、圧縮を達成するために、変換コーディングとそれに続く量子化およびエントロピコーディングを使用する。オーディオ信号のいくつかのパターンについて、周波数変換後に、スペクトル係数に周期的パターンが残っている。そのような冗長性を活用してコーディング効率を高める様々な技法およびツールを説明する。具体的に言うと、いくつかの実施形態で、図２、４、または６に示されたものなどのエンコーダが、量子化されたスペクトル係数のインターリービングまたは並べ換えを実行する。対応するデコーダ（図３、５、または７に示されたものなど）は、量子化されたスペクトル係数のインターリービングまたは並べ換えを逆転する。
【０１５４】
Ａ．例の問題領域
従来、サブフレームまたは他のウィンドウのスペクトル係数は、その間に線形相関をまったく有しないと仮定される。そうではなく、スペクトル係数は、通常、あるより高次の統計的関係を有すると仮定され、エンコーダは、エントロピコーディング中にその関係を活用することを試みる。
【０１５５】
これらの仮定は、いくつかの状況では成り立たない。オーディオ信号のある種のタイプおよびパターンについて、サブフレームまたは他のウィンドウのスペクトル係数は、必ずしも無相関ではない。これは、例えば、オーディオ信号が時間領域で周期的であり、周期的信号のスペクトル係数も周期性を示すときに発生する。実際には、正弦波信号は、しばしばこの振る舞いを示し、ある種の非静止信号もそうである。
【０１５６】
例示のために、図１５ａに、周期的オーディオ信号を時間領域で示し、サンプルの時系列の振幅をグラフにする。図１５ｂに、ＤＣＴ演算からの対応する量子化されたスペクトル係数を示す。図１５ｂでは、約５７個のスペクトル係数おきに強いピークの非０スペクトル係数があり、他の場所のスペクトル係数は、ほとんどが０または小さい値を有する。ランレベルコーディングまたはベクトル可変長コーディングなどの技法を使用して、この種類の周期的パターンを有するスペクトル係数を直接にエントロピコーディングすることは、効率的ではない。具体的に言うと、その前後に０の値または小さい値の係数を有するピーク係数をエンコードすることは、通常、ランレベルコーディングとベクトル可変長コーディングとの両方で、大量のビットを使用する。しかし、このタイプのピークパターンは、周期的信号に一般的である。
【０１５７】
要約すると、係数並べ換えの技法およびツールによって対処できる、複数の問題を説明した。しかし、これらの問題のいずれかまたはすべてに対処するために、そのような係数並べ換えの技法およびツールを適用する必要はない。
【０１５８】
Ｂ．スペクトル係数を並べ換える例のアーキテクチャ
いくつかの実施形態で、エンコーダは、エントロピコーディングの前に、量子化されたスペクトル係数に対して並べ換えを実行し、対応するデコーダは、エントロピコーディングの後に、量子化されたスペクトル係数に対して並べ換えを実行する。トーンまたは高調波を有する周期的信号などのコンテンツのある種のパターンおよびタイプに関して、並べ換えは、後続エントロピエンコーディングの効率を改善するために、スペクトル係数の冗長性を減らす。デコーディング中には、並べ換え（エントロピデコーディングに続く）は、エンコーダでの並べ換えを補償する。
【０１５９】
図１６に、量子化されたスペクトル係数の並べ換えを用いるエンコーダを示す。例えば、このエンコーダは、スペクトル係数を並べ換えるためにステージを追加された、図２または４に示されたエンコーダの修正版である。あるいは、このエンコーダは、エントロピコーディングの前の前処理として並べ換えを有する、図６に示されたエンコーダの修正版である。
【０１６０】
図１６を参照すると、エンコーダは、クォンタイザから、量子化されたスペクトル係数（１６０５）を受け取る。量子化されたスペクトル係数は、並べ換え／インターリービングモジュール（１６８０）によって処理され、並べ換え／インターリービングモジュール（１６８０）は、オプションでスペクトル係数（１６０５）の一部またはすべてを並べ換え、並べ換え情報をビットストリーム（１６９５）内でシグナリングする。
【０１６１】
量子化されたスペクトル係数（１６０５）が、エントロピコーディング効率を改善するために活用できる周期的パターンを示すと仮定する。エントロピコーディングの前に、量子化されたスペクトル係数は、係数の周期性を考慮してインターリーブされる、すなわち並べ換えられる。例えば、並べ換えは、大きい値のピーク係数を一緒にクラスタ化し、これは、これらの係数の後続のベクトル可変長コーディングの効率を改善し、並べ換えは、他の係数（例えば、ピークの間の０の値の係数および小さい値の係数）を一緒にクラスタ化し、これは、これらの係数の後続ランレベルコーディングの効率を改善する。
【０１６２】
スペクトル係数をインターリーブするために、エンコーダは、周期的パターンを示すセグメントに沿ってスペクトル係数をインターリーブする。単純な例として、エンコーダは、マルチパスの形で周期内の係数にまたがってブラウズし、まずめいめいの周期内で第１係数を選択し、次にめいめいの周期内で第２係数を選択し、次にめいめいの周期内で第３係数を選択し、以下同様である。エンコーダは、すべての係数が選択されるまで並べ換えを継続する。スペクトル係数の系列が、４つの周期Ａ、Ｂ、Ｃ、およびＤを含み、各周期が、４つのスペクトル係数を含むと仮定する。インターリーブの前には、この系列は、
Ａ0  Ａ1  Ａ2  Ａ3  Ｂ0  Ｂ1  Ｂ2  Ｂ3  Ｃ0  Ｃ1  Ｃ2  Ｃ3  Ｄ0  Ｄ1  Ｄ2  Ｄ3
であり、インターリーブの後には、この系列は、
Ａ0  Ｂ0  Ｃ0  Ｄ0  Ａ1  Ｂ1  Ｃ1  Ｄ1  Ａ2  Ｂ2  Ｃ2  Ｄ2  Ａ3  Ｂ3  Ｃ3  Ｄ3
である。
【０１６３】
したがって、並べ換えられた系列は、まず係数０、４、８、および１２があり、次に係数１、５、９、および１３などがある。各周期で、第１係数だけが大きい値を有する場合に、インターリービングの後には、この系列の最初の４つの係数だけが、大きい値を有し、他の係数のすべてが、小さい値または０の値を有する。ベクトル可変長コーディングは、最初の４つの係数を効率的に圧縮し、ランレベルコーディングは、残りを効率的に処理する。
【０１６４】
図１６に戻ると、オプションの並べ換え（１６８０）の後に、エントロピエンコーダ（１６９０）は、（潜在的に並べ換えられている）スペクトル係数をエントロピコーディングする。エンコーダは、エントロピコーディングされた情報をビットストリーム（１６９５）内でシグナリングする。
【０１６５】
図１７に、量子化されたスペクトル係数の並べ換えを用いる対応するデコーダを示す。例えば、このデコーダは、並べ換えのためにステージを追加された、図３または５に示されたデコーダの修正版である。あるいは、このデコーダは、エントロピデコーディングの後の後処理として並べ換えを有する、図７に示されたデコーダの修正版である。
【０１６６】
図１７を参照すると、エントロピデコーダ（１７９０）は、量子化されたスペクトル係数の情報をビットストリーム（１７９５）からデコードする。ビットストリーム（１７９５）から解析された並べ換え情報を使用して、並べ換え／インターリービングモジュール（１７８０）は、オプションで、デコードされたスペクトル係数の一部またはすべてを並べ換え、オリジナルの順序の量子化されたスペクトル係数（１７０５）を作る。本質的に、デコーダでの並べ換えは、エンコーダで実行された並べ換えを逆転する。
【０１６７】
上で示した例の系列では、周期長に基づく単純な並べ換えが実行される。しかし、いくつかの場合に、そのような単純な並べ換えは、セグメント内の前端の非周期的情報、特定の周期内の前端の０もしくは他のオフセット、および／または周期の始めのピーク係数のクラスタ化を考慮に入れることができない。追加の並べ換え情報（下で説明する）は、これらの現象に対処することができる。単純な数値の例を与えるために、１つのセグメントが、１２８個のスペクトル係数を有し、係数の一部について周期的パターンを含むと仮定する。周期的パターンは、係数１０個の平均周期長を有し、第１９係数で始まり、第１０２係数で終わる。周期長の倍数に関して、大まかな推定として、最初の並べ換えられる周期は、セグメントの第３周期（係数２０〜２９）であり、最後の並べ換えられる周期は、第１０周期（係数９０〜９９）である。第３周期のオフセットは、−１であり（この周期の開始位置が第２０係数ではなく第１９係数にあることを示す）、第１０周期のオフセットは、２である。他の周期のオフセットも、適宜シグナリングすることができる。並べ換えられる周期が、通常は複数のピーク係数から始まる場合には、並べ換えの後であっても隣接したままに保たれなければならない、周期あたりの最初の係数の個数を示す値をシグナリングすることができる。
【０１６８】
適応係数並べ換えについて、エンコーダは、サブフレームごとまたはある他の基礎で並べ換えを変更する。例えば、エンコーダは、サブフレームを複数のセグメントに分割し、セグメントのうちの１つまたは複数について並べ換え情報を計算し、セグメント化情報ならびに並べ換え情報をシグナリングする。代替案では、エンコーダは、セグメント化および／またはシグナリングに異なる機構を使用する。
【０１６９】
いくつかの入力について、係数並べ換えは、性能を改善しない。セグメントごとの基礎での係数並べ換えのディスエーブル（下で説明する）のほかに、エンコーダおよびデコーダは、シーケンス全体について（例えば、シーケンスレイヤオン／オフフラグを用いて）またはある他のレベルで係数並べ換えをディスエーブルすることができる。
【０１７０】
係数並べ換えが、マルチチャネルオーディオに使用される場合に、係数並べ換えは、量子化などがエンコーディング中にマルチチャネル変換より下流である時に、コーディングされたチャネルごとに行われる。デコーディング中にも、係数並べ換えは、コーディングされたチャネルごとに行われる。したがって、そのようなマルチチャネルオーディオについて、セグメントごと、サブフレームごと、または周期ごとにシグナリングされる並べ換え情報は、通常、特定のコーディングされたチャネルのセグメントごと、サブフレームごと、または周期ごとにシグナリングされる。係数並べ換えが、マルチチャネルオーディオに使用される時に、係数並べ換えオン／オフ情報を、コーディングされたチャネルごとに、コーディングされたチャネルのサブフレームごとに、またはある他のレベルでシグナリングすることができる。
【０１７１】
多くの場合に、係数並べ換えは、主に低周波数および中間周波数のスペクトル係数に関してエンコーディング利益をもたらす。したがって、係数並べ換えを、より高い周波数のスペクトル係数に関して自動的にディスエーブルすることができる。あるいは、係数並べ換えからのエンコーディング利益が、主に特定の周波数サブ範囲内のスペクトル係数に関するものである場合に、係数並べ換えを、これらの周波数サブ範囲内で選択的にイネーブルし、それ以外の範囲でディスエーブルすることができる。
【０１７２】
セクションＩＩＩで説明した係数予測を、係数並べ換えと共に使用することができるが、係数予測および係数並べ換えは、より一般的には、入力の異なるカテゴリについて別々に使用される。これらが一緒に使用される時には、係数予測は、エンコーディング中に並べ換えに続き、係数並べ換えは、デコーディング中に予測に続き、係数予測は、並べ換えられた係数のうちの少なくともいくつか（例えば、ピーク係数）に対して使用される。
【０１７３】
Ｃ．エンコーディング中の係数並べ換えの例の技法
図１８ａに、エンコーディング中に量子化されたスペクトル係数を並べ換える技法（１８００）を示し、図１８ｂおよび１８ｃに、この技法（１８００）のある種の行為を実行する可能な形を詳細に示す。例えば、図１６に示されたものなどのエンコーダが、この技法（１８００）を実行する。代替案では、別のエンコーダが、この技法（１８００）を実行する。
【０１７４】
まず、エンコーダは、セグメントの並べ換え情報を計算する（１８１０）。例えば、エンコーダは、図１８ｂに示されているように、並べ換え情報を計算する（１８１０）。代替案では、エンコーダは、他のおよび／または追加の並べ換え情報を計算する。
【０１７５】
図１８ｂを参照すると、エンコーダは、その中で係数が並べ換えられるセグメントを識別する（１８１２）。例えば、エンコーダは、周期的パターンを有するスペクトル係数のセグメントを見つける。例示のために、図１５ｂでは、最初の８００個程度の係数だけが、周期的パターンを有する。
【０１７６】
エンコーダは、セグメントのいくつかの周期を並べ換えから除外することができる。例えば、最初の１つまたは２つの周期が、他の周期に似ていない場合に、その最初の１つまたは２つの周期は、並べ換えプロセスから除外される。いくつかの場合に、セグメントの最初の部分は、前端の０の係数または非周期的な係数を含む。したがって、エンコーダは、セグメント内で並べ換えなければならない最初の周期を追跡する。同様に、エンコーダは、セグメント内で並べ換えなければならない最後の周期をも追跡する。
【０１７７】
次に、エンコーダは、セグメントの周期の長さを識別する（１８１４）。例えば、エンコーダは、セグメント内のピークの個数をカウントし、セグメント長をピークの個数で割る。あるいは、エンコーダは、候補周期長の網羅的探索を実行する。あるいは、エンコーダは、バイナリリファインメント手法（パラメータ空間の網羅的探索ではなく）を使用して、候補周期長を探索する。あるいは、エンコーダは、０値／小さい値の係数のランの長さを評価する。あるいは、エンコーダは、セグメントの周期長を識別するある他の機構を使用する。周期長を整数値に制限することができ、あるいは、周期長を非整数値にすることもできる。サブ整数精度を許容することは、並べ換えの効率を大幅に改善し、最終的にエントロピコーディングを再び改善することができる。
【０１７８】
エンコーダは、他の並べ換え情報をも識別する（１８１６）が、これには、周期調整およびプリロール値を含めることができる。例えば、非整数周期長を許容する実施形態では、エンコーダは、次のように、他の並べ換え情報を計算する。
【０１７９】
周期ｉの初期開始位置は、ｒｏｕｎｄ（ｉ＊周期長）であり、周期ｉの初期終了位置は、次の周期の初期開始位置である。エンコーダは、追跡のために周期の開始位置および／または終了位置を記憶する周期位置テーブルを保持する。これは、エンコーダが、異なる位置を評価する時にこのテーブル内の周期の位置を単純に調整することをも可能にする。
【０１８０】
具体的に言うと、エンコーダは、エントロピコーディングを改善するために、周期の開始位置および／または終了位置を初期位置から係数１つまたは複数分だけ移動することができる。例えば、周期の初期開始位置の直前に複数の大きい重要な係数がある場合に、エンコーダは、係数２つ分だけ開始位置を左にシフトし、その結果、これらの大きい重要な係数が、前の周期の終りではなくこの周期の始めに現れるようにする。代替案では、エンコーダは、並べ換えられる周期の開始位置および／または終了位置の調整量を決定する、ある他の機構を使用する。
【０１８１】
エンコーダは、プリロール値をも選択する。プリロールは、互いに相対的に並べ換えられない、ある周期の始めにある係数を示す。一般に、ある周期の始めのピークは、１つのスペクトル係数だけではない。例えば、周期の始めに大きい値を有する複数の係数がある場合があり、そのような係数が、プリロール係数である。プリロール係数は、特殊な形でインターリーブされ、効果的に、並べ換えに関してグループとして扱われる。言い換えると、プリロール係数は、セグメントの周期に関する並べ換えの後であっても隣接している。プリロール値は、並べ換えられる周期のプリロール係数の個数（例えば、１、２、３）を示す。あるいは、セグメントごとにプリロールを計算するのではなく、エンコーダは、並べ換えられる周期ごとにプリロールを計算する。
【０１８２】
代替案では、エンコーダは、ある他の機構を使用して、他の並べ換え情報を識別する（１８１６）。
【０１８３】
図１８ａに戻って、エンコーダは、セグメントの並べ換え情報をビットストリーム内でシグナリングする（１８３０）。例えば、エンコーダは、図１８ｂに示されているように計算された並べ換え情報について、図１８ｃに示されているように並べ換え情報をシグナリングする（１８３０）。代替案では、エンコーダは、他のおよび／または追加の並べ換え情報をシグナリングする。
【０１８４】
図１８ｃを参照すると、エンコーダは、並べ換えのオン／オフビットをシグナリングする（１８３２）。例えば、エンコーダは、係数並べ換えが使用される時のビットコストを、係数並べ換えが使用されない時のビットコストと比較する。エンコーダは、よりよい性能を提供するモードを選択し、エンコーダは、どのモードが選択されるかを示すのに、セグメントあたり単一のビットを使用する。代替案では、エンコーダは、ある他の機構を使用しておよび／またはセグメント全体以外のある持続時間についてオン／オフ情報をシグナリングする。
【０１８５】
並べ換えが使用される（判断１８３４からの「ｙｅｓ」分岐）場合に、エンコーダは、周期長をシグナリングする（１８３６）。非整数周期長が許容されるときには、周期長を、整数部分および分数部分を用いて表すことができ、この両方が、ビットストリーム内でシグナリングされる。整数周期長（または非整数周期長の整数部分）は、ｌｏｇ2（最大周期長）ビットを有する固定長コード［「ＦＬＣ」］としてシグナリングされる。例えば、最大周期長は、１２８であり、整数周期長は、ｌｏｇ2（１２８）＝７ビットを用いてシグナリングされる。分数部分は、３ビットＦＬＣを用いてシグナリングすることができる。代替案では、周期長が、別の機構を用いてシグナリングされる。
【０１８６】
エンコーダは、係数が並べ換えられる最初の周期をもシグナリングする（１８３８）。事実上、これは、おおむね、並べ換えの開始位置を示す。最初の並べ換えられる周期は、周期長の単位で表すことができる。最初の並べ換えられる周期は、例えば３ビットＦＬＣを用いてシグナリングされ、この場合に、最初の並べ換えられる周期は、セグメント内の第１周期から第８周期までのいずれかの周期である。代替案では、最初の並べ換えられる周期が、別の機構を用いてシグナリングされる。
【０１８７】
エンコーダは、係数が並べ換えられる最後の周期をもシグナリングする（１８４０）。最後の並べ換えられる周期は、周期長の単位で表すことができる。最後の並べ換えられる周期は、例えばｌｏｇ2（周期の最大個数）ビットを有するＦＬＣを用いてシグナリングされる。エンコーダは、セグメント内の係数の個数および周期長から周期の最大個数を導出する。代替案では、最後の並べ換えられる周期が、別の機構を用いてシグナリングされる。
【０１８８】
エンコーダは、位置調整をシグナリングする（１８４２）。係数が並べ換えられる周期について、エンコーダは、初期開始位置および／または初期終了位置に対する相対的なオフセットを示す情報をシグナリングする。例えば、１つの調整値が、周期ごとにシグナリングされ、その調整値は、係数の個数としてシグナリングされる。そのような調整値は、ｌｏｇ2（オフセット範囲）ビットを有するＦＬＣとしてシグナリングすることができる。したがって、オフセット範囲が１６である場合に、調整値は、係数−８…７個分の調整範囲について、ｌｏｇ2（１６）＝４ビットを用いてシグナリングされる。代替案では、調整値は、別の機構を用いてシグナリングされる（例えば、以前の調整値に対する相対的な調整値（絶対項ではなく）のシグナリング、またはすべての周期に関する１つの調整のシグナリング）。
【０１８９】
エンコーダは、プリロール値をもシグナリングする（１８４４）。ある個数の係数のプリロール値は、ｌｏｇ2（最大プリロール＋１）ビットを有するＦＬＣとしてシグナリングされる。例えば、最大プリロール長は、３（０、１、２、または３のプリロールについて）であり、このプリロール値は、ｌｏｇ2（４）＝２ビットを用いてシグナリングされる。代替案では、プリロール値は、別の機構を用いてシグナリングされる。
【０１９０】
図１８ａに戻って、エンコーダは、係数並べ換えを使用するか否かを決定する（１８６０）。使用しない場合には、エンコーダは、ベクトル可変長コーディング、ランレベルコーディング、またはある他のエントロピコーディングを使用して、セグメントの量子化されたスペクトル係数を単純にエントロピエンコードする（１８８０）。その一方で、係数並べ換えが使用される場合には、エンコーダは、セグメントの係数の少なくともいくつかを並べ換え（１８７０）、ベクトル可変長コーディング、ランレベルコーディング、またはある他のエントロピコーディングを使用して、（選択的に）並べ換えられた係数をエントロピエンコードする（１８８０）。例えば、エンコーダは、図１８ｂに示されているように計算され、図１８ｃに示されているようにシグナリングされる並べ換え情報について、次のように並べ換え（１８７０）を実行する。
【０１９１】
要約すると、エンコーダは、係数を並べ換え、それらの係数を新規係数バッファに（または、並べ換えプロセスがバッファリングに余分なリソースを使用しないようにするために、エントロピコーダに直接に）出力する。エンコーダは、係数が並べ換えられる周期の開始位置および／または終了位置を示すテーブル（上で説明した）をブラウズする。一般に、エンコーダは、最初のそのような周期から最後のそのような周期までループする。
【０１９２】
ある周期について、エンコーダは、並べ換えでまだ処理されていない最初の係数を見つける。その係数が、プリロール領域内にある場合には、エンコーダは、その係数と１つまたは複数のそれに続くプリロール係数を、そのオリジナルの順序で出力する。そうでない場合には、エンコーダは、まだ処理されていない最初の係数だけを出力する。次に、エンコーダは、その周期内の処理済みのすべての係数を、処理済みとしてマークする。エンコーダは、次の周期の最初の未処理の係数に継続する。
【０１９３】
ある周期について、未処理の係数がない場合には、エンコーダは、単純に次の周期に移動する。
【０１９４】
エンコーダは、１回の反復で最初から最後まですべての周期をチェックした後に、最初の周期から繰り返す。最終的に、エンコーダは、並べ換えられなければならない複数の周期の係数のすべてを処理する。セグメント内の係数が並べ換えられない時に、エンコーダは、単純に、これらの係数を新規係数バッファにコピーする（またはこれらを適当な時にエントロピコーダに直接に送る）ことができる。
【０１９５】
代替案では、エンコーダは、ある他の機構を使用して並べ換え（１８７０）を実行する。あるいは、エンコーダは、他のおよび／または追加の並べ換え情報に従って並べ換え（１８７０）を実行する。
【０１９６】
次に、エンコーダは、次のセグメントに継続するのか、この技法（１８００）を終了するのかを判定する（１８９０）。エンコーダが継続する場合に、エンコーダは、次のセグメントの並べ換え情報を計算する（１８１０）、並べ換え情報をシグナリングする（１８２０）、などを行う。
【０１９７】
図１８ａから図１８ｃは、別々であり、並べ換え情報をシグナリングする行為より前の、並べ換え情報を計算する行為を示すが、代替案では、これらの行為が、互いとまたは他の行為とインターリーブされる。
【０１９８】
Ｄ．デコーディング中に係数を並べ換える例の技法
図１９ａに、デコーディング中に量子化されたスペクトル係数を並べ換える技法（１９００）を示し、図１９ｂおよび１９ｃに、技法（１９００）のある種の行為を実行する可能な形を詳細に示す。例えば、図１２に示されたものなどのデコーダが、技法（１９００）を実行する。代替案では、別のデコーダが、技法（１９００）を実行する。
【０１９９】
まず、デコーダは、セグメントの並べ換え情報を得る（１９１０）。デコーダは、通常、インターリービング／並べ換えで使用するために、ビットストリームからサイド情報を読み取る。例えば、デコーダは、図１８ｃに示されているようにシグナリングされた並べ換え情報について、図１９ｂに示されているように並べ換え情報を得る（１９１０）。代替案では、デコーダは、他のおよび／または追加の並べ換え情報を得る。
【０２００】
図１９ｂを参照すると、デコーダは、ビットストリームから並べ換えのオン／オフビットを解析する（１９１２）。例えば、デコーダは、ビットストリームから単一のビットを読み取り、ここで、この単一のビットは、係数並べ換えを用いるモードまたは係数並べ換えを用いないモードのどちらを使用すべきかを示す。代替案では、オン／オフ情報は、ある他の機構を使用してシグナリングされ、解析され、かつ／またはセグメント全体以外のある持続時間に関する。
【０２０１】
係数並べ換えが使用される（判断１９１４からの「ｙｅｓ」分岐）場合に、デコーダは、ビットストリームから周期長を解析する（１９１６）。非整数周期長が許容されるときには、周期長を、整数部分および分数部分を用いて表すことができ、この両方が、ビットストリームから解析される。整数周期長（または非整数周期長の整数部分）は、ｌｏｇ2（最大周期長）ビットを有するＦＬＣとして表される。代替案では、周期長が、別の機構を用いてシグナリングされる。
【０２０２】
デコーダは、ビットストリームから、係数が並べ換えられる最初の周期をも解析し（１９１８）、これは、おおむね、並べ換えの開始位置を示す。最初の並べ換えられる周期は、周期長の単位で表すことができる。最初の並べ換えられる周期は、例えば３ビットＦＬＣを用いて表される。代替案では、最初の並べ換えられる周期が、別の機構を用いてシグナリングされ、解析される。
【０２０３】
デコーダは、係数が並べ換えられる最後の周期をもビットストリームから解析する（１９４０）。最後の並べ換えられる周期は、周期長の単位で表すことができる。最後の並べ換えられる周期は、例えばｌｏｇ2（周期の最大個数）ビットを有するＦＬＣとしてシグナリングされ、ここで、デコーダは、セグメント内の係数の個数および周期長から周期の最大個数を導出する。代替案では、最後の並べ換えられる周期が、別の機構を用いてシグナリングされ、解析される。
【０２０４】
周期長、最初の並べ換えられる周期、および最後の並べ換えられる周期があれば、デコーダは、周期位置テーブルを満たす情報を有し、この周期位置テーブルは、追跡のために周期の開始位置および／または終了位置を記憶する。したがって、デコーダは、対応するエンコーダによって使用された周期位置テーブルを再作成することができる。
【０２０５】
デコーダは、位置調整をビットストリームから解析する（１９２２）。係数が並べ換えられる周期について、デコーダは、初期開始位置および／または初期終了位置に対する相対的なオフセットを示す情報を解析する。例えば、１つの調整値が、周期ごとに解析され、その調整値は、係数の個数として表される。そのような調整値は、ｌｏｇ2（オフセット範囲）ビットを有するＦＬＣとして表すことができる。代替案では、調整値は、別の機構を用いてシグナリングされ、解析される。
【０２０６】
位置調整情報があるので、デコーダは、周期位置テーブル内の周期の開始位置および／または終了位置を調整するための情報を有する。
【０２０７】
デコーダは、プリロール値をも解析する（１９２４）。ある個数の係数のプリロール値は、ｌｏｇ2（最大プリロール＋１）ビットを有するＦＬＣとして表される。代替案では、プリロール値は、別の機構を用いてシグナリングされ、解析される。
【０２０８】
図１９ａに戻って、デコーダは、ベクトル可変長デコーディング、ランレベルデコーディング、またはある他のエントロピデコーディングを使用して、ビットストリームから係数情報をエントロピデコードする（１９３０）。エンコーディングで並べ換えが使用されなかった場合には、デコーダは、セグメントの量子化されたスペクトル係数をそのオリジナルの順序でエントロピデコードする（１９３０）。その一方で、エンコーディングで並べ換えが使用された場合には、デコーダは、並べ換えられた量子化されたスペクトル係数をエントロピデコードする（１９３０）。
【０２０９】
デコーダは、係数並べ換えがデコーディング中に使用されるか否かも決定する（１９６０）。係数並べ換えがデコーディング中に使用される場合には、デコーダは、エントロピデコードされたセグメントの係数のうちの少なくともいくつかを並べ換える（１９７０）。例えば、デコーダは、図１９ｂに示されているように、取り出された並べ換え情報について、次のように並べ換え（１９７０）を実行する。
【０２１０】
デコーダは、セグメントの並べ換え情報（例えば、周期長、最初の並べ換えられる周期、最後の並べ換えられる周期）から周期位置テーブルを生成し（１９７２）、このテーブルに周期調整を適用する（１９７４）。このテーブルには、並べ換えで使用される周期の開始位置および／または終了位置が格納される。代替案では、デコーダは、テーブル生成プロセスをスキップするか、ある他のテーブル構造を使用する。
【０２１１】
次に、デコーダは、周期位置テーブルおよびプリロール値を使用して係数を並べ換える（１９７６）。要約すると、デコーダは、係数を並べ換え、係数を新規係数バッファに出力し、エンコーディング中に実行された並べ換えを逆転する（代替案では、デコーダは、エントロピデコーダの出力を直接に並べ換えることができ、したがって、係数バッファリングのための追加リソースは使用されない）。デコーダは、周期位置テーブル（上で説明した）を使用し、この周期位置テーブルは、係数を並べ換えなければならない周期の開始位置および／または終了位置を示す。一般に、デコーダは、エントロピデコードされたスペクトル係数を、エントロピデコーディングから生じる順序で処理する。例えば、最初に並べ換えられる周期の位置には、デコーダは、最初の未処理の係数ならびに最初の並べ換えられる周期のプリロール領域のすべての未処理の係数を置く。次に、第２の並べ換えられる周期の位置には、デコーダは、次の未処理の係数ならびに第２の並べ換えられる周期のプリロール領域のすべての未処理の係数を置く。デコーダは、最後の並べ換えられる周期までの周期のそれぞれについて、このプリロール処理を繰り返す。その後、デコーダは、ある並べ換えられる周期が充たされている場合には、その並べ換えられる周期をスキップして、連続する未処理の係数を第１、第２、第３などの並べ換えられる周期に置く。最終的に、デコーダは、並べ換えられなければならない周期の係数のすべてを処理する。セグメント内の係数が並べ換えられないときには、デコーダは、これらの係数を新規係数バッファ内の対応する位置に単純にコピーすることができる。
【０２１２】
代替案では、デコーダは、ある他の機構を使用して並べ換え（１９７０）を実行する。例えば、周期位置テーブルおよびプリロール値を使用して、デコーダは、エントロピデコードされた係数をブラウズし、最初の並べ換えられる周期のスペクトル係数を選択し、出力する。次に、エンコーダは、エントロピデコードされた係数をブラウズし、第２の並べ換えられる周期のスペクトル係数を選択し、出力し、以下、最後の並べ換えられる周期まで同様である。あるいは、デコーダは、他のおよび／または追加の並べ換え情報に従って並べ換え（１９７０）を実行する。
【０２１３】
次に、デコーダは、次のセグメントに継続するのか、この技法（１９００）を終了するのかを判定する（１９９０）。デコーダが継続する場合に、デコーダは、次のセグメントの並べ換え情報を得る（１８１０）、などを行う。
【０２１４】
図１９ａから１９ｃは、別々であり、並べ換えの他の行為より前の、並べ換え情報を得る行為を示すが、代替案では、これらの行為が、互いとまたは他の行為とインターリーブされる。
【０２１５】
Ｅ．結果
一般に、量子化されたスペクトル係数の並べ換えは、周期的信号の後続エントロピエンコーディングの効率を改善する。例えば、並べ換えは、類似する値を有する係数をローカルにグループ化し、後続のベクトル可変長コーディングおよび／またはランレベルコーディングをより効率的にする。
【０２１６】
上で説明した並べ換えは、実施が相対的に単純であり、低い計算複雑さを有する。メモリ使用量に関して、いくつかの実施態様で、並べ換え動作によって要求される唯一の余分なメモリは、周期位置テーブルであり、これは非常に小さい。
【０２１７】
図２０に、係数並べ換えの後の図１５ｂのスペクトル係数を示す。周期長は、５６．７である。並べ換えは、位置１１４（セグメントの第３周期が始まる）から始まり、並べ換えは、位置１０２１付近（セグメントの第１８周期が終わる）で終わる。プリロールは、このセグメントの周期について３である。並べ換えの後に、位置２５０付近までの係数は、ベクトル可変長コーディングのために良好にセットアップされ、その後の係数は、ランレベルコーディングのために良好にセットアップされる。
【０２１８】
並べ換えに帰することができるコーディング利益は、信号の周期性に依存する。信号が、時間領域で周期的である場合には、しばしば、スペクトル係数の並べ換えからの大きい利益がある。そうでない場合には、コーディング利益は、通常はより小さいか存在しない。図２１に、周期的信号に関する、１つの例のオーディオファイルのサブフレームあたりの並べ換えに起因するコーディング利益を示す。サブフレームの最大の利益は、４０％を超え、このファイルの平均利益は、約１１％である。
【０２１９】
Ｖ．適応コーディング／デコーディングでの複数のエントロピモデルの選択的使用
いくつかの実施形態で、図２、４、または６に示されたものなどのエンコーダは、エンコーダが複数のエントロピモデルを選択的に使用する適応エントロピコーディングを実行する。対応するデコーダ（図３、５、または７に示されたものなど）は、デコーダが複数のエントロピモデルを選択的に使用する適応エントロピデコーディングを実行する。複数のエントロピモデルを選択的に使用する技法およびツールは、オーディオ、ビデオ、イメージ、または任意の他のデータのロスレスおよびロッシイの圧縮および圧縮解除を含む、シンボル値が複数の確率分布を有する様々なシナリオに適用可能である。
【０２２０】
Ａ．例の問題領域
シンボルの適応コーディングは、しばしば、シンボル値の確率分布が変化する時にエントロピコーディングの効率を改善するのに使用される。適応算術コーディングは、異なるまたは変化する確率分布を直接に使用することができる。適応可変長コーディング（適応ハフマンコーディングなど）について、シンボル値に関する異なるエントロピモデルは、異なるまたは変化するＶＬＣテーブル内で実施される。
【０２２１】
逆方向適応に関して、コーディング／デコーディングは、既に処理されたシンボルに基づいて適応する。順方向適応に関して、適応を記述する情報が、明示的にシグナリングされる。例えば、テーブル切替コードが、シンボルの系列に使用されるＶＬＣテーブルを示すためにシグナリングされる。
【０２２２】
適応は、確率分布（または、可変長コーディング／デコーディングに使用される対応するＶＬＣ）を動的に変更することによって達成することができる。あるいは、適応は、異なる事前にトレーニングされた確率分布（または対応するＶＬＣテーブル）の固定されたセットから選択することによって達成することができる。
【０２２３】
複数の異なる分布／ＶＬＣテーブルを使用することの１つの欠点は、エンコーダおよびデコーダに必要なメモリである。というのは、使用されるメモリが、分布／ＶＬＣテーブルの個数に伴って線形に増加するからである。例えば、１６個のＶＬＣテーブルが使用される場合に、単一のＶＬＣテーブルの場合と比較して、約１６倍のメモリが、エンコーダおよびデコーダ内のＶＬＣテーブルのために使用される。
【０２２４】
要約すると、複数のエントロピモデルの選択的使用の技法およびツールが対処できる問題を説明した。しかし、この問題に対処するために、そのような技法およびツールを適用する必要はない。
【０２２５】
Ｂ．複数のエントロピモデルの選択的使用
複数のエントロピモデルを選択的に使用することによって、複数の分布／ＶＬＣテーブルのためのリソース使用量を大幅に減らすことができる。それと同時に、複数のエントロピモデルの使用に関連するエンコーディング利益の多くを、それでも達成することができる。様々な一般的なシナリオで、複数のエントロピモデルの選択的使用は、すべてではなくいくつかのシンボル値について異なる分布／ＶＬＣテーブルの間で選択することを含む。より一般的には、これは、いくつかのシンボル値に関するより多くの適応性および他のシンボル値に関するより少ない適応性を可能にするために階層的に編成された異なる分布／ＶＬＣテーブルの間で選択することを含む。
【０２２６】
シンボル値のある集合が、あるテストに従って、ある種の可能性のより高いシンボル値とある種の可能性のより低いシンボル値とを含むと仮定する。分布／テーブルに使用されるメモリを減らすために、エンコーダおよびデコーダは、可能性のより高いシンボル値に複数の分布／テーブルを使用するが、可能性のより低いシンボル値は、複数の分布／テーブルでは表されない。これは、コーディング利益に対する無視できるペナルティを伴って、複数の分布／テーブルに使用されるメモリを減らす（多くの情況で、シンボル値の比較的小さい分数が、確率分布の大きいパーセンテージを占める）。具体的に言うと、エントロピモデルが、適応の所与の状態に関する条件とみなされる場合に、めいめいの異なる状態に、可能性のより高いシンボル値の異なる分布がある。しかし、可能性のより低いシンボル値の相対分布は、異なる状態において同一である。
【０２２７】
２５６個のシンボル値の集合について、シンボル値のうちの３２個が、ほとんどの場合に使用される場合に、エンコーダおよびデコーダは、その３２個のシンボル値のための６個のＶＬＣテーブルの間で切り替えることができ、ここで、６個のＶＬＣテーブルのそれぞれは、他の２２４個のシンボル値のための単一のＶＬＣテーブルに切り替えるエスケープコードをも含む。
【０２２８】
あるいは、２５６個のシンボル値の集合について、シンボル値のうちの７つが、ほとんどの場合に使用され、シンボル値のうちの２１個が、時折使用され、残りのシンボルが、希に使用されるのみであると仮定する。エンコーダおよびデコーダは、７つの最も一般的なシンボル値のための１１個のＶＬＣテーブルの間で切り替えることができ、ここで、１１個のＶＬＣテーブルのそれぞれは、２１個の次に一般的なシンボル値のための２つのＶＬＣテーブルに切り替える１つのエスケープコードを含む（このエスケープコードに、順方向適応のためのテーブル選択情報を続けることができる）。２１個のシンボル値のための２つのＶＬＣテーブルのそれぞれは、残りのシンボル値のための１つのＶＬＣテーブルに切り替えるエスケープコードを含む。
【０２２９】
図２２に、エントロピモデル／状態（例えば、分布、ＶＬＣテーブル）の階層編成に関してより複雑な例を示す。エンコーダおよびデコーダは、シンボル値Ｂ、Ｆ、Ｈ、およびＩのために８つのエントロピモデルを使用し、ここで、８つのエントロピモデルのそれぞれは、２つの切替点をも組み込まれている。例えば、エンコーダおよびデコーダが、エントロピモデルについて確率分布を使用する場合に、切替点は、分布内の特殊な切替確率値である。エンコーダおよびデコーダが、エントロピモデルについてＶＬＣを使用する場合に、切替点は、エスケープコードまたは他の特殊なＶＬＣである。８つのエントロピモデル内で、第１の切替点は、シンボル値ＡおよびＣのエントロピモデルへの切替用であり、第２の切替点は、シンボル値Ｄ、Ｅ、Ｇ、Ｊ、およびＫのエントロピモデルへの切替用である。
【０２３０】
エンコーダおよびデコーダは、シンボル値ＡおよびＣに３つのエントロピモデルを使用する。エンコーダおよびデコーダは、シンボル値Ｅ、Ｊ、およびＫに４つのエントロピモデルを使用し、ここで、この４つのエントロピモデルのそれぞれは、切替点をも組み込まれている。この切替点は、シンボル値ＤおよびＧのエントロピモデルへの切替用である。
【０２３１】
図２２では、シンボル値の部分集合は、その超集合より少数の関連するエントロピモデルを有する。これは、可能性のより高いシンボル値についてより多くの適応性がイネーブルされ、可能性のより低いシンボル値についてより少ない適応性がイネーブルされる、多数の一般的なシナリオと一貫する。しかし、その代わりに、部分集合が、その超集合より多数の関連するエントロピモデルを有することができる。
【０２３２】
複数のエントロピモデルの間での選択は、逆方向適応機構または順方向適応機構を介するものとすることができる。複数のエントロピモデル自体は、固定されたモデルまたは事前にトレーニングされるモデルとすることができ、あるいは、動的に変更することができる。エントロピモデルは、様々なエントロピコーディング方式およびエントロピデコーディング方式に適用することができる。算術コーディングおよび算術デコーディングは、すべてではなく一部のシンボル値について複数の確率分布を選択的に使用することができる。あるいは、可変長コーディングおよび可変長デコーディングは、すべてではなく一部のシンボル値について複数のＶＬＣテーブルを使用することができる。
【０２３３】
１．状態に関する分布の調整
エンコーダまたはデコーダが、一部のシンボル値（すべてのシンボル値ではなく）について複数のエントロピモデルを選択的に使用するために、複数のエントロピモデルが、それ相応に調整される。次の分析は、単純な例を参照して、状態の集合に関する実際の確率分布に対する調整を例示するものである。
【０２３４】
Ｘ（ｉ）＝Ｘ（０），Ｘ（１），．．．，Ｘ（Ｍ−１）というラベルを付けられたＭ個のシンボル値の分布を適応させるために、Ｓ（ｊ）＝Ｓ（０），Ｓ（１），．．．，Ｓ（Ｎ−１）というラベルを付けられたＮ個の状態があると仮定する。
【０２３５】
ＰSは、状態に関する確率分布を示し、ＰS（ｊ）は、状態がＳ（ｊ）である確率である。ＰS(j),Xは、状態Ｓ（ｊ）である時のシンボル値の確率分布を示し、ＰS(j),X(i)は、状態Ｓ（ｊ）である時にシンボルが値Ｘ（ｉ）を有する確率である。Ｍ個のシンボル値のうちで、Ｌ個のシンボル値が、可能性がより高いものとして指定され、Ｍ−Ｌ個のシンボル値は、可能性がより低いものとして指定される。Ｌ個の可能性がより高いシンボル値の集合が、集合Ｑであり、Ｍ−Ｌ個の可能性がより低いシンボル値の集合が、集合Ｒである。
【０２３６】
可能性のより低いシンボル値に対する可能性のより高いシンボル値の指定は、実施態様依存であり、柔軟であるが、正しい指定は、より効率的なコーディングにつながる。すべての状態Ｓ（ｊ）についてＰS(j),X(q)＞ＰS(j),X(r)であることは要求されず、ここで、Ｘ（ｑ）は、Ｑに含まれるシンボル値を示し、Ｘ（ｒ）は、Ｒに含まれるシンボル値を示す。言い換えると、所与の「可能性のより高い」シンボル値が、すべての状態において、所与の「可能性のより低い」シンボル値より高い確率を有することは、要求されない。
【０２３７】
状態Ｓ（ｊ）の改訂された分布Ｐ’S(j),Xは、状態Ｓ（ｊ）の実際のシンボル値分布ＰS(j),Xを近似する。Ｐ’S(j),Xは、（１）集合Ｒに含まれるシンボル値Ｘ（ｉ）の条件付き分布Ｐ’S(j),X(i),Rが、すべてのＳ（ｊ）について同一であるが、（２）集合Ｑに含まれるシンボル値の分布が、任意の所与のＳ（ｊ）について変化しないように、ＰS(j),Xを近似する（集合Ｑに含まれるシンボル値Ｘ（ｉ）についてＰ’S(j),X(i)＝ＰS(j),X(i)である）。
【０２３８】
Ｎ＝３であり、Ｍ＝５であると仮定する。状態の集合は、Ｎ＝｛Ｓ（０），Ｓ（１），Ｓ（２）｝であり、シンボル値の集合は、Ｍ＝｛Ｘ（０），Ｘ（１），Ｘ（２），Ｘ（３），Ｘ（４）｝である。
【０２３９】
また、状態確率が、表３に示されているようにＰS(0)＝０．５、ＰS(1)＝０．２、ＰS(2)＝０．３であると仮定する。したがって、状態０である確率は、５０％であり、状態１である確率は、２０％であり、状態２である確率は、３０％である。
【０２４０】
【表３】
2009501943.tif 000005
【０２４１】
表４に、状態のそれぞれでのシンボル値の実際の確率分布ＰS(j),X(i)を示す。
【０２４２】
【表４】
2009501943.tif 000006
【０２４３】
任意の閾として、シンボル値Ｘ（ｉ）は、状態のいずれかについて、その状態でのシンボル値の確率に、その状態である確率を賭けた値が０．１より大きい場合に、可能性のより高い集合Ｑに属すると仮定する。すなわち、任意のＳ（ｊ）について、所与のＸ（ｉ）についてＰS(j),X(i)＊ＰS(j)＞０．１である場合に、シンボル値Ｘ（ｉ）は、集合Ｑに含まれる。そうでない場合には、シンボル値Ｘ（ｉ）は、集合Ｒに含まれる。表４の分布に関して、Ｌ＝２、Ｑ＝｛Ｘ（１），Ｘ（３）｝、かつＲ＝｛Ｘ（０），Ｘ（２），Ｘ（４）｝である（ＰS(2),X(0)＞ＰS(2),X(1)の場合であっても、シンボルＸ（１）が、可能性のより高いシンボル値として指定され、シンボル値Ｘ（０）が、可能性のより低いシンボル値として指定されることに留意されたい。状態Ｓ（１）では、Ｘ（１）は非常に高い確率を有する）。代替案では、閾値および／またはテストが異なる。例えば、閾が、シンボル値のパーセンテージに関してセットされ、あるいは、テストが、複数の異なる状態での高い確率を要求する。一般に、集合ＱおよびＲのサイズに関する所与の制約に関して、最適区分を、実際の分布と近似分布との間の相対エントロピを調べることによって見つけることができる（一般に、本明細書で使用される時に、用語「最適」は、あるパラメータ化またはモデリングに従って、他の解よりよい、判断基準のある集合を満足する解を記述し、これは、状況によって絶対項において最適である場合もそうでない場合もあり、用語「最適化」は、そのような解を見つけるプロセスを示すのに使用される）。
【０２４４】
近似において、集合Ｑに含まれるシンボル値Ｘ（ｉ）について、Ｐ’S(j),X(i)＝ＰS(j),X(i)である。状態Ｓ（ｊ）に関する分布は、集合Ｑに含まれるシンボル値については変更されない。しかし、集合Ｒに含まれるシンボル値Ｘ（ｉ）について、近似分布は異なる。まず、集合Ｒに含まれるシンボル値の実際の条件付き分布ＰS(j),X(i),Rを計算する。集合Ｒに含まれるシンボル値について、実際の条件付き分布（集合Ｑに含まれるシンボル値Ｘ（１）、Ｘ（３）の寄与を除去し、Ｘ（０）、Ｘ（２）、Ｘ（４）からの寄与だけを用いて重みを付けた）を、表５に示す。ＰS(0),X(0),Rは、０．０９／（０．０９＋０．０４＋０．０７）＝０．４５であり、ＰS(0),X(1),Rは、０．０４／（０．０９＋０．０４＋０．０７）＝０．２である。
【０２４５】
【表５】
2009501943.tif 000007
【０２４６】
次に、近似条件付き分布Ｐ’S(j),X(i),Rは、
【０２４７】
【数１】
2009501943.tif 000008
【０２４８】
として計算される。
【０２４９】
すなわち、集合Ｒに含まれる時の近似条件付き分布は、Ｎ個の状態にまたがる実際の条件付き分布ＰS(j),X(i),Rの加重平均（ＰS(j)による）である。表４および５の値について、集合Ｒに含まれる時の近似条件付き分布Ｐ’S(j),X(i),Rを、表６に示す。Ｘ（０）について、Ｐ’S(j),X(0),Rは、（０．５＊０．４５）＋（０．２＊０．５５）＋（０．３＊０．５５）＝０．５である。
【０２５０】
【表６】
2009501943.tif 000009
【０２５１】
各状態Ｓ（ｊ）の最終的な近似分布は
【０２５２】
【数２】
2009501943.tif 000010
【０２５３】
である。
【０２５４】
したがって、集合Ｑに含まれるシンボル値について、状態Ｓ（ｊ）での実際の確率値が、状態Ｓ（ｊ）の近似分布に使用される。集合Ｒに含まれるシンボル値について、そのシンボル値の近似条件付き分布確率Ｐ’S(j),X(i),Rは、状態Ｓ（ｊ）の集合Ｒに含まれるそのシンボル値の実際の確率の合計を乗算される。シンボル値Ｘ（０）および状態Ｓ（０）について、Ｐ’S(0),X(0)は、０．５＊（０．０９＋０．０４＋０．０７）＝０．１である。表４および６の他の値について、状態Ｓ（ｊ）に関する最終的な近似確率分布を、表７に示す。
【０２５５】
【表７】
2009501943.tif 000011
【０２５６】
基本的に、表７を表４と比較すると、分布は、可能性のより高いシンボル値Ｘ（１）、Ｘ（３）については変更されず、分布は、集合Ｒに含まれるシンボル値の相対確率が状態の間で同一であるという条件を実施するために、可能性のより低いシンボル値Ｘ（０）、Ｘ（２）、Ｘ（４）について変更されている。すなわち、表７の各状態で、Ｘ（０）は、Ｘ（２）より２倍可能性が高く、Ｘ（０）は、Ｘ（４）より２倍可能性が高い。
【０２５７】
一般的な場合について、Ｍ個のシンボル値のＮ個の状態から出発すると、シンボル値のいくつか（集合Ｒ）に関する状態の個数は、集合ＲのＮ個の条件付き分布をＰ個の分布にクラスタ化することによって減らすことができ、ここで、Ｐ＜Ｎである。次に、この手順を、Ｍ個のシンボル値のある他の部分集合について繰り返すことができる。この手順を、集合ＲのＰ個のクラスタ化された分布に対して再帰的に繰り返すこともでき、ここで、集合Ｒは、Ｐ個の状態と共に｜Ｒ｜個のシンボル値を有する（｜Ｒ｜は、集合Ｒの濃度すなわち要素数を表す）。これは、Ｍ個のシンボル値のＮ個の状態（または分布、あるいはクラスタ）に制約を課す。これらの制約は、Ｍ個のシンボル値のＮ個の状態が固定された後に適用することができ、あるいは、より多くの最適性のために、トレーニングフェーズ自体の間に適用することができる。トレーニングは、Ｍ個のシンボル値の多数の分布から出発し、条件付き分布に対する余分の制約を満足するＮ個のクラスタ化された分布をもたらす。
【０２５８】
２．例のＶＬＣテーブル
異なる状態のシンボル値の近似分布は、ハフマンコーディングおよびデコーディングならびに他の可変長コーディングおよびデコーディングを含む、様々なタイプの適応エントロピコーディングおよび適応エントロピデコーディングに使用することができる。
【０２５９】
ハフマンコードテーブルは、ツリーとみなすことができ、このツリーの各葉は、１つのシンボル値に対応する。このツリーの左の枝は、１つのバイナリ値（例えば０）との関連を有し、このツリーの右の枝は、反対のバイナリ値（例えば１）との関連を有する。図２３に示されたツリーは、表７に示された近似分布に対応する。
【０２６０】
図２３では、めいめいのツリーの破線部分は、集合Ｒに含まれるシンボル値に関し、ツリーの他の部分は、集合Ｑに含まれるシンボル値に関する。表７に示された近似分布では、集合Ｒに含まれるシンボルの条件付き分布は、状態にかかわりなく同一であり、したがって、図２３のツリーのそれぞれは、集合Ｒに含まれるシンボル値について共通の同一の枝を有することができる。共通の同一の枝の配置は、一般に、その共通の枝で表されるシンボル値の確率の集団がそのツリーの他のシンボル値の確率にどのように匹敵するかに応じて、ツリー内の任意の位置に置くことができる。したがって、共通の枝が、ツリーによってより上位またはより下位になる可能性がある。
【０２６１】
図２３の任意の所与のツリー／状態に関して、集合Ｒに含まれるすべてのシンボル値のＶＬＣは、そのツリーの枝の配置によって示されるものと同一のプレフィックスを有する。さらに、図２３での状態とかかわりなく、集合Ｒに含まれる各シンボル値は、共通の同一の枝によって示されるものと同一のサフィックスを有する。図２３のツリーに関して、例のハフマンコードは、次の通りである。
【０２６２】
【表８】
2009501943.tif 000012
【０２６３】
同一のテーブルを、状態Ｓ（０）およびＳ（１）に使用することができる。状態Ｓ（０）およびＳ（１）では、集合Ｒに含まれるシンボル値の共通のプレフィックス（下線付きで示す）は、集合Ｒに含まれるシンボル値にかかわりなく「１１」である。状態Ｓ（２）では、集合Ｒに含まれるシンボル値の共通のプレフィックス（下線付きで示す）は、「１０」である。状態Ｓ（０）、Ｓ（１）、およびＳ（２）では、めいめいのシンボル値の共通のサフィックス（太字で示す）は、同一である（Ｘ（０）のサフィックスは、「０」であり、Ｘ（１）のサフィックスは、「１０」であり、Ｘ（２）のサフィックスは、「１１」である）。
【０２６４】
この場合に、近似分布のハフマンコードは、集合Ｒに含まれるシンボル値の２ステージコーディング／デコーディングを容易にし、これと共に実施することができる。表８に示されたコードを、表９および１０に示されているようにさらに分割することができる。
【０２６５】
【表９】
2009501943.tif 000013
【０２６６】
【表１０】
2009501943.tif 000014
【０２６７】
集合Ｒに含まれる値を有するシンボルについて、エンコーダは、まず、集合Ｒに含まれるシンボル値のすべてを表すエスケープコードをコーディングする。これは、特定の状態に関する集合Ｑに含まれるシンボル値の第１コードテーブルから、すべての状態にまたがる集合Ｒに含まれるシンボル値の第２コードテーブルへの切替をシグナリングする。次に、エンコーダは、第２コードテーブルから適当なコードをコーディングする。
【０２６８】
ハフマンコードテーブルのより複雑な階層編成では、ハフマンコードテーブルに、複数の共通の枝を含めることができ、各共通の枝は、シンボル値の異なる部分集合の単一の条件付き分布に対応する。２ステージ実施態様では、第１ステージハフマンコードテーブルに、複数の共通の枝のそれぞれについて１つの、複数のエスケープコードを含めることができる。
【０２６９】
より一般的には、ハフマンコードテーブルを、任意の階層に編成することができ、エスケープコード（およびおそらくは他の選択情報）が、別のハフマンコードテーブルまたはハフマンコードテーブルの別のセットに切り替えるのに使用される。
【０２７０】
特定のテーブル内では、エスケープコードを、ある種のシンボル値について固定長コーディング／デコーディング方式に切り替える（別のテーブルに切り替えるのではなく）のに使用することもできる。
【０２７１】
代替案では、ハフマンコードのルールに従わない、他のタイプのＶＬＣテーブルが構成される。例えば、単一のＶＬＣテーブルが、状態のグループのすべてに関して集合Ｒに含まれるシンボル値にＶＬＣを関連付け、複数のＶＬＤテーブル（グループの状態ごとに１つのテーブル）が、集合Ｑに含まれるシンボル値にＶＬＣを関連付ける。
【０２７２】
さらに、前の例では、固定された事前にトレーニングされるコードテーブルを示したが、代替案では、コードテーブルが、処理されたシンボル値に依存してそのコードを動的に変更する。そのような動的に変化するテーブルについて、エンコーダおよびデコーダは、それでも、一部のシンボル値について複数のコードテーブルを、他のシンボル値について単一のコードテーブルを選択的に使用することができる。
【０２７３】
一般に、Ｍ個のシンボル値のＮ個の状態がある場合に、Ｎ個のＶＬＣテーブルまたはハフマンコードを使用する場合にＮ個のツリーがある。Ｍ個のシンボル値のＬ個の互いに素な部分集合があり、Ｌ個の部分集合のそれぞれがｌ＝０，１，．．．，Ｌ−１のＰl個の状態を有し、すべてのｌについてＰl＜Ｎである場合に、Ｎ個のツリーのそれぞれは、Ｌ個の枝（ｂ0，ｂ1，．．．，ｂL-1とラベルを付ける）を有し、各枝ｂlは、その部分集合ｌに使用可能なＰl個の共通の枝のうちの１つから選択される。さらに、Ｌ個の部分集合のいずれかが、もう一度部分集合に再帰的に区分され、各部分集合がその親集合より少数の状態を有する場合に、同一のことを、Ｐl個の枝からの枝に関して言うことができる。
【０２７４】
３．算術コーディング／デコーディングの例の分布
他のエンコーダ／デコーダでは、近似分布が、算術コーディング／デコーディングに使用される。算術コーディングは、一般に、シンボルの系列を所与の範囲内の単一の数として表すことを用いる。通常、この数は、０と１との間の分数である。シンボルは、それを範囲の一部に置くことによってコーディングされ、この範囲は、シンボル値の確率分布に依存して区分される。
【０２７５】
算術コーディングおよび算術デコーディングでの使用に関して、表７に示された近似分布を、表６および表１１に分割することができる。Ｘ（０）、Ｘ（２）、およびＸ（４）に関する表１１の切替値は、表１１に示された状態／分布のうちの１つから表６に示された状態／分布への変化を示す。
【０２７６】
【表１１】
2009501943.tif 000015
【０２７７】
前の例では、固定された事前にトレーニングされる分布を示したが、代替案では、分布が、処理されたシンボル値に依存して動的に変化する。そのような動的に変化する分布について、エンコーダおよびデコーダは、それでも、一部のシンボル値について複数の分布を、他のシンボル値について単一の分布を選択的に使用することができる。
【０２７８】
４．エントロピモデルを決定するための例のトレーニング
エンコーダおよびデコーダが、シンボルについて複数のエントロピモデルを選択的に使用する時に、エントロピモデルは、最終的に、シンボルの確率分布情報に依存する。いくつかの実施態様で、エンコーダまたは等的分析ソフトウェアなどのツールは、次の手法を使用して、エントロピモデルの状態および確率分布を判定する。
【０２７９】
図２４に、確率分布を複数エントロピモデルコーディング／デコーディング方式の状態にクラスタ化する２ステージ技法（２４００）を示す。この技法（２４００）は、シンボル値の確率分布をトレーニングベクトルとして扱い、トレーニングベクトルは、ベクトル量子化方式に使用されるクラスタ化手法に似て、クラスタにグループ化される。
【０２８０】
まず、ツールは、トレーニングベクトルの実際の確率分布を入手する（２４１０）。トレーニングベクトルは、代表的なソースのトレーニングセットからのものである。オーディオコーディング／デコーディングについて、例えば、サブフレーム内のシンボル値の確率分布が、１つのトレーニングベクトルになる。一般的なオーディオコーディング／デコーディングについて、トレーニングセットは、確率分布が異なるオーディオソースの複数のサブフレームについて入手されるように、複数のオーディオソースを含む。トレーニングベクトルは、様々なビットレートおよび／または品質セッティングでのトレーニングから入手することができる。
【０２８１】
ツールは、次に、第１コストメトリックを使用してトレーニングベクトルをクラスタ化する（２４２０）。例えば、第１コストメトリックは、平均２乗誤差（「ＭＳＥ」）である。クラスタ化自体は、図２５に関して説明するｇｅｎｅｒａｌｉｚｅｄ  Ｌｌｏｙｄ  ａｌｇｏｒｉｔｈｍ（「ＧＬＡ」）の変形を使用することができ、あるいは、ある他の機構を使用することができる。基本的に、ＧＬＡ変形形態では、ツールは、所与のデコーダの最適エンコーダを見つけることと所与のエンコーダの最適デコーダを見つけることとの間で反復することによって、トレーニングベクトルを所与の個数のクラスタに反復的にクラスタ化する。ある回数の反復の後に、ツールは、第１コストメトリックが最小化されるクラスタの組を見つける。
【０２８２】
次に、ツールは、第２コストメトリックを使用してクラスタを洗練する（２４３０）。例えば、第２コストメトリックは、相対エントロピメトリックである。Ｉｔａｋｕｒａ−Ｓａｉｔｏ  ｄｉｓｔａｎｃｅが、２つの確率分布の間の相対エントロピを測定する１つの形である。洗練（２４３０）では、クラスタ化ロジックの諸部分を、第１コストメトリックと共に使用されるクラスタ化ロジックの諸部分と同一のまたは異なるものとすることができる。
【０２８３】
したがって、図２４によれば、ツールは、２ステージトレーニングプロセスを使用する。第１ステージでは、ツールは、第１コストメトリック（例えば、ＭＳＥ）を使用して、分布に関する近似確率質量関数（「ＰＭＦ」）クラスタを得る。第２ステージでは、ツールは、ＰＭＦクラスタをさらに洗練するために、第２コストメトリック（例えば、Ｉｔａｋｕｒａ−Ｓａｉｔｏ  ｄｉｓｔａｎｃｅ）を使用する。ＭＳＥは、計算が比較的単純であるが、エントロピならびにコーディング／デコーディング目的の相対エントロピメトリックをモデリングしない。その一方で、相対エントロピは、クラスタを洗練するのに効果的なメトリックであるが、これが使用される唯一のメトリックである場合に、非最適クラスタ化をもたらす可能性がある。多くの場合に、２ステージトレーニングは、複雑さに関してより高速である（相対エントロピは計算するのがより複雑なので）だけではなく、コーディング／デコーディング応用に関してよりよいクラスタをももたらす。
【０２８４】
代替案では、ツールは、別の手法を使用して、状態および確率分布を判定する。例えば、ツールは、第１コストメトリックまたは第２コストメトリックにＭＳＥまたは相対エントロピ以外のメトリックを使用する。あるいは、ツールは、単一ステージプロセスで単一のコストメトリックを使用する。
【０２８５】
図２５に、ＧＬＡの変形に従ってトレーニングベクトルをクラスタ化する技法（２５００）を示す。図２４と同様に、この技法（２５００）は、シンボル値の確率分布をトレーニングベクトルとして扱い、トレーニングベクトルは、クラスタにグループ化される。
【０２８６】
まず、ツールは、トレーニングベクトルから単一のクラスタを計算する（２５１０）。一般的なオーディオコーディング／デコーディングについて、例えば、トレーニングベクトルは、異なるビットレートおよび／または品質セッティングでエンコードされたオーディオファイルなどの異なるオーディオソースからのサブフレームの確率分布である。入手されるトレーニングベクトルの個数は、実施態様に依存する。一実施態様では、ツールは、計算される最終的なクラスタより約１００倍多いトレーニングベクトルを入手する。単一のクラスタは、トレーニングベクトルの平均をとることによって計算されるトレーニングベクトルの重心、またはトレーニングベクトルのある他の組合せである。
【０２８７】
ツールは、次に、単一のクラスタを複数のクラスタに分割する（２５２０）。例えば、ツールは、主成分分析を使用して、単一のクラスタを２つのクラスタに分割し、一方のクラスタは、オリジナルのクラスタであり、他方のクラスタは、オリジナルのクラスタに、主成分の実施態様依存の定数倍を加えたものである（例えば、他方のクラスタは、主成分の方向に沿ったあるオフセットのところにあるクラスタである）。代替案では、ツールは、ある他の分析を使用して、クラスタを複数のクラスタに分割する。
【０２８８】
ツールは、あるコストメトリックに従って、複数の現在のクラスタの間でトレーニングベクトルを分類する（２５３０）。例えば、このコストメトリックは、ＭＳＥ、相対エントロピ、またはある他のメトリックである。クラスタに対するトレーニングベクトルのＭＳＥは、トレーニングベクトルの確率分布点とクラスタの対応する点との間のユークリッド距離を示す。トレーニングベクトルとクラスタとの間の相対エントロピは、次のようにトレーニングベクトルとクラスタとの間の差を与えることができる。
【０２８９】
【数３】
2009501943.tif 000016
【０２９０】
ここで、ｋは、トレーニングベクトル内およびクラスタ内の点を示す。より形式的でなく言えば、相対エントロピは、トレーニングベクトルとクラスタとの間の不一致に起因するビットレートペナルティを示す。ツールは、トレーニングベクトルが最低のＭＳＥ、最低の相対エントロピなどを有するクラスタに関してトレーニングベクトルを分類する。
【０２９１】
ツールは、分類されたトレーニングベクトルから現在のクラスタを再計算する（２５４０）。例えば、現在のクラスタごとに、ツールは、そのクラスタに分類されたトレーニングベクトルの重心を計算する。代替案では、ツールは、そのクラスタに分類されたトレーニングベクトルのある他の組合せとして、各現在のクラスタを再計算する。
【０２９２】
ツールは、クラスタが安定したかどうかを判定する（２５４５）。例えば、ツールは、再計算（２５４０）の前後のクラスタの変化が、ある判断基準を満足するかどうかをチェックする。１つの判断基準は、クラスタが、再計算（２５４０）においてある閾量を超えてシフトしないことであり、ここで、閾量は、実施態様に依存する。代替案では、ツールは、他のおよび／または追加の判断基準を考慮する。クラスタが安定していない場合には、ツールは、コストメトリックに従って、複数の現在のクラスタ（再計算（２５４０）された）の間でトレーニングベクトルを分類する（２５３０）。
【０２９３】
現在のクラスタが安定した時に、ツールは、十分なクラスタがあるかどうかを判定する（２５５０）。一般に、クラスタの所望の個数は、メモリ使用量とエンコーディング性能とをトレードオフするためにセットすることができる。より多くのクラスタを有することは、分布、ＶＣＬテーブルなどの格納に関するメモリ使用量の増加を犠牲にして、エントロピモデルでのより多くの状態および適応性につながる。順方向適応が使用される時には、より多くのクラスタを有することは、より多くのサイド情報がシグナリングされる（例えば、分布、テーブルなどを示すために）ことをも意味する。より少ないクラスタを有することは、対照的に、トレーニングベクトルと最終的なクラスタとの間の不一致を増やす傾向があり、これは、通常、エンコーディング中のエントロピモデルとシンボル値の実際の分布との間の不一致の増加を示す。
【０２９４】
クラスタの所望の個数に達していない場合には、ツールは、現在のクラスタの一部またはすべてを分割する（２５６０）。例えば、ツールは、主成分分析またはある他の分析を使用して、１つのクラスタを２つのクラスタに分割する。ツールが、Ｇ個の最終的なクラスタを求め、現在はＦ個の現在のクラスタを有し、Ｆ＜Ｇであると仮定する。Ｆ個の現在のクラスタのそれぞれを分割することが、多すぎるクラスタをもたらす場合には、ツールは、Ｇ−Ｆ個の最上位の現在のクラスタ（例えば、何個のトレーニングベクトルが現在のクラスタに分類されるかに関する「最上位」）を２つのクラスタに分割することができる。あるいは、ツールは、各反復で最上位クラスタを単純に分割するか、分割に関するある他のルールを使用することができる。次に、ツールは、コストメトリックに従って、現在のクラスタ（分割（２５６０）された）の間でトレーニングベクトルを分類する（２５３０）。
【０２９５】
現在のクラスタが安定し、所望の個数のクラスタに達した時に、この技法（２５００）は終了する。分類（２５３０）、再計算（２５４０）、および分割（２５６０）は、本質的に、ＧＬＡ変形の反復を構成し、その反復の間に、コストメトリックが減る。
【０２９６】
図２５の技法（２５００）を、次のように図２４の技法（２４００）に組み込むことができる。ツールは、クラスタの所望の個数に達するまで、コストメトリックとしてＭＳＥを使用して図２５の技法（２５００）を実行する。クラスタの所望の個数に達した時点で、ツールは、クラスタが安定し／ある閾量を超えてシフトしなくなるまで、コストメトリックとして相対エントロピを使用して、分類（２５３０）、再計算（２５４０）、および安定性のチェック（２５４５）を反復して実行する。
【０２９７】
技法（２４００、２５００）を使用して、実際の分布を近似するがある種のシンボル値に関して同一の条件付き分布を有する確率分布を伴う最終クラスタを作ることができる。セクションＶ．Ａ．１の分析フレームワークに関して、技法（２４００、２５００）を使用して、分類動作およびクラスタ化動作で集合Ｒに含まれるシンボル値の条件付き分布がクラスタ／状態のすべてについて同一である（Ｐ’S(j),X(i),Rがすべての状態Ｓ（ｊ）について同一である）という制約を追加することによって、表７に示されたものなどの近似確率分布を作ることができる。本質的に、集合Ｒに含まれるシンボル値に対応するクラスタの次元は、式（１）および（２）に示されているように制約される。分析では、所与の状態である確率ＰS(j)は、その状態に関するクラスタに分類されるトレーニングベクトルの個数によって示される。もう１つの制約は、クラスタのそれぞれの次元の合計が１になることである。
【０２９８】
図２５を参照すると、現在のクラスタを再計算（２５４０）した後に、１つまたは複数の条件付き分布制約を課すことができる。一般に、Ｍ個のシンボル値のＮ個の状態があり、Ｍ個のシンボル値のＬ個の部分集合があり、Ｌ個の部分集合のそれぞれが、ｌ＝０，１，．．．，Ｌ−１についてＰl＜ＮであるＰl個の状態およびＥl個の要素を有すると仮定する。Ｌ個の部分集合のうちの所与の１つに含まれるシンボル値のすべてを、共通の（エスケープ／切替）シンボル値にグループ化することができる。Ｌ個のそのようなエスケープ／切替シンボル値がある。次に、トレーニングは、Ｍ−（Ｅ0＋Ｅ1＋．．．＋ＥL-1）＋Ｌ個のシンボル値についてＮ個のクラスタ（または分布）を見つけるために進行する（Ｌ個の部分集合のＥl個の要素を引き、エスケープ／切替シンボル値のＬ個の要素を追加する）。次に、Ｍ個のシンボル値のＬ個の部分集合のそれぞれについて、条件付き分布を、その部分集合内で計算する。トレーニングは、これらの部分集合のそれぞれについて、ｌ＝０，１，．．．，Ｌ−１のＰl個のクラスタを見つけるために、Ｌ個の部分集合のそれぞれに対して繰り返される。これに関するトレーニングベクトルは、それぞれＬ個の部分集合内の条件付き分布になる。Ｌ個の部分集合のいずれかが、さらに副分割される場合には、この手順を、その副分割された部分集合ｌについて再帰的に繰り返すことができる。というのは、今や、Ｅl個のシンボル値のＰl個の状態があるからである。
【０２９９】
どのシンボル値が集合ＱおよびＲに含まれるかの指定に関して、当初に、これは、単一の開始クラスタの確率分布に基づく。その後、集合ＱおよびＲの成分は、めいめいの状態である確率（めいめいのクラスタ内のトレーニングベクトルの比率）およびクラスタの確率分布に依存する。
【０３００】
５．代替案
前の例の多くは、いくつかのシンボル値に複数の分布／テーブルを使用することおよび他のシンボル値に単一の分布／テーブルを使用することを用いる。この構成は、通常、エントロピコーディング性能を大きく損なわずにメモリ使用量を減らすが、セクションＶで説明した技法およびツールは、より一般的に階層編成されたエントロピモデルに適用可能である。エンコーダまたはデコーダは、いくつかのシンボル値についてより多くの適応性、他のシンボルについてより少ない適応性を可能にする、階層編成内の異なるエントロピモデルの間で選択的に選択することができる。
【０３０１】
階層編成されたエントロピモデルは、１つの切替あたり複数のエントロピモデルを参照することができる（例えば、可能性のより低いシンボル値用の単一のエントロピモデルに切り替えるだけではなく）。例えば、あるレベルのハフマンコードテーブルのセットは、１つのハフマンコードテーブルまたは複数のハフマンコードテーブルを含む。トレーニングを、複数のフェーズで行うことができる。第１トレーニングフェーズでは、シンボル値は、集合Ｑまたは集合Ｒに含まれるものとして指定され、集合Ｒに含まれるシンボル値の条件付き分布は、すべての状態について同一である。次に、集合Ｒに含まれるシンボル値の後続トレーニングフェーズで、集合Ｒに含まれるシンボル値の条件付き分布に対するより以前の制約が、取り払われ、集合Ｒに含まれるシンボル値の確率分布が、異なるエントロピモデルの複数のクラスタ／状態に分類される。
【０３０２】
エントロピモデルのセットの各メンバには、別のレベルのエントロピモデルの異なるセットへの切替点を含めることができる。例えば、順方向適応について、ハフマンコードテーブルの第１セットの各テーブルは、２つのエスケープコードすなわち、１つまたは複数のハフマンコードテーブルの第２セットへの第１エスケープコードおよび１つまたは複数のハフマンコードテーブルの第３セットへの第２エスケープコードを含む。トレーニングに関して、シンボル値を、エントロピモデルの第１セットについて集合Ｑに含まれ、エントロピモデルの第２セットについて集合Ｒに含まれ、エントロピモデルの第３セットについて集合Ｓに含まれるものとして指定することができる。集合Ｒに含まれるシンボル値の条件付き分布（ＱおよびＳに含まれるシンボル値を無視した）は、すべての状態について同一であり、集合Ｓに含まれるシンボル値の条件付き分布（ＱおよびＲに含まれるシンボル値を無視した）は、すべての状態について同一である。
【０３０３】
追加の広さのほかに、階層編成されたエントロピモデルに、３つ、４つ、またはそれより多数のレベルのエントロピモデルを含めることができる。例えば、順方向適応に関して、ハフマンコードテーブルの第１セットの各テーブルは、ハフマンコードテーブルの第２セットへのエスケープコードを含み、ハフマンコードテーブルの第２セットの各テーブルは、ハフマンコードテーブルの第３セットへのエスケープコードを含む。トレーニングは、複数のフェーズで行うことができる。第１フェーズでは、シンボル値は、エントロピモデルの第１セットについて集合Ｑに含まれ、あるいはエントロピモデルの他のセットについて集合Ｒに含まれるものとして指定される。集合Ｒに含まれるシンボル値の条件付き確率（Ｑに含まれるシンボル値を無視した）は、すべての状態について同一である。次に、集合Ｒに含まれるシンボル値の追加のトレーニングフェーズで、条件付き分布に対するこの制約が、取り払われ、集合Ｒからのシンボル値が、エントロピモデルの第２セットについて集合Ｓに含まれ、あるいはエントロピモデルのすべての他のセットについて集合Ｔに含まれるものとして指定される。このフェーズでは、集合Ｔに含まれるシンボル値の条件付き確率（Ｓに含まれるシンボル値を無視した）は、すべての状態について同一である。
【０３０４】
可変長（例えばハフマン）コーディングおよびデコーディングならびに算術コーディングおよびデコーディングのほかに、他のタイプのエントロピコーディングおよびデコーディングに、エントロピモデルの選択的使用を組み込むことができる。例えば、ｖａｒｉａｂｌｅ  ｔｏ  ｖａｒｉａｂｌｅエンコーディングおよびデコーディングに、階層編成のＶＬＣテーブルを組み込むことができる。
【０３０５】
Ｃ．エンコーディングの例の技法
図２６に、複数のエントロピモデルの選択的使用を用いてシンボルをエンコードする技法（２６００）を示す。図２、４、または６に示されたエンコーダなどのエンコーダが、この技法（２６００）を実行する。
【０３０６】
ｗａｖｅｆｏｒｍ  ａｕｄｉｏエンコーダでは、シンボルは、通常、量子化されたスペクトル係数に関する。量子化されたスペクトル係数を、前処理することができる（例えば、係数予測または係数並べ換えによって）。シンボルのそれぞれは、量子化されたスペクトル係数を表すことができる。あるいは、シンボルのそれぞれは、量子化されたスペクトル係数のグループを表すことができる。ベクトルハフマンコーディングについて、シンボルは、例えば、４つの量子化されたスペクトル係数のグループを表す。ランレベルコーディングについて、シンボルは、例えば、ランレベルペアを表す。
【０３０７】
シンボルの系列について、エンコーダは、エントロピモデルの第１セットからエントロピモデルを選択する（２６１０）。例えば、エンコーダは、ベクトルハフマンコーディングまたはランレベルコーディングについて、複数の使用可能なハフマンコードテーブルの中から１つのハフマンコードテーブルを選択する。代替案では、エンコーダは、別のエントロピエンコーディング方式で使用されるエントロピモデルを選択する。いくつかの実施態様では、エンコーダは、コンテキスト情報に依存してエントロピモデルを選択する。他の実施態様では、エンコーダは、様々なエントロピモデルを使用してエンコーディングの性能を評価した後に、エントロピモデルを選択する。トレリス構造を使用するハフマンコードテーブルに関する選択プロセスの１つの例を、下で説明する。代替案では、エンコーダは、別の機構を使用してエントロピモデルを選択する。
【０３０８】
図２６に戻って、エンコーダは、オプションで、選択されたエントロピモデルを示す情報をシグナリングする（２６２０）。順方向適応について、エンコーダは、選択されたエントロピモデルを示す情報を明示的にシグナリングする。１つの順方向適応機能を、ハフマンコードテーブル切替に関して下で詳細に説明する。代替案では、エンコーダは、別のシグナリング機構を使用する。逆方向適応について、エントロピモデルの選択は、デコーダで使用可能なコンテキストから推論される。
【０３０９】
次に、エンコーダは、選択されたエントロピモデルを使用して、シンボルの系列をエントロピエンコードする（２６３０）。エントロピモデルのどの切替点でも、エンコーダは、１つまたは複数のエントロピモデルの別のセットに切り替えることができる。例えば、エンコーダは、第１ハフマンコードテーブル内のエスケープコードを使用して第２ハフマンコードテーブルへの切替をシグナリングし、次に、エンコーダは、第２ハフマンコードテーブルを使用してシンボルをエンコードする。
【０３１０】
次に、エンコーダは、エントロピコーディングされたシンボルをシグナリングする（２６４０）。切替が１つでも発生した場合には、エンコーダは、エスケープコードまたはモデルセット内の選択に関する他のモデル切替情報などの切替情報をもシグナリングする。
【０３１１】
エンコーダは、次の系列に継続するかどうかを判定し（２６５０）、そうである場合には、次の系列のシンボルのエントロピモデルを選択する（２６１０）。例えば、１実施態様で量子化されたスペクトル係数をハフマンコーディングテーブルを使用してエンコードする時に、エンコーダは、バーク境界（ｂａｒｋ  ｂｏｕｎｄａｒｙ）でコードテーブルを変更することを許可される。言い換えると、周波数スペクトルを区分するバーク境界は、第１コードテーブルセットから選択されたハフマンコードテーブルを変更する可能な変更位置として働く。エンコードされている現在のシンボルの係数が、バーク境界を超えて延びる（例えば、そのシンボルがその境界をまたぐ係数のベクトルまたは係数のランレベルペアを表すので）場合に、現在のシンボルの係数の終りが、有効な変更位置になる。代替案では、エンコーダは、他の変更位置で第１モデルセットからのエントロピモデルの選択を変更し、選択されたエントロピモデルに従ってエンコードされたシンボルの系列は、ある他の持続時間を有する。
【０３１２】
上で注記したように、一実施態様で、エンコーダは、異なるテーブルの評価にトレリス構造を使用してハフマンコードテーブルを選択する。エンコーダは、可能なテーブルのすべてを用いて、２つの有効なテーブル変更位置（バーク境界である）の間でシンボルのすべてをエンコードする。エンコーダは、シンボルをエンコードするために、テーブルあたりの使用されたビット数を追跡する。エンコーダは、テーブルが変更される場合にシグナリングされるビットを考慮に入れて、最良の可能なエンコーディングを見つけるためにトレリスを構成する。
【０３１３】
ｂt,iが、テーブル変更位置ｔまでエンコードする時に使用される最小ビット数であり、テーブルｉが、使用された最後のテーブルであると仮定する。ビットカウントｒt,iは、変更位置ｔと変更位置ｔ＋１との間でテーブルｉを使用してシンボルをエンコードするのに必要なビット数である。ビットカウントｓt,i,kは、変更位置ｋでテーブルｉからテーブルｋへのテーブル変更をエンコードするのに必要なビット数である。言い換えると、変更位置ｔで使用された最後のテーブルが、テーブルｉであり、テーブルｋが、今や、変更位置ｔ＋１までエンコードするのに使用される。テーブルｎt,iは、変更位置ｔでの現在のテーブルがテーブルｉである最適エンコーディングを得るために、変更位置ｔ−１で使用されたテーブルである。すると、
【０３１４】
【数４】
2009501943.tif 000017
【０３１５】
である。
【０３１６】
エンコーダは、ｂtmax,iを最小にするｉを見つけることによって、サブフレーム全体またはシーケンスの他の部分の最適エンコードを判定し、ここで、ｔｍａｘは、ｔの最大値である。エンコーダは、ｎの値を調べることによって最適経路をトレースすることによって最適テーブルを見つける。テーブル変更をコーディングするのに必要なビット数は、本質的にｌｏｇ2（テーブル数）＋ｌｏｇ2（残っているバークの個数）＋１である。テーブルが変更される時に、エンコーダは、これが使用される最後のテーブルであるかどうかを示すために１ビットをシグナリングし、これが使用される最後のテーブルではない場合には、エンコーダは、そのテーブルが何個のバークバンドに適用されるかをエンコードするためにｌｏｇ2（残っているバークの個数）をシグナリングする。
【０３１７】
Ｄ．デコーディングの例の技法
図２７に、複数のエントロピモデルの選択的使用を用いてシンボルをデコードする技法（２７００）を示す。図３、５、または７に示されたデコーダなどのデコーダが、この技法（２７００）を実行する。
【０３１８】
ｗａｖｅｆｏｒｍ  ａｕｄｉｏデコーダでは、シンボルは、通常、量子化されたスペクトル係数に関する。量子化されたスペクトル係数がエンコード中に前処理されている（例えば、係数予測または係数並べ換えによって）場合に、係数は、後処理され（例えば、係数予測または係数並べ換えによって）、その後、エントロピデコードされる。シンボルのそれぞれは、量子化されたスペクトル係数を表すことができる。あるいは、シンボルのそれぞれは、量子化されたスペクトル係数のグループを表すことができる。ベクトルハフマンコーディングについて、シンボルは、例えば、４つの量子化されたスペクトル係数のグループを表す。ランレベルコーディングについて、シンボルは、例えば、ランレベルペアを表す。
【０３１９】
シンボルの系列について、デコーダは、オプションで、選択されたエントロピモデルを示す情報を解析する（２７１０）。順方向適応について、例えば、デコーダは、エンコーダ側のシグナリングの鏡像である機構を使用して、選択されたエントロピモデルを示す情報を解析する。
【０３２０】
デコーダは、エントロピモデルの第１セットからエントロピモデルを選択する（２７２０）。例えば、デコーダは、ベクトルハフマンデコーディングまたはランレベルデコーディングについて、複数の使用可能なハフマンコードテーブルの中から１つのハフマンコードテーブルを選択する。代替案では、デコーダは、別のエントロピデコーディング方式で使用されるエントロピモデルを選択する。いくつかの実施態様では、デコーダは、逆方向適応に関してコンテキスト情報に依存してエントロピモデルを選択する。他の実施態様では、デコーダは、エンコーダによってシグナリングされ、ビットストリームから解析された（２７１０）情報に基づいてエントロピモデルを選択する。
【０３２１】
次に、デコーダは、選択されたエントロピモデルを使用して、シンボルの系列をエントロピデコードする（２７３０）。エントロピモデルのどの切替点でも、デコーダは、１つまたは複数のエントロピモデルの別のセットに切り替えることができる。例えば、デコーダは、第２ハフマンコードテーブルへの切替を示す、第１ハフマンコードテーブルのエスケープを受け取り、次に、デコーダは、第２ハフマンコードテーブルを使用してシンボルをデコードする。
【０３２２】
次に、エンコーダは、エントロピデコードされたシンボルに関する情報、例えば、後続処理の準備ができている量子化されたスペクトル係数を出力する（２７４０）。
【０３２３】
デコーダは、次の系列に継続するかどうかを判定し（２７５０）、そうである場合には、次の系列のシンボルのエントロピモデルを選択する（２７１０）。例えば、１実施態様で量子化されたスペクトル係数をハフマンコーディングテーブルを使用してデコードする時に、デコーダは、バーク境界でコードテーブルを変更することを許可される。デコードされている現在のシンボルの係数が、バーク境界を超えて延びる（例えば、そのシンボルがその境界をまたぐ係数のベクトルまたは係数のランレベルペアを表すので）場合に、現在のシンボルの係数の終りが、有効な変更位置になる。代替案では、デコーダは、他の変更位置で第１モデルセットからのエントロピモデルの選択を変更し、選択されたエントロピモデルに従ってデコードされたシンボルの系列は、ある他の持続時間を有する。
【０３２４】
Ｅ．結果
可能性のより低いシンボル値について近似された分布を使用するコーディングは、エンコーダおよびデコーダ内で分布またはコードテーブルに必要なメモリの節約を可能にする。セクションＶ．Ａ．１の分析フレームワークに関して、エンコーダおよびデコーダは、ＰS(j),X(q)の分布および／またはコードテーブルを格納する。すなわち、エンコーダおよびデコーダは、集合Ｑに含まれるシンボル値Ｘ（ｉ）の状態Ｓ（ｊ）ごとに１つの分布および／またはテーブルを格納する。集合Ｒに含まれるシンボル値Ｘ（ｉ）について、エンコーダおよびデコーダは、単一の分布Ｐ’S(j),X(i),Rの分布および／またはテーブルを格納する。
【０３２５】
テーブルが、状態ごとにＢバイトまでのメモリを占め、１６個の状態があると仮定する。すると、通常のフルテーブルの場合に、エンコーダおよびデコーダは、それぞれ、１６個のテーブルのために１６＊Ｂバイトのメモリを必要とするはずである。しかし、シンボル値のうちの１０％だけが、可能性がより高い（集合Ｑに含まれる）ものとして指定される場合に、必要なメモリの単純な近似は、（１６＊Ｂ＊．１）＋（Ｂ＊．９）＝２．５＊Ｂである。したがって、必要なメモリは、フルテーブルの場合と比較して、エントロピコーディング利益のわずかな低下だけを伴って、６倍を超えて減らされている。
【０３２６】
開示された発明の原理を適用できる多数の可能な実施形態に鑑みて、示された実施形態が、本発明の好ましい例にすぎず、本発明の制限を限定するものと解釈されてはならないことを了解されたい。そうではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。したがって、我々は、この特許請求の範囲の範囲および趣旨に含まれるすべてのものを、本発明として請求する。
【図面の簡単な説明】
【０３２７】
【図１】様々な説明される実施形態をそれと共に実施できる一般化されたオペレーティング環境を示すブロック図である。
【図２】様々な説明される実施形態をそれと共に実施できる一般化されたエンコーダを示すブロック図である。
【図３】様々な説明される実施形態をそれと共に実施できる一般化されたデコーダを示すブロック図である。
【図４】様々な説明される実施形態をそれと共に実施できる一般化されたエンコーダを示すブロック図である。
【図５】様々な説明される実施形態をそれと共に実施できる一般化されたデコーダを示すブロック図である。
【図６】様々な説明される実施形態をそれと共に実施できる一般化されたエンコーダを示すブロック図である。
【図７】様々な説明される実施形態をそれと共に実施できる一般化されたデコーダを示すブロック図である。
【図８ａ】マルチチャネルオーディオ信号を示すチャートである。
【図８ｂ】図８ａのマルチチャネルオーディオ信号に対応するウィンドウ構成を示すチャートである。
【図９】時間ノイズ成形を用いるエンコーダを示すブロック図である。
【図１０】時間ノイズ成形を用いるデコーダを示すブロック図である。
【図１１】ビットレート削減のために係数予測を用いるエンコーダを示すブロック図である。
【図１２】ビットレート削減のために係数予測を用いるデコーダを示すブロック図である。
【図１３】量子化されたスペクトル係数のコーディングでの係数予測の技法を示す流れ図である。
【図１４】量子化されたスペクトル係数のデコーディングでの係数予測の技法を示す流れ図である。
【図１５ａ】時間領域の周期的オーディオ信号を示すチャートである。
【図１５ｂ】図１５ａの時間領域の周期的オーディオ信号に対応するスペクトル係数を示すチャートである。
【図１６】係数並べ換えを用いるエンコーダを示すブロック図である。
【図１７】係数並べ換えを用いるデコーダを示すブロック図である。
【図１８ａ】エントロピエンコーディングの前にスペクトル係数を並べ換える技法を示す流れ図である。
【図１８ｂ】エントロピエンコーディングの前にスペクトル係数を並べ換える技法を示す流れ図である。
【図１８ｃ】エントロピエンコーディングの前にスペクトル係数を並べ換える技法を示す流れ図である。
【図１９ａ】エントロピデコーディングの後にスペクトル係数を並べ換える技法を示す流れ図である。
【図１９ｂ】エントロピデコーディングの後にスペクトル係数を並べ換える技法を示す流れ図である。
【図１９ｃ】エントロピデコーディングの後にスペクトル係数を並べ換える技法を示す流れ図である。
【図２０】並べ換えの後の図１５ｂのスペクトル係数を示すチャートである。
【図２１】例のオーディオファイルのサブフレームごとの係数並べ換えに起因するコーディング利益を示すチャートである。
【図２２】階層的に編成されたエントロピモデルを示す図である。
【図２３】シンボル値の近似分布に関するハフマンコードを示すチャートである。
【図２４】確率分布に関してトレーニングベクトルをクラスタ化する技法を示す流れ図である。
【図２５】確率分布に関してトレーニングベクトルをクラスタ化する技法を示す流れ図である。
【図２６】複数のエントロピモデルの選択的使用を用いるエンコーディングの技法を示す流れ図である。
【図２７】複数のエントロピモデルの選択的使用を用いるデコーディングの技法を示す流れ図である。
【図１】
2009501943.tif 000018
【図２】
2009501943.tif 000019
【図３】
2009501943.tif 000020
【図４】
2009501943.tif 000021
【図５】
2009501943.tif 000022
【図６】
2009501943.tif 000023
【図７】
2009501943.tif 000024
【図８ａ】
2009501943.tif 000025
【図８ｂ】
2009501943.tif 000026
【図９】
2009501943.tif 000027
【図１０】
2009501943.tif 000028
【図１１】
2009501943.tif 000029
【図１２】
2009501943.tif 000030
【図１３】
2009501943.tif 000031
【図１４】
2009501943.tif 000032
【図１５ａ】
2009501943.tif 000033
【図１５ｂ】
2009501943.tif 000034
【図１６】
2009501943.tif 000035
【図１７】
2009501943.tif 000036
【図１８ａ】
2009501943.tif 000037
【図１８ｂ】
2009501943.tif 000038
【図１８ｃ】
2009501943.tif 000039
【図１９ａ】
2009501943.tif 000040
【図１９ｂ】
2009501943.tif 000041
【図１９ｃ】
2009501943.tif 000042
【図２０】
2009501943.tif 000043
【図２１】
2009501943.tif 000044
【図２２】
2009501943.tif 000045
【図２３】
2009501943.tif 000046
【図２４】
2009501943.tif 000047
【図２５】
2009501943.tif 000048
【図２６】
2009501943.tif 000049
【図２７】
2009501943.tif 000050
【国際調査報告】
2009501943.tif 000051