2012-07-20 77 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