1

私は最近、リアルタイムオーディオ処理の詳細を学ぶことにかなりの時間を費やしてきました。私が見つけたライブラリ/ツールのほとんどは、c/c++ コードまたはコンパイル済みの c/c++ コードの下にあるスクリプト/グラフィカル言語の形式になっています。フード。

コールバック ベースの API を使用すると、アプリ内の GUI やその他のプロセスとは別にオーディオ プロセスを実行するのは非常に簡単です。しかし、私が見つけることができなかったのは、アプリケーションのオーディオ処理部分に複数のプロセス/スレッドを使用する方法です。

リンク、本のタイトルなど、関連するものを教えてください。

4

1 に答える 1

2

オーディオ用のマルチスレッド DSP を実行したいようです。高性能オーディオには低遅延とリアルタイムのスケジューリングが必要なため、これは実際にはあまり行われません。マルチスレッド DSP を実行するには、スレッド間でデータを渡す必要がありますが、これには通常ミューテックスが含まれます。ミューテックスを使用している場合、リアルタイム プログラミングを機能させるのは非常に困難です。

もちろんミューテックスに代わるものはありますし、ノンブロッキングのデータ構造もたくさんありますが、結局のところ、オーディオ DSP アルゴリズムを並列化しても、他の形式の並列化よりもパフォーマンスが向上しません。

代わりに、オーディオ データをコールバックに出し入れすることに関心がある場合は、ノンブロッキング データ構造について少し学ぶ必要があります。PortAudio のソース コードを参照してください。特に、PortAudio の RingBuffer は移植性のあるノンブロッキングのデータ受け渡し構造であり、多くのアプリケーションでブロックせずにスレッド間でデータを取得するのに役立ちます。

于 2012-07-21T23:23:17.453 に答える