(57)【要約】  初期共通換算係数に関連する初期のビット数を決定し、初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出し、初期のインクリメント値により初期共通換算係数をインクリメントする。更に、目標ビット数に基づいて、インクリメントされた共通換算係数を調整し、調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出する。複数の個々の換算係数に関連する現在のビット数が目標ビット数を超えている場合、ビット数が目標ビット数を超えなくなるまで、調整された共通換算係数を変更する。
2007507750.tif 000002
【特許請求の範囲】
【請求項１】
初期共通換算係数に関連する初期ビット数を決定するステップと、
上記初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出するステップと、
上記初期のインクリメント値により上記初期共通換算係数をインクリメントするステップと、
上記目標ビット数に基づいて、上記インクリメントされた共通換算係数を調整するステップと、
上記調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出するステップと、
上記複数の個々の換算係数に関連する現在のビット数が上記目標ビット数を超えている場合、該ビット数が上記目標ビット数を超えなくなるまで、上記調整された共通換算係数を変更するステップとを有する歪み制御方法。
【請求項２】
上記初期共通換算係数を決定するステップを更に有する請求項１記載の歪み制御方法。
【請求項３】
上記初期共通換算係数を決定するステップは、
フレーム内の最大のスペクトル係数を選択するステップと、
上記最大のスペクトル係数が０である場合、上記初期共通換算係数を３０に設定するステップと、
上記最大のスペクトル係数が０ではない場合、上記初期共通換算係数を先の共通換算係数に設定するステップとを有することを特徴とする請求項２記載の歪み制御方法。
【請求項４】
上記先の共通換算係数は、前フレームの共通換算係数又は他のチャンネルの共通換算係数のいずれかであることを特徴とする請求項３記載の歪み制御方法。
【請求項５】
上記初期のインクリメント値は、第１のインクリメント値をｉｎｉｔｉａｌ＿ｉｎｃｒｅｍｅｎｔとし、使用ビット数をｉｎｉｔｉａｌ＿ｂｉｔｓとし、目標ビット数をｔａｒｇｅｔ＿ｂｉｔｓとして、ｉｎｉｔｉａｌ＿ｉｎｃｒｅｍｅｎｔ＝１０＊（ｉｎｉｔｉａｌ＿ｂｉｔｓ−ｔａｒｇｅｔ＿ｂｉｔｓ）／ｔａｒｇｅｔ＿ｂｉｔｓにより算出されることを特徴とする請求項１記載の歪み制御方法。
【請求項６】
上記インクリメントされた共通換算係数を調整するステップは、
上記インクリメントされた共通換算係数を用いて、フレーム内のスペクトルデータを量子化するステップと、
上記量子化されたスペクトルデータが妥当であるかを判定するステップと、
上記インクリメントされた共通換算係数に関連する現在のビット数を決定するステップと、
上記現在のビット数が上記目標ビット数を超えている場合、上記インクリメントされた共通換算係数をビット削減順に変更するステップと、
上記現在のビット数が上記目標ビット数を超えていない場合、上記インクリメントされた共通換算係数をビット増加順に変更するステップとを有することを特徴とする請求項１記載の歪み制御方法。
【請求項７】
上記インクリメントされた共通換算係数は、現在のインクリメントが０になるまで変更されることを特徴とする請求項６記載の歪み制御方法。
【請求項８】
上記複数の個々の換算係数を算出するステップは、
上記複数の個々の換算係数を、該複数の個々の換算係数の調整に関連するエネルギ誤差が許容歪みを下回るまで、繰り返し調整するステップとを有することを特徴とする請求項１記載の歪み制御方法。
【請求項９】
上記複数の個々の換算係数を調整するステップは、
上記複数の個々の換算係数を現在のインクリメント値によりインクリメントするステップと、
上記インクリメントされた個々の換算係数に関連するエネルギ誤差を算出するステップと、
上記算出されたエネルギ誤差のタイプを判定するステップと、
上記算出されたエネルギ誤差が第１のタイプである場合、上記現在のインクリメント値を第１の定数に設定するステップと、
上記算出されたエネルギ誤差が第２のタイプである場合、上記現在のインクリメント値を第２の定数に設定するステップと、
上記算出されたエネルギ誤差が上記許容歪みを下回っているか否かを判定するステップとを有する請求項８記載の歪み制御方法。
【請求項１０】
上記算出されたエネルギ誤差のタイプを判定するステップは、上記インクリメントされた個々の換算係数に関連する算出されたエネルギ誤差をｅｒｒｏｒ＿ｅｎｅｒｇｙ（ｓｂ）とし、第３の定数をＫとし、許容歪みをａｌｌｏｗｅｄ＿ｄｉｓｔｏｒｔｉｏｎとして、
ｅｒｒｏｒ＿ｅｎｅｒｇｙ（ｓｂ）＞Ｋ＊ａｌｌｏｗｅｄ＿ｄｉｓｔｏｒｔｉｏｎの場合、上記算出されたエネルギ誤差を第１のタイプとし、
ｅｒｒｏｒ＿ｅｎｅｒｇｙ（ｓｂ）≦Ｋ＊ａｌｌｏｗｅｄ＿ｄｉｓｔｏｒｔｉｏｎの場合、上記算出されたエネルギ誤差を第２のタイプとすることを特徴とする請求項９記載の歪み制御方法。
【請求項１１】
上記第１の定数、第２の定数及び第３の定数の値は、経験的に定義されることを特徴とする請求項１０記載の歪み制御方法。
【請求項１２】
上記調整された共通換算係数を変更するステップは、
上記複数の個々の換算係数に関連する現在のビット数が上記目標ビット数を超えているかを判定するステップと、
上記調整された共通換算係数にオフセット値を加算し、修正された共通換算係数を算出するステップと、
上記複数の個々の換算係数及び上記修正された共通換算係数に関連するビット数を算出するステップとを有することを特徴とする請求項１記載の歪み制御方法。
【請求項１３】
上記調整された共通換算係数が変更される場合、上記複数の個々の換算係数の再算出を省略するステップを更に有する請求項１２記載の歪み制御方法。
【請求項１４】
プロセッサにより実行されて、該プロセッサに歪み制御方法を実行させる命令を提供するコンピュータにより読取可能な媒体において、該歪み制御方法は、
初期共通換算係数に関連する初期のビット数を決定するステップと、
上記初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出するステップと、
上記初期のインクリメント値により上記初期共通換算係数をインクリメントするステップと、
上記目標ビット数に基づいて、上記インクリメントされた共通換算係数を調整するステップと、
上記調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出するステップと、
上記複数の個々の換算係数に関連する現在のビット数が上記目標ビット数を超えている場合、該ビット数が上記目標ビット数を超えなくなるまで、上記調整された共通換算係数を変更するステップとを有するコンピュータにより読取可能な媒体。
【請求項１５】
上記歪み制御方法は、上記初期共通換算係数を決定するステップを更に有することを特徴とする請求項１４記載のコンピュータにより読取可能な媒体。
【請求項１６】
上記初期共通換算係数を決定するステップは、
フレーム内の最大のスペクトル係数を選択するステップと、
上記最大のスペクトル係数が０である場合、上記初期共通換算係数を３０に設定するステップと、
上記最大のスペクトル係数が０ではない場合、上記初期共通換算係数を先の共通換算係数に設定するステップとを有することを特徴とする請求項１５記載のコンピュータにより読取可能な媒体。
【請求項１７】
上記先の共通換算係数は、前フレームの共通換算係数又は他のチャンネルの共通換算係数のいずれかであることを特徴とする請求項１６記載のコンピュータにより読取可能な媒体。
【請求項１８】
メモリと、
上記メモリに接続された、少なくとも１つのプロセッサとを備えるコンピュータシステムにおいて、
上記少なくとも１つのプロセッサは、一連のインストラクションを実行することにより、
初期共通換算係数に関連する初期のビット数を決定し、
上記初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出し、
上記初期のインクリメント値により上記初期共通換算係数をインクリメントし、
上記目標ビット数に基づいて、上記インクリメントされた共通換算係数を調整し、
上記調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出し、
上記複数の個々の換算係数に関連する現在のビット数が上記目標ビット数を超えている場合、該ビット数が上記目標ビット数を超えなくなるまで、上記調整された共通換算係数を変更するコンピュータシステム。
【請求項１９】
上記少なくとも１つのプロセッサは、一連のインストラクションを実行することにより、上記初期共通換算係数を決定することを特徴とする請求項１８記載のコンピュータシステム。
【請求項２０】
上記少なくとも１つのプロセッサは、フレーム内の最大のスペクトル係数を選択し、上記最大のスペクトル係数が０である場合、上記初期共通換算係数を３０に設定し、上記最大のスペクトル係数が０でない場合、上記初期共通換算係数を先の共通換算係数に設定することにより上記初期共通換算係数を決定することを特徴とする請求項１９記載のコンピュータシステム。
【請求項２１】
上記先の共通換算係数は、前フレームの共通換算係数又は他のチャンネルの共通換算係数のいずれかであることを特徴とする請求項２０記載のコンピュータシステム。
【請求項２２】
初期共通換算係数に関連する初期のビット数を決定するハフマン符号化モジュールと、
上記初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出し、上記初期のインクリメント値により上記初期共通換算係数をインクリメントし、上記目標ビット数に基づいて、上記インクリメントされた共通換算係数を調整し、上記調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出し、上記複数の個々の換算係数に関連する現在のビット数が目標ビット数を超えている場合、該ビット数が目標ビット数を超えなくなるまで、上記調整された共通換算係数を変更する量子化モジュールとを備える符号化装置。
【請求項２３】
上記量子化モジュールは、上記初期共通換算係数を決定することを特徴とする請求項２２記載の符号化装置。
【請求項２４】
上記量子化モジュールは、フレーム内の最大のスペクトル係数を選択し、上記最大のスペクトル係数が０である場合、上記初期共通換算係数を３０に設定し、上記最大のスペクトル係数が０でない場合、上記初期共通換算係数を先の共通換算係数に設定することにより上記初期共通換算係数を決定することを特徴とする請求項２３記載の符号化装置。
【請求項２５】
初期共通換算係数に関連する初期のビット数を決定する決定手段と、
上記初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出する算出手段と、
上記初期のインクリメント値により上記初期共通換算係数をインクリメントするインクリメント手段と、
上記目標ビット数に基づいて、上記インクリメントされた共通換算係数を調整する調整手段と、
上記調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出する算出手段と、
上記複数の個々の換算係数に関連する現在のビット数が上記目標ビット数を超えている場合、該ビット数が上記目標ビット数を超えなくなるまで、上記調整された共通換算係数を変更する変更手段とを備える歪み制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、オーディオ符号化に関する。詳しくは、本発明は、オーディオ符号化におけるレート−歪み制御（rate-distortion control）の方式に関する。
【著作権表示／許諾】
【０００２】
この明細書の開示内容の一部は、著作権保護の対象となるマテリアルを含む。著作権所有者は、この明細書が特許商標庁への特許出願であると認められるファックスコピーに対しては異議を唱えないが、この他のあらゆる全ての著作権を主張する。以下の表示は、後述するソフトウェア及びデータ、並びに添付の図面に適用される。：著作権（ｃ）２００１：全ての著作権はソニーエレクトロニクスインク社に帰属する（Copyright (c) 2001, Sony Electronics, Inc., All Rights Reserved）。
【背景技術】
【０００３】
標準化組織であるモーションピクチャエキスパートグループ（Motion Picture Experts Group：ＭＰＥＧ）は、例えば、ＭＰＥＧ−２アドバンスドオーディオ符号化（advanced audio coding：ＡＡＣ）規格（ＩＳＯ／ＩＥＣ１３８１８−７参照）及びＭＰＥＧ−４ＡＡＣ規格（ＩＳＯ／ＩＥＣ１４４９６−３参照）等の仕様書において、データ圧縮方法を開示している。本明細書では、これらの規格を総称的にＭＰＥＧ規格と呼ぶ。
【０００４】
ＭＰＥＧ規格が定義するオーディオエンコーダは、入力パルスコード変調（pulse code modulation：ＰＣＭ）信号を受信し、修正離散コサイン変換（modified discrete cosine transform：ＭＤＣＴ）処理によってＰＣＭ信号を周波数スペクトルデータに変換し、レート−歪み制御メカニズムを用いて周波数スペクトルデータを量子化するための最適な換算係数を決定する。更に、オーディオエンコーダは、最適な換算係数を用いて周波数スペクトルデータを量子化し、この結果得られる量子化されたスペクトル係数を換算係数帯域（scalefactor band）にグループ化し、量子化され、グループ化された係数にハフマン符号化を施す。
【０００５】
ＭＰＥＧ規格では、レート−歪み制御メカニズム（rate-distortion control mechanism）は、２つの主要な要求を満たすスペクトルデータを生成できる換算係数を繰り返し選択する。まず、量子化雑音（音質）は、スペクトルデータに重畳しても人間の耳に聞こえない最大量の雑音に対応する許容歪みを超えてはならない。許容歪みは、通常人間の聴覚の心理音響モデリングに基づいて決定される。次に、ハフマン符号化の結果として使用されるビット量は、符号化により指定されるビットレートから算出される許容できるビット量を超えてはならない。
【０００６】
レート−歪み制御メカニズムは、通常、個々の換算係数と共通換算係数を定義する。個々の換算係数は、フレーム内で異なる換算係数帯域毎に変化し、共通換算係数は、フレーム内で変化しない。ＭＰＥＧ規格では、レート−歪み制御処理は、ハフマン符号化により生成される使用されるビット量と、符号化が指定するビットレートから算出される許容できるビット量との間の差分を最小化するように、初期の（可能な最小の）共通換算係数を繰り返しインクリメントする。そして、レート−歪み制御処理は、個々の換算係数帯域の歪みが許容歪みを超えているかどうかを確認し、換算係数帯域を拡大し、再び共通換算係数ループを呼び出す。このレート−歪み制御処理は、量子化された周波数スペクトルの雑音が許容歪みより小さくなり、量子化に必要なビット量が許容できるビット量より小さくなるまで繰り返される。
【０００７】
上述したレート−歪み制御処理は、多くの可能な換算係数を処理しなければならないので、演算負荷が大きい。更に、この処理では、低いビットレート（６４キロビット／秒以下）が要求される場合、最適な換算係数を選ぶことができない。
【発明の開示】
【課題を解決するための手段】
【０００８】
初期共通換算係数に関連する初期のビット数を決定し、初期ビット数及び目標ビット数を用いて初期のインクリメント値を算出し、初期のインクリメント値により初期共通換算係数をインクリメントする。更に、目標ビット数に基づいて、インクリメントされた共通換算係数を調整し、調整された共通換算係数及び許容歪みに基づいて、複数の個々の換算係数を算出する。複数の個々の換算係数に関連する現在のビット数が目標ビット数を超えている場合、ビット数が目標ビット数を超えなくなるまで、調整された共通換算係数を変更する。
【０００９】
本発明は、以下の詳細な説明及び本発明の様々な実施形態を示す添付の図面によって、より明瞭になるが、これらは、本発明を説明するために本発明を例示的に示すものであり、本発明は、特定の実施形態に制限されるものではない。
【発明を実施するための最良の形態】
【００１０】
以下、添付の図面を用いて、本発明の実施例を詳細に説明する。添付の図面においては、類似する要素には、類似する参照符号を付す。添付の図面は、本発明を実現する特定の実施例を例示的に示している。これらの実施例については、当業者が本発明を実施することができるよう、詳細に説明するが、この他の実施例も可能であり、本発明の範囲から逸脱することなく、論理的、機械的、電気的、機能的及びこの他の変更を行うことができる。したがって、以下の詳細な説明は、限定的には解釈されず、本発明の範囲は、添付の請求の範囲によってのみ定義される。
【００１１】
まず、図１に示す符号化装置１００の一実施形態により、本発明の動作の概観について説明する。符号化装置１００は、本明細書では総称的にＭＰＥＧ規格と呼ぶＭＰＥＧ音声符号化規格（例えば、ＭＰＥＧ−２ＡＡＣ規格、ＭＰＥＧ−４ＡＡＣ規格等）に準拠する。符号化装置１００は、フィルタバンクモジュール１０２と、符号化ツール１０４と、心理音響モデラ１０６と、量子化モジュール１１０と、ハフマン符号化モジュール１１４とを備える。
【００１２】
フィルタバンクモジュール１０２は、パルスコード変調（pulse code modulation：ＰＣＭ）信号を受信し、修正離散コサイン変換（modified discrete cosine transform：ＭＤＣＴ）処理を実行し、オーディオ信号を周波数領域にマッピングする。窓関数は、解析される信号を時間的に拡張し、周波数分解能を向上させるロングウィンドウタイプ及び解析される信号を時間的に縮小し、時間分解能を向上させるショートウィンドウタイプの２つのタイプのウィンドウを用いて信号を処理する。ロングウィンドウタイプは、安定した信号のみが存在する場合に使用され、ショートウィンドウタイプは、急速な信号変化がある場合に使用される。解析される信号の特性に基づくこれらの２つのタイプの処理を用いることによって、時間分解能が不十分な場合に生じるプレエコーと呼ばれる不快な雑音の発生を防止することができる。ＭＤＣＴ処理は、時間領域信号を周波数スペクトルデータの複数のサンプルに変換する。
【００１３】
符号化ツール１０４は、スペクトル処理の任意のツールのセットを含む。例えば、符号化ツール１０４は、予測符号化を実行するためのゆらぎ雑音シェーピング（temporal noise shaping：ＴＮＳ）ツール及び予測ツールを含む。ＴＮＳツールを用いて、変換の各ウィンドウ内で雑音の時間的なシェープを制御し、プレエコー問題を解決することができる。また、予測ツールを用いて、サンプル間の相関性を排除することができる。
【００１４】
心理音響モデラ１０６は、サンプルを分析し、聴覚マスキング曲線を決定する。聴覚マスキング曲線は、各サンプルに重畳しても、人間の耳には聞こえない雑音の最大レベルを示す。ここで、人間の耳に聞き取られるレベルは、人間の聴覚の心理音響モデルに基づいて判定される。聴覚マスキング曲線は、望ましい雑音スペクトルの推定値として機能する。
【００１５】
量子化モジュール１１０は、周波数スペクトルデータの最適な換算係数を選択する。換算係数選択処理は、後述するようにマスキング曲線から算出された許容歪み及び符号化の際に指定されるビットレートから算出された許容できるビット数（ここでは、目標ビット数と呼ぶ。）に基づいて行われる。最適な換算係数が選択されると、量子化モジュール１１０は、これらの最適な換算係数を用いて、周波数スペクトルデータを量子化する。この結果得られる量子化されたスペクトル係数は、換算係数帯域（scalefactor band：ＳＦＢ）にグループ化される。各ＳＦＢは、同じ換算係数を用いて生成された係数を含む。
【００１６】
ハフマン符号化モジュール１１４は、量子化されたスペクトル係数の各グループについて、最適なハフマンコードブックを選択し、この最適なハフマンコードブックを用いてハフマン符号化処理を実行する。そして、これにより得られる可変長符号（variable length code：ＶＬＣ）、符号化で用いられたコードブックを特定するデータ、量子化モジュール１１０によって選択された換算係数及びこの他の何らかの情報を組み合わせて、ビットストリームが生成される。
【００１７】
一実施形態においては、量子化モジュール１１０は、レート−歪み制御部１０８及び量子化／逆量子化部１１２を備える。レート−歪み制御部１０８は、スペクトルデータの各フレームについて、換算係数選択処理を繰り返し実行する。この処理では、レート−歪み制御部１０８は、全体のフレームについて、最適な共通換算係数を発見し、及びフレーム内の異なる換算係数帯域について、最適の個々の換算係数を発見する。
【００１８】
一実施形態においては、レート−歪み制御部１０８は、まず、初期共通換算係数を前フレーム又は他のチャンネルの共通換算係数の値に設定する。量子化／逆量子化部１１２は、初期共通換算係数を用いて、フレーム内のスペクトルデータを量子化し、量子化されたスペクトルデータをハフマン符号化モジュール１１４に渡し、ハフマン符号化モジュール１１４は、量子化されたスペクトルデータをハフマン符号化し、これにより得られるＶＬＣによって用いられるビット数を決定する。レート−歪み制御部１０８は、この使用ビット数及び符号化が指定するビットレートから算出される目標ビット数に基づいて、初期共通換算係数の第１のインクリメント値を決定する。初期共通換算係数に第１のインクリメント値が加算されると、インクリメントされた共通換算係数は、目標ビット数に比較的近いビット数を生成する。レート−歪み制御部１０８は、これにより得られる使用ビット数を目標ビット数により近付けるように、更にインクリメントされた共通換算係数を調整する。
【００１９】
更に、レート−歪み制御部１０８は、フレーム内の換算係数帯域について、個々の換算係数を算出する。後により詳細に説明するように、個々の換算係数は、調整された共通換算係数及び許容歪みに基づいて算出される。一実施形態においては、個々の換算係数の演算では、特定の個々の換算係数に関連するエネルギ誤差が許容歪みを下回るまで、個々の換算係数を繰り返し変更する。一実施形態においては、エネルギ誤差は、量子化／逆量子化部１１２により、所定の換算係数を用いて換算係数帯域の周波数スペクトルデータを量子化し、この量子化データを所定の換算係数で逆量子化し、元の（予め量子化された）周波数スペクトルデータと逆量子化されたスペクトルデータとの間の差分を算出することによって算出される。
【００２０】
個々の換算係数が算出されると、レート−歪み制御部１０８は、個々の換算係数及び調整された共通換算係数を用いて生成されたビット数が目標ビット数を超えているかを判定する。これに該当する場合、レート−歪み制御部１０８は、更に、使用ビット数が目標ビット数を超えなくなるまで、調整された共通換算係数を変更する。算出された個々の換算係数は、量子化雑音シェープの所望のプロファイルを生成するので、調整された共通換算係数が変更されれば、個々の換算係数は、再計算する必要はない。
【００２１】
図２〜図６は、本発明の様々な実施形態に基づき、図１の量子化モジュール１１０が実行する換算係数選択処理のフローチャートである。この処理は、ハードウェア（例えば回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシン上で実行されるソフトウェア）又はこれらの両方の組合せを含む処理ロジックによって実行してもよい。ソフトウェアによって実現できる処理については、これらのフローチャートを用いて本発明を説明することにより、当業者は、適切に構成されたコンピュータによってこの処理を実行するための命令を含むプログラムを開発することができる（コンピュータのプロセッサは、メモリを含むコンピュータにより読取可能な媒体から命令を読み出し、実行する）。コンピュータにより実行可能な命令は、コンピュータプログラミング言語として書いてもよく、ファームウェアロジックとして実現してもよい。一般的に認知されている規格に準拠するプログラミング言語で書いた場合、このような命令は、様々なオペレーティングシステムにインタフェースされ、様々な種類のハードウェアプラットホームで実行できる。更に、本発明では、如何なる特定のプログラミング言語にも基づくことなく、本発明を説明する。ここに開示する本発明の処理を実現するために、様々なプログラミング言語を用いてることができることは明らかである。更に、当分野においては、動作を行い又は結果を生じるものとして、ソフトウェアを様々な呼び方で呼ぶことがある（例えば、プログラム、手続き、プロセス、アプリケーション、モジュール、ロジック等）。これらの表現は、コンピュータによるソフトウェアの実行によって、コンピュータのプロセッサが動作を実行し又は結果を生じるということを単に簡略的に表現しているに過ぎない。また、本発明の範囲から逸脱することなく、図２〜図６に示す処理ステップを省略してもよく、他のステップを追加してもよく、更に、ここで説明する処理ステップの実行順序を変更してもよい。
【００２２】
図２は、フレーム内のデータについて最適な換算係数を選択するための処理２００の一実施形態のフローチャートである。
【００２３】
図２に示すように、処理ロジックは、まず、処理するフレーム内のデータの初期共通換算係数を決定する（処理ステップ２０２）。フレームのデータは、例えば、ＭＤＣＴ周波数スペクトル係数等の周波数スペクトル係数を含んでいてもよい。一実施形態においては、処理ロジックは、フレーム内の最大の絶対値を有するスペクトル係数がゼロにならないようにし、初期共通換算係数を前フレーム又は他のチャンネルの共通換算係数に設定することにより、フレームの初期共通換算係数を決定する。例えば、チャンネル０の初期共通換算係数を前フレームの共通換算係数に設定し、チャンネル１の初期共通換算係数をチャンネル０の共通換算係数に設定してもよい。フレーム内で最大の値を有するスペクトル係数がゼロになった場合、処理ロジックは、初期共通換算係数を予め定義された数（例えば、３０）に設定してもよく、この数は、経験的に定義してもよい。
【００２４】
次に、処理ロジックは、初期共通換算係数を用いてフレーム内のデータを量子化し（処理ステップ２０４）、これにより得られる量子化データの妥当性を検査する（判定ステップ２０６）。一実施形態においては、絶対値が閾値数（例えば、ＭＰＥＧ規格では８１９１）を超えていなければ、量子化されたスペクトル係数は、妥当である。生成される量子化データが妥当でない場合、処理ロジックは、例えば初期共通換算係数を経験的に定義される定数（例えば、５）分インクリメントする（処理ステップ２０８）。
【００２５】
生成される量子化データが妥当な場合、処理ロジックは、ハフマン符号化で用いられる量子化データのビット数を決定し（処理ステップ２１０）、使用ビット数及び目標ビット数に基づいて、初期共通換算係数の第１のインクリメント値を算出し（処理ステップ２１２）、第１のインクリメント値を初期共通換算係数に加算する（処理ステップ２１４）。上述のように、目標ビット数は、符号化により特定されるビットレートから算出できる。
【００２６】
一実施形態においては、第１のインクリメント値は、以下の式により算出される。
ｉｎｉｔｉａｌ＿ｉｎｃｒｅｍｅｎｔ＝１０＊（ｉｎｉｔｉａｌ＿ｂｉｔｓ−ｔａｒｇｅｔ＿ｂｉｔｓ）／ｔａｒｇｅｔ＿ｂｉｔｓ
ここで、ｉｎｉｔｉａｌ＿ｉｎｃｒｅｍｅｎｔは、第１のインクリメント値であり、ｉｎｉｔｉａｌ＿ｂｉｔｓは、使用ビット数であり、ｔａｒｇｅｔ＿ｂｉｔｓは、目標ビット数である。この式は、使用ビット数を目標ビット数に速やかに収束させるための動的なインクリメント方式を提供するために（例えば、一連の実験により）導出された。すなわち、インクリメントされた共通換算係数は、目標ビット数に比較的近い使用ビット数を生成する。しかしながら、この時点で、生成される使用ビット数は、目標ビット数より未だ大きい又は小さい場合もある。
【００２７】
次に、処理ロジックは、更に、使用ビット数が目標ビット数により近付くように、インクリメントされた共通換算係数を調整する（処理ステップ２２０）。調整処理の一実施形態については、図３を用いて後に更に詳細に説明する。
【００２８】
処理ステップ２２２において、処理ロジックは、調整された共通換算係数及び許容歪みを用いて、フレーム内の換算係数帯域の個々の換算係数を算出する。一実施形態においては、許容歪みは、図１の心理音響モデラ１０６から得られるマスキング曲線に基づいて算出される。算出された個々の換算係数の処理の一実施形態については、図５を用いて後に詳細に説明する。
【００２９】
更に、処理ロジックは、算出された個々の換算係数及び調整された共通換算係数を用いて生成される使用ビット数を決定し（処理ステップ２２４）、この使用ビット数が目標ビット数を超えているかを判定する（判定ステップ２２６）。これに該当する場合、処理ロジックは、生成される使用ビット数が目標ビット数を超えなくなるまで、調整された共通換算係数を更に変更する（処理ステップ２２８）。最終的な共通換算係数を決定するための処理の一実施形態については、図６を用いて後に詳細に説明する。上述のように、共通換算係数が変更される場合、個々の換算係数を再計算する必要はない。
【００３０】
図３は、共通換算係数を調整するための処理３００の一実施形態のフローチャートである。
【００３１】
図３に示すように、処理ロジックは、まず、現在の共通換算係数を用いてフレームのデータを量子化する（処理ステップ３０２）。一実施形態においては、現在の共通換算係数は、図２の処理ステップ２１４において算出したインクリメントされた換算係数である。
【００３２】
次に、処理ロジックは、量子化データが妥当であるかを判定する（判定ステップ３０４）。これに該当しない場合、処理ロジックは、現在の換算係数を定数（例えば、５）分インクリメントする（処理ステップ３０６）。これに該当する場合、処理ロジックは、ハフマン符号化で用いられる量子化スペクトルデータのビット数を決定する（処理ステップ３０８）。
【００３３】
更に、処理ロジックは、使用ビット数が目標ビット数を超えているかを判定する（判定ステップ３１０）。これに該当しない場合、ハフマン符号化の後に伝送されるデータに更なるビットを加えることができる。したがって、処理ロジックは、ビット増加変更ロジック（increase-bit modification logic）を用いて現在の共通換算係数を変更する（処理ステップ３１２）。一方、判定ステップ３１０の判定の結果が該当する場合、処理ロジックは、ビット削減変更ロジック（decrease-bit modification logic）を用いて現在の共通換算係数を変更する（処理ステップ３１４）。
【００３４】
図４Ａ〜図４Ｃは、共通換算係数を変更する際のビット増加／ビット削減変更ロジックを用いる処理４００の一実施形態のフローチャートである。
【００３５】
図４Ａ〜図４Ｃに示すように、処理ロジックは、まず、量子化変更フィールド（quanitzer change field）の現在の値を予め定義された数（例えば、４）に設定し、１組のフラグを初期化する（処理ステップ４０２）。このフラグの組は、使用ビット数の変更の好ましい方向（すなわち、この数を増加するべきか削減するべきか）を示すレート変更フラグ「ｏｖｅｒ＿ｂｕｄｇｅｔ」と呼ぶ。）を含む。更に、このフラグの組は、上抜けフラグ（upcrossed flag）及び下抜けフラグ（downcrossed flag）を含む。上抜けフラグは、増加することが望まれる使用ビット数が、目標ビット数を上に抜けた（すなわち、目標ビット数以上になった）ことを示す。下抜けフラグは、削減することが望まれる使用ビット数が、目標ビット数を下に抜けた（すなわち、目標ビット数以下になった）ことを示す。
【００３６】
判定ステップ４０３では、処理ロジックは、量子化変更フィールドの現在の値が０であるかを判定する。これに該当する場合、処理４００は、終了する。これ以外の場合、処理４００は継続し、処理ロジックは、現在の共通換算係数を用いて、処理中のフレーム内のスペクトルデータを量子化し、ハフマン符号化で用いられる量子化されたスペクトルデータのビット数を決定する（処理ステップ４０４）。
【００３７】
判定ステップ４０６において、処理ロジックは、使用ビット数が目標ビット数を下回っているかを判定する。これに該当し、且つこの処理が最初の繰返しではない場合（判定ステップ４０８）、レート変更フラグは、ビットの増加方向を示す値（例えば、ｏｖｅｒ＿ｂｕｄｇｅｔ＝１）に設定されたまま残される。これ以外の場合、又はこの処理が最初の繰返しである場合（判定ステップ４０８）、処理ロジックは、レート変更フラグを、ビットの削減方向を示す値（例えば、ｏｖｅｒ＿ｂｕｄｇｅｔ＝０）に更新する（処理ステップ４１０）。
【００３８】
更に、レート変更フラグがビットの増加方向を示す場合（判定ステップ４１２）、処理ロジックは、上抜けフラグが１に設定されているかを判定する（判定ステップ４１４）。これに該当する場合、処理ロジックは、ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＝ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＞＞１により量子化変更フィールドの現在の値を算出し（処理ステップ４１６）、使用ビット数が目標ビット数を下回っているかを判定する（判定ステップ４１８）。これに該当しない場合、処理ロジックは、現在の共通換算係数から量子化変更フィールドの値を減算し（処理ステップ４２０）、判定ステップ４０４に進む。これ以外の場合、処理ロジックは、現在の共通換算係数に量子化変更フィールドの値を加算し（処理ステップ４２２）、判定ステップ４０４に進む。
【００３９】
上抜けフラグが０に設定されている場合（判定ステップ４１４）、処理ロジックは、使用ビット数が目標ビット数を下回っているかを判定する（判定ステップ４２４）。これに該当する場合、処理ロジックは、現在の共通換算係数から量子化変更フィールドの現在の値を減算し（処理ステップ４２６）、判定ステップ４０４に進む。これ以外の場合、処理ロジックは、上抜けフラグを１に設定し、ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＝ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＞＞１により量子化変更フィールドの新たな値を算出し、現在の共通換算係数から量子化変更フィールドの新たな値を減算し（処理ステップ４２８）、判定ステップ４０４に進む。
【００４０】
レート変更フラグがビットの削減方向を示す場合（判定ステップ４１２）、処理ロジックは、下抜けフラグが１に設定されているかを判定する（判定ステップ４３０）。これに該当する場合、処理ロジックは、ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＝ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＞＞１により量子化変更フィールドの現在の値を算出し（処理ステップ４３２）、使用ビット数が目標ビット数を下回っているかを判定する（判定ステップ４３４）。これに該当しない場合、処理ロジックは、現在の共通換算係数に量子化変更フィールドの現在の値を加算し（処理ステップ４３６）、判定ステップ４０４に進む。これに該当する場合、処理ロジックは、現在の共通換算係数から量子化変更フィールドの現在の値を減算し（処理ステップ４３８）、判定ステップ４０４に進む。
【００４１】
下抜けフラグが０に設定されている場合（判定ステップ４３０）、処理ロジックは、使用ビット数が目標ビット数を下回っているかを判定する（判定ステップ４４０）。これに該当しない場合、処理ロジックは、現在の共通換算係数に量子化変更フィールドの現在の値を加算し（処理ステップ４４２）、判定ステップ４０４に進む。この判定の結果が肯定的である場合、処理ロジックは、下抜けフラグを１に設定し、ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＝ｑｕａｎｔｉｚｅｒ＿ｃｈａｎｇｅ＞＞１により量子化変更フィールドの現在の値を算出し、現在の共通換算係数から量子化変更フィールドの新たな値を減算し（処理ステップ４４４）、判定ステップ４０４に進む。
【００４２】
図５は、個々の換算係数を算出するための処理５００の一実施形態のフローチャートである。
【００４３】
図５に示すように、処理ロジックは、まず、第１の個々の換算係数（scale factor：ＳＦ）を共通換算係数の値に設定し、現在のインクリメントフィールドを第１の定数Ａ（例えば、＝１）に設定する（処理ステップ５０２）。そして処理ロジックは、現在のインクリメント値により個々の換算係数をインクリメントし（処理ステップ５０４）、インクリメントされた個々の換算係数を用いて対応するスペクトル係数を量子化し（処理ステップ５０６）、同じ個々の換算係数で量子化された係数を逆量子化し（処理ステップ５０８）、元の（予め量子化された）スペクトル係数と逆量子化されたスペクトル係数との間の差分に基づいて、この個々の換算係数に関連するエネルギ誤差を算出する（処理ステップ５１０）。
【００４４】
判定ステップ５１２において、処理ロジックは、Ｋを定数とし、許容される量子化誤差（許容歪みとも呼ばれる。）をａｌｌｏｗｅｄ＿ｄｉｓｔｏｒｔｉｏｎ＿ｅｎｅｒｇｙとして、算出されたエネルギ誤差がＫ＊ａｌｌｏｗｅｄ＿ｄｉｓｔｏｒｔｉｏｎ＿ｅｎｅｒｇｙを上回っているかを判定する。一実施形態においては、許容歪みは、図１の心理音響モデラ１０６が提供するマスキング曲線に基づいて算出される。
【００４５】
判定ステップ５１２における判定の結果が該当しない場合、処理ロジックは、現在のインクリメントフィールドを第１の定数Ａに設定する（処理ステップ５１４）。この他の場合、処理ロジックは、現在のインクリメントフィールドを第２の定数Ｂ（例えば、Ｂ＝３）に設定する（処理ステップ５１６）。一実施形態においては、パラメータＡ、Ｂ及びＫは、良好な結果が得られるように、経験的に定義される。
【００４６】
更に、処理ロジックは、算出されたエネルギ誤差が許容歪みを下回っているかを判定する（判定ステップ５１８）。これに該当しない場合、処理ロジックは、処理ステップ５０４に戻り、ステップ５０４〜ステップ５１８を繰り返す。これに該当する場合、個々の換算係数の値を最終的な値とし、処理ロジック次の個々の換算係数の処理に移行する（処理ステップ５２２）。このフレームの全ての換算係数が処理されると（判定ステップ５２０）、処理５００は、終了する。
【００４７】
図６は、共通換算係数の最終値を決定するための処理６００の一実施形態のフローチャートである。
【００４８】
図６に示すように、処理ロジックは、まず、オフセットフィールドの値を第１の定数（例えばｏｆｆｓｅｔ＝３）に設定する（処理ステップ６０２）。次に、処理ロジックは、算出された個々の換算係数及び現在の共通換算係数を用いて、処理するフレーム内のスペクトルデータを量子化し（処理ステップ６０４）、ハフマン符号化で用いられる量子化データのビット数を決定する（処理ステップ６０６）。
【００４９】
更に、処理ロジックは、使用ビット数が目標ビット数を超えているかを判定する（判定ステップ６０８）。これに該当する場合、処理ロジックは、現在の共通換算係数にオフセット値を加算し（処理ステップ６１０）、オフセット値を第２の定数（例えば、ｏｆｆｓｅｔ＝１）に設定し（処理ステップ６１２）、処理ステップ６０４に戻る。この他の場合、使用ビット数が目標ビット数を超えていれば、処理６００は、終了する。
【００５０】
以下に示す図７を参照した説明は、本発明の実施に適したコンピュータハードウェア及び他の操作コンポーネントに関する概要を明らかにするためのものであるが、これは、適用可能な環境を制限するものではない。図７は、コンピュータシステムの一実施形態を示す図１の符号化装置１００又は量子化モジュール１１０の実現に好適なコンピュータシステムを示している。
【００５１】
コンピュータシステム７４０は、それぞれがシステムバス７６５に接続されたプロセッサ７５０と、メモリ７５５と、入出力装置（input/output capability）７６０とを備える。メモリ７５５は、プロセッサ７５０によって実行されることにより、ここに説明する処理を実現する命令を格納するよう構成されている。入出力装置７６０は、プロセッサ７５０によってアクセス可能なあらゆる種類のストレージ装置を含む、様々な種類の、コンピュータにより読取可能な媒体を含んでいる。なお、「コンピュータにより読取可能な媒体」という用語は、デジタル信号がエンコードされた搬送波をも含むことは、当業者にとって明らかである。コンピュータシステム７４０は、メモリ７５５において実行されるオペレーティングシステムソフトウェアによって制御される。入出力装置７６０及びこれに関連する媒体は、このオペレーティングシステムソフトウェアと、本発明に基づく処理とに関する命令と、アクセスユニットとを格納している。図１に示す量子化モジュール１１０は、プロセッサ７５０に接続されたそれぞれ独立した要素であってもよく、プロセッサ７５０に接続されたそれぞれ独立した要素であってもよく、プロセッサ７５０によって実行される、コンピュータにより実行可能な命令として実現してもよい。一実施例においては、コンピュータシステム７４０は、インターネットサービスプロバイダ（Internet Service Provider：以下、ＩＳＰという。）の一部であってもよく、或いは、入出力装置７６０を介してＩＳＰに接続され、インターネットを介してアクセスユニットを送受信してもよい。なお、本発明は、インターネットアクセス及びインターネットウェブサイトに限定されるものではなく、直接接続されたコンピュータシステム及びプライベートネットワークに適用してもよいことは明らかである。
【００５２】
なお、コンピュータシステム７４０は、異なるアーキテクチャを有する様々な可能なコンピュータシステムの一例に過ぎないことは明らかである。一般的なコンピュータシステムは、少なくともプロセッサと、メモリと、プロセッサ及びメモリを接続するバスとを備えている場合が多い。なお、本発明は、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成によっても実現できることは当業者にとって明らかである。更に、本発明は、通信ネットワークを介してリンクされたリモートの処理装置によってタスクが実行される分散型コンピュータシステム環境によっても実現することができる。
【００５３】
最適な換算係数を選択する様々な側面について説明した。ここでは、特定の実施の形態を示したが、ここに示した特定の実施の形態に代えて、同じ目的を達成する如何なる構成を用いてもよいことは当業者にとって明らかである。したがって、本出願は、本発明のあらゆる適応例及び変形例を包含するものとする。
【図面の簡単な説明】
【００５４】
【図１】符号化装置の一実施形態のブロック図である。
【図２】データのフレーム内で最適な換算係数を選択するための処理の一実施形態のフローチャートである。
【図３】共通換算係数を調整するための処理の一実施形態のフローチャートである。
【図４Ａ】共通換算係数を変更する際、ビット増加／ビット削減変更ロジックを用いる処理の一実施形態のフローチャートである。
【図４Ｂ】図４Ａの続きである。
【図４Ｃ】図４Ａの続きである。
【図５】算出された個々の換算係数の処理の一実施形態のフローチャートである。
【図６】共通換算係数の最終値を決定するための処理の一実施形態のフローチャートである。
【図７】本発明の実施形態の実現に適するコンピュータ環境のブロック図である。
【図１】
2007507750.tif 000003
【図２】
2007507750.tif 000004
【図３】
2007507750.tif 000005
【図４Ａ】
2007507750.tif 000006
【図４Ｂ】
2007507750.tif 000007
【図４Ｃ】
2007507750.tif 000008
【図５】
2007507750.tif 000009
【図６】
2007507750.tif 000010
【図７】
2007507750.tif 000011
【国際調査報告】
2007507750.tif 000012