(57)【特許請求の範囲】
【請求項１】
符号化されたオーディオ情報（２１０；８１０）に基づいて復号化されたオーディオ情報（２１２；８１２）を提供するためのオーディオデコーダ（２００；８００）であって、前記オーディオデコーダは、
前記符号化されたオーディオ情報２１０；８１０）を含むスペクトル値の算術的に符号化された表現（２２２；８２１）に基づいて複数の復号化されたスペクトル値（２３２；８２２）を提供するための算術デコーダ（２３０；８２０）、および
前記復号化されたオーディオ情報（２１２；８１２）を得るために、前記復号化されたスペクトル値（２３２；８２２）を用いて時間領域オーディオ表現（２６２；８１２）を提供するための周波数領域−時間領域コンバータ（２６０；８３０）を含み、
前記算術デコーダ（２３０；８２０）は、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて、復号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すシンボルコード（ｓｙｍｂｏｌ）上への、符号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すスペクトル値の前記算術的に符号化された表現のコード値（ｖａｌｕｅ）のマッピングを表すマッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するように構成され、
前記算術デコーダ（２３０；８２０）は、複数の前に復号化されたスペクトル値に基づいて前記数値的な現在のコンテクスト値（ｃ）を決定するように構成され、
前記算術デコーダは、前記マッピングルールを選択するために、エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）を評価するように構成され、
前記算術デコーダは、値ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８がｃに等しいまたはそれよりも大きいハッシュテーブルインデックス値ｉを見いだすために前記ハッシュテーブルを評価するように構成され、その一方で、前記見いだされたハッシュテーブルインデックス値ｉが０よりも大きい場合、前記値ａｒｉ＿ｈａｓｈ＿ｍ［ｉ−１］＞＞８はｃよりも小さく、
前記算術デコーダは、ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８がｃに等しいときにａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＆０ｘＦＦに等しいまたはそうでないときにａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ］に等しい確率モデルインデックス（ｐｋｉ）によって決定される前記マッピングルールを選択するように構成され、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義され、さらに
前記マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍは、図２１に示されるように定義され、
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連し、さらに
ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］は、ハッシュテーブルインデックス値ｉを有する前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍのエントリを指定する、オーディオデコーダ。
【請求項２】
前記算術デコーダは、アルゴリズム
ｉ＝ｉ＿ｍｉｎ；
ｗｈｉｌｅ（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）＞１）
｛
ｉ＝ｉ＿ｍｉｎ＋（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）／２）；
ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］；
ｉｆ（ｃ＜（ｊ＞＞８））
ｉ＿ｍａｘ＝ｉ；
ｅｌｓｅ  ｉｆ（ｃ＞（ｊ＞＞８））
ｉ＿ｍｉｎ＝ｉ；
ｅｌｓｅ
ｒｅｔｕｒｎ（ｊ＆０ｘＦＦ）；
｝
ｒｅｔｕｒｎ  ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］；
を用いて前記ハッシュテーブルを評価するように構成され、
ｃは、前記数値的な現在のコンテクスト値またはそのスケールされたバージョンを表す変数を指定し、
ｉは、現在のハッシュテーブルインデックス値を表す変数であり、
ｉ＿ｍｉｎは、前記ハッシュテーブルの最初のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数であり、
条件「ｃ＜（ｊ＞＞８）」は、前記変数ｃによって表される状態値が前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも小さいことを定義し、
「ｊ＆０ｘＦＦ」は、前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表されるマッピングルールインデックス値を表し、
ｉ＿ｍａｘは、前記ハッシュテーブルの最後のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数であり、
条件「ｃ＞（ｊ＞＞８）」は、前記変数ｃによって表される状態値が前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも大きいことを定義し、
ｊは、変数であり、
リターン値は、確率モデルのインデックスｐｋｉを指定し、さらにマッピングルールインデックス値であり、
ａｒｉ＿ｈａｓｈ＿ｍは、前記ハッシュテーブルを指定し、
ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］は、ハッシュテーブルインデックス値ｉを有する前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍのエントリを指定し、
ａｒｉ＿ｌｏｏｋｕｐ＿ｍは、マッピングテーブルを指定し、さらに
ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］は、マッピングテーブルインデックス値ｉ＿ｍａｘを有する前記マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍのエントリを指定する、請求項１に記載のオーディオデコーダ。
【請求項３】
前記算術デコーダは、前記マッピングルールインデックス値ｐｋｉに基づいてシンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記マッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するように構成される、請求項１または請求項２に記載のオーディオデコーダ（２００；８００）。
【請求項４】
前記算術デコーダは、シンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記マッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するためにテーブルインデックス値として前記マッピングルールインデックス値を用いるように構成される、請求項３に記載のオーディオデコーダ（２００；８００）。
【請求項５】
前記算術デコーダは、前記選択されたマッピングルールとして図２３（１）、図２３（２）、図２３（３）に示されるような前記テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］のサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）のうちの１つを選択するように構成される、請求項１ないし請求項４のうちの１つに記載のオーディオデコーダ（２００；８００）。
【請求項６】
前記算術デコーダは、アルゴリズム
ｃ＝ｃ＞＞４；
ｉｆ（ｉ＜Ｎ／４−１）
ｃ＝ｃ＋（ｑ［０］［ｉ＋１］＜＜１２）；
ｃ＝（ｃ＆０ｘＦＦＦ０）；
ｉｆ（ｉ＞０）
ｃ＝ｃ＋（ｑ［１］［ｉ−１］）；
ｉｆ（ｉ＞３）｛
ｉｆ（（ｑ［１］［ｉ−３］＋ｑ［１］［ｉ−２］＋ｑ［１］［ｉ−１］）＜５）
ｒｅｔｕｒｎ（ｃ＋０ｘ１００００）；
｝
ｒｅｔｕｒｎ（ｃ）；
を用いて数値的な前のコンテクスト値に基づいて前記数値的な現在のコンテクスト値を得るように構成され、
前記アルゴリズムは、スペクトル値のベクトルにおいて復号化するために、入力値として、前記数値的な前のコンテクスト値を表す値または変数ｃおよびスペクトル値の２タプルのインデックスを表す値または変数ｉを受信し、
値または変数Ｎは、前記周波数領域−時間領域コンバータの再構成ウィンドウのウィンドウの長さを表し、さらに
前記アルゴリズムは、出力値として、前記数値的な現在のコンテクスト値を表す更新された値または変数ｃを提供し、
演算「ｃ＞＞４」は、前記値または変数ｃの４ビットだけ右へのシフトを表し、
ｑ［０］［ｉ＋１］は、前のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも１だけ大きいより大きい周波数インデックスｉ＋１を関連付けるコンテクストサブ区域値を指定し、さらに
ｑ［１］［ｉ−１］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも１だけ小さいより小さい周波数インデックスｉ−１を関連付けるコンテクストサブ区域値を指定し、
ｑ［１］［ｉ−２］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも２だけ小さいより小さい周波数インデックスｉ−２を関連付けるコンテクストサブ区域値を指定し、
ｑ［１］［ｉ−３］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも３だけ小さいより小さい周波数インデックスｉ−３を関連付けるコンテクストサブ区域値を指定する、請求項１ないし請求項５のうちの１つに記載のオーディオデコーダ。
【請求項７】
前記算術デコーダは、現在復号化される複数のスペクトル値の組合せを用いて、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の前記２タプルの前記現在の周波数インデックスを関連付けるコンテクストサブ区域値ｑ［１］［ｉ］を更新するように構成される、請求項６に記載のオーディオデコーダ。
【請求項８】
前記算術デコーダは、アルゴリズム
｛
ｑ［１］［ｉ］＝ａ＋ｂ＋１；
ｉｆ（ｑ［１］［ｉ］＞０ｘＦ）
ｑ［１］［ｉ］＝０ｘＦ；
｝
を用いて、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの前記周波数インデックスを関連付けるコンテクストサブ区域値ｑ［１］［ｉ］を更新するように構成され、
ａおよびｂは、現在復号化される前記２タプルの復号化され符号なしの量子化されたスペクトル係数であり、さらに
ｉは、現在復号化されるスペクトル値の前記２タプルの前記周波数インデックスである、請求項６または請求項７に記載のオーディオデコーダ。
【請求項９】
前記算術デコーダは、算術復号化アルゴリズム
｛
ｉｆ（ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（））｛
ｖａｌｕｅ＝０；
ｆｏｒ（ｉ＝１；ｉ＜＝１６；ｉ＋＋）｛
ｖａｌｕｅ＝（ｖａｌｕｅ＜＜１）｜ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（）；
｝
ｌｏｗ＝０；
ｈｉｇｈ＝６５５３５；
｝
ｒａｎｇｅ＝ｈｉｇｈ−ｌｏｗ＋１；
ｃｕｍ＝（（（（ｉｎｔ）（ｖａｌｕｅ−ｌｏｗ＋１））＜＜１４）−（（ｉｎｔ）１））／ｒａｎｇｅ；
ｐ＝ｃｕｍ＿ｆｒｅｑ−１；
ｄｏ｛
ｑ＝ｐ＋（ｃｆｌ＞＞１）；
ｉｆ（＊ｑ＞ｃｕｍ）｛ｐ＝ｑ；ｃｆｌ＋＋；｝
ｃｆｌ＞＞＝１；
｝
ｗｈｉｌｅ（ｃｆｌ＞１）；
ｓｙｍｂｏｌ＝ｐ−ｃｕｍ＿ｆｒｅｑ＋１；
ｉｆ（ｓｙｍｂｏｌ）
ｈｉｇｈ＝ｌｏｗ＋（ｒａｎｇｅ＊ｃｕｍ＿ｆｒｅｑ［ｓｙｍｂｏｌ−１］）＞＞１４−１；
ｌｏｗ＋＝（ｒａｎｇｅ＊ｃｕｍ＿ｆｒｅｑ［ｓｙｍｂｏｌ］）＞＞１４；
ｆｏｒ（；；）｛
ｉｆ（ｈｉｇｈ＜３２７６８）｛｝
ｅｌｓｅ  ｉｆ（ｌｏｗ＞＝３２７６８）｛
ｖａｌｕｅ−＝３２７６８；
ｌｏｗ    −＝３２７６８；
ｈｉｇｈ  −＝３２７６８；
｝
ｅｌｓｅ  ｉｆ（ｌｏｗ＞＝１６３８４＆＆ｈｉｇｈ＜４９１５２）｛
ｖａｌｕｅ−＝１６３８４；
ｌｏｗ    −＝１６３８４；
ｈｉｇｈ  −＝１６３８４；
｝
ｅｌｓｅ  ｂｒｅａｋ；
ｌｏｗ＋＝ｌｏｗ；
ｈｉｇｈ＋＝ｈｉｇｈ＋１；
ｖａｌｕｅ＝（ｖａｌｕｅ＜＜１）｜ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（）；
｝
ｒｅｔｕｒｎ  ｓｙｍｂｏｌ；
｝
を用いて、復号化されたスペクトル値の２タプルを表す復号化された値ｍを提供するように構成され、
「ｃｕｍ＿ｆｒｅｑ」は、シンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す選択されたテーブルまたはサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）の開始を表す変数であり、
「ｃｆｌ」は、シンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記選択されたテーブルまたはサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）の長さを表す値または変数であり、
ヘルパー関数ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（）は、復号化されるシンボルが一連のシンボルの最初のシンボルである場合に真をリターンし、さらにそうでない場合に偽をリターンし、
ヘルパー関数ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（）は、ビットストリームの次のビットを提供し、
変数「ｌｏｗ」は、グローバル変数であり、
変数「ｈｉｇｈ」は、グローバル変数であり、
変数「ｖａｌｕｅ」は、グローバル変数であり、
「ｒａｎｇｅ」は、変数であり、
「ｃｕｍ」は、変数であり、
「ｐ」は、シンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記選択されたテーブルまたはサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）のエレメントを指し示す変数であり、
「ｑ」は、シンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記選択されたテーブルまたはサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）のエレメントを指し示す変数であり、
「＊ｑ」は、前記変数ｑが指し示すシンボルコード（ｓｙｍｂｏｌ）上へのコード値（ｖａｌｕｅ）のマッピングを表す前記選択されたテーブルまたはサブテーブル（ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）のテーブルエレメントまたはサブテーブルエレメントであり、
変数「ｓｙｍｂｏｌ」は、前記算術復号化アルゴリズムによってリターンされ、さらに
前記算術デコーダは、前記算術復号化アルゴリズムのリターン値からスペクトル値の現在復号化された２タプルの最上位ビットプレーン値を導き出すように構成される、請求項１ないし請求項８のうちの１つに記載のオーディオデコーダ。
【請求項１０】
符号化されたオーディオ情報（２１０；８１０）に基づいて復号化されたオーディオ情報（２１２；８１２）を提供するためのオーディオデコーダ（２００；８００）であって、前記オーディオデコーダは、
前記符号化されたオーディオ情報（２１０；８１０）を含むスペクトル値の算術的に符号化された表現（２２２；８２１）に基づいて複数の復号化されたスペクトル値（２３２；８２２）を提供するための算術デコーダ（２３０；８２０）、および
前記復号化されたオーディオ情報（２１２；８１２）を得るために、前記復号化されたスペクトル値（２３２；８２２）を用いて時間領域オーディオ表現（２６２；８１２）を提供するための周波数領域−時間領域コンバータ（２６０；８３０）を含み、
前記算術デコーダ（２３２；８２０）は、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて、復号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すシンボルコード（ｓｙｍｂｏｌ）上への、符号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すスペクトル値の前記算術的に符号化された表現のコード値（ｖａｌｕｅ）のマッピングを表すマッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するように構成され、
前記算術デコーダ（２３０；８２０）は、複数の前に復号化されたスペクトル値に基づいて前記数値的な現在のコンテクスト値（ｃ）を決定するように構成され、
前記算術デコーダは、前記マッピングルールを選択するために、エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）を評価するように構成され、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義され、
前記算術デコーダは、前記数値的な現在のコンテクスト値が前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは前記数値的な現在のコンテクスト値が位置する前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表される間隔を決定するために前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）を評価するように、さらに、前記評価の結果に基づいて選択されたマッピングルールを表すマッピングルールインデックス値（ｐｋｉ）を導き出すように構成され、
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連する、オーディオデコーダ。
【請求項１１】
前記算術デコーダは、前記数値的な現在のコンテクスト値（ｃ）が得られたハッシュテーブルインデックス値（ｉ＿ｍａｘ）によって指定される得られたハッシュテーブルエントリ（ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍａｘ］）および隣接するハッシュテーブルエントリ（ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍａｘ−１］）によって定義される間隔内に位置するように、テーブルエントリ（ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］）のハッシュテーブルインデックス値（ｉ＿ｍａｘ）を反復的に得るために、
前記数値的な現在のコンテクスト値（ｃ）または前記数値的な現在のコンテクスト値のスケールされたバージョン（ｓ）と前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）の一連の数値的に順序付けられたエントリ（ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］）またはサブエントリとを比較するように構成され、さらに
前記算術デコーダは、前記数値的な現在のコンテクスト値（ｃ）または前記数値的な現在のコンテクスト値のスケールされたバージョン（ｓ）と前記ハッシュテーブルの現在のエントリまたはサブエントリ（ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］）との間の比較の結果に基づいて、前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）の前記一連のエントリの次のエントリを決定するように構成される、請求項１０に記載のオーディオデコーダ。
【請求項１２】
前記算術デコーダは、前記数値的な現在のコンテクスト値（ｃ）またはそのスケールされたバージョン（ｓ）が前記現在のハッシュテーブルインデックス値（ｉ）によって指定される前記ハッシュテーブル（ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］）の第１のサブエントリ（ｊ＞＞８）に等しいことが見いだされている場合、前記現在のハッシュテーブルインデックス値（ｉ）によって指定される前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）の第２のサブエントリ（ｊ＆０ｘＦＦ）によって定義されるマッピングルールを選択するように構成される、請求項１１に記載のオーディオデコーダ。
【請求項１３】
前記算術デコーダは、前記数値的な現在のコンテクスト値が前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のサブエントリに等しいことが見いだされていない場合、マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍのエントリまたはサブエントリ（ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］）によって定義されるマッピングルールを選択するように構成され、前記算術デコーダは、前記反復的に得られたハッシュテーブルインデックス値（ｉ＿ｍａｘ）に基づいて前記マッピングテーブルの前記エントリまたはサブエントリを選択するように構成される、請求項１１または請求項１２に記載のオーディオデコーダ。
【請求項１４】
前記算術デコーダは、前記数値的な現在のコンテクスト値（ｃ）が前記現在のハッシュテーブルインデックス値（ｉ）によって指定される前記ハッシュテーブルの前記エントリ（ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］）によって定義される値（ｊ＞＞８）に等しいことが見いだされている場合、前記現在のハッシュテーブルインデックス値によって指定される前記ハッシュテーブルの前記エントリによって定義されるマッピングルールインデックス値を選択的に提供するように構成される、請求項１０ないし請求項１３のうちの１つに記載のオーディオデコーダ。
【請求項１５】
符号化されたオーディオ情報（２１０；８１０）に基づいて復号化されたオーディオ情報（２１２；８１２）を提供するための方法であって、前記方法は、
前記符号化されたオーディオ情報２１０；８１０）を含むスペクトル値の算術的に符号化された表現（２２２；８２１）に基づいて複数の復号化されたスペクトル値（２３２；８２２）を提供するステップ、および
前記復号化されたオーディオ情報（２１２；８１２）を得るために、前記復号化されたスペクトル値（２３２；８２２）を用いて時間領域オーディオ表現（２６２；８１２）を提供するステップを含み、
前記複数の復号化されたスペクトル値を提供するステップは、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて、復号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すシンボルコード（ｓｙｍｂｏｌ）上への、符号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すスペクトル値の前記算術的に符号化された表現のコード値（ｖａｌｕｅ）のマッピングを表すマッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するステップを含み、
前記数値的な現在のコンテクスト値（ｃ）は、複数の前に復号化されたスペクトル値に基づいて決定され、
エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）は、前記マッピングルールを選択するために評価され、
前記ハッシュテーブルは、アルゴリズム
ｉ＝ｉ＿ｍｉｎ；
ｗｈｉｌｅ（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）＞１）
｛
ｉ＝ｉ＿ｍｉｎ＋（（ｉ＿ｍａｘ−ｉ＿ｍｉｎ）／２）；
ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］；
ｉｆ（ｃ＜（ｊ＞＞８））
ｉ＿ｍａｘ＝ｉ；
ｅｌｓｅ  ｉｆ（ｃ＞（ｊ＞＞８））
ｉ＿ｍｉｎ＝ｉ；
ｅｌｓｅ
ｒｅｔｕｒｎ（ｊ＆０ｘＦＦ）；
｝
ｒｅｔｕｒｎ  ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］；
を用いて評価され、
ｃは、前記数値的な現在のコンテクスト値またはそのスケールされたバージョンを表す変数を指定し、
ｉは、現在のハッシュテーブルインデックス値を表す変数であり、
ｉ＿ｍｉｎは、前記ハッシュテーブルの最初のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数であり、
条件「ｃ＜（ｊ＞＞８）」は、前記変数ｃによって表される状態値が前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも小さいことを定義し、
「ｊ＆０ｘＦＦ」は、前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表されるマッピングルールインデックス値を表し、
ｉ＿ｍａｘは、前記ハッシュテーブルの最後のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数であり、
条件「ｃ＞（ｊ＞＞８）」は、前記変数ｃによって表される状態値が前記テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも大きいことを定義し、
ｊは、変数であり、
リータン値は、確率モデルのインデックスｐｋｉを指定し、さらにマッピングルールインデックス値であり、
ａｒｉ＿ｈａｓｈ＿ｍは、前記ハッシュテーブルを指定し、
ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］は、ハッシュテーブルインデックス値ｉを有する前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍのエントリを指定し、
ａｒｉ＿ｌｏｏｋｕｐ＿ｍは、マッピングテーブルを指定し、
ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］は、マッピングテーブルインデックス値ｉ＿ｍａｘを有する前記マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍのエントリを指定し、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）、図２２（４）に示されるように定義され、さらに
前記マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍは、図２１に示されるように定義され、さらに
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連する、方法。
【請求項１６】
符号化されたオーディオ情報（２１０；８１０）に基づいて復号化されたオーディオ情報（２１２；８１２）を提供するための方法であって、前記方法は、
前記符号化されたオーディオ情報２１０；８１０）を含むスペクトル値の算術的に符号化された表現（２２２；８２１）に基づいて複数の復号化されたスペクトル値（２３２；８２２）を提供するステップ、および
前記復号化されたオーディオ情報（２１２；８１２）を得るために、前記復号化されたスペクトル値（２３２；８２２）を用いて時間領域オーディオ表現（２６２；８１２）を提供するステップを含み、
複数の復号化されたスペクトル値を提供するステップは、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて、復号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すシンボルコード（ｓｙｍｂｏｌ）上への、符号化された形式で１つ以上の前記スペクトル値または１つ以上の前記スペクトル値の最上位ビットプレーンを表すスペクトル値の前記算術的に符号化された表現のコード値（ｖａｌｕｅ）のマッピングを表すマッピングルール（２９７；ｃｕｍ＿ｆｒｅｑ［］）を選択するステップを含み、
前記数値的な現在のコンテクスト値（ｃ）は、複数の前に復号化されたスペクトル値に基づいて決定され、
エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ［］）は、前記マッピングルールを選択するために評価され、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義され、
前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）は、前記数値的な現在のコンテクスト値が前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは前記数値的な現在のコンテクスト値が位置する前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表される間隔を決定するために評価され、さらに
選択されたマッピングルールを表すマッピングルールインデックス値（ｐｋｉ）は、前記評価の結果に基づいて導き出され、
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連する、方法。
【請求項１７】
入力されたオーディオ情報（１１０；７１０）に基づいて符号化されたオーディオ情報（１１２；７１２）を提供するためのオーディオエンコーダ（１００；７００）であって、前記オーディオエンコーダは、
周波数領域オーディオ表現（１３２；７２２）がスペクトル値のセットを含むように、前記入力されたオーディオ情報の時間領域表現（１１０；７１０）に基づいて周波数領域オーディオ表現（１３２；７２２）を提供するためのエネルギー圧縮の時間領域−周波数領域コンバータ（１３０；７２０）、および
可変長コードワード（ａｃｏｄ＿ｍ、ａｃｏｄ＿ｒ）を用いて１つ以上の前記スペクトル値（ａ）またはその前処理されたバージョンを符号化するように構成される算術エンコーダ（１７０；７３０）であって、前記算術エンコーダ（１７０）は、コード値（ａｃｏｄ＿ｍ）上に、１つ以上の前記スペクトル値（ａ）または１つ以上の前記スペクトル値（ａ）の最上位ビットプレーンの値（ｍ）をマップするように構成される、算術エンコーダを含み、
前記算術エンコーダは、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて、前記コード値上への、前記１つ以上のスペクトル値のまたは前記１つ以上のスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールを選択するように構成され、さらに
前記算術エンコーダは、複数の前に符号化されたスペクトル値に基づいて前記数値的な現在のコンテクスト値（ｃ）を決定するように構成され、さらに
前記算術エンコーダは、前記マッピングルールを選択するために、エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブルを評価するように構成され、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義され、
前記算術エンコーダは、前記数値的な現在のコンテクスト値が前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは前記数値的な現在のコンテクスト値が位置する前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表される間隔を決定するために前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）を評価するように、さらに、前記評価の結果に基づいて選択されたマッピングルールを表すマッピングルールインデックス値（ｐｋｉ）を導き出すように構成され、
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連する、オーディオエンコーダ。
【請求項１８】
入力されたオーディオ情報（１１０；７１０）に基づいて符号化されたオーディオ情報（１１２；７１２）を提供するための方法であって、前記方法は、
周波数領域オーディオ表現（１３２；７２２）がスペクトル値のセットを含むように、エネルギー圧縮の時間領域−周波数領域コンバータ用いて前記入力されたオーディオ情報の時間領域表現（１１０；７１０）に基づいて周波数領域オーディオ表現（１３２；７２２）を提供するステップ、および
可変長コードワード（ａｃｏｄ＿ｍ、ａｃｏｄ＿ｒ）を用いて１つ以上の前記スペクトル値（ａ）またはその前処理されたバージョンを算術的に符号化するステップであって、１つ以上の前記スペクトル値（ａ）または１つ以上の前記スペクトル値（ａ）の最上位ビットプレーンの値（ｍ）がコード値（ａｃｏｄ＿ｍ）上にマップされる、ステップを含み、
コード値上への、１つ以上の前記スペクトル値のまたは１つ以上の前記スペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールは、数値的な現在のコンテクスト値（ｃ）によって表されるコンテクスト状態（ｓ）に基づいて選択され、さらに
前記数値的な現在のコンテクスト値（ｃ）は、複数の前に符号化されたスペクトル値に基づいて決定され、さらに
エントリが前記数値的なコンテクスト値中の重要な状態値および前記数値的なコンテクスト値中の重要でない状態値の間隔の境界の両方を定義するハッシュテーブルは、前記マッピングルールを選択するために評価され、
前記ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義され、さらに
前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）は、前記数値的な現在のコンテクスト値が前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは前記数値的な現在のコンテクスト値が位置する前記ハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表される間隔を決定するために評価され、さらに、選択されたマッピングルールを表すマッピングルールインデックス値（ｐｋｉ）は、前記評価の結果に基づいて導き出され、
マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連する、方法。
【請求項１９】
コンピュータプログラムがコンピュータで実行されるときに、請求項１６に記載の方法を実行するためのコンピュータプログラム。
【請求項２０】
コンピュータプログラムがコンピュータで実行されるときに、請求項１８に記載の方法を実行するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、符号化されたオーディオ情報に基づいて復号化されたオーディオ情報を提供するためのオーディオデコーダ、入力されたオーディオ情報に基づいて符号化されたオーディオ情報を提供するためのオーディオエンコーダ、符号化されたオーディオ情報に基づいて復号化されたオーディオ情報を提供するための方法、入力されたオーディオ情報に基づいて符号化されたオーディオ情報を提供するための方法およびコンピュータプログラムに関連する。
【０００２】
本発明による実施形態は、例えば、いわゆる統合スピーチオーディオコーダ（ＵＳＡＣ）のように、オーディオエンコーダまたはデコーダにおいて用いることができる改良されたスペクトルノイズレス符号化に関連する。
【０００３】
本発明による実施形態は、現在のＵＳＡＣ仕様においてアプリケーションのためのスペクトル符号化テーブルの更新に関連する。
【背景技術】
【０００４】
以下において、本発明の背景が、本発明の理解およびその効果を容易にするために簡単に説明される。この１０年間、大きな努力が、良好なビットレート効率でオーディオコンテンツをデジタル的に格納しさらに配布する可能性を作り出すことに関してされている。この方法に関する１つの重要な業績は、国際規格ＩＳＯ／ＩＥＣ１４４９６−３の定義である。この規格のパート３は、オーディオコンテンツの符号化および復号化に関連し、さらに、パート３のサブパート４は、一般のオーディオ符号化に関連する。ＩＳＯ／ＩＥＣ１４４９６のパート３のサブパート４は、一般のオーディオコンテンツの符号化および復号化のための概念を定義する。加えて、さらなる改良が、品質を改良しおよび／または必要なビットレートを低減するために提案されている。
【０００５】
前記規格に記載されている概念によれば、時間領域オーディオ信号が、時間周波数表現に変換される。時間領域から時間周波数領域への変換は、時間領域サンプルの「ｆｒａｍｅｓ（フレーム）」にも指定される変換ブロックを用いて典型的に実行される。例えば半分のフレームだけシフトされるオーバーラップフレームを用いることが有利であることが見いだされているが、その理由は、オーバーラップがアーティファクトを効率的に回避する（または少なくとも低減する）ことを可能するからである。加えて、ウィンドウ化は、時間的に制限されたフレームのこの処理から生じるアーティファクトを回避するために実行されるべきであることが見いだされている。
【０００６】
入力されたオーディオ信号のウィンドウ化された部分を時間領域から時間周波数領域に変換することによって、スペクトル値のいくつかが複数の他のスペクトル値よりも著しく大きい大きさを含むような多くの場合にエネルギー圧縮が得られる。したがって、多くの場合、スペクトル値の平均大きさを著しく超える大きさを有する比較的少数のスペクトル値がある。エネルギー圧縮をもたらす時間領域−時間周波数領域変換の典型的な例は、いわゆる修正離散コサイン変換（ＭＤＣＴ）である。
【０００７】
スペクトル値は、量子化エラーが心理音響的により重要なスペクトル値のために比較的より小さくさらに心理音響的にそれほど重要でないスペクトル値のために比較的より大きいように、心理音響モデルに従ってしばしばスケールされさらに量子化される。スケールされ量子化されたスペクトル値は、そのビットレート効率表現を提供するために符号化される。
【０００８】
例えば、量子化されたスペクトル係数のいわゆるハフマン符号化の使用が、国際規格ＩＳＯ／ＩＥＣ１４４９６−３：２００５（Ｅ）のパート３のサブパート４に記載されている。
【０００９】
しかしながら、スペクトル値の符号化の品質は、必要なビットレートに与える大きな影響を有することが見いだされている。また、携帯需要者デバイスにおいてしばしば実施されそのため安価かつ低い電力消費であるべきオーディオデコーダの複雑度は、スペクトル値を符号化するために用いられる符号化に依存することが見いだされている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】国際規格ＩＳＯ／ＩＥＣ１４４９６−３：２００５（Ｅ）のパート３のサブパート４
【発明の概要】
【発明が解決しようとする課題】
【００１１】
この状況を考慮して、ビットレート効率およびリソ−ス効率間の改良されたトレードオフを提供する、オーディオコンテンツの符号化および復号化のための概念が必要である。
【課題を解決するための手段】
【００１２】
本発明による実施形態は、スペクトル値の算術的に符号化された表現に基づいて複数の復号化されたスペクトル値を提供するためのオーディオデコーダを作り出す。オーディオデコーダは、復号化されたオーディオ情報を得るために、復号化されたスペクトル値を用いて時間領域オーディオ表現を提供するための周波数領域−時間領域コンバータを含む。算術デコーダは、数値的な現在のコンテクスト値によって表されるコンテクスト状態に基づいて、復号化された形式でスペクトル値またはスペクトル値の最上位ビットプレーンを表すシンボルコード上への、符号化された形式でスペクトル値またはスペクトル値の最上位ビットプレーンを表すコード値のマッピングを表すマッピングルールを選択するように構成される。算術デコーダは、複数の前に復号化されたスペクトル値に基づいて数値的な現在のコンテクスト値を決定するように構成される。算術デコーダは、マッピングルールを選択するために、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブルを評価するように構成される。算術デコーダは、値ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８がｃに等しいまたはそれよりも大きいハッシュテーブルインデックス値ｉを見いだすためにハッシュテーブルを評価するように構成され、その一方で、見いだされたハッシュテーブルインデックス値ｉが０よりも大きい場合、値ａｒｉ＿ｈａｓｈ＿ｍ［ｉ−１］＞＞８はｃよりも小さい。さらに、算術デコーダは、ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８がｃに等しいときにａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＆＆０ｘＦＦに等しいまたはそうでないときにａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ］に等しい確率モデルインデックス（ｐｋｉ）によって決定されるマッピングルールを選択するように構成される。本実施形態において、ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義される。さらに、マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍは、図２１に示されるように定義される。
【００１３】
図２２（１）から図２２（４）のハッシュテーブルを有する上述のアルゴリズムの組合せは、図２２（１）から図２２（４）に従うハッシュテーブルが特に適切な方法で数値的なコンテクスト値の重要な値および状態間隔の両方を定義するように、マッピングルールの特に効率的な選択を可能にすることが見いだされている。さらに、前記アルゴリズムおよび図２２（１）から図２２（４）に従うハッシュテーブル間の相互作用は、計算の複雑度を相当少なく保つとともに、特に良好な結果をもたらすことを示している。さらに、図２１に定義されるマッピングテーブルは、上述のハッシュテーブルと併用するときに、前記アルゴリズムにも特によく適している。要約すると、上述のようなアルゴリズムに関連して図２２（１）から図２２（４）に示されるようなハッシュテーブルおよび図２１に定義されるようなマッピングテーブルの使用は、良好な符号化／復号化効率および低い計算の複雑度をもたらす。
【００１４】
好適な実施形態において、算術デコーダは、図５ｅに定義されるようなアルゴリズムを用いてハッシュテーブルを評価するように構成され、ｃは、数値的な現在のコンテクスト値またはそのスケールされたバージョンを表す変数を指定し、ｉは、現在のハッシュテーブルインデックス値を表す変数であり、ｉｎｉ＿ｍｉｎは、ハッシュテーブルの最初のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数である。上述のアルゴリズムにおいて、条件「ｃ＜（ｊ＞＞８）」は、変数ｃによって表される状態値がテーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも小さいことを定義する。また、上述のアルゴリズムにおいて、「ｊ＆０ｘＦＦ」は、テーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表されるマッピングルールインデックス値を表す。さらに、ｉ＿ｍａｘは、ハッシュテーブルの最後のエントリのハッシュテーブルインデックス値を指定するために初期化されさらにｃおよび（ｊ＞＞８）間の比較に基づいて選択的に更新される変数である。条件「ｃ＞（ｊ＞＞８）」は、変数ｃによって表される状態値がテーブルエントリａｒｉ＿ｈａｓｈ＿ｍ［ｉ］によって表される状態値よりも大きいことを定義する。前記アルゴリズムのリターン値は、確率モデルのインデックスｐｋｉを指定しさらにマッピングルールインデックス値である。「ａｒｉ＿ｈａｓｈ＿ｍ」は、ハッシュテーブルを指定し、さらに、「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」は、ハッシュテーブルインデックス値ｉを有するハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍのエントリを指定する。「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」は、マッピングテーブルを指定し、さらに、「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］」は、マッピングインデックス値ｉ＿ｍａｘを有するマッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍのエントリを指定する。
【００１５】
図２２（１）から図２２（４）のハッシュテーブルを有する上述のアルゴリズムの組合せは、図５ｅに示されるように、図２２（１）から図２２（４）に従うハッシュが特に適切な方法で数値的なコンテクスト値の重要な値および状態間隔の両方を定義するように、マッピングルールの特に効率的な選択を可能にすることが見いだされている。  さらに、図５ｅに従う前記アルゴリズムおよび図２２（１）から図２２（４）に従うハッシュテーブル間の相互作用は、テーブル検索のための速いアルゴリズムとの併用で特に良好な結果をもたらすことを示している。さらに、図２１に定義されるマッピングテーブルは、上述のハッシュテーブルと併用するときに、前記アルゴリズムにも特によく適している。要約すると、図５ｅに定義されるようなアルゴリズムに関連して図２２（１）から図２２（４）に示されるようなハッシュテーブルおよび図２１に定義されるようなマッピングテーブルの使用は、良好な符号化／復号化効率および低い計算の複雑度をもたらす。換言すれば、図５ｅの２分探索アルゴリズムは、上述に定義されるように、テーブルａｒｉ＿ｈａｓｈ＿ｍおよびａｒｉ＿ｌｏｏｋｕｐ＿ｍを用いて演算することによく適していることが見いだされている。
【００１６】
しかしながら、検索アルゴリズムの（容易に可能である）わずかな変更または重要な変更でさえも、本発明による概念を変更しないで行われうる点に留意すべきである。
【００１７】
換言すれば、検索方法は、前述の方法に拘束されない。（例えば図５ｅによる）２分法の使用は、パフォーマンスをさらに改良するにもかかわらず、単純な徹底的な検索を実行することも可能であり、それにしても、それは、複雑度のいくらかの増加をもたらす。
【００１８】
好適な実施形態において、算術デコーダは、例えば図５ｅに示されるアルゴリズムのリターン値として提供されるマッピングルールインデックス値ｐｋｉに基づいてシンボルコード上へのコード値のマッピングを表すマッピングルールを選択するように構成される。前記マッピングルールインデックス値ｐｋｉの使用は、非常に効率的であるが、その理由は、上述のテーブルおよび上述のアルゴリズムの相互作用が意味のあるマッピングルールインデックス値を提供するために最適化されるからである。
【００１９】
好適な実施形態において、算術デコーダは、シンボルコード上へのコード値のマッピングを表すマッピングルールを選択するためにテーブルインデックス値としてマッピングルールインデックス値を用いるように構成される。テーブルインデックス値としてマッピングルールインデックス値の使用は、マッピングルールの計算的に効率的なメモリ効率のよい選択を可能にする。
【００２０】
好適な実施形態において、算術デコーダは、選択されたマッピングルールとして、図２３（１）、図２３（２）、図２３（３）に定義されるように、テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］のサブテーブルのうちの１つを選択するように構成される。この概念は、テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］のサブテーブルによって定義されるマッピングルールが、図２３（１）、図２３（２）、図２３（３）に定義されるように、図２１および図２２（１）から図２２（４）に従うテーブルとの併用で図５ｅによる上述のアルゴリズムの実行によって達成できる結果によく適しているという事実に基づく。
【００２１】
好適な実施形態において、算術デコーダは、図５ｃに従うアルゴリズムを用いて数値的な前のコンテクスト値に基づいて数値的なコンテクスト値を得るように構成され、アルゴリズムは、スペクトル値のベクトルにおいて復号化するために、入力値として、数値的な前のコンテクスト値を表す値または変数ｃおよびスペクトル値の２タプルのインデックスを表す値または変数ｉを受信する。値または変数Ｎは、周波数領域−時間領域コンバータの再構成ウィンドウのウィンドウの長さを表す。アルゴリズムは、出力値として、数値的な現在のコンテクスト値を表す更新された値または変数ｃを提供する。アルゴリズムにおいて、演算「ｃ＞＞４」は、値または変数ｃの４ビットだけ右へのシフトを表す。さらに、ｑ［０］［ｉ＋１］は、前のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２合計の現在の周波数インデックスよりも１だけ大きいより大きい周波数インデックスｉ＋１を関連付けるコンテクストサブ区域値を指定する。同様に、ｑ［１］［ｉ−１］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも１だけ小さいより小さい周波数インデックスｉ−１を関連付けるコンテクストサブ区域値を指定する。ｑ［１］［ｉ−２］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも２だけ小さいより小さい周波数インデックスｉ−２を関連付けるコンテクストサブ区域値を指定する。ｑ［１］［ｉ−３］は、現在のオーディオフレームと関連しさらに現在復号化されるスペクトル値の２タプルの現在の周波数インデックスよりも３だけ小さいより小さい周波数インデックスｉ−３を関連付けるコンテクストサブ区域値を指定する。図５ｅによるアルゴリズムは、図２１および図２２（１）から図２２（４）のテーブルを併用するときに、図５ｃのアルゴリズムを用いて得られる数値的な現在のコンテクスト値ｃに基づいてマッピングルールインデックス値を提供するためによく適していることが見いだされ、図５ｃのアルゴリズムを用いて数値的な現在のコンテクスト値を得ることは、計算的に特に効率的であるが、その理由は、図５ｃによるアルゴリズムが非常に単純な計算だけを必要とするからである。
【００２２】
好適な実施形態において、算術デコーダは、現在のオーディオフレームと関連しさらに図５ｌによるアルゴリズムを用いて現在復号化されるスペクトル値の２タプルの現在の周波数インデックスを関連付けるコンテクストサブ区域値ｑ［１］［ｉ］を更新するように構成され、ａは、現在復号化されるスペクトル値の２タプルの第１のスペクトル値の絶対値を指定し、さらに、ｂは、現在復号化されるスペクトル値の２タプルの第２のスペクトル値を指定する。好適なアルゴリズムは、コンテクストサブ区域値の単純な更新のために非常によく適していることが明らかである。
【００２３】
好適な実施形態において、算術デコーダは、図５ｇによる算術復号化アルゴリズムを用いて復号化されたスペクトル値の２タプルを表す復号化された値ｍを提供するように構成される。前記算術復号化アルゴリズムは、上述のアルゴリズムとの協働のために非常によく適していることが見いだされている。
【００２４】
本発明による別の実施形態は、符号化されたオーディオ情報に基づいて復号化されたオーディオ情報を提供するためのデコーダを作り出す。オーディオデコーダは、スペクトル値の算術的に符号化された表現に基づいて複数の復号化されたスペクトル値を提供するための算術デコーダを含む。オーディオデコーダは、復号化されたオーディオ情報を得るために、復号化されたスペクトル値を用いて時間領域オーディオ表現を提供するための周波数領域−時間領域コンバータも含む。算術デコーダは、数値的な現在のコンテクスト値によって表されるコンテクスト状態に基づいて、復号化された形式でスペクトル値またはスペクトル値の最上位ビットプレーンを表すシンボルコード上への、符号化された形式でスペクトル値またはスペクトル値の最上位ビットプレーンを表すコード値のマッピングを表すマッピングルールを選択するように構成される。算術デコーダは、複数の前に復号化されたスペクトル値に基づいて数値的な現在のコンテクスト値を決定するように構成される。算術デコーダは、マッピングルールを選択するために、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブルを評価するように構成される。ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）、図２２（２）、図２２（３）および図２２（４）に示されるように定義される。算術デコーダは、数値的な現在のコンテクスト値がハッシュテーブルのエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは数値的な現在のコンテクスト値が位置するハッシュテーブルのエントリによって表される間隔を決定するためにハッシュテーブルを評価するように、さらに、評価の結果に基づいて選択されたマッピングルールを表すマッピングルールインデックス値を導き出すように構成される。図２２（１）から図２２（４）に示されるようなハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、それによってマッピングインデックス値を導き出すために、ハッシュテーブルのエントリによって表されるテーブルコンテクスト値およびハッシュテーブルのエントリによって表される間隔のための解析のためによく適していることが見いだされている。図２２（１）から図２２（４）に従うハッシュテーブルによるテーブルコンテクスト値および間隔の両方の定義は、テーブルコンテクスト値をチェックするためさらにテーブルコンテクスト値が位置しないハッシュテーブルのエントリによって定義される間隔を決定するための両方のために、前記ハッシュテーブルのエントリを用いるハッシュテーブルの評価のための単純な概念と併用するときに、マッピングルールの選択のための効率的なメカニズムを提供することが見いだされている。
【００２５】
好適な実施形態において、算術デコーダは、数値的な現在のコンテクスト値が得られたハッシュテーブルインデックス値によって指定される得られたハッシュテーブルエントリおよび隣接するハッシュテーブルエントリによって定義される間隔内に位置するように、テーブルエントリのハッシュテーブルインデックス値を反復的に得るために、数値的な現在のコンテクスト値または数値的な現在のコンテクスト値のスケールされたバージョンとハッシュテーブルの一連の数値的に順序付けられたエントリまたはサブエントリとを比較するように構成される。この場合、算術デコーダは、数値的な現在のコンテクスト値または数値的な現在のコンテクスト値のスケールされたバージョンと現在のエントリまたはサブエントリとの間の比較の結果に基づいてハッシュテーブルの一連のエントリの次のエントリを決定するように構成される。このメカニズムは、図２２（１）から図２２（４）に従うハッシュテーブルの特に効率的な評価を可能にすることが認識されている。
【００２６】
好適な実施形態において、算術デコーダは、数値的な現在のコンテクスト値またはそのスケールされたバージョンが現在のハッシュテーブルインデックス値によって指定されるハッシュテーブルの第１のサブエントリに等しいことが見いだされている場合、現在のハッシュテーブルインデックス値によって指定されるハッシュテーブルの第２のサブエントリによって定義されるマッピングルールを選択するように構成される。したがって、ハッシュテーブルのエントリは、図２２（１）から図２２（４）に従って定義されるように、二重機能を引き継ぐ。ハッシュテーブルの第１のサブエントリ（すなわちエントリの第１の部分）は、数値的な（現在の）コンテクスト値の特に重要な状態を確認するために用いられ、その一方で、ハッシュテーブルの第２のサブエントリ（すなわちそのようなエントリの第２の部分）は、例えば、マッピングルールインデックス値を定義することによってマッピングルールを定義する。このように、ハッシュテーブルのエントリは、非常に効率的な方法で用いられる。また、メカニズムは、ハッシュテーブルのエントリによってまたはより正確に言うとハッシュテーブルのサブエントリによって表される数値的な現在のコンテクスト値の特に重要な状態のためのマッピングルールインデックス値を提供する際に特に効率的である。このように、ハッシュテーブルの完全なエントリは、図２２（１）から図２２（４）に定義されるように、マッピングルールへの数値的な（現在の）コンテクスト値の特に重要な状態のマッピングおよび数値的な現在のコンテクスト値のそれほど重要でない状態の区域（または間隔）の間隔境界のルールを定義する。
【００２７】
好適な実施形態において、算術デコーダは、数値的な現在のコンテクスト値がハッシュテーブルのサブエントリに等しいことが見いだされていない場合、マッピングテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍのエントリまたはサブエントリによって定義されるマッピングルールを選択するように構成される。この場合、算術デコーダは、反復的に得られたハッシュテーブルインデックス値に基づいてマッピングテーブルのエントリまたはサブエントリを選択するように構成される。このように、特に効率的な２テーブルメカニズムが作り出され、それは、数値的な現在のコンテクスト値の特に重要な状態のためおよび数値的な現在のコンテクスト値のそれほど重要でない状態のための両方のためにマッピングルールインデックス値を効率的に提供することを可能にする（数値的な現在のコンテクスト値のそれほど重要でない状態は、ハッシュテーブルのエントリまたはサブエントリによって明確にすなわち個々に表されていない）。
【００２８】
好適な実施形態において、算術デコーダは、数値的な現在のコンテクスト値が現在のハッシュテーブルインデックス値によって指定されるハッシュテーブルのエントリによって定義される値に等しいことが見いだされている場合、得られたハッシュテーブルインデックス値によって指定されるハッシュテーブルのエントリによって定義されるマッピングルールインデックス値を選択的に提供するように構成される。このように、ハッシュテーブルのエントリの二重使用を可能にする効率的なメカニズムがある。
【００２９】
本発明のさらなる実施形態は、符号化されたオーディオ情報に基づいて復号化されたオーディオ情報を提供するための方法を作り出す。前記方法は、前述のオーディオデコーダの機能を満たす。したがって、その方法は、議論が簡潔さのためにここで省略されるように、オーディオデコーダと同じ考えおよび知見に基づく。その方法は、オーディオデコーダの特徴および機能のいずれかによって補完できる点に留意すべきである。
【００３０】
本発明による別の実施形態は、入力されたオーディオ情報に基づいて符号化されたオーディオ情報を提供するためのオーディオエンコーダを作り出す。オーディオエンコーダは、周波数領域オーディオ表現がスペクトル値のセットを含むように、入力されたオーディオ情報の時間領域表現に基づいて周波数領域オーディオ表現を提供するためのエネルギー圧縮の時間領域−周波数領域コンバータを含む。オーディオエンコーダは、可変長コードワードを用いてスペクトル値またはその前処理されたバージョンを符号化するように構成される算術エンコーダも含む。算術エンコーダは、コード値上に、スペクトル値またはスペクトル値の最上位ビットプレーンの値をマップするように構成される。算術エンコーダは、数値的な現在のコンテクスト値によって表されるコンテクスト状態に基づいて、コード値上への、スペクトル値またはスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールを選択するようにも構成される。算術エンコーダは、複数の前に符号化されたスペクトル値に基づいて数値的な現在のコンテクスト値を決定するように構成される。算術エンコーダは、マッピングルールを選択するために、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブルを評価するようにも構成される。ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍは、図２２（１）から図２２（４）に示されるように定義される。  算術エンコーダは、数値的な現在のコンテクスト値がハッシュテーブルのエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにまたは数値的な現在のコンテクスト値が位置するハッシュテーブルのエントリによって表される間隔を決定するためにハッシュテーブルを評価するように、さらに、前記評価の結果に基づいて選択されたマッピングルールを表すマッピングルールインデックス値を導き出すように構成される。オーディオエンコーダの機能は、上述のオーディオデコーダの機能と並行にある点に留意すべきである。したがって、簡潔さのためにオーディオデコーダの重要な考えの上述の議論について述べる。
【００３１】
さらに、オーディオエンコーダは、オーディオデコーダの特徴および機能のいずれかによって補完できる点に留意すべきである。特に、マッピングルールの選択に関する特徴のいずれかは、オーディオエンコーダにおいて同様に実施することができ、符号化されたスペクトル値が、復号化されたスペクトル値に代わるなどである。
【００３２】
本発明による別の実施形態は、入力されたオーディオ情報に基づいて符号化されたオーディオ情報を提供するための方法を作り出す。その方法は、同じ考えに基づいて前に記載されているオーディオエンコーダの機能を実行する。
【００３３】
本発明による別の実施形態は、前に記載されている方法のうちの少なくとも１つを実行するためのコンピュータプログラムを作り出す。
【００３４】
本発明による実施形態は、添付された図を参照して後に記載される。
【図面の簡単な説明】
【００３５】
【図１ａ】図１の図１ａは、本発明の実施形態によるオーディオエンコーダの略ブロック図を示す。
【図１ｂ】図１の図１ｂは、本発明の実施形態によるオーディオエンコーダの略ブロック図を示す。
【図２】図２は、本発明の実施形態によるオーディオデコーダの略ブロック図を示す。
【図２ａ】図２の図２ａは、本発明の実施形態によるオーディオデコーダの略ブロック図を示す。
【図２ｂ】図２の図２ｂは、本発明の実施形態によるオーディオデコーダの略ブロック図を示す。
【図３】図３は、スペクトル値を復号化するためのアルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図４】図４は、状態計算のためのコンテクストの略図を示す。
【図５ａ】図５ａは、コンテクストをマップするためのアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｂ】図５ｂは、コンテクストをマップするための別のアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｃ】図５ｃは、コンテクスト状態値を得るためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｄ】図５ｄは、コンテクスト状態値を得るための別のアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｅ】図５ｅは、状態値（または状態変数）から累積度数テーブルインデックス値「ｐｋｉ」を導き出すためのアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現を示す。
【図５ｆ】図５ｆは、状態値（または状態変数）から累積度数テーブルインデックス値「ｐｋｉ」を導き出すための別のアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現を示す。
【図５ｇ（１）】図５ｇの図５ｇ（１）は、可変長コードワードからシンボルを算術的に復号化するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図５ｇ（２）】図５ｇの図５ｇ（２）は、可変長コードワードからシンボルを算術的に復号化するためのアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現を示す。
【図５ｈ】図５ｈは、可変長コードワードからシンボルを算術的に復号化するための別のアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現の第１の部分を示す。
【図５ｉ】図５ｉは、可変長コードワードからシンボルを算術的に復号化するための他のアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の疑似プログラムコード表現の第２の部分を示す。
【図５ｊ】図５ｊは、共通の値ｍからスペクトル値の絶対値ａ、ｂを導き出すためのアルゴリズムの疑似プログラムコード表現を示す。
【図５ｋ】図５ｋは、復号化されたスペクトル値の配列に復号化された値ａ、ｂを入力するためのアルゴリズムの疑似プログラムコード表現を示す。
【図５ｌ】図５ｌは、復号化されたスペクトル値の絶対値ａ、ｂに基づいてコンテクストサブ区域値を得るためのアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｍ】図５ｍは、復号化されたスペクトル値の配列およびコンテクストサブ区域値の配列のエントリを満たすためのアルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の疑似プログラムコード表現を示す。
【図５ｎ】図５ｎは、共通の値ｍから復号化されたスペクトル値の絶対値ａ、ｂを導き出すための別のアルゴリズムの疑似プログラムコード表現を示す。
【図５ｏ】図５ｏは、復号化されたスペクトル値の配列およびコンテクストサブ区域値の配列を更新するためのアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｐ】図５ｐは、復号化されたスペクトル値の配列のエントリおよびコンテクストサブ区域値の配列のエントリを満たすためのアルゴリズム「ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現を示す。
【図５ｑ】図５ｑは、定義の凡例を示す。
【図５ｒ】図５ｒは、定義の別の凡例を示す。
【図６ａ】図６ａは、統合スピーチオーディオ符号化（ＵＳＡＣ）生データブロックの構文表現を示す。
【図６ｂ】図６ｂは、単一のチャンネルエレメントの構文表現を示す。
【図６ｃ】図６ｃは、チャンネルペアエレメントの構文表現を示す。
【図６ｄ】図６ｄは、「ＩＣＳ」制御情報の構文表現を示す。
【図６ｅ】図６ｅは、周波数領域チャンネルストリームの構文表現を示す。
【図６ｆ】図６ｆは、算術的に符号化されたスペクトルデータの構文表現を示す。
【図６ｇ】図６ｇは、スペクトル値のセットを復号化するための構文表現を示す。
【図６ｈ】図６ｈは、スペクトル値のセットを復号化するための別の構文表現を示す。
【図６ｉ】図６ｉは、データエレメントおよび変数の凡例を示す。
【図６ｊ】図６ｊは、データエレメントおよび変数の別の凡例を示す。
【図６ｋ】図６ｋは、ＵＳＡＣ単一チャンネルエレメント「ＵｓａｃＳｉｎｇｌｅＣｈａｎｎｅｌＥｌｅｍｅｎｔ（）」の構文表現を示す。
【図６ｌ】図６ｌは、ＵＳＡＣチャンネルペアエレメント「ＵｓａｃＣｈａｎｎｅｌＰａｉｒＥｌｅｍｅｎｔ（）」の構文表現を示す。
【図６ｍ】図６ｍは、「ＩＣＳ」制御情報の構文表現を示す。
【図６ｎ】図６ｎは、ＵＳＡＣコアコーダデータ「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ」の構文表現を示す。
【図６ｏ】図６ｏは、周波数領域チャンネルストリーム「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」の構文表現を示す。
【図６ｐ】図６ｐは、算術的に符号化されたスペクトルデータ「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」の構文表現を示す。
【図７】図７は、本発明の第１の形態によるオーディオエンコーダの略ブロック図を示す。
【図８】図８は、本発明の第１の形態によるオーディオデコーダの略ブロック図を示す。
【図９】図９は、本発明の第１の形態によるマッピングルールインデックス値上への数値的な現在のコンテクスト値のマッピングのグラフ表現を示す。
【図１０】図１０は、本発明の第２の形態によるオーディオエンコーダの略ブロック図を示す。
【図１１】図１１は、本発明の第２の形態によるオーディオデコーダの略ブロック図を示す。
【図１２】図１２は、本発明の第３の形態によるオーディオエンコーダの略ブロック図を示す。
【図１３】図１３は、本発明の第３の形態によるオーディオデコーダの略ブロック図を示す。
【図１４ａ】図１４ａは、ＵＳＡＣ規格案のワーキングドラフト４に従って用いられるような状態計算のためのコンテクストの略図を示す。
【図１４ｂ】図１４ｂは、ＵＳＡＣ規格案のワーキングドラフト４による算術符号化スキームにおいて用いられるようなテーブルの概要を示す。
【図１５ａ】図１５ａは、本発明による実施形態において用いられるような状態計算のためのコンテクストの略図を示す。
【図１５ｂ】図１５ｂは、比較例による算術符号化スキームにおいて用いられるようなテーブルの概要を示す。
【図１６ａ】図１６ａは、比較例による、ＵＳＡＣ規格案のワーキングドラフト５による、さらに、ＡＡＣ（アドバンストオーディオ符号化）ハフマン符号化によるノイズレス符号化スキームのための読み出し専用メモリ需要のグラフ表現を示す。
【図１６ｂ】図１６ｂは、比較例に従う、さらに、ＵＳＡＣ規格案のワーキングドラフト５による概念に従う全ＵＳＡＣデコーダデータ読み出し専用メモリ需要のグラフ表現を示す。
【図１７】図１７は、ＵＳＡＣ規格案のワーキングドラフト３またはワーキングドラフト５によるノイズレス符号化と比較例による符号化スキームとの比較のための装置の略図を示す。
【図１８】図１８は、ＵＳＡＣ規格案のワーキングドラフト３による、さらに、比較例によるＵＳＡＣ算術コーダによって生成される平均ビットレートのテーブル表現を示す。
【図１９】図１９は、ＵＳＡＣ規格案のワーキングドラフト３による算術デコーダのための、さらに、比較例による算術デコーダのための最小および最大ビットリザーバレベルのテーブル表現を示す。
【図２０】図２０は、算術コーダの異なるバージョンのためのＵＳＡＣ規格案のワーキングドラフト３による３２ｋｂｉｔｓのビットストリームを復号化するための平均複雑度数のテーブル表現を示す。
【図２１】図２１は、本発明の実施形態によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図２２（１）】図２２（１）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図２２（２）】図２２（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図２２（３）】図２２（３）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図２２（４）】図２２（４）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図２３（１）】図２３（１）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［１７］」のコンテンツのテーブル表現を示す。
【図２３（２）】図２３（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［１７］」のコンテンツのテーブル表現を示す。
【図２３（３）】図２３（３）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［１７］」のコンテンツのテーブル表現を示す。
【図２４】図２４は、テーブル「ａｒｉ＿ｃｆ＿ｒ［］」のコンテンツのテーブル表現を示す。
【図２５】図２５は、状態計算のためのコンテクストの略図を示す。
【図２６】図２６は、比較例（「Ｍ１７５５８」）のための、さらに、本発明による実施形態（「Ｎｅｗ  Ｐｒｏｐｏｓａｌ（新しい提案）」）のためのＷＤ６参照品質ビットストリームのトランスコーディングのための平均符号化パフォーマンスのテーブル表現を示す。
【図２７】図２７は、比較例（「Ｍ１７５５８」）のための、さらに、本発明による実施形態（「Ｒｅ−ｔｒａｉｎｅｄ  ｔａｂｌｅｓ（再訓練されたテーブル）」）のための操作点ごとのＷＤ６参照品質ビットストリームのトランスコーディングのための符号化パフォーマンスのテーブル表現を示す。
【図２８】図２８は、ＷＤ６のための、比較例（「Ｍ１７５８８」）のための、さらに、本発明による実施形態（「Ｎｅｗ  Ｐｒｏｐｏｓａｌ（新しい提案）」）のためのノイズレスコーダメモリ需要の比較のテーブル表現を示す。
【図２９】図２９は、本発明による実施形態（「Ｒｅ−ｔｒａｉｎｅｄ  ｃｏｄｉｎｇ  ｓｃｈｅｍｅ（再訓練された符号化スキーム）」）において用いられるようなテーブルの特徴のテーブル表現を示す。
【図３０】図３０は、異なる算術コーダバージョンのための３２ｋｂｉｔ／ｓのＷＤ６参照品質ビットストリームを復号化するための平均複雑度数のテーブル表現を示す。
【図３１】図３１は、異なる算術コーダバージョンのための１２ｋｂｉｔ／ｓのＷＤ６参照品質ビットストリームを復号化するための平均複雑度数のテーブル表現を示す。
【図３２】図３２は、本発明による実施形態においてさらにＷＤ６において算術コーダによって生成される平均ビットレートのテーブル表現を示す。
【図３３】図３３は、提案されたスキームを用いるフレームベースにおけるＵＳＡＣの最小、最大および平均ビットレートのテーブル表現を示す。
【図３４】図３４は、ＷＤ６算術コーダを用いるＵＳＡＣコーダおよび本発明による実施形態によるコーダ（「Ｎｅｗ  Ｐｒｏｐｏｓａｌ（新しい提案）」）によって生成される平均ビットレートのテーブル表現を示す。
【図３５】図３５は、本発明による実施形態のための最良のおよび最悪の場合のテーブル表現を示す。
【図３６】図３６は、本発明による実施形態のためのビットリザーバ制限のテーブル表現を示す。
【図３７】図３７は、本発明の実施形態による算術的に符号化されたデータ「ａｒｉｔｈ＿ｄａｔａ」の構文表現を示す。
【図３８】図３８は、定義およびヘルプエレメントの凡例を示す。
【図３９】図３９は、定義の別の凡例を示す。
【図４０ａ】図４０ａは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現を示す。
【図４０ｂ】図４０ｂは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現を示す。
【図４０ｃ】図４０ｃは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｐｋ」の疑似プログラムコード表現を示す。
【図４０ｄ】図４０ｄは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の第１の部分の疑似プログラムコード表現を示す。
【図４０ｅ】図４０ｅは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の第２の部分の疑似プログラムコード表現を示す。
【図４０ｆ】図４０ｆは、本発明の実施形態による１つ以上の最下位ビットを復号化するための関数またはアルゴリズムの疑似プログラムコード表現を示す。
【図４０ｇ】図４０ｇは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現を示す。
【図４０ｈ】図４０ｈは、本発明の実施形態による関数またはアルゴリズム「ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現を示す。
【図４１（１）】図４１（１）は、本発明の実施形態によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４１（２）】図４１（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４２（１）】図４２（１）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４２（２）】図４２（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４２（３）】図４２（３）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４２（４）】図４２（４）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【図４３（１）】図４３（１）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４３（２）】図４３（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４３（３）】図４３（３）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４３（４）】図４３（４）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４３（５）】図４３（５）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４３（６）】図４３（６）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【図４４】図４４は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｒ［４］」のテーブル表現を示す。
【発明を実施するための形態】
【００３６】
１．  図７によるオーディオエンコーダ
【００３７】
図７は、本発明の実施形態によるオーディオエンコーダの略ブロック図を示す。オーディオエンコーダ７００は、入力されたオーディオ情報７１０を受信し、さらに、それに基づいて符号化されたオーディオ情報７１２を提供するように構成される。
【００３８】
オーディオエンコーダは、周波数領域オーディオ表現７２２がスペクトル値のセットを含むように、入力されたオーディオ情報７１０の時間領域表現に基づいて周波数領域オーディオ表現７２２を提供するように構成されるエネルギー圧縮の時間領域−周波数領域コンバータ７２０を含む。
【００３９】
オーディオエンコーダ７００は、符号化されたオーディオ情報７１２を得るために（例えば複数の可変長コードワードを含みうる）可変長コードワードを用いて、（周波数領域オーディオ表現７２２を形成するスペクトル値のセットから）スペクトル値またはその前処理されたバージョンを符号化するように構成される算術エンコーダ７３０も含む。
【００４０】
算術エンコーダ７３０は、コンテクスト状態に基づいてコード値上に（すなわち可変長コードワード上に）、スペクトル値またはスペクトル値の最上位ビットプレーンの値をマップするように構成される。
【００４１】
算術エンコーダは、（現在の）コンテクスト状態に基づいて、コード値上への、スペクトル値のまたはスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールを選択するように構成される。算術エンコーダは、複数の前に符号化された（好ましくは、必ずではないが、隣接する）スペクトル値に基づいて、現在のコンテクスト状態または現在のコンテクスト状態を表す数値的な現在のコンテクスト値を決定するように構成される。
【００４２】
この目的のために、算術エンコーダは、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブルを評価するように構成される。
【００４３】
ｈａｓｈ＿ｔａｂｌｅ（以下において「ａｒｉ＿ｈａｓｈ＿ｍ」にも指定される）は、好ましくは図２２（１）、図２２（２）、図２２（３）および図２２（４）のテーブル表現において示されるように定義される。
【００４４】
さらに、算術エンコーダは、好ましくは、数値的な現在のコンテクスト値がハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表されるテーブルコンテクスト値と同一であるかどうかを決定するためにおよび／または数値的な現在のコンテクスト値が位置するハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）のエントリによって表される間隔を決定するためにハッシュテーブル（ａｒｉ＿ｈａｓｈ＿ｍ）を評価するように、さらに、その評価の結果に基づいて選択されたマッピングルールを表すマッピングルールインデックス値（例えばここに「ｐｋｉ」によって指定される）を導き出すように構成される。
【００４５】
場合によっては、マッピングルールインデックス値は、重要な状態値である数値的な（現在の）コンテクスト値と個々に関連しうる。また、共通のマッピングルールインデックス値は、間隔境界（その間隔境界は、好ましくは、ハッシュテーブルのエントリによって定義される）によって囲まれる間隔内に位置する異なる数値的な（現在の）コンテクスト値と関連しうる。
【００４６】
明らかなように、（符号化されたオーディオ情報７１２の）コード値上への、（周波数領域オーディオ表現７２２の）スペクトル値のまたはスペクトル値の最上位ビットプレーンのマッピングは、マッピングルール７４２を用いてスペクトル値符号化７４０によって実行されうる。状態トラッカ７５０は、コンテクスト状態を追跡するように構成されうる。状態トラッカ７５０は、現在のコンテクスト状態を表す情報７５４を提供する。現在のコンテクスト状態を表す情報７５４は、好ましくは、数値的な現在のコンテクスト値の形式をとりうる。マッピングルールセレクタ７６０は、コード値上への、スペクトル値のまたはスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルール、例えば、累積度数テーブルを選択するように構成される。したがって、マッピングルールセレクタ７６０は、マッピングルール情報７４２をスペクトル値符号化７４０に提供する。マッピングルール情報７４２は、マッピングルールインデックス値のまたはマッピングルールインデックス値に基づいて選択される累積度数テーブルの形式をとりうる。マッピングルールセレクタ７６０は、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブル７６２を含む（または少なくとも評価する）。好ましくは、ハッシュテーブル７６２（ａｒｉ＿ｈａｓｈ＿ｍ［７４２］）のエントリは、図２２（１）から図２２（４）のテーブル表現において示されるように定義される。ハッシュテーブル７６２は、マッピングルールを選択するためにすなわちマッピングルール情報７４２を提供するために評価される。
【００４７】
好ましくは、必ずではないが、マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連しうり、さらに、共通のマッピングルールインデックス値は、間隔境界によって囲まれる間隔内に位置する異なる数値的なコンテクスト値と関連しうる。
【００４８】
上記を要約すると、オーディオエンコーダ７００は、時間領域−周波数領域コンバータによって提供される周波数領域オーディオ表現の算術符号化を実行する。  算術符号化は、マッピングルール（例えば累積度数テーブル）が前に符号化されたスペクトル値に基づいて選択されるように、コンテクストに依存する。したがって、互いにおよび／または現在符号化されたスペクトル値（すなわち現在符号化されたスペクトル値の所定の環境内のスペクトル値）に時間および／または周波数（または少なくとも所定の環境内）において隣接するスペクトル値は、算術符号化によって評価される確率分布を調整するために、算術符号化において考慮される。適切なマッピングルールを選択するときに、状態トラッカ７５０によって提供される数値的な現在のコンテクスト値７５４が評価される。典型的に異なるマッピングルールの数が数値的な現在のコンテクスト値７５４の可能な値の数よりも著しく小さいので、マッピングルールセレクタ７６０は、（例えばマッピングルールインデックス値によって表される）同じマッピングルールを比較的多数の異なる数値的なコンテクスト値に割り当てる。それにしても、典型的に、特定のマッピングルールが良好な符号化効率を得るために関連すべきである（特定の数値的なコンテクスト値によって表される）特定のスペクトル構成がある。
【００４９】
数値的な現在のコンテクスト値に基づいてマッピングルールの選択は、単一のハッシュテーブルのエントリが重要な状態値および数値的な（現在の）コンテクスト値の間隔の境界の両方を定義する場合、特に高い計算効率で実行できることが見いだされている。さらに、図２２（１）、図２２（２）、図２２（３）および図２２（４）に定義されるようなハッシュテーブルの使用は、特に高い符号化効率をもたらすことが見いだされている。このメカニズムは、前記ハッシュテーブルとの併用で、マッピングルール選択の要求によく適していることが見いだされているが、その理由は、単一の重要な状態値（または重要な数値的なコンテクスト値）が（共通のマッピングルールが関連する）複数の重要でない状態値の左側間隔および（共通のマッピングルールが関連する）複数の重要でない状態値の右側間隔の間に埋め込まれる多くの場合があるからである。また、エントリが図２２（１）、図２２（２）、図２２（３）および図２２（４）のテーブルにおいて定義されさらに重要な状態値および数値的な（現在の）コンテクスト値の間隔の境界の両方を定義する単一のハッシュテーブルを用いるメカニズムは、異なる場合を効率的に取り扱うことができ、そこにおいて、例えば、中間に重要な状態値なしで（重要でない数値的なコンテクスト値にも指定される）重要でない状態値の２つの隣接する間隔がある。特に高い計算効率は、テーブルアクセスの数が少なく保たれるため達成される。例えば、単一の反復的なテーブル検索は、数値的な現在のコンテクスト値が前記ハッシュテーブルのエントリによって定義される重要な状態値のいずれかに等しいかどうかをまたは数値的な現在のコンテクスト値が重要でない状態値の間隔のどれに位置するかを見いだすために大部分の実施形態において十分である。したがって、時間がかかることおよびエネルギーを消耗することの両方であるテーブルアクセスの数は、少なく保つことができる。このように、ハッシュテーブル７６２を用いるマッピングルールセレクタ７６０は、計算の複雑度に関する特に効率的なマッピングルールセレクタとして考慮されうり、その一方で、（ビットレートに関して）良好な符号化効率を得ることをさらに可能にする。
【００５０】
数値的な現在のコンテクスト値７５４からマッピングルール情報７４２の導出に関する詳細が以下に記載される。
【００５１】
２．  図８によるオーディオデコーダ
【００５２】
図８は、オーディオデコーダ８００の略ブロック図を示す。オーディオデコーダ８００は、符号化されたオーディオ情報８１０を受信し、さらに、それに基づいて復号化されたオーディオ情報８１２を提供するように構成される。
【００５３】
オーディオデコーダ８００は、スペクトル値の算術的に符号化された表現８２１に基づいて複数のスペクトル値８２２を提供するように構成される算術デコーダ８２０を含む。
【００５４】
オーディオデコーダ８００は、復号化されたスペクトル値８２２を受信し、さらに、復号化されたオーディオ情報８１２を得るために、復号化されたスペクトル値８２２を用いて、復号化されたオーディオ情報を構成しうる時間領域オーディオ表現８１２を提供するように構成される周波数領域−時間領域コンバータ８３０も含む。
【００５５】
算術デコーダ８２０は、スペクトル値決定器８２４を含み、それは、スペクトル値の算術的に符号化された表現８２１のコード値を、１つ以上の復号化されたスペクトル値または少なくとも１つ以上の復号化されたスペクトル値の部分（例えば最上位ビットプレーン）を表すシンボルコード上にマップするように構成される。スペクトル値決定器８２４は、マッピングルール情報８２８ａによって表されうるマッピングルールに基づいてマッピングを実行するように構成されうる。マッピングルール情報８２８ａは、例えば、マッピングルールインデックス値のまたは（例えばマッピングルールインデックス値に基づいて選択される）選択された累積度数テーブルの形式をとりうる。
【００５６】
算術デコーダ８２０は、（コンテクスト状態情報８２６ａによって表されうる）コンテクスト状態に基づいて、（復号化された形式で１つ以上のスペクトル値またはその最上位ビットプレーンを表す）シンボルコード上への、（スペクトル値の算術的に符号化された表現８２１によって表される）コード値のマッピングを表すマッピングルール（例えば累積度数テーブル）を選択するように構成される。
【００５７】
算術デコーダ８２０は、複数の前に復号化されたスペクトル値に基づいて（数値的な現在のコンテクスト値によって表される）現在のコンテクスト状態を決定するように構成される。この目的のために、前に復号化されたスペクトル値を表す情報を受信しさらにそれに基づいて現在のコンテクスト状態を表す数値的な現在のコンテクスト値８２６ａを提供する状態トラッカ８２６が用いられうる。
【００５８】
算術デコーダは、マッピングルールを選択するために、エントリが数値的なコンテクスト値中の重要な状態値および数値的なコンテクスト値の間隔の境界の両方を定義するハッシュテーブル８２９を評価するようにも構成される。好ましくは、ハッシュテーブル８２９（ａｒｉ＿ｈａｓｈ＿ｍ［７４２］）のエントリは、図２２（１）から図２２（４）のテーブル表現において示されるように定義される。ハッシュテーブル８２９は、マッピングルールを選択するためにすなわちマッピングルール情報８２８ａを提供するために評価される。
【００５９】
好ましくは、マッピングルールインデックス値は、重要な状態値である数値的なコンテクスト値と個々に関連し、さらに、共通のマッピングルールインデックス値は、間隔境界によって囲まれる間隔内に位置する異なる数値的なコンテクスト値と関連する。ハッシュテーブル８２９の評価は、例えば、マッピングルールセレクタ８２８の一部でありうるハッシュテーブル評価器を用いて実行されうる。したがって、マッピングルール情報８２８ａは、例えば、マッピングルールインデックス値の形式で、現在のコンテクスト状態を表す数値的な現在のコンテクスト値８２６ａに基づいて得られる。マッピングルールセレクタ８２８は、例えば、ハッシュテーブル８２９の評価の結果に基づいてマッピングルールインデックス値８２８ａを決定しうる。その代わりに、ハッシュテーブル８２９の評価は、マッピングルールインデックス値を直接的に提供しうる。
【００６０】
オーディオ信号デコーダ８００の機能に関して、算術デコーダ８２０は、平均して、復号化されるスペクトル値によく適しているマッピングルール（例えば累積度数テーブル）を選択するように構成される点に留意すべきであり、マッピングルールは、（例えば数値的な現在のコンテクスト値によって表される）現在のコンテクスト状態に基づいて選択されるので、複数の前に復号化されたスペクトル値に基づいて次々に決定される。したがって、復号化される隣接するスペクトル値間の統計依存を利用することができる。さらに、算術デコーダ８２０は、マッピングルールセレクタ８２８を用いて、計算の複雑度、テーブルサイズおよび符号化効率間の良好なトレードオフで、効率的に実施されうる。エントリが重要な状態値および重要でない状態値の間隔の間隔境界の両方を表す（単一の）ハッシュテーブル８２９を評価することによって、単一の反復的なテーブル検索は、数値的な現在のコンテクスト値８２６ａからマッピングルール情報８２８ａを導き出すために十分でありうる。さらに、図２２（１）、図２２（２）、図２２（３）および図２２（４）に定義されるようなハッシュテーブルの使用は、特に高い符号化効率をもたらすことが見いだされている。したがって、比較的多数の異なる可能な数値的な（現在の）コンテクスト値を比較的より少数の異なるマッピングルールインデックス値にマップすることが可能である。上述のように、さらに図２２（１）から図２２（４）のテーブル表現において定義されるように、ハッシュテーブル８２９を用いることによって、多くの場合、単一の分離された重要な状態値（重要なコンテクスト値）が重要でない状態値（重要でないコンテクスト値）の左側間隔および重要でない状態値（重要でないコンテクスト値）の右側間隔の間に埋め込まれる知見を利用することが可能であり、異なるマッピングルールインデックス値は、左側間隔の状態値（コンテクスト値）および右側間隔の状態値（コンテクスト値）を比較するときに、重要な状態値（重要なコンテクスト値）と関連する。しかしながら、ハッシュテーブル８２９の使用は、中間に重要な状態値なしで、数値的な状態値の２つの間隔がすぐに隣接する状況のためにもよく適している。
【００６１】
結論として、ハッシュテーブル８２９「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を評価するマッピングルールセレクタ８２８は、現在のコンテクスト状態に基づいて（または現在のコンテクスト状態を表す数値的な現在のコンテクスト値に基づいて）、マッピングルールを選択するときに（またはマッピングルールインデックス値を提供するときに）、特に良好な効率をもたらすが、その理由は、ハッシングメカニズムがオーディオデコーダにおいて典型的なコンテクストシナリオによく適しているからである。
【００６２】
詳細が以下に記載される。
【００６３】
３．  図９によるコンテクスト値ハッシングメカニズム
【００６４】
以下において、マッピングルールセレクタ７６０および／またはマッピングルールセレクタ８２８において実施されうるコンテクストハッシングメカニズムが開示される。ハッシュテーブル７６２および／またはハッシュテーブル８２９は、図２２（１）から図２２（４）のテーブル表現において定義されるように、前記コンテクスト値ハッシングメカニズムを実施するために用いられうる。
【００６５】
数値的な現在のコンテクスト値ハッシングシナリオを示す図９をこれから参照して、詳細が記載される。図９のグラフ表現において、横座標９１０は、数値的な現在のコンテクスト値の値（すなわち数値的なコンテクスト値）を表す。縦座標９１２は、マッピングルールインデックス値を表す。マーキング９１４は、（重要でない状態を表す）重要でない数値的なコンテクスト値のためのマッピングルールインデックス値を表す。マーキング９１６は、個々の（真の）重要な状態を表す「ｉｎｄｉｖｉｄｕａｌ（個々の）」（真の）重要な数値的なコンテクスト値のためのマッピングルールインデックス値を表す。マーキング９１６は、「ｉｍｐｒｏｐｅｒ（不適切な）」重要な状態を表す「ｉｍｐｒｏｐｅｒ（不適切な）」数値的なコンテクスト値のためのマッピングルールインデックス値を表し、「ｉｍｐｒｏｐｅｒ（不適切な）」重要な状態は、同じマッピングルールインデックス値が重要でない数値的なコンテクスト値の隣接する間隔のうちの１つに関して関連する重要な状態である。
【００６６】
明らかなように、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ１］」は、ｃ１の数値的なコンテクスト値を有する個々の（真の）重要な状態を表す。明らかなように、マッピングルールインデックス値ｍｒｉｖ１は、数値的なコンテクスト値ｃ１を有する個々の（真の）重要な状態と関連する。したがって、数値的なコンテクスト値ｃ１およびマッピングルールインデックス値ｍｒｉｖ１の両方は、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ１］」によって表されうる。数値的なコンテクスト値の間隔９３２は、数値的なコンテクスト値ｃ１によって囲まれ、数値的なコンテクスト値ｃ１は、間隔９３２の最も大きい数値的なコンテクスト値がｃ１−１に等しいように、間隔９３２に属しない。（ｍｒｉｖ１と異なる）ｍｒｉｖ４のマッピングルールインデックス値は、間隔９３２の数値的なコンテクスト値と関連する。マッピングルールインデックス値ｍｒｉｖ４は、例えば、付加的なテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１−１］」によって表されうる。
【００６７】
さらに、マッピングルールインデックス値ｍｒｉｖ２は、間隔９３４内に位置する数値的なコンテクスト値と関連しうる。間隔９３４の下限は、重要な数値的なコンテクスト値である数値的なコンテクスト値ｃ１によって決定され、数値的なコンテクスト値ｃ１は、間隔９３２に帰属しない。したがって、間隔９３４の最も小さい値は、（整数の数値的なコンテクスト値と仮定する）ｃ１＋１に等しい。間隔９３４の別の境界は、数値的なコンテクスト値ｃ２によって決定され、数値的なコンテクスト値ｃ２は、間隔９３４の最も大きい値がｃ２−１に等しいように、間隔９３４に属しない。数値的なコンテクスト値ｃ２は、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ２］」によって表されるいわゆる「ｉｍｐｒｏｐｅｒ（不適切な）」数値的なコンテクスト値である。例えば、マッピングルールインデックス値ｍｒｉｖ２は、「ｉｍｐｒｏｐｅｒ（不適切な）」重要な数値的なコンテクスト値ｃ２と関連する数値的なコンテクスト値が数値的なコンテクスト値ｃ２によって囲まれる間隔９３４と関連するマッピングルールインデックス値に等しいように、数値的なコンテクスト値ｃ２と関連しうる。さらに、数値的なコンテクスト値の間隔９３６も、数値的なコンテクスト値ｃ２によって囲まれ、数値コンテクスト値ｃ２は、間隔９３６の最も小さい数値的なコンテクスト値がｃ２＋１に等しいように、間隔９３６に属しない。マッピングルールインデックス値ｍｒｉｖ２と典型的に異なるマッピングルールインデックス値ｍｒｉｖ３は、間隔９３６の数値的なコンテクスト値と関連する。
【００６８】
明らかなように、数値的なコンテクスト値の間隔９３２と関連するマッピングルールインデックス値ｍｒｉｖ４は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１−１］」によって表されうり、間隔９３４の数値的なコンテクスト値と関連するマッピングルールインデックスｍｒｉｖ２は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ１］」によって表されうり、さらに、マッピングルールインデックス値ｍｒｉｖ３は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ２］」によって表されうる。ここに示される例において、ハッシュテーブルインデックス値ｉ２は、ハッシュテーブルインデックス値ｉ１よりも１だけ大きくてもよい。
【００６９】
図９から明らかなように、マッピングルールセレクタ７６０またはマッピングルールセレクタ８２８は、数値的な現在のコンテクスト値７５４、８２６ａを受信しうり、さらに、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリを評価することによって、数値的な現在のコンテクスト値が（「ｉｎｄｉｖｉｄｕａｌ（個々の）」重要な状態値または「ｉｍｐｒｏｐｅｒ（不適切な）」重要な状態値であるかどうかにかかわりなく）重要な状態値であるかどうかを、または、数値的な現在のコンテクスト値が（「ｉｎｄｉｖｉｄｕａｌ（個々の）」または「ｉｍｐｒｏｐｅｒ（不適切な）」）重要な状態値ｃ１、ｃ２によって囲まれる間隔９３２、９３４、９３６のうちの１つ内に位置するかどうかを決定しうる。数値的な現在のコンテクスト値が重要な状態値ｃ１、ｃ２に等しいかどうかのチェックと（数値的な現在のコンテクスト値が重要な状態値に等しくない場合において）数値的な現在のコンテクスト値が間隔９３２、９３４、９３６のどれに位置するかの評価との両方は、単一の共通のハッシュテーブル検索を用いて実行されうる。
【００７０】
さらに、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」の評価は、ハッシュテーブルインデックス値（例えばｉ１−１、ｉ１またはｉ２）を得るために用いられうる。このように、マッピングルールセレクタ７６０、８２８は、単一のハッシュテーブル７６２、８２９（例えばハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」）を評価することによって、重要な状態値（例えばｃ１またはｃ２）および／または間隔（例えば９３２、９３４、９３６）を指定するハッシュテーブルインデックス値（例えばｉ１−１、ｉ１またはｉ２）と数値的な現在のコンテクスト値が（重要な状態値にも指定される）重要なコンテクスト値であるかどうかに関する情報とを得るように構成されうる。
【００７１】
さらに、ハッシュテーブル７６２、８２９「ａｒｉ＿ｈａｓｈ＿ｍ」の評価において、数値的な現在のコンテクスト値が「ｓｉｇｎｉｆｉｃａｎｔ（重要な）」コンテクスト値（または「ｓｉｇｎｉｆｉｃａｎｔ（重要な）」状態値）でないことが見いだされている場合、ハッシュテーブル（「ａｒｉ＿ｈａｓｈ＿ｍ」）の評価から得られるハッシュテーブルインデックス値（例えばｉ１−１、ｉ１またはｉ２）は、数値的なコンテクスト値の間隔９３２、９３４、９３６と関連するマッピングルールインデックス値を得るために用いられうる。例えば、ハッシュテーブルインデックス値（例えばｉ１−１、ｉ１またはｉ２）は、数値的な現在のコンテクスト値が位置する間隔９３２、９３４、９３６と関連するマッピングルールインデックス値を表す付加的なマッピングテーブル（例えば「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」）のエントリを指定するために用いられうる。
【００７２】
詳しくは、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の詳細な議論について以下に述べる（このアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のための異なるオプションがあり、その例が図５ｅおよび図５ｆに示される）。
【００７３】
さらに、間隔のサイズは、状況によって異なりうる点に留意すべきである。場合によっては、数値的なコンテクスト値の間隔は、単一の数値的なコンテクスト値を含む。しかしながら、多くの場合、間隔は、複数の数値的なコンテクスト値を含みうる。
【００７４】
４．  図１０によるオーディオエンコーダ
【００７５】
図１０は、本発明の実施形態によるオーディオエンコーダ１０００の略ブロック図を示す。図１０によるオーディオエンコーダ１０００は、同一の信号および手段が図７および図１０に同一の参照番号で指定されるように、図７によるオーディオエンコーダ７００と類似している。
【００７６】
オーディオエンコーダ１０００は、入力されたオーディオ情報７１０を受信し、さらに、それに基づいて符号化されたオーディオ情報７１２を提供するように構成される。オーディオエンコーダ１０００は、周波数領域オーディオ表現７２２がスペクトル値のセットを含むように、入力されたオーディオ情報７１０の時間領域表現に基づいて周波数領域表現７２２を提供するように構成されるエネルギー圧縮の時間領域−周波数領域コンバータ７２０を含む。オーディオエンコーダ１０００は、（例えば複数の可変長コードワードを含みうる）符号化されたオーディオ情報７１２を得るために可変長コードワードを用いて、（周波数領域オーディオ表現７２２を形成するスペクトル値のセットから）スペクトル値またはその前処理されたバージョンを符号化するように構成される算術エンコーダ１０３０も含む。
【００７７】
算術エンコーダ１０３０は、コンテクスト状態に基づいてコード値上に（すなわち可変長コードワード上に）、スペクトル値または複数のスペクトル値を、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンの値をマップするように構成される。算術エンコーダ１０３０は、コンテクスト状態に基づいてコード値上への、スペクトル値のまたは複数のスペクトル値の、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールを選択するように構成される。算術エンコーダは、複数の前に符号化された（好ましくは、必ずではないが隣接する）スペクトル値に基づいて現在のコンテクスト状態を決定するように構成される。この目的のために、算術エンコーダは、符号化される１つ以上のスペクトル値と関連するコンテクスト状態を表す数値的な現在のコンテクスト値の数表現を得るために（例えば対応するマッピングルールを選択するために）、コンテクストサブ区域値に基づいて、１つ以上の前に符号化されたスペクトル値と関連するコンテクスト状態を表す数値的な前のコンテクスト値の数表現を修正するように（例えば対応するマッピングルールを選択するように）構成される。
【００７８】
明らかなように、コード値上への、スペクトル値のまたは複数のスペクトル値の、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンのマッピングは、マッピングルール情報７４２によって表されるマッピングルールを用いてスペクトル値符号化７４０によって実行されうる。状態トラッカ７５０は、コンテクスト状態を追跡するように構成されうる。状態トラッカ７５０は、符号化される１つ以上のスペクトル値の符号化と関連するコンテクスト状態を表す数値的な現在のコンテクスト値の数表現を得るために、コンテクストサブ区域値に基づいて、１つ以上の前に符号化されたスペクトル値の符号化と関連するコンテクスト状態を表す数値的な前のコンテクスト値の数表現を修正するように構成されうる。数値的な前のコンテクスト値の数表現の修正は、例えば、数値的な前のコンテクスト値および１つ以上のコンテクストサブ区域値を受信しさらに数値的な現在のコンテクスト値を提供する数表現修正器１０５２によって実行されうる。したがって、状態トラッカ１０５０は、例えば、数値的な現在のコンテクスト値の形式で、現在のコンテクスト状態を表す情報７５４を提供する。マッピングルールセレクタ１０６０は、コード値上への、スペクトル値のまたは複数のスペクトル値の、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルール、例えば累積度数テーブルを選択しうる。したがって、マッピングルールセレクタ１０６０は、マッピングルール情報７４２をスペクトル符号化７４０に提供する。
【００７９】
いくつかの実施形態において、状態トラッカ１０５０は、状態トラッカ７５０または状態トラッカ８２６と同一であってもよい点に留意すべきである。また、いくつかの実施形態において、マッピングルールセレクタ１０６０は、マッピングルールセレクタ７６０またはマッピングルールセレクタ８２８と同一であってもよい点にも留意すべきである。好ましくは、マッピングルールセレクタ８２８は、図２２（１）から図２２（４）のテーブル表現において定義されるように、マッピングルールの選択のためのハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を用いるように構成されうる。例えば、マッピングルールセレクタは、図７および図８に関して上述のような機能を実行しうる。
【００８０】
上記を要約すると、オーディオエンコーダ１０００は、時間領域−周波数領域コンバータによって提供される周波数領域オーディオ表現の算術符号化を実行する。算術符号化は、マッピングルール（例えば累積度数テーブル）が前に符号化されたスペクトル値に基づいて選択されるように、コンテクストに依存する。したがって、互いにおよび／または現在符号化されたスペクトル値（すなわち現在符号化されたスペクトル値の所定の環境内のスペクトル値）に時間および／または周波数（または少なくとも所定の環境内）において隣接するスペクトル値は、算術符号化によって評価される確率分布を調整するために、算術符号化において考慮される。
【００８１】
数値的な現在のコンテクスト値を決定するときに、１つ以上の前に符号化されたスペクトル値と関連するコンテクスト状態を表す数値的な前のコンテクスト値の数表現は、符号化される１つ以上のスペクトル値と関連するコンテクスト状態を表す数値的な現在のコンテクスト値の数表現を得るために、コンテクストサブ区域値に基づいて修正される。このアプローチは、完全な再計算が従来のアプローチにおいてかなりの量のリソースを消費するという数値的な現在のコンテクスト値の完全な再計算を回避することを可能にする。多種多様な可能性は、数値的な前のコンテクスト値の数表現のリスケーリングの組合せ、数値的な前のコンテクスト値の数表現へのまたは数値的な前のコンテクスト値の処理された数表現へのコンテクストサブ区域値またはそれから導き出される値の加算、コンテクストサブ区域値に基づく数値的な前のコンテクスト値の（全体の数表現よりはむしろ）数表現の部分の置換、その他を含む、数値的な前のコンテクスト値の数表現の修正のために存在する。このように、典型的に、数値的な現在のコンテクスト値の数値的な表現は、数値的な前のコンテクスト値の数表現に基づいて、さらに、少なくとも１つのコンテクストサブ区域値にも基づいて得られ、典型的に、演算の組合せは、例えば、加算演算、減算演算、乗算演算、分割演算、ブールのＡＮＤ演算、ブールのＯＲ演算、ブールのＮＡＮＤ演算、ブールのＮＯＲ演算、ブールの否定演算、補数演算またはシフト演算からの２つ以上の演算のように、数値的な前のコンテクスト値とコンテクストサブ区域値を組み合わせるために実行される。したがって、少なくとも数値的な前のコンテクスト値の数表現の部分は、数値的な前のコンテクスト値から数値的な現在のコンテクスト値を導き出すときに、（異なる位置への任意のシフトを除いて）典型的に不変に維持される。対照的に、数値的な前のコンテクスト値の数表現の他の部分は、１つ以上のコンテクストサブ区域値に基づいて変更される。このように、数値的な現在のコンテクスト値は、比較的少ない計算量で得ることができ、その一方で、数値的な現在のコンテクスト値の完全な再計算を回避する。
【００８２】
このように、マッピングルールセレクタ１０６０による使用によく適しさらに図２２（１）、図２２（２）、図２２（３）、図２２（４）のテーブル表現において定義されるようなハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍとの併用での使用に特によく適している意味のある数値的な現在のコンテクスト値を得ることができる。
【００８３】
したがって、効率的な符号化は、コンテクスト計算を十分に単純に保つことによって達成することができる。
【００８４】
５．  図１１によるオーディオデコーダ
【００８５】
図１１は、オーディオデコーダ１１００の略ブロック図を示す。オーディオデコーダ１１００は、同一の信号、手段および機能が同一の参照番号で指定されるように、図８によるオーディオデコーダ８００と類似している。
【００８６】
オーディオデコーダ１１００は、符号化されたオーディオ情報８１０を受信し、さらに、それに基づいて復号化されたオーディオ情報８１２を提供するように構成される。オーディオデコーダ１１００は、スペクトル値の算術的に符号化された表現８２１に基づいて複数の復号化されたスペクトル値８２２を提供するように構成される算術デコーダ１１２０を含む。オーディオデコーダ１１００は、復号化されたスペクトル値８２２を受信し、さらに、復号化されたオーディオ情報８１２を得るために、復号化されたスペクトル値８２２を用いて、復号化されたオーディオ情報を構成しうる時間領域オーディオ表現８１２を提供するように構成される周波数領域−時間領域コンバータ８３０も含む。
【００８７】
算術デコーダ１１２０は、１つ以上の復号化されたスペクトル値または少なくとも１つ以上の復号化されたスペクトル値の部分（例えば最上位ビットプレーン）を表すシンボルコード上に、スペクトル値の算術的に符号化された表現８２１のコード値をマップするように構成されるスペクトル値決定器８２４を含む。スペクトル値決定器８２４は、マッピングルール情報８２８ａによって表されうるマッピングルールに基づいてマッピングを実行するように構成されうる。マッピングルール情報８２８ａは、例えば、マッピングルールインデックス値を含みうり、または、累積度数テーブルのエントリの選択されたセットを含みうる。
【００８８】
算術デコーダ１１２０は、コンテクスト状態がコンテクスト状態情報１１２６ａによって表されうるコンテクスト状態に基づいて（１つ以上のスペクトル値を表す）シンボルコード上への、（スペクトル値の算術的に符号化された表現８２１によって表される）コード値のマッピングを表すマッピングルール（例えば累積度数テーブル）を選択するように構成される。コンテクスト状態情報１１２６ａは、数値的な現在のコンテクスト値の形式をとりうる。算術デコーダ１１２０は、複数の前に復号化されたスペクトル値８２２に基づいて現在のコンテクスト状態を決定するように構成される。この目的のために、前に復号化されたスペクトル値を表す情報を受信する状態トラッカ１１２６が用いられうる。算術デコーダは、復号化される１つ以上のスペクトル値と関連するコンテクスト状態を表す数値的な現在のコンテクスト値の数表現を得るために、コンテクストサブ区域値に基づいて、１つ以上の前に復号化されたスペクトル値と関連するコンテクスト状態を表す数値的な前のコンテクスト値の数表現を修正するように構成される。数値的な前のコンテクスト値の数表現の修正は、例えば、状態トラッカ１１２６の部分である数表現修正器１１２７によって実行されうる。したがって、現在のコンテクスト状態情報１１２６ａは、例えば、数値的な現在のコンテクスト値の形式で得られる。マッピングルールの選択は、現在のコンテクスト状態情報１１２６ａからマッピングルール情報８２８ａを導き出しさらにマッピングルール情報８２８ａをスペクトル値決定器８２４に提供するマッピングルールセレクタ１１２８によって実行されうる。好ましくは、マッピングルールセレクタ１１２８は、図２２（１）から図２２（４）のテーブル表現において定義されるように、マッピングルールの選択のためのハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を用いるうに構成されうる。例えば、マッピングルールセレクタは、図７および図８に関して上述のような機能を実行しうる。
【００８９】
オーディオ信号デコーダ１１００の機能に関して、算術デコーダ１１２０は、平均して、復号化されるスペクトル値によく適しているマッピングルール（例えば累積度数テーブル）を選択するように構成される点に留意すべきであり、マッピングルールは、現在のコンテクスト状態に基づいて選択されるので、複数の前に復号化されたスペクトル値に基づいて次々に決定される。したがって、復号化される隣接するスペクトル値間の統計依存を利用することができる。
【００９０】
さらに、復号化される１つ以上のスペクトル値の復号化と関連するコンテクスト状態を表す数値的な現在のコンテクスト値の数表現を得るために、コンテクストサブ区域値に基づいて、１つ以上の前に復号化されたスペクトル値の復号化と関連するコンテクスト状態を表す数値的な前のコンテクスト値の数表現を修正することによって、比較的少ない計算量で、マッピングルールインデックス値へのマッピングによく適しさらに図２２（１）、図２２（２）、図２２（３）、図２２（４）のテーブル表現において定義されるようなハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍとの併用での使用に特によく適している現在のコンテクスト状態に関する意味のある情報を得ることが可能である。少なくとも（おそらくビットシフトされまたはスケールされたバージョンにおいて）数値的な前のコンテクスト値の数表現の部分を維持するとともに、数値的な前のコンテクスト値において考慮されなかったが数値的な現在のコンテクスト値において考慮されるべきであるコンテクストサブ区域値に基づいて数値的な前のコンテクスト値の数表現の別の部分を更新することによって、数値的な現在のコンテクスト値を導き出す演算の数を相当に少なく保つことができる。また、隣接するスペクトル値を復号化するために用いられるコンテクストが典型的に類似しまたは相関するという事実を利用することが可能である。例えば、第１のスペクトル値の（または第１の複数のスペクトル値の）復号化のためのコンテクストは、前に復号化されたスペクトル値の第１のセットに依存する。第１のスペクトル値（またはスペクトル値の第１のセット）に隣接する第２のスペクトル値（またはスペクトル値の第２のセット）の復号化のためのコンテクストは、前に復号化されたスペクトル値の第２のセットを含みうる。第１のスペクトル値および第２のスペクトル値が（例えば関連した周波数に関して）隣接されると仮定されるので、第１のスペクトル値の符号化のためのコンテクストを決定するスペクトル値の第１のセットは、第２のスペクトル値の復号化のためのコンテクストを決定するスペクトル値の第２のセットといくらかのオーバーラップを含みうる。したがって、第２のスペクトル値の復号化のためのコンテクスト状態は、第１のスペクトル値の復号化のためのコンテクスト状態といくらかの相関を含むことが容易に理解できる。コンテクスト導出すなわち数値的な現在のコンテクスト値の導出の計算効率は、そのような相関を利用することによって達成することができる。隣接するスペクトル値の復号化のためのコンテクスト状態間の（例えば数値的な前のコンテクスト値によって表されるコンテクスト状態および数値的な現在のコンテクスト値によって表されるコンテクスト状態間の）相関は、数値的な前のコンテクスト状態の導出のために考慮されないコンテクストサブ区域値に依存する数値的な前のコンテクスト値のそれらの部分だけを修正することによって、さらに、数値的な前のコンテクスト値から数値的な現在のコンテクスト値を導き出すことによって、効率的に利用することができることが見いだされている。
【００９１】
結論として、ここに記載されている概念は、数値的な現在のコンテクスト値を導き出すときに、特に良好な計算効率を可能にする。
【００９２】
詳細が以下に記載される。
【００９３】
６．  図１２によるオーディオエンコーダ
【００９４】
図１２は、本発明の実施形態によるオーディオエンコーダの略ブロック図を示す。図１２によるオーディオエンコーダ１２００は、同一の手段、信号および機能が同一参照番号で指定されるように、図７によるオーディオエンコーダ７００と類似している。
【００９５】
オーディオエンコーダ１２００は、入力されたオーディオ情報７１０を受信し、さらに、それに基づいて符号化されたオーディオ情報７１２を提供するように構成される。オーディオエンコーダ１２００は、周波数領域オーディオ表現７２２がスペクトル値のセットを含むように、入力されたオーディオ情報７１０の時間領域オーディオ表現に基づいて周波数領域オーディオ表現７２２を提供するように構成されるエネルギー圧縮の時間領域−周波数領域コンバータ７２０を含む。オーディオエンコーダ１２００は、（例えば複数の可変長コードワードを含みうる）符号化されたオーディオ情報７１２を得るために可変長コードワードを用いて、（周波数領域オーディオ表現７２２を形成するスペクトル値のセットから）スペクトル値または複数のスペクトル値、または、その前処理されたバージョンを符号化するように構成される算術エンコーダ１２３０も含む。
【００９６】
算術エンコーダ１２３０は、コンテクスト状態に基づいて、コード値上に（すなわち可変長コードワード上に）、スペクトル値または複数のスペクトル値、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンの値をマップするように構成される。算術エンコーダ１２３０は、コンテクスト状態に基づいて、コード値上への、スペクトル値のまたは複数のスペクトル値の、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルールを選択するように構成される。算術エンコーダは、複数の前に符号化された（好ましくは、必ずではないが、隣接する）スペクトル値に基づいて現在のコンテクスト状態を決定するように構成される。この目的のために、算術エンコーダは、前に符号化されたスペクトル値に基づいて複数のコンテクストサブ区域値を得るように、前記コンテクストサブ区域値を格納するように、さらに、格納されたコンテクストサブ区域値に基づいて符号化される１つ以上のスペクトル値と関連する数値的な現在のコンテクスト値を導き出すように構成される。さらに、算術エンコーダは、複数の前に符号化されたスペクトル値と関連する共通のコンテクストサブ区域値を得るために、複数の前に符号化されたスペクトル値によって形成されるベクトルのノルムを計算するように構成される。
【００９７】
明らかなように、コード値上への、スペクトル値のまたは複数のスペクトル値の、または、スペクトル値のまたは複数のスペクトル値の最上位ビットプレーンのマッピングは、マッピングルール情報７４２によって表されるマッピングルールを用いてスペクトル値符号化７４０によって実行されうる。状態トラッカ１２５０は、コンテクスト状態を追跡するように構成されうり、さらに、複数の前に符号化されたスペクトル値と関連する共通のコンテクストサブ区域値を得るために、複数の前に符号化されたスペクトル値によって形成されるベクトルのノルムを計算するためにコンテクストサブ区域値コンピュータ１２５２を含みうる。状態トラッカ１２５０は、好ましくは、コンテクストサブ区域値コンピュータ１２５２によって実行されるコンテクストサブ区域値の前記計算の結果に基づいて現在のコンテクスト状態を決定するようにも構成される。したがって、状態トラッカ１２５０は、現在のコンテクスト状態を表す情報１２５４を提供する。マッピングルールセレクタ１２６０は、コード値上への、スペクトル値のまたはスペクトル値の最上位ビットプレーンのマッピングを表すマッピングルール、例えば累積度数テーブルを選択しうる。したがって、マッピングルールセレクタ１２６０は、マッピングルール情報７４２をスペクトル符号化７４０に提供する。好ましくは、マッピングルールセレクタ１２６０は、図２２（１）から図２２（４）のテーブル表現において定義されるように、マッピングルールの選択のためのハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を用いるように構成されうる。例えば、マッピングルールセレクタは、図７および図８に関して上述のような機能を実行しうる。
【００９８】
上記を要約すると、オーディオエンコーダ１２００は、時間領域−周波数領域コンバータ７２０によって提供される周波数領域オーディオ表現の算術符号化を実行する。算術符号化は、マッピングルール（例えば累積度数テーブル）が前に符号化されたスペクトル値に基づいて選択されるように、コンテクストに依存する。したがって、互いにおよび／または現在符号化されたスペクトル値（すなわち現在符号化されたスペクトル値の所定の環境内のスペクトル値）に時間および／または周波数（または少なくとも所定の環境内）において隣接するスペクトル値は、算術符号化によって評価される確率分布を調整するために、算術符号化において考慮される。
【００９９】
数値的な現在のコンテクスト値を提供するために、複数の前に符号化されたスペクトル値と関連するコンテクストサブ区域値は、複数の前に符号化されたスペクトル値によって形成されるベクトルのノルムの計算に基づいて得られる。数値的な現在のコンテクスト値の決定の結果は、現在のコンテクスト状態の選択においてすなわちマッピングルールの選択において適用される。
【０１００】
複数の前に符号化されたスペクトル値によって形成されるベクトルのノルムを計算することによって、符号化される１つ以上のスペクトル値のコンテクストの部分を表す意味のある情報を得ることができ、前に符号化されたスペクトル値のベクトルのノルムは、典型的に比較的少数のビットで表すことができる。このように、数値的な現在のコンテクスト値の導出において後の使用のために格納される必要があるコンテクスト情報の量は、コンテクストサブ区域値の計算のための上述のアプローチを適用することによって十分に少なく保つことができる。前に符号化されたスペクトル値のベクトルのノルムは、典型的にコンテクストの状態に関する最も重要な情報を含むことが見いだされている。対照的に、前記前に符号化されたスペクトル値の符号は、後の使用のために格納される情報の量を低減するために前に復号化されたスペクトル値の符号を無視することに意味があるように、典型的にコンテクストの状態に与える下位の影響を含むことが見いだされている。また、前に符号化されたスペクトル値のベクトルのノルムの計算は、典型的にノルムの計算によって得られる平均効果が実質的に影響を受けないコンテクスト状態に関する最も重要な情報をそのままにするように、コンテクストサブ区域値の導出のための合理的なアプローチであることが見いだされている。要約すると、コンテクストサブ区域値コンピュータ１２５２によって実行されるコンテクストサブ区域値計算は、コンパクトなコンテクストサブ区域情報を記憶および後の使用に提供することを可能にし、コンテクスト状態に関する最も関連した情報は、情報の量の低減にもかかわらず保存される。
【０１０１】
さらに、上述のように得られる数値的な現在のコンテクスト値は、図２２（１）から図２２（４）のテーブル表現において定義されるように、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を用いてマッピングルールの選択に非常によく適していることが見いだされている。例えば、マッピングルールセレクタは、図７および図８に関して上述のような機能を実行しうる。
【０１０２】
したがって、入力されたオーディオ情報７１０の効率的な符号化を達成することができ、その一方で、算術エンコーダ１２３０によって格納される計算量およびデータの量を十分に少なく保つ。
【０１０３】
７．  図１３によるオーディオデコーダ
【０１０４】
図１３は、オーディオデコーダ１３００の略ブロック図を示す。オーディオデコーダ１３００は、図８によるオーディオデコーダ８００および図１１によるオーディオデコーダ１１００と類似しているので、同一の手段、信号および機能が同一の番号で指定される。
【０１０５】
オーディオデコーダ１３００は、符号化されたオーディオ情報８１０を受信し、さらに、それに基づいて復号化されたオーディオ情報８１２を提供するように構成される。オーディオデコーダ１３００は、スペクトル値の算術的に符号化された表現８２１に基づいて複数の復号化されたスペクトル値８２２を提供するように構成される算術デコーダ１３２０を含む。オーディオデコーダ１３００は、復号化されたスペクトル値８２２を受信し、さらに、復号化オーディオ情報８１２を得るために、復号化されたスペクトル値８２２を用いて、復号化されたオーディオ情報を構成しうる時間領域オーディオ表現８１２を提供するように構成される周波数領域時間領域コンバータ８３０も含む。
【０１０６】
算術デコーダ１３２０は、１つ以上の復号化されたスペクトル値または少なくとも１つ以上の復号化されたスペクトル値の部分（例えば最上位ビットプレーン）を表すシンボルコード上に、スペクトル値の算術的に符号化された表現８２１のコード値をマップするように構成されるスペクトル値決定器８２４を含む。スペクトル値決定器８２４は、マッピングルール情報８２８ａによって表されるマッピングルールに基づいてマッピングを実行するように構成されうる。マッピングルール情報８２８ａは、例えば、マッピングルールインデックス値または累積度数テーブルのエントリの選択されたセットを含みうる。
【０１０７】
算術デコーダ１３２０は、（コンテクスト状態情報１３２６ａによって表されうる）コンテクスト状態に基づいて、（１つ以上のスペクトル値を表す）シンボルコード上への、（スペクトル値の算術的に符号化された表現８２１によって表される）コード値のマッピングを表すマッピングルール（例えば累積度数テーブル）を選択するように構成される。好ましくは、算術デコーダ１３２０は、図２２（１）から図２２（４）のテーブル表現において定義されるように、マッピングルールの選択のためのハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」を用いるように構成されうる。例えば、算術デコーダ１３２０は、図７および図８に関して上述のような機能を実行しうる。算術デコーダ１３２０は、複数の前に復号化されたスペクトル値８２２に基づいて現在のコンテクスト状態を決定するように構成される。この目的のために、前に復号化されたスペクトル値を表す情報を受信する状態トラッカ１３２６が用いられうる。算術デコーダは、前に復号化されたスペクトル値に基づいて複数のコンテクストサブ区域値を得るように、さらに、前記コンテクストサブ区域値を格納するようにも構成される。算術デコーダは、格納されたコンテクストサブ区域値に基づいて復号化される１つ以上のスペクトル値と関連する数値的な現在のコンテクスト値を導き出すように構成される。算術デコーダ１３２０は、複数の前に復号化されたスペクトル値と関連する共通のコンテクストサブ区域値を得るために、複数の前に復号化されたスペクトル値によって形成されるベクトルのノルムを計算するように構成される。
【０１０８】
複数の前の符号化されたスペクトル値によって形成されるベクトルのノルムの計算は、複数の前に復号化されたスペクトル値と関連する共通のコンテクストサブ区域値を得るために、例えば、状態トラッカ１３２６の部分であるコンテクストサブ区域値コンピュータ１３２７によって実行されうる。したがって、現在のコンテクスト状態情報１３２６ａは、コンテクストサブ区域値に基づいて得られ、状態トラッカ１３２６は、好ましくは、格納されたコンテクストサブ区域値に基づいて復号化される１つ以上のスペクトル値と関連する数値的な現在のコンテクスト値を提供する。マッピングルールの選択は、現在のコンテクスト状態情報１３２６ａからマッピングルール情報８２８ａを導き出しさらにマッピングルール情報８２８ａをスペクトル値決定器８２４に提供するマッピングルールセレクタ１３２８によって実行されうる。
【０１０９】
オーディオ信号デコーダ１３００の機能に関して、算術デコーダ１３２０は、平均して、復号化されるスペクトル値によく適しているマッピングルール（例えば累積度数テーブル）を選択するように構成される点に留意すべきであり、マッピングルールは、現在のコンテクスト状態に基づいて選択されるので、複数の前に復号化されたスペクトル値に基づいて次々に決定される。したがって、復号化される隣接するスペクトル値間の統計依存を利用することができる。
【０１１０】
しかしながら、メモリ使用に関して、数値的なコンテクスト値の決定において後の使用のために、複数の前に復号化されたスペクトル値に形成されるベクトルのノルムの計算に基づくコンテクストサブ区域値を格納することが効率的であることが見いだされている。そのようなコンテクストサブ区域値は、最も関連したコンテクスト情報をまだ含むことも見いだされている。したがって、状態トラッカ１３２６によって用いられる概念は、符号化効率、計算効率および記憶効率間の良好な妥協を構成する。
【０１１１】
詳細が以下に記載される。
【０１１２】
８．  図１によるオーディオエンコーダ
【０１１３】
以下において、本発明の実施形態によるオーディオエンコーダが記載される。図１は、そのようなオーディオエンコーダ１００の略ブロック図を示す。
【０１１４】
オーディオエンコーダ１００は、入力されたオーディオ情報１１０を受信し、さらに、それに基づいて符号化されたオーディオ情報を構成するビットストリーム１１２を提供するように構成される。オーディオエンコーダ１００は、入力されたオーディオ情報１１０を受信し、さらに、それに基づいて前処理された入力されたオーディオ情報１１０ａを提供するように構成されるプリプロセッサ１２０を任意に含む。オーディオエンコーダ１００は、信号コンバータにも指定されるエネルギー圧縮の時間領域−周波数領域信号変換器１３０も含む。信号コンバータ１３０は、入力されたオーディオ情報１１０、１１０ａを受信し、さらに、それに基づいて好ましくはスペクトル値のセットの形式をとる周波数領域オーディオ情報１３２を提供するように構成される。例えば、信号変換器１３０は、入力されたオーディオ情報１１０、１１０ａのフレーム（例えば時間領域サンプルのブロック）を受信し、さらに、それぞれのオーディオフレームのオーディオコンテンツを表すスペクトル値のセットを提供するように構成されうる。加えて、信号変換器１３０は、入力されたオーディオ情報１１０、１１０ａの複数の後の、オーバーラップするまたはでオーバーラップしないオーディオフレームを受信し、さらに、それに基づいてスペクトル値の一連の後のセット、それぞれのフレームと関連するスペクトル値のセットを含む時間周波数領域オーディオ表現を提供するように構成されうる。
【０１１５】
エネルギー圧縮の時間領域−周波数領域信号変換器１３０は、異なる、オーバーラップするまたはオーバーラップしない周波数レンジと関連するスペクトル値を提供するエネルギー圧縮のフィルタバンクを含みうる。例えば、信号変換器１３０は、変換ウィンドウを用いて入力されたオーディオ情報１１０、１１０ａ（またはそのフレーム）をウィンドウ化し、さらに、ウィンドウ化された入力されたオーディオ情報１１０、１１０ａの（またはそのウィンドウ化されたフレームの）修正離散コサイン変換を実行するように構成されるウィンドウ化ＭＤＣＴ変換器１３０ａを含みうる。したがって、周波数領域オーディオ表現１３２は、入力されたオーディオ情報のフレームと関連するＭＤＣＴ係数の形式で例えば１０２４のスペクトル値のセットを含みうる。
【０１１６】
オーディオエンコーダ１００は、周波数領域オーディオ表現１３２を受信し、さらに、それに基づいて後処理された周波数領域オーディオ表現１４２を提供するように構成されるスペクトルポストプロセッサ１４０をさらに任意に含みうる。スペクトルポストプロセッサ１４０は、例えば、テンポラルノイズシェーピングおよび／または長期予測および／または従来技術において公知の他のいかなるスペクトル後処理を実行するように構成されうる。オーディオエンコーダは、周波数領域オーディオ表現１３２またはその後処理されたバージョン１４２を受信し、さらに、スケールされ量子化された周波数領域オーディオ表現１５２を提供するように構成されるスケーラ／量子化器１５０をさらに任意に含み。
【０１１７】
オーディオエンコーダ１００は、入力されたオーディオ情報１１０（またはその後処理されたバージョン１１０ａ）を受信し、さらに、それに基づいてエネルギー圧縮の時間領域−周波数領域信号変換器１３０の制御のために、任意のスペクトルポストプロセッサ１４０の制御のためにおよび／または任意のスケーラ／量子化器１５０の制御のために用いられうる任意の制御情報を提供するように構成される心理音響モデルプロセッサ１６０をさらに任意に含む。例えば、心理音響モデルプロセッサ１６０は、入力されたオーディオ情報１１０、１１０ａのどの成分がオーディオコンテンツの人間の知覚にとって特に重要であるかさらに入力されたオーディオ情報１１０、１１０ａのどの成分がオーディオコンテンツの知覚にとってそれほど重要でないかを決定するすために、入力されたオーディオ情報を解析するように構成されうる。したがって、心理音響モデルプロセッサ１６０は、スケーラ／量子化器１５０による周波数領域オーディオ表現１３２、１４２のスケーリングおよび／またはスケーラ／量子化器１５０によって適用される量子化解像度を調整するためにオーディオエンコーダ１００によって用いられる制御情報を提供しうる。したがって、知覚的に重要なスケールファクタバンド（すなわちオーディオコンテンツの人間の知覚にとって特に重要である隣接するスペクトル値のグループ）は、大きいスケーリングファクタでスケールされさらに比較的高解像度で量子化され、その一方で、知覚的にそれほど重要でないスケールファクタバンド（すなわち隣接するスペクトル値のグループ）は、比較的より小さいスケーリングファクタでスケールされさらに比較的より低い量子化解像度で量子化される。したがって、知覚的により重要な周波数のスケールされたスペクトル値は、典型的に知覚的にそれほど重要でない周波数のスペクトル値よりも著しく大きい。
【０１１８】
オーディオエンコーダは、周波数領域オーディオ表現１３２のスケールされ量子化されたバージョン１５２（または、その代わりに、周波数領域オーディオ表現１３２の後処理されたバージョン１４２または周波数領域オーディオ表現１３２そのもの）を受信し、さらに、算術コードワード情報が周波数領域オーディオ表現１５２を表すように、それに基づいて算術コードワード情報１７２ａを提供するように構成される算術エンコーダ１７０も含む。
【０１１９】
オーディオエンコーダ１００は、算術コードワード情報１７２ａを受信するように構成されるビットストリームペイロードフォーマッタ１９０も含む。ビットストリームペイロードフォーマッタ１９０は、例えば、どのスケールファクタがスケーラ／量子化器１５０によって適用されるかを表すスケールファクタ情報ように、典型的に付加的な情報を受信するようにも構成される。加えて、ビットストリームペイロードフォーマッタ１９０は、他の制御情報を受信するように構成されうる。ビットストリームペイロードフォーマッタ１９０は、以下に述べられる所望のビットストリーム構文に従うビットストリームをアセンブルすることによって受信された情報に基づいてビットストリーム１１２を提供するように構成される。
【０１２０】
以下において、算術エンコーダ１７０に関する詳細が記載される。算術エンコーダ１７０は、周波数領域オーディオ表現１３２の複数の後処理されスケールされ量子化されたスペクトル値を受信するように構成される。算術エンコーダは、スペクトル値からまたは２つのスペクトル値から、最上位ビットプレーンｍを導き出すように構成される最上位ビットプレーン抽出器１７４含む。最上位ビットプレーンは、スペクトル値の最上位ビットである１つ以上のビット（例えば２つまたは３つのビット）を含みうる点にここで留意すべきである。このように、最上位ビットプレーン抽出器１７４は、スペクトル値の最上位ビットプレーン値１７６を提供する。
【０１２１】
しかしながら、その代わりに、最上位ビットプレーン抽出器１７４は、複数のスペクトル値（例えばスペクトル値のａおよびｂ）の最上位ビットプレーンを組み合わせる組み合わされた最上位ビットプレーン値ｍを提供しうる。スペクトル値ａの最上位ビットプレーンは、ｍで指定される。その代わりに、複数のスペクトル値ａ、ｂの組み合わされた最上位ビットプレーン値は、ｍで指定される。
【０１２２】
算術エンコーダ１７０は、最上位ビットプレーン値ｍを表す算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を決定するように構成される第１のコードワード決定器１８０も含む。任意に、コードワード決定器１８０は、例えば、どれくらいの下位ビットプレーンが利用できるかを示す（さらに、したがって、最上位ビットプレーンの数値的な重みを示す）１つ以上のエスケープコードワード（ここに「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」とも指定される）を提供することもできる。第１のコードワード決定器１８０は、累積度数テーブルインデックスｐｋｉを有する（またはによって参照される）選択された累積度数テーブルを用いて最上位ビットプレーン値ｍと関連するコードワードを提供するように構成されうる。
【０１２３】
どの累積度数テーブルが選択されるべきかに関して決定するために、算術エンコーダは、好ましくは、例えば、どのスペクトル値が前に符号化されたかを観察することによって、算術エンコーダの状態を追跡するように構成される状態トラッカ１８２を含む。したがって、状態トラッカ１８２は、状態情報１８４、例えば「ｓ」または「ｔ」または「ｃ」で指定される状態値を提供する。算術エンコーダ１７０は、状態情報１８４を受信し、さらに、選択された累積度数テーブルを表す情報１８８をコードワード決定器１８０に提供するように構成される累積度数テーブルセレクタ１８６も含む。例えば、累積度数テーブルセレクタ１８６は、どの累積度数テーブルが、６４の累積度数テーブルのセットから、コードワード決定器によって使用のために選択されるかを表す累積度数テーブルインデックス「ｐｋｉ」を提供しうる。その代わりに、累積度数テーブルセレクタ１８６は、全体の選択された累積度数テーブルまたはサブテーブルをコードワード決定器に提供しうる。このように、コードワード決定器１８０は、最上位ビットプレーン値ｍを符号化する実際のコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］が、ｍの値および累積度数テーブルインデックスｐｋｉに、さらにしたがって現在の状態情報１８４に依存するように、最上位ビットプレーン値ｍのコードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］の提供のための選択された累積度数テーブルまたはサブテーブルを用いることができる。符号化処理および得られたコードワード形式に関する詳細が以下に記載される。
【０１２４】
しかしながら、いくつかの実施形態において、状態トラッカ１８２は、状態トラッカ７５０、状態トラッカ１０５０または状態トラッカ１２５０と同一であってもよく、または、状態トラッカ７５０、状態トラッカ１０５０または状態トラッカ１２５０の機能をとってもよい点に留意すべきである。また、累積度数テーブルセレクタ１８６は、いくつかの実施形態において、マッピングルールセレクタ７６０、マッピングルールセレクタ１０６０またはマッピングルールセレクタ１２６０と同一であってもよく、または、マッピングルールセレクタ７６０、マッピングルールセレクタ１０６０またはマッピングルールセレクタ１２６０の機能をとってもよい点にも留意すべきである。さらに、第１のコードワード決定器１８０は、いくつかの実施形態において、スペクトル値符号化７４０と同一であってもよく、または、その機能をとってもよい。
【０１２５】
算術エンコーダ１７０は、符号化される１つ以上のスペクトル値が最上位ビットプレーンだけを用いて符号化できる値の範囲を超える場合、スケールされ量子化された周波数領域オーディオ表現１５２から１つ以上の下位ビットプレーンを抽出するように構成される下位ビットプレーン抽出器１８９ａをさらに含む。下位ビットプレーンは、所望にように、１つ以上のビットを含みうる。したがって、下位ビットプレーン抽出器１８９ａは、下位ビットプレーン情報１８９ｂを提供する。算術エンコーダ１７０は、下位ビットプレーン情報１８９ｂを受信し、さらに、それに基づいて０または１つ以上の下位ビットプレーンのコンテンツを表す０または１つ以上のコードワード「ａｃｏｄ＿ｒ」を提供するように構成される第２のコードワード決定器１８９ｃも含む。第２のコードワード決定器１８９ｃは、下位ビットプレーン情報１８９ｂから下位ビットプレーンコードワード「ａｃｏｄ＿ｒ」を導き出すために算術符号化アルゴリズムまたは他のいかなる符号化アルゴリズムを適用するように構成されうる。
【０１２６】
下位ビットプレーンの数は、符号化されるスケールされ量子化されたスペクトル値が比較的小さい場合、下位ビットプレーンが全くないように、符号化される現在のスケールされ量子化されたスペクトル値が中間の範囲にある場合、１つの下位ビットプレーンがあるように、さらに、符号化されるスケールされ量子化されたスペクトル値が比較的大きい値をとる場合、複数の下位ビットプレーンがあるように、スケールされ量子化されたスペクトル値１５２の値に基づいて変化しうる点にここで留意すべきである。
【０１２７】
上記を要約すると、算術エンコーダ１７０は、階層的な符号化処理を用いて、情報１５２によって表されるスケールされ量子化されたスペクトル値を符号化するように構成される。１つ以上のスペクトル値の（例えばスペクトル値ごとに１、２または３ビットを含む）最上位ビットプレーンは、最上位ビットプレーン値ｍの算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」を得るために符号化される。１つ以上のスペクトル値の１つ以上の下位ビットプレーン（例えば１、２または３ビットを含む下位ビットプレーンのそれぞれ）は、１つ以上のコードワード「ａｃｏｄ＿ｒ」を得るために符号化される。最上位ビットプレーンを符号化するときに、最上位ビットプレーンの値ｍは、コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］にマップされる。この目的のために、６４の異なる累積度数テーブルは、算術エンコーダ１７０の状態に基づいてすなわち前に符号化されたスペクトル値に基づいて値ｍの符号化のために利用できる。したがって、コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」が得られる。加えて、１つ以上のコードワード「ａｃｏｄ＿ｒ」は、１つ以上の下位ビットプレーンがある場合、ビットストリームに提供されさらに含められる。
【０１２８】
リセットの説明
【０１２９】
オーディオエンコーダ１００は、ビットレートにおける改良がコンテクストをリセットすることによって、例えば状態インデックスをデフォルト値に設定することによって得ることができるかどうかを決定するように任意に構成されうる。したがって、オーディオエンコーダ１００は、算術符号化のためのコンテクストがリセットされるどうかを示し、さらに、対応するデコーダにおいて算術復号化するためのコンテクストがリセットされるべきであるかどうかも示すリセット情報（例えば指名された「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」）を提供するように構成されうる。
【０１３０】
ビットストリーム形式および適用された累積度数テーブルに関する詳細が以下に記載される。
【０１３１】
９．  図２によるオーディオデコーダ
【０１３２】
以下において、本発明の実施形態によるオーディオデコーダが記載される。図２は、そのようなオーディオデコーダ２００の略ブロック図を示す。
【０１３３】
オーディオデコーダ２００は、符号化されたオーディオ情報を表し、さらに、オーディオエンコーダ１００によって提供されるビットストリーム１１２と同一でありうるビットストリーム２１０を受信するように構成される。オーディオデコーダ２００は、ビットストリーム２１０に基づいて復号化されたオーディオ情報２１２を提供する。
【０１３４】
オーディオデコーダ２００は、ビットストリーム２１０を受信し、さらに、ビットストリーム２１０から符号化された周波数領域オーディオ表現２２２を抽出するように構成される任意のビットストリームペイロードデフォーマッタ２２０を含む。例えば、ビットストリームペイロードデフォーマッタ２２０は、ビットストリーム２１０から、例えば、周波数領域オーディオ表現の、スペクトル値ａのまたは複数のスペクトル値ａ、ｂの最上位ビットプレーン値ｍを表す算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」およびスペクトル値ａのまたは複数のスペクトル値ａ、ｂの下位ビットプレーンのコンテンツを表すコードワード「ａｃｏｄ＿ｒ」のような算術的に符号化されたスペクトルデータを抽出するように構成されうる。このように、符号化された周波数領域オーディオ表現２２２は、スペクトル値の算術的に符号化された表現を構成する（または含む）。ビットストリームペイロードデフォーマッタ２２０は、ビットストリームから図２に示されない付加的な制御情報を抽出するようにさらに構成される。加えて、ビットストリームペイロードデフォーマッタは、ビットストリーム２１０から、算術リセットフラグまたは「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」にも指定される状態リセット情報２２４を抽出するように任意に構成される。
【０１３５】
オーディオデコーダ２００は、「ｓｐｅｃｔｒａｌ  ｎｏｉｓｅｌｅｓｓ  ｄｅｃｏｒｄｅｒ（スペクトルノイズレスデコーダ）」にも指定される算術デコーダ２３０を含む。算術デコーダ２３０は、符号化された周波数領域オーディオ表現２２２および任意に状態リセット情報２２４を受信するように構成される。算術デコーダ２３０は、スペクトル値の復号化された表現を含みうる復号化された周波数領域オーディオ表現２３２を提供するようにも構成される。例えば、復号化された周波数領域オーディオ表現２３２は、符号化された周波数領域オーディオ表現２２２によって表されるスペクトル値の復号化された表現を含みうる。
【０１３６】
オーディオデコーダ２００は、復号化された周波数領域オーディオ表現２３２を受信し、さらに、それに基づいて逆に量子化されリスケールされた周波数領域オーディオ表現２４２を提供するように構成される任意の逆量子化器／リスケーラ２４０も含む。
【０１３７】
オーディオデコーダ２００は、逆に量子化されリスケールされた周波数領域オーディオ表現２４２を受信し、さらに、それに基づいて逆に量子化されリスケールされた周波数領域オーディオ表現２４２の前処理されたバージョン２５２を提供するように構成される任意のスペクトルプリプロセッサ２５０も含む。オーディオデコーダ２００は、「ｓｉｇｎａｌ  ｃｏｎｖｅｒｔｅｒ（信号コンバータ）」にも指定される周波数領域−時間領域信号変換器２６０も含む。信号変換器２６０は、逆に量子化されリスケールされた周波数領域オーディオ表現２４２の前処理されたバージョン２５２（または、その代わりに、逆に量子化されリスケールされた周波数領域オーディオ表現２４２または復号化された周波数領域オーディオ表現２３２）を受信し、さらに、それに基づいてオーディオ情報の時間領域表現２６２を提供するように構成される。周波数領域−時間領域信号変換器２６０は、例えば、逆修正離散コサイン変換（ＩＭＤＣＴ）および適切なウィンドウ化（その他に例えばオーバーラップ加算のような他の補助機能）を実行するための変換器を含みうる。
【０１３８】
オーディオデコーダ２００は、オーディオ情報の時間領域表現２６２を受信し、さらに、時間領域後処理を用いて復号化されたオーディオ情報２１２を得るように構成される任意の時間領域ポストプロセッサ２７０をさらに含みうる。しかしながら、後処理が省略される場合、時間領域表現２６２は、復号化されたオーディオ情報２１２と同一であってもよい。
【０１３９】
逆量子化器／リスケーラ２４０、スペクトルプリプロセッサ２５０、周波数領域−時間領域信号変換器２６０および時間領域ポストプロセッサ２７０は、ビットストリームペイロードデフォーマッタ２２０によってビットストリーム２１０から抽出される制御情報に基づいて制御されうる点にここで留意すべきである。
【０１４０】
オーディオデコーダ２００の全体の機能を要約すると、復号化された周波数領域オーディオ表現２３２、例えば符号化されたオーディオ情報のオーディオフレームと関連するスペクトル値のセットは、算術デコーダ２３０を用いて符号化された周波数領域表現２２２に基づいて得られうる。その後、ＭＤＣＴ係数であってもよい例えば１０２４のスペクトル値のセットは、逆に量子化され、リスケールされさらに前処理される。したがって、スペクトル値（例えば１０２４のＭＤＣＴ係数）の逆に量子化され、リスケールされさらにスペクトル的に前処理されたセットが得られる。その後、オーディオフレームの時間領域表現は、周波数領域値（例えばＭＤＣＴ係数）の逆に量子化され、リスケールされさらにスペクトル的に前処理されたセットから導き出される。したがって、オーディオフレームの時間領域表現が得られる。所定のオーディオフレームの時間領域表現は、前のおよび／または後のオーディオフレームの時間領域表現と組み合わされうる。例えば、後のオーディオフレームの時間領域表現間のオーバーラップ加算は、隣接するオーディオフレームの時間領域表現間の遷移を滑らかにするために、さらに、エイリアシングキャンセルを得るために実行されうる。復号化された時間周波数領域オーディオ表現２３２に基づく復号化されたオーディオ情報２１２の再構成に関して詳しくは、例えば、詳細な議論が示される国際規格ＩＳＯ／ＩＥＣ１４４９６−３、パート３、サブパート４について述べる。しかしながら、他のより精巧なオーバーラップおよびエイリアシングキャンセルが用いられうる。
【０１４１】
以下において、算術デコーダ２３０に関するいくつかの詳細が説明される。算術デコーダ２３０は、最上位ビットプレーン値ｍを表す算術コードワードａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］を受信するように構成される最上位ビットプレーン決定器２８４を含む。最上位ビットプレーン決定器２８４は、算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」から最上位ビットプレーン値ｍを導き出すための複数の６４の累積度数テーブルを含むセットから累積度数テーブルを用いるように構成されうる。
【０１４２】
最上位ビットプレーン決定器２８４は、コードワードａｃｏｄ＿ｍに基づいて１つ以上のスペクトル値の最上位ビットプレーンの値２８６を導き出すように構成される。算術デコーダ２３０は、スペクトル値の１つ以上の下位ビットプレーンを表す１つ以上のコードワード「ａｃｏｄ＿ｒ」を受信するように構成される下位ビットプレーン決定器２８８をさらに含む。したがって、下位ビットプレーン決定器２８８は、１つ以上の下位ビットプレーンの復号化された値２９０を提供するように構成される。オーディオデコーダ２００は、そのような下位ビットプレーンが現在のスペクトル値に利用できる場合、１つ以上のスペクトル値の最上位ビットプレーンの復号化された値２８６およびスペクトル値の１つ以上の下位ビットプレーンの復号化された値２９０を受信するように構成されるビットプレーンコンバイナ２９２も含む。したがって、ビットプレーンコンバイナ２９２は、復号化された周波数領域オーディオ表現２３２の部分である復号化されたスペクトル値を提供する。当然、算術デコーダ２３０は、オーディオコンテンツの現在のフレームと関連する復号化されたスペクトル値のフルセットを得るために、典型的に複数のスペクトル値を提供するように構成される。
【０１４３】
算術デコーダ２３０は、算術デコーダの状態を表す状態インデックス２９８に基づいて６４の累積度数テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］（０≦ｐｋｉ≦６３で、１７のエントリを有するそれぞれのテーブルａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］）のうちの１つを選択するように構成される累積度数テーブルセレクタ２９６をさらに含む。累積度数テーブルのうちの１つを選択するために、累積度数テーブルセレクタは、好ましくは、図２２（１）、図２２（２）、図２２（３）、図２２（４）のテーブル表現によって定義されるようなハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍ［７４２］を評価する。ハッシュテーブルａｒｉ＿ｈａｓｈ＿ｍ［７４２］のこの評価に関する詳細が以下に記載される。算術デコーダ２３０は、前に復号化されたスペクトル値に基づいて算術デコーダの状態を追跡するように構成される状態トラッカ２９９をさらに含む。状態情報は、状態リセット情報２２４に応じてデフォルト状態情報に任意にリセットされうる。したがって、累積度数テーブルセレクタ２９６は、コードワード「ａｃｏｄ＿ｍ」に基づいて最上位ビットプレーン値ｍの復号化の際においてアプリケーションのために、選択された累積度数テーブルのインデックス（例えばｐｋｉ）、または、選択された累積度数テーブルまたはサブテーブルそのものを提供するように構成される。
【０１４４】
オーディオデコーダ２００の機能を要約すると、オーディオデコーダ２００は、ビットレート効率的に符号化された周波数領域オーディオ表現２２２を受信し、さらに、それに基づいて復号化された周波数領域オーディオ表現を得るように構成される。符号化された周波数領域オーディオ表現２２２に基づいて復号化された周波数領域オーディオ表現２３２を得るために用いられる算術デコーダ２３０において、隣接するスペクトル値の最上位ビットプレーンの値の異なる組合せの確率は、累積度数テーブルを適用するように構成される算術デコーダ２８０を用いることによって利用される。換言すれば、スペクトル値間の統計依存は、前に計算された復号化されたスペクトル値を観察することによって得られる状態インデックス２９８に基づいて６４の異なる累積度数テーブルを含むセットから異なる累積度数テーブルを選択することによって利用される。
【０１４５】
状態トラッカ２９９は、状態トラッカ８２６、状態トラッカ１１２６または状態トラッカ１３２６と同一であってもよく、または、状態トラッカ８２６、状態トラッカ１１２６または状態トラッカ１３２６の機能をとってもよい点に留意すべきである。累積度数テーブルセレクタ２９６は、マッピングルールセレクタ８２８、マッピングルールセレクタ１１２８またはマッピングルールセレクタ１３２８と同一であってもよく、または、マッピングルールセレクタ８２８、マッピングルールセレクタ１１２８またはマッピングルールセレクタ１３２８の機能をとってもよい。最上位ビットプレーン決定器２８４は、スペクトル値決定器８２４と同一であってもよく、または、スペクトル値決定器８２４の機能をとってもよい。
【０１４６】
１０．  スペクトルノイズレス符号化のツールの概要
【０１４７】
以下において、例えば算術エンコーダ１７０および算術デコーダ２３０によって実行される符号化および復号化アルゴリズムに関する詳細が説明される。
【０１４８】
焦点が復号化アルゴリズムの説明に置かれる。しかしながら、対応する符号化アルゴリズムは、復号化アルゴリズムの教示に従って実行できる点に留意すべきであり、符号化されたおよび復号化されたスペクトル値間のマッピングは逆にされ、さらに、マッピングルールインデックス値の計算は実質的に同一である。エンコーダにおいて、符号化されたスペクトル値が、復号化されたスペクトル値に代わる。また、符号化されるスペクトル値は、復号化されるためのスペクトル値に代わる。
【０１４９】
以下において述べられる復号化は、典型的に後処理され、スケールされさらに量子化されたスペクトル値のいわゆる「ｓｐｅｃｔｒａｌ  ｎｏｉｓｅｌｅｓｓ  ｃｏｄｉｎｇ（スペクトルノイズレス符号化）」を可能にするために用いられる点に留意すべきである。スペクトルノイズレス符号化は、例えば、エネルギー圧縮の時間領域−周波数領域変換器によって得られる量子化されたスペクトルの冗長性をさらに低減するためにオーディオ符号化／復号化概念（または他のいかなる符号化／復号化概念）において用いられる。本発明の実施形態において用いられるスペクトルノイズレス符号化スキームは、動的に適しているコンテクストに関連して算術符号化に基づく。
【０１５０】
本発明によるいくつかの実施形態において、スペクトルノイズレス符号化スキームは、２つの隣接したスペクトル係数が組み合わされる２タプルに基づく。それぞれの２タプルは、符号、最上位２ビット的なプレーンおよび残りの下位ビットプレーンに分割される。最上位２ビット的なプレーンｍのためのノイズレス符号化は、４つの前に復号化された２タプルから導き出されるコンテクストに依存する累積度数テーブルを用いる。ノイズレス符号化は、例えば、量子化されたスペクトル値によって供給され、さらに、４つの前に復号化された隣接する２タプルから導き出されるコンテクストに依存する累積度数テーブルを用いる。ここで、時間および周波数の両方における近辺は、好ましくは、図４に示されるように考慮される。そして、累積度数テーブル（それは以下に説明される）は、可変長２進コードを生成するために算術コーダによって（さらに、可変長２進コードから復号化された値を導き出すために算術デコーダによって）用いられる。
【０１５１】
例えば、算術コーダ１７０は、シンボルの所定のセットおよびそれらのそれぞれの確率のための２進コードを（すなわちそれぞれの確率に基づいて）生成する。２進コードは、シンボルのセットが位置する確率間隔をコードワードにマップすることによって生成される。
【０１５２】
残りの下位ビットプレーンまたはビットプレーンｒのためのノイズレス符号化は、例えば、単一の累積度数テーブルを用いる。累積度数は、例えば、下位ビットプレーンにおいて生じるシンボルの一様分布に対応し、すなわち、０または１が下位ビットプレーンにおいて生じることは、同じ確率があることが期待される。しかしながら、残りの下位ビットプレーンまたはビットプレーンの符号化のための他の解決策が用いられうる。
【０１５３】
以下において、スペクトルノイズレス符号化のツールの別の簡単な概要が示される。スペクトルノイズレス符号化は、量子化されたスペクトルの冗長性をさらに低減するために用いる。スペクトルノイズレス符号化スキームは、動的に適しているコンテクストに関連して、算術符号化に基づく。ノイズレス符号化は、量子化されたスペクトル値によって供給され、さらに、例えば、スペクトル値の４つの前に復号化された隣接する２タプルから導き出されるコンテクストに依存する累積度数テーブルを用いる。ここで、時間および周波数の両方における近辺は、図４に示されるように考慮される。そして、累積度数テーブルは、可変長２進コードを生成するために算術コーダによって用いられる。
【０１５４】
算術コーダは、シンボルの所定のセットおよびそれらのそれぞれの確率のための２進コードを生成する。２進コードは、シンボルのセットが位置する確率間隔をコードワードにマップすることによって生成される。
【０１５５】
１１．  復号化処理
１１．１  復号化処理の概要
【０１５６】
以下において、スペクトル値の符号化の処理の概要が、複数のスペクトル値の復号化の処理の疑似プログラムコード表現を示す図３を参照して示される。
【０１５７】
複数のスペクトル値の復号化の処理は、コンテクストの初期化３１０を含む。コンテクストの初期化３１０は、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（Ｎ，  ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ）」を用いて、前のコンテクストからの現在のコンテクストの導出を含む。前のコンテクストからの現在のコンテクストの導出は、コンテクストのリセットを選択的に含みうる。コンテクストのリセットおよび前のコンテクストからの現在のコンテクストの導出の両方は、以下に述べられる。好ましくは、図５ａによる関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（Ｎ，  ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ）」が用いられうるが、その代わりに、図５ｂによる関数が用いられてもよい。
【０１５８】
複数のスペクトル値の復号化は、スペクトル値復号化３１２およびコンテクスト更新３１３の反復も含み、コンテクスト更新３１３は、以下に記載される関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」によって実行される。スペクトル値復号化３１２およびコンテクスト更新３１３は、ｌｇ／２時間繰り返され、ｌｇ／２は、いわゆる「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルが検出されない限り、（例えば、オーディオフレームのために）復号化されるスペクトル値の２タプルの数を示す。さらに、ｌｇスペクトル値のセットの復号化は、符号復号化３１４およびフィニッシングステップ３１５も含む。
【０１５９】
スペクトル値のタプルの復号化３１２は、コンテクスト値計算３１２ａ、最上位ビットプレーン復号化３１２ｂ、算術停止シンボル検出３１２ｃ、下位ビットプレーン加算３１２ｄ、および配列更新３１２ｅを含む。
【０１６０】
状態値計算３１２ａは、例えば、図５ｃまたは図５ｄに示されるような関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の呼び出しを含む。好ましくは、図５ｃによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」が用いられる。したがって、数値的な現在のコンテクスト（状態）値ｃは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の関数呼び出しのリターン値として提供される。明らかなように、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」に入力変数として働く（「ｃ」でも指定される）数値的な前のコンテクスト値は、リターン値として、数値的な現在のコンテクスト値ｃを得るために更新される。
【０１６１】
最上位ビットプレーン復号化３１２ｂは、復号化アルゴリズム３１２ｂａの反復的な実行およびアルゴリズム３１２ｂａの結果値ｍから値ａ、ｂの導出３１２ｂｂを含む。アルゴリズム３１２ｂａの準備において、変数ｌｅｖは、ゼロに初期化される。アルゴリズム３１２ｂａは、「ｂｒｅａｋ」命令（または条件）に達するまで、繰り返される。アルゴリズム３１２ｂａは、以下に述べられ（さらにその実施形態が例えば図５ｅおよび図５ｆに示され）る関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」を用いて、数値的な現在のコンテクスト値ｃに基づいて、さらに、レベル値「ｅｓｃ＿ｎｂ」にも基づいて、（累積度数テーブルインデックスとしても働く）状態インデックス「ｐｋｉ」の計算を含む。好ましくは、図５ｅによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」が用いられる。アルゴリズム３１２ｂａは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」の呼び出しによってリターンされる状態インデックス「ｐｋｉ」に基づいて累積度数テーブルの選択も含み、変数「ｃｕｍ＿ｆｒｅｑ」は、状態インデックス「ｐｋｉ」に基づいて６４の累積度数テーブル（またはサブテーブル）から１つの開始アドレスに設定されうる。変数「ｃｆｌ」は、選択された累積度数テーブル（またはサブテーブル）の長さにも初期化されうり、それは、例えば、アルファベットにおけるシンボルの数、すなわち復号化することができる異なる値の数に等しい。最上位ビットプレーン値ｍの復号化のために利用できる「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝０］［１７］」から「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝６３］［１７］」までの全ての累積度数テーブル（またはサブテーブル）の長さは、１６の異なる最上位ビットプレーン値およびエスケープシンボル（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）を復号化することができるように、１７である。好ましくは、累積度数テーブル（またはサブテーブル）「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝０］［１７］」から「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝６３］［１７］」までを定義する累積度数テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］は、図２３（１）、図２３（２）、図２３（３）によるテーブル表現において定義されるように、選択された累積度数テーブル（またはサブテーブル）を得るために、評価される。
【０１６２】
その後、最上位ビットプレーン値ｍは、（変数「ｃｕｍ＿ｆｒｅｑ」および変数「ｃｆｌ」によって表される）選択された累積度数テーブルを考慮して、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を実行することによって得られうる。最上位ビットプレーン値ｍを導き出すときに、ビットストリーム２１０のビット指名された「ａｃｏｄ＿ｍ」は、評価されうる（例えば図６ｇまたは図６ｈを参照）。好ましくは、図５ｇによる関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（ｃｕｍ＿ｆｒｅｑ，ｃｆｌ）」が用いられるが、その代わりに、図５ｈおよび図５ｉによる関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（ｃｕｍ＿ｆｒｅｑ，ｃｆｌ）」が用いられてもよい。
【０１６３】
アルゴリズム３１２ｂａは、最上位ビットプレーン値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」に等しいかどうかをチェックすることも含む。最上位ビットプレーン値ｍが算術エスケープシンボルに等しくない場合、アルゴリズム３１２ｂａは、停止され（「ｂｒｅａｋ」条件）、さらに、アルゴリズム３１２ｂａの残りの命令は、スキップされる。したがって、処理の実行は、ステップ３１２ｂｂでの値ｂのおよび値ａの設定で続けられる。対照的に、復号化された最上位ビットプレーン値ｍが算術エスケープシンボルまたは「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」と同一である場合、レベル値「ｌｅｖ」は、１だけ増加される。レベル値「ｅｓｃ＿ｎｂ」は、変数「ｌｅｖ」が７よりも大きい場合でない限り、レベル値「ｌｅｖ」に等しく設定され、この場合、変数「ｅｓｃ＿ｎｂ」は、７に等しく設定される。上述のように、アルゴリズム３１２ｂａは、それから復号化された最上位ビットプレーン値ｍが算術エスケープシンボルと異なるまで繰り返され、修正されたコンテクストが用いられる（その理由は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力パラメータが変数「ｅｓｃ＿ｎｂ」の値に基づいて適しているからである）。
【０１６４】
最上位ビットプレーンがアルゴリズム３１２ｂａの１回の実行または反復的な実行を用いて復号化されるとすぐに、すなわち、算術エスケープシンボルと異なる最上位ビットプレーン値ｍが復号化されていると、スペクトル値変数「ｂ」は、最上位ビットプレーン値ｍの複数の（例えば２つの）上位ビットに等しく設定され、さらに、スペクトル値変数「ａ」は、最上位ビットプレーン値ｍの（例えば２つの）最下位ビットに設定される。この機能に関する詳細が、例えば、参照番号３１２ｂｂから明らかである。
【０１６５】
その後、ステップ３１２ｃにおいて算術停止シンボルがあるかどうかがチェックされる。これは、最上位ビットプレーン値ｍがゼロに等しくさらに変数「ｌｅｖ」がゼロよりも大きいかどうかの場合である。したがって、算術停止条件は、「ｕｎｕｓｕａｌ（異常な）」条件によって信号で伝えられ、最上位ビットプレーン値ｍは、ゼロに等しく、その一方で、変数「ｌｅｖ」は、増加した数値的な重みが最上位ビットプレーン値ｍと関連することを示す。換言すれば、算術停止条件は、最小の数値的な重みよりも大きい増加した数値的な重みがゼロに等しい最上位ビットプレーン値に示されるべきことをビットストリームが示す場合、検出され、それは、通常の符号化状況において生じない条件である。換言すれば、算術停止条件は、符号化された算術エスケープシンボルの後に０の符号化された最上位ビットプレーン値が続く場合、信号で伝えられる。
【０１６６】
ステップ３１２ｃにおいて実行される算術停止条件があるかどうかをの評価の後、下位ビットプレーンは、例えば、図３に参照番号３１２ｄで示されるように得られる。下位ビットプレーンごとに、２つの２進値が復号化される。２進値のうちの１つは、変数ａ（またはスペクトル値のタプルの第１のスペクトル値）と関連し、さらに、２進値のうちの１つは、変数ｂ（またはスペクトル値のタプルの第２のスペクトル値）と関連する。下位ビットプレーンの数は、変数ｌｅｖによって指定される。
【０１６７】
（もしあれば）１つ以上の最下位ビットプレーンの復号化において、アルゴリズム３１２ｄａは、反復的に実行され、アルゴリズム３１２ｄａの実行の数は、変数「ｌｅｖ」によって決定される。アルゴリズム３１２ｄａの最初の反復は、ステップ３１２ｂｂにおいて設定されるような変数ａ、ｂの値に基づいて実行される点にここで留意すべきである。アルゴリズム３１２ｄａのさらなる反復は、変数ａ、ｂの更新された変数値に基づいて実行される。
【０１６８】
反復の始めに、累積度数テーブルが選択される。その後、算術復号化が変数ｒの値を得るために実行され、変数ｒの値は、複数の下位ビットを、例えば、変数ａと関連する１つの下位ビットおよび変数ｂと関連する１つの下位ビットを表す。関数「ＡＲＩＴＨ＿ＤＥＣＯＤＥ」は、（例えば図５ｇに定義されるように、）値ｒを得るために用いられ、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ」は、算術復号化のために用いられる。
【０１６９】
その後、変数ａおよびｂの値は、更新される。この目的のために、変数ａは、１ビットだけ左にシフトされ、さらに、シフトされた変数ａの最下位ビットは、値ｒの最下位ビットによって定義される値を設定する。変数ｂは、１ビットだけ左にシフトされ、さらに、シフトされた変数ｂの最下位ビットは、変数ｒのビット１によって定義される値を設定し、変数ｒのビット１は、変数ｒの２進表現において２の数値的な重みを有する。アルゴリズム３１２ｂａは、それから全ての最下位ビットが復号化されるまで繰り返される。
【０１７０】
下位ビットプレーンの復号化の後、配列「ｘ＿ａｃ＿ｄｅｃ」は、変数ａ、ｂの値が配列インデックス２＊ｉおよび２＊ｉ＋１を有する前記配列のエントリに格納されるという点において更新される。
【０１７１】
その後、コンテクスト状態は、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」を呼び出すことによって更新され、その詳細が、図５ｇを参照して以下に説明される。好ましくは、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」は、図５ｌに定義されるように、用いられうる。
【０１７２】
ステップ３１３において実行されるコンテクスト状態の更新に続いて、アルゴリズム３１２および３１３は、実行中の変数ｉがｌｇ／２の値に達しまたは算術停止条件が検出されるまで、繰り返される。
【０１７３】
その後、フィニッシュアルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」が、参照番号３１５から明らかなように実行される。フィニッシュアルゴリズム「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の詳細が、図５ｍを参照して記載される。
【０１７４】
フィニッシュアルゴリズム３１５に続いて、スペクトル値の符号は、アルゴリズム３１４を用いて復号化される。明らかなように、ゼロと異なるスペクトル値の符号は、個々に符号化される。アルゴリズム３１４において、符号は、ｉ＝０およびゼロでないｉ＝ｌｇ−１間のインデックスｉを有するスペクトル値の全てのために読み取られる。ｉ＝０およびｉ＝ｌｇ−１間のスペクトル値インデックスｉを有するゼロでないスペクトル値ごとに、値（典型的には単一のビット）ｓがビットストリームから読み取られる。ビットストリームから読み取られるｓの値が１に等しい場合、前記スペクトル値の符号は、逆にされる。この目的のために、アクセスは、インデックスｉを有するスペクトル値がゼロに等しいかどうかを決定するためさらに復号化されたスペクトル値の符号を更新するための両方のために、配列「ｘ＿ａｃ＿ｄｅｃ」に行われる。しかしながら、変数ａ、ｂの符号は、符号復号化３１４において不変のまま残される点に留意すべきである。
【０１７５】
符号復号化３１４の前にフィニッシュアルゴリズム３１５を実行することによって、ＡＲＩＴＨ＿ＳＴＯＰシンボルの後に全ての必要なｂｉｎｓをリセットすることが可能である。
【０１７６】
下位ビットプレーンの値を得るための概念は、本発明によるいくつかの実施形態において特定の関連性がない点にここで留意すべきである。いくつかの実施形態において、いかなる下位ビットプレーンの復号化も、省略されることがある。その代わりに、異なる復号化アルゴリズムが、この目的のために用いられうる。
【０１７７】
１１．２  図４による復号化順序
【０１７８】
以下において、スペクトル値の復号化順序が記載される。
【０１７９】
量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から始まって最も高い周波数係数に進んで（例えばビットストリームにおいて）ノイズレスに符号化されさらに伝送される。
【０１８０】
したがって、量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から始まって最も高い周波数係数に進んでノイズレスに復号化される。量子化されたスペクトル係数は、（｛ａ，ｂ｝でも指定される）いわゆる２タプル（ａ、ｂ）において集める２つの連続した（例えば周波数において隣接する）係数ａおよびｂのグループによって復号化される。量子化されたスペクトル係数は、「ｑｄｅｃ」でもときどき指定される点にここで留意すべきである。
【０１８１】
周波数領域モードのための復号化された係数「ｘ＿ａｃ＿ｄｅｃ［］」（例えば、ＩＳＯ／ＩＥＣ１４４９６のパート３のサブパート４に述べられるように、修正離散コサイン変換を用いて得られる、例えば、アドバンストオーディオ符号化のための復号化された係数）は、それから配列「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」に格納される。ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、「ｂｉｎ」が最も急速にインクリメントするインデックスであり、さらに、「ｇ」が最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａ、ｂ（すなわち、ａそしてｂ）である。
【０１８２】
変換符号化された励起（ＴＣＸ）のための復号化された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、例えば、配列「ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］」に直接的に格納され、さらに、ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、「ｂｉｎ」が最も急速にインクリメントするインデックスであり、さらに、「ｗｉｎ」が最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａ、ｂ（すなわち、ａそしてｂ）である。換言すれば、スペクトル値がスピーチコーダの線形予測フィルタの変換符号化された励起を表す場合、スペクトル値ａ、ｂは、変換符号化された励起の隣接し増加する周波数と関連する。より低い周波数と関連するスペクトル係数は、より高い周波数と関連するスペクトル係数の前に典型的に符号化されさらに復号化される。
【０１８３】
特に、オーディオデコーダ２００は、復号化された周波数領域表現２３２を適用するように構成されうり、それは、周波数領域−時間領域信号変換を用いて時間領域オーディオ信号表現の「ｄｉｒｅｃｔ（直接的な）」生成のためと周波数領域−時間領域信号変換器の出力によって励起される周波数領域−時間領域デコーダおよび線形予測フィルタの両方を用いて時間領域オーディオ信号表現の「ｉｎｄｉｒｅｃｔ（間接的な）」提供のためとの両方のために、算術デコーダ２３０によって提供される。
【０１８４】
換言すれば、機能がここで詳細に述べられる算術デコーダは、周波数領域において符号化されるオーディオコンテンツの時間周波数領域表現のスペクトル値を復号化するために、さらに、線形予測領域において符号化されるスピーチ信号を復号化する（または合成する）ために適している線形予測フィルタのための刺激信号の時間周波数領域表現の提供のために、よく適している。このように、算術デコーダは、周波数領域符号化されたオーディオコンテンツおよび線形予測周波数領域符号化されたオーディオコンテンツ（変換符号化された励起線形予測領域モード）を取り扱うことができるオーディオにおいての使用によく適している。
【０１８５】
１１．３  図５ａおよび図５ｂによるコンテクスト初期化
【０１８６】
以下において、ステップ３１０において実行される（「ｃｏｎｔｅｘｔ  ｍａｐｐｉｎｇ（コンテクストマッピング）」にも指定される）コンテクスト初期化が記載される。
【０１８７】
コンテクスト初期化は、第１のサンプルが図５ａに示されさらに第２のサンプルが図５ｂに示されるアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」に従って過去のコンテクストおよび現在のコンテクスト間のマッピングを含む。
【０１８８】
明らかなように、現在のコンテクストは、２の第１の次元および「ｎ＿ｃｏｎｔｅｘｔ」の第２の次元を有する配列の形式をとるグローバル変数「ｑ［２］［ｎ＿ｃｏｎｔｅｘｔ］」に格納される。過去のコンテクストは、（それが用いられる場合）「ｎ＿ｃｏｎｔｅｘｔ」の次元を有するテーブルの形式をとる変数「ｑｓ［ｎ＿ｃｏｎｔｅｘｔ］」に任意に（必ずではないが）格納されうる。
【０１８９】
図５ａにおいて実例アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」を参照して、入力変数Ｎは、現在のウィンドウの長さを表し、さらに、入力変数「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテクストがリセットされるべきであるかどうかを示す。さらに、グローバル変数「ｐｒｅｖｉｏｕｓ＿Ｎ」は、前のウィンドウの長さを表す。典型的に、ウィンドウと関連するスペクトル値の数は、少なくとも近似的に、時間領域サンプルに関して前記ウィンドウの半分の長さに等しい点にここで留意すべきである。さらに、したがって、スペクトル値の２タプルの数は、時間領域サンプルに関して前記ウィンドウの１／４の長さに少なくとも近似的に等しい点に留意すべきである。
【０１９０】
最初に、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテクストがリセットされなければならないかどうかを決定する点に留意すべきである。
【０１９１】
図５ａの例を参照して、コンテクストのマッピングは、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」に従って実行されうる。関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」は、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」がアクティブでありさらにしたがってコンテクストがリセットされるべきであることを示す場合、現在のコンテクスト配列ｑのエントリ「ｑ［０］［ｊ］」をｊ＝０からｊ＝Ｎ／４−１までにゼロに設定する点にここで留意すべきである。さもなければ、すなわち、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」がインアクティブである場合、現在のコンテクスト配列ｑのエントリ「ｑ［０］［ｊ］」は、現在のコンテクスト配列ｑのエントリ「ｑ［１］［ｋ］」から導き出される。図５ａによる関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」は、現在の（例えば周波数領域符号化された）オーディオフレームと関連するスペクトル値の数がｊ＝ｋ＝０からｊ＝ｋ＝Ｎ／４−１までに前のオーディオフレームと関連するスペクトル値の数と同一である場合、現在のコンテクスト配列ｑのエントリ「ｑ［０］［ｊ］」を現在のコンテクスト配列ｑの値「ｑ［１］［ｋ］」に設定する点に留意すべきである。
【０１９２】
現在のオーディオフレームと関連するスペクトル値の数が前のオーディオフレームと関連するスペクトル値の数と異なる場合、より複雑なマッピングが実行される。しかしながら、この場合においてマッピングに関する詳細は、詳しくは図５ａの疑似プログラムコードについて述べるように、特に本発明の重要な考えのために特に関連しない。
【０１９３】
さらに、数値的な現在のコンテクスト値ｃのための初期化値は、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」によってリターンされる。この初期化値は、例えば、１２ビットだけ左にシフトされるエントリ「ｑ［０］［０］」の値に等しい。したがって、数値的な（現在の）コンテクスト値ｃは、反復的な更新のために適切に初期化される。
【０１９４】
さらに、図５ｂは、その代わりに用いられうるアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」の別の例を示す。詳しくは、図５ｂにおける疑似プログラムコードについて述べる。
【０１９５】
上記を要約すると、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテクストがリセットされなければならないかどうかを決定する。フラグが真である場合、アルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ（）」のリセットサブアルゴリズム５００ａが呼び出される。しかしながら、その代わりに、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」が（コンテクストのリセットが実行されるべきでないことを示す）インアクティブである場合、復号化処理は、コンテクストエレメントベクトル（または配列）ｑがｑ［１］［］に格納される前のフレームのコンテクストエレメントをｑ［０］［］にコピーしさらにマップすることによって更新される初期設定段階から始まる。ｑ内のコンテクストエレメントは、２タプルごとに４ビットに格納される。コンテクストエレメントのコピーおよび／またはマッピングは、例えば、サブアルゴリズム５００ｂにおいて実行される。
【０１９６】
さらに、コンテクストが確実に決定されることができない場合、例えば、前のフレームのデータが利用できない場合、さらに、「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」が設定されない場合、スペクトルデータの復号化が続けられなく、さらに、現在の「ａｒｉｔｈ＿ｄａｔａ（）」エレメントの読み取りがスキップされるべきである点に留意すべきである。
【０１９７】
図５ｂの例において、復号化処理は、マッピングがｑｓに格納される保存された過去のコンテクストおよび現在のフレームｑのコンテクスト間で行われる初期設定段階から始まる。過去のコンテクストｑｓは、周波数ラインごとに２ビットに格納される。
【０１９８】
１１．４  図５ｃおよび図５ｄによる状態値計算
【０１９９】
以下において、状態値計算３１２ａがさらに詳細に記載される。
【０２００】
第１の好適なアルゴリズムは、図５ｃを参照して記載され、さらに、第２の代わりの実例アルゴリズムは、図５ｄを参照して記載される。
【０２０１】
（図３に示されるような）数値的な現在のコンテクスト値ｃは、疑似プログラムコード表現が図５ｃに示される関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」のリターン値として得ることができる点に留意すべきである。しかしながら、その代わりに、数値的な現在のコンテクスト値ｃは、疑似プログラムコード表現が図５ｄに示される関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」のリターン値として得ることができる。
【０２０２】
状態値の計算に関して、状態評価のためにすなわち数値的な現在のコンテクスト値ｃの計算のために用いられるコンテクストを示す図４についても述べる。図４は、時間および周波数の両方上に、スペクトル値の２次元表現を示す。横座標４１０は時間を表し、さらに、縦座標４１２は周波数を表す。図４において明らかなように、（好ましくは数値的な現在のコンテクスト値を用いて）復号化するスペクトル値のタプル４２０は、時間インデックスｔ０および周波数インデックスｉと関連する。明らかなように、時間インデックスｔ０について、周波数インデックスｉ−１、ｉ−２およびｉ−３を有するタプルは、周波数インデックスｉを有するタプル４２０のスペクトル値が復号化される時間にすでに復号化されている。図４から明らかなように、時間インデックスｔ０および周波数インデックスｉ−１を有するスペクトル値４３０は、スペクトル値のタプル４２０が復号化される前にすでに復号化され、さらに、スペクトル値のタプル４３０は、スペクトル値のタプル４２０の復号化のために用いられるコンテクストのために考慮される。同様に、時間インデックスｔ０−１およびｉ−１の周波数インデックスを有するスペクトル値のタプル４４０、時間インデックスｔ０−１およびｉの周波数インデックスを有するスペクトル値のタプル４５０、および、時間インデックスｔ０−１およびｉ＋１の周波数インデックスを有するスペクトル値のタプル４６０は、スペクトル値のタプル４２０が復号化される前にすでに復号化され、さらに、スペクトル値のタプル４２０を復号化するために用いられるコンテクストの決定のために考慮される。タプル４２０のスペクトル値が復号化される時間にすでに復号化されさらにコンテクストのために考慮されるスペクトル値（係数）は、陰影のついた正方形によって示される。対照的に、（タプル４２０のスペクトル値が復号化される時間に）すでに復号化されているが（タプル４２０のスペクトル値の復号化のための）コンテクストのために考慮されないいくつかの他のスペクトル値は、点線を有する正方形によって表され、さらに、（タプル４２０のスペクトル値が復号化される時間にまだ復号化されていない）他のスペクトル値は、点線を有する円によって示される。点線を有する正方形によって表されるタプルおよび点線を有する円によって表されるタプルは、タプル４２０のスペクトル値を復号化するためのコンテクストを決定するために用いられない。
【０２０３】
しかしながら、タプル４２０のスペクトル値を復号化するためのコンテクストの「ｒｅｇｕｌａｒ（普通の）」または「ｎｏｒｍａｌ（通常の）」計算のために用いられないこれらのスペクトル値のいくつかは、それにしても、個々にまたはこれらを基に、それらの大きさに関する所定の条件を満たす複数の前に復号化された隣接するスペクトル値の検出のために評価されうる点に留意すべきである。この問題に関する詳細が以下に述べられる。
【０２０４】
図５ｃをこれから参照して、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の詳細が記載される。図５ｃは、周知のＣ言語および／またはＣ＋＋言語の変換を用いる疑似プログラムコードの形式で前記関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の機能を示す。このように、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって実行される数値的な現在のコンテクスト値「ｃ」の計算に関するより詳細が記載される。
【０２０５】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、入力変数として、数値的な前のコンテクスト値ｃによって表されうる「ｏｌｄ  ｓｔａｔｅ  ｃｏｎｔｅｘｔ（前の状態コンテクスト）」を受信する点に留意すべきである。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、入力変数として、復号化するスペクトル値の２タプルのインデックスｉも受信する。インデックスｉは、典型的に周波数インデックスである。入力変数Ｎは、スペクトル値が復号化されるウィンドウのウィンドウの長さを表す。
【０２０６】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、出力値として、更新された状態コンテクストを表しさらに数値的な現在のコンテクスト値として考慮されうる入力変数ｃの更新されたバージョンを提供する。要約すると、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」は、入力変数として数値的な前のコンテクスト値ｃを受信し、さらに、その更新されたバージョンを提供し、それは、数値的な現在のコンテクスト値として考慮される。加えて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」は、変数ｉ、Ｎを考慮し、さらに、「ｇｌｏｂａｌ（グローバル）」配列ｑ［］［］にアクセスする。
【０２０７】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の詳細に関して、初期的に２進形式で数値的な前のコンテクスト値を表す変数ｃは、ステップ５０４ａにおいて４ビットだけ右にシフトされる点に留意すべきである。したがって、（入力変数ｃによって表される）数値的な前のコンテクスト値の４つの最下位ビットが破棄される。また、数値的な前のコンテクスト値の他のビットの数値的な重み例えば１６倍低減される。
【０２０８】
さらに、２タプルのインデックスｉがＮ／４−１よりも小さいすなわち最大値をとらない場合、数値的な現在のコンテクスト値は、エントリｑ［０］［ｉ＋１］の値がステップ５０４ａにおいて得られるシフトされたコンテクスト値のビット１２〜１５に（すなわち２12、２13、２14および２15の数値的な重みを有するビットに）加算されるという点において、修正される。この目的のために、配列ｑ［］［］のエントリｑ［０］［ｉ＋１］（または、より正確に言うと、前記エントリによって表される値の２進表現）は、１２ビットだけ左にシフトされる。エントリｑ［０］［ｉ＋１］によって表される値のシフトされたバージョンは、それから、ステップ５０４ａにおいて導き出されるコンテクスト値ｃに、すなわち数値的な前のコンテクスト値のビットシフトされた（４ビットだけ右にシフトされた）数表現に加算される。配列ｑ［］［］のエントリｑ［０］［ｉ＋１］は、オーディオコンテンツの前の部分（例えば、図４に関して定義されるように、時間インデックスｔ０−１を有するオーディオコンテンツの部分）および（関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって出力される数値的な現在のコンテクスト値ｃを用いて）現在復号化されるスペクトル値のタプルよりも高い周波数（例えば、図４に関して定義されるように、周波数インデックスｉ＋１を有する周波数）と関連するサブ区域値を表す点にここで留意すべきである。換言すれば、スペクトル値のタプル４２０は、数値的な現在のコンテクスト値を用いて復号化される場合、エントリｑ［０］［ｉ＋１］は、前に復号化されたスペクトル値のタプル４６０に基づきうる。
【０２０９】
（１２ビットだけ左にシフトされる）配列ｑ［］［］のエントリｑ［０］［ｉ＋１］の選択的な加算は、参照番号５０４ｂで示される。明らかなように、エントリｑ［０］［ｉ＋１］によって表される値の加算は、周波数インデックスｉが最も大きい周波数インデックスｉ＝Ｎ／４−１を有するスペクトル値のタプルを指定しない場合、当然に実行されるだけである。
【０２１０】
その後、ステップ５０４ｃにおいて、ブールのＡＮＤ演算が実行され、変数ｃの値は、変数ｃの更新された値を得るために、０ｘＦＦＦ０の１６進値とＡＮＤ組み合わされる。そのようなＡＮＤ演算を実行することによって、変数ｃの４つの最下位ビットがゼロに効果的に設定される。
【０２１１】
ステップ５０４ｄにおいて、エントリｑ［１］［ｉ−１］の値は、それによって変数ｃの値を更新するために、ステップ５０４ｃによって得られる変数ｃの値に加算される。しかしながら、ステップ５０４ｄにおいて変数ｃの前記更新は、復号化する２タプルの周波数インデックスｉがゼロよりも大きい場合、実行されるだけである。エントリｑ［１］［ｉ−１］は、数値的な現在のコンテクスト値を用いて復号化されるスペクトル値の周波数よりも小さい周波数のためのオーディオコンテンツの現在の部分の前に復号化されたスペクトル値のタプルに基づくコンテクストサブ区域値である点に留意すべきである。例えば、配列ｑ［］［］のエントリｑ［１］［ｉ−１］は、スペクトル値のタプル４２０が関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の現在の実行によってリターンされる数値的な現在のコンテクスト値を用いて復号化されると仮定される場合、時間インデックスｔ０および周波数インデックスｉ−１を有するタプル４３０と関連しうる。
【０２１２】
要約すると、数値的な前のコンテクスト値のビット０、１、２および３（すなわち４つの最下位ビットの部分）は、数値的な前のコンテクスト値の２進数表現からそれらをシフトすることによってステップ５０４ａにおいて破棄される。さらに、シフトされた変数ｃの（すなわちシフトされた数値的な前のコンテクスト値の）ビット１２、１３、１４および１５は、ステップ５０４ｂにおいてコンテクストサブ区域値ｑ［０］［ｉ＋１］によって定義される値をとるために設定される。シフトされた数値的な前のコンテクスト値のビット０、１、２および３（すなわち元の数値的な前のコンテクスト値のビット４、５、６および７）は、ステップ５０４ｃおよび５０４ｄにおいてコンテクストサブ区域値ｑ［１］［ｉ−１］によって上書きされる。
【０２１３】
したがって、数値的な前のコンテクスト値のビット０〜３は、スペクトル値のタプル４３２と関連するコンテクストサブ区域値を表し、数値的な前のコンテクスト値のビット４〜７は、前に復号化されたスペクトル値のタプル４３４と関連するコンテクストサブ区域値を表し、数値的な前のコンテクスト値のビット８〜１１は、前に復号化されたスペクトル値のタプル４４０と関連するコンテクストサブ区域値を表し、さらに、数値的な前のコンテクスト値のビット１２〜１５は、前に復号化されたスペクトル値のタプル４５０と関連するコンテクストサブ区域値を表すといえる。関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」に入力される数値的な前のコンテクスト値は、スペクトル値のタプル４３０の復号化と関連する。
【０２１４】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の出力変数として得られる数値的な現在のコンテクスト値は、スペクトル値のタプル４２０の復号化と関連する。したがって、数値的な現在のコンテクスト値のビット０〜３は、スペクトル値のタプル４３０と関連するコンテクストサブ区域値を表し、数値的な現在のコンテクスト値のビット４〜７は、スペクトル値のタプル４４０と関連するコンテクストサブ区域値を表し、数値的な現在のコンテクスト値のビット８〜１１は、スペクトル値のタプル４５０と関連する数値的なサブ区域値を表し、さらに、数値的な現在のコンテクスト値のビット１２〜１５は、スペクトル値のタプル４６０と関連するコンテクストサブ区域値を表す。このように、数値的な前のコンテクスト値の部分、すなわち数値的な前のコンテクスト値のビット８〜１５は、数値的な現在のコンテクスト値のビット４〜１１として、数値的な現在のコンテクスト値に含まれることも明らかである。対照的に、現在の数値的な前のコンテクスト値のビット０〜７は、数値的な前のコンテクスト値の数表現から数値的な現在のコンテクスト値の数表現を導き出すときに破棄される。
【０２１５】
ステップ５０４ｅにおいて、数値的な現在のコンテクスト値を表す変数ｃは、復号化する２タプルの周波数インデックスｉが例えば３の所定の数よりも大きい場合、選択的に更新される。この場合、すなわちｉが３よりも大きい場合、コンテクストサブ区域値ｑ［１］［ｉ−３］、ｑ［１］［ｉ−２］およびｑ［１］［ｉ−１］の合計が例えば５の所定の値よりも小さい（またはそれに等しい）かどうかが決定される。前記コンテクストサブ区域値の合計が前記所定の値よりも小さいことが見いだされている場合、例えば０ｘ１００００の１６進値が、変数ｃに加算される。したがって、変数ｃは、コンテクストサブ区域値ｑ［１］［ｉ−３］、ｑ［１］［ｉ−２］およびｑ［１］［ｉ−１］が特に小さい合計値を含む条件があるかどうかを変数ｃが示すように設定される。例えば、数値的な現在のコンテクスト値のビット１６は、そのような条件を示すフラグとして働きうる。
【０２１６】
結論として、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」のリターン値は、ステップ５０４ａ、５０４ｂ、５０４ｃ、５０４ｄおよび５０４ｅによって決定され、数値的な現在のコンテクスト値は、ステップ５０４ａ、５０４ｂ、５０４ｃおよび５０４ｄにおいて数値的な前のコンテクスト値から導き出され、さらに、平均して、特に小さい絶対値を有する前に復号化されたスペクトル値の環境を示すフラグは、ステップ５０４ｅにおいて導き出されさらに変数ｃに加算される。したがって、ステップ５０４ａ、５０４ｂ、５０４ｃ、５０４ｄにおいて得られる変数ｃの値は、ステップ５０４ｅにおいて評価される条件が満たされない場合、ステップ５０４ｆにおいて、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」のリターン値としてリターンされる。対照的に、ステップ５０４ａ、５０４ｂ、５０４ｃおよび５０４ｄにおいて導き出される変数ｃの値は、ステップ５４０ｅにおいて評価される条件が満たされる場合、ステップ５０４ｅにおいて、０ｘ１００００の１６進値だけインクリメントされ、さらに、このインクリメント演算の結果がリターンされる。
【０２１７】
上記を要約すると、ノイズレスデコーダは、（以下に詳しく記載されるように）符号なしの量子化されたスペクトル係数の２タプルを出力する点に留意すべきである。最初に、コンテクストの状態ｃは、復号化する２タプル「ｓｕｒｒｏｕｎｄｉｎｇ（を囲む）」前に復号化されたスペクトル係数に基づいて計算される。好適な実施形態において、（例えば数値的なコンテクスト値ｃによって表される）状態は、２つの新しい２タプル（例えば２タプル４３０および４６０）だけを考慮して、（数値的な前のコンテクスト値に指定される）最後の復号化された２タプルのコンテクスト状態を用いて増加的に更新される。状態は、（例えば数値的な現在のコンテクスト値の数表現を用いて）１７ビットに符号化され、さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」によってリターンされる。詳しくは、図５ｃのプログラムコード表現について述べる。
【０２１８】
さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の代わりの実施形態の疑似プログラムコードは、図５ｄに示される点に留意すべきである。図５ｄによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」は、図５ｃによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」と類似している。しかしながら、図５ｄによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」は、ｉ＝０の最小の周波数インデックスまたはｉ＝Ｎ／４−１の最大の周波数インデックスを含むスペクトル値のタプルの特別な取り扱いまたは復号化を含まない。
【０２１９】
１１．５  マッピングルール選択
【０２２０】
以下において、マッピングルール、例えばシンボルコード上へのコードワード値のマッピングを表す累積度数テーブルの選択が記載される。マッピングルールの選択は、数値的な現在のコンテクスト値ｃによって表されるコンテクスト状態に基づいて行われる。
【０２２１】
１１．５．１  図５ｅによるアルゴリズムを用いるマッピングルール選択
【０２２２】
以下において、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」を用いるマッピングルールの選択が記載される。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、スペクトル値のタプルを提供するためのコード値「ａｃｏｄ＿ｍ」を復号化するときに、サブアルゴリズム３１２ｂａの始めに呼び出される点に留意すべきである。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、アルゴリズム３１２ｂの異なる反復の異なる引数で呼び出される点に留意すべきである。例えば、アルゴリズム３１２ｂの最初の反復において、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、ステップ３１２ａで関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」の前の実行によって提供される数値的な現在のコンテクスト値ｃに等しい引数で呼び出される。対照的に、サブアルゴリズム３１２ｂａのさらなら反復において、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」は、ステップ３１２ａにおいて関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって提供される数値的な現在のコンテクスト値ｃおよび変数「ｅｓｃ＿ｎｂ」の値のビットシフトされたバージョンの合計である引数で呼び出され、変数「ｅｓｃ＿ｎｂ」の値は、１７ビットだけ左にシフトされる。このように、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」によって提供される数値的な現在のコンテクスト値ｃは、３１２ｂａアルゴリズムの最初の反復においてすなわち比較的小さいスペクトル値の復号化において、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力値として用いられる。対照的に、比較的より大きいスペクトル値を復号化するときに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数は、変数「ｅｓｃ＿ｎｂ」の値が、図３に示されるように、考慮されるという点において、修正される。
【０２２３】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（ｃ）」の第１の好適な実施形態の疑似プログラムコード表現を示す図５ｅをこれから参照して、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、入力値としての変数ｃを受信する点に留意すべきであり、変数ｃは、コンテクストの状態を表し、さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃは、少なくともいくらかの状況において関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」によってリターン変数として提供される数値的な現在のコンテクスト値に等しい。さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、出力変数として、確率モデルのインデックスを表しさらにマッピングルールインデックス値として考慮されうる変数「ｐｋｉ」を提供する点に留意すべきである。
【０２２４】
図５ｅを参照して、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、変数初期化５０６ａを含むことが明らかであり、変数「ｉ＿ｍｉｎ」は、−１の値をとるために初期化される。同様に、変数ｉは、変数ｉも−１の値に初期化されるように、変数「ｉ＿ｍｉｎ」に等しく設定される。変数「ｉ＿ｍａｘ」は、詳細が図２１を参照して記載されるように、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリの数よりも１だけ小さい値をとるために初期化される。したがって、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」は、間隔を定義する。例えば、ｉ＿ｍａｘは、値７４１に初期化されうる。
【０２２５】
その後、検索５０６ｂは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃの値が前記エントリおよび隣接するエントリによって定義される間隔内に位置するように、図２２（１）、図２２（２）、図２２（３）、図２２（４）のテーブル表現において定義されるように選択されるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリを指定するインデックス値を確認するために実行される。
【０２２６】
検索５０６ｂにおいて、サブアルゴリズム５０６ｂａは、繰り返され、その一方で、変数「ｉ＿ｍａｘ」および「ｉ＿ｍｉｎ」間の差は、１よりも大きい。サブアルゴリズム５０６ｂａにおいて、変数ｉは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値の算術平均に等しく設定される。したがって、変数ｉは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値によって定義されるテーブル間隔の中央において（図２２（１）、図２２（２）、図２２（３）および図２２（４）のテーブル表現において定義されるような）テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリを指定する。その後、変数ｊは、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の値に等しく設定される。このように、変数ｊは、エントリが変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義されるテーブル間隔の中央に位置するテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって定義される値をとる。その後、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義される間隔は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃの値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最上位ビットによって定義される状態値と異なる場合、更新される。例えば、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの「ｕｐｐｅｒ  ｂｉｔｓ（上位ビット）」（ビット８および上位）は、重要な状態値を表す。したがって、値「ｊ＞＞８」は、ハッシュテーブルインデックス値ｉによって指定されるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値を表す。したがって、変数ｃの値が値「ｊ＞＞８」よりも小さい場合、これは、変数ｃによって表される状態値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値よりも小さいことを意味する。この場合、変数「ｉ＿ｍａｘ」の値は、変数ｉの値に等しく設定され、それは、次々に、「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義される間隔のサイズが低減されるという効果を有し、新しい間隔は、前の間隔の下半分に近似的に等しい。変数ｃによって表されるコンテクスト値が配列「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値よりも大きいことを意味する、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃが値「ｊ＞＞８」よりも大きいことが見いだされている場合、変数「ｉ＿ｍｉｎ」の値は、変数ｉの値に等しく設定される。したがって、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の値によって定義される間隔のサイズは、変数「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」の前の値によって定義される、前の間隔のサイズの近似的に半分に低減される。より正確に言うと、変数「ｉ＿ｍｉｎ」の更新された値によってさらに変数「ｉ＿ｍａｘ」の前の（不変の）値によって定義される間隔は、変数ｃの値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって定義される重要な状態値よりも大きい場合に、前の間隔の上半分に近似的に等しい。
【０２２７】
しかしながら、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃによって表されるコンテクスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって定義される重要な状態値に等しいこと（すなわちｃ＝＝（ｊ＞＞８））が見いだされている場合、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最下位８ビットによって定義されるマッピングルールインデックス値は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のリターン値としてリターンされる（命令「ｒｅｔｕｒｎ  （ｊ＆０ｘＦＦ）」）。
【０２２８】
上記を要約すると、最上位ビット（ビット８および上位）が重要な状態値を表すエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」は、それぞれの反復５０６ｂａにおいて評価され、さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の入力変数ｃによって表されるコンテクスト値（または数値的な現在のコンテクスト値）は、前記テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値と比較される。入力変数ｃによって表されるコンテクスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値よりも小さい場合、テーブル間隔の（値「ｉ＿ｍａｘ」によって表される）上方境界は、低減され、さらに、入力変数ｃによって表されるコンテクスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値よりも大きい場合、テーブル間隔の（変数「ｉ＿ｍｉｎ」の値によって表される）下方境界は、増加される。前記の両方の場合において、サブアルゴリズム５０６ｂａは、（「ｉ＿ｍａｘ」および「ｉ＿ｍｉｎ」間の差によって定義される）間隔のサイズが１よりも小さいまたはそれに等しい場合を除いて、繰り返される。対照的に、変数ｃによって表されるコンテクスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」によって表される重要な状態値に等しい場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、停止され、リターン値は、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」の最下位８ビットによって定義される。
【０２２９】
しかしながら、間隔サイズがその最小値に達するので検索５０６ｂが終了される（「ｉ＿ｍａｘ−ｉ＿ｍｉｎ」が１よりも小さいまたはそれに等しい）場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のリターン値は、参照番号５０６ｃから明らかであるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍａｘ］」によって決定される。テーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］は、好ましくは、図２１のテーブル表現において定義されるように選択され、さらに、そのため、テーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］に等しくなりうる。したがって、（好ましくは図２２（１）、図２２（２）、図２２（３）、図２２（４）に定義されるようなテーブルａｒｉ＿ｈａｓｈ＿ｍ［７４２］に等しい）テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリは、重要な状態値および間隔の境界の両方を定義する。サブアルゴリズム５０６ｂａにおいて、検索間隔境界「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」は、ハッシュテーブルインデックスｉが少なくとも近似的に間隔境界値「ｉ＿ｍｉｎ」および「ｉ＿ｍａｘ」によって定義される検索間隔の中央に位置するテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」が、少なくとも入力変数ｃによって表されるコンテクスト値に近似するように、反復的に適している。このように、入力変数ｃによって表されるコンテクスト値が、サブアルゴリズム５０６ｂａの反復の完了の後に、「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」および「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍａｘ］」によって定義される間隔内に位置することは、入力変数ｃによって表されるコンテクスト値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって表される重要な状態値に等しくない限り、達成される。
【０２３０】
しかしながら、（「ｉ＿ｍａｘ−ｉ＿ｍｉｎ」によって定義される）間隔のサイズがその最小値に達するまたは上回るので、サブアルゴリズム５０６ｂａの反復的な繰り返しが終了される場合、入力変数ｃによって表されるコンテクスト値は、重要な状態値でないと仮定される。この場合、間隔の上方境界を指定するインデックス「ｉ＿ｍａｘ」は、それにしても用いられる。サブアルゴリズム５０６ｂａの最後の反復において達する間隔の上方の値「ｉ＿ｍａｘ」は、図２１のテーブルａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］に等しくてもよいテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」へのアクセスのためのテーブルインデックス値として再使用される。テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」は、複数の隣接する数値的なコンテクスト値の間隔と関連するマッピングルールインデックス値を表す。テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリによって表されるマッピングルールインデックス値が関連する間隔は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリによって表される重要な状態値によって定義される。テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のエントリは、重要な状態値および隣接する数値的なコンテクスト値の間隔の間隔境界の両方を定義する。アルゴリズム５０６ｂの実行において、入力変数ｃによって表される数値的なコンテクスト値が重要な状態値に等しいかどうかが決定され、さらに、これがそうでない場合、（境界が重要な状態値によって定義される複数の間隔から）数値的なコンテクスト値の間隔には、入力変数ｃによって表されるコンテクスト値が位置する。このように、アルゴリズム５０６ｂは、入力変数ｃが重要な状態値を表すかどうかを決定し、さらに、それがそうでない場合、入力変数ｃによって表されるコンテクスト値が位置する重要な状態値によって囲まれる間隔を確認するという二重機能を満たす。したがって、アルゴリズム５０６ｅは、特に効率的であり、さらに、比較的少数のテーブルアクセスだけを必要とする。
【０２３１】
上記を要約すると、コンテクスト状態ｃは、最上位２ビット的なプレーンｍを復号化するために用いられる累積度数テーブルを決定する。ｃから対応する累積度数テーブルインデックス「ｐｋｉ」へのマッピングは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって実行される。前記関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現は、図５ｅを参照して説明されている。
【０２３２】
上記をさらに要約すると、値ｍは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼び出される（以下でさらに詳細に表される）関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を用いて復号化され、「ｐｋｉ」は、疑似Ｃコードの形式で図５ｅに関して表される関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によってリターンされる（マッピングルールインデックス値にも指定される）インデックスに対応する。
【０２３３】
１１．５．２  図５ｆによるアルゴリズムを用いるマッピングルール選択
【０２３４】
以下において、マッピングルール選択アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の別の実施形態がスペクトル値のタプルの復号化に用いられうるそのようなアルゴリズムの疑似プログラムコード表現を示す図５ｆに関して説明される。図５ｆによるアルゴリズムは、アルゴリズム「ｇｅｔ＿ｐｋ（）」のまたはアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の最適化されたバージョン（例えば速度最適化されたバージョン）として考慮されうる。
【０２３５】
図５ｆによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、入力変数として、コンテクストの状態を表す変数ｃを受信する。入力変数ｃは、例えば、数値的な現在のコンテクスト値を表しうる。
【０２３６】
アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」は、出力変数として、入力変数ｃによって表されるコンテクストの状態に関連する確率分布（または確率モデル）のインデックスを表す変数「ｐｋｉ」を提供する。変数「ｐｋｉ」は、例えば、マッピングルールインデックス値であってもよい。
【０２３７】
図５ｆによるアルゴリズムは、配列「ｉ＿ｄｉｆｆ［］」のコンテンツの定義を含む。明らかなように、（配列インデックス０を有する）配列「ｉ＿ｄｉｆｆ［］」の最初のエントリは、２９９に等しく、さらに、（配列インデックス１〜８を有する）さらなる配列エントリは、１４９、７４、３７、１８、９、４、２および１の値をとる。したがって、ハッシュテーブルインデックス値「ｉ＿ｍｉｎ」の選択のためのステップサイズは、配列「ｉ＿ｄｉｆｆ［］」のエントリが前記ステップサイズを定義するように、それぞれの反復で低減される。詳しくは、以下の議論について述べる。
【０２３８】
しかしながら、配列「ｉ＿ｄｉｆｆ［］」の異なるステップサイズ、例えば異なるコンテンツは、実際に選択されうり、配列「ｉ＿ｄｉｆｆ［］」のコンテンツは、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］」のサイズに当然に適している。
【０２３９】
変数「ｉ＿ｍｉｎ」は、アルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の始めに右に０の値をとるために初期化される点に留意すべきである。
【０２４０】
初期化ステップ５０８ａにおいて、変数ｓは、入力変数ｃに基づいて初期化され、変数ｃの数表現は、変数ｓの数表現を得るために、８ビットだけ左にシフトされる。
【０２４１】
その後、テーブル検索５０８ｂは、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリのハッシュテーブルインデックス値「ｉ＿ｍｉｎ」を確認するために、コンテクスト値ｃによって表されるコンテクスト値が、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値と他のエントリ「ａｒｉ＿ｈａｓｈ＿ｍ」が（そのハッシュテーブルインデックス値に関して）ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」に隣接する別のハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ」によって表されるコンテクスト値とによって囲まれる間隔内に位置するように、実行される。このように、アルゴリズム５０８ｂは、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」が少なくとも入力変数ｃによって表されるコンテクスト値に近似するように、ハッシュテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリ「ｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」を指定するハッシュテーブルインデックス値「ｉ＿ｍｉｎ」の決定を可能にする。
【０２４２】
テーブル検索５０８ｂは、サブアルゴリズム５０８ｂａの反復的な実行を含み、サブアルゴリズム５０８ｂａは、所定の数の例えば９回の反復のために実行される。サブアルゴリズム５０８ｂａの第１のステップにおいて、変数ｉは、変数「ｉ＿ｍｉｎ」の値およびテーブルエントリ「ｉ＿ｄｉｆｆ［ｋ］」の値の合計に等しい値に設定される。ｋは、サブアルゴリズム５０８ｂａのそれぞれの反復で、ｋ＝０の初期値から始まる、インクリメントされる実行中の変数である点にここで留意すべきである。配列「ｉ＿ｄｉｆｆ［］」は、所定のインクリメント値を定義し、インクリメント値は、インクリメントするテーブルインデックスｋすなわち反復のインクリメントする数とともに低減する。
【０２４３】
サブアルゴリズム５０８ｂａの第２のステップにおいて、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［］」の値は、変数ｊにコピーされる。好ましくは、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリの最上位ビットは、数値的なコンテクスト値重要な状態値を表し、さらに、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの最下位ビット（ビット０〜７）は、それぞれの重要な状態値と関連するマッピングルールインデックス値を表す。
【０２４４】
サブアルゴリズム５０８ｂａの第３のステップにおいて、変数Ｓの値は、変数ｊの値と比較され、さらに、変数「ｉ＿ｍｉｎ」は、変数ｓの値が変数ｊの値よりも大きい場合、値「ｉ＋１」に選択的に設定される。その後、サブアルゴリズム５０８ｂａの第１のステップ、第２のステップおよび第３のステップは、所定の回数、例えば９回、繰り返される。このように、サブアルゴリズム５０８ｂａのそれぞれの実行において、変数「ｉ＿ｍｉｎ」の値は、現在有効なハッシュテーブルインデックスｉ＿ｍｉｎ＋ｉ＿ｄｉｆｆ［］によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値よりも小さい場合およびその場合に限り、ｉ＿ｄｉｆｆ［］＋１だけインクリメントされる。したがって、ハッシュテーブルインデックス値「ｉ＿ｍｉｎ」は、入力変数ｃによってさらにしたがって変数ｓによって表されるコンテクスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＝ｉ＿ｍｉｎ＋ｄｉｆｆ［ｋ］］」によって表されるコンテクスト値よりも大きい場合（およびその場合に限り）、サブアルゴリズム５０８ｂａのそれぞれの実行において（反復的に）増加される。
【０２４５】
さらに、単一の比較、すなわち変数ｓの値が変数ｊの値よりも大きいかどうかに関する比較だけがサブアルゴリズム５０８ｂａのそれぞれの実行において実行される点に留意すべきである。したがって、アルゴリズム５０８ｂａは、計算的に特に効率的である。さらに、変数「ｉ＿ｍｉｎ」の最終的な値に関して異なる可能な結果がある点に留意すべきである。例えば、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値よりも小さく、さらに、テーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ＋１］」によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値よりも大きいサブアルゴリズム５１２ｂａの最後の実行の後に変数「ｉ＿ｍｉｎ」の値があることが可能である。その代わりに、サブアルゴリズム５０８ｂａの最後の実行の後、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ−１］」によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値よりも小さく、さらに、エントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値よりも大きいことが起こりうる。しかしながら、その代わりに、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値が入力変数ｃによって表されるコンテクスト値と同一であることが起こりうる。
【０２４６】
このために、決定ベースのリターン値提供５０８ｃが実行される。変数ｊは、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」の値をとるために設定される。その後、入力変数ｃによって（さらに変数ｓによっても）表されるコンテクスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値よりも大きい（条件「ｓ＞ｊ」によって定義される第１の場合）かどうか、または、入力変数ｃによって表されるコンテクスト値がハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値よりも小さい（条件「ｃ＜ｊ＞＞８」によって定義される第２の場合）かどうか、または、入力変数ｃによって表されるコンテクスト値がエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表されるコンテクスト値に等しい（第３の場合）かどうかが、決定される。
【０２４７】
第１の場合（ｓ＞ｊ）において、テーブルインデックス値「ｉ＿ｍｉｎ＋１」によって指定されるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍｉｎ＋１］」は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の出力値としてリターンされる。第２の場合（ｃ＜（ｊ＞＞８））において、テーブルインデックス値「ｉ＿ｍｉｎ」によって指定されるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［ｉ＿ｍｉｎ］」は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のリターン値としてリターンされる。第３の場合（すなわち入力変数ｃによって表されるコンテクスト値がテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表される重要な状態値に等しい場合）において、ハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」の最下位８ビットによって表されるマッピングルールインデックス値は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のリターン値としてリターンされる。
【０２４８】
上記を要約すると、特に単純なテーブル検索がステップ５０８ｂにおいて実行され、テーブル検索は、入力変数ｃによって表されるコンテクスト値がテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」の状態エントリのうちの１つによって定義される重要な状態値に等しいかどうかを区別しないで変数「ｉ＿ｍｉｎ」の変数値を提供する。テーブル検索５０８ｂに続いて実行されるステップ５０８ｃにおいて、入力変数ｃによって表されるコンテクスト値およびハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表される重要な状態値間の大きさ関係が評価され、さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のリターン値が前記評価の結果に基づいて選択され、テーブル評価５０８ｂにおいて決定される変数「ｉ＿ｍｉｎ」の値は、入力変数ｃによって表されるコンテクスト値がハッシュテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［ｉ＿ｍｉｎ］」によって表される重要な状態値と異なる場合であっても、マッピングルールインデックス値を選択するために考慮される。
【０２４９】
アルゴリズムにおける比較は、好ましくは（またはその代わりに）、コンテクストインデックス（数値的なコンテクスト値）ｃおよびｊ＝ａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８間において行われるべきである点にさらに留意すべきである。実際、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のそれぞれのエントリは、第８のビットを超えて符号化されるコンテクストインデックスおよび８つの第１のビット（最下位ビット）に符号化されるその対応する確率モデルを表す。現在の実施において、我々は、主に、ｓ＝ｃ＜＜８がａｒｉ＿ｈａｓｈ＿ｍ［ｉ］よりも大きいかどうかについて検出することに等しい現在のコンテクストｃがａｒｉ＿ｈａｓｈ＿ｍ［ｉ］＞＞８よりも大きいかどうかについて知っていることに興味がある。
【０２５０】
上記を要約すると、例えば図５ｃによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ，Ｎ）」または図５ｄによるアルゴリズム「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（ｃ，ｉ）」を用いて達成されうるコンテクスト状態が計算されると、最上位２ビット的なプレーンは、コンテクスト状態に対応する確率モデルに対応する適切な累積度数テーブルで呼び出される（以下に記載される）アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」を用いて復号化される。対応は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」、例えば図５ｆに関して述べられている関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって行われる。
【０２５１】
１１．６  算術復号化
【０２５２】
１１．６．１  図５ｇによるアルゴリズムを用いる算術復号化
【０２５３】
以下において、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の好適な実施の機能が図５ｇに関して詳細に述べられる。図５ｇは、用いられたアルゴリズムを表す疑似Ｃコードを示す。
【０２５４】
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、それがシーケンスの最初のシンボルである場合にＴＲＵＥをリターンし、そうでない場合にＦＡＬＳＥをリターンするヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（ｖｏｉｄ）」を用いる点に留意すべきである。また、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、ビットストリームの次のビットを得てさらに提供するヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ（ｖｏｉｄ）」も用いる。
【０２５５】
加えて、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、グローバル変数「ｌｏｗ」、「ｈｉｇｈ」および「ｖａｌｕｅ」を用いる。さらに、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、入力変数として、選択された累積度数テーブルまたは累積度数サブテーブル（好ましくは、図２３（１）、図２３（２）、図２３（３）のテーブル表現によって定義されるように、テーブルａｒｉ＿ｃｆ＿ｍ［６４］［１７］のサブテーブルａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝０］［１７］からａｒｉ＿ｃｆ＿ｍ［ｐｋｉ＝６３］［１７］までのうちの１つ）の（エレメントインデックスまたはエントリインデックス０を有する）最初のエントリまたはエレメントの方を指し示す変数「ｃｕｍ＿ｆｒｅｑ［］」を受信する。また、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、変数「ｃｕｍ＿ｆｒｅｑ［］」によって指定される選択された累積度数テーブルまたは累積度数サブテーブルの長さを示す入力変数「ｃｆｌ」を用いる。
【０２５６】
関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、第１のステップとして、一連のシンボルの最初のシンボルが復号化されていることをヘルパー関数「ａｒｉｔｈ＿ｆｉｒｓｔ＿ｓｙｍｂｏｌ（）」が示す場合に実行される変数初期化５７０ａを含む。値初期化５５０ａは、変数「ｖａｌｕｅ」が前記ビットによって表される値をとるように、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」を用いてビットストリームから得られる複数の例えば１６のビットに基づいて変数「ｖａｌｕｅ」を初期化する。また、変数「ｌｏｗ」は、０の値をとるために初期化され、さらに、、変数「ｈｉｇｈ」は、６５５３５の値をとるために初期化される。
【０２５７】
第２のステップ５７０ｂにおいて、変数「ｒａｎｇｅ」は、変数「ｈｉｇｈ」および「ｌｏｗ」の値間の差よりも１だけ大きい値に設定される。変数「ｃｕｍ」は、変数「ｌｏｗ」の値および変数「ｈｉｇｈ」の値間の変数「ｖａｌｕｅ」の値の相対的な位置を表す値に設定される。したがって、変数「ｃｕｍ」は、例えば、変数「ｖａｌｕｅ」の値に基づいて０および２１６間の値をとる。
【０２５８】
ポインタｐは、選択された累積度数テーブルまたはサブテーブルの開始アドレスよりも１だけ小さい値に初期化される。
【０２５９】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、反復的な累積度数テーブル検索５７０ｃも含む。反復的な累積度数テーブル検索は、変数１ｃｆがｌよりも小さいまたはそれに等しいまで繰り返される。反復的な累積度数テーブル検索５７０ｃにおいて、ポインタ変数ｑは、ポインタ変数ｐの現在の値および変数「ｃｆｌ」の半分の値の合計に等しい値に設定される。エントリがポインタ変数ｑによって述べられる選択された累積度数テーブルのエントリ＊ｑが変数「ｃｕｍ」の値よりも大きい場合、ポインタ変数ｐは、ポインタ変数ｑの値に設定され、さらに、変数「ｃｆｌ」の値は、インクリメントされる。最後に、変数「ｃｆｌ」は、１ビットだけ右にシフトされ、それによって、効果的に変数「ｃｆｌ」の値を２で分割しさらにモジュロ部分を無視する。
【０２６０】
したがって、反復的な累積度数テーブル検索５７０ｃは、値ｃｕｍが確認された間隔内に位置するように、累積度数テーブルのエントリによって囲まれる選択された累積度数テーブル内で間隔を確認するために、変数「ｃｕｍ」の値を選択された累積度数テーブルの複数のエントリと効果的に比較する。したがって、選択された累積度数テーブルのエントリは、間隔を定義し、それぞれのシンボル値は、選択された累積度数テーブルの間隔のそれぞれに関連する。また、累積度数テーブルの２つの隣接する値間の間隔の幅は、その全体において選択された累積度数テーブルが異なるシンボル（またはシンボル値）の確率分布を定義するように、前記間隔と関連するシンボルの確率を定義する。利用できる累積度数テーブルまたは累積度数サブテーブルに関する詳細が図２３を参照して以下に述べられる。
【０２６１】
図５ｇを再び参照して、シンボル値は、ポインタ変数ｐの値から導き出され、シンボル値は、参照番号５７０ｄで示されるように導き出される。このように、ポインタ変数ｐの値および開始アドレス「ｃｕｍ＿ｆｒｅｑ」間の差は、変数「ｓｙｍｂｏｌ」によって表されるシンボル値を得るために評価される。
【０２６２】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」は、変数「ｈｉｇｈ」および「ｌｏｗ」の適合５７０ｅも含む。変数「ｓｙｍｂｏｌ」によって表されるシンボル値が０と異なる場合、変数「ｈｉｇｈ」は、参照番号５７０ｅに示されるように、更新される。また、変数「ｌｏｗ」の値は、参照番号５７０ｅに示されるように、更新される。変数「ｈｉｇｈ」は、変数「ｌｏｗ」の値、変数「ｒａｎｇｅ」および選択された累積度数テーブルまたは累積度数サブテーブルのインデックス「ｓｙｍｂｏｌ−１」を有するエントリによって決定される値に設定される。変数「ｌｏｗ」は、増加し、増加の大きさは、変数「ｒａｎｇｅ」およびインデックス「ｓｙｍｂｏｌ」を有する選択された累積度数テーブルのエントリによって決定される。したがって、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の差は、選択された累積度数テーブルの２つの隣接するエントリ間の数値的な差に基づいて調整される。
【０２６３】
したがって、低い確率を有するシンボル値が検出される場合、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔は、狭い幅に低減される。対照的に、検出されたシンボル値が比較的大きい確率を含む場合、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔の幅は、比較的大きい値に設定される。再び、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔の幅は、累積度数テーブルの検出されたシンボルおよび対応するエントリに依存する。
【０２６４】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、間隔繰り込み５７０ｆも含み、ステップ５７０ｅにおいて決定される間隔は、「ｂｒｅａｋ」条件に達するまで反復的にシフトされさらにスケールされる。間隔繰り込み５７０ｆにおいて、選択的な下方シフト演算５７０ｆａが実行される。変数「ｈｉｇｈ」が３２７６８よりも小さい場合、何も行われなく、さらに、間隔繰り込みが間隔サイズ増加演算５７０ｆｂを続ける。しかしながら、変数「ｈｉｇｈ」が３２７６８よりも小さくなく、さらに、変数「ｌｏｗ」が３２７６８以上である場合、変数「ｖａｌｕｅ」、「ｌｏｗ」および「ｈｉｇｈ」の全ては、変数「ｌｏｗ」および「ｈｉｇｈ」によって定義される間隔が下方にシフトされ、さらに、変数「ｖａｌｕｅ」の値も下方にシフトされるように、３２７６８だけ低減される。しかしながら、変数「ｈｉｇｈ」の値が３２７６８よりも小さくなく、さらに、変数「ｌｏｗ」が３２７６８以上でなく、さらに、変数「ｌｏｗ」が１６３８４以上であり、さらに、変数「ｈｉｇｈ」が４９１５２よりも小さいことが見いだされている場合、変数「ｖａｌｕｅ」、「ｌｏｗ」および「ｈｉｇｈ」の全ては、１６３８４だけ低減され、それによって、変数「ｈｉｇｈ」および「ｌｏｗ」の値の間の間隔と変数「ｖａｌｕｅ」の値とを下方にシフトする。しかしながら、上述の条件のどちらも満たされない場合、間隔繰り込みは、停止される。
【０２６５】
しかしながら、ステップ５７０ｆａにおいて評価される上述の条件のいずれかが満たされる場合、間隔増加演算５７０ｆｂは、実行される。間隔増加演算５７０ｆｂにおいて、変数「ｌｏｗ」の値は、２倍になる。また、変数「ｈｉｇｈ」の値は、２倍になり、さらに、２倍にする結果は、１だけ増加される。また、変数「ｖａｌｕｅ」の値は、（１ビットだけ左にシフトされ）２倍になり、さらに、ヘルパー関数「ａｒｉｔｈ＿ｇｅｔ＿ｎｅｘｔ＿ｂｉｔ」によって得られるビットストリームのビットは、最下位ビットとして用いられる。したがって、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔のサイズは、近似的に２倍になり、さらに、変数「ｖａｌｕｅ」の精度は、ビットストリームの新しいビットを用いることによって増加される。上述のように、ステップ５７０ｆａおよび５７０ｆｂは、「ｂｒｅａｋ」条件に達するまで、すなわち変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔が十分に大きくなるまで繰り返される。
【０２６６】
アルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の機能に関して、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔は、変数「ｃｕｍ＿ｆｒｅｑ」によって参照される累積度数テーブルの２つの隣接するエントリに基づいてステップ５７０ｅにおいて低減される点に留意すべきである。選択された累積度数テーブルの２つの隣接する値間の間隔が小さい場合、すなわち隣接する値が互いに比較的接近している場合、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔は、比較的小さい。対照的に、累積度数テーブルの２つの隣接するエントリがさらに間隔を置かれる場合、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔は、比較的大きい。
【０２６７】
したがって、ステップ５７０ｅにおいて得られる変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔が比較的小さい場合、多数の間隔繰り込みステップは、（条件評価５７０ｆａの条件のどちらも満たされないように、）間隔を「ｓｕｆｆｉｃｉｅｎｔ（十分な）」サイズにリスケールするために実行される。したがって、ビットストリームからの比較的多数のビットが、変数「ｖａｌｕｅ」の精度を増加するために用いられる。対照的に、ステップ５７０ｅにおいて得られる間隔サイズが比較的大きい場合、間隔繰り込みステップ５７０ｆａおよび５７０ｆｂのより少数の反復だけが、変数「ｌｏｗ」および「ｈｉｇｈ」の値間の間隔を「ｓｕｆｆｉｃｉｅｎｔ（十分な）」サイズに繰り込むために必要とされる。したがって、ビットストリームからの比較的少数のビットだけが、変数「ｖａｌｕｅ」の精度を増加しさらに次のシンボルの復号化を準備するために用いられる。
【０２６８】
上記を要約すると、比較的高い確率を含みさらに大きい間隔が選択された累積度数テーブルのエントリによって関連するシンボルが、復号化される場合、比較的少数のビットだけが、後のシンボルの復号化を可能にするために、ビットストリームから読み取られる。対照的に、比較的小さい確率を含みさらに小さい間隔が選択された累積度数テーブルのエントリによって関連するシンボルが、復号化される場合、比較的多数のビットが、次のシンボルの復号化を準備するために、ビットストリームからとられる。
【０２６９】
したがって、累積度数テーブルのエントリは、異なるシンボルの確率を反映し、さらに一連のシンボルを復号化するために必要なビットの数も反映する。コンテクストに基づいてすなわち前に復号化されたシンボル（またはスペクトル値）に基づいて累積度数テーブルを変化することによって、例えば、コンテクストに基づいて異なる累積度数テーブルを選択することによって、後の（または隣接する）シンボルの特定のビットレート効率的な符号化を可能にする異なるシンボル間の確率論的な依存を利用することができる。
【０２７０】
上記を要約すると、図５ｇに関して記載されている関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」は、（リターン変数「ｓｙｍｂｏｌ」によって表されるシンボル値に設定されうる）最上位ビットプレーン値ｍを決定するために関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によってリターンされるインデックス「ｐｋｉ」に対応する、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼び出される。
【０２７１】
上記を要約すると、算術デコーダは、スケーリングを有するタグ生成の方法を用いる整数実施である。詳しくは、Ｋ．Ｓａｙｏｏｄの書籍「Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ」、第３版、２００６年、Ｅｌｓｅｖｉｅｒ  Ｉｎｃ．について述べる。
【０２７２】
図５ｇによるコンピュータプログラムコードは、本発明の実施形態による用いられたアルゴリズムを表す。
【０２７３】
１１．６．２  図５ｈおよび図５ｉによるアルゴリズムを用いる算術復号化
【０２７４】
図５ｈおよび図５ｉは、図５ｇに関して記載されるアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ」に代わるものとして用いることができるアルゴリズム「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の別の実施形態の疑似プログラムコード表現を示す。
【０２７５】
図５ｇおよび図５ｈおよび図５ｉによる両方のアルゴリズムは、図３によるアルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」において用いられうる点に留意すべきである。
【０２７６】
要約すると、値ｍは、（好ましくは図２３（１）、図２３（２）、図２３（３）のテーブル表現において定義されるテーブルａｒｉ＿ｃｆ＿ｍ［６７］［１７］のサブテーブルである）累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼び出される関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を用いて復号化され、「ｐｋｉ」は、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によってリターンされるインデックスに対応する。算術コーダ（またはデコーダ）は、スケーリングを有するタグ生成の方法を用いる整数実施である。詳しくは、Ｋ．Ｓａｙｏｏｄの書籍「Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ」、第３版、２００６年、Ｅｌｓｅｖｉｅｒ  Ｉｎｃ．について述べる。図５ｈおよび図５ｉによるコンピュータプログラムコードは、用いられたるアルゴリズムを表す。
【０２７７】
１１．７  エスケープメカニズム
【０２７８】
以下において、図３による復号化アルゴリズム「ｖａｌｕｅｓ＿ｄｅｃｏｄｅ（）」において用いられるエスケープメカニズムが簡単に述べられる。
【０２７９】
（関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」のリターン値として提供される）復号化された値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」であるときに、変数「ｌｅｖ」および「ｅｓｃ＿ｎｂ」は、１だけインクリメントされ、さらに、別の値ｍは、復号化される。この場合、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」（または「ｇｅｔ＿ｐｋ（）」）は、入力引数として値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」でもう一度呼び出され、変数「ｅｓｃ＿ｎｂ」は、同じ２タプルのために前に復号化されさらに７にバウンドされるエスケープシンボルの数を表す。
【０２８０】
要約すると、エスケープシンボルが確認される場合、最上位ビットプレーン値ｍは、増加された数値的な重みを含むと仮定される。さらに、現在の数値的な復号化は、繰り返され、修正された数値的な現在のコンテクスト値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」は、入力変数として関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」に用いられる。したがって、異なるマッピングルールインデックス値「ｐｋｉ」は、サブアルゴリズムの異なる反復において典型的に得られる。
【０２８１】
１１．８  算術停止メカニズム
【０２８２】
以下において、算術停止メカニズムが記載される。算術停止メカニズムは、上方の周波数部分がオーディオエンコーダにおいて０に完全に量子化される場合に、必要なビットの数の低減を可能にする。
【０２８３】
実施形態において、算術停止メカニズムは、以下のように実施されうる。一旦、値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」でないと、デコーダは、連続したｍが「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルを形成するかどうかをチェックする。条件「（ｅｓｃ＿ｎｂ＞０＆＆ｍ＝＝０）」が真である場合、「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルは、検出され、さらに、復号化処理は、終了する。この場合、デコーダは、直接的に、以下に記載される符号復号化または以下に記載される「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」関数にジャンプする。条件は、フレームの残りがゼロ値から成ることを意味する。
【０２８４】
１１．９  下位ビットプレーン復号化
【０２８５】
以下において、１つ以上の下位ビットプレーンの復号化が記載される。下位ビットプレーンの復号化は、例えば、図３に示されるステップ３１２ｄにおいて実行される。しかしながら、その代わりに、図５ｊおよび図５ｎに示されるようなアルゴリズムが用いられうり、図５ｊのアルゴリズムは、好適なアルゴリズムである。
【０２８６】
１１．９．１  図５ｊによる下位ビットプレーン復号化
【０２８７】
図５ｊをこれから参照して、変数ａおよびｂの値は、値ｍから導き出されることが明らかである。例えば、値ｍの数表現は、変数ｂの数表現を得るために、２ビットだけ右にシフトされる。さらに、変数ａの値は、変数ｍの値から、２ビットだけ左にビットシフトされる、変数ｂの値のビットシフトされたバージョンを減算することによって得られる。
【０２８８】
その後、最下位ビットプレーン値ｒの算術復号化は、繰り返され、反復の数は、変数「ｌｅｖ」の値によって決定される。最下位ビットプレーン値ｒは、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」を用いて得られ、最下位ビットプレーン復号化に適している累積度数テーブルが、用いられる（累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ」）。変数ｒの（１の数値的な重みを有する）最下位ビットは、変数ａによって表されるスペクトル値の下位ビットプレーンを表し、さらに、変数ｒの２の数値的な重みを有するビットは、変数ｂによって表されるスペクトル値の下位ビットを表す。したがって、変数ａは、変数ａを１ビットだけ左にシフトし、さらに、最下位ビットとして変数ｒの１の数値的な重みを有するビットを加算することによって更新される。同様に、変数ｂは、変数ｂを１ビットだけ左にシフトし、さらに、変数ｒの２の数値的な重みを有するビットを加算することによって更新される。
【０２８９】
したがって、変数ａ、ｂのビットを伝える２つの最も重要な情報は、最上位ビットプレーン値ｍによって決定され、さらに、値ａおよびｂの（もしあれば）１つ以上の最下位ビットは、１つ以上の下位ビットプレーン値ｒによって決定される。
【０２９０】
上記を要約すると、「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルが満たされない場合、残りのビットプレーンは、いずれかが存在する場合、現在の２タプルのためにそれから復号化される。残りのビットプレーンは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ［］」で関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」ｌｅｖ回数を呼び出すことによって、最上位から最下位レベルまで復号化される。復号化されたビットプレーンｒは、疑似プログラムコードが図５ｊに示されるアルゴリズムに従って前に復号化された値ｍをリファインすることを許可する。
【０２９１】
１１．９．２  図５ｎによる下位ビットバンド復号化
【０２９２】
しかしながら、その代わりに、疑似プログラムコード表現が図５ｎに示されるアルゴリズムを、下位ビットプレーン復号化のために用いることもできる。この場合、「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルが満たされない場合、残りのビットプレーンは、いずれかが存在する場合、現在の２タプルのためにそれから復号化される。残りのビットプレーンは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ（）」で「ｌｅｖ」回数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を呼び出すことによって、最上位から最下位レベルまで復号化される。復号化されたビットプレーンｒは、図５ｎに示されるアルゴリズムに従って前に復号化された値ｍのリファインのために許可する。
【０２９３】
１１．１０  コンテクスト更新
【０２９４】
１１．１０．１  図５ｋ、図５ｌおよび図５ｍによるコンテクスト更新
【０２９５】
以下において、スペクトル値のタプルの復号化を完全にするために用いられる演算が図５ｋおよび図５ｌを参照して記載される。さらに、オーディオコンテンツの現在の部分（例えば現在のフレーム）と関連するスペクトル値のタプルのセットの復号化を完全にするために用いられる演算が記載される。
【０２９６】
図５ｋ、図５ｌおよび図５ｍによるアルゴリズムは、代わりのアルゴリズムが用いられうるにもかかわらず、好ましい点に留意すべきである。
【０２９７】
図５ｋをこれから参照して、下位ビット復号化３１２ｄの後に、配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリインデックス２＊ｉを有するエントリがａに等しく設定され、さらに、配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリインデックス「２＊ｉ＋１」を有するエントリがｂに等しく設定されることが明らかである。換言すれば、下位ビット復号化３１２ｄの後の時点で、２タプル｛ａ，ｂ｝の符号なしの値は、完全に復号化される。それは、図５ｋに示されるアルゴリズムに従ってスペクトル係数を保持する配列（例えば配列「ｘ＿ａｃ＿ｄｅｃ［］」）に保存される。
【０２９８】
その後、コンテクスト「ｑ」は、次の２タプルのためにも更新される。このコンテクスト更新は、最後の２タプルのためにも実行されなければならない点に留意すべきである。このコンテクスト更新は、疑似プログラムコード表現が図５ｌに示される関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって実行される。
【０２９９】
図５ｌをこれから参照して、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（ｉ，ａ，ｂ）」は、入力変数として、２タプルの復号化され符号なしの量子化されたスペクトル係数（またはスペクトル値）ａ、ｂを受信することが明らかである。加えて、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」は、入力変数として、復号化する量子化されたスペクトル係数のインデックスｉ（例えば周波数インデックス）も受信する。換言すれば、入力変数ｉは、例えば、絶対値が入力変数ａ、ｂによって定義されるスペクトル値のタプルのインデックスであってもよい。明らかなように、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、ａ＋ｂ＋１に等しい値に設定されうる。加えて、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」の値は、「０ｘＦ」の１６進値に制限されうる。このように、配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、周波数インデックスｉを有するスペクトル値の現在復号化されたタプル｛ａ，ｂ｝の絶対値の合計を計算しさらに前記合計の結果に１を加算することによって得られる。
【０３００】
配列「ｑ［］［］」のエントリ「ｑ［１］［ｉ］」は、それが付加的なスペクトル値（またはスペクトル値のタプル）の後の復号化のために用いられるコンテクストのサブ区域を表すので、コンテクストサブ区域値として考慮されうる点にここで留意すべきである。
【０３０１】
（その符号付きのバージョンが配列「ｘ＿ａｃ＿ｄｅｃ［］」のエントリ「ｘ＿ａｃ＿ｄｅｃ［２＊ｉ］」および「ｘ＿ａｃ＿ｄｅｃ［２＊ｉ＋１］」に格納される）２つの現在復号化されたスペクトル値の絶対値ａおよびｂの合計は、復号化されたスペクトル値のノルム（例えばＬ１ノルム）の計算として考慮されうる点にここで留意すべきである。
【０３０２】
複数の前に復号化されたスペクトル値によって形成されるベクトルのノルムを表すコンテクストサブ区域値（すなわち配列「ｑ［］［］」のエントリ）は、特に意味がありさらにメモリ効率がよいことが見いだされている。複数の前に復号化スペクトル値に基づいて計算されるそのようなノルムは、コンパクトな形式で意味のあるコンテクスト情報を含むことが見いだされている。スペクトル値の符号は、典型的にコンテクストの選択のために特に関連しないことが見いだされている。複数の前に復号化されたスペクトル値全体のノルムの形成は、いくつかの詳細が破棄される場合があるにもかかわらず、典型的に最も重要な情報を維持することも見いだされている。さらに、最大値への数値的な現在のコンテクスト値の制限は、典型的に情報の多大な損失をもたらさないことが見いだされている。むしろ、所定の閾値よりも大きい重要なスペクトル値のための同じコンテクスト状態を用いることがより効率的であることが見いだされている。このように、コンテクストサブ区域値の制限は、メモリ効率のさらなる改良をもたらす。さらに、特定の最大値へのコンテクストサブ区域値の制限は、例えば図５ｃおよび図５ｄに関して記載されている数値的な現在のコンテクスト値の特に単純なおよび計算的に効率的な更新を可能にすることが見いだされている。コンテクストサブ区域値を比較的小さい値に（例えば１５の値に）制限することによって、複数のコンテクストサブ区域値に基づくコンテクスト状態を、図５ｃおよび図５ｄを参照して述べられている効率的な形式で表すことができる。
【０３０３】
さらに、１および１５間の値へのコンテクストサブ区域値の制限は、精度およびメモリ効率間の特に良好な妥協をもたらすことが見いだされているが、その理由は、４ビットがそのようなコンテクストサブ区域値を格納するために十分であるからである。
【０３０４】
しかしながら、いくつかの他の実施形態において、コンテクストサブ区域値は、単一の復号化されたスペクトル値だけに基づいてもよい点に留意すべきである。この場合、ノルムの形成は、任意に省略されうる。
【０３０５】
フレームの次の２タプルは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」から始まって、ｉを１だけインクリメントすることによってさらに上述と同じ処理をやり直すことによって、関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ」の完了の後に復号化される。
【０３０６】
ｌｇ／２の２タプルがフレーム内で復号化されるときにまたは停止シンボル「ＡＲＩＴＨ＿ＳＴＯＰ」が生じると、スペクトル振幅の復号化処理が終了し、さらに、符号の復号化が開始する。
【０３０７】
符号の復号化に関する詳細が図３に関して述べられ、符号の復号化は、参照番号３１４において示される。
【０３０８】
一旦、全ての符号なしの量子化されたスペクトル係数が復号化されると、対応する符号が加算される。「ｘ＿ａｃ＿ｄｅｃ」のヌルでない量子化された値ごとに、ビットが読み取られる。読み取られたビット値が１に等しい場合、量子化された値は正であり、何も行われず、さらに、符号付きの値は前に復号化された符号なしの値に等しい。さもなければ（すなわち読み取られたビット値が０に等しい場合）、復号化された係数（またはスペクトル値）は負であり、さらに、２つの補数は符号なしの値からとられる。符号ビットは、下からより高い周波数まで読み取られる。詳しくは、図３についてさらに符号復号化３１４に関する説明について述べる。
【０３０９】
復号化は、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」を呼び出すことによって終了される。残りのスペクトル係数は、０に設定される。それぞれのコンテクスト状態は、対応して更新される。
【０３１０】
詳しくは、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」の疑似プログラムコード表現を示す図５ｍについて述べる。明らかなように、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」は、復号化され量子化されたスペクトル係数を表す入力変数ｌｇを受信する。好ましくは、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の入力変数ｌｇは、スペクトル値を考慮しないで、０値が「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルの検出に応じて割り当てられている実際に復号化されたスペクトル係数の数を表す。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の入力変数Ｎは、現在のウィンドウ（すなわちオーディオコンテンツの現在の部分と関連するウィンドウ）のウィンドウの長さを表す。典型的に、長さＮのウィンドウと関連するスペクトル値の数は、Ｎ／２に等しく、さらに、ウィンドウの長さＮのウィンドウと関連するスペクトル値の２タプルの数は、Ｎ／４に等しい。
【０３１１】
関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」は、入力値として、復号化されたスペクトル値のベクトル「ｘ＿ａｃ＿ｄｅｃ」または少なくとも復号化されたスペクトル係数のそのようなベクトルの参照を受信する。
【０３１２】
関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」は、スペクトル値が算術停止条件の存在のため復号化されなかった配列（またはベクトル）「ｘ＿ａｃ＿ｄｅｃ」のエントリを０に設定するように構成される。さらに、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」は、値が算術停止条件の存在のため復号化されなかったスペクトル値と関連するコンテクストサブ区域値「ｑ［１］［ｉ］」を１の所定の値に設定する。１の所定の値は、スペクトル値のタプルに対応し、両方のスペクトル値は、０に等しい。
【０３１３】
したがって、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」は、算術停止条件の存在においても、スペクトル値の全体の配列（またはベクトル）「ｘ＿ａｃ＿ｄｅｃ［］」およびコンテクストサブ区域値「ｑ［１］［ｉ］」の全体の配列を更新することを可能にする。
【０３１４】
１１．１０．２  図５ｏおよび図５ｐによるコンテクスト更新
【０３１５】
以下において、コンテクスト更新の別の実施形態が図５ｏおよび図５ｐを参照して記載される。２タプル（ａ、ｂ）の符号なしの値が完全に復号化される時点で、コンテクストｑは、それから次の２タプルのために更新される。更新は、現在の２タプルが最後の２タプルである場合にも実行される。両方の更新は、疑似プログラムコード表現が図５ｏに示される関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって行われる。
【０３１６】
フレームの次の２タプルは、それから、ｉを１だけインクリメトしさらに関数ａｒｉｔｈ＿ｄｅｃｏｄｅ（）を呼び出すことによって復号化される。ｌｇ／２の２タプルがフレームですでに復号化された場合、または、停止シンボル「ＡＲＩＴＨ＿ＳＴＯＰ」が生じる場合、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」が呼び出される。コンテクストは、次のフレームのための配列（またはベクトル）「ｑｓ」において保存されさらに格納される。関数「ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコードは、図５ｐに示される。
【０３１７】
一旦、全ての符号なしの量子化されたスペクトル係数が復号化されると、符号がそれから加算される。「ｑｄｅｃ」の非量子化された値ごとに、ビットが読み取られる。読み取られたビット値が０に等しい場合、量子化された値は正であり、何も行われず、さらに、符号付の値は前に復号化された符号なしの値に等しい。さもなければ、復号化された係数は負であり、さらに、２つの補数は符号なしの値からとられる。符号付のビットは、下から高い周波数まで読み取られる。
【０３１８】
１１．１１  復号化処理の要約
【０３１９】
以下において、復号化処理が簡単に要約される。詳しくは、上述の議論および図３、図４、図５ａ、図５ｃ、図５ｅ、図５ｇ、図５ｊ、図５ｋ、図５ｌおよび図５ｍについて述べる。量子化されたスペクトル係数「ｘ＿ａｃ＿ｄｅｃ［］」は、最も低い周波数係数から始まって最も高い周波数係数に進んでノイズレスに復号化される。それらは、（｛ａ，ｂ｝でも指定される）いわゆる２タプル（ａ、ｂ）において集める２つの連続した係数ａ、ｂのグループによって復号化される。
【０３２０】
周波数領域のための（すなわち周波数領域モードのための）復号化された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、それから配列「ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］」に格納される。ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、「ｂｉｎ」が最も急速にインクリメントするインデックスであり、さらに、「ｇ」が最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａそしてｂである。「ＴＣＸ」のための（すなわち変換符号化された励起を用いるオーディオ復号化のための）復号化された係数「ｘ＿ａｃ＿ｄｅｃ［］」は、（例えば、）配列「ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］」に（直接的に）格納され、さらに、ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、「ｂｉｎ」が最も急速にインクリメントするインデックスであり、さらに、「ｗｉｎ」が最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａそしてｂである。
【０３２１】
最初に、フラグ「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」は、コンテクストがリセットされなければならないかどうかを決定する。フラグが真である場合、これは、関数「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」において考慮される。
【０３２２】
復号化処理は、コンテクストエレメントベクトル「ｑ」が「ｑ［１］［］」に格納される前のフレームのコンテクストエレメントを「ｑ［０］［］」にコピーしさらにマップすることによって更新される初期設定段階から始まる。「ｑ」内のコンテクストエレメントは、２タプルごとに４ビットに格納される。詳しくは、図５ａの疑似プログラムコードについて述べる。
【０３２３】
ノイズレスデコーダは、符号なしの量子化されたスペクトル係数の２タプルを出力する。最初に、コンテクストの状態ｃは、復号化する２タプルを囲む前に復号化されたスペクトル係数に基づいて計算される。したがって、状態は、２つの新しい２タプルだけを考慮して、最後の復号化された２タプルのコンテクスト状態を用いて増加的に更新される。状態は、１７ビットに復号化され、さらに、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」によってリターンされる。設定された関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現は、図５ｃに示される。
【０３２４】
コンテクスト状態ｃは、最上位２ビット的なプレーンｍを復号化するために用いられる累積度数テーブルを決定する。ｃから対応する累積度数テーブルインデックス「ｐｋｉ」へのマッピングは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によって実行される。関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の疑似プログラムコード表現は、図５ｅに示される。
【０３２５】
値ｍは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］」で呼び出される関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」を用いて復号化され、「ｐｋｉ」は、「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」によってリターンされるインデックスに対応する。算術コーダ（およびデコーダ）は、スケーリングを有するタグ生成の方法を用いる整数実施である。図５ｇによる疑似プログラムコードは、用いられたアルゴリズムを表す。
【０３２６】
復号化された値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」であるときに、変数「ｌｅｖ」および「ｅｓｃ＿ｎｂ」は、１だけインクリメントされ、さらに、別の値ｍは、復号化される。この場合、関数「ｇｅｔ＿ｐｋ（）」は、入力引数として値「ｃ＋ｅｓｃ＿ｎｂ＜＜１７」でもう一度呼び出され、「ｅｓｃ＿ｎｂ」は、同じ２タプルのために前に復号化されさらに７にバウンドされるエスケープシンボルの数である。
【０３２７】
一旦、値ｍがエスケープシンボル「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」でないと、デコーダは、連続したｍが「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルを形成するかどうかをチェックする。条件「（ｅｓｃ＿ｎｂ＞０＆＆ｍ＝＝０）」が真である場合、「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルは、検出され、さらに、復号化処理は、終了する。デコーダは、直接的に、以下に記載される符号復号化にジャンプする。条件は、フレームの残りが０値から成ることを意味する。
【０３２８】
「ＡＲＩＴＨ＿ＳＴＯＰ」シンボルが満たされない場合、残りのビットプレーンは、いずれかが存在する場合、現在の２タプルのためにそれから復号化される。残りのビットプレーンは、累積度数テーブル「ａｒｉｔｈ＿ｃｆ＿ｒ［］」で「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」ｌｅｖ回数を呼び出すことによって、最上位から最下位レベルまで復号化される。復号化されたビットプレーンｒは、擬似プログラムコードが図５ｊに示されるアルゴリズムに従って、前に復号化された値ｍのリファインを許可する。この時点で、２タプル（ａ、ｂ）の符号なしの値は、完全に復号化される。それは、疑似プログラムコード表現が図５ｋに示されるアルゴリズムに従ってスペクトル係数を保持するエレメントに保存される。
【０３２９】
コンテクスト「ｑ」は、次の２タプルのためにも更新される。このコンテクスト更新は、最後の２タプルのためにも実行されなければならない点に留意すべきである。このコンテクスト更新は、疑似プログラムコード表現が図５ｌに示される関数「ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）」によって実行される。
【０３３０】
フレームの次の２タプルは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」から始まって、ｉを１だけインクリメントすることによってさらに上述と同じ処理をやり直すことによって復号化される。ｌｇ／２の２タプルがフレーム内で復号化されるときにまたは停止シンボル「ＡＲＩＴＨ＿ＳＴＯＰ」が生じるときに、スペクトル振幅の復号化処理が終了し、さらに、符号の復号化が開始する。
【０３３１】
復号化は、関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ（）」を呼び出すことによって終了される。残りのスペクトル係数は、０に設定される。それぞれのコンテクスト状態は、対応して更新される。関数「ａｒｉｔｈ＿ｆｉｎｉｓｈ」の疑似プログラムコード表現は、図５ｍに示される。
【０３３２】
一旦、全ての符号なしの量子化されたスペクトル係数が復号化されると、対応する符号が加算される。「ｘ＿ａｃ＿ｄｅｃ」のヌルでない量子化された値ごとに、ビットが読み取られる。読み取られたビット値が１に等しい場合、量子化された値は正であり、何も行われず、さらに、符号付きの値は前に復号化された符号なしの値に等しい。さもなければ、復号化された係数は負であり、さらに、２つの補数は符号なしの値からとられる。符号付のビットは、下から高い周波数まで読み取られる。
【０３３３】
１１．１２  凡例
【０３３４】
図５ｑは、図５ａ、５ｃ、５ｅ、５ｆ、５ｇ、５ｊ、５ｋ、５ｌおよび５ｍによるアルゴリズムに関連する定義の凡例を示す。
【０３３５】
図５ｒは、図５ｂ、５ｄ、５ｆ、５ｈ、５ｉ、５ｎ、５ｏおよび５ｐによるアルゴリズムに関連する定義の凡例を示す。
【０３３６】
１２．  マッピングテーブル
【０３３７】
本発明による実施形態において、特に有利なテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」、「ａｒｉ＿ｈａｓｈ＿ｍ」および「ａｒｉ＿ｃｆ＿ｍ」は、図５ｅまたは図５ｆによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」の実行のために、さらに、図５ｇ、図５ｈおよび図５ｉに関して述べられた関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行のために用いられる。しかしながら、異なるテーブルがいくつかの代わりの実施形態において用いられうる点に留意すべきである。
【０３３８】
１２．１  図２２（１）、図２２（２）、図２２（３）および図２２（４）によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」
【０３３９】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」によって用いられ、第１の好適な実施形態が図５ｅに関して記載されさらに第２実施形態が図５ｆに関して記載されている、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」の特に有利な実施のコンテンツは、図２２（１）から図２２（４）のテーブルにおいて示される。図２２（１）から図２２（４）のテーブル表現は、テーブル（または配列）「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」の７４２のエントリをリストする点に留意すべきである。図２２（１）から図２２（４）のテーブル表現は、最初の値「０ｘ０００００１０４ＵＬ」がエレメントインデックス（またはテーブルインデックス）０を有するテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［０］」に対応するように、さらに、最後の値「０ｘＦＦＦＦＦＦ００ＵＬ」がエレメントインデックスまたはテーブルインデックス７４１を有するテーブルエントリ「ａｒｉ＿ｈａｓｈ＿ｍ［７４１］」に対応するように、エレメントインデックスの順序にエレメントを示す点にも留意すべきである。「０ｘ」は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリが１６進形式において表されることを示す点にここでさらに留意すべきである。さらに、添え字「ＵＬ」は、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリが（３２ビットの精度を有する）符号なしの「ｌｏｎｇ」整数値として表されることを示す点にここで留意すべきである。
【０３４０】
さらに、図２２（１）から図２２（４）によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のテーブルエントリは、関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）」のテーブル検索５０６ｂ、５０８ｂ、５１０ｂの実行を可能にするために、数値的な順序に配置される点に留意すべきである。
【０３４１】
テーブル「ａｒｉ＿ｈａｓｈ＿ｍ」のテーブルエントリの最上位２４ビットは、特定の重要な状態値を表し（さらに第１のサブエントリとして考慮されうり）、その一方で、最下位８ビットは、マッピングルールインデックス値「ｐｋｉ」を表す（さらに第２のサブエントリとして考慮されうる）点にさらに留意すべきである。このように、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリは、マッピングルールインデックス値「ｐｋｉ」上に、コンテクスト値の「ｄｉｒｅｃｔ  ｈｉｔ（直接的なヒットの）」マッピングを表す。
【０３４２】
しかしながら、テーブル「ａｒｉ＿ｈａｓｈ＿ｍ［］」のエントリの最上位２４ビットは、同時に、同じマッピングルールインデックス値が関連する数値的なコンテクスト値の間隔の間隔境界を表す。この概念に関する詳細は、すでに上述されている。
【０３４３】
１２．２  図２１によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」
【０３４４】
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」の特に有利な実施形態のコンテンツが図２１の表において示される。図２１の表は、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリをリストする点にここで留意すべきである。エントリは、例えば、「ｉ＿ｍａｘ」または「ｉ＿ｍｉｎ」または「ｉ」で指定される（「ｅｌｅｍｅｎｔ  ｉｎｄｅｘ（エレメントインデックス）」または「ａｒｒａｙ  ｉｎｄｅｘ（配列インデックス）」または「ｔａｂｌｅ  ｉｎｄｅｘ（テーブルインデックス）」にも指定される）１次元整数型エントリインデックスによって参照される。７４２のエントリの合計を含むテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」は、図５ｅまたは図５ｆによる関数「ａｒｉｔｈ＿ｇｅｔ＿ｐｋ」による使用のためによく適している点に留意すべきである。図２１による「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」は、テーブル図２２によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」と協働するために適している点に留意すべきである。
【０３４５】
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］」のエントリは、０および７４１間にテーブルインデックス「ｉ」（例えば「ｉ＿ｍｉｎ」または「ｉ＿ｍａｘ」または「ｉ」）の昇順にリストされる点に留意すべきである。ターム「０ｘ」は、テーブルエントリが１６進形式に表されることを示す。したがって、最初のテーブルエントリ「０ｘ０１」は、テーブルインデックス０を有するテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［０］」に対応し、さらに、最後のテーブルエントリ「０ｘ２７」は、テーブルインデックス７４１を有するテーブルエントリ「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４１］」に対応する。
【０３４６】
テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［］」のエントリは、テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［］」の隣接するエントリによって定義される間隔と関連する点に留意すべきである。このように、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」のエントリは、数値的なコンテクスト値の間隔と関連するマッピングルールインデックス値を表し、間隔は、テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ」のエントリによって定義される。
【０３４７】
１２．３．  図２３（１）、図２３（２）および図２３（３）によるテーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［１７］」
【０３４８】
図２３は、１つが、例えば、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行のために、すなわち最上位ビットプレーン値の復号化のために、オーディオエンコーダ１００、７００またはオーディオデコーダ２００、８００によって選択される、６４の累積度数テーブル（またはサブテーブル）「ａｒｉ＿ｃｆ＿ｍ［ｐｋｉ］［１７］」のセットを示す。図２３（１）から図２３（３）に示される６４の累積度数テーブル（またはサブテーブル）のうちの選択された１つは、関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ（）」の実行においてテーブル「ｃｕｍ＿ｆｒｅｑ［］」の関数をとる。
【０３４９】
図２３（１）から図２３（３）で明らかなように、それぞれのサブブロックまたはラインは、１７のエントリを有する累積度数テーブルを表す。例えば、第１のサブブロックまたはライン２３１０は、「ｐｋｉ＝０」のための累積度数テーブルの１７のエントリを表す。第２のサブブロックまたはライン２３１２は、「ｐｋｉ＝１」のための累積度数テーブルの１７のエントリを表す。最後に、第６４のサブブロックまたはライン２３６４は、「ｐｋｉ＝６３」のための累積度数テーブルの１７のエントリを表す。このように、図２３（１）から図２３（３）は、「ｐｋｉ＝０」から「ｐｋｉ＝９５」までのための６４の異なる累積度数テーブル（またはサブテーブル）を効果的に表し、６４の累積度数テーブルのそれぞれは、（波括弧よって囲まれる）サブブロックまたはラインによって表され、さらに、前記累積度数テーブルのそれぞれは、１７のエントリを含む。
【０３５０】
サブブロックまたはライン（例えば、サブブロックまたはライン２３１０または２３１２、または、サブブロックまたはライン２３９６）内で、最初の値（例えば最初のサブブロック２３１０の最初の値７０８）は、サブブロックまたはラインによって表される（０の配列インデックスまたはテーブルインデックスを有する）累積度数テーブルの最初のエントリを表し、さらに、最後の値（例えば最初のサブブロックまたはライン２３１０の最後の値０）は、サブブロックまたはラインによって表される（１６の配列インデックスまたはテーブルインデックスを有する）累積度数テーブルの最後のエントリを表す。
【０３５１】
したがって、図２３のテーブル表現のそれぞれのサブブロックまたはライン２３１０、２３１２、２３６４は、図５ｇによるまたは図５ｈおよび図５ｉによる関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」による使用のための累積度数テーブルのエントリを表す。関数「ａｒｉｔｈ＿ｄｅｃｏｄｅ」の入力変数「ｃｕｍ＿ｆｒｅｑ［］」は、（テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ」の１７のエントリの個々のサブブロックによって表される）６４の累積度数テーブルのどれが現在のスペクトル係数の復号化のために用いられるべきであるかを表す。
【０３５２】
１２．４  図２４によるテーブル「ａｒｉ＿ｃｆ＿ｒ［］」
【０３５３】
図２４は、テーブル「ａｒｉ＿ｃｆ＿ｒ［］」のコンテンツを示す。
【０３５４】
前記テーブルの４つのエントリが図２４に示される。しかしながら、テーブル「ａｒｉ＿ｃｆ＿ｒ」は、最終的には他の実施形態において異なってもよい点に留意すべきである。
【０３５５】
１３．  概要、パフォーマンス評価および効果
【０３５６】
上述のように、本発明による実施形態は、計算の複雑度、必要メモリおよび符号化効率間の改良されたトレードオフを得るために、更新された関数（またはアルゴリズム）およびテーブルの更新されたセットを用いる。
【０３５７】
一般的に言って、本発明による実施形態は、改良されたスペクトルノイズレス符号化を作り出す。本発明による実施形態は、ＵＳＡＣ（統合スピーチオーディオ符号化）においてスペクトルノイズレス符号化の強化を記載する。
【０３５８】
本発明による実施形態は、ＭＰＥＧ入力されたペーパｍ１６９１２およびｍ１７００２に示されるようなスキームに基づいて、スペクトル係数の改良されたスペクトルノイズレス符号化上のＣＥのための更新された提案を作り出す。両方の提案は、評価され、潜在的な欠点が除去され、さらに、強さが組み合わされた。加えて、本発明の実施形態は、現在のＵＳＡＣ仕様においてアプリケーションのためのノイズレススペクトル符号化テーブルの更新を含む。
【０３５９】
１３．１．  概要
【０３６０】
以下において、簡単な概要が示される。ＵＳＡＣ（統合スピーチオーディオ符号化）の進行中の規格化の間に、ＵＳＡＣにおいて強化されたスペクトルノイズレス符号化スキーム（別称エントロピー符号化スキーム）が、提案された。この強化されたスペクトルノイズレス符号化スキームは、量子化されたスペクトル係数をロスレスの方法でより効率的に符号化するために役立つ。したがって、スペクトル係数は、可変長の対応するコードワードにマップされる。このエントロピー符号化スキームは、コンテクストベースの算術符号化スキームに基づく。スペクトル係数のコンテクスト（すなわち隣接するスペクトル係数）は、スペクトル係数の算術符号化のために用いられる確率分布（累積度数テーブル）を決定する。
【０３６１】
本発明による実施形態は、ＵＳＡＣのコンテクストにおいて前に提案されるように、スペクトル符号化スキームのためのテーブルの更新されたセットを用いる。背景を示すために、従来のスペクトルノイズレス符号化技術は、第１にアルゴリズムさらに第２に訓練されたテーブルのセットからなる（または、少なくともアルゴリズムおよび訓練されたテーブルのセットを含む）点に留意すべきである。訓練されたテーブルのこの従来のセットは、ＵＳＡＣ  ＷＤ４ビットストリームに基づく。ＵＳＡＣが現在ＷＤ７に進んで、さらに、重要な変更がその間にＵＳＡＣ仕様に適用されているので、再訓練されたテーブルの新しいセットは、ごく最近のＵＳＡＣバージョンＷＤ７に基づく本発明による実施形態において用いられる。アルゴリズムそのものは、不変のままである。副次的な効果として、再訓練されたテーブルは、前に示されたスキームのどれよりも良好な圧縮パフォーマンスを提供する。
【０３６２】
本発明によれば、従来の訓練されたテーブルを、さらなる符号化パフォーマンスをもたらすここで示されるような再訓練されたテーブルと置き換えることが提案される。
【０３６３】
１３．２．  序文
【０３６４】
以下において、序文が提供される。
【０３６５】
ＵＳＡＣ作業項目について、ノイズレス符号化スキームを更新することに関するいくつかの提案は、共同で最後の会議の間に言及された。しかしながら、この作業は、基本的に第８９回の会議で始められた。それから、ＵＳＡＣ  ＷＤ４参照品質ビットストリームおよびデータベースを訓練するＷＤ４上の訓練に基づいてパフォーマンス結果を示すことは、スペクトル係数符号化に関する全ての提案のための一般的なやり方であった。
【０３６６】
一方、ＵＳＡＣの他の分野に対する大きな改良は、特にステレオ処理およびウィンドウ化において、今日現在、ＵＳＡＣ仕様に組み込まれている。これらの改良もスペクトルノイズレス符号化のための統計にわずかに影響を及ぼすことが見いだされた。したがって、ノイズレス符号化ＣＥｓのために示される結果は、準最適にみなされるが、その理由は、それらが最新のＷＤ修正に対応しないからである。
【０３６７】
したがって、更新されたアルゴリズムにさらに符号化されさらに復号化されるスペクトル値の統計により良好に適しているスペクトルノイズレス符号化テーブルが示唆される。
【０３６８】
１３．３．  アルゴリズムの簡単な説明
【０３６９】
以下において、アルゴリズムの簡単な説明が提供される。
【０３７０】
メモリフットプリントおよび計算の複雑度の問題を解決するために、改良されたノイズレス符号化スキームは、ワーキングドラフト６／７（ＷＤ６／７）におけるようなスキームを置き換えるために提案された。開発における主な焦点は、圧縮効率を維持しさらに計算の複雑度を増加しないとともに、メモリ需要を低減することに置かれた。より詳しくは、目標は、圧縮パフォーマンス、複雑度および必要メモリの多次元複雑度スペースにおて最良のトレードオフに達することであった。
【０３７１】
提案された符号化スキーム提案は、ＷＤ６／７ノイズレスコーダの主な特徴、すなわちコンテクスト適合を取り入れる。コンテクストは、過去および現在のフレームの両方からＷＤ６／７におけるように生じる前に復号化されたスペクトル係数を用いて導き出される。しかしながら、スペクトル係数は、これから、２タプルを形成するための２係数を一緒に組み合わせることによって符号化される。別の違う点は、スペクトル係数がこれから３つの部分、符号、ＭＳＢおよびＬＳＢに分割されるという事実にある。符号は、それらが存在する場合、２つの部分、２つの最上位ビットおよび残りのビットにさらに分割される大きさから、独立して符号化される。２つのエレメントの大きさが３よりも小さいまたはそれに等しい２タプルは、ＭＳＢ符号化によって直接的に符号化される。さもなければ、エスケープコードワードは、いかなる付加的なビットプレーンも信号で伝えるために、最初に伝送される。ベースバージョンにおいて、失った情報、ＬＳＢおよび符号は、一様確率分布を用いて両方とも符号化される。
【０３７２】
テーブルサイズ低減は、
・１７のシンボルのための確率だけが格納される必要がある：｛［０；＋３］［０；＋３］｝＋ＥＳＣシンボル；
・グループ化テーブル（ｅｇｒｏｕｐｓ、ｄｇｒｏｕｐｓ、ｄｇｖｅｃｔｏｒｓ）を格納する必要がない；さらに
・ハッシュテーブルのサイズが適切な訓練で低減されうる
ので、まだ可能である。
【０３７３】
１３．３．１  ＭＳＢ符号化
【０３７４】
以下において、ＭＳＢ符号化が記載される。
【０３７５】
すでに述べたように、ＷＤ６／７、前の提案および現在の提案間の主な違いは、シンボルの次元である。ＷＤ６／７において、４タプルがコンテクスト生成およびノイズレス符号化のために考慮された。前の提案において、１タプルが必要ＲＯＭを低減するために代わりに用いられた。我々の開発の間に、２タプルは、計算の複雑度を増加しないで、必要ＲＯＭを低減するために最良の妥協であることが見いだされた。コンテクスト導出のための４つの４タプルを考慮する代わりに、現在、４つの２タプルが考慮される。図２５に示されるように、３つの２タプルが過去のフレームからさらに１つが現在のフレームからもたらされる。
【０３７６】
テーブルサイズ低減は、３つの主な要因による。第１に、１７のシンボルのための確率だけが格納される必要がある（すなわち｛［０；＋３］［０；＋３］｝＋ＥＳＣシンボル）。グループ化テーブル（すなわちｅｇｒｏｕｐｓ、ｄｇｒｏｕｐｓ、ｄｇｖｅｃｔｏｒｓ）がもはや必要ない。さらに、ハッシュテーブルのサイズが適切な訓練を実行することによって低減された。
【０３７７】
次元が４から２に低減されたにもかかわらず、複雑度は、ＷＤ６／７におけるような範囲に維持された。それは、コンテクスト生成およびハッシュテーブルアクセスの両方を単純化することによって達成された。
【０３７８】
異なる単純化および最適化は、符号化パフォーマンスが影響を受けなくしかもわずかに改良された方法で行われた。
【０３７９】
１３．３．２  ＬＳＢ符号化
【０３８０】
ＬＳＢは、一様確率分布で符号化される。ＷＤ６／７と比較して、ＬＳＢは、現在４ｔタプルの代わりに２タプルで考慮される。しかしながら、最下位ビットの異なる符号化が可能である。
【０３８１】
１３．３．３  符号符号化
【０３８２】
符号は、複雑度低減のために算術コアコーダを用いないで符号化される。符号は、対応する大きさがヌルでないときにだけ、１ビットで伝送される。０は正の値をさらに１は負の値を意味する。
【０３８３】
１３．４．  テーブルの提案された更新
【０３８４】
この貢献は、ＵＳＡＣスペクトルノイズレス符号化スキームのためのテーブルの更新されたセットを提供する。テーブルは、現在のＵＳＡＣ  ＷＤ６／７ビットストリームに基づいて再訓練された。訓練する処理から生じる実際のテーブルから離れて、アルゴリズムが不変のままである。
【０３８５】
新しいテーブルの符号化効率および必要メモリの再訓練の効果を調査することは、前の提案（Ｍ１７５５８）およびＷＤ６に対して比較される。ＷＤ６は、ａ）第９２回の会議の結果がこの参照に関して示された、さらに、ｂ）ＷＤ６およびＷＤ７間の違いが（スペクトル係数のエントロピー符号化または分布に関して効果なしにバグ修正する）非常に軽微なだけであるので、基準点として選択される。
【０３８６】
１３．４．１  符号化効率
【０３８７】
最初に、テーブルの提案された新しいセットの符号化効率が、ＵＳＡＣ  ＷＤ６およびＭ１７５５８において提案されるようなＣＥに対して比較される。図２６のテーブル表現において明らかなように、純粋に再訓練することによって、符号化効率において平均増加は（ＷＤ６と比較して）１．７４％（Ｍ１７５５８）から２．４５％（本発明の実施形態による新しい提案）に増加することができる。Ｍ１７５５８と比較して、圧縮ゲインを、このように本発明による実施形態においておよそ０．７％だけ増加することができる。
【０３８８】
図２７は、全ての操作点のための圧縮ゲインを視覚化する。明らかなように、少なくとも２％の最小圧縮ゲインを、ＷＤ６と比較して本発明による実施形態を用いて達することができる。例えば１２ｋｂｉｔ／ｓおよび１６ｋｂｉｔ／ｓのような低いレートに対して、圧縮ゲインは、わずかにでも増加される。良好なパフォーマンスは、例えば６４ｋｂｉｔ／ｓのようなより高いビットレートでも保持され、３％を超える符号化効率において重要な増加を観察することができる。
【０３８９】
全てのＷＤ６参照品質ビットストリームのロスレストランスコーディングは、ビットリザーバ制約を違反しないで可能であることを証明された点に留意すべきである。より詳細な結果がセクション１３．６．において示される。
【０３９０】
１３．４．２  メモリ需要および複雑度
【０３９１】
第２に、メモリ需要および複雑度は、ＵＳＡＣ  ＷＤ６およびＭ１７５５８において提案されるようなＣＥに対して比較される。図２８のテーブルは、ＷＤ６、Ｍ１７５５８における提案および本発明の実施形態による新しい提案におけるようなノイズレスコーダのためのメモリ需要を比較する。明らかに分かるように、メモリ需要は、Ｍ１７５５８において提案されるように、新しいアルゴリズムを採用することによって著しく低減される。さらに、新しい提案のために、全テーブルサイズは、１４４１ワードの全ＲＯＭ需要およびオーディオチャンネルごとに６４ワード（３２ビット）の全ＲＡＭ需要をもたらす、ほとんど８０ワード（３２ビット）だけわずかに低減されることも明らかである。ＲＯＭ需要において少なく保存することは、ＷＤ６訓練ビットストリームの新しいセットに基づいて自動訓練アルゴリズムによって見いだされる、確率モデルの数およびハッシュテーブルサイズ間のより良好なトレードオフの結果である。さらに詳しくは、図２９のテーブルについて述べる。
【０３９２】
複雑度に関して、新しく提案されたスキームの計算の複雑度は、ＵＳＡＣにおいて現在のノイズレスの最適化されたバージョンに対して比較された。新しい符号化スキームは、現在のスキームと同じ複雑度の順序を有することが、「ｐｅｎ  ａｎｄ  ｐａｐｅｒ（ペンおよびペーパ）」方法によってさらにコードに命令することによって見いだされた。３２ｋｂｐｓのステレオのための図３０のテーブルおよび１２ｋｂｐｓのモノラルの操作点のための図３１のテーブルにおいて報告されるように、推定された複雑度は、ＷＤ６ノイズレスデコーダの最適化された実施態様をそれぞれ超えて０．００６の重み付けＭＯＰＳおよび０．０２４の重み付けＭＯＰＳの増加を示す。近似的に１１．７のＰＣＵ［２］の全体の複雑度と比較して、これらの差をごくわずかであると考慮することができる。
【０３９３】
１３．５．  結論
【０３９４】
以下において、いくつかの結論が提供される。
【０３９５】
ＵＳＡＣスペクトルノイズレス符号化スキームのためのテーブルの新しいセットが示された。より前のビットストリームに基づく訓練の結果である前の提案とは対照的に、提案された新しいテーブルは、現在、現在のＵＳＡＣ  ＷＤビットストリームにおいて訓練され、高度な訓練概念が用いられている。この再訓練によって、前の提案と比較して、少ないメモリ需要を犠牲にしないでまたは複雑度を増加しないで、現在のＵＳＡＣビットストリーム上の符号化効率を改良することができる。ＵＳＡＣ  ＷＤ６と比較して、メモリ需要を著しく低減することができる。
【０３９６】
１３．６．  ＷＤ６ビットストリームのトランスコーディングに関する詳細な情報
【０３９７】
ワーキングドラフト６（ＷＤ６）ビットストリームのトランスコーディングに関する詳細な情報が図３２、図３３、図３４、図３５および図３６のテーブル表現において明らかである。
【０３９８】
図３２は、本発明による実施形態においてさらにＷＤ６において算術コーダによって生成される平均ビットレートのテーブル表現を示す。
【０３９９】
図３３は、提案されたスキームを用いるフレームベースにおけるＵＳＡＣの最小、最大および平均ビットレートのテーブル表現を示す。
【０４００】
図３４は、ＷＤ６算術コーダを用いるＵＳＡＣコーダおよび本発明による実施形態によるコーダ（「ｎｅｗ  ｐｒｏｐｏｓａｌ（新しい提案）」）によって生成される平均ビットレートのテーブル表現を示す。
【０４０１】
図３５は、本発明による実施形態のための最良のおよび最悪の場合のテーブル表現を示す。
【０４０２】
図３６は、本発明による実施形態のためのビットリザーバ制限のテーブル表現を示す。
【０４０３】
１４．  ワーキングドラフト６またはワーキングドラフト７と比較したときの変更
【０４０４】
以下において、従来のノイズレス符号化と比較したときのノイズレス符号化の変更が記載される。したがって、実施形態は、ＵＳＡＣ規格案のワーキングドラフト６またはワーキングドラフト７と比較したときの修正に関して定義される。
【０４０５】
特に、ＷＤテキストに対する変更が記載される。換言すれば、このセクションは、ＵＳＡＣ仕様ＷＤ７に対して変更の完全なセットをリストする。
【０４０６】
１４．１．  技術的な説明に対する変更
【０４０７】
提案された新しいノイズレス符号化は、以下において記載されるＭＰＥＧ  ＵＳＡＣ  ＷＤにおいて修正を生じる。主な違いがマークされる。
【０４０８】
１４．１．１．  構文およびペイロードの変更
【０４０９】
図３７は、算術的に符号化されたデータ「ａｒｉｔｈ＿ｄａｔａ（）」の構文の表現を示す。主な違いがマークされる。
【０４１０】
以下において、スペクトルノイズレスコーダのペイロードに関する変更が記載される。
【０４１１】
「ｌｉｎｅａｒ  ｐｅｒｄｉｃｔｉｏｎ−ｄｏｍａｉｎ（線形予測領域）」符号化された信号および「ｆｒｅｑｕｅｎｃｙ−ｄｏｍａｉｎ（周波数領域）」符号化された信号の両方からのスペクトル係数は、量子化されさらにそれから最適にコンテクストに依存する算術符号化によってノイズレスに符号化されるスカラである。量子化された係数は、最も低い周波数から最も高い周波数まで伝送される前に２タプルにおいて集められる。２タプルの使用は、スペクトルノイズレス符号化の前のバージョンと比較したときの変更を構成する点に留意すべきである。
【０４１２】
しかしながら、それぞれの２タプルは、符号ｓ、最上位２ビット的なプレーンｍおよび残りの下位ビットプレーンｒに分割されることがさらなる変更である。また、値ｍは係数の近辺に従って符号化され、さらに、残りの下位ビットプレーンｒはコンテクストを考慮しないでエントロピー符号化されることが変更である。また、値ｍおよびｒは、算術コーダのシンボルを形成することが前のバージョンのいくつかに関する変更である。最後に、符号ｓは、ヌルでない量子化された係数ごとに１ビットを用いて算術コーダの外側で符号化されることが前のバージョンのいくつかに関する変更である。
【０４１３】
詳細な算術を復号化手順がセクション１４．２．３において以下に記載される。
【０４１４】
１４．１．２  定義およびヘルプエレメントの変更
【０４１５】
定義およびヘルプエレメントの変更が図３８に定義およびヘルプエレメントの表現において示される。
【０４１６】
１４．２  スペクトルノイズレス符号化
【０４１７】
以下において、実施形態によるスペクトルノイズレス符号化が要約される。
【０４１８】
１４．２．１  ツールの説明
【０４１９】
スペクトルノイズレス符号化は、量子化されたスペクトルの冗長性をさらに低減するために用いられる。
【０４２０】
スペクトルノイズレス符号化スキームは、動的に適しているコンテクストに関連する算術符号化に基づく。ノイズレス符号化は、量子化されたスペクトル値によって供給され、さらに、４つの前に復号化された付近から導き出されるコンテクストに依存する累積度数テーブルを用いる。ここで、時間および周波数の両方における近辺は、図２５に示されるように考慮される。累積度数テーブルは、それから、可変長２進コードを生成するために算術コーダによって用いられる。
【０４２１】
算術コーダは、シンボルの所定のセットおよびそれらのそれぞれの確率のための２進コードを生成する。２進コードは、シンボルのセットが位置する確率間隔をコードワードにマップすることによって生成される。
【０４２２】
１４．２．２  定義
【０４２３】
定義およびヘルプエレメントが図３９に記載される。算術符号化の前のバージョンと比較したときの変更がマークされる。
【０４２４】
１４．２．３  復号化処理
【０４２５】
量子化されたスペクトル係数ｑｄｅｃは、最も低い周波数係数から始まって最も高い周波数係数に進んでノイズレスに復号化される。それらは、いわゆる２タプル｛ａ，ｂ｝において集める２連続した係数ａおよびｂのグループによって復号化される。
【０４２６】
ＡＡＣのための復号化された係数は、それから配列ｘ＿ａｃ＿ｑｕａｎｔ［ｇ］［ｗｉｎ］［ｓｆｂ］［ｂｉｎ］に格納される。ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、ｂｉｎが最も急速にインクリメントするインデックスであり、さらに、ｇが最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａそしてｂである。
【０４２７】
ＴＣＸのための復号化された係数は、配列ｘ＿ｔｃｘ＿ｉｎｖｑｕａｎｔ［ｗｉｎ］［ｂｉｎ］に格納され、さらに、ノイズレス符号化コードワードの伝送の順序は、それらが受信される順序に復号化されさらに配列に格納されるときに、ｂｉｎが最も急速にインクリメントするインデックスであり、さらに、ｗｉｎが最もゆっくりインクリメントするインデックスである。コードワード内において、復号化の順序は、ａそしてｂである。
【０４２８】
復号化処理は、マッピングがｑｓに格納される保存された過去のコンテクストおよび現在のフレームｑのコンテクスト間で行われる初期設定段階から始まる。過去のコンテクストｑｓは、周波数ラインごとに２ビットに格納される。
【０４２９】
詳しくは、図４０ａにおけるアルゴリズム「ａｒｉｔｈ＿ｍａｐ＿ｃｏｎｔｅｘｔ」の疑似プログラムコード表現について述べる。
【０４３０】
ノイズレスデコーダは、符号なしの量子化されたスペクトル係数の２タプルを出力する。最初は、コンテクストの状態ｃは、復号化する２タプルを囲む前に復号化されたスペクトル係数に基づいて計算される。状態は、２つの新しい２タプルだけを考慮して、最後の復号化された２タプルのコンテクスト状態を用いて増加的に更新される。状態は、１７ビットに符号化され、さらに、関数ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）によってリターンされる。
【０４３１】
関数「ａｒｉｔｈ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）」の疑似プログラムコード表現が図４０ｂに示される。
【０４３２】
一旦、コンテクスト状態ｃが計算されると、最上位２ビット的なプレーンｍは、コンテクスト状態に対応する確率モデルに対応する適切な累積度数テーブルで供給されるａｒｉｔｈ＿ｄｅｃｏｄｅ（）を用いて復号化される。対応は、関数ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）によって行われる。
【０４３３】
関数ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）の疑似プログラムコード表現が図４０ｃに示される。
【０４３４】
値ｍは、累積度数テーブルａｒｉｔｈ＿ｃｆ＿ｍ［ｐｋｉ］［］で呼び出される関数ａｒｉｔｈ＿ｄｅｃｏｄｅ（）を用いて復号化され、ｐｋｉは、ａｒｉｔｈ＿ｇｅｔ＿ｐｋ（）によってリターンされるインデックスに対応する。算術コーダは、スケーリングを有するタグ生成の方法を用いる整数実施である。図４０ｄおよび図４０ｅに示される疑似Ｃコードは、用いられたアルゴリズムを表す。
【０４３５】
復号化された値ｍがエスケープシンボルＡＲＩＴＨ＿ＥＳＣＡＰＥであるときに、変数ｌｅｖおよびｅｓｃ＿ｎｂは、１だけインクリメントされ、さらに、別の値ｍは、復号化される。この場合、関数ｇｅｔ＿ｐｋ（）は、入力引数として値ｃ＆ｅｓｃ＿ｎｂ＜＜１７でもう一度呼び出され、ｅｓｃ＿ｎｂは、同じ２タプルのために前に復号化されさらに７にバウンドされるエスケープシンボルの数である。
【０４３６】
一旦、値ｍがエスケープシンボルＡＲＩＴＨ＿ＥＳＣＡＰＥでないと、デコーダは、連続したｍがＡＲＩＴＨ＿ＳＴＯＰシンボルを形成するかどうかをチェックする。条件（ｅｓｃ＿ｎｂ＞０＆＆ｍ＝＝０）が真である場合、ＡＲＩＴＨ＿ＳＴＯＰシンボルは、検出され、さらに、復号化処理は、終了する。デコーダは、直接的に、ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）関数にジャンプする。条件は、フレームの残りがゼロ値から成ることを意味する。
【０４３７】
ＡＲＩＴＨ＿ＳＴＯＰシンボルが満たされない場合、残りのビットプレーンは、いずれかが存在する場合、現在の２タプルのためにそれから復号化される。残りのビットプレーンは、累積度数テーブルａｒｉｔｈ＿ｃｆ＿ｒ［］でｌｅｖ回数ａｒｉｔｈ＿ｄｅｃｏｄｅ（）を呼び出すことによって、最上位から最下位レベルまで復号化される。復号化されたビットプレーンｒは、疑似プログラムコード表現が図４０ｆに示される関数またはアルゴリズムによって前に復号化された値ｍをリファインすることを許可する。
【０４３８】
この点で、２タプル｛ａ，ｂ｝の符号なしの値は、完全に復号化される。コンテクストｑは、それから次の２タプルのために更新される。それが最後の２タプルである場合も同様である。両方の更新は、疑似プログラムコード表現が図４０ｇに示される関数ａｒｉｔｈ＿ｕｐｄａｔｅ＿ｃｏｎｔｅｘｔ（）によって行われる。
【０４３９】
フレームの次の２タプルは、それから、ｉを１だけインクリメントしさらに関数を呼び出すことによって復号化される。ｌｇ／２の２タプルがフレームですでに復号化された場合、または、停止シンボルＡＲＩＴＨ＿ＳＴＯＰが生じる場合、関数ａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）が呼び出される。コンテクストは、次のフレームのためのｑｓにおいて保存されさらに格納される。関数またはアルゴリズムａｒｉｔｈ＿ｓａｖｅ＿ｃｏｎｔｅｘｔ（）の疑似プログラムコード表現は、図４０ｈに示される。
【０４４０】
一旦、全ての符号なしの量子化されたスペクトル係数が復号化されると、符号がそれから加算される。ｑｄｅｃのヌルでない量子化された値ごとに、ビットが読み取られる。読み取られたビット値がゼロに等しい場合、量子化された値は正であり、何も行われず、さらに、符号付の値は前に復号化された符号なしの値に等しい。さもなければ、復号化された係数は負であり、さらに、２つの補数は符号なしの値からとられる。符号ビットは、下から高い周波数まで読み取られる。
【０４４１】
１４．２．４  更新されたテーブル
【０４４２】
上述のアルゴリズムで用いられるための再訓練されたテーブルのセットが、図４１（１）、図４１（２）、図４２（１）、図４２（２）、図４２（３）、図４２（４）、図４３（１）、図４３（２）、図４３（３）、図４３（４）、図４３（５）、図４３（６）および図４４に示される。
【０４４３】
図４１（１）および図４１（２）は、本発明の実施形態によるテーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【０４４４】
図４２（１）、図４２（２）、図４２（３）、図４２（４）は、本発明の実施形態によるテーブル「ａｒｉ＿ｈａｓｈ＿ｍ［７４２］」のコンテンツのテーブル表現を示す。
【０４４５】
図４３（１）、図４３（２）、図４３（３）、図４３（４）、図４３（５）、図４３（６）は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｍ［９６］［１７］」のコンテンツのテーブル表現を示す。
【０４４６】
図４４は、本発明の実施形態によるテーブル「ａｒｉ＿ｃｆ＿ｒ［４］」のテーブル表現を示す。
【０４４７】
上記を要約すると、本発明による実施形態は、計算の複雑度、必要メモリおよび符号化効率間の特に良好なトレードオフを提供することが明らかである。
【０４４８】
１５．  ビットストリーム構文
【０４４９】
１５．１  スペクトルノイズレスコーダのペイロード
【０４５０】
以下において、スペクトルノイズレスコーダのペイロードに関するいくつか詳細が説明される。いくつかの実施形態において、例えばいわゆる「ｌｉｎｅａｒ−ｐｒｅｄｉｃｔｉｏｎ−ｄｏｍａｉｎ（線形予測領域）」符号化モードおよび「ｆｒｅｑｕｅｎｃｙ−ｄｏｍａｉｎ（周波数領域）」符号化モード）などの複数の異なる符号化モードがある。線形予測領域符号化モードにおいて、ノイズシェーピングは、オーディオ信号の線形予測解析に基づいて実行され、さらに、ノイズシェープされた信号は、周波数領域に符号化される。周波数領域符号化モードにおいて、ノイズシェーピングは、心理音響解析に基づいて実行され、さらに、オーディオコンテンツのノイズシェープされたバージョンは、周波数領域に符号化される。
【０４５１】
「ｌｉｎｅａｒ−ｐｒｅｄｉｃｔｉｏｎ−ｄｏｍａｉｎ（線形予測領域）」符号化された信号および「ｆｒｅｑｕｅｎｃｙ−ｄｏｍａｉｎ（周波数領域）」符号化された信号の両方からのスペクトル係数は、量子化されさらにそれから最適にコンテクストに依存する算術符号化によってノイズレスに符号化されるスカラである。量子化された係数は、最も低い周波数から最も高い周波数まで伝送される前に２タプルにおいて集められる。それぞれの２タプルは、符号ｓ、最上位２ビット的なプレーンｍおよび（もしあれば）残りの１つ以上の下位ビットプレーンｒに分割される。値ｍは、隣接するスペクトル係数によって定義されるコンテクストに従って符号化される。換言すれば、ｍは、係数近辺に従って符号化される。残りの下位ビットプレーンｒは、コンテクストを考慮しないでエントロピー符号化される。ｍおよびｒによって、これらのスペクトル係数の振幅を、デコーダ側に再構成することができる。全てのヌルでないシンボルのために、符号ｓは、１ビットを用いて算術コーダの外側で符号化される。換言すれば、値ｍおよびｒは、算術コーダのシンボルを形成する。最後に、符号ｓは、ヌルでない量子化された係数ごとに１ビットを用いて算術コーダの外側で符号化される。
【０４５２】
詳細な算術符号化手順がここに記載される。
【０４５３】
１５．２  図６ａから図６ｊによる構文エレメント
【０４５４】
以下において、算術的に符号化されたスペクトル情報を伝えるビットストリームのビットストリーム構文が図６ａから図６ｊを参照して記載される。
【０４５５】
図６ａは、いわゆるＵＳＡＣ生データブロック（「ｕｓａｃ＿ｒａｗ＿ｄａｔａ＿ｂｌｏｃｋ（）」）の構文表現を示す。
【０４５６】
ＵＳＡＣ生データブロックは、１つ以上の単一のチャンネルエレメント（「ｓｉｎｇｌｅ＿ｃｈａｎｎｅｌ＿ｅｌｅｍｅｎｔ（）」）および／または１つ以上のチャンネルペアエレメント（「ｃｈａｎｎｅｌ＿ｐａｉｒ＿ｅｌｅｍｅｎｔ（）」）を含む。
【０４５７】
図６ｂをこれから参照して、単一のチャンネルエレメントの構文が記載される。単一のチャンネルエレメントは、コアモードに基づく線形予測領域チャンネルストリーム（「ｌｐｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）または周波数領域チャンネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）を含む。
【０４５８】
図６ｃは、チャンネルペアエレメントの構文表現を示す。チャンネルペアエレメントは、コアモード情報（「ｃｏｒｅ＿ｍｏｄｅ０」、「ｃｏｒｅ＿ｍｏｄｅ１」）を含む。加えて、チャンネルペアエレメントは、構成情報「ｉｃｓ＿ｉｎｆｏ（）」を含むことができる。さらに、コアモード情報に応じて、チャンネルペアエレメントは、チャンネルの第１と関連する線形予測領域チャンネルストリームまたは周波数領域チャンネルストリームを含み、さらに、チャンネルペアエレメントは、チャンネルの第２と関連する線形予測領域チャンネルストリームまたは周波数領域チャンネルストリームも含む。
【０４５９】
構文表現が図６ｄに示される構成情報「ｉｃｓ＿ｉｎｆｏ（）」は、本発明のための特定の関連性がない複数の異なる構成情報項目を含む。
【０４６０】
構文表現が図６ｅに示される周波数領域チャンネルストリーム（「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」）は、ゲイン情報（「ｇｌｏｂａｌ＿ｇａｉｎ」）および構成情報（「ｉｃｓ＿ｉｎｆｏ（）」）を含む。加えて、周波数領域チャンネルストリームは、異なるスケールファクタバンドのスペクトル値のスケーリングのために用いられるスケールファクタを表しさらに例えばスケーラ１５０およびリスケーラ２４０によって適用されるスケールファクタデータ（「ｓｃａｌｅ＿ｆａｃｔｏｒ＿ｄａｔａ（）」）を含む。周波数領域チャンネルストリームは、算術的に符号化されたスペクトル値を表す算術的に符号化されたスペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）も含む。
【０４６１】
構文表現が図６ｆに示される算術的に符号化スペクトルデータ（「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」）は、上述のように、コンテクストを選択的にリセットするために用いられる任意の算術リセットフラグ（「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」）を含む。加えて、算術的に符号化されたスペクトルデータは、算術的に符号化されたスペクトル値を伝える複数の算術データブロック（「ａｒｉｔｈ＿ｄａｔａ」）を含む。算術的に符号化されたデータブロックの構成は、（変数「ｎｕｍ＿ｂａｎｄｓ」によって表される）周波数バンドの数にさらに以下において述べられる算術リセットフラッグの状態にも依存する。
【０４６２】
以下において、算術的に符号化されたデータブロックの構成が、前記算術的に符号化されたデータブロックの構文表現を示す図６ｇを参照して記載される。算術的に符号化されたデータブロック内のデータ表現は、符号化されるスペクトル値の数ｌｇ、算術リセットフラグの状況に、さらに、コンテクストすなわち前に符号化されたスペクトル値にも依存する。
【０４６３】
スペクトル値の現在のセット（例えば２タプル）の符号化のためのコンテクストは、参照番号６６０で示されるコンテクスト決定アルゴリズムに従って決定される。コンテクスト決定アルゴリズムに関する詳細は、図５ａおよび図５ｂを参照して、上で説明されている。算術的に符号化されたデータブロックは、コードワードのｌｇ／２セットを含み、コードワードのそれぞれのセットは、複数（例えば２タプル）のスペクトル値を表す。コードワードのセットは、１および２０ビット間で用いるスペクトル値のタプルの最上位ビットプレーン値ｍを表す算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」を含む。加えて、コードワードのセットは、スペクトル値のタプルが正しい表現のための最上位ビットプレーンよりも多くのビットプレーンを必要とする場合、１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」を含む。コードワード「ａｃｏｄ＿ｒ［ｒ］」は、１および１４ビット間で用いる下位ビットプレーンを表す。
【０４６４】
しかしながら、１つ以上の下位ビットプレーンがスペクトル値の適当な表現のために（最上位ビットプレーンに加えて）必要とされる場合、これは、１つ以上の算術エスケープコードワード（「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」）を用いることによって信号で送られる。このように、スペクトル値のために、どれくらいのビットプレーン（最上位ビットプレーンおよび、おそらく、１つ以上の付加的な下位ビットプレーン）が必要とされることが決定されると一般的にいえる。１つ以上の下位ビットプレーンが必要とされる場合、これは、累積度数テーブルインデックスが変数「ｐｋｉ」によって示される現在選択された累積度数テーブルに従って符号化される１つ以上の算術エスケープコードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ＡＲＩＴＨ＿ＥＳＣＡＰＥ］」によって信号で送られる。加えて、コンテクストは、１つ以上の算術エスケープコードワードがビットストリームに含まれる場合、参照番号６６４、６６２から明らかなように、適している。１つ以上の算術エスケープコードワードの後に、算術コードワード「ａｃｏｄ＿ｍ［ｐｋｉ］［ｍ］」は、参照番号６６３に示されるように、ビットストリームに含まれ、「ｐｋｉ」は、（考慮に算術エスケープコードワードの包含によって生じるコンテクスト適合をとる）現在有効な確率モデルインデックスを指定し、さらに、ｍは、符号化されまたは復号化されるスペクトル値の最上位ビットプレーン値を指定する（ｍは、「ＡＲＩＴＨ＿ＥＳＣＡＰＥ」コードワードと異なる）。
【０４６５】
上述のように、いかなる下位ビットプレーンの存在も、それぞれが第１のスペクトル値の最下位ビットプレーンの１ビットを表しさらにそれぞれが第２のスペクトル値の最下位ビットプレーンの１ビットも表す１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」の存在をもたらす。１つ以上のコードワード「ａｃｏｄ＿ｒ［ｒ］」は、例えば一定であってもコンテクストに依存しなくてもよい対応する累積度数テーブルに従って符号化される。しかしながら、１つ以上コードワード「ａｃｏｄ＿ｒ［ｒ］」の復号化のための累積度数テーブルの選択のための異なるメカニズムが可能である。
【０４６６】
加えて、コンテクストは、参照番号６６８に示されるように、コンテクストがスペクトル値の２つの後のタプルを符号化しさらに復号化するために典型的に異なるように、スペクトル値のそれぞれタプルの符号化の後に更新される点に留意すべきである。
【０４６７】
図６ｉは、算術的に符号化されたデータブロックの構文を定義する定義およびヘルプエレメントの凡例を示す。
【０４６８】
さらに、図６ｊに示される定義およびヘルプエレメントの対応する凡例を有する算術データ「ａｒｉｔｈ＿ｄａｔａ（）」の代わりの構文が、図６ｈに示される。
【０４６９】
上記を要約すると、オーディオエンコーダ１００によって提供されうりさらにオーディオデコーダ２００によって評価されうるビットストリーム形式が記載されている。算術的に符号化されたスペクトル値のビットストリームは、それが上述の復号化アルゴリズムに合うように、符号化される。
【０４７０】
加えて、符号化は、エンコーダがデコーダによって実行されるテーブルルックアップに近似的に逆である上述のテーブルを用いるテーブルルックアップを実行すると一般的に仮定することができるように、復号化の逆の演算である点に一般的に留意すべきである。一般的に、復号化アルゴリズムおよび／または所望のビットストリーム構文を知っている当業者は、ビットストリーム構文において定義されさらに算術デコーダによって必要とされるデータを提供する算術エンコーダを設計することが容易に可能であるといえる。
【０４７１】
さらに、数値的な現在のコンテクスト値を決定するためのさらにマッピングルールインデックス値を導き出すためのメカニズムは、オーディオエンコーダおよびオーディオデコーダで同一であってもよい点に留意すべきであり、その理由は、オーディオデコーダは、復号化が符号化に適しているように、オーディオエンコーダと同じコンテクストを用いることが典型的に要求されるからである。
【０４７２】
１５．３．  図６ｋ、図６ｌ、図６ｍ、図６ｎ、図６ｏおよび図６ｐによる構文エレメント
【０４７３】
以下において、代わりのビットストリーム構文からの抜粋が図６ｋ、図６ｌ、図６ｍ、図６ｎ、図６ｏおよび図６ｐを参照して記載される。
【０４７４】
図６ｋは、ビットストリームエレメント「ＵｓａｃＳｉｎｇｌｅＣｈａｎｎｅｌＥｌｅｍｅｎｔ（ｉｎｄｅｐＦｌａｇ）」の構文表現を示す。前記構文エレメント「ＵｓａｃＳｉｎｇｌｅＣｈａｎｎｅｌＥｌｅｍｅｎｔ（ｉｎｄｅｐＦｌａｇ）」は、１つのコアコーダチャンネルを表す構文エレメント「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ」を含む。
【０４７５】
図６ｌは、ビットストリームエレメント「ＵｓａｃＣｈａｎｎｅｌＰａｉｒＥｌｅｍｅｎｔ（ｉｎｄｅｐＦｌａｇ）」の構文表現を示す。前記構文エレメント「ＵｓａｃＣｈａｎｎｅｌＰａｉｒＥｌｅｍｅｎｔ（ｉｎｄｅｐＦｌａｇ）」は、ステレオ構成に応じて、１つまたは２つのコアコーダチャンネルを表す構文エレメント「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ」を含む。
【０４７６】
図６ｍは、図６ｍにおいて明らかなように、多数のパラメータの定義を含むビットストリームエレメント「ｉｃｓ＿ｉｎｆｏ（）」の構文表現を示す。
【０４７７】
図６ｎは、ビットストリームエレメント「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ（）」の構文表現を示す。ビットストリームエレメント「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ（）」は、１つ以上の線形予測領域チャンネルストリーム「ｌｐｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」および／または１つ以上の周波数領域チャンネルストリーム「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」を含む。いくつかの他の制御情報は、図６ｎにおいて明らかなように、ビットストリームエレメント「ＵｓａｃＣｏｒｅＣｏｄｅｒＤａｔａ（）」に任意に含まれることもできる。
【０４７８】
図６ｏは、ビットストリームエレメント「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」の構文表現を示す。ビットストリームエレメント「ｆｄ＿ｃｈａｎｎｅｌ＿ｓｔｒｅａｍ（）」は、他の任意のビットストリームエレメントの中で、ビットストリームエレメント「ｓｃａｌｅ＿ｆａｃｔｏｒ＿ｄａｔａ（）」およびビットストリームエレメント「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」を含む。
【０４７９】
図６ｐは、ビットストリームエレメント「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」の構文表現を示す。ビットストリームエレメント「ａｃ＿ｓｐｅｃｔｒａｌ＿ｄａｔａ（）」は、ビットストリームエレメント「ａｒｉｔｈ＿ｒｅｓｅｔ＿ｆｌａｇ」を任意に含む。さらに、ビットストリームエレメントは、多くの算術的に符号化されたデータ「ａｒｉｔｈ＿ｄａｔａ（）」も含む。算術的に符号化されたデータは、例えば、図６ｇに関して記載されるビットストリーム構文に従いうる。
【０４８０】
１６．  実施代替案
【０４８１】
いくつかの形態が装置のコンテクストに記載されているにもかかわらず、これらの形態が対応する方法の説明を表すことは明らかであり、ブロックまたはデバイスは、方法ステップまたは方法ステップの特徴に対応する。同様に、方法ステップのコンテクストに記載される形態は、対応する装置の対応するブロックまたは項目または特徴の説明を表す。方法ステップのいくつかまたは全ては、例えば、マイクロプロセッサ、プログラム可能なコンピュータまたは電子回路のように、ハードウェア装置によって（または用いて）実行されうる。いくつかの実施形態において、最も重要な方法ステップのいずれか１つ以上は、そのような装置によって実行されうる。
【０４８２】
本発明の符号化されたオーディオ信号は、デジタル記憶媒体に格納することができまたは無線伝送媒体若しくは例えばインターネットなどの有線伝送媒体などの伝送媒体上に伝送することができる。
【０４８３】
特定の実施要求に応じて、本発明の実施形態は、ハードウェアにおいてまたはソフトウェアにおいて実施することができる。実施は、それぞれの方法が実行されるように、プログラム可能なコンピュータシステムと協働する（または協働することができる）電子的に可読の制御信号が格納される、デジタル記憶媒体、例えばフロッピー（登録商標）ディスク、ＤＶＤ、ブルーレイ（登録商標）、ＣＤ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュメモリを用いて実行することができる。そのため、デジタル記憶媒体は、コンピュータ可読でありうる。
【０４８４】
本発明によるいくつかの実施形態は、ここに記載される方法のうちの１つが実行されるように、プログラム可能なコンピュータシステムと協働することができる電子的に可読の制御信号を有するデータキャリアを含む。
【０４８５】
一般的に、本発明の実施形態は、プログラムコードを有するコンピュータプログラム製品として実施することができ、そのプログラムコードは、コンピュータプログラム製品がコンピュータ上で実行されるときに、それらの方法のうちの１つを実行するために働く。プログラムコードは、例えば、機械可読のキャリアに格納されうる。
【０４８６】
他の実施形態は、機械可読のキャリアに格納される、ここに記載される方法のうちの１つを実行するためのコンピュータプログラムを含む。
【０４８７】
したがって、換言すれば、本発明の方法の実施形態は、コンピュータプログラムがコンピュータ上で実行されるときに、ここに記載される方法のうちの１つを実行するためのプログラムコードを有するコンピュータプログラムである。
【０４８８】
したがって、本発明の方法のさらなる実施形態は、ここに記載される方法のうちの１つを実行するためのコンピュータプログラムが記録されるデータキャリア（またはデジタル記憶媒体またはコンピュータ可読の媒体）である。データキャリア、デジタル記憶媒体または記録された媒体は、典型的に、有形でありおよび／または一時的でない。
【０４８９】
したがって、本発明の方法のさらなる実施形態は、ここに記載される方法のうちの１つを実行するためのコンピュータプログラムを表すデータストリームまたは一連の信号である。データストリームまたは一連の信号は、例えば、データ通信接続を介して例えばインターネットを介して、転送されるように構成されうる。
【０４９０】
さらなる実施形態は、ここに記載される方法のうちの１つを実行するように構成されまたは適している処理手段、例えばコンピュータまたはプログラム可能な論理デバイスを含む。
【０４９１】
さらなる実施形態は、ここに記載される方法のうちの１つを実行するためのコンピュータプログラムがインストールされているコンピュータを含む。
【０４９２】
本発明によるさらなる実施形態は、ここに記載される方法のうちの１つを実行するためのコンピュータプログラムをレシーバに（例えば、電子的にまたは光学的に）転送するように構成される装置またはシステムを含む。レシーバは、例えば、コンピュータ、モバイルデバイス、メモリデバイスなどであってもよい。装置またはシステムは、例えば、コンピュータプログラムをレシーバに転送するためのファイルサーバを含みうる。
【０４９３】
いくつかの実施形態において、プログラム可能な論理デバイス（例えばフィールドプログラム可能なゲートアレイ）は、ここに記載される方法の機能のいくつかまたは全てを実行するために用いられうる。いくつかの実施形態において、フィールドプログラム可能なゲートアレイは、ここに記載される方法のうちの１つを実行するために、マイクロプロセッサと協働しうる。一般的に、その方法は、好ましくは、いかなるハードウェア装置によっても実行される。
【０４９４】
上述の実施形態は、本発明の原理のために単に例示するだけである。ここに記載される構成および詳細の修正および変更が他の当業者にとって明らかであるものと理解される。したがって、本発明は、特許の請求の範囲によってだけ制限され、ここに実施形態の記述および説明として示される具体的な詳細によって制限されないと意図される。
【０４９５】
１７．  結論
【０４９６】
結論として、本発明による実施形態は、以下の形態の１つ以上を含み、その形態は、個々にまたは組合せで用いられうる。
【０４９７】
ａ）  コンテクスト状態ハッシングメカニズム
【０４９８】
本発明の形態によれば、ハッシュテーブルにおける状態は、重要な状態およびグループ境界として考慮される。これは、必要なテーブルのサイズを著しく低減することを許可する。
【０４９９】
ｂ）  増加的なコンテクスト更新
【０５００】
形態によれば、本発明によるいくつかの実施形態は、コンテクストを更新するための計算的に効率的な方法を含む。いくつかの実施形態は、数値的な現在のコンテクスト値が数値的な前のコンテクスト値から導き出される増加的なコンテクスト更新を用いる。
【０５０１】
ｃ）  コンテクスト導出
【０５０２】
本発明の形態によれば、２つのスペクトル絶対値の合計を用いることは、切捨ての関連である。それは、（従来のシェープゲインベクトル量子化に対する反対のように）スペクトル係数の一種のゲインベクトル量子化である。それは、コンテクスト順序を制限することを意図し、その一方で、近辺から最も意味のある情報を伝達する。
【０５０３】
ｄ）  更新されたテーブル
【０５０４】
本発明の形態によれば、符号化効率および計算の複雑度間の特に良好な妥協を提供する最適化されたテーブルａｒｉ＿ｈａｓｈ＿ｍ［７４２］、ａｒｉ＿ｌｏｏｋｕｐ＿ｍ［７４２］およびａｒｉ＿ｃｆ＿ｍ［６４］［１７］が適用される。
【０５０５】
本発明による実施形態において適用されるいくつかの他の技術は、特許出願ＰＣＴ／ＥＰ２０１０／０６５７２５、ＰＣＴ／ＥＰ２０１０／０６５７２６およびＰＣＴ／ＥＰ２０１０／０６５７２７に記載されている。さらに、本発明によるいくつかの実施形態において、停止シンボルが用いられる。さらに、いくつかの実施形態において、符号なしの値だけが、コンテクストのために考慮される。
【０５０６】
しかしながら、上述の国際特許出願は、本発明によるいくつかの実施形態においてまだ用いられている形態を開示する。
【０５０７】
例えば、ゼロ領域の識別が本発明のいくつかの実施形態において用いられる。したがって、いわゆる「ｓｍａｌｌ−ｖａｌｕｅ−ｆｌａｇ（小さい値のフラグ）」が設定される（例えば数値的な現在のコンテクスト値ｃのビット１６）。
【０５０８】
いくつかの実施形態において、領域に依存するコンテクスト計算が用いられうる。しかしながら、他の実施形態において、領域に依存するコンテクスト計算が、複雑度およびテーブルのサイズを相当に小さく保つために省略されうる。
【０５０９】
さらに、ハッシュ関数を用いるコンテクストハッシングは、本発明の重要な形態である。コンテクストハッシングは、上述の予めの公開がされていない国際特許出願に記載されている２テーブル概念に基づきうる。しかしながら、コンテクストハッシングの特定の適合が、計算効率を増加するために、いくつかの実施形態において用いられうる。それにしても、本発明によるいくつかの他の実施形態において、上述の国際特許出願に記載されているコンテクストハッシングが用いられうる。
【０５１０】
さらに、増加的なコンテクストハッシングは、むしろ単純でさらに計算的に効率的である点に留意すべきである。また、本発明のいくつかの実施形態において用いられる値の符号からコンテクストに依存しないことは、コンテクストを単純化するために役立ち、それによって、必要メモリを相当に低く保つ。
【０５１１】
本発明のいくつかの実施形態において、２スペクトル値の合計およびコンテクスト制限を用いるコンテクスト導出が用いられる。これらの２つの形態は、組み合わせることができる。両方とも、近辺から最も意味のある情報を伝達することによってコンテクスト順序を制限することを意図する。
【０５１２】
いくつかの実施形態において、複数のゼロ値のグループの識別と類似しうる小さい値のフラグが用いられる。
【０５１３】
本発明によるいくつかの実施形態において、算術停止メカニズムが用いられる。概念は、相当する機能を有する、ＪＰＥＧにおいてシンボル「ｅｎｄ−ｏｆ−ｂｌｏｃｋ（ブロックの終結）」の使用と類似している。しかしながら、本発明のいくつかの実施形態において、シンボル（「ＡＲＩＴＨ＿ＳＴＯＰ」）は、明確にエントロピーコーダに含まれない。その代わりに、前に生じることがないすでに存在しているシンボルの組合せすなわち「ＥＳＣ＋０」が用いられる。換言すれば、オーディオデコーダは、数値的な値を表すために通常用いられない存在するシンボルの組合せを検出し、さらに、すでに存在しているシンボルのそのような組合せの発生を算術停止条件として解釈するように構成される。
【０５１４】
本発明による実施形態は、２テーブルコンテクストハッシングメカニズムを用いる。
【０５１５】
さらに要約すると、本発明によるいくつかの実施形態は、以下の５つの主な形態の１つ以上を含みうる。
【０５１６】
・改良されたテーブル
・近辺においてゼロ領域または小さい振幅領域を検出するための拡張されたコンテクスト
・コンテクストハッシング
・コンテクスト状態生成：コンテクスト状態の増加的な更新、および
・コンテクスト導出：振幅の合計および制限を含むコンテクスト値の特定の量子化
【０５１７】
さらなる結論として、本発明による実施形態の１つの形態は、増加的なコンテクスト更新に位置する。本発明による実施形態は、ワーキングドラフトの（例えばワーキングドラフト５の）広範囲な計算を回避する、コンテクストの更新のための効率的な概念を含む。むしろ、単純なシフト演算および論理演算が、いくつかの実施形態において用いられる。単純なコンテクスト更新は、コンテクストの計算を著しく容易にする。
【０５１８】
いくつかの実施形態において、コンテクストは、値（例えば復号化されたスペクトル値）の符号から独立している。値の符号からのコンテクストのこの独立は、コンテクスト変数の低減された複雑度をもたらす。この概念は、コンテクストにおいて符号の無視が符号化効率の多大な低下もたらさらないという知見に基づく。
【０５１９】
本発明の形態によれば、コンテクストは、２スペクトル値の合計を用いて導き出される。したがって、コンテクストの記憶のための必要メモリは、著しく低減される。したがって、２スペクトル値の合計を表すコンテクスト値の使用は、場合によっては有利なものとして考慮されうる。
【０５２０】
また、コンテクスト制限は、場合によっては重要な改良をもたらす。２スペクトル値の合計を用いるコンテクストの導出に加えて、コンテクスト配列「ｑ」のエントリは、いくつかの実施形態において「０ｘＦ」の最大値に制限され、それは、次々に必要メモリの制限をもたらす。コンテクスト配列「ｑ」の値のこの制限は、いくつかの効果をもたらす。
【０５２１】
いくつかの実施形態において、いわゆる「ｓｍａｌｌ  ｖａｌｕｅ  ｆｌａｇ（小さい値のフラグ）」が用いられる。（数値的な現在のコンテクスト値にも指定される）コンテクスト変数ｃを得ることにおいて、フラッグは、いくつかのエントリ「ｑ［１］［ｉ−３］」から「ｑ［１］［ｉ−１］」の値が非常に小さい場合、設定される。したがって、コンテクストの計算を高効率で実行することができる。特に意味のあるコンテクスト値（例えば数値的な現在のコンテクスト値）を得ることができる。
【０５２２】
いくつかの実施形態において、算術停止メカニズムが用いられる。「ＡＲＩＴＨ＿ＳＴＯＰ」メカニズムは、ゼロ値だけが残っている場合、算術符号化または復号化の効率的な停止を可能にする。したがって、符号化効率を、複雑度に関して適度なコストで改良することができる。
【０５２３】
本発明の形態によれば、２テーブルコンテクストハッシングメカニズムが用いられる。コンテクストのマッピングは、テーブル「ａｒｉ＿ｌｏｏｋｕｐ＿ｍ」の後のルックアップテーブル評価との併用でテーブル「ａｒｉ＿ｈａｓｈ＿ｍ」を評価する間隔分割アルゴリズムを用いて実行される。このアルゴリズムは、ＷＤ３アルゴリズムよりも効率的である。
【０５２４】
以下において、いくつかの付加的な詳細が述べられる。
【０５２５】
テーブル「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［７４２］」および「ａｒｉｔｈ＿ｌｏｏｋｕｐ＿ｍ［７４２］」は、２つの異なるテーブルである点にここで留意すべきである。第１のものは、単一のコンテクストインデックス（例えば数値的なコンテクスト値）を確率モデルインデックス（例えばマッピングルールインデックス値）にマップするために用いられ、さらに、第２のものは、「ａｒｉｔｈ＿ｈａｓｈ＿ｍ［］」においてコンテクストインデックスによって区切られる連続的なコンテクストのグループを単一の確率モデルにマップするために用いられる。
【０５２６】
テーブル「ａｒｉｔｈ＿ｃｆ＿ｍ  ｓｂ［６４］［１６］」は、次元がわずかに異なるにもかかわらず、テーブル「ａｒｉ＿ｃｆ＿ｍ［６４］［１７］」に代わるものとして用いられうる点にさらに留意すべきである。「ａｒｉ＿ｃｆ＿ｍ［］［］」および「ａｒｉ＿ｃｆ＿ｍｓｂ［］［］」は、確率モデルの第１７番目の係数が常にゼロであるように、同じテーブルを参照しうる。それは、テーブルを格納するための必要なスペースをカウントするときに、時々考慮されない。
【０５２７】
上記を要約すると、本発明によるいくつかの実施形態は、ＭＰＥＧ  ＵＳＡＣワーキングドラフトにおいて（例えばＭＰＥＧ  ＵＳＡＣワーキングドラフト５において）修正を生じる提案された新しいノイズレス符号化（符号化または復号化）を提供する。前記修正は、同封の図においておよび関連した説明において明らかである。
【０５２８】
結びとして、変数、配列、関数などの名前において、接頭辞「ａｒｉ」および接頭辞「ａｒｉｔｈ」は、交互に用いられる点に留意すべきである。
【図１ａ】
0005600805.tif 000002
【図１ｂ】
0005600805.tif 000003
【図２】
0005600805.tif 000004
【図２ａ】
0005600805.tif 000005
【図２ｂ】
0005600805.tif 000006
【図３】
0005600805.tif 000007
【図４】
0005600805.tif 000008
【図５ａ】
0005600805.tif 000009
【図５ｂ】
0005600805.tif 000010
【図５ｃ】
0005600805.tif 000011
【図５ｄ】
0005600805.tif 000012
【図５ｅ】
0005600805.tif 000013
【図５ｆ】
0005600805.tif 000014
【図５ｇ（１）】
0005600805.tif 000015
【図５ｇ（２）】
0005600805.tif 000016
【図５ｈ】
0005600805.tif 000017
【図５ｉ】
0005600805.tif 000018
【図５ｊ】
0005600805.tif 000019
【図５ｋ】
0005600805.tif 000020
【図５ｌ】
0005600805.tif 000021
【図５ｍ】
0005600805.tif 000022
【図５ｎ】
0005600805.tif 000023
【図５ｏ】
0005600805.tif 000024
【図５ｐ】
0005600805.tif 000025
【図５ｑ】
0005600805.tif 000026
【図５ｒ】
0005600805.tif 000027
【図６ａ】
0005600805.tif 000028
【図６ｂ】
0005600805.tif 000029
【図６ｃ】
0005600805.tif 000030
【図６ｄ】
0005600805.tif 000031
【図６ｅ】
0005600805.tif 000032
【図６ｆ】
0005600805.tif 000033
【図６ｇ】
0005600805.tif 000034
【図６ｈ】
0005600805.tif 000035
【図６ｉ】
0005600805.tif 000036
【図６ｊ】
0005600805.tif 000037
【図６ｋ】
0005600805.tif 000038
【図６ｌ】
0005600805.tif 000039
【図６ｍ】
0005600805.tif 000040
【図６ｎ】
0005600805.tif 000041
【図６ｏ】
0005600805.tif 000042
【図６ｐ】
0005600805.tif 000043
【図７】
0005600805.tif 000044
【図８】
0005600805.tif 000045
【図９】
0005600805.tif 000046
【図１０】
0005600805.tif 000047
【図１１】
0005600805.tif 000048
【図１２】
0005600805.tif 000049
【図１３】
0005600805.tif 000050
【図１４ａ】
0005600805.tif 000051
【図１４ｂ】
0005600805.tif 000052
【図１５ａ】
0005600805.tif 000053
【図１５ｂ】
0005600805.tif 000054
【図１６ａ】
0005600805.tif 000055
【図１６ｂ】
0005600805.tif 000056
【図１７】
0005600805.tif 000057
【図１８】
0005600805.tif 000058
【図１９】
0005600805.tif 000059
【図２０】
0005600805.tif 000060
【図２１】
0005600805.tif 000061
【図２２（１）】
0005600805.tif 000062
【図２２（２）】
0005600805.tif 000063
【図２２（３）】
0005600805.tif 000064
【図２２（４）】
0005600805.tif 000065
【図２３（１）】
0005600805.tif 000066
【図２３（２）】
0005600805.tif 000067
【図２３（３）】
0005600805.tif 000068
【図２４】
0005600805.tif 000069
【図２５】
0005600805.tif 000070
【図２６】
0005600805.tif 000071
【図２７】
0005600805.tif 000072
【図２８】
0005600805.tif 000073
【図２９】
0005600805.tif 000074
【図３０】
0005600805.tif 000075
【図３１】
0005600805.tif 000076
【図３２】
0005600805.tif 000077
【図３３】
0005600805.tif 000078
【図３４】
0005600805.tif 000079
【図３５】
0005600805.tif 000080
【図３６】
0005600805.tif 000081
【図３７】
0005600805.tif 000082
【図３８】
0005600805.tif 000083
【図３９】
0005600805.tif 000084
【図４０ａ】
0005600805.tif 000085
【図４０ｂ】
0005600805.tif 000086
【図４０ｃ】
0005600805.tif 000087
【図４０ｄ】
0005600805.tif 000088
【図４０ｅ】
0005600805.tif 000089
【図４０ｆ】
0005600805.tif 000090
【図４０ｇ】
0005600805.tif 000091
【図４０ｈ】
0005600805.tif 000092
【図４１（１）】
0005600805.tif 000093
【図４１（２）】
0005600805.tif 000094
【図４２（１）】
0005600805.tif 000095
【図４２（２）】
0005600805.tif 000096
【図４２（３）】
0005600805.tif 000097
【図４２（４）】
0005600805.tif 000098
【図４３（１）】
0005600805.tif 000099
【図４３（２）】
0005600805.tif 000100
【図４３（３）】
0005600805.tif 000101
【図４３（４）】
0005600805.tif 000102
【図４３（５）】
0005600805.tif 000103
【図４３（６）】
0005600805.tif 000104
【図４４】
0005600805.tif 000105