(57)【特許請求の範囲】
【請求項１】
多段フィルタであって：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
多段フィルタ。
【請求項２】
当該多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項１記載の多段フィルタ。
【請求項３】
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項１記載の多段フィルタ。
【請求項４】
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項１記載の多段フィルタ。
【請求項５】
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項１記載の多段フィルタ。
【請求項６】
N個の入力サンプルのブロックに対して多段フィルタリングを実行する方法であって：
（ａ）N個の入力サンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
【請求項７】
入力サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項６記載の方法。
【請求項８】
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項６記載の方法。
【請求項９】
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
エンコーダ。
【請求項１０】
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項９記載のエンコーダ。
【請求項１１】
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項９記載のエンコーダ。
【請求項１２】
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項９記載のエンコーダ。
【請求項１３】
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項９記載のエンコーダ。
【請求項１４】
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、請求項９記載のエンコーダ。
【請求項１５】
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、請求項９記載のエンコーダ。
【請求項１６】
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、請求項９記載のエンコーダ。
【請求項１７】
オーディオ・データをエンコードしてエンコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは：
（ａ）N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
【請求項１８】
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項１７記載の方法。
【請求項１９】
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項１７記載の方法。
【請求項２０】
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
デコーダ。
【請求項２１】
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、請求項２０記載のデコーダ。
【請求項２２】
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項２０記載のデコーダ。
【請求項２３】
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、請求項２０記載のデコーダ。
【請求項２４】
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、請求項２０記載のデコーダ。
【請求項２５】
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、請求項２０記載のデコーダ。
【請求項２６】
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、請求項２０記載のデコーダ。
【請求項２７】
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、請求項２０記載のデコーダ。
【請求項２８】
エンコードされたオーディオ・データをデコードしてデコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは：
（ａ）N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
【請求項２９】
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、請求項２８記載の方法。
【請求項３０】
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、請求項２８記載の方法。
【請求項３１】
エンコードされたビットストリームを処理する方法であって：
前記エンコードされたビットストリームを受領し、該エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と；
前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを含み、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に：
（ａ）N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
方法。
【請求項３２】
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、請求項３１記載の方法。
【請求項３３】
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、請求項３１記載の方法。
【請求項３４】
エンコードされたビットストリームを処理する装置であって：
前記エンコードされたビットストリームを受領するよう結合される入力と；
前記エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と、前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを実行するよう構成された、前記入力に結合されたデコーダとを有しており、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に：
（ａ）N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
装置。
【請求項３５】
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、請求項３４記載の装置。
【請求項３６】
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、請求項３４記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は2012年5月10日に出願された米国仮特許出願第61/645,291号への優先権を主張するものである。同出願の内容はここに参照によってその全体において組み込まれる。
【０００２】
１．発明の分野
本発明は、双二次フィルタ段を有する多段フィルタおよびそのようなフィルタを使うデータ（たとえばオーディオ・データ）の並列化されたフィルタリングに関する。本発明のいくつかの実施形態は、ドルビー・デジタル（AC-3）、ドルビー・デジタル・プラス（E-AC-3）およびドルビーEとして知られるフォーマットの一つに基づくまたは他のエンコード・フォーマットに基づくオーディオ・データのエンコードまたはデコードの際に、（双二次フィルタ段を有する多段フィルタを使って）該オーディオ・データをフィルタリングするための方法、システムおよびプロセッサである。ドルビー、ドルビー・デジタル、ドルビー・デジタル・プラスおよびドルビーEはドルビー・ラボラトリーズ・ライセンシング・コーポレーションの商標である。
【背景技術】
【０００３】
２．発明の背景
請求項を含む本開示を通じて、信号またはデータ「に対して」動作を実行する（たとえば信号またはデータをフィルタリングするまたはスケーリングする）という表現は、信号またはデータに対して直接的に、または信号またはデータの処理されたバージョンに対して（たとえば、予備的なフィルタリングまたは他の処理を該動作の実行に先立って受けている前記信号のバージョンに対して）該動作を実行することを表わすために広義で使用される。
【０００４】
信号処理において、デジタル双二次フィルタは、二つの極および二つの零点を含む二次の再帰的な線形フィルタである。デジタル双二次フィルタを表わすのに、本稿では、略称「双二次」（または「バイクワッド」）フィルタが使われる。Z領域では、双二次フィルタの伝達関数は二つの二次関数の比である。
【０００５】
【数１】
0005866062.tif 000002
高次の再帰フィルタ（二次より大きな次数の無限インパルス応答（infinite  impulse  response）すなわちIIRフィルタ）は、その係数の量子化にきわめて敏感であることがあり、簡単に不安定化しうる。一次および二次の再帰フィルタもこの型の不安定性問題をもつことがあるが、該不安定性問題の深刻さはずっと低い。よって、高次再帰フィルタは典型的には、一連の双二次セクションを（および任意的には一次フィルタも）有する直列縦続されたフィルタとして実装される。そのような直列縦続されたフィルタは本稿では時に多段双二次フィルタと称され、双二次フィルタ（本稿では時に双二次段または双二次セクションと称される）のシーケンスをなす。
【０００６】
たとえば、よく知られたAC-3（ドルビー・デジタル）フォーマットまたはよく知られたドルビー・デジタル・プラスおよびドルビーEフォーマットのいずれかに基づくオーディオ・データをエンコードするよう構成された通常のエンコーダは、いくつかの多段双二次フィルタを実装する。たとえば、ドルビー・デジタル・プラス・エンコーダは典型的には、過渡検出器サブシステムにおける高域通過フィルタリングを実装するための二段の双二次フィルタ（すなわち、二つの縦続した双二次フィルタを含むフィルタ）、低域効果（LFE:  low  frequency  effects）サブシステムにおいて低域通過フィルタリングを実装するための四段の双二次フィルタ（すなわち、四つの縦続した双二次フィルタを含むフィルタ）および帯域幅制限低域通過フィルタリングを実装するための三段の双二次フィルタを用いる。ドルビーEエンコーダは典型的には、過渡検出器サブシステムにおける高域通過フィルタリングを実装するための二段の双二次フィルタ（すなわち、二つの縦続した双二次フィルタを含むフィルタ）および低域効果（LFE）サブシステムにおいて低域通過フィルタリングを実装するための四段の双二次フィルタ（すなわち、四つの縦続した双二次フィルタを含むフィルタ）を用いる。ドルビーEデコーダは典型的には、低域効果（LFE）サブシステムにおいて低域通過フィルタリングを実装するための三段の双二次フィルタ（すなわち、三つの縦続した双二次フィルタを含むフィルタ）を用いる。
【０００７】
たとえば、図１は（時に直接形式II‐転置（Direct  Form  II-Transposed）構造と称される型の）双二次フィルタの図であり、図のように接続された要素１、２、３、４、５、b0、b1、b2、-a1、-a2を含んでいる。要素１、２、３は加算要素であり、要素４および５は遅延要素であり、利得要素b0、b1、b2、-a1、-a2のそれぞれは、利得b0、b1、b2、-a1、-a2のうちの対応するものをその入力に呈される信号に適用する。本稿では図示や説明はしないが、当業者には、他の等価な双二次フィルタ構造が存在することがよく知られている。たとえば、直接形式I、直接形式I‐転置および直接形式IIである。そのようないかなる等価な双二次フィルタ構造も本発明の範囲内である。
【０００８】
図１のＡに示されるように、図１の双二次フィルタ（図１のＡではBiquad  1とラベル付けされている）が、同一の構造をもつ（図１のＡではBiquad  2とラベル付けされている）がその利得要素は図１のフィルタとは利得とは異なる利得を適用してもよい双二次フィルタと縦続させられる場合、結果的に得られる多段双二次フィルタは、（たとえば上述したようなオーディオ・エンコーダの過渡検出器サブシステムにおいて高域通過フィルタリングを実装するために）用いることのできる二段双二次フィルタの例である。図１のＡの多段双二次フィルタでは、第一段の出力信号x1(n)が第二段への入力信号である。
【０００９】
多段双二次フィルタ（およびいくつかの他の多段IIRフィルタ）について、時点「n」および先行する諸時点における時間領域信号x(n)（入力信号または多段フィルタの別の段で生成された信号）の値に応答しての時点「n」における各段での出力サンプル計算（すなわち、その段の出力信号y(n)）は、先行する出力（すなわち、時点n−1およびn−2における出力y(n−1)およびy(n−2)）に依存する。また、多段双二次フィルタにおけるそれぞれの二つの連続する段（双二次フィルタ）について、各前の段の出力はその後の段に入力され、よって、その後の段の出力は、前の段の出力が決定されるまで決定できない。これらが、（本発明の前には）多段双二次フィルタを実装するために完全に並列化された処理が用いられてこなかった主たる理由である。
【００１０】
多くの今日のコア・プロセッサ・アーキテクチャ（たとえば、デジタル信号プロセッサ・アーキテクチャ）では、多くのアルゴリズムを並列化し、パフォーマンスを改善するために使用されることができるSIMD（single  instruction,  multiple  data［単一命令多重データ］）ユニットおよび／または複数のALU（arithmetic  logic  unit［算術論理ユニット］）またはAMU（arithmetic  manipulation  unit［算術操作ユニット］）がある。しかしながら、多段双二次フィルタを実装するようプロセッサをプログラミングするための通常のアルゴリズムは、SIMD命令を使わず、並列化されていない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第5,583,962号
【特許文献２】米国特許第5,632,005号
【特許文献３】米国特許第5,633,981号
【特許文献４】米国特許第5,727,119号
【特許文献５】米国特許第6,021,386号
【非特許文献】
【００１２】
【非特許文献１】ATSC  Standard  A52/A:  Digital  Audio  Compression  Standard  (AC-3),  Revision  A,  Advanced  Television  Systems  Committee,  20  Aug.  2001
【非特許文献２】Craig  C.  Todd  et  al.、"Flexible  Perceptual  Coding  for  Audio  Transmission  and  Storage",  96th  Convention  of  the  Audio  Engineering  Society,  February  26,  1994,  Preprint  3796
【非特許文献３】Steve  Vernon、"Design  and  Implementation  of  AC-3  Coders,"  ,  IEEE  Trans.  Consumer  Electronics,  Vol.41,  No.3,  August  1995
【非特許文献４】Robert  L.  Andersen  and  Grant  A.  Davidson、"Dolby  Digital  Audio  Coding  Standards,"  書籍The  Digital  Signal  Processing  Handbook,  Second  Edition,  Vijay  K.  Madisetti,  Editor-in-Chief,  CRC  Press,  2009の一章
【非特許文献５】Bosi  et  al.、"High  Quality,  Low-Rate  Audio  Transform  Coding  for  Transmission  and  Multimedia  Applications,"  Audio  Engineering  Society  Preprint  3365,  93rd  AES  Convention,  October  1992
【非特許文献６】"Introduction  to  Dolby  Digital  Plus,  an  Enhancement  to  the  Dolby  Digital  Coding  System,"  AES  Convention  Paper  6196,  117th  AES  Convention,  October  28,  2004
【非特許文献７】Dolby  Digital/Dolby  Digital  Plus  Specification  (ATSC  A/52:2010)、http://www.atsc.org/cms/index.php/standards/published-standardsで入手可能
【発明の概要】
【発明が解決しようとする課題】
【００１３】
たとえば、ドルビー・デジタル・プラス・エンコーダ（これはドルビー・デジタル・プラス・フォーマットに従ってオーディオ・データをエンコードする）はプログラムされたARMネオン・プロセッサ（そのそれぞれは、並列処理を許容するネオンSIMDエンジンをもつARM  Cortexプロセッサである）としておよびプログラムされたテキサスインスツルメンツC64デジタル信号プロセッサとして実装されてきた。多くのオーディオ・データ・エンコーダ（たとえば、AC-3、ドルビー・デジタル・プラス、ドルビーEおよび／または他のエンコード・フォーマット）は、SIMD（single  instruction,  multiple  data［単一命令多重データ］）ユニットおよび／または複数のALU（arithmetic  logic  unit［算術論理ユニット］）またはAMU（arithmetic  manipulation  unit［算術操作ユニット］）を有する多様なアーキテクチャのうちの任意のものを有するプログラムされたプロセッサとして実装されてきたまたは実装されることができる。そのようなプロセッサは、並列処理を使って（オーディオ・データ・エンコードに含まれる）さまざまなアルゴリズムを実装するようプログラムされることができる。しかしながら、そのようなプロセッサにおいて多段双二次フィルタを実装するために用いられてきた通常のプログラミングは、並列処理を実装してこなかった。
【００１４】
本発明の典型的な実施形態は、多段双二次フィルタを実装するために並列処理を用いる。いくつかの実施形態は、AC-3（ドルビー・デジタル）フォーマット、ドルビー・デジタル・プラス・フォーマットまたはドルビーEフォーマットに従ってオーディオ・データをエンコードすることにおいて使用される型の多段双二次フィルタを実装するために並列処理を用いる。
【００１５】
本発明は、AC-3、ドルビー・デジタル・プラスまたはドルビーEフォーマットに従ってオーディオ・データをエンコードすることにおける使用に限定されないが、いくつかの実施形態は、本発明のある実施形態を実装する（またはかかる実施形態に基づいて設計された）少なくとも一つの多段双二次フィルタを用いる（たとえば、AC-3、ドルビー・デジタル・プラスまたはドルビーEフォーマットに従ってオーディオ・データをエンコードするための）オーディオ・エンコード方法、システムおよびプロセッサである。
【００１６】
AC-3エンコードされたビットストリームは、オーディオ・コンテンツの一ないし六つのチャネルおよび該オーディオ・コンテンツの少なくとも一つの特性を示すメタデータを含む。オーディオ・コンテンツは、知覚的オーディオ符号化を使って圧縮されたオーディオ・データである。
【００１７】
AC-3（ドルビー・デジタルとしても知られる）符号化の詳細はよく知られており、非特許文献１〜５および特許文献１〜５を含む多くの交換された文献に記載されている。
【００１８】
ドルビー・デジタル（AC-3）およびドルビー・デジタル・プラス（時に向上AC-3または「E-AC-3」と称される）符号化の詳細は、非特許文献６〜７に記載されている。
【課題を解決するための手段】
【００１９】
あるクラスの実施形態では、本発明は、少なくとも二つの段（そのそれぞれは双二次フィルタ）を有する多段フィルタであって、前記段は前記段の間のレイテンシーをもって組み合わされており、それによりすべての段が、該段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能である、多段フィルタである。典型的には、本多段フィルタは、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをも含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される。このように、これらの実施形態における多段フィルタは、個々の双二次フィルタ段が単一の命令ストリームに応答して独立して並列に動作するSIMD（単一命令多重データ）アーキテクチャをもつ。たとえば、本多段フィルタはN段を含んでいてもよく（Nは1より大きい数）、前記段の一つ（シーケンス中の第「M＋1」段）は、種々の時点において（前記ブロックの異なる入力データ値のシーケンスに応答して）前記段のうち前のもの（シーケンス中の第「M」段）によって生成されたデータ値に対して作用してもよい。前の段によって生成された該データ値は、（種々の時点に）バッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから（第「M＋1」段によって）読み出される。
【００２０】
いくつかの実施形態では、本発明は：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合され、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを有する多段フィルタであって、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに（該メモリにおける記憶のために）呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
多段フィルタである。
【００２１】
典型的な実施形態では、多段フィルタは、N個の入力サンプルのブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成される。
【００２２】
多段フィルタがM個の段を有する本発明の多段フィルタのいくつかの実施形態では、前記その後の双二次フィルタ段は、メモリから取り出されるバッファリングされている値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成される。ここで、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【００２３】
本発明の多段フィルタのいくつかの実施形態では、前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、メモリから取り出されるバッファリングされている値の異なる部分集合に応答して生成するよう構成される。それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む。たとえば、多段フィルタがM個の双二次フィルタ段を有する典型的な実施形態では、前記入力サンプルの第「j」のものに対応する出力値を生成するために取り出されるバッファリングされている値の前記部分集合であって、jはM−1からN−1までの範囲のインデックスである、部分集合は、前記入力サンプルの第「j」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値、前記入力サンプルの第「j−1」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値および前記入力サンプルの第「j−2」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値を含む。
【００２４】
別のクラスの実施形態では、本発明は、N個の入力サンプルのブロックに対して多段フィルタリングを実行する方法であって：
（ａ）N個の入力サンプルのブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに（該メモリにおける記憶のために）呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つ（たとえば三つ）を含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、方法である。典型的な実施形態では、入力サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される。
【００２５】
多段フィルタがM個の段を有する本発明の方法のいくつかの実施形態では、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は（jはM−1からN−1までの範囲のインデックス）、段階（ａ）において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【００２６】
別のクラスの実施形態では、本発明は、入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されているオーディオ・エンコーダである。前記エンコーダは、前記オーディオ・データをフィルタリングする（たとえば、前記オーディオ・データの予備的な処理をされたバージョンをフィルタリングする）よう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。別のクラスの実施形態では、本発明は、オーディオ・データに対して本発明の多段双二次フィルタリング方法の任意の実施形態を実行することによることを含め、エンコードされたオーディオ・データを生成するようオーディオ・データをエンコードする方法である。たとえば、本発明のある実施形態は、（エンコーダによってエンコードされるべき入力オーディオ・データの予備的な処理のための）前処理段を含むオーディオ・エンコーダであって、前記前処理段は、前記オーディオ・データ（たとえば、前記入力データまたは前記入力データの予備的に処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む、オーディオ・エンコーダである。本発明のもう一つの実施形態は、（エンコーダによってエンコードされるべきオーディオ・データの予備的な処理を実行するための）前処理器であって、前記前処理器は、前記オーディオ・データ（たとえば、前記前処理器に入力されたデータまたはそのような入力データの予備的に処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む、前処理器である。
【００２７】
別のクラスの実施形態では、本発明は、エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されているオーディオ・デコーダである。このクラスのいくつかの実施形態では、前記デコーダは、前記エンコードされたオーディオ・データをフィルタリングする（たとえば、前記エンコードされたオーディオ・データの予備的な処理をされたバージョンをフィルタリングする）よう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。別のクラスの実施形態では、本発明は、デコードされたオーディオ・データを生成するよう、エンコードされたオーディオ・データをデコードする方法である。いくつかのそのような実施形態では、デコードは、エンコードされたオーディオ・データに対して（たとえば、エンコードされたオーディオ・データの予備的に処理されたバージョンに対して）、本発明の多段双二次フィルタリング方法の任意の実施形態を実行することを含む。たとえば、本発明のある実施形態は、（デコーダによってデコードされたデコード済みオーディオ・データの後処理のための）後処理段を含むオーディオ・デコーダであって、前記後処理段は、オーディオ・データ（たとえば、前記デコードされたデータまたは前記デコードされたデータの処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む、オーディオ・デコーダである。本発明のもう一つの実施形態は、（デコーダによってデコードされた、デコードされたオーディオ・データの後処理を実行するための）後処理器であって、前記後処理器は、オーディオ・データ（たとえば、前記後処理器に入力されたデコードされたデータまたはそのような入力データの処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む、後処理器である。
【００２８】
本発明の典型的な実施形態によれば、SIMD命令（または複数のALUまたはAMUによる並列処理のための命令）が、多段フィルタを実装するようプロセッサ（たとえばデジタル信号プロセッサまたは汎用プロセッサ）をプログラムするために使用される。多段フィルタは、帯域幅フィルタリング、低域通過フィルタリング（たとえばオーディオ・エンコーダのLFEサブシステムにおける）、高域通過フィルタリング（たとえばオーディオ・エンコーダの過渡検出器サブシステムにおける）または他のフィルタリングを実装してもよい。
【００２９】
本発明の他の側面は、本発明の方法の任意の実施形態を実行するよう構成された（たとえばプログラムされた）システムまたは装置（たとえばエンコーダ、デコーダまたはプロセッサ）および本発明の方法の任意の実施形態またはその段階を実装するためのコードを記憶するコンピュータ可読媒体（たとえばディスク）を含む。たとえば、本発明のシステムは、本発明の方法の任意の実施形態またはその段階を含む多様な動作の任意のものをデータに対して実行するようソフトウェアまたはファームウェアでプログラムされたおよび／または他の仕方で構成された、プログラム可能な汎用プロセッサ、デジタル信号プロセッサまたはマイクロプロセッサであるまたはそれを含むことができる。そのような汎用プロセッサは、入力装置と、メモリと、それに対して呈されるデータに応答して本発明の方法の実施形態（またはその段階）を実行するようプログラムされた（および／または他の仕方で構成された）処理回路とを含むコンピュータ・システムであるまたはそのようなコンピュータ・システムを含むのでもよい。
【００３０】
本発明のいくつかの実施形態は、プログラムされたプロセッサ（たとえばARMネオン・プロセッサ（そのそれぞれは、並列処理を許容するネオンSIMDエンジンをもつARM  Cortexプロセッサである）またはSIMD（単一命令多重データ）ユニットおよび／または複数のALU（算術論理ユニット）またはAMU（算術操作ユニット）を有する他のプロセッサ）として、あるいはプログラムされた（および／または他の仕方で構成された）デジタル信号プロセッサ（たとえばSIMDユニットおよび／または複数のALUまたはAMUを有するDSP）として実装された、エンコーダ（たとえば、ドルビー・デジタル・プラス、AC-3またはドルビーEフォーマットに従ってオーディオ・データをエンコードするエンコーダ）またはデコーダである。
【図面の簡単な説明】
【００３１】
【図１】通常の双二次フィルタのブロック図である。Ａは通常の多段双二次フィルタのブロック図である。
【図２】直列縦続した双二次フィルタ（「縦続した双二次セクション」）として実装されたフィルタにおいてフィルタリングを実行する通常の方法のフローチャートである。
【図３】単一の命令ストリームに応答して並列に動作する縦続した双二次フィルタ（「縦続した双二次セクション」）を有する多段双二次フィルタにおいてフィルタリングを実行する本発明の方法のある実施形態のフローチャートである。
【図４】縦続した双二次フィルタを有し、図３を参照して記載される型の方法を実行できる多段フィルタ（たとえば、本発明の実施形態に基づいてDSPまたは他のプロセッサをプログラムすることによって実装される）のブロック図である。図４では、メモリ１０は、入力データx(n)の各ブロックを記憶するメモリ位置と、双二次フィルタによって生成される中間的な値x1(n),…,xN-1(n)のうち必要とされるものすべてを記憶するバッファ・メモリ位置とを含む。
【図５】エンコーダ（本発明の多段フィルタの実施形態を含む）およびデコーダ（やはり本発明の多段フィルタの実施形態を含む）を含むシステムのブロック図である。
【図６】単一の命令ストリームに応答して並列に動作する縦続した双二次フィルタ（「縦続した双二次セクション」）を有する多段双二次フィルタにおいてフィルタリングを実行する本発明の方法のもう一つの実施形態のフローチャートである。
【図７】本発明の方法の図６の実施形態の段階４０、４１および４２の実施形態のフローチャートである。
【図８】本発明の方法の図６の実施形態の段階４７、４８および４９の実施形態のフローチャートである。
【図９】計算がその場で実行される図４のシステムのある実装において生成される値の図である。
【図１０】エンコーダ（本発明の多段フィルタの実施形態を含む）および本発明の実施形態であるデコーダを含むシステムのブロック図である。
【発明を実施するための形態】
【００３２】
本発明の方法および本発明の方法を実装するよう構成されたシステム（たとえばエンコーダおよびデコーダ）の実施形態について、図３、図４、図５、図６、図７および図８を参照して記述する。
【００３３】
まず、図２を参照して、M個の双二次フィルタ（Mは、以下および図２において「nsections」と称される数）の縦続を有する多段フィルタを用いてデータ・サンプル（たとえばオーディオ・データ・サンプルのブロック）をフィルタリングする通常の方法を記述する。そのような通常の多段双二次フィルタの例は、図１のＡの上述したフィルタである。
【００３４】
図２の方法では、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれは、最初にバッファリングされる（段階２０）。ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各段（セクション）は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【００３５】
段階２１では、インデックスiは0に初期化され、段階２２ではインデックスjは0に初期化される。
【００３６】
段階２３では、「j」番目の入力サンプルが「i」番目の双二次フィルタにおいてフィルタリングされ、次いで、段階２４において、インデックスjがインクリメントされる。段階２５は、インクリメントされたインデックスj（j＋1に等しい）がN未満であるかどうかを判定する。段階２５において、インクリメントされたインデックスjがN未満であると判定されたら、次の（「j＋1」番目の）サンプルを「i」番目の双二次フィルタにおいてフィルタリングするために、段階２３が再び実行される。
【００３７】
段階２５において、インクリメントされたインデックスjがNに等しい（よって、現在のブロックにおけるすべてのサンプルが現在の双二次フィルタにおいてフィルタリングされた）と判定されたら、段階２６において、インデックスiがインクリメントされる。
【００３８】
段階２７は、最も最近インクリメントされたインデックスi（i＋1に等しい）が数「nsections」（これはMに等しい）未満であるかどうかを判定する。段階２７において、最も最近インクリメントされたインデックスiがM未満であると判定されたら、中間的な値（段階２２〜２５の前回の逐次反復において前の双二次フィルタにおいて生成された、前の（「i」番目の）双二次フィルタの出力）の最新のブロックを次の（「i＋1」番目の）双二次フィルタにおいてフィルタリングするために、段階２２〜２６の逐次反復がもう一度実行される。
【００３９】
段階２７において、最も最近インクリメントされたインデックスiがMに等しく、よってすべての双二次フィルタにおける現在ブロックのすべてのサンプルの処理が完了していると判定されたら、段階２８が実行される。段階２８では、入力サンプルの現在ブロックを多段フィルタにおいてフィルタリングすることによって生成された、N個のフィルタリングされたサンプルが出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは（段階２０の新たな実行において）バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、図２の方法が繰り返される。
【００４０】
図２のプロセスのために、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]);
}
}。
【００４１】
通常の図２の方法の実行中、各サンプルについての多段フィルタの各段の出力（「output[j]」）は一般に二つの先行するサンプル（output[j-1]およびoutput[j-2]）についての当該段の出力と、当該段への現在の入力（「input[j]」）および当該段への二つの先行する入力（input[j-1]およびinput[j-2]）とに依存するので、当該段内で実装されるループ（図２の段階２３、２４および２５）のための動作は並列化されない。また、第一の段（i＝0）の出力が第二の段（i＝1）に入力されるので、通常の図２の方法の実行においては、段を横断した動作は並列化されない。これは、たとえ複数のALU（またはAMU）またはSIMDユニットを含むアーキテクチャをもつプロセッサによって実装されるときでも、当該多段フィルタのための高い命令カウント（時にMPISまたは毎秒百万命令［Millions  of  Instructions  Per  Second］と称される）要件につながる。
【００４２】
次に、図３を参照して、二つの双二次フィルタの縦続を有する多段フィルタを用いてデータ・サンプル（たとえばオーディオ・データ・サンプルのブロック）をフィルタリングする本発明の方法の実施形態を記述する。最初に、段階３０において、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれが、その後の段階（段階３１、３３および３４を含む）において使うために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００４３】
ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各段（セクション）は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【００４４】
段階３１では、第一の入力サンプル（j＝0）が第一の（i＝0）双二次フィルタにおいてフィルタリングされる。この段階によって生成される値は、（たとえば段階３３および／または３４のその後の実行における）その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００４５】
段階３２では、インデックスjは1に設定される。
【００４６】
次いで、段階３３および３４が並列に実行される。段階３３では、「j」番目の入力サンプルが第一の（i＝0）双二次フィルタにおいてフィルタリングされ、この段階において生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階３４では、第二の（i＝1）双二次フィルタへの「j−1」番目の入力サンプルがフィルタリングされ、この段階において生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００４７】
次いで、段階３５において、インデックスjがインクリメントされる。段階３６は、インクリメントされたインデックスj（j＋1に等しい）がN未満であるかどうかを判定する。段階３６において、インクリメントされたインデックスjがN未満であると判定されたら、（段階３３において）第一の双二次フィルタへの次の入力サンプルおよび（段階３４において）第二の双二次フィルタへの次の入力サンプルをフィルタリングするために、段階３３および３４は再び実行される。段階３３および３４のそれぞれの各反復工程によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。たとえば、段階３３の一つまたは複数の先行する反復工程において生成された一つまたは複数の中間的な値が、段階３４の実行において使うためにバッファから取り出されてもよい。
【００４８】
段階３６において、インクリメントされたインデックスjがNに等しい（よって、現在のブロックにおけるすべての入力サンプルが第一の双二次フィルタにおいてフィルタリングされた）と判定されたら、段階３７が実行される。
【００４９】
段階３７では、第二の（i＝1）双二次フィルタへの最後の入力サンプル（j＝N−1）がフィルタリングされる。この段階によって生成される値は、その後の使用のために（たとえば段階３８における出力のために）利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００５０】
次いで、段階３８において、第二の双二次フィルタによって生成されたN個のフィルタリングされたサンプルが（N個の入力サンプルの現在ブロックに応答しての当該多段フィルタの出力として）出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは（段階３０の新たな実行において）バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、図３の方法が繰り返される。
【００５１】
多段フィルタの各段において（図３の方法の実行中に）実行される処理は、下記の擬似コードによっても記述される。ここで、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」番目の）サンプル処理}。
【００５２】
図３および対応する擬似コードから明らかなように、多段フィルタの両方の段における処理は単一のサンプル・ループ（図３の段階３３、３４、３５および３６）に組み合わされる。（二段双二次フィルタの場合）二つの段の間に一サンプルのレイテンシーを導入することによって、あるいはより一般的には、図６、図７および図８との関連で後述するように、二つ以上の双二次フィルタ段を有する多段フィルタの各段の間に一サンプルのレイテンシーを導入することによって、本発明によれば、多段フィルタのすべての段における処理が完全に並列化されうる。このように、多段フィルタのすべての双二次フィルタ段におけるサンプルのブロックの処理は、本発明の記述される実施形態によれば、（すべての段について組み合わされた）単一のサンプル・ループにおいて並列化されうる。
【００５３】
M個の双二次フィルタ（Mは2より大きい）の縦続を有する多段フィルタを用いてデータ・サンプルのブロック（たとえばオーディオ・データ・サンプルのブロック）をフィルタリングするための、本発明の方法の図３の実施形態に対する変形が考えられる。そのような変形は典型的には、図６、図７および図８を参照して記述される仕方で実装される。
【００５４】
最初に、図６のフローチャートの段階４０において、フィルタリングされるべきN個のサンプルの新しいブロックそれぞれが、その後の段階（段階４１、４３〜４５および４８を含む）において使うために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００５５】
ブロック中の各サンプルはインデックスjによって特定される。ここで、0≦j≦N−1である。多段フィルタにおける各双二次段（セクション）は、インデックスiによって特定される。ここで、0≦i≦M−1である。
【００５６】
段階４１では、最初のM−1個の入力サンプル（j＝0ないしj＝M−2）に対して双二次フィルタ段i＝0ないしi＝M−2においてループ前フィルタリングが実行される（たとえば、図７を参照して記述される仕方で）。図７に示されるように、いくつかの双二次フィルタ段については、ループ前フィルタリングは最初のM−1個の入力サンプルの部分集合のみに対応して生起することを注意しておくべきである。この段階によって生成される値は、（たとえば段階４３〜４５のその後の実行における）その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００５７】
段階４２では、インデックスjはM−1に設定される。
【００５８】
次いで、段階４３〜４５（M段のそれぞれについて一つの段階）が並列に実行される。段階４３では、第一の（i＝0）双二次フィルタへの「j」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階４４では、第二の（i＝1）双二次フィルタへの「j−1」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。同様に（Mが2より大きいとして、段階４３および４４と並列に実行される少なくとも一つの段階において）、第三の（i＝2）双二次フィルタへの「j−2」番目の入力サンプルがフィルタリングされ、（Mが4以上であるとして）第四の（i＝3）双二次フィルタへの「j−3」番目の入力サンプルがフィルタリングされ、など、双二次フィルタi＝4ないしi＝M−2の追加的なそれぞれについて同様となる。そのような各段階によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる。（Mが2より大きい場合、段階４３および４４と並列に実行される）段階４５では、最後の（i＝M−1）双二次フィルタへの「j−M＋1」番目の入力サンプルがフィルタリングされ、この段階によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００５９】
次いで、段階４６において、インデックスjがインクリメントされる。段階４７は、インクリメントされたインデックスj（j＋1に等しい）がN未満であるかどうかを判定する。段階４７において、インクリメントされたインデックスjがN未満であると判定されたら、（段階４３において）第一の双二次フィルタにおける次のサンプルを、（段階４４において）第二の双二次フィルタにおける次のサンプルを、さらなる双二次フィルタ段それぞれについて同様に、フィルタリングするために、段階４３〜４５（および段階４３〜４５と並列に実行される一つまたは複数の他の段階があれば該段階）は再び実行される。段階４３〜４５のそれぞれの各反復工程によって生成される少なくとも一つの（たとえばそれぞれの）値（「中間」的な値）が、その後の段階における使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。たとえば、段階４３の一つまたは複数の先行する反復工程において生成された一つまたは複数の中間的な値が、段階４４の実行において使うためにバッファから取り出されてもよい。
【００６０】
段階４７において、インクリメントされたインデックスjがNに等しい（よって、現在のブロックにおけるすべての入力サンプルが双二次フィルタの一つ（i＝0であるフィルタ）においてフィルタリングされた）と判定されたら、ループ後フィルタリング段階４８が実行される。
【００６１】
段階４８では、双二次フィルタ段i＝1ないしi＝M−1への残っているフィルタリングされていない入力サンプルがあればそれに対してループ後フィルタリングが実行される（たとえば図８を参照して記述されるようにして）。この段階によって生成される値（単数または複数）は、その後の使用のために（たとえば段階４９における出力のために）利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００６２】
段階４８のあと、段階４９において、最後の（i＝M−1）双二次フィルタによって生成されたN個のフィルタリングされたサンプルが（N個の入力サンプルの現在ブロックに応答しての当該多段フィルタの出力として）出力される。この時点において、フィルタリングされるべきN個のサンプルからなる追加的なブロックがあれば、それは（段階４０の新たな実行において）バッファリングされ、多段フィルタにおけるサンプルのその新しいブロックをフィルタリングするために、図６の方法が繰り返される。
【００６３】
図７は、本発明の方法の図６の実施形態の、段階４０および４２ならびに段階４１のある実施形態の詳細のフローチャートである。図７の段階５０〜５８は、図６のループ前フィルタリング段階４１のある実装である。段階５０において、現在ブロックの第一のサンプル（j＝0）が第一の双二次フィルタ段（i＝0）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば段階５１および５２において）利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階５１では、前記ブロックの第二のサンプル（j＝1）が第一の双二次フィルタ段（i＝0）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば段階５３において）利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階５２では、前記ブロックの第一のサンプル（j＝0）が第二の双二次フィルタ段（i＝1）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば段階５４において）利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。段階５１および５２は好ましくは（第一および第二の段に対して呈される同じ命令または命令シーケンスに応答して）並列に実行される。
【００６４】
図７において段階５１の垂直下方に示される諸段階（段階５３および５６を含む）では、現在ブロックの第三のサンプル（j＝2）ないし「M−1」番目のサンプル（j＝M−2）のそれぞれが第一の双二次フィルタ段（i＝0）においてフィルタリングされ、そのような各段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階５３では、前記ブロックの第三のサンプル（j＝2）が第一の双二次フィルタ段（i＝0）においてフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階５６では、現在ブロックの「M−1」番目のサンプル（j＝M−2）が第一の双二次フィルタ段（i＝0）においてフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるようバッファリングされる。
【００６５】
図７において段階５２の垂直下方に示される諸段階（段階５４および５７を含む）では、第二の双二次フィルタ段（i＝1）への第二の入力サンプル（j＝1）ないし「M−2」番目の入力サンプル（j＝M−3）のそれぞれがフィルタリングされ、そのような各段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる。段階５４では、第二の双二次フィルタ段への第二の入力サンプル（j＝1）がフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階５７では、第二の双二次フィルタ段への「M−2」番目の入力サンプル（j＝M−3）がフィルタリングされ、そのような段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるようバッファリングされる（たとえば図４のメモリ１０に）。
【００６６】
一般に、kが0ないしM−2の範囲のインデックスであるとして「k」番目の双二次フィルタ段について、段階のシーケンス（図７における諸段階の縦の列）は、「k」番目の双二次フィルタ段への第一の入力サンプル（j＝0）ないし「k」番目の双二次フィルタ段への「M−1−k」番目の入力サンプル（j＝M−2−k）のそれぞれをフィルタリングするために実行され、そのような各段階によって生成されるフィルタリングされたサンプル値（単数または複数）は、その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００６７】
よって、M＝3であれば、図７の段階５３，５４および５５が（好ましくは並列に）実行される。段階５３では、第一の双二次フィルタ段（i＝0）への第三の入力サンプル（j＝2）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階５４では、第二の双二次フィルタ段（i＝1）への第二の入力サンプル（j＝1）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階５５では、第三の双二次フィルタ段（i＝2）への第一の入力サンプル（j＝0）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。
【００６８】
同様に、M＞5の場合、（図７に示される）段階５３〜５５を含む行の下の段階行の段階が次いで（好ましくは並列に）実行され、次いで図７の段階５６、５７および５８を含む段階行の段階が（好ましくは並列に）実行される。段階５６では、第一の双二次フィルタ段（i＝0）への第「M−1」の入力サンプル（j＝M−2）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階５７では、第二の双二次フィルタ段（i＝1）への「M−2」の入力サンプル（j＝M−3）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。段階５８では、「M−1」番目の双二次フィルタ段（i＝M−2）への第一の入力サンプル（j＝0）がフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値がバッファリングされる。
【００６９】
図７における各段階行の段階（たとえば、段階５１および５２または段階５３、５４および５５）は好ましくは（関連する段に対して呈される同じ命令または命令シーケンスに応答して）並列に実行される。
【００７０】
図８は、本発明の方法の図６の実施形態の、段階４７および４９ならびに段階４８のある実施形態の詳細のフローチャートである。図８の段階６０〜６６は、図６のループ後フィルタリング段階４８のある実装である。
【００７１】
一般に、kが0ないしM−1の範囲のインデックスであるとして「k」番目の双二次フィルタ段について、段階のシーケンス（図８における諸段階の縦の列）は、「k」番目の双二次フィルタ段への「N−k＋1」番目の入力サンプル（j＝N−k）ないし「k」番目の双二次フィルタ段への最後の入力サンプル（j＝N−1）のそれぞれをフィルタリングするために実行され、そのような各段階によって生成されるフィルタリングされたサンプル値（単数または複数）は、その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。
【００７２】
たとえば、段階６０において、現在ブロックの最後のサンプル（j＝N−1）が第二の双二次フィルタ段（i＝1）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階６１では、前記ブロックの最後から二番目のサンプル（j＝N−2）が第三の双二次フィルタ段（i＝2）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば段階６３において）利用可能であるよう、バッファリングされる（たとえば図４のメモリ１０に）。段階６３では、前記ブロックの最後の（j＝N−1）サンプルが第三の双二次フィルタ段（i＝2）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。
【００７３】
段階６４では、前記ブロックの最後のサンプル（j＝N−1）が最後から二番目の双二次フィルタ段（i＝M−2）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。
【００７４】
段階６２では、前記ブロックの「N−M＋1」番目のサンプルが最後の双二次フィルタ段（i＝M−1）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば図８における段階６２の垂直下方の諸段階において）利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。段階６５では、前記ブロックの最後から二番目のサンプル（j＝N−2）が最後の双二次フィルタ段（i＝M−1）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために（たとえば図８の段階６６において）利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。段階６６では、前記ブロックの最後の（j＝N−1）サンプルが最後の双二次フィルタ段（i＝M−1）においてフィルタリングされ、この段階によって生成されるフィルタリングされたサンプル値が、その後の使用のために利用可能であるよう、好ましくはバッファリングされる（たとえば図４のメモリ１０に）。
【００７５】
図８における各段階行の段階（たとえば、段階６４および６５または段階６０、６１および６２を含む行中の諸段階）は好ましくは（関連する段に対して呈される同じ命令または命令シーケンスに応答して）並列に実行される。
【００７６】
図３の方法（および二つより多くの双二次フィルタの縦続を有する多段フィルタを用いてデータ・サンプルのブロックをフィルタリングするための、それに対する変形）は、N個の入力サンプルのブロックの多段フィルタリングを、サンプル・インデックス（図３のインデックスj）についての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行する。対照的に、図２の通常の方法は、サンプル・インデックス（図２のインデックスj）についての逐次反復および双二次フィルタ段のインデックス（図２のインデックスi）についての逐次反復の両方がある二つのネストされたループにおいてデータ・サンプルのブロックを処理する。
【００７７】
典型的な実施形態（たとえば、後述する図４の実施形態）では、本発明の多段フィルタの段（その各段は双二次フィルタ）は、すべての段が独立して動作でき、異なる段の処理の並列化を許容するよう、段間のレイテンシーと組み合わされる。すべての段は（入力データ値のブロックをフィルタリングするために）コントローラからの単一の共通の命令ストリームに応答して並列に動作でき、ただし各段は異なるデータ値に作用し、それらの段の少なくとも一つは（入力データ値の部分集合に応答してそれらの段の別のものによって生成され、それらの段の前記一つにおける処理のために取り出される前にバッファ・メモリに異なるレイテンシーをもって記憶された）バッファリングされた値を含むデータ値に対して作用する。こうして、多段フィルタは、個々の双二次フィルタ段が単一の命令ストリームに応答して独立にかつ並列に動作するSIMD（単一命令多重データ）アーキテクチャをもつ。たとえば、多段フィルタはN個の段を含んでいてもよく、それらの段の一つ（シーケンス中で「M＋1」番目の段）はそれらの段の前のもの（シーケンス中の「M」番目の段）によって異なる時刻に（たとえば前記ブロックの異なる入力データ値のシーケンスに応答して）生成され、（異なる時刻に）バッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから（「M＋1」番目の段によって）読み出されたデータ値に対して作用してもよい。
【００７８】
次に、図４を参照して、本発明の多段フィルタのあるクラスの実施形態を記述する。図４の多段フィルタは、複数の双二次フィルタ（Mは1より大きい整数であるとして、M個の双二次フィルタ）を含み、図３を参照して述べた型の方法（または図６に示したような、そのような方法に対する変形）を実行するよう構成されている。図４のフィルタはメモリ１０、コントローラ１１および双二次フィルタB1、B2、……、BMを図のような接続で含んでおり、コントローラ１１によってそれらの双二次フィルタに呈される単一の命令ストリームに応答して、N個の入力データ値x(n)をフィルタリングするよう構成されている。ここで、「n」は1ないしNの範囲のインデックスである。入力データ値のそれぞれx(n)はオーディオ・データ・サンプルであってもよい。
【００７９】
「単一の命令ストリーム」が多段フィルタの個々の段（たとえばそのそれぞれは双二次フィルタ）に呈されるという表現は、本稿では：単一の命令ストリームがそれらすべての段に対して（たとえばすべての段が結合されている単一のバスまたは導体上で）呈される場合および命令の同一の（または実質的に同一の）ストリームがそれらの段に同時に呈される（たとえば、各ストリームがそれらの段の異なるものに結合されている異なるバスまたは導体上でアサートされる）場合の両方を含む広義の意味で使われていることは理解しておくべきである。
【００８０】
入力データ値x(n)のブロックに応答して、フィルタB1はN個の中間的な（双二次フィルタリングされた）値x1(n)を生成し、それらの値をメモリ１０内のバッファ・メモリ位置に対して呈する。動作において、フィルタB2は必要とされる中間的な値x1(n)をメモリ１０から取り出し、それに応答して中間的な（双二次フィルタリングされた）値x2(n)を生成し、生成した中間的な値をメモリ１０内のバッファ・メモリ位置に対して呈する。同様に、動作において、双二次フィルタのそれぞれの他のもの（iは3ないしMの範囲のインデックスであるとしてフィルタBi）は中間的な値xi-1(n)をメモリ１０から取り出し、それに応答して中間的な双二次フィルタリングされた値xi(n)を生成し、生成した値をメモリ１０内のバッファ・メモリ位置に対して呈する。最後の双二次フィルタ（BM）において生成された、双二次フィルタリングされた値xM(n)＝y(n)は、入力データ値x(n)のブロックに応答して生成された、N個の完全にフィルタリングされた出力データ値のブロックを有する。
【００８１】
メモリ１０は、入力データx(n)の各ブロックを記憶するメモリ位置と、双二次フィルタB1、B2、……、BMによって生成された中間的な値x1(n),……,xM-1(n)を記憶するバッファ・メモリ位置（たとえば、入力データの各ブロックについて生成される中間的な値x1(n),……,xM-1(n)を記憶するバッファ位置）とを含む。計算がその場で実行されるいくつかの実装では、ひとたび特定の入力データ・サンプルがもはや多段フィルタによって必要とされなくなったら、入力データx(n)を記憶するために使われる同じメモリ位置が中間的な値x1(n),……,xM-1(n)を記憶するために使われてもよい。そのような実装では、メモリ１０は典型的には、（通常の、並列化されない多段フィルタのバージョンを実装するための）通常のメモリより多くの（または著しく多くの）メモリ位置を含む必要はない。そのような通常のメモリが典型的には、フィルタリングされるべき入力データx(n)の各ブロックと、多段フィルタの各段によって生成される、その段自身の動作のためおよび／またはフィルタのその後の各段の動作のために必要とされる各出力値とを記憶するためのメモリ位置を含むからである。
【００８２】
たとえば、図９は、N＝4かつM＝2（すなわち、二段の双二次が同時に4サンプルのブロックに対して作用する）の場合における、図４のシステムの、計算がその場で実行されるある実装において生成される値の図である。
【００８３】
図９の例では、入力バッファ中の四つのサンプルx(0),……,x(3)をもって始まる。
【００８４】
第一の段階では、サンプルx(0)がフィルタB0（第一段の双二次）を通じてフィルタリングされて、サンプルx1(0)を生成する。サンプルx1(0)は、前にサンプルx(0)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【００８５】
第二の段階では、サンプルx1(0)がフィルタB1（第二段の双二次）を通じてフィルタリングされて、サンプルy(0)を生成する。サンプルy(0)は、前にサンプルx1(0)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【００８６】
並列に、サンプルx(1)はフィルタB0を通じてフィルタリングされて、サンプルx1(1)を生成する。サンプルx1(1)は、前にサンプルx(1)によって占められていた位置においてメモリに記憶される。他のすべてのメモリ位置は変化しない。
【００８７】
その後の諸段階では、すべての入力サンプルx(0),……,x(3)が出力サンプルy(0),……,y(3)で置き換えられるまで、処理が続けられる。
【００８８】
図９の例では、フィルタB1がサンプルx1(2)に適用されるとき、サンプルx1(1)およびx1(0)はもはやバッファには存在しない（y(0)およびy(1)によって置き換えられている）。その代わり、x1(1)およびx1(0)（すなわち、図１のs1(n)およびs2(n)に対応するサンプル）からフィルタB1によって導出されたサンプルがフィルタB1に関連付けられた二つの状態変数に含まれる。
【００８９】
図９の例では、各フィルタ（たとえばフィルタB0およびB1のそれぞれ）は、（N個の入力サンプルからなる現在ブロックの「j−1」番目および「j−2」番目の入力サンプルに応答して）自分が生成する二つのサンプル（図１のs1(n)およびs2(n)に対応）を、現在ブロックの「j」番目の入力サンプルをフィルタリングする際に使うために記憶するメモリ位置へのアクセスを要求する。これらのメモリ位置は、図４のシステムのメモリ１０内であることができる（あるいは他のバッファ・メモリ位置であることができる）。
【００９０】
各フィルタについて、そのフィルタによって生成された記憶されたサンプル（図１のs1(n)およびs2(n)に対応）の各対は、（インクリメントされたインデックスjをもつ）新しい入力サンプルがそのフィルタに呈されるたびに更新される。記憶されたサンプル（図１のs1(n)およびs2(n)に対応）は、本発明に基づいて（多段フィルタの一つの段である）フィルタによって生成され、その後の使用のためにバッファリングされる「中間的な値」（本稿の他所でこの句が使われるような）の例であるが、これらのサンプルは（多段フィルタの異なるフィルタ段によってではなく）それらを生成したフィルタ段によってその後使用される。
【００９１】
図９は、その場（in  place）フィルタリングを使う本発明の方法の、ブロック・サイズ（N）が4に等しく、本発明のフィルタにおける双二次フィルタ段の数（M）が2に等しい個別的な例を示しているが、その場フィルタリングを使う本発明の方法の実施形態は、M＞1かつN＞Mという制約条件のもとでMおよびNの任意の値について考えられる。図９の実装（およびブロック・サイズが4と異なるおよび／または双二次段の数が2と異なるその場フィルタリングを使う他の実施形態）では、ひとたび特定の入力データ・サンプルがもはや多段フィルタによって必要とされなくなったら、入力データx(n)を記憶するために使用される（たとえば図４のメモリ１０内の）同じメモリ位置が、中間的な値x1(n),……,xM-1(n)を記憶するために使われてもよい。
【００９２】
図４のフィルタは、（メモリ１０として機能する）メモリと、（コントローラ１１として機能する）コントローラと、ALU（算術論理ユニット）またはAMU（算術操作ユニット）とを含み、各双二次フィルタB1、B2、……、BMが前記ALUまたはAMUの適切に構成されたものとして実装されるデジタル信号プロセッサ（DSP）または他のプロセッサをプログラムすることによって実装できる。
【００９３】
このように、図４のフィルタは：
バッファ・メモリ（メモリ１０内のバッファ位置）と；
第一の双二次フィルタ段（たとえば双二次フィルタB1）およびその後の双二次フィルタ段（たとえば双二次フィルタB2）を含む少なくとも二つの双二次フィルタ段（双二次フィルタB1、B2、……、BM）と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラ（コントローラ１１）とを含む。前記第一の双二次フィルタ段および前記その後の双二次フィルタ段（および図４のフィルタのそれぞれの他の双二次フィルタ段）は前記命令ストリームに応答して独立してかつ並列に動作する。
【００９４】
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値（たとえば値x1(n)）を生成し、該中間的な値を前記メモリに（該メモリにおける記憶のために）呈するよう構成されている。これらの中間的な値は、前記入力サンプルの各サンプルのフィルタリングされたバージョンを含む。本発明のある種の実施形態では、中間的な値x1(n)はどの時点においてもメモリ１０内に一つしか存在する必要がない。前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値（たとえば、値x2(n)）のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む。
【００９５】
多段フィルタがM個の段を有する実施形態における、前記その後の双二次フィルタ段（たとえば図４のフィルタB2）は、メモリから取り出されるバッファリングされている値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成される。ここで、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【００９６】
前記その後の双二次フィルタ段（たとえば図４のフィルタB2）は、前記入力サンプルのそれぞれに対応する出力値（x2(n)）を、メモリから取り出されるバッファリングされている値の異なる部分集合に応答して生成するよう構成される。それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値（たとえば図４に示される値x1(n)、x1(n−1)およびx1(n−2)）のうちの少なくとも二つ（たとえば三つ）を含む。より特定的には、多段フィルタがM個の段を有するある実施形態では、前記入力サンプルの第「j」のものに対応する出力値を生成するためにフィルタB2によって取り出されるバッファリングされている値の前記部分集合であって、jはM−1からN−1までの範囲のインデックスである、部分集合は、前記入力サンプルの第「j」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値、前記入力サンプルの第「j−1」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値および前記入力サンプルの第「j−2」のものに応答して前記第一の双二次フィルタ段において生成された少なくとも一つの値を含む。
【００９７】
図４のフィルタは、N個の入力サンプル（たとえばデータ値x(n)）のブロックに対して多段フィルタリングを実行するよう構成されており、それは以下の段階を実行することによることを含む：
（ａ）N個の入力サンプルのブロックに対して第一の双二次フィルタリング動作を実行して中間的な値（たとえば図４に示される値x1(n)、x1(n−1)およびx1(n−2)）を生成し、該中間的な値をバッファ・メモリに（該メモリにおける記憶のために）呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値（たとえば図４に示される値x2(n)）のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値（たとえば図４に示される値x1(n)、x1(n−1)およびx1(n−2)）のうちの少なくとも二つ（たとえば三つ）を含む、段階。
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される。
【００９８】
前記フィルタリングがM個の段を有する多段フィルタにおいて実行されるある実施形態における、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は（jはM−1からN−1までの範囲のインデックス）、段階（ａ）において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む。
【００９９】
図５は、本発明の多段フィルタのある実施形態（「M  B  フィルタ」１５３）を含むエンコーダ（エンコーダ１５０）を含むシステムのブロック図である。たとえば、フィルタ１５３は、図４を参照して図示し、説明した型のものであってもよい。エンコーダ１５０は任意的には、二つ以上の多段フィルタを含み、そのそれぞれが本発明の多段フィルタの実施形態である。入力オーディオ・データ・サンプルに応答して、エンコーダ１５０はエンコードされたオーディオ・データを生成しエンコードされたオーディオ・データを送達サブシステム１５１に対して呈する。
【０１００】
送達サブシステム１５１は、エンコードされたオーディオ・データを記憶し、および／またはエンコードされたオーディオ・データを示す信号を送信するよう構成される。デコーダ１５２が（たとえば前記エンコードされたオーディオ・データをサブシステム１５１中の記憶から読み出すまたは取り出すことによってまたはサブシステム１５１によって送信された前記エンコードされたオーディオ・データを示す信号を受信することによって）サブシステム１５１からエンコードされたオーディオ・データを受領するよう結合され、構成されている（たとえばプログラムされている）。
【０１０１】
デコーダ１５２は、本発明の多段フィルタのある実施形態（「M  Bフィルタ」１５４）を含む。たとえば、フィルタ１５４は図４を参照して図示し、説明した型のものであってもよい。デコーダ１５２は任意的には、二つ以上の多段フィルタを含み、そのそれぞれが本発明の多段フィルタの実施形態である。デコーダ１５２は、エンコードされたオーディオ・データをデコードし、それによりデコードされたオーディオ・データを生成するよう動作する。
【０１０２】
図５のシステムは、エンコーダ１５０によってエンコードされるべきオーディオ・データの予備的な処理を実行するよう構成されたオーディオ前処理サブシステム（「前処理器」）１５５をも含んでいる。前処理器１５５は、本発明の多段フィルタのある実施形態（「M  Bフィルタ」１５７）を含む。たとえば、フィルタ１５７は図４を参照して図示し、説明した型のものであってもよい。
【０１０３】
図５のシステムは、デコーダ１５４によってデコードされたデコード済みオーディオ・データの後処理を実行するよう構成されたオーディオ後処理サブシステム（「後処理器」）１５６をも含んでいる。後処理器１５６は、本発明の多段フィルタのある実施形態（「M  Bフィルタ」１５８）を含む。たとえば、フィルタ１５８は図４を参照して図示し、説明した型のものであってもよい。
【０１０４】
いくつかの実装では、エンコーダ１５０は、時間領域の入力オーディオ・データに応答してAC-3（または向上AC-3またはドルビーE）エンコードされたオーディオ・ビットストリームを生成するよう構成されているAC-3（または向上AC-3またはドルビーE）エンコーダであり、デコーダ５２はAC-3（または向上AC-3またはドルビーE）デコーダである。
【０１０５】
あるクラスの実施形態では、本発明は、入力オーディオ・データ・サンプルに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダ（たとえば図５のエンコーダ１５０）であり、該エンコーダは、前記オーディオ・データをフィルタリングする（たとえば、前記オーディオ・データの予備的な処理をされたバージョンをフィルタリングする）よう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。エンコーダ１５０は、オーディオ・データに対して（たとえば前記オーディオ・データの予備的に処理されたバージョンに対して）本発明の多段双二次フィルタリング方法の実施形態を実行することによることを含め、エンコードされたオーディオ・データを生成するようオーディオ・データをエンコードするよう構成されている。
【０１０６】
あるクラスの実施形態では、本発明は、エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されているオーディオ・デコーダ（たとえば図５のデコーダ１５２）である。前記デコーダは、前記エンコードされたオーディオ・データをフィルタリングする（たとえば、前記エンコードされたオーディオ・データの予備的な処理をされたバージョンをフィルタリングする）よう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。デコーダ１５２は、エンコードされたオーディオ・データに対して（たとえば、エンコードされたオーディオ・データの予備的に処理されたバージョンに対して）本発明の多段フィルタリングの実施形態を実行することによるものも含め、デコードされたオーディオ・データを生成するよう、エンコードされたオーディオ・データをデコードするよう構成される。
【０１０７】
本発明のもう一つの実施形態は、オーディオ・データ（たとえばエンコーダによってエンコードされるべきオーディオ・データ）の予備的な処理を実行するための前処理器（たとえば図５の前処理器１５５）である。前記前処理器は、前記オーディオ・データ（たとえば、前記前処理器に入力されるデータまたはそのような入力データの予備的に処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。
【０１０８】
本発明のもう一つの実施形態は、デコーダによってデコードされたデコードされたオーディオ・データの後処理を実行するための後処理器（たとえば図５の後処理器１５６）である。前記後処理器は、オーディオ・データ（たとえば、前記後処理器に入力されるデコード済みデータまたはそのような入力データの処理されたバージョン）をフィルタリングするよう結合され、構成されている少なくとも一つの多段フィルタ（これは本発明の多段フィルタの任意の実施形態である）を含む。
【０１０９】
図１０は、本発明の多段フィルタのある実施形態（「M  Bフィルタ」１５３）を含むエンコーダ（エンコーダ１５０）を含むシステムのブロック図である。図１０のエンコーダ１５０は図５のエンコーダ１５０と同一であり、図５のエンコーダ１５０が実装されうる仕方のいずれで実装されてもよい。多段フィルタ１５３は、本発明の多段フィルタの任意の実施形態を実装しうる。入力オーディオ・データ・サンプルに応答して、エンコーダ１５０は（一つまたは複数の入力オーディオ・チャネルを表わす）エンコードされたオーディオ・データを生成し、該エンコードされたオーディオ・データを送達サブシステム１５１に呈する。
【０１１０】
送達サブシステム１５１は、エンコードされたオーディオ・データを記憶し、および／またはエンコードされたオーディオ・データを示す信号を送信するよう構成される。図１０のサブシステム１５１は図５のサブシステム１５１と同一であり、図５のサブシステム１５１が実装されうる仕方のいずれで実装されてもよい。
【０１１１】
図１０のデコーダ２５２は（たとえば前記エンコードされたオーディオ・データをサブシステム１５１中の記憶から読み出すまたは取り出すことによってまたはサブシステム１５１によって送信された前記エンコードされたオーディオ・データを示す信号を受信することによって）サブシステム１５１からエンコードされたオーディオ・データを受領するよう結合された入力をもつ。
【０１１２】
デコーダ２５２は、多段フィルタ１５３によって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを（受領されたエンコードされたビットストリームから）抽出し、該エンコードされたデータをデコードして、オーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供するよう構成されている（たとえば、プログラムされている）。
【０１１３】
本発明の典型的な実施形態によれば、SIMD命令（または複数のALUまたはAMUによる並列処理のための命令）が、多段フィルタを実装するようプロセッサ（たとえばデジタル信号プロセッサまたは汎用プロセッサ）をプログラムするために使用される。多段フィルタは、帯域幅制限低域通過フィルタリング、低域通過フィルタリング（たとえばオーディオ・エンコーダのLFEサブシステムにおける）、高域通過フィルタリング（たとえばオーディオ・エンコーダの過渡検出器サブシステムにおける）または他のフィルタリングを実装してもよい。
【０１１４】
本発明の他の側面は、本発明の方法の任意の実施形態を実行するよう構成された（たとえばプログラムされた）システムまたは装置（たとえばエンコーダ、デコーダまたはプロセッサ）および本発明の方法の任意の実施形態またはその段階を実装するためのコードを記憶するコンピュータ可読媒体（たとえばディスク）を含む。たとえば、本発明のシステムは、本発明の方法の実施形態またはその段階を含む多様な動作の任意のものをデータに対して実行するようソフトウェアまたはファームウェアでプログラムされたおよび／または他の仕方で構成された、プログラム可能な汎用プロセッサ、デジタル信号プロセッサまたはマイクロプロセッサであるまたはそれを含むことができる。そのような汎用プロセッサは、入力装置と、メモリと、それに対して呈されるデータに応答して本発明の方法の実施形態（またはその段階）を実行するようプログラムされた（および／または他の仕方で構成された）処理回路とを含むコンピュータ・システムであるまたはそのようなコンピュータ・システムを含むのでもよい。
【０１１５】
本発明のいくつかの実施形態は、プログラムされたプロセッサ（たとえばARMネオン・プロセッサ（そのそれぞれは、並列処理を許容するネオンSIMDエンジンをもつARM  Cortexプロセッサである）またはSIMD（単一命令多重データ）ユニットおよび／または複数のALU（算術論理ユニット）またはAMU（算術操作ユニット）を有する他のプロセッサ）として、あるいはプログラムされた（および／または他の仕方で構成された）デジタル信号プロセッサ（たとえばSIMDユニットおよび／または複数のALUまたはAMUを有するDSP）として実装された、エンコーダ（たとえば、ドルビー・デジタル・プラス、AC-3またはドルビーEフォーマットに従ってオーディオ・データをエンコードするエンコーダ）またはデコーダである。
【０１１６】
本発明の典型的な実施形態に従って、多段双二次フィルタのすべての双二次フィルタ段の動作を（単一のサンプル・ループに）組み合わせることは、並列を可能にすることによってパフォーマンスを改善する。SIMDユニットおよび複数のALU（またはAMU）をもつプロセッサは、本発明の方法の実施形態を実装することによってその資源を効率的に活用できる。
【０１１７】
多段双二次フィルタを実装するための本発明の方法の典型的な実施形態は、（フィルタの通常の実装によって達成可能な精度および安定性に比して）フィルタの出力精度や安定性に影響しない。
【０１１８】
発明者が実行した試験は、ドルビー・デジタル・プラス・フォーマットに従ってオーディオ・データをエンコードするよう構成されたエンコーダであって、（該エンコーダの過渡検出器サブシステムにおける高域通過フィルタリングを実装する）本発明の二段双二次フィルタの実施形態を含むようプログラムされたテキサスインスツルメンツC64デジタル信号プロセッサとして実装されたエンコーダが、オーディオ・データの典型的なブロックをフィルタリングするために平均1846サイクルしか必要としないことを示した。これは、その代わりにエンコーダが二段フィルタの通常の（並列化されない）実装を含むよう通常式にプログラムされている場合に前記ブロックをフィルタリングするために必要とされた平均サイクル数（4141）はと対照的である。
【０１１９】
発明者が実行した試験はまた、ドルビー・デジタル・プラス・フォーマットに従ってオーディオ・データをエンコードするよう構成されたエンコーダであって、（該エンコーダの低域効果（「LFE」）サブシステムにおける低域通過フィルタリングを実装する）本発明の四段双二次フィルタの実施形態を含むようプログラムされたテキサスインスツルメンツC64デジタル信号プロセッサとして実装されたエンコーダが、オーディオ・データの典型的なブロックをフィルタリングするために平均5802サイクルしか必要としないことを示した。これは、その代わりにエンコーダが四段フィルタの通常の（並列化されない）実装を含むよう通常式にプログラムされている場合に前記ブロックをフィルタリングするために必要とされた平均サイクル数（10375）はと対照的である。
【０１２０】
本発明のフィルタが（他のコア・プロセッサ・アーキテクチャを有する）他のプロセッサを適切にプログラムすることによって実装されるときにも同様のパフォーマンス上の利益を提供できることが予期される。また、パフォーマンス改善の度合いがプロセッサ・アーキテクチャ、フィルタの段数およびフィルタにおける極の数に依存することも予期される。
【０１２１】
本発明は、ハードウェア、ファームウェアまたはソフトウェアまたは両者の組み合わせにおいて（たとえばプログラム可能な論理アレイとして）実装されうる。特に断わりのない限り、本発明の一部として含まれるアルゴリズムまたはプロセスは、いかなる特定のコンピュータまたは他の装置にも本来的に関係していない。特に、さまざまな汎用機械が本願の教示に従って書かれたプログラムとともに使用されうる。あるいは、必要とされる方法段階を実行するためにより特化した装置（たとえば集積回路）を構築することがより便利であることもある。このように、本発明は、一つまたは複数のプログラム可能なコンピュータ・システム（たとえば、図５のエンコーダを実装するコンピュータ・システム）上で実行される一つまたは複数のコンピュータ・プログラムにおいて実装されうる。該コンピュータ・システムはそれぞれ、少なくとも一つのプロセッサ、少なくとも一つのデータ記憶システム（揮発性および不揮発性メモリおよび／または記憶要素を含む）、少なくとも一つの入力装置またはポートおよび少なくと一つの出力装置またはポートを有する。プログラム・コードは、入力データに適用されて、本稿に記載された機能を実行し、出力情報を生成する。出力情報は、既知の仕方で一つまたは複数の出力装置に加えられる。
【０１２２】
そのようなそれぞれのプログラムは、コンピュータ・システムと連絡するよう任意の所望されるコンピュータ言語（機械、アセンブリまたは高レベルの手続き型、論理的またはオブジェクト指向型のプログラミング言語を含む）において実装されてもよい。いずれにせよ、言語はコンパイルされるまたはインタープリットされる言語であってよい。
【０１２３】
たとえば、コンピュータ・ソフトウェア命令シーケンスによって実装されるとき、本発明の実施形態のさまざまな機能および段階は、好適なデジタル信号処理ハードウェアにおいて走るマルチスレッドのソフトウェア命令シーケンスによって実装されてもよい。この場合、実施形態のさまざまな装置、段階および機能は、ソフトウェア命令の諸部分に対応しうる。
【０１２４】
そのような各コンピュータ・プログラムは好ましくは、汎用または特殊目的のプログラム可能なコンピュータによって可読な記憶媒体またはデバイス（たとえば半導体メモリもしくは媒体または磁気式もしくは光学式媒体）に記憶されるまたはダウンロードされる。前記記憶媒体もしくはデバイスが前記コンピュータ・システムによって読まれるときに、本稿に記載される手順を実行するよう前記コンピュータを構成するおよび動作させるためである。本発明のシステムは、コンピュータ・プログラムをもつよう構成された（すなわち記憶している）コンピュータ可読記憶媒体として実装されてもよい。ここで、そのように構成された該記憶媒体は、コンピュータ・システムに、本稿に記載される機能を実行するよう特定の、所定の仕方で動作させる。
【０１２５】
個々の段がIIRフィルタであって（本稿に記載した個別的な実施形態におけるような）双二次フィルタではない多段フィルタが、その個々の段の処理が並列化されるよう（たとえば、その段すべてが、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう）、本発明に従って実装されてもよいことが考えられている。たとえば、2012年1月26日に公開された米国特許出願公開第2012/0019723号において記述されている型の多段フィルタが、その個々の段の処理が並列化されるよう（たとえば、その段すべてが、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう）本発明のある実施形態に基づいて修正されてもよい。
【０１２６】
本発明の方法のいくつかの実施形態では、本稿に記載される段階の一部または全部が同時に、あるいは本稿に記載される例で指定されるのとは異なる順序で実行される。段階は本発明の方法のいくつかの実施形態では特定の順序で実行されるが、いくつかの段階は、他の実施形態では、同時にまたは異なる順序で実行されてもよい。
【０１２７】
本発明のいくつかの実施形態について記述してきた。にもかかわらず、本発明の精神および範囲から外れることなくさまざまな修正がなされてもよい。上記の教示に照らして、本発明の数多くの修正および変形が可能である。付属の請求項の範囲内で、本発明は、本稿で具体的に記述したのとは異なる仕方で実施されることがありうることは理解しておくものとする。
いくつかの付番実施例を記載しておく。
〔付番実施例１〕
多段フィルタであって：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
多段フィルタ。
〔付番実施例２〕
当該多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例１記載の多段フィルタ。
〔付番実施例３〕
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例１記載の多段フィルタ。
〔付番実施例４〕
当該多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例１記載の多段フィルタ。
〔付番実施例５〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例１記載の多段フィルタ。
〔付番実施例６〕
少なくとも二つの双二次フィルタ段を有する多段フィルタであって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、多段フィルタ。
〔付番実施例７〕
付番実施例６記載の多段フィルタであって、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、多段フィルタ。
〔付番実施例８〕
当該多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例６記載の多段フィルタ。
〔付番実施例９〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例８記載の多段フィルタ。
〔付番実施例１０〕
N個の入力サンプルのブロックに対して多段フィルタリングを実行する方法であって：
（ａ）N個の入力サンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記ブロック中の各入力サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例１１〕
入力サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例１０記載の方法。
〔付番実施例１２〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記入力サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記入力サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例１０記載の方法。
〔付番実施例１３〕
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
エンコーダ。
〔付番実施例１４〕
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例１３記載のエンコーダ。
〔付番実施例１５〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例１３記載のエンコーダ。
〔付番実施例１６〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例１３記載のエンコーダ。
〔付番実施例１７〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例１３記載のエンコーダ。
〔付番実施例１８〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例１３記載のエンコーダ。
〔付番実施例１９〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例１３記載のエンコーダ。
〔付番実施例２０〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例１３記載のエンコーダ。
〔付番実施例２１〕
入力オーディオ・データに応答して、エンコードされたオーディオ・データを生成するよう構成されたオーディオ・エンコーダであって、当該エンコーダは、前記オーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは、少なくとも二つの双二次フィルタ段を含み、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、エンコーダ。
〔付番実施例２２〕
付番実施例２１記載のエンコーダであって、前記多段フィルタが、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、エンコーダ。
〔付番実施例２３〕
前記多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例２１記載のエンコーダ。
〔付番実施例２４〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例２３記載のエンコーダ。
〔付番実施例２５〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例２１記載のエンコーダ。
〔付番実施例２６〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例２１記載のエンコーダ。
〔付番実施例２７〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例２１記載のエンコーダ。
〔付番実施例２８〕
オーディオ・データをエンコードしてエンコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは：
（ａ）N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例２９〕
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例２８記載の方法。
〔付番実施例３０〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例２８記載の方法。
〔付番実施例３１〕
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは：
バッファ・メモリと；
第一の双二次フィルタ段およびその後の双二次フィルタ段を含む少なくとも二つの双二次フィルタ段と；
前記双二次フィルタ段に結合されており、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段の両方に単一の命令ストリームを呈するよう構成されているコントローラとを含んでおり、前記第一の双二次フィルタ段および前記その後の双二次フィルタ段は前記命令ストリームに応答して独立してかつ並列に動作し、
前記第一の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答してN個の入力サンプルのブロックに対して双二次フィルタリングを実行して中間的な値を生成し、該中間的な値を前記メモリに呈するよう構成されており、前記中間的な値は、前記入力サンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含み、
前記その後の双二次フィルタ段は前記メモリに結合されており、前記命令ストリームに応答して前記メモリから取り出されたバッファリングされた値に対して双二次フィルタリングを実行して出力値のブロックを生成するよう構成されており、前記出力値は、N個の入力サンプルの前記ブロック中の各入力サンプルに対応する出力値を含み、前記バッファリングされた値は、N個の入力サンプルの前記ブロックに応答して前記第一の双二次フィルタ段において生成された前記中間的な値の少なくともいくつかを含む、
デコーダ。
〔付番実施例３２〕
前記多段フィルタは、N個の入力サンプルの前記ブロックの多段フィルタリングを、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一の処理ループにおいて実行するよう構成されている、付番実施例３１記載のデコーダ。
〔付番実施例３３〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のもののフィルタリングされたバージョンおよび前記入力サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例３１記載のデコーダ。
〔付番実施例３４〕
前記多段フィルタがM個の双二次フィルタ段を有し、前記その後の双二次フィルタ段は、前記メモリから取り出される前記バッファリングされた値の部分集合に応答して、前記入力サンプルの第「j」のものに対応する出力値を生成するよう構成されており、jはM−1からN−1までの範囲のインデックスであり、前記部分集合は、前記第一の双二次フィルタ段によって生成された、前記入力サンプルの第「j」のもののフィルタリングされたバージョン、前記入力サンプルの第「j−1」のものに応答して前記その後の双二次フィルタによって生成された値および前記入力サンプルの第「j−2」のものに応答して前記その後の双二次フィルタによって生成された値を含む、付番実施例３１記載のデコーダ。
〔付番実施例３５〕
前記その後の双二次フィルタ段は、前記入力サンプルのそれぞれに対応する出力値を、前記メモリから取り出される前記バッファリングされた値の異なる部分集合に応答して生成するよう構成されており、それぞれの前記部分集合は、前記第一の双二次フィルタ段において生成され、異なるレイテンシー時間にわたって前記メモリに存在したあと前記メモリから取り出された前記中間的な値のうちの少なくとも三つを含む、付番実施例３１記載のデコーダ。
〔付番実施例３６〕
当該エンコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例３１記載のデコーダ。
〔付番実施例３７〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例３１記載のデコーダ。
〔付番実施例３８〕
当該エンコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例３１記載のデコーダ。
〔付番実施例３９〕
エンコードされたオーディオ・データに応答して、デコードされたオーディオ・データを生成するよう構成されたオーディオ・デコーダであって、当該デコーダは、前記エンコードされたオーディオ・データをフィルタリングするよう結合され、構成された少なくとも一つの多段フィルタを含み、前記多段フィルタは、少なくとも二つの双二次フィルタ段を含み、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は前記段の間のレイテンシーをもって組み合わされている、デコーダ。
〔付番実施例４０〕
付番実施例３９記載のデコーダであって、前記多段フィルタが、前記共通の命令ストリームをすべての段に呈するよう結合されたコントローラと、すべての段に結合されたデータ・メモリとをさらに含み、すべての段は、前記共通の命令ストリームに応答して、入力データ値のブロックをフィルタリングするよう並列に動作可能であるが、各段は異なるデータ値に対して作用し、前記段の少なくとも一つがバッファリングされた値を含むデータ値に対して作用し、前記バッファリングされた値は、前記入力データ値の部分集合に応答して前記段の別のものによって生成され、前記段の前記一つにおける処理のために取り出される前に前記メモリに異なるレイテンシーをもって記憶される、エンコーダ。
〔付番実施例４１〕
前記多段フィルタが単一命令多重データ・アーキテクチャを有する、付番実施例３９記載のデコーダ。
〔付番実施例４２〕
当該多段フィルタはM個の双二次フィルタ段を含み、Mは1より大きい数であり、前記段の一つは、種々の時点において前記段のうち前のものによって生成され、種々の時点にバッファ・メモリに記憶され、異なるレイテンシー時間をもって前記バッファ・メモリに存在したのちに前記バッファ・メモリから前記段の前記一つによって読み出されたデータ値に対して作用できる、付番実施例４１記載のデコーダ。
〔付番実施例４３〕
当該デコーダが、前記多段フィルタを実装するようプログラムされた少なくとも一つの単一命令多重データ・ユニットを含むプロセッサである、付番実施例３９記載のデコーダ。
〔付番実施例４４〕
当該デコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術論理ユニットを含むプロセッサである、付番実施例３９記載のデコーダ。
〔付番実施例４５〕
当該デコーダが、前記双二次フィルタ段を実装するようプログラムされた複数の算術操作ユニットを含むプロセッサである、付番実施例３９記載のデコーダ。
〔付番実施例４６〕
エンコードされたオーディオ・データをデコードしてデコードされたオーディオ・データを生成する方法であって、当該方法は、N個のオーディオ・サンプルのブロックに対して多段フィルタリングを実行することによることを含み、前記多段フィルタリングは：
（ａ）N個のサンプルの前記ブロックに対して第一の双二次フィルタリング動作を実行して中間的な値を生成し、該中間的な値をバッファ・メモリに呈する段階であって、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、段階と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対して第二の双二次フィルタリング動作を実行して出力値のブロックを生成する段階であって、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、段階とを含み、
段階（ａ）および（ｂ）は単一の命令ストリームに応答して実行され、段階（ａ）および（ｂ）は該単一の命令ストリームに応答して独立して並列に実行される、
方法。
〔付番実施例４７〕
サンプルの前記ブロックの前記多段フィルタリングは、サンプル・インデックスについての逐次反復があるが双二次フィルタ段インデックスについての逐次反復はない単一のループにおいて実行される、付番実施例４６記載の方法。
〔付番実施例４８〕
前記多段フィルタリングがM個の段を有する多段フィルタにおいて実行され、jはM−1からN−1までの範囲のインデックスとして、前記サンプルの第「j」のものに対応する出力値を生成するよう段階（ｂ）において取り出されるバッファリングされた値は、段階（ａ）において生成された前記サンプルの第「j」のもののフィルタリングされたバージョン、段階（ａ）において生成された前記サンプルの第「j−1」のもののフィルタリングされたバージョンおよび段階（ａ）において生成された前記サンプルの第「j−2」のもののフィルタリングされたバージョンを含む、付番実施例４６記載の方法。
〔付番実施例４９〕
エンコードされたビットストリームを処理する方法であって：
前記エンコードされたビットストリームを受領し、該エンコードされたビットストリームから、少なくとも二つの双二次フィルタ段を有する多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階であって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は、前記段の間のレイテンシーをもって組み合わされている、段階と；
前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを含む、
方法。
〔付番実施例５０〕
エンコードされたビットストリームを処理する方法であって：
前記エンコードされたビットストリームを受領し、該エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と；
前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを含み、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に：
（ａ）N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
方法。
〔付番実施例５１〕
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、付番実施例４９または５０記載の方法。
〔付番実施例５２〕
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、付番実施例４９または５０記載の方法。
〔付番実施例５３〕
エンコードされたビットストリームを処理する装置であって：
前記エンコードされたビットストリームを受領するよう結合される入力と；
前記エンコードされたビットストリームから、少なくとも二つの双二次フィルタ段を含む多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階であって、すべての段が、それらの段におけるデータの完全に並列化された処理を実行するよう、単一の共通の命令ストリームに応答して独立して動作可能であるよう、前記段は、前記段の間のレイテンシーをもって組み合わされている、段階と、前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを実行するよう構成されている、前記入力に結合されたデコーダとを有する、
装置。
〔付番実施例５４〕
エンコードされたビットストリームを処理する装置であって：
前記エンコードされたビットストリームを受領するよう結合される入力と；
前記エンコードされたビットストリームから、多段フィルタによって処理されたオーディオ情報の一つまたは複数のチャネルを表わすエンコードされたデータを抽出する段階と、前記エンコードされたデータをデコードして、前記多段フィルタによって処理されたオーディオ情報の前記一つまたは複数のチャネルのデコードされた表現を提供する段階とを実行するよう構成された、前記入力に結合されたデコーダとを有しており、
前記多段フィルタは、単一の命令ストリームに応答して、独立かつ並列に：
（ａ）N個のサンプルのブロックに対する第一の双二次フィルタリング動作であって、バッファ・メモリに呈する中間的な値を生成し、前記中間的な値は、前記N個のサンプルの少なくとも部分集合の各サンプルのフィルタリングされたバージョンを含む、動作と；
（ｂ）前記メモリから取り出されたバッファリングされた値に対する第二の双二次フィルタリング動作であって、出力値のブロックを生成し、前記出力値は、N個のサンプルの前記ブロック中の各サンプルに対応する出力値を含み、前記ブロック中の各サンプルに対応する前記出力値を生成するために、前記バッファリングされた値の異なる部分集合が取り出されてフィルタリングされ、前記バッファリングされた値の各前記部分集合は、異なるレイテンシー時間にわたって前記メモリに存在したあとで前記メモリから取り出される、段階（ａ）の実行中に生成された前記中間的な値のうちの少なくとも二つを含む、動作とを実行するよう動作する、
装置。
〔付番実施例５５〕
前記多段フィルタが、帯域幅制限低域通過フィルタリングを実行するための三段の双二次フィルタである、付番実施例５３または５４記載の装置。
〔付番実施例５６〕
前記一つまたは複数のチャネルのうちの一つがLFEチャネルであり、前記多段フィルタが、前記LFEチャネルチャネルに対して低域通過フィルタリングを実行するための四段の双二次フィルタである、付番実施例５３または５４記載の装置。
【図１】
0005866062.tif 000003
【図２】
0005866062.tif 000004
【図３】
0005866062.tif 000005
【図４】
0005866062.tif 000006
【図５】
0005866062.tif 000007
【図６】
0005866062.tif 000008
【図７】
0005866062.tif 000009
【図８】
0005866062.tif 000010
【図９】
0005866062.tif 000011
【図１０】
0005866062.tif 000012