(57)【特許請求の範囲】
【請求項１】
符号化されたオーディオ情報（２１０；８１０）に基づいて、復号されたオーディオ情報（２１２；８１２）を供給するためのオーディオ復号器（２００；８００；２２００）であって、前記オーディオ復号器は、
スペクトル値の算術符号化された表現（２２２；８２１；２２２２）に基づいて、複数の復号されたスペクトル値（２３２；８２２；２２２４）を供給するための算術復号器（２３０；８２０；２２２０）と、
前記復号されたオーディオ情報（２１２；８１２；２２１２）を得るために、前記復号されたスペクトル値（２３２；８２２；２２２４）を使用して、時間領域オーディオ表現（２６２；８１２；２２１２）を供給するための周波数領域時間領域変換器（２６０；８３０；２２３０）を含み、
前記算術復号器（２３０；８２０；２２２０）は、現在のコンテキスト状態を示している数値的現在のコンテキスト値（ｓ）に依存して、シンボルコード（ｓｙｍｂｏｌ）へのコード値（ｖａｌｕｅ）のマッピングを示しているマッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するように構成されること、
前記算術復号器は、複数の前に復号されたスペクトル値（ａ）に依存して、前記数値的現在のコンテキスト値（ｓ）を決定するように構成されること、
前記算術復号器は、反復的区間サイズ削減（５４２；５４６）を使用して、少なくとも１つのテーブル（ａｒｉ＿ｓ＿ｈａｓｈ［３８７］；ａｒｉ＿ｇｓ＿ｈａｓｈ［２２５］）を評価して、テーブル区間の区間サイズは終了条件に達するまで反復して削減され、それによって、前記数値的現在のコンテキスト値（ｓ）が、前記テーブルのエントリ（ｊ、ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］、ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示されたテーブルコンテキスト値と同一であるか、または、前記テーブルのエントリによって示された区間内に位置するかを決定して、そして、それに基づいて、選択されたマッピングルール（ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［９］）を示しているマッピングルールインデックス値（ｐｋｉ）を得るように構成されることを特徴とする前記オーディオ復号器。
【請求項２】
前記算術復号器（２３０；８２０）は、
最初のテーブル区間の下の境界を示すために、下の区間境界変数（ｉ＿ｍｉｎ）を初期化し、
前記最初のテーブル区間の上の境界を示すために、上の区間境界変数（ｉ＿ｍａｘ）を初期化し、
テーブルエントリのテーブルインデックス（ｉ）が前記最初のテーブル区間の中心に配置される前記テーブルエントリ（ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）を評価して、前記数値的現在のコンテキスト値（ｓ）を前記評価されたテーブルエントリ（ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］、ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示されたテーブルコンテキスト値（ｊ＞＞８）と比較し、
更新されたテーブル区間を得るために、前記比較の結果に依存して、前記下の区間境界変数（ｉ＿ｍｉｎ）または前記上の区間境界変数（ｉ＿ｍａｘ）を適合し、そして、
テーブルコンテキスト値が前記数値的現在のコンテキスト値（ｓ）に等しくなるまで、または前記更新された区間境界変数（ｉ＿ｍｉｎ、ｉ＿ｍａｘ）によって定義された前記テーブル区間のサイズが、閾値テーブル区間サイズに達するまたはそれ以下に落ちるまで、１つまたはそれ以上の更新されたテーブル区間に基づいて、テーブルエントリの前記評価、および、前記下の区間境界変数または前記上の区間境界変数の前記適合を繰り返すように構成されることを特徴とする請求項１に記載のオーディオ復号器（２００；８００）。
【請求項３】
前記算術復号器（２３０；８２０）は、前記テーブル（ａｒｉ＿ｓ＿ｈａｓｈ、ａｒｉ＿ｇｓ＿ｈａｓｈ）の一定のエントリが前記数値的現在のコンテキスト値（ｓ）に等しいテーブルコンテキスト値（ｊ＞＞８）を示すことを発見することに応答して、前記テーブルの前記一定のエントリ（ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］、ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示されたマッピングルールインデックス値（ｐｋｉ）を供給するように構成されることを特徴とする請求項２に記載のオーディオ復号器（２００；８００）。
【請求項４】
前記算術復号器（２３０；８２０）は、以下のアルゴリズム、
ａ）下の区間境界変数ｉ＿ｍｉｎを−１にセットすること、
ｂ）上の区間境界変数ｉ＿ｍａｘをテーブルエントリの数マイナス１にセットすること、
ｃ）ｉ＿ｍａｘおよびｉ＿ｍｉｎの差が１より大きいかどうかをチェックして、この条件がもはや満たされなくなるまで、または、終了条件に達するまで、以下のステップ、
ｃ１）変数ｉをｉ＿ｍｉｎ＋（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）／２）にセットするステップ、
ｃ２）テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が、前記数値的現在のコンテキスト値より大きい場合、上の区間境界変数ｉ＿ｍａｘをｉにセットし、テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が、前記数値的現在のコンテキスト値より小さい場合、下の区間境界変数ｉ＿ｍｉｎをｉにセットするステップ、そして、
ｃ３）テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が、前記数値的現在のコンテキスト値に等しい場合、（ｃ）の繰り返しを終了し、前記アルゴリズムの結果として、テーブルインデックスｉを有する前記テーブルエントリによって示されたマッピングルールインデックス値（ｐｋｉ）を返すステップ
を繰り返すこと、
を実行するように構成されることを特徴とする請求項１〜請求項３のいずれか一項に記載のオーディオ復号器（２００；８００）。
【請求項５】
前記算術復号器は、前に復号されたスペクトル値（ａ）のマグニチュードを示しているマグニチュード値（ｃ０、ｃ１、ｃ２、ｃ３、ｃ４、ｃ５、ｃ６）の重み付けされた組み合わせに基づいて、前記数値的現在のコンテキスト値（ｓ）を得るように構成されることを特徴とする請求項１〜請求項４のいずれか一項に記載のオーディオ復号器（２００；８００）。
【請求項６】
前記テーブル（ａｒｉ＿ｓ＿ｈａｓｈ、ａｒｉ＿ｇｓ＿ｈａｓｈ）は、複数のエントリを含むこと、
前記複数のエントリの各々は、テーブルコンテキスト値（ｊ＞＞８）および関連したマッピングルールインデックス値（ｊ＆０ｘＦＦ、ｐｋｉ）を示すこと、および、
前記テーブルの前記エントリは、前記テーブルコンテキスト値によって数値的に順序付けられることを特徴とする請求項１〜請求項５のいずれか一項に記載のオーディオ復号器（２００；８００）。
【請求項７】
前記テーブルは、複数のエントリを含むこと、
前記複数のエントリの各々は、コンテキスト値区間の境界値を定めているテーブルコンテキスト値、および前記コンテキスト値区間と関連したマッピングルールインデックス値（ｐｋｉ）を示すことを特徴とする請求項１〜請求項５のいずれか一項に記載のオーディオ復号器（２００；８００）。
【請求項８】
前記算術復号器（２３０；８２０）は、前記数値的現在のコンテキスト値（ｓ）に依存して、マッピングルールの２ステップの選択を実行するように構成されること、
前記算術復号器は、第１の選択ステップ（５４０）において、前記数値的現在のコンテキスト値（ｓ）またはそこから得られた値がダイレクトヒットテーブル（ａｒｉ＿ｓ＿ｈａｓｈ）のエントリ（ｊ、ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］）によって示された有意な状態値（ｊ＞＞８）に等しいかどうかをチェックするように構成されること、および、
前記算術復号器は、前記数値的現在のコンテキスト値（ｓ）またはそこから得られた前記値が前記ダイレクトヒットテーブル（ａｒｉ＿ｓ＿ｈａｓｈ）の前記エントリによって示された前記有意な状態値とは異なる場合にのみ実行される第２の選択ステップ（５４４）において、前記数値的現在のコンテキスト値（ｓ）が、複数の区間の中のどの区間に位置するかを決定するように構成されること、
前記算術復号器は、前記数値的現在のコンテキスト値（ｓ）が、前記ダイレクトヒットテーブル（ａｒｉ＿ｓ＿ｈａｓｈ）のエントリ（ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］）によって示されたテーブルコンテキスト値（ｊ＞＞８）と同一であるどうかを決定するために、前記反復的区間サイズ削減（５４２）を使用して、前記ダイレクトヒットテーブル（ａｒｉ＿ｓ＿ｈａｓｈ）を評価するように構成されることを特徴とする請求項１〜請求項７のいずれか一項に記載のオーディオ復号器（２００；８００）。
【請求項９】
前記算術復号器は、前記第２の選択ステップ（５４４）において、区間マッピングテーブル（ａｒｉ＿ｇｓ＿ｈａｓｈ）を評価するように構成され、それのエントリは、反復的区間サイズ削減（５４６）を使用して、コンテキスト値区間の境界値を示すことを特徴とする請求項８に記載のオーディオ復号器（２００；８００）。
【請求項１０】
前記算術復号器（２３０；８２０）は、前記テーブル区間のサイズが、所定の閾値テーブル区間サイズに達するまたはそれ以下に減少するまで、または、前記テーブル区間の中心にテーブルエントリ（ｊ、ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示された区間境界コンテキスト値が前記数値的現在のコンテキスト値（ｓ）に等しくなるまで、エントリ（ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示された前記区間境界コンテキスト値（ｊ＞＞８）および前記数値的現在のコンテキスト値（ｓ）間の比較に依存して、テーブル区間のサイズを反復して削減するように構成されること、および、
前記算術復号器は、前記テーブル区間の前記サイズの前記反復的削減が終了するときに前記テーブル区間の区間境界の設定に依存して、前記マッピングルールインデックス値（ｐｋｉ）を供給するように構成されることを特徴とする請求項９に記載のオーディオ復号器。
【請求項１１】
入力されたオーディオ情報（１１０；７１０；２１１０）に基づいて、符号化されたオーディオ情報（１１２；７１２；２１１２）を供給するためのオーディオ符号器（１００；７００；２１００）であって、前記オーディオ符号器は、
周波数領域オーディオ表現（１３２；７２２；２１２４）がスペクトル値のセットを含むように、前記入力されたオーディオ情報の時間領域表現に基づいて、前記周波数領域オーディオ表現を供給するためのエネルギー圧縮時間領域周波数領域変換器（１３０；７２０；２１２０）と、
可変長コードワード（ａｃｏｄ＿ｍ、ａｃｏｄ＿ｒ）を使用して、スペクトル値（ａ）またはその前処理されたバージョンを符号化するように構成された算術符号器（１７０；７３０；２１３０）を含み、
前記算術符号器（１７０）は、コード値（ａｃｏｄ＿ｍ）への、スペクトル値（ａ）またはスペクトル値（ａ）の最上位ビットプレーンの値（ｍ）をマップするように構成されること、
前記算術符号器は、現在のコンテキスト状態を示している数値的現在のコンテキスト値（ｓ）に依存して、コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングを示しているマッピングルールを選択するように構成されること、および、
前記算術符号器は、複数の前に符号化されたスペクトル値に依存して、前記数値的現在のコンテキスト値（ｓ）を決定するように構成されること、
前記算術符号器は、反復的区間サイズ削減を使用して、少なくとも１つのテーブル（ａｒｉ＿ｓ＿ｈａｓｈ、ａｒｉ＿ｇｓ＿ｈａｓｈ）を評価して、テーブル区間の区間サイズは終了条件に達するまで反復して削減され、それによって、前記数値的現在のコンテキスト値（ｓ）が、前記テーブルのエントリ（ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］）によって示されたコンテキスト値と同一であるか、または、前記テーブルのエントリによって示された区間内に位置するかを決定して、そして、それに基づいて、選択されたマッピングルールを示しているマッピングルールインデックス値（ｐｋｉ）を得るように構成されることを特徴とする前記オーディオ符号器。
【請求項１２】
符号化されたオーディオ情報に基づいて、復号されたオーディオ情報を供給するための方法であって、前記方法は、
スペクトル値の算術符号化された表現に基づいて、複数の復号された前記スペクトル値を供給するステップと、
前記復号されたオーディオ情報を得るために、前記復号されたスペクトル値を使用して、時間領域オーディオ表現を供給するステップを含み、
前記複数の復号されたスペクトル値を供給するステップは、現在のコンテキスト状態を示している数値的現在のコンテキスト値（ｓ）に依存して、復号された形でスペクトル値（ａ）またはスペクトル値の最上位ビットプレーン（ｍ）を示しているシンボルコード（ｓｙｍｂｏｌ）への、符号化された形で、スペクトル値（ａ）またはスペクトル値の最上位ビットプレーン（ｍ）を示しているコード値（ａｃｏｄ＿ｍ；ｖａｌｕｅ）のマッピングを示しているマッピングルールを選択するステップを含むこと、および、
前記数値的現在のコンテキスト値は、複数の前に復号されたスペクトル値に依存して決定されること、
少なくとも１つのテーブルは、テーブル区間の区間サイズは終了条件に達するまで反復して削減され、それによって、前記数値的現在のコンテキスト値が前記テーブルのエントリによって示されたテーブルコンテキスト値と同一であるか、または、前記テーブルのエントリによって示された区間内に位置するかを決定するために、そして、それに基づいて、選択されたマッピングルールを示しているマッピングルールインデックス値を得るために、反復的区間サイズ削減を使用して、評価されることを特徴とする前記方法。
【請求項１３】
入力されたオーディオ情報に基づいて、符号化されたオーディオ情報を供給するための方法であって、前記方法は、
周波数領域オーディオ表現がスペクトル値のセットを含むように、エネルギー圧縮時間領域周波数領域変換を使用して、前記入力されたオーディオ情報の時間領域表現に基づいて、前記周波数領域オーディオ表現を供給するステップと、
可変長コードワードを使用して、スペクトル値、または、その前処理されたバージョンを算術符号化するステップであって、スペクトル値またはスペクトル値の最上位ビットプレーンの値が、コード値にマップされることを特徴とするステップを含み、
コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングを示しているマッピングルールは、現在のコンテキスト状態を示している数値的現在のコンテキスト値に依存して選択されること、
前記数値的現在のコンテキスト値は、複数の前に符号化されたスペクトル値に依存して、決定されること、および、
少なくとも１つのテーブルは、テーブル区間の区間サイズは終了条件に達するまで反復して削減され、それによって、前記数値的現在のコンテキスト値が、前記テーブルのエントリによって示されたテーブルコンテキスト値と同一であるか、または、前記テーブルのエントリによって示された区間内に位置するかを決定するために、そして、それに基づいて、選択されたマッピングルールを示しているマッピングルールインデックス値を決定するために、反復的区間サイズ削減を使用して評価されることを特徴とする前記方法。
【請求項１４】
コンピュータプログラムがコンピュータ上で動作するときに、前記コンピュータに請求項１２に記載の方法を実行させる、コンピュータプログラム。
【請求項１５】
コンピュータプログラムがコンピュータ上で動作するときに、前記コンピュータに請求項１３に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、符号化されたオーディオ情報に基づいて、復号されたオーディオ情報を供給するためのオーディオ復号器、入力されたオーディオ情報に基づいて、符号化されたオーディオ情報を供給するためのオーディオ符号器、符号化されたオーディオ情報に基づいて、復号されたオーディオ情報を供給する方法、入力されたオーディオ情報に基づいて、符号化されたオーディオ情報を供給する方法、およびコンピュータプログラムに関する。
【０００２】
本発明による実施形態は、例えば、いわゆる音声音響統合符号器（ＵＳＡＣ）のようなオーディオ符号器または復号器において使用できる改良されたスペクトルノイズレス符号化に関する。
【背景技術】
【０００３】
以下に、本発明の背景が、発明の理解およびその効果を容易にするために、簡単に説明される。過去１０年の間、より良いビットレート効率でオーディオコンテンツをデジタル的に格納し、分配する可能性を生み出すことに、多大な労力がかけられてきた。この点に関する１つの重要な業績が、国際規格ＩＳＯ／ＩＥＣ  １４４９６―３の定義である。この規格のパート３は、オーディオコンテンツの符号化および復号化に関連し、パート３のサブパート４は、汎用オーディオ符号化に関連する。ＩＳＯ／ＩＥＣ  １４４９６、パート３、サブパート４は、汎用のオーディオコンテンツの符号化および復号化のための構想を定める。加えて、更なる改良は、品質を改善するために、および／または、必要なビットレートを減少させるために提案された。
【０００４】
前記規格において示された構想によれば、時間領域オーディオ信号は、時間周波数表現に変換される。時間領域から時間周波数領域への変換は、一般的に、時間領域サンプルの、「フレーム」とも呼ばれる変換ブロックを使用して実行される。オーバーラップが、アーチファクトを効率よく回避する（または少なくとも、減少させる）ことを可能にするので、例えば半フレームだけシフトされたオーバーラップしているフレームを使用することが有利であることが分かっている。加えて、窓掛け（ｗｉｎｄｏｗｉｎｇ）が、時間的に限定されたフレームのこの処理から生じているアーチファクトを回避するために実行されなければならないことが分かっている。
【０００５】
時間領域から時間周波数領域に、入力されたオーディオ信号の窓を掛けた部分を変換することによって、エネルギー圧縮が、多くの場合得られ、その結果、スペクトル値のいくつかは、複数の他のスペクトル値より著しく大きいマグニチュードを含む。したがって、多くの場合、スペクトル値の平均マグニチュードを著しく上回っているマグニチュードを有する比較的少ない数のスペクトル値がある。結果としてエネルギー圧縮をもたらしている時間領域時間周波数領域変換の典型的な実施例は、いわゆる修正離散コサイン変換（ＭＤＣＴ）である。
【０００６】
スペクトル値は、音響心理学的なモデルによってしばしばスケールされ、量子化される。その結果、量子化誤差は、音響心理学的により重要なスペクトル値に関しては、比較的小さく、音響心理学的にそれほど重要でないスペクトル値に関しては、比較的大きい。スケールされ量子化されたスペクトル値は、そのビットレート効率のよい表現を供給するために符号化される。
【０００７】
例えば、量子化されたスペクトル係数のいわゆるハフマン符号化の使用法は、国際規格ＩＳＯ／ＩＥＣ  １４４９６―３：２００５（Ｅ）、パート３、サブパート４（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  ＩＳＯ／ＩＥＣ  １４４９６−３：２００５（Ｅ），ｐａｒｔ３，ｓｕｂｐａｒｔ４）において説明される。しかし、スペクトル値の符号化の品質が、必要なビットレートに重要な影響を及ぼすことが分かっている。
【０００８】
また、携帯型の消費者向けデバイスにおいてしばしば実装され、従って、安価であり、低消費電力である必要があるオーディオ復号器の煩雑性は、スペクトル値を符号化するために使用された符号化に依存していることが分かっている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  ＩＳＯ／ＩＥＣ  １４４９６−３：２００５（Ｅ），ｐａｒｔ３，ｓｕｂｐａｒｔ４
【発明の概要】
【発明が解決しようとする課題】
【００１０】
この状況を考慮して、ビットレート効率および計算量間の改善されたトレードオフを提供するオーディオコンテンツの符号化および復号化のための構想の必要がある。
【課題を解決するための手段】
【００１１】
本発明による実施形態は、符号化されたオーディオ情報に基づいて、復号されたオーディオ情報を供給するためのオーディオ復号器を生み出す。オーディオ復号器は、スペクトル係数の算術符号化された表現に基づいて、複数の復号されたスペクトル値を供給するための算術復号器を含む。算術復号器はまた、復号されたオーディオ情報を得るために、復号されたスペクトル値を使用して、時間領域オーディオ表現を供給するための周波数領域時間領域変換器を含む。算術復号器は、現在のコンテキスト状態を示している数値的現在のコンテキスト値に依存して、シンボルコードへのコード値のマッピングを示しているマッピングルールを選択するように構成される。算術復号器は、複数の前に復号されたスペクトル値に依存して、数値的現在のコンテキスト値を決定するように構成される。また、算術復号器は、選択されたマッピングルールを示しているインデックス値を得るために、数値的現在のコンテキスト値が、テーブルのエントリによって示されたテーブルコンテキスト値と同一であるか、または、テーブルのエントリによって示された区間内に位置するかを決定するために、反復的区間サイズ削減（ｉｔｅｒａｔｉｖｅ  ｉｎｔｅｒｖａｌ  ｓｉｚｅ  ｒｅｄｕｃｔｉｏｎ）を使用して、少なくとも１つのテーブルを評価するように構成される。
【００１２】
本発明による実施形態は、数値的現在のコンテキスト値がマッピングルールインデックス値の導出によく適しているオーディオコンテンツのスペクトル値を復号するための算術復号器の現在のコンテキスト状態を示している数値的現在のコンテキスト値を供給することが可能であるという発見に基づく。ここで、マッピングルールインデックス値は、テーブルに基づいて、反復的区間サイズ削減を使用して、算術復号器において選択されるマッピングルールを示す。反復的区間サイズ削減を使用したテーブルサーチは、一般的に、比較的多くの数の異なるコンテキスト状態を示すために計算される数値的現在のコンテキスト値に依存して、比較的少ない数のマッピングルールの中の（マッピングルールインデックス値によって示された）マッピングルールを選択するのに適していることが分かっている。ここで、ありうるマッピングルールの数は、一般的に、数値的現在のコンテキスト値によって示されたありうるコンテキスト状態の数より少なくとも１０倍は少ない。詳細な分析は、適当なマッピングルールの選択が反復的区間サイズ削減を使用することによって、高い計算効率で実行できることを示した。ワーストケースでさえ、テーブルアクセスの数は、この構想によって比較的小さく保つことができる。このことは、リアルタイム環境においてオーディオ復号化を実行しようとするときに、非常に肯定的であることを示した。さらに、反復的区間サイズ削減が、数値的現在のコンテキスト値がテーブルのエントリによって示されたテーブルコンテキスト値と同一であるかの検出と、数値的現在のコンテキスト値がテーブルのエントリによって示された区間内に位置するかの検出の両方に適用できることが分かっている。
【００１３】
要約すると、反復的区間サイズ削減の使用は、数値的現在のコンテキスト値に依存して、オーディオコンテンツの算術復号化のためのマッピングルールを選択するためにハッシュ法アルゴリズムを実行することに適していることが分かっている。ここで、一般的に、数値的現在のコンテキスト値のありうる値の数は、マッピングルールの記憶のための所要メモリ量を著しく小さく保つために、マッピングルールの数より著しく大きい。
【００１４】
好ましい実施形態において、算術復号器は、最初のテーブル区間の下の境界を示すための下の区間境界変数を初期化し、最初のテーブル区間の上の境界を示すための上の区間境界変数を初期化するように構成される。算術復号器は、テーブルエントリを評価するようにも好ましくは構成される。そして、それのテーブルインデックスは、数値的現在のコンテキスト値を評価テーブルエントリによって示されるテーブルコンテキスト値と比較するために、最初のテーブル区間の中心に配列される。算術復号器はまた、更新されたテーブル区間を得るために、その比較の結果に依存して、下の区間境界変数または上の区間境界変数を適用させるようにも構成される。さらに、算術復号器は、テーブルコンテキスト値が数値的現在のコンテキスト値に等しくなるまで、または、更新された区間境界変数によって定められたテーブル区間のサイズが、閾値テーブル区間サイズに達するまたはそれ以下に落ちるまで、１つまたはそれ以上の更新されたテーブル区間に基づいたテーブルエントリの評価および下の区間境界変数または上の区間境界変数の適合を繰り返すように構成される。反復的区間サイズ削減が上記のステップを使用して効率よく実行できることが分かっている。
【００１５】
好ましい実施形態において、算術復号器は、テーブルの前記一定のエントリが、数値的現在のコンテキスト値に等しいテーブルコンテキスト値を示すという発見に応答して、テーブルの一定のエントリによって示されたマッピングルールインデックス値を供給するように構成される。したがって、一般的に時間および電気エネルギーを消費するテーブルアクセスの数が小さく保たれるので、ハードウェア化によく適している非常に効率的なテーブルアクセス機構は、実行される。
【００１６】
好ましい実施形態において、算術復号器は、前のステップにおいて、下の区間境界変数ｉ＿ｍｉｎが−１にセットされ、上の区間境界変数ｉ＿ｍａｘがテーブルエントリの数に１を引いたものにセットされるアルゴリズムを実行するように構成される。そのアルゴリズムにおいて、区間境界変数ｉ＿ｍａｘおよびｉ＿ｍｉｎの差が１より大きいかどうかは更にチェックされ、以下のステップが、上述の条件（ｉ＿ｍａｘ−ｉ＿ｍｉｎ＞１）がもはや満たされなくなるまで、または、終了条件に達するまで、繰り返される。（１）その変数ｉをｉ＿ｍｉｎ＋（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）／２）にセットするステップ、（２）テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が数値的現在のコンテキスト値より大きい場合、上の区間境界変数ｉ＿ｍａｘをｉにセットするステップ、（３）テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が数値的現在のコンテキスト値より小さい場合、下の区間境界変数ｉ＿ｍｉｎをｉにセットするステップ。前に示されたステップ（１）、（２）、（３）の繰り返しは、テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が数値的現在のコンテキスト値に等しい場合に終了する。この場合、すなわち、テーブルインデックスｉを有するテーブルエントリによって示されたテーブルコンテキスト値が数値的現在のコンテキスト値に等しい場合、テーブルインデックスｉを有するテーブルエントリによって示されたマッピングルールインデックス値が返される。マッピングルールを選択するときに、オーディオ復号器のこのアルゴリズムの実行は、非常に良い計算効率を提供する。
【００１７】
好ましい実施形態において、算術復号器は、前に復号されたスペクトル値のマグニチュードを示しているマグニチュード値の重み付けされた組み合わせに基づいて、数値的現在のコンテキスト値を得るように構成される。数値的現在のコンテキスト値を得るためのこの機構が、結果として反復的区間サイズ削減を使用して、マッピングルールの効率の良い選択を可能にする数値的現在のコンテキスト値を生じさせることが分かっている。これは、数値的に隣接する数値的現在のコンテキスト値が現在復号されるスペクトル値の同様のコンテキスト環境にしばしば関連があるように、前に復号されたスペクトル値のマグニチュードを示しているマグニチュード値の重み付けされた組み合わせが結果として数値的現在のコンテキスト値を生じさせるという事実に起因する。これは、反復的区間サイズ削減に基づいてハッシュ法アルゴリズムの効率的なアプリケーションを可能にする。
【００１８】
好ましい実施形態において、テーブルは、複数のエントリを含む。ここで、複数のエントリの各々は、テーブルコンテキスト値および関連したマッピングルールインデックス値を示し、そして、テーブルのエントリは、テーブルコンテキスト値によって数値的に順序付けられる。この種のテーブルが、反復的区間サイズ削減と組み合わせてアプリケーションに非常によく適していることが分かっている。テーブルのエントリを数値的に順序付けることは、比較的少ない数の繰り返しの範囲内に、数値的現在のコンテキスト値が位置する区間の識別の、数値的現在のコンテキスト値と同一であるテーブルコンテキスト値のサーチを実行することを可能にする。したがって、テーブルアクセスの数は、小さく保たれる。また、１つのテーブルエントリ内のテーブルコンテキスト値および関連したマッピングルールインデックス値を組合せることによって、テーブルアクセスの数は削減でき、そして、それはハードウェア装置の実行時間およびその消費電力を小さく保つのを助ける。
【００１９】
好ましい実施形態において、テーブルは、複数のエントリを含む。ここで、複数のエントリの各々は、コンテキスト値区間の境界値を定めているテーブルコンテキスト値、およびコンテキスト値区間と関連したマッピングルールインデックス値を示す。この構想を用いて、反復的区間サイズ削減を使用して数値的現在のコンテキスト値が位置する区間を確認することは、可能である。さらにまた、繰り返しの数およびテーブルアクセスの数は、小さく保つことができる。
【００２０】
好ましい実施形態において、算術復号器は、数値的現在のコンテキスト値に依存して、マッピングルールの２段階選択を実行するように構成される。この場合、算術復号器は、第１の選択ステップにおいて、数値的現在のコンテキスト値またはそこから得られた値がダイレクトヒットテーブルのエントリによって示された有意な状態値に等しいかどうかをチェックするように構成される。算術復号器はまた、数値的現在のコンテキスト値またはそこから得られる値が、ダイレクトヒットテーブルのエントリによって示された有意な状態値とは異なる場合のみ実行される第２の選択ステップにおいて、数値的現在のコンテキスト値が複数の区間の中のどの区間にあるかを決定するように構成される。算術復号器は、数値的現在のコンテキスト値が、ダイレクトヒットテーブルのエントリによって示されたテーブルコンテキスト値と同一であるどうかを決定するために、反復的区間サイズ削減を使用して、ダイレクトヒットテーブルを評価するように構成される。この二段階テーブル評価機構を用いて、特に有意なコンテキスト状態がダイレクトヒットテーブルのエントリによって示される）特に有意なコンテキスト状態を効率よく確認すること、および、第２の選択ステップにおいて、（ダイレクトヒットテーブルのエントリによって示されていない）それほど有意でないコンテキスト状態のために適当なマッピングルールを選択することが可能であることを分かっている。こうすることによって、最上位コンテキスト状態は、第１の選択ステップにおいて処理できる。そして、それは特に有意な状態がある場合には、計算量を削減する。さらに、それほど有意でない状態のためにさえ適したマッピングルールを見つけることは、可能である。
【００２１】
好ましい実施形態において、算術復号器は、第２の選択ステップにおいて、区間マッピングテーブルを評価するように構成される。そして、それのエントリは、反復的区間サイズ削減を使用して、コンテキスト値区間の境界値を示す。反復的区間サイズ削減が、ダイレクトヒットの確認に、そして、数値的現在のコンテキスト値が区間マッピングテーブルによって示された複数の区間の中のどの区間にあるかの確認に、よく適していることが分かっている。
【００２２】
好ましい実施形態において、算術復号器は、テーブル区間のサイズが、所定の閾値テーブル区間サイズに達するまたはそれ以下に下がるまで、または、テーブル区間の中心にテーブルエントリによって示された区間境界コンテキスト値が数値的現在のコンテキスト値と等しくなるまで、区間マッピングテーブルのエントリによって示された区間境界コンテキスト値と数値的現在のコンテキスト値間の比較に依存して、テーブル区間のサイズを反復的に削減するように構成される。算術復号器は、テーブル区間の反復的削減が回避されるとき、テーブル区間の区間境界の設定に依存してマッピングルールインデックス値を供給するように構成される。この構想を使用して、数値的現在のコンテキスト値が区間マッピングテーブルのエントリによって定められた複数のテーブル区間の中のどのテーブル区間にあるかは、低い計算量によって決定されることができる。したがって、マッピングルールは、低い計算量によって選択されることができる。
【００２３】
本発明による実施形態は、入力されたオーディオ情報に基づいて、符号化されたオーディオ情報を供給するためのオーディオ符号器を生み出す。オーディオ符号器は、入力されたオーディオ情報の時間領域表現に基づいて、周波数領域オーディオ表現を供給するためのエネルギー圧縮時間領域周波数領域変換器を含み、その結果、周波数領域オーディオ表現はスペクトル値のセットを含む。オーディオ符号器はまた、可変長コードワードを使用して、スペクトル値またはその前処理されたバージョンを符号化するように構成された算術符号器を含む。算術符号器は、コード値へ、スペクトル値またはスペクトル値の最上位ビットプレーンの値をマップするように構成される。算術符号器はまた、現在のコンテキスト状態を示している数値的現在のコンテキスト値に依存して、コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングを示しているマッピングルールを選択するように構成される。算術符号器は、複数の前に符号化されたスペクトル値に依存して、数値的現在のコンテキスト値を決定するように構成される。算術符号器は、数値的現在のコンテキスト値がテーブルのエントリによって示されたコンテキスト値と同一であるかまたはテーブルのエントリによって示された区間内にあるかを決定するために、そして、それにより選択されたマッピングルールを示しているマッピングルールインデックス値を得るために、反復的区間サイズ削減を使用して、少なくとも１つのテーブルを評価するように構成される。このオーディオ信号符号器は、上述のオーディオ信号復号器と同じ発見に基づく。一貫したシステムを可能にするために、オーディオコンテンツの復号化に効率的であることが示されたマッピングルールの選択のための機構が、符号器側でも使用されるべきであることが分かっている。
【００２４】
本発明による実施形態は、符号化されたオーディオ情報に基づいて、復号されたオーディオ情報を供給する方法を生み出す。
【００２５】
本発明によるさらに別の実施形態は、入力されたオーディオ情報に基づいて符号化されたオーディオ情報を供給する方法を生み出す。
【００２６】
本発明による他の実施形態は、前記方法のうちの１つを実行するためのコンピュータプログラムを生み出す。
【００２７】
方法およびコンピュータプログラムは、上記したオーディオ復号器および上記したオーディオ符号器と同じ発見に基づく。
【００２８】
本発明による実施形態は、同封の図を参照して、以下に説明される。
【図面の簡単な説明】
【００２９】
【図１ａ】図１ａは、本発明の一実施形態によるオーディオ符号器のブロック略図を示す。
【図１ｂ】図１ｂは、本発明の一実施形態によるオーディオ符号器のブロック略図を示す。
【図２ａ】図２ａは、本発明の一実施形態によるオーディオ復号器のブロック略図を示す。
【図２ｂ】図２ｂは、本発明の一実施形態によるオーディオ復号器のブロック略図を示す。
【図３】図３は、スペクトル値を復号するためのアルゴリズム「ｖａｌｕｅ＿ｄｅｃｏｄｅ（）」の仮プログラムコード表現を示す。
【図４】図４は、状態計算のためのコンテキストの略図を示す。
【図５ａ】図５ａは、コンテキストをマップするためのアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の仮プログラムコード表現を示す。
【図５ｂ】図５ｂは、コンテキスト状態値を得るためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の仮プログラムコード表現を示す。
【図５ｃ】図５ｃは、コンテキスト状態値を得るためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の仮プログラムコード表現を示す。
【図５ｄ１】図５ｄは、状態変数から累積度数分布表インデックス値「ｐｋｉ」を得るためのアルゴリズム「ｇｅｔ＿ｐｋ（ｓ）」の仮プログラムコード表現を示す。
【図５ｄ２】図５ｄは、状態変数から累積度数分布表インデックス値「ｐｋｉ」を得るためのアルゴリズム「ｇｅｔ＿ｐｋ（ｓ）」の仮プログラムコード表現を示す。
【図５ｅ】図５ｅは、状態値から累積度数分布表インデックス値「ｐｋｉ」を得るためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｓ）」の仮プログラムコード表現を示す。
【図５ｆ】図５ｆは、状態値から累積度数分布表インデックス値「ｐｋｉ」を得るためのアルゴリズム「ｇｅｔ＿ｐｋ（ｕｎｓｉｇｎｅｄ  ｌｏｎｇ  ｓ）」の仮プログラムコード表現を示す。
【図５ｇ１】図５ｇは、可変長コードワードからシンボルを算術復号化するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の仮プログラムコード表現を示す。
【図５ｇ２】図５ｇは、可変長コードワードからシンボルを算術復号化するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の仮プログラムコード表現を示す。
【図５ｈ】図５ｈは、コンテキストを更新するためのアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」の仮プログラムコード表現を示す。
【図５ｉ】図５ｉは、定義および変数のキャプションを示す。
【図６ａ】図６ａは、音声音響統合符号化（ＵＳＡＣ）のシンタックス表現として生データブロックを示す。
【図６ｂ】図６ｂは、単一のチャンネル要素のシンタックス表現を示す。
【図６ｃ】図６ｃは、チャンネルペア要素のシンタックス表現を示す。
【図６ｄ】図６ｄは、「ｉｃｓ」制御情報のシンタックス表現を示す。
【図６ｅ】図６ｅは、周波数領域チャンネルストリームのシンタックス表現を示す。
【図６ｆ】図６ｆは、算術符号化スペクトルデータのシンタックス表現を示す。
【図６ｇ】図６ｇは、スペクトル値のセットを復号するためのシンタックス表現を示す。
【図６ｈ】図６ｈは、データ要素および変数のキャプションを示す。
【図７】図７は、本発明の他の実施形態によるオーディオ符号器のブロック略図を示す。
【図８】図８は、本発明の他の実施形態によるオーディオ復号器のブロック略図を示す。
【図９】図９は、本発明による符号化方式を有するＵＳＡＣドラフト標準（ｄｒａｆｔ  ｓｔａｎｄａｒｄ）の作業原案３によるノイズレス符号化の比較のための構成を示す。
【図１０ａ】図１０ａは、それがＵＳＡＣドラフト標準の作業原案４によって使用されるように、状態計算のためのコンテキストの略図を示す。
【図１０ｂ】図１０ｂは、それが本発明による実施形態において使用されるように、状態計算のためのコンテキストの略図を示す。
【図１１ａ】図１１ａは、ＵＳＡＣドラフト標準の作業原案４による算術符号化方式において用いられているように、テーブルの概要を示す。
【図１１ｂ】図１１ｂは、本発明による算術符号化方式において用いられているように、テーブルの概要を示す。
【図１２ａ】図１２ａは、本発明による、そして、ＵＳＡＣドラフト標準の作業原案４によるノイズレス符号化方式のための読取り専用メモリ要求の図示を示す。
【図１２ｂ】図１２ｂは、本発明による、そして、ＵＳＡＣドラフト標準の作業原案４の構想による合計のＵＳＡＣ復号器データ読取り専用メモリ要求の図示を示す。
【図１３ａ】図１３ａは、ＵＳＡＣドラフト標準の作業原案３による算術符号器、および本発明の一実施形態による算術復号器を用いて、音声音響統合符号化コーダによって使用される平均ビットレートのテーブル表現を示す。
【図１３ｂ】図１３ｂは、ＵＳＡＣドラフト標準の作業原案３によるおよび算術符号器、および本発明の一実施形態による算術符号器を用いて、音声音響統合符号化コーダのためのビットリザーバ制御のテーブル表現を示す。
【図１４】図１４は、ＵＳＡＣドラフト標準の作業原案３による、そして、本発明の一実施形態によるＵＳＡＣコーダのための平均ビットレートのテーブル表現を示す。
【図１５】図１５は、フレーム基準のＵＳＡＣの最小、最大、および、平均ビットレートのテーブル表現を示す。
【図１６】図１６は、フレーム基準のベストおよびワーストケースのテーブル表現を示す。
【図１７（１）】図１７（１）は、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」の内容のテーブル表現を示す。
【図１７（２）】図１７（２）は、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」の内容のテーブル表現を示す。
【図１８】図１８は、テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ［２２５］」の内容のテーブル表現を示す。
【図１９（１）】図１９（１）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［９］」の内容のテーブル表現を示す。
【図１９（２）】図１９（２）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［９］」の内容のテーブル表現を示す。
【図２０（１）】図２０（１）は、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」の内容のテーブル表現を示す。
【図２０（２）】図２０（２）は、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」の内容のテーブル表現を示す。
【図２１】図２１は、本発明の一実施形態によるオーディオ符号器のブロック略図を示す。
【図２２】図２２は、本発明の一実施形態によるオーディオ復号器のブロック略図を示す。
【発明を実施するための形態】
【００３０】
１．  図７のオーディオ符号器
図７は、本発明の一実施形態によるオーディオ符号器のブロック略図を示す。オーディオ符号器７００は、入力されたオーディオ情報７１０を受けて、それに基づいて、符号化されたオーディオ情報７１２を供給するように構成される。オーディオ符号器は、周波数領域オーディオ表現７２２がスペクトル値のセットを含むように、入力されたオーディオ情報７１０の時間領域表現に基づいて、周波数領域オーディオ表現７２２を供給するように構成されるエネルギー圧縮時間領域周波数領域変換器７２０を含む。オーディオ符号器７００はまた、（例えば、複数の可変長コードワードを含みうる）符号化されたオーディオ情報７１２を得るために、可変長コードワードを使用して、（周波数領域オーディオ表現７２２を形成しているスペクトル値のセットから）スペクトル値またはその前処理されたバージョンを符号化するように構成される算術符号器７３０を含む。
【００３１】
算術符号器７３０は、コンテキスト状態に依存して、スペクトル値、またはスペクトル値の最上位ビットプレーンの値をコード値に（すなわち可変長コードワードに）マップするように構成される。算術符号器７３０は、コンテキスト状態に依存して、コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングを示しているマッピングルールを選択するように構成される。算術符号器は、前に符号化された（好ましくは、必ずではないが、隣接した）スペクトル値に依存して、現在のコンテキスト状態を決定するように構成される。この目的のために、算術符号器は、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数の前に符号化された隣接したスペクトル値のグループを検出して、その検出の結果に依存して、現在のコンテキスト状態を決定するように構成される。
【００３２】
図に示すように、コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングは、マッピングルール７４２を使用して、スペクトル値符号化７４０によって実行されうる。状態追跡器７５０は、コンテキスト状態を追跡するように構成されて、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数の前に符号化された隣接したスペクトル値のグループを検出するために、グループ検出器７５２を含むことができる。好ましくは、状態追跡器７５０は、グループ検出器７５２によって実行された前記検出の結果に依存して現在のコンテキスト状態を決定するようにも構成される。したがって、状態追跡器７５０は、現在のコンテキスト状態を示している情報７５４を供給する。マッピングルール選択器７６０は、コード値への、スペクトル値の、または、スペクトル値の最上位ビットプレーンのマッピングを示しているマッピングルール（例えば累積度数分布表）を選択することができる。したがって、マッピングルール選択器７６０は、スペクトル符号化７４０にマッピングルール情報７４２を供給する。
【００３３】
上記を要約すると、オーディオ符号器７００は、時間領域周波数領域変換器によって供給された周波数領域オーディオ表現の算術符号化を実行する。算術符号化は、マッピングルール（例えば累積度数分布表）が、前に符号化されたスペクトル値に依存して選択されるように、コンテキストに依存する。したがって、互いに、および／または、現在符号化されたスペクトル値（すなわち現在符号化されたスペクトル値の所定の環境内のスペクトル値）に、時間および／または周波数において（または少なくとも所定の環境内で）隣接したスペクトル値は、算術符号化によって評価された確率分布を調整するために、算術符号化において考慮される。適当なマッピングルールを選択するときに、検出は、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数の前に符号化された隣接したスペクトル値のグループがあるかどうかを検出するために実行される。この検出の結果は、現在のコンテキスト状態の選択において、すなわちマッピングルールの選択において、適用される。特に小さいまたは特に大きい複数のスペクトル値のグループがあるかどうかを検出することによって、時間周波数表現でありえる周波数領域オーディオ表現の範囲内に特別な特徴を認識することは可能である。例えば、複数の特に小さいまたは特に大きいスペクトル値のグループなどの特別な特徴は、この特定のコンテキスト状態が特により良い符号化効率を供給しうるように、特定のコンテキスト状態が使用されるべきであることを示す。このように、一般的に複数の前に符号化されたスペクトル値の組み合わせに基づいて他のコンテキスト評価と組み合わせて使用される所定の条件を満たす隣接したスペクトル値のグループの検出は、入力されたオーディオ情報がいくつかの特別な状態をとる（例えば、大きいマスクされた周波数範囲を含む）場合、適当なコンテキストの効率の良い選択を可能にする機構を供給する。
【００３４】
したがって、コンテキスト計算を十分に簡潔に保つと共に、効率的な符合化が達成できる。
【００３５】
２．  図８のオーディオ復号器
図８は、オーディオ復号器８００のブロック略図を示す。オーディオ復号器８００は、符号化されたオーディオ情報８１０を受けて、それに基づいて、復号されたオーディオ情報８１２に供給するように構成される。オーディオ復号器８００は、スペクトル値の算術符号化された表現８２１に基づいて、複数の復号されたスペクトル値８２２を供給するように構成される算術復号器８２０を含む。オーディオ復号器８００はまた、復号されたスペクトル値８２２を受けて、時間領域オーディオ表現８１２を供給するように構成される周波数領域時間領域変換器８３０を含み、それは、復号されたオーディオ情報８１２を得るために、復号されたスペクトル値８２２を使用して、復号されたオーディオ情報を構成しうる。
【００３６】
算術復号器８２０はまた、スペクトル値の算術符号化された表現８２１のコード値を、復号されたスペクトル値の１つまたはそれ以上、または復号されたスペクトル値の１つまたはそれ以上の少なくとも一部（例えば最上位ビットプレーン）を示しているシンボルコードにマップするように構成されるスペクトル値決定器８２４を含む。スペクトル値決定器８２４は、マッピングルール情報８２８ａによって示されうるマッピングルールに依存して、マッピングを実行するように構成されうる。
【００３７】
算術復号器８２０は、（コンテキスト状態情報８２６ａによって示されうる）コンテキスト状態に依存して、（１つまたはそれ以上のスペクトル値を示している）シンボルコードへの（スペクトル値の算術符号化された表現８２１によって示される）コード値のマッピングを示しているマッピングルール（例えば累積度数分布表）を選択するように構成される。算術復号器８２０は、複数の前に復号されたスペクトル値８２２に依存して、現在のコンテキスト状態を決定するように構成される。この目的のために、前に復号されたスペクトル値を示している情報を受ける状態追跡器８２６は使用されうる。算術復号器はまた、個々に、または、まとまって、それらのマグニチュードに関する所定の条件を満たす複数の前に復号された（好ましくは、必ずではないが、隣接した）スペクトル値のグループを検出して、その検出の結果に依存して、（例えば、コンテキスト状態情報８２６ａによって示された）現在のコンテキスト状態を決定するようにも構成される。
【００３８】
それらのマグニチュードに関して所定の条件を満たす複数の前に復号された隣接したスペクトル値のグループの検出は、例えば、状態追跡器８２６の一部であるグループ検出器によって実行されうる。したがって、現在のコンテキスト状態情報８２６ａは、得られる。マッピングルールの選択は、現在のコンテキスト状態情報８２６ａからマッピングルール情報８２８ａを得て、スペクトル値決定器８２４にマッピングルール情報８２８ａを供給するマッピングルール選択器８２８によって実行されうる。
【００３９】
オーディオ信号復号器８００の機能に関して、マッピングルールが、複数の前に復号されたスペクトル値に依存して次々に決定される現在のコンテキスト状態に依存して選択されるので、算術復号器８２０は、平均して、復号されるスペクトル値によく適合されるマッピングルール（例えば累積度数分布表）を選択するように構成される点に留意する必要がある。したがって、復号される隣接したスペクトル値間の統計的依存性が利用できる。さらに、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数の前に復号された隣接したスペクトル値のグループを検出することによって、マッピングルールを前に復号されたスペクトル値の特別な条件（またはパターン）に適合することは可能である。例えば、複数の比較的小さい前に復号された隣接したスペクトル値のグループが確認される場合、または、複数の比較的大きい前に復号された隣接したスペクトル値のグループが確認される場合、特定のマッピングルールは選択されうる。比較的大きいスペクトル値のグループの、または、比較的小さいスペクトル値のグループの存在が、特にこの種の条件に適合された専用のマッピングルールが使用されるべきであることの有意な指標として考慮されうることが分かっている。したがって、コンテキスト計算は、複数のスペクトル値のこの種のグループの検出を利用することによって、容易にできる（または加速できる）。また、上述の構想を適用することなしでは容易には考慮できなかったオーディオコンテンツの特性が考慮できる。例えば、通常のコンテキスト計算のために使用されたスペクトル値のセットと比較すると、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数のスペクトル値のグループの検出は、スペクトル値の異なるセットに基づいて実行できる。
【００４０】
更なる詳細について、以下に説明する。
【００４１】
３．  図１のオーディオ符号器
以下に、本発明の一実施形態によるオーディオ符号器について説明する。図１は、この種のオーディオ符号器１００のブロック略図を示す。
【００４２】
オーディオ符号器１００は、入力されたオーディオ情報１１０を受けて、それに基づいて、符号化されたオーディオ情報を構成するビットストリーム１１２を供給するように構成される。任意選択で、オーディオ符号器１００は、入力されたオーディオ情報１１０を受けて、それに基づいて、前処理された入力されたオーディオ情報１１０ａを供給するように構成される前処理器１２０を含む。オーディオ符号器１００はまた、信号変換器とも呼ばれるエネルギー圧縮時間領域周波数領域信号変換器１３０を含む。変換器１３０は、入力されたオーディオ情報１１０、１１０ａを受けて、それに基づいて、好ましくはスペクトル値のセットの形をとる、周波数領域オーディオ情報１３２を供給するように構成される。例えば、信号変換器１３０は、入力されたオーディオ情報１１０、１１０ａ（例えば時間領域サンプルのブロック）を受けて、各オーディオフレームのオーディオコンテンツを示しているスペクトル値のセットを供給するように構成されうる。さらに、信号変換器１３０は、複数の次のオーバーラップしているまたはオーバーラップしていない、入力されたオーディオ情報１１０、１１０ａのオーディオフレームを受けて、それに基づいて、スペクトル値の続くセットのシーケンス、各フレームに関連したスペクトル値の１セットを含む時間周波数領域オーディオ表現を供給するように構成されうる。
【００４３】
エネルギー圧縮時間領域周波数領域信号変換器１３０は、異なる、オーバーラップしているまたはオーバーラップしていない周波数範囲と関連したスペクトル値を供給するエネルギー圧縮フィルタバンクを含みうる。例えば、信号変換器１３０は、変換窓を使用して、入力されたオーディオ情報１１０、１１０ａ（またはそのフレーム）の窓を掛けて（ｗｉｎｄｏｗ）、その窓を掛けた入力されたオーディオ情報１１０、１１０ａ（またはその窓を掛けたフレーム）の修正離散コサイン変換を実行するように構成される窓掛けＭＤＣＴ変換器１３０ａを含みうる。したがって、周波数領域オーディオ表現１３２は、入力されたオーディオ情報のフレームと関連したＭＤＣＴ係数の形で、例えば１０２４のスペクトル値のセットを含みうる。
【００４４】
オーディオ符号器１００は、任意選択で、周波数領域オーディオ表現１３２を受けて、それに基づいて、後処理された周波数領域オーディオ表現１４２を供給するように構成されるスペクトル後処理器１４０を更に含みうる。スペクトル後処理器１４０は、例えば、時間的ノイズシェーピングおよび／または長期予測および／または従来技術において公知の他のスペクトル後処理も実行するように構成されうる。オーディオ符号器は、任意選択で、周波数領域オーディオ表現１３２またはその後処理されたバージョン１４２を受けて、スケールおよび量子化された周波数領域オーディオ表現１５２を供給するように構成されるスケーラ／量子化器１５０を更に含む。
【００４５】
オーディオ符号器１００は、任意選択で、入力されたオーディオ情報１１０（またはその後処理されたバージョン１１０ａ）を受けて、それに基づいて、エネルギー圧縮時間領域周波数領域信号変換器１３０の制御のために、任意のスペクトル後処理器１４０の制御のために、および／または任意のスケーラ／量子化器１５０の制御のために使用されうる任意の制御情報を供給するように構成される心理音響モデル処理器１６０を更に含む。例えば、心理音響モデル処理器１６０は、入力されたオーディオ情報１１０、１１０ａのどの成分が、オーディオコンテンツの人の知覚に特に重要であるか、そして、入力されたオーディオ情報１１０、１１０ａのどの成分が、オーディオコンテンツの知覚にそれほど重要でないかを決定するために、入力されたオーディオ情報を分析するように構成されうる。したがって、心理音響モデル処理器１６０は、スケーラ／量子化器１５０、および／またはスケーラ／量子化器１５０によって適用された量子化分解能によって周波数領域オーディオ表現１３２、１４２のスケーリングを調整するためにオーディオ符号器１００により使用される制御情報を供給しうる。従って、知覚的に重要なスケールファクターバンド（すなわちオーディオコンテンツの人の知覚にとって特に重要である隣接したスペクトル値のグループ）は、大きいスケーリングファクターによってスケールされて、比較的高い分解能によって量子化される。その一方で、知覚的にそれほど重要でないスケーリングファクターバンド（すなわち隣接したスペクトル値のグループ）は、比較的より小さいスケーリングファクターによってスケールされて、比較的低い量子化分解能によって量子化される。したがって、知覚的により重要な周波数のスケールされたスペクトル値は、一般的に、知覚的にそれほど重要でない周波数のスペクトル値より著しく大きい。
【００４６】
オーディオ符号器はまた、算術コードワード情報が周波数領域オーディオ表現１５２を示すように、周波数領域オーディオ表現１３２のスケールおよび量子化されたバージョン１５２（または、代わりに、周波数領域オーディオ表現１３２の後処理されたバージョン１４２、または周波数領域オーディオ表現１３２自体）を受けて、それに基づいて、算術コードワード情報１７２ａを供給するように構成される算術符号器１７０を含む。
【００４７】
オーディオ符号器１００はまた、算術コードワード情報１７２ａを受けるように構成されるビットストリーム・ペイロード・フォーマッタ１９０を含む。例えば、ビットストリーム・ペイロード・フォーマッタ１９０はまた、一般的に、例えば、どのスケールファクターがスケーラ／量子化器１５０によって適用されたかを示しているスケールファクター情報などの付加情報を受けるようにも構成される。加えて、ビットストリーム・ペイロード・フォーマッタ１９０は、他の制御情報を受けるように構成されうる。ビットストリーム・ペイロード・フォーマッタ１９０は、所望のビットストリームシンタックスによって、ビットストリームを集めることによって受けた情報に基づいて、ビットストリーム１１２を供給するように構成され、それについては後述する。
【００４８】
以下に、算術符号器１７０に関する詳細について説明する。算術符号器１７０は、後処理され、スケールされ、量子化された周波数領域オーディオ表現１３２の複数のスペクトル値を受けるように構成される。算術符号器は、最上位ビットプレーン（ｍｏｓｔ−ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ−ｐｌａｎｅ）ｍをスペクトル値から抽出するように構成される最上位ビットプレーン抽出器１７４を含む。最上位ビットプレーンが、スペクトル値の最上位ビットである１またはより多くのビット（例えば２または３ビット）を含むことができる点にここで留意すべきである。このように、最上位ビットプレーン抽出器１７４は、スペクトル値の最上位ビットプレーン値１７６を供給する。
【００４９】
算術符号器１７０はまた、最上位ビットプレーン値ｍを示している算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を決定するように構成される第１のコードワード決定器１８０を含む。任意選択で、コードワード決定器１８０は、例えば、いくつの下位ビットプレーン（ｌｅｓｓ−ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ−ｐｌａｎｅｓ）が利用できるかを示している（そして、従って、最上位ビットプレーンの数値的重みを示している）１つまたはそれ以上のエスケープコードワード（また、本願明細書においては「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」とも示される）を供給することもできる。第１のコードワード決定器１８０は、累積度数分布表インデックスｐｋｉを有している（またはそれにより参照される）選択された累積度数分布表を使用して、最上位ビットプレーン値ｍと関連したコードワードを供給するように構成されうる。
【００５０】
どの累積度数分布表が選択されるべきかについて決定するために、算術符号器は、好ましくは、例えば、どのスペクトル値が前に符号化されたかを見ることによって、算術符号器の状態を追跡するように構成される状態追跡器１８２を含む。従って、状態追跡器１８２は、状態情報１８４、例えば「ｓ」または「ｔ」によって示される状態値を供給する。算術符号器１７０はまた、状態情報１８４を受けて、選択された累積度数分布表を示している情報１８８をコードワード決定器１８０に供給するように構成される累積度数分布表選択器１８６を含む。例えば、累積度数分布表選択器１８６は、６４の累積度数分布表のセットから、どの累積度数分布表が、コードワード決定器によって使用のために選択されるかについて示している累積度数分布表インデックス「ｐｋｉ」を供給しうる。あるいは、累積度数分布表選択器１８６は、全選択された累積度数分布表をコードワード決定器に供給しうる。このように、コードワード決定器１８０は、最上位ビットプレーン値ｍを符号化している実際のコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］が、ｍという値および累積度数分布表インデックスｐｋｉに依存し、従って、現在の状態情報１８４に依存するように、最上位ビットプレーン値ｍのコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］の供給のための選択された累積度数分布表を使用しうる。符号化処理および得られたコードワードフォーマットに関する更なる詳細については、後述する。
【００５１】
符号化されるスペクトル値の１つまたはそれ以上が最上位ビットプレーンだけを使用して、符号化可能な値の範囲を上回る場合に、算術符号器１７０は、１つまたはそれ以上の下位ビットプレーンをスケールおよび量子化された周波数領域オーディオ表現１５２から抽出するように構成される下位ビットプレーン抽出器１８９ａを更に含む。要望通り、下位ビットプレーンは、１またはそれ以上のビットを含むことができる。したがって、下位ビットプレーン抽出器１８９ａは、下位ビットプレーン情報１８９ｂを供給する。算術符号器１７０はまた、下位ビットプレーン情報１８９ｄを受けて、それに基づいて、０、１、またはそれ以上の下位ビットプレーンの内容を示している０、１、またはそれ以上のコードワード「ａｃｏｄ＿ｒ」を供給するように構成される第２のコードワード決定器１８９ｃを含む。第２のコードワード決定器１８９ｃは、下位ビットプレーン情報１８９ｂから下位ビットプレーンコードワード「ａｃｏｄ＿ｒ」を抽出するために、算術符号化アルゴリズムまたはその他の符号化アルゴリズムも適用するように構成されうる。
【００５２】
符号化されるスケールおよび量子化されたスペクトル値が比較的小さい場合には、全く下位ビットプレーンはないこともあり、符号化される現在のスケールおよび量子化されたスペクトル値が、中間の範囲内にある場合には、１つの下位ビットプレーンがあり、そして、符号化されるスケールおよび量子化されたスペクトル値が、比較的大きい値をとる場合には、２以上の下位ビットプレーンがありうるように、下位ビットプレーンの数は、スケールおよび量子化されたスペクトル値１５２の値に依存して変化しうる点に、ここでは留意すべきである。
【００５３】
上記を要約すると、算術符号器１７０は、階層符号化処理を使用して、情報１５２によって示されるスケールおよび量子化されたスペクトル値を符号化するように構成される。（例えば、スペクトル値ごとに１、２または３ビットを含んでいる）最上位ビットプレーンは、最上位ビットプレーン値の算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」を得るために符号化される。１またはそれ以上の下位ビットプレーン（例えば、１、２または３ビットを含んでいる下位ビットプレーンの各々）は、１またはそれ以上のコードワード「ａｃｏｄ＿ｒ」を得るために符号化される。最上位ビットプレーンを符号化するときに、最上位ビットプレーンの値ｍは、コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］にマップされる。この目的のために、６４個の異なる累積度数分布表は、算術符号器１７０の状態に依存して、すなわち前に符号化されたスペクトル値に依存して、値ｍの符号化に利用できる。したがって、コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」は、得られる。加えて、１またはそれ以上の下位ビットプレーンがある場合、１またはそれ以上のコードワード「ａｃｏｄ＿ｒ」は、ビットストリームに供給され、含まれる。
【００５４】
リセット説明
任意選択で、オーディオ符号器１００は、ビットレートにおける改善を、コンテキストをリセットすることによって、例えば状態インデックスをデフォルト値にセットすることによって得ることができるかどうか決定するように構成されうる。したがって、オーディオ符号器１００は、算術符号化のためのコンテキストがリセットされるかどうか示しており、更に対応している復号器における算術復号化のためのコンテキストがリセットされるべきかどうかを示しているリセット情報（例えば「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」と呼ぶ）を供給するように構成されうる。
【００５５】
ビットストリームフォーマットおよび適用された累積度数分布表に関する詳細については、後述する。
【００５６】
４．  オーディオ復号器
以下に、本発明の一実施形態によるオーディオ復号器について説明する。図２は、この種のオーディオ復号器２００のブロック略図を示す。
【００５７】
オーディオ復号器２００は、符号化されたオーディオ情報を示し、そして、オーディオ符号器１００によって供給されたビットストリーム１１２と同一でありえるビットストリーム２１０を受けるように構成される。オーディオ復号器２００は、ビットストリーム２１０に基づいて、復号されたオーディオ情報２１２を供給する。
【００５８】
オーディオ復号器２００は、ビットストリーム２１０を受けて、そのビットストリーム２１０から符号化された周波数領域オーディオ表現２２２を抽出するように構成される任意のビットストリーム・ペイロード・デフォーマッタ２２０を含む。例えば、ビットストリーム・ペイロード・デフォーマッタ２２０は、ビットストリーム２１０から、例えばスペクトル値の最上位ビットプレーン値ｍを示している算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」や、周波数領域オーディオ表現のスペクトル値ａの下位ビットプレーンの内容を示しているコードワード「ａｃｏｄ＿ｒ」のような算術符号化されたスペクトルデータを抽出するように構成されうる。このように、符号化された周波数領域オーディオ表現２２２は、スペクトル値の算術符号化された表現を構成する（または含む）。ビットストリーム・ペイロード・デフォーマッタ２２０は、図２に示されていないが、ビットストリーム付加的制御情報から抽出するように更に構成される。加えて、ビットストリーム・ペイロード・デフォーマッタは、算術リセットフラグまたは「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」とも呼ばれる状態リセット情報２２４をビットストリーム２１０から得るように任意選択で構成される。
【００５９】
オーディオ復号器２００は、「スペクトルノイズレス復号器」とも呼ばれる算術復号器２３０を含む。算術復号器２３０は、符号化された周波数領域オーディオ表現２２０、および、任意選択で、状態リセット情報２２４を受けるように構成される。算術復号器２３０は、スペクトル値の復号された表現を含みうる復号された周波数領域オーディオ表現２３２を供給するようにも構成される。例えば、復号された周波数領域オーディオ表現２３２は、符号化された周波数領域オーディオ表現２２０によって示されるスペクトル値の復号された表現を含みうる。
【００６０】
オーディオ復号器２００はまた、復号された周波数領域オーディオ表現２３２を受けて、それに基づいて、逆量子化および再スケールされた周波数領域オーディオ表現２４２を供給するように構成される任意の逆量子化器／リスケーラ（ｒｅｓｃａｌｅｒ）２４０を含む。
【００６１】
オーディオ復号器２００は、逆量子化および再スケールされた周波数領域オーディオ表現２４２を受けて、それに基づいて、逆量子化および再スケールされた周波数領域オーディオ表現２４２の前処理されたバージョン２５２を供給するように構成される任意のスペクトル前処理器２５０を更に含む。オーディオ復号器２００はまた、「信号変換器」とも呼ばれる周波数領域時間領域信号変換器２６０を含む。信号変換器２６０は、逆量子化および再スケールされた周波数領域オーディオ表現２４２の前処理されたバージョン２５２（または、代わりに、逆量子化および再スケールされた周波数領域オーディオ表現２４２または復号化周波数領域オーディオ表現２３２）を受けて、それに基づいて、オーディオ情報の時間領域表現２６２を供給するように構成される。周波数領域時間領域信号変換器２６０は、例えば、逆修正離散コサイン変換（ＩＭＤＣＴ）および適当な窓掛け処理（ｗｉｎｄｏｗｉｎｇ）（ならびに、例えばオーバーラップ加算（ｏｖｅｒｌａｐ―ａｎｄ―ａｄｄ）のような他の補助機能）を実行するための変換器を含みうる。
【００６２】
オーディオ復号器２００は、オーディオ情報の時間領域表現２６２を受けて、時間領域後処理を使用して、復号されたオーディオ情報２１２を得るように構成される任意の時間領域後処理器２７０を更に含みうる。しかし、後処理が省略される場合、時間領域表現２６２は、復号されたオーディオ情報２１２と同一でありえる。
【００６３】
逆量子化器／リスケーラ２４０、スペクトル前処理器２５０、周波数領域時間領域信号変換器２６０、および時間領域後処理器２７０が、ビットストリーム・ペイロード・デフォーマッタ２２０によってビットストリーム２１０から抽出される制御情報に依存して制御されうる点にここで留意されなければならない。
【００６４】
オーディオ復号器２００の全体の機能を要約すると、復号された周波数領域オーディオ表現２３２、例えば符号化されたオーディオ情報のオーディオフレームと関連したスペクトル値のセットは、算術復号器２３０を使用して、符号化された周波数領域表現２２２に基づいて、得られうる。次に、ＭＤＣＴ係数でありえる例えば１０２４個のスペクトル値のセットは、逆量子化されて、再スケールされて、前処理される。したがって、スペクトル値（例えば１０２４個のＭＤＣＴ係数）の逆量子化され、再スケールされ、スペクトルで前処理されたセットは、得られる。その後、オーディオフレームの時間領域表現は、周波数領域値（例えばＭＤＣＴ係数）の逆量子化され、再スケールされ、スペクトルで前処理されたセットから得られる。したがって、オーディオフレームの時間領域表現は、得られる。一定のオーディオフレームの時間領域表現は、前および／または後のオーディオフレームの時間領域表現と組み合わされうる。例えば、続くオーディオフレームの時間領域表現間のオーバーラップ加算は、隣接したオーディオフレームの時間領域表現間の遷移をスムーズにするために、そして、エイリアシング除去を得るために、実行されうる。復号された時間周波数領域オーディオ表現２３２に基づいて、復号されたオーディオ情報２１２の再構成に関する詳細については、例えば、詳細な議論が与えられる国際規格ＩＳＯ／ＩＥＣ  １４４９６―３、パート３、サブパート４が参照される。しかしながら、他のより精巧なオーバーラップおよびエイリアシング除去方式は、使用されうる。
【００６５】
以下に、算術復号器２３０に関するいくつかの詳細について説明する。算術復号器２３０は、最上位ビットプレーン値ｍを示している算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を受けるように構成される最上位ビットプレーン決定器２８４を含む。最上位ビットプレーン決定器２８４は、算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」から最上位ビットプレーン値ｍを得るための複数の６４個の累積度数分布表を含んでいるセットから、累積度数分布表を使用するように構成されうる。
【００６６】
最上位ビットプレーン決定器２８４は、コードワードａｃｏｄ＿ｍに基づいて、スペクトル値の最上位ビットプレーンの値２８６を得るように構成される。算術復号器２３０は、スペクトル値の１またはそれ以上の下位ビットプレーンを示している１またはそれ以上のコードワード「ａｃｏｄ＿ｒ」を受けるように構成される下位ビットプレーン決定器２８８を更に含む。したがって、下位ビットプレーン決定器２８８は、１またはそれ以上の下位ビットプレーンの復号された値２９０を供給するように構成される。オーディオ復号器２００はまた、この種の下位ビットプレーンが現在のスペクトル値に利用できる場合に、スペクトル値の最上位ビットプレーンの復号された値２８６、および、スペクトル値の１またはそれ以上の下位ビットプレーンの復号された値２９０を受けるように構成されるビットプレーン結合器２９２を含む。したがって、ビットプレーン結合器２９２は、復号された周波数領域オーディオ表現２３２の一部である復号されたスペクトル値を供給する。当然、算術復号器２３０は、一般的に、オーディオコンテンツの現在のフレームと関連した復号されたスペクトル値のフルセットを得るために複数のスペクトル値を供給するように構成される。
【００６７】
算術復号器２３０は、算術復号器の状態を示している状態インデックス２９８に依存して、６４の累積度数分布表のうちの１つを選択するように構成される累積度数分布表選択器２９６を更に含む。算術復号器２３０は、前に復号されたスペクトル値に依存して算術復号器の状態を追跡するように構成される状態追跡器２９９を更に含む。状態情報は、任意選択で、状態リセット情報２２４に応答して、デフォルト状態情報にリセットされうる。したがって、累積度数分布表選択器２９６は、コードワード「ａｃｏｄ＿ｍ」に依存して、最上位ビットプレーン値ｍの復号化におけるアプリケーションのために、選択された累積度数分布表のインデックス（例えばｐｋｉ）または選択された累積度数分布表自体を供給するように構成される。
【００６８】
オーディオ復号器２００の機能を要約すると、オーディオ復号器２００は、ビットレート効率のよい符号化をされた周波数領域オーディオ表現２２２を受けて、それに基づいて、復号された周波数領域オーディオ表現を得るように構成される。符号化された周波数領域オーディオ表現２２２に基づいて復号された周波数領域オーディオ表現２３２を得るために使用される算術復号器２３０において、隣接したスペクトル値の最上位ビットプレーンの値の異なる組み合わせの確率は、累積度数分布表を適用するように構成される算術復号器２８０を使用することにより利用される。換言すれば、スペクトル値間の統計的依存性は、前に計算された復号されたスペクトル値を見ることによって得られる状態インデックス２９８に依存して、６４の異なる累積度数分布表を含んでいるセットから異なる累積度数分布表を選択することによって活用される。
【００６９】
５．  スペクトルノイズレス符号化のツールについての概要
以下に、例えば算術符号器１７０および算術復号器２３０によって実行される符号化および復号化アルゴリズムに関する詳細について説明する。
【００７０】
復号化アルゴリズムの説明に焦点を合わせる。しかしながら、対応する符号化アルゴリズムが、マッピングが逆にされる復号化アルゴリズムについての教示によって実行できる点に留意されなければならない。
【００７１】
以下で述べられる復号化が、一般的に、後処理され、スケールされ、量子化されたスペクトル値のいわゆる「スペクトルノイズレス符号化」を可能にするために使用される点に留意する必要がある。スペクトルノイズレス符号化は、更に、例えば、エネルギー圧縮時間領域周波数領域変換器によって得られる量子化されたスペクトルの冗長性を更に削減するために、オーディオ符号化／復号化構想において使用される。
【００７２】
本発明の実施形態において使用されるスペクトルノイズレス符号化方式は、動的に適合されるコンテキストと関連した算術符号化に基づく。ノイズレス符号化は、（元のまたは符号化された表現の）量子化されたスペクトル値によって供給されて、例えば、複数の前に復号された隣接したスペクトル値から得られたコンテキストに依存する累積度数分布表を使用する。ここで、時間および周波数の両方における相隣関係は、図４にて示したように考慮される。（後に説明される）累積度数分布表は、可変長２進コードを生成するために算術符号器によって、そして、可変長２進コードから、復号された値を得るために算術復号器によって、使用される。
【００７３】
例えば、算術符号器１７０は、各確率に依存して、シンボルの一定のセットのための２進コードを生成する。２進コードは、シンボルのセットがある確率区間（ｐｒｏｂａｂｉｌｉｔｙ  ｉｎｔｅｒｖａｌ）をコードワードにマップすることによって生成される。
【００７４】
以下に、スペクトルノイズレス符号化のツールの他の短い概要が与えられる。スペクトルノイズレス符号化は、量子化されたスペクトルの冗長性を更に削減するために使用される。スペクトルノイズレス符号化方式は、動的に適合されるコンテキストと関連した算術符号化に基づく。ノイズレス符号化は、量子化されたスペクトル値によって供給されて、例えば７つの前に復号された隣接したスペクトル値から得られたコンテキストに依存する累積度数分布表を使用する。
【００７５】
ここで、時間および周波数の両方における相隣関係は、図４に示したように考慮される。累積度数分布表は、可変長２進コードを生成するために、算術符号器により用いられる。
【００７６】
算術符号器は、シンボルおよびそれらの各確率の一定のセットのための２進コードを生成する。その２進コードは、シンボルのセットがある確率区間をコードワードにマップすることによって生成される。
【００７７】
６．  復号処理
６．１  復号処理概要
以下に、スペクトル値を復号する処理の概要が、複数のスペクトル値を復号する処理の仮プログラム符号表現を示す図３を参照にして与えられる。
【００７８】
複数のスペクトル値を復号する処理は、コンテキストの初期化３１０を含む。コンテキストの初期化３１０は、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（ｌｇ）」を使用して、前のコンテキストからの現在のコンテキストの導出を含む。前のコンテキストからの現在のコンテキストの導出は、コンテキストのリセットを含みうる。コンテキストのリセットおよび前のコンテキストからの現在のコンテキストの導出については、後述する。
【００７９】
複数のスペクトル値の復号化はまた、スペクトル値復号化３１２、および、コンテキスト更新が後述する関数「Ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ａ，ｉ，ｌｇ）」によって実行されるコンテキスト更新３１４の繰り返しを含む。スペクトル値復号化３１２およびコンテキスト更新３１４はｌｇ回繰り返される。ここで、ｌｇは、（例えばオーディオフレームに関して）復号されるスペクトル値の数を示す。スペクトル値復号化３１２は、コンテキスト値計算３１２ａ、最上位ビットプレーン復号化３１２ｂ、および、下位ビットプレーン加算３１２ｃを含む。
【００８０】
状態値計算３１２ａは、関数が第１の状態値ｓを返す関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｉ，ｌｇ，ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ，Ｎ／２）」を使用した第１の状態値ｓの計算を含む。状態値計算３１２ａはまた、レベル値「ｌｅｖ０」の、そして、レベル値「ｌｅｖ」の計算を含む。そして、レベル値「ｌｅｖ０」、「ｌｅｖ」は、２４ビットだけ右に第１の状態値ｓをシフトすることによって得られる。状態値計算３１２ａはまた、参照番号３１２ａで図３に示された式による第２の状態値ｔの計算を含む。
【００８１】
最上位ビットプレーン復号化３１２ｂは、復号化アルゴリズム３１２ｂａの反復実行を含む。ここで、変数ｊは、アルゴリズム３１２ｂａの第１の実行の前に０に初期化される。
【００８２】
アルゴリズム３１２ｂａは、後述する関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」を使用して、第２の状態値ｔに依存した、そして、更に、レベル値「ｌｅｖ」およびｌｅｖ０に依存した、（また、累積度数分布表インデックスとしても役立つ）状態インデックス「ｐｋｉ」の計算を含む。アルゴリズム３１２ｂａはまた、状態インデックスｐｋｉに依存した累積度数分布表の選択を含む。ここで、変数「ｃｕｍ＿ｆｒｅｑ」は、状態インデックスｐｋｉに依存して、６４の累積度数分布表のうちの１つの先頭アドレスにセットされうる。また、変数「ｃｆｌ」は、例えば、アルファベットにおけるシンボル数、すなわち復号できる異なる数に等しい選択された累積度数分布表の長さに初期化されうる。最上位ビットプレーン値ｍの復号化に利用できる「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ＝０］［９］」から「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ＝６３］［９］」までのすべての累積度数分布表の長さは、８つの異なる最上位ビットプレーン値およびエスケープシンボルが復号できるので、９である。その後、最上位ビットプレーン値ｍは、（変数「ｃｕｍ＿ｆｒｅｑ」および変数「ｃｆｌ」によって示された）選択された累積度数分布表を考慮に入れて、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を実行することによって得ることができる。最上位ビットプレーン値ｍを得るときに、ビットストリーム２１０の「ａｃｏｄ＿ｍ」と呼ばれるビットは、評価されうる（例えば図６ｇ参照）。
【００８３】
アルゴリズム３１２ｂａはまた、最上位ビットプレーン値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」と等しいかどうかをチェックすることを含む。最上位ビットプレーン値ｍが、算術エスケープシンボルと等しくない場合、アルゴリズム３１２ｂａは、終了され（「ｂｒｅａｋ」条件）、従って、アルゴリズム３１２ｂａの残りの命令は、スキップされる。したがって、処理の実行は、最上位ビットプレーン値ｍと等しいスペクトル値の設定（命令「ａ＝ｍ」）によって継続される。対照的に、復号された最上位ビットプレーン値ｍが、算術エスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」と同一である場合、レベル値「ｌｅｖ」は１増やされる。上述のように、復号された最上位ビットプレーン値ｍが算術エスケープシンボルと異なるまで、アルゴリズム３１２ｂａは、繰り返される。
【００８４】
最上位ビットプレーン復号化が完了する、すなわち、算術エスケープシンボルとは異なる最上位ビットプレーン値ｍが復号されるとすぐに、スペクトル値変数「ａ」は、最上位ビットプレーン値ｍに等しくなるようにセットされる。その後、下位ビットプレーンは、例えば、図３の参照番号３１２ｃに示すように得られる。スペクトル値の下位ビットプレーンごとに、２つのバイナリ値の中の１つは、復号される。例えば、下位ビットプレーン値ｒは、得られる。その後、スペクトル値変数「ａ」は、スペクトル値変数「ａ」の内容を左に１だけシフトすることによって、そして、現在復号された下位ビットプレーン値ｒを最下位ビットとして付け加えることによって、更新される。しかし、下位ビットプレーンの値を得るための構想が、本発明には特に関連しない点に留意する必要がある。いくつかの実施形態では、いかなる下位ビットプレーンの復号化も、省略されさえしうる。あるいは、異なる復号化アルゴリズムは、この目的のために使用されうる。
【００８５】
６．２  図４の復号順序
以下に、スペクトル値の復号順序について説明する。
【００８６】
スペクトル係数は、最低周波数係数から始まって、最高周波数係数まで進んで、ノイズレスに符号化されて、（例えばビットストリームにおいて）送信される。
【００８７】
（例えば、ＩＳＯ／ＩＥＣ  １４４９６、パート３、サブパート４において述べられるように、修正離散コサイン変換を使用して得られる）先進的音響符号化からの係数は、「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」と呼ばれている配列に格納され、そして、ノイズレス符号化コードワード（例えばａｃｏｄ＿ｍ、ａｃｏｄ＿ｒ）の送信の順序は、それらがその配列に受けて格納された順序で復号されるときに、「ｂｉｎ」（周波数インデックス）が最も早く増加するインデックスであり、「ｇ」が最も遅く増加するインデックスであるようになる。
【００８８】
低い周波数と関連したスペクトル係数は、高い周波数と関連したスペクトル係数の前に符号化される。
【００８９】
変換符号化励振（ｔｃｘ）からの係数は、配列ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］に直接格納され、そして、ノイズレス符号化コードワードの送信の順序は、それらがその配列に受けて格納された順序で復号されるときに、「ｂｉｎ」が最も早く増加するインデックスであり、「ｗｉｎ」が最も遅く増加するインデックスであるようになる。換言すれば、スペクトル値が音声符号器の線形予測フィルタの変換符号化励振を示す場合、スペクトル値ａは、変換符号化励振の隣接し増加する周波数と関連している。
【００９０】
低い周波数と関連したスペクトル係数は、高い周波数と関連したスペクトル係数の前に符号化される。
【００９１】
特に、オーディオ復号器２００は、周波数領域時間領域信号変換を使用した時間領域オーディオ信号表現の「直接の」生成、および、周波数領域時間領域復号器と、周波数領域時間領域信号変換器の出力によって励振された線形予測フィルタの両方を使用したオーディオ信号表現の「間接的」供給の両方のために、算術復号器２３０によって供給される、復号された周波数領域オーディオ表現２３２を適用するように構成されうる。
【００９２】
換言すれば、その機能についてここで詳細に述べられる算術復号器２００は、周波数領域において符号化されたオーディオコンテンツの時間周波数領域表現のスペクトル値の復号化に、そして、線形予測領域に符号化された音声信号を復号するように適用された線形予測フィルタのために刺激信号の時間周波数領域表現の供給に、よく適している。このように、算術復号器は、周波数領域符号化されたオーディオコンテンツおよび線形予測周波数領域符号化されたオーディオコンテンツの両方を処理できるオーディオ復号器における使用によく適する（変換符号化励振線形予測領域モード）。
【００９３】
６．３．  図５ａおよび図５ｂのコンテキスト初期化
以下に、ステップ３１０において実行される（「コンテキストマッピング」とも示される）コンテキスト初期化について説明する。
【００９４】
コンテキスト初期化は、図５ａに示されるアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」による過去のコンテキストと現在のコンテキストとの間のマッピングを含む。図に示すように、現在のコンテキストは、２の第１の次元とｎ＿ｃｏｎｔｅｘｔの第２の次元を有する配列の形をとるグローバル変数ｑ［２］［ｎ＿ｃｏｎｔｅｘｔ］に格納される。過去のコンテキストは、ｎ＿ｃｏｎｔｅｘｔの次元を有する表の形をとる変数ｑｓ［ｎ＿ｃｏｎｔｅｘｔ］に格納されたａである。変数「ｐｒｅｖｉｏｕｓ＿ｌｇ」は、過去のコンテキストのスペクトル値の数を示す。
【００９５】
変数「ｌｇ」は、フレームにおいて復号するスペクトル係数の数を示す。変数「ｐｒｅｖｉｏｕｓ＿ｌｇ」は、前のフレームのスペクトル線の前の数を示す。
【００９６】
コンテキストのマッピングは、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」によって実行されうる。現在の（例えば周波数領域符号化された）オーディオフレームと関連したスペクトル値の数が、ｉ＝０〜ｉ＝ｌｇ−１に関する前のオーディオフレームと関連したスペクトル値の数と同一である場合、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」が、現在のコンテキスト配列ｑのエントリｑ［０］［ｉ］を、過去のコンテキスト配列ｑｓの値ｑｓ［ｉ］にセットする点にここで留意する必要がある。
【００９７】
しかし、現在のオーディオフレームと関連したスペクトル値の数が、前のオーディオフレームと関連したスペクトル値の数とは異なる場合、より複雑なマッピングが実行される。しかし、この場合におけるマッピングに関する詳細は、特に本発明の重要な着想とは関連せず、詳細に関しては図５ａの仮プログラムコードが参照される。
【００９８】
６．４  図５ｂおよび図５ｃの状態値計算
以下に、状態値計算３１２ａについて、更に詳細に説明する。
【００９９】
（図３に示すように）第１の状態値ｓが関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｉ，ｌｇ，ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ，Ｎ／２）」の戻り値として得ることができる点に留意する必要がある。そして、それの仮プログラムコード表現は、図５ｂおよび図５ｃに示される。
【０１００】
状態値の計算に関して、状態評価のために使用されるコンテキストを示す図４も参照される。図４は、時間および周波数に関して、スペクトル値の二次元の表現を示す。横座標４１０は、時間を示し、縦座標４１２は、周波数を示す。図４に示すように、復号するためのスペクトル値４２０は、時間インデックスｔ０および周波数インデックスｉと関連している。図に示すように、時間インデックスｔ０に関して、周波数インデックスｉ−１、ｉ−２、およびｉ−３を有する組は、周波数インデックスｉを有するスペクトル値４２０が復号されることになっている時間にすでに復号される。図４から分かるように、スペクトル値４２０が復号される前に、時間インデックスｔ０および周波数インデックスｉ−１を有するスペクトル値４３０はすでに復号され、スペクトル値４３０は、スペクトル値４２０の復号化のために使用されるコンテキストのために考慮される。同様に、スペクトル値４２０が復号される前に、時間インデックスｔ０および周波数インデックスｉ−２を有するスペクトル値４３４はすでに復号され、スペクトル値４３４は、スペクトル値４２０を復号するために使用されるコンテキストのために考慮される。同様に、スペクトル値４２０が復号される前に、時間インデックスｔ−１およびｉ−２の周波数インデックスを有するスペクトル値４４０、時間インデックスｔ−１および周波数インデックスｉ−１を有するスペクトル値４４４、時間インデックスｔ−１および周波数インデックスｉを有するスペクトル値４４８、時間インデックスｔ−１および周波数インデックスｉ＋１を有するスペクトル値４５２、並びに、時間インデックスｔ−１および周波数インデックスｉ＋２を有するスペクトル値４５６はすでに復号されて、スペクトル値４２０を復号するために使用されるコンテキストの決定に関して考慮される。スペクトル値４２０がコンテキストのために復号されて、考慮される時間にすでに復号されたスペクトル値（係数）は、陰影のついた正方形によって示される。対照的に、破線を有する正方形によって示される（スペクトル値４２０が復号される時間に）すでに復号されたいくつかの他のスペクトル値、および、（スペクトル値４２０が復号される時に）まだ復号されておらず、破線を有する円によって示される他のスペクトル値は、スペクトル値４２０を復号するためのコンテキストを決定するために使用されない。
【０１０１】
しかしながら、スペクトル値４２０を復号するためのコンテキストの「正規の」（または「通常の」）計算に使用されない、これらのスペクトル値のいくつかは、それにもかかわらず、個々に、または、まとまって、それらのマグニチュードに関して所定の条件を満たす複数の前に復号された隣接したスペクトル値の検出のために評価されうる点に留意する必要がある。
【０１０２】
ここで、仮プログラムコードの形で関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の機能を示す図５ｂおよび図５ｃを参照すると、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」により実行される第１のコンテキスト値「ｓ」の計算に関して、より詳細に説明する。
【０１０３】
その関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」が入力変数として、復号するスペクトル値のインデックスｉを受けることに留意する必要がある。インデックスｉは、一般的に周波数インデックスである。入力変数ｌｇは、（現在のオーディオフレームに関して）予想された量子化係数の（合計）数を示す。変数Ｎは、変換のラインの数を示す。フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテキストがリセットされるべきかどうかを示す。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」は、出力値として、連結された状態インデックスｓおよび予測されたビットプレーンレベルｌｅｖ０を示す変数「ｔ」を供給する。
【０１０４】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」は、整数変数ａ０、ｃ０、ｃ１、ｃ２、ｃ３、ｃ４、ｃ５、ｃ６、ｌｅｖ０、および「ｒｅｇｉｏｎ」を使用する。
【０１０５】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」は、主機能ブロックとして、第１の算術リセット処理５１０、複数の前に復号された隣接した０のスペクトル値のグループの検出５１２、第１の変数設定５１４、第２の変数設定５１６、レベル適合５１８、領域値設定５２０、レベル適合５２２、レベル限定５２４、算術リセット処理５２６、第３の変数設定５２８、第４の変数設定５３０、第５の変数設定５３２、レベル適合５３４および選択的な戻り値計算５３６を含む。
【０１０６】
第１の算術リセット処理５１０において、算術リセットフラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」がセットされているかどうかが、復号するスペクトル値のインデックスが０に等しいかどうかと共にチェックされる。この場合、０のコンテキスト値が返され、その関数は終了される。
【０１０７】
算術リセットフラグが非アクティブ（ｉｎａｃｔｉｖｅ）であり、かつ、復号するスペクトル値のインデックスｉが０と異なる場合にのみ実行される複数の前に復号された０のスペクトル値のグループの検出５１２において、参照番号５１２ａに示すように、「ｆｌａｇ」と名づけた変数は１に初期化され、そして、参照番号５１２ｂに示すように、評価されることになっているスペクトル値の領域が決定される。その後、参照番号５１２ｂに示すように決定されるスペクトル値の領域は、参照番号５１２ｃに示すように評価される。前に復号された０のスペクトル値の十分な領域があることが分かった場合、参照番号５１２ｄに示すように、１のコンテキスト値が返される。例えば、復号されるスペクトル値のインデックスｉが最大周波数インデックスｌｇ−１の近くでなければ、上の周波数インデックス境界「ｌｉｍ＿ｍａｘ」は、ｉ＋６にセットされる。その場合には、参照番号５１２ｂに示すように、上の周波数インデックス境界の特別な設定がなされる。さらに、復号するスペクトル値のインデックスｉが０に近くなければ（ｉ＋ｌｉｍ＿ｍｉｎ＜０）、下の周波数インデックス境界「ｌｉｍ＿ｍｉｎ」は−５にセットされる。その場合には、参照番号５１２ｂに示すように、下の周波数インデックス境界ｌｉｍ＿ｍｉｎの特別な計算は実行される。ステップ５１２ｂにおいて決定されたスペクトル値の領域を評価するときに、評価は、まず、下の周波数インデックス境界ｌｉｍ＿ｍｉｎと０との間の負の周波数インデックスｋのために実行される。ｌｉｍ＿ｍｉｎと０との間の周波数インデックスｋに関して、コンテキスト値のｑ［０］［ｋ］．ｃとｑ［１］［ｋ］．ｃのうちの少なくとも１つが０と等しいかどうかを検証される。しかし、コンテキスト値ｑ［０］［ｋ］．ｃおよびｑ［１］［ｋ］．ｃの両方が、ｌｉｍ＿ｍｉｎと０との間の周波数インデックスｋに関して０と異なる場合、０のスペクトル値の十分なグループがないことが結論づけられ、評価５１２ｃは終了される。その後、０とｌｉｍ＿ｍａｘの間の周波数インデックスに関して、コンテキスト値ｑ［０］［ｋ］．ｃは、評価される。０とｌｉｍ＿ｍａｘの間の周波数インデックスのいずれかに関してコンテキスト値ｑ［０］［ｋ］．ｃのいずれかが０とは異なることを発見する場合、前に復号された０のスペクトル値の十分なグループがないことが結論づけられ、評価５１２ｃは、終了される。しかし、ｌｉｍ＿ｍｉｎと０との間の全ての周波数インデックスｋに関して、０に等しい少なくとも１つのコンテキスト値ｑ［０］［ｋ］．ｃまたはｑ［１］［ｋ］．ｃがあることが分かった場合、および、０とｌｉｍ＿ｍａｘとの間の全ての周波数インデックスｋに関して、０のコンテキスト値ｑ［０］［ｋ］．ｃがある場合、前に復号された０のスペクトル値の十分なグループがあると結論づけられる。したがって、この場合、１というコンテキスト値が、更なる計算なしで、この条件を示すために返される。換言すれば、０の値を有する複数のコンテキスト値ｑ［０］［ｋ］．ｃ、ｑ［１］［ｋ］．ｃの十分なグループが確認される場合、計算５１４、５１６、５１８、５２０、５２２、５２４、５２６、５２８、５３０、５３２、５３４、５３６はスキップされる。換言すれば、コンテキスト状態を示す返されたコンテキスト値は、所定の条件が満たされていることの検出に応答して、前に復号されたスペクトル値から独立して、決定される。
【０１０８】
そうでない場合、すなわち、０であるコンテキスト値［ｑ］［０］［ｋ］．ｃ、［ｑ］［１］［ｋ］．ｃの十分なグループがない場合、計算５１４、５１６、５１８、５２０、５２２、５２４、５２６、５２８、５３０、５３２、５３４、５３６の少なくともいくつかは、実行される。
【０１０９】
復号されるスペクトル値のインデックスｉが１より小さい場合（およびその場合にだけ）、選択的に実行される第１の変数設定５１４において、変数ａ０は、コンテキストに値ｑ［１］［ｉ−１］をとるように初期化され、変数ｃ０は、変数ａ０の絶対値をとるように初期化される。変数「ｌｅｖ０」は、０の値をとるように初期化される。その後、変数ａ０が比較的大きい絶対値を含む、すなわち、−４より小さい、または４より大きいまたは４に等しい場合、変数「ｌｅｖ０」およびｃ０は増加する。変数ａ０の値が、右へのシフト操作によって−４と３との間の範囲に持ってこられるまで、変数「ｌｅｖ０」およびｃ０の増加は、反復して実行される（ステップ５１４ｂ）。
【０１１０】
その後、変数ｃ０および「ｌｅｖ０」は、最大値７と３に、それぞれ、制限される（ステップ５１４ｃ）。
【０１１１】
復号されるスペクトル値のインデックスｉが１に等しく、かつ、算術リセットフラグ（「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」）がアクティブである場合、変数ｃ０およびｌｅｖ０に基づいてのみ計算されるコンテキスト値は返される（ステップ５１４ｄ）。したがって、復号するスペクトル値と同じ時間インデックスを有し、かつ、復号されるスペクトル値の周波数インデックスｉより１だけ小さい周波数インデックスを有する唯一の前に復号されたスペクトル値だけが、コンテキスト計算のために考慮される（ステップ５１４ｄ）。そうでない場合、すなわち、算術リセット機能がない場合、変数ｃ４は初期化される（ステップ５１４ｅ）。
【０１１２】
結論として、第１の変数設定５１４において、変数ｃ０および「ｌｅｖ０」は、現在復号されるスペクトル値と同じフレームのために、そして、前のスペクトルビンｉ−１のために復号された、前に復号されたスペクトル値に依存して、初期化される。変数ｃ４は、（時間インデックスｔ−１を有する）前のオーディオフレームのために復号され、そして、現在復号されるスペクトル値と関連した周波数より（例えば、１周波数ビンだけ）低い周波数を有する前に復号されたスペクトル値に依存して初期化される。
【０１１３】
現在復号されるスペクトル値の周波数インデックスが１より大きい場合（およびその場合だけ）選択的に実行される第２の変数設定５１６は、変数ｃ１とｃ６の初期化、および変数ｌｅｖ０の更新を含む。変数ｃ１は、周波数が現在復号されるスペクトル値の周波数より（例えば２周波数ビンだけ）小さい、現在のオーディオフレームの前に復号されたスペクトル値と関連したコンテキスト値ｑ［１］［ｉ−２］．ｃに依存して更新される。同様に、変数ｃ６は、その関連した周波数は、現在復号されるスペクトル値と関連した周波数より（例えば２周波数ビンだけ）小さい、（時間インデックスｔ−１を有する）前フレームの前に復号されたスペクトル値を示す、コンテキスト値ｑ［０］［ｉ−２］．ｃに依存して初期化される。加えて、レベル変数「ｌｅｖ０」は、ｑ［１］［ｉ−２］．ｌがｌｅｖ０より大きい場合に、それの関連した周波数が現在復号されるスペクトル値と関連した周波数より（例えば２周波数ビンだけ）小さい、現在フレームの前に復号されたスペクトル値と関連したレベル値ｑ［１］［ｉ−２］．ｌにセットされる。
【０１１４】
復号されるスペクトル値のインデックスｉが２より大きい場合（およびその場合にだけ）、レベル適合５１８および領域値設定５２０は、選択的に実行される。レベル適合５１８において、それの関連した周波数が現在復号されるスペクトル値と関連した周波数より（例えば３周波数ビンだけ）小さい、現在フレームの前に復号されたスペクトル値と関連するレベル値ｑ［１］［ｉ−３］．ｌが、レベル値ｌｅｖ０より大きい場合、レベル変数「ｌｅｖ０」は、ｑ［１］［ｉ−３］．ｌの値まで増やされる。
【０１１５】
0005589084.tif 000002
【０１１６】
現在復号されるスペクトル値が３より大きいスペクトルインデックスを含む場合（およびその場合だけ）、更なるレベル適合５２２は実行される。この場合において、現在復号されるスペクトル値と関連した周波数より例えば４周波数ビンだけ小さい周波数と関連した、現在のフレームの前に復号されたスペクトル値と関連するレベル値ｑ［ｉ］［ｉ−４］．ｌが、現在のレベル「ｌｅｖ０」である場合には、レベル変数「ｌｅｖ０」は、増加する（値ｑ［１］［ｉ−４］．ｌにセットされる）（ステップ５２２）。レベル変数「ｌｅｖ０」は、３である最大値に制限される（ステップ５２４）。
【０１１７】
算術リセット条件が検出され、現在復号されるスペクトル値のインデックスｉが１より大きい場合、状態値は、領域変数「ｒｅｇｉｏｎ」に依存するのと同様に、変数ｃ０、ｃ１、ｌｅｖ０に依存して返される（ステップ５２６）。したがって、算術リセット条件が与えられる場合、前のフレームの前に復号されたスペクトル値は、考慮に入れなくされる。
【０１１８】
第３の変数設定５２８において、変数ｃ２は、前に復号されたスペクトル値が現在復号されるスペクトル値と同じ周波数と関連している、（時間インデックスｔ−１を有する）前のオーディオフレームの前に復号されたスペクトル値と関連するコンテキスト値ｑ［０］［ｉ］．ｃにセットされる。
【０１１９】
第４の変数設定５３０において、変数ｃ３は、現在復号されるスペクトル値が可能な限り高い周波数インデックスｌｇ−１と関連していない場合、周波数インデックスｉ＋１を有する前のオーディオフレームの前に復号されたスペクトル値と関連するコンテキスト値ｑ［０］［ｉ＋１］．ｃにセットされる。
【０１２０】
第５の変数設定５３２において、変数ｃ５は、現在復号されるスペクトル値の周波数インデックスｉが最大周波数インデックス値にそれほど近くない（すなわち、周波数インデックス値ｌｇ−２またはｌｇ−１をとらない）場合、周波数インデックスｉ＋２を有する前のオーディオフレームの前に復号されたスペクトル値と関連するコンテキスト値ｑ［０］［ｉ＋１］．ｃにセットされる。
【０１２１】
周波数インデックスｉが０に等しい場合（すなわち、現在復号されるスペクトル値が最低スペクトル値である場合）、レベル変数「ｌｅｖ０」の更なる適合は実行される。この場合において、変数ｃ２またはｃ３が３という値をとる場合、レベル変数「ｌｅｖ０」は、０から１に増加する。それは、現在符号化されるスペクトル値と関連した周波数と比較して、同一周波数またはより高い周波数と関連している、前のオーディオフレームの前に復号されたスペクトル値が、比較的大きい値をとることを示す。
【０１２２】
選択的な戻り値計算５３６において、戻り値は、現在復号されるスペクトル値のインデックスｉが、値０、１、またはより大きい値をとるかどうかに依存して計算される。インデックスｉが、０の値をとる場合、参照番号５３６ａで示されるように、戻り値は、変数ｃ２、ｃ３、ｃ５、およびｌｅｖ０に依存して計算される。インデックスｉが１の値をとる場合、参照番号５３６ｂに示すように、戻り値は、変数ｃ０、ｃ２、ｃ３、ｃ４、ｃ５、および「ｌｅｖ０」に依存して計算される。インデックスｉが０または１とは異なる値をとる場合、戻り値は、変数ｃ０、ｃ２、ｃ３、ｃ４、ｃ１、ｃ５、ｃ６、「ｒｅｇｉｏｎ」およびｌｅｖ０に依存して計算される（参照番号５３６ｃ）。
【０１２３】
上記を要約すると、コンテキスト値計算「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」は、複数の前に復号された０のスペクトル値（または少なくとも、十分に小さいスペクトル値）のグループの検出５１２を含む。前に復号された０のスペクトル値の十分なグループが見つかった場合、特別なコンテキストの存在は、戻り値を１に設定することによって示される。そうでない場合、コンテキスト値計算は、実行される。一般に、コンテキスト値計算において、インデックス値ｉは、前に復号されたスペクトル値がいくつ評価されるべきかを決定するために評価されると言うことができる。例えば、現在復号されるスペクトル値の周波数インデックスｉが下の境界（例えば０）の近くに、または、上の境界（例えばｌｇ−１）の近くにある場合、評価された前に復号されたスペクトル値の数は減らされる。加えて、現在復号されるスペクトル値の周波数インデックスｉが、最小値から十分に離れている場合であっても、異なるスペクトル領域は、領域値設定５２０によって区別される。したがって、異なるスペクトル領域（例えば、第１の、低周波スペクトル領域、第２の、中間スペクトル領域、および第３の、高周波スペクトル領域）の異なる統計学的性質は、考慮に入れられる。戻り値として算出されるコンテキスト値は、返されたコンテキスト値が、現在復号されるスペクトル値が第１の既定周波数領域にあるか、または、第２の既定周波数領域にあるか（またはその他の既定周波数領域にあるか）に依存するように、変数「ｒｅｇｉｏｎ」に依存する。
【０１２４】
６．５  マッピングルール選択
以下に、マッピングルールの選択、例えばシンボルコードへのコード値のマッピングを示す累積度数分布表について説明する。マッピングルールの選択は、状態値ｓまたはｔによって示されるコンテキスト状態に依存してなされる。
【０１２５】
６．５．１  図５ｄのアルゴリズムを使用したマッピングルール選択
以下に、図５ｄに記載の関数「ｇｅｔ＿ｐｋ」を使用したマッピングルールの選択について説明する。関数「ｇｅｔ＿ｐｋ」が、図３のアルゴリズムのサブアルゴリズム３１２ｂａの「ｐｋｉ」の値を得るために実行されうる点に留意する必要がある。このように、関数「ｇｅｔ＿ｐｋ」は、図３のアルゴリズムの関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」に代わりうる。
【０１２６】
また、図５ｄの関数「ｇｅｔ＿ｐｋ」が、図１７（１）と図１７（２）のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」、および図１８のテーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ［２２５］」を評価しうる点に留意すべきである。
【０１２７】
関数「ｇｅｔ＿ｐｋ」は、入力変数として、図３の変数「ｔ」と図３の変数「ｌｅｖ」、「ｌｅｖ０」の組み合わせによって得られうる状態値ｓを受ける。関数「ｇｅｔ＿ｐｋ」はまた、戻り値として、マッピングルールまたは累積度数分布表を示す変数「ｐｋｉ」の値を戻すように構成される。関数「ｇｅｔ＿ｐｋ」は、状態値ｓをマッピングルールインデックス値「ｐｋｉ」にマップするように構成される。
【０１２８】
関数「ｇｅｔ＿ｐｋ」は、第１のテーブル評価５４０、および第２のテーブル評価５４４を含む。第１のテーブル評価５４０は、参照番号５４１に示すように、変数ｉ＿ｍｉｎ、ｉ＿ｍａｘおよびｉが初期化される変数初期化５４１を含む。第１のテーブル評価５４０はまた、反復テーブルサーチ５４２を含み、その過程で、状態値ｓと一致するテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリがあるかどうかの決定がなされる。この種の一致が反復テーブルサーチ５４２の間に確認される場合、関数ｇｅｔ＿ｐｋは終了される。ここで、その関数の戻り値は、より詳細に説明されるように、状態値ｓと一致するテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリによって決定される。しかし、状態値ｓとテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリとの間の完全な一致が反復テーブルサーチ５４２の過程で発見されない場合、境界エントリチェック５４３が実行される。
【０１２９】
ここで、第１のテーブル評価５４０の詳細に戻ると、サーチ区間が変数ｉ＿ｍｉｎおよびｉ＿ｍａｘによって定義されることが分かる。条件ｉ＿ｍａｘ−ｉ＿ｍｉｎ＞１が満たされている場合には正当でありえる変数ｉ＿ｍｉｎおよびｉ＿ｍａｘによって定義された区間が十分に大きい限り、反復テーブルサーチ５４２は繰り返される。その後、少なくともおよそ、区間の中央（ｉ＝ｉ＿ｍｉｎ＋（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）／２）を示すために、変数ｉはセットされる。その後、変数ｊは、変数ｉによって示された配列位置で、配列「ａｒｉ＿ｓ＿ｈａｓｈ」で決定される値にセットされる（参照番号５４２）。テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」の各エントリが、テーブルエントリと関連する状態値と、テーブルエントリと関連しているマッピングルールインデックス値の両方を示す点に、ここで留意すべきである。テーブルエントリと関連している状態値は、テーブルエントリの最上位ビット（ビット８〜３１）によって示される。その一方で、マッピングルールインデックス値は、前記テーブルエントリの下位ビット（例えばビット０〜７）によって示される。下の境界ｉ＿ｍｉｎまたは上の境界ｉ＿ｍａｘは、状態値ｓが変数ｉによって参照されるテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］」の最上位の２４ビットによって示された状態値より小さいかどうかに依存して構成される。例えば、状態値ｓがエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］」の最上位の２４ビットによって示された状態値より小さい場合、テーブル区間の上の境界ｉ＿ｍａｘは、値ｉにセットされる。したがって、反復テーブルサーチ５４２の次の反復のためのテーブル区間は、反復テーブルサーチ５４２の現在の反復のために使用されたテーブル区間（ｉ＿ｍｉｎからｉ＿ｍａｘまで）の下半分に制限される。対照的に、状態値ｓがテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］」の最上位の２４ビットによって示された状態値より大きい場合、反復テーブルサーチ５４２の次の反復のためのテーブル区間の下の境界ｉ＿ｍｉｎは、現在のテーブル区間（ｉ＿ｍｉｎとｉ＿ｍａｘとの間）の上半分が、次の反復テーブルサーチのためのテーブル区間として使用されるように、値ｉにセットされる。しかし、状態値ｓがテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］」の最上位の２４ビットによって示された状態値と同一であることが分かった場合、テーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］」の最下位の８ビットによって示されたマッピングルールインデックス値は、関数「ｇｅｔ＿ｐｋ」によって返され、その関数は終了される。
【０１３０】
変数ｉ＿ｍｉｎおよびｉ＿ｍａｘによって定義されたテーブル区間が十分に小さくなるまで、反復テーブルサーチ５４２は繰り返される。
【０１３１】
境界エントリチェック５４３は、反復テーブルサーチ５４２を補うために（任意選択で）実行される。インデックス変数ｉが、反復テーブルサーチ５４２の完了の後、インデックス変数ｉ＿ｍａｘと等しい場合、状態値ｓがテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ＿ｍｉｎ］」の最上位の２４ビットによって示された状態値と等しいかどうかの最終的なチェックがなされて、エントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ＿ｍｉｎ］」の最下位８ビットにより示されたマッピングルールインデックス値は、この場合、関数「ｇｅｔ＿ｐｋ」の結果として、返される。対照的に、インデックス変数ｉがインデックス変数ｉ＿ｍａｘとは異なる場合、状態値ｓがテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ＿ｍａｘ］」の最上位の２４ビットによって示された状態値と等しいかどうかに関してのチェックが実行されて、前記テーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［ｉ＿ｍａｘ］」の最下位８ビットにより示されたマッピングルールインデックス値は、この場合、関数「ｇｅｔ＿ｐｋ」の戻り値として返される。
【０１３２】
しかし、境界エントリチェック５４３は、全体として任意のものとして考慮されうる点に留意する必要がある。
【０１３３】
第１のテーブル評価５４０に続いて、第２のテーブル評価５４４は、「ダイレクトヒット（ｄｉｒｅｃｔ  ｈｉｔ）」が第１のテーブル評価５４０の間に生じない場合、状態値ｓがテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリによって（または、より正確に言うと、その２４の最上位ビットによって）示された状態値のうちの１つと同一であるという点で実行される。
【０１３４】
第２のテーブル評価５４４は、参照番号５４５に示すように、インデックス変数ｉ＿ｍｉｎ、ｉおよびｉ＿ｍａｘが初期化される変数初期化５４５を含む。第２のテーブル評価５４４はまた、反復テーブルサーチ５４６を含み、その過程において、テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」は、状態値ｓと同じ状態値を示すエントリに関してサーチされる。最後に、第２のテーブルサーチ５４４は、戻り値決定５４７を含む。
【０１３５】
0005589084.tif 000003
【０１３６】
両方とも反復テーブルサーチ５４２、５４６を使用する上述のテーブル評価５４０、５４４は、非常に高い計算効率を有する一定の有意な状態の存在のためのテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」および「ａｒｉ＿ｇｓ＿ｈａｓｈ」の検査を可能にする。特に、最も悪い場合でさえ、テーブルアクセス操作の数を相当に小さく保つことができる。テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」および「ａｒｉ＿ｇｓ＿ｈａｓｈ」の数値的順序付けが適当なハッシュ値のサーチの加速を可能にすることが分かっている。加えて、テーブルサイズは、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」および「ａｒｉ＿ｇｓ＿ｈａｓｈ」においてエスケープシンボルが含まれることを要しないように、小さく保たれうる。このように、多数の異なる状態がある場合であっても、効率的なコンテキストハッシュ機構は確立される。第１の段階（第１のテーブル評価５４０）において、ダイレクトヒットのサーチが行われる（ｓ＝＝（ｊ＞＞８））。
【０１３７】
第２の段階（第２のテーブル評価５４４）において、状態値ｓの範囲は、マッピングルールインデックス値にマップされうる。このように、関連したエントリがテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」にある特に有意な状態、および、範囲ベースの処理があるそれほど有意でない状態のバランスのとれた処理は、実行されることができる。したがって、関数「ｇｅｔ＿ｐｋ」は、マッピングルール選択の効率的なインプリメンテーションを構成する。
【０１３８】
更なる詳細のために、周知のプログラム言語Ｃによる表現の関数「ｇｅｔ＿ｐｋ」の機能を示す図５ｄの仮プログラムコードが参照される。
【０１３９】
６．５．２  図５ｅのアルゴリズムを使用したマッピングルール選択
以下に、マッピングルールの選択のための他のアルゴリズムについて、図５ｅを参照して説明する。図５ｅのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」が、入力変数として、コンテキストの状態を示している状態値ｓを受ける点に留意する必要がある。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」は、出力値または戻り値として、マッピングルール（例えば累積度数分布表）を選択するためのインデックスでありえる確率モデルのインデックス「ｐｋｉ」を供給する。
【０１４０】
図５ｅの関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」が、図３の関数「ｖａｌｕｅ＿ｄｅｃｏｄｅ」の関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の機能をとりうる点に留意する必要がある。
【０１４１】
また、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」が、例えば、図２０のテーブルａｒｉ＿ｓ＿ｈａｓｈおよび図１８のテーブルａｒｉ＿ｇｓ＿ｈａｓｈを評価しうることも留意すべきである。
【０１４２】
図５ｅの関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」は、第１のテーブル評価５５０と第２のテーブル評価５６０とを含む。第１のテーブル評価５５０において、線形走査は、前記テーブルのエントリｊ＝ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］を得るために、テーブルａｒｉ＿ｓ＿ｈａｓｈによってなされる。テーブルａｒｉ＿ｓ＿ｈａｓｈのテーブルエントリｊ＝ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］の最上位の２４ビットにより示された状態値が、状態値ｓと等しい場合、前記確認されたテーブルエントリｊ＝ａｒｉ＿ｓ＿ｈａｓｈ［ｉ］の最下位８ビットにより示されたマッピングルールインデックス値「ｐｋｉ」は、返されて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」は終了される。したがって、「ダイレクトヒット」（テーブルエントリｊの最上位の２４ビットによって示された状態値と等しい状態値ｓ）が確認されない限り、テーブルａｒｉ＿ｓ＿ｈａｓｈの全３８７エントリは、昇順に評価される。
【０１４３】
ダイレクトヒットが、第１のテーブル評価５５０の範囲内に確認されない場合、第２のテーブル評価５６０は実行される。第２のテーブル評価の過程において、ゼロから最大値２２４まで線形に増えていくエントリインデックスｉを有する線形走査は、実行される。第２のテーブル評価の間、テーブルｉのためのテーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」のエントリ「ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］」は、読み取られて、テーブルエントリｊの２４の最上位ビットによって示された状態値が状態値ｓより大きいかどうかが決定されるので、テーブルエントリ「ｊ＝ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］」は、評価される。これが真ならば、前記テーブルエントリｊの８の最下位ビットによって示されたマッピングルールインデックス値は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の戻り値として返されて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の実行は終了される。しかし、状態値ｓが現在のテーブルエントリｊ＝ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］の２４の最上位ビットによって示された状態値より小さくない場合、テーブルａｒｉ＿ｇｓ＿ｈａｓｈのエントリによるスキャンは、テーブルインデックスｉを増加させることによって続けられる。しかし、状態値ｓがテーブルａｒｉ＿ｇｓ＿ｈａｓｈのエントリによって示された状態値のいずれかより大きい、または、等しい場合、テーブルａｒｉ＿ｇｓ＿ｈａｓｈの最後のエントリの８の最下位ビットによって定義されたマッピングルールインデックス値「ｐｋｉ」は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の戻り値として返される。
【０１４４】
要約すると、図５ｅの関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」は、２ステップのハッシュ法を実行する。第１のステップにおいて、ダイレクトヒットのサーチが実行される。ここで、状態値ｓは、第１のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリのいずれかによって定義された状態値と等しいかどうかが決定される。ダイレクトヒットが第１のテーブル評価５５０において確認される場合、戻り値は、第１のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」から得られて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」は終了される。しかし、ダイレクトヒットが第１のテーブル評価５５０において確認されない場合、第２のテーブル評価５６０は実行される。第２のテーブル評価において、範囲ベースの評価は、実行される。第２のテーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」の続くエントリは、範囲を定める。状態値ｓが、現在のテーブルエントリ「ｊ＝ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］」の２４の最上位ビットによって示された状態値が状態値ｓより大きいことによって示されるこの種の範囲内に位置することが分かった場合、テーブルエントリｊ＝ａｒｉ＿ｇｓ＿ｈａｓｈ［ｉ］の８つの最下位ビットによって示されたマッピングルールインデックス値「ｐｋｉ」は返される。
【０１４５】
６．５．３  図５ｆのアルゴリズムを使用したマッピングルール選択
図５ｆの関数「ｇｅｔ＿ｐｋ」は、図５ｅの関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」に実質的に等しい。したがって、上記説明が参照される。詳しくは、図５ｆの仮プログラム表現が参照される。
【０１４６】
図５ｆの関数「ｇｅｔ＿ｐｋ」が、図３の関数「ｖａｌｕｅ＿ｄｅｃｏｄｅ」において呼ばれた関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」に代わることができる点に留意する必要がある。
【０１４７】
６．６．  図５ｇの関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」
以下において、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の機能について、図５ｇを参照して詳述する。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、それがシーケンスの第１のシンボルである場合にＴＲＵＥを返し、そうでなければＦＡＬＳＥを返すヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（ｖｏｉｄ）」を使用する点に留意する必要がある。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、ビットストリームの次のビットを得て、供給するヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（ｖｏｉｄ）」を使用する。
【０１４８】
加えて、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、グローバル変数「ｌｏｗ」、「ｈｉｇｈ」および「ｖａｌｕｅ」を使用する。更に、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、入力変数として、選択された累積度数分布表の第１のエントリまたは（要素インデックスまたはエントリインデックス０を有する）要素を指す変数「ｃｕｍ＿ｆｒｅｑ［］」を受ける。また、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、変数「ｃｕｍ＿ｆｒｅｑ［］」によって示された選択された累積度数分布表の長さを示す入力変数「ｃｆｌ」を使用する。
【０１４９】
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、第１のステップとして、ヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（）」がシンボルのシーケンスの第１のシンボルが復号されていることを示す場合に実行される変数初期化５７０ａを含む。例えば、値初期化５５０ａは、変数「ｖａｌｕｅ」が前記ビットによって示された値をとるように、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」を使用してビットストリームから得られる複数の、例えば２０ビットに依存して、変数「ｖａｌｕｅ」を初期化する。また、変数「ｌｏｗ」は、０の値をとるように初期化されて、変数「ｈｉｇｈ」は、１０４８５７５の値をとるように初期化される。
【０１５０】
第２のステップ５７０ｂにおいて、変数「ｒａｎｇｅ」は、変数「ｈｉｇｈ」および「ｌｏｗ」の値の差よりも１だけ大きい値にセットされる。変数「ｃｕｍ」は、変数「ｌｏｗ」の値とおよび変数「ｈｉｇｈ」の値との間に変数「ｖａｌｕｅ」の値の相対位置を示す値にセットされる。したがって、変数「ｃｕｍ」は、変数「ｖａｌｕｅ」の値に依存して、例えば、０と２１６との間の値をとる。
【０１５１】
ポインタｐは、選択された累積度数分布表の先頭アドレスより１だけ小さい値に初期化される。
【０１５２】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、反復的な累積度数分布表サーチ５７０ｃを含む。変数ｃｆｌが１より小さくなる、または、１と等しくなるまで、反復的な累積度数分布表サーチは、繰り返される。反復的な累積度数分布表サーチ５７０ｃにおいて、ポインタ変数ｑは、ポインタ変数ｐの現在の値と変数「ｃｆｌ」の２分の１の値の合計に等しい値にセットされる。エントリがポインタ変数ｑによってアドレス指定される選択された累積度数分布表のエントリの値*ｑが、変数「ｃｕｍ」の値より大きい場合、ポインタ変数ｐは、ポインタ変数ｑの値にセットされて、そして、変数「ｃｆｌ」の値は、＋１増加する。最後に、変数「ｃｆｌ」は、１ビットだけ右にシフトされて、それによって、効率よく、変数「ｃｆｌ」の値を２で割って、剰余部分を無視する。
【０１５３】
したがって、反復的な累積度数分布表サーチ５７０ｃは、値ｃｕｍが確認された区間内にあるように、累積度数分布表のエントリに囲まれている選択された累積度数分布表内に区間を確認するために、変数「ｃｕｍ」の値を、選択された累積度数分布表の複数のエントリと効率よく比較する。したがって、選択された累積度数分布表のエントリは、区間を定める。ここで、各シンボル値は、選択された累積度数分布表の区間の各々に関連する。また、累積度数分布表の２つの隣接した値間の区間の幅は、選択された累積度数分布表が、全体として、異なるシンボル（またはシンボル値）の確率分布を定めるように、前記区間と関連したシンボルの確率を定める。利用できる累積度数分布表に関する詳細は、図１９を参照して、以下で述べられる。
【０１５４】
さらに図５ｇを参照して、シンボル値は、ポインタ変数ｐの値から得られる。ここで、シンボル値は、参照番号５７０ｄに示すように得られる。このように、ポインタ変数ｐおよび先頭アドレス「ｃｕｍ＿ｆｒｅｑ」の値の差は、変数「ｓｙｍｂｏｌ」によって示されるシンボル値を得るために評価される。
【０１５５】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」はまた、変数「ｈｉｇｈ」と「ｌｏｗ」の適合５７０ｅを含む。変数「ｓｙｍｂｏｌ」によって示されたシンボル値が、０とは異なる場合、参照番号５７０ｅに示すように、変数「ｈｉｇｈ」は更新される。また、参照番号５７０ｅに示すように、変数「ｌｏｗ」の値は、更新される。変数「ｈｉｇｈ」は、変数「ｌｏｗ」、変数「ｒａｎｇｅ」の値、および選択された累積度数分布表のインデックス「ｓｙｍｂｏｌ−１」を有するエントリで決定される値にセットされる。変数「ｌｏｗ」は、増加し、ここで、増加の大きさは、変数「ｒａｎｇｅ」、およびインデックス「ｓｙｍｂｏｌ」を有する選択された累積度数分布表のエントリで決定される。したがって、変数「ｌｏｗ」および「ｈｉｇｈ」の値の差は、選択された累積度数分布表の２つの隣接したエントリ間の数値差に依存して、調整される。
【０１５６】
したがって、低い確率を有するシンボル値が検出される場合、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間は、狭い幅に削減される。対照的に、検出シンボル値が比較的大きい確率を含む場合、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間の幅は、比較的大きい値にセットされる。さらにまた、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間の幅は、累積度数分布表の検出されたシンボルおよび対応するエントリに依存している。
【０１５７】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、区間再規格化（ｒｅｎｏｒｍａｌｉｚａｔｉｏｎ）５７０ｆを含む。そこにおいて、ステップ５７０ｅにおいて決定された区間は、「ｂｒｅａｋ」条件に達するまで、反復してシフトされて、スケールされる。区間再規格化５７０ｆにおいて、選択的な下方シフト操作５７０ｆａは、実行される。変数「ｈｉｇｈ」が、５２４２８６より小さい場合、何もなされず、区間再規格化は、区間サイズ増加演算５７０ｆｂを続ける。しかし、変数「ｈｉｇｈ」が５２４２８６より小さくない、かつ、変数「ｌｏｗ」が５２４２８６以上であるまたはそれと等しい場合、変数「ｌｏｗ」および「ｈｉｇｈ」によって定義された区間が下にシフトされるように、そして、変数「ｖａｌｕｅ」の値も下にシフトされるように、変数「ｖａｌｕｅ」、「ｌｏｗ」および「ｈｉｇｈ」は、全て５２４２８６だけ減少する。しかし、変数「ｈｉｇｈ」の値が５２４２８６より小さくないこと、および、変数「ｌｏｗ」が５２４２８６より大きくないまたは等しいこと、および、変数「ｌｏｗ」が２６２１４３より大きいまたは等しいこと、および、変数「ｈｉｇｈ」が７８６４２９より小さいことが分かった場合に、変数「ｖａｌｕｅ」、「ｌｏｗ」および「ｈｉｇｈ」は、全て２６２１４３だけ減少し、それによって、変数「ｈｉｇｈ」と「ｌｏｗ」の値、および更には、変数「ｖａｌｕｅ」の値間の区間シフトダウンする。しかし、上記条件のどれも満たされていない場合、区間再規格化は終了される。
【０１５８】
しかし、ステップ５７０ｆａで評価される上述の条件のいずれかが、条件が満たされている場合、区間増加演算５７０ｆｂは実行される。区間増加演算５７０ｆｂにおいて、変数「ｌｏｗ」の値は、２倍になる。また、変数「ｈｉｇｈ」の値は、２倍になり、２倍の結果は、１だけ増加する。また、変数「ｖａｌｕｅ」の値は、（１ビットだけ左にシフトされ）２倍になり、そして、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」によって得られるビットストリームの１ビットは、最下位ビットとして使用される。したがって、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間のサイズは、およそ２倍になり、変数「ｖａｌｕｅ」の精度は、ビットストリームの新しいビットを使用することにより増加する。上記したように、「ｂｒｅａｋ」条件に達するまで、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間が十分大きくなるまで、ステップ５７０ｆａおよび５７０ｆｂは繰り返される。
【０１５９】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の機能に関して、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間が、変数「ｃｕｍ＿ｆｒｅｑ」によって参照された累積度数分布表の２つの隣接したエントリに依存して、ステップ５７０ｅにおいて減じられる点に留意する必要がある。選択された累積度数分布表の２つの隣接した値間の区間が小さい場合、すなわち、隣接した値がともに比較的近い場合、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間は比較的小さい。対照的に、累積度数分布表の２つの隣接したエントリが更に間隔をあける場合、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間は比較的大きい。
【０１６０】
従って、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間が比較的小さい場合、多数の区間再規格化ステップは、（条件評価５７０ｆａの条件のいずれも満たされていないように、）「十分な」サイズに区間を再スケールするために実行される。したがって、ビットストリームから比較的多くの数のビットは、変数「ｖａｌｕｅ」の精度を増加させるために使用される。対照的に、ステップ５７０ｅにおいて得られた区間サイズが、比較的大きい場合、区間規格化ステップ５７０ｆａおよび５７０ｆｂのより小さい繰返し数だけは変数「ｌｏｗ」および「ｈｉｇｈ」の値間の区間を「十分な」サイズまで再規格化するために必要とされる。したがって、ビットストリームから比較的少ない数のビットだけが、変数「ｖａｌｕｅ」の精度を増加させて、次のシンボルの復号化を準備するために使用される。
【０１６１】
上記を要約すると、比較的高い確率を含み、選択された累積度数分布表のエントリによって大きい区間と関連しているシンボルが復号される場合、比較的少ない数のビットしか、その後のシンボルの復号化を可能にするために、ビットストリームから読み取られない。対照的に、比較的少ない確率を含んで、そして、小区間は選択された累積度数分布表のエントリによって関連するシンボルが復号される場合、比較的多数のビットは、次のシンボルの復号化を準備するために、ビットストリームからとられる。
【０１６２】
したがって、累積度数分布表のエントリは、異なるシンボルの確率を反映して、更にシーケンスのシンボルを復号するために必要な多くのビットを反映する。コンテキストに依存して、すなわち前に復号されたシンボル（またはスペクトル値）に依存して、累積度数分布表を変化させることによって、例えば、コンテキストに依存して異なる累積度数分布表を選択することによって、異なるシンボル間の推計学的な依存性が利用でき、それは続く（または隣接した）シンボルの特定の効率的な符合化を可能にする。
【０１６３】
上記を要約すると、図５ｇに関して示された関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、累積度数分布表「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼ばれ、（戻り変数「ｓｙｍｂｏｌ」によって示されるシンボル値にセットされうる）最上位ビットプレーン値ｍを決定するために、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって返されたインデックス「ｐｋｉ」に対応する。
【０１６４】
６．７  エスケープ機構
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」によってシンボル値として返される復号された最上位ビットプレーン値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」であると共に、付加的な最上位ビットプレーン値ｍは、復号されて、変数「ｌｅｖ」は１だけ増加する。したがって、復号される下位ビットプレーンの数についてだけでなく、最上位ビットプレーン値ｍの数値的有意性についての情報が得られる。
【０１６５】
エスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」が復号される場合、レベル変数「ｌｅｖ」は１増やされる。したがって、最上位ビット（ビット２４以上）によって示される値が、アルゴリズム３１２ｂａの次の反復のために増加するので、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」に入力される状態値も修正される。
【０１６６】
６．８  図５ｈのコンテキスト更新
いったん、スペクトル値が完全に復号されると（すなわち、最下位ビットプレーンの全てが増やされると）、コンテキストテーブルｑおよびｑｓは、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ａ，ｉ，ｌｇ）」を呼ぶことにより更新される。以下に、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ａ，ｉ，ｌｇ）」に関する詳細は、前記関数の仮プログラムコード表現を示す図５ｈを参照にして説明される。
【０１６７】
関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」は、入力変数として、復号された量子化されたスペクトル係数ａ、復号されるスペクトル値の（または復号されたスペクトル値の）インデックスｉ、および現在のオーディオフレームと関連したスペクトル値（または係数）の数ｌｇを受ける。
【０１６８】
ステップ５８０において、現在復号され量子化されたスペクトル値（または係数）ａは、コンテキストテーブルまたはコンテキスト配列ｑに複製する。したがって、コンテキストテーブルｑのエントリｑ［１］［ｉ］は、ａにセットされる。また、変数「ａ０」は、「ａ」の値にセットされる。
【０１６９】
ステップ５８２において、コンテキストテーブルｑのレベル値ｑ［１］［ｉ］．ｌは、決定される。デフォルトで、コンテキストテーブルｑのレベル値ｑ［１］［ｉ］．ｌは、０にセットされる。しかし、現在符号化されたスペクトル値の絶対値が４より大きい場合、レベル値ｑ［１］［ｉ］．ｌは、増加する。各インクリメントによって、変数「ａ」は、１ビットだけ右にシフトする。変数ａ０の絶対値が４より小さくなる、または４に等しくなるまで、レベル値ｑ［１］［ｉ］．ｌのインクリメントは繰り返される。
【０１７０】
ステップ５８４において、コンテキストテーブルｑの２ビットのコンテキスト値ｑ［１］［ｉ］．ｃは、セットされる。２ビットのコンテキスト値ｑ［１］［ｉ］．ｃは、現在復号されたスペクトル値ａが０に等しくなる場合、０の値にセットされる。そうでない場合、復号されたスペクトル値ａの絶対値が１より小さい、または等しい場合、２ビットのコンテキスト値ｑ［１］［ｉ］．ｃは、１にセットされる。そうでない場合、現在復号されたスペクトル値ａの絶対値が３より小さい、または等しい場合、２ビットのコンテキスト値ｑ［１］［ｉ］．ｃは、２にセットされる。そうでない場合、すなわち、現在復号されたスペクトル値ａの絶対値が３より大きい場合、２ビットのコンテキスト値ｑ［１］［ｉ］．ｃは、３にセットされる。したがって、２ビットコンテキスト値ｑ［１］［ｉ］．ｃは、現在復号されたスペクトル係数ａの非常に粗い量子化によって得られる。
【０１７１】
現在復号されたスペクトル値のインデックスｉが、フレームの係数（スペクトル値）の数ｌｇに等しい場合に、すなわち、フレームの最後のスペクトル値が復号されて、コアモードが、線形予測領域コアモードである（「ｃｏｒｅ＿ｍｏｄｅ＝＝１」によって示される）場合にのみ実行されるその後のステップ５８６において、エントリｑ［１］［ｊ］．ｃは、コンテキストテーブルｑｓ［ｋ］にコピーされる。コピーは、現在のフレームのスペクトル値の数ｌｇが、コンテキストテーブルｑｓ［ｋ］にエントリｑ［１］［ｊ］．ｃのコピーのために考慮されるように、参照番号５８６に示すように実行される。加えて、変数「ｐｒｅｖｉｏｕｓ＿ｌｇ」は、値１０２４をとる。
【０１７２】
しかし、代わりに、現在復号されたスペクトル係数のインデックスｉが、ｌｇの値に達して、コアモードが周波数領域コアモードである（「ｃｏｒｅ＿ｍｏｄｅ＝＝０」によって示される）場合、コンテキストテーブルｑのエントリｑ［１］［ｊ］．ｃは、コンテキストテーブルｑｓ［ｊ］にコピーされる。
【０１７３】
この場合、変数「ｐｒｅｖｉｏｕｓ＿ｌｇ」は、１０２４の値およびフレームのスペクトル値の数ｌｇ間の最小値にセットされる。
【０１７４】
６．９  復号処理の概要
以下に、復号処理は、簡潔にまとめられる。詳細に関して、上記説明と、更に図３、図４および図５ａ〜図５ｉが参照される。
【０１７５】
量子化されたスペクトル係数ａは、最低周波数係数から始まって、最高周波数係数に進行して、ノイズレスに符号化され、送信される。
【０１７６】
先進的音響符号化（ＡＡＣ）からの係数は、配列「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」に格納されて、ノイズレス符号化コードワードの送信の順序は、その配列に受け取られ、格納された順番に復号されるときに、ｂｉｎが最も急速に増加するインデックスであって、ｇが最もゆっくり増加するインデックスであるようにされる。インデックスｂｉｎは、周波数ビンを示す。インデックス「ｓｆｂ」は、スケールファクターバンドを示す。インデックス「ｗｉｎ」は、窓を示す。インデックス「ｇ」は、オーディオフレームを示す。
【０１７７】
変換符号化励振からの係数は、直接、配列「ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］」に格納され、そして、ノイズレス符号化コードワードの送信の順序は、それらが配列に受け取られて格納された順番に復号されるときに、「ｂｉｎ」が最も急速に増加するインデックスであり、「ｗｉｎ」が最もゆっくり増加するインデックスであるようにされる。
【０１７８】
まず、マッピングは、コンテキストテーブルまたは配列「ｑｓ」に格納され、保存された過去のコンテキストと、（コンテキストテーブルまたは配列ｑに格納された）現在のフレームｑのコンテキストとの間でなされる。過去のコンテキスト「ｑｓ」は、周波数線ごとに（または周波数ビンごとに）、２ビットに格納される。
【０１７９】
コンテキストテーブル「ｑｓ」に格納された保存された過去のコンテキストとコンテキストテーブル「ｑ」に格納された現在のフレームのコンテキスト間のマッピングは、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」を使用して実行され、その仮プログラムコード表現は図５ａに示される。
【０１８０】
ノイズレス復号器は、符号付き量子化されたスペクトル係数「ａ」を出力する。
【０１８１】
まず、コンテキストの状態は、復号する量子化されたスペクトル係数を囲んでいる前に復号されたスペクトル係数に基づいて算出される。コンテキストの状態ｓは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」によって返された値の２４の第１ビットに対応する。返された値の第２４番目ビットを越えたビットは、予測されたビットプレーンレベルｌｅｖ０に対応する。変数「ｌｅｖ」は、ｌｅｖ０に初期化される。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」の仮プログラムコード表現は、図５ｂおよび図５ｃに示される。
【０１８２】
いったん、状態ｓおよび予測されたレベル「ｌｅｖ０」が分かると、最上位の２ビット単位のプレーンｍは、コンテキスト状態に対応する確率モデルに対応する適用された累積度数分布表を供給された、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を使用して復号される。
【０１８３】
通信は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によってなされる。
【０１８４】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の仮プログラムコード表現は、図５ｅに示される。
【０１８５】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」に代わることができる他の関数「ｇｅｔ＿ｐｋ」の仮プログラムコードは、図５ｆに示される。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」に代わることができる他の関数「ｇｅｔ＿ｐｋ」の仮プログラムコードは、図５ｄに示される。
【０１８６】
値ｍは、累積度数分布表、「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼ばれた関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を使用して復号される。ここで、「ｐｋｉ」が、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって（または、代わりに、関数「ｇｅｔ＿ｐｋ（）」によって）、返されたインデックスに対応する。
【０１８７】
算術符号器は、スケーリングを有するタグ生成の方法を使用した整数インプリメンテーションである（例えばＫ．Ｓａｙｏｏｄ「データ圧縮の入門書（Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ）」、第三版、２００６、エルゼビア社参照）。図５ｇに示された仮のＣコードは、使用されたアルゴリズムを示す。
【０１８８】
復号された値ｍがエスケープシンボル（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）であるときに、他の値ｍは、復号されて、変数「ｌｅｖ」は１だけ増加する。いったん、値ｍがエスケープシンボル（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）でないと、残りのビットプレーンは、「ｌｅｖ」回、累積度数分布表「ａｒｉｔｈ＿ｃｆ＿ｒ［］」を有する関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を呼ぶことによって、最上位から最下位レベルまで復号される。前記累積度数分布表「ａｒｉｔｈ＿ｃｆ＿ｒ［］」は、例えば、均一な確率分布を示しうる。
【０１８９】
復号されたビットプレーンｒは、以下の方法で、前に復号された値ｍを精錬することを可能にする：
ａ＝ｍ；
ｆｏｒ（ｉ＝０；ｉ＜ｌｅｖ；ｉ＋＋）｛
ｒ＝ａｒｉｔｈ＿ｄｅｃｏｄｅ（ａｒｉｔｈ＿ｃｆ＿ｒ，２）；
ａ＝（ａ＜＜１）｜（ｒ＆１）；
｝
【０１９０】
いったん、スペクトルの量子化された係数ａは、完全に復号されると、コンテキストテーブルｑ、または格納されたコンテキストｑｓは、復号する次の量子化されたスペクトル係数のために、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって更新される。
【０１９１】
関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」の仮プログラムコード表現は、図５ｈに示される。
【０１９２】
加えて、定義のキャプションは、図５ｉに示される。
【０１９３】
７．  マッピングテーブル
本発明による実施形態において、特に有利なテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」および「ａｒｉ＿ｇｓ＿ｈａｓｈ」および「ａｒｉ＿ｃｆ＿ｍ」は、図５ｄを参照に述べられた関数「ｇｅｔ＿ｐｋ」の実行のために、または、図５ｅを参照に述べられた関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の実行のために、または、参照５ｆを参照に述べられた関数「ｇｅｔ＿ｐｋ」の実行のために、および、図５ｇを参照に述べられた関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の実行のために使用される。
【０１９４】
７．１．  図１７のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」
図５ｄに関して説明された関数「ｇｅｔ＿ｐｋ」により用いられるテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」の特に有利なインプリメンテーションの内容は、図１７の表に示される。図１７のテーブルがテーブル「ａｒｉ＿ｓ＿ｈａｓｈ［３８７］」の３８７のエントリをリストする点に留意する必要がある。また、図１７のテーブル表現が、先頭値「０ｘ０００００２００」が、要素インデックス（またはテーブルインデックス）０を有するテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［０］」に対応するように、最後の値「０ｘ０３Ｄ０７１３Ｄ」は、要素インデックスまたはテーブルインデックス３８６を有するテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［３８６］」に対応するように、その要素インデックスの順序で要素を示す点に留意すべきである。「０ｘ」がテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のテーブルエントリが１６進数で示される点に更に留意すべきである。さらにまた、図１７のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のテーブルエントリは、関数「ｇｅｔ＿ｐｋ」の第１のテーブル評価５４０の実行を可能にするために、番号順に配置される。
【０１９５】
テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のテーブルエントリの最上位の２４ビットが、状態値を示す一方で、最下位の８ビットが、マッピングルールインデックス値ｐｋｉを示す点に更に留意すべきである。
【０１９６】
このように、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリは、マッピングルールインデックス値「ｐｋｉ」への状態値の「ダイレクトヒット」マッピングを示す。
【０１９７】
７．２  図１８のテーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」
テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」の特に有利な実施形態の内容は、図１８のテーブルに示される。テーブル１８のテーブルが、テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」のエントリをリストする点にここで留意すべきである。前記エントリは、一次元の整数型エントリインデックス（また、「要素インデックス」または「配列インデックス」または「テーブルインデックス」とも呼ばれる）によって参照され、それは、例えば、「ｉ」で示される。合計２２５のエントリを含むテーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」が、図５ｄに示される関数「ｇｅｔ＿ｐｋ」の第２のテーブル評価５４４による使用に非常に適する点に留意する必要がある。
【０１９８】
テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」のエントリが、０と２２４との間にテーブルインデックス値ｉに関してテーブルインデックスｉの昇順にリストされる点に留意する必要がある。用語「０ｘ」は、テーブルエントリが１６進数で表されることを示す。したがって、第１のテーブルエントリ「０Ｘ０００００４０１」は、テーブルインデックス０を有するテーブルエントリ「ａｒｉ＿ｇｓ＿ｈａｓｈ［０］」に対応して、最後のテーブルエントリ「０Ｘｆｆｆｆｆｆ３ｆ」は、テーブルインデックス２２４を有するテーブルエントリ「ａｒｉ＿ｇｓ＿ｈａｓｈ［２２４］」に対応する。
【０１９９】
また、テーブルエントリが関数「ｇｅｔ＿ｐｋ」の第２のテーブル評価５４４のために適するように、テーブルエントリは、数値的に昇順に順序付けられることは留意すべきである。テーブル「ａｒｉ＿ｇｓ＿ｈａｓｈ」のテーブルエントリの２４の最上位ビットは、状態値の範囲間の境界を示し、エントリの８個の最下位ビットは、２４個の最上位ビットによって定義された状態値の範囲と関連したマッピングルールインデックス値「ｐｋｉ」を示す。
【０２００】
７．３  図１９のテーブル「ａｒｉ＿ｃｆ＿ｍ」
図１９は、６４の累積度数分布表「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［９］」のセットを示し、その一つは、例えば、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の実行のために、すなわち最上位ビットプレーン値の復号のために、オーディオ符号器１００、７００またはオーディオ復号器２００、８００によって、選択される。図１９に示された６４の累積度数分布表のうちの選択された一つは、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行において、テーブル「ｃｕｍ＿ｆｒｅｑ［］」の関数をとる。
【０２０１】
図１９から分かるように、各ラインは、９つのエントリを有する累積度数分布表を示す。例えば、第１のライン１９１０は、「ｐｋｉ＝０」のための累積度数分布表の９つのエントリを示す。第２のライン１９１２は、「ｐｋｉ＝１」のための累積度数分布表の９つのエントリを示す。最後に、第６４番目のライン１９６４は、「ｐｋｉ＝６３」のための累積度数分布表の９つのエントリを示す。このように、図１９は、「ｐｋｉ＝０」から「ｐｋｉ＝６３」までの６４の異なる累積度数分布表を事実上示す。ここで、６４の累積度数分布表の各々は、１つのラインで示されて、前記累積度数分布表の各々は、９つのエントリを含む。
【０２０２】
ライン（例えばライン１９１０またはライン１９１２またはライン１９６４）の中で、最も左の値は、累積度数分布表の第１のエントリを示し、最も右の値は、累積度数分布表の最後のエントリを示す。
【０２０３】
したがって、図１９のテーブル表現の各ライン１９１０、１９１２、１９６４は、図５ｇの関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」による使用のための累積度数分布表のエントリを示す。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の入力変数「ｃｕｍ＿ｆｒｅｑ［］」は、テーブル「ａｒｉ＿ｃｆ＿ｍ」の（９つのエントリの個々のラインによって示される）６４の累積度数分布表のうちのどれが現在のスペクトル係数の復号化に使用されるべきかについて示す。
【０２０４】
７．４  図２０のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」
図２０は、図５ｅまたは図５ｆの他の関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」または「ｇｅｔ＿ｐｋ（）」と組み合せて使用されうるテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」に代わるものを示す。
【０２０５】
図２０のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」は、テーブルインデックスの昇順に図２０にリストされる３８６のエントリを含む。このように、第１のテーブル値「０ｘ００９０Ｄ５２Ｅ」は、テーブルインデックス０を有するテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［０］」に対応し、最後のテーブルエントリ「０ｘ０３Ｄ０５１３Ｃ」は、テーブルインデックス３８６を有するテーブルエントリ「ａｒｉ＿ｓ＿ｈａｓｈ［３８６］」に対応する。
【０２０６】
「０ｘ」は、テーブルエントリが１６進の形で示されることを示す。テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリの２４の最上位ビットは、有意な状態を示して、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリの８つの最下位ビットは、マッピングルールインデックス値を示す。
【０２０７】
したがって、テーブル「ａｒｉ＿ｓ＿ｈａｓｈ」のエントリは、マッピングルールインデックス値「ｐｋｉ」への有意な状態のマッピングを示す。
【０２０８】
８．  性能評価および効果
本発明による実施形態は、計算量、所要メモリ量および符号化効率の間の改善されたトレードオフを得るために、上記のように、更新された関数（またはアルゴリズム）およびテーブルの更新されたセットを使用する。
【０２０９】
一般的に言って、本発明による実施形態は、改良型のスペクトルノイズレス符号化を生み出す。
【０２１０】
本説明は、スペクトル係数の改良型のスペクトルノイズレス符号化上のＣＥのための実施形態を説明する。提案された方式は、有意に所要メモリ量（ＲＡＭ、ＲＯＭ）を削減するが、その一方で、ノイズレス符号化性能を維持するＵＳＡＣドラフト標準の作業原案４にて説明されるように、「オリジナルの」コンテキストベースの算術符号化方式に基づく。ＷＤ３（すなわち、ＵＳＡＣドラフト標準の作業原案３に従うビットストリームに供給しているオーディオ符号器の出力の中で）の無損失性トランスコーディングは、可能であることを証明された。本願明細書において説明された方式は、一般に、スケーラブルあり、必要メモリ量と符号化性能との間のさらなる別のトレードオフを可能にする。本発明による実施形態は、ＵＳＡＣドラフト標準の作業原案４において用いられているように、スペクトルノイズレス符号化方式と代わることを目指す。
【０２１１】
本願明細書において説明された算術符号化方式は、参照モデル０（ＲＭ０）のような方式またはＵＳＡＣドラフト標準の作業原案４（ＷＤ４）に基づく。周波数において、または、時間において先のスペクトル係数は、コンテキストをモデル化する。このコンテキストは、算術符号器（符号器または復号器）のための累積度数分布表の選択のために使用される。ＷＤ４による実施形態と比較して、コンテキストのモデル化は、更に改良され、そして、シンボル確率を保持しているテーブルは再調節された。異なる確率モデルの数は、３２から６４に増やされた。
【０２１２】
本発明による実施形態は、長さ３２ビットの９００ワードまたは３６００バイトに、テーブルサイズ（データＲＯＭ要求）を削減する。対照的に、ＵＳＡＣドラフト標準のＷＤ４による実施形態は、１６８９４．５ワードまたは７６５７８バイトを必要とする。本発明のいくつか実施形態では、コアコーダチャネルごとに６６６ワード（２６６４バイト）から７２（２８８バイト）まで、スタティックＲＡＭ要求は、削減される。同時に、それは、符号化性能を十分に保って、全９つの動作点の上の全体のデータ転送速度と比較して、およそ１．０４％〜１．３９％の利得に達することさえできる。作業原案３（ＷＤ３）ビットストリームの全ては、ビットリザーバ拘束条件に影響を及ぼすことなく、無損失性方法で変換されうる。
【０２１３】
本発明の実施形態による提案された方式は、スケーラブルであり、メモリ量要求および符号化性能の間の柔軟なトレードオフが、可能である。テーブルサイズを増加することによって、符号化利得は、更に増加することができる。
【０２１４】
以下に、ＵＳＡＣドラフト標準のＷＤ４による符号化構想に関する短い議論は、本願明細書において説明された構想の効果の理解を容易にするために提供される。ＵＳＡＣ  ＷＤ４において、コンテキストに基づく算術符号化方式は、量子化されたスペクトル係数のノイズレス符号化のために使用される。コンテキストとして、周波数および時間において先である復号されたスペクトル係数は、使用される。ＷＤ４によれば、最大数の１６のスペクトル係数は、コンテキストとして使用され、そのうちの１２は、時間において先である。両方とも、コンテキストのために使用され、復号されるスペクトル係数は、４個の要素の組（４−ｔｕｐｌｅｓ）（すなわち、周波数において隣接した４つのスペクトル係数、図１０ａ参照）として分類される。コンテキストは、削減されて、累積度数分布表にマップされる。そして、それは次に、スペクトル係数の次の組を復号するために使用される。
【０２１５】
完全なＷＤ４ノイズレス符号化方式のために、１６８９４．５ワード（６７５７８バイト）のメモリ要求（ＲＯＭ）は、必要である。加えて、コアコーダチャネルごとのスタテッィックＲＯＭの６６６ワード（２６６４バイト）は、次のフレームのための状態を格納することを必要とする。
【０２１６】
図１１ａのテーブル表現は、ＵＳＡＣ  ＷＤ４算術符号化方式において用いられているようなテーブルを示す。
【０２１７】
全部のＵＳＡＣ  ＷＤ４復号器の合計メモリ要求は、プログラムコードのないデータＲＯＭのための３７０００ワード（１４８０００バイト）およびスタティックＲＡＭのための１００００〜１７０００ワードであると推定される。ノイズレスコーダテーブルが合計データＲＯＭ要求のおよそ４５％を消費するということがはっきりと分かる。最大の個々のテーブルは、すでに４０９６ワード（１６３８４バイト）を消費する。
【０２１８】
すべてのテーブルの組み合わせおよび大きな個々のテーブルのサイズが、８〜３２のｋＢｙｔｅ（例えばＡＲＭ９ｅ、ＴＩＣ６４ｘｘ、など）の典型的範囲にある低予算の携帯機器用の固定点チップによって供給されるような典型的キャッシュ容量を上回ることが分かっている。これは、テーブルのセットが、おそらく、データに速いランダムアクセスを可能にする高速データＲＡＭに格納できないことを意味する。これは、全体の復号処理を低速にする。
【０２１９】
以下に、提案された新しい方式について、簡潔に説明する。
【０２２０】
前述の課題を解決するために、改良型のノイズレス符号化方式は、ＵＳＡＣドラフト標準のＷＤ４のような方式と取りかえるように提案される。コンテキストベースの算術符号化方式として、それは、ＵＳＡＣドラフト標準のＷＤ４の方式に基づくが、コンテキストから累積度数分布表の導出のために修正された方式を特徴とする。更に、コンテキスト導出およびシンボル符号化は、（ＵＳＡＣドラフト標準のＷＤ４のような４個の要素の組とは反対の）単一のスペクトル係数の粒度で実行した。全体で、７つのスペクトル係数は、（少なくともいくつかのケースにおいて）コンテキストのために使用される。マッピングの減少によって、合計６４の確率モデルまたは累積度数分布表（ＷＤ４において：３２）のうちの１つが選択される。
【０２２１】
提案された方式において用いられているように、図１０ｂは、状態計算のためのコンテキストの図示を示す。（ここで、ゼロ領域検出のために使用されたコンテキストは、図１０ｂに示されない。）
【０２２２】
以下に、提案された符号化方式を使用することにより達成されることができるメモリ要求の減少に関して短い考察が与えられる。提案された新しい方式は、９００ワード（３６００バイト）の合計ＲＯＭ要求を呈する（提案された符号化方式において用いられているようなテーブルを示す図１１ｂのテーブルを参照）。
【０２２３】
ＵＳＡＣドラフト標準のＷＤ４のノイズレス符号化方式のＲＯＭ要求と比較して、ＲＯＭ要求は、１５９９４．５ワード（６４９７８バイト）削減される（提案されたようなノイズレス符号化方式の、そして、ＵＳＡＣドラフト標準のＷＤ４のノイズレス符号化方式のＲＯＭ要求の図示を示す図１２ａを参照）。これは、およそ３７０００ワードからおよそ２１０００ワードまで、または４３％以上を全部のＵＳＡＣ復号器の全体のＲＯＭ要求を削減する（現在の提案と同様に、ＵＳＡＣドラフト標準のＷＤ４の全部のＵＳＡＣ復号器データＲＯＭ要求の図示を示す図１２ｂを参照）。
【０２２４】
更に、次のフレーム（スタティックＲＡＭ）のコンテキスト導出のために必要とされる情報量も削減される。ＷＤ４によれば、一般的に、分解能１０ビットの４個の要素の組ごとにグループインデックスに追加して、１６ビットの分解能を有する係数（最大１１５２）の全体のセットは、格納されることを必要とした。そして、それをコアコーダチャンネルごとに６６６ワード（２６６４バイト）まで計上する（全部のＵＳＡＣ  ＷＤ４復号器：およそ１００００〜１７０００ワード）。
【０２２５】
本発明による実施形態において使用される新しい方式は、スペクトル係数ごとに持続的情報をわずか２ビットに下げる。そして、それをコアコーダごとに合計の７２ワード（２８８バイト）まで計上する。スタティックメモリの要求は、５９４ワード（２３７６バイト）によって削減されることができる。
【０２２６】
以下に、符号化効率の可能な増加に関するいくつかの詳細について説明する。新しい提案による実施形態の符号化効率は、ＵＳＡＣドラフト標準のＷＤ３による参照品質のビットストリームに対して比較された。その比較は、参照ソフトウェア復号器に基づいて、トランスコーダによって実行された。ＵＳＡＣドラフト標準のＷＤ３および提案された符号化方式によるノイズレス符号化の比較に関する詳細に関して、試験装置の略図を示す図９が参照される。
【０２２７】
ＵＳＡＣドラフト標準のＷＤ３またはＷＤ４実施形態と比較すると、メモリ要求は、本発明による実施形態において大幅に削減されるにもかかわらず、符号化効率は維持されるだけでなく、わずかに増加もする。符号化効率は、１．０４％〜１．３９％だけ平均して増加する。詳細については、本発明の一実施形態による作業原案算術符号器およびオーディオコーダ（例えばＵＳＡＣオーディオコーダ）を使用してＵＳＡＣコーダによって生成された平均ビットレートのテーブル表現を示す図１３ａのテーブルが参照される。
【０２２８】
ビットリザーバ充填量レベルの測定によって、提案されたノイズレス符号化が全ての動作点に関してＷＤ３ビットストリームを無損失性で変換することが可能であることが示された。詳細については、本発明の一実施例によるＵＳＡＣ  ＷＤ３およびオーディオコーダによるとオーディオコーダのためのビットリザーバ制御のテーブル表現を示す図１３ｂのテーブルが参照される。
【０２２９】
作動モードごとの平均ビットレートに関する詳細は、フレーム基準の最小、最大および平均ビットレート、およびフレーム基準のベスト／ワーストケースの性能は、図１４、図１５および図１６のテーブルにおいて見ることができる。ここで、図１４のテーブルは、ＵＳＡＣ  ＷＤ３によるオーディオコーダのための、そして、本発明の一実施例によるオーディオコーダのための平均ビットレートのテーブル表現を示し、図１５のテーブルは、フレーム基準のＵＳＡＣオーディオコーダの最小、最大、および、平均ビットレートのテーブル表現を示し、図１６のテーブルは、フレーム基準のベストおよびワーストケースのテーブル表現を示す。
【０２３０】
加えて、本発明による実施形態が、より良いスケーラビリティを提供する点に留意する必要がある。テーブルサイズを適応させることによって、所要メモリ量、計算量および符号化効率の間のトレードオフは、要求事項に従って調整できる。
【０２３１】
９．  ビットストリームシンタックス
９．１．  スペクトルノイズレスコーダのペイロード
以下に、スペクトルノイズレスコーダのペイロードに関するいくつかの詳細について説明する。いくつかの実施形態において、例えばいわゆる線形予測領域、「符号化モード」および「周波数領域」符号化モードのような複数の異なる符号化モードがある。線形予測領域符号化モードにおいて、ノイズシェーピングは、オーディオ信号の線形予測分析に基づいて実行され、そして、ノイズシェーピングされた信号は、周波数領域に符号化される。周波数領域モードにおいて、ノイズシェーピングは、音響心理学的な分析に基づいて実行されて、オーディオコンテンツのノイズシェーピングされたバージョンは周波数領域において符号化される。
【０２３２】
「線形予測領域」符号化信号および「周波数領域」符号化信号両方ともからのスペクトル係数は、スカラー量子化されて、それから最適にコンテキスト依存する算術符号化によってノイズレス符号化される。量子化係数は、最低周波数から最高周波数まで送られる。個々の量子化された係数は、最上位２ビット単位のプレーンｍおよび残りの下位ビットプレーンｒに分割される。値ｍは、係数の相隣関係に従って符号化される。コンテキストを考慮せずに、残りの下位ビットプレーンｒは、エントロピー符号化される。値ｍおよびｒは、算術符号器のシンボルを形成する。
【０２３３】
詳細な算術復号化処理は、本願明細書において説明される。
【０２３４】
９．２．  シンタックス要素
以下に、算術符号化されたスペクトル情報を運んでいるビットストリームのビットストリームシンタックスは、図６ａ〜図６ｈを参照して説明される。
【０２３５】
図６ａは、いわゆるＵＳＡＣ生データブロック（「ｕｓａｃ＿ｒａｗ＿ｄａｔａ＿ｂｌｏｃｋ（）」）のシンタックス表現を示す。
【０２３６】
ＵＳＡＣ生データブロックは、１またはそれ以上の単一チャンネル要素（「ｓｉｎｇｌｅ＿ｃｈａｎｎｅｌ＿ｅｌｅｍｅｎｔ（）」）、および／または、１またはそれ以上のチャンネルペア要素（「ｃｈａｎｎｅｌ＿ｐａｉｒ＿ｅｌｅｍｅｎｔ（）」）を含む。
【０２３７】
ここで図６ｂを参照して、単一のチャンネル要素のシンタックスについて説明する。単一チャンネル要素は、線形予測領域チャンネルストリーム（「ｌｐｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）またはコアモードに依存した周波数領域チャンネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）を含む。
【０２３８】
図６ｃは、チャンネルペア要素のシンタックス表現を示す。チャンネルペア要素は、コアモード情報（「ｃｏｒｅ＿ｍｏｄｅ０」、「ｃｏｒｅ＿ｍｏｄｅ１」）を含む。加えて、チャンネルペア要素は、コンフィギュレーション情報「ｉｃｓ＿ｉｎｆｏ（）」を含みうる。加えて、コアモード情報に応じて、チャンネルペア要素は、第１のチャンネルと関連した線形予測領域チャンネルストリームまたは周波数領域チャンネルストリームを含み、チャンネルペア要素はまた、第２のチャンネルと関連した線形予測領域チャンネルストリームまたは周波数領域チャンネルストリームを含む。
【０２３９】
そのシンタックス表現が図６ｄに示されるコンフィギュレーション情報「ｉｃｓ＿ｉｎｆｏ（）」は、本発明に特に関連していない複数の異なるコンフィギュレーション情報項目を含む。
【０２４０】
そのシンタックス表現が図６ｅに示される周波数領域チャンネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）は、利得情報（「ｇｌｏｂａｌ＿ｇａｉｎ」）およびコンフィギュレーション情報（「ｉｃｓ＿ｉｎｆｏ（）」）を含む。加えて、周波数領域チャンネルストリームは、異なるスケールファクターバンドのスペクトル値のスケーリングのために使用されたスケールファクターを示し、そして、例えば、スケーラ１５０およびリスケーラ２４０によって適用されるスケールファクターデータ（「ｓｃａｌｅ＿ｆａｃｔｏｒ＿ｄａｔａ（）」）を含む。周波数領域チャンネルストリームはまた、算術符号化されたスペクトル値を示す算術符号化スペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）を含む。
【０２４１】
それのシンタックス表現が図６ｆに示される算術符号化スペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）は、上記のように、選択的にコンテキストをリセットするために使用される任意の算術リセットフラグ（「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」）を含む。加えて、算術符号化されたスペクトルデータは、算術符号化されたスペクトル値を運ぶ複数のアルゴリズムデータブロック（「ａｒｉｔｈ＿ｄａｔａ」）を含む。算術符号化されたデータブロックの構造は、（変数「ｎｕｍ＿ｂａｎｄｓ」によって示される）周波数バンドに、そして、更には、算術リセットフラグの状態に依存し、そのことは以下に述べられる。
【０２４２】
算術符号化されたデータブロックの構造は、前記算術符号化されたデータブロックのシンタックス表現を示す図６ｇを参照して説明される。算術符号化されたデータブロック内のデータ表現は、符号化されるスペクトル値の数ｌｇ、算術リセットフラグの状態、および、更にはコンテキスト、すなわち前に符号化されたスペクトル値に依存する。
【０２４３】
スペクトル値の現在のセットの符号化のためのコンテキストは、参照番号６６０で示されたコンテキスト決定アルゴリズムによって決定される。コンテキスト決定アルゴリズムに関する詳細については、図５ａを参照にして、上述された。算術符号化されたデータブロックは、コードワードのｌｇセットを含む。そして、コードワードの各セットがスペクトル値を示す。コードワードのセットは、１と２０ビットの間を用いたスペクトル値の最上位ビットプレーン値ｍを表している算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」を含む。加えて、スペクトル値が正しい表現のために最上位ビットプレーンより多くのビットプレーンを必要とする場合、コードワードのセットは、１またはそれ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」を含む。コードワード「ａｃｏｄ＿ｒ［ｒ］」は、１〜２０ビットを用いて下位ビットプレーンを示す。
【０２４４】
しかし、１またはそれ以上の下位ビットプレーンが、スペクトル値の適当な表現のために、（最上位ビットプレーンに加えて）必要である場合、これは、１またはそれ以上のアルゴリズムエスケープコードワード（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）によって信号を伝えられる。このように、一般的に、スペクトル値に関して、いくつのビットプレーン（最上位ビットプレーン、および、おそらく、１またはそれ以上の付加的な下位ビットプレーン）が必要とされるかが決定されると言うことができる。１またはそれ以上の下位ビットプレーンが必要である場合、これは、それの累積度数分布表インデックスは変数ｐｋｉによって与えられる現在選択された累積度数分布表によって符号化される１またはそれ以上のアルゴリズムエスケープコードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ＡＲＩＴＨ＿ＥＳＣＡＰＥ］」によって信号を送られる。加えて、１またはそれ以上のアルゴリズムエスケープコードワードがビットストリームに含まれる場合、符号６６４、６６２から分かるように、コンテキストは適用される。１またはそれ以上のアルゴリズムエスケープコードワードの後に、参照番号６６３に示すように、算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」は、ビットストリームに含まれる。ここで、ｐｋｉは、（アルゴリズムエスケープコードワードの包含によって生じたコンテキスト適合を考慮に入れて）現在有効な確率モデルインデックスを示し、ｍは、符号化されるまたは復号されるスペクトル値の最上位ビットプレーン値を示す。
【０２４５】
上記のように、下位ビットプレーンの存在は、１またはそれ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」の存在をもたらし、その各々は、最下位ビットプレーンの１ビットを示す。１またはそれ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」は、定数であって、かつ、コンテキスト依存している対応する累積度数分布表によって符号化される。
【０２４６】
加えて、参照番号６６８に示すように、コンテキストが一般的に２つの続くスペクトル値の符号化のために異なるように、コンテキストは、各スペクトル値の符号化の後、更新される点に留意する必要がある。
【０２４７】
図６ｈは、算術符号化されたデータブロックのシンタックスを定めている定義およびヘルプ要素のキャプションを示す。
【０２４８】
上記を要約すると、オーディオコーダ１００によって供給されうる、そして、オーディオ復号器２００によって評価されうるビットストリームフォーマットが説明された。算術符号化されたスペクトル値のビットストリームは、上述の復号化アルゴリズムと適合するように、符号化される。
【０２４９】
加えて、符号器が、復号器によって実行されたテーブル検索とほぼ逆である上述のテーブルを使用して、テーブル検索を実行すると通常みなすことができるように、符号化は、通常、復号化の逆演算である点に留意される必要がある。通常、復号化アルゴリズムおよび／または所望のビットストリームシンタックスを知っている当業者は、ビットストリームシンタックスで定められ、算術復号器によって必要とされたデータを供給する算術符号器を容易に設計することができると言うことができる。
【０２５０】
１０．  図２１および図２２の更なる実施形態
以下に、本発明によるいくつかの更に簡略化した実施形態について説明する。
【０２５１】
図２１は、本発明の一実施形態によるオーディオ符号器２１００のブロック略図を示す。オーディオ符号器２１００は、入力されたオーディオ情報２１１０を受けて、それに基づいて、符号化されたオーディオ情報２１１２を供給するように構成される。オーディオ符号器２１００は、周波数領域オーディオ表現がスペクトル値のセット（例えば、スペクトル値ａ）を含むように、入力されたオーディオ表現２１１０の時間領域表現２１２２を受けて、それに基づいて、周波数領域オーディオ表現２１２４を供給するように構成されるエネルギー圧縮時間領域周波数領域変換器を含む。オーディオ信号符号器２１００はまた、可変長コードワードを使用して、スペクトル値２１２４またはその前処理されたバージョンを符号化するように構成される算術符号器２１３０を含む。算術符号器２１３０は、コード値（例えば可変長コードワードを示しているコード値）への、スペクトル値、または、スペクトル値の最上位ビットプレーンをマップするように構成される。
【０２５２】
算術符号器は、マッピングルール選択２１３２とコンテキスト値決定２１３６とを含む。算術符号器は、コンテキスト状態を示している数値的現在のコンテキスト値２１３４に依存して、（可変長コードワードを示しうる）コード値への、スペクトル値２１２４の、または、スペクトル値２１２４の最上位ビットプレーンのマッピングを示しているマッピングルールを選択するように構成される。算術復号器は、複数の前に符号化されたスペクトル値に依存して、マッピングルール選択２１３２のために使用される数値的現在のコンテキスト値２１３４を決定するように構成される。算術符号器、または、より正確に言うと、マッピングルール選択２１３２は、選択されたマッピングルールを示しているマッピングルールインデックス値２１３３を得るために、数値的現在のコンテキスト値２１３４が、テーブルのエントリによって示されたテーブルコンテキスト値と同一であるか、または、テーブルのエントリによって示された区間内に位置するかを決定するために、反復的区間サイズ削減を使用して、少なくとも１つのテーブルを評価するように構成される。したがって、マッピング２１３１は、数値的現在のコンテキスト値２１３４に依存して、高い計算効率によって選択できる。
【０２５３】
図２２は、本発明の他の実施形態によるオーディオ信号復号器２２００のブロック略図を示す。オーディオ信号復号器２２００は、符号化されたオーディオ情報２２１０を受けて、それに基づいて、復号されたオーディオ情報２２１２を供給するように構成される。オーディオ信号復号器２２００は、スペクトル値の算術符号化された表現２２２２を受けて、それに基づいて、複数の復号されたスペクトル値２２２４（例えば、復号されたスペクトル値ａ）を供給するように構成される算術復号器２２２０を含む。オーディオ信号復号器２２００はまた、復号されたオーディオ情報２２１２を得るために、復号されたスペクトル値２２２４を受けて、復号されたスペクトル値を使用して、時間領域オーディオ表現を供給するように構成される周波数領域時間領域変換器２２３０を含む。
【０２５４】
算術復号器２２２０は、コード値（例えば符号化されたオーディオ情報を示しているビットストリームから抽出されるコード値）を、シンボルコード（シンボルコードは、例えば、復号されたスペクトル値、または復号されたスペクトル値の最上位ビットプレーンを示しうる）にマップするために使用されるマッピング２２２５を含む。算術復号器は、マッピング２２２５にマッピングルール選択情報２２２７を供給するマッピングルール選択２２２６を更に含む。算術復号器２２２０はまた、マッピングルール選択２２２６に数値的現在のコンテキスト値２２２９を供給するコンテキスト値決定２２２８を含む。
【０２５５】
算術復号器２２２０は、コンテキスト状態に依存して、シンボルコード（例えば、復号されたスペクトル値を示している数値または復号されたスペクトル値の最上位ビットプレーンを示している数値）へのコード値（例えば符号化されたオーディオ情報を示しているビットストリームから抽出されたコード値）のマッピングを示しているマッピングルールを選択するように構成される。算術復号器は、複数の前に復号されたスペクトル値に依存して、現在のコンテキスト状態を示している数値的現在のコンテキスト値を決定するように構成される。さらに、算術復号器（またはより正確に言うと、マッピングルール選択２２２６）は、選択されたマッピングルールを示しているマッピングルールインデックス値２２２７を得るために、数値的現在のコンテキスト値２２２９がテーブルのエントリによって示されたテーブルコンテキスト値と同一であるか、またはテーブルのエントリによって示された区間内にあるかを決定するために、反復的区間サイズ削減を使用して、少なくとも１つのテーブルを評価するように構成される。したがって、マッピング２２２５において適用されたマッピングルールは、計算的に効率的な方法で選択できる。
【０２５６】
１１．  実施変形例
いくつかの態様が装置に関連して説明されたにもかかわらず、これらの態様はまた、対応する方法の記述も示すことが明らかである。ここで、ブロックまたはデバイスは、方法ステップまたは方法ステップの機能に対応する。類似して、方法ステップに関連して説明された態様はまた、対応するブロックまたは項目の記述または対応する装置の機能を示す。方法ステップの一部または全ては、例えばマイクロプロセッサ、プログラミング可能なコンピュータまたは電子回路のようなハードウェア装置によって（またはそれを使用して）実行されうる。いくつかの実施形態では、ある１つまたはそれ以上最も重要な方法ステップは、この種の装置によって実行されうる。
【０２５７】
本発明の符号化されたオーディオ信号は、デジタル記憶媒体に格納できる、または、例えば無線伝送媒体またはインターネットなどの有線伝送媒体伝送媒体で送信できる。
【０２５８】
特定の実現要求に応じて、本発明の実施形態は、ハードウェアにおいて、または、ソフトウェアにおいて実行できる。その実施は、各方法が実行されるように、プログラミング可能な計算機システムと協動する（または協動することができる）その上に格納される電子的に読み込み可能な制御信号を有するデジタル記憶媒体、例えばフロッピー（登録商標）ディスク、ＤＶＤ、ブルーレイ、ＣＤ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュメモリを使用して実行できる。従って、デジタル記憶媒体は、計算機可読でありえる。
【０２５９】
本発明によるいくつかの実施形態は、本願明細書において説明された方法のうちの１つが実行されるように、プログラミング可能な計算機システムと協動することができる電子的に読み込み可能な制御信号を有するデータキャリアを含む。
【０２６０】
通常、本発明の実施形態は、プログラムコードを有するコンピュータプログラム製品として実施でき、そして、そのコンピュータプログラム製品がコンピュータ上で動作するときに、そのプログラムコードはその方法のうちの１つを実行する働きをする。プログラムコードは、例えば、機械読み取り可読キャリアに格納されうる。
【０２６１】
他の実施形態は、機械読み取り可読なキャリアに格納され、本願明細書において説明された方法のうちの１つを実行するためのコンピュータプログラムを含む。
【０２６２】
換言すれば、本発明の方法の実施形態は、コンピュータプログラムがコンピュータ上で動作するときに、本願明細書において説明された方法のうちの１つを実行するためのプログラムコードを有するコンピュータプログラムである。
【０２６３】
従って、本発明の方法の更なる実施形態は、その上に記録されて、本願明細書において説明された方法のうちの１つを実行するためのコンピュータプログラムを含んでいるデータキャリア（またはデジタル記憶媒体またはコンピュータ可読媒体）である。
【０２６４】
従って、本発明の方法の更なる実施形態は、本願明細書において説明された方法のうちの１つを実行するためのコンピュータプログラムを示しているデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、例えば、データ通信接続を介して、例えばインターネットを介して転送されるように構成されうる。
【０２６５】
更なる実施形態は、本願明細書において説明された方法のうちの１つを実行するように構成された、または適合された処理手段、例えばコンピュータまたはプログラム可能な論理回路を含む。
【０２６６】
更なる実施形態は、本願明細書において説明された方法のうちの１つを実行するためのコンピュータプログラムをインストールしたコンピュータを含む。
【０２６７】
いくつかの実施形態では、プログラム可能な論理回路（例えば論理プログラミング可能デバイス）は、本願明細書において説明された方法の機能の一部または全てを実行するために使用されうる。いくつかの実施形態では、論理プログラミング可能デバイスは、本願明細書において説明された方法のうちの１つを実行するために、マイクロプロセッサと協動しうる。通常、好ましくは、それらの方法は、いかなるハードウェア装置によっても実行される。
【０２６８】
上述の実施形態は、本発明の原理のために、単に図示しているだけである。本装置の修正変更および本願明細書において説明された詳細が他の当業者にとって明らかであるものと理解される。従って、特許クレームの範囲のみによって限定されて、本願明細書における実施形態の記述および説明として示された具体的な詳細によっては限定されないという意図である。
【０２６９】
前述が特に上記特定の実施形態に関して示され、説明された一方で、形式および詳細におけるさまざまな他の変更がその趣旨および範囲から逸脱することなく、なされうることは当業者によってよく理解されている。さまざまな変更が、本願明細書において開示され、続く請求項によって理解されたより広い構想から逸脱することなく、様々な実施形態に適応する際になされうることが理解される。
【０２７０】
１２．  結論
結論を言えば、本発明による実施形態が改良されたスペクトルノイズレス符号化方式を生み出す点に留意されることができる。新しい提案による実施形態は、１６８９４．５ワードから９００ワード（ＲＯＭ）まで、そして、６６６ワードから７２（コアコーダチャンネルごとのスタティックＲＡＭ）まで、メモリ要求の有意な削減を可能にする。これは、一実施形態において、およそ４３％分の全部のシステムのデータＲＯＭ要求の削減を可能にする。同時に、符号化性能は、完全には維持されるだけでなく、平均して増加されさえする。ＷＤ３（またはＵＳＡＣドラフト標準のＷＤ３によって供給されたビットストリーム）の無損失性トランスコーディングが可能であることは証明された。したがって、本発明による実施形態は、ＵＳＡＣドラフト標準の来るべき作業原案に本願明細書において説明されたノイズレス復号化を適用することによって得られる。
【０２７１】
要約すると、提案された新しいノイズレス符号化は、図６ｇに示されたようなビットストリーム要素のシンタックス「ａｒｉｔｈ＿ｄａｔａ（）」に関して、上記および図５ｈに示すようなスペクトルノイズレス符号器のペイロードに関して、上記のようなスペクトルノイズレス符号化に関して、図４に示されたような状態計算のためのコンテキストに関して、図５ｉに示したような定義に関して、図５ａ、５ｂ、５ｃ、５ｅ、５ｇ、５ｈを参照に上述したような復号処理に関して、そして、図１７、１８、２０で示したようなテーブルに関して、そして、図５ｄで示したような関数「ｇｅｔ＿ｐｋ」に関して、ＭＰＥＧ  ＵＳＡＣ作業原案における修正を生じる。しかし、代わりに、図２０によるテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」は、図１７のテーブル「ａｒｉ＿ｓ＿ｈａｓｈ」の代わりに使用されることができ、図５ｆの関数「ｇｅｔ＿ｐｋ」は、図５ｄによって関数「ｇｅｔ＿ｐｋ」の代わりに使用されることができる。
【図１ａ】
0005589084.tif 000004
【図１ｂ】
0005589084.tif 000005
【図２ａ】
0005589084.tif 000006
【図２ｂ】
0005589084.tif 000007
【図３】
0005589084.tif 000008
【図４】
0005589084.tif 000009
【図５ａ】
0005589084.tif 000010
【図５ｂ】
0005589084.tif 000011
【図５ｃ】
0005589084.tif 000012
【図５ｄ１】
0005589084.tif 000013
【図５ｄ２】
0005589084.tif 000014
【図５ｅ】
0005589084.tif 000015
【図５ｆ】
0005589084.tif 000016
【図５ｇ１】
0005589084.tif 000017
【図５ｇ２】
0005589084.tif 000018
【図５ｈ】
0005589084.tif 000019
【図５ｉ】
0005589084.tif 000020
【図６ａ】
0005589084.tif 000021
【図６ｂ】
0005589084.tif 000022
【図６ｃ】
0005589084.tif 000023
【図６ｄ】
0005589084.tif 000024
【図６ｅ】
0005589084.tif 000025
【図６ｆ】
0005589084.tif 000026
【図６ｇ】
0005589084.tif 000027
【図６ｈ】
0005589084.tif 000028
【図７】
0005589084.tif 000029
【図８】
0005589084.tif 000030
【図９】
0005589084.tif 000031
【図１０ａ】
0005589084.tif 000032
【図１０ｂ】
0005589084.tif 000033
【図１１ａ】
0005589084.tif 000034
【図１１ｂ】
0005589084.tif 000035
【図１２ａ】
0005589084.tif 000036
【図１２ｂ】
0005589084.tif 000037
【図１３ａ】
0005589084.tif 000038
【図１３ｂ】
0005589084.tif 000039
【図１４】
0005589084.tif 000040
【図１５】
0005589084.tif 000041
【図１６】
0005589084.tif 000042
【図１７（１）】
0005589084.tif 000043
【図１７（２）】
0005589084.tif 000044
【図１８】
0005589084.tif 000045
【図１９（１）】
0005589084.tif 000046
【図１９（２）】
0005589084.tif 000047
【図２０（１）】
0005589084.tif 000048
【図２０（２）】
0005589084.tif 000049
【図２１】
0005589084.tif 000050
【図２２】
0005589084.tif 000051