【发布时间】:2015-03-30 20:09:38
【问题描述】:
这个问题不是关于插件的,而是关于独立应用程序设计的,并且与我之前问过的几个问题有关。
我必须编写一个多线程音频合成函数,其处理的数据量远远超过 CoreAudio 渲染线程可以容纳的数据量:几千独立的幅度和相位实时插值采样精确的正弦波振荡器。这需要比任何单个处理器内核都能够承受的更多 CPU 功率,并且所有优化都可用。
我正在尽力学习它,但它似乎是一堵墙,而不是一条曲线。消费者线程可能是一个简单的CA实时优先级渲染回调,接受AudioBufferList iodata等…… …但是生产者线程应该是什么?如果选择另一个 AudioComponent,它并没有比将它全部放在输出线程上更好 - 它只会变得更加复杂并引入额外的延迟。
如果将 n 个并行 AudioComponents 放入一个 graph 中,该图提供一个环形缓冲区,该缓冲区提供消费者线程,如何保证它不会以相同的方式结束线程,保持同步和样本准确?
如果编写n传统POSIX线程加入输出,如何实现CoreAudio拉模型与这样的推模型实时共存?
有没有这样免费的示例代码?编写这样的代码是否有参考、教科书或教程?我没有找到任何公开的信息。这让我有点奇怪,以前没有人问过这样的问题吗?
提前致谢!
【问题讨论】:
标签: c multithreading macos core-audio