(58)【調査した分野】(Int.Cl.,DB名)
当該多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項1記載の多段フィルタ。
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項1記載の多段フィルタ。
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項1記載の多段フィルタ。
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項1記載の多段フィルタ。
入力サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項6記載の方法。
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項6記載の方法。
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは:
バッファ・メモリと;
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
エンコーダ。
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項9記載のエンコーダ。
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項9記載のエンコーダ。
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項9記載のエンコーダ。
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項9記載のエンコーダ。
オーディオ・データをエンコードしてエンコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは:
(a)N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項17記載の方法。
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項17記載の方法。
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは:
バッファ・メモリと;
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
デコーダ。
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項20記載のデコーダ。
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項20記載のデコーダ。
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項20記載のデコーダ。
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項20記載のデコーダ。
エンコードされたオーディオ・データをデコードしてデコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは:
(a)N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項28記載の方法。
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項28記載の方法。
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、請求項31記載の方法。
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、請求項34記載の装置。
【発明を実施するための形態】
【0032】
本発明の方法および本発明の方法を実装するよう構成されたシステム(たとえばエンコーダおよびデコーダ)の実施形態について、
図3、
図4、
図5、
図6、
図7および
図8を参照して記述する。
【0033】
まず、
図2を参照して、M個の双二次フィルタ(Mは、以下および
図2において「nsections」と称される数)の縦続を有する多段フィルタを用いてデータ・サンプル(たとえばオーディオ・データ・サンプルのブロック)をフィルタリングする通常の方法を記述する。そのような通常の多段双二次フィルタの例は、
図1のAの上述したフィルタである。
【0034】
図2の方法では、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれは、最初にバッファリングされる(段階20)。ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各段(セクション)は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【0035】
段階21では、インデックスiは0に初期化され、段階22ではインデックスjは0に初期化される。
【0036】
段階23では、「j」番目の入力サンプルが「i」番目の双二次フィルタにおいてフィルタリングされ、次いで、段階24において、インデックスjがインクリメントされる。段階25は、インクリメントされたインデックスj(j+1に等しい)がN未満であるかどうかを判定する。段階25において、インクリメントされたインデックスjがN未満であると判定されたら、次の(「j+1」番目の)サンプルを「i」番目の双二次フィルタにおいてフィルタリングするために、段階23が再び実行される。
【0037】
段階25において、インクリメントされたインデックスjがNに等しい(よって、現在のブロックにおけるすべてのサンプルが現在の双二次フィルタにおいてフィルタリングされた)と判定されたら、段階26において、インデックスiがインクリメントされる。
【0038】
段階27は、最も最近インクリメントされたインデックスi(i+1に等しい)が数「nsections」(これはMに等しい)未満であるかどうかを判定する。段階27において、最も最近インクリメントされたインデックスiがM未満であると判定されたら、中間的な値(段階22〜25の前回の逐次反復において前の双二次フィルタにおいて生成された、前の(「i」番目の)双二次フィルタの出力)の最新のブロックを次の(「i+1」番目の)双二次フィルタにおいてフィルタリングするために、段階22〜26の逐次反復がもう一度実行される。
【0039】
段階27において、最も最近インクリメントされたインデックスiがMに等しく、よってすべての双二次フィルタにおける現在ブロックのすべてのサンプルの処理が完了していると判定されたら、段階28が実行される。段階28では、入力サンプルの現在ブロックを多段フィルタにおいてフィルタリングすることによって生成された、N個のフィルタリングされたサンプルが出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは(段階20の新たな実行において)バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、
図2の方法が繰り返される。
【0040】
図2のプロセスのために、M=2の場合(すなわち、多段フィルタが二つの縦続した双二次フィルタしか有さない場合)、多段フィルタの各段において実行される処理は、下記の擬似コードによっても記述される。ここで、N=多段フィルタにおいてN個のサンプルのブロックをフィルタリングすることによって生成されるべき出力サンプルの数である:
for(i=0; i<2; i++)
{
for(j=0; j<N; j++)
{
Output[j]=function(output[j-l], output[j-2], input[j], input[j-1], input[j-2]);
}
}。
【0041】
通常の
図2の方法の実行中、各サンプルについての多段フィルタの各段の出力(「output[j]」)は一般に二つの先行するサンプル(output[j-1]およびoutput[j-2])についての当該段の出力と、当該段への現在の入力(「input[j]」)および当該段への二つの先行する入力(input[j-1]およびinput[j-2])とに依存するので、当該段内で実装されるループ(
図2の段階23、24および25)のための動作は並列化されない。また、第一の段(i=0)の出力が第二の段(i=1)に入力されるので、通常の
図2の方法の実行においては、段を横断した動作は並列化されない。これは、たとえ複数のALU(またはAMU)またはSIMDユニットを含むアーキテクチャをもつプロセッサによって実装されるときでも、当該多段フィルタのための高い命令カウント(時にMPISまたは毎秒百万命令[Millions of Instructions Per Second]と称される)要件につながる。
【0042】
次に、
図3を参照して、二つの双二次フィルタの縦続を有する多段フィルタを用いてデータ・サンプル(たとえばオーディオ・データ・サンプルのブロック)をフィルタリングする本発明の方法の実施形態を記述する。最初に、段階30において、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれが、その後の段階(段階31、33および34を含む)において使うために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0043】
ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各段(セクション)は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【0044】
段階31では、第一の入力サンプル(j=0)が第一の(i=0)双二次フィルタにおいてフィルタリングされる。この段階によって生成される値は、(たとえば段階33および/または34のその後の実行における)その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0045】
段階32では、インデックスjは1に設定される。
【0046】
次いで、段階33および34が並列に実行される。段階33では、「j」番目の入力サンプルが第一の(i=0)双二次フィルタにおいてフィルタリングされ、この段階において生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階34では、第二の(i=1)双二次フィルタへの「j−1」番目の入力サンプルがフィルタリングされ、この段階において生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0047】
次いで、段階35において、インデックスjがインクリメントされる。段階36は、インクリメントされたインデックスj(j+1に等しい)がN未満であるかどうかを判定する。段階36において、インクリメントされたインデックスjがN未満であると判定されたら、(段階33において)第一の双二次フィルタへの次の入力サンプルおよび(段階34において)第二の双二次フィルタへの次の入力サンプルをフィルタリングするために、段階33および34は再び実行される。段階33および34のそれぞれの各反復工程によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。たとえば、段階33の一つまたは複数の先行する反復工程において生成された一つまたは複数の中間的な値が、段階34の実行において使うためにバッファから取り出されてもよい。
【0048】
段階36において、インクリメントされたインデックスjがNに等しい(よって、現在のブロックにおけるすべての入力サンプルが第一の双二次フィルタにおいてフィルタリングされた)と判定されたら、段階37が実行される。
【0049】
段階37では、第二の(i=1)双二次フィルタへの最後の入力サンプル(j=N−1)がフィルタリングされる。この段階によって生成される値は、その後の使用のために(たとえば段階38における出力のために)利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0050】
次いで、段階38において、第二の双二次フィルタによって生成されたN個のフィルタリングされたサンプルが(N個の入力サンプルの現在ブロックに応答しての当該多段フィルタの出力として)出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは(段階30の新たな実行において)バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、
図3の方法が繰り返される。
【0051】
多段フィルタの各段において(
図3の方法の実行中に)実行される処理は、下記の擬似コードによっても記述される。ここで、N=多段フィルタにおいてN個のサンプルのブロックをフィルタリングすることによって生成されるべき出力サンプルの数であり、outputstage1[k]はk番目の入力サンプルに応答しての多段フィルタの第一の段の出力であり、outputstage2[k]はk番目の入力サンプルに対応する多段フィルタの第二の段の出力であり、input[k]は多段フィルタの第一の段へのk番目の入力サンプルである:
{第一の段の第一のサンプル処理}
for(j=1; j<N ;j++)
{
Outputstage1[j]=function(outputstage1[j-1],
outputstage1[j-2], input[j], input[j-l], input[j-2]);
Outputstage2[j-1]=function(outputstage2[j-2], outputstage2[j-3],
outputstage1[j-1], outputstage1[j-2], outputstage1[j-3]);
}
{第二の段の最後の(「N−1」番目の)サンプル処理}。
【0052】
図3および対応する擬似コードから明らかなように、多段フィルタの両方の段における処理は単一のサンプル・ループ(
図3の段階33、34、35および36)に組み合わされる。(二段双二次フィルタの場合)二つの段の間に一サンプルのレイテンシーを導入することによって、あるいはより一般的には、
図6、
図7および
図8との関連で後述するように、二つ以上の双二次フィルタ段を有する多段フィルタの各段の間に一サンプルのレイテンシーを導入することによって、本発明によれば、多段フィルタのすべての段における処理が完全に並列化されうる。このように、多段フィルタのすべての双二次フィルタ段におけるサンプルのブロックの処理は、本発明の記述される実施形態によれば、(すべての段について組み合わされた)単一のサンプル・ループにおいて並列化されうる。
【0053】
M個の双二次フィルタ(Mは2より大きい)の縦続を有する多段フィルタを用いてデータ・サンプルのブロック(たとえばオーディオ・データ・サンプルのブロック)をフィルタリングするための、本発明の方法の
図3の実施形態に対する変形が考えられる。そのような変形は典型的には、
図6、
図7および
図8を参照して記述される仕方で実装される。
【0054】
最初に、
図6のフローチャートの段階40において、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれが、その後の段階(段階41、43〜45および48を含む)において使うために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0055】
ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各双二次段(セクション)は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【0056】
段階41では、最初のM−1個の入力サンプル(j=0ないしj=M−2)に対して双二次フィルタ段i=0ないしi=M−2においてループ前フィルタリングが実行される(たとえば、
図7を参照して記述される仕方で)。
図7に示されるように、いくつかの双二次フィルタ段については、ループ前フィルタリングは最初のM−1個の入力サンプルの部分集合のみに対応して生起することを注意しておくべきである。この段階によって生成される値は、(たとえば段階43〜45のその後の実行における)その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0057】
段階42では、インデックスjはM−1に設定される。
【0058】
次いで、段階43〜45(M段のそれぞれについて一つの段階)が並列に実行される。段階43では、第一の(i=0)双二次フィルタへの「j」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階44では、第二の(i=1)双二次フィルタへの「j−1」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。同様に(Mが2より大きいとして、段階43および44と並列に実行される少なくとも一つの段階において)、第三の(i=2)双二次フィルタへの「j−2」番目の入力サンプルがフィルタリングされ、(Mが4以上であるとして)第四の(i=3)双二次フィルタへの「j−3」番目の入力サンプルがフィルタリングされ、など、双二次フィルタi=4ないしi=M−2の追加的なそれぞれについて同様となる。そのような各段階によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる。(Mが2より大きい場合、段階43および44と並列に実行される)段階45では、最後の(i=M−1)双二次フィルタへの「j−M+1」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0059】
次いで、段階46において、インデックスjがインクリメントされる。段階47は、インクリメントされたインデックスj(j+1に等しい)がN未満であるかどうかを判定する。段階47において、インクリメントされたインデックスjがN未満であると判定されたら、(段階43において)第一の双二次フィルタにおける次のサンプルを、(段階44において)第二の双二次フィルタにおける次のサンプルを、さらなる双二次フィルタ段それぞれについて同様に、フィルタリングするために、段階43〜45(および段階43〜45と並列に実行される一つまたは複数の他の段階があれば該段階)は再び実行される。段階43〜45のそれぞれの各反復工程によって生成される少なくとも一つの(たとえばそれぞれの)値(「中間」的な値)が、その後の段階における使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。たとえば、段階43の一つまたは複数の先行する反復工程において生成された一つまたは複数の中間的な値が、段階44の実行において使うためにバッファから取り出されてもよい。
【0060】
段階47において、インクリメントされたインデックスjがNに等しい(よって、現在のブロックにおけるすべての入力サンプルが双二次フィルタの一つ(i=0であるフィルタ)においてフィルタリングされた)と判定されたら、ループ後フィルタリング段階48が実行される。
【0061】
段階48では、双二次フィルタ段i=1ないしi=M−1への残っているフィルタリングされていない入力サンプルがあればそれに対してループ後フィルタリングが実行される(たとえば
図8を参照して記述されるようにして)。この段階によって生成される値(単数または複数)は、その後の使用のために(たとえば段階49における出力のために)利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0062】
段階48のあと、段階49において、最後の(i=M−1)双二次フィルタによって生成されたN個のフィルタリングされたサンプルが(N個の入力サンプルの現在ブロックに応答しての当該多段フィルタの出力として)出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは(段階40の新たな実行において)バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、
図6の方法が繰り返される。
【0063】
図7は、本発明の方法の
図6の実施形態の、段階40および42ならびに段階41のある実施形態の詳細のフローチャートである。
図7の段階50〜58は、
図6のループ前フィルタリング段階41のある実装である。段階50において、現在ブロックの第一のサンプル(j=0)が第一の双二次フィルタ段(i=0)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば段階51および52において)利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階51では、前記ブロックの第二のサンプル(j=1)が第一の双二次フィルタ段(i=0)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば段階53において)利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階52では、前記ブロックの第一のサンプル(j=0)が第二の双二次フィルタ段(i=1)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば段階54において)利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。段階51および52は好ましくは(第一および第二の段に対して呈される同じ命令または命令シーケンスに応答して)並列に実行される。
【0064】
図7において段階51の垂直下方に示される諸段階(段階53および56を含む)では、現在ブロックの第三のサンプル(j=2)ないし「M−1」番目のサンプル(j=M−2)のそれぞれが第一の双二次フィルタ段(i=0)においてフィルタリングされ、そのような各段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階53では、前記ブロックの第三のサンプル(j=2)が第一の双二次フィルタ段(i=0)においてフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階56では、現在ブロックの「M−1」番目のサンプル(j=M−2)が第一の双二次フィルタ段(i=0)においてフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるようバッファリングされる。
【0065】
図7において段階52の垂直下方に示される諸段階(段階54および57を含む)では、第二の双二次フィルタ段(i=1)への第二の入力サンプル(j=1)ないし「M−2」番目の入力サンプル(j=M−3)のそれぞれがフィルタリングされ、そのような各段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階54では、第二の双二次フィルタ段への第二の入力サンプル(j=1)がフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階57では、第二の双二次フィルタ段への「M−2」番目の入力サンプル(j=M−3)がフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるようバッファリングされる(たとえば
図4のメモリ10に)。
【0066】
一般に、kが0ないしM−2の範囲のインデックスであるとして「k」番目の双二次フィルタ段について、段階のシーケンス(
図7における諸段階の縦の列)は、「k」番目の双二次フィルタ段への第一の入力サンプル(j=0)ないし「k」番目の双二次フィルタ段への「M−1−k」番目の入力サンプル(j=M−2−k)のそれぞれをフィルタリングするために実行され、そのような各段階によって生成されるフィルタリングされたサンプル値(単数または複数)は、その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0067】
よって、M=3であれば、
図7の段階53,54および55が(好ましくは並列に)実行される。段階53では、第一の双二次フィルタ段(i=0)への第三の入力サンプル(j=2)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階54では、第二の双二次フィルタ段(i=1)への第二の入力サンプル(j=1)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階55では、第三の双二次フィルタ段(i=2)への第一の入力サンプル(j=0)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。
【0068】
同様に、M>5の場合、(
図7に示される)段階53〜55を含む行の下の段階行の段階が次いで(好ましくは並列に)実行され、次いで
図7の段階56、57および58を含む段階行の段階が(好ましくは並列に)実行される。段階56では、第一の双二次フィルタ段(i=0)への第「M−1」の入力サンプル(j=M−2)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階57では、第二の双二次フィルタ段(i=1)への「M−2」の入力サンプル(j=M−3)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階58では、「M−1」番目の双二次フィルタ段(i=M−2)への第一の入力サンプル(j=0)がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。
【0069】
図7における各段階行の段階(たとえば、段階51および52または段階53、54および55)は好ましくは(関連する段に対して呈される同じ命令または命令シーケンスに応答して)並列に実行される。
【0070】
図8は、本発明の方法の
図6の実施形態の、段階47および49ならびに段階48のある実施形態の詳細のフローチャートである。
図8の段階60〜66は、
図6のループ後フィルタリング段階48のある実装である。
【0071】
一般に、kが0ないしM−1の範囲のインデックスであるとして「k」番目の双二次フィルタ段について、段階のシーケンス(
図8における諸段階の縦の列)は、「k」番目の双二次フィルタ段への「N−k+1」番目の入力サンプル(j=N−k)ないし「k」番目の双二次フィルタ段への最後の入力サンプル(j=N−1)のそれぞれをフィルタリングするために実行され、そのような各段階によって生成されるフィルタリングされたサンプル値(単数または複数)は、その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。
【0072】
たとえば、段階60において、現在ブロックの最後のサンプル(j=N−1)が第二の双二次フィルタ段(i=1)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階61では、前記ブロックの最後から二番目のサンプル(j=N−2)が第三の双二次フィルタ段(i=2)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば段階63において)利用可能であるよう、バッファリングされる(たとえば
図4のメモリ10に)。段階63では、前記ブロックの最後の(j=N−1)サンプルが第三の双二次フィルタ段(i=2)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。
【0073】
段階64では、前記ブロックの最後のサンプル(j=N−1)が最後から二番目の双二次フィルタ段(i=M−2)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。
【0074】
段階62では、前記ブロックの「N−M+1」番目のサンプルが最後の双二次フィルタ段(i=M−1)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば
図8における段階62の垂直下方の諸段階において)利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。段階65では、前記ブロックの最後から二番目のサンプル(j=N−2)が最後の双二次フィルタ段(i=M−1)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために(たとえば
図8の段階66において)利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。段階66では、前記ブロックの最後の(j=N−1)サンプルが最後の双二次フィルタ段(i=M−1)においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる(たとえば
図4のメモリ10に)。
【0075】
図8における各段階行の段階(たとえば、段階64および65または段階60、61および62を含む行中の諸段階)は好ましくは(関連する段に対して呈される同じ命令または命令シーケンスに応答して)並列に実行される。
【0076】
図3の方法(および二つより多くの双二次フィルタの縦続を有する多段フィルタを用いてデータ・サンプルのブロックをフィルタリングするための、それに対する変形)は、N個の入力サンプルのブロックの多段フィルタリングを、サンプル・インデックス(
図3のインデックスj)についての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行する。対照的に、
図2の通常の方法は、サンプル・インデックス(
図2のインデックスj)についての逐次反復および双二次フィルタ段のインデックス(
図2のインデックスi)についての逐次反復の両方がある二つのネストされたループにおいてデータ・サンプルのブロックを処理する。
【0077】
典型的な実施形態(たとえば、後述する
図4の実施形態)では、本発明の多段フィルタの段(その各段は双二次フィルタ)は、すべての段が独立して動作でき、異なる段の処理の並列化を許容するよう、段間のレイテンシーと組み合わされる。すべての段は(入力データ値のブロックをフィルタリングするために)コントローラからの単一の共通の命令ストリームに応答して並列に動作でき、ただし各段は異なるデータ値に作用し、それらの段の少なくとも一つは(入力データ値の部分集合に応答してそれらの段の別のものによって生成され、それらの段の前記一つにおける処理のために取り出される前にバッファ・メモリに異なるレイテンシーをもって記憶された)バッファリングされた値を含むデータ値に対して作用する。こうして、多段フィルタは、個々の双二次フィルタ段が単一の命令ストリームに応答して独立にかつ並列に動作するSIMD(単一命令多重データ)アーキテクチャをもつ。たとえば、多段フィルタはN個の段を含んでいてもよく、それらの段の一つ(シーケンス中で「M+1」番目の段)はそれらの段の前のもの(シーケンス中の「M」番目の段)によって異なる時刻に(たとえば前記ブロックの異なる入力データ値のシーケンスに応答して)生成され、(異なる時刻に)バッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから(「M+1」番目の段によって)読み出されたデータ値に対して作用してもよい。
【0078】
次に、
図4を参照して、本発明の多段フィルタのあるクラスの実施形態を記述する。
図4の多段フィルタは、複数の双二次フィルタ(Mは1より大きい整数であるとして、M個の双二次フィルタ)を含み、
図3を参照して述べた型の方法(または
図6に示したような、そのような方法に対する変形)を実行するよう構成されている。
図4のフィルタはメモリ10、コントローラ11および双二次フィルタB
1、B
2、……、B
Mを図のような接続で含んでおり、コントローラ11によってそれらの双二次フィルタに呈される単一の命令ストリームに応答して、N個の入力データ値x(n)をフィルタリングするよう構成されている。ここで、「n」は1ないしNの範囲のインデックスである。入力データ値のそれぞれx(n)はオーディオ・データ・サンプルであってもよい。
【0079】
「単一の命令ストリーム」が多段フィルタの個々の段(たとえばそのそれぞれは双二次フィルタ)に呈されるという表現は、本稿では:単一の命令ストリームがそれらすべての段に対して(たとえばすべての段が結合されている単一のバスまたは導体上で)呈される場合および命令の同一の(または実質的に同一の)ストリームがそれらの段に同時に呈される(たとえば、各ストリームがそれらの段の異なるものに結合されている異なるバスまたは導体上でアサートされる)場合の両方を含む広義の意味で使われていることは理解しておくべきである。
【0080】
入力データ値x(n)のブロックに応答して、フィルタB
1はN個の中間的な(双二次フィルタリングされた)値x
1(n)を生成し、それらの値をメモリ10内のバッファ・メモリ位置に対して呈する。動作において、フィルタB
2は必要とされる中間的な値x
1(n)をメモリ10から取り出し、それに応答して中間的な(双二次フィルタリングされた)値x
2(n)を生成し、生成した中間的な値をメモリ10内のバッファ・メモリ位置に対して呈する。同様に、動作において、双二次フィルタのそれぞれの他のもの(iは3ないしMの範囲のインデックスであるとしてフィルタB
i)は中間的な値x
i-1(n)をメモリ10から取り出し、それに応答して中間的な双二次フィルタリングされた値x
i(n)を生成し、生成した値をメモリ10内のバッファ・メモリ位置に対して呈する。最後の双二次フィルタ(B
M)において生成された、双二次フィルタリングされた値x
M(n)=y(n)は、入力データ値x(n)のブロックに応答して生成された、N個の完全にフィルタリングされた出力データ値のブロックを有する。
【0081】
メモリ10は、入力データx(n)の各ブロックを記憶するメモリ位置と、双二次フィルタB
1、B
2、……、B
Mによって生成された中間的な値x
1(n),……,x
M-1(n)を記憶するバッファ・メモリ位置(たとえば、入力データの各ブロックについて生成される中間的な値x
1(n),……,x
M-1(n)を記憶するバッファ位置)とを含む。計算がその場で実行されるいくつかの実装では、ひとたび特定の入力データ・サンプルがもはや多段フィルタによって必要とされなくなったら、入力データx(n)を記憶するために使われる同じメモリ位置が中間的な値x
1(n),……,x
M-1(n)を記憶するために使われてもよい。そのような実装では、メモリ10は典型的には、(通常の、並列化されない多段フィルタのバージョンを実装するための)通常のメモリより多くの(または著しく多くの)メモリ位置を含む必要はない。そのような通常のメモリが典型的には、フィルタリングされるべき入力データx(n)の各ブロックと、多段フィルタの各段によって生成される、その段自身の動作のためおよび/またはフィルタのその後の各段の動作のために必要とされる各出力値とを記憶するためのメモリ位置を含むからである。
【0082】
たとえば、
図9は、N=4かつM=2(すなわち、二段の双二次が同時に4サンプルのブロックに対して作用する)の場合における、
図4のシステムの、計算がその場で実行されるある実装において生成される値の図である。
【0083】
図9の例では、入力バッファ中の四つのサンプルx(0),……,x(3)をもって始まる。
【0084】
第一の段階では、サンプルx(0)がフィルタB0(第一段の双二次)を通じてフィルタリングされて、サンプルx1(0)を生成する。サンプルx1(0)は、前にサンプルx(0)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【0085】
第二の段階では、サンプルx1(0)がフィルタB1(第二段の双二次)を通じてフィルタリングされて、サンプルy(0)を生成する。サンプルy(0)は、前にサンプルx1(0)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【0086】
並列に、サンプルx(1)はフィルタB0を通じてフィルタリングされて、サンプルx1(1)を生成する。サンプルx1(1)は、前にサンプルx(1)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【0087】
その後の諸段階では、すべての入力サンプルx(0),……,x(3)が出力サンプルy(0),……,y(3)で置き換えられるまで、処理が続けられる。
【0088】
図9の例では、フィルタB1がサンプルx1(2)に適用されるとき、サンプルx1(1)およびx1(0)はもはやバッファには存在しない(y(0)およびy(1)によって置き換えられている)。その代わり、x1(1)およびx1(0)(すなわち、
図1のs
1(n)およびs
2(n)に対応するサンプル)からフィルタB1によって導出されたサンプルがフィルタB1に関連付けられた二つの状態変数に含まれる。
【0089】
図9の例では、各フィルタ(たとえばフィルタB0およびB1のそれぞれ)は、(N個の入力サンプルからなる現在ブロックの「j−1」番目および「j−2」番目の入力サンプルに応答して)自分が生成する二つのサンプル(
図1のs
1(n)およびs
2(n)に対応)を、現在ブロックの「j」番目の入力サンプルをフィルタリングする際に使うために記憶するメモリ位置へのアクセスを要求する。これらのメモリ位置は、
図4のシステムのメモリ10内であることができる(あるいは他のバッファ・メモリ位置であることができる)。
【0090】
各フィルタについて、そのフィルタによって生成された記憶されたサンプル(
図1のs
1(n)およびs
2(n)に対応)の各対は、(インクリメントされたインデックスjをもつ)新しい入力サンプルがそのフィルタに呈されるたびに更新される。記憶されたサンプル(
図1のs
1(n)およびs
2(n)に対応)は、本発明に基づいて(多段フィルタの一つの段である)フィルタによって生成され、その後の使用のためにバッファリングされる「中間的な値」(本稿の他所でこの句が使われるような)の例であるが、これらのサンプルは(多段フィルタの異なるフィルタ段によってではなく)それらを生成したフィルタ段によってその後使用される。
【0091】
図9は、その場(in place)フィルタリングを使う本発明の方法の、ブロック・サイズ(N)が4に等しく、本発明のフィルタにおける双二次フィルタ段の数(M)が2に等しい個別的な例を示しているが、その場フィルタリングを使う本発明の方法の実施形態は、M>1かつN>Mという制約条件のもとでMおよびNの任意の値について考えられる。
図9の実装(およびブロック・サイズが4と異なるおよび/または双二次段の数が2と異なるその場フィルタリングを使う他の実施形態)では、ひとたび特定の入力データ・サンプルがもはや多段フィルタによって必要とされなくなったら、入力データx(n)を記憶するために使用される(たとえば
図4のメモリ10内の)同じメモリ位置が、中間的な値x
1(n),……,x
M-1(n)を記憶するために使われてもよい。
【0092】
図4のフィルタは、(メモリ10として機能する)メモリと、(コントローラ11として機能する)コントローラと、ALU(算術論理ユニット)またはAMU(算術操作ユニット)とを含み、各双二次フィルタB
1、B
2、……、B
Mが前記ALUまたはAMUの適切に構成されたものとして実装されるデジタル信号プロセッサ(DSP)または他のプロセッサをプログラムすることによって実装できる。
【0093】
このように、
図4のフィルタは:
バッファ・メモリ(メモリ10内のバッファ位置)と;
第一の双二次フィルタ段(たとえば双二次フィルタB
1)およびその後の双二次フィルタ段(たとえば双二次フィルタB
2)を含む少なくとも二つの双二次フィルタ段(双二次フィルタB
1、B
2、……、B
M)と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラ(コントローラ11)とを含む。前記第一の双二次フィルタ段および前記その後の双二次フィルタ段(および
図4のフィルタのそれぞれの他の双二次フィルタ段)は前記命令ストリームに応答して独立してかつ並列に動作する。
【0094】
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値(たとえば値x
1(n))を生成し、該中間的な値を前記メモリに(該メモリにおける記憶のために)呈するよう構成されている。これらの中間的な値は、前記入力サンプルの各サンプルのフィルタリングされたバージョンを含む。本発明のある種の実施形態では、中間的な値x
1(n)はどの時点においてもメモリ10内に一つしか存在する必要がない。前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値(たとえば、値x
2(n))のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む。
【0095】
多段フィルタがM個の段を有する実施形態における、前記その後の双二次フィルタ段(たとえば
図4のフィルタB
2)は、メモリから取り出されるバッファリングされている値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成される。ここで、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【0096】
前記その後の双二次フィルタ段(たとえば
図4のフィルタB
2)は、前記入力サンプルのそれぞれに対応する出力値(x
2(n))を、メモリから取り出されるバッファリングされている値の異なる部分集合に応答して生成するよう構成される。それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値(たとえば
図4に示される値x
1(n)、x
1(n−1)およびx
1(n−2))のうちの少なくとも二つ(たとえば三つ)を含む。より特定的には、多段フィルタがM個の段を有するある実施形態では、前記入力サンプルの第「j」のものに対応する出力値を生成するためにフィルタB
2によって取り出されるバッファリングされている値の前記部分集合であって、jはM−1からN−1までの範囲のインデックスである、部分集合は、前記入力サンプルの第「j」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値、前記入力サンプルの第「j−1」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値および前記入力サンプルの第「j−2」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値を含む。
【0097】
図4のフィルタは、N個の入力サンプル(たとえばデータ値x(n))のブロックに対して多段フィルタリングを実行するよう構成されており、それは以下の段階を実行することによることを含む:
(a)N個の入力サンプルのブロックに対して第一の双二次フィルタリング動作を実行して中間的な値(たとえば
図4に示される値x
1(n)、x
1(n−1)およびx
1(n−2))を生成し、該中間的な値をバッファ・メモリに(該メモリにおける記憶のために)呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値(たとえば
図4に示される値x
2(n))のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値(たとえば
図4に示される値x
1(n)、x
1(n−1)およびx
1(n−2))のうちの少なくとも二つ(たとえば三つ)を含む、段階。
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される。
【0098】
前記フィルタリングがM個の段を有する多段フィルタにおいて実行されるある実施形態における、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は(jはM−1からN−1までの範囲のインデックス)、段階(a)において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【0099】
図5は、本発明の多段フィルタのある実施形態(「M B フィルタ」153)を含むエンコーダ(エンコーダ150)を含むシステムのブロック図である。たとえば、フィルタ153は、
図4を参照して図示し、説明した型のものであってもよい。エンコーダ150は任意的には、二つ以上の多段フィルタを含み、そのそれぞれが本発明の多段フィルタの実施形態である。入力オーディオ・データ・サンプルに応答して、エンコーダ150はエンコードされたオーディオ・データを生成しエンコードされたオーディオ・データを送達サブシステム151に対して呈する。
【0100】
送達サブシステム151は、エンコードされたオーディオ・データを記憶し、および/またはエンコードされたオーディオ・データを示す信号を送信するよう構成される。デコーダ152が(たとえば前記エンコードされたオーディオ・データをサブシステム151中の記憶から読み出すまたは取り出すことによってまたはサブシステム151によって送信された前記エンコードされたオーディオ・データを示す信号を受信することによって)サブシステム151からエンコードされたオーディオ・データを受領するよう結合され、構成されている(たとえばプログラムされている)。
【0101】
デコーダ152は、本発明の多段フィルタのある実施形態(「M Bフィルタ」154)を含む。たとえば、フィルタ154は
図4を参照して図示し、説明した型のものであってもよい。デコーダ152は任意的には、二つ以上の多段フィルタを含み、そのそれぞれが本発明の多段フィルタの実施形態である。デコーダ152は、エンコードされたオーディオ・データをデコードし、それによりデコードされたオーディオ・データを生成するよう動作する。
【0102】
図5のシステムは、エンコーダ150によってエンコードされるべきオーディオ・データの予備的な処理を実行するよう構成されたオーディオ前処理サブシステム(「前処理器」)155をも含んでいる。前処理器155は、本発明の多段フィルタのある実施形態(「M Bフィルタ」157)を含む。たとえば、フィルタ157は
図4を参照して図示し、説明した型のものであってもよい。
【0103】
図5のシステムは、デコーダ154によってデコードされたデコード済みオーディオ・データの後処理を実行するよう構成されたオーディオ後処理サブシステム(「後処理器」)156をも含んでいる。後処理器156は、本発明の多段フィルタのある実施形態(「M Bフィルタ」158)を含む。たとえば、フィルタ158は
図4を参照して図示し、説明した型のものであってもよい。
【0104】
いくつかの実装では、エンコーダ150は、時間領域の入力オーディオ・データに応答してAC-3(または向上AC-3またはドルビーE)エンコードされたオーディオ・ビットストリームを生成するよう構成されているAC-3(または向上AC-3またはドルビーE)エンコーダであり、デコーダ52はAC-3(または向上AC-3またはドルビーE)デコーダである。
【0105】
あるクラスの実施形態では、本発明は、入力オーディオ・データ・サンプルに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダ(たとえば
図5のエンコーダ150)であり、該エンコーダは、前記オーディオ・データをフィルタリングする(たとえば、前記オーディオ・データの予備的な処理をされたバージョンをフィルタリングする)よう結合され、構成されている少なくとも一つの多段フィルタ(これは本発明の多段フィルタの任意の実施形態である)を含む。エンコーダ150は、オーディオ・データに対して(たとえば前記オーディオ・データの予備的に処理されたバージョンに対して)本発明の多段双二次フィルタリング方法の実施形態を実行することによることを含め、エンコードされたオーディオ・データを生成するようオーディオ・データをエンコードするよう構成されている。
【0106】
あるクラスの実施形態では、本発明は、エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されているオーディオ・デコーダ(たとえば
図5のデコーダ152)である。前記デコーダは、前記エンコードされたオーディオ・データをフィルタリングする(たとえば、前記エンコードされたオーディオ・データの予備的な処理をされたバージョンをフィルタリングする)よう結合され、構成されている少なくとも一つの多段フィルタ(これは本発明の多段フィルタの任意の実施形態である)を含む。デコーダ152は、エンコードされたオーディオ・データに対して(たとえば、エンコードされたオーディオ・データの予備的に処理されたバージョンに対して)本発明の多段フィルタリングの実施形態を実行することによるものも含め、デコードされたオーディオ・データを生成するよう、エンコードされたオーディオ・データをデコードするよう構成される。
【0107】
本発明のもう一つの実施形態は、オーディオ・データ(たとえばエンコーダによってエンコードされるべきオーディオ・データ)の予備的な処理を実行するための前処理器(たとえば
図5の前処理器155)である。前記前処理器は、前記オーディオ・データ(たとえば、前記前処理器に入力されるデータまたはそのような入力データの予備的に処理されたバージョン)をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ(これは本発明の多段フィルタの任意の実施形態である)を含む。
【0108】
本発明のもう一つの実施形態は、デコーダによってデコードされたデコードされたオーディオ・データの後処理を実行するための後処理器(たとえば
図5の後処理器156)である。前記後処理器は、オーディオ・データ(たとえば、前記後処理器に入力されるデコード済みデータまたはそのような入力データの処理されたバージョン)をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ(これは本発明の多段フィルタの任意の実施形態である)を含む。
【0109】
図10は、本発明の多段フィルタのある実施形態(「M Bフィルタ」153)を含むエンコーダ(エンコーダ150)を含むシステムのブロック図である。
図10のエンコーダ150は
図5のエンコーダ150と同一であり、
図5のエンコーダ150が実装されうる仕方のいずれで実装されてもよい。多段フィルタ153は、本発明の多段フィルタの任意の実施形態を実装しうる。入力オーディオ・データ・サンプルに応答して、エンコーダ150は(一つまたは複数の入力オーディオ・チャネルを表わす)エンコードされたオーディオ・データを生成し、該エンコードされたオーディオ・データを送達サブシステム151に呈する。
【0110】
送達サブシステム151は、エンコードされたオーディオ・データを記憶し、および/またはエンコードされたオーディオ・データを示す信号を送信するよう構成される。
図10のサブシステム151は
図5のサブシステム151と同一であり、
図5のサブシステム151が実装されうる仕方のいずれで実装されてもよい。
【0111】
図10のデコーダ252は(たとえば前記エンコードされたオーディオ・データをサブシステム151中の記憶から読み出すまたは取り出すことによってまたはサブシステム151によって送信された前記エンコードされたオーディオ・データを示す信号を受信することによって)サブシステム151からエンコードされたオーディオ・データを受領するよう結合された入力をもつ。
【0112】
デコーダ252は、多段フィルタ153によって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを(受領されたエンコードされたビットストリームから)抽出し、該エンコードされたデータをデコードして、オーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供するよう構成されている(たとえば、プログラムされている)。
【0113】
本発明の典型的な実施形態によれば、SIMD命令(または複数のALUまたはAMUによる並列処理のための命令)が、多段フィルタを実装するようプロセッサ(たとえばデジタル信号プロセッサまたは汎用プロセッサ)をプログラムするために使用される。多段フィルタは、帯域幅制限低域通過フィルタリング、低域通過フィルタリング(たとえばオーディオ・エンコーダのLFEサブシステムにおける)、高域通過フィルタリング(たとえばオーディオ・エンコーダの過渡検出器サブシステムにおける)または他のフィルタリングを実装してもよい。
【0114】
本発明の他の側面は、本発明の方法の任意の実施形態を実行するよう構成された(たとえばプログラムされた)システムまたは装置(たとえばエンコーダ、デコーダまたはプロセッサ)および本発明の方法の任意の実施形態またはその段階を実装するためのコードを記憶するコンピュータ可読媒体(たとえばディスク)を含む。たとえば、本発明のシステムは、本発明の方法の実施形態またはその段階を含む多様な動作の任意のものをデータに対して実行するようソフトウェアまたはファームウェアでプログラムされたおよび/または他の仕方で構成された、プログラム可能な汎用プロセッサ、デジタル信号プロセッサまたはマイクロプロセッサであるまたはそれを含むことができる。そのような汎用プロセッサは、入力装置と、メモリと、それに対して呈されるデータに応答して本発明の方法の実施形態(またはその段階)を実行するようプログラムされた(および/または他の仕方で構成された)処理回路とを含むコンピュータ・システムであるまたはそのようなコンピュータ・システムを含むのでもよい。
【0115】
本発明のいくつかの実施形態は、プログラムされたプロセッサ(たとえばARMネオン・プロセッサ(そのそれぞれは、並列処理を許容するネオンSIMDエンジンをもつARM Cortexプロセッサである)またはSIMD(単一命令多重データ)ユニットおよび/または複数のALU(算術論理ユニット)またはAMU(算術操作ユニット)を有する他のプロセッサ)として、あるいはプログラムされた(および/または他の仕方で構成された)デジタル信号プロセッサ(たとえばSIMDユニットおよび/または複数のALUまたはAMUを有するDSP)として実装された、エンコーダ(たとえば、ドルビー・デジタル・プラス、AC-3またはドルビーEフォーマットに従ってオーディオ・データをエンコードするエンコーダ)またはデコーダである。
【0116】
本発明の典型的な実施形態に従って、多段双二次フィルタのすべての双二次フィルタ段の動作を(単一のサンプル・ループに)組み合わせることは、並列を可能にすることによってパフォーマンスを改善する。SIMDユニットおよび複数のALU(またはAMU)をもつプロセッサは、本発明の方法の実施形態を実装することによってその資源を効率的に活用できる。
【0117】
多段双二次フィルタを実装するための本発明の方法の典型的な実施形態は、(フィルタの通常の実装によって達成可能な精度および安定性に比して)フィルタの出力精度や安定性に影響しない。
【0118】
発明者が実行した試験は、ドルビー・デジタル・プラス・フォーマットに従ってオーディオ・データをエンコードするよう構成されたエンコーダであって、(該エンコーダの過渡検出器サブシステムにおける高域通過フィルタリングを実装する)本発明の二段双二次フィルタの実施形態を含むようプログラムされたテキサスインスツルメンツC64デジタル信号プロセッサとして実装されたエンコーダが、オーディオ・データの典型的なブロックをフィルタリングするために平均1846サイクルしか必要としないことを示した。これは、その代わりにエンコーダが二段フィルタの通常の(並列化されない)実装を含むよう通常式にプログラムされている場合に前記ブロックをフィルタリングするために必要とされた平均サイクル数(4141)はと対照的である。
【0119】
発明者が実行した試験はまた、ドルビー・デジタル・プラス・フォーマットに従ってオーディオ・データをエンコードするよう構成されたエンコーダであって、(該エンコーダの低域効果(「LFE」)サブシステムにおける低域通過フィルタリングを実装する)本発明の四段双二次フィルタの実施形態を含むようプログラムされたテキサスインスツルメンツC64デジタル信号プロセッサとして実装されたエンコーダが、オーディオ・データの典型的なブロックをフィルタリングするために平均5802サイクルしか必要としないことを示した。これは、その代わりにエンコーダが四段フィルタの通常の(並列化されない)実装を含むよう通常式にプログラムされている場合に前記ブロックをフィルタリングするために必要とされた平均サイクル数(10375)はと対照的である。
【0120】
本発明のフィルタが(他のコア・プロセッサ・アーキテクチャを有する)他のプロセッサを適切にプログラムすることによって実装されるときにも同様のパフォーマンス上の利益を提供できることが予期される。また、パフォーマンス改善の度合いがプロセッサ・アーキテクチャ、フィルタの段数およびフィルタにおける極の数に依存することも予期される。
【0121】
本発明は、ハードウェア、ファームウェアまたはソフトウェアまたは両者の組み合わせにおいて(たとえばプログラム可能な論理アレイとして)実装されうる。特に断わりのない限り、本発明の一部として含まれるアルゴリズムまたはプロセスは、いかなる特定のコンピュータまたは他の装置にも本来的に関係していない。特に、さまざまな汎用機械が本願の教示に従って書かれたプログラムとともに使用されうる。あるいは、必要とされる方法段階を実行するためにより特化した装置(たとえば集積回路)を構築することがより便利であることもある。このように、本発明は、一つまたは複数のプログラム可能なコンピュータ・システム(たとえば、
図5のエンコーダを実装するコンピュータ・システム)上で実行される一つまたは複数のコンピュータ・プログラムにおいて実装されうる。該コンピュータ・システムはそれぞれ、少なくとも一つのプロセッサ、少なくとも一つのデータ記憶システム(揮発性および不揮発性メモリおよび/または記憶要素を含む)、少なくとも一つの入力装置またはポートおよび少なくと一つの出力装置またはポートを有する。プログラム・コードは、入力データに適用されて、本稿に記載された機能を実行し、出力情報を生成する。出力情報は、既知の仕方で一つまたは複数の出力装置に加えられる。
【0122】
そのようなそれぞれのプログラムは、コンピュータ・システムと連絡するよう任意の所望されるコンピュータ言語(機械、アセンブリまたは高レベルの手続き型、論理的またはオブジェクト指向型のプログラミング言語を含む)において実装されてもよい。いずれにせよ、言語はコンパイルされるまたはインタープリットされる言語であってよい。
【0123】
たとえば、コンピュータ・ソフトウェア命令シーケンスによって実装されるとき、本発明の実施形態のさまざまな機能および段階は、好適なデジタル信号処理ハードウェアにおいて走るマルチスレッドのソフトウェア命令シーケンスによって実装されてもよい。この場合、実施形態のさまざまな装置、段階および機能は、ソフトウェア命令の諸部分に対応しうる。
【0124】
そのような各コンピュータ・プログラムは好ましくは、汎用または特殊目的のプログラム可能なコンピュータによって可読な記憶媒体またはデバイス(たとえば半導体メモリもしくは媒体または磁気式もしくは光学式媒体)に記憶されるまたはダウンロードされる。前記記憶媒体もしくはデバイスが前記コンピュータ・システムによって読まれるときに、本稿に記載される手順を実行するよう前記コンピュータを構成するおよび動作させるためである。本発明のシステムは、コンピュータ・プログラムをもつよう構成された(すなわち記憶している)コンピュータ可読記憶媒体として実装されてもよい。ここで、そのように構成された該記憶媒体は、コンピュータ・システムに、本稿に記載される機能を実行するよう特定の、所定の仕方で動作させる。
【0125】
個々の段がIIRフィルタであって(本稿に記載した個別的な実施形態におけるような)双二次フィルタではない多段フィルタが、その個々の段の処理が並列化されるよう(たとえば、その段すべてが、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう)、本発明に従って実装されてもよいことが考えられている。たとえば、2012年1月26日に公開された米国特許出願公開第2012/0019723号において記述されている型の多段フィルタが、その個々の段の処理が並列化されるよう(たとえば、その段すべてが、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう)本発明のある実施形態に基づいて修正されてもよい。
【0126】
本発明の方法のいくつかの実施形態では、本稿に記載される段階の一部または全部が同時に、あるいは本稿に記載される例で指定されるのとは異なる順序で実行される。段階は本発明の方法のいくつかの実施形態では特定の順序で実行されるが、いくつかの段階は、他の実施形態では、同時にまたは異なる順序で実行されてもよい。
【0127】
本発明のいくつかの実施形態について記述してきた。にもかかわらず、本発明の精神および範囲から外れることなくさまざまな修正がなされてもよい。上記の教示に照らして、本発明の数多くの修正および変形が可能である。付属の請求項の範囲内で、本発明は、本稿で具体的に記述したのとは異なる仕方で実施されることがありうることは理解しておくものとする。
いくつかの付番実施例を記載しておく。
〔付番実施例1〕
多段フィルタであって:
バッファ・メモリと;
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
多段フィルタ。
〔付番実施例2〕
当該多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例1記載の多段フィルタ。
〔付番実施例3〕
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例1記載の多段フィルタ。
〔付番実施例4〕
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例1記載の多段フィルタ。
〔付番実施例5〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例1記載の多段フィルタ。
〔付番実施例6〕
少なくとも二つの双二次フィルタ段を有する多段フィルタであって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、多段フィルタ。
〔付番実施例7〕
付番実施例6記載の多段フィルタであって、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、多段フィルタ。
〔付番実施例8〕
当該多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例6記載の多段フィルタ。
〔付番実施例9〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例8記載の多段フィルタ。
〔付番実施例10〕
N個の入力サンプルのブロックに対して多段フィルタリングを実行する方法であって:
(a)N個の入力サンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例11〕
入力サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例10記載の方法。
〔付番実施例12〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例10記載の方法。
〔付番実施例13〕
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは:
バッファ・メモリと;
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
エンコーダ。
〔付番実施例14〕
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例13記載のエンコーダ。
〔付番実施例15〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例13記載のエンコーダ。
〔付番実施例16〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例13記載のエンコーダ。
〔付番実施例17〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例13記載のエンコーダ。
〔付番実施例18〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例13記載のエンコーダ。
〔付番実施例19〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例13記載のエンコーダ。
〔付番実施例20〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例13記載のエンコーダ。
〔付番実施例21〕
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは、少なくとも二つの双二次フィルタ段を含み、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、エンコーダ。
〔付番実施例22〕
付番実施例21記載のエンコーダであって、前記多段フィルタが、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、エンコーダ。
〔付番実施例23〕
前記多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例21記載のエンコーダ。
〔付番実施例24〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例23記載のエンコーダ。
〔付番実施例25〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例21記載のエンコーダ。
〔付番実施例26〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例21記載のエンコーダ。
〔付番実施例27〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例21記載のエンコーダ。
〔付番実施例28〕
オーディオ・データをエンコードしてエンコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは:
(a)N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例29〕
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例28記載の方法。
〔付番実施例30〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例28記載の方法。
〔付番実施例31〕
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは:
バッファ・メモリと;
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と;
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
デコーダ。
〔付番実施例32〕
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例31記載のデコーダ。
〔付番実施例33〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例31記載のデコーダ。
〔付番実施例34〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例31記載のデコーダ。
〔付番実施例35〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例31記載のデコーダ。
〔付番実施例36〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例31記載のデコーダ。
〔付番実施例37〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例31記載のデコーダ。
〔付番実施例38〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例31記載のデコーダ。
〔付番実施例39〕
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは、少なくとも二つの双二次フィルタ段を含み、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、デコーダ。
〔付番実施例40〕
付番実施例39記載のデコーダであって、前記多段フィルタが、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、エンコーダ。
〔付番実施例41〕
前記多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例39記載のデコーダ。
〔付番実施例42〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例41記載のデコーダ。
〔付番実施例43〕
当該デコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例39記載のデコーダ。
〔付番実施例44〕
当該デコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例39記載のデコーダ。
〔付番実施例45〕
当該デコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例39記載のデコーダ。
〔付番実施例46〕
エンコードされたオーディオ・データをデコードしてデコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは:
(a)N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と;
(b)前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階(a)および(b)は単一の命令ストリームに応答して実行され、段階(a)および(b)は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例47〕
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例46記載の方法。
〔付番実施例48〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階(b)において取り出されるバッファリングされた値は、段階(a)において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階(a)において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階(a)において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例46記載の方法。
〔付番実施例49〕
エンコードされたビットストリームを処理する方法であって:
前記エンコードされたビットストリームを受領し、該エンコードされたビットストリームから、少なくとも二つの双二次フィルタ段を有する多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階であって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は、前記段の間のレイテンシーをもって組み合わされている、段階と;
前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを含む、
方法。
〔付番実施例50〕
エンコードされたビットストリームを処理する方法であって:
前記エンコードされたビットストリームを受領し、該エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と;
前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを含み、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に:
(a)N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と;
(b)前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
方法。
〔付番実施例51〕
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、付番実施例49または50記載の方法。
〔付番実施例52〕
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、付番実施例49または50記載の方法。
〔付番実施例53〕
エンコードされたビットストリームを処理する装置であって:
前記エンコードされたビットストリームを受領するよう結合される入力と;
前記エンコードされたビットストリームから、少なくとも二つの双二次フィルタ段を含む多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階であって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は、前記段の間のレイテンシーをもって組み合わされている、段階と、前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを実行するよう構成されている、前記入力に結合されたデコーダとを有する、
装置。
〔付番実施例54〕
エンコードされたビットストリームを処理する装置であって:
前記エンコードされたビットストリームを受領するよう結合される入力と;
前記エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と、前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを実行するよう構成された、前記入力に結合されたデコーダとを有しており、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に:
(a)N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と;
(b)前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階(a)の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
装置。
〔付番実施例55〕
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、付番実施例53または54記載の装置。
〔付番実施例56〕
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、付番実施例53または54記載の装置。