2012-07-20 60 views
1

我一直花費相當多的時間來學習實時音頻處理的細節,並且我發現的大多數庫/工具都是以c/C++代碼或腳本的形式/具有編譯後的c/C++代碼的圖形化語言。並行/多處理器音頻處理資源

使用基於回調的API,運行除GUI或GUI中的其他進程以外的音頻進程非常簡單。但是,我一直無法找到的是如何爲應用程序的音頻處理部分使用多個進程/線程。

您能否提供鏈接,圖書標題以及任何可能相關的內容?

回答

2

這聽起來像你想爲音頻做多線程DSP。這並不是真的做得太多,因爲高性能音頻需要低延遲和實時調度。要執行多線程DSP,您需要在線程之間傳遞數據,這通常涉及互斥體。使用互斥鎖時,實時編程非常困難。

當然,互斥體還有其他選擇,並且存在大量非阻塞數據結構,但是在一天結束時,並行化您的音頻DSP算法不會比其他形式的並行性獲得更好的性能增益。

如果您有興趣從回調中獲取音頻數據,則需要了解有關非阻塞數據結構的信息。你可能想看看PortAudio的源代碼。特別是PortAudio中的RingBuffer是一個可移植的非阻塞數據傳遞結構,對於許多應用程序在線程之間獲取數據而沒有阻塞是有用的。

+0

感謝您的回答比約恩。我知道無鎖結構以及如何從音頻回調中獲取數據。我在說的是在音頻回調中使用並行性。假設你正在編寫一個插件主機,一個模塊/補丁系統(如PD),或者你有一個龐大複雜的算法,你想作爲一個插件運行。您需要在回調中分離處理,收集結果並以某種方式聚合它們以產生音頻輸出。我的回答是:做這種並行音頻處理的技術有哪些? – 2012-07-22 15:53:13

+0

如果有的話,我不會多想,因爲它非常依賴於應用程序。 – 2012-07-22 20:31:39

+0

我的意思是說:「我的問題是......」 – 2012-07-27 13:28:04