Objective c 在OpenAL中确定何时在未轮询源的情况下播放缓冲区

Objective c 在OpenAL中确定何时在未轮询源的情况下播放缓冲区,objective-c,c,openal,Objective C,C,Openal,这可能吗?如果我每次处理缓冲区时都能调用一个函数,那就太酷了。除了轮询源之外,还有什么其他想法值得欢迎:D您知道每个缓冲区中有多少个样本,并且知道源的采样率。这应该可以让您很好地了解源何时完成缓冲区的处理 如果你觉得自己非常勇敢,你可以将其破解到OpenAL软件源代码中。根据代码的外观,您可以将更改放入文件末尾的mixer.c,在MixSource()函数末尾附近的某个地方 当然,请记住OpenAL soft是lGPL;因此,您需要发布/提供对库本身所做的任何更改 如果您无法使用预先包含的库,那

这可能吗?如果我每次处理缓冲区时都能调用一个函数,那就太酷了。除了轮询源之外,还有什么其他想法值得欢迎:D

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

如果你觉得自己非常勇敢,你可以将其破解到OpenAL软件源代码中。根据代码的外观,您可以将更改放入文件末尾的
mixer.c
,在
MixSource()
函数末尾附近的某个地方

当然,请记住OpenAL soft是lGPL;因此,您需要发布/提供对库本身所做的任何更改


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

你是说轮询源代码吗?+1确实是这样,很抱歉,我编辑了这个问题这里有一个类似的问题:这个问题似乎是否定的:是的,我认为这是不可能的,但我想知道,与轮询相比,它在资源方面是否明智?我想我理解你所说的JCooper,然而,我不知道我是否能触摸到OpenAL(iOS)的这个实现。如果可以的话,知道采样率和每个缓冲区上的采样数是否有助于我,只要实际处理依赖于处理器?(可能需要更多或更少的时间)。我怀疑你能否更改OpenAL的iOS版本,但我认为你可以让它使用OpenAL软件作为插件或其他东西。我不知道你其余的评论是什么意思。处理声音缓冲区所需的时间应该或多或少与处理器无关。我选择您的答案是因为即使对于iOS来说不起作用(我最终轮询了源代码),它可能会帮助其他在不同平台上工作的人!谢谢