我最近花了很长时间学习实时音频处理的细节,我发现的大多数库/工具都是 c/c++ 代码或脚本/图形语言的形式,编译后的 c/c++ 代码如下引擎盖。
使用基于回调的 API,除了 GUI 或应用程序中的其他进程之外,运行音频进程非常简单。但是,我无法找到的是如何将多个进程/线程用于应用程序的音频处理部分。
您能否提供链接、书名,以及任何相关的内容?
我最近花了很长时间学习实时音频处理的细节,我发现的大多数库/工具都是 c/c++ 代码或脚本/图形语言的形式,编译后的 c/c++ 代码如下引擎盖。
使用基于回调的 API,除了 GUI 或应用程序中的其他进程之外,运行音频进程非常简单。但是,我无法找到的是如何将多个进程/线程用于应用程序的音频处理部分。
您能否提供链接、书名,以及任何相关的内容?
听起来你想为音频做多线程 DSP。这并没有真正做太多,因为高性能音频需要低延迟和实时调度。要进行多线程 DSP,您需要在线程之间传递数据,这通常涉及互斥锁。使用互斥锁时,很难让实时编程工作。
当然,还有互斥体的替代品,并且存在大量非阻塞数据结构,但归根结底,与其他形式的并行性相比,并行化音频 DSP 算法带来的性能提升更少。
相反,如果您对从回调中获取音频数据感兴趣,则需要了解一些关于非阻塞数据结构的知识。您可能想查看 PortAudio 的源代码。特别是 PortAudio 中的 RingBuffer 是一种可移植的、非阻塞的数据传递结构,它对于许多应用程序在线程之间获取数据而不会阻塞非常有用。