objective-c - 确定缓冲区何时已播放,无需轮询 OpenAL 中的源

标签 objective-c c openal

这可能吗?如果我设法在每次处理缓冲区时调用一个函数,那就太酷了。除了轮询来源之外的任何其他想法都受到欢迎:D

最佳答案

您知道每个缓冲区中有多少样本,并且知道源播放的采样率。这应该可以让您很好地了解源何时完成缓冲区的处理。

如果您感觉非常勇敢,您可以将其侵入 OpenAL-soft 源代码。从代码的外观来看,您可以将更改放入文件最末尾的 mixer.c 中,即靠近 MixSource() 函数末尾的位置。

当然要记住,OpenAL-soft 是 lGPL;因此您需要发布/使您对库本身所做的任何更改可用。

如果您无法使用预包含的库,那么您没有太多选择。 OpenAL 拒绝回调函数的想法。

关于objective-c - 确定缓冲区何时已播放,无需轮询 OpenAL 中的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544344/

相关文章:

objective-c - 在自定义键盘扩展中添加贴纸

c - Sublime Text 2 中的交互式输入

ios - 哪个 API 可以从 ios 和 osx 中的缓冲区播放音频?

ios - observeValueForKeyPath : message sent to deallocated instance

objective-c - iOS 的 Objective C 中的属性反射

ios - iOS 8.1仅间歇性显示UITextView

c - ELF 如何填充它的 `short`?

c - 从客户端读取数据到服务器时遇到问题

c++ - OpenAl mp3 循环不工作

c++ - 使用 OpenAL(Stream) 播放声音