(57)【特許請求の範囲】
【請求項１】
復号されたオーディオ情報（２１２；８１２）を符号化されたオーディオ情報（２１０；８１０）に基づいて提供するためのオーディオ復号器（２００；８００）であって、
複数の復号されたスペクトル値（２３２；８２２）を、前記符号化されたオーディオ情報（２１０；８１０）に含まれる該スペクトル値の算術符号化された表現（２２２；８２１）に基づいて提供するための算術復号部（２３０；８２０）と、
前記復号されたオーディオ情報（２１２；８１２）を取得するために、前記復号されたスペクトル値（２３２；８２２）を用いて時間領域オーディオ表現（２６２；８１２）を提供するための周波数領域−時間領域変換部（２６０；８３０）とを備え、
前記算術復号部（２３０；８２０）は、スペクトル値の算術符号化された表現（８２１）のコード値（ａｃｏｄ＿ｍ，ｖａｌｕｅ）の、１つ以上の復号されたスペクトル値または１つ以上の復号されたスペクトル値の少なくとも一部を示す記号コード（ｓｙｍｂｏｌ）へのマッピングを示すマッピング規則（２９７；ｃｕｍ＿ｆｒｅｑ［］）を現在の数値コンテキスト値（ｃ）によって示されるコンテキスト状態に応じて選択するように構成され、
前記算術復号部（２３０；８２０）は、複数の以前に復号されたスペクトル値に応じて前記現在の数値コンテキスト値（ｃ）を決定するように構成され、
前記算術復号部は、以前に復号されたスペクトル値に基づいて、コンテキストのサブ領域を示す複数のコンテキストサブ領域値（ｑ［０］［ｉ−１］，ｑ［０］［ｉ］，ｑ［０］［ｉ＋１］，ｑ［１］［ｉ−１］）を取得し、前記コンテキストサブ領域値を格納するように構成され、
前記算術復号部は、１つ以上の復号対象のスペクトル値に対応付けられた現在の数値コンテキスト値（ｃ）を前記格納されたコンテキストサブ領域値（ｑ［０］［ｉ−１］，ｑ［０］［ｉ］，ｑ［０］［ｉ＋１］，ｑ［１］［ｉ−１］）に応じて導出するように構成され、
前記算術復号部は、複数の以前に復号されたスペクトル値（ａ，ｂ）によって形成されたベクトルのノルムを、該複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値（ｑ［１］［ｉ］）を取得するために計算するように構成されている、オーディオ復号器（２００；８００）。
【請求項２】
前記算術復号部は、前記周波数領域−時間領域変換部の隣接する周波数ビンと、前記オーディオ情報の共通の時間的部分とに対応付けられた複数の以前に復号されたスペクトル値の絶対値を、該複数の以前に復号されたスペクトル値に対応付けられた前記共通のコンテキストサブ領域値を取得するために合計するように構成されている、請求項１に記載のオーディオ復号器。
【請求項３】
前記算術復号部は、前記周波数領域−時間領域変換部の隣接する周波数ビンと、前記オーディオ情報の共通の時間的部分とに対応付けられた複数の以前に復号されたスペクトル値のノルムを、該複数の以前に復号されたスペクトル値に対応付けられた前記共通のコンテキストサブ領域値を取得するために量子化するように構成されている、請求項１に記載のオーディオ復号器。
【請求項４】
前記算術復号部は、前記複数の以前に復号されたスペクトル値に対応付けられた前記共通のコンテキストサブ領域値を取得するために、共通のコード値（ａｃｏｄ＿ｍ，ｖａｌｕｅ）を用いて符号化される複数の以前に復号されたスペクトル値（ａ，ｂ）の絶対値を合計するように構成されている、請求項１から３のいずれか１項に記載のオーディオ復号器。
【請求項５】
前記算術復号部は、符号付きの復号されたスペクトル値を前記周波数領域−時間領域変換部に提供し、前記複数の以前に復号されたスペクトル値に対応付けられた前記共通のコンテキストサブ領域値を取得するために、前記符号付きの復号されたスペクトル値に対応する絶対値を合計するように構成されている、請求項１から４のいずれか１項に記載のオーディオ復号器。
【請求項６】
前記算術復号部は、限定された合計値を、該限定された合計値によって表される考えられる値の範囲が考えられ得る合計値の範囲よりも小さくなるように、以前に復号されたスペクトル値の絶対値の和から導出するように構成されている、請求項１から５のいずれか１項に記載のオーディオ復号器。
【請求項７】
前記算術復号部は、以前に復号されたスペクトル値の異なる集合に対応付けられた複数のコンテキストサブ領域値（ｑ［０］［ｉ−１］，ｑ［０］，［ｉ］，ｑ［０］［ｉ＋１］，ｑ［１］［ｉ−１］）に応じて、現在の数値コンテキスト値（ｃ）を取得するように構成されている、請求項１から６のいずれか１項に記載のオーディオ復号器。
【請求項８】
前記算術復号部は、現在の数値コンテキスト値（ｃ）の数値表現を、該現在の数値コンテキスト値の数値表現の第１の部分が複数の以前に復号されたスペクトル値の絶対値の第１の合計値または限定された合計値によって決定され、前記現在の数値コンテキスト値の数値表現の第２の部分が複数の以前に復号されたスペクトル値の絶対値の第２の合計値または限定された合計値によって決定されるように取得するように構成されている、請求項７に記載のオーディオ復号器。
【請求項９】
前記算術復号部は、前記現在の数値コンテキスト値（ｃ）を、複数の以前に復号されたスペクトル値の絶対値の第１の合計値または限定された合計値および複数の以前に復号されたスペクトル値の絶対値の第２の合計値または限定された合計値が前記現在の数値コンテキスト値（ｃ）において異なる重みを含むように取得するように構成されている、請求項７または８に記載のオーディオ復号器。
【請求項１０】
前記算術復号部は、１つ以上の以前に復号されたスペクトル値に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値（ｃ）の数値表現を複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値（ｑ［１］［ｉ−１］）に応じて修正して、１つ以上の復号対象のスペクトル値に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値（ｃ）の数値表現を取得するように構成されている、請求項７から９のいずれか１項に記載のオーディオ復号器。
【請求項１１】
前記算術復号部は、複数のコンテキストサブ領域値（ｑ［１］［ｉ−３］，ｑ［１］［ｉ−２］，ｑ［１］［ｉ−１］）の和が所定の合計値の閾値以下であるか否かをチェックし、該チェックの結果に応じて前記現在の数値コンテキスト値（ｃ）を選択的に修正するように構成され、
前記コンテキストサブ領域値（ｑ［１］［ｉ−３］，ｑ［１］［ｉ−２］，ｑ［１］［ｉ−１］）のそれぞれは、対応付けられた複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値である、請求項１から１０のいずれか１項に記載のオーディオ復号器。
【請求項１２】
前記算術復号部は、オーディオコンテンツの以前の時間的部分に対応付けられた以前に復号されたスペクトル値によって定義される複数のコンテキストサブ領域値（ｑ［０］［ｉ−３］，ｑ［０］［ｉ］，ｑ［０］［ｉ＋１］）を考慮するとともに、前記オーディオコンテンツの現在の時間的部分に対応付けられた以前に復号されたスペクトル値によって定義される少なくとも１つのコンテキストサブ領域値（ｑ［１］［ｉ−１］）も考慮して、１つ以上の復号対象のスペクトル値に対応付けられかつ前記オーディオコンテンツの現在の時間的部分に対応付けられた現在の数値コンテキスト値（ｃ）を取得するように構成され、
その結果、前記現在の数値コンテキスト値（ｃ）を取得するために、前記以前の時間的部分の時間的に隣接する以前に復号されたスペクトル値と、前記現在の時間的部分の周波的に隣接する以前に復号されたスペクトル値との両方の環境が考慮される、請求項１から１１のいずれか１項に記載のオーディオ復号器。
【請求項１３】
前記算術復号部は、それぞれが複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値であるコンテキストサブ領域値の集合を前記オーディオ情報の所与の時間的部分について格納し、前記オーディオ情報の所与の時間的部分に続く前記オーディオ情報の時間的部分の１つ以上のスペクトル値を復号するための現在の数値コンテキスト値（ｃ）を導出するために前記コンテキストサブ領域値を使用する一方で、前記現在の数値コンテキスト値（ｃ）を導出する際には、個々の以前に復号されたスペクトル値を前記オーディオ情報の所与の時間的部分について考慮しないでおくように構成されている、請求項１から１２のいずれか１項に記載のオーディオ復号器。
【請求項１４】
前記算術復号部は、大きさの値とスペクトル値の符号とを別々に復号するように構成され、
前記算術復号部は、復号対象のスペクトル値の復号のために現在の数値コンテキスト状態（ｃ）を決定する際に、以前に復号されたスペクトル値の符号を考慮しないでおくように構成されている、請求項１から１３のいずれか１項に記載のオーディオ復号器。
【請求項１５】
符号化されたオーディオ情報（１１２；７１２）を入力オーディオ情報（１１０；７１０）に基づいて提供するためのオーディオ符号化器（１００；７００）であって、
周波数領域オーディオ表現（１３２；７２２）を、該周波数領域オーディオ表現（１３２；７２２）がスペクトル値の集合を含むように、前記入力オーディオ情報の時間領域表現（１１０；７１０）に基づいて提供するためのエネルギー圧縮型の時間領域−周波数領域変換部（１３０；７２０）と、
スペクトル値（ａ）またはその前処理されたバージョンを可変長コードワード（ａｃｏｄ＿ｍ，ａｃｏｄ＿ｒ）を用いて符号化するように構成された算術符号化部（１７０；７３０）であって、スペクトル値（ａ）またはスペクトル値（ａ）の最上位ビットプレーンの値（ｍ）をコード値（ａｃｏｄ＿ｍ）にマッピングするように構成された算術符号化部（１７０；７３０）とを備え、
前記符号化されたオーディオ情報は、複数の可変長コードワードからなり、
前記算術符号化部は、１つ以上のスペクトル値または１つ以上のスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則を、現在の数値コンテキスト値（ｃ）によって示されるコンテキスト状態（ｓ）に応じて選択するように構成され、
前記算術符号化部は、複数の以前に符号化されたスペクトル値に応じて前記現在の数値コンテキスト値（ｃ）を決定するように構成され、
前記算術符号化部は、以前に符号化されたスペクトル値に基づいて、コンテキストのサブ領域を示す複数のコンテキストサブ領域値（ｑ［］［］）を取得し、該コンテキストサブ領域値を格納し、符号化対象の１つ以上のスペクトル値に対応付けられた現在の数値コンテキスト値（ｃ）を前記格納されたコンテキストサブ領域値に応じて導出するように構成され、
前記算術符号化部は、複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムを、該複数の以前に符号化されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために計算するように構成されている、オーディオ符号化器（１００；７００）。
【請求項１６】
復号されたオーディオ情報を符号化されたオーディオ情報に基づいて提供するための方法であって、
複数の復号されたスペクトル値を、前記符号化されたオーディオ情報に含まれる該スペクトル値の算術符号化された表現に基づいて提供するステップと、
前記復号されたオーディオ情報を取得するために、前記復号されたスペクトル値を用いて時間領域オーディオ表現を提供するステップとを含み、
前記複数の復号されたスペクトル値を提供するステップは、スペクトル値の算術符号化された表現（８２１）のコード値（ａｃｏｄ＿ｍ；ｖａｌｕｅ）の、１つ以上の復号されたスペクトル値または１つ以上の復号されたスペクトル値の最上位ビットプレーンを表す記号コード（ｓｙｍｂｏｌ）へのマッピングを示すマッピング規則を、現在の数値コンテキスト値（ｃ）によって示されるコンテキスト状態に応じて選択するステップを含み、
前記現在の数値コンテキスト値（ｃ）は、複数の以前に復号されたスペクトル値に応じて決定され、
コンテキストのサブ領域を示す複数のコンテキストサブ領域値が、以前に復号されたスペクトル値に基づいて取得および格納され、
１つ以上の復号対象のスペクトル値に対応付けられた現在の数値コンテキスト値（ｃ）が、前記格納されたコンテキストサブ領域値に応じて導出され、
前記複数の以前に復号されたスペクトル値（ａ，ｂ）に対応付けられた共通のコンテキストサブ領域値（ｑ［１］［ｉ］）を取得するために、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルム（ａ＋ｂ）が計算される、方法。
【請求項１７】
符号化されたオーディオ情報を入力オーディオ情報に基づいて提供するための方法であって、
エネルギー圧縮型の時間領域−周波数領域変換を用いて、周波数領域オーディオ表現がスペクトル値の集合を有するように該周波数領域オーディオ表現を前記入力オーディオ情報の時間領域表現に基づいて提供するステップと、
スペクトル値またはその前処理されたバージョンを可変長コードワードを用いて算術符号化するステップであって、スペクトル値またはスペクトル値の最上位ビットプレーンの値がコード値にマッピングされるステップとを含み、
１つ以上のスペクトル値または１つ以上のスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則が、現在の数値コンテキスト値（ｃ）によって示されるコンテキスト状態に応じて選択され、
現在の数値コンテキスト値（ｃ）が、複数の以前に符号化された隣接するスペクトル値に応じて決定され、
コンテキストのサブ領域を示す複数のコンテキストサブ領域値が、以前に符号化されたスペクトル値に基づいて取得され、符号化対象の１つ以上のスペクトル値に対応付けられた現在の数値コンテキスト値（ｃ）が、格納されたコンテキストサブ領域値（ｑ［０］［ｉ−１］，ｑ［０］［ｉ］，ｑ［０］［ｉ＋１］，ｑ［１］［ｉ−１］）に応じて導出され、
複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムが、該複数の以前に符号化されたスペクトル値に対応付けられた共通のコンテキストサブ領域値（ｑ［１］［ｉ］）を取得するために計算され、
前記符号化されたオーディオ情報は、複数の可変長コードワードからなる、方法。
【請求項１８】
コンピュータ上で実行されたときに、請求項１６に記載の方法を実行するためのコンピュータプログラム。
【請求項１９】
コンピュータ上で実行されたときに、請求項１７に記載の方法を実行するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、復号されたオーディオ情報を符号化されたオーディオ情報に基づいて提供するためのオーディオ復号器、符号化されたオーディオ情報を入力オーディオ情報に基づいて提供するためのオーディオ符号化器、復号されたオーディオ情報を符号化されたオーディオ情報に基づいて提供するための方法、符号化されたオーディオ情報を入力オーディオ情報に基づいて提供するための方法、およびコンピュータプログラムに関する。
【０００２】
本発明による実施形態は、例えば、いわゆる音声オーディオ統合コーダ（ＵＳＡＣ）等のオーディオ符号化器またはオーディオ復号器において使用可能な改良されたスペクトル・ノイズレス・コーディングに関する。
【背景技術】
【０００３】
以下に、本発明およびその利点の理解を容易にするため、本発明の背景について簡単に説明する。ここ１０年、オーディオコンテンツを良好なビットレート効率でデジタル的に格納および配信する可能性を生み出すために多大な努力が払われてきた。これまでの重要な成果の一つは、国際規格ＩＳＯ／ＩＥＣ１４４９６−３の定義に関する。同規格のパート３は、オーディオコンテンツの符号化および復号に関し、パート３のサブパート４は、一般的なオーディオコーディングに関する。ＩＳＯ／ＩＥＣ１４４９６，パート３，サブパート４は、一般的なオーディオコンテンツの符号化および復号のための概念を定義している。また、品質の改善および／または所要ビットレートの低減のためにさらなる改良が提案されている。
【０００４】
上記規格に記載される概念によると、時間領域オーディオ信号が時間周波数表現に変換される。時間領域から時間周波数領域への変換は、典型的には、時間領域サンプルの変換ブロック（「フレーム」としても示される）を用いて行われる。例えば、フレームが半分だけずれた重複フレームを使用することが有利であることが分かっているが、この理由は、重複により、効率的にアーチファクトを回避する（または、少なくとも低減する）ことができるからである。また、時間的に限られたフレームのこの処理に起因するアーチファクトを回避するために、ウィンドウ処理を実行する必要があることが分かっている。
【０００５】
入力オーディオ信号のウィンドウ処理された部分を時間領域から時間周波数領域へと変換することにより、エネルギー圧縮が多くの場合において達成されるので、スペクトル値のいくつかは複数の他のスペクトル値よりも著しく大きい。したがって、多くの場合において、スペクトル値の平均的な大きさを著しく上回る大きさを有するスペクトル値の数は比較的少ない。エネルギー圧縮をもたらす時間領域から時間周波数領域への変換の典型例は、いわゆる修正離散コサイン変換（ＭＤＣＴ）である。
【０００６】
スペクトル値は、しばしば心理音響モデルに従ってスケーリングおよび量子化されるので、量子化誤差は、心理音響学的に重要性の高いスペクトル値については比較的小さく、心理音響学的に重要性の低いスペクトル値については比較的大きい。スケーリングおよび量子化されたスペクトル値は、当該スペクトル値のビットレート効率のよい表現を得るべく符号化される。
【０００７】
例えば、量子化されたスペクトル係数のいわゆるハフマンコーディングの使用が国際規格ＩＳＯ／ＩＥＣ１４４９６−３：２００５（Ｅ）、パート３、サブパート４に記載されている。
【０００８】
しかし、スペクトル値のコーディング品質は所要ビットレートに大きな影響を及ぼすことが分かっている。また、家庭用携帯機器においてしばしば実装され、したがって安価かつ低消費電力であるべきオーディオ復号器の複雑性は、スペクトル値を符号化するために用いられるコーディングに依存することが分かっている。
【０００９】
このような状況に鑑み、ビットレート効率とリソース効率とのトレードオフの改善をもたらす、オーディオコンテンツの符号化および復号のための概念が必要とされる。
【発明の概要】
【００１０】
本発明の一実施形態は、復号されたオーディオ情報を符号化されたオーディオ情報に基づいて提供するためのオーディオ復号器を実現する。オーディオ復号器は、複数の復号されたスペクトル値を、当該スペクトル値の算術符号化された表現に基づいて提供するための算術復号部を備える。オーディオ復号器は、復号されたオーディオ情報を取得するために、復号されたスペクトル値を用いて時間領域オーディオ表現を提供するための周波数領域−時間領域変換部も備える。算術復号部は、コード値の記号コード（記号コードは、典型的には、スペクトル値もしくは複数のスペクトル値またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンを示す）へのマッピングを示すマッピング規則を現在のコンテキスト値によって示されるコンテキスト状態に応じて選択するように構成されている。算術復号部は、複数の以前に復号されたスペクトル値に応じて現在の数値コンテキスト値を決定するように構成されている。算術復号部はまた、以前に復号されたスペクトル値に基づいて複数のコンテキストサブ領域値を取得し、コンテキストサブ領域値を格納するようにも構成されている。算術復号部は、１つ以上の復号対象のスペクトル値に対応付けられた（あるいは、より厳密には、１つ以上の復号対象のスペクトル値の復号のためのコンテキストを定義する）現在の数値コンテキスト値を格納されたコンテキストサブ領域値に応じて導出するように構成されている。算術復号部は、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルムを、当該複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために計算するように構成されている。
【００１１】
本発明のこの実施の形態は、複数の以前に復号されたスペクトル値によって形成されたこのようなベクトルのノルムは、最も重要なコンテキスト情報を含むので、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルムを計算することによって、メモリ効率の高いコンテキストサブ領域情報を取得することができるという知見に基づいている。ノルムを形成することにより、スペクトル値の符号は、典型的には破棄される。しかし、スペクトル値の符号は、仮に何らかの影響を及ぼすとしても、コンテキスト状態に対して副次的な影響しか及ぼさず、したがって、コンテキストサブ領域値の有意性を著しく損なうことなく省略することが可能であることが分かっている。さらに、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルムを形成することにより（これにより典型的には平均化作用がもたらされる）、現在のコンテキスト状況を反映したコンテキストを十分な精度で生成しつつ、情報量を低減することが可能となることが分かっている。要約すると、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルム（スペクトル値それ自体ではなく）の計算に基づいたコンテキストサブ領域値を格納することにより、コンテキストを複数のコンテキストサブ領域値の形式で格納するためのメモリ要件を低く抑えることができる。
【００１２】
好ましい実施の形態において、算術復号部は、周波数領域−時間領域変換部の隣接する周波数ビンと、オーディオ情報の共通の時間的部分とに好ましくは対応付けらているが、必ずしもそうである必要はない、複数の以前に復号されたスペクトル値の絶対値を、当該複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために合計するように構成されている。ノルムの計算に相当する、複数の以前に復号されたスペクトル値の絶対値を合計することは、有意なコンテキストサブ領域値の特に効率的な計算方法であることが分かっている。ここで、ベクトルの絶対値の和を計算することは、当該ベクトルの、いわゆるＬ−１ノルムを計算することに等しい点に留意されたい。換言すると、ベクトルの絶対値の和の計算は、ノルムの計算の一例である.
好ましい実施の形態において、算術復号部は、周波数領域−時間領域変換部の隣接する周波数ビンと、オーディオ情報の共通の時間的部分とに対応付けられた複数の以前に復号されたスペクトル値のノルムを、当該複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために量子化するように構成されている。ノルムの量子化は、例えば、離散スケール（例えば、整数絶対値の和）でのノルムの計算およびその結果の限定を含み得る。
【００１３】
好ましい実施の形態において、算術復号部は、周波数領域−時間領域変換部の隣接する周波数ビンと、オーディオ情報の共通の時間的部分とに好ましくは対応付けらているが、必ずしもそうである必要はない、複数の以前に復号されたスペクトル値のノルムを、当該複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために量子化するように構成されている。ノルムの量子化は、情報量を適度に小さくしておくのに役立ち得ることが分かっている。例えば、量子化は、コンテキストサブ領域値の表現に必要とされるビット数を低減するのに役立ち、したがって、ビット数が小さい現在の数値コンテキスト値を提供することを容易にし得る。
【００１４】
好ましい実施の形態において、算術復号部は、複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、共通のコード値を用いて符号化される以前に復号されたスペクトル値の絶対値を合計するように構成されている。コンテキストの精度は、共通のコード値を用いて符号化されるスペクトル値について、共通のコンテキストサブ領域値が形成される場合に特に高いことが分かっている。したがって、各コンテキストサブ領域値はコード値に対応することができ、これにより、コンテキストサブ領域値を格納する際のメモリ効率が良好となる。
【００１５】
好ましい実施の形態において、算術復号部は、符号付きの復号された離散スペクトル値を周波数領域−時間領域変換部に提供し、複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、符号付きの復号されたスペクトル値に対応する絶対値を合計するように構成されている。周波数領域−時間領域変換部に対する入力値として符号付き値を用いることがオーディオ品質の面で有益である場合があることが分かっている。その理由は、これにより、オーディオコンテンツの復元において位相を考慮することが可能となるからである。しかし、位相情報は、ほとんどの場合、異なる周波数ビンの間で密接には相関してないため、コンテキストサブ領域値における位相情報の（すなわち、スペクトル値の符号情報の）省略は、コンテキストサブ領域値を用いて導出されるコンテキスト状態情報の精度を著しく低下させることはないことも分かっている。その理由は、位相情報は、殆どの場合において、異なる周波数ビン間に強く関連しないからである。
【００１６】
好ましい実施の形態において、算術復号部は、限定された合計値を、当該限定された合計値によって表される考えられる値の範囲が考えられ得る合計値の範囲よりも小さくなるように（あるいは限定されたノルム値のための考えられる値の範囲が考えられるノルム値の範囲よりも小さくなるように）、以前に復号された離散スペクトル値の絶対値の和から導出する（あるいは、複数の以前に復号された離散スペクトル値によって形成されたベクトルのノルムから限定されたノルム値を導出する）ように構成されている。コンテキストサブ領域値を限定することにより、コンテキストサブ領域値を格納するために必要とされるビット数を減少させることが可能となることが分かっている。また、ある一定の閾値よりも大きいスペクトル値について、コンテキストはそれ以上大きく変化しないため、コンテキストサブ領域値を適度に限定することは、情報の大きな損失をもたらさないことが分かっている。
【００１７】
好ましい実施の形態において、算術復号部は、以前に復号されたスペクトル値の異なる集合に対応付けられた複数のコンテキストサブ領域値に応じて、現在の数値コンテキスト値を取得するように構成されている。このような概念により、異なるスペクトル値（またはスペクトル値のタプル）の復号のために異なるコンテキストを効率的に考慮することが可能となる。単一の現在の数値コンテキスト値を取得するために複数のコンテキストサブ領域値が使用されるようにコンテキストサブ領域値の細分性を十分に高く維持することにより、復号対象のスペクトル値（またはスペクトル値のタプル）の復号の直前に実際の数値コンテキスト値を導出することができる、有意でありながらも広く使用可能なコンテキストサブ領域情報を格納することができる。
【００１８】
好ましい実施の形態において、算術復号部は、現在の数値コンテキスト値の数値表現を、当該現在の数値コンテキスト値の数値表現の第１の部分が複数の以前に復号されたスペクトル値の絶対値の第１の合計値または限定された合計値（あるいは、より一般的には、第１のノルム値または限定されたノルム値）によって決定され、当該現在の数値コンテキスト値の数値表現の第２の部分が複数の以前に復号されたスペクトル値の絶対値の第２の合計値または限定された合計値（あるいは、より一般的には、第２のノルム値または限定されたノルム値）によって決定されるように取得するように構成されている。現在の数値コンテキスト値の導出においてコンテキストサブ領域値を効率的に適用することが可能であることが分かっている。特に、上述のように計算されたコンテキストサブ領域値は、現在の数値コンテキスト値を構成するのによく適していることが分かっている。上述のように計算されたコンテキストサブ領域値は、現在の数値コンテキスト値の数値表現の異なる部分を決定するのによく適していることが分かっている。したがって、コンテキストサブ領域値の効率的な計算および現在の数値コンテキスト値の効率的な導出または更新の両方を実現することができる。
【００１９】
好ましい実施の形態において、算術復号部は、現在の数値コンテキスト値を、複数の以前に復号されたスペクトル値の絶対値の第１の合計値または限定された合計値（あるいは第１のノルム値または限定されたノルム値）および複数の以前に復号されたスペクトル値の絶対値の第２の合計値または限定された合計値（あるいは第２のノルム値または限定されたノルム値）が現在の数値コンテキスト値において異なる重みを含むように取得するように構成されている。したがって、コンテキストサブ領域値のベースとなるスペクトル値の、現在の復号対象である１つ以上のスペクトル値からの異なる距離を考慮に入れることができる。代替的に、現在の数値コンテキスト値において異なる数値的重みを適用することにより、コンテキストサブ領域値のベースとなるスペクトル値と現在の復号対象である１つ以上のスペクトル値との異なる相対位置を考慮に入れることができる。また、このような概念により、現在の数値コンテキスト値の繰返し更新が容易となり得る。なぜなら、数値表現の各部分の数値的重みは、シフト演算を適用することによって容易に変更が可能であるからである。
【００２０】
好ましい実施の形態において、算術復号部は、１つ以上の以前に復号されたスペクトル値に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値の数値表現を複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値（あるいはノルム値または限定されたノルム値）に応じて修正して、１つ以上の復号対象のスペクトル値に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現を取得するように構成されている。このように、現在の数値コンテキスト値の特に効率的な更新を実現することができ、現在の数値コンテキスト値の完全な再計算が回避される。
【００２１】
好ましい実施の形態において、算術復号部は、複数のコンテキストサブ領域値の和が所定の合計値閾値以下であるか否かをチェックし、当該チェックの結果に応じて現在の数値コンテキスト値を選択的に修正するように構成され、コンテキストサブ領域値のそれぞれは、対応付けられた複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値（あるいはノルム値または限定されたノルム値）である。したがって、比較的小さいスペクトル値の拡張された領域の存在を検出することができ、当該検出の結果をコンテキストの適合に適用することができる。例えば、比較的小さいスペクトル値のこのような拡張された領域の存在から、現在の数値コンテキスト値を用いて復号されるスペクトル値もまた比較的小さいという確率が高いという結論を導き出すことができる。したがって、特に効率的にコンテキストを適合することができる。
【００２２】
好ましい実施の形態において、算術復号部は、オーディオコンテンツの以前の時間的部分に対応付けられた以前に復号されたスペクトル値によって定義される複数のコンテキストサブ領域値を考慮するとともに、オーディオコンテンツの現在の時間的部分に対応付けられた以前に復号されたスペクトル値によって定義される少なくとも１つのコンテキストサブ領域値も考慮して、１つ以上の復号対象のスペクトル値に対応付けられかつオーディオコンテンツの現在の時間的部分に対応付けられた現在の数値コンテキスト値を取得するように構成され、その結果、現在の数値コンテキスト値を取得するために、以前の時間的部分の時間的に隣接する以前に復号されたスペクトル値と、現在の時間的部分の周波的に隣接する以前に復号されたスペクトル値との両方の環境が考慮される。したがって、特に有意なコンテキストを取得することができる。また、上記のコンテキストサブ領域値の導出により、以前の時間的部分のコンテキストサブ領域値を格納するためのメモリ要件が適度に小さく抑えられる点に留意されたい。
【００２３】
好ましい実施の形態において、算術復号部は、それぞれが複数の以前に復号されたスペクトル値の絶対値の合計値または限定された合計値（あるいは、より一般的には、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルム値）に基づいているコンテキストサブ領域値の集合をオーディオ情報の所与の時間的部分について格納し、オーディオ情報の所与の時間的部分に続くオーディオ情報の時間的部分の１つ以上のスペクトル値を復号するための現在の数値コンテキスト値を導出するためにコンテキストサブ領域値を使用する一方で、現在の数値コンテキスト値を導出する際には、個々の以前に復号されたスペクトル値をオーディオ情報の所与の時間的部分について考慮しないでおくように構成されている。したがって、現在の数値コンテキスト値の計算における効率性を高めることができる。また、個々の以前に復号されたスペクトル値を長期間格納する必要がなくなる。
【００２４】
好ましい実施の形態において、算術復号部は、大きさの値とスペクトル値の符号とを別々に復号するように構成されている。この場合、算術復号部は、復号対象のスペクトル値の復号のために現在の数値コンテキスト値を決定する際に、以前に復号されたスペクトル値の符号を考慮しないでおくように構成されている。絶対値とスペクトル値の符号とをこのように別々に扱うことは、コーディング効率を著しく低下させるのではなく、計算の複雑性を大きく低減させることが分かっている。さらに、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルムの計算に基づくコンテキストサブ領域値の計算は、このような概念との併用によく適合していることが分かっている。
【００２５】
本発明による実施の形態は、符号化されたオーディオ情報を入力オーディオ情報に基づいて提供するためのオーディオ符号化器を実現する。オーディオ符号化器は、周波数領域オーディオ表現を、当該周波数領域オーディオ表現がスペクトル値の集合を含むように、入力オーディオ情報の時間領域表現に基づいて提供するためのエネルギー圧縮型の時間領域−周波数領域変換部を備える。オーディオ符号化器は、スペクトル値またはその前処理されたバージョン、あるいは同等に、複数のスペクトル値またはその前処理されたバージョンを可変長コードワードを用いて符号化するように構成された算術符号化部を備える。算術符号化部は、スペクトル値またはスペクトル値の最上位ビットプレーン、あるいは同等に、複数のスペクトル値または複数のスペクトル値の最上位ビットプレーンの値をコード値にマッピングするように構成されている。算術符号化部は、スペクトル値またはスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則を、現在の数値コンテキスト値によって示されるコンテキスト状態に応じて選択するように構成されている。算術符号化部は、複数の以前に符号化されたスペクトル値に応じて現在の数値コンテキスト値を決定するように構成されている。算術符号化部は、以前に符号化されたスペクトル値に基づいて複数のコンテキストサブ領域値を取得し、当該コンテキストサブ領域値を格納し、符号化対象の１つ以上のスペクトル値に対応付けられた（あるいは、より厳密には、符号化対象のスペクトル値を符号化するためのコンテキストを定義する）現在の数値コンテキスト値を、格納されたコンテキストサブ領域値に応じて導出するように構成されている。算術符号化部は、複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムを、当該複数の以前に符号化されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために計算するように構成されている。
【００２６】
上記オーディオ符号化器は、上述のオーディオ復号器と同じタイミングに基づくものである。また、上記オーディオ符号化器は、オーディオ復号器に関して上記に説明した特徴および機能のいずれによっても補足することができる。
【００２７】
本発明による別の実施の形態は、復号されたオーディオ情報を符号化されたオーディオ情報に基づいて提供するための方法を実現する。
【００２８】
本発明による別の実施の形態は、符号化されたオーディオ情報を入力オーディオ情報に基づいて提供するための方法を実現する。
【００２９】
本発明による別の実施の形態は、上記方法のうち１つを実行するためのコンピュータプログラムを実現する。
【図面の簡単な説明】
【００３０】
次に、本発明による実施形態を添付の図面を参照しながら説明する。
【図１Ａ】図１Ａは、本発明の実施の形態によるオーディオ符号化器のブロック模式図を示す。
【図１Ｂ】図１Ｂは、本発明の実施の形態によるオーディオ符号化器のブロック模式図を示す。
【図２Ａ】図２Ａは、本発明の実施の形態によるオーディオ復号器のブロック模式図を示す。
【図２Ｂ】図２Ｂは、本発明の実施の形態によるオーディオ復号器のブロック模式図を示す。
【図３】図３は、スペクトル値を復号するためのアルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図４】図４は、状態計算のためのコンテキストの模式図を示す。
【図５ａ】図５ａは、コンテキストをマッピングするためのアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｂ】図５ｂは、コンテキストをマッピングするための別のアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｃ】図５ｃは、コンテキスト状態値を取得するためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｄ】図５ｄは、コンテキスト状態値を取得するための別のアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｅ】図５ｅは、状態値（または状態変数）から累積度数テーブルインデックス値「ｐｋｉ」を導出するためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現を示す。
【図５ｆ】図５ｆは、状態値（または状態変数）から累積度数テーブルインデックス値「ｐｋｉ」を導出するための別のアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現を示す。
【図５ｇ（１）】図５ｇ（１）は、可変長コードワードから記号を算術復号するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図５ｇ（２）】図５ｇ（２）は、可変長コードワードから記号を算術復号するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図５ｈ】図５ｈは、可変長コードワードから記号を算術復号するための別のアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現の第１の部分を示す。
【図５ｉ】図５ｉは、可変長コードワードから記号を算術復号するための上記別のアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現の第２の部分を示す。
【図５ｊ】図５ｊは、共通の値ｍからスペクトル値の絶対値ａ，ｂを導出するためのアルゴリズムの疑似プログラムコード表現を示す。
【図５ｋ】図５ｋは、復号された値ａ，ｂを復号されたスペクトル値の配列に入力するためのアルゴリズムの疑似プログラムコード表現を示す。
【図５ｌ】図５ｌは、復号されたスペクトル値の絶対値ａ，ｂに基づいてコンテキストサブ領域値を取得するためのアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｍ】図５ｍは、復号されたスペクトル値の配列およびコンテキストサブ領域値の配列のエントリを埋めるためのアルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の疑似プログラムコード表現を示す。
【図５ｎ】図５ｎは、共通の値ｍから復号されたスペクトル値の絶対値ａ，ｂを導出するための別のアルゴリズムの疑似プログラムコード表現を示す。
【図５ｏ】図５ｏは、復号されたスペクトル値の配列およびコンテキストサブ領域値の配列を更新するためのアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｐ】図５ｐは、復号されたスペクトル値の配列のエントリおよびコンテキストサブ領域値の配列のエントリを埋めるためのアルゴリズム「ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｑ】図５ｑは、定義の凡例を示す。
【図５ｒ】図５ｒは、定義の別の凡例を示す。
【図６ａ】図６ａは、音声オーディオ統合コーディング（ＵＳＡＣ）の生データブロックの構文表現を示す。
【図６ｂ】図６ｂは、単一のチャネル要素の構文表現を示す。
【図６ｃ】図６ｃは、チャネル対要素の構文表現を示す。
【図６ｄ】図６ｄは、「ＩＣＳ」制御情報の構文表現を示す。
【図６ｅ】図６ｅは、周波数領域チャネルストリームの構文表現を示す。
【図６ｆ】図６ｆは、算術コーディングされたスペクトルデータの構文表現を示す。
【図６ｇ】図６ｇは、スペクトル値の集合を復号するための構文表現を示す。
【図６ｈ】図６ｈは、スペクトル値の集合を復号するための別の構文表現を示す。
【図６ｉ】図６ｉは、データ要素および変数の凡例を示す。
【図６ｊ】図６ｊは、データ要素および変数の別の凡例を示す。
【図７】図７は、本発明の第１の態様によるオーディオ符号化器のブロック模式図を示す。
【図８】図８は、本発明の第１の態様によるオーディオ復号器のブロック模式図を示す。
【図９】図９は、本発明の第１の態様による、マッピング規則インデックス値への現在の数値コンテキスト値のマッピングのグラフ図を示す。
【図１０】図１０は、本発明の第２の態様によるオーディオ符号化器のブロック模式図を示す。
【図１１】図１１は、本発明の第２の態様によるオーディオ復号器のブロック模式図を示す。
【図１２】図１２は、本発明の第３の態様によるオーディオ符号化器のブロック模式図を示す。
【図１３】図１３は、本発明の第３の態様によるオーディオ復号器のブロック模式図を示す。
【図１４ａ】図１４ａは、ＵＳＡＣ規格案のワーキングドラフト（working draft）４に準じて使用される、状態計算のためのコンテキストの模式図を示す。
【図１４ｂ】図１４ｂは、ＵＳＡＣ規格案のワーキングドラフト４に準ずる算術コーディング方式において使用されるテーブルの概要を示す。
【図１５ａ】図１５ａは、本発明による実施の形態において使用される、状態計算のためのコンテキストの模式図を示す。
【図１５ｂ】図１５ｂは、本発明による算術コーディング方式において使用されるテーブルの概要を示す。
【図１６ａ】図１６ａは、本発明によるノイズレスコーディング方式、ＵＳＡＣ規格案のワーキングドラフト５によるノイズレスコーディング方式、およびＡＡＣ（アドバンスドオーディオコーディング）ハフマンコーディングによるノイズレスコーディング方式の読取り専用メモリ需要のグラフ図を示す。
【図１６ｂ】図１６ｂは、本発明およびＵＳＡＣ規格案のワーキングドラフト５の概念によるＵＳＡＣデコーダデータの読取り専用メモリの合計需要のグラフ図を示す。
【図１７】図１７は、ＵＳＡＣ規格案のワーキングドラフト３またはワーキングドラフト５によるノイズレスコーディングと本発明によるコーディング方式との比較のための構成の模式図を示す。
【図１８】図１８は、ＵＳＡＣ規格案のワーキングドラフト３によるＵＳＡＣ算術コーダによって生成される平均ビットレートおよび本発明の実施の形態によって生成される平均ビットレートのテーブル表現を示す。
【図１９】図１９は、ＵＳＡＣ規格案のワーキングドラフト３による算術復号部および本発明の実施の形態による算術復号部の最小および最大ビットリザーバレベルのテーブル表現を示す。
【図２０】図２０は、算術コーダの異なるバージョンについてのＵＳＡＣ規格案のワーキングドラフト３による３２ｋｂｉｔビットストリームの復号の平均複雑度のテーブル表現を示す。
【図２１（１）】図２１（１）は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２１（２）】図２１（２）は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２２（１）】図２２（１）は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２２（２）】図２２（２）は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２２（３）】図２２（３）は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２２（４）】図２２（４）は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」の内容のテーブル表現を示す。
【図２３（１）】図２３（１）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（２）】図２３（２）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（３）】図２３（３）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（４）】図２３（４）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（５）】図２３（５）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（６）】図２３（６）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２３（７）】図２３（７）は、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の内容のテーブル表現を示す。
【図２４】図２４は、テーブル「ａｒｉ＿ｃｆ＿ｒ［］」の内容のテーブル表現を示す。
【実施の形態の詳細な説明】
【００３１】
１．図７によるオーディオ符号化器
図７は、本発明の実施の形態によるオーディオ符号化器のブロック模式図を示す。オーディオ符号化器７００は、入力オーディオ情報７１０を受信し、これに基づいて、符号化されたオーディオ情報７１２を提供するように構成されている。オーディオ符号化器は、エネルギー圧縮型の時間領域−周波数領域変換部７２０を備え、時間領域−周波数領域変換部７２０は、周波数領域オーディオ表現７２２を、当該周波数領域オーディオ表現７２２がスペクトル値の集合を含むように、入力オーディオ情報７１０の時間領域表現に基づいて提供するように構成されている。オーディオ符号化器７００はまた、算術符号化部７３０も備え、算術符号化部７３０は、符号化されたオーディオ情報７１２（例えば、複数の可変長コードワードを含み得る）を取得するために、スペクトル値（周波数領域オーディオ表現７２２を形成するスペクトル値の集合のうちの）またはその前処理されたバージョンを可変長コードワードを用いて符号化するように構成されている。
【００３２】
算術符号化部７３０は、コンテキスト状態に応じて、スペクトル値またはスペクトル値の最上位ビットプレーンの値をコード値に（すなわち、可変長コードワードに）マッピングするように構成されている。算術符号化部は、（現在の）コンテキスト状態に応じて、スペクトル値またはスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則を選択するように構成されている。算術符号化部は、複数の以前に符号化された（好ましくは隣接しているが、必ずしもそうでなくてもよい）スペクトル値に応じて、現在のコンテキスト状態または現在のコンテキスト状態を示す現在の数値コンテキスト値を決定するように構成されている。この目的で、算術符号化部は、エントリが数値コンテキスト値のうちの上位状態値と数値コンテキスト値の間隔の境界との両方を定義するハッシュテーブルを評価するように構成され、マッピング規則インデックス値が、上位状態値である（現在の）数値コンテキスト値に個別に対応付けられ、共通のマッピング規則インデックス値が、間隔境界（間隔境界は、好ましくは、ハッシュテーブルのエントリによって定義される）によって境界付けられた間隔内に位置する異なる（現在の）数値コンテキスト値に対応付けられている。
【００３３】
（符号化されたオーディオ情報７１２の）コード値への（周波数領域オーディオ表現７２２の）スペクトル値またはスペクトル値の最上位ビットプレーンのマッピングは、マッピング規則７４２を用いたスペクトル値符号化７４０によって行われ得ることが分かる。状態追跡部７５０が、コンテキスト状態を追跡するように構成され得る。状態追跡部７５０は、現在のコンテキスト状態を示す情報７５４を提供する。現在のコンテキスト状態を示す情報７５４は、好ましくは、現在の数値コンテキスト値の形式を有する。マッピング規則選択部７６０が、コード値へのスペクトル値またはスペクトル値の最上位ビットプレーンのマッピングを示す、例えば、累積度数テーブルといったマッピング規則を選択するように構成されている。したがって、マッピング規則選択部７６０は、マッピング規則情報７４２をスペクトル値符号化７４０に提供する。マッピング規則情報７４２は、マッピング規則インデックス値またはマッピング規則インデックス値に応じて選択される累積度数テーブルの形式を有してもよい。マッピング規則選択部７６０は、エントリが数値コンテキスト値のうちの上位状態値と数値コンテキスト値の境界および間隔との両方を定義するハッシュテーブル７５２を含み（またはこれを少なくとも評価し）、マッピング規則インデックス値が、上位状態値である数値コンテキスト値に個別に対応付けられ、共通のマッピング規則インデックス値が、間隔境界によって境界付けられた間隔内に位置する異なる数値コンテキスト値に対応付けられている。ハッシュテーブル７６２は、マッピング規則を選択するために、すなわち、マッピング規則情報７４２を提供するために評価される。
【００３４】
上記を要約すると、オーディオ符号化器７００は、時間領域−周波数領域変換部によって提供された周波数領域オーディオ表現の算術符号化を行う。この算術符号化はコンテキスト依存型であり、したがって、マッピング規則（例えば、累積度数テーブル）が、以前に符号化されたスペクトル値に応じて選択される。したがって、互いにおよび／または現在符号化されているスペクトル値（すなわち、現在符号化されているスペクトル値の所定の環境内のスペクトル値）と時間および／または周波数において（あるいは、少なくとも所定の環境内において）隣接するスペクトル値が、算術符号化によって評価される確率分布を調整するために算術符号化において考慮される。適切なマッピング規則を選択する際、状態追跡部７５０によって提供された現在の数値コンテキスト値７５４が評価される。典型的には、異なるマッピング規則の数は、現在の数値コンテキスト値７５４の考えられる値の数よりも著しく小さいので、マッピング規則選択部７６０は、比較的多数の異なる数値コンテキスト値に対して同じマッピング規則（例えばマッピング規則インデックス値によって示される）を割り当てる。しかし、典型的には、良好なコーディング効率を得るために、あるマッピング規則を対応付けるべき特定のスペクトル構成（特定の数値コンテキスト値によって表される）がある。
【００３５】
現在の数値コンテキスト値に応じたマッピング規則の選択は、単一のハッシュテーブルの各エントリが上位状態値と（現在の）数値コンテキスト値の間隔の境界との両方を定義する場合、特に高い計算効率で行うことができるということが分かっている。単一の上位状態値（または上位数値コンテキスト値）が複数の上位でない状態値（共通のマッピング規則が対応付けられた）の左側の間隔と複数の上位でない状態値（共通のマッピング規則が対応付けられた）の右側の間隔との間に埋め込まれている場合が多いため、この機構はマッピング規則の選択の要件によく適合していることが分かっている。また、エントリが上位状態値と（現在の）数値コンテキスト値の間隔の境界との両方を定義する単一のハッシュテーブルを用いる機構は、例えば、上位状態値を介さずに隣接した上位でない状態値（上位でない数値コンテキスト値としても示される）の２つの間隔が存在する場合といったその他のケースを効率的に扱うことができる。テーブルアクセスの回数が少なく保たれるため、特に高い計算効率が達成される。例えば、ほとんどの実施の形態において、現在の数値コンテキスト値が上位状態値のいずれかに等しいか否か、あるいは現在の数値コンテキスト値が上位でない状態値の間隔のうちどの間隔内に位置するのかを調べるには、１回の繰返しテーブル検索を行うだけで十分である。これにより、多大な時間と労力を要するテーブルアクセスの回数を低く保つことができる。したがって、ハッシュテーブル７６２を用いるマッピング規則選択部７６０は、計算の複雑性の点で特に効率的なマッピング規則選択部でありながら、同時に、良好な符号化効率（ビットレートの面で）を得ることを可能にするものであると考えられる。
【００３６】
現在の数値コンテキスト値７５４からのマッピング規則情報７４２の導出に関する詳細については後述する。
２．図８によるオーディオ復号器
図８は、オーディオ復号器８００のブロック模式図を示す。オーディオ復号器８００は、符号化されたオーディオ情報８１０を受信し、これに基づいて、復号されたオーディオ情報８１２を提供するように構成されている。オーディオ復号器８００は、複数のスペクトル値８２２を当該スペクトル値の算術符号化された表現８２１に基づいて提供するように構成された算術復号部８２０を備える。オーディオ復号器８００はまた、周波数領域−時間領域変換部８３０も備え、周波数領域−時間領域変換部８３０は、復号されたオーディオ情報８１２を取得するために、復号されたスペクトル値８２２を受信し、復号されたオーディオ情報を構成し得る時間領域オーディオ表現８１２を復号されたスペクトル値８２２を用いて提供するように構成されている。
【００３７】
算術復号部８２０は、スペクトル値の算術符号化された表現８２１のコード値を、復号されたスペクトル値のうち１つ以上のスペクトル値または復号されたスペクトル値のうちの１つ以上のスペクトル値の少なくとも一部（例えば、最上位ビットプレーン）を表す記号コードにマッピングするように構成されたスペクトル値決定部８２４を備える。スペクトル値決定部８２４は、マッピング規則情報８２８ａによって示され得るマッピング規則に応じてマッピングを行うように構成され得る。マッピング規則情報８２８ａは、例えば、マッピング規則インデックス値または選択された累積度数テーブル（例えば、マッピング規則インデックス値に応じて選択された）の形式を有し得る。
【００３８】
算術復号部８２０は、（スペクトル値の算術符号化された表現８２１によって示される）コード値の（１つ以上のスペクトル値またはその最上位ビットプレーンを示す）記号コードへのマッピングを示すマッピング規則（例えば、累積度数テーブル）を、コンテキスト状態（コンテキスト状態情報８２６ａによって示され得る）に応じて選択するように構成されている。算術復号部８２０は、複数の以前に復号されたスペクトル値に応じて、現在のコンテキスト状態（現在の数値コンテキスト値によって示される）を決定するように構成されている。この目的で、状態追跡部８２６を用いてもよく、状態追跡部８２６は、以前に復号されたスペクトル値を示す情報を受信し、これに基づいて、現在のコンテキスト状態を示す現在の数値コンテキスト値８２６ａを提供する。
【００３９】
算術復号部は、マッピング規則を選択するために、エントリが数値コンテキスト値のうちの上位状態値と数値コンテキスト値の間隔の境界との両方を定義するハッシュテーブル８２９を評価するようにも構成され、マッピング規則インデックス値が、上位状態値である数値コンテキスト値に個別に対応付けられ、共通のマッピング規則インデックス値が、間隔境界によって境界付けられた間隔内に位置する異なる数値コンテキスト値に対応付けられている。ハッシュテーブル８２９の評価は、例えば、マッピング規則選択部８２８の一部であってもよいハッシュテーブル評価部を用いて行われてもよい。したがって、マッピング規則情報８２８ａが、例えば、マッピング規則インデックス値の形式において、現在のコンテキスト状態を示す現在の数値コンテキスト値８２６ａに基づいて取得される。マッピング規則選択部８２８は、例えば、ハッシュテーブル８２９の評価結果に応じてマッピング規則インデックス値８２８ａを決定してもよい。代替的に、ハッシュテーブル８２９の評価によって、直接マッピング規則インデックス値を提供してもよい。
【００４０】
オーディオ信号復号器８００の機能に関し、マッピング規則が現在のコンテキスト状態（例えば、現在の数値コンテキスト値によって示される）に応じて選択され、当該コンテキスト状態が複数の以前に復号されたスペクトル値に応じて決定されるので、算術復号部８２０は、復号対象のスペクトル値に概してよく適合したマッピング規則（例えば、累積度数テーブル）を選択するように構成されている点に留意されたい。これにより、隣接する復号対象のスペクトル値間の統計的依存性を利用することができる。さらに、算術復号部８２０は、マッピング規則選択部８２８を用いて効率的に実現することができ、計算の複雑性と、テーブルサイズと、コーディング効率とのトレードオフが良好となる。エントリが上位状態値と上位でない状態値の間隔の間隔境界との両方を示す（単一の）ハッシュテーブル８２９を評価することにより、１回の反復テーブル検索で現在の数値コンテキスト値８２６ａからマッピング規則情報８２８ａを十分に導出し得る。したがって、比較的多数の考えられる異なる（現在の）数値コンテキスト値を比較的少数の異なるマッピング規則インデックス値にマッピングすることができる。ハッシュテーブル８２９を用いることにより、上述のように、１つの孤立した上位状態値（上位コンテキスト値）が上位でない状態値（上位でないコンテキスト値）の左側の間隔と上位でない状態値（上位でないコンテキスト値）の右側の間隔との間に埋め込まれており、左側の間隔の状態値（コンテキスト値）および右側の間隔の状態値（コンテキスト値）を比較して、異なるマッピング規則インデックス値が上位状態値（上位コンテキスト値）に対応付けられているという知見を多くの場合において利用することができる。しかし、ハッシュテーブル８２９の使用はまた、数値状態の値の２つの間隔が上位状態値を介さずに直接隣接している状況にもよく適している。
【００４１】
結論すると、ハッシュテーブル８２９を評価するマッピング規則選択部８２８により、現在のコンテキスト状態に基づいて（または現在のコンテキスト状態を示す現在の数値コンテキスト値に基づいて）マッピング規則を選択する際（またはマッピング規則インデックス値を提供する際）に特に良好な効率が達成される。なぜなら、上記ハッシュ機構は、オーディオ復号器における典型的なコンテキストのシナリオによく適合しているからである。
【００４２】
さらなる詳細については後述する。
３.  図９によるコンテキスト値ハッシュ機構
以下に、マッピング規則選択部７６０および／またはマッピング規則選択部８２８において実施され得るコンテキストハッシュ機構について開示する。このコンテキスト値ハッシュ機構を実施するために、ハッシュテーブル７６２および／またはハッシュテーブル８２９を用いてもよい。
【００４３】
次に、現在の数値コンテキスト値ハッシュのシナリオを示す図９を参照し、さらなる詳細について説明する。図９のグラフ図において、横軸９１０は、現在の数値コンテキスト値（すなわち、数値コンテキスト値）の値を示している。縦軸９１２は、マッピング規則インデックス値を示している。表示９１４は、（上位でない状態を示す）上位でない数値コンテキスト値のためのマッピング規則インデックス値を示している。表示９１６は、個別の（真の）上位状態を示す「個別の」（真の）上位数値コンテキスト値のためのマッピング規則インデックス値を示している。表示９１６は、「不適切な」上位状態を示す「不適切な」数値コンテキスト値のためのマッピング規則インデックス値を示しており、ここで、「不適切な」上位状態とは、上位でない数値コンテキスト値の隣接する間隔のうちの１つと同じマッピング規則インデックス値が対応付けられた上位状態である。
【００４４】
ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ１］」が、数値コンテキスト値ｃ１を有する個別の（真の）上位状態を示していることが分かる。マッピング規則インデックス値ｍｒｉｖ１が、数値コンテキスト値ｃ１を有する個別の（真の）上位状態に対応付けられていることが分かる。したがって、数値コンテキスト値ｃ１とマッピング規則インデックス値ｍｒｉｖ１との両方がハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ１］」によって示され得る。数値コンテキスト値の間隔９３２が数値コンテキスト値ｃ１によって境界付けられており、数値コンテキスト値ｃ１は間隔９３２に属さず、したがって、間隔９３２の最大数値コンテキスト値はｃ１−１に等しい。マッピング規則インデックス値ｍｒｉｖ４（ｍｒｉｖ１とは異なる）が間隔９３２の数値コンテキスト値に対応付けられている。マッピング規則インデックス値ｍｒｉｖ４は、例えば、追加のテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１−１］」によって示され得る。
【００４５】
さらに、マッピング規則インデックス値ｍｒｉｖ２が、間隔９３４内に位置する数値コンテキスト値に対応付けられ得る。間隔９３４の下方境界は、上位数値コンテキスト値である数値コンテキスト値ｃ１によって決定され、数値コンテキスト値ｃ１は間隔９３２に属さない。したがって、間隔９３４の最小値は、ｃ１＋１に等しい（整数の数値コンテキスト値を仮定した場合）。間隔９３４の別の境界が、数値コンテキスト値ｃ２によって決定され、数値コンテキスト値ｃ２は、間隔９３４に属さず、したがって、間隔９３４の最大値は、ｃ２−１に等しい。数値コンテキスト値ｃ２は、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ２］」によって示される、いわゆる「不適切な」数値コンテキスト値である。例えば、マッピング規則インデックス値ｍｒｉｖ２は、数値コンテキスト値ｃ２に対応付けられてもよく、したがって、「不適切な」上位数値コンテキスト値ｃ２に対応付けられた数値コンテキスト値は、数値コンテキスト値ｃ２によって境界付けられた間隔９３４に対応付けられたマッピング規則インデックス値に等しい。さらに、数値コンテキスト値の間隔９３６もまた、数値コンテキスト値ｃ２によって境界付けられており、数値コンテキスト値ｃ２は間隔９３６に属さず、したがって、間隔９３６の最小数値コンテキスト値は、ｃ２＋１に等しい。マッピング規則インデックス値ｍｒｉｖ２とは典型的には異なるマッピング規則インデックス値ｍｒｉｖ３が、間隔９３６の数値コンテキスト値に対応付けられている。
【００４６】
数値コンテキスト値の間隔９３２に対応付けられたマッピング規則インデックス値ｍｒｉｖ４は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１−１］」によって示されてもよく、間隔９３４の数値コンテキスト値に対応付けられたマッピング規則インデックスｍｒｉｖ２は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１］」によって示されてもよく、マッピング規則インデックス値ｍｒｉｖ３は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ２］」によって示されてもよいことが分かる。本明細書に示される例において、ハッシュテーブルインデックス値ｉ２は、ハッシュテーブルインデックス値ｉ１より１だけ大きくてもよい。
【００４７】
図９から分かるように、マッピング規則選択部７６０またはマッピング規則選択部８２８は、現在の数値コンテキスト値７６４，８２６ａを受信することができ、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリを評価することにより、現在の数値コンテキスト値が上位状態値（それが「個別の」上位状態値であるか「不適切な」上位状態値であるかにかかわらず）であるか否か、あるいは現在の数値コンテキスト値が、（「個別の」または「不適切な」）上位状態値ｃ１，ｃ２によって境界付けられた間隔９３２，９３４，９３６のうちのいずれかに位置するか否かを決定することができる。現在の数値コンテキスト値が上位状態値ｃ１，ｃ２に等しいか否かのチェックおよび現在の数値コンテキスト値が間隔９３２，９３４，９３６のうちいずれに位置するか否かの評価（現在の数値コンテキスト値が上位状態値に等しくない場合）は、いずれも１回の共通のハッシュテーブル検索を用いて行うことができる。
【００４８】
さらに、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」の評価を用いてハッシュテーブルインデックス値（例えば、ｉ１−１，ｉ１，またはｉ２）を取得することができる。したがって、マッピング規則選択部７６０，８２８は、単一のハッシュテーブル７６２，８２９（例えば、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」）を評価することによって、上位状態値（例えば、ｃ１もしくはｃ２）および／または間隔（例えば、９３２，９３４，９３６）を指定するハッシュテーブルインデックス値（例えば、ｉ１−１，ｉ１もしくはｉ２）と、現在の数値コンテキスト値が上位コンテキスト値（上位状態値としても示される）であるか否かについての情報とを取得するように構成され得る。
【００４９】
さらに、ハッシュテーブル７６２，８２９，「ａｒｉ＿ｈａｓｈ＿ｍ」の評価において現在の数値コンテキスト値が「上位」コンテキスト値（または「上位」状態値）でないことが分かった場合、ハッシュテーブル（「ａｒｉ＿ｈａｓｈ＿ｍ」）の評価から取得されたハッシュテーブルインデックス値（例えば、ｉ１−１，ｉ１またはｉ２）を用いて、数値コンテキスト値の間隔９３２，９３４，９３６に対応付けられたマッピング規則インデックス値を取得し得る。例えば、ハッシュテーブルインデックス値（例えば、ｉ１−１，ｉ１またはｉ２）を用いて、現在の数値コンテキスト値が位置する間隔９３２，９３４，９３６に対応付けられたマッピング規則インデックス値を示す追加のマッピングテーブル（例えば、「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」）のエントリを指定し得る。
【００５０】
さらなる詳細については、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」に関する以下の詳細な説明を参照されたい（当該アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の異なるオプションが存在し、図５ｅおよび図５ｆにその例が示されている）。
【００５１】
さらに、間隔のサイズは、場合ごとに異なり得る点に留意されたい。ある場合においては、数値コンテキスト値の間隔は、１つの数値コンテキスト値を含む。しかし、多くの場合、間隔は、複数の数値コンテキスト値を含み得る。
４．図１０によるオーディオ符号化器
図１０は、本発明の実施の形態によるオーディオ符号化器１０００のブロック模式図を示す。図１０によるオーディオ符号化器１０００は、図７によるオーディオ符号化器７００と同様であるため、同一の信号および手段は、図７および図１０において同一の参照符号で示す。
【００５２】
オーディオ符号化器１０００は、入力オーディオ情報７１０を受信し、これに基づいて、符号化されたオーディオ情報７１２を提供するように構成されている。オーディオ符号化器１０００は、エネルギー圧縮型の時間領域−周波数領域変換部７２０を備え、時間領域−周波数領域変換部７２０は、周波数領域表現７２２を、当該周波数領域オーディオ表現７２２がスペクトル値の集合を含むように、入力オーディオ情報７１０の時間領域表現に基づいて提供するように構成されている。オーディオ符号化器１０００はまた、算術符号化部１０３０も備え、算術符号化部１０３０は、符号化されたオーディオ情報７１２（例えば、複数の可変長コードワードを含み得る）を取得するために、スペクトル値（周波数領域オーディオ表現７２２を形成するスペクトル値の集合のうちの）またはその前処理されたバージョンを可変長コードワードを用いて符号化するように構成されている。
【００５３】
算術符号化部１０３０は、コンテキスト状態に応じて、スペクトル値、または複数のスペクトル値、またはスペクトル値または複数のスペクトル値の最上位ビットプレーンの値をコード値に（すなわち、可変長コードワードに）マッピングするように構成されている。算術符号化部１０３０は、コンテキスト状態に応じて、スペクトル値、または複数のスペクトル値、またはスペクトル値または複数のスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則を選択するように構成されている。算術符号化部は、複数の以前に符号化された（好ましくは隣接しているが、必ずしもそうでなくてもよい）スペクトル値に応じて、現在のコンテキスト状態を決定するように構成されている。この目的で、算術符号化部は、１つ以上の以前に符号化されたスペクトル値に対応付けられたコンテキスト状態を示す（例えば、対応するマッピング規則を選択するために）、以前の数値コンテキスト値の数値表現をコンテキストサブ領域値に応じて修正し、１つ以上の符号化対象のスペクトル値に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現を取得する（例えば、対応するマッピング規則を選択するために）ように構成されている。
【００５４】
スペクトル値、または複数のスペクトル値、またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンのコード値へのマッピングは、マッピング規則情報７４２によって示されるマッピング規則を用いたスペクトル値符号化７４０によって行われ得ることが分かる。状態追跡部７５０は、コンテキスト状態を追跡するように構成され得る。状態追跡部７５０は、コンテキストサブ領域値に応じて、１つ以上の以前に符号化されたスペクトル値の符号化に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値の数値表現を修正し、１つ以上の符号化対象のスペクトル値の符号化に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現を取得するように構成され得る。以前の数値コンテキスト値の数値表現の修正は、例えば、以前の数値コンテキスト値および１つ以上のコンテキストサブ領域値を受信し、現在の数値コンテキスト値を提供する数値表現修正部１０５２によって行われ得る。したがって、状態追跡部１０５０は、現在のコンテキスト状態を示す情報７５４を、例えば現在の数値コンテキスト値の形式で提供する。マッピング規則選択部１０６０は、スペクトル値、または複数のスペクトル値、またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンのコード値へのマッピングを示す、例えば累積度数テーブルといったマッピング規則を選択し得る。したがって、マッピング規則選択部１０６０は、マッピング規則情報７４２をスペクトル符号化７４０に提供する。
【００５５】
いくつかの実施の形態では、状態追跡部１０５０は、状態追跡部７５０または状態追跡部８２６と同一であってもよい点に留意されたい。また、いくつかの実施の形態では、マッピング規則選択部１０６０は、マッピング規則選択部７６０またはマッピング規則選択部８２８と同一であってもよい点にも注意されたい。
【００５６】
上記を要約すると、オーディオ符号化器１０００は、時間領域−周波数領域変換部によって提供された周波数領域オーディオ表現の算術符号化を行う。この算術符号化は、コンテキスト依存型であり、したがって、マッピング規則（例えば、累積度数テーブル）が、以前に符号化されたスペクトル値に応じて選択される。したがって、互いにおよび／または現在符号化されているスペクトル値（すなわち、現在符号化されているスペクトル値の所定の環境内のスペクトル値）と時間および／または周波数において（あるいは、少なくとも所定の環境内において）隣接するスペクトル値が、算術符号化によって評価される確率分布を調整するために算術符号化において考慮される。
【００５７】
現在の数値コンテキスト値を決定する際、１つ以上の以前に符号化されたスペクトル値に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値の数値表現が、コンテキストサブ領域値に応じて修正され、１つ以上の符号化対象のスペクトル値に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現が取得される。この手法により、現在の数値コンテキスト値の完全な再計算を回避することが可能となる。この完全な再計算は、従来の手法において多量のリソースを使用する。以前の数値コンテキスト値の数値表現の修正には様々な可能性が存在し、これには、以前の数値コンテキスト値の数値表現の再スケーリング、コンテキストサブ領域値またはそれから得られる値の、以前の数値コンテキスト値の数値表現または以前の数値コンテキスト値の処理された数値表現への加算、以前の数値コンテキスト値の数値表現の一部（数値表現全体ではなく）のコンテキストサブ領域値に応じた置換等の組み合わせが含まれる。したがって、典型的には、現在の数値コンテキスト値の数値表現は、以前の数値コンテキスト値の数値表現と、少なくとも１つのコンテキストサブ領域値とに基づいて取得され、ここで、典型的には、以前の数値コンテキスト値をコンテキストサブ領域値と組み合わせるために、例えば、加法演算、減法演算、乗法演算、除法演算、ブールＡＮＤ演算、ブールＯＲ演算、ブールＮＡＮＤ演算、ブールＮＯＲ演算、ブール否定演算、補数演算、またはシフト演算から２つ以上の演算の組み合わせが実行される。したがって、以前の数値コンテキスト値から現在の数値コンテキスト値を導出する際、典型的には、以前の数値コンテキスト値の数値表現の少なくとも一部は変更されない（異なる位置への任意のシフトを除く）。これに対し、以前の数値コンテキスト値の数値表現の他の部分は、１つ以上のコンテキストサブ領域値に応じて変更される。したがって、現在の数値コンテキスト値の完全な再計算を回避しつつ、現在の数値コンテキスト値を比較的少ない計算労力で得ることができる。
【００５８】
したがって、マッピング規則選択部１０６０による使用によく適した有意な現在の数値コンテキスト値を得ることができる。
【００５９】
これにより、コンテキスト計算を十分に簡単にしておくことによって、効率的な符号化を実現することができる。
５．図１１によるオーディオ復号器
図１１は、オーディオ復号器１１００のブロック模式図を示す。オーディオ復号器１１００は、図８によるオーディオ復号器８００と同様であるため、同一の信号、手段、および機能は、同一の参照符号で示す。
【００６０】
オーディオ復号器１１００は、符号化されたオーディオ情報８１０を受信し、これに基づいて、復号されたオーディオ情報８１２を提供するように構成されている。オーディオ復号器１１００は、複数の復号されたスペクトル値８２２を当該スペクトル値の算術符号化された表現８２１に基づいて提供するように構成された算術復号部１１２０を備える。オーディオ復号器１１００はまた、周波数領域−時間領域変換部８３０も備え、周波数領域−時間領域変換部８３０は、復号されたオーディオ情報８１２を取得するために、復号されたスペクトル値８２２を受信し、復号されたオーディオ情報を構成し得る時間領域オーディオ表現８１２を復号されたスペクトル値８２２を用いて提供するように構成されている。
【００６１】
算術復号部１１２０は、スペクトル値の算術符号化された表現８２１のコード値を１つ以上の復号されたスペクトル値または１つ以上の復号されたスペクトル値の少なくとも一部（例えば、最上位ビットプレーン）を示す記号コードにマッピングするように構成されたスペクトル値決定部８２４を備える。スペクトル値決定部８２４は、マッピング規則情報８２８ａによって示され得るマッピング規則に応じてマッピングを行うように構成され得る。マッピング規則情報８２８ａは、例えば、マッピング規則インデックス値を含んでもよく、あるいは累積度数テーブルのエントリの選択された集合を含んでもよい。
【００６２】
算術復号部１１２０は、（スペクトル値の算術符号化された表現８２１によって示される）コード値の（１つ以上のスペクトル値を示す）記号コードへのマッピングを示すマッピング規則（例えば、累積度数テーブル）を、コンテキスト状態情報１１２６ａによって示され得るコンテキスト状態に応じて選択するように構成されている。コンテキスト状態情報１１２６ａは、現在の数値コンテキスト値の形式を有し得る。算術復号部１１２０は、複数の以前に復号されたスペクトル値８２２に応じて、現在のコンテキスト状態を決定するように構成されている。この目的で、以前に復号されたスペクトル値を示す情報を受信する状態追跡部１１２６が用いられ得る。算術復号部は、１つ以上の以前に復号されたスペクトル値に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値の数値表現をコンテキストサブ領域値に応じて修正し、１つ以上の復号対象のスペクトル値に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現を取得するように構成されている。以前の数値コンテキスト値の数値表現の修正は、例えば、状態追跡部１１２６の一部である数値表現修正部１１２７によって行われ得る。したがって、現在のコンテキスト状態情報１１２６ａは、例えば現在の数値コンテキスト値の形式で得られる。マッピング規則の選択は、現在のコンテキスト状態情報１１２６ａからマッピング規則情報８２８ａを導出し、スペクトル値決定部８２４にマッピング規則情報８２８ａを提供するマッピング規則選択部１１２８によって行われ得る。
【００６３】
オーディオ信号復号器１１００の機能に関し、マッピング規則が現在のコンテキスト状態に応じて選択され、当該コンテキスト状態が複数の以前に復号されたスペクトル値に応じて決定されるので、算術復号部１１２０は、復号対象のスペクトル値に概してよく適合したマッピング規則（例えば、累積度数テーブル）を選択するように構成されている点に留意されたい。これにより、復号対象の隣接するスペクトル値間の統計的依存性を利用することができる。
【００６４】
さらに、１つ以上の以前に復号されたスペクトル値の復号に対応付けられたコンテキスト状態を示す、以前の数値コンテキスト値の数値表現をコンテキストサブ領域値に応じて修正し、１つ以上の復号対象のスペクトル値の復号に対応付けられたコンテキスト状態を示す現在の数値コンテキスト値の数値表現を取得することにより、マッピング規則インデックス値のマッピングによく適した、現在のコンテキスト状態の有意な情報を比較的少ない計算労力で取得することができる。以前の数値コンテキスト値（場合によっては、ビットシフトまたはスケーリングされたバージョン）の数値表現の少なくとも一部を維持しつつ、以前の数値コンテキスト値の数値表現の別の部分を、以前の数値コンテキスト値においては考慮されなかったが現在の数値コンテキスト値において考慮されるべきコンテキストサブ領域値に応じて更新することにより、現在の数値コンテキスト値を導出するための演算数を比較的小さくしておくことができる。また、隣接するスペクトル値を復号するために使用されるコンテキストは、典型的には、類似しているかあるいは相関している点を利用することができる。例えば、第１のスペクトル値（または第１の複数のスペクトル値）の復号のためのコンテキストは、以前に復号されたスペクトル値の第１の集合に依存する。第１のスペクトル値（またはスペクトル値の第１の集合）に隣接する第２のスペクトル値（またはスペクトル値の第２の集合）の復号のためのコンテキストは、以前に復号されたスペクトル値の第２の集合を含み得る。第１のスペクトル値および第２のスペクトル値は、隣接する（例えば、対応付けられた周波数に関して）と仮定されるため、第１のスペクトル値のコーディングのためのコンテキストを決定するスペクトル値の第１の集合は、第２のスペクトル値の復号のためのコンテキストを決定するスペクトル値の第２の集合と部分的に重なり得る。したがって、第２のスペクトル値の復号のためのコンテキスト状態が第１のスペクトル値の復号のためのコンテキスト状態と何らかの相関を含むことは容易に理解される。コンテキストの導出、すなわち、現在の数値コンテキスト値の導出の計算効率化は、このような相関を利用して実現することができる。隣接するスペクトル値の復号のためのコンテキスト状態間（例えば、以前の数値コンテキスト値によって示されるコンテキスト状態と現在の数値コンテキスト値によって示されるコンテキスト状態間）の相関は、以前の数値コンテキスト値の、以前の数値コンテキスト状態の導出には考慮されなかったコンテキストサブ領域値に依存する部分のみを修正することおよび以前の数値コンテキスト値から現在の数値コンテキスト値を導出することによって効率的に利用することができることが分かっている。
【００６５】
結論すると、本明細書に記載される概念により、現在の数値コンテキスト値を導出する際に特に良好な計算効率を実現することが可能となる。
【００６６】
さらなる詳細については後述する。
６．図１２によるオーディオ符号化器
図１２は、本発明の実施の形態によるオーディオ符号化器のブロック模式図を示す。図１２によるオーディオ符号化器１２００は、図７によるオーディオ符号化器７００と同様であるため、同一の手段、信号、および機能は、同一の参照符号で示す。
【００６７】
オーディオ符号化器１２００は、入力オーディオ情報７１０を受信し、これに基づいて、符号化されたオーディオ情報７１２を提供するように構成されている。オーディオ符号化器１２００は、周波数領域オーディオ表現７２２を、当該周波数領域オーディオ表現７２２がスペクトル値の集合を含むように、入力オーディオ情報７１０の時間領域オーディオ表現に基づいて提供するように構成されたエネルギー圧縮型の時間領域−周波数領域変換部７２０を備えている。オーディオ符号化器１２００はまた、符号化されたオーディオ情報７１２（例えば、複数の可変長コードワードを含み得る）を取得するための可変長コードワードを用いて、周波数領域オーディオ表現７２２を形成するスペクトル値の集合のうちの）スペクトル値、または複数のスペクトル値またはその前処理されたバージョンを符号化するように構成された算術符号化部１２３０も備る。
【００６８】
算術符号化部１２３０は、コンテキスト状態に応じて、スペクトル値、または複数のスペクトル値、またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンの値をコード値に（すなわち、可変長コードワードに）マッピングするように構成されている。算術符号化部１２３０は、コンテキスト状態に応じて、スペクトル値、または複数のスペクトル値、またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンのコード値へのマッピングを示すマッピング規則を選択するように構成されている。算術符号化部は、複数の以前に符号化された（好ましくは隣接しているが、必ずしもそうでなくてもよい）スペクトル値に応じて、現在のコンテキスト状態を決定するように構成されている。この目的で、算術符号化部は、以前に符号化されたスペクトル値に基づいて複数のコンテキストサブ領域値を取得し、当該コンテキストサブ領域値を格納し、格納されたコンテキストサブ領域値に応じて、符号化対象の１つ以上のスペクトル値に対応付けられた現在の数値コンテキスト値を導出するように構成されている。さらに、算術符号化部は、複数の以前に符号化されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、当該複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムを計算するように構成されている。
【００６９】
スペクトル値、または複数のスペクトル値、またはスペクトル値もしくは複数のスペクトル値の最上位ビットプレーンのコード値へのマッピングは、マッピング規則情報７４２によって示されるマッピング規則を用いたスペクトル値符号化７４０によって行われ得ることが分かる。状態追跡部１２５０は、コンテキスト状態を追跡するように構成することができ、また、複数の以前に符号化されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、当該複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムを計算するためのコンテキストサブ領域値計算部１２５２を含み得る。状態追跡部１２５０はまた、好ましくは、コンテキストサブ領域値計算部１２５２によって実行されるコンテキストサブ領域値の上記計算結果に応じて現在のコンテキスト状態を決定するように構成される。したがって、状態追跡部１２５０は、現在のコンテキスト状態を示す情報１２５４を提供する。マッピング規則選択部１２６０が、スペクトル値またはスペクトル値の最上位ビットプレーンのコード値へのマッピングを示す、例えば累積度数テーブルといったマッピング規則を選択し得る。したがって、マッピング規則選択部１２６０は、マッピング規則情報７４２をスペクトル符号化７４０に提供する。
【００７０】
上記を要約すると、オーディオ符号化器１２００は、時間領域−周波数領域変換部７２０によって提供された周波数領域オーディオ表現の算術符号化を行う。この算術符号化は、コンテキスト依存型であり、したがって、マッピング規則（例えば、累積度数テーブル）は、以前に符号化されたスペクトル値に応じて選択される。したがって、互いにおよび／または現在符号化されているスペクトル値（すなわち、現在符号化されているスペクトル値の所定の環境内のスペクトル値）と時間および／または周波数において（あるいは、少なくとも所定の環境内において）隣接するスペクトル値が、算術符号化によって評価される確率分布を調整するために算術符号化において考慮される。
【００７１】
現在の数値コンテキスト値を提供するために、複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムの計算に基づいて、複数の以前に符号化されたスペクトル値に対応付けられたコンテキストサブ領域値が取得される。現在の数値コンテキスト値の決定結果は、現在のコンテキスト状態の選択、すなわち、マッピング規則の選択に適用される。
【００７２】
複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムを計算することにより、符号化対象の１つ以上のスペクトル値のコンテキストの一部を示す有意な情報を取得することができ、以前に符号化されたスペクトル値のベクトルのノルムは、典型的には、比較的少数のビットで表すことができる。したがって、コンテキストサブ領域値の計算のための上述の手法を適用することにより、現在の数値コンテキスト値の導出における後の使用のために格納される必要があるコンテキスト情報の量を十分に小さくしておくことができる。以前に符号化されたスペクトル値のベクトルのノルムは、典型的には、コンテキストの状態に関する最も重要な情報を含むことが分かっている。これに対し、以前に符号化されたスペクトル値の符号がコンテキストの状態に及ぼす影響は、典型的には、副次的なものであり、したがって、後の使用のために格納される情報量を低減するために以前に復号されたスペクトル値の符号を無視することは理にかなっていることが分かっている。また、典型的には、ノルムの計算によって得られる平均化作用により、コンテキスト状態の最も重要な情報は実質的に影響を受けないままとなるため、以前に符号化されたスペクトル値のベクトルのノルムの計算は、コンテキストサブ領域値の導出のための合理的アプローチであることも分かっている。要約すると、コンテキストサブ領域値計算部１２５２によって行われるコンテキストサブ領域値の計算により、格納および後の再利用のためのコンパクトなコンテキストサブ領域情報を提供することが可能となり、コンテキスト状態の最も重要な情報は、情報量の減少にもかかわらず保存される。
【００７３】
したがって、計算労力および算術符号化部１２３０によって格納されるデータ量を十分に小さくしながら、入力オーディオ情報７１０の効率的な符号化を実現することができる。
７．図１３によるオーディオ復号器
図１３は、オーディオ復号器１３００のブロック模式図を示す。オーディオ復号器１３００は、図８によるオーディオ復号器８００および図１１によるオーディオ復号器１１００と同様であるため、同一の手段、信号、および機能は、同一の参照符号で示す。
【００７４】
オーディオ復号器１３００は、符号化されたオーディオ情報８１０を受信し、これに基づいて、復号されたオーディオ情報８１２を提供するように構成されている。オーディオ復号器１３００は、複数の復号されたスペクトル値８２２を当該スペクトル値の算術符号化された表現８２１に基づいて提供するように構成された算術復号部１３２０を備える。オーディオ復号器１３００はまた、周波数領域−時間領域変換部８３０も備え、周波数領域−時間領域変換部８３０は、復号されたオーディオ情報８１２を取得するために、復号されたスペクトル値８２２を受信し、復号されたオーディオ情報を構成し得る時間領域オーディオ表現８１２を復号されたスペクトル値８２２を用いて提供するように構成されている。
【００７５】
算術復号部１３２０は、スペクトル値の算術符号化された表現８２１のコード値を１つ以上の復号されたスペクトル値または１つ以上の復号されたスペクトル値の少なくとも一部（例えば、最上位ビットプレーン）を示す記号コードにマッピングするように構成されたスペクトル値決定部８２４を備える。スペクトル値決定部８２４は、マッピング規則情報８２８ａによって示されるマッピング規則に応じてマッピングを行うように構成され得る。マッピング規則情報８２８ａは、例えば、マッピング規則インデックス値または累積度数テーブルのエントリの選択された集合を含み得る。
【００７６】
算術復号部１３２０は、（スペクトル値の算術符号化された表現８２１によって示される）コード値の（１つ以上のスペクトル値を示す）記号コードへのマッピングを示すマッピング規則（例えば、累積度数テーブル）を、（コンテキスト状態情報１３２６ａによって示され得る）コンテキスト状態に応じて選択するように構成されている。算術復号部１３２０は、複数の以前に復号されたスペクトル値８２２に応じて、現在のコンテキスト状態を決定するように構成されている。この目的で、以前に復号されたスペクトル値を示す情報を受信する状態追跡部１３２６が用いられ得る。算術復号部はまた、以前に復号されたスペクトル値に基づいて複数のコンテキストサブ領域値を取得し、当該コンテキストサブ領域値を格納するようにも構成されている。算術復号部は、格納されたコンテキストサブ領域値に応じて、復号対象の１つ以上のスペクトル値に対応付けられた現在の数値コンテキスト値を導出するように構成されている。算術復号部１３２０は、複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、複数の以前に復号されたスペクトル値によって形成されたベクトルのノルムを計算するように構成されている。
【００７７】
複数の以前に復号されたスペクトル値に対応付けられた共通のコンテキストサブ領域値を取得するために、複数の以前に符号化されたスペクトル値によって形成されたベクトルのノルムの計算は、例えば、状態追跡部１３２６の一部であるコンテキストサブ領域値計算部１３２７によって行われ得る。したがって、現在のコンテキスト状態情報１３２６ａは、コンテキストサブ領域値に基づいて取得され、状態追跡部１３２６が、好ましくは、格納されたコンテキストサブ領域値に応じて、復号対象の１つ以上のスペクトル値に対応付けられた現在の数値コンテキスト値を提供する。マッピング規則の選択は、現在のコンテキスト状態情報１３２６ａからマッピング規則情報８２８ａを導出し、スペクトル値決定部８２４にマッピング規則情報８２８ａを提供するマッピング規則選択部１３２８によって行われ得る。
【００７８】
オーディオ信号復号器１３００の機能に関し、マッピング規則が現在のコンテキスト状態に応じて選択され、当該コンテキスト状態が複数の以前に復号されたスペクトル値に応じて決定されるので、算術復号部１３２０は、復号対象のスペクトル値に概してよく適合したマッピング規則（例えば、累積度数テーブル）を選択するように構成されている点に留意されたい。これにより、復号対象の隣接するスペクトル値間の統計的依存性を利用することができる。
【００７９】
しかし、メモリ使用量の点の観点から、数値コンテキスト値の決定における後の使用のために、複数の以前に復号されたスペクトル値で形成されたベクトルのノルムの計算に基づくコンテキストサブ領域値を格納することが効率的であることが分かっている。このようなコンテキストサブ領域値もまた、最も重要なコンテキスト情報を含むことも分かっている。したがって、状態追跡部１３２６によって使用される概念は、コーディング効率、計算効率、および格納効率の良好な妥協案となるものである。
【００８０】
さらなる詳細については後述する。
８．図１によるオーディオ符号化器
以下に、本発明の実施の形態によるオーディオ符号化器について説明する。
図１は、このようなオーディオ符号化器１００のブロック模式図を示す。
【００８１】
オーディオ符号化器１００は、入力オーディオ情報１１０を受信し、これに基づいて、符号化されたオーディオ情報を構成するビットストリーム１１２を提供するように構成されている。オーディオ符号化器１００は、前処理部１２０を任意に含み、前処理部１２０は、入力オーディオ情報１１０を受信し、これに基づいて、前処理された入力オーディオ情報１１０ａを提供するように構成されている。オーディオ符号化器１００はまた、エネルギー圧縮型の時間領域−周波数領域信号変換部１３０（信号変換部としても示される）も備える。信号変換部１３０は、入力オーディオ情報１１０，１１０ａを受信し、これに基づいて、好ましくはスペクトル値の集合の形式を有する周波数領域オーディオ情報１３２を提供するように構成されている。例えば、信号変換部１３０は、入力オーディオ情報１１０，１１０ａのフレーム（例えば、時間領域サンプルのブロック）を受信し、それぞれのオーディオフレームのオーディオコンテンツを表すスペクトル値の集合を提供するように構成され得る。さらに、信号変換部１３０は、入力オーディオ情報１１０，１１０ａの複数の後の重複または非重複オーディオフレームを受信し、これに基づいて、スペクトル値の後の集合のシーケンス（スペクトル値の１つの集合が各フレームに対応付けられている）を含む時間周波数領域オーディオ表現を提供するように構成され得る。
【００８２】
エネルギー圧縮型の時間領域−周波数領域信号変換部１３０は、重なり合うかあるいは重なり合わない異なる周波数範囲に対応付けられたスペクトル値を提供するエネルギー圧縮型のフィルタバンクを含み得る。例えば、信号変換部１３０は、変換ウィンドウを用いて入力オーディオ情報１１０，１１０ａ（またはそのフレーム）をウィンドウ処理し、ウィンドウ処理された入力オーディオ情報１１０，１１０ａ（または、そのウィンドウ処理されたフレーム）の修正離散コサイン変換を行うように構成されたウィンドウ処理ＭＤＣＴ変換部１３０ａを含み得る。したがって、周波数領域オーディオ表現１３２は、例えば、１０２４個のスペクトル値の集合を入力オーディオ情報のフレームに対応付けられたＭＤＣＴ係数の形式で含み得る。
【００８３】
オーディオ符号化器１００は、周波数領域オーディオ表現１３２を受信し、これに基づいて、後処理された周波数領域オーディオ表現１４２を提供するように構成されたスペクトル後処理部１４０をさらに任意に含み得る。スペクトル後処理部１４０は、例えば、時間領域雑音整形および／または長期予測および／または当該技術分野において公知である他の後処理技術を行うように構成され得る。オーディオ符号化器は、周波数領域オーディオ表現１３２またはその後処理されたバージョン１４２を受信し、スケーリングおよび量子化された周波数領域オーディオ表現１５２を提供するように構成されたスケーリング／量子化部１５０をさらに任意に含み得る。
【００８４】
オーディオ符号化器１００は、心理音響モデル処理部１６０をさらに任意に含み、心理音響モデル処理部１６０は、入力オーディオ情報１１０（またはその後処理されたバージョン１１０ａ）を受信し、これに基づいて、エネルギー圧縮型の時間領域−周波数領域信号変換部１３０の制御、任意のスペクトル後処理部１４０の制御および／または任意のスケーリング／量子化部１５０の制御のために用いられ得る任意の制御情報を提供するように構成されている。例えば、心理音響モデル処理部１６０は、入力オーディオ情報を分析して、入力オーディオ情報１１０，１１０ａのどの成分がオーディオコンテンツの人間による知覚にとって特に重要であるかと、入力オーディオ情報１１０，１１０ａのどの成分がオーディオコンテンツの当該知覚にとって重要性が低いのかを判定するように構成され得る。したがって、心理音響モデル処理部１６０は、スケーリング／量子化部１５０による周波数領域オーディオ表現１３２，１４２のスケーリングおよび／またはスケーリング／量子化部１５０によって適用される量子化分解能の調整を行うために、オーディオ符号化器１００によって用いられる制御情報を提供し得る。これにより、知覚的に重要なスケーリング因子バンド（すなわち、オーディオコンテンツの人間による知覚にとって特に重要な隣接するスペクトル値のグループ）は、大きいスケーリング因子を用いてスケーリングされ、比較的高い分解能を用いて量子化される一方で、知覚的に重要度の低いスケーリング因子バンド（すなわち、隣接するスペクトル値のグループ）は、比較的小さいスケーリング因子を用いてスケーリングされ、比較的低い量子化分解能を用いて量子化される。したがって、知覚的に重要度の高い周波数のスケーリングされたスペクトル値は、典型的には、知覚的に重要度の低い周波数のスペクトル値よりも著しく大きい。
【００８５】
オーディオ符号化器はまた、周波数領域オーディオ表現１３２のスケーリングおよび量子化されたバージョン１５２（あるいは、代替的に、周波数領域オーディオ表現１３２の後処理されたバージョン１４２、またはさらには周波数領域オーディオ表現１３２それ自体）を受信し、これに基づいて、算術コードワード情報１７２ａを提供するように構成された算術符号化部１７０も含み、したがって、算術コードワード情報は、周波数領域オーディオ表現１５２を表す。
【００８６】
オーディオ符号化器１００はまた、算術コードワード情報１７２ａを受信するように構成されたビットストリームペイロードフォーマット部１９０も含む。ビットストリームペイロードフォーマット部１９０もまた、典型的には、例えば、どのスケーリング因子がスケーリング／量子化部１５０によって適用されたかを示すスケーリング因子情報といった追加の情報を受信するように構成されている。さらに、ビットストリームペイロードフォーマット部１９０は、他の制御情報を受信するように構成され得る。ビットストリームペイロードフォーマット部１９０は、後述の所望のビットストリーム構文に従ってビットストリームを組み立てることにより、受信した情報に基づいてビットストリーム１１２を提供するように構成されている。
【００８７】
以下に、算術符号化部１７０の詳細について説明する。算術符号化部１７０は、周波数領域オーディオ表現１３２の複数の後処理、スケーリング、および量子化されたスペクトル値を受信するように構成されている。算術符号化部は、１つのスペクトル値、あるいはさらには２つのスペクトル値から最上位ビットプレーンｍを抽出するように構成された最上位ビットプレーン抽出部１７４を含む。ここで、最上位ビットプレーンは、スペクトル値の最上位ビットである１つまたはさらにはそれ以上のビット（例えば、２つまたは３つのビット）を含み得る点に留意されたい。したがって、最上位ビットプレーン抽出部１７４は、スペクトル値の最上位ビットプレーン値１７６を提供する。
【００８８】
しかし、代替的に、最上位ビットプレーン抽出部１７４は、複数のスペクトル値の（例えば、スペクトル値ａおよびｂの）最上位ビットプレーンを組み合わせた組み合わせ最上位ビットプレーン値ｍを提供してもよい。スペクトル値ａの最上位ビットプレーンは、ｍで指定される。代替的に、複数のスペクトル値ａ，ｂの組み合わせ最上位ビットプレーン値がｍで指定される。
【００８９】
算術符号化部１７０はまた、最上位ビットプレーン値ｍを表す算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を決定するように構成された第１のコードワード決定部１８０も含む。任意には、コードワード決定部１８０はまた、例えば、利用可能な下位ビットプレーンの数を示す（ひいては最上位ビットプレーンの数値的重みを示す）１つ以上のエスケープコードワード（本明細書において「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」によっても示される）も提供し得る。第１のコードワード決定部１８０は、累積度数テーブルインデックスｐｋｉを有する（あるいは、これによって参照される）選択された累積度数テーブルを用いて、最上位ビットプレーン値ｍに対応付けられたコードワードを提供するように構成され得る。
【００９０】
どの累積度数テーブルが選択されるべきであるかを決定するために、算術符号化部は、例えば、どのスペクトル値が以前に符号されたかを観察することによって、算術符号化部の状態を追跡するように構成された状態追跡部１８２を好ましくは含む。状態追跡部１８２は、これにより、例えば、「ｓ」または「ｔ」または「ｃ」で指定される状態値といった状態情報１８４を提供する。算術符号化部１７０はまた、状態情報１８４を受信し、選択された累積度数テーブルを示す情報１８８をコードワード決定部１８０に提供するように構成された累積度数テーブル選択部１８６も含む。例えば、累積度数テーブル選択部１８６は、９６個の累積度数テーブルからなる組のうちどの累積度数テーブルがコードワード決定部による使用のために選択されるかを示す累積度数テーブルインデックス「ｐｋｉ」を提供し得る。代替的に、累積度数テーブル選択部１８６は、選択された累積度数テーブル全体またはサブテーブルをコードワード決定部に提供することができる。よって、コードワード決定部１８０は、選択された累積度数テーブルまたはサブテーブルを最上位ビットプレーン値ｍのコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を提供するために用いることができ、したがって、最上位ビットプレーン値ｍを符号化する実際のコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］は、ｍの値および累積度数テーブルインデックスｐｋｉ、ひいては現在の状態情報１８４に依存する。コーディング処理および取得されるコードワードのフォーマットのさらなる詳細については後述する。
【００９１】
ただし、いくつかの実施の形態では、状態追跡部１８２は、状態追跡部７５０、状態追跡部１０５０、または状態追跡部１２５０と同一であり得るか、あるいはその機能を有し得る点に留意されたい。また、いくつかの実施の形態では、累積度数テーブル選択部１８６は、マッピング規則選択部７６０、マッピング規則選択部１０６０、またはマッピング規則選択部１２６０と同一であるか、あるいはその機能を有してもよい点にも注意されたい。さらに、いくつかの実施の形態では、第１のコードワード決定部１８０は、スペクトル値符号化７４０と同一であるか、あるいはその機能を有してもよい。
【００９２】
算術符号化部１７０は、下位ビットプレーン抽出部１８９ａをさらに含み、下位ビットプレーン抽出部１８９ａは、符号化対象の１つ以上のスペクトル値が、最上位ビットプレーンのみを用いて符号化可能な値の範囲を上回る場合、スケーリングおよび量子化された周波数領域オーディオ表現１５２から１つ以上の下位ビットプレーンを抽出するように構成されている。下位ビットプレーンは、必要に応じて１つ以上のビットを含み得る。したがって、下位ビットプレーン抽出部１８９ａは、下位ビットプレーン情報１８９ｂを提供する。算術符号化部１７０はまた、第２のコードワード決定部１８９ｃも含み、第２のコードワード決定部１８９ｃは、下位ビットプレーン情報１８９ｄを受信し、これに基づいて、０個、１個またはそれ以上の下位ビットプレーンの内容を表す０個、１個またはそれ以上のコードワード「ａｃｏｄ＿ｒ」を提供するように構成されている。第２のコードワード決定部１８９ｃは、下位ビットプレーン情報１８９ｂから下位ビットプレーンのコードワード「ａｃｏｄ＿ｒ」を導出するために、算術符号化アルゴリズムまたは他の符号化アルゴリズムを適用するように構成され得る。
【００９３】
ここで、下位ビットプレーンの数は、スケーリングおよび量子化されたスペクトル値１５２の値に応じて異なり得るため、符号化対象のスケーリングおよび量子化されたスペクトル値が比較的少数であれば下位ビットプレーンが全く存在しない場合があり、符号化対象である現在のスケーリングおよび量子化されたスペクトル値が中間の範囲のものであれば１つの下位ビットプレーンが存在する場合があり、符号化対象のスケーリングおよび量子化されたスペクトル値が比較的大きい値を有していれば２つ以上の下位ビットプレーンが存在する場合がある点に留意されたい。
【００９４】
上記を要約すると、算術符号化部１７０は、階層型符号化処理を用いて、情報１５２によって示されるスケーリングおよび量子化されたスペクトル値を符号化するように構成されている。１つ以上のスペクトル値の最上位ビットプレーン（例えば、１つのスペクトル値につき１つ、２つまたは３つのビットを含む）が符号化され、最上位ビットプレーン値ｍの算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」が取得される。１つ以上のスペクトル値の１つ以上の下位ビットプレーン（下位ビットプレーンのそれぞれが、例えば、１つ、２つまたは３つのビットを含む）が符号化され、１つ以上のコードワード「ａｃｏｄ＿ｒ」が取得される。最上位ビットプレーンを符号化する際、最上位ビットプレーンの値ｍは、コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］にマッピングされる。この目的で、算術符号化部１７０の状態に応じて、すなわち、以前に符号化されたスペクトル値に応じて、値ｍの符号化のために９６個の異なる累積度数テーブルが利用可能である。したがって、コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」が取得される。さらに、１つ以上の下位ビットプレーンが存在する場合、１つ以上のコードワード「ａｃｏｄ＿ｒ」が提供され、ビットストリームに含められる。
リセットの説明
オーディオ符号化器１００は、任意には、例えば、状態インデックスをデフォルト値に設定することによってコンテキストをリセットすることによりビットレートを改善することが可能であるか否かを判断するように構成され得る。したがって、オーディオ符号化器１００は、算術符号化のためのコンテキストがリセットされるか否かと、対応する復号器における算術復号のためのコンテキストがリセットされるべきか否かとを示すリセット情報（例えば、「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」と称される）を提供するように構成され得る。
【００９５】
ビットストリームのフォーマットおよび適用される累積度数テーブルに関する詳細については後述する。
９．図２によるオーディオ復号器
以下に、本発明の実施の形態によるオーディオ復号器について説明する。図２は、このようなオーディオ復号器２００のブロック模式図を示す。
【００９６】
オーディオ復号器２００は、符号化されたオーディオ情報を表しかつオーディオ符号化器１００によって提供されるビットストリーム１１２と同一であり得るビットストリーム２１０を受信するように構成されている。オーディオ復号器２００は、ビットストリーム２１０に基づいて、復号されたオーディオ情報２１２を提供する。
【００９７】
オーディオ復号器２００は、ビットストリーム２１０を受信し、符号化された周波数領域オーディオ表現２２２をビットストリーム２１０から抽出するように構成された任意のビットストリームペイロードデフォーマット部２２０を含む。例えば、ビットストリームペイロードデフォーマット部２２０は、周波数領域オーディオ表現のスペクトル値ａまたは複数のスペクトル値ａ，ｂの最上位ビットプレーン値ｍを表す算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」および周波数領域オーディオ表現のスペクトル値ａまたは複数のスペクトル値ａ，ｂの下位ビットプレーンの内容を表すコードワード「ａｃｏｄ＿ｒ」等の算術コーディングされたスペクトルデータをビットストリーム２１０から抽出するように構成され得る。したがって、符号化された周波数領域オーディオ表現２２２は、スペクトル値の算術符号化された表現を構成する（あるいは含む）。ビットストリームペイロードデフォーマット部２２０は、ビットストリームから追加の制御情報（図２では不図示）を抽出するように構成されている。また、ビットストリームペイロードデフォーマット部は、任意には、ビットストリーム２１０から状態リセット情報２２４（算術リセットフラグまたは「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」としても示される）を抽出するように構成されている。
【００９８】
オーディオ復号器２００は、算術復号部２３０（「スペクトルノイズレス復号部」としても示される）を含む。算術復号部２３０は、符号化された周波数領域オーディオ表現２２０および任意で状態リセット情報２２４を受信するように構成されている。算術復号部２３０はまた、スペクトル値の復号された表現を含み得る復号された周波数領域オーディオ表現２３２を提供するようにも構成されている。例えば、復号された周波数領域オーディオ表現２３２は、符号化された周波数領域オーディオ表現２２０によって示されるスペクトル値の復号された表現を含み得る。
【００９９】
オーディオ復号器２００はまた、任意の逆量子化／再スケーリング部２４０も含み、逆量子化／再スケーリング部２４０は、復号された周波数領域オーディオ表現２３２を受信し、これに基づいて、逆量子化および再スケーリングされた周波数領域オーディオ表現２４２を提供するように構成されている。
【０１００】
オーディオ復号器２００は、任意のスペクトル前処理部２５０をさらに含み、スペクトル前処理部２５０は、逆量子化および再スケーリングされた周波数領域オーディオ表現２４２を受信し、これに基づいて、逆量子化および再スケーリングされた周波数領域オーディオ表現２４２の前処理されたバージョン２５２を提供するように構成されている。オーディオ復号器２００はまた、周波数領域−時間領域信号変換部２６０（「信号変換部」としても示される）も含む。信号変換部２６０は、逆量子化および再スケーリングされた周波数領域オーディオ表現２４２（あるいは、代替的に、逆量子化および再スケーリングされた周波数領域オーディオ表現２４２または復号された周波数領域オーディオ表現２３２）の前処理されたバージョン２５２を受信し、これに基づいて、オーディオ情報の時間領域表現２６２を提供するように構成されている。周波数領域−時間領域信号変換部２６０は、例えば、逆修正離散コサイン変換（ＩＭＤＣＴ）および適切なウィンドウ処理（ならびに重複−加算等の他の補助機能）を実行するための変換部を含み得る。
【０１０１】
オーディオ復号器２００は、オーディオ情報の時間領域表現２６２を受信し、時間領域後処理を用いて復号されたオーディオ情報２１２を取得するように構成された任意の時間領域後処理部２７０をさらに含み得る。ただし、後処理が省略される場合、時間領域表現２６２は、復号されたオーディオ情報２１２と同一であり得る。
【０１０２】
ここで、逆量子化／再スケーリング部２４０、スペクトル前処理部２５０、周波数領域−時間領域信号変換部２６０、および時間領域後処理部２７０は、ビットストリームペイロードデフォーマット部２２０によってビットストリーム２１０から抽出された制御情報に応じて制御され得る点に留意されたい。
【０１０３】
オーディオ復号器２００の機能全体を要約すると、復号された周波数領域オーディオ表現２３２、例えば、符号化されたオーディオ情報のオーディオフレームに対応付けられたスペクトル値の集合は、算術復号部２３０を用いて、符号化された周波数領域表現２２２に基づいて取得され得る。続いて、ＭＤＣＴ係数であり得る、例えば１０２４個のスペクトル値の集合が逆量子化され、再スケーリングされ、前処理される。これにより、逆量子化、再スケーリング、およびスペクトル前処理されたスペクトル値の集合（例えば、１０２４個のＭＤＣＴ係数）が取得される。その後、逆量子化、再スケーリング、およびスペクトル前処理された周波数領域値の集合（例えば、ＭＤＣＴ係数）からオーディオフレームの時間領域表現が導出される。したがって、オーディオフレームの時間領域表現が取得される。所与のオーディオフレームの時間領域表現を、以前および／後のオーディオフレームの時間領域表現と組み合わせることができる。隣接するオーディオフレームの時間領域表現間の移行を平滑化するとともに、エイリアシングキャンセルを実現するために、例えば、後のオーディオフレームの時間領域表現間の重複−加算を行うことができる。復号された時間周波数領域オーディオ表現２３２に基づく復号されたオーディオ情報２１２の復元に関する詳細については、例えば、詳細な記載がある国際規格ＩＳＯ／ＩＥＣ１４４９６−３，パート３，サブパート４を参照されたい。ただし、他のより精巧な重複方式およびエイリアシングキャンセル方式を用いてもよい。
【０１０４】
以下に、算術復号部２３０の詳細の一部について説明する。算術復号部２３０は、最上位ビットプレーン値ｍを示す算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を受信するように構成された最上位ビットプレーン決定部２８４を含む。最上位ビットプレーン決定部２８４は、算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」から最上位ビットプレーン値ｍを導出するための複数の９６個の累積度数テーブルからなる集合から１つの累積度数テーブルを使用するように構成され得る。
【０１０５】
最上位ビットプレーン決定部２８４は、コードワードａｃｏｄ＿ｍに基づいて１つ以上のスペクトル値の最上位ビットプレーンの値２８６を導出するように構成されている。算術復号部２３０は、スペクトル値の１つ以上の下位ビットプレーンを表す１つ以上のコードワード「ａｃｏｄ＿ｒ」を受信するように構成された下位ビットプレーン決定部２８８をさらに含む。したがって、下位ビットプレーン決定部２８８は、１つ以上の下位ビットプレーンの復号された値２９０を提供するように構成されている。オーディオ復号器２００はまた、１つ以上のスペクトル値の最上位ビットプレーンの復号された値２８６および当該スペクトル値の１つ以上の下位ビットプレーンの復号された値２９０（現在のスペクトル値に対してこのような下位ビットプレーンが利用可能である場合）を受信するように構成されたビットプレーン結合部２９２も含む。したがって、ビットプレーン結合部２９２は、復号された周波数領域オーディオ表現２３２の一部である復号されたスペクトル値を提供する。当然、算術復号部２３０は、典型的には、オーディオコンテンツの現在のフレームに対応付けられた復号されたスペクトル値の完全な集合を取得するために複数のスペクトル値を提供するように構成されている。
【０１０６】
算術復号部２３０は、算術復号部の状態を示す状態インデックス２９８に応じて９６個の累積度数テーブルのうちの１つを選択するように構成された累積度数テーブル選択部２９６をさらに含む。算術復号部２３０は、以前に復号されたスペクトル値に応じて算術復号部の状態を追跡するように構成された状態追跡部２９９をさらに含む。状態情報は、任意には、状態リセット情報２２４に応じてデフォルトの状態情報にリセットされ得る。したがって、累積度数テーブル選択部２９６は、コードワード「ａｃｏｄ＿ｍ」に応じて、最上位ビットプレーン値ｍの復号における適用のために、選択された累積度数テーブルのインデックス（例えば、ｐｋｉ）、または選択された累積度数テーブル、または選択された累積度数テーブルもしくはそのサブテーブル自体を提供するように構成されている。
【０１０７】
オーディオ復号器２００の機能を要約すると、オーディオ復号器２００は、ビットレート効率よく符号化された周波数領域オーディオ表現２２２を受信し、これに基づいて、復号された周波数領域オーディオ表現を取得するように構成されている。符号化された周波数領域オーディオ表現２２２に基づいて復号された周波数領域オーディオ表現２３２を取得するために用いられる算術復号部２３０では、累積度数テーブルを適用するように構成された算術復号部２８０を用いることにより、隣接するスペクトル値の最上位ビットプレーンの値の異なる組み合わせの確率が利用される。換言すれば、以前に計算された復号されたスペクトル値を観察することによって取得される状態インデックス２９８に応じて、９６個の異なる累積度数テーブルを含む集合から異なる累積度数テーブルを選択することにより、スペクトル値間の統計的依存性が利用される。
【０１０８】
状態追跡部２９９は、状態追跡部８２６、状態追跡部１１２６、または状態追跡部１３２６と同一であり得るか、あるいはその機能を有し得る点に留意されたい。累積度数テーブル選択部２９６は、マッピング規則選択部８２８、マッピング規則選択部１１２８、またはマッピング規則選択部１３２８と同一であるか、あるいはその機能を有してもよい。最上位ビットプレーン決定部２８４は、スペクトル値決定部８２４と同一であるか、あるいはその機能を有していてもよい。
１０．スペクトルノイズレスコーディングのツールの概要
以下に、例えば算術符号化部１７０および算術復号部２３０によって実行される符号化および復号アルゴリズムに関する詳細について説明する。
【０１０９】
復号アルゴリズムの説明に重点が置かれている。ただし、対応する符号化アルゴリズムは、符号化されたスペクトル値および復号されたスペクトル値間のマッピングが逆となり、マッピング規則インデックス値の計算が実質的に同一である復号アルゴリズムについての教示に従って実行することが可能である点に留意されたい。符号化器では、符号化されたスペクトル値が復号されたスペクトル値に置き換わる。また、符号化対象のスペクトル値が復号化対象のスペクトル値に置き換わる。
【０１１０】
以下に述べる復号は、典型的には、後処理、スケーリング、および量子化されたスペクトル値のいわゆる「スペクトルノイズレスコーディング」を可能にするために用いられる点に留意されたい。スペクトルノイズレスコーディングは、例えばエネルギー圧縮型の時間領域−周波数領域変換部によって取得される量子化されたスペクトルの冗長性をさらに低減するために、オーディオ符号化／復号概念（または他のあらゆる符号化／復号概念）において用いられる。本発明の実施の形態で用いられるスペクトルノイズレスコーディング方式は、動的に適合されたコンテキストと併用した算術コーディングに基づいている。
【０１１１】
本発明によるいくつかの実施の形態において、スペクトルノイズレスコーディング方式は、２−タプルに基づいている。すなわち、２つの隣接スペクトル係数が組み合わされる。各２−タプルは、それぞれ、符号、最上位２ビット単位プレーン、および残りの下位ビットプレーンに分割される。最上位２ビット単位プレーンｍのためのノイズレスコーディングは、４つの以前に復号された２−タプルから導出されるコンテキスト依存の累積度数テーブルを用いる。ノイズレスコーディングは、量子化されたスペクトル値によって供給され、また、４つの以前に復号された隣接２−タプルから導出されるコンテキスト依存の累積度数テーブルを用いる。ここでは、図４に示すように、時間および周波数の両方における隣接が考慮される。次いで、累積度数テーブル（下記で説明する）が、可変長２進コードを生成するために算術コーダによって（そして、可変長２進コードから復号された値を導出するために算術復号部によって）用いられる。
【０１１２】
例えば、算術コーダ１７０は、記号の所与の集合およびそのそれぞれの確率について（すなわち、それぞれの確率に応じた）、２進コードを生成する。２進コードは、当該記号の集合が位置する確率間隔をコードワードにマッピングすることによって生成される。
【０１１３】
残りの下位ビットプレーンｒのノイズレスコーディングは、単一の累積度数テーブルを用いる。累積度数は、例えば、下位ビットプレーンに出現する記号の一様分布に相当する。すなわち、０または１が下位ビットプレーンに出現する確率は同じであると予測される。
【０１１４】
以下に、スペクトルノイズレスコーディングのツールの別の簡潔な概要について説明する。スペクトルノイズレスコーディングは、量子化されたスペクトルの冗長性をさらに低減するために用いられる。スペクトルノイズレスコーディング方式は、動的に適合されたコンテキストと併用した算術コーディングに基づいている。ノイズレスコーディングは、量子化されたスペクトル値によって供給され、また、例えば、４つの以前に復号されたスペクトル値の隣接２−タプルから導出されるコンテキスト依存の累積度数テーブルを用いる。ここでは、図４に示すように時間および周波数の両方における隣接が考慮される。次いで、累積度数テーブルは、可変長２進コードを生成するために算術コーダによって用いられる。
【０１１５】
算術コーダは、記号の所与の集合およびそのそれぞれの確率について２進コードを生成する。２進コードは、記号の集合が位置する確率間隔をコードワードにマッピングすることによって生成される。
１１．  復号処理
１１.１  復号処理の概要
以下に、スペクトル値のコーディング処理の概要について、複数のスペクトル値を復号する処理の疑似プログラムコード表現を示す図３を参照しながら説明する。
【０１１６】
複数のスペクトル値の復号処理は、コンテキストの初期化３１０を含む。コンテキストの初期化３１０は、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（Ｎ，ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ）」を用いた、以前のコンテキストからの現在のコンテキストの導出を含む。以前のコンテキストからの現在のコンテキストの導出は、コンテキストのリセットを選択的に含み得る。コンテキストのリセットおよび以前のコンテキストからの現在のコンテキストの導出についてはいずれも後述する。
【０１１７】
複数のスペクトル値の復号はまた、スペクトル値の復号３１２の繰返しおよびコンテキストの更新３１３も含み、コンテキストの更新３１３は、後述する関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」によって行われる。スペクトル値の復号３１２およびコンテキストの更新３１２は、ｌｇ／２回繰り返され、ここで、ｌｇ／２は、いわゆる「ＡＲＩＴＨ＿ＳＴＯＰ」記号が削除されている場合を除き、復号対象のスペクトル値の２−タプルの数を示す（例えば、オーディオフレームの）。さらに、ｌｇ個のスペクトル値の集合の復号はまた、符号の復号３１４および終了ステップ３１５も含む。
【０１１８】
スペクトル値のタプルの復号３１２は、コンテキスト値の計算３１２ａ、最上位ビットプレーンの復号３１２ｂ、演算ストップ記号の検出３１２ｃ、下位ビットプレーンの付加３１２ｄ、および配列の更新３１２ｅを含む。
【０１１９】
状態値の計算３１２ａは、例えば、図５ｃまたは図５ｄに示すような関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の呼び出しを含む。したがって、現在の数値コンテキスト（状態）値ｃが、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の関数呼び出しの戻り値として提供される。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」への入力変数である以前の数値コンテキスト値（「ｃ」によっても示される）が更新され、戻り値として現在の数値コンテキスト値ｃが取得されることが分かる。
【０１２０】
最上位ビットプレーンの復号３１２ｂは、復号アルゴリズム３１２ｂａの繰返し実行およびアルゴリズム３１２ｂａの結果値ｍからの値ａ，ｂの導出３１２ｂｂを含む。アルゴリズム３１２ｂａの準備において、変数ｌｅｖがゼロに初期化される。アルゴリズム３１２ｂａは、「中断」命令（または条件）に達するまで繰り返される。アルゴリズム３１２ｂａは、後述する関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」（その実施の形態を例えば図５ｅおよび図５ｆに示す）を用いた、現在の数値コンテキスト値ｃおよびレベル値「ｅｓｃ＿ｎｂ」に応じた状態インデックス「ｐｋｉ」（累積度数テーブルインデックスでもある）の計算を含む。アルゴリズム３１２ｂａはまた、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の呼び出しによって戻される状態インデックス「ｐｋｉ」に応じた累積度数テーブルの選択も含み、ここで、変数「ｃｕｍ＿ｆｒｅｑ」が、状態インデックス「ｐｋｉ」に応じて９６個の累積度数テーブル（またはサブテーブル）のうちの１つの累積度数テーブルの開始アドレスに設定され得る。変数「ｃｆｌ」もまた、選択された累積度数テーブル（またはサブテーブル）の長さに初期化されてもよく、この長さは、例えば、アルファベットのいくつかの記号数、すなわち、復号可能な異なる値の数に等しい。１６個の異なる最上位ビットプレーン値および１つのエスケープ記号（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）が復号可能であるため、最上位ビットプレーン値ｍの復号に利用可能な「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝０］［１７］」から「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝９５］［１７］」までのすべての累積度数テーブル（またはサブテーブル）の長さは１７である。
【０１２１】
続いて、選択された累積度数テーブル（変数「ｃｕｍ＿ｆｒｅｑ」および変数「ｃｆｌ」によって示される）を考慮して関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を実行することにより、最上位ビットプレーン値ｍが取得され得る。最上位ビットプレーン値ｍを導出する際、ビットストリーム２１０の「ａｃｏｄ＿ｍ」と称されるビットが評価され得る（例えば、図６ｇおよび図６ｈを参照）。
【０１２２】
アルゴリズム３１２ｂａはまた、最上位ビットプレーン値ｍがエスケープ記号「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」に等しいか否かをチェックすることも含む。最上位ビットプレーン値ｍが算術エスケープ記号に等しくない場合、アルゴリズム３１２ｂａは、中止され（「中断」条件）、次いで、アルゴリズム３１２ｂａの残りの命令がスキップされる。したがって、処理の実行は、ステップ３１２ｂｂにおける値ｂおよび値ａの設定から継続される。これに対し、復号された最上位ビットプレーン値ｍが算術エスケープ記号、すなわち「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」と同一である場合、レベル値「ｌｅｖ」を１だけ増やす。レベル値「ｅｓｃ＿ｎｂ」は、変数「ｌｅｖ」が７を超えない限り、レベル値「ｌｅｖ」に等しくなるように設定され、その場合、変数「ｅｓｃ＿ｎｂ」は７に等しくなるように設定される。上述の通り、次いで、アルゴリズム３１２ｂａは、復号された最上位ビットプレーン値ｍが算術エスケープ記号と異なるまで繰り返され、ここで、修正されたコンテキストが用いられる（なぜなら、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力パラメータは、変数「ｅｓｃ＿ｎｂ」の値に応じて適合されるからである）。
【０１２３】
アルゴリズム３１２ｂａの１回の実行または繰返し実行を用いて最上位ビットプレーンが復号されると、すなわち、算術エスケープ記号とは異なる最上位ビットプレーン値ｍが復号されるとすぐに、スペクトル値の変数「ｂ」は、最上位ビットプレーン値ｍの複数の（例えば、２個）の上位ビットに等しくなるように設定され、スペクトル値の変数「ａ」は、最上位ビットプレーン値ｍの（例えば、２個の）の最下位ビットに設定される。この機能に関する詳細については、例えば、参照符号３１２ｂｂにおいて理解することができる。
【０１２４】
続いて、ステップ３１２ｃにおいて、演算ストップ記号が存在するか否かがチェックされる。これは、最上位ビットプレーン値ｍがゼロに等しく、かつ変数「ｌｅｖ」がゼロを超える場合である。したがって、最上位ビットプレーン値ｍがゼロに等しく、変数「ｌｅｖ」が最上位ビットプレーン値ｍに増加した数値的重みが対応付けられていることを示している、「異常」条件によって、演算ストップ条件が通知される。換言すれば、ビットストリームが、ゼロに等しい最上位ビットプレーン値に対して最小の数値的重みよりも高い増加した数値的重みを与える必要があることを示す場合（これは正常な符号化状態においては生じない条件である）に、演算ストップ条件が検出される。すなわち、符号化された算術エスケープ記号の後に符号化された最上位ビットプレーン値０が続く場合に演算ストップ条件が通知される。
【０１２５】
ステップ２１２ｃにおいて行われる、演算ストップ条件が存在するか否かの評価の後、例えば、図３の参照符号２１２ｄで示すように、下位ビットプレーンが取得される。下位ビットプレーンのそれぞれについて、２つの２進値が復号される。２進値のうちの１つは、変数ａ（またはスペクトル値のタプルの第１のスペクトル値）に対応付けられ、２進値のうちの１つは、変数ｂ（またはスペクトル値のタプルの第２のスペクトル値）に対応付けられている。変数ｌｅｖによって下位ビットプレーンの数が示される。
【０１２６】
１つ以上の最下位ビットプレーン（存在する場合）の復号では、アルゴリズム２１２ｄａが繰返し実行され、アルゴリズム２１２ｄａの実行回数は、変数「ｌｅｖ」によって決まる。ここで、アルゴリズム２１２ｄａの最初の繰返しは、ステップ２１２ｂｂで設定された変数ａ，ｂの値に基づいて実行される点に留意されたい。アルゴリズム２１２ｄａのさらなる繰返しは、変数ａ，ｂの更新された変数値に基づいて実行される。
【０１２７】
繰返しの開始時に、累積度数テーブルが選択される。続いて、算術復号が行われて、変数ｒの値が取得され、ここで、変数ｒの値は、複数の下位ビット、例えば、変数ａに対応付けられた１つの下位ビットおよび変数ｂに対応付けられた１つの下位ビットを示す。関数「ＡＲＩＴＨ＿ＤＥＣＯＤＥ」を用いて値ｒが取得され、ここで、算術復号には累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ」が用いられる。
【０１２８】
続いて、変数ａおよびｂの値が更新される。この目的で、変数ａは、１ビット左にシフトされ、シフトされた変数ａの最下位ビットは、値ｒの最下位ビットによって定義される値に設定される。変数ｂは、１ビット左にシフトされ、シフトされた変数ｂの最下位ビットは、変数ｒのビット１によって定義される値に設定され、ここで、変数ｒのビット１は、変数ｒの２進表現における２の数値的重みを有する。次いで、すべての最下位ビットが復号されるまでアルゴリズム４１２ｂａが繰り返される。
【０１２９】
下位ビットプレーンの復号の後、配列「ｘ＿ａｃ＿ｄｅｃ」が、変数ａ，ｂの値が当該配列の配列インデックス２＊ｉおよび２＊ｉ＋１を有するエントリに格納されるように更新される。
【０１３０】
続いて、図５ｇを参照して詳細が後述される関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」を呼び出すことにより、コンテキスト状態が更新される。
【０１３１】
ステップ３１３において行われるコンテキスト状態の更新に続き、実行中の変数ｉがｌｇ／２の値に達するか、あるいは演算ストップ条件が検出されるまで、アルゴリズム３１２および３１３が繰り返される。
【０１３２】
続いて、参照符号３１５において理解されるように、終了アルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」が実行される。終了アルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の詳細については、図５ｍを参照して後述する。
【０１３３】
終了アルゴリズム３１５に続き、アルゴリズム３１４を用いてスペクトル値の符号が復号される。ゼロとは異なるスペクトル値の符号が個別にコーディングされることが理解される。アルゴリズム３１４において、ｉ＝０〜ｉ＝ｌｇ−１のインデックスｉを有するゼロでないスペクトル値のすべてについて符号が読み出される。ｉ＝０〜ｉ＝ｌｇ−１のスペクトル値インデックスｉを有するゼロでないスペクトル値のそれぞれについて、ビットストリームから値（典型的には、単一のビット）ｓが読み出される。ビットストリームから読み出されたｓの値が１に等しい場合、当該スペクトル値の符号は反転される。この目的で、インデックスｉを有するスペクトル値がゼロに等しいか否かの判定および復号されたスペクトル値の符号の更新との両方を行うために、配列「ｘ＿ａｃ＿ｄｅｃ」へのアクセスが行われる。ただし、符号の復号３１４において、変数ａ，ｂの符号は、変更されない点に留意されたい。
【０１３４】
符号の復号３１４の前に終了アルゴリズム３１５を実行することにより、ＡＲＩＴＨ＿ＳＴＯＰ記号の後のすべての必要なビンをリセットすることができる。
【０１３５】
ここで、下位ビットプレーンの値を取得するための概念は、本発明によるいくつかの実施の形態において特に重要ではない点に留意されたい。いくつかの実施の形態において、あらゆる下位ビットプレーンの復号を省略してもよい。あるいは、この目的のために異なる復号アルゴリズムを用いてもよい。
１１.２  図４による復号順序
以下に、スペクトル値の復号順序について説明する。
【０１３６】
量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から開始して、最も高い周波数係数へとノイズレス符号化され、送信される（例えば、ビットストリームにおいて）。
【０１３７】
したがって、量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から開始して、最も高い周波数係数へとノイズレス復号される。量子化されたスペクトル係数は、いわゆる２−タプル（ａ，ｂ）（｛ａ，ｂ｝によっても示す）において集合する２つの連続する（例えば、周波数において隣接する）係数ａおよびｂのグループによって復号される。ここで、量子化されたスペクトル係数は、「ｑｄｅｃ」によって示される場合がある点に留意されたい。
【０１３８】
次いで、周波数領域モード（例えば、ＩＳＯ／ＩＥＣ１４４９６，パート３，サブパート４に記載される修正離散コサイン変換を用いて取得される、アドバンスドオーディオコーディングのための復号された係数）のための復号された係数「ｘ＿ａｃ＿ｄｅｃ［］」が、配列「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」に格納される。ノイズレスコーディングコードワードの送信の順序は、これらが受信され、配列に格納された順に復号される場合、「ｂｉｎ」が増加の最も早いインデックスであり、「ｇ」が増加の最も遅いインデックスであるような順序である。１つのコードワード内では、復号の順序はａ，ｂである。
【０１３９】
変換符号化励起（transform coded-excitation）（ＴＣＸ）のための復号された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、例えば、配列「ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］」に直接格納され、ノイズレスコーディングコードワードの送信の順序は、これらが受信され、配列に格納された順に復号される場合、「ｂｉｎ」が増加の最も早いインデックスであり、「ｗｉｎ」が増加の最も遅いインデックスであるような順序である。１つのコードワード内では、復号の順序はａ，ｂである。換言すれば、スペクトル値が音声コーダの線形予測フィルタの変換符号化励起を示す場合、スペクトル値ａ，ｂは、変換符号化励起の隣接しかつ増加する周波数に対応付けられる。より低い周波数に対応付けられたスペクトル係数は、典型的には、より高い周波数に対応付けられたスペクトル係数よりも先に符号化および復号される。
【０１４０】
特に、オーディオ復号器２００は、算術復号部２３０によって提供される復号された周波数領域表現２３２を、周波数領域−時間領域信号変換を用いた時間領域オーディオ信号表現の「直接的な」生成、および周波数領域−時間領域復号部と周波数領域−時間領域信号変換部の出力によって励起される線形予測フィルタとの両方を用いた時間領域オーディオ信号表現の「間接的な」提供のいずれにも適用するように構成され得る。
【０１４１】
換言すれば、本明細書においてその機能が詳述される算術復号部は、周波数領域において符号化されるオーディオコンテンツの時間周波数領域表現のスペクトル値の復号、および線形予測領域において符号化される音声信号を復号する（または合成する）ように適合された線形予測フィルタ用の励振信号の時間周波数領域表現の提供によく適している。したがって、算術復号部は、周波数領域符号化されたオーディオコンテンツおよび線形予測周波数領域符号化されたオーディオコンテンツ（変換符号化励起−線形予測領域モード）の両方を扱うことが可能なオーディオ復号器における使用によく適している。
１１.３  図５ａおよび図５ｂによるコンテキストの初期化
以下に、ステップ３１０において行われるコンテキストの初期化（「コンテキストマッピング」としても示される）について説明する。
【０１４２】
コンテキストの初期化は、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」に従った過去のコンテキストと現在のコンテキストとの間のマッピングを含み、その第１の例を図５ａに示し、第２の例を図５ｂに示す。
【０１４３】
現在のコンテキストは、第１の次元が２であり、第２の次元が「ｎ＿ｃｏｎｔｅｘｔ」である配列の形式を有する大域変数「ｑ［２］［ｎ＿ｃｏｎｔｅｘｔ］」に格納されていることが理解される。過去のコンテキストを、次元が「ｎ＿ｃｏｎｔｅｘｔ」である（使用される場合）表の形式を有する変数「ｑｓ［ｎ＿ｃｏｎｔｅｘｔ］」に任意に格納することができる（ただし、必ずしもそうする必要はない）。
【０１４４】
図５ａにおけるアルゴリズム例「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」を参照すると、入力変数Ｎは、現在のウィンドウの長さを示し、入力変数「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテキストがリセットされるべきか否かを示す。さらに、大域変数「ｐｒｅｖｉｏｕｓ＿Ｎ」は、以前のウィンドウの長さを示す。ここで、典型的には、１つのウィンドウに対応付けられたスペクトル値の数は、時間領域サンプルを単位として当該ウィンドウの長さの２分の１に少なくともほぼ等しい点に留意されたい。さらに、スペクトル値の２−タプルの数は、したがって、時間領域サンプルを単位として当該ウィンドウの長さの４分の１に少なくともほぼ等しい点に留意されたい。
【０１４５】
図５ａの例を参照すると、コンテキストのマッピングは、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」に従って行われ得る。ここで、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」がアクティブであり、したがって、コンテキストがリセットされるべきであることを示す場合、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」は、ｊ＝０~ｊ＝Ｎ／４−１について、現在のコンテキスト配列ｑのエントリ「ｑ［０］［ｊ］」をゼロに設定する点に留意されたい。そうでない場合、すなわち、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」が非アクティブである場合、現在のコンテキスト配列ｑのエントリ「ｑ［１］［ｋ］」から現在のコンテキスト配列ｑのエントリ「ｑ［０］［ｊ］」が導出される。図５ａによる関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」は、現在の（例えば、周波数領域符号化された）オーディオフレームに対応付けられたスペクトル値の数が、ｊ＝ｋ＝０~ｊ＝ｋ＝Ｎ／４−１について以前のオーディオフレームに対応付けられたスペクトル値の数と同一である場合、現在のコンテキスト配列ｑのエントリ「ｑ［０］［ｊ］」を現在のコンテキスト配列ｑの値「ｑ［１］［ｋ］」に設定する点に留意されたい。
【０１４６】
現在のオーディオフレームに対応付けられたスペクトル値の数が、以前のオーディオフレームに対応付けられたスペクトル値の数と異なる場合、より複雑なマッピングが行われる。しかし、この場合におけるマッピングについての詳細は、本発明の主要概念に特に重要ではないため、詳細については図５ａの疑似プログラムコードを参照されたい。
【０１４７】
さらに、現在の数値コンテキスト値ｃの初期化値が、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」によって戻される。この初期化値は、例えば、１２ビット左にシフトさせたエントリ「ｑ［０］［０］」の値に等しい。したがって、（現在の）数値コンテキスト値ｃは、繰返し更新のために適切に初期化される。
【０１４８】
さらに、図５ｂは、代わりに使用され得るアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の別の例を示す。詳細については、図５ｂの疑似プログラムコードを参照されたい。
【０１４９】
上記を要約すると、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテキストをリセットしなければならないか否かを判定する。フラグが真である場合、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」のリセットサブアルゴリズム５００ａが呼び出される。しかし、代替的に、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」が非アクティブである（コンテキストのリセットを行うべきでないことを示す）場合、復号処理は、初期化段階から開始され、初期化段階では、ｑ［１］［］に格納された以前のフレームのコンテキスト要素をｑ［０］［］にコピーおよびマッピングすることによりコンテキスト要素ベクトル（または配列）ｑが更新される。ｑ内のコンテキスト要素は、１つの２−タプルにつき４ビット格納される。コンテキスト要素のコピーおよび／またはマッピングは、サブアルゴリズム５００ｂにおいて行われる。
【０１５０】
図５ｂの例では、復号処理は、ｑｓに格納された保存された過去のコンテキストと現在のフレームｑのコンテキストとの間でマッピングが行われる初期化段階から開始される。過去のコンテキストｑｓは、１つの周波数ラインにつき２ビット格納される。
１１.４  図５ｃおよび図５ｄによる状態値の計算
以下に、状態値の計算３１２ａについてより詳細に説明する。
【０１５１】
図５ｃを参照して、第１のアルゴリズム例を説明し、図５ｄを参照して、第２のアルゴリズム例を説明する。
【０１５２】
現在の数値コンテキスト値ｃ（図３に示すような）は、図５ｃに疑似プログラムコード表現を示す関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の戻り値として取得することができる点に留意されたい。しかし、代わりに、現在の数値コンテキスト値ｃは、図５ｄに疑似プログラムコード表現を示す関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」の戻り値として取得することができる。
【０１５３】
状態値の計算に関し、状態評価、すなわち、現在の数値コンテキスト値ｃの計算に使用されるコンテキストを示す図４を参照する。図４は、スペクトル値の二次元表現を時間および周波数の両方について示す。横軸４１０は、時間を示し、縦軸４１２は、周波数を示す。図４で分かるように、（好ましくは現在の数値コンテキスト値を用いて）復号するスペクトル値のタプル４２０は、時間インデックスｔ０および周波数インデックスｉに対応付けられている。時間インデックスｔ０について、周波数インデックスｉ−１，ｉ−２，およびｉ−３を有するタプルは、周波数インデックスｉを有するタプル１２０のスペクトル値が復号されるべき時間において既に復号されていることが分かる。図４から分かるように、時間インデックスｔ０および周波数インデックスｉ−１を有するスペクトル値４３０は、スペクトル値のタプル４２０が復号される前に既に復号されており、スペクトル値のタプル４３０は、スペクトル値のタプル４２０の復号に使用されるコンテキストのために考慮される。同様に、時間インデックスｔ０−１および周波数インデックスｉ−１を有するスペクトル値のタプル４４０、時間インデックスｔ０−１および周波数インデックスｉを有するスペクトル値のタプル４５０、ならびに時間インデックスｔ０−１および周波数インデックスｉ＋１を有するスペクトル値のタプル４６０は、スペクトル値のタプル４２０が復号される前に既に復号されており、スペクトル値のタプル４２０の復号に使用されるコンテキストの決定のために考慮される。タプル４２０のスペクトル値が復号される時点においてすでに復号されておりかつコンテキストのために考慮されるスペクトル値（係数）は、網掛けの四角で示されている。これに対し、既に復号されている（タプル４２０のスペクトル値が復号される時点において）がコンテキスト（タプル４２０のスペクトル値の復号のための）のために考慮されないいくつかの他のスペクトル値は、破線の四角で示され、他のスペクトル値（タプル４２０のスペクトル値が復号される時点においてまだ復号されていない）は、破線の円で示されている。破線の四角で示されるタプルおよび破線の円で示されるタプルは、タプル４２０のスペクトル値の復号のためのコンテキストの決定に使用されない。
【０１５４】
しかし、タプル４２０のスペクトル値を復号するためのコンテキストの「通常の」または「正常な」計算に使用されないこれらスペクトル値のいくつかは、その大きさに関する所定の条件を個々にまたは一緒に満たす複数の以前に復号された隣接するスペクトル値を検出するために評価してもよい点に留意されたい。これに関する詳細については後述する。
【０１５５】
図５ｃを参照し、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の詳細について説明する。図５ｃは、当該関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の機能を周知のＣ言語および／またはＣ＋＋言語の規則を用いた疑似プログラムコードの形式で示す。したがって、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって実行される現在の数値コンテキスト値「ｃ」の計算に関するさらにいくつかの詳細について説明する。
【０１５６】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、以前の数値コンテキスト値ｃによって示され得る「ｏｌｄ  ｓｔａｔｅ  ｃｏｎｔｅｘｔ」を入力変数として受け取る点に留意されたい。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」はまた、復号すべきスペクトル値の２−タプルのインデックスｉも入力変数として受け取る。インデックスｉは、典型的には、周波数インデックスである。入力変数Ｎは、スペクトル値が復号されるウィンドウのウィンドウ長さを示す。
【０１５７】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、更新された状態コンテキストを示し現在の数値コンテキスト値であると考えられ得る、入力変数ｃの更新されたバージョンを出力値として提供する。要約すると、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、以前の数値コンテキスト値ｃを入力変数として受け取り、現在の数値コンテキスト値として考慮されるその更新されたバージョンを提供する。また、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」は、変数ｉ，Ｎを考慮するとともに「大域」配列ｑ［］［］にアクセスする。
【０１５８】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の詳細に関し、以前の数値コンテキスト値を最初は２進形式で表す変数ｃは、ステップ５０４ａにおいて４ビット右にシフトされる点に留意されたい。したがって、以前の数値コンテキスト値（入力変数ｃによって表される）の４つの最下位ビットが破棄される。また、以前の数値コンテキスト値のその他のビットの数値的重みが、例えば、１６分の１に低減される。
【０１５９】
さらに、２−タプルのインデックスｉがＮ／４−１より小さい、すなわち、最大値をとらない場合、現在の数値コンテキスト値は、ステップ５０４ａで取得されるシフトされたコンテキスト値の１２ビット〜１５ビット（すなわち、数値的重みが２１２，２１３，２１４，および２１５であるビット）にエントリｑ［０］［ｉ＋１］の値が加算されるように修正される。この目的で、配列ｑ［］［］のエントリｑ［０］［ｉ＋１］（または、より厳密には、当該エントリによって表される値の２進表現）は、１２ビット左にシフトされる。次いで、エントリｑ［０］［ｉ＋１］によって表される値のシフトされたバージョンが、ステップ５０４ａにおいて導出されるコンテキスト値ｃ、すなわち、以前の数値コンテキスト値のビットシフトされた（４ビット右にシフトした）数値表現に加算される。ここで、配列ｑ［］［］のエントリｑ［０］［ｉ＋１］は、オーディオコンテンツの以前の部分（例えば、図４を参照して定義されるような時間インデックスｔ０−１を有するオーディオコンテンツの部分）と、（関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって出力された現在の数値コンテキスト値ｃを用いて）現在復号中のスペクトル値のタプルよりも高い周波数（例えば、図４を参照して定義されるような周波数インデックスｉ＋１を有する周波数）とに対応付けられたサブ領域値を表す点に留意されたい。換言すれば、スペクトル値のタプル４２０が現在の数値コンテキスト値を用いて復号される場合、エントリｑ［０］［ｉ＋１］は、以前に復号されたスペクトル値のタプル４６０に基づくものであり得る。
【０１６０】
参照符号５０４ｂにおいて、配列ｑ［］［］（１２ビット左にシフトされた）のエントリｑ［０］［ｉ＋１］の選択的加算が示されている。エントリｑ［０］［ｉ＋１］によって表される値の加算は、当然に、周波数インデックスｉが最も高い周波数インデックスｉ＝Ｎ／４−１を有するスペクトル値のタプルを指定しない場合にのみ行われることが分かる。
【０１６１】
続いて、ステップ５０４ｃにおいて、変数ｃの値と１６進値０ｘＦＦＦ０とのＡＮＤ組み合わせを行って変数ｃの更新された値を得るブールＡＮＤ演算が実行される。このようなＡＮＤ演算を実行することにより、変数ｃの４つの最下位ビットが実質上ゼロに設定される。
【０１６２】
ステップ５０４ｄにおいて、エントリｑ［１］［ｉ−１］の値が、ステップ５０４ｃによって得られる変数ｃの値に加算され、これにより、変数ｃの値が更新される。ただし、ステップ５０４ｄにおける変数ｃのこの更新は、復号すべき２−タプルの周波数インデックスｉがゼロより大きい場合にのみ行われる。エントリｑ［１］［ｉ−１］は、現在の数値コンテキスト値を用いて復号されるべきスペクトル値の周波数よりも小さい周波数のオーディオコンテンツの、現在の部分の以前に復号されたスペクトル値のタプルに基づくコンテキストサブ領域値である点に留意されたい。スペクトル値のタプル４２０が、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の現在の実行によって戻される現在の数値コンテキスト値を用いて復号されると仮定した場合、配列ｑ［］［］のエントリｑ［１］［ｉ−１］は、例えば、時間インデックスｔ０および周波数インデックスｉ−１を有するタプル４３０に対応付けられてもよい。
【０１６３】
要約すると、ステップ５０４ａにおいて、以前の数値コンテキスト値のビット０，１，２，３（すなわち、４つの最下位ビットの部分）が、以前の数値コンテキスト値の２進数値表現からこれらをシフトアウトすることによって破棄される。さらに、ステップ５０４ｂにおいて、シフトされた変数ｃの（すなわち、シフトされた以前の数値コンテキスト値の）ビット１２，１３，１４，１５が、コンテキストサブ領域値ｑ［０］［ｉ＋１］によって定義される値をとるように設定される。ステップ５０４ｃおよび５０４ｄにおいて、シフトされた以前の数値コンテキスト値（すなわち、元の以前の数値コンテキスト値のビット４，５，６，７）のビット０，１，２，３が、コンテキストサブ領域値ｑ［１］［ｉ−１］によって上書きされる。
【０１６４】
したがって、以前の数値コンテキスト値のビット０〜３は、スペクトル値のタプル４３２に対応付けられたコンテキストサブ領域値を表し、以前の数値コンテキスト値のビット４〜７は、以前に復号されたスペクトル値のタプル４３４に対応付けられたコンテキストサブ領域値を表し、以前の数値コンテキスト値のビット８〜１１は、以前に復号されたスペクトル値のタプル４４０に対応付けられたコンテキストサブ領域値を表し、以前の数値コンテキスト値のビット１２〜１５は、以前に復号されたスペクトル値のタプル４５０に対応付けられたコンテキストサブ領域値を表していると言える。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」に入力される以前の数値コンテキスト値は、スペクトル値のタプル４３０の復号に対応付けられている。
【０１６５】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の出力変数として取得される現在の数値コンテキスト値は、スペクトル値のタプル４２０の復号に対応付けられている。したがって、現在の数値コンテキスト値のビット０〜３は、スペクトル値のタプル４３０に対応付けられたコンテキストサブ領域値を示し、現在の数値コンテキスト値のビット４〜７は、スペクトル値のタプル４４０に対応付けられたコンテキストサブ領域値を示し、現在の数値コンテキスト値のビット８〜１１は、スペクトル値のタプル４５０に対応付けられた数値サブ領域値を示し、現在の数値コンテキスト値のビット１２〜１５は、スペクトル値のタプル４６０に対応付けられたコンテキストサブ領域値を示す。したがって、以前の数値コンテキスト値の一部、すなわち、以前の数値コンテキスト値のビット８〜１５もまた、現在の数値コンテキスト値のビット４〜１１として、現在の数値コンテキスト値に含められることが分かる。これに対し、以前の数値コンテキスト値のビット０〜７は、以前の数値コンテキスト値の数値表現から現在の数値コンテキスト値の数値表現を導出する際に破棄される。
【０１６６】
ステップ５０４ｅにおいて、復号すべき２−タプルの周波数インデックスｉが所定の数、例えば、３より大きい場合、現在の数値コンテキスト値を表す変数ｃは、選択的に更新される。この場合、すなわち、ｉが３より大きい場合、コンテキストサブ領域値ｑ［１］［ｉ−３］，ｑ［１］［ｉ−２］，およびｑ［１］［ｉ−１］の和が、所定の値、例えば、５より小さい（あるいは、これに等しい）か否かが判定される。当該コンテキストサブ領域値の和が上記所定の値よりも小さいことが分かった場合、１６進値、例えば、０x１００００が変数ｃに加算される。したがって、変数ｃは、変数ｃがコンテキストサブ領域値ｑ［１］［ｉ−３］，ｑ［１］［ｉ−２］，およびｑ［１］［ｉ−１］が特に小さい合計値を含む条件が存在するか否かを示すように設定される。例えば、現在の数値コンテキスト値のビット１６が、このような条件を示すフラグとして機能し得る。
【０１６７】
結論として、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の戻り値は、ステップ５０４ａ，５０４ｂ，５０４ｃ，５０４ｄ，および５０４ｅによって決定され、現在の数値コンテキスト値は、ステップ５０４ａ，５０４ｂ，５０４ｃ，および５０４ｄにおいて以前の数値コンテキスト値から導出され、概して、特に小さい絶対値を有する以前に復号されたスペクトル値の環境を示すフラグがステップ５０４ｅにおいて導出され、変数ｃに付加される。したがって、ステップ５０４ａ，５０４ｂ，５０４ｃ，５０４ｄにおいて取得された変数ｃの値は、ステップ５０４ｅにおいて評価された条件が満たされない場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の戻り値としてステップ５０４ｆにおいて戻される。これに対し、ステップ５０４ａ，５０４ｂ，５０４ｃ，および５０４ｄにおいて導出される変数ｃの値は、ステップ５４０ｅにおいて評価された条件が満たされる場合、ステップ５０４ｅにおいて、１６進値０x１００００だけ増やされ、この増加演算の結果が戻される。
【０１６８】
上記を要約すると、ノイズレス復号器は、符号無しの量子化されたスペクトル係数（より詳しくは後述するような）の２−タプルを出力する点に留意されたい。最初に、復号すべき２−タプルの「周囲にある」以前に復号されたスペクトル係数に基づいてコンテキストの状態ｃが計算される。好ましい実施の形態において、状態（例えば、数値コンテキスト値によって表される）は、２つの新しい２−タプル（例えば、２−タプル４３０および４６０）のみを考慮して、最後に復号された２−タプルのコンテキスト状態（以前の数値コンテキスト値として指定される）を用いて増加的に更新される。状態は、１７ビットでコーディングされ（例えば、現在の数値コンテキスト値の数値表現を用いて）、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」によって戻される。詳細については、図５ｃのプログラムコード表現を参照されたい。
【０１６９】
さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の代替の実施の形態の疑似プログラムコードが図５ｄに示されている点に留意されたい。図５ｄによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」は、図５ｃによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」と同様である。ただし、図５ｄによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」は、最小周波数インデックスｉ＝０または最大周波数インデックスｉ＝Ｎ／４−１を含むスペクトル値のタプルの特殊な扱いまたは復号を含まない。
１１.５  マッピング規則の選択
以下に、例えば、コードワード値の記号コードへのマッピングを示す累積度数テーブルのマッピング規則の選択について説明する。マッピング規則の選択は、現在の数値コンテキスト値ｃによって示されるコンテキスト状態に応じて行われる。
１１.５.１  図５ｅによるアルゴリズムを用いたマッピング規則の選択
以下に、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」を用いたマッピング規則の選択について説明する。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、スペクトル値のタプルを提供するためのコード値「ａｃｏｄ＿ｍ」復号する際に、サブアルゴリズム３１２ｂａの開始時に呼び出される点に留意されたい。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、アルゴリズム３１２ｂの異なる繰返しにおいて異なる引数によって呼び出される点に留意されたい。例えば、アルゴリズム３１２ｂの第１回目の繰返しにおいて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、ステップ３１２ａにおける関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の以前の実行によって提供された現在の数値コンテキスト値ｃに等しい引数によって呼び出される。これに対し、サブアルゴリズム３１２ｂａのさらなる繰返しにおいて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、ステップ３１２ａにおいて関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって提供された現在の数値コンテキスト値ｃと、変数「ｅｓｃ＿ｎｂ」の値が１７ビット左にシフトされた、変数「ｅｓｃ＿ｎｂ」の値のビットシフトされたバージョンとの和である引数によって呼び出される。したがって、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって提供された現在の数値コンテキスト値ｃは、アルゴリズム３１２ｂａの第１回目の繰返しにおいて、すなわち、比較的小さいスペクトル値の復号において、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力値として用いられる。これに対し、比較的大きいスペクトル値を復号する際、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数は、図３に示すように、変数「ｅｓｃ＿ｎｂ」の値が考慮されるように修正される。
【０１７０】
ここで、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」の第１の実施の形態の疑似プログラムコード表現を示す図５ｅを参照すると、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、変数ｃを入力値として受け取り、変数ｃは、コンテキストの状態を示し、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃは、少なくともいくつかの状況において関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」によって戻り変数として提供される現在の数値コンテキスト値に等しい点に留意されたい。さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、確率モデルのインデックスを示し、マッピング規則インデックス値であると考えられ得る変数「ｐｋｉ」を出力変数として提供する点に留意されたい。
【０１７１】
図５ｅを参照すると、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、変数「ｉ＿ｍｉｎ」が−１の値をとるように初期化される変数の初期化５０６ａを含むことが分かる。同様に、変数ｉは、変数「ｉ＿ｍｉｎ」に等しくなるように設定されるので、変数ｉもまた−１の値に初期化される。変数「ｉ＿ｍａｘ」は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」（詳細については図２１（１）および図２１（２）を参照して後述する）のエントリ数よりも１だけ小さい値をとるように初期化される。したがって、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」は、間隔を定義する。
【０１７２】
続いて、検索５０６ｂを実行して、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃの値が当該エントリおよび隣接するエントリによって定義される間隔内に位置するようなテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリを指定するインデックス値を特定する。
【０１７３】
検索５０６ｂにおいて、変数「ｉ＿ｍａｘ」と「ｉ＿ｍｉｎ」との差が１よりも大きい間、サブアルゴリズム５０６ｂａが繰り返される。サブアルゴリズム５０６ｂａにおいて、変数ｉは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値の算術平均に等しくなるように設定される。したがって、変数ｉは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値によって定義されるテーブル間隔の中間にテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリを指定する。続いて、変数ｊが、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の値に等しくなるように設定される。したがって、変数ｊは、エントリが変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義されるテーブル間隔の中間に位置するテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって定義される値をとる。続いて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃの値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最上位ビットによって定義される状態値と異なる場合、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義される間隔が更新される。例えば、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの「上位ビット」（ビット８以上のビット）は、上位状態値を示す。したがって、値「ｊ＞＞８」は、ハッシュテーブルインデックス値ｉによって指定されるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される上位状態値を示す。したがって、変数ｃの値が値「ｊ＞＞８」よりも小さい場合、これは、変数ｃによって示される状態値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって示される上位状態値よりも小さいことを意味する。この場合、変数「ｉ＿ｍａｘ」の値は、変数ｉの値に等しくなるように設定され、このことは、「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義される間隔のサイズを小さくするという効果をもたらし、新たな間隔は、以前の間隔の下半分にほぼ等しくなる。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃが値「ｊ＞＞８」よりも大きいこと、すなわち、変数ｃによって示されるコンテキスト値が配列「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって示される上位状態値よりも大きいことが分かった場合、変数「ｉ＿ｍｉｎ」の値は、変数ｉの値に等しくなるように設定される。したがって、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値によって定義される間隔のサイズは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の以前の値によって定義される以前の間隔のサイズの約２分の１に縮小する。より厳密には、変数「ｉ＿ｍｉｎ」の更新された値と変数「ｉ＿ｍａｘ」の以前の（未変更の）値とによって定義される間隔は、変数ｃの値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって定義される上位状態値よりも大きい場合、以前の間隔の上半分にほぼ等しい。
【０１７４】
しかし、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃによって示されるコンテキスト値が、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」（すなわち、ｃ＝＝（ｊ＞＞８））によって定義される上位状態値に等しいことが分かった場合、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最下位８ビットによって定義されるマッピング規則インデックス値が、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」（命令「ｒｅｔｕｒｎ（ｊ＆０ｘＦＦ）」）の戻り値として戻される。
【０１７５】
上記を要約すると、最上位ビット（ビット８以上のビット）が上位状態値を示すエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」が各繰返し５０６ｂａにおいて評価され、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃによって示されるコンテキスト値（または現在の数値コンテキスト値）が、当該テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって示される上位状態値と比較される。入力変数ｃによって表されるコンテキスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される上位状態値よりも小さい場合、テーブル間隔の上方境界（値「ｉ＿ｍａｘ」によって示される）は減らされ、入力変数ｃによって示されるコンテキスト値が、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって示される上位状態値よりも大きい場合、テーブル間隔の下方境界（変数「ｉ＿ｍｉｎ」の値によって示される）は増やされる。これら両方の場合において、サブアルゴリズム５０６ｂａは、間隔（「ｉ＿ｍａｘ」と「ｉ＿ｍｉｎ」）との差によって定義される）のサイズが１より小さいかあるいは等しい場合を除き、繰り返される。これに対し、変数ｃによって示されるコンテキスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって示される上位状態値に等しい場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は中止され、戻り値は、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最下位８ビットによって定義される。
【０１７６】
しかし、間隔のサイズがその最小値（「ｉ＿ｍａｘ−「ｉ＿ｍｉｎ」が１より小さいかあるいは１に等しい）に達したために検索５０６ｂが終了した場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の戻り値は、参照符号５０６ｃにおいて示される、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］」によって決定される。したがって、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリは、上位状態値と間隔の境界との両方を定義する。サブアルゴリズム５０６ｂａにおいて、検索の間隔境界「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」は、ハッシュテーブルインデックスｉが間隔境界値「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって示される検索間隔の中央に少なくともほぼ位置する、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」が入力変数ｃよって示されるコンテキスト値に少なくとも近似するように繰返し適合される。これにより、入力変数ｃによって示されるコンテキスト値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって示される上位状態値に等しい場合を除き、入力変数ｃによって示されるコンテキスト値は、サブアルゴリズム５０６ｂａの繰返しの完了後、「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」および「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍａｘ］」によって定義される間隔内に位置することが達成される。
【０１７７】
しかし、間隔（「ｉ＿ｍａｘ−ｉ＿ｍｉｎ」によって定義される）のサイズがその最小値に達するかあるいは最小値を超えたためにサブアルゴリズム５０６ｂａの繰返し反復が終了した場合、入力変数ｃによって示されるコンテキスト値は、上位状態値ではないと仮定される。この場合でも、間隔の上方境界を指定するインデックス「ｉ＿ｍａｘ」が使用される。サブアルゴリズム５０６ｂａの最後の繰返しにおいて達した間隔の上方値「ｉ＿ｍａｘ」は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」へのアクセスのためのテーブルインデックス値として再使用される。テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」は、複数の隣接する数値コンテキスト値の間隔に対応付けられたマッピング規則インデックス値を示す。テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリによって示されるマッピング規則インデックス値が対応付けられた間隔は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって示される上位状態値によって定義される。テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリは、上位状態値と隣接する数値コンテキスト値の間隔の間隔境界との両方を定義する。アルゴリズム５０６ｂの実行において、入力変数ｃによって示される数値コンテキスト値が上位状態値に等しいか否かが判定され、そうでない場合には、入力変数ｃによって示されるコンテキスト値が数値コンテキスト値のどの間隔（境界が上位状態値によって定義される複数の間隔のうちの）に位置しているかが判定される。このように、アルゴリズム５０６ｂは、入力変数ｃが上位状態値を示しているか否かを判定し、そうでない場合には、入力変数ｃによって表されるコンテキスト値が位置する間隔（上位状態値によって境界付けられる）を特定するという二重の機能を果たす。したがって、アルゴリズム５０６ｅは、特に効率的であり、比較的少数のテーブルアクセスしか必要としない。
【０１７８】
上記を要約すると、コンテキスト状態ｃにより、最上位２ビット単位プレーンｍを復号するために用いられる累積度数テーブルが決定される。ｃから対応する累積度数テーブルインデックス「ｐｋｉ」へのマッピングは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって行われる。当該関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現については、図５ｅを参照して既に説明した。
【０１７９】
上記をさらに要約すると、値ｍは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」によって呼び出される関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」（さらなる詳細については後述する）を用いて復号され、ここで、「ｐｋｉ」は、図５ｅを参照して説明される関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって戻されるインデックス（マッピング規則インデックス値としても示される）に相当する。
１１.５.２  図５ｆによるアルゴリズムを用いたマッピング規則の選択
以下に、マッピング規則選択アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の別の実施の形態について、スペクトル値のタプルの復号において使用され得るこのようなアルゴリズムの疑似プログラムコード表現を示す図５ｆを参照して説明する。図５ｆによるアルゴリズムは、アルゴリズム「ｇｅｔ＿ｐｋ（）」またはアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の最適化バージョン（例えば、速度最適化バージョン）であると考えられ得る。
【０１８０】
図５ｆによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、コンテキストの状態を示す変数ｃを入力変数として受け取る。入力変数ｃは、例えば、現在の数値コンテキスト値を表し得る。
【０１８１】
アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、入力変数ｃによって示されるコンテキストの状態に対応付けられた確率分布（または確率モデル）のインデックスを示す変数「ｐｋｉ」を出力変数として提供する。変数「ｐｋｉ」は、例えば、マッピング規則インデックス値であり得る。
【０１８２】
図５ｆによるアルゴリズムは、配列「ｉ＿ｄｉｆｆ［］」の内容の定義を含む。配列「ｉ＿ｄｉｆｆ［］」（配列インデックス０を有する）の第１のエントリは、２９９に等しく、さらなる配列エントリ（配列インデックス１〜８を有する）は、１４９，７４，３７，１８，９，４，２，および１の値をとることが理解される。したがって、ハッシュテーブルインデックス値「ｉ＿ｍｉｎ」の選択のためのステップサイズは、配列「ｉ＿ｄｉｆｆ［］」のエントリが当該ステップサイズを定義しているため、繰返しの度に減らされる。詳細については下記の記述を参照されたい。
【０１８３】
しかし、異なるステップサイズ、例えば、配列「ｉ＿ｄｉｆｆ［］」の異なる内容を実際に選択することができ、配列「ｉ＿ｄｉｆｆ［］」の内容は、当然、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」のサイズに適合させることができる。
【０１８４】
変数「ｉ＿ｍｉｎ」は、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の開始時点で０の値をとるように初期化される点に留意されたい。
【０１８５】
初期化ステップ５０８ａにおいて、変数ｓが入力変数ｃに応じて初期化され、変数ｃの数値表現は、変数ｓの数値表現を取得するために８ビット左にシフトされている。
【０１８６】
続いて、コンテキスト値ｃによって示されるコンテキスト値が、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値と、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」に隣接する（ハッシュテーブルインデックス値に関して）別のハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ」によって示されるコンテキスト値とによって境界付けられた間隔内に位置するような、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリのハッシュテーブルインデックス値「ｉ＿ｍｉｎ」を特定するために、テーブル検索５０８ｂが行われる。したがって、アルゴリズム５０８ｂにより、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」が入力変数ｃによって示されるコンテキスト値に少なくともほぼ近似するように、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」を指定するハッシュテーブルインデックス値「ｉ＿ｍｉｎ」を決定することが可能となる。
【０１８７】
テーブル検索５０８ｂは、サブアルゴリズム５０８ｂａの繰返し実行を含み、サブアルゴリズム５０８ｂａは、所定の繰返し回数、例えば、９回の繰返し回数実行される。サブアルゴリズム５０８ｂａの第１のステップにおいて、変数ｉは、変数「ｉ＿ｍｉｎ」の値とテーブルエントリ「ｉ＿ｄｉｆｆ［ｋ］」の値との和に等しい値に設定される。ここで、ｋは、初期値ｋ＝０から、サブアルゴリズム５０８ｂａの繰返しの度に増やされる実行中の変数である点に留意されたい。配列「ｉ＿ｄｉｆｆ［］」は、所定の増分値を定義しており、増分値は、テーブルインデックスｋの増加、すなわち、繰返し回数の増加とともに減少する。
【０１８８】
サブアルゴリズム５０８ｂａの第２のステップにおいて、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［］」の値が変数ｊにコピーされる。好ましくは、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリの最上位ビットは、数値コンテキスト値の上位状態値を示し、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの最下位ビット（ビット０〜７）は、それぞれの上位状態値に対応付けられたマッピング規則インデックス値を示す。
【０１８９】
サブアルゴリズム５０８ｂａの第３ステップにおいて、変数Ｓの値が変数ｊの値と比較され、変数ｓの値が変数ｊの値よりも大きい場合、変数「ｉ＿ｍｉｎ」は、値「ｉ＋１」に選択的に設定される。続いて、サブアルゴリズム５０８ｂａの第１のステップ、第２のステップおよび第３ステップが、所定回数、例えば、９回繰り返される。したがって、サブアルゴリズム５０８ｂａの各実行において、変数「ｉ＿ｍｉｎ」の値は、現在有効であるハッシュテーブルインデックスｉ＿ｍｉｎ＋ｉ＿ｄｉｆｆ［］によって示されるコンテキスト値が、入力変数ｃによって示されるコンテキスト値よりも小さい場合かつその場合に限り、ｉ＿ｄｉｆｆ［］＋１だけ増やされる。したがって、ハッシュテーブルインデックス値「ｉ＿ｍｉｎ」は、入力変数ｃひいては変数ｓによって示されるコンテキスト値が、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＝ｉ＿ｍｉｎ＋ｄｉｆｆ［ｋ］］」によって示されるコンテキスト値よりも大きい場合（かつその場合に限り）、サブアルゴリズム５０８ｂａの各実行において（繰り返し）増やされる。
【０１９０】
さらに、サブアルゴリズム５０８ｂａの各実行において、比較、すなわち、変数ｓの値が変数ｊの値よりも大きいか否かについての比較が１回だけ行われる点に留意されたい。したがって、アルゴリズム５０８ｂａは、計算効率が特に高い。さらに、変数「ｉ＿ｍｉｎ」の最終値に関して様々な結果が生じ得る点に留意されたい。例えば、サブアルゴリズム５１２ｂａの最後の実行後の変数「ｉ＿ｍｉｎ」の値は、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値が入力変数ｃによって示されるコンテキスト値よりも小さく、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ＋１］」によって示されるコンテキスト値が入力変数ｃによって示されるコンテキスト値よりも大きいような値である可能性がある。代替的に、サブアルゴリズム５０８ｂａの最後の実行の後、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ−１］」によって示されるコンテキスト値が入力変数ｃによって示されるコンテキスト値よりも小さく、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値が入力変数ｃによって示されるコンテキスト値よりも大きくなる場合がある。しかし、代替的に、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値が入力変数ｃによって示されるコンテキスト値と同一となる場合がある。
【０１９１】
このため、決定に基づく戻り値の提供５０８ｃが行われる。変数ｊは、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」の値をとるように設定される。続いて、入力変数ｃ（および変数ｓ）によって示されるコンテキスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値よりも大きいか否か（条件「ｓ＞ｊ」によって定義される第１の場合）、あるいは、入力変数ｃによって示されるコンテキスト値がハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値よりも小さいか否か（条件「ｃ＜ｊ＞＞８」によって定義される第２の場合）、あるいは入力変数ｃによって示されるコンテキスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示されるコンテキスト値に等しいか否か（第３の場合）が判定される。
【０１９２】
第１の場合、（ｓ＞ｊ）、テーブルインデックス値「ｉ＿ｍｉｎ＋１」によって指定されるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍｉｎ＋１］」が、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の出力値として戻される。第２の場合、（ｃ＜（ｊ＞＞８））、テーブルインデックス値「ｉ＿ｍｉｎ」によって指定されるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍｉｎ］」が、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の戻り値として戻される。第３の場合（すなわち、入力変数ｃによって示されるコンテキスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示される上位状態値に等しい場合）、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」の最下位８ビットによって示されるマッピング規則インデックス値が関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の戻り値として戻される。
【０１９３】
上記を要約すると、ステップ５０８ｂにおいて特に簡単なテーブル検索が行われ、このテーブル検索は、入力変数ｃによって示されるコンテキスト値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」の状態エントリのうちの１つによって定義される上位状態値に等しいか否かを区別することなく変数「ｉ＿ｍｉｎ」の変数値を提供する。テーブル検索５０８ｂに続いて行われるステップ５０８ｃにおいて、入力変数ｃによって示されるコンテキスト値とハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示される上位状態値との間の大きさ関係が評価され、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の戻り値は、当該評価の結果に応じて選択され、テーブル評価５０８ｂにおいて決定される変数「ｉ＿ｍｉｎ」の値は、入力変数ｃによって示されるコンテキスト値がハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって示される上位状態値と異なる場合であっても、マッピング規則インデックス値を選択するために考慮される。
【０１９４】
アルゴリズムにおける比較は、好ましくは（または代替的には）、コンテキストインデックス（数値コンテキスト値）ｃとｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８との間で行われるべきである点にさらに留意されたい。実際、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」の各エントリは、８番目のビットより後のビットでコーディングされたコンテキストインデックスおよび最初の８つのビット（最下位ビット）でコーディングされたその対応する確率モデルを表している。本実施において、我々の主な関心は、現在のコンテキストｃがａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８よりも大きいか否かの把握（ｓ＝ｃ＜＜８もまたａｒｉ＿ｈａｓｈ＿ｍ［ｉ］よりも大きいか否かの検出に相当する）にある。
【０１９５】
上記を要約すると、一旦コンテキスト状態が計算される（これは、例えば、図５ｃによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」または図５ｄによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」によって達成され得る）と、コンテキスト状態に応じた確率モデルに対応する適切な累積度数テーブルによって呼び出されたアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」（後述する）を用いて、最上位２ビット単位プレーンが復号される。この対応は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」、例えば、図５ｆを参照して述べた関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって行われる。
１１.６  算術復号
１１.６.１  図５ｇによるアルゴリズムを用いた算術復号
以下に、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の機能について図５ｇを参照しながら詳述する。
【０１９６】
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、それがシーケンスの第１の記号である場合はＴＲＵＥ、そうでない場合はＦＡＬＳＥを戻すヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（ｖｏｉｄ）」を使用する点に留意されたい。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、ビットストリームの次のビットを取得および提供するヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（ｖｏｉｄ）」も使用する。
【０１９７】
加えて、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、大域変数「ｌｏｗ」、「ｈｉｇｈ」および「ｖａｌｕｅ」を使用する。さらに、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、選択された累積度数テーブルまたは累積度数サブテーブルの第１のエントリまたは要素（要素インデックスまたはエントリインデックスが０である）を指す変数「ｃｕｍ＿ｆｒｅｑ［］」を入力変数として受け取る。また、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、変数「ｃｕｍ＿ｆｒｅｑ［］」によって指定される選択された累積度数テーブルまたは累積度数サブテーブルの長さを示す入力変数「ｃｆｌ」を使用する。
【０１９８】
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、変数の初期化５７０ａを第１のステップとして含み、変数の初期化５７０ａは、ヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（）」が記号のシーケンスの第１の記号が復号中であることを示す場合に行われる。値の初期化５５０ａは、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」を用いてビットストリームから取得される複数の、例えば、１６個のビットに基づいて、変数「ｖａｌｕｅ」が当該ビットによって表される値をとるように変数「ｖａｌｕｅ」を初期化する。また、変数「ｌｏｗ」は、０の値をとるように初期化され、変数「ｈｉｇｈ」は、６５５３５の値をとるように初期化される。
【０１９９】
第２のステップ５７０ｂにおいて、変数「ｒａｎｇｅ」は、変数「ｈｉｇｈ」の値と変数「ｌｏｗ」の値との差よりも１だけ大きい値に設定される。変数「ｃｕｍ」は、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間における変数「ｖａｌｕｅ」の値の相対位置を表す値に設定される。したがって、変数「ｃｕｍ」は、変数「ｖａｌｕｅ」の値に応じて、例えば、０〜２１６の値をとる。
【０２００】
ポインタｐは、選択された累積度数テーブルの開始アドレスよりも１だけ小さい値に初期化される。
【０２０１】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、累積度数テーブル繰返し検索５７０ｃも含む。累積度数テーブル繰返し検索は、変数ｃｆｌが１以下になるまで繰り返される。累積度数テーブル繰返し検索５７０ｃにおいて、ポインタ変数ｑは、ポインタ変数ｐの現在の値と変数「ｃｆｌ」の２分の１の値との和に等しい値に設定される。エントリがポインタ変数ｑによってアドレス指定される、選択された累積度数テーブルのエントリ＊ｑの値が変数「ｃｕｍ」の値よりも大きい場合、ポインタ変数ｐは、ポインタ変数ｑの値に設定され、変数「ｃｆｌ」は増やされる。最後に、変数「ｃｆｌ」が１ビット右にシフトされ、これにより、効果的に、変数「ｃｆｌ」の値を２で除算し、モジュロ部分を無視する。
【０２０２】
したがって、累積度数テーブル繰返し検索５７０ｃは、変数「ｃｕｍ」の値を選択された累積度数テーブルの複数のエントリと効果的に比較して、累積度数テーブルのエントリによって境界付けられた選択された累積度数テーブル内の間隔を特定し、特定される間隔内に値ｃｕｍが位置するようにする。したがって、選択された累積度数テーブルのエントリは、間隔を定義し、それぞれの記号値は、選択された累積度数テーブルの間隔のそれぞれに対応付けられている。また、累積度数テーブルの２つの隣接する値の間隔の幅は、選択された累積度数テーブルが全体として異なる記号（または記号値）の確率分布を定義するように、当該間隔に対応付けられた記号の確率を定義する。利用可能な累積度数テーブルに関する詳細については、図２３を参照して後述する。
【０２０３】
図５ｇを再び参照すると、記号値は、ポインタ変数ｐの値から導出され、ここで、記号値は、参照符号５７０ｄに示すように導出される。したがって、変数「ｓｙｍｂｏｌ」によって表される記号値を取得するために、ポインタ変数ｐの値と開始アドレス「ｃｕｍ＿ｆｒｅｑ」との差が評価される。
【０２０４】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」はまた、変数「ｈｉｇｈ」および「ｌｏｗ」の適合５７０ｅも含む。変数「ｓｙｍｂｏｌ」によって表される記号値が０と異なる場合、参照符号５７０ｅに示すように、変数「ｈｉｇｈ」が更新される。また、参照符号５７０ｅに示すように、変数「ｌｏｗ」の値が更新される。変数「ｈｉｇｈ」は、変数「ｌｏｗ」の値と、変数「ｒａｎｇｅ」と、選択された累積度数テーブルのインデックス「ｓｙｍｂｏｌ−１」を有するエントリとによって決定される値に設定される。変数「ｌｏｗ」は増やされ、増加の大きさは、変数「ｒａｎｇｅ」とインデックス「ｓｙｍｂｏｌ」を有する選択された累積度数テーブルのエントリとによって決定される。したがって、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との差は、選択された累積度数テーブルの２つの隣接するエントリ間の数値差に応じて調整される。
【０２０５】
したがって、低い確率を有する記号値が検出された場合、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔は、狭い幅に減らされる。これに対し、検出された記号値が比較的大きい確率を含む場合、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔の幅は、比較的大きい値に設定される。ここでもまた、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔の幅は、検出された記号と累積度数テーブルの対応するエントリとに依存する。
【０２０６】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」はまた、間隔の繰込み５７０ｆも含み、間隔の繰込み５７０ｆでは、「中断」条件に達するまで、ステップ５７０ｅにおいて決定された間隔が繰り返しシフトおよびスケーリングされる。間隔の繰込み５７０ｆにおいては、選択的な下方シフト演算５７０ｆａが実行される。変数「ｈｉｇｈ」が３２７６８未満である場合は何も行われず、間隔の繰込みは、間隔−サイズ−増加演算５７０ｆｂから継続する。しかし、変数「ｈｉｇｈ」が３２７６８未満ではなく、変数「ｌｏｗ」が３２７６８以上である場合、変数「ｖａｌｕｅｓ」、「ｌｏｗ」および「ｈｉｇｈ」は、すべて３２７６８だけ減らされ、その結果、変数「ｌｏｗ」および「ｈｉｇｈ」によって定義される間隔が下方へシフトされ、変数「ｖａｌｕｅ」の値もまた下方へシフトされる。しかし、変数「ｈｉｇｈ」の値が３２７６８未満ではなく、変数「ｌｏｗ」が３２７６８以上でないこと、および変数「ｌｏｗ」が１６３８４以上であり、変数「ｈｉｇｈ」が４９１５２未満であることが分かった場合、変数「ｖａｌｕｅ」、「ｌｏｗ」、および「ｈｉｇｈ」は、すべて１６３８４だけ減らされ、これにより、変数「ｈｉｇｈ」の値と変数「ｌｏｗ」の値との間隔および変数「ｖａｌｕｅ」の値も下方へシフトされる。しかし、上記条件がいずれも満たされない場合、間隔の繰込みは中止される。
【０２０７】
しかし、ステップ５７０ｆａにおいて評価される上記条件のいずれかが満たされた場合、間隔増加演算５７０ｆｂが実行される。間隔増加演算５７０ｆｂにおいては、変数「ｌｏｗ」の値が倍増される。また、変数「ｈｉｇｈ」の値が倍増され、倍増の結果が１だけ増やされる。また、変数「ｖａｌｕｅ」の値が倍増され（１ビット左にシフトされ）、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」によって取得されるビットストリームのビットが最下位ビットとして用いられる。したがって、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔のサイズは、ほぼ倍増され、変数「ｖａｌｕｅ」の精度は、ビットストリームの新たなビットを使用することによって高められる。上述の通り、ステップ５７０ｆａおよび５７０ｆｂは、「中断」条件に達するまで、すなわち、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔が十分に大きくなるまで繰り返される。
【０２０８】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の機能に関し、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔は、ステップ５７０ｅにおいて、変数「ｃｕｍ＿ｆｒｅｑ」によって参照される累積度数テーブルの２つの隣接するエントリに応じて縮小される点に留意されたい。選択された累積度数テーブルの２つの隣接する値の間隔が小さい場合、すなわち、隣接する値が互いに比較的近接している場合、ステップ５７０ｅにおいて取得される変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔は、比較的小さいものとなる。これに対し、累積度数テーブルの２つの隣接するエントリが遠く離れている場合、ステップ５７０ｅにおいて取得される変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔は、比較的大きいものとなる。
【０２０９】
その結果、ステップ５７０ｅにおいて取得される変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔が比較的小さい場合、間隔を「十分な」サイズ（条件評価５７０ｆａにおける条件がいずれも満たされることがないような）に再スケーリングするために、間隔繰込みステップは、より多くの回数実行されることになる。したがって、変数「ｖａｌｕｅ」の精度を高めるために、ビットストリームから比較的多くの数のビットが使用されることになる。これに対し、ステップ５７０ｅにおいて取得された間隔のサイズが比較的大きい場合、変数「ｌｏｗ」の値と変数「ｈｉｇｈ」の値との間隔の「十分な」サイズへの繰込みを行うために必要とされる間隔正規化ステップ５７０ｆａおよび５７０ｆｂの反復回数はごくわずかとなる。したがって、変数「ｖａｌｕｅ」の精度を高め、次の記号の復号の準備を行うために、ビットストリームから比較的少数のビットのみが用いられることになる。
【０２１０】
上記を要約すると、比較的高い確率を含み、選択された累積度数テーブルのエントリによって大きい間隔が対応付けられた記号が復号される場合、後の記号の復号を可能にするために、比較的少数のビットのみがビットストリームから読み出されることになる。これに対し、比較的小さい確率を含み、選択された累積度数テーブルのエントリによって小さい間隔が対応付けられた記号が復号される場合、次の記号の復号の準備を行うために、比較的多数のビットがビットストリームから取られる。
【０２１１】
したがって、累積度数テーブルのエントリは、異なる記号の確率を反映するとともに、記号のシーケンスを復号するために必要とされるビット数を反映するものである。例えば、コンテキストに応じて異なる累積度数テーブルを選択することにより、累積度数テーブルをコンテキストに応じて、すなわち、以前に復号された記号（またはスペクトル値）に応じて変化させることにより、異なる記号間の確率的依存性を利用することができ、これにより、後の（または隣の）記号の特にビットレート効率のよい符号化が可能となる。
【０２１２】
上記を要約すると、図５ｇを参照して説明した関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、最上位ビットプレーン値ｍ（戻り変数「ｓｙｍｂｏｌ」によって表される記号値に設定され得る）を決定するために、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって戻されたインデックス「ｐｋｉ」に対応する累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」によって呼び出される。
【０２１３】
上記を要約すると、算術復号部は、スケーリングによるタグ生成の方法を用いた整数実装（integer implementation）である。詳細については、Ｋ．Ｓａｙｏｏｄ，Ｔｈｉｒｄ  Ｅｄｉｔｉｏｎ，２００６，Ｅｌｓｅｖｉｅｒ  Ｉｎｃ．の書籍“Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ”を参照されたい。
【０２１４】
図５ｇによるコンピュータプログラムコードは、本発明の実施の形態による使用アルゴリズムを示す。
１１.６.２  図５ｈおよび図５ｉによるアルゴリズムを用いた算術復号
図５ｈおよび図５ｉは、図５ｇを参照して説明したアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の代わりに使用可能なアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の別の実施の形態の疑似プログラムコード表現を示す。
【０２１５】
図５ｇによるアルゴリズムならびに図５ｈおよび図５ｉによるアルゴリズムは、いずれも図３によるアルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」において使用され得る点に留意されたい。
【０２１６】
要約すると、値ｍは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」によって呼び出された関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を用いて復号され、ここで、「ｐｋｉ」は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって戻されるインデックスに相当する。算術コーダ（または復号部）は、スケーリングによるタグ生成の方法を用いた整数実装である。詳細については、Ｋ．Ｓａｙｏｏｄ，Ｔｈｉｒｄ  Ｅｄｉｔｉｏｎ，２００６，Ｅｌｓｅｖｉｅｒ  Ｉｎｃ．の書籍“Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ”を参照されたい。図５ｈおよび図５ｉによるコンピュータプログラムコードは、使用アルゴリズムを示す。
１１.７  エスケープ機構
以下に、図３による復号アルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」において使用されるエスケープ機構について簡単に説明する。
【０２１７】
復号された値ｍ（関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の戻り値として提供される）がエスケープ記号「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」である場合、変数「ｌｅｖ」および「ｅｓｃ＿ｎｂ」は１だけ増やされ、別の値ｍが復号される。この場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」が値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」によって入力引数として再び１回呼び出され、ここで、変数「ｅｓｃ＿ｎｂ」は、同じ２−タプルについて以前に復号され、７までに制限されているエスケープ記号の数を示す。
【０２１８】
要約すると、エスケープ記号が特定された場合、最上位ビットプレーン値ｍが増加した数値的重みを含んでいると仮定される。さらに、現在の数値復号が繰り返され、修正された現在の数値コンテキスト値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」が関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」への入力変数として使用される。したがって、サブアルゴリズム３１２ｂａの異なる繰返しにおいて異なるマッピング規則インデックス値「ｐｋｉ」が典型的には取得される。
１１.８  演算ストップ機構
以下に、演算ストップ機構について説明する。演算ストップ機構により、オーディオ符号化器において上方の周波数部分が０に完全に量子化される場合の所要ビット数を低減することが可能となる。
【０２１９】
実施の形態において、演算ストップ機構は、以下のように実現され得る。一旦、値ｍがエスケープ記号「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」でなくなると、復号器は、後続のｍが「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」記号を形成しているか否かをチェックする。条件「ｅｓｃ＿ｎｂ＞０＆＆ｍ＝＝０」が真である場合、「ＡＲＩＴＨ＿ＳＴＯＰ」記号が検出され、復号処理は終了する。この場合、復号器は、後述する「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」関数に直接ジャンプする。この条件は、フレームの残りが０値で構成されていることを意味する。
１１.９  下位ビットプレーンの復号
以下に、１つ以上の下位ビットプレーンの復号について説明する。下位ビットプレーンの復号は、例えば、図３に示すステップ３１２ｄにおいて行われる。しかし、代わりに、図５ｊおよび図５ｎに示すアルゴリズムが使用され得る。
１１.９.１  図５ｊによる下位ビットプレーンの復号
次に図５ｊを参照すると、変数ａおよびｂの値が値ｍから導出されることが理解される。例えば、値ｍの数値表現が２ビット右にシフトされ、変数ｂの数値表現が取得される。さらに、変数ｂの値のビットシフトされたバージョン、即ち、２ビット左にビットシフトしたものを変数ｍの値から減算することにより、変数ａの値が取得される。
【０２２０】
続いて、最下位ビットプレーン値ｒの算術復号が繰り返され、ここで、繰返し回数は、変数「ｌｅｖ」の値によって決定される。最下位ビットプレーン値ｒは、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」を用いて取得され、最下位ビットプレーンの復号に適合された累積度数テーブルが使用される（累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ」）。変数ｒの最下位ビット（数値的重みが１である）は、変数ａによって表されるスペクトル値の下位ビットプレーンを示し、変数ｒの数値的重みが２であるビットは、変数ｂによって表されるスペクトル値の下位ビットを示す。したがって、変数ａは、変数ａを１ビット左にシフトし、変数ｒの数値的重みが１であるビットを最下位ビットとして加算することによって更新される。同様に、変数ｂは、変数ｂを１ビット左にシフトし、変数ｒの数値的重みが２であるビットを加算することによって更新される。
【０２２１】
したがって、変数ａ，ｂのビットを運ぶ２つの最上位情報は、最上位ビットプレーン値ｍによって決定され、値ａおよびｂの１つ以上の最下位ビット（存在する場合）は、１つ以上の下位ビットプレーン値ｒによって決定される。
【０２２２】
上記を要約すると、「ＡＲＩＴＨ＿ＳＴＯＰ」記号が満たされない場合、残りのビットプレーンは、現在の２−タプルについて（存在する場合）復号される。残りのビットプレーンは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ［］」を用いて関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」をｌｅｖ回呼び出すことによって、最上位レベルから最下位レベルまで復号される。復号されたビットプレーンｒにより、図５ｊに疑似プログラムコードを示すアルゴリズムに従って以前に復号された値ｍを改良することが可能となる。
１１.９.２  図５ｎによる下位ビットバンドの復号
しかし、代わりに、図５ｎに疑似プログラムコード表現を示すアルゴリズムを下位ビットプレーンの復号に使用することも可能である。この場合、「ＡＲＩＴＨ＿ＳＴＯＰ」記号が満たされない場合、残りのビットプレーンは、現在の２−タプルについて（存在する場合）復号される。残りのビットプレーンは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ（）」によって「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を「ｌｅｖ」回呼び出すことによって、最上位レベルからから最下位レベルまで復号される。復号されたビットプレーンｒにより、図５ｎに示すアルゴリズムに従って以前に復号された値ｍを改良することが可能となる。
１１.１０  コンテキスト更新
１１.１０.１  図５ｋ，図５ｌ，および図５ｍによるコンテキスト更新
以下に、スペクトル値のタプルの復号を完了させるために使用される演算について図５ｋおよび図５ｌを参照して説明する。さらに、オーディオコンテンツの現在の部分（例えば、現在のフレーム）に対応付けられたスペクトル値のタプルの集合の復号を完了させるために使用される演算について説明する。
【０２２３】
図５ｋを参照すると、下位ビットの復号３１２ｄの後、配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリインデックスが２＊ｉであるエントリは、ａに等しくなるように設定され、配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリインデックスが「２＊ｉ＋１」であるエントリはｂに等しくなるように設定されることが理解される。換言すれば、下位ビットの復号３１２ｄの後の時点において、２−タプル（ａ，ｂ）の符号無しの値が完全に復号される。当該値は、図５ｋに示すアルゴリズムに従ってスペクトル係数を保持する要素（例えば、配列「ｘ＿ａｃ＿ｄｅｃ［］」）に保存される。
【０２２４】
続いて、コンテキスト「ｑ」もまた、次の２−タプルについて更新される。このコンテキスト更新はまた、最後の２−タプルについても行われる必要がある点に留意されたい。このコンテキスト更新は、図５ｌに疑似プログラムコード表現を示す関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって行われる。
【０２２５】
次に図５ｌを参照すると、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」は、２−タプルの符号無しの復号および量子化されたスペクトル係数（またはスペクトル値）ａ，ｂを入力変数としてを受け取ることが理解される。加えて、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」はまた、復号すべき量子化されたスペクトル係数のインデックスｉ（例えば、周波数インデックス）も入力変数として受け取る。換言すれば、入力変数ｉは、例えば、絶対値が入力変数ａ，ｂによって定義されるスペクトル値のタプルのインデックスであり得る。配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、ａ＋ｂ＋１に等しい値に設定され得ることが理解される。加えて、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」の値は、１６進値「０ｘＦ」に限定され得る。したがって、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、周波数インデックスｉを有するスペクトル値の現在復号中のタプル｛ａ，ｂ｝の絶対値の和を計算し、当該の結果に１を加算することによって、取得される。
【０２２６】
ここで、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、追加のスペクトル値（またはスペクトル値のタプル）の次の復号に用いられるコンテキストのサブ領域を示すため、コンテキストサブ領域値であると考えられ得る点に留意されたい。
【０２２７】
ここで、２つの現在復号中のスペクトル値（その符号付きバージョンは、配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリ「ｘ＿ａｃ＿ｄｅｃ［２＊ｉ］」および「ｘ＿ａｃ＿ｄｅｃ［２＊ｉ＋１］」に格納されている）の絶対値ａおよびｂの加算は、当該復号中のスペクトル値のノルム（例えば、Ｌ１ノルム）の計算であると考えられ得る点に留意されたい。
【０２２８】
複数の以前に復号されたスペクトル値によって形成されるベクトルのノルムを示すコンテキストサブ領域値（すなわち、配列「ｑ［］［］」のエントリ）は、特に有意であり、メモリ効率が高いということが分かっている。複数の以前に復号されたスペクトル値に基づいて計算されるこのようなノルムは、有意なコンテキスト情報をコンパクトな形式で含んでいるということが分かっている。スペクトル値の符号は、典型的には、コンテキストの選択に特に重要ではないということが分かっている。複数の以前に復号されたスペクトル値全体にわたってノルムを形成することにより、一部の詳細が破棄されるものの、典型的には、最も重要な情報が維持されるということも分かっている。さらに、現在の数値コンテキスト値を最大値に限定することは、典型的には、情報の深刻な損失をもたらさないということが分かっている。むしろ、所定の閾値の値よりも大きい上位スペクトル値に対して同じコンテキスト状態を使用することがより効率的であることが分かっている。したがって、コンテキストサブ領域値を限定することによって、メモリ効率がさらに向上する。さらに、コンテキストサブ領域値をある一定の最大値に限定することにより、例えば、図５ｃおよび図５ｄを参照して説明した、現在の数値コンテキスト値の特に簡単で計算効率の高い更新が可能となることが分かっている。コンテキストサブ領域値を比較的小さい値（例えば、１５の値に）限定することにより、複数のコンテキストサブ領域値に基づくコンテキスト状態を、図５ｃおよび図５ｄを参照して示した効率的な形式で表すことができる。
【０２２９】
さらに、コンテキストサブ領域値を１〜１５の値に限定することにより、正確性とメモリ効率との特に良好な妥協が図られるということが分かっている。その理由は、このようなコンテキストサブ領域値の格納には４ビットで十分であるからである。
【０２３０】
しかし、いくつかの他の実施の形態では、コンテキストサブ領域値は、単一の復号されたスペクトル値のみに基づく場合がある点に留意されたい。この場合、ノルムの形成は省略され得る。
【０２３１】
関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」の完了後、フレームの次の２−タプルは、ｉを１だけ増やし、上記に説明したのと同じ処理を関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」から再実行することによって復号される。
【０２３２】
ｌｇ／２個の２−タプルが、フレームにおいて復号される場合、あるいは「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」によるストップ記号が出現すると、スペクトルの振幅の復号処理は終了され、符号の復号が開始される。
【０２３３】
符号の復号に関する詳細については、符号の復号を参照符号３１４で示す図３を参照して既に述べた。
【０２３４】
一旦、すべての符号無しの量子化されたスペクトル係数が復号されると、それに応じた符号が付加される。「ｘ＿ａｃ＿ｄｅｃ」のヌルでない量子化された値のそれぞれについて、１つのビットが読み出される。読み出されたビット値が０に等しい場合、量子化された値は正であり、何も行われず、符号付き値は、以前に復号された符号無し値に等しい。そうでない場合（すなわち、読み出された値が１に等しい場合）、復号された係数（またはスペクトル値）は負であり、符号無し値から２の補数が取られる。符号ビットは、低い周波数からより高い周波数へと読み出される。詳細については、図３および符号復号３１４に関する説明を参照されたい。
【０２３５】
復号は、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」を呼び出すことによって終了する。残りのスペクトル係数は、０に設定される。それに応じて、各コンテキスト状態が更新される。
【０２３６】
詳細については、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の疑似プログラムコード表現を示す図５ｍを参照されたい。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」が復号および量子化されたスペクトル係数を示す入力変数ｌｇを受け取ることが理解される。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の入力変数ｌｇは、「ＡＲＩＴＨ＿ＳＴＯＰ」記号の検出に応じて０の値が割り当てられたスペクトル係数を考慮しない、実際に復号されたスペクトル係数の数を示すことが好ましい。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の入力変数Ｎは、現在のウィンドウ（すなわち、オーディオコンテンツの現在の部分に対応付けられたウィンドウ）のウィンドウ長さを示す。典型的には、長さＮのウィンドウに対応付けられたはスペクトル値の数はＮ／２に等しく、ウィンドウ長さＮのウィンドウに対応付けられたスペクトル値の２−タプルの数はＮ／４に等しい。
【０２３７】
関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」はまた、復号されたスペクトル値のベクトル「ｘ＿ａｃ＿ｄｅｃ」または少なくともそのような復号されたスペクトル係数のベクトルへの参照も入力値として受け取る。
【０２３８】
関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」は、演算ストップ条件が存在するためにスペクトル値が復号されていない配列（またはベクトル）「ｘ＿ａｃ＿ｄｅｃ」のエントリを０に設定するように構成されている。さらに、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」は、演算ストップ条件が存在するために値が復号されていないスペクトル値に対応付けられたコンテキストサブ領域値「ｑ［１］［ｉ］」を、所定の値１に設定する。所定の値１は、両方のスペクトル値が０に等しいスペクトル値のタプルに相当する。
【０２３９】
したがって、演算ストップ条件が存在する場合であっても、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」により、スペクトル値の配列（またはベクトル）「ｘ＿ａｃ＿ｄｅｃ［］」全体およびコンテキストサブ領域値の配列「ｑ［１］［ｉ］」全体を更新することが可能となる。
１１.１０.２  図５ｏおよび図５ｐによるコンテキスト更新
以下に、コンテキスト更新の別の実施の形態について図５ｏおよび図５ｐを参照して説明する。２−タプル（ａ，ｂ）の符号無しの値が完全に復号される時点において、次いで、コンテキストｑが、次の２−タプルについて更新される。この更新はまた、現在の２−タプルが最後の２−タプルである場合にも行われる。いずれの更新も、図５ｏに疑似プログラムコード表現を示す関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって行われる。
【０２４０】
次いで、ｉを１だけ増やし、関数ａｒｉｔｈ＿ｄｅｃｏｄｅ（）を呼び出すことによって、フレームの次の２−タプルが復号される。フレームにおいてｌｇ／２個の２−タプルが既に復号されている場合、あるいは、ストップ記号「ＡＲＩＴＨ＿ＳＴＯＰ」が出現した場合、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」が呼び出される。コンテキストは、次のフレームの配列（またはベクトル）「ｑｓ」に保存および格納される。関数「ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコードを図５ｐに示す。
【０２４１】
一旦、すべての符号無しの量子化されたスペクトル係数が復号されると、次いで、符号が付加される。「ｑｄｅｃ」の量子化されていない値のそれぞれについて、１つのビットが読み出される。読み出されたビット値が０に等しい場合、量子化された値は正であり、何も行われず、符号付き値は、以前に復号された符号無しの値に等しい。そうでない場合、復号された係数は負であり、符号無しの値から２の補数が取られる。符号付きビットは、低い周波数からより高い周波数へと読み出される。
１１.１１  復号処理についてのまとめ
以下に、復号処理について簡単にまとめる。詳細については、上記の記載ならびに図３，図４，図５ａ，図５ｃ，図５ｅ，図５ｇ，図５ｊ，図５ｋ，図５ｌおよび図５ｍを参照されたい。量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から開始して、最も高い周波数係数へとノイズレス復号される。これらは、いわゆる２−タプル（ａ，ｂ）において集合する２つの連続する係数ａ，ｂのグループによって復号される。
【０２４２】
次いで、周波数領域の（すなわち、周波数領域モードの）復号された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、配列「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」に格納される。ノイズレスコーディングコードワードの送信の順序は、これらが受信され、配列に格納された順に復号される場合、「ｂｉｎ」が増加の最も早いインデックスであり、「ｇ」が増加の最も遅いインデックスであるような順序である。１つのコードワード内では、復号の順序はａ、そしてｂの順である。「ＴＣＸ」の（すなわち、変換符号化励起を用いたオーディオ復号の）復号された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、配列「ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］」に格納され（例えば、直接）、ノイズレスコーディングコードワードの送信の順序は、これらが受信され、配列に格納された順に復号される場合、「ｂｉｎ」が増加の最も早いインデックスであり、「ｗｉｎ」が増加の最も遅いインデックスであるような順序である。１つのコードワード内では、復号の順序はａ、そしてｂの順である。
【０２４３】
まず、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテキストをリセットしなければならないか否かを判定する。フラグが真である場合、これは、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」において考慮される。
【０２４４】
復号処理は、初期化段階から開始され、初期化段階では、ｑ［１］［］に格納された以前のフレームのコンテキスト要素を「ｑ［０］［］」にコピーおよびマッピングすることによりコンテキスト要素ベクトル「ｑ」が更新される。「ｑ」内のコンテキスト要素は、１つの２−タプルにつき４ビット格納される。詳細については、図５ａの疑似プログラムコードを参照されたい。
【０２４５】
ノイズレス復号部は、符号無しの量子化されたスペクトル係数の２−タプルを出力する。最初に、復号すべき２−タプルの周囲にある以前に復号されたスペクトル係数に基づいてコンテキスト状態ｃが計算される。したがって、状態は、２つの新しい２−タプルのみを考慮して、最後に復号された２−タプルのコンテキスト状態を用いて増加的に更新される。状態は、１７ビットで復号され、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」によって戻される。セット関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現を図５ｃに示す。
【０２４６】
コンテキスト状態ｃは、最上位２ビット単位プレーンｍの復号に使用される累積度数テーブルを決定する。対応する累積度数テーブルインデックス「ｐｋｉ」へのｃからのマッピングは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって行われる。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現を図５ｅに示す。
【０２４７】
値ｍは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」によって呼び出される関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を用いて復号され、ここで、「ｐｋｉ」は、「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって戻されるインデックスに対応する。算術符号化部（および復号部）は、スケーリングによるタグ生成の方法を用いた整数実装である。図５ｇによる疑似プログラムコードは、使用アルゴリズムを示している。
【０２４８】
復号された値ｍがエスケープ記号「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」である場合、変数「ｌｅｖ」および「ｅｓｃ＿ｎｂ」は、１だけ増やされ、別の値ｍが復号される。この場合、「ｅｓｃ＿ｎｂ」が同じ２−タプルによって以前に復号されかつ７までに限定されているエスケープ記号の数である値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」を用いて、関数「ｇｅｔ＿ｐｋ（）」が再び入力引数として呼び出される。
【０２４９】
一旦、値ｍがエスケープ記号「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」でなくなると、復号器は、後続のｍが「ＡＲＩＴＨ＿ＳＴＯＰ」記号を形成しているか否かをチェックする。条件「（ｅｓｃ＿ｎｂ＞０＆＆ｍ＝＝０）」が真である場合、「ＡＲＩＴＨ＿ＳＴＯＰ」記号が検出され、復号処理は終了する。復号器は、後述する符号復号に直接ジャンプする。この条件は、フレームの残りが０値からなることを意味する。
【０２５０】
「ＡＲＩＴＨ＿ＳＴＯＰ」記号が満たされない場合、次いで、現在の２−タプルについて（存在する場合）、残りのビットプレーンが復号される。累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ［］」を用いて「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」をｌｅｖ回呼び出すことによって、残りのビットプレーンが最上位のレベルから最下位のレベルまで復号される。復号されたビットプレーンｒにより、図５ｊに疑似プログラムコードを示すアルゴリズムに従って、以前に復号された値ｍを改良することが可能となる。この時点で、２−タプル（ａ，ｂ）の符号無しの値が完全に復号される。当該値は、疑似プログラムコード表現を図５ｋに示すアルゴリズムに従って、スペクトル係数を保持する要素に保存される。
【０２５１】
コンテキスト「ｑ」もまた、次の２−タプルについて更新される。このコンテキスト更新はまた、最後の２−タプルについても行われる必要がある点に留意されたい。このコンテキスト更新は、図５ｌに疑似プログラムコード表現を示す関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって行われる。
【０２５２】
次いで、フレームの次の２−タプルは、ｉを１だけ増やし、上記に説明したのと同じ処理を関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」から再実行することによって復号される。ｌｇ／２個の２−タプルがフレームにおいて復号される場合、あるいは、ストップ記号「ＡＲＩＴＨ＿ＳＴＯＰ」が出現した場合、スペクトルの振幅の復号処理は終了され、符号の復号が開始される。
【０２５３】
復号は、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」を呼び出すことによって終了する。残りのスペクトル係数は、０に設定される。それに応じて、各コンテキスト状態が更新される。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の疑似プログラムコード表現を図５ｍに示す。
【０２５４】
一旦、すべての符号無しの量子化されたスペクトル係数が復号されると、それに応じた符号が付加される。「ｘ＿ａｃ＿ｄｅｃ」のヌルでない量子化された値のそれぞれについて、１つのビットが読み出される。読み出されたビット値が０に等しい場合、量子化された値は正であり、何も行われず、符号付き値は、以前に復号された符号無しの値に等しい。そうでない場合、復号された係数は負であり、符号無しの値から２の補数が取られる。符号付きビットは、低い周波数からより高い周波数へと読み出される。
１１.１２  凡例
図５ｑは、図５ａ，図５ｃ，図５ｅ，図５ｆ，図５ｇ，図５ｊ，図５ｋ，図５ｌおよび図５ｍによるアルゴリズムに関する定義の凡例を示す。
【０２５５】
図５ｒは、図５ｂ，図５ｄ，図５ｆ，図５ｈ，図５ｉ，図５ｎ，図５ｏおよび図５ｐによるアルゴリズムに関する定義の凡例を示す。
１２.  マッピングテーブル
本発明による実施の形態において、図５ｅまたは図５ｆによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」ならびに図５ｇ、図５ｈおよび図５ｉを参照して述べた関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行のために、特に有利なテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」，「ａｒｉ＿ｈａｓｈ＿ｍ」および「ａｒｉ＿ｃｆ＿ｍ」が使用される。しかし、本発明によるいくつかの実施の形態においては異なるテーブルが使用され得る点に留意されたい。
１２.１  図２２によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」
図５ｅを参照して第１の実施の形態が説明され、図５ｆを参照して第２の実施の形態が説明された関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」によって用いられるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」の特に有利な実施の内容を図２２のテーブルに示す。図２２のテーブルには、テーブル（または配列）「ａｒｉ＿ｈａｓｈ＿ｍ［６００］」の６００個のエントリが列挙されている点に留意されたい。図２２のテーブル表現は、要素を要素インデックス順に示し、したがって、第１の値「０ｘ００００００１００ＵＬ」は、要素インデックス（テーブルインデックス）が０であるテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［０］」に対応し、最後の値「０ｘ７ｆｆｆｆｆｆｆｆ４ｆＵＬ」は、要素インデックスまたはテーブルインデックスが５９９であるテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［５９９］」に対応する点にも留意されたい。ここで、「０ｘ」は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリが１６進法形式で表されることを示している点にもさらに留意されたい。さらに、ここで、接尾部「ＵＬ」は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリが符号無しの「長い」整数値（３２ビットの精度を有する）で表される点に留意されたい。
【０２５６】
さらに、図２２によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のテーブル検索５０６ｂ，５０８ｂ，５１０ｂを可能にするために、数値順に配置されている点に留意されたい。
【０２５７】
テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のテーブルエントリの最上位２４ビットは、ある上位状態値を表し、最下位８ビットは、マッピング規則インデックス値「ｐｋｉ」を表す点にさらに留意されたい。したがって、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリは、コンテキスト値のマッピング規則インデックス値「ｐｋｉ」への「直接ヒット」マッピングを示す。
【０２５８】
ただし、同時に、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの最上位２４ビットは、同じマッピング規則インデックス値が対応付けられた数値コンテキスト値の間隔の間隔境界を表す。この概念に関する詳細については上記において既に述べた。
１２.２  図２１によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」の特に有利な実施の形態の内容を図２１のテーブルに示す。ここで、図２１のテーブルには、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリが列挙されている点に留意されたい。エントリは、例えば、「ｉ＿ｍａｘ」または「ｉ＿ｍｉｎ」で示される一次元整数型のエントリインデックス（「要素インデックス」または「配列インデックス」または「テーブルインデックス」としても示される）によって参照される。合計６００個のエントリを含むテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」は、図５ｅまたは図５ｆによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」による使用によく適している点に留意されたい。図２１によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」は、図２２によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」と協働するように適合されている点にも留意されたい。
【０２５９】
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［６００］」のエントリは、０〜５９９のテーブルインデックス「ｉ」（例えば、「ｉ＿ｍｉｎ」または「ｉ＿ｍａｘ」）の昇順で列挙されている点に留意されたい。用語「０ｘ」は、テーブルエントリが１６進法形式で記述されていることを示す。したがって、第１のテーブルエントリ「０ｘ０２」は、テーブルインデックスが０であるテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［０］」に対応し、最後のテーブルエントリ「０ｘ５Ｅ」は、テーブルインデックスが５９９であるテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［５９９］」に対応する。
【０２６０】
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリは、テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［］」の隣接するエントリによって定義される間隔に対応付けられている点にも留意されたい。したがって、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリは、数値コンテキスト値の間隔に対応付けられたマッピング規則インデックス値を示し、当該間隔は、テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ」のエントリによって定義される。
１２.３.  図２３によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」
図２３は、９６個の累積度数テーブル（またはサブテーブル）「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］」の集合を示し、これらのうち１つが、例えば、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行、すなわち、最上位ビットプレーン値の復号のために、オーディオ符号化器１００，７００またはオーディオ復号器２００，８００によって選択される。図２３に示す、９６個の累積度数テーブル（またはサブテーブル）のうちの選択された１つは、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行においてテーブル「ｃｕｍ＿ｆｒｅｑ［］」の関数を取る。
【０２６１】
図２３から理解されるように、各サブブロックは、１７個のエントリを有する累積度数テーブルを示す。例えば、第１のサブブロック２３１０は、「ｐｋｉ＝０」についての累積度数テーブルの１７個のエントリを表す。第２のサブブロック２３１２は、「ｐｋｉ＝１」の場合の累積度数テーブルの１７個のエントリを表す。最後に、９６番目のサブブロック２３９６は、「ｐｋｉ＝９５」の場合の累積度数テーブルの１７個のエントリを表す。したがって、図２３は、「ｐｋｉ＝０」〜「ｐｋｉ＝９５」である場合の９６個の異なる累積度数テーブル（またはサブテーブル）を実質上表し、９６個の累積度数テーブルはそれぞれ、サブブロック（中括弧で囲まれた）によって表され、当該累積度数テーブルのそれぞれが１７個のエントリを含む。
【０２６２】
１つのサブブロック（例えば、サブブロック２３１０，２３１２，またはサブブロック２３９６）内において、最初の値は、累積度数テーブルの第１のエントリ（配列インデックスまたはテーブルインデックスが０である）を示し、最後の値は、累積度数テーブルの最後のエントリ（配列インデックスまたはテーブルインデックスが１６である）を示す。
【０２６３】
したがって、図２３のテーブル表現の各サブブロック２３１０，２３１２，２３９６は、図５ｇによる関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」または図５ｈおよび５ｉによる関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」によって使用される累積度数テーブルのエントリを表す。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の入力変数「ｃｕｍ＿ｆｒｅｑ［］」は、９６個の累積度数テーブル（テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ」の１７個のエントリの個々のサブブロックによって表される）のうちどのテーブルが現在のスペクトル係数の復号に使用されるべきかを示す。
１２.４  図２４によるテーブル「ａｒｉ＿ｃｆ＿ｒ［］」
図２４は、テーブル「ａｒｉ＿ｃｆ＿ｒ［］」の内容を示す。
【０２６４】
当該テーブルの４つのエントリは図２４に示されている。ただし、他の実施の形態において、テーブル「ａｒｉ＿ｃｆ＿ｒ」は最終的に異なり得る点に留意されたい。
１３.  性能評価および利点
上述の通り、本発明による実施の形態は、計算の複雑性と、メモリ要件と、コーディング効率との改良されたトレードオフを実現するために、上述したように、更新された関数（またはアルゴリズム）およびテーブルの更新された集合を使用する。
【０２６５】
概して、本発明による実施の形態は、改良されたスペクトルノイズレスコーディングを実現する。本発明による実施の形態では、ＵＳＡＣ（音声オーディオ統合符号化）におけるスペクトルノイズレスコーディングの向上について記載される。
【０２６６】
本発明による実施の形態は、ＭＰＥＧのインプットペーパーｍ１６９１２およびｍ１７００２において提案された方式に基づいた、スペクトル係数の改良されたスペクトルノイズレスコーディングのコーディング効率のための最新の提案を実現する。両方の提案が評価され、潜在的な欠陥は解消され、長所が組み合わされた。
【０２６７】
ｍ１６９１２およびｍ１７００２においてと同様、最終的に得られた提案は、ＵＳＡＣワーキングドラフト５（統合音声オーディオコーディングの規格案）と同じく、算術コーディング方式に基づいた元来のコンテキストに基づくものであるが、コーディング効率を維持しながら計算の複雑性を高めることなくメモリ要件（ランダムアクセスメモリ（ＲＡＭ）および読取り専用メモリ（ＲＯＭ））を大きく低減する。加えて、ＵＳＡＣ規格案のワーキングドラフト３、およびＵＳＡＣ規格案のワーキングドラフト５によるビットストリームの無損失型トランスコーディングが可能であることが証明された。本発明による実施の形態は、ＵＳＡＣ規格案のワーキングドラフト５において使用されるスペクトルノイズレスコーディング方式の代わりをなすことを目的とする。
【０２６８】
本明細書に記載される算術コーディング方式は、参照モデル０（ＲＭ０）またはＵＳＡＣ規格案のワーキングドラフト５（ＷＤ）におけるものと同様の方式に基づいている。周波数または時間におけるスペクトル係数により、コンテキストがモデル化される。このコンテキストは、算術符号化部のための累積度数テーブルの選択に使用される。ワーキングドラフト５（ＷＤ）と比較して、コンテキストのモデル化はさらに改良され、記号確率を保持するテーブルは再調整された。異なる確率モデルの数は、３２個から９６個へと増やした。
【０２６９】
本発明による実施の形態は、テーブルサイズ（データＲＯＭ需要）が長さ３２ビットまたは６０７２バイトの１５１８ワード（ＷＤ５：１６，８９４．５ワードまたは６７,５７８バイト）に縮小される。静的ＲＡＭ需要は、１つのコアコーダチャネルにつき、６６６ワード（２,６６４バイト）から７２ワード（２８８バイト）に縮小される。同時に、コーディング性能を完全に維持し、９つの動作点すべてにわたる全データレートに比較して、約１．２９〜１.９５％の利得に達することも可能である。ワーキングドラフト３およびワーキングドラフト５のすべてのビットストリームを、ビットリザーバ制約に影響を与えることなく、無損失でトランスコーディングすることが可能である。
【０２７０】
以下に、本明細書に記載される概念の利点の理解を容易にするため、ＵＳＡＣ規格案のワーキングドラフト５によるコーディング概念について簡単に述べる。続いて、本発明によるいくつかの好適な実施の形態について説明する。
【０２７１】
ＵＳＡＣワーキングドラフト５においては、量子化されたスペクトル係数のノイズレスコーディングのために、コンテキストベースの算術コーディング方式が使用されている。コンテキストとして、周波数および時間において以前のものである復号されたスペクトル係数が使用される。ワーキングドラフト５において、最大１６個のスペクトル係数がコンテキストとして使用され、それらのうち１２個は、時間において以前のものである。また、コンテキストに使用されかつ復号されるスペクトル係数は、４−タプル（すなわち、周波数において近接する４つのスペクトル係数、図１４ａを参照）にグループ化される。コンテキストは、縮小され、累積度数テーブルにマッピングされ、次いで、スペクトル係数の次の４−タプルを復号するために用いられる。
【０２７２】
ワーキングドラフト５の完全なノイズレスコーディング方式のためには、１６８９４．５ワード（６７５７８バイト）のメモリ需要（読取り専用メモリ（ＲＯＭ））が必要とされる。加えて、次のフレームの状態を格納するために、１つのコアコーダチャネルにつき６６６ワード（２６６４バイト）の静的ＲＡＭが必要とされる。図１４ｂのテーブル表現は、ＵＳＡＣ  ＷＤ４の算術コーディング方式において使用されるテーブルを示す。
【０２７３】
ここで、ノイズレスコーディングに関し、ＵＳＡＣ規格案のワーキングドラフト４および５は同様である点に留意されたい。両者は同じノイズレスコーダを使用する。
【０２７４】
ＵＳＡＣのＷＤ５の完全な復号器の合計メモリ需要は、プログラムコードを含まないデータＲＯＭの場合で３７０００ワード（１４８０００バイト）、静的ＲＡＭの場合で１００００〜１７０００ワードであると推測される。ノイズレスコーダのテーブルは、合計データＲＯＭ需要の約４５％を消費することは明らかに理解される。最も大きい単独のテーブルは、既に４０９６ワード（１６３８４バイト）を消費している。
【０２７５】
テーブルのすべての組み合わせおよび単独の大規模テーブルのサイズは、いずれも、民生用携帯機器において使用される固定点プロセッサによって提供される、８〜３２Ｋｂｙｔｅの典型的な範囲にある典型的なキャッシュサイズを上回っていることが分かっている（例えば、ＡＲＭ９ｅ，ＴＩＣ６４ＸＸ等）。これはつまり、テーブルの集合は、データへの高速ランダムアクセスを可能にする高速データＲＡＭにおそらく格納することができないということを意味する。これにより、復号処理全体が低速化する。
【０２７６】
さらに、ＨＥ−ＡＡＣといった現在奏功しているオーディオコーディング技術は、ほとんどの携帯機器で実現可能であると証明されていることが分かっている。ＨＥ−ＡＡＣは、テーブルサイズが９９５ワードのハフマンエントロピーコーディング方式を使用する。詳細については、ＩＳＯ／ＩＥＣＪＴＣ１／ＳＣ２９／ＷＧ１１  Ｎ２００５、ＭＰＥＧ９８、Ｆｅｂｒｕａｒｙ  １９９８，Ｓａｎ  Ｊｏｓｅ、“Ｒｅｖｉｓｅｄ  Ｒｅｐｏｒｔ  ｏｎ  Ｃｏｍｐｌｅｘｉｔｙ  ｏｆ  ＭＰＥＧ−２  ＡＡＣ２”を参照されたい。
【０２７７】
第９０回ＭＰＥＧ会議において、メモリ要件の低減およびノイズレスコーディング方式の符号化効率の向上を目的とする２つの提案がＭＰＥＧインプットペーパーｍ１６９１２およびｍ１７００２においてなされた。両提案を分析することにより、以下の結論を導き出すことができた。
・コードワード次元を減少させることにより、メモリ需要の大幅な低減が可能である。ＭＰＥＧのインプットドキュメントｍ１７００２において示されるように、４−タプルから１−タプルへと次元を減少させることにより、コーディング効率を損なうことなく、メモリ需要を１６９８４．５から９００ワードへと低減することができた；
・ＬＳＢコーディングに均一な確率分布を用いる代わりに非均一な確率分布のコードブックを用いることにより、さらなる冗長性を解消することができた。
【０２７８】
評価の過程において、４−タプル方式から１−タプルコーディング方式への移行は、計算の複雑性に大きな影響を及ぼすことが分かった。つまり、コーディング次元の減少により、コーディングすべき記号の数が同じ倍率だけ増加する。これは、つまり、４−タプルから１−タプルへの減少のために、コンテキストの決定、ハッシュテーブルへのアクセスおよび記号の復号に必要な演算を以前に比べて４倍実行しなければならないことを意味する。このことは、コンテキスト決定のためのより複雑なアルゴリズムとともに、計算の複雑性を２．５倍またはｘ．ｘｘＰＣＵ倍増加させることにつながる。
【０２７９】
以下に、本発明の実施の形態による、提案される新たな方式について簡単に説明する。
【０２８０】
メモリのフットプリントおよび計算の複雑性の問題を克服するため、ワーキングドラフト５（ＷＤ５）にあるような方式に取って替わる改良されたノイズレスコーディング方式が提案される。開発における主な重点は、圧縮効率を維持し、計算の複雑性を向上させながら、メモリ需要を低減することに置かれた。より詳細には、圧縮性能の多次元複雑性空間と、複雑性と、メモリ要件との良好な（またはさらには最も優れた）トレードオフを達成することを目的とした。
【０２８１】
この新規なコーディング方式の提案では、ＷＤ５ノイズレス符号化器の主要な特徴、すなわち、コンテキスト適合を流用する。コンテキストは、ＷＤ５においてと同様、過去および現在のフレーム（フレームは、オーディオコンテンツの部分として考えら得る）の両方から得られる、以前に復号されたスペクトル係数を用いて導出される。しかし、スペクトル係数は、２つの係数を互いに組み合わせて２−タプルを形成することによりコーディングされることになる。別の違いは、スペクトル係数は、符号、より上位または最上位のビット（ＭＳＢ）および下位または最下位のビット（ＬＳＢ）という３つの部分に分割されるようになる点にある。符号は、最上位ビット（またはより上位のビット）および、存在する場合は、ビットの残り（または下位のビット）という２つの部分にさらに分割される大きさから個別にコーディングされる。２つの要素の大きさが３より低いか３に等しい２−タプルは、ＭＳＢコーディングによって直接コーディングされる。そうでない場合、追加のビットプレーンを通知するために、エスケープコードワードが最初に送信される。ベースバージョンにおいて、欠落している情報（ＬＳＢおよび符号）は、いずれも、均一な確率分布を用いてコーディングされる。代替的に、異なる確率分布が使用され得る。
【０２８２】
テーブルサイズの縮小は、以下の理由により依然として可能である：
・１７個の記号の確率のみを格納するだけでよい：｛［０；＋３］，［０；＋３］｝＋ＥＳＣ記号；
・グループ化テーブル（ｅｇｒｏｕｐｓ，ｄｇｒｏｕｐｓ，ｄｇｖｅｃｔｏｒｓ）を格納する必要がない；
・ハッシュテーブルのサイズは、適切な訓練によって縮小することができる。
【０２８３】
以下に、ＭＳＢコーディングに関するいくつかの詳細について説明する。すでに述べたように、ＵＳＡＣ規格案のＷＤ５と、第９０回ＭＰＥＧ会議において提出された現在の提案との主な違いの１つは、記号の次元であると考えられる。ＵＳＡＣ規格案のＷＤ５においては、４−タプルが、コンテキスト生成およびノイズレスコーディングのために考慮される。第９０回ＭＰＥＧ会議において提出された提案においては、ＲＯＭ要件を低減するために１−タプルが使用された。開発の過程で、計算の複雑性を高めることなくＲＯＭ要件を低減させるには、２−タプルが最良の妥協策であることが分かった。コンテキストのイノベーションのために４つの４−タプルを考慮する代わりに、４つの２−タプルが考慮されるようになる。図１５ａに示すように、３つの２−タプルは過去のフレーム（オーディオコンテンツの以前の部分としても示される）に由来し、１つは現在のフレーム（オーディオコンテンツの現在の部分としても示される）に由来する。
【０２８４】
テーブルサイズの縮小は、３つの主要な要因によるものである。第１には、１７個の記号の確率のみを格納するだけでよい（すなわち、｛［０；＋３］，［０；＋３］｝＋ＥＳＣ記号）。グループ化テーブル（すなわち、ｅｇｒｏｕｐｓ，ｄｇｒｏｕｐｓおよびｄｇｖｅｃｔｏｒｓ）は必要とされなくなった。最後に、ハッシュテーブルのサイズは、適切な訓練を行うことにって縮小された。
【０２８５】
次元は４から２に低減されたが、複雑性は、ＵＳＡＣ規格案のＷＤ５における範囲に維持された。これは、コンテキスト生成およびハッシュテーブルアクセスの両方を簡素化することによって行われた。
【０２８６】
コーディング性能が影響を受けず、さらには若干改良されるように異なる簡素化および最適化が行われた。これは、確率モデルの数を３２から９６に増やすことによって主に行われた。
【０２８７】
以下に、ＬＳＢコーディングに関するいくつかの詳細について説明する。いくつかの実施の形態において、ＬＳＢは、均一な確率分布を用いてコーディングされる。ＵＳＡＣ規格案のＷＤ５と比較して、ＬＳＢは、４−タプルではなく２−タプル内で考慮されるようになる。
【０２８８】
以下に、符号コーディングに関するいくつかの詳細について説明する。符号は、複雑性の低減の目的で算術コアコーダを用いることなく、コーディングされる。符号は、対応する大きさがヌルでない場合、１ビットのみで送信される。０は正の値を意味し、１は負の値を意味する。
【０２８９】
以下に、メモリ需要に関するいくつかの詳細について説明する。提案される新規な方式の合計ＲＯＭ需要は、最大で新規１５２２．５ワード（６０９０バイト）である。詳細については、提案されるコーディング方式において使用されるテーブルを示す図１５ｂのテーブルを参照されたい。ＵＳＡＣ規格案のＷＤ５におけるノイズレスコーディング方式のＲＯＭ需要と比較して、ＲＯＭ需要は、少なくとも１５４６２ワード（６１８４８バイト）低減される。ＨＥ−ＡＡＣにおけるＡＡＣハフマン復号器に必要なメモリ要件（９９５ワードまたは３９８０バイト）の大きさと同程度となる。詳細については、ＩＳＯ／ＩＥＣＪＴＣ１／ＳＣ２９／ＷＧ１１  Ｎ２００５，ＭＰＥＧ９８，Ｆｅｂｒｕａｒｙ  １９９８，Ｓａｎ  Ｊｏｓｅ，“Ｒｅｖｉｓｅｄ  Ｒｅｐｏｒｔ  ｏｎ  Ｃｏｍｐｌｅｘｉｔｙ  ｏｆ  ＭＰＥＧ−２  ＡＡＣ２”、および図１６ａを参照されたい。これにより、ノイズレスコーダの総ＲＯＭ需要は９２％低減され、完全なＵＳＡＣ復号器のそれは、約３７０００ワードから約２１５００ワードに、すなわち、４１％以上低減される。詳細については、図１６ａおよび図１６ｂを再度参照されたい。図１６ａは、提案されるノイズレスコーディング方式のＲＯＭ需要およびＵＳＡＣ規格案のＷＤ４によるノイズレスコーディング方式のＲＯＭ需要を示し、図１６ｂは、提案される方式およびＵＳＡＣ規格案のＷＤ４によるＵＳＡＣ復号器の合計データＲＯＭ需要を示す。
【０２９０】
さらに、次のフレーム（静的ＲＯＭ）におけるコンテキスト導出に必要とされる情報も低減される。ＵＳＡＣ規格案のＷＤ５において、分解能が１つの４−タプルにつき１０ビットであるグループインデックスに加えて、典型的には分解能が１６ビットである係数の完全な集合（最大１１５２個の係数）を格納する必要があった。これは、１つのコアコーダチャネルにつき６６６ワード（２６６４バイト）（完全なＵＳＡＣのＷＤ４復号器：約１００００〜１７０００ワード）となる。新規な方式により、永続的な情報は、１つのスペクトル係数につきわずか２ビットに低減され、１つのコアコーダチャネルにつき合計で７２ワード（２８８バイト）となる。静的メモリの需要を５９４ワード（２３７６バイト）低減することができる。
【０２９１】
以下に、コーディング効率の考えられる増加に関する詳細のいくつかについて説明する。新規な提案による実施の形態の復号効率をＵＳＡＣ規格案のワーキングドラフト３（ＷＤ３）およびＷＤ５による参照品質ビットストリームと比較した。比較は、参照ソフトウェア復号器に基づくトランスコーダによって行った。ＵＳＡＣ規格案のＷＤ３またはＷＤ５によるノイズレスコーディングと提案されるコーディング方式とのこの比較の詳細については、ＷＤ３／５のノイズレスコーディングと提案されるコーディング方式との比較に関するテスト構成の模式図を示す図１７を参照されたい。
【０２９２】
また、本発明による実施の形態におけるメモリ需要をＵＳＡＣ規格案のＷＤ３（またはＷＤ５）による実施の形態と比較した。
【０２９３】
コーディング効率は、維持されただけでなく若干向上した。詳細については、ＷＤ３算術コーダ（またはＷＤ３算術コーダを用いたＵＳＡＣオーディオコーダ）および本発明の実施の形態によるオーディオコーダ（例えば、ＵＳＡＣオーディオコーダ）によって生成される平均ビットレートのテーブル表現を示す図１８を参照されたい。
【０２９４】
動作モードごとの平均ビットレートの詳細は、図１８のテーブルにおいてみられる。
【０２９５】
さらに、図１９は、ＷＤ３算術コーダ（またはＷＤ３算術コーダを用いたオーディオコーダ）および本発明の実施の形態によるオーディオコーダの最小ビットリザーバレベルおよび最大ビットリザーバレベルのテーブル表現を示す。
【０２９６】
以下に、計算の複雑性に関するいくつかの詳細について説明する。算術コーディングの次元数の低減は、通常、計算の複雑性の増加につながる。実際、次元を２分の１に低減すると、算術コーダのルーチンの呼び出しは２倍になる。
【０２９７】
しかし、複雑性のこのような増加は、本発明の実施の形態による、提案される新規なコーディング方式において導入されるいくつかの最適化によって制限することができることが分かっている。本発明によるいくつかの実施の形態において、コンテキスト生成は大幅に簡素化された。それぞれの２−タプルについて、コンテキストは、最後に生成されたコンテキストから増加的に更新することができる。確率は、１６ビットではなく１４ビットで格納されるようになり、これによって、復号処理時の６４ビット演算を回避することができる。さらに、本発明によるいくつかの実施の形態において、確率モデルマッピングは著しく最適化された。最悪のケースは大幅に低減され、９５回ではなく１０回の繰返しに制限される。
【０２９８】
その結果、提案されるノイズレスコーディング方式の計算の複雑性は、ＷＤ５におけるものと同じ範囲に抑えられた。ノイズレスコーディングの異なるバージョンによって「ペンと紙」推定を行い、これは図２０のテーブルに記録されている。同テーブルは、新規なコーディング方式がＷＤ５算術コーダよりもわずか１３％だけ複雑性が低いことを示している。
【０２９９】
上記を要約すると、本発明による実施の形態は、計算の複雑性と、メモリ要件と、コーディング効率との特に良好なトレードオフを提供することが理解される。
１４．ビットストリーム構文
１４.１  スペクトルノイズレスコーダのペイロード
以下に、スペクトルノイズレスコーダのペイロードに関するいくつかの詳細について説明する。いくつかの実施の形態において、例えば、いわゆる「線形予測領域」コーディングモードおよび「周波数領域」コーディングモードといった複数の異なるコーディングモードが存在する。線形予測領域コーディングモードにおいては、オーディオ信号の線形予測分析に基づいてノイズ整形が行われ、ノイズ整形された信号が周波数領域において符号化される。周波数領域コーディングモードにおいては、心理音響分析に基づいてノイズ整形が行われ、オーディオコンテンツのノイズ整形されたバージョンが周波数領域において符号化される。
【０３００】
「線形予測領域」コーディングされた信号および「周波数領域」コーディングされた信号の両方からのスペクトル係数は、スカラー量子化され、次いで、適合的コンテキスト依存型算術コーディングによってノイズレスコーディングされる。量子化された係数は、最も低い周波数から最も高い周波数へ送信される前に、２−タプルに集められる。それぞれの２−タプルは、符号ｓ、最上位２ビット単位プレーンｍおよび残りの１つ以上の下位ビットプレーンｒ（存在する場合）に分割される。値ｍは、近接スペクトル係数によって定義されるコンテキストに応じてコーディングされる。換言すれば、ｍは、係数近傍に応じてコーディングされる。残りの下位ビットプレーンｒは、コンテキストを考慮せず、エントロピーコーディングされる。ｍおよびｒを用いることにより、これらのスペクトル係数の振幅を復号器側で復元することができる。すべてのヌルでない記号について、符号ｓは、算術コーダの外部において、１ビットでコーディングされる。換言すれば、値ｍおよびｒは、算術コーダの記号を形成する。最後に、符号ｓは、算術コーダの外部において、１つのヌルでない量子化された係数につき１ビットでコーディングされる。
【０３０１】
算術コーディングの詳細な手順が本明細書において示される。
１４.２  構文要素
以下に、算術符号化されたスペクトル情報を運ぶビットストリームのビットストリーム構文について図６ａ〜図６ｊを参照して説明する。
【０３０２】
図６ａは、いわゆるＵＳＡＣ生データブロック（「ｕｓａｃ＿ｒａｗ＿ｄａｔａ＿ｂｌｏｃｋ（）」）の構文表現を示す。
【０３０３】
ＵＳＡＣ生データブロックは、１つ以上の単一チャネル要素（「ｓｉｎｇｌｅ＿ｃｈａｎｎｅｌ＿ｅｌｅｍｅｎｔ（）」）および／または１つ以上のチャネル対要素（「ｃｈａｎｎｅｌ＿ｐａｉｒ＿ｅｌｅｍｅｎｔ（）」）を含む。
【０３０４】
ここで図６ｂを参照すると、単一チャネル要素の構文が示されている。単一チャネル要素は、コアモードに応じて、線形予測領域チャネルストリーム（「ｌｐｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）または周波数領域チャネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）を含む。
【０３０５】
図６ｃは、チャネル対要素の構文表現を示す。１つのチャネル対要素は、コアモード情報（「ｃｏｒｅ＿ｍｏｄｅ０」，「ｃｏｒｅ＿ｍｏｄｅ１」）を含む。加えて、チャネル対要素は、構成情報「ｉｃｓ＿ｉｎｆｏ（）」を含み得る。さらに、コアモード情報によっては、チャネル対要素は、第１のチャネルに対応付けられた線形予測領域チャネルストリームまたは周波数領域チャネルストリームを含み、チャネル対要素は、第２のチャネルに対応付けられた線形予測領域チャネルストリームまたは周波数領域チャネルストリームも含む。
【０３０６】
図６ｄに構文表現を示す構成情報「ｉｃｓ＿ｉｎｆｏ（）」は、本発明にとって特に重要ではない複数の異なる構成情報項目を含む。
【０３０７】
図６ｅに構文表現を示す周波数領域チャネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）は、利得情報（「ｇｌｏｂａｌ＿ｇａｉｎ」）および構成情報（「ｉｃｓ＿ｉｎｆｏ（）」）を含む。加えて、周波数領域チャネルストリームは、スケーリング因子データ（「ｓｃａｌｅ＿ｆａｃｔｏｒ＿ｄａｔａ（）」）を含み、スケーリング因子データは、異なるスケーリング因子バンドのスペクトル値をスケーリングするために使用されるスケーリング因子を示し、例えば、スケーリング部１５０および再スケーリング部２４０によって適用される。周波数領域チャネルストリームはまた、算術符号化されたスペクトル値を表す算術コーディングされたスペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）も含む。
【０３０８】
図６ｆに構文表現を示す算術コーディングされたスペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）は、上記の通り、コンテキストを選択的にリセットするために使用される任意の算術リセットフラグ（「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」）を含む。加えて、算術コーディングされたスペクトルデータは、算術コーディングされたスペクトル値を運ぶ複数の算術データブロック（「ａｒｉｔｈ＿ｄａｔａ」）を含む。算術コーディングされたデータブロックの構造は、後述されるように、周波数バンドの数（変数「ｎｕｍ＿ｂａｎｄｓ」によって表される）と、算術リセットフラグの状態とに依存する。
【０３０９】
以下に、算術符号化されたデータブロックの構造について、当該算術コーディングされたデータブロックの構文表現を示す図６ｇを参照して説明する。算術コーディングされたデータブロック内のデータ表現は、符号化対象のスペクトル値の数ｌｇと、算術リセットフラグの状態と、コンテキスト、すなわち、以前に符号化されたスペクトル値とに依存する。
【０３１０】
スペクトル値の現在の集合（例えば、２−タプル）の符号化のためのコンテキストは、参照符号６６０にて示されるコンテキスト決定アルゴリズムに従って決定される。コンテキスト決定アルゴリズムに関する詳細については、図５ａおよび図５ｂを参照して上記で説明した。算術符号化されたデータブロックは、コードワードのｌｇ／２個の集合を含み、コードワードの集合のそれぞれは、複数（例えば、２−タプル）のスペクトル値を表す。コードワードの１つの集合は、スペクトル値のタプルの最上位ビットプレーン値ｍを１〜２０ビットで表す算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」を含む。加えて、コードワードの集合は、スペクトル値のタプルが、正確な表現のために最上位ビットプレーンよりも多くのビットプレーンを必要とする場合、１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」を含む。コードワード「ａｃｏｄ＿ｒ［ｒ］」は、下位ビットプレーンを１〜１４ビットで表す。
【０３１１】
しかし、スペクトル値の適切な表現のために１つ以上の下位ビットプレーンが必要とされる場合（最上位ビットプレーンに加えて）、１つ以上の算術エスケープコードワード（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）を使用することによってその旨が通知される。したがって、１つのスペクトル値について、いくつのビットプレーン（最上位ビットプレーンおよび、場合によっては、１つ以上の追加の下位ビットプレーン）が必要であるかが判定されると概して言うことができる。１つ以上の下位ビットプレーンが必要である場合、累積度数テーブルインデックスが変数「ｐｋｉ」によって得られる現在選択されている累積度数テーブルに従って符号化された、１つ以上の算術エスケープコードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ＡＲＩＴＨ＿ＥＳＣＡＰＥ］」によってその旨が通知される。加えて、参照符号６６４，６６２においてみられるように、１つ以上の算術エスケープコードワードがビットストリームに含まれる場合、コンテキストは適合される。１つ以上の算術エスケープコードワードに続いて、参照符号６６３において示されるように算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」がビットストリームに含められ、ここで、「ｐｋｉ」は、現在有効な確率モデルインデックス（算術エスケープコードワードを含めることによって生じたコンテキスト適合を考慮して）を指定し、ｍは、符号化または復号対象のスペクトル値の最上位ビットプレーン値（ｍは、「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」コードワードとは異なる）を指定する。
【０３１２】
上述の通り、下位ビットプレーンが存在すると、それぞれが第１のスペクトル値の最下位ビットプレーンの１ビットを表しかつ第２のスペクトル値の最下位ビットプレーンの１ビットも表す、１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」が存在することになる。当該１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」は、例えば、一定でありかつコンテキスト独立型であり得る対応する累積度数テーブルに従って符号化される。しかし、１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」の復号のための累積度数テーブルを選択するための異なる機構が考えられる。
【０３１３】
加えて、コンテキストは、参照符号６６８において示されるように、スペクトル値のタプルのそれぞれを符号化した後に更新され、したがって、スペクトル値の２つの後のタプルを符号化および復号するためのコンテキストは、典型的には異なる点に留意されたい。
【０３１４】
図６ｉは、定義および算術符号化されたデータブロックの構文を定義するヘルプ要素の凡例を示す。
【０３１５】
さらに、算術データ「ａｒｉｔｈ＿ｄａｔａ（）」の別の構文が図６ｈに示され、定義およびヘルプ要素の対応する凡例が図６ｊに示される。
【０３１６】
上記を要約すると、オーディオ符号化器１００によって提供され、オーディオ復号器２００によって評価され得るビットストリームのフォーマットが説明された。算術符号化されたスペクトル値のビットストリームは、上述の復号アルゴリズムに適合するように符号化される。
【０３１７】
加えて、符号化は復号の逆演算であるため、符号化器は、上述のテーブルを用いたテーブル索引（復号器によって行われるテーブル索引とほぼ逆である）を行うと概して仮定することができる点に概して留意されたい。一般に、復号アルゴリズムおよび／または所望のビットストリーム構文を理解する当業者であれば、ビットストリーム構文において定義されかつ算術復号部によって要求されるデータを提供する算術符号化部を容易に設計することができるであろうと言うことができる。
【０３１８】
さらに、オーディオ復号器は、復号が符号化に適合されるようにオーディオ符号化器と同じコンテキストを使用することが典型的には望ましいため、現在の数値コンテキスト値を決定し、マッピング規則インデックス値を導出するための機構は、オーディオ符号化器とオーディオ復号器とにおいて同一であり得る点に留意されたい。
１５.  実施変形例
いくつかの態様を装置との関連で説明したが、これらの態様は対応する方法も示していることは明らかであり、方法においては、ブロックまたはデバイスは、方法ステップまたは方法ステップの特徴に対応する。同様に、方法ステップとの関連で説明した態様もまた、対応するブロックもしくは項目または対応する装置の特徴を示すものである。例えば、マイクロプロセッサ、プログラム可能なコンピュータ、または電子回路といったハードウェア装置によって（またはこれを用いて）、方法ステップの一部またはすべてを実行してもよい。いくつかの実施の形態では、最も重要な方法ステップのうち任意の１つ以上をこのような装置によって実行してもよい。
【０３１９】
本発明の符合化されたオーディオ信号は、デジタル記憶媒体に格納することができ、または、例えば、無線伝送媒体またはインターネットのような有線伝送媒体などの伝送媒体上に送信することができる。
【０３２０】
特定の実施要件によっては、本発明の実施の形態は、ハードウェアにおいて、またはソフトウェアにおいて実施されることができる。実施は、電子的に読取可能な制御信号を格納したデジタル記憶媒体、例えば、フロッピーディスク、ＤＶＤ、ブルーレイ、ＣＤ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュメモリを用いて実行することができ、これらは、各方法が実行されるようにプログラム可能なコンピュータシステムと協働する（または協働することができる）。したがって、デジタル記憶媒体は、コンピュータ可読であってもよい。
【０３２１】
本発明によるいくつかの実施の形態は、本明細書に記載される方法のうちの１つが実行されるように、プログラム可能なコンピュータシステムと協働することができる電子的に読取り可能な制御信号を有するデータキャリアを含む。
【０３２２】
通常、本発明の実施の形態は、プログラムコードを有するコンピュータプログラム製品として実現することができ、コンピュータプログラム製品がコンピュータで実行されたときに、プログラムコードが方法のうちの１つを実行するために動作する。プログラムコードは、例えば、機械可読キャリアに格納され得る。
【０３２３】
他の実施の形態は、本明細書に記載される、機械可読キャリアに格納された方法のうちの１つを実行するためのコンピュータプログラムを含む。
【０３２４】
したがって、換言すれば、本発明の方法の実施の形態は、コンピュータプログラムがコンピュータ上で実行されたときに、本明細書に記載される方法のうちの１つを実行するためのプログラムコードを有するコンピュータプログラムである。
【０３２５】
したがって、本発明の方法のさらなる実施の形態は、本明細書に記載される方法のうちの１つを実行するためのコンピュータプログラムが記録されたデータキャリア（すなわちデジタル記憶媒体またはコンピュータ可読媒体）である。データキャリア、デジタル記憶媒体、または記録された媒体は、典型的には、有形および／または非過渡的である。
【０３２６】
したがって、本発明の方法のさらなる実施の形態は、本明細書に記載される方法のうちの１つを実行するためのコンピュータプログラムを表すデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、例えばインターネットなどのデータ通信接続を介して転送されるように構成することができる。
【０３２７】
さらなる実施の形態は、本明細書で説明された方法の１つを実行するように構成されるかあるいは適合された、例えばコンピュータまたはプログラム可能論理デバイスといった処理手段を含む。
【０３２８】
さらなる実施の形態は、本明細書に記載される方法のうちの１つを実行するためのコンピュータプログラムを搭載したコンピュータを含む。
【０３２９】
本発明によるさらなる実施の形態は、本明細書で説明された方法のうちの１つを実行するためのコンピュータプログラムを受信機に転送する（例えば、電子的または光学的に）ように構成された装置またはシステムを含む。受信機は、例えば、コンピュータ、携帯機器、メモリデバイス等であってもよい。この装置またはシステムは、例えば、コンピュータプログラムを受信機に転送するためのファイルサーバを備えていてもよい。
【０３３０】
いくつかの実施の形態において、プログラム可能論理デバイス（例えばフィールドプログラマブルゲートアレイ）を用いて、本明細書に記載される方法の機能のいくつかまたはすべてを実行してもよい。いくつかの実施の形態では、フィールドプログラマブルゲートアレイは、本明細書に記載される方法のうちの１つを実行するために、マイクロプロセッサと協働してもよい。通常、上記方法は、好ましくは、いかなるハードウェア装置によっても実行される。
【０３３１】
上述の実施の形態は、本発明の原理を説明するためものにすぎず、本明細書に記載される構成および詳細事項の修正および変更は、他の当業者にとって明らかであるものと理解される。したがって、本発明は、添付の特許クレームの範囲のみによって限定されるものであって、本明細書に記載の実施の形態の記載および説明によって示される具体的な詳細事項によって限定されるものではない。
１６.  結論
結論として、本発明による実施の形態は、以下に示す態様のうちの１つ以上を含み、当該態様は個別に使用されても、組み合わせて使用されてもよい。
ａ）コンテキスト状態ハッシュ機構
本発明の一態様によると、ハッシュテーブルにおける状態は、上位状態およびグループ境界として考慮される。これにより、必要とされるテーブルのサイズが大幅に縮小される。
ｂ）．増加的なコンテキスト更新
一態様によると、本発明によるいくつかの実施の形態は、コンテキストを更新するための計算効率の高い方法を含む。いくつかの実施の形態では、現在の数値コンテキスト値が以前の数値コンテキスト値から導出される、増加的なコンテキスト更新が用いられる。
ｃ）．コンテキスト導出
本発明の一態様によると、２つのスペクトル絶対値の和の使用は、切り捨ての結合である。これは、スペクトル係数の利得ベクトル量子化の一種である（従来の形状−利得ベクトル量子化ではなく）。最も有意な情報を近傍から運びながら、コンテキスト順序を限定することを目的とするものである。
【０３３２】
本発明による実施の形態において適用されるいくつかの他の技術が、未公開特許出願ＰＣＴ  ＥＰ２１０１／０６５７２５、ＰＣＴ  ＥＰ２０１０／０６５７２６およびＰＣＴ  ＥＰ  ２０１０／０６５７２７に記載されている。さらに、本発明によるいくつかの実施の形態において、ストップ記号が使用される。さらに、いくつかの実施の形態において、符号無しの値のみがコンテキストのために考慮される。
【０３３３】
ただし、上記未公開国際特許出願は、本発明によるいくつかの実施の形態においてもなお使用されている態様を開示している。
【０３３４】
例えば、ゼロ領域の特定が本発明のいくつかの実施の形態で使用されている。したがって、いわゆる「小さい値のフラグ」が設定される（例えば、現在の数値コンテキスト値ｃのビット１６）。
【０３３５】
いくつかの実施の形態において、領域依存型コンテキスト計算が使用され得る。しかし、他の実施の形態において、複雑性およびテーブルのサイズを適度に小さくしておくために、領域依存型コンテキスト計算は省略され得る。
【０３３６】
さらに、ハッシュ関数を用いたコンテキストハッシングは、本発明の１つの重要な態様である。コンテキストハッシングは、上記の未公開国際特許出願に記載される２テーブル概念に基づくものであり得る。ただし、いくつかの実施の形態においては、計算効率を高めるために、コンテキストハッシングの特定の適合が使用され得る。しかしながら、本発明によるいくつかの他の実施の形態において、上記の未公開国際特許出願に記載されるコンテキストハッシングが使用され得る。
【０３３７】
さらに、増加的コンテキストハッシングは、むしろ、簡素かつ計算効率が高い点に留意されたい。また、本発明のいくつかの実施の形態において使用される値の符号からのコンテキストの独立性は、コンテキストの簡素化を助け、これにより、メモリ要件が適度に低く抑えられる。
【０３３８】
本発明のいくつかの実施の形態において、２つのスペクトル値の和を用いたコンテキスト導出とコンテキスト限定とが用いられる。これら２つの態様は組み合わせることができる。いずれも、最も有意な情報を近傍から運ぶことによってコンテキスト順序を限定することを目的としている。
【０３３９】
いくつかの実施の形態において、複数のゼロ値のグループの特定と同様であり得る小さい値のフラグが使用される。
【０３４０】
本発明によるいくつかの実施の形態において、演算ストップ機構が使用される。この概念は、同等の機能を有するＪＰＥＧにおける記号「ｅｎｄ−ｏｆ−ｂｌｏｃｋ」の使用に類似している。しかし、本発明のいくつかの実施の形態において、記号（「ＡＲＩＴＨ＿ＳＴＯＰ」）は、エントロピーコーダに明示的には含まれていない。代わりに、以前に出現し得なかった既存の記号の組み合わせ、すなわち、「ＥＳＣ＋０」が使用される。換言すれば、オーディオ復号器は、数値を表現するために通常は使用されない既存の記号の組み合わせを検出し、既存の記号のそのような組み合わせの出現を演算ストップ記号条件として解釈するように構成されている。
【０３４１】
本発明による実施の形態は、２テーブルコンテキストハッシング機構を用いる。
【０３４２】
さらに要約すると、本発明によるいくつかの実施の形態は、以下の４つの主要な態様のうちの１つ以上を含み得る。
・ゼロ領域または小振幅領域のいずれかを近傍において検出するための拡張されたコンテキスト；
・コンテキストハッシング；
・コンテキスト状態の生成：コンテキスト状態の増加的な更新；および
・コンテキストの導出：振幅の合計および限定を含むコンテキスト値の特定の量子化。
【０３４３】
さらに結論すると、本発明による実施の形態の一態様は、増加的なコンテキスト更新にある。本発明による実施の形態は、コンテキストの更新のための効率的な概念を含み、これにより、ワーキングドラフトの（例えば、ワーキングドラフト５の）大量の計算が回避される。むしろ、いくつかの実施の形態においては、簡素なシフト演算および論理演算が使用される。簡素なコンテキスト更新により、コンテキストの計算が大幅に促進される。
【０３４４】
いくつかの実施の形態において、コンテキストは、値（例えば、復号されたスペクトル値）の符号から独立している。値の符号からのコンテキストのこの独立性により、コンテキスト変数の複雑性が低減される。この概念は、コンテキストにおける符号の無視は、コーディング効率の重大な劣化をもたらさないという知見に基づいている。
【０３４５】
本発明の一態様によると、コンテキストは、２つのスペクトル値の和を用いて導出される。したがって、コンテキストの格納のためのメモリ要件が大幅に低減される。したがって、２つのスペクトル値の和を表すコンテキスト値を使用することは、場合によっては利点であると考えられ得る。
【０３４６】
また、コンテキストの限定は、場合によっては著しい改良をもたらす。２つのスペクトル値の和を用いたコンテキストの導出に加えて、いくつかの実施の形態において、コンテキスト配列「ｑ」のエントリが最大値「０ｘＦ」に限定され、これによって、メモリ要件が限定される。コンテキスト配列「ｑ」の値のこのような限定により、いくつかの利点がもたらされる。
【０３４７】
いくつかの実施の形態において、いわゆる「小さい値のフラグ」が使用される。コンテキスト変数ｃ（現在の数値コンテキスト値としても示される）を取得するために、いくつかのエントリ「ｑ［１］［ｉ−３］」〜「ｑ［１］［ｉ−１］」の値が非常に小さい場合、フラグが設定される。したがって、コンテキストの計算を高い効率で行うことができる。特に有意なコンテキスト値（例えば、現在の数値コンテキスト値）を取得することができる。
【０３４８】
いくつかの実施の形態において、演算ストップ機構が使用される。「ＡＲＩＴＨ＿ＳＴＯＰ」機構により、ゼロ値だけが残されている場合に、算術符号化または復号を効率的に停止することができる。したがって、複雑性に関する犠牲を適度なものとしながらコーディング効率を改良することができる。
【０３４９】
本発明の一態様によると、２テーブルコンテキストハッシング機構が使用される。コンテキストのマッピングは、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」を評価する間隔−分割アルゴリズムをそれに続くテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のルックアップテーブルの評価と組み合わせて用いて行われる。このアルゴリズムは、ＷＤ３のアルゴリズムよりも効率的である。
【０３５０】
以下に、いくつかのさらなる詳細について述べる。
【０３５１】
ここで、テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［６００］」および「ａｒｉｔｈ＿ｌｏｏｋｕｐ＿ｍ［６００］」は２つの別個のテーブルである点に留意されたい。第１のテーブルは、単一のコンテキストインデックス（例えば、数値コンテキスト値）を確率モデルインデックス（例えば、マッピング規則インデックス値）にマッピングするために用いられ、第２のテーブルは、「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［］」においてコンテキストインデックスによって区切られた連続するコンテキストのグループを単一の確率モデルにマッピングするために用いられる。
【０３５２】
テーブル「ａｒｉｔｈ＿ｃｆ＿ｍｓｂ［９６］［１６］」は、次元は若干異なるものの、テーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」の代わりに使用され得る点にさらに留意されたい。確率モデルの１７番目のは常にゼロであるため、「ａｒｉ＿ｃｆ＿ｍ［］［］」および「ａｒｉ＿ｃｆ＿ｍｓｂ［］［］」は、同じテーブルを参照し得る。これは、テーブルを格納するために必要とされるスペースを計算する際に考慮されない場合がある。
【０３５３】
上記を要約すると、本発明によるいくつかの実施の形態は、ＭＰＥＧのＵＳＡＣワーキングドラフトにおいて（例えば、ＭＰＥＧのＵＳＡＣワーキングドラフト５において）修正をもたらす、提案された新規なノイズレスコーディング（符号化または復号）を提供する。当該修正は、添付の図面およびさらに関連する説明において見られる。
【０３５４】
終わりに、変数、配列、関数などの名称における接頭語「ａｒｉ」および接頭語「ａｒｉｔｈ」は、同義で用いられている点に留意されたい。
【図１Ａ】
0005624159.tif 000002
【図１Ｂ】
0005624159.tif 000003
【図２Ａ】
0005624159.tif 000004
【図２Ｂ】
0005624159.tif 000005
【図３】
0005624159.tif 000006
【図４】
0005624159.tif 000007
【図５ａ】
0005624159.tif 000008
【図５ｂ】
0005624159.tif 000009
【図５ｃ】
0005624159.tif 000010
【図５ｄ】
0005624159.tif 000011
【図５ｅ】
0005624159.tif 000012
【図５ｆ】
0005624159.tif 000013
【図５ｇ（１）】
0005624159.tif 000014
【図５ｇ（２）】
0005624159.tif 000015
【図５ｈ】
0005624159.tif 000016
【図５ｉ】
0005624159.tif 000017
【図５ｊ】
0005624159.tif 000018
【図５ｋ】
0005624159.tif 000019
【図５ｌ】
0005624159.tif 000020
【図５ｍ】
0005624159.tif 000021
【図５ｎ】
0005624159.tif 000022
【図５ｏ】
0005624159.tif 000023
【図５ｐ】
0005624159.tif 000024
【図５ｑ】
0005624159.tif 000025
【図５ｒ】
0005624159.tif 000026
【図６ａ】
0005624159.tif 000027
【図６ｂ】
0005624159.tif 000028
【図６ｃ】
0005624159.tif 000029
【図６ｄ】
0005624159.tif 000030
【図６ｅ】
0005624159.tif 000031
【図６ｆ】
0005624159.tif 000032
【図６ｇ】
0005624159.tif 000033
【図６ｈ】
0005624159.tif 000034
【図６ｉ】
0005624159.tif 000035
【図６ｊ】
0005624159.tif 000036
【図７】
0005624159.tif 000037
【図８】
0005624159.tif 000038
【図９】
0005624159.tif 000039
【図１０】
0005624159.tif 000040
【図１１】
0005624159.tif 000041
【図１２】
0005624159.tif 000042
【図１３】
0005624159.tif 000043
【図１４ａ】
0005624159.tif 000044
【図１４ｂ】
0005624159.tif 000045
【図１５ａ】
0005624159.tif 000046
【図１５ｂ】
0005624159.tif 000047
【図１６ａ】
0005624159.tif 000048
【図１６ｂ】
0005624159.tif 000049
【図１７】
0005624159.tif 000050
【図１８】
0005624159.tif 000051
【図１９】
0005624159.tif 000052
【図２０】
0005624159.tif 000053
【図２１（１）】
0005624159.tif 000054
【図２１（２）】
0005624159.tif 000055
【図２２（１）】
0005624159.tif 000056
【図２２（２）】
0005624159.tif 000057
【図２２（３）】
0005624159.tif 000058
【図２２（４）】
0005624159.tif 000059
【図２３（１）】
0005624159.tif 000060
【図２３（２）】
0005624159.tif 000061
【図２３（３）】
0005624159.tif 000062
【図２３（４）】
0005624159.tif 000063
【図２３（５）】
0005624159.tif 000064
【図２３（６）】
0005624159.tif 000065
【図２３（７）】
0005624159.tif 000066
【図２３（８）】
0005624159.tif 000067
【図２４】
0005624159.tif 000068