(57)【要約】【課題】  演算時間を低減し、速かにデコードを行うことのできるＭＰＥＧオーディオデコーダの合成フィルタ及びそのデコード方法を提供すること。【解決手段】  入力されたＭＰＥＧオーディオサブバンドサンプルに対し所定の単位でバタフライ演算を行うバタフライ演算部と、前記バタフライ演算結果を用いて、マトリックス演算を行うマトリックス演算部と、前記マトリックス演算結果を所定のアドレス値に応じて格納する第１バッファと、ウィンドウ演算の各サイクルに使用するために、前記第１バッファに対する第１アドレス及び第２アドレスを各々生成するウィンドウ演算アドレス生成部と、前記第１アドレス及び前記第２アドレスに格納されたマトリックス演算結果を出力して、ウィンドウ演算を行うウィンドウ演算部と、前記ウィンドウ演算結果を出力する出力部とを備えるＭＰＥＧオーディオデコーダの合成フィルタとした。【選択図】      図３
2005196198.tif 000002
【特許請求の範囲】
【請求項１】
入力されたＭＰＥＧオーディオサブバンドサンプルに対し、所定の単位でバタフライ演算を行うバタフライ演算部と、
前記バタフライ演算の結果を用いて、マトリックス演算を行うマトリックス演算部と、
前記マトリックス演算の結果を、所定のアドレス値に関連付けて格納する第１バッファと、
ウィンドウ演算に用いられる前記マトリックス演算の結果を取得するために、前記第１バッファ上の特定の領域を示す第１アドレス値及び第２アドレス値を生成するウィンドウ演算アドレス生成部と、
前記第１アドレス値及び前記第２アドレス値により特定される領域に格納された前記マトリックス演算の結果を取得して、ウィンドウ演算を行うウィンドウ演算部と、
を備えることを特徴とするＭＰＥＧデコーダの合成フィルタ。
【請求項２】
前記第１バッファには、前記マトリックス演算の結果を格納する領域が複数用意されており、
前記複数の領域を順番に使用して前記マトリックス演算の結果が格納されると共に、前記複数の領域のすべてが前記マトリックス演算の結果の格納に用いられた場合、以降入力されるマトリックス演算の結果が、前記マトリックス演算の結果の格納に一番最初に用いられた領域から、前記複数の領域を同じ順番で繰り返し使用して格納されるように、前記マトリックス演算の結果を格納する前記領域を特定する前記所定のアドレス値を生成するマトリックス演算アドレス生成部をさらに備える
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項３】
前記マトリックス演算アドレス生成部は、前記所定のアドレス値を予め格納する
ことを特徴とする請求項２に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項４】
前記マトリックス演算のための係数を格納して前記マトリックス演算部に提供するマトリックス係数格納部をさらに備える
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項５】
前記ウィンドウ演算のための係数を格納して前記ウィンドウ演算部に提供するウィンドウ係数格納部をさらに備える
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項６】
前記バタフライ演算部から出力される複数のバタフライ演算の結果のうち、前半分は入力順に格納すると共に、後半分は入力順とは逆の順番で順次格納する第２バッファをさらに備え、
前記マトリックス演算部は、前記第２バッファに格納された前記バタフライ演算の結果を、前記第２バッファに格納された順番で取得して使用する
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項７】
前記バタフライ演算部で行われるバタフライ演算には、加算のバタフライ演算と減算のバタフライ演算とが存在し、
前記第２バッファでは、前記バタフライ演算の結果が加算のバタフライ演算の結果である場合には、演算の結果を入力順に格納し、
前記バタフライ演算の結果が減算のバタフライ演算の結果である場合には、演算の結果を入力順とは逆の順番で格納する
ことを特徴とする請求項６に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項８】
前記第１アドレス値は各領域の始点を示す始点アドレス値に相当すると共に、前記第２アドレス値は各領域の終点を示す終点アドレス値に相当し、
前記ウィンドウ演算アドレス生成部では、前記複数の領域が、前記マトリックス演算の結果の格納に繰り返し使用されるように、前記第１アドレスと前記第２アドレス値とが生成される
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項９】
前記ウィンドウ演算アドレス生成部には、前記第１アドレス値と前記第２アドレス値とが予め格納されており、これらが、前記ウィンドウ演算部に提供される
ことを特徴とする請求項１に記載のＭＰＥＧデコーダの合成フィルタ。
【請求項１０】
入力されたＭＰＥＧオーディオサブバンドサンプルに対し、所定の単位でバタフライ演算を行うバタフライ演算ステップと、
前記バタフライ演算の結果を用いて、マトリックス演算を行うマトリックス演算ステップと、
前記マトリックス演算の結果を、所定のアドレス値に関連付けて記憶手段に格納する格納ステップと、
ウィンドウ演算に用いられる前記マトリックス演算の結果を取得するために、前記記憶手段に格納された前記マトリックス演算の結果の格納された領域を示す第１アドレス値及び第２アドレス値を生成するアドレス生成ステップと、
前記第１アドレス値及び前記第２アドレス値により特定される領域に格納されたマトリックス演算の結果を取得してウィンドウ演算を行うウィンドウ演算ステップと、
を含むことを特徴とするＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１１】
前記記憶手段には、前記マトリックス演算の結果を記憶する領域が複数用意されており、
前記格納ステップでは、前記複数の領域を順番に使用して、前記マトリックス演算の結果を格納すると共に、前記複数の領域のすべてが前記マトリックス演算の結果の格納に用いられた場合、以降入力されるマトリックス演算の結果を、前記マトリックス演算の結果の格納に一番最初に用いられた領域から、前記複数の領域を同じ順番で繰り返し使用して格納する
ことを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１２】
前記所定のアドレス値は予め用意されており、
前記格納ステップでは、予め用意された前記所定のアドレス値に応じて前記マトリックス演算の結果を格納する
ことを特徴とする請求項１１に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１３】
前記マトリックス演算ステップに提供するために、前記マトリックス演算のための係数を予め格納するステップをさらに含む
ことを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１４】
前記ウィンドウ演算ステップに提供するために、前記ウィンドウ演算のための係数を予め格納するステップをさらに含む
ことを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１５】
前記格納ステップでは、
前記バタフライ演算ステップにおいて生成される複数のバタフライ演算の結果のうち、前半分を入力順に格納し、後半分を入力順とは逆の順番で格納すると共に、
前記マトリックス演算ステップでは、前記格納ステップにおいて格納された順番で、前記バタフライ演算の結果を取得する
ことを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１６】
前記バタフライ演算ステップで行われるバタフライ演算には、加算のバタフライ演算と減算のバタフライ演算とが存在し、
前記格納ステップでは、
前記バタフライ演算の結果が前記加算のバタフライ演算の結果である場合には、演算の結果を入力順に格納し、
前記バタフライ演算の結果が減算のバタフライ演算の結果である場合には、演算の結果を入力順とは逆の順番で格納する
ことを特徴とする請求項１５に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１７】
前記第１アドレス値は各領域の始点を示す始点アドレス値に相当すると共に、前記第２アドレス値は各領域の終点を示す終点アドレス値に相当し、
前記アドレス生成ステップでは、前記複数の領域が、前記マトリックス演算の結果の格納に繰り返し使用されるように、前記第１アドレスと前記第２アドレス値とが生成される
ことを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【請求項１８】
前記アドレス生成ステップにおいて生成される前記第１アドレス値及び前記第２アドレス値は、それぞれ予め設定されていることを特徴とする請求項１０に記載のＭＰＥＧデコーダの合成フィルタのデコード方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＰＥＧ（Ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ；以下、「ＭＰＥＧ」と記す）オーディオデコーダの合成フィルタ及びそのデコード方法に関するものである。
さらに詳細には受信されたＭＰＥＧオーディオサブバンドサンプルをデコードするための合成フィルタの演算過程を単純化し、速くて効率的にデコードを行うことのできるＭＰＥＧオーディオデコーダの合成フィルタ及びそのデコード方法に関する。
【背景技術】
【０００２】
ＭＰＥＧオーディオデコーダの合成フィルタは、周波数領域に変換されたサブバンド信号を時間領域に逆変換するものである。
合成フィルタは、ＭＰＥＧデコーダで最も多い計算量及び処理時間を必要とするので、合成フィルタの処理速度は、ＭＰＥＧオーディオデコーダ全体のデコード速度に大きく影響する。
【０００３】
通常、受信されたＭＰＥＧオーディオ信号からヘッダが分離され、たとえばＭＰＥＧ−１の場合には、２つのチャネル毎に各々同じデコード処理が行なわれる。このようなデコード処理の一部を担う合成フィルタは、各オーディオチャネル毎に同じ演算を行う。
【０００４】
ＭＰＥＧオーディオレイヤ−２のフレームは、チャネル当たり１１５２個のＰＣＭ（Ｐｕｌｓｅ  ｃｏｄｅ  ｍｏｄｕｌａｔｉｏｎ）オーディオサンプルに該当する。
各オーディオフレームは、３２ビットヘッダ部と、ビット割り当てに関する情報を有するビット割り当て部（ｂｉｔ  ａｌｌｏｃａｔｉｏｎ）と、ＳＣＦＳＩ（ｓｃａｌｅ  ｆａｃｔｏｒ  ｓｅｌｅｃｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）をエラーから保護する１６ビットＣＲＣと、スケールファクター（ｓｃａｌｅ  ｆａｃｔｏｒ）の伝送パターンを格納するＳＣＦＳＩと、サブバンドサンプルのスケール（ｓｃａｌｅ  ｖａｌｕｅ）を指定する６ビットスケールファクターと、ＰＣＭオーディオサンプルを復元するために用いられるサブバンドサンプルと、ＭＰＥＧオーディオレイヤ−２フレームの付加的データフィールドとを含んでいる。
【０００５】
ＭＰＥＧオーディオレイヤ−２には、３２個のサブバンドが存在し、各サブバンドは３６個のサブバンドサンプルから構成される。
また、３６個のサブバンドサンプルは、３個の連続的するサブバンドサンプルごとにグループ化されて微粒（ｇｒａｎｕｌｅ）を形成し、微粒単位で、エンコードやデコードが行われる。
３２個のサブバンドサンプルは一度にデコードされる。１つの微粒の全体をデコードするには、３回のデコーディングが必要であり、各サブバンドにはそれぞれ１２個の微粒が存在するので、合計３６回（３×１２=３６）のデコード処理が行われる。
【０００６】
図１は、通常の合成フィルタの演算処理を説明するためのフローチャートである。
合成フィルタは、デコードを行うために、マトリックス演算を行うためのＩＭＤＣＴ部（Ｉｎｖｅｒｓｅ  Ｍｏｄｉｆｉｅｄ  Ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ）と、ウィンドウ演算を行うためのＩＰＱＭＦ部（Ｉｎｖｅｒｓｅ  ｐｓｅｕｄｏ  ｑｕａｄｒａｔｕｒｅ  ｍｉｒｒｏｒ  ｆｉｌｔｅｒ）と、処理結果を記憶するメモリとを含んで構成される。
【０００７】
以下、図１を参照し、ＩＳＯ/ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  Ｏｒｇａｎｉｚａｔｉｏｎ/Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏ  ｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｔｔｅｅ）１１１７２-３ＭＰＥＧ-１オーディオ標準規格による合成フィルタの演算処理を説明する。
【０００８】
まず、合成フィルタには、３２個の新しいオーディオサンプルＳｋが入力される（Ｓ１１０）。ここで、ｋは、０から３１までの値のうちの任意の値である（ｋ=０,１,...,３１）。
次いで、マトリックス演算の結果Ｖ［ｉ］を６４サンプルずつシフトして（Ｓ１１５）、マトリックス演算を行う（Ｓ１２０）。
【０００９】
シフトされたマトリックス演算の結果（Ｖ［ｉ］）は、次式（１）で表される。
【００１０】
【数１】
2005196198.tif 000003
ここで、ｉはインデックスである。ここで、マトリックス演算は次式（２）のように表すことができる。
【００１１】
【数２】
2005196198.tif 000004
ここで、ｉは、０から６３までの値のうちの任意の値であり（ｉ＝０,１,...,６３）、Ｎikはフィルタ係数であり、次式（３）のように表される。
【００１２】
【数３】
2005196198.tif 000005
ここで、ｉは、０から６３までの値のうちの任意の値であり（ｉ＝０,１,...,６３）、ｋは、０から３１までの値のうちの任意の値である（ｋ=０,１,...,３１）。
【００１３】
マトリックス演算が終了すると、５１２個のベクトル「Ｕｉ」が生成される（Ｓ１３０）。このベクトルは次式（４）のように表される。
【００１４】
【数４】
2005196198.tif 000006
【００１５】
ここで、ｉは、０から７までの値のうちの任意の値であり（ｉ＝０,１,…,７）、ｊは、０から３１までの値のうちの任意の値である（ｊ=０,１,…,３１）。
次いで、生成されたベクトルＵ［ｉ］にウィンドウ（ｓｙｎｔｈｅｓｉｓ  ｗｉｎｄｏｗ）係数Ｄ［ｉ］を乗算し、Ｗ［ｉ］を生成する。ここで、Ｗ［ｉ］=Ｕ［ｉ］*Ｄ［ｉ］であり、ｉは０から５１１までの値のうちの任意の値である（ｉ＝０,...,５１１である）（Ｓ１３５）。
【００１６】
続いて、生成されたＷ［ｉ］を利用して、３２個のサンプルＰ［ｊ］について計算を行い（Ｓ１４０）、計算されたサンプルを出力する（Ｓ１４５）。
この際の出力は、下記式（５）により表される。
【００１７】
【数５】
2005196198.tif 000007
ここで、ｊは、０から３１までの値のうちの任意の値である（ｊ=０,...,３１）。
【００１８】
前記した合成フィルタの演算過程では、ＩＭＤＣＴ部におけるシフト演算と、マトリックス演算と、ＩＰＱＭＦ部における３２個のサンプルを復元するためのアドレス演算と、ウィンドウ演算とに、多くの演算量と処理時間がかかる。
ここで、前記式（３）のフィルタ係数Ｎikは対称性を有する。したがって、Ｖ［ｉ］もまた、下記式（６）に示すように対称性を有する。
【００１９】
【数６】
2005196198.tif 000008
【００２０】
したがって、従来の技術においては、フィルタ係数の対称性を利用することで、ＩＭＤＣＴ部は、演算処理（Ｍｕｌｔｉｐｌｙ−ａｎｄ−ａｃｃｕｍｕｌａｔｅ  ｏｐｅｒａｔｉｏｎ：ＭＡＣ  ｏｐｅｒａｔｉｏｎ）の数を２０４８個から５１２個に減らし、演算量とメモリ要求量とを減少させる。
さらに、Ｖ［ｉ］の対称性を利用して、Ｖ［ｉ］の中でｉ＝０から５１１までの５１２個だけを使用してメモリ要求量を減少させる。
また、５１２個の計算結果Ｖ［ｉ］（ｉは０から５１２までの値のうちの任意の値）を記憶するための記憶領域（メモリ領域）を３２個のブロックに分割される。
【００２１】
図２は、図１の合成フィルタにおける処理の途中段階における結果を格納するメモリのアドレス生成方法を説明するための図である。
図２には、ＩＰＱＭＦ部の１回の演算サイクルに用いられる１６個のブロックアドレスが１つの行で表わされている。そして、合計１６個のＩＰＱＭＦ演算サイクルが、１６個の行で表されている。
【００２２】
ＩＰＱＭＦサイクルとは、ＩＰＱＭＦ部の演算の信号処理１回当たりの処理単位を意味するものである。
１つのＩＰＱＭＦサイクルに用いられている１６個のブロックアドレスは、５１２個のＶ［ｉ］を記憶するメモリの実際のアドレスではないので、ＩＰＱＭＦ部における演算に際しＶ［ｉ］を読み出すためには、アドレス値を再計算する必要がある。
【００２３】
従って、従来の合成フィルタを利用したデコードの場合、シフト演算が必要となる。そして、実際のアドレスを得るために、予め格納されたブロック値を利用して再計算をする必要がある。このことは、演算過程が複雑となるので、結局のところ、メモリ要求量を少なくした効果が半減すると共に、デコード過程において遅延が生じるという問題がある。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明は、上述したような問題点を解決するためになされたものであって、その目的は、シフト演算を行なわないように、所定の方式で格納されたマトリックス演算結果を、ウィンドウ演算を行うために所定の方式で出力して演算時間を減らし、速かにデコードを行うことのできるＭＰＥＧオーディオデコーダの合成フィルタ及びそのデコード方法を提供することである。
【課題を解決するための手段】
【００２５】
前記目的を達成するため、本発明に係るＭＰＥＧオーディオデコーダの合成フィルタは、複数のＭＰＥＧオーディオサブバンドサンプルが入力されると、複数のサンプルのバタフライ演算を、所定の単位で、例えば２個のサンプルずつの組合せ毎に、行うバタフライ演算部と、前記バタフライ演算の結果を用いて、マトリックス演算を行うマトリックス演算部と、前記マトリックス演算の結果を、所定のアドレス値に関連付けて格納する第１バッファと、ウィンドウ演算に用いられる前記マトリックス演算の結果を取得するために、前記第１バッファ上の特定の領域を示す第１アドレス値及び第２アドレス値を生成するウィンドウ演算アドレス生成部と、前記第１アドレス値及び前記第２アドレス値により特定される領域に格納された前記マトリックス演算の結果を取得して、ウィンドウ演算を行うウィンドウ演算部とを備えて構成される。
【００２６】
ここで、本発明に係る合成フィルタにおいて、前記第１バッファには、前記マトリックス演算の結果を格納する領域が複数用意されており、前記複数の領域を順番に使用して前記マトリックス演算の結果を格納することが好ましい。
そして、前記複数の領域のすべてが前記マトリックス演算の結果の格納に用いられた場合には、以降入力されるマトリックス演算の結果が、前記マトリックス演算の結果の格納に一番最初に用いられた領域から、前記複数の領域を同じ順番で繰り返し使用して格納されるように、前記マトリックス演算の結果を格納するための領域を特定する所定のアドレス値が生成されることが好ましい。このために、本発明に係る合成フィルタは、当該所定のアドレス値を生成するマトリックス演算アドレス生成部をさらに備えることが好ましい。
【００２７】
また、前記マトリックス演算アドレス生成部は、前記所定のアドレス値を予め格納することが好ましい。
【００２８】
また、前記マトリックス演算のための係数を格納して前記マトリックス演算部に提供するマトリックス係数格納部をさらに備えることが好ましい。好ましくは、前記ウィンドウ演算のための係数を格納して前記ウィンドウ演算部に提供するウィンドウ係数格納部をさらに備えることが好ましい。
【００２９】
さらに、本発明に係る合成フィルタは、前記バタフライ演算部から出力される複数のバタフライ演算の結果のうち、前半分は入力順に格納すると共に、後半分は入力順とは逆の順番で順次格納する第２バッファをさらに備え、前記マトリックス演算部は、前記第２バッファに格納された前記バタフライ演算の結果を、前記第２バッファに格納されている順番で取得して使用することが好ましい。
そして、前記バタフライ演算部で行われるバタフライ演算には、加算のバタフライ演算と減算のバタフライ演算とが存在し、前記第２バッファでは、前記バタフライ演算の結果が加算のバタフライ演算の結果である場合には、演算の結果を入力順に格納し、前記バタフライ演算の結果が減算のバタフライ演算の結果である場合には、演算の結果を入力順とは逆の順番で格納することが好ましい。
【００３０】
また、前記第１アドレス値は各領域の始点を示す始点アドレス値に相当すると共に、前記第２アドレス値は各領域の終点を示す終点アドレス値に相当し、前記ウィンドウ演算アドレス生成部では、前記複数の領域が、前記マトリックス演算の結果の格納に繰り返し使用されるように、前記第１アドレス値と前記第２アドレス値とが生成されることが好ましい。
ここで、このような格納法を循環特性ともいう。
また、前記ウィンドウ演算アドレス生成部には、前記第１アドレス値と前記第２アドレス値とが予め格納されており、これらが、前記ウィンドウ演算部に提供されることが好ましい。
【００３１】
また、前記目的を達成するための本発明に係るＭＰＥＧデコーダの合成フィルタのデコーダ方法は、入力されたＭＰＥＧオーディオサブバンドサンプルに対し、所定の単位でバタフライ演算を行うバタフライ演算ステップと、前記バタフライ演算の結果を用いて、マトリックス演算を行うマトリックス演算ステップと、前記マトリックス演算の結果を、所定のアドレス値に関連付けて記憶手段（バッファ）に格納する格納ステップと、ウィンドウ演算に用いられる前記マトリックス演算の結果を取得するために、前記格納ステップにおいて格納された前記マトリックス演算の結果の位置を示す第１アドレス値及び第２アドレス値を生成するアドレス生成ステップと、前記第１アドレス値及び前記第２アドレス値により特定される位置に格納されたマトリックス演算の結果を取得してウィンドウ演算を行うウィンドウ演算ステップとを含んで構成されることが好ましい。
【００３２】
前記記憶手段には、前記マトリックス演算の結果を記憶する領域が複数用意されており、前記格納ステップでは、前記複数の領域を順番に使用して、前記マトリックス演算の結果を格納することが好ましい。
そして、前記複数の領域のすべてが前記マトリックス演算の結果の格納に用いられた場合、以降入力されるマトリックス演算の結果を、前記マトリックス演算の結果の格納に一番最初に用いられた領域から、前記複数の領域を同じ順番で繰り返し使用して格納されるように、前記マトリックス演算の結果を格納するための領域を特定する所定のアドレス値が生成されることが好ましい。このために、当該所定のアドレス値を生成するステップをさらに含むことが好ましい。
【００３３】
前記所定のアドレス値は予め用意されており、前記格納ステップでは、予め用意された前記所定のアドレス値に応じて前記マトリックス演算の結果を格納することが好ましい。
また、マトリックス演算ステップに提供するために、前記マトリックス演算のための係数を予め格納するステップ、前記ウィンドウ演算ステップに提供するために、前記ウィンドウ演算のための係数を予め格納するステップ、をさらに含むことが好ましい。
【００３４】
ここで、前記格納ステップでは、前記バタフライ演算ステップにおいて生成される複数のバタフライ演算の結果のうち、前半分を入力順に格納し、後半分を入力順とは逆の順番で格納すると共に、前記マトリックス演算ステップでは、前記格納ステップにおいて格納された順番で、前記バタフライ演算の結果を取得することが好ましい。
【００３５】
前記バタフライ演算ステップで行われるバタフライ演算には、加算のバタフライ演算と減算のバタフライ演算とが存在し、前記格納ステップでは、前記バタフライ演算の結果が前記加算のバタフライ演算の結果である場合には、演算の結果を入力順に格納し、前記バタフライ演算の結果が減算のバタフライ演算の結果である場合には、演算の結果を入力順とは逆の順番で格納することが好ましい。
【００３６】
前記第１アドレス値は各領域の始点を示す始点アドレス値に相当すると共に、前記第２アドレス値は各領域の終点を示す終点アドレス値に相当し、前記アドレス生成ステップでは、前記複数の領域が、前記マトリックス演算の結果の格納に繰り返し使用されるように、前記第１アドレスと前記第２アドレス値とが生成されることが好ましい。
【００３７】
前記アドレス生成ステップにおいて生成される前記第１アドレス値及び前記第２アドレス値は、それぞれ予め設定されていることが好ましい。
【発明の効果】
【００３８】
本発明によれば、入力されたＭＰＥＧオーディオサブバンドサンプルに対する合成フィルタを利用したデコードにおいて、バタフライ演算結果を別の操作なしに、そのままマトリックス演算に利用できるように所定の方式で格納し、マトリックス演算結果の循環特性を利用してシフト演算を行なわないように所定の方式を格納し、ウィンドウ演算のためにサイクル毎に２つのアドレス値を提供することにより、シフト演算のための不必要な時間浪費を除去し、マトリックス演算を容易にし、ウィンドウ演算でアドレス演算を防止してＭＰＥＧオーディオデコード速度を向上させる。
【発明を実施するための最良の形態】
【００３９】
以下、添付された図面を参照して本発明を詳細に説明する。
図３は、本発明の一実施の形態に係るＭＰＥＧオーディオデコーダの合成フィルタを示す図面である。
【００４０】
図３に示すように、本発明の一実施の形態に係る合成フィルタは、入力部３１１と、バタフライ演算部３１３と、第２バッファ３１５と、マトリックス演算部３１７と、マトリックス演算アドレス生成部３１９と、マトリックス係数格納部３２１と、第１バッファ３２３と、ウィンドウ演算部３２５と、ウィンドウ演算アドレス生成部３２７と、ウィンドウ係数格納部３２９と、出力部３３１とを含んで構成される。
【００４１】
入力部３１１には、１回あたり、３２個のサブバンドサンプルＳｋ（ここで、ｋは０から３１までの値のうちの任意の値である（ｋ=０,...,３１）が入力される。
バタフライ演算部３１３は、入力されたサブバンドサンプルを利用してバタフライ演算を行うものである。
【００４２】
図４は、図３のバタフライ演算部３１３の動作を説明するための図である。
バタフライ演算部３１３は、バタフライ演算を、Ｓ0からＳ31の順に行うものである。具体的には、バタフライ演算部３１３は、入力された３２個のサンプルについて、バタフライ演算を２個ずつ行うものである（図４参照）。
バタフライ演算部３１３の出力Ｂ［ｋ］は、下記式（７）のように表すことができる。
【００４３】
【数７】
2005196198.tif 000009
【００４４】
バタフライ演算部３１３の出力Ｂ［ｋ］は、マトリックス演算の結果であるＶ［ｉ］のインデックス「ｉ」に応じて、加算又は減算をすることより算出される値である。
また、マトリックス演算部３１７では、前記式（６）に示すように、Ｎikの対称性を利用して、Ｖ［ｉ］のインデックス「ｉ」が線形に増加し、そのインデックスが偶数または奇数であるかに応じて、足算と引算のバタフライ演算出力を交互に繰り返して使用する。
言い換えると、マトリックス演算部３１７では、Ｎikの対称性（前記式（６）参照）によりＶ［ｉ］のインデックス「ｉ」が増加するので、そのインデックスの値が偶数または奇数であるかに基づいて、加算のバタフライ演算による出力（数式（７）において上側の式）と、減算のバタフライ演算による出力（数式（７）において下側の式）とを交互に繰り返し使用する。
【００４５】
また、前記式（６）を参照して、減算のバタフライ演算による出力に関し、マトリックス演算部３１７は、Ｓ31からＳ16までのバタフライ演算結果が得られた順序とは逆の順番で用いる。
【００４６】
したがって、バタフライ演算部３１３の出力を、第２バッファ３１５に格納する時、出力Ｂ［ｋ］において、ｋ=０,...１５までの初めの１６個は、インデックス「ｉ」が偶数であるときの加算演算の結果を順に格納し、出力Ｂ［ｋ］において、ｋ=１６,...,３１までの残りの１６個は、「ｉ」が奇数である時の減算演算の結果を逆順に格納する。
言い換えれば、バタフライ演算部３１３の出力を第２バッファ３１５に格納するに際し、最初の１６個の出力Ｂ［ｋ］（ここで、ｋ=０,...,１５）については、インデックス「ｉ」が偶数であるときの加算のバタフライ演算の結果を順番に格納し、これに続く１６個の出力Ｂ［ｋ］（ここで、ｋ=１６,...,３１）については、インデックス「ｉ」が奇数である時の減算のバタフライ演算の結果を逆の順番で格納する。
【００４７】
その結果、マトリックス演算部３１７の演算遂行の時には、第２バッファ３１５に格納されたＢ［ｋ］値を格納された順序、すなわちインデックス「ｋ」が増加する順で、そのまま出力して使用するようになる。
これにより、別の動作を必要とせずに高速演算が可能となる。
【００４８】
従来の合成フィルタの場合、６４サンプルシフト演算を行なわなければならない。６４サンプルシフト演算は、「Ｖ［ｉ］=Ｖ［ｉ-６４］,ｉ=１０２４,...,６４」のような演算であって、１つの演算サイクルであっても、繰り返し行なわなければならない。さらに、１個のＭＰＥＧオーディオフレームを処理するためには、演算サイクルを３６回繰り返し行なわなければならない。そのため、シフト演算処理のために、相当な演算量と時間が必要となり、デコード処理に全体として遅延が生じていた。
【００４９】
従来の合成フィルタの場合、マトリックス演算が１回行なわれる度に、６４サンプルずつシフトされ、「Ｖ［ｉ］」値はこのようなシフト演算が１６回行なわれる度に最初の位置に戻る。
本発明の一実施の形態によれば、「Ｖ［ｉ］」の循環特性を利用するので、シフト演算が省略される。
【００５０】
図５は、図３の合成フィルタの中間処理結果を格納するマトリックス演算アドレス生成部３１９の動作を説明するための図である。
図５を参照して、マトリックス演算アドレス生成部３１９は、マトリックス演算部３１７の演算結果を格納するためのアドレス値を生成するものである。
言い換えると、本実施の形態の場合、第１バッファ３２３には、マトリックス演算の結果を格納する領域が複数用意されているので、この複数の領域のうちのどの領域に演算結果を格納するのかが判るように、複数の領域のうちのどの領域であるのかを特定するためのアドレス値（所定のアドレス値）を、マトリックス演算アドレス生成部３１９は生成するものである。
【００５１】
マトリックス演算部３１７は、第２バッファ３１５から出力された値とマトリックス係数格納部３２１から出力された値とを利用してマトリックス演算を行うものである。そして、マトリックス演算部３１７は、マトリックス演算の結果Ｖ［ｉ］を、マトリックス演算アドレス生成部３１９から入力されたアドレスに基づいて、第１バッファ３２３に格納するものである。
【００５２】
図５に示すように、マトリックス演算部３１７は、１６回のＩＭＤＣＴ演算サイクル毎に、６４サンプルずつ格納する。これにより、６４個のサンプルが格納される第１バッファ３２３の「Ｖ［ｉ］」のインデックス「ｉ」は線形的に増加する。
従って、マトリックス演算アドレス生成部３１９は、各ＩＭＤＣＴ演算サイクルの最初スタートアドレスＩＭＤＣＴ#ａｄｄｒだけを示す。
言い換えると、マトリックス演算アドレス生成部３１９は、各ＩＭＤＣＴ演算サイクルの最初スタートアドレスを示すアドレス値を生成する。
これを下記式（８）で示す。
【００５３】
【数８】
2005196198.tif 000010
【００５４】
図５に示されているように、マトリックス演算による最初の６４個のサンプルは、第１バッファ３２３の最上層に格納されている。
そして、次の６４個のサンプルは、第１バッファ３２３の最下層に格納され、その次の６４個サンプルは最下層の上の層というように、最初の６４個のサンプルが格納された最上層の下に位置する層まで、１６サイクルの６４個のサンプルが順次格納されていく。
その結果、１６サイクル分に相当する合計１０２４個のサンプルが、生成されたアドレス値に従って、第１バッファ３２３に格納される。
ここで、本実施の形態では、アドレス値のうち、最初のアドレス値が最後のアドレス値と隣接している状態、すなわちリング状となるようにアドレスが生成される。
【００５５】
言い換えると、本実施の形態では、第１バッファ３２３には、マトリックス演算の結果を格納する領域が複数用意されているので、この複数の領域のうちのどの領域で有るのかを特定するためにアドレス値（所定のアドレス値）がもちいられる。
そして、各領域を特定するためのアドレス値は、領域の開始点（始点）を示す始点アドレス（第１アドレス値）と、領域の終了点（終点）を示す終点アドレス（第２アドレス値）とから構成される。
ここで、本実施の形態では、複数の領域を順番に使用してマトリックス演算の結果を格納すると共に、複数の領域のすべてがマトリックス演算の結果の格納に用いられた場合、以降入力されるマトリックス演算の結果が、マトリックス演算の結果の格納に一番最初に用いられた領域から、複数の領域を同じ順番で繰り返し使用して格納されるように、マトリックス演算の結果を格納する領域を特定するアドレス値（始点アドレス、終点アドレス）が生成される。
【００５６】
すなわち、最初の６４個のサンプルを格納するのに用いられるアドレス値が、最後の６４個のサンプルを格納するのに用いられるアドレス値に隣接するアドレス値となるように設定されており、全体として同じアドレス値が繰り返し用いられるように構成されている。
したがって、従来合成フィルタにおいて必要とされていたシフト演算が必要なくなる。
【００５７】
図６は、図３の合成フィルタの中間処理結果値を格納する第１バッファに対するウィンドウ演算アドレス生成部３２７における第１アドレス値の生成を説明するための図である。
図７は、図３の合成フィルタの中間処理結果値を格納する第１バッファに対するウィンドウ演算アドレス生成部３２７における第２アドレス値の生成を説明するための図である。
【００５８】
ウィンドウ演算部３２５は、ウィンドウ係数格納部３２９から入力されたウィンドウ係数と、ウィンドウ演算アドレス生成部３２７から提供されたアドレスの第１バッファ３２３に格納された演算結果とを乗算してウィンドウ演算を行うものである。
この場合、ウィンドウ演算アドレス生成部３２７は、２つのアドレスを提供しなければならなく、ウィンドウ演算部３２５は、ウィンドウ演算アドレス生成部３２７から提供された２つのアドレス値である第１アドレス値と第２アドレス値とにより特定される領域に格納された演算値を各々取得し、ウィンドウ係数格納部３２９からウィンドウ係数を出力しウィンドウ演算を行う。
言い換えると、ウィンドウ演算部３２５は、ウィンドウ演算アドレス生成部３２７から２つのアドレス値（第１アドレス値、第２アドレス値）が入力されると、このアドレス値に基づいて、第１バッファを参照し、当該第１バッファにおいて、アドレス値により特定される場所（第１アドレス値及び第２アドレス値により特定される領域）に格納された演算値を取得する。そして、ウィンドウ演算部３２５は、取得した演算値と、ウィンドウ係数格納部３２９から入力されたウィンドウ係数とを用いてウィンドウ演算を行う。
【００５９】
ウィンドウ演算アドレス生成部３２７から出力される第１アドレス値及び第２アドレス値は、前記式（４）のような演算が行なわれたアドレス値である。
しかしながら、ウィンドウ演算アドレス生成部３２７は、前記式（４）のような演算をその都度行なわずに、アドレス値を予め格納しておき、これを出力する構成とすることも可能である。
この場合、ウィンドウ演算サイクル毎に８個のアドレス値が必要であり、１６個のウィンドウ演算サイクルが必要なので、ウィンドウ演算アドレス生成部３２７には、合計１２８個のアドレス値が格納されている必要がある。
【００６０】
図６及び図７を参照すれば、このような第１アドレス及び第２アドレスが２個のＩＰＱＭＦサイクル毎に循環する特性が分かる。
したがって、このような第１アドレス及び第２アドレスが２個のＩＰＱＭＦサイクル毎に循環する特性を利用すれば、２×２×８=３２個のアドレスを利用して、第１アドレス及び第２アドレスに簡単な演算を行って、必要なすべてのアドレス値を生成できる。
したがって、ウィンドウ演算アドレス生成部３２７は、図６及び図７に示すすべてのアドレス値を格納しないで、ＩＰＱＭＦ２個のサイクルに該当するアドレス値を第１アドレス及び第２アドレスに対し各々格納し、簡単な演算により各サイクル毎に必要なアドレス値を生成する。
すなわち、ウィンドウ演算アドレス生成部３２７は、全体アドレス値をすべて格納しないで、２個のウィンドウ演算サイクルに該当するアドレス値だけを格納し、簡単な演算によりウィンドウ演算各サイクル毎に必要なアドレスを出力できる。
【００６１】
出力部３３１は、ウィンドウ演算部３２５で行なわれた演算結果を出力するものである。ここで、出力部３３１は、演算結果の出力の前に演算結果を一時的に保持するバッファ（図示せず）を含む構成としても良い。
また、出力部３３１は、演算結果を利用する装置のデータフォーマットに演算結果を変換したのち、これを出力する構成としても良い。
【００６２】
図８は、図３の合成フィルタと従来の合成フィルタとの間における、デコード時間とメモリ要求量とを比較した結果を示す図面である。
図８には、ビット率（レート）が２５６ｋｂｐｓであり、サンプリング周波数が４８ｋＨｚである２チャネルＭＰＥＧ-２オーディオにおいて、２４ｍｓのオーディオフレームをデコードするのに必要な時間を、７２ＭＨｚクロックの１６ビットＴｅａｋ ＤＳＰコアで測定した結果が示されている。
【００６３】
図８を参照して、従来の合成フィルタの場合、マトリックス係数の対称性を利用することでメモリ要求量を著しく減少させることができるが、シフト演算及びメモリに対するアドレス発生が複雑であるため、デコード時間を十分に減らすことができないことが分かる。
これに対して、本発明に係る合成フィルタの場合、メモリ要求量は、従来の技術に比べて若干大きいものの、デコード速度が２.１１ｍｓ（１０．８７−８．７６＝２．１１）、すなわち１５１,９２０クロックサイクル向上することが分かる。
【００６４】
図９は、本発明の一実施の形態に係る合成フィルタのデコード方法を説明するためのフローチャートである。
図９に示すように、本実施形態に係る合成フィルタには、１回あたり、３２個のサブバンドサンプルＳｋ（ここで、ｋは０から３１のうちの任意の値、ｋ=０,...,３１）が入力される（Ｓ９１０）。
すると、入力されたサブバンドサンプルＳｋ（ここで、ｋは０から３１のうちの任意の値、ｋ=０,...,３１）に対してバタフライ演算が行なわれる（Ｓ９２０）。
演算結果Ｂ［ｉ］は、符号によって図４のインデックス「ｉ」の昇順で、第２バッファ３１５に格納される。
【００６５】
次いで、格納されたバタフライ演算の結果と、マトリックス係数とを利用してマトリックス演算が行なわれ（Ｓ９３０）、マトリックス演算の演算結果は、マトリックス演算アドレス生成部３１９から入力された第１バッファ３２３のメモリスタートアドレスに、格納される。
言い換えると、演算結果は、マトリックス演算アドレス生成部３１９から入力されたアドレスに基づいて、第１バッファ３２３の当該アドレスにより特定される位置に、格納される。
【００６６】
３２個のサブバンドサンプルの総てについてのマトリックス演算が終了すると（Ｓ９４０）、ウィンドウ演算がこれに続いて行われる。
なお、本実施の形態の場合、３２個のサブバンドサンプルの総てについてのマトリックス演算が終了するまで、演算は繰り返し行われる。
【００６７】
サブバンドサンプル３２個に対するマトリックス演算が終了すると、ウィンドウ演算が行われる（Ｓ９５０）。
ウィンドウ演算アドレス生成部３２７は、第１アドレス値と第２アドレス値との２つのアドレス値を出力し、２つのアドレス値に（より特定される領域に）格納されたマトリックス演算値とウィンドウ係数とが利用される。
したがって、ウィンドウ演算が行なわれた３２個のサンプルが出力部３３１を介して出力される。
【産業上の利用可能性】
【００６８】
ＭＰＥＧオーディオサブバンドサンプルに対する合成フィルタを提供することにより、ＭＰＥＧオーディオデコード速度を向上させるのに利用される。
【図面の簡単な説明】
【００６９】
【図１】通常の合成フィルタの演算過程の説明に提供される図面である。
【図２】図１の合成フィルタの中間処理結果値を格納するメモリのアドレス生成方法の説明に提供される図面である。
【図３】本発明の一実施の形態に係るＭＰＥＧオーディオデコーダの合成フィルタを示す図面である。
【図４】図３のバタフライ演算部の動作説明に提供される図面である。
【図５】図３の合成フィルタの中間処理結果値を格納するためのマトリックス演算アドレス生成部の動作説明に提供される図面である。
【図６】図３の合成フィルタの中間処理結果値を格納する第１バッファに対するウィンドウ演算アドレス生成部の第１アドレス生成動作の説明に提供される図面である。
【図７】図３の合成フィルタの中間処理結果値を格納する第１バッファに対するウィンドウ演算アドレス生成部の第２アドレス生成動作の説明に提供される図面である。
【図８】図３の合成フィルタのデコード時間とメモリ要求量とを従来の合成フィルタと比較して示した図面である。
【図９】本発明の一実施の形態に係る合成フィルタのデコード方法の説明に提供されるフローチャートである。
【符号の説明】
【００７０】
３１１      入力部
３１３      バタフライ演算部
３１５      第２バッファ
３１７      マトリックス演算部
３１９      マトリックス演算アドレス生成部
３２１      マトリックス係数格納部
３２３      第１バッファ
３２５      ウィンドウ演算部
３２７      ウィンドウ演算アドレス生成部
３２９      ウィンドウ係数格納部
３３１      出力部                                                                                
【図１】
2005196198.tif 000011
【図２】
2005196198.tif 000012
【図３】
2005196198.tif 000013
【図４】
2005196198.tif 000014
【図５】
2005196198.tif 000015
【図６】
2005196198.tif 000016
【図７】
2005196198.tif 000017
【図８】
2005196198.tif 000018
【図９】
2005196198.tif 000019